[meta-ti] [PATCH] linux: remove outdated kernel recipes
Denys Dmytriyenko
denis at denix.org
Wed May 6 10:26:05 PDT 2015
From: Denys Dmytriyenko <denys at ti.com>
Signed-off-by: Denys Dmytriyenko <denys at ti.com>
---
...M-OMAP-Cleanup-Beagleboard-DVI-reset-gpio.patch | 184 -
...ART-Fix-incorrect-population-of-default-u.patch | 169 -
.../linux/linux-3.3.7/beagleboard/defconfig | 3780 -
...hwmod-Convert-SHA0-crypto-device-data-to-.patch | 168 -
...-ARM-OMAP2-AM335x-Update-SPI-flash-layout.patch | 40 -
...lex-support-for-ES-2.x-and-suspend-resume.patch | 1928 -
...odified-WLAN-enable-and-irq-to-match-boar.patch | 62 -
...x-Add-crypto-driver-settings-to-defconfig.patch | 132 -
...-Add-minimal-support-for-Beaglebone-Black.patch | 110 -
...m335x-Add-pm_runtime-API-to-crypto-driver.patch | 405 -
...nable-Turbo-and-Nitro-modes-for-Beaglebon.patch | 41 -
...x-enable-pullup-on-the-WLAN-enable-pin-fo.patch | 57 -
...-using-edge-triggered-interrupts-for-WLAN.patch | 35 -
...x-Add-memory-addresses-for-crypto-modules.patch | 41 -
.../0001-am33xx-Add-SmartReflex-support.patch | 2014 -
.../0001-mach-omap2-pm33xx-Disable-VT-switch.patch | 71 -
...date-PIO-mode-help-information-in-Kconfig.patch | 45 -
...1-omap-serial-add-delay-before-suspending.patch | 42 -
...emove-check-for-GP-only-device-type-in-RN.patch | 29 -
.../0002-AM335x-OCF-Driver-for-Linux-3.patch | 7228 --
.../0002-Smartreflex-limited-to-ES-1.0.patch | 35 -
...-suspend-resume-routines-to-crypto-driver.patch | 147 -
...Add-crypto-device-and-resource-structures.patch | 111 -
...2-am33xx-Enable-CONFIG_AM33XX_SMARTREFLEX.patch | 26 -
...map4-sham-Use-finer-grained-PM-management.patch | 98 -
...rypto-device-and-resource-structure-for-T.patch | 60 -
...-omap4-sham-Add-suspend-resume-PM-support.patch | 56 -
...d-crypto-drivers-to-Kconfig-and-Makefiles.patch | 124 -
...ap4-sham-Don-t-use-hardcoded-base-address.patch | 45 -
...hwmod-Convert-AES0-crypto-device-data-to-.patch | 165 -
...eate-header-file-for-OMAP4-crypto-modules.patch | 213 -
...m33x-Create-driver-for-TRNG-crypto-module.patch | 324 -
...map4-aes-User-finer-grained-PM-management.patch | 127 -
...am33x-Create-driver-for-AES-crypto-module.patch | 971 -
...o-omap4-aes-Add-suspend-resume-PM-support.patch | 56 -
...x-Create-driver-for-SHA-MD5-crypto-module.patch | 1444 -
...map4-aes-Don-t-use-hardcoded-base-address.patch | 45 -
...xx-hwmod-Convert-RNG-device-data-to-hwmod.patch | 176 -
...g-omap4-rng-Convert-to-use-pm_runtime-API.patch | 91 -
.../linux/linux-am335x-psp-3.2/defconfig | 1 -
recipes-kernel/linux/linux-am335x-psp_3.2.bb | 102 -
...-add-buddy-param-for-expansionboard-names.patch | 59 -
...xpansion-add-mmc-regulator-and-ds1307-rtc.patch | 57 -
.../beagle/0003-expansion-add-zippy.patch | 82 -
.../beagle/0004-expansion-add-zippy2.patch | 82 -
.../beagle/0005-expansion-add-trainer.patch | 55 -
.../beagle/0006-expansion-add-ulcd.patch | 262 -
...d-reinstate-usage-of-hi-speed-PLL-divider.patch | 29 -
...the-USB-regulator-on-Beagle-xM-explicitly.patch | 55 -
...b-add-Toshiba-LTA070B220F-800x480-support.patch | 30 -
.../0010-beagleboard-fix-uLCD7-support.patch | 66 -
...fault-to-fifo-mode-5-for-old-musb-beagles.patch | 29 -
...ght-Add-TLC59108-backlight-control-driver.patch | 215 -
...013-tlc59108-adjust-for-beagleboard-uLCD7.patch | 124 -
.../beagle/0014-expansion-add-wifi.patch | 142 -
...add-MODULE_ALIAS-to-mcbsp-and-pcm-drivers.patch | 37 -
...onvert-per-board-modules-to-platform-driv.patch | 1119 -
.../linux/linux-mainline-3.2/beagleboard/defconfig | 4274 --
.../beagleboard/logo_linux_clut224.ppm | 73147 -------------------
...-devkit8000-for-lcd-use-samsung_lte_panel.patch | 28 -
...pkg-set-host-machine-after-dpkg-gencontro.patch | 114 -
...eartbeat-stop-on-shutdown-reboot-or-panic.patch | 67 -
...vert-drivers-net-to-use-module_usb_driver.patch | 80 -
...t-fix-assignment-of-0-1-to-bool-variables.patch | 55 -
.../libertas/0003-switch-debugfs-to-umode_t.patch | 26 -
...-Remove-unnecessary-k.alloc-v.alloc-OOM-m.patch | 54 -
...ibertas-remove-dump_survey-implementation.patch | 80 -
...bertas-remove-redundant-NULL-tests-before.patch | 95 -
...ix-signedness-bug-in-lbs_auth_to_authtype.patch | 48 -
...-wireless-libertas-if_usb.c-add-missing-d.patch | 35 -
...libertas-Firmware-loading-simplifications.patch | 618 -
.../0011-libertas-harden-up-exit-paths.patch | 46 -
...d-asynchronous-firmware-loading-capabilit.patch | 269 -
...IO-convert-to-asynchronous-firmware-loadi.patch | 320 -
...B-convert-to-asynchronous-firmware-loadin.patch | 201 -
...-convert-to-asynchronous-firmware-loading.patch | 154 -
.../0016-libertas-add-missing-include.patch | 30 -
...ve-debug-msgs-due-to-missing-in_interrupt.patch | 36 -
.../0001-ksz8851-eeprom-93cx6-add-drive_data.patch | 62 -
...z8851-eeprom-93cx6-add-eeprom_93cx6_write.patch | 129 -
.../micrel_zippy2/0003-ksz8851-read_mac_addr.patch | 93 -
.../0004-ksz8851-93cx6-eeprom-access.patch | 130 -
...51.h-it-helps-to-include-the-include-file.patch | 43 -
.../0006-ksz8851-move-to-header.patch | 326 -
.../0007-ksz8851-move-more-to-header.patch | 143 -
.../0008-ksz8851-share-ks8851_tx_hdr-union.patch | 95 -
.../0009-ksz8851-add-is_level_irq.patch | 101 -
...n-off-hardware-interrupt-druing-receive-p.patch | 42 -
...851-make-sure-is-awake-before-writing-mac.patch | 63 -
.../0012-ksz8851-add-mutex-lock-unlock-to-ks.patch | 42 -
.../0013-ksz8851-add-ks8851_tx_check.patch | 121 -
.../0014-ksz8851-move-ks8851_set_powermode.patch | 71 -
...P-cleanup-for-multi-SoC-support-move-into.patch | 422 -
...02-cpufreq-OMAP-Add-SMP-support-for-OMAP4.patch | 191 -
...MAP-Enable-all-CPUs-in-shared-policy-mask.patch | 42 -
...-OMAP-notify-even-with-bad-boot-frequency.patch | 48 -
...ufreq-OMAP-move-clk-name-decision-to-init.patch | 64 -
...req-OMAP-deny-initialization-if-no-mpudev.patch | 64 -
...0007-cpufreq-OMAP-dont-support-freq_table.patch | 125 -
...08-cpufreq-OMAP-only-supports-OPP-library.patch | 43 -
...9-cpufreq-OMAP-put-clk-if-cpu_init-failed.patch | 61 -
.../0010-cpufreq-OMAP-fix-freq_table-leak.patch | 90 -
...P-fixup-for-omap_device-changes-include-l.patch | 47 -
...1-omap3-Increase-limit-on-bootarg-mpurate.patch | 33 -
...3517-3505-fix-crash-on-boot-due-to-incorr.patch | 110 -
...wmod-Don-t-wait-for-the-idle-status-if-mo.patch | 200 -
...MAP4-clock-Add-CPU-local-timer-clock-node.patch | 56 -
...wmod-data-disable-multiblock-reads-on-MMC.patch | 161 -
...6-OMAP-HWMOD-add-es3plus-to-am36xx-am35xx.patch | 34 -
.../panda/0001-panda-fix-wl12xx-regulator.patch | 27 -
.../panda/0002-panda-enable-bluetooth.patch | 88 -
.../0003-ti-st-st-kim-fixing-firmware-path.patch | 35 -
...MAP-DSS2-add-bootarg-for-selecting-svideo.patch | 78 -
.../sakoman/0002-video-add-timings-for-hd720.patch | 28 -
...mc-Adjust-dto-to-eliminate-timeout-errors.patch | 30 -
...DSS2-remove-update_mode-from-omapdss-v3.2.patch | 321 -
.../0001-omap3-touchbook-remove-mmc-gpio_wp.patch | 39 -
...0002-omap3-touchbook-drop-u-boot-readonly.patch | 25 -
recipes-kernel/linux/linux-mainline_3.2.bb | 111 -
.../0001-MAINTAINERS-stable-Update-address.patch | 31 -
.../0002-Documentation-Update-stable-address.patch | 56 -
...x-an-oops-on-reading-fw_priv-fw-in-sysfs-.patch | 81 -
.../0004-rt2800usb-Move-ID-out-of-unknown.patch | 43 -
...ix-setting-of-the-pseudo-palette-for-8bpp.patch | 92 -
...ix-bug-in-calculating-requested-vram-size.patch | 32 -
...07-libertas-clean-up-scan-thread-handling.patch | 86 -
.../0008-bcma-support-for-suspend-and-resume.patch | 120 -
...x-Validate-FEM-index-from-ini-file-and-FW.patch | 75 -
...eck-buffer-bound-when-processing-nvs-data.patch | 68 -
.../3.2.1/0011-wl12xx-Restore-testmode-ABI.patch | 32 -
...werpc-time-Handle-wrapping-of-decrementer.patch | 93 -
...-unpaired-probe_hcall_entry-and-probe_hca.patch | 85 -
...a-possible-data-corruption-when-receiving.patch | 78 -
.../0015-IB-uverbs-Protect-QP-multicast-list.patch | 96 -
.../3.2.1/0016-iwlagn-fix-TID-use-bug.patch | 50 -
.../0017-iwlagn-fix-remove-use-of-PAGE_SIZE.patch | 180 -
...Fix-parsing-of-__print_flags-in-TP_printk.patch | 37 -
...0019-ore-Fix-crash-in-case-of-an-IO-error.patch | 41 -
...0-ore-fix-BUG_ON-too-few-sgs-when-reading.patch | 56 -
...021-ore-Must-support-none-PAGE-aligned-IO.patch | 163 -
...breakage-when-MISC_FILESYSTEMS-is-not-set.patch | 89 -
...3-reiserfs-Fix-quota-mount-option-parsing.patch | 34 -
...rce-inode-evictions-before-umount-to-avoi.patch | 70 -
...warn-from-writepage-when-readonly-inode-i.patch | 73 -
...-hv-Don-t-OOPS-when-you-cannot-init-vmbus.patch | 70 -
...s-hv-Fix-a-bug-in-vmbus_driver_unregister.patch | 40 -
.../0028-USB-update-documentation-for-usbmon.patch | 54 -
...oops-related-to-user-namespace-conversion.patch | 125 -
..._serial-fix-spinlock-lockup-in-RS485-code.patch | 47 -
...fix-to-allow-mounting-a-hierarchy-by-name.patch | 50 -
...dlock-when-converting-file-from-in-ICB-on.patch | 130 -
...sb-class-cdc-acm.c-clear-dangling-pointer.patch | 45 -
...ight-fix-kernel-bug-when-loading-firmware.patch | 47 -
...rage-doesn-t-support-dynamic-id-currently.patch | 121 -
.../0036-USB-pxa168-Fix-compilation-error.patch | 42 -
.../0037-USB-add-quirk-for-another-camera.patch | 37 -
.../3.2.1/0038-USB-omninet-fix-write_room.patch | 34 -
...usb-option-add-ZD-Incorporated-HSPA-modem.patch | 53 -
...-ID-for-Multiplex-RC-serial-adapter-to-cp.patch | 36 -
...1-usb-fix-number-of-mapped-SG-DMA-entries.patch | 155 -
...0042-xhci-Properly-handle-COMP_2ND_BW_ERR.patch | 62 -
.../0043-usb-ch9-fix-up-MaxStreams-helper.patch | 81 -
...zero-delay-when-receiving-odd-mixture-of-.patch | 37 -
.../0045-asix-fix-infinite-loop-in-rx_fixup.patch | 38 -
...ng-fix-error-handling-if-slave-is-busy-v2.patch | 68 -
...-Fix-acm_tty_hangup-vs.-acm_tty_close-rac.patch | 54 -
...acl-count-validation-in-xfs_acl_from_disk.patch | 34 -
.../3.2.1/0049-Linux-3.2.1.patch | 24 -
...k-around-unhappy-compat-problem-on-x86-64.patch | 142 -
...-Fix-autofs-compile-without-CONFIG_COMPAT.patch | 42 -
.../0003-compat-fix-compile-breakage-on-s390.patch | 216 -
...event-a-machine-hang-by-checking-crtc-act.patch | 42 -
...05-ARM-LPC32xx-serial.c-HW-bug-workaround.patch | 83 -
...006-ARM-LPC32xx-serial.c-Fixed-loop-limit.patch | 31 -
...007-ARM-LPC32xx-irq.c-Clear-latched-event.patch | 42 -
...ARM-LPC32xx-Fix-interrupt-controller-init.patch | 44 -
.../0009-ARM-LPC32xx-Fix-irq-on-GPI_28.patch | 50 -
...wdt-clean-up-set_memory_x-call-for-32-bit.patch | 54 -
...y-flag-completion-when-queue-is-completel.patch | 83 -
...ix-the-ldo-configure-according-to-88pm860.patch | 44 -
...Enable-the-compat-keyctl-wrapper-on-s390x.patch | 50 -
...m-Fix-Host-Only-Guest-Only-counting-with-.patch | 182 -
...altek-Fix-resume-of-multiple-input-source.patch | 35 -
.../0016-ALSA-hda-Add-a-fake-mute-feature.patch | 119 -
...ways-set-HP-pin-in-unsol-handler-for-STAC.patch | 34 -
...ent-null-pointer-reference-on-readonly-re.patch | 65 -
...rn-EFAULT-not-EIO-on-host-side-memory-fau.patch | 48 -
.../3.2.10/0020-mfd-Fix-ACPI-conflict-check.patch | 37 -
...r-jack-detection-when-deciding-if-wm8994-.patch | 46 -
...r-action-thread_mask-if-IRQ_ONESHOT-is-no.patch | 97 -
...023-ARM-S3C24XX-DMA-resume-regression-fix.patch | 35 -
...tech-Harmony-900-from-cdc_ether-to-zaurus.patch | 61 -
...-alpha-fix-32-64-bit-bug-in-futex-support.patch | 86 -
...ci-don-t-use-dma-features-when-using-DMA-.patch | 88 -
...dhci-esdhc-imx-fix-for-mmc-cards-on-i.MX5.patch | 46 -
...ake-up-waiters-when-freeing-unused-kiocbs.patch | 65 -
...rrect-unregistring-of-events-attached-to-.patch | 74 -
...t-need-to-clear-vm_mm-when-deleting-a-VMA.patch | 35 -
...ntry-refcount-leak-when-opening-a-FIFO-on.patch | 64 -
...ro-initialize-count-field-in-ieee80211_tx.patch | 42 -
...hw-prevent-writes-to-const-data-on-AR9160.patch | 119 -
...urn-proper-error-code-from-register_kprob.patch | 79 -
.../3.2.10/0035-mm-thp-fix-BUG-on-mm-nr_ptes.patch | 99 -
.../3.2.10/0036-iwlwifi-fix-key-removal.patch | 58 -
...erpc-early-udbg-consoles-can-t-be-modules.patch | 36 -
...ix-handler-function-arguments-for-zfcp-da.patch | 49 -
...721-fix-queue-wrapping-bug-in-inbound-doo.patch | 49 -
...Add-NOGET-quirk-for-the-AIREN-Slim-keyboa.patch | 50 -
...esa-fix-final-callback-not-ignoring-input.patch | 33 -
...Bump-MAX_OSD_DEVICES-from-64-to-1-048-576.patch | 52 -
...viafb-select-HW-scaling-on-VX900-for-IGA2.patch | 34 -
.../0044-viafb-fix-IGA1-modesetting-on-VX900.patch | 33 -
...m-Check-for-bias-level-when-powering-down.patch | 54 -
.../0046-ASoC-i.MX-SSI-Fix-DSP_A-format.patch | 38 -
.../0047-bsg-fix-sysfs-link-remove-warning.patch | 58 -
...8-avr32-select-generic-atomic64_t-support.patch | 37 -
...o-not-save-restore-NVS-on-Asus-K54C-K54HR.patch | 47 -
.../3.2.10/0050-rtl8192cu-Add-new-device-IDs.patch | 108 -
...rm-i915-gen7-implement-rczunit-workaround.patch | 53 -
...5-gen7-Implement-an-L3-caching-workaround.patch | 60 -
...915-gen7-work-around-a-system-hang-on-IVB.patch | 56 -
...n7-Disable-the-RHWO-optimization-as-it-ca.patch | 54 -
...-drm-i915-fix-ELD-writing-for-SandyBridge.patch | 44 -
.../0056-ARM-orion-Fix-USB-phy-for-orion5x.patch | 164 -
...ix-Orion5x-GPIO-regression-from-MPP-clean.patch | 956 -
...P-Panda-use-gpio_free_array-to-free-HDMI-.patch | 49 -
...430SDP-Panda-rename-HPD-GPIO-to-CT_CP_HPD.patch | 68 -
...0060-OMAPDSS-remove-wrong-HDMI-HPD-muxing.patch | 58 -
...-OMAP-4430SDP-Panda-setup-HDMI-GPIO-muxes.patch | 49 -
...0062-OMAP-4430SDP-Panda-add-HDMI-HPD-gpio.patch | 77 -
.../3.2.10/0063-OMAPDSS-HDMI-PHY-burnout-fix.patch | 246 -
.../0064-OMAPDSS-HDMI-hot-plug-detect-fix.patch | 43 -
...errata-update-workaround-for-A9-erratum-7.patch | 51 -
...perf-limit-sample_period-to-half-max_peri.patch | 163 -
...perf-clear-overflow-flag-when-disabling-c.patch | 40 -
...perf-check-that-we-have-an-event-in-the-P.patch | 103 -
...perf-fix-overflow-handling-for-xscale2-PM.patch | 87 -
...a-staging-lirc_serial-Fix-init-exit-order.patch | 143 -
...ng-lirc_serial-Free-resources-on-failure-.patch | 62 -
...ng-lirc_serial-Fix-deadlock-on-resume-fai.patch | 37 -
...ng-lirc_serial-Do-not-assume-error-codes-.patch | 54 -
...fix-touchpad-detection-when-buttons-are-p.patch | 50 -
..._core-Fix-maximum-number-of-POUT-alarm-at.patch | 34 -
...Add-support-for-ST-Microelectronics-STTS2.patch | 89 -
...Add-support-for-AT30TS00-TS3000GB2-TSE200.patch | 153 -
...0-Maintain-delay-parameter-in-driver-inst.patch | 62 -
...x-memory-accounting-when-sta-is-in-power-.patch | 41 -
...x-frame-delivery-if-sta-is-in-powersave-m.patch | 57 -
...-kms-set-SX_MISC-in-the-r6xx-blit-code-v2.patch | 51 -
...et-avoid-recursive-locking-in-usbnet_stop.patch | 61 -
...iommu_set_device_table-must-not-be-__init.patch | 33 -
...-not-leak-argv-if-target-message-only-con.patch | 36 -
.../3.2.10/0085-dm-io-fix-discard-support.patch | 86 -
...ix-crash-on-read-when-corrupt_bio_byte-no.patch | 71 -
...adata-remove-incorrect-close_device-on-cr.patch | 100 -
...adata-unlock-superblock-in-init_pmd-error.patch | 33 -
...adata-decrement-counter-after-removing-ma.patch | 36 -
...m-raid-set-MD_CHANGE_DEVS-when-rebuilding.patch | 63 -
.../3.2.10/0091-dm-raid-fix-flush-support.patch | 37 -
...t-don-t-call-__init-function-from-__devin.patch | 34 -
.../0093-mfd-Fix-cs5535-section-mismatch.patch | 69 -
...f-pch-rename-pch_spi_pcidev-to-pch_spi_pc.patch | 52 -
.../3.2.10/0095-Linux-3.2.10.patch | 24 -
...Test-for-jack-detection-when-deciding-if-.patch | 45 -
.../3.2.11/0002-Linux-3.2.11.patch | 24 -
...neo1973-fix-neo1973-wm8753-initialization.patch | 42 -
...altek-Apply-the-coef-setup-only-to-ALC269.patch | 56 -
.../0003-aio-fix-io_setup-io_destroy-race.patch | 54 -
.../0004-aio-fix-the-too-late-munmap-race.patch | 81 -
.../0005-x86-Derandom-delay_tsc-for-64-bit.patch | 63 -
...pre-1.1-ASPM-quirking-when-ASPM-is-disabl.patch | 38 -
...ccdc-Fix-crash-in-HS-VS-interrupt-handler.patch | 40 -
.../3.2.12/0008-rt2x00-fix-random-stalls.patch | 99 -
...x-local-vs-remote-memory-events-for-NHM-W.patch | 222 -
...-Do-not-kmalloc-under-the-flocks-spinlock.patch | 140 -
.../0011-vfs-fix-return-value-from-do_last.patch | 34 -
...12-vfs-fix-double-put-after-complete_walk.patch | 35 -
...cer-wmi-No-wifi-rfkill-on-Lenovo-machines.patch | 77 -
.../0014-atl1c-dont-use-highprio-tx-queue.patch | 51 -
...neighbour-Fixed-race-condition-at-tbl-nht.patch | 48 -
...ec-be-careful-of-non-existing-mac-headers.patch | 144 -
...ppp-fix-ppp_mp_reconstruct-bad-seq-errors.patch | 90 -
...ignment-of-ip_summed-for-pre-allocated-sk.patch | 56 -
...alse-reordering-signal-in-tcp_shifted_skb.patch | 72 -
.../0020-vmxnet3-Fix-transport-header-size.patch | 58 -
.../0021-packetengines-fix-config-default.patch | 33 -
...-corrupted-IP-fragments-fix-for-large-mtu.patch | 49 -
...ragment-SACKed-skbs-in-tcp_mark_head_lost.patch | 55 -
...-check-return-value-of-ipv6_dev_get_saddr.patch | 39 -
..._shift_skb_data-to-not-shift-SACKed-data-.patch | 89 -
...t-join-all-router-mcast-group-when-forwar.patch | 36 -
.../0027-usb-asix-Patch-for-Sitecom-LN-031.patch | 36 -
...ix-setting-selector-in-tps6524x-set_volta.patch | 33 -
...ULL-pointer-dereference-in-sd_revalidate_.patch | 170 -
...fix-pointer-math-issue-getting-fw-version.patch | 34 -
...-__blkdev_get-and-add_disk-race-condition.patch | 163 -
...-freezable-workqueue-for-disk-event-polli.patch | 129 -
...sparc32-Add-Av8-to-assembler-command-line.patch | 40 -
...7ehf-Fix-writing-into-fan_stop_time-for-N.patch | 35 -
...3627ehf-Fix-memory-leak-in-probe-function.patch | 53 -
...-w83627ehf-Fix-temp2-source-for-W83627UHG.patch | 69 -
...721-fix-bug-in-register-offset-definition.patch | 103 -
...t-Fix-spurious-SCL-timeouts-under-heavy-l.patch | 46 -
...t-Fix-reservation-conflict-EBUSY-response.patch | 51 -
...compatible-reservation-handling-CRH-1-wit.patch | 152 -
...0-Enable-interval-between-chip-accesses-f.patch | 72 -
.../3.2.12/0042-Linux-3.2.12.patch | 24 -
...NULL-pointer-dereference-in-nilfs_load_su.patch | 62 -
.../0002-afs-Read-of-file-returns-EBADMSG.patch | 56 -
...-Remote-abort-can-cause-BUG-in-rxrpc-code.patch | 68 -
...Incorrect-use-of-snprintf-results-in-SEGV.patch | 66 -
...perf-tools-Use-scnprintf-where-applicable.patch | 283 -
.../3.2.13/0006-tcp-fix-syncookie-regression.patch | 111 -
...Don-t-dev_hold-dev-in-ip6_mc_find_dev_rcu.patch | 36 -
...-possible-il-txq-NULL-pointer-dereference.patch | 63 -
...c-Fix-SMP-kernels-on-pre-core99-UP-machin.patch | 36 -
.../3.2.13/0010-Linux-3.2.13.patch | 24 -
...Add-MediaTek-MT6276M-modem-app-interfaces.patch | 45 -
...driver-adding-support-for-Telit-CC864-SIN.patch | 44 -
...ption-make-interface-blacklist-work-again.patch | 37 -
.../3.2.14/0004-USB-option-add-ZTE-MF820D.patch | 37 -
...ing-zcache-avoid-AB-BA-deadlock-condition.patch | 66 -
...o-fix-problem-when-the-manufacture-is-a-N.patch | 36 -
...tdi_sio-add-support-for-BeagleBone-rev-A5.patch | 35 -
...ip-VID-mislabeled-as-Hornby-VID-in-ftdi_s.patch | 61 -
...ftdi_sio-new-PID-Distortec-JTAG-lock-pick.patch | 46 -
...i_sio-add-support-for-FT-X-series-devices.patch | 150 -
.../0011-USB-ftdi_sio-new-PID-LUMEL-PD12.patch | 45 -
...-fix-bug-of-kernel-hang-when-initializing.patch | 55 -
...12u-Add-missing-initialization-and-remove.patch | 107 -
...12u-Fix-regression-introduced-by-commit-a.patch | 53 -
...12u-Fix-regression-in-signal-level-after-.patch | 47 -
...-fix-bogus-test-in-dwc3_gadget_start_isoc.patch | 54 -
...e-proper-function-for-setting-endpoint-na.patch | 46 -
...s-return-number-of-bytes-on-ep0-read-requ.patch | 37 -
...t-Make-g_hid-device-class-conform-to-spec.patch | 39 -
...-all-PI-opcodes-with-cmpxchg-enabled-chec.patch | 64 -
...fs-Fix-memory-leak-in-sysfs_sd_setsecdata.patch | 92 -
.../0022-tty-moxa-fix-bit-test-in-moxa_start.patch | 34 -
...ng-unicode-value-copied-in-con_set_unimap.patch | 119 -
...24-USB-serial-fix-console-error-reporting.patch | 36 -
...5-cdc-wdm-Fix-more-races-on-the-read-path.patch | 87 -
...-t-clear-WDM_READ-unless-entire-read-buff.patch | 36 -
..._core-Fix-scheduling-while-atomic-dump-me.patch | 134 -
...ld-error-due-to-dma_mask-is-not-at-pdev_a.patch | 49 -
...ltek-do-not-use-stack-memory-for-DMA-in-_.patch | 51 -
...B-qcserial-add-several-new-serial-devices.patch | 49 -
...l-don-t-grab-QMI-port-on-Gobi-1000-device.patch | 177 -
...Add-support-for-the-Sealevel-SeaLINK-8-20.patch | 51 -
...Update-to-support-CP2105-and-multiple-int.patch | 155 -
...mos7840-Fixed-MCS7820-device-attach-probl.patch | 148 -
...d-support-for-D-Link-DWA-127-to-rt2800usb.patch | 33 -
...8192c_common-rtl8192de-Check-for-allocati.patch | 102 -
...dle-previous-allocation-failures-when-fre.patch | 59 -
...8192c-Prevent-sleeping-from-invalid-conte.patch | 56 -
...rtl8192ce-Fix-loss-of-receive-performance.patch | 42 -
...0-iwlwifi-always-monitor-for-stuck-queues.patch | 65 -
.../3.2.14/0041-math-Introduce-div64_long.patch | 45 -
...tp-Fix-integer-overflow-when-setting-time.patch | 39 -
...-events-in-correct-order-according-to-seq.patch | 97 -
...long-term-regression-in-genirq-irq_set_ir.patch | 96 -
...incorrect-check-for-forced-IRQ-thread-han.patch | 35 -
...-rtc-Disable-the-alarm-in-the-hardware-v2.patch | 76 -
...ase-GPIO-lines-and-IRQ-on-error-in-p54spi.patch | 71 -
.../3.2.14/0048-rtnetlink-Fix-VF-IFLA-policy.patch | 38 -
...t-initial-receive-buffers-before-sending-.patch | 143 -
.../3.2.14/0050-ima-fix-Kconfig-dependencies.patch | 49 -
...Add-register-level-checks-to-detect-bogus.patch | 113 -
...pmd_bad-triggering-in-code-paths-holding-.patch | 480 -
...o-buffer-whole-after-copying-to-userspace.patch | 46 -
...Fix-handling-of-wakeup-devices-during-sys.patch | 51 -
...rsemem-remove-limit-constraint-in-alloc_b.patch | 147 -
...-avoid-taking-i_mutex-from-hugetlbfs_read.patch | 140 -
...022ds-tell-the-WM8776-codec-driver-that-i.patch | 89 -
...xa-ssp-atomically-set-stream-active-masks.patch | 122 -
...loop-Set-residual-field-for-SCSI-commands.patch | 51 -
...rget-Fix-iscsit_alloc_buffs-failure-cases.patch | 62 -
...t-Fix-dynamic-explict-NodeACL-pointer-ref.patch | 46 -
...da-fix-printing-of-high-HDMI-sample-rates.patch | 43 -
...fix-a-section-mismatch-when-compiling-g_f.patch | 190 -
...e-sysfs-framebuffer-device-with-USB-.disc.patch | 120 -
...fc_exch-memory-leak-in-ft_send_resp_statu.patch | 50 -
...nsure-to-load-bitmap-when-creating-via-sy.patch | 37 -
...n-t-set-md-arrays-to-readonly-on-shutdown.patch | 82 -
...id10-avoid-deadlock-during-resync-recover.patch | 97 -
...ring-of-the-changed-flags-for-the-bad-blo.patch | 55 -
...ly-clear-the-GPU-domains-upon-a-successfu.patch | 64 -
...Restrict-offset-for-legacy-hardware-curso.patch | 131 -
...kms-fix-analog-load-detection-on-DVI-I-co.patch | 40 -
...kms-add-connector-quirk-for-Fujitsu-D3003.patch | 48 -
...t-set-WBUS16-or-SYNC-bits-in-INQUIRY-resp.patch | 41 -
...-fix-use-after-free-in-target_report_luns.patch | 37 -
...ent-NULL-pointer-dereference-in-target_re.patch | 37 -
...16-bit-target-ports-for-SET-TARGET-PORT-G.patch | 54 -
...ooth-Add-AR30XX-device-ID-on-Asus-laptops.patch | 67 -
...D-add-extra-hotkeys-in-Asus-AIO-keyboards.patch | 71 -
...ID-add-more-hotkeys-in-Asus-AIO-keyboards.patch | 34 -
...-correctly-mask-recovery-field-for-HT6560.patch | 36 -
...ci-fix-too-early-completion-of-IR-multich.patch | 55 -
...end-struct-x86_emulate_ops-with-get_cpuid.patch | 82 -
...6-fix-missing-checks-in-syscall-emulation.patch | 148 -
...y-handle-the-case-where-the-delegation-is.patch | 193 -
...n-the-delegation-if-the-server-returns-NF.patch | 77 -
.../3.2.14/0087-xfs-fix-inode-lookup-race.patch | 101 -
.../0088-CIFS-Respect-negotiated-MaxMpxCount.patch | 212 -
...sue-mounting-of-DFS-ROOT-when-redirecting.patch | 55 -
...a-spurious-error-in-cifs_push_posix_locks.patch | 70 -
.../0091-UBI-fix-error-handling-in-ubi_scan.patch | 58 -
.../0092-UBI-fix-eraseblock-picking-criteria.patch | 57 -
...ust-not-use-list_for_each_entry_safe-in-r.patch | 73 -
...ease-URB-reference-count-before-usb_unlin.patch | 62 -
...usbnet-don-t-clear-urb-dev-in-tx_complete.patch | 38 -
.../0096-e1000e-Avoid-wrong-check-on-TX-hang.patch | 98 -
...endless-loop-when-processing-signals-for-.patch | 85 -
...-d_set_d_op-API-to-set-dentry-ops-in-proc.patch | 49 -
...ix-section-warning-for-prealloc_protectio.patch | 39 -
...-protect-poll-in-entries-that-may-go-away.patch | 97 -
...h_power-Correct-sign-extension-of-running.patch | 36 -
...x-signedness-error-in-i2c_read_demod_byte.patch | 53 -
...-7MHz-8MHz-DVB-T-tuner-support-for-HVR190.patch | 51 -
...x-error-on-stream-stop-in-mxl111sf_ep6_st.patch | 45 -
...-limit-the-state-manager-warning-messages.patch | 78 -
...e-Enable-usermodehelpers-in-hibernate-err.patch | 55 -
...BH_Delay-BH_Unwritten-in-journal_unmap_bu.patch | 49 -
...-EXT4_INODE_JOURNAL_DATA-flag-with-delall.patch | 194 -
...ce-between-unwritten-extent-conversion-an.patch | 90 -
...x-race-between-sync-and-completed-io-work.patch | 119 -
.../0111-ext4-check-for-zero-length-extent.patch | 41 -
...x-d_ancestor-case-in-d_materialize_unique.patch | 54 -
...select-required-CPU-and-L2-errata-options.patch | 56 -
...0114-udf-Fix-deadlock-in-udf_release_file.patch | 40 -
...ap-fix-_set_gpio_irqenable-implementation.patch | 41 -
...nci-fix-oops-on-unbanked-gpio-irq-request.patch | 152 -
...o-davinci-fix-enabling-unbanked-GPIO-IRQs.patch | 65 -
.../0118-dm-crypt-fix-mempool-deadlock.patch | 65 -
.../0119-dm-crypt-add-missing-error-handling.patch | 116 -
...20-dm-exception-store-fix-init-error-path.patch | 33 -
...nt-data-fix-btree-rebalancing-after-remov.patch | 272 -
.../0122-dm-thin-fix-stacked-bi_next-usage.patch | 233 -
.../0123-backlight-fix-typo-in-tosa_lcd.c.patch | 34 -
...s-on-IO-error-during-xlog_recover_process.patch | 84 -
...-hold-slub_lock-when-calling-sysfs_slab_a.patch | 51 -
...-Fix-two-infinite-loops-in-the-mount-code.patch | 54 -
...7-NFSv4.1-Fix-layoutcommit-error-handling.patch | 61 -
.../0128-module-Remove-module-size-limit.patch | 38 -
...tusb-fix-bInterval-for-high-super-speed-i.patch | 47 -
...spend-fbdev-device-around-suspend-hiberna.patch | 95 -
.../3.2.14/0131-Fix-pppol2tp-getsockname.patch | 37 -
...-fix-incorrent-ipv6-ipsec-packet-fragment.patch | 54 -
...t-bpf_jit-fix-BPF_S_LDX_B_MSH-compilation.patch | 62 -
...otential-rcu_read_lock-imbalance-in-rt6_f.patch | 50 -
.../0135-net-fix-napi_reuse_skb-skb-reserve.patch | 39 -
.../0136-Remove-printk-from-rds_sendmsg.patch | 31 -
...-override-for-PCI-legacy-power-management.patch | 52 -
...-the-replay-notify-functions-via-the-regi.patch | 54 -
...-arg-parsing-for-grace_period-and-timeout.patch | 40 -
...p-refined-tsc-calibration-on-systems-with.patch | 62 -
.../0141-x86-tls-Off-by-one-limit-check.patch | 43 -
...sys_sendfile64-implementation-for-sendfil.patch | 40 -
...-flag-for-rtc-devices-that-don-t-support-.patch | 76 -
...-allow-zero-length-strings-in-cache_parse.patch | 35 -
...ci-fix-a-race-of-DMA-submit_tx-on-transfe.patch | 91 -
...M-Fix-pcie-devices-with-non-pcie-children.patch | 72 -
.../3.2.14/0147-Linux-3.2.14.patch | 24 -
...-fix-a-bug-in-emitting-the-16-bit-immedia.patch | 36 -
...002-tg3-Fix-5717-serdes-powerdown-problem.patch | 37 -
...ont-overwrite-settings-for-PHY-Quick-link.patch | 42 -
...ev-fix-memcpy-bug-in-rose_set_mac_address.patch | 41 -
.../3.2.15/0005-net-usb-cdc_eem-fix-mtu.patch | 38 -
...-PHY-access-a-bad-merge-undid-bug-fix-in-.patch | 49 -
...ASoC-wm8994-Update-WM8994-DCS-calibration.patch | 31 -
...008-mtd-ixp4xx-oops-in-ixp4xx_flash_probe.patch | 52 -
...ntiq-reintroduce-support-for-cmdline-part.patch | 45 -
...mi-use-correct-member-for-checking-NAND_B.patch | 42 -
.../0011-mtd-sst25l-initialize-writebufsize.patch | 38 -
...012-mtd-block2mtd-initialize-writebufsize.patch | 39 -
.../0013-mtd-lart-initialize-writebufsize.patch | 37 -
.../3.2.15/0014-mtd-m25p80-set-writebufsize.patch | 37 -
...freq-clamping-for-throttling-per-package-.patch | 132 -
...-Fix-device-ref-leaking-in-acpi_pnp_match.patch | 43 -
...CA-Fix-regression-in-FADT-revision-checks.patch | 69 -
.../0018-modpost-fix-ALL_INIT_DATA_SECTIONS.patch | 32 -
...st-irq-thread-affinity-on-IRQ_SET_MASK_OK.patch | 55 -
...20-tracing-Fix-ftrace-stack-trace-entries.patch | 77 -
...0021-tracing-Fix-ent_size-in-trace-output.patch | 58 -
...d-missing-platform-check-before-registeri.patch | 34 -
...x-possible-tid_rx-reorder_timer-use-after.patch | 52 -
...8192ce-rtl8192cu-rtl8192de-Fix-low-gain-s.patch | 54 -
...e-requested-virtual-size-against-allocate.patch | 48 -
...0026-drm-radeon-kms-fix-fans-after-resume.patch | 75 -
.../0027-drm-i915-no-lvds-quirk-on-MSI-DC500.patch | 40 -
...anitize-BIOS-debugging-bits-from-PIPECONF.patch | 62 -
...-Add-lock-on-drm_helper_resume_force_mode.patch | 37 -
...0-drm-i915-quirk-away-broken-OpRegion-VBT.patch | 71 -
...0031-r8169-runtime-resume-before-shutdown.patch | 57 -
...-Fix-unsupported-WRITE_SAME-sense-payload.patch | 54 -
...core-pass-the-breakpoint-struct-instead-o.patch | 180 -
...-Fix-kernel-oops-with-CONFIG_DEBUG_RODATA.patch | 121 -
...-2-fix-single-step-awareness-to-work-corr.patch | 212 -
...-2-fix-single-step-awareness-to-work-corr.patch | 266 -
...x-DEBUG_RODATA-limitation-using-text_poke.patch | 166 -
...IFS-Fix-VFS-lock-usage-for-oplocked-files.patch | 99 -
...-remove-Tegra30-errata-from-MACH_TEGRA_DT.patch | 40 -
...ove-Fix-compile-error-by-including-module.patch | 36 -
...tmel-mci-correct-data-timeout-computation.patch | 42 -
...abort-flag-for-gracefully-handling-exchan.patch | 102 -
...ot-free-tpg-structure-during-wq-allocatio.patch | 61 -
...write-access-to-dmesg_restrict-kptr_restr.patch | 72 -
...Fix-modpost-license-checking-of-vmlinux.o.patch | 74 -
...-use-host-bridge-_CRS-info-on-MSI-MS-7253.patch | 62 -
...not-tie-MSI-MS-7253-use_crs-quirk-to-BIOS.patch | 50 -
...048-TOMOYO-Fix-mount-flags-checking-order.patch | 91 -
...ioapic-Add-register-level-checks-to-detec.patch | 100 -
...-acer-wmi-No-wifi-rfkill-on-Sony-machines.patch | 39 -
...of-buffer-copied-in-__nfs4_get_acl_uncach.patch | 36 -
...2-sched-x86-Fix-overflow-in-cyc2ns_offset.patch | 99 -
...ear-twl6030-IRQ-status-register-only-once.patch | 58 -
...orola-Rokr-E6-Id-to-the-USBNet-driver-zau.patch | 37 -
.../0055-ioat-fix-size-of-completion-for-Xen.patch | 209 -
.../0056-ASoC-ak4642-fixup-mute-needs-1-step.patch | 34 -
...rocess-should-clear-child-replacement_ses.patch | 44 -
...ake-sure-IOMMU-interrupts-are-re-enabled-.patch | 76 -
...h-Fix-l2cap-conn-failures-for-ssp-devices.patch | 43 -
.../3.2.15/0060-Linux-3.2.15.patch | 24 -
...sk-transcoder-select-bits-before-setting-.patch | 50 -
...deon-kms-fix-DVO-setup-on-some-r4xx-chips.patch | 39 -
...ngbuffer-Exclude-last-2-cachlines-of-ring.patch | 34 -
...only-add-the-mm-i2c-bus-if-the-hw_i2c-mod.patch | 41 -
...operly-compute-dp-dithering-for-user-crea.patch | 130 -
...-i915-make-rc6-module-parameter-read-only.patch | 32 -
...-missing-DMA-buffer-unmapping-for-PCI-dri.patch | 45 -
...79-1-DT-fix-atags_to_fdt-second-call-site.patch | 37 -
...ThumbEE-Disable-userspace-TEEHBR-access-f.patch | 54 -
...revent-bitmap_daemon_work-running-while-i.patch | 42 -
...0011-Bluetooth-uart-ldisc-Fix-memory-leak.patch | 51 -
...ci_ldisc-fix-NULL-pointer-dereference-on-.patch | 107 -
...s-scalability-issue-by-removing-extent-ca.patch | 93 -
...14-ia64-fix-futex_atomic_cmpxchg_inatomic.patch | 58 -
...-rtc-pl031.c-enable-clock-on-all-ST-varia.patch | 39 -
...getlb-fix-race-condition-in-hugetlb_fault.patch | 89 -
...g-iio-hmc5843-Fix-crash-in-probe-function.patch | 107 -
...altera_uart-Check-for-NULL-platform_data-.patch | 42 -
...minate-obsolete-__handle_softirq-function.patch | 63 -
.../0020-sparc64-Fix-bootup-crash-on-sun4v.patch | 33 -
...alize-scsi-host-max_sectors-for-tape-driv.patch | 35 -
...csi-tape-io-with-more-than-255-scatter-ga.patch | 38 -
...fb-Fix-oops-that-uvesafb-try-to-execute-N.patch | 118 -
...stale-jiffies-update-in-tick_nohz_restart.patch | 53 -
.../0025-pch_uart-Fix-MSI-setting-issue.patch | 43 -
...SB-serial-fix-race-between-probe-and-open.patch | 97 -
...fix-DTR-RTS-being-raised-on-baud-rate-cha.patch | 37 -
...re-add-NOVATELWIRELESS_PRODUCT_HSPA_HIGHS.patch | 32 -
...o-fix-status-line-change-handling-for-TIO.patch | 79 -
...o-fix-race-condition-in-TIOCMIWAIT-and-ab.patch | 111 -
...ra-add-support-for-Sierra-Wireless-MC7710.patch | 30 -
...t-clear-urb-dev-in-scatter-gather-library.patch | 85 -
...don-t-ignore-suspend-errors-for-root-hubs.patch | 54 -
.../0034-xhci-don-t-re-enable-IE-constantly.patch | 58 -
...-t-write-zeroed-pointers-to-xHC-registers.patch | 78 -
...tore-event-ring-dequeue-pointer-on-resume.patch | 39 -
...-of-device-descriptor-got-from-superspeed.patch | 73 -
...CI_RESET_ON_RESUME-quirk-for-VIA-xHCI-hos.patch | 43 -
...orrect-the-define-XHCI_LEGACY_DISABLE_SMI.patch | 61 -
...040-fix-tlb-flushing-for-page-table-pages.patch | 240 -
...041-serial-PL011-clear-pending-interrupts.patch | 82 -
...0042-serial-PL011-move-interrupt-clearing.patch | 55 -
...-the-same-personality-flags-as-suid-when-.patch | 41 -
.../0044-ath9k-fix-max-noise-floor-threshold.patch | 56 -
...0045-xhci-Fix-register-save-restore-order.patch | 62 -
...ci_core-fix-NULL-pointer-dereference-at-u.patch | 133 -
...pport-new-device-LAPIS-Semiconductor-ML78.patch | 63 -
...missing-spin_lock_init-in-gpio-pch-driver.patch | 35 -
...9-usb-gadget-pch_udc-Fix-disconnect-issue.patch | 42 -
...usb-gadget-pch_udc-Fix-wrong-return-value.patch | 42 -
...-usb-gadget-pch_udc-Fix-USB-suspend-issue.patch | 45 -
...pch_udc-Fix-usb-gadget-pch_udc-Fix-ether-.patch | 153 -
...gadget-pch_udc-Reduce-redundant-interrupt.patch | 55 -
...to-allow-region-arguments-to-reference-ot.patch | 82 -
...security-fix-compile-error-in-commoncap.c.patch | 37 -
...056-pch_gbe-Do-not-abort-probe-on-bad-MAC.patch | 81 -
...ory-corruption-calling-pch_gbe_validate_o.patch | 56 -
...port-new-device-LAPIS-Semiconductor-ML783.patch | 82 -
...i-topcliff-pch-fix-Wuninitialized-warning.patch | 82 -
...f-pch-Support-new-device-LAPIS-Semiconduc.patch | 76 -
...dding-USB-device-13d3-3375-as-an-Atheros-.patch | 67 -
...etooth-Add-Atheros-maryann-PIDVID-support.patch | 119 -
...ooth-Add-support-for-BCM20702A0-0a5c-21e3.patch | 45 -
...t-leak-robust-list-to-unprivileged-proces.patch | 170 -
...kms-fix-the-regression-of-DVI-connector-c.patch | 39 -
.../0066-drm-radeon-disable-MSI-on-RV515.patch | 37 -
...fix-load-detect-on-rn50-with-hardcoded-ED.patch | 46 -
.../3.2.16/0068-Linux-3.2.16.patch | 24 -
...a512-Fix-byte-counter-overflow-in-SHA-512.patch | 37 -
...nexant-Don-t-set-HP-pin-control-bit-uncon.patch | 43 -
...nexant-Set-up-the-missing-docking-station.patch | 99 -
...x-serial-driver-hungs-are-a-result-of-cal.patch | 54 -
...MTIMER-fix-broken-timer-clock-source-sele.patch | 58 -
...mmc-fixes-for-eMMC-v4.5-discard-operation.patch | 72 -
...mc-fixes-for-eMMC-v4.5-sanitize-operation.patch | 136 -
...008-mmc-unbreak-sdhci-esdhc-imx-on-i.MX25.patch | 40 -
.../0009-xen-gntdev-do-not-set-VM_PFNMAP.patch | 37 -
...Add-quirk-to-deal-with-misconfigured-back.patch | 151 -
...emove-allocation-of-coherent-buffer-for-s.patch | 48 -
...ix-missing-URB_NO_TRANSFER_DMA_MAP-flag-i.patch | 35 -
...wb-fix-use-of-del_timer_sync-in-interrupt.patch | 64 -
.../3.2.17/0014-uwb-fix-error-handling.patch | 34 -
.../0015-davinci_mdio-Fix-MDIO-timeout-check.patch | 44 -
...pdate-pcie8766-scratch-register-addresses.patch | 50 -
...mac-resume-transmit-fifo-upon-receiving-f.patch | 57 -
.../0018-rc-core-set-mode-for-winbond-cir.patch | 37 -
...ot-unlock-mutex-if-sanity-check-failed-in.patch | 41 -
...cfg80211-fix-interface-combinations-check.patch | 30 -
.../0021-Fix-modpost-failures-in-fedora-17.patch | 54 -
...-BUG-by-__set_page_dirty_no_writeback-on-.patch | 60 -
...ible-corruption-of-array-metadata-on-shut.patch | 51 -
...-jbd2-use-GFP_NOFS-for-blkdev_issue_flush.patch | 45 -
...cp210x-Fixed-usb_control_msg-timeout-valu.patch | 54 -
...ch_uart-Fix-dma-channel-unallocated-issue.patch | 55 -
...rs-tty-amiserial.c-add-missing-tty_unlock.patch | 36 -
...sierra-avoid-QMI-wwan-interface-on-MC77xx.patch | 60 -
...I-fix-criterion-for-resuming-the-root-hub.patch | 48 -
...-EHCI-always-clear-the-STS_FLR-status-bit.patch | 46 -
...dlock-in-bConfigurationValue-attribute-me.patch | 116 -
...eliminate-NULL-pointer-dereference-bugfix.patch | 56 -
...ap-fix-crash-when-musb-glue-omap-gets-ini.patch | 44 -
...ap-fix-the-error-check-for-pm_runtime_get.patch | 48 -
...rk-for-still-enabled-interrupts-on-Intel-.patch | 89 -
...dianness-breakage-in-ext4_split_extent_at.patch | 33 -
...ages-from-the-iommu-when-slots-are-remove.patch | 109 -
...ptop-add-3-machines-that-has-touchpad-LED.patch | 58 -
...-touchpad-LED-should-persist-its-status-a.patch | 34 -
...uetooth-Add-support-for-Atheros-04ca-3005.patch | 64 -
.../0041-Don-t-limit-non-nested-epoll-paths.patch | 45 -
...ice-unregistration-when-unregistering-the.patch | 38 -
...pi-mpc83xx-fix-NULL-pdata-dereference-bug.patch | 42 -
...dd-support-for-the-Fujitsu-Stylistic-Q550.patch | 33 -
.../0045-rt2x00-Identify-rt2800usb-chipsets.patch | 148 -
...rken-error-value-for-setattr-on-read-only.patch | 45 -
...ror-values-returned-by-nfsd4_lockt-when-n.patch | 73 -
...dianness-breakage-in-TEST_STATEID-handlin.patch | 36 -
...9-nfsd-fix-compose_entry_fh-failure-exits.patch | 92 -
...-btrfs_root_readonly-broken-on-big-endian.patch | 33 -
...s2-l_next_free_req-breakage-on-big-endian.patch | 53 -
.../0052-ocfs-rl_used-breakage-on-big-endian.patch | 58 -
.../0053-ocfs2-rl_count-endianness-breakage.patch | 31 -
...ocfs2-e_leaf_clusters-endianness-breakage.patch | 40 -
.../3.2.17/0055-lockd-fix-the-endianness-bug.patch | 45 -
...-ep0-increment-actual-on-bounced-ep0-case.patch | 41 -
.../0057-net-fix-proc-net-dev-regression.patch | 185 -
...fail-unchecked-creates-of-non-special-fil.patch | 75 -
...stop-and-restart-queue-on-every-TX-packet.patch | 65 -
...cp-allow-splice-to-build-full-TSO-packets.patch | 129 -
...struct-sctp_event_subscribe-to-grow-witho.patch | 56 -
...ot-send-queries-on-multicast-group-leaves.patch | 199 -
...63-ipv6-fix-array-index-in-ip6_mc_add_src.patch | 39 -
...t-Check-input-from-user-before-allocating.patch | 78 -
...perly-unset-current_arp_slave-on-slave-li.patch | 45 -
...m-prevent-a-possible-kernel-bug-due-to-mi.patch | 37 -
...0067-netlink-fix-races-after-skb-queueing.patch | 82 -
...0068-net-fix-a-race-in-sock_queue_err_skb.patch | 43 -
..._rcv_rtt_update-use-of-an-unscaled-RTT-sa.patch | 50 -
...-pskb_expand_head-to-get-maximum-tailroom.patch | 48 -
.../3.2.17/0071-tcp-fix-tcp_trim_head.patch | 57 -
...d-order-1-allocations-on-wifi-and-tx-path.patch | 134 -
...l1-fix-kernel-panic-in-case-of-DMA-errors.patch | 106 -
...intr-mask-after-its-handler-is-registered.patch | 67 -
...smsc911x-fix-skb-handling-in-receive-path.patch | 78 -
...t-ks8851_mll-fix-rx-frame-buffer-overflow.patch | 46 -
...d-gred-Fix-oops-in-gred_dump-in-WRED-mode.patch | 54 -
.../3.2.17/0078-net-usb-smsc75xx-fix-mtu.patch | 39 -
.../3.2.17/0079-dummy-Add-ndo_uninit.patch | 55 -
...tcp_grow_window-for-large-incoming-frames.patch | 40 -
...-not-leak-net_generic-data-on-failed-init.patch | 79 -
...-t-copy-too-much-in-netdev_set_mac_addres.patch | 36 -
...et-ax25-Reorder-ax25_exit-to-remove-races.patch | 58 -
..._MAXSEG-for-established-IPv6-passive-sock.patch | 41 -
...-hostname-in-brackets-when-needed-in-nfs_.patch | 49 -
...e-that-the-LOCK-code-sets-exception-inode.patch | 54 -
...e-that-we-check-lock-exclusive-shared-typ.patch | 45 -
...open-context-on-error-in-nfs_pagein_multi.patch | 30 -
...-open-context-on-error-in-nfs_flush_multi.patch | 30 -
...de-Fix-sysfs-warning-during-module-unload.patch | 71 -
...IC-code-touches-invalid-MSR-on-P5-class-m.patch | 91 -
...fs-work-around-unhappy-compat-problem-on-.patch | 135 -
...ly-check-for-pending-events-when-restorin.patch | 47 -
...-crash-when-booting-with-ACPI-hotplug-CPU.patch | 99 -
...nsure-power-gets-managed-for-line-widgets.patch | 43 -
...-Improve-sequencing-of-AIF-channel-enable.patch | 389 -
...t_hdmac-remove-clear-on-read-in-atc_dosta.patch | 40 -
...OPS-when-build_sched_domains-percpu-alloc.patch | 85 -
...-stacktrace-of-latency-tracers-irqsoff-an.patch | 62 -
...h_power-fix-bogus-values-with-current-BIO.patch | 93 -
...wmon-fam15h_power-Fix-pci_device_id-array.patch | 49 -
...ell-laptop-Terminate-quirks-list-properly.patch | 32 -
...kms-need-to-set-up-ss-on-DP-bridges-as-we.patch | 40 -
...ndle-input-output-sdvo-timings-separately.patch | 182 -
...drm-i915-relative_constants_mode-race-fix.patch | 78 -
...drm-i915-Force-sync-command-ordering-Gen6.patch | 98 -
...t-the-Stencil-Cache-eviction-policy-to-no.patch | 69 -
...x-integer-overflow-in-i915_gem_execbuffer.patch | 40 -
...x-integer-overflow-in-i915_gem_do_execbuf.patch | 41 -
...11-ensure-interface-is-up-in-various-APIs.patch | 152 -
...d-external-mic-quirk-for-Asus-Zenbook-UX3.patch | 37 -
...-fix-race-leading-leading-to-memory-corru.patch | 64 -
...ix-crash-during-suspend-on-ASUS-computers.patch | 97 -
...storage-gadgets-send-wrong-error-code-for.patch | 55 -
...dget-dummy-do-not-call-pullup-on-udc_stop.patch | 35 -
...uvc-uvc_request_data-length-field-must-be.patch | 50 -
...es-add-a-packetized-pipe-mode-for-writing.patch | 143 -
...-the-autofsv5-packet-file-descriptor-use-.patch | 117 -
...errata-only-handle-ARM-erratum-326103-on-.patch | 89 -
...l2x0-only-apply-workaround-for-erratum-75.patch | 62 -
...l2x0-only-write-to-debug-registers-on-PL3.patch | 69 -
...-1-tls-remove-covert-channel-via-TPIDRURW.patch | 52 -
...hotplug-copy-the-affinity-mask-when-force.patch | 53 -
...sas_find_bcast_phy-in-the-presence-of-vac.patch | 59 -
...false-positive-device-attached-conditions.patch | 48 -
.../0126-efi-Add-new-variable-attributes.patch | 45 -
.../0127-efi-Validate-UEFI-boot-variables.patch | 231 -
...e-fix-the-number-of-pages-used-for-hibern.patch | 100 -
...15-enable-dip-before-writing-data-on-gen4.patch | 50 -
...0130-sched-Fix-nohz-load-accounting-again.patch | 133 -
.../0131-efivars-Improve-variable-validation.patch | 142 -
...0132-fs-cifs-fix-parsing-of-dfs-referrals.patch | 49 -
...seqcount_begin-to-use-ACCESS_ONCE-for-seq.patch | 51 -
...34-hwmon-coretemp-Increase-CPU-core-limit.patch | 35 -
...5-nouveau-initialise-has_optimus-variable.patch | 31 -
...136-hwmon-coretemp-fix-oops-on-cpu-unplug.patch | 77 -
...-old-error-history-when-counting-probe-tr.patch | 42 -
...load-config-after-successful-initializati.patch | 48 -
.../0139-i2c-pnx-Disable-clk-in-suspend.patch | 38 -
...-race-condition-in-the-command-completion.patch | 74 -
...0211-fix-AP-mode-EAP-tx-for-VLAN-stations.patch | 38 -
.../3.2.17/0142-rtlwifi-Fix-oops-on-unload.patch | 67 -
...ix-crash-on-remove-due-to-premature-kfree.patch | 40 -
...crash-on-remove-due-to-leftover-work-item.patch | 35 -
...45-iwlwifi-do-not-nulify-ctx-vif-on-reset.patch | 85 -
...46-iwlwifi-fix-hardware-queue-programming.patch | 114 -
...47-hfsplus-Fix-potential-buffer-overflows.patch | 79 -
.../0148-ASoC-tlv312aic23-unbreak-resume.patch | 51 -
...m-generic-Use-__BITS_PER_LONG-in-statfs.h.patch | 37 -
...0150-x86-relocs-Remove-an-unused-variable.patch | 41 -
...Add-extra-clobber-registers-for-assembly-.patch | 43 -
...SMP-prevent-use-of-the-console-when-using.patch | 58 -
...drm-i915-disable-sdvo-hotplug-on-i945g-gm.patch | 56 -
...-no-set-Stencil-Cache-eviction-LRA-w-a-on.patch | 51 -
...-crashes-when-trying-to-see-non-existent-.patch | 63 -
...-t-use-PCI-BIOS-service-for-configuration.patch | 53 -
...don-t-use-PMD_SIZE-as-embedded-atom_size-.patch | 68 -
...-allow-up-to-uCode-API-6-for-6000-devices.patch | 64 -
...wlwifi-use-correct-released-ucode-version.patch | 159 -
...wlwifi-use-6000G2B-for-6030-device-series.patch | 44 -
...-simplify-the-we-have-changed-execution-d.patch | 75 -
...-fix-the-parent-has-changed-security-doma.patch | 77 -
...12u-Fix-regression-caused-by-commit-8c213.patch | 66 -
...rk-link-down-on-startup-and-let-PHY-inter.patch | 46 -
.../3.2.17/0165-Linux-3.2.17.patch | 24 -
...ix-the-logic-to-ensure-new-voltage-settin.patch | 35 -
...vert-ARM-OMAP-ctrl-Fix-CONTROL_DSIPHY-reg.patch | 52 -
...oaudio-Remove-incorrect-part-of-assertion.patch | 46 -
...ARM-orion5x-Fix-GPIO-enable-bits-for-MPP9.patch | 41 -
...ssen-CPU-usage-when-waiting-for-chip-to-r.patch | 56 -
..._embed_first_chunk-should-free-unused-par.patch | 57 -
...event-BUG_ON-in-hugetlb_fault-hugetlb_cow.patch | 46 -
...spaces-pid_ns-fix-leakage-on-fork-failure.patch | 49 -
...m-fix-sign-extend-problem-in-__free_pages.patch | 49 -
...ix-tx-transfer-padding-for-full-speed-USB.patch | 45 -
.../3.2.18/0011-netem-fix-possible-skb-leak.patch | 39 -
...gister_netdevice_notifier-unregister-the-.patch | 64 -
...lock-socket-lock-before-returning-from-l2.patch | 47 -
...2-propogate-rx-hash-when-packet-is-copied.patch | 38 -
...ceive-length-error-in-mixed-non-VLAN-VLAN.patch | 136 -
.../3.2.18/0016-sungem-Fix-WakeOnLan.patch | 35 -
...-panic-from-reserved-statblk-field-access.patch | 67 -
...tcp-fix-infinite-cwnd-in-tcp_complete_cwr.patch | 46 -
...p-change-tcp_adv_win_scale-and-tcp_rmem-2.patch | 124 -
...mac-pass-missing-argument-to-brcms_b_mute.patch | 43 -
...fix-Auto-Power-Saving-in-ip101a_config_in.patch | 43 -
.../0022-NFSv4-Revalidate-uid-gid-after-open.patch | 74 -
...-incorrect-se_lun_acl-release-for-dynamic.patch | 70 -
.../0024-marvell-cam-fix-an-ARM-build-error.patch | 34 -
.../3.2.18/0025-rc-Postpone-ISR-registration.patch | 325 -
...gnore-bogus-union-descriptor-for-RNDIS-de.patch | 75 -
...Fix-lock-acquisition-order-bug-in-gc-path.patch | 103 -
...5p-fimc-Fix-locking-in-subdev-set_crop-op.patch | 35 -
...eck-if-scsi_dh-module-already-loaded-befo.patch | 39 -
...o-not-clobber-g2-in-xcall_fetch_glob_regs.patch | 58 -
...ssing-spin_lock_init-in-gpio-ml-ioh-drive.patch | 33 -
...f-pch-Modify-pci-bus-number-dynamically-t.patch | 32 -
...f-pch-Fix-issue-for-transmitting-over-4KB.patch | 187 -
...f-pch-supports-a-spi-mode-setup-and-bit-o.patch | 34 -
...f-pch-add-recovery-processing-in-case-wai.patch | 43 -
...d-deadlock-on-sync-mounted-FS-w-o-journal.patch | 64 -
.../3.2.18/0037-ia64-Add-accept4-syscall.patch | 57 -
...mac-fix-endless-retry-of-A-MPDU-transmiss.patch | 60 -
...vfp-ensure-preemption-is-disabled-when-en.patch | 73 -
...SPC-2-RELEASE-bug-for-multi-session-iSCSI.patch | 42 -
...-mv_cesa-requires-on-CRYPTO_HASH-to-build.patch | 51 -
...t-Fix-power-map-for-speaker-pins-with-som.patch | 46 -
.../0043-ASoC-wm8994-Fix-AIF2ADC-power-down.patch | 29 -
...fix-skb-traversing-races-during-unlink-v2.patch | 222 -
...dd-Novatel-USB551L-device-IDs-for-FLAG_WW.patch | 58 -
...-VM_GROWSDOWN-mmaps-extending-below-FIRST.patch | 33 -
...pply-commit-74fca9da0-to-the-compat-signa.patch | 49 -
...timer_sync-to-mddev_suspend-fix-nasty-pan.patch | 38 -
...bug-in-handling-of-FILEIO-block_device-re.patch | 78 -
...sendpages-must-try-to-push-data-out-on-oo.patch | 57 -
...1-e1000-Prevent-reset-task-killing-itself.patch | 40 -
...052-mtd-map.h-fix-arm-cross-build-failure.patch | 37 -
...tmmac-Fix-compilation-error-in-mmc_core.c.patch | 38 -
.../0054-pktgen-fix-crash-at-module-unload.patch | 72 -
.../0055-pktgen-fix-module-unload-for-good.patch | 48 -
.../3.2.18/0056-Linux-3.2.18.patch | 24 -
...ifier-Flush-TLBs-before-releasing-mmu_loc.patch | 79 -
...all-vcpus-are-consistent-with-in-kernel-i.patch | 110 -
...-lock-slots_lock-around-device-assignment.patch | 83 -
...nVMX-Fix-erroneous-exception-bitmap-check.patch | 36 -
...M-VMX-vmx_set_cr0-expects-kvm-srcu-locked.patch | 35 -
...-store-status-after-handling-STOP_ON_STOP.patch | 65 -
...90-Sanitize-fpc-registers-for-KVM_SET_FPU.patch | 36 -
...008-bio-don-t-overflow-in-bio_get_nr_vecs.patch | 61 -
...allocation-failure-due-to-bio_get_nr_vecs.patch | 49 -
...uffer-overflow-when-printing-partition-UU.patch | 98 -
.../3.2.19/0011-fix-PA1.1-oops-on-boot.patch | 43 -
...x-crash-in-flush_icache_page_asm-on-PA1.1.patch | 91 -
...13-fix-panic-on-prefetch-NULL-on-PA7300LC.patch | 39 -
...h-tile-Kconfig-remove-pointless-M386-test.patch | 31 -
...15-tilegx-enable-SYSCALL_WRAPPERS-support.patch | 39 -
.../0016-mtd-sm_ftl-fix-typo-in-major-number.patch | 33 -
...017-hpsa-Fix-problem-with-MSA2xxx-devices.patch | 77 -
...sel_make_bools-errors-don-t-leave-inconsi.patch | 34 -
...rn-if-db.txt-is-empty-with-CONFIG_CFG8021.patch | 86 -
...-for-panic-happening-because-of-improper-.patch | 60 -
...isdn-gigaset-ratelimit-CAPI-message-dumps.patch | 87 -
...n-gigaset-fix-CAPI-disconnect-B3-handling.patch | 46 -
...t-improve-error-handling-querying-firmwar.patch | 47 -
...e-compat-keyctl-syscall-wrapper-on-Sparc6.patch | 60 -
...-mismatch-between-locked-and-pinned-pages.patch | 38 -
...ore-Release-regulator-regulator-supplies-.patch | 34 -
...u-Fix-off-by-one-in-dmar_get_fault_reason.patch | 41 -
...Always-wake-up-waiters-in-c4iw_peer_abort.patch | 38 -
...b4-Drop-peer_abort-when-no-endpoint-found.patch | 37 -
.../0030-s390-pfault-fix-task-state-race.patch | 82 -
...m-parameter-validation-on-single-controll.patch | 46 -
...g-allocations-called-very-early-during-bo.patch | 69 -
...O-use-the-proper-rw_verify_area-area-help.patch | 109 -
...ocs-update-HOWTO-for-2.6.x-3.x-versioning.patch | 100 -
...ging-comedi-comedi_fops.c-add-missing-vfr.patch | 34 -
...-move-usb_translate_errors-to-linux-usb.h.patch | 70 -
.../0037-USB-cdc-wdm-sanitize-error-returns.patch | 33 -
.../3.2.19/0038-USB-cdc-wdm-fix-memory-leak.patch | 35 -
.../0039-8250_pci-fix-pch-uart-matching.patch | 102 -
...d-USB_QUIRK_RESET_RESUME-for-M-Audio-88es.patch | 36 -
...usbtest-two-super-speed-fixes-for-usbtest.patch | 60 -
.../0042-8250.c-less-than-2400-baud-fix.patch | 51 -
...-usb-xhci-Handle-COMP_TX_ERR-for-isoc-tds.patch | 49 -
...oid-dead-ports-when-CONFIG_USB_XHCI_HCD-n.patch | 63 -
...nx-Point-to-list-of-Intel-switchable-host.patch | 81 -
...fsl_udc_core-dTD-s-next-dtd-pointer-need-.patch | 44 -
...7-Add-missing-call-to-uart_update_timeout.patch | 36 -
...o-add-support-for-Physik-Instrumente-E-86.patch | 58 -
...t-fix-length-argument-of-out-function-cal.patch | 36 -
.../0050-HID-wiimote-Fix-IR-data-parser.patch | 60 -
...-unusual_devs-entry-for-Yarvik-PMP400-MP4.patch | 41 -
...91-add-a-reset-function-to-fix-race-condi.patch | 63 -
...h-read-all-32-bits-of-report-type-bitfiel.patch | 70 -
...ti_usb_3410_5052-Add-support-for-the-FRI2.patch | 77 -
...-poll-must-return-POLLHUP-if-device-is-go.patch | 38 -
...USB-cdc-wdm-add-debug-messages-on-cleanup.patch | 54 -
...-cannot-use-dev_printk-when-device-is-gon.patch | 66 -
...y-Allow-uart_register-unregister-register.patch | 33 -
...kip-nr_running-sanity-check-in-worker_ent.patch | 51 -
...-new-short-TX-quirk-for-Fresco-Logic-host.patch | 129 -
...ore-enable-USB2-LPM-if-port-suspend-fails.patch | 43 -
...date-event-scheduling-constraints-for-AMD.patch | 62 -
...fix-resource-leak-in-xhci-power-loss-path.patch | 74 -
...set-reserved-command-ring-TRBs-on-cleanup.patch | 39 -
.../3.2.19/0065-USB-Remove-races-in-devio.c.patch | 132 -
...FP_NOIO-to-allocate-bio-for-flush-request.patch | 37 -
...7-um-Implement-a-custom-pte_same-function.patch | 41 -
.../3.2.19/0068-um-Fix-__swp_type.patch | 39 -
...n-t-do-discard-if-no-discard-option-added.patch | 41 -
...-Input-wacom-relax-Bamboo-stylus-ID-check.patch | 42 -
...i-Detect-Marvell-88SE9172-SATA-controller.patch | 35 -
...drop-unused-parameter-from-flush_cache_us.patch | 59 -
...Do-not-call-flush_cache_user_range-with-m.patch | 45 -
...ptop-Enable-keyboard-backlight-by-default.patch | 48 -
...try-mounting-device-as-nfs-root-unless-ty.patch | 54 -
...mcg-free-spare-array-to-avoid-memory-leak.patch | 40 -
...RT-signal-mask-corruption-via-sigprocmask.patch | 107 -
...error-handling-on-inode-bitmap-corruption.patch | 43 -
...error-handling-on-inode-bitmap-corruption.patch | 42 -
...dd-Sony-Vaio-VPCCW29FX-to-nonvs-blacklist.patch | 42 -
...QF_SHARED-back-in-for-the-non-MSI-X-inter.patch | 42 -
...e-up-s_wait_unfrozen-when-freeze_fs-fails.patch | 42 -
...cifs-fix-revalidation-test-in-cifs_llseek.patch | 35 -
.../3.2.19/0084-dl2k-Clean-up-rio_ioctl.patch | 123 -
...C-fix-NULL-pointer-dereference-in-DSS2-VE.patch | 41 -
...t-change-timeout-value-50msec-to-1000msec.patch | 36 -
...N7-Use-HW-scheduler-for-fixed-function-sh.patch | 100 -
...void-spurious-calls-to-interrupt-handlers.patch | 99 -
...autodetection-support-for-USB-ID-2040-c0a.patch | 31 -
.../0090-uvcvideo-Fix-ENUMINPUT-handling.patch | 34 -
...oid-a-double-read-of-PCH_IIR-during-inter.patch | 63 -
...ix-error-due-to-MMIO-access-with-SSB-unpo.patch | 35 -
...x-Prevent-NULL-pointer-deref-in-demux-han.patch | 45 -
...n-t-clobber-the-pipe-param-in-sanitize_mo.patch | 52 -
...-spi-reference-correct-pdata-in-fsl_spi_c.patch | 42 -
...ot-map-the-same-GSI-twice-in-PVHVM-guests.patch | 90 -
...-nouveau_set_bo_placement-takes-TTM-flags.patch | 32 -
...E-Fix-vm86-handling-for-32bit-mce-handler.patch | 43 -
...-check-for-processor-context-when-machine.patch | 53 -
...e-fix-bug-where-fls-0-was-not-returning-0.patch | 50 -
...-Add-device-info-into-list-before-doing-c.patch | 63 -
...l-terminate-filename-passed-to-ethtool_op.patch | 55 -
...-mark-buffers-beyond-end-of-disk-as-mappe.patch | 157 -
...-rtc-pl031.c-configure-correct-wday-for-2.patch | 63 -
...allocate-USB-read-buffers-and-eliminate-k.patch | 136 -
...6-NFS4-fix-compile-warnings-in-nfs4proc.c.patch | 39 -
...d-reading-past-buffer-when-calling-GETACL.patch | 123 -
...void-beyond-bounds-copy-while-caching-ACL.patch | 88 -
...otify-transfer-complete-after-clearing-st.patch | 73 -
...-i2c-davinci-Free-requested-IRQ-in-remove.patch | 33 -
...e-16-bit-real-mode-code-support-for-reloc.patch | 1651 -
...Workaround-for-binutils-2.22.52.0.1-secti.patch | 43 -
...When-printing-an-error-say-relative-or-ab.patch | 69 -
.../3.2.19/0114-x86-relocs-Build-clean-fix.patch | 33 -
...cs-Whitelist-more-symbols-for-ld-bug-work.patch | 73 -
...Add-jiffies-and-jiffies_64-to-the-relativ.patch | 42 -
.../3.2.19/0117-Linux-3.2.19.patch | 24 -
...mtdoops-fix-the-oops_page_used-array-size.patch | 39 -
...mtdoops-skip-reading-initially-bad-blocks.patch | 36 -
...devs-don-t-increase-open-count-on-error-p.patch | 85 -
...tresstest-bail-out-if-device-has-not-enou.patch | 60 -
...-interface.c-fix-alarm-rollover-when-day-.patch | 53 -
...dd-missing-ext4_resize_end-on-error-paths.patch | 109 -
...undefined-behavior-in-ext4_fill_flex_info.patch | 74 -
...sb-us122l-Delete-calls-to-preempt_disable.patch | 54 -
...-Fix-master-control-for-Cirrus-Logic-421X.patch | 57 -
...SA-HDA-Fix-automute-for-Cirrus-Logic-421x.patch | 48 -
...e1724-Check-for-ac97-to-avoid-kernel-oops.patch | 38 -
...dio-Avoid-flood-of-frame-active-debug-mes.patch | 46 -
...e-auto-parser-for-HP-laptops-with-cx20459.patch | 37 -
...turn-the-error-from-get_wcaps_type-for-in.patch | 58 -
...x-the-detection-of-Loopback-Mixing-contro.patch | 42 -
...x-the-lost-power-setup-of-seconary-pins-a.patch | 92 -
...kms-workaround-invalid-AVI-infoframe-chec.patch | 43 -
...n-kms-disable-writeback-on-pre-R300-asics.patch | 40 -
...disabling-PCI-bus-mastering-on-big-endian.patch | 70 -
...FS-errors-are-communicated-on-iodata-pnfs.patch | 50 -
...1-pnfs-obj-Must-return-layout-on-IO-error.patch | 92 -
.../3.2.2/0022-NFS-Retry-mounting-NFSROOT.patch | 94 -
...4.1-fix-backchannel-slotid-off-by-one-bug.patch | 30 -
...fix-recent-breakage-to-NFS-error-handling.patch | 60 -
...FSv4-include-bitmap-in-nfsv4-get-acl-data.patch | 313 -
...ression-in-handling-of-context-option-in-.patch | 147 -
...ximum-global-item-tag-report-size-to-96-b.patch | 35 -
.../0028-HID-wiimote-Select-INPUT_FF_MEMLESS.patch | 33 -
...ix-missing-scrub-when-there-is-a-bit-flip.patch | 81 -
...0030-UBI-fix-use-after-free-on-error-path.patch | 52 -
.../0031-PCI-Fix-PCI_EXP_TYPE_RC_EC-value.patch | 32 -
...able-msi-interrupts-when-we-initialize-a-.patch | 53 -
...ore-CPU-non-addressable-_CRS-reserved-mem.patch | 65 -
...x86-PCI-amd-factor-out-MMCONFIG-discovery.patch | 160 -
...build-amd_bus.o-only-when-CONFIG_AMD_NB-y.patch | 37 -
...s-Release-spinlock-for-the-raid-device-li.patch | 56 -
...s-Fix-for-memory-allocation-error-for-lar.patch | 177 -
...Reject-replies-with-payload-XENSTORE_PAYL.patch | 78 -
...rform-bad-block-tests-for-WriteMostly-dev.patch | 56 -
...040-ima-free-duplicate-measurement-memory.patch | 52 -
.../0041-ima-fix-invalid-memory-reference.patch | 68 -
...ub-fix-a-possible-memleak-in-__slab_alloc.patch | 47 -
...ound-Dell-1536-1546-BIOS-MMCONFIG-bug-tha.patch | 101 -
...tting-custom-MAC-address-on-Asix-88178-de.patch | 45 -
...tting-custom-MAC-address-on-Asix-88772-de.patch | 53 -
...46-include-linux-crash_dump.h-needs-elf.h.patch | 54 -
...ix-BUG-caused-by-failure-to-check-skb-all.patch | 44 -
...x-rx-key-NULL-pointer-dereference-in-prom.patch | 52 -
...egression-in-channelwidth-switch-at-the-s.patch | 68 -
...em_cgroup_replace_page_cache-to-fix-LRU-i.patch | 179 -
.../0051-x86-Fix-mmap-random-address-range.patch | 47 -
.../0052-UBI-fix-nameless-volumes-handling.patch | 37 -
.../3.2.2/0053-UBI-fix-debugging-messages.patch | 42 -
.../3.2.2/0054-UBI-make-vid_hdr-non-static.patch | 36 -
.../3.2.2/0055-UBIFS-fix-debugging-messages.patch | 41 -
...UBIFS-make-debugging-messages-light-again.patch | 57 -
...ror-value-returned-by-several-bus-drivers.patch | 197 -
...8-mmc-core-Fix-voltage-select-in-DDR-mode.patch | 39 -
...ix-tuning-timer-incorrect-setting-when-su.patch | 39 -
.../0060-mmc-sd-Fix-SDR12-timing-regression.patch | 38 -
...2-ioctl-integer-overflow-in-video_usercop.patch | 54 -
...s-in-a-batch-should-not-be-accounted-as-a.patch | 71 -
...race-Fix-unregister-ftrace_ops-accounting.patch | 227 -
...eamline-config.pl-Simplify-backslash-line.patch | 68 -
...eamline-config.pl-Fix-parsing-Makefile-wi.patch | 98 -
...double-free-on-shutdown-of-nfsd-after-cha.patch | 60 -
...svcrpc-destroy-server-sockets-all-at-once.patch | 85 -
...-avoid-memory-corruption-on-pool-shutdown.patch | 156 -
.../3.2.2/0069-nfsd4-fix-lockowner-matching.patch | 59 -
...d-Fix-oops-when-parsing-a-0-length-export.patch | 82 -
...notify-don-t-BUG-in-fsnotify_destroy_mark.patch | 61 -
...Update-Boot-messages-for-SGI-UV2-platform.patch | 44 -
...t-Fix-handling-of-elf64-big-endian-object.patch | 46 -
...ix-integer-overflow-in-uvc_ioctl_ctrl_map.patch | 62 -
...cache-use-a-dispose-list-in-select_parent.patch | 172 -
.../0076-fix-shrink_dcache_parent-livelock.patch | 130 -
...fsblock-acquire-im_lock-in-_preload_range.patch | 64 -
...ock-don-t-spinlock-when-freeing-block_dev.patch | 46 -
.../0079-pnfsblock-limit-bio-page-count.patch | 51 -
...0211-revert-on-channel-work-optimisations.patch | 635 -
...-HID-hid-multitouch-add-another-eGalax-id.patch | 60 -
...touch-cleanup-with-eGalax-PID-definitions.patch | 112 -
...itouch-Add-egalax-ID-for-Acer-Iconia-W500.patch | 62 -
...ouch-add-support-for-the-MSI-Windpad-110W.patch | 49 -
...titouch-add-support-for-new-Hanvon-panels.patch | 63 -
...uch-add-support-of-Atmel-multitouch-panel.patch | 63 -
...0087-HID-multitouch-add-support-for-3M-32.patch | 45 -
...ltitouch-add-support-9-new-Xiroku-devices.patch | 117 -
...-fix-cputime-overflow-in-uptime_proc_show.patch | 49 -
...0090-block-add-and-use-scsi_blk_cmd_ioctl.patch | 166 -
...SCSI-passthrough-ioctls-on-partition-devi.patch | 166 -
...orward-ioctls-from-logical-volumes-to-the.patch | 90 -
...oc-clean-up-and-fix-proc-pid-mem-handling.patch | 271 -
...Use-LPIB-position-fix-for-Macbook-Pro-7-1.patch | 35 -
...oso-Xonar-DS-fix-polarity-of-front-output.patch | 37 -
...x-internal-microphone-on-Dell-Studio-16-X.patch | 36 -
...97-TOMOYO-Accept-000-as-a-valid-character.patch | 43 -
...8-intel-idle-Make-idle-driver-more-robust.patch | 53 -
.../3.2.2/0099-intel_idle-fix-API-misuse.patch | 56 -
.../0100-ACPI-Store-SRAT-table-revision.patch | 66 -
...e-SRAT-table-rev-to-use-8bit-or-32bit-PXM.patch | 50 -
...se-SRAT-table-rev-to-use-8bit-or-16-32bit.patch | 66 -
...back-the-call-to-acpi_os_validate_address.patch | 59 -
...essor-fix-acpi_get_cpuid-for-UP-processor.patch | 75 -
...ix-NULL-pointer-dereference-in-slave_dest.patch | 37 -
...t-Set-response-format-in-INQUIRY-response.patch | 44 -
...additional-sense-length-field-in-sense-da.patch | 177 -
...idate-the-mapped-core-over-suspend-resume.patch | 44 -
...-cx23885-dvb-check-if-dvb_attach-succeded.patch | 36 -
...ix-don-t-duplicate-xc4000-entry-for-radio.patch | 95 -
...umberspace-conflict-between-xc4000-and-pt.patch | 42 -
...-module-Fix-disabling-tracepoints-with-ta.patch | 50 -
...-new-UV2-hardware-by-using-native-UV2-bro.patch | 350 -
...ix-BAU-destination-timeout-initialization.patch | 66 -
.../3.2.2/0115-x86-UV2-Work-around-BAU-bug.patch | 570 -
...fix-interpretation-of-the-rx-KeyMiss-flag.patch | 61 -
...800pci-fix-spurious-interrupts-generation.patch | 86 -
...x-endian-conversion-issue-in-discard-code.patch | 45 -
...20t-modified-the-setting-of-transfer-rate.patch | 33 -
...e-fix-off-by-one-index-into-syscall-table.patch | 46 -
...default-wsize-when-unix-extensions-are-no.patch | 67 -
...2-kprobes-initialize-before-using-a-hlist.patch | 49 -
...oc-clear_refs-do-not-clear-reserved-pages.patch | 64 -
...-ptr-dereference-in-__count_immobile_page.patch | 91 -
.../3.2.2/0125-iwlagn-check-for-SMPS-mode.patch | 50 -
...945-fix-hw-passive-scan-on-radar-channels.patch | 60 -
...SHM_UNLOCK-fix-long-unpreemptible-section.patch | 186 -
...fix-Unevictable-pages-stranded-after-swap.patch | 342 -
.../3.2.2/0129-Linux-3.2.2.patch | 24 -
...-amd-Add-workaround-for-event-log-erratum.patch | 68 -
...XX-Add-missing-include-for-bcm63xx_gpio.h.patch | 52 -
...e-backup-intent-search-flags-during-searc.patch | 152 -
...loss-of-task-tk_status-after-rpc_delay-ca.patch | 63 -
...5-exofs-Fix-CRASH-on-very-early-IO-errors.patch | 49 -
...ops-while-traversing-open-file-list-try-4.patch | 141 -
...ltipath-starvation-when-scsi-host-is-busy.patch | 61 -
...fix-compilation-by-adding-gpiolib-support.patch | 210 -
...operly-handle-interlaced-bit-for-sdvo-dtd.patch | 78 -
...able-vdd-when-switching-off-the-eDP-panel.patch | 97 -
...dd-Clientron-E830-to-the-ignore-LVDS-list.patch | 37 -
...nore-LVDS-on-hp-t5745-and-hp-st5747-thin-.patch | 54 -
...5-no-lvds-quirk-for-HP-t5740e-Thin-Client.patch | 40 -
...wait-for-a-vblank-to-pass-after-tv-detect.patch | 66 -
...m-i915-Update-GEN6_RP_CONTROL-definitions.patch | 55 -
...ways-use-RPNSWREQ-for-turbo-change-reques.patch | 39 -
.../3.2.20/0017-solos-pci-Fix-DMA-support.patch | 51 -
...aze-Do-not-select-GENERIC_GPIO-by-default.patch | 42 -
...ilure-on-32-bit-systems-caused-by-branch-.patch | 49 -
...ix-TLB-fault-path-on-PA2.0-narrow-systems.patch | 142 -
...i-update-BT-traffic-load-states-correctly.patch | 43 -
...fi-do-not-use-shadow-registers-by-default.patch | 84 -
.../0023-wl1251-fix-oops-on-early-interrupt.patch | 69 -
...FS4ERR_SHARE_DENIED-into-an-EACCES-error-.patch | 37 -
.../3.2.20/0025-drm-radeon-fix-XFX-quirk.patch | 40 -
...-use-after-free-bug-when-ath_tx_setup_buf.patch | 92 -
...x-ADDBA-declined-after-suspend-with-wowla.patch | 53 -
...-overflow-in-vma-length-when-copying-mmap.patch | 81 -
...-all-swapped-back-pages-in-used-once-logi.patch | 65 -
...0-hugetlb-fix-resv_map-leak-in-error-path.patch | 101 -
...lloc.c-change-void-into-explict-vm_struct.patch | 63 -
...fix-faulty-initialization-in-vmalloc_init.patch | 51 -
.../3.2.20/0033-fix-scsi_wait_scan.patch | 44 -
.../0034-mm-fix-vma_resv_map-NULL-pointer.patch | 70 -
...en-Avoid-NULL-pointer-paravirt-references.patch | 38 -
...lub-fix-a-memory-leak-in-get_partial_node.patch | 86 -
...-force-ro-mount-if-ext4_setup_super-fails.patch | 45 -
...llow-hard-linked-directory-in-ext4_lookup.patch | 38 -
.../0039-mtd-nand-fix-scan_read_raw_oob.patch | 33 -
...crement-iversion-when-a-file-is-truncated.patch | 48 -
...tree-might-be-called-on-subtree-that-had-.patch | 37 -
...add-missing-save_error_info-to-ext4_error.patch | 36 -
...-ALSA-usb-audio-fix-rate_list-memory-leak.patch | 35 -
...dd-ext4_mb_unload_buddy-in-the-error-path.patch | 32 -
...-mb_groups-before-tearing-down-the-buddy_.patch | 53 -
...eon-fix-bank-information-in-tiling-config.patch | 84 -
...properly-program-gart-on-rv740-juniper-cy.patch | 79 -
...eon-fix-HD6790-HD6570-backend-programming.patch | 44 -
.../0049-drm-ttm-Fix-spinlock-imbalance.patch | 33 -
...-Fix-nasty-write-past-alloced-memory-area.patch | 31 -
...0051-mtd-of_parts-fix-breakage-in-Kconfig.patch | 37 -
.../0052-fec_mpc52xx-fix-timestamp-filtering.patch | 34 -
...tusb-Add-vendor-specific-ID-0a5c-21f3-for.patch | 44 -
...tusb-add-support-for-BCM20702A0-0a5c-21e6.patch | 48 -
...uetooth-btusb-Add-USB-device-ID-0a5c-21e8.patch | 47 -
...oth-btusb-typo-in-Broadcom-SoftSailing-id.patch | 66 -
...tusb-Add-vendor-specific-ID-0489-e042-for.patch | 43 -
...uetooth-Add-support-for-Atheros-13d3-3362.patch | 64 -
...luetooth-Add-support-for-AR3012-0cf3-e004.patch | 65 -
...-Add-Foxconn-Hon-Hai-IDs-for-btusb-module.patch | 71 -
...dd-support-for-Foxconn-Hon-Hai-AR5BBU22-0.patch | 94 -
.../0062-drm-i915-Disable-FBC-on-SandyBridge.patch | 34 -
...063-ipv4-Do-not-use-dead-fib_info-entries.patch | 36 -
...e-rcu-race-between-free_fib_info-and-ip_r.patch | 92 -
...rtable-s-dst-to-NULL-to-avoid-kernel-Oops.patch | 110 -
.../0066-ipv6-fix-incorrect-ipsec-fragment.patch | 181 -
...ps-in-L2TP-IP-sockets-for-connect-AF_UNSP.patch | 113 -
.../3.2.20/0068-r8169-missing-barriers.patch | 47 -
.../0069-r8169-fix-early-queue-wake-up.patch | 58 -
...8169-fix-unsigned-int-wraparound-with-TSO.patch | 82 -
...maintain-namespace-isolation-between-vlan.patch | 138 -
...072-sctp-check-cached-dst-before-using-it.patch | 88 -
...id-unnecessary-reallocations-in-__skb_cow.patch | 42 -
...et-hdr-len-into-account-for-esp-payload-s.patch | 100 -
...y-only-refresh-the-sysfs-files-when-perti.patch | 51 -
...-Use-O_DSYNC-by-default-for-FILEIO-backen.patch | 188 -
...mmu-amd-Cache-pdev-pointer-to-root-bridge.patch | 84 -
...-drm-radeon-kms-add-new-Palm-Sumo-PCI-ids.patch | 38 -
.../0079-drm-radeon-kms-add-new-BTC-PCI-ids.patch | 37 -
...ree-fix-tree-corruption-in-btree_get_prev.patch | 56 -
.../0081-kbuild-install-kernel-page-flags.h.patch | 62 -
...low-full-size-8021Q-frames-to-be-received.patch | 49 -
...-t-trash-state-flags-in-EXT4_IOC_SETFLAGS.patch | 54 -
...t4-don-t-set-i_flags-in-EXT4_IOC_SETFLAGS.patch | 34 -
...e-free-blocks-calculation-for-ext3-file-s.patch | 76 -
.../3.2.20/0086-Linux-3.2.20.patch | 24 -
...rk-the-ringbuffers-as-being-in-the-GTT-do.patch | 44 -
...m-i915-hold-forcewake-around-ring-hw-init.patch | 158 -
...pin-the-flip-target-if-we-fail-to-queue-t.patch | 166 -
...004-drm-i915-fix-up-ivb-plane-3-pageflips.patch | 93 -
...char-agp-add-another-Ironlake-host-bridge.patch | 46 -
.../0006-x86-uv-Fix-UV2-BAU-legacy-mode.patch | 53 -
...ix-kernel-panic-during-kernel-module-load.patch | 70 -
...-determine-a-value-for-display_info.bpc-i.patch | 81 -
...-default-to-8bpc-for-non-LVDS-panels-if-E.patch | 42 -
...-disp-fix-dithering-not-being-enabled-on-.patch | 38 -
...11-fuse-fix-stat-call-on-32-bit-platforms.patch | 103 -
...-Make-APIC-LVT-thresholding-interrupt-opt.patch | 146 -
...enable-CPU-topology-extensions-in-case-BI.patch | 60 -
...n-fam15h_power-Increase-output-resolution.patch | 56 -
...Fix-the-relax_domain_level-boot-parameter.patch | 65 -
...don-t-mess-up-the-SCD-when-removing-a-key.patch | 47 -
...-rng-fix-race-condition-leading-to-repeat.patch | 85 -
...i-intel-fix-unaligned-cbc-decrypt-for-x86.patch | 46 -
...setup-filter-APERFMPERF-cpuid-feature-out.patch | 58 -
....1-Fix-a-request-leak-on-the-back-channel.patch | 33 -
...ix-BUG-echo_skb-is-occupied-during-transm.patch | 70 -
...ix-an-interrupt-thrash-issue-with-c_can-d.patch | 73 -
...an-c_can-fix-race-condition-in-c_can_open.patch | 47 -
.../0024-ARM-i.MX53-Fix-PLL4-base-address.patch | 33 -
...dget-fix-crash-caused-by-dangling-pointer.patch | 50 -
...ean-up-remain-on-channel-on-interface-sto.patch | 80 -
...0027-rt2x00-use-atomic-variable-for-seqno.patch | 174 -
...iwlwifi-disable-WoWLAN-if-CONFIG_PM_SLEEP.patch | 44 -
...-Ensure-all-AIFnCLK-events-are-run-from-t.patch | 66 -
...-Apply-volume-updates-with-clocks-enabled.patch | 170 -
...egister-LEDs-if-mac80211-registration-fai.patch | 35 -
...cfg80211-fix-interface-combinations-check.patch | 81 -
...-unsafe-using-smp_processor_id-in-preempt.patch | 36 -
...et-sierra_net-device-IDs-for-Aircard-320U.patch | 70 -
...6-exit-coherency-when-shutting-down-a-cpu.patch | 98 -
...x21ads-Fix-overlapping-static-i-o-mapping.patch | 36 -
...nnecessary-delegation-returns-in-nfs4_do_.patch | 39 -
...-correct-supported-firmware-for-6035-and-.patch | 88 -
...able-the-buggy-chain-extension-feature-in.patch | 52 -
...40-ALSA-hda-Add-codec-no_jack_detect-flag.patch | 47 -
...dd-support-for-Uniwill-ECS-M31EI-notebook.patch | 32 -
...ppress-auto-mute-feature-on-some-machines.patch | 93 -
...d-another-jack-detection-suppression-for-.patch | 52 -
...A-HDA-Pin-fixup-for-Zotac-Z68-motherboard.patch | 56 -
...dm-Add-device-id-for-Huawei-3G-LTE-modems.patch | 68 -
...B-qcserial-Add-Sierra-Wireless-device-IDs.patch | 41 -
...o-Add-support-for-RT-Systems-USB-RTS01-se.patch | 48 -
...SB-serial-cp210x-add-Optris-MS-Pro-usb-id.patch | 29 -
...sierra-Add-support-for-Sierra-Wireless-Ai.patch | 35 -
...option-Updated-Huawei-K4605-has-better-id.patch | 36 -
...SB-mct_u232-Fix-incorrect-TIOCMSET-return.patch | 48 -
.../0052-USB-option-fix-port-data-abuse.patch | 81 -
.../3.2.21/0053-USB-option-fix-memory-leak.patch | 58 -
.../0054-USB-option-add-more-YUGA-device-ids.patch | 94 -
...rn-error-to-initiator-if-SET-TARGET-PORT-.patch | 55 -
...D3_DURING_SLEEP-flag-and-revert-151b61284.patch | 179 -
...Enforce-USB-driver-and-USB-serial-driver-.patch | 162 -
...x-invalid-loop-check-in-xhci_free_tt_info.patch | 89 -
...-Don-t-free-endpoints-in-xhci_mem_cleanup.patch | 94 -
...se-the-timeout-for-controller-save-restor.patch | 66 -
.../0061-usb-PS3-EHCI-QH-read-work-around.patch | 36 -
.../3.2.21/0062-USB-fix-PS3-EHCI-systems.patch | 37 -
...c-acm-fix-devices-not-unthrottled-on-open.patch | 43 -
...B-fix-gathering-of-interface-associations.patch | 88 -
...fix-shmem-swapping-when-more-than-8-areas.patch | 102 -
...add-some-additional-6xx-7xx-EG-register-i.patch | 121 -
.../3.2.21/0067-Linux-3.2.21.patch | 24 -
...iio-ad7606-Re-add-missing-scale-attribute.patch | 37 -
...erify-origin-of-netlink-connector-message.patch | 51 -
...mce-decoding-crash-after-edac-driver-unlo.patch | 166 -
...0004-hwrng-atmel-rng-fix-data-valid-check.patch | 72 -
.../0005-staging-r8712u-Add-new-USB-IDs.patch | 32 -
...esmc-Limit-key-length-in-warning-messages.patch | 43 -
..._atomic-fix-32bit-PAE-pmd-walk-vs-pmd_pop.patch | 218 -
...tomic64_read-in-pmd_read_atomic-for-32bit.patch | 125 -
...nsure-proper-cache-clearing-for-gc-inodes.patch | 71 -
...nish-any-pending-operations-on-the-frameb.patch | 130 -
...move-use-of-the-autoreported-ringbuffer-H.patch | 84 -
.../0012-e1000e-Disable-ASPM-L1-on-82574.patch | 41 -
...ve-special-case-for-82573-82574-ASPM-L1-d.patch | 43 -
...-the-fallback-non-IRQ-wait-in-ring-thrott.patch | 39 -
..._pstor-Fix-possible-panic-by-NULL-pointer.patch | 72 -
...Fix-buffers-staying-in-queued-state-after.patch | 45 -
...autodetection-support-for-USB-ID-2040-f5a.patch | 30 -
...n-t-return-stack-garbage-from-supports_rb.patch | 36 -
...-fbcon-using-nv_two_heads-is-not-a-good-i.patch | 43 -
...nstate-missing-mempool_free-in-cell_relea.patch | 55 -
...Fix-a-WARNING-on-suspend-resume-with-IBSS.patch | 75 -
...0211-fix-potential-deadlock-in-regulatory.patch | 144 -
.../0023-ath9k-Fix-softlockup-in-AR9485.patch | 68 -
...can-precedence-error-in-c_can_chip_config.patch | 38 -
...9k-fix-a-tx-rate-duration-calculation-bug.patch | 41 -
.../0026-batman-adv-fix-skb-data-assignment.patch | 42 -
...-Should-check-for-IS_ERR-clk-instead-of-N.patch | 33 -
...oid-possible-infinite-loop-in-ar9003_get_.patch | 61 -
...ove-log_event-debugfs-file-debugging-is-d.patch | 67 -
...AMSUNG-Fix-for-S3C2412-EBI-memory-mapping.patch | 36 -
...31-USB-option-add-id-for-Cellient-MEN-200.patch | 44 -
...rf-use-NR_CPUS-instead-or-nr_cpumask_bits.patch | 44 -
...factor-the-deferred-PM_IIR-handling-into-.patch | 107 -
.../0034-drm-i915-rip-out-the-PM_IIR-WARN.patch | 60 -
...x-eDP-blank-screen-after-S3-resume-on-HP-.patch | 46 -
...event-waiting-forever-on-asynchronous-sus.patch | 62 -
...ure-Rename-X86_FEATURE_DTS-to-X86_FEATURE.patch | 73 -
...w-merging-of-backports-for-serious-user-v.patch | 51 -
...ALSA-hda-Add-Realtek-ALC280-codec-support.patch | 34 -
...tion-Add-USB-ID-for-Novatel-Ovation-MC551.patch | 41 -
.../3.2.22/0041-USB-CP210x-Add-10-Device-IDs.patch | 61 -
...t-teardown-the-device-before-unregisterin.patch | 58 -
...-use-be32_to_cpup-to-handle-the-value-of-.patch | 44 -
...acpi_pad-fix-power_saving-thread-deadlock.patch | 66 -
...v-only-drop-packets-of-known-wifi-clients.patch | 55 -
.../3.2.22/0046-Linux-3.2.22.patch | 24 -
.../0001-splice-fix-racy-pipe-buffers-uses.patch | 298 -
.../3.2.23/0002-umem-fix-up-unplugging.patch | 86 -
...0003-mwifiex-fix-11n-rx-packet-drop-issue.patch | 88 -
...4-mwifiex-fix-WPS-eapol-handshake-failure.patch | 52 -
...-Prevent-multiple-buffer-overflows-in-NCI.patch | 52 -
...-ath9k-fix-dynamic-WEP-related-regression.patch | 80 -
...turn-from-rawsock_release-when-sk-is-NULL.patch | 107 -
.../0008-rtlwifi-rtl8192cu-New-USB-IDs.patch | 45 -
...ble-serialize_regmode-for-non-PCIE-AR9287.patch | 34 -
...rrect-behaviour-on-unrecognised-action-fr.patch | 48 -
...C-tlv320aic3x-Fix-codec-pll-configure-bug.patch | 62 -
...mon-Use-cpumask-iterator-to-avoid-warning.patch | 56 -
.../0013-powerpc-kvm-sldi-should-be-sld.patch | 40 -
...on-t-try-to-recovery-unmatched-and-unused.patch | 50 -
...-not-add-data_offset-before-call-to-is_ba.patch | 54 -
...-ops_run_io-inc-nr_pending-before-calling.patch | 45 -
...ix-failure-when-trying-to-repair-a-read-e.patch | 61 -
...ck-any-firmware-framebuffers-before-claim.patch | 118 -
...nt-data-fix-shadow_info_leak-on-dm_tm_des.patch | 37 -
...nt-data-handle-space-map-checker-creation.patch | 182 -
...nt-data-fix-allocation-failure-in-space-m.patch | 95 -
...da-Fix-power-map-regression-for-HP-dv6-co.patch | 49 -
...nge-CPU-ring-buffer-state-from-tracing_cp.patch | 56 -
...-wrong-return-values-in-add_virtual_intf-.patch | 93 -
...-instead-of-abusing-i-in-udf_load_logical.patch | 35 -
...un-away-loop-when-partition-table-length-.patch | 54 -
...0027-udf-Fortify-loading-of-sparing-table.patch | 134 -
.../0028-ARM-fix-rcu-stalls-on-SMP-platforms.patch | 68 -
...lidate-data_len-before-allocating-skb-in-.patch | 53 -
...e-CIPSO-options-correctly-when-NetLabel-i.patch | 80 -
...tp_eth-fix-kernel-panic-on-rmmod-l2tp_eth.patch | 43 -
.../0032-l2tp-fix-a-race-in-l2tp_ip_sendmsg.patch | 53 -
...fix-checksum-bit-management-on-some-chips.patch | 47 -
.../3.2.23/0034-be2net-fix-a-race-in-be_xmit.patch | 44 -
...-dummy-fix-rcu_sched-self-detected-stalls.patch | 49 -
.../0036-bonding-Fix-corrupted-queue_mapping.patch | 117 -
...thtool-allow-ETHTOOL_GSSET_INFO-for-users.patch | 36 -
.../0038-netpoll-fix-netpoll_send_udp-bugs.patch | 77 -
...pv6-proc-file-registration-to-end-of-init.patch | 126 -
...gn-rtnl_link_ops-to-bridge-devices-create.patch | 62 -
...elayed-directory-updates-during-log-repla.patch | 56 -
...erver-doesn-t-set-CAP_LARGE_READ_X-cap-de.patch | 60 -
...s2-clear-unaligned-io-flag-when-dio-fails.patch | 38 -
...ake-kiocb-private-NUll-in-init_sync_kiocb.patch | 39 -
.../0045-mtd-cafe_nand-fix-an-vs-mistake.patch | 39 -
...m-Hold-a-file-reference-in-madvise_remove.patch | 80 -
..._fc-Resolve-suspicious-RCU-usage-warnings.patch | 36 -
...O_PATH-file-descriptors-usable-for-fchdir.patch | 56 -
.../3.2.23/0049-Linux-3.2.23.patch | 24 -
...ung-laptop-make-the-dmi-check-less-strict.patch | 306 -
.../3.2.24/0002-raid5-delayed-stripe-fix.patch | 43 -
.../3.2.24/0003-tcp-drop-SYN-FIN-messages.patch | 36 -
...3-Apply-short-DMA-frag-workaround-to-5906.patch | 35 -
...0005-rtl8187-brightness_set-can-not-sleep.patch | 56 -
...s-ipw2x00-add-supported-cipher-suites-to-.patch | 102 -
...m-i915-do-not-enable-RC6p-on-Sandy-Bridge.patch | 47 -
...ix-operator-precedence-when-enabling-RC6p.patch | 34 -
...d-do-not-check-for-ancient-modutils-tools.patch | 47 -
...TERMEDIATE-but-not-AMPDU-only-when-tracin.patch | 45 -
...limit-the-state-manager-for-lock-reclaim-.patch | 37 -
...t4-Report-max_batch_time-option-correctly.patch | 32 -
...-fix-use-after-free-bug-in-quota-handling.patch | 464 -
...FSv4-Reduce-the-footprint-of-the-idmapper.patch | 69 -
...ther-reduce-the-footprint-of-the-idmapper.patch | 131 -
...ocopy-fix-offset-calculation-when-buildin.patch | 67 -
...tap-zerocopy-fix-truesize-underestimation.patch | 46 -
...ocopy-put-page-when-fail-to-get-all-reque.patch | 40 -
...ocopy-set-SKBTX_DEV_ZEROCOPY-only-when-sk.patch | 53 -
...ocopy-validate-vectors-before-building-sk.patch | 84 -
...21-KVM-Fix-buffer-overflow-in-kvm_set_irq.patch | 35 -
...e-unnecessary-warnings-about-ioctl-to-par.patch | 54 -
...epoll-clear-the-tfile_check_list-on-ELOOP.patch | 43 -
...ix-missing-iommu_shutdown-initialization-.patch | 45 -
...nitialize-dma_ops-for-hotplug-and-sriov-d.patch | 53 -
...-Add-support-for-root-hub-port-status-CAS.patch | 170 -
...994-Pay-attention-to-the-value-set-when-e.patch | 40 -
...Rewrite-and-fix-load-avg-computation-agai.patch | 462 -
.../3.2.24/0029-USB-option-add-ZTE-MF60.patch | 70 -
.../0030-USB-option-Add-MEDIATEK-product-ids.patch | 55 -
...B-cdc-wdm-fix-lockup-on-error-in-wdm_read.patch | 78 -
...d-nandsim-don-t-open-code-a-do_div-helper.patch | 94 -
...lease-semaphore-on-error-path-dvb_registe.patch | 33 -
...core-use-global-ID-to-register-hwspinlock.patch | 52 -
...taskfile-corruption-in-sas_ata_qc_fill_rt.patch | 116 -
...x-use-after-free-bug-in-RAID1-data-check-.patch | 58 -
...ix-crash-during-suspend-on-ASUS-computers.patch | 166 -
...lug-fix-invalid-memory-access-caused-by-s.patch | 114 -
...ULL-pointer-dereference-in-__ocfs2_change.patch | 43 -
...t-compaction-if-migration-page-cannot-be-.patch | 53 -
...-rtc-mxc.c-fix-irq-enabled-interrupts-war.patch | 74 -
...2-fs-ramfs-file-nommu-add-SetPageUptodate.patch | 49 -
...I-Fix-not-loading-acpi-cpufreq-driver-reg.patch | 53 -
...Preserve-configuration-register-bits-on-i.patch | 37 -
...SAMSUNG-fix-race-in-s3c_adc_start-for-ADC.patch | 42 -
...-block-fix-infinite-loop-in-__getblk_slow.patch | 116 -
...ly-user-triggerable-BUG-from-generic_setl.patch | 42 -
.../3.2.24/0048-NFC-Export-nfc.h-to-userland.patch | 32 -
...bernate-Hibernate-thaw-fixes-improvements.patch | 178 -
...eck-iface-combinations-only-when-iface-is.patch | 40 -
...51-intel_ips-blacklist-HP-ProBook-laptops.patch | 70 -
...c-fix-issue-of-transmit-queue-0-timed-out.patch | 42 -
...usb-fix-indexes-ordering-on-RX-queue-kick.patch | 51 -
...-iwlegacy-always-monitor-for-stuck-queues.patch | 65 -
...don-t-mess-up-the-SCD-when-removing-a-key.patch | 51 -
...Correct-link-check-logic-for-82571-serdes.patch | 39 -
...ix-crash-seen-with-aborts-and-large-reads.patch | 39 -
...-restart-open-if-it-already-found-a-partn.patch | 115 -
...n-up-returning-errors-in-PR-handling-code.patch | 55 -
...range-calculation-in-WRITE-SAME-emulation.patch | 41 -
...FIG_HIGHMEM-machines-limit-the-rsize-wsiz.patch | 82 -
...-update-the-inode-cache-with-the-results-.patch | 47 -
...-mm-fix-lost-kswapd-wakeup-in-kswapd_stop.patch | 84 -
...ash-when-stopping-md-array-races-with-clo.patch | 164 -
...ose-some-possible-races-on-write-errors-d.patch | 58 -
...roperly-align-the-.data.init_task-section.patch | 70 -
...067-UBIFS-fix-a-bug-in-empty-space-fix-up.patch | 67 -
...-crash-by-supporting-any-unaligned-RAID-I.patch | 211 -
...e-support-of-partial-IO-request-NFS-crash.patch | 50 -
...n-t-leak-objio_state-if-ore_write-read-fa.patch | 46 -
...x-__r4w_get_page-when-offset-is-beyond-i_.patch | 71 -
...ix-crash-with-mirror-recovery-and-discard.patch | 114 -
...raid1-set-discard_zeroes_data_unsupported.patch | 41 -
...0074-ntp-Fix-leap-second-hrtimer-livelock.patch | 349 -
...ntp-Correct-TAI-offset-during-leap-second.patch | 42 -
...-Fix-CLOCK_MONOTONIC-inconsistency-during.patch | 53 -
...77-time-Move-common-updates-to-a-function.patch | 99 -
...078-hrtimer-Provide-clock_was_set_delayed.patch | 118 -
...-Fix-leapsecond-triggered-load-spike-issu.patch | 66 -
...-Maintain-ktime_t-based-offsets-for-hrtim.patch | 104 -
...ove-lock-held-region-in-hrtimer_interrupt.patch | 61 -
...mekeeping-Provide-hrtimer-update-function.patch | 94 -
...ate-hrtimer-base-offsets-each-hrtimer_int.patch | 125 -
...-Add-missing-update-call-in-timekeeping_r.patch | 57 -
...rpc-Fix-wrong-divisor-in-usecs_to_cputime.patch | 87 -
.../0086-vhost-don-t-forget-to-schedule.patch | 60 -
...netif_napi_del-at-errpaths-and-at-driver-.patch | 43 -
.../0088-bnx2x-fix-checksum-validation.patch | 112 -
...0089-bnx2x-fix-panic-when-TX-ring-is-full.patch | 75 -
.../3.2.24/0090-net-remove-skb_orphan_try.patch | 135 -
...cpi_skip_timer_override-cover-all-source_.patch | 78 -
...-one-board-specific-WARN-when-ignoring-ti.patch | 42 -
...quirk-for-AMILO-PRO-V2030-to-ignore-the-t.patch | 50 -
...x-Dell-M6600-ACPI-reboot-regression-via-D.patch | 43 -
.../3.2.24/0095-ACPI-sysfs.c-strlen-fix.patch | 43 -
...acefully-refuse-miscdev-file-ops-on-inher.patch | 98 -
...Fix-lockdep-warning-in-miscdev-operations.patch | 105 -
...operly-check-for-O_RDONLY-flag-before-doi.patch | 45 -
...e-acpi_pm_device_sleep_state-follow-the-s.patch | 49 -
.../3.2.24/0100-ipheth-add-support-for-iPad.patch | 43 -
...tmmac-Fix-for-nfs-hang-on-multiple-reboot.patch | 56 -
...ugfs-and-network-namespaces-are-incompati.patch | 39 -
...age-proc-net-bonding-entries-from-the-net.patch | 61 -
...74-Add-support-for-2012-MacBook-Pro-Retin.patch | 67 -
...handle-all-variations-of-Mad-Catz-Beat-Pa.patch | 61 -
...add-signature-for-Razer-Onza-Tournament-E.patch | 40 -
...07-Input-xpad-add-Andamiro-Pump-It-Up-pad.patch | 33 -
...D-add-support-for-2012-MacBook-Pro-Retina.patch | 85 -
.../3.2.24/0109-Linux-3.2.24.patch | 24 -
...he-amount-of-work-done-when-updating-min_.patch | 88 -
...on-allow-compaction-to-isolate-dirty-page.patch | 436 -
...on-determine-if-dirty-pages-can-be-migrat.patch | 376 -
...ocator-do-not-call-direct-reclaim-for-THP.patch | 143 -
...on-make-isolate_lru_page-filter-aware-aga.patch | 117 -
...on-introduce-sync-light-migration-for-use.patch | 547 -
...hen-reclaiming-for-compaction-ensure-ther.patch | 120 -
...o-not-OOM-if-aborting-reclaim-to-start-co.patch | 71 -
...heck-if-reclaim-should-really-abort-even-.patch | 119 -
...0-vmscan-promote-shared-file-mapped-pages.patch | 82 -
...tivate-executable-pages-after-first-usage.patch | 56 -
...-consider-swap-space-when-deciding-whethe.patch | 50 -
...3-mm-test-PageSwapBacked-in-lumpy-reclaim.patch | 42 -
...onvert-global-reclaim-to-per-memcg-LRU-li.patch | 58 -
...educe-large-amounts-of-memory-barrier-rel.patch | 655 -
...fix-warning-in-alloc_huge_page-dequeue_hu.patch | 50 -
...x-NULL-dereferences-in-scsi_cmd_to_driver.patch | 71 -
...8-sched-nohz-Fix-rq-cpu_load-calculations.patch | 137 -
...hz-Fix-rq-cpu_load-calculations-some-more.patch | 147 -
...ace-Fix-assembly-trampoline-register-usag.patch | 50 -
...25821-Remove-bad-strcpy-to-read-only-char.patch | 53 -
.../0022-x86-Fix-boot-on-Twinhead-H12Y.patch | 54 -
.../0023-r8169-RxConfig-hack-for-the-8168evl.patch | 47 -
...ONFIG_HIGHMEM-is-set-serialize-the-read-w.patch | 124 -
...ess-rt2x00-rt2800usb-add-more-devices-ids.patch | 89 -
...2x00-rt2800usb-more-devices-were-identifi.patch | 79 -
...7-rt2800usb-2001-3c17-is-an-RT3370-device.patch | 41 -
...-gadget-Fix-g_ether-interface-link-status.patch | 61 -
...-char-to-ext4_count_free-instead-of-a-buf.patch | 88 -
...ble-function-tracing-during-suspend-resum.patch | 113 -
...de-microcode_core.c-simple_strtoul-cleanu.patch | 44 -
...de-Sanitize-per-cpu-microcode-reloading-i.patch | 92 -
...rrect-amount-of-data-copied-to-user-in-pr.patch | 45 -
...-overhead-calculation-used-by-ext4_statfs.patch | 294 -
...-table-length-check-to-avoid-possible-ove.patch | 36 -
...36-powerpc-Add-memory-attribute-for-mfmsr.patch | 34 -
...037-mwifiex-correction-in-mcs-index-check.patch | 41 -
...Ignore-ZTE-Vodafone-K3570-71-net-interfac.patch | 37 -
.../3.2.25/0039-USB-option-add-ZTE-MF821D.patch | 36 -
...generation-of-LOGICAL-BLOCK-ADDRESS-OUT-O.patch | 64 -
...get-Add-range-checking-to-UNMAP-emulation.patch | 46 -
...reading-of-data-length-fields-for-UNMAP-c.patch | 51 -
...possible-integer-underflow-in-UNMAP-emula.patch | 75 -
...k-number-of-unmap-descriptors-against-our.patch | 38 -
...idle-fix-sequence-handling-vs-cpu-hotplug.patch | 80 -
...l8192de-Fix-phy-based-version-calculation.patch | 61 -
...erform-cpu-down-operations-from-low-prior.patch | 120 -
...8-ALSA-hda-Add-support-for-Realtek-ALC282.patch | 34 -
.../0049-iommu-amd-Fix-hotplug-with-iommu-pt.patch | 48 -
...Try-harder-to-avoid-HW-cursor-ending-on-a.patch | 50 -
...urn-on-PIN_OUT-from-hdmi-playback-prepare.patch | 66 -
.../3.2.25/0052-block-add-blk_queue_dead.patch | 140 -
...x-device-removal-NULL-pointer-dereference.patch | 163 -
...-dangling-pointer-in-scsi_requeue_command.patch | 57 -
.../0055-fix-hot-unplug-vs-async-scan-race.patch | 122 -
...up-scsi_schedule_eh-vs-scsi_restart_opera.patch | 62 -
.../3.2.25/0057-libsas-continue-revalidation.patch | 49 -
...sas_discover_devices-return-code-handling.patch | 128 -
...t-Drop-bogus-struct-file-usage-for-iSCSI-.patch | 230 -
...-sdhci-pci-CaFe-has-broken-card-detection.patch | 42 -
...-t-let-i_reserved_meta_blocks-go-negative.patch | 55 -
...xt4_calc_metadata_amount-if-we-fail-to-cl.patch | 93 -
...ix-_PRE-and-_POST-events-for-DAPM-perform.patch | 46 -
...s-fix-checking-of-fcntl_setlease-argument.patch | 57 -
...vent-OOPS-on-some-boxes-due-to-missing-ch.patch | 45 -
...066-drm-radeon-fix-bo-creation-retry-path.patch | 47 -
...rm-radeon-fix-non-revealent-error-message.patch | 70 -
...fix-hotplug-of-DP-to-DVI-HDMI-passive-ada.patch | 69 -
...on-hotplug-force-link-training-to-happen-.patch | 51 -
...the-ordered-free-operation-without-any-lo.patch | 48 -
...-alignment-requirements-on-src-and-dst-ad.patch | 748 -
...g-argument-of-migrate_huge_pages-in-soft_.patch | 58 -
.../3.2.25/0073-Linux-3.2.25.patch | 24 -
...y-code-by-removing-a-SMP-ifdefs-from-stru.patch | 273 -
.../3.2.26/0002-Linux-3.2.26.patch | 24 -
.../3.2.27/0001-sched-Fix-race-in-task_group.patch | 158 -
...nup-disk-queue-before-caling-put_disk-if-.patch | 51 -
...ocal-pages-as-FOREIGN-in-the-m2p_override.patch | 156 -
...04-lirc_sir-make-device-registration-work.patch | 131 -
...te-references-to-older-2.6-versions-for-3.patch | 62 -
...add-dock-support-for-Thinkpad-X230-Tablet.patch | 107 -
...x-interface-combinations-check-for-ADHOC-.patch | 67 -
...68k-Correct-the-Atari-ALLOWINT-definition.patch | 97 -
.../0009-ene_ir-Fix-driver-initialisation.patch | 47 -
...r-filesystems-are-normally-case-sensitive.patch | 32 -
...arch_get_random_int-instead-of-cycle-coun.patch | 69 -
...arch-specific-RNG-to-initialize-the-entro.patch | 49 -
...ust-the-number-of-loops-when-initializing.patch | 37 -
...-add_interrupt_randomness-do-something-sa.patch | 288 -
...lockless-techniques-in-the-interrupt-path.patch | 245 -
...om-create-add_device_randomness-interface.patch | 93 -
...B-device-information-to-the-dev-random-dr.patch | 49 -
...v-random-with-the-MAC-address-when-regist.patch | 60 -
...the-arch-specific-rng-in-xfer_secondary_p.patch | 91 -
...om-add-new-get_random_bytes_arch-function.patch | 95 -
...Feed-the-write-counter-into-device_add_ra.patch | 75 -
...Feed-the-device-UUID-into-device_add_rand.patch | 54 -
...-Ensure-there-are-enough-BCLKs-for-four-c.patch | 33 -
...for-pi_mutex-on-fault-in-futex_wait_reque.patch | 38 -
...ex-Fix-bug-in-WARN_ON-for-NULL-q.pi_state.patch | 36 -
...bid-uaddr-uaddr2-in-futex_wait_requeue_pi.patch | 59 -
...deo-smscufx-fix-line-counting-in-fb_write.patch | 36 -
...tics-handle-out-of-bounds-values-from-the.patch | 89 -
...x-invalid-D3-of-headphone-DAC-on-VT202x-c.patch | 60 -
...1-Fix-missing-initialization-of-irq-field.patch | 34 -
...ssing-break-resulting-in-incorrect-select.patch | 36 -
...ngrade-page-table-after-fork-of-a-31-bit-.patch | 140 -
...OMIC_INIT-and-ATOMIC64_INIT-to-drop-the-c.patch | 73 -
.../0034-dm-thin-reduce-endio_hook-pool-size.patch | 37 -
...-memory-leak-in-process_prepared_mapping-.patch | 53 -
...in-architectural-randomness-in-extract_bu.patch | 151 -
...e-ASUS_WMI_METHODID_DSTS2-as-default-DSTS.patch | 44 -
...tio-blk-Use-block-layer-provided-spinlock.patch | 103 -
...x-fault-handling-for-page-table-walk-case.patch | 72 -
...mmit-in-releasepage-if-we-re-freeing-memo.patch | 182 -
...on-t-abort-a-resync-on-the-first-badblock.patch | 48 -
...rly_ioremap-early_iounmap-to-access-pcdp-.patch | 73 -
...f.c-kptr_restrict-fix-pK-error-in-SysRq-s.patch | 48 -
...deadlock-issue-between-chcp-and-thaw-ioct.patch | 144 -
...rn-negative-value-in-case-rpcbind-client-.patch | 45 -
...mutex-use-generic-xchg-based-implementati.patch | 165 -
...vfp-only-clear-vfp-state-for-current-cpu-.patch | 36 -
...vfp-Always-save-VFP-state-in-vfp_pm_suspe.patch | 58 -
...errata-extend-workaround-for-erratum-7207.patch | 62 -
...-undefined-instruction-exception-handling.patch | 335 -
...gp-increase-the-controller-wait-time-to-c.patch | 38 -
...ASoC-wm8962-Allow-VMID-time-to-fully-ramp.patch | 32 -
...ge_alloc.c-remove-pageblock_default_order.patch | 98 -
...geblock_order-before-it-s-used-by-sparsem.patch | 101 -
...fier-fix-freed-page-still-mapped-in-secon.patch | 137 -
...s-close-race-during-teardown-of-hugetlbfs.patch | 340 -
...A-snd-usb-fix-clock-source-validity-index.patch | 40 -
...pport-dock-on-Lenovo-Thinkpad-T530-with-A.patch | 34 -
...-ore-Fix-out-of-bounds-access-in-_ios_obj.patch | 75 -
...ys_atomic_cmpxchg_32-work-on-classic-m68k.patch | 41 -
...efer-wide-slow-to-fast-narrow-in-DP-confi.patch | 41 -
...support-for-BUFFALO-WLI-UC-GNM2-to-rt2800.patch | 32 -
...r-fix-sleeping-in-invalid-context-warning.patch | 115 -
...p_monitor-Make-updating-data-skb-smp-safe.patch | 187 -
...r-prevent-init-path-from-scheduling-on-th.patch | 93 -
...drop_monitor-dont-sleep-in-atomic-context.patch | 244 -
...h_uart-Fix-missing-break-for-16-byte-fifo.patch | 33 -
...uart-Fix-rx-error-interrupt-setting-issue.patch | 85 -
.../0069-pch_uart-Fix-parity-setting-issue.patch | 35 -
.../3.2.27/0070-Linux-3.2.27.patch | 24 -
.../0001-bnx2-Fix-bug-in-bnx2_free_tx_skbs.patch | 47 -
.../0002-sch_sfb-Fix-missing-NULL-check.patch | 33 -
...st-corruption-resulting-from-freeing-an-a.patch | 188 -
...04-caif-Fix-access-to-freed-pernet-memory.patch | 52 -
...-follow-a-NULL-pointer-when-setsockopt-is.patch | 95 -
.../3.2.28/0006-caif-fix-NULL-pointer-check.patch | 33 -
.../0007-wanmain-comparing-array-with-NULL.patch | 83 -
...Add-TCP_USER_TIMEOUT-negative-value-check.patch | 39 -
...B-kaweth.c-use-GFP_ATOMIC-under-spin_lock.patch | 40 -
...etlink-IFF_PROMISC-and-IFF_ALLMULTI-handl.patch | 60 -
...-DMA-to-userspace-only-if-there-is-a-task.patch | 57 -
.../0012-net-tun-fix-ioctl-based-info-leaks.patch | 41 -
...ropped-DMA-receive-enable-back-in-for-WoL.patch | 50 -
...8192cu-Change-buffer-allocation-for-synch.patch | 77 -
...-overflow-in-sector-calculations-in-hfspl.patch | 40 -
...xup-seqno-allocation-logic-for-lazy_reque.patch | 182 -
...ertise-CPU_BASED_RDPMC_EXITING-for-nested.patch | 37 -
.../0018-mac80211-cancel-mesh-path-timer.patch | 32 -
...0019-ath9k-Add-PID-VID-support-for-AR1111.patch | 65 -
...ove-MMAP_MIN_ADDR-setting-from-mxs_defcon.patch | 52 -
...A-hda-add-dock-support-for-Thinkpad-T430s.patch | 34 -
...ocess-pending-events-when-unregistering-n.patch | 72 -
...-NULL-pointer-dereference-in-config_lna_g.patch | 39 -
...able-greenfield-transmissions-as-a-workar.patch | 53 -
...SA-hda-add-dock-support-for-Thinkpad-X230.patch | 32 -
...00e-NIC-goes-up-and-immediately-goes-down.patch | 41 -
...LSA-hda-remove-quirk-for-Dell-Vostro-1015.patch | 32 -
...x-double-quirk-for-Quanta-FL1-Lenovo-Idea.patch | 43 -
...a-remove-irq_to_gpio-from-ezx-pcap-driver.patch | 57 -
...ut-eeti_ts-pass-gpio-value-instead-of-IRQ.patch | 150 -
...drm-i915-Add-wait_for-in-init_ring_common.patch | 41 -
...15-correctly-order-the-ring-init-sequence.patch | 49 -
...-fix-compat-wrappers-for-process_vm-syste.patch | 40 -
...-s390-compat-fix-mmap-compat-system-calls.patch | 54 -
...n-fix-bank-tiling-parameters-on-evergreen.patch | 44 -
...deon-fix-bank-tiling-parameters-on-cayman.patch | 45 -
...do-not-reenable-crtc-after-moving-vram-st.patch | 178 -
.../3.2.28/0038-Linux-3.2.28.patch | 24 -
...x-buffer-alignment-regression-with-Nvidia.patch | 62 -
...x-silent-outputs-from-docking-station-jac.patch | 64 -
...tfs-Sanitize-write-counts-of-dev-ecryptfs.patch | 103 -
...tfs-Improve-metadata-read-failure-logging.patch | 58 -
...0005-eCryptfs-Make-truncate-path-killable.patch | 71 -
...6-eCryptfs-Check-inode-changes-in-setattr.patch | 122 -
...x-oops-when-printing-debug-info-in-extent.patch | 103 -
...adeon-kms-Add-an-MSI-quirk-for-Dell-RS690.patch | 38 -
...kms-move-panel-mode-setup-into-encoder-mo.patch | 130 -
...kms-rework-modeset-sequence-for-DCE41-and.patch | 87 -
.../0011-drm-Fix-authentication-kernel-crash.patch | 91 -
...sing-xfs_iunlock-on-error-recovery-path-i.patch | 38 -
...M5100-register-map-cache-only-when-going-.patch | 32 -
...e-register-synchronisation-for-low-freque.patch | 66 -
...go-through-cache-when-applying-WM5100-rev.patch | 41 -
...-wm8996-Call-_POST_PMU-callback-for-CPVDD.patch | 33 -
...brcmsmac-fix-tx-queue-flush-infinite-loop.patch | 53 -
...c80211-fix-work-removal-on-deauth-request.patch | 111 -
...jbd-Issue-cache-flush-after-checkpointing.patch | 118 -
...12-make-it-work-undo-percpu-message-sched.patch | 78 -
...-sha512-reduce-stack-usage-to-safe-number.patch | 129 -
...-tpm_tis-add-delay-after-aborting-command.patch | 37 -
.../0023-x86-uv-Fix-uninitialized-spinlocks.patch | 58 -
...4-x86-uv-Fix-uv_gpa_to_soc_phys_ram-shift.patch | 41 -
...de_amd-Add-support-for-CPU-family-specifi.patch | 75 -
...sembler-constraint-to-prevent-overeager-g.patch | 172 -
...t-mute-led-polarity-for-laptops-with-bugg.patch | 43 -
...8-ALSA-hda-Fix-silent-output-on-ASUS-A6Rp.patch | 55 -
...hda-Fix-silent-output-on-Haier-W18-laptop.patch | 34 -
...per-over-missed-irq-issues-with-force-wak.patch | 126 -
...15-sdvo-always-set-positive-sync-polarity.patch | 52 -
...-enable-gen7-RC6-and-GPU-turbo-after-resu.patch | 43 -
...-at91-fix-at91rm9200-soc-subtype-handling.patch | 46 -
.../0034-mach-ux500-enable-ARM-errata-764369.patch | 31 -
...proc-v7.S-remove-HARVARD_CACHE-preprocess.patch | 53 -
...ain-bitterly-about-attempts-to-remove-fil.patch | 68 -
...e-struct-xen_spinlock-to-always-fit-in-ar.patch | 103 -
...oved-redundant-calling-of-_scsih_probe_de.patch | 96 -
.../0039-USB-option-Add-LG-docomo-L-02C.patch | 41 -
...di_sio-fix-TIOCSSERIAL-baud_base-handling.patch | 41 -
.../0041-USB-ftdi_sio-fix-initial-baud-rate.patch | 49 -
...sio-add-PID-for-TI-XDS100v2-BeagleBone-A3.patch | 50 -
.../0043-USB-serial-ftdi-additional-IDs.patch | 49 -
.../0044-USB-ftdi_sio-Add-more-identifiers.patch | 48 -
...-updating-desc-length-must-be-protected-b.patch | 37 -
...-use-two-mutexes-to-allow-simultaneous-re.patch | 178 -
...-add-more-Pantech-UML190-and-UML290-ports.patch | 43 -
...dwc3-ep0-tidy-up-Pending-Request-handling.patch | 54 -
...ake-edge_remove_sysfs_attrs-the-port_remo.patch | 60 -
...0050-TTY-fix-UV-serial-console-regression.patch | 72 -
...-pl011-lock-console-writes-against-interr.patch | 67 -
.../3.2.3/0052-jsm-Fixed-EEH-recovery-error.patch | 53 -
...053-iwlwifi-fix-PCI-E-transport-inta-race.patch | 53 -
...assignment-in-vmw_framebuffer_create_hand.patch | 34 -
...tek-cr-fix-autopm-scheduling-while-atomic.patch | 36 -
.../3.2.3/0056-USB-usbsevseg-fix-max-length.patch | 34 -
...t-langwell-don-t-call-gadget-s-disconnect.patch | 94 -
.../3.2.3/0058-usb-gadget-storage-endian-fix.patch | 43 -
...s-usb-host-ehci-fsl.c-add-missing-iounmap.patch | 54 -
...xhci-Fix-USB-3.0-device-restart-on-resume.patch | 51 -
...p-isoc-transfer-ring-when-TD-length-misma.patch | 40 -
.../0062-usb-musb-davinci-fix-build-breakage.patch | 41 -
...71805f-Fix-clamping-of-temperature-limits.patch | 43 -
...7ehf-Disable-setting-DC-mode-for-pwm2-pwm.patch | 46 -
.../0065-hwmon-sht15-fix-bad-error-code.patch | 40 -
...-call-wake_up_all-to-allow-driver-to-shut.patch | 45 -
...-better-allocate-a-buffer-that-is-at-leas.patch | 38 -
...-Avoid-hanging-on-interface-with-no-USB_C.patch | 53 -
.../3.2.3/0069-netns-fix-net_alloc_generic.patch | 120 -
...conspicously-if-someone-uses-net_generic-.patch | 42 -
...f-Register-properly-as-a-pernet-subsystem.patch | 117 -
...fix-EPOLLET-regression-for-stream-sockets.patch | 96 -
...-fix-enslaving-in-alb-mode-when-link-down.patch | 116 -
...tp_ip-fix-possible-oops-on-packet-receive.patch | 73 -
...075-macvlan-fix-a-possible-use-after-free.patch | 34 -
...76-net-bpf_jit-fix-divide-by-0-generation.patch | 129 -
...ntroduce-missing-rcu_assign_pointer-calls.patch | 703 -
...ake-rds_sock_lock-BH-rather-than-IRQ-safe.patch | 119 -
..._trim_head-to-adjust-segment-count-with-s.patch | 61 -
...ng-remote-adress-for-md5-lookup-in-rst-pa.patch | 49 -
...CP210x-Added-USB-ID-for-the-Link-Instrume.patch | 32 -
...USB-cp210x-call-generic-open-last-in-open.patch | 47 -
...0083-USB-cp210x-fix-CP2104-baudrate-usage.patch | 78 -
...84-USB-cp210x-do-not-map-baud-rates-to-B0.patch | 34 -
...5-USB-cp210x-fix-up-set_termios-variables.patch | 44 -
...clean-up-refactor-and-document-speed-hand.patch | 121 -
...7-USB-cp210x-initialise-baud-rate-at-open.patch | 35 -
...cp210x-allow-more-baud-rates-above-1Mbaud.patch | 48 -
...ux500-no-MMC_CAP_SD_HIGHSPEED-on-Snowball.patch | 34 -
.../3.2.3/0090-Linux-3.2.3.patch | 24 -
...-Mark-WM5100-register-map-cache-only-when.patch | 32 -
...-Don-t-go-through-cache-when-applying-WM5.patch | 39 -
.../3.2.4/0003-Linux-3.2.4.patch | 24 -
.../3.2.5/0001-PCI-Rework-ASPM-disable-code.patch | 236 -
.../3.2.5/0002-Linux-3.2.5.patch | 24 -
...d-fix-pipeline-break-caused-by-block-plug.patch | 99 -
...x-the-logic-to-detect-VIA-analog-low-curr.patch | 35 -
...0003-ALSA-HDA-Remove-quirk-for-Asus-N53Jq.patch | 35 -
...ply-0x0f-VREF-fix-to-all-ASUS-laptops-wit.patch | 117 -
...x-calling-cs_automic-twice-for-Cirrus-cod.patch | 45 -
...low-analog-low-current-mode-when-dynamic-.patch | 105 -
...x-duplicated-output-to-more-than-one-code.patch | 36 -
...sable-dynamic-power-control-for-VIA-as-de.patch | 34 -
...s-Enable-line-out-VMID-buffer-for-single-.patch | 57 -
...ubs-fix-wrong-bits-for-LINEOUT2-N-P-mixer.patch | 32 -
...vfp-flush-thread-hwstate-before-restoring.patch | 60 -
...1-vfp-fix-ptrace-regset-modification-race.patch | 68 -
...vfp-flush-thread-hwstate-before-copying-p.patch | 41 -
...0014-ARM-OMAP2-GPMC-fix-device-size-setup.patch | 43 -
...-vt-vt_ioctl.c-fix-KDFONTOP-32bit-compati.patch | 44 -
...016-proc-mem_release-should-check-mm-NULL.patch | 34 -
.../0017-proc-unify-mem_read-and-mem_write.patch | 148 -
...ure-mem_open-doesn-t-pin-the-target-s-mem.patch | 79 -
...ohci-add-reset-packet-quirk-for-SB-Audigy.patch | 43 -
...ire-ohci-disable-MSI-on-Ricoh-controllers.patch | 43 -
...s-SMP-vendor-specific-attribute-MADs-to-f.patch | 90 -
...ix-kernel-panic-by-always-initializing-qp.patch | 68 -
...-a-memory-leak-in-function-pre_handler_kr.patch | 52 -
...nd-bugfix-reset-the-BCH-module-when-it-is.patch | 72 -
...atmel_nand-optimize-read-write-buffer-fun.patch | 113 -
...-at_hdmac-bugfix-for-enabling-channel-irq.patch | 92 -
...xip.c-fix-race-condition-in-xip_file_faul.patch | 58 -
...on-check-pfn_valid-when-entering-a-new-MA.patch | 112 -
...e-Fix-s2disk-regression-related-to-freezi.patch | 100 -
...S-CPU-C-state-breakage-with-PM-Qos-change.patch | 57 -
...Set-DESKTOP_HEIGHT-register-to-the-frameb.patch | 55 -
...-drm-nouveau-gem-fix-fence_sync-race-oops.patch | 108 -
...kms-disable-output-polling-when-suspended.patch | 44 -
...034-drm-radeon-kms-fix-TRAVIS-panel-setup.patch | 53 -
...x-task-stack-corruption-under-__ARCH_WANT.patch | 94 -
...e-Thaw-processes-in-SNAPSHOT_CREATE_IMAGE.patch | 83 -
...e-Thaw-kernel-threads-in-SNAPSHOT_CREATE_.patch | 48 -
.../0038-8139cp-fix-missing-napi_gro_flush.patch | 33 -
...ID-buffer-as-uptodate-before-marking-it-d.patch | 40 -
...MI-hot-remove-notification-to-audio-drive.patch | 53 -
...splayPort-hot-remove-notification-to-audi.patch | 40 -
.../0042-drm-i915-check-ACTHD-of-all-rings.patch | 92 -
.../0043-drm-i915-Fix-TV-Out-refresh-rate.patch | 98 -
.../3.2.6/0044-drm-i915-handle-3rd-pipe.patch | 37 -
...nvert-force_wake_get-to-func-pointer-in-t.patch | 42 -
...otect-force_wake_-get-put-with-the-gt_loc.patch | 163 -
...finite-loop-due-to-overflow-in-ecryptfs_w.patch | 51 -
...w83627ehf-Fix-number-of-fans-for-NCT6776F.patch | 55 -
...ps-in-session-setup-code-for-null-user-mo.patch | 47 -
...-fix-usage-of-CONTRAST_CTR-in-suspend-res.patch | 36 -
...-Exclude-TAINT_FIRMWARE_WORKAROUND-from-d.patch | 56 -
...-Exclude-TAINT_OOT_MODULE-from-disabling-.patch | 56 -
...t-Fix-reject-release-handling-in-iscsit_f.patch | 79 -
...t-Fix-double-list_add-with-iscsit_alloc_b.patch | 35 -
...t-Fix-discovery-with-INADDR_ANY-and-IN6AD.patch | 176 -
...s-Fix-routing-of-input-PGAs-to-line-outpu.patch | 46 -
...s-Correct-line-input-to-line-output-2-pat.patch | 35 -
...ASoC-wm8962-Fix-word-length-configuration.patch | 38 -
...-Enabling-VMID-should-take-a-runtime-PM-r.patch | 42 -
...ASoC-wm8994-Fix-typo-in-VMID-ramp-setting.patch | 31 -
...socket-refcount-decrementing-on-each-resu.patch | 179 -
...-virtuoso-fix-exchanged-L-R-volumes-of-au.patch | 67 -
...-iommu-amd-Work-around-broken-IVRS-tables.patch | 37 -
...msm-Fix-error-handling-in-msm_iommu_unmap.patch | 62 -
...on-check-for-overlapping-nodes-during-iso.patch | 111 -
.../0066-mm-fix-UP-THP-spin_is_locked-BUGs.patch | 63 -
...correct-preempted-registration-sense-code.patch | 59 -
...w-PERSISTENT-RESERVE-IN-for-non-reservati.patch | 35 -
...ect-sense-key-for-INVALID-FIELD-IN-PARAME.patch | 69 -
...workaround-for-zero-length-control-CDB-ha.patch | 62 -
...rn-correct-ASC-for-unimplemented-VPD-page.patch | 37 -
...-INQUIRY-commands-with-EVPD-0-but-PAGE-CO.patch | 43 -
...73-Staging-asus_oled-fix-image-processing.patch | 59 -
...asus_oled-fix-NULL-ptr-crash-on-unloading.patch | 59 -
...075-staging-r8712u-Add-new-Sitecom-UsB-ID.patch | 32 -
...-r8712u-Use-asynchronous-firmware-loading.patch | 285 -
...h9.h-usb_endpoint_maxp-uses-__le16_to_cpu.patch | 37 -
...zero-fix-bug-in-loopback-autoresume-handl.patch | 36 -
...p-PCI-USB-quirk-handling-for-Netlogic-XLP.patch | 45 -
...al-add-new-PID-number-0xa951-to-the-ftdi-.patch | 45 -
...B-add-new-zte-3g-dongle-s-pid-to-option.c.patch | 181 -
...SWIZ_BITS-to-8-to-reduce-tmem-bucket-lock.patch | 46 -
.../3.2.6/0083-zcache-fix-deadlock-condition.patch | 55 -
...ore-Add-missing-spin_lock_init-for-irq_lo.patch | 33 -
...-Avoid-Pstate-MSR-accesses-on-systems-sup.patch | 60 -
.../0086-powernow-k8-Fix-indexing-issue.patch | 86 -
.../3.2.6/0087-Linux-3.2.6.patch | 24 -
.../3.2.7/0001-ixgbe-fix-vf-lookup.patch | 42 -
.../3.2.7/0002-igb-fix-vf-lookup.patch | 42 -
...Fix-an-issue-where-perf-report-fails-to-s.patch | 64 -
...Fix-perf-stack-to-non-executable-on-x86_6.patch | 55 -
...rce-explicit-bpp-selection-for-intel_dp_l.patch | 99 -
...006-drm-i915-no-lvds-quirk-for-AOpen-MP45.patch | 40 -
...-kernel-panic-during-driver-initilization.patch | 96 -
...ath9k-fix-a-WEP-crypto-related-regression.patch | 45 -
...ath9k_hw-fix-a-RTS-CTS-timeout-regression.patch | 52 -
...75375s-Fix-bit-shifting-in-f75375_write16.patch | 33 -
.../0011-net-enable-TC35815-for-MIPS-again.patch | 41 -
...ion-lower-PROP_MAX_SHIFT-to-32-on-64-bit-.patch | 48 -
...ay-prevent-integer-overflow-in-relay_open.patch | 50 -
...meout-a-single-frame-in-the-rx-reorder-bu.patch | 36 -
...ix-NULL-bdi-dev-in-trace-writeback_single.patch | 72 -
...ix-dereferencing-NULL-bdi-dev-on-trace_wr.patch | 44 -
...5s-Fix-automatic-pwm-mode-setting-for-F75.patch | 34 -
...-request-oplock-when-doing-open-on-lookup.patch | 32 -
...return-error-from-standard_receive3-after.patch | 50 -
...-sha512-Use-binary-and-instead-of-modulus.patch | 42 -
...1-crypto-sha512-Avoid-stack-bloat-on-i386.patch | 113 -
...-fix-wakeup-timer-races-with-bdi_unregist.patch | 95 -
...x0-Fix-default-inaudible-sound-on-Gateway.patch | 42 -
...x-initialization-of-secondary-capture-sou.patch | 41 -
...x-silent-speaker-output-on-Acer-Aspire-69.patch | 78 -
...ci-save-and-restore-sdioirq-when-soft-res.patch | 42 -
..._mmc-Fix-PIO-mode-with-support-of-highmem.patch | 353 -
...o-not-remap-pirqs-onto-evtchns-if-xen_hav.patch | 31 -
.../0029-crypto-sha512-use-standard-ror64.patch | 90 -
.../3.2.7/0030-Linux-3.2.7.patch | 24 -
...-math_state_restore-isn-t-called-from-asm.patch | 53 -
...387-make-irq_fpu_usable-tests-more-robust.patch | 131 -
.../0003-i387-fix-sense-of-sanity-check.patch | 37 -
...6-64-preemption-unsafe-user-stack-save-re.patch | 163 -
...S_USEDFPU-clearing-out-of-__save_init_fpu.patch | 64 -
...ever-touch-TS_USEDFPU-directly-use-helper.patch | 228 -
...not-preload-FPU-state-at-task-switch-time.patch | 202 -
...MD-K7-K8-fpu-fxsave-fxrstor-workaround-fr.patch | 133 -
...S_USEDFPU-flag-from-thread_info-to-task_s.patch | 305 -
...roduce-FPU-state-preloading-at-context-sw.patch | 353 -
.../3.2.8/0011-Linux-3.2.8.patch | 24 -
.../0001-Security-tomoyo-add-.gitignore-file.patch | 32 -
...f-power_pmu_start-restores-incorrect-valu.patch | 58 -
...1-USB-AT91-gadget-registration-for-module.patch | 78 -
...04-drm-radeon-kms-fix-MSI-re-arm-on-rv370.patch | 54 -
...5-PCI-workaround-hard-wired-bus-number-V2.patch | 44 -
.../0006-mac80211-Fix-a-rwlock-bad-magic-bug.patch | 91 -
.../3.2.9/0007-ipheth-Add-iPhone-4S.patch | 43 -
...cache-defaults-initialization-from-raw-ca.patch | 53 -
...py-up-lower-inode-attrs-after-setting-low.patch | 43 -
...t-ktime-to-tod-clock-comparator-conversio.patch | 44 -
...11-vfs-fix-d_inode_lookup-dentry-ref-leak.patch | 35 -
...PL330-fix-null-pointer-dereference-in-pl3.patch | 45 -
...a-Fix-redundant-jack-creations-for-cx5051.patch | 68 -
...mmc-core-check-for-zero-length-ioctl-data.patch | 137 -
...FSv4-Fix-an-Oops-in-the-NFSv4-getacl-code.patch | 98 -
...e-we-throw-out-bad-delegation-stateids-on.patch | 33 -
.../0017-NFSv4-fix-server_scope-memory-leak.patch | 55 -
...cache-v7-Disable-preemption-when-reading-.patch | 61 -
...M-7325-1-fix-v7-boot-with-lockdep-enabled.patch | 61 -
...9x-shorten-timer-period-for-slave-devices.patch | 42 -
...roxy-arp-respond-if-iif-rt-dst.dev-if-pri.patch | 43 -
...-netpoll_poll_dev-should-access-dev-flags.patch | 35 -
.../0023-net_sched-Bug-in-netem-reordering.patch | 42 -
...th-Enforce-minimum-size-of-VETH_INFO_PEER.patch | 37 -
.../3.2.9/0025-via-velocity-S3-resume-fix.patch | 37 -
...4-reset-flowi-parameters-on-route-connect.patch | 90 -
..._reset-binding-oif-to-iif-in-no-sock-case.patch | 47 -
...ong-order-of-ip_rt_get_source-and-update-.patch | 38 -
...ke-qdisc_skb_cb-upper-size-bound-explicit.patch | 90 -
...lying-about-hard_header_len-and-use-skb-c.patch | 213 -
.../0031-gro-more-generic-L2-header-check.patch | 61 -
...cp_sacktag_one-to-tag-ranges-not-aligned-.patch | 119 -
...ge-tcp_shifted_skb-passes-to-tcp_sacktag_.patch | 77 -
..._shifted_skb-adjustment-of-lost_cnt_hint-.patch | 42 -
...Kamstrup-VID-PIDs-to-cp210x-serial-driver.patch | 29 -
...n-cleanup-zte-3g-dongle-s-pid-in-option.c.patch | 246 -
...ti_usb_3410_5052-Add-Abbot-Diabetes-Care-.patch | 76 -
...ove-duplicate-USB-3.0-hub-feature-defines.patch | 74 -
...andoff-when-BIOS-disables-host-PCI-device.patch | 69 -
...ps-caused-by-more-USB2-ports-than-USB3-po.patch | 39 -
...Fix-encoding-for-HS-bulk-control-NAK-rate.patch | 98 -
...fail-USB3-probe-on-missing-legacy-PCI-IRQ.patch | 80 -
...43-USB-Set-hub-depth-after-USB3-hub-reset.patch | 86 -
...orage-fix-freezing-of-the-scanning-thread.patch | 213 -
...arget-Allow-control-CDBs-with-data-1-page.patch | 513 -
...SoC-wm8962-Fix-sidetone-enumeration-texts.patch | 31 -
...altek-Fix-overflow-of-vol-sw-check-bitmap.patch | 61 -
...altek-Fix-surround-output-regression-on-A.patch | 53 -
...i_mmap_mutex-for-access-to-the-VMA-prio-l.patch | 76 -
...wmon-max6639-Fix-FAN_FROM_REG-calculation.patch | 46 -
...39-Fix-PPR-register-initialization-to-set.patch | 65 -
...n-ads1015-Fix-file-leak-in-probe-function.patch | 43 -
...fix-oops-in-drivers-video-omap2-dss-dpi.c.patch | 113 -
...-L1i-and-L2-cache-sharing-information-for.patch | 100 -
...on-rates-with-idx-1-in-ath9k-rate-control.patch | 41 -
...sk-oneshot-irqs-when-thread-was-not-woken.patch | 81 -
...genirq-Handle-pending-irqs-in-irq_startup.patch | 117 -
...ix-Poison-overwritten-warning-caused-by-u.patch | 104 -
...-bug-in-the-SCSI-power-management-handler.patch | 106 -
...tching-of-fwmark-templates-during-schedul.patch | 47 -
.../3.2.9/0061-jme-Fix-FIFO-flush-issue.patch | 63 -
...c-Do-not-free-all-rx-dma-descriptors-duri.patch | 72 -
...n-t-create-files-in-tmp-with-predictable-.patch | 47 -
...-fix-isr-hang-when-hw-is-unplugged-under-.patch | 67 -
...x-race-conditon-during-start-of-streaming.patch | 39 -
...on-t-wedge-hardware-after-early-callbacks.patch | 107 -
...5s-Fix-register-write-order-when-setting-.patch | 48 -
...duce-POLLFREE-to-flush-signalfd_wqh-befor.patch | 164 -
...register_pollwait-can-use-the-freed-pwq-w.patch | 116 -
.../3.2.9/0070-epoll-limit-paths.patch | 475 -
...-use-copy_to_user-without-the-underscores.patch | 56 -
.../3.2.9/0072-Linux-3.2.9.patch | 24 -
.../linux/linux-ti33x-psp-3.2/am335x-evm/defconfig | 2640 -
.../linux-ti33x-psp-3.2/am335x-pm-firmware.bin | Bin 10732 -> 0 bytes
...ot-compressed-default-asm-arch-to-armv7-a.patch | 36 -
...1-f_rndis-HACK-around-undefined-variables.patch | 31 -
...2-da8xx-fb-add-DVI-support-for-beaglebone.patch | 38 -
...rebase-everything-onto-3.2-WARNING-MEGAPA.patch | 563 -
.../beaglebone/0004-more-beaglebone-merges.patch | 107 -
.../beaglebone/0005-beaglebone-disable-tsadc.patch | 31 -
...general-purpose-mode-untested-with-touchs.patch | 406 -
...dc-Add-board-file-mfd-support-fix-warning.patch | 44 -
...AM335X-init-tsc-bone-style-for-new-boards.patch | 26 -
...cadc-make-stepconfig-channel-configurable.patch | 46 -
.../0010-tscadc-Trigger-through-sysfs.patch | 149 -
...meta-ti-Remove-debug-messages-for-meta-ti.patch | 34 -
...c-switch-to-polling-instead-of-interrupts.patch | 54 -
.../beaglebone/0013-beaglebone-fix-ADC-init.patch | 47 -
.../beaglebone/0014-AM335x-MUX-add-ehrpwm1A.patch | 26 -
...enable-PWM-for-lcd-backlight-backlight-is.patch | 123 -
...Set-dto-to-max-value-of-14-to-avoid-SD-Ca.patch | 34 -
...set-default-brightness-to-50-for-pwm-back.patch | 27 -
...P-framebuffer-driver-supporting-Adafruit-.patch | 668 -
...019-beaglebone-use-P8_6-gpio1_3-as-w1-bus.patch | 83 -
...add-support-for-Towertech-TT3201-CAN-cape.patch | 320 -
...add-more-beagleboardtoys-cape-partnumbers.patch | 53 -
...add-gpio-keys-for-lcd7-add-notes-for-miss.patch | 130 -
...23-beaglebone-add-enter-key-for-lcd7-cape.patch | 40 -
.../0024-beaglebone-add-gpio-keys-for-lcd.patch | 113 -
...025-beaglebone-fix-direction-of-gpio-keys.patch | 107 -
.../0026-beaglebone-fix-3.5-lcd-cape-support.patch | 109 -
...decrease-PWM-frequency-to-old-value-LCD7-.patch | 27 -
.../0028-beaglebone-fix-ehrpwm-backlight.patch | 25 -
...0029-beaglebone-also-report-cape-revision.patch | 36 -
...don-t-compare-undefined-characters-it-mak.patch | 27 -
.../0031-beaglebone-fix-3.5-cape-support.patch | 73 -
...-connect-batterycape-GPIO-to-gpio-charger.patch | 84 -
...lebone-add-support-for-CAN-and-RS232-cape.patch | 67 -
...glebone-add-support-for-DVI-rev.-A2-capes.patch | 242 -
...e-enable-LEDs-for-DVI-LCD3-and-LCD7-capes.patch | 240 -
...036-Beaglebone-Fixed-compiletime-warnings.patch | 48 -
...Added-missing-termination-record-to-bone_.patch | 26 -
...xevm.c-Beaglebone-expose-all-pwms-through.patch | 58 -
...x-Fixed-debugfs-mux-output-always-reporti.patch | 99 -
...export-SPI2-as-spidev-when-no-capes-are-u.patch | 83 -
...rking-WIP-changes-to-make-DMA-safe-and-ad.patch | 143 -
.../0042-omap-hwmod-silence-st_shift-error.patch | 33 -
...psw-phy_device-demote-PHY-message-to-INFO.patch | 51 -
...ne-add-support-for-7-LCD-cape-revision-A2.patch | 66 -
...beaglebone-allow-capes-to-disable-w1-gpio.patch | 52 -
...add-stub-for-the-camera-cape-to-disable-w.patch | 30 -
...y-of-the-missing-signals-to-the-mux-table.patch | 310 -
...sed-part-of-LCD-bus.-Added-even-more-miss.patch | 113 -
...c-add-defines-for-4x-and-16x-oversampling.patch | 26 -
.../0050-ts_tscadc-switch-to-4x-oversampling.patch | 58 -
...of-pinmux-data-array-in-EEPROM-data-struc.patch | 27 -
...-Bone-Cape-configuration-from-EEPROM.-Onl.patch | 363 -
...nditional-debug-code-by-pr_debug-statemen.patch | 188 -
...for-boards-with-mistaken-ASCII-interpreta.patch | 31 -
...for-EEPROM-contents-blocking-further-I2C-.patch | 30 -
...-on-EEPROM-revision-to-prevent-interpreti.patch | 60 -
...lar-fix-i2c-fixed-prescalar-setting-issue.patch | 58 -
...lebone-annotate-default-beaglebone-pinmux.patch | 32 -
...fix-pin-free-thinko-this-method-doesn-t-g.patch | 78 -
...060-beaglebone-switch-RS232-cape-to-ttyO2.patch | 29 -
...-make-uart2-pinmux-match-the-uart0-pinmux.patch | 31 -
...unding-FB-size-to-satisfy-SGX-buffer-requ.patch | 59 -
.../0063-beaglebone-dvi-cape-audio-hacks.patch | 217 -
...lebone-always-execute-the-pin-free-checks.patch | 68 -
.../0065-ti_tscadc-switch-to-16x-averaging.patch | 53 -
...o-da8xx-fb-Add-Newhaven-LCD-Panel-details.patch | 45 -
...add-support-for-the-4.3-lcd-cape-with-res.patch | 94 -
...68-beaglebone-add-support-for-LCD3-rev-A1.patch | 132 -
...fix-buttons-spidev-clash-when-using-mcasp.patch | 52 -
.../0070-beaglebone-fix-LCD3-led-key-overlap.patch | 54 -
.../0071-beaglebone-fix-audio-spi-clash.patch | 25 -
...add-support-for-QuickLogic-Camera-interfa.patch | 1612 -
...add-support-for-DVI-audio-and-audio-only-.patch | 64 -
...glebone-disable-LBO-GPIO-for-battery-cape.patch | 35 -
...-fb-calculate-pixel-clock-period-for-the-.patch | 73 -
...-improve-GPMC-bus-timings-for-camera-cape.patch | 105 -
...disable-UYVY-VYUY-and-YVYU-modes-in-camer.patch | 39 -
...error-handling-for-DMA-completion-in-cssp.patch | 49 -
...rata-OPP50-on-MPU-domain-is-not-supported.patch | 52 -
...race-point-in-the-mark_inode_dirty-functi.patch | 103 -
.../0081-beaglebone-add-support-for-LCD7-A3.patch | 144 -
...one-add-rudimentary-support-for-eMMC-cape.patch | 111 -
...bone-add-extra-partnumber-for-camera-cape.patch | 26 -
...084-beaglebone-cssp_camera-driver-cleanup.patch | 324 -
...e-mux-camera-cape-orientation-pin-to-gpio.patch | 35 -
...335xevm-Add-Beaglebone-Motor-Cape-Support.patch | 43 -
...-MUXENTRYs-for-MCASP0_ACLKX-FSX-to-add-eh.patch | 37 -
.../linux/linux-ti33x-psp-3.2/beaglebone/defconfig | 3639 -
.../beaglebone/logo_linux_clut224.ppm | 7053 --
.../linux/linux-ti33x-psp-3.2/configs/empty | 0
...eartbeat-stop-on-shutdown-reboot-or-panic.patch | 67 -
...vert-drivers-net-to-use-module_usb_driver.patch | 80 -
...t-fix-assignment-of-0-1-to-bool-variables.patch | 55 -
.../libertas/0003-switch-debugfs-to-umode_t.patch | 26 -
...-Remove-unnecessary-k.alloc-v.alloc-OOM-m.patch | 54 -
...ibertas-remove-dump_survey-implementation.patch | 80 -
...bertas-remove-redundant-NULL-tests-before.patch | 95 -
...ix-signedness-bug-in-lbs_auth_to_authtype.patch | 48 -
...-wireless-libertas-if_usb.c-add-missing-d.patch | 35 -
...libertas-Firmware-loading-simplifications.patch | 618 -
.../0010-libertas-harden-up-exit-paths.patch | 46 -
...d-asynchronous-firmware-loading-capabilit.patch | 269 -
...IO-convert-to-asynchronous-firmware-loadi.patch | 320 -
...B-convert-to-asynchronous-firmware-loadin.patch | 201 -
...-convert-to-asynchronous-firmware-loading.patch | 154 -
.../0015-libertas-add-missing-include.patch | 30 -
...ve-debug-msgs-due-to-missing-in_interrupt.patch | 35 -
recipes-kernel/linux/linux-ti33x-psp-3.2/patch.sh | 38 -
...-AM33XX-Add-missing-EMIF-register-offsets.patch | 61 -
...33XX-PM-Get-rid-of-hardcoded-resume-addre.patch | 99 -
...33XX-PM-Skip-DDR-PHY-reconfiguration-in-r.patch | 397 -
...AM33XX-PM-Save-and-restore-EMIF-registers.patch | 241 -
...33XX-PM-Wait-correctly-for-the-PLLs-to-re.patch | 37 -
...33XX-PM-Restore-the-PLLs-to-pre-suspend-s.patch | 139 -
...-AM33XX-Update-the-sleep-code-to-handle-D.patch | 150 -
...008-usb-musb-update-babble-workaround-fix.patch | 168 -
...81xx-print-the-usbss-revision-id-during-i.patch | 29 -
...ppi41-enable-txfifo-empty-interrupt-logic.patch | 425 -
...ost-Flush-txfifo-only-if-TxPktRdy-bit-set.patch | 57 -
...pi41-use-dsb-to-make-sure-PDs-are-updated.patch | 43 -
...3-usb-musb-cppi41-fix-zero-byte-OUT-issue.patch | 46 -
...-usb-musb-host-fix-for-urb-error-handling.patch | 66 -
...pi41-txdma-flushfifo-fixes-during-channel.patch | 50 -
...6-usb-musb-cppi41-tx-dma-completion-fixes.patch | 41 -
...st-Flush-RxFIFO-only-when-RxPktRdy-is-set.patch | 30 -
...-usb-musb-ti81xx-fix-role-switching-issue.patch | 65 -
...P-HS-Enable-HSPE-bit-for-high-speed-cards.patch | 66 -
...WM-ecap-Correct-configuration-of-polarity.patch | 42 -
...m335x-mux-add-ecap2_in_pwm2_out-string-en.patch | 29 -
...M335x-hwmod-Remove-PRCM-entries-for-PWMSS.patch | 107 -
...ecap-Resets-the-PWM-output-to-low-on-stop.patch | 40 -
...ix-for-throwing-PWM-output-before-running.patch | 52 -
...wm-ehrpwm-Configure-polarity-on-pwm_start.patch | 30 -
...pi41-revisit-the-teardown-path-to-fix-iso.patch | 103 -
...musb-fix-bug-in-data-toggle-sw-workaround.patch | 31 -
...udc-core-stop-UDC-on-device-initiated-dis.patch | 41 -
...udc-core-fix-asymmetric-calls-in-remove_d.patch | 43 -
...-usb-gadget-udc-core-fix-wrong-call-order.patch | 33 -
...udc-core-fix-incompatibility-with-dummy-h.patch | 46 -
recipes-kernel/linux/linux-ti33x-psp_3.2.bb | 1949 -
.../linux/linux/beagleboard/logo_linux_clut224.ppm | 73147 -------------------
recipes-kernel/linux/linux_3.3.7.bb | 41 -
2039 files changed, 343292 deletions(-)
delete mode 100644 recipes-kernel/linux/linux-3.3.7/beagleboard/0001-ARM-OMAP-Cleanup-Beagleboard-DVI-reset-gpio.patch
delete mode 100644 recipes-kernel/linux/linux-3.3.7/beagleboard/0001-ARM-OMAP2-UART-Fix-incorrect-population-of-default-u.patch
delete mode 100644 recipes-kernel/linux/linux-3.3.7/beagleboard/defconfig
delete mode 100644 recipes-kernel/linux/linux-am335x-psp-3.2/0001-ARM-AM33xx-hwmod-Convert-SHA0-crypto-device-data-to-.patch
delete mode 100644 recipes-kernel/linux/linux-am335x-psp-3.2/0001-ARM-OMAP2-AM335x-Update-SPI-flash-layout.patch
delete mode 100644 recipes-kernel/linux/linux-am335x-psp-3.2/0001-Smartreflex-support-for-ES-2.x-and-suspend-resume.patch
delete mode 100644 recipes-kernel/linux/linux-am335x-psp-3.2/0001-am3358-sk-modified-WLAN-enable-and-irq-to-match-boar.patch
delete mode 100644 recipes-kernel/linux/linux-am335x-psp-3.2/0001-am335x-Add-crypto-driver-settings-to-defconfig.patch
delete mode 100644 recipes-kernel/linux/linux-am335x-psp-3.2/0001-am335x-Add-minimal-support-for-Beaglebone-Black.patch
delete mode 100644 recipes-kernel/linux/linux-am335x-psp-3.2/0001-am335x-Add-pm_runtime-API-to-crypto-driver.patch
delete mode 100644 recipes-kernel/linux/linux-am335x-psp-3.2/0001-am335x-Re-enable-Turbo-and-Nitro-modes-for-Beaglebon.patch
delete mode 100644 recipes-kernel/linux/linux-am335x-psp-3.2/0001-am335x-enable-pullup-on-the-WLAN-enable-pin-fo.patch
delete mode 100644 recipes-kernel/linux/linux-am335x-psp-3.2/0001-am335xevm-using-edge-triggered-interrupts-for-WLAN.patch
delete mode 100644 recipes-kernel/linux/linux-am335x-psp-3.2/0001-am33x-Add-memory-addresses-for-crypto-modules.patch
delete mode 100644 recipes-kernel/linux/linux-am335x-psp-3.2/0001-am33xx-Add-SmartReflex-support.patch
delete mode 100644 recipes-kernel/linux/linux-am335x-psp-3.2/0001-mach-omap2-pm33xx-Disable-VT-switch.patch
delete mode 100644 recipes-kernel/linux/linux-am335x-psp-3.2/0001-musb-update-PIO-mode-help-information-in-Kconfig.patch
delete mode 100644 recipes-kernel/linux/linux-am335x-psp-3.2/0001-omap-serial-add-delay-before-suspending.patch
delete mode 100644 recipes-kernel/linux/linux-am335x-psp-3.2/0001-omap4-rng-Remove-check-for-GP-only-device-type-in-RN.patch
delete mode 100644 recipes-kernel/linux/linux-am335x-psp-3.2/0002-AM335x-OCF-Driver-for-Linux-3.patch
delete mode 100644 recipes-kernel/linux/linux-am335x-psp-3.2/0002-Smartreflex-limited-to-ES-1.0.patch
delete mode 100644 recipes-kernel/linux/linux-am335x-psp-3.2/0002-am335x-Add-suspend-resume-routines-to-crypto-driver.patch
delete mode 100644 recipes-kernel/linux/linux-am335x-psp-3.2/0002-am33x-Add-crypto-device-and-resource-structures.patch
delete mode 100644 recipes-kernel/linux/linux-am335x-psp-3.2/0002-am33xx-Enable-CONFIG_AM33XX_SMARTREFLEX.patch
delete mode 100644 recipes-kernel/linux/linux-am335x-psp-3.2/0002-crypto-omap4-sham-Use-finer-grained-PM-management.patch
delete mode 100644 recipes-kernel/linux/linux-am335x-psp-3.2/0003-am33x-Add-crypto-device-and-resource-structure-for-T.patch
delete mode 100644 recipes-kernel/linux/linux-am335x-psp-3.2/0003-crypto-omap4-sham-Add-suspend-resume-PM-support.patch
delete mode 100644 recipes-kernel/linux/linux-am335x-psp-3.2/0004-am33x-Add-crypto-drivers-to-Kconfig-and-Makefiles.patch
delete mode 100644 recipes-kernel/linux/linux-am335x-psp-3.2/0004-crypto-omap4-sham-Don-t-use-hardcoded-base-address.patch
delete mode 100644 recipes-kernel/linux/linux-am335x-psp-3.2/0005-ARM-AM33xx-hwmod-Convert-AES0-crypto-device-data-to-.patch
delete mode 100644 recipes-kernel/linux/linux-am335x-psp-3.2/0005-am33x-Create-header-file-for-OMAP4-crypto-modules.patch
delete mode 100644 recipes-kernel/linux/linux-am335x-psp-3.2/0006-am33x-Create-driver-for-TRNG-crypto-module.patch
delete mode 100644 recipes-kernel/linux/linux-am335x-psp-3.2/0006-crypto-omap4-aes-User-finer-grained-PM-management.patch
delete mode 100644 recipes-kernel/linux/linux-am335x-psp-3.2/0007-am33x-Create-driver-for-AES-crypto-module.patch
delete mode 100644 recipes-kernel/linux/linux-am335x-psp-3.2/0007-crypto-omap4-aes-Add-suspend-resume-PM-support.patch
delete mode 100644 recipes-kernel/linux/linux-am335x-psp-3.2/0008-am33x-Create-driver-for-SHA-MD5-crypto-module.patch
delete mode 100644 recipes-kernel/linux/linux-am335x-psp-3.2/0008-crypto-omap4-aes-Don-t-use-hardcoded-base-address.patch
delete mode 100644 recipes-kernel/linux/linux-am335x-psp-3.2/0009-ARM-AM33xx-hwmod-Convert-RNG-device-data-to-hwmod.patch
delete mode 100644 recipes-kernel/linux/linux-am335x-psp-3.2/0010-hwrng-omap4-rng-Convert-to-use-pm_runtime-API.patch
delete mode 100644 recipes-kernel/linux/linux-am335x-psp-3.2/defconfig
delete mode 100644 recipes-kernel/linux/linux-am335x-psp_3.2.bb
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/beagle/0001-expansion-add-buddy-param-for-expansionboard-names.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/beagle/0002-expansion-add-mmc-regulator-and-ds1307-rtc.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/beagle/0003-expansion-add-zippy.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/beagle/0004-expansion-add-zippy2.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/beagle/0005-expansion-add-trainer.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/beagle/0006-expansion-add-ulcd.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/beagle/0007-beagleboard-reinstate-usage-of-hi-speed-PLL-divider.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/beagle/0008-Turn-on-the-USB-regulator-on-Beagle-xM-explicitly.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/beagle/0009-meego-modedb-add-Toshiba-LTA070B220F-800x480-support.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/beagle/0010-beagleboard-fix-uLCD7-support.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/beagle/0011-default-to-fifo-mode-5-for-old-musb-beagles.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/beagle/0012-backlight-Add-TLC59108-backlight-control-driver.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/beagle/0013-tlc59108-adjust-for-beagleboard-uLCD7.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/beagle/0014-expansion-add-wifi.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/beagle/0015-ASoC-omap-add-MODULE_ALIAS-to-mcbsp-and-pcm-drivers.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/beagle/0016-ASoC-omap-convert-per-board-modules-to-platform-driv.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/beagleboard/defconfig
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/beagleboard/logo_linux_clut224.ppm
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/devkit8000/0001-arm-omap-devkit8000-for-lcd-use-samsung_lte_panel.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/distro/0001-kbuild-deb-pkg-set-host-machine-after-dpkg-gencontro.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/led/0001-leds-heartbeat-stop-on-shutdown-reboot-or-panic.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/libertas/0001-USB-convert-drivers-net-to-use-module_usb_driver.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/libertas/0002-net-fix-assignment-of-0-1-to-bool-variables.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/libertas/0003-switch-debugfs-to-umode_t.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/libertas/0004-drivers-net-Remove-unnecessary-k.alloc-v.alloc-OOM-m.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/libertas/0005-libertas-remove-dump_survey-implementation.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/libertas/0007-wireless-libertas-remove-redundant-NULL-tests-before.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/libertas/0008-libertas-fix-signedness-bug-in-lbs_auth_to_authtype.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/libertas/0009-drivers-net-wireless-libertas-if_usb.c-add-missing-d.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/libertas/0010-libertas-Firmware-loading-simplifications.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/libertas/0011-libertas-harden-up-exit-paths.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/libertas/0012-libertas-add-asynchronous-firmware-loading-capabilit.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/libertas/0013-libertas-SDIO-convert-to-asynchronous-firmware-loadi.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/libertas/0014-libertas-USB-convert-to-asynchronous-firmware-loadin.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/libertas/0015-libertas-CS-convert-to-asynchronous-firmware-loading.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/libertas/0016-libertas-add-missing-include.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/libertas/0017-remove-debug-msgs-due-to-missing-in_interrupt.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/micrel_zippy2/0001-ksz8851-eeprom-93cx6-add-drive_data.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/micrel_zippy2/0002-ksz8851-eeprom-93cx6-add-eeprom_93cx6_write.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/micrel_zippy2/0003-ksz8851-read_mac_addr.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/micrel_zippy2/0004-ksz8851-93cx6-eeprom-access.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/micrel_zippy2/0005-ks8851.h-it-helps-to-include-the-include-file.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/micrel_zippy2/0006-ksz8851-move-to-header.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/micrel_zippy2/0007-ksz8851-move-more-to-header.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/micrel_zippy2/0008-ksz8851-share-ks8851_tx_hdr-union.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/micrel_zippy2/0009-ksz8851-add-is_level_irq.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/micrel_zippy2/0010-ksz8851-turn-off-hardware-interrupt-druing-receive-p.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/micrel_zippy2/0011-ksz8851-make-sure-is-awake-before-writing-mac.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/micrel_zippy2/0012-ksz8851-add-mutex-lock-unlock-to-ks.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/micrel_zippy2/0013-ksz8851-add-ks8851_tx_check.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/micrel_zippy2/0014-ksz8851-move-ks8851_set_powermode.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/omap_cpufreq/0001-cpufreq-OMAP-cleanup-for-multi-SoC-support-move-into.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/omap_cpufreq/0002-cpufreq-OMAP-Add-SMP-support-for-OMAP4.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/omap_cpufreq/0003-cpufreq-OMAP-Enable-all-CPUs-in-shared-policy-mask.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/omap_cpufreq/0004-cpufreq-OMAP-notify-even-with-bad-boot-frequency.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/omap_cpufreq/0005-cpufreq-OMAP-move-clk-name-decision-to-init.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/omap_cpufreq/0006-cpufreq-OMAP-deny-initialization-if-no-mpudev.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/omap_cpufreq/0007-cpufreq-OMAP-dont-support-freq_table.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/omap_cpufreq/0008-cpufreq-OMAP-only-supports-OPP-library.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/omap_cpufreq/0009-cpufreq-OMAP-put-clk-if-cpu_init-failed.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/omap_cpufreq/0010-cpufreq-OMAP-fix-freq_table-leak.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/omap_cpufreq/0011-cpufreq-OMAP-fixup-for-omap_device-changes-include-l.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/omap_fixes/0001-omap3-Increase-limit-on-bootarg-mpurate.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/omap_fixes/0002-ARM-OMAP-AM3517-3505-fix-crash-on-boot-due-to-incorr.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/omap_fixes/0003-ARM-OMAP4-hwmod-Don-t-wait-for-the-idle-status-if-mo.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/omap_fixes/0004-ARM-OMAP4-clock-Add-CPU-local-timer-clock-node.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/omap_fixes/0005-ARM-OMAP3-hwmod-data-disable-multiblock-reads-on-MMC.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/omap_fixes/0006-OMAP-HWMOD-add-es3plus-to-am36xx-am35xx.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/panda/0001-panda-fix-wl12xx-regulator.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/panda/0002-panda-enable-bluetooth.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/panda/0003-ti-st-st-kim-fixing-firmware-path.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/sakoman/0001-OMAP-DSS2-add-bootarg-for-selecting-svideo.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/sakoman/0002-video-add-timings-for-hd720.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/sakoman/0003-omap-mmc-Adjust-dto-to-eliminate-timeout-errors.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/sgx/0001-Revert-OMAP-DSS2-remove-update_mode-from-omapdss-v3.2.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/touchbook/0001-omap3-touchbook-remove-mmc-gpio_wp.patch
delete mode 100644 recipes-kernel/linux/linux-mainline-3.2/touchbook/0002-omap3-touchbook-drop-u-boot-readonly.patch
delete mode 100644 recipes-kernel/linux/linux-mainline_3.2.bb
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0001-MAINTAINERS-stable-Update-address.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0002-Documentation-Update-stable-address.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0003-firmware-Fix-an-oops-on-reading-fw_priv-fw-in-sysfs-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0004-rt2800usb-Move-ID-out-of-unknown.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0005-offb-Fix-setting-of-the-pseudo-palette-for-8bpp.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0006-offb-Fix-bug-in-calculating-requested-vram-size.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0007-libertas-clean-up-scan-thread-handling.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0008-bcma-support-for-suspend-and-resume.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0009-wl12xx-Validate-FEM-index-from-ini-file-and-FW.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0010-wl12xx-Check-buffer-bound-when-processing-nvs-data.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0011-wl12xx-Restore-testmode-ABI.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0012-powerpc-time-Handle-wrapping-of-decrementer.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0013-powerpc-Fix-unpaired-probe_hcall_entry-and-probe_hca.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0014-IB-qib-Fix-a-possible-data-corruption-when-receiving.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0015-IB-uverbs-Protect-QP-multicast-list.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0016-iwlagn-fix-TID-use-bug.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0017-iwlagn-fix-remove-use-of-PAGE_SIZE.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0018-perf-Fix-parsing-of-__print_flags-in-TP_printk.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0019-ore-Fix-crash-in-case-of-an-IO-error.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0020-ore-fix-BUG_ON-too-few-sgs-when-reading.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0021-ore-Must-support-none-PAGE-aligned-IO.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0022-ore-FIX-breakage-when-MISC_FILESYSTEMS-is-not-set.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0023-reiserfs-Fix-quota-mount-option-parsing.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0024-reiserfs-Force-inode-evictions-before-umount-to-avoi.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0025-ext3-Don-t-warn-from-writepage-when-readonly-inode-i.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0026-drivers-hv-Don-t-OOPS-when-you-cannot-init-vmbus.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0027-Drivers-hv-Fix-a-bug-in-vmbus_driver_unregister.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0028-USB-update-documentation-for-usbmon.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0029-usbfs-Fix-oops-related-to-user-namespace-conversion.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0030-atmel_serial-fix-spinlock-lockup-in-RS485-code.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0031-cgroup-fix-to-allow-mounting-a-hierarchy-by-name.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0032-udf-Fix-deadlock-when-converting-file-from-in-ICB-on.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0033-drivers-usb-class-cdc-acm.c-clear-dangling-pointer.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0034-USB-isight-fix-kernel-bug-when-loading-firmware.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0035-usb-usb-storage-doesn-t-support-dynamic-id-currently.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0036-USB-pxa168-Fix-compilation-error.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0037-USB-add-quirk-for-another-camera.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0038-USB-omninet-fix-write_room.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0039-usb-option-add-ZD-Incorporated-HSPA-modem.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0040-USB-Add-USB-ID-for-Multiplex-RC-serial-adapter-to-cp.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0041-usb-fix-number-of-mapped-SG-DMA-entries.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0042-xhci-Properly-handle-COMP_2ND_BW_ERR.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0043-usb-ch9-fix-up-MaxStreams-helper.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0044-igmp-Avoid-zero-delay-when-receiving-odd-mixture-of-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0045-asix-fix-infinite-loop-in-rx_fixup.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0046-bonding-fix-error-handling-if-slave-is-busy-v2.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0047-usb-cdc-acm-Fix-acm_tty_hangup-vs.-acm_tty_close-rac.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0048-xfs-fix-acl-count-validation-in-xfs_acl_from_disk.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0049-Linux-3.2.1.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0001-autofs-work-around-unhappy-compat-problem-on-x86-64.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0002-Fix-autofs-compile-without-CONFIG_COMPAT.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0003-compat-fix-compile-breakage-on-s390.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0004-drm-i915-Prevent-a-machine-hang-by-checking-crtc-act.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0005-ARM-LPC32xx-serial.c-HW-bug-workaround.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0006-ARM-LPC32xx-serial.c-Fixed-loop-limit.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0007-ARM-LPC32xx-irq.c-Clear-latched-event.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0008-ARM-LPC32xx-Fix-interrupt-controller-init.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0009-ARM-LPC32xx-Fix-irq-on-GPI_28.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0010-watchdog-hpwdt-clean-up-set_memory_x-call-for-32-bit.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0011-i2c-mxs-only-flag-completion-when-queue-is-completel.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0012-regulator-fix-the-ldo-configure-according-to-88pm860.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0013-S390-KEYS-Enable-the-compat-keyctl-wrapper-on-s390x.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0014-perf-x86-kvm-Fix-Host-Only-Guest-Only-counting-with-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0015-ALSA-hda-realtek-Fix-resume-of-multiple-input-source.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0016-ALSA-hda-Add-a-fake-mute-feature.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0017-ALSA-hda-Always-set-HP-pin-in-unsol-handler-for-STAC.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0018-regset-Prevent-null-pointer-reference-on-readonly-re.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0019-regset-Return-EFAULT-not-EIO-on-host-side-memory-fau.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0020-mfd-Fix-ACPI-conflict-check.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0021-mfd-Test-for-jack-detection-when-deciding-if-wm8994-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0022-genirq-Clear-action-thread_mask-if-IRQ_ONESHOT-is-no.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0023-ARM-S3C24XX-DMA-resume-regression-fix.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0024-Move-Logitech-Harmony-900-from-cdc_ether-to-zaurus.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0025-alpha-fix-32-64-bit-bug-in-futex-support.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0026-mmc-atmel-mci-don-t-use-dma-features-when-using-DMA-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0027-mmc-sdhci-esdhc-imx-fix-for-mmc-cards-on-i.MX5.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0028-aio-wake-up-waiters-when-freeing-unused-kiocbs.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0029-mm-memcg-Correct-unregistring-of-events-attached-to-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0030-NOMMU-Don-t-need-to-clear-vm_mm-when-deleting-a-VMA.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0031-cifs-fix-dentry-refcount-leak-when-opening-a-FIFO-on.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0032-mac80211-zero-initialize-count-field-in-ieee80211_tx.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0033-ath9k_hw-prevent-writes-to-const-data-on-AR9160.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0034-kprobes-return-proper-error-code-from-register_kprob.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0035-mm-thp-fix-BUG-on-mm-nr_ptes.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0036-iwlwifi-fix-key-removal.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0037-tty-powerpc-early-udbg-consoles-can-t-be-modules.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0038-S390-qdio-fix-handler-function-arguments-for-zfcp-da.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0039-rapidio-tsi721-fix-queue-wrapping-bug-in-inbound-doo.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0040-HID-usbhid-Add-NOGET-quirk-for-the-AIREN-Slim-keyboa.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0041-crypto-mv_cesa-fix-final-callback-not-ignoring-input.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0042-osd_uld-Bump-MAX_OSD_DEVICES-from-64-to-1-048-576.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0043-viafb-select-HW-scaling-on-VX900-for-IGA2.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0044-viafb-fix-IGA1-modesetting-on-VX900.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0045-ASoC-dapm-Check-for-bias-level-when-powering-down.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0046-ASoC-i.MX-SSI-Fix-DSP_A-format.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0047-bsg-fix-sysfs-link-remove-warning.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0048-avr32-select-generic-atomic64_t-support.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0049-ACPI-PM-Do-not-save-restore-NVS-on-Asus-K54C-K54HR.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0050-rtl8192cu-Add-new-device-IDs.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0051-drm-i915-gen7-implement-rczunit-workaround.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0052-drm-i915-gen7-Implement-an-L3-caching-workaround.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0053-drm-i915-gen7-work-around-a-system-hang-on-IVB.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0054-drm-i915-gen7-Disable-the-RHWO-optimization-as-it-ca.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0055-drm-i915-fix-ELD-writing-for-SandyBridge.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0056-ARM-orion-Fix-USB-phy-for-orion5x.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0057-ARM-orion-Fix-Orion5x-GPIO-regression-from-MPP-clean.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0058-OMAP-4430SDP-Panda-use-gpio_free_array-to-free-HDMI-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0059-OMAP-4430SDP-Panda-rename-HPD-GPIO-to-CT_CP_HPD.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0060-OMAPDSS-remove-wrong-HDMI-HPD-muxing.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0061-OMAP-4430SDP-Panda-setup-HDMI-GPIO-muxes.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0062-OMAP-4430SDP-Panda-add-HDMI-HPD-gpio.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0063-OMAPDSS-HDMI-PHY-burnout-fix.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0064-OMAPDSS-HDMI-hot-plug-detect-fix.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0065-ARM-7345-1-errata-update-workaround-for-A9-erratum-7.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0066-ARM-7354-1-perf-limit-sample_period-to-half-max_peri.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0067-ARM-7355-1-perf-clear-overflow-flag-when-disabling-c.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0068-ARM-7356-1-perf-check-that-we-have-an-event-in-the-P.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0069-ARM-7357-1-perf-fix-overflow-handling-for-xscale2-PM.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0070-media-staging-lirc_serial-Fix-init-exit-order.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0071-media-staging-lirc_serial-Free-resources-on-failure-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0072-media-staging-lirc_serial-Fix-deadlock-on-resume-fai.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0073-media-staging-lirc_serial-Do-not-assume-error-codes-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0074-Input-ALPS-fix-touchpad-detection-when-buttons-are-p.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0075-hwmon-pmbus_core-Fix-maximum-number-of-POUT-alarm-at.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0076-hwmon-jc42-Add-support-for-ST-Microelectronics-STTS2.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0077-hwmon-jc42-Add-support-for-AT30TS00-TS3000GB2-TSE200.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0078-hwmon-zl6100-Maintain-delay-parameter-in-driver-inst.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0079-carl9170-Fix-memory-accounting-when-sta-is-in-power-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0080-carl9170-fix-frame-delivery-if-sta-is-in-powersave-m.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0081-drm-radeon-kms-set-SX_MISC-in-the-r6xx-blit-code-v2.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0082-net-usbnet-avoid-recursive-locking-in-usbnet_stop.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0083-x86-amd-iommu_set_device_table-must-not-be-__init.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0084-dm-ioctl-do-not-leak-argv-if-target-message-only-con.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0085-dm-io-fix-discard-support.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0086-dm-flakey-fix-crash-on-read-when-corrupt_bio_byte-no.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0087-dm-thin-metadata-remove-incorrect-close_device-on-cr.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0088-dm-thin-metadata-unlock-superblock-in-init_pmd-error.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0089-dm-thin-metadata-decrement-counter-after-removing-ma.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0090-dm-raid-set-MD_CHANGE_DEVS-when-rebuilding.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0091-dm-raid-fix-flush-support.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0092-cs5535-mfgpt-don-t-call-__init-function-from-__devin.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0093-mfd-Fix-cs5535-section-mismatch.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0094-spi-topcliff-pch-rename-pch_spi_pcidev-to-pch_spi_pc.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0095-Linux-3.2.10.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.11/0001-Revert-mfd-Test-for-jack-detection-when-deciding-if-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.11/0002-Linux-3.2.11.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0001-ASoC-neo1973-fix-neo1973-wm8753-initialization.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0002-ALSA-hda-realtek-Apply-the-coef-setup-only-to-ALC269.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0003-aio-fix-io_setup-io_destroy-race.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0004-aio-fix-the-too-late-munmap-race.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0005-x86-Derandom-delay_tsc-for-64-bit.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0006-PCI-ignore-pre-1.1-ASPM-quirking-when-ASPM-is-disabl.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0007-omap3isp-ccdc-Fix-crash-in-HS-VS-interrupt-handler.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0008-rt2x00-fix-random-stalls.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0009-perf-x86-Fix-local-vs-remote-memory-events-for-NHM-W.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0010-CIFS-Do-not-kmalloc-under-the-flocks-spinlock.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0011-vfs-fix-return-value-from-do_last.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0012-vfs-fix-double-put-after-complete_walk.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0013-acer-wmi-No-wifi-rfkill-on-Lenovo-machines.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0014-atl1c-dont-use-highprio-tx-queue.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0015-neighbour-Fixed-race-condition-at-tbl-nht.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0016-ipsec-be-careful-of-non-existing-mac-headers.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0017-ppp-fix-ppp_mp_reconstruct-bad-seq-errors.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0018-sfc-Fix-assignment-of-ip_summed-for-pre-allocated-sk.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0019-tcp-fix-false-reordering-signal-in-tcp_shifted_skb.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0020-vmxnet3-Fix-transport-header-size.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0021-packetengines-fix-config-default.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0022-r8169-corrupted-IP-fragments-fix-for-large-mtu.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0023-tcp-don-t-fragment-SACKed-skbs-in-tcp_mark_head_lost.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0024-bridge-check-return-value-of-ipv6_dev_get_saddr.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0025-tcp-fix-tcp_shift_skb_data-to-not-shift-SACKed-data-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0026-IPv6-Fix-not-join-all-router-mcast-group-when-forwar.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0027-usb-asix-Patch-for-Sitecom-LN-031.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0028-regulator-Fix-setting-selector-in-tps6524x-set_volta.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0029-block-Fix-NULL-pointer-dereference-in-sd_revalidate_.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0030-block-sx8-fix-pointer-math-issue-getting-fw-version.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0031-block-fix-__blkdev_get-and-add_disk-race-condition.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0032-Block-use-a-freezable-workqueue-for-disk-event-polli.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0033-sparc32-Add-Av8-to-assembler-command-line.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0034-hwmon-w83627ehf-Fix-writing-into-fan_stop_time-for-N.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0035-hwmon-w83627ehf-Fix-memory-leak-in-probe-function.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0036-hwmon-w83627ehf-Fix-temp2-source-for-W83627UHG.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0037-rapidio-tsi721-fix-bug-in-register-offset-definition.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0038-i2c-algo-bit-Fix-spurious-SCL-timeouts-under-heavy-l.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0039-iscsi-target-Fix-reservation-conflict-EBUSY-response.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0040-target-Fix-compatible-reservation-handling-CRH-1-wit.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0041-hwmon-zl6100-Enable-interval-between-chip-accesses-f.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0042-Linux-3.2.12.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.13/0001-nilfs2-fix-NULL-pointer-dereference-in-nilfs_load_su.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.13/0002-afs-Read-of-file-returns-EBADMSG.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.13/0003-afs-Remote-abort-can-cause-BUG-in-rxrpc-code.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.13/0004-perf-tools-Incorrect-use-of-snprintf-results-in-SEGV.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.13/0005-perf-tools-Use-scnprintf-where-applicable.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.13/0006-tcp-fix-syncookie-regression.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.13/0007-ipv6-Don-t-dev_hold-dev-in-ip6_mc_find_dev_rcu.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.13/0008-iwl3945-fix-possible-il-txq-NULL-pointer-dereference.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.13/0009-powerpc-pmac-Fix-SMP-kernels-on-pre-core99-UP-machin.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.13/0010-Linux-3.2.13.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0001-USB-option-Add-MediaTek-MT6276M-modem-app-interfaces.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0002-USB-option-driver-adding-support-for-Telit-CC864-SIN.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0003-USB-option-make-interface-blacklist-work-again.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0004-USB-option-add-ZTE-MF820D.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0005-staging-zcache-avoid-AB-BA-deadlock-condition.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0006-USB-ftdi_sio-fix-problem-when-the-manufacture-is-a-N.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0007-USB-ftdi_sio-add-support-for-BeagleBone-rev-A5.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0008-USB-Microchip-VID-mislabeled-as-Hornby-VID-in-ftdi_s.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0009-USB-ftdi_sio-new-PID-Distortec-JTAG-lock-pick.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0010-USB-ftdi_sio-add-support-for-FT-X-series-devices.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0011-USB-ftdi_sio-new-PID-LUMEL-PD12.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0012-powerpc-usb-fix-bug-of-kernel-hang-when-initializing.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0013-staging-r8712u-Add-missing-initialization-and-remove.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0014-staging-r8712u-Fix-regression-introduced-by-commit-a.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0015-staging-r8712u-Fix-regression-in-signal-level-after-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0016-usb-dwc3-fix-bogus-test-in-dwc3_gadget_start_isoc.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0017-usb-dwc3-use-proper-function-for-setting-endpoint-na.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0018-usb-gadgetfs-return-number-of-bytes-on-ep0-read-requ.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0019-USB-gadget-Make-g_hid-device-class-conform-to-spec.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0020-futex-Cover-all-PI-opcodes-with-cmpxchg-enabled-chec.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0021-sysfs-Fix-memory-leak-in-sysfs_sd_setsecdata.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0022-tty-moxa-fix-bit-test-in-moxa_start.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0023-TTY-Wrong-unicode-value-copied-in-con_set_unimap.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0024-USB-serial-fix-console-error-reporting.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0025-cdc-wdm-Fix-more-races-on-the-read-path.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0026-cdc-wdm-Don-t-clear-WDM_READ-unless-entire-read-buff.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0027-usb-fsl_udc_core-Fix-scheduling-while-atomic-dump-me.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0028-usb-Fix-build-error-due-to-dma_mask-is-not-at-pdev_a.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0029-USB-ums_realtek-do-not-use-stack-memory-for-DMA-in-_.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0030-USB-qcserial-add-several-new-serial-devices.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0031-USB-qcserial-don-t-grab-QMI-port-on-Gobi-1000-device.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0032-usb-serial-Add-support-for-the-Sealevel-SeaLINK-8-20.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0033-usb-cp210x-Update-to-support-CP2105-and-multiple-int.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0034-USB-serial-mos7840-Fixed-MCS7820-device-attach-probl.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0035-rt2x00-Add-support-for-D-Link-DWA-127-to-rt2800usb.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0036-rtlwifi-rtl8192c_common-rtl8192de-Check-for-allocati.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0037-rtlwifi-Handle-previous-allocation-failures-when-fre.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0038-rtlwifi-rtl8192c-Prevent-sleeping-from-invalid-conte.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0039-rtlwifi-rtl8192ce-Fix-loss-of-receive-performance.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0040-iwlwifi-always-monitor-for-stuck-queues.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0041-math-Introduce-div64_long.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0042-ntp-Fix-integer-overflow-when-setting-time.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0043-uevent-send-events-in-correct-order-according-to-seq.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0044-genirq-Fix-long-term-regression-in-genirq-irq_set_ir.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0045-genirq-Fix-incorrect-check-for-forced-IRQ-thread-han.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0046-rtc-Disable-the-alarm-in-the-hardware-v2.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0047-p54spi-Release-GPIO-lines-and-IRQ-on-error-in-p54spi.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0048-rtnetlink-Fix-VF-IFLA-policy.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0049-IB-iser-Post-initial-receive-buffers-before-sending-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0050-ima-fix-Kconfig-dependencies.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0051-x86-ioapic-Add-register-level-checks-to-detect-bogus.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0052-mm-thp-fix-pmd_bad-triggering-in-code-paths-holding-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0053-TPM-Zero-buffer-whole-after-copying-to-userspace.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0054-PM-Domains-Fix-handling-of-wakeup-devices-during-sys.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0055-bootmem-sparsemem-remove-limit-constraint-in-alloc_b.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0056-hugetlbfs-avoid-taking-i_mutex-from-hugetlbfs_read.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0057-ASoC-fsl-p1022ds-tell-the-WM8776-codec-driver-that-i.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0058-ASoC-pxa-ssp-atomically-set-stream-active-masks.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0059-tcm_loop-Set-residual-field-for-SCSI-commands.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0060-iscsi-target-Fix-iscsit_alloc_buffs-failure-cases.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0061-iscsi-target-Fix-dynamic-explict-NodeACL-pointer-ref.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0062-ALSA-hda-fix-printing-of-high-HDMI-sample-rates.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0063-usb-gadget-fix-a-section-mismatch-when-compiling-g_f.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0064-udlfb-remove-sysfs-framebuffer-device-with-USB-.disc.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0065-tcm_fc-Fix-fc_exch-memory-leak-in-ft_send_resp_statu.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0066-md-bitmap-ensure-to-load-bitmap-when-creating-via-sy.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0067-md-don-t-set-md-arrays-to-readonly-on-shutdown.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0068-md-raid1-raid10-avoid-deadlock-during-resync-recover.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0069-md-fix-clearing-of-the-changed-flags-for-the-bad-blo.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0070-drm-i915-Only-clear-the-GPU-domains-upon-a-successfu.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0071-drm-radeon-Restrict-offset-for-legacy-hardware-curso.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0072-drm-radeon-kms-fix-analog-load-detection-on-DVI-I-co.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0073-drm-radeon-kms-add-connector-quirk-for-Fujitsu-D3003.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0074-target-Don-t-set-WBUS16-or-SYNC-bits-in-INQUIRY-resp.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0075-target-fix-use-after-free-in-target_report_luns.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0076-target-prevent-NULL-pointer-dereference-in-target_re.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0077-target-Fix-16-bit-target-ports-for-SET-TARGET-PORT-G.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0078-Bluetooth-Add-AR30XX-device-ID-on-Asus-laptops.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0079-HID-add-extra-hotkeys-in-Asus-AIO-keyboards.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0080-HID-add-more-hotkeys-in-Asus-AIO-keyboards.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0081-pata_legacy-correctly-mask-recovery-field-for-HT6560.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0082-firewire-ohci-fix-too-early-completion-of-IR-multich.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0083-KVM-x86-extend-struct-x86_emulate_ops-with-get_cpuid.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0084-KVM-x86-fix-missing-checks-in-syscall-emulation.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0085-NFS-Properly-handle-the-case-where-the-delegation-is.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0086-NFSv4-Return-the-delegation-if-the-server-returns-NF.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0087-xfs-fix-inode-lookup-race.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0088-CIFS-Respect-negotiated-MaxMpxCount.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0089-cifs-fix-issue-mounting-of-DFS-ROOT-when-redirecting.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0090-CIFS-Fix-a-spurious-error-in-cifs_push_posix_locks.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0091-UBI-fix-error-handling-in-ubi_scan.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0092-UBI-fix-eraseblock-picking-criteria.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0093-SUNRPC-We-must-not-use-list_for_each_entry_safe-in-r.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0094-usbnet-increase-URB-reference-count-before-usb_unlin.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0095-usbnet-don-t-clear-urb-dev-in-tx_complete.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0096-e1000e-Avoid-wrong-check-on-TX-hang.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0097-x86-32-Fix-endless-loop-when-processing-signals-for-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0098-proc-ns-use-d_set_d_op-API-to-set-dentry-ops-in-proc.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0099-iommu-amd-Fix-section-warning-for-prealloc_protectio.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0100-sysctl-protect-poll-in-entries-that-may-go-away.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0101-hwmon-fam15h_power-Correct-sign-extension-of-running.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0102-lgdt330x-fix-signedness-error-in-i2c_read_demod_byte.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0103-pvrusb2-fix-7MHz-8MHz-DVB-T-tuner-support-for-HVR190.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0104-mxl111sf-fix-error-on-stream-stop-in-mxl111sf_ep6_st.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0105-NFSv4-Rate-limit-the-state-manager-warning-messages.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0106-PM-Hibernate-Enable-usermodehelpers-in-hibernate-err.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0107-jbd2-clear-BH_Delay-BH_Unwritten-in-journal_unmap_bu.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0108-ext4-ignore-EXT4_INODE_JOURNAL_DATA-flag-with-delall.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0109-ext4-fix-race-between-unwritten-extent-conversion-an.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0110-ext4-fix-race-between-sync-and-completed-io-work.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0111-ext4-check-for-zero-length-extent.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0112-vfs-fix-d_ancestor-case-in-d_materialize_unique.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0113-ARM-tegra-select-required-CPU-and-L2-errata-options.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0114-udf-Fix-deadlock-in-udf_release_file.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0115-gpio-omap-fix-_set_gpio_irqenable-implementation.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0116-gpio-davinci-fix-oops-on-unbanked-gpio-irq-request.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0117-gpio-davinci-fix-enabling-unbanked-GPIO-IRQs.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0118-dm-crypt-fix-mempool-deadlock.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0119-dm-crypt-add-missing-error-handling.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0120-dm-exception-store-fix-init-error-path.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0121-dm-persistent-data-fix-btree-rebalancing-after-remov.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0122-dm-thin-fix-stacked-bi_next-usage.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0123-backlight-fix-typo-in-tosa_lcd.c.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0124-xfs-Fix-oops-on-IO-error-during-xlog_recover_process.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0125-slub-Do-not-hold-slub_lock-when-calling-sysfs_slab_a.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0126-NFSv4-Fix-two-infinite-loops-in-the-mount-code.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0127-NFSv4.1-Fix-layoutcommit-error-handling.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0128-module-Remove-module-size-limit.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0129-Bluetooth-btusb-fix-bInterval-for-high-super-speed-i.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0130-drm-i915-suspend-fbdev-device-around-suspend-hiberna.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0131-Fix-pppol2tp-getsockname.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0132-ipv6-fix-incorrent-ipv6-ipsec-packet-fragment.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0133-net-bpf_jit-fix-BPF_S_LDX_B_MSH-compilation.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0134-net-fix-a-potential-rcu_read_lock-imbalance-in-rt6_f.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0135-net-fix-napi_reuse_skb-skb-reserve.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0136-Remove-printk-from-rds_sendmsg.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0137-sky2-override-for-PCI-legacy-power-management.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0138-xfrm-Access-the-replay-notify-functions-via-the-regi.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0139-lockd-fix-arg-parsing-for-grace_period-and-timeout.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0140-x86-tsc-Skip-refined-tsc-calibration-on-systems-with.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0141-x86-tls-Off-by-one-limit-check.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0142-compat-use-sys_sendfile64-implementation-for-sendfil.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0143-rtc-Provide-flag-for-rtc-devices-that-don-t-support-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0144-nfsd-don-t-allow-zero-length-strings-in-cache_parse.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0145-serial-sh-sci-fix-a-race-of-DMA-submit_tx-on-transfe.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0146-ASPM-Fix-pcie-devices-with-non-pcie-children.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0147-Linux-3.2.14.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0001-x86-bpf_jit-fix-a-bug-in-emitting-the-16-bit-immedia.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0002-tg3-Fix-5717-serdes-powerdown-problem.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0003-sky2-dont-overwrite-settings-for-PHY-Quick-link.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0004-rose_dev-fix-memcpy-bug-in-rose_set_mac_address.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0005-net-usb-cdc_eem-fix-mtu.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0006-Fix-non-TBI-PHY-access-a-bad-merge-undid-bug-fix-in-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0007-ASoC-wm8994-Update-WM8994-DCS-calibration.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0008-mtd-ixp4xx-oops-in-ixp4xx_flash_probe.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0009-mtd-mips-lantiq-reintroduce-support-for-cmdline-part.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0010-mtd-nand-gpmi-use-correct-member-for-checking-NAND_B.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0011-mtd-sst25l-initialize-writebufsize.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0012-mtd-block2mtd-initialize-writebufsize.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0013-mtd-lart-initialize-writebufsize.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0014-mtd-m25p80-set-writebufsize.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0015-ACPI-Do-cpufreq-clamping-for-throttling-per-package-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0016-PNPACPI-Fix-device-ref-leaking-in-acpi_pnp_match.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0017-ACPICA-Fix-regression-in-FADT-revision-checks.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0018-modpost-fix-ALL_INIT_DATA_SECTIONS.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0019-genirq-Adjust-irq-thread-affinity-on-IRQ_SET_MASK_OK.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0020-tracing-Fix-ftrace-stack-trace-entries.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0021-tracing-Fix-ent_size-in-trace-output.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0022-m68k-mac-Add-missing-platform-check-before-registeri.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0023-mac80211-fix-possible-tid_rx-reorder_timer-use-after.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0024-rtlwifi-rtl8192ce-rtl8192cu-rtl8192de-Fix-low-gain-s.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0025-drm-Validate-requested-virtual-size-against-allocate.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0026-drm-radeon-kms-fix-fans-after-resume.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0027-drm-i915-no-lvds-quirk-on-MSI-DC500.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0028-drm-i915-Sanitize-BIOS-debugging-bits-from-PIPECONF.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0029-drm-i915-Add-lock-on-drm_helper_resume_force_mode.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0030-drm-i915-quirk-away-broken-OpRegion-VBT.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0031-r8169-runtime-resume-before-shutdown.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0032-target-Fix-unsupported-WRITE_SAME-sense-payload.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0033-kgdb-debug_core-pass-the-breakpoint-struct-instead-o.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0034-kgdbts-Fix-kernel-oops-with-CONFIG_DEBUG_RODATA.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0035-kgdbts-1-of-2-fix-single-step-awareness-to-work-corr.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0036-kgdbts-2-of-2-fix-single-step-awareness-to-work-corr.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0037-x86-kgdb-Fix-DEBUG_RODATA-limitation-using-text_poke.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0038-CIFS-Fix-VFS-lock-usage-for-oplocked-files.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0039-ARM-tegra-remove-Tegra30-errata-from-MACH_TEGRA_DT.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0040-mmc-sdhci-dove-Fix-compile-error-by-including-module.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0041-mmc-atmel-mci-correct-data-timeout-computation.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0042-tcm_fc-Add-abort-flag-for-gracefully-handling-exchan.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0043-tcm_fc-Do-not-free-tpg-structure-during-wq-allocatio.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0044-sysctl-fix-write-access-to-dmesg_restrict-kptr_restr.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0045-modpost-Fix-modpost-license-checking-of-vmlinux.o.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0046-x86-PCI-use-host-bridge-_CRS-info-on-MSI-MS-7253.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0047-x86-PCI-do-not-tie-MSI-MS-7253-use_crs-quirk-to-BIOS.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0048-TOMOYO-Fix-mount-flags-checking-order.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0049-Revert-x86-ioapic-Add-register-level-checks-to-detec.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0050-acer-wmi-No-wifi-rfkill-on-Sony-machines.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0051-Fix-length-of-buffer-copied-in-__nfs4_get_acl_uncach.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0052-sched-x86-Fix-overflow-in-cyc2ns_offset.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0053-mfd-Clear-twl6030-IRQ-status-register-only-once.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0054-USB-Add-Motorola-Rokr-E6-Id-to-the-USBNet-driver-zau.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0055-ioat-fix-size-of-completion-for-Xen.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0056-ASoC-ak4642-fixup-mute-needs-1-step.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0057-cred-copy_process-should-clear-child-replacement_ses.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0058-iommu-amd-Make-sure-IOMMU-interrupts-are-re-enabled-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0059-Bluetooth-Fix-l2cap-conn-failures-for-ssp-devices.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0060-Linux-3.2.15.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0001-drm-i915-mask-transcoder-select-bits-before-setting-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0002-drm-radeon-kms-fix-DVO-setup-on-some-r4xx-chips.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0003-drm-i915-ringbuffer-Exclude-last-2-cachlines-of-ring.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0004-drm-radeon-only-add-the-mm-i2c-bus-if-the-hw_i2c-mod.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0005-drm-i915-properly-compute-dp-dithering-for-user-crea.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0006-drm-i915-make-rc6-module-parameter-read-only.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0007-rtlwifi-Add-missing-DMA-buffer-unmapping-for-PCI-dri.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0008-ARM-7379-1-DT-fix-atags_to_fdt-second-call-site.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0009-ARM-7384-1-ThumbEE-Disable-userspace-TEEHBR-access-f.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0010-md-bitmap-prevent-bitmap_daemon_work-running-while-i.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0011-Bluetooth-uart-ldisc-Fix-memory-leak.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0012-Bluetooth-hci_ldisc-fix-NULL-pointer-dereference-on-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0013-ext4-address-scalability-issue-by-removing-extent-ca.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0014-ia64-fix-futex_atomic_cmpxchg_inatomic.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0015-drivers-rtc-rtc-pl031.c-enable-clock-on-all-ST-varia.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0016-hugetlb-fix-race-condition-in-hugetlb_fault.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0017-staging-iio-hmc5843-Fix-crash-in-probe-function.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0018-tty-serial-altera_uart-Check-for-NULL-platform_data-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0019-sparc64-Eliminate-obsolete-__handle_softirq-function.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0020-sparc64-Fix-bootup-crash-on-sun4v.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0021-cciss-Initialize-scsi-host-max_sectors-for-tape-driv.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0022-cciss-Fix-scsi-tape-io-with-more-than-255-scatter-ga.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0023-video-uvesafb-Fix-oops-that-uvesafb-try-to-execute-N.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0024-nohz-Fix-stale-jiffies-update-in-tick_nohz_restart.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0025-pch_uart-Fix-MSI-setting-issue.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0026-USB-serial-fix-race-between-probe-and-open.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0027-USB-pl2303-fix-DTR-RTS-being-raised-on-baud-rate-cha.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0028-USB-option-re-add-NOVATELWIRELESS_PRODUCT_HSPA_HIGHS.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0029-USB-ftdi_sio-fix-status-line-change-handling-for-TIO.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0030-USB-ftdi_sio-fix-race-condition-in-TIOCMIWAIT-and-ab.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0031-USB-sierra-add-support-for-Sierra-Wireless-MC7710.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0032-USB-don-t-clear-urb-dev-in-scatter-gather-library.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0033-USB-don-t-ignore-suspend-errors-for-root-hubs.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0034-xhci-don-t-re-enable-IE-constantly.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0035-xhci-Don-t-write-zeroed-pointers-to-xHC-registers.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0036-xhci-Restore-event-ring-dequeue-pointer-on-resume.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0037-USB-fix-bug-of-device-descriptor-got-from-superspeed.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0038-xHCI-add-XHCI_RESET_ON_RESUME-quirk-for-VIA-xHCI-hos.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0039-xHCI-Correct-the-define-XHCI_LEGACY_DISABLE_SMI.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0040-fix-tlb-flushing-for-page-table-pages.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0041-serial-PL011-clear-pending-interrupts.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0042-serial-PL011-move-interrupt-clearing.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0043-fcaps-clear-the-same-personality-flags-as-suid-when-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0044-ath9k-fix-max-noise-floor-threshold.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0045-xhci-Fix-register-save-restore-order.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0046-Bluetooth-hci_core-fix-NULL-pointer-dereference-at-u.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0047-pch_gpio-Support-new-device-LAPIS-Semiconductor-ML78.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0048-gpio-Add-missing-spin_lock_init-in-gpio-pch-driver.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0049-usb-gadget-pch_udc-Fix-disconnect-issue.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0050-usb-gadget-pch_udc-Fix-wrong-return-value.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0051-usb-gadget-pch_udc-Fix-USB-suspend-issue.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0052-usb-gadget-pch_udc-Fix-usb-gadget-pch_udc-Fix-ether-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0053-usb-gadget-pch_udc-Reduce-redundant-interrupt.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0054-ACPICA-Fix-to-allow-region-arguments-to-reference-ot.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0055-security-fix-compile-error-in-commoncap.c.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0056-pch_gbe-Do-not-abort-probe-on-bad-MAC.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0057-pch_gbe-memory-corruption-calling-pch_gbe_validate_o.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0058-pch_dma-Support-new-device-LAPIS-Semiconductor-ML783.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0059-spi-topcliff-pch-fix-Wuninitialized-warning.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0060-spi-topcliff-pch-Support-new-device-LAPIS-Semiconduc.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0061-Bluetooth-Adding-USB-device-13d3-3375-as-an-Atheros-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0062-Bluetooth-Add-Atheros-maryann-PIDVID-support.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0063-Bluetooth-Add-support-for-BCM20702A0-0a5c-21e3.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0064-futex-Do-not-leak-robust-list-to-unprivileged-proces.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0065-drm-radeon-kms-fix-the-regression-of-DVI-connector-c.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0066-drm-radeon-disable-MSI-on-RV515.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0067-drm-radeon-fix-load-detect-on-rn50-with-hardcoded-ED.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0068-Linux-3.2.16.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0001-crypto-sha512-Fix-byte-counter-overflow-in-SHA-512.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0002-ALSA-hda-conexant-Don-t-set-HP-pin-control-bit-uncon.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0003-ALSA-hda-conexant-Set-up-the-missing-docking-station.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0004-ARM-clps711x-serial-driver-hungs-are-a-result-of-cal.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0005-ARM-OMAP1-DMTIMER-fix-broken-timer-clock-source-sele.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0006-mmc-fixes-for-eMMC-v4.5-discard-operation.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0007-mmc-fixes-for-eMMC-v4.5-sanitize-operation.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0008-mmc-unbreak-sdhci-esdhc-imx-on-i.MX25.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0009-xen-gntdev-do-not-set-VM_PFNMAP.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0010-xen-xenbus-Add-quirk-to-deal-with-misconfigured-back.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0011-USB-yurex-Remove-allocation-of-coherent-buffer-for-s.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0012-USB-yurex-Fix-missing-URB_NO_TRANSFER_DMA_MAP-flag-i.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0013-uwb-fix-use-of-del_timer_sync-in-interrupt.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0014-uwb-fix-error-handling.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0015-davinci_mdio-Fix-MDIO-timeout-check.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0016-mwifiex-update-pcie8766-scratch-register-addresses.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0017-brcm80211-smac-resume-transmit-fifo-upon-receiving-f.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0018-rc-core-set-mode-for-winbond-cir.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0019-drxk-Does-not-unlock-mutex-if-sanity-check-failed-in.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0020-cfg80211-fix-interface-combinations-check.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0021-Fix-modpost-failures-in-fedora-17.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0022-mm-fix-s390-BUG-by-__set_page_dirty_no_writeback-on-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0023-md-fix-possible-corruption-of-array-metadata-on-shut.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0024-jbd2-use-GFP_NOFS-for-blkdev_issue_flush.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0025-USB-serial-cp210x-Fixed-usb_control_msg-timeout-valu.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0026-pch_uart-Fix-dma-channel-unallocated-issue.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0027-drivers-tty-amiserial.c-add-missing-tty_unlock.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0028-USB-sierra-avoid-QMI-wwan-interface-on-MC77xx.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0029-EHCI-fix-criterion-for-resuming-the-root-hub.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0030-EHCI-always-clear-the-STS_FLR-status-bit.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0031-USB-fix-deadlock-in-bConfigurationValue-attribute-me.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0032-usb-gadget-eliminate-NULL-pointer-dereference-bugfix.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0033-usb-musb-omap-fix-crash-when-musb-glue-omap-gets-ini.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0034-usb-musb-omap-fix-the-error-check-for-pm_runtime_get.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0035-PCI-Add-quirk-for-still-enabled-interrupts-on-Intel-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0036-ext4-fix-endianness-breakage-in-ext4_split_extent_at.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0037-KVM-unmap-pages-from-the-iommu-when-slots-are-remove.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0038-dell-laptop-add-3-machines-that-has-touchpad-LED.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0039-dell-laptop-touchpad-LED-should-persist-its-status-a.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0040-Bluetooth-Add-support-for-Atheros-04ca-3005.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0041-Don-t-limit-non-nested-epoll-paths.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0042-spi-Fix-device-unregistration-when-unregistering-the.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0043-spi-mpc83xx-fix-NULL-pdata-dereference-bug.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0044-rt2800-Add-support-for-the-Fujitsu-Stylistic-Q550.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0045-rt2x00-Identify-rt2800usb-chipsets.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0046-nfsd-fix-b0rken-error-value-for-setattr-on-read-only.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0047-nfsd-fix-error-values-returned-by-nfsd4_lockt-when-n.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0048-nfsd-fix-endianness-breakage-in-TEST_STATEID-handlin.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0049-nfsd-fix-compose_entry_fh-failure-exits.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0050-btrfs-btrfs_root_readonly-broken-on-big-endian.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0051-ocfs2-l_next_free_req-breakage-on-big-endian.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0052-ocfs-rl_used-breakage-on-big-endian.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0053-ocfs2-rl_count-endianness-breakage.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0054-ocfs2-e_leaf_clusters-endianness-breakage.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0055-lockd-fix-the-endianness-bug.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0056-usb-dwc3-ep0-increment-actual-on-bounced-ep0-case.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0057-net-fix-proc-net-dev-regression.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0058-nfsd-don-t-fail-unchecked-creates-of-non-special-fil.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0059-ppp-Don-t-stop-and-restart-queue-on-every-TX-packet.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0060-tcp-allow-splice-to-build-full-TSO-packets.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0061-sctp-Allow-struct-sctp_event_subscribe-to-grow-witho.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0062-bridge-Do-not-send-queries-on-multicast-group-leaves.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0063-ipv6-fix-array-index-in-ip6_mc_add_src.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0064-phonet-Check-input-from-user-before-allocating.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0065-bonding-properly-unset-current_arp_slave-on-slave-li.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0066-wimax-i2400m-prevent-a-possible-kernel-bug-due-to-mi.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0067-netlink-fix-races-after-skb-queueing.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0068-net-fix-a-race-in-sock_queue_err_skb.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0069-tcp-fix-tcp_rcv_rtt_update-use-of-an-unscaled-RTT-sa.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0070-net-allow-pskb_expand_head-to-get-maximum-tailroom.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0071-tcp-fix-tcp_trim_head.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0072-tcp-avoid-order-1-allocations-on-wifi-and-tx-path.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0073-atl1-fix-kernel-panic-in-case-of-DMA-errors.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0074-8139cp-set-intr-mask-after-its-handler-is-registered.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0075-net-smsc911x-fix-skb-handling-in-receive-path.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0076-net-ethernet-ks8851_mll-fix-rx-frame-buffer-overflow.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0077-net_sched-gred-Fix-oops-in-gred_dump-in-WRED-mode.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0078-net-usb-smsc75xx-fix-mtu.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0079-dummy-Add-ndo_uninit.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0080-tcp-fix-tcp_grow_window-for-large-incoming-frames.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0081-netns-do-not-leak-net_generic-data-on-failed-init.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0082-ksz884x-don-t-copy-too-much-in-netdev_set_mac_addres.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0083-net-ax25-Reorder-ax25_exit-to-remove-races.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0084-tcp-fix-TCP_MAXSEG-for-established-IPv6-passive-sock.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0085-nfs-Enclose-hostname-in-brackets-when-needed-in-nfs_.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0086-NFSv4-Ensure-that-the-LOCK-code-sets-exception-inode.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0087-NFSv4-Ensure-that-we-check-lock-exclusive-shared-typ.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0088-NFS-put-open-context-on-error-in-nfs_pagein_multi.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0089-NFS-put-open-context-on-error-in-nfs_flush_multi.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0090-x86-microcode-Fix-sysfs-warning-during-module-unload.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0091-x86-apic-APIC-code-touches-invalid-MSR-on-P5-class-m.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0092-Revert-autofs-work-around-unhappy-compat-problem-on-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0093-xen-correctly-check-for-pending-events-when-restorin.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0094-xen-smp-Fix-crash-when-booting-with-ACPI-hotplug-CPU.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0095-ASoC-dapm-Ensure-power-gets-managed-for-line-widgets.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0096-ASoC-wm8994-Improve-sequencing-of-AIF-channel-enable.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0097-dmaengine-at_hdmac-remove-clear-on-read-in-atc_dosta.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0098-sched-Fix-OOPS-when-build_sched_domains-percpu-alloc.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0099-tracing-Fix-stacktrace-of-latency-tracers-irqsoff-an.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0100-hwmon-fam15h_power-fix-bogus-values-with-current-BIO.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0101-hwmon-fam15h_power-Fix-pci_device_id-array.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0102-dell-laptop-Terminate-quirks-list-properly.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0103-drm-radeon-kms-need-to-set-up-ss-on-DP-bridges-as-we.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0104-drm-i915-handle-input-output-sdvo-timings-separately.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0105-drm-i915-relative_constants_mode-race-fix.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0106-drm-i915-Force-sync-command-ordering-Gen6.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0107-drm-i915-Set-the-Stencil-Cache-eviction-policy-to-no.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0108-drm-i915-fix-integer-overflow-in-i915_gem_execbuffer.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0109-drm-i915-fix-integer-overflow-in-i915_gem_do_execbuf.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0110-nl80211-ensure-interface-is-up-in-various-APIs.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0111-ALSA-HDA-Add-external-mic-quirk-for-Asus-Zenbook-UX3.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0112-USB-cdc-wdm-fix-race-leading-leading-to-memory-corru.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0113-USB-EHCI-fix-crash-during-suspend-on-ASUS-computers.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0114-USB-gadget-storage-gadgets-send-wrong-error-code-for.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0115-usb-gadget-dummy-do-not-call-pullup-on-udc_stop.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0116-usb-gadget-uvc-uvc_request_data-length-field-must-be.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0117-pipes-add-a-packetized-pipe-mode-for-writing.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0118-autofs-make-the-autofsv5-packet-file-descriptor-use-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0119-ARM-7396-1-errata-only-handle-ARM-erratum-326103-on-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0120-ARM-7397-1-l2x0-only-apply-workaround-for-erratum-75.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0121-ARM-7398-1-l2x0-only-write-to-debug-registers-on-PL3.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0122-ARM-7403-1-tls-remove-covert-channel-via-TPIDRURW.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0123-ARM-7406-1-hotplug-copy-the-affinity-mask-when-force.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0124-libsas-fix-sas_find_bcast_phy-in-the-presence-of-vac.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0125-libsas-fix-false-positive-device-attached-conditions.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0126-efi-Add-new-variable-attributes.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0127-efi-Validate-UEFI-boot-variables.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0128-PM-Hibernate-fix-the-number-of-pages-used-for-hibern.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0129-drm-i915-enable-dip-before-writing-data-on-gen4.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0130-sched-Fix-nohz-load-accounting-again.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0131-efivars-Improve-variable-validation.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0132-fs-cifs-fix-parsing-of-dfs-referrals.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0133-Fix-__read_seqcount_begin-to-use-ACCESS_ONCE-for-seq.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0134-hwmon-coretemp-Increase-CPU-core-limit.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0135-nouveau-initialise-has_optimus-variable.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0136-hwmon-coretemp-fix-oops-on-cpu-unplug.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0137-libata-skip-old-error-history-when-counting-probe-tr.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0138-b43-only-reload-config-after-successful-initializati.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0139-i2c-pnx-Disable-clk-in-suspend.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0140-ipw2200-Fix-race-condition-in-the-command-completion.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0141-mac80211-fix-AP-mode-EAP-tx-for-VLAN-stations.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0142-rtlwifi-Fix-oops-on-unload.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0143-wl1251-fix-crash-on-remove-due-to-premature-kfree.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0144-wl1251-fix-crash-on-remove-due-to-leftover-work-item.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0145-iwlwifi-do-not-nulify-ctx-vif-on-reset.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0146-iwlwifi-fix-hardware-queue-programming.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0147-hfsplus-Fix-potential-buffer-overflows.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0148-ASoC-tlv312aic23-unbreak-resume.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0149-asm-generic-Use-__BITS_PER_LONG-in-statfs.h.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0150-x86-relocs-Remove-an-unused-variable.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0151-ARM-7410-1-Add-extra-clobber-registers-for-assembly-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0152-ARM-7414-1-SMP-prevent-use-of-the-console-when-using.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0153-drm-i915-disable-sdvo-hotplug-on-i945g-gm.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0154-drm-i915-Do-no-set-Stencil-Cache-eviction-LRA-w-a-on.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0155-xen-pte-Fix-crashes-when-trying-to-see-non-existent-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0156-xen-pci-don-t-use-PCI-BIOS-service-for-configuration.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0157-percpu-x86-don-t-use-PMD_SIZE-as-embedded-atom_size-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0158-iwlagn-allow-up-to-uCode-API-6-for-6000-devices.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0159-iwlwifi-use-correct-released-ucode-version.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0160-iwlwifi-use-6000G2B-for-6030-device-series.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0161-exit_signal-simplify-the-we-have-changed-execution-d.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0162-exit_signal-fix-the-parent-has-changed-security-doma.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0163-staging-r8712u-Fix-regression-caused-by-commit-8c213.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0164-smsc95xx-mark-link-down-on-startup-and-let-PHY-inter.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0165-Linux-3.2.17.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0001-regulator-Fix-the-logic-to-ensure-new-voltage-settin.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0002-ARM-OMAP-Revert-ARM-OMAP-ctrl-Fix-CONTROL_DSIPHY-reg.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0003-ALSA-echoaudio-Remove-incorrect-part-of-assertion.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0004-ARM-orion5x-Fix-GPIO-enable-bits-for-MPP9.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0005-ALSA-HDA-Lessen-CPU-usage-when-waiting-for-chip-to-r.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0006-percpu-pcpu_embed_first_chunk-should-free-unused-par.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0007-hugetlb-prevent-BUG_ON-in-hugetlb_fault-hugetlb_cow.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0008-namespaces-pid_ns-fix-leakage-on-fork-failure.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0009-mm-nobootmem-fix-sign-extend-problem-in-__free_pages.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0010-asix-Fix-tx-transfer-padding-for-full-speed-USB.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0011-netem-fix-possible-skb-leak.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0012-net-In-unregister_netdevice_notifier-unregister-the-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0013-net-l2tp-unlock-socket-lock-before-returning-from-l2.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0014-sky2-propogate-rx-hash-when-packet-is-copied.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0015-sky2-fix-receive-length-error-in-mixed-non-VLAN-VLAN.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0016-sungem-Fix-WakeOnLan.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0017-tg3-Avoid-panic-from-reserved-statblk-field-access.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0018-tcp-fix-infinite-cwnd-in-tcp_complete_cwr.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0019-tcp-change-tcp_adv_win_scale-and-tcp_rmem-2.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0020-brcm80211-smac-pass-missing-argument-to-brcms_b_mute.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0021-phy-icplus-fix-Auto-Power-Saving-in-ip101a_config_in.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0022-NFSv4-Revalidate-uid-gid-after-open.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0023-target-Drop-incorrect-se_lun_acl-release-for-dynamic.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0024-marvell-cam-fix-an-ARM-build-error.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0025-rc-Postpone-ISR-registration.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0026-cdc_ether-Ignore-bogus-union-descriptor-for-RNDIS-de.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0027-jffs2-Fix-lock-acquisition-order-bug-in-gc-path.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0028-s5p-fimc-Fix-locking-in-subdev-set_crop-op.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0029-dm-mpath-check-if-scsi_dh-module-already-loaded-befo.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0030-sparc64-Do-not-clobber-g2-in-xcall_fetch_glob_regs.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0031-gpio-Add-missing-spin_lock_init-in-gpio-ml-ioh-drive.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0032-spi-topcliff-pch-Modify-pci-bus-number-dynamically-t.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0033-spi-topcliff-pch-Fix-issue-for-transmitting-over-4KB.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0034-spi-topcliff-pch-supports-a-spi-mode-setup-and-bit-o.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0035-spi-topcliff-pch-add-recovery-processing-in-case-wai.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0036-ext4-avoid-deadlock-on-sync-mounted-FS-w-o-journal.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0037-ia64-Add-accept4-syscall.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0038-brcm80211-smac-fix-endless-retry-of-A-MPDU-transmiss.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0039-ARM-7417-1-vfp-ensure-preemption-is-disabled-when-en.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0040-target-Fix-SPC-2-RELEASE-bug-for-multi-session-iSCSI.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0041-crypto-mv_cesa-requires-on-CRYPTO_HASH-to-build.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0042-ALSA-hda-idt-Fix-power-map-for-speaker-pins-with-som.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0043-ASoC-wm8994-Fix-AIF2ADC-power-down.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0044-usbnet-fix-skb-traversing-races-during-unlink-v2.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0045-cdc_ether-add-Novatel-USB551L-device-IDs-for-FLAG_WW.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0046-ARM-prevent-VM_GROWSDOWN-mmaps-extending-below-FIRST.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0047-arch-tile-apply-commit-74fca9da0-to-the-compat-signa.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0048-MD-Add-del_timer_sync-to-mddev_suspend-fix-nasty-pan.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0049-target-Fix-bug-in-handling-of-FILEIO-block_device-re.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0050-tcp-do_tcp_sendpages-must-try-to-push-data-out-on-oo.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0051-e1000-Prevent-reset-task-killing-itself.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0052-mtd-map.h-fix-arm-cross-build-failure.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0053-stmmac-Fix-compilation-error-in-mmc_core.c.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0054-pktgen-fix-crash-at-module-unload.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0055-pktgen-fix-module-unload-for-good.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0056-Linux-3.2.18.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0001-KVM-mmu_notifier-Flush-TLBs-before-releasing-mmu_loc.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0002-KVM-Ensure-all-vcpus-are-consistent-with-in-kernel-i.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0003-KVM-lock-slots_lock-around-device-assignment.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0004-KVM-nVMX-Fix-erroneous-exception-bitmap-check.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0005-KVM-VMX-vmx_set_cr0-expects-kvm-srcu-locked.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0006-KVM-s390-do-store-status-after-handling-STOP_ON_STOP.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0007-KVM-s390-Sanitize-fpc-registers-for-KVM_SET_FPU.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0008-bio-don-t-overflow-in-bio_get_nr_vecs.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0009-bio-allocation-failure-due-to-bio_get_nr_vecs.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0010-block-fix-buffer-overflow-when-printing-partition-UU.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0011-fix-PA1.1-oops-on-boot.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0012-fix-crash-in-flush_icache_page_asm-on-PA1.1.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0013-fix-panic-on-prefetch-NULL-on-PA7300LC.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0014-arch-tile-Kconfig-remove-pointless-M386-test.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0015-tilegx-enable-SYSCALL_WRAPPERS-support.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0016-mtd-sm_ftl-fix-typo-in-major-number.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0017-hpsa-Fix-problem-with-MSA2xxx-devices.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0018-SELinux-if-sel_make_bools-errors-don-t-leave-inconsi.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0019-cfg80211-warn-if-db.txt-is-empty-with-CONFIG_CFG8021.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0020-mpt2sas-Fix-for-panic-happening-because-of-improper-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0021-isdn-gigaset-ratelimit-CAPI-message-dumps.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0022-isdn-gigaset-fix-CAPI-disconnect-B3-handling.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0023-isdn-gigaset-improve-error-handling-querying-firmwar.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0024-KEYS-Use-the-compat-keyctl-syscall-wrapper-on-Sparc6.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0025-IB-core-Fix-mismatch-between-locked-and-pinned-pages.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0026-regulator-core-Release-regulator-regulator-supplies-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0027-iommu-Fix-off-by-one-in-dmar_get_fault_reason.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0028-RDMA-cxgb4-Always-wake-up-waiters-in-c4iw_peer_abort.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0029-RDMA-cxgb4-Drop-peer_abort-when-no-endpoint-found.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0030-s390-pfault-fix-task-state-race.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0031-isci-fix-oem-parameter-validation-on-single-controll.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0032-Fix-blocking-allocations-called-very-early-during-bo.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0033-vfs-make-AIO-use-the-proper-rw_verify_area-area-help.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0034-docs-update-HOWTO-for-2.6.x-3.x-versioning.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0035-drivers-staging-comedi-comedi_fops.c-add-missing-vfr.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0036-USB-move-usb_translate_errors-to-linux-usb.h.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0037-USB-cdc-wdm-sanitize-error-returns.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0038-USB-cdc-wdm-fix-memory-leak.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0039-8250_pci-fix-pch-uart-matching.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0040-usb-add-USB_QUIRK_RESET_RESUME-for-M-Audio-88es.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0041-usb-usbtest-two-super-speed-fixes-for-usbtest.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0042-8250.c-less-than-2400-baud-fix.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0043-usb-xhci-Handle-COMP_TX_ERR-for-isoc-tds.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0044-xhci-Avoid-dead-ports-when-CONFIG_USB_XHCI_HCD-n.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0045-xhci-Add-Lynx-Point-to-list-of-Intel-switchable-host.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0046-usb-gadget-fsl_udc_core-dTD-s-next-dtd-pointer-need-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0047-Add-missing-call-to-uart_update_timeout.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0048-USB-ftdi-sio-add-support-for-Physik-Instrumente-E-86.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0049-USB-ffs-test-fix-length-argument-of-out-function-cal.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0050-HID-wiimote-Fix-IR-data-parser.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0051-usb-storage-unusual_devs-entry-for-Yarvik-PMP400-MP4.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0052-USB-ohci-at91-add-a-reset-function-to-fix-race-condi.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0053-HID-logitech-read-all-32-bits-of-report-type-bitfiel.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0054-USB-serial-ti_usb_3410_5052-Add-support-for-the-FRI2.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0055-USB-cdc-wdm-poll-must-return-POLLHUP-if-device-is-go.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0056-USB-cdc-wdm-add-debug-messages-on-cleanup.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0057-USB-cdc-wdm-cannot-use-dev_printk-when-device-is-gon.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0058-tty-Allow-uart_register-unregister-register.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0059-workqueue-skip-nr_running-sanity-check-in-worker_ent.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0060-xhci-Add-new-short-TX-quirk-for-Fresco-Logic-host.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0061-usbcore-enable-USB2-LPM-if-port-suspend-fails.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0062-perf-x86-Update-event-scheduling-constraints-for-AMD.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0063-USB-fix-resource-leak-in-xhci-power-loss-path.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0064-xhci-Reset-reserved-command-ring-TRBs-on-cleanup.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0065-USB-Remove-races-in-devio.c.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0066-md-using-GFP_NOIO-to-allocate-bio-for-flush-request.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0067-um-Implement-a-custom-pte_same-function.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0068-um-Fix-__swp_type.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0069-swap-don-t-do-discard-if-no-discard-option-added.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0070-Input-wacom-relax-Bamboo-stylus-ID-check.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0071-ahci-Detect-Marvell-88SE9172-SATA-controller.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0072-ARM-7365-1-drop-unused-parameter-from-flush_cache_us.patch
delete mode 100644 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
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0074-sony-laptop-Enable-keyboard-backlight-by-default.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0075-init-don-t-try-mounting-device-as-nfs-root-unless-ty.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0076-memcg-free-spare-array-to-avoid-memory-leak.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0077-compat-Fix-RT-signal-mask-corruption-via-sigprocmask.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0078-ext3-Fix-error-handling-on-inode-bitmap-corruption.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0079-ext4-fix-error-handling-on-inode-bitmap-corruption.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0080-ACPI-PM-Add-Sony-Vaio-VPCCW29FX-to-nonvs-blacklist.patch
delete mode 100644 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
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0082-wake-up-s_wait_unfrozen-when-freeze_fs-fails.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0083-cifs-fix-revalidation-test-in-cifs_llseek.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0084-dl2k-Clean-up-rio_ioctl.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0085-OMAPDSS-VENC-fix-NULL-pointer-dereference-in-DSS2-VE.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0086-i2c-eg20t-change-timeout-value-50msec-to-1000msec.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0087-drm-i915-GEN7-Use-HW-scheduler-for-fixed-function-sh.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0088-mmc-sdio-avoid-spurious-calls-to-interrupt-handlers.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0089-smsusb-add-autodetection-support-for-USB-ID-2040-c0a.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0090-uvcvideo-Fix-ENUMINPUT-handling.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0091-drm-i915-Avoid-a-double-read-of-PCH_IIR-during-inter.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0092-b43legacy-Fix-error-due-to-MMIO-access-with-SSB-unpo.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0093-gpio-mpc8xxx-Prevent-NULL-pointer-deref-in-demux-han.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0094-drm-i915-don-t-clobber-the-pipe-param-in-sanitize_mo.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0095-spi-spi-fsl-spi-reference-correct-pdata-in-fsl_spi_c.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0096-xen-do-not-map-the-same-GSI-twice-in-PVHVM-guests.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0097-nouveau-nouveau_set_bo_placement-takes-TTM-flags.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0098-MCE-Fix-vm86-handling-for-32bit-mce-handler.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0099-x86-mce-Fix-check-for-processor-context-when-machine.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0100-tile-fix-bug-where-fls-0-was-not-returning-0.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0101-intel-iommu-Add-device-info-into-list-before-doing-c.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0102-ethtool-Null-terminate-filename-passed-to-ethtool_op.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0103-block-don-t-mark-buffers-beyond-end-of-disk-as-mappe.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0104-drivers-rtc-rtc-pl031.c-configure-correct-wday-for-2.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0105-rtlwifi-Preallocate-USB-read-buffers-and-eliminate-k.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0106-NFS4-fix-compile-warnings-in-nfs4proc.c.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0107-Avoid-reading-past-buffer-when-calling-GETACL.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0108-Avoid-beyond-bounds-copy-while-caching-ACL.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0109-i2c-tegra-notify-transfer-complete-after-clearing-st.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0110-i2c-davinci-Free-requested-IRQ-in-remove.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0111-x86-realmode-16-bit-real-mode-code-support-for-reloc.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0112-x86-relocs-Workaround-for-binutils-2.22.52.0.1-secti.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0113-x86-relocs-When-printing-an-error-say-relative-or-ab.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0114-x86-relocs-Build-clean-fix.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0115-x86-32-relocs-Whitelist-more-symbols-for-ld-bug-work.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0116-x86-relocs-Add-jiffies-and-jiffies_64-to-the-relativ.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0117-Linux-3.2.19.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0001-mtdoops-fix-the-oops_page_used-array-size.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0002-mtd-mtdoops-skip-reading-initially-bad-blocks.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0003-mtd-mtd_blkdevs-don-t-increase-open-count-on-error-p.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0004-mtd-tests-stresstest-bail-out-if-device-has-not-enou.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0005-drivers-rtc-interface.c-fix-alarm-rollover-when-day-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0006-ext4-add-missing-ext4_resize_end-on-error-paths.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0007-ext4-fix-undefined-behavior-in-ext4_fill_flex_info.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0008-ALSA-snd-usb-us122l-Delete-calls-to-preempt_disable.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0009-ALSA-HDA-Fix-master-control-for-Cirrus-Logic-421X.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0010-ALSA-HDA-Fix-automute-for-Cirrus-Logic-421x.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0011-ALSA-ice1724-Check-for-ac97-to-avoid-kernel-oops.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0012-ALSA-usb-audio-Avoid-flood-of-frame-active-debug-mes.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0013-ALSA-hda-Use-auto-parser-for-HP-laptops-with-cx20459.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0014-ALSA-hda-Return-the-error-from-get_wcaps_type-for-in.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0015-ALSA-hda-Fix-the-detection-of-Loopback-Mixing-contro.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0016-ALSA-hda-Fix-the-lost-power-setup-of-seconary-pins-a.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0017-drm-radeon-kms-workaround-invalid-AVI-infoframe-chec.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0018-drm-radeon-kms-disable-writeback-on-pre-R300-asics.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0019-radeon-Fix-disabling-PCI-bus-mastering-on-big-endian.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0020-pnfs-obj-pNFS-errors-are-communicated-on-iodata-pnfs.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0021-pnfs-obj-Must-return-layout-on-IO-error.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0022-NFS-Retry-mounting-NFSROOT.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0023-NFSv4.1-fix-backchannel-slotid-off-by-one-bug.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0024-NFS-fix-recent-breakage-to-NFS-error-handling.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0025-NFSv4-include-bitmap-in-nfsv4-get-acl-data.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0026-nfs-fix-regression-in-handling-of-context-option-in-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0027-HID-bump-maximum-global-item-tag-report-size-to-96-b.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0028-HID-wiimote-Select-INPUT_FF_MEMLESS.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0029-UBI-fix-missing-scrub-when-there-is-a-bit-flip.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0030-UBI-fix-use-after-free-on-error-path.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0031-PCI-Fix-PCI_EXP_TYPE_RC_EC-value.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0032-PCI-msi-Disable-msi-interrupts-when-we-initialize-a-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0033-x86-PCI-Ignore-CPU-non-addressable-_CRS-reserved-mem.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0034-x86-PCI-amd-factor-out-MMCONFIG-discovery.patch
delete mode 100644 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
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0036-SCSI-mpt2sas-Release-spinlock-for-the-raid-device-li.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0037-SCSI-mpt2sas-Fix-for-memory-allocation-error-for-lar.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0038-xen-xenbus-Reject-replies-with-payload-XENSTORE_PAYL.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0039-md-raid1-perform-bad-block-tests-for-WriteMostly-dev.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0040-ima-free-duplicate-measurement-memory.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0041-ima-fix-invalid-memory-reference.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0042-slub-fix-a-possible-memleak-in-__slab_alloc.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0043-PNP-work-around-Dell-1536-1546-BIOS-MMCONFIG-bug-tha.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0044-asix-fix-setting-custom-MAC-address-on-Asix-88178-de.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0045-asix-fix-setting-custom-MAC-address-on-Asix-88772-de.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0046-include-linux-crash_dump.h-needs-elf.h.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0047-rtl8192se-Fix-BUG-caused-by-failure-to-check-skb-all.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0048-mac80211-fix-rx-key-NULL-pointer-dereference-in-prom.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0049-ath9k-Fix-regression-in-channelwidth-switch-at-the-s.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0050-memcg-add-mem_cgroup_replace_page_cache-to-fix-LRU-i.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0051-x86-Fix-mmap-random-address-range.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0052-UBI-fix-nameless-volumes-handling.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0053-UBI-fix-debugging-messages.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0054-UBI-make-vid_hdr-non-static.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0055-UBIFS-fix-debugging-messages.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0056-UBIFS-make-debugging-messages-light-again.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0057-i2c-Fix-error-value-returned-by-several-bus-drivers.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0058-mmc-core-Fix-voltage-select-in-DDR-mode.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0059-mmc-sdhci-Fix-tuning-timer-incorrect-setting-when-su.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0060-mmc-sd-Fix-SDR12-timing-regression.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0061-V4L-DVB-v4l2-ioctl-integer-overflow-in-video_usercop.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0062-Unused-iocbs-in-a-batch-should-not-be-accounted-as-a.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0063-ftrace-Fix-unregister-ftrace_ops-accounting.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0064-kconfig-streamline-config.pl-Simplify-backslash-line.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0065-kconfig-streamline-config.pl-Fix-parsing-Makefile-wi.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0066-svcrpc-fix-double-free-on-shutdown-of-nfsd-after-cha.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0067-svcrpc-destroy-server-sockets-all-at-once.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0068-svcrpc-avoid-memory-corruption-on-pool-shutdown.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0069-nfsd4-fix-lockowner-matching.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0070-nfsd-Fix-oops-when-parsing-a-0-length-export.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0071-fsnotify-don-t-BUG-in-fsnotify_destroy_mark.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0072-x86-UV-Update-Boot-messages-for-SGI-UV2-platform.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0073-recordmcount-Fix-handling-of-elf64-big-endian-object.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0074-uvcvideo-Fix-integer-overflow-in-uvc_ioctl_ctrl_map.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0075-dcache-use-a-dispose-list-in-select_parent.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0076-fix-shrink_dcache_parent-livelock.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0077-pnfsblock-acquire-im_lock-in-_preload_range.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0078-pnfsblock-don-t-spinlock-when-freeing-block_dev.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0079-pnfsblock-limit-bio-page-count.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0080-mac80211-revert-on-channel-work-optimisations.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0081-HID-hid-multitouch-add-another-eGalax-id.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0082-HID-multitouch-cleanup-with-eGalax-PID-definitions.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0083-HID-multitouch-Add-egalax-ID-for-Acer-Iconia-W500.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0084-HID-multitouch-add-support-for-the-MSI-Windpad-110W.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0085-HID-hid-multitouch-add-support-for-new-Hanvon-panels.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0086-HID-multitouch-add-support-of-Atmel-multitouch-panel.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0087-HID-multitouch-add-support-for-3M-32.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0088-HID-hid-multitouch-add-support-9-new-Xiroku-devices.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0089-fix-cputime-overflow-in-uptime_proc_show.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0090-block-add-and-use-scsi_blk_cmd_ioctl.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0091-block-fail-SCSI-passthrough-ioctls-on-partition-devi.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0092-dm-do-not-forward-ioctls-from-logical-volumes-to-the.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0093-proc-clean-up-and-fix-proc-pid-mem-handling.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0094-ALSA-HDA-Use-LPIB-position-fix-for-Macbook-Pro-7-1.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0095-ALSA-virtuoso-Xonar-DS-fix-polarity-of-front-output.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0096-ALSA-HDA-Fix-internal-microphone-on-Dell-Studio-16-X.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0097-TOMOYO-Accept-000-as-a-valid-character.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0098-intel-idle-Make-idle-driver-more-robust.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0099-intel_idle-fix-API-misuse.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0100-ACPI-Store-SRAT-table-revision.patch
delete mode 100644 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
delete mode 100644 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
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0103-ACPICA-Put-back-the-call-to-acpi_os_validate_address.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0104-ACPI-processor-fix-acpi_get_cpuid-for-UP-processor.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0105-sym53c8xx-Fix-NULL-pointer-dereference-in-slave_dest.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0106-target-Set-response-format-in-INQUIRY-response.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0107-target-Set-additional-sense-length-field-in-sense-da.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0108-bcma-invalidate-the-mapped-core-over-suspend-resume.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0109-cx23885-dvb-check-if-dvb_attach-succeded.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0110-cx88-fix-don-t-duplicate-xc4000-entry-for-radio.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0111-tuner-Fix-numberspace-conflict-between-xc4000-and-pt.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0112-tracepoints-module-Fix-disabling-tracepoints-with-ta.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0113-x86-UV2-Fix-new-UV2-hardware-by-using-native-UV2-bro.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0114-x86-UV2-Fix-BAU-destination-timeout-initialization.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0115-x86-UV2-Work-around-BAU-bug.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0116-ath9k_hw-fix-interpretation-of-the-rx-KeyMiss-flag.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0117-rt2800pci-fix-spurious-interrupts-generation.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0118-xfs-fix-endian-conversion-issue-in-discard-code.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0119-i2c-eg20t-modified-the-setting-of-transfer-rate.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0120-score-fix-off-by-one-index-into-syscall-table.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0121-cifs-lower-default-wsize-when-unix-extensions-are-no.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0122-kprobes-initialize-before-using-a-hlist.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0123-proc-clear_refs-do-not-clear-reserved-pages.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0124-mm-fix-NULL-ptr-dereference-in-__count_immobile_page.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0125-iwlagn-check-for-SMPS-mode.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0126-iwlegacy-3945-fix-hw-passive-scan-on-radar-channels.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0127-SHM_UNLOCK-fix-long-unpreemptible-section.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0128-SHM_UNLOCK-fix-Unevictable-pages-stranded-after-swap.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0129-Linux-3.2.2.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0001-iommu-amd-Add-workaround-for-event-log-erratum.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0002-MIPS-BCM63XX-Add-missing-include-for-bcm63xx_gpio.h.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0003-cifs-Include-backup-intent-search-flags-during-searc.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0004-sunrpc-fix-loss-of-task-tk_status-after-rpc_delay-ca.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0005-exofs-Fix-CRASH-on-very-early-IO-errors.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0006-cifs-fix-oops-while-traversing-open-file-list-try-4.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0007-Fix-dm-multipath-starvation-when-scsi-host-is-busy.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0008-ixp4xx-fix-compilation-by-adding-gpiolib-support.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0009-drm-i915-properly-handle-interlaced-bit-for-sdvo-dtd.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0010-drm-i915-enable-vdd-when-switching-off-the-eDP-panel.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0011-drm-i915-Add-Clientron-E830-to-the-ignore-LVDS-list.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0012-drm-i915-Ignore-LVDS-on-hp-t5745-and-hp-st5747-thin-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0013-drm-i915-no-lvds-quirk-for-HP-t5740e-Thin-Client.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0014-drm-i915-wait-for-a-vblank-to-pass-after-tv-detect.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0015-drm-i915-Update-GEN6_RP_CONTROL-definitions.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0016-drm-i915-always-use-RPNSWREQ-for-turbo-change-reques.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0017-solos-pci-Fix-DMA-support.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0018-microblaze-Do-not-select-GENERIC_GPIO-by-default.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0019-fix-boot-failure-on-32-bit-systems-caused-by-branch-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0020-fix-TLB-fault-path-on-PA2.0-narrow-systems.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0021-iwlwifi-update-BT-traffic-load-states-correctly.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0022-iwlwifi-do-not-use-shadow-registers-by-default.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0023-wl1251-fix-oops-on-early-interrupt.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0024-NFSv4-Map-NFS4ERR_SHARE_DENIED-into-an-EACCES-error-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0025-drm-radeon-fix-XFX-quirk.patch
delete mode 100644 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
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0027-mac80211-fix-ADDBA-declined-after-suspend-with-wowla.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0028-mm-fork-fix-overflow-in-vma-length-when-copying-mmap.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0029-mm-consider-all-swapped-back-pages-in-used-once-logi.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0030-hugetlb-fix-resv_map-leak-in-error-path.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0031-mm-vmalloc.c-change-void-into-explict-vm_struct.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0032-mm-fix-faulty-initialization-in-vmalloc_init.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0033-fix-scsi_wait_scan.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0034-mm-fix-vma_resv_map-NULL-pointer.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0035-x86-amd-xen-Avoid-NULL-pointer-paravirt-references.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0036-slub-fix-a-memory-leak-in-get_partial_node.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0037-ext4-force-ro-mount-if-ext4_setup_super-fails.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0038-ext4-disallow-hard-linked-directory-in-ext4_lookup.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0039-mtd-nand-fix-scan_read_raw_oob.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0040-vfs-increment-iversion-when-a-file-is-truncated.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0041-vfs-umount_tree-might-be-called-on-subtree-that-had-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0042-ext4-add-missing-save_error_info-to-ext4_error.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0043-ALSA-usb-audio-fix-rate_list-memory-leak.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0044-ext4-add-ext4_mb_unload_buddy-in-the-error-path.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0045-ext4-remove-mb_groups-before-tearing-down-the-buddy_.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0046-drm-radeon-fix-bank-information-in-tiling-config.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0047-drm-radeon-properly-program-gart-on-rv740-juniper-cy.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0048-drm-radeon-fix-HD6790-HD6570-backend-programming.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0049-drm-ttm-Fix-spinlock-imbalance.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0050-drm-vmwgfx-Fix-nasty-write-past-alloced-memory-area.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0051-mtd-of_parts-fix-breakage-in-Kconfig.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0052-fec_mpc52xx-fix-timestamp-filtering.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0053-Bluetooth-btusb-Add-vendor-specific-ID-0a5c-21f3-for.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0054-Bluetooth-btusb-add-support-for-BCM20702A0-0a5c-21e6.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0055-Bluetooth-btusb-Add-USB-device-ID-0a5c-21e8.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0056-Bluetooth-btusb-typo-in-Broadcom-SoftSailing-id.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0057-Bluetooth-btusb-Add-vendor-specific-ID-0489-e042-for.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0058-Bluetooth-Add-support-for-Atheros-13d3-3362.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0059-Bluetooth-Add-support-for-AR3012-0cf3-e004.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0060-Add-Foxconn-Hon-Hai-IDs-for-btusb-module.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0061-Bluetooth-Add-support-for-Foxconn-Hon-Hai-AR5BBU22-0.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0062-drm-i915-Disable-FBC-on-SandyBridge.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0063-ipv4-Do-not-use-dead-fib_info-entries.patch
delete mode 100644 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
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0065-set-fake_rtable-s-dst-to-NULL-to-avoid-kernel-Oops.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0066-ipv6-fix-incorrect-ipsec-fragment.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0067-l2tp-fix-oops-in-L2TP-IP-sockets-for-connect-AF_UNSP.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0068-r8169-missing-barriers.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0069-r8169-fix-early-queue-wake-up.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0070-r8169-fix-unsigned-int-wraparound-with-TSO.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0071-Revert-net-maintain-namespace-isolation-between-vlan.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0072-sctp-check-cached-dst-before-using-it.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0073-skb-avoid-unnecessary-reallocations-in-__skb_cow.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0074-xfrm-take-net-hdr-len-into-account-for-esp-payload-s.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0075-ACPI-battery-only-refresh-the-sysfs-files-when-perti.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0076-target-file-Use-O_DSYNC-by-default-for-FILEIO-backen.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0077-iommu-amd-Cache-pdev-pointer-to-root-bridge.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0078-drm-radeon-kms-add-new-Palm-Sumo-PCI-ids.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0079-drm-radeon-kms-add-new-BTC-PCI-ids.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0080-btree-fix-tree-corruption-in-btree_get_prev.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0081-kbuild-install-kernel-page-flags.h.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0082-asix-allow-full-size-8021Q-frames-to-be-received.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0083-ext4-don-t-trash-state-flags-in-EXT4_IOC_SETFLAGS.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0084-ext4-don-t-set-i_flags-in-EXT4_IOC_SETFLAGS.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0085-ext4-fix-the-free-blocks-calculation-for-ext3-file-s.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0086-Linux-3.2.20.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0001-drm-i915-Mark-the-ringbuffers-as-being-in-the-GTT-do.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0002-drm-i915-hold-forcewake-around-ring-hw-init.patch
delete mode 100644 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
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0004-drm-i915-fix-up-ivb-plane-3-pageflips.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0005-char-agp-add-another-Ironlake-host-bridge.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0006-x86-uv-Fix-UV2-BAU-legacy-mode.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0007-powerpc-Fix-kernel-panic-during-kernel-module-load.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0008-drm-nouveau-determine-a-value-for-display_info.bpc-i.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0009-drm-nouveau-default-to-8bpc-for-non-LVDS-panels-if-E.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0010-drm-nouveau-disp-fix-dithering-not-being-enabled-on-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0011-fuse-fix-stat-call-on-32-bit-platforms.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0012-x86-MCE-AMD-Make-APIC-LVT-thresholding-interrupt-opt.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0013-x86-amd-Re-enable-CPU-topology-extensions-in-case-BI.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0014-hwmon-fam15h_power-Increase-output-resolution.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0015-sched-Fix-the-relax_domain_level-boot-parameter.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0016-iwlwifi-don-t-mess-up-the-SCD-when-removing-a-key.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0017-hwrng-atmel-rng-fix-race-condition-leading-to-repeat.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0018-crypto-aesni-intel-fix-unaligned-cbc-decrypt-for-x86.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0019-xen-setup-filter-APERFMPERF-cpuid-feature-out.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0020-NFSv4.1-Fix-a-request-leak-on-the-back-channel.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0021-can-c_can-fix-BUG-echo_skb-is-occupied-during-transm.patch
delete mode 100644 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
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0023-can-c_can-fix-race-condition-in-c_can_open.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0024-ARM-i.MX53-Fix-PLL4-base-address.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0025-usb-musb_gadget-fix-crash-caused-by-dangling-pointer.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0026-mac80211-clean-up-remain-on-channel-on-interface-sto.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0027-rt2x00-use-atomic-variable-for-seqno.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0028-iwlwifi-disable-WoWLAN-if-CONFIG_PM_SLEEP.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0029-ASoC-wm8994-Ensure-all-AIFnCLK-events-are-run-from-t.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0030-ASoC-wm8994-Apply-volume-updates-with-clocks-enabled.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0031-iwlwifi-unregister-LEDs-if-mac80211-registration-fai.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0032-cfg80211-fix-interface-combinations-check.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0033-mpt2sas-Fix-unsafe-using-smp_processor_id-in-preempt.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0034-net-sierra_net-device-IDs-for-Aircard-320U.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0035-ARM-imx6-exit-coherency-when-shutting-down-a-cpu.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0036-ARM-i.MX-imx21ads-Fix-overlapping-static-i-o-mapping.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0037-NFSv4-Fix-unnecessary-delegation-returns-in-nfs4_do_.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0038-iwlwifi-use-correct-supported-firmware-for-6035-and-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0039-iwlwifi-disable-the-buggy-chain-extension-feature-in.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0040-ALSA-hda-Add-codec-no_jack_detect-flag.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0041-ALSA-hda-add-support-for-Uniwill-ECS-M31EI-notebook.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0042-ALSA-hda-Suppress-auto-mute-feature-on-some-machines.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0043-ALSA-hda-Add-another-jack-detection-suppression-for-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0044-ALSA-HDA-Pin-fixup-for-Zotac-Z68-motherboard.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0045-usb-cdc-wdm-Add-device-id-for-Huawei-3G-LTE-modems.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0046-USB-qcserial-Add-Sierra-Wireless-device-IDs.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0047-USB-ftdi-sio-Add-support-for-RT-Systems-USB-RTS01-se.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0048-USB-serial-cp210x-add-Optris-MS-Pro-usb-id.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0049-USB-serial-sierra-Add-support-for-Sierra-Wireless-Ai.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0050-USB-option-Updated-Huawei-K4605-has-better-id.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0051-USB-mct_u232-Fix-incorrect-TIOCMSET-return.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0052-USB-option-fix-port-data-abuse.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0053-USB-option-fix-memory-leak.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0054-USB-option-add-more-YUGA-device-ids.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0055-target-Return-error-to-initiator-if-SET-TARGET-PORT-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0056-USB-add-NO_D3_DURING_SLEEP-flag-and-revert-151b61284.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0057-USB-serial-Enforce-USB-driver-and-USB-serial-driver-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0058-xhci-Fix-invalid-loop-check-in-xhci_free_tt_info.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0059-xhci-Don-t-free-endpoints-in-xhci_mem_cleanup.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0060-xHCI-Increase-the-timeout-for-controller-save-restor.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0061-usb-PS3-EHCI-QH-read-work-around.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0062-USB-fix-PS3-EHCI-systems.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0063-usb-cdc-acm-fix-devices-not-unthrottled-on-open.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0064-USB-fix-gathering-of-interface-associations.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0065-swap-fix-shmem-swapping-when-more-than-8-areas.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0066-drm-radeon-add-some-additional-6xx-7xx-EG-register-i.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0067-Linux-3.2.21.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0001-staging-iio-ad7606-Re-add-missing-scale-attribute.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0002-Tools-hv-verify-origin-of-netlink-connector-message.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0003-edac-avoid-mce-decoding-crash-after-edac-driver-unlo.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0004-hwrng-atmel-rng-fix-data-valid-check.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0005-staging-r8712u-Add-new-USB-IDs.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0006-hwmon-applesmc-Limit-key-length-in-warning-messages.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0007-mm-pmd_read_atomic-fix-32bit-PAE-pmd-walk-vs-pmd_pop.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0008-thp-avoid-atomic64_read-in-pmd_read_atomic-for-32bit.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0009-nilfs2-ensure-proper-cache-clearing-for-gc-inodes.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0010-drm-i915-Finish-any-pending-operations-on-the-frameb.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0011-drm-i915-Remove-use-of-the-autoreported-ringbuffer-H.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0012-e1000e-Disable-ASPM-L1-on-82574.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0013-e1000e-Remove-special-case-for-82573-82574-ASPM-L1-d.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0014-drm-i915-Do-the-fallback-non-IRQ-wait-in-ring-thrott.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0015-staging-rts_pstor-Fix-possible-panic-by-NULL-pointer.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0016-gspca-core-Fix-buffers-staying-in-queued-state-after.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0017-smsusb-add-autodetection-support-for-USB-ID-2040-f5a.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0018-drm-edid-don-t-return-stack-garbage-from-supports_rb.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0019-drm-nouveau-fbcon-using-nv_two_heads-is-not-a-good-i.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0020-dm-thin-reinstate-missing-mempool_free-in-cell_relea.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0021-ath9k-Fix-a-WARNING-on-suspend-resume-with-IBSS.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0022-cfg80211-fix-potential-deadlock-in-regulatory.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0023-ath9k-Fix-softlockup-in-AR9485.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0024-can-c_can-precedence-error-in-c_can_chip_config.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0025-ath9k-fix-a-tx-rate-duration-calculation-bug.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0026-batman-adv-fix-skb-data-assignment.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0027-ARM-SAMSUNG-Should-check-for-IS_ERR-clk-instead-of-N.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0028-ath9k_hw-avoid-possible-infinite-loop-in-ar9003_get_.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0029-iwlwifi-remove-log_event-debugfs-file-debugging-is-d.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0030-ARM-SAMSUNG-Fix-for-S3C2412-EBI-memory-mapping.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0031-USB-option-add-id-for-Cellient-MEN-200.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0032-oprofile-perf-use-NR_CPUS-instead-or-nr_cpumask_bits.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0033-drm-i915-Refactor-the-deferred-PM_IIR-handling-into-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0034-drm-i915-rip-out-the-PM_IIR-WARN.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0035-drm-i915-Fix-eDP-blank-screen-after-S3-resume-on-HP-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0036-PM-Sleep-Prevent-waiting-forever-on-asynchronous-sus.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0037-x86-cpufeature-Rename-X86_FEATURE_DTS-to-X86_FEATURE.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0038-stable-Allow-merging-of-backports-for-serious-user-v.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0039-ALSA-hda-Add-Realtek-ALC280-codec-support.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0040-USB-option-Add-USB-ID-for-Novatel-Ovation-MC551.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0041-USB-CP210x-Add-10-Device-IDs.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0042-xen-netfront-teardown-the-device-before-unregisterin.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0043-can-flexcan-use-be32_to_cpup-to-handle-the-value-of-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0044-acpi_pad-fix-power_saving-thread-deadlock.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0045-batman-adv-only-drop-packets-of-known-wifi-clients.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0046-Linux-3.2.22.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0001-splice-fix-racy-pipe-buffers-uses.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0002-umem-fix-up-unplugging.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0003-mwifiex-fix-11n-rx-packet-drop-issue.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0004-mwifiex-fix-WPS-eapol-handshake-failure.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0005-NFC-Prevent-multiple-buffer-overflows-in-NCI.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0006-ath9k-fix-dynamic-WEP-related-regression.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0007-NFC-Return-from-rawsock_release-when-sk-is-NULL.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0008-rtlwifi-rtl8192cu-New-USB-IDs.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0009-ath9k-enable-serialize_regmode-for-non-PCIE-AR9287.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0010-mac80211-correct-behaviour-on-unrecognised-action-fr.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0011-ASoC-tlv320aic3x-Fix-codec-pll-configure-bug.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0012-powerpc-xmon-Use-cpumask-iterator-to-avoid-warning.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0013-powerpc-kvm-sldi-should-be-sld.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0014-md-raid10-Don-t-try-to-recovery-unmatched-and-unused.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0015-md-raid5-Do-not-add-data_offset-before-call-to-is_ba.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0016-md-raid5-In-ops_run_io-inc-nr_pending-before-calling.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0017-md-raid10-fix-failure-when-trying-to-repair-a-read-e.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0018-drm-i915-kick-any-firmware-framebuffers-before-claim.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0019-dm-persistent-data-fix-shadow_info_leak-on-dm_tm_des.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0020-dm-persistent-data-handle-space-map-checker-creation.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0021-dm-persistent-data-fix-allocation-failure-in-space-m.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0022-ALSA-hda-Fix-power-map-regression-for-HP-dv6-co.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0023-tracing-change-CPU-ring-buffer-state-from-tracing_cp.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0024-mwifiex-fix-wrong-return-values-in-add_virtual_intf-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0025-udf-Use-ret-instead-of-abusing-i-in-udf_load_logical.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0026-udf-Avoid-run-away-loop-when-partition-table-length-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0027-udf-Fortify-loading-of-sparing-table.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0028-ARM-fix-rcu-stalls-on-SMP-platforms.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0029-net-sock-validate-data_len-before-allocating-skb-in-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0030-cipso-handle-CIPSO-options-correctly-when-NetLabel-i.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0031-net-l2tp_eth-fix-kernel-panic-on-rmmod-l2tp_eth.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0032-l2tp-fix-a-race-in-l2tp_ip_sendmsg.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0033-sky2-fix-checksum-bit-management-on-some-chips.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0034-be2net-fix-a-race-in-be_xmit.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0035-dummy-fix-rcu_sched-self-detected-stalls.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0036-bonding-Fix-corrupted-queue_mapping.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0037-ethtool-allow-ETHTOOL_GSSET_INFO-for-users.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0038-netpoll-fix-netpoll_send_udp-bugs.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0039-ipv6-Move-ipv6-proc-file-registration-to-end-of-init.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0040-bridge-Assign-rtnl_link_ops-to-bridge-devices-create.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0041-Btrfs-run-delayed-directory-updates-during-log-repla.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0042-cifs-when-server-doesn-t-set-CAP_LARGE_READ_X-cap-de.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0043-ocfs2-clear-unaligned-io-flag-when-dio-fails.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0044-aio-make-kiocb-private-NUll-in-init_sync_kiocb.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0045-mtd-cafe_nand-fix-an-vs-mistake.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0046-mm-Hold-a-file-reference-in-madvise_remove.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0047-tcm_fc-Resolve-suspicious-RCU-usage-warnings.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0048-vfs-make-O_PATH-file-descriptors-usable-for-fchdir.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0049-Linux-3.2.23.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0001-samsung-laptop-make-the-dmi-check-less-strict.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0002-raid5-delayed-stripe-fix.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0003-tcp-drop-SYN-FIN-messages.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0004-tg3-Apply-short-DMA-frag-workaround-to-5906.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0005-rtl8187-brightness_set-can-not-sleep.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0006-net-wireless-ipw2x00-add-supported-cipher-suites-to-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0007-drm-i915-do-not-enable-RC6p-on-Sandy-Bridge.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0008-drm-i915-fix-operator-precedence-when-enabling-RC6p.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0009-kbuild-do-not-check-for-ancient-modutils-tools.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0010-brcmsmac-INTERMEDIATE-but-not-AMPDU-only-when-tracin.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0011-NFSv4-Rate-limit-the-state-manager-for-lock-reclaim-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0012-ext4-Report-max_batch_time-option-correctly.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0013-hugepages-fix-use-after-free-bug-in-quota-handling.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0014-NFSv4-Reduce-the-footprint-of-the-idmapper.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0015-NFSv4-Further-reduce-the-footprint-of-the-idmapper.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0016-macvtap-zerocopy-fix-offset-calculation-when-buildin.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0017-macvtap-zerocopy-fix-truesize-underestimation.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0018-macvtap-zerocopy-put-page-when-fail-to-get-all-reque.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0019-macvtap-zerocopy-set-SKBTX_DEV_ZEROCOPY-only-when-sk.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0020-macvtap-zerocopy-validate-vectors-before-building-sk.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0021-KVM-Fix-buffer-overflow-in-kvm_set_irq.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0022-scsi-Silence-unnecessary-warnings-about-ioctl-to-par.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0023-epoll-clear-the-tfile_check_list-on-ELOOP.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0024-iommu-amd-Fix-missing-iommu_shutdown-initialization-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0025-iommu-amd-Initialize-dma_ops-for-hotplug-and-sriov-d.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0026-usb-Add-support-for-root-hub-port-status-CAS.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0027-gpiolib-wm8994-Pay-attention-to-the-value-set-when-e.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0028-sched-nohz-Rewrite-and-fix-load-avg-computation-agai.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0029-USB-option-add-ZTE-MF60.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0030-USB-option-Add-MEDIATEK-product-ids.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0031-USB-cdc-wdm-fix-lockup-on-error-in-wdm_read.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0032-mtd-nandsim-don-t-open-code-a-do_div-helper.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0033-dvb-core-Release-semaphore-on-error-path-dvb_registe.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0034-hwspinlock-core-use-global-ID-to-register-hwspinlock.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0035-libsas-fix-taskfile-corruption-in-sas_ata_qc_fill_rt.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0036-md-raid1-fix-use-after-free-bug-in-RAID1-data-check-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0037-PCI-EHCI-fix-crash-during-suspend-on-ASUS-computers.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0038-memory-hotplug-fix-invalid-memory-access-caused-by-s.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0039-ocfs2-fix-NULL-pointer-dereference-in-__ocfs2_change.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0040-mm-thp-abort-compaction-if-migration-page-cannot-be-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0041-drivers-rtc-rtc-mxc.c-fix-irq-enabled-interrupts-war.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0042-fs-ramfs-file-nommu-add-SetPageUptodate.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0043-cpufreq-ACPI-Fix-not-loading-acpi-cpufreq-driver-reg.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0044-hwmon-it87-Preserve-configuration-register-bits-on-i.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0045-ARM-SAMSUNG-fix-race-in-s3c_adc_start-for-ADC.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0046-block-fix-infinite-loop-in-__getblk_slow.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0047-Remove-easily-user-triggerable-BUG-from-generic_setl.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0048-NFC-Export-nfc.h-to-userland.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0049-PM-Hibernate-Hibernate-thaw-fixes-improvements.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0050-cfg80211-check-iface-combinations-only-when-iface-is.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0051-intel_ips-blacklist-HP-ProBook-laptops.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0052-atl1c-fix-issue-of-transmit-queue-0-timed-out.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0053-rt2x00usb-fix-indexes-ordering-on-RX-queue-kick.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0054-iwlegacy-always-monitor-for-stuck-queues.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0055-iwlegacy-don-t-mess-up-the-SCD-when-removing-a-key.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0056-e1000e-Correct-link-check-logic-for-82571-serdes.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0057-tcm_fc-Fix-crash-seen-with-aborts-and-large-reads.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0058-fifo-Do-not-restart-open-if-it-already-found-a-partn.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0059-target-Clean-up-returning-errors-in-PR-handling-code.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0060-target-Fix-range-calculation-in-WRITE-SAME-emulation.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0061-cifs-on-CONFIG_HIGHMEM-machines-limit-the-rsize-wsiz.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0062-cifs-always-update-the-inode-cache-with-the-results-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0063-mm-fix-lost-kswapd-wakeup-in-kswapd_stop.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0064-md-avoid-crash-when-stopping-md-array-races-with-clo.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0065-md-raid1-close-some-possible-races-on-write-errors-d.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0066-MIPS-Properly-align-the-.data.init_task-section.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0067-UBIFS-fix-a-bug-in-empty-space-fix-up.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0068-ore-Fix-NFS-crash-by-supporting-any-unaligned-RAID-I.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0069-ore-Remove-support-of-partial-IO-request-NFS-crash.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0070-pnfs-obj-don-t-leak-objio_state-if-ore_write-read-fa.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0071-pnfs-obj-Fix-__r4w_get_page-when-offset-is-beyond-i_.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0072-dm-raid1-fix-crash-with-mirror-recovery-and-discard.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0073-dm-raid1-set-discard_zeroes_data_unsupported.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0074-ntp-Fix-leap-second-hrtimer-livelock.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0075-ntp-Correct-TAI-offset-during-leap-second.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0076-timekeeping-Fix-CLOCK_MONOTONIC-inconsistency-during.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0077-time-Move-common-updates-to-a-function.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0078-hrtimer-Provide-clock_was_set_delayed.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0079-timekeeping-Fix-leapsecond-triggered-load-spike-issu.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0080-timekeeping-Maintain-ktime_t-based-offsets-for-hrtim.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0081-hrtimers-Move-lock-held-region-in-hrtimer_interrupt.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0082-timekeeping-Provide-hrtimer-update-function.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0083-hrtimer-Update-hrtimer-base-offsets-each-hrtimer_int.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0084-timekeeping-Add-missing-update-call-in-timekeeping_r.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0085-powerpc-Fix-wrong-divisor-in-usecs_to_cputime.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0086-vhost-don-t-forget-to-schedule.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0087-r8169-call-netif_napi_del-at-errpaths-and-at-driver-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0088-bnx2x-fix-checksum-validation.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0089-bnx2x-fix-panic-when-TX-ring-is-full.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0090-net-remove-skb_orphan_try.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0091-ACPI-Make-acpi_skip_timer_override-cover-all-source_.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0092-ACPI-Remove-one-board-specific-WARN-when-ignoring-ti.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0093-ACPI-Add-a-quirk-for-AMILO-PRO-V2030-to-ignore-the-t.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0094-ACPI-x86-fix-Dell-M6600-ACPI-reboot-regression-via-D.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0095-ACPI-sysfs.c-strlen-fix.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0096-eCryptfs-Gracefully-refuse-miscdev-file-ops-on-inher.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0097-eCryptfs-Fix-lockdep-warning-in-miscdev-operations.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0098-eCryptfs-Properly-check-for-O_RDONLY-flag-before-doi.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0099-ACPI-PM-Make-acpi_pm_device_sleep_state-follow-the-s.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0100-ipheth-add-support-for-iPad.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0101-stmmac-Fix-for-nfs-hang-on-multiple-reboot.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0102-bonding-debugfs-and-network-namespaces-are-incompati.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0103-bonding-Manage-proc-net-bonding-entries-from-the-net.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0104-Input-bcm5974-Add-support-for-2012-MacBook-Pro-Retin.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0105-Input-xpad-handle-all-variations-of-Mad-Catz-Beat-Pa.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0106-Input-xpad-add-signature-for-Razer-Onza-Tournament-E.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0107-Input-xpad-add-Andamiro-Pump-It-Up-pad.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0108-HID-add-support-for-2012-MacBook-Pro-Retina.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0109-Linux-3.2.24.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0001-mm-reduce-the-amount-of-work-done-when-updating-min_.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0002-mm-compaction-allow-compaction-to-isolate-dirty-page.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0003-mm-compaction-determine-if-dirty-pages-can-be-migrat.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0004-mm-page-allocator-do-not-call-direct-reclaim-for-THP.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0005-mm-compaction-make-isolate_lru_page-filter-aware-aga.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0006-mm-compaction-introduce-sync-light-migration-for-use.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0007-mm-vmscan-when-reclaiming-for-compaction-ensure-ther.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0008-mm-vmscan-do-not-OOM-if-aborting-reclaim-to-start-co.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0009-mm-vmscan-check-if-reclaim-should-really-abort-even-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0010-vmscan-promote-shared-file-mapped-pages.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0011-vmscan-activate-executable-pages-after-first-usage.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0012-mm-vmscan.c-consider-swap-space-when-deciding-whethe.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0013-mm-test-PageSwapBacked-in-lumpy-reclaim.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0014-mm-vmscan-convert-global-reclaim-to-per-memcg-LRU-li.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0015-cpuset-mm-reduce-large-amounts-of-memory-barrier-rel.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0016-mm-hugetlb-fix-warning-in-alloc_huge_page-dequeue_hu.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0017-Fix-NULL-dereferences-in-scsi_cmd_to_driver.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0018-sched-nohz-Fix-rq-cpu_load-calculations.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0019-sched-nohz-Fix-rq-cpu_load-calculations-some-more.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0020-powerpc-ftrace-Fix-assembly-trampoline-register-usag.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0021-cx25821-Remove-bad-strcpy-to-read-only-char.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0022-x86-Fix-boot-on-Twinhead-H12Y.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0023-r8169-RxConfig-hack-for-the-8168evl.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0024-cifs-when-CONFIG_HIGHMEM-is-set-serialize-the-read-w.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0025-wireless-rt2x00-rt2800usb-add-more-devices-ids.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0026-wireless-rt2x00-rt2800usb-more-devices-were-identifi.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0027-rt2800usb-2001-3c17-is-an-RT3370-device.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0028-usb-gadget-Fix-g_ether-interface-link-status.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0029-ext4-pass-a-char-to-ext4_count_free-instead-of-a-buf.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0030-ftrace-Disable-function-tracing-during-suspend-resum.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0031-x86-microcode-microcode_core.c-simple_strtoul-cleanu.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0032-x86-microcode-Sanitize-per-cpu-microcode-reloading-i.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0033-usbdevfs-Correct-amount-of-data-copied-to-user-in-pr.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0034-ext4-fix-overhead-calculation-used-by-ext4_statfs.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0035-udf-Improve-table-length-check-to-avoid-possible-ove.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0036-powerpc-Add-memory-attribute-for-mfmsr.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0037-mwifiex-correction-in-mcs-index-check.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0038-USB-option-Ignore-ZTE-Vodafone-K3570-71-net-interfac.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0039-USB-option-add-ZTE-MF821D.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0040-target-Add-generation-of-LOGICAL-BLOCK-ADDRESS-OUT-O.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0041-target-Add-range-checking-to-UNMAP-emulation.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0042-target-Fix-reading-of-data-length-fields-for-UNMAP-c.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0043-target-Fix-possible-integer-underflow-in-UNMAP-emula.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0044-target-Check-number-of-unmap-descriptors-against-our.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0045-s390-idle-fix-sequence-handling-vs-cpu-hotplug.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0046-rtlwifi-rtl8192de-Fix-phy-based-version-calculation.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0047-workqueue-perform-cpu-down-operations-from-low-prior.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0048-ALSA-hda-Add-support-for-Realtek-ALC282.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0049-iommu-amd-Fix-hotplug-with-iommu-pt.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0050-drm-radeon-Try-harder-to-avoid-HW-cursor-ending-on-a.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0051-ALSA-hda-Turn-on-PIN_OUT-from-hdmi-playback-prepare.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0052-block-add-blk_queue_dead.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0053-Fix-device-removal-NULL-pointer-dereference.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0054-Avoid-dangling-pointer-in-scsi_requeue_command.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0055-fix-hot-unplug-vs-async-scan-race.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0056-fix-eh-wakeup-scsi_schedule_eh-vs-scsi_restart_opera.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0057-libsas-continue-revalidation.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0058-libsas-fix-sas_discover_devices-return-code-handling.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0059-iscsi-target-Drop-bogus-struct-file-usage-for-iSCSI-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0060-mmc-sdhci-pci-CaFe-has-broken-card-detection.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0061-ext4-don-t-let-i_reserved_meta_blocks-go-negative.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0062-ext4-undo-ext4_calc_metadata_amount-if-we-fail-to-cl.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0063-ASoC-dapm-Fix-_PRE-and-_POST-events-for-DAPM-perform.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0064-locks-fix-checking-of-fcntl_setlease-argument.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0065-ACPI-AC-prevent-OOPS-on-some-boxes-due-to-missing-ch.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0066-drm-radeon-fix-bo-creation-retry-path.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0067-drm-radeon-fix-non-revealent-error-message.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0068-drm-radeon-fix-hotplug-of-DP-to-DVI-HDMI-passive-ada.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0069-drm-radeon-on-hotplug-force-link-training-to-happen-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0070-Btrfs-call-the-ordered-free-operation-without-any-lo.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0071-nouveau-Fix-alignment-requirements-on-src-and-dst-ad.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0072-mm-fix-wrong-argument-of-migrate_huge_pages-in-soft_.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0073-Linux-3.2.25.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.26/0001-x86-Simplify-code-by-removing-a-SMP-ifdefs-from-stru.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.26/0002-Linux-3.2.26.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0001-sched-Fix-race-in-task_group.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0002-floppy-Cleanup-disk-queue-before-caling-put_disk-if-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0003-xen-mark-local-pages-as-FOREIGN-in-the-m2p_override.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0004-lirc_sir-make-device-registration-work.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0005-stable-update-references-to-older-2.6-versions-for-3.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0006-ALSA-hda-add-dock-support-for-Thinkpad-X230-Tablet.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0007-cfg80211-fix-interface-combinations-check-for-ADHOC-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0008-m68k-Correct-the-Atari-ALLOWINT-definition.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0009-ene_ir-Fix-driver-initialisation.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0010-nfsd4-our-filesystems-are-normally-case-sensitive.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0011-random-Use-arch_get_random_int-instead-of-cycle-coun.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0012-random-Use-arch-specific-RNG-to-initialize-the-entro.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0013-random-Adjust-the-number-of-loops-when-initializing.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0014-random-make-add_interrupt_randomness-do-something-sa.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0015-random-use-lockless-techniques-in-the-interrupt-path.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0016-random-create-add_device_randomness-interface.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0017-usb-feed-USB-device-information-to-the-dev-random-dr.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0018-net-feed-dev-random-with-the-MAC-address-when-regist.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0019-random-use-the-arch-specific-rng-in-xfer_secondary_p.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0020-random-add-new-get_random_bytes_arch-function.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0021-rtc-wm831x-Feed-the-write-counter-into-device_add_ra.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0022-mfd-wm831x-Feed-the-device-UUID-into-device_add_rand.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0023-ASoC-wm8994-Ensure-there-are-enough-BCLKs-for-four-c.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0024-futex-Test-for-pi_mutex-on-fault-in-futex_wait_reque.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0025-futex-Fix-bug-in-WARN_ON-for-NULL-q.pi_state.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0026-futex-Forbid-uaddr-uaddr2-in-futex_wait_requeue_pi.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0027-video-smscufx-fix-line-counting-in-fb_write.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0028-Input-synaptics-handle-out-of-bounds-values-from-the.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0029-ALSA-hda-Fix-invalid-D3-of-headphone-DAC-on-VT202x-c.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0030-ALSA-mpu401-Fix-missing-initialization-of-irq-field.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0031-x86-nops-Missing-break-resulting-in-incorrect-select.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0032-s390-mm-downgrade-page-table-after-fork-of-a-31-bit-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0033-Redefine-ATOMIC_INIT-and-ATOMIC64_INIT-to-drop-the-c.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0034-dm-thin-reduce-endio_hook-pool-size.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0035-dm-thin-fix-memory-leak-in-process_prepared_mapping-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0036-random-mix-in-architectural-randomness-in-extract_bu.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0037-asus-wmi-use-ASUS_WMI_METHODID_DSTS2-as-default-DSTS.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0038-virtio-blk-Use-block-layer-provided-spinlock.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0039-s390-mm-fix-fault-handling-for-page-table-walk-case.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0040-nfs-skip-commit-in-releasepage-if-we-re-freeing-memo.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0041-md-raid1-don-t-abort-a-resync-on-the-first-badblock.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0042-pcdp-use-early_ioremap-early_iounmap-to-access-pcdp-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0043-lib-vsprintf.c-kptr_restrict-fix-pK-error-in-SysRq-s.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0044-nilfs2-fix-deadlock-issue-between-chcp-and-thaw-ioct.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0045-SUNRPC-return-negative-value-in-case-rpcbind-client-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0046-ARM-7467-1-mutex-use-generic-xchg-based-implementati.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0047-ARM-7476-1-vfp-only-clear-vfp-state-for-current-cpu-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0048-ARM-7477-1-vfp-Always-save-VFP-state-in-vfp_pm_suspe.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0049-ARM-7478-1-errata-extend-workaround-for-erratum-7207.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0050-ARM-Fix-undefined-instruction-exception-handling.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0051-USB-echi-dbgp-increase-the-controller-wait-time-to-c.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0052-ASoC-wm8962-Allow-VMID-time-to-fully-ramp.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0053-mm-page_alloc.c-remove-pageblock_default_order.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0054-mm-setup-pageblock_order-before-it-s-used-by-sparsem.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0055-mm-mmu_notifier-fix-freed-page-still-mapped-in-secon.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0056-mm-hugetlbfs-close-race-during-teardown-of-hugetlbfs.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0057-ALSA-snd-usb-fix-clock-source-validity-index.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0058-ALSA-hda-Support-dock-on-Lenovo-Thinkpad-T530-with-A.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0059-ore-Fix-out-of-bounds-access-in-_ios_obj.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0060-m68k-Make-sys_atomic_cmpxchg_32-work-on-classic-m68k.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0061-drm-i915-prefer-wide-slow-to-fast-narrow-in-DP-confi.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0062-rt2x00-Add-support-for-BUFFALO-WLI-UC-GNM2-to-rt2800.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0063-drop_monitor-fix-sleeping-in-invalid-context-warning.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0064-drop_monitor-Make-updating-data-skb-smp-safe.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0065-drop_monitor-prevent-init-path-from-scheduling-on-th.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0066-drop_monitor-dont-sleep-in-atomic-context.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0067-pch_uart-Fix-missing-break-for-16-byte-fifo.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0068-pch_uart-Fix-rx-error-interrupt-setting-issue.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0069-pch_uart-Fix-parity-setting-issue.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0070-Linux-3.2.27.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0001-bnx2-Fix-bug-in-bnx2_free_tx_skbs.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0002-sch_sfb-Fix-missing-NULL-check.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0003-sctp-Fix-list-corruption-resulting-from-freeing-an-a.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0004-caif-Fix-access-to-freed-pernet-memory.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0005-cipso-don-t-follow-a-NULL-pointer-when-setsockopt-is.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0006-caif-fix-NULL-pointer-check.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0007-wanmain-comparing-array-with-NULL.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0008-tcp-Add-TCP_USER_TIMEOUT-negative-value-check.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0009-USB-kaweth.c-use-GFP_ATOMIC-under-spin_lock.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0010-net-fix-rtnetlink-IFF_PROMISC-and-IFF_ALLMULTI-handl.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0011-tcp-perform-DMA-to-userspace-only-if-there-is-a-task.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0012-net-tun-fix-ioctl-based-info-leaks.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0013-e1000-add-dropped-DMA-receive-enable-back-in-for-WoL.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0014-rtlwifi-rtl8192cu-Change-buffer-allocation-for-synch.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0015-hfsplus-fix-overflow-in-sector-calculations-in-hfspl.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0016-drm-i915-fixup-seqno-allocation-logic-for-lazy_reque.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0017-KVM-VMX-Advertise-CPU_BASED_RDPMC_EXITING-for-nested.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0018-mac80211-cancel-mesh-path-timer.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0019-ath9k-Add-PID-VID-support-for-AR1111.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0020-ARM-mxs-Remove-MMAP_MIN_ADDR-setting-from-mxs_defcon.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0021-ALSA-hda-add-dock-support-for-Thinkpad-T430s.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0022-cfg80211-process-pending-events-when-unregistering-n.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0023-rt61pci-fix-NULL-pointer-dereference-in-config_lna_g.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0024-iwlwifi-disable-greenfield-transmissions-as-a-workar.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0025-ALSA-hda-add-dock-support-for-Thinkpad-X230.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0026-e1000e-NIC-goes-up-and-immediately-goes-down.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0027-ALSA-hda-remove-quirk-for-Dell-Vostro-1015.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0028-ALSA-hda-Fix-double-quirk-for-Quanta-FL1-Lenovo-Idea.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0029-ARM-pxa-remove-irq_to_gpio-from-ezx-pcap-driver.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0030-Input-eeti_ts-pass-gpio-value-instead-of-IRQ.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0031-drm-i915-Add-wait_for-in-init_ring_common.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0032-drm-i915-correctly-order-the-ring-init-sequence.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0033-s390-compat-fix-compat-wrappers-for-process_vm-syste.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0034-s390-compat-fix-mmap-compat-system-calls.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0035-drm-radeon-fix-bank-tiling-parameters-on-evergreen.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0036-drm-radeon-fix-bank-tiling-parameters-on-cayman.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0037-drm-radeon-do-not-reenable-crtc-after-moving-vram-st.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0038-Linux-3.2.28.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0001-ALSA-hda-Fix-buffer-alignment-regression-with-Nvidia.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0002-ALSA-hda-Fix-silent-outputs-from-docking-station-jac.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0003-eCryptfs-Sanitize-write-counts-of-dev-ecryptfs.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0004-ecryptfs-Improve-metadata-read-failure-logging.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0005-eCryptfs-Make-truncate-path-killable.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0006-eCryptfs-Check-inode-changes-in-setattr.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0007-eCryptfs-Fix-oops-when-printing-debug-info-in-extent.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0008-drm-radeon-kms-Add-an-MSI-quirk-for-Dell-RS690.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0009-drm-radeon-kms-move-panel-mode-setup-into-encoder-mo.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0010-drm-radeon-kms-rework-modeset-sequence-for-DCE41-and.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0011-drm-Fix-authentication-kernel-crash.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0012-xfs-Fix-missing-xfs_iunlock-on-error-recovery-path-i.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0013-ASoC-Mark-WM5100-register-map-cache-only-when-going-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0014-ASoC-Disable-register-synchronisation-for-low-freque.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0015-ASoC-Don-t-go-through-cache-when-applying-WM5100-rev.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0016-ASoC-wm8996-Call-_POST_PMU-callback-for-CPVDD.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0017-brcmsmac-fix-tx-queue-flush-infinite-loop.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0018-mac80211-fix-work-removal-on-deauth-request.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0019-jbd-Issue-cache-flush-after-checkpointing.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0020-crypto-sha512-make-it-work-undo-percpu-message-sched.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0021-crypto-sha512-reduce-stack-usage-to-safe-number.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0022-tpm_tis-add-delay-after-aborting-command.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0023-x86-uv-Fix-uninitialized-spinlocks.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0024-x86-uv-Fix-uv_gpa_to_soc_phys_ram-shift.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0025-x86-microcode_amd-Add-support-for-CPU-family-specifi.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0026-m68k-Fix-assembler-constraint-to-prevent-overeager-g.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0027-ALSA-hda-set-mute-led-polarity-for-laptops-with-bugg.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0028-ALSA-hda-Fix-silent-output-on-ASUS-A6Rp.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0029-ALSA-hda-Fix-silent-output-on-Haier-W18-laptop.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0030-drm-i915-paper-over-missed-irq-issues-with-force-wak.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0031-drm-i915-sdvo-always-set-positive-sync-polarity.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0032-drm-i915-Re-enable-gen7-RC6-and-GPU-turbo-after-resu.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0033-ARM-at91-fix-at91rm9200-soc-subtype-handling.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0034-mach-ux500-enable-ARM-errata-764369.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0035-ARM-7296-1-proc-v7.S-remove-HARVARD_CACHE-preprocess.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0036-sysfs-Complain-bitterly-about-attempts-to-remove-fil.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0037-x86-xen-size-struct-xen_spinlock-to-always-fit-in-ar.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0038-mpt2sas-Removed-redundant-calling-of-_scsih_probe_de.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0039-USB-option-Add-LG-docomo-L-02C.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0040-USB-ftdi_sio-fix-TIOCSSERIAL-baud_base-handling.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0041-USB-ftdi_sio-fix-initial-baud-rate.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0042-USB-ftdi_sio-add-PID-for-TI-XDS100v2-BeagleBone-A3.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0043-USB-serial-ftdi-additional-IDs.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0044-USB-ftdi_sio-Add-more-identifiers.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0045-USB-cdc-wdm-updating-desc-length-must-be-protected-b.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0046-USB-cdc-wdm-use-two-mutexes-to-allow-simultaneous-re.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0047-qcaux-add-more-Pantech-UML190-and-UML290-ports.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0048-usb-dwc3-ep0-tidy-up-Pending-Request-handling.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0049-usb-io_ti-Make-edge_remove_sysfs_attrs-the-port_remo.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0050-TTY-fix-UV-serial-console-regression.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0051-serial-amba-pl011-lock-console-writes-against-interr.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0052-jsm-Fixed-EEH-recovery-error.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0053-iwlwifi-fix-PCI-E-transport-inta-race.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0054-vmwgfx-Fix-assignment-in-vmw_framebuffer_create_hand.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0055-USB-Realtek-cr-fix-autopm-scheduling-while-atomic.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0056-USB-usbsevseg-fix-max-length.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0057-usb-gadget-langwell-don-t-call-gadget-s-disconnect.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0058-usb-gadget-storage-endian-fix.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0059-drivers-usb-host-ehci-fsl.c-add-missing-iounmap.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0060-xhci-Fix-USB-3.0-device-restart-on-resume.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0061-xHCI-Cleanup-isoc-transfer-ring-when-TD-length-misma.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0062-usb-musb-davinci-fix-build-breakage.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0063-hwmon-f71805f-Fix-clamping-of-temperature-limits.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0064-hwmon-w83627ehf-Disable-setting-DC-mode-for-pwm2-pwm.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0065-hwmon-sht15-fix-bad-error-code.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0066-USB-cdc-wdm-call-wake_up_all-to-allow-driver-to-shut.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0067-USB-cdc-wdm-better-allocate-a-buffer-that-is-at-leas.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0068-USB-cdc-wdm-Avoid-hanging-on-interface-with-no-USB_C.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0069-netns-fix-net_alloc_generic.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0070-netns-Fail-conspicously-if-someone-uses-net_generic-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0071-net-caif-Register-properly-as-a-pernet-subsystem.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0072-af_unix-fix-EPOLLET-regression-for-stream-sockets.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0073-bonding-fix-enslaving-in-alb-mode-when-link-down.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0074-l2tp-l2tp_ip-fix-possible-oops-on-packet-receive.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0075-macvlan-fix-a-possible-use-after-free.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0076-net-bpf_jit-fix-divide-by-0-generation.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0077-net-reintroduce-missing-rcu_assign_pointer-calls.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0078-rds-Make-rds_sock_lock-BH-rather-than-IRQ-safe.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0079-tcp-fix-tcp_trim_head-to-adjust-segment-count-with-s.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0080-tcp-md5-using-remote-adress-for-md5-lookup-in-rst-pa.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0081-USB-serial-CP210x-Added-USB-ID-for-the-Link-Instrume.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0082-USB-cp210x-call-generic-open-last-in-open.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0083-USB-cp210x-fix-CP2104-baudrate-usage.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0084-USB-cp210x-do-not-map-baud-rates-to-B0.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0085-USB-cp210x-fix-up-set_termios-variables.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0086-USB-cp210x-clean-up-refactor-and-document-speed-hand.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0087-USB-cp210x-initialise-baud-rate-at-open.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0088-USB-cp210x-allow-more-baud-rates-above-1Mbaud.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0089-mach-ux500-no-MMC_CAP_SD_HIGHSPEED-on-Snowball.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0090-Linux-3.2.3.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.4/0001-Revert-ASoC-Mark-WM5100-register-map-cache-only-when.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.4/0002-Revert-ASoC-Don-t-go-through-cache-when-applying-WM5.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.4/0003-Linux-3.2.4.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.5/0001-PCI-Rework-ASPM-disable-code.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.5/0002-Linux-3.2.5.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0001-readahead-fix-pipeline-break-caused-by-block-plug.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0002-ALSA-hda-Fix-the-logic-to-detect-VIA-analog-low-curr.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0003-ALSA-HDA-Remove-quirk-for-Asus-N53Jq.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0004-ALSA-hda-Apply-0x0f-VREF-fix-to-all-ASUS-laptops-wit.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0005-ALSA-hda-Fix-calling-cs_automic-twice-for-Cirrus-cod.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0006-ALSA-hda-Allow-analog-low-current-mode-when-dynamic-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0007-ALSA-HDA-Fix-duplicated-output-to-more-than-one-code.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0008-ALSA-hda-Disable-dynamic-power-control-for-VIA-as-de.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0009-ASoC-wm_hubs-Enable-line-out-VMID-buffer-for-single-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0010-ASoC-wm_hubs-fix-wrong-bits-for-LINEOUT2-N-P-mixer.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0011-ARM-7306-1-vfp-flush-thread-hwstate-before-restoring.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0012-ARM-7307-1-vfp-fix-ptrace-regset-modification-race.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0013-ARM-7308-1-vfp-flush-thread-hwstate-before-copying-p.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0014-ARM-OMAP2-GPMC-fix-device-size-setup.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0015-drivers-tty-vt-vt_ioctl.c-fix-KDFONTOP-32bit-compati.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0016-proc-mem_release-should-check-mm-NULL.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0017-proc-unify-mem_read-and-mem_write.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0018-proc-make-sure-mem_open-doesn-t-pin-the-target-s-mem.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0019-firewire-ohci-add-reset-packet-quirk-for-SB-Audigy.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0020-firewire-ohci-disable-MSI-on-Ricoh-controllers.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0021-IB-mlx4-pass-SMP-vendor-specific-attribute-MADs-to-f.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0022-RDMA-core-Fix-kernel-panic-by-always-initializing-qp.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0023-kprobes-fix-a-memory-leak-in-function-pre_handler_kr.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0024-mtd-gpmi-nand-bugfix-reset-the-BCH-module-when-it-is.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0025-Revert-mtd-atmel_nand-optimize-read-write-buffer-fun.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0026-at_hdmac-bugfix-for-enabling-channel-irq.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0027-mm-filemap_xip.c-fix-race-condition-in-xip_file_faul.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0028-mm-compaction-check-pfn_valid-when-entering-a-new-MA.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0029-PM-Hibernate-Fix-s2disk-regression-related-to-freezi.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0030-PM-QoS-CPU-C-state-breakage-with-PM-Qos-change.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0031-drm-radeon-Set-DESKTOP_HEIGHT-register-to-the-frameb.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0032-drm-nouveau-gem-fix-fence_sync-race-oops.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0033-drm-radeon-kms-disable-output-polling-when-suspended.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0034-drm-radeon-kms-fix-TRAVIS-panel-setup.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0035-sched-rt-Fix-task-stack-corruption-under-__ARCH_WANT.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0036-PM-Hibernate-Thaw-processes-in-SNAPSHOT_CREATE_IMAGE.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0037-PM-Hibernate-Thaw-kernel-threads-in-SNAPSHOT_CREATE_.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0038-8139cp-fix-missing-napi_gro_flush.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0039-udf-Mark-LVID-buffer-as-uptodate-before-marking-it-d.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0040-drm-i915-HDMI-hot-remove-notification-to-audio-drive.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0041-drm-i915-DisplayPort-hot-remove-notification-to-audi.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0042-drm-i915-check-ACTHD-of-all-rings.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0043-drm-i915-Fix-TV-Out-refresh-rate.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0044-drm-i915-handle-3rd-pipe.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0045-drm-i915-convert-force_wake_get-to-func-pointer-in-t.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0046-drm-i915-protect-force_wake_-get-put-with-the-gt_loc.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0047-eCryptfs-Infinite-loop-due-to-overflow-in-ecryptfs_w.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0048-hwmon-w83627ehf-Fix-number-of-fans-for-NCT6776F.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0049-cifs-Fix-oops-in-session-setup-code-for-null-user-mo.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0050-atmel_lcdfb-fix-usage-of-CONTRAST_CTR-in-suspend-res.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0051-lockdep-bug-Exclude-TAINT_FIRMWARE_WORKAROUND-from-d.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0052-lockdep-bug-Exclude-TAINT_OOT_MODULE-from-disabling-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0053-iscsi-target-Fix-reject-release-handling-in-iscsit_f.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0054-iscsi-target-Fix-double-list_add-with-iscsit_alloc_b.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0055-iscsi-target-Fix-discovery-with-INADDR_ANY-and-IN6AD.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0056-ASoC-wm_hubs-Fix-routing-of-input-PGAs-to-line-outpu.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0057-ASoC-wm_hubs-Correct-line-input-to-line-output-2-pat.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0058-ASoC-wm8962-Fix-word-length-configuration.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0059-ASoC-wm8994-Enabling-VMID-should-take-a-runtime-PM-r.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0060-ASoC-wm8994-Fix-typo-in-VMID-ramp-setting.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0061-pcmcia-fix-socket-refcount-decrementing-on-each-resu.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0062-ALSA-oxygen-virtuoso-fix-exchanged-L-R-volumes-of-au.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0063-iommu-amd-Work-around-broken-IVRS-tables.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0064-iommu-msm-Fix-error-handling-in-msm_iommu_unmap.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0065-mm-compaction-check-for-overlapping-nodes-during-iso.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0066-mm-fix-UP-THP-spin_is_locked-BUGs.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0067-target-Use-correct-preempted-registration-sense-code.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0068-target-Allow-PERSISTENT-RESERVE-IN-for-non-reservati.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0069-target-Correct-sense-key-for-INVALID-FIELD-IN-PARAME.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0070-target-Add-workaround-for-zero-length-control-CDB-ha.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0071-target-Return-correct-ASC-for-unimplemented-VPD-page.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0072-target-Fail-INQUIRY-commands-with-EVPD-0-but-PAGE-CO.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0073-Staging-asus_oled-fix-image-processing.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0074-Staging-asus_oled-fix-NULL-ptr-crash-on-unloading.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0075-staging-r8712u-Add-new-Sitecom-UsB-ID.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0076-staging-r8712u-Use-asynchronous-firmware-loading.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0077-usb-ch9.h-usb_endpoint_maxp-uses-__le16_to_cpu.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0078-usb-gadget-zero-fix-bug-in-loopback-autoresume-handl.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0079-usb-Skip-PCI-USB-quirk-handling-for-Netlogic-XLP.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0080-USB-usbserial-add-new-PID-number-0xa951-to-the-ftdi-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0081-USB-add-new-zte-3g-dongle-s-pid-to-option.c.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0082-zcache-Set-SWIZ_BITS-to-8-to-reduce-tmem-bucket-lock.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0083-zcache-fix-deadlock-condition.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0084-mmc-cb710-core-Add-missing-spin_lock_init-for-irq_lo.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0085-powernow-k8-Avoid-Pstate-MSR-accesses-on-systems-sup.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0086-powernow-k8-Fix-indexing-issue.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0087-Linux-3.2.6.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0001-ixgbe-fix-vf-lookup.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0002-igb-fix-vf-lookup.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0003-perf-evsel-Fix-an-issue-where-perf-report-fails-to-s.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0004-perf-tools-Fix-perf-stack-to-non-executable-on-x86_6.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0005-drm-i915-Force-explicit-bpp-selection-for-intel_dp_l.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0006-drm-i915-no-lvds-quirk-for-AOpen-MP45.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0007-ath9k-Fix-kernel-panic-during-driver-initilization.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0008-ath9k-fix-a-WEP-crypto-related-regression.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0009-ath9k_hw-fix-a-RTS-CTS-timeout-regression.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0010-hwmon-f75375s-Fix-bit-shifting-in-f75375_write16.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0011-net-enable-TC35815-for-MIPS-again.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0012-lib-proportion-lower-PROP_MAX_SHIFT-to-32-on-64-bit-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0013-relay-prevent-integer-overflow-in-relay_open.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0014-mac80211-timeout-a-single-frame-in-the-rx-reorder-bu.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0015-writeback-fix-NULL-bdi-dev-in-trace-writeback_single.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0016-writeback-fix-dereferencing-NULL-bdi-dev-on-trace_wr.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0017-hwmon-f75375s-Fix-automatic-pwm-mode-setting-for-F75.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0018-cifs-request-oplock-when-doing-open-on-lookup.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0019-cifs-don-t-return-error-from-standard_receive3-after.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0020-crypto-sha512-Use-binary-and-instead-of-modulus.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0021-crypto-sha512-Avoid-stack-bloat-on-i386.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0022-backing-dev-fix-wakeup-timer-races-with-bdi_unregist.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0023-ALSA-intel8x0-Fix-default-inaudible-sound-on-Gateway.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0024-ALSA-hda-Fix-initialization-of-secondary-capture-sou.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0025-ALSA-hda-Fix-silent-speaker-output-on-Acer-Aspire-69.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0026-mmc-atmel-mci-save-and-restore-sdioirq-when-soft-res.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0027-mmc-dw_mmc-Fix-PIO-mode-with-support-of-highmem.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0028-xen-pvhvm-do-not-remap-pirqs-onto-evtchns-if-xen_hav.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0029-crypto-sha512-use-standard-ror64.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0030-Linux-3.2.7.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.8/0001-i387-math_state_restore-isn-t-called-from-asm.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.8/0002-i387-make-irq_fpu_usable-tests-more-robust.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.8/0003-i387-fix-sense-of-sanity-check.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.8/0004-i387-fix-x86-64-preemption-unsafe-user-stack-save-re.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.8/0005-i387-move-TS_USEDFPU-clearing-out-of-__save_init_fpu.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.8/0006-i387-don-t-ever-touch-TS_USEDFPU-directly-use-helper.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.8/0007-i387-do-not-preload-FPU-state-at-task-switch-time.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.8/0008-i387-move-AMD-K7-K8-fpu-fxsave-fxrstor-workaround-fr.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.8/0009-i387-move-TS_USEDFPU-flag-from-thread_info-to-task_s.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.8/0010-i387-re-introduce-FPU-state-preloading-at-context-sw.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.8/0011-Linux-3.2.8.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0001-Security-tomoyo-add-.gitignore-file.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0002-powerpc-perf-power_pmu_start-restores-incorrect-valu.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0003-ARM-at91-USB-AT91-gadget-registration-for-module.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0004-drm-radeon-kms-fix-MSI-re-arm-on-rv370.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0005-PCI-workaround-hard-wired-bus-number-V2.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0006-mac80211-Fix-a-rwlock-bad-magic-bug.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0007-ipheth-Add-iPhone-4S.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0008-regmap-Fix-cache-defaults-initialization-from-raw-ca.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0009-eCryptfs-Copy-up-lower-inode-attrs-after-setting-low.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0010-S390-correct-ktime-to-tod-clock-comparator-conversio.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0011-vfs-fix-d_inode_lookup-dentry-ref-leak.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0012-ARM-7326-2-PL330-fix-null-pointer-dereference-in-pl3.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0013-ALSA-hda-Fix-redundant-jack-creations-for-cx5051.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0014-mmc-core-check-for-zero-length-ioctl-data.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0015-NFSv4-Fix-an-Oops-in-the-NFSv4-getacl-code.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0016-NFSv4-Ensure-we-throw-out-bad-delegation-stateids-on.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0017-NFSv4-fix-server_scope-memory-leak.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0018-ARM-7321-1-cache-v7-Disable-preemption-when-reading-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0019-ARM-7325-1-fix-v7-boot-with-lockdep-enabled.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0020-3c59x-shorten-timer-period-for-slave-devices.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0021-net-Don-t-proxy-arp-respond-if-iif-rt-dst.dev-if-pri.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0022-netpoll-netpoll_poll_dev-should-access-dev-flags.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0023-net_sched-Bug-in-netem-reordering.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0024-veth-Enforce-minimum-size-of-VETH_INFO_PEER.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0025-via-velocity-S3-resume-fix.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0026-ipv4-reset-flowi-parameters-on-route-connect.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0027-tcp_v4_send_reset-binding-oif-to-iif-in-no-sock-case.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0028-ipv4-Fix-wrong-order-of-ip_rt_get_source-and-update-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0029-net-Make-qdisc_skb_cb-upper-size-bound-explicit.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0030-IPoIB-Stop-lying-about-hard_header_len-and-use-skb-c.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0031-gro-more-generic-L2-header-check.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0032-tcp-allow-tcp_sacktag_one-to-tag-ranges-not-aligned-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0033-tcp-fix-range-tcp_shifted_skb-passes-to-tcp_sacktag_.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0034-tcp-fix-tcp_shifted_skb-adjustment-of-lost_cnt_hint-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0035-USB-Added-Kamstrup-VID-PIDs-to-cp210x-serial-driver.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0036-USB-option-cleanup-zte-3g-dongle-s-pid-in-option.c.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0037-USB-Serial-ti_usb_3410_5052-Add-Abbot-Diabetes-Care-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0038-USB-Remove-duplicate-USB-3.0-hub-feature-defines.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0039-USB-Fix-handoff-when-BIOS-disables-host-PCI-device.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0040-xhci-Fix-oops-caused-by-more-USB2-ports-than-USB3-po.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0041-xhci-Fix-encoding-for-HS-bulk-control-NAK-rate.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0042-USB-Don-t-fail-USB3-probe-on-missing-legacy-PCI-IRQ.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0043-USB-Set-hub-depth-after-USB3-hub-reset.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0044-usb-storage-fix-freezing-of-the-scanning-thread.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0045-target-Allow-control-CDBs-with-data-1-page.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0046-ASoC-wm8962-Fix-sidetone-enumeration-texts.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0047-ALSA-hda-realtek-Fix-overflow-of-vol-sw-check-bitmap.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0048-ALSA-hda-realtek-Fix-surround-output-regression-on-A.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0049-NOMMU-Lock-i_mmap_mutex-for-access-to-the-VMA-prio-l.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0050-hwmon-max6639-Fix-FAN_FROM_REG-calculation.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0051-hwmon-max6639-Fix-PPR-register-initialization-to-set.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0052-hwmon-ads1015-Fix-file-leak-in-probe-function.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0053-ARM-omap-fix-oops-in-drivers-video-omap2-dss-dpi.c.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0054-x86-amd-Fix-L1i-and-L2-cache-sharing-information-for.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0055-ath9k-stop-on-rates-with-idx-1-in-ath9k-rate-control.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0056-genirq-Unmask-oneshot-irqs-when-thread-was-not-woken.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0057-genirq-Handle-pending-irqs-in-irq_startup.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0058-scsi_scan-Fix-Poison-overwritten-warning-caused-by-u.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0059-scsi_pm-Fix-bug-in-the-SCSI-power-management-handler.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0060-ipvs-fix-matching-of-fwmark-templates-during-schedul.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0061-jme-Fix-FIFO-flush-issue.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0062-davinci_emac-Do-not-free-all-rx-dma-descriptors-duri.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0063-builddeb-Don-t-create-files-in-tmp-with-predictable-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0064-can-sja1000-fix-isr-hang-when-hw-is-unplugged-under-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0065-hdpvr-fix-race-conditon-during-start-of-streaming.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0066-imon-don-t-wedge-hardware-after-early-callbacks.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0067-hwmon-f75375s-Fix-register-write-order-when-setting-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0068-epoll-introduce-POLLFREE-to-flush-signalfd_wqh-befor.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0069-epoll-ep_unregister_pollwait-can-use-the-freed-pwq-w.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0070-epoll-limit-paths.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0071-cdrom-use-copy_to_user-without-the-underscores.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0072-Linux-3.2.9.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/am335x-evm/defconfig
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/am335x-pm-firmware.bin
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0001-arm-boot-compressed-default-asm-arch-to-armv7-a.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0001-f_rndis-HACK-around-undefined-variables.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0002-da8xx-fb-add-DVI-support-for-beaglebone.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0003-beaglebone-rebase-everything-onto-3.2-WARNING-MEGAPA.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0004-more-beaglebone-merges.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0005-beaglebone-disable-tsadc.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0006-tscadc-Add-general-purpose-mode-untested-with-touchs.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0007-tscadc-Add-board-file-mfd-support-fix-warning.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0008-AM335X-init-tsc-bone-style-for-new-boards.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0009-tscadc-make-stepconfig-channel-configurable.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0010-tscadc-Trigger-through-sysfs.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0011-meta-ti-Remove-debug-messages-for-meta-ti.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0012-tscadc-switch-to-polling-instead-of-interrupts.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0013-beaglebone-fix-ADC-init.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0014-AM335x-MUX-add-ehrpwm1A.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0015-beaglebone-enable-PWM-for-lcd-backlight-backlight-is.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0016-omap_hsmmc-Set-dto-to-max-value-of-14-to-avoid-SD-Ca.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0017-beaglebone-set-default-brightness-to-50-for-pwm-back.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0018-st7735fb-WIP-framebuffer-driver-supporting-Adafruit-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0019-beaglebone-use-P8_6-gpio1_3-as-w1-bus.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0020-beaglebone-add-support-for-Towertech-TT3201-CAN-cape.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0021-beaglebone-add-more-beagleboardtoys-cape-partnumbers.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0022-beaglebone-add-gpio-keys-for-lcd7-add-notes-for-miss.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0023-beaglebone-add-enter-key-for-lcd7-cape.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0024-beaglebone-add-gpio-keys-for-lcd.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0025-beaglebone-fix-direction-of-gpio-keys.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0026-beaglebone-fix-3.5-lcd-cape-support.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0027-beaglebone-decrease-PWM-frequency-to-old-value-LCD7-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0028-beaglebone-fix-ehrpwm-backlight.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0029-beaglebone-also-report-cape-revision.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0030-beaglebone-don-t-compare-undefined-characters-it-mak.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0031-beaglebone-fix-3.5-cape-support.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0032-beaglebone-connect-batterycape-GPIO-to-gpio-charger.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0033-beaglebone-add-support-for-CAN-and-RS232-cape.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0034-beaglebone-add-support-for-DVI-rev.-A2-capes.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0035-beaglebone-enable-LEDs-for-DVI-LCD3-and-LCD7-capes.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0036-Beaglebone-Fixed-compiletime-warnings.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0037-Beaglebone-Added-missing-termination-record-to-bone_.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0038-board-am335xevm.c-Beaglebone-expose-all-pwms-through.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0039-ARM-OMAP-Mux-Fixed-debugfs-mux-output-always-reporti.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0040-beaglebone-export-SPI2-as-spidev-when-no-capes-are-u.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0041-st7735fb-Working-WIP-changes-to-make-DMA-safe-and-ad.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0042-omap-hwmod-silence-st_shift-error.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0043-cpsw-phy_device-demote-PHY-message-to-INFO.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0044-beaglebone-add-support-for-7-LCD-cape-revision-A2.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0045-beaglebone-allow-capes-to-disable-w1-gpio.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0046-beaglebone-add-stub-for-the-camera-cape-to-disable-w.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0047-Adding-many-of-the-missing-signals-to-the-mux-table.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0048-Fixed-reversed-part-of-LCD-bus.-Added-even-more-miss.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0049-ts_tscadc-add-defines-for-4x-and-16x-oversampling.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0050-ts_tscadc-switch-to-4x-oversampling.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0051-Fixed-size-of-pinmux-data-array-in-EEPROM-data-struc.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0052-Implemented-Bone-Cape-configuration-from-EEPROM.-Onl.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0053-Replaced-conditional-debug-code-by-pr_debug-statemen.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0054-Workaround-for-boards-with-mistaken-ASCII-interpreta.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0055-Workaround-for-EEPROM-contents-blocking-further-I2C-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0056-Added-check-on-EEPROM-revision-to-prevent-interpreti.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0057-i2c-prescalar-fix-i2c-fixed-prescalar-setting-issue.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0058-beaglebone-annotate-default-beaglebone-pinmux.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0059-beaglebone-fix-pin-free-thinko-this-method-doesn-t-g.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0060-beaglebone-switch-RS232-cape-to-ttyO2.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0061-beaglebone-make-uart2-pinmux-match-the-uart0-pinmux.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0062-da8xx-fb-Rounding-FB-size-to-satisfy-SGX-buffer-requ.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0063-beaglebone-dvi-cape-audio-hacks.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0064-beaglebone-always-execute-the-pin-free-checks.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0065-ti_tscadc-switch-to-16x-averaging.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0066-video-da8xx-fb-Add-Newhaven-LCD-Panel-details.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0067-beaglebone-add-support-for-the-4.3-lcd-cape-with-res.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0068-beaglebone-add-support-for-LCD3-rev-A1.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0069-beaglebone-fix-buttons-spidev-clash-when-using-mcasp.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0070-beaglebone-fix-LCD3-led-key-overlap.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0071-beaglebone-fix-audio-spi-clash.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0072-beaglebone-add-support-for-QuickLogic-Camera-interfa.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0073-beaglebone-add-support-for-DVI-audio-and-audio-only-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0074-beaglebone-disable-LBO-GPIO-for-battery-cape.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0075-video-da8xx-fb-calculate-pixel-clock-period-for-the-.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0076-beaglebone-improve-GPMC-bus-timings-for-camera-cape.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0077-beaglebone-disable-UYVY-VYUY-and-YVYU-modes-in-camer.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0078-beaglebone-error-handling-for-DMA-completion-in-cssp.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0079-AM335X-errata-OPP50-on-MPU-domain-is-not-supported.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0080-vfs-Add-a-trace-point-in-the-mark_inode_dirty-functi.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0081-beaglebone-add-support-for-LCD7-A3.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0082-beaglebone-add-rudimentary-support-for-eMMC-cape.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0083-beaglebone-add-extra-partnumber-for-camera-cape.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0084-beaglebone-cssp_camera-driver-cleanup.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0085-beaglebone-mux-camera-cape-orientation-pin-to-gpio.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0086-board-am335xevm-Add-Beaglebone-Motor-Cape-Support.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0087-mux33xx-Fix-MUXENTRYs-for-MCASP0_ACLKX-FSX-to-add-eh.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/defconfig
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/logo_linux_clut224.ppm
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/configs/empty
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/led/0001-leds-heartbeat-stop-on-shutdown-reboot-or-panic.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0001-USB-convert-drivers-net-to-use-module_usb_driver.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0002-net-fix-assignment-of-0-1-to-bool-variables.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0003-switch-debugfs-to-umode_t.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0004-drivers-net-Remove-unnecessary-k.alloc-v.alloc-OOM-m.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0005-libertas-remove-dump_survey-implementation.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0006-wireless-libertas-remove-redundant-NULL-tests-before.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0007-libertas-fix-signedness-bug-in-lbs_auth_to_authtype.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0008-drivers-net-wireless-libertas-if_usb.c-add-missing-d.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0009-libertas-Firmware-loading-simplifications.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0010-libertas-harden-up-exit-paths.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0011-libertas-add-asynchronous-firmware-loading-capabilit.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0012-libertas-SDIO-convert-to-asynchronous-firmware-loadi.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0013-libertas-USB-convert-to-asynchronous-firmware-loadin.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0014-libertas-CS-convert-to-asynchronous-firmware-loading.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0015-libertas-add-missing-include.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0016-remove-debug-msgs-due-to-missing-in_interrupt.patch
delete mode 100755 recipes-kernel/linux/linux-ti33x-psp-3.2/patch.sh
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0001-ARM-OMAP-AM33XX-Add-missing-EMIF-register-offsets.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0002-ARM-OMAP-AM33XX-PM-Get-rid-of-hardcoded-resume-addre.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0003-ARM-OMAP-AM33XX-PM-Skip-DDR-PHY-reconfiguration-in-r.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0004-ARM-OMAP-AM33XX-PM-Save-and-restore-EMIF-registers.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0005-ARM-OMAP-AM33XX-PM-Wait-correctly-for-the-PLLs-to-re.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0006-ARM-OMAP-AM33XX-PM-Restore-the-PLLs-to-pre-suspend-s.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0007-ARM-OMAP-PM-AM33XX-Update-the-sleep-code-to-handle-D.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0008-usb-musb-update-babble-workaround-fix.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0009-usb-musb-ti81xx-print-the-usbss-revision-id-during-i.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0010-usb-musb-cppi41-enable-txfifo-empty-interrupt-logic.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0011-usb-musb-host-Flush-txfifo-only-if-TxPktRdy-bit-set.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0012-usb-musb-cppi41-use-dsb-to-make-sure-PDs-are-updated.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0013-usb-musb-cppi41-fix-zero-byte-OUT-issue.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0014-usb-musb-host-fix-for-urb-error-handling.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0015-usb-musb-cppi41-txdma-flushfifo-fixes-during-channel.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0016-usb-musb-cppi41-tx-dma-completion-fixes.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0017-usb-musb-host-Flush-RxFIFO-only-when-RxPktRdy-is-set.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0018-usb-musb-ti81xx-fix-role-switching-issue.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0019-MMC-OMAP-HS-Enable-HSPE-bit-for-high-speed-cards.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/pwm/0001-PWM-ecap-Correct-configuration-of-polarity.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/pwm/0002-ARM-OMAP2-am335x-mux-add-ecap2_in_pwm2_out-string-en.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/pwm/0003-ARM-OMAP2-AM335x-hwmod-Remove-PRCM-entries-for-PWMSS.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/pwm/0004-PWM-ecap-Resets-the-PWM-output-to-low-on-stop.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/pwm/0005-PWM-ecap-Fix-for-throwing-PWM-output-before-running.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/pwm/0006-pwm-ehrpwm-Configure-polarity-on-pwm_start.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/usb/0001-usb-musb-cppi41-revisit-the-teardown-path-to-fix-iso.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/usb/0002-usb-musb-fix-bug-in-data-toggle-sw-workaround.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/usb/0003-usb-gadget-udc-core-stop-UDC-on-device-initiated-dis.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/usb/0004-usb-gadget-udc-core-fix-asymmetric-calls-in-remove_d.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/usb/0005-usb-gadget-udc-core-fix-wrong-call-order.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/usb/0006-usb-gadget-udc-core-fix-incompatibility-with-dummy-h.patch
delete mode 100644 recipes-kernel/linux/linux-ti33x-psp_3.2.bb
delete mode 100644 recipes-kernel/linux/linux/beagleboard/logo_linux_clut224.ppm
delete mode 100644 recipes-kernel/linux/linux_3.3.7.bb
diff --git a/recipes-kernel/linux/linux-3.3.7/beagleboard/0001-ARM-OMAP-Cleanup-Beagleboard-DVI-reset-gpio.patch b/recipes-kernel/linux/linux-3.3.7/beagleboard/0001-ARM-OMAP-Cleanup-Beagleboard-DVI-reset-gpio.patch
deleted file mode 100644
index 06db87e..0000000
--- a/recipes-kernel/linux/linux-3.3.7/beagleboard/0001-ARM-OMAP-Cleanup-Beagleboard-DVI-reset-gpio.patch
+++ /dev/null
@@ -1,184 +0,0 @@
-From 457318d7eff18258b4ef11fb4e4b924d2b5b5bb0 Mon Sep 17 00:00:00 2001
-From: Russ Dill <Russ.Dill at ti.com>
-Date: Tue, 8 May 2012 19:49:06 -0700
-Subject: [PATCH] ARM: OMAP: Cleanup Beagleboard DVI reset gpio
-
-This removes several boot warnings from board-omap3beagle.c:
-
- - gpio_request: gpio--22 (DVI reset) status -22
- - Unable to get DVI reset GPIO
-
-There is a combination of leftover code and revision confusion.
-Additionally, xM support is currently a hack.
-
-For original Beagleboard this removes the double initialization of GPIO
-170, properly configures it as an output, and wraps the initialization
-in an if block so that xM does not attempt to request it.
-
-For Beagleboard xM it removes reference to GPIO 129 which was part
-of rev A1 and A2 designs, but never functioned. It then properly assigns
-beagle_dvi_device.reset_gpio in beagle_twl_gpio_setup and removes the
-hack of initializing it high. Additionally, it uses
-gpio_set_value_cansleep since this GPIO is connected through i2c.
-
-Unfortunately, there is no way to tell the difference between xM A2 and
-A3. However, GPIO 129 does not function on rev A1 and A2, and the TWL
-GPIO used on A3 and beyond is not used on rev A1 and A2, there are no
-problems created by this fix.
-
-v3
- - Change patch title to include 'ARM: OMAP:'
- - Actually rename reset_gpio to dvi_reset_gpio
-
-v2
- - Rename reset_gpio to dvi_reset_gpio to self document
- - Use gpio_set_value_cansleep since TWL gpio can sleep
- - Use gpio_is_valid instead of -EINVAL check
-
-Tested on Beagleboard-xM Rev C1 and Beagleboard Rev B4.
-
-Upstream-Status: Submitted
- * This patch has been submitted for the 3.5 kernel and is
- being reworked for upstream acceptance.
-
-Signed-off-by: Russ Dill <Russ.Dill at ti.com>
----
- arch/arm/mach-omap2/board-omap3beagle.c | 49 ++++++++++++++++--------------
- 1 files changed, 26 insertions(+), 23 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
-index 7ffcd28..c9322ac 100644
---- a/arch/arm/mach-omap2/board-omap3beagle.c
-+++ b/arch/arm/mach-omap2/board-omap3beagle.c
-@@ -81,12 +81,12 @@ static u8 omap3_beagle_version;
- static struct {
- int mmc1_gpio_wp;
- int usb_pwr_level;
-- int reset_gpio;
-+ int dvi_reset_gpio;
- int usr_button_gpio;
- } beagle_config = {
- .mmc1_gpio_wp = -EINVAL,
- .usb_pwr_level = GPIOF_OUT_INIT_LOW,
-- .reset_gpio = 129,
-+ .dvi_reset_gpio = -EINVAL,
- .usr_button_gpio = 4,
- };
-
-@@ -124,21 +124,21 @@ static void __init omap3_beagle_init_rev(void)
- printk(KERN_INFO "OMAP3 Beagle Rev: Ax/Bx\n");
- omap3_beagle_version = OMAP3BEAGLE_BOARD_AXBX;
- beagle_config.mmc1_gpio_wp = 29;
-- beagle_config.reset_gpio = 170;
-+ beagle_config.dvi_reset_gpio = 170;
- beagle_config.usr_button_gpio = 7;
- break;
- case 6:
- printk(KERN_INFO "OMAP3 Beagle Rev: C1/C2/C3\n");
- omap3_beagle_version = OMAP3BEAGLE_BOARD_C1_3;
- beagle_config.mmc1_gpio_wp = 23;
-- beagle_config.reset_gpio = 170;
-+ beagle_config.dvi_reset_gpio = 170;
- beagle_config.usr_button_gpio = 7;
- break;
- case 5:
- printk(KERN_INFO "OMAP3 Beagle Rev: C4\n");
- omap3_beagle_version = OMAP3BEAGLE_BOARD_C4;
- beagle_config.mmc1_gpio_wp = 23;
-- beagle_config.reset_gpio = 170;
-+ beagle_config.dvi_reset_gpio = 170;
- beagle_config.usr_button_gpio = 7;
- break;
- case 0:
-@@ -192,7 +192,7 @@ static struct mtd_partition omap3beagle_nand_partitions[] = {
- static int beagle_enable_dvi(struct omap_dss_device *dssdev)
- {
- if (gpio_is_valid(dssdev->reset_gpio))
-- gpio_set_value(dssdev->reset_gpio, 1);
-+ gpio_set_value_cansleep(dssdev->reset_gpio, 1);
-
- return 0;
- }
-@@ -200,7 +200,7 @@ static int beagle_enable_dvi(struct omap_dss_device *dssdev)
- static void beagle_disable_dvi(struct omap_dss_device *dssdev)
- {
- if (gpio_is_valid(dssdev->reset_gpio))
-- gpio_set_value(dssdev->reset_gpio, 0);
-+ gpio_set_value_cansleep(dssdev->reset_gpio, 0);
- }
-
- static struct panel_dvi_platform_data dvi_panel = {
-@@ -238,12 +238,17 @@ static struct omap_dss_board_info beagle_dss_data = {
-
- static void __init beagle_display_init(void)
- {
-- int r;
--
-- r = gpio_request_one(beagle_dvi_device.reset_gpio, GPIOF_OUT_INIT_LOW,
-- "DVI reset");
-- if (r < 0)
-- printk(KERN_ERR "Unable to get DVI reset GPIO\n");
-+ if (gpio_is_valid(beagle_config.dvi_reset_gpio)) {
-+ int r;
-+
-+ omap_mux_init_gpio(beagle_config.dvi_reset_gpio, OMAP_PIN_OUTPUT);
-+ r = gpio_request_one(beagle_config.dvi_reset_gpio,
-+ GPIOF_OUT_INIT_LOW, "DVI reset");
-+ if (r < 0)
-+ printk(KERN_ERR "Unable to get DVI reset GPIO\n");
-+ else
-+ beagle_dvi_device.reset_gpio = beagle_config.dvi_reset_gpio;
-+ }
- }
-
- #include "sdram-micron-mt46h32m32lf-6.h"
-@@ -272,7 +277,7 @@ static int beagle_twl_gpio_setup(struct device *dev,
- {
- int r;
-
-- if (beagle_config.mmc1_gpio_wp != -EINVAL)
-+ if (gpio_is_valid(beagle_config.mmc1_gpio_wp))
- omap_mux_init_gpio(beagle_config.mmc1_gpio_wp, OMAP_PIN_INPUT);
- mmc[0].gpio_wp = beagle_config.mmc1_gpio_wp;
- /* gpio + 0 is "mmc0_cd" (input/IRQ) */
-@@ -297,11 +302,14 @@ static int beagle_twl_gpio_setup(struct device *dev,
- if (r)
- pr_err("%s: unable to configure nDVI_PWR_EN\n",
- __func__);
-- r = gpio_request_one(gpio + 2, GPIOF_OUT_INIT_HIGH,
-- "DVI_LDO_EN");
-+
-+ r = gpio_request_one(gpio + 2, GPIOF_OUT_INIT_LOW,
-+ "DVI_PU");
- if (r)
-- pr_err("%s: unable to configure DVI_LDO_EN\n",
-- __func__);
-+ pr_err("%s: unable to get DVI_PU GPIO\n", __func__);
-+ else
-+ beagle_dvi_device.reset_gpio = gpio + 2;
-+
- } else {
- /*
- * REVISIT: need ehci-omap hooks for external VBUS
-@@ -310,7 +318,6 @@ static int beagle_twl_gpio_setup(struct device *dev,
- if (gpio_request_one(gpio + 1, GPIOF_IN, "EHCI_nOC"))
- pr_err("%s: unable to configure EHCI_nOC\n", __func__);
- }
-- beagle_dvi_device.reset_gpio = beagle_config.reset_gpio;
-
- gpio_request_one(gpio + TWL4030_GPIO_MAX, beagle_config.usb_pwr_level,
- "nEN_USB_PWR");
-@@ -532,10 +539,6 @@ static void __init omap3_beagle_init(void)
- omap_sdrc_init(mt46h32m32lf6_sdrc_params,
- mt46h32m32lf6_sdrc_params);
-
-- omap_mux_init_gpio(170, OMAP_PIN_INPUT);
-- /* REVISIT leave DVI powered down until it's needed ... */
-- gpio_request_one(170, GPIOF_OUT_INIT_HIGH, "DVI_nPD");
--
- usb_musb_init(NULL);
- usbhs_init(&usbhs_bdata);
- omap_nand_flash_init(NAND_BUSWIDTH_16, omap3beagle_nand_partitions,
---
-1.7.0.4
-
diff --git a/recipes-kernel/linux/linux-3.3.7/beagleboard/0001-ARM-OMAP2-UART-Fix-incorrect-population-of-default-u.patch b/recipes-kernel/linux/linux-3.3.7/beagleboard/0001-ARM-OMAP2-UART-Fix-incorrect-population-of-default-u.patch
deleted file mode 100644
index 6677d2d..0000000
--- a/recipes-kernel/linux/linux-3.3.7/beagleboard/0001-ARM-OMAP2-UART-Fix-incorrect-population-of-default-u.patch
+++ /dev/null
@@ -1,169 +0,0 @@
-From bce492c04ba8fc66a4ea0a52b181ba255daaaf54 Mon Sep 17 00:00:00 2001
-From: Govindraj.R <govindraj.raja at ti.com>
-Date: Tue, 17 Apr 2012 10:35:47 -0700
-Subject: [PATCH] ARM: OMAP2+: UART: Fix incorrect population of default uart pads
-
-Commit (7496ba3 ARM: OMAP2+: UART: Add default mux for all uarts)
-wrongly added muxing of default pads for all uarts. This causes
-breakage on multiple boards using uart pins for alternate functions.
-
-For example, on zoom3 random oopses can be seen with nfsroot as
-the smsc911x ethernet FIFO timings on GPMC bus are controlled
-by gpmc_wait2 and gpmc_wait3 pins. This means we can't mux these
-pads to uart4 functionality as commit 7496ba3 was doing.
-
-Not all boards tend to use all uarts and most of unused uart pins
-are muxed for other purpose. This commit breaks the modules which
-where trying to use unused uart pins on their boards.
-
-So remove the default pad muxing. Note that this is not a complete
-fix, as we now rely on bootloader set muxing for the uart wake-up
-events. Further patching is needed to enable wake-up events for
-uarts that are already muxed to uart mode.
-
-Upstream-Status: Backport
- * Backported from commit bce492c0 in linux mainline
-
-Cc: Felipe Balbi <balbi at ti.com>
-Cc: Kevin Hilman <khilman at ti.com>
-Acked-by: Russ Dill <russ.dill at gmail.com>
-Reported-by: Tony Lindgren <tony at atomide.com>
-Signed-off-by: Govindraj.R <govindraj.raja at ti.com>
-[tony at atomide.com: updated comments to describe oops on zoom3]
-Signed-off-by: Tony Lindgren <tony at atomide.com>
----
- arch/arm/mach-omap2/serial.c | 116 ------------------------------------------
- 1 files changed, 0 insertions(+), 116 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/serial.c b/arch/arm/mach-omap2/serial.c
-index 0cdd359..2e351f5 100644
---- a/arch/arm/mach-omap2/serial.c
-+++ b/arch/arm/mach-omap2/serial.c
-@@ -120,124 +120,8 @@ static void omap_uart_set_smartidle(struct platform_device *pdev) {}
- #endif /* CONFIG_PM */
-
- #ifdef CONFIG_OMAP_MUX
--static struct omap_device_pad default_uart1_pads[] __initdata = {
-- {
-- .name = "uart1_cts.uart1_cts",
-- .enable = OMAP_PIN_INPUT_PULLUP | OMAP_MUX_MODE0,
-- },
-- {
-- .name = "uart1_rts.uart1_rts",
-- .enable = OMAP_PIN_OUTPUT | OMAP_MUX_MODE0,
-- },
-- {
-- .name = "uart1_tx.uart1_tx",
-- .enable = OMAP_PIN_OUTPUT | OMAP_MUX_MODE0,
-- },
-- {
-- .name = "uart1_rx.uart1_rx",
-- .flags = OMAP_DEVICE_PAD_REMUX | OMAP_DEVICE_PAD_WAKEUP,
-- .enable = OMAP_PIN_INPUT_PULLUP | OMAP_MUX_MODE0,
-- .idle = OMAP_PIN_INPUT_PULLUP | OMAP_MUX_MODE0,
-- },
--};
--
--static struct omap_device_pad default_uart2_pads[] __initdata = {
-- {
-- .name = "uart2_cts.uart2_cts",
-- .enable = OMAP_PIN_INPUT_PULLUP | OMAP_MUX_MODE0,
-- },
-- {
-- .name = "uart2_rts.uart2_rts",
-- .enable = OMAP_PIN_OUTPUT | OMAP_MUX_MODE0,
-- },
-- {
-- .name = "uart2_tx.uart2_tx",
-- .enable = OMAP_PIN_OUTPUT | OMAP_MUX_MODE0,
-- },
-- {
-- .name = "uart2_rx.uart2_rx",
-- .flags = OMAP_DEVICE_PAD_REMUX | OMAP_DEVICE_PAD_WAKEUP,
-- .enable = OMAP_PIN_INPUT_PULLUP | OMAP_MUX_MODE0,
-- .idle = OMAP_PIN_INPUT_PULLUP | OMAP_MUX_MODE0,
-- },
--};
--
--static struct omap_device_pad default_uart3_pads[] __initdata = {
-- {
-- .name = "uart3_cts_rctx.uart3_cts_rctx",
-- .enable = OMAP_PIN_INPUT_PULLUP | OMAP_MUX_MODE0,
-- },
-- {
-- .name = "uart3_rts_sd.uart3_rts_sd",
-- .enable = OMAP_PIN_OUTPUT | OMAP_MUX_MODE0,
-- },
-- {
-- .name = "uart3_tx_irtx.uart3_tx_irtx",
-- .enable = OMAP_PIN_OUTPUT | OMAP_MUX_MODE0,
-- },
-- {
-- .name = "uart3_rx_irrx.uart3_rx_irrx",
-- .flags = OMAP_DEVICE_PAD_REMUX | OMAP_DEVICE_PAD_WAKEUP,
-- .enable = OMAP_PIN_INPUT | OMAP_MUX_MODE0,
-- .idle = OMAP_PIN_INPUT | OMAP_MUX_MODE0,
-- },
--};
--
--static struct omap_device_pad default_omap36xx_uart4_pads[] __initdata = {
-- {
-- .name = "gpmc_wait2.uart4_tx",
-- .enable = OMAP_PIN_OUTPUT | OMAP_MUX_MODE0,
-- },
-- {
-- .name = "gpmc_wait3.uart4_rx",
-- .flags = OMAP_DEVICE_PAD_REMUX | OMAP_DEVICE_PAD_WAKEUP,
-- .enable = OMAP_PIN_INPUT | OMAP_MUX_MODE2,
-- .idle = OMAP_PIN_INPUT | OMAP_MUX_MODE2,
-- },
--};
--
--static struct omap_device_pad default_omap4_uart4_pads[] __initdata = {
-- {
-- .name = "uart4_tx.uart4_tx",
-- .enable = OMAP_PIN_OUTPUT | OMAP_MUX_MODE0,
-- },
-- {
-- .name = "uart4_rx.uart4_rx",
-- .flags = OMAP_DEVICE_PAD_REMUX | OMAP_DEVICE_PAD_WAKEUP,
-- .enable = OMAP_PIN_INPUT | OMAP_MUX_MODE0,
-- .idle = OMAP_PIN_INPUT | OMAP_MUX_MODE0,
-- },
--};
--
- static void omap_serial_fill_default_pads(struct omap_board_data *bdata)
- {
-- switch (bdata->id) {
-- case 0:
-- bdata->pads = default_uart1_pads;
-- bdata->pads_cnt = ARRAY_SIZE(default_uart1_pads);
-- break;
-- case 1:
-- bdata->pads = default_uart2_pads;
-- bdata->pads_cnt = ARRAY_SIZE(default_uart2_pads);
-- break;
-- case 2:
-- bdata->pads = default_uart3_pads;
-- bdata->pads_cnt = ARRAY_SIZE(default_uart3_pads);
-- break;
-- case 3:
-- if (cpu_is_omap44xx()) {
-- bdata->pads = default_omap4_uart4_pads;
-- bdata->pads_cnt =
-- ARRAY_SIZE(default_omap4_uart4_pads);
-- } else if (cpu_is_omap3630()) {
-- bdata->pads = default_omap36xx_uart4_pads;
-- bdata->pads_cnt =
-- ARRAY_SIZE(default_omap36xx_uart4_pads);
-- }
-- break;
-- default:
-- break;
-- }
- }
- #else
- static void omap_serial_fill_default_pads(struct omap_board_data *bdata) {}
---
-1.7.0.4
-
diff --git a/recipes-kernel/linux/linux-3.3.7/beagleboard/defconfig b/recipes-kernel/linux/linux-3.3.7/beagleboard/defconfig
deleted file mode 100644
index f1ea082..0000000
--- a/recipes-kernel/linux/linux-3.3.7/beagleboard/defconfig
+++ /dev/null
@@ -1,3780 +0,0 @@
-#
-# Automatically generated file; DO NOT EDIT.
-# Linux/arm 3.3.6 Kernel Configuration
-#
-CONFIG_ARM=y
-CONFIG_HAVE_PWM=y
-CONFIG_SYS_SUPPORTS_APM_EMULATION=y
-CONFIG_HAVE_SCHED_CLOCK=y
-CONFIG_GENERIC_GPIO=y
-# CONFIG_ARCH_USES_GETTIMEOFFSET is not set
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_KTIME_SCALAR=y
-CONFIG_HAVE_PROC_CPU=y
-CONFIG_STACKTRACE_SUPPORT=y
-CONFIG_HAVE_LATENCYTOP_SUPPORT=y
-CONFIG_LOCKDEP_SUPPORT=y
-CONFIG_TRACE_IRQFLAGS_SUPPORT=y
-CONFIG_HARDIRQS_SW_RESEND=y
-CONFIG_GENERIC_IRQ_PROBE=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_ARCH_HAS_CPUFREQ=y
-CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_NEED_DMA_MAP_STATE=y
-CONFIG_VECTORS_BASE=0xffff0000
-CONFIG_ARM_PATCH_PHYS_VIRT=y
-CONFIG_GENERIC_BUG=y
-CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-CONFIG_HAVE_IRQ_WORK=y
-CONFIG_IRQ_WORK=y
-
-#
-# General setup
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-CONFIG_CROSS_COMPILE=""
-CONFIG_LOCALVERSION=""
-# CONFIG_LOCALVERSION_AUTO is not set
-CONFIG_HAVE_KERNEL_GZIP=y
-CONFIG_HAVE_KERNEL_LZMA=y
-CONFIG_HAVE_KERNEL_LZO=y
-CONFIG_KERNEL_GZIP=y
-# CONFIG_KERNEL_LZMA is not set
-# CONFIG_KERNEL_LZO is not set
-CONFIG_DEFAULT_HOSTNAME="beagleboard"
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-CONFIG_SYSVIPC_SYSCTL=y
-CONFIG_POSIX_MQUEUE=y
-CONFIG_POSIX_MQUEUE_SYSCTL=y
-CONFIG_BSD_PROCESS_ACCT=y
-# CONFIG_BSD_PROCESS_ACCT_V3 is not set
-CONFIG_FHANDLE=y
-CONFIG_TASKSTATS=y
-CONFIG_TASK_DELAY_ACCT=y
-CONFIG_TASK_XACCT=y
-CONFIG_TASK_IO_ACCOUNTING=y
-# CONFIG_AUDIT is not set
-CONFIG_HAVE_GENERIC_HARDIRQS=y
-
-#
-# IRQ subsystem
-#
-CONFIG_GENERIC_HARDIRQS=y
-CONFIG_HAVE_SPARSE_IRQ=y
-CONFIG_GENERIC_IRQ_SHOW=y
-CONFIG_GENERIC_IRQ_CHIP=y
-CONFIG_IRQ_DOMAIN=y
-# CONFIG_SPARSE_IRQ is not set
-
-#
-# RCU Subsystem
-#
-CONFIG_TINY_RCU=y
-# CONFIG_PREEMPT_RCU is not set
-# CONFIG_RCU_TRACE is not set
-# CONFIG_TREE_RCU_TRACE is not set
-CONFIG_IKCONFIG=y
-CONFIG_IKCONFIG_PROC=y
-CONFIG_LOG_BUF_SHIFT=16
-CONFIG_CGROUPS=y
-# CONFIG_CGROUP_DEBUG is not set
-CONFIG_CGROUP_FREEZER=y
-CONFIG_CGROUP_DEVICE=y
-CONFIG_CPUSETS=y
-CONFIG_PROC_PID_CPUSET=y
-CONFIG_CGROUP_CPUACCT=y
-CONFIG_RESOURCE_COUNTERS=y
-CONFIG_CGROUP_MEM_RES_CTLR=y
-CONFIG_CGROUP_MEM_RES_CTLR_SWAP=y
-CONFIG_CGROUP_MEM_RES_CTLR_SWAP_ENABLED=y
-# CONFIG_CGROUP_MEM_RES_CTLR_KMEM is not set
-CONFIG_CGROUP_PERF=y
-CONFIG_CGROUP_SCHED=y
-CONFIG_FAIR_GROUP_SCHED=y
-# CONFIG_CFS_BANDWIDTH is not set
-CONFIG_RT_GROUP_SCHED=y
-CONFIG_BLK_CGROUP=y
-# CONFIG_DEBUG_BLK_CGROUP is not set
-# CONFIG_CHECKPOINT_RESTORE is not set
-CONFIG_NAMESPACES=y
-CONFIG_UTS_NS=y
-CONFIG_IPC_NS=y
-CONFIG_USER_NS=y
-CONFIG_PID_NS=y
-CONFIG_NET_NS=y
-CONFIG_SCHED_AUTOGROUP=y
-CONFIG_MM_OWNER=y
-# CONFIG_SYSFS_DEPRECATED is not set
-# CONFIG_RELAY is not set
-CONFIG_BLK_DEV_INITRD=y
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_RD_GZIP=y
-CONFIG_RD_BZIP2=y
-CONFIG_RD_LZMA=y
-CONFIG_RD_XZ=y
-CONFIG_RD_LZO=y
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_SYSCTL=y
-CONFIG_ANON_INODES=y
-CONFIG_EXPERT=y
-CONFIG_UID16=y
-# CONFIG_SYSCTL_SYSCALL is not set
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_EPOLL=y
-CONFIG_SIGNALFD=y
-CONFIG_TIMERFD=y
-CONFIG_EVENTFD=y
-CONFIG_SHMEM=y
-CONFIG_AIO=y
-CONFIG_EMBEDDED=y
-CONFIG_HAVE_PERF_EVENTS=y
-CONFIG_PERF_USE_VMALLOC=y
-
-#
-# Kernel Performance Events And Counters
-#
-CONFIG_PERF_EVENTS=y
-# CONFIG_PERF_COUNTERS is not set
-# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
-CONFIG_VM_EVENT_COUNTERS=y
-# CONFIG_COMPAT_BRK is not set
-CONFIG_SLAB=y
-# CONFIG_SLUB is not set
-# CONFIG_SLOB is not set
-CONFIG_PROFILING=y
-CONFIG_OPROFILE=y
-CONFIG_HAVE_OPROFILE=y
-# CONFIG_KPROBES is not set
-CONFIG_HAVE_KPROBES=y
-CONFIG_HAVE_KRETPROBES=y
-CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
-CONFIG_HAVE_CLK=y
-CONFIG_HAVE_DMA_API_DEBUG=y
-CONFIG_HAVE_HW_BREAKPOINT=y
-
-#
-# GCOV-based kernel profiling
-#
-# CONFIG_GCOV_KERNEL is not set
-CONFIG_HAVE_GENERIC_DMA_COHERENT=y
-CONFIG_SLABINFO=y
-CONFIG_RT_MUTEXES=y
-CONFIG_BASE_SMALL=0
-CONFIG_MODULES=y
-CONFIG_MODULE_FORCE_LOAD=y
-CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-CONFIG_MODVERSIONS=y
-CONFIG_MODULE_SRCVERSION_ALL=y
-CONFIG_BLOCK=y
-CONFIG_LBDAF=y
-CONFIG_BLK_DEV_BSG=y
-CONFIG_BLK_DEV_BSGLIB=y
-CONFIG_BLK_DEV_INTEGRITY=y
-CONFIG_BLK_DEV_THROTTLING=y
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-CONFIG_MAC_PARTITION=y
-CONFIG_MSDOS_PARTITION=y
-CONFIG_BSD_DISKLABEL=y
-CONFIG_MINIX_SUBPARTITION=y
-CONFIG_SOLARIS_X86_PARTITION=y
-# CONFIG_UNIXWARE_DISKLABEL is not set
-CONFIG_LDM_PARTITION=y
-CONFIG_LDM_DEBUG=y
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_KARMA_PARTITION is not set
-CONFIG_EFI_PARTITION=y
-# CONFIG_SYSV68_PARTITION is not set
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_DEADLINE=y
-CONFIG_IOSCHED_CFQ=y
-CONFIG_CFQ_GROUP_IOSCHED=y
-# CONFIG_DEFAULT_DEADLINE is not set
-CONFIG_DEFAULT_CFQ=y
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="cfq"
-# CONFIG_INLINE_SPIN_TRYLOCK is not set
-# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
-# CONFIG_INLINE_SPIN_LOCK is not set
-# CONFIG_INLINE_SPIN_LOCK_BH is not set
-# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
-# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
-CONFIG_INLINE_SPIN_UNLOCK=y
-# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
-CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
-# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
-# CONFIG_INLINE_READ_TRYLOCK is not set
-# CONFIG_INLINE_READ_LOCK is not set
-# CONFIG_INLINE_READ_LOCK_BH is not set
-# CONFIG_INLINE_READ_LOCK_IRQ is not set
-# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
-CONFIG_INLINE_READ_UNLOCK=y
-# CONFIG_INLINE_READ_UNLOCK_BH is not set
-CONFIG_INLINE_READ_UNLOCK_IRQ=y
-# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
-# CONFIG_INLINE_WRITE_TRYLOCK is not set
-# CONFIG_INLINE_WRITE_LOCK is not set
-# CONFIG_INLINE_WRITE_LOCK_BH is not set
-# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
-# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
-CONFIG_INLINE_WRITE_UNLOCK=y
-# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
-CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
-# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
-# CONFIG_MUTEX_SPIN_ON_OWNER is not set
-CONFIG_FREEZER=y
-
-#
-# System Type
-#
-CONFIG_MMU=y
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_VEXPRESS is not set
-# CONFIG_ARCH_AT91 is not set
-# CONFIG_ARCH_BCMRING is not set
-# CONFIG_ARCH_HIGHBANK is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CNS3XXX is not set
-# CONFIG_ARCH_GEMINI is not set
-# CONFIG_ARCH_PRIMA2 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_EP93XX is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_MXC is not set
-# CONFIG_ARCH_MXS is not set
-# CONFIG_ARCH_NETX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_IOP13XX is not set
-# CONFIG_ARCH_IOP32X is not set
-# CONFIG_ARCH_IOP33X is not set
-# CONFIG_ARCH_IXP23XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_DOVE is not set
-# CONFIG_ARCH_KIRKWOOD is not set
-# CONFIG_ARCH_LPC32XX is not set
-# CONFIG_ARCH_MV78XX0 is not set
-# CONFIG_ARCH_ORION5X is not set
-# CONFIG_ARCH_MMP is not set
-# CONFIG_ARCH_KS8695 is not set
-# CONFIG_ARCH_W90X900 is not set
-# CONFIG_ARCH_TEGRA is not set
-# CONFIG_ARCH_PICOXCELL is not set
-# CONFIG_ARCH_PNX4008 is not set
-# CONFIG_ARCH_PXA is not set
-# CONFIG_ARCH_MSM is not set
-# CONFIG_ARCH_SHMOBILE is not set
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_S3C2410 is not set
-# CONFIG_ARCH_S3C64XX is not set
-# CONFIG_ARCH_S5P64X0 is not set
-# CONFIG_ARCH_S5PC100 is not set
-# CONFIG_ARCH_S5PV210 is not set
-# CONFIG_ARCH_EXYNOS is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_U300 is not set
-# CONFIG_ARCH_U8500 is not set
-# CONFIG_ARCH_NOMADIK is not set
-# CONFIG_ARCH_DAVINCI is not set
-CONFIG_ARCH_OMAP=y
-# CONFIG_PLAT_SPEAR is not set
-# CONFIG_ARCH_VT8500 is not set
-# CONFIG_ARCH_ZYNQ is not set
-# CONFIG_GPIO_PCA953X is not set
-# CONFIG_KEYBOARD_GPIO_POLLED is not set
-
-#
-# TI OMAP Common Features
-#
-CONFIG_ARCH_OMAP_OTG=y
-# CONFIG_ARCH_OMAP1 is not set
-CONFIG_ARCH_OMAP2PLUS=y
-
-#
-# OMAP Feature Selections
-#
-CONFIG_OMAP_SMARTREFLEX=y
-CONFIG_OMAP_SMARTREFLEX_CLASS3=y
-CONFIG_OMAP_RESET_CLOCKS=y
-CONFIG_OMAP_MUX=y
-CONFIG_OMAP_MUX_DEBUG=y
-CONFIG_OMAP_MUX_WARNINGS=y
-CONFIG_OMAP_MCBSP=y
-CONFIG_OMAP_MBOX_FWK=m
-CONFIG_OMAP_MBOX_KFIFO_SIZE=256
-CONFIG_OMAP_32K_TIMER=y
-# CONFIG_OMAP3_L2_AUX_SECURE_SAVE_RESTORE is not set
-CONFIG_OMAP_32K_TIMER_HZ=128
-CONFIG_OMAP_DM_TIMER=y
-CONFIG_OMAP_PM_NOOP=y
-CONFIG_MACH_OMAP_GENERIC=y
-
-#
-# TI OMAP2/3/4 Specific Features
-#
-CONFIG_ARCH_OMAP2PLUS_TYPICAL=y
-# CONFIG_ARCH_OMAP2 is not set
-CONFIG_ARCH_OMAP3=y
-# CONFIG_ARCH_OMAP4 is not set
-CONFIG_SOC_OMAP3430=y
-CONFIG_SOC_OMAPTI81XX=y
-CONFIG_SOC_OMAPAM33XX=y
-CONFIG_OMAP_PACKAGE_CBB=y
-
-#
-# OMAP Board Type
-#
-CONFIG_MACH_OMAP3_BEAGLE=y
-# CONFIG_MACH_DEVKIT8000 is not set
-# CONFIG_MACH_OMAP_LDP is not set
-# CONFIG_MACH_OMAP3530_LV_SOM is not set
-# CONFIG_MACH_OMAP3_TORPEDO is not set
-CONFIG_MACH_OVERO=y
-CONFIG_MACH_OMAP3EVM=y
-# CONFIG_MACH_OMAP3517EVM is not set
-# CONFIG_MACH_CRANEBOARD is not set
-# CONFIG_MACH_OMAP3_PANDORA is not set
-CONFIG_MACH_OMAP3_TOUCHBOOK=y
-# CONFIG_MACH_OMAP_3430SDP is not set
-# CONFIG_MACH_NOKIA_RM680 is not set
-# CONFIG_MACH_NOKIA_RX51 is not set
-CONFIG_MACH_OMAP_ZOOM2=y
-# CONFIG_MACH_OMAP_ZOOM3 is not set
-# CONFIG_MACH_CM_T35 is not set
-# CONFIG_MACH_CM_T3517 is not set
-# CONFIG_MACH_IGEP0020 is not set
-# CONFIG_MACH_IGEP0030 is not set
-# CONFIG_MACH_SBC3530 is not set
-# CONFIG_MACH_OMAP_3630SDP is not set
-CONFIG_MACH_TI8168EVM=y
-CONFIG_MACH_TI8148EVM=y
-# CONFIG_OMAP3_EMU is not set
-# CONFIG_OMAP3_SDRC_AC_TIMING is not set
-
-#
-# System MMU
-#
-
-#
-# Processor Type
-#
-CONFIG_CPU_V7=y
-CONFIG_CPU_32v6K=y
-CONFIG_CPU_32v7=y
-CONFIG_CPU_ABRT_EV7=y
-CONFIG_CPU_PABRT_V7=y
-CONFIG_CPU_CACHE_V7=y
-CONFIG_CPU_CACHE_VIPT=y
-CONFIG_CPU_COPY_V6=y
-CONFIG_CPU_TLB_V7=y
-CONFIG_CPU_HAS_ASID=y
-CONFIG_CPU_CP15=y
-CONFIG_CPU_CP15_MMU=y
-
-#
-# Processor Features
-#
-# CONFIG_ARM_LPAE is not set
-# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set
-CONFIG_ARM_THUMB=y
-CONFIG_ARM_THUMBEE=y
-# CONFIG_SWP_EMULATE is not set
-# CONFIG_CPU_ICACHE_DISABLE is not set
-# CONFIG_CPU_DCACHE_DISABLE is not set
-# CONFIG_CPU_BPREDICT_DISABLE is not set
-# CONFIG_CACHE_L2X0 is not set
-CONFIG_ARM_L1_CACHE_SHIFT_6=y
-CONFIG_ARM_L1_CACHE_SHIFT=6
-CONFIG_ARM_DMA_MEM_BUFFERABLE=y
-CONFIG_ARM_NR_BANKS=8
-CONFIG_MULTI_IRQ_HANDLER=y
-CONFIG_ARM_ERRATA_430973=y
-# CONFIG_ARM_ERRATA_458693 is not set
-# CONFIG_ARM_ERRATA_460075 is not set
-# CONFIG_ARM_ERRATA_720789 is not set
-# CONFIG_ARM_ERRATA_743622 is not set
-# CONFIG_ARM_ERRATA_751472 is not set
-# CONFIG_ARM_ERRATA_754322 is not set
-
-#
-# Bus support
-#
-# CONFIG_PCI_SYSCALL is not set
-# CONFIG_ARCH_SUPPORTS_MSI is not set
-# CONFIG_PCCARD is not set
-
-#
-# Kernel Features
-#
-CONFIG_TICK_ONESHOT=y
-CONFIG_NO_HZ=y
-CONFIG_HIGH_RES_TIMERS=y
-CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
-CONFIG_VMSPLIT_3G=y
-# CONFIG_VMSPLIT_2G is not set
-# CONFIG_VMSPLIT_1G is not set
-CONFIG_PAGE_OFFSET=0xC0000000
-CONFIG_ARCH_NR_GPIO=0
-CONFIG_PREEMPT_NONE=y
-# CONFIG_PREEMPT_VOLUNTARY is not set
-# CONFIG_PREEMPT is not set
-CONFIG_HZ=128
-# CONFIG_THUMB2_KERNEL is not set
-CONFIG_AEABI=y
-# CONFIG_OABI_COMPAT is not set
-CONFIG_ARCH_HAS_HOLES_MEMORYMODEL=y
-# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
-# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
-CONFIG_HAVE_ARCH_PFN_VALID=y
-# CONFIG_HIGHMEM is not set
-CONFIG_SELECT_MEMORY_MODEL=y
-CONFIG_FLATMEM_MANUAL=y
-CONFIG_FLATMEM=y
-CONFIG_FLAT_NODE_MEM_MAP=y
-CONFIG_HAVE_MEMBLOCK=y
-CONFIG_PAGEFLAGS_EXTENDED=y
-CONFIG_SPLIT_PTLOCK_CPUS=4
-CONFIG_COMPACTION=y
-CONFIG_MIGRATION=y
-# CONFIG_PHYS_ADDR_T_64BIT is not set
-CONFIG_ZONE_DMA_FLAG=0
-CONFIG_VIRT_TO_BUS=y
-# CONFIG_KSM is not set
-CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
-CONFIG_NEED_PER_CPU_KM=y
-# CONFIG_CLEANCACHE is not set
-CONFIG_FORCE_MAX_ZONEORDER=11
-CONFIG_LEDS=y
-CONFIG_ALIGNMENT_TRAP=y
-# CONFIG_UACCESS_WITH_MEMCPY is not set
-# CONFIG_SECCOMP is not set
-# CONFIG_CC_STACKPROTECTOR is not set
-# CONFIG_DEPRECATED_PARAM_STRUCT is not set
-
-#
-# Boot options
-#
-CONFIG_USE_OF=y
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-# CONFIG_ARM_APPENDED_DTB is not set
-CONFIG_CMDLINE=" debug "
-CONFIG_CMDLINE_FROM_BOOTLOADER=y
-# CONFIG_CMDLINE_EXTEND is not set
-# CONFIG_CMDLINE_FORCE is not set
-# CONFIG_XIP_KERNEL is not set
-CONFIG_KEXEC=y
-CONFIG_ATAGS_PROC=y
-# CONFIG_CRASH_DUMP is not set
-CONFIG_AUTO_ZRELADDR=y
-
-#
-# CPU Power Management
-#
-
-#
-# CPU Frequency scaling
-#
-CONFIG_CPU_FREQ=y
-CONFIG_CPU_FREQ_TABLE=y
-CONFIG_CPU_FREQ_STAT=y
-CONFIG_CPU_FREQ_STAT_DETAILS=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
-# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
-CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
-# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
-CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-CONFIG_CPU_FREQ_GOV_POWERSAVE=y
-CONFIG_CPU_FREQ_GOV_USERSPACE=y
-CONFIG_CPU_FREQ_GOV_ONDEMAND=y
-CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
-
-#
-# ARM CPU frequency scaling drivers
-#
-# CONFIG_ARM_EXYNOS4210_CPUFREQ is not set
-CONFIG_CPU_IDLE=y
-CONFIG_CPU_IDLE_GOV_LADDER=y
-CONFIG_CPU_IDLE_GOV_MENU=y
-
-#
-# Floating point emulation
-#
-
-#
-# At least one emulation must be selected
-#
-CONFIG_VFP=y
-CONFIG_VFPv3=y
-CONFIG_NEON=y
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE=y
-# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
-CONFIG_HAVE_AOUT=y
-CONFIG_BINFMT_AOUT=m
-CONFIG_BINFMT_MISC=y
-
-#
-# Power management options
-#
-CONFIG_SUSPEND=y
-CONFIG_SUSPEND_FREEZER=y
-CONFIG_PM_SLEEP=y
-CONFIG_PM_RUNTIME=y
-CONFIG_PM=y
-CONFIG_PM_DEBUG=y
-# CONFIG_PM_ADVANCED_DEBUG is not set
-# CONFIG_PM_TEST_SUSPEND is not set
-CONFIG_CAN_PM_TRACE=y
-# CONFIG_APM_EMULATION is not set
-CONFIG_ARCH_HAS_OPP=y
-CONFIG_PM_OPP=y
-CONFIG_PM_CLK=y
-CONFIG_CPU_PM=y
-CONFIG_ARCH_SUSPEND_POSSIBLE=y
-CONFIG_ARM_CPU_SUSPEND=y
-CONFIG_NET=y
-
-#
-# Networking options
-#
-CONFIG_PACKET=y
-CONFIG_UNIX=y
-# CONFIG_UNIX_DIAG is not set
-CONFIG_XFRM=y
-# CONFIG_XFRM_USER is not set
-# CONFIG_XFRM_SUB_POLICY is not set
-# CONFIG_XFRM_MIGRATE is not set
-# CONFIG_XFRM_STATISTICS is not set
-CONFIG_XFRM_IPCOMP=m
-CONFIG_NET_KEY=y
-# CONFIG_NET_KEY_MIGRATE is not set
-CONFIG_INET=y
-# CONFIG_IP_MULTICAST is not set
-# CONFIG_IP_ADVANCED_ROUTER is not set
-CONFIG_IP_ROUTE_CLASSID=y
-CONFIG_IP_PNP=y
-CONFIG_IP_PNP_DHCP=y
-CONFIG_IP_PNP_BOOTP=y
-CONFIG_IP_PNP_RARP=y
-CONFIG_NET_IPIP=m
-CONFIG_NET_IPGRE_DEMUX=m
-CONFIG_NET_IPGRE=m
-# CONFIG_ARPD is not set
-# CONFIG_SYN_COOKIES is not set
-CONFIG_INET_AH=m
-CONFIG_INET_ESP=m
-CONFIG_INET_IPCOMP=m
-CONFIG_INET_XFRM_TUNNEL=m
-CONFIG_INET_TUNNEL=m
-CONFIG_INET_XFRM_MODE_TRANSPORT=y
-CONFIG_INET_XFRM_MODE_TUNNEL=y
-CONFIG_INET_XFRM_MODE_BEET=y
-CONFIG_INET_LRO=y
-CONFIG_INET_DIAG=m
-CONFIG_INET_TCP_DIAG=m
-# CONFIG_INET_UDP_DIAG is not set
-CONFIG_TCP_CONG_ADVANCED=y
-CONFIG_TCP_CONG_BIC=m
-CONFIG_TCP_CONG_CUBIC=y
-CONFIG_TCP_CONG_WESTWOOD=m
-CONFIG_TCP_CONG_HTCP=m
-CONFIG_TCP_CONG_HSTCP=m
-CONFIG_TCP_CONG_HYBLA=m
-CONFIG_TCP_CONG_VEGAS=m
-CONFIG_TCP_CONG_SCALABLE=m
-CONFIG_TCP_CONG_LP=m
-CONFIG_TCP_CONG_VENO=m
-CONFIG_TCP_CONG_YEAH=m
-CONFIG_TCP_CONG_ILLINOIS=m
-CONFIG_DEFAULT_CUBIC=y
-# CONFIG_DEFAULT_RENO is not set
-CONFIG_DEFAULT_TCP_CONG="cubic"
-# CONFIG_TCP_MD5SIG is not set
-CONFIG_IPV6=m
-# CONFIG_IPV6_PRIVACY is not set
-# CONFIG_IPV6_ROUTER_PREF is not set
-# CONFIG_IPV6_OPTIMISTIC_DAD is not set
-CONFIG_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-CONFIG_IPV6_MIP6=m
-CONFIG_INET6_XFRM_TUNNEL=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_TRANSPORT=m
-CONFIG_INET6_XFRM_MODE_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_BEET=m
-CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m
-CONFIG_IPV6_SIT=m
-# CONFIG_IPV6_SIT_6RD is not set
-CONFIG_IPV6_NDISC_NODETYPE=y
-CONFIG_IPV6_TUNNEL=m
-CONFIG_IPV6_MULTIPLE_TABLES=y
-CONFIG_IPV6_SUBTREES=y
-CONFIG_IPV6_MROUTE=y
-CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y
-# CONFIG_IPV6_PIMSM_V2 is not set
-# CONFIG_NETWORK_SECMARK is not set
-CONFIG_NETWORK_PHY_TIMESTAMPING=y
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-CONFIG_NETFILTER_ADVANCED=y
-CONFIG_BRIDGE_NETFILTER=y
-
-#
-# Core Netfilter Configuration
-#
-CONFIG_NETFILTER_NETLINK=m
-# CONFIG_NETFILTER_NETLINK_ACCT is not set
-CONFIG_NETFILTER_NETLINK_QUEUE=m
-CONFIG_NETFILTER_NETLINK_LOG=m
-CONFIG_NF_CONNTRACK=m
-CONFIG_NF_CONNTRACK_MARK=y
-CONFIG_NF_CONNTRACK_ZONES=y
-CONFIG_NF_CONNTRACK_PROCFS=y
-CONFIG_NF_CONNTRACK_EVENTS=y
-CONFIG_NF_CONNTRACK_TIMESTAMP=y
-CONFIG_NF_CT_PROTO_DCCP=m
-CONFIG_NF_CT_PROTO_GRE=m
-CONFIG_NF_CT_PROTO_SCTP=m
-CONFIG_NF_CT_PROTO_UDPLITE=m
-CONFIG_NF_CONNTRACK_AMANDA=m
-CONFIG_NF_CONNTRACK_FTP=m
-CONFIG_NF_CONNTRACK_H323=m
-CONFIG_NF_CONNTRACK_IRC=m
-CONFIG_NF_CONNTRACK_BROADCAST=m
-CONFIG_NF_CONNTRACK_NETBIOS_NS=m
-CONFIG_NF_CONNTRACK_SNMP=m
-CONFIG_NF_CONNTRACK_PPTP=m
-CONFIG_NF_CONNTRACK_SANE=m
-CONFIG_NF_CONNTRACK_SIP=m
-CONFIG_NF_CONNTRACK_TFTP=m
-CONFIG_NF_CT_NETLINK=m
-# CONFIG_NETFILTER_TPROXY is not set
-CONFIG_NETFILTER_XTABLES=m
-
-#
-# Xtables combined modules
-#
-CONFIG_NETFILTER_XT_MARK=m
-CONFIG_NETFILTER_XT_CONNMARK=m
-CONFIG_NETFILTER_XT_SET=m
-
-#
-# Xtables targets
-#
-CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m
-CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
-CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
-CONFIG_NETFILTER_XT_TARGET_CT=m
-# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
-CONFIG_NETFILTER_XT_TARGET_HL=m
-CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m
-# CONFIG_NETFILTER_XT_TARGET_LED is not set
-CONFIG_NETFILTER_XT_TARGET_MARK=m
-CONFIG_NETFILTER_XT_TARGET_NFLOG=m
-CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
-# CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set
-CONFIG_NETFILTER_XT_TARGET_RATEEST=m
-CONFIG_NETFILTER_XT_TARGET_TEE=m
-# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
-CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
-# CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP is not set
-
-#
-# Xtables matches
-#
-CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m
-# CONFIG_NETFILTER_XT_MATCH_CLUSTER is not set
-CONFIG_NETFILTER_XT_MATCH_COMMENT=m
-CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
-CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
-CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
-CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
-CONFIG_NETFILTER_XT_MATCH_CPU=m
-CONFIG_NETFILTER_XT_MATCH_DCCP=m
-CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m
-CONFIG_NETFILTER_XT_MATCH_DSCP=m
-CONFIG_NETFILTER_XT_MATCH_ECN=m
-CONFIG_NETFILTER_XT_MATCH_ESP=m
-CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
-CONFIG_NETFILTER_XT_MATCH_HELPER=m
-CONFIG_NETFILTER_XT_MATCH_HL=m
-CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
-CONFIG_NETFILTER_XT_MATCH_IPVS=m
-CONFIG_NETFILTER_XT_MATCH_LENGTH=m
-CONFIG_NETFILTER_XT_MATCH_LIMIT=m
-CONFIG_NETFILTER_XT_MATCH_MAC=m
-CONFIG_NETFILTER_XT_MATCH_MARK=m
-CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
-# CONFIG_NETFILTER_XT_MATCH_NFACCT is not set
-# CONFIG_NETFILTER_XT_MATCH_OSF is not set
-CONFIG_NETFILTER_XT_MATCH_OWNER=m
-CONFIG_NETFILTER_XT_MATCH_POLICY=m
-# CONFIG_NETFILTER_XT_MATCH_PHYSDEV is not set
-CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
-CONFIG_NETFILTER_XT_MATCH_QUOTA=m
-CONFIG_NETFILTER_XT_MATCH_RATEEST=m
-CONFIG_NETFILTER_XT_MATCH_REALM=m
-CONFIG_NETFILTER_XT_MATCH_RECENT=m
-CONFIG_NETFILTER_XT_MATCH_SCTP=m
-CONFIG_NETFILTER_XT_MATCH_STATE=m
-CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
-CONFIG_NETFILTER_XT_MATCH_STRING=m
-CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
-CONFIG_NETFILTER_XT_MATCH_TIME=m
-CONFIG_NETFILTER_XT_MATCH_U32=m
-CONFIG_IP_SET=m
-CONFIG_IP_SET_MAX=256
-# CONFIG_IP_SET_BITMAP_IP is not set
-# CONFIG_IP_SET_BITMAP_IPMAC is not set
-# CONFIG_IP_SET_BITMAP_PORT is not set
-# CONFIG_IP_SET_HASH_IP is not set
-# CONFIG_IP_SET_HASH_IPPORT is not set
-# CONFIG_IP_SET_HASH_IPPORTIP is not set
-# CONFIG_IP_SET_HASH_IPPORTNET is not set
-# CONFIG_IP_SET_HASH_NET is not set
-# CONFIG_IP_SET_HASH_NETPORT is not set
-# CONFIG_IP_SET_HASH_NETIFACE is not set
-# CONFIG_IP_SET_LIST_SET is not set
-CONFIG_IP_VS=m
-CONFIG_IP_VS_IPV6=y
-CONFIG_IP_VS_DEBUG=y
-CONFIG_IP_VS_TAB_BITS=12
-
-#
-# IPVS transport protocol load balancing support
-#
-CONFIG_IP_VS_PROTO_TCP=y
-CONFIG_IP_VS_PROTO_UDP=y
-CONFIG_IP_VS_PROTO_AH_ESP=y
-CONFIG_IP_VS_PROTO_ESP=y
-CONFIG_IP_VS_PROTO_AH=y
-# CONFIG_IP_VS_PROTO_SCTP is not set
-
-#
-# IPVS scheduler
-#
-CONFIG_IP_VS_RR=m
-CONFIG_IP_VS_WRR=m
-CONFIG_IP_VS_LC=m
-CONFIG_IP_VS_WLC=m
-CONFIG_IP_VS_LBLC=m
-CONFIG_IP_VS_LBLCR=m
-CONFIG_IP_VS_DH=m
-CONFIG_IP_VS_SH=m
-CONFIG_IP_VS_SED=m
-CONFIG_IP_VS_NQ=m
-
-#
-# IPVS SH scheduler
-#
-CONFIG_IP_VS_SH_TAB_BITS=8
-
-#
-# IPVS application helper
-#
-CONFIG_IP_VS_FTP=m
-CONFIG_IP_VS_NFCT=y
-CONFIG_IP_VS_PE_SIP=m
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_NF_DEFRAG_IPV4=m
-CONFIG_NF_CONNTRACK_IPV4=m
-CONFIG_NF_CONNTRACK_PROC_COMPAT=y
-CONFIG_IP_NF_QUEUE=m
-CONFIG_IP_NF_IPTABLES=m
-CONFIG_IP_NF_MATCH_AH=m
-CONFIG_IP_NF_MATCH_ECN=m
-# CONFIG_IP_NF_MATCH_RPFILTER is not set
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_FILTER=m
-CONFIG_IP_NF_TARGET_REJECT=m
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_NF_NAT=m
-CONFIG_NF_NAT_NEEDED=y
-CONFIG_IP_NF_TARGET_MASQUERADE=m
-CONFIG_IP_NF_TARGET_NETMAP=m
-CONFIG_IP_NF_TARGET_REDIRECT=m
-CONFIG_NF_NAT_SNMP_BASIC=m
-CONFIG_NF_NAT_PROTO_DCCP=m
-CONFIG_NF_NAT_PROTO_GRE=m
-CONFIG_NF_NAT_PROTO_UDPLITE=m
-CONFIG_NF_NAT_PROTO_SCTP=m
-CONFIG_NF_NAT_FTP=m
-CONFIG_NF_NAT_IRC=m
-CONFIG_NF_NAT_TFTP=m
-CONFIG_NF_NAT_AMANDA=m
-CONFIG_NF_NAT_PPTP=m
-CONFIG_NF_NAT_H323=m
-CONFIG_NF_NAT_SIP=m
-CONFIG_IP_NF_MANGLE=m
-CONFIG_IP_NF_TARGET_CLUSTERIP=m
-CONFIG_IP_NF_TARGET_ECN=m
-CONFIG_IP_NF_TARGET_TTL=m
-CONFIG_IP_NF_RAW=m
-CONFIG_IP_NF_ARPTABLES=m
-CONFIG_IP_NF_ARPFILTER=m
-CONFIG_IP_NF_ARP_MANGLE=m
-
-#
-# IPv6: Netfilter Configuration
-#
-CONFIG_NF_DEFRAG_IPV6=m
-CONFIG_NF_CONNTRACK_IPV6=m
-CONFIG_IP6_NF_QUEUE=m
-CONFIG_IP6_NF_IPTABLES=m
-CONFIG_IP6_NF_MATCH_AH=m
-CONFIG_IP6_NF_MATCH_EUI64=m
-CONFIG_IP6_NF_MATCH_FRAG=m
-CONFIG_IP6_NF_MATCH_OPTS=m
-CONFIG_IP6_NF_MATCH_HL=m
-CONFIG_IP6_NF_MATCH_IPV6HEADER=m
-CONFIG_IP6_NF_MATCH_MH=m
-# CONFIG_IP6_NF_MATCH_RPFILTER is not set
-CONFIG_IP6_NF_MATCH_RT=m
-CONFIG_IP6_NF_TARGET_HL=m
-CONFIG_IP6_NF_TARGET_LOG=m
-CONFIG_IP6_NF_FILTER=m
-CONFIG_IP6_NF_TARGET_REJECT=m
-CONFIG_IP6_NF_MANGLE=m
-CONFIG_IP6_NF_RAW=m
-# CONFIG_BRIDGE_NF_EBTABLES is not set
-CONFIG_IP_DCCP=m
-CONFIG_INET_DCCP_DIAG=m
-
-#
-# DCCP CCIDs Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_DCCP_CCID2_DEBUG is not set
-CONFIG_IP_DCCP_CCID3=y
-# CONFIG_IP_DCCP_CCID3_DEBUG is not set
-CONFIG_IP_DCCP_TFRC_LIB=y
-
-#
-# DCCP Kernel Hacking
-#
-# CONFIG_IP_DCCP_DEBUG is not set
-CONFIG_IP_SCTP=m
-# CONFIG_SCTP_DBG_MSG is not set
-# CONFIG_SCTP_DBG_OBJCNT is not set
-# CONFIG_SCTP_HMAC_NONE is not set
-# CONFIG_SCTP_HMAC_SHA1 is not set
-CONFIG_SCTP_HMAC_MD5=y
-# CONFIG_RDS is not set
-CONFIG_TIPC=m
-# CONFIG_TIPC_ADVANCED is not set
-# CONFIG_TIPC_DEBUG is not set
-CONFIG_ATM=m
-CONFIG_ATM_CLIP=m
-# CONFIG_ATM_CLIP_NO_ICMP is not set
-CONFIG_ATM_LANE=m
-CONFIG_ATM_MPOA=m
-CONFIG_ATM_BR2684=m
-# CONFIG_ATM_BR2684_IPFILTER is not set
-CONFIG_L2TP=m
-CONFIG_L2TP_DEBUGFS=m
-CONFIG_L2TP_V3=y
-CONFIG_L2TP_IP=m
-CONFIG_L2TP_ETH=m
-CONFIG_STP=m
-CONFIG_GARP=m
-CONFIG_BRIDGE=m
-CONFIG_BRIDGE_IGMP_SNOOPING=y
-# CONFIG_NET_DSA is not set
-CONFIG_VLAN_8021Q=m
-CONFIG_VLAN_8021Q_GVRP=y
-# CONFIG_DECNET is not set
-CONFIG_LLC=m
-# CONFIG_LLC2 is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_ECONET is not set
-CONFIG_WAN_ROUTER=m
-# CONFIG_PHONET is not set
-# CONFIG_IEEE802154 is not set
-CONFIG_NET_SCHED=y
-
-#
-# Queueing/Scheduling
-#
-CONFIG_NET_SCH_CBQ=m
-CONFIG_NET_SCH_HTB=m
-CONFIG_NET_SCH_HFSC=m
-CONFIG_NET_SCH_ATM=m
-CONFIG_NET_SCH_PRIO=m
-CONFIG_NET_SCH_MULTIQ=m
-CONFIG_NET_SCH_RED=m
-# CONFIG_NET_SCH_SFB is not set
-CONFIG_NET_SCH_SFQ=m
-CONFIG_NET_SCH_TEQL=m
-CONFIG_NET_SCH_TBF=m
-CONFIG_NET_SCH_GRED=m
-CONFIG_NET_SCH_DSMARK=m
-CONFIG_NET_SCH_NETEM=m
-CONFIG_NET_SCH_DRR=m
-CONFIG_NET_SCH_MQPRIO=m
-CONFIG_NET_SCH_CHOKE=m
-# CONFIG_NET_SCH_QFQ is not set
-
-#
-# Classification
-#
-CONFIG_NET_CLS=y
-CONFIG_NET_CLS_BASIC=m
-CONFIG_NET_CLS_TCINDEX=m
-CONFIG_NET_CLS_ROUTE4=m
-CONFIG_NET_CLS_FW=m
-CONFIG_NET_CLS_U32=m
-CONFIG_CLS_U32_PERF=y
-CONFIG_CLS_U32_MARK=y
-CONFIG_NET_CLS_RSVP=m
-CONFIG_NET_CLS_RSVP6=m
-CONFIG_NET_CLS_FLOW=m
-CONFIG_NET_CLS_CGROUP=m
-# CONFIG_NET_EMATCH is not set
-# CONFIG_NET_CLS_ACT is not set
-CONFIG_NET_CLS_IND=y
-CONFIG_NET_SCH_FIFO=y
-# CONFIG_DCB is not set
-CONFIG_DNS_RESOLVER=y
-# CONFIG_BATMAN_ADV is not set
-# CONFIG_OPENVSWITCH is not set
-# CONFIG_NETPRIO_CGROUP is not set
-CONFIG_BQL=y
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_HAMRADIO is not set
-CONFIG_CAN=m
-CONFIG_CAN_RAW=m
-CONFIG_CAN_BCM=m
-# CONFIG_CAN_GW is not set
-
-#
-# CAN Device Drivers
-#
-CONFIG_CAN_VCAN=m
-CONFIG_CAN_SLCAN=m
-# CONFIG_CAN_DEV is not set
-# CONFIG_CAN_DEBUG_DEVICES is not set
-CONFIG_IRDA=m
-
-#
-# IrDA protocols
-#
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-CONFIG_IRDA_ULTRA=y
-
-#
-# IrDA options
-#
-CONFIG_IRDA_CACHE_LAST_LSAP=y
-CONFIG_IRDA_FAST_RR=y
-CONFIG_IRDA_DEBUG=y
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-CONFIG_IRTTY_SIR=m
-
-#
-# Dongle support
-#
-CONFIG_DONGLE=y
-CONFIG_ESI_DONGLE=m
-CONFIG_ACTISYS_DONGLE=m
-CONFIG_TEKRAM_DONGLE=m
-CONFIG_TOIM3232_DONGLE=m
-CONFIG_LITELINK_DONGLE=m
-CONFIG_MA600_DONGLE=m
-CONFIG_GIRBIL_DONGLE=m
-CONFIG_MCP2120_DONGLE=m
-CONFIG_OLD_BELKIN_DONGLE=m
-# CONFIG_ACT200L_DONGLE is not set
-CONFIG_KINGSUN_DONGLE=m
-CONFIG_KSDAZZLE_DONGLE=m
-CONFIG_KS959_DONGLE=m
-
-#
-# FIR device drivers
-#
-CONFIG_USB_IRDA=m
-CONFIG_SIGMATEL_FIR=m
-CONFIG_MCS_FIR=m
-CONFIG_BT=y
-CONFIG_BT_RFCOMM=m
-CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=m
-CONFIG_BT_BNEP_MC_FILTER=y
-CONFIG_BT_BNEP_PROTO_FILTER=y
-CONFIG_BT_HIDP=m
-
-#
-# Bluetooth device drivers
-#
-CONFIG_BT_HCIBTUSB=y
-CONFIG_BT_HCIBTSDIO=m
-CONFIG_BT_HCIUART=y
-CONFIG_BT_HCIUART_H4=y
-CONFIG_BT_HCIUART_BCSP=y
-CONFIG_BT_HCIUART_ATH3K=y
-CONFIG_BT_HCIUART_LL=y
-CONFIG_BT_HCIBCM203X=m
-CONFIG_BT_HCIBPA10X=m
-CONFIG_BT_HCIBFUSB=m
-# CONFIG_BT_HCIVHCI is not set
-CONFIG_BT_MRVL=m
-# CONFIG_BT_MRVL_SDIO is not set
-CONFIG_BT_ATH3K=m
-CONFIG_BT_WILINK=m
-CONFIG_AF_RXRPC=m
-# CONFIG_AF_RXRPC_DEBUG is not set
-# CONFIG_RXKAD is not set
-CONFIG_FIB_RULES=y
-CONFIG_WIRELESS=y
-CONFIG_WIRELESS_EXT=y
-CONFIG_WEXT_CORE=y
-CONFIG_WEXT_PROC=y
-CONFIG_WEXT_SPY=y
-CONFIG_WEXT_PRIV=y
-CONFIG_CFG80211=m
-CONFIG_NL80211_TESTMODE=y
-# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set
-# CONFIG_CFG80211_REG_DEBUG is not set
-CONFIG_CFG80211_DEFAULT_PS=y
-# CONFIG_CFG80211_DEBUGFS is not set
-# CONFIG_CFG80211_INTERNAL_REGDB is not set
-CONFIG_CFG80211_WEXT=y
-CONFIG_WIRELESS_EXT_SYSFS=y
-CONFIG_LIB80211=y
-CONFIG_LIB80211_CRYPT_WEP=m
-CONFIG_LIB80211_CRYPT_CCMP=m
-CONFIG_LIB80211_CRYPT_TKIP=m
-# CONFIG_LIB80211_DEBUG is not set
-CONFIG_MAC80211=m
-CONFIG_MAC80211_HAS_RC=y
-CONFIG_MAC80211_RC_PID=y
-# CONFIG_MAC80211_RC_MINSTREL is not set
-CONFIG_MAC80211_RC_DEFAULT_PID=y
-CONFIG_MAC80211_RC_DEFAULT="pid"
-# CONFIG_MAC80211_MESH is not set
-CONFIG_MAC80211_LEDS=y
-# CONFIG_MAC80211_DEBUGFS is not set
-# CONFIG_MAC80211_DEBUG_MENU is not set
-CONFIG_WIMAX=m
-CONFIG_WIMAX_DEBUG_LEVEL=8
-CONFIG_RFKILL=y
-CONFIG_RFKILL_LEDS=y
-CONFIG_RFKILL_INPUT=y
-# CONFIG_RFKILL_REGULATOR is not set
-# CONFIG_RFKILL_GPIO is not set
-CONFIG_NET_9P=m
-# CONFIG_NET_9P_DEBUG is not set
-# CONFIG_CAIF is not set
-CONFIG_CEPH_LIB=m
-# CONFIG_CEPH_LIB_PRETTYDEBUG is not set
-# CONFIG_CEPH_LIB_USE_DNS_RESOLVER is not set
-# CONFIG_NFC is not set
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_UEVENT_HELPER_PATH=""
-CONFIG_DEVTMPFS=y
-CONFIG_DEVTMPFS_MOUNT=y
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
-CONFIG_FIRMWARE_IN_KERNEL=y
-CONFIG_EXTRA_FIRMWARE=""
-# CONFIG_DEBUG_DRIVER is not set
-# CONFIG_DEBUG_DEVRES is not set
-# CONFIG_SYS_HYPERVISOR is not set
-# CONFIG_GENERIC_CPU_DEVICES is not set
-CONFIG_REGMAP=y
-CONFIG_REGMAP_I2C=y
-CONFIG_REGMAP_SPI=y
-# CONFIG_DMA_SHARED_BUFFER is not set
-# CONFIG_CONNECTOR is not set
-CONFIG_MTD=y
-# CONFIG_MTD_TESTS is not set
-# CONFIG_MTD_REDBOOT_PARTS is not set
-# CONFIG_MTD_CMDLINE_PARTS is not set
-# CONFIG_MTD_AFS_PARTS is not set
-# CONFIG_MTD_OF_PARTS is not set
-# CONFIG_MTD_AR7_PARTS is not set
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=y
-CONFIG_MTD_BLKDEVS=y
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL is not set
-# CONFIG_RFD_FTL is not set
-# CONFIG_SSFDC is not set
-CONFIG_SM_FTL=m
-# CONFIG_MTD_OOPS is not set
-CONFIG_MTD_SWAP=m
-
-#
-# RAM/ROM/Flash chip drivers
-#
-# CONFIG_MTD_CFI is not set
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-# CONFIG_MTD_RAM is not set
-# CONFIG_MTD_ROM is not set
-# CONFIG_MTD_ABSENT is not set
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-# CONFIG_MTD_PLATRAM is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_DATAFLASH is not set
-# CONFIG_MTD_M25P80 is not set
-# CONFIG_MTD_SST25L is not set
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_PHRAM is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_BLOCK2MTD is not set
-
-#
-# Disk-On-Chip Device Drivers
-#
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOC2001PLUS is not set
-# CONFIG_MTD_DOCG3 is not set
-CONFIG_MTD_NAND_ECC=y
-# CONFIG_MTD_NAND_ECC_SMC is not set
-CONFIG_MTD_NAND=y
-# CONFIG_MTD_NAND_VERIFY_WRITE is not set
-# CONFIG_MTD_NAND_ECC_BCH is not set
-# CONFIG_MTD_SM_COMMON is not set
-# CONFIG_MTD_NAND_MUSEUM_IDS is not set
-# CONFIG_MTD_NAND_GPIO is not set
-CONFIG_MTD_NAND_OMAP2=y
-CONFIG_MTD_NAND_IDS=y
-# CONFIG_MTD_NAND_DISKONCHIP is not set
-# CONFIG_MTD_NAND_NANDSIM is not set
-CONFIG_MTD_NAND_PLATFORM=y
-# CONFIG_MTD_ALAUDA is not set
-# CONFIG_MTD_ONENAND is not set
-
-#
-# LPDDR flash memory drivers
-#
-# CONFIG_MTD_LPDDR is not set
-CONFIG_MTD_UBI=y
-CONFIG_MTD_UBI_WL_THRESHOLD=4096
-CONFIG_MTD_UBI_BEB_RESERVE=1
-# CONFIG_MTD_UBI_GLUEBI is not set
-# CONFIG_MTD_UBI_DEBUG is not set
-CONFIG_DTC=y
-CONFIG_OF=y
-
-#
-# Device Tree and Open Firmware support
-#
-# CONFIG_PROC_DEVICETREE is not set
-# CONFIG_OF_SELFTEST is not set
-CONFIG_OF_FLATTREE=y
-CONFIG_OF_EARLY_FLATTREE=y
-CONFIG_OF_ADDRESS=y
-CONFIG_OF_IRQ=y
-CONFIG_OF_DEVICE=y
-CONFIG_OF_GPIO=y
-CONFIG_OF_I2C=y
-CONFIG_OF_NET=y
-CONFIG_OF_SPI=y
-CONFIG_OF_MDIO=y
-# CONFIG_PARPORT is not set
-CONFIG_BLK_DEV=y
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=y
-CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
-CONFIG_BLK_DEV_CRYPTOLOOP=m
-
-#
-# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
-#
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_UB is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_BLK_DEV_RAM_SIZE=16384
-# CONFIG_BLK_DEV_XIP is not set
-CONFIG_CDROM_PKTCDVD=m
-CONFIG_CDROM_PKTCDVD_BUFFERS=8
-# CONFIG_CDROM_PKTCDVD_WCACHE is not set
-# CONFIG_ATA_OVER_ETH is not set
-# CONFIG_MG_DISK is not set
-# CONFIG_BLK_DEV_RBD is not set
-
-#
-# Misc devices
-#
-# CONFIG_SENSORS_LIS3LV02D is not set
-# CONFIG_AD525X_DPOT is not set
-# CONFIG_ATMEL_PWM is not set
-# CONFIG_ICS932S401 is not set
-# CONFIG_ENCLOSURE_SERVICES is not set
-# CONFIG_APDS9802ALS is not set
-# CONFIG_ISL29003 is not set
-# CONFIG_ISL29020 is not set
-# CONFIG_SENSORS_TSL2550 is not set
-CONFIG_SENSORS_BH1780=m
-# CONFIG_SENSORS_BH1770 is not set
-# CONFIG_SENSORS_APDS990X is not set
-CONFIG_HMC6352=m
-# CONFIG_DS1682 is not set
-# CONFIG_TI_DAC7512 is not set
-CONFIG_BMP085=m
-# CONFIG_USB_SWITCH_FSA9480 is not set
-# CONFIG_C2PORT is not set
-
-#
-# EEPROM support
-#
-CONFIG_EEPROM_AT24=m
-# CONFIG_EEPROM_AT25 is not set
-# CONFIG_EEPROM_LEGACY is not set
-# CONFIG_EEPROM_MAX6875 is not set
-CONFIG_EEPROM_93CX6=y
-# CONFIG_EEPROM_93XX46 is not set
-CONFIG_IWMC3200TOP=m
-# CONFIG_IWMC3200TOP_DEBUG is not set
-# CONFIG_IWMC3200TOP_DEBUGFS is not set
-
-#
-# Texas Instruments shared transport line discipline
-#
-CONFIG_TI_ST=m
-# CONFIG_SENSORS_LIS3_SPI is not set
-# CONFIG_SENSORS_LIS3_I2C is not set
-
-#
-# Altera FPGA firmware download module
-#
-# CONFIG_ALTERA_STAPL is not set
-
-#
-# SCSI device support
-#
-CONFIG_SCSI_MOD=y
-CONFIG_RAID_ATTRS=m
-CONFIG_SCSI=y
-CONFIG_SCSI_DMA=y
-# CONFIG_SCSI_TGT is not set
-# CONFIG_SCSI_NETLINK is not set
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=y
-# CONFIG_CHR_DEV_ST is not set
-# CONFIG_CHR_DEV_OSST is not set
-CONFIG_BLK_DEV_SR=y
-CONFIG_BLK_DEV_SR_VENDOR=y
-CONFIG_CHR_DEV_SG=y
-CONFIG_CHR_DEV_SCH=m
-CONFIG_SCSI_MULTI_LUN=y
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-# CONFIG_SCSI_SCAN_ASYNC is not set
-CONFIG_SCSI_WAIT_SCAN=m
-
-#
-# SCSI Transports
-#
-# CONFIG_SCSI_SPI_ATTRS is not set
-# CONFIG_SCSI_FC_ATTRS is not set
-CONFIG_SCSI_ISCSI_ATTRS=m
-# CONFIG_SCSI_SAS_ATTRS is not set
-# CONFIG_SCSI_SAS_LIBSAS is not set
-# CONFIG_SCSI_SRP_ATTRS is not set
-CONFIG_SCSI_LOWLEVEL=y
-CONFIG_ISCSI_TCP=m
-CONFIG_ISCSI_BOOT_SYSFS=m
-# CONFIG_LIBFC is not set
-# CONFIG_LIBFCOE is not set
-# CONFIG_SCSI_DEBUG is not set
-# CONFIG_SCSI_DH is not set
-# CONFIG_SCSI_OSD_INITIATOR is not set
-# CONFIG_ATA is not set
-CONFIG_MD=y
-CONFIG_BLK_DEV_MD=m
-CONFIG_MD_LINEAR=m
-CONFIG_MD_RAID0=m
-CONFIG_MD_RAID1=m
-CONFIG_MD_RAID10=m
-CONFIG_MD_RAID456=m
-CONFIG_MD_MULTIPATH=m
-CONFIG_MD_FAULTY=m
-CONFIG_BLK_DEV_DM=m
-# CONFIG_DM_DEBUG is not set
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-# CONFIG_DM_THIN_PROVISIONING is not set
-CONFIG_DM_MIRROR=m
-CONFIG_DM_RAID=m
-# CONFIG_DM_LOG_USERSPACE is not set
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-# CONFIG_DM_MULTIPATH_QL is not set
-# CONFIG_DM_MULTIPATH_ST is not set
-CONFIG_DM_DELAY=m
-# CONFIG_DM_UEVENT is not set
-CONFIG_DM_FLAKEY=m
-CONFIG_TARGET_CORE=m
-CONFIG_TCM_IBLOCK=m
-CONFIG_TCM_FILEIO=m
-CONFIG_TCM_PSCSI=m
-CONFIG_LOOPBACK_TARGET=m
-# CONFIG_ISCSI_TARGET is not set
-CONFIG_NETDEVICES=y
-CONFIG_NET_CORE=y
-CONFIG_BONDING=m
-CONFIG_DUMMY=m
-CONFIG_EQUALIZER=m
-CONFIG_MII=y
-# CONFIG_NET_TEAM is not set
-CONFIG_MACVLAN=m
-CONFIG_MACVTAP=m
-CONFIG_NETCONSOLE=m
-CONFIG_NETCONSOLE_DYNAMIC=y
-CONFIG_NETPOLL=y
-CONFIG_NETPOLL_TRAP=y
-CONFIG_NET_POLL_CONTROLLER=y
-CONFIG_TUN=m
-CONFIG_VETH=m
-CONFIG_ATM_DRIVERS=y
-# CONFIG_ATM_DUMMY is not set
-# CONFIG_ATM_TCP is not set
-
-#
-# CAIF transport drivers
-#
-CONFIG_ETHERNET=y
-CONFIG_NET_VENDOR_BROADCOM=y
-# CONFIG_B44 is not set
-# CONFIG_NET_CALXEDA_XGMAC is not set
-CONFIG_NET_VENDOR_CHELSIO=y
-# CONFIG_DM9000 is not set
-# CONFIG_DNET is not set
-CONFIG_NET_VENDOR_FARADAY=y
-# CONFIG_FTMAC100 is not set
-# CONFIG_FTGMAC100 is not set
-CONFIG_NET_VENDOR_INTEL=y
-CONFIG_NET_VENDOR_I825XX=y
-CONFIG_NET_VENDOR_MARVELL=y
-CONFIG_NET_VENDOR_MICREL=y
-CONFIG_KS8851=y
-# CONFIG_KS8851_MLL is not set
-CONFIG_NET_VENDOR_MICROCHIP=y
-CONFIG_ENC28J60=y
-# CONFIG_ENC28J60_WRITEVERIFY is not set
-CONFIG_NET_VENDOR_NATSEMI=y
-CONFIG_NET_VENDOR_8390=y
-# CONFIG_AX88796 is not set
-# CONFIG_ETHOC is not set
-CONFIG_NET_VENDOR_SEEQ=y
-# CONFIG_SEEQ8005 is not set
-CONFIG_NET_VENDOR_SMSC=y
-CONFIG_SMC91X=y
-CONFIG_SMC911X=y
-CONFIG_SMSC911X=y
-# CONFIG_SMSC911X_ARCH_HOOKS is not set
-CONFIG_NET_VENDOR_STMICRO=y
-# CONFIG_STMMAC_ETH is not set
-CONFIG_NET_VENDOR_TI=y
-# CONFIG_TI_DAVINCI_EMAC is not set
-CONFIG_TI_DAVINCI_MDIO=m
-CONFIG_TI_DAVINCI_CPDMA=m
-CONFIG_PHYLIB=y
-
-#
-# MII PHY device drivers
-#
-# CONFIG_MARVELL_PHY is not set
-# CONFIG_DAVICOM_PHY is not set
-# CONFIG_QSEMI_PHY is not set
-# CONFIG_LXT_PHY is not set
-# CONFIG_CICADA_PHY is not set
-# CONFIG_VITESSE_PHY is not set
-# CONFIG_SMSC_PHY is not set
-# CONFIG_BROADCOM_PHY is not set
-# CONFIG_ICPLUS_PHY is not set
-# CONFIG_REALTEK_PHY is not set
-# CONFIG_NATIONAL_PHY is not set
-# CONFIG_STE10XP is not set
-# CONFIG_LSI_ET1011C_PHY is not set
-CONFIG_MICREL_PHY=m
-# CONFIG_FIXED_PHY is not set
-# CONFIG_MDIO_BITBANG is not set
-# CONFIG_MICREL_KS8995MA is not set
-CONFIG_PPP=m
-CONFIG_PPP_BSDCOMP=m
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_FILTER=y
-CONFIG_PPP_MPPE=m
-CONFIG_PPP_MULTILINK=y
-# CONFIG_PPPOATM is not set
-CONFIG_PPPOE=m
-CONFIG_PPTP=m
-CONFIG_PPPOL2TP=m
-CONFIG_PPP_ASYNC=m
-CONFIG_PPP_SYNC_TTY=m
-# CONFIG_SLIP is not set
-CONFIG_SLHC=m
-
-#
-# USB Network Adapters
-#
-CONFIG_USB_CATC=y
-CONFIG_USB_KAWETH=y
-CONFIG_USB_PEGASUS=y
-CONFIG_USB_RTL8150=y
-CONFIG_USB_USBNET=y
-CONFIG_USB_NET_AX8817X=y
-CONFIG_USB_NET_CDCETHER=y
-# CONFIG_USB_NET_CDC_EEM is not set
-CONFIG_USB_NET_CDC_NCM=m
-CONFIG_USB_NET_DM9601=y
-CONFIG_USB_NET_SMSC75XX=m
-CONFIG_USB_NET_SMSC95XX=y
-CONFIG_USB_NET_GL620A=y
-CONFIG_USB_NET_NET1080=y
-CONFIG_USB_NET_PLUSB=y
-CONFIG_USB_NET_MCS7830=y
-CONFIG_USB_NET_RNDIS_HOST=y
-CONFIG_USB_NET_CDC_SUBSET=y
-CONFIG_USB_ALI_M5632=y
-CONFIG_USB_AN2720=y
-CONFIG_USB_BELKIN=y
-CONFIG_USB_ARMLINUX=y
-CONFIG_USB_EPSON2888=y
-CONFIG_USB_KC2190=y
-CONFIG_USB_NET_ZAURUS=y
-CONFIG_USB_NET_CX82310_ETH=m
-# CONFIG_USB_NET_KALMIA is not set
-CONFIG_USB_HSO=m
-CONFIG_USB_NET_INT51X1=m
-CONFIG_USB_IPHETH=m
-CONFIG_USB_SIERRA_NET=m
-CONFIG_USB_VL600=m
-CONFIG_WLAN=y
-# CONFIG_LIBERTAS_THINFIRM is not set
-CONFIG_AT76C50X_USB=m
-CONFIG_USB_ZD1201=m
-CONFIG_USB_NET_RNDIS_WLAN=m
-CONFIG_RTL8187=m
-CONFIG_RTL8187_LEDS=y
-# CONFIG_MAC80211_HWSIM is not set
-CONFIG_ATH_COMMON=m
-# CONFIG_ATH_DEBUG is not set
-# CONFIG_ATH9K is not set
-# CONFIG_ATH9K_HTC is not set
-CONFIG_CARL9170=m
-CONFIG_CARL9170_LEDS=y
-CONFIG_CARL9170_WPC=y
-# CONFIG_CARL9170_HWRNG is not set
-# CONFIG_ATH6KL is not set
-CONFIG_B43=m
-CONFIG_B43_SSB=y
-CONFIG_B43_SDIO=y
-CONFIG_B43_PIO=y
-CONFIG_B43_PHY_N=y
-CONFIG_B43_PHY_LP=y
-# CONFIG_B43_PHY_HT is not set
-CONFIG_B43_LEDS=y
-CONFIG_B43_HWRNG=y
-# CONFIG_B43_DEBUG is not set
-# CONFIG_B43LEGACY is not set
-# CONFIG_BRCMFMAC is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-CONFIG_HOSTAP_FIRMWARE_NVRAM=y
-# CONFIG_IWM is not set
-CONFIG_LIBERTAS=m
-CONFIG_LIBERTAS_USB=m
-CONFIG_LIBERTAS_SDIO=m
-# CONFIG_LIBERTAS_SPI is not set
-# CONFIG_LIBERTAS_DEBUG is not set
-# CONFIG_LIBERTAS_MESH is not set
-CONFIG_P54_COMMON=m
-CONFIG_P54_USB=m
-# CONFIG_P54_SPI is not set
-CONFIG_P54_LEDS=y
-CONFIG_RT2X00=m
-CONFIG_RT2500USB=m
-CONFIG_RT73USB=m
-CONFIG_RT2800USB=m
-CONFIG_RT2800USB_RT33XX=y
-CONFIG_RT2800USB_RT35XX=y
-CONFIG_RT2800USB_RT53XX=y
-CONFIG_RT2800USB_UNKNOWN=y
-CONFIG_RT2800_LIB=m
-CONFIG_RT2X00_LIB_USB=m
-CONFIG_RT2X00_LIB=m
-CONFIG_RT2X00_LIB_FIRMWARE=y
-CONFIG_RT2X00_LIB_CRYPTO=y
-CONFIG_RT2X00_LIB_LEDS=y
-# CONFIG_RT2X00_DEBUG is not set
-CONFIG_RTL8192CU=m
-CONFIG_RTLWIFI=m
-CONFIG_RTL8192C_COMMON=m
-CONFIG_WL1251=m
-CONFIG_WL1251_SPI=m
-CONFIG_WL1251_SDIO=m
-CONFIG_WL12XX_MENU=m
-CONFIG_WL12XX=m
-CONFIG_WL12XX_SPI=m
-CONFIG_WL12XX_SDIO=m
-CONFIG_WL12XX_PLATFORM_DATA=y
-CONFIG_ZD1211RW=m
-# CONFIG_ZD1211RW_DEBUG is not set
-# CONFIG_MWIFIEX is not set
-
-#
-# WiMAX Wireless Broadband devices
-#
-CONFIG_WIMAX_I2400M=m
-CONFIG_WIMAX_I2400M_USB=m
-CONFIG_WIMAX_I2400M_SDIO=m
-CONFIG_WIMAX_IWMC3200_SDIO=y
-CONFIG_WIMAX_I2400M_DEBUG_LEVEL=8
-# CONFIG_WAN is not set
-# CONFIG_ISDN is not set
-# CONFIG_PHONE is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-CONFIG_INPUT_FF_MEMLESS=y
-CONFIG_INPUT_POLLDEV=y
-# CONFIG_INPUT_SPARSEKMAP is not set
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=y
-CONFIG_INPUT_MOUSEDEV_PSAUX=y
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
-# CONFIG_INPUT_JOYDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-# CONFIG_KEYBOARD_ADP5588 is not set
-# CONFIG_KEYBOARD_ADP5589 is not set
-# CONFIG_KEYBOARD_ATKBD is not set
-CONFIG_KEYBOARD_QT1070=m
-CONFIG_KEYBOARD_QT2160=m
-# CONFIG_KEYBOARD_LKKBD is not set
-CONFIG_KEYBOARD_GPIO=y
-# CONFIG_KEYBOARD_TCA6416 is not set
-# CONFIG_KEYBOARD_TCA8418 is not set
-# CONFIG_KEYBOARD_MATRIX is not set
-# CONFIG_KEYBOARD_LM8323 is not set
-# CONFIG_KEYBOARD_MAX7359 is not set
-CONFIG_KEYBOARD_MCS=m
-# CONFIG_KEYBOARD_MPR121 is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-# CONFIG_KEYBOARD_OPENCORES is not set
-# CONFIG_KEYBOARD_SAMSUNG is not set
-# CONFIG_KEYBOARD_STOWAWAY is not set
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_TWL4030 is not set
-# CONFIG_KEYBOARD_XTKBD is not set
-CONFIG_INPUT_MOUSE=y
-CONFIG_MOUSE_PS2=y
-CONFIG_MOUSE_PS2_ALPS=y
-CONFIG_MOUSE_PS2_LOGIPS2PP=y
-CONFIG_MOUSE_PS2_SYNAPTICS=y
-CONFIG_MOUSE_PS2_TRACKPOINT=y
-# CONFIG_MOUSE_PS2_ELANTECH is not set
-# CONFIG_MOUSE_PS2_SENTELIC is not set
-# CONFIG_MOUSE_PS2_TOUCHKIT is not set
-# CONFIG_MOUSE_SERIAL is not set
-# CONFIG_MOUSE_APPLETOUCH is not set
-# CONFIG_MOUSE_BCM5974 is not set
-# CONFIG_MOUSE_VSXXXAA is not set
-# CONFIG_MOUSE_GPIO is not set
-# CONFIG_MOUSE_SYNAPTICS_I2C is not set
-# CONFIG_INPUT_JOYSTICK is not set
-# CONFIG_INPUT_TABLET is not set
-CONFIG_INPUT_TOUCHSCREEN=y
-# CONFIG_TOUCHSCREEN_ADS7846 is not set
-# CONFIG_TOUCHSCREEN_AD7877 is not set
-# CONFIG_TOUCHSCREEN_AD7879 is not set
-# CONFIG_TOUCHSCREEN_ATMEL_MXT is not set
-# CONFIG_TOUCHSCREEN_AUO_PIXCIR is not set
-# CONFIG_TOUCHSCREEN_BU21013 is not set
-# CONFIG_TOUCHSCREEN_CY8CTMG110 is not set
-# CONFIG_TOUCHSCREEN_DYNAPRO is not set
-# CONFIG_TOUCHSCREEN_HAMPSHIRE is not set
-# CONFIG_TOUCHSCREEN_EETI is not set
-# CONFIG_TOUCHSCREEN_EGALAX is not set
-# CONFIG_TOUCHSCREEN_FUJITSU is not set
-# CONFIG_TOUCHSCREEN_GUNZE is not set
-# CONFIG_TOUCHSCREEN_ELO is not set
-# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set
-# CONFIG_TOUCHSCREEN_MAX11801 is not set
-# CONFIG_TOUCHSCREEN_MCS5000 is not set
-# CONFIG_TOUCHSCREEN_MTOUCH is not set
-# CONFIG_TOUCHSCREEN_INEXIO is not set
-# CONFIG_TOUCHSCREEN_MK712 is not set
-# CONFIG_TOUCHSCREEN_PENMOUNT is not set
-# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
-# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
-# CONFIG_TOUCHSCREEN_PIXCIR is not set
-# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
-# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
-# CONFIG_TOUCHSCREEN_TSC_SERIO is not set
-# CONFIG_TOUCHSCREEN_TSC2005 is not set
-CONFIG_TOUCHSCREEN_TSC2007=y
-# CONFIG_TOUCHSCREEN_W90X900 is not set
-# CONFIG_TOUCHSCREEN_ST1232 is not set
-# CONFIG_TOUCHSCREEN_TPS6507X is not set
-CONFIG_INPUT_MISC=y
-CONFIG_INPUT_AD714X=m
-CONFIG_INPUT_AD714X_I2C=m
-CONFIG_INPUT_AD714X_SPI=m
-# CONFIG_INPUT_BMA150 is not set
-# CONFIG_INPUT_MMA8450 is not set
-# CONFIG_INPUT_MPU3050 is not set
-# CONFIG_INPUT_GP2A is not set
-# CONFIG_INPUT_GPIO_TILT_POLLED is not set
-# CONFIG_INPUT_ATI_REMOTE2 is not set
-# CONFIG_INPUT_KEYSPAN_REMOTE is not set
-# CONFIG_INPUT_KXTJ9 is not set
-# CONFIG_INPUT_POWERMATE is not set
-# CONFIG_INPUT_YEALINK is not set
-# CONFIG_INPUT_CM109 is not set
-CONFIG_INPUT_TWL4030_PWRBUTTON=y
-CONFIG_INPUT_TWL4030_VIBRA=m
-# CONFIG_INPUT_TWL6040_VIBRA is not set
-CONFIG_INPUT_UINPUT=y
-CONFIG_INPUT_PCF8574=m
-CONFIG_INPUT_PWM_BEEPER=m
-# CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set
-CONFIG_INPUT_ADXL34X=m
-CONFIG_INPUT_ADXL34X_I2C=m
-CONFIG_INPUT_ADXL34X_SPI=m
-CONFIG_INPUT_CMA3000=m
-CONFIG_INPUT_CMA3000_I2C=m
-
-#
-# Hardware I/O ports
-#
-CONFIG_SERIO=y
-CONFIG_SERIO_SERPORT=y
-CONFIG_SERIO_LIBPS2=y
-# CONFIG_SERIO_RAW is not set
-# CONFIG_SERIO_ALTERA_PS2 is not set
-# CONFIG_SERIO_PS2MULT is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_CONSOLE_TRANSLATIONS=y
-CONFIG_VT_CONSOLE=y
-CONFIG_VT_CONSOLE_SLEEP=y
-CONFIG_HW_CONSOLE=y
-CONFIG_VT_HW_CONSOLE_BINDING=y
-CONFIG_UNIX98_PTYS=y
-# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
-# CONFIG_LEGACY_PTYS is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-CONFIG_N_GSM=m
-# CONFIG_TRACE_SINK is not set
-CONFIG_DEVKMEM=y
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=y
-CONFIG_SERIAL_8250_CONSOLE=y
-CONFIG_SERIAL_8250_NR_UARTS=32
-CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-CONFIG_SERIAL_8250_EXTENDED=y
-CONFIG_SERIAL_8250_MANY_PORTS=y
-CONFIG_SERIAL_8250_SHARE_IRQ=y
-CONFIG_SERIAL_8250_DETECT_IRQ=y
-CONFIG_SERIAL_8250_RSA=y
-# CONFIG_SERIAL_8250_DW is not set
-
-#
-# Non-8250 serial port support
-#
-# CONFIG_SERIAL_MAX3100 is not set
-# CONFIG_SERIAL_MAX3107 is not set
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-# CONFIG_SERIAL_OF_PLATFORM is not set
-CONFIG_SERIAL_OMAP=y
-CONFIG_SERIAL_OMAP_CONSOLE=y
-# CONFIG_SERIAL_TIMBERDALE is not set
-# CONFIG_SERIAL_ALTERA_JTAGUART is not set
-# CONFIG_SERIAL_ALTERA_UART is not set
-CONFIG_SERIAL_IFX6X60=m
-# CONFIG_SERIAL_XILINX_PS_UART is not set
-CONFIG_TTY_PRINTK=y
-# CONFIG_HVC_DCC is not set
-# CONFIG_IPMI_HANDLER is not set
-CONFIG_HW_RANDOM=y
-# CONFIG_HW_RANDOM_TIMERIOMEM is not set
-# CONFIG_R3964 is not set
-# CONFIG_RAW_DRIVER is not set
-# CONFIG_TCG_TPM is not set
-# CONFIG_RAMOOPS is not set
-CONFIG_I2C=y
-CONFIG_I2C_BOARDINFO=y
-CONFIG_I2C_COMPAT=y
-CONFIG_I2C_CHARDEV=y
-CONFIG_I2C_MUX=m
-
-#
-# Multiplexer I2C Chip support
-#
-CONFIG_I2C_MUX_GPIO=m
-# CONFIG_I2C_MUX_PCA9541 is not set
-# CONFIG_I2C_MUX_PCA954x is not set
-CONFIG_I2C_HELPER_AUTO=y
-CONFIG_I2C_ALGOBIT=m
-
-#
-# I2C Hardware Bus support
-#
-
-#
-# I2C system bus drivers (mostly embedded / system-on-chip)
-#
-# CONFIG_I2C_DESIGNWARE_PLATFORM is not set
-# CONFIG_I2C_GPIO is not set
-# CONFIG_I2C_OCORES is not set
-CONFIG_I2C_OMAP=y
-# CONFIG_I2C_PCA_PLATFORM is not set
-# CONFIG_I2C_PXA_PCI is not set
-# CONFIG_I2C_SIMTEC is not set
-# CONFIG_I2C_XILINX is not set
-
-#
-# External I2C/SMBus adapter drivers
-#
-CONFIG_I2C_DIOLAN_U2C=m
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_TAOS_EVM is not set
-# CONFIG_I2C_TINY_USB is not set
-
-#
-# Other I2C/SMBus bus drivers
-#
-# CONFIG_I2C_STUB is not set
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-CONFIG_SPI=y
-# CONFIG_SPI_DEBUG is not set
-CONFIG_SPI_MASTER=y
-
-#
-# SPI Master Controller Drivers
-#
-# CONFIG_SPI_ALTERA is not set
-# CONFIG_SPI_BITBANG is not set
-# CONFIG_SPI_GPIO is not set
-# CONFIG_SPI_OC_TINY is not set
-CONFIG_SPI_OMAP24XX=y
-# CONFIG_SPI_PXA2XX_PCI is not set
-# CONFIG_SPI_XILINX is not set
-# CONFIG_SPI_DESIGNWARE is not set
-
-#
-# SPI Protocol Masters
-#
-CONFIG_SPI_SPIDEV=y
-# CONFIG_SPI_TLE62X0 is not set
-
-#
-# PPS support
-#
-# CONFIG_PPS is not set
-
-#
-# PPS generators support
-#
-
-#
-# PTP clock support
-#
-
-#
-# Enable Device Drivers -> PPS to see the PTP clock options.
-#
-CONFIG_ARCH_REQUIRE_GPIOLIB=y
-CONFIG_GPIOLIB=y
-# CONFIG_DEBUG_GPIO is not set
-CONFIG_GPIO_SYSFS=y
-CONFIG_GPIO_MAX730X=m
-
-#
-# Memory mapped GPIO drivers:
-#
-# CONFIG_GPIO_GENERIC_PLATFORM is not set
-
-#
-# I2C GPIO expanders:
-#
-CONFIG_GPIO_MAX7300=m
-# CONFIG_GPIO_MAX732X is not set
-# CONFIG_GPIO_PCF857X is not set
-# CONFIG_GPIO_SX150X is not set
-CONFIG_GPIO_TWL4030=y
-CONFIG_GPIO_ADP5588=m
-
-#
-# PCI GPIO expanders:
-#
-
-#
-# SPI GPIO expanders:
-#
-# CONFIG_GPIO_MAX7301 is not set
-# CONFIG_GPIO_MCP23S08 is not set
-# CONFIG_GPIO_MC33880 is not set
-# CONFIG_GPIO_74X164 is not set
-
-#
-# AC97 GPIO expanders:
-#
-
-#
-# MODULbus GPIO expanders:
-#
-# CONFIG_W1 is not set
-CONFIG_POWER_SUPPLY=m
-# CONFIG_POWER_SUPPLY_DEBUG is not set
-# CONFIG_PDA_POWER is not set
-CONFIG_TEST_POWER=m
-# CONFIG_BATTERY_DS2780 is not set
-# CONFIG_BATTERY_DS2782 is not set
-# CONFIG_BATTERY_SBS is not set
-# CONFIG_BATTERY_BQ27x00 is not set
-# CONFIG_BATTERY_MAX17040 is not set
-CONFIG_BATTERY_MAX17042=m
-CONFIG_CHARGER_ISP1704=m
-# CONFIG_CHARGER_MAX8903 is not set
-CONFIG_CHARGER_TWL4030=m
-# CONFIG_CHARGER_LP8727 is not set
-CONFIG_CHARGER_GPIO=m
-# CONFIG_CHARGER_MANAGER is not set
-CONFIG_HWMON=y
-# CONFIG_HWMON_VID is not set
-# CONFIG_HWMON_DEBUG_CHIP is not set
-
-#
-# Native drivers
-#
-# CONFIG_SENSORS_AD7314 is not set
-# CONFIG_SENSORS_AD7414 is not set
-# CONFIG_SENSORS_AD7418 is not set
-# CONFIG_SENSORS_ADCXX is not set
-# CONFIG_SENSORS_ADM1021 is not set
-# CONFIG_SENSORS_ADM1025 is not set
-# CONFIG_SENSORS_ADM1026 is not set
-# CONFIG_SENSORS_ADM1029 is not set
-# CONFIG_SENSORS_ADM1031 is not set
-# CONFIG_SENSORS_ADM9240 is not set
-CONFIG_SENSORS_ADT7411=m
-# CONFIG_SENSORS_ADT7462 is not set
-# CONFIG_SENSORS_ADT7470 is not set
-# CONFIG_SENSORS_ADT7475 is not set
-CONFIG_SENSORS_ASC7621=m
-# CONFIG_SENSORS_ATXP1 is not set
-CONFIG_SENSORS_DS620=m
-# CONFIG_SENSORS_DS1621 is not set
-# CONFIG_SENSORS_F71805F is not set
-# CONFIG_SENSORS_F71882FG is not set
-# CONFIG_SENSORS_F75375S is not set
-# CONFIG_SENSORS_G760A is not set
-# CONFIG_SENSORS_GL518SM is not set
-# CONFIG_SENSORS_GL520SM is not set
-CONFIG_SENSORS_GPIO_FAN=m
-# CONFIG_SENSORS_IT87 is not set
-CONFIG_SENSORS_JC42=m
-# CONFIG_SENSORS_LINEAGE is not set
-# CONFIG_SENSORS_LM63 is not set
-# CONFIG_SENSORS_LM70 is not set
-# CONFIG_SENSORS_LM73 is not set
-# CONFIG_SENSORS_LM75 is not set
-# CONFIG_SENSORS_LM77 is not set
-# CONFIG_SENSORS_LM78 is not set
-# CONFIG_SENSORS_LM80 is not set
-# CONFIG_SENSORS_LM83 is not set
-# CONFIG_SENSORS_LM85 is not set
-# CONFIG_SENSORS_LM87 is not set
-# CONFIG_SENSORS_LM90 is not set
-# CONFIG_SENSORS_LM92 is not set
-# CONFIG_SENSORS_LM93 is not set
-# CONFIG_SENSORS_LTC4151 is not set
-# CONFIG_SENSORS_LTC4215 is not set
-# CONFIG_SENSORS_LTC4245 is not set
-# CONFIG_SENSORS_LTC4261 is not set
-# CONFIG_SENSORS_LM95241 is not set
-# CONFIG_SENSORS_LM95245 is not set
-# CONFIG_SENSORS_MAX1111 is not set
-# CONFIG_SENSORS_MAX16065 is not set
-# CONFIG_SENSORS_MAX1619 is not set
-# CONFIG_SENSORS_MAX1668 is not set
-# CONFIG_SENSORS_MAX6639 is not set
-# CONFIG_SENSORS_MAX6642 is not set
-# CONFIG_SENSORS_MAX6650 is not set
-# CONFIG_SENSORS_NTC_THERMISTOR is not set
-# CONFIG_SENSORS_PC87360 is not set
-# CONFIG_SENSORS_PC87427 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_PMBUS is not set
-# CONFIG_SENSORS_SHT15 is not set
-# CONFIG_SENSORS_SHT21 is not set
-CONFIG_SENSORS_SMM665=m
-# CONFIG_SENSORS_DME1737 is not set
-CONFIG_SENSORS_EMC1403=m
-CONFIG_SENSORS_EMC2103=m
-# CONFIG_SENSORS_EMC6W201 is not set
-# CONFIG_SENSORS_SMSC47M1 is not set
-# CONFIG_SENSORS_SMSC47M192 is not set
-# CONFIG_SENSORS_SMSC47B397 is not set
-# CONFIG_SENSORS_SCH56XX_COMMON is not set
-# CONFIG_SENSORS_SCH5627 is not set
-# CONFIG_SENSORS_SCH5636 is not set
-# CONFIG_SENSORS_ADS1015 is not set
-# CONFIG_SENSORS_ADS7828 is not set
-CONFIG_SENSORS_ADS7871=m
-CONFIG_SENSORS_AMC6821=m
-# CONFIG_SENSORS_THMC50 is not set
-CONFIG_SENSORS_TMP102=m
-# CONFIG_SENSORS_TMP401 is not set
-# CONFIG_SENSORS_TMP421 is not set
-CONFIG_SENSORS_TWL4030_MADC=m
-# CONFIG_SENSORS_VT1211 is not set
-# CONFIG_SENSORS_W83781D is not set
-# CONFIG_SENSORS_W83791D is not set
-# CONFIG_SENSORS_W83792D is not set
-# CONFIG_SENSORS_W83793 is not set
-# CONFIG_SENSORS_W83795 is not set
-# CONFIG_SENSORS_W83L785TS is not set
-# CONFIG_SENSORS_W83L786NG is not set
-# CONFIG_SENSORS_W83627HF is not set
-# CONFIG_SENSORS_W83627EHF is not set
-CONFIG_THERMAL=y
-CONFIG_THERMAL_HWMON=y
-CONFIG_WATCHDOG=y
-# CONFIG_WATCHDOG_CORE is not set
-CONFIG_WATCHDOG_NOWAYOUT=y
-
-#
-# Watchdog Device Drivers
-#
-# CONFIG_SOFT_WATCHDOG is not set
-# CONFIG_DW_WATCHDOG is not set
-CONFIG_OMAP_WATCHDOG=y
-# CONFIG_TWL4030_WATCHDOG is not set
-# CONFIG_MAX63XX_WATCHDOG is not set
-
-#
-# USB-based Watchdog Cards
-#
-# CONFIG_USBPCWATCHDOG is not set
-CONFIG_SSB_POSSIBLE=y
-
-#
-# Sonics Silicon Backplane
-#
-CONFIG_SSB=y
-CONFIG_SSB_BLOCKIO=y
-CONFIG_SSB_SDIOHOST_POSSIBLE=y
-CONFIG_SSB_SDIOHOST=y
-# CONFIG_SSB_SILENT is not set
-# CONFIG_SSB_DEBUG is not set
-CONFIG_BCMA_POSSIBLE=y
-
-#
-# Broadcom specific AMBA
-#
-# CONFIG_BCMA is not set
-
-#
-# Multifunction device drivers
-#
-CONFIG_MFD_CORE=y
-# CONFIG_MFD_88PM860X is not set
-# CONFIG_MFD_SM501 is not set
-# CONFIG_MFD_ASIC3 is not set
-# CONFIG_HTC_EGPIO is not set
-# CONFIG_HTC_PASIC3 is not set
-# CONFIG_HTC_I2CPLD is not set
-CONFIG_TPS6105X=m
-# CONFIG_TPS65010 is not set
-CONFIG_TPS6507X=m
-CONFIG_MFD_TPS6586X=y
-# CONFIG_MFD_TPS65910 is not set
-# CONFIG_MFD_TPS65912_I2C is not set
-# CONFIG_MFD_TPS65912_SPI is not set
-CONFIG_TWL4030_CORE=y
-CONFIG_TWL4030_MADC=m
-CONFIG_TWL4030_POWER=y
-CONFIG_MFD_TWL4030_AUDIO=y
-CONFIG_TWL6030_PWM=m
-# CONFIG_TWL6040_CORE is not set
-# CONFIG_MFD_STMPE is not set
-# CONFIG_MFD_TC3589X is not set
-# CONFIG_MFD_TMIO is not set
-# CONFIG_MFD_T7L66XB is not set
-# CONFIG_MFD_TC6387XB is not set
-# CONFIG_MFD_TC6393XB is not set
-# CONFIG_PMIC_DA903X is not set
-# CONFIG_MFD_DA9052_SPI is not set
-# CONFIG_MFD_DA9052_I2C is not set
-# CONFIG_PMIC_ADP5520 is not set
-# CONFIG_MFD_MAX8925 is not set
-# CONFIG_MFD_MAX8997 is not set
-# CONFIG_MFD_MAX8998 is not set
-# CONFIG_MFD_S5M_CORE is not set
-# CONFIG_MFD_WM8400 is not set
-# CONFIG_MFD_WM831X_I2C is not set
-# CONFIG_MFD_WM831X_SPI is not set
-# CONFIG_MFD_WM8350_I2C is not set
-# CONFIG_MFD_WM8994 is not set
-# CONFIG_MFD_PCF50633 is not set
-# CONFIG_MFD_MC13XXX is not set
-# CONFIG_ABX500_CORE is not set
-# CONFIG_EZX_PCAP is not set
-CONFIG_MFD_WL1273_CORE=m
-CONFIG_MFD_OMAP_USB_HOST=y
-# CONFIG_MFD_AAT2870_CORE is not set
-CONFIG_REGULATOR=y
-# CONFIG_REGULATOR_DEBUG is not set
-CONFIG_REGULATOR_DUMMY=y
-CONFIG_REGULATOR_FIXED_VOLTAGE=y
-# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set
-# CONFIG_REGULATOR_USERSPACE_CONSUMER is not set
-# CONFIG_REGULATOR_GPIO is not set
-# CONFIG_REGULATOR_BQ24022 is not set
-# CONFIG_REGULATOR_MAX1586 is not set
-# CONFIG_REGULATOR_MAX8649 is not set
-# CONFIG_REGULATOR_MAX8660 is not set
-# CONFIG_REGULATOR_MAX8952 is not set
-CONFIG_REGULATOR_TWL4030=y
-# CONFIG_REGULATOR_LP3971 is not set
-# CONFIG_REGULATOR_LP3972 is not set
-CONFIG_REGULATOR_TPS6105X=m
-# CONFIG_REGULATOR_TPS65023 is not set
-# CONFIG_REGULATOR_TPS6507X is not set
-# CONFIG_REGULATOR_ISL6271A is not set
-# CONFIG_REGULATOR_AD5398 is not set
-CONFIG_REGULATOR_TPS6586X=m
-CONFIG_REGULATOR_TPS6524X=m
-CONFIG_MEDIA_SUPPORT=y
-
-#
-# Multimedia core support
-#
-CONFIG_MEDIA_CONTROLLER=y
-CONFIG_VIDEO_DEV=y
-CONFIG_VIDEO_V4L2_COMMON=y
-CONFIG_VIDEO_V4L2_SUBDEV_API=y
-CONFIG_DVB_CORE=m
-CONFIG_DVB_NET=y
-CONFIG_VIDEO_MEDIA=m
-
-#
-# Multimedia drivers
-#
-CONFIG_RC_CORE=m
-CONFIG_LIRC=m
-CONFIG_RC_MAP=m
-CONFIG_IR_NEC_DECODER=m
-CONFIG_IR_RC5_DECODER=m
-CONFIG_IR_RC6_DECODER=m
-CONFIG_IR_JVC_DECODER=m
-CONFIG_IR_SONY_DECODER=m
-CONFIG_IR_RC5_SZ_DECODER=m
-CONFIG_IR_SANYO_DECODER=m
-CONFIG_IR_MCE_KBD_DECODER=m
-CONFIG_IR_LIRC_CODEC=m
-# CONFIG_RC_ATI_REMOTE is not set
-# CONFIG_IR_IMON is not set
-# CONFIG_IR_MCEUSB is not set
-# CONFIG_IR_REDRAT3 is not set
-# CONFIG_IR_STREAMZAP is not set
-CONFIG_RC_LOOPBACK=m
-CONFIG_MEDIA_ATTACH=y
-CONFIG_MEDIA_TUNER=m
-CONFIG_MEDIA_TUNER_CUSTOMISE=y
-
-#
-# Customize TV tuners
-#
-CONFIG_MEDIA_TUNER_SIMPLE=m
-CONFIG_MEDIA_TUNER_TDA8290=m
-CONFIG_MEDIA_TUNER_TDA827X=m
-CONFIG_MEDIA_TUNER_TDA18271=m
-CONFIG_MEDIA_TUNER_TDA9887=m
-CONFIG_MEDIA_TUNER_TEA5761=m
-CONFIG_MEDIA_TUNER_TEA5767=m
-CONFIG_MEDIA_TUNER_MT20XX=m
-CONFIG_MEDIA_TUNER_MT2060=m
-CONFIG_MEDIA_TUNER_MT2063=m
-CONFIG_MEDIA_TUNER_MT2266=m
-CONFIG_MEDIA_TUNER_MT2131=m
-CONFIG_MEDIA_TUNER_QT1010=m
-CONFIG_MEDIA_TUNER_XC2028=m
-CONFIG_MEDIA_TUNER_XC5000=m
-CONFIG_MEDIA_TUNER_XC4000=m
-CONFIG_MEDIA_TUNER_MXL5005S=m
-CONFIG_MEDIA_TUNER_MXL5007T=m
-CONFIG_MEDIA_TUNER_MC44S803=m
-CONFIG_MEDIA_TUNER_MAX2165=m
-CONFIG_MEDIA_TUNER_TDA18218=m
-CONFIG_MEDIA_TUNER_TDA18212=m
-CONFIG_VIDEO_V4L2=y
-CONFIG_VIDEOBUF_GEN=m
-CONFIG_VIDEOBUF_VMALLOC=m
-CONFIG_VIDEOBUF_DVB=m
-CONFIG_VIDEO_TVEEPROM=m
-CONFIG_VIDEO_TUNER=m
-CONFIG_V4L2_MEM2MEM_DEV=m
-CONFIG_VIDEOBUF2_CORE=m
-CONFIG_VIDEOBUF2_MEMOPS=m
-CONFIG_VIDEOBUF2_VMALLOC=m
-CONFIG_VIDEO_CAPTURE_DRIVERS=y
-# CONFIG_VIDEO_ADV_DEBUG is not set
-# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
-# CONFIG_VIDEO_HELPER_CHIPS_AUTO is not set
-CONFIG_VIDEO_IR_I2C=m
-
-#
-# Encoders, decoders, sensors and other helper chips
-#
-
-#
-# Audio decoders, processors and mixers
-#
-# CONFIG_VIDEO_TVAUDIO is not set
-# CONFIG_VIDEO_TDA7432 is not set
-# CONFIG_VIDEO_TDA9840 is not set
-# CONFIG_VIDEO_TEA6415C is not set
-# CONFIG_VIDEO_TEA6420 is not set
-CONFIG_VIDEO_MSP3400=m
-# CONFIG_VIDEO_CS5345 is not set
-CONFIG_VIDEO_CS53L32A=m
-# CONFIG_VIDEO_TLV320AIC23B is not set
-CONFIG_VIDEO_WM8775=m
-# CONFIG_VIDEO_WM8739 is not set
-# CONFIG_VIDEO_VP27SMPX is not set
-
-#
-# RDS decoders
-#
-# CONFIG_VIDEO_SAA6588 is not set
-
-#
-# Video decoders
-#
-CONFIG_VIDEO_ADV7180=m
-# CONFIG_VIDEO_BT819 is not set
-# CONFIG_VIDEO_BT856 is not set
-# CONFIG_VIDEO_BT866 is not set
-# CONFIG_VIDEO_KS0127 is not set
-# CONFIG_VIDEO_SAA7110 is not set
-CONFIG_VIDEO_SAA711X=m
-# CONFIG_VIDEO_SAA7191 is not set
-CONFIG_VIDEO_TVP514X=m
-CONFIG_VIDEO_TVP5150=m
-CONFIG_VIDEO_TVP7002=m
-# CONFIG_VIDEO_VPX3220 is not set
-
-#
-# Video and audio decoders
-#
-# CONFIG_VIDEO_SAA717X is not set
-CONFIG_VIDEO_CX25840=m
-
-#
-# MPEG video encoders
-#
-CONFIG_VIDEO_CX2341X=m
-
-#
-# Video encoders
-#
-# CONFIG_VIDEO_SAA7127 is not set
-# CONFIG_VIDEO_SAA7185 is not set
-# CONFIG_VIDEO_ADV7170 is not set
-# CONFIG_VIDEO_ADV7175 is not set
-# CONFIG_VIDEO_ADV7343 is not set
-# CONFIG_VIDEO_AK881X is not set
-
-#
-# Camera sensor devices
-#
-CONFIG_VIDEO_OV7670=m
-# CONFIG_VIDEO_MT9P031 is not set
-# CONFIG_VIDEO_MT9T001 is not set
-CONFIG_VIDEO_MT9V011=m
-CONFIG_VIDEO_MT9V032=y
-# CONFIG_VIDEO_TCM825X is not set
-CONFIG_VIDEO_SR030PC30=m
-CONFIG_VIDEO_NOON010PC30=m
-# CONFIG_VIDEO_M5MOLS is not set
-# CONFIG_VIDEO_S5K6AA is not set
-
-#
-# Flash devices
-#
-# CONFIG_VIDEO_ADP1653 is not set
-# CONFIG_VIDEO_AS3645A is not set
-
-#
-# Video improvement chips
-#
-# CONFIG_VIDEO_UPD64031A is not set
-# CONFIG_VIDEO_UPD64083 is not set
-
-#
-# Miscelaneous helper chips
-#
-# CONFIG_VIDEO_THS7303 is not set
-# CONFIG_VIDEO_M52790 is not set
-CONFIG_VIDEO_VIVI=m
-CONFIG_V4L_USB_DRIVERS=y
-CONFIG_USB_VIDEO_CLASS=m
-CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
-CONFIG_USB_GSPCA=m
-CONFIG_USB_M5602=m
-CONFIG_USB_STV06XX=m
-# CONFIG_USB_GL860 is not set
-CONFIG_USB_GSPCA_BENQ=m
-CONFIG_USB_GSPCA_CONEX=m
-CONFIG_USB_GSPCA_CPIA1=m
-CONFIG_USB_GSPCA_ETOMS=m
-CONFIG_USB_GSPCA_FINEPIX=m
-# CONFIG_USB_GSPCA_JEILINJ is not set
-# CONFIG_USB_GSPCA_JL2005BCD is not set
-# CONFIG_USB_GSPCA_KINECT is not set
-CONFIG_USB_GSPCA_KONICA=m
-CONFIG_USB_GSPCA_MARS=m
-# CONFIG_USB_GSPCA_MR97310A is not set
-CONFIG_USB_GSPCA_NW80X=m
-CONFIG_USB_GSPCA_OV519=m
-CONFIG_USB_GSPCA_OV534=m
-CONFIG_USB_GSPCA_OV534_9=m
-CONFIG_USB_GSPCA_PAC207=m
-# CONFIG_USB_GSPCA_PAC7302 is not set
-CONFIG_USB_GSPCA_PAC7311=m
-# CONFIG_USB_GSPCA_SE401 is not set
-CONFIG_USB_GSPCA_SN9C2028=m
-# CONFIG_USB_GSPCA_SN9C20X is not set
-CONFIG_USB_GSPCA_SONIXB=m
-CONFIG_USB_GSPCA_SONIXJ=m
-CONFIG_USB_GSPCA_SPCA500=m
-CONFIG_USB_GSPCA_SPCA501=m
-CONFIG_USB_GSPCA_SPCA505=m
-CONFIG_USB_GSPCA_SPCA506=m
-CONFIG_USB_GSPCA_SPCA508=m
-CONFIG_USB_GSPCA_SPCA561=m
-CONFIG_USB_GSPCA_SPCA1528=m
-# CONFIG_USB_GSPCA_SQ905 is not set
-# CONFIG_USB_GSPCA_SQ905C is not set
-CONFIG_USB_GSPCA_SQ930X=m
-CONFIG_USB_GSPCA_STK014=m
-# CONFIG_USB_GSPCA_STV0680 is not set
-CONFIG_USB_GSPCA_SUNPLUS=m
-CONFIG_USB_GSPCA_T613=m
-# CONFIG_USB_GSPCA_TOPRO is not set
-CONFIG_USB_GSPCA_TV8532=m
-CONFIG_USB_GSPCA_VC032X=m
-CONFIG_USB_GSPCA_VICAM=m
-CONFIG_USB_GSPCA_XIRLINK_CIT=m
-CONFIG_USB_GSPCA_ZC3XX=m
-CONFIG_VIDEO_PVRUSB2=m
-CONFIG_VIDEO_PVRUSB2_SYSFS=y
-CONFIG_VIDEO_PVRUSB2_DVB=y
-# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set
-CONFIG_VIDEO_HDPVR=m
-CONFIG_VIDEO_EM28XX=m
-CONFIG_VIDEO_EM28XX_ALSA=m
-CONFIG_VIDEO_EM28XX_DVB=m
-CONFIG_VIDEO_EM28XX_RC=y
-CONFIG_VIDEO_TLG2300=m
-CONFIG_VIDEO_CX231XX=m
-CONFIG_VIDEO_CX231XX_RC=y
-# CONFIG_VIDEO_CX231XX_ALSA is not set
-CONFIG_VIDEO_CX231XX_DVB=m
-# CONFIG_VIDEO_TM6000 is not set
-CONFIG_VIDEO_USBVISION=m
-CONFIG_USB_ET61X251=m
-CONFIG_USB_SN9C102=m
-CONFIG_USB_PWC=m
-# CONFIG_USB_PWC_DEBUG is not set
-CONFIG_USB_PWC_INPUT_EVDEV=y
-# CONFIG_VIDEO_CPIA2 is not set
-CONFIG_USB_ZR364XX=m
-CONFIG_USB_STKWEBCAM=m
-CONFIG_USB_S2255=m
-# CONFIG_V4L_PLATFORM_DRIVERS is not set
-CONFIG_V4L_MEM2MEM_DRIVERS=y
-CONFIG_VIDEO_MEM2MEM_TESTDEV=m
-CONFIG_RADIO_ADAPTERS=y
-# CONFIG_RADIO_SI470X is not set
-# CONFIG_USB_MR800 is not set
-# CONFIG_USB_DSBR is not set
-# CONFIG_I2C_SI4713 is not set
-# CONFIG_RADIO_SI4713 is not set
-# CONFIG_RADIO_TEA5764 is not set
-CONFIG_RADIO_SAA7706H=m
-# CONFIG_RADIO_TEF6862 is not set
-CONFIG_RADIO_WL1273=m
-
-#
-# Texas Instruments WL128x FM driver (ST based)
-#
-CONFIG_RADIO_WL128X=m
-CONFIG_DVB_MAX_ADAPTERS=8
-CONFIG_DVB_DYNAMIC_MINORS=y
-CONFIG_DVB_CAPTURE_DRIVERS=y
-# CONFIG_TTPCI_EEPROM is not set
-
-#
-# Supported USB Adapters
-#
-CONFIG_DVB_USB=m
-# CONFIG_DVB_USB_DEBUG is not set
-CONFIG_DVB_USB_A800=m
-CONFIG_DVB_USB_DIBUSB_MB=m
-# CONFIG_DVB_USB_DIBUSB_MB_FAULTY is not set
-CONFIG_DVB_USB_DIBUSB_MC=m
-CONFIG_DVB_USB_DIB0700=m
-CONFIG_DVB_USB_UMT_010=m
-CONFIG_DVB_USB_CXUSB=m
-CONFIG_DVB_USB_M920X=m
-CONFIG_DVB_USB_GL861=m
-CONFIG_DVB_USB_AU6610=m
-CONFIG_DVB_USB_DIGITV=m
-CONFIG_DVB_USB_VP7045=m
-CONFIG_DVB_USB_VP702X=m
-CONFIG_DVB_USB_GP8PSK=m
-CONFIG_DVB_USB_NOVA_T_USB2=m
-CONFIG_DVB_USB_TTUSB2=m
-CONFIG_DVB_USB_DTT200U=m
-CONFIG_DVB_USB_OPERA1=m
-CONFIG_DVB_USB_AF9005=m
-CONFIG_DVB_USB_AF9005_REMOTE=m
-# CONFIG_DVB_USB_PCTV452E is not set
-CONFIG_DVB_USB_DW2102=m
-CONFIG_DVB_USB_CINERGY_T2=m
-CONFIG_DVB_USB_ANYSEE=m
-CONFIG_DVB_USB_DTV5100=m
-CONFIG_DVB_USB_AF9015=m
-# CONFIG_DVB_USB_CE6230 is not set
-# CONFIG_DVB_USB_FRIIO is not set
-# CONFIG_DVB_USB_EC168 is not set
-CONFIG_DVB_USB_AZ6027=m
-CONFIG_DVB_USB_LME2510=m
-CONFIG_DVB_USB_TECHNISAT_USB2=m
-# CONFIG_DVB_USB_IT913X is not set
-# CONFIG_DVB_USB_MXL111SF is not set
-# CONFIG_SMS_SIANO_MDTV is not set
-
-#
-# Supported FlexCopII (B2C2) Adapters
-#
-CONFIG_DVB_B2C2_FLEXCOP=m
-CONFIG_DVB_B2C2_FLEXCOP_USB=m
-# CONFIG_DVB_B2C2_FLEXCOP_DEBUG is not set
-
-#
-# Supported DVB Frontends
-#
-# CONFIG_DVB_FE_CUSTOMISE is not set
-
-#
-# Multistandard (satellite) frontends
-#
-CONFIG_DVB_STB0899=m
-CONFIG_DVB_STB6100=m
-CONFIG_DVB_STV090x=m
-CONFIG_DVB_STV6110x=m
-
-#
-# Multistandard (cable + terrestrial) frontends
-#
-CONFIG_DVB_DRXK=m
-CONFIG_DVB_TDA18271C2DD=m
-
-#
-# DVB-S (satellite) frontends
-#
-CONFIG_DVB_CX24123=m
-CONFIG_DVB_MT312=m
-CONFIG_DVB_ZL10039=m
-CONFIG_DVB_S5H1420=m
-CONFIG_DVB_STV0288=m
-CONFIG_DVB_STB6000=m
-CONFIG_DVB_STV0299=m
-CONFIG_DVB_STV6110=m
-CONFIG_DVB_STV0900=m
-CONFIG_DVB_TDA10086=m
-CONFIG_DVB_TUNER_ITD1000=m
-CONFIG_DVB_TUNER_CX24113=m
-CONFIG_DVB_TDA826X=m
-CONFIG_DVB_CX24116=m
-CONFIG_DVB_SI21XX=m
-CONFIG_DVB_DS3000=m
-CONFIG_DVB_TDA10071=m
-
-#
-# DVB-T (terrestrial) frontends
-#
-CONFIG_DVB_CX22702=m
-CONFIG_DVB_DRXD=m
-CONFIG_DVB_TDA1004X=m
-CONFIG_DVB_NXT6000=m
-CONFIG_DVB_MT352=m
-CONFIG_DVB_ZL10353=m
-CONFIG_DVB_DIB3000MB=m
-CONFIG_DVB_DIB3000MC=m
-CONFIG_DVB_DIB7000M=m
-CONFIG_DVB_DIB7000P=m
-CONFIG_DVB_TDA10048=m
-CONFIG_DVB_AF9013=m
-CONFIG_DVB_CXD2820R=m
-
-#
-# DVB-C (cable) frontends
-#
-CONFIG_DVB_TDA10023=m
-CONFIG_DVB_STV0297=m
-
-#
-# ATSC (North American/Korean Terrestrial/Cable DTV) frontends
-#
-CONFIG_DVB_NXT200X=m
-CONFIG_DVB_BCM3510=m
-CONFIG_DVB_LGDT330X=m
-CONFIG_DVB_LGDT3305=m
-CONFIG_DVB_S5H1409=m
-CONFIG_DVB_S5H1411=m
-
-#
-# ISDB-T (terrestrial) frontends
-#
-CONFIG_DVB_S921=m
-CONFIG_DVB_DIB8000=m
-CONFIG_DVB_MB86A20S=m
-
-#
-# Digital terrestrial only tuners/PLL
-#
-CONFIG_DVB_PLL=m
-CONFIG_DVB_TUNER_DIB0070=m
-CONFIG_DVB_TUNER_DIB0090=m
-
-#
-# SEC control devices for DVB-S
-#
-CONFIG_DVB_LNBP21=m
-CONFIG_DVB_ISL6421=m
-CONFIG_DVB_ISL6423=m
-CONFIG_DVB_A8293=m
-CONFIG_DVB_LGS8GXX=m
-CONFIG_DVB_ATBM8830=m
-CONFIG_DVB_IX2505V=m
-
-#
-# Tools to develop new frontends
-#
-# CONFIG_DVB_DUMMY_FE is not set
-
-#
-# Graphics support
-#
-CONFIG_DRM=m
-# CONFIG_VGASTATE is not set
-# CONFIG_VIDEO_OUTPUT_CONTROL is not set
-CONFIG_FB=y
-# CONFIG_FIRMWARE_EDID is not set
-# CONFIG_FB_DDC is not set
-# CONFIG_FB_BOOT_VESA_SUPPORT is not set
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
-# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
-CONFIG_FB_SYS_FILLRECT=m
-CONFIG_FB_SYS_COPYAREA=m
-CONFIG_FB_SYS_IMAGEBLIT=m
-# CONFIG_FB_FOREIGN_ENDIAN is not set
-CONFIG_FB_SYS_FOPS=m
-# CONFIG_FB_WMT_GE_ROPS is not set
-CONFIG_FB_DEFERRED_IO=y
-# CONFIG_FB_SVGALIB is not set
-# CONFIG_FB_MACMODES is not set
-# CONFIG_FB_BACKLIGHT is not set
-CONFIG_FB_MODE_HELPERS=y
-# CONFIG_FB_TILEBLITTING is not set
-
-#
-# Frame buffer hardware drivers
-#
-# CONFIG_FB_S1D13XXX is not set
-# CONFIG_FB_TMIO is not set
-# CONFIG_FB_SMSCUFX is not set
-CONFIG_FB_UDL=m
-# CONFIG_FB_VIRTUAL is not set
-# CONFIG_FB_METRONOME is not set
-# CONFIG_FB_BROADSHEET is not set
-# CONFIG_FB_OMAP_BOOTLOADER_INIT is not set
-CONFIG_OMAP2_VRAM=y
-CONFIG_OMAP2_VRFB=y
-CONFIG_OMAP2_DSS=y
-CONFIG_OMAP2_VRAM_SIZE=14
-CONFIG_OMAP2_DSS_DEBUG_SUPPORT=y
-# CONFIG_OMAP2_DSS_COLLECT_IRQ_STATS is not set
-CONFIG_OMAP2_DSS_DPI=y
-# CONFIG_OMAP2_DSS_RFBI is not set
-CONFIG_OMAP2_DSS_VENC=y
-# CONFIG_OMAP2_DSS_SDI is not set
-CONFIG_OMAP2_DSS_DSI=y
-# CONFIG_OMAP2_DSS_FAKE_VSYNC is not set
-CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK=0
-CONFIG_OMAP2_DSS_SLEEP_AFTER_VENC_RESET=y
-CONFIG_FB_OMAP2=y
-CONFIG_FB_OMAP2_DEBUG_SUPPORT=y
-CONFIG_FB_OMAP2_NUM_FBS=2
-
-#
-# OMAP2/3 Display Device Drivers
-#
-CONFIG_PANEL_GENERIC_DPI=y
-CONFIG_PANEL_DVI=y
-# CONFIG_PANEL_LGPHILIPS_LB035Q02 is not set
-CONFIG_PANEL_SHARP_LS037V7DW01=y
-CONFIG_PANEL_NEC_NL8048HL11_01B=y
-# CONFIG_PANEL_PICODLP is not set
-# CONFIG_PANEL_TAAL is not set
-CONFIG_PANEL_TPO_TD043MTEA1=m
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_LCD_CLASS_DEVICE=y
-# CONFIG_LCD_L4F00242T03 is not set
-# CONFIG_LCD_LMS283GF05 is not set
-# CONFIG_LCD_LTV350QV is not set
-# CONFIG_LCD_TDO24M is not set
-# CONFIG_LCD_VGG2432A4 is not set
-# CONFIG_LCD_PLATFORM is not set
-# CONFIG_LCD_S6E63M0 is not set
-# CONFIG_LCD_LD9040 is not set
-# CONFIG_LCD_AMS369FG06 is not set
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_GENERIC=y
-# CONFIG_BACKLIGHT_PWM is not set
-# CONFIG_BACKLIGHT_ADP8860 is not set
-# CONFIG_BACKLIGHT_ADP8870 is not set
-
-#
-# Console display driver support
-#
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
-CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
-# CONFIG_FONTS is not set
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
-CONFIG_LOGO=y
-# CONFIG_LOGO_LINUX_MONO is not set
-# CONFIG_LOGO_LINUX_VGA16 is not set
-CONFIG_LOGO_LINUX_CLUT224=y
-CONFIG_SOUND=y
-CONFIG_SOUND_OSS_CORE=y
-CONFIG_SOUND_OSS_CORE_PRECLAIM=y
-CONFIG_SND=y
-CONFIG_SND_TIMER=y
-CONFIG_SND_PCM=y
-CONFIG_SND_HWDEP=y
-CONFIG_SND_RAWMIDI=y
-CONFIG_SND_JACK=y
-CONFIG_SND_SEQUENCER=m
-# CONFIG_SND_SEQ_DUMMY is not set
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=y
-CONFIG_SND_PCM_OSS=y
-CONFIG_SND_PCM_OSS_PLUGINS=y
-CONFIG_SND_SEQUENCER_OSS=y
-CONFIG_SND_HRTIMER=m
-CONFIG_SND_SEQ_HRTIMER_DEFAULT=y
-CONFIG_SND_DYNAMIC_MINORS=y
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PROCFS=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-CONFIG_SND_RAWMIDI_SEQ=m
-# CONFIG_SND_OPL3_LIB_SEQ is not set
-# CONFIG_SND_OPL4_LIB_SEQ is not set
-# CONFIG_SND_SBAWE_SEQ is not set
-# CONFIG_SND_EMU10K1_SEQ is not set
-CONFIG_SND_DRIVERS=y
-# CONFIG_SND_DUMMY is not set
-CONFIG_SND_ALOOP=m
-# CONFIG_SND_VIRMIDI is not set
-# CONFIG_SND_MTPAV is not set
-# CONFIG_SND_SERIAL_U16550 is not set
-# CONFIG_SND_MPU401 is not set
-# CONFIG_SND_ARM is not set
-CONFIG_SND_SPI=y
-CONFIG_SND_USB=y
-CONFIG_SND_USB_AUDIO=y
-CONFIG_SND_USB_UA101=m
-CONFIG_SND_USB_CAIAQ=m
-CONFIG_SND_USB_CAIAQ_INPUT=y
-CONFIG_SND_USB_6FIRE=m
-CONFIG_SND_SOC=y
-CONFIG_SND_OMAP_SOC=y
-CONFIG_SND_OMAP_SOC_MCBSP=y
-CONFIG_SND_OMAP_SOC_OVERO=y
-CONFIG_SND_OMAP_SOC_OMAP3EVM=y
-CONFIG_SND_OMAP_SOC_OMAP3_BEAGLE=y
-CONFIG_SND_OMAP_SOC_ZOOM2=y
-CONFIG_SND_SOC_I2C_AND_SPI=y
-# CONFIG_SND_SOC_ALL_CODECS is not set
-CONFIG_SND_SOC_TWL4030=y
-# CONFIG_SOUND_PRIME is not set
-CONFIG_HID_SUPPORT=y
-CONFIG_HID=y
-# CONFIG_HIDRAW is not set
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=y
-# CONFIG_HID_PID is not set
-# CONFIG_USB_HIDDEV is not set
-
-#
-# Special HID drivers
-#
-CONFIG_HID_A4TECH=y
-CONFIG_HID_ACRUX=m
-# CONFIG_HID_ACRUX_FF is not set
-CONFIG_HID_APPLE=y
-CONFIG_HID_BELKIN=y
-CONFIG_HID_CHERRY=y
-CONFIG_HID_CHICONY=y
-# CONFIG_HID_PRODIKEYS is not set
-CONFIG_HID_CYPRESS=y
-# CONFIG_HID_DRAGONRISE is not set
-CONFIG_HID_EMS_FF=m
-# CONFIG_HID_ELECOM is not set
-CONFIG_HID_EZKEY=y
-# CONFIG_HID_HOLTEK is not set
-CONFIG_HID_KEYTOUCH=m
-# CONFIG_HID_KYE is not set
-CONFIG_HID_UCLOGIC=m
-CONFIG_HID_WALTOP=m
-CONFIG_HID_GYRATION=y
-# CONFIG_HID_TWINHAN is not set
-# CONFIG_HID_KENSINGTON is not set
-CONFIG_HID_LCPOWER=m
-CONFIG_HID_LOGITECH=y
-CONFIG_HID_LOGITECH_DJ=m
-# CONFIG_LOGITECH_FF is not set
-# CONFIG_LOGIRUMBLEPAD2_FF is not set
-# CONFIG_LOGIG940_FF is not set
-# CONFIG_LOGIWHEELS_FF is not set
-CONFIG_HID_MAGICMOUSE=m
-CONFIG_HID_MICROSOFT=y
-CONFIG_HID_MONTEREY=y
-CONFIG_HID_MULTITOUCH=m
-CONFIG_HID_NTRIG=y
-# CONFIG_HID_ORTEK is not set
-CONFIG_HID_PANTHERLORD=y
-# CONFIG_PANTHERLORD_FF is not set
-CONFIG_HID_PETALYNX=y
-CONFIG_HID_PICOLCD=m
-CONFIG_HID_PICOLCD_FB=y
-CONFIG_HID_PICOLCD_BACKLIGHT=y
-# CONFIG_HID_PICOLCD_LCD is not set
-CONFIG_HID_PICOLCD_LEDS=y
-# CONFIG_HID_PRIMAX is not set
-CONFIG_HID_ROCCAT=m
-CONFIG_HID_ROCCAT_COMMON=m
-CONFIG_HID_ROCCAT_ARVO=m
-# CONFIG_HID_ROCCAT_ISKU is not set
-CONFIG_HID_ROCCAT_KONE=m
-CONFIG_HID_ROCCAT_KONEPLUS=m
-CONFIG_HID_ROCCAT_KOVAPLUS=m
-# CONFIG_HID_ROCCAT_PYRA is not set
-CONFIG_HID_SAMSUNG=y
-CONFIG_HID_SONY=y
-# CONFIG_HID_SPEEDLINK is not set
-CONFIG_HID_SUNPLUS=y
-# CONFIG_HID_GREENASIA is not set
-# CONFIG_HID_SMARTJOYPLUS is not set
-CONFIG_HID_TOPSEED=y
-# CONFIG_HID_THRUSTMASTER is not set
-# CONFIG_HID_WACOM is not set
-# CONFIG_HID_WIIMOTE is not set
-# CONFIG_HID_ZEROPLUS is not set
-# CONFIG_HID_ZYDACRON is not set
-CONFIG_USB_SUPPORT=y
-CONFIG_USB_COMMON=y
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-CONFIG_USB_ARCH_HAS_EHCI=y
-# CONFIG_USB_ARCH_HAS_XHCI is not set
-CONFIG_USB=y
-# CONFIG_USB_DEBUG is not set
-CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-CONFIG_USB_DEVICE_CLASS=y
-# CONFIG_USB_DYNAMIC_MINORS is not set
-CONFIG_USB_SUSPEND=y
-CONFIG_USB_OTG=y
-# CONFIG_USB_OTG_WHITELIST is not set
-# CONFIG_USB_OTG_BLACKLIST_HUB is not set
-# CONFIG_USB_DWC3 is not set
-CONFIG_USB_MON=y
-# CONFIG_USB_WUSB_CBAF is not set
-
-#
-# USB Host Controller Drivers
-#
-# CONFIG_USB_C67X00_HCD is not set
-CONFIG_USB_EHCI_HCD=y
-# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
-CONFIG_USB_EHCI_TT_NEWSCHED=y
-CONFIG_USB_EHCI_HCD_OMAP=y
-# CONFIG_USB_EHCI_MV is not set
-# CONFIG_USB_OXU210HP_HCD is not set
-# CONFIG_USB_ISP116X_HCD is not set
-# CONFIG_USB_ISP1760_HCD is not set
-# CONFIG_USB_ISP1362_HCD is not set
-# CONFIG_USB_OHCI_HCD is not set
-# CONFIG_USB_U132_HCD is not set
-# CONFIG_USB_SL811_HCD is not set
-# CONFIG_USB_R8A66597_HCD is not set
-CONFIG_USB_MUSB_HDRC=y
-# CONFIG_USB_MUSB_TUSB6010 is not set
-CONFIG_USB_MUSB_OMAP2PLUS=y
-# CONFIG_USB_MUSB_AM35X is not set
-CONFIG_USB_INVENTRA_DMA=y
-# CONFIG_MUSB_PIO_ONLY is not set
-# CONFIG_USB_RENESAS_USBHS is not set
-
-#
-# USB Device Class drivers
-#
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-CONFIG_USB_WDM=m
-CONFIG_USB_TMC=m
-
-#
-# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
-#
-
-#
-# also be needed; see USB_STORAGE Help for more info
-#
-CONFIG_USB_STORAGE=y
-# CONFIG_USB_STORAGE_DEBUG is not set
-CONFIG_USB_STORAGE_REALTEK=m
-CONFIG_REALTEK_AUTOPM=y
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_ISD200 is not set
-# CONFIG_USB_STORAGE_USBAT is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_SDDR55 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-# CONFIG_USB_STORAGE_ALAUDA is not set
-# CONFIG_USB_STORAGE_ONETOUCH is not set
-# CONFIG_USB_STORAGE_KARMA is not set
-# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
-CONFIG_USB_STORAGE_ENE_UB6250=m
-CONFIG_USB_UAS=m
-# CONFIG_USB_LIBUSUAL is not set
-
-#
-# USB Imaging devices
-#
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_MICROTEK is not set
-
-#
-# USB port drivers
-#
-CONFIG_USB_SERIAL=m
-CONFIG_USB_EZUSB=y
-CONFIG_USB_SERIAL_GENERIC=y
-CONFIG_USB_SERIAL_AIRCABLE=m
-CONFIG_USB_SERIAL_ARK3116=m
-CONFIG_USB_SERIAL_BELKIN=m
-CONFIG_USB_SERIAL_CH341=m
-# CONFIG_USB_SERIAL_WHITEHEAT is not set
-CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-# CONFIG_USB_SERIAL_CP210X is not set
-CONFIG_USB_SERIAL_CYPRESS_M8=m
-CONFIG_USB_SERIAL_EMPEG=m
-CONFIG_USB_SERIAL_FTDI_SIO=m
-CONFIG_USB_SERIAL_FUNSOFT=m
-CONFIG_USB_SERIAL_VISOR=m
-CONFIG_USB_SERIAL_IPAQ=m
-CONFIG_USB_SERIAL_IR=m
-CONFIG_USB_SERIAL_EDGEPORT=m
-CONFIG_USB_SERIAL_EDGEPORT_TI=m
-CONFIG_USB_SERIAL_GARMIN=m
-CONFIG_USB_SERIAL_IPW=m
-CONFIG_USB_SERIAL_IUU=m
-CONFIG_USB_SERIAL_KEYSPAN_PDA=m
-CONFIG_USB_SERIAL_KEYSPAN=m
-CONFIG_USB_SERIAL_KEYSPAN_MPR=y
-CONFIG_USB_SERIAL_KEYSPAN_USA28=y
-CONFIG_USB_SERIAL_KEYSPAN_USA28X=y
-CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y
-CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y
-CONFIG_USB_SERIAL_KEYSPAN_USA19=y
-CONFIG_USB_SERIAL_KEYSPAN_USA18X=y
-CONFIG_USB_SERIAL_KEYSPAN_USA19W=y
-CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y
-CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y
-CONFIG_USB_SERIAL_KEYSPAN_USA49W=y
-CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y
-CONFIG_USB_SERIAL_KLSI=m
-CONFIG_USB_SERIAL_KOBIL_SCT=m
-CONFIG_USB_SERIAL_MCT_U232=m
-CONFIG_USB_SERIAL_MOS7720=m
-CONFIG_USB_SERIAL_MOS7840=m
-CONFIG_USB_SERIAL_MOTOROLA=m
-CONFIG_USB_SERIAL_NAVMAN=m
-CONFIG_USB_SERIAL_PL2303=m
-CONFIG_USB_SERIAL_OTI6858=m
-CONFIG_USB_SERIAL_QCAUX=m
-# CONFIG_USB_SERIAL_QUALCOMM is not set
-CONFIG_USB_SERIAL_SPCP8X5=m
-CONFIG_USB_SERIAL_HP4X=m
-CONFIG_USB_SERIAL_SAFE=m
-# CONFIG_USB_SERIAL_SAFE_PADDED is not set
-CONFIG_USB_SERIAL_SIEMENS_MPI=m
-CONFIG_USB_SERIAL_SIERRAWIRELESS=m
-# CONFIG_USB_SERIAL_SYMBOL is not set
-# CONFIG_USB_SERIAL_TI is not set
-CONFIG_USB_SERIAL_CYBERJACK=m
-# CONFIG_USB_SERIAL_XIRCOM is not set
-CONFIG_USB_SERIAL_WWAN=m
-# CONFIG_USB_SERIAL_OPTION is not set
-CONFIG_USB_SERIAL_OMNINET=m
-CONFIG_USB_SERIAL_OPTICON=m
-CONFIG_USB_SERIAL_VIVOPAY_SERIAL=m
-CONFIG_USB_SERIAL_ZIO=m
-CONFIG_USB_SERIAL_SSU100=m
-CONFIG_USB_SERIAL_DEBUG=m
-
-#
-# USB Miscellaneous drivers
-#
-CONFIG_USB_EMI62=m
-CONFIG_USB_EMI26=m
-# CONFIG_USB_ADUTUX is not set
-# CONFIG_USB_SEVSEG is not set
-# CONFIG_USB_RIO500 is not set
-CONFIG_USB_LEGOTOWER=m
-CONFIG_USB_LCD=m
-CONFIG_USB_LED=m
-CONFIG_USB_CYPRESS_CY7C63=m
-CONFIG_USB_CYTHERM=m
-CONFIG_USB_IDMOUSE=m
-CONFIG_USB_FTDI_ELAN=m
-# CONFIG_USB_APPLEDISPLAY is not set
-CONFIG_USB_SISUSBVGA=m
-CONFIG_USB_SISUSBVGA_CON=y
-CONFIG_USB_LD=m
-CONFIG_USB_TRANCEVIBRATOR=m
-# CONFIG_USB_IOWARRIOR is not set
-CONFIG_USB_TEST=m
-# CONFIG_USB_ISIGHTFW is not set
-CONFIG_USB_YUREX=m
-CONFIG_USB_ATM=m
-CONFIG_USB_SPEEDTOUCH=m
-CONFIG_USB_CXACRU=m
-CONFIG_USB_UEAGLEATM=m
-CONFIG_USB_XUSBATM=m
-CONFIG_USB_GADGET=y
-# CONFIG_USB_GADGET_DEBUG is not set
-# CONFIG_USB_GADGET_DEBUG_FILES is not set
-CONFIG_USB_GADGET_DEBUG_FS=y
-CONFIG_USB_GADGET_VBUS_DRAW=480
-CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2
-# CONFIG_USB_FUSB300 is not set
-# CONFIG_USB_OMAP is not set
-# CONFIG_USB_R8A66597 is not set
-# CONFIG_USB_MV_UDC is not set
-CONFIG_USB_GADGET_MUSB_HDRC=y
-# CONFIG_USB_M66592 is not set
-# CONFIG_USB_NET2272 is not set
-# CONFIG_USB_DUMMY_HCD is not set
-CONFIG_USB_GADGET_DUALSPEED=y
-# CONFIG_USB_ZERO is not set
-# CONFIG_USB_AUDIO is not set
-CONFIG_USB_ETH=m
-CONFIG_USB_ETH_RNDIS=y
-# CONFIG_USB_ETH_EEM is not set
-CONFIG_USB_G_NCM=m
-# CONFIG_USB_GADGETFS is not set
-CONFIG_USB_FUNCTIONFS=m
-# CONFIG_USB_FUNCTIONFS_ETH is not set
-CONFIG_USB_FUNCTIONFS_RNDIS=y
-# CONFIG_USB_FUNCTIONFS_GENERIC is not set
-CONFIG_USB_FILE_STORAGE=m
-# CONFIG_USB_FILE_STORAGE_TEST is not set
-CONFIG_USB_MASS_STORAGE=m
-# CONFIG_USB_G_SERIAL is not set
-# CONFIG_USB_MIDI_GADGET is not set
-# CONFIG_USB_G_PRINTER is not set
-CONFIG_USB_CDC_COMPOSITE=m
-# CONFIG_USB_G_ACM_MS is not set
-# CONFIG_USB_G_MULTI is not set
-CONFIG_USB_G_HID=m
-CONFIG_USB_G_DBGP=m
-# CONFIG_USB_G_DBGP_PRINTK is not set
-CONFIG_USB_G_DBGP_SERIAL=y
-CONFIG_USB_G_WEBCAM=m
-
-#
-# OTG and related infrastructure
-#
-CONFIG_USB_OTG_UTILS=y
-CONFIG_USB_GPIO_VBUS=y
-# CONFIG_ISP1301_OMAP is not set
-# CONFIG_USB_ULPI is not set
-CONFIG_TWL4030_USB=y
-CONFIG_TWL6030_USB=y
-CONFIG_NOP_USB_XCEIV=y
-CONFIG_MMC=y
-# CONFIG_MMC_DEBUG is not set
-CONFIG_MMC_UNSAFE_RESUME=y
-# CONFIG_MMC_CLKGATE is not set
-
-#
-# MMC/SD/SDIO Card Drivers
-#
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_BLOCK_MINORS=8
-CONFIG_MMC_BLOCK_BOUNCE=y
-CONFIG_SDIO_UART=y
-# CONFIG_MMC_TEST is not set
-
-#
-# MMC/SD/SDIO Host Controller Drivers
-#
-# CONFIG_MMC_SDHCI is not set
-# CONFIG_MMC_SDHCI_PXAV3 is not set
-# CONFIG_MMC_SDHCI_PXAV2 is not set
-# CONFIG_MMC_OMAP is not set
-CONFIG_MMC_OMAP_HS=y
-CONFIG_MMC_SPI=m
-# CONFIG_MMC_DW is not set
-# CONFIG_MMC_VUB300 is not set
-CONFIG_MMC_USHC=m
-# CONFIG_MEMSTICK is not set
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-
-#
-# LED drivers
-#
-# CONFIG_LEDS_LM3530 is not set
-# CONFIG_LEDS_PCA9532 is not set
-CONFIG_LEDS_GPIO=y
-# CONFIG_LEDS_LP3944 is not set
-CONFIG_LEDS_LP5521=m
-CONFIG_LEDS_LP5523=m
-# CONFIG_LEDS_PCA955X is not set
-# CONFIG_LEDS_DAC124S085 is not set
-CONFIG_LEDS_PWM=m
-CONFIG_LEDS_REGULATOR=m
-# CONFIG_LEDS_BD2802 is not set
-# CONFIG_LEDS_LT3593 is not set
-# CONFIG_LEDS_RENESAS_TPU is not set
-# CONFIG_LEDS_TCA6507 is not set
-# CONFIG_LEDS_OT200 is not set
-CONFIG_LEDS_TRIGGERS=y
-
-#
-# LED Triggers
-#
-CONFIG_LEDS_TRIGGER_TIMER=m
-CONFIG_LEDS_TRIGGER_HEARTBEAT=y
-CONFIG_LEDS_TRIGGER_BACKLIGHT=m
-CONFIG_LEDS_TRIGGER_GPIO=m
-CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
-
-#
-# iptables trigger is under Netfilter config (LED target)
-#
-# CONFIG_ACCESSIBILITY is not set
-CONFIG_RTC_LIB=y
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
-# CONFIG_RTC_DEBUG is not set
-
-#
-# RTC interfaces
-#
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
-# CONFIG_RTC_DRV_TEST is not set
-
-#
-# I2C RTC drivers
-#
-CONFIG_RTC_DRV_DS1307=y
-# CONFIG_RTC_DRV_DS1374 is not set
-# CONFIG_RTC_DRV_DS1672 is not set
-# CONFIG_RTC_DRV_DS3232 is not set
-# CONFIG_RTC_DRV_MAX6900 is not set
-# CONFIG_RTC_DRV_RS5C372 is not set
-# CONFIG_RTC_DRV_ISL1208 is not set
-# CONFIG_RTC_DRV_ISL12022 is not set
-# CONFIG_RTC_DRV_X1205 is not set
-# CONFIG_RTC_DRV_PCF8563 is not set
-# CONFIG_RTC_DRV_PCF8583 is not set
-# CONFIG_RTC_DRV_M41T80 is not set
-CONFIG_RTC_DRV_BQ32K=m
-CONFIG_RTC_DRV_TWL4030=m
-# CONFIG_RTC_DRV_S35390A is not set
-# CONFIG_RTC_DRV_FM3130 is not set
-# CONFIG_RTC_DRV_RX8581 is not set
-# CONFIG_RTC_DRV_RX8025 is not set
-# CONFIG_RTC_DRV_EM3027 is not set
-# CONFIG_RTC_DRV_RV3029C2 is not set
-
-#
-# SPI RTC drivers
-#
-# CONFIG_RTC_DRV_M41T93 is not set
-# CONFIG_RTC_DRV_M41T94 is not set
-# CONFIG_RTC_DRV_DS1305 is not set
-# CONFIG_RTC_DRV_DS1390 is not set
-# CONFIG_RTC_DRV_MAX6902 is not set
-# CONFIG_RTC_DRV_R9701 is not set
-# CONFIG_RTC_DRV_RS5C348 is not set
-# CONFIG_RTC_DRV_DS3234 is not set
-# CONFIG_RTC_DRV_PCF2123 is not set
-
-#
-# Platform RTC drivers
-#
-# CONFIG_RTC_DRV_CMOS is not set
-# CONFIG_RTC_DRV_DS1286 is not set
-# CONFIG_RTC_DRV_DS1511 is not set
-# CONFIG_RTC_DRV_DS1553 is not set
-# CONFIG_RTC_DRV_DS1742 is not set
-# CONFIG_RTC_DRV_STK17TA8 is not set
-# CONFIG_RTC_DRV_M48T86 is not set
-# CONFIG_RTC_DRV_M48T35 is not set
-# CONFIG_RTC_DRV_M48T59 is not set
-# CONFIG_RTC_DRV_MSM6242 is not set
-# CONFIG_RTC_DRV_BQ4802 is not set
-# CONFIG_RTC_DRV_RP5C01 is not set
-# CONFIG_RTC_DRV_V3020 is not set
-
-#
-# on-CPU RTC drivers
-#
-# CONFIG_DMADEVICES is not set
-# CONFIG_AUXDISPLAY is not set
-CONFIG_UIO=m
-CONFIG_UIO_PDRV=m
-CONFIG_UIO_PDRV_GENIRQ=m
-
-#
-# Virtio drivers
-#
-# CONFIG_VIRTIO_BALLOON is not set
-# CONFIG_VIRTIO_MMIO is not set
-
-#
-# Microsoft Hyper-V guest support
-#
-CONFIG_STAGING=y
-# CONFIG_USBIP_CORE is not set
-CONFIG_W35UND=m
-CONFIG_PRISM2_USB=m
-CONFIG_ECHO=m
-# CONFIG_ASUS_OLED is not set
-# CONFIG_RTLLIB is not set
-CONFIG_R8712U=m
-# CONFIG_RTS5139 is not set
-# CONFIG_TRANZPORT is not set
-# CONFIG_LINE6_USB is not set
-# CONFIG_USB_SERIAL_QUATECH2 is not set
-# CONFIG_USB_SERIAL_QUATECH_USB2 is not set
-# CONFIG_VT6656 is not set
-# CONFIG_IIO is not set
-CONFIG_XVMALLOC=y
-CONFIG_ZRAM=m
-# CONFIG_ZRAM_DEBUG is not set
-# CONFIG_FB_SM7XX is not set
-# CONFIG_TIDSPBRIDGE is not set
-CONFIG_USB_ENESTORAGE=m
-CONFIG_BCM_WIMAX=m
-CONFIG_FT1000=m
-CONFIG_FT1000_USB=m
-
-#
-# Speakup console speech
-#
-# CONFIG_SPEAKUP is not set
-CONFIG_TOUCHSCREEN_CLEARPAD_TM1217=m
-CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4=m
-# CONFIG_STAGING_MEDIA is not set
-# CONFIG_DRM_OMAP is not set
-
-#
-# Android
-#
-# CONFIG_ANDROID is not set
-CONFIG_CLKDEV_LOOKUP=y
-
-#
-# Hardware Spinlock drivers
-#
-CONFIG_CLKSRC_MMIO=y
-CONFIG_IOMMU_API=y
-CONFIG_IOMMU_SUPPORT=y
-CONFIG_OMAP_IOMMU=y
-# CONFIG_OMAP_IOVMM is not set
-# CONFIG_VIRT_DRIVERS is not set
-# CONFIG_PM_DEVFREQ is not set
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=y
-CONFIG_EXT2_FS_XATTR=y
-CONFIG_EXT2_FS_POSIX_ACL=y
-CONFIG_EXT2_FS_SECURITY=y
-# CONFIG_EXT2_FS_XIP is not set
-CONFIG_EXT3_FS=y
-# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
-CONFIG_EXT3_FS_XATTR=y
-CONFIG_EXT3_FS_POSIX_ACL=y
-# CONFIG_EXT3_FS_SECURITY is not set
-CONFIG_EXT4_FS=y
-CONFIG_EXT4_FS_XATTR=y
-CONFIG_EXT4_FS_POSIX_ACL=y
-CONFIG_EXT4_FS_SECURITY=y
-# CONFIG_EXT4_DEBUG is not set
-CONFIG_JBD=y
-# CONFIG_JBD_DEBUG is not set
-CONFIG_JBD2=y
-# CONFIG_JBD2_DEBUG is not set
-CONFIG_FS_MBCACHE=y
-CONFIG_REISERFS_FS=m
-# CONFIG_REISERFS_CHECK is not set
-CONFIG_REISERFS_PROC_INFO=y
-CONFIG_REISERFS_FS_XATTR=y
-# CONFIG_REISERFS_FS_POSIX_ACL is not set
-# CONFIG_REISERFS_FS_SECURITY is not set
-CONFIG_JFS_FS=m
-CONFIG_JFS_POSIX_ACL=y
-# CONFIG_JFS_SECURITY is not set
-# CONFIG_JFS_DEBUG is not set
-CONFIG_JFS_STATISTICS=y
-CONFIG_XFS_FS=m
-CONFIG_XFS_QUOTA=y
-CONFIG_XFS_POSIX_ACL=y
-CONFIG_XFS_RT=y
-# CONFIG_XFS_DEBUG is not set
-CONFIG_GFS2_FS=m
-CONFIG_GFS2_FS_LOCKING_DLM=y
-CONFIG_OCFS2_FS=m
-CONFIG_OCFS2_FS_O2CB=m
-CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m
-CONFIG_OCFS2_FS_STATS=y
-CONFIG_OCFS2_DEBUG_MASKLOG=y
-# CONFIG_OCFS2_DEBUG_FS is not set
-CONFIG_BTRFS_FS=m
-CONFIG_BTRFS_FS_POSIX_ACL=y
-# CONFIG_BTRFS_FS_CHECK_INTEGRITY is not set
-CONFIG_NILFS2_FS=m
-CONFIG_FS_POSIX_ACL=y
-CONFIG_EXPORTFS=y
-CONFIG_FILE_LOCKING=y
-CONFIG_FSNOTIFY=y
-CONFIG_DNOTIFY=y
-CONFIG_INOTIFY_USER=y
-CONFIG_FANOTIFY=y
-CONFIG_QUOTA=y
-# CONFIG_QUOTA_NETLINK_INTERFACE is not set
-CONFIG_PRINT_QUOTA_WARNING=y
-# CONFIG_QUOTA_DEBUG is not set
-CONFIG_QUOTA_TREE=y
-# CONFIG_QFMT_V1 is not set
-CONFIG_QFMT_V2=y
-CONFIG_QUOTACTL=y
-CONFIG_AUTOFS4_FS=y
-CONFIG_FUSE_FS=m
-CONFIG_CUSE=m
-CONFIG_GENERIC_ACL=y
-
-#
-# Caches
-#
-CONFIG_FSCACHE=m
-CONFIG_FSCACHE_STATS=y
-CONFIG_FSCACHE_HISTOGRAM=y
-# CONFIG_FSCACHE_DEBUG is not set
-# CONFIG_FSCACHE_OBJECT_LIST is not set
-CONFIG_CACHEFILES=m
-# CONFIG_CACHEFILES_DEBUG is not set
-CONFIG_CACHEFILES_HISTOGRAM=y
-
-#
-# CD-ROM/DVD Filesystems
-#
-CONFIG_ISO9660_FS=m
-CONFIG_JOLIET=y
-CONFIG_ZISOFS=y
-CONFIG_UDF_FS=m
-CONFIG_UDF_NLS=y
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=y
-CONFIG_MSDOS_FS=y
-CONFIG_VFAT_FS=y
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-CONFIG_NTFS_FS=m
-# CONFIG_NTFS_DEBUG is not set
-# CONFIG_NTFS_RW is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_PROC_SYSCTL=y
-CONFIG_PROC_PAGE_MONITOR=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-CONFIG_TMPFS_POSIX_ACL=y
-CONFIG_TMPFS_XATTR=y
-# CONFIG_HUGETLB_PAGE is not set
-CONFIG_CONFIGFS_FS=m
-CONFIG_MISC_FILESYSTEMS=y
-CONFIG_ADFS_FS=m
-# CONFIG_ADFS_FS_RW is not set
-CONFIG_AFFS_FS=m
-# CONFIG_ECRYPT_FS is not set
-CONFIG_HFS_FS=m
-CONFIG_HFSPLUS_FS=m
-CONFIG_BEFS_FS=m
-# CONFIG_BEFS_DEBUG is not set
-CONFIG_BFS_FS=m
-CONFIG_EFS_FS=m
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
-CONFIG_JFFS2_SUMMARY=y
-CONFIG_JFFS2_FS_XATTR=y
-CONFIG_JFFS2_FS_POSIX_ACL=y
-CONFIG_JFFS2_FS_SECURITY=y
-CONFIG_JFFS2_COMPRESSION_OPTIONS=y
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_LZO=y
-CONFIG_JFFS2_RTIME=y
-CONFIG_JFFS2_RUBIN=y
-# CONFIG_JFFS2_CMODE_NONE is not set
-# CONFIG_JFFS2_CMODE_PRIORITY is not set
-# CONFIG_JFFS2_CMODE_SIZE is not set
-CONFIG_JFFS2_CMODE_FAVOURLZO=y
-CONFIG_UBIFS_FS=y
-CONFIG_UBIFS_FS_XATTR=y
-CONFIG_UBIFS_FS_ADVANCED_COMPR=y
-CONFIG_UBIFS_FS_LZO=y
-CONFIG_UBIFS_FS_ZLIB=y
-# CONFIG_UBIFS_FS_DEBUG is not set
-CONFIG_LOGFS=m
-CONFIG_CRAMFS=m
-CONFIG_SQUASHFS=y
-# CONFIG_SQUASHFS_XATTR is not set
-CONFIG_SQUASHFS_ZLIB=y
-CONFIG_SQUASHFS_LZO=y
-CONFIG_SQUASHFS_XZ=y
-# CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set
-# CONFIG_SQUASHFS_EMBEDDED is not set
-CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
-CONFIG_VXFS_FS=m
-CONFIG_MINIX_FS=m
-CONFIG_OMFS_FS=m
-CONFIG_HPFS_FS=m
-CONFIG_QNX4FS_FS=m
-CONFIG_ROMFS_FS=m
-CONFIG_ROMFS_BACKED_BY_BLOCK=y
-# CONFIG_ROMFS_BACKED_BY_MTD is not set
-# CONFIG_ROMFS_BACKED_BY_BOTH is not set
-CONFIG_ROMFS_ON_BLOCK=y
-CONFIG_PSTORE=y
-CONFIG_SYSV_FS=m
-CONFIG_UFS_FS=m
-# CONFIG_UFS_FS_WRITE is not set
-# CONFIG_UFS_DEBUG is not set
-CONFIG_NETWORK_FILESYSTEMS=y
-CONFIG_NFS_FS=y
-CONFIG_NFS_V3=y
-CONFIG_NFS_V3_ACL=y
-CONFIG_NFS_V4=y
-CONFIG_NFS_V4_1=y
-CONFIG_PNFS_FILE_LAYOUT=y
-CONFIG_PNFS_BLOCK=m
-CONFIG_ROOT_NFS=y
-# CONFIG_NFS_USE_LEGACY_DNS is not set
-CONFIG_NFS_USE_KERNEL_DNS=y
-# CONFIG_NFS_USE_NEW_IDMAPPER is not set
-CONFIG_NFSD=m
-CONFIG_NFSD_V2_ACL=y
-CONFIG_NFSD_V3=y
-CONFIG_NFSD_V3_ACL=y
-CONFIG_NFSD_V4=y
-# CONFIG_NFSD_FAULT_INJECTION is not set
-CONFIG_LOCKD=y
-CONFIG_LOCKD_V4=y
-CONFIG_NFS_ACL_SUPPORT=y
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
-CONFIG_SUNRPC_GSS=y
-CONFIG_SUNRPC_BACKCHANNEL=y
-CONFIG_RPCSEC_GSS_KRB5=m
-CONFIG_CEPH_FS=m
-CONFIG_CIFS=m
-CONFIG_CIFS_STATS=y
-CONFIG_CIFS_STATS2=y
-# CONFIG_CIFS_WEAK_PW_HASH is not set
-# CONFIG_CIFS_UPCALL is not set
-CONFIG_CIFS_XATTR=y
-CONFIG_CIFS_POSIX=y
-# CONFIG_CIFS_DEBUG2 is not set
-CONFIG_CIFS_DFS_UPCALL=y
-CONFIG_CIFS_FSCACHE=y
-CONFIG_CIFS_ACL=y
-CONFIG_NCP_FS=m
-# CONFIG_NCPFS_PACKET_SIGNING is not set
-# CONFIG_NCPFS_IOCTL_LOCKING is not set
-# CONFIG_NCPFS_STRONG is not set
-# CONFIG_NCPFS_NFS_NS is not set
-# CONFIG_NCPFS_OS2_NS is not set
-# CONFIG_NCPFS_SMALLDOS is not set
-# CONFIG_NCPFS_NLS is not set
-# CONFIG_NCPFS_EXTRAS is not set
-CONFIG_CODA_FS=m
-CONFIG_AFS_FS=m
-# CONFIG_AFS_DEBUG is not set
-# CONFIG_AFS_FSCACHE is not set
-CONFIG_9P_FS=m
-CONFIG_9P_FSCACHE=y
-CONFIG_9P_FS_POSIX_ACL=y
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="iso8859-1"
-CONFIG_NLS_CODEPAGE_437=y
-CONFIG_NLS_CODEPAGE_737=m
-CONFIG_NLS_CODEPAGE_775=m
-CONFIG_NLS_CODEPAGE_850=m
-CONFIG_NLS_CODEPAGE_852=m
-CONFIG_NLS_CODEPAGE_855=m
-CONFIG_NLS_CODEPAGE_857=m
-CONFIG_NLS_CODEPAGE_860=m
-CONFIG_NLS_CODEPAGE_861=m
-CONFIG_NLS_CODEPAGE_862=m
-CONFIG_NLS_CODEPAGE_863=m
-CONFIG_NLS_CODEPAGE_864=m
-CONFIG_NLS_CODEPAGE_865=m
-CONFIG_NLS_CODEPAGE_866=m
-CONFIG_NLS_CODEPAGE_869=m
-CONFIG_NLS_CODEPAGE_936=m
-CONFIG_NLS_CODEPAGE_950=m
-CONFIG_NLS_CODEPAGE_932=m
-CONFIG_NLS_CODEPAGE_949=m
-CONFIG_NLS_CODEPAGE_874=m
-CONFIG_NLS_ISO8859_8=m
-CONFIG_NLS_CODEPAGE_1250=m
-CONFIG_NLS_CODEPAGE_1251=m
-CONFIG_NLS_ASCII=m
-CONFIG_NLS_ISO8859_1=y
-CONFIG_NLS_ISO8859_2=m
-CONFIG_NLS_ISO8859_3=m
-CONFIG_NLS_ISO8859_4=m
-CONFIG_NLS_ISO8859_5=m
-CONFIG_NLS_ISO8859_6=m
-CONFIG_NLS_ISO8859_7=m
-CONFIG_NLS_ISO8859_9=m
-CONFIG_NLS_ISO8859_13=m
-CONFIG_NLS_ISO8859_14=m
-CONFIG_NLS_ISO8859_15=m
-CONFIG_NLS_KOI8_R=m
-CONFIG_NLS_KOI8_U=m
-CONFIG_NLS_UTF8=y
-CONFIG_DLM=m
-# CONFIG_DLM_DEBUG is not set
-
-#
-# Kernel hacking
-#
-CONFIG_PRINTK_TIME=y
-CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4
-CONFIG_ENABLE_WARN_DEPRECATED=y
-CONFIG_ENABLE_MUST_CHECK=y
-CONFIG_FRAME_WARN=1024
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_STRIP_ASM_SYMS is not set
-# CONFIG_UNUSED_SYMBOLS is not set
-CONFIG_DEBUG_FS=y
-# CONFIG_HEADERS_CHECK is not set
-# CONFIG_DEBUG_SECTION_MISMATCH is not set
-CONFIG_DEBUG_KERNEL=y
-# CONFIG_DEBUG_SHIRQ is not set
-# CONFIG_LOCKUP_DETECTOR is not set
-# CONFIG_HARDLOCKUP_DETECTOR is not set
-CONFIG_DETECT_HUNG_TASK=y
-CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120
-# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
-CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
-CONFIG_SCHED_DEBUG=y
-CONFIG_SCHEDSTATS=y
-CONFIG_TIMER_STATS=y
-# CONFIG_DEBUG_OBJECTS is not set
-# CONFIG_DEBUG_SLAB is not set
-# CONFIG_DEBUG_KMEMLEAK is not set
-# CONFIG_DEBUG_RT_MUTEXES is not set
-# CONFIG_RT_MUTEX_TESTER is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-CONFIG_DEBUG_MUTEXES=y
-# CONFIG_DEBUG_LOCK_ALLOC is not set
-# CONFIG_PROVE_LOCKING is not set
-# CONFIG_SPARSE_RCU_POINTER is not set
-# CONFIG_LOCK_STAT is not set
-# CONFIG_DEBUG_ATOMIC_SLEEP is not set
-# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
-# CONFIG_DEBUG_STACK_USAGE is not set
-# CONFIG_DEBUG_KOBJECT is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_VM is not set
-# CONFIG_DEBUG_WRITECOUNT is not set
-# CONFIG_DEBUG_MEMORY_INIT is not set
-# CONFIG_DEBUG_LIST is not set
-# CONFIG_TEST_LIST_SORT is not set
-# CONFIG_DEBUG_SG is not set
-# CONFIG_DEBUG_NOTIFIERS is not set
-# CONFIG_DEBUG_CREDENTIALS is not set
-# CONFIG_BOOT_PRINTK_DELAY is not set
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_BACKTRACE_SELF_TEST is not set
-# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
-# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
-# CONFIG_LKDTM is not set
-# CONFIG_FAULT_INJECTION is not set
-# CONFIG_LATENCYTOP is not set
-# CONFIG_SYSCTL_SYSCALL_CHECK is not set
-# CONFIG_DEBUG_PAGEALLOC is not set
-CONFIG_HAVE_FUNCTION_TRACER=y
-CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
-CONFIG_HAVE_DYNAMIC_FTRACE=y
-CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
-CONFIG_HAVE_C_RECORDMCOUNT=y
-CONFIG_RING_BUFFER=y
-CONFIG_RING_BUFFER_ALLOW_SWAP=y
-CONFIG_TRACING_SUPPORT=y
-CONFIG_FTRACE=y
-# CONFIG_FUNCTION_TRACER is not set
-# CONFIG_IRQSOFF_TRACER is not set
-# CONFIG_SCHED_TRACER is not set
-# CONFIG_ENABLE_DEFAULT_TRACERS is not set
-CONFIG_BRANCH_PROFILE_NONE=y
-# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
-# CONFIG_PROFILE_ALL_BRANCHES is not set
-# CONFIG_STACK_TRACER is not set
-# CONFIG_BLK_DEV_IO_TRACE is not set
-# CONFIG_RING_BUFFER_BENCHMARK is not set
-# CONFIG_DYNAMIC_DEBUG is not set
-# CONFIG_DMA_API_DEBUG is not set
-# CONFIG_ATOMIC64_SELFTEST is not set
-# CONFIG_ASYNC_RAID6_TEST is not set
-# CONFIG_SAMPLES is not set
-CONFIG_HAVE_ARCH_KGDB=y
-# CONFIG_KGDB is not set
-# CONFIG_TEST_KSTRTOX is not set
-# CONFIG_STRICT_DEVMEM is not set
-CONFIG_ARM_UNWIND=y
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_LL is not set
-
-#
-# Security options
-#
-CONFIG_KEYS=y
-# CONFIG_ENCRYPTED_KEYS is not set
-# CONFIG_KEYS_DEBUG_PROC_KEYS is not set
-# CONFIG_SECURITY_DMESG_RESTRICT is not set
-# CONFIG_SECURITY is not set
-# CONFIG_SECURITYFS is not set
-CONFIG_DEFAULT_SECURITY_DAC=y
-CONFIG_DEFAULT_SECURITY=""
-CONFIG_XOR_BLOCKS=m
-CONFIG_ASYNC_CORE=m
-CONFIG_ASYNC_MEMCPY=m
-CONFIG_ASYNC_XOR=m
-CONFIG_ASYNC_PQ=m
-CONFIG_ASYNC_RAID6_RECOV=m
-CONFIG_CRYPTO=y
-
-#
-# Crypto core or helper
-#
-CONFIG_CRYPTO_ALGAPI=y
-CONFIG_CRYPTO_ALGAPI2=y
-CONFIG_CRYPTO_AEAD=m
-CONFIG_CRYPTO_AEAD2=y
-CONFIG_CRYPTO_BLKCIPHER=y
-CONFIG_CRYPTO_BLKCIPHER2=y
-CONFIG_CRYPTO_HASH=y
-CONFIG_CRYPTO_HASH2=y
-CONFIG_CRYPTO_RNG=m
-CONFIG_CRYPTO_RNG2=y
-CONFIG_CRYPTO_PCOMP2=y
-CONFIG_CRYPTO_MANAGER=y
-CONFIG_CRYPTO_MANAGER2=y
-# CONFIG_CRYPTO_USER is not set
-CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y
-CONFIG_CRYPTO_GF128MUL=m
-CONFIG_CRYPTO_NULL=m
-CONFIG_CRYPTO_WORKQUEUE=y
-CONFIG_CRYPTO_CRYPTD=m
-CONFIG_CRYPTO_AUTHENC=m
-CONFIG_CRYPTO_TEST=m
-
-#
-# Authenticated Encryption with Associated Data
-#
-CONFIG_CRYPTO_CCM=m
-CONFIG_CRYPTO_GCM=m
-CONFIG_CRYPTO_SEQIV=m
-
-#
-# Block modes
-#
-CONFIG_CRYPTO_CBC=y
-CONFIG_CRYPTO_CTR=m
-CONFIG_CRYPTO_CTS=m
-CONFIG_CRYPTO_ECB=y
-CONFIG_CRYPTO_LRW=m
-CONFIG_CRYPTO_PCBC=m
-CONFIG_CRYPTO_XTS=m
-
-#
-# Hash modes
-#
-CONFIG_CRYPTO_HMAC=m
-CONFIG_CRYPTO_XCBC=m
-# CONFIG_CRYPTO_VMAC is not set
-
-#
-# Digest
-#
-CONFIG_CRYPTO_CRC32C=y
-CONFIG_CRYPTO_GHASH=m
-CONFIG_CRYPTO_MD4=m
-CONFIG_CRYPTO_MD5=y
-CONFIG_CRYPTO_MICHAEL_MIC=y
-CONFIG_CRYPTO_RMD128=m
-CONFIG_CRYPTO_RMD160=m
-CONFIG_CRYPTO_RMD256=m
-CONFIG_CRYPTO_RMD320=m
-CONFIG_CRYPTO_SHA1=m
-CONFIG_CRYPTO_SHA256=m
-CONFIG_CRYPTO_SHA512=m
-CONFIG_CRYPTO_TGR192=m
-CONFIG_CRYPTO_WP512=m
-
-#
-# Ciphers
-#
-CONFIG_CRYPTO_AES=y
-CONFIG_CRYPTO_ANUBIS=m
-CONFIG_CRYPTO_ARC4=y
-CONFIG_CRYPTO_BLOWFISH=m
-CONFIG_CRYPTO_BLOWFISH_COMMON=m
-CONFIG_CRYPTO_CAMELLIA=m
-CONFIG_CRYPTO_CAST5=m
-CONFIG_CRYPTO_CAST6=m
-CONFIG_CRYPTO_DES=y
-CONFIG_CRYPTO_FCRYPT=m
-CONFIG_CRYPTO_KHAZAD=m
-CONFIG_CRYPTO_SALSA20=m
-CONFIG_CRYPTO_SEED=m
-CONFIG_CRYPTO_SERPENT=m
-CONFIG_CRYPTO_TEA=m
-CONFIG_CRYPTO_TWOFISH=m
-CONFIG_CRYPTO_TWOFISH_COMMON=m
-
-#
-# Compression
-#
-CONFIG_CRYPTO_DEFLATE=y
-# CONFIG_CRYPTO_ZLIB is not set
-CONFIG_CRYPTO_LZO=y
-
-#
-# Random Number Generation
-#
-CONFIG_CRYPTO_ANSI_CPRNG=m
-CONFIG_CRYPTO_USER_API=m
-CONFIG_CRYPTO_USER_API_HASH=m
-CONFIG_CRYPTO_USER_API_SKCIPHER=m
-CONFIG_CRYPTO_HW=y
-CONFIG_CRYPTO_DEV_OMAP_SHAM=m
-CONFIG_CRYPTO_DEV_OMAP_AES=m
-# CONFIG_BINARY_PRINTF is not set
-
-#
-# Library routines
-#
-CONFIG_RAID6_PQ=m
-CONFIG_BITREVERSE=y
-CONFIG_GENERIC_PCI_IOMAP=y
-CONFIG_CRC_CCITT=y
-CONFIG_CRC16=y
-CONFIG_CRC_T10DIF=y
-CONFIG_CRC_ITU_T=y
-CONFIG_CRC32=y
-CONFIG_CRC7=y
-CONFIG_LIBCRC32C=y
-# CONFIG_CRC8 is not set
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
-CONFIG_LZO_COMPRESS=y
-CONFIG_LZO_DECOMPRESS=y
-CONFIG_XZ_DEC=y
-CONFIG_XZ_DEC_X86=y
-CONFIG_XZ_DEC_POWERPC=y
-CONFIG_XZ_DEC_IA64=y
-CONFIG_XZ_DEC_ARM=y
-CONFIG_XZ_DEC_ARMTHUMB=y
-CONFIG_XZ_DEC_SPARC=y
-CONFIG_XZ_DEC_BCJ=y
-CONFIG_XZ_DEC_TEST=m
-CONFIG_DECOMPRESS_GZIP=y
-CONFIG_DECOMPRESS_BZIP2=y
-CONFIG_DECOMPRESS_LZMA=y
-CONFIG_DECOMPRESS_XZ=y
-CONFIG_DECOMPRESS_LZO=y
-CONFIG_TEXTSEARCH=y
-CONFIG_TEXTSEARCH_KMP=m
-CONFIG_TEXTSEARCH_BM=m
-CONFIG_TEXTSEARCH_FSM=m
-CONFIG_BTREE=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
-CONFIG_HAS_DMA=y
-CONFIG_DQL=y
-CONFIG_NLATTR=y
-CONFIG_AVERAGE=y
-# CONFIG_CORDIC is not set
diff --git a/recipes-kernel/linux/linux-am335x-psp-3.2/0001-ARM-AM33xx-hwmod-Convert-SHA0-crypto-device-data-to-.patch b/recipes-kernel/linux/linux-am335x-psp-3.2/0001-ARM-AM33xx-hwmod-Convert-SHA0-crypto-device-data-to-.patch
deleted file mode 100644
index 3fe831c..0000000
--- a/recipes-kernel/linux/linux-am335x-psp-3.2/0001-ARM-AM33xx-hwmod-Convert-SHA0-crypto-device-data-to-.patch
+++ /dev/null
@@ -1,168 +0,0 @@
-From 9193aa814bde2b56aaae1949d42d8849cb60260e Mon Sep 17 00:00:00 2001
-From: "Mark A. Greer" <mgreer at animalcreek.com>
-Date: Tue, 11 Dec 2012 09:20:16 -0700
-Subject: [PATCH 01/10] ARM: AM33xx: hwmod: Convert SHA0 crypto device data to
- hwmod
-
-Convert the device data for the AM33xx SHA0 crypto modules
-from explicit platform_data to hwmod.
-
-Signed-off-by: Mark A. Greer <mgreer at animalcreek.com>
----
- arch/arm/mach-omap2/devices.c | 68 +++---------------------------
- arch/arm/mach-omap2/omap_hwmod_33xx_data.c | 32 ++++++++++++++
- 2 files changed, 39 insertions(+), 61 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c
-index c2e1d84..3679369 100644
---- a/arch/arm/mach-omap2/devices.c
-+++ b/arch/arm/mach-omap2/devices.c
-@@ -726,72 +726,18 @@ static void omap_init_sham(void)
- }
-
- #elif defined(CONFIG_CRYPTO_DEV_OMAP4_SHAM) || defined(CONFIG_CRYPTO_DEV_OMAP4_SHAM_MODULE)
--
--static struct resource omap4_sham_resources[] = {
-- {
-- .start = AM33XX_SHA1MD5_P_BASE,
-- .end = AM33XX_SHA1MD5_P_BASE + 0x120,
-- .flags = IORESOURCE_MEM,
-- },
-- {
-- .start = AM33XX_IRQ_SHAEIP57t0_P,
-- .flags = IORESOURCE_IRQ,
-- },
-- {
-- .start = AM33XX_DMA_SHAEIP57T0_DIN,
-- .flags = IORESOURCE_DMA,
-- }
--};
--
--static int omap4_sham_resources_sz = ARRAY_SIZE(omap4_sham_resources);
--
--
--static struct platform_device sham_device = {
-- .name = "omap4-sham",
-- .id = -1,
--};
--
--#if 0
--static void omap_init_sham(void)
--{
-- sham_device.resource = omap4_sham_resources;
-- sham_device.num_resources = omap4_sham_resources_sz;
--
-- platform_device_register(&sham_device);
--}
--#endif
--
--int __init omap_init_sham(void)
-+static void __init omap_init_sham(void)
- {
-- int id = -1;
-- struct platform_device *pdev;
- struct omap_hwmod *oh;
-- char *oh_name = "sha0";
-- char *name = "omap4-sham";
--
-- oh = omap_hwmod_lookup(oh_name);
-- if (!oh) {
-- pr_err("Could not look up %s\n", oh_name);
-- return -ENODEV;
-- }
--
-- pdev = omap_device_build(name, id, oh, NULL, 0, NULL, 0, 0);
-- //pdev.resource = omap4_sham_resources;
-- //pdev.num_resources = omap4_sham_resources_sz;
-+ struct platform_device *pdev;
-
-- if (IS_ERR(pdev)) {
-- WARN(1, "Can't build omap_device for %s:%s.\n",
-- name, oh->name);
-- return PTR_ERR(pdev);
-- }
-+ oh = omap_hwmod_lookup("sha0");
-+ if (!oh)
-+ return;
-
-- return 0;
-+ pdev = omap_device_build("omap4-sham", -1, oh, NULL, 0, NULL, 0, 0);
-+ WARN(IS_ERR(pdev), "Can't build omap_device for omap-sham\n");
- }
--
--
--
--
--
- #else
- static inline void omap_init_sham(void) { }
- #endif
-diff --git a/arch/arm/mach-omap2/omap_hwmod_33xx_data.c b/arch/arm/mach-omap2/omap_hwmod_33xx_data.c
-index ee3ebd9..ad606c6 100644
---- a/arch/arm/mach-omap2/omap_hwmod_33xx_data.c
-+++ b/arch/arm/mach-omap2/omap_hwmod_33xx_data.c
-@@ -79,6 +79,7 @@ static struct omap_hwmod am33xx_spi1_hwmod;
- static struct omap_hwmod am33xx_elm_hwmod;
- static struct omap_hwmod am33xx_adc_tsc_hwmod;
- static struct omap_hwmod am33xx_rtc_hwmod;
-+static struct omap_hwmod am33xx_sha0_hwmod;
- static struct omap_hwmod am33xx_mcasp0_hwmod;
- static struct omap_hwmod am33xx_mcasp1_hwmod;
- static struct omap_hwmod am33xx_ehrpwm0_hwmod;
-@@ -2167,8 +2168,16 @@ static struct omap_hwmod am33xx_rtc_hwmod = {
- };
-
- /* sha0 */
-+static struct omap_hwmod_class_sysconfig am33xx_sha0_sysc = {
-+ .rev_offs = 0x100,
-+ .sysc_offs = 0x110,
-+ .syss_offs = 0x114,
-+ .sysc_flags = SYSS_HAS_RESET_STATUS,
-+};
-+
- static struct omap_hwmod_class am33xx_sha0_hwmod_class = {
- .name = "sha0",
-+ .sysc = &am33xx_sha0_sysc,
- };
-
- static struct omap_hwmod_irq_info am33xx_sha0_irqs[] = {
-@@ -2181,6 +2190,27 @@ static struct omap_hwmod_dma_info am33xx_sha0_dma[] = {
- { .dma_req = -1 }
- };
-
-+struct omap_hwmod_addr_space am33xx_sha0_addr_space[] = {
-+ {
-+ .pa_start = 0x53100000,
-+ .pa_end = 0x53100000 + SZ_1M - 1,
-+ .flags = ADDR_TYPE_RT,
-+ },
-+ { }
-+};
-+
-+struct omap_hwmod_ocp_if am33xx_l3_core__sha0 = {
-+ .master = &am33xx_l3_main_hwmod,
-+ .slave = &am33xx_sha0_hwmod,
-+ .clk = "sha0_fck",
-+ .addr = am33xx_sha0_addr_space,
-+ .user = OCP_USER_MPU,
-+};
-+
-+static struct omap_hwmod_ocp_if *am33xx_sha0_slaves[] = {
-+ &am33xx_l3_core__sha0,
-+};
-+
- static struct omap_hwmod am33xx_sha0_hwmod = {
- .name = "sha0",
- .class = &am33xx_sha0_hwmod_class,
-@@ -2194,6 +2224,8 @@ static struct omap_hwmod am33xx_sha0_hwmod = {
- .modulemode = MODULEMODE_SWCTRL,
- },
- },
-+ .slaves = am33xx_sha0_slaves,
-+ .slaves_cnt = ARRAY_SIZE(am33xx_sha0_slaves),
- };
-
- /* 'smartreflex' class */
---
-1.7.12
-
diff --git a/recipes-kernel/linux/linux-am335x-psp-3.2/0001-ARM-OMAP2-AM335x-Update-SPI-flash-layout.patch b/recipes-kernel/linux/linux-am335x-psp-3.2/0001-ARM-OMAP2-AM335x-Update-SPI-flash-layout.patch
deleted file mode 100644
index 29b95bb..0000000
--- a/recipes-kernel/linux/linux-am335x-psp-3.2/0001-ARM-OMAP2-AM335x-Update-SPI-flash-layout.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 54690cd10741ec54acc2555c3b699de310571a49 Mon Sep 17 00:00:00 2001
-From: Tom Rini <trini at ti.com>
-Date: Fri, 7 Dec 2012 14:01:51 -0700
-Subject: [PATCH] ARM: OMAP2+: AM335x: Update SPI flash layout
-
-Current U-Boot has grown, and our size of the environment was never
-correct, rework the offsets for minimal impact.
-
-Signed-off-by: Tom Rini <trini at ti.com>
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index 50e1d9b..3357d88 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -1201,17 +1201,17 @@ static struct mtd_partition am335x_spi_partitions[] = {
- {
- .name = "U-Boot",
- .offset = MTDPART_OFS_APPEND, /* Offset = 0x20000 */
-- .size = 2 * SZ_128K,
-+ .size = (3 * SZ_128K) - SZ_4K,
- },
- {
- .name = "U-Boot Env",
-- .offset = MTDPART_OFS_APPEND, /* Offset = 0x60000 */
-- .size = 2 * SZ_4K,
-+ .offset = MTDPART_OFS_APPEND, /* Offset = 0x7F000 */
-+ .size = SZ_4K,
- },
- {
- .name = "Kernel",
-- .offset = MTDPART_OFS_APPEND, /* Offset = 0x62000 */
-- .size = 28 * SZ_128K,
-+ .offset = MTDPART_OFS_APPEND, /* Offset = 0x80000 */
-+ .size = 866 * SZ_4K, /* size = 0x362000 */
- },
- {
- .name = "File System",
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-am335x-psp-3.2/0001-Smartreflex-support-for-ES-2.x-and-suspend-resume.patch b/recipes-kernel/linux/linux-am335x-psp-3.2/0001-Smartreflex-support-for-ES-2.x-and-suspend-resume.patch
deleted file mode 100644
index bc2b5c7..0000000
--- a/recipes-kernel/linux/linux-am335x-psp-3.2/0001-Smartreflex-support-for-ES-2.x-and-suspend-resume.patch
+++ /dev/null
@@ -1,1928 +0,0 @@
-From 4866616f13b397a07c06a45a34d050c1b4539e10 Mon Sep 17 00:00:00 2001
-From: Greg Guyotte <gguyotte at ti.com>
-Date: Tue, 28 May 2013 20:45:07 -0500
-Subject: [PATCH] Smartreflex support for ES 2.x and suspend resume
-
-This change adds support for ES 2.x to the SmartReflex driver.
-It also adds suspend/resume handlers which resolves an identified
-problem. The voltage calculation has been improved in order
-to settle more quickly and accurately to the target voltage.
-
-Signed-off-by: Greg Guyotte <gguyotte at ti.com>
----
- arch/arm/mach-omap2/am33xx-smartreflex-class2.c | 852 +++++++++++++----------
- arch/arm/mach-omap2/devices.c | 483 +++++++------
- arch/arm/plat-omap/include/plat/smartreflex.h | 72 +-
- 3 files changed, 812 insertions(+), 595 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/am33xx-smartreflex-class2.c b/arch/arm/mach-omap2/am33xx-smartreflex-class2.c
-index 6a66e68..4d750d4 100644
---- a/arch/arm/mach-omap2/am33xx-smartreflex-class2.c
-+++ b/arch/arm/mach-omap2/am33xx-smartreflex-class2.c
-@@ -28,6 +28,7 @@
- #include <linux/regulator/consumer.h>
- #include <linux/cpufreq.h>
- #include <linux/opp.h>
-+#include <linux/pm.h>
-
- #include <plat/common.h>
- #include <plat/smartreflex.h>
-@@ -37,6 +38,9 @@
-
- #define CLK_NAME_LEN 40
-
-+/* Global reference used for suspend/resume only */
-+static struct am33xx_sr *global_sr_info;
-+
- static inline void sr_write_reg(struct am33xx_sr *sr, int offset, u32 value,
- u32 srid)
- {
-@@ -60,63 +64,68 @@ static inline u32 sr_read_reg(struct am33xx_sr *sr, int offset, u32 srid)
- return readl(sr->sen[srid].base + offset);
- }
-
--static void cal_reciprocal(u32 sensor, u32 *sengain, u32 *rnsen) {
-- u32 gn, rn, mul;
--
-- for (gn = 0; gn < GAIN_MAXLIMIT; gn++) {
-- mul = 1 << (gn + 8);
-- rn = mul / sensor;
-- if (rn < R_MAXLIMIT) {
-- *sengain = gn;
-- *rnsen = rn;
-- }
-- }
-+static void cal_reciprocal(u32 sensor, u32 *sengain, u32 *rnsen)
-+{
-+ u32 gn, rn, mul;
-+
-+ for (gn = 0; gn < GAIN_MAXLIMIT; gn++) {
-+ mul = 1 << (gn + 8);
-+ rn = mul / sensor;
-+ if (rn < R_MAXLIMIT) {
-+ *sengain = gn;
-+ *rnsen = rn;
-+ }
-+ }
- }
-
--static u32 cal_test_nvalue(u32 sennval, u32 senpval) {
-- u32 senpgain=0, senngain=0;
-- u32 rnsenp=0, rnsenn=0;
-+static u32 cal_test_nvalue(u32 sennval, u32 senpval)
-+{
-+ u32 senpgain = 0, senngain = 0;
-+ u32 rnsenp = 0, rnsenn = 0;
-
-- /* Calculating the gain and reciprocal of the SenN and SenP values */
-- cal_reciprocal(senpval, &senpgain, &rnsenp);
-- cal_reciprocal(sennval, &senngain, &rnsenn);
-+ /* Calculating the gain and reciprocal of the SenN and SenP values */
-+ cal_reciprocal(senpval, &senpgain, &rnsenp);
-+ cal_reciprocal(sennval, &senngain, &rnsenn);
-
-- return (senpgain << NVALUERECIPROCAL_SENPGAIN_SHIFT) |
-- (senngain << NVALUERECIPROCAL_SENNGAIN_SHIFT) |
-- (rnsenp << NVALUERECIPROCAL_RNSENP_SHIFT) |
-- (rnsenn << NVALUERECIPROCAL_RNSENN_SHIFT);
-+ return (senpgain << NVALUERECIPROCAL_SENPGAIN_SHIFT) |
-+ (senngain << NVALUERECIPROCAL_SENNGAIN_SHIFT) |
-+ (rnsenp << NVALUERECIPROCAL_RNSENP_SHIFT) |
-+ (rnsenn << NVALUERECIPROCAL_RNSENN_SHIFT);
- }
-
-+/* margin is defined similar to the SenVal register.
-+ SenP margin is 31:16 bits
-+ SenN margin is 15:00 bits
-+*/
- static unsigned int sr_adjust_efuse_nvalue(unsigned int opp_no,
-- unsigned int orig_opp_nvalue,
-- unsigned int mv_delta) {
-- unsigned int new_opp_nvalue;
-- unsigned int senp_gain, senn_gain, rnsenp, rnsenn, pnt_delta, nnt_delta;
-- unsigned int new_senn, new_senp, senn, senp;
-+ unsigned int orig_opp_nvalue,
-+ unsigned int margin) {
-+ unsigned int new_opp_nvalue, senp_gain, senn_gain, rnsenp, rnsenn;
-+ unsigned int pnt_delta, nnt_delta, new_senn, new_senp, senn, senp;
-
-- /* calculate SenN and SenP from the efuse value */
-- senp_gain = ((orig_opp_nvalue >> 20) & 0xf);
-- senn_gain = ((orig_opp_nvalue >> 16) & 0xf);
-- rnsenp = ((orig_opp_nvalue >> 8) & 0xff);
-- rnsenn = (orig_opp_nvalue & 0xff);
-+ /* calculate SenN and SenP from the efuse value */
-+ senp_gain = ((orig_opp_nvalue >> 20) & 0xf);
-+ senn_gain = ((orig_opp_nvalue >> 16) & 0xf);
-+ rnsenp = ((orig_opp_nvalue >> 8) & 0xff);
-+ rnsenn = (orig_opp_nvalue & 0xff);
-
-- senp = ((1<<(senp_gain+8))/(rnsenp));
-- senn = ((1<<(senn_gain+8))/(rnsenn));
-+ senp = ((1<<(senp_gain+8))/(rnsenp));
-+ senn = ((1<<(senn_gain+8))/(rnsenn));
-
-- /* calculate the voltage delta */
-- pnt_delta = (26 * mv_delta)/10;
-- nnt_delta = (3 * mv_delta);
-+ /* calculate the voltage delta */
-+ pnt_delta = (margin >> 16) & 0xffff;
-+ nnt_delta = margin & 0xffff;
-
-- /* now lets add the voltage delta to the sensor values */
-- new_senn = senn + nnt_delta;
-- new_senp = senp + pnt_delta;
-+ /* now lets add the voltage delta to the sensor values */
-+ new_senn = senn + nnt_delta;
-+ new_senp = senp + pnt_delta;
-
-- new_opp_nvalue = cal_test_nvalue(new_senn, new_senp);
-+ new_opp_nvalue = cal_test_nvalue(new_senn, new_senp);
-
-- printk("Compensating OPP%d for %dmV Orig nvalue:0x%x New nvalue:0x%x \n",
-- opp_no, mv_delta, orig_opp_nvalue, new_opp_nvalue);
-+ printk(KERN_DEBUG "Compensating OPP%d: Orig nvalue:0x%x New nvalue:0x%x\n",
-+ opp_no, orig_opp_nvalue, new_opp_nvalue);
-
-- return new_opp_nvalue;
-+ return new_opp_nvalue;
- }
-
- /* irq_sr_reenable - Re-enable SR interrupts (triggered by delayed work queue)
-@@ -128,55 +137,104 @@ static unsigned int sr_adjust_efuse_nvalue(unsigned int opp_no,
- */
- static void irq_sr_reenable(struct work_struct *work)
- {
-- u32 srid;
-+ u32 srid;
- struct am33xx_sr_sensor *sens;
-- struct am33xx_sr *sr;
-+ struct am33xx_sr *sr;
-
-- sens = container_of((void *)work, struct am33xx_sr_sensor,
-- work_reenable);
-+ sens = container_of((void *)work, struct am33xx_sr_sensor,
-+ work_reenable);
-
-- srid = sens->sr_id;
-+ srid = sens->sr_id;
-
-- sr = container_of((void *)sens, struct am33xx_sr, sen[srid]);
-+ sr = container_of((void *)sens, struct am33xx_sr, sen[srid]);
-
-- dev_dbg(&sr->pdev->dev, "%s: SR %d\n", __func__, srid);
-+ dev_dbg(&sr->pdev->dev, "%s: SR %d\n", __func__, srid);
-
-- /* Must clear IRQ status */
-- sens->irq_status = 0;
-+ /* Must clear IRQ status */
-+ sens->irq_status = 0;
-
-- /* Re-enable the interrupt */
-+ /* moved from initial irq handler to solve problem of extra
-+ interrupts (Clear bounds interrupt) */
-+ sr_modify_reg(sr, IRQSTATUS, IRQSTATUS_MCBOUNDSINT,
-+ IRQSTATUS_MCBOUNDSINT, srid);
-+
-+ /* Re-enable the interrupt */
- sr_modify_reg(sr, IRQENABLE_SET, IRQENABLE_MCUBOUNDSINT,
- IRQENABLE_MCUBOUNDSINT, srid);
--
-- /* Restart the module after voltage set */
-- sr_modify_reg(sr, SRCONFIG, SRCONFIG_SRENABLE,
-- SRCONFIG_SRENABLE, srid);
- }
-
- /* get_errvolt - get error voltage from SR error register
- * @sr: contains SR driver data
- * @srid: contains the srid, indicates which SR moduel lswe are using
-+ * @curr_volt: current voltage for domain (in microvolts)
-+ * @reset: set to 1 to reset the internal state machine
- *
-- * Read the error from SENSOR error register and then convert
-+ * Reads the error from SENSOR error register and then convert
- * to voltage delta, return value is the voltage delta in micro
- * volt.
- */
--static int get_errvolt(struct am33xx_sr *sr, s32 srid)
-+static int get_errvolt(struct am33xx_sr *sr, int srid, int curr_volt,
-+ int reset)
- {
-- struct am33xx_sr_sensor *sens;
-- int senerror_reg;
-- s32 uvoltage;
-- s8 terror;
-+ struct am33xx_sr_sensor *sens;
-+ int senerror_reg, gain;
-+ s32 uvoltage = 0;
-+ s8 avg_error;
-
-- sens = &sr->sen[srid];
-+ sens = &sr->sen[srid];
-
-+ /* used when OPP changes to reset the state machine */
-+ if (reset > 0) {
-+ sens->state = 0;
-+ return 0;
-+ }
-+
-+ /* Read the AvgError */
- senerror_reg = sr_read_reg(sr, SENERROR_V2, srid);
- senerror_reg = (senerror_reg & 0x0000FF00);
-- terror = (s8)(senerror_reg >> 8);
-+ avg_error = (s8)(senerror_reg >> 8);
-+
-+ switch (sens->state) {
-+ case 0: /* save the current voltage and AvgError for state 1 */
-+ sens->saved_volt = curr_volt;
-+ sens->avg_error_nom = avg_error;
-+
-+ /* calculate -5% voltage (spec vmin) */
-+ uvoltage = -(curr_volt * 5) / 100;
-+
-+ sens->state = 1;
-+ break;
-+ case 1: /* guard against divide by zero (should not happen) */
-+ if (sens->avg_error_nom == avg_error) {
-+ dev_err(&sr->pdev->dev,
-+ "%s: SR %d: Same AvgError for 2 different voltages\n",
-+ __func__, srid);
-+ sens->state = 0;
-+ break;
-+ }
-
-- /* math defined in SR functional spec */
-- uvoltage = ((terror) * sr->uvoltage_step_size) >> 7;
-- uvoltage = uvoltage * sens->opp_data[sens->curr_opp].e2v_gain;
-+ /* calculate what the gain should be based on slope */
-+ gain = abs(sens->saved_volt - curr_volt) /
-+ abs(sens->avg_error_nom - avg_error);
-+ uvoltage = gain * avg_error;
-+
-+ dev_dbg(&sr->pdev->dev,
-+ "SR %d: State 1 calculated %duV gain, vmin = %d\n",
-+ srid, gain, curr_volt + uvoltage);
-+
-+ /* store computed gain for state 2 */
-+ sens->opp_data[sens->curr_opp].e2v_gain = (gain / 100);
-+ sens->state = 2;
-+ break;
-+ case 2: /* remain in this state to converge to final voltage */
-+ uvoltage = (avg_error * sr->uvoltage_step_size) >> 7;
-+ uvoltage = uvoltage * sens->opp_data[sens->curr_opp].e2v_gain;
-+ break;
-+ default:
-+ dev_err(&sr->pdev->dev,
-+ "%s: SR %d: Invalid state for get_errvolt\n",
-+ __func__, srid);
-+ }
-
- return uvoltage;
- }
-@@ -204,48 +262,46 @@ static void set_voltage(struct work_struct *work)
-
- sr = container_of((void *)work, struct am33xx_sr, work);
-
-- for (i = 0; i < sr->no_of_sens; i++) {
-- if (sr->sen[i].irq_status != 1)
-- continue;
-+ for (i = 0; i < sr->no_of_sens; i++) {
-+ if (sr->sen[i].irq_status != 1)
-+ continue;
-
-- /* Get the current voltage from PMIC */
-- prev_volt = regulator_get_voltage(sr->sen[i].reg);
-+ /* Get the current voltage from PMIC */
-+ prev_volt = regulator_get_voltage(sr->sen[i].reg);
-
-- if (prev_volt < 0) {
-- dev_err(&sr->pdev->dev,
-- "%s: SR %d: regulator_get_voltage error %d\n",
-- __func__, i, prev_volt);
-+ if (prev_volt < 0) {
-+ dev_err(&sr->pdev->dev,
-+ "%s: SR %d: regulator_get_voltage error %d\n",
-+ __func__, i, prev_volt);
-
-- goto reenable;
-- }
-+ goto reenable;
-+ }
-
-- delta_v = get_errvolt(sr, i);
-- new_volt = prev_volt + delta_v;
-+ delta_v = get_errvolt(sr, i, prev_volt, 0);
-+ new_volt = prev_volt + delta_v;
-
-- /* this is the primary output for debugging SR activity */
-- dev_dbg(&sr->pdev->dev,
-- "%s: SR %d: prev volt=%d, delta_v=%d, req_volt=%d\n",
-- __func__, i, prev_volt, delta_v, new_volt);
-+ if (delta_v != 0) {
-+ ret = regulator_set_voltage(sr->sen[i].reg, new_volt,
-+ new_volt + sr->uvoltage_step_size);
-
-- /* Clear the counter, SR module disable */
-- sr_modify_reg(sr, SRCONFIG, SRCONFIG_SRENABLE,
-- ~SRCONFIG_SRENABLE, i);
-+ if (ret < 0)
-+ dev_err(&sr->pdev->dev,
-+ "%s: regulator_set_voltage failed! (err %d)\n",
-+ __func__, ret);
-+ }
-
-- if (delta_v != 0) {
-- ret = regulator_set_voltage(sr->sen[i].reg, new_volt,
-- new_volt + sr->uvoltage_step_size);
-+ /* this is the primary output for debugging SR activity */
-+ printk(KERN_DEBUG "SR %d: curr=%d, delta_v=%d, calc=%d, act=%d, gain=%02x\n",
-+ i, prev_volt, delta_v, new_volt,
-+ regulator_get_voltage(sr->sen[i].reg),
-+ sr->sen[i].opp_data[sr->sen[i].curr_opp].e2v_gain);
-
-- if (ret < 0)
-- dev_err(&sr->pdev->dev,
-- "%s: regulator_set_voltage failed! (err %d)\n",
-- __func__, ret);
-- }
- reenable:
-- /* allow time for voltage to settle before re-enabling SR
-- module and interrupt */
-- schedule_delayed_work(&sr->sen[i].work_reenable,
-- msecs_to_jiffies(sr->irq_delay));
-- }
-+ /* allow time for voltage to settle before re-enabling SR
-+ module and interrupt */
-+ schedule_delayed_work(&sr->sen[i].work_reenable,
-+ msecs_to_jiffies(sr->irq_delay));
-+ }
- }
-
- /* sr_class2_irq - sr irq handling
-@@ -267,32 +323,28 @@ reenable:
- static irqreturn_t sr_class2_irq(int irq, void *data)
- {
- u32 srid;
-- struct am33xx_sr *sr;
-- struct am33xx_sr_sensor *sr_sensor = (struct am33xx_sr_sensor *)data;
-+ struct am33xx_sr *sr;
-+ struct am33xx_sr_sensor *sr_sensor = (struct am33xx_sr_sensor *)data;
-
-- srid = sr_sensor->sr_id;
-+ srid = sr_sensor->sr_id;
-
-- sr = container_of(data, struct am33xx_sr, sen[srid]);
-+ sr = container_of(data, struct am33xx_sr, sen[srid]);
-
- sr->sen[srid].irq_status = 1;
-
-- /* Clear MCUBounds Interrupt */
-- sr_modify_reg(sr, IRQSTATUS, IRQSTATUS_MCBOUNDSINT,
-- IRQSTATUS_MCBOUNDSINT, srid);
--
- /* Disable the interrupt and re-enable in set_voltage() */
- sr_modify_reg(sr, IRQENABLE_CLR, IRQENABLE_MCUBOUNDSINT,
- IRQENABLE_MCUBOUNDSINT, srid);
-
-- /* Causes set_voltage() to get called at a later time. Set_voltage()
-- will check the irq_status flags to determine which SR needs to
-- be serviced. This was previously done with schedule_work, but
-- I observed a crash in set_voltage() when changing OPPs on weak
-- silicon, which may have been related to insufficient voltage
-- settling time for OPP change. This additional delay avoids the
-- crash. */
-- schedule_delayed_work(&sr->work,
-- msecs_to_jiffies(250));
-+ /* Causes set_voltage() to get called at a later time. Set_voltage()
-+ will check the irq_status flags to determine which SR needs to
-+ be serviced. This was previously done with schedule_work, but
-+ I observed a crash in set_voltage() when changing OPPs on weak
-+ silicon, which may have been related to insufficient voltage
-+ settling time for OPP change. This additional delay avoids the
-+ crash. */
-+ schedule_delayed_work(&sr->work,
-+ msecs_to_jiffies(250));
-
- return IRQ_HANDLED;
- }
-@@ -317,31 +369,31 @@ static int sr_clk_disable(struct am33xx_sr *sr, u32 srid)
-
- static inline int sr_set_nvalues(struct am33xx_sr *sr, u32 srid)
- {
-- int i;
-- struct am33xx_sr_sensor *sens = &sr->sen[srid];
-+ int i;
-+ struct am33xx_sr_sensor *sens = &sr->sen[srid];
-
-- for (i = 0; i < sens->no_of_opps; i++) {
-- /* Read nTarget value form EFUSE register*/
-- sens->opp_data[i].nvalue = readl(AM33XX_CTRL_REGADDR
-+ for (i = 0; i < sens->no_of_opps; i++) {
-+ /* Read nTarget value form EFUSE register*/
-+ sens->opp_data[i].nvalue = readl(AM33XX_CTRL_REGADDR
- (sens->opp_data[i].efuse_offs)) & 0xFFFFFF;
-
-- /* validate nTarget value */
-- if (sens->opp_data[i].nvalue == 0)
-- return -EINVAL;
-+ /* validate nTarget value */
-+ if (sens->opp_data[i].nvalue == 0)
-+ return -EINVAL;
-
-- /* adjust nTarget based on margin in mv */
-- sens->opp_data[i].adj_nvalue = sr_adjust_efuse_nvalue(i,
-- sens->opp_data[i].nvalue,
-- sens->opp_data[i].margin);
-+ /* adjust nTarget based on margin in mv */
-+ sens->opp_data[i].adj_nvalue = sr_adjust_efuse_nvalue(i,
-+ sens->opp_data[i].nvalue,
-+ sens->opp_data[i].margin);
-
-- dev_dbg(&sr->pdev->dev,
-- "NValueReciprocal value (from efuse) = %08x\n",
-- sens->opp_data[i].nvalue);
-+ dev_dbg(&sr->pdev->dev,
-+ "NValueReciprocal value (from efuse) = %08x\n",
-+ sens->opp_data[i].nvalue);
-
-- dev_dbg(&sr->pdev->dev,
-- "Adjusted NValueReciprocal value = %08x\n",
-- sens->opp_data[i].adj_nvalue);
-- }
-+ dev_dbg(&sr->pdev->dev,
-+ "Adjusted NValueReciprocal value = %08x\n",
-+ sens->opp_data[i].adj_nvalue);
-+ }
- return 0;
- }
-
-@@ -354,7 +406,7 @@ static inline int sr_set_nvalues(struct am33xx_sr *sr, u32 srid)
- */
- static void sr_configure(struct am33xx_sr *sr, u32 srid)
- {
-- struct am33xx_sr_sensor *sens = &sr->sen[srid];
-+ struct am33xx_sr_sensor *sens = &sr->sen[srid];
-
- /* Configuring the SR module with clock length, enabling the
- * error generator, enable SR module, enable individual N and P
-@@ -370,11 +422,11 @@ static void sr_configure(struct am33xx_sr *sr, u32 srid)
- sr_modify_reg(sr, ERRCONFIG_V2, (SR_ERRWEIGHT_MASK |
- SR_ERRMAXLIMIT_MASK | SR_ERRMINLIMIT_MASK),
- ((sens->opp_data[sens->curr_opp].err_weight <<
-- ERRCONFIG_ERRWEIGHT_SHIFT) |
-+ ERRCONFIG_ERRWEIGHT_SHIFT) |
- (sens->opp_data[sens->curr_opp].err_maxlimit <<
-- ERRCONFIG_ERRMAXLIMIT_SHIFT) |
-+ ERRCONFIG_ERRMAXLIMIT_SHIFT) |
- (sens->opp_data[sens->curr_opp].err_minlimit <<
-- ERRCONFIG_ERRMINLIMIT_SHIFT)),
-+ ERRCONFIG_ERRMINLIMIT_SHIFT)),
- srid);
- }
-
-@@ -387,9 +439,14 @@ static void sr_configure(struct am33xx_sr *sr, u32 srid)
- */
- static void sr_enable(struct am33xx_sr *sr, u32 srid)
- {
-- struct am33xx_sr_sensor *sens;
-+ struct am33xx_sr_sensor *sens;
-+
-+ if (sr->is_suspended) {
-+ dev_dbg(&sr->pdev->dev, "%s: in suspended state\n", __func__);
-+ return;
-+ }
-
-- sens = &sr->sen[srid];
-+ sens = &sr->sen[srid];
-
- /* Check if SR is already enabled. If yes do nothing */
- if (sr_read_reg(sr, SRCONFIG, srid) & SRCONFIG_SRENABLE)
-@@ -397,11 +454,11 @@ static void sr_enable(struct am33xx_sr *sr, u32 srid)
-
- if (sens->opp_data[sens->curr_opp].nvalue == 0)
- dev_err(&sr->pdev->dev,
-- "%s: OPP doesn't support SmartReflex\n", __func__);
-+ "%s: OPP doesn't support SmartReflex\n", __func__);
-
- /* Writing the nReciprocal value to the register */
- sr_write_reg(sr, NVALUERECIPROCAL,
-- sens->opp_data[sens->curr_opp].adj_nvalue, srid);
-+ sens->opp_data[sens->curr_opp].adj_nvalue, srid);
-
- /* Enable the interrupt */
- sr_modify_reg(sr, IRQENABLE_SET, IRQENABLE_MCUBOUNDSINT,
-@@ -420,6 +477,11 @@ static void sr_enable(struct am33xx_sr *sr, u32 srid)
- */
- static void sr_disable(struct am33xx_sr *sr, u32 srid)
- {
-+ if (sr->is_suspended) {
-+ dev_dbg(&sr->pdev->dev, "%s: in suspended state\n", __func__);
-+ return;
-+ }
-+
- /* Disable the interrupt */
- sr_modify_reg(sr, IRQENABLE_CLR, IRQENABLE_MCUBOUNDSINT,
- IRQENABLE_MCUBOUNDSINT, srid);
-@@ -440,31 +502,31 @@ static void sr_start_vddautocomp(struct am33xx_sr *sr)
- int i;
-
- if ((sr->sen[SR_CORE].opp_data[0].nvalue == 0) ||
-- (sr->sen[SR_MPU].opp_data[0].nvalue == 0)) {
-+ (sr->sen[SR_MPU].opp_data[0].nvalue == 0)) {
- dev_err(&sr->pdev->dev, "SR module not enabled, nTarget"
- " values are not found\n");
- return;
- }
-
-- if (sr->autocomp_active == 1) {
-+ if (sr->autocomp_active) {
- dev_warn(&sr->pdev->dev, "SR VDD autocomp already active\n");
- return;
- }
-
- for (i = 0; i < sr->no_of_sens; i++) {
-- /* Read current regulator value and voltage */
-- sr->sen[i].init_volt_mv = regulator_get_voltage(sr->sen[i].reg);
-+ /* Read current regulator value and voltage */
-+ sr->sen[i].init_volt_mv = regulator_get_voltage(sr->sen[i].reg);
-
-- dev_dbg(&sr->pdev->dev, "%s: regulator %d, init_volt = %d\n",
-- __func__, i, sr->sen[i].init_volt_mv);
-+ dev_dbg(&sr->pdev->dev, "%s: regulator %d, init_volt = %d\n",
-+ __func__, i, sr->sen[i].init_volt_mv);
-
- if (sr_clk_enable(sr, i))
-- return;
-+ return;
- sr_configure(sr, i);
- sr_enable(sr, i);
- }
-
-- sr->autocomp_active = 1;
-+ sr->autocomp_active = true;
- }
-
- /* sr_stop_vddautocomp - Stop VDD auto compensation
-@@ -477,22 +539,22 @@ static void sr_stop_vddautocomp(struct am33xx_sr *sr)
- {
- int i;
-
-- if (sr->autocomp_active == 0) {
-+ if (!sr->autocomp_active) {
- dev_warn(&sr->pdev->dev, "SR VDD autocomp is not active\n");
- return;
- }
-
-- /* cancel bottom half interrupt handlers that haven't run yet */
-+ /* cancel bottom half interrupt handlers that haven't run yet */
- cancel_delayed_work_sync(&sr->work);
-
- for (i = 0; i < sr->no_of_sens; i++) {
-- /* cancel any outstanding SR IRQ re-enables on work queue */
-- cancel_delayed_work_sync(&sr->sen[i].work_reenable);
-+ /* cancel any outstanding SR IRQ re-enables on work queue */
-+ cancel_delayed_work_sync(&sr->sen[i].work_reenable);
- sr_disable(sr, i);
- sr_clk_disable(sr, i);
- }
-
-- sr->autocomp_active = 0;
-+ sr->autocomp_active = false;
- }
-
- /* am33xx_sr_autocomp_show - Store user input value and stop SR
-@@ -513,7 +575,8 @@ static int am33xx_sr_autocomp_show(void *data, u64 *val)
-
- static int am33xx_sr_margin_show(void *data, u64 *val)
- {
-- struct am33xx_sr_opp_data *sr_opp_data = (struct am33xx_sr_opp_data *)data;
-+ struct am33xx_sr_opp_data *sr_opp_data =
-+ (struct am33xx_sr_opp_data *)data;
-
- *val = (u64) sr_opp_data->margin;
-
-@@ -522,35 +585,35 @@ static int am33xx_sr_margin_show(void *data, u64 *val)
-
- static int am33xx_sr_margin_update(void *data, u64 val)
- {
-- struct am33xx_sr_opp_data *sr_opp_data =
-- (struct am33xx_sr_opp_data *)data;
-- struct am33xx_sr_sensor *sr_sensor;
-- struct am33xx_sr *sr_info;
-+ struct am33xx_sr_opp_data *sr_opp_data =
-+ (struct am33xx_sr_opp_data *)data;
-+ struct am33xx_sr_sensor *sr_sensor;
-+ struct am33xx_sr *sr_info;
-
-- /* work back to the sr_info pointer */
-- sr_sensor = container_of((void *)sr_opp_data, struct am33xx_sr_sensor,
-- opp_data[sr_opp_data->opp_id]);
-+ /* work back to the sr_info pointer */
-+ sr_sensor = container_of((void *)sr_opp_data, struct am33xx_sr_sensor,
-+ opp_data[sr_opp_data->opp_id]);
-
-- sr_info = container_of((void *)sr_sensor, struct am33xx_sr,
-- sen[sr_sensor->sr_id]);
-+ sr_info = container_of((void *)sr_sensor, struct am33xx_sr,
-+ sen[sr_sensor->sr_id]);
-
-- /* store the value of margin */
-- sr_opp_data->margin = (s32)val;
-+ /* store the value of margin */
-+ sr_opp_data->margin = (s32)val;
-
-- dev_warn(&sr_info->pdev->dev, "%s: new margin=%d, srid=%d, opp=%d\n",
-- __func__, sr_opp_data->margin, sr_sensor->sr_id,
-- sr_opp_data->opp_id);
-+ dev_warn(&sr_info->pdev->dev, "%s: new margin=%d, srid=%d, opp=%d\n",
-+ __func__, sr_opp_data->margin, sr_sensor->sr_id,
-+ sr_opp_data->opp_id);
-
-- /* updata ntarget values based upon new margin */
-- if (sr_set_nvalues(sr_info, sr_sensor->sr_id) == -EINVAL)
-- dev_err(&sr_info->pdev->dev,
-- "%s: Zero NValue read from EFUSE\n", __func__);
-+ /* updata ntarget values based upon new margin */
-+ if (sr_set_nvalues(sr_info, sr_sensor->sr_id) == -EINVAL)
-+ dev_err(&sr_info->pdev->dev,
-+ "%s: Zero NValue read from EFUSE\n", __func__);
-
-- /* restart SmartReflex to adapt to new values */
-- sr_stop_vddautocomp(sr_info);
-- sr_start_vddautocomp(sr_info);
-+ /* restart SmartReflex to adapt to new values */
-+ sr_stop_vddautocomp(sr_info);
-+ sr_start_vddautocomp(sr_info);
-
-- return 0;
-+ return 0;
- }
-
- /* am33xx_sr_autocomp_store - Store user input and start SR
-@@ -564,21 +627,25 @@ static int am33xx_sr_autocomp_store(void *data, u64 val)
- {
- struct am33xx_sr *sr_info = (struct am33xx_sr *) data;
-
-+ if (sr_info->is_suspended) {
-+ pr_warning("%s: in suspended state\n", __func__);
-+ return -EBUSY;
-+ }
-+
- /* Sanity check */
- if (val && (val != 1)) {
- dev_warn(&sr_info->pdev->dev, "%s: Invalid argument %llu\n",
-- __func__, val);
-+ __func__, val);
- return -EINVAL;
- }
-
- if (!val) {
-- sr_info->disabled_by_user = 1;
-+ sr_info->disabled_by_user = true;
- sr_stop_vddautocomp(sr_info);
-- }
-- else {
-- sr_info->disabled_by_user = 0;
-+ } else {
-+ sr_info->disabled_by_user = false;
- sr_start_vddautocomp(sr_info);
-- }
-+ }
-
- return 0;
- }
-@@ -618,7 +685,7 @@ DEFINE_SIMPLE_ATTRIBUTE(margin_fops, am33xx_sr_margin_show,
- */
- static int sr_debugfs_entries(struct am33xx_sr *sr_info)
- {
-- struct am33xx_sr_sensor *sens;
-+ struct am33xx_sr_sensor *sens;
- struct dentry *dbg_dir, *sen_dir, *opp_dir;
- int i, j;
-
-@@ -629,13 +696,13 @@ static int sr_debugfs_entries(struct am33xx_sr *sr_info)
- return PTR_ERR(dbg_dir);
- }
-
-- (void) debugfs_create_file("autocomp", S_IRUGO | S_IWUGO, dbg_dir,
-+ (void) debugfs_create_file("autocomp", S_IRUGO | S_IWUSR, dbg_dir,
- (void *)sr_info, &sr_fops);
-- (void) debugfs_create_u32("interrupt_delay", S_IRUGO | S_IWUGO,
-+ (void) debugfs_create_u32("interrupt_delay", S_IRUGO | S_IWUSR,
- dbg_dir, &sr_info->irq_delay);
-
- for (i = 0; i < sr_info->no_of_sens; i++) {
-- sens = &sr_info->sen[i];
-+ sens = &sr_info->sen[i];
- sen_dir = debugfs_create_dir(sens->name, dbg_dir);
- if (IS_ERR(sen_dir)) {
- dev_err(&sr_info->pdev->dev, "%s: Unable to create"
-@@ -643,37 +710,37 @@ static int sr_debugfs_entries(struct am33xx_sr *sr_info)
- return PTR_ERR(sen_dir);
- }
-
-- (void)debugfs_create_u32("initial_voltage", S_IRUGO, sen_dir,
-+ (void)debugfs_create_u32("initial_voltage", S_IRUGO, sen_dir,
- &sens->init_volt_mv);
-- (void)debugfs_create_file("current_voltage", S_IRUGO, sen_dir,
-+ (void)debugfs_create_file("current_voltage", S_IRUGO, sen_dir,
- (void *)sens, &curr_volt_fops);
-
-- for (j = 0; j < sr_info->sen[i].no_of_opps; j++) {
-- char tmp[20];
--
-- sprintf(&tmp[0], "opp%d", j);
-- opp_dir = debugfs_create_dir(tmp, sen_dir);
-- if (IS_ERR(opp_dir)) {
-- dev_err(&sr_info->pdev->dev,
-- "%s: Unable to create debugfs directory\n",
-- __func__);
-- return PTR_ERR(opp_dir);
-- }
--
-- (void)debugfs_create_file("margin", S_IRUGO | S_IWUGO,
-- opp_dir, (void *)&sens->opp_data[j],
-- &margin_fops);
-- (void)debugfs_create_x32("err2voltgain",
-- S_IRUGO | S_IWUGO,
-- opp_dir,
-- &sens->opp_data[j].e2v_gain);
-- (void)debugfs_create_x32("nvalue", S_IRUGO,
-- opp_dir,
-- &sens->opp_data[j].nvalue);
-- (void)debugfs_create_x32("adj_nvalue", S_IRUGO,
-- opp_dir,
-- &sens->opp_data[j].adj_nvalue);
-- }
-+ for (j = 0; j < sr_info->sen[i].no_of_opps; j++) {
-+ char tmp[20];
-+
-+ sprintf(&tmp[0], "opp%d", j);
-+ opp_dir = debugfs_create_dir(tmp, sen_dir);
-+ if (IS_ERR(opp_dir)) {
-+ dev_err(&sr_info->pdev->dev,
-+ "%s: Unable to create debugfs directory\n",
-+ __func__);
-+ return PTR_ERR(opp_dir);
-+ }
-+
-+ (void)debugfs_create_file("margin", S_IRUGO | S_IWUSR,
-+ opp_dir, (void *)&sens->opp_data[j],
-+ &margin_fops);
-+ (void)debugfs_create_x32("err2voltgain",
-+ S_IRUGO | S_IWUSR,
-+ opp_dir,
-+ &sens->opp_data[j].e2v_gain);
-+ (void)debugfs_create_x32("nvalue", S_IRUGO,
-+ opp_dir,
-+ &sens->opp_data[j].nvalue);
-+ (void)debugfs_create_x32("adj_nvalue", S_IRUGO,
-+ opp_dir,
-+ &sens->opp_data[j].adj_nvalue);
-+ }
- }
- return 0;
- }
-@@ -688,51 +755,64 @@ static int sr_debugfs_entries(struct am33xx_sr *sr_info)
-
- /* Find and return current OPP. This should change to use system APIs,
- but voltdm is not currently populated, and opp APIs are also not working. */
--static int get_current_opp(struct am33xx_sr *sr, u32 srid, u32 freq) {
-- int i;
-+static int get_current_opp(struct am33xx_sr *sr, u32 srid, u32 freq)
-+{
-+ int i;
-
-- for (i = 0; i < sr->sen[srid].no_of_opps; i++) {
-- if (sr->sen[srid].opp_data[i].frequency == freq)
-- return i;
-- }
-+ for (i = 0; i < sr->sen[srid].no_of_opps; i++) {
-+ if (sr->sen[srid].opp_data[i].frequency == freq)
-+ return i;
-+ }
-
-- return -EINVAL;
-+ return -EINVAL;
- }
-
- static int am33xx_sr_cpufreq_transition(struct notifier_block *nb,
- unsigned long val, void *data)
- {
-- struct am33xx_sr *sr;
-- struct cpufreq_freqs *cpu;
-+ struct am33xx_sr *sr;
-+ struct cpufreq_freqs *cpu;
-
- sr = container_of(nb, struct am33xx_sr, freq_transition);
-
-- /* We are required to disable SR while OPP change is occurring */
-+ /* We are required to disable SR while OPP change is occurring */
- if (val == CPUFREQ_PRECHANGE) {
-- dev_dbg(&sr->pdev->dev, "%s: prechange\n", __func__);
-- sr_stop_vddautocomp(sr);
-+ dev_dbg(&sr->pdev->dev, "%s: prechange\n", __func__);
-+
-+ printk(KERN_DEBUG "%s: prechange\n", __func__);
-+
-+ sr_stop_vddautocomp(sr);
-+
- } else if (val == CPUFREQ_POSTCHANGE) {
-- cpu = (struct cpufreq_freqs *)data;
-- dev_dbg(&sr->pdev->dev,
-- "%s: postchange, cpu=%d, old=%d, new=%d\n",
-- __func__, cpu->cpu, cpu->old, cpu->new);
--
-- /* update current OPP */
-- sr->sen[SR_MPU].curr_opp = get_current_opp(sr, SR_MPU,
-- cpu->new*1000);
-- if (sr->sen[SR_MPU].curr_opp == -EINVAL) {
-- dev_err(&sr->pdev->dev, "%s: cannot determine opp\n",
-- __func__);
-- return -EINVAL;
-- }
--
-- dev_dbg(&sr->pdev->dev, "%s: postchange, new opp=%d\n",
-- __func__, sr->sen[SR_MPU].curr_opp);
--
-- /* this handles the case when the user has disabled SR via
-- debugfs, therefore we do not want to enable SR */
-- if (sr->disabled_by_user == 0)
-- sr_start_vddautocomp(sr);
-+ cpu = (struct cpufreq_freqs *)data;
-+ dev_dbg(&sr->pdev->dev,
-+ "%s: postchange, cpu=%d, old=%d, new=%d\n",
-+ __func__, cpu->cpu, cpu->old, cpu->new);
-+
-+ printk(KERN_DEBUG "%s: postchange\n", __func__);
-+
-+ /* update current OPP */
-+ sr->sen[SR_MPU].curr_opp = get_current_opp(sr, SR_MPU,
-+ cpu->new*1000);
-+ if (sr->sen[SR_MPU].curr_opp == -EINVAL) {
-+ dev_err(&sr->pdev->dev, "%s: cannot determine opp\n",
-+ __func__);
-+ return -EINVAL;
-+ }
-+
-+ dev_dbg(&sr->pdev->dev, "%s: postchange, new opp=%d\n",
-+ __func__, sr->sen[SR_MPU].curr_opp);
-+
-+ /* reset the voltage calculation algorithm for MPU */
-+ get_errvolt(sr, SR_MPU, 0, 1);
-+
-+ /* this handles the case when the user has disabled SR via
-+ debugfs, therefore we do not want to enable SR */
-+ if (sr->disabled_by_user == false) {
-+ printk(KERN_DEBUG "%s: postchange, new opp=%d\n",
-+ __func__, sr->sen[SR_MPU].curr_opp);
-+ sr_start_vddautocomp(sr);
-+ }
- }
-
- return 0;
-@@ -740,7 +820,7 @@ static int am33xx_sr_cpufreq_transition(struct notifier_block *nb,
-
- static inline int am33xx_sr_cpufreq_register(struct am33xx_sr *sr)
- {
-- sr->freq_transition.notifier_call = am33xx_sr_cpufreq_transition;
-+ sr->freq_transition.notifier_call = am33xx_sr_cpufreq_transition;
-
- return cpufreq_register_notifier(&sr->freq_transition,
- CPUFREQ_TRANSITION_NOTIFIER);
-@@ -754,6 +834,67 @@ static inline void am33xx_sr_cpufreq_deregister(struct am33xx_sr *sr)
-
- #endif
-
-+static void print_die_id(void)
-+{
-+ writel(0xF47765F2, AM33XX_CTRL_REGADDR(0x1828));
-+ writel(0x703E6C3D, AM33XX_CTRL_REGADDR(0x1844));
-+ writel(0x3724C7D6, AM33XX_CTRL_REGADDR(0x182C));
-+ writel(0x7A733E49, AM33XX_CTRL_REGADDR(0x184C));
-+
-+ printk(KERN_DEBUG "DIEID: %08x %08x %08x %08x\n",
-+ readl(AM33XX_CTRL_REGADDR(0x183C)),
-+ readl(AM33XX_CTRL_REGADDR(0x1848)),
-+ readl(AM33XX_CTRL_REGADDR(0x1824)),
-+ readl(AM33XX_CTRL_REGADDR(0x1850)));
-+
-+ printk(KERN_DEBUG "EFUSE SMA register val = %08x\n",
-+ readl(AM33XX_CTRL_REGADDR(0x7fc)));
-+}
-+
-+static int am33xx_sr_suspend(struct device *dev)
-+{
-+ if (global_sr_info == NULL)
-+ return -EINVAL;
-+
-+ /* if we are already disabled or suspended, do nothing */
-+ if (global_sr_info->disabled_by_user)
-+ return 0;
-+
-+ if (global_sr_info->is_suspended)
-+ return 0;
-+
-+#ifdef CONFIG_CPU_FREQ
-+ am33xx_sr_cpufreq_deregister(global_sr_info);
-+#endif
-+ sr_stop_vddautocomp(global_sr_info);
-+ global_sr_info->is_suspended = true;
-+
-+ return 0;
-+}
-+
-+static int am33xx_sr_resume(struct device *dev)
-+{
-+ if (global_sr_info == NULL)
-+ return -EINVAL;
-+
-+ /* ensure we don't enable SR if it was disabled before suspend */
-+ if (global_sr_info->disabled_by_user)
-+ return 0;
-+
-+ if (!global_sr_info->is_suspended)
-+ return 0;
-+
-+ global_sr_info->is_suspended = false;
-+ sr_start_vddautocomp(global_sr_info);
-+
-+#ifdef CONFIG_CPU_FREQ
-+ if (am33xx_sr_cpufreq_register(global_sr_info)) {
-+ printk(KERN_ERR "failed to register cpufreq\n");
-+ }
-+#endif
-+ return 0;
-+}
-+
- static int __init am33xx_sr_probe(struct platform_device *pdev)
- {
- struct am33xx_sr *sr_info;
-@@ -761,13 +902,9 @@ static int __init am33xx_sr_probe(struct platform_device *pdev)
- struct resource *res[MAX_SENSORS];
- int irq;
- int ret;
-- int i,j;
-+ int i, j;
-
-- if (omap_rev() != AM335X_REV_ES1_0) {
-- dev_err(&pdev->dev, "%s: Smartreflex requires ES 1.0\n",
-- __func__);
-- return -EINVAL;
-- }
-+ print_die_id();
-
- sr_info = kzalloc(sizeof(struct am33xx_sr), GFP_KERNEL);
- if (!sr_info) {
-@@ -776,6 +913,8 @@ static int __init am33xx_sr_probe(struct platform_device *pdev)
- return -ENOMEM;
- }
-
-+ global_sr_info = sr_info;
-+
- pdata = pdev->dev.platform_data;
- if (!pdata) {
- dev_err(&pdev->dev, "%s: platform data missing\n", __func__);
-@@ -787,77 +926,77 @@ static int __init am33xx_sr_probe(struct platform_device *pdev)
- sr_info->sen[SR_CORE].name = "smartreflex0";
- sr_info->sen[SR_MPU].name = "smartreflex1";
- sr_info->ip_type = pdata->ip_type;
-- sr_info->irq_delay = pdata->irq_delay;
-- sr_info->no_of_sens = pdata->no_of_sens;
-- sr_info->no_of_vds = pdata->no_of_vds;
-+ sr_info->irq_delay = pdata->irq_delay;
-+ sr_info->no_of_sens = pdata->no_of_sens;
-+ sr_info->no_of_vds = pdata->no_of_vds;
- sr_info->uvoltage_step_size = pdata->vstep_size_uv;
- sr_info->autocomp_active = false;
-- sr_info->disabled_by_user = false;
-+ sr_info->disabled_by_user = false;
-
- for (i = 0; i < sr_info->no_of_sens; i++) {
-- u32 curr_freq=0;
--
-- sr_info->sen[i].reg_name = pdata->vd_name[i];
--
-- /* this should be determined from voltdm or opp layer, but
-- those approaches are not working */
-- sr_info->sen[i].no_of_opps = pdata->sr_sdata[i].no_of_opps;
-- sr_info->sen[i].sr_id = i;
--
-- /* Reading per OPP Values */
-- for (j = 0; j < sr_info->sen[i].no_of_opps; j++) {
-- sr_info->sen[i].opp_data[j].efuse_offs =
-- pdata->sr_sdata[i].sr_opp_data[j].efuse_offs;
-- sr_info->sen[i].opp_data[j].e2v_gain =
-- pdata->sr_sdata[i].sr_opp_data[j].e2v_gain;
-- sr_info->sen[i].opp_data[j].err_weight =
-- pdata->sr_sdata[i].sr_opp_data[j].err_weight;
-- sr_info->sen[i].opp_data[j].err_minlimit =
-- pdata->sr_sdata[i].sr_opp_data[j].err_minlimit;
-- sr_info->sen[i].opp_data[j].err_maxlimit =
-- pdata->sr_sdata[i].sr_opp_data[j].err_maxlimit;
-- sr_info->sen[i].opp_data[j].margin =
-- pdata->sr_sdata[i].sr_opp_data[j].margin;
-- sr_info->sen[i].opp_data[j].nominal_volt =
-- pdata->sr_sdata[i].sr_opp_data[j].nominal_volt;
-- sr_info->sen[i].opp_data[j].frequency =
-- pdata->sr_sdata[i].sr_opp_data[j].frequency;
-- sr_info->sen[i].opp_data[j].opp_id = j;
-- }
--
-- if (i == SR_MPU) {
-- /* hardcoded CPU NR */
-- curr_freq = cpufreq_get(0);
--
-- /* update current OPP */
-- sr_info->sen[i].curr_opp = get_current_opp(sr_info, i,
-- curr_freq*1000);
-- if (sr_info->sen[i].curr_opp == -EINVAL) {
-- dev_err(&sr_info->pdev->dev,
-- "%s: cannot determine opp\n",__func__);
-- ret = -EINVAL;
-- goto err_free_sr_info;
-- }
-- } else {
-- sr_info->sen[i].curr_opp =
-- pdata->sr_sdata[i].default_opp;
-- }
--
-- dev_dbg(&pdev->dev,
-- "%s: SR%d, curr_opp=%d, no_of_opps=%d, step_size=%d\n",
-- __func__, i, sr_info->sen[i].curr_opp,
-- sr_info->sen[i].no_of_opps,
-- sr_info->uvoltage_step_size);
--
-- ret = sr_set_nvalues(sr_info, i);
-- if (ret == -EINVAL) {
-- dev_err(&sr_info->pdev->dev,
-- "%s: Zero NValue read from EFUSE\n", __func__);
-- goto err_free_sr_info;
-- }
--
-- INIT_DELAYED_WORK(&sr_info->sen[i].work_reenable,
-- irq_sr_reenable);
-+ u32 curr_freq = 0;
-+
-+ sr_info->sen[i].reg_name = pdata->vd_name[i];
-+
-+ /* this should be determined from voltdm or opp layer, but
-+ those approaches are not working */
-+ sr_info->sen[i].no_of_opps = pdata->sr_sdata[i].no_of_opps;
-+ sr_info->sen[i].sr_id = i;
-+
-+ /* Reading per OPP Values */
-+ for (j = 0; j < sr_info->sen[i].no_of_opps; j++) {
-+ sr_info->sen[i].opp_data[j].efuse_offs =
-+ pdata->sr_sdata[i].sr_opp_data[j].efuse_offs;
-+ sr_info->sen[i].opp_data[j].e2v_gain =
-+ pdata->sr_sdata[i].sr_opp_data[j].e2v_gain;
-+ sr_info->sen[i].opp_data[j].err_weight =
-+ pdata->sr_sdata[i].sr_opp_data[j].err_weight;
-+ sr_info->sen[i].opp_data[j].err_minlimit =
-+ pdata->sr_sdata[i].sr_opp_data[j].err_minlimit;
-+ sr_info->sen[i].opp_data[j].err_maxlimit =
-+ pdata->sr_sdata[i].sr_opp_data[j].err_maxlimit;
-+ sr_info->sen[i].opp_data[j].margin =
-+ pdata->sr_sdata[i].sr_opp_data[j].margin;
-+ sr_info->sen[i].opp_data[j].nominal_volt =
-+ pdata->sr_sdata[i].sr_opp_data[j].nominal_volt;
-+ sr_info->sen[i].opp_data[j].frequency =
-+ pdata->sr_sdata[i].sr_opp_data[j].frequency;
-+ sr_info->sen[i].opp_data[j].opp_id = j;
-+ }
-+
-+ if (i == SR_MPU) {
-+ /* hardcoded CPU NR */
-+ curr_freq = cpufreq_get(0);
-+
-+ /* update current OPP */
-+ sr_info->sen[i].curr_opp = get_current_opp(sr_info, i,
-+ curr_freq*1000);
-+ if (sr_info->sen[i].curr_opp == -EINVAL) {
-+ dev_err(&sr_info->pdev->dev,
-+ "%s: cannot determine opp\n", __func__);
-+ ret = -EINVAL;
-+ goto err_free_sr_info;
-+ }
-+ } else {
-+ sr_info->sen[i].curr_opp =
-+ pdata->sr_sdata[i].default_opp;
-+ }
-+
-+ dev_dbg(&pdev->dev,
-+ "%s: SR%d, curr_opp=%d, no_of_opps=%d, step_size=%d\n",
-+ __func__, i, sr_info->sen[i].curr_opp,
-+ sr_info->sen[i].no_of_opps,
-+ sr_info->uvoltage_step_size);
-+
-+ ret = sr_set_nvalues(sr_info, i);
-+ if (ret == -EINVAL) {
-+ dev_err(&sr_info->pdev->dev,
-+ "%s: Zero NValue read from EFUSE\n", __func__);
-+ goto err_free_sr_info;
-+ }
-+
-+ INIT_DELAYED_WORK(&sr_info->sen[i].work_reenable,
-+ irq_sr_reenable);
-
- sr_info->res_name[i] = kzalloc(CLK_NAME_LEN + 1, GFP_KERNEL);
-
-@@ -907,7 +1046,7 @@ static int __init am33xx_sr_probe(struct platform_device *pdev)
-
- ret = request_irq(sr_info->sen[i].irq, sr_class2_irq,
- IRQF_DISABLED, sr_info->sen[i].name,
-- (void *)&sr_info->sen[i]);
-+ (void *)&sr_info->sen[i]);
- if (ret) {
- dev_err(&pdev->dev, "%s: Could not install SR ISR\n",
- __func__);
-@@ -917,22 +1056,22 @@ static int __init am33xx_sr_probe(struct platform_device *pdev)
- sr_info->sen[i].senn_en = pdata->sr_sdata[i].senn_mod;
- sr_info->sen[i].senp_en = pdata->sr_sdata[i].senp_mod;
-
-- sr_info->sen[i].reg =
-- regulator_get(NULL, sr_info->sen[i].reg_name);
-- if (IS_ERR(sr_info->sen[i].reg)) {
-- ret = -EINVAL;
-- goto err_free_irq;
-- }
-+ sr_info->sen[i].reg =
-+ regulator_get(NULL, sr_info->sen[i].reg_name);
-+ if (IS_ERR(sr_info->sen[i].reg)) {
-+ ret = -EINVAL;
-+ goto err_free_irq;
-+ }
-
-- /* Read current regulator value and voltage */
-- sr_info->sen[i].init_volt_mv =
-- regulator_get_voltage(sr_info->sen[i].reg);
-+ /* Read current regulator value and voltage */
-+ sr_info->sen[i].init_volt_mv =
-+ regulator_get_voltage(sr_info->sen[i].reg);
-
-- dev_dbg(&pdev->dev, "%s: regulator %d, init_volt = %d\n",
-- __func__, i, sr_info->sen[i].init_volt_mv);
-+ dev_dbg(&pdev->dev, "%s: regulator %d, init_volt = %d\n",
-+ __func__, i, sr_info->sen[i].init_volt_mv);
- } /* for() */
-
-- /* set_voltage() will be used as the bottom half IRQ handler */
-+ /* set_voltage() will be used as the bottom half IRQ handler */
- INIT_DELAYED_WORK(&sr_info->work, set_voltage);
-
- #ifdef CONFIG_CPU_FREQ
-@@ -943,22 +1082,24 @@ static int __init am33xx_sr_probe(struct platform_device *pdev)
- }
- #endif
-
-+#ifdef CONFIG_DEBUG_FS
- /* debugfs entries */
- ret = sr_debugfs_entries(sr_info);
- if (ret)
- dev_warn(&pdev->dev, "%s: Debugfs entries are not created\n",
- __func__);
-+#endif
-
- platform_set_drvdata(pdev, sr_info);
-
- dev_info(&pdev->dev, "%s: Driver initialized\n", __func__);
-
-- /* disabled_by_user used to ensure SR doesn't come on via CPUFREQ
-- scaling if user has disabled SR via debugfs on enable_on_init */
-+ /* disabled_by_user used to ensure SR doesn't come on via CPUFREQ
-+ scaling if user has disabled SR via debugfs on enable_on_init */
- if (pdata->enable_on_init)
- sr_start_vddautocomp(sr_info);
-- else
-- sr_info->disabled_by_user = 1;
-+ else
-+ sr_info->disabled_by_user = true;
-
- return ret;
-
-@@ -967,8 +1108,8 @@ static int __init am33xx_sr_probe(struct platform_device *pdev)
- #endif
-
- err_reg_put:
-- i--; /* back up i by one to walk back through the for loop */
-- regulator_put(sr_info->sen[i].reg);
-+ i--; /* back up i by one to walk back through the for loop */
-+ regulator_put(sr_info->sen[i].reg);
- err_free_irq:
- free_irq(sr_info->sen[i].irq, (void *)sr_info);
- err_put_clock:
-@@ -978,11 +1119,10 @@ err_unmap:
- err_release_mem:
- release_mem_region(res[i]->start, resource_size(res[i]));
- err_free_mem:
-- kfree(sr_info->res_name[i]);
-- /* unwind back through the for loop */
-- if (i != 0) {
-- goto err_reg_put;
-- }
-+ kfree(sr_info->res_name[i]);
-+ /* unwind back through the for loop */
-+ if (i != 0)
-+ goto err_reg_put;
-
- err_free_sr_info:
- kfree(sr_info);
-@@ -1010,27 +1150,31 @@ static int __devexit am33xx_sr_remove(struct platform_device *pdev)
- #endif
-
- for (i = 0; i < sr_info->no_of_sens; i++) {
-- regulator_put(sr_info->sen[i].reg);
-- irq = platform_get_irq_byname(pdev, sr_info->sen[i].name);
-+ regulator_put(sr_info->sen[i].reg);
-+ irq = platform_get_irq_byname(pdev, sr_info->sen[i].name);
- free_irq(irq, (void *)sr_info);
- clk_put(sr_info->sen[i].fck);
- iounmap(sr_info->sen[i].base);
- res[i] = platform_get_resource_byname(pdev,
- IORESOURCE_MEM, sr_info->sen[i].name);
- release_mem_region(res[i]->start, resource_size(res[i]));
-- kfree(sr_info->res_name[i]);
-+ kfree(sr_info->res_name[i]);
- }
-
- kfree(sr_info);
-
-- dev_info(&pdev->dev, "%s: SR has been removed\n", __func__);
-+ dev_info(&pdev->dev, "%s: SR has been removed\n", __func__);
- return 0;
- }
-
-+static SIMPLE_DEV_PM_OPS(am33xx_sr_dev_pm_ops, am33xx_sr_suspend,
-+ am33xx_sr_resume);
-+
- static struct platform_driver smartreflex_driver = {
- .driver = {
- .name = "smartreflex",
- .owner = THIS_MODULE,
-+ .pm = &am33xx_sr_dev_pm_ops,
- },
- .remove = am33xx_sr_remove,
- };
-diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c
-index b524b47..8081818 100644
---- a/arch/arm/mach-omap2/devices.c
-+++ b/arch/arm/mach-omap2/devices.c
-@@ -1231,244 +1231,313 @@ static struct platform_device am335x_sgx = {
- /* The values below are based upon silicon characterization data.
- * Each OPP and sensor combination potentially has different values.
- * The values of ERR2VOLT_GAIN and ERR_MIN_LIMIT also change based on
-- * the PMIC step size. Values have been given to cover the AM335 EVM
-+ * the PMIC step size. Values have been given to cover the AM335 EVM
- * (12.5mV step) and the Beaglebone (25mV step). If the step
- * size changes, you should update these values, and don't forget to
- * change the step size in the platform data structure, am33xx_sr_pdata.
- */
-
--#define AM33XX_SR0_OPP50_CNTRL_OFFSET 0x07B8
--#define AM33XX_SR0_OPP50_EVM_ERR2VOLT_GAIN 0xC
--#define AM33XX_SR0_OPP50_EVM_ERR_MIN_LIMIT 0xF5
--#define AM33XX_SR0_OPP50_BB_ERR2VOLT_GAIN 0x6
--#define AM33XX_SR0_OPP50_BB_ERR_MIN_LIMIT 0xEA
--#define AM33XX_SR0_OPP50_ERR_MAX_LIMIT 0x2
--#define AM33XX_SR0_OPP50_ERR_WEIGHT 0x4
--#define AM33XX_SR0_OPP50_MARGIN 0
--
--#define AM33XX_SR0_OPP100_CNTRL_OFFSET 0x07BC
--#define AM33XX_SR0_OPP100_EVM_ERR2VOLT_GAIN 0x12
--#define AM33XX_SR0_OPP100_EVM_ERR_MIN_LIMIT 0xF8
--#define AM33XX_SR0_OPP100_BB_ERR2VOLT_GAIN 0x9
--#define AM33XX_SR0_OPP100_BB_ERR_MIN_LIMIT 0xF1
--#define AM33XX_SR0_OPP100_ERR_MAX_LIMIT 0x2
--#define AM33XX_SR0_OPP100_ERR_WEIGHT 0x4
--#define AM33XX_SR0_OPP100_MARGIN 0
--
--#define AM33XX_SR1_OPP50_CNTRL_OFFSET 0x0770
--#define AM33XX_SR1_OPP50_EVM_ERR2VOLT_GAIN 0x5
--#define AM33XX_SR1_OPP50_EVM_ERR_MIN_LIMIT 0xE6
--#define AM33XX_SR1_OPP50_BB_ERR2VOLT_GAIN 0x2
--#define AM33XX_SR1_OPP50_BB_ERR_MIN_LIMIT 0xC0
--#define AM33XX_SR1_OPP50_ERR_MAX_LIMIT 0x2
--#define AM33XX_SR1_OPP50_ERR_WEIGHT 0x4
--#define AM33XX_SR1_OPP50_MARGIN 0
--
--#define AM33XX_SR1_OPP100_CNTRL_OFFSET 0x0774
--#define AM33XX_SR1_OPP100_EVM_ERR2VOLT_GAIN 0x8
--#define AM33XX_SR1_OPP100_EVM_ERR_MIN_LIMIT 0xF0
--#define AM33XX_SR1_OPP100_BB_ERR2VOLT_GAIN 0x4
--#define AM33XX_SR1_OPP100_BB_ERR_MIN_LIMIT 0xDF
--#define AM33XX_SR1_OPP100_ERR_MAX_LIMIT 0x2
--#define AM33XX_SR1_OPP100_ERR_WEIGHT 0x4
--#define AM33XX_SR1_OPP100_MARGIN 0
--
--#define AM33XX_SR1_OPP120_CNTRL_OFFSET 0x0778
--#define AM33XX_SR1_OPP120_EVM_ERR2VOLT_GAIN 0xB
--#define AM33XX_SR1_OPP120_EVM_ERR_MIN_LIMIT 0xF4
--#define AM33XX_SR1_OPP120_BB_ERR2VOLT_GAIN 0x5
--#define AM33XX_SR1_OPP120_BB_ERR_MIN_LIMIT 0xE6
--#define AM33XX_SR1_OPP120_ERR_MAX_LIMIT 0x2
--#define AM33XX_SR1_OPP120_ERR_WEIGHT 0x4
--#define AM33XX_SR1_OPP120_MARGIN 0
--
--#define AM33XX_SR1_OPPTURBO_CNTRL_OFFSET 0x077C
--#define AM33XX_SR1_OPPTURBO_EVM_ERR2VOLT_GAIN 0xC
--#define AM33XX_SR1_OPPTURBO_EVM_ERR_MIN_LIMIT 0xF5
--#define AM33XX_SR1_OPPTURBO_BB_ERR2VOLT_GAIN 0x6
--#define AM33XX_SR1_OPPTURBO_BB_ERR_MIN_LIMIT 0xEA
--#define AM33XX_SR1_OPPTURBO_ERR_MAX_LIMIT 0x2
--#define AM33XX_SR1_OPPTURBO_ERR_WEIGHT 0x4
--#define AM33XX_SR1_OPPTURBO_MARGIN 0
-+#define AM33XX_SR0_OPP50_CNTRL_OFFSET 0x07B8
-+#define AM33XX_SR0_OPP50_EVM_ERR_MIN_LIMIT 0xF0
-+#define AM33XX_SR0_OPP50_BB_ERR_MIN_LIMIT 0xEA
-+#define AM33XX_SR0_OPP50_ERR_MAX_LIMIT 0x2
-+#define AM33XX_SR0_OPP50_ERR_WEIGHT 0x4
-+#define AM33XX_SR0_OPP50_MARGIN 0
-+
-+#define AM33XX_SR0_OPP100_CNTRL_OFFSET 0x07BC
-+#define AM33XX_SR0_OPP100_EVM_ERR_MIN_LIMIT 0xF0
-+#define AM33XX_SR0_OPP100_BB_ERR_MIN_LIMIT 0xF1
-+#define AM33XX_SR0_OPP100_ERR_MAX_LIMIT 0x2
-+#define AM33XX_SR0_OPP100_ERR_WEIGHT 0x4
-+#define AM33XX_SR0_OPP100_MARGIN 0
-+
-+#define AM33XX_SR1_OPP50_CNTRL_OFFSET 0x0770
-+#define AM33XX_SR1_OPP50_EVM_ERR_MIN_LIMIT 0xFA
-+#define AM33XX_SR1_OPP50_BB_ERR_MIN_LIMIT 0xC0
-+#define AM33XX_SR1_OPP50_ERR_MAX_LIMIT 0x2
-+#define AM33XX_SR1_OPP50_ERR_WEIGHT 0x4
-+#define AM33XX_SR1_OPP50_MARGIN 0
-+
-+#define AM33XX_SR1_OPP100_CNTRL_OFFSET 0x0774
-+#define AM33XX_SR1_OPP100_EVM_ERR_MIN_LIMIT 0xFB
-+#define AM33XX_SR1_OPP100_BB_ERR_MIN_LIMIT 0xDF
-+#define AM33XX_SR1_OPP100_ERR_MAX_LIMIT 0x2
-+#define AM33XX_SR1_OPP100_ERR_WEIGHT 0x4
-+#define AM33XX_SR1_OPP100_MARGIN 0
-+
-+#define AM33XX_SR1_OPP120_CNTRL_OFFSET 0x0778
-+#define AM33XX_SR1_OPP120_EVM_ERR_MIN_LIMIT 0xFC
-+#define AM33XX_SR1_OPP120_BB_ERR_MIN_LIMIT 0xE6
-+#define AM33XX_SR1_OPP120_ERR_MAX_LIMIT 0x2
-+#define AM33XX_SR1_OPP120_ERR_WEIGHT 0x7
-+#define AM33XX_SR1_OPP120_MARGIN 0
-+
-+#define AM33XX_SR1_OPPTURBO_CNTRL_OFFSET 0x077C
-+#define AM33XX_SR1_OPPTURBO_EVM_ERR_MIN_LIMIT 0xFD
-+#define AM33XX_SR1_OPPTURBO_BB_ERR_MIN_LIMIT 0xEA
-+#define AM33XX_SR1_OPPTURBO_ERR_MAX_LIMIT 0x2
-+#define AM33XX_SR1_OPPTURBO_ERR_WEIGHT 0x7
-+#define AM33XX_SR1_OPPTURBO_MARGIN 0
-+
-+/* bits 31:16 = SenP margin; bit 15:0 = SenN margin */
-+
-+#define AM33XX_SR1_OPPNITRO_MARGIN 0x018B019A
-
- /* the voltages and frequencies should probably be defined in opp3xxx_data.c.
- Once SR is integrated to the mainline driver, and voltdm is working
- correctly in AM335x, these can be removed. */
--#define AM33XX_VDD_MPU_OPP50_UV 950000
--#define AM33XX_VDD_MPU_OPP100_UV 1100000
--#define AM33XX_VDD_MPU_OPP120_UV 1200000
--#define AM33XX_VDD_MPU_OPPTURBO_UV 1260000
--#define AM33XX_VDD_CORE_OPP50_UV 950000
--#define AM33XX_VDD_CORE_OPP100_UV 1100000
--
--#define AM33XX_VDD_MPU_OPP50_FREQ 275000000
--#define AM33XX_VDD_MPU_OPP100_FREQ 500000000
--#define AM33XX_VDD_MPU_OPP120_FREQ 600000000
--#define AM33XX_VDD_MPU_OPPTURBO_FREQ 720000000
-+#define AM33XX_VDD_MPU_OPP50_UV 950000
-+#define AM33XX_VDD_MPU_OPP100_UV 1100000
-+#define AM33XX_VDD_MPU_OPP120_UV 1200000
-+#define AM33XX_VDD_MPU_OPPTURBO_UV 1260000
-+#define AM33XX_VDD_CORE_OPP50_UV 950000
-+#define AM33XX_VDD_CORE_OPP100_UV 1100000
-+
-+#define AM33XX_VDD_MPU_OPP50_FREQ 275000000
-+#define AM33XX_VDD_MPU_OPP100_FREQ 500000000
-+#define AM33XX_VDD_MPU_OPP120_FREQ 600000000
-+#define AM33XX_VDD_MPU_OPPTURBO_FREQ 720000000
-+
-+#define AM33XX_ES2_0_VDD_MPU_OPP50_UV 950000
-+#define AM33XX_ES2_0_VDD_MPU_OPP100_UV 1100000
-+#define AM33XX_ES2_0_VDD_MPU_OPP120_UV 1200000
-+#define AM33XX_ES2_0_VDD_MPU_OPPTURBO_UV 1260000
-+#define AM33XX_ES2_0_VDD_MPU_OPPNITRO_UV 1320000
-+
-+#define AM33XX_ES2_0_VDD_MPU_OPP50_FREQ 300000000
-+#define AM33XX_ES2_0_VDD_MPU_OPP100_FREQ 600000000
-+#define AM33XX_ES2_0_VDD_MPU_OPP120_FREQ 720000000
-+#define AM33XX_ES2_0_VDD_MPU_OPPTURBO_FREQ 800000000
-+#define AM33XX_ES2_0_VDD_MPU_OPPNITRO_FREQ 1000000000
-+
-+static struct am33xx_sr_opp_data sr1_opp_data_2_0[] = {
-+ {
-+ .efuse_offs = AM33XX_SR1_OPP50_CNTRL_OFFSET,
-+ .e2v_gain = 0,
-+ .err_minlimit = AM33XX_SR1_OPP50_EVM_ERR_MIN_LIMIT,
-+ .err_maxlimit = AM33XX_SR1_OPP50_ERR_MAX_LIMIT,
-+ .err_weight = AM33XX_SR1_OPP50_ERR_WEIGHT,
-+ .margin = AM33XX_SR1_OPP50_MARGIN,
-+ .nominal_volt = AM33XX_ES2_0_VDD_MPU_OPP50_UV,
-+ .frequency = AM33XX_ES2_0_VDD_MPU_OPP50_FREQ,
-+ },
-+ {
-+ .efuse_offs = AM33XX_SR1_OPP100_CNTRL_OFFSET,
-+ .e2v_gain = 0,
-+ .err_minlimit = AM33XX_SR1_OPP100_EVM_ERR_MIN_LIMIT,
-+ .err_maxlimit = AM33XX_SR1_OPP100_ERR_MAX_LIMIT,
-+ .err_weight = AM33XX_SR1_OPP100_ERR_WEIGHT,
-+ .margin = AM33XX_SR1_OPP100_MARGIN,
-+ .nominal_volt = AM33XX_ES2_0_VDD_MPU_OPP100_UV,
-+ .frequency = AM33XX_ES2_0_VDD_MPU_OPP100_FREQ,
-+ },
-+ {
-+ .efuse_offs = AM33XX_SR1_OPP120_CNTRL_OFFSET,
-+ .e2v_gain = 0,
-+ .err_minlimit = AM33XX_SR1_OPP120_EVM_ERR_MIN_LIMIT,
-+ .err_maxlimit = AM33XX_SR1_OPP120_ERR_MAX_LIMIT,
-+ .err_weight = AM33XX_SR1_OPP120_ERR_WEIGHT,
-+ .margin = AM33XX_SR1_OPP120_MARGIN,
-+ .nominal_volt = AM33XX_ES2_0_VDD_MPU_OPP120_UV,
-+ .frequency = AM33XX_ES2_0_VDD_MPU_OPP120_FREQ,
-+ },
-+ {
-+ .efuse_offs = AM33XX_SR1_OPPTURBO_CNTRL_OFFSET,
-+ .e2v_gain = 0,
-+ .err_minlimit = AM33XX_SR1_OPPTURBO_EVM_ERR_MIN_LIMIT,
-+ .err_maxlimit = AM33XX_SR1_OPPTURBO_ERR_MAX_LIMIT,
-+ .err_weight = AM33XX_SR1_OPPTURBO_ERR_WEIGHT,
-+ .margin = AM33XX_SR1_OPPTURBO_MARGIN,
-+ .nominal_volt = AM33XX_ES2_0_VDD_MPU_OPPTURBO_UV,
-+ .frequency = AM33XX_ES2_0_VDD_MPU_OPPTURBO_FREQ,
-+ },
-+ {
-+ /* NITRO can use the TURBO data, except for margin */
-+ .efuse_offs = AM33XX_SR1_OPPTURBO_CNTRL_OFFSET,
-+ .e2v_gain = 0,
-+ .err_minlimit = AM33XX_SR1_OPPTURBO_EVM_ERR_MIN_LIMIT,
-+ .err_maxlimit = AM33XX_SR1_OPPTURBO_ERR_MAX_LIMIT,
-+ .err_weight = AM33XX_SR1_OPPTURBO_ERR_WEIGHT,
-+ .margin = AM33XX_SR1_OPPNITRO_MARGIN,
-+ .nominal_volt = AM33XX_ES2_0_VDD_MPU_OPPNITRO_UV,
-+ .frequency = AM33XX_ES2_0_VDD_MPU_OPPNITRO_FREQ,
-+ },
-+};
-
- static struct am33xx_sr_opp_data sr1_opp_data[] = {
-- {
-- .efuse_offs = AM33XX_SR1_OPP50_CNTRL_OFFSET,
-- .e2v_gain = AM33XX_SR1_OPP50_EVM_ERR2VOLT_GAIN,
-- .err_minlimit = AM33XX_SR1_OPP50_EVM_ERR_MIN_LIMIT,
-- .err_maxlimit = AM33XX_SR1_OPP50_ERR_MAX_LIMIT,
-- .err_weight = AM33XX_SR1_OPP50_ERR_WEIGHT,
-- .margin = AM33XX_SR1_OPP50_MARGIN,
-- .nominal_volt = AM33XX_VDD_MPU_OPP50_UV,
-- .frequency = AM33XX_VDD_MPU_OPP50_FREQ,
-- },
-- {
-- .efuse_offs = AM33XX_SR1_OPP100_CNTRL_OFFSET,
-- .e2v_gain = AM33XX_SR1_OPP100_EVM_ERR2VOLT_GAIN,
-- .err_minlimit = AM33XX_SR1_OPP100_EVM_ERR_MIN_LIMIT,
-- .err_maxlimit = AM33XX_SR1_OPP100_ERR_MAX_LIMIT,
-- .err_weight = AM33XX_SR1_OPP100_ERR_WEIGHT,
-- .margin = AM33XX_SR1_OPP100_MARGIN,
-- .nominal_volt = AM33XX_VDD_MPU_OPP100_UV,
-- .frequency = AM33XX_VDD_MPU_OPP100_FREQ,
-- },
-- {
-- .efuse_offs = AM33XX_SR1_OPP120_CNTRL_OFFSET,
-- .e2v_gain = AM33XX_SR1_OPP120_EVM_ERR2VOLT_GAIN,
-- .err_minlimit = AM33XX_SR1_OPP120_EVM_ERR_MIN_LIMIT,
-- .err_maxlimit = AM33XX_SR1_OPP120_ERR_MAX_LIMIT,
-- .err_weight = AM33XX_SR1_OPP120_ERR_WEIGHT,
-- .margin = AM33XX_SR1_OPP120_MARGIN,
-- .nominal_volt = AM33XX_VDD_MPU_OPP120_UV,
-- .frequency = AM33XX_VDD_MPU_OPP120_FREQ,
-- },
-- {
-- .efuse_offs = AM33XX_SR1_OPPTURBO_CNTRL_OFFSET,
-- .e2v_gain = AM33XX_SR1_OPPTURBO_EVM_ERR2VOLT_GAIN,
-- .err_minlimit = AM33XX_SR1_OPPTURBO_EVM_ERR_MIN_LIMIT,
-- .err_maxlimit = AM33XX_SR1_OPPTURBO_ERR_MAX_LIMIT,
-- .err_weight = AM33XX_SR1_OPPTURBO_ERR_WEIGHT,
-- .margin = AM33XX_SR1_OPPTURBO_MARGIN,
-- .nominal_volt = AM33XX_VDD_MPU_OPPTURBO_UV,
-- .frequency = AM33XX_VDD_MPU_OPPTURBO_FREQ,
-- },
-+ {
-+ .efuse_offs = AM33XX_SR1_OPP50_CNTRL_OFFSET,
-+ .e2v_gain = 0,
-+ .err_minlimit = AM33XX_SR1_OPP50_EVM_ERR_MIN_LIMIT,
-+ .err_maxlimit = AM33XX_SR1_OPP50_ERR_MAX_LIMIT,
-+ .err_weight = AM33XX_SR1_OPP50_ERR_WEIGHT,
-+ .margin = AM33XX_SR1_OPP50_MARGIN,
-+ .nominal_volt = AM33XX_VDD_MPU_OPP50_UV,
-+ .frequency = AM33XX_VDD_MPU_OPP50_FREQ,
-+ },
-+ {
-+ .efuse_offs = AM33XX_SR1_OPP100_CNTRL_OFFSET,
-+ .e2v_gain = 0,
-+ .err_minlimit = AM33XX_SR1_OPP100_EVM_ERR_MIN_LIMIT,
-+ .err_maxlimit = AM33XX_SR1_OPP100_ERR_MAX_LIMIT,
-+ .err_weight = AM33XX_SR1_OPP100_ERR_WEIGHT,
-+ .margin = AM33XX_SR1_OPP100_MARGIN,
-+ .nominal_volt = AM33XX_VDD_MPU_OPP100_UV,
-+ .frequency = AM33XX_VDD_MPU_OPP100_FREQ,
-+ },
-+ {
-+ .efuse_offs = AM33XX_SR1_OPP120_CNTRL_OFFSET,
-+ .e2v_gain = 0,
-+ .err_minlimit = AM33XX_SR1_OPP120_EVM_ERR_MIN_LIMIT,
-+ .err_maxlimit = AM33XX_SR1_OPP120_ERR_MAX_LIMIT,
-+ .err_weight = AM33XX_SR1_OPP120_ERR_WEIGHT,
-+ .margin = AM33XX_SR1_OPP120_MARGIN,
-+ .nominal_volt = AM33XX_VDD_MPU_OPP120_UV,
-+ .frequency = AM33XX_VDD_MPU_OPP120_FREQ,
-+ },
-+ {
-+ .efuse_offs = AM33XX_SR1_OPPTURBO_CNTRL_OFFSET,
-+ .e2v_gain = 0,
-+ .err_minlimit = AM33XX_SR1_OPPTURBO_EVM_ERR_MIN_LIMIT,
-+ .err_maxlimit = AM33XX_SR1_OPPTURBO_ERR_MAX_LIMIT,
-+ .err_weight = AM33XX_SR1_OPPTURBO_ERR_WEIGHT,
-+ .margin = AM33XX_SR1_OPPTURBO_MARGIN,
-+ .nominal_volt = AM33XX_VDD_MPU_OPPTURBO_UV,
-+ .frequency = AM33XX_VDD_MPU_OPPTURBO_FREQ,
-+ },
- };
-
- static struct am33xx_sr_opp_data sr0_opp_data[] = {
-- {
-- .efuse_offs = AM33XX_SR0_OPP50_CNTRL_OFFSET,
-- .e2v_gain = AM33XX_SR0_OPP50_EVM_ERR2VOLT_GAIN,
-- .err_minlimit = AM33XX_SR0_OPP50_EVM_ERR_MIN_LIMIT,
-- .err_maxlimit = AM33XX_SR0_OPP50_ERR_MAX_LIMIT,
-- .err_weight = AM33XX_SR0_OPP50_ERR_WEIGHT,
-- .margin = AM33XX_SR0_OPP50_MARGIN,
-- .nominal_volt = AM33XX_VDD_CORE_OPP50_UV,
-- },
-- {
-- .efuse_offs = AM33XX_SR0_OPP100_CNTRL_OFFSET,
-- .e2v_gain = AM33XX_SR0_OPP100_EVM_ERR2VOLT_GAIN,
-- .err_minlimit = AM33XX_SR0_OPP100_EVM_ERR_MIN_LIMIT,
-- .err_maxlimit = AM33XX_SR0_OPP100_ERR_MAX_LIMIT,
-- .err_weight = AM33XX_SR0_OPP100_ERR_WEIGHT,
-- .margin = AM33XX_SR0_OPP100_MARGIN,
-- .nominal_volt = AM33XX_VDD_CORE_OPP100_UV,
-- },
-+ {
-+ .efuse_offs = AM33XX_SR0_OPP50_CNTRL_OFFSET,
-+ .e2v_gain = 0,
-+ .err_minlimit = AM33XX_SR0_OPP50_EVM_ERR_MIN_LIMIT,
-+ .err_maxlimit = AM33XX_SR0_OPP50_ERR_MAX_LIMIT,
-+ .err_weight = AM33XX_SR0_OPP50_ERR_WEIGHT,
-+ .margin = AM33XX_SR0_OPP50_MARGIN,
-+ .nominal_volt = AM33XX_VDD_CORE_OPP50_UV,
-+ },
-+ {
-+ .efuse_offs = AM33XX_SR0_OPP100_CNTRL_OFFSET,
-+ .e2v_gain = 0,
-+ .err_minlimit = AM33XX_SR0_OPP100_EVM_ERR_MIN_LIMIT,
-+ .err_maxlimit = AM33XX_SR0_OPP100_ERR_MAX_LIMIT,
-+ .err_weight = AM33XX_SR0_OPP100_ERR_WEIGHT,
-+ .margin = AM33XX_SR0_OPP100_MARGIN,
-+ .nominal_volt = AM33XX_VDD_CORE_OPP100_UV,
-+ },
-+};
-+
-+static struct am33xx_sr_sdata sr_sensor_data_2_0[] = {
-+ {
-+ .sr_opp_data = sr0_opp_data,
-+ /* note that OPP50 is NOT used in Linux kernel for AM335x */
-+ .no_of_opps = 0x2,
-+ .default_opp = 0x1,
-+ .senn_mod = 0x1,
-+ .senp_mod = 0x1,
-+ },
-+ {
-+ .sr_opp_data = sr1_opp_data_2_0,
-+ /* the opp data below should be determined
-+ dynamically during SR probe */
-+ .no_of_opps = 0x5,
-+ .default_opp = 0x3,
-+ .senn_mod = 0x1,
-+ .senp_mod = 0x1,
-+ },
- };
-
- static struct am33xx_sr_sdata sr_sensor_data[] = {
-- {
-- .sr_opp_data = sr0_opp_data,
-- /* note that OPP50 is NOT used in Linux kernel for AM335x */
-- .no_of_opps = 0x2,
-- .default_opp = 0x1,
-- .senn_mod = 0x1,
-- .senp_mod = 0x1,
-- },
-- {
-- .sr_opp_data = sr1_opp_data,
-- /* the opp data below should be determined
-- dynamically during SR probe */
-- .no_of_opps = 0x4,
-- .default_opp = 0x3,
-- .senn_mod = 0x1,
-- .senp_mod = 0x1,
-- },
-+ {
-+ .sr_opp_data = sr0_opp_data,
-+ /* note that OPP50 is NOT used in Linux kernel for AM335x */
-+ .no_of_opps = 0x2,
-+ .default_opp = 0x1,
-+ .senn_mod = 0x1,
-+ .senp_mod = 0x1,
-+ },
-+ {
-+ .sr_opp_data = sr1_opp_data,
-+ /* the opp data below should be determined
-+ dynamically during SR probe */
-+ .no_of_opps = 0x4,
-+ .default_opp = 0x3,
-+ .senn_mod = 0x1,
-+ .senp_mod = 0x1,
-+ },
- };
-
- static struct am33xx_sr_platform_data am33xx_sr_pdata = {
-- .vd_name[0] = "vdd_core",
-- .vd_name[1] = "vdd_mpu",
-- .ip_type = 2,
-- .irq_delay = 1000,
-- .no_of_vds = 2,
-- .no_of_sens = ARRAY_SIZE(sr_sensor_data),
-- .vstep_size_uv = 12500,
-- .enable_on_init = true,
-- .sr_sdata = sr_sensor_data,
-+ .vd_name[0] = "vdd_core",
-+ .vd_name[1] = "vdd_mpu",
-+ .ip_type = 2,
-+ .irq_delay = 1000,
-+ .no_of_vds = 2,
-+ .no_of_sens = ARRAY_SIZE(sr_sensor_data),
-+ .vstep_size_uv = 12500,
-+ .enable_on_init = true,
-+ .sr_sdata = sr_sensor_data,
- };
-
- static struct resource am33xx_sr_resources[] = {
-- {
-- .name = "smartreflex0",
-- .start = AM33XX_SR0_BASE,
-- .end = AM33XX_SR0_BASE + SZ_4K - 1,
-- .flags = IORESOURCE_MEM,
-- },
-- {
-- .name = "smartreflex0",
-- .start = AM33XX_IRQ_SMARTREFLEX0,
-- .end = AM33XX_IRQ_SMARTREFLEX0,
-- .flags = IORESOURCE_IRQ,
-- },
-- {
-- .name = "smartreflex1",
-- .start = AM33XX_SR1_BASE,
-- .end = AM33XX_SR1_BASE + SZ_4K - 1,
-- .flags = IORESOURCE_MEM,
-- },
-- {
-- .name = "smartreflex1",
-- .start = AM33XX_IRQ_SMARTREFLEX1,
-- .end = AM33XX_IRQ_SMARTREFLEX1,
-- .flags = IORESOURCE_IRQ,
-- },
-+ {
-+ .name = "smartreflex0",
-+ .start = AM33XX_SR0_BASE,
-+ .end = AM33XX_SR0_BASE + SZ_4K - 1,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ {
-+ .name = "smartreflex0",
-+ .start = AM33XX_IRQ_SMARTREFLEX0,
-+ .end = AM33XX_IRQ_SMARTREFLEX0,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+ {
-+ .name = "smartreflex1",
-+ .start = AM33XX_SR1_BASE,
-+ .end = AM33XX_SR1_BASE + SZ_4K - 1,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ {
-+ .name = "smartreflex1",
-+ .start = AM33XX_IRQ_SMARTREFLEX1,
-+ .end = AM33XX_IRQ_SMARTREFLEX1,
-+ .flags = IORESOURCE_IRQ,
-+ },
- };
-
- /* VCORE for SR regulator init */
- static struct platform_device am33xx_sr_device = {
-- .name = "smartreflex",
-- .id = -1,
-- .num_resources = ARRAY_SIZE(am33xx_sr_resources),
-- .resource = am33xx_sr_resources,
-- .dev = {
-- .platform_data = &am33xx_sr_pdata,
-- },
-+ .name = "smartreflex",
-+ .id = -1,
-+ .num_resources = ARRAY_SIZE(am33xx_sr_resources),
-+ .resource = am33xx_sr_resources,
-+ .dev = {
-+ .platform_data = &am33xx_sr_pdata,
-+ },
- };
-
- void __init am33xx_sr_init(void)
- {
-- /* For beaglebone, update voltage step size and related parameters
-- appropriately. All other AM33XX platforms are good with the
-- structure defaults as initialized above. */
-- if ((am33xx_evmid == BEAGLE_BONE_OLD) ||
-- (am33xx_evmid == BEAGLE_BONE_A3)) {
-- printk(KERN_ERR "address of pdata = %08x\n", (u32)&am33xx_sr_pdata);
-- am33xx_sr_pdata.vstep_size_uv = 25000;
-- /* CORE */
-- sr0_opp_data[0].e2v_gain = AM33XX_SR0_OPP50_BB_ERR2VOLT_GAIN;
-- sr0_opp_data[0].err_minlimit = AM33XX_SR0_OPP50_BB_ERR_MIN_LIMIT;
-- sr0_opp_data[1].e2v_gain = AM33XX_SR0_OPP100_BB_ERR2VOLT_GAIN;
-- sr0_opp_data[1].err_minlimit = AM33XX_SR0_OPP100_BB_ERR_MIN_LIMIT;
-- /* MPU */
-- sr1_opp_data[0].e2v_gain = AM33XX_SR1_OPP50_BB_ERR2VOLT_GAIN;
-- sr1_opp_data[0].err_minlimit = AM33XX_SR1_OPP50_BB_ERR_MIN_LIMIT;
-- sr1_opp_data[1].e2v_gain = AM33XX_SR1_OPP100_BB_ERR2VOLT_GAIN;
-- sr1_opp_data[1].err_minlimit = AM33XX_SR1_OPP100_BB_ERR_MIN_LIMIT;
-- sr1_opp_data[2].e2v_gain = AM33XX_SR1_OPP120_BB_ERR2VOLT_GAIN;
-- sr1_opp_data[2].err_minlimit = AM33XX_SR1_OPP120_BB_ERR_MIN_LIMIT;
-- sr1_opp_data[3].e2v_gain = AM33XX_SR1_OPPTURBO_BB_ERR2VOLT_GAIN;
-- sr1_opp_data[3].err_minlimit = AM33XX_SR1_OPPTURBO_BB_ERR_MIN_LIMIT;
-- }
--
-- if (platform_device_register(&am33xx_sr_device))
-- printk(KERN_ERR "failed to register am33xx_sr device\n");
-- else
-- printk(KERN_INFO "registered am33xx_sr device\n");
-+ if (omap_rev() != AM335X_REV_ES1_0)
-+ am33xx_sr_pdata.sr_sdata = sr_sensor_data_2_0;
-+
-+ /* For beaglebone, update voltage step size and related parameters
-+ appropriately. All other AM33XX platforms are good with the
-+ structure defaults as initialized above. */
-+ if ((am33xx_evmid == BEAGLE_BONE_OLD) ||
-+ (am33xx_evmid == BEAGLE_BONE_A3)) {
-+ printk(KERN_ERR "address of pdata = %08x\n",
-+ (u32)&am33xx_sr_pdata);
-+
-+ am33xx_sr_pdata.vstep_size_uv = 25000;
-+ }
-+
-+ if (platform_device_register(&am33xx_sr_device))
-+ printk(KERN_ERR "failed to register am33xx_sr device\n");
-+ else
-+ printk(KERN_INFO "registered am33xx_sr device\n");
- }
- #else
- inline void am33xx_sr_init(void) {}
-diff --git a/arch/arm/plat-omap/include/plat/smartreflex.h b/arch/arm/plat-omap/include/plat/smartreflex.h
-index 76c1ff7..d837755 100644
---- a/arch/arm/plat-omap/include/plat/smartreflex.h
-+++ b/arch/arm/plat-omap/include/plat/smartreflex.h
-@@ -238,14 +238,14 @@ int sr_register_class(struct omap_sr_class_data *class_data);
-
- #ifdef CONFIG_AM33XX_SMARTREFLEX
-
--#define SR_CORE (0)
--#define SR_MPU (1)
-+#define SR_CORE (0)
-+#define SR_MPU (1)
- #define SRCLKLENGTH_125MHZ_SYSCLK (0x78 << 12)
--#define GAIN_MAXLIMIT (16)
--#define R_MAXLIMIT (256)
--#define MAX_SENSORS 2
-+#define GAIN_MAXLIMIT (16)
-+#define R_MAXLIMIT (256)
-+#define MAX_SENSORS (2)
- /* GG: eventually this should be determined at runtime */
--#define AM33XX_OPP_COUNT 4
-+#define AM33XX_OPP_COUNT (5)
-
- /**
- * struct am33xx_sr_opp_data - Smartreflex data per OPP
-@@ -264,17 +264,17 @@ int sr_register_class(struct omap_sr_class_data *class_data);
- */
- struct am33xx_sr_opp_data {
- u32 efuse_offs;
-- u32 nvalue;
-- u32 adj_nvalue;
-+ u32 nvalue;
-+ u32 adj_nvalue;
- s32 e2v_gain;
- u32 err_weight;
- u32 err_minlimit;
- u32 err_maxlimit;
-- s32 margin;
-- u32 nominal_volt; /* nominal_volt and frequency may be removed
-- once am33xx voltdm layer works */
-- u32 frequency;
-- u32 opp_id;
-+ s32 margin;
-+ u32 nominal_volt; /* nominal_volt and frequency may be removed
-+ once am33xx voltdm layer works */
-+ u32 frequency;
-+ u32 opp_id;
- };
-
- /**
-@@ -290,50 +290,54 @@ struct am33xx_sr_opp_data {
- */
- struct am33xx_sr_sdata {
- struct am33xx_sr_opp_data *sr_opp_data;
-- u32 no_of_opps;
-- u32 default_opp;
-+ u32 no_of_opps;
-+ u32 default_opp;
- u32 senn_mod;
- u32 senp_mod;
- };
-
- struct am33xx_sr_sensor {
-- u32 sr_id;
-+ u32 sr_id;
- u32 irq;
- u32 irq_status;
- u32 senn_en;
- u32 senp_en;
- char *name;
-- char *reg_name;
-+ char *reg_name;
- void __iomem *base;
-- int init_volt_mv;
-- int curr_opp;
-- u32 no_of_opps;
-- struct delayed_work work_reenable;
-- struct regulator *reg;
-- struct am33xx_sr_opp_data opp_data[AM33XX_OPP_COUNT];
-+ int init_volt_mv;
-+ int curr_opp;
-+ u32 no_of_opps;
-+ int state;
-+ s8 avg_error_nom;
-+ int saved_volt;
-+ struct delayed_work work_reenable;
-+ struct regulator *reg;
-+ struct am33xx_sr_opp_data opp_data[AM33XX_OPP_COUNT];
- struct clk *fck;
-- struct voltagedomain *voltdm;
-- struct omap_volt_data *volt_data;
-+ struct voltagedomain *voltdm;
-+ struct omap_volt_data *volt_data;
- };
-
- struct am33xx_sr {
-- u32 autocomp_active;
-+ bool autocomp_active;
-+ bool is_suspended;
- u32 sens_per_vd;
-- u32 no_of_sens;
-- u32 no_of_vds;
-+ u32 no_of_sens;
-+ u32 no_of_vds;
- u32 ip_type;
-- u32 irq_delay;
-- u32 disabled_by_user;
-+ u32 irq_delay;
-+ bool disabled_by_user;
- int uvoltage_step_size;
-- char *res_name[MAX_SENSORS];
-+ char *res_name[MAX_SENSORS];
- #ifdef CONFIG_CPU_FREQ
- struct notifier_block freq_transition;
- #endif
-- /*struct work_struct work;*/
-- struct delayed_work work;
-+ struct delayed_work work;
- struct sr_platform_data *sr_data;
- struct am33xx_sr_sensor sen[MAX_SENSORS];
- struct platform_device *pdev;
-+ struct list_head node;
- };
-
- /**
-@@ -354,7 +358,7 @@ struct am33xx_sr_platform_data {
- struct am33xx_sr_sdata *sr_sdata;
- char *vd_name[2];
- u32 ip_type;
-- u32 irq_delay;
-+ u32 irq_delay;
- u32 no_of_vds;
- u32 no_of_sens;
- u32 vstep_size_uv;
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-am335x-psp-3.2/0001-am3358-sk-modified-WLAN-enable-and-irq-to-match-boar.patch b/recipes-kernel/linux/linux-am335x-psp-3.2/0001-am3358-sk-modified-WLAN-enable-and-irq-to-match-boar.patch
deleted file mode 100644
index 25d2fdf..0000000
--- a/recipes-kernel/linux/linux-am335x-psp-3.2/0001-am3358-sk-modified-WLAN-enable-and-irq-to-match-boar.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From 69c82f68876d24e798388fc053c8d6766236ac65 Mon Sep 17 00:00:00 2001
-From: Vita Preskovsky <vitap at ti.com>
-Date: Thu, 28 Jun 2012 14:53:12 +0300
-Subject: [PATCH] am3358-sk: modified WLAN enable and irq to match board revision 1.2
- * 1. WLAN enable and irq are modified to match board revision 1.2
- 2. support suspend/resume for SK board
-
-Upstream-Status: Pending
-
-Signed-off-by: Vita Preskovsky <vitap at ti.com>
----
- arch/arm/mach-omap2/board-am335xevm.c | 11 +++++++----
- 1 files changed, 7 insertions(+), 4 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index 64f7547..6ae4e68 100755
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -905,7 +905,7 @@ static struct pinmux_config ecap2_pin_mux[] = {
-
- #define AM335XEVM_WLAN_PMENA_GPIO GPIO_TO_PIN(1, 30)
- #define AM335XEVM_WLAN_IRQ_GPIO GPIO_TO_PIN(3, 17)
--#define AM335XEVM_SK_WLAN_IRQ_GPIO GPIO_TO_PIN(1, 29)
-+#define AM335XEVM_SK_WLAN_IRQ_GPIO GPIO_TO_PIN(0, 31)
-
- struct wl12xx_platform_data am335xevm_wlan_data = {
- .irq = OMAP_GPIO_IRQ(AM335XEVM_WLAN_IRQ_GPIO),
-@@ -941,8 +941,8 @@ static struct pinmux_config wl12xx_pin_mux[] = {
- };
-
- static struct pinmux_config wl12xx_pin_mux_sk[] = {
-- {"gpmc_wpn.gpio0_31", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT},
-- {"gpmc_csn0.gpio1_29", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT},
-+ {"gpmc_wpn.gpio0_31", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT},
-+ {"gpmc_csn0.gpio1_29", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT_PULLUP},
- {"mcasp0_ahclkx.gpio3_21", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT},
- {NULL, 0},
- };
-@@ -1618,6 +1618,7 @@ static void mmc1_wl12xx_init(int evm_id, int profile)
- am335x_mmc[1].name = "wl1271";
- am335x_mmc[1].caps = MMC_CAP_4_BIT_DATA | MMC_CAP_POWER_OFF_CARD;
- am335x_mmc[1].nonremovable = true;
-+ am335x_mmc[1].pm_caps = MMC_PM_KEEP_POWER;
- am335x_mmc[1].gpio_cd = -EINVAL;
- am335x_mmc[1].gpio_wp = -EINVAL;
- am335x_mmc[1].ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34; /* 3V3 */
-@@ -1674,10 +1675,12 @@ static void wl12xx_init(int evm_id, int profile)
- int ret;
-
- if (evm_id == EVM_SK) {
-- am335xevm_wlan_data.wlan_enable_gpio = GPIO_TO_PIN(0, 31);
-+ am335xevm_wlan_data.wlan_enable_gpio = GPIO_TO_PIN(1, 29);
- am335xevm_wlan_data.bt_enable_gpio = GPIO_TO_PIN(3, 21);
- am335xevm_wlan_data.irq =
- OMAP_GPIO_IRQ(AM335XEVM_SK_WLAN_IRQ_GPIO);
-+ am335xevm_wlan_data.platform_quirks =
-+ WL12XX_PLATFORM_QUIRK_EDGE_IRQ;
- setup_pin_mux(wl12xx_pin_mux_sk);
- } else {
- setup_pin_mux(wl12xx_pin_mux);
---
-1.7.0.4
diff --git a/recipes-kernel/linux/linux-am335x-psp-3.2/0001-am335x-Add-crypto-driver-settings-to-defconfig.patch b/recipes-kernel/linux/linux-am335x-psp-3.2/0001-am335x-Add-crypto-driver-settings-to-defconfig.patch
deleted file mode 100644
index bb48d69..0000000
--- a/recipes-kernel/linux/linux-am335x-psp-3.2/0001-am335x-Add-crypto-driver-settings-to-defconfig.patch
+++ /dev/null
@@ -1,132 +0,0 @@
-From cf67829e0c0cccb06a9f33d40fe43a122e8a5178 Mon Sep 17 00:00:00 2001
-From: Greg Turner <gregturner at ti.com>
-Date: Fri, 8 Jun 2012 13:54:13 -0500
-Subject: [PATCH] Add crypto driver settings to defconfig
-
-* Add Crypto Driver and configuration to defconfig
----
- arch/arm/configs/am335x_evm_defconfig | 40 +++++++++++++++++++++++----------
- 1 files changed, 28 insertions(+), 12 deletions(-)
- mode change 100644 => 100755 arch/arm/configs/am335x_evm_defconfig
-
-diff --git a/arch/arm/configs/am335x_evm_defconfig b/arch/arm/configs/am335x_evm_defconfig
-old mode 100644
-new mode 100755
-index 9f45503..46528c4
---- a/arch/arm/configs/am335x_evm_defconfig
-+++ b/arch/arm/configs/am335x_evm_defconfig
-@@ -1278,7 +1278,9 @@ CONFIG_SERIAL_OMAP_CONSOLE=y
- # CONFIG_SERIAL_XILINX_PS_UART is not set
- # CONFIG_HVC_DCC is not set
- # CONFIG_IPMI_HANDLER is not set
--# CONFIG_HW_RANDOM is not set
-+CONFIG_HW_RANDOM=y
-+# CONFIG_HW_RANDOM_TIMERIOMEM is not set
-+CONFIG_HW_RANDOM_OMAP4=y
- # CONFIG_R3964 is not set
- # CONFIG_RAW_DRIVER is not set
- # CONFIG_TCG_TPM is not set
-@@ -2473,36 +2475,38 @@ CONFIG_CRYPTO=y
- #
- CONFIG_CRYPTO_ALGAPI=y
- CONFIG_CRYPTO_ALGAPI2=y
-+CONFIG_CRYPTO_AEAD=y
- CONFIG_CRYPTO_AEAD2=y
- CONFIG_CRYPTO_BLKCIPHER=y
- CONFIG_CRYPTO_BLKCIPHER2=y
- CONFIG_CRYPTO_HASH=y
- CONFIG_CRYPTO_HASH2=y
-+CONFIG_CRYPTO_RNG=y
- CONFIG_CRYPTO_RNG2=y
- CONFIG_CRYPTO_PCOMP2=y
- CONFIG_CRYPTO_MANAGER=y
- CONFIG_CRYPTO_MANAGER2=y
- # CONFIG_CRYPTO_USER is not set
--CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y
-+# CONFIG_CRYPTO_MANAGER_DISABLE_TESTS is not set
- # CONFIG_CRYPTO_GF128MUL is not set
- # CONFIG_CRYPTO_NULL is not set
- CONFIG_CRYPTO_WORKQUEUE=y
- # CONFIG_CRYPTO_CRYPTD is not set
- # CONFIG_CRYPTO_AUTHENC is not set
--# CONFIG_CRYPTO_TEST is not set
-+CONFIG_CRYPTO_TEST=m
-
- #
- # Authenticated Encryption with Associated Data
- #
- # CONFIG_CRYPTO_CCM is not set
- # CONFIG_CRYPTO_GCM is not set
--# CONFIG_CRYPTO_SEQIV is not set
-+CONFIG_CRYPTO_SEQIV=y
-
- #
- # Block modes
- #
--# CONFIG_CRYPTO_CBC is not set
--# CONFIG_CRYPTO_CTR is not set
-+CONFIG_CRYPTO_CBC=y
-+CONFIG_CRYPTO_CTR=y
- # CONFIG_CRYPTO_CTS is not set
- CONFIG_CRYPTO_ECB=y
- # CONFIG_CRYPTO_LRW is not set
-@@ -2512,7 +2516,7 @@ CONFIG_CRYPTO_ECB=y
- #
- # Hash modes
- #
--# CONFIG_CRYPTO_HMAC is not set
-+CONFIG_CRYPTO_HMAC=y
- # CONFIG_CRYPTO_XCBC is not set
- # CONFIG_CRYPTO_VMAC is not set
-
-@@ -2522,14 +2526,14 @@ CONFIG_CRYPTO_ECB=y
- CONFIG_CRYPTO_CRC32C=y
- # CONFIG_CRYPTO_GHASH is not set
- # CONFIG_CRYPTO_MD4 is not set
--# CONFIG_CRYPTO_MD5 is not set
-+CONFIG_CRYPTO_MD5=y
- CONFIG_CRYPTO_MICHAEL_MIC=y
- # CONFIG_CRYPTO_RMD128 is not set
- # CONFIG_CRYPTO_RMD160 is not set
- # CONFIG_CRYPTO_RMD256 is not set
- # CONFIG_CRYPTO_RMD320 is not set
--# CONFIG_CRYPTO_SHA1 is not set
--# CONFIG_CRYPTO_SHA256 is not set
-+CONFIG_CRYPTO_SHA1=y
-+CONFIG_CRYPTO_SHA256=y
- # CONFIG_CRYPTO_SHA512 is not set
- # CONFIG_CRYPTO_TGR192 is not set
- # CONFIG_CRYPTO_WP512 is not set
-@@ -2544,7 +2548,7 @@ CONFIG_CRYPTO_ARC4=y
- # CONFIG_CRYPTO_CAMELLIA is not set
- # CONFIG_CRYPTO_CAST5 is not set
- # CONFIG_CRYPTO_CAST6 is not set
--# CONFIG_CRYPTO_DES is not set
-+CONFIG_CRYPTO_DES=y
- # CONFIG_CRYPTO_FCRYPT is not set
- # CONFIG_CRYPTO_KHAZAD is not set
- # CONFIG_CRYPTO_SALSA20 is not set
-@@ -2566,7 +2570,19 @@ CONFIG_CRYPTO_LZO=y
- # CONFIG_CRYPTO_ANSI_CPRNG is not set
- # CONFIG_CRYPTO_USER_API_HASH is not set
- # CONFIG_CRYPTO_USER_API_SKCIPHER is not set
--# CONFIG_CRYPTO_HW is not set
-+CONFIG_CRYPTO_HW=y
-+CONFIG_CRYPTO_DEV_OMAP4_AES=y
-+CONFIG_CRYPTO_DEV_OMAP4_SHAM=y
-+
-+#
-+# OCF Configuration
-+#
-+CONFIG_OCF_OCF=y
-+# CONFIG_OCF_RANDOMHARVEST is not set
-+CONFIG_OCF_CRYPTODEV=y
-+CONFIG_OCF_CRYPTOSOFT=y
-+# CONFIG_OCF_OCFNULL is not set
-+# CONFIG_OCF_BENCH is not set
- # CONFIG_BINARY_PRINTF is not set
-
- #
---
-1.7.0.4
-
diff --git a/recipes-kernel/linux/linux-am335x-psp-3.2/0001-am335x-Add-minimal-support-for-Beaglebone-Black.patch b/recipes-kernel/linux/linux-am335x-psp-3.2/0001-am335x-Add-minimal-support-for-Beaglebone-Black.patch
deleted file mode 100644
index ec83d19..0000000
--- a/recipes-kernel/linux/linux-am335x-psp-3.2/0001-am335x-Add-minimal-support-for-Beaglebone-Black.patch
+++ /dev/null
@@ -1,110 +0,0 @@
-From cda956db2b54400c44cc8eb952276ecb058f57d8 Mon Sep 17 00:00:00 2001
-From: Steve Kipisz <s-kipisz2 at ti.com>
-Date: Mon, 3 Jun 2013 04:35:51 -0500
-Subject: [PATCH] am335x:Add minimal support for Beaglebone Black
-
-- Detect Beaglebone Black and do the appropriate pin mux
-- Add pin mux for eMMC
-
-Signed-off-by: Steve Kipisz <s-kipisz2 at ti.com>
----
- arch/arm/mach-omap2/board-am335xevm.c | 49 ++++++++++++++++++++
- arch/arm/mach-omap2/include/mach/board-am335xevm.h | 1 +
- 2 files changed, 50 insertions(+)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index 1523f33..c4a5c05 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -1654,6 +1654,21 @@ static void mmc1_wl12xx_init(int evm_id, int profile)
- am335x_mmc[1].ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34; /* 3V3 */
- }
-
-+static void mmc1_emmc_init(int evm_id, int profile)
-+{
-+ setup_pin_mux(mmc1_common_pin_mux);
-+ setup_pin_mux(mmc1_dat4_7_pin_mux);
-+
-+ am335x_mmc[1].mmc = 2;
-+ am335x_mmc[1].caps = MMC_CAP_8_BIT_DATA;
-+ am335x_mmc[1].gpio_cd = -EINVAL;
-+ am335x_mmc[1].gpio_wp = -EINVAL;
-+ am335x_mmc[1].ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34; /* 3V3 */
-+
-+ /* mmc will be initialized when mmc0_init is called */
-+ return;
-+}
-+
- static void mmc2_wl12xx_init(int evm_id, int profile)
- {
- setup_pin_mux(mmc2_wl12xx_pin_mux);
-@@ -2177,6 +2192,21 @@ static struct evm_dev_cfg beaglebone_dev_cfg[] = {
- {NULL, 0, 0},
- };
-
-+/* Beaglebone Black */
-+static struct evm_dev_cfg beagleboneblack_dev_cfg[] = {
-+ {am335x_rtc_init, DEV_ON_BASEBOARD, PROFILE_NONE},
-+ {clkout2_enable, DEV_ON_BASEBOARD, PROFILE_NONE},
-+ {tps65217_init, DEV_ON_BASEBOARD, PROFILE_NONE},
-+ {mii1_init, DEV_ON_BASEBOARD, PROFILE_NONE},
-+ {usb0_init, DEV_ON_BASEBOARD, PROFILE_NONE},
-+ {usb1_init, DEV_ON_BASEBOARD, PROFILE_NONE},
-+ {mmc1_emmc_init, DEV_ON_BASEBOARD, PROFILE_NONE},
-+ {mmc0_init, DEV_ON_BASEBOARD, PROFILE_NONE},
-+ {i2c2_init, DEV_ON_BASEBOARD, PROFILE_NONE},
-+ {sgx_init, DEV_ON_BASEBOARD, PROFILE_NONE},
-+ {NULL, 0, 0},
-+};
-+
- /* EVM - Starter Kit */
- static struct evm_dev_cfg evm_sk_dev_cfg[] = {
- {am335x_rtc_init, DEV_ON_BASEBOARD, PROFILE_ALL},
-@@ -2280,6 +2310,23 @@ static void setup_beaglebone(void)
- am33xx_cpsw_init(AM33XX_CPSW_MODE_MII, NULL, NULL);
- }
-
-+/* BeagleBone Black */
-+static void setup_beagleboneblack(void)
-+{
-+ pr_info("The board is a AM335x Beaglebone Black.\n");
-+
-+ /* Beagle Bone has Micro-SD slot which doesn't have Write Protect pin */
-+ am335x_mmc[0].gpio_wp = -EINVAL;
-+
-+ _configure_device(BEAGLE_BONE_BLACK, beagleboneblack_dev_cfg,
-+ PROFILE_NONE);
-+
-+ /* TPS65217 regulator has full constraints */
-+ regulator_has_full_constraints();
-+
-+ am33xx_cpsw_init(AM33XX_CPSW_MODE_MII, NULL, NULL);
-+}
-+
- /* EVM - Starter Kit */
- static void setup_starterkit(void)
- {
-@@ -2372,6 +2419,8 @@ static void am335x_evm_setup(struct memory_accessor *mem_acc, void *context)
- setup_beaglebone_old();
- else
- setup_beaglebone();
-+ } else if (!strncmp("A335BNLT", config.name, 8)) {
-+ setup_beagleboneblack();
- } else if (!strncmp("A335X_SK", config.name, 8)) {
- daughter_brd_detected = false;
- setup_starterkit();
-diff --git a/arch/arm/mach-omap2/include/mach/board-am335xevm.h b/arch/arm/mach-omap2/include/mach/board-am335xevm.h
-index e77d52c..915139a 100644
---- a/arch/arm/mach-omap2/include/mach/board-am335xevm.h
-+++ b/arch/arm/mach-omap2/include/mach/board-am335xevm.h
-@@ -26,6 +26,7 @@
- #define BEAGLE_BONE_A3 3
- #define EVM_SK 4
- #define GEN_PURP_DDR3_EVM 5
-+#define BEAGLE_BONE_BLACK 6
-
- /* REVIST : check posibility of PROFILE_(x) syntax usage */
- #define PROFILE_NONE -1 /* Few EVM doesn't have profiles */
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-am335x-psp-3.2/0001-am335x-Add-pm_runtime-API-to-crypto-driver.patch b/recipes-kernel/linux/linux-am335x-psp-3.2/0001-am335x-Add-pm_runtime-API-to-crypto-driver.patch
deleted file mode 100644
index cef94b7..0000000
--- a/recipes-kernel/linux/linux-am335x-psp-3.2/0001-am335x-Add-pm_runtime-API-to-crypto-driver.patch
+++ /dev/null
@@ -1,405 +0,0 @@
-From 7cb6dbae57e2bb5d237bb88f6eb40971cf8fc3b5 Mon Sep 17 00:00:00 2001
-From: Greg Turner <gregturner at ti.com>
-Date: Wed, 18 Jul 2012 09:15:18 -0500
-Subject: [PATCH] [am335x]: Add pm_runtime API to crypto driver
-
-* Add pm_runtime API to crypto driver AES and SHA
-* Mod devices.c file to add pm_runtime for crypto
-* Mod omap_hwmod_33xx_data.c to add resources structures
-* Crypto module clocks are enabled in probe function
- and disabled only on remove or other error.
----
- arch/arm/mach-omap2/devices.c | 66 ++++++++++++++++++++++++++++
- arch/arm/mach-omap2/omap_hwmod_33xx_data.c | 15 ++++++-
- drivers/crypto/omap4-aes.c | 52 +++++++++++----------
- drivers/crypto/omap4-sham.c | 45 ++++++++++---------
- 4 files changed, 131 insertions(+), 47 deletions(-)
- mode change 100644 => 100755 arch/arm/mach-omap2/devices.c
- mode change 100644 => 100755 arch/arm/mach-omap2/omap_hwmod_33xx_data.c
- mode change 100644 => 100755 drivers/crypto/omap4-aes.c
- mode change 100644 => 100755 drivers/crypto/omap4-sham.c
-
-diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c
-old mode 100644
-new mode 100755
-index ebf0d9e..156e363
---- a/arch/arm/mach-omap2/devices.c
-+++ b/arch/arm/mach-omap2/devices.c
-@@ -751,6 +751,7 @@ static struct platform_device sham_device = {
- .id = -1,
- };
-
-+#if 0
- static void omap_init_sham(void)
- {
- sham_device.resource = omap4_sham_resources;
-@@ -758,6 +759,38 @@ static void omap_init_sham(void)
-
- platform_device_register(&sham_device);
- }
-+#endif
-+
-+int __init omap_init_sham(void)
-+{
-+ int id = -1;
-+ struct platform_device *pdev;
-+ struct omap_hwmod *oh;
-+ char *oh_name = "sha0";
-+ char *name = "omap4-sham";
-+
-+ oh = omap_hwmod_lookup(oh_name);
-+ if (!oh) {
-+ pr_err("Could not look up %s\n", oh_name);
-+ return -ENODEV;
-+ }
-+
-+ pdev = omap_device_build(name, id, oh, NULL, 0, NULL, 0, 0);
-+ //pdev.resource = omap4_sham_resources;
-+ //pdev.num_resources = omap4_sham_resources_sz;
-+
-+ if (IS_ERR(pdev)) {
-+ WARN(1, "Can't build omap_device for %s:%s.\n",
-+ name, oh->name);
-+ return PTR_ERR(pdev);
-+ }
-+
-+ return 0;
-+}
-+
-+
-+
-+
-
- #else
- static inline void omap_init_sham(void) { }
-@@ -853,12 +886,45 @@ static struct platform_device aes_device = {
- .id = -1,
- };
-
-+#if 0
- static void omap_init_aes(void)
- {
- aes_device.resource = omap4_aes_resources;
- aes_device.num_resources = omap4_aes_resources_sz;
- platform_device_register(&aes_device);
- }
-+#endif
-+
-+int __init omap_init_aes(void)
-+{
-+ int id = -1;
-+ struct platform_device *pdev;
-+ struct omap_hwmod *oh;
-+ char *oh_name = "aes0";
-+ char *name = "omap4-aes";
-+
-+ oh = omap_hwmod_lookup(oh_name);
-+ if (!oh) {
-+ pr_err("Could not look up %s\n", oh_name);
-+ return -ENODEV;
-+ }
-+
-+ pdev = omap_device_build(name, id, oh, NULL, 0, NULL, 0, 0);
-+ //pdev.resource = omap4_sham_resources;
-+ //pdev.num_resources = omap4_sham_resources_sz;
-+
-+ if (IS_ERR(pdev)) {
-+ WARN(1, "Can't build omap_device for %s:%s.\n",
-+ name, oh->name);
-+ return PTR_ERR(pdev);
-+ }
-+
-+ return 0;
-+}
-+
-+
-+
-+
-
- #else
- static inline void omap_init_aes(void) { }
-diff --git a/arch/arm/mach-omap2/omap_hwmod_33xx_data.c b/arch/arm/mach-omap2/omap_hwmod_33xx_data.c
-old mode 100644
-new mode 100755
-index 995b73f..2f9982c
---- a/arch/arm/mach-omap2/omap_hwmod_33xx_data.c
-+++ b/arch/arm/mach-omap2/omap_hwmod_33xx_data.c
-@@ -434,11 +434,18 @@ static struct omap_hwmod_irq_info am33xx_aes0_irqs[] = {
- { .irq = -1 }
- };
-
-+static struct omap_hwmod_dma_info am33xx_aes0_dma[] = {
-+ { .dma_req = AM33XX_DMA_AESEIP36T0_DOUT },
-+ { .dma_req = AM33XX_DMA_AESEIP36T0_DIN },
-+ { .dma_req = -1 }
-+};
-+
- static struct omap_hwmod am33xx_aes0_hwmod = {
- .name = "aes0",
- .class = &am33xx_aes_hwmod_class,
- .clkdm_name = "l3_clkdm",
- .mpu_irqs = am33xx_aes0_irqs,
-+ .sdma_reqs = am33xx_aes0_dma,
- .main_clk = "aes0_fck",
- .prcm = {
- .omap4 = {
-@@ -2165,15 +2172,21 @@ static struct omap_hwmod_class am33xx_sha0_hwmod_class = {
- };
-
- static struct omap_hwmod_irq_info am33xx_sha0_irqs[] = {
-- { .irq = 108 },
-+ { .irq = AM33XX_IRQ_SHAEIP57t0_P },
- { .irq = -1 }
- };
-
-+static struct omap_hwmod_dma_info am33xx_sha0_dma[] = {
-+ { .dma_req = AM33XX_DMA_SHAEIP57T0_DIN },
-+ { .dma_req = -1 }
-+};
-+
- static struct omap_hwmod am33xx_sha0_hwmod = {
- .name = "sha0",
- .class = &am33xx_sha0_hwmod_class,
- .clkdm_name = "l3_clkdm",
- .mpu_irqs = am33xx_sha0_irqs,
-+ .sdma_reqs = am33xx_sha0_dma,
- .main_clk = "sha0_fck",
- .prcm = {
- .omap4 = {
-diff --git a/drivers/crypto/omap4-aes.c b/drivers/crypto/omap4-aes.c
-old mode 100644
-new mode 100755
-index f0b3fe2..76f988a
---- a/drivers/crypto/omap4-aes.c
-+++ b/drivers/crypto/omap4-aes.c
-@@ -32,13 +32,14 @@
- #include <linux/init.h>
- #include <linux/errno.h>
- #include <linux/kernel.h>
--#include <linux/clk.h>
- #include <linux/platform_device.h>
- #include <linux/scatterlist.h>
- #include <linux/dma-mapping.h>
- #include <linux/io.h>
- #include <linux/crypto.h>
-+#include <linux/pm_runtime.h>
- #include <linux/interrupt.h>
-+#include <linux/delay.h>
- #include <crypto/scatterwalk.h>
- #include <crypto/aes.h>
-
-@@ -145,12 +146,6 @@ static void omap4_aes_write_n(struct omap4_aes_dev *dd, u32 offset,
-
- static int omap4_aes_hw_init(struct omap4_aes_dev *dd)
- {
-- /*
-- * clocks are enabled when request starts and disabled when finished.
-- * It may be long delays between requests.
-- * Device might go to off mode to save power.
-- */
-- clk_enable(dd->iclk);
- omap4_aes_write(dd, AES_REG_SYSCFG, 0);
-
- if (!(dd->flags & FLAGS_INIT)) {
-@@ -494,7 +489,6 @@ static void omap4_aes_finish_req(struct omap4_aes_dev *dd, int err)
-
- pr_debug("err: %d\n", err);
-
-- clk_disable(dd->iclk);
- dd->flags &= ~FLAGS_BUSY;
-
- req->base.complete(&req->base, err);
-@@ -801,13 +795,15 @@ static int omap4_aes_probe(struct platform_device *pdev)
- crypto_init_queue(&dd->queue, AM33X_AES_QUEUE_LENGTH);
-
- /* Get the base address */
-- res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-- if (!res) {
-- dev_err(dev, "invalid resource type\n");
-- err = -ENODEV;
-- goto err_res;
-- }
-- dd->phys_base = res->start;
-+ //res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-+ //if (!res) {
-+ // dev_err(dev, "invalid resource type\n");
-+ // err = -ENODEV;
-+ // goto err_res;
-+ //}
-+
-+ //dd->phys_base = res->start;
-+ dd->phys_base = AM33XX_AES0_P_BASE;
-
- /* Get the DMA */
- res = platform_get_resource(pdev, IORESOURCE_DMA, 0);
-@@ -823,13 +819,10 @@ static int omap4_aes_probe(struct platform_device *pdev)
- else
- dd->dma_in = res->start;
-
-- /* Initializing the clock */
-- dd->iclk = clk_get(dev, "aes0_fck");
-- if (IS_ERR(dd->iclk)) {
-- dev_err(dev, "clock initialization failed.\n");
-- err = PTR_ERR(dd->iclk);
-- goto err_res;
-- }
-+ pm_runtime_enable(dev);
-+ udelay(1);
-+ pm_runtime_get_sync(dev);
-+ udelay(1);
-
- dd->io_base = ioremap(dd->phys_base, SZ_4K);
- if (!dd->io_base) {
-@@ -840,7 +833,7 @@ static int omap4_aes_probe(struct platform_device *pdev)
-
- omap4_aes_hw_init(dd);
- reg = omap4_aes_read(dd, AES_REG_REV);
-- clk_disable(dd->iclk);
-+
- dev_info(dev, "AM33X AES hw accel rev: %u.%02u\n",
- ((reg & AES_REG_REV_X_MAJOR_MASK) >> 8),
- (reg & AES_REG_REV_Y_MINOR_MASK));
-@@ -879,7 +872,12 @@ err_dma:
- iounmap(dd->io_base);
-
- err_io:
-- clk_put(dd->iclk);
-+ pm_runtime_put_sync(dev);
-+ udelay(1);
-+ pm_runtime_disable(dev);
-+ udelay(1);
-+
-+
- err_res:
- kfree(dd);
- dd = NULL;
-@@ -907,7 +905,11 @@ static int omap4_aes_remove(struct platform_device *pdev)
- tasklet_kill(&dd->queue_task);
- omap4_aes_dma_cleanup(dd);
- iounmap(dd->io_base);
-- clk_put(dd->iclk);
-+ pm_runtime_put_sync(&pdev->dev);
-+ udelay(1);
-+ pm_runtime_disable(&pdev->dev);
-+ udelay(1);
-+
- kfree(dd);
- dd = NULL;
-
-diff --git a/drivers/crypto/omap4-sham.c b/drivers/crypto/omap4-sham.c
-old mode 100644
-new mode 100755
-index 79f6be9..21f1b48
---- a/drivers/crypto/omap4-sham.c
-+++ b/drivers/crypto/omap4-sham.c
-@@ -31,7 +31,6 @@
- #include <linux/errno.h>
- #include <linux/interrupt.h>
- #include <linux/kernel.h>
--#include <linux/clk.h>
- #include <linux/irq.h>
- #include <linux/io.h>
- #include <linux/platform_device.h>
-@@ -40,6 +39,7 @@
- #include <linux/delay.h>
- #include <linux/crypto.h>
- #include <linux/cryptohash.h>
-+#include <linux/pm_runtime.h>
- #include <crypto/scatterwalk.h>
- #include <crypto/algapi.h>
- #include <crypto/sha.h>
-@@ -700,7 +700,6 @@ static void omap4_sham_finish_req(struct ahash_request *req, int err)
- /* atomic operation is not needed here */
- dd->dflags &= ~(BIT(FLAGS_BUSY) | BIT(FLAGS_FINAL) | BIT(FLAGS_CPU) |
- BIT(FLAGS_DMA_READY) | BIT(FLAGS_OUTPUT_READY));
-- clk_disable(dd->iclk);
-
- if (req->base.complete)
- req->base.complete(&req->base, err);
-@@ -743,7 +742,6 @@ static int omap4_sham_handle_queue(struct omap4_sham_dev *dd,
- dev_dbg(dd->dev, "handling new req, op: %lu, nbytes: %d\n",
- ctx->op, req->nbytes);
-
-- clk_enable(dd->iclk);
- if (!test_bit(FLAGS_INIT, &dd->dflags)) {
- set_bit(FLAGS_INIT, &dd->dflags);
- dd->err = 0;
-@@ -1272,13 +1270,15 @@ static int __devinit omap4_sham_probe(struct platform_device *pdev)
- dd->irq = -1;
-
- /* Get the base address */
-- res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-- if (!res) {
-- dev_err(dev, "no MEM resource info\n");
-- err = -ENODEV;
-- goto res_err;
-- }
-- dd->phys_base = res->start;
-+ //res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-+ //if (!res) {
-+ // dev_err(dev, "no MEM resource info\n");
-+ // err = -ENODEV;
-+ // goto res_err;
-+ //}
-+
-+ //dd->phys_base = res->start;
-+ dd->phys_base = AM33XX_SHA1MD5_P_BASE;
-
- /* Get the DMA */
- res = platform_get_resource(pdev, IORESOURCE_DMA, 0);
-@@ -1308,13 +1308,10 @@ static int __devinit omap4_sham_probe(struct platform_device *pdev)
- if (err)
- goto dma_err;
-
-- /* Initializing the clock */
-- dd->iclk = clk_get(dev, "sha0_fck");
-- if (IS_ERR(dd->iclk)) {
-- dev_err(dev, "clock initialization failed.\n");
-- err = PTR_ERR(dd->iclk);
-- goto clk_err;
-- }
-+ pm_runtime_enable(dev);
-+ udelay(1);
-+ pm_runtime_get_sync(dev);
-+ udelay(1);
-
- dd->io_base = ioremap(dd->phys_base, SZ_4K);
- if (!dd->io_base) {
-@@ -1323,9 +1320,7 @@ static int __devinit omap4_sham_probe(struct platform_device *pdev)
- goto io_err;
- }
-
-- clk_enable(dd->iclk);
- reg = omap4_sham_read(dd, SHA_REG_REV);
-- clk_disable(dd->iclk);
-
- dev_info(dev, "AM33X SHA/MD5 hw accel rev: %u.%02u\n",
- (reg & SHA_REG_REV_X_MAJOR_MASK) >> 8, reg & SHA_REG_REV_Y_MINOR_MASK);
-@@ -1349,7 +1344,11 @@ err_algs:
- crypto_unregister_ahash(&algs[j]);
- iounmap(dd->io_base);
- io_err:
-- clk_put(dd->iclk);
-+ pm_runtime_put_sync(dev);
-+ udelay(1);
-+ pm_runtime_disable(dev);
-+ udelay(1);
-+
- clk_err:
- omap4_sham_dma_cleanup(dd);
- dma_err:
-@@ -1379,7 +1378,11 @@ static int __devexit omap4_sham_remove(struct platform_device *pdev)
- crypto_unregister_ahash(&algs[i]);
- tasklet_kill(&dd->done_task);
- iounmap(dd->io_base);
-- clk_put(dd->iclk);
-+ pm_runtime_put_sync(&pdev->dev);
-+ udelay(1);
-+ pm_runtime_disable(&pdev->dev);
-+ udelay(1);
-+
- omap4_sham_dma_cleanup(dd);
- if (dd->irq >= 0)
- free_irq(dd->irq, dd);
---
-1.7.0.4
diff --git a/recipes-kernel/linux/linux-am335x-psp-3.2/0001-am335x-Re-enable-Turbo-and-Nitro-modes-for-Beaglebon.patch b/recipes-kernel/linux/linux-am335x-psp-3.2/0001-am335x-Re-enable-Turbo-and-Nitro-modes-for-Beaglebon.patch
deleted file mode 100644
index 17a87af..0000000
--- a/recipes-kernel/linux/linux-am335x-psp-3.2/0001-am335x-Re-enable-Turbo-and-Nitro-modes-for-Beaglebon.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From ec0ec41418ec1193e4352f1983ab29173f10f855 Mon Sep 17 00:00:00 2001
-From: Steve Kipisz <s-kipisz2 at ti.com>
-Date: Wed, 5 Jun 2013 10:10:44 -0500
-Subject: [PATCH] am335x:Re-enable Turbo and Nitro modes for Beaglebone Black
- The Beaglebone Black boards use a speed binned PG2.0 AM335x
- that operate up to 1GHz so re-enable those modes for
- Beaglebone Black.
-
-Signed-off-by: Steve Kipisz <s-kipisz2 at ti.com>
----
- arch/arm/mach-omap2/board-am335xevm.c | 14 ++++++++++++++
- 1 file changed, 14 insertions(+)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index bac415c..47e5a9d 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -2529,6 +2529,20 @@ static void am335x_evm_setup(struct memory_accessor *mem_acc, void *context)
-
- am335x_opp_update();
-
-+ /*
-+ * For now, Beaglebone Black uses PG 2.0 that are speed binned and operate
-+ * up to 1GHz. So re-enable Turbo and Nitro modes,
-+ */
-+ if (!strncmp("A335BNLT", config.name, 8)) {
-+ struct device *mpu_dev;
-+
-+ mpu_dev = omap_device_get_by_hwmod_name("mpu");
-+ opp_enable(mpu_dev,
-+ AM33XX_ES2_0_OPPTURBO_FREQ);
-+ opp_enable(mpu_dev,
-+ AM33XX_ES2_0_OPPNITRO_FREQ);
-+ }
-+
- /* SmartReflex also requires board information. */
- am33xx_sr_init();
-
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-am335x-psp-3.2/0001-am335x-enable-pullup-on-the-WLAN-enable-pin-fo.patch b/recipes-kernel/linux/linux-am335x-psp-3.2/0001-am335x-enable-pullup-on-the-WLAN-enable-pin-fo.patch
deleted file mode 100644
index 863fe37..0000000
--- a/recipes-kernel/linux/linux-am335x-psp-3.2/0001-am335x-enable-pullup-on-the-WLAN-enable-pin-fo.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From f69ffbef6793b7238a8518481735fd53326e0cdf Mon Sep 17 00:00:00 2001
-From: Vita Preskovsky <vitap at ti.com>
-Date: Tue, 24 Jul 2012 20:02:28 +0300
-Subject: [PATCH] am335x: enable pullup on the WLAN enable pin for keeping wlan
-
- * Enable pullup on the WLAN enable pin for keeping wlan active
- during suspend in wowlan mode. The fix is relevant only in the case
- of am335x-SK board.
-
-
-Signed-off-by: Vita Preskovsky <vitap at ti.com>
----
- arch/arm/mach-omap2/board-am335xevm.c | 22 ++++++++++++++++++++++
- 1 files changed, 22 insertions(+), 0 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index f68710c..f263f84 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -1673,13 +1673,35 @@ static void wl12xx_bluetooth_enable(void)
- gpio_direction_output(am335xevm_wlan_data.bt_enable_gpio, 0);
- }
-
-+#define AM33XX_CTRL_REGADDR(reg) \
-+ AM33XX_L4_WK_IO_ADDRESS(AM33XX_SCM_BASE + (reg))
-+
-+/* wlan enable pin */
-+#define AM33XX_CONTROL_PADCONF_GPMC_CSN0_OFFSET 0x087C
- static int wl12xx_set_power(struct device *dev, int slot, int on, int vdd)
- {
-+ int pad_mux_value;
-+
- if (on) {
- gpio_direction_output(am335xevm_wlan_data.wlan_enable_gpio, 1);
-+
-+ /* Enable pullup on the WLAN enable pin for keeping wlan active during suspend
-+ in wowlan mode */
-+ if ( am335x_evm_get_id() == EVM_SK ) {
-+ pad_mux_value = readl(AM33XX_CTRL_REGADDR(AM33XX_CONTROL_PADCONF_GPMC_CSN0_OFFSET));
-+ pad_mux_value &= (~AM33XX_PULL_DISA);
-+ writel(pad_mux_value, AM33XX_CTRL_REGADDR(AM33XX_CONTROL_PADCONF_GPMC_CSN0_OFFSET));
-+ }
-+
- mdelay(70);
- } else {
- gpio_direction_output(am335xevm_wlan_data.wlan_enable_gpio, 0);
-+ /* Disable pullup on the WLAN enable when WLAN is off */
-+ if ( am335x_evm_get_id() == EVM_SK ) {
-+ pad_mux_value = readl(AM33XX_CTRL_REGADDR(AM33XX_CONTROL_PADCONF_GPMC_CSN0_OFFSET));
-+ pad_mux_value |= AM33XX_PULL_DISA;
-+ writel(pad_mux_value, AM33XX_CTRL_REGADDR(AM33XX_CONTROL_PADCONF_GPMC_CSN0_OFFSET));
-+ }
- }
-
- return 0;
---
-1.7.0.4
diff --git a/recipes-kernel/linux/linux-am335x-psp-3.2/0001-am335xevm-using-edge-triggered-interrupts-for-WLAN.patch b/recipes-kernel/linux/linux-am335x-psp-3.2/0001-am335xevm-using-edge-triggered-interrupts-for-WLAN.patch
deleted file mode 100644
index 98b3a31..0000000
--- a/recipes-kernel/linux/linux-am335x-psp-3.2/0001-am335xevm-using-edge-triggered-interrupts-for-WLAN.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From be52bac69dfe6a56276b16ccd234970c4f7b1255 Mon Sep 17 00:00:00 2001
-From: Vita Preskovsky <vitap at ti.com>
-Date: Wed, 18 Jul 2012 16:20:36 +0300
-Subject: [PATCH] am335xevm: using edge triggered interrupts for WLAN
-
- *using edge triggered interrupts instead of default level triggered in
- all platforms supporting WLAN. This reduces CPU cycles and possibility
- for missed interrupts.
-
-
-Signed-off-by: Vita Preskovsky <vitap at ti.com>
----
- arch/arm/mach-omap2/board-am335xevm.c | 3 +--
- 1 files changed, 1 insertions(+), 2 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index 6ae4e68..ac005c8 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -1679,12 +1679,11 @@ static void wl12xx_init(int evm_id, int profile)
- am335xevm_wlan_data.bt_enable_gpio = GPIO_TO_PIN(3, 21);
- am335xevm_wlan_data.irq =
- OMAP_GPIO_IRQ(AM335XEVM_SK_WLAN_IRQ_GPIO);
-- am335xevm_wlan_data.platform_quirks =
-- WL12XX_PLATFORM_QUIRK_EDGE_IRQ;
- setup_pin_mux(wl12xx_pin_mux_sk);
- } else {
- setup_pin_mux(wl12xx_pin_mux);
- }
-+ am335xevm_wlan_data.platform_quirks = WL12XX_PLATFORM_QUIRK_EDGE_IRQ;
- wl12xx_bluetooth_enable();
-
- if (wl12xx_set_platform_data(&am335xevm_wlan_data))
---
-1.7.0.4
diff --git a/recipes-kernel/linux/linux-am335x-psp-3.2/0001-am33x-Add-memory-addresses-for-crypto-modules.patch b/recipes-kernel/linux/linux-am335x-psp-3.2/0001-am33x-Add-memory-addresses-for-crypto-modules.patch
deleted file mode 100644
index f92a7fc..0000000
--- a/recipes-kernel/linux/linux-am335x-psp-3.2/0001-am33x-Add-memory-addresses-for-crypto-modules.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 5f2f17a488aba4319b537aed040ea13607af128b Mon Sep 17 00:00:00 2001
-From: Greg Turner <gregturner at ti.com>
-Date: Thu, 17 May 2012 14:25:40 -0500
-Subject: [PATCH 1/8] am33x: Add memory addresses for crypto modules
-
-* Add base memory addresses to the am33xx.h header file
-
-These addresses are for the HW crypto modules including TRNG, AES, and SHA/MD5
-
-Signed-off-by: Greg Turner <gregturner at ti.com>
----
- arch/arm/plat-omap/include/plat/am33xx.h | 11 +++++++++++
- 1 files changed, 11 insertions(+), 0 deletions(-)
- mode change 100644 => 100755 arch/arm/plat-omap/include/plat/am33xx.h
-
-diff --git a/arch/arm/plat-omap/include/plat/am33xx.h b/arch/arm/plat-omap/include/plat/am33xx.h
-old mode 100644
-new mode 100755
-index a16e72c..96ab1c3
---- a/arch/arm/plat-omap/include/plat/am33xx.h
-+++ b/arch/arm/plat-omap/include/plat/am33xx.h
-@@ -65,6 +65,17 @@
-
- #define AM33XX_ELM_BASE 0x48080000
-
-+/* Base address for crypto modules */
-+#define AM33XX_SHA1MD5_S_BASE 0x53000000
-+#define AM33XX_SHA1MD5_P_BASE 0x53100000
-+
-+#define AM33XX_AES0_S_BASE 0x53400000
-+#define AM33XX_AES0_P_BASE 0x53500000
-+#define AM33XX_AES1_S_BASE 0x53600000
-+#define AM33XX_AES1_P_BASE 0x53700000
-+
-+#define AM33XX_RNG_BASE 0x48310000
-+
- #define AM33XX_ASP0_BASE 0x48038000
- #define AM33XX_ASP1_BASE 0x4803C000
-
---
-1.7.0.4
diff --git a/recipes-kernel/linux/linux-am335x-psp-3.2/0001-am33xx-Add-SmartReflex-support.patch b/recipes-kernel/linux/linux-am335x-psp-3.2/0001-am33xx-Add-SmartReflex-support.patch
deleted file mode 100644
index a17f62c..0000000
--- a/recipes-kernel/linux/linux-am335x-psp-3.2/0001-am33xx-Add-SmartReflex-support.patch
+++ /dev/null
@@ -1,2014 +0,0 @@
-From 35ae6b61d349e5b4efd1c6337a0d1e23b6e86899 Mon Sep 17 00:00:00 2001
-From: Greg Guyotte <gguyotte at ti.com>
-Date: Thu, 7 Jun 2012 18:05:31 -0500
-Subject: [PATCH] am33xx: Add SmartReflex support.
-
-This patch introduces SmartReflex support to AM33XX devices. The
-purpose of SmartReflex is to optimize (lower) voltage based upon
-silicon process and temperature.
-
-The SmartReflex driver requires the silicon to be programmed with
-"nTarget" EFUSE values. If the values are not present (as with
-pre-RTP samples), the driver will simply fail to load and kernel
-boot will continue normally.
-
-The SR driver logs several items in the debugfs at /debug/smartreflex.
-To disable SmartReflex, use the command 'echo 0 > /debug/smartreflex/autocomp'.
-The node /debug/smartreflex/smartreflex0 gives information about
-the CORE voltage domain, and /smartreflex1 is related to the MPU voltage
-domain.
-
-To determine the effectiveness of SmartReflex, you can compare the
-initial voltage with the current voltage for a given OPP. For example,
-'cat /debug/smartreflex/smartreflex1/current_voltage' gives the current
-MPU voltage. Comparing that with 'cat /debug/smartreflex/smartreflex1/
-initial_voltage' will show you the voltage drop associated with SR
-operation.
-
-Signed-off-by: Greg Guyotte <gguyotte at ti.com>
----
- arch/arm/mach-omap2/Makefile | 1 +
- arch/arm/mach-omap2/am33xx-smartreflex-class2.c | 1055 ++++++++++++++++++++
- arch/arm/mach-omap2/board-am335xevm.c | 7 +
- arch/arm/mach-omap2/devices.c | 269 +++++
- arch/arm/mach-omap2/include/mach/board-am335xevm.h | 1 +
- arch/arm/plat-omap/Kconfig | 21 +
- arch/arm/plat-omap/include/plat/am33xx.h | 3 +
- arch/arm/plat-omap/include/plat/smartreflex.h | 431 ++++++++
- drivers/regulator/core.c | 4 +
- include/linux/regulator/driver.h | 2 +-
- include/linux/regulator/machine.h | 3 +-
- 11 files changed, 1795 insertions(+), 2 deletions(-)
- create mode 100644 arch/arm/mach-omap2/am33xx-smartreflex-class2.c
- create mode 100644 arch/arm/plat-omap/include/plat/smartreflex.h
-
-diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile
-index f275e74..c01b62d 100644
---- a/arch/arm/mach-omap2/Makefile
-+++ b/arch/arm/mach-omap2/Makefile
-@@ -73,6 +73,7 @@ obj-$(CONFIG_SOC_OMAPAM33XX) += cpuidle33xx.o pm33xx.o \
- obj-$(CONFIG_PM_DEBUG) += pm-debug.o
- obj-$(CONFIG_OMAP_SMARTREFLEX) += sr_device.o smartreflex.o
- obj-$(CONFIG_OMAP_SMARTREFLEX_CLASS3) += smartreflex-class3.o
-+obj-$(CONFIG_AM33XX_SMARTREFLEX) += am33xx-smartreflex-class2.o
-
- AFLAGS_sleep24xx.o :=-Wa,-march=armv6
- AFLAGS_sleep34xx.o :=-Wa,-march=armv7-a$(plus_sec)
-diff --git a/arch/arm/mach-omap2/am33xx-smartreflex-class2.c b/arch/arm/mach-omap2/am33xx-smartreflex-class2.c
-new file mode 100644
-index 0000000..66f98b7
---- /dev/null
-+++ b/arch/arm/mach-omap2/am33xx-smartreflex-class2.c
-@@ -0,0 +1,1055 @@
-+/*
-+ * SmartReflex Voltage Control driver
-+ *
-+ * Copyright (C) 2012 Texas Instruments, Inc. - http://www.ti.com/
-+ * Author: Greg Guyotte <gguyotte at ti.com> (modified for AM33xx)
-+ *
-+ * Copyright (C) 2011 Texas Instruments, Inc. - http://www.ti.com/
-+ * Author: AnilKumar Ch <anilkumar at ti.com>
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License as
-+ * published by the Free Software Foundation version 2.
-+ *
-+ * This program is distributed "as is" WITHOUT ANY WARRANTY of any
-+ * kind, whether express or implied; without even the implied warranty
-+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ */
-+
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <linux/module.h>
-+#include <linux/interrupt.h>
-+#include <linux/clk.h>
-+#include <linux/io.h>
-+#include <linux/debugfs.h>
-+#include <linux/slab.h>
-+#include <linux/regulator/consumer.h>
-+#include <linux/cpufreq.h>
-+#include <linux/opp.h>
-+
-+#include <plat/common.h>
-+#include <plat/smartreflex.h>
-+
-+#include "control.h"
-+#include "voltage.h"
-+
-+#define CLK_NAME_LEN 40
-+
-+static inline void sr_write_reg(struct am33xx_sr *sr, int offset, u32 value,
-+ u32 srid)
-+{
-+ writel(value, sr->sen[srid].base + offset);
-+}
-+
-+static inline void sr_modify_reg(struct am33xx_sr *sr, int offset, u32 mask,
-+ u32 value, u32 srid)
-+{
-+ u32 reg_val;
-+
-+ reg_val = readl(sr->sen[srid].base + offset);
-+ reg_val &= ~mask;
-+ reg_val |= (value&mask);
-+
-+ writel(reg_val, sr->sen[srid].base + offset);
-+}
-+
-+static inline u32 sr_read_reg(struct am33xx_sr *sr, int offset, u32 srid)
-+{
-+ return readl(sr->sen[srid].base + offset);
-+}
-+
-+static void cal_reciprocal(u32 sensor, u32 *sengain, u32 *rnsen) {
-+ u32 gn, rn, mul;
-+
-+ for (gn = 0; gn < GAIN_MAXLIMIT; gn++) {
-+ mul = 1 << (gn + 8);
-+ rn = mul / sensor;
-+ if (rn < R_MAXLIMIT) {
-+ *sengain = gn;
-+ *rnsen = rn;
-+ }
-+ }
-+}
-+
-+static u32 cal_test_nvalue(u32 sennval, u32 senpval) {
-+ u32 senpgain=0, senngain=0;
-+ u32 rnsenp=0, rnsenn=0;
-+
-+ /* Calculating the gain and reciprocal of the SenN and SenP values */
-+ cal_reciprocal(senpval, &senpgain, &rnsenp);
-+ cal_reciprocal(sennval, &senngain, &rnsenn);
-+
-+ return (senpgain << NVALUERECIPROCAL_SENPGAIN_SHIFT) |
-+ (senngain << NVALUERECIPROCAL_SENNGAIN_SHIFT) |
-+ (rnsenp << NVALUERECIPROCAL_RNSENP_SHIFT) |
-+ (rnsenn << NVALUERECIPROCAL_RNSENN_SHIFT);
-+}
-+
-+static unsigned int sr_adjust_efuse_nvalue(unsigned int opp_no,
-+ unsigned int orig_opp_nvalue,
-+ unsigned int mv_delta) {
-+ unsigned int new_opp_nvalue;
-+ unsigned int senp_gain, senn_gain, rnsenp, rnsenn, pnt_delta, nnt_delta;
-+ unsigned int new_senn, new_senp, senn, senp;
-+
-+ /* calculate SenN and SenP from the efuse value */
-+ senp_gain = ((orig_opp_nvalue >> 20) & 0xf);
-+ senn_gain = ((orig_opp_nvalue >> 16) & 0xf);
-+ rnsenp = ((orig_opp_nvalue >> 8) & 0xff);
-+ rnsenn = (orig_opp_nvalue & 0xff);
-+
-+ senp = ((1<<(senp_gain+8))/(rnsenp));
-+ senn = ((1<<(senn_gain+8))/(rnsenn));
-+
-+ /* calculate the voltage delta */
-+ pnt_delta = (26 * mv_delta)/10;
-+ nnt_delta = (3 * mv_delta);
-+
-+ /* now lets add the voltage delta to the sensor values */
-+ new_senn = senn + nnt_delta;
-+ new_senp = senp + pnt_delta;
-+
-+ new_opp_nvalue = cal_test_nvalue(new_senn, new_senp);
-+
-+ printk("Compensating OPP%d for %dmV Orig nvalue:0x%x New nvalue:0x%x \n",
-+ opp_no, mv_delta, orig_opp_nvalue, new_opp_nvalue);
-+
-+ return new_opp_nvalue;
-+}
-+
-+/* irq_sr_reenable - Re-enable SR interrupts (triggered by delayed work queue)
-+ * @work: pointer to work_struct embedded in am33xx_sr_sensor struct
-+ *
-+ * While servicing the IRQ, this function is added to the delayed work queue.
-+ * This gives time for the voltage change to settle before we re-enable
-+ * the interrupt.
-+ */
-+static void irq_sr_reenable(struct work_struct *work)
-+{
-+ u32 srid;
-+ struct am33xx_sr_sensor *sens;
-+ struct am33xx_sr *sr;
-+
-+ sens = container_of((void *)work, struct am33xx_sr_sensor,
-+ work_reenable);
-+
-+ srid = sens->sr_id;
-+
-+ sr = container_of((void *)sens, struct am33xx_sr, sen[srid]);
-+
-+ dev_dbg(&sr->pdev->dev, "%s: SR %d\n", __func__, srid);
-+
-+ /* Must clear IRQ status */
-+ sens->irq_status = 0;
-+
-+ /* Re-enable the interrupt */
-+ sr_modify_reg(sr, IRQENABLE_SET, IRQENABLE_MCUBOUNDSINT,
-+ IRQENABLE_MCUBOUNDSINT, srid);
-+
-+ /* Restart the module after voltage set */
-+ sr_modify_reg(sr, SRCONFIG, SRCONFIG_SRENABLE,
-+ SRCONFIG_SRENABLE, srid);
-+}
-+
-+/* get_errvolt - get error voltage from SR error register
-+ * @sr: contains SR driver data
-+ * @srid: contains the srid, indicates which SR moduel lswe are using
-+ *
-+ * Read the error from SENSOR error register and then convert
-+ * to voltage delta, return value is the voltage delta in micro
-+ * volt.
-+ */
-+static int get_errvolt(struct am33xx_sr *sr, s32 srid)
-+{
-+ struct am33xx_sr_sensor *sens;
-+ int senerror_reg;
-+ s32 uvoltage;
-+ s8 terror;
-+
-+ sens = &sr->sen[srid];
-+
-+ senerror_reg = sr_read_reg(sr, SENERROR_V2, srid);
-+ senerror_reg = (senerror_reg & 0x0000FF00);
-+ terror = (s8)(senerror_reg >> 8);
-+
-+ /* math defined in SR functional spec */
-+ uvoltage = ((terror) * sr->uvoltage_step_size) >> 7;
-+ uvoltage = uvoltage * sens->opp_data[sens->curr_opp].e2v_gain;
-+
-+ return uvoltage;
-+}
-+
-+/* set_voltage - Schedule task for setting the voltage
-+ * @work: pointer to the work structure
-+ *
-+ * Voltage is set based on previous voltage and calculated
-+ * voltage error.
-+ *
-+ * Generic voltage regulator set voltage is used for changing
-+ * the voltage to new value. Could potentially use voltdm_scale
-+ * but at time of testing voltdm was not populated with volt_data.
-+ *
-+ * Disabling the module before changing the voltage, this is
-+ * needed for not generating interrupt during voltage change,
-+ * enabling after voltage change. This will also take care of
-+ * resetting the SR registers.
-+ */
-+static void set_voltage(struct work_struct *work)
-+{
-+ struct am33xx_sr *sr;
-+ int prev_volt, new_volt, i, ret;
-+ s32 delta_v;
-+
-+ sr = container_of((void *)work, struct am33xx_sr, work);
-+
-+ for (i = 0; i < sr->no_of_sens; i++) {
-+ if (sr->sen[i].irq_status != 1)
-+ continue;
-+
-+ /* Get the current voltage from PMIC */
-+ prev_volt = regulator_get_voltage(sr->sen[i].reg);
-+
-+ if (prev_volt < 0) {
-+ dev_err(&sr->pdev->dev,
-+ "%s: SR %d: regulator_get_voltage error %d\n",
-+ __func__, i, prev_volt);
-+
-+ goto reenable;
-+ }
-+
-+ delta_v = get_errvolt(sr, i);
-+ new_volt = prev_volt + delta_v;
-+
-+ /* this is the primary output for debugging SR activity */
-+ dev_dbg(&sr->pdev->dev,
-+ "%s: SR %d: prev volt=%d, delta_v=%d, req_volt=%d\n",
-+ __func__, i, prev_volt, delta_v, new_volt);
-+
-+ /* Clear the counter, SR module disable */
-+ sr_modify_reg(sr, SRCONFIG, SRCONFIG_SRENABLE,
-+ ~SRCONFIG_SRENABLE, i);
-+
-+ if (delta_v != 0) {
-+ ret = regulator_set_voltage(sr->sen[i].reg, new_volt,
-+ new_volt + sr->uvoltage_step_size);
-+
-+ if (ret < 0)
-+ dev_err(&sr->pdev->dev,
-+ "%s: regulator_set_voltage failed! (err %d)\n",
-+ __func__, ret);
-+ }
-+reenable:
-+ /* allow time for voltage to settle before re-enabling SR
-+ module and interrupt */
-+ schedule_delayed_work(&sr->sen[i].work_reenable,
-+ msecs_to_jiffies(sr->irq_delay));
-+ }
-+}
-+
-+/* sr_class2_irq - sr irq handling
-+ * @irq: Number of the irq serviced
-+ * @data: data contains the SR driver structure
-+ *
-+ * Smartreflex IRQ handling for class2 IP, once the IRQ handler
-+ * is here then disable the interrupt and re-enable after some
-+ * time. This is the work around for handling both interrupts,
-+ * while one got satisfied with the voltage change but not the
-+ * other. The same logic helps the case where PMIC cannot set
-+ * the exact voltage requested by SR IP
-+ *
-+ * Schedule work only if both interrupts are serviced
-+ *
-+ * Note that same irq handler is used for both the interrupts,
-+ * needed for decision making for voltage change
-+ */
-+static irqreturn_t sr_class2_irq(int irq, void *data)
-+{
-+ u32 srid;
-+ struct am33xx_sr *sr;
-+ struct am33xx_sr_sensor *sr_sensor = (struct am33xx_sr_sensor *)data;
-+
-+ srid = sr_sensor->sr_id;
-+
-+ sr = container_of(data, struct am33xx_sr, sen[srid]);
-+
-+ sr->sen[srid].irq_status = 1;
-+
-+ /* Clear MCUBounds Interrupt */
-+ sr_modify_reg(sr, IRQSTATUS, IRQSTATUS_MCBOUNDSINT,
-+ IRQSTATUS_MCBOUNDSINT, srid);
-+
-+ /* Disable the interrupt and re-enable in set_voltage() */
-+ sr_modify_reg(sr, IRQENABLE_CLR, IRQENABLE_MCUBOUNDSINT,
-+ IRQENABLE_MCUBOUNDSINT, srid);
-+
-+ /* Causes set_voltage() to get called at a later time. Set_voltage()
-+ will check the irq_status flags to determine which SR needs to
-+ be serviced. This was previously done with schedule_work, but
-+ I observed a crash in set_voltage() when changing OPPs on weak
-+ silicon, which may have been related to insufficient voltage
-+ settling time for OPP change. This additional delay avoids the
-+ crash. */
-+ schedule_delayed_work(&sr->work,
-+ msecs_to_jiffies(250));
-+
-+ return IRQ_HANDLED;
-+}
-+
-+static int sr_clk_enable(struct am33xx_sr *sr, u32 srid)
-+{
-+ if (clk_enable(sr->sen[srid].fck) != 0) {
-+ dev_err(&sr->pdev->dev, "%s: Could not enable sr_fck\n",
-+ __func__);
-+ return -EINVAL;
-+ }
-+
-+ return 0;
-+}
-+
-+static int sr_clk_disable(struct am33xx_sr *sr, u32 srid)
-+{
-+ clk_disable(sr->sen[srid].fck);
-+
-+ return 0;
-+}
-+
-+static inline int sr_set_nvalues(struct am33xx_sr *sr, u32 srid)
-+{
-+ int i;
-+ struct am33xx_sr_sensor *sens = &sr->sen[srid];
-+
-+ for (i = 0; i < sens->no_of_opps; i++) {
-+ /* Read nTarget value form EFUSE register*/
-+ sens->opp_data[i].nvalue = readl(AM33XX_CTRL_REGADDR
-+ (sens->opp_data[i].efuse_offs)) & 0xFFFFFF;
-+
-+ /* validate nTarget value */
-+ if (sens->opp_data[i].nvalue == 0)
-+ return -EINVAL;
-+
-+ /* adjust nTarget based on margin in mv */
-+ sens->opp_data[i].adj_nvalue = sr_adjust_efuse_nvalue(i,
-+ sens->opp_data[i].nvalue,
-+ sens->opp_data[i].margin);
-+
-+ dev_dbg(&sr->pdev->dev,
-+ "NValueReciprocal value (from efuse) = %08x\n",
-+ sens->opp_data[i].nvalue);
-+
-+ dev_dbg(&sr->pdev->dev,
-+ "Adjusted NValueReciprocal value = %08x\n",
-+ sens->opp_data[i].adj_nvalue);
-+ }
-+ return 0;
-+}
-+
-+/* sr_configure - Configure SR module to work in Error generator mode
-+ * @sr: contains SR driver data
-+ * @srid: contains the srid, specify whether it is CORE or MPU
-+ *
-+ * Configure the corresponding values to SR module registers for
-+ * operating SR module in Error Generator mode.
-+ */
-+static void sr_configure(struct am33xx_sr *sr, u32 srid)
-+{
-+ struct am33xx_sr_sensor *sens = &sr->sen[srid];
-+
-+ /* Configuring the SR module with clock length, enabling the
-+ * error generator, enable SR module, enable individual N and P
-+ * sensors
-+ */
-+ sr_write_reg(sr, SRCONFIG, (SRCLKLENGTH_125MHZ_SYSCLK |
-+ SRCONFIG_SENENABLE | SRCONFIG_ERRGEN_EN |
-+ (sens->senn_en << SRCONFIG_SENNENABLE_V2_SHIFT) |
-+ (sens->senp_en << SRCONFIG_SENPENABLE_V2_SHIFT)),
-+ srid);
-+
-+ /* Configuring the Error Generator */
-+ sr_modify_reg(sr, ERRCONFIG_V2, (SR_ERRWEIGHT_MASK |
-+ SR_ERRMAXLIMIT_MASK | SR_ERRMINLIMIT_MASK),
-+ ((sens->opp_data[sens->curr_opp].err_weight <<
-+ ERRCONFIG_ERRWEIGHT_SHIFT) |
-+ (sens->opp_data[sens->curr_opp].err_maxlimit <<
-+ ERRCONFIG_ERRMAXLIMIT_SHIFT) |
-+ (sens->opp_data[sens->curr_opp].err_minlimit <<
-+ ERRCONFIG_ERRMINLIMIT_SHIFT)),
-+ srid);
-+}
-+
-+/* sr_enable - Enable SR module
-+ * @sr: contains SR driver data
-+ * @srid: contains the srid, specify whether it is CORE or MPU
-+ *
-+ * Enable SR module by writing nTarget values to corresponding SR
-+ * NVALUERECIPROCAL register, enable the interrupt and enable SR
-+ */
-+static void sr_enable(struct am33xx_sr *sr, u32 srid)
-+{
-+ struct am33xx_sr_sensor *sens;
-+
-+ sens = &sr->sen[srid];
-+
-+ /* Check if SR is already enabled. If yes do nothing */
-+ if (sr_read_reg(sr, SRCONFIG, srid) & SRCONFIG_SRENABLE)
-+ return;
-+
-+ if (sens->opp_data[sens->curr_opp].nvalue == 0)
-+ dev_err(&sr->pdev->dev,
-+ "%s: OPP doesn't support SmartReflex\n", __func__);
-+
-+ /* Writing the nReciprocal value to the register */
-+ sr_write_reg(sr, NVALUERECIPROCAL,
-+ sens->opp_data[sens->curr_opp].adj_nvalue, srid);
-+
-+ /* Enable the interrupt */
-+ sr_modify_reg(sr, IRQENABLE_SET, IRQENABLE_MCUBOUNDSINT,
-+ IRQENABLE_MCUBOUNDSINT, srid);
-+
-+ /* SRCONFIG - enable SR */
-+ sr_modify_reg(sr, SRCONFIG, SRCONFIG_SRENABLE,
-+ SRCONFIG_SRENABLE, srid);
-+}
-+
-+/* sr_disable - Disable SR module
-+ * @sr: contains SR driver data
-+ * @srid: contains the srid, specify whether it is CORE or MPU
-+ *
-+ * Disable SR module by disabling the interrupt and Smartreflex module
-+ */
-+static void sr_disable(struct am33xx_sr *sr, u32 srid)
-+{
-+ /* Disable the interrupt */
-+ sr_modify_reg(sr, IRQENABLE_CLR, IRQENABLE_MCUBOUNDSINT,
-+ IRQENABLE_MCUBOUNDSINT, srid);
-+
-+ /* SRCONFIG - disable SR */
-+ sr_modify_reg(sr, SRCONFIG, SRCONFIG_SRENABLE,
-+ ~SRCONFIG_SRENABLE, srid);
-+}
-+
-+/* sr_start_vddautocomp - Start VDD auto compensation
-+ * @sr: contains SR driver data
-+ *
-+ * This is the starting point for AVS enable from user space.
-+ * Also used to re-enable SR after OPP change.
-+ */
-+static void sr_start_vddautocomp(struct am33xx_sr *sr)
-+{
-+ int i;
-+
-+ if ((sr->sen[SR_CORE].opp_data[0].nvalue == 0) ||
-+ (sr->sen[SR_MPU].opp_data[0].nvalue == 0)) {
-+ dev_err(&sr->pdev->dev, "SR module not enabled, nTarget"
-+ " values are not found\n");
-+ return;
-+ }
-+
-+ if (sr->autocomp_active == 1) {
-+ dev_warn(&sr->pdev->dev, "SR VDD autocomp already active\n");
-+ return;
-+ }
-+
-+ for (i = 0; i < sr->no_of_sens; i++) {
-+ /* Read current regulator value and voltage */
-+ sr->sen[i].init_volt_mv = regulator_get_voltage(sr->sen[i].reg);
-+
-+ dev_dbg(&sr->pdev->dev, "%s: regulator %d, init_volt = %d\n",
-+ __func__, i, sr->sen[i].init_volt_mv);
-+
-+ if (sr_clk_enable(sr, i))
-+ return;
-+ sr_configure(sr, i);
-+ sr_enable(sr, i);
-+ }
-+
-+ sr->autocomp_active = 1;
-+}
-+
-+/* sr_stop_vddautocomp - Stop VDD auto compensation
-+ * @sr: contains SR driver data
-+ *
-+ * This is the ending point during SR disable from user space.
-+ * Also used to disable SR after OPP change.
-+ */
-+static void sr_stop_vddautocomp(struct am33xx_sr *sr)
-+{
-+ int i;
-+
-+ if (sr->autocomp_active == 0) {
-+ dev_warn(&sr->pdev->dev, "SR VDD autocomp is not active\n");
-+ return;
-+ }
-+
-+ /* cancel bottom half interrupt handlers that haven't run yet */
-+ cancel_delayed_work_sync(&sr->work);
-+
-+ for (i = 0; i < sr->no_of_sens; i++) {
-+ /* cancel any outstanding SR IRQ re-enables on work queue */
-+ cancel_delayed_work_sync(&sr->sen[i].work_reenable);
-+ sr_disable(sr, i);
-+ sr_clk_disable(sr, i);
-+ }
-+
-+ sr->autocomp_active = 0;
-+}
-+
-+/* am33xx_sr_autocomp_show - Store user input value and stop SR
-+ * @data: contains SR driver data
-+ * @val: pointer to store autocomp_active status
-+ *
-+ * This is the Debug Fs enteries to show whether SR is enabled
-+ * or disabled
-+ */
-+static int am33xx_sr_autocomp_show(void *data, u64 *val)
-+{
-+ struct am33xx_sr *sr_info = (struct am33xx_sr *) data;
-+
-+ *val = (u64) sr_info->autocomp_active;
-+
-+ return 0;
-+}
-+
-+static int am33xx_sr_margin_show(void *data, u64 *val)
-+{
-+ struct am33xx_sr_opp_data *sr_opp_data = (struct am33xx_sr_opp_data *)data;
-+
-+ *val = (u64) sr_opp_data->margin;
-+
-+ return 0;
-+}
-+
-+static int am33xx_sr_margin_update(void *data, u64 val)
-+{
-+ struct am33xx_sr_opp_data *sr_opp_data =
-+ (struct am33xx_sr_opp_data *)data;
-+ struct am33xx_sr_sensor *sr_sensor;
-+ struct am33xx_sr *sr_info;
-+
-+ /* work back to the sr_info pointer */
-+ sr_sensor = container_of((void *)sr_opp_data, struct am33xx_sr_sensor,
-+ opp_data[sr_opp_data->opp_id]);
-+
-+ sr_info = container_of((void *)sr_sensor, struct am33xx_sr,
-+ sen[sr_sensor->sr_id]);
-+
-+ /* store the value of margin */
-+ sr_opp_data->margin = (s32)val;
-+
-+ dev_warn(&sr_info->pdev->dev, "%s: new margin=%d, srid=%d, opp=%d\n",
-+ __func__, sr_opp_data->margin, sr_sensor->sr_id,
-+ sr_opp_data->opp_id);
-+
-+ /* updata ntarget values based upon new margin */
-+ if (sr_set_nvalues(sr_info, sr_sensor->sr_id) == -EINVAL)
-+ dev_err(&sr_info->pdev->dev,
-+ "%s: Zero NValue read from EFUSE\n", __func__);
-+
-+ /* restart SmartReflex to adapt to new values */
-+ sr_stop_vddautocomp(sr_info);
-+ sr_start_vddautocomp(sr_info);
-+
-+ return 0;
-+}
-+
-+/* am33xx_sr_autocomp_store - Store user input and start SR
-+ * @data: contains SR driver data
-+ * @val: contains the value pased by user
-+ *
-+ * This is the Debug Fs enteries to store user input and
-+ * enable smartreflex.
-+ */
-+static int am33xx_sr_autocomp_store(void *data, u64 val)
-+{
-+ struct am33xx_sr *sr_info = (struct am33xx_sr *) data;
-+
-+ /* Sanity check */
-+ if (val && (val != 1)) {
-+ dev_warn(&sr_info->pdev->dev, "%s: Invalid argument %llu\n",
-+ __func__, val);
-+ return -EINVAL;
-+ }
-+
-+ if (!val) {
-+ sr_info->disabled_by_user = 1;
-+ sr_stop_vddautocomp(sr_info);
-+ }
-+ else {
-+ sr_info->disabled_by_user = 0;
-+ sr_start_vddautocomp(sr_info);
-+ }
-+
-+ return 0;
-+}
-+
-+DEFINE_SIMPLE_ATTRIBUTE(sr_fops, am33xx_sr_autocomp_show,
-+ am33xx_sr_autocomp_store, "%llu\n");
-+
-+/* sr_curr_volt_show - Show current voltage value
-+ * @data: contains SR driver data
-+ * @val: pointer to store current voltage value
-+ *
-+ * Read the current voltage value and display the same on console
-+ * This is used in debugfs entries
-+ */
-+static int am33xx_sr_curr_volt_show(void *data, u64 *val)
-+{
-+ struct am33xx_sr_sensor *sr_sensor = (struct am33xx_sr_sensor *) data;
-+
-+ *val = (u64) regulator_get_voltage(sr_sensor->reg);
-+
-+ return 0;
-+}
-+
-+DEFINE_SIMPLE_ATTRIBUTE(curr_volt_fops, am33xx_sr_curr_volt_show,
-+ NULL, "%llu\n");
-+
-+DEFINE_SIMPLE_ATTRIBUTE(margin_fops, am33xx_sr_margin_show,
-+ am33xx_sr_margin_update, "%llu\n");
-+
-+#ifdef CONFIG_DEBUG_FS
-+/* sr_debugfs_entries - Create debugfs entries
-+ * @sr_info: contains SR driver data
-+ *
-+ * Create debugfs entries, which is exposed to user for knowing
-+ * the current status. Some of the parameters can change during
-+ * run time
-+ */
-+static int sr_debugfs_entries(struct am33xx_sr *sr_info)
-+{
-+ struct am33xx_sr_sensor *sens;
-+ struct dentry *dbg_dir, *sen_dir, *opp_dir;
-+ int i, j;
-+
-+ dbg_dir = debugfs_create_dir("smartreflex", NULL);
-+ if (IS_ERR(dbg_dir)) {
-+ dev_err(&sr_info->pdev->dev, "%s: Unable to create debugfs"
-+ " directory\n", __func__);
-+ return PTR_ERR(dbg_dir);
-+ }
-+
-+ (void) debugfs_create_file("autocomp", S_IRUGO | S_IWUGO, dbg_dir,
-+ (void *)sr_info, &sr_fops);
-+ (void) debugfs_create_u32("interrupt_delay", S_IRUGO | S_IWUGO,
-+ dbg_dir, &sr_info->irq_delay);
-+
-+ for (i = 0; i < sr_info->no_of_sens; i++) {
-+ sens = &sr_info->sen[i];
-+ sen_dir = debugfs_create_dir(sens->name, dbg_dir);
-+ if (IS_ERR(sen_dir)) {
-+ dev_err(&sr_info->pdev->dev, "%s: Unable to create"
-+ " debugfs directory\n", __func__);
-+ return PTR_ERR(sen_dir);
-+ }
-+
-+ (void)debugfs_create_u32("initial_voltage", S_IRUGO, sen_dir,
-+ &sens->init_volt_mv);
-+ (void)debugfs_create_file("current_voltage", S_IRUGO, sen_dir,
-+ (void *)sens, &curr_volt_fops);
-+
-+ for (j = 0; j < sr_info->sen[i].no_of_opps; j++) {
-+ char tmp[20];
-+
-+ sprintf(&tmp[0], "opp%d", j);
-+ opp_dir = debugfs_create_dir(tmp, sen_dir);
-+ if (IS_ERR(opp_dir)) {
-+ dev_err(&sr_info->pdev->dev,
-+ "%s: Unable to create debugfs directory\n",
-+ __func__);
-+ return PTR_ERR(opp_dir);
-+ }
-+
-+ (void)debugfs_create_file("margin", S_IRUGO | S_IWUGO,
-+ opp_dir, (void *)&sens->opp_data[j],
-+ &margin_fops);
-+ (void)debugfs_create_x32("err2voltgain",
-+ S_IRUGO | S_IWUGO,
-+ opp_dir,
-+ &sens->opp_data[j].e2v_gain);
-+ (void)debugfs_create_x32("nvalue", S_IRUGO,
-+ opp_dir,
-+ &sens->opp_data[j].nvalue);
-+ (void)debugfs_create_x32("adj_nvalue", S_IRUGO,
-+ opp_dir,
-+ &sens->opp_data[j].adj_nvalue);
-+ }
-+ }
-+ return 0;
-+}
-+#else
-+static int sr_debugfs_entries(struct am33xx_sr *sr_info)
-+{
-+ return 0;
-+}
-+#endif
-+
-+#ifdef CONFIG_CPU_FREQ
-+
-+/* Find and return current OPP. This should change to use system APIs,
-+ but voltdm is not currently populated, and opp APIs are also not working. */
-+static int get_current_opp(struct am33xx_sr *sr, u32 srid, u32 freq) {
-+ int i;
-+
-+ for (i = 0; i < sr->sen[srid].no_of_opps; i++) {
-+ if (sr->sen[srid].opp_data[i].frequency == freq)
-+ return i;
-+ }
-+
-+ return -EINVAL;
-+}
-+
-+static int am33xx_sr_cpufreq_transition(struct notifier_block *nb,
-+ unsigned long val, void *data)
-+{
-+ struct am33xx_sr *sr;
-+ struct cpufreq_freqs *cpu;
-+
-+ sr = container_of(nb, struct am33xx_sr, freq_transition);
-+
-+ /* We are required to disable SR while OPP change is occurring */
-+ if (val == CPUFREQ_PRECHANGE) {
-+ dev_dbg(&sr->pdev->dev, "%s: prechange\n", __func__);
-+ sr_stop_vddautocomp(sr);
-+ } else if (val == CPUFREQ_POSTCHANGE) {
-+ cpu = (struct cpufreq_freqs *)data;
-+ dev_dbg(&sr->pdev->dev,
-+ "%s: postchange, cpu=%d, old=%d, new=%d\n",
-+ __func__, cpu->cpu, cpu->old, cpu->new);
-+
-+ /* update current OPP */
-+ sr->sen[SR_MPU].curr_opp = get_current_opp(sr, SR_MPU,
-+ cpu->new*1000);
-+ if (sr->sen[SR_MPU].curr_opp == -EINVAL) {
-+ dev_err(&sr->pdev->dev, "%s: cannot determine opp\n",
-+ __func__);
-+ return -EINVAL;
-+ }
-+
-+ dev_dbg(&sr->pdev->dev, "%s: postchange, new opp=%d\n",
-+ __func__, sr->sen[SR_MPU].curr_opp);
-+
-+ /* this handles the case when the user has disabled SR via
-+ debugfs, therefore we do not want to enable SR */
-+ if (sr->disabled_by_user == 0)
-+ sr_start_vddautocomp(sr);
-+ }
-+
-+ return 0;
-+}
-+
-+static inline int am33xx_sr_cpufreq_register(struct am33xx_sr *sr)
-+{
-+ sr->freq_transition.notifier_call = am33xx_sr_cpufreq_transition;
-+
-+ return cpufreq_register_notifier(&sr->freq_transition,
-+ CPUFREQ_TRANSITION_NOTIFIER);
-+}
-+
-+static inline void am33xx_sr_cpufreq_deregister(struct am33xx_sr *sr)
-+{
-+ cpufreq_unregister_notifier(&sr->freq_transition,
-+ CPUFREQ_TRANSITION_NOTIFIER);
-+}
-+
-+#endif
-+
-+static int __init am33xx_sr_probe(struct platform_device *pdev)
-+{
-+ struct am33xx_sr *sr_info;
-+ struct am33xx_sr_platform_data *pdata;
-+ struct resource *res[MAX_SENSORS];
-+ int irq;
-+ int ret;
-+ int i,j;
-+
-+ sr_info = kzalloc(sizeof(struct am33xx_sr), GFP_KERNEL);
-+ if (!sr_info) {
-+ dev_err(&pdev->dev, "%s: unable to allocate sr_info\n",
-+ __func__);
-+ return -ENOMEM;
-+ }
-+
-+ pdata = pdev->dev.platform_data;
-+ if (!pdata) {
-+ dev_err(&pdev->dev, "%s: platform data missing\n", __func__);
-+ ret = -EINVAL;
-+ goto err_free_sr_info;
-+ }
-+
-+ sr_info->pdev = pdev;
-+ sr_info->sen[SR_CORE].name = "smartreflex0";
-+ sr_info->sen[SR_MPU].name = "smartreflex1";
-+ sr_info->ip_type = pdata->ip_type;
-+ sr_info->irq_delay = pdata->irq_delay;
-+ sr_info->no_of_sens = pdata->no_of_sens;
-+ sr_info->no_of_vds = pdata->no_of_vds;
-+ sr_info->uvoltage_step_size = pdata->vstep_size_uv;
-+ sr_info->autocomp_active = false;
-+ sr_info->disabled_by_user = false;
-+
-+ for (i = 0; i < sr_info->no_of_sens; i++) {
-+ u32 curr_freq=0;
-+
-+ sr_info->sen[i].reg_name = pdata->vd_name[i];
-+
-+ /* this should be determined from voltdm or opp layer, but
-+ those approaches are not working */
-+ sr_info->sen[i].no_of_opps = pdata->sr_sdata[i].no_of_opps;
-+ sr_info->sen[i].sr_id = i;
-+
-+ /* Reading per OPP Values */
-+ for (j = 0; j < sr_info->sen[i].no_of_opps; j++) {
-+ sr_info->sen[i].opp_data[j].efuse_offs =
-+ pdata->sr_sdata[i].sr_opp_data[j].efuse_offs;
-+ sr_info->sen[i].opp_data[j].e2v_gain =
-+ pdata->sr_sdata[i].sr_opp_data[j].e2v_gain;
-+ sr_info->sen[i].opp_data[j].err_weight =
-+ pdata->sr_sdata[i].sr_opp_data[j].err_weight;
-+ sr_info->sen[i].opp_data[j].err_minlimit =
-+ pdata->sr_sdata[i].sr_opp_data[j].err_minlimit;
-+ sr_info->sen[i].opp_data[j].err_maxlimit =
-+ pdata->sr_sdata[i].sr_opp_data[j].err_maxlimit;
-+ sr_info->sen[i].opp_data[j].margin =
-+ pdata->sr_sdata[i].sr_opp_data[j].margin;
-+ sr_info->sen[i].opp_data[j].nominal_volt =
-+ pdata->sr_sdata[i].sr_opp_data[j].nominal_volt;
-+ sr_info->sen[i].opp_data[j].frequency =
-+ pdata->sr_sdata[i].sr_opp_data[j].frequency;
-+ sr_info->sen[i].opp_data[j].opp_id = j;
-+ }
-+
-+ if (i == SR_MPU) {
-+ /* hardcoded CPU NR */
-+ curr_freq = cpufreq_get(0);
-+
-+ /* update current OPP */
-+ sr_info->sen[i].curr_opp = get_current_opp(sr_info, i,
-+ curr_freq*1000);
-+ if (sr_info->sen[i].curr_opp == -EINVAL) {
-+ dev_err(&sr_info->pdev->dev,
-+ "%s: cannot determine opp\n",__func__);
-+ ret = -EINVAL;
-+ goto err_free_sr_info;
-+ }
-+ } else {
-+ sr_info->sen[i].curr_opp =
-+ pdata->sr_sdata[i].default_opp;
-+ }
-+
-+ dev_dbg(&pdev->dev,
-+ "%s: SR%d, curr_opp=%d, no_of_opps=%d, step_size=%d\n",
-+ __func__, i, sr_info->sen[i].curr_opp,
-+ sr_info->sen[i].no_of_opps,
-+ sr_info->uvoltage_step_size);
-+
-+ ret = sr_set_nvalues(sr_info, i);
-+ if (ret == -EINVAL) {
-+ dev_err(&sr_info->pdev->dev,
-+ "%s: Zero NValue read from EFUSE\n", __func__);
-+ goto err_free_sr_info;
-+ }
-+
-+ INIT_DELAYED_WORK(&sr_info->sen[i].work_reenable,
-+ irq_sr_reenable);
-+
-+ sr_info->res_name[i] = kzalloc(CLK_NAME_LEN + 1, GFP_KERNEL);
-+
-+ /* resources */
-+ res[i] = platform_get_resource_byname(pdev, IORESOURCE_MEM,
-+ sr_info->sen[i].name);
-+ if (!res[i]) {
-+ dev_err(&pdev->dev, "%s: no mem resource\n", __func__);
-+ ret = -ENOENT;
-+ goto err_free_mem;
-+ }
-+
-+ irq = platform_get_irq_byname(pdev, sr_info->sen[i].name);
-+ if (irq < 0) {
-+ dev_err(&pdev->dev, "Can't get interrupt resource\n");
-+ ret = irq;
-+ goto err_free_mem;
-+ }
-+ sr_info->sen[i].irq = irq;
-+
-+ res[i] = request_mem_region(res[i]->start,
-+ resource_size(res[i]), pdev->name);
-+ if (!res[i]) {
-+ dev_err(&pdev->dev, "can't request mem region\n");
-+ ret = -EBUSY;
-+ goto err_free_mem;
-+ }
-+
-+ sr_info->sen[i].base = ioremap(res[i]->start,
-+ resource_size(res[i]));
-+ if (!sr_info->sen[i].base) {
-+ dev_err(&pdev->dev, "%s: ioremap fail\n", __func__);
-+ ret = -ENOMEM;
-+ goto err_release_mem;
-+ }
-+
-+ strcat(sr_info->res_name[i], sr_info->sen[i].name);
-+ strcat(sr_info->res_name[i], "_fck");
-+
-+ sr_info->sen[i].fck = clk_get(NULL, sr_info->res_name[i]);
-+ if (IS_ERR(sr_info->sen[i].fck)) {
-+ dev_err(&pdev->dev, "%s: Could not get sr fck\n",
-+ __func__);
-+ ret = PTR_ERR(sr_info->sen[i].fck);
-+ goto err_unmap;
-+ }
-+
-+ ret = request_irq(sr_info->sen[i].irq, sr_class2_irq,
-+ IRQF_DISABLED, sr_info->sen[i].name,
-+ (void *)&sr_info->sen[i]);
-+ if (ret) {
-+ dev_err(&pdev->dev, "%s: Could not install SR ISR\n",
-+ __func__);
-+ goto err_put_clock;
-+ }
-+
-+ sr_info->sen[i].senn_en = pdata->sr_sdata[i].senn_mod;
-+ sr_info->sen[i].senp_en = pdata->sr_sdata[i].senp_mod;
-+
-+ sr_info->sen[i].reg =
-+ regulator_get(NULL, sr_info->sen[i].reg_name);
-+ if (IS_ERR(sr_info->sen[i].reg)) {
-+ ret = -EINVAL;
-+ goto err_free_irq;
-+ }
-+
-+ /* Read current regulator value and voltage */
-+ sr_info->sen[i].init_volt_mv =
-+ regulator_get_voltage(sr_info->sen[i].reg);
-+
-+ dev_dbg(&pdev->dev, "%s: regulator %d, init_volt = %d\n",
-+ __func__, i, sr_info->sen[i].init_volt_mv);
-+ } /* for() */
-+
-+ /* set_voltage() will be used as the bottom half IRQ handler */
-+ INIT_DELAYED_WORK(&sr_info->work, set_voltage);
-+
-+#ifdef CONFIG_CPU_FREQ
-+ ret = am33xx_sr_cpufreq_register(sr_info);
-+ if (ret) {
-+ dev_err(&pdev->dev, "failed to register cpufreq\n");
-+ goto err_reg_put;
-+ }
-+#endif
-+
-+ /* debugfs entries */
-+ ret = sr_debugfs_entries(sr_info);
-+ if (ret)
-+ dev_warn(&pdev->dev, "%s: Debugfs entries are not created\n",
-+ __func__);
-+
-+ platform_set_drvdata(pdev, sr_info);
-+
-+ dev_info(&pdev->dev, "%s: Driver initialized\n", __func__);
-+
-+ /* disabled_by_user used to ensure SR doesn't come on via CPUFREQ
-+ scaling if user has disabled SR via debugfs on enable_on_init */
-+ if (pdata->enable_on_init)
-+ sr_start_vddautocomp(sr_info);
-+ else
-+ sr_info->disabled_by_user = 1;
-+
-+ return ret;
-+
-+#ifdef CONFIG_CPU_FREQ
-+ am33xx_sr_cpufreq_deregister(sr_info);
-+#endif
-+
-+err_reg_put:
-+ i--; /* back up i by one to walk back through the for loop */
-+ regulator_put(sr_info->sen[i].reg);
-+err_free_irq:
-+ free_irq(sr_info->sen[i].irq, (void *)sr_info);
-+err_put_clock:
-+ clk_put(sr_info->sen[i].fck);
-+err_unmap:
-+ iounmap(sr_info->sen[i].base);
-+err_release_mem:
-+ release_mem_region(res[i]->start, resource_size(res[i]));
-+err_free_mem:
-+ kfree(sr_info->res_name[i]);
-+ /* unwind back through the for loop */
-+ if (i != 0) {
-+ goto err_reg_put;
-+ }
-+
-+err_free_sr_info:
-+ kfree(sr_info);
-+ return ret;
-+}
-+
-+static int __devexit am33xx_sr_remove(struct platform_device *pdev)
-+{
-+ struct am33xx_sr *sr_info;
-+ struct resource *res[MAX_SENSORS];
-+ int irq;
-+ int i;
-+
-+ sr_info = dev_get_drvdata(&pdev->dev);
-+ if (!sr_info) {
-+ dev_err(&pdev->dev, "%s: sr_info missing\n", __func__);
-+ return -EINVAL;
-+ }
-+
-+ if (sr_info->autocomp_active)
-+ sr_stop_vddautocomp(sr_info);
-+
-+#ifdef CONFIG_CPU_FREQ
-+ am33xx_sr_cpufreq_deregister(sr_info);
-+#endif
-+
-+ for (i = 0; i < sr_info->no_of_sens; i++) {
-+ regulator_put(sr_info->sen[i].reg);
-+ irq = platform_get_irq_byname(pdev, sr_info->sen[i].name);
-+ free_irq(irq, (void *)sr_info);
-+ clk_put(sr_info->sen[i].fck);
-+ iounmap(sr_info->sen[i].base);
-+ res[i] = platform_get_resource_byname(pdev,
-+ IORESOURCE_MEM, sr_info->sen[i].name);
-+ release_mem_region(res[i]->start, resource_size(res[i]));
-+ kfree(sr_info->res_name[i]);
-+ }
-+
-+ kfree(sr_info);
-+
-+ dev_info(&pdev->dev, "%s: SR has been removed\n", __func__);
-+ return 0;
-+}
-+
-+static struct platform_driver smartreflex_driver = {
-+ .driver = {
-+ .name = "smartreflex",
-+ .owner = THIS_MODULE,
-+ },
-+ .remove = am33xx_sr_remove,
-+};
-+
-+static int __init sr_init(void)
-+{
-+ int ret;
-+
-+ ret = platform_driver_probe(&smartreflex_driver, am33xx_sr_probe);
-+ if (ret) {
-+ pr_err("%s: platform driver register failed\n", __func__);
-+ return ret;
-+ }
-+
-+ return 0;
-+}
-+
-+static void __exit sr_exit(void)
-+{
-+ platform_driver_unregister(&smartreflex_driver);
-+}
-+late_initcall(sr_init);
-+module_exit(sr_exit);
-+
-+MODULE_DESCRIPTION("AM33XX Smartreflex Class2 Driver");
-+MODULE_LICENSE("GPL");
-+MODULE_ALIAS("platform:" DRIVER_NAME);
-+MODULE_AUTHOR("Texas Instruments Inc");
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index 0bcadd7..6e1c026 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -1410,6 +1410,7 @@ static struct regulator_init_data tps65217_regulator_data[] = {
- .num_consumer_supplies = ARRAY_SIZE(tps65217_dcdc2_consumers),
- .consumer_supplies = tps65217_dcdc2_consumers,
- .driver_data = &dcdc2_ramp_delay,
-+ .ignore_check_consumers = 1,
- },
-
- /* dcdc3 */
-@@ -1424,6 +1425,7 @@ static struct regulator_init_data tps65217_regulator_data[] = {
- },
- .num_consumer_supplies = ARRAY_SIZE(tps65217_dcdc3_consumers),
- .consumer_supplies = tps65217_dcdc3_consumers,
-+ .ignore_check_consumers = 1,
- },
-
- /* ldo1 */
-@@ -2214,6 +2216,9 @@ static void am335x_evm_setup(struct memory_accessor *mem_acc, void *context)
- goto out;
- }
-
-+ /* SmartReflex also requires board information. */
-+ am33xx_sr_init();
-+
- return;
-
- out:
-@@ -2265,6 +2270,7 @@ static struct regulator_init_data am335x_vdd1 = {
- },
- .num_consumer_supplies = ARRAY_SIZE(am335x_vdd1_supply),
- .consumer_supplies = am335x_vdd1_supply,
-+ .ignore_check_consumers = 1,
- };
-
- static struct regulator_consumer_supply am335x_vdd2_supply[] = {
-@@ -2281,6 +2287,7 @@ static struct regulator_init_data am335x_vdd2 = {
- },
- .num_consumer_supplies = ARRAY_SIZE(am335x_vdd2_supply),
- .consumer_supplies = am335x_vdd2_supply,
-+ .ignore_check_consumers = 1,
- };
-
- static struct tps65910_board am335x_tps65910_info = {
-diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c
-index 6113654..ebf0d9e 100644
---- a/arch/arm/mach-omap2/devices.c
-+++ b/arch/arm/mach-omap2/devices.c
-@@ -52,6 +52,7 @@
- #include <plat/config_pwm.h>
- #include <plat/cpu.h>
- #include <plat/gpmc.h>
-+#include <plat/smartreflex.h>
- #include <plat/am33xx.h>
-
- /* LCD controller similar DA8xx */
-@@ -60,10 +61,28 @@
- #include "mux.h"
- #include "control.h"
- #include "devices.h"
-+#include "omap_opp_data.h"
-
- #define L3_MODULES_MAX_LEN 12
- #define L3_MODULES 3
-
-+static unsigned int am33xx_evmid;
-+
-+/*
-+ * am33xx_evmid_fillup - set up board evmid
-+ * @evmid - evm id which needs to be configured
-+ *
-+ * This function is called to configure board evm id.
-+ * IA Motor Control EVM needs special setting of MAC PHY Id.
-+ * This function is called when IA Motor Control EVM is detected
-+ * during boot-up.
-+ */
-+void am33xx_evmid_fillup(unsigned int evmid)
-+{
-+ am33xx_evmid = evmid;
-+ return;
-+}
-+
- static int __init omap3_l3_init(void)
- {
- int l;
-@@ -1226,6 +1245,256 @@ static struct platform_device am335x_sgx = {
-
- #endif
-
-+#ifdef CONFIG_AM33XX_SMARTREFLEX
-+
-+/* smartreflex platform data */
-+
-+/* The values below are based upon silicon characterization data.
-+ * Each OPP and sensor combination potentially has different values.
-+ * The values of ERR2VOLT_GAIN and ERR_MIN_LIMIT also change based on
-+ * the PMIC step size. Values have been given to cover the AM335 EVM
-+ * (12.5mV step) and the Beaglebone (25mV step). If the step
-+ * size changes, you should update these values, and don't forget to
-+ * change the step size in the platform data structure, am33xx_sr_pdata.
-+ */
-+
-+#define AM33XX_SR0_OPP50_CNTRL_OFFSET 0x07B8
-+#define AM33XX_SR0_OPP50_EVM_ERR2VOLT_GAIN 0xC
-+#define AM33XX_SR0_OPP50_EVM_ERR_MIN_LIMIT 0xF5
-+#define AM33XX_SR0_OPP50_BB_ERR2VOLT_GAIN 0x6
-+#define AM33XX_SR0_OPP50_BB_ERR_MIN_LIMIT 0xEA
-+#define AM33XX_SR0_OPP50_ERR_MAX_LIMIT 0x2
-+#define AM33XX_SR0_OPP50_ERR_WEIGHT 0x4
-+#define AM33XX_SR0_OPP50_MARGIN 0
-+
-+#define AM33XX_SR0_OPP100_CNTRL_OFFSET 0x07BC
-+#define AM33XX_SR0_OPP100_EVM_ERR2VOLT_GAIN 0x12
-+#define AM33XX_SR0_OPP100_EVM_ERR_MIN_LIMIT 0xF8
-+#define AM33XX_SR0_OPP100_BB_ERR2VOLT_GAIN 0x9
-+#define AM33XX_SR0_OPP100_BB_ERR_MIN_LIMIT 0xF1
-+#define AM33XX_SR0_OPP100_ERR_MAX_LIMIT 0x2
-+#define AM33XX_SR0_OPP100_ERR_WEIGHT 0x4
-+#define AM33XX_SR0_OPP100_MARGIN 0
-+
-+#define AM33XX_SR1_OPP50_CNTRL_OFFSET 0x0770
-+#define AM33XX_SR1_OPP50_EVM_ERR2VOLT_GAIN 0x5
-+#define AM33XX_SR1_OPP50_EVM_ERR_MIN_LIMIT 0xE6
-+#define AM33XX_SR1_OPP50_BB_ERR2VOLT_GAIN 0x2
-+#define AM33XX_SR1_OPP50_BB_ERR_MIN_LIMIT 0xC0
-+#define AM33XX_SR1_OPP50_ERR_MAX_LIMIT 0x2
-+#define AM33XX_SR1_OPP50_ERR_WEIGHT 0x4
-+#define AM33XX_SR1_OPP50_MARGIN 0
-+
-+#define AM33XX_SR1_OPP100_CNTRL_OFFSET 0x0774
-+#define AM33XX_SR1_OPP100_EVM_ERR2VOLT_GAIN 0x8
-+#define AM33XX_SR1_OPP100_EVM_ERR_MIN_LIMIT 0xF0
-+#define AM33XX_SR1_OPP100_BB_ERR2VOLT_GAIN 0x4
-+#define AM33XX_SR1_OPP100_BB_ERR_MIN_LIMIT 0xDF
-+#define AM33XX_SR1_OPP100_ERR_MAX_LIMIT 0x2
-+#define AM33XX_SR1_OPP100_ERR_WEIGHT 0x4
-+#define AM33XX_SR1_OPP100_MARGIN 0
-+
-+#define AM33XX_SR1_OPP120_CNTRL_OFFSET 0x0778
-+#define AM33XX_SR1_OPP120_EVM_ERR2VOLT_GAIN 0xB
-+#define AM33XX_SR1_OPP120_EVM_ERR_MIN_LIMIT 0xF4
-+#define AM33XX_SR1_OPP120_BB_ERR2VOLT_GAIN 0x5
-+#define AM33XX_SR1_OPP120_BB_ERR_MIN_LIMIT 0xE6
-+#define AM33XX_SR1_OPP120_ERR_MAX_LIMIT 0x2
-+#define AM33XX_SR1_OPP120_ERR_WEIGHT 0x4
-+#define AM33XX_SR1_OPP120_MARGIN 0
-+
-+#define AM33XX_SR1_OPPTURBO_CNTRL_OFFSET 0x077C
-+#define AM33XX_SR1_OPPTURBO_EVM_ERR2VOLT_GAIN 0xC
-+#define AM33XX_SR1_OPPTURBO_EVM_ERR_MIN_LIMIT 0xF5
-+#define AM33XX_SR1_OPPTURBO_BB_ERR2VOLT_GAIN 0x6
-+#define AM33XX_SR1_OPPTURBO_BB_ERR_MIN_LIMIT 0xEA
-+#define AM33XX_SR1_OPPTURBO_ERR_MAX_LIMIT 0x2
-+#define AM33XX_SR1_OPPTURBO_ERR_WEIGHT 0x4
-+#define AM33XX_SR1_OPPTURBO_MARGIN 0
-+
-+/* the voltages and frequencies should probably be defined in opp3xxx_data.c.
-+ Once SR is integrated to the mainline driver, and voltdm is working
-+ correctly in AM335x, these can be removed. */
-+#define AM33XX_VDD_MPU_OPP50_UV 950000
-+#define AM33XX_VDD_MPU_OPP100_UV 1100000
-+#define AM33XX_VDD_MPU_OPP120_UV 1200000
-+#define AM33XX_VDD_MPU_OPPTURBO_UV 1260000
-+#define AM33XX_VDD_CORE_OPP50_UV 950000
-+#define AM33XX_VDD_CORE_OPP100_UV 1100000
-+
-+#define AM33XX_VDD_MPU_OPP50_FREQ 275000000
-+#define AM33XX_VDD_MPU_OPP100_FREQ 500000000
-+#define AM33XX_VDD_MPU_OPP120_FREQ 600000000
-+#define AM33XX_VDD_MPU_OPPTURBO_FREQ 720000000
-+
-+static struct am33xx_sr_opp_data sr1_opp_data[] = {
-+ {
-+ .efuse_offs = AM33XX_SR1_OPP50_CNTRL_OFFSET,
-+ .e2v_gain = AM33XX_SR1_OPP50_EVM_ERR2VOLT_GAIN,
-+ .err_minlimit = AM33XX_SR1_OPP50_EVM_ERR_MIN_LIMIT,
-+ .err_maxlimit = AM33XX_SR1_OPP50_ERR_MAX_LIMIT,
-+ .err_weight = AM33XX_SR1_OPP50_ERR_WEIGHT,
-+ .margin = AM33XX_SR1_OPP50_MARGIN,
-+ .nominal_volt = AM33XX_VDD_MPU_OPP50_UV,
-+ .frequency = AM33XX_VDD_MPU_OPP50_FREQ,
-+ },
-+ {
-+ .efuse_offs = AM33XX_SR1_OPP100_CNTRL_OFFSET,
-+ .e2v_gain = AM33XX_SR1_OPP100_EVM_ERR2VOLT_GAIN,
-+ .err_minlimit = AM33XX_SR1_OPP100_EVM_ERR_MIN_LIMIT,
-+ .err_maxlimit = AM33XX_SR1_OPP100_ERR_MAX_LIMIT,
-+ .err_weight = AM33XX_SR1_OPP100_ERR_WEIGHT,
-+ .margin = AM33XX_SR1_OPP100_MARGIN,
-+ .nominal_volt = AM33XX_VDD_MPU_OPP100_UV,
-+ .frequency = AM33XX_VDD_MPU_OPP100_FREQ,
-+ },
-+ {
-+ .efuse_offs = AM33XX_SR1_OPP120_CNTRL_OFFSET,
-+ .e2v_gain = AM33XX_SR1_OPP120_EVM_ERR2VOLT_GAIN,
-+ .err_minlimit = AM33XX_SR1_OPP120_EVM_ERR_MIN_LIMIT,
-+ .err_maxlimit = AM33XX_SR1_OPP120_ERR_MAX_LIMIT,
-+ .err_weight = AM33XX_SR1_OPP120_ERR_WEIGHT,
-+ .margin = AM33XX_SR1_OPP120_MARGIN,
-+ .nominal_volt = AM33XX_VDD_MPU_OPP120_UV,
-+ .frequency = AM33XX_VDD_MPU_OPP120_FREQ,
-+ },
-+ {
-+ .efuse_offs = AM33XX_SR1_OPPTURBO_CNTRL_OFFSET,
-+ .e2v_gain = AM33XX_SR1_OPPTURBO_EVM_ERR2VOLT_GAIN,
-+ .err_minlimit = AM33XX_SR1_OPPTURBO_EVM_ERR_MIN_LIMIT,
-+ .err_maxlimit = AM33XX_SR1_OPPTURBO_ERR_MAX_LIMIT,
-+ .err_weight = AM33XX_SR1_OPPTURBO_ERR_WEIGHT,
-+ .margin = AM33XX_SR1_OPPTURBO_MARGIN,
-+ .nominal_volt = AM33XX_VDD_MPU_OPPTURBO_UV,
-+ .frequency = AM33XX_VDD_MPU_OPPTURBO_FREQ,
-+ },
-+};
-+
-+static struct am33xx_sr_opp_data sr0_opp_data[] = {
-+ {
-+ .efuse_offs = AM33XX_SR0_OPP50_CNTRL_OFFSET,
-+ .e2v_gain = AM33XX_SR0_OPP50_EVM_ERR2VOLT_GAIN,
-+ .err_minlimit = AM33XX_SR0_OPP50_EVM_ERR_MIN_LIMIT,
-+ .err_maxlimit = AM33XX_SR0_OPP50_ERR_MAX_LIMIT,
-+ .err_weight = AM33XX_SR0_OPP50_ERR_WEIGHT,
-+ .margin = AM33XX_SR0_OPP50_MARGIN,
-+ .nominal_volt = AM33XX_VDD_CORE_OPP50_UV,
-+ },
-+ {
-+ .efuse_offs = AM33XX_SR0_OPP100_CNTRL_OFFSET,
-+ .e2v_gain = AM33XX_SR0_OPP100_EVM_ERR2VOLT_GAIN,
-+ .err_minlimit = AM33XX_SR0_OPP100_EVM_ERR_MIN_LIMIT,
-+ .err_maxlimit = AM33XX_SR0_OPP100_ERR_MAX_LIMIT,
-+ .err_weight = AM33XX_SR0_OPP100_ERR_WEIGHT,
-+ .margin = AM33XX_SR0_OPP100_MARGIN,
-+ .nominal_volt = AM33XX_VDD_CORE_OPP100_UV,
-+ },
-+};
-+
-+static struct am33xx_sr_sdata sr_sensor_data[] = {
-+ {
-+ .sr_opp_data = sr0_opp_data,
-+ /* note that OPP50 is NOT used in Linux kernel for AM335x */
-+ .no_of_opps = 0x2,
-+ .default_opp = 0x1,
-+ .senn_mod = 0x1,
-+ .senp_mod = 0x1,
-+ },
-+ {
-+ .sr_opp_data = sr1_opp_data,
-+ /* the opp data below should be determined
-+ dynamically during SR probe */
-+ .no_of_opps = 0x4,
-+ .default_opp = 0x3,
-+ .senn_mod = 0x1,
-+ .senp_mod = 0x1,
-+ },
-+};
-+
-+static struct am33xx_sr_platform_data am33xx_sr_pdata = {
-+ .vd_name[0] = "vdd_core",
-+ .vd_name[1] = "vdd_mpu",
-+ .ip_type = 2,
-+ .irq_delay = 1000,
-+ .no_of_vds = 2,
-+ .no_of_sens = ARRAY_SIZE(sr_sensor_data),
-+ .vstep_size_uv = 12500,
-+ .enable_on_init = true,
-+ .sr_sdata = sr_sensor_data,
-+};
-+
-+static struct resource am33xx_sr_resources[] = {
-+ {
-+ .name = "smartreflex0",
-+ .start = AM33XX_SR0_BASE,
-+ .end = AM33XX_SR0_BASE + SZ_4K - 1,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ {
-+ .name = "smartreflex0",
-+ .start = AM33XX_IRQ_SMARTREFLEX0,
-+ .end = AM33XX_IRQ_SMARTREFLEX0,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+ {
-+ .name = "smartreflex1",
-+ .start = AM33XX_SR1_BASE,
-+ .end = AM33XX_SR1_BASE + SZ_4K - 1,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ {
-+ .name = "smartreflex1",
-+ .start = AM33XX_IRQ_SMARTREFLEX1,
-+ .end = AM33XX_IRQ_SMARTREFLEX1,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+};
-+
-+/* VCORE for SR regulator init */
-+static struct platform_device am33xx_sr_device = {
-+ .name = "smartreflex",
-+ .id = -1,
-+ .num_resources = ARRAY_SIZE(am33xx_sr_resources),
-+ .resource = am33xx_sr_resources,
-+ .dev = {
-+ .platform_data = &am33xx_sr_pdata,
-+ },
-+};
-+
-+void __init am33xx_sr_init(void)
-+{
-+ /* For beaglebone, update voltage step size and related parameters
-+ appropriately. All other AM33XX platforms are good with the
-+ structure defaults as initialized above. */
-+ if ((am33xx_evmid == BEAGLE_BONE_OLD) ||
-+ (am33xx_evmid == BEAGLE_BONE_A3)) {
-+ printk(KERN_ERR "address of pdata = %08x\n", (u32)&am33xx_sr_pdata);
-+ am33xx_sr_pdata.vstep_size_uv = 25000;
-+ /* CORE */
-+ sr0_opp_data[0].e2v_gain = AM33XX_SR0_OPP50_BB_ERR2VOLT_GAIN;
-+ sr0_opp_data[0].err_minlimit = AM33XX_SR0_OPP50_BB_ERR_MIN_LIMIT;
-+ sr0_opp_data[1].e2v_gain = AM33XX_SR0_OPP100_BB_ERR2VOLT_GAIN;
-+ sr0_opp_data[1].err_minlimit = AM33XX_SR0_OPP100_BB_ERR_MIN_LIMIT;
-+ /* MPU */
-+ sr1_opp_data[0].e2v_gain = AM33XX_SR1_OPP50_BB_ERR2VOLT_GAIN;
-+ sr1_opp_data[0].err_minlimit = AM33XX_SR1_OPP50_BB_ERR_MIN_LIMIT;
-+ sr1_opp_data[1].e2v_gain = AM33XX_SR1_OPP100_BB_ERR2VOLT_GAIN;
-+ sr1_opp_data[1].err_minlimit = AM33XX_SR1_OPP100_BB_ERR_MIN_LIMIT;
-+ sr1_opp_data[2].e2v_gain = AM33XX_SR1_OPP120_BB_ERR2VOLT_GAIN;
-+ sr1_opp_data[2].err_minlimit = AM33XX_SR1_OPP120_BB_ERR_MIN_LIMIT;
-+ sr1_opp_data[3].e2v_gain = AM33XX_SR1_OPPTURBO_BB_ERR2VOLT_GAIN;
-+ sr1_opp_data[3].err_minlimit = AM33XX_SR1_OPPTURBO_BB_ERR_MIN_LIMIT;
-+ }
-+
-+ if (platform_device_register(&am33xx_sr_device))
-+ printk(KERN_ERR "failed to register am33xx_sr device\n");
-+ else
-+ printk(KERN_INFO "registered am33xx_sr device\n");
-+}
-+#else
-+inline void am33xx_sr_init(void) {}
-+#endif
-+
- /*-------------------------------------------------------------------------*/
-
- static int __init omap2_init_devices(void)
-diff --git a/arch/arm/mach-omap2/include/mach/board-am335xevm.h b/arch/arm/mach-omap2/include/mach/board-am335xevm.h
-index 1d24495..85a8df0 100644
---- a/arch/arm/mach-omap2/include/mach/board-am335xevm.h
-+++ b/arch/arm/mach-omap2/include/mach/board-am335xevm.h
-@@ -41,6 +41,7 @@
- void am335x_evm_set_id(unsigned int evmid);
- int am335x_evm_get_id(void);
- void am33xx_cpsw_macidfillup(char *eeprommacid0, char *eeprommacid1);
-+void am33xx_sr_init(void);
- void am33xx_d_can_init(unsigned int instance);
-
- #endif
-diff --git a/arch/arm/plat-omap/Kconfig b/arch/arm/plat-omap/Kconfig
-index 734009a..33f17f2 100644
---- a/arch/arm/plat-omap/Kconfig
-+++ b/arch/arm/plat-omap/Kconfig
-@@ -43,6 +43,27 @@ config OMAP_DEBUG_LEDS
- depends on OMAP_DEBUG_DEVICES
- default y if LEDS_CLASS
-
-+config AM33XX_SMARTREFLEX
-+ bool "AM33XX SmartReflex support"
-+ depends on (SOC_OMAPAM33XX) && PM
-+ help
-+ Say Y if you want to enable SmartReflex.
-+
-+ SmartReflex can perform continuous dynamic voltage
-+ scaling around the nominal operating point voltage
-+ according to silicon characteristics and operating
-+ conditions. Enabling SmartReflex reduces active power
-+ consumption.
-+
-+ Please note, that by default SmartReflex is enabled.
-+ To disable the automatic voltage compensation for
-+ vdd mpu and vdd core from user space, user must
-+ write 1 to /debug/smartreflex/autocomp.
-+
-+ Optionally autocompensation can be disabled in the kernel
-+ by default during system init via the enable_on_init flag
-+ which an be passed as platform data to the smartreflex driver.
-+
- config OMAP_SMARTREFLEX
- bool "SmartReflex support"
- depends on (ARCH_OMAP3 || ARCH_OMAP4) && PM
-diff --git a/arch/arm/plat-omap/include/plat/am33xx.h b/arch/arm/plat-omap/include/plat/am33xx.h
-index 32522df..a628b1f 100644
---- a/arch/arm/plat-omap/include/plat/am33xx.h
-+++ b/arch/arm/plat-omap/include/plat/am33xx.h
-@@ -43,6 +43,9 @@
- #define AM33XX_TSC_BASE 0x44E0D000
- #define AM33XX_RTC_BASE 0x44E3E000
-
-+#define AM33XX_SR0_BASE 0x44E37000
-+#define AM33XX_SR1_BASE 0x44E39000
-+
- #define AM33XX_ASP0_BASE 0x48038000
- #define AM33XX_ASP1_BASE 0x4803C000
-
-diff --git a/arch/arm/plat-omap/include/plat/smartreflex.h b/arch/arm/plat-omap/include/plat/smartreflex.h
-new file mode 100644
-index 0000000..36338f7
---- /dev/null
-+++ b/arch/arm/plat-omap/include/plat/smartreflex.h
-@@ -0,0 +1,431 @@
-+/*
-+ * OMAP Smartreflex Defines and Routines
-+ *
-+ * Author: Thara Gopinath <thara at ti.com>
-+ *
-+ * Copyright (C) 2010 Texas Instruments, Inc.
-+ * Thara Gopinath <thara at ti.com>
-+ *
-+ * Copyright (C) 2008 Nokia Corporation
-+ * Kalle Jokiniemi
-+ *
-+ * Copyright (C) 2007 Texas Instruments, Inc.
-+ * Lesly A M <x0080970 at ti.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ */
-+
-+#ifndef __ASM_ARM_OMAP_SMARTREFLEX_H
-+#define __ASM_ARM_OMAP_SMARTREFLEX_H
-+
-+#include <linux/platform_device.h>
-+#include <plat/voltage.h>
-+
-+/*
-+ * Different Smartreflex IPs version. The v1 is the 65nm version used in
-+ * OMAP3430. The v2 is the update for the 45nm version of the IP
-+ * used in OMAP3630 and OMAP4430
-+ */
-+#define SR_TYPE_V1 1
-+#define SR_TYPE_V2 2
-+
-+/* SMART REFLEX REG ADDRESS OFFSET */
-+#define SRCONFIG 0x00
-+#define SRSTATUS 0x04
-+#define SENVAL 0x08
-+#define SENMIN 0x0C
-+#define SENMAX 0x10
-+#define SENAVG 0x14
-+#define AVGWEIGHT 0x18
-+#define NVALUERECIPROCAL 0x1c
-+#define SENERROR_V1 0x20
-+#define ERRCONFIG_V1 0x24
-+#define IRQ_EOI 0x20
-+#define IRQSTATUS_RAW 0x24
-+#define IRQSTATUS 0x28
-+#define IRQENABLE_SET 0x2C
-+#define IRQENABLE_CLR 0x30
-+#define SENERROR_V2 0x34
-+#define ERRCONFIG_V2 0x38
-+
-+/* Bit/Shift Positions */
-+
-+/* SRCONFIG */
-+#define SRCONFIG_ACCUMDATA_SHIFT 22
-+#define SRCONFIG_SRCLKLENGTH_SHIFT 12
-+#define SRCONFIG_SENNENABLE_V1_SHIFT 5
-+#define SRCONFIG_SENPENABLE_V1_SHIFT 3
-+#define SRCONFIG_SENNENABLE_V2_SHIFT 1
-+#define SRCONFIG_SENPENABLE_V2_SHIFT 0
-+#define SRCONFIG_CLKCTRL_SHIFT 0
-+
-+#define SRCONFIG_ACCUMDATA_MASK (0x3ff << 22)
-+
-+#define SRCONFIG_SRENABLE BIT(11)
-+#define SRCONFIG_SENENABLE BIT(10)
-+#define SRCONFIG_ERRGEN_EN BIT(9)
-+#define SRCONFIG_MINMAXAVG_EN BIT(8)
-+#define SRCONFIG_DELAYCTRL BIT(2)
-+
-+/* AVGWEIGHT */
-+#define AVGWEIGHT_SENPAVGWEIGHT_SHIFT 2
-+#define AVGWEIGHT_SENNAVGWEIGHT_SHIFT 0
-+
-+/* NVALUERECIPROCAL */
-+#define NVALUERECIPROCAL_SENPGAIN_SHIFT 20
-+#define NVALUERECIPROCAL_SENNGAIN_SHIFT 16
-+#define NVALUERECIPROCAL_RNSENP_SHIFT 8
-+#define NVALUERECIPROCAL_RNSENN_SHIFT 0
-+
-+/* ERRCONFIG */
-+#define ERRCONFIG_ERRWEIGHT_SHIFT 16
-+#define ERRCONFIG_ERRMAXLIMIT_SHIFT 8
-+#define ERRCONFIG_ERRMINLIMIT_SHIFT 0
-+
-+#define SR_ERRWEIGHT_MASK (0x07 << 16)
-+#define SR_ERRMAXLIMIT_MASK (0xff << 8)
-+#define SR_ERRMINLIMIT_MASK (0xff << 0)
-+
-+#define ERRCONFIG_VPBOUNDINTEN_V1 BIT(31)
-+#define ERRCONFIG_VPBOUNDINTST_V1 BIT(30)
-+#define ERRCONFIG_MCUACCUMINTEN BIT(29)
-+#define ERRCONFIG_MCUACCUMINTST BIT(28)
-+#define ERRCONFIG_MCUVALIDINTEN BIT(27)
-+#define ERRCONFIG_MCUVALIDINTST BIT(26)
-+#define ERRCONFIG_MCUBOUNDINTEN BIT(25)
-+#define ERRCONFIG_MCUBOUNDINTST BIT(24)
-+#define ERRCONFIG_MCUDISACKINTEN BIT(23)
-+#define ERRCONFIG_VPBOUNDINTST_V2 BIT(23)
-+#define ERRCONFIG_MCUDISACKINTST BIT(22)
-+#define ERRCONFIG_VPBOUNDINTEN_V2 BIT(22)
-+
-+#define ERRCONFIG_STATUS_V1_MASK (ERRCONFIG_VPBOUNDINTST_V1 | \
-+ ERRCONFIG_MCUACCUMINTST | \
-+ ERRCONFIG_MCUVALIDINTST | \
-+ ERRCONFIG_MCUBOUNDINTST | \
-+ ERRCONFIG_MCUDISACKINTST)
-+/* IRQSTATUS */
-+#define IRQSTATUS_MCUACCUMINT BIT(3)
-+#define IRQSTATUS_MCVALIDINT BIT(2)
-+#define IRQSTATUS_MCBOUNDSINT BIT(1)
-+#define IRQSTATUS_MCUDISABLEACKINT BIT(0)
-+
-+/* IRQENABLE_SET and IRQENABLE_CLEAR */
-+#define IRQENABLE_MCUACCUMINT BIT(3)
-+#define IRQENABLE_MCUVALIDINT BIT(2)
-+#define IRQENABLE_MCUBOUNDSINT BIT(1)
-+#define IRQENABLE_MCUDISABLEACKINT BIT(0)
-+
-+/* Common Bit values */
-+
-+#define SRCLKLENGTH_12MHZ_SYSCLK 0x3c
-+#define SRCLKLENGTH_13MHZ_SYSCLK 0x41
-+#define SRCLKLENGTH_19MHZ_SYSCLK 0x60
-+#define SRCLKLENGTH_26MHZ_SYSCLK 0x82
-+#define SRCLKLENGTH_38MHZ_SYSCLK 0xC0
-+
-+/*
-+ * 3430 specific values. Maybe these should be passed from board file or
-+ * pmic structures.
-+ */
-+#define OMAP3430_SR_ACCUMDATA 0x1f4
-+
-+#define OMAP3430_SR1_SENPAVGWEIGHT 0x03
-+#define OMAP3430_SR1_SENNAVGWEIGHT 0x03
-+
-+#define OMAP3430_SR2_SENPAVGWEIGHT 0x01
-+#define OMAP3430_SR2_SENNAVGWEIGHT 0x01
-+
-+#define OMAP3430_SR_ERRWEIGHT 0x04
-+#define OMAP3430_SR_ERRMAXLIMIT 0x02
-+
-+/**
-+ * struct omap_sr_pmic_data - Strucutre to be populated by pmic code to pass
-+ * pmic specific info to smartreflex driver
-+ *
-+ * @sr_pmic_init: API to initialize smartreflex on the PMIC side.
-+ */
-+struct omap_sr_pmic_data {
-+ void (*sr_pmic_init) (void);
-+};
-+
-+#ifdef CONFIG_OMAP_SMARTREFLEX
-+/*
-+ * The smart reflex driver supports CLASS1 CLASS2 and CLASS3 SR.
-+ * The smartreflex class driver should pass the class type.
-+ * Should be used to populate the class_type field of the
-+ * omap_smartreflex_class_data structure.
-+ */
-+#define SR_CLASS1 0x1
-+#define SR_CLASS2 0x2
-+#define SR_CLASS3 0x3
-+
-+/**
-+ * struct omap_sr_class_data - Smartreflex class driver info
-+ *
-+ * @enable: API to enable a particular class smaartreflex.
-+ * @disable: API to disable a particular class smartreflex.
-+ * @configure: API to configure a particular class smartreflex.
-+ * @notify: API to notify the class driver about an event in SR.
-+ * Not needed for class3.
-+ * @notify_flags: specify the events to be notified to the class driver
-+ * @class_type: specify which smartreflex class.
-+ * Can be used by the SR driver to take any class
-+ * based decisions.
-+ */
-+struct omap_sr_class_data {
-+ int (*enable)(struct voltagedomain *voltdm);
-+ int (*disable)(struct voltagedomain *voltdm, int is_volt_reset);
-+ int (*configure)(struct voltagedomain *voltdm);
-+ int (*notify)(struct voltagedomain *voltdm, u32 status);
-+ u8 notify_flags;
-+ u8 class_type;
-+};
-+
-+/**
-+ * struct omap_sr_nvalue_table - Smartreflex n-target value info
-+ *
-+ * @efuse_offs: The offset of the efuse where n-target values are stored.
-+ * @nvalue: The n-target value.
-+ */
-+struct omap_sr_nvalue_table {
-+ u32 efuse_offs;
-+ u32 nvalue;
-+};
-+
-+/**
-+ * struct omap_sr_data - Smartreflex platform data.
-+ *
-+ * @ip_type: Smartreflex IP type.
-+ * @senp_mod: SENPENABLE value for the sr
-+ * @senn_mod: SENNENABLE value for sr
-+ * @nvalue_count: Number of distinct nvalues in the nvalue table
-+ * @enable_on_init: whether this sr module needs to enabled at
-+ * boot up or not.
-+ * @nvalue_table: table containing the efuse offsets and nvalues
-+ * corresponding to them.
-+ * @voltdm: Pointer to the voltage domain associated with the SR
-+ */
-+struct omap_sr_data {
-+ int ip_type;
-+ u32 senp_mod;
-+ u32 senn_mod;
-+ int nvalue_count;
-+ bool enable_on_init;
-+ struct omap_sr_nvalue_table *nvalue_table;
-+ struct voltagedomain *voltdm;
-+};
-+
-+/* Smartreflex module enable/disable interface */
-+void omap_sr_enable(struct voltagedomain *voltdm);
-+void omap_sr_disable(struct voltagedomain *voltdm);
-+void omap_sr_disable_reset_volt(struct voltagedomain *voltdm);
-+
-+/* API to register the pmic specific data with the smartreflex driver. */
-+void omap_sr_register_pmic(struct omap_sr_pmic_data *pmic_data);
-+
-+/* Smartreflex driver hooks to be called from Smartreflex class driver */
-+int sr_enable(struct voltagedomain *voltdm, unsigned long volt);
-+void sr_disable(struct voltagedomain *voltdm);
-+int sr_configure_errgen(struct voltagedomain *voltdm);
-+int sr_configure_minmax(struct voltagedomain *voltdm);
-+
-+/* API to register the smartreflex class driver with the smartreflex driver */
-+int sr_register_class(struct omap_sr_class_data *class_data);
-+#else
-+
-+#ifdef CONFIG_AM33XX_SMARTREFLEX
-+
-+#define SR_CORE (0)
-+#define SR_MPU (1)
-+#define SRCLKLENGTH_125MHZ_SYSCLK (0x78 << 12)
-+#define GAIN_MAXLIMIT (16)
-+#define R_MAXLIMIT (256)
-+#define MAX_SENSORS 2
-+/* GG: eventually this should be determined at runtime */
-+#define AM33XX_OPP_COUNT 4
-+
-+/**
-+ * struct am33xx_sr_opp_data - Smartreflex data per OPP
-+ * @efuse_offs: The offset of the efuse where n-target values are
-+ * stored.
-+ * @nvalue: NTarget as stored in EFUSE.
-+ * @adj_nvalue: Adjusted NTarget (adjusted by margin)
-+ * @e2v_gain: Error to voltage gain for changing the percentage
-+ * error into voltage delta
-+ * @err_weight: Average sensor error weight
-+ * @err_minlimit: Minimum error limit of the sensor
-+ * @err_maxlimit: Maximum error limit of the sensor
-+ * @margin: Voltage margin to apply
-+ * @nominal_volt: Nominal voltage for this OPP
-+ * @frequency: Defined frequency for this OPP (in KHz)
-+ */
-+struct am33xx_sr_opp_data {
-+ u32 efuse_offs;
-+ u32 nvalue;
-+ u32 adj_nvalue;
-+ s32 e2v_gain;
-+ u32 err_weight;
-+ u32 err_minlimit;
-+ u32 err_maxlimit;
-+ s32 margin;
-+ u32 nominal_volt; /* nominal_volt and frequency may be removed
-+ once am33xx voltdm layer works */
-+ u32 frequency;
-+ u32 opp_id;
-+};
-+
-+/**
-+ * struct am33xx_sr_sdata - Smartreflex sensors data
-+ * @sr_opp_data: Pointer to data structure containing per OPP data
-+ * for this SR module.
-+ * @no_of_opps: Number of OPP's supported for this sensor -
-+ * determined dynamically when possible.
-+ * @default_opp: Defines the opp to use on startup if OPP is fixed
-+ * or cannot be determined dynamically.
-+ * @senn_mod: Enable bit for N sensor
-+ * @senp_mod: Enable bit for P sensor
-+ */
-+struct am33xx_sr_sdata {
-+ struct am33xx_sr_opp_data *sr_opp_data;
-+ u32 no_of_opps;
-+ u32 default_opp;
-+ u32 senn_mod;
-+ u32 senp_mod;
-+};
-+
-+struct am33xx_sr_sensor {
-+ u32 sr_id;
-+ u32 irq;
-+ u32 irq_status;
-+ u32 senn_en;
-+ u32 senp_en;
-+ char *name;
-+ char *reg_name;
-+ void __iomem *base;
-+ int init_volt_mv;
-+ int curr_opp;
-+ u32 no_of_opps;
-+ struct delayed_work work_reenable;
-+ struct regulator *reg;
-+ struct am33xx_sr_opp_data opp_data[AM33XX_OPP_COUNT];
-+ struct clk *fck;
-+ struct voltagedomain *voltdm;
-+ struct omap_volt_data *volt_data;
-+};
-+
-+struct am33xx_sr {
-+ u32 autocomp_active;
-+ u32 sens_per_vd;
-+ u32 no_of_sens;
-+ u32 no_of_vds;
-+ u32 ip_type;
-+ u32 irq_delay;
-+ u32 disabled_by_user;
-+ int uvoltage_step_size;
-+ char *res_name[MAX_SENSORS];
-+#ifdef CONFIG_CPU_FREQ
-+ struct notifier_block freq_transition;
-+#endif
-+ /*struct work_struct work;*/
-+ struct delayed_work work;
-+ struct sr_platform_data *sr_data;
-+ struct am33xx_sr_sensor sen[MAX_SENSORS];
-+ struct platform_device *pdev;
-+};
-+
-+/**
-+ * struct am33xx_sr_platform_data - Smartreflex platform data.
-+ * @sr_sdata: SR per sensor details, contains the efuse off-sets,
-+ * error to voltage gain factor, minimum error limits
-+ * @vd_name: Name of the voltage domain.
-+ * @ip_type: Smartreflex IP type, class1 or class2 or class3.
-+ * @irq_delay: Amount of time required for changed voltage to settle.
-+ * @no_of_vds: Number of voltage domains to which SR applicable
-+ * @no_of_sens: Number of SR sensors used to monitor the device
-+ * performance, temp etc...
-+ * @vstep_size_uv: PMIC voltage step size in micro volts
-+ * @enable_on_init: whether this sr module needs to enabled at
-+ * boot up or not.
-+ */
-+struct am33xx_sr_platform_data {
-+ struct am33xx_sr_sdata *sr_sdata;
-+ char *vd_name[2];
-+ u32 ip_type;
-+ u32 irq_delay;
-+ u32 no_of_vds;
-+ u32 no_of_sens;
-+ u32 vstep_size_uv;
-+ bool enable_on_init;
-+};
-+
-+#endif /*CONFIG_AM33XX_SMARTREFLEX*/
-+
-+#ifdef CONFIG_TI816X_SMARTREFLEX
-+
-+#define SRHVT 0
-+#define SRSVT 1
-+
-+/* SRClk = 100KHz */
-+#define SRCLKLENGTH_125MHZ_SYSCLK (0x271 << 12)
-+
-+/**
-+ * struct ti816x_sr_sdata - Smartreflex sensors data
-+ * @efuse_offs: The offset of the efuse where n-target values are
-+ * stored.
-+ * @e2v_gain: Error to voltage gain for changing the percentage
-+ * error into voltage delta
-+ * @err_weight: Average sensor error weight
-+ * @err_minlimit: Minimum error limit of the sensor
-+ * @err_maxlimit: Maximum error limit of the sensor
-+ * @senn_mod: Enable bit for N sensor
-+ * @senp_mod: Enable bit for P sensor
-+ */
-+struct ti816x_sr_sdata {
-+ u32 efuse_offs;
-+ u32 e2v_gain;
-+ u32 err_weight;
-+ u32 err_minlimit;
-+ u32 err_maxlimit;
-+ u32 senn_mod;
-+ u32 senp_mod;
-+};
-+
-+/**
-+ * struct ti816x_sr_platform_data - Smartreflex platform data.
-+ * @sr_sdata: SR per sensor details, contains the efuse off-sets,
-+ * error to voltage gain factor, minimum error limits
-+ * @vd_name: Name of the voltage domain.
-+ * @ip_type: Smartreflex IP type, class1 or class2 or class3.
-+ * @irq_delay: Time delay between disable and re-enable the
-+ * interrupts, in msec
-+ * @no_of_vds: Number of voltage domains to which SR applicable
-+ * @no_of_sens: Number of SR sensors used to monitor the device
-+ * performance, temp etc...
-+ * @vstep_size_uv: PMIC voltage step size in micro volts
-+ * @enable_on_init: whether this sr module needs to enabled at
-+ * boot up or not.
-+ */
-+struct ti816x_sr_platform_data {
-+ struct ti816x_sr_sdata *sr_sdata;
-+ char *vd_name;
-+ u32 ip_type;
-+ u32 irq_delay;
-+ u32 no_of_vds;
-+ u32 no_of_sens;
-+ u32 vstep_size_uv;
-+ bool enable_on_init;
-+};
-+
-+#endif /* CONFIG_TI816X_SMARTREFLEX */
-+
-+static inline void omap_sr_enable(struct voltagedomain *voltdm) {}
-+static inline void omap_sr_disable(struct voltagedomain *voltdm) {}
-+static inline void omap_sr_disable_reset_volt(
-+ struct voltagedomain *voltdm) {}
-+static inline void omap_sr_register_pmic(
-+ struct omap_sr_pmic_data *pmic_data) {}
-+#endif
-+#endif
-diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c
-index 00706c6..382ce2d 100644
---- a/drivers/regulator/core.c
-+++ b/drivers/regulator/core.c
-@@ -169,6 +169,9 @@ static int regulator_check_consumers(struct regulator_dev *rdev,
- {
- struct regulator *regulator;
-
-+ if (rdev->ignore_check_consumers)
-+ return 0;
-+
- list_for_each_entry(regulator, &rdev->consumer_list, list) {
- /*
- * Assume consumers that didn't say anything are OK
-@@ -2688,6 +2691,7 @@ struct regulator_dev *regulator_register(struct regulator_desc *regulator_desc,
- rdev->reg_data = driver_data;
- rdev->owner = regulator_desc->owner;
- rdev->desc = regulator_desc;
-+ rdev->ignore_check_consumers = init_data->ignore_check_consumers;
- INIT_LIST_HEAD(&rdev->consumer_list);
- INIT_LIST_HEAD(&rdev->list);
- BLOCKING_INIT_NOTIFIER_HEAD(&rdev->notifier);
-diff --git a/include/linux/regulator/driver.h b/include/linux/regulator/driver.h
-index 52c89ae..6176167 100644
---- a/include/linux/regulator/driver.h
-+++ b/include/linux/regulator/driver.h
-@@ -204,7 +204,7 @@ struct regulator_dev {
- int deferred_disables;
-
- void *reg_data; /* regulator_dev data */
--
-+ int ignore_check_consumers;
- #ifdef CONFIG_DEBUG_FS
- struct dentry *debugfs;
- #endif
-diff --git a/include/linux/regulator/machine.h b/include/linux/regulator/machine.h
-index f3f13fd..0de52a3 100644
---- a/include/linux/regulator/machine.h
-+++ b/include/linux/regulator/machine.h
-@@ -169,7 +169,7 @@ struct regulator_consumer_supply {
- * be usable.
- * @num_consumer_supplies: Number of consumer device supplies.
- * @consumer_supplies: Consumer device supply configuration.
-- *
-+ * @ignore_check_consumers: If != 0, regulator_check_consumers() is disabled.
- * @regulator_init: Callback invoked when the regulator has been registered.
- * @driver_data: Data passed to regulator_init.
- */
-@@ -181,6 +181,7 @@ struct regulator_init_data {
- int num_consumer_supplies;
- struct regulator_consumer_supply *consumer_supplies;
-
-+ int ignore_check_consumers;
- /* optional regulator machine specific init */
- int (*regulator_init)(void *driver_data);
- void *driver_data; /* core does not touch this */
---
-1.7.0.4
diff --git a/recipes-kernel/linux/linux-am335x-psp-3.2/0001-mach-omap2-pm33xx-Disable-VT-switch.patch b/recipes-kernel/linux/linux-am335x-psp-3.2/0001-mach-omap2-pm33xx-Disable-VT-switch.patch
deleted file mode 100644
index 66c643e..0000000
--- a/recipes-kernel/linux/linux-am335x-psp-3.2/0001-mach-omap2-pm33xx-Disable-VT-switch.patch
+++ /dev/null
@@ -1,71 +0,0 @@
-From 31ec2850e89414efb30accb9d8b5228257e507b1 Mon Sep 17 00:00:00 2001
-From: Chase Maupin <Chase.Maupin at ti.com>
-Date: Wed, 21 Mar 2012 10:18:03 -0500
-Subject: [PATCH 1/1] mach-omap2: pm33xx: Disable VT switch
-
-* Added a new config option TI_PM_DISABLE_VT_SWITCH which
- disables the VT console switch which normally occurs during
- suspend. This console switch can cause a hange when performed
- with applications like Matrix running. The VT switch is
- considered unnecessary.
-* Modified the am335x_evm_defconfig file to default the
- TI_PM_DISABLE_VT_SWITCH to "y".
-* Based on a patch for the linux-omap3 kernel by Greg Guyotte
-
-Signed-off-by: Chase Maupin <Chase.Maupin at ti.com>
----
- arch/arm/configs/am335x_evm_defconfig | 1 +
- arch/arm/mach-omap2/Kconfig | 9 +++++++++
- arch/arm/mach-omap2/pm33xx.c | 5 +++++
- 3 files changed, 15 insertions(+), 0 deletions(-)
-
-diff --git a/arch/arm/configs/am335x_evm_defconfig b/arch/arm/configs/am335x_evm_defconfig
-index 53d1b6a..7a5e7ad 100644
---- a/arch/arm/configs/am335x_evm_defconfig
-+++ b/arch/arm/configs/am335x_evm_defconfig
-@@ -325,6 +325,7 @@ CONFIG_MACH_TI8148EVM=y
- CONFIG_MACH_AM335XEVM=y
- CONFIG_MACH_AM335XIAEVM=y
- # CONFIG_OMAP3_EMU is not set
-+CONFIG_TI_PM_DISABLE_VT_SWITCH=y
- # CONFIG_OMAP3_SDRC_AC_TIMING is not set
- CONFIG_OMAP3_EDMA=y
-
-diff --git a/arch/arm/mach-omap2/Kconfig b/arch/arm/mach-omap2/Kconfig
-index e44e942..f13e9dc 100644
---- a/arch/arm/mach-omap2/Kconfig
-+++ b/arch/arm/mach-omap2/Kconfig
-@@ -372,6 +372,15 @@ config OMAP3_EMU
- help
- Say Y here to enable debugging hardware of omap3
-
-+config TI_PM_DISABLE_VT_SWITCH
-+ bool "TI Disable PM Console Switch"
-+ depends on ARCH_OMAP3
-+ default y
-+ help
-+ This option disables the default PM VT switch behavior for TI devices.
-+ Some platforms hang during suspend due to a failed attempt to
-+ perform the VT switch. The VT switch is unnecessary on many platforms.
-+
- config OMAP3_SDRC_AC_TIMING
- bool "Enable SDRC AC timing register changes"
- depends on ARCH_OMAP3
-diff --git a/arch/arm/mach-omap2/pm33xx.c b/arch/arm/mach-omap2/pm33xx.c
-index 70bcb42..019ae46 100644
---- a/arch/arm/mach-omap2/pm33xx.c
-+++ b/arch/arm/mach-omap2/pm33xx.c
-@@ -502,6 +502,11 @@ static int __init am33xx_pm_init(void)
- pr_info("Power Management for AM33XX family\n");
-
- #ifdef CONFIG_SUSPEND
-+
-+#ifdef CONFIG_TI_PM_DISABLE_VT_SWITCH
-+ pm_set_vt_switch(0);
-+#endif
-+
- /* Read SDRAM_CONFIG register to determine Memory Type */
- base = am33xx_get_ram_base();
- reg = readl(base + EMIF4_0_SDRAM_CONFIG);
---
-1.7.0.4
diff --git a/recipes-kernel/linux/linux-am335x-psp-3.2/0001-musb-update-PIO-mode-help-information-in-Kconfig.patch b/recipes-kernel/linux/linux-am335x-psp-3.2/0001-musb-update-PIO-mode-help-information-in-Kconfig.patch
deleted file mode 100644
index f7652bd..0000000
--- a/recipes-kernel/linux/linux-am335x-psp-3.2/0001-musb-update-PIO-mode-help-information-in-Kconfig.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From 214f6b2fee005dba5e01b3b434f184adf4386a25 Mon Sep 17 00:00:00 2001
-From: Chase Maupin <Chase.Maupin at ti.com>
-Date: Thu, 2 Feb 2012 15:52:10 -0600
-Subject: [PATCH] musb: update PIO mode help information in Kconfig
-
-* Updated the Kconfig help information for the PIO mode for MUSB
- to make it more clear to the customer when to select this option
- and which devices currently have issues with this option.
-* This is in accordance with the findings for CPPI4.1 DMA usage
- for MUSB
-
-Upstream-Status: Submitted
- * Submitted to the PSP team using the lpr list
-
-Signed-off-by: Matt Porter <mporter at ti.com>
-Signed-off-by: Chase Maupin <Chase.Maupin at ti.com>
----
- drivers/usb/musb/Kconfig | 12 ++++++++----
- 1 files changed, 8 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/usb/musb/Kconfig b/drivers/usb/musb/Kconfig
-index a06335f..3576afe 100644
---- a/drivers/usb/musb/Kconfig
-+++ b/drivers/usb/musb/Kconfig
-@@ -159,10 +159,14 @@ config MUSB_PIO_ONLY
- All data is copied between memory and FIFO by the CPU.
- DMA controllers are ignored.
-
-- Do not choose this unless DMA support for your SOC or board
-- is unavailable (or unstable). When DMA is enabled at compile time,
-- you can still disable it at run time using the "use_dma=n" module
-- parameter.
-+ Select 'y' here if DMA support for your SOC or board
-+ is unavailable (or unstable). On CPPI 4.1 DMA based
-+ systems (AM335x, AM35x, and AM180x) DMA support is
-+ considered unstable and this option should be enabled
-+ in production systems so that DMA is disabled, unless DMA
-+ has been validated for all use cases. When DMA is enabled at
-+ compile time, you can still disable it at run time using the
-+ "use_dma=n" module parameter.
-
- endchoice
-
---
-1.7.0.4
diff --git a/recipes-kernel/linux/linux-am335x-psp-3.2/0001-omap-serial-add-delay-before-suspending.patch b/recipes-kernel/linux/linux-am335x-psp-3.2/0001-omap-serial-add-delay-before-suspending.patch
deleted file mode 100644
index 7780786..0000000
--- a/recipes-kernel/linux/linux-am335x-psp-3.2/0001-omap-serial-add-delay-before-suspending.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 0f62d1f4d4543a315815b8eb15ea9cdad25d16c8 Mon Sep 17 00:00:00 2001
-From: Eyal Reizer <eyalr at ti.com>
-Date: Wed, 27 Jun 2012 16:08:53 +0300
-Subject: [PATCH] omap-serial: add delay before suspending
-
-In case suspending during Bluetooth traffic, after resume the bluetooth is
-stuck.
-It was identified that suspend is happening before the UART buffer was
-fully drained which caused this hang after resume.
-The folliwng delay is a temporary workaround until the issue is resolved
-properly.
-
-Upstream Status: Pending
-
-Signed-off-by: Eyal Reizer <eyalr at ti.com>
----
- drivers/tty/serial/omap-serial.c | 10 ++++++++++
- 1 files changed, 10 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/tty/serial/omap-serial.c b/drivers/tty/serial/omap-serial.c
-index ca24ab3..108ea2b 100755
---- a/drivers/tty/serial/omap-serial.c
-+++ b/drivers/tty/serial/omap-serial.c
-@@ -1166,6 +1166,16 @@ static int serial_omap_suspend(struct device *dev)
- struct uart_omap_port *up = dev_get_drvdata(dev);
-
- if (up) {
-+ /*
-+ In case suspending during Bluetooth traffic, after resume
-+ the bluetooth is stuck.
-+ It was identified that suspend is happening before the
-+ UART buffer was fully drained which caused this hang after
-+ resume. The following delay is a temporary workaround until
-+ the issue is resolved properly.
-+ */
-+ msleep(10);
-+
- uart_suspend_port(&serial_omap_reg, &up->port);
- flush_work_sync(&up->qos_work);
- }
---
-1.7.0.4
diff --git a/recipes-kernel/linux/linux-am335x-psp-3.2/0001-omap4-rng-Remove-check-for-GP-only-device-type-in-RN.patch b/recipes-kernel/linux/linux-am335x-psp-3.2/0001-omap4-rng-Remove-check-for-GP-only-device-type-in-RN.patch
deleted file mode 100644
index de2d841..0000000
--- a/recipes-kernel/linux/linux-am335x-psp-3.2/0001-omap4-rng-Remove-check-for-GP-only-device-type-in-RN.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 13d5d52eda239b752b249b0f1b3b01b93a890b55 Mon Sep 17 00:00:00 2001
-From: Joel A Fernandes <joelagnel at ti.com>
-Date: Wed, 13 Feb 2013 15:37:15 -0600
-Subject: [PATCH] omap4-rng: Remove check for GP-only device type in RNG driver
-
-HS devices can support RNG due to recent changes in firewall settings on L4.
-The patch enables RNG support on HS device.
-
-Signed-off-by: Joel A Fernandes <joelagnel at ti.com>
----
- drivers/char/hw_random/omap4-rng.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/char/hw_random/omap4-rng.c b/drivers/char/hw_random/omap4-rng.c
-index 523ec63..9c3b87a 100644
---- a/drivers/char/hw_random/omap4-rng.c
-+++ b/drivers/char/hw_random/omap4-rng.c
-@@ -285,7 +285,7 @@ static struct platform_driver omap4_rng_driver = {
-
- static int __init omap4_rng_init(void)
- {
-- if (!cpu_is_am33xx() || omap_type() != OMAP2_DEVICE_TYPE_GP)
-+ if (!cpu_is_am33xx())
- return -ENODEV;
-
- return platform_driver_register(&omap4_rng_driver);
---
-1.7.4.1
-
diff --git a/recipes-kernel/linux/linux-am335x-psp-3.2/0002-AM335x-OCF-Driver-for-Linux-3.patch b/recipes-kernel/linux/linux-am335x-psp-3.2/0002-AM335x-OCF-Driver-for-Linux-3.patch
deleted file mode 100644
index 916b190..0000000
--- a/recipes-kernel/linux/linux-am335x-psp-3.2/0002-AM335x-OCF-Driver-for-Linux-3.patch
+++ /dev/null
@@ -1,7228 +0,0 @@
-From a97aac248717d62bdbf322c1d6d422ddfde87de0 Mon Sep 17 00:00:00 2001
-From: Greg Turner <gregturner at ti.com>
-Date: Thu, 3 May 2012 10:33:13 -0500
-Subject: [PATCH 2/2] AM335x OCF Driver for Linux 3
-
----
- crypto/Kconfig | 3 +
- crypto/Makefile | 2 +
- crypto/ocf/Config.in | 20 +
- crypto/ocf/Kconfig | 48 ++
- crypto/ocf/Makefile | 138 ++++
- crypto/ocf/criov.c | 215 +++++
- crypto/ocf/crypto.c | 1766 ++++++++++++++++++++++++++++++++++++++++++
- crypto/ocf/cryptodev.c | 1069 +++++++++++++++++++++++++
- crypto/ocf/cryptodev.h | 480 ++++++++++++
- crypto/ocf/cryptosoft.c | 1322 +++++++++++++++++++++++++++++++
- crypto/ocf/ocf-bench.c | 514 ++++++++++++
- crypto/ocf/ocf-compat.h | 372 +++++++++
- crypto/ocf/ocfnull/Makefile | 12 +
- crypto/ocf/ocfnull/ocfnull.c | 204 +++++
- crypto/ocf/random.c | 317 ++++++++
- crypto/ocf/rndtest.c | 300 +++++++
- crypto/ocf/rndtest.h | 54 ++
- crypto/ocf/uio.h | 54 ++
- drivers/char/random.c | 67 ++
- fs/fcntl.c | 1 +
- include/linux/miscdevice.h | 1 +
- include/linux/random.h | 28 +
- kernel/pid.c | 1 +
- 23 files changed, 6988 insertions(+), 0 deletions(-)
- create mode 100755 crypto/ocf/Config.in
- create mode 100755 crypto/ocf/Kconfig
- create mode 100755 crypto/ocf/Makefile
- create mode 100644 crypto/ocf/criov.c
- create mode 100644 crypto/ocf/crypto.c
- create mode 100644 crypto/ocf/cryptodev.c
- create mode 100644 crypto/ocf/cryptodev.h
- create mode 100644 crypto/ocf/cryptosoft.c
- create mode 100644 crypto/ocf/ocf-bench.c
- create mode 100644 crypto/ocf/ocf-compat.h
- create mode 100644 crypto/ocf/ocfnull/Makefile
- create mode 100644 crypto/ocf/ocfnull/ocfnull.c
- create mode 100644 crypto/ocf/random.c
- create mode 100644 crypto/ocf/rndtest.c
- create mode 100644 crypto/ocf/rndtest.h
- create mode 100644 crypto/ocf/uio.h
-
-diff --git a/crypto/Kconfig b/crypto/Kconfig
-index 527a857..8871f10 100644
---- a/crypto/Kconfig
-+++ b/crypto/Kconfig
-@@ -923,3 +923,6 @@ config CRYPTO_USER_API_SKCIPHER
- source "drivers/crypto/Kconfig"
-
- endif # if CRYPTO
-+
-+source "crypto/ocf/Kconfig"
-+
-diff --git a/crypto/Makefile b/crypto/Makefile
-index 9e6eee2..3cde9f8 100644
---- a/crypto/Makefile
-+++ b/crypto/Makefile
-@@ -91,6 +91,8 @@ obj-$(CONFIG_CRYPTO_USER_API) += af_alg.o
- obj-$(CONFIG_CRYPTO_USER_API_HASH) += algif_hash.o
- obj-$(CONFIG_CRYPTO_USER_API_SKCIPHER) += algif_skcipher.o
-
-+obj-$(CONFIG_OCF_OCF) += ocf/
-+
- #
- # generic algorithms and the async_tx api
- #
-diff --git a/crypto/ocf/Config.in b/crypto/ocf/Config.in
-new file mode 100755
-index 0000000..423d11f
---- /dev/null
-+++ b/crypto/ocf/Config.in
-@@ -0,0 +1,20 @@
-+#############################################################################
-+
-+mainmenu_option next_comment
-+comment 'OCF Configuration'
-+tristate 'OCF (Open Cryptograhic Framework)' CONFIG_OCF_OCF
-+dep_mbool ' enable fips RNG checks (fips check on RNG data before use)' \
-+ CONFIG_OCF_FIPS $CONFIG_OCF_OCF
-+dep_mbool ' enable harvesting entropy for /dev/random' \
-+ CONFIG_OCF_RANDOMHARVEST $CONFIG_OCF_OCF
-+dep_tristate ' cryptodev (user space support)' \
-+ CONFIG_OCF_CRYPTODEV $CONFIG_OCF_OCF
-+dep_tristate ' cryptosoft (software crypto engine)' \
-+ CONFIG_OCF_CRYPTOSOFT $CONFIG_OCF_OCF
-+dep_tristate ' ocfnull (does no crypto)' \
-+ CONFIG_OCF_OCFNULL $CONFIG_OCF_OCF
-+dep_tristate ' ocf-bench (HW crypto in-kernel benchmark)' \
-+ CONFIG_OCF_BENCH $CONFIG_OCF_OCF
-+endmenu
-+
-+#############################################################################
-diff --git a/crypto/ocf/Kconfig b/crypto/ocf/Kconfig
-new file mode 100755
-index 0000000..44459f4
---- /dev/null
-+++ b/crypto/ocf/Kconfig
-@@ -0,0 +1,48 @@
-+menu "OCF Configuration"
-+
-+config OCF_OCF
-+ tristate "OCF (Open Cryptograhic Framework)"
-+ help
-+ A linux port of the OpenBSD/FreeBSD crypto framework.
-+
-+config OCF_RANDOMHARVEST
-+ bool "crypto random --- harvest entropy for /dev/random"
-+ depends on OCF_OCF
-+ help
-+ Includes code to harvest random numbers from devices that support it.
-+
-+config OCF_FIPS
-+ bool "enable fips RNG checks"
-+ depends on OCF_OCF && OCF_RANDOMHARVEST
-+ help
-+ Run all RNG provided data through a fips check before
-+ adding it /dev/random's entropy pool.
-+
-+config OCF_CRYPTODEV
-+ tristate "cryptodev (user space support)"
-+ depends on OCF_OCF
-+ help
-+ The user space API to access crypto hardware.
-+
-+config OCF_CRYPTOSOFT
-+ tristate "cryptosoft (software crypto engine)"
-+ depends on OCF_OCF
-+ help
-+ A software driver for the OCF framework that uses
-+ the kernel CryptoAPI.
-+
-+config OCF_OCFNULL
-+ tristate "ocfnull (fake crypto engine)"
-+ depends on OCF_OCF
-+ help
-+ OCF driver for measuring ipsec overheads (does no crypto)
-+
-+config OCF_BENCH
-+ tristate "ocf-bench (HW crypto in-kernel benchmark)"
-+ depends on OCF_OCF
-+ help
-+ A very simple encryption test for the in-kernel interface
-+ of OCF. Also includes code to benchmark the IXP Access library
-+ for comparison.
-+
-+endmenu
-diff --git a/crypto/ocf/Makefile b/crypto/ocf/Makefile
-new file mode 100755
-index 0000000..29ac280
---- /dev/null
-+++ b/crypto/ocf/Makefile
-@@ -0,0 +1,138 @@
-+# for SGlinux builds
-+-include $(ROOTDIR)/modules/.config
-+
-+OCF_OBJS = crypto.o criov.o
-+
-+ifdef CONFIG_OCF_RANDOMHARVEST
-+ OCF_OBJS += random.o
-+endif
-+
-+ifdef CONFIG_OCF_FIPS
-+ OCF_OBJS += rndtest.o
-+endif
-+
-+# Add in autoconf.h to get #defines for CONFIG_xxx
-+AUTOCONF_H=$(ROOTDIR)/modules/autoconf.h
-+ifeq ($(AUTOCONF_H), $(wildcard $(AUTOCONF_H)))
-+ EXTRA_CFLAGS += -include $(AUTOCONF_H)
-+ export EXTRA_CFLAGS
-+endif
-+
-+ifndef obj
-+ obj ?= .
-+ _obj = subdir
-+ mod-subdirs := safe hifn ixp4xx talitos ocfnull
-+ export-objs += crypto.o criov.o random.o
-+ list-multi += ocf.o
-+ _slash :=
-+else
-+ _obj = obj
-+ _slash := /
-+endif
-+
-+EXTRA_CFLAGS += -I$(obj)/.
-+
-+obj-$(CONFIG_OCF_OCF) += ocf.o
-+obj-$(CONFIG_OCF_CRYPTODEV) += cryptodev.o
-+obj-$(CONFIG_OCF_CRYPTOSOFT) += cryptosoft.o
-+obj-$(CONFIG_OCF_BENCH) += ocf-bench.o
-+
-+$(_obj)-$(CONFIG_OCF_OCFNULL) += ocfnull$(_slash)
-+
-+ocf-objs := $(OCF_OBJS)
-+
-+dummy:
-+ @echo "Please consult the README for how to build OCF."
-+ @echo "If you can't wait then the following should do it:"
-+ @echo ""
-+ @echo " make ocf_modules"
-+ @echo " sudo make ocf_install"
-+ @echo ""
-+ @exit 1
-+
-+$(list-multi) dummy1: $(ocf-objs)
-+ $(LD) -r -o $@ $(ocf-objs)
-+
-+.PHONY:
-+clean:
-+ rm -f *.o *.ko .*.o.flags .*.ko.cmd .*.o.cmd .*.mod.o.cmd *.mod.c
-+ rm -f */*.o */*.ko */.*.o.cmd */.*.ko.cmd */.*.mod.o.cmd */*.mod.c */.*.o.flags
-+ rm -f */modules.order */modules.builtin modules.order modules.builtin
-+
-+ifdef TOPDIR
-+-include $(TOPDIR)/Rules.make
-+endif
-+
-+#
-+# targets to build easily on the current machine
-+#
-+
-+ocf_make:
-+ make -C /lib/modules/$(shell uname -r)/build M=`pwd` $(OCF_TARGET) CONFIG_OCF_OCF=m
-+ make -C /lib/modules/$(shell uname -r)/build M=`pwd` $(OCF_TARGET) CONFIG_OCF_OCF=m CONFIG_OCF_CRYPTOSOFT=m
-+ -make -C /lib/modules/$(shell uname -r)/build M=`pwd` $(OCF_TARGET) CONFIG_OCF_OCF=m CONFIG_OCF_BENCH=m
-+ -make -C /lib/modules/$(shell uname -r)/build M=`pwd` $(OCF_TARGET) CONFIG_OCF_OCF=m CONFIG_OCF_OCFNULL=m
-+ -make -C /lib/modules/$(shell uname -r)/build M=`pwd` $(OCF_TARGET) CONFIG_OCF_OCF=m CONFIG_OCF_HIFN=m
-+
-+ocf_modules:
-+ $(MAKE) ocf_make OCF_TARGET=modules
-+
-+ocf_install:
-+ $(MAKE) ocf_make OCF_TARGET="modules modules_install"
-+ depmod
-+ mkdir -p /usr/include/crypto
-+ cp cryptodev.h /usr/include/crypto/.
-+
-+#
-+# generate full kernel patches for 2.4 and 2.6 kernels to make patching
-+# your kernel easier
-+#
-+
-+.PHONY: patch
-+patch:
-+ patchbase=.; \
-+ [ -d $$patchbase/patches ] || patchbase=..; \
-+ patch=ocf-linux-base.patch; \
-+ patch24=ocf-linux-24.patch; \
-+ patch26=ocf-linux-26.patch; \
-+ patch3=ocf-linux-3.patch; \
-+ ( \
-+ find . -name Makefile; \
-+ find . -name Config.in; \
-+ find . -name Kconfig; \
-+ find . -name README; \
-+ find . -name '*.[ch]' | grep -v '.mod.c'; \
-+ ) | while read t; do \
-+ diff -Nau /dev/null $$t | sed 's?^+++ \./?+++ linux/crypto/ocf/?'; \
-+ done > $$patch; \
-+ cat $$patchbase/patches/linux-2.4.35-ocf.patch $$patch > $$patch24; \
-+ cat $$patchbase/patches/linux-2.6.38-ocf.patch $$patch > $$patch26; \
-+ cat $$patchbase/patches/linux-3.2.1-ocf.patch $$patch > $$patch3; \
-+
-+
-+#
-+# this target probably does nothing for anyone but me - davidm
-+#
-+
-+.PHONY: release
-+release:
-+ REL=`date +%Y%m%d`; RELDIR=/tmp/ocf-linux-$$REL; \
-+ CURDIR=`pwd`; \
-+ rm -rf /tmp/ocf-linux-$$REL*; \
-+ mkdir -p $$RELDIR/ocf; \
-+ mkdir -p $$RELDIR/patches; \
-+ mkdir -p $$RELDIR/crypto-tools; \
-+ cp README* $$RELDIR/.; \
-+ cp patches/[!C]* $$RELDIR/patches/.; \
-+ cp tools/[!C]* $$RELDIR/crypto-tools/.; \
-+ cp -r [!C]* Config.in $$RELDIR/ocf/.; \
-+ rm -rf $$RELDIR/ocf/patches $$RELDIR/ocf/tools; \
-+ rm -f $$RELDIR/ocf/README*; \
-+ cp $$CURDIR/../../user/crypto-tools/[!C]* $$RELDIR/crypto-tools/.; \
-+ make -C $$RELDIR/crypto-tools clean; \
-+ make -C $$RELDIR/ocf clean; \
-+ find $$RELDIR/ocf -name CVS | xargs rm -rf; \
-+ cd $$RELDIR/..; \
-+ tar cvf ocf-linux-$$REL.tar ocf-linux-$$REL; \
-+ gzip -9 ocf-linux-$$REL.tar
-+
-diff --git a/crypto/ocf/criov.c b/crypto/ocf/criov.c
-new file mode 100644
-index 0000000..a8c1a8c
---- /dev/null
-+++ b/crypto/ocf/criov.c
-@@ -0,0 +1,215 @@
-+/* $OpenBSD: criov.c,v 1.9 2002/01/29 15:48:29 jason Exp $ */
-+
-+/*
-+ * Linux port done by David McCullough <david_mccullough at mcafee.com>
-+ * Copyright (C) 2006-2010 David McCullough
-+ * Copyright (C) 2004-2005 Intel Corporation.
-+ * The license and original author are listed below.
-+ *
-+ * Copyright (c) 1999 Theo de Raadt
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions
-+ * are met:
-+ *
-+ * 1. Redistributions of source code must retain the above copyright
-+ * notice, this list of conditions and the following disclaimer.
-+ * 2. Redistributions in binary form must reproduce the above copyright
-+ * notice, this list of conditions and the following disclaimer in the
-+ * documentation and/or other materials provided with the distribution.
-+ * 3. The name of the author may not be used to endorse or promote products
-+ * derived from this software without specific prior written permission.
-+ *
-+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
-+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+__FBSDID("$FreeBSD: src/sys/opencrypto/criov.c,v 1.5 2006/06/04 22:15:13 pjd Exp $");
-+ */
-+
-+#include <linux/version.h>
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,38) && !defined(AUTOCONF_INCLUDED)
-+#include <linux/config.h>
-+#endif
-+#include <linux/module.h>
-+#include <linux/init.h>
-+#include <linux/slab.h>
-+#include <linux/uio.h>
-+#include <linux/skbuff.h>
-+#include <linux/kernel.h>
-+#include <linux/mm.h>
-+#include <asm/io.h>
-+
-+#include <uio.h>
-+#include <cryptodev.h>
-+
-+/*
-+ * This macro is only for avoiding code duplication, as we need to skip
-+ * given number of bytes in the same way in three functions below.
-+ */
-+#define CUIO_SKIP() do { \
-+ KASSERT(off >= 0, ("%s: off %d < 0", __func__, off)); \
-+ KASSERT(len >= 0, ("%s: len %d < 0", __func__, len)); \
-+ while (off > 0) { \
-+ KASSERT(iol >= 0, ("%s: empty in skip", __func__)); \
-+ if (off < iov->iov_len) \
-+ break; \
-+ off -= iov->iov_len; \
-+ iol--; \
-+ iov++; \
-+ } \
-+} while (0)
-+
-+void
-+cuio_copydata(struct uio* uio, int off, int len, caddr_t cp)
-+{
-+ struct iovec *iov = uio->uio_iov;
-+ int iol = uio->uio_iovcnt;
-+ unsigned count;
-+
-+ CUIO_SKIP();
-+ while (len > 0) {
-+ KASSERT(iol >= 0, ("%s: empty", __func__));
-+ count = min((int)(iov->iov_len - off), len);
-+ memcpy(cp, ((caddr_t)iov->iov_base) + off, count);
-+ len -= count;
-+ cp += count;
-+ off = 0;
-+ iol--;
-+ iov++;
-+ }
-+}
-+
-+void
-+cuio_copyback(struct uio* uio, int off, int len, caddr_t cp)
-+{
-+ struct iovec *iov = uio->uio_iov;
-+ int iol = uio->uio_iovcnt;
-+ unsigned count;
-+
-+ CUIO_SKIP();
-+ while (len > 0) {
-+ KASSERT(iol >= 0, ("%s: empty", __func__));
-+ count = min((int)(iov->iov_len - off), len);
-+ memcpy(((caddr_t)iov->iov_base) + off, cp, count);
-+ len -= count;
-+ cp += count;
-+ off = 0;
-+ iol--;
-+ iov++;
-+ }
-+}
-+
-+/*
-+ * Return a pointer to iov/offset of location in iovec list.
-+ */
-+struct iovec *
-+cuio_getptr(struct uio *uio, int loc, int *off)
-+{
-+ struct iovec *iov = uio->uio_iov;
-+ int iol = uio->uio_iovcnt;
-+
-+ while (loc >= 0) {
-+ /* Normal end of search */
-+ if (loc < iov->iov_len) {
-+ *off = loc;
-+ return (iov);
-+ }
-+
-+ loc -= iov->iov_len;
-+ if (iol == 0) {
-+ if (loc == 0) {
-+ /* Point at the end of valid data */
-+ *off = iov->iov_len;
-+ return (iov);
-+ } else
-+ return (NULL);
-+ } else {
-+ iov++, iol--;
-+ }
-+ }
-+
-+ return (NULL);
-+}
-+
-+EXPORT_SYMBOL(cuio_copyback);
-+EXPORT_SYMBOL(cuio_copydata);
-+EXPORT_SYMBOL(cuio_getptr);
-+
-+static void
-+skb_copy_bits_back(struct sk_buff *skb, int offset, caddr_t cp, int len)
-+{
-+ int i;
-+ if (offset < skb_headlen(skb)) {
-+ memcpy(skb->data + offset, cp, min_t(int, skb_headlen(skb), len));
-+ len -= skb_headlen(skb);
-+ cp += skb_headlen(skb);
-+ }
-+ offset -= skb_headlen(skb);
-+ for (i = 0; len > 0 && i < skb_shinfo(skb)->nr_frags; i++) {
-+ if (offset < skb_shinfo(skb)->frags[i].size) {
-+ memcpy(page_address(skb_frag_page(&skb_shinfo(skb)->frags[i])) +
-+ skb_shinfo(skb)->frags[i].page_offset,
-+ cp, min_t(int, skb_shinfo(skb)->frags[i].size, len));
-+ len -= skb_shinfo(skb)->frags[i].size;
-+ cp += skb_shinfo(skb)->frags[i].size;
-+ }
-+ offset -= skb_shinfo(skb)->frags[i].size;
-+ }
-+}
-+
-+void
-+crypto_copyback(int flags, caddr_t buf, int off, int size, caddr_t in)
-+{
-+
-+ if ((flags & CRYPTO_F_SKBUF) != 0)
-+ skb_copy_bits_back((struct sk_buff *)buf, off, in, size);
-+ else if ((flags & CRYPTO_F_IOV) != 0)
-+ cuio_copyback((struct uio *)buf, off, size, in);
-+ else
-+ bcopy(in, buf + off, size);
-+}
-+
-+void
-+crypto_copydata(int flags, caddr_t buf, int off, int size, caddr_t out)
-+{
-+
-+ if ((flags & CRYPTO_F_SKBUF) != 0)
-+ skb_copy_bits((struct sk_buff *)buf, off, out, size);
-+ else if ((flags & CRYPTO_F_IOV) != 0)
-+ cuio_copydata((struct uio *)buf, off, size, out);
-+ else
-+ bcopy(buf + off, out, size);
-+}
-+
-+int
-+crypto_apply(int flags, caddr_t buf, int off, int len,
-+ int (*f)(void *, void *, u_int), void *arg)
-+{
-+#if 0
-+ int error;
-+
-+ if ((flags & CRYPTO_F_SKBUF) != 0)
-+ error = XXXXXX((struct mbuf *)buf, off, len, f, arg);
-+ else if ((flags & CRYPTO_F_IOV) != 0)
-+ error = cuio_apply((struct uio *)buf, off, len, f, arg);
-+ else
-+ error = (*f)(arg, buf + off, len);
-+ return (error);
-+#else
-+ KASSERT(0, ("crypto_apply not implemented!\n"));
-+#endif
-+ return 0;
-+}
-+
-+EXPORT_SYMBOL(crypto_copyback);
-+EXPORT_SYMBOL(crypto_copydata);
-+EXPORT_SYMBOL(crypto_apply);
-+
-diff --git a/crypto/ocf/crypto.c b/crypto/ocf/crypto.c
-new file mode 100644
-index 0000000..f48210d
---- /dev/null
-+++ b/crypto/ocf/crypto.c
-@@ -0,0 +1,1766 @@
-+/*-
-+ * Linux port done by David McCullough <david_mccullough at mcafee.com>
-+ * Copyright (C) 2006-2010 David McCullough
-+ * Copyright (C) 2004-2005 Intel Corporation.
-+ * The license and original author are listed below.
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * Copyright (c) 2002-2006 Sam Leffler. All rights reserved.
-+ *
-+ * modification, are permitted provided that the following conditions
-+ * are met:
-+ * 1. Redistributions of source code must retain the above copyright
-+ * notice, this list of conditions and the following disclaimer.
-+ * 2. Redistributions in binary form must reproduce the above copyright
-+ * notice, this list of conditions and the following disclaimer in the
-+ * documentation and/or other materials provided with the distribution.
-+ *
-+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
-+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ */
-+
-+#if 0
-+#include <sys/cdefs.h>
-+__FBSDID("$FreeBSD: src/sys/opencrypto/crypto.c,v 1.27 2007/03/21 03:42:51 sam Exp $");
-+#endif
-+
-+/*
-+ * Cryptographic Subsystem.
-+ *
-+ * This code is derived from the Openbsd Cryptographic Framework (OCF)
-+ * that has the copyright shown below. Very little of the original
-+ * code remains.
-+ */
-+/*-
-+ * The author of this code is Angelos D. Keromytis (angelos at cis.upenn.edu)
-+ *
-+ * This code was written by Angelos D. Keromytis in Athens, Greece, in
-+ * February 2000. Network Security Technologies Inc. (NSTI) kindly
-+ * supported the development of this code.
-+ *
-+ * Copyright (c) 2000, 2001 Angelos D. Keromytis
-+ *
-+ * Permission to use, copy, and modify this software with or without fee
-+ * is hereby granted, provided that this entire notice is included in
-+ * all source code copies of any software which is or includes a copy or
-+ * modification of this software.
-+ *
-+ * THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR
-+ * IMPLIED WARRANTY. IN PARTICULAR, NONE OF THE AUTHORS MAKES ANY
-+ * REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE
-+ * MERCHANTABILITY OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR
-+ * PURPOSE.
-+ *
-+__FBSDID("$FreeBSD: src/sys/opencrypto/crypto.c,v 1.16 2005/01/07 02:29:16 imp Exp $");
-+ */
-+
-+
-+#include <linux/version.h>
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,38) && !defined(AUTOCONF_INCLUDED)
-+#include <linux/config.h>
-+#endif
-+#include <linux/module.h>
-+#include <linux/init.h>
-+#include <linux/list.h>
-+#include <linux/slab.h>
-+#include <linux/wait.h>
-+#include <linux/sched.h>
-+#include <linux/spinlock.h>
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,4)
-+#include <linux/kthread.h>
-+#endif
-+#include <cryptodev.h>
-+
-+/*
-+ * keep track of whether or not we have been initialised, a big
-+ * issue if we are linked into the kernel and a driver gets started before
-+ * us
-+ */
-+static int crypto_initted = 0;
-+
-+/*
-+ * Crypto drivers register themselves by allocating a slot in the
-+ * crypto_drivers table with crypto_get_driverid() and then registering
-+ * each algorithm they support with crypto_register() and crypto_kregister().
-+ */
-+
-+/*
-+ * lock on driver table
-+ * we track its state as spin_is_locked does not do anything on non-SMP boxes
-+ */
-+static spinlock_t crypto_drivers_lock;
-+static int crypto_drivers_locked; /* for non-SMP boxes */
-+
-+#define CRYPTO_DRIVER_LOCK() \
-+ ({ \
-+ spin_lock_irqsave(&crypto_drivers_lock, d_flags); \
-+ crypto_drivers_locked = 1; \
-+ dprintk("%s,%d: DRIVER_LOCK()\n", __FILE__, __LINE__); \
-+ })
-+#define CRYPTO_DRIVER_UNLOCK() \
-+ ({ \
-+ dprintk("%s,%d: DRIVER_UNLOCK()\n", __FILE__, __LINE__); \
-+ crypto_drivers_locked = 0; \
-+ spin_unlock_irqrestore(&crypto_drivers_lock, d_flags); \
-+ })
-+#define CRYPTO_DRIVER_ASSERT() \
-+ ({ \
-+ if (!crypto_drivers_locked) { \
-+ dprintk("%s,%d: DRIVER_ASSERT!\n", __FILE__, __LINE__); \
-+ } \
-+ })
-+
-+/*
-+ * Crypto device/driver capabilities structure.
-+ *
-+ * Synchronization:
-+ * (d) - protected by CRYPTO_DRIVER_LOCK()
-+ * (q) - protected by CRYPTO_Q_LOCK()
-+ * Not tagged fields are read-only.
-+ */
-+struct cryptocap {
-+ device_t cc_dev; /* (d) device/driver */
-+ u_int32_t cc_sessions; /* (d) # of sessions */
-+ u_int32_t cc_koperations; /* (d) # os asym operations */
-+ /*
-+ * Largest possible operator length (in bits) for each type of
-+ * encryption algorithm. XXX not used
-+ */
-+ u_int16_t cc_max_op_len[CRYPTO_ALGORITHM_MAX + 1];
-+ u_int8_t cc_alg[CRYPTO_ALGORITHM_MAX + 1];
-+ u_int8_t cc_kalg[CRK_ALGORITHM_MAX + 1];
-+
-+ int cc_flags; /* (d) flags */
-+#define CRYPTOCAP_F_CLEANUP 0x80000000 /* needs resource cleanup */
-+ int cc_qblocked; /* (q) symmetric q blocked */
-+ int cc_kqblocked; /* (q) asymmetric q blocked */
-+
-+ int cc_unqblocked; /* (q) symmetric q blocked */
-+ int cc_unkqblocked; /* (q) asymmetric q blocked */
-+};
-+static struct cryptocap *crypto_drivers = NULL;
-+static int crypto_drivers_num = 0;
-+
-+/*
-+ * There are two queues for crypto requests; one for symmetric (e.g.
-+ * cipher) operations and one for asymmetric (e.g. MOD)operations.
-+ * A single mutex is used to lock access to both queues. We could
-+ * have one per-queue but having one simplifies handling of block/unblock
-+ * operations.
-+ */
-+static LIST_HEAD(crp_q); /* crypto request queue */
-+static LIST_HEAD(crp_kq); /* asym request queue */
-+
-+static spinlock_t crypto_q_lock;
-+
-+int crypto_all_qblocked = 0; /* protect with Q_LOCK */
-+module_param(crypto_all_qblocked, int, 0444);
-+MODULE_PARM_DESC(crypto_all_qblocked, "Are all crypto queues blocked");
-+
-+int crypto_all_kqblocked = 0; /* protect with Q_LOCK */
-+module_param(crypto_all_kqblocked, int, 0444);
-+MODULE_PARM_DESC(crypto_all_kqblocked, "Are all asym crypto queues blocked");
-+
-+#define CRYPTO_Q_LOCK() \
-+ ({ \
-+ spin_lock_irqsave(&crypto_q_lock, q_flags); \
-+ dprintk("%s,%d: Q_LOCK()\n", __FILE__, __LINE__); \
-+ })
-+#define CRYPTO_Q_UNLOCK() \
-+ ({ \
-+ dprintk("%s,%d: Q_UNLOCK()\n", __FILE__, __LINE__); \
-+ spin_unlock_irqrestore(&crypto_q_lock, q_flags); \
-+ })
-+
-+/*
-+ * There are two queues for processing completed crypto requests; one
-+ * for the symmetric and one for the asymmetric ops. We only need one
-+ * but have two to avoid type futzing (cryptop vs. cryptkop). A single
-+ * mutex is used to lock access to both queues. Note that this lock
-+ * must be separate from the lock on request queues to insure driver
-+ * callbacks don't generate lock order reversals.
-+ */
-+static LIST_HEAD(crp_ret_q); /* callback queues */
-+static LIST_HEAD(crp_ret_kq);
-+
-+static spinlock_t crypto_ret_q_lock;
-+#define CRYPTO_RETQ_LOCK() \
-+ ({ \
-+ spin_lock_irqsave(&crypto_ret_q_lock, r_flags); \
-+ dprintk("%s,%d: RETQ_LOCK\n", __FILE__, __LINE__); \
-+ })
-+#define CRYPTO_RETQ_UNLOCK() \
-+ ({ \
-+ dprintk("%s,%d: RETQ_UNLOCK\n", __FILE__, __LINE__); \
-+ spin_unlock_irqrestore(&crypto_ret_q_lock, r_flags); \
-+ })
-+#define CRYPTO_RETQ_EMPTY() (list_empty(&crp_ret_q) && list_empty(&crp_ret_kq))
-+
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20)
-+static kmem_cache_t *cryptop_zone;
-+static kmem_cache_t *cryptodesc_zone;
-+#else
-+static struct kmem_cache *cryptop_zone;
-+static struct kmem_cache *cryptodesc_zone;
-+#endif
-+
-+#define debug crypto_debug
-+int crypto_debug = 0;
-+module_param(crypto_debug, int, 0644);
-+MODULE_PARM_DESC(crypto_debug, "Enable debug");
-+EXPORT_SYMBOL(crypto_debug);
-+
-+/*
-+ * Maximum number of outstanding crypto requests before we start
-+ * failing requests. We need this to prevent DOS when too many
-+ * requests are arriving for us to keep up. Otherwise we will
-+ * run the system out of memory. Since crypto is slow, we are
-+ * usually the bottleneck that needs to say, enough is enough.
-+ *
-+ * We cannot print errors when this condition occurs, we are already too
-+ * slow, printing anything will just kill us
-+ */
-+
-+static int crypto_q_cnt = 0;
-+module_param(crypto_q_cnt, int, 0444);
-+MODULE_PARM_DESC(crypto_q_cnt,
-+ "Current number of outstanding crypto requests");
-+
-+static int crypto_q_max = 1000;
-+module_param(crypto_q_max, int, 0644);
-+MODULE_PARM_DESC(crypto_q_max,
-+ "Maximum number of outstanding crypto requests");
-+
-+#define bootverbose crypto_verbose
-+static int crypto_verbose = 0;
-+module_param(crypto_verbose, int, 0644);
-+MODULE_PARM_DESC(crypto_verbose,
-+ "Enable verbose crypto startup");
-+
-+int crypto_usercrypto = 1; /* userland may do crypto reqs */
-+module_param(crypto_usercrypto, int, 0644);
-+MODULE_PARM_DESC(crypto_usercrypto,
-+ "Enable/disable user-mode access to crypto support");
-+
-+int crypto_userasymcrypto = 1; /* userland may do asym crypto reqs */
-+module_param(crypto_userasymcrypto, int, 0644);
-+MODULE_PARM_DESC(crypto_userasymcrypto,
-+ "Enable/disable user-mode access to asymmetric crypto support");
-+
-+int crypto_devallowsoft = 0; /* only use hardware crypto */
-+module_param(crypto_devallowsoft, int, 0644);
-+MODULE_PARM_DESC(crypto_devallowsoft,
-+ "Enable/disable use of software crypto support");
-+
-+/*
-+ * This parameter controls the maximum number of crypto operations to
-+ * do consecutively in the crypto kernel thread before scheduling to allow
-+ * other processes to run. Without it, it is possible to get into a
-+ * situation where the crypto thread never allows any other processes to run.
-+ * Default to 1000 which should be less than one second.
-+ */
-+static int crypto_max_loopcount = 1000;
-+module_param(crypto_max_loopcount, int, 0644);
-+MODULE_PARM_DESC(crypto_max_loopcount,
-+ "Maximum number of crypto ops to do before yielding to other processes");
-+
-+#ifndef CONFIG_NR_CPUS
-+#define CONFIG_NR_CPUS 1
-+#endif
-+
-+static struct task_struct *cryptoproc[CONFIG_NR_CPUS];
-+static struct task_struct *cryptoretproc[CONFIG_NR_CPUS];
-+static DECLARE_WAIT_QUEUE_HEAD(cryptoproc_wait);
-+static DECLARE_WAIT_QUEUE_HEAD(cryptoretproc_wait);
-+
-+static int crypto_proc(void *arg);
-+static int crypto_ret_proc(void *arg);
-+static int crypto_invoke(struct cryptocap *cap, struct cryptop *crp, int hint);
-+static int crypto_kinvoke(struct cryptkop *krp, int flags);
-+static void crypto_exit(void);
-+static int crypto_init(void);
-+
-+static struct cryptostats cryptostats;
-+
-+static struct cryptocap *
-+crypto_checkdriver(u_int32_t hid)
-+{
-+ if (crypto_drivers == NULL)
-+ return NULL;
-+ return (hid >= crypto_drivers_num ? NULL : &crypto_drivers[hid]);
-+}
-+
-+/*
-+ * Compare a driver's list of supported algorithms against another
-+ * list; return non-zero if all algorithms are supported.
-+ */
-+static int
-+driver_suitable(const struct cryptocap *cap, const struct cryptoini *cri)
-+{
-+ const struct cryptoini *cr;
-+
-+ /* See if all the algorithms are supported. */
-+ for (cr = cri; cr; cr = cr->cri_next)
-+ if (cap->cc_alg[cr->cri_alg] == 0)
-+ return 0;
-+ return 1;
-+}
-+
-+
-+/*
-+ * Select a driver for a new session that supports the specified
-+ * algorithms and, optionally, is constrained according to the flags.
-+ * The algorithm we use here is pretty stupid; just use the
-+ * first driver that supports all the algorithms we need. If there
-+ * are multiple drivers we choose the driver with the fewest active
-+ * sessions. We prefer hardware-backed drivers to software ones.
-+ *
-+ * XXX We need more smarts here (in real life too, but that's
-+ * XXX another story altogether).
-+ */
-+static struct cryptocap *
-+crypto_select_driver(const struct cryptoini *cri, int flags)
-+{
-+ struct cryptocap *cap, *best;
-+ int match, hid;
-+
-+ CRYPTO_DRIVER_ASSERT();
-+
-+ /*
-+ * Look first for hardware crypto devices if permitted.
-+ */
-+ if (flags & CRYPTOCAP_F_HARDWARE)
-+ match = CRYPTOCAP_F_HARDWARE;
-+ else
-+ match = CRYPTOCAP_F_SOFTWARE;
-+ best = NULL;
-+again:
-+ for (hid = 0; hid < crypto_drivers_num; hid++) {
-+ cap = &crypto_drivers[hid];
-+ /*
-+ * If it's not initialized, is in the process of
-+ * going away, or is not appropriate (hardware
-+ * or software based on match), then skip.
-+ */
-+ if (cap->cc_dev == NULL ||
-+ (cap->cc_flags & CRYPTOCAP_F_CLEANUP) ||
-+ (cap->cc_flags & match) == 0)
-+ continue;
-+
-+ /* verify all the algorithms are supported. */
-+ if (driver_suitable(cap, cri)) {
-+ if (best == NULL ||
-+ cap->cc_sessions < best->cc_sessions)
-+ best = cap;
-+ }
-+ }
-+ if (best != NULL)
-+ return best;
-+ if (match == CRYPTOCAP_F_HARDWARE && (flags & CRYPTOCAP_F_SOFTWARE)) {
-+ /* sort of an Algol 68-style for loop */
-+ match = CRYPTOCAP_F_SOFTWARE;
-+ goto again;
-+ }
-+ return best;
-+}
-+
-+/*
-+ * Create a new session. The crid argument specifies a crypto
-+ * driver to use or constraints on a driver to select (hardware
-+ * only, software only, either). Whatever driver is selected
-+ * must be capable of the requested crypto algorithms.
-+ */
-+int
-+crypto_newsession(u_int64_t *sid, struct cryptoini *cri, int crid)
-+{
-+ struct cryptocap *cap;
-+ u_int32_t hid, lid;
-+ int err;
-+ unsigned long d_flags;
-+
-+ CRYPTO_DRIVER_LOCK();
-+ if ((crid & (CRYPTOCAP_F_HARDWARE | CRYPTOCAP_F_SOFTWARE)) == 0) {
-+ /*
-+ * Use specified driver; verify it is capable.
-+ */
-+ cap = crypto_checkdriver(crid);
-+ if (cap != NULL && !driver_suitable(cap, cri))
-+ cap = NULL;
-+ } else {
-+ /*
-+ * No requested driver; select based on crid flags.
-+ */
-+ cap = crypto_select_driver(cri, crid);
-+ /*
-+ * if NULL then can't do everything in one session.
-+ * XXX Fix this. We need to inject a "virtual" session
-+ * XXX layer right about here.
-+ */
-+ }
-+ if (cap != NULL) {
-+ /* Call the driver initialization routine. */
-+ hid = cap - crypto_drivers;
-+ lid = hid; /* Pass the driver ID. */
-+ cap->cc_sessions++;
-+ CRYPTO_DRIVER_UNLOCK();
-+ err = CRYPTODEV_NEWSESSION(cap->cc_dev, &lid, cri);
-+ CRYPTO_DRIVER_LOCK();
-+ if (err == 0) {
-+ (*sid) = (cap->cc_flags & 0xff000000)
-+ | (hid & 0x00ffffff);
-+ (*sid) <<= 32;
-+ (*sid) |= (lid & 0xffffffff);
-+ } else
-+ cap->cc_sessions--;
-+ } else
-+ err = EINVAL;
-+ CRYPTO_DRIVER_UNLOCK();
-+ return err;
-+}
-+
-+static void
-+crypto_remove(struct cryptocap *cap)
-+{
-+ CRYPTO_DRIVER_ASSERT();
-+ if (cap->cc_sessions == 0 && cap->cc_koperations == 0)
-+ bzero(cap, sizeof(*cap));
-+}
-+
-+/*
-+ * Delete an existing session (or a reserved session on an unregistered
-+ * driver).
-+ */
-+int
-+crypto_freesession(u_int64_t sid)
-+{
-+ struct cryptocap *cap;
-+ u_int32_t hid;
-+ int err = 0;
-+ unsigned long d_flags;
-+
-+ dprintk("%s()\n", __FUNCTION__);
-+ CRYPTO_DRIVER_LOCK();
-+
-+ if (crypto_drivers == NULL) {
-+ err = EINVAL;
-+ goto done;
-+ }
-+
-+ /* Determine two IDs. */
-+ hid = CRYPTO_SESID2HID(sid);
-+
-+ if (hid >= crypto_drivers_num) {
-+ dprintk("%s - INVALID DRIVER NUM %d\n", __FUNCTION__, hid);
-+ err = ENOENT;
-+ goto done;
-+ }
-+ cap = &crypto_drivers[hid];
-+
-+ if (cap->cc_dev) {
-+ CRYPTO_DRIVER_UNLOCK();
-+ /* Call the driver cleanup routine, if available, unlocked. */
-+ err = CRYPTODEV_FREESESSION(cap->cc_dev, sid);
-+ CRYPTO_DRIVER_LOCK();
-+ }
-+
-+ if (cap->cc_sessions)
-+ cap->cc_sessions--;
-+
-+ if (cap->cc_flags & CRYPTOCAP_F_CLEANUP)
-+ crypto_remove(cap);
-+
-+done:
-+ CRYPTO_DRIVER_UNLOCK();
-+ return err;
-+}
-+
-+/*
-+ * Return an unused driver id. Used by drivers prior to registering
-+ * support for the algorithms they handle.
-+ */
-+int32_t
-+crypto_get_driverid(device_t dev, int flags)
-+{
-+ struct cryptocap *newdrv;
-+ int i;
-+ unsigned long d_flags;
-+
-+ if ((flags & (CRYPTOCAP_F_HARDWARE | CRYPTOCAP_F_SOFTWARE)) == 0) {
-+ printf("%s: no flags specified when registering driver\n",
-+ device_get_nameunit(dev));
-+ return -1;
-+ }
-+
-+ CRYPTO_DRIVER_LOCK();
-+
-+ for (i = 0; i < crypto_drivers_num; i++) {
-+ if (crypto_drivers[i].cc_dev == NULL &&
-+ (crypto_drivers[i].cc_flags & CRYPTOCAP_F_CLEANUP) == 0) {
-+ break;
-+ }
-+ }
-+
-+ /* Out of entries, allocate some more. */
-+ if (i == crypto_drivers_num) {
-+ /* Be careful about wrap-around. */
-+ if (2 * crypto_drivers_num <= crypto_drivers_num) {
-+ CRYPTO_DRIVER_UNLOCK();
-+ printk("crypto: driver count wraparound!\n");
-+ return -1;
-+ }
-+
-+ newdrv = kmalloc(2 * crypto_drivers_num * sizeof(struct cryptocap),
-+ GFP_KERNEL);
-+ if (newdrv == NULL) {
-+ CRYPTO_DRIVER_UNLOCK();
-+ printk("crypto: no space to expand driver table!\n");
-+ return -1;
-+ }
-+
-+ memcpy(newdrv, crypto_drivers,
-+ crypto_drivers_num * sizeof(struct cryptocap));
-+ memset(&newdrv[crypto_drivers_num], 0,
-+ crypto_drivers_num * sizeof(struct cryptocap));
-+
-+ crypto_drivers_num *= 2;
-+
-+ kfree(crypto_drivers);
-+ crypto_drivers = newdrv;
-+ }
-+
-+ /* NB: state is zero'd on free */
-+ crypto_drivers[i].cc_sessions = 1; /* Mark */
-+ crypto_drivers[i].cc_dev = dev;
-+ crypto_drivers[i].cc_flags = flags;
-+ if (bootverbose)
-+ printf("crypto: assign %s driver id %u, flags %u\n",
-+ device_get_nameunit(dev), i, flags);
-+
-+ CRYPTO_DRIVER_UNLOCK();
-+
-+ return i;
-+}
-+
-+/*
-+ * Lookup a driver by name. We match against the full device
-+ * name and unit, and against just the name. The latter gives
-+ * us a simple widlcarding by device name. On success return the
-+ * driver/hardware identifier; otherwise return -1.
-+ */
-+int
-+crypto_find_driver(const char *match)
-+{
-+ int i, len = strlen(match);
-+ unsigned long d_flags;
-+
-+ CRYPTO_DRIVER_LOCK();
-+ for (i = 0; i < crypto_drivers_num; i++) {
-+ device_t dev = crypto_drivers[i].cc_dev;
-+ if (dev == NULL ||
-+ (crypto_drivers[i].cc_flags & CRYPTOCAP_F_CLEANUP))
-+ continue;
-+ if (strncmp(match, device_get_nameunit(dev), len) == 0 ||
-+ strncmp(match, device_get_name(dev), len) == 0)
-+ break;
-+ }
-+ CRYPTO_DRIVER_UNLOCK();
-+ return i < crypto_drivers_num ? i : -1;
-+}
-+
-+/*
-+ * Return the device_t for the specified driver or NULL
-+ * if the driver identifier is invalid.
-+ */
-+device_t
-+crypto_find_device_byhid(int hid)
-+{
-+ struct cryptocap *cap = crypto_checkdriver(hid);
-+ return cap != NULL ? cap->cc_dev : NULL;
-+}
-+
-+/*
-+ * Return the device/driver capabilities.
-+ */
-+int
-+crypto_getcaps(int hid)
-+{
-+ struct cryptocap *cap = crypto_checkdriver(hid);
-+ return cap != NULL ? cap->cc_flags : 0;
-+}
-+
-+/*
-+ * Register support for a key-related algorithm. This routine
-+ * is called once for each algorithm supported a driver.
-+ */
-+int
-+crypto_kregister(u_int32_t driverid, int kalg, u_int32_t flags)
-+{
-+ struct cryptocap *cap;
-+ int err;
-+ unsigned long d_flags;
-+
-+ dprintk("%s()\n", __FUNCTION__);
-+ CRYPTO_DRIVER_LOCK();
-+
-+ cap = crypto_checkdriver(driverid);
-+ if (cap != NULL &&
-+ (CRK_ALGORITM_MIN <= kalg && kalg <= CRK_ALGORITHM_MAX)) {
-+ /*
-+ * XXX Do some performance testing to determine placing.
-+ * XXX We probably need an auxiliary data structure that
-+ * XXX describes relative performances.
-+ */
-+
-+ cap->cc_kalg[kalg] = flags | CRYPTO_ALG_FLAG_SUPPORTED;
-+ if (bootverbose)
-+ printf("crypto: %s registers key alg %u flags %u\n"
-+ , device_get_nameunit(cap->cc_dev)
-+ , kalg
-+ , flags
-+ );
-+ err = 0;
-+ } else
-+ err = EINVAL;
-+
-+ CRYPTO_DRIVER_UNLOCK();
-+ return err;
-+}
-+
-+/*
-+ * Register support for a non-key-related algorithm. This routine
-+ * is called once for each such algorithm supported by a driver.
-+ */
-+int
-+crypto_register(u_int32_t driverid, int alg, u_int16_t maxoplen,
-+ u_int32_t flags)
-+{
-+ struct cryptocap *cap;
-+ int err;
-+ unsigned long d_flags;
-+
-+ dprintk("%s(id=0x%x, alg=%d, maxoplen=%d, flags=0x%x)\n", __FUNCTION__,
-+ driverid, alg, maxoplen, flags);
-+
-+ CRYPTO_DRIVER_LOCK();
-+
-+ cap = crypto_checkdriver(driverid);
-+ /* NB: algorithms are in the range [1..max] */
-+ if (cap != NULL &&
-+ (CRYPTO_ALGORITHM_MIN <= alg && alg <= CRYPTO_ALGORITHM_MAX)) {
-+ /*
-+ * XXX Do some performance testing to determine placing.
-+ * XXX We probably need an auxiliary data structure that
-+ * XXX describes relative performances.
-+ */
-+
-+ cap->cc_alg[alg] = flags | CRYPTO_ALG_FLAG_SUPPORTED;
-+ cap->cc_max_op_len[alg] = maxoplen;
-+ if (bootverbose)
-+ printf("crypto: %s registers alg %u flags %u maxoplen %u\n"
-+ , device_get_nameunit(cap->cc_dev)
-+ , alg
-+ , flags
-+ , maxoplen
-+ );
-+ cap->cc_sessions = 0; /* Unmark */
-+ err = 0;
-+ } else
-+ err = EINVAL;
-+
-+ CRYPTO_DRIVER_UNLOCK();
-+ return err;
-+}
-+
-+static void
-+driver_finis(struct cryptocap *cap)
-+{
-+ u_int32_t ses, kops;
-+
-+ CRYPTO_DRIVER_ASSERT();
-+
-+ ses = cap->cc_sessions;
-+ kops = cap->cc_koperations;
-+ bzero(cap, sizeof(*cap));
-+ if (ses != 0 || kops != 0) {
-+ /*
-+ * If there are pending sessions,
-+ * just mark as invalid.
-+ */
-+ cap->cc_flags |= CRYPTOCAP_F_CLEANUP;
-+ cap->cc_sessions = ses;
-+ cap->cc_koperations = kops;
-+ }
-+}
-+
-+/*
-+ * Unregister a crypto driver. If there are pending sessions using it,
-+ * leave enough information around so that subsequent calls using those
-+ * sessions will correctly detect the driver has been unregistered and
-+ * reroute requests.
-+ */
-+int
-+crypto_unregister(u_int32_t driverid, int alg)
-+{
-+ struct cryptocap *cap;
-+ int i, err;
-+ unsigned long d_flags;
-+
-+ dprintk("%s()\n", __FUNCTION__);
-+ CRYPTO_DRIVER_LOCK();
-+
-+ cap = crypto_checkdriver(driverid);
-+ if (cap != NULL &&
-+ (CRYPTO_ALGORITHM_MIN <= alg && alg <= CRYPTO_ALGORITHM_MAX) &&
-+ cap->cc_alg[alg] != 0) {
-+ cap->cc_alg[alg] = 0;
-+ cap->cc_max_op_len[alg] = 0;
-+
-+ /* Was this the last algorithm ? */
-+ for (i = 1; i <= CRYPTO_ALGORITHM_MAX; i++)
-+ if (cap->cc_alg[i] != 0)
-+ break;
-+
-+ if (i == CRYPTO_ALGORITHM_MAX + 1)
-+ driver_finis(cap);
-+ err = 0;
-+ } else
-+ err = EINVAL;
-+ CRYPTO_DRIVER_UNLOCK();
-+ return err;
-+}
-+
-+/*
-+ * Unregister all algorithms associated with a crypto driver.
-+ * If there are pending sessions using it, leave enough information
-+ * around so that subsequent calls using those sessions will
-+ * correctly detect the driver has been unregistered and reroute
-+ * requests.
-+ */
-+int
-+crypto_unregister_all(u_int32_t driverid)
-+{
-+ struct cryptocap *cap;
-+ int err;
-+ unsigned long d_flags;
-+
-+ dprintk("%s()\n", __FUNCTION__);
-+ CRYPTO_DRIVER_LOCK();
-+ cap = crypto_checkdriver(driverid);
-+ if (cap != NULL) {
-+ driver_finis(cap);
-+ err = 0;
-+ } else
-+ err = EINVAL;
-+ CRYPTO_DRIVER_UNLOCK();
-+
-+ return err;
-+}
-+
-+/*
-+ * Clear blockage on a driver. The what parameter indicates whether
-+ * the driver is now ready for cryptop's and/or cryptokop's.
-+ */
-+int
-+crypto_unblock(u_int32_t driverid, int what)
-+{
-+ struct cryptocap *cap;
-+ int err;
-+ unsigned long q_flags;
-+
-+ CRYPTO_Q_LOCK();
-+ cap = crypto_checkdriver(driverid);
-+ if (cap != NULL) {
-+ if (what & CRYPTO_SYMQ) {
-+ cap->cc_qblocked = 0;
-+ cap->cc_unqblocked = 0;
-+ crypto_all_qblocked = 0;
-+ }
-+ if (what & CRYPTO_ASYMQ) {
-+ cap->cc_kqblocked = 0;
-+ cap->cc_unkqblocked = 0;
-+ crypto_all_kqblocked = 0;
-+ }
-+ wake_up_interruptible(&cryptoproc_wait);
-+ err = 0;
-+ } else
-+ err = EINVAL;
-+ CRYPTO_Q_UNLOCK(); //DAVIDM should this be a driver lock
-+
-+ return err;
-+}
-+
-+/*
-+ * Add a crypto request to a queue, to be processed by the kernel thread.
-+ */
-+int
-+crypto_dispatch(struct cryptop *crp)
-+{
-+ struct cryptocap *cap;
-+ int result = -1;
-+ unsigned long q_flags;
-+
-+ dprintk("%s()\n", __FUNCTION__);
-+
-+ cryptostats.cs_ops++;
-+
-+ CRYPTO_Q_LOCK();
-+ if (crypto_q_cnt >= crypto_q_max) {
-+ cryptostats.cs_drops++;
-+ CRYPTO_Q_UNLOCK();
-+ return ENOMEM;
-+ }
-+ crypto_q_cnt++;
-+
-+ /* make sure we are starting a fresh run on this crp. */
-+ crp->crp_flags &= ~CRYPTO_F_DONE;
-+ crp->crp_etype = 0;
-+
-+ /*
-+ * Caller marked the request to be processed immediately; dispatch
-+ * it directly to the driver unless the driver is currently blocked.
-+ */
-+ if ((crp->crp_flags & CRYPTO_F_BATCH) == 0) {
-+ int hid = CRYPTO_SESID2HID(crp->crp_sid);
-+ cap = crypto_checkdriver(hid);
-+ /* Driver cannot disappear when there is an active session. */
-+ KASSERT(cap != NULL, ("%s: Driver disappeared.", __func__));
-+ if (!cap->cc_qblocked) {
-+ crypto_all_qblocked = 0;
-+ crypto_drivers[hid].cc_unqblocked = 1;
-+ CRYPTO_Q_UNLOCK();
-+ result = crypto_invoke(cap, crp, 0);
-+ CRYPTO_Q_LOCK();
-+ if (result == ERESTART)
-+ if (crypto_drivers[hid].cc_unqblocked)
-+ crypto_drivers[hid].cc_qblocked = 1;
-+ crypto_drivers[hid].cc_unqblocked = 0;
-+ }
-+ }
-+ if (result == ERESTART) {
-+ /*
-+ * The driver ran out of resources, mark the
-+ * driver ``blocked'' for cryptop's and put
-+ * the request back in the queue. It would
-+ * best to put the request back where we got
-+ * it but that's hard so for now we put it
-+ * at the front. This should be ok; putting
-+ * it at the end does not work.
-+ */
-+ list_add(&crp->crp_next, &crp_q);
-+ cryptostats.cs_blocks++;
-+ result = 0;
-+ } else if (result == -1) {
-+ TAILQ_INSERT_TAIL(&crp_q, crp, crp_next);
-+ result = 0;
-+ }
-+ wake_up_interruptible(&cryptoproc_wait);
-+ CRYPTO_Q_UNLOCK();
-+ return result;
-+}
-+
-+/*
-+ * Add an asymetric crypto request to a queue,
-+ * to be processed by the kernel thread.
-+ */
-+int
-+crypto_kdispatch(struct cryptkop *krp)
-+{
-+ int error;
-+ unsigned long q_flags;
-+
-+ cryptostats.cs_kops++;
-+
-+ error = crypto_kinvoke(krp, krp->krp_crid);
-+ if (error == ERESTART) {
-+ CRYPTO_Q_LOCK();
-+ TAILQ_INSERT_TAIL(&crp_kq, krp, krp_next);
-+ wake_up_interruptible(&cryptoproc_wait);
-+ CRYPTO_Q_UNLOCK();
-+ error = 0;
-+ }
-+ return error;
-+}
-+
-+/*
-+ * Verify a driver is suitable for the specified operation.
-+ */
-+static __inline int
-+kdriver_suitable(const struct cryptocap *cap, const struct cryptkop *krp)
-+{
-+ return (cap->cc_kalg[krp->krp_op] & CRYPTO_ALG_FLAG_SUPPORTED) != 0;
-+}
-+
-+/*
-+ * Select a driver for an asym operation. The driver must
-+ * support the necessary algorithm. The caller can constrain
-+ * which device is selected with the flags parameter. The
-+ * algorithm we use here is pretty stupid; just use the first
-+ * driver that supports the algorithms we need. If there are
-+ * multiple suitable drivers we choose the driver with the
-+ * fewest active operations. We prefer hardware-backed
-+ * drivers to software ones when either may be used.
-+ */
-+static struct cryptocap *
-+crypto_select_kdriver(const struct cryptkop *krp, int flags)
-+{
-+ struct cryptocap *cap, *best, *blocked;
-+ int match, hid;
-+
-+ CRYPTO_DRIVER_ASSERT();
-+
-+ /*
-+ * Look first for hardware crypto devices if permitted.
-+ */
-+ if (flags & CRYPTOCAP_F_HARDWARE)
-+ match = CRYPTOCAP_F_HARDWARE;
-+ else
-+ match = CRYPTOCAP_F_SOFTWARE;
-+ best = NULL;
-+ blocked = NULL;
-+again:
-+ for (hid = 0; hid < crypto_drivers_num; hid++) {
-+ cap = &crypto_drivers[hid];
-+ /*
-+ * If it's not initialized, is in the process of
-+ * going away, or is not appropriate (hardware
-+ * or software based on match), then skip.
-+ */
-+ if (cap->cc_dev == NULL ||
-+ (cap->cc_flags & CRYPTOCAP_F_CLEANUP) ||
-+ (cap->cc_flags & match) == 0)
-+ continue;
-+
-+ /* verify all the algorithms are supported. */
-+ if (kdriver_suitable(cap, krp)) {
-+ if (best == NULL ||
-+ cap->cc_koperations < best->cc_koperations)
-+ best = cap;
-+ }
-+ }
-+ if (best != NULL)
-+ return best;
-+ if (match == CRYPTOCAP_F_HARDWARE && (flags & CRYPTOCAP_F_SOFTWARE)) {
-+ /* sort of an Algol 68-style for loop */
-+ match = CRYPTOCAP_F_SOFTWARE;
-+ goto again;
-+ }
-+ return best;
-+}
-+
-+/*
-+ * Dispatch an assymetric crypto request.
-+ */
-+static int
-+crypto_kinvoke(struct cryptkop *krp, int crid)
-+{
-+ struct cryptocap *cap = NULL;
-+ int error;
-+ unsigned long d_flags;
-+
-+ KASSERT(krp != NULL, ("%s: krp == NULL", __func__));
-+ KASSERT(krp->krp_callback != NULL,
-+ ("%s: krp->crp_callback == NULL", __func__));
-+
-+ CRYPTO_DRIVER_LOCK();
-+ if ((crid & (CRYPTOCAP_F_HARDWARE | CRYPTOCAP_F_SOFTWARE)) == 0) {
-+ cap = crypto_checkdriver(crid);
-+ if (cap != NULL) {
-+ /*
-+ * Driver present, it must support the necessary
-+ * algorithm and, if s/w drivers are excluded,
-+ * it must be registered as hardware-backed.
-+ */
-+ if (!kdriver_suitable(cap, krp) ||
-+ (!crypto_devallowsoft &&
-+ (cap->cc_flags & CRYPTOCAP_F_HARDWARE) == 0))
-+ cap = NULL;
-+ }
-+ } else {
-+ /*
-+ * No requested driver; select based on crid flags.
-+ */
-+ if (!crypto_devallowsoft) /* NB: disallow s/w drivers */
-+ crid &= ~CRYPTOCAP_F_SOFTWARE;
-+ cap = crypto_select_kdriver(krp, crid);
-+ }
-+ if (cap != NULL && !cap->cc_kqblocked) {
-+ krp->krp_hid = cap - crypto_drivers;
-+ cap->cc_koperations++;
-+ CRYPTO_DRIVER_UNLOCK();
-+ error = CRYPTODEV_KPROCESS(cap->cc_dev, krp, 0);
-+ CRYPTO_DRIVER_LOCK();
-+ if (error == ERESTART) {
-+ cap->cc_koperations--;
-+ CRYPTO_DRIVER_UNLOCK();
-+ return (error);
-+ }
-+ /* return the actual device used */
-+ krp->krp_crid = krp->krp_hid;
-+ } else {
-+ /*
-+ * NB: cap is !NULL if device is blocked; in
-+ * that case return ERESTART so the operation
-+ * is resubmitted if possible.
-+ */
-+ error = (cap == NULL) ? ENODEV : ERESTART;
-+ }
-+ CRYPTO_DRIVER_UNLOCK();
-+
-+ if (error) {
-+ krp->krp_status = error;
-+ crypto_kdone(krp);
-+ }
-+ return 0;
-+}
-+
-+
-+/*
-+ * Dispatch a crypto request to the appropriate crypto devices.
-+ */
-+static int
-+crypto_invoke(struct cryptocap *cap, struct cryptop *crp, int hint)
-+{
-+ KASSERT(crp != NULL, ("%s: crp == NULL", __func__));
-+ KASSERT(crp->crp_callback != NULL,
-+ ("%s: crp->crp_callback == NULL", __func__));
-+ KASSERT(crp->crp_desc != NULL, ("%s: crp->crp_desc == NULL", __func__));
-+
-+ dprintk("%s()\n", __FUNCTION__);
-+
-+#ifdef CRYPTO_TIMING
-+ if (crypto_timing)
-+ crypto_tstat(&cryptostats.cs_invoke, &crp->crp_tstamp);
-+#endif
-+ if (cap->cc_flags & CRYPTOCAP_F_CLEANUP) {
-+ struct cryptodesc *crd;
-+ u_int64_t nid;
-+
-+ /*
-+ * Driver has unregistered; migrate the session and return
-+ * an error to the caller so they'll resubmit the op.
-+ *
-+ * XXX: What if there are more already queued requests for this
-+ * session?
-+ */
-+ crypto_freesession(crp->crp_sid);
-+
-+ for (crd = crp->crp_desc; crd->crd_next; crd = crd->crd_next)
-+ crd->CRD_INI.cri_next = &(crd->crd_next->CRD_INI);
-+
-+ /* XXX propagate flags from initial session? */
-+ if (crypto_newsession(&nid, &(crp->crp_desc->CRD_INI),
-+ CRYPTOCAP_F_HARDWARE | CRYPTOCAP_F_SOFTWARE) == 0)
-+ crp->crp_sid = nid;
-+
-+ crp->crp_etype = EAGAIN;
-+ crypto_done(crp);
-+ return 0;
-+ } else {
-+ /*
-+ * Invoke the driver to process the request.
-+ */
-+ return CRYPTODEV_PROCESS(cap->cc_dev, crp, hint);
-+ }
-+}
-+
-+/*
-+ * Release a set of crypto descriptors.
-+ */
-+void
-+crypto_freereq(struct cryptop *crp)
-+{
-+ struct cryptodesc *crd;
-+
-+ if (crp == NULL)
-+ return;
-+
-+#ifdef DIAGNOSTIC
-+ {
-+ struct cryptop *crp2;
-+ unsigned long q_flags;
-+
-+ CRYPTO_Q_LOCK();
-+ TAILQ_FOREACH(crp2, &crp_q, crp_next) {
-+ KASSERT(crp2 != crp,
-+ ("Freeing cryptop from the crypto queue (%p).",
-+ crp));
-+ }
-+ CRYPTO_Q_UNLOCK();
-+ CRYPTO_RETQ_LOCK();
-+ TAILQ_FOREACH(crp2, &crp_ret_q, crp_next) {
-+ KASSERT(crp2 != crp,
-+ ("Freeing cryptop from the return queue (%p).",
-+ crp));
-+ }
-+ CRYPTO_RETQ_UNLOCK();
-+ }
-+#endif
-+
-+ while ((crd = crp->crp_desc) != NULL) {
-+ crp->crp_desc = crd->crd_next;
-+ kmem_cache_free(cryptodesc_zone, crd);
-+ }
-+ kmem_cache_free(cryptop_zone, crp);
-+}
-+
-+/*
-+ * Acquire a set of crypto descriptors.
-+ */
-+struct cryptop *
-+crypto_getreq(int num)
-+{
-+ struct cryptodesc *crd;
-+ struct cryptop *crp;
-+
-+ crp = kmem_cache_alloc(cryptop_zone, SLAB_ATOMIC);
-+ if (crp != NULL) {
-+ memset(crp, 0, sizeof(*crp));
-+ INIT_LIST_HEAD(&crp->crp_next);
-+ init_waitqueue_head(&crp->crp_waitq);
-+ while (num--) {
-+ crd = kmem_cache_alloc(cryptodesc_zone, SLAB_ATOMIC);
-+ if (crd == NULL) {
-+ crypto_freereq(crp);
-+ return NULL;
-+ }
-+ memset(crd, 0, sizeof(*crd));
-+ crd->crd_next = crp->crp_desc;
-+ crp->crp_desc = crd;
-+ }
-+ }
-+ return crp;
-+}
-+
-+/*
-+ * Invoke the callback on behalf of the driver.
-+ */
-+void
-+crypto_done(struct cryptop *crp)
-+{
-+ unsigned long q_flags;
-+
-+ dprintk("%s()\n", __FUNCTION__);
-+ if ((crp->crp_flags & CRYPTO_F_DONE) == 0) {
-+ crp->crp_flags |= CRYPTO_F_DONE;
-+ CRYPTO_Q_LOCK();
-+ crypto_q_cnt--;
-+ CRYPTO_Q_UNLOCK();
-+ } else
-+ printk("crypto: crypto_done op already done, flags 0x%x",
-+ crp->crp_flags);
-+ if (crp->crp_etype != 0)
-+ cryptostats.cs_errs++;
-+ /*
-+ * CBIMM means unconditionally do the callback immediately;
-+ * CBIFSYNC means do the callback immediately only if the
-+ * operation was done synchronously. Both are used to avoid
-+ * doing extraneous context switches; the latter is mostly
-+ * used with the software crypto driver.
-+ */
-+ if ((crp->crp_flags & CRYPTO_F_CBIMM) ||
-+ ((crp->crp_flags & CRYPTO_F_CBIFSYNC) &&
-+ (CRYPTO_SESID2CAPS(crp->crp_sid) & CRYPTOCAP_F_SYNC))) {
-+ /*
-+ * Do the callback directly. This is ok when the
-+ * callback routine does very little (e.g. the
-+ * /dev/crypto callback method just does a wakeup).
-+ */
-+ crp->crp_callback(crp);
-+ } else {
-+ unsigned long r_flags;
-+ /*
-+ * Normal case; queue the callback for the thread.
-+ */
-+ CRYPTO_RETQ_LOCK();
-+ wake_up_interruptible(&cryptoretproc_wait);/* shared wait channel */
-+ TAILQ_INSERT_TAIL(&crp_ret_q, crp, crp_next);
-+ CRYPTO_RETQ_UNLOCK();
-+ }
-+}
-+
-+/*
-+ * Invoke the callback on behalf of the driver.
-+ */
-+void
-+crypto_kdone(struct cryptkop *krp)
-+{
-+ struct cryptocap *cap;
-+ unsigned long d_flags;
-+
-+ if ((krp->krp_flags & CRYPTO_KF_DONE) != 0)
-+ printk("crypto: crypto_kdone op already done, flags 0x%x",
-+ krp->krp_flags);
-+ krp->krp_flags |= CRYPTO_KF_DONE;
-+ if (krp->krp_status != 0)
-+ cryptostats.cs_kerrs++;
-+
-+ CRYPTO_DRIVER_LOCK();
-+ /* XXX: What if driver is loaded in the meantime? */
-+ if (krp->krp_hid < crypto_drivers_num) {
-+ cap = &crypto_drivers[krp->krp_hid];
-+ cap->cc_koperations--;
-+ KASSERT(cap->cc_koperations >= 0, ("cc_koperations < 0"));
-+ if (cap->cc_flags & CRYPTOCAP_F_CLEANUP)
-+ crypto_remove(cap);
-+ }
-+ CRYPTO_DRIVER_UNLOCK();
-+
-+ /*
-+ * CBIMM means unconditionally do the callback immediately;
-+ * This is used to avoid doing extraneous context switches
-+ */
-+ if ((krp->krp_flags & CRYPTO_KF_CBIMM)) {
-+ /*
-+ * Do the callback directly. This is ok when the
-+ * callback routine does very little (e.g. the
-+ * /dev/crypto callback method just does a wakeup).
-+ */
-+ krp->krp_callback(krp);
-+ } else {
-+ unsigned long r_flags;
-+ /*
-+ * Normal case; queue the callback for the thread.
-+ */
-+ CRYPTO_RETQ_LOCK();
-+ wake_up_interruptible(&cryptoretproc_wait);/* shared wait channel */
-+ TAILQ_INSERT_TAIL(&crp_ret_kq, krp, krp_next);
-+ CRYPTO_RETQ_UNLOCK();
-+ }
-+}
-+
-+int
-+crypto_getfeat(int *featp)
-+{
-+ int hid, kalg, feat = 0;
-+ unsigned long d_flags;
-+
-+ CRYPTO_DRIVER_LOCK();
-+ for (hid = 0; hid < crypto_drivers_num; hid++) {
-+ const struct cryptocap *cap = &crypto_drivers[hid];
-+
-+ if ((cap->cc_flags & CRYPTOCAP_F_SOFTWARE) &&
-+ !crypto_devallowsoft) {
-+ continue;
-+ }
-+ for (kalg = 0; kalg < CRK_ALGORITHM_MAX; kalg++)
-+ if (cap->cc_kalg[kalg] & CRYPTO_ALG_FLAG_SUPPORTED)
-+ feat |= 1 << kalg;
-+ }
-+ CRYPTO_DRIVER_UNLOCK();
-+ *featp = feat;
-+ return (0);
-+}
-+
-+/*
-+ * Crypto thread, dispatches crypto requests.
-+ */
-+static int
-+crypto_proc(void *arg)
-+{
-+ struct cryptop *crp, *submit;
-+ struct cryptkop *krp, *krpp;
-+ struct cryptocap *cap;
-+ u_int32_t hid;
-+ int result, hint;
-+ unsigned long q_flags;
-+ int loopcount = 0;
-+
-+ set_current_state(TASK_INTERRUPTIBLE);
-+
-+ CRYPTO_Q_LOCK();
-+ for (;;) {
-+ /*
-+ * we need to make sure we don't get into a busy loop with nothing
-+ * to do, the two crypto_all_*blocked vars help us find out when
-+ * we are all full and can do nothing on any driver or Q. If so we
-+ * wait for an unblock.
-+ */
-+ crypto_all_qblocked = !list_empty(&crp_q);
-+
-+ /*
-+ * Find the first element in the queue that can be
-+ * processed and look-ahead to see if multiple ops
-+ * are ready for the same driver.
-+ */
-+ submit = NULL;
-+ hint = 0;
-+ list_for_each_entry(crp, &crp_q, crp_next) {
-+ hid = CRYPTO_SESID2HID(crp->crp_sid);
-+ cap = crypto_checkdriver(hid);
-+ /*
-+ * Driver cannot disappear when there is an active
-+ * session.
-+ */
-+ KASSERT(cap != NULL, ("%s:%u Driver disappeared.",
-+ __func__, __LINE__));
-+ if (cap == NULL || cap->cc_dev == NULL) {
-+ /* Op needs to be migrated, process it. */
-+ if (submit == NULL)
-+ submit = crp;
-+ break;
-+ }
-+ if (!cap->cc_qblocked) {
-+ if (submit != NULL) {
-+ /*
-+ * We stop on finding another op,
-+ * regardless whether its for the same
-+ * driver or not. We could keep
-+ * searching the queue but it might be
-+ * better to just use a per-driver
-+ * queue instead.
-+ */
-+ if (CRYPTO_SESID2HID(submit->crp_sid) == hid)
-+ hint = CRYPTO_HINT_MORE;
-+ break;
-+ } else {
-+ submit = crp;
-+ if ((submit->crp_flags & CRYPTO_F_BATCH) == 0)
-+ break;
-+ /* keep scanning for more are q'd */
-+ }
-+ }
-+ }
-+ if (submit != NULL) {
-+ hid = CRYPTO_SESID2HID(submit->crp_sid);
-+ crypto_all_qblocked = 0;
-+ list_del(&submit->crp_next);
-+ crypto_drivers[hid].cc_unqblocked = 1;
-+ cap = crypto_checkdriver(hid);
-+ CRYPTO_Q_UNLOCK();
-+ KASSERT(cap != NULL, ("%s:%u Driver disappeared.",
-+ __func__, __LINE__));
-+ result = crypto_invoke(cap, submit, hint);
-+ CRYPTO_Q_LOCK();
-+ if (result == ERESTART) {
-+ /*
-+ * The driver ran out of resources, mark the
-+ * driver ``blocked'' for cryptop's and put
-+ * the request back in the queue. It would
-+ * best to put the request back where we got
-+ * it but that's hard so for now we put it
-+ * at the front. This should be ok; putting
-+ * it at the end does not work.
-+ */
-+ /* XXX validate sid again? */
-+ list_add(&submit->crp_next, &crp_q);
-+ cryptostats.cs_blocks++;
-+ if (crypto_drivers[hid].cc_unqblocked)
-+ crypto_drivers[hid].cc_qblocked=0;
-+ crypto_drivers[hid].cc_unqblocked=0;
-+ }
-+ crypto_drivers[hid].cc_unqblocked = 0;
-+ }
-+
-+ crypto_all_kqblocked = !list_empty(&crp_kq);
-+
-+ /* As above, but for key ops */
-+ krp = NULL;
-+ list_for_each_entry(krpp, &crp_kq, krp_next) {
-+ cap = crypto_checkdriver(krpp->krp_hid);
-+ if (cap == NULL || cap->cc_dev == NULL) {
-+ /*
-+ * Operation needs to be migrated, invalidate
-+ * the assigned device so it will reselect a
-+ * new one below. Propagate the original
-+ * crid selection flags if supplied.
-+ */
-+ krp->krp_hid = krp->krp_crid &
-+ (CRYPTOCAP_F_SOFTWARE|CRYPTOCAP_F_HARDWARE);
-+ if (krp->krp_hid == 0)
-+ krp->krp_hid =
-+ CRYPTOCAP_F_SOFTWARE|CRYPTOCAP_F_HARDWARE;
-+ break;
-+ }
-+ if (!cap->cc_kqblocked) {
-+ krp = krpp;
-+ break;
-+ }
-+ }
-+ if (krp != NULL) {
-+ crypto_all_kqblocked = 0;
-+ list_del(&krp->krp_next);
-+ crypto_drivers[krp->krp_hid].cc_kqblocked = 1;
-+ CRYPTO_Q_UNLOCK();
-+ result = crypto_kinvoke(krp, krp->krp_hid);
-+ CRYPTO_Q_LOCK();
-+ if (result == ERESTART) {
-+ /*
-+ * The driver ran out of resources, mark the
-+ * driver ``blocked'' for cryptkop's and put
-+ * the request back in the queue. It would
-+ * best to put the request back where we got
-+ * it but that's hard so for now we put it
-+ * at the front. This should be ok; putting
-+ * it at the end does not work.
-+ */
-+ /* XXX validate sid again? */
-+ list_add(&krp->krp_next, &crp_kq);
-+ cryptostats.cs_kblocks++;
-+ } else
-+ crypto_drivers[krp->krp_hid].cc_kqblocked = 0;
-+ }
-+
-+ if (submit == NULL && krp == NULL) {
-+ /*
-+ * Nothing more to be processed. Sleep until we're
-+ * woken because there are more ops to process.
-+ * This happens either by submission or by a driver
-+ * becoming unblocked and notifying us through
-+ * crypto_unblock. Note that when we wakeup we
-+ * start processing each queue again from the
-+ * front. It's not clear that it's important to
-+ * preserve this ordering since ops may finish
-+ * out of order if dispatched to different devices
-+ * and some become blocked while others do not.
-+ */
-+ dprintk("%s - sleeping (qe=%d qb=%d kqe=%d kqb=%d)\n",
-+ __FUNCTION__,
-+ list_empty(&crp_q), crypto_all_qblocked,
-+ list_empty(&crp_kq), crypto_all_kqblocked);
-+ loopcount = 0;
-+ CRYPTO_Q_UNLOCK();
-+ wait_event_interruptible(cryptoproc_wait,
-+ !(list_empty(&crp_q) || crypto_all_qblocked) ||
-+ !(list_empty(&crp_kq) || crypto_all_kqblocked) ||
-+ kthread_should_stop());
-+ if (signal_pending (current)) {
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
-+ spin_lock_irq(¤t->sigmask_lock);
-+#endif
-+ flush_signals(current);
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
-+ spin_unlock_irq(¤t->sigmask_lock);
-+#endif
-+ }
-+ CRYPTO_Q_LOCK();
-+ dprintk("%s - awake\n", __FUNCTION__);
-+ if (kthread_should_stop())
-+ break;
-+ cryptostats.cs_intrs++;
-+ } else if (loopcount > crypto_max_loopcount) {
-+ /*
-+ * Give other processes a chance to run if we've
-+ * been using the CPU exclusively for a while.
-+ */
-+ loopcount = 0;
-+ CRYPTO_Q_UNLOCK();
-+ schedule();
-+ CRYPTO_Q_LOCK();
-+ }
-+ loopcount++;
-+ }
-+ CRYPTO_Q_UNLOCK();
-+ return 0;
-+}
-+
-+/*
-+ * Crypto returns thread, does callbacks for processed crypto requests.
-+ * Callbacks are done here, rather than in the crypto drivers, because
-+ * callbacks typically are expensive and would slow interrupt handling.
-+ */
-+static int
-+crypto_ret_proc(void *arg)
-+{
-+ struct cryptop *crpt;
-+ struct cryptkop *krpt;
-+ unsigned long r_flags;
-+
-+ set_current_state(TASK_INTERRUPTIBLE);
-+
-+ CRYPTO_RETQ_LOCK();
-+ for (;;) {
-+ /* Harvest return q's for completed ops */
-+ crpt = NULL;
-+ if (!list_empty(&crp_ret_q))
-+ crpt = list_entry(crp_ret_q.next, typeof(*crpt), crp_next);
-+ if (crpt != NULL)
-+ list_del(&crpt->crp_next);
-+
-+ krpt = NULL;
-+ if (!list_empty(&crp_ret_kq))
-+ krpt = list_entry(crp_ret_kq.next, typeof(*krpt), krp_next);
-+ if (krpt != NULL)
-+ list_del(&krpt->krp_next);
-+
-+ if (crpt != NULL || krpt != NULL) {
-+ CRYPTO_RETQ_UNLOCK();
-+ /*
-+ * Run callbacks unlocked.
-+ */
-+ if (crpt != NULL)
-+ crpt->crp_callback(crpt);
-+ if (krpt != NULL)
-+ krpt->krp_callback(krpt);
-+ CRYPTO_RETQ_LOCK();
-+ } else {
-+ /*
-+ * Nothing more to be processed. Sleep until we're
-+ * woken because there are more returns to process.
-+ */
-+ dprintk("%s - sleeping\n", __FUNCTION__);
-+ CRYPTO_RETQ_UNLOCK();
-+ wait_event_interruptible(cryptoretproc_wait,
-+ !list_empty(&crp_ret_q) ||
-+ !list_empty(&crp_ret_kq) ||
-+ kthread_should_stop());
-+ if (signal_pending (current)) {
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
-+ spin_lock_irq(¤t->sigmask_lock);
-+#endif
-+ flush_signals(current);
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
-+ spin_unlock_irq(¤t->sigmask_lock);
-+#endif
-+ }
-+ CRYPTO_RETQ_LOCK();
-+ dprintk("%s - awake\n", __FUNCTION__);
-+ if (kthread_should_stop()) {
-+ dprintk("%s - EXITING!\n", __FUNCTION__);
-+ break;
-+ }
-+ cryptostats.cs_rets++;
-+ }
-+ }
-+ CRYPTO_RETQ_UNLOCK();
-+ return 0;
-+}
-+
-+
-+#if 0 /* should put this into /proc or something */
-+static void
-+db_show_drivers(void)
-+{
-+ int hid;
-+
-+ db_printf("%12s %4s %4s %8s %2s %2s\n"
-+ , "Device"
-+ , "Ses"
-+ , "Kops"
-+ , "Flags"
-+ , "QB"
-+ , "KB"
-+ );
-+ for (hid = 0; hid < crypto_drivers_num; hid++) {
-+ const struct cryptocap *cap = &crypto_drivers[hid];
-+ if (cap->cc_dev == NULL)
-+ continue;
-+ db_printf("%-12s %4u %4u %08x %2u %2u\n"
-+ , device_get_nameunit(cap->cc_dev)
-+ , cap->cc_sessions
-+ , cap->cc_koperations
-+ , cap->cc_flags
-+ , cap->cc_qblocked
-+ , cap->cc_kqblocked
-+ );
-+ }
-+}
-+
-+DB_SHOW_COMMAND(crypto, db_show_crypto)
-+{
-+ struct cryptop *crp;
-+
-+ db_show_drivers();
-+ db_printf("\n");
-+
-+ db_printf("%4s %8s %4s %4s %4s %4s %8s %8s\n",
-+ "HID", "Caps", "Ilen", "Olen", "Etype", "Flags",
-+ "Desc", "Callback");
-+ TAILQ_FOREACH(crp, &crp_q, crp_next) {
-+ db_printf("%4u %08x %4u %4u %4u %04x %8p %8p\n"
-+ , (int) CRYPTO_SESID2HID(crp->crp_sid)
-+ , (int) CRYPTO_SESID2CAPS(crp->crp_sid)
-+ , crp->crp_ilen, crp->crp_olen
-+ , crp->crp_etype
-+ , crp->crp_flags
-+ , crp->crp_desc
-+ , crp->crp_callback
-+ );
-+ }
-+ if (!TAILQ_EMPTY(&crp_ret_q)) {
-+ db_printf("\n%4s %4s %4s %8s\n",
-+ "HID", "Etype", "Flags", "Callback");
-+ TAILQ_FOREACH(crp, &crp_ret_q, crp_next) {
-+ db_printf("%4u %4u %04x %8p\n"
-+ , (int) CRYPTO_SESID2HID(crp->crp_sid)
-+ , crp->crp_etype
-+ , crp->crp_flags
-+ , crp->crp_callback
-+ );
-+ }
-+ }
-+}
-+
-+DB_SHOW_COMMAND(kcrypto, db_show_kcrypto)
-+{
-+ struct cryptkop *krp;
-+
-+ db_show_drivers();
-+ db_printf("\n");
-+
-+ db_printf("%4s %5s %4s %4s %8s %4s %8s\n",
-+ "Op", "Status", "#IP", "#OP", "CRID", "HID", "Callback");
-+ TAILQ_FOREACH(krp, &crp_kq, krp_next) {
-+ db_printf("%4u %5u %4u %4u %08x %4u %8p\n"
-+ , krp->krp_op
-+ , krp->krp_status
-+ , krp->krp_iparams, krp->krp_oparams
-+ , krp->krp_crid, krp->krp_hid
-+ , krp->krp_callback
-+ );
-+ }
-+ if (!TAILQ_EMPTY(&crp_ret_q)) {
-+ db_printf("%4s %5s %8s %4s %8s\n",
-+ "Op", "Status", "CRID", "HID", "Callback");
-+ TAILQ_FOREACH(krp, &crp_ret_kq, krp_next) {
-+ db_printf("%4u %5u %08x %4u %8p\n"
-+ , krp->krp_op
-+ , krp->krp_status
-+ , krp->krp_crid, krp->krp_hid
-+ , krp->krp_callback
-+ );
-+ }
-+ }
-+}
-+#endif
-+
-+
-+static int
-+crypto_init(void)
-+{
-+ int error;
-+ unsigned long cpu;
-+
-+ dprintk("%s(%p)\n", __FUNCTION__, (void *) crypto_init);
-+
-+ if (crypto_initted)
-+ return 0;
-+ crypto_initted = 1;
-+
-+ spin_lock_init(&crypto_drivers_lock);
-+ spin_lock_init(&crypto_q_lock);
-+ spin_lock_init(&crypto_ret_q_lock);
-+
-+ cryptop_zone = kmem_cache_create("cryptop", sizeof(struct cryptop),
-+ 0, SLAB_HWCACHE_ALIGN, NULL
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23)
-+ , NULL
-+#endif
-+ );
-+
-+ cryptodesc_zone = kmem_cache_create("cryptodesc", sizeof(struct cryptodesc),
-+ 0, SLAB_HWCACHE_ALIGN, NULL
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23)
-+ , NULL
-+#endif
-+ );
-+
-+ if (cryptodesc_zone == NULL || cryptop_zone == NULL) {
-+ printk("crypto: crypto_init cannot setup crypto zones\n");
-+ error = ENOMEM;
-+ goto bad;
-+ }
-+
-+ crypto_drivers_num = CRYPTO_DRIVERS_INITIAL;
-+ crypto_drivers = kmalloc(crypto_drivers_num * sizeof(struct cryptocap),
-+ GFP_KERNEL);
-+ if (crypto_drivers == NULL) {
-+ printk("crypto: crypto_init cannot setup crypto drivers\n");
-+ error = ENOMEM;
-+ goto bad;
-+ }
-+
-+ memset(crypto_drivers, 0, crypto_drivers_num * sizeof(struct cryptocap));
-+
-+ ocf_for_each_cpu(cpu) {
-+ cryptoproc[cpu] = kthread_create(crypto_proc, (void *) cpu,
-+ "ocf_%d", (int) cpu);
-+ if (IS_ERR(cryptoproc[cpu])) {
-+ error = PTR_ERR(cryptoproc[cpu]);
-+ printk("crypto: crypto_init cannot start crypto thread; error %d",
-+ error);
-+ goto bad;
-+ }
-+ kthread_bind(cryptoproc[cpu], cpu);
-+ wake_up_process(cryptoproc[cpu]);
-+
-+ cryptoretproc[cpu] = kthread_create(crypto_ret_proc, (void *) cpu,
-+ "ocf_ret_%d", (int) cpu);
-+ if (IS_ERR(cryptoretproc[cpu])) {
-+ error = PTR_ERR(cryptoretproc[cpu]);
-+ printk("crypto: crypto_init cannot start cryptoret thread; error %d",
-+ error);
-+ goto bad;
-+ }
-+ kthread_bind(cryptoretproc[cpu], cpu);
-+ wake_up_process(cryptoretproc[cpu]);
-+ }
-+
-+ return 0;
-+bad:
-+ crypto_exit();
-+ return error;
-+}
-+
-+
-+static void
-+crypto_exit(void)
-+{
-+ int cpu;
-+
-+ dprintk("%s()\n", __FUNCTION__);
-+
-+ /*
-+ * Terminate any crypto threads.
-+ */
-+ ocf_for_each_cpu(cpu) {
-+ kthread_stop(cryptoproc[cpu]);
-+ kthread_stop(cryptoretproc[cpu]);
-+ }
-+
-+ /*
-+ * Reclaim dynamically allocated resources.
-+ */
-+ if (crypto_drivers != NULL)
-+ kfree(crypto_drivers);
-+
-+ if (cryptodesc_zone != NULL)
-+ kmem_cache_destroy(cryptodesc_zone);
-+ if (cryptop_zone != NULL)
-+ kmem_cache_destroy(cryptop_zone);
-+}
-+
-+
-+EXPORT_SYMBOL(crypto_newsession);
-+EXPORT_SYMBOL(crypto_freesession);
-+EXPORT_SYMBOL(crypto_get_driverid);
-+EXPORT_SYMBOL(crypto_kregister);
-+EXPORT_SYMBOL(crypto_register);
-+EXPORT_SYMBOL(crypto_unregister);
-+EXPORT_SYMBOL(crypto_unregister_all);
-+EXPORT_SYMBOL(crypto_unblock);
-+EXPORT_SYMBOL(crypto_dispatch);
-+EXPORT_SYMBOL(crypto_kdispatch);
-+EXPORT_SYMBOL(crypto_freereq);
-+EXPORT_SYMBOL(crypto_getreq);
-+EXPORT_SYMBOL(crypto_done);
-+EXPORT_SYMBOL(crypto_kdone);
-+EXPORT_SYMBOL(crypto_getfeat);
-+EXPORT_SYMBOL(crypto_userasymcrypto);
-+EXPORT_SYMBOL(crypto_getcaps);
-+EXPORT_SYMBOL(crypto_find_driver);
-+EXPORT_SYMBOL(crypto_find_device_byhid);
-+
-+module_init(crypto_init);
-+module_exit(crypto_exit);
-+
-+MODULE_LICENSE("BSD");
-+MODULE_AUTHOR("David McCullough <david_mccullough at mcafee.com>");
-+MODULE_DESCRIPTION("OCF (OpenBSD Cryptographic Framework)");
-diff --git a/crypto/ocf/cryptodev.c b/crypto/ocf/cryptodev.c
-new file mode 100644
-index 0000000..2ee3618
---- /dev/null
-+++ b/crypto/ocf/cryptodev.c
-@@ -0,0 +1,1069 @@
-+/* $OpenBSD: cryptodev.c,v 1.52 2002/06/19 07:22:46 deraadt Exp $ */
-+
-+/*-
-+ * Linux port done by David McCullough <david_mccullough at mcafee.com>
-+ * Copyright (C) 2006-2010 David McCullough
-+ * Copyright (C) 2004-2005 Intel Corporation.
-+ * The license and original author are listed below.
-+ *
-+ * Copyright (c) 2001 Theo de Raadt
-+ * Copyright (c) 2002-2006 Sam Leffler, Errno Consulting
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions
-+ * are met:
-+ *
-+ * 1. Redistributions of source code must retain the above copyright
-+ * notice, this list of conditions and the following disclaimer.
-+ * 2. Redistributions in binary form must reproduce the above copyright
-+ * notice, this list of conditions and the following disclaimer in the
-+ * documentation and/or other materials provided with the distribution.
-+ * 3. The name of the author may not be used to endorse or promote products
-+ * derived from this software without specific prior written permission.
-+ *
-+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
-+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * Effort sponsored in part by the Defense Advanced Research Projects
-+ * Agency (DARPA) and Air Force Research Laboratory, Air Force
-+ * Materiel Command, USAF, under agreement number F30602-01-2-0537.
-+ *
-+__FBSDID("$FreeBSD: src/sys/opencrypto/cryptodev.c,v 1.34 2007/05/09 19:37:02 gnn Exp $");
-+ */
-+
-+#include <linux/version.h>
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,38) && !defined(AUTOCONF_INCLUDED)
-+#include <linux/config.h>
-+#endif
-+#include <linux/types.h>
-+#include <linux/time.h>
-+#include <linux/delay.h>
-+#include <linux/list.h>
-+#include <linux/init.h>
-+#include <linux/sched.h>
-+#include <linux/unistd.h>
-+#include <linux/module.h>
-+#include <linux/wait.h>
-+#include <linux/slab.h>
-+#include <linux/fs.h>
-+#include <linux/dcache.h>
-+#include <linux/file.h>
-+#include <linux/mount.h>
-+#include <linux/miscdevice.h>
-+#include <asm/uaccess.h>
-+
-+#include <cryptodev.h>
-+#include <uio.h>
-+
-+extern asmlinkage long sys_dup(unsigned int fildes);
-+
-+#define debug cryptodev_debug
-+int cryptodev_debug = 0;
-+module_param(cryptodev_debug, int, 0644);
-+MODULE_PARM_DESC(cryptodev_debug, "Enable cryptodev debug");
-+
-+struct csession_info {
-+ u_int16_t blocksize;
-+ u_int16_t minkey, maxkey;
-+
-+ u_int16_t keysize;
-+ /* u_int16_t hashsize; */
-+ u_int16_t authsize;
-+ u_int16_t authkey;
-+ /* u_int16_t ctxsize; */
-+};
-+
-+struct csession {
-+ struct list_head list;
-+ u_int64_t sid;
-+ u_int32_t ses;
-+
-+ wait_queue_head_t waitq;
-+
-+ u_int32_t cipher;
-+
-+ u_int32_t mac;
-+
-+ caddr_t key;
-+ int keylen;
-+ u_char tmp_iv[EALG_MAX_BLOCK_LEN];
-+
-+ caddr_t mackey;
-+ int mackeylen;
-+
-+ struct csession_info info;
-+
-+ struct iovec iovec;
-+ struct uio uio;
-+ int error;
-+};
-+
-+struct fcrypt {
-+ struct list_head csessions;
-+ int sesn;
-+};
-+
-+static struct csession *csefind(struct fcrypt *, u_int);
-+static int csedelete(struct fcrypt *, struct csession *);
-+static struct csession *cseadd(struct fcrypt *, struct csession *);
-+static struct csession *csecreate(struct fcrypt *, u_int64_t,
-+ struct cryptoini *crie, struct cryptoini *cria, struct csession_info *);
-+static int csefree(struct csession *);
-+
-+static int cryptodev_op(struct csession *, struct crypt_op *);
-+static int cryptodev_key(struct crypt_kop *);
-+static int cryptodev_find(struct crypt_find_op *);
-+
-+static int cryptodev_cb(void *);
-+static int cryptodev_open(struct inode *inode, struct file *filp);
-+
-+/*
-+ * Check a crypto identifier to see if it requested
-+ * a valid crid and it's capabilities match.
-+ */
-+static int
-+checkcrid(int crid)
-+{
-+ int hid = crid & ~(CRYPTOCAP_F_SOFTWARE | CRYPTOCAP_F_HARDWARE);
-+ int typ = crid & (CRYPTOCAP_F_SOFTWARE | CRYPTOCAP_F_HARDWARE);
-+ int caps = 0;
-+
-+ /* if the user hasn't selected a driver, then just call newsession */
-+ if (hid == 0 && typ != 0)
-+ return 0;
-+
-+ caps = crypto_getcaps(hid);
-+
-+ /* didn't find anything with capabilities */
-+ if (caps == 0) {
-+ dprintk("%s: hid=%x typ=%x not matched\n", __FUNCTION__, hid, typ);
-+ return EINVAL;
-+ }
-+
-+ /* the user didn't specify SW or HW, so the driver is ok */
-+ if (typ == 0)
-+ return 0;
-+
-+ /* if the type specified didn't match */
-+ if (typ != (caps & (CRYPTOCAP_F_SOFTWARE | CRYPTOCAP_F_HARDWARE))) {
-+ dprintk("%s: hid=%x typ=%x caps=%x not matched\n", __FUNCTION__,
-+ hid, typ, caps);
-+ return EINVAL;
-+ }
-+
-+ return 0;
-+}
-+
-+static int
-+cryptodev_op(struct csession *cse, struct crypt_op *cop)
-+{
-+ struct cryptop *crp = NULL;
-+ struct cryptodesc *crde = NULL, *crda = NULL;
-+ int error = 0;
-+
-+ dprintk("%s()\n", __FUNCTION__);
-+ if (cop->len > CRYPTO_MAX_DATA_LEN) {
-+ dprintk("%s: %d > %d\n", __FUNCTION__, cop->len, CRYPTO_MAX_DATA_LEN);
-+ return (E2BIG);
-+ }
-+
-+ if (cse->info.blocksize && (cop->len % cse->info.blocksize) != 0) {
-+ dprintk("%s: blocksize=%d len=%d\n", __FUNCTION__, cse->info.blocksize,
-+ cop->len);
-+ return (EINVAL);
-+ }
-+
-+ cse->uio.uio_iov = &cse->iovec;
-+ cse->uio.uio_iovcnt = 1;
-+ cse->uio.uio_offset = 0;
-+#if 0
-+ cse->uio.uio_resid = cop->len;
-+ cse->uio.uio_segflg = UIO_SYSSPACE;
-+ cse->uio.uio_rw = UIO_WRITE;
-+ cse->uio.uio_td = td;
-+#endif
-+ cse->uio.uio_iov[0].iov_len = cop->len;
-+ if (cse->info.authsize)
-+ cse->uio.uio_iov[0].iov_len += cse->info.authsize;
-+ cse->uio.uio_iov[0].iov_base = kmalloc(cse->uio.uio_iov[0].iov_len,
-+ GFP_KERNEL);
-+
-+ if (cse->uio.uio_iov[0].iov_base == NULL) {
-+ dprintk("%s: iov_base kmalloc(%d) failed\n", __FUNCTION__,
-+ (int)cse->uio.uio_iov[0].iov_len);
-+ return (ENOMEM);
-+ }
-+
-+ crp = crypto_getreq((cse->info.blocksize != 0) + (cse->info.authsize != 0));
-+ if (crp == NULL) {
-+ dprintk("%s: ENOMEM\n", __FUNCTION__);
-+ error = ENOMEM;
-+ goto bail;
-+ }
-+
-+ if (cse->info.authsize && cse->info.blocksize) {
-+ if (cop->op == COP_ENCRYPT) {
-+ crde = crp->crp_desc;
-+ crda = crde->crd_next;
-+ } else {
-+ crda = crp->crp_desc;
-+ crde = crda->crd_next;
-+ }
-+ } else if (cse->info.authsize) {
-+ crda = crp->crp_desc;
-+ } else if (cse->info.blocksize) {
-+ crde = crp->crp_desc;
-+ } else {
-+ dprintk("%s: bad request\n", __FUNCTION__);
-+ error = EINVAL;
-+ goto bail;
-+ }
-+
-+ if ((error = copy_from_user(cse->uio.uio_iov[0].iov_base, cop->src,
-+ cop->len))) {
-+ dprintk("%s: bad copy\n", __FUNCTION__);
-+ goto bail;
-+ }
-+
-+ if (crda) {
-+ crda->crd_skip = 0;
-+ crda->crd_len = cop->len;
-+ crda->crd_inject = cop->len;
-+
-+ crda->crd_alg = cse->mac;
-+ crda->crd_key = cse->mackey;
-+ crda->crd_klen = cse->mackeylen * 8;
-+ }
-+
-+ if (crde) {
-+ if (cop->op == COP_ENCRYPT)
-+ crde->crd_flags |= CRD_F_ENCRYPT;
-+ else
-+ crde->crd_flags &= ~CRD_F_ENCRYPT;
-+ crde->crd_len = cop->len;
-+ crde->crd_inject = 0;
-+
-+ crde->crd_alg = cse->cipher;
-+ crde->crd_key = cse->key;
-+ crde->crd_klen = cse->keylen * 8;
-+ }
-+
-+ crp->crp_ilen = cse->uio.uio_iov[0].iov_len;
-+ crp->crp_flags = CRYPTO_F_IOV | CRYPTO_F_CBIMM
-+ | (cop->flags & COP_F_BATCH);
-+ crp->crp_buf = (caddr_t)&cse->uio;
-+ crp->crp_callback = (int (*) (struct cryptop *)) cryptodev_cb;
-+ crp->crp_sid = cse->sid;
-+ crp->crp_opaque = (void *)cse;
-+
-+ if (cop->iv) {
-+ if (crde == NULL) {
-+ error = EINVAL;
-+ dprintk("%s no crde\n", __FUNCTION__);
-+ goto bail;
-+ }
-+ if (cse->cipher == CRYPTO_ARC4) { /* XXX use flag? */
-+ error = EINVAL;
-+ dprintk("%s arc4 with IV\n", __FUNCTION__);
-+ goto bail;
-+ }
-+ if ((error = copy_from_user(cse->tmp_iv, cop->iv,
-+ cse->info.blocksize))) {
-+ dprintk("%s bad iv copy\n", __FUNCTION__);
-+ goto bail;
-+ }
-+ memcpy(crde->crd_iv, cse->tmp_iv, cse->info.blocksize);
-+ crde->crd_flags |= CRD_F_IV_EXPLICIT | CRD_F_IV_PRESENT;
-+ crde->crd_skip = 0;
-+ } else if (cse->cipher == CRYPTO_ARC4) { /* XXX use flag? */
-+ crde->crd_skip = 0;
-+ } else if (crde) {
-+ crde->crd_flags |= CRD_F_IV_PRESENT;
-+ crde->crd_skip = cse->info.blocksize;
-+ crde->crd_len -= cse->info.blocksize;
-+ }
-+
-+ if (cop->mac && crda == NULL) {
-+ error = EINVAL;
-+ dprintk("%s no crda\n", __FUNCTION__);
-+ goto bail;
-+ }
-+
-+ /*
-+ * Let the dispatch run unlocked, then, interlock against the
-+ * callback before checking if the operation completed and going
-+ * to sleep. This insures drivers don't inherit our lock which
-+ * results in a lock order reversal between crypto_dispatch forced
-+ * entry and the crypto_done callback into us.
-+ */
-+ error = crypto_dispatch(crp);
-+ if (error) {
-+ dprintk("%s error in crypto_dispatch\n", __FUNCTION__);
-+ goto bail;
-+ }
-+
-+ dprintk("%s about to WAIT\n", __FUNCTION__);
-+ /*
-+ * we really need to wait for driver to complete to maintain
-+ * state, luckily interrupts will be remembered
-+ */
-+ do {
-+ error = wait_event_interruptible(crp->crp_waitq,
-+ ((crp->crp_flags & CRYPTO_F_DONE) != 0));
-+ /*
-+ * we can't break out of this loop or we will leave behind
-+ * a huge mess, however, staying here means if your driver
-+ * is broken user applications can hang and not be killed.
-+ * The solution, fix your driver :-)
-+ */
-+ if (error) {
-+ schedule();
-+ error = 0;
-+ }
-+ } while ((crp->crp_flags & CRYPTO_F_DONE) == 0);
-+ dprintk("%s finished WAITING error=%d\n", __FUNCTION__, error);
-+
-+ if (crp->crp_etype != 0) {
-+ error = crp->crp_etype;
-+ dprintk("%s error in crp processing\n", __FUNCTION__);
-+ goto bail;
-+ }
-+
-+ if (cse->error) {
-+ error = cse->error;
-+ dprintk("%s error in cse processing\n", __FUNCTION__);
-+ goto bail;
-+ }
-+
-+ if (cop->dst && (error = copy_to_user(cop->dst,
-+ cse->uio.uio_iov[0].iov_base, cop->len))) {
-+ dprintk("%s bad dst copy\n", __FUNCTION__);
-+ goto bail;
-+ }
-+
-+ if (cop->mac &&
-+ (error=copy_to_user(cop->mac,
-+ (caddr_t)cse->uio.uio_iov[0].iov_base + cop->len,
-+ cse->info.authsize))) {
-+ dprintk("%s bad mac copy\n", __FUNCTION__);
-+ goto bail;
-+ }
-+
-+bail:
-+ if (crp)
-+ crypto_freereq(crp);
-+ if (cse->uio.uio_iov[0].iov_base)
-+ kfree(cse->uio.uio_iov[0].iov_base);
-+
-+ return (error);
-+}
-+
-+static int
-+cryptodev_cb(void *op)
-+{
-+ struct cryptop *crp = (struct cryptop *) op;
-+ struct csession *cse = (struct csession *)crp->crp_opaque;
-+ int error;
-+
-+ dprintk("%s()\n", __FUNCTION__);
-+ error = crp->crp_etype;
-+ if (error == EAGAIN) {
-+ crp->crp_flags &= ~CRYPTO_F_DONE;
-+#ifdef NOTYET
-+ /*
-+ * DAVIDM I am fairly sure that we should turn this into a batch
-+ * request to stop bad karma/lockup, revisit
-+ */
-+ crp->crp_flags |= CRYPTO_F_BATCH;
-+#endif
-+ return crypto_dispatch(crp);
-+ }
-+ if (error != 0 || (crp->crp_flags & CRYPTO_F_DONE)) {
-+ cse->error = error;
-+ wake_up_interruptible(&crp->crp_waitq);
-+ }
-+ return (0);
-+}
-+
-+static int
-+cryptodevkey_cb(void *op)
-+{
-+ struct cryptkop *krp = (struct cryptkop *) op;
-+ dprintk("%s()\n", __FUNCTION__);
-+ wake_up_interruptible(&krp->krp_waitq);
-+ return (0);
-+}
-+
-+static int
-+cryptodev_key(struct crypt_kop *kop)
-+{
-+ struct cryptkop *krp = NULL;
-+ int error = EINVAL;
-+ int in, out, size, i;
-+
-+ dprintk("%s()\n", __FUNCTION__);
-+ if (kop->crk_iparams + kop->crk_oparams > CRK_MAXPARAM) {
-+ dprintk("%s params too big\n", __FUNCTION__);
-+ return (EFBIG);
-+ }
-+
-+ in = kop->crk_iparams;
-+ out = kop->crk_oparams;
-+ switch (kop->crk_op) {
-+ case CRK_MOD_EXP:
-+ if (in == 3 && out == 1)
-+ break;
-+ return (EINVAL);
-+ case CRK_MOD_EXP_CRT:
-+ if (in == 6 && out == 1)
-+ break;
-+ return (EINVAL);
-+ case CRK_DSA_SIGN:
-+ if (in == 5 && out == 2)
-+ break;
-+ return (EINVAL);
-+ case CRK_DSA_VERIFY:
-+ if (in == 7 && out == 0)
-+ break;
-+ return (EINVAL);
-+ case CRK_DH_COMPUTE_KEY:
-+ if (in == 3 && out == 1)
-+ break;
-+ return (EINVAL);
-+ default:
-+ return (EINVAL);
-+ }
-+
-+ krp = (struct cryptkop *)kmalloc(sizeof *krp, GFP_KERNEL);
-+ if (!krp)
-+ return (ENOMEM);
-+ bzero(krp, sizeof *krp);
-+ krp->krp_op = kop->crk_op;
-+ krp->krp_status = kop->crk_status;
-+ krp->krp_iparams = kop->crk_iparams;
-+ krp->krp_oparams = kop->crk_oparams;
-+ krp->krp_crid = kop->crk_crid;
-+ krp->krp_status = 0;
-+ krp->krp_flags = CRYPTO_KF_CBIMM;
-+ krp->krp_callback = (int (*) (struct cryptkop *)) cryptodevkey_cb;
-+ init_waitqueue_head(&krp->krp_waitq);
-+
-+ for (i = 0; i < CRK_MAXPARAM; i++)
-+ krp->krp_param[i].crp_nbits = kop->crk_param[i].crp_nbits;
-+ for (i = 0; i < krp->krp_iparams + krp->krp_oparams; i++) {
-+ size = (krp->krp_param[i].crp_nbits + 7) / 8;
-+ if (size == 0)
-+ continue;
-+ krp->krp_param[i].crp_p = (caddr_t) kmalloc(size, GFP_KERNEL);
-+ if (i >= krp->krp_iparams)
-+ continue;
-+ error = copy_from_user(krp->krp_param[i].crp_p,
-+ kop->crk_param[i].crp_p, size);
-+ if (error)
-+ goto fail;
-+ }
-+
-+ error = crypto_kdispatch(krp);
-+ if (error)
-+ goto fail;
-+
-+ do {
-+ error = wait_event_interruptible(krp->krp_waitq,
-+ ((krp->krp_flags & CRYPTO_KF_DONE) != 0));
-+ /*
-+ * we can't break out of this loop or we will leave behind
-+ * a huge mess, however, staying here means if your driver
-+ * is broken user applications can hang and not be killed.
-+ * The solution, fix your driver :-)
-+ */
-+ if (error) {
-+ schedule();
-+ error = 0;
-+ }
-+ } while ((krp->krp_flags & CRYPTO_KF_DONE) == 0);
-+
-+ dprintk("%s finished WAITING error=%d\n", __FUNCTION__, error);
-+
-+ kop->crk_crid = krp->krp_crid; /* device that did the work */
-+ if (krp->krp_status != 0) {
-+ error = krp->krp_status;
-+ goto fail;
-+ }
-+
-+ for (i = krp->krp_iparams; i < krp->krp_iparams + krp->krp_oparams; i++) {
-+ size = (krp->krp_param[i].crp_nbits + 7) / 8;
-+ if (size == 0)
-+ continue;
-+ error = copy_to_user(kop->crk_param[i].crp_p, krp->krp_param[i].crp_p,
-+ size);
-+ if (error)
-+ goto fail;
-+ }
-+
-+fail:
-+ if (krp) {
-+ kop->crk_status = krp->krp_status;
-+ for (i = 0; i < CRK_MAXPARAM; i++) {
-+ if (krp->krp_param[i].crp_p)
-+ kfree(krp->krp_param[i].crp_p);
-+ }
-+ kfree(krp);
-+ }
-+ return (error);
-+}
-+
-+static int
-+cryptodev_find(struct crypt_find_op *find)
-+{
-+ device_t dev;
-+
-+ if (find->crid != -1) {
-+ dev = crypto_find_device_byhid(find->crid);
-+ if (dev == NULL)
-+ return (ENOENT);
-+ strlcpy(find->name, device_get_nameunit(dev),
-+ sizeof(find->name));
-+ } else {
-+ find->crid = crypto_find_driver(find->name);
-+ if (find->crid == -1)
-+ return (ENOENT);
-+ }
-+ return (0);
-+}
-+
-+static struct csession *
-+csefind(struct fcrypt *fcr, u_int ses)
-+{
-+ struct csession *cse;
-+
-+ dprintk("%s()\n", __FUNCTION__);
-+ list_for_each_entry(cse, &fcr->csessions, list)
-+ if (cse->ses == ses)
-+ return (cse);
-+ return (NULL);
-+}
-+
-+static int
-+csedelete(struct fcrypt *fcr, struct csession *cse_del)
-+{
-+ struct csession *cse;
-+
-+ dprintk("%s()\n", __FUNCTION__);
-+ list_for_each_entry(cse, &fcr->csessions, list) {
-+ if (cse == cse_del) {
-+ list_del(&cse->list);
-+ return (1);
-+ }
-+ }
-+ return (0);
-+}
-+
-+static struct csession *
-+cseadd(struct fcrypt *fcr, struct csession *cse)
-+{
-+ dprintk("%s()\n", __FUNCTION__);
-+ list_add_tail(&cse->list, &fcr->csessions);
-+ cse->ses = fcr->sesn++;
-+ return (cse);
-+}
-+
-+static struct csession *
-+csecreate(struct fcrypt *fcr, u_int64_t sid, struct cryptoini *crie,
-+ struct cryptoini *cria, struct csession_info *info)
-+{
-+ struct csession *cse;
-+
-+ dprintk("%s()\n", __FUNCTION__);
-+ cse = (struct csession *) kmalloc(sizeof(struct csession), GFP_KERNEL);
-+ if (cse == NULL)
-+ return NULL;
-+ memset(cse, 0, sizeof(struct csession));
-+
-+ INIT_LIST_HEAD(&cse->list);
-+ init_waitqueue_head(&cse->waitq);
-+
-+ cse->key = crie->cri_key;
-+ cse->keylen = crie->cri_klen/8;
-+ cse->mackey = cria->cri_key;
-+ cse->mackeylen = cria->cri_klen/8;
-+ cse->sid = sid;
-+ cse->cipher = crie->cri_alg;
-+ cse->mac = cria->cri_alg;
-+ cse->info = *info;
-+ cseadd(fcr, cse);
-+ return (cse);
-+}
-+
-+static int
-+csefree(struct csession *cse)
-+{
-+ int error;
-+
-+ dprintk("%s()\n", __FUNCTION__);
-+ error = crypto_freesession(cse->sid);
-+ if (cse->key)
-+ kfree(cse->key);
-+ if (cse->mackey)
-+ kfree(cse->mackey);
-+ kfree(cse);
-+ return(error);
-+}
-+
-+static int
-+cryptodev_ioctl(
-+ struct inode *inode,
-+ struct file *filp,
-+ unsigned int cmd,
-+ unsigned long arg)
-+{
-+ struct cryptoini cria, crie;
-+ struct fcrypt *fcr = filp->private_data;
-+ struct csession *cse;
-+ struct csession_info info;
-+ struct session2_op sop;
-+ struct crypt_op cop;
-+ struct crypt_kop kop;
-+ struct crypt_find_op fop;
-+ u_int64_t sid;
-+ u_int32_t ses = 0;
-+ int feat, fd, error = 0, crid;
-+ mm_segment_t fs;
-+
-+ dprintk("%s(cmd=%x arg=%lx)\n", __FUNCTION__, cmd, arg);
-+
-+ switch (cmd) {
-+
-+ case CRIOGET: {
-+ dprintk("%s(CRIOGET)\n", __FUNCTION__);
-+ fs = get_fs();
-+ set_fs(get_ds());
-+ for (fd = 0; fd < files_fdtable(current->files)->max_fds; fd++)
-+ if (files_fdtable(current->files)->fd[fd] == filp)
-+ break;
-+ fd = sys_dup(fd);
-+ set_fs(fs);
-+ put_user(fd, (int *) arg);
-+ return IS_ERR_VALUE(fd) ? fd : 0;
-+ }
-+
-+#define CIOCGSESSSTR (cmd == CIOCGSESSION ? "CIOCGSESSION" : "CIOCGSESSION2")
-+ case CIOCGSESSION:
-+ case CIOCGSESSION2:
-+ dprintk("%s(%s)\n", __FUNCTION__, CIOCGSESSSTR);
-+ memset(&crie, 0, sizeof(crie));
-+ memset(&cria, 0, sizeof(cria));
-+ memset(&info, 0, sizeof(info));
-+ memset(&sop, 0, sizeof(sop));
-+
-+ if (copy_from_user(&sop, (void*)arg, (cmd == CIOCGSESSION) ?
-+ sizeof(struct session_op) : sizeof(sop))) {
-+ dprintk("%s(%s) - bad copy\n", __FUNCTION__, CIOCGSESSSTR);
-+ error = EFAULT;
-+ goto bail;
-+ }
-+
-+ switch (sop.cipher) {
-+ case 0:
-+ dprintk("%s(%s) - no cipher\n", __FUNCTION__, CIOCGSESSSTR);
-+ break;
-+ case CRYPTO_NULL_CBC:
-+ info.blocksize = NULL_BLOCK_LEN;
-+ info.minkey = NULL_MIN_KEY_LEN;
-+ info.maxkey = NULL_MAX_KEY_LEN;
-+ break;
-+ case CRYPTO_DES_CBC:
-+ info.blocksize = DES_BLOCK_LEN;
-+ info.minkey = DES_MIN_KEY_LEN;
-+ info.maxkey = DES_MAX_KEY_LEN;
-+ break;
-+ case CRYPTO_3DES_CBC:
-+ info.blocksize = DES3_BLOCK_LEN;
-+ info.minkey = DES3_MIN_KEY_LEN;
-+ info.maxkey = DES3_MAX_KEY_LEN;
-+ break;
-+ case CRYPTO_BLF_CBC:
-+ info.blocksize = BLOWFISH_BLOCK_LEN;
-+ info.minkey = BLOWFISH_MIN_KEY_LEN;
-+ info.maxkey = BLOWFISH_MAX_KEY_LEN;
-+ break;
-+ case CRYPTO_CAST_CBC:
-+ info.blocksize = CAST128_BLOCK_LEN;
-+ info.minkey = CAST128_MIN_KEY_LEN;
-+ info.maxkey = CAST128_MAX_KEY_LEN;
-+ break;
-+ case CRYPTO_SKIPJACK_CBC:
-+ info.blocksize = SKIPJACK_BLOCK_LEN;
-+ info.minkey = SKIPJACK_MIN_KEY_LEN;
-+ info.maxkey = SKIPJACK_MAX_KEY_LEN;
-+ break;
-+ case CRYPTO_AES_CBC:
-+ info.blocksize = AES_BLOCK_LEN;
-+ info.minkey = AES_MIN_KEY_LEN;
-+ info.maxkey = AES_MAX_KEY_LEN;
-+ break;
-+ case CRYPTO_ARC4:
-+ info.blocksize = ARC4_BLOCK_LEN;
-+ info.minkey = ARC4_MIN_KEY_LEN;
-+ info.maxkey = ARC4_MAX_KEY_LEN;
-+ break;
-+ case CRYPTO_CAMELLIA_CBC:
-+ info.blocksize = CAMELLIA_BLOCK_LEN;
-+ info.minkey = CAMELLIA_MIN_KEY_LEN;
-+ info.maxkey = CAMELLIA_MAX_KEY_LEN;
-+ break;
-+ default:
-+ dprintk("%s(%s) - bad cipher\n", __FUNCTION__, CIOCGSESSSTR);
-+ error = EINVAL;
-+ goto bail;
-+ }
-+
-+ switch (sop.mac) {
-+ case 0:
-+ dprintk("%s(%s) - no mac\n", __FUNCTION__, CIOCGSESSSTR);
-+ break;
-+ case CRYPTO_NULL_HMAC:
-+ info.authsize = NULL_HASH_LEN;
-+ break;
-+ case CRYPTO_MD5:
-+ info.authsize = MD5_HASH_LEN;
-+ break;
-+ case CRYPTO_SHA1:
-+ info.authsize = SHA1_HASH_LEN;
-+ break;
-+ case CRYPTO_SHA2_256:
-+ info.authsize = SHA2_256_HASH_LEN;
-+ break;
-+ case CRYPTO_SHA2_384:
-+ info.authsize = SHA2_384_HASH_LEN;
-+ break;
-+ case CRYPTO_SHA2_512:
-+ info.authsize = SHA2_512_HASH_LEN;
-+ break;
-+ case CRYPTO_RIPEMD160:
-+ info.authsize = RIPEMD160_HASH_LEN;
-+ break;
-+ case CRYPTO_MD5_HMAC:
-+ info.authsize = MD5_HASH_LEN;
-+ info.authkey = 16;
-+ break;
-+ case CRYPTO_SHA1_HMAC:
-+ info.authsize = SHA1_HASH_LEN;
-+ info.authkey = 20;
-+ break;
-+ case CRYPTO_SHA2_256_HMAC:
-+ info.authsize = SHA2_256_HASH_LEN;
-+ info.authkey = 32;
-+ break;
-+ case CRYPTO_SHA2_384_HMAC:
-+ info.authsize = SHA2_384_HASH_LEN;
-+ info.authkey = 48;
-+ break;
-+ case CRYPTO_SHA2_512_HMAC:
-+ info.authsize = SHA2_512_HASH_LEN;
-+ info.authkey = 64;
-+ break;
-+ case CRYPTO_RIPEMD160_HMAC:
-+ info.authsize = RIPEMD160_HASH_LEN;
-+ info.authkey = 20;
-+ break;
-+ default:
-+ dprintk("%s(%s) - bad mac\n", __FUNCTION__, CIOCGSESSSTR);
-+ error = EINVAL;
-+ goto bail;
-+ }
-+
-+ if (info.blocksize) {
-+ crie.cri_alg = sop.cipher;
-+ crie.cri_klen = sop.keylen * 8;
-+ if ((info.maxkey && sop.keylen > info.maxkey) ||
-+ sop.keylen < info.minkey) {
-+ dprintk("%s(%s) - bad key\n", __FUNCTION__, CIOCGSESSSTR);
-+ error = EINVAL;
-+ goto bail;
-+ }
-+
-+ crie.cri_key = (u_int8_t *) kmalloc(crie.cri_klen/8+1, GFP_KERNEL);
-+ if (copy_from_user(crie.cri_key, sop.key,
-+ crie.cri_klen/8)) {
-+ dprintk("%s(%s) - bad copy\n", __FUNCTION__, CIOCGSESSSTR);
-+ error = EFAULT;
-+ goto bail;
-+ }
-+ if (info.authsize)
-+ crie.cri_next = &cria;
-+ }
-+
-+ if (info.authsize) {
-+ cria.cri_alg = sop.mac;
-+ cria.cri_klen = sop.mackeylen * 8;
-+ if (info.authkey && sop.mackeylen != info.authkey) {
-+ dprintk("%s(%s) - mackeylen %d != %d\n", __FUNCTION__,
-+ CIOCGSESSSTR, sop.mackeylen, info.authkey);
-+ error = EINVAL;
-+ goto bail;
-+ }
-+
-+ if (cria.cri_klen) {
-+ cria.cri_key = (u_int8_t *) kmalloc(cria.cri_klen/8,GFP_KERNEL);
-+ if (copy_from_user(cria.cri_key, sop.mackey,
-+ cria.cri_klen / 8)) {
-+ dprintk("%s(%s) - bad copy\n", __FUNCTION__, CIOCGSESSSTR);
-+ error = EFAULT;
-+ goto bail;
-+ }
-+ }
-+ }
-+
-+ /* NB: CIOGSESSION2 has the crid */
-+ if (cmd == CIOCGSESSION2) {
-+ crid = sop.crid;
-+ error = checkcrid(crid);
-+ if (error) {
-+ dprintk("%s(%s) - checkcrid %x\n", __FUNCTION__,
-+ CIOCGSESSSTR, error);
-+ goto bail;
-+ }
-+ } else {
-+ /* allow either HW or SW to be used */
-+ crid = CRYPTOCAP_F_HARDWARE | CRYPTOCAP_F_SOFTWARE;
-+ }
-+ error = crypto_newsession(&sid, (info.blocksize ? &crie : &cria), crid);
-+ if (error) {
-+ dprintk("%s(%s) - newsession %d\n",__FUNCTION__,CIOCGSESSSTR,error);
-+ goto bail;
-+ }
-+
-+ cse = csecreate(fcr, sid, &crie, &cria, &info);
-+ if (cse == NULL) {
-+ crypto_freesession(sid);
-+ error = EINVAL;
-+ dprintk("%s(%s) - csecreate failed\n", __FUNCTION__, CIOCGSESSSTR);
-+ goto bail;
-+ }
-+ sop.ses = cse->ses;
-+
-+ if (cmd == CIOCGSESSION2) {
-+ /* return hardware/driver id */
-+ sop.crid = CRYPTO_SESID2HID(cse->sid);
-+ }
-+
-+ if (copy_to_user((void*)arg, &sop, (cmd == CIOCGSESSION) ?
-+ sizeof(struct session_op) : sizeof(sop))) {
-+ dprintk("%s(%s) - bad copy\n", __FUNCTION__, CIOCGSESSSTR);
-+ error = EFAULT;
-+ }
-+bail:
-+ if (error) {
-+ dprintk("%s(%s) - bail %d\n", __FUNCTION__, CIOCGSESSSTR, error);
-+ if (crie.cri_key)
-+ kfree(crie.cri_key);
-+ if (cria.cri_key)
-+ kfree(cria.cri_key);
-+ }
-+ break;
-+ case CIOCFSESSION:
-+ dprintk("%s(CIOCFSESSION)\n", __FUNCTION__);
-+ get_user(ses, (uint32_t*)arg);
-+ cse = csefind(fcr, ses);
-+ if (cse == NULL) {
-+ error = EINVAL;
-+ dprintk("%s(CIOCFSESSION) - Fail %d\n", __FUNCTION__, error);
-+ break;
-+ }
-+ csedelete(fcr, cse);
-+ error = csefree(cse);
-+ break;
-+ case CIOCCRYPT:
-+ dprintk("%s(CIOCCRYPT)\n", __FUNCTION__);
-+ if(copy_from_user(&cop, (void*)arg, sizeof(cop))) {
-+ dprintk("%s(CIOCCRYPT) - bad copy\n", __FUNCTION__);
-+ error = EFAULT;
-+ goto bail;
-+ }
-+ cse = csefind(fcr, cop.ses);
-+ if (cse == NULL) {
-+ error = EINVAL;
-+ dprintk("%s(CIOCCRYPT) - Fail %d\n", __FUNCTION__, error);
-+ break;
-+ }
-+ error = cryptodev_op(cse, &cop);
-+ if(copy_to_user((void*)arg, &cop, sizeof(cop))) {
-+ dprintk("%s(CIOCCRYPT) - bad return copy\n", __FUNCTION__);
-+ error = EFAULT;
-+ goto bail;
-+ }
-+ break;
-+ case CIOCKEY:
-+ case CIOCKEY2:
-+ dprintk("%s(CIOCKEY)\n", __FUNCTION__);
-+ if (!crypto_userasymcrypto)
-+ return (EPERM); /* XXX compat? */
-+ if(copy_from_user(&kop, (void*)arg, sizeof(kop))) {
-+ dprintk("%s(CIOCKEY) - bad copy\n", __FUNCTION__);
-+ error = EFAULT;
-+ goto bail;
-+ }
-+ if (cmd == CIOCKEY) {
-+ /* NB: crypto core enforces s/w driver use */
-+ kop.crk_crid =
-+ CRYPTOCAP_F_HARDWARE | CRYPTOCAP_F_SOFTWARE;
-+ }
-+ error = cryptodev_key(&kop);
-+ if(copy_to_user((void*)arg, &kop, sizeof(kop))) {
-+ dprintk("%s(CIOCGKEY) - bad return copy\n", __FUNCTION__);
-+ error = EFAULT;
-+ goto bail;
-+ }
-+ break;
-+ case CIOCASYMFEAT:
-+ dprintk("%s(CIOCASYMFEAT)\n", __FUNCTION__);
-+ if (!crypto_userasymcrypto) {
-+ /*
-+ * NB: if user asym crypto operations are
-+ * not permitted return "no algorithms"
-+ * so well-behaved applications will just
-+ * fallback to doing them in software.
-+ */
-+ feat = 0;
-+ } else
-+ error = crypto_getfeat(&feat);
-+ if (!error) {
-+ error = copy_to_user((void*)arg, &feat, sizeof(feat));
-+ }
-+ break;
-+ case CIOCFINDDEV:
-+ if (copy_from_user(&fop, (void*)arg, sizeof(fop))) {
-+ dprintk("%s(CIOCFINDDEV) - bad copy\n", __FUNCTION__);
-+ error = EFAULT;
-+ goto bail;
-+ }
-+ error = cryptodev_find(&fop);
-+ if (copy_to_user((void*)arg, &fop, sizeof(fop))) {
-+ dprintk("%s(CIOCFINDDEV) - bad return copy\n", __FUNCTION__);
-+ error = EFAULT;
-+ goto bail;
-+ }
-+ break;
-+ default:
-+ dprintk("%s(unknown ioctl 0x%x)\n", __FUNCTION__, cmd);
-+ error = EINVAL;
-+ break;
-+ }
-+ return(-error);
-+}
-+
-+#ifdef HAVE_UNLOCKED_IOCTL
-+static long
-+cryptodev_unlocked_ioctl(
-+ struct file *filp,
-+ unsigned int cmd,
-+ unsigned long arg)
-+{
-+ return cryptodev_ioctl(NULL, filp, cmd, arg);
-+}
-+#endif
-+
-+static int
-+cryptodev_open(struct inode *inode, struct file *filp)
-+{
-+ struct fcrypt *fcr;
-+
-+ dprintk("%s()\n", __FUNCTION__);
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,35)
-+ /*
-+ * on 2.6.35 private_data points to a miscdevice structure, we override
-+ * it, which is currently safe to do.
-+ */
-+ if (filp->private_data) {
-+ printk("cryptodev: Private data already exists - %p!\n", filp->private_data);
-+ return(-ENODEV);
-+ }
-+#endif
-+
-+ fcr = kmalloc(sizeof(*fcr), GFP_KERNEL);
-+ if (!fcr) {
-+ dprintk("%s() - malloc failed\n", __FUNCTION__);
-+ return(-ENOMEM);
-+ }
-+ memset(fcr, 0, sizeof(*fcr));
-+
-+ INIT_LIST_HEAD(&fcr->csessions);
-+ filp->private_data = fcr;
-+ return(0);
-+}
-+
-+static int
-+cryptodev_release(struct inode *inode, struct file *filp)
-+{
-+ struct fcrypt *fcr = filp->private_data;
-+ struct csession *cse, *tmp;
-+
-+ dprintk("%s()\n", __FUNCTION__);
-+ if (!filp) {
-+ printk("cryptodev: No private data on release\n");
-+ return(0);
-+ }
-+
-+ list_for_each_entry_safe(cse, tmp, &fcr->csessions, list) {
-+ list_del(&cse->list);
-+ (void)csefree(cse);
-+ }
-+ filp->private_data = NULL;
-+ kfree(fcr);
-+ return(0);
-+}
-+
-+static struct file_operations cryptodev_fops = {
-+ .owner = THIS_MODULE,
-+ .open = cryptodev_open,
-+ .release = cryptodev_release,
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,36)
-+ .ioctl = cryptodev_ioctl,
-+#endif
-+#ifdef HAVE_UNLOCKED_IOCTL
-+ .unlocked_ioctl = cryptodev_unlocked_ioctl,
-+#endif
-+};
-+
-+static struct miscdevice cryptodev = {
-+ .minor = CRYPTODEV_MINOR,
-+ .name = "crypto",
-+ .fops = &cryptodev_fops,
-+};
-+
-+static int __init
-+cryptodev_init(void)
-+{
-+ int rc;
-+
-+ dprintk("%s(%p)\n", __FUNCTION__, cryptodev_init);
-+ rc = misc_register(&cryptodev);
-+ if (rc) {
-+ printk(KERN_ERR "cryptodev: registration of /dev/crypto failed\n");
-+ return(rc);
-+ }
-+
-+ return(0);
-+}
-+
-+static void __exit
-+cryptodev_exit(void)
-+{
-+ dprintk("%s()\n", __FUNCTION__);
-+ misc_deregister(&cryptodev);
-+}
-+
-+module_init(cryptodev_init);
-+module_exit(cryptodev_exit);
-+
-+MODULE_LICENSE("BSD");
-+MODULE_AUTHOR("David McCullough <david_mccullough at mcafee.com>");
-+MODULE_DESCRIPTION("Cryptodev (user interface to OCF)");
-diff --git a/crypto/ocf/cryptodev.h b/crypto/ocf/cryptodev.h
-new file mode 100644
-index 0000000..cca0ec8
---- /dev/null
-+++ b/crypto/ocf/cryptodev.h
-@@ -0,0 +1,480 @@
-+/* $FreeBSD: src/sys/opencrypto/cryptodev.h,v 1.25 2007/05/09 19:37:02 gnn Exp $ */
-+/* $OpenBSD: cryptodev.h,v 1.31 2002/06/11 11:14:29 beck Exp $ */
-+
-+/*-
-+ * Linux port done by David McCullough <david_mccullough at mcafee.com>
-+ * Copyright (C) 2006-2010 David McCullough
-+ * Copyright (C) 2004-2005 Intel Corporation.
-+ * The license and original author are listed below.
-+ *
-+ * The author of this code is Angelos D. Keromytis (angelos at cis.upenn.edu)
-+ * Copyright (c) 2002-2006 Sam Leffler, Errno Consulting
-+ *
-+ * This code was written by Angelos D. Keromytis in Athens, Greece, in
-+ * February 2000. Network Security Technologies Inc. (NSTI) kindly
-+ * supported the development of this code.
-+ *
-+ * Copyright (c) 2000 Angelos D. Keromytis
-+ *
-+ * Permission to use, copy, and modify this software with or without fee
-+ * is hereby granted, provided that this entire notice is included in
-+ * all source code copies of any software which is or includes a copy or
-+ * modification of this software.
-+ *
-+ * THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR
-+ * IMPLIED WARRANTY. IN PARTICULAR, NONE OF THE AUTHORS MAKES ANY
-+ * REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE
-+ * MERCHANTABILITY OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR
-+ * PURPOSE.
-+ *
-+ * Copyright (c) 2001 Theo de Raadt
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions
-+ * are met:
-+ *
-+ * 1. Redistributions of source code must retain the above copyright
-+ * notice, this list of conditions and the following disclaimer.
-+ * 2. Redistributions in binary form must reproduce the above copyright
-+ * notice, this list of conditions and the following disclaimer in the
-+ * documentation and/or other materials provided with the distribution.
-+ * 3. The name of the author may not be used to endorse or promote products
-+ * derived from this software without specific prior written permission.
-+ *
-+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
-+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * Effort sponsored in part by the Defense Advanced Research Projects
-+ * Agency (DARPA) and Air Force Research Laboratory, Air Force
-+ * Materiel Command, USAF, under agreement number F30602-01-2-0537.
-+ *
-+ */
-+
-+#ifndef _CRYPTO_CRYPTO_H_
-+#define _CRYPTO_CRYPTO_H_
-+
-+/* Some initial values */
-+#define CRYPTO_DRIVERS_INITIAL 4
-+#define CRYPTO_SW_SESSIONS 32
-+
-+/* Hash values */
-+#define NULL_HASH_LEN 0
-+#define MD5_HASH_LEN 16
-+#define SHA1_HASH_LEN 20
-+#define RIPEMD160_HASH_LEN 20
-+#define SHA2_256_HASH_LEN 32
-+#define SHA2_384_HASH_LEN 48
-+#define SHA2_512_HASH_LEN 64
-+#define MD5_KPDK_HASH_LEN 16
-+#define SHA1_KPDK_HASH_LEN 20
-+/* Maximum hash algorithm result length */
-+#define HASH_MAX_LEN SHA2_512_HASH_LEN /* Keep this updated */
-+
-+/* HMAC values */
-+#define NULL_HMAC_BLOCK_LEN 1
-+#define MD5_HMAC_BLOCK_LEN 64
-+#define SHA1_HMAC_BLOCK_LEN 64
-+#define RIPEMD160_HMAC_BLOCK_LEN 64
-+#define SHA2_256_HMAC_BLOCK_LEN 64
-+#define SHA2_384_HMAC_BLOCK_LEN 128
-+#define SHA2_512_HMAC_BLOCK_LEN 128
-+/* Maximum HMAC block length */
-+#define HMAC_MAX_BLOCK_LEN SHA2_512_HMAC_BLOCK_LEN /* Keep this updated */
-+#define HMAC_IPAD_VAL 0x36
-+#define HMAC_OPAD_VAL 0x5C
-+
-+/* Encryption algorithm block sizes */
-+#define NULL_BLOCK_LEN 1
-+#define DES_BLOCK_LEN 8
-+#define DES3_BLOCK_LEN 8
-+#define BLOWFISH_BLOCK_LEN 8
-+#define SKIPJACK_BLOCK_LEN 8
-+#define CAST128_BLOCK_LEN 8
-+#define RIJNDAEL128_BLOCK_LEN 16
-+#define AES_BLOCK_LEN RIJNDAEL128_BLOCK_LEN
-+#define CAMELLIA_BLOCK_LEN 16
-+#define ARC4_BLOCK_LEN 1
-+#define EALG_MAX_BLOCK_LEN AES_BLOCK_LEN /* Keep this updated */
-+
-+/* Encryption algorithm min and max key sizes */
-+#define NULL_MIN_KEY_LEN 0
-+#define NULL_MAX_KEY_LEN 0
-+#define DES_MIN_KEY_LEN 8
-+#define DES_MAX_KEY_LEN 8
-+#define DES3_MIN_KEY_LEN 24
-+#define DES3_MAX_KEY_LEN 24
-+#define BLOWFISH_MIN_KEY_LEN 4
-+#define BLOWFISH_MAX_KEY_LEN 56
-+#define SKIPJACK_MIN_KEY_LEN 10
-+#define SKIPJACK_MAX_KEY_LEN 10
-+#define CAST128_MIN_KEY_LEN 5
-+#define CAST128_MAX_KEY_LEN 16
-+#define RIJNDAEL128_MIN_KEY_LEN 16
-+#define RIJNDAEL128_MAX_KEY_LEN 32
-+#define AES_MIN_KEY_LEN RIJNDAEL128_MIN_KEY_LEN
-+#define AES_MAX_KEY_LEN RIJNDAEL128_MAX_KEY_LEN
-+#define CAMELLIA_MIN_KEY_LEN 16
-+#define CAMELLIA_MAX_KEY_LEN 32
-+#define ARC4_MIN_KEY_LEN 1
-+#define ARC4_MAX_KEY_LEN 256
-+
-+/* Max size of data that can be processed */
-+#define CRYPTO_MAX_DATA_LEN 64*1024 - 1
-+
-+#define CRYPTO_ALGORITHM_MIN 1
-+#define CRYPTO_DES_CBC 1
-+#define CRYPTO_3DES_CBC 2
-+#define CRYPTO_BLF_CBC 3
-+#define CRYPTO_CAST_CBC 4
-+#define CRYPTO_SKIPJACK_CBC 5
-+#define CRYPTO_MD5_HMAC 6
-+#define CRYPTO_SHA1_HMAC 7
-+#define CRYPTO_RIPEMD160_HMAC 8
-+#define CRYPTO_MD5_KPDK 9
-+#define CRYPTO_SHA1_KPDK 10
-+#define CRYPTO_RIJNDAEL128_CBC 11 /* 128 bit blocksize */
-+#define CRYPTO_AES_CBC 11 /* 128 bit blocksize -- the same as above */
-+#define CRYPTO_ARC4 12
-+#define CRYPTO_MD5 13
-+#define CRYPTO_SHA1 14
-+#define CRYPTO_NULL_HMAC 15
-+#define CRYPTO_NULL_CBC 16
-+#define CRYPTO_DEFLATE_COMP 17 /* Deflate compression algorithm */
-+#define CRYPTO_SHA2_256_HMAC 18
-+#define CRYPTO_SHA2_384_HMAC 19
-+#define CRYPTO_SHA2_512_HMAC 20
-+#define CRYPTO_CAMELLIA_CBC 21
-+#define CRYPTO_SHA2_256 22
-+#define CRYPTO_SHA2_384 23
-+#define CRYPTO_SHA2_512 24
-+#define CRYPTO_RIPEMD160 25
-+#define CRYPTO_LZS_COMP 26
-+#define CRYPTO_ALGORITHM_MAX 26 /* Keep updated - see above */
-+
-+/* Algorithm flags */
-+#define CRYPTO_ALG_FLAG_SUPPORTED 0x01 /* Algorithm is supported */
-+#define CRYPTO_ALG_FLAG_RNG_ENABLE 0x02 /* Has HW RNG for DH/DSA */
-+#define CRYPTO_ALG_FLAG_DSA_SHA 0x04 /* Can do SHA on msg */
-+
-+/*
-+ * Crypto driver/device flags. They can set in the crid
-+ * parameter when creating a session or submitting a key
-+ * op to affect the device/driver assigned. If neither
-+ * of these are specified then the crid is assumed to hold
-+ * the driver id of an existing (and suitable) device that
-+ * must be used to satisfy the request.
-+ */
-+#define CRYPTO_FLAG_HARDWARE 0x01000000 /* hardware accelerated */
-+#define CRYPTO_FLAG_SOFTWARE 0x02000000 /* software implementation */
-+
-+/* NB: deprecated */
-+struct session_op {
-+ u_int32_t cipher; /* ie. CRYPTO_DES_CBC */
-+ u_int32_t mac; /* ie. CRYPTO_MD5_HMAC */
-+
-+ u_int32_t keylen; /* cipher key */
-+ caddr_t key;
-+ int mackeylen; /* mac key */
-+ caddr_t mackey;
-+
-+ u_int32_t ses; /* returns: session # */
-+};
-+
-+struct session2_op {
-+ u_int32_t cipher; /* ie. CRYPTO_DES_CBC */
-+ u_int32_t mac; /* ie. CRYPTO_MD5_HMAC */
-+
-+ u_int32_t keylen; /* cipher key */
-+ caddr_t key;
-+ int mackeylen; /* mac key */
-+ caddr_t mackey;
-+
-+ u_int32_t ses; /* returns: session # */
-+ int crid; /* driver id + flags (rw) */
-+ int pad[4]; /* for future expansion */
-+};
-+
-+struct crypt_op {
-+ u_int32_t ses;
-+ u_int16_t op; /* i.e. COP_ENCRYPT */
-+#define COP_NONE 0
-+#define COP_ENCRYPT 1
-+#define COP_DECRYPT 2
-+ u_int16_t flags;
-+#define COP_F_BATCH 0x0008 /* Batch op if possible */
-+ u_int len;
-+ caddr_t src, dst; /* become iov[] inside kernel */
-+ caddr_t mac; /* must be big enough for chosen MAC */
-+ caddr_t iv;
-+};
-+
-+/*
-+ * Parameters for looking up a crypto driver/device by
-+ * device name or by id. The latter are returned for
-+ * created sessions (crid) and completed key operations.
-+ */
-+struct crypt_find_op {
-+ int crid; /* driver id + flags */
-+ char name[32]; /* device/driver name */
-+};
-+
-+/* bignum parameter, in packed bytes, ... */
-+struct crparam {
-+ caddr_t crp_p;
-+ u_int crp_nbits;
-+};
-+
-+#define CRK_MAXPARAM 8
-+
-+struct crypt_kop {
-+ u_int crk_op; /* ie. CRK_MOD_EXP or other */
-+ u_int crk_status; /* return status */
-+ u_short crk_iparams; /* # of input parameters */
-+ u_short crk_oparams; /* # of output parameters */
-+ u_int crk_crid; /* NB: only used by CIOCKEY2 (rw) */
-+ struct crparam crk_param[CRK_MAXPARAM];
-+};
-+#define CRK_ALGORITM_MIN 0
-+#define CRK_MOD_EXP 0
-+#define CRK_MOD_EXP_CRT 1
-+#define CRK_DSA_SIGN 2
-+#define CRK_DSA_VERIFY 3
-+#define CRK_DH_COMPUTE_KEY 4
-+#define CRK_ALGORITHM_MAX 4 /* Keep updated - see below */
-+
-+#define CRF_MOD_EXP (1 << CRK_MOD_EXP)
-+#define CRF_MOD_EXP_CRT (1 << CRK_MOD_EXP_CRT)
-+#define CRF_DSA_SIGN (1 << CRK_DSA_SIGN)
-+#define CRF_DSA_VERIFY (1 << CRK_DSA_VERIFY)
-+#define CRF_DH_COMPUTE_KEY (1 << CRK_DH_COMPUTE_KEY)
-+
-+/*
-+ * done against open of /dev/crypto, to get a cloned descriptor.
-+ * Please use F_SETFD against the cloned descriptor.
-+ */
-+#define CRIOGET _IOWR('c', 100, u_int32_t)
-+#define CRIOASYMFEAT CIOCASYMFEAT
-+#define CRIOFINDDEV CIOCFINDDEV
-+
-+/* the following are done against the cloned descriptor */
-+#define CIOCGSESSION _IOWR('c', 101, struct session_op)
-+#define CIOCFSESSION _IOW('c', 102, u_int32_t)
-+#define CIOCCRYPT _IOWR('c', 103, struct crypt_op)
-+#define CIOCKEY _IOWR('c', 104, struct crypt_kop)
-+#define CIOCASYMFEAT _IOR('c', 105, u_int32_t)
-+#define CIOCGSESSION2 _IOWR('c', 106, struct session2_op)
-+#define CIOCKEY2 _IOWR('c', 107, struct crypt_kop)
-+#define CIOCFINDDEV _IOWR('c', 108, struct crypt_find_op)
-+
-+struct cryptotstat {
-+ struct timespec acc; /* total accumulated time */
-+ struct timespec min; /* min time */
-+ struct timespec max; /* max time */
-+ u_int32_t count; /* number of observations */
-+};
-+
-+struct cryptostats {
-+ u_int32_t cs_ops; /* symmetric crypto ops submitted */
-+ u_int32_t cs_errs; /* symmetric crypto ops that failed */
-+ u_int32_t cs_kops; /* asymetric/key ops submitted */
-+ u_int32_t cs_kerrs; /* asymetric/key ops that failed */
-+ u_int32_t cs_intrs; /* crypto swi thread activations */
-+ u_int32_t cs_rets; /* crypto return thread activations */
-+ u_int32_t cs_blocks; /* symmetric op driver block */
-+ u_int32_t cs_kblocks; /* symmetric op driver block */
-+ /*
-+ * When CRYPTO_TIMING is defined at compile time and the
-+ * sysctl debug.crypto is set to 1, the crypto system will
-+ * accumulate statistics about how long it takes to process
-+ * crypto requests at various points during processing.
-+ */
-+ struct cryptotstat cs_invoke; /* crypto_dipsatch -> crypto_invoke */
-+ struct cryptotstat cs_done; /* crypto_invoke -> crypto_done */
-+ struct cryptotstat cs_cb; /* crypto_done -> callback */
-+ struct cryptotstat cs_finis; /* callback -> callback return */
-+
-+ u_int32_t cs_drops; /* crypto ops dropped due to congestion */
-+};
-+
-+#ifdef __KERNEL__
-+
-+/* Standard initialization structure beginning */
-+struct cryptoini {
-+ int cri_alg; /* Algorithm to use */
-+ int cri_klen; /* Key length, in bits */
-+ int cri_mlen; /* Number of bytes we want from the
-+ entire hash. 0 means all. */
-+ caddr_t cri_key; /* key to use */
-+ u_int8_t cri_iv[EALG_MAX_BLOCK_LEN]; /* IV to use */
-+ struct cryptoini *cri_next;
-+};
-+
-+/* Describe boundaries of a single crypto operation */
-+struct cryptodesc {
-+ int crd_skip; /* How many bytes to ignore from start */
-+ int crd_len; /* How many bytes to process */
-+ int crd_inject; /* Where to inject results, if applicable */
-+ int crd_flags;
-+
-+#define CRD_F_ENCRYPT 0x01 /* Set when doing encryption */
-+#define CRD_F_IV_PRESENT 0x02 /* When encrypting, IV is already in
-+ place, so don't copy. */
-+#define CRD_F_IV_EXPLICIT 0x04 /* IV explicitly provided */
-+#define CRD_F_DSA_SHA_NEEDED 0x08 /* Compute SHA-1 of buffer for DSA */
-+#define CRD_F_KEY_EXPLICIT 0x10 /* Key explicitly provided */
-+#define CRD_F_COMP 0x0f /* Set when doing compression */
-+
-+ struct cryptoini CRD_INI; /* Initialization/context data */
-+#define crd_iv CRD_INI.cri_iv
-+#define crd_key CRD_INI.cri_key
-+#define crd_alg CRD_INI.cri_alg
-+#define crd_klen CRD_INI.cri_klen
-+#define crd_mlen CRD_INI.cri_mlen
-+
-+ struct cryptodesc *crd_next;
-+};
-+
-+/* Structure describing complete operation */
-+struct cryptop {
-+ struct list_head crp_next;
-+ wait_queue_head_t crp_waitq;
-+
-+ u_int64_t crp_sid; /* Session ID */
-+ int crp_ilen; /* Input data total length */
-+ int crp_olen; /* Result total length */
-+
-+ int crp_etype; /*
-+ * Error type (zero means no error).
-+ * All error codes except EAGAIN
-+ * indicate possible data corruption (as in,
-+ * the data have been touched). On all
-+ * errors, the crp_sid may have changed
-+ * (reset to a new one), so the caller
-+ * should always check and use the new
-+ * value on future requests.
-+ */
-+ int crp_flags;
-+
-+#define CRYPTO_F_SKBUF 0x0001 /* Input/output are skbuf chains */
-+#define CRYPTO_F_IOV 0x0002 /* Input/output are uio */
-+#define CRYPTO_F_REL 0x0004 /* Must return data in same place */
-+#define CRYPTO_F_BATCH 0x0008 /* Batch op if possible */
-+#define CRYPTO_F_CBIMM 0x0010 /* Do callback immediately */
-+#define CRYPTO_F_DONE 0x0020 /* Operation completed */
-+#define CRYPTO_F_CBIFSYNC 0x0040 /* Do CBIMM if op is synchronous */
-+
-+ caddr_t crp_buf; /* Data to be processed */
-+ caddr_t crp_opaque; /* Opaque pointer, passed along */
-+ struct cryptodesc *crp_desc; /* Linked list of processing descriptors */
-+
-+ int (*crp_callback)(struct cryptop *); /* Callback function */
-+};
-+
-+#define CRYPTO_BUF_CONTIG 0x0
-+#define CRYPTO_BUF_IOV 0x1
-+#define CRYPTO_BUF_SKBUF 0x2
-+
-+#define CRYPTO_OP_DECRYPT 0x0
-+#define CRYPTO_OP_ENCRYPT 0x1
-+
-+/*
-+ * Hints passed to process methods.
-+ */
-+#define CRYPTO_HINT_MORE 0x1 /* more ops coming shortly */
-+
-+struct cryptkop {
-+ struct list_head krp_next;
-+ wait_queue_head_t krp_waitq;
-+
-+ int krp_flags;
-+#define CRYPTO_KF_DONE 0x0001 /* Operation completed */
-+#define CRYPTO_KF_CBIMM 0x0002 /* Do callback immediately */
-+
-+ u_int krp_op; /* ie. CRK_MOD_EXP or other */
-+ u_int krp_status; /* return status */
-+ u_short krp_iparams; /* # of input parameters */
-+ u_short krp_oparams; /* # of output parameters */
-+ u_int krp_crid; /* desired device, etc. */
-+ u_int32_t krp_hid;
-+ struct crparam krp_param[CRK_MAXPARAM]; /* kvm */
-+ int (*krp_callback)(struct cryptkop *);
-+};
-+
-+#include <ocf-compat.h>
-+
-+/*
-+ * Session ids are 64 bits. The lower 32 bits contain a "local id" which
-+ * is a driver-private session identifier. The upper 32 bits contain a
-+ * "hardware id" used by the core crypto code to identify the driver and
-+ * a copy of the driver's capabilities that can be used by client code to
-+ * optimize operation.
-+ */
-+#define CRYPTO_SESID2HID(_sid) (((_sid) >> 32) & 0x00ffffff)
-+#define CRYPTO_SESID2CAPS(_sid) (((_sid) >> 32) & 0xff000000)
-+#define CRYPTO_SESID2LID(_sid) (((u_int32_t) (_sid)) & 0xffffffff)
-+
-+extern int crypto_newsession(u_int64_t *sid, struct cryptoini *cri, int hard);
-+extern int crypto_freesession(u_int64_t sid);
-+#define CRYPTOCAP_F_HARDWARE CRYPTO_FLAG_HARDWARE
-+#define CRYPTOCAP_F_SOFTWARE CRYPTO_FLAG_SOFTWARE
-+#define CRYPTOCAP_F_SYNC 0x04000000 /* operates synchronously */
-+extern int32_t crypto_get_driverid(device_t dev, int flags);
-+extern int crypto_find_driver(const char *);
-+extern device_t crypto_find_device_byhid(int hid);
-+extern int crypto_getcaps(int hid);
-+extern int crypto_register(u_int32_t driverid, int alg, u_int16_t maxoplen,
-+ u_int32_t flags);
-+extern int crypto_kregister(u_int32_t, int, u_int32_t);
-+extern int crypto_unregister(u_int32_t driverid, int alg);
-+extern int crypto_unregister_all(u_int32_t driverid);
-+extern int crypto_dispatch(struct cryptop *crp);
-+extern int crypto_kdispatch(struct cryptkop *);
-+#define CRYPTO_SYMQ 0x1
-+#define CRYPTO_ASYMQ 0x2
-+extern int crypto_unblock(u_int32_t, int);
-+extern void crypto_done(struct cryptop *crp);
-+extern void crypto_kdone(struct cryptkop *);
-+extern int crypto_getfeat(int *);
-+
-+extern void crypto_freereq(struct cryptop *crp);
-+extern struct cryptop *crypto_getreq(int num);
-+
-+extern int crypto_usercrypto; /* userland may do crypto requests */
-+extern int crypto_userasymcrypto; /* userland may do asym crypto reqs */
-+extern int crypto_devallowsoft; /* only use hardware crypto */
-+
-+/*
-+ * random number support, crypto_unregister_all will unregister
-+ */
-+extern int crypto_rregister(u_int32_t driverid,
-+ int (*read_random)(void *arg, u_int32_t *buf, int len), void *arg);
-+extern int crypto_runregister_all(u_int32_t driverid);
-+
-+/*
-+ * Crypto-related utility routines used mainly by drivers.
-+ *
-+ * XXX these don't really belong here; but for now they're
-+ * kept apart from the rest of the system.
-+ */
-+struct uio;
-+extern void cuio_copydata(struct uio* uio, int off, int len, caddr_t cp);
-+extern void cuio_copyback(struct uio* uio, int off, int len, caddr_t cp);
-+extern struct iovec *cuio_getptr(struct uio *uio, int loc, int *off);
-+
-+extern void crypto_copyback(int flags, caddr_t buf, int off, int size,
-+ caddr_t in);
-+extern void crypto_copydata(int flags, caddr_t buf, int off, int size,
-+ caddr_t out);
-+extern int crypto_apply(int flags, caddr_t buf, int off, int len,
-+ int (*f)(void *, void *, u_int), void *arg);
-+
-+#endif /* __KERNEL__ */
-+#endif /* _CRYPTO_CRYPTO_H_ */
-diff --git a/crypto/ocf/cryptosoft.c b/crypto/ocf/cryptosoft.c
-new file mode 100644
-index 0000000..aa2383d
---- /dev/null
-+++ b/crypto/ocf/cryptosoft.c
-@@ -0,0 +1,1322 @@
-+/*
-+ * An OCF module that uses the linux kernel cryptoapi, based on the
-+ * original cryptosoft for BSD by Angelos D. Keromytis (angelos at cis.upenn.edu)
-+ * but is mostly unrecognisable,
-+ *
-+ * Written by David McCullough <david_mccullough at mcafee.com>
-+ * Copyright (C) 2004-2011 David McCullough
-+ * Copyright (C) 2004-2005 Intel Corporation.
-+ *
-+ * LICENSE TERMS
-+ *
-+ * The free distribution and use of this software in both source and binary
-+ * form is allowed (with or without changes) provided that:
-+ *
-+ * 1. distributions of this source code include the above copyright
-+ * notice, this list of conditions and the following disclaimer;
-+ *
-+ * 2. distributions in binary form include the above copyright
-+ * notice, this list of conditions and the following disclaimer
-+ * in the documentation and/or other associated materials;
-+ *
-+ * 3. the copyright holder's name is not used to endorse products
-+ * built using this software without specific written permission.
-+ *
-+ * ALTERNATIVELY, provided that this notice is retained in full, this product
-+ * may be distributed under the terms of the GNU General Public License (GPL),
-+ * in which case the provisions of the GPL apply INSTEAD OF those given above.
-+ *
-+ * DISCLAIMER
-+ *
-+ * This software is provided 'as is' with no explicit or implied warranties
-+ * in respect of its properties, including, but not limited to, correctness
-+ * and/or fitness for purpose.
-+ * ---------------------------------------------------------------------------
-+ */
-+
-+#include <linux/version.h>
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,38) && !defined(AUTOCONF_INCLUDED)
-+#include <linux/config.h>
-+#endif
-+#include <linux/module.h>
-+#include <linux/init.h>
-+#include <linux/list.h>
-+#include <linux/slab.h>
-+#include <linux/sched.h>
-+#include <linux/wait.h>
-+#include <linux/crypto.h>
-+#include <linux/mm.h>
-+#include <linux/skbuff.h>
-+#include <linux/random.h>
-+#include <linux/interrupt.h>
-+#include <linux/spinlock.h>
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,10)
-+#include <linux/scatterlist.h>
-+#endif
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29)
-+#include <crypto/hash.h>
-+#endif
-+
-+#include <cryptodev.h>
-+#include <uio.h>
-+
-+struct {
-+ softc_device_decl sc_dev;
-+} swcr_softc;
-+
-+#define offset_in_page(p) ((unsigned long)(p) & ~PAGE_MASK)
-+
-+#define SW_TYPE_CIPHER 0x01
-+#define SW_TYPE_HMAC 0x02
-+#define SW_TYPE_HASH 0x04
-+#define SW_TYPE_COMP 0x08
-+#define SW_TYPE_BLKCIPHER 0x10
-+#define SW_TYPE_ALG_MASK 0x1f
-+
-+#define SW_TYPE_ASYNC 0x8000
-+
-+#define SW_TYPE_INUSE 0x10000000
-+
-+/* We change some of the above if we have an async interface */
-+
-+#define SW_TYPE_ALG_AMASK (SW_TYPE_ALG_MASK | SW_TYPE_ASYNC)
-+
-+#define SW_TYPE_ABLKCIPHER (SW_TYPE_BLKCIPHER | SW_TYPE_ASYNC)
-+#define SW_TYPE_AHASH (SW_TYPE_HASH | SW_TYPE_ASYNC)
-+#define SW_TYPE_AHMAC (SW_TYPE_HMAC | SW_TYPE_ASYNC)
-+
-+#define SCATTERLIST_MAX 16
-+
-+struct swcr_data {
-+ struct work_struct workq;
-+ int sw_type;
-+ int sw_alg;
-+ struct crypto_tfm *sw_tfm;
-+ spinlock_t sw_tfm_lock;
-+ union {
-+ struct {
-+ char *sw_key;
-+ int sw_klen;
-+ int sw_mlen;
-+ } hmac;
-+ void *sw_comp_buf;
-+ } u;
-+ struct swcr_data *sw_next;
-+};
-+
-+struct swcr_req {
-+ struct swcr_data *sw_head;
-+ struct swcr_data *sw;
-+ struct cryptop *crp;
-+ struct cryptodesc *crd;
-+ struct scatterlist sg[SCATTERLIST_MAX];
-+ unsigned char iv[EALG_MAX_BLOCK_LEN];
-+ char result[HASH_MAX_LEN];
-+ void *crypto_req;
-+};
-+
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20)
-+static kmem_cache_t *swcr_req_cache;
-+#else
-+static struct kmem_cache *swcr_req_cache;
-+#endif
-+
-+#ifndef CRYPTO_TFM_MODE_CBC
-+/*
-+ * As of linux-2.6.21 this is no longer defined, and presumably no longer
-+ * needed to be passed into the crypto core code.
-+ */
-+#define CRYPTO_TFM_MODE_CBC 0
-+#define CRYPTO_TFM_MODE_ECB 0
-+#endif
-+
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
-+ /*
-+ * Linux 2.6.19 introduced a new Crypto API, setup macro's to convert new
-+ * API into old API.
-+ */
-+
-+ /* Symmetric/Block Cipher */
-+ struct blkcipher_desc
-+ {
-+ struct crypto_tfm *tfm;
-+ void *info;
-+ };
-+ #define ecb(X) #X , CRYPTO_TFM_MODE_ECB
-+ #define cbc(X) #X , CRYPTO_TFM_MODE_CBC
-+ #define crypto_has_blkcipher(X, Y, Z) crypto_alg_available(X, 0)
-+ #define crypto_blkcipher_cast(X) X
-+ #define crypto_blkcipher_tfm(X) X
-+ #define crypto_alloc_blkcipher(X, Y, Z) crypto_alloc_tfm(X, mode)
-+ #define crypto_blkcipher_ivsize(X) crypto_tfm_alg_ivsize(X)
-+ #define crypto_blkcipher_blocksize(X) crypto_tfm_alg_blocksize(X)
-+ #define crypto_blkcipher_setkey(X, Y, Z) crypto_cipher_setkey(X, Y, Z)
-+ #define crypto_blkcipher_encrypt_iv(W, X, Y, Z) \
-+ crypto_cipher_encrypt_iv((W)->tfm, X, Y, Z, (u8 *)((W)->info))
-+ #define crypto_blkcipher_decrypt_iv(W, X, Y, Z) \
-+ crypto_cipher_decrypt_iv((W)->tfm, X, Y, Z, (u8 *)((W)->info))
-+ #define crypto_blkcipher_set_flags(x, y) /* nop */
-+ #define crypto_free_blkcipher(x) crypto_free_tfm(x)
-+ #define crypto_free_comp crypto_free_tfm
-+ #define crypto_free_hash crypto_free_tfm
-+
-+ /* Hash/HMAC/Digest */
-+ struct hash_desc
-+ {
-+ struct crypto_tfm *tfm;
-+ };
-+ #define hmac(X) #X , 0
-+ #define crypto_has_hash(X, Y, Z) crypto_alg_available(X, 0)
-+ #define crypto_hash_cast(X) X
-+ #define crypto_hash_tfm(X) X
-+ #define crypto_alloc_hash(X, Y, Z) crypto_alloc_tfm(X, mode)
-+ #define crypto_hash_digestsize(X) crypto_tfm_alg_digestsize(X)
-+ #define crypto_hash_digest(W, X, Y, Z) \
-+ crypto_digest_digest((W)->tfm, X, sg_num, Z)
-+
-+ /* Asymmetric Cipher */
-+ #define crypto_has_cipher(X, Y, Z) crypto_alg_available(X, 0)
-+
-+ /* Compression */
-+ #define crypto_has_comp(X, Y, Z) crypto_alg_available(X, 0)
-+ #define crypto_comp_tfm(X) X
-+ #define crypto_comp_cast(X) X
-+ #define crypto_alloc_comp(X, Y, Z) crypto_alloc_tfm(X, mode)
-+ #define plain(X) #X , 0
-+#else
-+ #define ecb(X) "ecb(" #X ")" , 0
-+ #define cbc(X) "cbc(" #X ")" , 0
-+ #define hmac(X) "hmac(" #X ")" , 0
-+ #define plain(X) #X , 0
-+#endif /* if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19) */
-+
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,22)
-+/* no ablkcipher in older kernels */
-+#define crypto_alloc_ablkcipher(a,b,c) (NULL)
-+#define crypto_ablkcipher_tfm(x) ((struct crypto_tfm *)(x))
-+#define crypto_ablkcipher_set_flags(a, b) /* nop */
-+#define crypto_ablkcipher_setkey(x, y, z) (-EINVAL)
-+#define crypto_has_ablkcipher(a,b,c) (0)
-+#else
-+#define HAVE_ABLKCIPHER
-+#endif
-+
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,32)
-+/* no ahash in older kernels */
-+#define crypto_ahash_tfm(x) ((struct crypto_tfm *)(x))
-+#define crypto_alloc_ahash(a,b,c) (NULL)
-+#define crypto_ahash_digestsize(x) 0
-+#else
-+#define HAVE_AHASH
-+#endif
-+
-+struct crypto_details {
-+ char *alg_name;
-+ int mode;
-+ int sw_type;
-+};
-+
-+static struct crypto_details crypto_details[] = {
-+ [CRYPTO_DES_CBC] = { cbc(des), SW_TYPE_BLKCIPHER, },
-+ [CRYPTO_3DES_CBC] = { cbc(des3_ede), SW_TYPE_BLKCIPHER, },
-+ [CRYPTO_BLF_CBC] = { cbc(blowfish), SW_TYPE_BLKCIPHER, },
-+ [CRYPTO_CAST_CBC] = { cbc(cast5), SW_TYPE_BLKCIPHER, },
-+ [CRYPTO_SKIPJACK_CBC] = { cbc(skipjack), SW_TYPE_BLKCIPHER, },
-+ [CRYPTO_MD5_HMAC] = { hmac(md5), SW_TYPE_HMAC, },
-+ [CRYPTO_SHA1_HMAC] = { hmac(sha1), SW_TYPE_HMAC, },
-+ [CRYPTO_RIPEMD160_HMAC] = { hmac(ripemd160), SW_TYPE_HMAC, },
-+ [CRYPTO_MD5_KPDK] = { plain(md5-kpdk), SW_TYPE_HASH, },
-+ [CRYPTO_SHA1_KPDK] = { plain(sha1-kpdk), SW_TYPE_HASH, },
-+ [CRYPTO_AES_CBC] = { cbc(aes), SW_TYPE_BLKCIPHER, },
-+ [CRYPTO_ARC4] = { ecb(arc4), SW_TYPE_BLKCIPHER, },
-+ [CRYPTO_MD5] = { plain(md5), SW_TYPE_HASH, },
-+ [CRYPTO_SHA1] = { plain(sha1), SW_TYPE_HASH, },
-+ [CRYPTO_NULL_HMAC] = { hmac(digest_null), SW_TYPE_HMAC, },
-+ [CRYPTO_NULL_CBC] = { cbc(cipher_null), SW_TYPE_BLKCIPHER, },
-+ [CRYPTO_DEFLATE_COMP] = { plain(deflate), SW_TYPE_COMP, },
-+ [CRYPTO_SHA2_256_HMAC] = { hmac(sha256), SW_TYPE_HMAC, },
-+ [CRYPTO_SHA2_384_HMAC] = { hmac(sha384), SW_TYPE_HMAC, },
-+ [CRYPTO_SHA2_512_HMAC] = { hmac(sha512), SW_TYPE_HMAC, },
-+ [CRYPTO_CAMELLIA_CBC] = { cbc(camellia), SW_TYPE_BLKCIPHER, },
-+ [CRYPTO_SHA2_256] = { plain(sha256), SW_TYPE_HASH, },
-+ [CRYPTO_SHA2_384] = { plain(sha384), SW_TYPE_HASH, },
-+ [CRYPTO_SHA2_512] = { plain(sha512), SW_TYPE_HASH, },
-+ [CRYPTO_RIPEMD160] = { plain(ripemd160), SW_TYPE_HASH, },
-+};
-+
-+int32_t swcr_id = -1;
-+module_param(swcr_id, int, 0444);
-+MODULE_PARM_DESC(swcr_id, "Read-Only OCF ID for cryptosoft driver");
-+
-+int swcr_fail_if_compression_grows = 1;
-+module_param(swcr_fail_if_compression_grows, int, 0644);
-+MODULE_PARM_DESC(swcr_fail_if_compression_grows,
-+ "Treat compression that results in more data as a failure");
-+
-+int swcr_no_ahash = 0;
-+module_param(swcr_no_ahash, int, 0644);
-+MODULE_PARM_DESC(swcr_no_ahash,
-+ "Do not use async hash/hmac even if available");
-+
-+int swcr_no_ablk = 0;
-+module_param(swcr_no_ablk, int, 0644);
-+MODULE_PARM_DESC(swcr_no_ablk,
-+ "Do not use async blk ciphers even if available");
-+
-+static struct swcr_data **swcr_sessions = NULL;
-+static u_int32_t swcr_sesnum = 0;
-+
-+static int swcr_process(device_t, struct cryptop *, int);
-+static int swcr_newsession(device_t, u_int32_t *, struct cryptoini *);
-+static int swcr_freesession(device_t, u_int64_t);
-+
-+static device_method_t swcr_methods = {
-+ /* crypto device methods */
-+ DEVMETHOD(cryptodev_newsession, swcr_newsession),
-+ DEVMETHOD(cryptodev_freesession,swcr_freesession),
-+ DEVMETHOD(cryptodev_process, swcr_process),
-+};
-+
-+#define debug swcr_debug
-+int swcr_debug = 0;
-+module_param(swcr_debug, int, 0644);
-+MODULE_PARM_DESC(swcr_debug, "Enable debug");
-+
-+static void swcr_process_req(struct swcr_req *req);
-+
-+/*
-+ * somethings just need to be run with user context no matter whether
-+ * the kernel compression libs use vmalloc/vfree for example.
-+ */
-+
-+typedef struct {
-+ struct work_struct wq;
-+ void (*func)(void *arg);
-+ void *arg;
-+} execute_later_t;
-+
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,20)
-+static void
-+doing_it_now(struct work_struct *wq)
-+{
-+ execute_later_t *w = container_of(wq, execute_later_t, wq);
-+ (w->func)(w->arg);
-+ kfree(w);
-+}
-+#else
-+static void
-+doing_it_now(void *arg)
-+{
-+ execute_later_t *w = (execute_later_t *) arg;
-+ (w->func)(w->arg);
-+ kfree(w);
-+}
-+#endif
-+
-+static void
-+execute_later(void (fn)(void *), void *arg)
-+{
-+ execute_later_t *w;
-+
-+ w = (execute_later_t *) kmalloc(sizeof(execute_later_t), SLAB_ATOMIC);
-+ if (w) {
-+ memset(w, '\0', sizeof(w));
-+ w->func = fn;
-+ w->arg = arg;
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,20)
-+ INIT_WORK(&w->wq, doing_it_now);
-+#else
-+ INIT_WORK(&w->wq, doing_it_now, w);
-+#endif
-+ schedule_work(&w->wq);
-+ }
-+}
-+
-+/*
-+ * Generate a new software session.
-+ */
-+static int
-+swcr_newsession(device_t dev, u_int32_t *sid, struct cryptoini *cri)
-+{
-+ struct swcr_data **swd;
-+ u_int32_t i;
-+ int error;
-+ char *algo;
-+ int mode;
-+
-+ dprintk("%s()\n", __FUNCTION__);
-+ if (sid == NULL || cri == NULL) {
-+ dprintk("%s,%d - EINVAL\n", __FILE__, __LINE__);
-+ return EINVAL;
-+ }
-+
-+ if (swcr_sessions) {
-+ for (i = 1; i < swcr_sesnum; i++)
-+ if (swcr_sessions[i] == NULL)
-+ break;
-+ } else
-+ i = 1; /* NB: to silence compiler warning */
-+
-+ if (swcr_sessions == NULL || i == swcr_sesnum) {
-+ if (swcr_sessions == NULL) {
-+ i = 1; /* We leave swcr_sessions[0] empty */
-+ swcr_sesnum = CRYPTO_SW_SESSIONS;
-+ } else
-+ swcr_sesnum *= 2;
-+
-+ swd = kmalloc(swcr_sesnum * sizeof(struct swcr_data *), SLAB_ATOMIC);
-+ if (swd == NULL) {
-+ /* Reset session number */
-+ if (swcr_sesnum == CRYPTO_SW_SESSIONS)
-+ swcr_sesnum = 0;
-+ else
-+ swcr_sesnum /= 2;
-+ dprintk("%s,%d: ENOBUFS\n", __FILE__, __LINE__);
-+ return ENOBUFS;
-+ }
-+ memset(swd, 0, swcr_sesnum * sizeof(struct swcr_data *));
-+
-+ /* Copy existing sessions */
-+ if (swcr_sessions) {
-+ memcpy(swd, swcr_sessions,
-+ (swcr_sesnum / 2) * sizeof(struct swcr_data *));
-+ kfree(swcr_sessions);
-+ }
-+
-+ swcr_sessions = swd;
-+ }
-+
-+ swd = &swcr_sessions[i];
-+ *sid = i;
-+
-+ while (cri) {
-+ *swd = (struct swcr_data *) kmalloc(sizeof(struct swcr_data),
-+ SLAB_ATOMIC);
-+ if (*swd == NULL) {
-+ swcr_freesession(NULL, i);
-+ dprintk("%s,%d: ENOBUFS\n", __FILE__, __LINE__);
-+ return ENOBUFS;
-+ }
-+ memset(*swd, 0, sizeof(struct swcr_data));
-+
-+ if (cri->cri_alg < 0 ||
-+ cri->cri_alg>=sizeof(crypto_details)/sizeof(crypto_details[0])){
-+ printk("cryptosoft: Unknown algorithm 0x%x\n", cri->cri_alg);
-+ swcr_freesession(NULL, i);
-+ return EINVAL;
-+ }
-+
-+ algo = crypto_details[cri->cri_alg].alg_name;
-+ if (!algo || !*algo) {
-+ printk("cryptosoft: Unsupported algorithm 0x%x\n", cri->cri_alg);
-+ swcr_freesession(NULL, i);
-+ return EINVAL;
-+ }
-+
-+ mode = crypto_details[cri->cri_alg].mode;
-+ (*swd)->sw_type = crypto_details[cri->cri_alg].sw_type;
-+ (*swd)->sw_alg = cri->cri_alg;
-+
-+ spin_lock_init(&(*swd)->sw_tfm_lock);
-+
-+ /* Algorithm specific configuration */
-+ switch (cri->cri_alg) {
-+ case CRYPTO_NULL_CBC:
-+ cri->cri_klen = 0; /* make it work with crypto API */
-+ break;
-+ default:
-+ break;
-+ }
-+
-+ if ((*swd)->sw_type & SW_TYPE_BLKCIPHER) {
-+ dprintk("%s crypto_alloc_*blkcipher(%s, 0x%x)\n", __FUNCTION__,
-+ algo, mode);
-+
-+ /* try async first */
-+ (*swd)->sw_tfm = swcr_no_ablk ? NULL :
-+ crypto_ablkcipher_tfm(crypto_alloc_ablkcipher(algo, 0, 0));
-+ if ((*swd)->sw_tfm && !IS_ERR((*swd)->sw_tfm)) {
-+ dprintk("%s %s cipher is async\n", __FUNCTION__, algo);
-+ (*swd)->sw_type |= SW_TYPE_ASYNC;
-+ } else {
-+ (*swd)->sw_tfm = crypto_blkcipher_tfm(
-+ crypto_alloc_blkcipher(algo, 0, CRYPTO_ALG_ASYNC));
-+ if ((*swd)->sw_tfm && !IS_ERR((*swd)->sw_tfm))
-+ dprintk("%s %s cipher is sync\n", __FUNCTION__, algo);
-+ }
-+ if (!(*swd)->sw_tfm || IS_ERR((*swd)->sw_tfm)) {
-+ int err;
-+ dprintk("cryptosoft: crypto_alloc_blkcipher failed(%s, 0x%x)\n",
-+ algo,mode);
-+ err = IS_ERR((*swd)->sw_tfm) ? -(PTR_ERR((*swd)->sw_tfm)) : EINVAL;
-+ (*swd)->sw_tfm = NULL; /* ensure NULL */
-+ swcr_freesession(NULL, i);
-+ return err;
-+ }
-+
-+ if (debug) {
-+ dprintk("%s key:cri->cri_klen=%d,(cri->cri_klen + 7)/8=%d",
-+ __FUNCTION__, cri->cri_klen, (cri->cri_klen + 7) / 8);
-+ for (i = 0; i < (cri->cri_klen + 7) / 8; i++)
-+ dprintk("%s0x%x", (i % 8) ? " " : "\n ",
-+ cri->cri_key[i] & 0xff);
-+ dprintk("\n");
-+ }
-+ if ((*swd)->sw_type & SW_TYPE_ASYNC) {
-+ /* OCF doesn't enforce keys */
-+ crypto_ablkcipher_set_flags(
-+ __crypto_ablkcipher_cast((*swd)->sw_tfm),
-+ CRYPTO_TFM_REQ_WEAK_KEY);
-+ error = crypto_ablkcipher_setkey(
-+ __crypto_ablkcipher_cast((*swd)->sw_tfm),
-+ cri->cri_key, (cri->cri_klen + 7) / 8);
-+ } else {
-+ /* OCF doesn't enforce keys */
-+ crypto_blkcipher_set_flags(
-+ crypto_blkcipher_cast((*swd)->sw_tfm),
-+ CRYPTO_TFM_REQ_WEAK_KEY);
-+ error = crypto_blkcipher_setkey(
-+ crypto_blkcipher_cast((*swd)->sw_tfm),
-+ cri->cri_key, (cri->cri_klen + 7) / 8);
-+ }
-+ if (error) {
-+ printk("cryptosoft: setkey failed %d (crt_flags=0x%x)\n", error,
-+ (*swd)->sw_tfm->crt_flags);
-+ swcr_freesession(NULL, i);
-+ return error;
-+ }
-+ } else if ((*swd)->sw_type & (SW_TYPE_HMAC | SW_TYPE_HASH)) {
-+ dprintk("%s crypto_alloc_*hash(%s, 0x%x)\n", __FUNCTION__,
-+ algo, mode);
-+
-+ /* try async first */
-+ (*swd)->sw_tfm = swcr_no_ahash ? NULL :
-+ crypto_ahash_tfm(crypto_alloc_ahash(algo, 0, 0));
-+ if ((*swd)->sw_tfm) {
-+ dprintk("%s %s hash is async\n", __FUNCTION__, algo);
-+ (*swd)->sw_type |= SW_TYPE_ASYNC;
-+ } else {
-+ dprintk("%s %s hash is sync\n", __FUNCTION__, algo);
-+ (*swd)->sw_tfm = crypto_hash_tfm(
-+ crypto_alloc_hash(algo, 0, CRYPTO_ALG_ASYNC));
-+ }
-+
-+ if (!(*swd)->sw_tfm) {
-+ dprintk("cryptosoft: crypto_alloc_hash failed(%s,0x%x)\n",
-+ algo, mode);
-+ swcr_freesession(NULL, i);
-+ return EINVAL;
-+ }
-+
-+ (*swd)->u.hmac.sw_klen = (cri->cri_klen + 7) / 8;
-+ (*swd)->u.hmac.sw_key = (char *)kmalloc((*swd)->u.hmac.sw_klen,
-+ SLAB_ATOMIC);
-+ if ((*swd)->u.hmac.sw_key == NULL) {
-+ swcr_freesession(NULL, i);
-+ dprintk("%s,%d: ENOBUFS\n", __FILE__, __LINE__);
-+ return ENOBUFS;
-+ }
-+ memcpy((*swd)->u.hmac.sw_key, cri->cri_key, (*swd)->u.hmac.sw_klen);
-+ if (cri->cri_mlen) {
-+ (*swd)->u.hmac.sw_mlen = cri->cri_mlen;
-+ } else if ((*swd)->sw_type & SW_TYPE_ASYNC) {
-+ (*swd)->u.hmac.sw_mlen = crypto_ahash_digestsize(
-+ __crypto_ahash_cast((*swd)->sw_tfm));
-+ } else {
-+ (*swd)->u.hmac.sw_mlen = crypto_hash_digestsize(
-+ crypto_hash_cast((*swd)->sw_tfm));
-+ }
-+ } else if ((*swd)->sw_type & SW_TYPE_COMP) {
-+ (*swd)->sw_tfm = crypto_comp_tfm(
-+ crypto_alloc_comp(algo, 0, CRYPTO_ALG_ASYNC));
-+ if (!(*swd)->sw_tfm) {
-+ dprintk("cryptosoft: crypto_alloc_comp failed(%s,0x%x)\n",
-+ algo, mode);
-+ swcr_freesession(NULL, i);
-+ return EINVAL;
-+ }
-+ (*swd)->u.sw_comp_buf = kmalloc(CRYPTO_MAX_DATA_LEN, SLAB_ATOMIC);
-+ if ((*swd)->u.sw_comp_buf == NULL) {
-+ swcr_freesession(NULL, i);
-+ dprintk("%s,%d: ENOBUFS\n", __FILE__, __LINE__);
-+ return ENOBUFS;
-+ }
-+ } else {
-+ printk("cryptosoft: Unhandled sw_type %d\n", (*swd)->sw_type);
-+ swcr_freesession(NULL, i);
-+ return EINVAL;
-+ }
-+
-+ cri = cri->cri_next;
-+ swd = &((*swd)->sw_next);
-+ }
-+ return 0;
-+}
-+
-+/*
-+ * Free a session.
-+ */
-+static int
-+swcr_freesession(device_t dev, u_int64_t tid)
-+{
-+ struct swcr_data *swd;
-+ u_int32_t sid = CRYPTO_SESID2LID(tid);
-+
-+ dprintk("%s()\n", __FUNCTION__);
-+ if (sid > swcr_sesnum || swcr_sessions == NULL ||
-+ swcr_sessions[sid] == NULL) {
-+ dprintk("%s,%d: EINVAL\n", __FILE__, __LINE__);
-+ return(EINVAL);
-+ }
-+
-+ /* Silently accept and return */
-+ if (sid == 0)
-+ return(0);
-+
-+ while ((swd = swcr_sessions[sid]) != NULL) {
-+ swcr_sessions[sid] = swd->sw_next;
-+ if (swd->sw_tfm) {
-+ switch (swd->sw_type & SW_TYPE_ALG_AMASK) {
-+#ifdef HAVE_AHASH
-+ case SW_TYPE_AHMAC:
-+ case SW_TYPE_AHASH:
-+ crypto_free_ahash(__crypto_ahash_cast(swd->sw_tfm));
-+ break;
-+#endif
-+#ifdef HAVE_ABLKCIPHER
-+ case SW_TYPE_ABLKCIPHER:
-+ crypto_free_ablkcipher(__crypto_ablkcipher_cast(swd->sw_tfm));
-+ break;
-+#endif
-+ case SW_TYPE_BLKCIPHER:
-+ crypto_free_blkcipher(crypto_blkcipher_cast(swd->sw_tfm));
-+ break;
-+ case SW_TYPE_HMAC:
-+ case SW_TYPE_HASH:
-+ crypto_free_hash(crypto_hash_cast(swd->sw_tfm));
-+ break;
-+ case SW_TYPE_COMP:
-+ if (in_interrupt())
-+ execute_later((void (*)(void *))crypto_free_comp, (void *)crypto_comp_cast(swd->sw_tfm));
-+ else
-+ crypto_free_comp(crypto_comp_cast(swd->sw_tfm));
-+ break;
-+ default:
-+ crypto_free_tfm(swd->sw_tfm);
-+ break;
-+ }
-+ swd->sw_tfm = NULL;
-+ }
-+ if (swd->sw_type & SW_TYPE_COMP) {
-+ if (swd->u.sw_comp_buf)
-+ kfree(swd->u.sw_comp_buf);
-+ } else {
-+ if (swd->u.hmac.sw_key)
-+ kfree(swd->u.hmac.sw_key);
-+ }
-+ kfree(swd);
-+ }
-+ return 0;
-+}
-+
-+static void swcr_process_req_complete(struct swcr_req *req)
-+{
-+ dprintk("%s()\n", __FUNCTION__);
-+
-+ if (req->sw->sw_type & SW_TYPE_INUSE) {
-+ unsigned long flags;
-+ spin_lock_irqsave(&req->sw->sw_tfm_lock, flags);
-+ req->sw->sw_type &= ~SW_TYPE_INUSE;
-+ spin_unlock_irqrestore(&req->sw->sw_tfm_lock, flags);
-+ }
-+
-+ if (req->crp->crp_etype)
-+ goto done;
-+
-+ switch (req->sw->sw_type & SW_TYPE_ALG_AMASK) {
-+#if defined(HAVE_AHASH)
-+ case SW_TYPE_AHMAC:
-+ case SW_TYPE_AHASH:
-+ crypto_copyback(req->crp->crp_flags, req->crp->crp_buf,
-+ req->crd->crd_inject, req->sw->u.hmac.sw_mlen, req->result);
-+ ahash_request_free(req->crypto_req);
-+ break;
-+#endif
-+#if defined(HAVE_ABLKCIPHER)
-+ case SW_TYPE_ABLKCIPHER:
-+ ablkcipher_request_free(req->crypto_req);
-+ break;
-+#endif
-+ case SW_TYPE_CIPHER:
-+ case SW_TYPE_HMAC:
-+ case SW_TYPE_HASH:
-+ case SW_TYPE_COMP:
-+ case SW_TYPE_BLKCIPHER:
-+ break;
-+ default:
-+ req->crp->crp_etype = EINVAL;
-+ goto done;
-+ }
-+
-+ req->crd = req->crd->crd_next;
-+ if (req->crd) {
-+ swcr_process_req(req);
-+ return;
-+ }
-+
-+done:
-+ dprintk("%s crypto_done %p\n", __FUNCTION__, req);
-+ crypto_done(req->crp);
-+ kmem_cache_free(swcr_req_cache, req);
-+}
-+
-+#if defined(HAVE_ABLKCIPHER) || defined(HAVE_AHASH)
-+static void swcr_process_callback(struct crypto_async_request *creq, int err)
-+{
-+ struct swcr_req *req = creq->data;
-+
-+ dprintk("%s()\n", __FUNCTION__);
-+ if (err) {
-+ if (err == -EINPROGRESS)
-+ return;
-+ dprintk("%s() fail %d\n", __FUNCTION__, -err);
-+ req->crp->crp_etype = -err;
-+ }
-+
-+ swcr_process_req_complete(req);
-+}
-+#endif /* defined(HAVE_ABLKCIPHER) || defined(HAVE_AHASH) */
-+
-+
-+static void swcr_process_req(struct swcr_req *req)
-+{
-+ struct swcr_data *sw;
-+ struct cryptop *crp = req->crp;
-+ struct cryptodesc *crd = req->crd;
-+ struct sk_buff *skb = (struct sk_buff *) crp->crp_buf;
-+ struct uio *uiop = (struct uio *) crp->crp_buf;
-+ int sg_num, sg_len, skip;
-+
-+ dprintk("%s()\n", __FUNCTION__);
-+
-+ /*
-+ * Find the crypto context.
-+ *
-+ * XXX Note that the logic here prevents us from having
-+ * XXX the same algorithm multiple times in a session
-+ * XXX (or rather, we can but it won't give us the right
-+ * XXX results). To do that, we'd need some way of differentiating
-+ * XXX between the various instances of an algorithm (so we can
-+ * XXX locate the correct crypto context).
-+ */
-+ for (sw = req->sw_head; sw && sw->sw_alg != crd->crd_alg; sw = sw->sw_next)
-+ ;
-+
-+ /* No such context ? */
-+ if (sw == NULL) {
-+ crp->crp_etype = EINVAL;
-+ dprintk("%s,%d: EINVAL\n", __FILE__, __LINE__);
-+ goto done;
-+ }
-+
-+ /*
-+ * for some types we need to ensure only one user as info is stored in
-+ * the tfm during an operation that can get corrupted
-+ */
-+ switch (sw->sw_type & SW_TYPE_ALG_AMASK) {
-+#ifdef HAVE_AHASH
-+ case SW_TYPE_AHMAC:
-+ case SW_TYPE_AHASH:
-+#endif
-+ case SW_TYPE_HMAC:
-+ case SW_TYPE_HASH: {
-+ unsigned long flags;
-+ spin_lock_irqsave(&sw->sw_tfm_lock, flags);
-+ if (sw->sw_type & SW_TYPE_INUSE) {
-+ spin_unlock_irqrestore(&sw->sw_tfm_lock, flags);
-+ execute_later((void (*)(void *))swcr_process_req, (void *)req);
-+ return;
-+ }
-+ sw->sw_type |= SW_TYPE_INUSE;
-+ spin_unlock_irqrestore(&sw->sw_tfm_lock, flags);
-+ } break;
-+ }
-+
-+ req->sw = sw;
-+ skip = crd->crd_skip;
-+
-+ /*
-+ * setup the SG list skip from the start of the buffer
-+ */
-+ memset(req->sg, 0, sizeof(req->sg));
-+ sg_init_table(req->sg, SCATTERLIST_MAX);
-+ if (crp->crp_flags & CRYPTO_F_SKBUF) {
-+ int i, len;
-+
-+ sg_num = 0;
-+ sg_len = 0;
-+
-+ if (skip < skb_headlen(skb)) {
-+ len = skb_headlen(skb) - skip;
-+ if (len + sg_len > crd->crd_len)
-+ len = crd->crd_len - sg_len;
-+ sg_set_page(&req->sg[sg_num],
-+ virt_to_page(skb->data + skip), len,
-+ offset_in_page(skb->data + skip));
-+ sg_len += len;
-+ sg_num++;
-+ skip = 0;
-+ } else
-+ skip -= skb_headlen(skb);
-+
-+ for (i = 0; sg_len < crd->crd_len &&
-+ i < skb_shinfo(skb)->nr_frags &&
-+ sg_num < SCATTERLIST_MAX; i++) {
-+ if (skip < skb_shinfo(skb)->frags[i].size) {
-+ len = skb_shinfo(skb)->frags[i].size - skip;
-+ if (len + sg_len > crd->crd_len)
-+ len = crd->crd_len - sg_len;
-+ sg_set_page(&req->sg[sg_num],
-+ skb_frag_page(&skb_shinfo(skb)->frags[i]),
-+ len,
-+ skb_shinfo(skb)->frags[i].page_offset + skip);
-+ sg_len += len;
-+ sg_num++;
-+ skip = 0;
-+ } else
-+ skip -= skb_shinfo(skb)->frags[i].size;
-+ }
-+ } else if (crp->crp_flags & CRYPTO_F_IOV) {
-+ int len;
-+
-+ sg_len = 0;
-+ for (sg_num = 0; sg_len < crd->crd_len &&
-+ sg_num < uiop->uio_iovcnt &&
-+ sg_num < SCATTERLIST_MAX; sg_num++) {
-+ if (skip <= uiop->uio_iov[sg_num].iov_len) {
-+ len = uiop->uio_iov[sg_num].iov_len - skip;
-+ if (len + sg_len > crd->crd_len)
-+ len = crd->crd_len - sg_len;
-+ sg_set_page(&req->sg[sg_num],
-+ virt_to_page(uiop->uio_iov[sg_num].iov_base+skip),
-+ len,
-+ offset_in_page(uiop->uio_iov[sg_num].iov_base+skip));
-+ sg_len += len;
-+ skip = 0;
-+ } else
-+ skip -= uiop->uio_iov[sg_num].iov_len;
-+ }
-+ } else {
-+ sg_len = (crp->crp_ilen - skip);
-+ if (sg_len > crd->crd_len)
-+ sg_len = crd->crd_len;
-+ sg_set_page(&req->sg[0], virt_to_page(crp->crp_buf + skip),
-+ sg_len, offset_in_page(crp->crp_buf + skip));
-+ sg_num = 1;
-+ }
-+ if (sg_num > 0)
-+ sg_mark_end(&req->sg[sg_num-1]);
-+
-+ switch (sw->sw_type & SW_TYPE_ALG_AMASK) {
-+
-+#ifdef HAVE_AHASH
-+ case SW_TYPE_AHMAC:
-+ case SW_TYPE_AHASH:
-+ {
-+ int ret;
-+
-+ /* check we have room for the result */
-+ if (crp->crp_ilen - crd->crd_inject < sw->u.hmac.sw_mlen) {
-+ dprintk("cryptosoft: EINVAL crp_ilen=%d, len=%d, inject=%d "
-+ "digestsize=%d\n", crp->crp_ilen, crd->crd_skip + sg_len,
-+ crd->crd_inject, sw->u.hmac.sw_mlen);
-+ crp->crp_etype = EINVAL;
-+ goto done;
-+ }
-+
-+ req->crypto_req =
-+ ahash_request_alloc(__crypto_ahash_cast(sw->sw_tfm),GFP_ATOMIC);
-+ if (!req->crypto_req) {
-+ crp->crp_etype = ENOMEM;
-+ dprintk("%s,%d: ENOMEM ahash_request_alloc", __FILE__, __LINE__);
-+ goto done;
-+ }
-+
-+ ahash_request_set_callback(req->crypto_req,
-+ CRYPTO_TFM_REQ_MAY_BACKLOG, swcr_process_callback, req);
-+
-+ memset(req->result, 0, sizeof(req->result));
-+
-+ if (sw->sw_type & SW_TYPE_AHMAC)
-+ crypto_ahash_setkey(__crypto_ahash_cast(sw->sw_tfm),
-+ sw->u.hmac.sw_key, sw->u.hmac.sw_klen);
-+ ahash_request_set_crypt(req->crypto_req, req->sg, req->result, sg_len);
-+ ret = crypto_ahash_digest(req->crypto_req);
-+ switch (ret) {
-+ case -EINPROGRESS:
-+ case -EBUSY:
-+ return;
-+ default:
-+ case 0:
-+ dprintk("hash OP %s %d\n", ret ? "failed" : "success", ret);
-+ crp->crp_etype = ret;
-+ goto done;
-+ }
-+ } break;
-+#endif /* HAVE_AHASH */
-+
-+#ifdef HAVE_ABLKCIPHER
-+ case SW_TYPE_ABLKCIPHER: {
-+ int ret;
-+ unsigned char *ivp = req->iv;
-+ int ivsize =
-+ crypto_ablkcipher_ivsize(__crypto_ablkcipher_cast(sw->sw_tfm));
-+
-+ if (sg_len < crypto_ablkcipher_blocksize(
-+ __crypto_ablkcipher_cast(sw->sw_tfm))) {
-+ crp->crp_etype = EINVAL;
-+ dprintk("%s,%d: EINVAL len %d < %d\n", __FILE__, __LINE__,
-+ sg_len, crypto_ablkcipher_blocksize(
-+ __crypto_ablkcipher_cast(sw->sw_tfm)));
-+ goto done;
-+ }
-+
-+ if (ivsize > sizeof(req->iv)) {
-+ crp->crp_etype = EINVAL;
-+ dprintk("%s,%d: EINVAL\n", __FILE__, __LINE__);
-+ goto done;
-+ }
-+
-+ req->crypto_req = ablkcipher_request_alloc(
-+ __crypto_ablkcipher_cast(sw->sw_tfm), GFP_ATOMIC);
-+ if (!req->crypto_req) {
-+ crp->crp_etype = ENOMEM;
-+ dprintk("%s,%d: ENOMEM ablkcipher_request_alloc",
-+ __FILE__, __LINE__);
-+ goto done;
-+ }
-+
-+ ablkcipher_request_set_callback(req->crypto_req,
-+ CRYPTO_TFM_REQ_MAY_BACKLOG, swcr_process_callback, req);
-+
-+ if (crd->crd_flags & CRD_F_KEY_EXPLICIT) {
-+ int i, error;
-+
-+ if (debug) {
-+ dprintk("%s key:", __FUNCTION__);
-+ for (i = 0; i < (crd->crd_klen + 7) / 8; i++)
-+ dprintk("%s0x%x", (i % 8) ? " " : "\n ",
-+ crd->crd_key[i] & 0xff);
-+ dprintk("\n");
-+ }
-+ /* OCF doesn't enforce keys */
-+ crypto_ablkcipher_set_flags(__crypto_ablkcipher_cast(sw->sw_tfm),
-+ CRYPTO_TFM_REQ_WEAK_KEY);
-+ error = crypto_ablkcipher_setkey(
-+ __crypto_ablkcipher_cast(sw->sw_tfm), crd->crd_key,
-+ (crd->crd_klen + 7) / 8);
-+ if (error) {
-+ dprintk("cryptosoft: setkey failed %d (crt_flags=0x%x)\n",
-+ error, sw->sw_tfm->crt_flags);
-+ crp->crp_etype = -error;
-+ }
-+ }
-+
-+ if (crd->crd_flags & CRD_F_ENCRYPT) { /* encrypt */
-+
-+ if (crd->crd_flags & CRD_F_IV_EXPLICIT)
-+ ivp = crd->crd_iv;
-+ else
-+ get_random_bytes(ivp, ivsize);
-+ /*
-+ * do we have to copy the IV back to the buffer ?
-+ */
-+ if ((crd->crd_flags & CRD_F_IV_PRESENT) == 0) {
-+ crypto_copyback(crp->crp_flags, crp->crp_buf,
-+ crd->crd_inject, ivsize, (caddr_t)ivp);
-+ }
-+ ablkcipher_request_set_crypt(req->crypto_req, req->sg, req->sg,
-+ sg_len, ivp);
-+ ret = crypto_ablkcipher_encrypt(req->crypto_req);
-+
-+ } else { /*decrypt */
-+
-+ if (crd->crd_flags & CRD_F_IV_EXPLICIT)
-+ ivp = crd->crd_iv;
-+ else
-+ crypto_copydata(crp->crp_flags, crp->crp_buf,
-+ crd->crd_inject, ivsize, (caddr_t)ivp);
-+ ablkcipher_request_set_crypt(req->crypto_req, req->sg, req->sg,
-+ sg_len, ivp);
-+ ret = crypto_ablkcipher_decrypt(req->crypto_req);
-+ }
-+
-+ switch (ret) {
-+ case -EINPROGRESS:
-+ case -EBUSY:
-+ return;
-+ default:
-+ case 0:
-+ dprintk("crypto OP %s %d\n", ret ? "failed" : "success", ret);
-+ crp->crp_etype = ret;
-+ goto done;
-+ }
-+ } break;
-+#endif /* HAVE_ABLKCIPHER */
-+
-+ case SW_TYPE_BLKCIPHER: {
-+ unsigned char iv[EALG_MAX_BLOCK_LEN];
-+ unsigned char *ivp = iv;
-+ struct blkcipher_desc desc;
-+ int ivsize = crypto_blkcipher_ivsize(crypto_blkcipher_cast(sw->sw_tfm));
-+
-+ if (sg_len < crypto_blkcipher_blocksize(
-+ crypto_blkcipher_cast(sw->sw_tfm))) {
-+ crp->crp_etype = EINVAL;
-+ dprintk("%s,%d: EINVAL len %d < %d\n", __FILE__, __LINE__,
-+ sg_len, crypto_blkcipher_blocksize(
-+ crypto_blkcipher_cast(sw->sw_tfm)));
-+ goto done;
-+ }
-+
-+ if (ivsize > sizeof(iv)) {
-+ crp->crp_etype = EINVAL;
-+ dprintk("%s,%d: EINVAL\n", __FILE__, __LINE__);
-+ goto done;
-+ }
-+
-+ if (crd->crd_flags & CRD_F_KEY_EXPLICIT) {
-+ int i, error;
-+
-+ if (debug) {
-+ dprintk("%s key:", __FUNCTION__);
-+ for (i = 0; i < (crd->crd_klen + 7) / 8; i++)
-+ dprintk("%s0x%x", (i % 8) ? " " : "\n ",
-+ crd->crd_key[i] & 0xff);
-+ dprintk("\n");
-+ }
-+ /* OCF doesn't enforce keys */
-+ crypto_blkcipher_set_flags(crypto_blkcipher_cast(sw->sw_tfm),
-+ CRYPTO_TFM_REQ_WEAK_KEY);
-+ error = crypto_blkcipher_setkey(
-+ crypto_blkcipher_cast(sw->sw_tfm), crd->crd_key,
-+ (crd->crd_klen + 7) / 8);
-+ if (error) {
-+ dprintk("cryptosoft: setkey failed %d (crt_flags=0x%x)\n",
-+ error, sw->sw_tfm->crt_flags);
-+ crp->crp_etype = -error;
-+ }
-+ }
-+
-+ memset(&desc, 0, sizeof(desc));
-+ desc.tfm = crypto_blkcipher_cast(sw->sw_tfm);
-+
-+ if (crd->crd_flags & CRD_F_ENCRYPT) { /* encrypt */
-+
-+ if (crd->crd_flags & CRD_F_IV_EXPLICIT) {
-+ ivp = crd->crd_iv;
-+ } else {
-+ get_random_bytes(ivp, ivsize);
-+ }
-+ /*
-+ * do we have to copy the IV back to the buffer ?
-+ */
-+ if ((crd->crd_flags & CRD_F_IV_PRESENT) == 0) {
-+ crypto_copyback(crp->crp_flags, crp->crp_buf,
-+ crd->crd_inject, ivsize, (caddr_t)ivp);
-+ }
-+ desc.info = ivp;
-+ crypto_blkcipher_encrypt_iv(&desc, req->sg, req->sg, sg_len);
-+
-+ } else { /*decrypt */
-+
-+ if (crd->crd_flags & CRD_F_IV_EXPLICIT) {
-+ ivp = crd->crd_iv;
-+ } else {
-+ crypto_copydata(crp->crp_flags, crp->crp_buf,
-+ crd->crd_inject, ivsize, (caddr_t)ivp);
-+ }
-+ desc.info = ivp;
-+ crypto_blkcipher_decrypt_iv(&desc, req->sg, req->sg, sg_len);
-+ }
-+ } break;
-+
-+ case SW_TYPE_HMAC:
-+ case SW_TYPE_HASH:
-+ {
-+ char result[HASH_MAX_LEN];
-+ struct hash_desc desc;
-+
-+ /* check we have room for the result */
-+ if (crp->crp_ilen - crd->crd_inject < sw->u.hmac.sw_mlen) {
-+ dprintk("cryptosoft: EINVAL crp_ilen=%d, len=%d, inject=%d "
-+ "digestsize=%d\n", crp->crp_ilen, crd->crd_skip + sg_len,
-+ crd->crd_inject, sw->u.hmac.sw_mlen);
-+ crp->crp_etype = EINVAL;
-+ goto done;
-+ }
-+
-+ memset(&desc, 0, sizeof(desc));
-+ desc.tfm = crypto_hash_cast(sw->sw_tfm);
-+
-+ memset(result, 0, sizeof(result));
-+
-+ if (sw->sw_type & SW_TYPE_HMAC) {
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
-+ crypto_hmac(sw->sw_tfm, sw->u.hmac.sw_key, &sw->u.hmac.sw_klen,
-+ req->sg, sg_num, result);
-+#else
-+ crypto_hash_setkey(desc.tfm, sw->u.hmac.sw_key,
-+ sw->u.hmac.sw_klen);
-+ crypto_hash_digest(&desc, req->sg, sg_len, result);
-+#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19) */
-+
-+ } else { /* SW_TYPE_HASH */
-+ crypto_hash_digest(&desc, req->sg, sg_len, result);
-+ }
-+
-+ crypto_copyback(crp->crp_flags, crp->crp_buf,
-+ crd->crd_inject, sw->u.hmac.sw_mlen, result);
-+ }
-+ break;
-+
-+ case SW_TYPE_COMP: {
-+ void *ibuf = NULL;
-+ void *obuf = sw->u.sw_comp_buf;
-+ int ilen = sg_len, olen = CRYPTO_MAX_DATA_LEN;
-+ int ret = 0;
-+
-+ /*
-+ * we need to use an additional copy if there is more than one
-+ * input chunk since the kernel comp routines do not handle
-+ * SG yet. Otherwise we just use the input buffer as is.
-+ * Rather than allocate another buffer we just split the tmp
-+ * buffer we already have.
-+ * Perhaps we should just use zlib directly ?
-+ */
-+ if (sg_num > 1) {
-+ int blk;
-+
-+ ibuf = obuf;
-+ for (blk = 0; blk < sg_num; blk++) {
-+ memcpy(obuf, sg_virt(&req->sg[blk]),
-+ req->sg[blk].length);
-+ obuf += req->sg[blk].length;
-+ }
-+ olen -= sg_len;
-+ } else
-+ ibuf = sg_virt(&req->sg[0]);
-+
-+ if (crd->crd_flags & CRD_F_ENCRYPT) { /* compress */
-+ ret = crypto_comp_compress(crypto_comp_cast(sw->sw_tfm),
-+ ibuf, ilen, obuf, &olen);
-+ if (!ret && olen > crd->crd_len) {
-+ dprintk("cryptosoft: ERANGE compress %d into %d\n",
-+ crd->crd_len, olen);
-+ if (swcr_fail_if_compression_grows)
-+ ret = ERANGE;
-+ }
-+ } else { /* decompress */
-+ ret = crypto_comp_decompress(crypto_comp_cast(sw->sw_tfm),
-+ ibuf, ilen, obuf, &olen);
-+ if (!ret && (olen + crd->crd_inject) > crp->crp_olen) {
-+ dprintk("cryptosoft: ETOOSMALL decompress %d into %d, "
-+ "space for %d,at offset %d\n",
-+ crd->crd_len, olen, crp->crp_olen, crd->crd_inject);
-+ ret = ETOOSMALL;
-+ }
-+ }
-+ if (ret)
-+ dprintk("%s,%d: ret = %d\n", __FILE__, __LINE__, ret);
-+
-+ /*
-+ * on success copy result back,
-+ * linux crpyto API returns -errno, we need to fix that
-+ */
-+ crp->crp_etype = ret < 0 ? -ret : ret;
-+ if (ret == 0) {
-+ /* copy back the result and return it's size */
-+ crypto_copyback(crp->crp_flags, crp->crp_buf,
-+ crd->crd_inject, olen, obuf);
-+ crp->crp_olen = olen;
-+ }
-+ } break;
-+
-+ default:
-+ /* Unknown/unsupported algorithm */
-+ dprintk("%s,%d: EINVAL\n", __FILE__, __LINE__);
-+ crp->crp_etype = EINVAL;
-+ goto done;
-+ }
-+
-+done:
-+ swcr_process_req_complete(req);
-+}
-+
-+
-+/*
-+ * Process a crypto request.
-+ */
-+static int
-+swcr_process(device_t dev, struct cryptop *crp, int hint)
-+{
-+ struct swcr_req *req = NULL;
-+ u_int32_t lid;
-+
-+ dprintk("%s()\n", __FUNCTION__);
-+ /* Sanity check */
-+ if (crp == NULL) {
-+ dprintk("%s,%d: EINVAL\n", __FILE__, __LINE__);
-+ return EINVAL;
-+ }
-+
-+ crp->crp_etype = 0;
-+
-+ if (crp->crp_desc == NULL || crp->crp_buf == NULL) {
-+ dprintk("%s,%d: EINVAL\n", __FILE__, __LINE__);
-+ crp->crp_etype = EINVAL;
-+ goto done;
-+ }
-+
-+ lid = crp->crp_sid & 0xffffffff;
-+ if (lid >= swcr_sesnum || lid == 0 || swcr_sessions == NULL ||
-+ swcr_sessions[lid] == NULL) {
-+ crp->crp_etype = ENOENT;
-+ dprintk("%s,%d: ENOENT\n", __FILE__, __LINE__);
-+ goto done;
-+ }
-+
-+ /*
-+ * do some error checking outside of the loop for SKB and IOV processing
-+ * this leaves us with valid skb or uiop pointers for later
-+ */
-+ if (crp->crp_flags & CRYPTO_F_SKBUF) {
-+ struct sk_buff *skb = (struct sk_buff *) crp->crp_buf;
-+ if (skb_shinfo(skb)->nr_frags >= SCATTERLIST_MAX) {
-+ printk("%s,%d: %d nr_frags > SCATTERLIST_MAX", __FILE__, __LINE__,
-+ skb_shinfo(skb)->nr_frags);
-+ goto done;
-+ }
-+ } else if (crp->crp_flags & CRYPTO_F_IOV) {
-+ struct uio *uiop = (struct uio *) crp->crp_buf;
-+ if (uiop->uio_iovcnt > SCATTERLIST_MAX) {
-+ printk("%s,%d: %d uio_iovcnt > SCATTERLIST_MAX", __FILE__, __LINE__,
-+ uiop->uio_iovcnt);
-+ goto done;
-+ }
-+ }
-+
-+ /*
-+ * setup a new request ready for queuing
-+ */
-+ req = kmem_cache_alloc(swcr_req_cache, SLAB_ATOMIC);
-+ if (req == NULL) {
-+ dprintk("%s,%d: ENOMEM\n", __FILE__, __LINE__);
-+ crp->crp_etype = ENOMEM;
-+ goto done;
-+ }
-+ memset(req, 0, sizeof(*req));
-+
-+ req->sw_head = swcr_sessions[lid];
-+ req->crp = crp;
-+ req->crd = crp->crp_desc;
-+
-+ swcr_process_req(req);
-+ return 0;
-+
-+done:
-+ crypto_done(crp);
-+ if (req)
-+ kmem_cache_free(swcr_req_cache, req);
-+ return 0;
-+}
-+
-+
-+static int
-+cryptosoft_init(void)
-+{
-+ int i, sw_type, mode;
-+ char *algo;
-+
-+ dprintk("%s(%p)\n", __FUNCTION__, cryptosoft_init);
-+
-+ swcr_req_cache = kmem_cache_create("cryptosoft_req",
-+ sizeof(struct swcr_req), 0, SLAB_HWCACHE_ALIGN, NULL
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23)
-+ , NULL
-+#endif
-+ );
-+ if (!swcr_req_cache) {
-+ printk("cryptosoft: failed to create request cache\n");
-+ return -ENOENT;
-+ }
-+
-+ softc_device_init(&swcr_softc, "cryptosoft", 0, swcr_methods);
-+
-+ swcr_id = crypto_get_driverid(softc_get_device(&swcr_softc),
-+ CRYPTOCAP_F_SOFTWARE | CRYPTOCAP_F_SYNC);
-+ if (swcr_id < 0) {
-+ printk("cryptosoft: Software crypto device cannot initialize!");
-+ return -ENODEV;
-+ }
-+
-+#define REGISTER(alg) \
-+ crypto_register(swcr_id, alg, 0,0)
-+
-+ for (i = 0; i < sizeof(crypto_details)/sizeof(crypto_details[0]); i++) {
-+ int found;
-+
-+ algo = crypto_details[i].alg_name;
-+ if (!algo || !*algo) {
-+ dprintk("%s:Algorithm %d not supported\n", __FUNCTION__, i);
-+ continue;
-+ }
-+
-+ mode = crypto_details[i].mode;
-+ sw_type = crypto_details[i].sw_type;
-+
-+ found = 0;
-+ switch (sw_type & SW_TYPE_ALG_MASK) {
-+ case SW_TYPE_CIPHER:
-+ found = crypto_has_cipher(algo, 0, CRYPTO_ALG_ASYNC);
-+ break;
-+ case SW_TYPE_HMAC:
-+ found = crypto_has_hash(algo, 0, swcr_no_ahash?CRYPTO_ALG_ASYNC:0);
-+ break;
-+ case SW_TYPE_HASH:
-+ found = crypto_has_hash(algo, 0, swcr_no_ahash?CRYPTO_ALG_ASYNC:0);
-+ break;
-+ case SW_TYPE_COMP:
-+ found = crypto_has_comp(algo, 0, CRYPTO_ALG_ASYNC);
-+ break;
-+ case SW_TYPE_BLKCIPHER:
-+ found = crypto_has_blkcipher(algo, 0, CRYPTO_ALG_ASYNC);
-+ if (!found && !swcr_no_ablk)
-+ found = crypto_has_ablkcipher(algo, 0, 0);
-+ break;
-+ }
-+ if (found) {
-+ REGISTER(i);
-+ } else {
-+ dprintk("%s:Algorithm Type %d not supported (algorithm %d:'%s')\n",
-+ __FUNCTION__, sw_type, i, algo);
-+ }
-+ }
-+ return 0;
-+}
-+
-+static void
-+cryptosoft_exit(void)
-+{
-+ dprintk("%s()\n", __FUNCTION__);
-+ crypto_unregister_all(swcr_id);
-+ swcr_id = -1;
-+ kmem_cache_destroy(swcr_req_cache);
-+}
-+
-+late_initcall(cryptosoft_init);
-+module_exit(cryptosoft_exit);
-+
-+MODULE_LICENSE("Dual BSD/GPL");
-+MODULE_AUTHOR("David McCullough <david_mccullough at mcafee.com>");
-+MODULE_DESCRIPTION("Cryptosoft (OCF module for kernel crypto)");
-diff --git a/crypto/ocf/ocf-bench.c b/crypto/ocf/ocf-bench.c
-new file mode 100644
-index 0000000..f3fe9d0
---- /dev/null
-+++ b/crypto/ocf/ocf-bench.c
-@@ -0,0 +1,514 @@
-+/*
-+ * A loadable module that benchmarks the OCF crypto speed from kernel space.
-+ *
-+ * Copyright (C) 2004-2010 David McCullough <david_mccullough at mcafee.com>
-+ *
-+ * LICENSE TERMS
-+ *
-+ * The free distribution and use of this software in both source and binary
-+ * form is allowed (with or without changes) provided that:
-+ *
-+ * 1. distributions of this source code include the above copyright
-+ * notice, this list of conditions and the following disclaimer;
-+ *
-+ * 2. distributions in binary form include the above copyright
-+ * notice, this list of conditions and the following disclaimer
-+ * in the documentation and/or other associated materials;
-+ *
-+ * 3. the copyright holder's name is not used to endorse products
-+ * built using this software without specific written permission.
-+ *
-+ * ALTERNATIVELY, provided that this notice is retained in full, this product
-+ * may be distributed under the terms of the GNU General Public License (GPL),
-+ * in which case the provisions of the GPL apply INSTEAD OF those given above.
-+ *
-+ * DISCLAIMER
-+ *
-+ * This software is provided 'as is' with no explicit or implied warranties
-+ * in respect of its properties, including, but not limited to, correctness
-+ * and/or fitness for purpose.
-+ */
-+
-+
-+#include <linux/version.h>
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,38) && !defined(AUTOCONF_INCLUDED)
-+#include <linux/config.h>
-+#endif
-+#include <linux/module.h>
-+#include <linux/init.h>
-+#include <linux/list.h>
-+#include <linux/slab.h>
-+#include <linux/wait.h>
-+#include <linux/sched.h>
-+#include <linux/spinlock.h>
-+#include <linux/interrupt.h>
-+#include <cryptodev.h>
-+
-+#ifdef I_HAVE_AN_XSCALE_WITH_INTEL_SDK
-+#define BENCH_IXP_ACCESS_LIB 1
-+#endif
-+#ifdef BENCH_IXP_ACCESS_LIB
-+#include <IxTypes.h>
-+#include <IxOsBuffMgt.h>
-+#include <IxNpeDl.h>
-+#include <IxCryptoAcc.h>
-+#include <IxQMgr.h>
-+#include <IxOsServices.h>
-+#include <IxOsCacheMMU.h>
-+#endif
-+
-+/*
-+ * support for access lib version 1.4
-+ */
-+#ifndef IX_MBUF_PRIV
-+#define IX_MBUF_PRIV(x) ((x)->priv)
-+#endif
-+
-+/*
-+ * the number of simultaneously active requests
-+ */
-+static int request_q_len = 40;
-+module_param(request_q_len, int, 0);
-+MODULE_PARM_DESC(request_q_len, "Number of outstanding requests");
-+
-+/*
-+ * how many requests we want to have processed
-+ */
-+static int request_num = 1024;
-+module_param(request_num, int, 0);
-+MODULE_PARM_DESC(request_num, "run for at least this many requests");
-+
-+/*
-+ * the size of each request
-+ */
-+static int request_size = 1488;
-+module_param(request_size, int, 0);
-+MODULE_PARM_DESC(request_size, "size of each request");
-+
-+/*
-+ * OCF batching of requests
-+ */
-+static int request_batch = 1;
-+module_param(request_batch, int, 0);
-+MODULE_PARM_DESC(request_batch, "enable OCF request batching");
-+
-+/*
-+ * OCF immediate callback on completion
-+ */
-+static int request_cbimm = 1;
-+module_param(request_cbimm, int, 0);
-+MODULE_PARM_DESC(request_cbimm, "enable OCF immediate callback on completion");
-+
-+/*
-+ * a structure for each request
-+ */
-+typedef struct {
-+ struct work_struct work;
-+#ifdef BENCH_IXP_ACCESS_LIB
-+ IX_MBUF mbuf;
-+#endif
-+ unsigned char *buffer;
-+} request_t;
-+
-+static request_t *requests;
-+
-+static spinlock_t ocfbench_counter_lock;
-+static int outstanding;
-+static int total;
-+
-+/*************************************************************************/
-+/*
-+ * OCF benchmark routines
-+ */
-+
-+static uint64_t ocf_cryptoid;
-+static unsigned long jstart, jstop;
-+
-+static int ocf_init(void);
-+static int ocf_cb(struct cryptop *crp);
-+static void ocf_request(void *arg);
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,20)
-+static void ocf_request_wq(struct work_struct *work);
-+#endif
-+
-+static int
-+ocf_init(void)
-+{
-+ int error;
-+ struct cryptoini crie, cria;
-+ struct cryptodesc crda, crde;
-+
-+ memset(&crie, 0, sizeof(crie));
-+ memset(&cria, 0, sizeof(cria));
-+ memset(&crde, 0, sizeof(crde));
-+ memset(&crda, 0, sizeof(crda));
-+
-+ cria.cri_alg = CRYPTO_SHA1_HMAC;
-+ cria.cri_klen = 20 * 8;
-+ cria.cri_key = "0123456789abcdefghij";
-+
-+ //crie.cri_alg = CRYPTO_3DES_CBC;
-+ crie.cri_alg = CRYPTO_AES_CBC;
-+ crie.cri_klen = 24 * 8;
-+ crie.cri_key = "0123456789abcdefghijklmn";
-+
-+ crie.cri_next = &cria;
-+
-+ error = crypto_newsession(&ocf_cryptoid, &crie,
-+ CRYPTOCAP_F_HARDWARE | CRYPTOCAP_F_SOFTWARE);
-+ if (error) {
-+ printk("crypto_newsession failed %d\n", error);
-+ return -1;
-+ }
-+ return 0;
-+}
-+
-+static int
-+ocf_cb(struct cryptop *crp)
-+{
-+ request_t *r = (request_t *) crp->crp_opaque;
-+ unsigned long flags;
-+
-+ if (crp->crp_etype)
-+ printk("Error in OCF processing: %d\n", crp->crp_etype);
-+ crypto_freereq(crp);
-+ crp = NULL;
-+
-+ /* do all requests but take at least 1 second */
-+ spin_lock_irqsave(&ocfbench_counter_lock, flags);
-+ total++;
-+ if (total > request_num && jstart + HZ < jiffies) {
-+ outstanding--;
-+ spin_unlock_irqrestore(&ocfbench_counter_lock, flags);
-+ return 0;
-+ }
-+ spin_unlock_irqrestore(&ocfbench_counter_lock, flags);
-+
-+ schedule_work(&r->work);
-+ return 0;
-+}
-+
-+
-+static void
-+ocf_request(void *arg)
-+{
-+ request_t *r = arg;
-+ struct cryptop *crp = crypto_getreq(2);
-+ struct cryptodesc *crde, *crda;
-+ unsigned long flags;
-+
-+ if (!crp) {
-+ spin_lock_irqsave(&ocfbench_counter_lock, flags);
-+ outstanding--;
-+ spin_unlock_irqrestore(&ocfbench_counter_lock, flags);
-+ return;
-+ }
-+
-+ crde = crp->crp_desc;
-+ crda = crde->crd_next;
-+
-+ crda->crd_skip = 0;
-+ crda->crd_flags = 0;
-+ crda->crd_len = request_size;
-+ crda->crd_inject = request_size;
-+ crda->crd_alg = CRYPTO_SHA1_HMAC;
-+ crda->crd_key = "0123456789abcdefghij";
-+ crda->crd_klen = 20 * 8;
-+
-+ crde->crd_skip = 0;
-+ crde->crd_flags = CRD_F_IV_EXPLICIT | CRD_F_ENCRYPT;
-+ crde->crd_len = request_size;
-+ crde->crd_inject = request_size;
-+ //crde->crd_alg = CRYPTO_3DES_CBC;
-+ crde->crd_alg = CRYPTO_AES_CBC;
-+ crde->crd_key = "0123456789abcdefghijklmn";
-+ crde->crd_klen = 24 * 8;
-+
-+ crp->crp_ilen = request_size + 64;
-+ crp->crp_flags = 0;
-+ if (request_batch)
-+ crp->crp_flags |= CRYPTO_F_BATCH;
-+ if (request_cbimm)
-+ crp->crp_flags |= CRYPTO_F_CBIMM;
-+ crp->crp_buf = (caddr_t) r->buffer;
-+ crp->crp_callback = ocf_cb;
-+ crp->crp_sid = ocf_cryptoid;
-+ crp->crp_opaque = (caddr_t) r;
-+ crypto_dispatch(crp);
-+}
-+
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,20)
-+static void
-+ocf_request_wq(struct work_struct *work)
-+{
-+ request_t *r = container_of(work, request_t, work);
-+ ocf_request(r);
-+}
-+#endif
-+
-+static void
-+ocf_done(void)
-+{
-+ crypto_freesession(ocf_cryptoid);
-+}
-+
-+/*************************************************************************/
-+#ifdef BENCH_IXP_ACCESS_LIB
-+/*************************************************************************/
-+/*
-+ * CryptoAcc benchmark routines
-+ */
-+
-+static IxCryptoAccCtx ixp_ctx;
-+static UINT32 ixp_ctx_id;
-+static IX_MBUF ixp_pri;
-+static IX_MBUF ixp_sec;
-+static int ixp_registered = 0;
-+
-+static void ixp_register_cb(UINT32 ctx_id, IX_MBUF *bufp,
-+ IxCryptoAccStatus status);
-+static void ixp_perform_cb(UINT32 ctx_id, IX_MBUF *sbufp, IX_MBUF *dbufp,
-+ IxCryptoAccStatus status);
-+static void ixp_request(void *arg);
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,20)
-+static void ixp_request_wq(struct work_struct *work);
-+#endif
-+
-+static int
-+ixp_init(void)
-+{
-+ IxCryptoAccStatus status;
-+
-+ ixp_ctx.cipherCtx.cipherAlgo = IX_CRYPTO_ACC_CIPHER_3DES;
-+ ixp_ctx.cipherCtx.cipherMode = IX_CRYPTO_ACC_MODE_CBC;
-+ ixp_ctx.cipherCtx.cipherKeyLen = 24;
-+ ixp_ctx.cipherCtx.cipherBlockLen = IX_CRYPTO_ACC_DES_BLOCK_64;
-+ ixp_ctx.cipherCtx.cipherInitialVectorLen = IX_CRYPTO_ACC_DES_IV_64;
-+ memcpy(ixp_ctx.cipherCtx.key.cipherKey, "0123456789abcdefghijklmn", 24);
-+
-+ ixp_ctx.authCtx.authAlgo = IX_CRYPTO_ACC_AUTH_SHA1;
-+ ixp_ctx.authCtx.authDigestLen = 12;
-+ ixp_ctx.authCtx.aadLen = 0;
-+ ixp_ctx.authCtx.authKeyLen = 20;
-+ memcpy(ixp_ctx.authCtx.key.authKey, "0123456789abcdefghij", 20);
-+
-+ ixp_ctx.useDifferentSrcAndDestMbufs = 0;
-+ ixp_ctx.operation = IX_CRYPTO_ACC_OP_ENCRYPT_AUTH ;
-+
-+ IX_MBUF_MLEN(&ixp_pri) = IX_MBUF_PKT_LEN(&ixp_pri) = 128;
-+ IX_MBUF_MDATA(&ixp_pri) = (unsigned char *) kmalloc(128, SLAB_ATOMIC);
-+ IX_MBUF_MLEN(&ixp_sec) = IX_MBUF_PKT_LEN(&ixp_sec) = 128;
-+ IX_MBUF_MDATA(&ixp_sec) = (unsigned char *) kmalloc(128, SLAB_ATOMIC);
-+
-+ status = ixCryptoAccCtxRegister(&ixp_ctx, &ixp_pri, &ixp_sec,
-+ ixp_register_cb, ixp_perform_cb, &ixp_ctx_id);
-+
-+ if (IX_CRYPTO_ACC_STATUS_SUCCESS == status) {
-+ while (!ixp_registered)
-+ schedule();
-+ return ixp_registered < 0 ? -1 : 0;
-+ }
-+
-+ printk("ixp: ixCryptoAccCtxRegister failed %d\n", status);
-+ return -1;
-+}
-+
-+static void
-+ixp_register_cb(UINT32 ctx_id, IX_MBUF *bufp, IxCryptoAccStatus status)
-+{
-+ if (bufp) {
-+ IX_MBUF_MLEN(bufp) = IX_MBUF_PKT_LEN(bufp) = 0;
-+ kfree(IX_MBUF_MDATA(bufp));
-+ IX_MBUF_MDATA(bufp) = NULL;
-+ }
-+
-+ if (IX_CRYPTO_ACC_STATUS_WAIT == status)
-+ return;
-+ if (IX_CRYPTO_ACC_STATUS_SUCCESS == status)
-+ ixp_registered = 1;
-+ else
-+ ixp_registered = -1;
-+}
-+
-+static void
-+ixp_perform_cb(
-+ UINT32 ctx_id,
-+ IX_MBUF *sbufp,
-+ IX_MBUF *dbufp,
-+ IxCryptoAccStatus status)
-+{
-+ request_t *r = NULL;
-+ unsigned long flags;
-+
-+ /* do all requests but take at least 1 second */
-+ spin_lock_irqsave(&ocfbench_counter_lock, flags);
-+ total++;
-+ if (total > request_num && jstart + HZ < jiffies) {
-+ outstanding--;
-+ spin_unlock_irqrestore(&ocfbench_counter_lock, flags);
-+ return;
-+ }
-+
-+ if (!sbufp || !(r = IX_MBUF_PRIV(sbufp))) {
-+ printk("crappo %p %p\n", sbufp, r);
-+ outstanding--;
-+ spin_unlock_irqrestore(&ocfbench_counter_lock, flags);
-+ return;
-+ }
-+ spin_unlock_irqrestore(&ocfbench_counter_lock, flags);
-+
-+ schedule_work(&r->work);
-+}
-+
-+static void
-+ixp_request(void *arg)
-+{
-+ request_t *r = arg;
-+ IxCryptoAccStatus status;
-+ unsigned long flags;
-+
-+ memset(&r->mbuf, 0, sizeof(r->mbuf));
-+ IX_MBUF_MLEN(&r->mbuf) = IX_MBUF_PKT_LEN(&r->mbuf) = request_size + 64;
-+ IX_MBUF_MDATA(&r->mbuf) = r->buffer;
-+ IX_MBUF_PRIV(&r->mbuf) = r;
-+ status = ixCryptoAccAuthCryptPerform(ixp_ctx_id, &r->mbuf, NULL,
-+ 0, request_size, 0, request_size, request_size, r->buffer);
-+ if (IX_CRYPTO_ACC_STATUS_SUCCESS != status) {
-+ printk("status1 = %d\n", status);
-+ spin_lock_irqsave(&ocfbench_counter_lock, flags);
-+ outstanding--;
-+ spin_unlock_irqrestore(&ocfbench_counter_lock, flags);
-+ return;
-+ }
-+ return;
-+}
-+
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,20)
-+static void
-+ixp_request_wq(struct work_struct *work)
-+{
-+ request_t *r = container_of(work, request_t, work);
-+ ixp_request(r);
-+}
-+#endif
-+
-+static void
-+ixp_done(void)
-+{
-+ /* we should free the session here but I am lazy :-) */
-+}
-+
-+/*************************************************************************/
-+#endif /* BENCH_IXP_ACCESS_LIB */
-+/*************************************************************************/
-+
-+int
-+ocfbench_init(void)
-+{
-+ int i;
-+ unsigned long mbps;
-+ unsigned long flags;
-+
-+ printk("Crypto Speed tests\n");
-+
-+ requests = kmalloc(sizeof(request_t) * request_q_len, GFP_KERNEL);
-+ if (!requests) {
-+ printk("malloc failed\n");
-+ return -EINVAL;
-+ }
-+
-+ for (i = 0; i < request_q_len; i++) {
-+ /* +64 for return data */
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,20)
-+ INIT_WORK(&requests[i].work, ocf_request_wq);
-+#else
-+ INIT_WORK(&requests[i].work, ocf_request, &requests[i]);
-+#endif
-+ requests[i].buffer = kmalloc(request_size + 128, GFP_DMA);
-+ if (!requests[i].buffer) {
-+ printk("malloc failed\n");
-+ return -EINVAL;
-+ }
-+ memset(requests[i].buffer, '0' + i, request_size + 128);
-+ }
-+
-+ /*
-+ * OCF benchmark
-+ */
-+ printk("OCF: testing ...\n");
-+ if (ocf_init() == -1)
-+ return -EINVAL;
-+
-+ spin_lock_init(&ocfbench_counter_lock);
-+ total = outstanding = 0;
-+ jstart = jiffies;
-+ for (i = 0; i < request_q_len; i++) {
-+ spin_lock_irqsave(&ocfbench_counter_lock, flags);
-+ outstanding++;
-+ spin_unlock_irqrestore(&ocfbench_counter_lock, flags);
-+ ocf_request(&requests[i]);
-+ }
-+ while (outstanding > 0)
-+ schedule();
-+ jstop = jiffies;
-+
-+ mbps = 0;
-+ if (jstop > jstart) {
-+ mbps = (unsigned long) total * (unsigned long) request_size * 8;
-+ mbps /= ((jstop - jstart) * 1000) / HZ;
-+ }
-+ printk("OCF: %d requests of %d bytes in %d jiffies (%d.%03d Mbps)\n",
-+ total, request_size, (int)(jstop - jstart),
-+ ((int)mbps) / 1000, ((int)mbps) % 1000);
-+ ocf_done();
-+
-+#ifdef BENCH_IXP_ACCESS_LIB
-+ /*
-+ * IXP benchmark
-+ */
-+ printk("IXP: testing ...\n");
-+ ixp_init();
-+ total = outstanding = 0;
-+ jstart = jiffies;
-+ for (i = 0; i < request_q_len; i++) {
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,20)
-+ INIT_WORK(&requests[i].work, ixp_request_wq);
-+#else
-+ INIT_WORK(&requests[i].work, ixp_request, &requests[i]);
-+#endif
-+ spin_lock_irqsave(&ocfbench_counter_lock, flags);
-+ outstanding++;
-+ spin_unlock_irqrestore(&ocfbench_counter_lock, flags);
-+ ixp_request(&requests[i]);
-+ }
-+ while (outstanding > 0)
-+ schedule();
-+ jstop = jiffies;
-+
-+ mbps = 0;
-+ if (jstop > jstart) {
-+ mbps = (unsigned long) total * (unsigned long) request_size * 8;
-+ mbps /= ((jstop - jstart) * 1000) / HZ;
-+ }
-+ printk("IXP: %d requests of %d bytes in %d jiffies (%d.%03d Mbps)\n",
-+ total, request_size, jstop - jstart,
-+ ((int)mbps) / 1000, ((int)mbps) % 1000);
-+ ixp_done();
-+#endif /* BENCH_IXP_ACCESS_LIB */
-+
-+ for (i = 0; i < request_q_len; i++)
-+ kfree(requests[i].buffer);
-+ kfree(requests);
-+ return -EINVAL; /* always fail to load so it can be re-run quickly ;-) */
-+}
-+
-+static void __exit ocfbench_exit(void)
-+{
-+}
-+
-+module_init(ocfbench_init);
-+module_exit(ocfbench_exit);
-+
-+MODULE_LICENSE("BSD");
-+MODULE_AUTHOR("David McCullough <david_mccullough at mcafee.com>");
-+MODULE_DESCRIPTION("Benchmark various in-kernel crypto speeds");
-diff --git a/crypto/ocf/ocf-compat.h b/crypto/ocf/ocf-compat.h
-new file mode 100644
-index 0000000..4ad1223
---- /dev/null
-+++ b/crypto/ocf/ocf-compat.h
-@@ -0,0 +1,372 @@
-+#ifndef _BSD_COMPAT_H_
-+#define _BSD_COMPAT_H_ 1
-+/****************************************************************************/
-+/*
-+ * Provide compat routines for older linux kernels and BSD kernels
-+ *
-+ * Written by David McCullough <david_mccullough at mcafee.com>
-+ * Copyright (C) 2010 David McCullough <david_mccullough at mcafee.com>
-+ *
-+ * LICENSE TERMS
-+ *
-+ * The free distribution and use of this software in both source and binary
-+ * form is allowed (with or without changes) provided that:
-+ *
-+ * 1. distributions of this source code include the above copyright
-+ * notice, this list of conditions and the following disclaimer;
-+ *
-+ * 2. distributions in binary form include the above copyright
-+ * notice, this list of conditions and the following disclaimer
-+ * in the documentation and/or other associated materials;
-+ *
-+ * 3. the copyright holder's name is not used to endorse products
-+ * built using this software without specific written permission.
-+ *
-+ * ALTERNATIVELY, provided that this notice is retained in full, this file
-+ * may be distributed under the terms of the GNU General Public License (GPL),
-+ * in which case the provisions of the GPL apply INSTEAD OF those given above.
-+ *
-+ * DISCLAIMER
-+ *
-+ * This software is provided 'as is' with no explicit or implied warranties
-+ * in respect of its properties, including, but not limited to, correctness
-+ * and/or fitness for purpose.
-+ */
-+/****************************************************************************/
-+#ifdef __KERNEL__
-+#include <linux/version.h>
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,38) && !defined(AUTOCONF_INCLUDED)
-+#include <linux/config.h>
-+#endif
-+
-+/*
-+ * fake some BSD driver interface stuff specifically for OCF use
-+ */
-+
-+typedef struct ocf_device *device_t;
-+
-+typedef struct {
-+ int (*cryptodev_newsession)(device_t dev, u_int32_t *sidp, struct cryptoini *cri);
-+ int (*cryptodev_freesession)(device_t dev, u_int64_t tid);
-+ int (*cryptodev_process)(device_t dev, struct cryptop *crp, int hint);
-+ int (*cryptodev_kprocess)(device_t dev, struct cryptkop *krp, int hint);
-+} device_method_t;
-+#define DEVMETHOD(id, func) id: func
-+
-+struct ocf_device {
-+ char name[32]; /* the driver name */
-+ char nameunit[32]; /* the driver name + HW instance */
-+ int unit;
-+ device_method_t methods;
-+ void *softc;
-+};
-+
-+#define CRYPTODEV_NEWSESSION(dev, sid, cri) \
-+ ((*(dev)->methods.cryptodev_newsession)(dev,sid,cri))
-+#define CRYPTODEV_FREESESSION(dev, sid) \
-+ ((*(dev)->methods.cryptodev_freesession)(dev, sid))
-+#define CRYPTODEV_PROCESS(dev, crp, hint) \
-+ ((*(dev)->methods.cryptodev_process)(dev, crp, hint))
-+#define CRYPTODEV_KPROCESS(dev, krp, hint) \
-+ ((*(dev)->methods.cryptodev_kprocess)(dev, krp, hint))
-+
-+#define device_get_name(dev) ((dev)->name)
-+#define device_get_nameunit(dev) ((dev)->nameunit)
-+#define device_get_unit(dev) ((dev)->unit)
-+#define device_get_softc(dev) ((dev)->softc)
-+
-+#define softc_device_decl \
-+ struct ocf_device _device; \
-+ device_t
-+
-+#define softc_device_init(_sc, _name, _unit, _methods) \
-+ if (1) {\
-+ strncpy((_sc)->_device.name, _name, sizeof((_sc)->_device.name) - 1); \
-+ snprintf((_sc)->_device.nameunit, sizeof((_sc)->_device.name), "%s%d", _name, _unit); \
-+ (_sc)->_device.unit = _unit; \
-+ (_sc)->_device.methods = _methods; \
-+ (_sc)->_device.softc = (void *) _sc; \
-+ *(device_t *)((softc_get_device(_sc))+1) = &(_sc)->_device; \
-+ } else
-+
-+#define softc_get_device(_sc) (&(_sc)->_device)
-+
-+/*
-+ * iomem support for 2.4 and 2.6 kernels
-+ */
-+#include <linux/version.h>
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
-+#define ocf_iomem_t unsigned long
-+
-+/*
-+ * implement simple workqueue like support for older kernels
-+ */
-+
-+#include <linux/tqueue.h>
-+
-+#define work_struct tq_struct
-+
-+#define INIT_WORK(wp, fp, ap) \
-+ do { \
-+ (wp)->sync = 0; \
-+ (wp)->routine = (fp); \
-+ (wp)->data = (ap); \
-+ } while (0)
-+
-+#define schedule_work(wp) \
-+ do { \
-+ queue_task((wp), &tq_immediate); \
-+ mark_bh(IMMEDIATE_BH); \
-+ } while (0)
-+
-+#define flush_scheduled_work() run_task_queue(&tq_immediate)
-+
-+#else
-+#define ocf_iomem_t void __iomem *
-+
-+#include <linux/workqueue.h>
-+
-+#endif
-+
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)
-+#include <linux/fdtable.h>
-+#elif LINUX_VERSION_CODE < KERNEL_VERSION(2,6,11)
-+#define files_fdtable(files) (files)
-+#endif
-+
-+#ifdef MODULE_PARM
-+#undef module_param /* just in case */
-+#define module_param(a,b,c) MODULE_PARM(a,"i")
-+#endif
-+
-+#define bzero(s,l) memset(s,0,l)
-+#define bcopy(s,d,l) memcpy(d,s,l)
-+#define bcmp(x, y, l) memcmp(x,y,l)
-+
-+#define MIN(x,y) ((x) < (y) ? (x) : (y))
-+
-+#define device_printf(dev, a...) ({ \
-+ printk("%s: ", device_get_nameunit(dev)); printk(a); \
-+ })
-+
-+#undef printf
-+#define printf(fmt...) printk(fmt)
-+
-+#define KASSERT(c,p) if (!(c)) { printk p ; } else
-+
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
-+#define ocf_daemonize(str) \
-+ daemonize(); \
-+ spin_lock_irq(¤t->sigmask_lock); \
-+ sigemptyset(¤t->blocked); \
-+ recalc_sigpending(current); \
-+ spin_unlock_irq(¤t->sigmask_lock); \
-+ sprintf(current->comm, str);
-+#else
-+#define ocf_daemonize(str) daemonize(str);
-+#endif
-+
-+#define TAILQ_INSERT_TAIL(q,d,m) list_add_tail(&(d)->m, (q))
-+#define TAILQ_EMPTY(q) list_empty(q)
-+#define TAILQ_FOREACH(v, q, m) list_for_each_entry(v, q, m)
-+
-+#define read_random(p,l) get_random_bytes(p,l)
-+
-+#define DELAY(x) ((x) > 2000 ? mdelay((x)/1000) : udelay(x))
-+#define strtoul simple_strtoul
-+
-+#define pci_get_vendor(dev) ((dev)->vendor)
-+#define pci_get_device(dev) ((dev)->device)
-+
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
-+#define pci_set_consistent_dma_mask(dev, mask) (0)
-+#endif
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,10)
-+#define pci_dma_sync_single_for_cpu pci_dma_sync_single
-+#endif
-+
-+#ifndef DMA_32BIT_MASK
-+#define DMA_32BIT_MASK 0x00000000ffffffffULL
-+#endif
-+
-+#ifndef htole32
-+#define htole32(x) cpu_to_le32(x)
-+#endif
-+#ifndef htobe32
-+#define htobe32(x) cpu_to_be32(x)
-+#endif
-+#ifndef htole16
-+#define htole16(x) cpu_to_le16(x)
-+#endif
-+#ifndef htobe16
-+#define htobe16(x) cpu_to_be16(x)
-+#endif
-+
-+/* older kernels don't have these */
-+
-+#include <asm/irq.h>
-+#if !defined(IRQ_NONE) && !defined(IRQ_RETVAL)
-+#define IRQ_NONE
-+#define IRQ_HANDLED
-+#define IRQ_WAKE_THREAD
-+#define IRQ_RETVAL
-+#define irqreturn_t void
-+typedef irqreturn_t (*irq_handler_t)(int irq, void *arg, struct pt_regs *regs);
-+#endif
-+#ifndef IRQF_SHARED
-+#define IRQF_SHARED SA_SHIRQ
-+#endif
-+
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
-+# define strlcpy(dest,src,len) \
-+ ({strncpy(dest,src,(len)-1); ((char *)dest)[(len)-1] = '\0'; })
-+#endif
-+
-+#ifndef MAX_ERRNO
-+#define MAX_ERRNO 4095
-+#endif
-+#ifndef IS_ERR_VALUE
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,5)
-+#include <linux/err.h>
-+#endif
-+#ifndef IS_ERR_VALUE
-+#define IS_ERR_VALUE(x) ((unsigned long)(x) >= (unsigned long)-MAX_ERRNO)
-+#endif
-+#endif
-+
-+/*
-+ * common debug for all
-+ */
-+#if 1
-+#define dprintk(a...) do { if (debug) printk(a); } while(0)
-+#else
-+#define dprintk(a...)
-+#endif
-+
-+#ifndef SLAB_ATOMIC
-+/* Changed in 2.6.20, must use GFP_ATOMIC now */
-+#define SLAB_ATOMIC GFP_ATOMIC
-+#endif
-+
-+/*
-+ * need some additional support for older kernels */
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,2)
-+#define pci_register_driver_compat(driver, rc) \
-+ do { \
-+ if ((rc) > 0) { \
-+ (rc) = 0; \
-+ } else if (rc == 0) { \
-+ (rc) = -ENODEV; \
-+ } else { \
-+ pci_unregister_driver(driver); \
-+ } \
-+ } while (0)
-+#elif LINUX_VERSION_CODE < KERNEL_VERSION(2,6,10)
-+#define pci_register_driver_compat(driver,rc) ((rc) = (rc) < 0 ? (rc) : 0)
-+#else
-+#define pci_register_driver_compat(driver,rc)
-+#endif
-+
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24)
-+
-+#include <linux/mm.h>
-+#include <asm/scatterlist.h>
-+
-+static inline void sg_set_page(struct scatterlist *sg, struct page *page,
-+ unsigned int len, unsigned int offset)
-+{
-+ sg->page = page;
-+ sg->offset = offset;
-+ sg->length = len;
-+}
-+
-+static inline void *sg_virt(struct scatterlist *sg)
-+{
-+ return page_address(sg->page) + sg->offset;
-+}
-+
-+#define sg_init_table(sg, n)
-+
-+#define sg_mark_end(sg)
-+
-+#endif
-+
-+#ifndef late_initcall
-+#define late_initcall(init) module_init(init)
-+#endif
-+
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,4) || !defined(CONFIG_SMP)
-+#define ocf_for_each_cpu(cpu) for ((cpu) = 0; (cpu) == 0; (cpu)++)
-+#else
-+#define ocf_for_each_cpu(cpu) for_each_present_cpu(cpu)
-+#endif
-+
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27)
-+#include <linux/sched.h>
-+#define kill_proc(p,s,v) send_sig(s,find_task_by_vpid(p),0)
-+#endif
-+
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,4)
-+
-+struct ocf_thread {
-+ struct task_struct *task;
-+ int (*func)(void *arg);
-+ void *arg;
-+};
-+
-+/* thread startup helper func */
-+static inline int ocf_run_thread(void *arg)
-+{
-+ struct ocf_thread *t = (struct ocf_thread *) arg;
-+ if (!t)
-+ return -1; /* very bad */
-+ t->task = current;
-+ daemonize();
-+ spin_lock_irq(¤t->sigmask_lock);
-+ sigemptyset(¤t->blocked);
-+ recalc_sigpending(current);
-+ spin_unlock_irq(¤t->sigmask_lock);
-+ return (*t->func)(t->arg);
-+}
-+
-+#define kthread_create(f,a,fmt...) \
-+ ({ \
-+ struct ocf_thread t; \
-+ pid_t p; \
-+ t.task = NULL; \
-+ t.func = (f); \
-+ t.arg = (a); \
-+ p = kernel_thread(ocf_run_thread, &t, CLONE_FS|CLONE_FILES); \
-+ while (p != (pid_t) -1 && t.task == NULL) \
-+ schedule(); \
-+ if (t.task) \
-+ snprintf(t.task->comm, sizeof(t.task->comm), fmt); \
-+ (t.task); \
-+ })
-+
-+#define kthread_bind(t,cpu) /**/
-+
-+#define kthread_should_stop() (strcmp(current->comm, "stopping") == 0)
-+
-+#define kthread_stop(t) \
-+ ({ \
-+ strcpy((t)->comm, "stopping"); \
-+ kill_proc((t)->pid, SIGTERM, 1); \
-+ do { \
-+ schedule(); \
-+ } while (kill_proc((t)->pid, SIGTERM, 1) == 0); \
-+ })
-+
-+#else
-+#include <linux/kthread.h>
-+#endif
-+
-+
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,2,0)
-+#define skb_frag_page(x) ((x)->page)
-+#endif
-+
-+#endif /* __KERNEL__ */
-+
-+/****************************************************************************/
-+#endif /* _BSD_COMPAT_H_ */
-diff --git a/crypto/ocf/ocfnull/Makefile b/crypto/ocf/ocfnull/Makefile
-new file mode 100644
-index 0000000..044bcac
---- /dev/null
-+++ b/crypto/ocf/ocfnull/Makefile
-@@ -0,0 +1,12 @@
-+# for SGlinux builds
-+-include $(ROOTDIR)/modules/.config
-+
-+obj-$(CONFIG_OCF_OCFNULL) += ocfnull.o
-+
-+obj ?= .
-+EXTRA_CFLAGS += -I$(obj)/..
-+
-+ifdef TOPDIR
-+-include $(TOPDIR)/Rules.make
-+endif
-+
-diff --git a/crypto/ocf/ocfnull/ocfnull.c b/crypto/ocf/ocfnull/ocfnull.c
-new file mode 100644
-index 0000000..9cf3f6e
---- /dev/null
-+++ b/crypto/ocf/ocfnull/ocfnull.c
-@@ -0,0 +1,204 @@
-+/*
-+ * An OCF module for determining the cost of crypto versus the cost of
-+ * IPSec processing outside of OCF. This modules gives us the effect of
-+ * zero cost encryption, of course you will need to run it at both ends
-+ * since it does no crypto at all.
-+ *
-+ * Written by David McCullough <david_mccullough at mcafee.com>
-+ * Copyright (C) 2006-2010 David McCullough
-+ *
-+ * LICENSE TERMS
-+ *
-+ * The free distribution and use of this software in both source and binary
-+ * form is allowed (with or without changes) provided that:
-+ *
-+ * 1. distributions of this source code include the above copyright
-+ * notice, this list of conditions and the following disclaimer;
-+ *
-+ * 2. distributions in binary form include the above copyright
-+ * notice, this list of conditions and the following disclaimer
-+ * in the documentation and/or other associated materials;
-+ *
-+ * 3. the copyright holder's name is not used to endorse products
-+ * built using this software without specific written permission.
-+ *
-+ * ALTERNATIVELY, provided that this notice is retained in full, this product
-+ * may be distributed under the terms of the GNU General Public License (GPL),
-+ * in which case the provisions of the GPL apply INSTEAD OF those given above.
-+ *
-+ * DISCLAIMER
-+ *
-+ * This software is provided 'as is' with no explicit or implied warranties
-+ * in respect of its properties, including, but not limited to, correctness
-+ * and/or fitness for purpose.
-+ */
-+
-+#include <linux/version.h>
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,38) && !defined(AUTOCONF_INCLUDED)
-+#include <linux/config.h>
-+#endif
-+#include <linux/module.h>
-+#include <linux/init.h>
-+#include <linux/list.h>
-+#include <linux/slab.h>
-+#include <linux/sched.h>
-+#include <linux/wait.h>
-+#include <linux/crypto.h>
-+#include <linux/interrupt.h>
-+
-+#include <cryptodev.h>
-+#include <uio.h>
-+
-+static int32_t null_id = -1;
-+static u_int32_t null_sesnum = 0;
-+
-+static int null_process(device_t, struct cryptop *, int);
-+static int null_newsession(device_t, u_int32_t *, struct cryptoini *);
-+static int null_freesession(device_t, u_int64_t);
-+
-+#define debug ocfnull_debug
-+int ocfnull_debug = 0;
-+module_param(ocfnull_debug, int, 0644);
-+MODULE_PARM_DESC(ocfnull_debug, "Enable debug");
-+
-+/*
-+ * dummy device structure
-+ */
-+
-+static struct {
-+ softc_device_decl sc_dev;
-+} nulldev;
-+
-+static device_method_t null_methods = {
-+ /* crypto device methods */
-+ DEVMETHOD(cryptodev_newsession, null_newsession),
-+ DEVMETHOD(cryptodev_freesession,null_freesession),
-+ DEVMETHOD(cryptodev_process, null_process),
-+};
-+
-+/*
-+ * Generate a new software session.
-+ */
-+static int
-+null_newsession(device_t arg, u_int32_t *sid, struct cryptoini *cri)
-+{
-+ dprintk("%s()\n", __FUNCTION__);
-+ if (sid == NULL || cri == NULL) {
-+ dprintk("%s,%d - EINVAL\n", __FILE__, __LINE__);
-+ return EINVAL;
-+ }
-+
-+ if (null_sesnum == 0)
-+ null_sesnum++;
-+ *sid = null_sesnum++;
-+ return 0;
-+}
-+
-+
-+/*
-+ * Free a session.
-+ */
-+static int
-+null_freesession(device_t arg, u_int64_t tid)
-+{
-+ u_int32_t sid = CRYPTO_SESID2LID(tid);
-+
-+ dprintk("%s()\n", __FUNCTION__);
-+ if (sid > null_sesnum) {
-+ dprintk("%s,%d: EINVAL\n", __FILE__, __LINE__);
-+ return EINVAL;
-+ }
-+
-+ /* Silently accept and return */
-+ if (sid == 0)
-+ return 0;
-+ return 0;
-+}
-+
-+
-+/*
-+ * Process a request.
-+ */
-+static int
-+null_process(device_t arg, struct cryptop *crp, int hint)
-+{
-+ unsigned int lid;
-+
-+ dprintk("%s()\n", __FUNCTION__);
-+
-+ /* Sanity check */
-+ if (crp == NULL) {
-+ dprintk("%s,%d: EINVAL\n", __FILE__, __LINE__);
-+ return EINVAL;
-+ }
-+
-+ crp->crp_etype = 0;
-+
-+ if (crp->crp_desc == NULL || crp->crp_buf == NULL) {
-+ dprintk("%s,%d: EINVAL\n", __FILE__, __LINE__);
-+ crp->crp_etype = EINVAL;
-+ goto done;
-+ }
-+
-+ /*
-+ * find the session we are using
-+ */
-+
-+ lid = crp->crp_sid & 0xffffffff;
-+ if (lid >= null_sesnum || lid == 0) {
-+ crp->crp_etype = ENOENT;
-+ dprintk("%s,%d: ENOENT\n", __FILE__, __LINE__);
-+ goto done;
-+ }
-+
-+done:
-+ crypto_done(crp);
-+ return 0;
-+}
-+
-+
-+/*
-+ * our driver startup and shutdown routines
-+ */
-+
-+static int
-+null_init(void)
-+{
-+ dprintk("%s(%p)\n", __FUNCTION__, null_init);
-+
-+ memset(&nulldev, 0, sizeof(nulldev));
-+ softc_device_init(&nulldev, "ocfnull", 0, null_methods);
-+
-+ null_id = crypto_get_driverid(softc_get_device(&nulldev),
-+ CRYPTOCAP_F_HARDWARE);
-+ if (null_id < 0)
-+ panic("ocfnull: crypto device cannot initialize!");
-+
-+#define REGISTER(alg) \
-+ crypto_register(null_id,alg,0,0)
-+ REGISTER(CRYPTO_DES_CBC);
-+ REGISTER(CRYPTO_3DES_CBC);
-+ REGISTER(CRYPTO_RIJNDAEL128_CBC);
-+ REGISTER(CRYPTO_MD5);
-+ REGISTER(CRYPTO_SHA1);
-+ REGISTER(CRYPTO_MD5_HMAC);
-+ REGISTER(CRYPTO_SHA1_HMAC);
-+#undef REGISTER
-+
-+ return 0;
-+}
-+
-+static void
-+null_exit(void)
-+{
-+ dprintk("%s()\n", __FUNCTION__);
-+ crypto_unregister_all(null_id);
-+ null_id = -1;
-+}
-+
-+module_init(null_init);
-+module_exit(null_exit);
-+
-+MODULE_LICENSE("Dual BSD/GPL");
-+MODULE_AUTHOR("David McCullough <david_mccullough at mcafee.com>");
-+MODULE_DESCRIPTION("ocfnull - claims a lot but does nothing");
-diff --git a/crypto/ocf/random.c b/crypto/ocf/random.c
-new file mode 100644
-index 0000000..4bb773f
---- /dev/null
-+++ b/crypto/ocf/random.c
-@@ -0,0 +1,317 @@
-+/*
-+ * A system independant way of adding entropy to the kernels pool
-+ * this way the drivers can focus on the real work and we can take
-+ * care of pushing it to the appropriate place in the kernel.
-+ *
-+ * This should be fast and callable from timers/interrupts
-+ *
-+ * Written by David McCullough <david_mccullough at mcafee.com>
-+ * Copyright (C) 2006-2010 David McCullough
-+ * Copyright (C) 2004-2005 Intel Corporation.
-+ *
-+ * LICENSE TERMS
-+ *
-+ * The free distribution and use of this software in both source and binary
-+ * form is allowed (with or without changes) provided that:
-+ *
-+ * 1. distributions of this source code include the above copyright
-+ * notice, this list of conditions and the following disclaimer;
-+ *
-+ * 2. distributions in binary form include the above copyright
-+ * notice, this list of conditions and the following disclaimer
-+ * in the documentation and/or other associated materials;
-+ *
-+ * 3. the copyright holder's name is not used to endorse products
-+ * built using this software without specific written permission.
-+ *
-+ * ALTERNATIVELY, provided that this notice is retained in full, this product
-+ * may be distributed under the terms of the GNU General Public License (GPL),
-+ * in which case the provisions of the GPL apply INSTEAD OF those given above.
-+ *
-+ * DISCLAIMER
-+ *
-+ * This software is provided 'as is' with no explicit or implied warranties
-+ * in respect of its properties, including, but not limited to, correctness
-+ * and/or fitness for purpose.
-+ */
-+
-+#include <linux/version.h>
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,38) && !defined(AUTOCONF_INCLUDED)
-+#include <linux/config.h>
-+#endif
-+#include <linux/module.h>
-+#include <linux/init.h>
-+#include <linux/list.h>
-+#include <linux/slab.h>
-+#include <linux/wait.h>
-+#include <linux/sched.h>
-+#include <linux/spinlock.h>
-+#include <linux/unistd.h>
-+#include <linux/poll.h>
-+#include <linux/random.h>
-+#include <cryptodev.h>
-+
-+#ifdef CONFIG_OCF_FIPS
-+#include "rndtest.h"
-+#endif
-+
-+#ifndef HAS_RANDOM_INPUT_WAIT
-+#error "Please do not enable OCF_RANDOMHARVEST unless you have applied patches"
-+#endif
-+
-+/*
-+ * a hack to access the debug levels from the crypto driver
-+ */
-+extern int crypto_debug;
-+#define debug crypto_debug
-+
-+/*
-+ * a list of all registered random providers
-+ */
-+static LIST_HEAD(random_ops);
-+static int started = 0;
-+static int initted = 0;
-+
-+struct random_op {
-+ struct list_head random_list;
-+ u_int32_t driverid;
-+ int (*read_random)(void *arg, u_int32_t *buf, int len);
-+ void *arg;
-+};
-+
-+static int random_proc(void *arg);
-+
-+static pid_t randomproc = (pid_t) -1;
-+static spinlock_t random_lock;
-+
-+/*
-+ * just init the spin locks
-+ */
-+static int
-+crypto_random_init(void)
-+{
-+ spin_lock_init(&random_lock);
-+ initted = 1;
-+ return(0);
-+}
-+
-+/*
-+ * Add the given random reader to our list (if not present)
-+ * and start the thread (if not already started)
-+ *
-+ * we have to assume that driver id is ok for now
-+ */
-+int
-+crypto_rregister(
-+ u_int32_t driverid,
-+ int (*read_random)(void *arg, u_int32_t *buf, int len),
-+ void *arg)
-+{
-+ unsigned long flags;
-+ int ret = 0;
-+ struct random_op *rops, *tmp;
-+
-+ dprintk("%s,%d: %s(0x%x, %p, %p)\n", __FILE__, __LINE__,
-+ __FUNCTION__, driverid, read_random, arg);
-+
-+ if (!initted)
-+ crypto_random_init();
-+
-+#if 0
-+ struct cryptocap *cap;
-+
-+ cap = crypto_checkdriver(driverid);
-+ if (!cap)
-+ return EINVAL;
-+#endif
-+
-+ list_for_each_entry_safe(rops, tmp, &random_ops, random_list) {
-+ if (rops->driverid == driverid && rops->read_random == read_random)
-+ return EEXIST;
-+ }
-+
-+ rops = (struct random_op *) kmalloc(sizeof(*rops), GFP_KERNEL);
-+ if (!rops)
-+ return ENOMEM;
-+
-+ rops->driverid = driverid;
-+ rops->read_random = read_random;
-+ rops->arg = arg;
-+
-+ spin_lock_irqsave(&random_lock, flags);
-+ list_add_tail(&rops->random_list, &random_ops);
-+ if (!started) {
-+ randomproc = kernel_thread(random_proc, NULL, CLONE_FS|CLONE_FILES);
-+ if (randomproc < 0) {
-+ ret = randomproc;
-+ printk("crypto: crypto_rregister cannot start random thread; "
-+ "error %d", ret);
-+ } else
-+ started = 1;
-+ }
-+ spin_unlock_irqrestore(&random_lock, flags);
-+
-+ return ret;
-+}
-+EXPORT_SYMBOL(crypto_rregister);
-+
-+int
-+crypto_runregister_all(u_int32_t driverid)
-+{
-+ struct random_op *rops, *tmp;
-+ unsigned long flags;
-+
-+ dprintk("%s,%d: %s(0x%x)\n", __FILE__, __LINE__, __FUNCTION__, driverid);
-+
-+ list_for_each_entry_safe(rops, tmp, &random_ops, random_list) {
-+ if (rops->driverid == driverid) {
-+ list_del(&rops->random_list);
-+ kfree(rops);
-+ }
-+ }
-+
-+ spin_lock_irqsave(&random_lock, flags);
-+ if (list_empty(&random_ops) && started)
-+ kill_proc(randomproc, SIGKILL, 1);
-+ spin_unlock_irqrestore(&random_lock, flags);
-+ return(0);
-+}
-+EXPORT_SYMBOL(crypto_runregister_all);
-+
-+/*
-+ * while we can add entropy to random.c continue to read random data from
-+ * the drivers and push it to random.
-+ */
-+static int
-+random_proc(void *arg)
-+{
-+ int n;
-+ int wantcnt;
-+ int bufcnt = 0;
-+ int retval = 0;
-+ int *buf = NULL;
-+
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
-+ daemonize();
-+ spin_lock_irq(¤t->sigmask_lock);
-+ sigemptyset(¤t->blocked);
-+ recalc_sigpending(current);
-+ spin_unlock_irq(¤t->sigmask_lock);
-+ sprintf(current->comm, "ocf-random");
-+#else
-+ daemonize("ocf-random");
-+ allow_signal(SIGKILL);
-+#endif
-+
-+ (void) get_fs();
-+ set_fs(get_ds());
-+
-+#ifdef CONFIG_OCF_FIPS
-+#define NUM_INT (RNDTEST_NBYTES/sizeof(int))
-+#else
-+#define NUM_INT 32
-+#endif
-+
-+ /*
-+ * some devices can transferr their RNG data direct into memory,
-+ * so make sure it is device friendly
-+ */
-+ buf = kmalloc(NUM_INT * sizeof(int), GFP_DMA);
-+ if (NULL == buf) {
-+ printk("crypto: RNG could not allocate memory\n");
-+ retval = -ENOMEM;
-+ goto bad_alloc;
-+ }
-+
-+ wantcnt = NUM_INT; /* start by adding some entropy */
-+
-+ /*
-+ * its possible due to errors or driver removal that we no longer
-+ * have anything to do, if so exit or we will consume all the CPU
-+ * doing nothing
-+ */
-+ while (!list_empty(&random_ops)) {
-+ struct random_op *rops, *tmp;
-+
-+#ifdef CONFIG_OCF_FIPS
-+ if (wantcnt)
-+ wantcnt = NUM_INT; /* FIPs mode can do 20000 bits or none */
-+#endif
-+
-+ /* see if we can get enough entropy to make the world
-+ * a better place.
-+ */
-+ while (bufcnt < wantcnt && bufcnt < NUM_INT) {
-+ list_for_each_entry_safe(rops, tmp, &random_ops, random_list) {
-+
-+ n = (*rops->read_random)(rops->arg, &buf[bufcnt],
-+ NUM_INT - bufcnt);
-+
-+ /* on failure remove the random number generator */
-+ if (n == -1) {
-+ list_del(&rops->random_list);
-+ printk("crypto: RNG (driverid=0x%x) failed, disabling\n",
-+ rops->driverid);
-+ kfree(rops);
-+ } else if (n > 0)
-+ bufcnt += n;
-+ }
-+ /* give up CPU for a bit, just in case as this is a loop */
-+ schedule();
-+ }
-+
-+
-+#ifdef CONFIG_OCF_FIPS
-+ if (bufcnt > 0 && rndtest_buf((unsigned char *) &buf[0])) {
-+ dprintk("crypto: buffer had fips errors, discarding\n");
-+ bufcnt = 0;
-+ }
-+#endif
-+
-+ /*
-+ * if we have a certified buffer, we can send some data
-+ * to /dev/random and move along
-+ */
-+ if (bufcnt > 0) {
-+ /* add what we have */
-+ random_input_words(buf, bufcnt, bufcnt*sizeof(int)*8);
-+ bufcnt = 0;
-+ }
-+
-+ /* give up CPU for a bit so we don't hog while filling */
-+ schedule();
-+
-+ /* wait for needing more */
-+ wantcnt = random_input_wait();
-+
-+ if (wantcnt <= 0)
-+ wantcnt = 0; /* try to get some info again */
-+ else
-+ /* round up to one word or we can loop forever */
-+ wantcnt = (wantcnt + (sizeof(int)*8)) / (sizeof(int)*8);
-+ if (wantcnt > NUM_INT) {
-+ wantcnt = NUM_INT;
-+ }
-+
-+ if (signal_pending(current)) {
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
-+ spin_lock_irq(¤t->sigmask_lock);
-+#endif
-+ flush_signals(current);
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
-+ spin_unlock_irq(¤t->sigmask_lock);
-+#endif
-+ }
-+ }
-+
-+ kfree(buf);
-+
-+bad_alloc:
-+ spin_lock_irq(&random_lock);
-+ randomproc = (pid_t) -1;
-+ started = 0;
-+ spin_unlock_irq(&random_lock);
-+
-+ return retval;
-+}
-+
-diff --git a/crypto/ocf/rndtest.c b/crypto/ocf/rndtest.c
-new file mode 100644
-index 0000000..7bed6a1
---- /dev/null
-+++ b/crypto/ocf/rndtest.c
-@@ -0,0 +1,300 @@
-+/* $OpenBSD$ */
-+
-+/*
-+ * OCF/Linux port done by David McCullough <david_mccullough at mcafee.com>
-+ * Copyright (C) 2006-2010 David McCullough
-+ * Copyright (C) 2004-2005 Intel Corporation.
-+ * The license and original author are listed below.
-+ *
-+ * Copyright (c) 2002 Jason L. Wright (jason at thought.net)
-+ * All rights reserved.
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions
-+ * are met:
-+ * 1. Redistributions of source code must retain the above copyright
-+ * notice, this list of conditions and the following disclaimer.
-+ * 2. Redistributions in binary form must reproduce the above copyright
-+ * notice, this list of conditions and the following disclaimer in the
-+ * documentation and/or other materials provided with the distribution.
-+ * 3. All advertising materials mentioning features or use of this software
-+ * must display the following acknowledgement:
-+ * This product includes software developed by Jason L. Wright
-+ * 4. The name of the author may not be used to endorse or promote products
-+ * derived from this software without specific prior written permission.
-+ *
-+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
-+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-+ * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
-+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-+ * POSSIBILITY OF SUCH DAMAGE.
-+ */
-+
-+#include <linux/version.h>
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,38) && !defined(AUTOCONF_INCLUDED)
-+#include <linux/config.h>
-+#endif
-+#include <linux/module.h>
-+#include <linux/list.h>
-+#include <linux/wait.h>
-+#include <linux/time.h>
-+#include <linux/unistd.h>
-+#include <linux/kernel.h>
-+#include <linux/string.h>
-+#include <linux/time.h>
-+#include <cryptodev.h>
-+#include "rndtest.h"
-+
-+static struct rndtest_stats rndstats;
-+
-+static void rndtest_test(struct rndtest_state *);
-+
-+/* The tests themselves */
-+static int rndtest_monobit(struct rndtest_state *);
-+static int rndtest_runs(struct rndtest_state *);
-+static int rndtest_longruns(struct rndtest_state *);
-+static int rndtest_chi_4(struct rndtest_state *);
-+
-+static int rndtest_runs_check(struct rndtest_state *, int, int *);
-+static void rndtest_runs_record(struct rndtest_state *, int, int *);
-+
-+static const struct rndtest_testfunc {
-+ int (*test)(struct rndtest_state *);
-+} rndtest_funcs[] = {
-+ { rndtest_monobit },
-+ { rndtest_runs },
-+ { rndtest_chi_4 },
-+ { rndtest_longruns },
-+};
-+
-+#define RNDTEST_NTESTS (sizeof(rndtest_funcs)/sizeof(rndtest_funcs[0]))
-+
-+static void
-+rndtest_test(struct rndtest_state *rsp)
-+{
-+ int i, rv = 0;
-+
-+ rndstats.rst_tests++;
-+ for (i = 0; i < RNDTEST_NTESTS; i++)
-+ rv |= (*rndtest_funcs[i].test)(rsp);
-+ rsp->rs_discard = (rv != 0);
-+}
-+
-+
-+extern int crypto_debug;
-+#define rndtest_verbose 2
-+#define rndtest_report(rsp, failure, fmt, a...) \
-+ { if (failure || crypto_debug) { printk("rng_test: " fmt "\n", a); } else; }
-+
-+#define RNDTEST_MONOBIT_MINONES 9725
-+#define RNDTEST_MONOBIT_MAXONES 10275
-+
-+static int
-+rndtest_monobit(struct rndtest_state *rsp)
-+{
-+ int i, ones = 0, j;
-+ u_int8_t r;
-+
-+ for (i = 0; i < RNDTEST_NBYTES; i++) {
-+ r = rsp->rs_buf[i];
-+ for (j = 0; j < 8; j++, r <<= 1)
-+ if (r & 0x80)
-+ ones++;
-+ }
-+ if (ones > RNDTEST_MONOBIT_MINONES &&
-+ ones < RNDTEST_MONOBIT_MAXONES) {
-+ if (rndtest_verbose > 1)
-+ rndtest_report(rsp, 0, "monobit pass (%d < %d < %d)",
-+ RNDTEST_MONOBIT_MINONES, ones,
-+ RNDTEST_MONOBIT_MAXONES);
-+ return (0);
-+ } else {
-+ if (rndtest_verbose)
-+ rndtest_report(rsp, 1,
-+ "monobit failed (%d ones)", ones);
-+ rndstats.rst_monobit++;
-+ return (-1);
-+ }
-+}
-+
-+#define RNDTEST_RUNS_NINTERVAL 6
-+
-+static const struct rndtest_runs_tabs {
-+ u_int16_t min, max;
-+} rndtest_runs_tab[] = {
-+ { 2343, 2657 },
-+ { 1135, 1365 },
-+ { 542, 708 },
-+ { 251, 373 },
-+ { 111, 201 },
-+ { 111, 201 },
-+};
-+
-+static int
-+rndtest_runs(struct rndtest_state *rsp)
-+{
-+ int i, j, ones, zeros, rv = 0;
-+ int onei[RNDTEST_RUNS_NINTERVAL], zeroi[RNDTEST_RUNS_NINTERVAL];
-+ u_int8_t c;
-+
-+ bzero(onei, sizeof(onei));
-+ bzero(zeroi, sizeof(zeroi));
-+ ones = zeros = 0;
-+ for (i = 0; i < RNDTEST_NBYTES; i++) {
-+ c = rsp->rs_buf[i];
-+ for (j = 0; j < 8; j++, c <<= 1) {
-+ if (c & 0x80) {
-+ ones++;
-+ rndtest_runs_record(rsp, zeros, zeroi);
-+ zeros = 0;
-+ } else {
-+ zeros++;
-+ rndtest_runs_record(rsp, ones, onei);
-+ ones = 0;
-+ }
-+ }
-+ }
-+ rndtest_runs_record(rsp, ones, onei);
-+ rndtest_runs_record(rsp, zeros, zeroi);
-+
-+ rv |= rndtest_runs_check(rsp, 0, zeroi);
-+ rv |= rndtest_runs_check(rsp, 1, onei);
-+
-+ if (rv)
-+ rndstats.rst_runs++;
-+
-+ return (rv);
-+}
-+
-+static void
-+rndtest_runs_record(struct rndtest_state *rsp, int len, int *intrv)
-+{
-+ if (len == 0)
-+ return;
-+ if (len > RNDTEST_RUNS_NINTERVAL)
-+ len = RNDTEST_RUNS_NINTERVAL;
-+ len -= 1;
-+ intrv[len]++;
-+}
-+
-+static int
-+rndtest_runs_check(struct rndtest_state *rsp, int val, int *src)
-+{
-+ int i, rv = 0;
-+
-+ for (i = 0; i < RNDTEST_RUNS_NINTERVAL; i++) {
-+ if (src[i] < rndtest_runs_tab[i].min ||
-+ src[i] > rndtest_runs_tab[i].max) {
-+ rndtest_report(rsp, 1,
-+ "%s interval %d failed (%d, %d-%d)",
-+ val ? "ones" : "zeros",
-+ i + 1, src[i], rndtest_runs_tab[i].min,
-+ rndtest_runs_tab[i].max);
-+ rv = -1;
-+ } else {
-+ rndtest_report(rsp, 0,
-+ "runs pass %s interval %d (%d < %d < %d)",
-+ val ? "ones" : "zeros",
-+ i + 1, rndtest_runs_tab[i].min, src[i],
-+ rndtest_runs_tab[i].max);
-+ }
-+ }
-+ return (rv);
-+}
-+
-+static int
-+rndtest_longruns(struct rndtest_state *rsp)
-+{
-+ int i, j, ones = 0, zeros = 0, maxones = 0, maxzeros = 0;
-+ u_int8_t c;
-+
-+ for (i = 0; i < RNDTEST_NBYTES; i++) {
-+ c = rsp->rs_buf[i];
-+ for (j = 0; j < 8; j++, c <<= 1) {
-+ if (c & 0x80) {
-+ zeros = 0;
-+ ones++;
-+ if (ones > maxones)
-+ maxones = ones;
-+ } else {
-+ ones = 0;
-+ zeros++;
-+ if (zeros > maxzeros)
-+ maxzeros = zeros;
-+ }
-+ }
-+ }
-+
-+ if (maxones < 26 && maxzeros < 26) {
-+ rndtest_report(rsp, 0, "longruns pass (%d ones, %d zeros)",
-+ maxones, maxzeros);
-+ return (0);
-+ } else {
-+ rndtest_report(rsp, 1, "longruns fail (%d ones, %d zeros)",
-+ maxones, maxzeros);
-+ rndstats.rst_longruns++;
-+ return (-1);
-+ }
-+}
-+
-+/*
-+ * chi^2 test over 4 bits: (this is called the poker test in FIPS 140-2,
-+ * but it is really the chi^2 test over 4 bits (the poker test as described
-+ * by Knuth vol 2 is something different, and I take him as authoritative
-+ * on nomenclature over NIST).
-+ */
-+#define RNDTEST_CHI4_K 16
-+#define RNDTEST_CHI4_K_MASK (RNDTEST_CHI4_K - 1)
-+
-+/*
-+ * The unnormalized values are used so that we don't have to worry about
-+ * fractional precision. The "real" value is found by:
-+ * (V - 1562500) * (16 / 5000) = Vn (where V is the unnormalized value)
-+ */
-+#define RNDTEST_CHI4_VMIN 1563181 /* 2.1792 */
-+#define RNDTEST_CHI4_VMAX 1576929 /* 46.1728 */
-+
-+static int
-+rndtest_chi_4(struct rndtest_state *rsp)
-+{
-+ unsigned int freq[RNDTEST_CHI4_K], i, sum;
-+
-+ for (i = 0; i < RNDTEST_CHI4_K; i++)
-+ freq[i] = 0;
-+
-+ /* Get number of occurances of each 4 bit pattern */
-+ for (i = 0; i < RNDTEST_NBYTES; i++) {
-+ freq[(rsp->rs_buf[i] >> 4) & RNDTEST_CHI4_K_MASK]++;
-+ freq[(rsp->rs_buf[i] >> 0) & RNDTEST_CHI4_K_MASK]++;
-+ }
-+
-+ for (i = 0, sum = 0; i < RNDTEST_CHI4_K; i++)
-+ sum += freq[i] * freq[i];
-+
-+ if (sum >= 1563181 && sum <= 1576929) {
-+ rndtest_report(rsp, 0, "chi^2(4): pass (sum %u)", sum);
-+ return (0);
-+ } else {
-+ rndtest_report(rsp, 1, "chi^2(4): failed (sum %u)", sum);
-+ rndstats.rst_chi++;
-+ return (-1);
-+ }
-+}
-+
-+int
-+rndtest_buf(unsigned char *buf)
-+{
-+ struct rndtest_state rsp;
-+
-+ memset(&rsp, 0, sizeof(rsp));
-+ rsp.rs_buf = buf;
-+ rndtest_test(&rsp);
-+ return(rsp.rs_discard);
-+}
-+
-diff --git a/crypto/ocf/rndtest.h b/crypto/ocf/rndtest.h
-new file mode 100644
-index 0000000..e9d8ec8
---- /dev/null
-+++ b/crypto/ocf/rndtest.h
-@@ -0,0 +1,54 @@
-+/* $FreeBSD: src/sys/dev/rndtest/rndtest.h,v 1.1 2003/03/11 22:54:44 sam Exp $ */
-+/* $OpenBSD$ */
-+
-+/*
-+ * Copyright (c) 2002 Jason L. Wright (jason at thought.net)
-+ * All rights reserved.
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions
-+ * are met:
-+ * 1. Redistributions of source code must retain the above copyright
-+ * notice, this list of conditions and the following disclaimer.
-+ * 2. Redistributions in binary form must reproduce the above copyright
-+ * notice, this list of conditions and the following disclaimer in the
-+ * documentation and/or other materials provided with the distribution.
-+ * 3. All advertising materials mentioning features or use of this software
-+ * must display the following acknowledgement:
-+ * This product includes software developed by Jason L. Wright
-+ * 4. The name of the author may not be used to endorse or promote products
-+ * derived from this software without specific prior written permission.
-+ *
-+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
-+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-+ * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
-+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-+ * POSSIBILITY OF SUCH DAMAGE.
-+ */
-+
-+
-+/* Some of the tests depend on these values */
-+#define RNDTEST_NBYTES 2500
-+#define RNDTEST_NBITS (8 * RNDTEST_NBYTES)
-+
-+struct rndtest_state {
-+ int rs_discard; /* discard/accept random data */
-+ u_int8_t *rs_buf;
-+};
-+
-+struct rndtest_stats {
-+ u_int32_t rst_discard; /* number of bytes discarded */
-+ u_int32_t rst_tests; /* number of test runs */
-+ u_int32_t rst_monobit; /* monobit test failures */
-+ u_int32_t rst_runs; /* 0/1 runs failures */
-+ u_int32_t rst_longruns; /* longruns failures */
-+ u_int32_t rst_chi; /* chi^2 failures */
-+};
-+
-+extern int rndtest_buf(unsigned char *buf);
-diff --git a/crypto/ocf/uio.h b/crypto/ocf/uio.h
-new file mode 100644
-index 0000000..03a6249
---- /dev/null
-+++ b/crypto/ocf/uio.h
-@@ -0,0 +1,54 @@
-+#ifndef _OCF_UIO_H_
-+#define _OCF_UIO_H_
-+
-+#include <linux/uio.h>
-+
-+/*
-+ * The linux uio.h doesn't have all we need. To be fully api compatible
-+ * with the BSD cryptodev, we need to keep this around. Perhaps this can
-+ * be moved back into the linux/uio.h
-+ *
-+ * Linux port done by David McCullough <david_mccullough at mcafee.com>
-+ * Copyright (C) 2006-2010 David McCullough
-+ * Copyright (C) 2004-2005 Intel Corporation.
-+ *
-+ * LICENSE TERMS
-+ *
-+ * The free distribution and use of this software in both source and binary
-+ * form is allowed (with or without changes) provided that:
-+ *
-+ * 1. distributions of this source code include the above copyright
-+ * notice, this list of conditions and the following disclaimer;
-+ *
-+ * 2. distributions in binary form include the above copyright
-+ * notice, this list of conditions and the following disclaimer
-+ * in the documentation and/or other associated materials;
-+ *
-+ * 3. the copyright holder's name is not used to endorse products
-+ * built using this software without specific written permission.
-+ *
-+ * ALTERNATIVELY, provided that this notice is retained in full, this product
-+ * may be distributed under the terms of the GNU General Public License (GPL),
-+ * in which case the provisions of the GPL apply INSTEAD OF those given above.
-+ *
-+ * DISCLAIMER
-+ *
-+ * This software is provided 'as is' with no explicit or implied warranties
-+ * in respect of its properties, including, but not limited to, correctness
-+ * and/or fitness for purpose.
-+ * ---------------------------------------------------------------------------
-+ */
-+
-+struct uio {
-+ struct iovec *uio_iov;
-+ int uio_iovcnt;
-+ off_t uio_offset;
-+ int uio_resid;
-+#if 0
-+ enum uio_seg uio_segflg;
-+ enum uio_rw uio_rw;
-+ struct thread *uio_td;
-+#endif
-+};
-+
-+#endif
-diff --git a/drivers/char/random.c b/drivers/char/random.c
-index 6035ab8..8c3acdf 100644
---- a/drivers/char/random.c
-+++ b/drivers/char/random.c
-@@ -130,6 +130,9 @@
- * void add_interrupt_randomness(int irq);
- * void add_disk_randomness(struct gendisk *disk);
- *
-+ * void random_input_words(__u32 *buf, size_t wordcount, int ent_count)
-+ * int random_input_wait(void);
-+ *
- * add_input_randomness() uses the input layer interrupt timing, as well as
- * the event type information from the hardware.
- *
-@@ -147,6 +150,13 @@
- * seek times do not make for good sources of entropy, as their seek
- * times are usually fairly consistent.
- *
-+ * random_input_words() just provides a raw block of entropy to the input
-+ * pool, such as from a hardware entropy generator.
-+ *
-+ * random_input_wait() suspends the caller until such time as the
-+ * entropy pool falls below the write threshold, and returns a count of how
-+ * much entropy (in bits) is needed to sustain the pool.
-+ *
- * All of these routines try to estimate how many bits of randomness a
- * particular randomness source. They do this by keeping track of the
- * first and second order deltas of the event timings.
-@@ -722,6 +732,63 @@ void add_disk_randomness(struct gendisk *disk)
- }
- #endif
-
-+/*
-+ * random_input_words - add bulk entropy to pool
-+ *
-+ * @buf: buffer to add
-+ * @wordcount: number of __u32 words to add
-+ * @ent_count: total amount of entropy (in bits) to credit
-+ *
-+ * this provides bulk input of entropy to the input pool
-+ *
-+ */
-+void random_input_words(__u32 *buf, size_t wordcount, int ent_count)
-+{
-+ mix_pool_bytes(&input_pool, buf, wordcount*4);
-+
-+ credit_entropy_bits(&input_pool, ent_count);
-+
-+ DEBUG_ENT("crediting %d bits => %d\n",
-+ ent_count, input_pool.entropy_count);
-+ /*
-+ * Wake up waiting processes if we have enough
-+ * entropy.
-+ */
-+ if (input_pool.entropy_count >= random_read_wakeup_thresh)
-+ wake_up_interruptible(&random_read_wait);
-+}
-+EXPORT_SYMBOL(random_input_words);
-+
-+/*
-+ * random_input_wait - wait until random needs entropy
-+ *
-+ * this function sleeps until the /dev/random subsystem actually
-+ * needs more entropy, and then return the amount of entropy
-+ * that it would be nice to have added to the system.
-+ */
-+int random_input_wait(void)
-+{
-+ int count;
-+
-+ wait_event_interruptible(random_write_wait,
-+ input_pool.entropy_count < random_write_wakeup_thresh);
-+
-+ count = random_write_wakeup_thresh - input_pool.entropy_count;
-+
-+ /* likely we got woken up due to a signal */
-+ if (count <= 0) count = random_read_wakeup_thresh;
-+
-+ DEBUG_ENT("requesting %d bits from input_wait()er %d<%d\n",
-+ count,
-+ input_pool.entropy_count, random_write_wakeup_thresh);
-+
-+ return count;
-+}
-+EXPORT_SYMBOL(random_input_wait);
-+
-+
-+#define EXTRACT_SIZE 10
-+
- /*********************************************************************
- *
- * Entropy extraction routines
-diff --git a/fs/fcntl.c b/fs/fcntl.c
-index 22764c7..0ffe61f 100644
---- a/fs/fcntl.c
-+++ b/fs/fcntl.c
-@@ -142,6 +142,7 @@ SYSCALL_DEFINE1(dup, unsigned int, fildes)
- }
- return ret;
- }
-+EXPORT_SYMBOL(sys_dup);
-
- #define SETFL_MASK (O_APPEND | O_NONBLOCK | O_NDELAY | O_DIRECT | O_NOATIME)
-
-diff --git a/include/linux/miscdevice.h b/include/linux/miscdevice.h
-index c41d727..24b73c0 100644
---- a/include/linux/miscdevice.h
-+++ b/include/linux/miscdevice.h
-@@ -19,6 +19,7 @@
- #define APOLLO_MOUSE_MINOR 7
- #define PC110PAD_MINOR 9
- /*#define ADB_MOUSE_MINOR 10 FIXME OBSOLETE */
-+#define CRYPTODEV_MINOR 70 /* /dev/crypto */
- #define WATCHDOG_MINOR 130 /* Watchdog timer */
- #define TEMP_MINOR 131 /* Temperature Sensor */
- #define RTC_MINOR 135
-diff --git a/include/linux/random.h b/include/linux/random.h
-index 8f74538..0ff31a9 100644
---- a/include/linux/random.h
-+++ b/include/linux/random.h
-@@ -34,6 +34,30 @@
- /* Clear the entropy pool and associated counters. (Superuser only.) */
- #define RNDCLEARPOOL _IO( 'R', 0x06 )
-
-+#ifdef CONFIG_FIPS_RNG
-+
-+/* Size of seed value - equal to AES blocksize */
-+#define AES_BLOCK_SIZE_BYTES 16
-+#define SEED_SIZE_BYTES AES_BLOCK_SIZE_BYTES
-+/* Size of AES key */
-+#define KEY_SIZE_BYTES 16
-+
-+/* ioctl() structure used by FIPS 140-2 Tests */
-+struct rand_fips_test {
-+ unsigned char key[KEY_SIZE_BYTES]; /* Input */
-+ unsigned char datetime[SEED_SIZE_BYTES]; /* Input */
-+ unsigned char seed[SEED_SIZE_BYTES]; /* Input */
-+ unsigned char result[SEED_SIZE_BYTES]; /* Output */
-+};
-+
-+/* FIPS 140-2 RNG Variable Seed Test. (Superuser only.) */
-+#define RNDFIPSVST _IOWR('R', 0x10, struct rand_fips_test)
-+
-+/* FIPS 140-2 RNG Monte Carlo Test. (Superuser only.) */
-+#define RNDFIPSMCT _IOWR('R', 0x11, struct rand_fips_test)
-+
-+#endif /* #ifdef CONFIG_FIPS_RNG */
-+
- struct rand_pool_info {
- int entropy_count;
- int buf_size;
-@@ -54,6 +78,10 @@ extern void add_input_randomness(unsigned int type, unsigned int code,
- unsigned int value);
- extern void add_interrupt_randomness(int irq);
-
-+extern void random_input_words(__u32 *buf, size_t wordcount, int ent_count);
-+extern int random_input_wait(void);
-+#define HAS_RANDOM_INPUT_WAIT 1
-+
- extern void get_random_bytes(void *buf, int nbytes);
- void generate_random_uuid(unsigned char uuid_out[16]);
-
-diff --git a/kernel/pid.c b/kernel/pid.c
-index fa5f722..2bf49fd 100644
---- a/kernel/pid.c
-+++ b/kernel/pid.c
-@@ -428,6 +428,7 @@ struct task_struct *find_task_by_vpid(pid_t vnr)
- {
- return find_task_by_pid_ns(vnr, current->nsproxy->pid_ns);
- }
-+EXPORT_SYMBOL(find_task_by_vpid);
-
- struct pid *get_task_pid(struct task_struct *task, enum pid_type type)
- {
---
-1.7.0.4
diff --git a/recipes-kernel/linux/linux-am335x-psp-3.2/0002-Smartreflex-limited-to-ES-1.0.patch b/recipes-kernel/linux/linux-am335x-psp-3.2/0002-Smartreflex-limited-to-ES-1.0.patch
deleted file mode 100644
index dd07c40..0000000
--- a/recipes-kernel/linux/linux-am335x-psp-3.2/0002-Smartreflex-limited-to-ES-1.0.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 24051291ecae9c42697bd3217240205e17e95de3 Mon Sep 17 00:00:00 2001
-From: Greg Guyotte <gguyotte at ti.com>
-Date: Tue, 11 Dec 2012 21:53:24 -0600
-Subject: [PATCH 2/2] Smartreflex limited to ES 1.0
-
-Pending complete characterization of Smartreflex on ES 2.0 silicon,
-the smartreflex function is disabled. SR continues to operate
-normally on ES 1.0 silicon. If running on AM335x ES 2.0 silicon,
-the SR driver will cleanly abort, causing no side effects.
-
-Signed-off-by: Greg Guyotte <gguyotte at ti.com>
----
- arch/arm/mach-omap2/am33xx-smartreflex-class2.c | 6 ++++++
- 1 files changed, 6 insertions(+), 0 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/am33xx-smartreflex-class2.c b/arch/arm/mach-omap2/am33xx-smartreflex-class2.c
-index 3ed74b3..6a66e68 100644
---- a/arch/arm/mach-omap2/am33xx-smartreflex-class2.c
-+++ b/arch/arm/mach-omap2/am33xx-smartreflex-class2.c
-@@ -763,6 +763,12 @@ static int __init am33xx_sr_probe(struct platform_device *pdev)
- int ret;
- int i,j;
-
-+ if (omap_rev() != AM335X_REV_ES1_0) {
-+ dev_err(&pdev->dev, "%s: Smartreflex requires ES 1.0\n",
-+ __func__);
-+ return -EINVAL;
-+ }
-+
- sr_info = kzalloc(sizeof(struct am33xx_sr), GFP_KERNEL);
- if (!sr_info) {
- dev_err(&pdev->dev, "%s: unable to allocate sr_info\n",
---
-1.7.0.4
-
diff --git a/recipes-kernel/linux/linux-am335x-psp-3.2/0002-am335x-Add-suspend-resume-routines-to-crypto-driver.patch b/recipes-kernel/linux/linux-am335x-psp-3.2/0002-am335x-Add-suspend-resume-routines-to-crypto-driver.patch
deleted file mode 100644
index 6066c0a..0000000
--- a/recipes-kernel/linux/linux-am335x-psp-3.2/0002-am335x-Add-suspend-resume-routines-to-crypto-driver.patch
+++ /dev/null
@@ -1,147 +0,0 @@
-From 0fb328ec0a5ba8a1440336c8dc7a029cfffa4529 Mon Sep 17 00:00:00 2001
-From: Greg Turner <gregturner at ti.com>
-Date: Thu, 19 Jul 2012 15:27:59 -0500
-Subject: [PATCH 2/2] [am335x]: Add suspend resume routines to crypto driver
-
-* Add suspend resume routines to AES crypto driver
-* Add suspend resume routines to SHA crypto driver
-* Cleaned up some build warnings
----
- drivers/crypto/omap4-aes.c | 31 ++++++++++++++++++++++++++++---
- drivers/crypto/omap4-sham.c | 32 +++++++++++++++++++++++++++-----
- 2 files changed, 55 insertions(+), 8 deletions(-)
-
-diff --git a/drivers/crypto/omap4-aes.c b/drivers/crypto/omap4-aes.c
-index 76f988a..c7d08df 100755
---- a/drivers/crypto/omap4-aes.c
-+++ b/drivers/crypto/omap4-aes.c
-@@ -878,9 +878,9 @@ err_io:
- udelay(1);
-
-
--err_res:
-- kfree(dd);
-- dd = NULL;
-+//err_res:
-+ //kfree(dd);
-+ //dd = NULL;
- err_data:
- dev_err(dev, "initialization failed.\n");
- return err;
-@@ -916,12 +916,35 @@ static int omap4_aes_remove(struct platform_device *pdev)
- return 0;
- }
-
-+static int omap4_aes_suspend(struct device *dev)
-+{
-+ pr_debug("#### Crypto: Suspend call ####\n");
-+
-+ return 0;
-+}
-+
-+
-+static int omap4_aes_resume(struct device *dev)
-+{
-+ pr_debug("#### Crypto: resume call ####\n");
-+
-+ return 0;
-+}
-+
-+static struct dev_pm_ops omap4_aes_dev_pm_ops = {
-+ .suspend = omap4_aes_suspend,
-+ .resume = omap4_aes_resume,
-+ .runtime_suspend = omap4_aes_suspend,
-+ .runtime_resume = omap4_aes_resume,
-+};
-+
- static struct platform_driver omap4_aes_driver = {
- .probe = omap4_aes_probe,
- .remove = omap4_aes_remove,
- .driver = {
- .name = "omap4-aes",
- .owner = THIS_MODULE,
-+ .pm = &omap4_aes_dev_pm_ops
- },
- };
-
-@@ -944,6 +967,8 @@ static void __exit omap4_aes_mod_exit(void)
- platform_driver_unregister(&omap4_aes_driver);
- }
-
-+
-+
- module_init(omap4_aes_mod_init);
- module_exit(omap4_aes_mod_exit);
-
-diff --git a/drivers/crypto/omap4-sham.c b/drivers/crypto/omap4-sham.c
-index 21f1b48..2fb71b9 100755
---- a/drivers/crypto/omap4-sham.c
-+++ b/drivers/crypto/omap4-sham.c
-@@ -239,7 +239,7 @@ static void omap4_sham_copy_ready_hash(struct ahash_request *req)
- struct omap4_sham_reqctx *ctx = ahash_request_ctx(req);
- u32 *in = (u32 *)ctx->digest;
- u32 *hash = (u32 *)req->result;
-- int i, d;
-+ int i, d = 0;
-
- if (!hash)
- return;
-@@ -1224,8 +1224,6 @@ static void omap4_sham_dma_callback(unsigned int lch, u16 ch_status, void *data)
-
- static int omap4_sham_dma_init(struct omap4_sham_dev *dd)
- {
-- int err;
--
- dd->dma_lch = -1;
-
- dd->dma_lch = edma_alloc_channel(dd->dma, omap4_sham_dma_callback, dd, EVENTQ_2);
-@@ -1349,8 +1347,9 @@ io_err:
- pm_runtime_disable(dev);
- udelay(1);
-
--clk_err:
-- omap4_sham_dma_cleanup(dd);
-+//clk_err:
-+// omap4_sham_dma_cleanup(dd);
-+
- dma_err:
- if (dd->irq >= 0)
- free_irq(dd->irq, dd);
-@@ -1392,12 +1391,35 @@ static int __devexit omap4_sham_remove(struct platform_device *pdev)
- return 0;
- }
-
-+static int omap4_sham_suspend(struct device *dev)
-+{
-+ pr_debug("#### Crypto: Suspend call ####\n");
-+
-+ return 0;
-+}
-+
-+
-+static int omap4_sham_resume(struct device *dev)
-+{
-+ pr_debug("#### Crypto: resume call ####\n");
-+
-+ return 0;
-+}
-+
-+static struct dev_pm_ops omap4_sham_dev_pm_ops = {
-+ .suspend = omap4_sham_suspend,
-+ .resume = omap4_sham_resume,
-+ .runtime_suspend = omap4_sham_suspend,
-+ .runtime_resume = omap4_sham_resume,
-+};
-+
- static struct platform_driver omap4_sham_driver = {
- .probe = omap4_sham_probe,
- .remove = omap4_sham_remove,
- .driver = {
- .name = "omap4-sham",
- .owner = THIS_MODULE,
-+ .pm = &omap4_sham_dev_pm_ops
- },
- };
-
---
-1.7.0.4
diff --git a/recipes-kernel/linux/linux-am335x-psp-3.2/0002-am33x-Add-crypto-device-and-resource-structures.patch b/recipes-kernel/linux/linux-am335x-psp-3.2/0002-am33x-Add-crypto-device-and-resource-structures.patch
deleted file mode 100644
index eb0223c..0000000
--- a/recipes-kernel/linux/linux-am335x-psp-3.2/0002-am33x-Add-crypto-device-and-resource-structures.patch
+++ /dev/null
@@ -1,111 +0,0 @@
-From 8c0f7553e75774849463f90b0135874754650386 Mon Sep 17 00:00:00 2001
-From: Greg Turner <gregturner at ti.com>
-Date: Thu, 17 May 2012 14:45:05 -0500
-Subject: [PATCH 2/8] am33x: Add crypto device and resource structures
-
-* Add platform device and resource structures to devices.c
-* Structures are for the AES and SHA/MD5 crypto modules
-* Used in the OMAP4 crypto driver
-
-Signed-off-by: Greg Turner <gregturner at ti.com>
----
- arch/arm/mach-omap2/devices.c | 67 +++++++++++++++++++++++++++++++++++++++++
- 1 files changed, 67 insertions(+), 0 deletions(-)
- mode change 100644 => 100755 arch/arm/mach-omap2/devices.c
-
-diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c
-old mode 100644
-new mode 100755
-index 9e029da..5c6e3e2
---- a/arch/arm/mach-omap2/devices.c
-+++ b/arch/arm/mach-omap2/devices.c
-@@ -47,6 +47,7 @@
- #include <plat/omap_hwmod.h>
- #include <plat/omap_device.h>
- #include <plat/omap4-keypad.h>
-+#include <plat/am33xx.h>
- #include <plat/config_pwm.h>
- #include <plat/cpu.h>
- #include <plat/gpmc.h>
-@@ -702,6 +703,41 @@ static void omap_init_sham(void)
- }
- platform_device_register(&sham_device);
- }
-+
-+#elif defined(CONFIG_CRYPTO_DEV_OMAP4_SHAM) || defined(CONFIG_CRYPTO_DEV_OMAP4_SHAM_MODULE)
-+
-+static struct resource omap4_sham_resources[] = {
-+ {
-+ .start = AM33XX_SHA1MD5_P_BASE,
-+ .end = AM33XX_SHA1MD5_P_BASE + 0x120,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ {
-+ .start = AM33XX_IRQ_SHAEIP57t0_P,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+ {
-+ .start = AM33XX_DMA_SHAEIP57T0_DIN,
-+ .flags = IORESOURCE_DMA,
-+ }
-+};
-+
-+static int omap4_sham_resources_sz = ARRAY_SIZE(omap4_sham_resources);
-+
-+
-+static struct platform_device sham_device = {
-+ .name = "omap4-sham",
-+ .id = -1,
-+};
-+
-+static void omap_init_sham(void)
-+{
-+ sham_device.resource = omap4_sham_resources;
-+ sham_device.num_resources = omap4_sham_resources_sz;
-+
-+ platform_device_register(&sham_device);
-+}
-+
- #else
- static inline void omap_init_sham(void) { }
- #endif
-@@ -772,6 +808,37 @@ static void omap_init_aes(void)
- platform_device_register(&aes_device);
- }
-
-+#elif defined(CONFIG_CRYPTO_DEV_OMAP4_AES) || defined(CONFIG_CRYPTO_DEV_OMAP4_AES_MODULE)
-+
-+static struct resource omap4_aes_resources[] = {
-+ {
-+ .start = AM33XX_AES0_P_BASE,
-+ .end = AM33XX_AES0_P_BASE + 0x4C,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ {
-+ .start = AM33XX_DMA_AESEIP36T0_DOUT,
-+ .flags = IORESOURCE_DMA,
-+ },
-+ {
-+ .start = AM33XX_DMA_AESEIP36T0_DIN,
-+ .flags = IORESOURCE_DMA,
-+ }
-+};
-+static int omap4_aes_resources_sz = ARRAY_SIZE(omap4_aes_resources);
-+
-+static struct platform_device aes_device = {
-+ .name = "omap4-aes",
-+ .id = -1,
-+};
-+
-+static void omap_init_aes(void)
-+{
-+ aes_device.resource = omap4_aes_resources;
-+ aes_device.num_resources = omap4_aes_resources_sz;
-+ platform_device_register(&aes_device);
-+}
-+
- #else
- static inline void omap_init_aes(void) { }
- #endif
---
-1.7.0.4
diff --git a/recipes-kernel/linux/linux-am335x-psp-3.2/0002-am33xx-Enable-CONFIG_AM33XX_SMARTREFLEX.patch b/recipes-kernel/linux/linux-am335x-psp-3.2/0002-am33xx-Enable-CONFIG_AM33XX_SMARTREFLEX.patch
deleted file mode 100644
index 04e3bee..0000000
--- a/recipes-kernel/linux/linux-am335x-psp-3.2/0002-am33xx-Enable-CONFIG_AM33XX_SMARTREFLEX.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From e1b7a67fc82991a633f0ed615d69157c98c1c35d Mon Sep 17 00:00:00 2001
-From: Greg Guyotte <gguyotte at ti.com>
-Date: Thu, 7 Jun 2012 18:15:21 -0500
-Subject: [PATCH 2/2] am33xx: Enable CONFIG_AM33XX_SMARTREFLEX
-
-Simply enables the SmartReflex driver in the defconfig file.
-
-Signed-off-by: Greg Guyotte <gguyotte at ti.com>
----
- arch/arm/configs/am335x_evm_defconfig | 1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-diff --git a/arch/arm/configs/am335x_evm_defconfig b/arch/arm/configs/am335x_evm_defconfig
-index de1eaad..ce5d1d6 100644
---- a/arch/arm/configs/am335x_evm_defconfig
-+++ b/arch/arm/configs/am335x_evm_defconfig
-@@ -269,6 +269,7 @@ CONFIG_ARCH_OMAP2PLUS=y
- # OMAP Feature Selections
- #
- # CONFIG_OMAP_SMARTREFLEX is not set
-+CONFIG_AM33XX_SMARTREFLEX=y
- CONFIG_OMAP_RESET_CLOCKS=y
- CONFIG_OMAP_MUX=y
- CONFIG_OMAP_MUX_DEBUG=y
---
-1.7.0.4
diff --git a/recipes-kernel/linux/linux-am335x-psp-3.2/0002-crypto-omap4-sham-Use-finer-grained-PM-management.patch b/recipes-kernel/linux/linux-am335x-psp-3.2/0002-crypto-omap4-sham-Use-finer-grained-PM-management.patch
deleted file mode 100644
index 8890f3b..0000000
--- a/recipes-kernel/linux/linux-am335x-psp-3.2/0002-crypto-omap4-sham-Use-finer-grained-PM-management.patch
+++ /dev/null
@@ -1,98 +0,0 @@
-From 0c910915e0b14538e4a539a26a1c632d29ed7131 Mon Sep 17 00:00:00 2001
-From: "Mark A. Greer" <mgreer at animalcreek.com>
-Date: Tue, 11 Dec 2012 09:40:05 -0700
-Subject: [PATCH 02/10] crypto: omap4-sham: Use finer-grained PM management
-
-Currently, the pm_runtime calls in omap4-sham enable
-things when the driver is probed and leave them enabled
-until the driver is removed. To fix this, move the
-pm_runtime calls to only enable the sham module when
-its actually in use.
-
-Signed-off-by: Mark A. Greer <mgreer at animalcreek.com>
----
- drivers/crypto/omap4-sham.c | 23 ++++++++---------------
- 1 file changed, 8 insertions(+), 15 deletions(-)
-
-diff --git a/drivers/crypto/omap4-sham.c b/drivers/crypto/omap4-sham.c
-index 2fb71b9..6985c87 100644
---- a/drivers/crypto/omap4-sham.c
-+++ b/drivers/crypto/omap4-sham.c
-@@ -138,7 +138,6 @@ struct omap4_sham_dev {
- struct device *dev;
- void __iomem *io_base;
- int irq;
-- struct clk *iclk;
- spinlock_t lock;
- int err;
- int dma;
-@@ -701,6 +700,8 @@ static void omap4_sham_finish_req(struct ahash_request *req, int err)
- dd->dflags &= ~(BIT(FLAGS_BUSY) | BIT(FLAGS_FINAL) | BIT(FLAGS_CPU) |
- BIT(FLAGS_DMA_READY) | BIT(FLAGS_OUTPUT_READY));
-
-+ pm_runtime_put_sync(dd->dev);
-+
- if (req->base.complete)
- req->base.complete(&req->base, err);
-
-@@ -742,6 +743,8 @@ static int omap4_sham_handle_queue(struct omap4_sham_dev *dd,
- dev_dbg(dd->dev, "handling new req, op: %lu, nbytes: %d\n",
- ctx->op, req->nbytes);
-
-+ pm_runtime_get_sync(dd->dev);
-+
- if (!test_bit(FLAGS_INIT, &dd->dflags)) {
- set_bit(FLAGS_INIT, &dd->dflags);
- dd->err = 0;
-@@ -1306,11 +1309,6 @@ static int __devinit omap4_sham_probe(struct platform_device *pdev)
- if (err)
- goto dma_err;
-
-- pm_runtime_enable(dev);
-- udelay(1);
-- pm_runtime_get_sync(dev);
-- udelay(1);
--
- dd->io_base = ioremap(dd->phys_base, SZ_4K);
- if (!dd->io_base) {
- dev_err(dev, "can't ioremap\n");
-@@ -1318,7 +1316,11 @@ static int __devinit omap4_sham_probe(struct platform_device *pdev)
- goto io_err;
- }
-
-+
-+ pm_runtime_enable(dev);
-+ pm_runtime_get_sync(dev);
- reg = omap4_sham_read(dd, SHA_REG_REV);
-+ pm_runtime_put_sync(&pdev->dev);
-
- dev_info(dev, "AM33X SHA/MD5 hw accel rev: %u.%02u\n",
- (reg & SHA_REG_REV_X_MAJOR_MASK) >> 8, reg & SHA_REG_REV_Y_MINOR_MASK);
-@@ -1342,13 +1344,7 @@ err_algs:
- crypto_unregister_ahash(&algs[j]);
- iounmap(dd->io_base);
- io_err:
-- pm_runtime_put_sync(dev);
-- udelay(1);
- pm_runtime_disable(dev);
-- udelay(1);
--
--//clk_err:
--// omap4_sham_dma_cleanup(dd);
-
- dma_err:
- if (dd->irq >= 0)
-@@ -1377,10 +1373,7 @@ static int __devexit omap4_sham_remove(struct platform_device *pdev)
- crypto_unregister_ahash(&algs[i]);
- tasklet_kill(&dd->done_task);
- iounmap(dd->io_base);
-- pm_runtime_put_sync(&pdev->dev);
-- udelay(1);
- pm_runtime_disable(&pdev->dev);
-- udelay(1);
-
- omap4_sham_dma_cleanup(dd);
- if (dd->irq >= 0)
---
-1.7.12
-
diff --git a/recipes-kernel/linux/linux-am335x-psp-3.2/0003-am33x-Add-crypto-device-and-resource-structure-for-T.patch b/recipes-kernel/linux/linux-am335x-psp-3.2/0003-am33x-Add-crypto-device-and-resource-structure-for-T.patch
deleted file mode 100644
index def61d5..0000000
--- a/recipes-kernel/linux/linux-am335x-psp-3.2/0003-am33x-Add-crypto-device-and-resource-structure-for-T.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From b7477dd40221a91af286bffa110879075a498943 Mon Sep 17 00:00:00 2001
-From: Greg Turner <gregturner at ti.com>
-Date: Thu, 17 May 2012 14:49:39 -0500
-Subject: [PATCH 3/8] am33x: Add crypto device and resource structure for TRNG
-
-* Add platform device and resource structure to devices.c
-* Structures are for the TRNG crypto module
-* Used in the OMAP4 crypto driver
-
-Signed-off-by: Greg Turner <gregturner at ti.com>
----
- arch/arm/plat-omap/devices.c | 23 +++++++++++++++++++++++
- 1 files changed, 23 insertions(+), 0 deletions(-)
- mode change 100644 => 100755 arch/arm/plat-omap/devices.c
-
-diff --git a/arch/arm/plat-omap/devices.c b/arch/arm/plat-omap/devices.c
-old mode 100644
-new mode 100755
-index 1971932..52720b4
---- a/arch/arm/plat-omap/devices.c
-+++ b/arch/arm/plat-omap/devices.c
-@@ -26,6 +26,7 @@
- #include <plat/mmc.h>
- #include <plat/menelaus.h>
- #include <plat/omap44xx.h>
-+#include <plat/am33xx.h>
-
- #if defined(CONFIG_MMC_OMAP) || defined(CONFIG_MMC_OMAP_MODULE) || \
- defined(CONFIG_MMC_OMAP_HS) || defined(CONFIG_MMC_OMAP_HS_MODULE)
-@@ -104,6 +105,28 @@ static void omap_init_rng(void)
- {
- (void) platform_device_register(&omap_rng_device);
- }
-+#elif defined(CONFIG_HW_RANDOM_OMAP4) || defined(CONFIG_HW_RANDOM_OMAP4_MODULE)
-+
-+static struct resource rng_resources[] = {
-+ {
-+ .start = AM33XX_RNG_BASE,
-+ .end = AM33XX_RNG_BASE + 0x1FFC,
-+ .flags = IORESOURCE_MEM,
-+ },
-+};
-+
-+static struct platform_device omap4_rng_device = {
-+ .name = "omap4_rng",
-+ .id = -1,
-+ .num_resources = ARRAY_SIZE(rng_resources),
-+ .resource = rng_resources,
-+};
-+
-+static void omap_init_rng(void)
-+{
-+ (void) platform_device_register(&omap4_rng_device);
-+}
-+
- #else
- static inline void omap_init_rng(void) {}
- #endif
---
-1.7.0.4
diff --git a/recipes-kernel/linux/linux-am335x-psp-3.2/0003-crypto-omap4-sham-Add-suspend-resume-PM-support.patch b/recipes-kernel/linux/linux-am335x-psp-3.2/0003-crypto-omap4-sham-Add-suspend-resume-PM-support.patch
deleted file mode 100644
index 4b9a9bc..0000000
--- a/recipes-kernel/linux/linux-am335x-psp-3.2/0003-crypto-omap4-sham-Add-suspend-resume-PM-support.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From b0a47b49a61db95fdb2340548b967bdfe085df2d Mon Sep 17 00:00:00 2001
-From: "Mark A. Greer" <mgreer at animalcreek.com>
-Date: Wed, 12 Dec 2012 00:43:45 -0700
-Subject: [PATCH 03/10] crypto: omap4-sham: Add suspend/resume PM support
-
-Add suspend/resume PM support to the omap4-sham driver
-
-Signed-off-by: Mark A. Greer <mgreer at animalcreek.com>
----
- drivers/crypto/omap4-sham.c | 13 ++++---------
- 1 file changed, 4 insertions(+), 9 deletions(-)
-
-diff --git a/drivers/crypto/omap4-sham.c b/drivers/crypto/omap4-sham.c
-index 6985c87..963d0e1 100644
---- a/drivers/crypto/omap4-sham.c
-+++ b/drivers/crypto/omap4-sham.c
-@@ -1386,24 +1386,19 @@ static int __devexit omap4_sham_remove(struct platform_device *pdev)
-
- static int omap4_sham_suspend(struct device *dev)
- {
-- pr_debug("#### Crypto: Suspend call ####\n");
--
-+ pm_runtime_put_sync(dev);
- return 0;
- }
-
-
- static int omap4_sham_resume(struct device *dev)
- {
-- pr_debug("#### Crypto: resume call ####\n");
--
-+ pm_runtime_get_sync(dev);
- return 0;
- }
-
- static struct dev_pm_ops omap4_sham_dev_pm_ops = {
-- .suspend = omap4_sham_suspend,
-- .resume = omap4_sham_resume,
-- .runtime_suspend = omap4_sham_suspend,
-- .runtime_resume = omap4_sham_resume,
-+ SET_SYSTEM_SLEEP_PM_OPS(omap4_sham_suspend, omap4_sham_resume)
- };
-
- static struct platform_driver omap4_sham_driver = {
-@@ -1412,7 +1407,7 @@ static struct platform_driver omap4_sham_driver = {
- .driver = {
- .name = "omap4-sham",
- .owner = THIS_MODULE,
-- .pm = &omap4_sham_dev_pm_ops
-+ .pm = &omap4_sham_dev_pm_ops
- },
- };
-
---
-1.7.12
-
diff --git a/recipes-kernel/linux/linux-am335x-psp-3.2/0004-am33x-Add-crypto-drivers-to-Kconfig-and-Makefiles.patch b/recipes-kernel/linux/linux-am335x-psp-3.2/0004-am33x-Add-crypto-drivers-to-Kconfig-and-Makefiles.patch
deleted file mode 100644
index 31d8363..0000000
--- a/recipes-kernel/linux/linux-am335x-psp-3.2/0004-am33x-Add-crypto-drivers-to-Kconfig-and-Makefiles.patch
+++ /dev/null
@@ -1,124 +0,0 @@
-From e49e6dcff5665cb2f132d9654a060fa43a382810 Mon Sep 17 00:00:00 2001
-From: Greg Turner <gregturner at ti.com>
-Date: Thu, 17 May 2012 14:53:25 -0500
-Subject: [PATCH 4/8] am33x: Add crypto drivers to Kconfig and Makefiles
-
-* Add OMAP4 TRNG driver to hw_random Kconfig and Makefile
-* Add OMAP4 AES and SHA/MD5 driver to crypto Kconfig and Makefile
-* Needed so that drivers can be selected during kernel config
-
-Signed-off-by: Greg Turner <gregturner at ti.com>
----
- drivers/char/hw_random/Kconfig | 13 +++++++++++++
- drivers/char/hw_random/Makefile | 1 +
- drivers/crypto/Kconfig | 22 ++++++++++++++++++++--
- drivers/crypto/Makefile | 2 ++
- 4 files changed, 36 insertions(+), 2 deletions(-)
- mode change 100644 => 100755 drivers/char/hw_random/Kconfig
- mode change 100644 => 100755 drivers/char/hw_random/Makefile
- mode change 100644 => 100755 drivers/crypto/Kconfig
- mode change 100644 => 100755 drivers/crypto/Makefile
-
-diff --git a/drivers/char/hw_random/Kconfig b/drivers/char/hw_random/Kconfig
-old mode 100644
-new mode 100755
-index 0689bf6..207e3e7
---- a/drivers/char/hw_random/Kconfig
-+++ b/drivers/char/hw_random/Kconfig
-@@ -139,6 +139,19 @@ config HW_RANDOM_OMAP
-
- If unsure, say Y.
-
-+config HW_RANDOM_OMAP4
-+ tristate "OMAP4 Random Number Generator support"
-+ depends on HW_RANDOM && SOC_OMAPAM33XX
-+ default HW_RANDOM
-+ ---help---
-+ This driver provides kernel-side support for the Random Number
-+ Generator hardware found on OMAP4 derived processors.
-+
-+ To compile this driver as a module, choose M here: the
-+ module will be called omap4-rng.
-+
-+ If unsure, say Y.
-+
- config HW_RANDOM_OCTEON
- tristate "Octeon Random Number Generator support"
- depends on HW_RANDOM && CPU_CAVIUM_OCTEON
-diff --git a/drivers/char/hw_random/Makefile b/drivers/char/hw_random/Makefile
-old mode 100644
-new mode 100755
-index b2ff526..fecced0
---- a/drivers/char/hw_random/Makefile
-+++ b/drivers/char/hw_random/Makefile
-@@ -14,6 +14,7 @@ n2-rng-y := n2-drv.o n2-asm.o
- obj-$(CONFIG_HW_RANDOM_VIA) += via-rng.o
- obj-$(CONFIG_HW_RANDOM_IXP4XX) += ixp4xx-rng.o
- obj-$(CONFIG_HW_RANDOM_OMAP) += omap-rng.o
-+obj-$(CONFIG_HW_RANDOM_OMAP4) += omap4-rng.o
- obj-$(CONFIG_HW_RANDOM_PASEMI) += pasemi-rng.o
- obj-$(CONFIG_HW_RANDOM_VIRTIO) += virtio-rng.o
- obj-$(CONFIG_HW_RANDOM_TX4939) += tx4939-rng.o
-diff --git a/drivers/crypto/Kconfig b/drivers/crypto/Kconfig
-old mode 100644
-new mode 100755
-index 6d16b4b..6c1331a
---- a/drivers/crypto/Kconfig
-+++ b/drivers/crypto/Kconfig
-@@ -250,7 +250,7 @@ config CRYPTO_DEV_PPC4XX
-
- config CRYPTO_DEV_OMAP_SHAM
- tristate "Support for OMAP SHA1/MD5 hw accelerator"
-- depends on ARCH_OMAP2 || ARCH_OMAP3
-+ depends on (ARCH_OMAP2) || (ARCH_OMAP3) && (!SOC_OMAPAM33XX)
- select CRYPTO_SHA1
- select CRYPTO_MD5
- help
-@@ -259,12 +259,30 @@ config CRYPTO_DEV_OMAP_SHAM
-
- config CRYPTO_DEV_OMAP_AES
- tristate "Support for OMAP AES hw engine"
-- depends on ARCH_OMAP2 || ARCH_OMAP3
-+ depends on (ARCH_OMAP2) || (ARCH_OMAP3) && (!SOC_OMAPAM33XX)
- select CRYPTO_AES
- help
- OMAP processors have AES module accelerator. Select this if you
- want to use the OMAP module for AES algorithms.
-
-+config CRYPTO_DEV_OMAP4_AES
-+ tristate "Support for OMAP4 AES hw engine"
-+ depends on SOC_OMAPAM33XX
-+ select CRYPTO_AES
-+ help
-+ OMAP4 -based processors have AES module accelerators. Select this if you
-+ want to use the OMAP4 module for AES algorithms.
-+
-+config CRYPTO_DEV_OMAP4_SHAM
-+ tristate "Support for OMAP4 SHA/MD5 hw engine"
-+ depends on SOC_OMAPAM33XX
-+ select CRYPTO_SHA1
-+ select CRYPTO_SHA256
-+ select CRYPTO_MD5
-+ help
-+ OMAP4 -based processors have SHA/MD5 module accelerators. Select this if you
-+ want to use the OMAP4 module for SHA/MD5 algorithms.
-+
- config CRYPTO_DEV_PICOXCELL
- tristate "Support for picoXcell IPSEC and Layer2 crypto engines"
- depends on ARCH_PICOXCELL && HAVE_CLK
-diff --git a/drivers/crypto/Makefile b/drivers/crypto/Makefile
-old mode 100644
-new mode 100755
-index 53ea501..5b420a5
---- a/drivers/crypto/Makefile
-+++ b/drivers/crypto/Makefile
-@@ -11,5 +11,7 @@ obj-$(CONFIG_CRYPTO_DEV_IXP4XX) += ixp4xx_crypto.o
- obj-$(CONFIG_CRYPTO_DEV_PPC4XX) += amcc/
- obj-$(CONFIG_CRYPTO_DEV_OMAP_SHAM) += omap-sham.o
- obj-$(CONFIG_CRYPTO_DEV_OMAP_AES) += omap-aes.o
-+obj-$(CONFIG_CRYPTO_DEV_OMAP4_AES) += omap4-aes.o
-+obj-$(CONFIG_CRYPTO_DEV_OMAP4_SHAM) += omap4-sham.o
- obj-$(CONFIG_CRYPTO_DEV_PICOXCELL) += picoxcell_crypto.o
- obj-$(CONFIG_CRYPTO_DEV_S5P) += s5p-sss.o
---
-1.7.0.4
diff --git a/recipes-kernel/linux/linux-am335x-psp-3.2/0004-crypto-omap4-sham-Don-t-use-hardcoded-base-address.patch b/recipes-kernel/linux/linux-am335x-psp-3.2/0004-crypto-omap4-sham-Don-t-use-hardcoded-base-address.patch
deleted file mode 100644
index 76c7027..0000000
--- a/recipes-kernel/linux/linux-am335x-psp-3.2/0004-crypto-omap4-sham-Don-t-use-hardcoded-base-address.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From 08ea4b77652956c07b91b4de670ebc44f1395840 Mon Sep 17 00:00:00 2001
-From: "Mark A. Greer" <mgreer at animalcreek.com>
-Date: Tue, 11 Dec 2012 20:33:15 -0700
-Subject: [PATCH 04/10] crypto: omap4-sham: Don't use hardcoded base address
-
-The omap4-sham driver currently uses a hardcoded base
-address for its register set instead of the address
-passed in by the system. Instead, use the address
-passed in by the system.
-
-Signed-off-by: Mark A. Greer <mgreer at animalcreek.com>
----
- drivers/crypto/omap4-sham.c | 16 +++++++---------
- 1 file changed, 7 insertions(+), 9 deletions(-)
-
-diff --git a/drivers/crypto/omap4-sham.c b/drivers/crypto/omap4-sham.c
-index 963d0e1..b2fc03a 100644
---- a/drivers/crypto/omap4-sham.c
-+++ b/drivers/crypto/omap4-sham.c
-@@ -1271,15 +1271,13 @@ static int __devinit omap4_sham_probe(struct platform_device *pdev)
- dd->irq = -1;
-
- /* Get the base address */
-- //res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-- //if (!res) {
-- // dev_err(dev, "no MEM resource info\n");
-- // err = -ENODEV;
-- // goto res_err;
-- //}
--
-- //dd->phys_base = res->start;
-- dd->phys_base = AM33XX_SHA1MD5_P_BASE;
-+ res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-+ if (!res) {
-+ dev_err(dev, "no MEM resource info\n");
-+ err = -ENODEV;
-+ goto res_err;
-+ }
-+ dd->phys_base = res->start;
-
- /* Get the DMA */
- res = platform_get_resource(pdev, IORESOURCE_DMA, 0);
---
-1.7.12
-
diff --git a/recipes-kernel/linux/linux-am335x-psp-3.2/0005-ARM-AM33xx-hwmod-Convert-AES0-crypto-device-data-to-.patch b/recipes-kernel/linux/linux-am335x-psp-3.2/0005-ARM-AM33xx-hwmod-Convert-AES0-crypto-device-data-to-.patch
deleted file mode 100644
index 6aebef6..0000000
--- a/recipes-kernel/linux/linux-am335x-psp-3.2/0005-ARM-AM33xx-hwmod-Convert-AES0-crypto-device-data-to-.patch
+++ /dev/null
@@ -1,165 +0,0 @@
-From ff9e06c41de00f281dd21ed66e8477d933ce69dd Mon Sep 17 00:00:00 2001
-From: "Mark A. Greer" <mgreer at animalcreek.com>
-Date: Tue, 11 Dec 2012 20:46:49 -0700
-Subject: [PATCH 05/10] ARM: AM33xx: hwmod: Convert AES0 crypto device data to
- hwmod
-
-Convert the device data for the AM33xx AES0 crypto modules
-from explicit platform_data to hwmod.
-
-Signed-off-by: Mark A. Greer <mgreer at animalcreek.com>
----
- arch/arm/mach-omap2/devices.c | 65 ++++--------------------------
- arch/arm/mach-omap2/omap_hwmod_33xx_data.c | 32 +++++++++++++++
- 2 files changed, 39 insertions(+), 58 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c
-index 3679369..e4caa06 100644
---- a/arch/arm/mach-omap2/devices.c
-+++ b/arch/arm/mach-omap2/devices.c
-@@ -809,69 +809,18 @@ static void omap_init_aes(void)
- }
-
- #elif defined(CONFIG_CRYPTO_DEV_OMAP4_AES) || defined(CONFIG_CRYPTO_DEV_OMAP4_AES_MODULE)
--
--static struct resource omap4_aes_resources[] = {
-- {
-- .start = AM33XX_AES0_P_BASE,
-- .end = AM33XX_AES0_P_BASE + 0x4C,
-- .flags = IORESOURCE_MEM,
-- },
-- {
-- .start = AM33XX_DMA_AESEIP36T0_DOUT,
-- .flags = IORESOURCE_DMA,
-- },
-- {
-- .start = AM33XX_DMA_AESEIP36T0_DIN,
-- .flags = IORESOURCE_DMA,
-- }
--};
--static int omap4_aes_resources_sz = ARRAY_SIZE(omap4_aes_resources);
--
--static struct platform_device aes_device = {
-- .name = "omap4-aes",
-- .id = -1,
--};
--
--#if 0
--static void omap_init_aes(void)
-+static void __init omap_init_aes(void)
- {
-- aes_device.resource = omap4_aes_resources;
-- aes_device.num_resources = omap4_aes_resources_sz;
-- platform_device_register(&aes_device);
--}
--#endif
--
--int __init omap_init_aes(void)
--{
-- int id = -1;
-- struct platform_device *pdev;
- struct omap_hwmod *oh;
-- char *oh_name = "aes0";
-- char *name = "omap4-aes";
--
-- oh = omap_hwmod_lookup(oh_name);
-- if (!oh) {
-- pr_err("Could not look up %s\n", oh_name);
-- return -ENODEV;
-- }
--
-- pdev = omap_device_build(name, id, oh, NULL, 0, NULL, 0, 0);
-- //pdev.resource = omap4_sham_resources;
-- //pdev.num_resources = omap4_sham_resources_sz;
-+ struct platform_device *pdev;
-
-- if (IS_ERR(pdev)) {
-- WARN(1, "Can't build omap_device for %s:%s.\n",
-- name, oh->name);
-- return PTR_ERR(pdev);
-- }
-+ oh = omap_hwmod_lookup("aes0");
-+ if (!oh)
-+ return;
-
-- return 0;
-+ pdev = omap_device_build("omap4-aes", -1, oh, NULL, 0, NULL, 0, 0);
-+ WARN(IS_ERR(pdev), "Can't build omap_device for omap-aes\n");
- }
--
--
--
--
--
- #else
- static inline void omap_init_aes(void) { }
- #endif
-diff --git a/arch/arm/mach-omap2/omap_hwmod_33xx_data.c b/arch/arm/mach-omap2/omap_hwmod_33xx_data.c
-index ad606c6..90e25d7 100644
---- a/arch/arm/mach-omap2/omap_hwmod_33xx_data.c
-+++ b/arch/arm/mach-omap2/omap_hwmod_33xx_data.c
-@@ -78,6 +78,7 @@ static struct omap_hwmod am33xx_spi0_hwmod;
- static struct omap_hwmod am33xx_spi1_hwmod;
- static struct omap_hwmod am33xx_elm_hwmod;
- static struct omap_hwmod am33xx_adc_tsc_hwmod;
-+static struct omap_hwmod am33xx_aes0_hwmod;
- static struct omap_hwmod am33xx_rtc_hwmod;
- static struct omap_hwmod am33xx_sha0_hwmod;
- static struct omap_hwmod am33xx_mcasp0_hwmod;
-@@ -427,8 +428,16 @@ static struct omap_hwmod am33xx_adc_tsc_hwmod = {
- };
-
- /* 'aes' class */
-+static struct omap_hwmod_class_sysconfig am33xx_aes_sysc = {
-+ .rev_offs = 0x80,
-+ .sysc_offs = 0x84,
-+ .syss_offs = 0x88,
-+ .sysc_flags = SYSS_HAS_RESET_STATUS,
-+};
-+
- static struct omap_hwmod_class am33xx_aes_hwmod_class = {
- .name = "aes",
-+ .sysc = &am33xx_aes_sysc,
- };
-
- /* aes0 */
-@@ -443,6 +452,27 @@ static struct omap_hwmod_dma_info am33xx_aes0_dma[] = {
- { .dma_req = -1 }
- };
-
-+static struct omap_hwmod_addr_space am33xx_aes0_addrs[] = {
-+ {
-+ .pa_start = 0x53500000,
-+ .pa_end = 0x53500000 + SZ_1M - 1,
-+ .flags = ADDR_TYPE_RT
-+ },
-+ { }
-+};
-+
-+static struct omap_hwmod_ocp_if am33xx_l3_main__aes0 = {
-+ .master = &am33xx_l3_main_hwmod,
-+ .slave = &am33xx_aes0_hwmod,
-+ .clk = "aes0_fck",
-+ .addr = am33xx_aes0_addrs,
-+ .user = OCP_USER_MPU | OCP_USER_SDMA,
-+};
-+
-+static struct omap_hwmod_ocp_if *am33xx_aes0_slaves[] = {
-+ &am33xx_l3_main__aes0,
-+};
-+
- static struct omap_hwmod am33xx_aes0_hwmod = {
- .name = "aes0",
- .class = &am33xx_aes_hwmod_class,
-@@ -456,6 +486,8 @@ static struct omap_hwmod am33xx_aes0_hwmod = {
- .modulemode = MODULEMODE_SWCTRL,
- },
- },
-+ .slaves = am33xx_aes0_slaves,
-+ .slaves_cnt = ARRAY_SIZE(am33xx_aes0_slaves),
- };
-
- /* cefuse */
---
-1.7.12
-
diff --git a/recipes-kernel/linux/linux-am335x-psp-3.2/0005-am33x-Create-header-file-for-OMAP4-crypto-modules.patch b/recipes-kernel/linux/linux-am335x-psp-3.2/0005-am33x-Create-header-file-for-OMAP4-crypto-modules.patch
deleted file mode 100644
index 94d89e5..0000000
--- a/recipes-kernel/linux/linux-am335x-psp-3.2/0005-am33x-Create-header-file-for-OMAP4-crypto-modules.patch
+++ /dev/null
@@ -1,213 +0,0 @@
-From 2dc9dec7510746b3c3f5420f4f3ab8395cc7b012 Mon Sep 17 00:00:00 2001
-From: Greg Turner <gregturner at ti.com>
-Date: Thu, 17 May 2012 14:59:38 -0500
-Subject: [PATCH 5/8] am33x: Create header file for OMAP4 crypto modules
-
-* This header file defines addresses and macros used to access crypto modules on OMAP4 derivative SOC's like AM335x.
-
-Signed-off-by: Greg Turner <gregturner at ti.com>
----
- drivers/crypto/omap4.h | 192 ++++++++++++++++++++++++++++++++++++++++++++++++
- 1 files changed, 192 insertions(+), 0 deletions(-)
- create mode 100644 drivers/crypto/omap4.h
-
-diff --git a/drivers/crypto/omap4.h b/drivers/crypto/omap4.h
-new file mode 100644
-index 0000000..d9d6315
---- /dev/null
-+++ b/drivers/crypto/omap4.h
-@@ -0,0 +1,192 @@
-+/*
-+ * drivers/crypto/omap4.h
-+ *
-+ * Copyright © 2011 Texas Instruments Incorporated
-+ * Author: Greg Turner
-+ *
-+ * Adapted from Netra/Centaurus crypto driver
-+ * Copyright © 2011 Texas Instruments Incorporated
-+ * Author: Herman Schuurman
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-+ */
-+#ifndef __DRIVERS_CRYPTO_AM33X_H
-+#define __DRIVERS_CRYPTO_AM33X_H
-+
-+/* ==================================================================== */
-+/** Crypto subsystem module layout
-+ */
-+/* ==================================================================== */
-+
-+#define AM33X_AES_CLKCTRL (AM33XX_PRCM_BASE + 0x00000094)
-+#define AM33X_SHA_CLKCTRL (AM33XX_PRCM_BASE + 0x000000A0)
-+
-+#define FLD_MASK(start, end) (((1 << ((start) - (end) + 1)) - 1) << (end))
-+#define FLD_VAL(val, start, end) (((val) << (end)) & FLD_MASK(start, end))
-+
-+/* ==================================================================== */
-+/** AES module layout
-+ */
-+/* ==================================================================== */
-+
-+#define AES_REG_KEY2(x) (0x1C - ((x ^ 0x01) * 0x04))
-+#define AES_REG_KEY1(x) (0x3C - ((x ^ 0x01) * 0x04))
-+#define AES_REG_IV(x) (0x40 + ((x) * 0x04))
-+
-+#define AES_REG_CTRL 0x50
-+#define AES_REG_CTRL_CTX_RDY (1 << 31)
-+#define AES_REG_CTRL_SAVE_CTX_RDY (1 << 30)
-+#define AES_REG_CTRL_SAVE_CTX (1 << 29)
-+#define AES_REG_CTRL_CCM_M_MASK (7 << 22)
-+#define AES_REG_CTRL_CCM_M_SHFT 22
-+#define AES_REG_CTRL_CCM_L_MASK (7 << 19)
-+#define AES_REG_CTRL_CCM_L_SHFT 19
-+#define AES_REG_CTRL_CCM (1 << 18)
-+#define AES_REG_CTRL_GCM (3 << 16)
-+#define AES_REG_CTRL_CBCMAC (1 << 15)
-+#define AES_REG_CTRL_F9 (1 << 14)
-+#define AES_REG_CTRL_F8 (1 << 13)
-+#define AES_REG_CTRL_XTS_MASK (3 << 11)
-+#define AES_REG_CTRL_XTS_01 (1 << 11)
-+#define AES_REG_CTRL_XTS_10 (2 << 11)
-+#define AES_REG_CTRL_XTS_11 (3 << 11)
-+#define AES_REG_CTRL_CFB (1 << 10)
-+#define AES_REG_CTRL_ICM (1 << 9)
-+#define AES_REG_CTRL_CTR_WIDTH_MASK (3 << 7)
-+#define AES_REG_CTRL_CTR_WIDTH_32 (0 << 7)
-+#define AES_REG_CTRL_CTR_WIDTH_64 (1 << 7)
-+#define AES_REG_CTRL_CTR_WIDTH_96 (2 << 7)
-+#define AES_REG_CTRL_CTR_WIDTH_128 (3 << 7)
-+#define AES_REG_CTRL_CTR (1 << 6)
-+#define AES_REG_CTRL_CBC (1 << 5)
-+#define AES_REG_CTRL_KEY_SIZE_MASK (3 << 3)
-+#define AES_REG_CTRL_KEY_SIZE_128 (1 << 3)
-+#define AES_REG_CTRL_KEY_SIZE_192 (2 << 3)
-+#define AES_REG_CTRL_KEY_SIZE_256 (3 << 3)
-+#define AES_REG_CTRL_DIRECTION (1 << 2)
-+#define AES_REG_CTRL_INPUT_RDY (1 << 1)
-+#define AES_REG_CTRL_OUTPUT_RDY (1 << 0)
-+
-+#define AES_REG_LENGTH_N(x) (0x54 + ((x) * 0x04))
-+#define AES_REG_AUTH_LENGTH 0x5C
-+#define AES_REG_DATA 0x60
-+#define AES_REG_DATA_N(x) (0x60 + ((x) * 0x04))
-+#define AES_REG_TAG 0x70
-+#define AES_REG_TAG_N(x) (0x70 + ((x) * 0x04))
-+
-+#define AES_REG_REV 0x80
-+#define AES_REG_REV_SCHEME_MASK (3 << 30)
-+#define AES_REG_REV_FUNC_MASK (0xFFF << 16)
-+#define AES_REG_REV_R_RTL_MASK (0x1F << 11)
-+#define AES_REG_REV_X_MAJOR_MASK (7 << 8)
-+#define AES_REG_REV_CUSTOM_MASK (3 << 6)
-+#define AES_REG_REV_Y_MINOR_MASK (0x3F << 0)
-+
-+#define AES_REG_SYSCFG 0x84
-+#define AES_REG_SYSCFG_K3 (1 << 12)
-+#define AES_REG_SYSCFG_KEY_ENC (1 << 11)
-+#define AES_REG_SYSCFG_KEK_MODE (1 << 10)
-+#define AES_REG_SYSCFG_MAP_CTX_OUT (1 << 9)
-+#define AES_REG_SYSCFG_DREQ_MASK (15 << 5)
-+#define AES_REG_SYSCFG_DREQ_CTX_OUT_EN (1 << 8)
-+#define AES_REG_SYSCFG_DREQ_CTX_IN_EN (1 << 7)
-+#define AES_REG_SYSCFG_DREQ_DATA_OUT_EN (1 << 6)
-+#define AES_REG_SYSCFG_DREQ_DATA_IN_EN (1 << 5)
-+#define AES_REG_SYSCFG_DIRECTBUSEN (1 << 4)
-+#define AES_REG_SYSCFG_SIDLE_MASK (3 << 2)
-+#define AES_REG_SYSCFG_SIDLE_FORCEIDLE (0 << 2)
-+#define AES_REG_SYSCFG_SIDLE_NOIDLE (1 << 2)
-+#define AES_REG_SYSCFG_SIDLE_SMARTIDLE (2 << 2)
-+#define AES_REG_SYSCFG_SOFTRESET (1 << 1)
-+#define AES_REG_SYSCFG_AUTOIDLE (1 << 0)
-+
-+#define AES_REG_SYSSTATUS 0x88
-+#define AES_REG_SYSSTATUS_RESETDONE (1 << 0)
-+
-+#define AES_REG_IRQSTATUS 0x8C
-+#define AES_REG_IRQSTATUS_CTX_OUT (1 << 3)
-+#define AES_REG_IRQSTATUS_DATA_OUT (1 << 2)
-+#define AES_REG_IRQSTATUS_DATA_IN (1 << 1)
-+#define AES_REG_IRQSTATUS_CTX_IN (1 << 0)
-+
-+#define AES_REG_IRQENA 0x90
-+#define AES_REG_IRQENA_CTX_OUT (1 << 3)
-+#define AES_REG_IRQENA_DATA_OUT (1 << 2)
-+#define AES_REG_IRQENA_DATA_IN (1 << 1)
-+#define AES_REG_IRQENA_CTX_IN (1 << 0)
-+
-+/* ==================================================================== */
-+/** SHA / MD5 module layout.
-+ */
-+/* ==================================================================== */
-+
-+#define SHA_REG_ODIGEST 0x00
-+#define SHA_REG_ODIGEST_N(x) (0x00 + ((x) * 0x04))
-+#define SHA_REG_IDIGEST 0x20
-+#define SHA_REG_IDIGEST_N(x) (0x20 + ((x) * 0x04))
-+
-+#define SHA_REG_DIGEST_COUNT 0x40
-+#define SHA_REG_MODE 0x44
-+#define SHA_REG_MODE_HMAC_OUTER_HASH (1 << 7)
-+#define SHA_REG_MODE_HMAC_KEY_PROC (1 << 5)
-+#define SHA_REG_MODE_CLOSE_HASH (1 << 4)
-+#define SHA_REG_MODE_ALGO_CONSTANT (1 << 3)
-+#define SHA_REG_MODE_ALGO_MASK (3 << 1)
-+#define SHA_REG_MODE_ALGO_MD5_128 (0 << 1)
-+#define SHA_REG_MODE_ALGO_SHA1_160 (1 << 1)
-+#define SHA_REG_MODE_ALGO_SHA2_224 (2 << 1)
-+#define SHA_REG_MODE_ALGO_SHA2_256 (3 << 1)
-+
-+#define SHA_REG_LENGTH 0x48
-+
-+#define SHA_REG_DATA 0x80
-+#define SHA_REG_DATA_N(x) (0x80 + ((x) * 0x04))
-+
-+#define SHA_REG_REV 0x100
-+#define SHA_REG_REV_SCHEME_MASK (3 << 30)
-+#define SHA_REG_REV_FUNC_MASK (0xFFF << 16)
-+#define SHA_REG_REV_R_RTL_MASK (0x1F << 11)
-+#define SHA_REG_REV_X_MAJOR_MASK (7 << 8)
-+#define SHA_REG_REV_CUSTOM_MASK (3 << 6)
-+#define SHA_REG_REV_Y_MINOR_MASK (0x3F << 0)
-+
-+#define SHA_REG_SYSCFG 0x110
-+#define SHA_REG_SYSCFG_SADVANCED (1 << 7)
-+#define SHA_REG_SYSCFG_SCONT_SWT (1 << 6)
-+#define SHA_REG_SYSCFG_SIDLE_MASK (3 << 4)
-+#define SHA_REG_SYSCFG_SIDLE_FORCEIDLE (0 << 4)
-+#define SHA_REG_SYSCFG_SIDLE_NOIDLE (1 << 4)
-+#define SHA_REG_SYSCFG_SIDLE_SMARTIDLE (2 << 4)
-+#define SHA_REG_SYSCFG_SDMA_EN (1 << 3)
-+#define SHA_REG_SYSCFG_SIT_EN (1 << 2)
-+#define SHA_REG_SYSCFG_SOFTRESET (1 << 1)
-+#define SHA_REG_SYSCFG_AUTOIDLE (1 << 0)
-+
-+#define SHA_REG_SYSSTATUS 0x114
-+#define SHA_REG_SYSSTATUS_RESETDONE (1 << 0)
-+
-+#define SHA_REG_IRQSTATUS 0x118
-+#define SHA_REG_IRQSTATUS_CTX_RDY (1 << 3)
-+#define SHA_REG_IRQSTATUS_PARTHASH_RDY (1 << 2)
-+#define SHA_REG_IRQSTATUS_INPUT_RDY (1 << 1)
-+#define SHA_REG_IRQSTATUS_OUTPUT_RDY (1 << 0)
-+
-+#define SHA_REG_IRQENA 0x11C
-+#define SHA_REG_IRQENA_CTX_RDY (1 << 3)
-+#define SHA_REG_IRQENA_PARTHASH_RDY (1 << 2)
-+#define SHA_REG_IRQENA_INPUT_RDY (1 << 1)
-+#define SHA_REG_IRQENA_OUTPUT_RDY (1 << 0)
-+
-+#endif /* __DRIVERS_CRYPTO_AM33X_H */
---
-1.7.0.4
diff --git a/recipes-kernel/linux/linux-am335x-psp-3.2/0006-am33x-Create-driver-for-TRNG-crypto-module.patch b/recipes-kernel/linux/linux-am335x-psp-3.2/0006-am33x-Create-driver-for-TRNG-crypto-module.patch
deleted file mode 100644
index 7d0023a..0000000
--- a/recipes-kernel/linux/linux-am335x-psp-3.2/0006-am33x-Create-driver-for-TRNG-crypto-module.patch
+++ /dev/null
@@ -1,324 +0,0 @@
-From d56c0ab935577ef32ffdf23a62d2e1cecc391730 Mon Sep 17 00:00:00 2001
-From: Greg Turner <gregturner at ti.com>
-Date: Thu, 17 May 2012 15:11:26 -0500
-Subject: [PATCH 6/8] am33x: Create driver for TRNG crypto module
-
-This is the initial version of the driver for the TRNG crypto module for a GP version of OMAP4 derivative SOC's such as AM335x.
-
-Signed-off-by: Greg Turner <gregturner at ti.com>
----
- drivers/char/hw_random/omap4-rng.c | 303 ++++++++++++++++++++++++++++++++++++
- 1 files changed, 303 insertions(+), 0 deletions(-)
- create mode 100755 drivers/char/hw_random/omap4-rng.c
-
-diff --git a/drivers/char/hw_random/omap4-rng.c b/drivers/char/hw_random/omap4-rng.c
-new file mode 100755
-index 0000000..523ec63
---- /dev/null
-+++ b/drivers/char/hw_random/omap4-rng.c
-@@ -0,0 +1,303 @@
-+/*
-+ * drivers/char/hw_random/omap4-rng.c
-+ *
-+ * Copyright (c) 2012 Texas Instruments
-+ * TRNG driver for OMAP4 derivatives (AM33x, etc) - Herman Schuurman <herman at ti.com>
-+ *
-+ * derived from omap-rng.c.
-+ *
-+ * Author: Deepak Saxena <dsaxena at plexity.net>
-+ *
-+ * Copyright 2005 (c) MontaVista Software, Inc.
-+ *
-+ * Mostly based on original driver:
-+ *
-+ * Copyright (C) 2005 Nokia Corporation
-+ * Author: Juha Yrjölä <juha.yrjola at nokia.com>
-+ *
-+ * This file is licensed under the terms of the GNU General Public
-+ * License version 2. This program is licensed "as is" without any
-+ * warranty of any kind, whether express or implied.
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/init.h>
-+#include <linux/random.h>
-+#include <linux/clk.h>
-+#include <linux/err.h>
-+#include <linux/platform_device.h>
-+#include <linux/hw_random.h>
-+#include <linux/delay.h>
-+
-+#include <mach/hardware.h>
-+#include <asm/io.h>
-+
-+/* ==================================================================== */
-+/** RNG module layout.
-+ */
-+/* ==================================================================== */
-+#define RNG_REG_OUTPUT_L 0x00
-+#define RNG_REG_OUTPUT_H 0x04
-+
-+#define RNG_REG_STATUS 0x08
-+#define RNG_REG_STATUS_NEED_CLK (1 << 31)
-+#define RNG_REG_STATUS_SHUTDOWN_OFLO (1 << 1)
-+#define RNG_REG_STATUS_RDY (1 << 0)
-+
-+#define RNG_REG_IMASK 0x0C
-+#define RNG_REG_IMASK_SHUTDOWN_OFLO (1 << 1)
-+#define RNG_REG_IMASK_RDY (1 << 0)
-+
-+#define RNG_REG_INTACK 0x10
-+#define RNG_REG_INTACK_SHUTDOWN_OFLO (1 << 1)
-+#define RNG_REG_INTACK_RDY (1 << 0)
-+
-+#define RNG_REG_CONTROL 0x14
-+#define RNG_REG_CONTROL_STARTUP_MASK 0xFFFF0000
-+#define RNG_REG_CONTROL_ENABLE_TRNG (1 << 10)
-+#define RNG_REG_CONTROL_NO_LFSR_FB (1 << 2)
-+
-+#define RNG_REG_CONFIG 0x18
-+#define RNG_REG_CONFIG_MAX_REFILL_MASK 0xFFFF0000
-+#define RNG_REG_CONFIG_SAMPLE_DIV 0x00000F00
-+#define RNG_REG_CONFIG_MIN_REFILL_MASK 0x000000FF
-+
-+#define RNG_REG_ALARMCNT 0x1C
-+#define RNG_REG_ALARMCNT_SHTDWN_MASK 0x3F000000
-+#define RNG_REG_ALARMCNT_SD_THLD_MASK 0x001F0000
-+#define RNG_REG_ALARMCNT_ALM_THLD_MASK 0x000000FF
-+
-+#define RNG_REG_FROENABLE 0x20
-+#define RNG_REG_FRODETUNE 0x24
-+#define RNG_REG_ALARMMASK 0x28
-+#define RNG_REG_ALARMSTOP 0x2C
-+#define RNG_REG_LFSR_L 0x30
-+#define RNG_REG_LFSR_M 0x34
-+#define RNG_REG_LFSR_H 0x38
-+#define RNG_REG_COUNT 0x3C
-+#define RNG_REG_TEST 0x40
-+
-+#define RNG_REG_OPTIONS 0x78
-+#define RNG_REG_OPTIONS_NUM_FROS_MASK 0x00000FC0
-+
-+#define RNG_REG_EIP_REV 0x7C
-+#define RNG_REG_STATUS_EN 0x1FD8
-+#define RNG_REG_STATUS_EN_SHUTDOWN_OFLO (1 << 1)
-+#define RNG_REG_STATUS_EN_RDY (1 << 0)
-+
-+#define RNG_REG_REV 0x1FE0
-+#define RNG_REG_REV_X_MAJOR_MASK (0x0F << 4)
-+#define RNG_REG_REV_Y_MINOR_MASK (0x0F << 0)
-+
-+#define RNG_REG_SYSCFG 0x1FE4
-+#define RNG_REG_SYSCFG_SIDLEMODE_MASK (3 << 3)
-+#define RNG_REG_SYSCFG_SIDLEMODE_FORCE (0 << 3)
-+#define RNG_REG_SYSCFG_SIDLEMODE_NO (1 << 3)
-+#define RNG_REG_SYSCFG_SIDLEMODE_SMART (2 << 3)
-+#define RNG_REG_SYSCFG_AUTOIDLE (1 << 0)
-+
-+#define RNG_REG_STATUS_SET 0x1FEC
-+#define RNG_REG_STATUS_SET_SHUTDOWN_OFLO (1 << 1)
-+#define RNG_REG_STATUS_SET_RDY (1 << 0)
-+
-+#define RNG_REG_SOFT_RESET 0x1FF0
-+#define RNG_REG_SOFTRESET (1 << 0)
-+
-+#define RNG_REG_IRQ_EOI 0x1FF4
-+#define RNG_REG_IRQ_EOI_PULSE_INT_CLEAR (1 << 0)
-+
-+#define RNG_REG_IRQSTATUS 0x1FF8
-+#define RNG_REG_IRQSTATUS_IRQ_EN (1 << 0)
-+
-+
-+static void __iomem *rng_base;
-+static struct clk *rng_fck;
-+static struct platform_device *rng_dev;
-+
-+#define trng_read(reg) \
-+({ \
-+ u32 __val; \
-+ __val = __raw_readl(rng_base + RNG_REG_##reg); \
-+})
-+
-+#define trng_write(val, reg) \
-+({ \
-+ __raw_writel((val), rng_base + RNG_REG_##reg); \
-+})
-+
-+static int omap4_rng_data_read(struct hwrng *rng, void *buf, size_t max, bool wait)
-+{
-+ int res, i;
-+
-+ for (i = 0; i < 20; i++) {
-+ res = trng_read(STATUS) & RNG_REG_STATUS_RDY;
-+ if (res || !wait)
-+ break;
-+ /* RNG produces data fast enough (2+ MBit/sec, even
-+ * during "rngtest" loads, that these delays don't
-+ * seem to trigger. We *could* use the RNG IRQ, but
-+ * that'd be higher overhead ... so why bother?
-+ */
-+ udelay(10);
-+ }
-+
-+ /* If we have data waiting, collect it... */
-+ if (res) {
-+ *(u32 *)buf = trng_read(OUTPUT_L);
-+ buf += sizeof(u32);
-+ *(u32 *)buf = trng_read(OUTPUT_H);
-+
-+ trng_write(RNG_REG_INTACK_RDY, INTACK);
-+
-+ res = 2 * sizeof(u32);
-+ }
-+ return res;
-+}
-+
-+static struct hwrng omap4_rng_ops = {
-+ .name = "omap4",
-+ .read = omap4_rng_data_read,
-+};
-+
-+static int __devinit omap4_rng_probe(struct platform_device *pdev)
-+{
-+ struct resource *res;
-+ int ret;
-+ u32 reg;
-+
-+ /*
-+ * A bit ugly, and it will never actually happen but there can
-+ * be only one RNG and this catches any bork
-+ */
-+ if (rng_dev)
-+ return -EBUSY;
-+
-+ rng_fck = clk_get(&pdev->dev, "rng_fck");
-+ if (IS_ERR(rng_fck)) {
-+ dev_err(&pdev->dev, "Could not get rng_fck\n");
-+ ret = PTR_ERR(rng_fck);
-+ return ret;
-+ } else
-+ clk_enable(rng_fck);
-+
-+ res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-+ if (!res) {
-+ ret = -ENOENT;
-+ goto err_region;
-+ }
-+
-+ if (!request_mem_region(res->start, resource_size(res), pdev->name)) {
-+ ret = -EBUSY;
-+ goto err_region;
-+ }
-+
-+ dev_set_drvdata(&pdev->dev, res);
-+ rng_base = ioremap(res->start, resource_size(res));
-+ if (!rng_base) {
-+ ret = -ENOMEM;
-+ goto err_ioremap;
-+ }
-+
-+ ret = hwrng_register(&omap4_rng_ops);
-+ if (ret)
-+ goto err_register;
-+
-+ reg = trng_read(REV);
-+ dev_info(&pdev->dev, "OMAP4 Random Number Generator ver. %u.%02u\n",
-+ ((reg & RNG_REG_REV_X_MAJOR_MASK) >> 4),
-+ (reg & RNG_REG_REV_Y_MINOR_MASK));
-+
-+ rng_dev = pdev;
-+
-+ /* start TRNG if not running yet */
-+ if (!(trng_read(CONTROL) & RNG_REG_CONTROL_ENABLE_TRNG)) {
-+ trng_write(0x00220021, CONFIG);
-+ trng_write(0x00210400, CONTROL);
-+ }
-+
-+ return 0;
-+
-+err_register:
-+ iounmap(rng_base);
-+ rng_base = NULL;
-+err_ioremap:
-+ release_mem_region(res->start, resource_size(res));
-+err_region:
-+ clk_disable(rng_fck);
-+ clk_put(rng_fck);
-+ return ret;
-+}
-+
-+static int __exit omap4_rng_remove(struct platform_device *pdev)
-+{
-+ struct resource *res = dev_get_drvdata(&pdev->dev);
-+
-+ hwrng_unregister(&omap4_rng_ops);
-+
-+ trng_write(trng_read(CONTROL) & ~RNG_REG_CONTROL_ENABLE_TRNG, CONTROL);
-+
-+ iounmap(rng_base);
-+
-+ clk_disable(rng_fck);
-+ clk_put(rng_fck);
-+ release_mem_region(res->start, resource_size(res));
-+ rng_base = NULL;
-+
-+ return 0;
-+}
-+
-+#ifdef CONFIG_PM
-+
-+static int omap4_rng_suspend(struct platform_device *pdev, pm_message_t message)
-+{
-+ trng_write(trng_read(CONTROL) & ~RNG_REG_CONTROL_ENABLE_TRNG, CONTROL);
-+
-+ return 0;
-+}
-+
-+static int omap4_rng_resume(struct platform_device *pdev)
-+{
-+ trng_write(trng_read(CONTROL) | RNG_REG_CONTROL_ENABLE_TRNG, CONTROL);
-+
-+ return 0;
-+}
-+
-+#else
-+
-+#define omap4_rng_suspend NULL
-+#define omap4_rng_resume NULL
-+
-+#endif
-+
-+/* work with hotplug and coldplug */
-+MODULE_ALIAS("platform:omap4_rng");
-+
-+static struct platform_driver omap4_rng_driver = {
-+ .driver = {
-+ .name = "omap4_rng",
-+ .owner = THIS_MODULE,
-+ },
-+ .probe = omap4_rng_probe,
-+ .remove = __exit_p(omap4_rng_remove),
-+ .suspend = omap4_rng_suspend,
-+ .resume = omap4_rng_resume
-+};
-+
-+static int __init omap4_rng_init(void)
-+{
-+ if (!cpu_is_am33xx() || omap_type() != OMAP2_DEVICE_TYPE_GP)
-+ return -ENODEV;
-+
-+ return platform_driver_register(&omap4_rng_driver);
-+}
-+
-+static void __exit omap4_rng_exit(void)
-+{
-+ platform_driver_unregister(&omap4_rng_driver);
-+}
-+
-+module_init(omap4_rng_init);
-+module_exit(omap4_rng_exit);
-+
-+MODULE_LICENSE("GPL");
-+MODULE_DESCRIPTION("AM33X TRNG driver");
---
-1.7.0.4
diff --git a/recipes-kernel/linux/linux-am335x-psp-3.2/0006-crypto-omap4-aes-User-finer-grained-PM-management.patch b/recipes-kernel/linux/linux-am335x-psp-3.2/0006-crypto-omap4-aes-User-finer-grained-PM-management.patch
deleted file mode 100644
index 94fb7b6..0000000
--- a/recipes-kernel/linux/linux-am335x-psp-3.2/0006-crypto-omap4-aes-User-finer-grained-PM-management.patch
+++ /dev/null
@@ -1,127 +0,0 @@
-From 5f56e1d486aaef9bcfaa57129c493a95185043fd Mon Sep 17 00:00:00 2001
-From: "Mark A. Greer" <mgreer at animalcreek.com>
-Date: Tue, 11 Dec 2012 21:00:13 -0700
-Subject: [PATCH 06/10] crypto: omap4-aes: User finer-grained PM management
-
-Currently, the pm_runtime calls in omap4-aes enable
-things when the driver is probed and leave them enabled
-until the driver is removed. To fix this, move the
-pm_runtime calls to only enable the aes module when
-its actually in use.
-
-Signed-off-by: Mark A. Greer <mgreer at animalcreek.com>
----
- drivers/crypto/omap4-aes.c | 39 ++++++++++++++++-----------------------
- 1 file changed, 16 insertions(+), 23 deletions(-)
-
-diff --git a/drivers/crypto/omap4-aes.c b/drivers/crypto/omap4-aes.c
-index dec2de4..a957709 100644
---- a/drivers/crypto/omap4-aes.c
-+++ b/drivers/crypto/omap4-aes.c
-@@ -80,7 +80,6 @@ struct omap4_aes_dev {
- struct list_head list;
- unsigned long phys_base;
- void __iomem *io_base;
-- struct clk *iclk;
- struct omap4_aes_ctx *ctx;
- struct device *dev;
- unsigned long flags;
-@@ -146,7 +145,7 @@ static void omap4_aes_write_n(struct omap4_aes_dev *dd, u32 offset,
-
- static int omap4_aes_hw_init(struct omap4_aes_dev *dd)
- {
-- omap4_aes_write(dd, AES_REG_SYSCFG, 0);
-+ pm_runtime_get_sync(dd->dev);
-
- if (!(dd->flags & FLAGS_INIT)) {
- dd->flags |= FLAGS_INIT;
-@@ -489,11 +488,17 @@ static void omap4_aes_finish_req(struct omap4_aes_dev *dd, int err)
-
- pr_debug("err: %d\n", err);
-
-+ pm_runtime_put_sync(dd->dev);
- dd->flags &= ~FLAGS_BUSY;
-
- req->base.complete(&req->base, err);
- }
-
-+static void omap4_aes_dma_stop(struct omap4_aes_dev *dd)
-+{
-+ omap4_aes_write_mask(dd, AES_REG_SYSCFG, 0, AES_REG_SYSCFG_DREQ_MASK);
-+}
-+
- static int omap4_aes_crypt_dma_stop(struct omap4_aes_dev *dd)
- {
- int err = 0;
-@@ -501,7 +506,7 @@ static int omap4_aes_crypt_dma_stop(struct omap4_aes_dev *dd)
-
- pr_debug("total: %d\n", dd->total);
-
-- omap4_aes_write_mask(dd, AES_REG_SYSCFG, 0, AES_REG_SYSCFG_DREQ_MASK);
-+ omap4_aes_dma_stop(dd);
-
- edma_stop(dd->dma_lch_in);
- edma_clean_channel(dd->dma_lch_in);
-@@ -819,21 +824,22 @@ static int omap4_aes_probe(struct platform_device *pdev)
- else
- dd->dma_in = res->start;
-
-- pm_runtime_enable(dev);
-- udelay(1);
-- pm_runtime_get_sync(dev);
-- udelay(1);
--
- dd->io_base = ioremap(dd->phys_base, SZ_4K);
- if (!dd->io_base) {
- dev_err(dev, "can't ioremap\n");
- err = -ENOMEM;
-- goto err_io;
-+ goto err_data;
- }
-
-- omap4_aes_hw_init(dd);
-+ pm_runtime_enable(dev);
-+ pm_runtime_get_sync(dev);
-+
-+ omap4_aes_dma_stop(dd);
-+
- reg = omap4_aes_read(dd, AES_REG_REV);
-
-+ pm_runtime_put_sync(dev);
-+
- dev_info(dev, "AM33X AES hw accel rev: %u.%02u\n",
- ((reg & AES_REG_REV_X_MAJOR_MASK) >> 8),
- (reg & AES_REG_REV_Y_MINOR_MASK));
-@@ -870,17 +876,8 @@ err_dma:
- tasklet_kill(&dd->done_task);
- tasklet_kill(&dd->queue_task);
- iounmap(dd->io_base);
--
--err_io:
-- pm_runtime_put_sync(dev);
-- udelay(1);
- pm_runtime_disable(dev);
-- udelay(1);
-
--
--//err_res:
-- //kfree(dd);
-- //dd = NULL;
- err_data:
- dev_err(dev, "initialization failed.\n");
- return err;
-@@ -905,11 +902,7 @@ static int omap4_aes_remove(struct platform_device *pdev)
- tasklet_kill(&dd->queue_task);
- omap4_aes_dma_cleanup(dd);
- iounmap(dd->io_base);
-- pm_runtime_put_sync(&pdev->dev);
-- udelay(1);
- pm_runtime_disable(&pdev->dev);
-- udelay(1);
--
- kfree(dd);
- dd = NULL;
-
---
-1.7.12
-
diff --git a/recipes-kernel/linux/linux-am335x-psp-3.2/0007-am33x-Create-driver-for-AES-crypto-module.patch b/recipes-kernel/linux/linux-am335x-psp-3.2/0007-am33x-Create-driver-for-AES-crypto-module.patch
deleted file mode 100644
index 85173a5..0000000
--- a/recipes-kernel/linux/linux-am335x-psp-3.2/0007-am33x-Create-driver-for-AES-crypto-module.patch
+++ /dev/null
@@ -1,971 +0,0 @@
-From 501def5dd499457a38e6284f9780ba169284e530 Mon Sep 17 00:00:00 2001
-From: Greg Turner <gregturner at ti.com>
-Date: Thu, 17 May 2012 15:17:13 -0500
-Subject: [PATCH 7/8] am33x: Create driver for AES crypto module
-
-This is the initial version of the driver for the AES crypto module for a GP version of OMAP4 derivative SOC's such as AM335x.
-
-Signed-off-by: Greg Turner <gregturner at ti.com>
----
- drivers/crypto/omap4-aes.c | 950 ++++++++++++++++++++++++++++++++++++++++++++
- 1 files changed, 950 insertions(+), 0 deletions(-)
- create mode 100755 drivers/crypto/omap4-aes.c
-
-diff --git a/drivers/crypto/omap4-aes.c b/drivers/crypto/omap4-aes.c
-new file mode 100755
-index 0000000..f0b3fe2
---- /dev/null
-+++ b/drivers/crypto/omap4-aes.c
-@@ -0,0 +1,950 @@
-+/*
-+ * Cryptographic API.
-+ *
-+ * Support for OMAP AES HW acceleration.
-+ *
-+ * Copyright (c) 2010 Nokia Corporation
-+ * Author: Dmitry Kasatkin <dmitry.kasatkin at nokia.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as published
-+ * by the Free Software Foundation.
-+ *
-+ */
-+/*
-+ * Copyright © 2011 Texas Instruments Incorporated
-+ * Author: Herman Schuurman
-+ * Change: July 2011 - Adapted the omap-aes.c driver to support Netra
-+ * implementation of AES hardware accelerator.
-+ */
-+/*
-+ * Copyright © 2011 Texas Instruments Incorporated
-+ * Author: Greg Turner
-+ * Change: November 2011 - Adapted for AM33x support HW accelerator.
-+ */
-+
-+//#define DEBUG
-+
-+#define pr_fmt(fmt) "%s: " fmt, __func__
-+
-+#include <linux/err.h>
-+#include <linux/module.h>
-+#include <linux/init.h>
-+#include <linux/errno.h>
-+#include <linux/kernel.h>
-+#include <linux/clk.h>
-+#include <linux/platform_device.h>
-+#include <linux/scatterlist.h>
-+#include <linux/dma-mapping.h>
-+#include <linux/io.h>
-+#include <linux/crypto.h>
-+#include <linux/interrupt.h>
-+#include <crypto/scatterwalk.h>
-+#include <crypto/aes.h>
-+
-+#include <plat/cpu.h>
-+#include <plat/dma.h>
-+#include <mach/edma.h>
-+#include <mach/hardware.h>
-+#include "omap4.h"
-+
-+#define DEFAULT_TIMEOUT (5*HZ)
-+
-+#define FLAGS_MODE_MASK 0x000f
-+#define FLAGS_ENCRYPT BIT(0)
-+#define FLAGS_CBC BIT(1)
-+#define FLAGS_CTR BIT(2)
-+#define FLAGS_GIV BIT(3)
-+
-+#define FLAGS_INIT BIT(4)
-+#define FLAGS_FAST BIT(5)
-+#define FLAGS_BUSY BIT(6)
-+
-+struct omap4_aes_ctx {
-+ struct omap4_aes_dev *dd;
-+
-+ int keylen;
-+ u32 key[AES_KEYSIZE_256 / sizeof(u32)];
-+ unsigned long flags;
-+};
-+
-+struct omap4_aes_reqctx {
-+ unsigned long mode;
-+};
-+
-+#define AM33X_AES_QUEUE_LENGTH 1
-+#define AM33X_AES_CACHE_SIZE 0
-+
-+struct omap4_aes_dev {
-+ struct list_head list;
-+ unsigned long phys_base;
-+ void __iomem *io_base;
-+ struct clk *iclk;
-+ struct omap4_aes_ctx *ctx;
-+ struct device *dev;
-+ unsigned long flags;
-+ int err;
-+
-+ spinlock_t lock;
-+ struct crypto_queue queue;
-+
-+ struct tasklet_struct done_task;
-+ struct tasklet_struct queue_task;
-+
-+ struct ablkcipher_request *req;
-+ size_t total;
-+ struct scatterlist *in_sg;
-+ size_t in_offset;
-+ struct scatterlist *out_sg;
-+ size_t out_offset;
-+
-+ size_t buflen;
-+ void *buf_in;
-+ size_t dma_size;
-+ int dma_in;
-+ int dma_lch_in;
-+ dma_addr_t dma_addr_in;
-+ void *buf_out;
-+ int dma_out;
-+ int dma_lch_out;
-+ dma_addr_t dma_addr_out;
-+};
-+
-+/* keep registered devices data here */
-+static LIST_HEAD(dev_list);
-+static DEFINE_SPINLOCK(list_lock);
-+
-+static inline u32 omap4_aes_read(struct omap4_aes_dev *dd, u32 offset)
-+{
-+ return __raw_readl(dd->io_base + offset);
-+}
-+
-+static inline void omap4_aes_write(struct omap4_aes_dev *dd, u32 offset,
-+ u32 value)
-+{
-+ __raw_writel(value, dd->io_base + offset);
-+}
-+
-+static inline void omap4_aes_write_mask(struct omap4_aes_dev *dd, u32 offset,
-+ u32 value, u32 mask)
-+{
-+ u32 val;
-+
-+ val = omap4_aes_read(dd, offset);
-+ val &= ~mask;
-+ val |= value;
-+ omap4_aes_write(dd, offset, val);
-+}
-+
-+static void omap4_aes_write_n(struct omap4_aes_dev *dd, u32 offset,
-+ u32 *value, int count)
-+{
-+ for (; count--; value++, offset += 4)
-+ omap4_aes_write(dd, offset, *value);
-+}
-+
-+static int omap4_aes_hw_init(struct omap4_aes_dev *dd)
-+{
-+ /*
-+ * clocks are enabled when request starts and disabled when finished.
-+ * It may be long delays between requests.
-+ * Device might go to off mode to save power.
-+ */
-+ clk_enable(dd->iclk);
-+ omap4_aes_write(dd, AES_REG_SYSCFG, 0);
-+
-+ if (!(dd->flags & FLAGS_INIT)) {
-+ dd->flags |= FLAGS_INIT;
-+ dd->err = 0;
-+ }
-+
-+ return 0;
-+}
-+
-+static int omap4_aes_write_ctrl(struct omap4_aes_dev *dd)
-+{
-+ unsigned int key32;
-+ int i, err;
-+ u32 val, mask;
-+
-+ err = omap4_aes_hw_init(dd);
-+ if (err)
-+ return err;
-+
-+ pr_debug("Set key\n");
-+ key32 = dd->ctx->keylen / sizeof(u32);
-+
-+ /* set a key */
-+ for (i = 0; i < key32; i++) {
-+ omap4_aes_write(dd, AES_REG_KEY1(i),
-+ __le32_to_cpu(dd->ctx->key[i]));
-+ }
-+
-+ if ((dd->flags & (FLAGS_CBC | FLAGS_CTR)) && dd->req->info)
-+ omap4_aes_write_n(dd, AES_REG_IV(0), dd->req->info, 4);
-+
-+ val = FLD_VAL(((dd->ctx->keylen >> 3) - 1), 4, 3);
-+ if (dd->flags & FLAGS_CBC)
-+ val |= AES_REG_CTRL_CBC;
-+ else if (dd->flags & FLAGS_CTR)
-+ val |= AES_REG_CTRL_CTR | AES_REG_CTRL_CTR_WIDTH_32;
-+ if (dd->flags & FLAGS_ENCRYPT)
-+ val |= AES_REG_CTRL_DIRECTION;
-+
-+ mask = AES_REG_CTRL_CBC | AES_REG_CTRL_CTR | AES_REG_CTRL_DIRECTION |
-+ AES_REG_CTRL_KEY_SIZE_MASK | AES_REG_CTRL_CTR_WIDTH_MASK;
-+
-+ omap4_aes_write_mask(dd, AES_REG_CTRL, val, mask);
-+
-+ return 0;
-+}
-+
-+static struct omap4_aes_dev *omap4_aes_find_dev(struct omap4_aes_ctx *ctx)
-+{
-+ struct omap4_aes_dev *dd = NULL, *tmp;
-+
-+ spin_lock_bh(&list_lock);
-+ if (!ctx->dd) {
-+ list_for_each_entry(tmp, &dev_list, list) {
-+ /* FIXME: take fist available aes core */
-+ dd = tmp;
-+ break;
-+ }
-+ ctx->dd = dd;
-+ } else {
-+ /* already found before */
-+ dd = ctx->dd;
-+ }
-+ spin_unlock_bh(&list_lock);
-+
-+ return dd;
-+}
-+
-+static void omap4_aes_dma_callback(unsigned int lch, u16 ch_status, void *data)
-+{
-+ struct omap4_aes_dev *dd = data;
-+
-+ edma_stop(lch);
-+
-+ if (ch_status != DMA_COMPLETE) {
-+ pr_err("omap4-aes DMA error status: 0x%hx\n", ch_status);
-+ dd->err = -EIO;
-+ dd->flags &= ~FLAGS_INIT; /* request to re-initialize */
-+ } else if (lch == dd->dma_lch_in) {
-+ return;
-+ }
-+
-+ /* dma_lch_out - completed */
-+ tasklet_schedule(&dd->done_task);
-+}
-+
-+static int omap4_aes_dma_init(struct omap4_aes_dev *dd)
-+{
-+ int err = -ENOMEM;
-+
-+ dd->dma_lch_out = -1;
-+ dd->dma_lch_in = -1;
-+
-+ dd->buf_in = (void *)__get_free_pages(GFP_KERNEL, AM33X_AES_CACHE_SIZE);
-+ dd->buf_out = (void *)__get_free_pages(GFP_KERNEL, AM33X_AES_CACHE_SIZE);
-+ dd->buflen = PAGE_SIZE << AM33X_AES_CACHE_SIZE;
-+ dd->buflen &= ~(AES_BLOCK_SIZE - 1);
-+
-+ if (!dd->buf_in || !dd->buf_out) {
-+ dev_err(dd->dev, "unable to alloc pages.\n");
-+ goto err_alloc;
-+ }
-+
-+ /* MAP here */
-+ dd->dma_addr_in = dma_map_single(dd->dev, dd->buf_in, dd->buflen,
-+ DMA_TO_DEVICE);
-+ if (dma_mapping_error(dd->dev, dd->dma_addr_in)) {
-+ dev_err(dd->dev, "dma %d bytes error\n", dd->buflen);
-+ err = -EINVAL;
-+ goto err_map_in;
-+ }
-+
-+ dd->dma_addr_out = dma_map_single(dd->dev, dd->buf_out, dd->buflen,
-+ DMA_FROM_DEVICE);
-+ if (dma_mapping_error(dd->dev, dd->dma_addr_out)) {
-+ dev_err(dd->dev, "dma %d bytes error\n", dd->buflen);
-+ err = -EINVAL;
-+ goto err_map_out;
-+ }
-+
-+ dd->dma_lch_in = edma_alloc_channel(dd->dma_in, omap4_aes_dma_callback,
-+ dd, EVENTQ_DEFAULT);
-+
-+ if (dd->dma_lch_in < 0) {
-+ dev_err(dd->dev, "Unable to request DMA channel\n");
-+ goto err_dma_in;
-+ }
-+
-+ dd->dma_lch_out = edma_alloc_channel(dd->dma_out, omap4_aes_dma_callback, dd, EVENTQ_2);
-+
-+ if (dd->dma_lch_out < 0) {
-+ dev_err(dd->dev, "Unable to request DMA channel\n");
-+ goto err_dma_out;
-+ }
-+
-+ return 0;
-+
-+err_dma_out:
-+ edma_free_channel(dd->dma_lch_in);
-+err_dma_in:
-+ dma_unmap_single(dd->dev, dd->dma_addr_out, dd->buflen,
-+ DMA_FROM_DEVICE);
-+err_map_out:
-+ dma_unmap_single(dd->dev, dd->dma_addr_in, dd->buflen, DMA_TO_DEVICE);
-+err_map_in:
-+ free_pages((unsigned long)dd->buf_out, AM33X_AES_CACHE_SIZE);
-+ free_pages((unsigned long)dd->buf_in, AM33X_AES_CACHE_SIZE);
-+err_alloc:
-+ if (err)
-+ pr_err("error: %d\n", err);
-+ return err;
-+}
-+
-+static void omap4_aes_dma_cleanup(struct omap4_aes_dev *dd)
-+{
-+ edma_free_channel(dd->dma_lch_out);
-+ edma_free_channel(dd->dma_lch_in);
-+ dma_unmap_single(dd->dev, dd->dma_addr_out, dd->buflen,
-+ DMA_FROM_DEVICE);
-+ dma_unmap_single(dd->dev, dd->dma_addr_in, dd->buflen, DMA_TO_DEVICE);
-+ free_pages((unsigned long)dd->buf_out, AM33X_AES_CACHE_SIZE);
-+ free_pages((unsigned long)dd->buf_in, AM33X_AES_CACHE_SIZE);
-+}
-+
-+static void sg_copy_buf(void *buf, struct scatterlist *sg,
-+ unsigned int start, unsigned int nbytes, int out)
-+{
-+ struct scatter_walk walk;
-+
-+ if (!nbytes)
-+ return;
-+
-+ scatterwalk_start(&walk, sg);
-+ scatterwalk_advance(&walk, start);
-+ scatterwalk_copychunks(buf, &walk, nbytes, out);
-+ scatterwalk_done(&walk, out, 0);
-+}
-+
-+static int sg_copy(struct scatterlist **sg, size_t *offset, void *buf,
-+ size_t buflen, size_t total, int out)
-+{
-+ unsigned int count, off = 0;
-+
-+ while (buflen && total) {
-+ count = min((*sg)->length - *offset, total);
-+ count = min(count, buflen);
-+
-+ if (!count)
-+ return off;
-+
-+ /*
-+ * buflen and total are AES_BLOCK_SIZE size aligned,
-+ * so count should be also aligned
-+ */
-+
-+ sg_copy_buf(buf + off, *sg, *offset, count, out);
-+
-+ off += count;
-+ buflen -= count;
-+ *offset += count;
-+ total -= count;
-+
-+ if (*offset == (*sg)->length) {
-+ *sg = sg_next(*sg);
-+ if (*sg)
-+ *offset = 0;
-+ else
-+ total = 0;
-+ }
-+ }
-+
-+ return off;
-+}
-+
-+static int omap4_aes_crypt_dma(struct crypto_tfm *tfm, dma_addr_t dma_addr_in,
-+ dma_addr_t dma_addr_out, int length)
-+{
-+ struct omap4_aes_ctx *ctx = crypto_tfm_ctx(tfm);
-+ struct omap4_aes_dev *dd = ctx->dd;
-+ int nblocks;
-+ struct edmacc_param p_ram;
-+
-+ pr_debug("len: %d\n", length);
-+
-+ dd->dma_size = length;
-+
-+ if (!(dd->flags & FLAGS_FAST))
-+ dma_sync_single_for_device(dd->dev, dma_addr_in, length,
-+ DMA_TO_DEVICE);
-+
-+ nblocks = DIV_ROUND_UP(length, AES_BLOCK_SIZE);
-+
-+ /* EDMA IN */
-+ p_ram.opt = TCINTEN |
-+ EDMA_TCC(EDMA_CHAN_SLOT(dd->dma_lch_in));
-+ p_ram.src = dma_addr_in;
-+ p_ram.a_b_cnt = AES_BLOCK_SIZE | nblocks << 16;
-+ p_ram.dst = dd->phys_base + AES_REG_DATA;
-+ p_ram.src_dst_bidx = AES_BLOCK_SIZE;
-+ p_ram.link_bcntrld = 1 << 16 | 0xFFFF;
-+ p_ram.src_dst_cidx = 0;
-+ p_ram.ccnt = 1;
-+ edma_write_slot(dd->dma_lch_in, &p_ram);
-+
-+ /* EDMA OUT */
-+ p_ram.opt = TCINTEN |
-+ EDMA_TCC(EDMA_CHAN_SLOT(dd->dma_lch_out));
-+ p_ram.src = dd->phys_base + AES_REG_DATA;
-+ p_ram.dst = dma_addr_out;
-+ p_ram.src_dst_bidx = AES_BLOCK_SIZE << 16;
-+ edma_write_slot(dd->dma_lch_out, &p_ram);
-+
-+ edma_start(dd->dma_lch_in);
-+ edma_start(dd->dma_lch_out);
-+
-+ /* write data length info out */
-+ omap4_aes_write(dd, AES_REG_LENGTH_N(0), length);
-+ omap4_aes_write(dd, AES_REG_LENGTH_N(1), 0);
-+ /* start DMA or disable idle mode */
-+ omap4_aes_write_mask(dd, AES_REG_SYSCFG,
-+ AES_REG_SYSCFG_DREQ_DATA_OUT_EN | AES_REG_SYSCFG_DREQ_DATA_IN_EN,
-+ AES_REG_SYSCFG_DREQ_MASK);
-+
-+ return 0;
-+}
-+
-+static int omap4_aes_crypt_dma_start(struct omap4_aes_dev *dd)
-+{
-+ struct crypto_tfm *tfm = crypto_ablkcipher_tfm(
-+ crypto_ablkcipher_reqtfm(dd->req));
-+ int err, fast = 0, in, out;
-+ size_t count;
-+ dma_addr_t addr_in, addr_out;
-+
-+ pr_debug("total: %d\n", dd->total);
-+
-+ if (sg_is_last(dd->in_sg) && sg_is_last(dd->out_sg)) {
-+ /* check for alignment */
-+ in = IS_ALIGNED((u32)dd->in_sg->offset, sizeof(u32));
-+ out = IS_ALIGNED((u32)dd->out_sg->offset, sizeof(u32));
-+
-+ fast = in && out;
-+ }
-+
-+ if (fast) {
-+ count = min(dd->total, sg_dma_len(dd->in_sg));
-+ count = min(count, sg_dma_len(dd->out_sg));
-+
-+ if (count != dd->total) {
-+ pr_err("request length != buffer length\n");
-+ return -EINVAL;
-+ }
-+
-+ pr_debug("fast\n");
-+
-+ err = dma_map_sg(dd->dev, dd->in_sg, 1, DMA_TO_DEVICE);
-+ if (!err) {
-+ dev_err(dd->dev, "dma_map_sg() error\n");
-+ return -EINVAL;
-+ }
-+
-+ err = dma_map_sg(dd->dev, dd->out_sg, 1, DMA_FROM_DEVICE);
-+ if (!err) {
-+ dev_err(dd->dev, "dma_map_sg() error\n");
-+ dma_unmap_sg(dd->dev, dd->in_sg, 1, DMA_TO_DEVICE);
-+ return -EINVAL;
-+ }
-+
-+ addr_in = sg_dma_address(dd->in_sg);
-+ addr_out = sg_dma_address(dd->out_sg);
-+
-+ dd->flags |= FLAGS_FAST;
-+
-+ } else {
-+ /* use cache buffers */
-+ count = sg_copy(&dd->in_sg, &dd->in_offset, dd->buf_in,
-+ dd->buflen, dd->total, 0);
-+
-+ addr_in = dd->dma_addr_in;
-+ addr_out = dd->dma_addr_out;
-+
-+ dd->flags &= ~FLAGS_FAST;
-+
-+ }
-+
-+ dd->total -= count;
-+
-+ err = omap4_aes_crypt_dma(tfm, addr_in, addr_out, count);
-+ if (err) {
-+ dma_unmap_sg(dd->dev, dd->in_sg, 1, DMA_TO_DEVICE);
-+ dma_unmap_sg(dd->dev, dd->out_sg, 1, DMA_TO_DEVICE);
-+ }
-+
-+ return err;
-+}
-+
-+static void omap4_aes_finish_req(struct omap4_aes_dev *dd, int err)
-+{
-+ struct ablkcipher_request *req = dd->req;
-+
-+ pr_debug("err: %d\n", err);
-+
-+ clk_disable(dd->iclk);
-+ dd->flags &= ~FLAGS_BUSY;
-+
-+ req->base.complete(&req->base, err);
-+}
-+
-+static int omap4_aes_crypt_dma_stop(struct omap4_aes_dev *dd)
-+{
-+ int err = 0;
-+ size_t count;
-+
-+ pr_debug("total: %d\n", dd->total);
-+
-+ omap4_aes_write_mask(dd, AES_REG_SYSCFG, 0, AES_REG_SYSCFG_DREQ_MASK);
-+
-+ edma_stop(dd->dma_lch_in);
-+ edma_clean_channel(dd->dma_lch_in);
-+ edma_stop(dd->dma_lch_out);
-+ edma_clean_channel(dd->dma_lch_out);
-+
-+ if (dd->flags & FLAGS_FAST) {
-+ dma_unmap_sg(dd->dev, dd->out_sg, 1, DMA_FROM_DEVICE);
-+ dma_unmap_sg(dd->dev, dd->in_sg, 1, DMA_TO_DEVICE);
-+ } else {
-+ dma_sync_single_for_device(dd->dev, dd->dma_addr_out,
-+ dd->dma_size, DMA_FROM_DEVICE);
-+
-+ /* copy data */
-+ count = sg_copy(&dd->out_sg, &dd->out_offset, dd->buf_out,
-+ dd->buflen, dd->dma_size, 1);
-+ if (count != dd->dma_size) {
-+ err = -EINVAL;
-+ pr_err("not all data converted: %u\n", count);
-+ }
-+ }
-+
-+ return err;
-+}
-+
-+static int omap4_aes_handle_queue(struct omap4_aes_dev *dd,
-+ struct ablkcipher_request *req)
-+{
-+ struct crypto_async_request *async_req, *backlog;
-+ struct omap4_aes_ctx *ctx;
-+ struct omap4_aes_reqctx *rctx;
-+ unsigned long flags;
-+ int err, ret = 0;
-+
-+ spin_lock_irqsave(&dd->lock, flags);
-+ if (req)
-+ ret = ablkcipher_enqueue_request(&dd->queue, req);
-+
-+ if (dd->flags & FLAGS_BUSY) {
-+ spin_unlock_irqrestore(&dd->lock, flags);
-+ return ret;
-+ }
-+ backlog = crypto_get_backlog(&dd->queue);
-+ async_req = crypto_dequeue_request(&dd->queue);
-+ if (async_req)
-+ dd->flags |= FLAGS_BUSY;
-+ spin_unlock_irqrestore(&dd->lock, flags);
-+
-+ if (!async_req)
-+ return ret;
-+
-+ if (backlog)
-+ backlog->complete(backlog, -EINPROGRESS);
-+
-+ req = ablkcipher_request_cast(async_req);
-+
-+ /* assign new request to device */
-+ dd->req = req;
-+ dd->total = req->nbytes;
-+ dd->in_offset = 0;
-+ dd->in_sg = req->src;
-+ dd->out_offset = 0;
-+ dd->out_sg = req->dst;
-+
-+ rctx = ablkcipher_request_ctx(req);
-+ ctx = crypto_ablkcipher_ctx(crypto_ablkcipher_reqtfm(req));
-+ rctx->mode &= FLAGS_MODE_MASK;
-+ dd->flags = (dd->flags & ~FLAGS_MODE_MASK) | rctx->mode;
-+
-+ dd->ctx = ctx;
-+ ctx->dd = dd;
-+
-+ err = omap4_aes_write_ctrl(dd);
-+ if (!err)
-+ err = omap4_aes_crypt_dma_start(dd);
-+ if (err) {
-+ /* aes_task will not finish it, so do it here */
-+ omap4_aes_finish_req(dd, err);
-+ tasklet_schedule(&dd->queue_task);
-+ }
-+
-+ return ret; /* return ret, which is enqueue return value */
-+}
-+
-+static void omap4_aes_done_task(unsigned long data)
-+{
-+ struct omap4_aes_dev *dd = (struct omap4_aes_dev *)data;
-+ int err;
-+
-+ pr_debug("enter\n");
-+
-+ err = omap4_aes_crypt_dma_stop(dd);
-+
-+ err = dd->err ? : err;
-+
-+ if (dd->total && !err) {
-+ err = omap4_aes_crypt_dma_start(dd);
-+ if (!err)
-+ return; /* DMA started. Not finishing. */
-+ }
-+
-+ omap4_aes_finish_req(dd, err);
-+ omap4_aes_handle_queue(dd, NULL);
-+
-+ pr_debug("exit\n");
-+}
-+
-+static void omap4_aes_queue_task(unsigned long data)
-+{
-+ struct omap4_aes_dev *dd = (struct omap4_aes_dev *)data;
-+
-+ omap4_aes_handle_queue(dd, NULL);
-+}
-+
-+static int omap4_aes_crypt(struct ablkcipher_request *req, unsigned long mode)
-+{
-+ struct omap4_aes_ctx *ctx = crypto_ablkcipher_ctx(
-+ crypto_ablkcipher_reqtfm(req));
-+ struct omap4_aes_reqctx *rctx = ablkcipher_request_ctx(req);
-+ struct omap4_aes_dev *dd;
-+
-+ pr_debug("nbytes: %d, enc: %d, cbc: %d, ctr: %d\n", req->nbytes,
-+ !!(mode & FLAGS_ENCRYPT),
-+ !!(mode & FLAGS_CBC),
-+ !!(mode & FLAGS_CTR));
-+
-+ if (!IS_ALIGNED(req->nbytes, AES_BLOCK_SIZE)) {
-+ pr_err("request size is not exact amount of AES blocks\n");
-+ return -EINVAL;
-+ }
-+
-+ dd = omap4_aes_find_dev(ctx);
-+ if (!dd)
-+ return -ENODEV;
-+
-+ rctx->mode = mode;
-+
-+ return omap4_aes_handle_queue(dd, req);
-+}
-+
-+/* ********************** ALG API ************************************ */
-+
-+static int omap4_aes_setkey(struct crypto_ablkcipher *tfm, const u8 *key,
-+ unsigned int keylen)
-+{
-+ struct omap4_aes_ctx *ctx = crypto_ablkcipher_ctx(tfm);
-+
-+ if (keylen != AES_KEYSIZE_128 && keylen != AES_KEYSIZE_192 &&
-+ keylen != AES_KEYSIZE_256)
-+ return -EINVAL;
-+
-+ pr_debug("enter, keylen: %d\n", keylen);
-+
-+ memcpy(ctx->key, key, keylen);
-+ ctx->keylen = keylen;
-+
-+ return 0;
-+}
-+
-+static int omap4_aes_ecb_encrypt(struct ablkcipher_request *req)
-+{
-+ return omap4_aes_crypt(req, FLAGS_ENCRYPT);
-+}
-+
-+static int omap4_aes_ecb_decrypt(struct ablkcipher_request *req)
-+{
-+ return omap4_aes_crypt(req, 0);
-+}
-+
-+static int omap4_aes_cbc_encrypt(struct ablkcipher_request *req)
-+{
-+ return omap4_aes_crypt(req, FLAGS_ENCRYPT | FLAGS_CBC);
-+}
-+
-+static int omap4_aes_cbc_decrypt(struct ablkcipher_request *req)
-+{
-+ return omap4_aes_crypt(req, FLAGS_CBC);
-+}
-+
-+static int omap4_aes_ctr_encrypt(struct ablkcipher_request *req)
-+{
-+ return omap4_aes_crypt(req, FLAGS_ENCRYPT | FLAGS_CTR);
-+}
-+
-+static int omap4_aes_ctr_decrypt(struct ablkcipher_request *req)
-+{
-+ return omap4_aes_crypt(req, FLAGS_CTR);
-+}
-+
-+static int omap4_aes_cra_init(struct crypto_tfm *tfm)
-+{
-+ pr_debug("enter\n");
-+
-+ tfm->crt_ablkcipher.reqsize = sizeof(struct omap4_aes_reqctx);
-+
-+ return 0;
-+}
-+
-+static void omap4_aes_cra_exit(struct crypto_tfm *tfm)
-+{
-+ pr_debug("enter\n");
-+}
-+
-+/* ********************** ALGS ************************************ */
-+
-+static struct crypto_alg algs[] = {
-+ {
-+ .cra_name = "ecb(aes)",
-+ .cra_driver_name = "ecb-aes-omap4",
-+ .cra_priority = 300,
-+ .cra_flags = CRYPTO_ALG_TYPE_ABLKCIPHER | CRYPTO_ALG_ASYNC,
-+ .cra_blocksize = AES_BLOCK_SIZE,
-+ .cra_ctxsize = sizeof(struct omap4_aes_ctx),
-+ .cra_alignmask = 0,
-+ .cra_type = &crypto_ablkcipher_type,
-+ .cra_module = THIS_MODULE,
-+ .cra_init = omap4_aes_cra_init,
-+ .cra_exit = omap4_aes_cra_exit,
-+ .cra_u.ablkcipher = {
-+ .min_keysize = AES_MIN_KEY_SIZE,
-+ .max_keysize = AES_MAX_KEY_SIZE,
-+ .setkey = omap4_aes_setkey,
-+ .encrypt = omap4_aes_ecb_encrypt,
-+ .decrypt = omap4_aes_ecb_decrypt,
-+ }
-+ },
-+ {
-+ .cra_name = "cbc(aes)",
-+ .cra_driver_name = "cbc-aes-omap4",
-+ .cra_priority = 300,
-+ .cra_flags = CRYPTO_ALG_TYPE_ABLKCIPHER | CRYPTO_ALG_ASYNC,
-+ .cra_blocksize = AES_BLOCK_SIZE,
-+ .cra_ctxsize = sizeof(struct omap4_aes_ctx),
-+ .cra_alignmask = 0,
-+ .cra_type = &crypto_ablkcipher_type,
-+ .cra_module = THIS_MODULE,
-+ .cra_init = omap4_aes_cra_init,
-+ .cra_exit = omap4_aes_cra_exit,
-+ .cra_u.ablkcipher = {
-+ .min_keysize = AES_MIN_KEY_SIZE,
-+ .max_keysize = AES_MAX_KEY_SIZE,
-+ .geniv = "eseqiv",
-+ .ivsize = AES_BLOCK_SIZE,
-+ .setkey = omap4_aes_setkey,
-+ .encrypt = omap4_aes_cbc_encrypt,
-+ .decrypt = omap4_aes_cbc_decrypt,
-+
-+ }
-+ },
-+ {
-+ .cra_name = "ctr(aes)",
-+ .cra_driver_name = "ctr-aes-omap4",
-+ .cra_priority = 300,
-+ .cra_flags = CRYPTO_ALG_TYPE_ABLKCIPHER | CRYPTO_ALG_ASYNC,
-+ .cra_blocksize = AES_BLOCK_SIZE,
-+ .cra_ctxsize = sizeof(struct omap4_aes_ctx),
-+ .cra_alignmask = 0,
-+ .cra_type = &crypto_ablkcipher_type,
-+ .cra_module = THIS_MODULE,
-+ .cra_init = omap4_aes_cra_init,
-+ .cra_exit = omap4_aes_cra_exit,
-+ .cra_u.ablkcipher = {
-+ .min_keysize = AES_MIN_KEY_SIZE,
-+ .max_keysize = AES_MAX_KEY_SIZE,
-+ .geniv = "eseqiv",
-+ .ivsize = AES_BLOCK_SIZE,
-+ .setkey = omap4_aes_setkey,
-+ .encrypt = omap4_aes_ctr_encrypt,
-+ .decrypt = omap4_aes_ctr_decrypt,
-+ }
-+ }
-+};
-+
-+static int omap4_aes_probe(struct platform_device *pdev)
-+{
-+ struct device *dev = &pdev->dev;
-+ struct omap4_aes_dev *dd;
-+ struct resource *res;
-+ int err = -ENOMEM, i, j;
-+ u32 reg;
-+
-+ dd = kzalloc(sizeof(struct omap4_aes_dev), GFP_KERNEL);
-+ if (dd == NULL) {
-+ dev_err(dev, "unable to alloc data struct.\n");
-+ goto err_data;
-+ }
-+ dd->dev = dev;
-+ platform_set_drvdata(pdev, dd);
-+
-+ spin_lock_init(&dd->lock);
-+ crypto_init_queue(&dd->queue, AM33X_AES_QUEUE_LENGTH);
-+
-+ /* Get the base address */
-+ res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-+ if (!res) {
-+ dev_err(dev, "invalid resource type\n");
-+ err = -ENODEV;
-+ goto err_res;
-+ }
-+ dd->phys_base = res->start;
-+
-+ /* Get the DMA */
-+ res = platform_get_resource(pdev, IORESOURCE_DMA, 0);
-+ if (!res)
-+ dev_info(dev, "no DMA info\n");
-+ else
-+ dd->dma_out = res->start;
-+
-+ /* Get the DMA */
-+ res = platform_get_resource(pdev, IORESOURCE_DMA, 1);
-+ if (!res)
-+ dev_info(dev, "no DMA info\n");
-+ else
-+ dd->dma_in = res->start;
-+
-+ /* Initializing the clock */
-+ dd->iclk = clk_get(dev, "aes0_fck");
-+ if (IS_ERR(dd->iclk)) {
-+ dev_err(dev, "clock initialization failed.\n");
-+ err = PTR_ERR(dd->iclk);
-+ goto err_res;
-+ }
-+
-+ dd->io_base = ioremap(dd->phys_base, SZ_4K);
-+ if (!dd->io_base) {
-+ dev_err(dev, "can't ioremap\n");
-+ err = -ENOMEM;
-+ goto err_io;
-+ }
-+
-+ omap4_aes_hw_init(dd);
-+ reg = omap4_aes_read(dd, AES_REG_REV);
-+ clk_disable(dd->iclk);
-+ dev_info(dev, "AM33X AES hw accel rev: %u.%02u\n",
-+ ((reg & AES_REG_REV_X_MAJOR_MASK) >> 8),
-+ (reg & AES_REG_REV_Y_MINOR_MASK));
-+
-+ tasklet_init(&dd->done_task, omap4_aes_done_task, (unsigned long)dd);
-+ tasklet_init(&dd->queue_task, omap4_aes_queue_task, (unsigned long)dd);
-+
-+ err = omap4_aes_dma_init(dd);
-+ if (err)
-+ goto err_dma;
-+
-+ INIT_LIST_HEAD(&dd->list);
-+ spin_lock(&list_lock);
-+ list_add_tail(&dd->list, &dev_list);
-+ spin_unlock(&list_lock);
-+
-+ for (i = 0; i < ARRAY_SIZE(algs); i++) {
-+ pr_debug("reg alg: %s\n", algs[i].cra_name);
-+ INIT_LIST_HEAD(&algs[i].cra_list);
-+ err = crypto_register_alg(&algs[i]);
-+ if (err)
-+ goto err_algs;
-+ }
-+
-+ pr_info("probe() done\n");
-+
-+ return 0;
-+
-+err_algs:
-+ for (j = 0; j < i; j++)
-+ crypto_unregister_alg(&algs[j]);
-+ omap4_aes_dma_cleanup(dd);
-+err_dma:
-+ tasklet_kill(&dd->done_task);
-+ tasklet_kill(&dd->queue_task);
-+ iounmap(dd->io_base);
-+
-+err_io:
-+ clk_put(dd->iclk);
-+err_res:
-+ kfree(dd);
-+ dd = NULL;
-+err_data:
-+ dev_err(dev, "initialization failed.\n");
-+ return err;
-+}
-+
-+static int omap4_aes_remove(struct platform_device *pdev)
-+{
-+ struct omap4_aes_dev *dd = platform_get_drvdata(pdev);
-+ int i;
-+
-+ if (!dd)
-+ return -ENODEV;
-+
-+ spin_lock(&list_lock);
-+ list_del(&dd->list);
-+ spin_unlock(&list_lock);
-+
-+ for (i = 0; i < ARRAY_SIZE(algs); i++)
-+ crypto_unregister_alg(&algs[i]);
-+
-+ tasklet_kill(&dd->done_task);
-+ tasklet_kill(&dd->queue_task);
-+ omap4_aes_dma_cleanup(dd);
-+ iounmap(dd->io_base);
-+ clk_put(dd->iclk);
-+ kfree(dd);
-+ dd = NULL;
-+
-+ return 0;
-+}
-+
-+static struct platform_driver omap4_aes_driver = {
-+ .probe = omap4_aes_probe,
-+ .remove = omap4_aes_remove,
-+ .driver = {
-+ .name = "omap4-aes",
-+ .owner = THIS_MODULE,
-+ },
-+};
-+
-+static int __init omap4_aes_mod_init(void)
-+{
-+ pr_info("loading AM33X AES driver\n");
-+
-+ /* This only works on a GP device */
-+ if (!cpu_is_am33xx() || omap_type() != OMAP2_DEVICE_TYPE_GP) {
-+ pr_err("Unsupported cpu\n");
-+ return -ENODEV;
-+ }
-+ return platform_driver_register(&omap4_aes_driver);
-+}
-+
-+static void __exit omap4_aes_mod_exit(void)
-+{
-+ pr_info("unloading AM33X AES driver\n");
-+
-+ platform_driver_unregister(&omap4_aes_driver);
-+}
-+
-+module_init(omap4_aes_mod_init);
-+module_exit(omap4_aes_mod_exit);
-+
-+MODULE_DESCRIPTION("AM33X AES acceleration support.");
-+MODULE_LICENSE("GPL v2");
-+MODULE_AUTHOR("Herman Schuurman");
---
-1.7.0.4
diff --git a/recipes-kernel/linux/linux-am335x-psp-3.2/0007-crypto-omap4-aes-Add-suspend-resume-PM-support.patch b/recipes-kernel/linux/linux-am335x-psp-3.2/0007-crypto-omap4-aes-Add-suspend-resume-PM-support.patch
deleted file mode 100644
index cce7691..0000000
--- a/recipes-kernel/linux/linux-am335x-psp-3.2/0007-crypto-omap4-aes-Add-suspend-resume-PM-support.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From 90b8eaec8de51fab15872f8737a5148b99f80282 Mon Sep 17 00:00:00 2001
-From: "Mark A. Greer" <mgreer at animalcreek.com>
-Date: Wed, 12 Dec 2012 00:46:52 -0700
-Subject: [PATCH 07/10] crypto: omap4-aes: Add suspend/resume PM support
-
-Add suspend/resume PM support to the omap4-aes driver
-
-Signed-off-by: Mark A. Greer <mgreer at animalcreek.com>
----
- drivers/crypto/omap4-aes.c | 13 ++++---------
- 1 file changed, 4 insertions(+), 9 deletions(-)
-
-diff --git a/drivers/crypto/omap4-aes.c b/drivers/crypto/omap4-aes.c
-index a957709..941b8a1 100644
---- a/drivers/crypto/omap4-aes.c
-+++ b/drivers/crypto/omap4-aes.c
-@@ -911,24 +911,19 @@ static int omap4_aes_remove(struct platform_device *pdev)
-
- static int omap4_aes_suspend(struct device *dev)
- {
-- pr_debug("#### Crypto: Suspend call ####\n");
--
-+ pm_runtime_put_sync(dev);
- return 0;
- }
-
-
- static int omap4_aes_resume(struct device *dev)
- {
-- pr_debug("#### Crypto: resume call ####\n");
--
-+ pm_runtime_get_sync(dev);
- return 0;
- }
-
- static struct dev_pm_ops omap4_aes_dev_pm_ops = {
-- .suspend = omap4_aes_suspend,
-- .resume = omap4_aes_resume,
-- .runtime_suspend = omap4_aes_suspend,
-- .runtime_resume = omap4_aes_resume,
-+ SET_SYSTEM_SLEEP_PM_OPS(omap4_aes_suspend, omap4_aes_resume)
- };
-
- static struct platform_driver omap4_aes_driver = {
-@@ -937,7 +932,7 @@ static struct platform_driver omap4_aes_driver = {
- .driver = {
- .name = "omap4-aes",
- .owner = THIS_MODULE,
-- .pm = &omap4_aes_dev_pm_ops
-+ .pm = &omap4_aes_dev_pm_ops
- },
- };
-
---
-1.7.12
-
diff --git a/recipes-kernel/linux/linux-am335x-psp-3.2/0008-am33x-Create-driver-for-SHA-MD5-crypto-module.patch b/recipes-kernel/linux/linux-am335x-psp-3.2/0008-am33x-Create-driver-for-SHA-MD5-crypto-module.patch
deleted file mode 100644
index 13c7e9e..0000000
--- a/recipes-kernel/linux/linux-am335x-psp-3.2/0008-am33x-Create-driver-for-SHA-MD5-crypto-module.patch
+++ /dev/null
@@ -1,1444 +0,0 @@
-From 31e5e24a1d713b1f8306050e6b6a640ec30b1848 Mon Sep 17 00:00:00 2001
-From: Greg Turner <gregturner at ti.com>
-Date: Thu, 17 May 2012 15:19:26 -0500
-Subject: [PATCH 8/8] am33x: Create driver for SHA/MD5 crypto module
-
-This is the initial version of the SHA/MD5 driver for OMAP4 derivative SOC's such as AM335x.
-
-Signed-off-by: Greg Turner <gregturner at ti.com>
----
- drivers/crypto/omap4-sham.c | 1423 +++++++++++++++++++++++++++++++++++++++++++
- 1 files changed, 1423 insertions(+), 0 deletions(-)
- create mode 100755 drivers/crypto/omap4-sham.c
-
-diff --git a/drivers/crypto/omap4-sham.c b/drivers/crypto/omap4-sham.c
-new file mode 100755
-index 0000000..79f6be9
---- /dev/null
-+++ b/drivers/crypto/omap4-sham.c
-@@ -0,0 +1,1423 @@
-+/*
-+ * Cryptographic API.
-+ *
-+ * Support for OMAP SHA1/MD5 HW acceleration.
-+ *
-+ * Copyright (c) 2010 Nokia Corporation
-+ * Author: Dmitry Kasatkin <dmitry.kasatkin at nokia.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as published
-+ * by the Free Software Foundation.
-+ *
-+ * Some ideas are from old omap-sha1-md5.c driver.
-+ */
-+/*
-+ * Copyright © 2011 Texas Instruments Incorporated
-+ * Author: Herman Schuurman
-+ * Change: July 2011 - Adapted the omap-sham.c driver to support Netra
-+ * implementation of SHA/MD5 hardware accelerator.
-+ * Dec 2011 - Updated with latest omap-sham.c driver changes.
-+ */
-+
-+//#define DEBUG
-+
-+#define pr_fmt(fmt) "%s: " fmt, __func__
-+
-+#include <linux/err.h>
-+#include <linux/device.h>
-+#include <linux/module.h>
-+#include <linux/init.h>
-+#include <linux/errno.h>
-+#include <linux/interrupt.h>
-+#include <linux/kernel.h>
-+#include <linux/clk.h>
-+#include <linux/irq.h>
-+#include <linux/io.h>
-+#include <linux/platform_device.h>
-+#include <linux/scatterlist.h>
-+#include <linux/dma-mapping.h>
-+#include <linux/delay.h>
-+#include <linux/crypto.h>
-+#include <linux/cryptohash.h>
-+#include <crypto/scatterwalk.h>
-+#include <crypto/algapi.h>
-+#include <crypto/sha.h>
-+#include <crypto/md5.h>
-+#include <crypto/hash.h>
-+#include <crypto/internal/hash.h>
-+
-+#include <mach/hardware.h>
-+#include <plat/cpu.h>
-+#include <plat/dma.h>
-+#include <mach/edma.h>
-+#include <mach/irqs.h>
-+#include "omap4.h"
-+
-+#define SHA2_MD5_BLOCK_SIZE SHA1_BLOCK_SIZE
-+
-+#define DEFAULT_TIMEOUT_INTERVAL HZ
-+
-+/* device flags */
-+#define FLAGS_BUSY 0
-+#define FLAGS_FINAL 1
-+#define FLAGS_DMA_ACTIVE 2
-+#define FLAGS_OUTPUT_READY 3 /* shared with context flags */
-+#define FLAGS_INIT 4
-+#define FLAGS_CPU 5 /* shared with context flags */
-+#define FLAGS_DMA_READY 6 /* shared with context flags */
-+
-+/* context flags */
-+#define FLAGS_FINUP 16
-+#define FLAGS_SG 17
-+#define FLAGS_MODE_SHIFT 18
-+#define FLAGS_MODE_MASK (SHA_REG_MODE_ALGO_MASK << (FLAGS_MODE_SHIFT - 1))
-+#define FLAGS_MD5 (SHA_REG_MODE_ALGO_MD5_128 << (FLAGS_MODE_SHIFT - 1))
-+#define FLAGS_SHA1 (SHA_REG_MODE_ALGO_SHA1_160 << (FLAGS_MODE_SHIFT - 1))
-+#define FLAGS_SHA224 (SHA_REG_MODE_ALGO_SHA2_224 << (FLAGS_MODE_SHIFT - 1))
-+#define FLAGS_SHA256 (SHA_REG_MODE_ALGO_SHA2_256 << (FLAGS_MODE_SHIFT - 1))
-+#define FLAGS_HMAC 20
-+#define FLAGS_ERROR 21
-+
-+#define OP_UPDATE 1
-+#define OP_FINAL 2
-+
-+#define AM33X_ALIGN_MASK (sizeof(u32)-1)
-+#define AM33X_ALIGNED __attribute__((aligned(sizeof(u32))))
-+
-+#define BUFLEN PAGE_SIZE
-+
-+struct omap4_sham_dev;
-+
-+struct omap4_sham_reqctx {
-+ struct omap4_sham_dev *dd;
-+ unsigned long rflags;
-+ unsigned long op;
-+
-+ u8 digest[SHA256_DIGEST_SIZE] AM33X_ALIGNED;
-+ size_t digcnt; /* total digest byte count */
-+ size_t bufcnt; /* bytes in buffer */
-+ size_t buflen; /* buffer length */
-+ dma_addr_t dma_addr;
-+
-+ /* walk state */
-+ struct scatterlist *sg;
-+ unsigned int offset; /* offset in current sg */
-+ unsigned int total; /* total request */
-+
-+ u8 buffer[0] AM33X_ALIGNED;
-+};
-+
-+/* This structure holds the initial HMAC key value, and subsequently
-+ * the outer digest in the first 32 bytes. The inner digest will be
-+ * kept within the request context to conform to hash only
-+ * computations.
-+ */
-+struct omap4_sham_hmac_ctx {
-+ struct crypto_shash *shash;
-+ u8 keypad[SHA2_MD5_BLOCK_SIZE] AM33X_ALIGNED;
-+ u32 odigest[SHA256_DIGEST_SIZE / sizeof(u32)];
-+};
-+
-+struct omap4_sham_ctx {
-+ struct omap4_sham_dev *dd;
-+
-+ unsigned long cflags;
-+
-+ /* fallback stuff */
-+ struct crypto_shash *fallback;
-+
-+ struct omap4_sham_hmac_ctx base[0];
-+};
-+
-+#define AM33X_SHAM_QUEUE_LENGTH 1
-+
-+struct omap4_sham_dev {
-+ struct list_head list;
-+ unsigned long phys_base;
-+ struct device *dev;
-+ void __iomem *io_base;
-+ int irq;
-+ struct clk *iclk;
-+ spinlock_t lock;
-+ int err;
-+ int dma;
-+ int dma_lch;
-+ struct tasklet_struct done_task;
-+
-+ unsigned long dflags;
-+ struct crypto_queue queue;
-+ struct ahash_request *req;
-+};
-+
-+struct omap4_sham_drv {
-+ struct list_head dev_list;
-+ spinlock_t lock;
-+ unsigned long flags; /* superfluous ???? */
-+};
-+
-+static struct omap4_sham_drv sham = {
-+ .dev_list = LIST_HEAD_INIT(sham.dev_list),
-+ .lock = __SPIN_LOCK_UNLOCKED(sham.lock),
-+};
-+
-+static inline u32 omap4_sham_read(struct omap4_sham_dev *dd, u32 offset)
-+{
-+ return __raw_readl(dd->io_base + offset);
-+}
-+
-+static inline void omap4_sham_write(struct omap4_sham_dev *dd,
-+ u32 offset, u32 value)
-+{
-+ __raw_writel(value, dd->io_base + offset);
-+}
-+
-+static inline void omap4_sham_write_mask(struct omap4_sham_dev *dd, u32 address,
-+ u32 value, u32 mask)
-+{
-+ u32 val;
-+
-+ val = omap4_sham_read(dd, address);
-+ val &= ~mask;
-+ val |= value;
-+ omap4_sham_write(dd, address, val);
-+}
-+
-+static inline void omap4_sham_write_n(struct omap4_sham_dev *dd, u32 offset,
-+ u32 *value, int count)
-+{
-+ for (; count--; value++, offset += 4)
-+ omap4_sham_write(dd, offset, *value);
-+}
-+
-+static inline int omap4_sham_wait(struct omap4_sham_dev *dd, u32 offset, u32 bit)
-+{
-+ unsigned long timeout = jiffies + DEFAULT_TIMEOUT_INTERVAL;
-+
-+ while (!(omap4_sham_read(dd, offset) & bit)) {
-+ if (time_is_before_jiffies(timeout))
-+ return -ETIMEDOUT;
-+ }
-+
-+ return 0;
-+}
-+
-+static void omap4_sham_copy_hash(struct ahash_request *req, int out)
-+{
-+ struct omap4_sham_reqctx *ctx = ahash_request_ctx(req);
-+ u32 *hash = (u32 *)ctx->digest;
-+ int i;
-+
-+ if (ctx->rflags & BIT(FLAGS_HMAC)) {
-+ struct crypto_ahash *tfm = crypto_ahash_reqtfm(ctx->dd->req);
-+ struct omap4_sham_ctx *tctx = crypto_ahash_ctx(tfm);
-+ struct omap4_sham_hmac_ctx *bctx = tctx->base;
-+
-+ for (i = 0; i < SHA256_DIGEST_SIZE / sizeof(u32); i++) {
-+ if (out)
-+ bctx->odigest[i] = omap4_sham_read(ctx->dd,
-+ SHA_REG_ODIGEST_N(i));
-+ else
-+ omap4_sham_write(ctx->dd,
-+ SHA_REG_ODIGEST_N(i), bctx->odigest[i]);
-+ }
-+ }
-+
-+ /* Copy sha256 size to reduce code */
-+ for (i = 0; i < SHA256_DIGEST_SIZE / sizeof(u32); i++) {
-+ if (out)
-+ hash[i] = omap4_sham_read(ctx->dd,
-+ SHA_REG_IDIGEST_N(i));
-+ else
-+ omap4_sham_write(ctx->dd,
-+ SHA_REG_IDIGEST_N(i), hash[i]);
-+ }
-+}
-+
-+static void omap4_sham_copy_ready_hash(struct ahash_request *req)
-+{
-+ struct omap4_sham_reqctx *ctx = ahash_request_ctx(req);
-+ u32 *in = (u32 *)ctx->digest;
-+ u32 *hash = (u32 *)req->result;
-+ int i, d;
-+
-+ if (!hash)
-+ return;
-+
-+ switch (ctx->rflags & FLAGS_MODE_MASK) {
-+ case FLAGS_MD5:
-+ d = MD5_DIGEST_SIZE / sizeof(u32);
-+ break;
-+ case FLAGS_SHA1:
-+ d = SHA1_DIGEST_SIZE / sizeof(u32);
-+ break;
-+ case FLAGS_SHA224:
-+ d = SHA224_DIGEST_SIZE / sizeof(u32);
-+ break;
-+ case FLAGS_SHA256:
-+ d = SHA256_DIGEST_SIZE / sizeof(u32);
-+ break;
-+ }
-+
-+ /* all results are in little endian */
-+ for (i = 0; i < d; i++)
-+ hash[i] = le32_to_cpu(in[i]);
-+}
-+
-+#if 0
-+static int omap4_sham_hw_init(struct omap4_sham_dev *dd)
-+{
-+ omap4_sham_write(dd, SHA_REG_SYSCFG, SHA_REG_SYSCFG_SOFTRESET);
-+ /*
-+ * prevent OCP bus error (SRESP) in case an access to the module
-+ * is performed while the module is coming out of soft reset
-+ */
-+ __asm__ __volatile__("nop");
-+ __asm__ __volatile__("nop");
-+
-+ if (omap4_sham_wait(dd, SHA_REG_SYSSTATUS, SHA_REG_SYSSTATUS_RESETDONE))
-+ return -ETIMEDOUT;
-+
-+ omap4_sham_write(dd, SHA_REG_SYSCFG,
-+ SHA_REG_SYSCFG_SIDLE_SMARTIDLE | SHA_REG_SYSCFG_AUTOIDLE);
-+ set_bit(FLAGS_INIT, &dd->dflags);
-+ dd->err = 0;
-+
-+ return 0;
-+}
-+#endif
-+
-+static void omap4_sham_write_ctrl(struct omap4_sham_dev *dd, int final, int dma)
-+{
-+ struct omap4_sham_reqctx *ctx = ahash_request_ctx(dd->req);
-+ u32 val, mask;
-+
-+ /*
-+ * Setting ALGO_CONST only for the first iteration and
-+ * CLOSE_HASH only for the last one. Note that flags mode bits
-+ * correspond to algorithm encoding in mode register.
-+ */
-+ val = (ctx->rflags & FLAGS_MODE_MASK) >> (FLAGS_MODE_SHIFT - 1);
-+ if (!ctx->digcnt) {
-+ struct crypto_ahash *tfm = crypto_ahash_reqtfm(dd->req);
-+ struct omap4_sham_ctx *tctx = crypto_ahash_ctx(tfm);
-+ struct omap4_sham_hmac_ctx *bctx = tctx->base;
-+
-+ val |= SHA_REG_MODE_ALGO_CONSTANT;
-+ if (ctx->rflags & BIT(FLAGS_HMAC)) {
-+ val |= SHA_REG_MODE_HMAC_KEY_PROC;
-+ omap4_sham_write_n(dd, SHA_REG_ODIGEST, (u32 *) bctx->keypad,
-+ SHA2_MD5_BLOCK_SIZE / sizeof(u32));
-+ ctx->digcnt += SHA2_MD5_BLOCK_SIZE;
-+ }
-+ }
-+ if (final) {
-+ val |= SHA_REG_MODE_CLOSE_HASH;
-+
-+ if (ctx->rflags & BIT(FLAGS_HMAC)) {
-+ val |= SHA_REG_MODE_HMAC_OUTER_HASH;
-+ }
-+ }
-+
-+ mask = SHA_REG_MODE_ALGO_CONSTANT | SHA_REG_MODE_CLOSE_HASH |
-+ SHA_REG_MODE_ALGO_MASK | SHA_REG_MODE_HMAC_OUTER_HASH |
-+ SHA_REG_MODE_HMAC_KEY_PROC;
-+
-+ dev_dbg(dd->dev, "ctrl: %08x, flags: %08lx\n", val, ctx->rflags);
-+ omap4_sham_write_mask(dd, SHA_REG_MODE, val, mask);
-+ omap4_sham_write(dd, SHA_REG_IRQENA, SHA_REG_IRQENA_OUTPUT_RDY);
-+ omap4_sham_write_mask(dd, SHA_REG_SYSCFG,
-+ SHA_REG_SYSCFG_SIT_EN | (dma ? SHA_REG_SYSCFG_SDMA_EN : 0),
-+ SHA_REG_SYSCFG_SIT_EN | SHA_REG_SYSCFG_SDMA_EN);
-+}
-+
-+static int omap4_sham_xmit_cpu(struct omap4_sham_dev *dd, const u8 *buf,
-+ size_t length, int final)
-+{
-+ struct omap4_sham_reqctx *ctx = ahash_request_ctx(dd->req);
-+ int count, len32;
-+ const u32 *buffer = (const u32 *)buf;
-+
-+ dev_dbg(dd->dev, "xmit_cpu: digcnt: %d, length: %d, final: %d\n",
-+ ctx->digcnt, length, final);
-+
-+ if (final)
-+ set_bit(FLAGS_FINAL, &dd->dflags); /* catch last interrupt */
-+
-+ set_bit(FLAGS_CPU, &dd->dflags);
-+
-+ omap4_sham_write_ctrl(dd, final, 0);
-+ /*
-+ * Setting the length field will also trigger start of
-+ * processing.
-+ */
-+ omap4_sham_write(dd, SHA_REG_LENGTH, length);
-+
-+ /* short-circuit zero length */
-+ if (likely(length)) {
-+ ctx->digcnt += length;
-+
-+ if (omap4_sham_wait(dd, SHA_REG_IRQSTATUS, SHA_REG_IRQSTATUS_INPUT_RDY))
-+ return -ETIMEDOUT;
-+
-+ len32 = DIV_ROUND_UP(length, sizeof(u32));
-+
-+ for (count = 0; count < len32; count++)
-+ omap4_sham_write(dd, SHA_REG_DATA_N(count), buffer[count]);
-+ }
-+
-+ return -EINPROGRESS;
-+}
-+
-+static int omap4_sham_xmit_dma(struct omap4_sham_dev *dd, dma_addr_t dma_addr,
-+ size_t length, int final)
-+{
-+ struct omap4_sham_reqctx *ctx = ahash_request_ctx(dd->req);
-+ int nblocks;
-+ struct edmacc_param p_ram;
-+
-+ dev_dbg(dd->dev, "xmit_dma: digcnt: %d, length: %d, final: %d\n",
-+ ctx->digcnt, length, final);
-+
-+ nblocks = DIV_ROUND_UP(length, SHA2_MD5_BLOCK_SIZE);
-+
-+ /* EDMA IN */
-+ p_ram.opt = TCINTEN |
-+ EDMA_TCC(EDMA_CHAN_SLOT(dd->dma_lch));
-+ p_ram.src = dma_addr;
-+ p_ram.a_b_cnt = SHA2_MD5_BLOCK_SIZE | nblocks << 16;
-+ p_ram.dst = dd->phys_base + SHA_REG_DATA;
-+ p_ram.src_dst_bidx = SHA2_MD5_BLOCK_SIZE;
-+ p_ram.link_bcntrld = 1 << 16 | 0xFFFF;
-+ p_ram.src_dst_cidx = 0;
-+ p_ram.ccnt = 1;
-+ edma_write_slot(dd->dma_lch, &p_ram);
-+
-+ omap4_sham_write_ctrl(dd, final, 1);
-+
-+ ctx->digcnt += length;
-+
-+ if (final)
-+ set_bit(FLAGS_FINAL, &dd->dflags); /* catch last interrupt */
-+
-+ set_bit(FLAGS_DMA_ACTIVE, &dd->dflags);
-+
-+ edma_start(dd->dma_lch);
-+
-+ /*
-+ * Setting the length field will also trigger start of
-+ * processing.
-+ */
-+ omap4_sham_write(dd, SHA_REG_LENGTH, length);
-+
-+ return -EINPROGRESS;
-+}
-+
-+static size_t omap4_sham_append_buffer(struct omap4_sham_reqctx *ctx,
-+ const u8 *data, size_t length)
-+{
-+ size_t count = min(length, ctx->buflen - ctx->bufcnt);
-+
-+ count = min(count, ctx->total);
-+ if (count <= 0)
-+ return 0;
-+ memcpy(ctx->buffer + ctx->bufcnt, data, count);
-+ ctx->bufcnt += count;
-+
-+ return count;
-+}
-+
-+static size_t omap4_sham_append_sg(struct omap4_sham_reqctx *ctx)
-+{
-+ size_t count;
-+
-+ while (ctx->sg) {
-+ if (ctx->sg->length) {
-+ count = omap4_sham_append_buffer(ctx,
-+ sg_virt(ctx->sg) + ctx->offset,
-+ ctx->sg->length - ctx->offset);
-+ if (!count)
-+ break;
-+ ctx->offset += count;
-+ ctx->total -= count;
-+ }
-+ if (ctx->offset == ctx->sg->length) {
-+ ctx->sg = sg_next(ctx->sg);
-+ if (ctx->sg)
-+ ctx->offset = 0;
-+ else
-+ ctx->total = 0;
-+ }
-+ }
-+
-+ return 0;
-+}
-+
-+static int omap4_sham_xmit_dma_map(struct omap4_sham_dev *dd,
-+ struct omap4_sham_reqctx *ctx,
-+ size_t length, int final)
-+{
-+ ctx->dma_addr = dma_map_single(dd->dev, ctx->buffer, ctx->buflen,
-+ DMA_TO_DEVICE);
-+ if (dma_mapping_error(dd->dev, ctx->dma_addr)) {
-+ dev_err(dd->dev, "dma %u bytes error\n", ctx->buflen);
-+ return -EINVAL;
-+ }
-+
-+ ctx->rflags &= ~BIT(FLAGS_SG);
-+
-+ /* next call does not fail... so no unmap in the case of error */
-+ return omap4_sham_xmit_dma(dd, ctx->dma_addr, length, final);
-+}
-+
-+static int omap4_sham_update_dma_slow(struct omap4_sham_dev *dd)
-+{
-+ struct omap4_sham_reqctx *ctx = ahash_request_ctx(dd->req);
-+ unsigned int final;
-+ size_t count;
-+
-+ omap4_sham_append_sg(ctx);
-+
-+ final = (ctx->rflags & BIT(FLAGS_FINUP)) && !ctx->total;
-+
-+ dev_dbg(dd->dev, "slow: bufcnt: %u, digcnt: %d, final: %d\n",
-+ ctx->bufcnt, ctx->digcnt, final);
-+
-+ if (final || (ctx->bufcnt == ctx->buflen && ctx->total)) {
-+ count = ctx->bufcnt;
-+ ctx->bufcnt = 0;
-+ return omap4_sham_xmit_dma_map(dd, ctx, count, final);
-+ }
-+
-+ return 0;
-+}
-+
-+/* Start address alignment */
-+#define SG_AA(sg) (IS_ALIGNED(sg->offset, sizeof(u32)))
-+/* SHA1 block size alignment */
-+#define SG_SA(sg) (IS_ALIGNED(sg->length, SHA2_MD5_BLOCK_SIZE))
-+
-+static int omap4_sham_update_dma_start(struct omap4_sham_dev *dd)
-+{
-+ struct omap4_sham_reqctx *ctx = ahash_request_ctx(dd->req);
-+ unsigned int length, final, tail;
-+ struct scatterlist *sg;
-+
-+ if (!ctx->total)
-+ return 0;
-+
-+ if (ctx->bufcnt || ctx->offset)
-+ return omap4_sham_update_dma_slow(dd);
-+
-+ dev_dbg(dd->dev, "fast: digcnt: %d, bufcnt: %u, total: %u\n",
-+ ctx->digcnt, ctx->bufcnt, ctx->total);
-+
-+ sg = ctx->sg;
-+
-+ if (!SG_AA(sg))
-+ return omap4_sham_update_dma_slow(dd);
-+
-+ if (!sg_is_last(sg) && !SG_SA(sg))
-+ /* size is not SHA1_BLOCK_SIZE aligned */
-+ return omap4_sham_update_dma_slow(dd);
-+
-+ length = min(ctx->total, sg->length);
-+
-+ if (sg_is_last(sg)) {
-+ if (!(ctx->rflags & BIT(FLAGS_FINUP))) {
-+ /* not last sg must be SHA2_MD5_BLOCK_SIZE aligned */
-+ tail = length & (SHA2_MD5_BLOCK_SIZE - 1);
-+ /* without finup() we need one block to close hash */
-+ if (!tail)
-+ tail = SHA2_MD5_BLOCK_SIZE;
-+ length -= tail;
-+ }
-+ }
-+
-+ if (!dma_map_sg(dd->dev, ctx->sg, 1, DMA_TO_DEVICE)) {
-+ dev_err(dd->dev, "dma_map_sg error\n");
-+ return -EINVAL;
-+ }
-+
-+ ctx->rflags |= BIT(FLAGS_SG);
-+
-+ ctx->total -= length;
-+ ctx->offset = length; /* offset where to start slow */
-+
-+ final = (ctx->rflags & BIT(FLAGS_FINUP)) && !ctx->total;
-+
-+ /* next call does not fail... so no unmap in the case of error */
-+ return omap4_sham_xmit_dma(dd, sg_dma_address(ctx->sg), length, final);
-+}
-+
-+static int omap4_sham_update_cpu(struct omap4_sham_dev *dd)
-+{
-+ struct omap4_sham_reqctx *ctx = ahash_request_ctx(dd->req);
-+ int bufcnt;
-+
-+ omap4_sham_append_sg(ctx);
-+ bufcnt = ctx->bufcnt;
-+ ctx->bufcnt = 0;
-+
-+ return omap4_sham_xmit_cpu(dd, ctx->buffer, bufcnt, 1);
-+}
-+
-+static int omap4_sham_update_dma_stop(struct omap4_sham_dev *dd)
-+{
-+ struct omap4_sham_reqctx *ctx = ahash_request_ctx(dd->req);
-+
-+ edma_stop(dd->dma_lch);
-+ if (ctx->rflags & BIT(FLAGS_SG)) {
-+ dma_unmap_sg(dd->dev, ctx->sg, 1, DMA_TO_DEVICE);
-+ if (ctx->sg->length == ctx->offset) {
-+ ctx->sg = sg_next(ctx->sg);
-+ if (ctx->sg)
-+ ctx->offset = 0;
-+ }
-+ } else {
-+ dma_unmap_single(dd->dev, ctx->dma_addr, ctx->buflen,
-+ DMA_TO_DEVICE);
-+ }
-+
-+ return 0;
-+}
-+
-+static int omap4_sham_init(struct ahash_request *req)
-+{
-+ struct crypto_ahash *tfm = crypto_ahash_reqtfm(req);
-+ struct omap4_sham_ctx *tctx = crypto_ahash_ctx(tfm);
-+ struct omap4_sham_reqctx *ctx = ahash_request_ctx(req);
-+ struct omap4_sham_dev *dd = NULL, *tmp;
-+
-+ spin_lock_bh(&sham.lock);
-+ if (!tctx->dd) {
-+ list_for_each_entry(tmp, &sham.dev_list, list) {
-+ dd = tmp;
-+ break;
-+ }
-+ tctx->dd = dd;
-+ } else {
-+ dd = tctx->dd;
-+ }
-+ spin_unlock_bh(&sham.lock);
-+
-+ ctx->dd = dd;
-+
-+ ctx->rflags = 0;
-+
-+ dev_dbg(dd->dev, "init: digest size: %d (@0x%08lx)\n",
-+ crypto_ahash_digestsize(tfm), dd->phys_base);
-+
-+ switch (crypto_ahash_digestsize(tfm)) {
-+ case MD5_DIGEST_SIZE:
-+ ctx->rflags |= FLAGS_MD5;
-+ break;
-+ case SHA1_DIGEST_SIZE:
-+ ctx->rflags |= FLAGS_SHA1;
-+ break;
-+ case SHA224_DIGEST_SIZE:
-+ ctx->rflags |= FLAGS_SHA224;
-+ break;
-+ case SHA256_DIGEST_SIZE:
-+ ctx->rflags |= FLAGS_SHA256;
-+ break;
-+ }
-+
-+ ctx->bufcnt = 0;
-+ ctx->digcnt = 0;
-+ ctx->buflen = BUFLEN;
-+
-+ if (tctx->cflags & BIT(FLAGS_HMAC)) {
-+ ctx->rflags |= BIT(FLAGS_HMAC);
-+ }
-+
-+ return 0;
-+}
-+
-+static int omap4_sham_update_req(struct omap4_sham_dev *dd)
-+{
-+ struct ahash_request *req = dd->req;
-+ struct omap4_sham_reqctx *ctx = ahash_request_ctx(req);
-+ int err;
-+
-+ dev_dbg(dd->dev, "update_req: total: %u, digcnt: %d, finup: %d\n",
-+ ctx->total, ctx->digcnt, (ctx->rflags & BIT(FLAGS_FINUP)) != 0);
-+
-+ if (ctx->rflags & BIT(FLAGS_CPU))
-+ err = omap4_sham_update_cpu(dd);
-+ else
-+ err = omap4_sham_update_dma_start(dd);
-+
-+ /* wait for dma completion before can take more data */
-+ dev_dbg(dd->dev, "update: err: %d, digcnt: %d\n", err, ctx->digcnt);
-+
-+ return err;
-+}
-+
-+static int omap4_sham_final_req(struct omap4_sham_dev *dd)
-+{
-+ struct ahash_request *req = dd->req;
-+ struct omap4_sham_reqctx *ctx = ahash_request_ctx(req);
-+ int err = 0;
-+
-+ if (ctx->bufcnt <= SHA2_MD5_BLOCK_SIZE) /* faster to handle single block with CPU */
-+ err = omap4_sham_xmit_cpu(dd, ctx->buffer, ctx->bufcnt, 1);
-+ else
-+ err = omap4_sham_xmit_dma_map(dd, ctx, ctx->bufcnt, 1);
-+
-+ ctx->bufcnt = 0;
-+
-+ dev_dbg(dd->dev, "final_req: err: %d\n", err);
-+
-+ return err;
-+}
-+
-+static int omap4_sham_finish(struct ahash_request *req)
-+{
-+ struct omap4_sham_reqctx *ctx = ahash_request_ctx(req);
-+ struct omap4_sham_dev *dd = ctx->dd;
-+
-+ omap4_sham_copy_ready_hash(req);
-+ dev_dbg(dd->dev, "digcnt: %d, bufcnt: %d\n", ctx->digcnt, ctx->bufcnt);
-+
-+ return 0;
-+}
-+
-+static void omap4_sham_finish_req(struct ahash_request *req, int err)
-+{
-+ struct omap4_sham_reqctx *ctx = ahash_request_ctx(req);
-+ struct omap4_sham_dev *dd = ctx->dd;
-+
-+ if (!err) {
-+ omap4_sham_copy_hash(req, 1);
-+ if (test_bit(FLAGS_FINAL, &dd->dflags)) {
-+ err = omap4_sham_finish(req);
-+ }
-+ } else {
-+ ctx->rflags |= BIT(FLAGS_ERROR);
-+ }
-+
-+ /* atomic operation is not needed here */
-+ dd->dflags &= ~(BIT(FLAGS_BUSY) | BIT(FLAGS_FINAL) | BIT(FLAGS_CPU) |
-+ BIT(FLAGS_DMA_READY) | BIT(FLAGS_OUTPUT_READY));
-+ clk_disable(dd->iclk);
-+
-+ if (req->base.complete)
-+ req->base.complete(&req->base, err);
-+
-+ /* handle new request */
-+ tasklet_schedule(&dd->done_task);
-+}
-+
-+static int omap4_sham_handle_queue(struct omap4_sham_dev *dd,
-+ struct ahash_request *req)
-+{
-+ struct crypto_async_request *async_req, *backlog;
-+ struct omap4_sham_reqctx *ctx;
-+ unsigned long flags;
-+ int err = 0, ret = 0;
-+
-+ spin_lock_irqsave(&dd->lock, flags);
-+ if (req)
-+ ret = ahash_enqueue_request(&dd->queue, req);
-+ if (test_bit(FLAGS_BUSY, &dd->dflags)) {
-+ spin_unlock_irqrestore(&dd->lock, flags);
-+ return ret;
-+ }
-+ backlog = crypto_get_backlog(&dd->queue);
-+ async_req = crypto_dequeue_request(&dd->queue);
-+ if (async_req)
-+ set_bit(FLAGS_BUSY, &dd->dflags);
-+ spin_unlock_irqrestore(&dd->lock, flags);
-+
-+ if (!async_req)
-+ return ret;
-+
-+ if (backlog)
-+ backlog->complete(backlog, -EINPROGRESS);
-+
-+ req = ahash_request_cast(async_req);
-+ dd->req = req;
-+ ctx = ahash_request_ctx(req);
-+
-+ dev_dbg(dd->dev, "handling new req, op: %lu, nbytes: %d\n",
-+ ctx->op, req->nbytes);
-+
-+ clk_enable(dd->iclk);
-+ if (!test_bit(FLAGS_INIT, &dd->dflags)) {
-+ set_bit(FLAGS_INIT, &dd->dflags);
-+ dd->err = 0;
-+ }
-+
-+ if (ctx->digcnt) /* not initial request - restore hash */
-+ omap4_sham_copy_hash(req, 0);
-+
-+ if (ctx->op == OP_UPDATE) {
-+ err = omap4_sham_update_req(dd);
-+ if (err != -EINPROGRESS && (ctx->rflags & BIT(FLAGS_FINUP)))
-+ /* no final() after finup() */
-+ err = omap4_sham_final_req(dd);
-+ } else if (ctx->op == OP_FINAL) {
-+ err = omap4_sham_final_req(dd);
-+ }
-+
-+ if (err != -EINPROGRESS)
-+ /* done_task will not finish it, so do it here */
-+ omap4_sham_finish_req(req, err);
-+
-+ dev_dbg(dd->dev, "exit, err: %d\n", err);
-+
-+ return ret;
-+}
-+
-+static int omap4_sham_enqueue(struct ahash_request *req, unsigned int op)
-+{
-+ struct omap4_sham_reqctx *ctx = ahash_request_ctx(req);
-+ struct omap4_sham_ctx *tctx = crypto_tfm_ctx(req->base.tfm);
-+ struct omap4_sham_dev *dd = tctx->dd;
-+
-+ ctx->op = op;
-+
-+ return omap4_sham_handle_queue(dd, req);
-+}
-+
-+static int omap4_sham_update(struct ahash_request *req)
-+{
-+ struct omap4_sham_reqctx *ctx = ahash_request_ctx(req);
-+
-+ if (!(ctx->rflags & BIT(FLAGS_FINUP)))
-+ if (!req->nbytes)
-+ return 0;
-+
-+ ctx->total = req->nbytes;
-+ ctx->sg = req->src;
-+ ctx->offset = 0;
-+
-+ if (ctx->rflags & BIT(FLAGS_FINUP)) {
-+ if (ctx->bufcnt + ctx->total <= SHA2_MD5_BLOCK_SIZE) {
-+ /*
-+ * faster to use CPU for short transfers
-+ */
-+ ctx->rflags |= BIT(FLAGS_CPU);
-+ }
-+ } else if (ctx->bufcnt + ctx->total < ctx->buflen) {
-+ omap4_sham_append_sg(ctx);
-+ return 0;
-+ }
-+
-+ return omap4_sham_enqueue(req, OP_UPDATE);
-+}
-+
-+static int omap4_sham_shash_digest(struct crypto_shash *shash, u32 flags,
-+ const u8 *data, unsigned int len, u8 *out)
-+{
-+ struct {
-+ struct shash_desc shash;
-+ char ctx[crypto_shash_descsize(shash)];
-+ } desc;
-+
-+ desc.shash.tfm = shash;
-+ desc.shash.flags = flags & CRYPTO_TFM_REQ_MAY_SLEEP;
-+
-+ return crypto_shash_digest(&desc.shash, data, len, out);
-+}
-+
-+static int omap4_sham_final(struct ahash_request *req)
-+{
-+ struct omap4_sham_reqctx *ctx = ahash_request_ctx(req);
-+
-+ ctx->rflags |= BIT(FLAGS_FINUP);
-+
-+ if (ctx->rflags & BIT(FLAGS_ERROR))
-+ return 0; /* uncompleted hash is not needed */
-+
-+ return omap4_sham_enqueue(req, OP_FINAL);
-+}
-+
-+static int omap4_sham_finup(struct ahash_request *req)
-+{
-+ struct omap4_sham_reqctx *ctx = ahash_request_ctx(req);
-+ int err1, err2;
-+
-+ ctx->rflags |= BIT(FLAGS_FINUP);
-+
-+ err1 = omap4_sham_update(req);
-+ if (err1 == -EINPROGRESS || err1 == -EBUSY)
-+ return err1;
-+ /*
-+ * final() has to be always called to cleanup resources
-+ * even if update() failed, except EINPROGRESS
-+ */
-+ err2 = omap4_sham_final(req);
-+
-+ return err1 ?: err2;
-+}
-+
-+static int omap4_sham_digest(struct ahash_request *req)
-+{
-+ return omap4_sham_init(req) ?: omap4_sham_finup(req);
-+}
-+
-+static int omap4_sham_setkey(struct crypto_ahash *tfm, const u8 *key,
-+ unsigned int keylen)
-+{
-+ struct omap4_sham_ctx *tctx = crypto_ahash_ctx(tfm);
-+ struct omap4_sham_hmac_ctx *bctx = tctx->base;
-+ int bs = crypto_shash_blocksize(bctx->shash);
-+ int ds = crypto_shash_digestsize(bctx->shash);
-+ int err;
-+
-+ /* If key is longer than block size, use hash of original key */
-+ if (keylen > bs) {
-+ err = crypto_shash_setkey(tctx->fallback, key, keylen) ?:
-+ omap4_sham_shash_digest(bctx->shash,
-+ crypto_shash_get_flags(bctx->shash),
-+ key, keylen, bctx->keypad);
-+ if (err)
-+ return err;
-+ keylen = ds;
-+ } else {
-+ memcpy(bctx->keypad, key, keylen);
-+ }
-+
-+ /* zero-pad the key (or its digest) */
-+ if (keylen < bs)
-+ memset(bctx->keypad + keylen, 0, bs - keylen);
-+
-+ return 0;
-+}
-+
-+static int omap4_sham_cra_init_alg(struct crypto_tfm *tfm, const char *alg_base)
-+{
-+ struct omap4_sham_ctx *tctx = crypto_tfm_ctx(tfm);
-+ const char *alg_name = crypto_tfm_alg_name(tfm);
-+
-+ /* Allocate a fallback and abort if it failed. */
-+ tctx->fallback = crypto_alloc_shash(alg_name, 0,
-+ CRYPTO_ALG_NEED_FALLBACK);
-+ if (IS_ERR(tctx->fallback)) {
-+ pr_err("omap4-sham: fallback driver '%s' "
-+ "could not be loaded.\n", alg_name);
-+ return PTR_ERR(tctx->fallback);
-+ }
-+
-+ crypto_ahash_set_reqsize(__crypto_ahash_cast(tfm),
-+ sizeof(struct omap4_sham_reqctx) + BUFLEN);
-+
-+ if (alg_base) {
-+ struct omap4_sham_hmac_ctx *bctx = tctx->base;
-+ tctx->cflags |= BIT(FLAGS_HMAC);
-+ bctx->shash = crypto_alloc_shash(alg_base, 0,
-+ CRYPTO_ALG_NEED_FALLBACK);
-+ if (IS_ERR(bctx->shash)) {
-+ pr_err("omap4-sham: base driver '%s' "
-+ "could not be loaded.\n", alg_base);
-+ crypto_free_shash(tctx->fallback);
-+ return PTR_ERR(bctx->shash);
-+ }
-+
-+ }
-+
-+ return 0;
-+}
-+
-+static int omap4_sham_cra_init(struct crypto_tfm *tfm)
-+{
-+ return omap4_sham_cra_init_alg(tfm, NULL);
-+}
-+
-+static int omap4_sham_cra_sha1_init(struct crypto_tfm *tfm)
-+{
-+ return omap4_sham_cra_init_alg(tfm, "sha1");
-+}
-+
-+static int omap4_sham_cra_sha224_init(struct crypto_tfm *tfm)
-+{
-+ return omap4_sham_cra_init_alg(tfm, "sha224");
-+}
-+
-+static int omap4_sham_cra_sha256_init(struct crypto_tfm *tfm)
-+{
-+ return omap4_sham_cra_init_alg(tfm, "sha256");
-+}
-+
-+static int omap4_sham_cra_md5_init(struct crypto_tfm *tfm)
-+{
-+ return omap4_sham_cra_init_alg(tfm, "md5");
-+}
-+
-+static void omap4_sham_cra_exit(struct crypto_tfm *tfm)
-+{
-+ struct omap4_sham_ctx *tctx = crypto_tfm_ctx(tfm);
-+
-+ crypto_free_shash(tctx->fallback);
-+ tctx->fallback = NULL;
-+
-+ if (tctx->cflags & BIT(FLAGS_HMAC)) {
-+ struct omap4_sham_hmac_ctx *bctx = tctx->base;
-+ crypto_free_shash(bctx->shash);
-+ }
-+}
-+
-+static struct ahash_alg algs[] = {
-+{
-+ .init = omap4_sham_init,
-+ .update = omap4_sham_update,
-+ .final = omap4_sham_final,
-+ .finup = omap4_sham_finup,
-+ .digest = omap4_sham_digest,
-+ .halg.digestsize = SHA1_DIGEST_SIZE,
-+ .halg.base = {
-+ .cra_name = "sha1",
-+ .cra_driver_name = "omap4-sha1",
-+ .cra_priority = 300,
-+ .cra_flags = CRYPTO_ALG_TYPE_AHASH |
-+ CRYPTO_ALG_ASYNC |
-+ CRYPTO_ALG_NEED_FALLBACK,
-+ .cra_blocksize = SHA1_BLOCK_SIZE,
-+ .cra_ctxsize = sizeof(struct omap4_sham_ctx),
-+ .cra_alignmask = 0,
-+ .cra_module = THIS_MODULE,
-+ .cra_init = omap4_sham_cra_init,
-+ .cra_exit = omap4_sham_cra_exit,
-+ }
-+},
-+{
-+ .init = omap4_sham_init,
-+ .update = omap4_sham_update,
-+ .final = omap4_sham_final,
-+ .finup = omap4_sham_finup,
-+ .digest = omap4_sham_digest,
-+ .halg.digestsize = SHA224_DIGEST_SIZE,
-+ .halg.base = {
-+ .cra_name = "sha224",
-+ .cra_driver_name = "omap4-sha224",
-+ .cra_priority = 300,
-+ .cra_flags = CRYPTO_ALG_TYPE_AHASH |
-+ CRYPTO_ALG_ASYNC |
-+ CRYPTO_ALG_NEED_FALLBACK,
-+ .cra_blocksize = SHA224_BLOCK_SIZE,
-+ .cra_ctxsize = sizeof(struct omap4_sham_ctx),
-+ .cra_alignmask = 0,
-+ .cra_module = THIS_MODULE,
-+ .cra_init = omap4_sham_cra_init,
-+ .cra_exit = omap4_sham_cra_exit,
-+ }
-+},
-+{
-+ .init = omap4_sham_init,
-+ .update = omap4_sham_update,
-+ .final = omap4_sham_final,
-+ .finup = omap4_sham_finup,
-+ .digest = omap4_sham_digest,
-+ .halg.digestsize = SHA256_DIGEST_SIZE,
-+ .halg.base = {
-+ .cra_name = "sha256",
-+ .cra_driver_name = "omap4-sha256",
-+ .cra_priority = 300,
-+ .cra_flags = CRYPTO_ALG_TYPE_AHASH |
-+ CRYPTO_ALG_ASYNC |
-+ CRYPTO_ALG_NEED_FALLBACK,
-+ .cra_blocksize = SHA256_BLOCK_SIZE,
-+ .cra_ctxsize = sizeof(struct omap4_sham_ctx),
-+ .cra_alignmask = 0,
-+ .cra_module = THIS_MODULE,
-+ .cra_init = omap4_sham_cra_init,
-+ .cra_exit = omap4_sham_cra_exit,
-+ }
-+},
-+{
-+ .init = omap4_sham_init,
-+ .update = omap4_sham_update,
-+ .final = omap4_sham_final,
-+ .finup = omap4_sham_finup,
-+ .digest = omap4_sham_digest,
-+ .halg.digestsize = MD5_DIGEST_SIZE,
-+ .halg.base = {
-+ .cra_name = "md5",
-+ .cra_driver_name = "omap4-md5",
-+ .cra_priority = 300,
-+ .cra_flags = CRYPTO_ALG_TYPE_AHASH |
-+ CRYPTO_ALG_ASYNC |
-+ CRYPTO_ALG_NEED_FALLBACK,
-+ .cra_blocksize = SHA1_BLOCK_SIZE,
-+ .cra_ctxsize = sizeof(struct omap4_sham_ctx),
-+ .cra_alignmask = AM33X_ALIGN_MASK,
-+ .cra_module = THIS_MODULE,
-+ .cra_init = omap4_sham_cra_init,
-+ .cra_exit = omap4_sham_cra_exit,
-+ }
-+},
-+{
-+ .init = omap4_sham_init,
-+ .update = omap4_sham_update,
-+ .final = omap4_sham_final,
-+ .finup = omap4_sham_finup,
-+ .digest = omap4_sham_digest,
-+ .setkey = omap4_sham_setkey,
-+ .halg.digestsize = SHA1_DIGEST_SIZE,
-+ .halg.base = {
-+ .cra_name = "hmac(sha1)",
-+ .cra_driver_name = "omap4-hmac-sha1",
-+ .cra_priority = 300,
-+ .cra_flags = CRYPTO_ALG_TYPE_AHASH |
-+ CRYPTO_ALG_ASYNC |
-+ CRYPTO_ALG_NEED_FALLBACK,
-+ .cra_blocksize = SHA1_BLOCK_SIZE,
-+ .cra_ctxsize = sizeof(struct omap4_sham_ctx) +
-+ sizeof(struct omap4_sham_hmac_ctx),
-+ .cra_alignmask = AM33X_ALIGN_MASK,
-+ .cra_module = THIS_MODULE,
-+ .cra_init = omap4_sham_cra_sha1_init,
-+ .cra_exit = omap4_sham_cra_exit,
-+ }
-+},
-+{
-+ .init = omap4_sham_init,
-+ .update = omap4_sham_update,
-+ .final = omap4_sham_final,
-+ .finup = omap4_sham_finup,
-+ .digest = omap4_sham_digest,
-+ .setkey = omap4_sham_setkey,
-+ .halg.digestsize = SHA224_DIGEST_SIZE,
-+ .halg.base = {
-+ .cra_name = "hmac(sha224)",
-+ .cra_driver_name = "omap4-hmac-sha224",
-+ .cra_priority = 300,
-+ .cra_flags = CRYPTO_ALG_TYPE_AHASH |
-+ CRYPTO_ALG_ASYNC |
-+ CRYPTO_ALG_NEED_FALLBACK,
-+ .cra_blocksize = SHA224_BLOCK_SIZE,
-+ .cra_ctxsize = sizeof(struct omap4_sham_ctx) +
-+ sizeof(struct omap4_sham_hmac_ctx),
-+ .cra_alignmask = AM33X_ALIGN_MASK,
-+ .cra_module = THIS_MODULE,
-+ .cra_init = omap4_sham_cra_sha224_init,
-+ .cra_exit = omap4_sham_cra_exit,
-+ }
-+},
-+{
-+ .init = omap4_sham_init,
-+ .update = omap4_sham_update,
-+ .final = omap4_sham_final,
-+ .finup = omap4_sham_finup,
-+ .digest = omap4_sham_digest,
-+ .setkey = omap4_sham_setkey,
-+ .halg.digestsize = SHA256_DIGEST_SIZE,
-+ .halg.base = {
-+ .cra_name = "hmac(sha256)",
-+ .cra_driver_name = "omap4-hmac-sha256",
-+ .cra_priority = 300,
-+ .cra_flags = CRYPTO_ALG_TYPE_AHASH |
-+ CRYPTO_ALG_ASYNC |
-+ CRYPTO_ALG_NEED_FALLBACK,
-+ .cra_blocksize = SHA256_BLOCK_SIZE,
-+ .cra_ctxsize = sizeof(struct omap4_sham_ctx) +
-+ sizeof(struct omap4_sham_hmac_ctx),
-+ .cra_alignmask = AM33X_ALIGN_MASK,
-+ .cra_module = THIS_MODULE,
-+ .cra_init = omap4_sham_cra_sha256_init,
-+ .cra_exit = omap4_sham_cra_exit,
-+ }
-+},
-+{
-+ .init = omap4_sham_init,
-+ .update = omap4_sham_update,
-+ .final = omap4_sham_final,
-+ .finup = omap4_sham_finup,
-+ .digest = omap4_sham_digest,
-+ .setkey = omap4_sham_setkey,
-+ .halg.digestsize = MD5_DIGEST_SIZE,
-+ .halg.base = {
-+ .cra_name = "hmac(md5)",
-+ .cra_driver_name = "omap4-hmac-md5",
-+ .cra_priority = 300,
-+ .cra_flags = CRYPTO_ALG_TYPE_AHASH |
-+ CRYPTO_ALG_ASYNC |
-+ CRYPTO_ALG_NEED_FALLBACK,
-+ .cra_blocksize = SHA1_BLOCK_SIZE,
-+ .cra_ctxsize = sizeof(struct omap4_sham_ctx) +
-+ sizeof(struct omap4_sham_hmac_ctx),
-+ .cra_alignmask = AM33X_ALIGN_MASK,
-+ .cra_module = THIS_MODULE,
-+ .cra_init = omap4_sham_cra_md5_init,
-+ .cra_exit = omap4_sham_cra_exit,
-+ }
-+}
-+};
-+
-+static void omap4_sham_done_task(unsigned long data)
-+{
-+ struct omap4_sham_dev *dd = (struct omap4_sham_dev *)data;
-+ int err = 0;
-+
-+ if (!test_bit(FLAGS_BUSY, &dd->dflags)) {
-+ omap4_sham_handle_queue(dd, NULL);
-+ return;
-+ }
-+
-+ if (test_bit(FLAGS_CPU, &dd->dflags)) {
-+ if (test_and_clear_bit(FLAGS_OUTPUT_READY, &dd->dflags))
-+ goto finish;
-+ } else if (test_bit(FLAGS_OUTPUT_READY, &dd->dflags)) {
-+ if (test_and_clear_bit(FLAGS_DMA_ACTIVE, &dd->dflags)) {
-+ omap4_sham_update_dma_stop(dd);
-+ if (dd->err) {
-+ err = dd->err;
-+ goto finish;
-+ }
-+ }
-+ if (test_and_clear_bit(FLAGS_OUTPUT_READY, &dd->dflags)) {
-+ /* hash or semi-hash ready */
-+ clear_bit(FLAGS_DMA_READY, &dd->dflags);
-+ err = omap4_sham_update_dma_start(dd);
-+ if (err != -EINPROGRESS)
-+ goto finish;
-+ }
-+ }
-+
-+ return;
-+
-+finish:
-+ dev_dbg(dd->dev, "update done: err: %d\n", err);
-+ /* finish current request */
-+ omap4_sham_finish_req(dd->req, err);
-+}
-+
-+static irqreturn_t omap4_sham_irq(int irq, void *dev_id)
-+{
-+ struct omap4_sham_dev *dd = dev_id;
-+
-+#if 0
-+ if (unlikely(test_bit(FLAGS_FINAL, &dd->flags)))
-+ /* final -> allow device to go to power-saving mode */
-+ omap4_sham_write_mask(dd, SHA_REG_CTRL, 0, SHA_REG_CTRL_LENGTH);
-+#endif
-+
-+ /* TODO check whether the result needs to be read out here,
-+ or if we just disable the interrupt */
-+ omap4_sham_write_mask(dd, SHA_REG_SYSCFG, 0, SHA_REG_SYSCFG_SIT_EN);
-+
-+ if (!test_bit(FLAGS_BUSY, &dd->dflags)) {
-+ dev_warn(dd->dev, "Interrupt when no active requests.\n");
-+ } else {
-+ set_bit(FLAGS_OUTPUT_READY, &dd->dflags);
-+ tasklet_schedule(&dd->done_task);
-+ }
-+
-+ return IRQ_HANDLED;
-+}
-+
-+static void omap4_sham_dma_callback(unsigned int lch, u16 ch_status, void *data)
-+{
-+ struct omap4_sham_dev *dd = data;
-+
-+ edma_stop(lch);
-+
-+ if (ch_status != DMA_COMPLETE) {
-+ pr_err("omap4-sham DMA error status: 0x%hx\n", ch_status);
-+ dd->err = -EIO;
-+ clear_bit(FLAGS_INIT, &dd->dflags); /* request to re-initialize */
-+ }
-+
-+ set_bit(FLAGS_DMA_READY, &dd->dflags);
-+ tasklet_schedule(&dd->done_task);
-+}
-+
-+static int omap4_sham_dma_init(struct omap4_sham_dev *dd)
-+{
-+ int err;
-+
-+ dd->dma_lch = -1;
-+
-+ dd->dma_lch = edma_alloc_channel(dd->dma, omap4_sham_dma_callback, dd, EVENTQ_2);
-+ if (dd->dma_lch < 0) {
-+ dev_err(dd->dev, "Unable to request EDMA channel\n");
-+ return -1;
-+ }
-+
-+ return 0;
-+}
-+
-+static void omap4_sham_dma_cleanup(struct omap4_sham_dev *dd)
-+{
-+ if (dd->dma_lch >= 0) {
-+ edma_free_channel(dd->dma_lch);
-+ dd->dma_lch = -1;
-+ }
-+}
-+
-+static int __devinit omap4_sham_probe(struct platform_device *pdev)
-+{
-+ struct omap4_sham_dev *dd;
-+ struct device *dev = &pdev->dev;
-+ struct resource *res;
-+ int err, i, j;
-+ u32 reg;
-+
-+ dd = kzalloc(sizeof(struct omap4_sham_dev), GFP_KERNEL);
-+ if (dd == NULL) {
-+ dev_err(dev, "unable to alloc data struct.\n");
-+ err = -ENOMEM;
-+ goto data_err;
-+ }
-+ dd->dev = dev;
-+ platform_set_drvdata(pdev, dd);
-+
-+ INIT_LIST_HEAD(&dd->list);
-+ spin_lock_init(&dd->lock);
-+ tasklet_init(&dd->done_task, omap4_sham_done_task, (unsigned long)dd);
-+ crypto_init_queue(&dd->queue, AM33X_SHAM_QUEUE_LENGTH);
-+
-+ dd->irq = -1;
-+
-+ /* Get the base address */
-+ res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-+ if (!res) {
-+ dev_err(dev, "no MEM resource info\n");
-+ err = -ENODEV;
-+ goto res_err;
-+ }
-+ dd->phys_base = res->start;
-+
-+ /* Get the DMA */
-+ res = platform_get_resource(pdev, IORESOURCE_DMA, 0);
-+ if (!res) {
-+ dev_err(dev, "no DMA resource info\n");
-+ err = -ENODEV;
-+ goto res_err;
-+ }
-+ dd->dma = res->start;
-+
-+ /* Get the IRQ */
-+ dd->irq = platform_get_irq(pdev, 0);
-+ if (dd->irq < 0) {
-+ dev_err(dev, "no IRQ resource info\n");
-+ err = dd->irq;
-+ goto res_err;
-+ }
-+
-+ err = request_irq(dd->irq, omap4_sham_irq,
-+ IRQF_TRIGGER_LOW, dev_name(dev), dd);
-+ if (err) {
-+ dev_err(dev, "unable to request irq.\n");
-+ goto res_err;
-+ }
-+
-+ err = omap4_sham_dma_init(dd);
-+ if (err)
-+ goto dma_err;
-+
-+ /* Initializing the clock */
-+ dd->iclk = clk_get(dev, "sha0_fck");
-+ if (IS_ERR(dd->iclk)) {
-+ dev_err(dev, "clock initialization failed.\n");
-+ err = PTR_ERR(dd->iclk);
-+ goto clk_err;
-+ }
-+
-+ dd->io_base = ioremap(dd->phys_base, SZ_4K);
-+ if (!dd->io_base) {
-+ dev_err(dev, "can't ioremap\n");
-+ err = -ENOMEM;
-+ goto io_err;
-+ }
-+
-+ clk_enable(dd->iclk);
-+ reg = omap4_sham_read(dd, SHA_REG_REV);
-+ clk_disable(dd->iclk);
-+
-+ dev_info(dev, "AM33X SHA/MD5 hw accel rev: %u.%02u\n",
-+ (reg & SHA_REG_REV_X_MAJOR_MASK) >> 8, reg & SHA_REG_REV_Y_MINOR_MASK);
-+
-+ spin_lock(&sham.lock);
-+ list_add_tail(&dd->list, &sham.dev_list);
-+ spin_unlock(&sham.lock);
-+
-+ for (i = 0; i < ARRAY_SIZE(algs); i++) {
-+ err = crypto_register_ahash(&algs[i]);
-+ if (err)
-+ goto err_algs;
-+ }
-+
-+ pr_info("probe() done\n");
-+
-+ return 0;
-+
-+err_algs:
-+ for (j = 0; j < i; j++)
-+ crypto_unregister_ahash(&algs[j]);
-+ iounmap(dd->io_base);
-+io_err:
-+ clk_put(dd->iclk);
-+clk_err:
-+ omap4_sham_dma_cleanup(dd);
-+dma_err:
-+ if (dd->irq >= 0)
-+ free_irq(dd->irq, dd);
-+res_err:
-+ kfree(dd);
-+ dd = NULL;
-+data_err:
-+ dev_err(dev, "initialization failed.\n");
-+
-+ return err;
-+}
-+
-+static int __devexit omap4_sham_remove(struct platform_device *pdev)
-+{
-+ static struct omap4_sham_dev *dd;
-+ int i;
-+
-+ dd = platform_get_drvdata(pdev);
-+ if (!dd)
-+ return -ENODEV;
-+ spin_lock(&sham.lock);
-+ list_del(&dd->list);
-+ spin_unlock(&sham.lock);
-+ for (i = 0; i < ARRAY_SIZE(algs); i++)
-+ crypto_unregister_ahash(&algs[i]);
-+ tasklet_kill(&dd->done_task);
-+ iounmap(dd->io_base);
-+ clk_put(dd->iclk);
-+ omap4_sham_dma_cleanup(dd);
-+ if (dd->irq >= 0)
-+ free_irq(dd->irq, dd);
-+ kfree(dd);
-+ dd = NULL;
-+
-+ return 0;
-+}
-+
-+static struct platform_driver omap4_sham_driver = {
-+ .probe = omap4_sham_probe,
-+ .remove = omap4_sham_remove,
-+ .driver = {
-+ .name = "omap4-sham",
-+ .owner = THIS_MODULE,
-+ },
-+};
-+
-+static int __init omap4_sham_mod_init(void)
-+{
-+ pr_info("loading AM33X SHA/MD5 driver\n");
-+
-+ if (!cpu_is_am33xx() || omap_type() != OMAP2_DEVICE_TYPE_GP) {
-+ pr_err("Unsupported cpu\n");
-+ return -ENODEV;
-+ }
-+
-+ return platform_driver_register(&omap4_sham_driver);
-+}
-+
-+static void __exit omap4_sham_mod_exit(void)
-+{
-+ platform_driver_unregister(&omap4_sham_driver);
-+}
-+
-+module_init(omap4_sham_mod_init);
-+module_exit(omap4_sham_mod_exit);
-+
-+MODULE_DESCRIPTION("AM33x SHA/MD5 hw acceleration support.");
-+MODULE_LICENSE("GPL v2");
-+MODULE_AUTHOR("Herman Schuurman");
---
-1.7.0.4
diff --git a/recipes-kernel/linux/linux-am335x-psp-3.2/0008-crypto-omap4-aes-Don-t-use-hardcoded-base-address.patch b/recipes-kernel/linux/linux-am335x-psp-3.2/0008-crypto-omap4-aes-Don-t-use-hardcoded-base-address.patch
deleted file mode 100644
index 348ac52..0000000
--- a/recipes-kernel/linux/linux-am335x-psp-3.2/0008-crypto-omap4-aes-Don-t-use-hardcoded-base-address.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From 8084600ca78354fad147593256b9e32ef5d15148 Mon Sep 17 00:00:00 2001
-From: "Mark A. Greer" <mgreer at animalcreek.com>
-Date: Tue, 11 Dec 2012 21:09:58 -0700
-Subject: [PATCH 08/10] crypto: omap4-aes: Don't use hardcoded base address
-
-The omap4-aes driver currently uses a hardcoded base
-address for its register set instead of the address
-passed in by the system. Instead, use the address
-passed in by the system.
-
-Signed-off-by: Mark A. Greer <mgreer at animalcreek.com>
----
- drivers/crypto/omap4-aes.c | 16 +++++++---------
- 1 file changed, 7 insertions(+), 9 deletions(-)
-
-diff --git a/drivers/crypto/omap4-aes.c b/drivers/crypto/omap4-aes.c
-index 941b8a1..984a15e 100644
---- a/drivers/crypto/omap4-aes.c
-+++ b/drivers/crypto/omap4-aes.c
-@@ -800,15 +800,13 @@ static int omap4_aes_probe(struct platform_device *pdev)
- crypto_init_queue(&dd->queue, AM33X_AES_QUEUE_LENGTH);
-
- /* Get the base address */
-- //res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-- //if (!res) {
-- // dev_err(dev, "invalid resource type\n");
-- // err = -ENODEV;
-- // goto err_res;
-- //}
--
-- //dd->phys_base = res->start;
-- dd->phys_base = AM33XX_AES0_P_BASE;
-+ res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-+ if (!res) {
-+ dev_err(dev, "invalid resource type\n");
-+ err = -ENODEV;
-+ goto err_data;
-+ }
-+ dd->phys_base = res->start;
-
- /* Get the DMA */
- res = platform_get_resource(pdev, IORESOURCE_DMA, 0);
---
-1.7.12
-
diff --git a/recipes-kernel/linux/linux-am335x-psp-3.2/0009-ARM-AM33xx-hwmod-Convert-RNG-device-data-to-hwmod.patch b/recipes-kernel/linux/linux-am335x-psp-3.2/0009-ARM-AM33xx-hwmod-Convert-RNG-device-data-to-hwmod.patch
deleted file mode 100644
index 31094b0..0000000
--- a/recipes-kernel/linux/linux-am335x-psp-3.2/0009-ARM-AM33xx-hwmod-Convert-RNG-device-data-to-hwmod.patch
+++ /dev/null
@@ -1,176 +0,0 @@
-From 45cc04d9de2820cba138d5782e7c568edf0078a0 Mon Sep 17 00:00:00 2001
-From: "Mark A. Greer" <mgreer at animalcreek.com>
-Date: Wed, 12 Dec 2012 16:17:12 -0700
-Subject: [PATCH 09/10] ARM: AM33xx: hwmod: Convert RNG device data to hwmod
-
-Convert the device data for the AM33xx RNG module
-from explicit platform_data to hwmod.
-
-Signed-off-by: Mark A. Greer <mgreer at animalcreek.com>
----
- arch/arm/mach-omap2/devices.c | 18 +++++++++
- arch/arm/mach-omap2/omap_hwmod_33xx_data.c | 64 ++++++++++++++++++++++++++++++
- arch/arm/plat-omap/devices.c | 22 ----------
- 3 files changed, 82 insertions(+), 22 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c
-index e4caa06..8e2f4a0 100644
---- a/arch/arm/mach-omap2/devices.c
-+++ b/arch/arm/mach-omap2/devices.c
-@@ -825,6 +825,23 @@ static void __init omap_init_aes(void)
- static inline void omap_init_aes(void) { }
- #endif
-
-+#if IS_ENABLED(CONFIG_HW_RANDOM_OMAP4)
-+static void __init omap_init_rng(void)
-+{
-+ struct omap_hwmod *oh;
-+ struct platform_device *pdev;
-+
-+ oh = omap_hwmod_lookup("rng");
-+ if (!oh)
-+ return;
-+
-+ pdev = omap_device_build("omap4_rng", -1, oh, NULL, 0, NULL, 0, 0);
-+ WARN(IS_ERR(pdev), "Can't build omap_device for omap-rng\n");
-+}
-+#else
-+static inline void omap_init_rng(void) {}
-+#endif
-+
- /*-------------------------------------------------------------------------*/
-
- #if defined(CONFIG_MMC_OMAP) || defined(CONFIG_MMC_OMAP_MODULE)
-@@ -1475,6 +1492,7 @@ static int __init omap2_init_devices(void)
- omap_init_sti();
- omap_init_sham();
- omap_init_aes();
-+ omap_init_rng();
- omap_init_vout();
- am33xx_register_edma();
- am33xx_init_pcm();
-diff --git a/arch/arm/mach-omap2/omap_hwmod_33xx_data.c b/arch/arm/mach-omap2/omap_hwmod_33xx_data.c
-index 90e25d7..6c5ebc7 100644
---- a/arch/arm/mach-omap2/omap_hwmod_33xx_data.c
-+++ b/arch/arm/mach-omap2/omap_hwmod_33xx_data.c
-@@ -94,6 +94,7 @@ static struct omap_hwmod am33xx_lcdc_hwmod;
- static struct omap_hwmod am33xx_mailbox_hwmod;
- static struct omap_hwmod am33xx_cpgmac0_hwmod;
- static struct omap_hwmod am33xx_mdio_hwmod;
-+static struct omap_hwmod am33xx_rng_hwmod;
-
- /*
- * ERRATA: (Yet to conform from IP team)
-@@ -3541,6 +3542,67 @@ static struct omap_hwmod am33xx_pruss_hwmod = {
- .rst_lines_cnt = ARRAY_SIZE(am33xx_pruss_resets),
- };
-
-+/* rng */
-+static struct omap_hwmod_sysc_fields omap3_rng_sysc_fields = {
-+ .sidle_shift = 3,
-+ .autoidle_shift = 0,
-+};
-+
-+static struct omap_hwmod_class_sysconfig am33xx_rng_sysc = {
-+ .rev_offs = 0x1fe0,
-+ .sysc_offs = 0x1fe4,
-+ .rst_offs = 0x1ff0,
-+ .sysc_flags = SYSC_HAS_AUTOIDLE,
-+ .sysc_fields = &omap3_rng_sysc_fields,
-+};
-+
-+static struct omap_hwmod_class am33xx_rng_hwmod_class = {
-+ .name = "rng",
-+ .sysc = &am33xx_rng_sysc,
-+};
-+
-+static struct omap_hwmod_irq_info am33xx_rng_irqs[] = {
-+ { .irq = 111 },
-+ { .irq = -1 }
-+};
-+
-+struct omap_hwmod_addr_space am33xx_rng_addr_space[] = {
-+ {
-+ .pa_start = 0x48310000,
-+ .pa_end = 0x48310000 + SZ_8K - 1,
-+ .flags = ADDR_TYPE_RT,
-+ },
-+ { }
-+};
-+
-+struct omap_hwmod_ocp_if am33xx_l4per__rng = {
-+ .master = &am33xx_l4per_hwmod,
-+ .slave = &am33xx_rng_hwmod,
-+ .clk = "rng_fck",
-+ .addr = am33xx_rng_addr_space,
-+ .user = OCP_USER_MPU,
-+};
-+
-+static struct omap_hwmod_ocp_if *am33xx_rng_slaves[] = {
-+ &am33xx_l4per__rng,
-+};
-+
-+static struct omap_hwmod am33xx_rng_hwmod = {
-+ .name = "rng",
-+ .class = &am33xx_rng_hwmod_class,
-+ .clkdm_name = "l4ls_clkdm",
-+ .mpu_irqs = am33xx_rng_irqs,
-+ .main_clk = "rng_fck",
-+ .prcm = {
-+ .omap4 = {
-+ .clkctrl_offs = AM33XX_CM_PER_RNG_CLKCTRL_OFFSET,
-+ .modulemode = MODULEMODE_SWCTRL,
-+ },
-+ },
-+ .slaves = am33xx_rng_slaves,
-+ .slaves_cnt = ARRAY_SIZE(am33xx_rng_slaves),
-+};
-+
- static __initdata struct omap_hwmod *am33xx_hwmods[] = {
- /* l3 class */
- &am33xx_l3_instr_hwmod,
-@@ -3661,6 +3723,8 @@ static __initdata struct omap_hwmod *am33xx_hwmods[] = {
- &am33xx_gfx_hwmod,
- /* pruss */
- &am33xx_pruss_hwmod,
-+ /* rng */
-+ &am33xx_rng_hwmod,
- NULL,
- };
-
-diff --git a/arch/arm/plat-omap/devices.c b/arch/arm/plat-omap/devices.c
-index 52720b4..52d7ad4 100644
---- a/arch/arm/plat-omap/devices.c
-+++ b/arch/arm/plat-omap/devices.c
-@@ -105,28 +105,6 @@ static void omap_init_rng(void)
- {
- (void) platform_device_register(&omap_rng_device);
- }
--#elif defined(CONFIG_HW_RANDOM_OMAP4) || defined(CONFIG_HW_RANDOM_OMAP4_MODULE)
--
--static struct resource rng_resources[] = {
-- {
-- .start = AM33XX_RNG_BASE,
-- .end = AM33XX_RNG_BASE + 0x1FFC,
-- .flags = IORESOURCE_MEM,
-- },
--};
--
--static struct platform_device omap4_rng_device = {
-- .name = "omap4_rng",
-- .id = -1,
-- .num_resources = ARRAY_SIZE(rng_resources),
-- .resource = rng_resources,
--};
--
--static void omap_init_rng(void)
--{
-- (void) platform_device_register(&omap4_rng_device);
--}
--
- #else
- static inline void omap_init_rng(void) {}
- #endif
---
-1.7.12
-
diff --git a/recipes-kernel/linux/linux-am335x-psp-3.2/0010-hwrng-omap4-rng-Convert-to-use-pm_runtime-API.patch b/recipes-kernel/linux/linux-am335x-psp-3.2/0010-hwrng-omap4-rng-Convert-to-use-pm_runtime-API.patch
deleted file mode 100644
index 28bc326..0000000
--- a/recipes-kernel/linux/linux-am335x-psp-3.2/0010-hwrng-omap4-rng-Convert-to-use-pm_runtime-API.patch
+++ /dev/null
@@ -1,91 +0,0 @@
-From 1b4d57c404a14b263b39e251e0bc5dc76fc95932 Mon Sep 17 00:00:00 2001
-From: "Mark A. Greer" <mgreer at animalcreek.com>
-Date: Wed, 12 Dec 2012 20:13:49 -0700
-Subject: [PATCH 10/10] hwrng: omap4-rng: Convert to use pm_runtime API
-
-Convert the omap4-rng driver to use the pm_runtime
-API instead of the clk API.
-
-Signed-off-by: Mark A. Greer <mgreer at animalcreek.com>
----
- drivers/char/hw_random/omap4-rng.c | 24 +++++++++++-------------
- 1 file changed, 11 insertions(+), 13 deletions(-)
-
-diff --git a/drivers/char/hw_random/omap4-rng.c b/drivers/char/hw_random/omap4-rng.c
-index 523ec63..98c96c1 100644
---- a/drivers/char/hw_random/omap4-rng.c
-+++ b/drivers/char/hw_random/omap4-rng.c
-@@ -23,7 +23,7 @@
- #include <linux/module.h>
- #include <linux/init.h>
- #include <linux/random.h>
--#include <linux/clk.h>
-+#include <linux/pm_runtime.h>
- #include <linux/err.h>
- #include <linux/platform_device.h>
- #include <linux/hw_random.h>
-@@ -111,7 +111,6 @@
-
-
- static void __iomem *rng_base;
--static struct clk *rng_fck;
- static struct platform_device *rng_dev;
-
- #define trng_read(reg) \
-@@ -172,13 +171,8 @@ static int __devinit omap4_rng_probe(struct platform_device *pdev)
- if (rng_dev)
- return -EBUSY;
-
-- rng_fck = clk_get(&pdev->dev, "rng_fck");
-- if (IS_ERR(rng_fck)) {
-- dev_err(&pdev->dev, "Could not get rng_fck\n");
-- ret = PTR_ERR(rng_fck);
-- return ret;
-- } else
-- clk_enable(rng_fck);
-+ pm_runtime_enable(&pdev->dev);
-+ pm_runtime_get_sync(&pdev->dev);
-
- res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
- if (!res) {
-@@ -223,8 +217,8 @@ err_register:
- err_ioremap:
- release_mem_region(res->start, resource_size(res));
- err_region:
-- clk_disable(rng_fck);
-- clk_put(rng_fck);
-+ pm_runtime_put_sync(&pdev->dev);
-+ pm_runtime_disable(&pdev->dev);
- return ret;
- }
-
-@@ -238,8 +232,8 @@ static int __exit omap4_rng_remove(struct platform_device *pdev)
-
- iounmap(rng_base);
-
-- clk_disable(rng_fck);
-- clk_put(rng_fck);
-+ pm_runtime_put_sync(&pdev->dev);
-+ pm_runtime_disable(&pdev->dev);
- release_mem_region(res->start, resource_size(res));
- rng_base = NULL;
-
-@@ -252,11 +246,15 @@ static int omap4_rng_suspend(struct platform_device *pdev, pm_message_t message)
- {
- trng_write(trng_read(CONTROL) & ~RNG_REG_CONTROL_ENABLE_TRNG, CONTROL);
-
-+ pm_runtime_put_sync(&pdev->dev);
-+
- return 0;
- }
-
- static int omap4_rng_resume(struct platform_device *pdev)
- {
-+ pm_runtime_get_sync(&pdev->dev);
-+
- trng_write(trng_read(CONTROL) | RNG_REG_CONTROL_ENABLE_TRNG, CONTROL);
-
- return 0;
---
-1.7.12
-
diff --git a/recipes-kernel/linux/linux-am335x-psp-3.2/defconfig b/recipes-kernel/linux/linux-am335x-psp-3.2/defconfig
deleted file mode 100644
index f8cbc03..0000000
--- a/recipes-kernel/linux/linux-am335x-psp-3.2/defconfig
+++ /dev/null
@@ -1 +0,0 @@
-use-kernel-config=am335x_evm_defconfig
diff --git a/recipes-kernel/linux/linux-am335x-psp_3.2.bb b/recipes-kernel/linux/linux-am335x-psp_3.2.bb
deleted file mode 100644
index 9d08a86..0000000
--- a/recipes-kernel/linux/linux-am335x-psp_3.2.bb
+++ /dev/null
@@ -1,102 +0,0 @@
-SECTION = "kernel"
-DESCRIPTION = "Linux kernel for TI33x devices from PSP"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7"
-COMPATIBLE_MACHINE = "ti33x"
-
-DEFAULT_PREFERENCE = "-1"
-
-inherit kernel
-require setup-defconfig.inc
-
-# Stage the power management firmware before building the kernel
-DEPENDS += "am33x-cm3"
-
-KERNEL_IMAGETYPE = "uImage"
-
-# The main PR is now using MACHINE_KERNEL_PR, for ti33x see conf/machine/include/ti33x.inc
-MACHINE_KERNEL_PR_append = "h+gitr${SRCPV}"
-PR = "${MACHINE_KERNEL_PR}"
-
-BRANCH = "v3.2-staging"
-
-SRCREV = "d5720d33bc7c434f9a023dbb62c795538f976b7a"
-
-SRC_URI = "git://arago-project.org/git/projects/linux-am33x.git;protocol=git;branch=${BRANCH} \
- file://defconfig \
- ${KERNEL_PATCHES} \
-"
-
-S = "${WORKDIR}/git"
-
-# Allow a layer to easily add to the list of patches or completely override them
-KERNEL_PATCHES = "${PATCHES}"
-
-# Add a set of patches that enabled features, fixed bugs or disabled buggy features
-# that weren't part of the official PSP release
-PATCHES = "file://0001-musb-update-PIO-mode-help-information-in-Kconfig.patch \
- file://0001-mach-omap2-pm33xx-Disable-VT-switch.patch"
-
-# Add Cryptography support early driver patches while working to get the driver
-# upstream.
-PATCHES += "file://0001-am33x-Add-memory-addresses-for-crypto-modules.patch \
- file://0002-am33x-Add-crypto-device-and-resource-structures.patch \
- file://0003-am33x-Add-crypto-device-and-resource-structure-for-T.patch \
- file://0004-am33x-Add-crypto-drivers-to-Kconfig-and-Makefiles.patch \
- file://0005-am33x-Create-header-file-for-OMAP4-crypto-modules.patch \
- file://0006-am33x-Create-driver-for-TRNG-crypto-module.patch \
- file://0007-am33x-Create-driver-for-AES-crypto-module.patch \
- file://0008-am33x-Create-driver-for-SHA-MD5-crypto-module.patch \
- file://0002-AM335x-OCF-Driver-for-Linux-3.patch \
- file://0001-am335x-Add-crypto-driver-settings-to-defconfig.patch \
- file://0001-am335x-Add-pm_runtime-API-to-crypto-driver.patch \
- file://0002-am335x-Add-suspend-resume-routines-to-crypto-driver.patch \
- file://0001-ARM-AM33xx-hwmod-Convert-SHA0-crypto-device-data-to-.patch \
- file://0002-crypto-omap4-sham-Use-finer-grained-PM-management.patch \
- file://0003-crypto-omap4-sham-Add-suspend-resume-PM-support.patch \
- file://0004-crypto-omap4-sham-Don-t-use-hardcoded-base-address.patch \
- file://0005-ARM-AM33xx-hwmod-Convert-AES0-crypto-device-data-to-.patch \
- file://0006-crypto-omap4-aes-User-finer-grained-PM-management.patch \
- file://0007-crypto-omap4-aes-Add-suspend-resume-PM-support.patch \
- file://0008-crypto-omap4-aes-Don-t-use-hardcoded-base-address.patch \
- file://0009-ARM-AM33xx-hwmod-Convert-RNG-device-data-to-hwmod.patch \
- file://0010-hwrng-omap4-rng-Convert-to-use-pm_runtime-API.patch \
- file://0001-omap4-rng-Remove-check-for-GP-only-device-type-in-RN.patch \
- "
-
-# Add SmartReflex support early driver patches while working to get the driver
-# upstream.
-PATCHES += "file://0001-am33xx-Add-SmartReflex-support.patch \
- file://0002-am33xx-Enable-CONFIG_AM33XX_SMARTREFLEX.patch \
- file://0002-Smartreflex-limited-to-ES-1.0.patch \
- file://0001-Smartreflex-support-for-ES-2.x-and-suspend-resume.patch \
- "
-
-# Add a patch to the omap-serial driver to allow suspend/resume during
-# Bluetooth traffic
-PATCHES += "file://0001-omap-serial-add-delay-before-suspending.patch"
-
-# Add patch to allow wireless to work properly on EVM-SK 1.2.
-PATCHES += "file://0001-am3358-sk-modified-WLAN-enable-and-irq-to-match-boar.patch"
-
-# Add CPU utilization patch for WLAN
-PATCHES += "file://0001-am335xevm-using-edge-triggered-interrupts-for-WLAN.patch"
-
-# Add patch to enable pullup on WLAN enable
-PATCHES += "file://0001-am335x-enable-pullup-on-the-WLAN-enable-pin-fo.patch"
-
-# Update SPI flash layout. Increase space allocated for u-boot
-PATCHES += "file://0001-ARM-OMAP2-AM335x-Update-SPI-flash-layout.patch"
-
-# Add support for Beaglebone Black
-PATCHES += "file://0001-am335x-Add-minimal-support-for-Beaglebone-Black.patch \
- file://0001-am335x-Re-enable-Turbo-and-Nitro-modes-for-Beaglebon.patch \
-"
-
-# Copy the am33x-cm3 firmware if it is available
-do_configure_append() {
- if [ -e "${STAGING_DIR_HOST}/${base_libdir}/firmware/am335x-pm-firmware.bin" ]
- then
- cp "${STAGING_DIR_HOST}/${base_libdir}/firmware/am335x-pm-firmware.bin" "${S}/firmware"
- fi
-}
diff --git a/recipes-kernel/linux/linux-mainline-3.2/beagle/0001-expansion-add-buddy-param-for-expansionboard-names.patch b/recipes-kernel/linux/linux-mainline-3.2/beagle/0001-expansion-add-buddy-param-for-expansionboard-names.patch
deleted file mode 100644
index 31f079b..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/beagle/0001-expansion-add-buddy-param-for-expansionboard-names.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-From 0e4ed624d99a4bcc57d6243867a00472b141b3f8 Mon Sep 17 00:00:00 2001
-From: Robert Nelson <robertcnelson at gmail.com>
-Date: Mon, 10 Oct 2011 11:12:40 -0500
-Subject: [PATCH 01/13] expansion: add buddy param for expansionboard names
-
-Signed-off-by: Robert Nelson <robertcnelson at gmail.com>
----
- arch/arm/mach-omap2/board-omap3beagle.c | 14 ++++++++++++++
- 1 files changed, 14 insertions(+), 0 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
-index 4a71cb7..6f8cf47 100644
---- a/arch/arm/mach-omap2/board-omap3beagle.c
-+++ b/arch/arm/mach-omap2/board-omap3beagle.c
-@@ -21,6 +21,7 @@
- #include <linux/io.h>
- #include <linux/leds.h>
- #include <linux/gpio.h>
-+#include <linux/irq.h>
- #include <linux/input.h>
- #include <linux/gpio_keys.h>
- #include <linux/opp.h>
-@@ -156,6 +157,8 @@ static void __init omap3_beagle_init_rev(void)
- }
- }
-
-+char expansionboard_name[16];
-+
- static struct mtd_partition omap3beagle_nand_partitions[] = {
- /* All the partition sizes are listed in terms of NAND block size */
- {
-@@ -474,6 +477,15 @@ static struct omap_board_mux board_mux[] __initdata = {
- };
- #endif
-
-+static int __init expansionboard_setup(char *str)
-+{
-+ if (!str)
-+ return -EINVAL;
-+ strncpy(expansionboard_name, str, 16);
-+ printk(KERN_INFO "Beagle expansionboard: %s\n", expansionboard_name);
-+ return 0;
-+}
-+
- static void __init beagle_opp_init(void)
- {
- int r = 0;
-@@ -552,6 +564,8 @@ static void __init omap3_beagle_init(void)
- beagle_opp_init();
- }
-
-+early_param("buddy", expansionboard_setup);
-+
- MACHINE_START(OMAP3_BEAGLE, "OMAP3 Beagle Board")
- /* Maintainer: Syed Mohammed Khasim - http://beagleboard.org */
- .atag_offset = 0x100,
---
-1.7.7.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/beagle/0002-expansion-add-mmc-regulator-and-ds1307-rtc.patch b/recipes-kernel/linux/linux-mainline-3.2/beagle/0002-expansion-add-mmc-regulator-and-ds1307-rtc.patch
deleted file mode 100644
index 27cc46c..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/beagle/0002-expansion-add-mmc-regulator-and-ds1307-rtc.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From 97ce508ccf66c32b24087f8e0243222b51bc0c09 Mon Sep 17 00:00:00 2001
-From: Robert Nelson <robertcnelson at gmail.com>
-Date: Mon, 10 Oct 2011 11:13:49 -0500
-Subject: [PATCH 02/13] expansion: add mmc regulator and ds1307 rtc
-
-Signed-off-by: Robert Nelson <robertcnelson at gmail.com>
----
- arch/arm/mach-omap2/board-omap3beagle.c | 19 +++++++++++++++++++
- 1 files changed, 19 insertions(+), 0 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
-index 6f8cf47..9f5706b 100644
---- a/arch/arm/mach-omap2/board-omap3beagle.c
-+++ b/arch/arm/mach-omap2/board-omap3beagle.c
-@@ -257,6 +257,12 @@ static struct omap2_hsmmc_info mmc[] = {
- .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA,
- .gpio_wp = -EINVAL,
- },
-+ {
-+ .mmc = 2,
-+ .caps = MMC_CAP_4_BIT_DATA,
-+ .transceiver = true,
-+ .ocr_mask = 0x00100000, /* 3.3V */
-+ },
- {} /* Terminator */
- };
-
-@@ -378,6 +384,18 @@ static struct i2c_board_info __initdata beagle_i2c_eeprom[] = {
- },
- };
-
-+#if defined(CONFIG_RTC_DRV_DS1307) || \
-+ defined(CONFIG_RTC_DRV_DS1307_MODULE)
-+
-+static struct i2c_board_info __initdata beagle_i2c2_boardinfo[] = {
-+ {
-+ I2C_BOARD_INFO("ds1307", 0x68),
-+ },
-+};
-+#else
-+static struct i2c_board_info __initdata beagle_i2c2_boardinfo[] = {};
-+#endif
-+
- static int __init omap3_beagle_i2c_init(void)
- {
- omap3_pmic_get_config(&beagle_twldata,
-@@ -388,6 +406,7 @@ static int __init omap3_beagle_i2c_init(void)
- beagle_twldata.vpll2->constraints.name = "VDVI";
-
- omap3_pmic_init("twl4030", &beagle_twldata);
-+ omap_register_i2c_bus(2, 400, beagle_i2c2_boardinfo, ARRAY_SIZE(beagle_i2c2_boardinfo));
- /* Bus 3 is attached to the DVI port where devices like the pico DLP
- * projector don't work reliably with 400kHz */
- omap_register_i2c_bus(3, 100, beagle_i2c_eeprom, ARRAY_SIZE(beagle_i2c_eeprom));
---
-1.7.7.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/beagle/0003-expansion-add-zippy.patch b/recipes-kernel/linux/linux-mainline-3.2/beagle/0003-expansion-add-zippy.patch
deleted file mode 100644
index 8da7c55..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/beagle/0003-expansion-add-zippy.patch
+++ /dev/null
@@ -1,82 +0,0 @@
-From 7548790462d7cea9d92688b488026569187b1044 Mon Sep 17 00:00:00 2001
-From: Robert Nelson <robertcnelson at gmail.com>
-Date: Mon, 10 Oct 2011 11:16:12 -0500
-Subject: [PATCH 03/13] expansion: add zippy
-
-Signed-off-by: Robert Nelson <robertcnelson at gmail.com>
----
- arch/arm/mach-omap2/board-omap3beagle.c | 51 +++++++++++++++++++++++++++++++
- 1 files changed, 51 insertions(+), 0 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
-index 9f5706b..6ffafd6 100644
---- a/arch/arm/mach-omap2/board-omap3beagle.c
-+++ b/arch/arm/mach-omap2/board-omap3beagle.c
-@@ -159,6 +159,48 @@ static void __init omap3_beagle_init_rev(void)
-
- char expansionboard_name[16];
-
-+#if defined(CONFIG_ENC28J60) || defined(CONFIG_ENC28J60_MODULE)
-+
-+#include <plat/mcspi.h>
-+#include <linux/spi/spi.h>
-+
-+#define OMAP3BEAGLE_GPIO_ENC28J60_IRQ 157
-+
-+static struct omap2_mcspi_device_config enc28j60_spi_chip_info = {
-+ .turbo_mode = 0,
-+ .single_channel = 1, /* 0: slave, 1: master */
-+};
-+
-+static struct spi_board_info omap3beagle_zippy_spi_board_info[] __initdata = {
-+ {
-+ .modalias = "enc28j60",
-+ .bus_num = 4,
-+ .chip_select = 0,
-+ .max_speed_hz = 20000000,
-+ .controller_data = &enc28j60_spi_chip_info,
-+ },
-+};
-+
-+static void __init omap3beagle_enc28j60_init(void)
-+{
-+ if ((gpio_request(OMAP3BEAGLE_GPIO_ENC28J60_IRQ, "ENC28J60_IRQ") == 0) &&
-+ (gpio_direction_input(OMAP3BEAGLE_GPIO_ENC28J60_IRQ) == 0)) {
-+ gpio_export(OMAP3BEAGLE_GPIO_ENC28J60_IRQ, 0);
-+ omap3beagle_zippy_spi_board_info[0].irq = OMAP_GPIO_IRQ(OMAP3BEAGLE_GPIO_ENC28J60_IRQ);
-+ irq_set_irq_type(omap3beagle_zippy_spi_board_info[0].irq, IRQ_TYPE_EDGE_FALLING);
-+ } else {
-+ printk(KERN_ERR "could not obtain gpio for ENC28J60_IRQ\n");
-+ return;
-+ }
-+
-+ spi_register_board_info(omap3beagle_zippy_spi_board_info,
-+ ARRAY_SIZE(omap3beagle_zippy_spi_board_info));
-+}
-+
-+#else
-+static inline void __init omap3beagle_enc28j60_init(void) { return; }
-+#endif
-+
- static struct mtd_partition omap3beagle_nand_partitions[] = {
- /* All the partition sizes are listed in terms of NAND block size */
- {
-@@ -567,6 +609,15 @@ static void __init omap3_beagle_init(void)
- /* REVISIT leave DVI powered down until it's needed ... */
- gpio_request_one(170, GPIOF_OUT_INIT_HIGH, "DVI_nPD");
-
-+ if(!strcmp(expansionboard_name, "zippy"))
-+ {
-+ printk(KERN_INFO "Beagle expansionboard: initializing enc28j60\n");
-+ omap3beagle_enc28j60_init();
-+ printk(KERN_INFO "Beagle expansionboard: assigning GPIO 141 and 162 to MMC1\n");
-+ mmc[1].gpio_wp = 141;
-+ mmc[1].gpio_cd = 162;
-+ }
-+
- usb_musb_init(NULL);
- usbhs_init(&usbhs_bdata);
- omap_nand_flash_init(NAND_BUSWIDTH_16, omap3beagle_nand_partitions,
---
-1.7.7.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/beagle/0004-expansion-add-zippy2.patch b/recipes-kernel/linux/linux-mainline-3.2/beagle/0004-expansion-add-zippy2.patch
deleted file mode 100644
index c2d0dde..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/beagle/0004-expansion-add-zippy2.patch
+++ /dev/null
@@ -1,82 +0,0 @@
-From 27a4c659c1c665b877c032d3409b0c593cd0463b Mon Sep 17 00:00:00 2001
-From: Robert Nelson <robertcnelson at gmail.com>
-Date: Mon, 10 Oct 2011 11:18:08 -0500
-Subject: [PATCH 04/13] expansion: add zippy2
-
-Signed-off-by: Robert Nelson <robertcnelson at gmail.com>
----
- arch/arm/mach-omap2/board-omap3beagle.c | 51 +++++++++++++++++++++++++++++++
- 1 files changed, 51 insertions(+), 0 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
-index 6ffafd6..259e6e7 100644
---- a/arch/arm/mach-omap2/board-omap3beagle.c
-+++ b/arch/arm/mach-omap2/board-omap3beagle.c
-@@ -201,6 +201,48 @@ static void __init omap3beagle_enc28j60_init(void)
- static inline void __init omap3beagle_enc28j60_init(void) { return; }
- #endif
-
-+#if defined(CONFIG_KS8851) || defined(CONFIG_KS8851_MODULE)
-+
-+#include <plat/mcspi.h>
-+#include <linux/spi/spi.h>
-+
-+#define OMAP3BEAGLE_GPIO_KS8851_IRQ 157
-+
-+static struct omap2_mcspi_device_config ks8851_spi_chip_info = {
-+ .turbo_mode = 0,
-+ .single_channel = 1, /* 0: slave, 1: master */
-+};
-+
-+static struct spi_board_info omap3beagle_zippy2_spi_board_info[] __initdata = {
-+ {
-+ .modalias = "ks8851",
-+ .bus_num = 4,
-+ .chip_select = 0,
-+ .max_speed_hz = 36000000,
-+ .controller_data = &ks8851_spi_chip_info,
-+ },
-+};
-+
-+static void __init omap3beagle_ks8851_init(void)
-+{
-+ if ((gpio_request(OMAP3BEAGLE_GPIO_KS8851_IRQ, "KS8851_IRQ") == 0) &&
-+ (gpio_direction_input(OMAP3BEAGLE_GPIO_KS8851_IRQ) == 0)) {
-+ gpio_export(OMAP3BEAGLE_GPIO_KS8851_IRQ, 0);
-+ omap3beagle_zippy2_spi_board_info[0].irq = OMAP_GPIO_IRQ(OMAP3BEAGLE_GPIO_KS8851_IRQ);
-+ irq_set_irq_type(omap3beagle_zippy2_spi_board_info[0].irq, IRQ_TYPE_EDGE_FALLING);
-+ } else {
-+ printk(KERN_ERR "could not obtain gpio for KS8851_IRQ\n");
-+ return;
-+ }
-+
-+ spi_register_board_info(omap3beagle_zippy2_spi_board_info,
-+ ARRAY_SIZE(omap3beagle_zippy2_spi_board_info));
-+}
-+
-+#else
-+static inline void __init omap3beagle_ks8851_init(void) { return; }
-+#endif
-+
- static struct mtd_partition omap3beagle_nand_partitions[] = {
- /* All the partition sizes are listed in terms of NAND block size */
- {
-@@ -618,6 +660,15 @@ static void __init omap3_beagle_init(void)
- mmc[1].gpio_cd = 162;
- }
-
-+ if(!strcmp(expansionboard_name, "zippy2"))
-+ {
-+ printk(KERN_INFO "Beagle expansionboard: initializing ks_8851\n");
-+ omap3beagle_ks8851_init();
-+ printk(KERN_INFO "Beagle expansionboard: assigning GPIO 141 and 162 to MMC1\n");
-+ mmc[1].gpio_wp = 141;
-+ mmc[1].gpio_cd = 162;
-+ }
-+
- usb_musb_init(NULL);
- usbhs_init(&usbhs_bdata);
- omap_nand_flash_init(NAND_BUSWIDTH_16, omap3beagle_nand_partitions,
---
-1.7.7.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/beagle/0005-expansion-add-trainer.patch b/recipes-kernel/linux/linux-mainline-3.2/beagle/0005-expansion-add-trainer.patch
deleted file mode 100644
index b57bf74..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/beagle/0005-expansion-add-trainer.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From 0dc814729657ab525ed8ac2e1a96e4f3dc706bb3 Mon Sep 17 00:00:00 2001
-From: Robert Nelson <robertcnelson at gmail.com>
-Date: Mon, 10 Oct 2011 11:18:49 -0500
-Subject: [PATCH 05/13] expansion: add trainer
-
-Signed-off-by: Robert Nelson <robertcnelson at gmail.com>
----
- arch/arm/mach-omap2/board-omap3beagle.c | 31 +++++++++++++++++++++++++++++++
- 1 files changed, 31 insertions(+), 0 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
-index 259e6e7..b0b16b4 100644
---- a/arch/arm/mach-omap2/board-omap3beagle.c
-+++ b/arch/arm/mach-omap2/board-omap3beagle.c
-@@ -669,6 +669,37 @@ static void __init omap3_beagle_init(void)
- mmc[1].gpio_cd = 162;
- }
-
-+ if(!strcmp(expansionboard_name, "trainer"))
-+ {
-+ printk(KERN_INFO "Beagle expansionboard: exporting GPIOs 130-141,162 to userspace\n");
-+ gpio_request(130, "sysfs");
-+ gpio_export(130, 1);
-+ gpio_request(131, "sysfs");
-+ gpio_export(131, 1);
-+ gpio_request(132, "sysfs");
-+ gpio_export(132, 1);
-+ gpio_request(133, "sysfs");
-+ gpio_export(133, 1);
-+ gpio_request(134, "sysfs");
-+ gpio_export(134, 1);
-+ gpio_request(135, "sysfs");
-+ gpio_export(135, 1);
-+ gpio_request(136, "sysfs");
-+ gpio_export(136, 1);
-+ gpio_request(137, "sysfs");
-+ gpio_export(137, 1);
-+ gpio_request(138, "sysfs");
-+ gpio_export(138, 1);
-+ gpio_request(139, "sysfs");
-+ gpio_export(139, 1);
-+ gpio_request(140, "sysfs");
-+ gpio_export(140, 1);
-+ gpio_request(141, "sysfs");
-+ gpio_export(141, 1);
-+ gpio_request(162, "sysfs");
-+ gpio_export(162, 1);
-+ }
-+
- usb_musb_init(NULL);
- usbhs_init(&usbhs_bdata);
- omap_nand_flash_init(NAND_BUSWIDTH_16, omap3beagle_nand_partitions,
---
-1.7.7.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/beagle/0006-expansion-add-ulcd.patch b/recipes-kernel/linux/linux-mainline-3.2/beagle/0006-expansion-add-ulcd.patch
deleted file mode 100644
index cf56d9c..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/beagle/0006-expansion-add-ulcd.patch
+++ /dev/null
@@ -1,262 +0,0 @@
-From 3c92dddf8709162e8ee3a6bdacb83a3e85f70fb1 Mon Sep 17 00:00:00 2001
-From: Robert Nelson <robertcnelson at gmail.com>
-Date: Fri, 16 Mar 2012 09:47:57 -0500
-Subject: [PATCH 06/13] expansion: add ulcd
-
-Signed-off-by: Robert Nelson <robertcnelson at gmail.com>
----
- arch/arm/mach-omap2/board-omap3beagle.c | 122 ++++++++++++++++++++++
- drivers/video/omap2/displays/panel-generic-dpi.c | 25 +++++
- 2 files changed, 147 insertions(+), 0 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
-index b0b16b4..a546c2b 100644
---- a/arch/arm/mach-omap2/board-omap3beagle.c
-+++ b/arch/arm/mach-omap2/board-omap3beagle.c
-@@ -33,6 +33,7 @@
-
- #include <linux/regulator/machine.h>
- #include <linux/i2c/twl.h>
-+#include <linux/i2c/tsc2007.h>
-
- #include <mach/hardware.h>
- #include <asm/mach-types.h>
-@@ -84,11 +85,15 @@ static struct {
- int usb_pwr_level;
- int reset_gpio;
- int usr_button_gpio;
-+ char *lcd_driver_name;
-+ int lcd_pwren;
- } beagle_config = {
- .mmc1_gpio_wp = -EINVAL,
- .usb_pwr_level = GPIOF_OUT_INIT_LOW,
- .reset_gpio = 129,
- .usr_button_gpio = 4,
-+ .lcd_driver_name = "",
-+ .lcd_pwren = 156
- };
-
- static struct gpio omap3_beagle_rev_gpios[] __initdata = {
-@@ -158,6 +163,7 @@ static void __init omap3_beagle_init_rev(void)
- }
-
- char expansionboard_name[16];
-+char expansionboard2_name[16];
-
- #if defined(CONFIG_ENC28J60) || defined(CONFIG_ENC28J60_MODULE)
-
-@@ -312,9 +318,46 @@ static struct omap_dss_device beagle_tv_device = {
- .phy.venc.type = OMAP_DSS_VENC_TYPE_SVIDEO,
- };
-
-+static int beagle_enable_lcd(struct omap_dss_device *dssdev)
-+{
-+ if (gpio_is_valid(beagle_config.lcd_pwren)) {
-+ printk(KERN_INFO "%s: Enabling LCD\n", __FUNCTION__);
-+ gpio_set_value(beagle_config.lcd_pwren, 0);
-+ } else {
-+ printk(KERN_INFO "%s: Invalid LCD enable GPIO: %d\n",
-+ __FUNCTION__, beagle_config.lcd_pwren);
-+ }
-+
-+ return 0;
-+}
-+
-+static void beagle_disable_lcd(struct omap_dss_device *dssdev)
-+{
-+ if (gpio_is_valid(beagle_config.lcd_pwren)) {
-+ printk(KERN_INFO "%s: Disabling LCD\n", __FUNCTION__);
-+ gpio_set_value(beagle_config.lcd_pwren, 1);
-+ } else {
-+ printk(KERN_INFO "%s: Invalid LCD enable GPIO: %d\n",
-+ __FUNCTION__, beagle_config.lcd_pwren);
-+ }
-+
-+ return;
-+}
-+
-+static struct omap_dss_device beagle_lcd_device = {
-+ .type = OMAP_DISPLAY_TYPE_DPI,
-+ .name = "lcd",
-+ .driver_name = "tfc_s9700rtwv35tr-01b",
-+ .phy.dpi.data_lines = 24,
-+ .platform_enable = beagle_enable_lcd,
-+ .platform_disable = beagle_disable_lcd,
-+ .reset_gpio = -EINVAL,
-+};
-+
- static struct omap_dss_device *beagle_dss_devices[] = {
- &beagle_dvi_device,
- &beagle_tv_device,
-+ &beagle_lcd_device,
- };
-
- static struct omap_dss_board_info beagle_dss_data = {
-@@ -331,6 +374,11 @@ static void __init beagle_display_init(void)
- "DVI reset");
- if (r < 0)
- printk(KERN_ERR "Unable to get DVI reset GPIO\n");
-+
-+ r = gpio_request_one(beagle_config.lcd_pwren, GPIOF_OUT_INIT_LOW,
-+ "LCD power");
-+ if (r < 0)
-+ printk(KERN_ERR "Unable to get LCD power enable GPIO\n");
- }
-
- #include "sdram-micron-mt46h32m32lf-6.h"
-@@ -480,6 +528,50 @@ static struct i2c_board_info __initdata beagle_i2c2_boardinfo[] = {
- static struct i2c_board_info __initdata beagle_i2c2_boardinfo[] = {};
- #endif
-
-+#if defined(CONFIG_INPUT_TOUCHSCREEN) && \
-+ ( defined(CONFIG_TOUCHSCREEN_TSC2007) || defined(CONFIG_TOUCHSCREEN_TSC2007_MODULE))
-+/* Touchscreen */
-+#define OMAP3BEAGLE_TSC2007_GPIO 157
-+static int omap3beagle_tsc2007_get_pendown_state(void)
-+{
-+ return !gpio_get_value(OMAP3BEAGLE_TSC2007_GPIO);
-+}
-+
-+static void __init omap3beagle_tsc2007_init(void)
-+{
-+ int r;
-+
-+ omap_mux_init_gpio(OMAP3BEAGLE_TSC2007_GPIO, OMAP_PIN_INPUT_PULLUP);
-+
-+ r = gpio_request_one(OMAP3BEAGLE_TSC2007_GPIO, GPIOF_IN, "tsc2007_pen_down");
-+ if (r < 0) {
-+ printk(KERN_ERR "failed to request GPIO#%d for "
-+ "tsc2007 pen down IRQ\n", OMAP3BEAGLE_TSC2007_GPIO);
-+ return;
-+ }
-+
-+ irq_set_irq_type(gpio_to_irq(OMAP3BEAGLE_TSC2007_GPIO), IRQ_TYPE_EDGE_FALLING);
-+}
-+
-+static struct tsc2007_platform_data tsc2007_info = {
-+ .model = 2007,
-+ .x_plate_ohms = 180,
-+ .get_pendown_state = omap3beagle_tsc2007_get_pendown_state,
-+};
-+
-+static struct i2c_board_info __initdata beagle_i2c2_bbtoys_ulcd[] = {
-+ {
-+ I2C_BOARD_INFO("tlc59108", 0x40),
-+ I2C_BOARD_INFO("tsc2007", 0x48),
-+ .irq = OMAP_GPIO_IRQ(OMAP3BEAGLE_TSC2007_GPIO),
-+ .platform_data = &tsc2007_info,
-+ },
-+};
-+#else
-+static struct i2c_board_info __initdata beagle_i2c2_bbtoys_ulcd[] = {};
-+static void __init omap3beagle_tsc2007_init(void) { return; }
-+#endif
-+
- static int __init omap3_beagle_i2c_init(void)
- {
- omap3_pmic_get_config(&beagle_twldata,
-@@ -490,7 +582,17 @@ static int __init omap3_beagle_i2c_init(void)
- beagle_twldata.vpll2->constraints.name = "VDVI";
-
- omap3_pmic_init("twl4030", &beagle_twldata);
-+ if(!strcmp(expansionboard2_name, "bbtoys-ulcd"))
-+ {
-+ printk(KERN_INFO "Beagle second expansionboard: registering bbtoys-ulcd i2c bus\n");
-+ omap_register_i2c_bus(2, 400, beagle_i2c2_bbtoys_ulcd,
-+ ARRAY_SIZE(beagle_i2c2_bbtoys_ulcd));
-+ }
-+ else
-+ {
- omap_register_i2c_bus(2, 400, beagle_i2c2_boardinfo, ARRAY_SIZE(beagle_i2c2_boardinfo));
-+ }
-+
- /* Bus 3 is attached to the DVI port where devices like the pico DLP
- * projector don't work reliably with 400kHz */
- omap_register_i2c_bus(3, 100, beagle_i2c_eeprom, ARRAY_SIZE(beagle_i2c_eeprom));
-@@ -589,6 +691,15 @@ static int __init expansionboard_setup(char *str)
- return 0;
- }
-
-+static int __init expansionboard2_setup(char *str)
-+{
-+ if (!str)
-+ return -EINVAL;
-+ strncpy(expansionboard2_name, str, 16);
-+ printk(KERN_INFO "Beagle second expansionboard: %s\n", expansionboard2_name);
-+ return 0;
-+}
-+
- static void __init beagle_opp_init(void)
- {
- int r = 0;
-@@ -640,6 +751,10 @@ static void __init omap3_beagle_init(void)
-
- gpio_buttons[0].gpio = beagle_config.usr_button_gpio;
-
-+ /* TODO: set lcd_driver_name by command line or device tree */
-+ beagle_config.lcd_driver_name = "tfc_s9700rtwv35tr-01b",
-+ //lcd_panel.name = beagle_config.lcd_driver_name;
-+
- platform_add_devices(omap3_beagle_devices,
- ARRAY_SIZE(omap3_beagle_devices));
- omap_display_init(&beagle_dss_data);
-@@ -700,6 +815,12 @@ static void __init omap3_beagle_init(void)
- gpio_export(162, 1);
- }
-
-+ if(!strcmp(expansionboard2_name, "bbtoys-ulcd"))
-+ {
-+ printk(KERN_INFO "Beagle second expansionboard: initializing touchscreen: tsc2007\n");
-+ omap3beagle_tsc2007_init();
-+ }
-+
- usb_musb_init(NULL);
- usbhs_init(&usbhs_bdata);
- omap_nand_flash_init(NAND_BUSWIDTH_16, omap3beagle_nand_partitions,
-@@ -717,6 +838,7 @@ static void __init omap3_beagle_init(void)
- }
-
- early_param("buddy", expansionboard_setup);
-+early_param("buddy2", expansionboard2_setup);
-
- MACHINE_START(OMAP3_BEAGLE, "OMAP3 Beagle Board")
- /* Maintainer: Syed Mohammed Khasim - http://beagleboard.org */
-diff --git a/drivers/video/omap2/displays/panel-generic-dpi.c b/drivers/video/omap2/displays/panel-generic-dpi.c
-index 519c47d..495d693 100644
---- a/drivers/video/omap2/displays/panel-generic-dpi.c
-+++ b/drivers/video/omap2/displays/panel-generic-dpi.c
-@@ -297,6 +297,31 @@ static struct panel_config generic_dpi_panels[] = {
-
- .name = "apollon",
- },
-+
-+ /* ThreeFiveCorp S9700RTWV35TR-01B */
-+ {
-+ {
-+ .x_res = 800,
-+ .y_res = 480,
-+
-+ .pixel_clock = 30000,
-+
-+ .hsw = 49,
-+ .hfp = 41,
-+ .hbp = 40,
-+
-+ .vsw = 4,
-+ .vfp = 14,
-+ .vbp = 29,
-+ },
-+ .acbi = 0x0,
-+ .acb = 0x0,
-+ .config = OMAP_DSS_LCD_TFT | OMAP_DSS_LCD_IVS |
-+ OMAP_DSS_LCD_IHS, // | OMAP_DSS_LCD_IEO; - TODO check this - doesn't work with this enabled
-+ .power_on_delay = 50,
-+ .power_off_delay = 100,
-+ .name = "tfc_s9700rtwv35tr-01b",
-+ },
- };
-
- struct panel_drv_data {
---
-1.7.7.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/beagle/0007-beagleboard-reinstate-usage-of-hi-speed-PLL-divider.patch b/recipes-kernel/linux/linux-mainline-3.2/beagle/0007-beagleboard-reinstate-usage-of-hi-speed-PLL-divider.patch
deleted file mode 100644
index b8b7589..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/beagle/0007-beagleboard-reinstate-usage-of-hi-speed-PLL-divider.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 460ac29a1ee0577d6b9044caa53761cc0d02b495 Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen at dominion.thruhere.net>
-Date: Wed, 25 Jan 2012 15:48:36 +0100
-Subject: [PATCH 07/13] beagleboard: reinstate usage of hi-speed PLL divider
-
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- arch/arm/mach-omap2/board-omap3beagle.c | 5 +++++
- 1 files changed, 5 insertions(+), 0 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
-index a546c2b..e28ae72 100644
---- a/arch/arm/mach-omap2/board-omap3beagle.c
-+++ b/arch/arm/mach-omap2/board-omap3beagle.c
-@@ -308,6 +308,11 @@ static struct omap_dss_device beagle_dvi_device = {
- .driver_name = "dvi",
- .data = &dvi_panel,
- .phy.dpi.data_lines = 24,
-+ .clocks = {
-+ .dispc = {
-+ .dispc_fclk_src = OMAP_DSS_CLK_SRC_DSI_PLL_HSDIV_DISPC,
-+ },
-+ },
- .reset_gpio = -EINVAL,
- };
-
---
-1.7.7.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/beagle/0008-Turn-on-the-USB-regulator-on-Beagle-xM-explicitly.patch b/recipes-kernel/linux/linux-mainline-3.2/beagle/0008-Turn-on-the-USB-regulator-on-Beagle-xM-explicitly.patch
deleted file mode 100644
index 1aec952..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/beagle/0008-Turn-on-the-USB-regulator-on-Beagle-xM-explicitly.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From 3d9465ffd5becb88c1ba36b98f8375898605f529 Mon Sep 17 00:00:00 2001
-From: Robert Nelson <robertcnelson at gmail.com>
-Date: Thu, 23 Feb 2012 09:23:10 -0600
-Subject: [PATCH 08/13] Turn on the USB regulator on Beagle xM explicitly
-
- Turn on the USB regulator on Beagle xM explicitly when the USB
- subsystem asks for it, rather than relying on u-boot to do it.
-
- http://www.spinics.net/lists/linux-omap/msg65102.html
-
-Signed-off-by: Robert Nelson <robertcnelson at gmail.com>
----
- arch/arm/mach-omap2/board-omap3beagle.c | 19 +++++++++++++++++++
- 1 files changed, 19 insertions(+), 0 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
-index e28ae72..30cb2f0 100644
---- a/arch/arm/mach-omap2/board-omap3beagle.c
-+++ b/arch/arm/mach-omap2/board-omap3beagle.c
-@@ -411,6 +411,24 @@ static struct regulator_consumer_supply beagle_vsim_supply[] = {
- REGULATOR_SUPPLY("vmmc_aux", "omap_hsmmc.0"),
- };
-
-+static struct regulator_consumer_supply beagle_usb_supply[] = {
-+ REGULATOR_SUPPLY("hsusb0", "ehci-omap.0"),
-+ REGULATOR_SUPPLY("hsusb1", "ehci-omap.0")
-+};
-+
-+static struct regulator_init_data usb_power = {
-+ .constraints = {
-+ .min_uV = 1800000,
-+ .max_uV = 1800000,
-+ .valid_modes_mask = REGULATOR_MODE_NORMAL,
-+ .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE
-+ | REGULATOR_CHANGE_MODE
-+ | REGULATOR_CHANGE_STATUS,
-+ },
-+ .num_consumer_supplies = ARRAY_SIZE(beagle_usb_supply),
-+ .consumer_supplies = beagle_usb_supply
-+};
-+
- static struct gpio_led gpio_leds[];
-
- static int beagle_twl_gpio_setup(struct device *dev,
-@@ -513,6 +531,7 @@ static struct twl4030_platform_data beagle_twldata = {
- .gpio = &beagle_gpio_data,
- .vmmc1 = &beagle_vmmc1,
- .vsim = &beagle_vsim,
-+ .vaux2 = &usb_power,
- };
-
- static struct i2c_board_info __initdata beagle_i2c_eeprom[] = {
---
-1.7.7.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/beagle/0009-meego-modedb-add-Toshiba-LTA070B220F-800x480-support.patch b/recipes-kernel/linux/linux-mainline-3.2/beagle/0009-meego-modedb-add-Toshiba-LTA070B220F-800x480-support.patch
deleted file mode 100644
index 79a25ab..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/beagle/0009-meego-modedb-add-Toshiba-LTA070B220F-800x480-support.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 1a553663864b5b69dcdfd7779640a1c0ce136a93 Mon Sep 17 00:00:00 2001
-From: Robert Nelson <robertcnelson at gmail.com>
-Date: Wed, 23 Mar 2011 08:37:54 -0500
-Subject: [PATCH 09/13] meego: modedb add Toshiba LTA070B220F 800x480 support
-
- from http://wiki.meego.com/ARM/Meego_on_Beagleboard_from_scratch
-
-Signed-off-by: Robert Nelson <robertcnelson at gmail.com>
----
- drivers/video/modedb.c | 4 ++++
- 1 files changed, 4 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/video/modedb.c b/drivers/video/modedb.c
-index 5b686de..69ad1ec 100644
---- a/drivers/video/modedb.c
-+++ b/drivers/video/modedb.c
-@@ -293,6 +293,10 @@ static const struct fb_videomode modedb[] = {
- /* 864x480 @ 60 Hz, 35.15 kHz hsync */
- { NULL, 60, 864, 480, 27777, 1, 1, 1, 1, 0, 0,
- 0, FB_VMODE_NONINTERLACED },
-+
-+ /* 800x480 @ 60 Hz, Toshiba LTA070B220F 7 inch LCD */
-+ { NULL, 60, 800, 480, 32787, 48, 80, 33, 31, 32, 2,
-+ FB_SYNC_HOR_HIGH_ACT|FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED },
- };
-
- #ifdef CONFIG_FB_MODE_HELPERS
---
-1.7.7.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/beagle/0010-beagleboard-fix-uLCD7-support.patch b/recipes-kernel/linux/linux-mainline-3.2/beagle/0010-beagleboard-fix-uLCD7-support.patch
deleted file mode 100644
index 9837ee9..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/beagle/0010-beagleboard-fix-uLCD7-support.patch
+++ /dev/null
@@ -1,66 +0,0 @@
-From 6a386a61fc5cd9c71f8c5dc577e70b4c0f892130 Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen at dominion.thruhere.net>
-Date: Fri, 27 Apr 2012 16:57:27 +0200
-Subject: [PATCH 10/13] beagleboard: fix uLCD7 support
-
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- arch/arm/mach-omap2/board-omap3beagle.c | 14 ++++++++++++--
- 1 files changed, 12 insertions(+), 2 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
-index 30cb2f0..0299d47 100644
---- a/arch/arm/mach-omap2/board-omap3beagle.c
-+++ b/arch/arm/mach-omap2/board-omap3beagle.c
-@@ -44,6 +44,7 @@
- #include <plat/board.h>
- #include <plat/common.h>
- #include <video/omapdss.h>
-+#include <video/omap-panel-generic-dpi.h>
- #include <video/omap-panel-dvi.h>
- #include <plat/gpmc.h>
- #include <plat/nand.h>
-@@ -349,14 +350,21 @@ static void beagle_disable_lcd(struct omap_dss_device *dssdev)
- return;
- }
-
-+static struct panel_generic_dpi_data lcd_panel = {
-+ .name = "tfc_s9700rtwv35tr-01b",
-+ .platform_enable = beagle_enable_lcd,
-+ .platform_disable = beagle_disable_lcd,
-+};
-+
- static struct omap_dss_device beagle_lcd_device = {
- .type = OMAP_DISPLAY_TYPE_DPI,
- .name = "lcd",
-- .driver_name = "tfc_s9700rtwv35tr-01b",
-+ .driver_name = "generic_dpi_panel",
- .phy.dpi.data_lines = 24,
- .platform_enable = beagle_enable_lcd,
- .platform_disable = beagle_disable_lcd,
- .reset_gpio = -EINVAL,
-+ .data = &lcd_panel,
- };
-
- static struct omap_dss_device *beagle_dss_devices[] = {
-@@ -586,6 +594,8 @@ static struct tsc2007_platform_data tsc2007_info = {
- static struct i2c_board_info __initdata beagle_i2c2_bbtoys_ulcd[] = {
- {
- I2C_BOARD_INFO("tlc59108", 0x40),
-+ },
-+ {
- I2C_BOARD_INFO("tsc2007", 0x48),
- .irq = OMAP_GPIO_IRQ(OMAP3BEAGLE_TSC2007_GPIO),
- .platform_data = &tsc2007_info,
-@@ -777,7 +787,7 @@ static void __init omap3_beagle_init(void)
-
- /* TODO: set lcd_driver_name by command line or device tree */
- beagle_config.lcd_driver_name = "tfc_s9700rtwv35tr-01b",
-- //lcd_panel.name = beagle_config.lcd_driver_name;
-+ lcd_panel.name = beagle_config.lcd_driver_name;
-
- platform_add_devices(omap3_beagle_devices,
- ARRAY_SIZE(omap3_beagle_devices));
---
-1.7.7.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/beagle/0011-default-to-fifo-mode-5-for-old-musb-beagles.patch b/recipes-kernel/linux/linux-mainline-3.2/beagle/0011-default-to-fifo-mode-5-for-old-musb-beagles.patch
deleted file mode 100644
index 5316119..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/beagle/0011-default-to-fifo-mode-5-for-old-musb-beagles.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 16c97b9941534b54a2fdf4d310fd22deb10d0cc1 Mon Sep 17 00:00:00 2001
-From: Robert Nelson <robertcnelson at gmail.com>
-Date: Sat, 8 Jan 2011 14:31:37 -0600
-Subject: [PATCH 11/13] default to fifo mode 5, for old musb beagles
-
-The fifo mode 4, 16kb can cause corruption on musb/omap35xx,
-use mode 5, 8kb...
-
-Signed-off-by: Robert Nelson <robertcnelson at gmail.com>
----
- drivers/usb/musb/musb_core.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/usb/musb/musb_core.c b/drivers/usb/musb/musb_core.c
-index 920f04e..66ce5e0 100644
---- a/drivers/usb/musb/musb_core.c
-+++ b/drivers/usb/musb/musb_core.c
-@@ -1015,7 +1015,7 @@ static void musb_shutdown(struct platform_device *pdev)
- || defined(CONFIG_USB_MUSB_OMAP2PLUS_MODULE) \
- || defined(CONFIG_USB_MUSB_AM35X) \
- || defined(CONFIG_USB_MUSB_AM35X_MODULE)
--static ushort __initdata fifo_mode = 4;
-+static ushort __initdata fifo_mode = 5;
- #elif defined(CONFIG_USB_MUSB_UX500) \
- || defined(CONFIG_USB_MUSB_UX500_MODULE)
- static ushort __initdata fifo_mode = 5;
---
-1.7.7.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/beagle/0012-backlight-Add-TLC59108-backlight-control-driver.patch b/recipes-kernel/linux/linux-mainline-3.2/beagle/0012-backlight-Add-TLC59108-backlight-control-driver.patch
deleted file mode 100644
index 850d373..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/beagle/0012-backlight-Add-TLC59108-backlight-control-driver.patch
+++ /dev/null
@@ -1,215 +0,0 @@
-From 9f4af290c74b77e16555858a338feb467a8eedb0 Mon Sep 17 00:00:00 2001
-From: "Manjunathappa, Prakash" <prakash.pm at ti.com>
-Date: Mon, 1 Aug 2011 18:25:11 +0530
-Subject: [PATCH 12/13] backlight: Add TLC59108 backlight control driver
-
-This patch adds support for I2C configurable TLC59108 backlight
-control driver.
-
-Signed-off-by: Manjunathappa, Prakash <prakash.pm at ti.com>
-Signed-off-by: Vaibhav Hiremath <hvaibhav at ti.com>
----
- drivers/video/backlight/Kconfig | 8 ++
- drivers/video/backlight/Makefile | 1 +
- drivers/video/backlight/tlc59108.c | 160 ++++++++++++++++++++++++++++++++++++
- 3 files changed, 169 insertions(+), 0 deletions(-)
- create mode 100755 drivers/video/backlight/tlc59108.c
-
-diff --git a/drivers/video/backlight/Kconfig b/drivers/video/backlight/Kconfig
-index 278aeaa..df9dac7 100644
---- a/drivers/video/backlight/Kconfig
-+++ b/drivers/video/backlight/Kconfig
-@@ -342,6 +342,14 @@ config BACKLIGHT_AAT2870
- If you have a AnalogicTech AAT2870 say Y to enable the
- backlight driver.
-
-+config BACKLIGHT_TLC59108
-+ tristate "TLC59108 LCD Backlight Driver"
-+ depends on I2C && BACKLIGHT_CLASS_DEVICE
-+ default n
-+ help
-+ If you have an LCD Panel with backlight control via TLC59108,
-+ say Y to enable its LCD control driver.
-+
- endif # BACKLIGHT_CLASS_DEVICE
-
- endif # BACKLIGHT_LCD_SUPPORT
-diff --git a/drivers/video/backlight/Makefile b/drivers/video/backlight/Makefile
-index fdd1fc4..ba31474 100644
---- a/drivers/video/backlight/Makefile
-+++ b/drivers/video/backlight/Makefile
-@@ -39,4 +39,5 @@ obj-$(CONFIG_BACKLIGHT_ADP8870) += adp8870_bl.o
- obj-$(CONFIG_BACKLIGHT_88PM860X) += 88pm860x_bl.o
- obj-$(CONFIG_BACKLIGHT_PCF50633) += pcf50633-backlight.o
- obj-$(CONFIG_BACKLIGHT_AAT2870) += aat2870_bl.o
-+obj-$(CONFIG_BACKLIGHT_TLC59108) += tlc59108.o
-
-diff --git a/drivers/video/backlight/tlc59108.c b/drivers/video/backlight/tlc59108.c
-new file mode 100755
-index 0000000..4f4ea34
---- /dev/null
-+++ b/drivers/video/backlight/tlc59108.c
-@@ -0,0 +1,160 @@
-+/*
-+ * ti81xxhdmi_tlc59108.c
-+ *
-+ * Copyright (C) 2011 Texas Instruments
-+ * Author: Senthil Natarajan
-+ *
-+ * tlc59108 HDMI Driver
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License version 2 as published by
-+ * the Free Software Foundation.
-+ *
-+ * This program is distributed in the hope that it will be useful, but WITHOUT
-+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
-+ * more details.
-+ *
-+ * You should have received a copy of the GNU General Public License along with
-+ * this program. If not, see <http://www.gnu.org/licenses/>.
-+ * History:
-+ *
-+ * Senthil Natarajan<senthil.n at ti.com> July 2011 I2C driver for tlc59108
-+ * backlight control
-+ */
-+
-+#include <linux/i2c.h>
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+#include <linux/backlight.h>
-+#include <linux/fb.h>
-+
-+#define tlc59108_MODULE_NAME "tlc59108"
-+#define TLC59108_MODE1 0x00
-+#define TLC59108_PWM2 0x04
-+#define TLC59108_LEDOUT0 0x0c
-+#define TLC59108_LEDOUT1 0x0d
-+#define TLC59108_MAX_BRIGHTNESS 0xFF
-+
-+struct tlc59108_bl {
-+ struct i2c_client *client;
-+ struct backlight_device *bl;
-+};
-+
-+static void tlc59108_bl_set_backlight(struct tlc59108_bl *data, int brightness)
-+{
-+ /* Set Mode1 Register */
-+ i2c_smbus_write_byte_data(data->client, TLC59108_MODE1, 0x00);
-+
-+ /* Set LEDOUT0 Register */
-+ i2c_smbus_write_byte_data(data->client, TLC59108_LEDOUT0, 0x21);
-+
-+ /* Set Backlight Duty Cycle*/
-+ i2c_smbus_write_byte_data(data->client, TLC59108_PWM2,
-+ brightness & 0xff);
-+}
-+
-+static int tlc59108_bl_get_brightness(struct backlight_device *dev)
-+{
-+ struct backlight_properties *props = &dev->props;
-+
-+ return props->brightness;
-+}
-+
-+static int tlc59108_bl_update_status(struct backlight_device *dev)
-+{
-+ struct backlight_properties *props = &dev->props;
-+ struct tlc59108_bl *data = dev_get_drvdata(&dev->dev);
-+ int brightness = props->brightness;
-+
-+ tlc59108_bl_set_backlight(data, brightness);
-+
-+ return 0;
-+}
-+
-+static const struct backlight_ops bl_ops = {
-+ .get_brightness = tlc59108_bl_get_brightness,
-+ .update_status = tlc59108_bl_update_status,
-+};
-+
-+static int tlc59108_probe(struct i2c_client *c, const struct i2c_device_id *id)
-+{
-+ struct backlight_properties props;
-+ struct tlc59108_bl *data = kzalloc(sizeof(struct tlc59108_bl),
-+ GFP_KERNEL);
-+ int ret = 0;
-+
-+ if (!data)
-+ return -ENOMEM;
-+
-+ i2c_set_clientdata(c, data);
-+ data->client = c;
-+
-+ memset(&props, 0, sizeof(struct backlight_properties));
-+ props.max_brightness = TLC59108_MAX_BRIGHTNESS;
-+ props.type = BACKLIGHT_RAW;
-+ data->bl = backlight_device_register("tlc59108-bl", &c->dev, data,
-+ &bl_ops, &props);
-+ if (IS_ERR(data->bl)) {
-+ ret = PTR_ERR(data->bl);
-+ goto err_reg;
-+ }
-+
-+ data->bl->props.brightness = TLC59108_MAX_BRIGHTNESS;
-+
-+ backlight_update_status(data->bl);
-+
-+ return 0;
-+
-+err_reg:
-+ data->bl = NULL;
-+ kfree(data);
-+ return ret;
-+}
-+
-+static int tlc59108_remove(struct i2c_client *c)
-+{
-+ struct tlc59108_bl *data = i2c_get_clientdata(c);
-+
-+ backlight_device_unregister(data->bl);
-+ data->bl = NULL;
-+
-+ kfree(data);
-+
-+ return 0;
-+}
-+
-+/* I2C Device ID table */
-+static const struct i2c_device_id tlc59108_id[] = {
-+ { "tlc59108", 0 },
-+ { }
-+};
-+MODULE_DEVICE_TABLE(i2c, tlc59108_id);
-+
-+/* I2C driver data */
-+static struct i2c_driver tlc59108_driver = {
-+ .driver = {
-+ .owner = THIS_MODULE,
-+ .name = tlc59108_MODULE_NAME,
-+ },
-+ .probe = tlc59108_probe,
-+ .remove = tlc59108_remove,
-+ .id_table = tlc59108_id,
-+};
-+
-+static int __init tlc59108_init(void)
-+{
-+ return i2c_add_driver(&tlc59108_driver);
-+}
-+
-+static void __exit tlc59108_exit(void)
-+{
-+ i2c_del_driver(&tlc59108_driver);
-+}
-+
-+module_init(tlc59108_init);
-+module_exit(tlc59108_exit);
-+
-+MODULE_DESCRIPTION("LCD/Backlight control for TLC59108");
-+MODULE_AUTHOR("Senthil Natarajan <senthil.n at ti.com>");
-+MODULE_LICENSE("GPL v2");
---
-1.7.7.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/beagle/0013-tlc59108-adjust-for-beagleboard-uLCD7.patch b/recipes-kernel/linux/linux-mainline-3.2/beagle/0013-tlc59108-adjust-for-beagleboard-uLCD7.patch
deleted file mode 100644
index 82d1291..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/beagle/0013-tlc59108-adjust-for-beagleboard-uLCD7.patch
+++ /dev/null
@@ -1,124 +0,0 @@
-From a165f2f70ebcf073cfc934c510ecf86bb028ef4e Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen at dominion.thruhere.net>
-Date: Fri, 27 Apr 2012 21:30:00 +0200
-Subject: [PATCH 13/13] tlc59108: adjust for beagleboard+uLCD7
-
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- drivers/video/backlight/tlc59108.c | 48 ++++++++++++++++++++++++------------
- 1 files changed, 32 insertions(+), 16 deletions(-)
-
-diff --git a/drivers/video/backlight/tlc59108.c b/drivers/video/backlight/tlc59108.c
-index 4f4ea34..de2d2ee 100755
---- a/drivers/video/backlight/tlc59108.c
-+++ b/drivers/video/backlight/tlc59108.c
-@@ -29,9 +29,16 @@
- #include <linux/backlight.h>
- #include <linux/fb.h>
-
--#define tlc59108_MODULE_NAME "tlc59108"
- #define TLC59108_MODE1 0x00
--#define TLC59108_PWM2 0x04
-+#define TLC59108_MODE2 0x01
-+#define TLC59108_PWM0 0x02
-+#define TLC59108_PWM1 0x03
-+#define TLC59108_PWM2 0x04
-+#define TLC59108_PWM3 0x05
-+#define TLC59108_PWM4 0x06
-+#define TLC59108_PWM5 0x07
-+#define TLC59108_PWM6 0x08
-+#define TLC59108_PWM7 0x09
- #define TLC59108_LEDOUT0 0x0c
- #define TLC59108_LEDOUT1 0x0d
- #define TLC59108_MAX_BRIGHTNESS 0xFF
-@@ -43,15 +50,9 @@ struct tlc59108_bl {
-
- static void tlc59108_bl_set_backlight(struct tlc59108_bl *data, int brightness)
- {
-- /* Set Mode1 Register */
-- i2c_smbus_write_byte_data(data->client, TLC59108_MODE1, 0x00);
--
-- /* Set LEDOUT0 Register */
-- i2c_smbus_write_byte_data(data->client, TLC59108_LEDOUT0, 0x21);
--
- /* Set Backlight Duty Cycle*/
- i2c_smbus_write_byte_data(data->client, TLC59108_PWM2,
-- brightness & 0xff);
-+ 0xff - brightness );
- }
-
- static int tlc59108_bl_get_brightness(struct backlight_device *dev)
-@@ -65,7 +66,17 @@ static int tlc59108_bl_update_status(struct backlight_device *dev)
- {
- struct backlight_properties *props = &dev->props;
- struct tlc59108_bl *data = dev_get_drvdata(&dev->dev);
-- int brightness = props->brightness;
-+
-+ int brightness = props->brightness;
-+
-+ if (dev->props.state & BL_CORE_FBBLANK) {
-+ brightness = 0;
-+ /* Set LEDOUT0 Register */
-+ i2c_smbus_write_byte_data(data->client, TLC59108_LEDOUT0, 0x10);
-+ } else {
-+ /* Set LEDOUT0 Register */
-+ i2c_smbus_write_byte_data(data->client, TLC59108_LEDOUT0, 0x30);
-+ }
-
- tlc59108_bl_set_backlight(data, brightness);
-
-@@ -77,7 +88,7 @@ static const struct backlight_ops bl_ops = {
- .update_status = tlc59108_bl_update_status,
- };
-
--static int tlc59108_probe(struct i2c_client *c, const struct i2c_device_id *id)
-+static int __devinit tlc59108_probe(struct i2c_client *c, const struct i2c_device_id *id)
- {
- struct backlight_properties props;
- struct tlc59108_bl *data = kzalloc(sizeof(struct tlc59108_bl),
-@@ -104,6 +115,11 @@ static int tlc59108_probe(struct i2c_client *c, const struct i2c_device_id *id)
-
- backlight_update_status(data->bl);
-
-+ i2c_smbus_write_byte_data(data->client, TLC59108_MODE1, 0x00);
-+ i2c_smbus_write_byte_data(data->client, TLC59108_PWM2, 0x80);
-+ i2c_smbus_write_byte_data(data->client, TLC59108_LEDOUT1, 0x05);
-+ i2c_smbus_write_byte_data(data->client, TLC59108_LEDOUT1, 0x15);
-+
- return 0;
-
- err_reg:
-@@ -125,7 +141,7 @@ static int tlc59108_remove(struct i2c_client *c)
- }
-
- /* I2C Device ID table */
--static const struct i2c_device_id tlc59108_id[] = {
-+static struct i2c_device_id tlc59108_id[] = {
- { "tlc59108", 0 },
- { }
- };
-@@ -134,12 +150,12 @@ MODULE_DEVICE_TABLE(i2c, tlc59108_id);
- /* I2C driver data */
- static struct i2c_driver tlc59108_driver = {
- .driver = {
-- .owner = THIS_MODULE,
-- .name = tlc59108_MODULE_NAME,
-+ .owner = THIS_MODULE,
-+ .name = "tlc59108"
- },
-+ .id_table = tlc59108_id,
- .probe = tlc59108_probe,
- .remove = tlc59108_remove,
-- .id_table = tlc59108_id,
- };
-
- static int __init tlc59108_init(void)
-@@ -157,4 +173,4 @@ module_exit(tlc59108_exit);
-
- MODULE_DESCRIPTION("LCD/Backlight control for TLC59108");
- MODULE_AUTHOR("Senthil Natarajan <senthil.n at ti.com>");
--MODULE_LICENSE("GPL v2");
-+MODULE_LICENSE("GPL");
---
-1.7.7.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/beagle/0014-expansion-add-wifi.patch b/recipes-kernel/linux/linux-mainline-3.2/beagle/0014-expansion-add-wifi.patch
deleted file mode 100644
index fe175c0..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/beagle/0014-expansion-add-wifi.patch
+++ /dev/null
@@ -1,142 +0,0 @@
-From cd3ddffcde4c2b2c8c66389abed3b890b12f31c2 Mon Sep 17 00:00:00 2001
-From: Robert Nelson <robertcnelson at gmail.com>
-Date: Mon, 16 Apr 2012 10:56:17 -0500
-Subject: [PATCH 14/14] expansion: add wifi
-
-Signed-off-by: Robert Nelson <robertcnelson at gmail.com>
----
- arch/arm/mach-omap2/board-omap3beagle.c | 103 +++++++++++++++++++++++++++++++
- 1 files changed, 103 insertions(+), 0 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
-index 0299d47..a7d81fc 100644
---- a/arch/arm/mach-omap2/board-omap3beagle.c
-+++ b/arch/arm/mach-omap2/board-omap3beagle.c
-@@ -166,6 +166,90 @@ static void __init omap3_beagle_init_rev(void)
- char expansionboard_name[16];
- char expansionboard2_name[16];
-
-+#if defined(CONFIG_WL12XX) || defined(CONFIG_WL12XX_MODULE)
-+#include <linux/regulator/fixed.h>
-+#include <linux/ti_wilink_st.h>
-+#include <linux/wl12xx.h>
-+
-+#define OMAP_BEAGLE_WLAN_EN_GPIO (139)
-+#define OMAP_BEAGLE_BT_EN_GPIO (138)
-+#define OMAP_BEAGLE_WLAN_IRQ_GPIO (137)
-+#define OMAP_BEAGLE_FM_EN_BT_WU (136)
-+
-+struct wl12xx_platform_data omap_beagle_wlan_data __initdata = {
-+ .irq = OMAP_GPIO_IRQ(OMAP_BEAGLE_WLAN_IRQ_GPIO),
-+ .board_ref_clock = 2, /* 38.4 MHz */
-+};
-+
-+static struct ti_st_plat_data wilink_platform_data = {
-+ .nshutdown_gpio = OMAP_BEAGLE_BT_EN_GPIO,
-+ .dev_name = "/dev/ttyO1",
-+ .flow_cntrl = 1,
-+ .baud_rate = 3000000,
-+ .chip_enable = NULL,
-+ .suspend = NULL,
-+ .resume = NULL,
-+};
-+
-+static struct platform_device wl12xx_device = {
-+ .name = "kim",
-+ .id = -1,
-+ .dev.platform_data = &wilink_platform_data,
-+};
-+
-+static struct platform_device btwilink_device = {
-+ .name = "btwilink",
-+ .id = -1,
-+};
-+
-+static struct omap2_hsmmc_info mmcbbt[] = {
-+ {
-+ .mmc = 1,
-+ .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA,
-+ .gpio_wp = -EINVAL,
-+ },
-+ {
-+ .name = "wl1271",
-+ .mmc = 2,
-+ .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_POWER_OFF_CARD,
-+ .gpio_wp = -EINVAL,
-+ .gpio_cd = -EINVAL,
-+ .ocr_mask = MMC_VDD_165_195,
-+ .nonremovable = true,
-+ },
-+ {} /* Terminator */
-+};
-+
-+static struct regulator_consumer_supply beagle_vmmc2_supply =
-+ REGULATOR_SUPPLY("vmmc", "omap_hsmmc.1");
-+
-+static struct regulator_init_data beagle_vmmc2 = {
-+ .constraints = {
-+ .valid_ops_mask = REGULATOR_CHANGE_STATUS,
-+ },
-+ .num_consumer_supplies = 1,
-+ .consumer_supplies = &beagle_vmmc2_supply,
-+};
-+
-+static struct fixed_voltage_config beagle_vwlan = {
-+ .supply_name = "vwl1271",
-+ .microvolts = 1800000, /* 1.8V */
-+ .gpio = OMAP_BEAGLE_WLAN_EN_GPIO,
-+ .startup_delay = 70000, /* 70ms */
-+ .enable_high = 1,
-+ .enabled_at_boot = 0,
-+ .init_data = &beagle_vmmc2,
-+};
-+
-+static struct platform_device omap_vwlan_device = {
-+ .name = "reg-fixed-voltage",
-+ .id = 1,
-+ .dev = {
-+ .platform_data = &beagle_vwlan,
-+ },
-+};
-+#endif
-+
- #if defined(CONFIG_ENC28J60) || defined(CONFIG_ENC28J60_MODULE)
-
- #include <plat/mcspi.h>
-@@ -449,7 +533,15 @@ static int beagle_twl_gpio_setup(struct device *dev,
- mmc[0].gpio_wp = beagle_config.mmc1_gpio_wp;
- /* gpio + 0 is "mmc0_cd" (input/IRQ) */
- mmc[0].gpio_cd = gpio + 0;
-+#if defined(CONFIG_WL12XX) || defined(CONFIG_WL12XX_MODULE)
-+ if(!strcmp(expansionboard_name, "bbtoys-wifi")) {
-+ omap2_hsmmc_init(mmcbbt);
-+ } else {
-+ omap2_hsmmc_init(mmc);
-+ }
-+#else
- omap2_hsmmc_init(mmc);
-+#endif
-
- /*
- * TWL4030_GPIO_MAX + 0 == ledA, EHCI nEN_USB_PWR (out, XM active
-@@ -849,6 +941,17 @@ static void __init omap3_beagle_init(void)
- gpio_export(162, 1);
- }
-
-+ if(!strcmp(expansionboard_name, "bbtoys-wifi"))
-+ {
-+ if (wl12xx_set_platform_data(&omap_beagle_wlan_data))
-+ pr_err("error setting wl12xx data\n");
-+ printk(KERN_INFO "Beagle expansionboard: registering wl12xx bt platform device\n");
-+ platform_device_register(&wl12xx_device);
-+ platform_device_register(&btwilink_device);
-+ printk(KERN_INFO "Beagle expansionboard: registering wl12xx wifi platform device\n");
-+ platform_device_register(&omap_vwlan_device);
-+ }
-+
- if(!strcmp(expansionboard2_name, "bbtoys-ulcd"))
- {
- printk(KERN_INFO "Beagle second expansionboard: initializing touchscreen: tsc2007\n");
---
-1.7.7.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/beagle/0015-ASoC-omap-add-MODULE_ALIAS-to-mcbsp-and-pcm-drivers.patch b/recipes-kernel/linux/linux-mainline-3.2/beagle/0015-ASoC-omap-add-MODULE_ALIAS-to-mcbsp-and-pcm-drivers.patch
deleted file mode 100644
index cffdeb9..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/beagle/0015-ASoC-omap-add-MODULE_ALIAS-to-mcbsp-and-pcm-drivers.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From d36c69551d168b2860cd216a8554740157a606f7 Mon Sep 17 00:00:00 2001
-From: Robert Nelson <robertcnelson at gmail.com>
-Date: Tue, 3 Jan 2012 11:06:07 -0600
-Subject: [PATCH 15/16] ASoC: omap: add MODULE_ALIAS to mcbsp and pcm drivers
-
-This adds MODULE_ALIAS directives to the omap-mcbsp-dai and
-omap-pcm-audio drivers so they can be auto-loaded when platform
-devices are scanned.
-
-Signed-off-by: Mans Rullgard <mans.rullgard at linaro.org>
-Signed-off-by: Robert Nelson <robertcnelson at gmail.com>
----
- sound/soc/omap/omap-mcbsp.c | 1 +
- sound/soc/omap/omap-pcm.c | 1 +
- 2 files changed, 2 insertions(+)
-
-diff --git a/sound/soc/omap/omap-mcbsp.c b/sound/soc/omap/omap-mcbsp.c
-index 4314647..a13eb34 100644
---- a/sound/soc/omap/omap-mcbsp.c
-+++ b/sound/soc/omap/omap-mcbsp.c
-@@ -800,3 +800,4 @@ module_exit(snd_omap_mcbsp_exit);
- MODULE_AUTHOR("Jarkko Nikula <jarkko.nikula at bitmer.com>");
- MODULE_DESCRIPTION("OMAP I2S SoC Interface");
- MODULE_LICENSE("GPL");
-+MODULE_ALIAS("platform:omap-mcbsp-dai");
-diff --git a/sound/soc/omap/omap-pcm.c b/sound/soc/omap/omap-pcm.c
-index 6ede7dc..d5cffcf 100644
---- a/sound/soc/omap/omap-pcm.c
-+++ b/sound/soc/omap/omap-pcm.c
-@@ -448,3 +448,4 @@ module_exit(snd_omap_pcm_exit);
- MODULE_AUTHOR("Jarkko Nikula <jarkko.nikula at bitmer.com>");
- MODULE_DESCRIPTION("OMAP PCM DMA module");
- MODULE_LICENSE("GPL");
-+MODULE_ALIAS("platform:omap-pcm-audio");
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/beagle/0016-ASoC-omap-convert-per-board-modules-to-platform-driv.patch b/recipes-kernel/linux/linux-mainline-3.2/beagle/0016-ASoC-omap-convert-per-board-modules-to-platform-driv.patch
deleted file mode 100644
index 7865734..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/beagle/0016-ASoC-omap-convert-per-board-modules-to-platform-driv.patch
+++ /dev/null
@@ -1,1119 +0,0 @@
-From c5ae7182911a49960d2b7775c941244ac41c105c Mon Sep 17 00:00:00 2001
-From: Robert Nelson <robertcnelson at gmail.com>
-Date: Tue, 3 Jan 2012 11:03:32 -0600
-Subject: [PATCH 16/16] ASoC: omap: convert per-board modules to platform
- drivers
-
-This converts the per-board modules to platform drivers for a
-device created by in main platform setup. These drivers call
-snd_soc_register_card() directly instead of going via a "soc-audio"
-device and the corresponding driver in soc-core.
-
-Signed-off-by: Mans Rullgard <mans.rullgard at linaro.org>
-Signed-off-by: Robert Nelson <robertcnelson at gmail.com>
----
- arch/arm/mach-omap2/devices.c | 34 ++++++++++++++++++++
- sound/soc/omap/am3517evm.c | 52 ++++++++++++++++++------------
- sound/soc/omap/igep0020.c | 49 ++++++++++++++++++-----------
- sound/soc/omap/n810.c | 70 +++++++++++++++++++++++++----------------
- sound/soc/omap/omap3beagle.c | 52 ++++++++++++++++++------------
- sound/soc/omap/omap3evm.c | 53 +++++++++++++++++++------------
- sound/soc/omap/omap3pandora.c | 67 +++++++++++++++++++++++----------------
- sound/soc/omap/overo.c | 53 ++++++++++++++++++-------------
- sound/soc/omap/rx51.c | 52 +++++++++++++++++++-----------
- sound/soc/omap/sdp3430.c | 62 +++++++++++++++++++++---------------
- sound/soc/omap/sdp4430.c | 53 +++++++++++++++++++------------
- sound/soc/omap/zoom2.c | 65 ++++++++++++++++++++++++--------------
- 12 files changed, 423 insertions(+), 239 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c
-index c15cfad..0f0b320 100644
---- a/arch/arm/mach-omap2/devices.c
-+++ b/arch/arm/mach-omap2/devices.c
-@@ -285,6 +285,10 @@ static struct platform_device omap_pcm = {
- .id = -1,
- };
-
-+static struct platform_device omap_soc_audio = {
-+ .id = -1,
-+};
-+
- /*
- * OMAP2420 has 2 McBSP ports
- * OMAP2430 has 5 McBSP ports
-@@ -297,8 +301,30 @@ OMAP_MCBSP_PLATFORM_DEVICE(3);
- OMAP_MCBSP_PLATFORM_DEVICE(4);
- OMAP_MCBSP_PLATFORM_DEVICE(5);
-
-+static struct {
-+ int machine;
-+ const char *name;
-+} soc_device_names[] = {
-+ { MACH_TYPE_OMAP3517EVM, "am3517evm-soc-audio" },
-+ { MACH_TYPE_IGEP0020, "igep2-soc-audio" },
-+ { MACH_TYPE_NOKIA_N810, "n8x1-soc-audio" },
-+ { MACH_TYPE_NOKIA_N810_WIMAX, "n8x1-soc-audio" },
-+ { MACH_TYPE_OMAP3_BEAGLE, "omap3beagle-soc-audio" },
-+ { MACH_TYPE_DEVKIT8000, "omap3beagle-soc-audio" },
-+ { MACH_TYPE_OMAP3EVM, "omap3evm-soc-audio" },
-+ { MACH_TYPE_OMAP3_PANDORA, "pandora-soc-audio" },
-+ { MACH_TYPE_OVERO, "overo-soc-audio", },
-+ { MACH_TYPE_CM_T35, "overo-soc-audio", },
-+ { MACH_TYPE_NOKIA_RX51, "rx51-soc-audio", },
-+ { MACH_TYPE_OMAP_3430SDP, "sdp3430-soc-audio", },
-+ { MACH_TYPE_OMAP_4430SDP, "sdp4430-soc-audio", },
-+ { MACH_TYPE_OMAP_ZOOM2, "zoom2-soc-audio", },
-+};
-+
- static void omap_init_audio(void)
- {
-+ int i;
-+
- platform_device_register(&omap_mcbsp1);
- platform_device_register(&omap_mcbsp2);
- if (cpu_is_omap243x() || cpu_is_omap34xx() || cpu_is_omap44xx()) {
-@@ -309,6 +335,14 @@ static void omap_init_audio(void)
- platform_device_register(&omap_mcbsp5);
-
- platform_device_register(&omap_pcm);
-+
-+ for (i = 0; i < ARRAY_SIZE(soc_device_names); i++) {
-+ if (machine_arch_type == soc_device_names[i].machine) {
-+ omap_soc_audio.name = soc_device_names[i].name;
-+ platform_device_register(&omap_soc_audio);
-+ break;
-+ }
-+ }
- }
-
- #else
-diff --git a/sound/soc/omap/am3517evm.c b/sound/soc/omap/am3517evm.c
-index c1cd4a0..df8f795 100644
---- a/sound/soc/omap/am3517evm.c
-+++ b/sound/soc/omap/am3517evm.c
-@@ -116,45 +116,57 @@ static struct snd_soc_card snd_soc_am3517evm = {
- .num_dapm_routes = ARRAY_SIZE(audio_map),
- };
-
--static struct platform_device *am3517evm_snd_device;
--
--static int __init am3517evm_soc_init(void)
-+static int __devinit am3517evm_soc_probe(struct platform_device *pdev)
- {
-+ struct snd_soc_card *card = &snd_soc_am3517evm;
- int ret;
-
-- if (!machine_is_omap3517evm())
-- return -ENODEV;
- pr_info("OMAP3517 / AM3517 EVM SoC init\n");
-
-- am3517evm_snd_device = platform_device_alloc("soc-audio", -1);
-- if (!am3517evm_snd_device) {
-- printk(KERN_ERR "Platform device allocation failed\n");
-- return -ENOMEM;
-+ card->dev = &pdev->dev;
-+
-+ ret = snd_soc_register_card(card);
-+ if (ret) {
-+ dev_err(&pdev->dev, "snd_soc_register_card() failed: %d\n",
-+ ret);
-+ return ret;
- }
-
-- platform_set_drvdata(am3517evm_snd_device, &snd_soc_am3517evm);
-+ return 0;
-+}
-+
-+static int __devexit am3517evm_soc_remove(struct platform_device *pdev)
-+{
-+ struct snd_soc_card *card = platform_get_drvdata(pdev);
-
-- ret = platform_device_add(am3517evm_snd_device);
-- if (ret)
-- goto err1;
-+ snd_soc_unregister_card(card);
-
- return 0;
-+}
-+
-+static struct platform_driver am3517evm_driver = {
-+ .driver = {
-+ .name = "am3517evm-soc-audio",
-+ .owner = THIS_MODULE,
-+ },
-
--err1:
-- printk(KERN_ERR "Unable to add platform device\n");
-- platform_device_put(am3517evm_snd_device);
-+ .probe = am3517evm_soc_probe,
-+ .remove = __devexit_p(am3517evm_soc_remove),
-+};
-
-- return ret;
-+static int __init am3517evm_soc_init(void)
-+{
-+ return platform_driver_register(&am3517evm_driver);
- }
-+module_init(am3517evm_soc_init);
-
- static void __exit am3517evm_soc_exit(void)
- {
-- platform_device_unregister(am3517evm_snd_device);
-+ platform_driver_unregister(&am3517evm_driver);
- }
--
--module_init(am3517evm_soc_init);
- module_exit(am3517evm_soc_exit);
-
- MODULE_AUTHOR("Anuj Aggarwal <anuj.aggarwal at ti.com>");
- MODULE_DESCRIPTION("ALSA SoC OMAP3517 / AM3517 EVM");
- MODULE_LICENSE("GPL v2");
-+MODULE_ALIAS("platform:am3517evm-soc-audio");
-diff --git a/sound/soc/omap/igep0020.c b/sound/soc/omap/igep0020.c
-index 591fbf8..6446532 100644
---- a/sound/soc/omap/igep0020.c
-+++ b/sound/soc/omap/igep0020.c
-@@ -76,44 +76,57 @@ static struct snd_soc_card snd_soc_card_igep2 = {
- .num_links = 1,
- };
-
--static struct platform_device *igep2_snd_device;
--
--static int __init igep2_soc_init(void)
-+static int __devinit igep2_soc_probe(struct platform_device *pdev)
- {
-+ struct snd_soc_card *card = &snd_soc_card_igep2;
- int ret;
-
-- if (!machine_is_igep0020())
-- return -ENODEV;
- printk(KERN_INFO "IGEP v2 SoC init\n");
-
-- igep2_snd_device = platform_device_alloc("soc-audio", -1);
-- if (!igep2_snd_device) {
-- printk(KERN_ERR "Platform device allocation failed\n");
-- return -ENOMEM;
-+ card->dev = &pdev->dev;
-+
-+ ret = snd_soc_register_card(card);
-+ if (ret) {
-+ dev_err(&pdev->dev, "snd_soc_register_card() failed: %d\n",
-+ ret);
-+ return ret;
- }
-
-- platform_set_drvdata(igep2_snd_device, &snd_soc_card_igep2);
-+ return 0;
-+}
-
-- ret = platform_device_add(igep2_snd_device);
-- if (ret)
-- goto err1;
-+static int __devexit igep2_soc_remove(struct platform_device *pdev)
-+{
-+ struct snd_soc_card *card = platform_get_drvdata(pdev);
-+
-+ snd_soc_unregister_card(card);
-
- return 0;
-+}
-+
-+static struct platform_driver igep2_driver = {
-+ .driver = {
-+ .name = "igep2-soc-audio",
-+ .owner = THIS_MODULE,
-+ },
-
--err1:
-- printk(KERN_ERR "Unable to add platform device\n");
-- platform_device_put(igep2_snd_device);
-+ .probe = igep2_soc_probe,
-+ .remove = __devexit_p(igep2_soc_remove),
-+};
-
-- return ret;
-+static int __init igep2_soc_init(void)
-+{
-+ return platform_driver_register(&igep2_driver);
- }
- module_init(igep2_soc_init);
-
- static void __exit igep2_soc_exit(void)
- {
-- platform_device_unregister(igep2_snd_device);
-+ platform_driver_unregister(&igep2_driver);
- }
- module_exit(igep2_soc_exit);
-
- MODULE_AUTHOR("Enric Balletbo i Serra <eballetbo at iseebcn.com>");
- MODULE_DESCRIPTION("ALSA SoC IGEP v2");
- MODULE_LICENSE("GPL");
-+MODULE_ALIAS("platform:igep2-soc-audio");
-diff --git a/sound/soc/omap/n810.c b/sound/soc/omap/n810.c
-index fc6209b..1db768c 100644
---- a/sound/soc/omap/n810.c
-+++ b/sound/soc/omap/n810.c
-@@ -300,38 +300,25 @@ static struct snd_soc_card snd_soc_n810 = {
- .num_dapm_routes = ARRAY_SIZE(audio_map),
- };
-
--static struct platform_device *n810_snd_device;
--
--static int __init n810_soc_init(void)
-+static int __devinit n810_soc_probe(struct platform_device *pdev)
- {
-+ struct snd_soc_card *card = &snd_soc_n810;
-+ struct device *dev = &pdev->dev;
- int err;
-- struct device *dev;
--
-- if (!(machine_is_nokia_n810() || machine_is_nokia_n810_wimax()))
-- return -ENODEV;
--
-- n810_snd_device = platform_device_alloc("soc-audio", -1);
-- if (!n810_snd_device)
-- return -ENOMEM;
-
-- platform_set_drvdata(n810_snd_device, &snd_soc_n810);
-- err = platform_device_add(n810_snd_device);
-- if (err)
-- goto err1;
--
-- dev = &n810_snd_device->dev;
-+ card->dev = dev;
-
- sys_clkout2_src = clk_get(dev, "sys_clkout2_src");
- if (IS_ERR(sys_clkout2_src)) {
- dev_err(dev, "Could not get sys_clkout2_src clock\n");
- err = PTR_ERR(sys_clkout2_src);
-- goto err2;
-+ return err;
- }
- sys_clkout2 = clk_get(dev, "sys_clkout2");
- if (IS_ERR(sys_clkout2)) {
- dev_err(dev, "Could not get sys_clkout2\n");
- err = PTR_ERR(sys_clkout2);
-- goto err3;
-+ goto err1;
- }
- /*
- * Configure 12 MHz output on SYS_CLKOUT2. Therefore we must use
-@@ -341,7 +328,7 @@ static int __init n810_soc_init(void)
- if (IS_ERR(func96m_clk)) {
- dev_err(dev, "Could not get func 96M clock\n");
- err = PTR_ERR(func96m_clk);
-- goto err4;
-+ goto err2;
- }
- clk_set_parent(sys_clkout2_src, func96m_clk);
- clk_set_rate(sys_clkout2, 12000000);
-@@ -352,33 +339,62 @@ static int __init n810_soc_init(void)
- gpio_direction_output(N810_HEADSET_AMP_GPIO, 0);
- gpio_direction_output(N810_SPEAKER_AMP_GPIO, 0);
-
-+ err = snd_soc_register_card(card);
-+ if (err) {
-+ dev_err(&pdev->dev, "snd_soc_register_card() failed: %d\n",
-+ err);
-+ goto err3;
-+ }
-+
- return 0;
--err4:
-- clk_put(sys_clkout2);
- err3:
-- clk_put(sys_clkout2_src);
-+ clk_put(func96m_clk);
- err2:
-- platform_device_del(n810_snd_device);
-+ clk_put(sys_clkout2);
- err1:
-- platform_device_put(n810_snd_device);
-+ clk_put(sys_clkout2_src);
-
- return err;
- }
-
--static void __exit n810_soc_exit(void)
-+static int __devexit n810_soc_remove(struct platform_device *pdev)
- {
-+ struct snd_soc_card *card = platform_get_drvdata(pdev);
-+
- gpio_free(N810_SPEAKER_AMP_GPIO);
- gpio_free(N810_HEADSET_AMP_GPIO);
- clk_put(sys_clkout2_src);
- clk_put(sys_clkout2);
- clk_put(func96m_clk);
-
-- platform_device_unregister(n810_snd_device);
-+ snd_soc_unregister_card(card);
-+
-+ return 0;
- }
-
-+static struct platform_driver n810_driver = {
-+ .driver = {
-+ .name = "n8x0-soc-audio",
-+ .owner = THIS_MODULE,
-+ },
-+
-+ .probe = n810_soc_probe,
-+ .remove = __devexit_p(n810_soc_remove),
-+};
-+
-+static int __init n810_soc_init(void)
-+{
-+ return platform_driver_register(&n810_driver);
-+}
- module_init(n810_soc_init);
-+
-+static void __exit n810_soc_exit(void)
-+{
-+ platform_driver_unregister(&n810_driver);
-+}
- module_exit(n810_soc_exit);
-
- MODULE_AUTHOR("Jarkko Nikula <jarkko.nikula at bitmer.com>");
- MODULE_DESCRIPTION("ALSA SoC Nokia N810");
- MODULE_LICENSE("GPL");
-+MODULE_ALIAS("platform:n8x0-soc-audio");
-diff --git a/sound/soc/omap/omap3beagle.c b/sound/soc/omap/omap3beagle.c
-index 3357dcc..10b51d8 100644
---- a/sound/soc/omap/omap3beagle.c
-+++ b/sound/soc/omap/omap3beagle.c
-@@ -106,45 +106,57 @@ static struct snd_soc_card snd_soc_omap3beagle = {
- .num_links = 1,
- };
-
--static struct platform_device *omap3beagle_snd_device;
--
--static int __init omap3beagle_soc_init(void)
-+static int __devinit omap3beagle_soc_probe(struct platform_device *pdev)
- {
-+ struct snd_soc_card *card = &snd_soc_omap3beagle;
- int ret;
-
-- if (!(machine_is_omap3_beagle() || machine_is_devkit8000()))
-- return -ENODEV;
- pr_info("OMAP3 Beagle/Devkit8000 SoC init\n");
-
-- omap3beagle_snd_device = platform_device_alloc("soc-audio", -1);
-- if (!omap3beagle_snd_device) {
-- printk(KERN_ERR "Platform device allocation failed\n");
-- return -ENOMEM;
-+ card->dev = &pdev->dev;
-+
-+ ret = snd_soc_register_card(card);
-+ if (ret) {
-+ dev_err(&pdev->dev, "snd_soc_register_card() failed: %d\n",
-+ ret);
-+ return ret;
- }
-
-- platform_set_drvdata(omap3beagle_snd_device, &snd_soc_omap3beagle);
-+ return 0;
-+}
-+
-+static int __devexit omap3beagle_soc_remove(struct platform_device *pdev)
-+{
-+ struct snd_soc_card *card = platform_get_drvdata(pdev);
-
-- ret = platform_device_add(omap3beagle_snd_device);
-- if (ret)
-- goto err1;
-+ snd_soc_unregister_card(card);
-
- return 0;
-+}
-+
-+static struct platform_driver omap3beagle_driver = {
-+ .driver = {
-+ .name = "omap3beagle-soc-audio",
-+ .owner = THIS_MODULE,
-+ },
-
--err1:
-- printk(KERN_ERR "Unable to add platform device\n");
-- platform_device_put(omap3beagle_snd_device);
-+ .probe = omap3beagle_soc_probe,
-+ .remove = __devexit_p(omap3beagle_soc_remove),
-+};
-
-- return ret;
-+static int __init omap3beagle_soc_init(void)
-+{
-+ return platform_driver_register(&omap3beagle_driver);
- }
-+module_init(omap3beagle_soc_init);
-
- static void __exit omap3beagle_soc_exit(void)
- {
-- platform_device_unregister(omap3beagle_snd_device);
-+ platform_driver_unregister(&omap3beagle_driver);
- }
--
--module_init(omap3beagle_soc_init);
- module_exit(omap3beagle_soc_exit);
-
- MODULE_AUTHOR("Steve Sakoman <steve at sakoman.com>");
- MODULE_DESCRIPTION("ALSA SoC OMAP3 Beagle");
- MODULE_LICENSE("GPL");
-+MODULE_ALIAS("platform:omap3beagle-soc-audio");
-diff --git a/sound/soc/omap/omap3evm.c b/sound/soc/omap/omap3evm.c
-index 6857895..3b95cea 100644
---- a/sound/soc/omap/omap3evm.c
-+++ b/sound/soc/omap/omap3evm.c
-@@ -74,44 +74,57 @@ static struct snd_soc_card snd_soc_omap3evm = {
- .num_links = 1,
- };
-
--static struct platform_device *omap3evm_snd_device;
--
--static int __init omap3evm_soc_init(void)
-+static int __devinit omap3evm_soc_probe(struct platform_device *pdev)
- {
-+ struct snd_soc_card *card = &snd_soc_omap3evm;
- int ret;
-
-- if (!machine_is_omap3evm())
-- return -ENODEV;
- pr_info("OMAP3 EVM SoC init\n");
-
-- omap3evm_snd_device = platform_device_alloc("soc-audio", -1);
-- if (!omap3evm_snd_device) {
-- printk(KERN_ERR "Platform device allocation failed\n");
-- return -ENOMEM;
-+ card->dev = &pdev->dev;
-+
-+ ret = snd_soc_register_card(card);
-+ if (ret) {
-+ dev_err(&pdev->dev, "snd_soc_register_card() failed: %d\n",
-+ ret);
-+ return ret;
- }
-
-- platform_set_drvdata(omap3evm_snd_device, &snd_soc_omap3evm);
-- ret = platform_device_add(omap3evm_snd_device);
-- if (ret)
-- goto err1;
-+ return 0;
-+}
-+
-+static int __devexit omap3evm_soc_remove(struct platform_device *pdev)
-+{
-+ struct snd_soc_card *card = platform_get_drvdata(pdev);
-+
-+ snd_soc_unregister_card(card);
-
- return 0;
-+}
-+
-+static struct platform_driver omap3evm_driver = {
-+ .driver = {
-+ .name = "omap3evm-soc-audio",
-+ .owner = THIS_MODULE,
-+ },
-
--err1:
-- printk(KERN_ERR "Unable to add platform device\n");
-- platform_device_put(omap3evm_snd_device);
-+ .probe = omap3evm_soc_probe,
-+ .remove = __devexit_p(omap3evm_soc_remove),
-+};
-
-- return ret;
-+static int __init omap3evm_soc_init(void)
-+{
-+ return platform_driver_register(&omap3evm_driver);
- }
-+module_init(omap3evm_soc_init);
-
- static void __exit omap3evm_soc_exit(void)
- {
-- platform_device_unregister(omap3evm_snd_device);
-+ platform_driver_unregister(&omap3evm_driver);
- }
--
--module_init(omap3evm_soc_init);
- module_exit(omap3evm_soc_exit);
-
- MODULE_AUTHOR("Anuj Aggarwal <anuj.aggarwal at ti.com>");
- MODULE_DESCRIPTION("ALSA SoC OMAP3 EVM");
- MODULE_LICENSE("GPL v2");
-+MODULE_ALIAS("platform:omap3evm-soc-audio");
-diff --git a/sound/soc/omap/omap3pandora.c b/sound/soc/omap/omap3pandora.c
-index 7605c37..fd289a4 100644
---- a/sound/soc/omap/omap3pandora.c
-+++ b/sound/soc/omap/omap3pandora.c
-@@ -237,17 +237,15 @@ static struct snd_soc_card snd_soc_card_omap3pandora = {
- .num_links = ARRAY_SIZE(omap3pandora_dai),
- };
-
--static struct platform_device *omap3pandora_snd_device;
--
--static int __init omap3pandora_soc_init(void)
-+static int __devinit omap3pandora_soc_probe(struct platform_device *pdev)
- {
-+ struct snd_soc_card *card = &snd_soc_card_omap3pandora;
- int ret;
-
-- if (!machine_is_omap3_pandora())
-- return -ENODEV;
--
- pr_info("OMAP3 Pandora SoC init\n");
-
-+ card->dev = &pdev->dev;
-+
- ret = gpio_request(OMAP3_PANDORA_DAC_POWER_GPIO, "dac_power");
- if (ret) {
- pr_err(PREFIX "Failed to get DAC power GPIO\n");
-@@ -272,53 +270,68 @@ static int __init omap3pandora_soc_init(void)
- goto fail1;
- }
-
-- omap3pandora_snd_device = platform_device_alloc("soc-audio", -1);
-- if (omap3pandora_snd_device == NULL) {
-- pr_err(PREFIX "Platform device allocation failed\n");
-- ret = -ENOMEM;
-- goto fail1;
-- }
--
-- platform_set_drvdata(omap3pandora_snd_device, &snd_soc_card_omap3pandora);
--
-- ret = platform_device_add(omap3pandora_snd_device);
-+ ret = snd_soc_register_card(card);
- if (ret) {
-- pr_err(PREFIX "Unable to add platform device\n");
-- goto fail2;
-+ dev_err(&pdev->dev, "snd_soc_register_card() failed: %d\n",
-+ ret);
-+ goto fail1;
- }
-
-- omap3pandora_dac_reg = regulator_get(&omap3pandora_snd_device->dev, "vcc");
-+ omap3pandora_dac_reg = regulator_get(card->dev, "vcc");
- if (IS_ERR(omap3pandora_dac_reg)) {
- pr_err(PREFIX "Failed to get DAC regulator from %s: %ld\n",
-- dev_name(&omap3pandora_snd_device->dev),
-+ dev_name(card->dev),
- PTR_ERR(omap3pandora_dac_reg));
- ret = PTR_ERR(omap3pandora_dac_reg);
-- goto fail3;
-+ goto fail2;
- }
-
- return 0;
-
--fail3:
-- platform_device_del(omap3pandora_snd_device);
- fail2:
-- platform_device_put(omap3pandora_snd_device);
-+ snd_soc_unregister_card(card);
- fail1:
- gpio_free(OMAP3_PANDORA_AMP_POWER_GPIO);
- fail0:
- gpio_free(OMAP3_PANDORA_DAC_POWER_GPIO);
- return ret;
- }
--module_init(omap3pandora_soc_init);
-
--static void __exit omap3pandora_soc_exit(void)
-+static int __devexit omap3pandora_soc_remove(struct platform_device *pdev)
- {
-+ struct snd_soc_card *card = platform_get_drvdata(pdev);
-+
- regulator_put(omap3pandora_dac_reg);
-- platform_device_unregister(omap3pandora_snd_device);
-+ snd_soc_unregister_card(card);
- gpio_free(OMAP3_PANDORA_AMP_POWER_GPIO);
- gpio_free(OMAP3_PANDORA_DAC_POWER_GPIO);
-+
-+ return 0;
-+}
-+
-+static struct platform_driver omap3pandora_driver = {
-+ .driver = {
-+ .name = "pandora-soc-audio",
-+ .owner = THIS_MODULE,
-+ },
-+
-+ .probe = omap3pandora_soc_probe,
-+ .remove = __devexit_p(omap3pandora_soc_remove),
-+};
-+
-+static int __init omap3pandora_soc_init(void)
-+{
-+ return platform_driver_register(&omap3pandora_driver);
-+}
-+module_init(omap3pandora_soc_init);
-+
-+static void __exit omap3pandora_soc_exit(void)
-+{
-+ platform_driver_unregister(&omap3pandora_driver);
- }
- module_exit(omap3pandora_soc_exit);
-
- MODULE_AUTHOR("Grazvydas Ignotas <notasas at gmail.com>");
- MODULE_DESCRIPTION("ALSA SoC OMAP3 Pandora");
- MODULE_LICENSE("GPL");
-+MODULE_ALIAS("platform:pandora-soc-audio");
-diff --git a/sound/soc/omap/overo.c b/sound/soc/omap/overo.c
-index c3550ae..fe8fd5e 100644
---- a/sound/soc/omap/overo.c
-+++ b/sound/soc/omap/overo.c
-@@ -76,46 +76,57 @@ static struct snd_soc_card snd_soc_card_overo = {
- .num_links = 1,
- };
-
--static struct platform_device *overo_snd_device;
--
--static int __init overo_soc_init(void)
-+static int __devinit overo_soc_probe(struct platform_device *pdev)
- {
-+ struct snd_soc_card *card = &snd_soc_card_overo;
- int ret;
-
-- if (!(machine_is_overo() || machine_is_cm_t35())) {
-- pr_debug("Incomatible machine!\n");
-- return -ENODEV;
-- }
-- printk(KERN_INFO "overo SoC init\n");
-+ pr_info("overo SoC init\n");
-+
-+ card->dev = &pdev->dev;
-
-- overo_snd_device = platform_device_alloc("soc-audio", -1);
-- if (!overo_snd_device) {
-- printk(KERN_ERR "Platform device allocation failed\n");
-- return -ENOMEM;
-+ ret = snd_soc_register_card(card);
-+ if (ret) {
-+ dev_err(&pdev->dev, "snd_soc_register_card() failed: %d\n",
-+ ret);
-+ return ret;
- }
-
-- platform_set_drvdata(overo_snd_device, &snd_soc_card_overo);
-+ return 0;
-+}
-+
-+static int __devexit overo_soc_remove(struct platform_device *pdev)
-+{
-+ struct snd_soc_card *card = platform_get_drvdata(pdev);
-
-- ret = platform_device_add(overo_snd_device);
-- if (ret)
-- goto err1;
-+ snd_soc_unregister_card(card);
-
- return 0;
-+}
-
--err1:
-- printk(KERN_ERR "Unable to add platform device\n");
-- platform_device_put(overo_snd_device);
-+static struct platform_driver overo_driver = {
-+ .driver = {
-+ .name = "overo-soc-audio",
-+ .owner = THIS_MODULE,
-+ },
-
-- return ret;
-+ .probe = overo_soc_probe,
-+ .remove = __devexit_p(overo_soc_remove),
-+};
-+
-+static int __init overo_soc_init(void)
-+{
-+ return platform_driver_register(&overo_driver);
- }
- module_init(overo_soc_init);
-
- static void __exit overo_soc_exit(void)
- {
-- platform_device_unregister(overo_snd_device);
-+ platform_driver_unregister(&overo_driver);
- }
- module_exit(overo_soc_exit);
-
- MODULE_AUTHOR("Steve Sakoman <steve at sakoman.com>");
- MODULE_DESCRIPTION("ALSA SoC overo");
- MODULE_LICENSE("GPL");
-+MODULE_ALIAS("platform:overo-soc-audio");
-diff --git a/sound/soc/omap/rx51.c b/sound/soc/omap/rx51.c
-index 4cabb74..aca084d 100644
---- a/sound/soc/omap/rx51.c
-+++ b/sound/soc/omap/rx51.c
-@@ -391,14 +391,12 @@ static struct snd_soc_card rx51_sound_card = {
- .num_configs = ARRAY_SIZE(rx51_codec_conf),
- };
-
--static struct platform_device *rx51_snd_device;
--
--static int __init rx51_soc_init(void)
-+static int __devinit rx51_soc_probe(struct platform_device *pdev)
- {
-+ struct snd_soc_card *card = &rx51_sound_card;
- int err;
-
-- if (!machine_is_nokia_rx51())
-- return -ENODEV;
-+ card->dev = &pdev->dev;
-
- err = gpio_request_one(RX51_TVOUT_SEL_GPIO,
- GPIOF_DIR_OUT | GPIOF_INIT_LOW, "tvout_sel");
-@@ -409,21 +407,14 @@ static int __init rx51_soc_init(void)
- if (err)
- goto err_gpio_eci_sw;
-
-- rx51_snd_device = platform_device_alloc("soc-audio", -1);
-- if (!rx51_snd_device) {
-- err = -ENOMEM;
-+ err = snd_soc_register_card(card);
-+ if (err) {
-+ dev_err(&pdev->dev, "snd_soc_register_card() failed: %d\n",
-+ err);
- goto err1;
- }
-
-- platform_set_drvdata(rx51_snd_device, &rx51_sound_card);
--
-- err = platform_device_add(rx51_snd_device);
-- if (err)
-- goto err2;
--
- return 0;
--err2:
-- platform_device_put(rx51_snd_device);
- err1:
- gpio_free(RX51_ECI_SW_GPIO);
- err_gpio_eci_sw:
-@@ -433,19 +424,44 @@ err_gpio_tvout_sel:
- return err;
- }
-
--static void __exit rx51_soc_exit(void)
-+static int __devexit rx51_soc_remove(struct platform_device *pdev)
- {
-+ struct snd_soc_card *card = platform_get_drvdata(pdev);
-+
- snd_soc_jack_free_gpios(&rx51_av_jack, ARRAY_SIZE(rx51_av_jack_gpios),
- rx51_av_jack_gpios);
-
-- platform_device_unregister(rx51_snd_device);
-+ snd_soc_unregister_card(card);
-+
- gpio_free(RX51_ECI_SW_GPIO);
- gpio_free(RX51_TVOUT_SEL_GPIO);
-+
-+ return 0;
- }
-
-+static struct platform_driver rx51_driver = {
-+ .driver = {
-+ .name = "rx51-soc-audio",
-+ .owner = THIS_MODULE,
-+ },
-+
-+ .probe = rx51_soc_probe,
-+ .remove = __devexit_p(rx51_soc_remove),
-+};
-+
-+static int __init rx51_soc_init(void)
-+{
-+ return platform_driver_register(&rx51_driver);
-+}
- module_init(rx51_soc_init);
-+
-+static void __exit rx51_soc_exit(void)
-+{
-+ platform_driver_unregister(&rx51_driver);
-+}
- module_exit(rx51_soc_exit);
-
- MODULE_AUTHOR("Nokia Corporation");
- MODULE_DESCRIPTION("ALSA SoC Nokia RX-51");
- MODULE_LICENSE("GPL");
-+MODULE_ALIAS("platform:rx51-soc-audio");
-diff --git a/sound/soc/omap/sdp3430.c b/sound/soc/omap/sdp3430.c
-index e8fbf8e..09fd5bd 100644
---- a/sound/soc/omap/sdp3430.c
-+++ b/sound/soc/omap/sdp3430.c
-@@ -222,24 +222,15 @@ static struct snd_soc_card snd_soc_sdp3430 = {
- .num_dapm_routes = ARRAY_SIZE(audio_map),
- };
-
--static struct platform_device *sdp3430_snd_device;
--
--static int __init sdp3430_soc_init(void)
-+static int __devinit sdp3430_soc_probe(struct platform_device *pdev)
- {
-+ struct snd_soc_card *card = &snd_soc_sdp3430;
- int ret;
- u8 pin_mux;
-
-- if (!machine_is_omap_3430sdp())
-- return -ENODEV;
-- printk(KERN_INFO "SDP3430 SoC init\n");
--
-- sdp3430_snd_device = platform_device_alloc("soc-audio", -1);
-- if (!sdp3430_snd_device) {
-- printk(KERN_ERR "Platform device allocation failed\n");
-- return -ENOMEM;
-- }
-+ pr_info("SDP3430 SoC init\n");
-
-- platform_set_drvdata(sdp3430_snd_device, &snd_soc_sdp3430);
-+ card->dev = &pdev->dev;
-
- /* Set TWL4030 GPIO6 as EXTMUTE signal */
- twl_i2c_read_u8(TWL4030_MODULE_INTBR, &pin_mux,
-@@ -249,30 +240,51 @@ static int __init sdp3430_soc_init(void)
- twl_i2c_write_u8(TWL4030_MODULE_INTBR, pin_mux,
- TWL4030_INTBR_PMBR1);
-
-- ret = platform_device_add(sdp3430_snd_device);
-- if (ret)
-- goto err1;
-+ ret = snd_soc_register_card(card);
-+ if (ret) {
-+ dev_err(&pdev->dev, "snd_soc_register_card() failed: %d\n",
-+ ret);
-+ return ret;
-+ }
-
- return 0;
-+}
-
--err1:
-- printk(KERN_ERR "Unable to add platform device\n");
-- platform_device_put(sdp3430_snd_device);
-+static int __devexit sdp3430_soc_remove(struct platform_device *pdev)
-+{
-+ struct snd_soc_card *card = platform_get_drvdata(pdev);
-
-- return ret;
-+ snd_soc_jack_free_gpios(&hs_jack, ARRAY_SIZE(hs_jack_gpios),
-+ hs_jack_gpios);
-+
-+ snd_soc_unregister_card(card);
-+
-+ return 0;
-+}
-+
-+static struct platform_driver sdp3430_driver = {
-+ .driver = {
-+ .name = "sdp3430-soc-audio",
-+ .owner = THIS_MODULE,
-+ },
-+
-+ .probe = sdp3430_soc_probe,
-+ .remove = __devexit_p(sdp3430_soc_remove),
-+};
-+
-+static int __init sdp3430_soc_init(void)
-+{
-+ return platform_driver_register(&sdp3430_driver);
- }
- module_init(sdp3430_soc_init);
-
- static void __exit sdp3430_soc_exit(void)
- {
-- snd_soc_jack_free_gpios(&hs_jack, ARRAY_SIZE(hs_jack_gpios),
-- hs_jack_gpios);
--
-- platform_device_unregister(sdp3430_snd_device);
-+ platform_driver_unregister(&sdp3430_driver);
- }
- module_exit(sdp3430_soc_exit);
-
- MODULE_AUTHOR("Misael Lopez Cruz <x0052729 at ti.com>");
- MODULE_DESCRIPTION("ALSA SoC SDP3430");
- MODULE_LICENSE("GPL");
--
-+MODULE_ALIAS("platform:sdp3430-soc-audio");
-diff --git a/sound/soc/omap/sdp4430.c b/sound/soc/omap/sdp4430.c
-index 03d9fa4..b3a05b1 100644
---- a/sound/soc/omap/sdp4430.c
-+++ b/sound/soc/omap/sdp4430.c
-@@ -172,44 +172,57 @@ static struct snd_soc_card snd_soc_sdp4430 = {
- .num_dapm_routes = ARRAY_SIZE(audio_map),
- };
-
--static struct platform_device *sdp4430_snd_device;
--
--static int __init sdp4430_soc_init(void)
-+static int __devinit sdp4430_soc_probe(struct platform_device *pdev)
- {
-+ struct snd_soc_card *card = &snd_soc_sdp4430;
- int ret;
-
-- if (!machine_is_omap_4430sdp())
-- return -ENODEV;
-- printk(KERN_INFO "SDP4430 SoC init\n");
-+ pr_info("SDP4430 SoC init\n");
-+
-+ card->dev = &pdev->dev;
-
-- sdp4430_snd_device = platform_device_alloc("soc-audio", -1);
-- if (!sdp4430_snd_device) {
-- printk(KERN_ERR "Platform device allocation failed\n");
-- return -ENOMEM;
-+ ret = snd_soc_register_card(card);
-+ if (ret) {
-+ dev_err(&pdev->dev, "snd_soc_register_card() failed: %d\n",
-+ ret);
-+ return ret;
- }
-
-- platform_set_drvdata(sdp4430_snd_device, &snd_soc_sdp4430);
-+ return 0;
-+}
-
-- ret = platform_device_add(sdp4430_snd_device);
-- if (ret)
-- goto err;
-+static int __devexit sdp4430_soc_remove(struct platform_device *pdev)
-+{
-+ struct snd_soc_card *card = platform_get_drvdata(pdev);
-+
-+ snd_soc_unregister_card(card);
-
- return 0;
-+}
-
--err:
-- printk(KERN_ERR "Unable to add platform device\n");
-- platform_device_put(sdp4430_snd_device);
-- return ret;
-+static struct platform_driver sdp4430_driver = {
-+ .driver = {
-+ .name = "sdp4430-soc-audio",
-+ .owner = THIS_MODULE,
-+ },
-+
-+ .probe = sdp4430_soc_probe,
-+ .remove = __devexit_p(sdp4430_soc_remove),
-+};
-+
-+static int __init sdp4430_soc_init(void)
-+{
-+ return platform_driver_register(&sdp4430_driver);
- }
- module_init(sdp4430_soc_init);
-
- static void __exit sdp4430_soc_exit(void)
- {
-- platform_device_unregister(sdp4430_snd_device);
-+ platform_driver_unregister(&sdp4430_driver);
- }
- module_exit(sdp4430_soc_exit);
-
- MODULE_AUTHOR("Misael Lopez Cruz <x0052729 at ti.com>");
- MODULE_DESCRIPTION("ALSA SoC SDP4430");
- MODULE_LICENSE("GPL");
--
-+MODULE_ALIAS("platform:sdp4430-soc-audio");
-diff --git a/sound/soc/omap/zoom2.c b/sound/soc/omap/zoom2.c
-index 7641a7f..8db8e10 100644
---- a/sound/soc/omap/zoom2.c
-+++ b/sound/soc/omap/zoom2.c
-@@ -166,26 +166,14 @@ static struct snd_soc_card snd_soc_zoom2 = {
- .num_dapm_routes = ARRAY_SIZE(audio_map),
- };
-
--static struct platform_device *zoom2_snd_device;
--
--static int __init zoom2_soc_init(void)
-+static int __devinit zoom2_soc_probe(struct platform_device *pdev)
- {
-+ struct snd_soc_card *card = &snd_soc_zoom2;
- int ret;
-
-- if (!machine_is_omap_zoom2())
-- return -ENODEV;
-- printk(KERN_INFO "Zoom2 SoC init\n");
--
-- zoom2_snd_device = platform_device_alloc("soc-audio", -1);
-- if (!zoom2_snd_device) {
-- printk(KERN_ERR "Platform device allocation failed\n");
-- return -ENOMEM;
-- }
-+ pr_info("Zoom2 SoC init\n");
-
-- platform_set_drvdata(zoom2_snd_device, &snd_soc_zoom2);
-- ret = platform_device_add(zoom2_snd_device);
-- if (ret)
-- goto err1;
-+ card->dev = &pdev->dev;
-
- BUG_ON(gpio_request(ZOOM2_HEADSET_MUX_GPIO, "hs_mux") < 0);
- gpio_direction_output(ZOOM2_HEADSET_MUX_GPIO, 0);
-@@ -193,26 +181,57 @@ static int __init zoom2_soc_init(void)
- BUG_ON(gpio_request(ZOOM2_HEADSET_EXTMUTE_GPIO, "ext_mute") < 0);
- gpio_direction_output(ZOOM2_HEADSET_EXTMUTE_GPIO, 0);
-
-+ ret = snd_soc_register_card(card);
-+ if (ret) {
-+ dev_err(&pdev->dev, "snd_soc_register_card() failed: %d\n",
-+ ret);
-+ goto err;
-+ }
-+
- return 0;
-
--err1:
-- printk(KERN_ERR "Unable to add platform device\n");
-- platform_device_put(zoom2_snd_device);
-+err:
-+ gpio_free(ZOOM2_HEADSET_MUX_GPIO);
-+ gpio_free(ZOOM2_HEADSET_EXTMUTE_GPIO);
-
- return ret;
- }
--module_init(zoom2_soc_init);
-
--static void __exit zoom2_soc_exit(void)
-+static int __devexit zoom2_soc_remove(struct platform_device *pdev)
- {
-+ struct snd_soc_card *card = platform_get_drvdata(pdev);
-+
-+ snd_soc_unregister_card(card);
-+
- gpio_free(ZOOM2_HEADSET_MUX_GPIO);
- gpio_free(ZOOM2_HEADSET_EXTMUTE_GPIO);
-
-- platform_device_unregister(zoom2_snd_device);
-+ return 0;
-+}
-+
-+static struct platform_driver zoom2_driver = {
-+ .driver = {
-+ .name = "zoom2-soc-audio",
-+ .owner = THIS_MODULE,
-+ },
-+
-+ .probe = zoom2_soc_probe,
-+ .remove = __devexit_p(zoom2_soc_remove),
-+};
-+
-+static int __init zoom2_soc_init(void)
-+{
-+ return platform_driver_register(&zoom2_driver);
-+}
-+module_init(zoom2_soc_init);
-+
-+static void __exit zoom2_soc_exit(void)
-+{
-+ platform_driver_unregister(&zoom2_driver);
- }
- module_exit(zoom2_soc_exit);
-
- MODULE_AUTHOR("Misael Lopez Cruz <x0052729 at ti.com>");
- MODULE_DESCRIPTION("ALSA SoC Zoom2");
- MODULE_LICENSE("GPL");
--
-+MODULE_ALIAS("platform:zoom2-soc-audio");
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/beagleboard/defconfig b/recipes-kernel/linux/linux-mainline-3.2/beagleboard/defconfig
deleted file mode 100644
index 28f096c..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/beagleboard/defconfig
+++ /dev/null
@@ -1,4274 +0,0 @@
-#
-# Automatically generated file; DO NOT EDIT.
-# Linux/arm 3.2.18 Kernel Configuration
-#
-CONFIG_ARM=y
-CONFIG_SYS_SUPPORTS_APM_EMULATION=y
-CONFIG_HAVE_SCHED_CLOCK=y
-CONFIG_GENERIC_GPIO=y
-# CONFIG_ARCH_USES_GETTIMEOFFSET is not set
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_KTIME_SCALAR=y
-CONFIG_HAVE_PROC_CPU=y
-CONFIG_STACKTRACE_SUPPORT=y
-CONFIG_HAVE_LATENCYTOP_SUPPORT=y
-CONFIG_LOCKDEP_SUPPORT=y
-CONFIG_TRACE_IRQFLAGS_SUPPORT=y
-CONFIG_HARDIRQS_SW_RESEND=y
-CONFIG_GENERIC_IRQ_PROBE=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_ARCH_HAS_CPUFREQ=y
-CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_NEED_DMA_MAP_STATE=y
-CONFIG_VECTORS_BASE=0xffff0000
-CONFIG_ARM_PATCH_PHYS_VIRT=y
-CONFIG_GENERIC_BUG=y
-CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-CONFIG_HAVE_IRQ_WORK=y
-CONFIG_IRQ_WORK=y
-
-#
-# General setup
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-CONFIG_CROSS_COMPILE=""
-CONFIG_LOCALVERSION=""
-# CONFIG_LOCALVERSION_AUTO is not set
-CONFIG_HAVE_KERNEL_GZIP=y
-CONFIG_HAVE_KERNEL_LZMA=y
-CONFIG_HAVE_KERNEL_LZO=y
-# CONFIG_KERNEL_GZIP is not set
-# CONFIG_KERNEL_LZMA is not set
-CONFIG_KERNEL_LZO=y
-CONFIG_DEFAULT_HOSTNAME="beagleboard"
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-CONFIG_SYSVIPC_SYSCTL=y
-CONFIG_POSIX_MQUEUE=y
-CONFIG_POSIX_MQUEUE_SYSCTL=y
-CONFIG_BSD_PROCESS_ACCT=y
-CONFIG_BSD_PROCESS_ACCT_V3=y
-CONFIG_FHANDLE=y
-CONFIG_TASKSTATS=y
-CONFIG_TASK_DELAY_ACCT=y
-CONFIG_TASK_XACCT=y
-CONFIG_TASK_IO_ACCOUNTING=y
-CONFIG_AUDIT=y
-CONFIG_HAVE_GENERIC_HARDIRQS=y
-
-#
-# IRQ subsystem
-#
-CONFIG_GENERIC_HARDIRQS=y
-CONFIG_HAVE_SPARSE_IRQ=y
-CONFIG_GENERIC_IRQ_SHOW=y
-CONFIG_GENERIC_IRQ_CHIP=y
-CONFIG_IRQ_DOMAIN=y
-CONFIG_SPARSE_IRQ=y
-
-#
-# RCU Subsystem
-#
-CONFIG_TINY_RCU=y
-# CONFIG_PREEMPT_RCU is not set
-# CONFIG_RCU_TRACE is not set
-# CONFIG_TREE_RCU_TRACE is not set
-CONFIG_IKCONFIG=y
-CONFIG_IKCONFIG_PROC=y
-CONFIG_LOG_BUF_SHIFT=17
-CONFIG_CGROUPS=y
-# CONFIG_CGROUP_DEBUG is not set
-CONFIG_CGROUP_FREEZER=y
-CONFIG_CGROUP_DEVICE=y
-CONFIG_CPUSETS=y
-CONFIG_PROC_PID_CPUSET=y
-CONFIG_CGROUP_CPUACCT=y
-CONFIG_RESOURCE_COUNTERS=y
-CONFIG_CGROUP_MEM_RES_CTLR=y
-CONFIG_CGROUP_MEM_RES_CTLR_SWAP=y
-CONFIG_CGROUP_MEM_RES_CTLR_SWAP_ENABLED=y
-CONFIG_CGROUP_PERF=y
-CONFIG_CGROUP_SCHED=y
-CONFIG_FAIR_GROUP_SCHED=y
-# CONFIG_CFS_BANDWIDTH is not set
-CONFIG_RT_GROUP_SCHED=y
-CONFIG_BLK_CGROUP=y
-# CONFIG_DEBUG_BLK_CGROUP is not set
-CONFIG_NAMESPACES=y
-CONFIG_UTS_NS=y
-CONFIG_IPC_NS=y
-CONFIG_USER_NS=y
-CONFIG_PID_NS=y
-CONFIG_NET_NS=y
-CONFIG_SCHED_AUTOGROUP=y
-CONFIG_MM_OWNER=y
-# CONFIG_SYSFS_DEPRECATED is not set
-CONFIG_RELAY=y
-CONFIG_BLK_DEV_INITRD=y
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_RD_GZIP=y
-CONFIG_RD_BZIP2=y
-CONFIG_RD_LZMA=y
-CONFIG_RD_XZ=y
-CONFIG_RD_LZO=y
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_SYSCTL=y
-CONFIG_ANON_INODES=y
-CONFIG_EXPERT=y
-CONFIG_UID16=y
-CONFIG_SYSCTL_SYSCALL=y
-CONFIG_KALLSYMS=y
-CONFIG_KALLSYMS_ALL=y
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_EPOLL=y
-CONFIG_SIGNALFD=y
-CONFIG_TIMERFD=y
-CONFIG_EVENTFD=y
-CONFIG_SHMEM=y
-CONFIG_AIO=y
-CONFIG_EMBEDDED=y
-CONFIG_HAVE_PERF_EVENTS=y
-CONFIG_PERF_USE_VMALLOC=y
-
-#
-# Kernel Performance Events And Counters
-#
-CONFIG_PERF_EVENTS=y
-CONFIG_PERF_COUNTERS=y
-# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
-CONFIG_VM_EVENT_COUNTERS=y
-CONFIG_SLUB_DEBUG=y
-# CONFIG_COMPAT_BRK is not set
-# CONFIG_SLAB is not set
-CONFIG_SLUB=y
-# CONFIG_SLOB is not set
-CONFIG_PROFILING=y
-CONFIG_TRACEPOINTS=y
-CONFIG_OPROFILE=y
-CONFIG_HAVE_OPROFILE=y
-CONFIG_KPROBES=y
-CONFIG_KRETPROBES=y
-CONFIG_HAVE_KPROBES=y
-CONFIG_HAVE_KRETPROBES=y
-CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
-CONFIG_HAVE_CLK=y
-CONFIG_HAVE_DMA_API_DEBUG=y
-CONFIG_HAVE_HW_BREAKPOINT=y
-
-#
-# GCOV-based kernel profiling
-#
-# CONFIG_GCOV_KERNEL is not set
-CONFIG_HAVE_GENERIC_DMA_COHERENT=y
-CONFIG_SLABINFO=y
-CONFIG_RT_MUTEXES=y
-CONFIG_BASE_SMALL=0
-CONFIG_MODULES=y
-CONFIG_MODULE_FORCE_LOAD=y
-CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-CONFIG_MODVERSIONS=y
-CONFIG_MODULE_SRCVERSION_ALL=y
-CONFIG_BLOCK=y
-CONFIG_LBDAF=y
-CONFIG_BLK_DEV_BSG=y
-CONFIG_BLK_DEV_BSGLIB=y
-CONFIG_BLK_DEV_INTEGRITY=y
-CONFIG_BLK_DEV_THROTTLING=y
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_DEADLINE=y
-CONFIG_IOSCHED_CFQ=y
-CONFIG_CFQ_GROUP_IOSCHED=y
-# CONFIG_DEFAULT_DEADLINE is not set
-CONFIG_DEFAULT_CFQ=y
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="cfq"
-# CONFIG_INLINE_SPIN_TRYLOCK is not set
-# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
-# CONFIG_INLINE_SPIN_LOCK is not set
-# CONFIG_INLINE_SPIN_LOCK_BH is not set
-# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
-# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
-CONFIG_INLINE_SPIN_UNLOCK=y
-# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
-CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
-# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
-# CONFIG_INLINE_READ_TRYLOCK is not set
-# CONFIG_INLINE_READ_LOCK is not set
-# CONFIG_INLINE_READ_LOCK_BH is not set
-# CONFIG_INLINE_READ_LOCK_IRQ is not set
-# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
-CONFIG_INLINE_READ_UNLOCK=y
-# CONFIG_INLINE_READ_UNLOCK_BH is not set
-CONFIG_INLINE_READ_UNLOCK_IRQ=y
-# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
-# CONFIG_INLINE_WRITE_TRYLOCK is not set
-# CONFIG_INLINE_WRITE_LOCK is not set
-# CONFIG_INLINE_WRITE_LOCK_BH is not set
-# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
-# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
-CONFIG_INLINE_WRITE_UNLOCK=y
-# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
-CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
-# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
-# CONFIG_MUTEX_SPIN_ON_OWNER is not set
-CONFIG_FREEZER=y
-
-#
-# System Type
-#
-CONFIG_MMU=y
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_VEXPRESS is not set
-# CONFIG_ARCH_AT91 is not set
-# CONFIG_ARCH_BCMRING is not set
-# CONFIG_ARCH_HIGHBANK is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CNS3XXX is not set
-# CONFIG_ARCH_GEMINI is not set
-# CONFIG_ARCH_PRIMA2 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_EP93XX is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_MXC is not set
-# CONFIG_ARCH_MXS is not set
-# CONFIG_ARCH_NETX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_IOP13XX is not set
-# CONFIG_ARCH_IOP32X is not set
-# CONFIG_ARCH_IOP33X is not set
-# CONFIG_ARCH_IXP23XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_DOVE is not set
-# CONFIG_ARCH_KIRKWOOD is not set
-# CONFIG_ARCH_LPC32XX is not set
-# CONFIG_ARCH_MV78XX0 is not set
-# CONFIG_ARCH_ORION5X is not set
-# CONFIG_ARCH_MMP is not set
-# CONFIG_ARCH_KS8695 is not set
-# CONFIG_ARCH_W90X900 is not set
-# CONFIG_ARCH_TEGRA is not set
-# CONFIG_ARCH_PICOXCELL is not set
-# CONFIG_ARCH_PNX4008 is not set
-# CONFIG_ARCH_PXA is not set
-# CONFIG_ARCH_MSM is not set
-# CONFIG_ARCH_SHMOBILE is not set
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_S3C2410 is not set
-# CONFIG_ARCH_S3C64XX is not set
-# CONFIG_ARCH_S5P64X0 is not set
-# CONFIG_ARCH_S5PC100 is not set
-# CONFIG_ARCH_S5PV210 is not set
-# CONFIG_ARCH_EXYNOS is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_TCC_926 is not set
-# CONFIG_ARCH_U300 is not set
-# CONFIG_ARCH_U8500 is not set
-# CONFIG_ARCH_NOMADIK is not set
-# CONFIG_ARCH_DAVINCI is not set
-CONFIG_ARCH_OMAP=y
-# CONFIG_PLAT_SPEAR is not set
-# CONFIG_ARCH_VT8500 is not set
-# CONFIG_ARCH_ZYNQ is not set
-# CONFIG_GPIO_PCA953X is not set
-CONFIG_KEYBOARD_GPIO_POLLED=m
-
-#
-# TI OMAP Common Features
-#
-CONFIG_ARCH_OMAP_OTG=y
-# CONFIG_ARCH_OMAP1 is not set
-CONFIG_ARCH_OMAP2PLUS=y
-
-#
-# OMAP Feature Selections
-#
-CONFIG_OMAP_SMARTREFLEX=y
-CONFIG_OMAP_SMARTREFLEX_CLASS3=y
-CONFIG_OMAP_RESET_CLOCKS=y
-CONFIG_OMAP_MUX=y
-CONFIG_OMAP_MUX_DEBUG=y
-CONFIG_OMAP_MUX_WARNINGS=y
-CONFIG_OMAP_MCBSP=y
-CONFIG_OMAP_MBOX_FWK=m
-CONFIG_OMAP_MBOX_KFIFO_SIZE=256
-CONFIG_OMAP_32K_TIMER=y
-# CONFIG_OMAP3_L2_AUX_SECURE_SAVE_RESTORE is not set
-CONFIG_OMAP_32K_TIMER_HZ=128
-CONFIG_OMAP_DM_TIMER=y
-CONFIG_OMAP_PM_NOOP=y
-CONFIG_MACH_OMAP_GENERIC=y
-
-#
-# TI OMAP2/3/4 Specific Features
-#
-CONFIG_ARCH_OMAP2PLUS_TYPICAL=y
-# CONFIG_ARCH_OMAP2 is not set
-CONFIG_ARCH_OMAP3=y
-# CONFIG_ARCH_OMAP4 is not set
-CONFIG_SOC_OMAP3430=y
-# CONFIG_SOC_OMAPTI816X is not set
-CONFIG_OMAP_PACKAGE_CBB=y
-CONFIG_OMAP_PACKAGE_CUS=y
-CONFIG_OMAP_PACKAGE_CBP=y
-
-#
-# OMAP Board Type
-#
-CONFIG_MACH_OMAP3_BEAGLE=y
-CONFIG_MACH_DEVKIT8000=y
-CONFIG_MACH_OMAP_LDP=y
-CONFIG_MACH_OMAP3530_LV_SOM=y
-CONFIG_MACH_OMAP3_TORPEDO=y
-CONFIG_MACH_OVERO=y
-CONFIG_MACH_OMAP3EVM=y
-CONFIG_MACH_OMAP3517EVM=y
-CONFIG_MACH_CRANEBOARD=y
-CONFIG_MACH_OMAP3_PANDORA=y
-CONFIG_MACH_OMAP3_TOUCHBOOK=y
-CONFIG_MACH_OMAP_3430SDP=y
-CONFIG_MACH_NOKIA_RM680=y
-CONFIG_MACH_NOKIA_RX51=y
-CONFIG_MACH_OMAP_ZOOM2=y
-CONFIG_MACH_OMAP_ZOOM3=y
-CONFIG_MACH_CM_T35=y
-CONFIG_MACH_CM_T3517=y
-CONFIG_MACH_CM_T3730=y
-CONFIG_MACH_IGEP0020=y
-CONFIG_MACH_IGEP0030=y
-CONFIG_MACH_SBC3530=y
-CONFIG_MACH_OMAP_3630SDP=y
-# CONFIG_OMAP3_EMU is not set
-# CONFIG_OMAP3_SDRC_AC_TIMING is not set
-
-#
-# System MMU
-#
-
-#
-# Processor Type
-#
-CONFIG_CPU_V7=y
-CONFIG_CPU_32v6K=y
-CONFIG_CPU_32v7=y
-CONFIG_CPU_ABRT_EV7=y
-CONFIG_CPU_PABRT_V7=y
-CONFIG_CPU_CACHE_V7=y
-CONFIG_CPU_CACHE_VIPT=y
-CONFIG_CPU_COPY_V6=y
-CONFIG_CPU_TLB_V7=y
-CONFIG_CPU_HAS_ASID=y
-CONFIG_CPU_CP15=y
-CONFIG_CPU_CP15_MMU=y
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-CONFIG_ARM_THUMBEE=y
-CONFIG_SWP_EMULATE=y
-# CONFIG_CPU_ICACHE_DISABLE is not set
-# CONFIG_CPU_DCACHE_DISABLE is not set
-# CONFIG_CPU_BPREDICT_DISABLE is not set
-CONFIG_ARM_L1_CACHE_SHIFT_6=y
-CONFIG_ARM_L1_CACHE_SHIFT=6
-CONFIG_ARM_DMA_MEM_BUFFERABLE=y
-CONFIG_ARM_ERRATA_430973=y
-# CONFIG_ARM_ERRATA_458693 is not set
-# CONFIG_ARM_ERRATA_460075 is not set
-CONFIG_ARM_ERRATA_720789=y
-# CONFIG_ARM_ERRATA_743622 is not set
-# CONFIG_ARM_ERRATA_751472 is not set
-# CONFIG_ARM_ERRATA_754322 is not set
-
-#
-# Bus support
-#
-# CONFIG_PCI_SYSCALL is not set
-# CONFIG_ARCH_SUPPORTS_MSI is not set
-# CONFIG_PCCARD is not set
-
-#
-# Kernel Features
-#
-CONFIG_TICK_ONESHOT=y
-CONFIG_NO_HZ=y
-CONFIG_HIGH_RES_TIMERS=y
-CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
-CONFIG_VMSPLIT_3G=y
-# CONFIG_VMSPLIT_2G is not set
-# CONFIG_VMSPLIT_1G is not set
-CONFIG_PAGE_OFFSET=0xC0000000
-CONFIG_PREEMPT_NONE=y
-# CONFIG_PREEMPT_VOLUNTARY is not set
-# CONFIG_PREEMPT is not set
-CONFIG_HZ=128
-# CONFIG_THUMB2_KERNEL is not set
-CONFIG_AEABI=y
-# CONFIG_OABI_COMPAT is not set
-CONFIG_ARCH_HAS_HOLES_MEMORYMODEL=y
-# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
-# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
-CONFIG_HAVE_ARCH_PFN_VALID=y
-CONFIG_HIGHMEM=y
-CONFIG_HIGHPTE=y
-CONFIG_SELECT_MEMORY_MODEL=y
-CONFIG_FLATMEM_MANUAL=y
-CONFIG_FLATMEM=y
-CONFIG_FLAT_NODE_MEM_MAP=y
-CONFIG_HAVE_MEMBLOCK=y
-CONFIG_PAGEFLAGS_EXTENDED=y
-CONFIG_SPLIT_PTLOCK_CPUS=4
-CONFIG_COMPACTION=y
-CONFIG_MIGRATION=y
-# CONFIG_PHYS_ADDR_T_64BIT is not set
-CONFIG_ZONE_DMA_FLAG=0
-CONFIG_BOUNCE=y
-CONFIG_VIRT_TO_BUS=y
-# CONFIG_KSM is not set
-CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
-CONFIG_NEED_PER_CPU_KM=y
-# CONFIG_CLEANCACHE is not set
-CONFIG_FORCE_MAX_ZONEORDER=11
-# CONFIG_LEDS is not set
-CONFIG_ALIGNMENT_TRAP=y
-# CONFIG_UACCESS_WITH_MEMCPY is not set
-# CONFIG_SECCOMP is not set
-# CONFIG_CC_STACKPROTECTOR is not set
-# CONFIG_DEPRECATED_PARAM_STRUCT is not set
-
-#
-# Boot options
-#
-CONFIG_USE_OF=y
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-# CONFIG_ARM_APPENDED_DTB is not set
-CONFIG_CMDLINE=" debug "
-CONFIG_CMDLINE_FROM_BOOTLOADER=y
-# CONFIG_CMDLINE_EXTEND is not set
-# CONFIG_CMDLINE_FORCE is not set
-# CONFIG_XIP_KERNEL is not set
-CONFIG_KEXEC=y
-CONFIG_ATAGS_PROC=y
-# CONFIG_CRASH_DUMP is not set
-CONFIG_AUTO_ZRELADDR=y
-
-#
-# CPU Power Management
-#
-
-#
-# CPU Frequency scaling
-#
-CONFIG_CPU_FREQ=y
-CONFIG_CPU_FREQ_TABLE=y
-CONFIG_CPU_FREQ_STAT=y
-CONFIG_CPU_FREQ_STAT_DETAILS=y
-CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
-# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
-# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
-# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
-CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-CONFIG_CPU_FREQ_GOV_POWERSAVE=y
-CONFIG_CPU_FREQ_GOV_USERSPACE=y
-CONFIG_CPU_FREQ_GOV_ONDEMAND=y
-CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
-
-#
-# ARM CPU frequency scaling drivers
-#
-CONFIG_CPU_IDLE=y
-CONFIG_CPU_IDLE_GOV_LADDER=y
-CONFIG_CPU_IDLE_GOV_MENU=y
-
-#
-# Floating point emulation
-#
-
-#
-# At least one emulation must be selected
-#
-CONFIG_VFP=y
-CONFIG_VFPv3=y
-CONFIG_NEON=y
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
-CONFIG_HAVE_AOUT=y
-CONFIG_BINFMT_AOUT=m
-CONFIG_BINFMT_MISC=m
-
-#
-# Power management options
-#
-CONFIG_SUSPEND=y
-CONFIG_SUSPEND_FREEZER=y
-CONFIG_PM_SLEEP=y
-CONFIG_PM_RUNTIME=y
-CONFIG_PM=y
-CONFIG_PM_DEBUG=y
-# CONFIG_PM_ADVANCED_DEBUG is not set
-# CONFIG_PM_TEST_SUSPEND is not set
-CONFIG_CAN_PM_TRACE=y
-# CONFIG_APM_EMULATION is not set
-CONFIG_ARCH_HAS_OPP=y
-CONFIG_PM_OPP=y
-CONFIG_PM_CLK=y
-CONFIG_CPU_PM=y
-CONFIG_ARCH_SUSPEND_POSSIBLE=y
-CONFIG_ARM_CPU_SUSPEND=y
-CONFIG_NET=y
-
-#
-# Networking options
-#
-CONFIG_PACKET=y
-CONFIG_UNIX=y
-CONFIG_XFRM=y
-CONFIG_XFRM_USER=m
-# CONFIG_XFRM_SUB_POLICY is not set
-# CONFIG_XFRM_MIGRATE is not set
-# CONFIG_XFRM_STATISTICS is not set
-CONFIG_XFRM_IPCOMP=m
-CONFIG_NET_KEY=m
-# CONFIG_NET_KEY_MIGRATE is not set
-CONFIG_INET=y
-CONFIG_IP_MULTICAST=y
-CONFIG_IP_ADVANCED_ROUTER=y
-# CONFIG_IP_FIB_TRIE_STATS is not set
-CONFIG_IP_MULTIPLE_TABLES=y
-CONFIG_IP_ROUTE_MULTIPATH=y
-CONFIG_IP_ROUTE_VERBOSE=y
-CONFIG_IP_ROUTE_CLASSID=y
-CONFIG_IP_PNP=y
-CONFIG_IP_PNP_DHCP=y
-CONFIG_IP_PNP_BOOTP=y
-# CONFIG_IP_PNP_RARP is not set
-CONFIG_NET_IPIP=m
-# CONFIG_NET_IPGRE_DEMUX is not set
-CONFIG_IP_MROUTE=y
-# CONFIG_IP_MROUTE_MULTIPLE_TABLES is not set
-CONFIG_IP_PIMSM_V1=y
-CONFIG_IP_PIMSM_V2=y
-# CONFIG_ARPD is not set
-CONFIG_SYN_COOKIES=y
-CONFIG_INET_AH=m
-CONFIG_INET_ESP=m
-CONFIG_INET_IPCOMP=m
-CONFIG_INET_XFRM_TUNNEL=m
-CONFIG_INET_TUNNEL=m
-CONFIG_INET_XFRM_MODE_TRANSPORT=m
-CONFIG_INET_XFRM_MODE_TUNNEL=m
-CONFIG_INET_XFRM_MODE_BEET=m
-CONFIG_INET_LRO=y
-CONFIG_INET_DIAG=y
-CONFIG_INET_TCP_DIAG=y
-CONFIG_TCP_CONG_ADVANCED=y
-CONFIG_TCP_CONG_BIC=m
-CONFIG_TCP_CONG_CUBIC=y
-CONFIG_TCP_CONG_WESTWOOD=m
-CONFIG_TCP_CONG_HTCP=m
-CONFIG_TCP_CONG_HSTCP=m
-CONFIG_TCP_CONG_HYBLA=m
-CONFIG_TCP_CONG_VEGAS=m
-CONFIG_TCP_CONG_SCALABLE=m
-CONFIG_TCP_CONG_LP=m
-CONFIG_TCP_CONG_VENO=m
-CONFIG_TCP_CONG_YEAH=m
-CONFIG_TCP_CONG_ILLINOIS=m
-CONFIG_DEFAULT_CUBIC=y
-# CONFIG_DEFAULT_RENO is not set
-CONFIG_DEFAULT_TCP_CONG="cubic"
-CONFIG_TCP_MD5SIG=y
-CONFIG_IPV6=y
-CONFIG_IPV6_PRIVACY=y
-# CONFIG_IPV6_ROUTER_PREF is not set
-# CONFIG_IPV6_OPTIMISTIC_DAD is not set
-CONFIG_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-# CONFIG_IPV6_MIP6 is not set
-CONFIG_INET6_XFRM_TUNNEL=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_TRANSPORT=m
-CONFIG_INET6_XFRM_MODE_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_BEET=m
-CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m
-CONFIG_IPV6_SIT=m
-CONFIG_IPV6_SIT_6RD=y
-CONFIG_IPV6_NDISC_NODETYPE=y
-CONFIG_IPV6_TUNNEL=m
-CONFIG_IPV6_MULTIPLE_TABLES=y
-# CONFIG_IPV6_SUBTREES is not set
-# CONFIG_IPV6_MROUTE is not set
-CONFIG_NETLABEL=y
-CONFIG_NETWORK_SECMARK=y
-# CONFIG_NETWORK_PHY_TIMESTAMPING is not set
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-CONFIG_NETFILTER_ADVANCED=y
-CONFIG_BRIDGE_NETFILTER=y
-
-#
-# Core Netfilter Configuration
-#
-CONFIG_NETFILTER_NETLINK=m
-CONFIG_NETFILTER_NETLINK_QUEUE=m
-CONFIG_NETFILTER_NETLINK_LOG=m
-CONFIG_NF_CONNTRACK=m
-CONFIG_NF_CONNTRACK_MARK=y
-CONFIG_NF_CONNTRACK_SECMARK=y
-CONFIG_NF_CONNTRACK_ZONES=y
-CONFIG_NF_CONNTRACK_EVENTS=y
-# CONFIG_NF_CONNTRACK_TIMESTAMP is not set
-CONFIG_NF_CT_PROTO_DCCP=m
-CONFIG_NF_CT_PROTO_GRE=m
-CONFIG_NF_CT_PROTO_SCTP=m
-CONFIG_NF_CT_PROTO_UDPLITE=m
-CONFIG_NF_CONNTRACK_AMANDA=m
-CONFIG_NF_CONNTRACK_FTP=m
-CONFIG_NF_CONNTRACK_H323=m
-CONFIG_NF_CONNTRACK_IRC=m
-CONFIG_NF_CONNTRACK_BROADCAST=m
-CONFIG_NF_CONNTRACK_NETBIOS_NS=m
-# CONFIG_NF_CONNTRACK_SNMP is not set
-CONFIG_NF_CONNTRACK_PPTP=m
-CONFIG_NF_CONNTRACK_SANE=m
-CONFIG_NF_CONNTRACK_SIP=m
-CONFIG_NF_CONNTRACK_TFTP=m
-CONFIG_NF_CT_NETLINK=m
-CONFIG_NETFILTER_TPROXY=m
-CONFIG_NETFILTER_XTABLES=m
-
-#
-# Xtables combined modules
-#
-CONFIG_NETFILTER_XT_MARK=m
-CONFIG_NETFILTER_XT_CONNMARK=m
-
-#
-# Xtables targets
-#
-# CONFIG_NETFILTER_XT_TARGET_AUDIT is not set
-CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m
-CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
-CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
-CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m
-CONFIG_NETFILTER_XT_TARGET_CT=m
-CONFIG_NETFILTER_XT_TARGET_DSCP=m
-CONFIG_NETFILTER_XT_TARGET_HL=m
-CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m
-CONFIG_NETFILTER_XT_TARGET_LED=m
-CONFIG_NETFILTER_XT_TARGET_MARK=m
-CONFIG_NETFILTER_XT_TARGET_NFLOG=m
-CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
-CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
-CONFIG_NETFILTER_XT_TARGET_RATEEST=m
-CONFIG_NETFILTER_XT_TARGET_TEE=m
-CONFIG_NETFILTER_XT_TARGET_TPROXY=m
-CONFIG_NETFILTER_XT_TARGET_TRACE=m
-CONFIG_NETFILTER_XT_TARGET_SECMARK=m
-CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
-CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
-
-#
-# Xtables matches
-#
-# CONFIG_NETFILTER_XT_MATCH_ADDRTYPE is not set
-CONFIG_NETFILTER_XT_MATCH_CLUSTER=m
-CONFIG_NETFILTER_XT_MATCH_COMMENT=m
-CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
-CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
-CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
-CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
-CONFIG_NETFILTER_XT_MATCH_CPU=m
-CONFIG_NETFILTER_XT_MATCH_DCCP=m
-# CONFIG_NETFILTER_XT_MATCH_DEVGROUP is not set
-CONFIG_NETFILTER_XT_MATCH_DSCP=m
-CONFIG_NETFILTER_XT_MATCH_ESP=m
-CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
-CONFIG_NETFILTER_XT_MATCH_HELPER=m
-CONFIG_NETFILTER_XT_MATCH_HL=m
-CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
-CONFIG_NETFILTER_XT_MATCH_IPVS=m
-CONFIG_NETFILTER_XT_MATCH_LENGTH=m
-CONFIG_NETFILTER_XT_MATCH_LIMIT=m
-CONFIG_NETFILTER_XT_MATCH_MAC=m
-CONFIG_NETFILTER_XT_MATCH_MARK=m
-CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
-CONFIG_NETFILTER_XT_MATCH_OSF=m
-CONFIG_NETFILTER_XT_MATCH_OWNER=m
-CONFIG_NETFILTER_XT_MATCH_POLICY=m
-CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
-CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
-CONFIG_NETFILTER_XT_MATCH_QUOTA=m
-CONFIG_NETFILTER_XT_MATCH_RATEEST=m
-CONFIG_NETFILTER_XT_MATCH_REALM=m
-CONFIG_NETFILTER_XT_MATCH_RECENT=m
-CONFIG_NETFILTER_XT_MATCH_SCTP=m
-CONFIG_NETFILTER_XT_MATCH_SOCKET=m
-CONFIG_NETFILTER_XT_MATCH_STATE=m
-CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
-CONFIG_NETFILTER_XT_MATCH_STRING=m
-CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
-CONFIG_NETFILTER_XT_MATCH_TIME=m
-CONFIG_NETFILTER_XT_MATCH_U32=m
-# CONFIG_IP_SET is not set
-CONFIG_IP_VS=m
-CONFIG_IP_VS_IPV6=y
-# CONFIG_IP_VS_DEBUG is not set
-CONFIG_IP_VS_TAB_BITS=12
-
-#
-# IPVS transport protocol load balancing support
-#
-CONFIG_IP_VS_PROTO_TCP=y
-CONFIG_IP_VS_PROTO_UDP=y
-CONFIG_IP_VS_PROTO_AH_ESP=y
-CONFIG_IP_VS_PROTO_ESP=y
-CONFIG_IP_VS_PROTO_AH=y
-CONFIG_IP_VS_PROTO_SCTP=y
-
-#
-# IPVS scheduler
-#
-CONFIG_IP_VS_RR=m
-CONFIG_IP_VS_WRR=m
-CONFIG_IP_VS_LC=m
-CONFIG_IP_VS_WLC=m
-CONFIG_IP_VS_LBLC=m
-CONFIG_IP_VS_LBLCR=m
-CONFIG_IP_VS_DH=m
-CONFIG_IP_VS_SH=m
-CONFIG_IP_VS_SED=m
-CONFIG_IP_VS_NQ=m
-
-#
-# IPVS application helper
-#
-CONFIG_IP_VS_FTP=m
-CONFIG_IP_VS_NFCT=y
-CONFIG_IP_VS_PE_SIP=m
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_NF_DEFRAG_IPV4=m
-CONFIG_NF_CONNTRACK_IPV4=m
-CONFIG_NF_CONNTRACK_PROC_COMPAT=y
-CONFIG_IP_NF_QUEUE=m
-CONFIG_IP_NF_IPTABLES=m
-CONFIG_IP_NF_MATCH_AH=m
-# CONFIG_IP_NF_MATCH_ECN is not set
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_FILTER=m
-CONFIG_IP_NF_TARGET_REJECT=m
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_NF_NAT=m
-CONFIG_NF_NAT_NEEDED=y
-CONFIG_IP_NF_TARGET_MASQUERADE=m
-CONFIG_IP_NF_TARGET_NETMAP=m
-CONFIG_IP_NF_TARGET_REDIRECT=m
-CONFIG_NF_NAT_PROTO_DCCP=m
-CONFIG_NF_NAT_PROTO_GRE=m
-CONFIG_NF_NAT_PROTO_UDPLITE=m
-CONFIG_NF_NAT_PROTO_SCTP=m
-CONFIG_NF_NAT_FTP=m
-CONFIG_NF_NAT_IRC=m
-CONFIG_NF_NAT_TFTP=m
-CONFIG_NF_NAT_AMANDA=m
-CONFIG_NF_NAT_PPTP=m
-CONFIG_NF_NAT_H323=m
-CONFIG_NF_NAT_SIP=m
-CONFIG_IP_NF_MANGLE=m
-CONFIG_IP_NF_TARGET_CLUSTERIP=m
-# CONFIG_IP_NF_TARGET_ECN is not set
-CONFIG_IP_NF_TARGET_TTL=m
-CONFIG_IP_NF_RAW=m
-CONFIG_IP_NF_SECURITY=m
-CONFIG_IP_NF_ARPTABLES=m
-CONFIG_IP_NF_ARPFILTER=m
-CONFIG_IP_NF_ARP_MANGLE=m
-
-#
-# IPv6: Netfilter Configuration
-#
-CONFIG_NF_DEFRAG_IPV6=m
-CONFIG_NF_CONNTRACK_IPV6=m
-CONFIG_IP6_NF_QUEUE=m
-CONFIG_IP6_NF_IPTABLES=m
-CONFIG_IP6_NF_MATCH_AH=m
-CONFIG_IP6_NF_MATCH_EUI64=m
-CONFIG_IP6_NF_MATCH_FRAG=m
-CONFIG_IP6_NF_MATCH_OPTS=m
-CONFIG_IP6_NF_MATCH_HL=m
-CONFIG_IP6_NF_MATCH_IPV6HEADER=m
-CONFIG_IP6_NF_MATCH_MH=m
-CONFIG_IP6_NF_MATCH_RT=m
-CONFIG_IP6_NF_TARGET_HL=m
-CONFIG_IP6_NF_TARGET_LOG=m
-CONFIG_IP6_NF_FILTER=m
-CONFIG_IP6_NF_TARGET_REJECT=m
-CONFIG_IP6_NF_MANGLE=m
-CONFIG_IP6_NF_RAW=m
-CONFIG_IP6_NF_SECURITY=m
-
-#
-# DECnet: Netfilter Configuration
-#
-CONFIG_DECNET_NF_GRABULATOR=m
-CONFIG_BRIDGE_NF_EBTABLES=m
-CONFIG_BRIDGE_EBT_BROUTE=m
-CONFIG_BRIDGE_EBT_T_FILTER=m
-CONFIG_BRIDGE_EBT_T_NAT=m
-CONFIG_BRIDGE_EBT_802_3=m
-CONFIG_BRIDGE_EBT_AMONG=m
-CONFIG_BRIDGE_EBT_ARP=m
-CONFIG_BRIDGE_EBT_IP=m
-CONFIG_BRIDGE_EBT_IP6=m
-CONFIG_BRIDGE_EBT_LIMIT=m
-CONFIG_BRIDGE_EBT_MARK=m
-CONFIG_BRIDGE_EBT_PKTTYPE=m
-CONFIG_BRIDGE_EBT_STP=m
-CONFIG_BRIDGE_EBT_VLAN=m
-CONFIG_BRIDGE_EBT_ARPREPLY=m
-CONFIG_BRIDGE_EBT_DNAT=m
-CONFIG_BRIDGE_EBT_MARK_T=m
-CONFIG_BRIDGE_EBT_REDIRECT=m
-CONFIG_BRIDGE_EBT_SNAT=m
-CONFIG_BRIDGE_EBT_LOG=m
-CONFIG_BRIDGE_EBT_ULOG=m
-CONFIG_BRIDGE_EBT_NFLOG=m
-CONFIG_IP_DCCP=m
-CONFIG_INET_DCCP_DIAG=m
-
-#
-# DCCP CCIDs Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_DCCP_CCID2_DEBUG is not set
-CONFIG_IP_DCCP_CCID3=y
-# CONFIG_IP_DCCP_CCID3_DEBUG is not set
-CONFIG_IP_DCCP_TFRC_LIB=y
-
-#
-# DCCP Kernel Hacking
-#
-# CONFIG_IP_DCCP_DEBUG is not set
-# CONFIG_NET_DCCPPROBE is not set
-CONFIG_IP_SCTP=m
-CONFIG_NET_SCTPPROBE=m
-# CONFIG_SCTP_DBG_MSG is not set
-# CONFIG_SCTP_DBG_OBJCNT is not set
-# CONFIG_SCTP_HMAC_NONE is not set
-# CONFIG_SCTP_HMAC_SHA1 is not set
-CONFIG_SCTP_HMAC_MD5=y
-CONFIG_RDS=m
-CONFIG_RDS_TCP=m
-# CONFIG_RDS_DEBUG is not set
-CONFIG_TIPC=m
-# CONFIG_TIPC_ADVANCED is not set
-# CONFIG_TIPC_DEBUG is not set
-CONFIG_ATM=m
-CONFIG_ATM_CLIP=m
-# CONFIG_ATM_CLIP_NO_ICMP is not set
-CONFIG_ATM_LANE=m
-CONFIG_ATM_MPOA=m
-CONFIG_ATM_BR2684=m
-CONFIG_ATM_BR2684_IPFILTER=y
-CONFIG_L2TP=m
-CONFIG_L2TP_DEBUGFS=m
-CONFIG_L2TP_V3=y
-CONFIG_L2TP_IP=m
-CONFIG_L2TP_ETH=m
-CONFIG_STP=m
-CONFIG_GARP=m
-CONFIG_BRIDGE=m
-CONFIG_BRIDGE_IGMP_SNOOPING=y
-CONFIG_NET_DSA=y
-CONFIG_NET_DSA_TAG_DSA=y
-CONFIG_NET_DSA_TAG_EDSA=y
-CONFIG_NET_DSA_TAG_TRAILER=y
-CONFIG_NET_DSA_MV88E6XXX=y
-CONFIG_NET_DSA_MV88E6060=y
-CONFIG_NET_DSA_MV88E6XXX_NEED_PPU=y
-CONFIG_NET_DSA_MV88E6131=y
-CONFIG_NET_DSA_MV88E6123_61_65=y
-CONFIG_VLAN_8021Q=m
-CONFIG_VLAN_8021Q_GVRP=y
-CONFIG_DECNET=m
-# CONFIG_DECNET_ROUTER is not set
-CONFIG_LLC=m
-CONFIG_LLC2=m
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_X25 is not set
-CONFIG_LAPB=m
-CONFIG_ECONET=m
-CONFIG_ECONET_AUNUDP=y
-CONFIG_ECONET_NATIVE=y
-CONFIG_WAN_ROUTER=m
-CONFIG_PHONET=m
-CONFIG_IEEE802154=m
-CONFIG_IEEE802154_6LOWPAN=m
-CONFIG_NET_SCHED=y
-
-#
-# Queueing/Scheduling
-#
-CONFIG_NET_SCH_CBQ=m
-CONFIG_NET_SCH_HTB=m
-CONFIG_NET_SCH_HFSC=m
-CONFIG_NET_SCH_ATM=m
-CONFIG_NET_SCH_PRIO=m
-CONFIG_NET_SCH_MULTIQ=m
-CONFIG_NET_SCH_RED=m
-# CONFIG_NET_SCH_SFB is not set
-CONFIG_NET_SCH_SFQ=m
-CONFIG_NET_SCH_TEQL=m
-CONFIG_NET_SCH_TBF=m
-CONFIG_NET_SCH_GRED=m
-CONFIG_NET_SCH_DSMARK=m
-CONFIG_NET_SCH_NETEM=m
-CONFIG_NET_SCH_DRR=m
-# CONFIG_NET_SCH_MQPRIO is not set
-# CONFIG_NET_SCH_CHOKE is not set
-# CONFIG_NET_SCH_QFQ is not set
-# CONFIG_NET_SCH_INGRESS is not set
-
-#
-# Classification
-#
-CONFIG_NET_CLS=y
-CONFIG_NET_CLS_BASIC=m
-CONFIG_NET_CLS_TCINDEX=m
-CONFIG_NET_CLS_ROUTE4=m
-CONFIG_NET_CLS_FW=m
-# CONFIG_NET_CLS_U32 is not set
-CONFIG_NET_CLS_RSVP=m
-CONFIG_NET_CLS_RSVP6=m
-# CONFIG_NET_CLS_FLOW is not set
-# CONFIG_NET_CLS_CGROUP is not set
-CONFIG_NET_EMATCH=y
-CONFIG_NET_EMATCH_STACK=32
-CONFIG_NET_EMATCH_CMP=m
-CONFIG_NET_EMATCH_NBYTE=m
-CONFIG_NET_EMATCH_U32=m
-CONFIG_NET_EMATCH_META=m
-CONFIG_NET_EMATCH_TEXT=m
-CONFIG_NET_CLS_ACT=y
-CONFIG_NET_ACT_POLICE=m
-CONFIG_NET_ACT_GACT=m
-CONFIG_GACT_PROB=y
-CONFIG_NET_ACT_MIRRED=m
-CONFIG_NET_ACT_IPT=m
-CONFIG_NET_ACT_NAT=m
-CONFIG_NET_ACT_PEDIT=m
-CONFIG_NET_ACT_SIMP=m
-CONFIG_NET_ACT_SKBEDIT=m
-CONFIG_NET_ACT_CSUM=m
-# CONFIG_NET_CLS_IND is not set
-CONFIG_NET_SCH_FIFO=y
-CONFIG_DCB=y
-CONFIG_DNS_RESOLVER=y
-CONFIG_BATMAN_ADV=m
-# CONFIG_BATMAN_ADV_DEBUG is not set
-
-#
-# Network testing
-#
-CONFIG_NET_PKTGEN=m
-# CONFIG_NET_TCPPROBE is not set
-# CONFIG_NET_DROP_MONITOR is not set
-CONFIG_HAMRADIO=y
-
-#
-# Packet Radio protocols
-#
-CONFIG_AX25=m
-CONFIG_AX25_DAMA_SLAVE=y
-CONFIG_NETROM=m
-CONFIG_ROSE=m
-
-#
-# AX.25 network device drivers
-#
-CONFIG_MKISS=m
-CONFIG_6PACK=m
-CONFIG_BPQETHER=m
-CONFIG_BAYCOM_SER_FDX=m
-CONFIG_BAYCOM_SER_HDX=m
-CONFIG_YAM=m
-CONFIG_CAN=m
-CONFIG_CAN_RAW=m
-CONFIG_CAN_BCM=m
-# CONFIG_CAN_GW is not set
-
-#
-# CAN Device Drivers
-#
-CONFIG_CAN_VCAN=m
-CONFIG_CAN_SLCAN=m
-CONFIG_CAN_DEV=m
-CONFIG_CAN_CALC_BITTIMING=y
-CONFIG_CAN_TI_HECC=m
-# CONFIG_CAN_MCP251X is not set
-# CONFIG_CAN_SJA1000 is not set
-# CONFIG_CAN_C_CAN is not set
-
-#
-# CAN USB interfaces
-#
-CONFIG_CAN_EMS_USB=m
-CONFIG_CAN_ESD_USB2=m
-# CONFIG_CAN_SOFTING is not set
-# CONFIG_CAN_DEBUG_DEVICES is not set
-CONFIG_IRDA=m
-
-#
-# IrDA protocols
-#
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-CONFIG_IRDA_ULTRA=y
-
-#
-# IrDA options
-#
-CONFIG_IRDA_CACHE_LAST_LSAP=y
-CONFIG_IRDA_FAST_RR=y
-CONFIG_IRDA_DEBUG=y
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-CONFIG_IRTTY_SIR=m
-
-#
-# Dongle support
-#
-CONFIG_DONGLE=y
-CONFIG_ESI_DONGLE=m
-CONFIG_ACTISYS_DONGLE=m
-CONFIG_TEKRAM_DONGLE=m
-CONFIG_TOIM3232_DONGLE=m
-CONFIG_LITELINK_DONGLE=m
-CONFIG_MA600_DONGLE=m
-CONFIG_GIRBIL_DONGLE=m
-CONFIG_MCP2120_DONGLE=m
-CONFIG_OLD_BELKIN_DONGLE=m
-CONFIG_ACT200L_DONGLE=m
-CONFIG_KINGSUN_DONGLE=m
-CONFIG_KSDAZZLE_DONGLE=m
-CONFIG_KS959_DONGLE=m
-
-#
-# FIR device drivers
-#
-CONFIG_USB_IRDA=m
-CONFIG_SIGMATEL_FIR=m
-CONFIG_MCS_FIR=m
-CONFIG_BT=m
-CONFIG_BT_L2CAP=y
-CONFIG_BT_SCO=y
-CONFIG_BT_RFCOMM=m
-CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=m
-CONFIG_BT_BNEP_MC_FILTER=y
-CONFIG_BT_BNEP_PROTO_FILTER=y
-CONFIG_BT_HIDP=m
-
-#
-# Bluetooth device drivers
-#
-CONFIG_BT_HCIBTUSB=m
-CONFIG_BT_HCIBTSDIO=m
-CONFIG_BT_HCIUART=m
-CONFIG_BT_HCIUART_H4=y
-CONFIG_BT_HCIUART_BCSP=y
-CONFIG_BT_HCIUART_ATH3K=y
-CONFIG_BT_HCIUART_LL=y
-CONFIG_BT_HCIBCM203X=m
-CONFIG_BT_HCIBPA10X=m
-CONFIG_BT_HCIBFUSB=m
-CONFIG_BT_HCIVHCI=m
-CONFIG_BT_MRVL=m
-CONFIG_BT_MRVL_SDIO=m
-CONFIG_BT_ATH3K=m
-CONFIG_BT_WILINK=m
-CONFIG_AF_RXRPC=m
-# CONFIG_AF_RXRPC_DEBUG is not set
-CONFIG_RXKAD=m
-CONFIG_FIB_RULES=y
-CONFIG_WIRELESS=y
-CONFIG_WIRELESS_EXT=y
-CONFIG_WEXT_CORE=y
-CONFIG_WEXT_PROC=y
-CONFIG_WEXT_SPY=y
-CONFIG_WEXT_PRIV=y
-CONFIG_CFG80211=m
-# CONFIG_NL80211_TESTMODE is not set
-# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set
-CONFIG_CFG80211_REG_DEBUG=y
-CONFIG_CFG80211_DEFAULT_PS=y
-CONFIG_CFG80211_DEBUGFS=y
-# CONFIG_CFG80211_INTERNAL_REGDB is not set
-CONFIG_CFG80211_WEXT=y
-CONFIG_WIRELESS_EXT_SYSFS=y
-CONFIG_LIB80211=m
-# CONFIG_LIB80211_DEBUG is not set
-CONFIG_MAC80211=m
-CONFIG_MAC80211_HAS_RC=y
-CONFIG_MAC80211_RC_PID=y
-CONFIG_MAC80211_RC_MINSTREL=y
-CONFIG_MAC80211_RC_MINSTREL_HT=y
-# CONFIG_MAC80211_RC_DEFAULT_PID is not set
-CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
-CONFIG_MAC80211_RC_DEFAULT="minstrel_ht"
-CONFIG_MAC80211_MESH=y
-CONFIG_MAC80211_LEDS=y
-CONFIG_MAC80211_DEBUGFS=y
-# CONFIG_MAC80211_DEBUG_MENU is not set
-CONFIG_WIMAX=m
-CONFIG_WIMAX_DEBUG_LEVEL=8
-CONFIG_RFKILL=m
-CONFIG_RFKILL_LEDS=y
-CONFIG_RFKILL_INPUT=y
-CONFIG_RFKILL_REGULATOR=m
-CONFIG_RFKILL_GPIO=m
-CONFIG_NET_9P=m
-# CONFIG_NET_9P_DEBUG is not set
-CONFIG_CAIF=m
-# CONFIG_CAIF_DEBUG is not set
-CONFIG_CAIF_NETDEV=m
-CONFIG_CEPH_LIB=m
-# CONFIG_CEPH_LIB_PRETTYDEBUG is not set
-# CONFIG_CEPH_LIB_USE_DNS_RESOLVER is not set
-CONFIG_NFC=m
-# CONFIG_NFC_NCI is not set
-
-#
-# Near Field Communication (NFC) devices
-#
-CONFIG_PN544_NFC=m
-CONFIG_NFC_PN533=m
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_UEVENT_HELPER_PATH=""
-CONFIG_DEVTMPFS=y
-CONFIG_DEVTMPFS_MOUNT=y
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
-CONFIG_FIRMWARE_IN_KERNEL=y
-CONFIG_EXTRA_FIRMWARE=""
-# CONFIG_DEBUG_DRIVER is not set
-# CONFIG_DEBUG_DEVRES is not set
-# CONFIG_SYS_HYPERVISOR is not set
-CONFIG_REGMAP=y
-CONFIG_REGMAP_I2C=y
-CONFIG_REGMAP_SPI=m
-CONFIG_CONNECTOR=y
-CONFIG_PROC_EVENTS=y
-CONFIG_MTD=y
-CONFIG_MTD_TESTS=m
-CONFIG_MTD_REDBOOT_PARTS=m
-CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
-# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set
-# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-# CONFIG_MTD_AFS_PARTS is not set
-CONFIG_MTD_OF_PARTS=y
-# CONFIG_MTD_AR7_PARTS is not set
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=y
-CONFIG_MTD_BLKDEVS=y
-CONFIG_MTD_BLOCK=y
-CONFIG_FTL=m
-CONFIG_NFTL=m
-CONFIG_NFTL_RW=y
-CONFIG_INFTL=m
-CONFIG_RFD_FTL=m
-CONFIG_SSFDC=m
-CONFIG_SM_FTL=m
-CONFIG_MTD_OOPS=m
-# CONFIG_MTD_SWAP is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-CONFIG_MTD_CFI=m
-CONFIG_MTD_JEDECPROBE=m
-CONFIG_MTD_GEN_PROBE=m
-# CONFIG_MTD_CFI_ADV_OPTIONS is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-CONFIG_MTD_CFI_INTELEXT=m
-CONFIG_MTD_CFI_AMDSTD=m
-CONFIG_MTD_CFI_STAA=m
-CONFIG_MTD_CFI_UTIL=m
-CONFIG_MTD_RAM=m
-CONFIG_MTD_ROM=m
-CONFIG_MTD_ABSENT=m
-
-#
-# Mapping drivers for chip access
-#
-CONFIG_MTD_COMPLEX_MAPPINGS=y
-CONFIG_MTD_PHYSMAP=m
-# CONFIG_MTD_PHYSMAP_COMPAT is not set
-# CONFIG_MTD_PHYSMAP_OF is not set
-# CONFIG_MTD_IMPA7 is not set
-# CONFIG_MTD_GPIO_ADDR is not set
-CONFIG_MTD_PLATRAM=m
-# CONFIG_MTD_LATCH_ADDR is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_DATAFLASH is not set
-CONFIG_MTD_M25P80=m
-CONFIG_M25PXX_USE_FAST_READ=y
-# CONFIG_MTD_SST25L is not set
-CONFIG_MTD_SLRAM=m
-CONFIG_MTD_PHRAM=m
-CONFIG_MTD_MTDRAM=m
-CONFIG_MTDRAM_TOTAL_SIZE=4096
-CONFIG_MTDRAM_ERASE_SIZE=128
-CONFIG_MTD_BLOCK2MTD=m
-
-#
-# Disk-On-Chip Device Drivers
-#
-CONFIG_MTD_DOC2000=m
-CONFIG_MTD_DOC2001=m
-CONFIG_MTD_DOC2001PLUS=m
-# CONFIG_MTD_DOCG3 is not set
-CONFIG_MTD_DOCPROBE=m
-CONFIG_MTD_DOCECC=m
-# CONFIG_MTD_DOCPROBE_ADVANCED is not set
-CONFIG_MTD_DOCPROBE_ADDRESS=0x0
-CONFIG_MTD_NAND_ECC=y
-# CONFIG_MTD_NAND_ECC_SMC is not set
-CONFIG_MTD_NAND=y
-# CONFIG_MTD_NAND_VERIFY_WRITE is not set
-# CONFIG_MTD_NAND_ECC_BCH is not set
-# CONFIG_MTD_SM_COMMON is not set
-# CONFIG_MTD_NAND_MUSEUM_IDS is not set
-# CONFIG_MTD_NAND_GPIO is not set
-CONFIG_MTD_NAND_OMAP2=y
-CONFIG_MTD_NAND_IDS=y
-CONFIG_MTD_NAND_DISKONCHIP=m
-# CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED is not set
-CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0
-# CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE is not set
-# CONFIG_MTD_NAND_NANDSIM is not set
-CONFIG_MTD_NAND_PLATFORM=y
-# CONFIG_MTD_ALAUDA is not set
-CONFIG_MTD_ONENAND=y
-CONFIG_MTD_ONENAND_VERIFY_WRITE=y
-# CONFIG_MTD_ONENAND_GENERIC is not set
-CONFIG_MTD_ONENAND_OMAP2=y
-# CONFIG_MTD_ONENAND_OTP is not set
-CONFIG_MTD_ONENAND_2X_PROGRAM=y
-CONFIG_MTD_ONENAND_SIM=m
-
-#
-# LPDDR flash memory drivers
-#
-# CONFIG_MTD_LPDDR is not set
-CONFIG_MTD_UBI=m
-CONFIG_MTD_UBI_WL_THRESHOLD=4096
-CONFIG_MTD_UBI_BEB_RESERVE=1
-CONFIG_MTD_UBI_GLUEBI=m
-# CONFIG_MTD_UBI_DEBUG is not set
-CONFIG_DTC=y
-CONFIG_OF=y
-
-#
-# Device Tree and Open Firmware support
-#
-CONFIG_PROC_DEVICETREE=y
-CONFIG_OF_FLATTREE=y
-CONFIG_OF_EARLY_FLATTREE=y
-CONFIG_OF_ADDRESS=y
-CONFIG_OF_IRQ=y
-CONFIG_OF_DEVICE=y
-CONFIG_OF_GPIO=y
-CONFIG_OF_I2C=y
-CONFIG_OF_NET=y
-CONFIG_OF_SPI=y
-CONFIG_OF_MDIO=y
-# CONFIG_PARPORT is not set
-CONFIG_BLK_DEV=y
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=y
-CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
-CONFIG_BLK_DEV_CRYPTOLOOP=m
-CONFIG_BLK_DEV_DRBD=m
-# CONFIG_DRBD_FAULT_INJECTION is not set
-CONFIG_BLK_DEV_NBD=m
-# CONFIG_BLK_DEV_UB is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_BLK_DEV_RAM_SIZE=65536
-# CONFIG_BLK_DEV_XIP is not set
-CONFIG_CDROM_PKTCDVD=m
-CONFIG_CDROM_PKTCDVD_BUFFERS=8
-# CONFIG_CDROM_PKTCDVD_WCACHE is not set
-CONFIG_ATA_OVER_ETH=m
-CONFIG_MG_DISK=m
-CONFIG_MG_DISK_RES=0
-# CONFIG_BLK_DEV_RBD is not set
-# CONFIG_SENSORS_LIS3LV02D is not set
-CONFIG_MISC_DEVICES=y
-CONFIG_AD525X_DPOT=m
-CONFIG_AD525X_DPOT_I2C=m
-CONFIG_AD525X_DPOT_SPI=m
-# CONFIG_ATMEL_PWM is not set
-CONFIG_ICS932S401=m
-CONFIG_ENCLOSURE_SERVICES=m
-# CONFIG_APDS9802ALS is not set
-CONFIG_ISL29003=m
-# CONFIG_ISL29020 is not set
-CONFIG_SENSORS_TSL2550=m
-CONFIG_SENSORS_BH1780=m
-# CONFIG_SENSORS_BH1770 is not set
-# CONFIG_SENSORS_APDS990X is not set
-CONFIG_HMC6352=m
-CONFIG_DS1682=m
-CONFIG_TI_DAC7512=m
-CONFIG_BMP085=m
-# CONFIG_USB_SWITCH_FSA9480 is not set
-# CONFIG_C2PORT is not set
-
-#
-# EEPROM support
-#
-CONFIG_EEPROM_AT24=m
-CONFIG_EEPROM_AT25=m
-CONFIG_EEPROM_LEGACY=m
-CONFIG_EEPROM_MAX6875=m
-CONFIG_EEPROM_93CX6=m
-CONFIG_EEPROM_93XX46=m
-CONFIG_IWMC3200TOP=m
-# CONFIG_IWMC3200TOP_DEBUG is not set
-# CONFIG_IWMC3200TOP_DEBUGFS is not set
-
-#
-# Texas Instruments shared transport line discipline
-#
-CONFIG_TI_ST=m
-# CONFIG_SENSORS_LIS3_SPI is not set
-# CONFIG_SENSORS_LIS3_I2C is not set
-
-#
-# Altera FPGA firmware download module
-#
-# CONFIG_ALTERA_STAPL is not set
-
-#
-# SCSI device support
-#
-CONFIG_SCSI_MOD=y
-CONFIG_RAID_ATTRS=m
-CONFIG_SCSI=y
-CONFIG_SCSI_DMA=y
-CONFIG_SCSI_TGT=m
-CONFIG_SCSI_NETLINK=y
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=y
-CONFIG_CHR_DEV_ST=m
-CONFIG_CHR_DEV_OSST=m
-CONFIG_BLK_DEV_SR=y
-# CONFIG_BLK_DEV_SR_VENDOR is not set
-CONFIG_CHR_DEV_SG=y
-CONFIG_CHR_DEV_SCH=m
-CONFIG_SCSI_ENCLOSURE=m
-CONFIG_SCSI_MULTI_LUN=y
-CONFIG_SCSI_CONSTANTS=y
-CONFIG_SCSI_LOGGING=y
-CONFIG_SCSI_SCAN_ASYNC=y
-CONFIG_SCSI_WAIT_SCAN=m
-
-#
-# SCSI Transports
-#
-# CONFIG_SCSI_SPI_ATTRS is not set
-CONFIG_SCSI_FC_ATTRS=m
-CONFIG_SCSI_FC_TGT_ATTRS=y
-CONFIG_SCSI_ISCSI_ATTRS=m
-CONFIG_SCSI_SAS_ATTRS=m
-CONFIG_SCSI_SAS_LIBSAS=m
-CONFIG_SCSI_SAS_ATA=y
-CONFIG_SCSI_SAS_HOST_SMP=y
-CONFIG_SCSI_SRP_ATTRS=m
-CONFIG_SCSI_SRP_TGT_ATTRS=y
-CONFIG_SCSI_LOWLEVEL=y
-CONFIG_ISCSI_TCP=m
-# CONFIG_ISCSI_BOOT_SYSFS is not set
-CONFIG_LIBFC=m
-CONFIG_LIBFCOE=m
-CONFIG_SCSI_DEBUG=m
-CONFIG_SCSI_DH=y
-CONFIG_SCSI_DH_RDAC=m
-CONFIG_SCSI_DH_HP_SW=m
-CONFIG_SCSI_DH_EMC=m
-CONFIG_SCSI_DH_ALUA=m
-# CONFIG_SCSI_OSD_INITIATOR is not set
-CONFIG_ATA=m
-# CONFIG_ATA_NONSTANDARD is not set
-CONFIG_ATA_VERBOSE_ERROR=y
-CONFIG_SATA_PMP=y
-
-#
-# Controllers with non-SFF native interface
-#
-# CONFIG_SATA_AHCI_PLATFORM is not set
-CONFIG_ATA_SFF=y
-
-#
-# SFF controllers with custom DMA interface
-#
-CONFIG_ATA_BMDMA=y
-
-#
-# SATA SFF controllers with BMDMA
-#
-CONFIG_SATA_MV=m
-
-#
-# PATA SFF controllers with BMDMA
-#
-
-#
-# PIO-only SFF controllers
-#
-# CONFIG_PATA_PLATFORM is not set
-
-#
-# Generic fallback / legacy drivers
-#
-CONFIG_MD=y
-CONFIG_BLK_DEV_MD=m
-CONFIG_MD_LINEAR=m
-CONFIG_MD_RAID0=m
-CONFIG_MD_RAID1=m
-CONFIG_MD_RAID10=m
-CONFIG_MD_RAID456=m
-CONFIG_MD_MULTIPATH=m
-CONFIG_MD_FAULTY=m
-CONFIG_BLK_DEV_DM=y
-CONFIG_DM_DEBUG=y
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-# CONFIG_DM_THIN_PROVISIONING is not set
-CONFIG_DM_MIRROR=m
-CONFIG_DM_RAID=m
-# CONFIG_DM_LOG_USERSPACE is not set
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_QL=m
-CONFIG_DM_MULTIPATH_ST=m
-# CONFIG_DM_DELAY is not set
-# CONFIG_DM_UEVENT is not set
-# CONFIG_DM_FLAKEY is not set
-# CONFIG_TARGET_CORE is not set
-CONFIG_NETDEVICES=y
-CONFIG_NET_CORE=y
-CONFIG_BONDING=m
-CONFIG_DUMMY=m
-CONFIG_EQUALIZER=m
-CONFIG_MII=y
-CONFIG_IEEE802154_DRIVERS=m
-# CONFIG_IEEE802154_FAKEHARD is not set
-CONFIG_IFB=m
-# CONFIG_MACVLAN is not set
-# CONFIG_NETCONSOLE is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
-CONFIG_TUN=m
-# CONFIG_VETH is not set
-CONFIG_ATM_DRIVERS=y
-# CONFIG_ATM_DUMMY is not set
-# CONFIG_ATM_TCP is not set
-
-#
-# CAIF transport drivers
-#
-# CONFIG_CAIF_TTY is not set
-# CONFIG_CAIF_SPI_SLAVE is not set
-# CONFIG_CAIF_HSI is not set
-CONFIG_ETHERNET=y
-CONFIG_NET_VENDOR_BROADCOM=y
-# CONFIG_B44 is not set
-CONFIG_NET_VENDOR_CHELSIO=y
-CONFIG_DM9000=m
-CONFIG_DM9000_FORCE_SIMPLE_PHY_POLL=y
-# CONFIG_DNET is not set
-CONFIG_NET_VENDOR_FARADAY=y
-# CONFIG_FTMAC100 is not set
-# CONFIG_FTGMAC100 is not set
-CONFIG_NET_VENDOR_INTEL=y
-CONFIG_NET_VENDOR_I825XX=y
-CONFIG_NET_VENDOR_MARVELL=y
-CONFIG_NET_VENDOR_MICREL=y
-CONFIG_KS8851=m
-# CONFIG_KS8851_MLL is not set
-CONFIG_NET_VENDOR_MICROCHIP=y
-CONFIG_ENC28J60=m
-# CONFIG_ENC28J60_WRITEVERIFY is not set
-CONFIG_NET_VENDOR_NATSEMI=y
-CONFIG_NET_VENDOR_8390=y
-# CONFIG_AX88796 is not set
-# CONFIG_ETHOC is not set
-CONFIG_NET_VENDOR_SEEQ=y
-# CONFIG_SEEQ8005 is not set
-CONFIG_NET_VENDOR_SMSC=y
-CONFIG_SMC91X=y
-# CONFIG_SMC911X is not set
-CONFIG_SMSC911X=y
-# CONFIG_SMSC911X_ARCH_HOOKS is not set
-CONFIG_NET_VENDOR_STMICRO=y
-# CONFIG_STMMAC_ETH is not set
-CONFIG_NET_VENDOR_TI=y
-# CONFIG_TI_DAVINCI_EMAC is not set
-# CONFIG_TI_DAVINCI_MDIO is not set
-# CONFIG_TI_DAVINCI_CPDMA is not set
-CONFIG_PHYLIB=y
-
-#
-# MII PHY device drivers
-#
-# CONFIG_MARVELL_PHY is not set
-# CONFIG_DAVICOM_PHY is not set
-# CONFIG_QSEMI_PHY is not set
-# CONFIG_LXT_PHY is not set
-# CONFIG_CICADA_PHY is not set
-# CONFIG_VITESSE_PHY is not set
-CONFIG_SMSC_PHY=y
-# CONFIG_BROADCOM_PHY is not set
-# CONFIG_ICPLUS_PHY is not set
-# CONFIG_REALTEK_PHY is not set
-# CONFIG_NATIONAL_PHY is not set
-# CONFIG_STE10XP is not set
-# CONFIG_LSI_ET1011C_PHY is not set
-# CONFIG_MICREL_PHY is not set
-# CONFIG_FIXED_PHY is not set
-# CONFIG_MDIO_BITBANG is not set
-CONFIG_PPP=m
-CONFIG_PPP_BSDCOMP=m
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_FILTER=y
-CONFIG_PPP_MPPE=m
-CONFIG_PPP_MULTILINK=y
-CONFIG_PPPOATM=m
-CONFIG_PPPOE=m
-# CONFIG_PPPOL2TP is not set
-CONFIG_PPP_ASYNC=m
-CONFIG_PPP_SYNC_TTY=m
-CONFIG_SLIP=m
-CONFIG_SLHC=m
-CONFIG_SLIP_COMPRESSED=y
-CONFIG_SLIP_SMART=y
-CONFIG_SLIP_MODE_SLIP6=y
-
-#
-# USB Network Adapters
-#
-CONFIG_USB_CATC=m
-CONFIG_USB_KAWETH=m
-CONFIG_USB_PEGASUS=m
-CONFIG_USB_RTL8150=m
-CONFIG_USB_USBNET=y
-CONFIG_USB_NET_AX8817X=m
-CONFIG_USB_NET_CDCETHER=y
-CONFIG_USB_NET_CDC_EEM=m
-CONFIG_USB_NET_CDC_NCM=y
-CONFIG_USB_NET_DM9601=m
-CONFIG_USB_NET_SMSC75XX=m
-CONFIG_USB_NET_SMSC95XX=m
-CONFIG_USB_NET_GL620A=m
-CONFIG_USB_NET_NET1080=m
-CONFIG_USB_NET_PLUSB=m
-CONFIG_USB_NET_MCS7830=m
-CONFIG_USB_NET_RNDIS_HOST=y
-CONFIG_USB_NET_CDC_SUBSET=m
-CONFIG_USB_ALI_M5632=y
-CONFIG_USB_AN2720=y
-CONFIG_USB_BELKIN=y
-CONFIG_USB_ARMLINUX=y
-CONFIG_USB_EPSON2888=y
-CONFIG_USB_KC2190=y
-CONFIG_USB_NET_ZAURUS=m
-CONFIG_USB_NET_CX82310_ETH=m
-CONFIG_USB_NET_KALMIA=m
-CONFIG_USB_HSO=m
-CONFIG_USB_NET_INT51X1=m
-CONFIG_USB_CDC_PHONET=m
-CONFIG_USB_IPHETH=m
-CONFIG_USB_SIERRA_NET=m
-CONFIG_USB_VL600=m
-CONFIG_WLAN=y
-CONFIG_LIBERTAS_THINFIRM=m
-# CONFIG_LIBERTAS_THINFIRM_DEBUG is not set
-CONFIG_LIBERTAS_THINFIRM_USB=m
-CONFIG_AT76C50X_USB=m
-CONFIG_USB_ZD1201=m
-CONFIG_USB_NET_RNDIS_WLAN=m
-CONFIG_RTL8187=m
-CONFIG_RTL8187_LEDS=y
-CONFIG_MAC80211_HWSIM=m
-CONFIG_ATH_COMMON=m
-# CONFIG_ATH_DEBUG is not set
-CONFIG_ATH9K_HW=m
-CONFIG_ATH9K_COMMON=m
-# CONFIG_ATH9K is not set
-CONFIG_ATH9K_HTC=m
-# CONFIG_ATH9K_HTC_DEBUGFS is not set
-CONFIG_CARL9170=m
-CONFIG_CARL9170_LEDS=y
-# CONFIG_CARL9170_DEBUGFS is not set
-CONFIG_CARL9170_WPC=y
-# CONFIG_CARL9170_HWRNG is not set
-# CONFIG_ATH6KL is not set
-CONFIG_B43=m
-CONFIG_B43_SSB=y
-# CONFIG_B43_SDIO is not set
-CONFIG_B43_PIO=y
-CONFIG_B43_PHY_N=y
-CONFIG_B43_PHY_LP=y
-# CONFIG_B43_PHY_HT is not set
-CONFIG_B43_LEDS=y
-CONFIG_B43_HWRNG=y
-# CONFIG_B43_DEBUG is not set
-CONFIG_B43LEGACY=m
-CONFIG_B43LEGACY_LEDS=y
-CONFIG_B43LEGACY_HWRNG=y
-CONFIG_B43LEGACY_DEBUG=y
-CONFIG_B43LEGACY_DMA=y
-CONFIG_B43LEGACY_PIO=y
-CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y
-# CONFIG_B43LEGACY_DMA_MODE is not set
-# CONFIG_B43LEGACY_PIO_MODE is not set
-# CONFIG_BRCMFMAC is not set
-# CONFIG_HOSTAP is not set
-# CONFIG_IWM is not set
-CONFIG_LIBERTAS=m
-CONFIG_LIBERTAS_USB=m
-CONFIG_LIBERTAS_SDIO=m
-CONFIG_LIBERTAS_SPI=m
-CONFIG_LIBERTAS_DEBUG=y
-# CONFIG_LIBERTAS_MESH is not set
-CONFIG_P54_COMMON=m
-CONFIG_P54_USB=m
-CONFIG_P54_SPI=m
-# CONFIG_P54_SPI_DEFAULT_EEPROM is not set
-CONFIG_P54_LEDS=y
-CONFIG_RT2X00=m
-CONFIG_RT2500USB=m
-CONFIG_RT73USB=m
-CONFIG_RT2800USB=m
-CONFIG_RT2800USB_RT33XX=y
-CONFIG_RT2800USB_RT35XX=y
-CONFIG_RT2800USB_RT53XX=y
-CONFIG_RT2800USB_UNKNOWN=y
-CONFIG_RT2800_LIB=m
-CONFIG_RT2X00_LIB_USB=m
-CONFIG_RT2X00_LIB=m
-CONFIG_RT2X00_LIB_FIRMWARE=y
-CONFIG_RT2X00_LIB_CRYPTO=y
-CONFIG_RT2X00_LIB_LEDS=y
-# CONFIG_RT2X00_LIB_DEBUGFS is not set
-# CONFIG_RT2X00_DEBUG is not set
-CONFIG_RTL8192CU=m
-CONFIG_RTLWIFI=m
-CONFIG_RTL8192C_COMMON=m
-CONFIG_WL1251=m
-CONFIG_WL1251_SPI=m
-CONFIG_WL1251_SDIO=m
-CONFIG_WL12XX_MENU=m
-CONFIG_WL12XX=m
-CONFIG_WL12XX_SPI=m
-CONFIG_WL12XX_SDIO=m
-CONFIG_WL12XX_SDIO_TEST=m
-CONFIG_WL12XX_PLATFORM_DATA=y
-CONFIG_ZD1211RW=m
-# CONFIG_ZD1211RW_DEBUG is not set
-CONFIG_MWIFIEX=m
-CONFIG_MWIFIEX_SDIO=m
-
-#
-# WiMAX Wireless Broadband devices
-#
-# CONFIG_WIMAX_I2400M_USB is not set
-# CONFIG_WIMAX_I2400M_SDIO is not set
-# CONFIG_WAN is not set
-# CONFIG_ISDN is not set
-CONFIG_PHONE=m
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-CONFIG_INPUT_FF_MEMLESS=y
-CONFIG_INPUT_POLLDEV=m
-CONFIG_INPUT_SPARSEKMAP=m
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=y
-CONFIG_INPUT_MOUSEDEV_PSAUX=y
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
-CONFIG_INPUT_JOYDEV=m
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-CONFIG_KEYBOARD_ADP5588=m
-CONFIG_KEYBOARD_ADP5589=m
-CONFIG_KEYBOARD_ATKBD=y
-CONFIG_KEYBOARD_QT1070=m
-CONFIG_KEYBOARD_QT2160=m
-CONFIG_KEYBOARD_LKKBD=m
-CONFIG_KEYBOARD_GPIO=m
-CONFIG_KEYBOARD_TCA6416=m
-CONFIG_KEYBOARD_MATRIX=m
-CONFIG_KEYBOARD_LM8323=m
-CONFIG_KEYBOARD_MAX7359=m
-CONFIG_KEYBOARD_MCS=m
-CONFIG_KEYBOARD_MPR121=m
-CONFIG_KEYBOARD_NEWTON=m
-CONFIG_KEYBOARD_OPENCORES=m
-CONFIG_KEYBOARD_STOWAWAY=m
-CONFIG_KEYBOARD_SUNKBD=m
-CONFIG_KEYBOARD_TWL4030=m
-CONFIG_KEYBOARD_XTKBD=m
-CONFIG_INPUT_MOUSE=y
-CONFIG_MOUSE_PS2=m
-CONFIG_MOUSE_PS2_ALPS=y
-CONFIG_MOUSE_PS2_LOGIPS2PP=y
-CONFIG_MOUSE_PS2_SYNAPTICS=y
-CONFIG_MOUSE_PS2_TRACKPOINT=y
-CONFIG_MOUSE_PS2_ELANTECH=y
-CONFIG_MOUSE_PS2_SENTELIC=y
-CONFIG_MOUSE_PS2_TOUCHKIT=y
-CONFIG_MOUSE_SERIAL=m
-CONFIG_MOUSE_APPLETOUCH=m
-CONFIG_MOUSE_BCM5974=m
-CONFIG_MOUSE_VSXXXAA=m
-CONFIG_MOUSE_GPIO=m
-CONFIG_MOUSE_SYNAPTICS_I2C=m
-CONFIG_INPUT_JOYSTICK=y
-CONFIG_JOYSTICK_ANALOG=m
-CONFIG_JOYSTICK_A3D=m
-CONFIG_JOYSTICK_ADI=m
-CONFIG_JOYSTICK_COBRA=m
-CONFIG_JOYSTICK_GF2K=m
-CONFIG_JOYSTICK_GRIP=m
-CONFIG_JOYSTICK_GRIP_MP=m
-CONFIG_JOYSTICK_GUILLEMOT=m
-CONFIG_JOYSTICK_INTERACT=m
-CONFIG_JOYSTICK_SIDEWINDER=m
-CONFIG_JOYSTICK_TMDC=m
-CONFIG_JOYSTICK_IFORCE=m
-CONFIG_JOYSTICK_IFORCE_USB=y
-CONFIG_JOYSTICK_IFORCE_232=y
-CONFIG_JOYSTICK_WARRIOR=m
-CONFIG_JOYSTICK_MAGELLAN=m
-CONFIG_JOYSTICK_SPACEORB=m
-CONFIG_JOYSTICK_SPACEBALL=m
-CONFIG_JOYSTICK_STINGER=m
-CONFIG_JOYSTICK_TWIDJOY=m
-CONFIG_JOYSTICK_ZHENHUA=m
-CONFIG_JOYSTICK_AS5011=m
-CONFIG_JOYSTICK_JOYDUMP=m
-CONFIG_JOYSTICK_XPAD=m
-CONFIG_JOYSTICK_XPAD_FF=y
-CONFIG_JOYSTICK_XPAD_LEDS=y
-CONFIG_INPUT_TABLET=y
-CONFIG_TABLET_USB_ACECAD=m
-CONFIG_TABLET_USB_AIPTEK=m
-CONFIG_TABLET_USB_GTCO=m
-CONFIG_TABLET_USB_HANWANG=m
-CONFIG_TABLET_USB_KBTAB=m
-CONFIG_TABLET_USB_WACOM=m
-CONFIG_INPUT_TOUCHSCREEN=y
-CONFIG_TOUCHSCREEN_ADS7846=m
-CONFIG_TOUCHSCREEN_AD7877=m
-CONFIG_TOUCHSCREEN_AD7879=m
-CONFIG_TOUCHSCREEN_AD7879_I2C=m
-CONFIG_TOUCHSCREEN_AD7879_SPI=m
-CONFIG_TOUCHSCREEN_ATMEL_MXT=m
-CONFIG_TOUCHSCREEN_BU21013=m
-CONFIG_TOUCHSCREEN_CY8CTMG110=m
-CONFIG_TOUCHSCREEN_DYNAPRO=m
-CONFIG_TOUCHSCREEN_HAMPSHIRE=m
-CONFIG_TOUCHSCREEN_EETI=m
-CONFIG_TOUCHSCREEN_FUJITSU=m
-CONFIG_TOUCHSCREEN_GUNZE=m
-CONFIG_TOUCHSCREEN_ELO=m
-CONFIG_TOUCHSCREEN_WACOM_W8001=m
-CONFIG_TOUCHSCREEN_MAX11801=m
-CONFIG_TOUCHSCREEN_MCS5000=m
-CONFIG_TOUCHSCREEN_MTOUCH=m
-CONFIG_TOUCHSCREEN_INEXIO=m
-CONFIG_TOUCHSCREEN_MK712=m
-CONFIG_TOUCHSCREEN_PENMOUNT=m
-CONFIG_TOUCHSCREEN_TOUCHRIGHT=m
-CONFIG_TOUCHSCREEN_TOUCHWIN=m
-CONFIG_TOUCHSCREEN_USB_COMPOSITE=m
-CONFIG_TOUCHSCREEN_USB_EGALAX=y
-CONFIG_TOUCHSCREEN_USB_PANJIT=y
-CONFIG_TOUCHSCREEN_USB_3M=y
-CONFIG_TOUCHSCREEN_USB_ITM=y
-CONFIG_TOUCHSCREEN_USB_ETURBO=y
-CONFIG_TOUCHSCREEN_USB_GUNZE=y
-CONFIG_TOUCHSCREEN_USB_DMC_TSC10=y
-CONFIG_TOUCHSCREEN_USB_IRTOUCH=y
-CONFIG_TOUCHSCREEN_USB_IDEALTEK=y
-CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH=y
-CONFIG_TOUCHSCREEN_USB_GOTOP=y
-CONFIG_TOUCHSCREEN_USB_JASTEC=y
-CONFIG_TOUCHSCREEN_USB_E2I=y
-CONFIG_TOUCHSCREEN_USB_ZYTRONIC=y
-CONFIG_TOUCHSCREEN_USB_ETT_TC45USB=y
-CONFIG_TOUCHSCREEN_USB_NEXIO=y
-CONFIG_TOUCHSCREEN_TOUCHIT213=m
-CONFIG_TOUCHSCREEN_TSC_SERIO=m
-CONFIG_TOUCHSCREEN_TSC2005=m
-CONFIG_TOUCHSCREEN_TSC2007=y
-CONFIG_TOUCHSCREEN_W90X900=m
-CONFIG_TOUCHSCREEN_ST1232=m
-CONFIG_TOUCHSCREEN_TPS6507X=m
-CONFIG_INPUT_MISC=y
-CONFIG_INPUT_AD714X=m
-CONFIG_INPUT_AD714X_I2C=m
-CONFIG_INPUT_AD714X_SPI=m
-CONFIG_INPUT_BMA150=m
-CONFIG_INPUT_MMA8450=m
-CONFIG_INPUT_MPU3050=m
-CONFIG_INPUT_ATI_REMOTE2=m
-CONFIG_INPUT_KEYSPAN_REMOTE=m
-CONFIG_INPUT_KXTJ9=m
-# CONFIG_INPUT_KXTJ9_POLLED_MODE is not set
-CONFIG_INPUT_POWERMATE=m
-CONFIG_INPUT_YEALINK=m
-CONFIG_INPUT_CM109=m
-CONFIG_INPUT_TWL4030_PWRBUTTON=y
-CONFIG_INPUT_TWL4030_VIBRA=y
-CONFIG_INPUT_TWL6040_VIBRA=y
-CONFIG_INPUT_UINPUT=y
-CONFIG_INPUT_PCF8574=m
-CONFIG_INPUT_GPIO_ROTARY_ENCODER=m
-CONFIG_INPUT_ADXL34X=m
-CONFIG_INPUT_ADXL34X_I2C=m
-CONFIG_INPUT_ADXL34X_SPI=m
-CONFIG_INPUT_CMA3000=m
-CONFIG_INPUT_CMA3000_I2C=m
-
-#
-# Hardware I/O ports
-#
-CONFIG_SERIO=y
-CONFIG_SERIO_SERPORT=y
-CONFIG_SERIO_LIBPS2=y
-# CONFIG_SERIO_RAW is not set
-# CONFIG_SERIO_ALTERA_PS2 is not set
-# CONFIG_SERIO_PS2MULT is not set
-CONFIG_GAMEPORT=m
-# CONFIG_GAMEPORT_NS558 is not set
-# CONFIG_GAMEPORT_L4 is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_CONSOLE_TRANSLATIONS=y
-CONFIG_VT_CONSOLE=y
-CONFIG_VT_CONSOLE_SLEEP=y
-CONFIG_HW_CONSOLE=y
-CONFIG_VT_HW_CONSOLE_BINDING=y
-CONFIG_UNIX98_PTYS=y
-# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
-# CONFIG_LEGACY_PTYS is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-# CONFIG_N_GSM is not set
-# CONFIG_TRACE_SINK is not set
-CONFIG_DEVKMEM=y
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=y
-CONFIG_SERIAL_8250_CONSOLE=y
-CONFIG_SERIAL_8250_NR_UARTS=32
-CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-CONFIG_SERIAL_8250_EXTENDED=y
-CONFIG_SERIAL_8250_MANY_PORTS=y
-CONFIG_SERIAL_8250_SHARE_IRQ=y
-CONFIG_SERIAL_8250_DETECT_IRQ=y
-CONFIG_SERIAL_8250_RSA=y
-# CONFIG_SERIAL_8250_DW is not set
-
-#
-# Non-8250 serial port support
-#
-# CONFIG_SERIAL_MAX3100 is not set
-# CONFIG_SERIAL_MAX3107 is not set
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_CONSOLE_POLL=y
-# CONFIG_SERIAL_OF_PLATFORM is not set
-CONFIG_SERIAL_OMAP=y
-CONFIG_SERIAL_OMAP_CONSOLE=y
-# CONFIG_SERIAL_TIMBERDALE is not set
-# CONFIG_SERIAL_ALTERA_JTAGUART is not set
-# CONFIG_SERIAL_ALTERA_UART is not set
-# CONFIG_SERIAL_IFX6X60 is not set
-# CONFIG_SERIAL_XILINX_PS_UART is not set
-# CONFIG_TTY_PRINTK is not set
-# CONFIG_HVC_DCC is not set
-# CONFIG_IPMI_HANDLER is not set
-CONFIG_HW_RANDOM=y
-# CONFIG_HW_RANDOM_TIMERIOMEM is not set
-# CONFIG_NVRAM is not set
-# CONFIG_R3964 is not set
-# CONFIG_RAW_DRIVER is not set
-# CONFIG_TCG_TPM is not set
-# CONFIG_RAMOOPS is not set
-CONFIG_I2C=y
-CONFIG_I2C_BOARDINFO=y
-CONFIG_I2C_COMPAT=y
-CONFIG_I2C_CHARDEV=y
-# CONFIG_I2C_MUX is not set
-CONFIG_I2C_HELPER_AUTO=y
-CONFIG_I2C_SMBUS=m
-CONFIG_I2C_ALGOBIT=y
-CONFIG_I2C_ALGOPCA=m
-
-#
-# I2C Hardware Bus support
-#
-
-#
-# I2C system bus drivers (mostly embedded / system-on-chip)
-#
-# CONFIG_I2C_DESIGNWARE_PLATFORM is not set
-# CONFIG_I2C_GPIO is not set
-# CONFIG_I2C_OCORES is not set
-CONFIG_I2C_OMAP=y
-CONFIG_I2C_PCA_PLATFORM=m
-# CONFIG_I2C_PXA_PCI is not set
-# CONFIG_I2C_SIMTEC is not set
-# CONFIG_I2C_XILINX is not set
-
-#
-# External I2C/SMBus adapter drivers
-#
-CONFIG_I2C_DIOLAN_U2C=m
-CONFIG_I2C_PARPORT_LIGHT=m
-CONFIG_I2C_TAOS_EVM=m
-CONFIG_I2C_TINY_USB=m
-
-#
-# Other I2C/SMBus bus drivers
-#
-CONFIG_I2C_STUB=m
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-CONFIG_SPI=y
-# CONFIG_SPI_DEBUG is not set
-CONFIG_SPI_MASTER=y
-
-#
-# SPI Master Controller Drivers
-#
-# CONFIG_SPI_ALTERA is not set
-# CONFIG_SPI_BITBANG is not set
-# CONFIG_SPI_GPIO is not set
-# CONFIG_SPI_OC_TINY is not set
-CONFIG_SPI_OMAP24XX=y
-# CONFIG_SPI_PXA2XX_PCI is not set
-# CONFIG_SPI_XILINX is not set
-# CONFIG_SPI_DESIGNWARE is not set
-
-#
-# SPI Protocol Masters
-#
-CONFIG_SPI_SPIDEV=y
-# CONFIG_SPI_TLE62X0 is not set
-
-#
-# PPS support
-#
-# CONFIG_PPS is not set
-
-#
-# PPS generators support
-#
-
-#
-# PTP clock support
-#
-
-#
-# Enable Device Drivers -> PPS to see the PTP clock options.
-#
-CONFIG_ARCH_REQUIRE_GPIOLIB=y
-CONFIG_GPIOLIB=y
-CONFIG_DEBUG_GPIO=y
-CONFIG_GPIO_SYSFS=y
-
-#
-# Memory mapped GPIO drivers:
-#
-# CONFIG_GPIO_GENERIC_PLATFORM is not set
-# CONFIG_GPIO_IT8761E is not set
-
-#
-# I2C GPIO expanders:
-#
-# CONFIG_GPIO_MAX7300 is not set
-# CONFIG_GPIO_MAX732X is not set
-# CONFIG_GPIO_PCF857X is not set
-# CONFIG_GPIO_SX150X is not set
-CONFIG_GPIO_TWL4030=y
-# CONFIG_GPIO_ADP5588 is not set
-
-#
-# PCI GPIO expanders:
-#
-
-#
-# SPI GPIO expanders:
-#
-# CONFIG_GPIO_MAX7301 is not set
-# CONFIG_GPIO_MCP23S08 is not set
-# CONFIG_GPIO_MC33880 is not set
-# CONFIG_GPIO_74X164 is not set
-
-#
-# AC97 GPIO expanders:
-#
-
-#
-# MODULbus GPIO expanders:
-#
-CONFIG_W1=y
-CONFIG_W1_CON=y
-
-#
-# 1-wire Bus Masters
-#
-CONFIG_W1_MASTER_DS2490=m
-CONFIG_W1_MASTER_DS2482=m
-# CONFIG_W1_MASTER_DS1WM is not set
-CONFIG_W1_MASTER_GPIO=m
-CONFIG_HDQ_MASTER_OMAP=m
-
-#
-# 1-wire Slaves
-#
-CONFIG_W1_SLAVE_THERM=m
-CONFIG_W1_SLAVE_SMEM=m
-CONFIG_W1_SLAVE_DS2408=m
-# CONFIG_W1_SLAVE_DS2423 is not set
-CONFIG_W1_SLAVE_DS2431=m
-CONFIG_W1_SLAVE_DS2433=m
-CONFIG_W1_SLAVE_DS2433_CRC=y
-CONFIG_W1_SLAVE_DS2760=m
-CONFIG_W1_SLAVE_DS2780=m
-CONFIG_W1_SLAVE_BQ27000=m
-CONFIG_POWER_SUPPLY=y
-# CONFIG_POWER_SUPPLY_DEBUG is not set
-# CONFIG_PDA_POWER is not set
-CONFIG_TEST_POWER=m
-# CONFIG_BATTERY_DS2760 is not set
-# CONFIG_BATTERY_DS2780 is not set
-# CONFIG_BATTERY_DS2782 is not set
-# CONFIG_BATTERY_BQ20Z75 is not set
-# CONFIG_BATTERY_BQ27x00 is not set
-# CONFIG_BATTERY_MAX17040 is not set
-# CONFIG_BATTERY_MAX17042 is not set
-# CONFIG_CHARGER_ISP1704 is not set
-# CONFIG_CHARGER_MAX8903 is not set
-CONFIG_CHARGER_TWL4030=m
-CONFIG_CHARGER_GPIO=m
-CONFIG_HWMON=y
-CONFIG_HWMON_VID=m
-# CONFIG_HWMON_DEBUG_CHIP is not set
-
-#
-# Native drivers
-#
-# CONFIG_SENSORS_AD7314 is not set
-CONFIG_SENSORS_AD7414=m
-CONFIG_SENSORS_AD7418=m
-CONFIG_SENSORS_ADCXX=m
-CONFIG_SENSORS_ADM1021=m
-CONFIG_SENSORS_ADM1025=m
-CONFIG_SENSORS_ADM1026=m
-CONFIG_SENSORS_ADM1029=m
-CONFIG_SENSORS_ADM1031=m
-CONFIG_SENSORS_ADM9240=m
-CONFIG_SENSORS_ADT7411=m
-CONFIG_SENSORS_ADT7462=m
-CONFIG_SENSORS_ADT7470=m
-CONFIG_SENSORS_ADT7475=m
-CONFIG_SENSORS_ASC7621=m
-CONFIG_SENSORS_ATXP1=m
-CONFIG_SENSORS_DS620=m
-CONFIG_SENSORS_DS1621=m
-CONFIG_SENSORS_F71805F=m
-CONFIG_SENSORS_F71882FG=m
-CONFIG_SENSORS_F75375S=m
-CONFIG_SENSORS_G760A=m
-CONFIG_SENSORS_GL518SM=m
-CONFIG_SENSORS_GL520SM=m
-CONFIG_SENSORS_GPIO_FAN=m
-CONFIG_SENSORS_IT87=m
-CONFIG_SENSORS_JC42=m
-CONFIG_SENSORS_LINEAGE=m
-CONFIG_SENSORS_LM63=m
-CONFIG_SENSORS_LM70=m
-CONFIG_SENSORS_LM73=m
-CONFIG_SENSORS_LM75=m
-CONFIG_SENSORS_LM77=m
-CONFIG_SENSORS_LM78=m
-CONFIG_SENSORS_LM80=m
-CONFIG_SENSORS_LM83=m
-CONFIG_SENSORS_LM85=m
-CONFIG_SENSORS_LM87=m
-CONFIG_SENSORS_LM90=m
-CONFIG_SENSORS_LM92=m
-CONFIG_SENSORS_LM93=m
-CONFIG_SENSORS_LTC4151=m
-CONFIG_SENSORS_LTC4215=m
-CONFIG_SENSORS_LTC4245=m
-CONFIG_SENSORS_LTC4261=m
-CONFIG_SENSORS_LM95241=m
-CONFIG_SENSORS_LM95245=m
-CONFIG_SENSORS_MAX1111=m
-CONFIG_SENSORS_MAX16065=m
-CONFIG_SENSORS_MAX1619=m
-CONFIG_SENSORS_MAX1668=m
-CONFIG_SENSORS_MAX6639=m
-CONFIG_SENSORS_MAX6642=m
-CONFIG_SENSORS_MAX6650=m
-CONFIG_SENSORS_NTC_THERMISTOR=m
-CONFIG_SENSORS_PC87360=m
-CONFIG_SENSORS_PC87427=m
-CONFIG_SENSORS_PCF8591=m
-CONFIG_PMBUS=m
-CONFIG_SENSORS_PMBUS=m
-# CONFIG_SENSORS_ADM1275 is not set
-# CONFIG_SENSORS_LM25066 is not set
-# CONFIG_SENSORS_LTC2978 is not set
-# CONFIG_SENSORS_MAX16064 is not set
-# CONFIG_SENSORS_MAX34440 is not set
-# CONFIG_SENSORS_MAX8688 is not set
-# CONFIG_SENSORS_UCD9000 is not set
-# CONFIG_SENSORS_UCD9200 is not set
-# CONFIG_SENSORS_ZL6100 is not set
-CONFIG_SENSORS_SHT15=m
-CONFIG_SENSORS_SHT21=m
-CONFIG_SENSORS_SMM665=m
-CONFIG_SENSORS_DME1737=m
-CONFIG_SENSORS_EMC1403=m
-CONFIG_SENSORS_EMC2103=m
-CONFIG_SENSORS_EMC6W201=m
-CONFIG_SENSORS_SMSC47M1=m
-CONFIG_SENSORS_SMSC47M192=m
-CONFIG_SENSORS_SMSC47B397=m
-CONFIG_SENSORS_SCH56XX_COMMON=m
-CONFIG_SENSORS_SCH5627=m
-CONFIG_SENSORS_SCH5636=m
-CONFIG_SENSORS_ADS1015=m
-CONFIG_SENSORS_ADS7828=m
-CONFIG_SENSORS_ADS7871=m
-CONFIG_SENSORS_AMC6821=m
-CONFIG_SENSORS_THMC50=m
-CONFIG_SENSORS_TMP102=m
-CONFIG_SENSORS_TMP401=m
-CONFIG_SENSORS_TMP421=m
-CONFIG_SENSORS_TWL4030_MADC=m
-CONFIG_SENSORS_VT1211=m
-CONFIG_SENSORS_W83781D=m
-CONFIG_SENSORS_W83791D=m
-CONFIG_SENSORS_W83792D=m
-CONFIG_SENSORS_W83793=m
-CONFIG_SENSORS_W83795=m
-# CONFIG_SENSORS_W83795_FANCTRL is not set
-CONFIG_SENSORS_W83L785TS=m
-CONFIG_SENSORS_W83L786NG=m
-CONFIG_SENSORS_W83627HF=m
-CONFIG_SENSORS_W83627EHF=m
-CONFIG_THERMAL=m
-CONFIG_THERMAL_HWMON=y
-CONFIG_WATCHDOG=y
-CONFIG_WATCHDOG_CORE=y
-CONFIG_WATCHDOG_NOWAYOUT=y
-
-#
-# Watchdog Device Drivers
-#
-# CONFIG_SOFT_WATCHDOG is not set
-# CONFIG_DW_WATCHDOG is not set
-CONFIG_OMAP_WATCHDOG=y
-CONFIG_TWL4030_WATCHDOG=y
-# CONFIG_MAX63XX_WATCHDOG is not set
-
-#
-# USB-based Watchdog Cards
-#
-CONFIG_USBPCWATCHDOG=m
-CONFIG_SSB_POSSIBLE=y
-
-#
-# Sonics Silicon Backplane
-#
-CONFIG_SSB=y
-CONFIG_SSB_BLOCKIO=y
-CONFIG_SSB_SDIOHOST_POSSIBLE=y
-# CONFIG_SSB_SDIOHOST is not set
-# CONFIG_SSB_SILENT is not set
-# CONFIG_SSB_DEBUG is not set
-CONFIG_BCMA_POSSIBLE=y
-
-#
-# Broadcom specific AMBA
-#
-# CONFIG_BCMA is not set
-
-#
-# Multifunction device drivers
-#
-CONFIG_MFD_CORE=y
-# CONFIG_MFD_88PM860X is not set
-# CONFIG_MFD_SM501 is not set
-# CONFIG_MFD_ASIC3 is not set
-# CONFIG_HTC_EGPIO is not set
-# CONFIG_HTC_PASIC3 is not set
-# CONFIG_HTC_I2CPLD is not set
-# CONFIG_TPS6105X is not set
-# CONFIG_TPS65010 is not set
-# CONFIG_TPS6507X is not set
-# CONFIG_MFD_TPS6586X is not set
-# CONFIG_MFD_TPS65910 is not set
-# CONFIG_MFD_TPS65912_I2C is not set
-# CONFIG_MFD_TPS65912_SPI is not set
-CONFIG_TWL4030_CORE=y
-CONFIG_TWL4030_MADC=y
-CONFIG_TWL4030_POWER=y
-CONFIG_MFD_TWL4030_AUDIO=y
-# CONFIG_TWL6030_PWM is not set
-CONFIG_TWL6040_CORE=y
-# CONFIG_MFD_STMPE is not set
-# CONFIG_MFD_TC3589X is not set
-# CONFIG_MFD_TMIO is not set
-# CONFIG_MFD_T7L66XB is not set
-# CONFIG_MFD_TC6387XB is not set
-# CONFIG_MFD_TC6393XB is not set
-# CONFIG_PMIC_DA903X is not set
-# CONFIG_PMIC_ADP5520 is not set
-# CONFIG_MFD_MAX8925 is not set
-# CONFIG_MFD_MAX8997 is not set
-# CONFIG_MFD_MAX8998 is not set
-# CONFIG_MFD_WM8400 is not set
-# CONFIG_MFD_WM831X_I2C is not set
-# CONFIG_MFD_WM831X_SPI is not set
-# CONFIG_MFD_WM8350_I2C is not set
-# CONFIG_MFD_WM8994 is not set
-# CONFIG_MFD_PCF50633 is not set
-# CONFIG_MFD_MC13XXX is not set
-# CONFIG_ABX500_CORE is not set
-# CONFIG_EZX_PCAP is not set
-CONFIG_MFD_WL1273_CORE=m
-CONFIG_MFD_OMAP_USB_HOST=y
-# CONFIG_MFD_AAT2870_CORE is not set
-CONFIG_REGULATOR=y
-# CONFIG_REGULATOR_DEBUG is not set
-CONFIG_REGULATOR_DUMMY=y
-CONFIG_REGULATOR_FIXED_VOLTAGE=y
-CONFIG_REGULATOR_VIRTUAL_CONSUMER=y
-CONFIG_REGULATOR_USERSPACE_CONSUMER=y
-# CONFIG_REGULATOR_GPIO is not set
-# CONFIG_REGULATOR_BQ24022 is not set
-# CONFIG_REGULATOR_MAX1586 is not set
-# CONFIG_REGULATOR_MAX8649 is not set
-# CONFIG_REGULATOR_MAX8660 is not set
-# CONFIG_REGULATOR_MAX8952 is not set
-CONFIG_REGULATOR_TWL4030=y
-# CONFIG_REGULATOR_LP3971 is not set
-# CONFIG_REGULATOR_LP3972 is not set
-CONFIG_REGULATOR_TPS65023=y
-CONFIG_REGULATOR_TPS6507X=y
-# CONFIG_REGULATOR_ISL6271A is not set
-# CONFIG_REGULATOR_AD5398 is not set
-# CONFIG_REGULATOR_TPS6524X is not set
-CONFIG_MEDIA_SUPPORT=y
-
-#
-# Multimedia core support
-#
-CONFIG_MEDIA_CONTROLLER=y
-CONFIG_VIDEO_DEV=m
-CONFIG_VIDEO_V4L2_COMMON=m
-CONFIG_VIDEO_V4L2_SUBDEV_API=y
-CONFIG_DVB_CORE=m
-CONFIG_DVB_NET=y
-CONFIG_VIDEO_MEDIA=m
-
-#
-# Multimedia drivers
-#
-CONFIG_RC_CORE=y
-CONFIG_LIRC=y
-CONFIG_RC_MAP=m
-CONFIG_IR_NEC_DECODER=m
-CONFIG_IR_RC5_DECODER=m
-CONFIG_IR_RC6_DECODER=m
-CONFIG_IR_JVC_DECODER=m
-CONFIG_IR_SONY_DECODER=m
-CONFIG_IR_RC5_SZ_DECODER=m
-CONFIG_IR_MCE_KBD_DECODER=m
-CONFIG_IR_LIRC_CODEC=m
-CONFIG_RC_ATI_REMOTE=m
-CONFIG_IR_IMON=m
-CONFIG_IR_MCEUSB=m
-CONFIG_IR_REDRAT3=m
-CONFIG_IR_STREAMZAP=m
-CONFIG_RC_LOOPBACK=m
-CONFIG_MEDIA_ATTACH=y
-CONFIG_MEDIA_TUNER=m
-CONFIG_MEDIA_TUNER_CUSTOMISE=y
-
-#
-# Customize TV tuners
-#
-CONFIG_MEDIA_TUNER_SIMPLE=m
-CONFIG_MEDIA_TUNER_TDA8290=m
-CONFIG_MEDIA_TUNER_TDA827X=m
-CONFIG_MEDIA_TUNER_TDA18271=m
-CONFIG_MEDIA_TUNER_TDA9887=m
-CONFIG_MEDIA_TUNER_TEA5761=m
-CONFIG_MEDIA_TUNER_TEA5767=m
-CONFIG_MEDIA_TUNER_MT20XX=m
-CONFIG_MEDIA_TUNER_MT2060=m
-CONFIG_MEDIA_TUNER_MT2266=m
-CONFIG_MEDIA_TUNER_MT2131=m
-CONFIG_MEDIA_TUNER_QT1010=m
-CONFIG_MEDIA_TUNER_XC2028=m
-CONFIG_MEDIA_TUNER_XC5000=m
-CONFIG_MEDIA_TUNER_XC4000=m
-CONFIG_MEDIA_TUNER_MXL5005S=m
-CONFIG_MEDIA_TUNER_MXL5007T=m
-CONFIG_MEDIA_TUNER_MC44S803=m
-CONFIG_MEDIA_TUNER_MAX2165=m
-CONFIG_MEDIA_TUNER_TDA18218=m
-CONFIG_MEDIA_TUNER_TDA18212=m
-CONFIG_VIDEO_V4L2=m
-CONFIG_VIDEOBUF_GEN=m
-CONFIG_VIDEOBUF_VMALLOC=m
-CONFIG_VIDEOBUF_DMA_CONTIG=m
-CONFIG_VIDEOBUF_DVB=m
-CONFIG_VIDEO_TVEEPROM=m
-CONFIG_VIDEO_TUNER=m
-CONFIG_V4L2_MEM2MEM_DEV=m
-CONFIG_VIDEOBUF2_CORE=m
-CONFIG_VIDEOBUF2_MEMOPS=m
-CONFIG_VIDEOBUF2_VMALLOC=m
-CONFIG_VIDEO_CAPTURE_DRIVERS=y
-# CONFIG_VIDEO_ADV_DEBUG is not set
-# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
-# CONFIG_VIDEO_HELPER_CHIPS_AUTO is not set
-CONFIG_VIDEO_IR_I2C=m
-
-#
-# Encoders, decoders, sensors and other helper chips
-#
-
-#
-# Audio decoders, processors and mixers
-#
-CONFIG_VIDEO_TVAUDIO=m
-CONFIG_VIDEO_TDA7432=m
-CONFIG_VIDEO_TDA9840=m
-CONFIG_VIDEO_TEA6415C=m
-CONFIG_VIDEO_TEA6420=m
-CONFIG_VIDEO_MSP3400=m
-CONFIG_VIDEO_CS5345=m
-CONFIG_VIDEO_CS53L32A=m
-CONFIG_VIDEO_TLV320AIC23B=m
-CONFIG_VIDEO_WM8775=m
-CONFIG_VIDEO_WM8739=m
-CONFIG_VIDEO_VP27SMPX=m
-
-#
-# RDS decoders
-#
-CONFIG_VIDEO_SAA6588=m
-
-#
-# Video decoders
-#
-CONFIG_VIDEO_ADV7180=m
-CONFIG_VIDEO_BT819=m
-CONFIG_VIDEO_BT856=m
-CONFIG_VIDEO_BT866=m
-CONFIG_VIDEO_KS0127=m
-CONFIG_VIDEO_SAA7110=m
-CONFIG_VIDEO_SAA711X=m
-CONFIG_VIDEO_SAA7191=m
-CONFIG_VIDEO_TVP514X=m
-CONFIG_VIDEO_TVP5150=m
-CONFIG_VIDEO_TVP7002=m
-CONFIG_VIDEO_VPX3220=m
-
-#
-# Video and audio decoders
-#
-CONFIG_VIDEO_SAA717X=m
-CONFIG_VIDEO_CX25840=m
-
-#
-# MPEG video encoders
-#
-CONFIG_VIDEO_CX2341X=m
-
-#
-# Video encoders
-#
-CONFIG_VIDEO_SAA7127=m
-CONFIG_VIDEO_SAA7185=m
-CONFIG_VIDEO_ADV7170=m
-CONFIG_VIDEO_ADV7175=m
-CONFIG_VIDEO_ADV7343=m
-CONFIG_VIDEO_AK881X=m
-
-#
-# Camera sensor devices
-#
-CONFIG_VIDEO_OV7670=m
-# CONFIG_VIDEO_MT9P031 is not set
-# CONFIG_VIDEO_MT9T001 is not set
-CONFIG_VIDEO_MT9V011=m
-# CONFIG_VIDEO_MT9V032 is not set
-CONFIG_VIDEO_TCM825X=m
-CONFIG_VIDEO_SR030PC30=m
-# CONFIG_VIDEO_NOON010PC30 is not set
-# CONFIG_VIDEO_M5MOLS is not set
-# CONFIG_VIDEO_S5K6AA is not set
-
-#
-# Flash devices
-#
-CONFIG_VIDEO_ADP1653=m
-
-#
-# Video improvement chips
-#
-CONFIG_VIDEO_UPD64031A=m
-CONFIG_VIDEO_UPD64083=m
-
-#
-# Miscelaneous helper chips
-#
-CONFIG_VIDEO_THS7303=m
-CONFIG_VIDEO_M52790=m
-# CONFIG_VIDEO_VIVI is not set
-# CONFIG_VIDEO_VPFE_CAPTURE is not set
-CONFIG_VIDEO_OMAP2_VOUT_VRFB=y
-CONFIG_VIDEO_OMAP2_VOUT=m
-# CONFIG_VIDEO_CPIA2 is not set
-# CONFIG_VIDEO_AU0828 is not set
-# CONFIG_SOC_CAMERA is not set
-CONFIG_V4L_USB_DRIVERS=y
-CONFIG_USB_VIDEO_CLASS=m
-CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
-CONFIG_USB_GSPCA=m
-CONFIG_USB_M5602=m
-CONFIG_USB_STV06XX=m
-CONFIG_USB_GL860=m
-CONFIG_USB_GSPCA_BENQ=m
-CONFIG_USB_GSPCA_CONEX=m
-CONFIG_USB_GSPCA_CPIA1=m
-CONFIG_USB_GSPCA_ETOMS=m
-CONFIG_USB_GSPCA_FINEPIX=m
-CONFIG_USB_GSPCA_JEILINJ=m
-CONFIG_USB_GSPCA_KINECT=m
-CONFIG_USB_GSPCA_KONICA=m
-CONFIG_USB_GSPCA_MARS=m
-CONFIG_USB_GSPCA_MR97310A=m
-CONFIG_USB_GSPCA_NW80X=m
-CONFIG_USB_GSPCA_OV519=m
-CONFIG_USB_GSPCA_OV534=m
-CONFIG_USB_GSPCA_OV534_9=m
-CONFIG_USB_GSPCA_PAC207=m
-CONFIG_USB_GSPCA_PAC7302=m
-CONFIG_USB_GSPCA_PAC7311=m
-CONFIG_USB_GSPCA_SE401=m
-CONFIG_USB_GSPCA_SN9C2028=m
-CONFIG_USB_GSPCA_SN9C20X=m
-CONFIG_USB_GSPCA_SONIXB=m
-CONFIG_USB_GSPCA_SONIXJ=m
-CONFIG_USB_GSPCA_SPCA500=m
-CONFIG_USB_GSPCA_SPCA501=m
-CONFIG_USB_GSPCA_SPCA505=m
-CONFIG_USB_GSPCA_SPCA506=m
-CONFIG_USB_GSPCA_SPCA508=m
-CONFIG_USB_GSPCA_SPCA561=m
-CONFIG_USB_GSPCA_SPCA1528=m
-CONFIG_USB_GSPCA_SQ905=m
-CONFIG_USB_GSPCA_SQ905C=m
-CONFIG_USB_GSPCA_SQ930X=m
-CONFIG_USB_GSPCA_STK014=m
-CONFIG_USB_GSPCA_STV0680=m
-CONFIG_USB_GSPCA_SUNPLUS=m
-CONFIG_USB_GSPCA_T613=m
-CONFIG_USB_GSPCA_TOPRO=m
-CONFIG_USB_GSPCA_TV8532=m
-CONFIG_USB_GSPCA_VC032X=m
-CONFIG_USB_GSPCA_VICAM=m
-CONFIG_USB_GSPCA_XIRLINK_CIT=m
-CONFIG_USB_GSPCA_ZC3XX=m
-CONFIG_VIDEO_PVRUSB2=m
-CONFIG_VIDEO_PVRUSB2_SYSFS=y
-CONFIG_VIDEO_PVRUSB2_DVB=y
-# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set
-CONFIG_VIDEO_HDPVR=m
-CONFIG_VIDEO_EM28XX=m
-CONFIG_VIDEO_EM28XX_ALSA=m
-CONFIG_VIDEO_EM28XX_DVB=m
-CONFIG_VIDEO_EM28XX_RC=y
-CONFIG_VIDEO_TLG2300=m
-CONFIG_VIDEO_CX231XX=m
-CONFIG_VIDEO_CX231XX_RC=y
-CONFIG_VIDEO_CX231XX_ALSA=m
-CONFIG_VIDEO_CX231XX_DVB=m
-CONFIG_VIDEO_TM6000=m
-CONFIG_VIDEO_TM6000_ALSA=m
-CONFIG_VIDEO_TM6000_DVB=m
-CONFIG_VIDEO_USBVISION=m
-CONFIG_USB_ET61X251=m
-CONFIG_USB_SN9C102=m
-CONFIG_USB_PWC=m
-# CONFIG_USB_PWC_DEBUG is not set
-CONFIG_USB_PWC_INPUT_EVDEV=y
-CONFIG_USB_ZR364XX=m
-CONFIG_USB_STKWEBCAM=m
-CONFIG_USB_S2255=m
-CONFIG_V4L_MEM2MEM_DRIVERS=y
-CONFIG_VIDEO_MEM2MEM_TESTDEV=m
-CONFIG_RADIO_ADAPTERS=y
-CONFIG_I2C_SI4713=m
-CONFIG_RADIO_SI4713=m
-CONFIG_USB_DSBR=m
-CONFIG_RADIO_SI470X=y
-CONFIG_USB_SI470X=m
-CONFIG_I2C_SI470X=m
-CONFIG_USB_MR800=m
-CONFIG_RADIO_TEA5764=m
-CONFIG_RADIO_SAA7706H=m
-CONFIG_RADIO_TEF6862=m
-CONFIG_RADIO_WL1273=m
-
-#
-# Texas Instruments WL128x FM driver (ST based)
-#
-CONFIG_RADIO_WL128X=m
-CONFIG_DVB_MAX_ADAPTERS=8
-CONFIG_DVB_DYNAMIC_MINORS=y
-CONFIG_DVB_CAPTURE_DRIVERS=y
-CONFIG_TTPCI_EEPROM=m
-
-#
-# Supported USB Adapters
-#
-CONFIG_DVB_USB=m
-# CONFIG_DVB_USB_DEBUG is not set
-CONFIG_DVB_USB_A800=m
-CONFIG_DVB_USB_DIBUSB_MB=m
-# CONFIG_DVB_USB_DIBUSB_MB_FAULTY is not set
-CONFIG_DVB_USB_DIBUSB_MC=m
-CONFIG_DVB_USB_DIB0700=m
-CONFIG_DVB_USB_UMT_010=m
-CONFIG_DVB_USB_CXUSB=m
-CONFIG_DVB_USB_M920X=m
-CONFIG_DVB_USB_GL861=m
-CONFIG_DVB_USB_AU6610=m
-CONFIG_DVB_USB_DIGITV=m
-CONFIG_DVB_USB_VP7045=m
-CONFIG_DVB_USB_VP702X=m
-CONFIG_DVB_USB_GP8PSK=m
-CONFIG_DVB_USB_NOVA_T_USB2=m
-CONFIG_DVB_USB_TTUSB2=m
-CONFIG_DVB_USB_DTT200U=m
-CONFIG_DVB_USB_OPERA1=m
-CONFIG_DVB_USB_AF9005=m
-CONFIG_DVB_USB_AF9005_REMOTE=m
-CONFIG_DVB_USB_PCTV452E=m
-CONFIG_DVB_USB_DW2102=m
-CONFIG_DVB_USB_CINERGY_T2=m
-CONFIG_DVB_USB_ANYSEE=m
-CONFIG_DVB_USB_DTV5100=m
-CONFIG_DVB_USB_AF9015=m
-CONFIG_DVB_USB_CE6230=m
-CONFIG_DVB_USB_FRIIO=m
-CONFIG_DVB_USB_EC168=m
-CONFIG_DVB_USB_AZ6027=m
-CONFIG_DVB_USB_LME2510=m
-CONFIG_DVB_USB_TECHNISAT_USB2=m
-CONFIG_DVB_USB_IT913X=m
-CONFIG_DVB_USB_MXL111SF=m
-CONFIG_SMS_SIANO_MDTV=m
-
-#
-# Siano module components
-#
-CONFIG_SMS_USB_DRV=m
-# CONFIG_SMS_SDIO_DRV is not set
-
-#
-# Supported FlexCopII (B2C2) Adapters
-#
-CONFIG_DVB_B2C2_FLEXCOP=m
-CONFIG_DVB_B2C2_FLEXCOP_USB=m
-# CONFIG_DVB_B2C2_FLEXCOP_DEBUG is not set
-
-#
-# Supported DVB Frontends
-#
-CONFIG_DVB_FE_CUSTOMISE=y
-
-#
-# Customise DVB Frontends
-#
-
-#
-# Multistandard (satellite) frontends
-#
-CONFIG_DVB_STB0899=m
-CONFIG_DVB_STB6100=m
-CONFIG_DVB_STV090x=m
-CONFIG_DVB_STV6110x=m
-
-#
-# Multistandard (cable + terrestrial) frontends
-#
-CONFIG_DVB_DRXK=m
-CONFIG_DVB_TDA18271C2DD=m
-
-#
-# DVB-S (satellite) frontends
-#
-CONFIG_DVB_CX24110=m
-CONFIG_DVB_CX24123=m
-CONFIG_DVB_MT312=m
-CONFIG_DVB_ZL10036=m
-CONFIG_DVB_ZL10039=m
-CONFIG_DVB_S5H1420=m
-CONFIG_DVB_STV0288=m
-CONFIG_DVB_STB6000=m
-CONFIG_DVB_STV0299=m
-CONFIG_DVB_STV6110=m
-CONFIG_DVB_STV0900=m
-CONFIG_DVB_TDA8083=m
-CONFIG_DVB_TDA10086=m
-CONFIG_DVB_TDA8261=m
-CONFIG_DVB_VES1X93=m
-CONFIG_DVB_TUNER_ITD1000=m
-CONFIG_DVB_TUNER_CX24113=m
-CONFIG_DVB_TDA826X=m
-CONFIG_DVB_TUA6100=m
-CONFIG_DVB_CX24116=m
-CONFIG_DVB_SI21XX=m
-CONFIG_DVB_DS3000=m
-CONFIG_DVB_MB86A16=m
-CONFIG_DVB_TDA10071=m
-
-#
-# DVB-T (terrestrial) frontends
-#
-CONFIG_DVB_SP8870=m
-CONFIG_DVB_SP887X=m
-CONFIG_DVB_CX22700=m
-CONFIG_DVB_CX22702=m
-CONFIG_DVB_S5H1432=m
-CONFIG_DVB_DRXD=m
-CONFIG_DVB_L64781=m
-CONFIG_DVB_TDA1004X=m
-CONFIG_DVB_NXT6000=m
-CONFIG_DVB_MT352=m
-CONFIG_DVB_ZL10353=m
-CONFIG_DVB_DIB3000MB=m
-CONFIG_DVB_DIB3000MC=m
-CONFIG_DVB_DIB7000M=m
-CONFIG_DVB_DIB7000P=m
-CONFIG_DVB_DIB9000=m
-CONFIG_DVB_TDA10048=m
-CONFIG_DVB_AF9013=m
-CONFIG_DVB_EC100=m
-CONFIG_DVB_STV0367=m
-CONFIG_DVB_CXD2820R=m
-
-#
-# DVB-C (cable) frontends
-#
-CONFIG_DVB_VES1820=m
-CONFIG_DVB_TDA10021=m
-CONFIG_DVB_TDA10023=m
-CONFIG_DVB_STV0297=m
-
-#
-# ATSC (North American/Korean Terrestrial/Cable DTV) frontends
-#
-CONFIG_DVB_NXT200X=m
-CONFIG_DVB_OR51211=m
-CONFIG_DVB_OR51132=m
-CONFIG_DVB_BCM3510=m
-CONFIG_DVB_LGDT330X=m
-CONFIG_DVB_LGDT3305=m
-CONFIG_DVB_S5H1409=m
-CONFIG_DVB_AU8522=m
-CONFIG_DVB_S5H1411=m
-
-#
-# ISDB-T (terrestrial) frontends
-#
-CONFIG_DVB_S921=m
-CONFIG_DVB_DIB8000=m
-CONFIG_DVB_MB86A20S=m
-
-#
-# Digital terrestrial only tuners/PLL
-#
-CONFIG_DVB_PLL=m
-CONFIG_DVB_TUNER_DIB0070=m
-CONFIG_DVB_TUNER_DIB0090=m
-
-#
-# SEC control devices for DVB-S
-#
-CONFIG_DVB_LNBP21=m
-CONFIG_DVB_LNBP22=m
-CONFIG_DVB_ISL6405=m
-CONFIG_DVB_ISL6421=m
-CONFIG_DVB_ISL6423=m
-CONFIG_DVB_A8293=m
-CONFIG_DVB_LGS8GL5=m
-CONFIG_DVB_LGS8GXX=m
-CONFIG_DVB_ATBM8830=m
-CONFIG_DVB_TDA665x=m
-CONFIG_DVB_IX2505V=m
-CONFIG_DVB_IT913X_FE=m
-
-#
-# Tools to develop new frontends
-#
-# CONFIG_DVB_DUMMY_FE is not set
-
-#
-# Graphics support
-#
-CONFIG_DRM=y
-# CONFIG_VGASTATE is not set
-# CONFIG_VIDEO_OUTPUT_CONTROL is not set
-CONFIG_FB=y
-CONFIG_FIRMWARE_EDID=y
-# CONFIG_FB_DDC is not set
-# CONFIG_FB_BOOT_VESA_SUPPORT is not set
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
-# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
-CONFIG_FB_SYS_FILLRECT=m
-CONFIG_FB_SYS_COPYAREA=m
-CONFIG_FB_SYS_IMAGEBLIT=m
-# CONFIG_FB_FOREIGN_ENDIAN is not set
-CONFIG_FB_SYS_FOPS=m
-# CONFIG_FB_WMT_GE_ROPS is not set
-CONFIG_FB_DEFERRED_IO=y
-# CONFIG_FB_SVGALIB is not set
-# CONFIG_FB_MACMODES is not set
-# CONFIG_FB_BACKLIGHT is not set
-CONFIG_FB_MODE_HELPERS=y
-CONFIG_FB_TILEBLITTING=y
-
-#
-# Frame buffer hardware drivers
-#
-# CONFIG_FB_UVESA is not set
-# CONFIG_FB_S1D13XXX is not set
-# CONFIG_FB_TMIO is not set
-# CONFIG_FB_SMSCUFX is not set
-CONFIG_FB_UDL=m
-# CONFIG_FB_VIRTUAL is not set
-# CONFIG_FB_METRONOME is not set
-# CONFIG_FB_BROADSHEET is not set
-# CONFIG_FB_OMAP_BOOTLOADER_INIT is not set
-CONFIG_OMAP2_VRAM=y
-CONFIG_OMAP2_VRFB=y
-CONFIG_OMAP2_DSS=y
-CONFIG_OMAP2_VRAM_SIZE=18
-CONFIG_OMAP2_DSS_DEBUG_SUPPORT=y
-# CONFIG_OMAP2_DSS_COLLECT_IRQ_STATS is not set
-CONFIG_OMAP2_DSS_DPI=y
-# CONFIG_OMAP2_DSS_RFBI is not set
-CONFIG_OMAP2_DSS_VENC=y
-CONFIG_OMAP2_DSS_SDI=y
-CONFIG_OMAP2_DSS_DSI=y
-CONFIG_OMAP2_DSS_FAKE_VSYNC=y
-CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK=0
-CONFIG_OMAP2_DSS_SLEEP_AFTER_VENC_RESET=y
-CONFIG_FB_OMAP2=y
-CONFIG_FB_OMAP2_DEBUG_SUPPORT=y
-CONFIG_FB_OMAP2_NUM_FBS=2
-
-#
-# OMAP2/3 Display Device Drivers
-#
-CONFIG_PANEL_GENERIC_DPI=y
-CONFIG_PANEL_DVI=y
-CONFIG_PANEL_LGPHILIPS_LB035Q02=y
-CONFIG_PANEL_SHARP_LS037V7DW01=y
-CONFIG_PANEL_NEC_NL8048HL11_01B=y
-CONFIG_PANEL_PICODLP=y
-CONFIG_PANEL_TAAL=y
-CONFIG_PANEL_TPO_TD043MTEA1=y
-CONFIG_PANEL_ACX565AKM=y
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_LCD_CLASS_DEVICE=y
-# CONFIG_LCD_L4F00242T03 is not set
-# CONFIG_LCD_LMS283GF05 is not set
-# CONFIG_LCD_LTV350QV is not set
-# CONFIG_LCD_TDO24M is not set
-# CONFIG_LCD_VGG2432A4 is not set
-CONFIG_LCD_PLATFORM=y
-# CONFIG_LCD_S6E63M0 is not set
-# CONFIG_LCD_LD9040 is not set
-# CONFIG_LCD_AMS369FG06 is not set
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_GENERIC=y
-# CONFIG_BACKLIGHT_ADP8860 is not set
-# CONFIG_BACKLIGHT_ADP8870 is not set
-CONFIG_BACKLIGHT_TLC59108=y
-
-#
-# Display device support
-#
-CONFIG_DISPLAY_SUPPORT=y
-
-#
-# Display hardware drivers
-#
-
-#
-# Console display driver support
-#
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
-CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
-CONFIG_FONTS=y
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_7x14 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-# CONFIG_FONT_MINI_4x6 is not set
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_10x18 is not set
-CONFIG_LOGO=y
-CONFIG_LOGO_LINUX_MONO=y
-CONFIG_LOGO_LINUX_VGA16=y
-CONFIG_LOGO_LINUX_CLUT224=y
-CONFIG_SOUND=m
-CONFIG_SOUND_OSS_CORE=y
-CONFIG_SOUND_OSS_CORE_PRECLAIM=y
-CONFIG_SND=m
-CONFIG_SND_TIMER=m
-CONFIG_SND_PCM=m
-CONFIG_SND_HWDEP=m
-CONFIG_SND_RAWMIDI=m
-CONFIG_SND_JACK=y
-CONFIG_SND_SEQUENCER=m
-CONFIG_SND_SEQ_DUMMY=m
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
-CONFIG_SND_PCM_OSS_PLUGINS=y
-# CONFIG_SND_SEQUENCER_OSS is not set
-CONFIG_SND_HRTIMER=m
-CONFIG_SND_SEQ_HRTIMER_DEFAULT=y
-CONFIG_SND_DYNAMIC_MINORS=y
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PROCFS=y
-CONFIG_SND_VERBOSE_PRINTK=y
-CONFIG_SND_DEBUG=y
-# CONFIG_SND_DEBUG_VERBOSE is not set
-# CONFIG_SND_PCM_XRUN_DEBUG is not set
-CONFIG_SND_RAWMIDI_SEQ=m
-# CONFIG_SND_OPL3_LIB_SEQ is not set
-# CONFIG_SND_OPL4_LIB_SEQ is not set
-# CONFIG_SND_SBAWE_SEQ is not set
-# CONFIG_SND_EMU10K1_SEQ is not set
-CONFIG_SND_DRIVERS=y
-# CONFIG_SND_DUMMY is not set
-# CONFIG_SND_ALOOP is not set
-# CONFIG_SND_VIRMIDI is not set
-# CONFIG_SND_MTPAV is not set
-# CONFIG_SND_SERIAL_U16550 is not set
-# CONFIG_SND_MPU401 is not set
-CONFIG_SND_ARM=y
-CONFIG_SND_SPI=y
-CONFIG_SND_USB=y
-CONFIG_SND_USB_AUDIO=m
-CONFIG_SND_USB_UA101=m
-CONFIG_SND_USB_CAIAQ=m
-CONFIG_SND_USB_CAIAQ_INPUT=y
-CONFIG_SND_USB_6FIRE=m
-CONFIG_SND_SOC=m
-# CONFIG_SND_SOC_CACHE_LZO is not set
-CONFIG_SND_OMAP_SOC=m
-CONFIG_SND_OMAP_SOC_MCBSP=m
-CONFIG_SND_OMAP_SOC_RX51=m
-CONFIG_SND_OMAP_SOC_OVERO=m
-CONFIG_SND_OMAP_SOC_OMAP3EVM=m
-CONFIG_SND_OMAP_SOC_AM3517EVM=m
-CONFIG_SND_OMAP_SOC_SDP3430=m
-CONFIG_SND_OMAP_SOC_OMAP3_PANDORA=m
-CONFIG_SND_OMAP_SOC_OMAP3_BEAGLE=m
-CONFIG_SND_OMAP_SOC_ZOOM2=m
-CONFIG_SND_OMAP_SOC_IGEP0020=m
-CONFIG_SND_SOC_I2C_AND_SPI=m
-# CONFIG_SND_SOC_ALL_CODECS is not set
-CONFIG_SND_SOC_TLV320AIC23=m
-CONFIG_SND_SOC_TLV320AIC3X=m
-CONFIG_SND_SOC_TWL4030=m
-CONFIG_SND_SOC_TPA6130A2=m
-# CONFIG_SOUND_PRIME is not set
-CONFIG_HID_SUPPORT=y
-CONFIG_HID=y
-CONFIG_HIDRAW=y
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=y
-CONFIG_HID_PID=y
-CONFIG_USB_HIDDEV=y
-
-#
-# Special HID drivers
-#
-CONFIG_HID_A4TECH=m
-CONFIG_HID_ACRUX=m
-CONFIG_HID_ACRUX_FF=y
-CONFIG_HID_APPLE=m
-CONFIG_HID_BELKIN=m
-CONFIG_HID_CHERRY=m
-CONFIG_HID_CHICONY=m
-CONFIG_HID_PRODIKEYS=m
-CONFIG_HID_CYPRESS=m
-CONFIG_HID_DRAGONRISE=m
-CONFIG_DRAGONRISE_FF=y
-CONFIG_HID_EMS_FF=m
-CONFIG_HID_ELECOM=m
-CONFIG_HID_EZKEY=m
-CONFIG_HID_HOLTEK=m
-CONFIG_HOLTEK_FF=y
-CONFIG_HID_KEYTOUCH=m
-CONFIG_HID_KYE=m
-CONFIG_HID_UCLOGIC=m
-CONFIG_HID_WALTOP=m
-CONFIG_HID_GYRATION=m
-CONFIG_HID_TWINHAN=m
-CONFIG_HID_KENSINGTON=m
-CONFIG_HID_LCPOWER=m
-CONFIG_HID_LOGITECH=m
-CONFIG_HID_LOGITECH_DJ=m
-CONFIG_LOGITECH_FF=y
-CONFIG_LOGIRUMBLEPAD2_FF=y
-CONFIG_LOGIG940_FF=y
-CONFIG_LOGIWHEELS_FF=y
-CONFIG_HID_MAGICMOUSE=m
-CONFIG_HID_MICROSOFT=m
-CONFIG_HID_MONTEREY=m
-CONFIG_HID_MULTITOUCH=m
-CONFIG_HID_NTRIG=m
-CONFIG_HID_ORTEK=m
-CONFIG_HID_PANTHERLORD=m
-CONFIG_PANTHERLORD_FF=y
-CONFIG_HID_PETALYNX=m
-CONFIG_HID_PICOLCD=m
-CONFIG_HID_PICOLCD_FB=y
-CONFIG_HID_PICOLCD_BACKLIGHT=y
-CONFIG_HID_PICOLCD_LCD=y
-CONFIG_HID_PICOLCD_LEDS=y
-CONFIG_HID_PRIMAX=m
-CONFIG_HID_QUANTA=m
-CONFIG_HID_ROCCAT=m
-CONFIG_HID_ROCCAT_COMMON=m
-CONFIG_HID_ROCCAT_ARVO=m
-CONFIG_HID_ROCCAT_KONE=m
-CONFIG_HID_ROCCAT_KONEPLUS=m
-CONFIG_HID_ROCCAT_KOVAPLUS=m
-CONFIG_HID_ROCCAT_PYRA=m
-CONFIG_HID_SAMSUNG=m
-CONFIG_HID_SONY=m
-CONFIG_HID_SPEEDLINK=m
-CONFIG_HID_SUNPLUS=m
-CONFIG_HID_GREENASIA=m
-CONFIG_GREENASIA_FF=y
-CONFIG_HID_SMARTJOYPLUS=m
-CONFIG_SMARTJOYPLUS_FF=y
-CONFIG_HID_TOPSEED=m
-CONFIG_HID_THRUSTMASTER=m
-CONFIG_THRUSTMASTER_FF=y
-CONFIG_HID_WACOM=m
-CONFIG_HID_WACOM_POWER_SUPPLY=y
-CONFIG_HID_WIIMOTE=m
-CONFIG_HID_ZEROPLUS=m
-CONFIG_ZEROPLUS_FF=y
-CONFIG_HID_ZYDACRON=m
-CONFIG_USB_SUPPORT=y
-CONFIG_USB_COMMON=y
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-CONFIG_USB_ARCH_HAS_EHCI=y
-# CONFIG_USB_ARCH_HAS_XHCI is not set
-CONFIG_USB=y
-# CONFIG_USB_DEBUG is not set
-CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-CONFIG_USB_DEVICE_CLASS=y
-# CONFIG_USB_DYNAMIC_MINORS is not set
-CONFIG_USB_SUSPEND=y
-CONFIG_USB_OTG=y
-# CONFIG_USB_OTG_WHITELIST is not set
-# CONFIG_USB_OTG_BLACKLIST_HUB is not set
-# CONFIG_USB_DWC3 is not set
-CONFIG_USB_MON=y
-# CONFIG_USB_WUSB is not set
-# CONFIG_USB_WUSB_CBAF is not set
-
-#
-# USB Host Controller Drivers
-#
-# CONFIG_USB_C67X00_HCD is not set
-CONFIG_USB_EHCI_HCD=y
-# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
-CONFIG_USB_EHCI_TT_NEWSCHED=y
-CONFIG_USB_EHCI_HCD_OMAP=y
-# CONFIG_USB_OXU210HP_HCD is not set
-# CONFIG_USB_ISP116X_HCD is not set
-# CONFIG_USB_ISP1760_HCD is not set
-# CONFIG_USB_ISP1362_HCD is not set
-# CONFIG_USB_OHCI_HCD is not set
-# CONFIG_USB_U132_HCD is not set
-# CONFIG_USB_SL811_HCD is not set
-# CONFIG_USB_R8A66597_HCD is not set
-# CONFIG_USB_HWA_HCD is not set
-CONFIG_USB_MUSB_HDRC=y
-# CONFIG_USB_MUSB_TUSB6010 is not set
-CONFIG_USB_MUSB_OMAP2PLUS=y
-# CONFIG_USB_MUSB_AM35X is not set
-# CONFIG_MUSB_PIO_ONLY is not set
-# CONFIG_USB_UX500_DMA is not set
-CONFIG_USB_INVENTRA_DMA=y
-# CONFIG_USB_TI_CPPI_DMA is not set
-# CONFIG_USB_RENESAS_USBHS is not set
-
-#
-# USB Device Class drivers
-#
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-CONFIG_USB_WDM=m
-CONFIG_USB_TMC=m
-
-#
-# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
-#
-
-#
-# also be needed; see USB_STORAGE Help for more info
-#
-CONFIG_USB_STORAGE=y
-# CONFIG_USB_STORAGE_DEBUG is not set
-CONFIG_USB_STORAGE_REALTEK=m
-CONFIG_REALTEK_AUTOPM=y
-CONFIG_USB_STORAGE_DATAFAB=m
-CONFIG_USB_STORAGE_FREECOM=m
-CONFIG_USB_STORAGE_ISD200=m
-CONFIG_USB_STORAGE_USBAT=m
-CONFIG_USB_STORAGE_SDDR09=m
-CONFIG_USB_STORAGE_SDDR55=m
-CONFIG_USB_STORAGE_JUMPSHOT=m
-CONFIG_USB_STORAGE_ALAUDA=m
-CONFIG_USB_STORAGE_ONETOUCH=m
-CONFIG_USB_STORAGE_KARMA=m
-CONFIG_USB_STORAGE_CYPRESS_ATACB=m
-CONFIG_USB_STORAGE_ENE_UB6250=m
-CONFIG_USB_UAS=m
-CONFIG_USB_LIBUSUAL=y
-
-#
-# USB Imaging devices
-#
-CONFIG_USB_MDC800=m
-CONFIG_USB_MICROTEK=m
-
-#
-# USB port drivers
-#
-CONFIG_USB_SERIAL=m
-CONFIG_USB_EZUSB=y
-CONFIG_USB_SERIAL_GENERIC=y
-CONFIG_USB_SERIAL_AIRCABLE=m
-CONFIG_USB_SERIAL_ARK3116=m
-CONFIG_USB_SERIAL_BELKIN=m
-CONFIG_USB_SERIAL_CH341=m
-# CONFIG_USB_SERIAL_WHITEHEAT is not set
-CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-CONFIG_USB_SERIAL_CP210X=m
-CONFIG_USB_SERIAL_CYPRESS_M8=m
-CONFIG_USB_SERIAL_EMPEG=m
-CONFIG_USB_SERIAL_FTDI_SIO=m
-CONFIG_USB_SERIAL_FUNSOFT=m
-CONFIG_USB_SERIAL_VISOR=m
-CONFIG_USB_SERIAL_IPAQ=m
-CONFIG_USB_SERIAL_IR=m
-CONFIG_USB_SERIAL_EDGEPORT=m
-CONFIG_USB_SERIAL_EDGEPORT_TI=m
-CONFIG_USB_SERIAL_GARMIN=m
-CONFIG_USB_SERIAL_IPW=m
-CONFIG_USB_SERIAL_IUU=m
-CONFIG_USB_SERIAL_KEYSPAN_PDA=m
-CONFIG_USB_SERIAL_KEYSPAN=m
-CONFIG_USB_SERIAL_KEYSPAN_MPR=y
-CONFIG_USB_SERIAL_KEYSPAN_USA28=y
-CONFIG_USB_SERIAL_KEYSPAN_USA28X=y
-CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y
-CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y
-CONFIG_USB_SERIAL_KEYSPAN_USA19=y
-CONFIG_USB_SERIAL_KEYSPAN_USA18X=y
-CONFIG_USB_SERIAL_KEYSPAN_USA19W=y
-CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y
-CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y
-CONFIG_USB_SERIAL_KEYSPAN_USA49W=y
-CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y
-CONFIG_USB_SERIAL_KLSI=m
-CONFIG_USB_SERIAL_KOBIL_SCT=m
-CONFIG_USB_SERIAL_MCT_U232=m
-CONFIG_USB_SERIAL_MOS7720=m
-CONFIG_USB_SERIAL_MOS7840=m
-CONFIG_USB_SERIAL_MOTOROLA=m
-CONFIG_USB_SERIAL_NAVMAN=m
-CONFIG_USB_SERIAL_PL2303=m
-CONFIG_USB_SERIAL_OTI6858=m
-CONFIG_USB_SERIAL_QCAUX=m
-CONFIG_USB_SERIAL_QUALCOMM=m
-CONFIG_USB_SERIAL_SPCP8X5=m
-CONFIG_USB_SERIAL_HP4X=m
-CONFIG_USB_SERIAL_SAFE=m
-CONFIG_USB_SERIAL_SAFE_PADDED=y
-CONFIG_USB_SERIAL_SIEMENS_MPI=m
-CONFIG_USB_SERIAL_SIERRAWIRELESS=m
-CONFIG_USB_SERIAL_SYMBOL=m
-# CONFIG_USB_SERIAL_TI is not set
-CONFIG_USB_SERIAL_CYBERJACK=m
-CONFIG_USB_SERIAL_XIRCOM=m
-CONFIG_USB_SERIAL_WWAN=m
-CONFIG_USB_SERIAL_OPTION=m
-CONFIG_USB_SERIAL_OMNINET=m
-CONFIG_USB_SERIAL_OPTICON=m
-CONFIG_USB_SERIAL_VIVOPAY_SERIAL=m
-CONFIG_USB_SERIAL_ZIO=m
-CONFIG_USB_SERIAL_SSU100=m
-CONFIG_USB_SERIAL_DEBUG=m
-
-#
-# USB Miscellaneous drivers
-#
-CONFIG_USB_EMI62=m
-CONFIG_USB_EMI26=m
-CONFIG_USB_ADUTUX=m
-CONFIG_USB_SEVSEG=m
-CONFIG_USB_RIO500=m
-CONFIG_USB_LEGOTOWER=m
-CONFIG_USB_LCD=m
-CONFIG_USB_LED=m
-CONFIG_USB_CYPRESS_CY7C63=m
-CONFIG_USB_CYTHERM=m
-CONFIG_USB_IDMOUSE=m
-CONFIG_USB_FTDI_ELAN=m
-CONFIG_USB_APPLEDISPLAY=m
-CONFIG_USB_SISUSBVGA=m
-CONFIG_USB_SISUSBVGA_CON=y
-CONFIG_USB_LD=m
-CONFIG_USB_TRANCEVIBRATOR=m
-CONFIG_USB_IOWARRIOR=m
-CONFIG_USB_TEST=m
-CONFIG_USB_ISIGHTFW=m
-CONFIG_USB_YUREX=m
-CONFIG_USB_ATM=m
-CONFIG_USB_SPEEDTOUCH=m
-CONFIG_USB_CXACRU=m
-CONFIG_USB_UEAGLEATM=m
-CONFIG_USB_XUSBATM=m
-CONFIG_USB_GADGET=y
-# CONFIG_USB_GADGET_DEBUG is not set
-# CONFIG_USB_GADGET_DEBUG_FILES is not set
-CONFIG_USB_GADGET_DEBUG_FS=y
-CONFIG_USB_GADGET_VBUS_DRAW=2
-CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2
-# CONFIG_USB_FUSB300 is not set
-CONFIG_USB_OMAP=y
-# CONFIG_USB_R8A66597 is not set
-# CONFIG_USB_GADGET_MUSB_HDRC is not set
-# CONFIG_USB_M66592 is not set
-# CONFIG_USB_NET2272 is not set
-# CONFIG_USB_DUMMY_HCD is not set
-CONFIG_USB_GADGET_DUALSPEED=y
-CONFIG_USB_ZERO=m
-CONFIG_USB_ZERO_HNPTEST=y
-CONFIG_USB_AUDIO=m
-CONFIG_USB_ETH=m
-CONFIG_USB_ETH_RNDIS=y
-CONFIG_USB_ETH_EEM=y
-CONFIG_USB_G_NCM=m
-CONFIG_USB_GADGETFS=m
-CONFIG_USB_FUNCTIONFS=m
-CONFIG_USB_FUNCTIONFS_ETH=y
-CONFIG_USB_FUNCTIONFS_RNDIS=y
-# CONFIG_USB_FUNCTIONFS_GENERIC is not set
-CONFIG_USB_FILE_STORAGE=m
-# CONFIG_USB_FILE_STORAGE_TEST is not set
-CONFIG_USB_MASS_STORAGE=m
-CONFIG_USB_G_SERIAL=m
-CONFIG_USB_MIDI_GADGET=m
-CONFIG_USB_G_PRINTER=m
-CONFIG_USB_CDC_COMPOSITE=m
-CONFIG_USB_G_NOKIA=m
-CONFIG_USB_G_ACM_MS=m
-CONFIG_USB_G_MULTI=m
-CONFIG_USB_G_MULTI_RNDIS=y
-# CONFIG_USB_G_MULTI_CDC is not set
-CONFIG_USB_G_HID=m
-# CONFIG_USB_G_DBGP is not set
-CONFIG_USB_G_WEBCAM=m
-
-#
-# OTG and related infrastructure
-#
-CONFIG_USB_OTG_UTILS=y
-CONFIG_USB_GPIO_VBUS=y
-# CONFIG_ISP1301_OMAP is not set
-# CONFIG_USB_ULPI is not set
-CONFIG_TWL4030_USB=y
-CONFIG_TWL6030_USB=y
-CONFIG_NOP_USB_XCEIV=y
-CONFIG_MMC=y
-# CONFIG_MMC_DEBUG is not set
-CONFIG_MMC_UNSAFE_RESUME=y
-# CONFIG_MMC_CLKGATE is not set
-
-#
-# MMC/SD/SDIO Card Drivers
-#
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_BLOCK_MINORS=8
-CONFIG_MMC_BLOCK_BOUNCE=y
-CONFIG_SDIO_UART=m
-# CONFIG_MMC_TEST is not set
-
-#
-# MMC/SD/SDIO Host Controller Drivers
-#
-CONFIG_MMC_SDHCI=y
-CONFIG_MMC_SDHCI_PLTFM=m
-# CONFIG_MMC_SDHCI_PXAV3 is not set
-# CONFIG_MMC_SDHCI_PXAV2 is not set
-CONFIG_MMC_OMAP=m
-CONFIG_MMC_OMAP_HS=y
-# CONFIG_MMC_DW is not set
-# CONFIG_MMC_VUB300 is not set
-# CONFIG_MMC_USHC is not set
-# CONFIG_MEMSTICK is not set
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-
-#
-# LED drivers
-#
-# CONFIG_LEDS_LM3530 is not set
-# CONFIG_LEDS_PCA9532 is not set
-CONFIG_LEDS_GPIO=y
-# CONFIG_LEDS_LP3944 is not set
-# CONFIG_LEDS_LP5521 is not set
-# CONFIG_LEDS_LP5523 is not set
-# CONFIG_LEDS_PCA955X is not set
-# CONFIG_LEDS_DAC124S085 is not set
-# CONFIG_LEDS_REGULATOR is not set
-# CONFIG_LEDS_BD2802 is not set
-# CONFIG_LEDS_LT3593 is not set
-# CONFIG_LEDS_RENESAS_TPU is not set
-CONFIG_LEDS_TRIGGERS=y
-
-#
-# LED Triggers
-#
-CONFIG_LEDS_TRIGGER_TIMER=m
-CONFIG_LEDS_TRIGGER_HEARTBEAT=y
-CONFIG_LEDS_TRIGGER_BACKLIGHT=m
-# CONFIG_LEDS_TRIGGER_GPIO is not set
-CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
-
-#
-# iptables trigger is under Netfilter config (LED target)
-#
-# CONFIG_ACCESSIBILITY is not set
-CONFIG_RTC_LIB=y
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
-# CONFIG_RTC_DEBUG is not set
-
-#
-# RTC interfaces
-#
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-CONFIG_RTC_INTF_DEV_UIE_EMUL=y
-# CONFIG_RTC_DRV_TEST is not set
-
-#
-# I2C RTC drivers
-#
-CONFIG_RTC_DRV_DS1307=m
-CONFIG_RTC_DRV_DS1374=m
-CONFIG_RTC_DRV_DS1672=m
-CONFIG_RTC_DRV_DS3232=m
-CONFIG_RTC_DRV_MAX6900=m
-CONFIG_RTC_DRV_RS5C372=m
-CONFIG_RTC_DRV_ISL1208=m
-CONFIG_RTC_DRV_ISL12022=m
-CONFIG_RTC_DRV_X1205=m
-CONFIG_RTC_DRV_PCF8563=m
-CONFIG_RTC_DRV_PCF8583=m
-CONFIG_RTC_DRV_M41T80=m
-CONFIG_RTC_DRV_M41T80_WDT=y
-CONFIG_RTC_DRV_BQ32K=m
-CONFIG_RTC_DRV_TWL4030=m
-CONFIG_RTC_DRV_S35390A=m
-CONFIG_RTC_DRV_FM3130=m
-CONFIG_RTC_DRV_RX8581=m
-CONFIG_RTC_DRV_RX8025=m
-CONFIG_RTC_DRV_EM3027=m
-CONFIG_RTC_DRV_RV3029C2=m
-
-#
-# SPI RTC drivers
-#
-CONFIG_RTC_DRV_M41T93=m
-CONFIG_RTC_DRV_M41T94=m
-CONFIG_RTC_DRV_DS1305=m
-CONFIG_RTC_DRV_DS1390=m
-CONFIG_RTC_DRV_MAX6902=m
-CONFIG_RTC_DRV_R9701=m
-CONFIG_RTC_DRV_RS5C348=m
-CONFIG_RTC_DRV_DS3234=m
-CONFIG_RTC_DRV_PCF2123=m
-
-#
-# Platform RTC drivers
-#
-CONFIG_RTC_DRV_CMOS=m
-CONFIG_RTC_DRV_DS1286=m
-CONFIG_RTC_DRV_DS1511=m
-CONFIG_RTC_DRV_DS1553=m
-CONFIG_RTC_DRV_DS1742=m
-CONFIG_RTC_DRV_STK17TA8=m
-CONFIG_RTC_DRV_M48T86=m
-CONFIG_RTC_DRV_M48T35=m
-CONFIG_RTC_DRV_M48T59=m
-CONFIG_RTC_DRV_MSM6242=m
-CONFIG_RTC_DRV_BQ4802=m
-CONFIG_RTC_DRV_RP5C01=m
-CONFIG_RTC_DRV_V3020=m
-
-#
-# on-CPU RTC drivers
-#
-# CONFIG_DMADEVICES is not set
-# CONFIG_AUXDISPLAY is not set
-CONFIG_UIO=m
-CONFIG_UIO_PDRV=m
-CONFIG_UIO_PDRV_GENIRQ=m
-
-#
-# Virtio drivers
-#
-# CONFIG_VIRTIO_BALLOON is not set
-# CONFIG_VIRTIO_MMIO is not set
-CONFIG_STAGING=y
-# CONFIG_USBIP_CORE is not set
-CONFIG_W35UND=m
-CONFIG_PRISM2_USB=m
-# CONFIG_ECHO is not set
-# CONFIG_ASUS_OLED is not set
-CONFIG_R8712U=m
-# CONFIG_RTS5139 is not set
-# CONFIG_TRANZPORT is not set
-# CONFIG_POHMELFS is not set
-# CONFIG_LINE6_USB is not set
-# CONFIG_USB_SERIAL_QUATECH2 is not set
-# CONFIG_USB_SERIAL_QUATECH_USB2 is not set
-# CONFIG_VT6656 is not set
-CONFIG_IIO=m
-# CONFIG_IIO_BUFFER is not set
-# CONFIG_IIO_TRIGGER is not set
-
-#
-# Accelerometers
-#
-# CONFIG_ADIS16201 is not set
-# CONFIG_ADIS16203 is not set
-# CONFIG_ADIS16204 is not set
-# CONFIG_ADIS16209 is not set
-# CONFIG_ADIS16220 is not set
-# CONFIG_ADIS16240 is not set
-# CONFIG_KXSD9 is not set
-# CONFIG_LIS3L02DQ is not set
-
-#
-# Analog to digital converters
-#
-# CONFIG_AD7291 is not set
-# CONFIG_AD7298 is not set
-# CONFIG_AD7606 is not set
-# CONFIG_AD799X is not set
-# CONFIG_AD7476 is not set
-# CONFIG_AD7887 is not set
-# CONFIG_AD7780 is not set
-# CONFIG_AD7793 is not set
-# CONFIG_AD7816 is not set
-# CONFIG_AD7192 is not set
-# CONFIG_ADT7310 is not set
-# CONFIG_ADT7410 is not set
-# CONFIG_AD7280 is not set
-# CONFIG_MAX1363 is not set
-
-#
-# Analog digital bi-direction converters
-#
-# CONFIG_ADT7316 is not set
-
-#
-# Capacitance to digital converters
-#
-# CONFIG_AD7150 is not set
-# CONFIG_AD7152 is not set
-# CONFIG_AD7746 is not set
-
-#
-# Digital to analog converters
-#
-# CONFIG_AD5064 is not set
-# CONFIG_AD5360 is not set
-# CONFIG_AD5624R_SPI is not set
-# CONFIG_AD5446 is not set
-# CONFIG_AD5504 is not set
-# CONFIG_AD5791 is not set
-# CONFIG_AD5686 is not set
-# CONFIG_MAX517 is not set
-
-#
-# Direct Digital Synthesis
-#
-# CONFIG_AD5930 is not set
-# CONFIG_AD9832 is not set
-# CONFIG_AD9834 is not set
-# CONFIG_AD9850 is not set
-# CONFIG_AD9852 is not set
-# CONFIG_AD9910 is not set
-# CONFIG_AD9951 is not set
-
-#
-# Digital gyroscope sensors
-#
-# CONFIG_ADIS16060 is not set
-# CONFIG_ADIS16080 is not set
-# CONFIG_ADIS16130 is not set
-# CONFIG_ADIS16260 is not set
-# CONFIG_ADXRS450 is not set
-
-#
-# Network Analyzer, Impedance Converters
-#
-# CONFIG_AD5933 is not set
-
-#
-# Inertial measurement units
-#
-# CONFIG_ADIS16400 is not set
-
-#
-# Light sensors
-#
-# CONFIG_SENSORS_ISL29018 is not set
-# CONFIG_SENSORS_TSL2563 is not set
-# CONFIG_TSL2583 is not set
-
-#
-# Magnetometer sensors
-#
-# CONFIG_SENSORS_AK8975 is not set
-# CONFIG_SENSORS_HMC5843 is not set
-
-#
-# Active energy metering IC
-#
-# CONFIG_ADE7753 is not set
-# CONFIG_ADE7754 is not set
-# CONFIG_ADE7758 is not set
-# CONFIG_ADE7759 is not set
-# CONFIG_ADE7854 is not set
-
-#
-# Resolver to digital converters
-#
-# CONFIG_AD2S90 is not set
-# CONFIG_AD2S1200 is not set
-# CONFIG_AD2S1210 is not set
-
-#
-# Triggers - standalone
-#
-# CONFIG_IIO_SIMPLE_DUMMY is not set
-CONFIG_XVMALLOC=y
-CONFIG_ZRAM=m
-# CONFIG_ZRAM_DEBUG is not set
-# CONFIG_FB_SM7XX is not set
-CONFIG_TIDSPBRIDGE=m
-CONFIG_TIDSPBRIDGE_MEMPOOL_SIZE=0x600000
-# CONFIG_TIDSPBRIDGE_DEBUG is not set
-CONFIG_TIDSPBRIDGE_RECOVERY=y
-# CONFIG_TIDSPBRIDGE_CACHE_LINE_CHECK is not set
-CONFIG_TIDSPBRIDGE_WDT3=y
-CONFIG_TIDSPBRIDGE_WDT_TIMEOUT=5
-# CONFIG_TIDSPBRIDGE_NTFY_PWRERR is not set
-# CONFIG_TIDSPBRIDGE_BACKTRACE is not set
-# CONFIG_USB_ENESTORAGE is not set
-# CONFIG_BCM_WIMAX is not set
-# CONFIG_FT1000 is not set
-
-#
-# Speakup console speech
-#
-# CONFIG_SPEAKUP is not set
-# CONFIG_TOUCHSCREEN_CLEARPAD_TM1217 is not set
-# CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4 is not set
-CONFIG_STAGING_MEDIA=y
-CONFIG_DVB_AS102=m
-CONFIG_EASYCAP=m
-# CONFIG_EASYCAP_DEBUG is not set
-CONFIG_LIRC_STAGING=y
-CONFIG_LIRC_IGORPLUGUSB=m
-CONFIG_LIRC_IMON=m
-CONFIG_LIRC_SASEM=m
-CONFIG_LIRC_SERIAL=m
-CONFIG_LIRC_SERIAL_TRANSMITTER=y
-CONFIG_LIRC_SIR=m
-CONFIG_LIRC_TTUSBIR=m
-CONFIG_LIRC_ZILOG=m
-CONFIG_CLKDEV_LOOKUP=y
-
-#
-# Hardware Spinlock drivers
-#
-CONFIG_CLKSRC_MMIO=y
-CONFIG_IOMMU_SUPPORT=y
-# CONFIG_OMAP_IOMMU is not set
-# CONFIG_VIRT_DRIVERS is not set
-CONFIG_PM_DEVFREQ=y
-
-#
-# DEVFREQ Governors
-#
-CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y
-CONFIG_DEVFREQ_GOV_PERFORMANCE=y
-CONFIG_DEVFREQ_GOV_POWERSAVE=y
-CONFIG_DEVFREQ_GOV_USERSPACE=y
-
-#
-# DEVFREQ Drivers
-#
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=y
-CONFIG_EXT2_FS_XATTR=y
-CONFIG_EXT2_FS_POSIX_ACL=y
-CONFIG_EXT2_FS_SECURITY=y
-# CONFIG_EXT2_FS_XIP is not set
-CONFIG_EXT3_FS=y
-CONFIG_EXT3_DEFAULTS_TO_ORDERED=y
-CONFIG_EXT3_FS_XATTR=y
-CONFIG_EXT3_FS_POSIX_ACL=y
-CONFIG_EXT3_FS_SECURITY=y
-CONFIG_EXT4_FS=y
-CONFIG_EXT4_FS_XATTR=y
-CONFIG_EXT4_FS_POSIX_ACL=y
-CONFIG_EXT4_FS_SECURITY=y
-# CONFIG_EXT4_DEBUG is not set
-CONFIG_JBD=y
-# CONFIG_JBD_DEBUG is not set
-CONFIG_JBD2=y
-# CONFIG_JBD2_DEBUG is not set
-CONFIG_FS_MBCACHE=y
-CONFIG_REISERFS_FS=m
-# CONFIG_REISERFS_CHECK is not set
-# CONFIG_REISERFS_PROC_INFO is not set
-CONFIG_REISERFS_FS_XATTR=y
-CONFIG_REISERFS_FS_POSIX_ACL=y
-CONFIG_REISERFS_FS_SECURITY=y
-CONFIG_JFS_FS=m
-CONFIG_JFS_POSIX_ACL=y
-CONFIG_JFS_SECURITY=y
-# CONFIG_JFS_DEBUG is not set
-CONFIG_JFS_STATISTICS=y
-CONFIG_XFS_FS=m
-CONFIG_XFS_QUOTA=y
-CONFIG_XFS_POSIX_ACL=y
-CONFIG_XFS_RT=y
-# CONFIG_XFS_DEBUG is not set
-CONFIG_GFS2_FS=m
-CONFIG_GFS2_FS_LOCKING_DLM=y
-CONFIG_OCFS2_FS=m
-CONFIG_OCFS2_FS_O2CB=m
-CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m
-CONFIG_OCFS2_FS_STATS=y
-CONFIG_OCFS2_DEBUG_MASKLOG=y
-# CONFIG_OCFS2_DEBUG_FS is not set
-CONFIG_BTRFS_FS=y
-CONFIG_BTRFS_FS_POSIX_ACL=y
-CONFIG_NILFS2_FS=m
-CONFIG_FS_POSIX_ACL=y
-CONFIG_EXPORTFS=y
-CONFIG_FILE_LOCKING=y
-CONFIG_FSNOTIFY=y
-CONFIG_DNOTIFY=y
-CONFIG_INOTIFY_USER=y
-CONFIG_FANOTIFY=y
-CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y
-CONFIG_QUOTA=y
-CONFIG_QUOTA_NETLINK_INTERFACE=y
-CONFIG_PRINT_QUOTA_WARNING=y
-# CONFIG_QUOTA_DEBUG is not set
-CONFIG_QUOTA_TREE=m
-CONFIG_QFMT_V1=m
-CONFIG_QFMT_V2=m
-CONFIG_QUOTACTL=y
-CONFIG_AUTOFS4_FS=m
-CONFIG_FUSE_FS=y
-CONFIG_CUSE=m
-CONFIG_GENERIC_ACL=y
-
-#
-# Caches
-#
-CONFIG_FSCACHE=m
-CONFIG_FSCACHE_STATS=y
-CONFIG_FSCACHE_HISTOGRAM=y
-# CONFIG_FSCACHE_DEBUG is not set
-# CONFIG_FSCACHE_OBJECT_LIST is not set
-CONFIG_CACHEFILES=m
-# CONFIG_CACHEFILES_DEBUG is not set
-# CONFIG_CACHEFILES_HISTOGRAM is not set
-
-#
-# CD-ROM/DVD Filesystems
-#
-CONFIG_ISO9660_FS=m
-CONFIG_JOLIET=y
-CONFIG_ZISOFS=y
-CONFIG_UDF_FS=m
-CONFIG_UDF_NLS=y
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=y
-CONFIG_MSDOS_FS=y
-CONFIG_VFAT_FS=y
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-CONFIG_NTFS_FS=m
-# CONFIG_NTFS_DEBUG is not set
-CONFIG_NTFS_RW=y
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_PROC_SYSCTL=y
-CONFIG_PROC_PAGE_MONITOR=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-CONFIG_TMPFS_POSIX_ACL=y
-CONFIG_TMPFS_XATTR=y
-# CONFIG_HUGETLB_PAGE is not set
-CONFIG_CONFIGFS_FS=m
-CONFIG_MISC_FILESYSTEMS=y
-# CONFIG_ADFS_FS is not set
-CONFIG_AFFS_FS=m
-CONFIG_ECRYPT_FS=m
-CONFIG_HFS_FS=m
-CONFIG_HFSPLUS_FS=m
-CONFIG_BEFS_FS=m
-# CONFIG_BEFS_DEBUG is not set
-CONFIG_BFS_FS=m
-CONFIG_EFS_FS=m
-CONFIG_JFFS2_FS=m
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
-# CONFIG_JFFS2_SUMMARY is not set
-# CONFIG_JFFS2_FS_XATTR is not set
-CONFIG_JFFS2_COMPRESSION_OPTIONS=y
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_LZO=y
-CONFIG_JFFS2_RTIME=y
-# CONFIG_JFFS2_RUBIN is not set
-# CONFIG_JFFS2_CMODE_NONE is not set
-CONFIG_JFFS2_CMODE_PRIORITY=y
-# CONFIG_JFFS2_CMODE_SIZE is not set
-# CONFIG_JFFS2_CMODE_FAVOURLZO is not set
-CONFIG_UBIFS_FS=m
-CONFIG_UBIFS_FS_XATTR=y
-# CONFIG_UBIFS_FS_ADVANCED_COMPR is not set
-CONFIG_UBIFS_FS_LZO=y
-CONFIG_UBIFS_FS_ZLIB=y
-# CONFIG_UBIFS_FS_DEBUG is not set
-CONFIG_LOGFS=m
-CONFIG_CRAMFS=m
-CONFIG_SQUASHFS=m
-# CONFIG_SQUASHFS_XATTR is not set
-CONFIG_SQUASHFS_ZLIB=y
-# CONFIG_SQUASHFS_LZO is not set
-# CONFIG_SQUASHFS_XZ is not set
-# CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set
-# CONFIG_SQUASHFS_EMBEDDED is not set
-CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
-CONFIG_VXFS_FS=m
-CONFIG_MINIX_FS=m
-CONFIG_OMFS_FS=m
-# CONFIG_HPFS_FS is not set
-CONFIG_QNX4FS_FS=m
-CONFIG_ROMFS_FS=m
-CONFIG_ROMFS_BACKED_BY_BLOCK=y
-# CONFIG_ROMFS_BACKED_BY_MTD is not set
-# CONFIG_ROMFS_BACKED_BY_BOTH is not set
-CONFIG_ROMFS_ON_BLOCK=y
-# CONFIG_PSTORE is not set
-CONFIG_SYSV_FS=m
-# CONFIG_UFS_FS is not set
-CONFIG_NETWORK_FILESYSTEMS=y
-CONFIG_NFS_FS=y
-CONFIG_NFS_V3=y
-CONFIG_NFS_V3_ACL=y
-CONFIG_NFS_V4=y
-CONFIG_NFS_V4_1=y
-CONFIG_PNFS_FILE_LAYOUT=y
-CONFIG_PNFS_BLOCK=m
-CONFIG_ROOT_NFS=y
-# CONFIG_NFS_USE_LEGACY_DNS is not set
-CONFIG_NFS_USE_KERNEL_DNS=y
-# CONFIG_NFS_USE_NEW_IDMAPPER is not set
-CONFIG_NFSD=m
-CONFIG_NFSD_V2_ACL=y
-CONFIG_NFSD_V3=y
-CONFIG_NFSD_V3_ACL=y
-CONFIG_NFSD_V4=y
-CONFIG_LOCKD=y
-CONFIG_LOCKD_V4=y
-CONFIG_NFS_ACL_SUPPORT=y
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
-CONFIG_SUNRPC_GSS=y
-CONFIG_SUNRPC_BACKCHANNEL=y
-CONFIG_RPCSEC_GSS_KRB5=m
-CONFIG_CEPH_FS=m
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-CONFIG_CIFS_WEAK_PW_HASH=y
-CONFIG_CIFS_UPCALL=y
-CONFIG_CIFS_XATTR=y
-CONFIG_CIFS_POSIX=y
-# CONFIG_CIFS_DEBUG2 is not set
-CONFIG_CIFS_DFS_UPCALL=y
-# CONFIG_CIFS_FSCACHE is not set
-# CONFIG_CIFS_ACL is not set
-CONFIG_NCP_FS=m
-CONFIG_NCPFS_PACKET_SIGNING=y
-CONFIG_NCPFS_IOCTL_LOCKING=y
-CONFIG_NCPFS_STRONG=y
-CONFIG_NCPFS_NFS_NS=y
-CONFIG_NCPFS_OS2_NS=y
-# CONFIG_NCPFS_SMALLDOS is not set
-CONFIG_NCPFS_NLS=y
-CONFIG_NCPFS_EXTRAS=y
-CONFIG_CODA_FS=m
-CONFIG_AFS_FS=m
-# CONFIG_AFS_DEBUG is not set
-# CONFIG_AFS_FSCACHE is not set
-# CONFIG_9P_FS is not set
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-CONFIG_ACORN_PARTITION=y
-# CONFIG_ACORN_PARTITION_CUMANA is not set
-# CONFIG_ACORN_PARTITION_EESOX is not set
-CONFIG_ACORN_PARTITION_ICS=y
-# CONFIG_ACORN_PARTITION_ADFS is not set
-# CONFIG_ACORN_PARTITION_POWERTEC is not set
-CONFIG_ACORN_PARTITION_RISCIX=y
-CONFIG_OSF_PARTITION=y
-CONFIG_AMIGA_PARTITION=y
-CONFIG_ATARI_PARTITION=y
-CONFIG_MAC_PARTITION=y
-CONFIG_MSDOS_PARTITION=y
-CONFIG_BSD_DISKLABEL=y
-CONFIG_MINIX_SUBPARTITION=y
-CONFIG_SOLARIS_X86_PARTITION=y
-# CONFIG_UNIXWARE_DISKLABEL is not set
-CONFIG_LDM_PARTITION=y
-# CONFIG_LDM_DEBUG is not set
-CONFIG_SGI_PARTITION=y
-CONFIG_ULTRIX_PARTITION=y
-CONFIG_SUN_PARTITION=y
-CONFIG_KARMA_PARTITION=y
-CONFIG_EFI_PARTITION=y
-# CONFIG_SYSV68_PARTITION is not set
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="iso8859-1"
-CONFIG_NLS_CODEPAGE_437=y
-CONFIG_NLS_CODEPAGE_737=m
-CONFIG_NLS_CODEPAGE_775=m
-CONFIG_NLS_CODEPAGE_850=m
-CONFIG_NLS_CODEPAGE_852=m
-CONFIG_NLS_CODEPAGE_855=m
-CONFIG_NLS_CODEPAGE_857=m
-CONFIG_NLS_CODEPAGE_860=m
-CONFIG_NLS_CODEPAGE_861=m
-CONFIG_NLS_CODEPAGE_862=m
-CONFIG_NLS_CODEPAGE_863=m
-CONFIG_NLS_CODEPAGE_864=m
-CONFIG_NLS_CODEPAGE_865=m
-CONFIG_NLS_CODEPAGE_866=m
-CONFIG_NLS_CODEPAGE_869=m
-CONFIG_NLS_CODEPAGE_936=m
-CONFIG_NLS_CODEPAGE_950=m
-CONFIG_NLS_CODEPAGE_932=m
-CONFIG_NLS_CODEPAGE_949=m
-CONFIG_NLS_CODEPAGE_874=m
-CONFIG_NLS_ISO8859_8=m
-CONFIG_NLS_CODEPAGE_1250=m
-CONFIG_NLS_CODEPAGE_1251=m
-CONFIG_NLS_ASCII=m
-CONFIG_NLS_ISO8859_1=y
-CONFIG_NLS_ISO8859_2=m
-CONFIG_NLS_ISO8859_3=m
-CONFIG_NLS_ISO8859_4=m
-CONFIG_NLS_ISO8859_5=m
-CONFIG_NLS_ISO8859_6=m
-CONFIG_NLS_ISO8859_7=m
-CONFIG_NLS_ISO8859_9=m
-CONFIG_NLS_ISO8859_13=m
-CONFIG_NLS_ISO8859_14=m
-CONFIG_NLS_ISO8859_15=m
-CONFIG_NLS_KOI8_R=m
-CONFIG_NLS_KOI8_U=m
-CONFIG_NLS_UTF8=m
-CONFIG_DLM=m
-# CONFIG_DLM_DEBUG is not set
-
-#
-# Kernel hacking
-#
-CONFIG_PRINTK_TIME=y
-CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4
-CONFIG_ENABLE_WARN_DEPRECATED=y
-CONFIG_ENABLE_MUST_CHECK=y
-CONFIG_FRAME_WARN=1024
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_STRIP_ASM_SYMS is not set
-CONFIG_UNUSED_SYMBOLS=y
-CONFIG_DEBUG_FS=y
-# CONFIG_HEADERS_CHECK is not set
-# CONFIG_DEBUG_SECTION_MISMATCH is not set
-CONFIG_DEBUG_KERNEL=y
-# CONFIG_DEBUG_SHIRQ is not set
-# CONFIG_LOCKUP_DETECTOR is not set
-# CONFIG_HARDLOCKUP_DETECTOR is not set
-CONFIG_DETECT_HUNG_TASK=y
-CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120
-# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
-CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
-CONFIG_SCHED_DEBUG=y
-CONFIG_SCHEDSTATS=y
-CONFIG_TIMER_STATS=y
-# CONFIG_DEBUG_OBJECTS is not set
-# CONFIG_SLUB_DEBUG_ON is not set
-# CONFIG_SLUB_STATS is not set
-# CONFIG_DEBUG_KMEMLEAK is not set
-# CONFIG_DEBUG_RT_MUTEXES is not set
-# CONFIG_RT_MUTEX_TESTER is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_MUTEXES is not set
-# CONFIG_DEBUG_LOCK_ALLOC is not set
-# CONFIG_PROVE_LOCKING is not set
-# CONFIG_SPARSE_RCU_POINTER is not set
-# CONFIG_LOCK_STAT is not set
-# CONFIG_DEBUG_ATOMIC_SLEEP is not set
-# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
-CONFIG_STACKTRACE=y
-# CONFIG_DEBUG_STACK_USAGE is not set
-# CONFIG_DEBUG_KOBJECT is not set
-# CONFIG_DEBUG_HIGHMEM is not set
-CONFIG_DEBUG_BUGVERBOSE=y
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_VM is not set
-# CONFIG_DEBUG_WRITECOUNT is not set
-# CONFIG_DEBUG_MEMORY_INIT is not set
-# CONFIG_DEBUG_LIST is not set
-# CONFIG_TEST_LIST_SORT is not set
-# CONFIG_DEBUG_SG is not set
-# CONFIG_DEBUG_NOTIFIERS is not set
-# CONFIG_DEBUG_CREDENTIALS is not set
-# CONFIG_BOOT_PRINTK_DELAY is not set
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_KPROBES_SANITY_TEST is not set
-# CONFIG_BACKTRACE_SELF_TEST is not set
-# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
-# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
-# CONFIG_LKDTM is not set
-# CONFIG_FAULT_INJECTION is not set
-# CONFIG_LATENCYTOP is not set
-CONFIG_SYSCTL_SYSCALL_CHECK=y
-# CONFIG_DEBUG_PAGEALLOC is not set
-CONFIG_NOP_TRACER=y
-CONFIG_HAVE_FUNCTION_TRACER=y
-CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
-CONFIG_HAVE_DYNAMIC_FTRACE=y
-CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
-CONFIG_HAVE_C_RECORDMCOUNT=y
-CONFIG_RING_BUFFER=y
-CONFIG_EVENT_TRACING=y
-CONFIG_EVENT_POWER_TRACING_DEPRECATED=y
-CONFIG_CONTEXT_SWITCH_TRACER=y
-CONFIG_RING_BUFFER_ALLOW_SWAP=y
-CONFIG_TRACING=y
-CONFIG_TRACING_SUPPORT=y
-CONFIG_FTRACE=y
-# CONFIG_FUNCTION_TRACER is not set
-# CONFIG_IRQSOFF_TRACER is not set
-# CONFIG_SCHED_TRACER is not set
-# CONFIG_ENABLE_DEFAULT_TRACERS is not set
-CONFIG_BRANCH_PROFILE_NONE=y
-# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
-# CONFIG_PROFILE_ALL_BRANCHES is not set
-# CONFIG_STACK_TRACER is not set
-# CONFIG_BLK_DEV_IO_TRACE is not set
-CONFIG_KPROBE_EVENT=y
-# CONFIG_RING_BUFFER_BENCHMARK is not set
-# CONFIG_DYNAMIC_DEBUG is not set
-# CONFIG_DMA_API_DEBUG is not set
-# CONFIG_ATOMIC64_SELFTEST is not set
-# CONFIG_ASYNC_RAID6_TEST is not set
-# CONFIG_SAMPLES is not set
-CONFIG_HAVE_ARCH_KGDB=y
-CONFIG_KGDB=y
-CONFIG_KGDB_SERIAL_CONSOLE=y
-# CONFIG_KGDB_TESTS is not set
-CONFIG_KGDB_KDB=y
-CONFIG_KDB_KEYBOARD=y
-# CONFIG_TEST_KSTRTOX is not set
-CONFIG_STRICT_DEVMEM=y
-CONFIG_ARM_UNWIND=y
-CONFIG_DEBUG_USER=y
-CONFIG_DEBUG_LL=y
-CONFIG_DEBUG_LL_UART_NONE=y
-# CONFIG_DEBUG_ICEDCC is not set
-CONFIG_EARLY_PRINTK=y
-# CONFIG_ARM_KPROBES_TEST is not set
-
-#
-# Security options
-#
-CONFIG_KEYS=y
-# CONFIG_ENCRYPTED_KEYS is not set
-# CONFIG_KEYS_DEBUG_PROC_KEYS is not set
-# CONFIG_SECURITY_DMESG_RESTRICT is not set
-CONFIG_SECURITY=y
-CONFIG_SECURITYFS=y
-CONFIG_SECURITY_NETWORK=y
-# CONFIG_SECURITY_NETWORK_XFRM is not set
-CONFIG_SECURITY_PATH=y
-CONFIG_LSM_MMAP_MIN_ADDR=0
-CONFIG_SECURITY_SELINUX=y
-CONFIG_SECURITY_SELINUX_BOOTPARAM=y
-CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=0
-CONFIG_SECURITY_SELINUX_DISABLE=y
-CONFIG_SECURITY_SELINUX_DEVELOP=y
-CONFIG_SECURITY_SELINUX_AVC_STATS=y
-CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1
-# CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX is not set
-CONFIG_SECURITY_SMACK=y
-CONFIG_SECURITY_TOMOYO=y
-CONFIG_SECURITY_TOMOYO_MAX_ACCEPT_ENTRY=2048
-CONFIG_SECURITY_TOMOYO_MAX_AUDIT_LOG=1024
-# CONFIG_SECURITY_TOMOYO_OMIT_USERSPACE_LOADER is not set
-CONFIG_SECURITY_TOMOYO_POLICY_LOADER="/sbin/tomoyo-init"
-CONFIG_SECURITY_TOMOYO_ACTIVATION_TRIGGER="/sbin/init"
-CONFIG_SECURITY_APPARMOR=y
-CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1
-# CONFIG_IMA is not set
-# CONFIG_EVM is not set
-# CONFIG_DEFAULT_SECURITY_SELINUX is not set
-# CONFIG_DEFAULT_SECURITY_SMACK is not set
-# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
-CONFIG_DEFAULT_SECURITY_APPARMOR=y
-# CONFIG_DEFAULT_SECURITY_DAC is not set
-CONFIG_DEFAULT_SECURITY="apparmor"
-CONFIG_XOR_BLOCKS=m
-CONFIG_ASYNC_CORE=m
-CONFIG_ASYNC_MEMCPY=m
-CONFIG_ASYNC_XOR=m
-CONFIG_ASYNC_PQ=m
-CONFIG_ASYNC_RAID6_RECOV=m
-CONFIG_CRYPTO=y
-
-#
-# Crypto core or helper
-#
-CONFIG_CRYPTO_ALGAPI=y
-CONFIG_CRYPTO_ALGAPI2=y
-CONFIG_CRYPTO_AEAD=m
-CONFIG_CRYPTO_AEAD2=y
-CONFIG_CRYPTO_BLKCIPHER=y
-CONFIG_CRYPTO_BLKCIPHER2=y
-CONFIG_CRYPTO_HASH=y
-CONFIG_CRYPTO_HASH2=y
-CONFIG_CRYPTO_RNG=m
-CONFIG_CRYPTO_RNG2=y
-CONFIG_CRYPTO_PCOMP=m
-CONFIG_CRYPTO_PCOMP2=y
-CONFIG_CRYPTO_MANAGER=y
-CONFIG_CRYPTO_MANAGER2=y
-# CONFIG_CRYPTO_USER is not set
-CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y
-CONFIG_CRYPTO_GF128MUL=m
-CONFIG_CRYPTO_NULL=m
-CONFIG_CRYPTO_WORKQUEUE=y
-CONFIG_CRYPTO_CRYPTD=m
-CONFIG_CRYPTO_AUTHENC=m
-CONFIG_CRYPTO_TEST=m
-
-#
-# Authenticated Encryption with Associated Data
-#
-CONFIG_CRYPTO_CCM=m
-CONFIG_CRYPTO_GCM=m
-CONFIG_CRYPTO_SEQIV=m
-
-#
-# Block modes
-#
-CONFIG_CRYPTO_CBC=y
-CONFIG_CRYPTO_CTR=m
-CONFIG_CRYPTO_CTS=m
-CONFIG_CRYPTO_ECB=y
-CONFIG_CRYPTO_LRW=m
-CONFIG_CRYPTO_PCBC=m
-CONFIG_CRYPTO_XTS=m
-
-#
-# Hash modes
-#
-CONFIG_CRYPTO_HMAC=m
-CONFIG_CRYPTO_XCBC=m
-CONFIG_CRYPTO_VMAC=m
-
-#
-# Digest
-#
-CONFIG_CRYPTO_CRC32C=y
-CONFIG_CRYPTO_GHASH=m
-CONFIG_CRYPTO_MD4=m
-CONFIG_CRYPTO_MD5=y
-CONFIG_CRYPTO_MICHAEL_MIC=m
-CONFIG_CRYPTO_RMD128=m
-CONFIG_CRYPTO_RMD160=m
-CONFIG_CRYPTO_RMD256=m
-CONFIG_CRYPTO_RMD320=m
-CONFIG_CRYPTO_SHA1=m
-CONFIG_CRYPTO_SHA256=m
-CONFIG_CRYPTO_SHA512=m
-CONFIG_CRYPTO_TGR192=m
-CONFIG_CRYPTO_WP512=m
-
-#
-# Ciphers
-#
-CONFIG_CRYPTO_AES=m
-CONFIG_CRYPTO_ANUBIS=m
-CONFIG_CRYPTO_ARC4=m
-CONFIG_CRYPTO_BLOWFISH=m
-CONFIG_CRYPTO_BLOWFISH_COMMON=m
-CONFIG_CRYPTO_CAMELLIA=m
-CONFIG_CRYPTO_CAST5=m
-CONFIG_CRYPTO_CAST6=m
-CONFIG_CRYPTO_DES=y
-CONFIG_CRYPTO_FCRYPT=m
-CONFIG_CRYPTO_KHAZAD=m
-CONFIG_CRYPTO_SALSA20=m
-CONFIG_CRYPTO_SEED=m
-CONFIG_CRYPTO_SERPENT=m
-CONFIG_CRYPTO_TEA=m
-CONFIG_CRYPTO_TWOFISH=m
-CONFIG_CRYPTO_TWOFISH_COMMON=m
-
-#
-# Compression
-#
-CONFIG_CRYPTO_DEFLATE=m
-CONFIG_CRYPTO_ZLIB=m
-CONFIG_CRYPTO_LZO=m
-
-#
-# Random Number Generation
-#
-CONFIG_CRYPTO_ANSI_CPRNG=m
-CONFIG_CRYPTO_USER_API=m
-CONFIG_CRYPTO_USER_API_HASH=m
-CONFIG_CRYPTO_USER_API_SKCIPHER=m
-CONFIG_CRYPTO_HW=y
-CONFIG_CRYPTO_DEV_OMAP_SHAM=m
-CONFIG_CRYPTO_DEV_OMAP_AES=m
-CONFIG_BINARY_PRINTF=y
-
-#
-# Library routines
-#
-CONFIG_RAID6_PQ=m
-CONFIG_BITREVERSE=y
-CONFIG_CRC_CCITT=m
-CONFIG_CRC16=y
-CONFIG_CRC_T10DIF=y
-CONFIG_CRC_ITU_T=m
-CONFIG_CRC32=y
-CONFIG_CRC7=m
-CONFIG_LIBCRC32C=y
-CONFIG_CRC8=y
-CONFIG_AUDIT_GENERIC=y
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
-CONFIG_LZO_COMPRESS=y
-CONFIG_LZO_DECOMPRESS=y
-CONFIG_XZ_DEC=y
-CONFIG_XZ_DEC_X86=y
-CONFIG_XZ_DEC_POWERPC=y
-CONFIG_XZ_DEC_IA64=y
-CONFIG_XZ_DEC_ARM=y
-CONFIG_XZ_DEC_ARMTHUMB=y
-CONFIG_XZ_DEC_SPARC=y
-CONFIG_XZ_DEC_BCJ=y
-# CONFIG_XZ_DEC_TEST is not set
-CONFIG_DECOMPRESS_GZIP=y
-CONFIG_DECOMPRESS_BZIP2=y
-CONFIG_DECOMPRESS_LZMA=y
-CONFIG_DECOMPRESS_XZ=y
-CONFIG_DECOMPRESS_LZO=y
-CONFIG_REED_SOLOMON=m
-CONFIG_REED_SOLOMON_DEC16=y
-CONFIG_TEXTSEARCH=y
-CONFIG_TEXTSEARCH_KMP=m
-CONFIG_TEXTSEARCH_BM=m
-CONFIG_TEXTSEARCH_FSM=m
-CONFIG_BTREE=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
-CONFIG_HAS_DMA=y
-CONFIG_NLATTR=y
-CONFIG_LRU_CACHE=m
-CONFIG_AVERAGE=y
-# CONFIG_CORDIC is not set
diff --git a/recipes-kernel/linux/linux-mainline-3.2/beagleboard/logo_linux_clut224.ppm b/recipes-kernel/linux/linux-mainline-3.2/beagleboard/logo_linux_clut224.ppm
deleted file mode 100644
index d29fc1c..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/beagleboard/logo_linux_clut224.ppm
+++ /dev/null
@@ -1,73147 +0,0 @@
-P3
-# CREATOR: GIMP PNM Filter Version 1.1
-387 63
-255
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-116
-28
-246
-116
-28
-246
-116
-28
-246
-116
-28
-246
-116
-28
-246
-116
-28
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-111
-26
-246
-116
-28
-246
-116
-28
-247
-118
-39
-247
-118
-39
-247
-118
-39
-246
-116
-28
-247
-111
-26
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-247
-111
-26
-247
-111
-26
-246
-116
-28
-247
-118
-39
-247
-118
-39
-247
-118
-39
-246
-116
-28
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-247
-111
-26
-247
-111
-26
-246
-116
-28
-247
-118
-39
-247
-118
-39
-247
-118
-39
-246
-116
-28
-247
-111
-26
-247
-111
-26
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-247
-111
-26
-247
-111
-26
-246
-116
-28
-247
-118
-39
-247
-118
-39
-247
-118
-39
-246
-116
-28
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-118
-39
-247
-123
-41
-247
-123
-41
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-123
-41
-247
-123
-41
-247
-118
-39
-246
-116
-28
-247
-111
-26
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-246
-109
-10
-247
-111
-26
-246
-116
-28
-247
-118
-39
-247
-123
-41
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-123
-41
-247
-118
-39
-246
-116
-28
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-111
-26
-246
-116
-28
-247
-123
-41
-247
-123
-41
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-123
-41
-247
-118
-39
-247
-111
-26
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-118
-39
-247
-123
-41
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-123
-41
-247
-123
-41
-247
-118
-39
-247
-111
-26
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-111
-26
-246
-116
-28
-247
-123
-41
-247
-123
-41
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-123
-41
-247
-118
-39
-247
-111
-26
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-247
-111
-26
-246
-116
-28
-247
-118
-39
-247
-123
-41
-247
-130
-53
-248
-138
-64
-250
-139
-73
-247
-143
-74
-247
-143
-74
-249
-146
-83
-249
-146
-83
-249
-146
-83
-247
-143
-74
-250
-139
-73
-248
-138
-64
-247
-130
-53
-247
-123
-41
-247
-118
-39
-246
-116
-28
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-246
-109
-10
-247
-111
-26
-246
-116
-28
-247
-123
-41
-247
-130
-53
-248
-138
-64
-250
-139
-73
-247
-143
-74
-247
-143
-74
-250
-139
-73
-248
-138
-64
-247
-130
-53
-247
-123
-41
-246
-116
-28
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-118
-39
-247
-123
-41
-247
-130
-60
-248
-138
-64
-247
-143
-74
-247
-143
-74
-247
-143
-74
-250
-139
-73
-247
-130
-60
-247
-130
-53
-247
-123
-41
-246
-116
-28
-247
-111
-26
-246
-109
-10
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-118
-39
-247
-130
-53
-247
-130
-60
-250
-139
-73
-247
-143
-74
-247
-143
-74
-247
-143
-74
-248
-138
-64
-247
-130
-60
-247
-130
-53
-247
-118
-39
-247
-111
-26
-247
-111
-26
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-118
-39
-247
-123
-41
-247
-130
-60
-248
-138
-64
-247
-143
-74
-247
-143
-74
-247
-143
-74
-250
-139
-73
-247
-130
-60
-247
-130
-53
-247
-123
-41
-246
-116
-28
-247
-111
-26
-246
-109
-10
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-247
-111
-26
-246
-116
-28
-247
-118
-39
-247
-130
-53
-247
-130
-60
-250
-139
-73
-249
-146
-83
-249
-152
-92
-249
-159
-103
-249
-159
-103
-247
-165
-111
-251
-168
-115
-251
-168
-115
-247
-165
-111
-247
-165
-111
-249
-159
-103
-249
-152
-92
-249
-146
-83
-250
-139
-73
-247
-130
-60
-247
-123
-41
-247
-118
-39
-247
-111
-26
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-246
-116
-28
-247
-123
-41
-247
-130
-60
-247
-143
-74
-247
-150
-84
-246
-156
-93
-249
-159
-103
-249
-159
-103
-246
-156
-93
-247
-150
-84
-250
-139
-73
-247
-130
-60
-247
-123
-41
-246
-116
-28
-247
-111
-26
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-118
-39
-247
-123
-41
-248
-138
-64
-247
-143
-74
-249
-152
-92
-249
-159
-103
-249
-159
-103
-249
-159
-103
-246
-156
-93
-247
-150
-84
-250
-139
-73
-247
-130
-53
-247
-123
-41
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-118
-39
-247
-130
-53
-248
-138
-64
-249
-146
-83
-249
-152
-92
-249
-159
-103
-249
-159
-103
-249
-159
-103
-249
-152
-92
-249
-146
-83
-248
-138
-64
-247
-130
-53
-247
-118
-39
-247
-111
-26
-246
-109
-10
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-118
-39
-247
-130
-53
-248
-138
-64
-247
-143
-74
-249
-152
-92
-249
-159
-103
-249
-159
-103
-249
-159
-103
-246
-156
-93
-247
-150
-84
-250
-139
-73
-247
-130
-53
-247
-123
-41
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-118
-39
-247
-123
-41
-247
-130
-60
-250
-139
-73
-247
-150
-84
-249
-159
-103
-247
-165
-111
-249
-174
-124
-248
-180
-134
-252
-185
-144
-240
-181
-138
-219
-170
-138
-219
-170
-138
-230
-173
-136
-240
-181
-138
-248
-180
-134
-249
-174
-124
-247
-165
-111
-249
-159
-103
-249
-146
-83
-248
-138
-64
-247
-130
-53
-247
-123
-41
-247
-111
-26
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-123
-41
-247
-130
-60
-247
-143
-74
-249
-159
-103
-214
-151
-109
-121
-100
-85
-65
-67
-64
-74
-68
-68
-129
-102
-78
-214
-151
-109
-246
-156
-93
-247
-143
-74
-247
-130
-53
-247
-118
-39
-247
-111
-26
-246
-109
-10
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-111
-26
-246
-116
-28
-247
-123
-41
-248
-138
-64
-249
-146
-83
-249
-159
-103
-204
-141
-99
-102
-91
-75
-65
-67
-64
-81
-77
-76
-146
-111
-88
-238
-159
-107
-249
-152
-92
-250
-139
-73
-247
-130
-53
-247
-118
-39
-247
-111
-26
-246
-109
-10
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-118
-39
-247
-130
-53
-248
-138
-64
-247
-150
-84
-245
-162
-103
-162
-125
-96
-81
-77
-76
-55
-66
-67
-99
-90
-79
-187
-140
-108
-249
-159
-103
-247
-150
-84
-248
-138
-64
-247
-123
-41
-246
-116
-28
-247
-111
-26
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-111
-26
-246
-116
-28
-247
-123
-41
-248
-138
-64
-249
-146
-83
-249
-159
-103
-187
-140
-108
-102
-91
-75
-58
-69
-70
-76
-78
-76
-146
-111
-88
-238
-159
-107
-249
-152
-92
-250
-139
-73
-247
-130
-53
-247
-118
-39
-247
-111
-26
-246
-109
-10
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-246
-109
-10
-247
-111
-26
-246
-116
-28
-247
-123
-41
-247
-130
-53
-248
-138
-64
-249
-146
-83
-249
-159
-103
-251
-168
-115
-248
-180
-134
-239
-182
-144
-186
-157
-134
-124
-111
-99
-82
-69
-65
-65
-58
-56
-55
-48
-48
-65
-58
-56
-65
-58
-56
-65
-58
-56
-99
-90
-79
-158
-130
-108
-230
-173
-136
-250
-176
-132
-247
-165
-111
-249
-152
-92
-247
-143
-74
-247
-130
-53
-247
-123
-41
-246
-116
-28
-247
-111
-26
-246
-109
-10
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-111
-26
-247
-118
-39
-247
-130
-53
-250
-139
-73
-246
-156
-93
-214
-151
-109
-74
-68
-68
-56
-64
-60
-95
-87
-59
-88
-82
-59
-56
-64
-60
-81
-77
-76
-238
-159
-107
-249
-152
-92
-248
-138
-64
-247
-130
-53
-246
-116
-28
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-118
-39
-247
-130
-53
-247
-143
-74
-249
-159
-103
-187
-140
-108
-51
-62
-63
-69
-69
-61
-95
-87
-59
-83
-78
-61
-48
-58
-59
-121
-100
-85
-247
-165
-111
-247
-150
-84
-248
-138
-64
-247
-123
-41
-246
-116
-28
-246
-109
-10
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-123
-41
-247
-130
-60
-247
-150
-84
-247
-165
-111
-139
-115
-96
-48
-58
-59
-95
-78
-64
-118
-86
-65
-81
-73
-62
-48
-58
-59
-162
-125
-96
-249
-159
-103
-249
-146
-83
-247
-130
-60
-247
-123
-41
-247
-111
-26
-246
-109
-10
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-118
-39
-247
-130
-53
-247
-143
-74
-249
-159
-103
-187
-140
-108
-48
-58
-59
-76
-70
-64
-118
-86
-65
-95
-78
-64
-51
-62
-63
-121
-100
-85
-247
-165
-111
-247
-150
-84
-248
-138
-64
-247
-123
-41
-247
-111
-26
-246
-109
-10
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-246
-109
-10
-247
-111
-26
-246
-116
-28
-247
-123
-41
-247
-130
-60
-247
-143
-74
-249
-152
-92
-247
-165
-111
-250
-176
-132
-251
-192
-154
-167
-142
-123
-65
-58
-56
-35
-31
-30
-71
-60
-43
-108
-87
-46
-129
-106
-52
-137
-110
-49
-156
-125
-62
-187
-166
-150
-129
-106
-52
-101
-83
-47
-59
-50
-39
-55
-48
-48
-139
-115
-96
-240
-181
-138
-249
-174
-124
-249
-159
-103
-247
-143
-74
-247
-130
-53
-247
-123
-41
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-123
-41
-247
-130
-60
-247
-150
-84
-247
-165
-111
-124
-111
-99
-56
-64
-60
-137
-110
-49
-171
-129
-45
-171
-129
-45
-129
-106
-52
-51
-62
-63
-162
-125
-96
-247
-165
-111
-249
-146
-83
-247
-130
-60
-247
-118
-39
-247
-111
-26
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-123
-41
-248
-138
-64
-249
-152
-92
-245
-169
-119
-81
-77
-76
-69
-69
-61
-152
-119
-47
-171
-129
-45
-171
-129
-45
-105
-93
-60
-48
-58
-59
-187
-140
-108
-249
-159
-103
-247
-143
-74
-247
-130
-53
-247
-118
-39
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-111
-26
-246
-116
-28
-247
-130
-53
-250
-139
-73
-249
-159
-103
-210
-156
-119
-51
-62
-63
-112
-85
-63
-234
-126
-45
-234
-126
-45
-225
-124
-48
-95
-78
-64
-63
-74
-74
-234
-168
-124
-246
-156
-93
-250
-139
-73
-247
-123
-41
-246
-116
-28
-246
-109
-10
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-123
-41
-248
-138
-64
-249
-152
-92
-245
-169
-119
-81
-77
-76
-81
-73
-62
-212
-120
-56
-234
-126
-45
-234
-126
-45
-135
-94
-64
-41
-58
-57
-187
-140
-108
-249
-159
-103
-247
-143
-74
-247
-130
-53
-247
-118
-39
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-246
-116
-28
-247
-123
-41
-247
-130
-60
-249
-146
-83
-249
-159
-103
-249
-174
-124
-249
-189
-146
-236
-186
-153
-99
-90
-79
-47
-40
-38
-85
-71
-43
-145
-114
-49
-171
-129
-45
-171
-129
-45
-171
-129
-45
-168
-127
-42
-160
-120
-43
-195
-167
-113
-216
-194
-154
-168
-127
-42
-168
-127
-42
-123
-102
-54
-59
-50
-39
-82
-69
-65
-230
-173
-136
-249
-174
-124
-249
-159
-103
-247
-143
-74
-247
-130
-53
-247
-118
-39
-247
-111
-26
-246
-109
-10
-247
-103
-7
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-123
-41
-248
-138
-64
-246
-156
-93
-245
-169
-119
-84
-85
-82
-83
-78
-61
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-75
-74
-61
-101
-100
-92
-249
-174
-124
-246
-156
-93
-248
-138
-64
-247
-123
-41
-246
-116
-28
-247
-111
-26
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-111
-26
-247
-118
-39
-247
-130
-53
-247
-143
-74
-249
-159
-103
-210
-156
-119
-48
-58
-59
-105
-93
-60
-171
-129
-45
-158
-125
-46
-161
-127
-40
-152
-119
-47
-62
-63
-61
-139
-115
-96
-251
-168
-115
-247
-150
-84
-247
-130
-60
-247
-123
-41
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-111
-26
-247
-118
-39
-247
-130
-53
-249
-146
-83
-247
-165
-111
-158
-130
-108
-51
-62
-63
-188
-112
-56
-234
-125
-52
-224
-123
-55
-234
-126
-45
-163
-104
-61
-48
-58
-59
-210
-156
-119
-247
-165
-111
-249
-146
-83
-247
-130
-60
-247
-118
-39
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-118
-39
-247
-130
-53
-247
-143
-74
-247
-165
-111
-210
-156
-119
-55
-66
-67
-146
-97
-64
-234
-126
-45
-224
-123
-55
-234
-125
-52
-199
-115
-54
-62
-63
-61
-139
-115
-96
-251
-168
-115
-247
-150
-84
-247
-130
-60
-247
-118
-39
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-111
-26
-246
-116
-28
-247
-123
-41
-247
-130
-60
-249
-146
-83
-249
-159
-103
-250
-176
-132
-219
-170
-138
-150
-125
-114
-65
-58
-56
-24
-22
-23
-59
-50
-39
-152
-119
-47
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-160
-120
-43
-158
-125
-46
-227
-196
-175
-192
-155
-91
-160
-120
-43
-171
-129
-45
-158
-125
-46
-85
-71
-43
-65
-58
-56
-219
-170
-138
-249
-174
-124
-246
-156
-93
-250
-139
-73
-247
-130
-53
-247
-118
-39
-247
-111
-26
-246
-109
-10
-247
-103
-7
-246
-97
-3
-247
-103
-7
-246
-109
-10
-246
-116
-28
-247
-130
-53
-247
-143
-74
-249
-159
-103
-230
-173
-136
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-91
-92
-89
-252
-185
-144
-247
-165
-111
-249
-146
-83
-247
-130
-60
-247
-123
-41
-246
-116
-28
-247
-111
-26
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-111
-26
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-111
-26
-246
-116
-28
-247
-123
-41
-248
-138
-64
-249
-152
-92
-249
-174
-124
-203
-161
-131
-43
-57
-62
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-63
-69
-60
-133
-120
-107
-250
-176
-132
-246
-156
-93
-248
-138
-64
-247
-123
-41
-246
-116
-28
-247
-111
-26
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-111
-26
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-123
-41
-248
-138
-64
-249
-152
-92
-249
-174
-124
-154
-133
-118
-56
-64
-60
-199
-115
-54
-227
-126
-50
-224
-123
-55
-234
-125
-52
-183
-110
-59
-51
-62
-63
-186
-157
-134
-250
-176
-132
-246
-156
-93
-250
-139
-73
-247
-130
-53
-247
-118
-39
-247
-111
-26
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-111
-26
-247
-111
-26
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-111
-26
-247
-118
-39
-247
-130
-53
-250
-139
-73
-246
-156
-93
-249
-174
-124
-209
-171
-139
-51
-62
-63
-155
-100
-63
-234
-125
-52
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-133
-120
-107
-249
-174
-124
-246
-156
-93
-248
-138
-64
-247
-123
-41
-247
-111
-26
-246
-109
-10
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-111
-26
-247
-111
-26
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-118
-39
-247
-130
-53
-247
-143
-74
-249
-159
-103
-250
-176
-132
-158
-130
-108
-47
-40
-38
-59
-50
-39
-85
-71
-43
-85
-71
-43
-59
-50
-39
-35
-31
-30
-123
-102
-54
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-152
-119
-47
-192
-155
-91
-224
-207
-180
-158
-125
-46
-160
-120
-43
-168
-127
-42
-171
-129
-45
-71
-60
-43
-82
-69
-65
-239
-182
-144
-249
-174
-124
-249
-152
-92
-248
-138
-64
-247
-123
-41
-246
-116
-28
-247
-111
-26
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-111
-26
-247
-118
-39
-247
-130
-53
-249
-146
-83
-247
-165
-111
-239
-182
-144
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-91
-92
-89
-250
-197
-158
-250
-176
-132
-249
-159
-103
-247
-143
-74
-247
-130
-60
-247
-123
-41
-247
-118
-39
-246
-116
-28
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-116
-28
-247
-118
-39
-247
-118
-39
-247
-118
-39
-246
-116
-28
-246
-116
-28
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-247
-111
-26
-247
-111
-26
-246
-116
-28
-246
-116
-28
-246
-116
-28
-247
-118
-39
-247
-118
-39
-246
-116
-28
-246
-116
-28
-246
-116
-28
-246
-116
-28
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-116
-28
-246
-116
-28
-247
-118
-39
-247
-118
-39
-246
-116
-28
-246
-116
-28
-246
-116
-28
-246
-116
-28
-246
-116
-28
-247
-118
-39
-247
-123
-41
-247
-130
-60
-249
-146
-83
-249
-159
-103
-248
-180
-134
-212
-173
-150
-48
-58
-59
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-65
-67
-64
-137
-127
-115
-248
-180
-134
-249
-159
-103
-247
-143
-74
-247
-130
-53
-247
-118
-39
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-116
-28
-247
-118
-39
-247
-118
-39
-247
-118
-39
-246
-116
-28
-246
-116
-28
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-118
-39
-247
-130
-53
-250
-139
-73
-249
-159
-103
-250
-176
-132
-167
-142
-123
-56
-64
-60
-199
-115
-54
-227
-126
-50
-224
-123
-55
-234
-125
-52
-173
-106
-60
-48
-58
-59
-187
-166
-150
-249
-189
-146
-251
-168
-115
-249
-152
-92
-250
-139
-73
-247
-130
-53
-247
-123
-41
-246
-116
-28
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-116
-28
-246
-116
-28
-247
-118
-39
-247
-118
-39
-246
-116
-28
-246
-116
-28
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-116
-28
-246
-116
-28
-247
-118
-39
-247
-118
-39
-246
-116
-28
-246
-116
-28
-246
-116
-28
-246
-116
-28
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-116
-28
-247
-123
-41
-247
-130
-53
-248
-138
-64
-247
-150
-84
-247
-165
-111
-252
-185
-144
-212
-173
-150
-51
-62
-63
-155
-100
-63
-234
-125
-52
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-133
-120
-107
-248
-180
-134
-249
-159
-103
-250
-139
-73
-247
-123
-41
-247
-111
-26
-246
-109
-10
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-116
-28
-246
-116
-28
-247
-118
-39
-247
-118
-39
-247
-118
-39
-246
-116
-28
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-103
-7
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-116
-28
-246
-116
-28
-247
-118
-39
-247
-118
-39
-246
-116
-28
-246
-116
-28
-246
-116
-28
-246
-116
-28
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-111
-26
-247
-118
-39
-247
-130
-53
-250
-139
-73
-249
-159
-103
-250
-176
-132
-167
-142
-123
-24
-22
-23
-85
-71
-43
-158
-125
-46
-171
-129
-45
-171
-129
-45
-171
-129
-45
-85
-71
-43
-35
-31
-30
-145
-114
-49
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-152
-119
-47
-216
-194
-154
-195
-167
-113
-152
-119
-47
-158
-125
-46
-168
-127
-42
-158
-125
-46
-59
-50
-39
-139
-115
-96
-252
-185
-144
-247
-165
-111
-247
-150
-84
-247
-130
-60
-247
-123
-41
-247
-111
-26
-246
-109
-10
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-118
-39
-247
-130
-60
-247
-150
-84
-251
-168
-115
-236
-186
-153
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-91
-92
-89
-251
-209
-178
-249
-189
-146
-249
-174
-124
-249
-159
-103
-249
-146
-83
-248
-138
-64
-247
-130
-53
-247
-130
-53
-247
-123
-41
-247
-118
-39
-246
-116
-28
-247
-111
-26
-247
-111
-26
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-247
-111
-26
-246
-116
-28
-247
-118
-39
-247
-123
-41
-247
-123
-41
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-123
-41
-247
-123
-41
-246
-116
-28
-247
-111
-26
-247
-111
-26
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-111
-26
-246
-116
-28
-247
-118
-39
-247
-123
-41
-247
-123
-41
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-118
-39
-246
-116
-28
-246
-116
-28
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-116
-28
-247
-118
-39
-247
-123
-41
-247
-123
-41
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-248
-138
-64
-247
-143
-74
-246
-156
-93
-249
-174
-124
-251
-192
-154
-207
-178
-158
-48
-58
-59
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-63
-69
-60
-137
-127
-115
-249
-189
-146
-247
-165
-111
-247
-150
-84
-248
-138
-64
-247
-130
-53
-247
-123
-41
-247
-118
-39
-247
-123
-41
-247
-123
-41
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-123
-41
-247
-118
-39
-247
-118
-39
-247
-118
-39
-247
-123
-41
-247
-130
-60
-247
-143
-74
-249
-159
-103
-252
-185
-144
-167
-142
-123
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-234
-125
-52
-173
-106
-60
-51
-62
-63
-187
-166
-150
-250
-200
-166
-248
-180
-134
-247
-165
-111
-249
-152
-92
-247
-143
-74
-247
-130
-60
-247
-130
-53
-247
-123
-41
-247
-123
-41
-247
-118
-39
-247
-111
-26
-247
-111
-26
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-118
-39
-247
-123
-41
-247
-123
-41
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-123
-41
-247
-123
-41
-247
-118
-39
-247
-111
-26
-247
-111
-26
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-118
-39
-247
-123
-41
-247
-123
-41
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-130
-53
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-118
-39
-247
-118
-39
-247
-118
-39
-247
-118
-39
-247
-118
-39
-247
-118
-39
-247
-118
-39
-247
-123
-41
-247
-123
-41
-247
-130
-53
-247
-130
-60
-250
-139
-73
-249
-152
-92
-247
-165
-111
-248
-180
-134
-250
-197
-158
-207
-178
-158
-51
-62
-63
-155
-100
-63
-234
-125
-52
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-252
-185
-144
-249
-159
-103
-247
-143
-74
-247
-130
-53
-246
-116
-28
-246
-109
-10
-247
-103
-7
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-118
-39
-247
-123
-41
-247
-123
-41
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-123
-41
-247
-123
-41
-247
-118
-39
-246
-116
-28
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-116
-28
-247
-118
-39
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-130
-53
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-118
-39
-247
-118
-39
-246
-116
-28
-246
-116
-28
-246
-116
-28
-247
-118
-39
-247
-118
-39
-247
-123
-41
-247
-123
-41
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-118
-39
-246
-116
-28
-247
-111
-26
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-123
-41
-248
-138
-64
-247
-150
-84
-251
-168
-115
-230
-173
-136
-47
-40
-38
-59
-50
-39
-168
-127
-42
-168
-127
-42
-158
-125
-46
-158
-125
-46
-161
-127
-40
-171
-129
-45
-59
-50
-39
-71
-60
-43
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-152
-119
-47
-170
-137
-67
-239
-227
-208
-170
-137
-67
-160
-120
-43
-158
-125
-46
-171
-129
-45
-123
-102
-54
-47
-40
-38
-209
-171
-139
-248
-180
-134
-247
-165
-111
-249
-146
-83
-247
-130
-60
-247
-123
-41
-247
-111
-26
-247
-111
-26
-246
-109
-10
-247
-111
-26
-247
-123
-41
-247
-130
-60
-247
-150
-84
-249
-174
-124
-236
-186
-153
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-91
-92
-89
-255
-215
-190
-253
-204
-176
-249
-189
-146
-249
-174
-124
-247
-165
-111
-246
-156
-93
-249
-146
-83
-247
-143
-74
-248
-138
-64
-247
-130
-60
-247
-130
-53
-247
-123
-41
-246
-116
-28
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-116
-28
-247
-118
-39
-247
-123
-41
-247
-130
-53
-248
-138
-64
-250
-139
-73
-247
-143
-74
-249
-146
-83
-247
-150
-84
-249
-146
-83
-249
-146
-83
-247
-143
-74
-248
-138
-64
-247
-130
-60
-247
-130
-53
-247
-123
-41
-247
-118
-39
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-109
-10
-247
-111
-26
-247
-111
-26
-246
-116
-28
-247
-118
-39
-247
-123
-41
-247
-130
-53
-248
-138
-64
-250
-139
-73
-247
-143
-74
-249
-146
-83
-249
-146
-83
-249
-146
-83
-249
-146
-83
-249
-146
-83
-247
-143
-74
-247
-143
-74
-250
-139
-73
-250
-139
-73
-248
-138
-64
-247
-130
-60
-247
-130
-53
-247
-130
-53
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-130
-53
-247
-130
-60
-250
-139
-73
-247
-143
-74
-249
-146
-83
-249
-146
-83
-249
-146
-83
-249
-146
-83
-249
-146
-83
-247
-143
-74
-247
-143
-74
-247
-143
-74
-247
-143
-74
-247
-150
-84
-249
-159
-103
-249
-174
-124
-252
-185
-144
-250
-200
-166
-217
-187
-166
-48
-58
-59
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-63
-69
-60
-137
-127
-115
-251
-192
-154
-249
-174
-124
-246
-156
-93
-247
-143
-74
-248
-138
-64
-247
-130
-60
-247
-130
-60
-248
-138
-64
-250
-139
-73
-247
-143
-74
-249
-146
-83
-247
-150
-84
-249
-146
-83
-249
-146
-83
-247
-143
-74
-248
-138
-64
-247
-130
-60
-247
-130
-53
-247
-130
-53
-247
-130
-60
-250
-139
-73
-247
-150
-84
-251
-168
-115
-249
-189
-146
-161
-144
-134
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-234
-125
-52
-173
-106
-60
-48
-58
-59
-187
-166
-150
-253
-212
-188
-250
-197
-158
-248
-180
-134
-251
-168
-115
-249
-159
-103
-247
-150
-84
-247
-143
-74
-250
-139
-73
-248
-138
-64
-247
-130
-53
-247
-123
-41
-247
-118
-39
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-118
-39
-247
-123
-41
-247
-130
-53
-248
-138
-64
-250
-139
-73
-247
-143
-74
-249
-146
-83
-247
-150
-84
-247
-150
-84
-249
-146
-83
-247
-143
-74
-250
-139
-73
-247
-130
-60
-247
-130
-53
-247
-123
-41
-247
-118
-39
-247
-111
-26
-247
-111
-26
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-118
-39
-247
-123
-41
-247
-130
-53
-247
-130
-60
-248
-138
-64
-247
-143
-74
-249
-146
-83
-249
-146
-83
-249
-146
-83
-249
-146
-83
-249
-146
-83
-247
-143
-74
-247
-143
-74
-247
-143
-74
-250
-139
-73
-250
-139
-73
-250
-139
-73
-248
-138
-64
-248
-138
-64
-248
-138
-64
-248
-138
-64
-248
-138
-64
-248
-138
-64
-250
-139
-73
-250
-139
-73
-250
-139
-73
-250
-139
-73
-247
-143
-74
-247
-143
-74
-250
-139
-73
-250
-139
-73
-248
-138
-64
-248
-138
-64
-247
-130
-60
-247
-130
-60
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-60
-247
-130
-60
-248
-138
-64
-250
-139
-73
-247
-143
-74
-247
-150
-84
-249
-159
-103
-251
-168
-115
-248
-180
-134
-250
-197
-158
-253
-212
-188
-207
-178
-158
-51
-62
-63
-155
-100
-63
-234
-125
-52
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-249
-189
-146
-247
-165
-111
-247
-143
-74
-247
-130
-53
-246
-116
-28
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-118
-39
-247
-123
-41
-247
-130
-53
-247
-130
-60
-250
-139
-73
-247
-143
-74
-249
-146
-83
-247
-150
-84
-247
-150
-84
-249
-146
-83
-247
-143
-74
-250
-139
-73
-248
-138
-64
-247
-130
-53
-247
-123
-41
-247
-123
-41
-247
-118
-39
-247
-118
-39
-247
-118
-39
-247
-123
-41
-247
-123
-41
-247
-130
-53
-247
-130
-53
-248
-138
-64
-248
-138
-64
-250
-139
-73
-250
-139
-73
-247
-143
-74
-247
-143
-74
-250
-139
-73
-250
-139
-73
-248
-138
-64
-247
-130
-60
-247
-130
-60
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-60
-248
-138
-64
-250
-139
-73
-247
-143
-74
-249
-146
-83
-249
-146
-83
-249
-146
-83
-249
-146
-83
-249
-146
-83
-247
-143
-74
-247
-143
-74
-250
-139
-73
-250
-139
-73
-248
-138
-64
-247
-130
-60
-247
-130
-53
-247
-123
-41
-247
-123
-41
-246
-116
-28
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-111
-26
-247
-118
-39
-247
-130
-53
-247
-143
-74
-249
-159
-103
-252
-185
-144
-139
-115
-96
-35
-31
-30
-129
-106
-52
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-117
-98
-55
-35
-31
-30
-152
-119
-47
-168
-127
-42
-168
-127
-42
-160
-120
-43
-168
-127
-42
-171
-129
-45
-152
-119
-47
-216
-194
-154
-224
-207
-180
-160
-120
-43
-160
-120
-43
-137
-110
-49
-102
-91
-75
-35
-31
-30
-115
-102
-92
-250
-200
-166
-250
-176
-132
-249
-159
-103
-249
-146
-83
-247
-130
-60
-247
-123
-41
-246
-116
-28
-247
-111
-26
-246
-116
-28
-247
-123
-41
-248
-138
-64
-249
-152
-92
-249
-174
-124
-236
-186
-153
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-91
-92
-89
-255
-215
-190
-255
-215
-190
-253
-204
-176
-250
-197
-158
-252
-185
-144
-249
-174
-124
-251
-168
-115
-249
-159
-103
-246
-156
-93
-247
-150
-84
-250
-139
-73
-247
-130
-60
-247
-130
-53
-247
-123
-41
-247
-118
-39
-246
-116
-28
-246
-116
-28
-247
-118
-39
-247
-123
-41
-247
-130
-53
-248
-138
-64
-249
-146
-83
-249
-152
-92
-249
-159
-103
-247
-165
-111
-251
-168
-115
-251
-168
-115
-251
-168
-115
-251
-168
-115
-247
-165
-111
-249
-159
-103
-247
-150
-84
-247
-143
-74
-248
-138
-64
-247
-130
-53
-247
-123
-41
-247
-118
-39
-246
-116
-28
-246
-116
-28
-246
-116
-28
-247
-118
-39
-247
-123
-41
-247
-130
-60
-250
-139
-73
-249
-146
-83
-249
-152
-92
-249
-159
-103
-247
-165
-111
-251
-168
-115
-251
-168
-115
-251
-168
-115
-251
-168
-115
-247
-165
-111
-247
-165
-111
-247
-165
-111
-249
-159
-103
-249
-159
-103
-246
-156
-93
-247
-150
-84
-249
-146
-83
-247
-143
-74
-248
-138
-64
-247
-130
-60
-247
-130
-60
-247
-130
-60
-248
-138
-64
-250
-139
-73
-249
-146
-83
-249
-152
-92
-249
-159
-103
-249
-159
-103
-247
-165
-111
-251
-168
-115
-251
-168
-115
-251
-168
-115
-251
-168
-115
-247
-165
-111
-247
-165
-111
-249
-159
-103
-247
-165
-111
-251
-168
-115
-250
-176
-132
-252
-185
-144
-250
-200
-166
-255
-215
-190
-217
-187
-166
-48
-58
-59
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-65
-67
-64
-137
-127
-115
-250
-200
-166
-250
-176
-132
-247
-165
-111
-249
-152
-92
-247
-150
-84
-249
-146
-83
-247
-150
-84
-249
-152
-92
-249
-159
-103
-247
-165
-111
-251
-168
-115
-251
-168
-115
-251
-168
-115
-247
-165
-111
-249
-159
-103
-246
-156
-93
-247
-150
-84
-247
-143
-74
-250
-139
-73
-247
-143
-74
-249
-146
-83
-249
-159
-103
-249
-174
-124
-251
-192
-154
-161
-144
-134
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-227
-126
-50
-173
-106
-60
-51
-62
-63
-187
-166
-150
-255
-215
-190
-253
-212
-188
-250
-200
-166
-249
-189
-146
-248
-180
-134
-249
-174
-124
-247
-165
-111
-249
-159
-103
-249
-152
-92
-247
-143
-74
-248
-138
-64
-247
-130
-53
-247
-123
-41
-247
-118
-39
-246
-116
-28
-247
-111
-26
-246
-116
-28
-247
-118
-39
-247
-123
-41
-247
-130
-53
-248
-138
-64
-247
-143
-74
-249
-152
-92
-249
-159
-103
-247
-165
-111
-251
-168
-115
-251
-168
-115
-251
-168
-115
-251
-168
-115
-247
-165
-111
-249
-159
-103
-249
-152
-92
-247
-143
-74
-248
-138
-64
-247
-130
-53
-247
-123
-41
-247
-118
-39
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-116
-28
-247
-123
-41
-247
-130
-53
-248
-138
-64
-247
-143
-74
-247
-150
-84
-249
-159
-103
-249
-159
-103
-247
-165
-111
-251
-168
-115
-251
-168
-115
-251
-168
-115
-251
-168
-115
-247
-165
-111
-247
-165
-111
-249
-159
-103
-249
-159
-103
-249
-159
-103
-249
-159
-103
-249
-159
-103
-249
-159
-103
-246
-156
-93
-246
-156
-93
-246
-156
-93
-249
-159
-103
-249
-159
-103
-249
-159
-103
-249
-159
-103
-249
-159
-103
-249
-159
-103
-249
-159
-103
-249
-159
-103
-249
-159
-103
-249
-159
-103
-249
-152
-92
-249
-152
-92
-247
-150
-84
-249
-146
-83
-249
-146
-83
-249
-146
-83
-247
-150
-84
-249
-152
-92
-246
-156
-93
-249
-159
-103
-247
-165
-111
-249
-174
-124
-250
-176
-132
-249
-189
-146
-250
-200
-166
-253
-212
-188
-255
-215
-190
-207
-178
-158
-51
-62
-63
-155
-100
-63
-234
-125
-52
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-249
-189
-146
-247
-165
-111
-247
-143
-74
-247
-130
-53
-246
-116
-28
-246
-109
-10
-247
-103
-7
-247
-103
-7
-246
-109
-10
-247
-111
-26
-246
-116
-28
-247
-123
-41
-247
-130
-53
-248
-138
-64
-247
-143
-74
-247
-150
-84
-249
-159
-103
-247
-165
-111
-251
-168
-115
-251
-168
-115
-251
-168
-115
-251
-168
-115
-247
-165
-111
-249
-159
-103
-249
-152
-92
-249
-146
-83
-250
-139
-73
-247
-130
-60
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-60
-248
-138
-64
-247
-143
-74
-249
-146
-83
-249
-152
-92
-246
-156
-93
-249
-159
-103
-249
-159
-103
-249
-159
-103
-249
-159
-103
-249
-159
-103
-249
-159
-103
-246
-156
-93
-249
-152
-92
-247
-150
-84
-249
-146
-83
-247
-143
-74
-247
-143
-74
-247
-143
-74
-249
-146
-83
-247
-150
-84
-246
-156
-93
-249
-159
-103
-247
-165
-111
-247
-165
-111
-251
-168
-115
-251
-168
-115
-251
-168
-115
-247
-165
-111
-247
-165
-111
-247
-165
-111
-249
-159
-103
-249
-159
-103
-246
-156
-93
-247
-150
-84
-247
-143
-74
-248
-138
-64
-247
-130
-53
-247
-123
-41
-247
-118
-39
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-123
-41
-248
-138
-64
-249
-152
-92
-249
-174
-124
-236
-186
-153
-47
-40
-38
-59
-50
-39
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-47
-40
-38
-108
-87
-46
-168
-127
-42
-111
-94
-57
-76
-70
-64
-59
-50
-39
-101
-83
-47
-160
-120
-43
-170
-137
-67
-253
-255
-252
-195
-167
-113
-145
-114
-49
-69
-69
-61
-120
-114
-108
-35
-31
-30
-47
-40
-38
-217
-187
-166
-250
-197
-158
-250
-176
-132
-249
-159
-103
-249
-146
-83
-248
-138
-64
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-130
-53
-250
-139
-73
-246
-156
-93
-250
-176
-132
-232
-190
-161
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-91
-92
-89
-255
-215
-190
-255
-215
-190
-245
-212
-186
-227
-196
-175
-212
-173
-150
-209
-171
-139
-219
-170
-138
-240
-181
-138
-250
-176
-132
-251
-168
-115
-249
-159
-103
-247
-150
-84
-250
-139
-73
-247
-130
-60
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-248
-138
-64
-249
-146
-83
-246
-156
-93
-247
-165
-111
-249
-174
-124
-248
-180
-134
-240
-181
-138
-219
-170
-138
-203
-161
-131
-203
-161
-131
-219
-170
-138
-240
-181
-138
-250
-176
-132
-249
-174
-124
-249
-159
-103
-249
-152
-92
-247
-143
-74
-247
-130
-60
-247
-130
-53
-247
-123
-41
-247
-123
-41
-247
-130
-53
-247
-130
-53
-248
-138
-64
-249
-146
-83
-246
-156
-93
-247
-165
-111
-249
-174
-124
-245
-179
-138
-230
-173
-136
-203
-161
-131
-203
-161
-131
-219
-170
-138
-239
-182
-144
-251
-192
-154
-249
-189
-146
-252
-185
-144
-252
-185
-144
-248
-180
-134
-245
-169
-119
-234
-168
-124
-247
-165
-111
-249
-159
-103
-249
-152
-92
-247
-150
-84
-247
-150
-84
-247
-150
-84
-249
-152
-92
-249
-159
-103
-247
-165
-111
-249
-174
-124
-248
-180
-134
-230
-173
-136
-219
-170
-138
-203
-161
-131
-209
-171
-139
-239
-182
-144
-251
-192
-154
-249
-189
-146
-249
-189
-146
-252
-185
-144
-252
-185
-144
-249
-189
-146
-236
-186
-153
-250
-200
-166
-255
-215
-190
-255
-215
-190
-217
-187
-166
-48
-58
-59
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-65
-67
-64
-137
-127
-115
-253
-204
-176
-252
-185
-144
-249
-174
-124
-247
-165
-111
-247
-165
-111
-247
-165
-111
-251
-168
-115
-249
-174
-124
-248
-180
-134
-230
-173
-136
-219
-170
-138
-203
-161
-131
-209
-171
-139
-230
-173
-136
-245
-179
-138
-250
-176
-132
-251
-168
-115
-249
-159
-103
-249
-159
-103
-246
-156
-93
-249
-159
-103
-251
-168
-115
-248
-180
-134
-250
-197
-158
-161
-144
-134
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-227
-126
-50
-173
-106
-60
-51
-62
-63
-187
-166
-150
-255
-215
-190
-255
-215
-190
-234
-204
-183
-207
-178
-158
-209
-171
-139
-209
-171
-139
-230
-173
-136
-248
-180
-134
-249
-174
-124
-247
-165
-111
-249
-152
-92
-247
-143
-74
-248
-138
-64
-247
-130
-53
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-130
-53
-248
-138
-64
-247
-143
-74
-249
-152
-92
-247
-165
-111
-249
-174
-124
-248
-180
-134
-240
-181
-138
-219
-170
-138
-203
-161
-131
-203
-161
-131
-219
-170
-138
-240
-181
-138
-248
-180
-134
-249
-174
-124
-247
-165
-111
-249
-152
-92
-247
-143
-74
-248
-138
-64
-247
-130
-53
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-130
-53
-247
-130
-60
-247
-143
-74
-249
-152
-92
-249
-159
-103
-249
-174
-124
-250
-176
-132
-240
-181
-138
-219
-170
-138
-203
-161
-131
-203
-161
-131
-230
-173
-136
-251
-192
-154
-249
-189
-146
-249
-189
-146
-252
-185
-144
-252
-185
-144
-248
-180
-134
-234
-168
-124
-250
-176
-132
-248
-180
-134
-250
-176
-132
-250
-176
-132
-250
-176
-132
-248
-180
-134
-248
-180
-134
-230
-173
-136
-240
-181
-138
-252
-185
-144
-252
-185
-144
-252
-185
-144
-252
-185
-144
-248
-180
-134
-234
-168
-124
-234
-168
-124
-249
-174
-124
-251
-168
-115
-247
-165
-111
-247
-165
-111
-247
-165
-111
-251
-168
-115
-249
-174
-124
-250
-176
-132
-248
-180
-134
-230
-173
-136
-219
-170
-138
-209
-171
-139
-207
-178
-158
-227
-196
-175
-253
-212
-188
-255
-215
-190
-217
-187
-166
-51
-62
-63
-155
-100
-63
-234
-125
-52
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-249
-189
-146
-247
-165
-111
-247
-143
-74
-247
-130
-53
-246
-116
-28
-247
-111
-26
-246
-109
-10
-246
-109
-10
-247
-111
-26
-246
-116
-28
-247
-123
-41
-247
-130
-60
-247
-143
-74
-249
-152
-92
-249
-159
-103
-249
-174
-124
-248
-180
-134
-240
-181
-138
-219
-170
-138
-203
-161
-131
-203
-161
-131
-219
-170
-138
-240
-181
-138
-248
-180
-134
-249
-174
-124
-247
-165
-111
-249
-159
-103
-247
-150
-84
-249
-146
-83
-247
-143
-74
-247
-143
-74
-249
-146
-83
-249
-152
-92
-249
-159
-103
-247
-165
-111
-234
-168
-124
-234
-168
-124
-248
-180
-134
-252
-185
-144
-252
-185
-144
-252
-185
-144
-248
-180
-134
-250
-176
-132
-234
-168
-124
-249
-174
-124
-251
-168
-115
-247
-165
-111
-247
-165
-111
-249
-159
-103
-247
-165
-111
-251
-168
-115
-249
-174
-124
-250
-176
-132
-248
-180
-134
-230
-173
-136
-203
-161
-131
-203
-161
-131
-219
-170
-138
-239
-182
-144
-251
-192
-154
-249
-189
-146
-252
-185
-144
-252
-185
-144
-248
-180
-134
-234
-168
-124
-238
-159
-107
-247
-165
-111
-249
-152
-92
-247
-143
-74
-247
-130
-60
-247
-123
-41
-246
-116
-28
-247
-111
-26
-246
-109
-10
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-111
-26
-246
-116
-28
-247
-130
-53
-247
-143
-74
-247
-165
-111
-252
-185
-144
-154
-133
-118
-24
-22
-23
-108
-87
-46
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-71
-60
-43
-85
-71
-43
-101
-83
-47
-89
-84
-82
-152
-147
-147
-24
-22
-23
-24
-22
-23
-108
-87
-46
-168
-127
-42
-224
-207
-180
-253
-255
-252
-209
-171
-139
-101
-83
-47
-24
-22
-23
-35
-31
-30
-35
-31
-30
-167
-142
-123
-253
-212
-188
-250
-197
-158
-248
-180
-134
-247
-165
-111
-247
-150
-84
-250
-139
-73
-247
-130
-60
-247
-130
-60
-248
-138
-64
-249
-146
-83
-249
-159
-103
-250
-176
-132
-232
-190
-161
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-97
-98
-96
-217
-187
-166
-137
-127
-115
-91
-92
-89
-55
-66
-67
-48
-58
-59
-48
-58
-59
-55
-66
-67
-84
-85
-82
-133
-120
-107
-209
-171
-139
-248
-180
-134
-251
-168
-115
-249
-159
-103
-247
-150
-84
-247
-143
-74
-250
-139
-73
-250
-139
-73
-249
-146
-83
-249
-152
-92
-247
-165
-111
-249
-174
-124
-245
-179
-138
-178
-146
-122
-124
-111
-99
-76
-78
-76
-51
-62
-63
-48
-58
-59
-48
-58
-59
-58
-69
-70
-91
-92
-89
-144
-125
-110
-203
-161
-131
-248
-180
-134
-249
-174
-124
-249
-159
-103
-247
-150
-84
-247
-143
-74
-248
-138
-64
-248
-138
-64
-250
-139
-73
-249
-146
-83
-246
-156
-93
-247
-165
-111
-250
-176
-132
-230
-173
-136
-154
-133
-118
-101
-100
-92
-58
-69
-70
-48
-58
-59
-48
-58
-59
-51
-62
-63
-84
-85
-82
-137
-127
-115
-217
-187
-166
-253
-212
-188
-227
-196
-175
-144
-125
-110
-89
-84
-82
-81
-77
-76
-115
-102
-92
-210
-156
-119
-249
-174
-124
-251
-168
-115
-251
-168
-115
-251
-168
-115
-249
-174
-124
-250
-176
-132
-252
-185
-144
-195
-157
-134
-124
-111
-99
-76
-78
-76
-51
-62
-63
-48
-58
-59
-48
-58
-59
-70
-79
-77
-120
-114
-108
-187
-166
-150
-253
-212
-188
-253
-212
-188
-172
-150
-134
-101
-100
-92
-77
-85
-81
-101
-100
-92
-176
-156
-141
-255
-215
-190
-217
-187
-166
-48
-58
-59
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-63
-69
-60
-137
-127
-115
-253
-212
-188
-250
-197
-158
-252
-185
-144
-248
-180
-134
-248
-180
-134
-252
-185
-144
-239
-182
-144
-167
-142
-123
-109
-106
-99
-70
-79
-77
-48
-58
-59
-48
-58
-59
-48
-58
-59
-58
-69
-70
-91
-92
-89
-150
-125
-114
-219
-170
-138
-248
-180
-134
-249
-174
-124
-249
-174
-124
-249
-174
-124
-250
-176
-132
-249
-189
-146
-253
-204
-176
-161
-144
-134
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-234
-125
-52
-183
-110
-59
-51
-62
-63
-176
-156
-141
-187
-166
-150
-109
-106
-99
-63
-74
-74
-43
-57
-62
-43
-57
-62
-43
-57
-62
-63
-74
-74
-109
-106
-99
-178
-146
-122
-245
-179
-138
-249
-174
-124
-249
-159
-103
-247
-150
-84
-247
-143
-74
-248
-138
-64
-248
-138
-64
-248
-138
-64
-247
-143
-74
-247
-150
-84
-249
-159
-103
-249
-174
-124
-252
-185
-144
-195
-157
-134
-124
-111
-99
-77
-85
-81
-51
-62
-63
-41
-58
-57
-43
-57
-62
-51
-62
-63
-77
-85
-81
-124
-111
-99
-195
-157
-134
-252
-185
-144
-249
-174
-124
-249
-159
-103
-247
-150
-84
-247
-143
-74
-248
-138
-64
-247
-130
-60
-248
-138
-64
-250
-139
-73
-247
-150
-84
-249
-159
-103
-251
-168
-115
-248
-180
-134
-203
-161
-131
-124
-111
-99
-77
-85
-81
-48
-58
-59
-43
-57
-62
-43
-57
-62
-63
-74
-74
-109
-106
-99
-187
-166
-150
-253
-212
-188
-253
-212
-188
-187
-166
-150
-109
-106
-99
-77
-85
-81
-84
-85
-82
-150
-125
-114
-232
-190
-161
-253
-204
-176
-253
-204
-176
-172
-150
-134
-101
-100
-92
-77
-85
-81
-91
-92
-89
-137
-127
-115
-227
-196
-175
-253
-212
-188
-186
-157
-134
-109
-106
-99
-77
-85
-81
-84
-85
-82
-124
-111
-99
-219
-170
-138
-249
-189
-146
-249
-189
-146
-249
-189
-146
-251
-192
-154
-250
-197
-158
-186
-157
-134
-109
-106
-99
-70
-79
-77
-43
-57
-62
-43
-57
-62
-41
-58
-57
-63
-74
-74
-101
-100
-92
-176
-156
-141
-194
-173
-157
-55
-66
-67
-155
-100
-63
-234
-125
-52
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-249
-189
-146
-247
-165
-111
-247
-143
-74
-247
-130
-53
-247
-118
-39
-247
-111
-26
-246
-109
-10
-247
-111
-26
-246
-116
-28
-247
-123
-41
-247
-130
-60
-249
-146
-83
-249
-159
-103
-249
-174
-124
-252
-185
-144
-203
-161
-131
-133
-120
-107
-84
-85
-82
-55
-66
-67
-43
-57
-62
-41
-58
-57
-51
-62
-63
-77
-85
-81
-124
-111
-99
-178
-146
-122
-239
-182
-144
-250
-176
-132
-249
-174
-124
-247
-165
-111
-249
-159
-103
-249
-159
-103
-247
-165
-111
-249
-174
-124
-210
-156
-119
-124
-111
-99
-77
-85
-81
-77
-85
-81
-109
-106
-99
-194
-173
-157
-253
-212
-188
-217
-187
-166
-133
-120
-107
-89
-84
-82
-76
-78
-76
-101
-100
-92
-178
-146
-122
-249
-189
-146
-252
-185
-144
-252
-185
-144
-252
-185
-144
-251
-192
-154
-236
-186
-153
-167
-142
-123
-101
-100
-92
-63
-74
-74
-41
-58
-57
-43
-57
-62
-51
-62
-63
-77
-85
-81
-137
-127
-115
-217
-187
-166
-253
-212
-188
-227
-196
-175
-144
-125
-110
-84
-85
-82
-76
-78
-76
-115
-102
-92
-204
-141
-99
-249
-159
-103
-247
-143
-74
-247
-130
-60
-247
-123
-41
-247
-111
-26
-246
-109
-10
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-123
-41
-248
-138
-64
-249
-152
-92
-249
-174
-124
-250
-197
-158
-82
-69
-65
-47
-40
-38
-152
-119
-47
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-101
-83
-47
-59
-50
-39
-101
-83
-47
-24
-22
-23
-35
-31
-30
-24
-22
-23
-24
-22
-23
-108
-87
-46
-168
-127
-42
-195
-167
-113
-253
-255
-252
-253
-255
-252
-239
-227
-208
-186
-157
-134
-162
-125
-96
-105
-93
-60
-47
-40
-38
-150
-125
-114
-217
-187
-166
-250
-200
-166
-252
-185
-144
-251
-168
-115
-246
-156
-93
-249
-146
-83
-247
-143
-74
-249
-146
-83
-249
-152
-92
-247
-165
-111
-252
-185
-144
-232
-190
-161
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-55
-66
-67
-58
-69
-70
-56
-64
-60
-83
-78
-61
-105
-93
-60
-117
-98
-55
-117
-98
-55
-105
-93
-60
-83
-78
-61
-56
-64
-60
-55
-66
-67
-144
-125
-110
-239
-182
-144
-250
-176
-132
-247
-165
-111
-249
-159
-103
-246
-156
-93
-249
-159
-103
-247
-165
-111
-249
-174
-124
-252
-185
-144
-195
-157
-134
-89
-84
-82
-48
-58
-59
-63
-69
-60
-95
-87
-59
-111
-94
-57
-123
-102
-54
-117
-98
-55
-105
-93
-60
-83
-78
-61
-56
-64
-60
-51
-62
-63
-124
-111
-99
-219
-170
-138
-248
-180
-134
-251
-168
-115
-249
-159
-103
-249
-152
-92
-249
-152
-92
-246
-156
-93
-247
-165
-111
-249
-174
-124
-252
-185
-144
-167
-142
-123
-70
-79
-77
-51
-62
-63
-75
-74
-61
-100
-89
-56
-117
-98
-55
-123
-102
-54
-105
-93
-60
-83
-78
-61
-51
-62
-63
-63
-74
-74
-172
-150
-134
-109
-106
-99
-51
-62
-63
-83
-78
-61
-95
-87
-59
-65
-67
-64
-65
-67
-64
-209
-171
-139
-249
-189
-146
-249
-189
-146
-249
-189
-146
-250
-197
-158
-212
-173
-150
-109
-106
-99
-48
-58
-59
-63
-69
-60
-95
-87
-59
-111
-94
-57
-123
-102
-54
-117
-98
-55
-95
-87
-59
-62
-63
-61
-48
-58
-59
-137
-127
-115
-146
-135
-124
-48
-58
-59
-75
-74
-61
-95
-87
-59
-75
-74
-61
-48
-58
-59
-161
-144
-134
-217
-187
-166
-48
-58
-59
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-63
-69
-60
-137
-127
-115
-255
-215
-190
-251
-209
-178
-250
-200
-166
-250
-200
-166
-250
-200
-166
-172
-150
-134
-77
-85
-81
-48
-58
-59
-69
-69
-61
-95
-87
-59
-111
-94
-57
-123
-102
-54
-117
-98
-55
-100
-89
-56
-75
-74
-61
-56
-64
-60
-55
-66
-67
-133
-120
-107
-236
-186
-153
-251
-192
-154
-249
-189
-146
-251
-192
-154
-250
-200
-166
-253
-212
-188
-161
-144
-134
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-227
-126
-50
-173
-106
-60
-51
-62
-63
-63
-74
-74
-48
-58
-59
-76
-70
-64
-118
-86
-65
-146
-97
-64
-155
-100
-63
-146
-97
-64
-118
-86
-65
-76
-70
-64
-43
-57
-62
-91
-92
-89
-203
-161
-131
-248
-180
-134
-251
-168
-115
-249
-159
-103
-249
-152
-92
-247
-150
-84
-249
-152
-92
-249
-159
-103
-251
-168
-115
-248
-180
-134
-209
-171
-139
-101
-100
-92
-43
-57
-62
-69
-69
-61
-106
-82
-65
-135
-94
-64
-155
-100
-63
-155
-100
-63
-135
-94
-64
-106
-82
-65
-65
-67
-64
-43
-57
-62
-101
-100
-92
-209
-171
-139
-248
-180
-134
-251
-168
-115
-249
-159
-103
-249
-152
-92
-247
-150
-84
-247
-150
-84
-246
-156
-93
-247
-165
-111
-250
-176
-132
-219
-170
-138
-124
-111
-99
-48
-58
-59
-62
-63
-61
-106
-82
-65
-139
-96
-61
-155
-100
-63
-146
-97
-64
-125
-90
-64
-76
-70
-64
-41
-58
-57
-120
-114
-108
-172
-150
-134
-51
-62
-63
-69
-69
-61
-112
-85
-63
-95
-78
-64
-51
-62
-63
-120
-114
-108
-245
-212
-186
-146
-135
-124
-43
-57
-62
-81
-73
-62
-118
-86
-65
-95
-78
-64
-56
-64
-60
-101
-100
-92
-133
-120
-107
-43
-57
-62
-76
-70
-64
-112
-85
-63
-106
-82
-65
-62
-63
-61
-77
-85
-81
-227
-196
-175
-253
-212
-188
-253
-212
-188
-217
-187
-166
-109
-106
-99
-41
-58
-57
-69
-69
-61
-112
-85
-63
-139
-96
-61
-155
-100
-63
-146
-97
-64
-118
-86
-65
-81
-73
-62
-48
-58
-59
-58
-69
-70
-51
-62
-63
-155
-100
-63
-234
-125
-52
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-251
-192
-154
-247
-165
-111
-249
-146
-83
-247
-130
-53
-247
-118
-39
-247
-111
-26
-247
-111
-26
-246
-116
-28
-247
-123
-41
-248
-138
-64
-249
-146
-83
-249
-159
-103
-250
-176
-132
-219
-170
-138
-124
-111
-99
-43
-57
-62
-62
-63
-61
-106
-82
-65
-135
-94
-64
-155
-100
-63
-155
-100
-63
-139
-96
-61
-106
-82
-65
-69
-69
-61
-43
-57
-62
-91
-92
-89
-195
-157
-134
-251
-192
-154
-252
-185
-144
-248
-180
-134
-248
-180
-134
-252
-185
-144
-203
-161
-131
-63
-74
-74
-62
-63
-61
-106
-82
-65
-112
-85
-63
-69
-69
-61
-55
-66
-67
-146
-135
-124
-63
-74
-74
-56
-64
-60
-95
-78
-64
-112
-85
-63
-76
-70
-64
-48
-58
-59
-172
-150
-134
-253
-204
-176
-251
-209
-178
-251
-209
-178
-187
-166
-150
-77
-85
-81
-48
-58
-59
-81
-73
-62
-125
-90
-64
-146
-97
-64
-155
-100
-63
-139
-96
-61
-95
-78
-64
-56
-64
-60
-58
-69
-70
-161
-144
-134
-109
-106
-99
-51
-62
-63
-95
-78
-64
-112
-85
-63
-65
-67
-64
-65
-67
-64
-204
-141
-99
-246
-156
-93
-250
-139
-73
-247
-130
-53
-247
-118
-39
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-246
-116
-28
-247
-130
-53
-247
-143
-74
-249
-159
-103
-252
-185
-144
-209
-171
-139
-24
-22
-23
-85
-71
-43
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-137
-110
-49
-47
-40
-38
-137
-110
-49
-101
-83
-47
-59
-50
-39
-59
-50
-39
-101
-83
-47
-158
-125
-46
-160
-120
-43
-192
-155
-91
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-237
-233
-225
-152
-147
-147
-81
-77
-76
-55
-48
-48
-115
-102
-92
-212
-173
-150
-251
-192
-154
-249
-174
-124
-247
-165
-111
-249
-159
-103
-249
-159
-103
-247
-165
-111
-249
-174
-124
-249
-189
-146
-238
-205
-179
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-43
-57
-62
-95
-87
-59
-145
-114
-49
-168
-127
-42
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-168
-127
-42
-145
-114
-49
-95
-87
-59
-48
-58
-59
-109
-106
-99
-236
-186
-153
-252
-185
-144
-248
-180
-134
-250
-176
-132
-250
-176
-132
-252
-185
-144
-251
-192
-154
-150
-125
-114
-48
-58
-59
-69
-69
-61
-117
-98
-55
-158
-125
-46
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-168
-127
-42
-152
-119
-47
-100
-89
-56
-56
-64
-60
-63
-74
-74
-186
-157
-134
-249
-189
-146
-248
-180
-134
-249
-174
-124
-249
-174
-124
-250
-176
-132
-252
-185
-144
-251
-192
-154
-133
-120
-107
-48
-58
-59
-75
-74
-61
-137
-110
-49
-168
-127
-42
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-145
-114
-49
-75
-74
-61
-43
-57
-62
-51
-62
-63
-123
-102
-54
-171
-129
-45
-171
-129
-45
-145
-114
-49
-56
-64
-60
-133
-120
-107
-253
-212
-188
-251
-209
-178
-253
-212
-188
-194
-173
-157
-63
-74
-74
-56
-64
-60
-111
-94
-57
-158
-125
-46
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-158
-125
-46
-105
-93
-60
-51
-62
-63
-43
-57
-62
-88
-82
-59
-168
-127
-42
-171
-129
-45
-168
-127
-42
-88
-82
-59
-63
-74
-74
-187
-166
-150
-55
-66
-67
-111
-94
-57
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-63
-69
-60
-137
-127
-115
-255
-215
-190
-255
-215
-190
-255
-215
-190
-245
-212
-186
-133
-120
-107
-48
-58
-59
-75
-74
-61
-129
-106
-52
-158
-125
-46
-171
-129
-45
-171
-129
-45
-171
-129
-45
-168
-127
-42
-171
-129
-45
-168
-127
-42
-145
-114
-49
-95
-87
-59
-51
-62
-63
-77
-85
-81
-212
-173
-150
-253
-204
-176
-253
-204
-176
-251
-209
-178
-255
-215
-190
-161
-144
-134
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-227
-126
-50
-183
-110
-59
-41
-58
-57
-69
-69
-61
-155
-100
-63
-214
-121
-50
-234
-126
-45
-234
-126
-45
-234
-126
-45
-234
-126
-45
-234
-126
-45
-224
-123
-55
-155
-100
-63
-69
-69
-61
-51
-62
-63
-178
-146
-122
-249
-189
-146
-250
-176
-132
-251
-168
-115
-251
-168
-115
-249
-174
-124
-250
-176
-132
-249
-189
-146
-167
-142
-123
-55
-66
-67
-65
-67
-64
-146
-97
-64
-212
-120
-56
-234
-126
-45
-234
-125
-52
-234
-126
-45
-234
-125
-52
-234
-126
-45
-234
-125
-52
-209
-117
-53
-146
-97
-64
-65
-67
-64
-55
-66
-67
-178
-146
-122
-249
-189
-146
-250
-176
-132
-251
-168
-115
-247
-165
-111
-251
-168
-115
-249
-174
-124
-252
-185
-144
-203
-161
-131
-63
-74
-74
-56
-64
-60
-125
-90
-64
-209
-117
-53
-234
-126
-45
-234
-126
-45
-234
-125
-52
-234
-126
-45
-234
-126
-45
-214
-121
-50
-146
-97
-64
-56
-64
-60
-41
-58
-57
-81
-73
-62
-209
-117
-53
-234
-126
-45
-234
-126
-45
-125
-90
-64
-51
-62
-63
-176
-156
-141
-55
-66
-67
-106
-82
-65
-225
-124
-48
-234
-126
-45
-234
-126
-45
-146
-97
-64
-41
-58
-57
-43
-57
-62
-125
-90
-64
-214
-121
-50
-234
-126
-45
-234
-126
-45
-183
-110
-59
-56
-64
-60
-137
-127
-115
-255
-215
-190
-194
-173
-157
-63
-74
-74
-62
-63
-61
-146
-97
-64
-214
-121
-50
-234
-125
-52
-234
-126
-45
-234
-125
-52
-234
-125
-52
-234
-126
-45
-225
-124
-48
-173
-106
-60
-81
-73
-62
-35
-56
-60
-155
-100
-63
-234
-125
-52
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-251
-192
-154
-247
-165
-111
-249
-146
-83
-247
-130
-53
-247
-118
-39
-246
-116
-28
-246
-116
-28
-247
-123
-41
-247
-130
-60
-249
-146
-83
-247
-165
-111
-248
-180
-134
-186
-157
-134
-58
-69
-70
-56
-64
-60
-135
-94
-64
-199
-115
-54
-234
-125
-52
-234
-126
-45
-234
-125
-52
-234
-125
-52
-234
-126
-45
-234
-125
-52
-212
-120
-56
-155
-100
-63
-76
-70
-64
-51
-62
-63
-146
-135
-124
-251
-209
-178
-253
-204
-176
-250
-200
-166
-253
-204
-176
-101
-100
-92
-69
-69
-61
-194
-112
-58
-234
-126
-45
-234
-126
-45
-199
-115
-54
-65
-67
-64
-35
-56
-60
-81
-73
-62
-194
-112
-58
-234
-125
-52
-234
-126
-45
-214
-121
-50
-95
-78
-64
-63
-74
-74
-238
-205
-179
-255
-215
-190
-161
-144
-134
-43
-57
-62
-81
-73
-62
-173
-106
-60
-225
-124
-48
-234
-126
-45
-234
-126
-45
-234
-125
-52
-234
-126
-45
-234
-126
-45
-194
-112
-58
-95
-78
-64
-41
-58
-57
-48
-58
-59
-155
-100
-63
-234
-126
-45
-234
-126
-45
-199
-115
-54
-69
-69
-61
-99
-90
-79
-251
-168
-115
-247
-150
-84
-247
-130
-60
-247
-123
-41
-247
-111
-26
-246
-109
-10
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-111
-26
-247
-118
-39
-247
-130
-60
-247
-150
-84
-249
-174
-124
-251
-192
-154
-124
-111
-99
-35
-31
-30
-137
-110
-49
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-47
-40
-38
-108
-87
-46
-175
-132
-40
-161
-127
-40
-168
-127
-42
-171
-129
-45
-158
-125
-46
-152
-119
-47
-203
-161
-131
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-186
-181
-179
-89
-84
-82
-47
-40
-38
-139
-115
-96
-236
-186
-153
-252
-185
-144
-250
-176
-132
-249
-174
-124
-250
-176
-132
-252
-185
-144
-250
-197
-158
-238
-205
-179
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-111
-94
-57
-171
-129
-45
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-171
-129
-45
-111
-94
-57
-48
-58
-59
-109
-106
-99
-253
-204
-176
-250
-200
-166
-250
-200
-166
-250
-200
-166
-253
-204
-176
-137
-127
-115
-43
-57
-62
-88
-82
-59
-158
-125
-46
-171
-129
-45
-161
-127
-40
-158
-125
-46
-158
-125
-46
-168
-127
-42
-161
-127
-40
-158
-125
-46
-158
-125
-46
-168
-127
-42
-171
-129
-45
-145
-114
-49
-69
-69
-61
-51
-62
-63
-187
-166
-150
-250
-200
-166
-250
-197
-158
-251
-192
-154
-250
-197
-158
-253
-204
-176
-133
-120
-107
-48
-58
-59
-95
-87
-59
-168
-127
-42
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-158
-125
-46
-75
-74
-61
-62
-63
-61
-168
-127
-42
-161
-127
-40
-158
-125
-46
-171
-129
-45
-83
-78
-61
-91
-92
-89
-255
-215
-190
-255
-215
-190
-207
-178
-158
-58
-69
-70
-63
-69
-60
-145
-114
-49
-171
-129
-45
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-171
-129
-45
-105
-93
-60
-43
-57
-62
-137
-110
-49
-171
-129
-45
-158
-125
-46
-171
-129
-45
-137
-110
-49
-51
-62
-63
-146
-135
-124
-58
-69
-70
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-152
-119
-47
-65
-67
-64
-137
-127
-115
-255
-215
-190
-255
-215
-190
-245
-212
-186
-120
-114
-108
-48
-58
-59
-100
-89
-56
-168
-127
-42
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-171
-129
-45
-129
-106
-52
-61
-67
-58
-63
-74
-74
-207
-178
-158
-255
-215
-190
-255
-215
-190
-255
-215
-190
-161
-144
-134
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-234
-125
-52
-173
-106
-60
-95
-78
-64
-209
-117
-53
-234
-126
-45
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-126
-45
-209
-117
-53
-89
-75
-66
-51
-62
-63
-187
-166
-150
-250
-197
-158
-251
-192
-154
-249
-189
-146
-251
-192
-154
-250
-200
-166
-161
-144
-134
-41
-58
-57
-95
-78
-64
-199
-115
-54
-234
-126
-45
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-126
-45
-199
-115
-54
-89
-75
-66
-41
-58
-57
-167
-142
-123
-250
-200
-166
-251
-192
-154
-252
-185
-144
-249
-189
-146
-250
-197
-158
-212
-173
-150
-63
-74
-74
-69
-69
-61
-183
-110
-59
-234
-126
-45
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-126
-45
-163
-104
-61
-41
-58
-57
-135
-94
-64
-234
-126
-45
-224
-123
-55
-234
-125
-52
-188
-112
-56
-51
-62
-63
-109
-106
-99
-51
-62
-63
-188
-112
-56
-234
-126
-45
-224
-123
-55
-234
-125
-52
-188
-112
-56
-43
-57
-62
-112
-85
-63
-234
-126
-45
-227
-126
-50
-224
-123
-55
-227
-126
-50
-234
-126
-45
-95
-78
-64
-109
-106
-99
-217
-187
-166
-58
-69
-70
-69
-69
-61
-188
-112
-56
-234
-126
-45
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-125
-52
-214
-121
-50
-95
-78
-64
-146
-97
-64
-234
-125
-52
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-251
-192
-154
-247
-165
-111
-249
-146
-83
-247
-130
-53
-247
-123
-41
-247
-118
-39
-247
-123
-41
-247
-130
-53
-247
-143
-74
-249
-159
-103
-250
-176
-132
-186
-157
-134
-51
-62
-63
-81
-73
-62
-188
-112
-56
-234
-126
-45
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-126
-45
-212
-120
-56
-106
-82
-65
-41
-58
-57
-146
-135
-124
-255
-215
-190
-255
-215
-190
-234
-204
-183
-63
-74
-74
-125
-90
-64
-234
-126
-45
-224
-123
-55
-227
-126
-50
-234
-125
-52
-89
-75
-66
-62
-63
-61
-199
-115
-54
-234
-126
-45
-224
-123
-55
-224
-123
-55
-234
-126
-45
-163
-104
-61
-48
-58
-59
-217
-187
-166
-172
-150
-134
-41
-58
-57
-106
-82
-65
-214
-121
-50
-234
-126
-45
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-225
-124
-48
-81
-73
-62
-69
-69
-61
-227
-126
-50
-227
-126
-50
-224
-123
-55
-238
-123
-45
-125
-90
-64
-55
-66
-67
-250
-176
-132
-246
-156
-93
-250
-139
-73
-247
-123
-41
-247
-111
-26
-246
-109
-10
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-123
-41
-250
-139
-73
-249
-159
-103
-248
-180
-134
-232
-190
-161
-47
-40
-38
-71
-60
-43
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-71
-60
-43
-71
-60
-43
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-160
-120
-43
-170
-137
-67
-237
-233
-225
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-186
-181
-179
-74
-68
-68
-89
-75
-66
-212
-173
-150
-250
-197
-158
-251
-192
-154
-249
-189
-146
-251
-192
-154
-253
-204
-176
-234
-204
-183
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-152
-119
-47
-168
-127
-42
-158
-125
-46
-158
-125
-46
-168
-127
-42
-171
-129
-45
-171
-129
-45
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-111
-94
-57
-48
-58
-59
-161
-144
-134
-255
-215
-190
-255
-215
-190
-255
-215
-190
-172
-150
-134
-48
-58
-59
-95
-87
-59
-168
-127
-42
-168
-127
-42
-158
-125
-46
-161
-127
-40
-171
-129
-45
-158
-125
-46
-152
-119
-47
-152
-119
-47
-168
-127
-42
-168
-127
-42
-158
-125
-46
-158
-125
-46
-168
-127
-42
-152
-119
-47
-69
-69
-61
-58
-69
-70
-217
-187
-166
-255
-215
-190
-255
-215
-190
-255
-215
-190
-172
-150
-134
-43
-57
-62
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-171
-129
-45
-171
-129
-45
-171
-129
-45
-158
-125
-46
-168
-127
-42
-137
-110
-49
-83
-78
-61
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-88
-82
-59
-84
-85
-82
-255
-215
-190
-238
-205
-179
-84
-85
-82
-62
-63
-61
-145
-114
-49
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-171
-129
-45
-171
-129
-45
-171
-129
-45
-168
-127
-42
-161
-127
-40
-158
-125
-46
-88
-82
-59
-152
-119
-47
-161
-127
-40
-158
-125
-46
-168
-127
-42
-145
-114
-49
-51
-62
-63
-137
-127
-115
-58
-69
-70
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-152
-119
-47
-63
-69
-60
-137
-127
-115
-255
-215
-190
-255
-215
-190
-137
-127
-115
-48
-58
-59
-105
-93
-60
-171
-129
-45
-161
-127
-40
-158
-125
-46
-168
-127
-42
-168
-127
-42
-158
-125
-46
-152
-119
-47
-152
-119
-47
-168
-127
-42
-171
-129
-45
-158
-125
-46
-158
-125
-46
-171
-129
-45
-145
-114
-49
-62
-63
-61
-70
-79
-77
-227
-196
-175
-255
-215
-190
-255
-215
-190
-161
-144
-134
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-227
-126
-50
-212
-120
-56
-214
-121
-50
-227
-126
-50
-224
-123
-55
-227
-126
-50
-234
-126
-45
-234
-126
-45
-234
-125
-52
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-209
-117
-53
-76
-70
-64
-70
-79
-77
-234
-204
-183
-253
-212
-188
-251
-209
-178
-253
-212
-188
-187
-166
-150
-43
-57
-62
-95
-78
-64
-225
-124
-48
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-125
-52
-234
-126
-45
-234
-126
-45
-227
-126
-50
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-125
-52
-214
-121
-50
-95
-78
-64
-48
-58
-59
-194
-173
-157
-253
-212
-188
-251
-209
-178
-251
-209
-178
-245
-212
-186
-91
-92
-89
-62
-63
-61
-188
-112
-56
-234
-126
-45
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-125
-52
-234
-125
-52
-234
-126
-45
-227
-126
-50
-224
-123
-55
-234
-126
-45
-125
-90
-64
-146
-97
-64
-234
-125
-52
-224
-123
-55
-227
-126
-50
-194
-112
-58
-56
-64
-60
-97
-98
-96
-56
-64
-60
-188
-112
-56
-227
-126
-50
-224
-123
-55
-224
-123
-55
-212
-120
-56
-183
-110
-59
-214
-121
-50
-227
-126
-50
-224
-123
-55
-227
-126
-50
-227
-126
-50
-234
-126
-45
-95
-78
-64
-84
-85
-82
-91
-92
-89
-62
-63
-61
-188
-112
-56
-234
-126
-45
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-125
-52
-234
-126
-45
-234
-126
-45
-227
-126
-50
-224
-123
-55
-227
-126
-50
-224
-123
-55
-209
-117
-53
-227
-126
-50
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-251
-192
-154
-247
-165
-111
-249
-146
-83
-247
-130
-60
-247
-123
-41
-247
-123
-41
-247
-130
-53
-248
-138
-64
-249
-152
-92
-249
-174
-124
-209
-171
-139
-58
-69
-70
-81
-73
-62
-209
-117
-53
-234
-125
-52
-224
-123
-55
-224
-123
-55
-227
-126
-50
-227
-126
-50
-234
-125
-52
-234
-125
-52
-234
-125
-52
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-227
-126
-50
-112
-85
-63
-41
-58
-57
-172
-150
-134
-255
-215
-190
-227
-196
-175
-63
-74
-74
-135
-94
-64
-234
-125
-52
-224
-123
-55
-224
-123
-55
-224
-123
-55
-194
-112
-58
-199
-115
-54
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-238
-128
-40
-163
-104
-61
-55
-66
-67
-161
-144
-134
-58
-69
-70
-95
-78
-64
-225
-124
-48
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-227
-126
-50
-234
-126
-45
-234
-126
-45
-234
-125
-52
-227
-126
-50
-234
-125
-52
-173
-106
-60
-118
-86
-65
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-125
-52
-146
-97
-64
-51
-62
-63
-252
-185
-144
-249
-159
-103
-247
-143
-74
-247
-130
-53
-246
-116
-28
-246
-109
-10
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-111
-26
-247
-118
-39
-247
-130
-53
-249
-146
-83
-251
-168
-115
-251
-192
-154
-154
-133
-118
-24
-22
-23
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-108
-87
-46
-47
-40
-38
-158
-125
-46
-158
-125
-46
-158
-125
-46
-160
-120
-43
-156
-125
-62
-224
-207
-180
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-152
-147
-147
-35
-31
-30
-55
-48
-48
-154
-133
-118
-217
-187
-166
-253
-204
-176
-253
-204
-176
-253
-212
-188
-234
-204
-183
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-158
-125
-46
-168
-127
-42
-158
-125
-46
-123
-102
-54
-105
-93
-60
-111
-94
-57
-129
-106
-52
-168
-127
-42
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-83
-78
-61
-58
-69
-70
-227
-196
-175
-255
-215
-190
-217
-187
-166
-58
-69
-70
-75
-74
-61
-168
-127
-42
-161
-127
-40
-158
-125
-46
-168
-127
-42
-152
-119
-47
-105
-93
-60
-69
-69
-61
-62
-63
-61
-62
-63
-61
-75
-74
-61
-117
-98
-55
-161
-127
-40
-161
-127
-40
-158
-125
-46
-171
-129
-45
-145
-114
-49
-56
-64
-60
-97
-98
-96
-245
-212
-186
-255
-215
-190
-227
-196
-175
-63
-74
-74
-75
-74
-61
-158
-125
-46
-168
-127
-42
-158
-125
-46
-158
-125
-46
-168
-127
-42
-158
-125
-46
-129
-106
-52
-111
-94
-57
-105
-93
-60
-129
-106
-52
-158
-125
-46
-168
-127
-42
-161
-127
-40
-152
-119
-47
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-84
-85
-82
-255
-215
-190
-161
-144
-134
-48
-58
-59
-123
-102
-54
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-145
-114
-49
-117
-98
-55
-105
-93
-60
-117
-98
-55
-145
-114
-49
-171
-129
-45
-168
-127
-42
-152
-119
-47
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-145
-114
-49
-51
-62
-63
-137
-127
-115
-58
-69
-70
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-63
-69
-60
-137
-127
-115
-255
-215
-190
-194
-173
-157
-48
-58
-59
-88
-82
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-152
-119
-47
-95
-87
-59
-69
-69
-61
-62
-63
-61
-62
-63
-61
-83
-78
-61
-123
-102
-54
-168
-127
-42
-161
-127
-40
-158
-125
-46
-171
-129
-45
-129
-106
-52
-51
-62
-63
-120
-114
-108
-255
-215
-190
-255
-215
-190
-161
-144
-134
-56
-64
-60
-199
-115
-54
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-227
-126
-50
-227
-126
-50
-227
-126
-50
-188
-112
-56
-146
-97
-64
-135
-94
-64
-146
-97
-64
-199
-115
-54
-234
-125
-52
-224
-123
-55
-224
-123
-55
-224
-123
-55
-234
-126
-45
-173
-106
-60
-48
-58
-59
-146
-135
-124
-255
-215
-190
-255
-215
-190
-234
-204
-183
-77
-85
-81
-76
-70
-64
-214
-121
-50
-234
-125
-52
-224
-123
-55
-224
-123
-55
-234
-125
-52
-214
-121
-50
-163
-104
-61
-135
-94
-64
-135
-94
-64
-163
-104
-61
-224
-123
-55
-234
-125
-52
-224
-123
-55
-224
-123
-55
-227
-126
-50
-212
-120
-56
-76
-70
-64
-77
-85
-81
-238
-205
-179
-255
-215
-190
-255
-215
-190
-161
-144
-134
-48
-58
-59
-155
-100
-63
-234
-126
-45
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-125
-52
-199
-115
-54
-155
-100
-63
-135
-94
-64
-146
-97
-64
-188
-112
-56
-227
-126
-50
-227
-126
-50
-214
-121
-50
-209
-117
-53
-227
-126
-50
-224
-123
-55
-227
-126
-50
-194
-112
-58
-56
-64
-60
-101
-100
-92
-56
-64
-60
-188
-112
-56
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-234
-125
-52
-227
-126
-50
-224
-123
-55
-227
-126
-50
-227
-126
-50
-199
-115
-54
-125
-90
-64
-51
-62
-63
-55
-66
-67
-41
-58
-57
-146
-97
-64
-234
-126
-45
-224
-123
-55
-224
-123
-55
-224
-123
-55
-234
-126
-45
-209
-117
-53
-155
-100
-63
-135
-94
-64
-139
-96
-61
-183
-110
-59
-227
-126
-50
-227
-126
-50
-227
-126
-50
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-251
-192
-154
-247
-165
-111
-249
-146
-83
-247
-130
-60
-247
-130
-53
-247
-130
-53
-247
-130
-60
-249
-146
-83
-247
-165
-111
-252
-185
-144
-101
-100
-92
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-227
-126
-50
-173
-106
-60
-135
-94
-64
-135
-94
-64
-163
-104
-61
-214
-121
-50
-234
-125
-52
-224
-123
-55
-224
-123
-55
-227
-126
-50
-224
-123
-55
-81
-73
-62
-58
-69
-70
-227
-196
-175
-234
-204
-183
-63
-74
-74
-135
-94
-64
-234
-126
-45
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-227
-126
-50
-224
-123
-55
-227
-126
-50
-234
-125
-52
-212
-120
-56
-155
-100
-63
-69
-69
-61
-76
-78
-76
-84
-85
-82
-65
-67
-64
-209
-117
-53
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-227
-126
-50
-183
-110
-59
-139
-96
-61
-135
-94
-64
-155
-100
-63
-209
-117
-53
-234
-125
-52
-224
-123
-55
-212
-120
-56
-224
-123
-55
-224
-123
-55
-224
-123
-55
-234
-126
-45
-139
-96
-61
-55
-66
-67
-251
-192
-154
-251
-168
-115
-249
-146
-83
-247
-130
-53
-247
-118
-39
-246
-109
-10
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-123
-41
-248
-138
-64
-249
-152
-92
-250
-176
-132
-232
-190
-161
-65
-58
-56
-59
-50
-39
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-145
-114
-49
-47
-40
-38
-129
-106
-52
-168
-127
-42
-160
-120
-43
-158
-125
-46
-224
-207
-180
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-219
-212
-208
-62
-63
-61
-35
-31
-30
-91
-92
-89
-164
-158
-157
-186
-181
-179
-82
-69
-65
-176
-156
-141
-255
-215
-190
-255
-215
-190
-238
-205
-179
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-129
-106
-52
-65
-67
-64
-48
-58
-59
-55
-66
-67
-55
-66
-67
-48
-58
-59
-83
-78
-61
-145
-114
-49
-168
-127
-42
-158
-125
-46
-158
-125
-46
-168
-127
-42
-137
-110
-49
-51
-62
-63
-146
-135
-124
-255
-215
-190
-120
-114
-108
-56
-64
-60
-145
-114
-49
-171
-129
-45
-158
-125
-46
-168
-127
-42
-152
-119
-47
-69
-69
-61
-43
-57
-62
-109
-106
-99
-146
-135
-124
-137
-127
-115
-91
-92
-89
-43
-57
-62
-88
-82
-59
-158
-125
-46
-161
-127
-40
-158
-125
-46
-171
-129
-45
-117
-98
-55
-48
-58
-59
-172
-150
-134
-255
-215
-190
-146
-135
-124
-51
-62
-63
-137
-110
-49
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-145
-114
-49
-75
-74
-61
-48
-58
-59
-55
-66
-67
-55
-66
-67
-48
-58
-59
-69
-69
-61
-137
-110
-49
-168
-127
-42
-161
-127
-40
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-91
-92
-89
-234
-204
-183
-70
-79
-77
-83
-78
-61
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-111
-94
-57
-56
-64
-60
-43
-57
-62
-58
-69
-70
-48
-58
-59
-56
-64
-60
-100
-89
-56
-158
-125
-46
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-145
-114
-49
-51
-62
-63
-137
-127
-115
-58
-69
-70
-111
-94
-57
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-65
-67
-64
-137
-127
-115
-255
-215
-190
-97
-98
-96
-62
-63
-61
-152
-119
-47
-168
-127
-42
-158
-125
-46
-168
-127
-42
-137
-110
-49
-62
-63
-61
-51
-62
-63
-120
-114
-108
-146
-135
-124
-137
-127
-115
-84
-85
-82
-43
-57
-62
-95
-87
-59
-168
-127
-42
-158
-125
-46
-158
-125
-46
-171
-129
-45
-100
-89
-56
-43
-57
-62
-194
-173
-157
-255
-215
-190
-161
-144
-134
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-224
-123
-55
-118
-86
-65
-51
-62
-63
-43
-57
-62
-58
-69
-70
-41
-58
-57
-56
-64
-60
-146
-97
-64
-234
-126
-45
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-125
-52
-106
-82
-65
-63
-74
-74
-234
-204
-183
-255
-215
-190
-161
-144
-134
-48
-58
-59
-173
-106
-60
-234
-125
-52
-224
-123
-55
-224
-123
-55
-234
-125
-52
-183
-110
-59
-76
-70
-64
-43
-57
-62
-55
-66
-67
-55
-66
-67
-48
-58
-59
-81
-73
-62
-183
-110
-59
-234
-125
-52
-224
-123
-55
-224
-123
-55
-234
-126
-45
-163
-104
-61
-48
-58
-59
-161
-144
-134
-255
-215
-190
-234
-204
-183
-63
-74
-74
-95
-78
-64
-234
-126
-45
-224
-123
-55
-224
-123
-55
-227
-126
-50
-227
-126
-50
-135
-94
-64
-62
-63
-61
-43
-57
-62
-58
-69
-70
-43
-57
-62
-51
-62
-63
-125
-90
-64
-225
-124
-48
-227
-126
-50
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-194
-112
-58
-56
-64
-60
-97
-98
-96
-56
-64
-60
-188
-112
-56
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-234
-125
-52
-227
-126
-50
-173
-106
-60
-95
-78
-64
-56
-64
-60
-51
-62
-63
-120
-114
-108
-70
-79
-77
-89
-75
-66
-225
-124
-48
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-126
-45
-163
-104
-61
-65
-67
-64
-41
-58
-57
-55
-66
-67
-51
-62
-63
-48
-58
-59
-106
-82
-65
-209
-117
-53
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-251
-192
-154
-247
-165
-111
-249
-146
-83
-248
-138
-64
-247
-130
-53
-247
-130
-60
-250
-139
-73
-246
-156
-93
-250
-176
-132
-186
-157
-134
-41
-58
-57
-146
-97
-64
-234
-126
-45
-224
-123
-55
-224
-123
-55
-234
-125
-52
-199
-115
-54
-89
-75
-66
-48
-58
-59
-51
-62
-63
-55
-66
-67
-43
-57
-62
-76
-70
-64
-173
-106
-60
-234
-125
-52
-224
-123
-55
-224
-123
-55
-227
-126
-50
-183
-110
-59
-51
-62
-63
-137
-127
-115
-234
-204
-183
-63
-74
-74
-135
-94
-64
-234
-125
-52
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-126
-45
-199
-115
-54
-125
-90
-64
-69
-69
-61
-41
-58
-57
-97
-98
-96
-146
-135
-124
-51
-62
-63
-146
-97
-64
-234
-126
-45
-224
-123
-55
-224
-123
-55
-227
-126
-50
-214
-121
-50
-106
-82
-65
-48
-58
-59
-51
-62
-63
-55
-66
-67
-41
-58
-57
-65
-67
-64
-163
-104
-61
-234
-126
-45
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-234
-125
-52
-139
-96
-61
-55
-66
-67
-250
-197
-158
-251
-168
-115
-247
-150
-84
-247
-130
-60
-247
-118
-39
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-246
-116
-28
-247
-130
-53
-247
-143
-74
-249
-159
-103
-252
-185
-144
-154
-133
-118
-24
-22
-23
-108
-87
-46
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-71
-60
-43
-85
-71
-43
-171
-129
-45
-160
-120
-43
-216
-194
-154
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-237
-233
-225
-65
-58
-56
-62
-63
-61
-219
-212
-208
-253
-255
-252
-237
-233
-225
-120
-114
-108
-35
-31
-30
-55
-48
-48
-227
-196
-175
-255
-215
-190
-238
-205
-179
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-129
-106
-52
-51
-62
-63
-84
-85
-82
-187
-166
-150
-227
-196
-175
-227
-196
-175
-161
-144
-134
-51
-62
-63
-69
-69
-61
-152
-119
-47
-168
-127
-42
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-91
-92
-89
-217
-187
-166
-55
-66
-67
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-75
-74
-61
-58
-69
-70
-187
-166
-150
-255
-215
-190
-255
-215
-190
-255
-215
-190
-245
-212
-186
-161
-144
-134
-43
-57
-62
-100
-89
-56
-171
-129
-45
-158
-125
-46
-158
-125
-46
-161
-127
-40
-75
-74
-61
-84
-85
-82
-234
-204
-183
-76
-78
-76
-88
-82
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-145
-114
-49
-62
-63
-61
-63
-74
-74
-176
-156
-141
-227
-196
-175
-227
-196
-175
-176
-156
-141
-70
-79
-77
-62
-63
-61
-145
-114
-49
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-97
-98
-96
-172
-150
-134
-48
-58
-59
-129
-106
-52
-168
-127
-42
-158
-125
-46
-158
-125
-46
-171
-129
-45
-105
-93
-60
-43
-57
-62
-120
-114
-108
-207
-178
-158
-227
-196
-175
-217
-187
-166
-120
-114
-108
-41
-58
-57
-95
-87
-59
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-145
-114
-49
-56
-64
-60
-137
-127
-115
-58
-69
-70
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-65
-67
-64
-146
-135
-124
-207
-178
-158
-48
-58
-59
-111
-94
-57
-171
-129
-45
-158
-125
-46
-168
-127
-42
-152
-119
-47
-62
-63
-61
-70
-79
-77
-207
-178
-158
-255
-215
-190
-255
-215
-190
-255
-215
-190
-238
-205
-179
-137
-127
-115
-43
-57
-62
-117
-98
-55
-168
-127
-42
-158
-125
-46
-168
-127
-42
-152
-119
-47
-62
-63
-61
-109
-106
-99
-255
-215
-190
-161
-144
-134
-56
-64
-60
-199
-115
-54
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-227
-126
-50
-106
-82
-65
-41
-58
-57
-137
-127
-115
-217
-187
-166
-227
-196
-175
-207
-178
-158
-109
-106
-99
-41
-58
-57
-146
-97
-64
-234
-125
-52
-224
-123
-55
-224
-123
-55
-234
-125
-52
-173
-106
-60
-48
-58
-59
-176
-156
-141
-245
-212
-186
-70
-79
-77
-95
-78
-64
-234
-125
-52
-224
-123
-55
-224
-123
-55
-234
-125
-52
-188
-112
-56
-56
-64
-60
-70
-79
-77
-176
-156
-141
-227
-196
-175
-227
-196
-175
-176
-156
-141
-63
-74
-74
-62
-63
-61
-194
-112
-58
-227
-126
-50
-224
-123
-55
-227
-126
-50
-227
-126
-50
-95
-78
-64
-77
-85
-81
-245
-212
-186
-172
-150
-134
-48
-58
-59
-173
-106
-60
-234
-126
-45
-224
-123
-55
-224
-123
-55
-234
-125
-52
-135
-94
-64
-35
-56
-60
-120
-114
-108
-207
-178
-158
-227
-196
-175
-217
-187
-166
-133
-120
-107
-35
-56
-60
-118
-86
-65
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-194
-112
-58
-56
-64
-60
-101
-100
-92
-56
-64
-60
-188
-112
-56
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-194
-112
-58
-95
-78
-64
-48
-58
-59
-70
-79
-77
-146
-135
-124
-217
-187
-166
-207
-178
-158
-51
-62
-63
-155
-100
-63
-234
-126
-45
-224
-123
-55
-224
-123
-55
-234
-125
-52
-163
-104
-61
-48
-58
-59
-91
-92
-89
-194
-173
-157
-227
-196
-175
-217
-187
-166
-146
-135
-124
-43
-57
-62
-89
-75
-66
-214
-121
-50
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-251
-192
-154
-247
-165
-111
-247
-150
-84
-248
-138
-64
-247
-130
-60
-248
-138
-64
-249
-146
-83
-247
-165
-111
-239
-182
-144
-91
-92
-89
-76
-70
-64
-224
-123
-55
-227
-126
-50
-224
-123
-55
-227
-126
-50
-209
-117
-53
-76
-70
-64
-55
-66
-67
-172
-150
-134
-227
-196
-175
-227
-196
-175
-187
-166
-150
-77
-85
-81
-51
-62
-63
-173
-106
-60
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-126
-45
-118
-86
-65
-58
-69
-70
-217
-187
-166
-70
-79
-77
-135
-94
-64
-234
-125
-52
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-225
-124
-48
-125
-90
-64
-56
-64
-60
-55
-66
-67
-120
-114
-108
-187
-166
-150
-245
-212
-186
-120
-114
-108
-76
-70
-64
-214
-121
-50
-227
-126
-50
-224
-123
-55
-227
-126
-50
-225
-124
-48
-95
-78
-64
-43
-57
-62
-146
-135
-124
-217
-187
-166
-227
-196
-175
-194
-173
-157
-91
-92
-89
-48
-58
-59
-163
-104
-61
-234
-125
-52
-224
-123
-55
-224
-123
-55
-224
-123
-55
-234
-126
-45
-139
-96
-61
-55
-66
-67
-250
-197
-158
-249
-174
-124
-247
-150
-84
-247
-130
-60
-247
-118
-39
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-111
-26
-247
-118
-39
-247
-130
-53
-249
-146
-83
-251
-168
-115
-239
-182
-144
-65
-58
-56
-59
-50
-39
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-108
-87
-46
-47
-40
-38
-152
-119
-47
-170
-137
-67
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-174
-168
-167
-24
-22
-23
-109
-106
-99
-152
-147
-147
-97
-98
-96
-47
-40
-38
-24
-22
-23
-35
-31
-30
-35
-31
-30
-176
-156
-141
-255
-215
-190
-238
-205
-179
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-69
-69
-61
-76
-78
-76
-227
-196
-175
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-187
-166
-150
-51
-62
-63
-95
-87
-59
-168
-127
-42
-158
-125
-46
-158
-125
-46
-171
-129
-45
-117
-98
-55
-55
-66
-67
-109
-106
-99
-48
-58
-59
-137
-110
-49
-168
-127
-42
-158
-125
-46
-168
-127
-42
-117
-98
-55
-48
-58
-59
-187
-166
-150
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-137
-127
-115
-51
-62
-63
-145
-114
-49
-168
-127
-42
-158
-125
-46
-171
-129
-45
-117
-98
-55
-55
-66
-67
-137
-127
-115
-55
-66
-67
-123
-102
-54
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-55
-66
-67
-207
-178
-158
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-217
-187
-166
-58
-69
-70
-83
-78
-61
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-88
-82
-59
-91
-92
-89
-109
-106
-99
-69
-69
-61
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-145
-114
-49
-51
-62
-63
-120
-114
-108
-245
-212
-186
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-137
-127
-115
-48
-58
-59
-129
-106
-52
-168
-127
-42
-158
-125
-46
-158
-125
-46
-168
-127
-42
-145
-114
-49
-51
-62
-63
-137
-127
-115
-58
-69
-70
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-65
-67
-64
-146
-135
-124
-146
-135
-124
-62
-63
-61
-152
-119
-47
-168
-127
-42
-158
-125
-46
-168
-127
-42
-100
-89
-56
-51
-62
-63
-207
-178
-158
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-109
-106
-99
-63
-69
-60
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-100
-89
-56
-51
-62
-63
-227
-196
-175
-172
-150
-134
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-126
-45
-155
-100
-63
-41
-58
-57
-146
-135
-124
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-245
-212
-186
-109
-106
-99
-56
-64
-60
-199
-115
-54
-227
-126
-50
-224
-123
-55
-227
-126
-50
-224
-123
-55
-76
-70
-64
-109
-106
-99
-194
-173
-157
-43
-57
-62
-163
-104
-61
-234
-125
-52
-224
-123
-55
-224
-123
-55
-225
-124
-48
-89
-75
-66
-63
-74
-74
-217
-187
-166
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-217
-187
-166
-58
-69
-70
-95
-78
-64
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-126
-45
-155
-100
-63
-43
-57
-62
-207
-178
-158
-109
-106
-99
-76
-70
-64
-224
-123
-55
-227
-126
-50
-224
-123
-55
-227
-126
-50
-194
-112
-58
-51
-62
-63
-120
-114
-108
-253
-212
-188
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-137
-127
-115
-48
-58
-59
-173
-106
-60
-234
-125
-52
-224
-123
-55
-224
-123
-55
-227
-126
-50
-194
-112
-58
-56
-64
-60
-101
-100
-92
-56
-64
-60
-188
-112
-56
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-188
-112
-56
-62
-63
-61
-58
-69
-70
-161
-144
-134
-234
-204
-183
-255
-215
-190
-255
-215
-190
-137
-127
-115
-62
-63
-61
-209
-117
-53
-227
-126
-50
-224
-123
-55
-227
-126
-50
-212
-120
-56
-69
-69
-61
-77
-85
-81
-234
-204
-183
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-176
-156
-141
-35
-56
-60
-135
-94
-64
-234
-126
-45
-224
-123
-55
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-251
-192
-154
-251
-168
-115
-247
-150
-84
-250
-139
-73
-248
-138
-64
-250
-139
-73
-249
-152
-92
-249
-174
-124
-209
-171
-139
-43
-57
-62
-135
-94
-64
-234
-126
-45
-224
-123
-55
-224
-123
-55
-234
-126
-45
-112
-85
-63
-51
-62
-63
-194
-173
-157
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-227
-196
-175
-70
-79
-77
-76
-70
-64
-214
-121
-50
-227
-126
-50
-224
-123
-55
-227
-126
-50
-183
-110
-59
-48
-58
-59
-146
-135
-124
-77
-85
-81
-135
-94
-64
-234
-125
-52
-224
-123
-55
-224
-123
-55
-227
-126
-50
-214
-121
-50
-95
-78
-64
-35
-56
-60
-120
-114
-108
-217
-187
-166
-255
-215
-190
-255
-215
-190
-227
-196
-175
-58
-69
-70
-125
-90
-64
-234
-125
-52
-224
-123
-55
-224
-123
-55
-234
-125
-52
-139
-96
-61
-41
-58
-57
-172
-150
-134
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-234
-204
-183
-77
-85
-81
-76
-70
-64
-214
-121
-50
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-125
-52
-139
-96
-61
-51
-62
-63
-250
-200
-166
-249
-174
-124
-249
-152
-92
-247
-130
-60
-247
-118
-39
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-111
-26
-247
-123
-41
-248
-138
-64
-249
-152
-92
-249
-174
-124
-178
-146
-122
-24
-22
-23
-101
-83
-47
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-152
-119
-47
-47
-40
-38
-123
-102
-54
-209
-171
-139
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-164
-158
-157
-24
-22
-23
-24
-22
-23
-24
-22
-23
-24
-22
-23
-24
-22
-23
-35
-31
-30
-35
-31
-30
-47
-40
-38
-194
-173
-157
-255
-215
-190
-238
-205
-179
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-129
-106
-52
-48
-58
-59
-176
-156
-141
-255
-215
-190
-255
-215
-190
-253
-212
-188
-255
-215
-190
-255
-215
-190
-255
-215
-190
-120
-114
-108
-56
-64
-60
-152
-119
-47
-161
-127
-40
-158
-125
-46
-168
-127
-42
-137
-110
-49
-51
-62
-63
-48
-58
-59
-75
-74
-61
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-63
-74
-74
-194
-173
-157
-207
-178
-158
-207
-178
-158
-207
-178
-158
-207
-178
-158
-207
-178
-158
-207
-178
-158
-172
-150
-134
-48
-58
-59
-111
-94
-57
-171
-129
-45
-158
-125
-46
-168
-127
-42
-152
-119
-47
-56
-64
-60
-51
-62
-63
-56
-64
-60
-152
-119
-47
-168
-127
-42
-158
-125
-46
-168
-127
-42
-145
-114
-49
-51
-62
-63
-146
-135
-124
-255
-215
-190
-255
-215
-190
-253
-212
-188
-253
-212
-188
-255
-215
-190
-255
-215
-190
-146
-135
-124
-51
-62
-63
-145
-114
-49
-168
-127
-42
-158
-125
-46
-158
-125
-46
-168
-127
-42
-88
-82
-59
-70
-79
-77
-63
-74
-74
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-171
-129
-45
-95
-87
-59
-55
-66
-67
-227
-196
-175
-255
-215
-190
-255
-215
-190
-253
-212
-188
-255
-215
-190
-255
-215
-190
-234
-204
-183
-70
-79
-77
-88
-82
-59
-168
-127
-42
-158
-125
-46
-158
-125
-46
-168
-127
-42
-145
-114
-49
-56
-64
-60
-137
-127
-115
-58
-69
-70
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-63
-69
-60
-137
-127
-115
-97
-98
-96
-83
-78
-61
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-69
-69
-61
-84
-85
-82
-207
-178
-158
-207
-178
-158
-207
-178
-158
-207
-178
-158
-207
-178
-158
-207
-178
-158
-217
-187
-166
-146
-135
-124
-48
-58
-59
-129
-106
-52
-168
-127
-42
-158
-125
-46
-168
-127
-42
-129
-106
-52
-51
-62
-63
-187
-166
-150
-176
-156
-141
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-89
-75
-66
-70
-79
-77
-245
-212
-186
-255
-215
-190
-255
-215
-190
-253
-212
-188
-255
-215
-190
-255
-215
-190
-217
-187
-166
-43
-57
-62
-125
-90
-64
-234
-126
-45
-224
-123
-55
-224
-123
-55
-234
-126
-45
-106
-82
-65
-77
-85
-81
-133
-120
-107
-62
-63
-61
-209
-117
-53
-227
-126
-50
-224
-123
-55
-227
-126
-50
-183
-110
-59
-48
-58
-59
-161
-144
-134
-255
-215
-190
-255
-215
-190
-253
-212
-188
-253
-212
-188
-255
-215
-190
-255
-215
-190
-146
-135
-124
-48
-58
-59
-188
-112
-56
-227
-126
-50
-224
-123
-55
-227
-126
-50
-199
-115
-54
-62
-63
-61
-133
-120
-107
-77
-85
-81
-118
-86
-65
-234
-126
-45
-224
-123
-55
-224
-123
-55
-234
-126
-45
-125
-90
-64
-55
-66
-67
-227
-196
-175
-255
-215
-190
-255
-215
-190
-253
-212
-188
-255
-215
-190
-255
-215
-190
-234
-204
-183
-63
-74
-74
-106
-82
-65
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-194
-112
-58
-56
-64
-60
-97
-98
-96
-56
-64
-60
-188
-112
-56
-227
-126
-50
-224
-123
-55
-227
-126
-50
-224
-123
-55
-89
-75
-66
-63
-74
-74
-217
-187
-166
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-91
-92
-89
-95
-78
-64
-227
-126
-50
-227
-126
-50
-224
-123
-55
-234
-126
-45
-146
-97
-64
-43
-57
-62
-187
-166
-150
-255
-215
-190
-255
-215
-190
-253
-212
-188
-255
-215
-190
-255
-215
-190
-255
-215
-190
-101
-100
-92
-76
-70
-64
-224
-123
-55
-227
-126
-50
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-251
-192
-154
-251
-168
-115
-247
-150
-84
-250
-139
-73
-250
-139
-73
-247
-143
-74
-249
-159
-103
-250
-176
-132
-154
-133
-118
-51
-62
-63
-183
-110
-59
-227
-126
-50
-224
-123
-55
-227
-126
-50
-199
-115
-54
-62
-63
-61
-133
-120
-107
-255
-215
-190
-255
-215
-190
-253
-212
-188
-253
-212
-188
-255
-215
-190
-255
-215
-190
-176
-156
-141
-43
-57
-62
-163
-104
-61
-234
-125
-52
-224
-123
-55
-227
-126
-50
-214
-121
-50
-76
-70
-64
-91
-92
-89
-70
-79
-77
-135
-94
-64
-234
-126
-45
-224
-123
-55
-224
-123
-55
-234
-125
-52
-146
-97
-64
-35
-56
-60
-161
-144
-134
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-194
-173
-157
-48
-58
-59
-163
-104
-61
-234
-126
-45
-224
-123
-55
-227
-126
-50
-214
-121
-50
-76
-70
-64
-97
-98
-96
-255
-215
-190
-255
-215
-190
-255
-215
-190
-253
-212
-188
-255
-215
-190
-255
-215
-190
-187
-166
-150
-43
-57
-62
-163
-104
-61
-234
-125
-52
-224
-123
-55
-224
-123
-55
-234
-125
-52
-139
-96
-61
-55
-66
-67
-250
-200
-166
-249
-174
-124
-249
-152
-92
-247
-130
-60
-247
-118
-39
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-109
-10
-247
-111
-26
-247
-123
-41
-248
-138
-64
-249
-159
-103
-248
-180
-134
-124
-111
-99
-35
-31
-30
-137
-110
-49
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-59
-50
-39
-85
-71
-43
-216
-194
-154
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-207
-202
-200
-47
-40
-38
-24
-22
-23
-35
-31
-30
-35
-31
-30
-35
-31
-30
-35
-31
-30
-24
-22
-23
-65
-58
-56
-238
-205
-179
-255
-215
-190
-238
-205
-179
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-100
-89
-56
-63
-74
-74
-227
-196
-175
-255
-215
-190
-253
-204
-176
-250
-200
-166
-250
-200
-166
-251
-209
-178
-255
-215
-190
-194
-173
-157
-48
-58
-59
-123
-102
-54
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-63
-69
-60
-43
-57
-62
-95
-87
-59
-168
-127
-42
-158
-125
-46
-161
-127
-40
-158
-125
-46
-63
-69
-60
-43
-57
-62
-51
-62
-63
-51
-62
-63
-51
-62
-63
-51
-62
-63
-51
-62
-63
-51
-62
-63
-51
-62
-63
-51
-62
-63
-43
-57
-62
-88
-82
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-75
-74
-61
-43
-57
-62
-75
-74
-61
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-117
-98
-55
-51
-62
-63
-217
-187
-166
-255
-215
-190
-253
-204
-176
-250
-200
-166
-250
-200
-166
-253
-204
-176
-255
-215
-190
-217
-187
-166
-48
-58
-59
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-88
-82
-59
-48
-58
-59
-48
-58
-59
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-69
-69
-61
-109
-106
-99
-255
-215
-190
-253
-212
-188
-253
-204
-176
-250
-200
-166
-250
-200
-166
-253
-212
-188
-255
-215
-190
-120
-114
-108
-63
-69
-60
-158
-125
-46
-161
-127
-40
-158
-125
-46
-168
-127
-42
-145
-114
-49
-51
-62
-63
-137
-127
-115
-58
-69
-70
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-63
-69
-60
-120
-114
-108
-70
-79
-77
-105
-93
-60
-171
-129
-45
-158
-125
-46
-168
-127
-42
-152
-119
-47
-56
-64
-60
-51
-62
-63
-51
-62
-63
-51
-62
-63
-51
-62
-63
-51
-62
-63
-51
-62
-63
-51
-62
-63
-51
-62
-63
-51
-62
-63
-43
-57
-62
-111
-94
-57
-171
-129
-45
-158
-125
-46
-161
-127
-40
-152
-119
-47
-62
-63
-61
-146
-135
-124
-172
-150
-134
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-227
-126
-50
-199
-115
-54
-62
-63
-61
-146
-135
-124
-255
-215
-190
-253
-212
-188
-250
-200
-166
-250
-200
-166
-253
-204
-176
-253
-212
-188
-253
-212
-188
-97
-98
-96
-89
-75
-66
-227
-126
-50
-227
-126
-50
-224
-123
-55
-234
-126
-45
-139
-96
-61
-51
-62
-63
-63
-74
-74
-89
-75
-66
-227
-126
-50
-227
-126
-50
-224
-123
-55
-234
-125
-52
-135
-94
-64
-55
-66
-67
-217
-187
-166
-255
-215
-190
-253
-204
-176
-250
-200
-166
-250
-200
-166
-253
-204
-176
-255
-215
-190
-217
-187
-166
-51
-62
-63
-139
-96
-61
-234
-126
-45
-224
-123
-55
-227
-126
-50
-225
-124
-48
-81
-73
-62
-58
-69
-70
-51
-62
-63
-146
-97
-64
-234
-126
-45
-224
-123
-55
-227
-126
-50
-224
-123
-55
-81
-73
-62
-109
-106
-99
-255
-215
-190
-253
-212
-188
-253
-204
-176
-250
-200
-166
-250
-200
-166
-253
-212
-188
-255
-215
-190
-120
-114
-108
-69
-69
-61
-212
-120
-56
-227
-126
-50
-224
-123
-55
-227
-126
-50
-194
-112
-58
-56
-64
-60
-101
-100
-92
-56
-64
-60
-188
-112
-56
-234
-125
-52
-224
-123
-55
-227
-126
-50
-194
-112
-58
-51
-62
-63
-146
-135
-124
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-234
-204
-183
-70
-79
-77
-118
-86
-65
-234
-125
-52
-224
-123
-55
-227
-126
-50
-227
-126
-50
-106
-82
-65
-77
-85
-81
-245
-212
-186
-255
-215
-190
-253
-204
-176
-250
-200
-166
-250
-200
-166
-251
-209
-178
-255
-215
-190
-176
-156
-141
-56
-64
-60
-188
-112
-56
-234
-125
-52
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-251
-192
-154
-251
-168
-115
-249
-152
-92
-247
-143
-74
-247
-143
-74
-247
-150
-84
-249
-159
-103
-248
-180
-134
-120
-114
-108
-69
-69
-61
-212
-120
-56
-227
-126
-50
-224
-123
-55
-234
-125
-52
-155
-100
-63
-43
-57
-62
-194
-173
-157
-255
-215
-190
-253
-204
-176
-250
-200
-166
-250
-200
-166
-253
-204
-176
-255
-215
-190
-234
-204
-183
-63
-74
-74
-112
-85
-63
-234
-125
-52
-227
-126
-50
-224
-123
-55
-234
-125
-52
-106
-82
-65
-58
-69
-70
-55
-66
-67
-135
-94
-64
-234
-125
-52
-224
-123
-55
-227
-126
-50
-227
-126
-50
-95
-78
-64
-77
-85
-81
-245
-212
-186
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-161
-144
-134
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-227
-126
-50
-183
-110
-59
-48
-58
-59
-172
-150
-134
-255
-215
-190
-251
-209
-178
-250
-200
-166
-250
-200
-166
-253
-204
-176
-255
-215
-190
-245
-212
-186
-63
-74
-74
-112
-85
-63
-234
-125
-52
-224
-123
-55
-224
-123
-55
-234
-126
-45
-139
-96
-61
-55
-66
-67
-250
-200
-166
-249
-174
-124
-249
-152
-92
-247
-130
-60
-247
-118
-39
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-123
-41
-250
-139
-73
-249
-159
-103
-252
-185
-144
-82
-69
-65
-47
-40
-38
-158
-125
-46
-161
-127
-40
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-85
-71
-43
-59
-50
-39
-216
-194
-154
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-164
-158
-157
-47
-40
-38
-24
-22
-23
-24
-22
-23
-24
-22
-23
-35
-31
-30
-65
-67
-64
-65
-58
-56
-227
-196
-175
-255
-215
-190
-238
-205
-179
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-88
-82
-59
-84
-85
-82
-255
-215
-190
-251
-209
-178
-250
-197
-158
-251
-192
-154
-251
-192
-154
-250
-200
-166
-253
-212
-188
-227
-196
-175
-58
-69
-70
-105
-93
-60
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-75
-74
-61
-41
-58
-57
-111
-94
-57
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-123
-102
-54
-123
-102
-54
-123
-102
-54
-123
-102
-54
-123
-102
-54
-123
-102
-54
-123
-102
-54
-123
-102
-54
-123
-102
-54
-123
-102
-54
-123
-102
-54
-137
-110
-49
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-41
-58
-57
-83
-78
-61
-168
-127
-42
-158
-125
-46
-158
-125
-46
-171
-129
-45
-95
-87
-59
-70
-79
-77
-245
-212
-186
-253
-212
-188
-250
-200
-166
-251
-192
-154
-251
-192
-154
-250
-200
-166
-253
-212
-188
-238
-205
-179
-70
-79
-77
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-88
-82
-59
-48
-58
-59
-48
-58
-59
-129
-106
-52
-168
-127
-42
-158
-125
-46
-168
-127
-42
-152
-119
-47
-56
-64
-60
-146
-135
-124
-255
-215
-190
-253
-204
-176
-250
-197
-158
-251
-192
-154
-251
-192
-154
-253
-204
-176
-255
-215
-190
-172
-150
-134
-51
-62
-63
-145
-114
-49
-168
-127
-42
-158
-125
-46
-168
-127
-42
-145
-114
-49
-51
-62
-63
-137
-127
-115
-58
-69
-70
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-63
-69
-60
-97
-98
-96
-55
-66
-67
-123
-102
-54
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-123
-102
-54
-123
-102
-54
-123
-102
-54
-123
-102
-54
-123
-102
-54
-123
-102
-54
-123
-102
-54
-123
-102
-54
-123
-102
-54
-123
-102
-54
-117
-98
-55
-145
-114
-49
-161
-127
-40
-158
-125
-46
-158
-125
-46
-158
-125
-46
-69
-69
-61
-137
-127
-115
-172
-150
-134
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-234
-125
-52
-183
-110
-59
-51
-62
-63
-187
-166
-150
-255
-215
-190
-253
-204
-176
-251
-192
-154
-251
-192
-154
-250
-197
-158
-253
-204
-176
-255
-215
-190
-137
-127
-115
-65
-67
-64
-209
-117
-53
-227
-126
-50
-224
-123
-55
-234
-125
-52
-163
-104
-61
-43
-57
-62
-41
-58
-57
-106
-82
-65
-234
-125
-52
-224
-123
-55
-224
-123
-55
-234
-125
-52
-106
-82
-65
-77
-85
-81
-245
-212
-186
-251
-209
-178
-250
-197
-158
-249
-189
-146
-251
-192
-154
-250
-197
-158
-251
-209
-178
-238
-205
-179
-77
-85
-81
-112
-85
-63
-234
-126
-45
-224
-123
-55
-224
-123
-55
-227
-126
-50
-106
-82
-65
-41
-58
-57
-48
-58
-59
-163
-104
-61
-234
-125
-52
-224
-123
-55
-227
-126
-50
-209
-117
-53
-62
-63
-61
-146
-135
-124
-255
-215
-190
-253
-204
-176
-250
-197
-158
-251
-192
-154
-251
-192
-154
-253
-204
-176
-255
-215
-190
-176
-156
-141
-56
-64
-60
-188
-112
-56
-227
-126
-50
-224
-123
-55
-227
-126
-50
-194
-112
-58
-56
-64
-60
-101
-100
-92
-56
-64
-60
-188
-112
-56
-234
-125
-52
-224
-123
-55
-227
-126
-50
-183
-110
-59
-48
-58
-59
-176
-156
-141
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-227
-196
-175
-58
-69
-70
-139
-96
-61
-234
-125
-52
-224
-123
-55
-227
-126
-50
-214
-121
-50
-76
-70
-64
-120
-114
-108
-255
-215
-190
-253
-204
-176
-250
-197
-158
-251
-192
-154
-251
-192
-154
-250
-200
-166
-255
-215
-190
-207
-178
-158
-48
-58
-59
-163
-104
-61
-234
-125
-52
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-251
-192
-154
-249
-174
-124
-246
-156
-93
-247
-150
-84
-249
-146
-83
-249
-152
-92
-251
-168
-115
-249
-189
-146
-97
-98
-96
-89
-75
-66
-225
-124
-48
-227
-126
-50
-224
-123
-55
-234
-126
-45
-125
-90
-64
-58
-69
-70
-227
-196
-175
-253
-212
-188
-250
-200
-166
-251
-192
-154
-249
-189
-146
-250
-197
-158
-251
-209
-178
-255
-215
-190
-97
-98
-96
-89
-75
-66
-227
-126
-50
-227
-126
-50
-224
-123
-55
-234
-126
-45
-125
-90
-64
-43
-57
-62
-43
-57
-62
-135
-94
-64
-234
-125
-52
-224
-123
-55
-227
-126
-50
-227
-126
-50
-89
-75
-66
-101
-100
-92
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-137
-127
-115
-69
-69
-61
-212
-120
-56
-227
-126
-50
-224
-123
-55
-234
-126
-45
-155
-100
-63
-43
-57
-62
-207
-178
-158
-255
-215
-190
-250
-200
-166
-251
-192
-154
-251
-192
-154
-250
-197
-158
-251
-209
-178
-255
-215
-190
-109
-106
-99
-89
-75
-66
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-126
-45
-139
-96
-61
-55
-66
-67
-250
-200
-166
-249
-174
-124
-249
-152
-92
-247
-130
-60
-247
-118
-39
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-123
-41
-247
-143
-74
-249
-159
-103
-252
-185
-144
-55
-48
-48
-59
-50
-39
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-156
-125
-62
-101
-83
-47
-59
-50
-39
-209
-171
-139
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-219
-212
-208
-137
-127
-115
-101
-100
-92
-120
-114
-108
-186
-181
-179
-152
-147
-147
-55
-48
-48
-227
-196
-175
-255
-215
-190
-238
-205
-179
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-97
-98
-96
-255
-215
-190
-253
-204
-176
-251
-192
-154
-249
-189
-146
-249
-189
-146
-250
-197
-158
-251
-209
-178
-234
-204
-183
-70
-79
-77
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-161
-127
-40
-75
-74
-61
-41
-58
-57
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-168
-127
-42
-168
-127
-42
-168
-127
-42
-171
-129
-45
-75
-74
-61
-41
-58
-57
-88
-82
-59
-168
-127
-42
-158
-125
-46
-158
-125
-46
-171
-129
-45
-88
-82
-59
-77
-85
-81
-245
-212
-186
-251
-209
-178
-250
-197
-158
-249
-189
-146
-249
-189
-146
-250
-197
-158
-251
-209
-178
-245
-212
-186
-84
-85
-82
-88
-82
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-88
-82
-59
-43
-57
-62
-48
-58
-59
-129
-106
-52
-168
-127
-42
-158
-125
-46
-168
-127
-42
-145
-114
-49
-56
-64
-60
-161
-144
-134
-255
-215
-190
-250
-200
-166
-251
-192
-154
-249
-189
-146
-251
-192
-154
-250
-200
-166
-255
-215
-190
-187
-166
-150
-51
-62
-63
-137
-110
-49
-168
-127
-42
-158
-125
-46
-168
-127
-42
-145
-114
-49
-51
-62
-63
-137
-127
-115
-58
-69
-70
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-65
-67
-64
-91
-92
-89
-55
-66
-67
-129
-106
-52
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-168
-127
-42
-168
-127
-42
-168
-127
-42
-158
-125
-46
-63
-69
-60
-137
-127
-115
-172
-150
-134
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-227
-126
-50
-173
-106
-60
-48
-58
-59
-187
-166
-150
-255
-215
-190
-250
-200
-166
-251
-192
-154
-249
-189
-146
-251
-192
-154
-250
-200
-166
-255
-215
-190
-161
-144
-134
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-234
-125
-52
-173
-106
-60
-48
-58
-59
-41
-58
-57
-118
-86
-65
-234
-126
-45
-224
-123
-55
-224
-123
-55
-234
-125
-52
-95
-78
-64
-91
-92
-89
-255
-215
-190
-253
-204
-176
-251
-192
-154
-252
-185
-144
-252
-185
-144
-251
-192
-154
-253
-204
-176
-245
-212
-186
-91
-92
-89
-106
-82
-65
-234
-125
-52
-224
-123
-55
-224
-123
-55
-234
-125
-52
-112
-85
-63
-41
-58
-57
-48
-58
-59
-173
-106
-60
-234
-125
-52
-224
-123
-55
-227
-126
-50
-199
-115
-54
-56
-64
-60
-161
-144
-134
-255
-215
-190
-250
-200
-166
-251
-192
-154
-249
-189
-146
-251
-192
-154
-250
-200
-166
-255
-215
-190
-187
-166
-150
-48
-58
-59
-183
-110
-59
-234
-125
-52
-224
-123
-55
-227
-126
-50
-194
-112
-58
-56
-64
-60
-101
-100
-92
-56
-64
-60
-188
-112
-56
-227
-126
-50
-224
-123
-55
-227
-126
-50
-183
-110
-59
-51
-62
-63
-176
-156
-141
-255
-215
-190
-253
-212
-188
-251
-209
-178
-253
-212
-188
-217
-187
-166
-55
-66
-67
-146
-97
-64
-234
-126
-45
-224
-123
-55
-227
-126
-50
-214
-121
-50
-69
-69
-61
-137
-127
-115
-255
-215
-190
-253
-204
-176
-251
-192
-154
-249
-189
-146
-249
-189
-146
-250
-200
-166
-253
-212
-188
-217
-187
-166
-51
-62
-63
-155
-100
-63
-234
-125
-52
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-250
-197
-158
-249
-174
-124
-249
-159
-103
-249
-152
-92
-249
-152
-92
-249
-159
-103
-249
-174
-124
-250
-197
-158
-91
-92
-89
-95
-78
-64
-227
-126
-50
-227
-126
-50
-224
-123
-55
-234
-125
-52
-125
-90
-64
-70
-79
-77
-234
-204
-183
-251
-209
-178
-250
-197
-158
-249
-189
-146
-252
-185
-144
-251
-192
-154
-253
-204
-176
-255
-215
-190
-120
-114
-108
-81
-73
-62
-224
-123
-55
-227
-126
-50
-224
-123
-55
-234
-126
-45
-135
-94
-64
-41
-58
-57
-41
-58
-57
-135
-94
-64
-234
-125
-52
-224
-123
-55
-227
-126
-50
-227
-126
-50
-89
-75
-66
-101
-100
-92
-253
-212
-188
-253
-212
-188
-251
-209
-178
-251
-209
-178
-255
-215
-190
-137
-127
-115
-76
-70
-64
-214
-121
-50
-227
-126
-50
-224
-123
-55
-234
-125
-52
-146
-97
-64
-51
-62
-63
-227
-196
-175
-253
-212
-188
-250
-197
-158
-249
-189
-146
-249
-189
-146
-251
-192
-154
-253
-204
-176
-255
-215
-190
-120
-114
-108
-81
-73
-62
-227
-126
-50
-227
-126
-50
-224
-123
-55
-234
-126
-45
-139
-96
-61
-51
-62
-63
-250
-200
-166
-249
-174
-124
-249
-152
-92
-247
-130
-60
-247
-118
-39
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-123
-41
-250
-139
-73
-249
-159
-103
-252
-185
-144
-55
-48
-48
-59
-50
-39
-161
-127
-40
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-154
-125
-71
-170
-137
-67
-108
-87
-46
-59
-50
-39
-192
-155
-91
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-186
-181
-179
-47
-40
-38
-65
-58
-56
-245
-212
-186
-255
-215
-190
-238
-205
-179
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-88
-82
-59
-84
-85
-82
-253
-212
-188
-251
-209
-178
-250
-197
-158
-251
-192
-154
-251
-192
-154
-250
-200
-166
-253
-212
-188
-234
-204
-183
-63
-74
-74
-100
-89
-56
-171
-129
-45
-158
-125
-46
-158
-125
-46
-161
-127
-40
-75
-74
-61
-41
-58
-57
-111
-94
-57
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-111
-94
-57
-56
-64
-60
-43
-57
-62
-83
-78
-61
-168
-127
-42
-158
-125
-46
-158
-125
-46
-171
-129
-45
-95
-87
-59
-70
-79
-77
-245
-212
-186
-251
-209
-178
-250
-197
-158
-251
-192
-154
-251
-192
-154
-250
-197
-158
-251
-209
-178
-245
-212
-186
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-88
-82
-59
-43
-57
-62
-48
-58
-59
-129
-106
-52
-168
-127
-42
-158
-125
-46
-158
-125
-46
-152
-119
-47
-56
-64
-60
-161
-144
-134
-255
-215
-190
-253
-204
-176
-251
-192
-154
-249
-189
-146
-251
-192
-154
-250
-200
-166
-255
-215
-190
-176
-156
-141
-51
-62
-63
-137
-110
-49
-168
-127
-42
-158
-125
-46
-168
-127
-42
-145
-114
-49
-51
-62
-63
-137
-127
-115
-58
-69
-70
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-63
-69
-60
-91
-92
-89
-55
-66
-67
-123
-102
-54
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-100
-89
-56
-48
-58
-59
-187
-166
-150
-176
-156
-141
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-227
-126
-50
-183
-110
-59
-51
-62
-63
-176
-156
-141
-255
-215
-190
-250
-200
-166
-251
-192
-154
-251
-192
-154
-250
-197
-158
-253
-204
-176
-255
-215
-190
-146
-135
-124
-62
-63
-61
-209
-117
-53
-227
-126
-50
-224
-123
-55
-234
-125
-52
-163
-104
-61
-48
-58
-59
-41
-58
-57
-112
-85
-63
-234
-125
-52
-224
-123
-55
-224
-123
-55
-234
-125
-52
-106
-82
-65
-84
-85
-82
-255
-215
-190
-251
-209
-178
-250
-197
-158
-249
-189
-146
-249
-189
-146
-250
-197
-158
-251
-209
-178
-238
-205
-179
-84
-85
-82
-106
-82
-65
-234
-125
-52
-224
-123
-55
-227
-126
-50
-227
-126
-50
-106
-82
-65
-41
-58
-57
-48
-58
-59
-173
-106
-60
-227
-126
-50
-224
-123
-55
-227
-126
-50
-199
-115
-54
-62
-63
-61
-146
-135
-124
-255
-215
-190
-253
-204
-176
-251
-192
-154
-249
-189
-146
-251
-192
-154
-250
-200
-166
-255
-215
-190
-176
-156
-141
-51
-62
-63
-183
-110
-59
-227
-126
-50
-224
-123
-55
-227
-126
-50
-194
-112
-58
-56
-64
-60
-101
-100
-92
-56
-64
-60
-188
-112
-56
-227
-126
-50
-224
-123
-55
-227
-126
-50
-183
-110
-59
-51
-62
-63
-176
-156
-141
-253
-212
-188
-253
-204
-176
-250
-200
-166
-253
-204
-176
-217
-187
-166
-55
-66
-67
-146
-97
-64
-234
-125
-52
-224
-123
-55
-227
-126
-50
-214
-121
-50
-76
-70
-64
-120
-114
-108
-255
-215
-190
-253
-204
-176
-250
-197
-158
-251
-192
-154
-251
-192
-154
-250
-200
-166
-253
-212
-188
-207
-178
-158
-48
-58
-59
-163
-104
-61
-227
-126
-50
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-250
-200
-166
-248
-180
-134
-251
-168
-115
-247
-165
-111
-247
-165
-111
-251
-168
-115
-248
-180
-134
-250
-200
-166
-91
-92
-89
-89
-75
-66
-225
-124
-48
-227
-126
-50
-224
-123
-55
-234
-126
-45
-125
-90
-64
-63
-74
-74
-227
-196
-175
-251
-209
-178
-250
-197
-158
-249
-189
-146
-249
-189
-146
-250
-197
-158
-253
-204
-176
-255
-215
-190
-109
-106
-99
-89
-75
-66
-225
-124
-48
-227
-126
-50
-224
-123
-55
-234
-125
-52
-125
-90
-64
-43
-57
-62
-41
-58
-57
-135
-94
-64
-234
-126
-45
-224
-123
-55
-227
-126
-50
-227
-126
-50
-89
-75
-66
-101
-100
-92
-253
-212
-188
-253
-204
-176
-250
-200
-166
-250
-200
-166
-251
-209
-178
-137
-127
-115
-76
-70
-64
-214
-121
-50
-227
-126
-50
-224
-123
-55
-234
-125
-52
-155
-100
-63
-43
-57
-62
-217
-187
-166
-253
-212
-188
-250
-200
-166
-251
-192
-154
-249
-189
-146
-250
-197
-158
-253
-204
-176
-255
-215
-190
-120
-114
-108
-81
-73
-62
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-125
-52
-139
-96
-61
-55
-66
-67
-250
-200
-166
-249
-174
-124
-249
-152
-92
-247
-130
-60
-247
-118
-39
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-123
-41
-250
-139
-73
-249
-159
-103
-248
-180
-134
-76
-70
-64
-47
-40
-38
-152
-119
-47
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-156
-125
-62
-154
-125
-71
-170
-137
-67
-101
-83
-47
-59
-50
-39
-170
-137
-67
-255
-238
-227
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-152
-147
-147
-35
-31
-30
-24
-22
-23
-115
-102
-92
-255
-215
-190
-255
-215
-190
-238
-205
-179
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-171
-129
-45
-105
-93
-60
-58
-69
-70
-227
-196
-175
-255
-215
-190
-253
-204
-176
-250
-200
-166
-250
-200
-166
-253
-204
-176
-255
-215
-190
-207
-178
-158
-48
-58
-59
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-69
-69
-61
-43
-57
-62
-100
-89
-56
-171
-129
-45
-158
-125
-46
-161
-127
-40
-158
-125
-46
-75
-74
-61
-48
-58
-59
-56
-64
-60
-56
-64
-60
-56
-64
-60
-56
-64
-60
-56
-64
-60
-56
-64
-60
-56
-64
-60
-56
-64
-60
-56
-64
-60
-56
-64
-60
-56
-64
-60
-56
-64
-60
-56
-64
-60
-48
-58
-59
-101
-100
-92
-91
-92
-89
-75
-74
-61
-168
-127
-42
-158
-125
-46
-158
-125
-46
-171
-129
-45
-111
-94
-57
-55
-66
-67
-227
-196
-175
-255
-215
-190
-253
-204
-176
-250
-200
-166
-250
-200
-166
-253
-204
-176
-255
-215
-190
-227
-196
-175
-51
-62
-63
-105
-93
-60
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-48
-58
-59
-48
-58
-59
-123
-102
-54
-168
-127
-42
-158
-125
-46
-161
-127
-40
-158
-125
-46
-69
-69
-61
-120
-114
-108
-255
-215
-190
-251
-209
-178
-250
-200
-166
-250
-197
-158
-250
-200
-166
-251
-209
-178
-255
-215
-190
-146
-135
-124
-56
-64
-60
-152
-119
-47
-168
-127
-42
-158
-125
-46
-168
-127
-42
-145
-114
-49
-51
-62
-63
-137
-127
-115
-58
-69
-70
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-63
-69
-60
-109
-106
-99
-63
-74
-74
-111
-94
-57
-171
-129
-45
-158
-125
-46
-161
-127
-40
-152
-119
-47
-69
-69
-61
-51
-62
-63
-56
-64
-60
-56
-64
-60
-56
-64
-60
-56
-64
-60
-56
-64
-60
-56
-64
-60
-56
-64
-60
-56
-64
-60
-56
-64
-60
-56
-64
-60
-56
-64
-60
-56
-64
-60
-51
-62
-63
-48
-58
-59
-120
-114
-108
-245
-212
-186
-172
-150
-134
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-227
-126
-50
-209
-117
-53
-62
-63
-61
-137
-127
-115
-255
-215
-190
-251
-209
-178
-250
-200
-166
-250
-200
-166
-250
-200
-166
-253
-212
-188
-255
-215
-190
-109
-106
-99
-81
-73
-62
-224
-123
-55
-227
-126
-50
-224
-123
-55
-234
-125
-52
-155
-100
-63
-48
-58
-59
-43
-57
-62
-95
-78
-64
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-125
-52
-125
-90
-64
-63
-74
-74
-227
-196
-175
-253
-212
-188
-250
-200
-166
-250
-197
-158
-250
-197
-158
-253
-204
-176
-255
-215
-190
-227
-196
-175
-55
-66
-67
-125
-90
-64
-234
-125
-52
-224
-123
-55
-224
-123
-55
-227
-126
-50
-89
-75
-66
-48
-58
-59
-48
-58
-59
-155
-100
-63
-234
-126
-45
-224
-123
-55
-227
-126
-50
-214
-121
-50
-76
-70
-64
-120
-114
-108
-255
-215
-190
-251
-209
-178
-250
-200
-166
-250
-197
-158
-250
-200
-166
-251
-209
-178
-255
-215
-190
-137
-127
-115
-62
-63
-61
-209
-117
-53
-227
-126
-50
-224
-123
-55
-227
-126
-50
-194
-112
-58
-56
-64
-60
-97
-98
-96
-56
-64
-60
-188
-112
-56
-227
-126
-50
-224
-123
-55
-227
-126
-50
-183
-110
-59
-48
-58
-59
-176
-156
-141
-251
-209
-178
-250
-200
-166
-250
-197
-158
-250
-200
-166
-227
-196
-175
-63
-74
-74
-135
-94
-64
-234
-126
-45
-224
-123
-55
-227
-126
-50
-227
-126
-50
-95
-78
-64
-91
-92
-89
-253
-212
-188
-253
-212
-188
-250
-200
-166
-250
-200
-166
-250
-200
-166
-251
-209
-178
-255
-215
-190
-172
-150
-134
-56
-64
-60
-188
-112
-56
-227
-126
-50
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-251
-209
-178
-251
-192
-154
-250
-176
-132
-249
-174
-124
-249
-174
-124
-248
-180
-134
-251
-192
-154
-251
-209
-178
-109
-106
-99
-76
-70
-64
-214
-121
-50
-227
-126
-50
-224
-123
-55
-234
-126
-45
-146
-97
-64
-43
-57
-62
-217
-187
-166
-255
-215
-190
-253
-204
-176
-250
-197
-158
-250
-197
-158
-250
-200
-166
-253
-212
-188
-245
-212
-186
-70
-79
-77
-106
-82
-65
-234
-125
-52
-224
-123
-55
-224
-123
-55
-234
-125
-52
-112
-85
-63
-51
-62
-63
-51
-62
-63
-135
-94
-64
-234
-126
-45
-224
-123
-55
-227
-126
-50
-227
-126
-50
-89
-75
-66
-101
-100
-92
-245
-212
-186
-250
-200
-166
-251
-192
-154
-250
-197
-158
-253
-204
-176
-146
-135
-124
-65
-67
-64
-209
-117
-53
-227
-126
-50
-224
-123
-55
-234
-125
-52
-173
-106
-60
-48
-58
-59
-187
-166
-150
-255
-215
-190
-253
-204
-176
-250
-200
-166
-250
-197
-158
-250
-200
-166
-253
-212
-188
-255
-215
-190
-84
-85
-82
-95
-78
-64
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-125
-52
-139
-96
-61
-55
-66
-67
-250
-200
-166
-249
-174
-124
-249
-152
-92
-247
-130
-60
-247
-118
-39
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-109
-10
-247
-111
-26
-247
-123
-41
-248
-138
-64
-249
-152
-92
-249
-174
-124
-121
-100
-85
-35
-31
-30
-108
-87
-46
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-156
-125
-62
-154
-125
-71
-154
-125
-71
-171
-129
-45
-85
-71
-43
-71
-60
-43
-171
-129
-45
-224
-207
-180
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-237
-233
-225
-174
-168
-167
-81
-77
-76
-24
-22
-23
-35
-31
-30
-35
-31
-30
-187
-166
-150
-255
-215
-190
-255
-215
-190
-234
-204
-183
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-129
-106
-52
-51
-62
-63
-176
-156
-141
-255
-215
-190
-255
-215
-190
-253
-212
-188
-253
-212
-188
-255
-215
-190
-255
-215
-190
-146
-135
-124
-51
-62
-63
-145
-114
-49
-168
-127
-42
-158
-125
-46
-158
-125
-46
-152
-119
-47
-56
-64
-60
-43
-57
-62
-83
-78
-61
-168
-127
-42
-158
-125
-46
-158
-125
-46
-168
-127
-42
-88
-82
-59
-48
-58
-59
-146
-135
-124
-161
-144
-134
-161
-144
-134
-161
-144
-134
-161
-144
-134
-161
-144
-134
-161
-144
-134
-161
-144
-134
-161
-144
-134
-172
-150
-134
-172
-150
-134
-146
-135
-124
-146
-135
-124
-194
-173
-157
-245
-212
-186
-137
-127
-115
-63
-69
-60
-158
-125
-46
-161
-127
-40
-158
-125
-46
-168
-127
-42
-137
-110
-49
-51
-62
-63
-161
-144
-134
-255
-215
-190
-255
-215
-190
-253
-212
-188
-253
-212
-188
-255
-215
-190
-255
-215
-190
-161
-144
-134
-48
-58
-59
-137
-110
-49
-168
-127
-42
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-55
-66
-67
-51
-62
-63
-105
-93
-60
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-88
-82
-59
-70
-79
-77
-245
-212
-186
-255
-215
-190
-253
-212
-188
-251
-209
-178
-253
-212
-188
-255
-215
-190
-255
-215
-190
-91
-92
-89
-75
-74
-61
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-145
-114
-49
-51
-62
-63
-137
-127
-115
-58
-69
-70
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-63
-69
-60
-133
-120
-107
-84
-85
-82
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-75
-74
-61
-55
-66
-67
-161
-144
-134
-161
-144
-134
-161
-144
-134
-161
-144
-134
-161
-144
-134
-161
-144
-134
-161
-144
-134
-161
-144
-134
-161
-144
-134
-172
-150
-134
-172
-150
-134
-137
-127
-115
-146
-135
-124
-207
-178
-158
-245
-212
-186
-255
-215
-190
-161
-144
-134
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-227
-126
-50
-227
-126
-50
-89
-75
-66
-76
-78
-76
-245
-212
-186
-255
-215
-190
-253
-212
-188
-253
-212
-188
-253
-212
-188
-255
-215
-190
-227
-196
-175
-58
-69
-70
-118
-86
-65
-234
-125
-52
-224
-123
-55
-224
-123
-55
-234
-125
-52
-125
-90
-64
-63
-74
-74
-97
-98
-96
-76
-70
-64
-214
-121
-50
-227
-126
-50
-224
-123
-55
-234
-125
-52
-163
-104
-61
-48
-58
-59
-187
-166
-150
-255
-215
-190
-255
-215
-190
-251
-209
-178
-251
-209
-178
-255
-215
-190
-255
-215
-190
-176
-156
-141
-48
-58
-59
-173
-106
-60
-227
-126
-50
-224
-123
-55
-227
-126
-50
-212
-120
-56
-69
-69
-61
-101
-100
-92
-63
-74
-74
-125
-90
-64
-234
-125
-52
-224
-123
-55
-224
-123
-55
-234
-125
-52
-106
-82
-65
-63
-74
-74
-234
-204
-183
-255
-215
-190
-253
-212
-188
-253
-212
-188
-253
-212
-188
-255
-215
-190
-245
-212
-186
-70
-79
-77
-89
-75
-66
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-194
-112
-58
-56
-64
-60
-101
-100
-92
-56
-64
-60
-188
-112
-56
-227
-126
-50
-224
-123
-55
-234
-125
-52
-183
-110
-59
-51
-62
-63
-176
-156
-141
-253
-204
-176
-251
-192
-154
-251
-192
-154
-251
-192
-154
-250
-200
-166
-77
-85
-81
-106
-82
-65
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-126
-45
-135
-94
-64
-51
-62
-63
-217
-187
-166
-255
-215
-190
-255
-215
-190
-253
-212
-188
-253
-212
-188
-255
-215
-190
-255
-215
-190
-109
-106
-99
-76
-70
-64
-224
-123
-55
-227
-126
-50
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-255
-215
-190
-250
-200
-166
-251
-192
-154
-252
-185
-144
-252
-185
-144
-251
-192
-154
-250
-200
-166
-255
-215
-190
-146
-135
-124
-56
-64
-60
-199
-115
-54
-227
-126
-50
-224
-123
-55
-227
-126
-50
-194
-112
-58
-51
-62
-63
-146
-135
-124
-255
-215
-190
-255
-215
-190
-251
-209
-178
-251
-209
-178
-253
-212
-188
-255
-215
-190
-194
-173
-157
-43
-57
-62
-146
-97
-64
-234
-126
-45
-224
-123
-55
-227
-126
-50
-227
-126
-50
-89
-75
-66
-77
-85
-81
-63
-74
-74
-135
-94
-64
-234
-125
-52
-224
-123
-55
-227
-126
-50
-227
-126
-50
-89
-75
-66
-101
-100
-92
-251
-209
-178
-250
-197
-158
-249
-189
-146
-249
-189
-146
-250
-200
-166
-172
-150
-134
-56
-64
-60
-188
-112
-56
-227
-126
-50
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-120
-114
-108
-255
-215
-190
-255
-215
-190
-253
-212
-188
-251
-209
-178
-253
-212
-188
-255
-215
-190
-217
-187
-166
-51
-62
-63
-135
-94
-64
-234
-126
-45
-224
-123
-55
-224
-123
-55
-234
-126
-45
-139
-96
-61
-55
-66
-67
-250
-200
-166
-249
-174
-124
-249
-152
-92
-247
-130
-60
-247
-118
-39
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-111
-26
-247
-118
-39
-247
-130
-60
-247
-150
-84
-251
-168
-115
-187
-140
-108
-24
-22
-23
-59
-50
-39
-168
-127
-42
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-156
-125
-62
-154
-125
-71
-154
-125
-71
-154
-125
-71
-156
-125
-62
-158
-125
-46
-47
-40
-38
-108
-87
-46
-158
-125
-46
-195
-167
-113
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-219
-212
-208
-164
-158
-157
-109
-106
-99
-65
-58
-56
-24
-22
-23
-24
-22
-23
-94
-60
-47
-178
-86
-46
-59
-50
-39
-150
-125
-114
-255
-215
-190
-255
-215
-190
-234
-204
-183
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-69
-69
-61
-84
-85
-82
-234
-204
-183
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-217
-187
-166
-55
-66
-67
-83
-78
-61
-168
-127
-42
-158
-125
-46
-158
-125
-46
-171
-129
-45
-123
-102
-54
-51
-62
-63
-76
-78
-76
-56
-64
-60
-152
-119
-47
-168
-127
-42
-158
-125
-46
-168
-127
-42
-129
-106
-52
-48
-58
-59
-161
-144
-134
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-217
-187
-166
-133
-120
-107
-77
-85
-81
-77
-85
-81
-146
-135
-124
-245
-212
-186
-176
-156
-141
-51
-62
-63
-137
-110
-49
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-75
-74
-61
-63
-74
-74
-227
-196
-175
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-234
-204
-183
-76
-78
-76
-75
-74
-61
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-88
-82
-59
-77
-85
-81
-77
-85
-81
-88
-82
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-129
-106
-52
-48
-58
-59
-146
-135
-124
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-172
-150
-134
-48
-58
-59
-117
-98
-55
-168
-127
-42
-158
-125
-46
-158
-125
-46
-168
-127
-42
-145
-114
-49
-51
-62
-63
-137
-127
-115
-58
-69
-70
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-63
-69
-60
-146
-135
-124
-120
-114
-108
-69
-69
-61
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-111
-94
-57
-51
-62
-63
-176
-156
-141
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-194
-173
-157
-120
-114
-108
-70
-79
-77
-84
-85
-82
-161
-144
-134
-255
-215
-190
-255
-215
-190
-161
-144
-134
-56
-64
-60
-199
-115
-54
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-126
-45
-155
-100
-63
-41
-58
-57
-161
-144
-134
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-137
-127
-115
-48
-58
-59
-183
-110
-59
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-89
-75
-66
-97
-98
-96
-172
-150
-134
-48
-58
-59
-183
-110
-59
-227
-126
-50
-224
-123
-55
-227
-126
-50
-214
-121
-50
-76
-70
-64
-84
-85
-82
-234
-204
-183
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-234
-204
-183
-77
-85
-81
-81
-73
-62
-224
-123
-55
-227
-126
-50
-224
-123
-55
-234
-125
-52
-173
-106
-60
-48
-58
-59
-176
-156
-141
-97
-98
-96
-95
-78
-64
-227
-126
-50
-227
-126
-50
-224
-123
-55
-234
-125
-52
-173
-106
-60
-48
-58
-59
-146
-135
-124
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-161
-144
-134
-41
-58
-57
-155
-100
-63
-234
-126
-45
-224
-123
-55
-224
-123
-55
-227
-126
-50
-194
-112
-58
-56
-64
-60
-101
-100
-92
-56
-64
-60
-188
-112
-56
-227
-126
-50
-224
-123
-55
-227
-126
-50
-183
-110
-59
-51
-62
-63
-176
-156
-141
-250
-200
-166
-249
-189
-146
-252
-185
-144
-249
-189
-146
-250
-200
-166
-120
-114
-108
-69
-69
-61
-214
-121
-50
-227
-126
-50
-224
-123
-55
-227
-126
-50
-199
-115
-54
-62
-63
-61
-101
-100
-92
-245
-212
-186
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-187
-166
-150
-43
-57
-62
-135
-94
-64
-234
-126
-45
-224
-123
-55
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-255
-215
-190
-253
-212
-188
-253
-204
-176
-250
-200
-166
-250
-200
-166
-253
-204
-176
-253
-212
-188
-255
-215
-190
-187
-166
-150
-41
-58
-57
-155
-100
-63
-234
-125
-52
-224
-123
-55
-227
-126
-50
-227
-126
-50
-95
-78
-64
-58
-69
-70
-227
-196
-175
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-245
-212
-186
-91
-92
-89
-62
-63
-61
-209
-117
-53
-227
-126
-50
-224
-123
-55
-227
-126
-50
-199
-115
-54
-62
-63
-61
-133
-120
-107
-77
-85
-81
-135
-94
-64
-234
-126
-45
-224
-123
-55
-227
-126
-50
-227
-126
-50
-89
-75
-66
-101
-100
-92
-253
-204
-176
-251
-192
-154
-252
-185
-144
-252
-185
-144
-251
-192
-154
-212
-173
-150
-48
-58
-59
-155
-100
-63
-234
-126
-45
-224
-123
-55
-224
-123
-55
-234
-125
-52
-118
-86
-65
-51
-62
-63
-207
-178
-158
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-109
-106
-99
-56
-64
-60
-199
-115
-54
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-125
-52
-139
-96
-61
-55
-66
-67
-250
-200
-166
-249
-174
-124
-249
-152
-92
-247
-130
-60
-247
-118
-39
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-111
-26
-246
-116
-28
-247
-130
-53
-247
-143
-74
-249
-159
-103
-248
-180
-134
-89
-75
-66
-24
-22
-23
-85
-71
-43
-171
-129
-45
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-156
-125
-62
-154
-125
-71
-154
-125
-71
-154
-125
-71
-156
-125
-62
-175
-132
-40
-85
-71
-43
-47
-40
-38
-158
-125
-46
-158
-125
-46
-170
-137
-67
-237
-233
-225
-253
-255
-252
-253
-255
-252
-253
-255
-252
-207
-202
-200
-164
-158
-157
-146
-135
-124
-120
-114
-108
-89
-84
-82
-65
-58
-56
-47
-40
-38
-24
-22
-23
-24
-22
-23
-35
-31
-30
-94
-60
-47
-178
-86
-46
-226
-110
-35
-241
-100
-24
-144
-77
-47
-65
-58
-56
-253
-212
-188
-255
-215
-190
-238
-205
-179
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-129
-106
-52
-48
-58
-59
-101
-100
-92
-217
-187
-166
-245
-212
-186
-245
-212
-186
-194
-173
-157
-76
-78
-76
-56
-64
-60
-145
-114
-49
-168
-127
-42
-158
-125
-46
-158
-125
-46
-171
-129
-45
-88
-82
-59
-77
-85
-81
-176
-156
-141
-48
-58
-59
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-95
-87
-59
-41
-58
-57
-137
-127
-115
-227
-196
-175
-255
-215
-190
-255
-215
-190
-255
-215
-190
-245
-212
-186
-207
-178
-158
-120
-114
-108
-48
-58
-59
-62
-63
-61
-100
-89
-56
-95
-87
-59
-51
-62
-63
-120
-114
-108
-227
-196
-175
-55
-66
-67
-100
-89
-56
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-137
-110
-49
-51
-62
-63
-84
-85
-82
-207
-178
-158
-245
-212
-186
-245
-212
-186
-207
-178
-158
-97
-98
-96
-51
-62
-63
-137
-110
-49
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-88
-82
-59
-91
-92
-89
-120
-114
-108
-63
-69
-60
-158
-125
-46
-161
-127
-40
-158
-125
-46
-158
-125
-46
-168
-127
-42
-88
-82
-59
-43
-57
-62
-161
-144
-134
-227
-196
-175
-253
-212
-188
-234
-204
-183
-161
-144
-134
-51
-62
-63
-75
-74
-61
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-145
-114
-49
-51
-62
-63
-137
-127
-115
-58
-69
-70
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-63
-69
-60
-146
-135
-124
-176
-156
-141
-48
-58
-59
-137
-110
-49
-171
-129
-45
-158
-125
-46
-161
-127
-40
-158
-125
-46
-75
-74
-61
-43
-57
-62
-161
-144
-134
-234
-204
-183
-255
-215
-190
-255
-215
-190
-255
-215
-190
-245
-212
-186
-194
-173
-157
-109
-106
-99
-43
-57
-62
-69
-69
-61
-105
-93
-60
-88
-82
-59
-48
-58
-59
-146
-135
-124
-255
-215
-190
-161
-144
-134
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-225
-124
-48
-95
-78
-64
-43
-57
-62
-161
-144
-134
-234
-204
-183
-245
-212
-186
-227
-196
-175
-146
-135
-124
-35
-56
-60
-125
-90
-64
-234
-125
-52
-224
-123
-55
-224
-123
-55
-234
-125
-52
-188
-112
-56
-51
-62
-63
-161
-144
-134
-234
-204
-183
-51
-62
-63
-125
-90
-64
-234
-126
-45
-224
-123
-55
-224
-123
-55
-234
-125
-52
-163
-104
-61
-43
-57
-62
-97
-98
-96
-207
-178
-158
-245
-212
-186
-245
-212
-186
-207
-178
-158
-91
-92
-89
-48
-58
-59
-173
-106
-60
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-126
-45
-118
-86
-65
-55
-66
-67
-234
-204
-183
-146
-135
-124
-56
-64
-60
-194
-112
-58
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-125
-52
-112
-85
-63
-35
-56
-60
-146
-135
-124
-227
-196
-175
-253
-212
-188
-234
-204
-183
-161
-144
-134
-43
-57
-62
-95
-78
-64
-225
-124
-48
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-194
-112
-58
-56
-64
-60
-101
-100
-92
-56
-64
-60
-188
-112
-56
-227
-126
-50
-224
-123
-55
-227
-126
-50
-183
-110
-59
-51
-62
-63
-176
-156
-141
-250
-197
-158
-252
-185
-144
-248
-180
-134
-248
-180
-134
-251
-192
-154
-172
-150
-134
-48
-58
-59
-173
-106
-60
-234
-125
-52
-224
-123
-55
-224
-123
-55
-234
-126
-45
-139
-96
-61
-41
-58
-57
-120
-114
-108
-217
-187
-166
-245
-212
-186
-234
-204
-183
-176
-156
-141
-58
-69
-70
-81
-73
-62
-214
-121
-50
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-255
-215
-190
-255
-215
-190
-217
-187
-166
-133
-120
-107
-84
-85
-82
-91
-92
-89
-146
-135
-124
-234
-204
-183
-238
-205
-179
-63
-74
-74
-95
-78
-64
-234
-126
-45
-224
-123
-55
-224
-123
-55
-227
-126
-50
-194
-112
-58
-56
-64
-60
-84
-85
-82
-194
-173
-157
-245
-212
-186
-245
-212
-186
-217
-187
-166
-109
-106
-99
-41
-58
-57
-146
-97
-64
-234
-126
-45
-224
-123
-55
-224
-123
-55
-234
-126
-45
-146
-97
-64
-51
-62
-63
-187
-166
-150
-76
-78
-76
-135
-94
-64
-234
-126
-45
-224
-123
-55
-227
-126
-50
-227
-126
-50
-89
-75
-66
-97
-98
-96
-250
-200
-166
-249
-189
-146
-248
-180
-134
-248
-180
-134
-252
-185
-144
-232
-190
-161
-70
-79
-77
-112
-85
-63
-234
-126
-45
-224
-123
-55
-224
-123
-55
-227
-126
-50
-199
-115
-54
-65
-67
-64
-70
-79
-77
-187
-166
-150
-238
-205
-179
-245
-212
-186
-217
-187
-166
-133
-120
-107
-35
-56
-60
-135
-94
-64
-234
-126
-45
-224
-123
-55
-224
-123
-55
-224
-123
-55
-234
-126
-45
-139
-96
-61
-55
-66
-67
-250
-200
-166
-249
-174
-124
-249
-152
-92
-247
-130
-60
-247
-118
-39
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-123
-41
-247
-130
-60
-247
-150
-84
-251
-168
-115
-203
-161
-131
-55
-48
-48
-24
-22
-23
-71
-60
-43
-145
-114
-49
-171
-129
-45
-171
-129
-45
-158
-125
-46
-156
-125
-62
-154
-125
-71
-154
-125
-71
-156
-125
-62
-156
-125
-62
-171
-129
-45
-171
-129
-45
-101
-83
-47
-35
-31
-30
-123
-102
-54
-171
-129
-45
-158
-125
-46
-160
-120
-43
-224
-207
-180
-253
-255
-252
-253
-255
-252
-219
-212
-208
-47
-40
-38
-24
-22
-23
-24
-22
-23
-24
-22
-23
-24
-22
-23
-24
-22
-23
-35
-31
-30
-35
-31
-30
-24
-22
-23
-47
-40
-38
-226
-110
-35
-241
-100
-24
-226
-110
-35
-226
-110
-35
-144
-77
-47
-55
-48
-48
-238
-205
-179
-255
-215
-190
-238
-205
-179
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-123
-102
-54
-56
-64
-60
-51
-62
-63
-84
-85
-82
-84
-85
-82
-48
-58
-59
-63
-69
-60
-129
-106
-52
-168
-127
-42
-158
-125
-46
-158
-125
-46
-168
-127
-42
-145
-114
-49
-56
-64
-60
-137
-127
-115
-245
-212
-186
-84
-85
-82
-69
-69
-61
-158
-125
-46
-158
-125
-46
-158
-125
-46
-161
-127
-40
-158
-125
-46
-95
-87
-59
-48
-58
-59
-63
-74
-74
-109
-106
-99
-133
-120
-107
-133
-120
-107
-91
-92
-89
-51
-62
-63
-56
-64
-60
-100
-89
-56
-152
-119
-47
-171
-129
-45
-175
-132
-40
-100
-89
-56
-48
-58
-59
-217
-187
-166
-120
-114
-108
-63
-69
-60
-152
-119
-47
-161
-127
-40
-158
-125
-46
-158
-125
-46
-168
-127
-42
-129
-106
-52
-61
-67
-58
-51
-62
-63
-84
-85
-82
-84
-85
-82
-51
-62
-63
-56
-64
-60
-123
-102
-54
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-97
-98
-96
-187
-166
-150
-48
-58
-59
-123
-102
-54
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-158
-125
-46
-83
-78
-61
-48
-58
-59
-63
-74
-74
-91
-92
-89
-70
-79
-77
-48
-58
-59
-75
-74
-61
-152
-119
-47
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-145
-114
-49
-51
-62
-63
-137
-127
-115
-58
-69
-70
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-63
-69
-60
-146
-135
-124
-234
-204
-183
-63
-74
-74
-83
-78
-61
-168
-127
-42
-158
-125
-46
-158
-125
-46
-168
-127
-42
-152
-119
-47
-83
-78
-61
-48
-58
-59
-70
-79
-77
-109
-106
-99
-133
-120
-107
-120
-114
-108
-84
-85
-82
-48
-58
-59
-61
-67
-58
-111
-94
-57
-158
-125
-46
-171
-129
-45
-171
-129
-45
-88
-82
-59
-58
-69
-70
-238
-205
-179
-172
-150
-134
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-212
-120
-56
-95
-78
-64
-43
-57
-62
-70
-79
-77
-84
-85
-82
-63
-74
-74
-48
-58
-59
-118
-86
-65
-225
-124
-48
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-126
-45
-112
-85
-63
-55
-66
-67
-227
-196
-175
-255
-215
-190
-120
-114
-108
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-155
-100
-63
-62
-63
-61
-51
-62
-63
-77
-85
-81
-77
-85
-81
-51
-62
-63
-62
-63
-61
-155
-100
-63
-234
-125
-52
-224
-123
-55
-224
-123
-55
-234
-125
-52
-199
-115
-54
-56
-64
-60
-120
-114
-108
-255
-215
-190
-217
-187
-166
-43
-57
-62
-125
-90
-64
-234
-126
-45
-224
-123
-55
-224
-123
-55
-227
-126
-50
-224
-123
-55
-106
-82
-65
-48
-58
-59
-63
-74
-74
-84
-85
-82
-70
-79
-77
-43
-57
-62
-95
-78
-64
-212
-120
-56
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-194
-112
-58
-56
-64
-60
-101
-100
-92
-56
-64
-60
-188
-112
-56
-227
-126
-50
-224
-123
-55
-234
-125
-52
-183
-110
-59
-51
-62
-63
-172
-150
-134
-251
-192
-154
-248
-180
-134
-249
-174
-124
-249
-174
-124
-248
-180
-134
-236
-186
-153
-63
-74
-74
-95
-78
-64
-234
-126
-45
-224
-123
-55
-224
-123
-55
-227
-126
-50
-227
-126
-50
-135
-94
-64
-51
-62
-63
-55
-66
-67
-84
-85
-82
-70
-79
-77
-41
-58
-57
-81
-73
-62
-199
-115
-54
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-255
-215
-190
-194
-173
-157
-58
-69
-70
-62
-63
-61
-106
-82
-65
-95
-78
-64
-51
-62
-63
-91
-92
-89
-238
-205
-179
-161
-144
-134
-48
-58
-59
-183
-110
-59
-234
-125
-52
-224
-123
-55
-224
-123
-55
-234
-125
-52
-173
-106
-60
-65
-67
-64
-48
-58
-59
-77
-85
-81
-84
-85
-82
-55
-66
-67
-56
-64
-60
-146
-97
-64
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-209
-117
-53
-69
-69
-61
-101
-100
-92
-227
-196
-175
-63
-74
-74
-135
-94
-64
-234
-125
-52
-224
-123
-55
-227
-126
-50
-227
-126
-50
-89
-75
-66
-101
-100
-92
-250
-197
-158
-252
-185
-144
-249
-174
-124
-249
-174
-124
-250
-176
-132
-251
-192
-154
-120
-114
-108
-62
-63
-61
-209
-117
-53
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-188
-112
-56
-76
-70
-64
-41
-58
-57
-77
-85
-81
-84
-85
-82
-58
-69
-70
-48
-58
-59
-125
-90
-64
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-234
-126
-45
-139
-96
-61
-55
-66
-67
-250
-200
-166
-249
-174
-124
-249
-152
-92
-247
-130
-60
-247
-118
-39
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-243
-101
-2
-247
-103
-7
-247
-103
-7
-247
-111
-26
-247
-118
-39
-247
-130
-53
-250
-139
-73
-246
-156
-93
-249
-174
-124
-203
-161
-131
-55
-48
-48
-24
-22
-23
-35
-31
-30
-85
-71
-43
-137
-110
-49
-152
-119
-47
-168
-127
-42
-171
-129
-45
-171
-129
-45
-168
-127
-42
-152
-119
-47
-117
-98
-55
-59
-50
-39
-35
-31
-30
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-152
-119
-47
-224
-207
-180
-253
-255
-252
-253
-255
-252
-253
-255
-252
-146
-135
-124
-65
-58
-56
-35
-31
-30
-24
-22
-23
-24
-22
-23
-35
-31
-30
-35
-31
-30
-35
-31
-30
-35
-31
-30
-24
-22
-23
-83
-53
-42
-236
-108
-29
-236
-108
-29
-226
-110
-35
-94
-60
-47
-65
-58
-56
-253
-212
-188
-255
-215
-190
-238
-205
-179
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-161
-127
-40
-168
-127
-42
-145
-114
-49
-105
-93
-60
-83
-78
-61
-83
-78
-61
-111
-94
-57
-158
-125
-46
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-88
-82
-59
-51
-62
-63
-217
-187
-166
-255
-215
-190
-176
-156
-141
-43
-57
-62
-105
-93
-60
-171
-129
-45
-158
-125
-46
-158
-125
-46
-161
-127
-40
-168
-127
-42
-137
-110
-49
-88
-82
-59
-69
-69
-61
-62
-63
-61
-63
-69
-60
-75
-74
-61
-105
-93
-60
-152
-119
-47
-171
-129
-45
-168
-127
-42
-158
-125
-46
-171
-129
-45
-129
-106
-52
-48
-58
-59
-194
-173
-157
-207
-178
-158
-43
-57
-62
-100
-89
-56
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-152
-119
-47
-111
-94
-57
-83
-78
-61
-83
-78
-61
-105
-93
-60
-145
-114
-49
-168
-127
-42
-161
-127
-40
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-88
-82
-59
-84
-85
-82
-245
-212
-186
-77
-85
-81
-75
-74
-61
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-168
-127
-42
-129
-106
-52
-95
-87
-59
-81
-73
-62
-95
-87
-59
-123
-102
-54
-168
-127
-42
-168
-127
-42
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-145
-114
-49
-56
-64
-60
-137
-127
-115
-58
-69
-70
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-63
-69
-60
-137
-127
-115
-255
-215
-190
-161
-144
-134
-48
-58
-59
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-168
-127
-42
-129
-106
-52
-88
-82
-59
-69
-69
-61
-62
-63
-61
-63
-69
-60
-75
-74
-61
-117
-98
-55
-152
-119
-47
-171
-129
-45
-161
-127
-40
-158
-125
-46
-171
-129
-45
-111
-94
-57
-48
-58
-59
-227
-196
-175
-176
-156
-141
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-227
-126
-50
-227
-126
-50
-163
-104
-61
-112
-85
-63
-95
-78
-64
-118
-86
-65
-173
-106
-60
-227
-126
-50
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-125
-52
-183
-110
-59
-51
-62
-63
-133
-120
-107
-255
-215
-190
-255
-215
-190
-217
-187
-166
-51
-62
-63
-106
-82
-65
-234
-126
-45
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-126
-45
-199
-115
-54
-135
-94
-64
-95
-78
-64
-95
-78
-64
-135
-94
-64
-199
-115
-54
-234
-125
-52
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-126
-45
-106
-82
-65
-51
-62
-63
-217
-187
-166
-255
-215
-190
-255
-215
-190
-120
-114
-108
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-227
-126
-50
-173
-106
-60
-118
-86
-65
-95
-78
-64
-112
-85
-63
-163
-104
-61
-227
-126
-50
-227
-126
-50
-227
-126
-50
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-194
-112
-58
-56
-64
-60
-101
-100
-92
-56
-64
-60
-188
-112
-56
-227
-126
-50
-224
-123
-55
-227
-126
-50
-183
-110
-59
-51
-62
-63
-172
-150
-134
-252
-185
-144
-249
-174
-124
-247
-165
-111
-247
-165
-111
-249
-174
-124
-252
-185
-144
-154
-133
-118
-48
-58
-59
-163
-104
-61
-234
-126
-45
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-125
-52
-188
-112
-56
-125
-90
-64
-95
-78
-64
-106
-82
-65
-155
-100
-63
-224
-123
-55
-234
-125
-52
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-253
-212
-188
-91
-92
-89
-69
-69
-61
-194
-112
-58
-234
-126
-45
-234
-126
-45
-163
-104
-61
-51
-62
-63
-137
-127
-115
-238
-205
-179
-63
-74
-74
-89
-75
-66
-227
-126
-50
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-209
-117
-53
-146
-97
-64
-106
-82
-65
-95
-78
-64
-125
-90
-64
-194
-112
-58
-234
-126
-45
-227
-126
-50
-224
-123
-55
-227
-126
-50
-234
-126
-45
-125
-90
-64
-41
-58
-57
-194
-173
-157
-238
-205
-179
-63
-74
-74
-135
-94
-64
-234
-125
-52
-224
-123
-55
-227
-126
-50
-227
-126
-50
-89
-75
-66
-101
-100
-92
-251
-192
-154
-250
-176
-132
-251
-168
-115
-247
-165
-111
-249
-174
-124
-245
-179
-138
-195
-157
-134
-41
-58
-57
-135
-94
-64
-234
-126
-45
-224
-123
-55
-224
-123
-55
-224
-123
-55
-234
-125
-52
-214
-121
-50
-146
-97
-64
-106
-82
-65
-95
-78
-64
-125
-90
-64
-183
-110
-59
-227
-126
-50
-227
-126
-50
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-234
-125
-52
-139
-96
-61
-55
-66
-67
-250
-200
-166
-249
-174
-124
-249
-152
-92
-247
-130
-60
-247
-118
-39
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-118
-39
-247
-130
-53
-247
-143
-74
-249
-159
-103
-250
-176
-132
-219
-170
-138
-115
-102
-92
-47
-40
-38
-24
-22
-23
-35
-31
-30
-47
-40
-38
-59
-50
-39
-59
-50
-39
-59
-50
-39
-59
-50
-39
-47
-40
-38
-47
-40
-38
-71
-60
-43
-137
-110
-49
-171
-129
-45
-158
-125
-46
-158
-125
-46
-152
-119
-47
-170
-137
-67
-219
-212
-208
-237
-233
-225
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-219
-212
-208
-152
-147
-147
-109
-106
-99
-65
-67
-64
-35
-31
-30
-35
-31
-30
-35
-31
-30
-35
-31
-30
-24
-22
-23
-94
-60
-47
-178
-86
-46
-109
-63
-45
-35
-31
-30
-124
-111
-99
-251
-209
-178
-251
-209
-178
-234
-204
-183
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-117
-98
-55
-129
-106
-52
-168
-127
-42
-168
-127
-42
-171
-129
-45
-168
-127
-42
-168
-127
-42
-171
-129
-45
-161
-127
-40
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-117
-98
-55
-48
-58
-59
-146
-135
-124
-255
-215
-190
-255
-215
-190
-255
-215
-190
-120
-114
-108
-51
-62
-63
-123
-102
-54
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-168
-127
-42
-158
-125
-46
-152
-119
-47
-152
-119
-47
-158
-125
-46
-168
-127
-42
-168
-127
-42
-158
-125
-46
-158
-125
-46
-168
-127
-42
-158
-125
-46
-81
-73
-62
-58
-69
-70
-227
-196
-175
-255
-215
-190
-120
-114
-108
-48
-58
-59
-129
-106
-52
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-161
-127
-40
-168
-127
-42
-168
-127
-42
-168
-127
-42
-171
-129
-45
-168
-127
-42
-168
-127
-42
-152
-119
-47
-117
-98
-55
-168
-127
-42
-158
-125
-46
-158
-125
-46
-168
-127
-42
-88
-82
-59
-84
-85
-82
-255
-215
-190
-176
-156
-141
-48
-58
-59
-111
-94
-57
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-168
-127
-42
-168
-127
-42
-168
-127
-42
-168
-127
-42
-158
-125
-46
-158
-125
-46
-145
-114
-49
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-145
-114
-49
-51
-62
-63
-137
-127
-115
-58
-69
-70
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-63
-69
-60
-137
-127
-115
-255
-215
-190
-238
-205
-179
-91
-92
-89
-56
-64
-60
-137
-110
-49
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-168
-127
-42
-158
-125
-46
-152
-119
-47
-158
-125
-46
-168
-127
-42
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-152
-119
-47
-69
-69
-61
-84
-85
-82
-245
-212
-186
-172
-150
-134
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-227
-126
-50
-199
-115
-54
-125
-90
-64
-227
-126
-50
-227
-126
-50
-227
-126
-50
-234
-125
-52
-227
-126
-50
-234
-125
-52
-234
-125
-52
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-214
-121
-50
-81
-73
-62
-63
-74
-74
-227
-196
-175
-255
-215
-190
-253
-212
-188
-255
-215
-190
-146
-135
-124
-48
-58
-59
-146
-97
-64
-234
-126
-45
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-126
-45
-227
-126
-50
-227
-126
-50
-234
-126
-45
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-126
-45
-139
-96
-61
-48
-58
-59
-146
-135
-124
-255
-215
-190
-253
-212
-188
-255
-215
-190
-217
-187
-166
-55
-66
-67
-95
-78
-64
-225
-124
-48
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-125
-52
-227
-126
-50
-227
-126
-50
-227
-126
-50
-224
-123
-55
-234
-126
-45
-163
-104
-61
-183
-110
-59
-227
-126
-50
-224
-123
-55
-227
-126
-50
-194
-112
-58
-56
-64
-60
-97
-98
-96
-56
-64
-60
-188
-112
-56
-227
-126
-50
-224
-123
-55
-227
-126
-50
-183
-110
-59
-51
-62
-63
-167
-142
-123
-248
-180
-134
-247
-165
-111
-249
-159
-103
-246
-156
-93
-249
-159
-103
-249
-174
-124
-239
-182
-144
-77
-85
-81
-65
-67
-64
-199
-115
-54
-234
-125
-52
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-125
-52
-227
-126
-50
-227
-126
-50
-234
-125
-52
-227
-126
-50
-227
-126
-50
-135
-94
-64
-188
-112
-56
-227
-126
-50
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-146
-135
-124
-227
-196
-175
-43
-57
-62
-146
-97
-64
-234
-126
-45
-224
-123
-55
-224
-123
-55
-234
-126
-45
-106
-82
-65
-70
-79
-77
-253
-212
-188
-176
-156
-141
-41
-58
-57
-125
-90
-64
-234
-126
-45
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-125
-52
-234
-125
-52
-227
-126
-50
-234
-125
-52
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-126
-45
-155
-100
-63
-48
-58
-59
-120
-114
-108
-253
-212
-188
-234
-204
-183
-63
-74
-74
-135
-94
-64
-234
-126
-45
-224
-123
-55
-227
-126
-50
-227
-126
-50
-89
-75
-66
-101
-100
-92
-252
-185
-144
-245
-169
-119
-249
-159
-103
-249
-159
-103
-247
-165
-111
-249
-174
-124
-251
-192
-154
-109
-106
-99
-62
-63
-61
-188
-112
-56
-234
-125
-52
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-125
-52
-234
-125
-52
-227
-126
-50
-234
-125
-52
-227
-126
-50
-227
-126
-50
-212
-120
-56
-199
-115
-54
-224
-123
-55
-224
-123
-55
-224
-123
-55
-234
-126
-45
-139
-96
-61
-55
-66
-67
-250
-200
-166
-249
-174
-124
-247
-150
-84
-247
-130
-60
-247
-118
-39
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-243
-101
-2
-243
-101
-2
-247
-103
-7
-247
-111
-26
-247
-111
-26
-247
-123
-41
-247
-130
-60
-243
-141
-78
-249
-159
-103
-250
-176
-132
-251
-192
-154
-207
-178
-158
-154
-133
-118
-82
-69
-65
-24
-22
-23
-71
-60
-43
-101
-83
-47
-101
-83
-47
-101
-83
-47
-117
-98
-55
-145
-114
-49
-171
-129
-45
-168
-127
-42
-160
-120
-43
-160
-120
-43
-158
-125
-46
-192
-155
-91
-237
-233
-225
-81
-77
-76
-55
-48
-48
-74
-68
-68
-81
-77
-76
-89
-84
-82
-91
-92
-89
-89
-84
-82
-81
-77
-76
-65
-58
-56
-47
-40
-38
-35
-31
-30
-55
-48
-48
-115
-102
-92
-172
-150
-134
-55
-48
-48
-24
-22
-23
-24
-22
-23
-24
-22
-23
-65
-58
-56
-230
-173
-136
-251
-192
-154
-250
-197
-158
-250
-200
-166
-84
-85
-82
-88
-82
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-171
-129
-45
-83
-78
-61
-69
-69
-61
-168
-127
-42
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-171
-129
-45
-117
-98
-55
-48
-58
-59
-101
-100
-92
-238
-205
-179
-253
-204
-176
-250
-200
-166
-253
-204
-176
-238
-205
-179
-91
-92
-89
-51
-62
-63
-117
-98
-55
-171
-129
-45
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-161
-127
-40
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-171
-129
-45
-145
-114
-49
-75
-74
-61
-48
-58
-59
-172
-150
-134
-253
-212
-188
-255
-215
-190
-234
-204
-183
-84
-85
-82
-56
-64
-60
-129
-106
-52
-171
-129
-45
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-168
-127
-42
-81
-73
-62
-63
-69
-60
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-84
-85
-82
-255
-215
-190
-245
-212
-186
-109
-106
-99
-51
-62
-63
-123
-102
-54
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-161
-127
-40
-171
-129
-45
-105
-93
-60
-51
-62
-63
-137
-110
-49
-168
-127
-42
-158
-125
-46
-168
-127
-42
-145
-114
-49
-51
-62
-63
-137
-127
-115
-58
-69
-70
-111
-94
-57
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-62
-63
-61
-137
-127
-115
-255
-215
-190
-255
-215
-190
-227
-196
-175
-77
-85
-81
-56
-64
-60
-129
-106
-52
-171
-129
-45
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-161
-127
-40
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-168
-127
-42
-137
-110
-49
-69
-69
-61
-51
-62
-63
-187
-166
-150
-255
-215
-190
-172
-150
-134
-51
-62
-63
-194
-112
-58
-227
-126
-50
-224
-123
-55
-234
-125
-52
-183
-110
-59
-48
-58
-59
-155
-100
-63
-234
-126
-45
-224
-123
-55
-224
-123
-55
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-125
-52
-209
-117
-53
-89
-75
-66
-48
-58
-59
-187
-166
-150
-250
-200
-166
-250
-197
-158
-251
-192
-154
-250
-197
-158
-250
-200
-166
-109
-106
-99
-48
-58
-59
-135
-94
-64
-234
-125
-52
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-227
-126
-50
-135
-94
-64
-43
-57
-62
-120
-114
-108
-250
-200
-166
-250
-197
-158
-251
-192
-154
-250
-197
-158
-250
-200
-166
-172
-150
-134
-41
-58
-57
-106
-82
-65
-214
-121
-50
-234
-125
-52
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-224
-123
-55
-227
-126
-50
-234
-126
-45
-183
-110
-59
-48
-58
-59
-135
-94
-64
-234
-126
-45
-224
-123
-55
-227
-126
-50
-188
-112
-56
-51
-62
-63
-109
-106
-99
-51
-62
-63
-183
-110
-59
-227
-126
-50
-224
-123
-55
-234
-125
-52
-173
-106
-60
-48
-58
-59
-178
-146
-122
-245
-169
-119
-246
-156
-93
-247
-150
-84
-249
-146
-83
-247
-150
-84
-249
-159
-103
-249
-174
-124
-203
-161
-131
-58
-69
-70
-76
-70
-64
-194
-112
-58
-234
-126
-45
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-126
-45
-183
-110
-59
-48
-58
-59
-163
-104
-61
-234
-126
-45
-224
-123
-55
-227
-126
-50
-209
-117
-53
-62
-63
-61
-146
-135
-124
-217
-187
-166
-43
-57
-62
-163
-104
-61
-234
-125
-52
-224
-123
-55
-224
-123
-55
-234
-126
-45
-125
-90
-64
-58
-69
-70
-234
-204
-183
-255
-215
-190
-137
-127
-115
-41
-58
-57
-118
-86
-65
-225
-124
-48
-234
-126
-45
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-126
-45
-146
-97
-64
-51
-62
-63
-97
-98
-96
-238
-205
-179
-255
-215
-190
-234
-204
-183
-63
-74
-74
-118
-86
-65
-234
-126
-45
-224
-123
-55
-227
-126
-50
-227
-126
-50
-81
-73
-62
-101
-100
-92
-250
-176
-132
-247
-165
-111
-246
-156
-93
-249
-152
-92
-249
-159
-103
-251
-168
-115
-252
-185
-144
-217
-187
-166
-58
-69
-70
-69
-69
-61
-199
-115
-54
-234
-126
-45
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-224
-123
-55
-227
-126
-50
-225
-124
-48
-81
-73
-62
-81
-73
-62
-227
-126
-50
-227
-126
-50
-224
-123
-55
-234
-126
-45
-139
-96
-61
-55
-66
-67
-250
-197
-158
-249
-174
-124
-247
-150
-84
-247
-130
-60
-247
-118
-39
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-237
-95
-0
-237
-95
-0
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-237
-95
-0
-243
-101
-2
-247
-103
-7
-236
-102
-14
-247
-111
-26
-246
-116
-28
-247
-123
-41
-247
-130
-60
-243
-141
-78
-249
-159
-103
-249
-174
-124
-249
-189
-146
-253
-204
-176
-124
-111
-99
-35
-31
-30
-145
-114
-49
-175
-132
-40
-171
-129
-45
-168
-127
-42
-192
-155
-91
-216
-194
-154
-224
-207
-180
-224
-207
-180
-216
-194
-154
-216
-194
-154
-239
-227
-208
-253
-255
-252
-253
-255
-252
-186
-181
-179
-146
-135
-124
-120
-114
-108
-109
-106
-99
-95
-78
-64
-71
-60
-43
-85
-71
-43
-101
-83
-47
-108
-87
-46
-35
-31
-30
-150
-125
-114
-227
-196
-175
-255
-215
-190
-253
-212
-188
-212
-173
-150
-121
-100
-85
-95
-78
-64
-129
-102
-78
-234
-168
-124
-250
-176
-132
-250
-176
-132
-248
-180
-134
-249
-189
-146
-124
-111
-99
-62
-63
-61
-152
-119
-47
-171
-129
-45
-171
-129
-45
-145
-114
-49
-56
-64
-60
-43
-57
-62
-83
-78
-61
-152
-119
-47
-171
-129
-45
-171
-129
-45
-168
-127
-42
-168
-127
-42
-171
-129
-45
-171
-129
-45
-152
-119
-47
-95
-87
-59
-48
-58
-59
-101
-100
-92
-236
-186
-153
-251
-192
-154
-252
-185
-144
-248
-180
-134
-245
-179
-138
-249
-189
-146
-236
-186
-153
-101
-100
-92
-48
-58
-59
-88
-82
-59
-137
-110
-49
-168
-127
-42
-171
-129
-45
-168
-127
-42
-168
-127
-42
-168
-127
-42
-168
-127
-42
-171
-129
-45
-171
-129
-45
-168
-127
-42
-145
-114
-49
-100
-89
-56
-56
-64
-60
-58
-69
-70
-172
-150
-134
-250
-200
-166
-251
-192
-154
-250
-197
-158
-250
-200
-166
-217
-187
-166
-84
-85
-82
-51
-62
-63
-105
-93
-60
-158
-125
-46
-171
-129
-45
-171
-129
-45
-168
-127
-42
-168
-127
-42
-168
-127
-42
-171
-129
-45
-152
-119
-47
-83
-78
-61
-43
-57
-62
-48
-58
-59
-129
-106
-52
-175
-132
-40
-171
-129
-45
-158
-125
-46
-63
-69
-60
-120
-114
-108
-255
-215
-190
-255
-215
-190
-227
-196
-175
-84
-85
-82
-51
-62
-63
-105
-93
-60
-158
-125
-46
-171
-129
-45
-171
-129
-45
-168
-127
-42
-168
-127
-42
-168
-127
-42
-171
-129
-45
-158
-125
-46
-105
-93
-60
-48
-58
-59
-48
-58
-59
-129
-106
-52
-168
-127
-42
-158
-125
-46
-168
-127
-42
-145
-114
-49
-51
-62
-63
-172
-150
-134
-91
-92
-89
-75
-74
-61
-168
-127
-42
-171
-129
-45
-175
-132
-40
-117
-98
-55
-48
-58
-59
-176
-156
-141
-253
-204
-176
-253
-204
-176
-253
-204
-176
-217
-187
-166
-84
-85
-82
-48
-58
-59
-95
-87
-59
-145
-114
-49
-168
-127
-42
-171
-129
-45
-168
-127
-42
-168
-127
-42
-168
-127
-42
-168
-127
-42
-171
-129
-45
-171
-129
-45
-158
-125
-46
-137
-110
-49
-95
-87
-59
-51
-62
-63
-70
-79
-77
-187
-166
-150
-251
-209
-178
-251
-209
-178
-207
-178
-158
-43
-57
-62
-135
-94
-64
-238
-123
-45
-234
-126
-45
-234
-126
-45
-118
-86
-65
-35
-56
-60
-56
-64
-60
-155
-100
-63
-234
-125
-52
-234
-126
-45
-234
-125
-52
-227
-126
-50
-227
-126
-50
-234
-126
-45
-227
-126
-50
-163
-104
-61
-76
-70
-64
-51
-62
-63
-167
-142
-123
-251
-192
-154
-248
-180
-134
-249
-174
-124
-249
-174
-124
-250
-176
-132
-245
-179
-138
-236
-186
-153
-109
-106
-99
-41
-58
-57
-95
-78
-64
-183
-110
-59
-234
-125
-52
-234
-126
-45
-234
-125
-52
-227
-126
-50
-227
-126
-50
-234
-125
-52
-234
-126
-45
-227
-126
-50
-183
-110
-59
-95
-78
-64
-43
-57
-62
-124
-111
-99
-236
-186
-153
-252
-185
-144
-250
-176
-132
-249
-174
-124
-249
-174
-124
-248
-180
-134
-251
-192
-154
-154
-133
-118
-43
-57
-62
-81
-73
-62
-173
-106
-60
-227
-126
-50
-234
-126
-45
-227
-126
-50
-227
-126
-50
-227
-126
-50
-234
-126
-45
-234
-125
-52
-155
-100
-63
-56
-64
-60
-35
-56
-60
-89
-75
-66
-227
-126
-50
-234
-126
-45
-238
-128
-40
-146
-97
-64
-43
-57
-62
-176
-156
-141
-58
-69
-70
-118
-86
-65
-234
-126
-45
-234
-126
-45
-234
-126
-45
-112
-85
-63
-43
-57
-62
-210
-156
-119
-245
-162
-103
-247
-150
-84
-247
-143
-74
-248
-138
-64
-241
-138
-68
-249
-146
-83
-249
-159
-103
-250
-176
-132
-195
-157
-134
-58
-69
-70
-65
-67
-64
-155
-100
-63
-227
-126
-50
-234
-126
-45
-227
-126
-50
-227
-126
-50
-234
-125
-52
-234
-126
-45
-234
-126
-45
-173
-106
-60
-65
-67
-64
-35
-56
-60
-106
-82
-65
-234
-126
-45
-234
-126
-45
-238
-128
-40
-146
-97
-64
-43
-57
-62
-187
-166
-150
-234
-204
-183
-55
-66
-67
-106
-82
-65
-234
-126
-45
-234
-125
-52
-234
-125
-52
-224
-123
-55
-81
-73
-62
-91
-92
-89
-245
-212
-186
-253
-212
-188
-253
-212
-188
-137
-127
-115
-41
-58
-57
-89
-75
-66
-173
-106
-60
-227
-126
-50
-234
-126
-45
-227
-126
-50
-227
-126
-50
-227
-126
-50
-234
-125
-52
-234
-126
-45
-234
-125
-52
-194
-112
-58
-106
-82
-65
-43
-57
-62
-101
-100
-92
-227
-196
-175
-251
-209
-178
-251
-209
-178
-253
-212
-188
-97
-98
-96
-69
-69
-61
-209
-117
-53
-234
-126
-45
-238
-128
-40
-173
-106
-60
-51
-62
-63
-139
-115
-96
-251
-168
-115
-246
-156
-93
-247
-150
-84
-249
-146
-83
-249
-152
-92
-247
-165
-111
-248
-180
-134
-250
-200
-166
-187
-166
-150
-55
-66
-67
-69
-69
-61
-163
-104
-61
-234
-125
-52
-234
-126
-45
-234
-125
-52
-227
-126
-50
-227
-126
-50
-234
-126
-45
-234
-126
-45
-199
-115
-54
-95
-78
-64
-35
-56
-60
-81
-73
-62
-227
-126
-50
-227
-126
-50
-224
-123
-55
-234
-126
-45
-139
-96
-61
-51
-62
-63
-250
-197
-158
-245
-169
-119
-247
-150
-84
-247
-130
-60
-247
-118
-39
-235
-107
-16
-243
-101
-2
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-246
-97
-3
-237
-95
-0
-243
-101
-2
-247
-103
-7
-236
-102
-14
-247
-111
-26
-246
-116
-28
-238
-123
-45
-241
-132
-59
-247
-143
-74
-246
-156
-93
-245
-169
-119
-230
-173
-136
-47
-40
-38
-59
-50
-39
-168
-127
-42
-161
-127
-40
-160
-120
-43
-192
-155
-91
-255
-238
-227
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-239
-227
-208
-170
-137
-67
-171
-129
-45
-171
-129
-45
-171
-129
-45
-59
-50
-39
-154
-133
-118
-250
-200
-166
-250
-197
-158
-249
-189
-146
-248
-180
-134
-249
-174
-124
-247
-165
-111
-247
-165
-111
-245
-162
-103
-249
-159
-103
-245
-162
-103
-247
-165
-111
-249
-174
-124
-203
-161
-131
-55
-66
-67
-69
-69
-61
-111
-94
-57
-105
-93
-60
-69
-69
-61
-63
-74
-74
-137
-127
-115
-51
-62
-63
-62
-63
-61
-95
-87
-59
-129
-106
-52
-137
-110
-49
-137
-110
-49
-123
-102
-54
-95
-87
-59
-62
-63
-61
-51
-62
-63
-133
-120
-107
-239
-182
-144
-248
-180
-134
-245
-169
-119
-247
-165
-111
-249
-159
-103
-245
-162
-103
-251
-168
-115
-250
-176
-132
-239
-182
-144
-154
-133
-118
-63
-74
-74
-51
-62
-63
-75
-74
-61
-105
-93
-60
-123
-102
-54
-137
-110
-49
-137
-110
-49
-137
-110
-49
-123
-102
-54
-100
-89
-56
-75
-74
-61
-56
-64
-60
-55
-66
-67
-124
-111
-99
-219
-170
-138
-252
-185
-144
-250
-176
-132
-249
-174
-124
-249
-174
-124
-250
-176
-132
-252
-185
-144
-236
-186
-153
-124
-111
-99
-48
-58
-59
-63
-69
-60
-95
-87
-59
-123
-102
-54
-137
-110
-49
-137
-110
-49
-129
-106
-52
-95
-87
-59
-62
-63
-61
-55
-66
-67
-146
-135
-124
-77
-85
-81
-61
-67
-58
-105
-93
-60
-111
-94
-57
-75
-74
-61
-48
-58
-59
-194
-173
-157
-255
-215
-190
-255
-215
-190
-255
-215
-190
-234
-204
-183
-120
-114
-108
-43
-57
-62
-69
-69
-61
-100
-89
-56
-129
-106
-52
-137
-110
-49
-137
-110
-49
-129
-106
-52
-105
-93
-60
-69
-69
-61
-48
-58
-59
-77
-85
-81
-51
-62
-63
-137
-110
-49
-168
-127
-42
-158
-125
-46
-168
-127
-42
-137
-110
-49
-51
-62
-63
-187
-166
-150
-187
-166
-150
-48
-58
-59
-75
-74
-61
-111
-94
-57
-95
-87
-59
-56
-64
-60
-99
-90
-79
-239
-182
-144
-252
-185
-144
-245
-179
-138
-252
-185
-144
-249
-189
-146
-236
-186
-153
-137
-127
-115
-55
-66
-67
-56
-64
-60
-83
-78
-61
-111
-94
-57
-129
-106
-52
-137
-110
-49
-137
-110
-49
-129
-106
-52
-117
-98
-55
-95
-87
-59
-69
-69
-61
-51
-62
-63
-63
-74
-74
-133
-120
-107
-236
-186
-153
-250
-197
-158
-251
-192
-154
-251
-192
-154
-250
-197
-158
-124
-111
-99
-51
-62
-63
-112
-85
-63
-146
-97
-64
-106
-82
-65
-48
-58
-59
-120
-114
-108
-101
-100
-92
-48
-58
-59
-95
-78
-64
-146
-97
-64
-183
-110
-59
-188
-112
-56
-173
-106
-60
-139
-96
-61
-89
-75
-66
-48
-58
-59
-77
-85
-81
-186
-157
-134
-245
-179
-138
-245
-169
-119
-245
-162
-103
-246
-156
-93
-246
-156
-93
-246
-156
-93
-247
-165
-111
-249
-174
-124
-249
-189
-146
-154
-133
-118
-58
-69
-70
-51
-62
-63
-95
-78
-64
-139
-96
-61
-173
-106
-60
-183
-110
-59
-183
-110
-59
-173
-106
-60
-139
-96
-61
-95
-78
-64
-51
-62
-63
-63
-74
-74
-167
-142
-123
-249
-189
-146
-249
-174
-124
-247
-165
-111
-246
-156
-93
-246
-156
-93
-246
-156
-93
-245
-162
-103
-245
-169
-119
-245
-179
-138
-178
-146
-122
-70
-79
-77
-48
-58
-59
-89
-75
-66
-139
-96
-61
-173
-106
-60
-188
-112
-56
-183
-110
-59
-155
-100
-63
-95
-78
-64
-48
-58
-59
-101
-100
-92
-146
-135
-124
-48
-58
-59
-95
-78
-64
-146
-97
-64
-125
-90
-64
-62
-63
-61
-101
-100
-92
-245
-212
-186
-137
-127
-115
-48
-58
-59
-106
-82
-65
-146
-97
-64
-106
-82
-65
-48
-58
-59
-124
-111
-99
-247
-165
-111
-247
-150
-84
-241
-138
-68
-241
-132
-59
-247
-130
-53
-247
-130
-53
-242
-133
-67
-241
-145
-79
-245
-162
-103
-250
-176
-132
-203
-161
-131
-91
-92
-89
-43
-57
-62
-81
-73
-62
-135
-94
-64
-173
-106
-60
-188
-112
-56
-183
-110
-59
-155
-100
-63
-106
-82
-65
-51
-62
-63
-91
-92
-89
-133
-120
-107
-48
-58
-59
-95
-78
-64
-146
-97
-64
-118
-86
-65
-56
-64
-60
-101
-100
-92
-245
-212
-186
-253
-212
-188
-146
-135
-124
-48
-58
-59
-118
-86
-65
-183
-110
-59
-173
-106
-60
-95
-78
-64
-43
-57
-62
-186
-157
-134
-250
-197
-158
-251
-192
-154
-250
-197
-158
-250
-200
-166
-172
-150
-134
-70
-79
-77
-48
-58
-59
-89
-75
-66
-135
-94
-64
-163
-104
-61
-183
-110
-59
-183
-110
-59
-173
-106
-60
-146
-97
-64
-95
-78
-64
-56
-64
-60
-55
-66
-67
-150
-125
-114
-236
-186
-153
-251
-192
-154
-249
-189
-146
-249
-189
-146
-251
-192
-154
-195
-157
-134
-51
-62
-63
-76
-70
-64
-139
-96
-61
-125
-90
-64
-65
-67
-64
-76
-78
-76
-234
-168
-124
-249
-159
-103
-247
-150
-84
-243
-141
-78
-247
-143
-74
-247
-150
-84
-249
-159
-103
-250
-176
-132
-250
-197
-158
-255
-215
-190
-207
-178
-158
-84
-85
-82
-48
-58
-59
-89
-75
-66
-146
-97
-64
-173
-106
-60
-183
-110
-59
-183
-110
-59
-163
-104
-61
-118
-86
-65
-62
-63
-61
-58
-69
-70
-63
-74
-74
-81
-73
-62
-227
-126
-50
-227
-126
-50
-224
-123
-55
-234
-126
-45
-135
-94
-64
-58
-69
-70
-251
-192
-154
-245
-169
-119
-249
-146
-83
-247
-130
-53
-238
-116
-34
-235
-107
-16
-243
-101
-2
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-246
-97
-3
-246
-97
-3
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-243
-101
-2
-236
-102
-14
-236
-102
-14
-235
-107
-16
-246
-116
-28
-239
-117
-44
-241
-132
-59
-247
-143
-74
-249
-152
-92
-214
-151
-109
-118
-86
-65
-146
-111
-88
-192
-155
-91
-192
-155
-91
-195
-167
-113
-239
-227
-208
-255
-238
-227
-255
-238
-227
-255
-238
-227
-255
-238
-227
-255
-238
-227
-255
-238
-227
-255
-238
-227
-255
-238
-227
-255
-238
-227
-255
-238
-227
-255
-238
-227
-255
-238
-227
-255
-238
-227
-255
-238
-227
-216
-194
-154
-192
-155
-91
-192
-155
-91
-192
-155
-91
-146
-111
-88
-162
-125
-96
-250
-176
-132
-245
-169
-119
-247
-165
-111
-249
-159
-103
-246
-156
-93
-247
-150
-84
-243
-141
-78
-243
-141
-78
-243
-141
-78
-241
-145
-79
-247
-150
-84
-249
-159
-103
-245
-169
-119
-187
-140
-108
-89
-84
-82
-48
-58
-59
-48
-58
-59
-91
-92
-89
-194
-173
-157
-255
-215
-190
-207
-178
-158
-109
-106
-99
-51
-62
-63
-48
-58
-59
-51
-62
-63
-48
-58
-59
-48
-58
-59
-55
-66
-67
-124
-111
-99
-203
-161
-131
-248
-180
-134
-245
-169
-119
-249
-159
-103
-247
-150
-84
-243
-141
-78
-243
-141
-78
-243
-141
-78
-247
-150
-84
-249
-159
-103
-245
-169
-119
-248
-180
-134
-219
-170
-138
-154
-133
-118
-84
-85
-82
-51
-62
-63
-48
-58
-59
-51
-62
-63
-51
-62
-63
-48
-58
-59
-48
-58
-59
-55
-66
-67
-91
-92
-89
-154
-133
-118
-209
-171
-139
-245
-179
-138
-249
-174
-124
-247
-165
-111
-249
-159
-103
-246
-156
-93
-246
-156
-93
-249
-159
-103
-247
-165
-111
-249
-174
-124
-252
-185
-144
-195
-157
-134
-109
-106
-99
-55
-66
-67
-48
-58
-59
-51
-62
-63
-51
-62
-63
-48
-58
-59
-51
-62
-63
-109
-106
-99
-207
-178
-158
-255
-215
-190
-217
-187
-166
-91
-92
-89
-51
-62
-63
-48
-58
-59
-76
-78
-76
-172
-150
-134
-253
-212
-188
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-194
-173
-157
-101
-100
-92
-51
-62
-63
-48
-58
-59
-48
-58
-59
-51
-62
-63
-48
-58
-59
-48
-58
-59
-97
-98
-96
-194
-173
-157
-146
-135
-124
-56
-64
-60
-145
-114
-49
-168
-127
-42
-158
-125
-46
-168
-127
-42
-129
-106
-52
-48
-58
-59
-194
-173
-157
-255
-215
-190
-176
-156
-141
-76
-78
-76
-48
-58
-59
-55
-66
-67
-115
-102
-92
-234
-168
-124
-245
-169
-119
-247
-165
-111
-247
-165
-111
-247
-165
-111
-245
-169
-119
-249
-174
-124
-245
-179
-138
-209
-171
-139
-144
-125
-110
-76
-78
-76
-48
-58
-59
-48
-58
-59
-51
-62
-63
-51
-62
-63
-48
-58
-59
-48
-58
-59
-58
-69
-70
-101
-100
-92
-154
-133
-118
-219
-170
-138
-252
-185
-144
-248
-180
-134
-249
-174
-124
-245
-169
-119
-249
-174
-124
-250
-176
-132
-230
-173
-136
-124
-111
-99
-55
-66
-67
-43
-57
-62
-58
-69
-70
-137
-127
-115
-245
-212
-186
-245
-212
-186
-161
-144
-134
-70
-79
-77
-43
-57
-62
-51
-62
-63
-51
-62
-63
-48
-58
-59
-43
-57
-62
-84
-85
-82
-154
-133
-118
-240
-181
-138
-249
-174
-124
-247
-165
-111
-249
-152
-92
-243
-141
-78
-241
-138
-68
-242
-133
-67
-241
-138
-68
-241
-145
-79
-246
-156
-93
-247
-165
-111
-250
-176
-132
-219
-170
-138
-144
-125
-110
-77
-85
-81
-43
-57
-62
-48
-58
-59
-48
-58
-59
-51
-62
-63
-48
-58
-59
-43
-57
-62
-77
-85
-81
-150
-125
-114
-219
-170
-138
-250
-176
-132
-247
-165
-111
-246
-156
-93
-241
-145
-79
-241
-138
-68
-241
-138
-68
-241
-138
-68
-243
-141
-78
-249
-152
-92
-247
-165
-111
-250
-176
-132
-230
-173
-136
-154
-133
-118
-77
-85
-81
-43
-57
-62
-48
-58
-59
-51
-62
-63
-48
-58
-59
-43
-57
-62
-70
-79
-77
-161
-144
-134
-245
-212
-186
-255
-215
-190
-161
-144
-134
-63
-74
-74
-43
-57
-62
-51
-62
-63
-109
-106
-99
-217
-187
-166
-251
-209
-178
-238
-205
-179
-137
-127
-115
-58
-69
-70
-43
-57
-62
-58
-69
-70
-139
-115
-96
-238
-159
-107
-249
-152
-92
-241
-138
-68
-247
-130
-53
-238
-123
-45
-239
-117
-44
-247
-118
-39
-238
-123
-45
-241
-132
-59
-241
-145
-79
-249
-159
-103
-249
-174
-124
-240
-181
-138
-167
-142
-123
-91
-92
-89
-43
-57
-62
-48
-58
-59
-51
-62
-63
-48
-58
-59
-43
-57
-62
-63
-74
-74
-137
-127
-115
-234
-204
-183
-255
-215
-190
-146
-135
-124
-63
-74
-74
-43
-57
-62
-51
-62
-63
-115
-102
-92
-236
-186
-153
-251
-192
-154
-251
-192
-154
-236
-186
-153
-133
-120
-107
-43
-57
-62
-48
-58
-59
-48
-58
-59
-55
-66
-67
-158
-130
-108
-248
-180
-134
-250
-176
-132
-249
-174
-124
-249
-174
-124
-250
-176
-132
-252
-185
-144
-239
-182
-144
-154
-133
-118
-84
-85
-82
-43
-57
-62
-48
-58
-59
-48
-58
-59
-51
-62
-63
-48
-58
-59
-43
-57
-62
-70
-79
-77
-133
-120
-107
-219
-170
-138
-245
-179
-138
-250
-176
-132
-245
-169
-119
-247
-165
-111
-247
-165
-111
-245
-169
-119
-249
-174
-124
-187
-140
-108
-81
-77
-76
-43
-57
-62
-43
-57
-62
-99
-90
-79
-214
-151
-109
-249
-159
-103
-247
-150
-84
-247
-143
-74
-241
-138
-68
-241
-138
-68
-249
-146
-83
-249
-159
-103
-250
-176
-132
-250
-197
-158
-255
-215
-190
-255
-215
-190
-245
-212
-186
-161
-144
-134
-77
-85
-81
-43
-57
-62
-48
-58
-59
-51
-62
-63
-48
-58
-59
-41
-58
-57
-55
-66
-67
-120
-114
-108
-217
-187
-166
-97
-98
-96
-95
-78
-64
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-125
-52
-112
-85
-63
-70
-79
-77
-249
-189
-146
-247
-165
-111
-243
-141
-78
-247
-130
-53
-238
-116
-34
-236
-102
-14
-243
-101
-2
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-235
-94
-9
-235
-94
-9
-236
-102
-14
-235
-107
-16
-236
-108
-29
-239
-117
-44
-238
-123
-53
-242
-133
-67
-241
-145
-79
-241
-153
-96
-247
-165
-111
-249
-174
-124
-250
-176
-132
-245
-179
-138
-252
-185
-144
-249
-189
-146
-249
-189
-146
-249
-189
-146
-249
-189
-146
-249
-189
-146
-249
-189
-146
-249
-189
-146
-249
-189
-146
-249
-189
-146
-249
-189
-146
-249
-189
-146
-249
-189
-146
-249
-189
-146
-249
-189
-146
-252
-185
-144
-245
-179
-138
-250
-176
-132
-249
-174
-124
-245
-169
-119
-245
-162
-103
-241
-153
-96
-241
-145
-86
-243
-141
-78
-241
-138
-68
-242
-133
-67
-241
-132
-59
-238
-123
-53
-238
-123
-53
-238
-123
-53
-241
-132
-59
-242
-133
-67
-243
-141
-78
-241
-145
-86
-249
-159
-103
-238
-159
-107
-210
-156
-119
-210
-156
-119
-240
-181
-138
-249
-189
-146
-251
-192
-154
-251
-192
-154
-250
-197
-158
-212
-173
-150
-186
-157
-134
-167
-142
-123
-167
-142
-123
-195
-157
-134
-219
-170
-138
-248
-180
-134
-245
-169
-119
-245
-162
-103
-247
-150
-84
-243
-141
-78
-241
-132
-59
-238
-123
-53
-238
-123
-53
-238
-123
-53
-241
-132
-59
-241
-138
-68
-247
-150
-84
-245
-162
-103
-245
-169
-119
-250
-176
-132
-239
-182
-144
-219
-170
-138
-186
-157
-134
-167
-142
-123
-167
-142
-123
-172
-150
-134
-195
-157
-134
-219
-170
-138
-239
-182
-144
-248
-180
-134
-245
-169
-119
-245
-162
-103
-241
-153
-96
-241
-145
-79
-241
-138
-68
-241
-138
-68
-241
-138
-68
-241
-138
-68
-241
-145
-79
-241
-153
-96
-247
-165
-111
-249
-174
-124
-245
-179
-138
-219
-170
-138
-186
-157
-134
-167
-142
-123
-167
-142
-123
-186
-157
-134
-212
-173
-150
-250
-197
-158
-251
-192
-154
-251
-192
-154
-249
-189
-146
-239
-182
-144
-219
-170
-138
-219
-170
-138
-239
-182
-144
-250
-197
-158
-250
-200
-166
-251
-209
-178
-238
-205
-179
-172
-150
-134
-137
-127
-115
-161
-144
-134
-217
-187
-166
-253
-212
-188
-227
-196
-175
-194
-173
-157
-176
-156
-141
-172
-150
-134
-187
-166
-150
-217
-187
-166
-255
-215
-190
-245
-212
-186
-76
-78
-76
-75
-74
-61
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-105
-93
-60
-58
-69
-70
-217
-187
-166
-255
-215
-190
-253
-204
-176
-236
-186
-153
-210
-156
-119
-210
-156
-119
-247
-165
-111
-249
-159
-103
-249
-152
-92
-241
-145
-86
-243
-141
-78
-241
-145
-79
-247
-150
-84
-241
-153
-96
-245
-162
-103
-245
-169
-119
-248
-180
-134
-239
-182
-144
-209
-171
-139
-186
-157
-134
-167
-142
-123
-167
-142
-123
-178
-146
-122
-195
-157
-134
-230
-173
-136
-239
-182
-144
-250
-176
-132
-245
-169
-119
-247
-165
-111
-249
-159
-103
-241
-153
-96
-249
-152
-92
-249
-152
-92
-241
-153
-96
-245
-162
-103
-247
-165
-111
-210
-156
-119
-210
-156
-119
-230
-173
-136
-249
-189
-146
-249
-189
-146
-251
-192
-154
-250
-197
-158
-236
-186
-153
-203
-161
-131
-167
-142
-123
-167
-142
-123
-178
-146
-122
-203
-161
-131
-240
-181
-138
-249
-174
-124
-247
-165
-111
-241
-153
-96
-243
-141
-78
-242
-133
-67
-238
-123
-53
-238
-123
-45
-238
-123
-45
-238
-123
-45
-241
-132
-59
-241
-138
-68
-241
-145
-86
-249
-159
-103
-245
-169
-119
-250
-176
-132
-240
-181
-138
-209
-171
-139
-178
-146
-122
-167
-142
-123
-167
-142
-123
-186
-157
-134
-209
-171
-139
-240
-181
-138
-250
-176
-132
-245
-169
-119
-249
-159
-103
-241
-145
-86
-241
-138
-68
-241
-132
-59
-238
-123
-45
-238
-123
-45
-238
-123
-45
-247
-130
-53
-242
-133
-67
-241
-145
-79
-241
-153
-96
-247
-165
-111
-250
-176
-132
-240
-181
-138
-203
-161
-131
-178
-146
-122
-167
-142
-123
-167
-142
-123
-195
-157
-134
-236
-186
-153
-251
-192
-154
-251
-192
-154
-249
-189
-146
-249
-189
-146
-230
-173
-136
-203
-161
-131
-219
-170
-138
-245
-179
-138
-245
-179
-138
-245
-179
-138
-245
-179
-138
-248
-180
-134
-234
-168
-124
-214
-151
-109
-214
-151
-109
-245
-162
-103
-241
-145
-86
-241
-138
-68
-238
-123
-53
-239
-117
-44
-238
-116
-34
-236
-108
-29
-236
-108
-29
-238
-116
-34
-238
-123
-45
-241
-132
-59
-243
-141
-78
-241
-153
-96
-247
-165
-111
-249
-174
-124
-240
-181
-138
-209
-171
-139
-178
-146
-122
-167
-142
-123
-167
-142
-123
-195
-157
-134
-236
-186
-153
-250
-197
-158
-251
-192
-154
-249
-189
-146
-249
-189
-146
-230
-173
-136
-210
-156
-119
-210
-156
-119
-250
-176
-132
-249
-174
-124
-249
-174
-124
-249
-174
-124
-249
-174
-124
-250
-176
-132
-210
-156
-119
-162
-125
-96
-162
-125
-96
-214
-151
-109
-247
-165
-111
-245
-162
-103
-241
-153
-96
-241
-153
-96
-241
-153
-96
-249
-159
-103
-247
-165
-111
-245
-169
-119
-250
-176
-132
-240
-181
-138
-209
-171
-139
-186
-157
-134
-167
-142
-123
-167
-142
-123
-178
-146
-122
-203
-161
-131
-239
-182
-144
-248
-180
-134
-245
-169
-119
-245
-162
-103
-241
-153
-96
-241
-145
-86
-241
-145
-86
-241
-145
-86
-247
-150
-84
-241
-153
-96
-245
-162
-103
-238
-159
-107
-204
-141
-99
-214
-151
-109
-241
-153
-96
-249
-152
-92
-243
-141
-78
-242
-133
-67
-241
-132
-59
-241
-132
-59
-241
-138
-68
-241
-145
-79
-245
-162
-103
-248
-180
-134
-212
-173
-150
-146
-135
-124
-137
-127
-115
-176
-156
-141
-234
-204
-183
-253
-212
-188
-217
-187
-166
-187
-166
-150
-172
-150
-134
-176
-156
-141
-194
-173
-157
-234
-204
-183
-255
-215
-190
-194
-173
-157
-43
-57
-62
-139
-96
-61
-234
-126
-45
-224
-123
-55
-227
-126
-50
-227
-126
-50
-89
-75
-66
-101
-100
-92
-245
-179
-138
-245
-162
-103
-241
-138
-68
-238
-123
-45
-236
-108
-29
-236
-102
-14
-235
-94
-9
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-235
-94
-9
-235
-94
-9
-236
-102
-14
-235
-107
-16
-236
-108
-29
-238
-116
-34
-238
-123
-45
-241
-132
-59
-241
-138
-68
-241
-145
-79
-249
-152
-92
-241
-153
-96
-245
-162
-103
-245
-162
-103
-247
-165
-111
-247
-165
-111
-247
-165
-111
-247
-165
-111
-247
-165
-111
-247
-165
-111
-247
-165
-111
-247
-165
-111
-247
-165
-111
-247
-165
-111
-247
-165
-111
-247
-165
-111
-247
-165
-111
-247
-165
-111
-245
-162
-103
-245
-162
-103
-241
-153
-96
-241
-153
-96
-241
-145
-86
-243
-141
-78
-241
-138
-68
-241
-132
-59
-238
-123
-53
-238
-123
-45
-239
-117
-44
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-239
-117
-44
-238
-123
-45
-238
-123
-53
-241
-132
-59
-243
-141
-78
-241
-145
-86
-241
-153
-96
-245
-162
-103
-245
-162
-103
-247
-165
-111
-247
-165
-111
-245
-169
-119
-245
-169
-119
-245
-169
-119
-249
-174
-124
-245
-169
-119
-245
-169
-119
-245
-169
-119
-247
-165
-111
-241
-153
-96
-241
-145
-86
-243
-141
-78
-241
-132
-59
-238
-123
-53
-239
-117
-44
-238
-116
-34
-238
-116
-34
-238
-116
-34
-239
-117
-44
-238
-123
-45
-241
-132
-59
-241
-138
-68
-241
-145
-86
-241
-153
-96
-245
-162
-103
-245
-169
-119
-249
-174
-124
-250
-176
-132
-250
-176
-132
-250
-176
-132
-249
-174
-124
-245
-169
-119
-247
-165
-111
-241
-153
-96
-241
-145
-86
-243
-141
-78
-242
-133
-67
-241
-132
-59
-238
-123
-45
-238
-123
-45
-238
-123
-45
-238
-123
-45
-241
-132
-59
-242
-133
-67
-243
-141
-78
-249
-152
-92
-245
-162
-103
-247
-165
-111
-245
-169
-119
-245
-169
-119
-245
-169
-119
-245
-169
-119
-245
-169
-119
-245
-169
-119
-245
-169
-119
-247
-165
-111
-247
-165
-111
-247
-165
-111
-247
-165
-111
-245
-169
-119
-249
-174
-124
-245
-179
-138
-251
-192
-154
-232
-190
-161
-101
-100
-92
-51
-62
-63
-63
-69
-60
-51
-62
-63
-55
-66
-67
-109
-106
-99
-176
-156
-141
-234
-204
-183
-255
-215
-190
-255
-215
-190
-255
-215
-190
-245
-212
-186
-207
-178
-158
-91
-92
-89
-51
-62
-63
-129
-106
-52
-168
-127
-42
-158
-125
-46
-158
-125
-46
-168
-127
-42
-75
-74
-61
-91
-92
-89
-245
-212
-186
-250
-200
-166
-252
-185
-144
-249
-174
-124
-247
-165
-111
-241
-153
-96
-241
-145
-79
-241
-138
-68
-242
-133
-67
-241
-132
-59
-238
-123
-53
-241
-132
-59
-241
-132
-59
-241
-138
-68
-243
-141
-78
-241
-145
-86
-241
-153
-96
-247
-165
-111
-245
-169
-119
-249
-174
-124
-250
-176
-132
-250
-176
-132
-249
-174
-124
-249
-174
-124
-245
-169
-119
-245
-162
-103
-241
-153
-96
-241
-145
-86
-241
-145
-79
-241
-138
-68
-242
-133
-67
-242
-133
-67
-242
-133
-67
-241
-138
-68
-243
-141
-78
-241
-145
-86
-241
-153
-96
-241
-153
-96
-245
-162
-103
-245
-162
-103
-247
-165
-111
-245
-169
-119
-245
-169
-119
-245
-169
-119
-245
-169
-119
-245
-169
-119
-245
-169
-119
-245
-169
-119
-247
-165
-111
-245
-162
-103
-241
-153
-96
-241
-145
-79
-241
-138
-68
-238
-123
-53
-238
-123
-45
-238
-116
-34
-235
-113
-30
-235
-113
-30
-238
-116
-34
-239
-117
-44
-238
-123
-45
-241
-132
-59
-241
-138
-68
-241
-145
-86
-241
-153
-96
-245
-162
-103
-245
-169
-119
-245
-169
-119
-249
-174
-124
-249
-174
-124
-245
-169
-119
-245
-169
-119
-245
-162
-103
-241
-153
-96
-241
-145
-86
-241
-138
-68
-241
-132
-59
-238
-123
-45
-239
-117
-44
-238
-116
-34
-235
-113
-30
-235
-113
-30
-238
-116
-34
-238
-123
-45
-241
-132
-59
-241
-138
-68
-241
-145
-86
-241
-153
-96
-245
-162
-103
-247
-165
-111
-245
-169
-119
-245
-169
-119
-245
-169
-119
-245
-169
-119
-245
-169
-119
-245
-169
-119
-247
-165
-111
-247
-165
-111
-247
-165
-111
-245
-162
-103
-245
-162
-103
-245
-162
-103
-245
-162
-103
-245
-162
-103
-245
-162
-103
-245
-162
-103
-245
-162
-103
-241
-153
-96
-241
-153
-96
-241
-145
-86
-243
-141
-78
-241
-132
-59
-238
-123
-53
-239
-117
-44
-235
-113
-30
-236
-108
-29
-235
-107
-16
-235
-107
-16
-236
-108
-29
-235
-113
-30
-239
-117
-44
-238
-123
-53
-242
-133
-67
-241
-145
-79
-241
-153
-96
-245
-162
-103
-247
-165
-111
-245
-169
-119
-245
-169
-119
-249
-174
-124
-245
-169
-119
-245
-169
-119
-245
-169
-119
-245
-169
-119
-247
-165
-111
-247
-165
-111
-245
-162
-103
-245
-162
-103
-241
-153
-96
-241
-153
-96
-241
-153
-96
-241
-153
-96
-241
-153
-96
-241
-153
-96
-241
-153
-96
-241
-153
-96
-241
-153
-96
-241
-153
-96
-249
-152
-92
-241
-145
-86
-243
-141
-78
-241
-138
-68
-241
-138
-68
-241
-138
-68
-241
-138
-68
-243
-141
-78
-241
-145
-86
-241
-153
-96
-245
-162
-103
-245
-169
-119
-245
-169
-119
-249
-174
-124
-249
-174
-124
-249
-174
-124
-245
-169
-119
-247
-165
-111
-241
-153
-96
-241
-145
-86
-243
-141
-78
-241
-138
-68
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-138
-68
-243
-141
-78
-241
-145
-79
-241
-145
-79
-241
-145
-79
-243
-141
-78
-241
-138
-68
-241
-132
-59
-238
-123
-53
-238
-123
-53
-238
-123
-53
-242
-133
-67
-241
-145
-86
-247
-165
-111
-210
-156
-119
-63
-74
-74
-62
-63
-61
-69
-69
-61
-48
-58
-59
-63
-74
-74
-133
-120
-107
-194
-173
-157
-245
-212
-186
-255
-215
-190
-255
-215
-190
-255
-215
-190
-245
-212
-186
-176
-156
-141
-55
-66
-67
-76
-70
-64
-212
-120
-56
-227
-126
-50
-224
-123
-55
-234
-125
-52
-194
-112
-58
-56
-64
-60
-154
-133
-118
-250
-176
-132
-241
-153
-96
-242
-133
-67
-239
-117
-44
-236
-108
-29
-236
-102
-14
-235
-94
-9
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-235
-94
-9
-235
-94
-9
-236
-102
-14
-236
-102
-14
-236
-108
-29
-235
-113
-30
-239
-117
-44
-238
-123
-45
-238
-123
-53
-241
-132
-59
-241
-138
-68
-241
-138
-68
-243
-141
-78
-243
-141
-78
-241
-145
-79
-241
-145
-79
-241
-145
-79
-241
-145
-79
-241
-145
-79
-241
-145
-79
-241
-145
-79
-241
-145
-79
-241
-145
-79
-241
-145
-79
-241
-145
-79
-243
-141
-78
-243
-141
-78
-243
-141
-78
-241
-138
-68
-241
-138
-68
-241
-132
-59
-241
-132
-59
-238
-123
-53
-238
-123
-45
-238
-116
-34
-238
-116
-34
-236
-108
-29
-236
-108
-29
-235
-107
-16
-235
-107
-16
-235
-107
-16
-236
-108
-29
-236
-108
-29
-235
-113
-30
-238
-116
-34
-238
-123
-45
-238
-123
-53
-241
-132
-59
-242
-133
-67
-241
-138
-68
-243
-141
-78
-243
-141
-78
-241
-145
-79
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-86
-243
-141
-78
-241
-138
-68
-241
-132
-59
-238
-123
-53
-239
-117
-44
-238
-116
-34
-236
-108
-29
-236
-108
-29
-235
-107
-16
-235
-107
-16
-236
-108
-29
-238
-116
-34
-239
-117
-44
-238
-123
-45
-241
-132
-59
-241
-138
-68
-243
-141
-78
-241
-145
-86
-249
-152
-92
-241
-153
-96
-241
-153
-96
-241
-153
-96
-249
-152
-92
-241
-145
-86
-243
-141
-78
-241
-138
-68
-241
-132
-59
-238
-123
-53
-238
-123
-45
-238
-116
-34
-235
-113
-30
-236
-108
-29
-236
-108
-29
-235
-113
-30
-238
-116
-34
-238
-123
-45
-238
-123
-53
-241
-132
-59
-241
-138
-68
-241
-145
-79
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-79
-241
-145
-79
-241
-145
-79
-241
-145
-86
-241
-153
-96
-245
-162
-103
-245
-169
-119
-245
-179
-138
-144
-125
-110
-51
-62
-63
-117
-98
-55
-158
-125
-46
-145
-114
-49
-105
-93
-60
-69
-69
-61
-48
-58
-59
-58
-69
-70
-91
-92
-89
-120
-114
-108
-120
-114
-108
-91
-92
-89
-48
-58
-59
-56
-64
-60
-123
-102
-54
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-137
-110
-49
-48
-58
-59
-161
-144
-134
-250
-197
-158
-248
-180
-134
-247
-165
-111
-241
-153
-96
-241
-145
-79
-241
-138
-68
-241
-132
-59
-238
-123
-53
-238
-123
-45
-239
-117
-44
-238
-116
-34
-238
-116
-34
-239
-117
-44
-238
-123
-45
-238
-123
-53
-241
-132
-59
-241
-138
-68
-243
-141
-78
-241
-145
-86
-249
-152
-92
-241
-153
-96
-241
-153
-96
-241
-153
-96
-241
-145
-86
-241
-145
-86
-243
-141
-78
-241
-138
-68
-241
-132
-59
-238
-123
-53
-238
-123
-45
-238
-123
-45
-239
-117
-44
-238
-123
-45
-238
-123
-45
-238
-123
-53
-241
-132
-59
-241
-132
-59
-241
-138
-68
-241
-138
-68
-243
-141
-78
-241
-145
-79
-241
-145
-79
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-79
-243
-141
-78
-242
-133
-67
-241
-132
-59
-238
-123
-45
-238
-116
-34
-235
-113
-30
-236
-108
-29
-235
-107
-16
-235
-107
-16
-235
-107
-16
-236
-108
-29
-235
-113
-30
-239
-117
-44
-238
-123
-45
-241
-132
-59
-241
-138
-68
-243
-141
-78
-241
-145
-86
-241
-145
-86
-241
-153
-96
-241
-153
-96
-241
-145
-86
-241
-145
-86
-243
-141
-78
-241
-138
-68
-241
-132
-59
-238
-123
-45
-239
-117
-44
-235
-113
-30
-236
-108
-29
-235
-107
-16
-235
-107
-16
-235
-107
-16
-236
-108
-29
-235
-113
-30
-239
-117
-44
-238
-123
-45
-241
-132
-59
-242
-133
-67
-243
-141
-78
-241
-145
-79
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-79
-241
-145
-79
-243
-141
-78
-243
-141
-78
-243
-141
-78
-243
-141
-78
-241
-138
-68
-241
-138
-68
-241
-138
-68
-241
-138
-68
-241
-138
-68
-241
-138
-68
-242
-133
-67
-241
-132
-59
-238
-123
-53
-238
-123
-45
-238
-116
-34
-236
-108
-29
-235
-107
-16
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-235
-107
-16
-236
-108
-29
-238
-116
-34
-238
-123
-45
-238
-123
-53
-242
-133
-67
-241
-138
-68
-241
-145
-79
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-79
-243
-141
-78
-243
-141
-78
-241
-138
-68
-241
-138
-68
-241
-138
-68
-242
-133
-67
-242
-133
-67
-242
-133
-67
-241
-138
-68
-241
-138
-68
-241
-138
-68
-241
-138
-68
-242
-133
-67
-241
-132
-59
-241
-132
-59
-238
-123
-53
-238
-123
-45
-238
-123
-45
-238
-123
-45
-238
-123
-45
-238
-123
-53
-241
-132
-59
-241
-138
-68
-243
-141
-78
-241
-145
-86
-241
-145
-86
-241
-153
-96
-241
-153
-96
-241
-145
-86
-241
-145
-86
-243
-141
-78
-241
-138
-68
-241
-132
-59
-238
-123
-53
-238
-123
-45
-239
-117
-44
-239
-117
-44
-239
-117
-44
-239
-117
-44
-238
-123
-45
-238
-123
-53
-238
-123
-53
-241
-132
-59
-241
-132
-59
-238
-123
-53
-238
-123
-45
-239
-117
-44
-239
-117
-44
-239
-117
-44
-238
-123
-53
-242
-133
-67
-241
-145
-86
-238
-159
-107
-84
-85
-82
-69
-69
-61
-188
-112
-56
-214
-121
-50
-173
-106
-60
-112
-85
-63
-62
-63
-61
-41
-58
-57
-63
-74
-74
-97
-98
-96
-120
-114
-108
-109
-106
-99
-77
-85
-81
-41
-58
-57
-81
-73
-62
-194
-112
-58
-234
-125
-52
-224
-123
-55
-224
-123
-55
-234
-126
-45
-125
-90
-64
-51
-62
-63
-209
-171
-139
-245
-169
-119
-241
-145
-86
-241
-132
-59
-238
-116
-34
-235
-107
-16
-236
-102
-14
-235
-94
-9
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-230
-97
-5
-235
-94
-9
-235
-94
-9
-236
-102
-14
-235
-107
-16
-236
-108
-29
-235
-113
-30
-238
-116
-34
-239
-117
-44
-238
-123
-45
-238
-123
-45
-238
-123
-45
-238
-123
-53
-238
-123
-53
-238
-123
-53
-238
-123
-53
-238
-123
-53
-238
-123
-53
-238
-123
-53
-238
-123
-53
-238
-123
-53
-238
-123
-53
-238
-123
-53
-238
-123
-53
-238
-123
-53
-238
-123
-53
-238
-123
-45
-238
-123
-45
-239
-117
-44
-239
-117
-44
-238
-116
-34
-235
-113
-30
-236
-108
-29
-235
-107
-16
-235
-107
-16
-236
-102
-14
-236
-102
-14
-235
-94
-9
-235
-94
-9
-235
-94
-9
-236
-102
-14
-236
-102
-14
-235
-107
-16
-236
-108
-29
-236
-108
-29
-238
-116
-34
-239
-117
-44
-239
-117
-44
-238
-123
-45
-238
-123
-45
-238
-123
-53
-238
-123
-53
-238
-123
-53
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-238
-123
-53
-238
-123
-53
-238
-123
-45
-239
-117
-44
-238
-116
-34
-236
-108
-29
-235
-107
-16
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-235
-107
-16
-236
-108
-29
-235
-113
-30
-238
-116
-34
-238
-123
-45
-238
-123
-53
-238
-123
-53
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-238
-123
-53
-238
-123
-45
-239
-117
-44
-238
-116
-34
-236
-108
-29
-235
-107
-16
-235
-107
-16
-236
-102
-14
-236
-102
-14
-235
-107
-16
-236
-108
-29
-236
-108
-29
-238
-116
-34
-239
-117
-44
-238
-123
-45
-238
-123
-53
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-238
-123
-53
-238
-123
-53
-238
-123
-53
-238
-123
-53
-241
-132
-59
-241
-138
-68
-241
-145
-86
-238
-159
-107
-234
-168
-124
-84
-85
-82
-83
-78
-61
-171
-129
-45
-158
-125
-46
-168
-127
-42
-168
-127
-42
-158
-125
-46
-129
-106
-52
-100
-89
-56
-83
-78
-61
-75
-74
-61
-69
-69
-61
-83
-78
-61
-105
-93
-60
-152
-119
-47
-168
-127
-42
-158
-125
-46
-158
-125
-46
-161
-127
-40
-168
-127
-42
-75
-74
-61
-63
-74
-74
-236
-186
-153
-245
-179
-138
-238
-159
-107
-241
-145
-86
-241
-138
-68
-241
-132
-59
-238
-123
-45
-238
-116
-34
-235
-113
-30
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-238
-116
-34
-239
-117
-44
-238
-123
-45
-238
-123
-53
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-238
-123
-53
-238
-123
-53
-238
-123
-45
-239
-117
-44
-238
-116
-34
-235
-113
-30
-236
-108
-29
-236
-108
-29
-236
-108
-29
-235
-113
-30
-238
-116
-34
-238
-116
-34
-239
-117
-44
-238
-123
-45
-238
-123
-45
-238
-123
-53
-238
-123
-53
-238
-123
-53
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-238
-123
-53
-238
-123
-45
-239
-117
-44
-238
-116
-34
-235
-113
-30
-236
-108
-29
-236
-102
-14
-236
-102
-14
-236
-102
-14
-235
-94
-9
-236
-102
-14
-236
-102
-14
-235
-107
-16
-236
-108
-29
-235
-113
-30
-238
-116
-34
-238
-123
-45
-238
-123
-53
-238
-123
-53
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-238
-123
-53
-238
-123
-53
-238
-123
-45
-238
-116
-34
-235
-113
-30
-236
-108
-29
-235
-107
-16
-236
-102
-14
-236
-102
-14
-235
-94
-9
-236
-102
-14
-236
-102
-14
-235
-107
-16
-236
-108
-29
-235
-113
-30
-238
-116
-34
-238
-123
-45
-238
-123
-53
-238
-123
-53
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-238
-123
-53
-238
-123
-53
-238
-123
-53
-238
-123
-53
-238
-123
-53
-238
-123
-45
-238
-123
-45
-238
-123
-45
-238
-123
-45
-238
-123
-45
-238
-123
-45
-238
-123
-45
-238
-123
-45
-239
-117
-44
-239
-117
-44
-238
-116
-34
-236
-108
-29
-236
-108
-29
-235
-107
-16
-236
-102
-14
-235
-94
-9
-235
-94
-9
-235
-94
-9
-235
-94
-9
-236
-102
-14
-236
-102
-14
-235
-107
-16
-236
-108
-29
-238
-116
-34
-239
-117
-44
-238
-123
-45
-238
-123
-53
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-238
-123
-53
-238
-123
-53
-238
-123
-53
-238
-123
-45
-238
-123
-45
-238
-123
-45
-238
-123
-45
-239
-117
-44
-239
-117
-44
-239
-117
-44
-238
-123
-45
-238
-123
-45
-238
-123
-45
-238
-123
-45
-238
-123
-45
-239
-117
-44
-239
-117
-44
-238
-116
-34
-235
-113
-30
-236
-108
-29
-236
-108
-29
-235
-113
-30
-238
-116
-34
-239
-117
-44
-238
-123
-45
-238
-123
-53
-238
-123
-53
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-238
-123
-53
-238
-123
-45
-239
-117
-44
-238
-116
-34
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-235
-113
-30
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-235
-113
-30
-236
-108
-29
-235
-113
-30
-238
-116
-34
-238
-123
-45
-241
-132
-59
-241
-145
-86
-204
-141
-99
-41
-58
-57
-155
-100
-63
-234
-126
-45
-227
-126
-50
-227
-126
-50
-234
-125
-52
-209
-117
-53
-155
-100
-63
-118
-86
-65
-89
-75
-66
-81
-73
-62
-81
-73
-62
-106
-82
-65
-155
-100
-63
-214
-121
-50
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-194
-112
-58
-56
-64
-60
-109
-106
-99
-245
-179
-138
-245
-162
-103
-241
-138
-68
-238
-123
-45
-235
-113
-30
-236
-102
-14
-235
-94
-9
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-235
-94
-9
-235
-94
-9
-235
-94
-9
-236
-102
-14
-236
-102
-14
-235
-107
-16
-235
-107
-16
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-235
-113
-30
-235
-113
-30
-235
-113
-30
-235
-113
-30
-235
-113
-30
-235
-113
-30
-235
-113
-30
-235
-113
-30
-235
-113
-30
-235
-113
-30
-235
-113
-30
-235
-113
-30
-235
-113
-30
-235
-113
-30
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-235
-107
-16
-236
-102
-14
-236
-102
-14
-236
-102
-14
-235
-94
-9
-235
-94
-9
-235
-94
-9
-230
-97
-5
-230
-97
-5
-235
-94
-9
-235
-94
-9
-235
-94
-9
-235
-94
-9
-236
-102
-14
-236
-102
-14
-235
-107
-16
-236
-108
-29
-236
-108
-29
-236
-108
-29
-235
-113
-30
-235
-113
-30
-235
-113
-30
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-235
-113
-30
-236
-108
-29
-236
-108
-29
-235
-107
-16
-236
-102
-14
-236
-102
-14
-235
-94
-9
-235
-94
-9
-235
-94
-9
-235
-94
-9
-235
-94
-9
-235
-94
-9
-236
-102
-14
-235
-107
-16
-236
-108
-29
-236
-108
-29
-235
-113
-30
-238
-116
-34
-238
-116
-34
-239
-117
-44
-239
-117
-44
-239
-117
-44
-238
-116
-34
-238
-116
-34
-235
-113
-30
-236
-108
-29
-236
-108
-29
-235
-107
-16
-236
-102
-14
-236
-102
-14
-235
-94
-9
-235
-94
-9
-235
-94
-9
-235
-94
-9
-236
-102
-14
-236
-102
-14
-235
-107
-16
-236
-108
-29
-236
-108
-29
-235
-113
-30
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-235
-113
-30
-235
-113
-30
-238
-116
-34
-238
-123
-45
-238
-123
-53
-241
-138
-68
-241
-145
-86
-238
-159
-107
-89
-84
-82
-75
-74
-61
-168
-127
-42
-168
-127
-42
-158
-125
-46
-158
-125
-46
-161
-127
-40
-168
-127
-42
-171
-129
-45
-168
-127
-42
-158
-125
-46
-158
-125
-46
-168
-127
-42
-171
-129
-45
-168
-127
-42
-158
-125
-46
-158
-125
-46
-168
-127
-42
-171
-129
-45
-95
-87
-59
-48
-58
-59
-167
-142
-123
-245
-179
-138
-238
-159
-107
-241
-145
-86
-242
-133
-67
-238
-123
-45
-238
-116
-34
-236
-108
-29
-236
-108
-29
-235
-107
-16
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-235
-107
-16
-236
-108
-29
-236
-108
-29
-235
-113
-30
-238
-116
-34
-238
-116
-34
-239
-117
-44
-239
-117
-44
-239
-117
-44
-238
-116
-34
-238
-116
-34
-235
-113
-30
-236
-108
-29
-236
-108
-29
-235
-107
-16
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-235
-107
-16
-235
-107
-16
-236
-108
-29
-236
-108
-29
-236
-108
-29
-235
-113
-30
-235
-113
-30
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-235
-113
-30
-236
-108
-29
-235
-107
-16
-236
-102
-14
-236
-102
-14
-235
-94
-9
-235
-94
-9
-235
-94
-9
-235
-94
-9
-235
-94
-9
-235
-94
-9
-235
-94
-9
-236
-102
-14
-235
-107
-16
-236
-108
-29
-236
-108
-29
-235
-113
-30
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-235
-113
-30
-236
-108
-29
-236
-108
-29
-235
-107
-16
-236
-102
-14
-235
-94
-9
-235
-94
-9
-235
-94
-9
-235
-94
-9
-235
-94
-9
-235
-94
-9
-235
-94
-9
-236
-102
-14
-236
-102
-14
-235
-107
-16
-236
-108
-29
-235
-113
-30
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-235
-113
-30
-235
-113
-30
-235
-113
-30
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-235
-107
-16
-235
-107
-16
-236
-102
-14
-236
-102
-14
-235
-94
-9
-235
-94
-9
-235
-94
-9
-230
-97
-5
-235
-94
-9
-235
-94
-9
-235
-94
-9
-236
-102
-14
-236
-102
-14
-235
-107
-16
-236
-108
-29
-235
-113
-30
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-235
-113
-30
-235
-113
-30
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-235
-107
-16
-235
-107
-16
-236
-102
-14
-236
-102
-14
-236
-102
-14
-235
-107
-16
-236
-108
-29
-236
-108
-29
-235
-113
-30
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-235
-113
-30
-236
-108
-29
-236
-108
-29
-235
-107
-16
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-235
-107
-16
-235
-107
-16
-236
-108
-29
-236
-108
-29
-235
-107
-16
-235
-107
-16
-235
-107
-16
-236
-108
-29
-235
-113
-30
-239
-117
-44
-241
-132
-59
-241
-145
-79
-204
-141
-99
-48
-58
-59
-139
-96
-61
-234
-126
-45
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-126
-45
-234
-126
-45
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-126
-45
-234
-126
-45
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-125
-52
-214
-121
-50
-81
-73
-62
-58
-69
-70
-219
-170
-138
-245
-169
-119
-241
-145
-86
-241
-132
-59
-239
-117
-44
-236
-108
-29
-236
-102
-14
-235
-94
-9
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-230
-97
-5
-230
-97
-5
-235
-94
-9
-230
-97
-5
-229
-102
-7
-229
-102
-7
-236
-102
-14
-236
-102
-14
-224
-98
-18
-224
-98
-18
-224
-98
-18
-236
-102
-14
-224
-98
-18
-236
-102
-14
-236
-102
-14
-224
-98
-18
-224
-98
-18
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-224
-98
-18
-236
-102
-14
-236
-102
-14
-229
-102
-7
-229
-102
-7
-230
-97
-5
-235
-94
-9
-235
-94
-9
-230
-97
-5
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-230
-97
-5
-235
-94
-9
-230
-97
-5
-235
-94
-9
-235
-94
-9
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-236
-102
-14
-224
-98
-18
-236
-102
-14
-235
-94
-9
-235
-94
-9
-235
-94
-9
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-230
-97
-5
-235
-94
-9
-230
-97
-5
-229
-102
-7
-236
-102
-14
-236
-102
-14
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-236
-102
-14
-224
-98
-18
-236
-102
-14
-229
-102
-7
-230
-97
-5
-235
-94
-9
-235
-94
-9
-230
-97
-5
-231
-91
-2
-230
-97
-5
-235
-94
-9
-235
-94
-9
-235
-94
-9
-230
-97
-5
-229
-102
-7
-236
-102
-14
-236
-102
-14
-236
-102
-14
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-236
-102
-14
-224
-98
-18
-236
-102
-14
-235
-107
-16
-236
-108
-29
-239
-117
-44
-234
-125
-52
-231
-136
-72
-241
-153
-96
-162
-125
-96
-48
-58
-59
-95
-87
-59
-158
-125
-46
-171
-129
-45
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-171
-129
-45
-158
-125
-46
-95
-87
-59
-48
-58
-59
-124
-111
-99
-245
-179
-138
-247
-165
-111
-241
-145
-86
-241
-132
-59
-238
-123
-45
-238
-116
-34
-236
-108
-29
-224
-98
-18
-229
-102
-7
-230
-97
-5
-235
-94
-9
-235
-94
-9
-230
-97
-5
-230
-97
-5
-230
-97
-5
-235
-94
-9
-230
-97
-5
-229
-102
-7
-236
-102
-14
-236
-102
-14
-236
-102
-14
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-236
-102
-14
-236
-102
-14
-236
-102
-14
-235
-94
-9
-230
-97
-5
-235
-94
-9
-235
-94
-9
-235
-94
-9
-235
-94
-9
-235
-94
-9
-236
-102
-14
-236
-102
-14
-236
-102
-14
-224
-98
-18
-224
-98
-18
-236
-102
-14
-236
-102
-14
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-224
-98
-18
-236
-102
-14
-229
-102
-7
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-231
-91
-2
-231
-91
-2
-231
-91
-2
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-229
-102
-7
-236
-102
-14
-224
-98
-18
-236
-102
-14
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-236
-102
-14
-224
-98
-18
-236
-102
-14
-229
-102
-7
-230
-97
-5
-235
-94
-9
-230
-97
-5
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-230
-97
-5
-230
-97
-5
-235
-94
-9
-235
-94
-9
-229
-102
-7
-236
-102
-14
-236
-102
-14
-236
-102
-14
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-236
-102
-14
-235
-107
-16
-236
-102
-14
-224
-98
-18
-224
-98
-18
-236
-102
-14
-224
-98
-18
-224
-98
-18
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-229
-102
-7
-236
-102
-14
-235
-94
-9
-230
-97
-5
-235
-94
-9
-235
-94
-9
-230
-97
-5
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-235
-94
-9
-230
-97
-5
-230
-97
-5
-229
-102
-7
-236
-102
-14
-224
-98
-18
-236
-102
-14
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-236
-102
-14
-236
-102
-14
-236
-102
-14
-224
-98
-18
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-224
-98
-18
-236
-102
-14
-236
-102
-14
-236
-102
-14
-235
-94
-9
-235
-94
-9
-235
-94
-9
-235
-94
-9
-235
-94
-9
-236
-102
-14
-236
-102
-14
-224
-98
-18
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-236
-102
-14
-236
-102
-14
-236
-102
-14
-229
-102
-7
-230
-97
-5
-235
-94
-9
-235
-94
-9
-235
-94
-9
-235
-94
-9
-235
-94
-9
-230
-97
-5
-235
-94
-9
-236
-102
-14
-236
-102
-14
-236
-102
-14
-229
-102
-7
-230
-97
-5
-229
-102
-7
-224
-98
-18
-236
-108
-29
-238
-116
-34
-238
-123
-53
-243
-141
-78
-241
-153
-96
-99
-90
-79
-56
-64
-60
-155
-100
-63
-234
-126
-45
-234
-126
-45
-227
-126
-50
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-227
-126
-50
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-227
-126
-50
-234
-126
-45
-194
-112
-58
-81
-73
-62
-48
-58
-59
-178
-146
-122
-249
-174
-124
-241
-153
-96
-231
-136
-72
-234
-125
-52
-238
-116
-34
-235
-107
-16
-229
-102
-7
-235
-94
-9
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-229
-102
-7
-236
-102
-14
-235
-113
-30
-239
-117
-44
-230
-128
-60
-236
-147
-85
-238
-159
-107
-139
-115
-96
-48
-58
-59
-69
-69
-61
-111
-94
-57
-145
-114
-49
-158
-125
-46
-168
-127
-42
-171
-129
-45
-168
-127
-42
-168
-127
-42
-168
-127
-42
-168
-127
-42
-171
-129
-45
-168
-127
-42
-152
-119
-47
-117
-98
-55
-69
-69
-61
-48
-58
-59
-144
-125
-110
-240
-181
-138
-247
-165
-111
-236
-147
-85
-242
-133
-67
-238
-123
-45
-235
-113
-30
-235
-107
-16
-236
-102
-14
-230
-97
-5
-230
-97
-5
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-229
-102
-7
-235
-107
-16
-235
-113
-30
-238
-123
-45
-242
-133
-67
-241
-153
-96
-214
-151
-109
-99
-90
-79
-48
-58
-59
-95
-78
-64
-155
-100
-63
-209
-117
-53
-227
-126
-50
-234
-125
-52
-234
-125
-52
-234
-125
-52
-234
-125
-52
-234
-125
-52
-234
-126
-45
-234
-126
-45
-227
-126
-50
-194
-112
-58
-125
-90
-64
-56
-64
-60
-58
-69
-70
-178
-146
-122
-250
-176
-132
-238
-159
-107
-241
-145
-79
-234
-125
-52
-239
-117
-44
-236
-108
-29
-224
-98
-18
-230
-97
-5
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-226
-93
-0
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-226
-93
-0
-226
-93
-0
-226
-93
-0
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-226
-93
-0
-226
-93
-0
-231
-91
-2
-226
-93
-0
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-231
-91
-2
-230
-97
-5
-229
-102
-7
-223
-103
-18
-226
-110
-35
-234
-125
-52
-231
-136
-72
-241
-153
-96
-245
-169
-119
-178
-146
-122
-101
-100
-92
-48
-58
-59
-56
-64
-60
-69
-69
-61
-95
-87
-59
-111
-94
-57
-123
-102
-54
-129
-106
-52
-129
-106
-52
-123
-102
-54
-105
-93
-60
-88
-82
-59
-62
-63
-61
-48
-58
-59
-91
-92
-89
-186
-157
-134
-245
-179
-138
-238
-159
-107
-236
-147
-85
-230
-128
-60
-234
-125
-52
-226
-110
-35
-223
-103
-18
-224
-98
-18
-230
-97
-5
-226
-93
-0
-226
-93
-0
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-226
-93
-0
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-226
-93
-0
-226
-93
-0
-226
-93
-0
-226
-93
-0
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-226
-93
-0
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-226
-93
-0
-226
-93
-0
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-226
-93
-0
-226
-93
-0
-226
-93
-0
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-230
-97
-5
-224
-98
-18
-236
-108
-29
-239
-117
-44
-230
-123
-57
-243
-141
-78
-238
-159
-107
-234
-168
-124
-158
-130
-108
-76
-78
-76
-41
-58
-57
-62
-63
-61
-95
-78
-64
-125
-90
-64
-146
-97
-64
-163
-104
-61
-173
-106
-60
-163
-104
-61
-155
-100
-63
-125
-90
-64
-95
-78
-64
-56
-64
-60
-43
-57
-62
-124
-111
-99
-209
-171
-139
-234
-168
-124
-238
-159
-107
-241
-145
-79
-230
-128
-60
-239
-117
-44
-236
-108
-29
-236
-102
-14
-229
-102
-7
-230
-97
-5
-226
-93
-0
-226
-93
-0
-226
-93
-0
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-226
-93
-0
-226
-93
-0
-226
-93
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-230
-97
-5
-230
-97
-5
-224
-98
-18
-236
-108
-29
-226
-110
-35
-230
-123
-57
-231
-136
-72
-241
-153
-96
-238
-159
-107
-240
-181
-138
-203
-161
-131
-150
-125
-114
-101
-100
-92
-76
-78
-76
-55
-66
-67
-48
-58
-59
-48
-58
-59
-48
-58
-59
-48
-58
-59
-58
-69
-70
-84
-85
-82
-124
-111
-99
-178
-146
-122
-240
-181
-138
-234
-168
-124
-238
-159
-107
-236
-147
-85
-230
-128
-60
-234
-125
-52
-226
-110
-35
-223
-103
-18
-224
-98
-18
-230
-97
-5
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-230
-97
-5
-224
-98
-18
-223
-103
-18
-226
-110
-35
-225
-124
-48
-230
-128
-60
-236
-147
-85
-241
-153
-96
-234
-168
-124
-230
-173
-136
-186
-157
-134
-133
-120
-107
-91
-92
-89
-63
-74
-74
-51
-62
-63
-48
-58
-59
-48
-58
-59
-48
-58
-59
-51
-62
-63
-63
-74
-74
-91
-92
-89
-144
-125
-110
-203
-161
-131
-240
-181
-138
-245
-169
-119
-241
-153
-96
-241
-145
-79
-230
-128
-60
-225
-124
-48
-226
-110
-35
-223
-103
-18
-224
-98
-18
-230
-97
-5
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-230
-97
-5
-224
-98
-18
-223
-103
-18
-226
-110
-35
-239
-117
-44
-230
-123
-57
-231
-136
-72
-236
-147
-85
-238
-159
-107
-245
-169
-119
-234
-168
-124
-240
-181
-138
-239
-182
-144
-236
-186
-153
-250
-197
-158
-250
-197
-158
-250
-197
-158
-251
-192
-154
-236
-186
-153
-239
-182
-144
-245
-179
-138
-234
-168
-124
-238
-159
-107
-241
-153
-96
-231
-136
-72
-230
-128
-60
-225
-124
-48
-226
-110
-35
-223
-103
-18
-224
-98
-18
-230
-97
-5
-230
-97
-5
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-230
-97
-5
-224
-98
-18
-223
-103
-18
-226
-110
-35
-225
-124
-48
-230
-128
-60
-231
-136
-72
-241
-153
-96
-238
-159
-107
-234
-168
-124
-240
-181
-138
-239
-182
-144
-236
-186
-153
-251
-192
-154
-250
-197
-158
-250
-197
-158
-250
-197
-158
-236
-186
-153
-239
-182
-144
-240
-181
-138
-234
-168
-124
-245
-169
-119
-238
-159
-107
-236
-147
-85
-231
-136
-72
-230
-123
-57
-239
-117
-44
-226
-110
-35
-223
-103
-18
-224
-98
-18
-230
-97
-5
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-220
-93
-11
-220
-93
-11
-224
-98
-18
-223
-103
-18
-226
-110
-35
-226
-110
-35
-225
-124
-48
-230
-128
-60
-231
-136
-72
-236
-147
-85
-241
-153
-96
-238
-159
-107
-238
-159
-107
-234
-168
-124
-234
-168
-124
-234
-168
-124
-234
-168
-124
-234
-168
-124
-238
-159
-107
-238
-159
-107
-241
-153
-96
-236
-147
-85
-231
-136
-72
-230
-128
-60
-230
-123
-57
-226
-110
-35
-226
-110
-35
-223
-103
-18
-224
-98
-18
-220
-93
-11
-220
-93
-11
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-220
-93
-11
-220
-93
-11
-224
-98
-18
-223
-103
-18
-226
-110
-35
-225
-124
-48
-230
-123
-57
-230
-128
-60
-231
-136
-72
-236
-147
-85
-241
-153
-96
-238
-159
-107
-238
-159
-107
-234
-168
-124
-234
-168
-124
-234
-168
-124
-234
-168
-124
-234
-168
-124
-238
-159
-107
-238
-159
-107
-241
-153
-96
-236
-147
-85
-231
-136
-72
-230
-128
-60
-225
-124
-48
-226
-110
-35
-226
-110
-35
-223
-103
-18
-224
-98
-18
-220
-93
-11
-220
-93
-11
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-220
-93
-11
-220
-93
-11
-220
-93
-11
-224
-98
-18
-223
-103
-18
-226
-110
-35
-226
-110
-35
-225
-124
-48
-230
-128
-60
-230
-128
-60
-231
-136
-72
-231
-136
-72
-236
-147
-85
-236
-147
-85
-236
-147
-85
-236
-147
-85
-236
-147
-85
-231
-136
-72
-231
-136
-72
-231
-136
-72
-230
-128
-60
-227
-126
-50
-225
-124
-48
-226
-110
-35
-223
-103
-18
-223
-103
-18
-224
-98
-18
-220
-93
-11
-220
-93
-11
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-218
-87
-5
-220
-93
-11
-220
-93
-11
-224
-98
-18
-223
-103
-18
-226
-110
-35
-226
-110
-35
-225
-124
-48
-230
-123
-57
-230
-128
-60
-231
-136
-72
-231
-136
-72
-231
-136
-72
-236
-147
-85
-236
-147
-85
-236
-147
-85
-236
-147
-85
-236
-147
-85
-231
-136
-72
-231
-136
-72
-230
-128
-60
-230
-123
-57
-225
-124
-48
-226
-110
-35
-226
-110
-35
-223
-103
-18
-224
-98
-18
-220
-93
-11
-220
-93
-11
-220
-93
-11
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-221
-89
-0
-217
-86
-3
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-221
-89
-0
-217
-86
-3
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-221
-89
-0
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-218
-87
-5
-218
-87
-5
-220
-93
-11
-220
-93
-11
-224
-98
-18
-223
-103
-18
-223
-103
-18
-226
-110
-35
-226
-110
-35
-225
-124
-48
-225
-124
-48
-225
-124
-48
-224
-123
-55
-224
-123
-55
-224
-123
-55
-230
-123
-57
-224
-123
-55
-224
-123
-55
-225
-124
-48
-225
-124
-48
-226
-110
-35
-226
-110
-35
-223
-103
-18
-223
-103
-18
-224
-98
-18
-220
-93
-11
-220
-93
-11
-218
-87
-5
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-221
-89
-0
-221
-89
-0
-217
-86
-3
-221
-89
-0
-221
-89
-0
-217
-86
-3
-221
-89
-0
-221
-89
-0
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-221
-89
-0
-221
-89
-0
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-217
-86
-3
-218
-87
-5
-218
-87
-5
-220
-93
-11
-220
-93
-11
-220
-93
-11
-224
-98
-18
-223
-103
-18
-226
-110
-35
-226
-110
-35
-226
-110
-35
-225
-124
-48
-225
-124
-48
-224
-123
-55
-230
-123
-57
-230
-123
-57
-230
-123
-57
-230
-123
-57
-230
-123
-57
-225
-124
-48
-225
-124
-48
-226
-110
-35
-226
-110
-35
-226
-110
-35
-223
-103
-18
-224
-98
-18
-224
-98
-18
-220
-93
-11
-220
-93
-11
-218
-87
-5
-218
-87
-5
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-218
-87
-5
-218
-87
-5
-218
-87
-5
-220
-93
-11
-220
-93
-11
-224
-98
-18
-224
-98
-18
-224
-98
-18
-223
-103
-18
-226
-110
-35
-226
-110
-35
-226
-110
-35
-226
-110
-35
-226
-110
-35
-226
-110
-35
-226
-110
-35
-226
-110
-35
-226
-110
-35
-223
-103
-18
-223
-103
-18
-224
-98
-18
-224
-98
-18
-220
-93
-11
-220
-93
-11
-218
-87
-5
-218
-87
-5
-218
-87
-5
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-218
-87
-5
-218
-87
-5
-218
-87
-5
-218
-87
-5
-220
-93
-11
-220
-93
-11
-224
-98
-18
-224
-98
-18
-223
-103
-18
-223
-103
-18
-226
-110
-35
-226
-110
-35
-226
-110
-35
-226
-110
-35
-226
-110
-35
-226
-110
-35
-226
-110
-35
-226
-110
-35
-226
-110
-35
-223
-103
-18
-224
-98
-18
-224
-98
-18
-220
-93
-11
-220
-93
-11
-220
-93
-11
-218
-87
-5
-218
-87
-5
-218
-87
-5
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-218
-87
-5
-218
-87
-5
-218
-87
-5
-218
-87
-5
-218
-87
-5
-220
-93
-11
-220
-93
-11
-220
-93
-11
-220
-93
-11
-224
-98
-18
-224
-98
-18
-224
-98
-18
-224
-98
-18
-224
-98
-18
-224
-98
-18
-220
-93
-11
-224
-98
-18
-220
-93
-11
-220
-93
-11
-220
-93
-11
-218
-87
-5
-218
-87
-5
-218
-87
-5
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-218
-87
-5
-217
-86
-3
-218
-87
-5
-218
-87
-5
-218
-87
-5
-220
-93
-11
-220
-93
-11
-220
-93
-11
-220
-93
-11
-220
-93
-11
-224
-98
-18
-224
-98
-18
-224
-98
-18
-224
-98
-18
-224
-98
-18
-220
-93
-11
-220
-93
-11
-220
-93
-11
-220
-93
-11
-220
-93
-11
-218
-87
-5
-218
-87
-5
-218
-87
-5
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-218
-87
-5
-218
-87
-5
-218
-87
-5
-218
-87
-5
-218
-87
-5
-218
-87
-5
-218
-87
-5
-218
-87
-5
-218
-87
-5
-218
-87
-5
-218
-87
-5
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-218
-87
-5
-218
-87
-5
-218
-87
-5
-218
-87
-5
-218
-87
-5
-218
-87
-5
-218
-87
-5
-218
-87
-5
-218
-87
-5
-218
-87
-5
-218
-87
-5
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-217
-86
-3
-217
-86
-3
-217
-86
-3
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-217
-86
-3
-217
-86
-3
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-217
-86
-3
-217
-86
-3
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-217
-86
-3
-217
-86
-3
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-217
-86
-3
-217
-86
-3
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-217
-86
-3
-217
-86
-3
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-217
-86
-3
-217
-86
-3
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-217
-86
-3
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-217
-86
-3
-217
-86
-3
-214
-84
-0
-214
-84
-0
-214
-84
-0
-217
-86
-3
-217
-86
-3
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-217
-86
-3
-217
-86
-3
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
diff --git a/recipes-kernel/linux/linux-mainline-3.2/devkit8000/0001-arm-omap-devkit8000-for-lcd-use-samsung_lte_panel.patch b/recipes-kernel/linux/linux-mainline-3.2/devkit8000/0001-arm-omap-devkit8000-for-lcd-use-samsung_lte_panel.patch
deleted file mode 100644
index 388b250..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/devkit8000/0001-arm-omap-devkit8000-for-lcd-use-samsung_lte_panel.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 810e3d05ec1e0f2a3c261d7e72bde9a0726b1a7d Mon Sep 17 00:00:00 2001
-From: Robert Nelson <robertcnelson at gmail.com>
-Date: Tue, 2 Nov 2010 09:59:09 -0500
-Subject: [PATCH] arm: omap: devkit8000: for lcd use samsung_lte_panel
-
-This was noticed by Robert Skretkowicz
-
-Signed-off-by: Robert Nelson <robertcnelson at gmail.com>
----
- arch/arm/mach-omap2/board-devkit8000.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-devkit8000.c b/arch/arm/mach-omap2/board-devkit8000.c
-index 90154e4..55760a0 100644
---- a/arch/arm/mach-omap2/board-devkit8000.c
-+++ b/arch/arm/mach-omap2/board-devkit8000.c
-@@ -148,7 +148,7 @@ static struct panel_generic_dpi_data lcd_panel = {
- static struct omap_dss_device devkit8000_lcd_device = {
- .name = "lcd",
- .type = OMAP_DISPLAY_TYPE_DPI,
-- .driver_name = "generic_dpi_panel",
-+ .driver_name = "samsung_lte_panel",
- .data = &lcd_panel,
- .phy.dpi.data_lines = 24,
- };
---
-1.7.7.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/distro/0001-kbuild-deb-pkg-set-host-machine-after-dpkg-gencontro.patch b/recipes-kernel/linux/linux-mainline-3.2/distro/0001-kbuild-deb-pkg-set-host-machine-after-dpkg-gencontro.patch
deleted file mode 100644
index 6b8a631..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/distro/0001-kbuild-deb-pkg-set-host-machine-after-dpkg-gencontro.patch
+++ /dev/null
@@ -1,114 +0,0 @@
-From 4177460e5231895018005ac972ee11ef8c7a561f Mon Sep 17 00:00:00 2001
-From: Robert Gordon <robert at greenroomsoftware.com>
-Date: Wed, 13 Apr 2011 11:32:29 -0500
-Subject: [PATCH] kbuild, deb-pkg: set host machine after dpkg-gencontrol
-
-scripts/package/builddeb script was setting the host machine
-$arch in the KERNEL/debian/control prior to an invocation of
-dpkg-gencontrol. The patch modifies the script to guarantee the correct
-debian arch for the target is written to the control file instead.
-
-Signed-off-by: Robert Gordon <robert at greenroomsoftware.com>
-Signed-off-by: Robert Nelson <robertcnelson at gmail.com>
----
- scripts/package/builddeb | 70 +++++++++++++++++++++++----------------------
- 1 files changed, 36 insertions(+), 34 deletions(-)
-
-diff --git a/scripts/package/builddeb b/scripts/package/builddeb
-index 3c6c0b1..2f86d7b 100644
---- a/scripts/package/builddeb
-+++ b/scripts/package/builddeb
-@@ -26,37 +26,7 @@ create_package() {
- chmod -R go-w "$pdir"
-
- # Attempt to find the correct Debian architecture
-- local forcearch="" debarch=""
-- case "$UTS_MACHINE" in
-- i386|ia64|alpha)
-- debarch="$UTS_MACHINE" ;;
-- x86_64)
-- debarch=amd64 ;;
-- sparc*)
-- debarch=sparc ;;
-- s390*)
-- debarch=s390 ;;
-- ppc*)
-- debarch=powerpc ;;
-- parisc*)
-- debarch=hppa ;;
-- mips*)
-- debarch=mips$(grep -q CPU_LITTLE_ENDIAN=y .config && echo el) ;;
-- arm*)
-- debarch=arm$(grep -q CONFIG_AEABI=y .config && echo el) ;;
-- *)
-- echo "" >&2
-- echo "** ** ** WARNING ** ** **" >&2
-- echo "" >&2
-- echo "Your architecture doesn't have it's equivalent" >&2
-- echo "Debian userspace architecture defined!" >&2
-- echo "Falling back to using your current userspace instead!" >&2
-- echo "Please add support for $UTS_MACHINE to ${0} ..." >&2
-- echo "" >&2
-- esac
-- if [ -n "$KBUILD_DEBARCH" ] ; then
-- debarch="$KBUILD_DEBARCH"
-- fi
-+ local forcearch=""
- if [ -n "$debarch" ] ; then
- forcearch="-DArchitecture=$debarch"
- fi
-@@ -66,6 +36,38 @@ create_package() {
- dpkg --build "$pdir" ..
- }
-
-+#Set the correct debian arch
-+case "$UTS_MACHINE" in
-+i386|ia64|alpha)
-+ debarch="$UTS_MACHINE" ;;
-+x86_64)
-+ debarch=amd64 ;;
-+sparc*)
-+ debarch=sparc ;;
-+s390*)
-+ debarch=s390 ;;
-+ppc*)
-+ debarch=powerpc ;;
-+parisc*)
-+ debarch=hppa ;;
-+mips*)
-+ debarch=mips$(grep -q CPU_LITTLE_ENDIAN=y .config && echo el) ;;
-+arm*)
-+ debarch=arm$(grep -q CONFIG_AEABI=y .config && echo el) ;;
-+*)
-+ echo "" >&2
-+ echo "** ** ** WARNING ** ** **" >&2
-+ echo "" >&2
-+ echo "Your architecture doesn't have it's equivalent" >&2
-+ echo "Debian userspace architecture defined!" >&2
-+ echo "Falling back to using your current userspace instead!" >&2
-+ echo "Please add support for $UTS_MACHINE to ${0} ..." >&2
-+ echo "" >&2
-+esac
-+if [ -n "$KBUILD_DEBARCH" ] ; then
-+ debarch="$KBUILD_DEBARCH"
-+fi
-+
- # Some variables and settings used throughout the script
- version=$KERNELRELEASE
- revision=$(cat .version)
-@@ -252,9 +254,9 @@ cat <<EOF >> debian/control
-
- Package: $kernel_headers_packagename
- Provides: linux-headers, linux-headers-2.6
--Architecture: $arch
--Description: Linux kernel headers for $KERNELRELEASE on $arch
-- This package provides kernel header files for $KERNELRELEASE on $arch
-+Architecture: $debarch
-+Description: Linux kernel headers for $KERNELRELEASE on $debarch
-+ This package provides kernel header files for $KERNELRELEASE on $debarch
- .
- This is useful for people who need to build external modules
- EOF
---
-1.7.7.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/led/0001-leds-heartbeat-stop-on-shutdown-reboot-or-panic.patch b/recipes-kernel/linux/linux-mainline-3.2/led/0001-leds-heartbeat-stop-on-shutdown-reboot-or-panic.patch
deleted file mode 100644
index 241907e..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/led/0001-leds-heartbeat-stop-on-shutdown-reboot-or-panic.patch
+++ /dev/null
@@ -1,67 +0,0 @@
-From d4369481800faa1ab93ab10c23626a5ce5fad5b5 Mon Sep 17 00:00:00 2001
-From: Alexander Holler <hol... at ahsoftware.de>
-Date: Wed, 25 Apr 2012 00:50:03 +0200
-Subject: [PATCH] leds: heartbeat: stop on shutdown, reboot or panic
-
-A halted kernel should not show a heartbeat.
-
-Signed-off-by: Alexander Holler <hol... at ahsoftware.de>
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- drivers/leds/ledtrig-heartbeat.c | 27 ++++++++++++++++++++++++++-
- 1 files changed, 26 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/leds/ledtrig-heartbeat.c b/drivers/leds/ledtrig-heartbeat.c
-index 759c0bb..31c234c 100644
---- a/drivers/leds/ledtrig-heartbeat.c
-+++ b/drivers/leds/ledtrig-heartbeat.c
-@@ -18,6 +18,7 @@
- #include <linux/timer.h>
- #include <linux/sched.h>
- #include <linux/leds.h>
-+#include <linux/reboot.h>
- #include "leds.h"
-
- struct heartbeat_trig_data {
-@@ -101,13 +102,37 @@ static struct led_trigger heartbeat_led_trigger = {
- .deactivate = heartbeat_trig_deactivate,
- };
-
-+static int heartbeat_reboot_notifier(struct notifier_block *nb,
-+ unsigned long code, void *unused)
-+{
-+ led_trigger_unregister(&heartbeat_led_trigger);
-+ return NOTIFY_DONE;
-+}
-+
-+static struct notifier_block heartbeat_reboot_nb = {
-+ .notifier_call = heartbeat_reboot_notifier,
-+};
-+
-+static struct notifier_block heartbeat_panic_nb = {
-+ .notifier_call = heartbeat_reboot_notifier,
-+};
-+
- static int __init heartbeat_trig_init(void)
- {
-- return led_trigger_register(&heartbeat_led_trigger);
-+ int rc = led_trigger_register(&heartbeat_led_trigger);
-+ if (!rc) {
-+ atomic_notifier_chain_register(&panic_notifier_list,
-+ &heartbeat_panic_nb);
-+ register_reboot_notifier(&heartbeat_reboot_nb);
-+ }
-+ return rc;
- }
-
- static void __exit heartbeat_trig_exit(void)
- {
-+ unregister_reboot_notifier(&heartbeat_reboot_nb);
-+ atomic_notifier_chain_unregister(&panic_notifier_list,
-+ &heartbeat_panic_nb);
- led_trigger_unregister(&heartbeat_led_trigger);
- }
-
---
-1.7.7.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/libertas/0001-USB-convert-drivers-net-to-use-module_usb_driver.patch b/recipes-kernel/linux/linux-mainline-3.2/libertas/0001-USB-convert-drivers-net-to-use-module_usb_driver.patch
deleted file mode 100644
index 92c7745..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/libertas/0001-USB-convert-drivers-net-to-use-module_usb_driver.patch
+++ /dev/null
@@ -1,80 +0,0 @@
-From d632eb1bf22e11def74e4e53cc47d790fbdba105 Mon Sep 17 00:00:00 2001
-From: Greg Kroah-Hartman <gregkh at suse.de>
-Date: Fri, 18 Nov 2011 09:44:20 -0800
-Subject: [PATCH 01/17] USB: convert drivers/net/* to use module_usb_driver()
-
-This converts the drivers in drivers/net/* to use the
-module_usb_driver() macro which makes the code smaller and a bit
-simpler.
-
-Added bonus is that it removes some unneeded kernel log messages about
-drivers loading and/or unloading.
-
-Cc: Wolfgang Grandegger <wg at grandegger.com>
-Cc: Samuel Ortiz <samuel at sortiz.org>
-Cc: Oliver Neukum <oliver at neukum.name>
-Cc: Peter Korsgaard <jacmet at sunsite.dk>
-Cc: Petko Manolov <petkan at users.sourceforge.net>
-Cc: Steve Glendinning <steve.glendinning at smsc.com>
-Cc: Christian Lamparter <chunkeey at googlemail.com>
-Cc: "John W. Linville" <linville at tuxdriver.com>
-Cc: Dan Williams <dcbw at redhat.com>
-Cc: Jussi Kivilinna <jussi.kivilinna at mbnet.fi>
-Cc: Ivo van Doorn <IvDoorn at gmail.com>
-Cc: Gertjan van Wingerde <gwingerde at gmail.com>
-Cc: Helmut Schaa <helmut.schaa at googlemail.com>
-Cc: Herton Ronaldo Krzesinski <herton at canonical.com>
-Cc: Hin-Tak Leung <htl10 at users.sourceforge.net>
-Cc: Larry Finger <Larry.Finger at lwfinger.net>
-Cc: Chaoming Li <chaoming_li at realsil.com.cn>
-Cc: Lucas De Marchi <lucas.demarchi at profusion.mobi>
-Cc: "David S. Miller" <davem at davemloft.net>
-Cc: Roel Kluin <roel.kluin at gmail.com>
-Cc: Paul Gortmaker <paul.gortmaker at windriver.com>
-Cc: Jiri Pirko <jpirko at redhat.com>
-Cc: Pavel Roskin <proski at gnu.org>
-Cc: Yoann DI-RUZZA <y.diruzza at lim.eu>
-Cc: George <george0505 at realtek.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/net/wireless/libertas/if_usb.c | 24 +-----------------------
- 1 files changed, 1 insertions(+), 23 deletions(-)
-
-diff --git a/drivers/net/wireless/libertas/if_usb.c b/drivers/net/wireless/libertas/if_usb.c
-index db879c3..b5fbbc7 100644
---- a/drivers/net/wireless/libertas/if_usb.c
-+++ b/drivers/net/wireless/libertas/if_usb.c
-@@ -1184,29 +1184,7 @@ static struct usb_driver if_usb_driver = {
- .reset_resume = if_usb_resume,
- };
-
--static int __init if_usb_init_module(void)
--{
-- int ret = 0;
--
-- lbs_deb_enter(LBS_DEB_MAIN);
--
-- ret = usb_register(&if_usb_driver);
--
-- lbs_deb_leave_args(LBS_DEB_MAIN, "ret %d", ret);
-- return ret;
--}
--
--static void __exit if_usb_exit_module(void)
--{
-- lbs_deb_enter(LBS_DEB_MAIN);
--
-- usb_deregister(&if_usb_driver);
--
-- lbs_deb_leave(LBS_DEB_MAIN);
--}
--
--module_init(if_usb_init_module);
--module_exit(if_usb_exit_module);
-+module_usb_driver(if_usb_driver);
-
- MODULE_DESCRIPTION("8388 USB WLAN Driver");
- MODULE_AUTHOR("Marvell International Ltd. and Red Hat, Inc.");
---
-1.7.4.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/libertas/0002-net-fix-assignment-of-0-1-to-bool-variables.patch b/recipes-kernel/linux/linux-mainline-3.2/libertas/0002-net-fix-assignment-of-0-1-to-bool-variables.patch
deleted file mode 100644
index 34ba936..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/libertas/0002-net-fix-assignment-of-0-1-to-bool-variables.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From 3db1cd5c05f35fb43eb134df6f321de4e63141f2 Mon Sep 17 00:00:00 2001
-From: Rusty Russell <rusty at rustcorp.com.au>
-Date: Mon, 19 Dec 2011 13:56:45 +0000
-Subject: [PATCH 02/17] net: fix assignment of 0/1 to bool variables.
-
-DaveM said:
- Please, this kind of stuff rots forever and not using bool properly
- drives me crazy.
-
-Joe Perches <joe at perches.com> gave me the spatch script:
-
- @@
- bool b;
- @@
- -b = 0
- +b = false
- @@
- bool b;
- @@
- -b = 1
- +b = true
-
-I merely installed coccinelle, read the documentation and took credit.
-
-Signed-off-by: Rusty Russell <rusty at rustcorp.com.au>
-Signed-off-by: David S. Miller <davem at davemloft.net>
----
- drivers/net/wireless/libertas/if_cs.c | 4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/net/wireless/libertas/if_cs.c b/drivers/net/wireless/libertas/if_cs.c
-index e269351..3f7bf4d 100644
---- a/drivers/net/wireless/libertas/if_cs.c
-+++ b/drivers/net/wireless/libertas/if_cs.c
-@@ -859,7 +859,7 @@ static int if_cs_probe(struct pcmcia_device *p_dev)
- * Most of the libertas cards can do unaligned register access, but some
- * weird ones cannot. That's especially true for the CF8305 card.
- */
-- card->align_regs = 0;
-+ card->align_regs = false;
-
- card->model = get_model(p_dev->manf_id, p_dev->card_id);
- if (card->model == MODEL_UNKNOWN) {
-@@ -871,7 +871,7 @@ static int if_cs_probe(struct pcmcia_device *p_dev)
- /* Check if we have a current silicon */
- prod_id = if_cs_read8(card, IF_CS_PRODUCT_ID);
- if (card->model == MODEL_8305) {
-- card->align_regs = 1;
-+ card->align_regs = true;
- if (prod_id < IF_CS_CF8305_B1_REV) {
- pr_err("8305 rev B0 and older are not supported\n");
- ret = -ENODEV;
---
-1.7.4.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/libertas/0003-switch-debugfs-to-umode_t.patch b/recipes-kernel/linux/linux-mainline-3.2/libertas/0003-switch-debugfs-to-umode_t.patch
deleted file mode 100644
index 896c7b6..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/libertas/0003-switch-debugfs-to-umode_t.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From f4ae40a6a50a98ac23d4b285f739455e926a473e Mon Sep 17 00:00:00 2001
-From: Al Viro <viro at zeniv.linux.org.uk>
-Date: Sun, 24 Jul 2011 04:33:43 -0400
-Subject: [PATCH 03/17] switch debugfs to umode_t
-
-Signed-off-by: Al Viro <viro at zeniv.linux.org.uk>
----
- drivers/net/wireless/libertas/debugfs.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/net/wireless/libertas/debugfs.c b/drivers/net/wireless/libertas/debugfs.c
-index d8d8f0d..c192671 100644
---- a/drivers/net/wireless/libertas/debugfs.c
-+++ b/drivers/net/wireless/libertas/debugfs.c
-@@ -704,7 +704,7 @@ out_unlock:
-
- struct lbs_debugfs_files {
- const char *name;
-- int perm;
-+ umode_t perm;
- struct file_operations fops;
- };
-
---
-1.7.4.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/libertas/0004-drivers-net-Remove-unnecessary-k.alloc-v.alloc-OOM-m.patch b/recipes-kernel/linux/linux-mainline-3.2/libertas/0004-drivers-net-Remove-unnecessary-k.alloc-v.alloc-OOM-m.patch
deleted file mode 100644
index 7979f1c..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/libertas/0004-drivers-net-Remove-unnecessary-k.alloc-v.alloc-OOM-m.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From e404decb0fb017be80552adee894b35307b6c7b4 Mon Sep 17 00:00:00 2001
-From: Joe Perches <joe at perches.com>
-Date: Sun, 29 Jan 2012 12:56:23 +0000
-Subject: [PATCH 04/17] drivers/net: Remove unnecessary k.alloc/v.alloc OOM
- messages
-
-alloc failures use dump_stack so emitting an additional
-out-of-memory message is an unnecessary duplication.
-
-Remove the allocation failure messages.
-
-Signed-off-by: Joe Perches <joe at perches.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
----
- drivers/net/wireless/libertas/if_cs.c | 5 ++---
- drivers/net/wireless/libertas/if_usb.c | 4 +---
- 2 files changed, 3 insertions(+), 6 deletions(-)
-
-diff --git a/drivers/net/wireless/libertas/if_cs.c b/drivers/net/wireless/libertas/if_cs.c
-index 3f7bf4d..234ee88 100644
---- a/drivers/net/wireless/libertas/if_cs.c
-+++ b/drivers/net/wireless/libertas/if_cs.c
-@@ -815,10 +815,9 @@ static int if_cs_probe(struct pcmcia_device *p_dev)
- lbs_deb_enter(LBS_DEB_CS);
-
- card = kzalloc(sizeof(struct if_cs_card), GFP_KERNEL);
-- if (!card) {
-- pr_err("error in kzalloc\n");
-+ if (!card)
- goto out;
-- }
-+
- card->p_dev = p_dev;
- p_dev->priv = card;
-
-diff --git a/drivers/net/wireless/libertas/if_usb.c b/drivers/net/wireless/libertas/if_usb.c
-index b5fbbc7..74da5f1 100644
---- a/drivers/net/wireless/libertas/if_usb.c
-+++ b/drivers/net/wireless/libertas/if_usb.c
-@@ -261,10 +261,8 @@ static int if_usb_probe(struct usb_interface *intf,
- udev = interface_to_usbdev(intf);
-
- cardp = kzalloc(sizeof(struct if_usb_card), GFP_KERNEL);
-- if (!cardp) {
-- pr_err("Out of memory allocating private data\n");
-+ if (!cardp)
- goto error;
-- }
-
- setup_timer(&cardp->fw_timeout, if_usb_fw_timeo, (unsigned long)cardp);
- init_waitqueue_head(&cardp->fw_wq);
---
-1.7.4.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/libertas/0005-libertas-remove-dump_survey-implementation.patch b/recipes-kernel/linux/linux-mainline-3.2/libertas/0005-libertas-remove-dump_survey-implementation.patch
deleted file mode 100644
index 10e9c55..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/libertas/0005-libertas-remove-dump_survey-implementation.patch
+++ /dev/null
@@ -1,80 +0,0 @@
-From 377526578f2c343ea281a918b18ece1fca65005c Mon Sep 17 00:00:00 2001
-From: Daniel Drake <dsd at laptop.org>
-Date: Wed, 14 Mar 2012 22:34:33 +0000
-Subject: [PATCH 05/17] libertas: remove dump_survey implementation
-
-libertas provides a dump_survey implementation based on reading of
-a RSSI value. However, this RSSI value is calculated based on the
-last received beacon from the associated AP - it is not a good
-way of surveying a channel in general, and even causes an error
-if the card is not associated to a network.
-
-As this is not appropriate as a survey, remove it. This fixes an
-issue where something in userspace is repeatedly calling site-survey
-during boot, resulting in many repeated errors as the RSSI value cannot
-be read before associating.
-
-Signed-off-by: Daniel Drake <dsd at laptop.org>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
----
- drivers/net/wireless/libertas/cfg.c | 37 -----------------------------------
- 1 files changed, 0 insertions(+), 37 deletions(-)
-
-diff --git a/drivers/net/wireless/libertas/cfg.c b/drivers/net/wireless/libertas/cfg.c
-index a7cd311..3fa1ece 100644
---- a/drivers/net/wireless/libertas/cfg.c
-+++ b/drivers/net/wireless/libertas/cfg.c
-@@ -1631,42 +1631,6 @@ static int lbs_cfg_get_station(struct wiphy *wiphy, struct net_device *dev,
-
-
- /*
-- * "Site survey", here just current channel and noise level
-- */
--
--static int lbs_get_survey(struct wiphy *wiphy, struct net_device *dev,
-- int idx, struct survey_info *survey)
--{
-- struct lbs_private *priv = wiphy_priv(wiphy);
-- s8 signal, noise;
-- int ret;
--
-- if (dev == priv->mesh_dev)
-- return -EOPNOTSUPP;
--
-- if (idx != 0)
-- ret = -ENOENT;
--
-- lbs_deb_enter(LBS_DEB_CFG80211);
--
-- survey->channel = ieee80211_get_channel(wiphy,
-- ieee80211_channel_to_frequency(priv->channel,
-- IEEE80211_BAND_2GHZ));
--
-- ret = lbs_get_rssi(priv, &signal, &noise);
-- if (ret == 0) {
-- survey->filled = SURVEY_INFO_NOISE_DBM;
-- survey->noise = noise;
-- }
--
-- lbs_deb_leave_args(LBS_DEB_CFG80211, "ret %d", ret);
-- return ret;
--}
--
--
--
--
--/*
- * Change interface
- */
-
-@@ -2068,7 +2032,6 @@ static struct cfg80211_ops lbs_cfg80211_ops = {
- .del_key = lbs_cfg_del_key,
- .set_default_key = lbs_cfg_set_default_key,
- .get_station = lbs_cfg_get_station,
-- .dump_survey = lbs_get_survey,
- .change_virtual_intf = lbs_change_intf,
- .join_ibss = lbs_join_ibss,
- .leave_ibss = lbs_leave_ibss,
---
-1.7.4.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/libertas/0007-wireless-libertas-remove-redundant-NULL-tests-before.patch b/recipes-kernel/linux/linux-mainline-3.2/libertas/0007-wireless-libertas-remove-redundant-NULL-tests-before.patch
deleted file mode 100644
index d86b6e4..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/libertas/0007-wireless-libertas-remove-redundant-NULL-tests-before.patch
+++ /dev/null
@@ -1,95 +0,0 @@
-From a7b957a277215da1830596c0791307a999fe5153 Mon Sep 17 00:00:00 2001
-From: Jesper Juhl <jj at chaosbits.net>
-Date: Mon, 9 Apr 2012 22:51:07 +0200
-Subject: [PATCH 07/17] wireless, libertas: remove redundant NULL tests before
- calling release_firmware()
-
-release_firmware() tests for, and deals gracefully with, NULL
-pointers. Remove redundant explicit tests before calling the function.
-
-Signed-off-by: Jesper Juhl <jj at chaosbits.net>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
----
- drivers/net/wireless/libertas/if_cs.c | 6 ++----
- drivers/net/wireless/libertas/if_sdio.c | 6 ++----
- drivers/net/wireless/libertas/if_spi.c | 6 ++----
- drivers/net/wireless/libertas/main.c | 12 ++++--------
- 4 files changed, 10 insertions(+), 20 deletions(-)
-
-diff --git a/drivers/net/wireless/libertas/if_cs.c b/drivers/net/wireless/libertas/if_cs.c
-index 234ee88..171a06b 100644
---- a/drivers/net/wireless/libertas/if_cs.c
-+++ b/drivers/net/wireless/libertas/if_cs.c
-@@ -951,10 +951,8 @@ out2:
- out1:
- pcmcia_disable_device(p_dev);
- out:
-- if (helper)
-- release_firmware(helper);
-- if (mainfw)
-- release_firmware(mainfw);
-+ release_firmware(helper);
-+ release_firmware(mainfw);
-
- lbs_deb_leave_args(LBS_DEB_CS, "ret %d", ret);
- return ret;
-diff --git a/drivers/net/wireless/libertas/if_sdio.c b/drivers/net/wireless/libertas/if_sdio.c
-index 9804ebc..15bfe2f 100644
---- a/drivers/net/wireless/libertas/if_sdio.c
-+++ b/drivers/net/wireless/libertas/if_sdio.c
-@@ -751,10 +751,8 @@ success:
- ret = 0;
-
- out:
-- if (helper)
-- release_firmware(helper);
-- if (mainfw)
-- release_firmware(mainfw);
-+ release_firmware(helper);
-+ release_firmware(mainfw);
-
- lbs_deb_leave_args(LBS_DEB_SDIO, "ret %d", ret);
- return ret;
-diff --git a/drivers/net/wireless/libertas/if_spi.c b/drivers/net/wireless/libertas/if_spi.c
-index 50b1ee7..7a5df4f 100644
---- a/drivers/net/wireless/libertas/if_spi.c
-+++ b/drivers/net/wireless/libertas/if_spi.c
-@@ -1095,10 +1095,8 @@ static int if_spi_init_card(struct if_spi_card *card)
- goto out;
-
- out:
-- if (helper)
-- release_firmware(helper);
-- if (mainfw)
-- release_firmware(mainfw);
-+ release_firmware(helper);
-+ release_firmware(mainfw);
-
- lbs_deb_leave_args(LBS_DEB_SPI, "err %d\n", err);
-
-diff --git a/drivers/net/wireless/libertas/main.c b/drivers/net/wireless/libertas/main.c
-index 957681d..3b81b70 100644
---- a/drivers/net/wireless/libertas/main.c
-+++ b/drivers/net/wireless/libertas/main.c
-@@ -1269,14 +1269,10 @@ int lbs_get_firmware(struct device *dev, const char *user_helper,
-
- fail:
- /* Failed */
-- if (*helper) {
-- release_firmware(*helper);
-- *helper = NULL;
-- }
-- if (*mainfw) {
-- release_firmware(*mainfw);
-- *mainfw = NULL;
-- }
-+ release_firmware(*helper);
-+ *helper = NULL;
-+ release_firmware(*mainfw);
-+ *mainfw = NULL;
-
- return -ENOENT;
- }
---
-1.7.4.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/libertas/0008-libertas-fix-signedness-bug-in-lbs_auth_to_authtype.patch b/recipes-kernel/linux/linux-mainline-3.2/libertas/0008-libertas-fix-signedness-bug-in-lbs_auth_to_authtype.patch
deleted file mode 100644
index 0bacbca..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/libertas/0008-libertas-fix-signedness-bug-in-lbs_auth_to_authtype.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From effcc625eb4ab3b10b4744237fd37e8f7dcd6511 Mon Sep 17 00:00:00 2001
-From: Amitkumar Karwar <akarwar at marvell.com>
-Date: Wed, 28 Mar 2012 11:38:01 -0700
-Subject: [PATCH 08/17] libertas: fix signedness bug in lbs_auth_to_authtype()
-
-Return type for lbs_auth_to_authtype() is changed from "u8" to
-"int" to return negative error code correctly.
-Also an error check is added in connect handler for invalid auth
-type.
-
-Reported-by: Dan Carpenter <dan.carpenter at oracle.com>
-Signed-off-by: Amitkumar Karwar <akarwar at marvell.com>
-Signed-off-by: Kiran Divekar <dkiran at marvell.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
----
- drivers/net/wireless/libertas/cfg.c | 9 +++++++--
- 1 files changed, 7 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/net/wireless/libertas/cfg.c b/drivers/net/wireless/libertas/cfg.c
-index 3fa1ece..2fa879b 100644
---- a/drivers/net/wireless/libertas/cfg.c
-+++ b/drivers/net/wireless/libertas/cfg.c
-@@ -103,7 +103,7 @@ static const u32 cipher_suites[] = {
- * Convert NL80211's auth_type to the one from Libertas, see chapter 5.9.1
- * in the firmware spec
- */
--static u8 lbs_auth_to_authtype(enum nl80211_auth_type auth_type)
-+static int lbs_auth_to_authtype(enum nl80211_auth_type auth_type)
- {
- int ret = -ENOTSUPP;
-
-@@ -1411,7 +1411,12 @@ static int lbs_cfg_connect(struct wiphy *wiphy, struct net_device *dev,
- goto done;
- }
-
-- lbs_set_authtype(priv, sme);
-+ ret = lbs_set_authtype(priv, sme);
-+ if (ret == -ENOTSUPP) {
-+ wiphy_err(wiphy, "unsupported authtype 0x%x\n", sme->auth_type);
-+ goto done;
-+ }
-+
- lbs_set_radio(priv, preamble, 1);
-
- /* Do the actual association */
---
-1.7.4.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/libertas/0009-drivers-net-wireless-libertas-if_usb.c-add-missing-d.patch b/recipes-kernel/linux/linux-mainline-3.2/libertas/0009-drivers-net-wireless-libertas-if_usb.c-add-missing-d.patch
deleted file mode 100644
index 3477814..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/libertas/0009-drivers-net-wireless-libertas-if_usb.c-add-missing-d.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 1e66eda1d40c9ce3ff38782da066a14e1b88ac50 Mon Sep 17 00:00:00 2001
-From: Julia Lawall <Julia.Lawall at lip6.fr>
-Date: Mon, 16 Apr 2012 17:44:00 +0200
-Subject: [PATCH 09/17] drivers/net/wireless/libertas/if_usb.c: add missing
- debugging code
-
-Add a corresponding leave call on error failure.
-
-Signed-off-by: Julia Lawall <Julia.Lawall at lip6.fr>
-Acked-by: Dan Williams <dcbw at redhat.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
----
- drivers/net/wireless/libertas/if_usb.c | 6 ++++--
- 1 files changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/net/wireless/libertas/if_usb.c b/drivers/net/wireless/libertas/if_usb.c
-index 74da5f1..ce4938d 100644
---- a/drivers/net/wireless/libertas/if_usb.c
-+++ b/drivers/net/wireless/libertas/if_usb.c
-@@ -1128,8 +1128,10 @@ static int if_usb_suspend(struct usb_interface *intf, pm_message_t message)
-
- lbs_deb_enter(LBS_DEB_USB);
-
-- if (priv->psstate != PS_STATE_FULL_POWER)
-- return -1;
-+ if (priv->psstate != PS_STATE_FULL_POWER) {
-+ ret = -1;
-+ goto out;
-+ }
-
- #ifdef CONFIG_OLPC
- if (machine_is_olpc()) {
---
-1.7.4.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/libertas/0010-libertas-Firmware-loading-simplifications.patch b/recipes-kernel/linux/linux-mainline-3.2/libertas/0010-libertas-Firmware-loading-simplifications.patch
deleted file mode 100644
index 06d8218..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/libertas/0010-libertas-Firmware-loading-simplifications.patch
+++ /dev/null
@@ -1,618 +0,0 @@
-From 370803c25dd77332ee4ca97884c3a5e1e1eafbca Mon Sep 17 00:00:00 2001
-From: Daniel Drake <dsd at laptop.org>
-Date: Mon, 16 Apr 2012 23:52:42 +0100
-Subject: [PATCH 10/17] libertas: Firmware loading simplifications
-
-Remove the ability to pass module parameters with firmware filenames
-for USB and SDIO interfaces.
-
-Remove the ability to pass custom "user" filenames to lbs_get_firmware().
-
-Remove the ability to reprogram internal device memory with a different
-firmware from the USB driver (we don't know of any users), and simplify
-the OLPC firmware loading quirk to simply placing the OLPC firmware
-at the top of the list (we don't know of any users other than OLPC).
-
-Move lbs_get_firmware() into its own file.
-
-These simplifications should have no real-life effect but make the
-upcoming transition to asynchronous firmware loading considerably less
-painful.
-
-Signed-off-by: Daniel Drake <dsd at laptop.org>
-Acked-by: Dan Williams <dcbw at redhat.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
----
- drivers/net/wireless/libertas/Makefile | 1 +
- drivers/net/wireless/libertas/decl.h | 3 +-
- drivers/net/wireless/libertas/firmware.c | 79 ++++++++++++++
- drivers/net/wireless/libertas/if_cs.c | 4 +-
- drivers/net/wireless/libertas/if_sdio.c | 25 +----
- drivers/net/wireless/libertas/if_spi.c | 5 +-
- drivers/net/wireless/libertas/if_usb.c | 169 ++----------------------------
- drivers/net/wireless/libertas/main.c | 101 ------------------
- 8 files changed, 94 insertions(+), 293 deletions(-)
- create mode 100644 drivers/net/wireless/libertas/firmware.c
-
-diff --git a/drivers/net/wireless/libertas/Makefile b/drivers/net/wireless/libertas/Makefile
-index f7d01bf..eac72f7 100644
---- a/drivers/net/wireless/libertas/Makefile
-+++ b/drivers/net/wireless/libertas/Makefile
-@@ -6,6 +6,7 @@ libertas-y += ethtool.o
- libertas-y += main.o
- libertas-y += rx.o
- libertas-y += tx.o
-+libertas-y += firmware.o
- libertas-$(CONFIG_LIBERTAS_MESH) += mesh.o
-
- usb8xxx-objs += if_usb.o
-diff --git a/drivers/net/wireless/libertas/decl.h b/drivers/net/wireless/libertas/decl.h
-index bc951ab..2fb2e31 100644
---- a/drivers/net/wireless/libertas/decl.h
-+++ b/drivers/net/wireless/libertas/decl.h
-@@ -66,8 +66,7 @@ int lbs_exit_auto_deep_sleep(struct lbs_private *priv);
- u32 lbs_fw_index_to_data_rate(u8 index);
- u8 lbs_data_rate_to_fw_index(u32 rate);
-
--int lbs_get_firmware(struct device *dev, const char *user_helper,
-- const char *user_mainfw, u32 card_model,
-+int lbs_get_firmware(struct device *dev, u32 card_model,
- const struct lbs_fw_table *fw_table,
- const struct firmware **helper,
- const struct firmware **mainfw);
-diff --git a/drivers/net/wireless/libertas/firmware.c b/drivers/net/wireless/libertas/firmware.c
-new file mode 100644
-index 0000000..0c8c845
---- /dev/null
-+++ b/drivers/net/wireless/libertas/firmware.c
-@@ -0,0 +1,79 @@
-+/*
-+ * Firmware loading and handling functions.
-+ */
-+
-+#include <linux/firmware.h>
-+#include <linux/module.h>
-+
-+#include "decl.h"
-+
-+/**
-+ * lbs_get_firmware - Retrieves two-stage firmware
-+ *
-+ * @dev: A pointer to &device structure
-+ * @card_model: Bus-specific card model ID used to filter firmware table
-+ * elements
-+ * @fw_table: Table of firmware file names and device model numbers
-+ * terminated by an entry with a NULL helper name
-+ * @helper: On success, the helper firmware; caller must free
-+ * @mainfw: On success, the main firmware; caller must free
-+ *
-+ * returns: 0 on success, non-zero on failure
-+ */
-+int lbs_get_firmware(struct device *dev, u32 card_model,
-+ const struct lbs_fw_table *fw_table,
-+ const struct firmware **helper,
-+ const struct firmware **mainfw)
-+{
-+ const struct lbs_fw_table *iter;
-+ int ret;
-+
-+ BUG_ON(helper == NULL);
-+ BUG_ON(mainfw == NULL);
-+
-+ /* Search for firmware to use from the table. */
-+ iter = fw_table;
-+ while (iter && iter->helper) {
-+ if (iter->model != card_model)
-+ goto next;
-+
-+ if (*helper == NULL) {
-+ ret = request_firmware(helper, iter->helper, dev);
-+ if (ret)
-+ goto next;
-+
-+ /* If the device has one-stage firmware (ie cf8305) and
-+ * we've got it then we don't need to bother with the
-+ * main firmware.
-+ */
-+ if (iter->fwname == NULL)
-+ return 0;
-+ }
-+
-+ if (*mainfw == NULL) {
-+ ret = request_firmware(mainfw, iter->fwname, dev);
-+ if (ret) {
-+ /* Clear the helper to ensure we don't have
-+ * mismatched firmware pairs.
-+ */
-+ release_firmware(*helper);
-+ *helper = NULL;
-+ }
-+ }
-+
-+ if (*helper && *mainfw)
-+ return 0;
-+
-+ next:
-+ iter++;
-+ }
-+
-+ /* Failed */
-+ release_firmware(*helper);
-+ *helper = NULL;
-+ release_firmware(*mainfw);
-+ *mainfw = NULL;
-+
-+ return -ENOENT;
-+}
-+EXPORT_SYMBOL_GPL(lbs_get_firmware);
-diff --git a/drivers/net/wireless/libertas/if_cs.c b/drivers/net/wireless/libertas/if_cs.c
-index 171a06b..cee5052 100644
---- a/drivers/net/wireless/libertas/if_cs.c
-+++ b/drivers/net/wireless/libertas/if_cs.c
-@@ -890,8 +890,8 @@ static int if_cs_probe(struct pcmcia_device *p_dev)
- goto out2;
- }
-
-- ret = lbs_get_firmware(&p_dev->dev, NULL, NULL, card->model,
-- &fw_table[0], &helper, &mainfw);
-+ ret = lbs_get_firmware(&p_dev->dev, card->model, &fw_table[0],
-+ &helper, &mainfw);
- if (ret) {
- pr_err("failed to find firmware (%d)\n", ret);
- goto out2;
-diff --git a/drivers/net/wireless/libertas/if_sdio.c b/drivers/net/wireless/libertas/if_sdio.c
-index 15bfe2f..6590feb 100644
---- a/drivers/net/wireless/libertas/if_sdio.c
-+++ b/drivers/net/wireless/libertas/if_sdio.c
-@@ -65,12 +65,6 @@ static void if_sdio_interrupt(struct sdio_func *func);
- */
- static u8 user_rmmod;
-
--static char *lbs_helper_name = NULL;
--module_param_named(helper_name, lbs_helper_name, charp, 0644);
--
--static char *lbs_fw_name = NULL;
--module_param_named(fw_name, lbs_fw_name, charp, 0644);
--
- static const struct sdio_device_id if_sdio_ids[] = {
- { SDIO_DEVICE(SDIO_VENDOR_ID_MARVELL,
- SDIO_DEVICE_ID_MARVELL_LIBERTAS) },
-@@ -124,11 +118,6 @@ struct if_sdio_card {
- unsigned long ioport;
- unsigned int scratch_reg;
-
-- const char *helper;
-- const char *firmware;
-- bool helper_allocated;
-- bool firmware_allocated;
--
- u8 buffer[65536] __attribute__((aligned(4)));
-
- spinlock_t lock;
-@@ -725,8 +714,8 @@ static int if_sdio_prog_firmware(struct if_sdio_card *card)
- goto success;
- }
-
-- ret = lbs_get_firmware(&card->func->dev, lbs_helper_name, lbs_fw_name,
-- card->model, &fw_table[0], &helper, &mainfw);
-+ ret = lbs_get_firmware(&card->func->dev, card->model, &fw_table[0],
-+ &helper, &mainfw);
- if (ret) {
- pr_err("failed to find firmware (%d)\n", ret);
- goto out;
-@@ -1242,10 +1231,6 @@ free:
- kfree(packet);
- }
-
-- if (card->helper_allocated)
-- kfree(card->helper);
-- if (card->firmware_allocated)
-- kfree(card->firmware);
- kfree(card);
-
- goto out;
-@@ -1293,12 +1278,6 @@ static void if_sdio_remove(struct sdio_func *func)
- kfree(packet);
- }
-
-- if (card->helper_allocated)
-- kfree(card->helper);
-- if (card->firmware_allocated)
-- kfree(card->firmware);
-- kfree(card);
--
- lbs_deb_leave(LBS_DEB_SDIO);
- }
-
-diff --git a/drivers/net/wireless/libertas/if_spi.c b/drivers/net/wireless/libertas/if_spi.c
-index 7a5df4f..9604a1c 100644
---- a/drivers/net/wireless/libertas/if_spi.c
-+++ b/drivers/net/wireless/libertas/if_spi.c
-@@ -1064,9 +1064,8 @@ static int if_spi_init_card(struct if_spi_card *card)
- goto out;
- }
-
-- err = lbs_get_firmware(&card->spi->dev, NULL, NULL,
-- card->card_id, &fw_table[0], &helper,
-- &mainfw);
-+ err = lbs_get_firmware(&card->spi->dev, card->card_id,
-+ &fw_table[0], &helper, &mainfw);
- if (err) {
- netdev_err(priv->dev, "failed to find firmware (%d)\n",
- err);
-diff --git a/drivers/net/wireless/libertas/if_usb.c b/drivers/net/wireless/libertas/if_usb.c
-index ce4938d..f29471b 100644
---- a/drivers/net/wireless/libertas/if_usb.c
-+++ b/drivers/net/wireless/libertas/if_usb.c
-@@ -29,9 +29,6 @@
-
- #define MESSAGE_HEADER_LEN 4
-
--static char *lbs_fw_name = NULL;
--module_param_named(fw_name, lbs_fw_name, charp, 0644);
--
- MODULE_FIRMWARE("libertas/usb8388_v9.bin");
- MODULE_FIRMWARE("libertas/usb8388_v5.bin");
- MODULE_FIRMWARE("libertas/usb8388.bin");
-@@ -55,10 +52,7 @@ MODULE_DEVICE_TABLE(usb, if_usb_table);
-
- static void if_usb_receive(struct urb *urb);
- static void if_usb_receive_fwload(struct urb *urb);
--static int __if_usb_prog_firmware(struct if_usb_card *cardp,
-- const char *fwname, int cmd);
--static int if_usb_prog_firmware(struct if_usb_card *cardp,
-- const char *fwname, int cmd);
-+static int if_usb_prog_firmware(struct if_usb_card *cardp);
- static int if_usb_host_to_card(struct lbs_private *priv, uint8_t type,
- uint8_t *payload, uint16_t nb);
- static int usb_tx_block(struct if_usb_card *cardp, uint8_t *payload,
-@@ -67,69 +61,6 @@ static void if_usb_free(struct if_usb_card *cardp);
- static int if_usb_submit_rx_urb(struct if_usb_card *cardp);
- static int if_usb_reset_device(struct if_usb_card *cardp);
-
--/* sysfs hooks */
--
--/*
-- * Set function to write firmware to device's persistent memory
-- */
--static ssize_t if_usb_firmware_set(struct device *dev,
-- struct device_attribute *attr, const char *buf, size_t count)
--{
-- struct lbs_private *priv = to_net_dev(dev)->ml_priv;
-- struct if_usb_card *cardp = priv->card;
-- int ret;
--
-- BUG_ON(buf == NULL);
--
-- ret = if_usb_prog_firmware(cardp, buf, BOOT_CMD_UPDATE_FW);
-- if (ret == 0)
-- return count;
--
-- return ret;
--}
--
--/*
-- * lbs_flash_fw attribute to be exported per ethX interface through sysfs
-- * (/sys/class/net/ethX/lbs_flash_fw). Use this like so to write firmware to
-- * the device's persistent memory:
-- * echo usb8388-5.126.0.p5.bin > /sys/class/net/ethX/lbs_flash_fw
-- */
--static DEVICE_ATTR(lbs_flash_fw, 0200, NULL, if_usb_firmware_set);
--
--/**
-- * if_usb_boot2_set - write firmware to device's persistent memory
-- *
-- * @dev: target device
-- * @attr: device attributes
-- * @buf: firmware buffer to write
-- * @count: number of bytes to write
-- *
-- * returns: number of bytes written or negative error code
-- */
--static ssize_t if_usb_boot2_set(struct device *dev,
-- struct device_attribute *attr, const char *buf, size_t count)
--{
-- struct lbs_private *priv = to_net_dev(dev)->ml_priv;
-- struct if_usb_card *cardp = priv->card;
-- int ret;
--
-- BUG_ON(buf == NULL);
--
-- ret = if_usb_prog_firmware(cardp, buf, BOOT_CMD_UPDATE_BOOT2);
-- if (ret == 0)
-- return count;
--
-- return ret;
--}
--
--/*
-- * lbs_flash_boot2 attribute to be exported per ethX interface through sysfs
-- * (/sys/class/net/ethX/lbs_flash_boot2). Use this like so to write firmware
-- * to the device's persistent memory:
-- * echo usb8388-5.126.0.p5.bin > /sys/class/net/ethX/lbs_flash_boot2
-- */
--static DEVICE_ATTR(lbs_flash_boot2, 0200, NULL, if_usb_boot2_set);
--
- /**
- * if_usb_write_bulk_callback - callback function to handle the status
- * of the URB
-@@ -314,13 +245,10 @@ static int if_usb_probe(struct usb_interface *intf,
- }
-
- /* Upload firmware */
-- kparam_block_sysfs_write(fw_name);
-- if (__if_usb_prog_firmware(cardp, lbs_fw_name, BOOT_CMD_FW_BY_USB)) {
-- kparam_unblock_sysfs_write(fw_name);
-+ if (if_usb_prog_firmware(cardp)) {
- lbs_deb_usbd(&udev->dev, "FW upload failed\n");
- goto err_prog_firmware;
- }
-- kparam_unblock_sysfs_write(fw_name);
-
- if (!(priv = lbs_add_card(cardp, &intf->dev)))
- goto err_prog_firmware;
-@@ -349,14 +277,6 @@ static int if_usb_probe(struct usb_interface *intf,
- usb_get_dev(udev);
- usb_set_intfdata(intf, cardp);
-
-- if (device_create_file(&priv->dev->dev, &dev_attr_lbs_flash_fw))
-- netdev_err(priv->dev,
-- "cannot register lbs_flash_fw attribute\n");
--
-- if (device_create_file(&priv->dev->dev, &dev_attr_lbs_flash_boot2))
-- netdev_err(priv->dev,
-- "cannot register lbs_flash_boot2 attribute\n");
--
- /*
- * EHS_REMOVE_WAKEUP is not supported on all versions of the firmware.
- */
-@@ -389,9 +309,6 @@ static void if_usb_disconnect(struct usb_interface *intf)
-
- lbs_deb_enter(LBS_DEB_MAIN);
-
-- device_remove_file(&priv->dev->dev, &dev_attr_lbs_flash_boot2);
-- device_remove_file(&priv->dev->dev, &dev_attr_lbs_flash_fw);
--
- cardp->surprise_removed = 1;
-
- if (priv) {
-@@ -912,58 +829,12 @@ static int check_fwfile_format(const uint8_t *data, uint32_t totlen)
- return ret;
- }
-
--
--/**
--* if_usb_prog_firmware - programs the firmware subject to cmd
--*
--* @cardp: the if_usb_card descriptor
--* @fwname: firmware or boot2 image file name
--* @cmd: either BOOT_CMD_FW_BY_USB, BOOT_CMD_UPDATE_FW,
--* or BOOT_CMD_UPDATE_BOOT2.
--* returns: 0 or error code
--*/
--static int if_usb_prog_firmware(struct if_usb_card *cardp,
-- const char *fwname, int cmd)
--{
-- struct lbs_private *priv = cardp->priv;
-- unsigned long flags, caps;
-- int ret;
--
-- caps = priv->fwcapinfo;
-- if (((cmd == BOOT_CMD_UPDATE_FW) && !(caps & FW_CAPINFO_FIRMWARE_UPGRADE)) ||
-- ((cmd == BOOT_CMD_UPDATE_BOOT2) && !(caps & FW_CAPINFO_BOOT2_UPGRADE)))
-- return -EOPNOTSUPP;
--
-- /* Ensure main thread is idle. */
-- spin_lock_irqsave(&priv->driver_lock, flags);
-- while (priv->cur_cmd != NULL || priv->dnld_sent != DNLD_RES_RECEIVED) {
-- spin_unlock_irqrestore(&priv->driver_lock, flags);
-- if (wait_event_interruptible(priv->waitq,
-- (priv->cur_cmd == NULL &&
-- priv->dnld_sent == DNLD_RES_RECEIVED))) {
-- return -ERESTARTSYS;
-- }
-- spin_lock_irqsave(&priv->driver_lock, flags);
-- }
-- priv->dnld_sent = DNLD_BOOTCMD_SENT;
-- spin_unlock_irqrestore(&priv->driver_lock, flags);
--
-- ret = __if_usb_prog_firmware(cardp, fwname, cmd);
--
-- spin_lock_irqsave(&priv->driver_lock, flags);
-- priv->dnld_sent = DNLD_RES_RECEIVED;
-- spin_unlock_irqrestore(&priv->driver_lock, flags);
--
-- wake_up(&priv->waitq);
--
-- return ret;
--}
--
- /* table of firmware file names */
- static const struct {
- u32 model;
- const char *fwname;
- } fw_table[] = {
-+ { MODEL_8388, "libertas/usb8388_olpc.bin" },
- { MODEL_8388, "libertas/usb8388_v9.bin" },
- { MODEL_8388, "libertas/usb8388_v5.bin" },
- { MODEL_8388, "libertas/usb8388.bin" },
-@@ -971,35 +842,10 @@ static const struct {
- { MODEL_8682, "libertas/usb8682.bin" }
- };
-
--#ifdef CONFIG_OLPC
--
--static int try_olpc_fw(struct if_usb_card *cardp)
--{
-- int retval = -ENOENT;
--
-- /* try the OLPC firmware first; fall back to fw_table list */
-- if (machine_is_olpc() && cardp->model == MODEL_8388)
-- retval = request_firmware(&cardp->fw,
-- "libertas/usb8388_olpc.bin", &cardp->udev->dev);
-- return retval;
--}
--
--#else
--static int try_olpc_fw(struct if_usb_card *cardp) { return -ENOENT; }
--#endif /* !CONFIG_OLPC */
--
--static int get_fw(struct if_usb_card *cardp, const char *fwname)
-+static int get_fw(struct if_usb_card *cardp)
- {
- int i;
-
-- /* Try user-specified firmware first */
-- if (fwname)
-- return request_firmware(&cardp->fw, fwname, &cardp->udev->dev);
--
-- /* Handle OLPC firmware */
-- if (try_olpc_fw(cardp) == 0)
-- return 0;
--
- /* Otherwise search for firmware to use */
- for (i = 0; i < ARRAY_SIZE(fw_table); i++) {
- if (fw_table[i].model != cardp->model)
-@@ -1012,8 +858,7 @@ static int get_fw(struct if_usb_card *cardp, const char *fwname)
- return -ENOENT;
- }
-
--static int __if_usb_prog_firmware(struct if_usb_card *cardp,
-- const char *fwname, int cmd)
-+static int if_usb_prog_firmware(struct if_usb_card *cardp)
- {
- int i = 0;
- static int reset_count = 10;
-@@ -1021,7 +866,7 @@ static int __if_usb_prog_firmware(struct if_usb_card *cardp,
-
- lbs_deb_enter(LBS_DEB_USB);
-
-- ret = get_fw(cardp, fwname);
-+ ret = get_fw(cardp);
- if (ret) {
- pr_err("failed to find firmware (%d)\n", ret);
- goto done;
-@@ -1053,7 +898,7 @@ restart:
- do {
- int j = 0;
- i++;
-- if_usb_issue_boot_command(cardp, cmd);
-+ if_usb_issue_boot_command(cardp, BOOT_CMD_FW_BY_USB);
- /* wait for command response */
- do {
- j++;
-diff --git a/drivers/net/wireless/libertas/main.c b/drivers/net/wireless/libertas/main.c
-index 3b81b70..fa09585 100644
---- a/drivers/net/wireless/libertas/main.c
-+++ b/drivers/net/wireless/libertas/main.c
-@@ -1177,107 +1177,6 @@ void lbs_notify_command_response(struct lbs_private *priv, u8 resp_idx)
- }
- EXPORT_SYMBOL_GPL(lbs_notify_command_response);
-
--/**
-- * lbs_get_firmware - Retrieves two-stage firmware
-- *
-- * @dev: A pointer to &device structure
-- * @user_helper: User-defined helper firmware file
-- * @user_mainfw: User-defined main firmware file
-- * @card_model: Bus-specific card model ID used to filter firmware table
-- * elements
-- * @fw_table: Table of firmware file names and device model numbers
-- * terminated by an entry with a NULL helper name
-- * @helper: On success, the helper firmware; caller must free
-- * @mainfw: On success, the main firmware; caller must free
-- *
-- * returns: 0 on success, non-zero on failure
-- */
--int lbs_get_firmware(struct device *dev, const char *user_helper,
-- const char *user_mainfw, u32 card_model,
-- const struct lbs_fw_table *fw_table,
-- const struct firmware **helper,
-- const struct firmware **mainfw)
--{
-- const struct lbs_fw_table *iter;
-- int ret;
--
-- BUG_ON(helper == NULL);
-- BUG_ON(mainfw == NULL);
--
-- /* Try user-specified firmware first */
-- if (user_helper) {
-- ret = request_firmware(helper, user_helper, dev);
-- if (ret) {
-- dev_err(dev, "couldn't find helper firmware %s\n",
-- user_helper);
-- goto fail;
-- }
-- }
-- if (user_mainfw) {
-- ret = request_firmware(mainfw, user_mainfw, dev);
-- if (ret) {
-- dev_err(dev, "couldn't find main firmware %s\n",
-- user_mainfw);
-- goto fail;
-- }
-- }
--
-- if (*helper && *mainfw)
-- return 0;
--
-- /* Otherwise search for firmware to use. If neither the helper or
-- * the main firmware were specified by the user, then we need to
-- * make sure that found helper & main are from the same entry in
-- * fw_table.
-- */
-- iter = fw_table;
-- while (iter && iter->helper) {
-- if (iter->model != card_model)
-- goto next;
--
-- if (*helper == NULL) {
-- ret = request_firmware(helper, iter->helper, dev);
-- if (ret)
-- goto next;
--
-- /* If the device has one-stage firmware (ie cf8305) and
-- * we've got it then we don't need to bother with the
-- * main firmware.
-- */
-- if (iter->fwname == NULL)
-- return 0;
-- }
--
-- if (*mainfw == NULL) {
-- ret = request_firmware(mainfw, iter->fwname, dev);
-- if (ret && !user_helper) {
-- /* Clear the helper if it wasn't user-specified
-- * and the main firmware load failed, to ensure
-- * we don't have mismatched firmware pairs.
-- */
-- release_firmware(*helper);
-- *helper = NULL;
-- }
-- }
--
-- if (*helper && *mainfw)
-- return 0;
--
-- next:
-- iter++;
-- }
--
-- fail:
-- /* Failed */
-- release_firmware(*helper);
-- *helper = NULL;
-- release_firmware(*mainfw);
-- *mainfw = NULL;
--
-- return -ENOENT;
--}
--EXPORT_SYMBOL_GPL(lbs_get_firmware);
--
- static int __init lbs_init_module(void)
- {
- lbs_deb_enter(LBS_DEB_MAIN);
---
-1.7.4.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/libertas/0011-libertas-harden-up-exit-paths.patch b/recipes-kernel/linux/linux-mainline-3.2/libertas/0011-libertas-harden-up-exit-paths.patch
deleted file mode 100644
index 4891dea..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/libertas/0011-libertas-harden-up-exit-paths.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 0beecac8abb3af890d470df541142d55343382d6 Mon Sep 17 00:00:00 2001
-From: Daniel Drake <dsd at laptop.org>
-Date: Mon, 16 Apr 2012 23:53:02 +0100
-Subject: [PATCH 11/17] libertas: harden-up exit paths
-
-These simple sanity check avoids extra complexity in error paths when
-moving to asynchronous firmware loading (which means the device may fail to
-init some time after its creation).
-
-Signed-off-by: Daniel Drake <dsd at laptop.org>
-Acked-by: Dan Williams <dcbw at redhat.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
----
- drivers/net/wireless/libertas/main.c | 9 ++++++++-
- 1 files changed, 8 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/net/wireless/libertas/main.c b/drivers/net/wireless/libertas/main.c
-index fa09585..7eaf992 100644
---- a/drivers/net/wireless/libertas/main.c
-+++ b/drivers/net/wireless/libertas/main.c
-@@ -1033,7 +1033,9 @@ void lbs_remove_card(struct lbs_private *priv)
- lbs_deb_enter(LBS_DEB_MAIN);
-
- lbs_remove_mesh(priv);
-- lbs_scan_deinit(priv);
-+
-+ if (priv->wiphy_registered)
-+ lbs_scan_deinit(priv);
-
- /* worker thread destruction blocks on the in-flight command which
- * should have been cleared already in lbs_stop_card().
-@@ -1128,6 +1130,11 @@ void lbs_stop_card(struct lbs_private *priv)
- goto out;
- dev = priv->dev;
-
-+ /* If the netdev isn't registered, it means that lbs_start_card() was
-+ * never called so we have nothing to do here. */
-+ if (dev->reg_state != NETREG_REGISTERED)
-+ goto out;
-+
- netif_stop_queue(dev);
- netif_carrier_off(dev);
-
---
-1.7.4.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/libertas/0012-libertas-add-asynchronous-firmware-loading-capabilit.patch b/recipes-kernel/linux/linux-mainline-3.2/libertas/0012-libertas-add-asynchronous-firmware-loading-capabilit.patch
deleted file mode 100644
index 58963b3..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/libertas/0012-libertas-add-asynchronous-firmware-loading-capabilit.patch
+++ /dev/null
@@ -1,269 +0,0 @@
-From 534111c78c59a8db89c570fd07489243dc366a05 Mon Sep 17 00:00:00 2001
-From: Daniel Drake <dsd at laptop.org>
-Date: Mon, 16 Apr 2012 23:53:26 +0100
-Subject: [PATCH 12/17] libertas: add asynchronous firmware loading capability
-
-As described at
-http://article.gmane.org/gmane.linux.kernel.wireless.general/86084
-libertas is taking a long time to load because it loads firmware
-during module loading.
-
-Add a new API for interface drivers to load their firmware
-asynchronously. The same semantics of the firmware table are followed
-like before.
-
-Interface drivers will be converted in follow-up patches, then we can
-remove the old, synchronous firmware loading function.
-
-Signed-off-by: Daniel Drake <dsd at laptop.org>
-Acked-by: Dan Williams <dcbw at redhat.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
----
- drivers/net/wireless/libertas/decl.h | 8 ++
- drivers/net/wireless/libertas/dev.h | 10 ++
- drivers/net/wireless/libertas/firmware.c | 143 ++++++++++++++++++++++++++++++
- drivers/net/wireless/libertas/main.c | 3 +
- 4 files changed, 164 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/net/wireless/libertas/decl.h b/drivers/net/wireless/libertas/decl.h
-index 2fb2e31..84a3aa7 100644
---- a/drivers/net/wireless/libertas/decl.h
-+++ b/drivers/net/wireless/libertas/decl.h
-@@ -19,6 +19,10 @@ struct lbs_fw_table {
- };
-
- struct lbs_private;
-+typedef void (*lbs_fw_cb)(struct lbs_private *priv, int ret,
-+ const struct firmware *helper, const struct firmware *mainfw);
-+
-+struct lbs_private;
- struct sk_buff;
- struct net_device;
- struct cmd_ds_command;
-@@ -70,5 +74,9 @@ int lbs_get_firmware(struct device *dev, u32 card_model,
- const struct lbs_fw_table *fw_table,
- const struct firmware **helper,
- const struct firmware **mainfw);
-+int lbs_get_firmware_async(struct lbs_private *priv, struct device *device,
-+ u32 card_model, const struct lbs_fw_table *fw_table,
-+ lbs_fw_cb callback);
-+void lbs_wait_for_firmware_load(struct lbs_private *priv);
-
- #endif
-diff --git a/drivers/net/wireless/libertas/dev.h b/drivers/net/wireless/libertas/dev.h
-index f3fd447..6720054 100644
---- a/drivers/net/wireless/libertas/dev.h
-+++ b/drivers/net/wireless/libertas/dev.h
-@@ -7,6 +7,7 @@
- #define _LBS_DEV_H_
-
- #include "defs.h"
-+#include "decl.h"
- #include "host.h"
-
- #include <linux/kfifo.h>
-@@ -180,6 +181,15 @@ struct lbs_private {
- wait_queue_head_t scan_q;
- /* Whether the scan was initiated internally and not by cfg80211 */
- bool internal_scan;
-+
-+ /* Firmware load */
-+ u32 fw_model;
-+ wait_queue_head_t fw_waitq;
-+ struct device *fw_device;
-+ const struct firmware *helper_fw;
-+ const struct lbs_fw_table *fw_table;
-+ const struct lbs_fw_table *fw_iter;
-+ lbs_fw_cb fw_callback;
- };
-
- extern struct cmd_confirm_sleep confirm_sleep;
-diff --git a/drivers/net/wireless/libertas/firmware.c b/drivers/net/wireless/libertas/firmware.c
-index 0c8c845..cd23f1a 100644
---- a/drivers/net/wireless/libertas/firmware.c
-+++ b/drivers/net/wireless/libertas/firmware.c
-@@ -3,10 +3,151 @@
- */
-
- #include <linux/firmware.h>
-+#include <linux/firmware.h>
- #include <linux/module.h>
-
-+#include "dev.h"
- #include "decl.h"
-
-+static void load_next_firmware_from_table(struct lbs_private *private);
-+
-+static void lbs_fw_loaded(struct lbs_private *priv, int ret,
-+ const struct firmware *helper, const struct firmware *mainfw)
-+{
-+ unsigned long flags;
-+
-+ lbs_deb_fw("firmware load complete, code %d\n", ret);
-+
-+ /* User must free helper/mainfw */
-+ priv->fw_callback(priv, ret, helper, mainfw);
-+
-+ spin_lock_irqsave(&priv->driver_lock, flags);
-+ priv->fw_callback = NULL;
-+ wake_up(&priv->fw_waitq);
-+ spin_unlock_irqrestore(&priv->driver_lock, flags);
-+}
-+
-+static void do_load_firmware(struct lbs_private *priv, const char *name,
-+ void (*cb)(const struct firmware *fw, void *context))
-+{
-+ int ret;
-+
-+ lbs_deb_fw("Requesting %s\n", name);
-+ ret = request_firmware_nowait(THIS_MODULE, true, name,
-+ priv->fw_device, GFP_KERNEL, priv, cb);
-+ if (ret) {
-+ lbs_deb_fw("request_firmware_nowait error %d\n", ret);
-+ lbs_fw_loaded(priv, ret, NULL, NULL);
-+ }
-+}
-+
-+static void main_firmware_cb(const struct firmware *firmware, void *context)
-+{
-+ struct lbs_private *priv = context;
-+
-+ if (!firmware) {
-+ /* Failed to find firmware: try next table entry */
-+ load_next_firmware_from_table(priv);
-+ return;
-+ }
-+
-+ /* Firmware found! */
-+ lbs_fw_loaded(priv, 0, priv->helper_fw, firmware);
-+}
-+
-+static void helper_firmware_cb(const struct firmware *firmware, void *context)
-+{
-+ struct lbs_private *priv = context;
-+
-+ if (!firmware) {
-+ /* Failed to find firmware: try next table entry */
-+ load_next_firmware_from_table(priv);
-+ return;
-+ }
-+
-+ /* Firmware found! */
-+ if (priv->fw_iter->fwname) {
-+ priv->helper_fw = firmware;
-+ do_load_firmware(priv, priv->fw_iter->fwname, main_firmware_cb);
-+ } else {
-+ /* No main firmware needed for this helper --> success! */
-+ lbs_fw_loaded(priv, 0, firmware, NULL);
-+ }
-+}
-+
-+static void load_next_firmware_from_table(struct lbs_private *priv)
-+{
-+ const struct lbs_fw_table *iter;
-+
-+ if (!priv->fw_iter)
-+ iter = priv->fw_table;
-+ else
-+ iter = ++priv->fw_iter;
-+
-+ if (priv->helper_fw) {
-+ release_firmware(priv->helper_fw);
-+ priv->helper_fw = NULL;
-+ }
-+
-+next:
-+ if (!iter->helper) {
-+ /* End of table hit. */
-+ lbs_fw_loaded(priv, -ENOENT, NULL, NULL);
-+ return;
-+ }
-+
-+ if (iter->model != priv->fw_model) {
-+ iter++;
-+ goto next;
-+ }
-+
-+ priv->fw_iter = iter;
-+ do_load_firmware(priv, iter->helper, helper_firmware_cb);
-+}
-+
-+void lbs_wait_for_firmware_load(struct lbs_private *priv)
-+{
-+ wait_event(priv->fw_waitq, priv->fw_callback == NULL);
-+}
-+
-+/**
-+ * lbs_get_firmware_async - Retrieves firmware asynchronously. Can load
-+ * either a helper firmware and a main firmware (2-stage), or just the helper.
-+ *
-+ * @priv: Pointer to lbs_private instance
-+ * @dev: A pointer to &device structure
-+ * @card_model: Bus-specific card model ID used to filter firmware table
-+ * elements
-+ * @fw_table: Table of firmware file names and device model numbers
-+ * terminated by an entry with a NULL helper name
-+ * @callback: User callback to invoke when firmware load succeeds or fails.
-+ */
-+int lbs_get_firmware_async(struct lbs_private *priv, struct device *device,
-+ u32 card_model, const struct lbs_fw_table *fw_table,
-+ lbs_fw_cb callback)
-+{
-+ unsigned long flags;
-+
-+ spin_lock_irqsave(&priv->driver_lock, flags);
-+ if (priv->fw_callback) {
-+ lbs_deb_fw("firmware load already in progress\n");
-+ spin_unlock_irqrestore(&priv->driver_lock, flags);
-+ return -EBUSY;
-+ }
-+
-+ priv->fw_device = device;
-+ priv->fw_callback = callback;
-+ priv->fw_table = fw_table;
-+ priv->fw_iter = NULL;
-+ priv->fw_model = card_model;
-+ spin_unlock_irqrestore(&priv->driver_lock, flags);
-+
-+ lbs_deb_fw("Starting async firmware load\n");
-+ load_next_firmware_from_table(priv);
-+ return 0;
-+}
-+EXPORT_SYMBOL_GPL(lbs_get_firmware_async);
-+
- /**
- * lbs_get_firmware - Retrieves two-stage firmware
- *
-@@ -18,6 +159,8 @@
- * @helper: On success, the helper firmware; caller must free
- * @mainfw: On success, the main firmware; caller must free
- *
-+ * Deprecated: use lbs_get_firmware_async() instead.
-+ *
- * returns: 0 on success, non-zero on failure
- */
- int lbs_get_firmware(struct device *dev, u32 card_model,
-diff --git a/drivers/net/wireless/libertas/main.c b/drivers/net/wireless/libertas/main.c
-index 7eaf992..e96ee0a 100644
---- a/drivers/net/wireless/libertas/main.c
-+++ b/drivers/net/wireless/libertas/main.c
-@@ -878,6 +878,7 @@ static int lbs_init_adapter(struct lbs_private *priv)
- priv->is_host_sleep_configured = 0;
- priv->is_host_sleep_activated = 0;
- init_waitqueue_head(&priv->host_sleep_q);
-+ init_waitqueue_head(&priv->fw_waitq);
- mutex_init(&priv->lock);
-
- setup_timer(&priv->command_timer, lbs_cmd_timeout_handler,
-@@ -1037,6 +1038,8 @@ void lbs_remove_card(struct lbs_private *priv)
- if (priv->wiphy_registered)
- lbs_scan_deinit(priv);
-
-+ lbs_wait_for_firmware_load(priv);
-+
- /* worker thread destruction blocks on the in-flight command which
- * should have been cleared already in lbs_stop_card().
- */
---
-1.7.4.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/libertas/0013-libertas-SDIO-convert-to-asynchronous-firmware-loadi.patch b/recipes-kernel/linux/linux-mainline-3.2/libertas/0013-libertas-SDIO-convert-to-asynchronous-firmware-loadi.patch
deleted file mode 100644
index 545ea88..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/libertas/0013-libertas-SDIO-convert-to-asynchronous-firmware-loadi.patch
+++ /dev/null
@@ -1,320 +0,0 @@
-From 66d647efe5e845c77f745478480c5e96218b7f3d Mon Sep 17 00:00:00 2001
-From: Daniel Drake <dsd at laptop.org>
-Date: Mon, 16 Apr 2012 23:53:43 +0100
-Subject: [PATCH 13/17] libertas SDIO: convert to asynchronous firmware
- loading
-
-Signed-off-by: Daniel Drake <dsd at laptop.org>
-Acked-by: Dan Williams <dcbw at redhat.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
----
- drivers/net/wireless/libertas/if_sdio.c | 206 ++++++++++++++++++-------------
- 1 files changed, 121 insertions(+), 85 deletions(-)
-
-diff --git a/drivers/net/wireless/libertas/if_sdio.c b/drivers/net/wireless/libertas/if_sdio.c
-index 6590feb..76caeba 100644
---- a/drivers/net/wireless/libertas/if_sdio.c
-+++ b/drivers/net/wireless/libertas/if_sdio.c
-@@ -117,6 +117,8 @@ struct if_sdio_card {
- int model;
- unsigned long ioport;
- unsigned int scratch_reg;
-+ bool started;
-+ wait_queue_head_t pwron_waitq;
-
- u8 buffer[65536] __attribute__((aligned(4)));
-
-@@ -129,6 +131,9 @@ struct if_sdio_card {
- u8 rx_unit;
- };
-
-+static void if_sdio_finish_power_on(struct if_sdio_card *card);
-+static int if_sdio_power_off(struct if_sdio_card *card);
-+
- /********************************************************************/
- /* I/O */
- /********************************************************************/
-@@ -669,12 +674,39 @@ out:
- return ret;
- }
-
-+static void if_sdio_do_prog_firmware(struct lbs_private *priv, int ret,
-+ const struct firmware *helper,
-+ const struct firmware *mainfw)
-+{
-+ struct if_sdio_card *card = priv->card;
-+
-+ if (ret) {
-+ pr_err("failed to find firmware (%d)\n", ret);
-+ return;
-+ }
-+
-+ ret = if_sdio_prog_helper(card, helper);
-+ if (ret)
-+ goto out;
-+
-+ lbs_deb_sdio("Helper firmware loaded\n");
-+
-+ ret = if_sdio_prog_real(card, mainfw);
-+ if (ret)
-+ goto out;
-+
-+ lbs_deb_sdio("Firmware loaded\n");
-+ if_sdio_finish_power_on(card);
-+
-+out:
-+ release_firmware(helper);
-+ release_firmware(mainfw);
-+}
-+
- static int if_sdio_prog_firmware(struct if_sdio_card *card)
- {
- int ret;
- u16 scratch;
-- const struct firmware *helper = NULL;
-- const struct firmware *mainfw = NULL;
-
- lbs_deb_enter(LBS_DEB_SDIO);
-
-@@ -708,41 +740,18 @@ static int if_sdio_prog_firmware(struct if_sdio_card *card)
- */
- if (scratch == IF_SDIO_FIRMWARE_OK) {
- lbs_deb_sdio("firmware already loaded\n");
-- goto success;
-+ if_sdio_finish_power_on(card);
-+ return 0;
- } else if ((card->model == MODEL_8686) && (scratch & 0x7fff)) {
- lbs_deb_sdio("firmware may be running\n");
-- goto success;
-- }
--
-- ret = lbs_get_firmware(&card->func->dev, card->model, &fw_table[0],
-- &helper, &mainfw);
-- if (ret) {
-- pr_err("failed to find firmware (%d)\n", ret);
-- goto out;
-+ if_sdio_finish_power_on(card);
-+ return 0;
- }
-
-- ret = if_sdio_prog_helper(card, helper);
-- if (ret)
-- goto out;
--
-- lbs_deb_sdio("Helper firmware loaded\n");
--
-- ret = if_sdio_prog_real(card, mainfw);
-- if (ret)
-- goto out;
--
-- lbs_deb_sdio("Firmware loaded\n");
--
--success:
-- sdio_claim_host(card->func);
-- sdio_set_block_size(card->func, IF_SDIO_BLOCK_SIZE);
-- sdio_release_host(card->func);
-- ret = 0;
-+ ret = lbs_get_firmware_async(card->priv, &card->func->dev, card->model,
-+ fw_table, if_sdio_do_prog_firmware);
-
- out:
-- release_firmware(helper);
-- release_firmware(mainfw);
--
- lbs_deb_leave_args(LBS_DEB_SDIO, "ret %d", ret);
- return ret;
- }
-@@ -751,55 +760,15 @@ out:
- /* Power management */
- /********************************************************************/
-
--static int if_sdio_power_on(struct if_sdio_card *card)
-+/* Finish power on sequence (after firmware is loaded) */
-+static void if_sdio_finish_power_on(struct if_sdio_card *card)
- {
- struct sdio_func *func = card->func;
- struct lbs_private *priv = card->priv;
-- struct mmc_host *host = func->card->host;
- int ret;
-
- sdio_claim_host(func);
--
-- ret = sdio_enable_func(func);
-- if (ret)
-- goto release;
--
-- /* For 1-bit transfers to the 8686 model, we need to enable the
-- * interrupt flag in the CCCR register. Set the MMC_QUIRK_LENIENT_FN0
-- * bit to allow access to non-vendor registers. */
-- if ((card->model == MODEL_8686) &&
-- (host->caps & MMC_CAP_SDIO_IRQ) &&
-- (host->ios.bus_width == MMC_BUS_WIDTH_1)) {
-- u8 reg;
--
-- func->card->quirks |= MMC_QUIRK_LENIENT_FN0;
-- reg = sdio_f0_readb(func, SDIO_CCCR_IF, &ret);
-- if (ret)
-- goto disable;
--
-- reg |= SDIO_BUS_ECSI;
-- sdio_f0_writeb(func, reg, SDIO_CCCR_IF, &ret);
-- if (ret)
-- goto disable;
-- }
--
-- card->ioport = sdio_readb(func, IF_SDIO_IOPORT, &ret);
-- if (ret)
-- goto disable;
--
-- card->ioport |= sdio_readb(func, IF_SDIO_IOPORT + 1, &ret) << 8;
-- if (ret)
-- goto disable;
--
-- card->ioport |= sdio_readb(func, IF_SDIO_IOPORT + 2, &ret) << 16;
-- if (ret)
-- goto disable;
--
-- sdio_release_host(func);
-- ret = if_sdio_prog_firmware(card);
-- sdio_claim_host(func);
-- if (ret)
-- goto disable;
-+ sdio_set_block_size(card->func, IF_SDIO_BLOCK_SIZE);
-
- /*
- * Get rx_unit if the chip is SD8688 or newer.
-@@ -824,7 +793,7 @@ static int if_sdio_power_on(struct if_sdio_card *card)
- */
- ret = sdio_claim_irq(func, if_sdio_interrupt);
- if (ret)
-- goto disable;
-+ goto release;
-
- /*
- * Enable interrupts now that everything is set up
-@@ -850,11 +819,79 @@ static int if_sdio_power_on(struct if_sdio_card *card)
- }
-
- priv->fw_ready = 1;
-+ wake_up(&card->pwron_waitq);
-
-- return 0;
-+ if (!card->started) {
-+ ret = lbs_start_card(priv);
-+ if_sdio_power_off(card);
-+ if (ret == 0) {
-+ card->started = true;
-+ /* Tell PM core that we don't need the card to be
-+ * powered now */
-+ pm_runtime_put_noidle(&func->dev);
-+ }
-+ }
-+
-+ return;
-
- release_irq:
- sdio_release_irq(func);
-+release:
-+ sdio_release_host(func);
-+}
-+
-+static int if_sdio_power_on(struct if_sdio_card *card)
-+{
-+ struct sdio_func *func = card->func;
-+ struct mmc_host *host = func->card->host;
-+ int ret;
-+
-+ sdio_claim_host(func);
-+
-+ ret = sdio_enable_func(func);
-+ if (ret)
-+ goto release;
-+
-+ /* For 1-bit transfers to the 8686 model, we need to enable the
-+ * interrupt flag in the CCCR register. Set the MMC_QUIRK_LENIENT_FN0
-+ * bit to allow access to non-vendor registers. */
-+ if ((card->model == MODEL_8686) &&
-+ (host->caps & MMC_CAP_SDIO_IRQ) &&
-+ (host->ios.bus_width == MMC_BUS_WIDTH_1)) {
-+ u8 reg;
-+
-+ func->card->quirks |= MMC_QUIRK_LENIENT_FN0;
-+ reg = sdio_f0_readb(func, SDIO_CCCR_IF, &ret);
-+ if (ret)
-+ goto disable;
-+
-+ reg |= SDIO_BUS_ECSI;
-+ sdio_f0_writeb(func, reg, SDIO_CCCR_IF, &ret);
-+ if (ret)
-+ goto disable;
-+ }
-+
-+ card->ioport = sdio_readb(func, IF_SDIO_IOPORT, &ret);
-+ if (ret)
-+ goto disable;
-+
-+ card->ioport |= sdio_readb(func, IF_SDIO_IOPORT + 1, &ret) << 8;
-+ if (ret)
-+ goto disable;
-+
-+ card->ioport |= sdio_readb(func, IF_SDIO_IOPORT + 2, &ret) << 16;
-+ if (ret)
-+ goto disable;
-+
-+ sdio_release_host(func);
-+ ret = if_sdio_prog_firmware(card);
-+ if (ret) {
-+ sdio_disable_func(func);
-+ return ret;
-+ }
-+
-+ return 0;
-+
- disable:
- sdio_disable_func(func);
- release:
-@@ -1061,11 +1098,17 @@ static int if_sdio_power_save(struct lbs_private *priv)
- static int if_sdio_power_restore(struct lbs_private *priv)
- {
- struct if_sdio_card *card = priv->card;
-+ int r;
-
- /* Make sure the card will not be powered off by runtime PM */
- pm_runtime_get_sync(&card->func->dev);
-
-- return if_sdio_power_on(card);
-+ r = if_sdio_power_on(card);
-+ if (r)
-+ return r;
-+
-+ wait_event(card->pwron_waitq, priv->fw_ready);
-+ return 0;
- }
-
-
-@@ -1166,6 +1209,7 @@ static int if_sdio_probe(struct sdio_func *func,
- spin_lock_init(&card->lock);
- card->workqueue = create_workqueue("libertas_sdio");
- INIT_WORK(&card->packet_worker, if_sdio_host_to_card_worker);
-+ init_waitqueue_head(&card->pwron_waitq);
-
- /* Check if we support this card */
- for (i = 0; i < ARRAY_SIZE(fw_table); i++) {
-@@ -1207,14 +1251,6 @@ static int if_sdio_probe(struct sdio_func *func,
- if (ret)
- goto err_activate_card;
-
-- ret = lbs_start_card(priv);
-- if_sdio_power_off(card);
-- if (ret)
-- goto err_activate_card;
--
-- /* Tell PM core that we don't need the card to be powered now */
-- pm_runtime_put_noidle(&func->dev);
--
- out:
- lbs_deb_leave_args(LBS_DEB_SDIO, "ret %d", ret);
-
---
-1.7.4.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/libertas/0014-libertas-USB-convert-to-asynchronous-firmware-loadin.patch b/recipes-kernel/linux/linux-mainline-3.2/libertas/0014-libertas-USB-convert-to-asynchronous-firmware-loadin.patch
deleted file mode 100644
index 9952cd3..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/libertas/0014-libertas-USB-convert-to-asynchronous-firmware-loadin.patch
+++ /dev/null
@@ -1,201 +0,0 @@
-From ce84bb69f50e6f6cfeabc9b965365290f4184417 Mon Sep 17 00:00:00 2001
-From: Daniel Drake <dsd at laptop.org>
-Date: Mon, 16 Apr 2012 23:53:55 +0100
-Subject: [PATCH 14/17] libertas USB: convert to asynchronous firmware loading
-
-Signed-off-by: Daniel Drake <dsd at laptop.org>
-Acked-by: Dan Williams <dcbw at redhat.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
----
- drivers/net/wireless/libertas/if_usb.c | 102 +++++++++++++------------------
- 1 files changed, 43 insertions(+), 59 deletions(-)
-
-diff --git a/drivers/net/wireless/libertas/if_usb.c b/drivers/net/wireless/libertas/if_usb.c
-index f29471b..75403e6 100644
---- a/drivers/net/wireless/libertas/if_usb.c
-+++ b/drivers/net/wireless/libertas/if_usb.c
-@@ -41,6 +41,16 @@ enum {
- MODEL_8682 = 0x2
- };
-
-+/* table of firmware file names */
-+static const struct lbs_fw_table fw_table[] = {
-+ { MODEL_8388, "libertas/usb8388_olpc.bin", NULL },
-+ { MODEL_8388, "libertas/usb8388_v9.bin", NULL },
-+ { MODEL_8388, "libertas/usb8388_v5.bin", NULL },
-+ { MODEL_8388, "libertas/usb8388.bin", NULL },
-+ { MODEL_8388, "usb8388.bin", NULL },
-+ { MODEL_8682, "libertas/usb8682.bin", NULL }
-+};
-+
- static struct usb_device_id if_usb_table[] = {
- /* Enter the device signature inside */
- { USB_DEVICE(0x1286, 0x2001), .driver_info = MODEL_8388 },
-@@ -52,7 +62,9 @@ MODULE_DEVICE_TABLE(usb, if_usb_table);
-
- static void if_usb_receive(struct urb *urb);
- static void if_usb_receive_fwload(struct urb *urb);
--static int if_usb_prog_firmware(struct if_usb_card *cardp);
-+static void if_usb_prog_firmware(struct lbs_private *priv, int ret,
-+ const struct firmware *fw,
-+ const struct firmware *unused);
- static int if_usb_host_to_card(struct lbs_private *priv, uint8_t type,
- uint8_t *payload, uint16_t nb);
- static int usb_tx_block(struct if_usb_card *cardp, uint8_t *payload,
-@@ -187,6 +199,7 @@ static int if_usb_probe(struct usb_interface *intf,
- struct usb_endpoint_descriptor *endpoint;
- struct lbs_private *priv;
- struct if_usb_card *cardp;
-+ int r = -ENOMEM;
- int i;
-
- udev = interface_to_usbdev(intf);
-@@ -244,17 +257,10 @@ static int if_usb_probe(struct usb_interface *intf,
- goto dealloc;
- }
-
-- /* Upload firmware */
-- if (if_usb_prog_firmware(cardp)) {
-- lbs_deb_usbd(&udev->dev, "FW upload failed\n");
-- goto err_prog_firmware;
-- }
--
- if (!(priv = lbs_add_card(cardp, &intf->dev)))
-- goto err_prog_firmware;
-+ goto err_add_card;
-
- cardp->priv = priv;
-- cardp->priv->fw_ready = 1;
-
- priv->hw_host_to_card = if_usb_host_to_card;
- priv->enter_deep_sleep = NULL;
-@@ -267,34 +273,25 @@ static int if_usb_probe(struct usb_interface *intf,
-
- cardp->boot2_version = udev->descriptor.bcdDevice;
-
-- if_usb_submit_rx_urb(cardp);
--
-- if (lbs_start_card(priv))
-- goto err_start_card;
--
-- if_usb_setup_firmware(priv);
--
- usb_get_dev(udev);
- usb_set_intfdata(intf, cardp);
-
-- /*
-- * EHS_REMOVE_WAKEUP is not supported on all versions of the firmware.
-- */
-- priv->wol_criteria = EHS_REMOVE_WAKEUP;
-- if (lbs_host_sleep_cfg(priv, priv->wol_criteria, NULL))
-- priv->ehs_remove_supported = false;
-+ r = lbs_get_firmware_async(priv, &udev->dev, cardp->model,
-+ fw_table, if_usb_prog_firmware);
-+ if (r)
-+ goto err_get_fw;
-
- return 0;
-
--err_start_card:
-+err_get_fw:
- lbs_remove_card(priv);
--err_prog_firmware:
-+err_add_card:
- if_usb_reset_device(cardp);
- dealloc:
- if_usb_free(cardp);
-
- error:
-- return -ENOMEM;
-+ return r;
- }
-
- /**
-@@ -829,49 +826,22 @@ static int check_fwfile_format(const uint8_t *data, uint32_t totlen)
- return ret;
- }
-
--/* table of firmware file names */
--static const struct {
-- u32 model;
-- const char *fwname;
--} fw_table[] = {
-- { MODEL_8388, "libertas/usb8388_olpc.bin" },
-- { MODEL_8388, "libertas/usb8388_v9.bin" },
-- { MODEL_8388, "libertas/usb8388_v5.bin" },
-- { MODEL_8388, "libertas/usb8388.bin" },
-- { MODEL_8388, "usb8388.bin" },
-- { MODEL_8682, "libertas/usb8682.bin" }
--};
--
--static int get_fw(struct if_usb_card *cardp)
--{
-- int i;
--
-- /* Otherwise search for firmware to use */
-- for (i = 0; i < ARRAY_SIZE(fw_table); i++) {
-- if (fw_table[i].model != cardp->model)
-- continue;
-- if (request_firmware(&cardp->fw, fw_table[i].fwname,
-- &cardp->udev->dev) == 0)
-- return 0;
-- }
--
-- return -ENOENT;
--}
--
--static int if_usb_prog_firmware(struct if_usb_card *cardp)
-+static void if_usb_prog_firmware(struct lbs_private *priv, int ret,
-+ const struct firmware *fw,
-+ const struct firmware *unused)
- {
-+ struct if_usb_card *cardp = priv->card;
- int i = 0;
- static int reset_count = 10;
-- int ret = 0;
-
- lbs_deb_enter(LBS_DEB_USB);
-
-- ret = get_fw(cardp);
- if (ret) {
- pr_err("failed to find firmware (%d)\n", ret);
- goto done;
- }
-
-+ cardp->fw = fw;
- if (check_fwfile_format(cardp->fw->data, cardp->fw->size)) {
- ret = -EINVAL;
- goto release_fw;
-@@ -954,13 +924,27 @@ restart:
- goto release_fw;
- }
-
-+ cardp->priv->fw_ready = 1;
-+ if_usb_submit_rx_urb(cardp);
-+
-+ if (lbs_start_card(priv))
-+ goto release_fw;
-+
-+ if_usb_setup_firmware(priv);
-+
-+ /*
-+ * EHS_REMOVE_WAKEUP is not supported on all versions of the firmware.
-+ */
-+ priv->wol_criteria = EHS_REMOVE_WAKEUP;
-+ if (lbs_host_sleep_cfg(priv, priv->wol_criteria, NULL))
-+ priv->ehs_remove_supported = false;
-+
- release_fw:
- release_firmware(cardp->fw);
- cardp->fw = NULL;
-
- done:
-- lbs_deb_leave_args(LBS_DEB_USB, "ret %d", ret);
-- return ret;
-+ lbs_deb_leave(LBS_DEB_USB);
- }
-
-
---
-1.7.4.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/libertas/0015-libertas-CS-convert-to-asynchronous-firmware-loading.patch b/recipes-kernel/linux/linux-mainline-3.2/libertas/0015-libertas-CS-convert-to-asynchronous-firmware-loading.patch
deleted file mode 100644
index 79aafdc..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/libertas/0015-libertas-CS-convert-to-asynchronous-firmware-loading.patch
+++ /dev/null
@@ -1,154 +0,0 @@
-From 488c3ee77ea0e63c9ae4736b1610aaf39c6527ee Mon Sep 17 00:00:00 2001
-From: Daniel Drake <dsd at laptop.org>
-Date: Wed, 18 Apr 2012 20:09:44 +0100
-Subject: [PATCH 15/17] libertas CS: convert to asynchronous firmware loading
-
-Signed-off-by: Daniel Drake <dsd at laptop.org>
-Tested-by: Dan Williams <dcbw at redhat.com>
-Acked-by: Dan Williams <dcbw at redhat.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
----
- drivers/net/wireless/libertas/if_cs.c | 88 ++++++++++++++++++--------------
- 1 files changed, 49 insertions(+), 39 deletions(-)
-
-diff --git a/drivers/net/wireless/libertas/if_cs.c b/drivers/net/wireless/libertas/if_cs.c
-index cee5052..16beaf3 100644
---- a/drivers/net/wireless/libertas/if_cs.c
-+++ b/drivers/net/wireless/libertas/if_cs.c
-@@ -738,6 +738,50 @@ done:
- return ret;
- }
-
-+static void if_cs_prog_firmware(struct lbs_private *priv, int ret,
-+ const struct firmware *helper,
-+ const struct firmware *mainfw)
-+{
-+ struct if_cs_card *card = priv->card;
-+
-+ if (ret) {
-+ pr_err("failed to find firmware (%d)\n", ret);
-+ return;
-+ }
-+
-+ /* Load the firmware */
-+ ret = if_cs_prog_helper(card, helper);
-+ if (ret == 0 && (card->model != MODEL_8305))
-+ ret = if_cs_prog_real(card, mainfw);
-+ if (ret)
-+ goto out;
-+
-+ /* Now actually get the IRQ */
-+ ret = request_irq(card->p_dev->irq, if_cs_interrupt,
-+ IRQF_SHARED, DRV_NAME, card);
-+ if (ret) {
-+ pr_err("error in request_irq\n");
-+ goto out;
-+ }
-+
-+ /*
-+ * Clear any interrupt cause that happened while sending
-+ * firmware/initializing card
-+ */
-+ if_cs_write16(card, IF_CS_CARD_INT_CAUSE, IF_CS_BIT_MASK);
-+ if_cs_enable_ints(card);
-+
-+ /* And finally bring the card up */
-+ priv->fw_ready = 1;
-+ if (lbs_start_card(priv) != 0) {
-+ pr_err("could not activate card\n");
-+ free_irq(card->p_dev->irq, card);
-+ }
-+
-+out:
-+ release_firmware(helper);
-+ release_firmware(mainfw);
-+}
-
-
- /********************************************************************/
-@@ -809,8 +853,6 @@ static int if_cs_probe(struct pcmcia_device *p_dev)
- unsigned int prod_id;
- struct lbs_private *priv;
- struct if_cs_card *card;
-- const struct firmware *helper = NULL;
-- const struct firmware *mainfw = NULL;
-
- lbs_deb_enter(LBS_DEB_CS);
-
-@@ -890,20 +932,6 @@ static int if_cs_probe(struct pcmcia_device *p_dev)
- goto out2;
- }
-
-- ret = lbs_get_firmware(&p_dev->dev, card->model, &fw_table[0],
-- &helper, &mainfw);
-- if (ret) {
-- pr_err("failed to find firmware (%d)\n", ret);
-- goto out2;
-- }
--
-- /* Load the firmware early, before calling into libertas.ko */
-- ret = if_cs_prog_helper(card, helper);
-- if (ret == 0 && (card->model != MODEL_8305))
-- ret = if_cs_prog_real(card, mainfw);
-- if (ret)
-- goto out2;
--
- /* Make this card known to the libertas driver */
- priv = lbs_add_card(card, &p_dev->dev);
- if (!priv) {
-@@ -911,37 +939,22 @@ static int if_cs_probe(struct pcmcia_device *p_dev)
- goto out2;
- }
-
-- /* Finish setting up fields in lbs_private */
-+ /* Set up fields in lbs_private */
- card->priv = priv;
- priv->card = card;
- priv->hw_host_to_card = if_cs_host_to_card;
- priv->enter_deep_sleep = NULL;
- priv->exit_deep_sleep = NULL;
- priv->reset_deep_sleep_wakeup = NULL;
-- priv->fw_ready = 1;
-
-- /* Now actually get the IRQ */
-- ret = request_irq(p_dev->irq, if_cs_interrupt,
-- IRQF_SHARED, DRV_NAME, card);
-+ /* Get firmware */
-+ ret = lbs_get_firmware_async(priv, &p_dev->dev, card->model, fw_table,
-+ if_cs_prog_firmware);
- if (ret) {
-- pr_err("error in request_irq\n");
-- goto out3;
-- }
--
-- /*
-- * Clear any interrupt cause that happened while sending
-- * firmware/initializing card
-- */
-- if_cs_write16(card, IF_CS_CARD_INT_CAUSE, IF_CS_BIT_MASK);
-- if_cs_enable_ints(card);
--
-- /* And finally bring the card up */
-- if (lbs_start_card(priv) != 0) {
-- pr_err("could not activate card\n");
-+ pr_err("failed to find firmware (%d)\n", ret);
- goto out3;
- }
-
-- ret = 0;
- goto out;
-
- out3:
-@@ -951,9 +964,6 @@ out2:
- out1:
- pcmcia_disable_device(p_dev);
- out:
-- release_firmware(helper);
-- release_firmware(mainfw);
--
- lbs_deb_leave_args(LBS_DEB_CS, "ret %d", ret);
- return ret;
- }
---
-1.7.4.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/libertas/0016-libertas-add-missing-include.patch b/recipes-kernel/linux/linux-mainline-3.2/libertas/0016-libertas-add-missing-include.patch
deleted file mode 100644
index 1a89816..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/libertas/0016-libertas-add-missing-include.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 7608f165734eaeb530ba2442c0413e6e9630ad83 Mon Sep 17 00:00:00 2001
-From: Felix Fietkau <nbd at openwrt.org>
-Date: Thu, 19 Apr 2012 13:54:12 +0200
-Subject: [PATCH 16/17] libertas: add missing include
-
-Without it, I get compile errors due to missing TASK_NORMAL,
-TASK_UNINTERRUPTIBLE and schedule.
-
-Signed-off-by: Felix Fietkau <nbd at openwrt.org>
-Acked-by: Dan Williams <dcbw at redhat.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
----
- drivers/net/wireless/libertas/firmware.c | 1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/net/wireless/libertas/firmware.c b/drivers/net/wireless/libertas/firmware.c
-index cd23f1a..77f6504 100644
---- a/drivers/net/wireless/libertas/firmware.c
-+++ b/drivers/net/wireless/libertas/firmware.c
-@@ -5,6 +5,7 @@
- #include <linux/firmware.h>
- #include <linux/firmware.h>
- #include <linux/module.h>
-+#include <linux/sched.h>
-
- #include "dev.h"
- #include "decl.h"
---
-1.7.4.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/libertas/0017-remove-debug-msgs-due-to-missing-in_interrupt.patch b/recipes-kernel/linux/linux-mainline-3.2/libertas/0017-remove-debug-msgs-due-to-missing-in_interrupt.patch
deleted file mode 100644
index e46ae14..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/libertas/0017-remove-debug-msgs-due-to-missing-in_interrupt.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 94938a2b8b1db241843abfe98168b81bf9273165 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony at googlemail.com>
-Date: Mon, 21 May 2012 17:01:23 +0200
-Subject: [PATCH] remove debug msgs due to missing in_interrupt
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-
-Signed-off-by: Andreas M??ller <schnitzeltony at googlemail.com>
----
- drivers/net/wireless/libertas/defs.h | 7 -------
- 1 files changed, 0 insertions(+), 7 deletions(-)
-
-diff --git a/drivers/net/wireless/libertas/defs.h b/drivers/net/wireless/libertas/defs.h
-index ab966f0..a80b40e 100644
---- a/drivers/net/wireless/libertas/defs.h
-+++ b/drivers/net/wireless/libertas/defs.h
-@@ -46,14 +46,7 @@
-
- extern unsigned int lbs_debug;
-
--#ifdef DEBUG
--#define LBS_DEB_LL(grp, grpnam, fmt, args...) \
--do { if ((lbs_debug & (grp)) == (grp)) \
-- printk(KERN_DEBUG DRV_NAME grpnam "%s: " fmt, \
-- in_interrupt() ? " (INT)" : "", ## args); } while (0)
--#else
- #define LBS_DEB_LL(grp, grpnam, fmt, args...) do {} while (0)
--#endif
-
- #define lbs_deb_enter(grp) \
- LBS_DEB_LL(grp | LBS_DEB_ENTER, " enter", "%s()\n", __func__);
---
-1.7.4.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/micrel_zippy2/0001-ksz8851-eeprom-93cx6-add-drive_data.patch b/recipes-kernel/linux/linux-mainline-3.2/micrel_zippy2/0001-ksz8851-eeprom-93cx6-add-drive_data.patch
deleted file mode 100644
index 5c700f7..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/micrel_zippy2/0001-ksz8851-eeprom-93cx6-add-drive_data.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From 84ab8eddc3e2d590489cf413ee86b9f20564994e Mon Sep 17 00:00:00 2001
-From: Robert Nelson <robertcnelson at gmail.com>
-Date: Thu, 29 Sep 2011 11:35:01 -0500
-Subject: [PATCH 01/14] ksz8851 eeprom 93cx6 add drive_data
-
-Signed-off-by: Robert Nelson <robertcnelson at gmail.com>
----
- drivers/misc/eeprom/eeprom_93cx6.c | 3 +++
- include/linux/eeprom_93cx6.h | 2 ++
- 2 files changed, 5 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/misc/eeprom/eeprom_93cx6.c b/drivers/misc/eeprom/eeprom_93cx6.c
-index 7b33de9..a6037af 100644
---- a/drivers/misc/eeprom/eeprom_93cx6.c
-+++ b/drivers/misc/eeprom/eeprom_93cx6.c
-@@ -63,6 +63,7 @@ static void eeprom_93cx6_startup(struct eeprom_93cx6 *eeprom)
- eeprom->reg_data_out = 0;
- eeprom->reg_data_clock = 0;
- eeprom->reg_chip_select = 1;
-+ eeprom->drive_data = 1;
- eeprom->register_write(eeprom);
-
- /*
-@@ -101,6 +102,7 @@ static void eeprom_93cx6_write_bits(struct eeprom_93cx6 *eeprom,
- */
- eeprom->reg_data_in = 0;
- eeprom->reg_data_out = 0;
-+ eeprom->drive_data = 1;
-
- /*
- * Start writing all bits.
-@@ -140,6 +142,7 @@ static void eeprom_93cx6_read_bits(struct eeprom_93cx6 *eeprom,
- */
- eeprom->reg_data_in = 0;
- eeprom->reg_data_out = 0;
-+ eeprom->drive_data = 0;
-
- /*
- * Start reading all bits.
-diff --git a/include/linux/eeprom_93cx6.h b/include/linux/eeprom_93cx6.h
-index c4627cb..e04546e 100644
---- a/include/linux/eeprom_93cx6.h
-+++ b/include/linux/eeprom_93cx6.h
-@@ -46,6 +46,7 @@
- * @register_write(struct eeprom_93cx6 *eeprom): handler to
- * write to the eeprom register by using all reg_* fields.
- * @width: eeprom width, should be one of the PCI_EEPROM_WIDTH_* defines
-+ * @drive_data: Set if we're driving the data line.
- * @reg_data_in: register field to indicate data input
- * @reg_data_out: register field to indicate data output
- * @reg_data_clock: register field to set the data clock
-@@ -62,6 +63,7 @@ struct eeprom_93cx6 {
-
- int width;
-
-+ char drive_data;
- char reg_data_in;
- char reg_data_out;
- char reg_data_clock;
---
-1.7.7.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/micrel_zippy2/0002-ksz8851-eeprom-93cx6-add-eeprom_93cx6_write.patch b/recipes-kernel/linux/linux-mainline-3.2/micrel_zippy2/0002-ksz8851-eeprom-93cx6-add-eeprom_93cx6_write.patch
deleted file mode 100644
index 254e18d..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/micrel_zippy2/0002-ksz8851-eeprom-93cx6-add-eeprom_93cx6_write.patch
+++ /dev/null
@@ -1,129 +0,0 @@
-From cab9c276c954286c87db9aa7adc3c2cc3faaaf61 Mon Sep 17 00:00:00 2001
-From: Robert Nelson <robertcnelson at gmail.com>
-Date: Thu, 29 Sep 2011 11:35:38 -0500
-Subject: [PATCH 02/14] ksz8851 eeprom 93cx6 add eeprom_93cx6_write
-
-Signed-off-by: Robert Nelson <robertcnelson at gmail.com>
----
- drivers/misc/eeprom/eeprom_93cx6.c | 86 ++++++++++++++++++++++++++++++++++++
- include/linux/eeprom_93cx6.h | 6 +++
- 2 files changed, 92 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/misc/eeprom/eeprom_93cx6.c b/drivers/misc/eeprom/eeprom_93cx6.c
-index a6037af..77ca81f 100644
---- a/drivers/misc/eeprom/eeprom_93cx6.c
-+++ b/drivers/misc/eeprom/eeprom_93cx6.c
-@@ -234,3 +234,89 @@ void eeprom_93cx6_multiread(struct eeprom_93cx6 *eeprom, const u8 word,
- }
- EXPORT_SYMBOL_GPL(eeprom_93cx6_multiread);
-
-+
-+/**
-+ * eeprom_93cx6_wren - set the write enable state
-+ * @eeprom: Pointer to eeprom structure
-+ * @enable: true to enable writes, otherwise disable writes
-+ *
-+ * Set the EEPROM write enable state to either allow or deny
-+ * writes depending on the @enable value.
-+ */
-+void eeprom_93cx6_wren(struct eeprom_93cx6 *eeprom, bool enable)
-+{
-+ u16 command;
-+
-+ /* start the command */
-+ eeprom_93cx6_startup(eeprom);
-+
-+ /* create command to enable/disable */
-+
-+ command = enable ? PCI_EEPROM_EWEN_OPCODE : PCI_EEPROM_EWDS_OPCODE;
-+ command <<= (eeprom->width - 2);
-+
-+ eeprom_93cx6_write_bits(eeprom, command,
-+ PCI_EEPROM_WIDTH_OPCODE + eeprom->width);
-+
-+ eeprom_93cx6_cleanup(eeprom);
-+}
-+EXPORT_SYMBOL_GPL(eeprom_93cx6_wren);
-+
-+/**
-+ * eeprom_93cx6_write - write data to the EEPROM
-+ * @eeprom: Pointer to eeprom structure
-+ * @addr: Address to write data to.
-+ * @data: The data to write to address @addr.
-+ *
-+ * Write the @data to the specified @addr in the EEPROM and
-+ * waiting for the device to finish writing.
-+ *
-+ * Note, since we do not expect large number of write operations
-+ * we use msleep() to delay in between parts of the operation to
-+ * avoid using excessive amounts of CPU time busy waiting.
-+ */
-+void eeprom_93cx6_write(struct eeprom_93cx6 *eeprom, u8 addr, u16 data)
-+{
-+ int timeout = 100;
-+ u16 command;
-+
-+ /* start the command */
-+ eeprom_93cx6_startup(eeprom);
-+
-+ command = PCI_EEPROM_WRITE_OPCODE << eeprom->width;
-+ command |= addr;
-+
-+ /* send write command */
-+ eeprom_93cx6_write_bits(eeprom, command,
-+ PCI_EEPROM_WIDTH_OPCODE + eeprom->width);
-+
-+ /* send data */
-+ eeprom_93cx6_write_bits(eeprom, data, 16);
-+
-+ /* get ready to check for busy */
-+ eeprom->drive_data = 0;
-+ eeprom->reg_chip_select = 1;
-+ eeprom->register_write(eeprom);
-+
-+ /* wait at-least 250ns to get DO to be the busy signal */
-+ msleep(1);
-+
-+ /* wait for DO to go high to signify finish */
-+
-+ while (true) {
-+ eeprom->register_read(eeprom);
-+
-+ if (eeprom->reg_data_out)
-+ break;
-+
-+ msleep(1);
-+
-+ if (--timeout <= 0) {
-+ printk(KERN_ERR "%s: timeout\n", __func__);
-+ break;
-+ }
-+ }
-+
-+ eeprom_93cx6_cleanup(eeprom);
-+}
-+EXPORT_SYMBOL_GPL(eeprom_93cx6_write);
-diff --git a/include/linux/eeprom_93cx6.h b/include/linux/eeprom_93cx6.h
-index e04546e..e50f98b 100644
---- a/include/linux/eeprom_93cx6.h
-+++ b/include/linux/eeprom_93cx6.h
-@@ -33,6 +33,7 @@
- #define PCI_EEPROM_WIDTH_93C86 8
- #define PCI_EEPROM_WIDTH_OPCODE 3
- #define PCI_EEPROM_WRITE_OPCODE 0x05
-+#define PCI_EEPROM_ERASE_OPCODE 0x07
- #define PCI_EEPROM_READ_OPCODE 0x06
- #define PCI_EEPROM_EWDS_OPCODE 0x10
- #define PCI_EEPROM_EWEN_OPCODE 0x13
-@@ -74,3 +75,8 @@ extern void eeprom_93cx6_read(struct eeprom_93cx6 *eeprom,
- const u8 word, u16 *data);
- extern void eeprom_93cx6_multiread(struct eeprom_93cx6 *eeprom,
- const u8 word, __le16 *data, const u16 words);
-+
-+extern void eeprom_93cx6_wren(struct eeprom_93cx6 *eeprom, bool enable);
-+
-+extern void eeprom_93cx6_write(struct eeprom_93cx6 *eeprom,
-+ u8 addr, u16 data);
---
-1.7.7.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/micrel_zippy2/0003-ksz8851-read_mac_addr.patch b/recipes-kernel/linux/linux-mainline-3.2/micrel_zippy2/0003-ksz8851-read_mac_addr.patch
deleted file mode 100644
index a60b310..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/micrel_zippy2/0003-ksz8851-read_mac_addr.patch
+++ /dev/null
@@ -1,93 +0,0 @@
-From 9318b0759a699e6128817bead791603201e73d99 Mon Sep 17 00:00:00 2001
-From: Robert Nelson <robertcnelson at gmail.com>
-Date: Thu, 29 Sep 2011 11:36:22 -0500
-Subject: [PATCH 03/14] ksz8851 read_mac_addr
-
-Signed-off-by: Robert Nelson <robertcnelson at gmail.com>
----
- drivers/net/ethernet/micrel/ks8851.c | 44 ++++++++++++++++++++++++++++-----
- 1 files changed, 37 insertions(+), 7 deletions(-)
-
-diff --git a/drivers/net/ethernet/micrel/ks8851.c b/drivers/net/ethernet/micrel/ks8851.c
-index f56743a..da7cbea 100644
---- a/drivers/net/ethernet/micrel/ks8851.c
-+++ b/drivers/net/ethernet/micrel/ks8851.c
-@@ -367,21 +367,47 @@ static int ks8851_write_mac_addr(struct net_device *dev)
- }
-
- /**
-+ * ks8851_read_mac_addr - read mac address from device registers
-+ * @dev: The network device
-+ *
-+ * Update our copy of the KS8851 MAC address from the registers of @dev.
-+*/
-+static void ks8851_read_mac_addr(struct net_device *dev)
-+{
-+ struct ks8851_net *ks = netdev_priv(dev);
-+ int i;
-+
-+ mutex_lock(&ks->lock);
-+
-+ for (i = 0; i < ETH_ALEN; i++)
-+ dev->dev_addr[i] = ks8851_rdreg8(ks, KS_MAR(i));
-+
-+ mutex_unlock(&ks->lock);
-+}
-+
-+/**
- * ks8851_init_mac - initialise the mac address
- * @ks: The device structure
- *
- * Get or create the initial mac address for the device and then set that
-- * into the station address register. Currently we assume that the device
-- * does not have a valid mac address in it, and so we use random_ether_addr()
-+ * into the station address register. If there is an EEPROM present, then
-+ * we try that. If no valid mac address is found we use random_ether_addr()
- * to create a new one.
-- *
-- * In future, the driver should check to see if the device has an EEPROM
-- * attached and whether that has a valid ethernet address in it.
- */
- static void ks8851_init_mac(struct ks8851_net *ks)
- {
- struct net_device *dev = ks->netdev;
-
-+ /* first, try reading what we've got already */
-+ if (ks->rc_ccr & CCR_EEPROM) {
-+ ks8851_read_mac_addr(dev);
-+ if (is_valid_ether_addr(dev->dev_addr))
-+ return;
-+
-+ netdev_err(ks->netdev, "invalid mac address read %pM\n",
-+ dev->dev_addr);
-+ }
-+
- random_ether_addr(dev->dev_addr);
- ks8851_write_mac_addr(dev);
- }
-@@ -1658,6 +1684,9 @@ static int __devinit ks8851_probe(struct spi_device *spi)
- else
- ks->eeprom_size = 0;
-
-+ /* cache the contents of the CCR register for EEPROM, etc. */
-+ ks->rc_ccr = ks8851_rdreg16(ks, KS_CCR);
-+
- ks8851_read_selftest(ks);
- ks8851_init_mac(ks);
-
-@@ -1674,9 +1703,10 @@ static int __devinit ks8851_probe(struct spi_device *spi)
- goto err_netdev;
- }
-
-- netdev_info(ndev, "revision %d, MAC %pM, IRQ %d\n",
-+ netdev_info(ndev, "revision %d, MAC %pM, IRQ %d %s EEPROM\n",
- CIDER_REV_GET(ks8851_rdreg16(ks, KS_CIDER)),
-- ndev->dev_addr, ndev->irq);
-+ ndev->dev_addr, ndev->irq,
-+ ks->rc_ccr & CCR_EEPROM ? "has" : "no");
-
- return 0;
-
---
-1.7.7.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/micrel_zippy2/0004-ksz8851-93cx6-eeprom-access.patch b/recipes-kernel/linux/linux-mainline-3.2/micrel_zippy2/0004-ksz8851-93cx6-eeprom-access.patch
deleted file mode 100644
index 974e171..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/micrel_zippy2/0004-ksz8851-93cx6-eeprom-access.patch
+++ /dev/null
@@ -1,130 +0,0 @@
-From 2b458e8bc6c07d7de20eb202c8f9c895dcf5ec6b Mon Sep 17 00:00:00 2001
-From: Robert Nelson <robertcnelson at gmail.com>
-Date: Thu, 29 Sep 2011 11:36:58 -0500
-Subject: [PATCH 04/14] ksz8851 93cx6 eeprom access
-
-Signed-off-by: Robert Nelson <robertcnelson at gmail.com>
----
- drivers/net/ethernet/micrel/Kconfig | 1 +
- drivers/net/ethernet/micrel/ks8851.c | 72 ++++++++++++++++++++++++++++++++++
- 2 files changed, 73 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/net/ethernet/micrel/Kconfig b/drivers/net/ethernet/micrel/Kconfig
-index d10c2e1..fe42fc0 100644
---- a/drivers/net/ethernet/micrel/Kconfig
-+++ b/drivers/net/ethernet/micrel/Kconfig
-@@ -42,6 +42,7 @@ config KS8851
- select NET_CORE
- select MII
- select CRC32
-+ select EEPROM_93CX6
- ---help---
- SPI driver for Micrel KS8851 SPI attached network chip.
-
-diff --git a/drivers/net/ethernet/micrel/ks8851.c b/drivers/net/ethernet/micrel/ks8851.c
-index da7cbea..6a7f27f 100644
---- a/drivers/net/ethernet/micrel/ks8851.c
-+++ b/drivers/net/ethernet/micrel/ks8851.c
-@@ -22,6 +22,7 @@
- #include <linux/cache.h>
- #include <linux/crc32.h>
- #include <linux/mii.h>
-+#include <linux/eeprom_93cx6.h>
-
- #include <linux/spi/spi.h>
-
-@@ -128,6 +129,8 @@ struct ks8851_net {
- struct spi_message spi_msg2;
- struct spi_transfer spi_xfer1;
- struct spi_transfer spi_xfer2[2];
-+
-+ struct eeprom_93cx6 eeprom;
- };
-
- static int msg_enable;
-@@ -1449,6 +1452,68 @@ static int ks8851_set_eeprom(struct net_device *dev,
- return ret_val;
- }
-
-+/* EEPROM support */
-+
-+static void ks8851_eeprom_regread(struct eeprom_93cx6 *ee)
-+{
-+ struct ks8851_net *ks = ee->data;
-+ unsigned val;
-+
-+ val = ks8851_rdreg16(ks, KS_EEPCR);
-+
-+ ee->reg_data_out = (val & EEPCR_EESB) ? 1 : 0;
-+ ee->reg_data_clock = (val & EEPCR_EESCK) ? 1 : 0;
-+ ee->reg_chip_select = (val & EEPCR_EECS) ? 1 : 0;
-+}
-+
-+static void ks8851_eeprom_regwrite(struct eeprom_93cx6 *ee)
-+{
-+ struct ks8851_net *ks = ee->data;
-+ unsigned val = EEPCR_EESA; /* default - eeprom access on */
-+
-+ if (ee->drive_data)
-+ val |= EEPCR_EESRWA;
-+ if (ee->reg_data_in)
-+ val |= EEPCR_EEDO;
-+ if (ee->reg_data_clock)
-+ val |= EEPCR_EESCK;
-+ if (ee->reg_chip_select)
-+ val |= EEPCR_EECS;
-+
-+ printk(KERN_INFO "%s: wr %04x\n", __func__, val);
-+ ks8851_wrreg16(ks, KS_EEPCR, val);
-+}
-+
-+/**
-+ * ks8851_eeprom_claim - claim device EEPROM and activate the interface
-+ * @ks: The network deice state.
-+ *
-+ * Check for the presence of an EEPROM, and then activate software access
-+ * to the device.
-+ */
-+static int ks8851_eeprom_claim(struct ks8851_net *ks)
-+{
-+ if (!(ks->rc_ccr & CCR_EEPROM))
-+ return -ENOENT;
-+
-+ /* start with clock low, cs high */
-+ ks8851_wrreg16(ks, KS_EEPCR, EEPCR_EESA | EEPCR_EECS);
-+ return 0;
-+}
-+
-+/**
-+ * ks8851_eeprom_release - release the EEPROM interface
-+ * @ks: The device state
-+ *
-+ * Release the software access to the device EEPROM
-+ */
-+static void ks8851_eeprom_release(struct ks8851_net *ks)
-+{
-+ unsigned val = ks8851_rdreg16(ks, KS_EEPCR);
-+
-+ ks8851_wrreg16(ks, KS_EEPCR, val & ~EEPCR_EESA);
-+}
-+
- static const struct ethtool_ops ks8851_ethtool_ops = {
- .get_drvinfo = ks8851_get_drvinfo,
- .get_msglevel = ks8851_get_msglevel,
-@@ -1639,6 +1704,13 @@ static int __devinit ks8851_probe(struct spi_device *spi)
- spi_message_add_tail(&ks->spi_xfer2[0], &ks->spi_msg2);
- spi_message_add_tail(&ks->spi_xfer2[1], &ks->spi_msg2);
-
-+ /* setup EEPROM state */
-+
-+ ks->eeprom.data = ks;
-+ ks->eeprom.width = PCI_EEPROM_WIDTH_93C46;
-+ ks->eeprom.register_read = ks8851_eeprom_regread;
-+ ks->eeprom.register_write = ks8851_eeprom_regwrite;
-+
- /* setup mii state */
- ks->mii.dev = ndev;
- ks->mii.phy_id = 1,
---
-1.7.7.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/micrel_zippy2/0005-ks8851.h-it-helps-to-include-the-include-file.patch b/recipes-kernel/linux/linux-mainline-3.2/micrel_zippy2/0005-ks8851.h-it-helps-to-include-the-include-file.patch
deleted file mode 100644
index c006649..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/micrel_zippy2/0005-ks8851.h-it-helps-to-include-the-include-file.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From a0aa9c88e27b160651f685945b42749a2a9e1a0a Mon Sep 17 00:00:00 2001
-From: Robert Nelson <robertcnelson at gmail.com>
-Date: Wed, 5 Oct 2011 16:19:20 -0500
-Subject: [PATCH 05/14] ks8851.h it helps to include the include file
-
-Signed-off-by: Robert Nelson <robertcnelson at gmail.com>
----
- include/linux/ks8851.h | 23 +++++++++++++++++++++++
- 1 files changed, 23 insertions(+), 0 deletions(-)
- create mode 100644 include/linux/ks8851.h
-
-diff --git a/include/linux/ks8851.h b/include/linux/ks8851.h
-new file mode 100644
-index 0000000..c933688
---- /dev/null
-+++ b/include/linux/ks8851.h
-@@ -0,0 +1,23 @@
-+/* include/linux/ks8851.h
-+ *
-+ * Platform specific configuration data for KS8851 driver.
-+ *
-+ * Copyright 2009 Simtec Electronics
-+ * http://www.simtec.co.uk/
-+ * Ben Dooks <ben at simtec.co.uk>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ */
-+
-+/**
-+ * struct ks8851_pdata - platform specific configuration data
-+ * @irq_flags: The IRQ trigger flags to pass to request_irq().
-+ *
-+ * Platform specific configuration to be passed from board support
-+ * registering the spi device to the driver.
-+ */
-+struct ks8851_pdata {
-+ unsigned irq_flags;
-+};
---
-1.7.7.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/micrel_zippy2/0006-ksz8851-move-to-header.patch b/recipes-kernel/linux/linux-mainline-3.2/micrel_zippy2/0006-ksz8851-move-to-header.patch
deleted file mode 100644
index 37188f8..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/micrel_zippy2/0006-ksz8851-move-to-header.patch
+++ /dev/null
@@ -1,326 +0,0 @@
-From c3d2a211cfeec3d0af0a26603c66e10dd456dd36 Mon Sep 17 00:00:00 2001
-From: Robert Nelson <robertcnelson at gmail.com>
-Date: Thu, 29 Sep 2011 11:37:48 -0500
-Subject: [PATCH 06/14] ksz8851 move to header
-
-Signed-off-by: Robert Nelson <robertcnelson at gmail.com>
----
- drivers/net/ethernet/micrel/ks8851_mll.c | 263 +-----------------------------
- 1 files changed, 5 insertions(+), 258 deletions(-)
-
-diff --git a/drivers/net/ethernet/micrel/ks8851_mll.c b/drivers/net/ethernet/micrel/ks8851_mll.c
-index d19c849..530b962 100644
---- a/drivers/net/ethernet/micrel/ks8851_mll.c
-+++ b/drivers/net/ethernet/micrel/ks8851_mll.c
-@@ -37,6 +37,8 @@
- #include <linux/slab.h>
- #include <asm/io.h>
-
-+#include "ks8851.h"
-+
- #define DRV_NAME "ks8851_mll"
-
- static u8 KS_DEFAULT_MAC_ADDRESS[] = { 0x00, 0x10, 0xA1, 0x86, 0x95, 0x11 };
-@@ -45,165 +47,26 @@ static u8 KS_DEFAULT_MAC_ADDRESS[] = { 0x00, 0x10, 0xA1, 0x86, 0x95, 0x11 };
- #define TX_BUF_SIZE 2000
- #define RX_BUF_SIZE 2000
-
--#define KS_CCR 0x08
--#define CCR_EEPROM (1 << 9)
--#define CCR_SPI (1 << 8)
- #define CCR_8BIT (1 << 7)
- #define CCR_16BIT (1 << 6)
- #define CCR_32BIT (1 << 5)
- #define CCR_SHARED (1 << 4)
--#define CCR_32PIN (1 << 0)
--
--/* MAC address registers */
--#define KS_MARL 0x10
--#define KS_MARM 0x12
--#define KS_MARH 0x14
-
--#define KS_OBCR 0x20
- #define OBCR_ODS_16MA (1 << 6)
-
--#define KS_EEPCR 0x22
--#define EEPCR_EESA (1 << 4)
--#define EEPCR_EESB (1 << 3)
--#define EEPCR_EEDO (1 << 2)
--#define EEPCR_EESCK (1 << 1)
--#define EEPCR_EECS (1 << 0)
--
--#define KS_MBIR 0x24
--#define MBIR_TXMBF (1 << 12)
--#define MBIR_TXMBFA (1 << 11)
--#define MBIR_RXMBF (1 << 4)
--#define MBIR_RXMBFA (1 << 3)
--
--#define KS_GRR 0x26
--#define GRR_QMU (1 << 1)
--#define GRR_GSR (1 << 0)
--
--#define KS_WFCR 0x2A
--#define WFCR_MPRXE (1 << 7)
--#define WFCR_WF3E (1 << 3)
--#define WFCR_WF2E (1 << 2)
--#define WFCR_WF1E (1 << 1)
--#define WFCR_WF0E (1 << 0)
--
--#define KS_WF0CRC0 0x30
--#define KS_WF0CRC1 0x32
--#define KS_WF0BM0 0x34
--#define KS_WF0BM1 0x36
--#define KS_WF0BM2 0x38
--#define KS_WF0BM3 0x3A
--
--#define KS_WF1CRC0 0x40
--#define KS_WF1CRC1 0x42
--#define KS_WF1BM0 0x44
--#define KS_WF1BM1 0x46
--#define KS_WF1BM2 0x48
--#define KS_WF1BM3 0x4A
--
--#define KS_WF2CRC0 0x50
--#define KS_WF2CRC1 0x52
--#define KS_WF2BM0 0x54
--#define KS_WF2BM1 0x56
--#define KS_WF2BM2 0x58
--#define KS_WF2BM3 0x5A
--
--#define KS_WF3CRC0 0x60
--#define KS_WF3CRC1 0x62
--#define KS_WF3BM0 0x64
--#define KS_WF3BM1 0x66
--#define KS_WF3BM2 0x68
--#define KS_WF3BM3 0x6A
--
--#define KS_TXCR 0x70
--#define TXCR_TCGICMP (1 << 8)
--#define TXCR_TCGUDP (1 << 7)
--#define TXCR_TCGTCP (1 << 6)
--#define TXCR_TCGIP (1 << 5)
--#define TXCR_FTXQ (1 << 4)
--#define TXCR_TXFCE (1 << 3)
--#define TXCR_TXPE (1 << 2)
--#define TXCR_TXCRC (1 << 1)
--#define TXCR_TXE (1 << 0)
--
--#define KS_TXSR 0x72
--#define TXSR_TXLC (1 << 13)
--#define TXSR_TXMC (1 << 12)
--#define TXSR_TXFID_MASK (0x3f << 0)
--#define TXSR_TXFID_SHIFT (0)
--#define TXSR_TXFID_GET(_v) (((_v) >> 0) & 0x3f)
--
--
--#define KS_RXCR1 0x74
--#define RXCR1_FRXQ (1 << 15)
--#define RXCR1_RXUDPFCC (1 << 14)
--#define RXCR1_RXTCPFCC (1 << 13)
--#define RXCR1_RXIPFCC (1 << 12)
--#define RXCR1_RXPAFMA (1 << 11)
--#define RXCR1_RXFCE (1 << 10)
--#define RXCR1_RXEFE (1 << 9)
--#define RXCR1_RXMAFMA (1 << 8)
--#define RXCR1_RXBE (1 << 7)
--#define RXCR1_RXME (1 << 6)
--#define RXCR1_RXUE (1 << 5)
--#define RXCR1_RXAE (1 << 4)
--#define RXCR1_RXINVF (1 << 1)
--#define RXCR1_RXE (1 << 0)
- #define RXCR1_FILTER_MASK (RXCR1_RXINVF | RXCR1_RXAE | \
- RXCR1_RXMAFMA | RXCR1_RXPAFMA)
-
--#define KS_RXCR2 0x76
--#define RXCR2_SRDBL_MASK (0x7 << 5)
--#define RXCR2_SRDBL_SHIFT (5)
--#define RXCR2_SRDBL_4B (0x0 << 5)
--#define RXCR2_SRDBL_8B (0x1 << 5)
--#define RXCR2_SRDBL_16B (0x2 << 5)
--#define RXCR2_SRDBL_32B (0x3 << 5)
--/* #define RXCR2_SRDBL_FRAME (0x4 << 5) */
--#define RXCR2_IUFFP (1 << 4)
--#define RXCR2_RXIUFCEZ (1 << 3)
--#define RXCR2_UDPLFE (1 << 2)
--#define RXCR2_RXICMPFCC (1 << 1)
--#define RXCR2_RXSAF (1 << 0)
--
--#define KS_TXMIR 0x78
--
--#define KS_RXFHSR 0x7C
--#define RXFSHR_RXFV (1 << 15)
--#define RXFSHR_RXICMPFCS (1 << 13)
--#define RXFSHR_RXIPFCS (1 << 12)
--#define RXFSHR_RXTCPFCS (1 << 11)
--#define RXFSHR_RXUDPFCS (1 << 10)
--#define RXFSHR_RXBF (1 << 7)
--#define RXFSHR_RXMF (1 << 6)
--#define RXFSHR_RXUF (1 << 5)
--#define RXFSHR_RXMR (1 << 4)
--#define RXFSHR_RXFT (1 << 3)
--#define RXFSHR_RXFTL (1 << 2)
--#define RXFSHR_RXRF (1 << 1)
--#define RXFSHR_RXCE (1 << 0)
-+#undef RXCR2_SRDBL_FRAME
-+
- #define RXFSHR_ERR (RXFSHR_RXCE | RXFSHR_RXRF |\
- RXFSHR_RXFTL | RXFSHR_RXMR |\
- RXFSHR_RXICMPFCS | RXFSHR_RXIPFCS |\
- RXFSHR_RXTCPFCS)
-+
- #define KS_RXFHBCR 0x7E
- #define RXFHBCR_CNT_MASK 0x0FFF
-
--#define KS_TXQCR 0x80
--#define TXQCR_AETFE (1 << 2)
--#define TXQCR_TXQMAM (1 << 1)
--#define TXQCR_METFE (1 << 0)
--
--#define KS_RXQCR 0x82
--#define RXQCR_RXDTTS (1 << 12)
--#define RXQCR_RXDBCTS (1 << 11)
--#define RXQCR_RXFCTS (1 << 10)
--#define RXQCR_RXIPHTOE (1 << 9)
--#define RXQCR_RXDTTE (1 << 7)
--#define RXQCR_RXDBCTE (1 << 6)
--#define RXQCR_RXFCTE (1 << 5)
--#define RXQCR_ADRFE (1 << 4)
--#define RXQCR_SDA (1 << 3)
--#define RXQCR_RRXEF (1 << 0)
- #define RXQCR_CMD_CNTL (RXQCR_RXFCTE|RXQCR_ADRFE)
-
- #define KS_TXFDPR 0x84
-@@ -214,130 +77,14 @@ static u8 KS_DEFAULT_MAC_ADDRESS[] = { 0x00, 0x10, 0xA1, 0x86, 0x95, 0x11 };
- #define KS_RXFDPR 0x86
- #define RXFDPR_RXFPAI (1 << 14)
-
--#define KS_RXDTTR 0x8C
--#define KS_RXDBCTR 0x8E
--
--#define KS_IER 0x90
--#define KS_ISR 0x92
--#define IRQ_LCI (1 << 15)
--#define IRQ_TXI (1 << 14)
--#define IRQ_RXI (1 << 13)
--#define IRQ_RXOI (1 << 11)
--#define IRQ_TXPSI (1 << 9)
--#define IRQ_RXPSI (1 << 8)
--#define IRQ_TXSAI (1 << 6)
--#define IRQ_RXWFDI (1 << 5)
--#define IRQ_RXMPDI (1 << 4)
--#define IRQ_LDI (1 << 3)
--#define IRQ_EDI (1 << 2)
--#define IRQ_SPIBEI (1 << 1)
--#define IRQ_DEDI (1 << 0)
--
--#define KS_RXFCTR 0x9C
- #define RXFCTR_THRESHOLD_MASK 0x00FF
-
--#define KS_RXFC 0x9D
--#define RXFCTR_RXFC_MASK (0xff << 8)
--#define RXFCTR_RXFC_SHIFT (8)
--#define RXFCTR_RXFC_GET(_v) (((_v) >> 8) & 0xff)
--#define RXFCTR_RXFCT_MASK (0xff << 0)
--#define RXFCTR_RXFCT_SHIFT (0)
--
--#define KS_TXNTFSR 0x9E
--
--#define KS_MAHTR0 0xA0
--#define KS_MAHTR1 0xA2
--#define KS_MAHTR2 0xA4
--#define KS_MAHTR3 0xA6
--
--#define KS_FCLWR 0xB0
--#define KS_FCHWR 0xB2
--#define KS_FCOWR 0xB4
--
--#define KS_CIDER 0xC0
--#define CIDER_ID 0x8870
--#define CIDER_REV_MASK (0x7 << 1)
--#define CIDER_REV_SHIFT (1)
--#define CIDER_REV_GET(_v) (((_v) >> 1) & 0x7)
--
--#define KS_CGCR 0xC6
--#define KS_IACR 0xC8
--#define IACR_RDEN (1 << 12)
--#define IACR_TSEL_MASK (0x3 << 10)
--#define IACR_TSEL_SHIFT (10)
--#define IACR_TSEL_MIB (0x3 << 10)
--#define IACR_ADDR_MASK (0x1f << 0)
--#define IACR_ADDR_SHIFT (0)
--
--#define KS_IADLR 0xD0
--#define KS_IAHDR 0xD2
--
--#define KS_PMECR 0xD4
--#define PMECR_PME_DELAY (1 << 14)
--#define PMECR_PME_POL (1 << 12)
--#define PMECR_WOL_WAKEUP (1 << 11)
--#define PMECR_WOL_MAGICPKT (1 << 10)
--#define PMECR_WOL_LINKUP (1 << 9)
--#define PMECR_WOL_ENERGY (1 << 8)
--#define PMECR_AUTO_WAKE_EN (1 << 7)
--#define PMECR_WAKEUP_NORMAL (1 << 6)
--#define PMECR_WKEVT_MASK (0xf << 2)
--#define PMECR_WKEVT_SHIFT (2)
--#define PMECR_WKEVT_GET(_v) (((_v) >> 2) & 0xf)
--#define PMECR_WKEVT_ENERGY (0x1 << 2)
--#define PMECR_WKEVT_LINK (0x2 << 2)
--#define PMECR_WKEVT_MAGICPKT (0x4 << 2)
--#define PMECR_WKEVT_FRAME (0x8 << 2)
--#define PMECR_PM_MASK (0x3 << 0)
--#define PMECR_PM_SHIFT (0)
--#define PMECR_PM_NORMAL (0x0 << 0)
--#define PMECR_PM_ENERGY (0x1 << 0)
--#define PMECR_PM_SOFTDOWN (0x2 << 0)
--#define PMECR_PM_POWERSAVE (0x3 << 0)
--
--/* Standard MII PHY data */
--#define KS_P1MBCR 0xE4
- #define P1MBCR_FORCE_FDX (1 << 8)
-
--#define KS_P1MBSR 0xE6
- #define P1MBSR_AN_COMPLETE (1 << 5)
- #define P1MBSR_AN_CAPABLE (1 << 3)
- #define P1MBSR_LINK_UP (1 << 2)
-
--#define KS_PHY1ILR 0xE8
--#define KS_PHY1IHR 0xEA
--#define KS_P1ANAR 0xEC
--#define KS_P1ANLPR 0xEE
--
--#define KS_P1SCLMD 0xF4
--#define P1SCLMD_LEDOFF (1 << 15)
--#define P1SCLMD_TXIDS (1 << 14)
--#define P1SCLMD_RESTARTAN (1 << 13)
--#define P1SCLMD_DISAUTOMDIX (1 << 10)
--#define P1SCLMD_FORCEMDIX (1 << 9)
--#define P1SCLMD_AUTONEGEN (1 << 7)
--#define P1SCLMD_FORCE100 (1 << 6)
--#define P1SCLMD_FORCEFDX (1 << 5)
--#define P1SCLMD_ADV_FLOW (1 << 4)
--#define P1SCLMD_ADV_100BT_FDX (1 << 3)
--#define P1SCLMD_ADV_100BT_HDX (1 << 2)
--#define P1SCLMD_ADV_10BT_FDX (1 << 1)
--#define P1SCLMD_ADV_10BT_HDX (1 << 0)
--
--#define KS_P1CR 0xF6
--#define P1CR_HP_MDIX (1 << 15)
--#define P1CR_REV_POL (1 << 13)
--#define P1CR_OP_100M (1 << 10)
--#define P1CR_OP_FDX (1 << 9)
--#define P1CR_OP_MDI (1 << 7)
--#define P1CR_AN_DONE (1 << 6)
--#define P1CR_LINK_GOOD (1 << 5)
--#define P1CR_PNTR_FLOW (1 << 4)
--#define P1CR_PNTR_100BT_FDX (1 << 3)
--#define P1CR_PNTR_100BT_HDX (1 << 2)
--#define P1CR_PNTR_10BT_FDX (1 << 1)
--#define P1CR_PNTR_10BT_HDX (1 << 0)
--
- /* TX Frame control */
-
- #define TXFR_TXIC (1 << 15)
---
-1.7.7.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/micrel_zippy2/0007-ksz8851-move-more-to-header.patch b/recipes-kernel/linux/linux-mainline-3.2/micrel_zippy2/0007-ksz8851-move-more-to-header.patch
deleted file mode 100644
index fc360c5..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/micrel_zippy2/0007-ksz8851-move-more-to-header.patch
+++ /dev/null
@@ -1,143 +0,0 @@
-From 5b4881326fe4509fd2a55e866a11f9123745d2a8 Mon Sep 17 00:00:00 2001
-From: Robert Nelson <robertcnelson at gmail.com>
-Date: Thu, 29 Sep 2011 11:38:35 -0500
-Subject: [PATCH 07/14] ksz8851 move more to header
-
-Signed-off-by: Robert Nelson <robertcnelson at gmail.com>
----
- drivers/net/ethernet/micrel/ks8851.h | 27 ++++++++++++++++++++
- drivers/net/ethernet/micrel/ks8851_mll.c | 40 +-----------------------------
- 2 files changed, 28 insertions(+), 39 deletions(-)
-
-diff --git a/drivers/net/ethernet/micrel/ks8851.h b/drivers/net/ethernet/micrel/ks8851.h
-index 537fb06e..1ed7cfa 100644
---- a/drivers/net/ethernet/micrel/ks8851.h
-+++ b/drivers/net/ethernet/micrel/ks8851.h
-@@ -3,6 +3,9 @@
- * Copyright 2009 Simtec Electronics
- * Ben Dooks <ben at simtec.co.uk>
- *
-+ * portions from drivers/net/ks8851_mll.c,
-+ * Copyright (c) 2009 Micrel Inc.
-+ *
- * KS8851 register definitions
- *
- * This program is free software; you can redistribute it and/or modify
-@@ -13,6 +16,10 @@
- #define KS_CCR 0x08
- #define CCR_EEPROM (1 << 9)
- #define CCR_SPI (1 << 8)
-+#define CCR_8BIT (1 << 7)
-+#define CCR_16BIT (1 << 6)
-+#define CCR_32BIT (1 << 5)
-+#define CCR_SHARED (1 << 4)
- #define CCR_32PIN (1 << 0)
-
- /* MAC address registers */
-@@ -261,7 +268,13 @@
-
- /* Standard MII PHY data */
- #define KS_P1MBCR 0xE4
-+#define P1MBCR_FORCE_FDX (1 << 8)
-+
- #define KS_P1MBSR 0xE6
-+#define P1MBSR_AN_COMPLETE (1 << 5)
-+#define P1MBSR_AN_CAPABLE (1 << 3)
-+#define P1MBSR_LINK_UP (1 << 2)
-+
- #define KS_PHY1ILR 0xE8
- #define KS_PHY1IHR 0xEA
- #define KS_P1ANAR 0xEC
-@@ -296,6 +309,20 @@
- #define P1CR_PNTR_10BT_FDX (1 << 1)
- #define P1CR_PNTR_10BT_HDX (1 << 0)
-
-+#define KS_P1SR 0xF8
-+#define P1SR_HP_MDIX (1 << 15)
-+#define P1SR_REV_POL (1 << 13)
-+#define P1SR_OP_100M (1 << 10)
-+#define P1SR_OP_FDX (1 << 9)
-+#define P1SR_OP_MDI (1 << 7)
-+#define P1SR_AN_DONE (1 << 6)
-+#define P1SR_LINK_GOOD (1 << 5)
-+#define P1SR_PNTR_FLOW (1 << 4)
-+#define P1SR_PNTR_100BT_FDX (1 << 3)
-+#define P1SR_PNTR_100BT_HDX (1 << 2)
-+#define P1SR_PNTR_10BT_FDX (1 << 1)
-+#define P1SR_PNTR_10BT_HDX (1 << 0)
-+
- /* TX Frame control */
-
- #define TXFR_TXIC (1 << 15)
-diff --git a/drivers/net/ethernet/micrel/ks8851_mll.c b/drivers/net/ethernet/micrel/ks8851_mll.c
-index 530b962..d3bb46f 100644
---- a/drivers/net/ethernet/micrel/ks8851_mll.c
-+++ b/drivers/net/ethernet/micrel/ks8851_mll.c
-@@ -47,13 +47,6 @@ static u8 KS_DEFAULT_MAC_ADDRESS[] = { 0x00, 0x10, 0xA1, 0x86, 0x95, 0x11 };
- #define TX_BUF_SIZE 2000
- #define RX_BUF_SIZE 2000
-
--#define CCR_8BIT (1 << 7)
--#define CCR_16BIT (1 << 6)
--#define CCR_32BIT (1 << 5)
--#define CCR_SHARED (1 << 4)
--
--#define OBCR_ODS_16MA (1 << 6)
--
- #define RXCR1_FILTER_MASK (RXCR1_RXINVF | RXCR1_RXAE | \
- RXCR1_RXMAFMA | RXCR1_RXPAFMA)
-
-@@ -69,41 +62,10 @@ static u8 KS_DEFAULT_MAC_ADDRESS[] = { 0x00, 0x10, 0xA1, 0x86, 0x95, 0x11 };
-
- #define RXQCR_CMD_CNTL (RXQCR_RXFCTE|RXQCR_ADRFE)
-
--#define KS_TXFDPR 0x84
--#define TXFDPR_TXFPAI (1 << 14)
--#define TXFDPR_TXFP_MASK (0x7ff << 0)
--#define TXFDPR_TXFP_SHIFT (0)
--
--#define KS_RXFDPR 0x86
--#define RXFDPR_RXFPAI (1 << 14)
--
- #define RXFCTR_THRESHOLD_MASK 0x00FF
-
--#define P1MBCR_FORCE_FDX (1 << 8)
--
--#define P1MBSR_AN_COMPLETE (1 << 5)
--#define P1MBSR_AN_CAPABLE (1 << 3)
--#define P1MBSR_LINK_UP (1 << 2)
--
- /* TX Frame control */
-
--#define TXFR_TXIC (1 << 15)
--#define TXFR_TXFID_MASK (0x3f << 0)
--#define TXFR_TXFID_SHIFT (0)
--
--#define KS_P1SR 0xF8
--#define P1SR_HP_MDIX (1 << 15)
--#define P1SR_REV_POL (1 << 13)
--#define P1SR_OP_100M (1 << 10)
--#define P1SR_OP_FDX (1 << 9)
--#define P1SR_OP_MDI (1 << 7)
--#define P1SR_AN_DONE (1 << 6)
--#define P1SR_LINK_GOOD (1 << 5)
--#define P1SR_PNTR_FLOW (1 << 4)
--#define P1SR_PNTR_100BT_FDX (1 << 3)
--#define P1SR_PNTR_100BT_HDX (1 << 2)
--#define P1SR_PNTR_10BT_FDX (1 << 1)
--#define P1SR_PNTR_10BT_HDX (1 << 0)
-
- #define ENUM_BUS_NONE 0
- #define ENUM_BUS_8BIT 1
-@@ -1350,7 +1312,7 @@ static int __devinit ks8851_probe(struct platform_device *pdev)
- memcpy(netdev->dev_addr, ks->mac_addr, 6);
-
- data = ks_rdreg16(ks, KS_OBCR);
-- ks_wrreg16(ks, KS_OBCR, data | OBCR_ODS_16MA);
-+ ks_wrreg16(ks, KS_OBCR, data | OBCR_ODS_16mA);
-
- /**
- * If you want to use the default MAC addr,
---
-1.7.7.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/micrel_zippy2/0008-ksz8851-share-ks8851_tx_hdr-union.patch b/recipes-kernel/linux/linux-mainline-3.2/micrel_zippy2/0008-ksz8851-share-ks8851_tx_hdr-union.patch
deleted file mode 100644
index e4d24a4..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/micrel_zippy2/0008-ksz8851-share-ks8851_tx_hdr-union.patch
+++ /dev/null
@@ -1,95 +0,0 @@
-From bd69d174b8ae6f720c8534db5dd4a55f2170f06c Mon Sep 17 00:00:00 2001
-From: Robert Nelson <robertcnelson at gmail.com>
-Date: Thu, 29 Sep 2011 11:49:16 -0500
-Subject: [PATCH 08/14] ksz8851 share ks8851_tx_hdr union
-
-Signed-off-by: Robert Nelson <robertcnelson at gmail.com>
----
- drivers/net/ethernet/micrel/ks8851.c | 13 -------------
- drivers/net/ethernet/micrel/ks8851.h | 14 ++++++++++++++
- drivers/net/ethernet/micrel/ks8851_mll.c | 16 +---------------
- 3 files changed, 15 insertions(+), 28 deletions(-)
-
-diff --git a/drivers/net/ethernet/micrel/ks8851.c b/drivers/net/ethernet/micrel/ks8851.c
-index 6a7f27f..64be436 100644
---- a/drivers/net/ethernet/micrel/ks8851.c
-+++ b/drivers/net/ethernet/micrel/ks8851.c
-@@ -46,19 +46,6 @@ struct ks8851_rxctrl {
- u16 rxcr2;
- };
-
--/**
-- * union ks8851_tx_hdr - tx header data
-- * @txb: The header as bytes
-- * @txw: The header as 16bit, little-endian words
-- *
-- * A dual representation of the tx header data to allow
-- * access to individual bytes, and to allow 16bit accesses
-- * with 16bit alignment.
-- */
--union ks8851_tx_hdr {
-- u8 txb[6];
-- __le16 txw[3];
--};
-
- /**
- * struct ks8851_net - KS8851 driver private data
-diff --git a/drivers/net/ethernet/micrel/ks8851.h b/drivers/net/ethernet/micrel/ks8851.h
-index 1ed7cfa..bc2476e 100644
---- a/drivers/net/ethernet/micrel/ks8851.h
-+++ b/drivers/net/ethernet/micrel/ks8851.h
-@@ -334,3 +334,17 @@
- #define KS_SPIOP_WR (0x40)
- #define KS_SPIOP_RXFIFO (0x80)
- #define KS_SPIOP_TXFIFO (0xC0)
-+
-+/**
-+ * union ks8851_tx_hdr - tx header data
-+ * @txb: The header as bytes
-+ * @txw: The header as 16bit, little-endian words
-+ *
-+ * A dual representation of the tx header data to allow
-+ * access to individual bytes, and to allow 16bit accesses
-+ * with 16bit alignment.
-+ */
-+union ks8851_tx_hdr {
-+ u8 txb[6];
-+ __le16 txw[3];
-+};
-diff --git a/drivers/net/ethernet/micrel/ks8851_mll.c b/drivers/net/ethernet/micrel/ks8851_mll.c
-index d3bb46f..ffaf14e 100644
---- a/drivers/net/ethernet/micrel/ks8851_mll.c
-+++ b/drivers/net/ethernet/micrel/ks8851_mll.c
-@@ -76,20 +76,6 @@ static u8 KS_DEFAULT_MAC_ADDRESS[] = { 0x00, 0x10, 0xA1, 0x86, 0x95, 0x11 };
- #define HW_MCAST_SIZE 8
-
- /**
-- * union ks_tx_hdr - tx header data
-- * @txb: The header as bytes
-- * @txw: The header as 16bit, little-endian words
-- *
-- * A dual representation of the tx header data to allow
-- * access to individual bytes, and to allow 16bit accesses
-- * with 16bit alignment.
-- */
--union ks_tx_hdr {
-- u8 txb[4];
-- __le16 txw[2];
--};
--
--/**
- * struct ks_net - KS8851 driver private data
- * @net_device : The network device we're bound to
- * @hw_addr : start address of data register.
-@@ -141,7 +127,7 @@ struct ks_net {
- struct net_device *netdev;
- void __iomem *hw_addr;
- void __iomem *hw_addr_cmd;
-- union ks_tx_hdr txh ____cacheline_aligned;
-+ union ks8851_tx_hdr txh ____cacheline_aligned;
- struct mutex lock; /* spinlock to be interrupt safe */
- struct platform_device *pdev;
- struct mii_if_info mii;
---
-1.7.7.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/micrel_zippy2/0009-ksz8851-add-is_level_irq.patch b/recipes-kernel/linux/linux-mainline-3.2/micrel_zippy2/0009-ksz8851-add-is_level_irq.patch
deleted file mode 100644
index f1d91f5..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/micrel_zippy2/0009-ksz8851-add-is_level_irq.patch
+++ /dev/null
@@ -1,101 +0,0 @@
-From 390e80215217f32c35c7a2d6611407b759d695d2 Mon Sep 17 00:00:00 2001
-From: Robert Nelson <robertcnelson at gmail.com>
-Date: Thu, 29 Sep 2011 11:50:09 -0500
-Subject: [PATCH 09/14] ksz8851 add is_level_irq
-
-Signed-off-by: Robert Nelson <robertcnelson at gmail.com>
----
- drivers/net/ethernet/micrel/ks8851.c | 28 ++++++++++++++++++++++++----
- 1 files changed, 24 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/net/ethernet/micrel/ks8851.c b/drivers/net/ethernet/micrel/ks8851.c
-index 64be436..f771fd8 100644
---- a/drivers/net/ethernet/micrel/ks8851.c
-+++ b/drivers/net/ethernet/micrel/ks8851.c
-@@ -23,6 +23,7 @@
- #include <linux/crc32.h>
- #include <linux/mii.h>
- #include <linux/eeprom_93cx6.h>
-+#include <linux/ks8851.h>
-
- #include <linux/spi/spi.h>
-
-@@ -70,6 +71,7 @@ struct ks8851_rxctrl {
- * @rc_ccr: Cached copy of KS_CCR.
- * @rc_rxqcr: Cached copy of KS_RXQCR.
- * @eeprom_size: Companion eeprom size in Bytes, 0 if no eeprom
-+ * @irq_flags: The IRQ flags passed to request_irq().
- *
- * The @lock ensures that the chip is protected when certain operations are
- * in progress. When the read or write packet transfer is in progress, most
-@@ -118,6 +120,7 @@ struct ks8851_net {
- struct spi_transfer spi_xfer2[2];
-
- struct eeprom_93cx6 eeprom;
-+ unsigned irq_flags;
- };
-
- static int msg_enable;
-@@ -403,6 +406,15 @@ static void ks8851_init_mac(struct ks8851_net *ks)
- }
-
- /**
-+ * is_level_irq() - return if the given IRQ flags are level triggered
-+ * @flags: The flags passed to request_irq().
-+*/
-+static bool is_level_irq(unsigned flags)
-+{
-+ return flags & (IRQF_TRIGGER_LOW | IRQF_TRIGGER_HIGH);
-+}
-+
-+/**
- * ks8851_irq - device interrupt handler
- * @irq: Interrupt number passed from the IRQ hnalder.
- * @pw: The private word passed to register_irq(), our struct ks8851_net.
-@@ -414,7 +426,9 @@ static irqreturn_t ks8851_irq(int irq, void *pw)
- {
- struct ks8851_net *ks = pw;
-
-- disable_irq_nosync(irq);
-+ if (is_level_irq(ks->irq_flags))
-+ disable_irq_nosync(irq);
-+
- schedule_work(&ks->irq_work);
- return IRQ_HANDLED;
- }
-@@ -646,7 +660,8 @@ static void ks8851_irq_work(struct work_struct *work)
- if (status & IRQ_TXI)
- netif_wake_queue(ks->netdev);
-
-- enable_irq(ks->netdev->irq);
-+ if (is_level_irq(ks->irq_flags))
-+ enable_irq(ks->netdev->irq);
- }
-
- /**
-@@ -1657,6 +1672,7 @@ static int ks8851_resume(struct spi_device *spi)
-
- static int __devinit ks8851_probe(struct spi_device *spi)
- {
-+ struct ks8851_pdata *pd = spi->dev.platform_data;
- struct net_device *ndev;
- struct ks8851_net *ks;
- int ret;
-@@ -1749,8 +1765,12 @@ static int __devinit ks8851_probe(struct spi_device *spi)
- ks8851_read_selftest(ks);
- ks8851_init_mac(ks);
-
-- ret = request_irq(spi->irq, ks8851_irq, IRQF_TRIGGER_LOW,
-- ndev->name, ks);
-+ if (pd && pd->irq_flags)
-+ ks->irq_flags = pd->irq_flags;
-+ else
-+ ks->irq_flags = IRQF_TRIGGER_LOW;
-+
-+ ret = request_irq(spi->irq, ks8851_irq, ks->irq_flags, ndev->name, ks);
- if (ret < 0) {
- dev_err(&spi->dev, "failed to get irq\n");
- goto err_irq;
---
-1.7.7.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/micrel_zippy2/0010-ksz8851-turn-off-hardware-interrupt-druing-receive-p.patch b/recipes-kernel/linux/linux-mainline-3.2/micrel_zippy2/0010-ksz8851-turn-off-hardware-interrupt-druing-receive-p.patch
deleted file mode 100644
index 60d40dd..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/micrel_zippy2/0010-ksz8851-turn-off-hardware-interrupt-druing-receive-p.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From bd5cf7c6157fb20e70e8bdc417b98d0ae81e56eb Mon Sep 17 00:00:00 2001
-From: Robert Nelson <robertcnelson at gmail.com>
-Date: Thu, 29 Sep 2011 11:50:42 -0500
-Subject: [PATCH 10/14] ksz8851 turn off hardware interrupt druing receive
- process
-
-Signed-off-by: Robert Nelson <robertcnelson at gmail.com>
----
- drivers/net/ethernet/micrel/ks8851.c | 10 ++++++++++
- 1 files changed, 10 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/net/ethernet/micrel/ks8851.c b/drivers/net/ethernet/micrel/ks8851.c
-index f771fd8..347f38f 100644
---- a/drivers/net/ethernet/micrel/ks8851.c
-+++ b/drivers/net/ethernet/micrel/ks8851.c
-@@ -586,6 +586,13 @@ static void ks8851_irq_work(struct work_struct *work)
-
- mutex_lock(&ks->lock);
-
-+ /*
-+ * Turn off hardware interrupt during receive processing. This fixes
-+ * the receive problem under heavy TCP traffic while transmit done
-+ * is enabled.
-+ */
-+ ks8851_wrreg16(ks, KS_IER, 0);
-+
- status = ks8851_rdreg16(ks, KS_ISR);
-
- netif_dbg(ks, intr, ks->netdev,
-@@ -655,6 +662,9 @@ static void ks8851_irq_work(struct work_struct *work)
- ks8851_wrreg16(ks, KS_RXCR1, rxc->rxcr1);
- }
-
-+ /* Re-enable hardware interrupt. */
-+ ks8851_wrreg16(ks, KS_IER, ks->rc_ier);
-+
- mutex_unlock(&ks->lock);
-
- if (status & IRQ_TXI)
---
-1.7.7.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/micrel_zippy2/0011-ksz8851-make-sure-is-awake-before-writing-mac.patch b/recipes-kernel/linux/linux-mainline-3.2/micrel_zippy2/0011-ksz8851-make-sure-is-awake-before-writing-mac.patch
deleted file mode 100644
index 3a651aa..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/micrel_zippy2/0011-ksz8851-make-sure-is-awake-before-writing-mac.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From c7f65cdff49e6a3e186bb1e43fa50289a662619b Mon Sep 17 00:00:00 2001
-From: Robert Nelson <robertcnelson at gmail.com>
-Date: Thu, 29 Sep 2011 11:52:45 -0500
-Subject: [PATCH 11/14] ksz8851 make sure is awake before writing mac
-
-Signed-off-by: Robert Nelson <robertcnelson at gmail.com>
----
- drivers/net/ethernet/micrel/ks8851.c | 9 ++++++++-
- drivers/net/ethernet/micrel/ks8851.h | 2 +-
- 2 files changed, 9 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/net/ethernet/micrel/ks8851.c b/drivers/net/ethernet/micrel/ks8851.c
-index 347f38f..4f68517 100644
---- a/drivers/net/ethernet/micrel/ks8851.c
-+++ b/drivers/net/ethernet/micrel/ks8851.c
-@@ -351,8 +351,15 @@ static int ks8851_write_mac_addr(struct net_device *dev)
-
- mutex_lock(&ks->lock);
-
-+ /*
-+ * Wake up chip in case it was powered off when stopped; otherwise,
-+ * the first write to the MAC address does not take effect.
-+ */
-+ ks8851_set_powermode(ks, PMECR_PM_NORMAL);
- for (i = 0; i < ETH_ALEN; i++)
- ks8851_wrreg8(ks, KS_MAR(i), dev->dev_addr[i]);
-+ if (!netif_running(dev))
-+ ks8851_set_powermode(ks, PMECR_PM_SOFTDOWN);
-
- mutex_unlock(&ks->lock);
-
-@@ -1699,7 +1706,6 @@ static int __devinit ks8851_probe(struct spi_device *spi)
-
- ks->netdev = ndev;
- ks->spidev = spi;
-- ks->tx_space = 6144;
-
- mutex_init(&ks->lock);
- spin_lock_init(&ks->statelock);
-@@ -1771,6 +1777,7 @@ static int __devinit ks8851_probe(struct spi_device *spi)
-
- /* cache the contents of the CCR register for EEPROM, etc. */
- ks->rc_ccr = ks8851_rdreg16(ks, KS_CCR);
-+ ks->tx_space = ks8851_rdreg16(ks, KS_TXMIR);
-
- ks8851_read_selftest(ks);
- ks8851_init_mac(ks);
-diff --git a/drivers/net/ethernet/micrel/ks8851.h b/drivers/net/ethernet/micrel/ks8851.h
-index bc2476e..d39ce97 100644
---- a/drivers/net/ethernet/micrel/ks8851.h
-+++ b/drivers/net/ethernet/micrel/ks8851.h
-@@ -23,7 +23,7 @@
- #define CCR_32PIN (1 << 0)
-
- /* MAC address registers */
--#define KS_MAR(_m) 0x15 - (_m)
-+#define KS_MAR(_m) (0x15 - (_m))
- #define KS_MARL 0x10
- #define KS_MARM 0x12
- #define KS_MARH 0x14
---
-1.7.7.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/micrel_zippy2/0012-ksz8851-add-mutex-lock-unlock-to-ks.patch b/recipes-kernel/linux/linux-mainline-3.2/micrel_zippy2/0012-ksz8851-add-mutex-lock-unlock-to-ks.patch
deleted file mode 100644
index 6af51d2..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/micrel_zippy2/0012-ksz8851-add-mutex-lock-unlock-to-ks.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 77734035c97803b393210976dd430cd5190d072d Mon Sep 17 00:00:00 2001
-From: Robert Nelson <robertcnelson at gmail.com>
-Date: Thu, 29 Sep 2011 11:53:36 -0500
-Subject: [PATCH 12/14] ksz8851 add mutex lock/unlock to ks
-
-Signed-off-by: Robert Nelson <robertcnelson at gmail.com>
----
- drivers/net/ethernet/micrel/ks8851.c | 4 +++-
- 1 files changed, 3 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/net/ethernet/micrel/ks8851.c b/drivers/net/ethernet/micrel/ks8851.c
-index 4f68517..e22ce5d 100644
---- a/drivers/net/ethernet/micrel/ks8851.c
-+++ b/drivers/net/ethernet/micrel/ks8851.c
-@@ -1499,7 +1499,6 @@ static void ks8851_eeprom_regwrite(struct eeprom_93cx6 *ee)
- if (ee->reg_chip_select)
- val |= EEPCR_EECS;
-
-- printk(KERN_INFO "%s: wr %04x\n", __func__, val);
- ks8851_wrreg16(ks, KS_EEPCR, val);
- }
-
-@@ -1515,6 +1514,8 @@ static int ks8851_eeprom_claim(struct ks8851_net *ks)
- if (!(ks->rc_ccr & CCR_EEPROM))
- return -ENOENT;
-
-+ mutex_lock(&ks->lock);
-+
- /* start with clock low, cs high */
- ks8851_wrreg16(ks, KS_EEPCR, EEPCR_EESA | EEPCR_EECS);
- return 0;
-@@ -1531,6 +1532,7 @@ static void ks8851_eeprom_release(struct ks8851_net *ks)
- unsigned val = ks8851_rdreg16(ks, KS_EEPCR);
-
- ks8851_wrreg16(ks, KS_EEPCR, val & ~EEPCR_EESA);
-+ mutex_unlock(&ks->lock);
- }
-
- static const struct ethtool_ops ks8851_ethtool_ops = {
---
-1.7.7.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/micrel_zippy2/0013-ksz8851-add-ks8851_tx_check.patch b/recipes-kernel/linux/linux-mainline-3.2/micrel_zippy2/0013-ksz8851-add-ks8851_tx_check.patch
deleted file mode 100644
index 388feb6..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/micrel_zippy2/0013-ksz8851-add-ks8851_tx_check.patch
+++ /dev/null
@@ -1,121 +0,0 @@
-From 7b4062c1b950287f4b588a72edd520d050e92745 Mon Sep 17 00:00:00 2001
-From: Robert Nelson <robertcnelson at gmail.com>
-Date: Thu, 29 Sep 2011 11:54:12 -0500
-Subject: [PATCH 13/14] ksz8851 add ks8851_tx_check
-
-Signed-off-by: Robert Nelson <robertcnelson at gmail.com>
----
- drivers/net/ethernet/micrel/ks8851.c | 36 +++++++++++++++++-----------------
- 1 files changed, 18 insertions(+), 18 deletions(-)
-
-diff --git a/drivers/net/ethernet/micrel/ks8851.c b/drivers/net/ethernet/micrel/ks8851.c
-index e22ce5d..b72baa6 100644
---- a/drivers/net/ethernet/micrel/ks8851.c
-+++ b/drivers/net/ethernet/micrel/ks8851.c
-@@ -108,11 +108,13 @@ struct ks8851_net {
- struct mii_if_info mii;
- struct ks8851_rxctrl rxctrl;
-
-+ struct work_struct tx_check;
- struct work_struct tx_work;
- struct work_struct irq_work;
- struct work_struct rxctrl_work;
-
- struct sk_buff_head txq;
-+ int tx_len;
-
- struct spi_message spi_msg1;
- struct spi_message spi_msg2;
-@@ -621,19 +623,6 @@ static void ks8851_irq_work(struct work_struct *work)
- if (status & IRQ_RXPSI)
- handled |= IRQ_RXPSI;
-
-- if (status & IRQ_TXI) {
-- handled |= IRQ_TXI;
--
-- /* no lock here, tx queue should have been stopped */
--
-- /* update our idea of how much tx space is available to the
-- * system */
-- ks->tx_space = ks8851_rdreg16(ks, KS_TXMIR);
--
-- netif_dbg(ks, intr, ks->netdev,
-- "%s: txspace %d\n", __func__, ks->tx_space);
-- }
--
- if (status & IRQ_RXI)
- handled |= IRQ_RXI;
-
-@@ -674,9 +663,6 @@ static void ks8851_irq_work(struct work_struct *work)
-
- mutex_unlock(&ks->lock);
-
-- if (status & IRQ_TXI)
-- netif_wake_queue(ks->netdev);
--
- if (is_level_irq(ks->irq_flags))
- enable_irq(ks->netdev->irq);
- }
-@@ -754,6 +740,17 @@ static void ks8851_done_tx(struct ks8851_net *ks, struct sk_buff *txb)
- dev_kfree_skb(txb);
- }
-
-+static void ks8851_tx_check(struct work_struct *work)
-+{
-+ struct ks8851_net *ks = container_of(work, struct ks8851_net, tx_check);
-+
-+ ks->tx_space = ks8851_rdreg16(ks, KS_TXMIR);
-+ if (ks->tx_space > ks->tx_len)
-+ netif_wake_queue(ks->netdev);
-+ else
-+ schedule_work(&ks->tx_check);
-+}
-+
- /**
- * ks8851_tx_work - process tx packet(s)
- * @work: The work strucutre what was scheduled.
-@@ -865,7 +862,6 @@ static int ks8851_net_open(struct net_device *dev)
- /* clear then enable interrupts */
-
- #define STD_IRQ (IRQ_LCI | /* Link Change */ \
-- IRQ_TXI | /* TX done */ \
- IRQ_RXI | /* RX done */ \
- IRQ_SPIBEI | /* SPI bus error */ \
- IRQ_TXPSI | /* TX process stop */ \
-@@ -903,6 +899,7 @@ static int ks8851_net_stop(struct net_device *dev)
-
- /* stop any outstanding work */
- flush_work(&ks->irq_work);
-+ flush_work(&ks->tx_check);
- flush_work(&ks->tx_work);
- flush_work(&ks->rxctrl_work);
-
-@@ -960,14 +957,16 @@ static netdev_tx_t ks8851_start_xmit(struct sk_buff *skb,
-
- if (needed > ks->tx_space) {
- netif_stop_queue(dev);
-+ ks->tx_len = needed;
-+ schedule_work(&ks->tx_check);
- ret = NETDEV_TX_BUSY;
- } else {
- ks->tx_space -= needed;
- skb_queue_tail(&ks->txq, skb);
-+ schedule_work(&ks->tx_work);
- }
-
- spin_unlock(&ks->statelock);
-- schedule_work(&ks->tx_work);
-
- return ret;
- }
-@@ -1712,6 +1711,7 @@ static int __devinit ks8851_probe(struct spi_device *spi)
- mutex_init(&ks->lock);
- spin_lock_init(&ks->statelock);
-
-+ INIT_WORK(&ks->tx_check, ks8851_tx_check);
- INIT_WORK(&ks->tx_work, ks8851_tx_work);
- INIT_WORK(&ks->irq_work, ks8851_irq_work);
- INIT_WORK(&ks->rxctrl_work, ks8851_rxctrl_work);
---
-1.7.7.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/micrel_zippy2/0014-ksz8851-move-ks8851_set_powermode.patch b/recipes-kernel/linux/linux-mainline-3.2/micrel_zippy2/0014-ksz8851-move-ks8851_set_powermode.patch
deleted file mode 100644
index 8f9df3c..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/micrel_zippy2/0014-ksz8851-move-ks8851_set_powermode.patch
+++ /dev/null
@@ -1,71 +0,0 @@
-From 06112587cca46a906d73d2a6ec450d1e6ae535d3 Mon Sep 17 00:00:00 2001
-From: Robert Nelson <robertcnelson at gmail.com>
-Date: Thu, 29 Sep 2011 11:54:51 -0500
-Subject: [PATCH 14/14] ksz8851 move ks8851_set_powermode
-
-Signed-off-by: Robert Nelson <robertcnelson at gmail.com>
----
- drivers/net/ethernet/micrel/ks8851.c | 40 +++++++++++++++++-----------------
- 1 files changed, 20 insertions(+), 20 deletions(-)
-
-diff --git a/drivers/net/ethernet/micrel/ks8851.c b/drivers/net/ethernet/micrel/ks8851.c
-index b72baa6..c420410 100644
---- a/drivers/net/ethernet/micrel/ks8851.c
-+++ b/drivers/net/ethernet/micrel/ks8851.c
-@@ -338,6 +338,26 @@ static void ks8851_soft_reset(struct ks8851_net *ks, unsigned op)
- }
-
- /**
-+ * ks8851_set_powermode - set power mode of the device
-+ * @ks: The device state
-+ * @pwrmode: The power mode value to write to KS_PMECR.
-+ *
-+ * Change the power mode of the chip.
-+ */
-+static void ks8851_set_powermode(struct ks8851_net *ks, unsigned pwrmode)
-+{
-+ unsigned pmecr;
-+
-+ netif_dbg(ks, hw, ks->netdev, "setting power mode %d\n", pwrmode);
-+
-+ pmecr = ks8851_rdreg16(ks, KS_PMECR);
-+ pmecr &= ~PMECR_PM_MASK;
-+ pmecr |= pwrmode;
-+
-+ ks8851_wrreg16(ks, KS_PMECR, pmecr);
-+}
-+
-+/**
- * ks8851_write_mac_addr - write mac address to device registers
- * @dev: The network device
- *
-@@ -784,26 +804,6 @@ static void ks8851_tx_work(struct work_struct *work)
- }
-
- /**
-- * ks8851_set_powermode - set power mode of the device
-- * @ks: The device state
-- * @pwrmode: The power mode value to write to KS_PMECR.
-- *
-- * Change the power mode of the chip.
-- */
--static void ks8851_set_powermode(struct ks8851_net *ks, unsigned pwrmode)
--{
-- unsigned pmecr;
--
-- netif_dbg(ks, hw, ks->netdev, "setting power mode %d\n", pwrmode);
--
-- pmecr = ks8851_rdreg16(ks, KS_PMECR);
-- pmecr &= ~PMECR_PM_MASK;
-- pmecr |= pwrmode;
--
-- ks8851_wrreg16(ks, KS_PMECR, pmecr);
--}
--
--/**
- * ks8851_net_open - open network device
- * @dev: The network device being opened.
- *
---
-1.7.7.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/omap_cpufreq/0001-cpufreq-OMAP-cleanup-for-multi-SoC-support-move-into.patch b/recipes-kernel/linux/linux-mainline-3.2/omap_cpufreq/0001-cpufreq-OMAP-cleanup-for-multi-SoC-support-move-into.patch
deleted file mode 100644
index c5aed7f..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/omap_cpufreq/0001-cpufreq-OMAP-cleanup-for-multi-SoC-support-move-into.patch
+++ /dev/null
@@ -1,422 +0,0 @@
-From 9c613a8ca7cebad1d7fa4376b80a82adcdc7269e Mon Sep 17 00:00:00 2001
-From: Santosh Shilimkar <santosh.shilimkar at ti.com>
-Date: Wed, 11 Aug 2010 17:02:43 -0700
-Subject: [PATCH 01/11] cpufreq: OMAP: cleanup for multi-SoC support, move
- into drivers/cpufreq
-
-Move OMAP cpufreq driver from arch/arm/mach-omap2 into
-drivers/cpufreq, along with a few cleanups:
-
-- generalize support for better handling of different SoCs in the OMAP
-- use OPP layer instead of OMAP clock internals for frequency table init
-
-Signed-off-by: Santosh Shilimkar <santosh.shilimkar at ti.com>
-[khilman at ti.com: move to drivers]
-Signed-off-by: Kevin Hilman <khilman at ti.com>
----
- arch/arm/plat-omap/Makefile | 1 -
- arch/arm/plat-omap/cpu-omap.c | 171 ------------------------------------
- drivers/cpufreq/Makefile | 1 +
- drivers/cpufreq/omap-cpufreq.c | 188 ++++++++++++++++++++++++++++++++++++++++
- 4 files changed, 189 insertions(+), 172 deletions(-)
- delete mode 100644 arch/arm/plat-omap/cpu-omap.c
- create mode 100644 drivers/cpufreq/omap-cpufreq.c
-
-diff --git a/arch/arm/plat-omap/Makefile b/arch/arm/plat-omap/Makefile
-index 9852622..a53eca3 100644
---- a/arch/arm/plat-omap/Makefile
-+++ b/arch/arm/plat-omap/Makefile
-@@ -19,7 +19,6 @@ obj-$(CONFIG_ARCH_OMAP4) += omap_device.o
-
- obj-$(CONFIG_OMAP_MCBSP) += mcbsp.o
-
--obj-$(CONFIG_CPU_FREQ) += cpu-omap.o
- obj-$(CONFIG_OMAP_DM_TIMER) += dmtimer.o
- obj-$(CONFIG_OMAP_DEBUG_DEVICES) += debug-devices.o
- obj-$(CONFIG_OMAP_DEBUG_LEDS) += debug-leds.o
-diff --git a/arch/arm/plat-omap/cpu-omap.c b/arch/arm/plat-omap/cpu-omap.c
-deleted file mode 100644
-index da4f68d..0000000
---- a/arch/arm/plat-omap/cpu-omap.c
-+++ /dev/null
-@@ -1,171 +0,0 @@
--/*
-- * linux/arch/arm/plat-omap/cpu-omap.c
-- *
-- * CPU frequency scaling for OMAP
-- *
-- * Copyright (C) 2005 Nokia Corporation
-- * Written by Tony Lindgren <tony at atomide.com>
-- *
-- * Based on cpu-sa1110.c, Copyright (C) 2001 Russell King
-- *
-- * This program is free software; you can redistribute it and/or modify
-- * it under the terms of the GNU General Public License version 2 as
-- * published by the Free Software Foundation.
-- */
--#include <linux/types.h>
--#include <linux/kernel.h>
--#include <linux/sched.h>
--#include <linux/cpufreq.h>
--#include <linux/delay.h>
--#include <linux/init.h>
--#include <linux/err.h>
--#include <linux/clk.h>
--#include <linux/io.h>
--
--#include <mach/hardware.h>
--#include <plat/clock.h>
--#include <asm/system.h>
--
--#define VERY_HI_RATE 900000000
--
--static struct cpufreq_frequency_table *freq_table;
--
--#ifdef CONFIG_ARCH_OMAP1
--#define MPU_CLK "mpu"
--#else
--#define MPU_CLK "virt_prcm_set"
--#endif
--
--static struct clk *mpu_clk;
--
--/* TODO: Add support for SDRAM timing changes */
--
--static int omap_verify_speed(struct cpufreq_policy *policy)
--{
-- if (freq_table)
-- return cpufreq_frequency_table_verify(policy, freq_table);
--
-- if (policy->cpu)
-- return -EINVAL;
--
-- cpufreq_verify_within_limits(policy, policy->cpuinfo.min_freq,
-- policy->cpuinfo.max_freq);
--
-- policy->min = clk_round_rate(mpu_clk, policy->min * 1000) / 1000;
-- policy->max = clk_round_rate(mpu_clk, policy->max * 1000) / 1000;
-- cpufreq_verify_within_limits(policy, policy->cpuinfo.min_freq,
-- policy->cpuinfo.max_freq);
-- return 0;
--}
--
--static unsigned int omap_getspeed(unsigned int cpu)
--{
-- unsigned long rate;
--
-- if (cpu)
-- return 0;
--
-- rate = clk_get_rate(mpu_clk) / 1000;
-- return rate;
--}
--
--static int omap_target(struct cpufreq_policy *policy,
-- unsigned int target_freq,
-- unsigned int relation)
--{
-- struct cpufreq_freqs freqs;
-- int ret = 0;
--
-- /* Ensure desired rate is within allowed range. Some govenors
-- * (ondemand) will just pass target_freq=0 to get the minimum. */
-- if (target_freq < policy->min)
-- target_freq = policy->min;
-- if (target_freq > policy->max)
-- target_freq = policy->max;
--
-- freqs.old = omap_getspeed(0);
-- freqs.new = clk_round_rate(mpu_clk, target_freq * 1000) / 1000;
-- freqs.cpu = 0;
--
-- if (freqs.old == freqs.new)
-- return ret;
--
-- cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE);
--#ifdef CONFIG_CPU_FREQ_DEBUG
-- printk(KERN_DEBUG "cpufreq-omap: transition: %u --> %u\n",
-- freqs.old, freqs.new);
--#endif
-- ret = clk_set_rate(mpu_clk, freqs.new * 1000);
-- cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE);
--
-- return ret;
--}
--
--static int __cpuinit omap_cpu_init(struct cpufreq_policy *policy)
--{
-- int result = 0;
--
-- mpu_clk = clk_get(NULL, MPU_CLK);
-- if (IS_ERR(mpu_clk))
-- return PTR_ERR(mpu_clk);
--
-- if (policy->cpu != 0)
-- return -EINVAL;
--
-- policy->cur = policy->min = policy->max = omap_getspeed(0);
--
-- clk_init_cpufreq_table(&freq_table);
-- if (freq_table) {
-- result = cpufreq_frequency_table_cpuinfo(policy, freq_table);
-- if (!result)
-- cpufreq_frequency_table_get_attr(freq_table,
-- policy->cpu);
-- } else {
-- policy->cpuinfo.min_freq = clk_round_rate(mpu_clk, 0) / 1000;
-- policy->cpuinfo.max_freq = clk_round_rate(mpu_clk,
-- VERY_HI_RATE) / 1000;
-- }
--
-- /* FIXME: what's the actual transition time? */
-- policy->cpuinfo.transition_latency = 300 * 1000;
--
-- return 0;
--}
--
--static int omap_cpu_exit(struct cpufreq_policy *policy)
--{
-- clk_exit_cpufreq_table(&freq_table);
-- clk_put(mpu_clk);
-- return 0;
--}
--
--static struct freq_attr *omap_cpufreq_attr[] = {
-- &cpufreq_freq_attr_scaling_available_freqs,
-- NULL,
--};
--
--static struct cpufreq_driver omap_driver = {
-- .flags = CPUFREQ_STICKY,
-- .verify = omap_verify_speed,
-- .target = omap_target,
-- .get = omap_getspeed,
-- .init = omap_cpu_init,
-- .exit = omap_cpu_exit,
-- .name = "omap",
-- .attr = omap_cpufreq_attr,
--};
--
--static int __init omap_cpufreq_init(void)
--{
-- return cpufreq_register_driver(&omap_driver);
--}
--
--arch_initcall(omap_cpufreq_init);
--
--/*
-- * if ever we want to remove this, upon cleanup call:
-- *
-- * cpufreq_unregister_driver()
-- * cpufreq_frequency_table_put_attr()
-- */
--
-diff --git a/drivers/cpufreq/Makefile b/drivers/cpufreq/Makefile
-index a48bc02..ce75fcb 100644
---- a/drivers/cpufreq/Makefile
-+++ b/drivers/cpufreq/Makefile
-@@ -43,6 +43,7 @@ obj-$(CONFIG_UX500_SOC_DB8500) += db8500-cpufreq.o
- obj-$(CONFIG_ARM_S3C64XX_CPUFREQ) += s3c64xx-cpufreq.o
- obj-$(CONFIG_ARM_S5PV210_CPUFREQ) += s5pv210-cpufreq.o
- obj-$(CONFIG_ARM_EXYNOS4210_CPUFREQ) += exynos4210-cpufreq.o
-+obj-$(CONFIG_ARCH_OMAP2PLUS) += omap-cpufreq.o
-
- ##################################################################################
- # PowerPC platform drivers
-diff --git a/drivers/cpufreq/omap-cpufreq.c b/drivers/cpufreq/omap-cpufreq.c
-new file mode 100644
-index 0000000..a6b2be7
---- /dev/null
-+++ b/drivers/cpufreq/omap-cpufreq.c
-@@ -0,0 +1,188 @@
-+/*
-+ * CPU frequency scaling for OMAP
-+ *
-+ * Copyright (C) 2005 Nokia Corporation
-+ * Written by Tony Lindgren <tony at atomide.com>
-+ *
-+ * Based on cpu-sa1110.c, Copyright (C) 2001 Russell King
-+ *
-+ * Copyright (C) 2007-2011 Texas Instruments, Inc.
-+ * - OMAP3/4 support by Rajendra Nayak, Santosh Shilimkar
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ */
-+#include <linux/types.h>
-+#include <linux/kernel.h>
-+#include <linux/sched.h>
-+#include <linux/cpufreq.h>
-+#include <linux/delay.h>
-+#include <linux/init.h>
-+#include <linux/err.h>
-+#include <linux/clk.h>
-+#include <linux/io.h>
-+#include <linux/opp.h>
-+
-+#include <asm/system.h>
-+#include <asm/smp_plat.h>
-+
-+#include <plat/clock.h>
-+#include <plat/omap-pm.h>
-+#include <plat/common.h>
-+
-+#include <mach/hardware.h>
-+
-+#define VERY_HI_RATE 900000000
-+
-+static struct cpufreq_frequency_table *freq_table;
-+static struct clk *mpu_clk;
-+
-+static int omap_verify_speed(struct cpufreq_policy *policy)
-+{
-+ if (freq_table)
-+ return cpufreq_frequency_table_verify(policy, freq_table);
-+
-+ if (policy->cpu)
-+ return -EINVAL;
-+
-+ cpufreq_verify_within_limits(policy, policy->cpuinfo.min_freq,
-+ policy->cpuinfo.max_freq);
-+
-+ policy->min = clk_round_rate(mpu_clk, policy->min * 1000) / 1000;
-+ policy->max = clk_round_rate(mpu_clk, policy->max * 1000) / 1000;
-+ cpufreq_verify_within_limits(policy, policy->cpuinfo.min_freq,
-+ policy->cpuinfo.max_freq);
-+ return 0;
-+}
-+
-+static unsigned int omap_getspeed(unsigned int cpu)
-+{
-+ unsigned long rate;
-+
-+ if (cpu)
-+ return 0;
-+
-+ rate = clk_get_rate(mpu_clk) / 1000;
-+ return rate;
-+}
-+
-+static int omap_target(struct cpufreq_policy *policy,
-+ unsigned int target_freq,
-+ unsigned int relation)
-+{
-+ int ret = 0;
-+ struct cpufreq_freqs freqs;
-+
-+ /* Ensure desired rate is within allowed range. Some govenors
-+ * (ondemand) will just pass target_freq=0 to get the minimum. */
-+ if (target_freq < policy->min)
-+ target_freq = policy->min;
-+ if (target_freq > policy->max)
-+ target_freq = policy->max;
-+
-+ freqs.old = omap_getspeed(0);
-+ freqs.new = clk_round_rate(mpu_clk, target_freq * 1000) / 1000;
-+ freqs.cpu = 0;
-+
-+ if (freqs.old == freqs.new)
-+ return ret;
-+
-+ cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE);
-+
-+#ifdef CONFIG_CPU_FREQ_DEBUG
-+ pr_info("cpufreq-omap: transition: %u --> %u\n", freqs.old, freqs.new);
-+#endif
-+
-+ ret = clk_set_rate(mpu_clk, freqs.new * 1000);
-+
-+ cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE);
-+
-+ return ret;
-+}
-+
-+static int __cpuinit omap_cpu_init(struct cpufreq_policy *policy)
-+{
-+ int result = 0;
-+ struct device *mpu_dev;
-+
-+ if (cpu_is_omap24xx())
-+ mpu_clk = clk_get(NULL, "virt_prcm_set");
-+ else if (cpu_is_omap34xx())
-+ mpu_clk = clk_get(NULL, "dpll1_ck");
-+ else if (cpu_is_omap44xx())
-+ mpu_clk = clk_get(NULL, "dpll_mpu_ck");
-+
-+ if (IS_ERR(mpu_clk))
-+ return PTR_ERR(mpu_clk);
-+
-+ if (policy->cpu != 0)
-+ return -EINVAL;
-+
-+ policy->cur = policy->min = policy->max = omap_getspeed(0);
-+
-+ mpu_dev = omap2_get_mpuss_device();
-+ if (!mpu_dev) {
-+ pr_warning("%s: unable to get the mpu device\n", __func__);
-+ return -EINVAL;
-+ }
-+ opp_init_cpufreq_table(mpu_dev, &freq_table);
-+
-+ if (freq_table) {
-+ result = cpufreq_frequency_table_cpuinfo(policy, freq_table);
-+ if (!result)
-+ cpufreq_frequency_table_get_attr(freq_table,
-+ policy->cpu);
-+ } else {
-+ policy->cpuinfo.min_freq = clk_round_rate(mpu_clk, 0) / 1000;
-+ policy->cpuinfo.max_freq = clk_round_rate(mpu_clk,
-+ VERY_HI_RATE) / 1000;
-+ }
-+
-+ policy->min = policy->cpuinfo.min_freq;
-+ policy->max = policy->cpuinfo.max_freq;
-+ policy->cur = omap_getspeed(0);
-+
-+ /* FIXME: what's the actual transition time? */
-+ policy->cpuinfo.transition_latency = 300 * 1000;
-+
-+ return 0;
-+}
-+
-+static int omap_cpu_exit(struct cpufreq_policy *policy)
-+{
-+ clk_exit_cpufreq_table(&freq_table);
-+ clk_put(mpu_clk);
-+ return 0;
-+}
-+
-+static struct freq_attr *omap_cpufreq_attr[] = {
-+ &cpufreq_freq_attr_scaling_available_freqs,
-+ NULL,
-+};
-+
-+static struct cpufreq_driver omap_driver = {
-+ .flags = CPUFREQ_STICKY,
-+ .verify = omap_verify_speed,
-+ .target = omap_target,
-+ .get = omap_getspeed,
-+ .init = omap_cpu_init,
-+ .exit = omap_cpu_exit,
-+ .name = "omap",
-+ .attr = omap_cpufreq_attr,
-+};
-+
-+static int __init omap_cpufreq_init(void)
-+{
-+ return cpufreq_register_driver(&omap_driver);
-+}
-+
-+static void __exit omap_cpufreq_exit(void)
-+{
-+ cpufreq_unregister_driver(&omap_driver);
-+}
-+
-+MODULE_DESCRIPTION("cpufreq driver for OMAP SoCs");
-+MODULE_LICENSE("GPL");
-+module_init(omap_cpufreq_init);
-+module_exit(omap_cpufreq_exit);
---
-1.7.7.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/omap_cpufreq/0002-cpufreq-OMAP-Add-SMP-support-for-OMAP4.patch b/recipes-kernel/linux/linux-mainline-3.2/omap_cpufreq/0002-cpufreq-OMAP-Add-SMP-support-for-OMAP4.patch
deleted file mode 100644
index c40496b..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/omap_cpufreq/0002-cpufreq-OMAP-Add-SMP-support-for-OMAP4.patch
+++ /dev/null
@@ -1,191 +0,0 @@
-From 87d979c9823e18b22acda61e1ad885d27b123c36 Mon Sep 17 00:00:00 2001
-From: Russell King <rmk+kernel at arm.linux.org.uk>
-Date: Wed, 21 Sep 2011 16:53:00 -0700
-Subject: [PATCH 02/11] cpufreq: OMAP: Add SMP support for OMAP4+
-
-On OMAP SMP configuartion, both processors share the voltage
-and clock. So both CPUs needs to be scaled together and hence
-needs software co-ordination.
-
-Also, update lpj with reference value to avoid progressive error.
-
-Adjust _both_ the per-cpu loops_per_jiffy and global lpj. Calibrate
-them with with reference to the initial values to avoid a
-progressively bigger and bigger error in the value over time.
-
-While at this, re-use the notifiers for UP/SMP since on UP machine or
-UP_ON_SMP policy->cpus mask would contain only the boot CPU.
-
-Based on initial SMP support by Santosh Shilimkar.
-
-Signed-off-by: Russell King <rmk+kernel at arm.linux.org.uk>
-Signed-off-by: Santosh Shilimkar <santosh.shilimkar at ti.com>
-[khilman at ti.com: due to overlap/rework, combined original Santosh patch
- and Russell's rework]
-Signed-off-by: Kevin Hilman <khilman at ti.com>
----
- drivers/cpufreq/omap-cpufreq.c | 81 +++++++++++++++++++++++++++++++++++-----
- 1 files changed, 71 insertions(+), 10 deletions(-)
-
-diff --git a/drivers/cpufreq/omap-cpufreq.c b/drivers/cpufreq/omap-cpufreq.c
-index a6b2be7..1953f9d 100644
---- a/drivers/cpufreq/omap-cpufreq.c
-+++ b/drivers/cpufreq/omap-cpufreq.c
-@@ -23,9 +23,11 @@
- #include <linux/clk.h>
- #include <linux/io.h>
- #include <linux/opp.h>
-+#include <linux/cpu.h>
-
- #include <asm/system.h>
- #include <asm/smp_plat.h>
-+#include <asm/cpu.h>
-
- #include <plat/clock.h>
- #include <plat/omap-pm.h>
-@@ -35,6 +37,16 @@
-
- #define VERY_HI_RATE 900000000
-
-+#ifdef CONFIG_SMP
-+struct lpj_info {
-+ unsigned long ref;
-+ unsigned int freq;
-+};
-+
-+static DEFINE_PER_CPU(struct lpj_info, lpj_ref);
-+static struct lpj_info global_lpj_ref;
-+#endif
-+
- static struct cpufreq_frequency_table *freq_table;
- static struct clk *mpu_clk;
-
-@@ -60,7 +72,7 @@ static unsigned int omap_getspeed(unsigned int cpu)
- {
- unsigned long rate;
-
-- if (cpu)
-+ if (cpu >= NR_CPUS)
- return 0;
-
- rate = clk_get_rate(mpu_clk) / 1000;
-@@ -71,7 +83,7 @@ static int omap_target(struct cpufreq_policy *policy,
- unsigned int target_freq,
- unsigned int relation)
- {
-- int ret = 0;
-+ int i, ret = 0;
- struct cpufreq_freqs freqs;
-
- /* Ensure desired rate is within allowed range. Some govenors
-@@ -81,22 +93,57 @@ static int omap_target(struct cpufreq_policy *policy,
- if (target_freq > policy->max)
- target_freq = policy->max;
-
-- freqs.old = omap_getspeed(0);
-+ freqs.old = omap_getspeed(policy->cpu);
- freqs.new = clk_round_rate(mpu_clk, target_freq * 1000) / 1000;
-- freqs.cpu = 0;
-+ freqs.cpu = policy->cpu;
-
- if (freqs.old == freqs.new)
- return ret;
-
-- cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE);
-+ /* notifiers */
-+ for_each_cpu(i, policy->cpus) {
-+ freqs.cpu = i;
-+ cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE);
-+ }
-
- #ifdef CONFIG_CPU_FREQ_DEBUG
- pr_info("cpufreq-omap: transition: %u --> %u\n", freqs.old, freqs.new);
- #endif
-
- ret = clk_set_rate(mpu_clk, freqs.new * 1000);
-+ freqs.new = omap_getspeed(policy->cpu);
-+
-+#ifdef CONFIG_SMP
-+ /*
-+ * Note that loops_per_jiffy is not updated on SMP systems in
-+ * cpufreq driver. So, update the per-CPU loops_per_jiffy value
-+ * on frequency transition. We need to update all dependent CPUs.
-+ */
-+ for_each_cpu(i, policy->cpus) {
-+ struct lpj_info *lpj = &per_cpu(lpj_ref, i);
-+ if (!lpj->freq) {
-+ lpj->ref = per_cpu(cpu_data, i).loops_per_jiffy;
-+ lpj->freq = freqs.old;
-+ }
-+
-+ per_cpu(cpu_data, i).loops_per_jiffy =
-+ cpufreq_scale(lpj->ref, lpj->freq, freqs.new);
-+ }
-
-- cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE);
-+ /* And don't forget to adjust the global one */
-+ if (!global_lpj_ref.freq) {
-+ global_lpj_ref.ref = loops_per_jiffy;
-+ global_lpj_ref.freq = freqs.old;
-+ }
-+ loops_per_jiffy = cpufreq_scale(global_lpj_ref.ref, global_lpj_ref.freq,
-+ freqs.new);
-+#endif
-+
-+ /* notifiers */
-+ for_each_cpu(i, policy->cpus) {
-+ freqs.cpu = i;
-+ cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE);
-+ }
-
- return ret;
- }
-@@ -105,6 +152,7 @@ static int __cpuinit omap_cpu_init(struct cpufreq_policy *policy)
- {
- int result = 0;
- struct device *mpu_dev;
-+ static cpumask_var_t cpumask;
-
- if (cpu_is_omap24xx())
- mpu_clk = clk_get(NULL, "virt_prcm_set");
-@@ -116,12 +164,12 @@ static int __cpuinit omap_cpu_init(struct cpufreq_policy *policy)
- if (IS_ERR(mpu_clk))
- return PTR_ERR(mpu_clk);
-
-- if (policy->cpu != 0)
-+ if (policy->cpu >= NR_CPUS)
- return -EINVAL;
-
-- policy->cur = policy->min = policy->max = omap_getspeed(0);
--
-+ policy->cur = policy->min = policy->max = omap_getspeed(policy->cpu);
- mpu_dev = omap2_get_mpuss_device();
-+
- if (!mpu_dev) {
- pr_warning("%s: unable to get the mpu device\n", __func__);
- return -EINVAL;
-@@ -141,7 +189,20 @@ static int __cpuinit omap_cpu_init(struct cpufreq_policy *policy)
-
- policy->min = policy->cpuinfo.min_freq;
- policy->max = policy->cpuinfo.max_freq;
-- policy->cur = omap_getspeed(0);
-+ policy->cur = omap_getspeed(policy->cpu);
-+
-+ /*
-+ * On OMAP SMP configuartion, both processors share the voltage
-+ * and clock. So both CPUs needs to be scaled together and hence
-+ * needs software co-ordination. Use cpufreq affected_cpus
-+ * interface to handle this scenario. Additional is_smp() check
-+ * is to keep SMP_ON_UP build working.
-+ */
-+ if (is_smp()) {
-+ policy->shared_type = CPUFREQ_SHARED_TYPE_ANY;
-+ cpumask_or(cpumask, cpumask_of(policy->cpu), cpumask);
-+ cpumask_copy(policy->cpus, cpumask);
-+ }
-
- /* FIXME: what's the actual transition time? */
- policy->cpuinfo.transition_latency = 300 * 1000;
---
-1.7.7.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/omap_cpufreq/0003-cpufreq-OMAP-Enable-all-CPUs-in-shared-policy-mask.patch b/recipes-kernel/linux/linux-mainline-3.2/omap_cpufreq/0003-cpufreq-OMAP-Enable-all-CPUs-in-shared-policy-mask.patch
deleted file mode 100644
index 7a2f48a..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/omap_cpufreq/0003-cpufreq-OMAP-Enable-all-CPUs-in-shared-policy-mask.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From ed54323b7c150554e68cb02d90dd36b60fe4e275 Mon Sep 17 00:00:00 2001
-From: Todd Poynor <toddpoynor at google.com>
-Date: Tue, 7 Jun 2011 13:57:52 -0700
-Subject: [PATCH 03/11] cpufreq: OMAP: Enable all CPUs in shared policy mask
-
-Enable all CPUs in the shared policy in the CPU init callback.
-Otherwise, the governor CPUFREQ_GOV_START event is invoked with
-a policy that only includes the first CPU, leaving other CPUs
-uninitialized by the governor.
-
-Signed-off-by: Todd Poynor <toddpoynor at google.com>
-Acked-by: Santosh Shilimkar <santosh.shilimkar at ti.com>
-Signed-off-by: Kevin Hilman <khilman at ti.com>
----
- drivers/cpufreq/omap-cpufreq.c | 4 +---
- 1 files changed, 1 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/cpufreq/omap-cpufreq.c b/drivers/cpufreq/omap-cpufreq.c
-index 1953f9d..3f5a816 100644
---- a/drivers/cpufreq/omap-cpufreq.c
-+++ b/drivers/cpufreq/omap-cpufreq.c
-@@ -152,7 +152,6 @@ static int __cpuinit omap_cpu_init(struct cpufreq_policy *policy)
- {
- int result = 0;
- struct device *mpu_dev;
-- static cpumask_var_t cpumask;
-
- if (cpu_is_omap24xx())
- mpu_clk = clk_get(NULL, "virt_prcm_set");
-@@ -200,8 +199,7 @@ static int __cpuinit omap_cpu_init(struct cpufreq_policy *policy)
- */
- if (is_smp()) {
- policy->shared_type = CPUFREQ_SHARED_TYPE_ANY;
-- cpumask_or(cpumask, cpumask_of(policy->cpu), cpumask);
-- cpumask_copy(policy->cpus, cpumask);
-+ cpumask_setall(policy->cpus);
- }
-
- /* FIXME: what's the actual transition time? */
---
-1.7.7.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/omap_cpufreq/0004-cpufreq-OMAP-notify-even-with-bad-boot-frequency.patch b/recipes-kernel/linux/linux-mainline-3.2/omap_cpufreq/0004-cpufreq-OMAP-notify-even-with-bad-boot-frequency.patch
deleted file mode 100644
index d31eec3..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/omap_cpufreq/0004-cpufreq-OMAP-notify-even-with-bad-boot-frequency.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From 0661a55786b8ee53e388e1608eb56e4661273c6b Mon Sep 17 00:00:00 2001
-From: Colin Cross <ccross at google.com>
-Date: Mon, 6 Jun 2011 21:05:29 -0500
-Subject: [PATCH 04/11] cpufreq: OMAP: notify even with bad boot frequency
-
-Sometimes, bootloaders starts up with a frequency which is not
-in the OPP table. At cpu_init, policy->cur contains the frequency
-we pick at boot. It is possible that system might have fixed
-it's boot frequency later on as part of power initialization.
-After this condition, the first call to omap_target results in the
-following:
-
-omap_getspeed(actual device frequency) != policy->cur(frequency that
-cpufreq thinks that the system is at), and it is possible that
-freqs.old == freqs.new (because the governor requested a scale down).
-
-We exit without triggering the notifiers in the current code, which
-does'nt let code which depends on cpufreq_notify_transition to have
-accurate information as to what the system frequency is.
-
-Instead, we do a normal transition if policy->cur is wrong, then,
-freqs.old will be the actual cpu frequency, freqs.new will be the
-actual new cpu frequency and all required notifiers have the accurate
-information.
-
-Acked-by: Nishanth Menon <nm at ti.com>
-Signed-off-by: Colin Cross <ccross at google.com>
-Signed-off-by: Kevin Hilman <khilman at ti.com>
----
- drivers/cpufreq/omap-cpufreq.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/cpufreq/omap-cpufreq.c b/drivers/cpufreq/omap-cpufreq.c
-index 3f5a816..0a5d95c 100644
---- a/drivers/cpufreq/omap-cpufreq.c
-+++ b/drivers/cpufreq/omap-cpufreq.c
-@@ -97,7 +97,7 @@ static int omap_target(struct cpufreq_policy *policy,
- freqs.new = clk_round_rate(mpu_clk, target_freq * 1000) / 1000;
- freqs.cpu = policy->cpu;
-
-- if (freqs.old == freqs.new)
-+ if (freqs.old == freqs.new && policy->cur == freqs.new)
- return ret;
-
- /* notifiers */
---
-1.7.7.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/omap_cpufreq/0005-cpufreq-OMAP-move-clk-name-decision-to-init.patch b/recipes-kernel/linux/linux-mainline-3.2/omap_cpufreq/0005-cpufreq-OMAP-move-clk-name-decision-to-init.patch
deleted file mode 100644
index 825a524..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/omap_cpufreq/0005-cpufreq-OMAP-move-clk-name-decision-to-init.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-From 37b0a6ccc284854592918359f825371c36a801ab Mon Sep 17 00:00:00 2001
-From: Nishanth Menon <nm at ti.com>
-Date: Wed, 25 May 2011 16:38:46 -0700
-Subject: [PATCH 05/11] cpufreq: OMAP: move clk name decision to init
-
-Clk name does'nt need to dynamically detected during clk init.
-move them off to driver initialization, if we dont have a clk name,
-there is no point in registering the driver anyways. The actual clk
-get and put is left at cpu_init and exit functions.
-
-Signed-off-by: Nishanth Menon <nm at ti.com>
-Signed-off-by: Kevin Hilman <khilman at ti.com>
----
- drivers/cpufreq/omap-cpufreq.c | 20 +++++++++++++-------
- 1 files changed, 13 insertions(+), 7 deletions(-)
-
-diff --git a/drivers/cpufreq/omap-cpufreq.c b/drivers/cpufreq/omap-cpufreq.c
-index 0a5d95c..3651825 100644
---- a/drivers/cpufreq/omap-cpufreq.c
-+++ b/drivers/cpufreq/omap-cpufreq.c
-@@ -49,6 +49,7 @@ static struct lpj_info global_lpj_ref;
-
- static struct cpufreq_frequency_table *freq_table;
- static struct clk *mpu_clk;
-+static char *mpu_clk_name;
-
- static int omap_verify_speed(struct cpufreq_policy *policy)
- {
-@@ -153,13 +154,7 @@ static int __cpuinit omap_cpu_init(struct cpufreq_policy *policy)
- int result = 0;
- struct device *mpu_dev;
-
-- if (cpu_is_omap24xx())
-- mpu_clk = clk_get(NULL, "virt_prcm_set");
-- else if (cpu_is_omap34xx())
-- mpu_clk = clk_get(NULL, "dpll1_ck");
-- else if (cpu_is_omap44xx())
-- mpu_clk = clk_get(NULL, "dpll_mpu_ck");
--
-+ mpu_clk = clk_get(NULL, mpu_clk_name);
- if (IS_ERR(mpu_clk))
- return PTR_ERR(mpu_clk);
-
-@@ -233,6 +228,17 @@ static struct cpufreq_driver omap_driver = {
-
- static int __init omap_cpufreq_init(void)
- {
-+ if (cpu_is_omap24xx())
-+ mpu_clk_name = "virt_prcm_set";
-+ else if (cpu_is_omap34xx())
-+ mpu_clk_name = "dpll1_ck";
-+ else if (cpu_is_omap44xx())
-+ mpu_clk_name = "dpll_mpu_ck";
-+
-+ if (!mpu_clk_name) {
-+ pr_err("%s: unsupported Silicon?\n", __func__);
-+ return -EINVAL;
-+ }
- return cpufreq_register_driver(&omap_driver);
- }
-
---
-1.7.7.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/omap_cpufreq/0006-cpufreq-OMAP-deny-initialization-if-no-mpudev.patch b/recipes-kernel/linux/linux-mainline-3.2/omap_cpufreq/0006-cpufreq-OMAP-deny-initialization-if-no-mpudev.patch
deleted file mode 100644
index 2e2179d..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/omap_cpufreq/0006-cpufreq-OMAP-deny-initialization-if-no-mpudev.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-From 6e85de6b5c1d71d372c23bf1f5c2388b9560f42f Mon Sep 17 00:00:00 2001
-From: Nishanth Menon <nm at ti.com>
-Date: Wed, 25 May 2011 16:38:47 -0700
-Subject: [PATCH 06/11] cpufreq: OMAP: deny initialization if no mpudev
-
-if we do not have mpu_dev we normally fail in cpu_init. It is better
-to fail driver registration if the devices are not available.
-
-Signed-off-by: Nishanth Menon <nm at ti.com>
-Signed-off-by: Kevin Hilman <khilman at ti.com>
----
- drivers/cpufreq/omap-cpufreq.c | 15 ++++++++-------
- 1 files changed, 8 insertions(+), 7 deletions(-)
-
-diff --git a/drivers/cpufreq/omap-cpufreq.c b/drivers/cpufreq/omap-cpufreq.c
-index 3651825..dda32fd 100644
---- a/drivers/cpufreq/omap-cpufreq.c
-+++ b/drivers/cpufreq/omap-cpufreq.c
-@@ -50,6 +50,7 @@ static struct lpj_info global_lpj_ref;
- static struct cpufreq_frequency_table *freq_table;
- static struct clk *mpu_clk;
- static char *mpu_clk_name;
-+static struct device *mpu_dev;
-
- static int omap_verify_speed(struct cpufreq_policy *policy)
- {
-@@ -152,7 +153,6 @@ static int omap_target(struct cpufreq_policy *policy,
- static int __cpuinit omap_cpu_init(struct cpufreq_policy *policy)
- {
- int result = 0;
-- struct device *mpu_dev;
-
- mpu_clk = clk_get(NULL, mpu_clk_name);
- if (IS_ERR(mpu_clk))
-@@ -162,12 +162,6 @@ static int __cpuinit omap_cpu_init(struct cpufreq_policy *policy)
- return -EINVAL;
-
- policy->cur = policy->min = policy->max = omap_getspeed(policy->cpu);
-- mpu_dev = omap2_get_mpuss_device();
--
-- if (!mpu_dev) {
-- pr_warning("%s: unable to get the mpu device\n", __func__);
-- return -EINVAL;
-- }
- opp_init_cpufreq_table(mpu_dev, &freq_table);
-
- if (freq_table) {
-@@ -239,6 +233,13 @@ static int __init omap_cpufreq_init(void)
- pr_err("%s: unsupported Silicon?\n", __func__);
- return -EINVAL;
- }
-+
-+ mpu_dev = omap2_get_mpuss_device();
-+ if (!mpu_dev) {
-+ pr_warning("%s: unable to get the mpu device\n", __func__);
-+ return -EINVAL;
-+ }
-+
- return cpufreq_register_driver(&omap_driver);
- }
-
---
-1.7.7.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/omap_cpufreq/0007-cpufreq-OMAP-dont-support-freq_table.patch b/recipes-kernel/linux/linux-mainline-3.2/omap_cpufreq/0007-cpufreq-OMAP-dont-support-freq_table.patch
deleted file mode 100644
index 582d966..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/omap_cpufreq/0007-cpufreq-OMAP-dont-support-freq_table.patch
+++ /dev/null
@@ -1,125 +0,0 @@
-From 01d968ec96c7d6e9ba21a287e2836687be31d669 Mon Sep 17 00:00:00 2001
-From: Nishanth Menon <nm at ti.com>
-Date: Thu, 26 May 2011 19:39:17 -0700
-Subject: [PATCH 07/11] cpufreq: OMAP: dont support !freq_table
-
-OMAP2+ all have frequency tables, hence the hacks we had for older
-silicon do not need to be carried forward. As part of this change,
-use cpufreq_frequency_table_target to find the best match for
-frequency requested.
-
-Signed-off-by: Nishanth Menon <nm at ti.com>
-Signed-off-by: Kevin Hilman <khilman at ti.com>
----
- drivers/cpufreq/omap-cpufreq.c | 67 +++++++++++++++++++--------------------
- 1 files changed, 33 insertions(+), 34 deletions(-)
-
-diff --git a/drivers/cpufreq/omap-cpufreq.c b/drivers/cpufreq/omap-cpufreq.c
-index dda32fd..eecb096 100644
---- a/drivers/cpufreq/omap-cpufreq.c
-+++ b/drivers/cpufreq/omap-cpufreq.c
-@@ -35,8 +35,6 @@
-
- #include <mach/hardware.h>
-
--#define VERY_HI_RATE 900000000
--
- #ifdef CONFIG_SMP
- struct lpj_info {
- unsigned long ref;
-@@ -54,20 +52,9 @@ static struct device *mpu_dev;
-
- static int omap_verify_speed(struct cpufreq_policy *policy)
- {
-- if (freq_table)
-- return cpufreq_frequency_table_verify(policy, freq_table);
--
-- if (policy->cpu)
-+ if (!freq_table)
- return -EINVAL;
--
-- cpufreq_verify_within_limits(policy, policy->cpuinfo.min_freq,
-- policy->cpuinfo.max_freq);
--
-- policy->min = clk_round_rate(mpu_clk, policy->min * 1000) / 1000;
-- policy->max = clk_round_rate(mpu_clk, policy->max * 1000) / 1000;
-- cpufreq_verify_within_limits(policy, policy->cpuinfo.min_freq,
-- policy->cpuinfo.max_freq);
-- return 0;
-+ return cpufreq_frequency_table_verify(policy, freq_table);
- }
-
- static unsigned int omap_getspeed(unsigned int cpu)
-@@ -85,18 +72,31 @@ static int omap_target(struct cpufreq_policy *policy,
- unsigned int target_freq,
- unsigned int relation)
- {
-- int i, ret = 0;
-+ unsigned int i;
-+ int ret = 0;
- struct cpufreq_freqs freqs;
-
-- /* Ensure desired rate is within allowed range. Some govenors
-- * (ondemand) will just pass target_freq=0 to get the minimum. */
-- if (target_freq < policy->min)
-- target_freq = policy->min;
-- if (target_freq > policy->max)
-- target_freq = policy->max;
-+ if (!freq_table) {
-+ dev_err(mpu_dev, "%s: cpu%d: no freq table!\n", __func__,
-+ policy->cpu);
-+ return -EINVAL;
-+ }
-+
-+ ret = cpufreq_frequency_table_target(policy, freq_table, target_freq,
-+ relation, &i);
-+ if (ret) {
-+ dev_dbg(mpu_dev, "%s: cpu%d: no freq match for %d(ret=%d)\n",
-+ __func__, policy->cpu, target_freq, ret);
-+ return ret;
-+ }
-+ freqs.new = freq_table[i].frequency;
-+ if (!freqs.new) {
-+ dev_err(mpu_dev, "%s: cpu%d: no match for freq %d\n", __func__,
-+ policy->cpu, target_freq);
-+ return -EINVAL;
-+ }
-
- freqs.old = omap_getspeed(policy->cpu);
-- freqs.new = clk_round_rate(mpu_clk, target_freq * 1000) / 1000;
- freqs.cpu = policy->cpu;
-
- if (freqs.old == freqs.new && policy->cur == freqs.new)
-@@ -162,19 +162,18 @@ static int __cpuinit omap_cpu_init(struct cpufreq_policy *policy)
- return -EINVAL;
-
- policy->cur = policy->min = policy->max = omap_getspeed(policy->cpu);
-- opp_init_cpufreq_table(mpu_dev, &freq_table);
--
-- if (freq_table) {
-- result = cpufreq_frequency_table_cpuinfo(policy, freq_table);
-- if (!result)
-- cpufreq_frequency_table_get_attr(freq_table,
-- policy->cpu);
-- } else {
-- policy->cpuinfo.min_freq = clk_round_rate(mpu_clk, 0) / 1000;
-- policy->cpuinfo.max_freq = clk_round_rate(mpu_clk,
-- VERY_HI_RATE) / 1000;
-+ result = opp_init_cpufreq_table(mpu_dev, &freq_table);
-+
-+ if (result) {
-+ dev_err(mpu_dev, "%s: cpu%d: failed creating freq table[%d]\n",
-+ __func__, policy->cpu, result);
-+ return result;
- }
-
-+ result = cpufreq_frequency_table_cpuinfo(policy, freq_table);
-+ if (!result)
-+ cpufreq_frequency_table_get_attr(freq_table, policy->cpu);
-+
- policy->min = policy->cpuinfo.min_freq;
- policy->max = policy->cpuinfo.max_freq;
- policy->cur = omap_getspeed(policy->cpu);
---
-1.7.7.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/omap_cpufreq/0008-cpufreq-OMAP-only-supports-OPP-library.patch b/recipes-kernel/linux/linux-mainline-3.2/omap_cpufreq/0008-cpufreq-OMAP-only-supports-OPP-library.patch
deleted file mode 100644
index 76ca383..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/omap_cpufreq/0008-cpufreq-OMAP-only-supports-OPP-library.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 508bd6dae63589ea98c38f031e98dcad2fa18976 Mon Sep 17 00:00:00 2001
-From: Nishanth Menon <nm at ti.com>
-Date: Thu, 26 May 2011 19:39:18 -0700
-Subject: [PATCH 08/11] cpufreq: OMAP: only supports OPP library
-
-OMAP2 is the only family using clk_[init|exit]_cpufreq_table, however,
-the cpufreq code does not currently use clk_init_cpufreq_table. As a
-result, it is unusuable for OMAP2 and only usable only on platforms
-using OPP library.
-
-Remove the unbalanced clk_exit_cpufreq_table(). Any platforms where
-OPPs are not availble will fail on init because a freq table will not
-be properly initialized.
-
-Signed-off-by: Nishanth Menon <nm at ti.com>
-[khilman at ti.com: changelog edits, and graceful failure mode changes]
-Signed-off-by: Kevin Hilman <khilman at ti.com>
----
- drivers/cpufreq/omap-cpufreq.c | 3 +--
- 1 files changed, 1 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/cpufreq/omap-cpufreq.c b/drivers/cpufreq/omap-cpufreq.c
-index eecb096..8f778b9 100644
---- a/drivers/cpufreq/omap-cpufreq.c
-+++ b/drivers/cpufreq/omap-cpufreq.c
-@@ -1,5 +1,5 @@
- /*
-- * CPU frequency scaling for OMAP
-+ * CPU frequency scaling for OMAP using OPP information
- *
- * Copyright (C) 2005 Nokia Corporation
- * Written by Tony Lindgren <tony at atomide.com>
-@@ -198,7 +198,6 @@ static int __cpuinit omap_cpu_init(struct cpufreq_policy *policy)
-
- static int omap_cpu_exit(struct cpufreq_policy *policy)
- {
-- clk_exit_cpufreq_table(&freq_table);
- clk_put(mpu_clk);
- return 0;
- }
---
-1.7.7.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/omap_cpufreq/0009-cpufreq-OMAP-put-clk-if-cpu_init-failed.patch b/recipes-kernel/linux/linux-mainline-3.2/omap_cpufreq/0009-cpufreq-OMAP-put-clk-if-cpu_init-failed.patch
deleted file mode 100644
index abdde26..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/omap_cpufreq/0009-cpufreq-OMAP-put-clk-if-cpu_init-failed.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From 7f37af0e32e0bc99fc7459bfd3a6748c44b7d563 Mon Sep 17 00:00:00 2001
-From: Nishanth Menon <nm at ti.com>
-Date: Thu, 26 May 2011 19:39:19 -0700
-Subject: [PATCH 09/11] cpufreq: OMAP: put clk if cpu_init failed
-
-Release the mpu_clk in fail paths.
-
-Reported-by: Todd Poynor <toddpoynor at google.com>
-Signed-off-by: Nishanth Menon <nm at ti.com>
-Signed-off-by: Kevin Hilman <khilman at ti.com>
----
- drivers/cpufreq/omap-cpufreq.c | 14 +++++++++++---
- 1 files changed, 11 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/cpufreq/omap-cpufreq.c b/drivers/cpufreq/omap-cpufreq.c
-index 8f778b9..8c54192 100644
---- a/drivers/cpufreq/omap-cpufreq.c
-+++ b/drivers/cpufreq/omap-cpufreq.c
-@@ -158,8 +158,10 @@ static int __cpuinit omap_cpu_init(struct cpufreq_policy *policy)
- if (IS_ERR(mpu_clk))
- return PTR_ERR(mpu_clk);
-
-- if (policy->cpu >= NR_CPUS)
-- return -EINVAL;
-+ if (policy->cpu >= NR_CPUS) {
-+ result = -EINVAL;
-+ goto fail_ck;
-+ }
-
- policy->cur = policy->min = policy->max = omap_getspeed(policy->cpu);
- result = opp_init_cpufreq_table(mpu_dev, &freq_table);
-@@ -167,12 +169,14 @@ static int __cpuinit omap_cpu_init(struct cpufreq_policy *policy)
- if (result) {
- dev_err(mpu_dev, "%s: cpu%d: failed creating freq table[%d]\n",
- __func__, policy->cpu, result);
-- return result;
-+ goto fail_ck;
- }
-
- result = cpufreq_frequency_table_cpuinfo(policy, freq_table);
- if (!result)
- cpufreq_frequency_table_get_attr(freq_table, policy->cpu);
-+ else
-+ goto fail_ck;
-
- policy->min = policy->cpuinfo.min_freq;
- policy->max = policy->cpuinfo.max_freq;
-@@ -194,6 +198,10 @@ static int __cpuinit omap_cpu_init(struct cpufreq_policy *policy)
- policy->cpuinfo.transition_latency = 300 * 1000;
-
- return 0;
-+
-+fail_ck:
-+ clk_put(mpu_clk);
-+ return result;
- }
-
- static int omap_cpu_exit(struct cpufreq_policy *policy)
---
-1.7.7.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/omap_cpufreq/0010-cpufreq-OMAP-fix-freq_table-leak.patch b/recipes-kernel/linux/linux-mainline-3.2/omap_cpufreq/0010-cpufreq-OMAP-fix-freq_table-leak.patch
deleted file mode 100644
index e40dc9d..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/omap_cpufreq/0010-cpufreq-OMAP-fix-freq_table-leak.patch
+++ /dev/null
@@ -1,90 +0,0 @@
-From eacc1163972fc46357883d58adab8b2d237c2598 Mon Sep 17 00:00:00 2001
-From: Nishanth Menon <nm at ti.com>
-Date: Thu, 26 May 2011 19:39:20 -0700
-Subject: [PATCH 10/11] cpufreq: OMAP: fix freq_table leak
-
-We use a single frequency table for multiple CPUs. But, with
-OMAP4, since we have multiple CPUs, the cpu_init call for CPU1
-causes freq_table previously allocated for CPU0 to be overwritten.
-In addition, we dont free the table on exit path.
-
-We solve this by maintaining an atomic type counter to ensure
-just a single table exists at a given time.
-
-Signed-off-by: Nishanth Menon <nm at ti.com>
-Signed-off-by: Kevin Hilman <khilman at ti.com>
----
- drivers/cpufreq/omap-cpufreq.c | 22 +++++++++++++++++-----
- 1 files changed, 17 insertions(+), 5 deletions(-)
-
-diff --git a/drivers/cpufreq/omap-cpufreq.c b/drivers/cpufreq/omap-cpufreq.c
-index 8c54192..ad94b4f 100644
---- a/drivers/cpufreq/omap-cpufreq.c
-+++ b/drivers/cpufreq/omap-cpufreq.c
-@@ -46,6 +46,7 @@ static struct lpj_info global_lpj_ref;
- #endif
-
- static struct cpufreq_frequency_table *freq_table;
-+static atomic_t freq_table_users = ATOMIC_INIT(0);
- static struct clk *mpu_clk;
- static char *mpu_clk_name;
- static struct device *mpu_dev;
-@@ -150,6 +151,12 @@ static int omap_target(struct cpufreq_policy *policy,
- return ret;
- }
-
-+static inline void freq_table_free(void)
-+{
-+ if (atomic_dec_and_test(&freq_table_users))
-+ opp_free_cpufreq_table(mpu_dev, &freq_table);
-+}
-+
- static int __cpuinit omap_cpu_init(struct cpufreq_policy *policy)
- {
- int result = 0;
-@@ -164,7 +171,9 @@ static int __cpuinit omap_cpu_init(struct cpufreq_policy *policy)
- }
-
- policy->cur = policy->min = policy->max = omap_getspeed(policy->cpu);
-- result = opp_init_cpufreq_table(mpu_dev, &freq_table);
-+
-+ if (atomic_inc_return(&freq_table_users) == 1)
-+ result = opp_init_cpufreq_table(mpu_dev, &freq_table);
-
- if (result) {
- dev_err(mpu_dev, "%s: cpu%d: failed creating freq table[%d]\n",
-@@ -173,10 +182,10 @@ static int __cpuinit omap_cpu_init(struct cpufreq_policy *policy)
- }
-
- result = cpufreq_frequency_table_cpuinfo(policy, freq_table);
-- if (!result)
-- cpufreq_frequency_table_get_attr(freq_table, policy->cpu);
-- else
-- goto fail_ck;
-+ if (result)
-+ goto fail_table;
-+
-+ cpufreq_frequency_table_get_attr(freq_table, policy->cpu);
-
- policy->min = policy->cpuinfo.min_freq;
- policy->max = policy->cpuinfo.max_freq;
-@@ -199,6 +208,8 @@ static int __cpuinit omap_cpu_init(struct cpufreq_policy *policy)
-
- return 0;
-
-+fail_table:
-+ freq_table_free();
- fail_ck:
- clk_put(mpu_clk);
- return result;
-@@ -206,6 +217,7 @@ fail_ck:
-
- static int omap_cpu_exit(struct cpufreq_policy *policy)
- {
-+ freq_table_free();
- clk_put(mpu_clk);
- return 0;
- }
---
-1.7.7.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/omap_cpufreq/0011-cpufreq-OMAP-fixup-for-omap_device-changes-include-l.patch b/recipes-kernel/linux/linux-mainline-3.2/omap_cpufreq/0011-cpufreq-OMAP-fixup-for-omap_device-changes-include-l.patch
deleted file mode 100644
index cb11d7a..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/omap_cpufreq/0011-cpufreq-OMAP-fixup-for-omap_device-changes-include-l.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 492ddcd5eb9b88526903716293342b312595292a Mon Sep 17 00:00:00 2001
-From: Kevin Hilman <khilman at ti.com>
-Date: Fri, 30 Sep 2011 10:41:26 -0700
-Subject: [PATCH 11/11] cpufreq: OMAP: fixup for omap_device changes, include
- <linux/module.h>
-
-Minor fixups to work starting with v3.2:
-- use the new omap_device API for getting a device by name.
-- need to include <linux/module.h>
-
-Signed-off-by: Kevin Hilman <khilman at ti.com>
----
- drivers/cpufreq/omap-cpufreq.c | 4 +++-
- 1 files changed, 3 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/cpufreq/omap-cpufreq.c b/drivers/cpufreq/omap-cpufreq.c
-index ad94b4f..5d04c57 100644
---- a/drivers/cpufreq/omap-cpufreq.c
-+++ b/drivers/cpufreq/omap-cpufreq.c
-@@ -24,6 +24,7 @@
- #include <linux/io.h>
- #include <linux/opp.h>
- #include <linux/cpu.h>
-+#include <linux/module.h>
-
- #include <asm/system.h>
- #include <asm/smp_plat.h>
-@@ -32,6 +33,7 @@
- #include <plat/clock.h>
- #include <plat/omap-pm.h>
- #include <plat/common.h>
-+#include <plat/omap_device.h>
-
- #include <mach/hardware.h>
-
-@@ -252,7 +254,7 @@ static int __init omap_cpufreq_init(void)
- return -EINVAL;
- }
-
-- mpu_dev = omap2_get_mpuss_device();
-+ mpu_dev = omap_device_get_by_hwmod_name("mpu");
- if (!mpu_dev) {
- pr_warning("%s: unable to get the mpu device\n", __func__);
- return -EINVAL;
---
-1.7.7.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/omap_fixes/0001-omap3-Increase-limit-on-bootarg-mpurate.patch b/recipes-kernel/linux/linux-mainline-3.2/omap_fixes/0001-omap3-Increase-limit-on-bootarg-mpurate.patch
deleted file mode 100644
index 597c4dd..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/omap_fixes/0001-omap3-Increase-limit-on-bootarg-mpurate.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 8c23e194ca34d280d21ca845acd18052928002d0 Mon Sep 17 00:00:00 2001
-From: Sanjeev Premi <premi at ti.com>
-Date: Thu, 29 Apr 2010 14:09:42 +0530
-Subject: [PATCH 1/6] omap3: Increase limit on bootarg 'mpurate'
-
-The value of mpurate is currently expected to be less
-than 1000 when specified in MHz.
-
-This patch raises this limit to 2000 to support 1GHz
-capable processors. The new limit should be reasonable
-for quite some time.
-
-Signed-off-by: Robert Nelson <robertcnelson at gmail.com>
----
- arch/arm/plat-omap/clock.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/arch/arm/plat-omap/clock.c b/arch/arm/plat-omap/clock.c
-index 567e4b5..fe4e67c 100644
---- a/arch/arm/plat-omap/clock.c
-+++ b/arch/arm/plat-omap/clock.c
-@@ -186,7 +186,7 @@ static int __init omap_clk_setup(char *str)
- if (!mpurate)
- return 1;
-
-- if (mpurate < 1000)
-+ if (mpurate < 2000)
- mpurate *= 1000000;
-
- return 1;
---
-1.7.7.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/omap_fixes/0002-ARM-OMAP-AM3517-3505-fix-crash-on-boot-due-to-incorr.patch b/recipes-kernel/linux/linux-mainline-3.2/omap_fixes/0002-ARM-OMAP-AM3517-3505-fix-crash-on-boot-due-to-incorr.patch
deleted file mode 100644
index 5c839c6..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/omap_fixes/0002-ARM-OMAP-AM3517-3505-fix-crash-on-boot-due-to-incorr.patch
+++ /dev/null
@@ -1,110 +0,0 @@
-From 4f047b347137482b1894ab1c48ed472993dbbe54 Mon Sep 17 00:00:00 2001
-From: Paul Walmsley <paul at pwsan.com>
-Date: Fri, 16 Dec 2011 16:09:11 -0800
-Subject: [PATCH 2/6] ARM: OMAP: AM3517/3505: fix crash on boot due to
- incorrect voltagedomain data
-
-AM3517/3505 chips don't have voltage controller and voltage processor
-IP blocks. Trying to use OMAP34xx/36xx voltage domain data on these
-chips causes a crash during boot:
-
- omap_vc_init_channel: PMIC info requried to configure vc forvdd_core not populated.Hence cannot initialize vc
- Unable to handle kernel NULL pointer dereference at virtual address 00000025
- pgd = c0004000
- [00000025] *pgd=00000000
- Internal error: Oops: 5 [#1] SMP
- Modules linked in:
- CPU: 0 Tainted: G W (3.2.0-rc5-00006-g402ecf4 #304)
- PC is at omap_vp_init+0x5c/0x14c
- LR is at omap_vp_init+0x54/0x14c
-
-Fix this by using very minimal voltage domain definitions for AM3517/3505.
-
-Signed-off-by: Paul Walmsley <paul at pwsan.com>
-Cc: Igor Grinberg <grinberg at compulab.co.il>
-Cc: Kevin Hilman <khilman at ti.com>
-Signed-off-by: Tony Lindgren <tony at atomide.com>
----
- arch/arm/mach-omap2/voltagedomains3xxx_data.c | 40 +++++++++++++++++++++----
- 1 files changed, 34 insertions(+), 6 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/voltagedomains3xxx_data.c b/arch/arm/mach-omap2/voltagedomains3xxx_data.c
-index 071101d..636b688 100644
---- a/arch/arm/mach-omap2/voltagedomains3xxx_data.c
-+++ b/arch/arm/mach-omap2/voltagedomains3xxx_data.c
-@@ -31,6 +31,14 @@
- * VDD data
- */
-
-+/* OMAP3-common voltagedomain data */
-+
-+static struct voltagedomain omap3_voltdm_wkup = {
-+ .name = "wakeup",
-+};
-+
-+/* 34xx/36xx voltagedomain data */
-+
- static const struct omap_vfsm_instance omap3_vdd1_vfsm = {
- .voltsetup_reg = OMAP3_PRM_VOLTSETUP1_OFFSET,
- .voltsetup_mask = OMAP3430_SETUP_TIME1_MASK,
-@@ -63,10 +71,6 @@ static struct voltagedomain omap3_voltdm_core = {
- .vp = &omap3_vp_core,
- };
-
--static struct voltagedomain omap3_voltdm_wkup = {
-- .name = "wakeup",
--};
--
- static struct voltagedomain *voltagedomains_omap3[] __initdata = {
- &omap3_voltdm_mpu,
- &omap3_voltdm_core,
-@@ -74,11 +78,30 @@ static struct voltagedomain *voltagedomains_omap3[] __initdata = {
- NULL,
- };
-
-+/* AM35xx voltagedomain data */
-+
-+static struct voltagedomain am35xx_voltdm_mpu = {
-+ .name = "mpu_iva",
-+};
-+
-+static struct voltagedomain am35xx_voltdm_core = {
-+ .name = "core",
-+};
-+
-+static struct voltagedomain *voltagedomains_am35xx[] __initdata = {
-+ &am35xx_voltdm_mpu,
-+ &am35xx_voltdm_core,
-+ &omap3_voltdm_wkup,
-+ NULL,
-+};
-+
-+
- static const char *sys_clk_name __initdata = "sys_ck";
-
- void __init omap3xxx_voltagedomains_init(void)
- {
- struct voltagedomain *voltdm;
-+ struct voltagedomain **voltdms;
- int i;
-
- /*
-@@ -93,8 +116,13 @@ void __init omap3xxx_voltagedomains_init(void)
- omap3_voltdm_core.volt_data = omap34xx_vddcore_volt_data;
- }
-
-- for (i = 0; voltdm = voltagedomains_omap3[i], voltdm; i++)
-+ if (cpu_is_omap3517() || cpu_is_omap3505())
-+ voltdms = voltagedomains_am35xx;
-+ else
-+ voltdms = voltagedomains_omap3;
-+
-+ for (i = 0; voltdm = voltdms[i], voltdm; i++)
- voltdm->sys_clk.name = sys_clk_name;
-
-- voltdm_init(voltagedomains_omap3);
-+ voltdm_init(voltdms);
- };
---
-1.7.7.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/omap_fixes/0003-ARM-OMAP4-hwmod-Don-t-wait-for-the-idle-status-if-mo.patch b/recipes-kernel/linux/linux-mainline-3.2/omap_fixes/0003-ARM-OMAP4-hwmod-Don-t-wait-for-the-idle-status-if-mo.patch
deleted file mode 100644
index aa29304..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/omap_fixes/0003-ARM-OMAP4-hwmod-Don-t-wait-for-the-idle-status-if-mo.patch
+++ /dev/null
@@ -1,200 +0,0 @@
-From 3752df4a899250ce6ad4ebd46e0c58235f9dcfa0 Mon Sep 17 00:00:00 2001
-From: Benoit Cousson <b-cousson at ti.com>
-Date: Fri, 16 Dec 2011 16:09:11 -0800
-Subject: [PATCH 3/6] ARM: OMAP4: hwmod: Don't wait for the idle status if
- modulemode is not supported
-
-If the module does not have any modulemode, the _disable_module function
-will do nothing. There is then no point waiting for a idle status change.
-
-It will remove the following warnings.
-
-[ 0.331848] omap_hwmod: dmm: _wait_target_disable failed
-[ 0.339935] omap_hwmod: emif_fw: _wait_target_disable failed
-[ 0.348358] omap_hwmod: l3_main_1: _wait_target_disable failed
-[ 0.356964] omap_hwmod: l3_main_2: _wait_target_disable failed
-[ 0.365600] omap_hwmod: l4_abe: _wait_target_disable failed
-[ 0.373931] omap_hwmod: l4_cfg: _wait_target_disable failed
-[ 0.382263] omap_hwmod: l4_per: _wait_target_disable failed
-[ 0.391113] omap_hwmod: l4_wkup: _wait_target_disable failed
-[ 0.399536] omap_hwmod: dma_system: _wait_target_disable failed
-[ 0.408325] omap_hwmod: dss_core: _wait_target_disable failed
-[ 0.416839] omap_hwmod: dss_dispc: _wait_target_disable failed
-[ 0.425445] omap_hwmod: dss_dsi1: _wait_target_disable failed
-[ 0.433990] omap_hwmod: dss_dsi2: _wait_target_disable failed
-[ 0.442504] omap_hwmod: dss_hdmi: _wait_target_disable failed
-[ 0.451019] omap_hwmod: dss_rfbi: _wait_target_disable failed
-[ 0.459564] omap_hwmod: dss_venc: _wait_target_disable failed
-[ 0.489471] omap_hwmod: mailbox: _wait_target_disable failed
-[ 0.505920] omap_hwmod: spinlock: _wait_target_disable failed
-
-Note: For such module, the state is managed automatically by HW according
-to clock domain transition. It is then not possible to wait for idle even
-later in the _idle function since the status will change at clock domain
-boundary.
-
-Signed-off-by: Benoit Cousson <b-cousson at ti.com>
-Cc: Paul Walmsley <paul at pwsan.com>
-Cc: Rajendra Nayak <rnayak at ti.com>
-[paul at pwsan.com: renamed fns to indicate that they are OMAP4-only; moved
- _wait_target_disable() into _disable_module(), removing duplicate code]
-Signed-off-by: Paul Walmsley <paul at pwsan.com>
-Signed-off-by: Tony Lindgren <tony at atomide.com>
----
- arch/arm/mach-omap2/omap_hwmod.c | 98 +++++++++++++++++++-------------------
- 1 files changed, 49 insertions(+), 49 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c
-index 207a2ff..ebace0f 100644
---- a/arch/arm/mach-omap2/omap_hwmod.c
-+++ b/arch/arm/mach-omap2/omap_hwmod.c
-@@ -706,27 +706,65 @@ static void _enable_module(struct omap_hwmod *oh)
- }
-
- /**
-- * _disable_module - enable CLKCTRL modulemode on OMAP4
-+ * _omap4_wait_target_disable - wait for a module to be disabled on OMAP4
-+ * @oh: struct omap_hwmod *
-+ *
-+ * Wait for a module @oh to enter slave idle. Returns 0 if the module
-+ * does not have an IDLEST bit or if the module successfully enters
-+ * slave idle; otherwise, pass along the return value of the
-+ * appropriate *_cm*_wait_module_idle() function.
-+ */
-+static int _omap4_wait_target_disable(struct omap_hwmod *oh)
-+{
-+ if (!cpu_is_omap44xx())
-+ return 0;
-+
-+ if (!oh)
-+ return -EINVAL;
-+
-+ if (oh->_int_flags & _HWMOD_NO_MPU_PORT)
-+ return 0;
-+
-+ if (oh->flags & HWMOD_NO_IDLEST)
-+ return 0;
-+
-+ return omap4_cminst_wait_module_idle(oh->clkdm->prcm_partition,
-+ oh->clkdm->cm_inst,
-+ oh->clkdm->clkdm_offs,
-+ oh->prcm.omap4.clkctrl_offs);
-+}
-+
-+/**
-+ * _omap4_disable_module - enable CLKCTRL modulemode on OMAP4
- * @oh: struct omap_hwmod *
- *
- * Disable the PRCM module mode related to the hwmod @oh.
-- * No return value.
-+ * Return EINVAL if the modulemode is not supported and 0 in case of success.
- */
--static void _disable_module(struct omap_hwmod *oh)
-+static int _omap4_disable_module(struct omap_hwmod *oh)
- {
-+ int v;
-+
- /* The module mode does not exist prior OMAP4 */
-- if (cpu_is_omap24xx() || cpu_is_omap34xx())
-- return;
-+ if (!cpu_is_omap44xx())
-+ return -EINVAL;
-
- if (!oh->clkdm || !oh->prcm.omap4.modulemode)
-- return;
-+ return -EINVAL;
-
-- pr_debug("omap_hwmod: %s: _disable_module\n", oh->name);
-+ pr_debug("omap_hwmod: %s: %s\n", oh->name, __func__);
-
- omap4_cminst_module_disable(oh->clkdm->prcm_partition,
- oh->clkdm->cm_inst,
- oh->clkdm->clkdm_offs,
- oh->prcm.omap4.clkctrl_offs);
-+
-+ v = _omap4_wait_target_disable(oh);
-+ if (v)
-+ pr_warn("omap_hwmod: %s: _wait_target_disable failed\n",
-+ oh->name);
-+
-+ return 0;
- }
-
- /**
-@@ -1153,36 +1191,6 @@ static int _wait_target_ready(struct omap_hwmod *oh)
- }
-
- /**
-- * _wait_target_disable - wait for a module to be disabled
-- * @oh: struct omap_hwmod *
-- *
-- * Wait for a module @oh to enter slave idle. Returns 0 if the module
-- * does not have an IDLEST bit or if the module successfully enters
-- * slave idle; otherwise, pass along the return value of the
-- * appropriate *_cm*_wait_module_idle() function.
-- */
--static int _wait_target_disable(struct omap_hwmod *oh)
--{
-- /* TODO: For now just handle OMAP4+ */
-- if (cpu_is_omap24xx() || cpu_is_omap34xx())
-- return 0;
--
-- if (!oh)
-- return -EINVAL;
--
-- if (oh->_int_flags & _HWMOD_NO_MPU_PORT)
-- return 0;
--
-- if (oh->flags & HWMOD_NO_IDLEST)
-- return 0;
--
-- return omap4_cminst_wait_module_idle(oh->clkdm->prcm_partition,
-- oh->clkdm->cm_inst,
-- oh->clkdm->clkdm_offs,
-- oh->prcm.omap4.clkctrl_offs);
--}
--
--/**
- * _lookup_hardreset - fill register bit info for this hwmod/reset line
- * @oh: struct omap_hwmod *
- * @name: name of the reset line in the context of this hwmod
-@@ -1524,8 +1532,6 @@ static int _enable(struct omap_hwmod *oh)
- */
- static int _idle(struct omap_hwmod *oh)
- {
-- int ret;
--
- pr_debug("omap_hwmod: %s: idling\n", oh->name);
-
- if (oh->_state != _HWMOD_STATE_ENABLED) {
-@@ -1537,11 +1543,9 @@ static int _idle(struct omap_hwmod *oh)
- if (oh->class->sysc)
- _idle_sysc(oh);
- _del_initiator_dep(oh, mpu_oh);
-- _disable_module(oh);
-- ret = _wait_target_disable(oh);
-- if (ret)
-- pr_warn("omap_hwmod: %s: _wait_target_disable failed\n",
-- oh->name);
-+
-+ _omap4_disable_module(oh);
-+
- /*
- * The module must be in idle mode before disabling any parents
- * clocks. Otherwise, the parent clock might be disabled before
-@@ -1642,11 +1646,7 @@ static int _shutdown(struct omap_hwmod *oh)
- if (oh->_state == _HWMOD_STATE_ENABLED) {
- _del_initiator_dep(oh, mpu_oh);
- /* XXX what about the other system initiators here? dma, dsp */
-- _disable_module(oh);
-- ret = _wait_target_disable(oh);
-- if (ret)
-- pr_warn("omap_hwmod: %s: _wait_target_disable failed\n",
-- oh->name);
-+ _omap4_disable_module(oh);
- _disable_clocks(oh);
- if (oh->clkdm)
- clkdm_hwmod_disable(oh->clkdm, oh);
---
-1.7.7.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/omap_fixes/0004-ARM-OMAP4-clock-Add-CPU-local-timer-clock-node.patch b/recipes-kernel/linux/linux-mainline-3.2/omap_fixes/0004-ARM-OMAP4-clock-Add-CPU-local-timer-clock-node.patch
deleted file mode 100644
index f6c4ab6..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/omap_fixes/0004-ARM-OMAP4-clock-Add-CPU-local-timer-clock-node.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From 65f1ea963900225224754f674e8907248262a46b Mon Sep 17 00:00:00 2001
-From: Santosh Shilimkar <santosh.shilimkar at ti.com>
-Date: Fri, 16 Dec 2011 16:09:12 -0800
-Subject: [PATCH 4/6] ARM: OMAP4: clock: Add CPU local timer clock node
-
-Local timer clock is sourced from the CPU clock and hence changes
-along with CPU clock. These per CPU local timers are used as
-clock-events, so they need to be reconfigured on CPU frequency
-change as part of CPUfreq governor.
-
-Newly introduced clockevents_reconfigure() needs to know the
-twd clock-rate. Provide a clock-node to make clk_get_rate() work
-for TWD.
-
-Signed-off-by: Santosh Shilimkar <santosh.shilimkar at ti.com>
-Cc: Paul Walmsley <paul at pwsan.com>
-Cc: Kevin Hilman <khilman at ti.com>
-[paul at pwsan.com: renamed clock node to 'mpu_periphclk' to indicate that this
- is the Cortex-A9 MPCore subsystem clock PERIPHCLK (DDI 0407G); moved
- clock and clkdev entries to match the autogenerated script output]
-Signed-off-by: Paul Walmsley <paul at pwsan.com>
-Signed-off-by: Tony Lindgren <tony at atomide.com>
----
- arch/arm/mach-omap2/clock44xx_data.c | 9 +++++++++
- 1 files changed, 9 insertions(+), 0 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/clock44xx_data.c b/arch/arm/mach-omap2/clock44xx_data.c
-index 0798a80..730097e 100644
---- a/arch/arm/mach-omap2/clock44xx_data.c
-+++ b/arch/arm/mach-omap2/clock44xx_data.c
-@@ -1206,6 +1206,14 @@ static const struct clksel ocp_abe_iclk_div[] = {
- { .parent = NULL },
- };
-
-+static struct clk mpu_periphclk = {
-+ .name = "mpu_periphclk",
-+ .parent = &dpll_mpu_ck,
-+ .ops = &clkops_null,
-+ .fixed_div = 2,
-+ .recalc = &omap_fixed_divisor_recalc,
-+};
-+
- static struct clk ocp_abe_iclk = {
- .name = "ocp_abe_iclk",
- .parent = &aess_fclk,
-@@ -3189,6 +3197,7 @@ static struct omap_clk omap44xx_clks[] = {
- CLK(NULL, "l4_div_ck", &l4_div_ck, CK_443X),
- CLK(NULL, "lp_clk_div_ck", &lp_clk_div_ck, CK_443X),
- CLK(NULL, "l4_wkup_clk_mux_ck", &l4_wkup_clk_mux_ck, CK_443X),
-+ CLK("smp_twd", NULL, &mpu_periphclk, CK_443X),
- CLK(NULL, "ocp_abe_iclk", &ocp_abe_iclk, CK_443X),
- CLK(NULL, "per_abe_24m_fclk", &per_abe_24m_fclk, CK_443X),
- CLK(NULL, "per_abe_nc_fclk", &per_abe_nc_fclk, CK_443X),
---
-1.7.7.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/omap_fixes/0005-ARM-OMAP3-hwmod-data-disable-multiblock-reads-on-MMC.patch b/recipes-kernel/linux/linux-mainline-3.2/omap_fixes/0005-ARM-OMAP3-hwmod-data-disable-multiblock-reads-on-MMC.patch
deleted file mode 100644
index 11461bc..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/omap_fixes/0005-ARM-OMAP3-hwmod-data-disable-multiblock-reads-on-MMC.patch
+++ /dev/null
@@ -1,161 +0,0 @@
-From 44d502c38e4c7bd924c7ac987af4525ec3e8818f Mon Sep 17 00:00:00 2001
-From: Paul Walmsley <paul at pwsan.com>
-Date: Thu, 15 Dec 2011 23:30:44 -0700
-Subject: [PATCH 5/6] ARM: OMAP3: hwmod data: disable multiblock reads on
- MMC1/2 on OMAP34xx/35xx <= ES2.1
-
-The HSMMC1/HSMMC2 host controllers on OMAP34xx and
-OMAP3503/3515/3525/3530 chips at ES levels prior to 3.0 can't do multiple
-block reads[1]. Mark the hwmod data appropriately.
-
-Reported by Dave Hylands <dhylands at gmail.com> and Steve Sakoman
-<sakoman at gmail.com>. Thanks to Steve Sakoman for further help
-testing this patch.
-
-1. See for example Advisory 2.1.1.128 "MMC: Multiple Block Read
- Operation Issue" in _OMAP3530/3525/3515/3503 Silicon Errata_
- Revision F (October 2010) (SPRZ278F), available from
- http://focus.ti.com/lit/er/sprz278f/sprz278f.pdf
-
-Note: added 36xx/am35 stuff in the next patch..
-
-Signed-off-by: Paul Walmsley <paul at pwsan.com>
-Cc: Dave Hylands <dhylands at gmail.com>
-Cc: Steve Sakoman <sakoman at gmail.com>
-Signed-off-by: Robert Nelson <robertcnelson at gmail.com>
----
- arch/arm/mach-omap2/omap_hwmod_3xxx_data.c | 90 ++++++++++++++++++++++++++-
- 1 files changed, 86 insertions(+), 4 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
-index eef43e2..dcbcd64 100644
---- a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
-+++ b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
-@@ -3072,7 +3072,35 @@ static struct omap_mmc_dev_attr mmc1_dev_attr = {
- .flags = OMAP_HSMMC_SUPPORTS_DUAL_VOLT,
- };
-
--static struct omap_hwmod omap3xxx_mmc1_hwmod = {
-+/* See 35xx errata 2.1.1.128 in SPRZ278F */
-+static struct omap_mmc_dev_attr mmc1_pre_es3_dev_attr = {
-+ .flags = (OMAP_HSMMC_SUPPORTS_DUAL_VOLT |
-+ OMAP_HSMMC_BROKEN_MULTIBLOCK_READ),
-+};
-+
-+static struct omap_hwmod omap3xxx_pre_es3_mmc1_hwmod = {
-+ .name = "mmc1",
-+ .mpu_irqs = omap34xx_mmc1_mpu_irqs,
-+ .sdma_reqs = omap34xx_mmc1_sdma_reqs,
-+ .opt_clks = omap34xx_mmc1_opt_clks,
-+ .opt_clks_cnt = ARRAY_SIZE(omap34xx_mmc1_opt_clks),
-+ .main_clk = "mmchs1_fck",
-+ .prcm = {
-+ .omap2 = {
-+ .module_offs = CORE_MOD,
-+ .prcm_reg_id = 1,
-+ .module_bit = OMAP3430_EN_MMC1_SHIFT,
-+ .idlest_reg_id = 1,
-+ .idlest_idle_bit = OMAP3430_ST_MMC1_SHIFT,
-+ },
-+ },
-+ .dev_attr = &mmc1_pre_es3_dev_attr,
-+ .slaves = omap3xxx_mmc1_slaves,
-+ .slaves_cnt = ARRAY_SIZE(omap3xxx_mmc1_slaves),
-+ .class = &omap34xx_mmc_class,
-+};
-+
-+static struct omap_hwmod omap3xxx_es3plus_mmc1_hwmod = {
- .name = "mmc1",
- .mpu_irqs = omap34xx_mmc1_mpu_irqs,
- .sdma_reqs = omap34xx_mmc1_sdma_reqs,
-@@ -3115,7 +3143,34 @@ static struct omap_hwmod_ocp_if *omap3xxx_mmc2_slaves[] = {
- &omap3xxx_l4_core__mmc2,
- };
-
--static struct omap_hwmod omap3xxx_mmc2_hwmod = {
-+/* See 35xx errata 2.1.1.128 in SPRZ278F */
-+static struct omap_mmc_dev_attr mmc2_pre_es3_dev_attr = {
-+ .flags = OMAP_HSMMC_BROKEN_MULTIBLOCK_READ,
-+};
-+
-+static struct omap_hwmod omap3xxx_pre_es3_mmc2_hwmod = {
-+ .name = "mmc2",
-+ .mpu_irqs = omap34xx_mmc2_mpu_irqs,
-+ .sdma_reqs = omap34xx_mmc2_sdma_reqs,
-+ .opt_clks = omap34xx_mmc2_opt_clks,
-+ .opt_clks_cnt = ARRAY_SIZE(omap34xx_mmc2_opt_clks),
-+ .main_clk = "mmchs2_fck",
-+ .prcm = {
-+ .omap2 = {
-+ .module_offs = CORE_MOD,
-+ .prcm_reg_id = 1,
-+ .module_bit = OMAP3430_EN_MMC2_SHIFT,
-+ .idlest_reg_id = 1,
-+ .idlest_idle_bit = OMAP3430_ST_MMC2_SHIFT,
-+ },
-+ },
-+ .dev_attr = &mmc2_pre_es3_dev_attr,
-+ .slaves = omap3xxx_mmc2_slaves,
-+ .slaves_cnt = ARRAY_SIZE(omap3xxx_mmc2_slaves),
-+ .class = &omap34xx_mmc_class,
-+};
-+
-+static struct omap_hwmod omap3xxx_es3plus_mmc2_hwmod = {
- .name = "mmc2",
- .mpu_irqs = omap34xx_mmc2_mpu_irqs,
- .sdma_reqs = omap34xx_mmc2_sdma_reqs,
-@@ -3182,8 +3237,6 @@ static __initdata struct omap_hwmod *omap3xxx_hwmods[] = {
- &omap3xxx_l4_core_hwmod,
- &omap3xxx_l4_per_hwmod,
- &omap3xxx_l4_wkup_hwmod,
-- &omap3xxx_mmc1_hwmod,
-- &omap3xxx_mmc2_hwmod,
- &omap3xxx_mmc3_hwmod,
- &omap3xxx_mpu_hwmod,
-
-@@ -3258,6 +3311,20 @@ static __initdata struct omap_hwmod *omap3430es2plus_hwmods[] = {
- NULL
- };
-
-+/* <= 3430ES3-only hwmods */
-+static struct omap_hwmod *omap3430_pre_es3_hwmods[] __initdata = {
-+ &omap3xxx_pre_es3_mmc1_hwmod,
-+ &omap3xxx_pre_es3_mmc2_hwmod,
-+ NULL
-+};
-+
-+/* 3430ES3+-only hwmods */
-+static struct omap_hwmod *omap3430_es3plus_hwmods[] __initdata = {
-+ &omap3xxx_es3plus_mmc1_hwmod,
-+ &omap3xxx_es3plus_mmc2_hwmod,
-+ NULL
-+};
-+
- /* 34xx-only hwmods (all ES revisions) */
- static __initdata struct omap_hwmod *omap34xx_hwmods[] = {
- &omap3xxx_iva_hwmod,
-@@ -3334,6 +3401,21 @@ int __init omap3xxx_hwmod_init(void)
- h = omap3430es2plus_hwmods;
- };
-
-+ if (h) {
-+ r = omap_hwmod_register(h);
-+ if (r < 0)
-+ return r;
-+ }
-+
-+ h = NULL;
-+ if (rev == OMAP3430_REV_ES1_0 || rev == OMAP3430_REV_ES2_0 ||
-+ rev == OMAP3430_REV_ES2_1) {
-+ h = omap3430_pre_es3_hwmods;
-+ } else if (rev == OMAP3430_REV_ES3_0 || rev == OMAP3430_REV_ES3_1 ||
-+ rev == OMAP3430_REV_ES3_1_2) {
-+ h = omap3430_es3plus_hwmods;
-+ };
-+
- if (h)
- r = omap_hwmod_register(h);
-
---
-1.7.7.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/omap_fixes/0006-OMAP-HWMOD-add-es3plus-to-am36xx-am35xx.patch b/recipes-kernel/linux/linux-mainline-3.2/omap_fixes/0006-OMAP-HWMOD-add-es3plus-to-am36xx-am35xx.patch
deleted file mode 100644
index 3843345..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/omap_fixes/0006-OMAP-HWMOD-add-es3plus-to-am36xx-am35xx.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 9607ccc0276ee734d3c1a58da0ab4ee18c7fbd29 Mon Sep 17 00:00:00 2001
-From: Robert Nelson <robertcnelson at gmail.com>
-Date: Wed, 28 Dec 2011 10:32:54 -0600
-Subject: [PATCH 6/6] OMAP: HWMOD: add es3plus to am36xx/am35xx
-
-Signed-off-by: Robert Nelson <robertcnelson at gmail.com>
----
- arch/arm/mach-omap2/omap_hwmod_3xxx_data.c | 4 ++++
- 1 files changed, 4 insertions(+), 0 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
-index dcbcd64..3e1a489 100644
---- a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
-+++ b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
-@@ -3343,12 +3343,16 @@ static __initdata struct omap_hwmod *omap36xx_hwmods[] = {
- &omap36xx_sr2_hwmod,
- &omap3xxx_usbhsotg_hwmod,
- &omap3xxx_mailbox_hwmod,
-+ &omap3xxx_es3plus_mmc1_hwmod,
-+ &omap3xxx_es3plus_mmc2_hwmod,
- NULL
- };
-
- static __initdata struct omap_hwmod *am35xx_hwmods[] = {
- &omap3xxx_dss_core_hwmod, /* XXX ??? */
- &am35xx_usbhsotg_hwmod,
-+ &omap3xxx_es3plus_mmc1_hwmod,
-+ &omap3xxx_es3plus_mmc2_hwmod,
- NULL
- };
-
---
-1.7.7.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/panda/0001-panda-fix-wl12xx-regulator.patch b/recipes-kernel/linux/linux-mainline-3.2/panda/0001-panda-fix-wl12xx-regulator.patch
deleted file mode 100644
index 537f9a1..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/panda/0001-panda-fix-wl12xx-regulator.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 70fa21fa8918eaa6eb4e7bc98be328412804f52c Mon Sep 17 00:00:00 2001
-From: Robert Nelson <robertcnelson at gmail.com>
-Date: Tue, 2 Aug 2011 21:55:34 -0500
-Subject: [PATCH 1/3] panda: fix wl12xx regulator
-
-pulled from: http://elinux.org/Panda_How_to_kernel_3_0_rel
-
-Signed-off-by: Robert Nelson <robertcnelson at gmail.com>
----
- arch/arm/mach-omap2/twl-common.c | 1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/twl-common.c b/arch/arm/mach-omap2/twl-common.c
-index 10b20c6..5a1f23a 100644
---- a/arch/arm/mach-omap2/twl-common.c
-+++ b/arch/arm/mach-omap2/twl-common.c
-@@ -281,6 +281,7 @@ static struct regulator_init_data omap4_vusb_idata = {
- static struct regulator_init_data omap4_clk32kg_idata = {
- .constraints = {
- .valid_ops_mask = REGULATOR_CHANGE_STATUS,
-+ .always_on = true,
- },
- };
-
---
-1.7.7.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/panda/0002-panda-enable-bluetooth.patch b/recipes-kernel/linux/linux-mainline-3.2/panda/0002-panda-enable-bluetooth.patch
deleted file mode 100644
index 672896b..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/panda/0002-panda-enable-bluetooth.patch
+++ /dev/null
@@ -1,88 +0,0 @@
-From b0bd9a744aaaa95cae2640d00b3e046862399f4d Mon Sep 17 00:00:00 2001
-From: Robert Nelson <robertcnelson at gmail.com>
-Date: Fri, 16 Mar 2012 10:23:09 -0500
-Subject: [PATCH 2/3] panda enable bluetooth
-
-The PandaBoard features a Texas Instruments WiLink7 Bluetooth
-chip, supported by the "btwilink" driver. The "uim" deamon
-requires sysfs entries that are filled in using this platform data.
-
-Signed-off-by: Mircea Gherzan <mgherzan at gmail.com>
-Signed-off-by: Robert Nelson <robertcnelson at gmail.com>
----
- arch/arm/mach-omap2/board-omap4panda.c | 21 +++++++++++++++++++--
- include/linux/ti_wilink_st.h | 2 ++
- 2 files changed, 21 insertions(+), 2 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-omap4panda.c b/arch/arm/mach-omap2/board-omap4panda.c
-index 51b1c93..9f133ce 100644
---- a/arch/arm/mach-omap2/board-omap4panda.c
-+++ b/arch/arm/mach-omap2/board-omap4panda.c
-@@ -27,6 +27,7 @@
- #include <linux/i2c/twl.h>
- #include <linux/regulator/machine.h>
- #include <linux/regulator/fixed.h>
-+#include <linux/ti_wilink_st.h>
- #include <linux/wl12xx.h>
-
- #include <mach/hardware.h>
-@@ -56,15 +57,29 @@
- #define HDMI_GPIO_HPD 63 /* Hotplug detect */
-
- /* wl127x BT, FM, GPS connectivity chip */
--static int wl1271_gpios[] = {46, -1, -1};
-+static struct ti_st_plat_data wilink_platform_data = {
-+ .nshutdown_gpio = 46,
-+ .dev_name = "/dev/ttyO1",
-+ .flow_cntrl = 1,
-+ .baud_rate = 3000000,
-+ .chip_enable = NULL,
-+ .suspend = NULL,
-+ .resume = NULL,
-+};
-+
- static struct platform_device wl1271_device = {
- .name = "kim",
- .id = -1,
- .dev = {
-- .platform_data = &wl1271_gpios,
-+ .platform_data = &wilink_platform_data,
- },
- };
-
-+static struct platform_device btwilink_device = {
-+ .name = "btwilink",
-+ .id = -1,
-+};
-+
- static struct gpio_led gpio_leds[] = {
- {
- .name = "pandaboard::status1",
-@@ -91,9 +106,11 @@ static struct platform_device leds_gpio = {
- },
- };
-
-+
- static struct platform_device *panda_devices[] __initdata = {
- &leds_gpio,
- &wl1271_device,
-+ &btwilink_device,
- };
-
- static const struct usbhs_omap_board_data usbhs_bdata __initconst = {
-diff --git a/include/linux/ti_wilink_st.h b/include/linux/ti_wilink_st.h
-index 2ef4385..3ca0269 100644
---- a/include/linux/ti_wilink_st.h
-+++ b/include/linux/ti_wilink_st.h
-@@ -25,6 +25,8 @@
- #ifndef TI_WILINK_ST_H
- #define TI_WILINK_ST_H
-
-+#include <linux/skbuff.h>
-+
- /**
- * enum proto-type - The protocol on WiLink chips which share a
- * common physical interface like UART.
---
-1.7.7.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/panda/0003-ti-st-st-kim-fixing-firmware-path.patch b/recipes-kernel/linux/linux-mainline-3.2/panda/0003-ti-st-st-kim-fixing-firmware-path.patch
deleted file mode 100644
index d35ed10..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/panda/0003-ti-st-st-kim-fixing-firmware-path.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From d55373d5923e5486c0f63c3fe907bb3b168673b4 Mon Sep 17 00:00:00 2001
-From: Ricardo Salveti de Araujo <ricardo.salveti at linaro.org>
-Date: Tue, 25 Oct 2011 10:06:39 +0200
-Subject: [PATCH 3/3] ti-st/st-kim: fixing firmware path
-
-Signed-off-by: Ricardo Salveti de Araujo <ricardo.salveti at linaro.org>
----
- drivers/misc/ti-st/st_kim.c | 4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/misc/ti-st/st_kim.c b/drivers/misc/ti-st/st_kim.c
-index 43ef8d1..00c2ecd 100644
---- a/drivers/misc/ti-st/st_kim.c
-+++ b/drivers/misc/ti-st/st_kim.c
-@@ -224,7 +224,7 @@ static long read_local_version(struct kim_data_s *kim_gdata, char *bts_scr_name)
- if (version & 0x8000)
- maj_ver |= 0x0008;
-
-- sprintf(bts_scr_name, "TIInit_%d.%d.%d.bts", chip, maj_ver, min_ver);
-+ sprintf(bts_scr_name, "ti-connectivity/TIInit_%d.%d.%d.bts", chip, maj_ver, min_ver);
-
- /* to be accessed later via sysfs entry */
- kim_gdata->version.full = version;
-@@ -267,7 +267,7 @@ static long download_firmware(struct kim_data_s *kim_gdata)
- long len = 0;
- unsigned char *ptr = NULL;
- unsigned char *action_ptr = NULL;
-- unsigned char bts_scr_name[30] = { 0 }; /* 30 char long bts scr name? */
-+ unsigned char bts_scr_name[50] = { 0 }; /* 50 char long bts scr name? */
- int wr_room_space;
- int cmd_size;
- unsigned long timeout;
---
-1.7.7.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/sakoman/0001-OMAP-DSS2-add-bootarg-for-selecting-svideo.patch b/recipes-kernel/linux/linux-mainline-3.2/sakoman/0001-OMAP-DSS2-add-bootarg-for-selecting-svideo.patch
deleted file mode 100644
index cc17b5f..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/sakoman/0001-OMAP-DSS2-add-bootarg-for-selecting-svideo.patch
+++ /dev/null
@@ -1,78 +0,0 @@
-From 0d8912990ee89be4166d30d44ed5522590605a3d Mon Sep 17 00:00:00 2001
-From: Steve Sakoman <steve at sakoman.com>
-Date: Tue, 19 Jan 2010 21:19:15 -0800
-Subject: [PATCH 1/3] OMAP: DSS2: add bootarg for selecting svideo
-
- OMAP: DSS2: add bootarg for selecting svideo or composite for tv output
- also add pal-16 and ntsc-16 omapfb.mode settings for 16bpp
-
-Signed-off-by: Robert Nelson <robertcnelson at gmail.com>
----
- drivers/video/omap2/dss/venc.c | 22 ++++++++++++++++++++++
- drivers/video/omap2/omapfb/omapfb-main.c | 10 +++++++++-
- 2 files changed, 31 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/video/omap2/dss/venc.c b/drivers/video/omap2/dss/venc.c
-index 7533458..b404095 100644
---- a/drivers/video/omap2/dss/venc.c
-+++ b/drivers/video/omap2/dss/venc.c
-@@ -87,6 +87,11 @@
- #define VENC_OUTPUT_TEST 0xC8
- #define VENC_DAC_B__DAC_C 0xC8
-
-+static char *tv_connection;
-+
-+module_param_named(tvcable, tv_connection, charp, 0);
-+MODULE_PARM_DESC(tvcable, "TV connection type (svideo, composite)");
-+
- struct venc_config {
- u32 f_control;
- u32 vidout_ctrl;
-@@ -474,6 +479,23 @@ static int venc_panel_probe(struct omap_dss_device *dssdev)
- {
- dssdev->panel.timings = omap_dss_pal_timings;
-
-+ /* Allow the TV output to be overriden */
-+ if (tv_connection) {
-+ if (strcmp(tv_connection, "svideo") == 0) {
-+ printk(KERN_INFO
-+ "omapdss: tv output is svideo.\n");
-+ dssdev->phy.venc.type = OMAP_DSS_VENC_TYPE_SVIDEO;
-+ } else if (strcmp(tv_connection, "composite") == 0) {
-+ printk(KERN_INFO
-+ "omapdss: tv output is composite.\n");
-+ dssdev->phy.venc.type = OMAP_DSS_VENC_TYPE_COMPOSITE;
-+ } else {
-+ printk(KERN_INFO
-+ "omapdss: unsupported output type'%s'.\n",
-+ tv_connection);
-+ }
-+ }
-+
- return 0;
- }
-
-diff --git a/drivers/video/omap2/omapfb/omapfb-main.c b/drivers/video/omap2/omapfb/omapfb-main.c
-index 70aa47d..dd27b00 100644
---- a/drivers/video/omap2/omapfb/omapfb-main.c
-+++ b/drivers/video/omap2/omapfb/omapfb-main.c
-@@ -2091,7 +2091,15 @@ static int omapfb_mode_to_timings(const char *mode_str,
- int r;
-
- #ifdef CONFIG_OMAP2_DSS_VENC
-- if (strcmp(mode_str, "pal") == 0) {
-+ if (strcmp(mode_str, "pal-16") == 0) {
-+ *timings = omap_dss_pal_timings;
-+ *bpp = 16;
-+ return 0;
-+ } else if (strcmp(mode_str, "ntsc-16") == 0) {
-+ *timings = omap_dss_ntsc_timings;
-+ *bpp = 16;
-+ return 0;
-+ } else if (strcmp(mode_str, "pal") == 0) {
- *timings = omap_dss_pal_timings;
- *bpp = 24;
- return 0;
---
-1.7.7.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/sakoman/0002-video-add-timings-for-hd720.patch b/recipes-kernel/linux/linux-mainline-3.2/sakoman/0002-video-add-timings-for-hd720.patch
deleted file mode 100644
index 2a0372b..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/sakoman/0002-video-add-timings-for-hd720.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 882636ad4c5577ae404c8215baf974f01a303b7f Mon Sep 17 00:00:00 2001
-From: Steve Sakoman <steve at sakoman.com>
-Date: Sat, 19 Dec 2009 06:52:43 -0800
-Subject: [PATCH 2/3] video: add timings for hd720
-
-Signed-off-by: Robert Nelson <robertcnelson at gmail.com>
----
- drivers/video/modedb.c | 4 ++++
- 1 files changed, 4 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/video/modedb.c b/drivers/video/modedb.c
-index a9a907c..5b686de 100644
---- a/drivers/video/modedb.c
-+++ b/drivers/video/modedb.c
-@@ -103,6 +103,10 @@ static const struct fb_videomode modedb[] = {
- { NULL, 70, 1024, 768, 13333, 144, 24, 29, 3, 136, 6, 0,
- FB_VMODE_NONINTERLACED },
-
-+ /* 1280x720 @ 60 Hz, 45 kHz hsync, CEA 681-E Format 4 */
-+ { "hd720", 60, 1280, 720, 13468, 220, 110, 20, 5, 40, 5, 0,
-+ FB_VMODE_NONINTERLACED },
-+
- /* 1280x1024 @ 87 Hz interlaced, 51 kHz hsync */
- { NULL, 87, 1280, 1024, 12500, 56, 16, 128, 1, 216, 12, 0,
- FB_VMODE_INTERLACED },
---
-1.7.7.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/sakoman/0003-omap-mmc-Adjust-dto-to-eliminate-timeout-errors.patch b/recipes-kernel/linux/linux-mainline-3.2/sakoman/0003-omap-mmc-Adjust-dto-to-eliminate-timeout-errors.patch
deleted file mode 100644
index 552a91a..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/sakoman/0003-omap-mmc-Adjust-dto-to-eliminate-timeout-errors.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From c329d9c39d444411d2fbd76b38823ae3f524a688 Mon Sep 17 00:00:00 2001
-From: Steve Sakoman <steve at sakoman.com>
-Date: Wed, 12 Jan 2011 05:54:55 -0800
-Subject: [PATCH 3/3] omap: mmc: Adjust dto to eliminate timeout errors
-
-A number of SD card types were experiencing timeout errors. This
-could also lead to data corruption in some cases.
-
-This fix proposed by Sukumar Ghoral of TI.
-
-Signed-off-by: Robert Nelson <robertcnelson at gmail.com>
----
- drivers/mmc/host/omap_hsmmc.c | 1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c
-index d5fe43d..f190d63 100644
---- a/drivers/mmc/host/omap_hsmmc.c
-+++ b/drivers/mmc/host/omap_hsmmc.c
-@@ -1513,6 +1513,7 @@ static void set_data_timeout(struct omap_hsmmc_host *host,
- cycle_ns = 1000000000 / (clk_get_rate(host->fclk) / clkd);
- timeout = timeout_ns / cycle_ns;
- timeout += timeout_clks;
-+ timeout *= 2;
- if (timeout) {
- while ((timeout & 0x80000000) == 0) {
- dto += 1;
---
-1.7.7.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/sgx/0001-Revert-OMAP-DSS2-remove-update_mode-from-omapdss-v3.2.patch b/recipes-kernel/linux/linux-mainline-3.2/sgx/0001-Revert-OMAP-DSS2-remove-update_mode-from-omapdss-v3.2.patch
deleted file mode 100644
index 9f24df0..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/sgx/0001-Revert-OMAP-DSS2-remove-update_mode-from-omapdss-v3.2.patch
+++ /dev/null
@@ -1,321 +0,0 @@
-From 4fbd1a6149222f1a075182e4d41cf1e2f72345d2 Mon Sep 17 00:00:00 2001
-From: Robert Nelson <robertcnelson at gmail.com>
-Date: Wed, 3 Aug 2011 11:08:04 -0500
-Subject: [PATCH] Revert "OMAP: DSS2: remove update_mode from omapdss"
-
-This reverts commit 8cff88c5da2197aa601409d4a7ce8f83f8de8190.
----
- drivers/video/omap2/displays/panel-taal.c | 17 ++++++++
- drivers/video/omap2/dss/display.c | 45 ++++++++++++++++++++++
- drivers/video/omap2/dss/manager.c | 59 ++++++++++++++++++++++-------
- drivers/video/omap2/dss/venc.c | 17 ++++++++
- include/video/omapdss.h | 11 +++++
- 5 files changed, 135 insertions(+), 14 deletions(-)
-
-diff --git a/drivers/video/omap2/displays/panel-taal.c b/drivers/video/omap2/displays/panel-taal.c
-index 80c3f6a..a2a7380 100644
---- a/drivers/video/omap2/displays/panel-taal.c
-+++ b/drivers/video/omap2/displays/panel-taal.c
-@@ -1874,6 +1874,20 @@ err:
- mutex_unlock(&td->lock);
- }
-
-+static int taal_set_update_mode(struct omap_dss_device *dssdev,
-+ enum omap_dss_update_mode mode)
-+{
-+ if (mode != OMAP_DSS_UPDATE_MANUAL)
-+ return -EINVAL;
-+ return 0;
-+}
-+
-+static enum omap_dss_update_mode taal_get_update_mode(
-+ struct omap_dss_device *dssdev)
-+{
-+ return OMAP_DSS_UPDATE_MANUAL;
-+}
-+
- static struct omap_dss_driver taal_driver = {
- .probe = taal_probe,
- .remove = __exit_p(taal_remove),
-@@ -1883,6 +1897,9 @@ static struct omap_dss_driver taal_driver = {
- .suspend = taal_suspend,
- .resume = taal_resume,
-
-+ .set_update_mode = taal_set_update_mode,
-+ .get_update_mode = taal_get_update_mode,
-+
- .update = taal_update,
- .sync = taal_sync,
-
-diff --git a/drivers/video/omap2/dss/display.c b/drivers/video/omap2/dss/display.c
-index be331dc..6fa445c 100644
---- a/drivers/video/omap2/dss/display.c
-+++ b/drivers/video/omap2/dss/display.c
-@@ -65,6 +65,48 @@ static ssize_t display_enabled_store(struct device *dev,
- return size;
- }
-
-+static ssize_t display_upd_mode_show(struct device *dev,
-+ struct device_attribute *attr, char *buf)
-+{
-+ struct omap_dss_device *dssdev = to_dss_device(dev);
-+ enum omap_dss_update_mode mode = OMAP_DSS_UPDATE_AUTO;
-+ if (dssdev->driver->get_update_mode)
-+ mode = dssdev->driver->get_update_mode(dssdev);
-+ return snprintf(buf, PAGE_SIZE, "%d\n", mode);
-+}
-+
-+static ssize_t display_upd_mode_store(struct device *dev,
-+ struct device_attribute *attr,
-+ const char *buf, size_t size)
-+{
-+ struct omap_dss_device *dssdev = to_dss_device(dev);
-+ int val, r;
-+ enum omap_dss_update_mode mode;
-+
-+ if (!dssdev->driver->set_update_mode)
-+ return -EINVAL;
-+
-+ r = kstrtoint(buf, 0, &val);
-+ if (r)
-+ return r;
-+
-+ switch (val) {
-+ case OMAP_DSS_UPDATE_DISABLED:
-+ case OMAP_DSS_UPDATE_AUTO:
-+ case OMAP_DSS_UPDATE_MANUAL:
-+ mode = (enum omap_dss_update_mode)val;
-+ break;
-+ default:
-+ return -EINVAL;
-+ }
-+
-+ r = dssdev->driver->set_update_mode(dssdev, mode);
-+ if (r)
-+ return r;
-+
-+ return size;
-+}
-+
- static ssize_t display_tear_show(struct device *dev,
- struct device_attribute *attr, char *buf)
- {
-@@ -250,6 +292,8 @@ static ssize_t display_wss_store(struct device *dev,
-
- static DEVICE_ATTR(enabled, S_IRUGO|S_IWUSR,
- display_enabled_show, display_enabled_store);
-+static DEVICE_ATTR(update_mode, S_IRUGO|S_IWUSR,
-+ display_upd_mode_show, display_upd_mode_store);
- static DEVICE_ATTR(tear_elim, S_IRUGO|S_IWUSR,
- display_tear_show, display_tear_store);
- static DEVICE_ATTR(timings, S_IRUGO|S_IWUSR,
-@@ -263,6 +307,7 @@ static DEVICE_ATTR(wss, S_IRUGO|S_IWUSR,
-
- static struct device_attribute *display_sysfs_attrs[] = {
- &dev_attr_enabled,
-+ &dev_attr_update_mode,
- &dev_attr_tear_elim,
- &dev_attr_timings,
- &dev_attr_rotate,
-diff --git a/drivers/video/omap2/dss/manager.c b/drivers/video/omap2/dss/manager.c
-index 6e63845..e5684a9 100644
---- a/drivers/video/omap2/dss/manager.c
-+++ b/drivers/video/omap2/dss/manager.c
-@@ -515,6 +515,8 @@ struct overlay_cache_data {
-
- u32 fifo_low;
- u32 fifo_high;
-+
-+ bool manual_update;
- };
-
- struct manager_cache_data {
-@@ -528,6 +530,7 @@ struct manager_cache_data {
-
- struct omap_overlay_manager_info info;
-
-+ bool manual_upd_display;
- bool manual_update;
- bool do_manual_update;
-
-@@ -636,15 +639,24 @@ static int dss_mgr_wait_for_go(struct omap_overlay_manager *mgr)
- if (!dssdev || dssdev->state != OMAP_DSS_DISPLAY_ACTIVE)
- return 0;
-
-- if (dssdev->caps & OMAP_DSS_DISPLAY_CAP_MANUAL_UPDATE)
-- return 0;
--
- if (dssdev->type == OMAP_DISPLAY_TYPE_VENC
- || dssdev->type == OMAP_DISPLAY_TYPE_HDMI) {
- irq = DISPC_IRQ_EVSYNC_ODD | DISPC_IRQ_EVSYNC_EVEN;
- } else {
-- irq = (dssdev->manager->id == OMAP_DSS_CHANNEL_LCD) ?
-- DISPC_IRQ_VSYNC : DISPC_IRQ_VSYNC2;
-+ if (dssdev->caps & OMAP_DSS_DISPLAY_CAP_MANUAL_UPDATE) {
-+ enum omap_dss_update_mode mode;
-+ mode = dssdev->driver->get_update_mode(dssdev);
-+ if (mode != OMAP_DSS_UPDATE_AUTO)
-+ return 0;
-+
-+ irq = (dssdev->manager->id == OMAP_DSS_CHANNEL_LCD) ?
-+ DISPC_IRQ_FRAMEDONE
-+ : DISPC_IRQ_FRAMEDONE2;
-+ } else {
-+ irq = (dssdev->manager->id == OMAP_DSS_CHANNEL_LCD) ?
-+ DISPC_IRQ_VSYNC
-+ : DISPC_IRQ_VSYNC2;
-+ }
- }
-
- mc = &dss_cache.manager_cache[mgr->id];
-@@ -705,15 +717,24 @@ int dss_mgr_wait_for_go_ovl(struct omap_overlay *ovl)
- if (!dssdev || dssdev->state != OMAP_DSS_DISPLAY_ACTIVE)
- return 0;
-
-- if (dssdev->caps & OMAP_DSS_DISPLAY_CAP_MANUAL_UPDATE)
-- return 0;
--
- if (dssdev->type == OMAP_DISPLAY_TYPE_VENC
- || dssdev->type == OMAP_DISPLAY_TYPE_HDMI) {
- irq = DISPC_IRQ_EVSYNC_ODD | DISPC_IRQ_EVSYNC_EVEN;
- } else {
-- irq = (dssdev->manager->id == OMAP_DSS_CHANNEL_LCD) ?
-- DISPC_IRQ_VSYNC : DISPC_IRQ_VSYNC2;
-+ if (dssdev->caps & OMAP_DSS_DISPLAY_CAP_MANUAL_UPDATE) {
-+ enum omap_dss_update_mode mode;
-+ mode = dssdev->driver->get_update_mode(dssdev);
-+ if (mode != OMAP_DSS_UPDATE_AUTO)
-+ return 0;
-+
-+ irq = (dssdev->manager->id == OMAP_DSS_CHANNEL_LCD) ?
-+ DISPC_IRQ_FRAMEDONE
-+ : DISPC_IRQ_FRAMEDONE2;
-+ } else {
-+ irq = (dssdev->manager->id == OMAP_DSS_CHANNEL_LCD) ?
-+ DISPC_IRQ_VSYNC
-+ : DISPC_IRQ_VSYNC2;
-+ }
- }
-
- oc = &dss_cache.overlay_cache[ovl->id];
-@@ -848,7 +869,7 @@ static int configure_overlay(enum omap_plane plane)
- orig_outw = outw;
- orig_outh = outh;
-
-- if (mc->manual_update && mc->do_manual_update) {
-+ if (c->manual_update && mc->do_manual_update) {
- unsigned bpp;
- unsigned scale_x_m = w, scale_x_d = outw;
- unsigned scale_y_m = h, scale_y_d = outh;
-@@ -1010,7 +1031,7 @@ static int configure_dispc(void)
- if (!oc->dirty)
- continue;
-
-- if (mc->manual_update && !mc->do_manual_update)
-+ if (oc->manual_update && !mc->do_manual_update)
- continue;
-
- if (mgr_busy[oc->channel]) {
-@@ -1058,7 +1079,7 @@ static int configure_dispc(void)
- /* We don't need GO with manual update display. LCD iface will
- * always be turned off after frame, and new settings will be
- * taken in to use at next update */
-- if (!mc->manual_update)
-+ if (!mc->manual_upd_display)
- dispc_mgr_go(i);
- }
-
-@@ -1376,6 +1397,11 @@ static int omap_dss_mgr_apply(struct omap_overlay_manager *mgr)
-
- oc->enabled = true;
-
-+ oc->manual_update =
-+ dssdev->caps & OMAP_DSS_DISPLAY_CAP_MANUAL_UPDATE &&
-+ dssdev->driver->get_update_mode(dssdev) !=
-+ OMAP_DSS_UPDATE_AUTO;
-+
- ++num_planes_enabled;
- }
-
-@@ -1402,8 +1428,13 @@ static int omap_dss_mgr_apply(struct omap_overlay_manager *mgr)
- mc->dirty = true;
- mc->info = mgr->info;
-
-- mc->manual_update =
-+ mc->manual_upd_display =
- dssdev->caps & OMAP_DSS_DISPLAY_CAP_MANUAL_UPDATE;
-+
-+ mc->manual_update =
-+ dssdev->caps & OMAP_DSS_DISPLAY_CAP_MANUAL_UPDATE &&
-+ dssdev->driver->get_update_mode(dssdev) !=
-+ OMAP_DSS_UPDATE_AUTO;
- }
-
- /* XXX TODO: Try to get fifomerge working. The problem is that it
-diff --git a/drivers/video/omap2/dss/venc.c b/drivers/video/omap2/dss/venc.c
-index b404095..a8b03c1 100644
---- a/drivers/video/omap2/dss/venc.c
-+++ b/drivers/video/omap2/dss/venc.c
-@@ -579,6 +579,20 @@ static int venc_panel_resume(struct omap_dss_device *dssdev)
- return venc_panel_enable(dssdev);
- }
-
-+static enum omap_dss_update_mode venc_get_update_mode(
-+ struct omap_dss_device *dssdev)
-+{
-+ return OMAP_DSS_UPDATE_AUTO;
-+}
-+
-+static int venc_set_update_mode(struct omap_dss_device *dssdev,
-+ enum omap_dss_update_mode mode)
-+{
-+ if (mode != OMAP_DSS_UPDATE_AUTO)
-+ return -EINVAL;
-+ return 0;
-+}
-+
- static void venc_get_timings(struct omap_dss_device *dssdev,
- struct omap_video_timings *timings)
- {
-@@ -663,6 +677,9 @@ static struct omap_dss_driver venc_driver = {
- .get_resolution = omapdss_default_get_resolution,
- .get_recommended_bpp = omapdss_default_get_recommended_bpp,
-
-+ .set_update_mode = venc_set_update_mode,
-+ .get_update_mode = venc_get_update_mode,
-+
- .get_timings = venc_get_timings,
- .set_timings = venc_set_timings,
- .check_timings = venc_check_timings,
-diff --git a/include/video/omapdss.h b/include/video/omapdss.h
-index 378c7ed..540d61e 100644
---- a/include/video/omapdss.h
-+++ b/include/video/omapdss.h
-@@ -152,6 +152,12 @@ enum omap_display_caps {
- OMAP_DSS_DISPLAY_CAP_TEAR_ELIM = 1 << 1,
- };
-
-+enum omap_dss_update_mode {
-+ OMAP_DSS_UPDATE_DISABLED = 0,
-+ OMAP_DSS_UPDATE_AUTO,
-+ OMAP_DSS_UPDATE_MANUAL,
-+};
-+
- enum omap_dss_display_state {
- OMAP_DSS_DISPLAY_DISABLED = 0,
- OMAP_DSS_DISPLAY_ACTIVE,
-@@ -587,6 +593,11 @@ struct omap_dss_driver {
- int (*resume)(struct omap_dss_device *display);
- int (*run_test)(struct omap_dss_device *display, int test);
-
-+ int (*set_update_mode)(struct omap_dss_device *dssdev,
-+ enum omap_dss_update_mode);
-+ enum omap_dss_update_mode (*get_update_mode)(
-+ struct omap_dss_device *dssdev);
-+
- int (*update)(struct omap_dss_device *dssdev,
- u16 x, u16 y, u16 w, u16 h);
- int (*sync)(struct omap_dss_device *dssdev);
---
-1.7.7.3
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/touchbook/0001-omap3-touchbook-remove-mmc-gpio_wp.patch b/recipes-kernel/linux/linux-mainline-3.2/touchbook/0001-omap3-touchbook-remove-mmc-gpio_wp.patch
deleted file mode 100644
index eb77607..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/touchbook/0001-omap3-touchbook-remove-mmc-gpio_wp.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 2b3c730256f7c9ab32beaccf33f44713d25f4a85 Mon Sep 17 00:00:00 2001
-From: Robert Nelson <robertcnelson at gmail.com>
-Date: Fri, 25 Feb 2011 10:41:07 -0600
-Subject: [PATCH 1/2] omap3: touchbook: remove mmc gpio_wp
-
-Signed-off-by: Robert Nelson <robertcnelson at gmail.com>
----
- arch/arm/mach-omap2/board-omap3touchbook.c | 8 +-------
- 1 files changed, 1 insertions(+), 7 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-omap3touchbook.c b/arch/arm/mach-omap2/board-omap3touchbook.c
-index a2d0d19..6b4cd92 100644
---- a/arch/arm/mach-omap2/board-omap3touchbook.c
-+++ b/arch/arm/mach-omap2/board-omap3touchbook.c
-@@ -99,7 +99,7 @@ static struct omap2_hsmmc_info mmc[] = {
- {
- .mmc = 1,
- .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA,
-- .gpio_wp = 29,
-+ .gpio_wp = -EINVAL,
- },
- {} /* Terminator */
- };
-@@ -117,12 +117,6 @@ static struct gpio_led gpio_leds[];
- static int touchbook_twl_gpio_setup(struct device *dev,
- unsigned gpio, unsigned ngpio)
- {
-- if (system_rev >= 0x20 && system_rev <= 0x34301000) {
-- omap_mux_init_gpio(23, OMAP_PIN_INPUT);
-- mmc[0].gpio_wp = 23;
-- } else {
-- omap_mux_init_gpio(29, OMAP_PIN_INPUT);
-- }
- /* gpio + 0 is "mmc0_cd" (input/IRQ) */
- mmc[0].gpio_cd = gpio + 0;
- omap2_hsmmc_init(mmc);
---
-1.7.7.4
-
diff --git a/recipes-kernel/linux/linux-mainline-3.2/touchbook/0002-omap3-touchbook-drop-u-boot-readonly.patch b/recipes-kernel/linux/linux-mainline-3.2/touchbook/0002-omap3-touchbook-drop-u-boot-readonly.patch
deleted file mode 100644
index 0319264..0000000
--- a/recipes-kernel/linux/linux-mainline-3.2/touchbook/0002-omap3-touchbook-drop-u-boot-readonly.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 8b320724e0d7f17acb22d4af9ec73f0d28ed05d0 Mon Sep 17 00:00:00 2001
-From: Robert Nelson <robertcnelson at gmail.com>
-Date: Fri, 25 Feb 2011 11:32:37 -0600
-Subject: [PATCH 2/2] omap3: touchbook: drop u-boot readonly
-
-Signed-off-by: Robert Nelson <robertcnelson at gmail.com>
----
- arch/arm/mach-omap2/board-omap3touchbook.c | 1 -
- 1 files changed, 0 insertions(+), 1 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-omap3touchbook.c b/arch/arm/mach-omap2/board-omap3touchbook.c
-index 6b4cd92..5d209c1 100644
---- a/arch/arm/mach-omap2/board-omap3touchbook.c
-+++ b/arch/arm/mach-omap2/board-omap3touchbook.c
-@@ -74,7 +74,6 @@ static struct mtd_partition omap3touchbook_nand_partitions[] = {
- .name = "U-Boot",
- .offset = MTDPART_OFS_APPEND, /* Offset = 0x80000 */
- .size = 15 * NAND_BLOCK_SIZE,
-- .mask_flags = MTD_WRITEABLE, /* force read-only */
- },
- {
- .name = "U-Boot Env",
---
-1.7.7.4
-
diff --git a/recipes-kernel/linux/linux-mainline_3.2.bb b/recipes-kernel/linux/linux-mainline_3.2.bb
deleted file mode 100644
index 7398d9a..0000000
--- a/recipes-kernel/linux/linux-mainline_3.2.bb
+++ /dev/null
@@ -1,111 +0,0 @@
-require linux.inc
-
-DESCRIPTION = "Linux kernel for TI processors"
-
-COMPATIBLE_MACHINE = "(beagleboard)"
-
-PV = "3.2.28"
-# v3.2.28 tag
-SRCREV_pn-${PN} = "1f873aca1c7aa7a574b276c040d304d16f1dbfa4"
-
-# The main PR is now using MACHINE_KERNEL_PR, for omap3 see conf/machine/include/omap3.inc
-MACHINE_KERNEL_PR_append = "b"
-PR = "${MACHINE_KERNEL_PR}"
-
-FILESPATH =. "${FILE_DIRNAME}/linux-mainline-3.2:${FILE_DIRNAME}/linux-mainline-3.2/${MACHINE}:"
-
-SRC_URI += "git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git;branch=linux-3.2.y;protocol=git \
- file://distro/0001-kbuild-deb-pkg-set-host-machine-after-dpkg-gencontro.patch \
- file://omap_cpufreq/0001-cpufreq-OMAP-cleanup-for-multi-SoC-support-move-into.patch \
- file://omap_cpufreq/0002-cpufreq-OMAP-Add-SMP-support-for-OMAP4.patch \
- file://omap_cpufreq/0003-cpufreq-OMAP-Enable-all-CPUs-in-shared-policy-mask.patch \
- file://omap_cpufreq/0004-cpufreq-OMAP-notify-even-with-bad-boot-frequency.patch \
- file://omap_cpufreq/0005-cpufreq-OMAP-move-clk-name-decision-to-init.patch \
- file://omap_cpufreq/0006-cpufreq-OMAP-deny-initialization-if-no-mpudev.patch \
- file://omap_cpufreq/0007-cpufreq-OMAP-dont-support-freq_table.patch \
- file://omap_cpufreq/0008-cpufreq-OMAP-only-supports-OPP-library.patch \
- file://omap_cpufreq/0009-cpufreq-OMAP-put-clk-if-cpu_init-failed.patch \
- file://omap_cpufreq/0010-cpufreq-OMAP-fix-freq_table-leak.patch \
- file://omap_cpufreq/0011-cpufreq-OMAP-fixup-for-omap_device-changes-include-l.patch \
- file://micrel_zippy2/0001-ksz8851-eeprom-93cx6-add-drive_data.patch \
- file://micrel_zippy2/0002-ksz8851-eeprom-93cx6-add-eeprom_93cx6_write.patch \
- file://micrel_zippy2/0003-ksz8851-read_mac_addr.patch \
- file://micrel_zippy2/0004-ksz8851-93cx6-eeprom-access.patch \
- file://micrel_zippy2/0005-ks8851.h-it-helps-to-include-the-include-file.patch \
- file://micrel_zippy2/0006-ksz8851-move-to-header.patch \
- file://micrel_zippy2/0007-ksz8851-move-more-to-header.patch \
- file://micrel_zippy2/0008-ksz8851-share-ks8851_tx_hdr-union.patch \
- file://micrel_zippy2/0009-ksz8851-add-is_level_irq.patch \
- file://micrel_zippy2/0010-ksz8851-turn-off-hardware-interrupt-druing-receive-p.patch \
- file://micrel_zippy2/0011-ksz8851-make-sure-is-awake-before-writing-mac.patch \
- file://micrel_zippy2/0012-ksz8851-add-mutex-lock-unlock-to-ks.patch \
- file://micrel_zippy2/0013-ksz8851-add-ks8851_tx_check.patch \
- file://micrel_zippy2/0014-ksz8851-move-ks8851_set_powermode.patch \
- file://sakoman/0001-OMAP-DSS2-add-bootarg-for-selecting-svideo.patch \
- file://sakoman/0002-video-add-timings-for-hd720.patch \
- file://sakoman/0003-omap-mmc-Adjust-dto-to-eliminate-timeout-errors.patch \
- file://beagle/0001-expansion-add-buddy-param-for-expansionboard-names.patch \
- file://beagle/0002-expansion-add-mmc-regulator-and-ds1307-rtc.patch \
- file://beagle/0003-expansion-add-zippy.patch \
- file://beagle/0004-expansion-add-zippy2.patch \
- file://beagle/0005-expansion-add-trainer.patch \
- file://beagle/0006-expansion-add-ulcd.patch \
- file://beagle/0007-beagleboard-reinstate-usage-of-hi-speed-PLL-divider.patch \
- file://beagle/0008-Turn-on-the-USB-regulator-on-Beagle-xM-explicitly.patch \
- file://beagle/0009-meego-modedb-add-Toshiba-LTA070B220F-800x480-support.patch \
- file://beagle/0010-beagleboard-fix-uLCD7-support.patch \
- file://beagle/0011-default-to-fifo-mode-5-for-old-musb-beagles.patch \
- file://beagle/0012-backlight-Add-TLC59108-backlight-control-driver.patch \
- file://beagle/0013-tlc59108-adjust-for-beagleboard-uLCD7.patch \
- file://beagle/0014-expansion-add-wifi.patch \
- file://beagle/0015-ASoC-omap-add-MODULE_ALIAS-to-mcbsp-and-pcm-drivers.patch \
- file://beagle/0016-ASoC-omap-convert-per-board-modules-to-platform-driv.patch \
- file://devkit8000/0001-arm-omap-devkit8000-for-lcd-use-samsung_lte_panel.patch \
- file://touchbook/0001-omap3-touchbook-remove-mmc-gpio_wp.patch \
- file://touchbook/0002-omap3-touchbook-drop-u-boot-readonly.patch \
- file://panda/0001-panda-fix-wl12xx-regulator.patch \
- file://panda/0002-panda-enable-bluetooth.patch \
- file://panda/0003-ti-st-st-kim-fixing-firmware-path.patch \
- file://omap_fixes/0001-omap3-Increase-limit-on-bootarg-mpurate.patch \
- file://omap_fixes/0002-ARM-OMAP-AM3517-3505-fix-crash-on-boot-due-to-incorr.patch \
- file://omap_fixes/0003-ARM-OMAP4-hwmod-Don-t-wait-for-the-idle-status-if-mo.patch \
- file://omap_fixes/0004-ARM-OMAP4-clock-Add-CPU-local-timer-clock-node.patch \
- file://omap_fixes/0005-ARM-OMAP3-hwmod-data-disable-multiblock-reads-on-MMC.patch \
- file://omap_fixes/0006-OMAP-HWMOD-add-es3plus-to-am36xx-am35xx.patch \
- file://sgx/0001-Revert-OMAP-DSS2-remove-update_mode-from-omapdss-v3.2.patch \
- file://led/0001-leds-heartbeat-stop-on-shutdown-reboot-or-panic.patch \
- file://libertas/0001-USB-convert-drivers-net-to-use-module_usb_driver.patch \
- file://libertas/0002-net-fix-assignment-of-0-1-to-bool-variables.patch \
- file://libertas/0003-switch-debugfs-to-umode_t.patch \
- file://libertas/0004-drivers-net-Remove-unnecessary-k.alloc-v.alloc-OOM-m.patch \
- file://libertas/0005-libertas-remove-dump_survey-implementation.patch \
- file://libertas/0007-wireless-libertas-remove-redundant-NULL-tests-before.patch \
- file://libertas/0008-libertas-fix-signedness-bug-in-lbs_auth_to_authtype.patch \
- file://libertas/0009-drivers-net-wireless-libertas-if_usb.c-add-missing-d.patch \
- file://libertas/0010-libertas-Firmware-loading-simplifications.patch \
- file://libertas/0011-libertas-harden-up-exit-paths.patch \
- file://libertas/0012-libertas-add-asynchronous-firmware-loading-capabilit.patch \
- file://libertas/0013-libertas-SDIO-convert-to-asynchronous-firmware-loadi.patch \
- file://libertas/0014-libertas-USB-convert-to-asynchronous-firmware-loadin.patch \
- file://libertas/0015-libertas-CS-convert-to-asynchronous-firmware-loading.patch \
- file://libertas/0016-libertas-add-missing-include.patch \
- file://libertas/0017-remove-debug-msgs-due-to-missing-in_interrupt.patch \
- \
- file://defconfig"
-
-SRC_URI_append_beagleboard = " file://logo_linux_clut224.ppm \
-"
-
-S = "${WORKDIR}/git"
-
-# Sadly perf is broken:
-#| util/hist.c: In function '__hists__add_entry':
-#| util/hist.c:240:27: error: invalid type argument of '->' (have 'struct hist_entry')
-#| util/hist.c:241:23: error: invalid type argument of '->' (have 'struct hist_entry')
-do_compile_perf() {
- :
-}
-
-do_install_perf() {
- :
-}
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0001-MAINTAINERS-stable-Update-address.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0001-MAINTAINERS-stable-Update-address.patch
deleted file mode 100644
index 8ba0074..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0001-MAINTAINERS-stable-Update-address.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From b794efe1ee39a3987a8957553c9b195f2efb701f Mon Sep 17 00:00:00 2001
-From: Joe Perches <joe at perches.com>
-Date: Fri, 9 Dec 2011 13:54:34 -0800
-Subject: [PATCH 01/49] MAINTAINERS: stable: Update address
-
-commit bc7a2f3abc636d7cab84258a48e77b08fb5fd3d6 upstream.
-
-The old address hasn't worked since the great intrusion of August 2011.
-
-Signed-off-by: Joe Perches <joe at perches.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- MAINTAINERS | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/MAINTAINERS b/MAINTAINERS
-index 62f1cd3..f986e7d 100644
---- a/MAINTAINERS
-+++ b/MAINTAINERS
-@@ -6258,7 +6258,7 @@ F: arch/alpha/kernel/srm_env.c
-
- STABLE BRANCH
- M: Greg Kroah-Hartman <greg at kroah.com>
--L: stable at kernel.org
-+L: stable at vger.kernel.org
- S: Maintained
-
- STAGING SUBSYSTEM
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0002-Documentation-Update-stable-address.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0002-Documentation-Update-stable-address.patch
deleted file mode 100644
index 4de7c82..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0002-Documentation-Update-stable-address.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From 154964fb738a03a11e805252423a902b9c481c0f Mon Sep 17 00:00:00 2001
-From: Joe Perches <joe at perches.com>
-Date: Fri, 9 Dec 2011 14:12:00 -0800
-Subject: [PATCH 02/49] Documentation: Update stable address
-
-commit 2eb7f204db51969ea558802a6601d79c2fb273b9 upstream.
-
-The Japanese/Korean/Chinese versions still need updating.
-
-Also, the stable kernel 2.6.x.y descriptions are out of date
-and should be updated as well.
-
-Signed-off-by: Joe Perches <joe at perches.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- Documentation/HOWTO | 4 ++--
- Documentation/development-process/5.Posting | 8 ++++----
- 2 files changed, 6 insertions(+), 6 deletions(-)
-
-diff --git a/Documentation/HOWTO b/Documentation/HOWTO
-index 81bc1a9..f7ade3b 100644
---- a/Documentation/HOWTO
-+++ b/Documentation/HOWTO
-@@ -275,8 +275,8 @@ versions.
- If no 2.6.x.y kernel is available, then the highest numbered 2.6.x
- kernel is the current stable kernel.
-
--2.6.x.y are maintained by the "stable" team <stable at kernel.org>, and are
--released as needs dictate. The normal release period is approximately
-+2.6.x.y are maintained by the "stable" team <stable at vger.kernel.org>, and
-+are released as needs dictate. The normal release period is approximately
- two weeks, but it can be longer if there are no pressing problems. A
- security-related problem, instead, can cause a release to happen almost
- instantly.
-diff --git a/Documentation/development-process/5.Posting b/Documentation/development-process/5.Posting
-index 903a254..8a48c9b 100644
---- a/Documentation/development-process/5.Posting
-+++ b/Documentation/development-process/5.Posting
-@@ -271,10 +271,10 @@ copies should go to:
- the linux-kernel list.
-
- - If you are fixing a bug, think about whether the fix should go into the
-- next stable update. If so, stable at kernel.org should get a copy of the
-- patch. Also add a "Cc: stable at kernel.org" to the tags within the patch
-- itself; that will cause the stable team to get a notification when your
-- fix goes into the mainline.
-+ next stable update. If so, stable at vger.kernel.org should get a copy of
-+ the patch. Also add a "Cc: stable at vger.kernel.org" to the tags within
-+ the patch itself; that will cause the stable team to get a notification
-+ when your fix goes into the mainline.
-
- When selecting recipients for a patch, it is good to have an idea of who
- you think will eventually accept the patch and get it merged. While it
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0003-firmware-Fix-an-oops-on-reading-fw_priv-fw-in-sysfs-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0003-firmware-Fix-an-oops-on-reading-fw_priv-fw-in-sysfs-.patch
deleted file mode 100644
index 1714a0e..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0003-firmware-Fix-an-oops-on-reading-fw_priv-fw-in-sysfs-.patch
+++ /dev/null
@@ -1,81 +0,0 @@
-From 27d332636f77fe598e435682ced1dfd589ffd0e6 Mon Sep 17 00:00:00 2001
-From: Neil Horman <nhorman at tuxdriver.com>
-Date: Mon, 2 Jan 2012 15:31:23 -0500
-Subject: [PATCH 03/49] firmware: Fix an oops on reading fw_priv->fw in sysfs
- loading file
-
-commit eea915bb0d1358755f151eaefb8208a2d5f3e10c upstream.
-
-This oops was reported recently:
-firmware_loading_store+0xf9/0x17b
-dev_attr_store+0x20/0x22
-sysfs_write_file+0x101/0x134
-vfs_write+0xac/0xf3
-sys_write+0x4a/0x6e
-system_call_fastpath+0x16/0x1b
-
-The complete backtrace was unfortunately not captured, but details can be found
-here:
-https://bugzilla.redhat.com/show_bug.cgi?id=769920
-
-The cause is fairly clear.
-
-Its caused by the fact that firmware_loading_store has a case 0 in its
-switch statement that reads and writes the fw_priv->fw poniter without the
-protection of the fw_lock mutex. since there is a window between the time that
-_request_firmware sets fw_priv->fw to NULL and the time the corresponding sysfs
-file is unregistered, its possible for a user space application to race in, and
-write a zero to the loading file, causing a NULL dereference in
-firmware_loading_store. Fix it by extending the protection of the fw_lock mutex
-to cover all of the firware_loading_store function.
-
-Signed-off-by: Neil Horman <nhorman at tuxdriver.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/base/firmware_class.c | 14 +++++++-------
- 1 file changed, 7 insertions(+), 7 deletions(-)
-
-diff --git a/drivers/base/firmware_class.c b/drivers/base/firmware_class.c
-index 06ed6b4..3719c94 100644
---- a/drivers/base/firmware_class.c
-+++ b/drivers/base/firmware_class.c
-@@ -226,13 +226,13 @@ static ssize_t firmware_loading_store(struct device *dev,
- int loading = simple_strtol(buf, NULL, 10);
- int i;
-
-+ mutex_lock(&fw_lock);
-+
-+ if (!fw_priv->fw)
-+ goto out;
-+
- switch (loading) {
- case 1:
-- mutex_lock(&fw_lock);
-- if (!fw_priv->fw) {
-- mutex_unlock(&fw_lock);
-- break;
-- }
- firmware_free_data(fw_priv->fw);
- memset(fw_priv->fw, 0, sizeof(struct firmware));
- /* If the pages are not owned by 'struct firmware' */
-@@ -243,7 +243,6 @@ static ssize_t firmware_loading_store(struct device *dev,
- fw_priv->page_array_size = 0;
- fw_priv->nr_pages = 0;
- set_bit(FW_STATUS_LOADING, &fw_priv->status);
-- mutex_unlock(&fw_lock);
- break;
- case 0:
- if (test_bit(FW_STATUS_LOADING, &fw_priv->status)) {
-@@ -274,7 +273,8 @@ static ssize_t firmware_loading_store(struct device *dev,
- fw_load_abort(fw_priv);
- break;
- }
--
-+out:
-+ mutex_unlock(&fw_lock);
- return count;
- }
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0004-rt2800usb-Move-ID-out-of-unknown.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0004-rt2800usb-Move-ID-out-of-unknown.patch
deleted file mode 100644
index 4a6caf4..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0004-rt2800usb-Move-ID-out-of-unknown.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 13b85c61c69eec7cfd6dde8ce87540ca0760fb49 Mon Sep 17 00:00:00 2001
-From: Larry Finger <Larry.Finger at lwfinger.net>
-Date: Tue, 27 Dec 2011 12:22:51 -0600
-Subject: [PATCH 04/49] rt2800usb: Move ID out of unknown
-
-commit 3f81f8f1524ccca24df1029b0cf825ecef5e5cdc upstream.
-
-Testing on the openSUSE wireless forum has shown that a Linksys
-WUSB54GC v3 with USB ID 1737:0077 works with rt2800usb when the ID is
-written to /sys/.../new_id. This ID can therefore be moved out of UNKNOWN.
-
-Signed-off-by: Larry Finger <Larry.Finger at lwfinger.net>
-Acked-by: Gertjan van Wingerde <gwingerde at gmail.com>
-Acked-by: Ivo van Doorn <IvDoorn at gmail.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/net/wireless/rt2x00/rt2800usb.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/net/wireless/rt2x00/rt2800usb.c b/drivers/net/wireless/rt2x00/rt2800usb.c
-index 3778763..3265b34 100644
---- a/drivers/net/wireless/rt2x00/rt2800usb.c
-+++ b/drivers/net/wireless/rt2x00/rt2800usb.c
-@@ -976,6 +976,7 @@ static struct usb_device_id rt2800usb_device_table[] = {
- { USB_DEVICE(0x13b1, 0x0031) },
- { USB_DEVICE(0x1737, 0x0070) },
- { USB_DEVICE(0x1737, 0x0071) },
-+ { USB_DEVICE(0x1737, 0x0077) },
- /* Logitec */
- { USB_DEVICE(0x0789, 0x0162) },
- { USB_DEVICE(0x0789, 0x0163) },
-@@ -1171,7 +1172,6 @@ static struct usb_device_id rt2800usb_device_table[] = {
- { USB_DEVICE(0x1740, 0x0605) },
- { USB_DEVICE(0x1740, 0x0615) },
- /* Linksys */
-- { USB_DEVICE(0x1737, 0x0077) },
- { USB_DEVICE(0x1737, 0x0078) },
- /* Logitec */
- { USB_DEVICE(0x0789, 0x0168) },
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0005-offb-Fix-setting-of-the-pseudo-palette-for-8bpp.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0005-offb-Fix-setting-of-the-pseudo-palette-for-8bpp.patch
deleted file mode 100644
index 0ac0a3e..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0005-offb-Fix-setting-of-the-pseudo-palette-for-8bpp.patch
+++ /dev/null
@@ -1,92 +0,0 @@
-From 7cfe5244ace9d57f46d8928552a885b084e04170 Mon Sep 17 00:00:00 2001
-From: Benjamin Herrenschmidt <benh at kernel.crashing.org>
-Date: Wed, 28 Dec 2011 00:10:16 +0000
-Subject: [PATCH 05/49] offb: Fix setting of the pseudo-palette for >8bpp
-
-commit 1bb0b7d21584b3f878e2bc880db62351ddee5185 upstream.
-
-When using a >8bpp framebuffer, offb advertises truecolor, not directcolor,
-and doesn't touch the color map even if it has a corresponding access method
-for the real hardware.
-
-Thus it needs to set the pseudo-palette with all 3 components of the color,
-like other truecolor framebuffers, not with copies of the color index like
-a directcolor framebuffer would do.
-
-This went unnoticed for a long time because it's pretty hard to get offb
-to kick in with anything but 8bpp (old BootX under MacOS will do that and
-qemu does it).
-
-Signed-off-by: Benjamin Herrenschmidt <benh at kernel.crashing.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/video/offb.c | 50 +++++++++++++++++++++++---------------------------
- 1 file changed, 23 insertions(+), 27 deletions(-)
-
-diff --git a/drivers/video/offb.c b/drivers/video/offb.c
-index cb163a5..24e1fc6 100644
---- a/drivers/video/offb.c
-+++ b/drivers/video/offb.c
-@@ -100,36 +100,32 @@ static int offb_setcolreg(u_int regno, u_int red, u_int green, u_int blue,
- u_int transp, struct fb_info *info)
- {
- struct offb_par *par = (struct offb_par *) info->par;
-- int i, depth;
-- u32 *pal = info->pseudo_palette;
--
-- depth = info->var.bits_per_pixel;
-- if (depth == 16)
-- depth = (info->var.green.length == 5) ? 15 : 16;
--
-- if (regno > 255 ||
-- (depth == 16 && regno > 63) ||
-- (depth == 15 && regno > 31))
-- return 1;
--
-- if (regno < 16) {
-- switch (depth) {
-- case 15:
-- pal[regno] = (regno << 10) | (regno << 5) | regno;
-- break;
-- case 16:
-- pal[regno] = (regno << 11) | (regno << 5) | regno;
-- break;
-- case 24:
-- pal[regno] = (regno << 16) | (regno << 8) | regno;
-- break;
-- case 32:
-- i = (regno << 8) | regno;
-- pal[regno] = (i << 16) | i;
-- break;
-+
-+ if (info->fix.visual == FB_VISUAL_TRUECOLOR) {
-+ u32 *pal = info->pseudo_palette;
-+ u32 cr = red >> (16 - info->var.red.length);
-+ u32 cg = green >> (16 - info->var.green.length);
-+ u32 cb = blue >> (16 - info->var.blue.length);
-+ u32 value;
-+
-+ if (regno >= 16)
-+ return -EINVAL;
-+
-+ value = (cr << info->var.red.offset) |
-+ (cg << info->var.green.offset) |
-+ (cb << info->var.blue.offset);
-+ if (info->var.transp.length > 0) {
-+ u32 mask = (1 << info->var.transp.length) - 1;
-+ mask <<= info->var.transp.offset;
-+ value |= mask;
- }
-+ pal[regno] = value;
-+ return 0;
- }
-
-+ if (regno > 255)
-+ return -EINVAL;
-+
- red >>= 8;
- green >>= 8;
- blue >>= 8;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0006-offb-Fix-bug-in-calculating-requested-vram-size.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0006-offb-Fix-bug-in-calculating-requested-vram-size.patch
deleted file mode 100644
index d50f615..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0006-offb-Fix-bug-in-calculating-requested-vram-size.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From fa2fd2a2567605b97f702458ad603c502d680b8e Mon Sep 17 00:00:00 2001
-From: Benjamin Herrenschmidt <benh at kernel.crashing.org>
-Date: Tue, 3 Jan 2012 12:09:15 +1100
-Subject: [PATCH 06/49] offb: Fix bug in calculating requested vram size
-
-commit c055fe0797b7bd8f6f21a13598a55a16d5c13ae7 upstream.
-
-We used to try to request 8 times more vram than needed, which would
-fail if the card has a too small BAR (observed with qemu & kvm).
-
-Signed-off-by: Benjamin Herrenschmidt <benh at kernel.crashing.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/video/offb.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/video/offb.c b/drivers/video/offb.c
-index 24e1fc6..3251a02 100644
---- a/drivers/video/offb.c
-+++ b/drivers/video/offb.c
-@@ -377,7 +377,7 @@ static void __init offb_init_fb(const char *name, const char *full_name,
- int pitch, unsigned long address,
- int foreign_endian, struct device_node *dp)
- {
-- unsigned long res_size = pitch * height * (depth + 7) / 8;
-+ unsigned long res_size = pitch * height;
- struct offb_par *par = &default_par;
- unsigned long res_start = address;
- struct fb_fix_screeninfo *fix;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0007-libertas-clean-up-scan-thread-handling.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0007-libertas-clean-up-scan-thread-handling.patch
deleted file mode 100644
index f1586e9..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0007-libertas-clean-up-scan-thread-handling.patch
+++ /dev/null
@@ -1,86 +0,0 @@
-From e6b88766bba2a356fba01665ddf133de1bb35051 Mon Sep 17 00:00:00 2001
-From: Andres Salomon <dilinger at queued.net>
-Date: Mon, 19 Dec 2011 12:22:58 -0800
-Subject: [PATCH 07/49] libertas: clean up scan thread handling
-
-commit afbca95f95f2bf7283a72670c24c1f6de00b1cb5 upstream.
-
-The libertas scan thread expects priv->scan_req to be non-NULL. In theory,
-it should always be set. In practice, we've seen the following oops:
-
-[ 8363.067444] Unable to handle kernel NULL pointer dereference at virtual address 00000004
-[ 8363.067490] pgd = c0004000
-[ 8363.078393] [00000004] *pgd=00000000
-[ 8363.086711] Internal error: Oops: 17 [#1] PREEMPT
-[ 8363.091375] Modules linked in: fuse libertas_sdio libertas psmouse mousedev ov7670 mmp_camera joydev videobuf2_core videobuf2_dma_sg videobuf2_memops [last unloaded: scsi_wait_scan]
-[ 8363.107490] CPU: 0 Not tainted (3.0.0-gf7ccc69 #671)
-[ 8363.112799] PC is at lbs_scan_worker+0x108/0x5a4 [libertas]
-[ 8363.118326] LR is at 0x0
-[ 8363.120836] pc : [<bf03a854>] lr : [<00000000>] psr: 60000113
-[ 8363.120845] sp : ee66bf48 ip : 00000000 fp : 00000000
-[ 8363.120845] r10: ee2c2088 r9 : c04e2efc r8 : eef97005
-[ 8363.132231] r7 : eee0716f r6 : ee2c02c0 r5 : ee2c2088 r4 : eee07160
-[ 8363.137419] r3 : 00000000 r2 : a0000113 r1 : 00000001 r0 : eee07160
-[ 8363.143896] Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment kernel
-[ 8363.157630] Control: 10c5387d Table: 2e754019 DAC: 00000015
-[ 8363.163334] Process kworker/u:1 (pid: 25, stack limit = 0xee66a2f8)
-
-While I've not found a smoking gun, there are two places that raised red flags
-for me. The first is in _internal_start_scan, when we queue up a scan; we
-first queue the worker, and then set priv->scan_req. There's theoretically
-a 50mS delay which should be plenty, but doing things that way just seems
-racy (and not in the good way).
-
-The second is in the scan worker thread itself. Depending on the state of
-priv->scan_channel, we cancel pending scan runs and then requeue a run in
-300mS. We then send the scan command down to the hardware, sleep, and if
-we get scan results for all the desired channels, we set priv->scan_req to
-NULL. However, it that's happened in less than 300mS, what happens with
-the pending scan run?
-
-This patch addresses both of those concerns. With the patch applied, we
-have not seen the oops in the past two weeks.
-
-Signed-off-by: Andres Salomon <dilinger at queued.net>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/net/wireless/libertas/cfg.c | 10 ++++++----
- 1 file changed, 6 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/net/wireless/libertas/cfg.c b/drivers/net/wireless/libertas/cfg.c
-index a7f1ab2..db64ef1 100644
---- a/drivers/net/wireless/libertas/cfg.c
-+++ b/drivers/net/wireless/libertas/cfg.c
-@@ -728,9 +728,11 @@ static void lbs_scan_worker(struct work_struct *work)
- le16_to_cpu(scan_cmd->hdr.size),
- lbs_ret_scan, 0);
-
-- if (priv->scan_channel >= priv->scan_req->n_channels)
-+ if (priv->scan_channel >= priv->scan_req->n_channels) {
- /* Mark scan done */
-+ cancel_delayed_work(&priv->scan_work);
- lbs_scan_done(priv);
-+ }
-
- /* Restart network */
- if (carrier)
-@@ -759,12 +761,12 @@ static void _internal_start_scan(struct lbs_private *priv, bool internal,
- request->n_ssids, request->n_channels, request->ie_len);
-
- priv->scan_channel = 0;
-- queue_delayed_work(priv->work_thread, &priv->scan_work,
-- msecs_to_jiffies(50));
--
- priv->scan_req = request;
- priv->internal_scan = internal;
-
-+ queue_delayed_work(priv->work_thread, &priv->scan_work,
-+ msecs_to_jiffies(50));
-+
- lbs_deb_leave(LBS_DEB_CFG80211);
- }
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0008-bcma-support-for-suspend-and-resume.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0008-bcma-support-for-suspend-and-resume.patch
deleted file mode 100644
index 2ff2e38..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0008-bcma-support-for-suspend-and-resume.patch
+++ /dev/null
@@ -1,120 +0,0 @@
-From 5799429729ba8ad2cc0854682b106df29cdf2c7f Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5 at gmail.com>
-Date: Fri, 9 Dec 2011 22:16:07 +0100
-Subject: [PATCH 08/49] bcma: support for suspend and resume
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit 775ab52142b02237a54184238e922251c59a2b5c upstream.
-
-bcma used to lock up machine without enabling PCI or initializing CC.
-
-Signed-off-by: Rafał Miłecki <zajec5 at gmail.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/bcma/bcma_private.h | 3 +++
- drivers/bcma/host_pci.c | 37 +++++++++++++++++++++++++++++++++++++
- drivers/bcma/main.c | 16 ++++++++++++++++
- 3 files changed, 56 insertions(+)
-
-diff --git a/drivers/bcma/bcma_private.h b/drivers/bcma/bcma_private.h
-index 30a3085..fda56bd 100644
---- a/drivers/bcma/bcma_private.h
-+++ b/drivers/bcma/bcma_private.h
-@@ -18,6 +18,9 @@ void bcma_bus_unregister(struct bcma_bus *bus);
- int __init bcma_bus_early_register(struct bcma_bus *bus,
- struct bcma_device *core_cc,
- struct bcma_device *core_mips);
-+#ifdef CONFIG_PM
-+int bcma_bus_resume(struct bcma_bus *bus);
-+#endif
-
- /* scan.c */
- int bcma_bus_scan(struct bcma_bus *bus);
-diff --git a/drivers/bcma/host_pci.c b/drivers/bcma/host_pci.c
-index 1b51d8b..990f5a8 100644
---- a/drivers/bcma/host_pci.c
-+++ b/drivers/bcma/host_pci.c
-@@ -224,6 +224,41 @@ static void bcma_host_pci_remove(struct pci_dev *dev)
- pci_set_drvdata(dev, NULL);
- }
-
-+#ifdef CONFIG_PM
-+static int bcma_host_pci_suspend(struct pci_dev *dev, pm_message_t state)
-+{
-+ /* Host specific */
-+ pci_save_state(dev);
-+ pci_disable_device(dev);
-+ pci_set_power_state(dev, pci_choose_state(dev, state));
-+
-+ return 0;
-+}
-+
-+static int bcma_host_pci_resume(struct pci_dev *dev)
-+{
-+ struct bcma_bus *bus = pci_get_drvdata(dev);
-+ int err;
-+
-+ /* Host specific */
-+ pci_set_power_state(dev, 0);
-+ err = pci_enable_device(dev);
-+ if (err)
-+ return err;
-+ pci_restore_state(dev);
-+
-+ /* Bus specific */
-+ err = bcma_bus_resume(bus);
-+ if (err)
-+ return err;
-+
-+ return 0;
-+}
-+#else /* CONFIG_PM */
-+# define bcma_host_pci_suspend NULL
-+# define bcma_host_pci_resume NULL
-+#endif /* CONFIG_PM */
-+
- static DEFINE_PCI_DEVICE_TABLE(bcma_pci_bridge_tbl) = {
- { PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x0576) },
- { PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4331) },
-@@ -239,6 +274,8 @@ static struct pci_driver bcma_pci_bridge_driver = {
- .id_table = bcma_pci_bridge_tbl,
- .probe = bcma_host_pci_probe,
- .remove = bcma_host_pci_remove,
-+ .suspend = bcma_host_pci_suspend,
-+ .resume = bcma_host_pci_resume,
- };
-
- int __init bcma_host_pci_init(void)
-diff --git a/drivers/bcma/main.c b/drivers/bcma/main.c
-index 70c84b9..10f92b3 100644
---- a/drivers/bcma/main.c
-+++ b/drivers/bcma/main.c
-@@ -240,6 +240,22 @@ int __init bcma_bus_early_register(struct bcma_bus *bus,
- return 0;
- }
-
-+#ifdef CONFIG_PM
-+int bcma_bus_resume(struct bcma_bus *bus)
-+{
-+ struct bcma_device *core;
-+
-+ /* Init CC core */
-+ core = bcma_find_core(bus, BCMA_CORE_CHIPCOMMON);
-+ if (core) {
-+ bus->drv_cc.setup_done = false;
-+ bcma_core_chipcommon_init(&bus->drv_cc);
-+ }
-+
-+ return 0;
-+}
-+#endif
-+
- int __bcma_driver_register(struct bcma_driver *drv, struct module *owner)
- {
- drv->drv.name = drv->name;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0009-wl12xx-Validate-FEM-index-from-ini-file-and-FW.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0009-wl12xx-Validate-FEM-index-from-ini-file-and-FW.patch
deleted file mode 100644
index 7b89ef2..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0009-wl12xx-Validate-FEM-index-from-ini-file-and-FW.patch
+++ /dev/null
@@ -1,75 +0,0 @@
-From b230ef10214deadf20f4851b9f339333aa91b384 Mon Sep 17 00:00:00 2001
-From: Pontus Fuchs <pontus.fuchs at gmail.com>
-Date: Tue, 18 Oct 2011 09:23:41 +0200
-Subject: [PATCH 09/49] wl12xx: Validate FEM index from ini file and FW
-
-commit 2131d3c2f99b081806fdae7662c92fe6acda52af upstream.
-
-Check for out of bound FEM index to prevent reading beyond ini
-memory end.
-
-Signed-off-by: Pontus Fuchs <pontus.fuchs at gmail.com>
-Reviewed-by: Luciano Coelho <coelho at ti.com>
-Signed-off-by: Luciano Coelho <coelho at ti.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/net/wireless/wl12xx/cmd.c | 22 ++++++++++++++++++++++
- 1 file changed, 22 insertions(+)
-
-diff --git a/drivers/net/wireless/wl12xx/cmd.c b/drivers/net/wireless/wl12xx/cmd.c
-index a52299e..54a0d66 100644
---- a/drivers/net/wireless/wl12xx/cmd.c
-+++ b/drivers/net/wireless/wl12xx/cmd.c
-@@ -120,6 +120,11 @@ int wl1271_cmd_general_parms(struct wl1271 *wl)
- if (!wl->nvs)
- return -ENODEV;
-
-+ if (gp->tx_bip_fem_manufacturer >= WL1271_INI_FEM_MODULE_COUNT) {
-+ wl1271_warning("FEM index from INI out of bounds");
-+ return -EINVAL;
-+ }
-+
- gen_parms = kzalloc(sizeof(*gen_parms), GFP_KERNEL);
- if (!gen_parms)
- return -ENOMEM;
-@@ -143,6 +148,12 @@ int wl1271_cmd_general_parms(struct wl1271 *wl)
- gp->tx_bip_fem_manufacturer =
- gen_parms->general_params.tx_bip_fem_manufacturer;
-
-+ if (gp->tx_bip_fem_manufacturer >= WL1271_INI_FEM_MODULE_COUNT) {
-+ wl1271_warning("FEM index from FW out of bounds");
-+ ret = -EINVAL;
-+ goto out;
-+ }
-+
- wl1271_debug(DEBUG_CMD, "FEM autodetect: %s, manufacturer: %d\n",
- answer ? "auto" : "manual", gp->tx_bip_fem_manufacturer);
-
-@@ -162,6 +173,11 @@ int wl128x_cmd_general_parms(struct wl1271 *wl)
- if (!wl->nvs)
- return -ENODEV;
-
-+ if (gp->tx_bip_fem_manufacturer >= WL1271_INI_FEM_MODULE_COUNT) {
-+ wl1271_warning("FEM index from ini out of bounds");
-+ return -EINVAL;
-+ }
-+
- gen_parms = kzalloc(sizeof(*gen_parms), GFP_KERNEL);
- if (!gen_parms)
- return -ENOMEM;
-@@ -186,6 +202,12 @@ int wl128x_cmd_general_parms(struct wl1271 *wl)
- gp->tx_bip_fem_manufacturer =
- gen_parms->general_params.tx_bip_fem_manufacturer;
-
-+ if (gp->tx_bip_fem_manufacturer >= WL1271_INI_FEM_MODULE_COUNT) {
-+ wl1271_warning("FEM index from FW out of bounds");
-+ ret = -EINVAL;
-+ goto out;
-+ }
-+
- wl1271_debug(DEBUG_CMD, "FEM autodetect: %s, manufacturer: %d\n",
- answer ? "auto" : "manual", gp->tx_bip_fem_manufacturer);
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0010-wl12xx-Check-buffer-bound-when-processing-nvs-data.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0010-wl12xx-Check-buffer-bound-when-processing-nvs-data.patch
deleted file mode 100644
index fb3214a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0010-wl12xx-Check-buffer-bound-when-processing-nvs-data.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-From 1fae8f9be678520727414fa8f16417e17ccd4088 Mon Sep 17 00:00:00 2001
-From: Pontus Fuchs <pontus.fuchs at gmail.com>
-Date: Tue, 18 Oct 2011 09:23:42 +0200
-Subject: [PATCH 10/49] wl12xx: Check buffer bound when processing nvs data
-
-commit f6efe96edd9c41c624c8f4ddbc4930c1a2d8f1e1 upstream.
-
-An nvs with malformed contents could cause the processing of the
-calibration data to read beyond the end of the buffer. Prevent this
-from happening by adding bound checking.
-
-Signed-off-by: Pontus Fuchs <pontus.fuchs at gmail.com>
-Reviewed-by: Luciano Coelho <coelho at ti.com>
-Signed-off-by: Luciano Coelho <coelho at ti.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/net/wireless/wl12xx/boot.c | 14 ++++++++++++++
- 1 file changed, 14 insertions(+)
-
-diff --git a/drivers/net/wireless/wl12xx/boot.c b/drivers/net/wireless/wl12xx/boot.c
-index 6813379..a7b327d 100644
---- a/drivers/net/wireless/wl12xx/boot.c
-+++ b/drivers/net/wireless/wl12xx/boot.c
-@@ -347,6 +347,9 @@ static int wl1271_boot_upload_nvs(struct wl1271 *wl)
- nvs_ptr += 3;
-
- for (i = 0; i < burst_len; i++) {
-+ if (nvs_ptr + 3 >= (u8 *) wl->nvs + nvs_len)
-+ goto out_badnvs;
-+
- val = (nvs_ptr[0] | (nvs_ptr[1] << 8)
- | (nvs_ptr[2] << 16) | (nvs_ptr[3] << 24));
-
-@@ -358,6 +361,9 @@ static int wl1271_boot_upload_nvs(struct wl1271 *wl)
- nvs_ptr += 4;
- dest_addr += 4;
- }
-+
-+ if (nvs_ptr >= (u8 *) wl->nvs + nvs_len)
-+ goto out_badnvs;
- }
-
- /*
-@@ -369,6 +375,10 @@ static int wl1271_boot_upload_nvs(struct wl1271 *wl)
- */
- nvs_ptr = (u8 *)wl->nvs +
- ALIGN(nvs_ptr - (u8 *)wl->nvs + 7, 4);
-+
-+ if (nvs_ptr >= (u8 *) wl->nvs + nvs_len)
-+ goto out_badnvs;
-+
- nvs_len -= nvs_ptr - (u8 *)wl->nvs;
-
- /* Now we must set the partition correctly */
-@@ -384,6 +394,10 @@ static int wl1271_boot_upload_nvs(struct wl1271 *wl)
-
- kfree(nvs_aligned);
- return 0;
-+
-+out_badnvs:
-+ wl1271_error("nvs data is malformed");
-+ return -EILSEQ;
- }
-
- static void wl1271_boot_enable_interrupts(struct wl1271 *wl)
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0011-wl12xx-Restore-testmode-ABI.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0011-wl12xx-Restore-testmode-ABI.patch
deleted file mode 100644
index 2700f3b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0011-wl12xx-Restore-testmode-ABI.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 99a27ec9ad08dc0ab97efb62c424215911e2a580 Mon Sep 17 00:00:00 2001
-From: Pontus Fuchs <pontus.fuchs at gmail.com>
-Date: Thu, 1 Dec 2011 12:13:44 +0100
-Subject: [PATCH 11/49] wl12xx: Restore testmode ABI
-
-commit 3f1764945eaac532c20ab1f23afa352a40f797b2 upstream.
-
-Commit 80900d0140a7648587982c8f299830e900e49165 accidently broke
-the ABI for testmode commands. Restore the ABI again.
-
-Signed-off-by: Pontus Fuchs <pontus.fuchs at gmail.com>
-Signed-off-by: Luciano Coelho <coelho at ti.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/net/wireless/wl12xx/testmode.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/net/wireless/wl12xx/testmode.c b/drivers/net/wireless/wl12xx/testmode.c
-index 4ae8eff..abfb120 100644
---- a/drivers/net/wireless/wl12xx/testmode.c
-+++ b/drivers/net/wireless/wl12xx/testmode.c
-@@ -36,6 +36,7 @@ enum wl1271_tm_commands {
- WL1271_TM_CMD_TEST,
- WL1271_TM_CMD_INTERROGATE,
- WL1271_TM_CMD_CONFIGURE,
-+ WL1271_TM_CMD_NVS_PUSH, /* Not in use. Keep to not break ABI */
- WL1271_TM_CMD_SET_PLT_MODE,
- WL1271_TM_CMD_RECOVER,
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0012-powerpc-time-Handle-wrapping-of-decrementer.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0012-powerpc-time-Handle-wrapping-of-decrementer.patch
deleted file mode 100644
index 2a26036..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0012-powerpc-time-Handle-wrapping-of-decrementer.patch
+++ /dev/null
@@ -1,93 +0,0 @@
-From 9964209638e47771c184f5eb8ea393e852dcb87e Mon Sep 17 00:00:00 2001
-From: Anton Blanchard <anton at samba.org>
-Date: Wed, 23 Nov 2011 20:07:17 +0000
-Subject: [PATCH 12/49] powerpc/time: Handle wrapping of decrementer
-
-commit 37fb9a0231ee43d42d069863bdfd567fca2b61af upstream.
-
-When re-enabling interrupts we have code to handle edge sensitive
-decrementers by resetting the decrementer to 1 whenever it is negative.
-If interrupts were disabled long enough that the decrementer wrapped to
-positive we do nothing. This means interrupts can be delayed for a long
-time until it finally goes negative again.
-
-While we hope interrupts are never be disabled long enough for the
-decrementer to go positive, we have a very good test team that can
-drive any kernel into the ground. The softlockup data we get back
-from these fails could be seconds in the future, completely missing
-the cause of the lockup.
-
-We already keep track of the timebase of the next event so use that
-to work out if we should trigger a decrementer exception.
-
-Signed-off-by: Anton Blanchard <anton at samba.org>
-Signed-off-by: Benjamin Herrenschmidt <benh at kernel.crashing.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- arch/powerpc/include/asm/time.h | 2 ++
- arch/powerpc/kernel/irq.c | 15 ++++++---------
- arch/powerpc/kernel/time.c | 9 +++++++++
- 3 files changed, 17 insertions(+), 9 deletions(-)
-
-diff --git a/arch/powerpc/include/asm/time.h b/arch/powerpc/include/asm/time.h
-index fe6f7c2..bc3c745 100644
---- a/arch/powerpc/include/asm/time.h
-+++ b/arch/powerpc/include/asm/time.h
-@@ -219,5 +219,7 @@ DECLARE_PER_CPU(struct cpu_usage, cpu_usage_array);
- extern void secondary_cpu_time_init(void);
- extern void iSeries_time_init_early(void);
-
-+extern void decrementer_check_overflow(void);
-+
- #endif /* __KERNEL__ */
- #endif /* __POWERPC_TIME_H */
-diff --git a/arch/powerpc/kernel/irq.c b/arch/powerpc/kernel/irq.c
-index 5c3c469..745c1e7 100644
---- a/arch/powerpc/kernel/irq.c
-+++ b/arch/powerpc/kernel/irq.c
-@@ -164,16 +164,13 @@ notrace void arch_local_irq_restore(unsigned long en)
- */
- local_paca->hard_enabled = en;
-
--#ifndef CONFIG_BOOKE
-- /* On server, re-trigger the decrementer if it went negative since
-- * some processors only trigger on edge transitions of the sign bit.
-- *
-- * BookE has a level sensitive decrementer (latches in TSR) so we
-- * don't need that
-+ /*
-+ * Trigger the decrementer if we have a pending event. Some processors
-+ * only trigger on edge transitions of the sign bit. We might also
-+ * have disabled interrupts long enough that the decrementer wrapped
-+ * to positive.
- */
-- if ((int)mfspr(SPRN_DEC) < 0)
-- mtspr(SPRN_DEC, 1);
--#endif /* CONFIG_BOOKE */
-+ decrementer_check_overflow();
-
- /*
- * Force the delivery of pending soft-disabled interrupts on PS3.
-diff --git a/arch/powerpc/kernel/time.c b/arch/powerpc/kernel/time.c
-index 522bb1d..5db163c 100644
---- a/arch/powerpc/kernel/time.c
-+++ b/arch/powerpc/kernel/time.c
-@@ -889,6 +889,15 @@ static void __init clocksource_init(void)
- clock->name, clock->mult, clock->shift);
- }
-
-+void decrementer_check_overflow(void)
-+{
-+ u64 now = get_tb_or_rtc();
-+ struct decrementer_clock *decrementer = &__get_cpu_var(decrementers);
-+
-+ if (now >= decrementer->next_tb)
-+ set_dec(1);
-+}
-+
- static int decrementer_set_next_event(unsigned long evt,
- struct clock_event_device *dev)
- {
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0013-powerpc-Fix-unpaired-probe_hcall_entry-and-probe_hca.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0013-powerpc-Fix-unpaired-probe_hcall_entry-and-probe_hca.patch
deleted file mode 100644
index 75718a7..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0013-powerpc-Fix-unpaired-probe_hcall_entry-and-probe_hca.patch
+++ /dev/null
@@ -1,85 +0,0 @@
-From a5053ab063ae0b2fd8a4d77225570b93db184fd5 Mon Sep 17 00:00:00 2001
-From: Li Zhong <zhong at linux.vnet.ibm.com>
-Date: Sun, 18 Dec 2011 16:03:04 +0000
-Subject: [PATCH 13/49] powerpc: Fix unpaired probe_hcall_entry and
- probe_hcall_exit
-
-commit e4f387d8db3ba3c2dae4d8bdfe7bb5f4fe1bcb0d upstream.
-
-Unpaired calling of probe_hcall_entry and probe_hcall_exit might happen
-as following, which could cause incorrect preempt count.
-
-__trace_hcall_entry => trace_hcall_entry -> probe_hcall_entry =>
-get_cpu_var => preempt_disable
-
-__trace_hcall_exit => trace_hcall_exit -> probe_hcall_exit =>
-put_cpu_var => preempt_enable
-
-where:
-A => B and A -> B means A calls B, but
-=> means A will call B through function name, and B will definitely be
-called.
--> means A will call B through function pointer, so B might not be
-called if the function pointer is not set.
-
-So error happens when only one of probe_hcall_entry and probe_hcall_exit
-get called during a hcall.
-
-This patch tries to move the preempt count operations from
-probe_hcall_entry and probe_hcall_exit to its callers.
-
-Reported-by: Paul E. McKenney <paulmck at linux.vnet.ibm.com>
-Signed-off-by: Li Zhong <zhong at linux.vnet.ibm.com>
-Tested-by: Paul E. McKenney <paulmck at linux.vnet.ibm.com>
-Signed-off-by: Benjamin Herrenschmidt <benh at kernel.crashing.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- arch/powerpc/platforms/pseries/hvCall_inst.c | 4 +---
- arch/powerpc/platforms/pseries/lpar.c | 2 ++
- 2 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/arch/powerpc/platforms/pseries/hvCall_inst.c b/arch/powerpc/platforms/pseries/hvCall_inst.c
-index f106662..c9311cf 100644
---- a/arch/powerpc/platforms/pseries/hvCall_inst.c
-+++ b/arch/powerpc/platforms/pseries/hvCall_inst.c
-@@ -109,7 +109,7 @@ static void probe_hcall_entry(void *ignored, unsigned long opcode, unsigned long
- if (opcode > MAX_HCALL_OPCODE)
- return;
-
-- h = &get_cpu_var(hcall_stats)[opcode / 4];
-+ h = &__get_cpu_var(hcall_stats)[opcode / 4];
- h->tb_start = mftb();
- h->purr_start = mfspr(SPRN_PURR);
- }
-@@ -126,8 +126,6 @@ static void probe_hcall_exit(void *ignored, unsigned long opcode, unsigned long
- h->num_calls++;
- h->tb_total += mftb() - h->tb_start;
- h->purr_total += mfspr(SPRN_PURR) - h->purr_start;
--
-- put_cpu_var(hcall_stats);
- }
-
- static int __init hcall_inst_init(void)
-diff --git a/arch/powerpc/platforms/pseries/lpar.c b/arch/powerpc/platforms/pseries/lpar.c
-index 27a4950..dc36ea6 100644
---- a/arch/powerpc/platforms/pseries/lpar.c
-+++ b/arch/powerpc/platforms/pseries/lpar.c
-@@ -554,6 +554,7 @@ void __trace_hcall_entry(unsigned long opcode, unsigned long *args)
- goto out;
-
- (*depth)++;
-+ preempt_disable();
- trace_hcall_entry(opcode, args);
- (*depth)--;
-
-@@ -576,6 +577,7 @@ void __trace_hcall_exit(long opcode, unsigned long retval,
-
- (*depth)++;
- trace_hcall_exit(opcode, retval, retbuf);
-+ preempt_enable();
- (*depth)--;
-
- out:
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0014-IB-qib-Fix-a-possible-data-corruption-when-receiving.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0014-IB-qib-Fix-a-possible-data-corruption-when-receiving.patch
deleted file mode 100644
index d489f53..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0014-IB-qib-Fix-a-possible-data-corruption-when-receiving.patch
+++ /dev/null
@@ -1,78 +0,0 @@
-From 1792dc9565d7aac9b9696ea760d807faaddb3346 Mon Sep 17 00:00:00 2001
-From: Ram Vepa <ram.vepa at qlogic.com>
-Date: Fri, 23 Dec 2011 08:01:43 -0500
-Subject: [PATCH 14/49] IB/qib: Fix a possible data corruption when receiving
- packets
-
-commit eddfb675256f49d14e8c5763098afe3eb2c93701 upstream.
-
-Prevent a receive data corruption by ensuring that the write to update
-the rcvhdrheadn register to generate an interrupt is at the very end
-of the receive processing.
-
-Signed-off-by: Ramkrishna Vepa <ram.vepa at qlogic.com>
-Signed-off-by: Mike Marciniszyn <mike.marciniszyn at qlogic.com>
-Signed-off-by: Roland Dreier <roland at purestorage.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/infiniband/hw/qib/qib_iba6120.c | 4 +++-
- drivers/infiniband/hw/qib/qib_iba7220.c | 4 +++-
- drivers/infiniband/hw/qib/qib_iba7322.c | 6 ++++--
- 3 files changed, 10 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/infiniband/hw/qib/qib_iba6120.c b/drivers/infiniband/hw/qib/qib_iba6120.c
-index 781a802..4f18e2d 100644
---- a/drivers/infiniband/hw/qib/qib_iba6120.c
-+++ b/drivers/infiniband/hw/qib/qib_iba6120.c
-@@ -2076,9 +2076,11 @@ static void qib_6120_config_ctxts(struct qib_devdata *dd)
- static void qib_update_6120_usrhead(struct qib_ctxtdata *rcd, u64 hd,
- u32 updegr, u32 egrhd, u32 npkts)
- {
-- qib_write_ureg(rcd->dd, ur_rcvhdrhead, hd, rcd->ctxt);
- if (updegr)
- qib_write_ureg(rcd->dd, ur_rcvegrindexhead, egrhd, rcd->ctxt);
-+ mmiowb();
-+ qib_write_ureg(rcd->dd, ur_rcvhdrhead, hd, rcd->ctxt);
-+ mmiowb();
- }
-
- static u32 qib_6120_hdrqempty(struct qib_ctxtdata *rcd)
-diff --git a/drivers/infiniband/hw/qib/qib_iba7220.c b/drivers/infiniband/hw/qib/qib_iba7220.c
-index 439d3c5..7ec4048 100644
---- a/drivers/infiniband/hw/qib/qib_iba7220.c
-+++ b/drivers/infiniband/hw/qib/qib_iba7220.c
-@@ -2725,9 +2725,11 @@ static int qib_7220_set_loopback(struct qib_pportdata *ppd, const char *what)
- static void qib_update_7220_usrhead(struct qib_ctxtdata *rcd, u64 hd,
- u32 updegr, u32 egrhd, u32 npkts)
- {
-- qib_write_ureg(rcd->dd, ur_rcvhdrhead, hd, rcd->ctxt);
- if (updegr)
- qib_write_ureg(rcd->dd, ur_rcvegrindexhead, egrhd, rcd->ctxt);
-+ mmiowb();
-+ qib_write_ureg(rcd->dd, ur_rcvhdrhead, hd, rcd->ctxt);
-+ mmiowb();
- }
-
- static u32 qib_7220_hdrqempty(struct qib_ctxtdata *rcd)
-diff --git a/drivers/infiniband/hw/qib/qib_iba7322.c b/drivers/infiniband/hw/qib/qib_iba7322.c
-index 1d58959..5a070e8 100644
---- a/drivers/infiniband/hw/qib/qib_iba7322.c
-+++ b/drivers/infiniband/hw/qib/qib_iba7322.c
-@@ -4082,10 +4082,12 @@ static void qib_update_7322_usrhead(struct qib_ctxtdata *rcd, u64 hd,
- */
- if (hd >> IBA7322_HDRHEAD_PKTINT_SHIFT)
- adjust_rcv_timeout(rcd, npkts);
-- qib_write_ureg(rcd->dd, ur_rcvhdrhead, hd, rcd->ctxt);
-- qib_write_ureg(rcd->dd, ur_rcvhdrhead, hd, rcd->ctxt);
- if (updegr)
- qib_write_ureg(rcd->dd, ur_rcvegrindexhead, egrhd, rcd->ctxt);
-+ mmiowb();
-+ qib_write_ureg(rcd->dd, ur_rcvhdrhead, hd, rcd->ctxt);
-+ qib_write_ureg(rcd->dd, ur_rcvhdrhead, hd, rcd->ctxt);
-+ mmiowb();
- }
-
- static u32 qib_7322_hdrqempty(struct qib_ctxtdata *rcd)
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0015-IB-uverbs-Protect-QP-multicast-list.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0015-IB-uverbs-Protect-QP-multicast-list.patch
deleted file mode 100644
index a95b19b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0015-IB-uverbs-Protect-QP-multicast-list.patch
+++ /dev/null
@@ -1,96 +0,0 @@
-From a2128de6bb92885e31935d6c2e55f710cc4450da Mon Sep 17 00:00:00 2001
-From: Eli Cohen <eli at dev.mellanox.co.il>
-Date: Tue, 3 Jan 2012 20:36:48 -0800
-Subject: [PATCH 15/49] IB/uverbs: Protect QP multicast list
-
-commit e214a0fe2b382fa302c036ecd6e6ffe99e3b9875 upstream.
-
-Userspace verbs multicast attach/detach operations on a QP are done
-while holding the rwsem of the QP for reading. That's not sufficient
-since a reader lock allows more than one reader to acquire the
-lock. However, multicast attach/detach does list manipulation that
-can corrupt the list if multiple threads run in parallel.
-
-Fix this by acquiring the rwsem as a writer to serialize attach/detach
-operations. Add idr_write_qp() and put_qp_write() to encapsulate
-this.
-
-This fixes oops seen when running applications that perform multicast
-joins/leaves.
-
-Reported by: Mike Dubman <miked at mellanox.com>
-Signed-off-by: Eli Cohen <eli at mellanox.com>
-Signed-off-by: Roland Dreier <roland at purestorage.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/infiniband/core/uverbs_cmd.c | 21 +++++++++++++++++----
- 1 file changed, 17 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/infiniband/core/uverbs_cmd.c b/drivers/infiniband/core/uverbs_cmd.c
-index 254f164..e3db8ef 100644
---- a/drivers/infiniband/core/uverbs_cmd.c
-+++ b/drivers/infiniband/core/uverbs_cmd.c
-@@ -241,11 +241,24 @@ static struct ib_qp *idr_read_qp(int qp_handle, struct ib_ucontext *context)
- return idr_read_obj(&ib_uverbs_qp_idr, qp_handle, context, 0);
- }
-
-+static struct ib_qp *idr_write_qp(int qp_handle, struct ib_ucontext *context)
-+{
-+ struct ib_uobject *uobj;
-+
-+ uobj = idr_write_uobj(&ib_uverbs_qp_idr, qp_handle, context);
-+ return uobj ? uobj->object : NULL;
-+}
-+
- static void put_qp_read(struct ib_qp *qp)
- {
- put_uobj_read(qp->uobject);
- }
-
-+static void put_qp_write(struct ib_qp *qp)
-+{
-+ put_uobj_write(qp->uobject);
-+}
-+
- static struct ib_srq *idr_read_srq(int srq_handle, struct ib_ucontext *context)
- {
- return idr_read_obj(&ib_uverbs_srq_idr, srq_handle, context, 0);
-@@ -2375,7 +2388,7 @@ ssize_t ib_uverbs_attach_mcast(struct ib_uverbs_file *file,
- if (copy_from_user(&cmd, buf, sizeof cmd))
- return -EFAULT;
-
-- qp = idr_read_qp(cmd.qp_handle, file->ucontext);
-+ qp = idr_write_qp(cmd.qp_handle, file->ucontext);
- if (!qp)
- return -EINVAL;
-
-@@ -2404,7 +2417,7 @@ ssize_t ib_uverbs_attach_mcast(struct ib_uverbs_file *file,
- kfree(mcast);
-
- out_put:
-- put_qp_read(qp);
-+ put_qp_write(qp);
-
- return ret ? ret : in_len;
- }
-@@ -2422,7 +2435,7 @@ ssize_t ib_uverbs_detach_mcast(struct ib_uverbs_file *file,
- if (copy_from_user(&cmd, buf, sizeof cmd))
- return -EFAULT;
-
-- qp = idr_read_qp(cmd.qp_handle, file->ucontext);
-+ qp = idr_write_qp(cmd.qp_handle, file->ucontext);
- if (!qp)
- return -EINVAL;
-
-@@ -2441,7 +2454,7 @@ ssize_t ib_uverbs_detach_mcast(struct ib_uverbs_file *file,
- }
-
- out_put:
-- put_qp_read(qp);
-+ put_qp_write(qp);
-
- return ret ? ret : in_len;
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0016-iwlagn-fix-TID-use-bug.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0016-iwlagn-fix-TID-use-bug.patch
deleted file mode 100644
index 61767fa..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0016-iwlagn-fix-TID-use-bug.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From 0ecc365ca1e7a92c8fbad58d6a3bac8788be34cc Mon Sep 17 00:00:00 2001
-From: Johannes Berg <johannes.berg at intel.com>
-Date: Fri, 2 Dec 2011 12:22:54 -0800
-Subject: [PATCH 16/49] iwlagn: fix TID use bug
-
-commit 9a215e40d70ae63762963ab3ccc7f31dd966dc6a upstream.
-
-The driver everywhere uses max TID count as 9,
-which is wrong, it should be 8.
-
-I think the reason it uses 9 here is off-by-one
-confusion by whoever wrote this. We do use the
-value IWL_MAX_TID_COUNT for "not QoS/no TID"
-but that is completely correct even if it is 8
-and not 9 since 0-7 are only valid.
-
-As a side effect, this fixes the following bug:
-
- Open BA session requested for 00:23:cd:16:8a:7e tid 8
- ------------[ cut here ]------------
- kernel BUG at drivers/net/wireless/iwlwifi/iwl-trans-pcie-int.h:350!
- ...
-
-when you do
-echo "tx start 8" > /sys/kernel/debug/ieee80211/*/*/*/*/agg_status
-
-Reported-by: Nikolay Martynov <mar.kolya at gmail.com>
-Signed-off-by: Johannes Berg <johannes.berg at intel.com>
-Signed-off-by: Wey-Yi Guy <wey-yi.w.guy at intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/net/wireless/iwlwifi/iwl-commands.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/net/wireless/iwlwifi/iwl-commands.h b/drivers/net/wireless/iwlwifi/iwl-commands.h
-index 69d5f85..8b9ff28 100644
---- a/drivers/net/wireless/iwlwifi/iwl-commands.h
-+++ b/drivers/net/wireless/iwlwifi/iwl-commands.h
-@@ -809,7 +809,7 @@ struct iwl_qosparam_cmd {
- #define IWLAGN_STATION_COUNT 16
-
- #define IWL_INVALID_STATION 255
--#define IWL_MAX_TID_COUNT 9
-+#define IWL_MAX_TID_COUNT 8
-
- #define STA_FLG_TX_RATE_MSK cpu_to_le32(1 << 2)
- #define STA_FLG_PWR_SAVE_MSK cpu_to_le32(1 << 8)
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0017-iwlagn-fix-remove-use-of-PAGE_SIZE.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0017-iwlagn-fix-remove-use-of-PAGE_SIZE.patch
deleted file mode 100644
index c18c651..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0017-iwlagn-fix-remove-use-of-PAGE_SIZE.patch
+++ /dev/null
@@ -1,180 +0,0 @@
-From 89901733103c8f695c1d8cd5723f97fb55f53894 Mon Sep 17 00:00:00 2001
-From: Johannes Berg <johannes.berg at intel.com>
-Date: Mon, 19 Dec 2011 14:00:59 -0800
-Subject: [PATCH 17/49] iwlagn: fix (remove) use of PAGE_SIZE
-
-commit 106671369e6d046c0b3e1e72b18ad6dd9cb298b0 upstream.
-
-The ICT code erroneously uses PAGE_SIZE. The bug
-is that PAGE_SIZE isn't necessarily 4096, so on
-such platforms this code will not work correctly
-as we'll try to attempt to read an index in the
-table that the device never wrote, it always has
-4096-byte pages.
-
-Additionally, the manual alignment code here is
-unnecessary -- Documentation/DMA-API-HOWTO.txt
-states:
- The cpu return address and the DMA bus master address are both
- guaranteed to be aligned to the smallest PAGE_SIZE order which
- is greater than or equal to the requested size. This invariant
- exists (for example) to guarantee that if you allocate a chunk
- which is smaller than or equal to 64 kilobytes, the extent of the
- buffer you receive will not cross a 64K boundary.
-
-Just use appropriate new constants and get rid of
-the alignment code.
-
-Cc: Emmanuel Grumbach <emmanuel.grumbach at intel.com>
-Signed-off-by: Johannes Berg <johannes.berg at intel.com>
-Signed-off-by: Wey-Yi Guy <wey-yi.w.guy at intel.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/net/wireless/iwlwifi/iwl-trans-pcie-int.h | 2 -
- drivers/net/wireless/iwlwifi/iwl-trans-pcie-rx.c | 73 +++++++++------------
- 2 files changed, 31 insertions(+), 44 deletions(-)
-
-diff --git a/drivers/net/wireless/iwlwifi/iwl-trans-pcie-int.h b/drivers/net/wireless/iwlwifi/iwl-trans-pcie-int.h
-index 2b6756e..5c29281 100644
---- a/drivers/net/wireless/iwlwifi/iwl-trans-pcie-int.h
-+++ b/drivers/net/wireless/iwlwifi/iwl-trans-pcie-int.h
-@@ -219,9 +219,7 @@ struct iwl_trans_pcie {
-
- /* INT ICT Table */
- __le32 *ict_tbl;
-- void *ict_tbl_vir;
- dma_addr_t ict_tbl_dma;
-- dma_addr_t aligned_ict_tbl_dma;
- int ict_index;
- u32 inta;
- bool use_ict;
-diff --git a/drivers/net/wireless/iwlwifi/iwl-trans-pcie-rx.c b/drivers/net/wireless/iwlwifi/iwl-trans-pcie-rx.c
-index 374c68c..1920237 100644
---- a/drivers/net/wireless/iwlwifi/iwl-trans-pcie-rx.c
-+++ b/drivers/net/wireless/iwlwifi/iwl-trans-pcie-rx.c
-@@ -1136,7 +1136,11 @@ void iwl_irq_tasklet(struct iwl_trans *trans)
- * ICT functions
- *
- ******************************************************************************/
--#define ICT_COUNT (PAGE_SIZE/sizeof(u32))
-+
-+/* a device (PCI-E) page is 4096 bytes long */
-+#define ICT_SHIFT 12
-+#define ICT_SIZE (1 << ICT_SHIFT)
-+#define ICT_COUNT (ICT_SIZE / sizeof(u32))
-
- /* Free dram table */
- void iwl_free_isr_ict(struct iwl_trans *trans)
-@@ -1144,21 +1148,19 @@ void iwl_free_isr_ict(struct iwl_trans *trans)
- struct iwl_trans_pcie *trans_pcie =
- IWL_TRANS_GET_PCIE_TRANS(trans);
-
-- if (trans_pcie->ict_tbl_vir) {
-- dma_free_coherent(bus(trans)->dev,
-- (sizeof(u32) * ICT_COUNT) + PAGE_SIZE,
-- trans_pcie->ict_tbl_vir,
-+ if (trans_pcie->ict_tbl) {
-+ dma_free_coherent(bus(trans)->dev, ICT_SIZE,
-+ trans_pcie->ict_tbl,
- trans_pcie->ict_tbl_dma);
-- trans_pcie->ict_tbl_vir = NULL;
-- memset(&trans_pcie->ict_tbl_dma, 0,
-- sizeof(trans_pcie->ict_tbl_dma));
-- memset(&trans_pcie->aligned_ict_tbl_dma, 0,
-- sizeof(trans_pcie->aligned_ict_tbl_dma));
-+ trans_pcie->ict_tbl = NULL;
-+ trans_pcie->ict_tbl_dma = 0;
- }
- }
-
-
--/* allocate dram shared table it is a PAGE_SIZE aligned
-+/*
-+ * allocate dram shared table, it is an aligned memory
-+ * block of ICT_SIZE.
- * also reset all data related to ICT table interrupt.
- */
- int iwl_alloc_isr_ict(struct iwl_trans *trans)
-@@ -1166,36 +1168,26 @@ int iwl_alloc_isr_ict(struct iwl_trans *trans)
- struct iwl_trans_pcie *trans_pcie =
- IWL_TRANS_GET_PCIE_TRANS(trans);
-
-- /* allocate shrared data table */
-- trans_pcie->ict_tbl_vir =
-- dma_alloc_coherent(bus(trans)->dev,
-- (sizeof(u32) * ICT_COUNT) + PAGE_SIZE,
-- &trans_pcie->ict_tbl_dma, GFP_KERNEL);
-- if (!trans_pcie->ict_tbl_vir)
-+ trans_pcie->ict_tbl =
-+ dma_alloc_coherent(bus(trans)->dev, ICT_SIZE,
-+ &trans_pcie->ict_tbl_dma,
-+ GFP_KERNEL);
-+ if (!trans_pcie->ict_tbl)
- return -ENOMEM;
-
-- /* align table to PAGE_SIZE boundary */
-- trans_pcie->aligned_ict_tbl_dma =
-- ALIGN(trans_pcie->ict_tbl_dma, PAGE_SIZE);
--
-- IWL_DEBUG_ISR(trans, "ict dma addr %Lx dma aligned %Lx diff %d\n",
-- (unsigned long long)trans_pcie->ict_tbl_dma,
-- (unsigned long long)trans_pcie->aligned_ict_tbl_dma,
-- (int)(trans_pcie->aligned_ict_tbl_dma -
-- trans_pcie->ict_tbl_dma));
-+ /* just an API sanity check ... it is guaranteed to be aligned */
-+ if (WARN_ON(trans_pcie->ict_tbl_dma & (ICT_SIZE - 1))) {
-+ iwl_free_isr_ict(trans);
-+ return -EINVAL;
-+ }
-
-- trans_pcie->ict_tbl = trans_pcie->ict_tbl_vir +
-- (trans_pcie->aligned_ict_tbl_dma -
-- trans_pcie->ict_tbl_dma);
-+ IWL_DEBUG_ISR(trans, "ict dma addr %Lx\n",
-+ (unsigned long long)trans_pcie->ict_tbl_dma);
-
-- IWL_DEBUG_ISR(trans, "ict vir addr %p vir aligned %p diff %d\n",
-- trans_pcie->ict_tbl, trans_pcie->ict_tbl_vir,
-- (int)(trans_pcie->aligned_ict_tbl_dma -
-- trans_pcie->ict_tbl_dma));
-+ IWL_DEBUG_ISR(trans, "ict vir addr %p\n", trans_pcie->ict_tbl);
-
- /* reset table and index to all 0 */
-- memset(trans_pcie->ict_tbl_vir, 0,
-- (sizeof(u32) * ICT_COUNT) + PAGE_SIZE);
-+ memset(trans_pcie->ict_tbl, 0, ICT_SIZE);
- trans_pcie->ict_index = 0;
-
- /* add periodic RX interrupt */
-@@ -1213,23 +1205,20 @@ int iwl_reset_ict(struct iwl_trans *trans)
- struct iwl_trans_pcie *trans_pcie =
- IWL_TRANS_GET_PCIE_TRANS(trans);
-
-- if (!trans_pcie->ict_tbl_vir)
-+ if (!trans_pcie->ict_tbl)
- return 0;
-
- spin_lock_irqsave(&trans->shrd->lock, flags);
- iwl_disable_interrupts(trans);
-
-- memset(&trans_pcie->ict_tbl[0], 0, sizeof(u32) * ICT_COUNT);
-+ memset(trans_pcie->ict_tbl, 0, ICT_SIZE);
-
-- val = trans_pcie->aligned_ict_tbl_dma >> PAGE_SHIFT;
-+ val = trans_pcie->ict_tbl_dma >> ICT_SHIFT;
-
- val |= CSR_DRAM_INT_TBL_ENABLE;
- val |= CSR_DRAM_INIT_TBL_WRAP_CHECK;
-
-- IWL_DEBUG_ISR(trans, "CSR_DRAM_INT_TBL_REG =0x%X "
-- "aligned dma address %Lx\n",
-- val,
-- (unsigned long long)trans_pcie->aligned_ict_tbl_dma);
-+ IWL_DEBUG_ISR(trans, "CSR_DRAM_INT_TBL_REG =0x%x\n", val);
-
- iwl_write32(bus(trans), CSR_DRAM_INT_TBL_REG, val);
- trans_pcie->use_ict = true;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0018-perf-Fix-parsing-of-__print_flags-in-TP_printk.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0018-perf-Fix-parsing-of-__print_flags-in-TP_printk.patch
deleted file mode 100644
index e808b03..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0018-perf-Fix-parsing-of-__print_flags-in-TP_printk.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 76f1118e4b644be5b3572754925120648c135800 Mon Sep 17 00:00:00 2001
-From: Steven Rostedt <srostedt at redhat.com>
-Date: Fri, 4 Nov 2011 16:32:25 -0400
-Subject: [PATCH 18/49] perf: Fix parsing of __print_flags() in TP_printk()
-
-commit 49908a1b25d448d68fd26faca260e1850201575f upstream.
-
-A update is made to the sched:sched_switch event that adds some
-logic to the first parameter of the __print_flags() that shows the
-state of tasks. This change cause perf to fail parsing the flags.
-
-A simple fix is needed to have the parser be able to process ops
-within the argument.
-
-Reported-by: Andrew Vagin <avagin at openvz.org>
-Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- tools/perf/util/trace-event-parse.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/tools/perf/util/trace-event-parse.c b/tools/perf/util/trace-event-parse.c
-index 6c164dc..bf54c48 100644
---- a/tools/perf/util/trace-event-parse.c
-+++ b/tools/perf/util/trace-event-parse.c
-@@ -1582,6 +1582,8 @@ process_symbols(struct event *event, struct print_arg *arg, char **tok)
- field = malloc_or_die(sizeof(*field));
-
- type = process_arg(event, field, &token);
-+ while (type == EVENT_OP)
-+ type = process_op(event, field, &token);
- if (test_type_token(type, token, EVENT_DELIM, ","))
- goto out_free;
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0019-ore-Fix-crash-in-case-of-an-IO-error.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0019-ore-Fix-crash-in-case-of-an-IO-error.patch
deleted file mode 100644
index 65719c3..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0019-ore-Fix-crash-in-case-of-an-IO-error.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From babc031c2b450518ffb3ffc6a5ae1b02799a7af3 Mon Sep 17 00:00:00 2001
-From: Boaz Harrosh <bharrosh at panasas.com>
-Date: Tue, 27 Dec 2011 19:23:36 +0200
-Subject: [PATCH 19/49] ore: Fix crash in case of an IO error.
-
-commit ffefb8eaa367e8a5c14f779233d9da1fbc23d164 upstream.
-
-The users of ore_check_io() expect the reported device
-(In case of error) to be indexed relative to the passed-in
-ore_components table, and not the logical dev index.
-
-This causes a crash inside objlayoutdriver in case of
-an IO error.
-
-Signed-off-by: Boaz Harrosh <bharrosh at panasas.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- fs/exofs/ore.c | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/fs/exofs/ore.c b/fs/exofs/ore.c
-index d271ad8..894f3e1 100644
---- a/fs/exofs/ore.c
-+++ b/fs/exofs/ore.c
-@@ -445,10 +445,10 @@ int ore_check_io(struct ore_io_state *ios, ore_on_dev_error on_dev_error)
- u64 residual = ios->reading ?
- or->in.residual : or->out.residual;
- u64 offset = (ios->offset + ios->length) - residual;
-- struct ore_dev *od = ios->oc->ods[
-- per_dev->dev - ios->oc->first_dev];
-+ unsigned dev = per_dev->dev - ios->oc->first_dev;
-+ struct ore_dev *od = ios->oc->ods[dev];
-
-- on_dev_error(ios, od, per_dev->dev, osi.osd_err_pri,
-+ on_dev_error(ios, od, dev, osi.osd_err_pri,
- offset, residual);
- }
- if (osi.osd_err_pri >= acumulated_osd_err) {
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0020-ore-fix-BUG_ON-too-few-sgs-when-reading.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0020-ore-fix-BUG_ON-too-few-sgs-when-reading.patch
deleted file mode 100644
index 0d28b76..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0020-ore-fix-BUG_ON-too-few-sgs-when-reading.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From 90d604f1ef7df36ed0ccbba9cd74ebd8948486da Mon Sep 17 00:00:00 2001
-From: Boaz Harrosh <bharrosh at panasas.com>
-Date: Wed, 28 Dec 2011 19:14:23 +0200
-Subject: [PATCH 20/49] ore: fix BUG_ON, too few sgs when reading
-
-commit 361aba569f55dd159b850489a3538253afbb3973 upstream.
-
-When reading RAID5 files, in rare cases, we calculated too
-few sg segments. There should be two extra for the beginning
-and end partial units.
-
-Also "too few sg segments" should not be a BUG_ON there is
-all the mechanics in place to handle it, as a short read.
-So just return -ENOMEM and the rest of the code will gracefully
-split the IO.
-
-Signed-off-by: Boaz Harrosh <bharrosh at panasas.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- fs/exofs/ore.c | 2 +-
- fs/exofs/ore_raid.c | 6 +++++-
- 2 files changed, 6 insertions(+), 2 deletions(-)
-
-diff --git a/fs/exofs/ore.c b/fs/exofs/ore.c
-index 894f3e1..49cf230 100644
---- a/fs/exofs/ore.c
-+++ b/fs/exofs/ore.c
-@@ -266,7 +266,7 @@ int ore_get_rw_state(struct ore_layout *layout, struct ore_components *oc,
-
- /* first/last seg is split */
- num_raid_units += layout->group_width;
-- sgs_per_dev = div_u64(num_raid_units, data_devs);
-+ sgs_per_dev = div_u64(num_raid_units, data_devs) + 2;
- } else {
- /* For Writes add parity pages array. */
- max_par_pages = num_raid_units * pages_in_unit *
-diff --git a/fs/exofs/ore_raid.c b/fs/exofs/ore_raid.c
-index 29c47e5..414a2df 100644
---- a/fs/exofs/ore_raid.c
-+++ b/fs/exofs/ore_raid.c
-@@ -551,7 +551,11 @@ int _ore_add_parity_unit(struct ore_io_state *ios,
- unsigned cur_len)
- {
- if (ios->reading) {
-- BUG_ON(per_dev->cur_sg >= ios->sgs_per_dev);
-+ if (per_dev->cur_sg >= ios->sgs_per_dev) {
-+ ORE_DBGMSG("cur_sg(%d) >= sgs_per_dev(%d)\n" ,
-+ per_dev->cur_sg, ios->sgs_per_dev);
-+ return -ENOMEM;
-+ }
- _ore_add_sg_seg(per_dev, cur_len, true);
- } else {
- struct __stripe_pages_2d *sp2d = ios->sp2d;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0021-ore-Must-support-none-PAGE-aligned-IO.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0021-ore-Must-support-none-PAGE-aligned-IO.patch
deleted file mode 100644
index 0bce1b4..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0021-ore-Must-support-none-PAGE-aligned-IO.patch
+++ /dev/null
@@ -1,163 +0,0 @@
-From e467d09c0216e2f21f4f27555150fa03850b769d Mon Sep 17 00:00:00 2001
-From: Boaz Harrosh <bharrosh at panasas.com>
-Date: Wed, 28 Dec 2011 19:21:45 +0200
-Subject: [PATCH 21/49] ore: Must support none-PAGE-aligned IO
-
-commit 724577ca355795b0a25c93ccbeee927871ca1a77 upstream.
-
-NFS might send us offsets that are not PAGE aligned. So
-we must read in the reminder of the first/last pages, in cases
-we need it for Parity calculations.
-
-We only add an sg segments to read the partial page. But
-we don't mark it as read=true because it is a lock-for-write
-page.
-
-TODO: In some cases (IO spans a single unit) we can just
-adjust the raid_unit offset/length, but this is left for
-later Kernels.
-
-Signed-off-by: Boaz Harrosh <bharrosh at panasas.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- fs/exofs/ore_raid.c | 72 ++++++++++++++++++++++++++++++++++++++++++---------
- 1 file changed, 60 insertions(+), 12 deletions(-)
-
-diff --git a/fs/exofs/ore_raid.c b/fs/exofs/ore_raid.c
-index 414a2df..d222c77 100644
---- a/fs/exofs/ore_raid.c
-+++ b/fs/exofs/ore_raid.c
-@@ -328,8 +328,8 @@ static int _alloc_read_4_write(struct ore_io_state *ios)
- /* @si contains info of the to-be-inserted page. Update of @si should be
- * maintained by caller. Specificaly si->dev, si->obj_offset, ...
- */
--static int _add_to_read_4_write(struct ore_io_state *ios,
-- struct ore_striping_info *si, struct page *page)
-+static int _add_to_r4w(struct ore_io_state *ios, struct ore_striping_info *si,
-+ struct page *page, unsigned pg_len)
- {
- struct request_queue *q;
- struct ore_per_dev_state *per_dev;
-@@ -366,17 +366,60 @@ static int _add_to_read_4_write(struct ore_io_state *ios,
- _ore_add_sg_seg(per_dev, gap, true);
- }
- q = osd_request_queue(ore_comp_dev(read_ios->oc, per_dev->dev));
-- added_len = bio_add_pc_page(q, per_dev->bio, page, PAGE_SIZE, 0);
-- if (unlikely(added_len != PAGE_SIZE)) {
-+ added_len = bio_add_pc_page(q, per_dev->bio, page, pg_len,
-+ si->obj_offset % PAGE_SIZE);
-+ if (unlikely(added_len != pg_len)) {
- ORE_DBGMSG("Failed to bio_add_pc_page bi_vcnt=%d\n",
- per_dev->bio->bi_vcnt);
- return -ENOMEM;
- }
-
-- per_dev->length += PAGE_SIZE;
-+ per_dev->length += pg_len;
- return 0;
- }
-
-+/* read the beginning of an unaligned first page */
-+static int _add_to_r4w_first_page(struct ore_io_state *ios, struct page *page)
-+{
-+ struct ore_striping_info si;
-+ unsigned pg_len;
-+
-+ ore_calc_stripe_info(ios->layout, ios->offset, 0, &si);
-+
-+ pg_len = si.obj_offset % PAGE_SIZE;
-+ si.obj_offset -= pg_len;
-+
-+ ORE_DBGMSG("offset=0x%llx len=0x%x index=0x%lx dev=%x\n",
-+ _LLU(si.obj_offset), pg_len, page->index, si.dev);
-+
-+ return _add_to_r4w(ios, &si, page, pg_len);
-+}
-+
-+/* read the end of an incomplete last page */
-+static int _add_to_r4w_last_page(struct ore_io_state *ios, u64 *offset)
-+{
-+ struct ore_striping_info si;
-+ struct page *page;
-+ unsigned pg_len, p, c;
-+
-+ ore_calc_stripe_info(ios->layout, *offset, 0, &si);
-+
-+ p = si.unit_off / PAGE_SIZE;
-+ c = _dev_order(ios->layout->group_width * ios->layout->mirrors_p1,
-+ ios->layout->mirrors_p1, si.par_dev, si.dev);
-+ page = ios->sp2d->_1p_stripes[p].pages[c];
-+
-+ pg_len = PAGE_SIZE - (si.unit_off % PAGE_SIZE);
-+ *offset += pg_len;
-+
-+ ORE_DBGMSG("p=%d, c=%d next-offset=0x%llx len=0x%x dev=%x par_dev=%d\n",
-+ p, c, _LLU(*offset), pg_len, si.dev, si.par_dev);
-+
-+ BUG_ON(!page);
-+
-+ return _add_to_r4w(ios, &si, page, pg_len);
-+}
-+
- static void _mark_read4write_pages_uptodate(struct ore_io_state *ios, int ret)
- {
- struct bio_vec *bv;
-@@ -444,9 +487,13 @@ static int _read_4_write(struct ore_io_state *ios)
- struct page **pp = &_1ps->pages[c];
- bool uptodate;
-
-- if (*pp)
-+ if (*pp) {
-+ if (ios->offset % PAGE_SIZE)
-+ /* Read the remainder of the page */
-+ _add_to_r4w_first_page(ios, *pp);
- /* to-be-written pages start here */
- goto read_last_stripe;
-+ }
-
- *pp = ios->r4w->get_page(ios->private, offset,
- &uptodate);
-@@ -454,7 +501,7 @@ static int _read_4_write(struct ore_io_state *ios)
- return -ENOMEM;
-
- if (!uptodate)
-- _add_to_read_4_write(ios, &read_si, *pp);
-+ _add_to_r4w(ios, &read_si, *pp, PAGE_SIZE);
-
- /* Mark read-pages to be cache_released */
- _1ps->page_is_read[c] = true;
-@@ -465,8 +512,11 @@ static int _read_4_write(struct ore_io_state *ios)
- }
-
- read_last_stripe:
-- offset = ios->offset + (ios->length + PAGE_SIZE - 1) /
-- PAGE_SIZE * PAGE_SIZE;
-+ offset = ios->offset + ios->length;
-+ if (offset % PAGE_SIZE)
-+ _add_to_r4w_last_page(ios, &offset);
-+ /* offset will be aligned to next page */
-+
- last_stripe_end = div_u64(offset + bytes_in_stripe - 1, bytes_in_stripe)
- * bytes_in_stripe;
- if (offset == last_stripe_end) /* Optimize for the aligned case */
-@@ -503,7 +553,7 @@ read_last_stripe:
- /* Mark read-pages to be cache_released */
- _1ps->page_is_read[c] = true;
- if (!uptodate)
-- _add_to_read_4_write(ios, &read_si, page);
-+ _add_to_r4w(ios, &read_si, page, PAGE_SIZE);
- }
-
- offset += PAGE_SIZE;
-@@ -616,8 +666,6 @@ int _ore_post_alloc_raid_stuff(struct ore_io_state *ios)
- return -ENOMEM;
- }
-
-- BUG_ON(ios->offset % PAGE_SIZE);
--
- /* Round io down to last full strip */
- first_stripe = div_u64(ios->offset, stripe_size);
- last_stripe = div_u64(ios->offset + ios->length, stripe_size);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0022-ore-FIX-breakage-when-MISC_FILESYSTEMS-is-not-set.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0022-ore-FIX-breakage-when-MISC_FILESYSTEMS-is-not-set.patch
deleted file mode 100644
index 127325d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0022-ore-FIX-breakage-when-MISC_FILESYSTEMS-is-not-set.patch
+++ /dev/null
@@ -1,89 +0,0 @@
-From 39dc6fc36180f09295b2361b32e1ded494787507 Mon Sep 17 00:00:00 2001
-From: Boaz Harrosh <bharrosh at panasas.com>
-Date: Tue, 29 Nov 2011 15:35:53 -0800
-Subject: [PATCH 22/49] ore: FIX breakage when MISC_FILESYSTEMS is not set
-
-commit 831c2dc5f47c1dc79c32229d75065ada1dcc66e1 upstream.
-
-As Reported by Randy Dunlap
-
-When MISC_FILESYSTEMS is not enabled and NFS4.1 is:
-
-fs/built-in.o: In function `objio_alloc_io_state':
-objio_osd.c:(.text+0xcb525): undefined reference to `ore_get_rw_state'
-fs/built-in.o: In function `_write_done':
-objio_osd.c:(.text+0xcb58d): undefined reference to `ore_check_io'
-fs/built-in.o: In function `_read_done':
-...
-
-When MISC_FILESYSTEMS, which is more of a GUI thing then anything else,
-is not selected. exofs/Kconfig is never examined during Kconfig,
-and it can not do it's magic stuff to automatically select everything
-needed.
-
-We must split exofs/Kconfig in two. The ore one is always included.
-And the exofs one is left in it's old place in the menu.
-
-Reported-by: Randy Dunlap <rdunlap at xenotime.net>
-Signed-off-by: Boaz Harrosh <bharrosh at panasas.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- fs/Kconfig | 2 ++
- fs/exofs/Kconfig | 11 -----------
- fs/exofs/Kconfig.ore | 12 ++++++++++++
- 3 files changed, 14 insertions(+), 11 deletions(-)
- create mode 100644 fs/exofs/Kconfig.ore
-
-diff --git a/fs/Kconfig b/fs/Kconfig
-index 5f4c45d..6ad58a5 100644
---- a/fs/Kconfig
-+++ b/fs/Kconfig
-@@ -218,6 +218,8 @@ source "fs/exofs/Kconfig"
-
- endif # MISC_FILESYSTEMS
-
-+source "fs/exofs/Kconfig.ore"
-+
- menuconfig NETWORK_FILESYSTEMS
- bool "Network File Systems"
- default y
-diff --git a/fs/exofs/Kconfig b/fs/exofs/Kconfig
-index da42f32..86194b2 100644
---- a/fs/exofs/Kconfig
-+++ b/fs/exofs/Kconfig
-@@ -1,14 +1,3 @@
--# Note ORE needs to "select ASYNC_XOR". So Not to force multiple selects
--# for every ORE user we do it like this. Any user should add itself here
--# at the "depends on EXOFS_FS || ..." with an ||. The dependencies are
--# selected here, and we default to "ON". So in effect it is like been
--# selected by any of the users.
--config ORE
-- tristate
-- depends on EXOFS_FS || PNFS_OBJLAYOUT
-- select ASYNC_XOR
-- default SCSI_OSD_ULD
--
- config EXOFS_FS
- tristate "exofs: OSD based file system support"
- depends on SCSI_OSD_ULD
-diff --git a/fs/exofs/Kconfig.ore b/fs/exofs/Kconfig.ore
-new file mode 100644
-index 0000000..1ca7fb7
---- /dev/null
-+++ b/fs/exofs/Kconfig.ore
-@@ -0,0 +1,12 @@
-+# ORE - Objects Raid Engine (libore.ko)
-+#
-+# Note ORE needs to "select ASYNC_XOR". So Not to force multiple selects
-+# for every ORE user we do it like this. Any user should add itself here
-+# at the "depends on EXOFS_FS || ..." with an ||. The dependencies are
-+# selected here, and we default to "ON". So in effect it is like been
-+# selected by any of the users.
-+config ORE
-+ tristate
-+ depends on EXOFS_FS || PNFS_OBJLAYOUT
-+ select ASYNC_XOR
-+ default SCSI_OSD_ULD
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0023-reiserfs-Fix-quota-mount-option-parsing.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0023-reiserfs-Fix-quota-mount-option-parsing.patch
deleted file mode 100644
index 7154d2a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0023-reiserfs-Fix-quota-mount-option-parsing.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 755af2779e6b0a7bb925b7c362e69f959995e6ca Mon Sep 17 00:00:00 2001
-From: Jan Kara <jack at suse.cz>
-Date: Wed, 21 Dec 2011 17:35:34 +0100
-Subject: [PATCH 23/49] reiserfs: Fix quota mount option parsing
-
-commit a06d789b424190e9f59da391681f908486db2554 upstream.
-
-When jqfmt mount option is not specified on remount, we mistakenly clear
-s_jquota_fmt value stored in superblock. Fix the problem.
-
-CC: reiserfs-devel at vger.kernel.org
-Signed-off-by: Jan Kara <jack at suse.cz>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- fs/reiserfs/super.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/fs/reiserfs/super.c b/fs/reiserfs/super.c
-index 14363b9..f9eaa4a 100644
---- a/fs/reiserfs/super.c
-+++ b/fs/reiserfs/super.c
-@@ -1164,7 +1164,8 @@ static void handle_quota_files(struct super_block *s, char **qf_names,
- kfree(REISERFS_SB(s)->s_qf_names[i]);
- REISERFS_SB(s)->s_qf_names[i] = qf_names[i];
- }
-- REISERFS_SB(s)->s_jquota_fmt = *qfmt;
-+ if (*qfmt)
-+ REISERFS_SB(s)->s_jquota_fmt = *qfmt;
- }
- #endif
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0024-reiserfs-Force-inode-evictions-before-umount-to-avoi.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0024-reiserfs-Force-inode-evictions-before-umount-to-avoi.patch
deleted file mode 100644
index cf1d91f..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0024-reiserfs-Force-inode-evictions-before-umount-to-avoi.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-From 2385a06f384672d87f94bbc7ae2d56da961c62a7 Mon Sep 17 00:00:00 2001
-From: Jeff Mahoney <jeffm at suse.com>
-Date: Wed, 21 Dec 2011 21:18:43 +0100
-Subject: [PATCH 24/49] reiserfs: Force inode evictions before umount to avoid
- crash
-
-commit a9e36da655e54545c3289b2a0700b5c443de0edd upstream.
-
-This patch fixes a crash in reiserfs_delete_xattrs during umount.
-
-When shrink_dcache_for_umount clears the dcache from
-generic_shutdown_super, delayed evictions are forced to disk. If an
-evicted inode has extended attributes associated with it, it will
-need to walk the xattr tree to locate and remove them.
-
-But since shrink_dcache_for_umount will BUG if it encounters active
-dentries, the xattr tree must be released before it's called or it will
-crash during every umount.
-
-This patch forces the evictions to occur before generic_shutdown_super
-by calling shrink_dcache_sb first. The additional evictions caused
-by the removal of each associated xattr file and dir will be automatically
-handled as they're added to the LRU list.
-
-CC: reiserfs-devel at vger.kernel.org
-Signed-off-by: Jeff Mahoney <jeffm at suse.com>
-Signed-off-by: Jan Kara <jack at suse.cz>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- fs/reiserfs/super.c | 24 ++++++++++++++----------
- 1 file changed, 14 insertions(+), 10 deletions(-)
-
-diff --git a/fs/reiserfs/super.c b/fs/reiserfs/super.c
-index f9eaa4a..5e3527b 100644
---- a/fs/reiserfs/super.c
-+++ b/fs/reiserfs/super.c
-@@ -453,16 +453,20 @@ int remove_save_link(struct inode *inode, int truncate)
- static void reiserfs_kill_sb(struct super_block *s)
- {
- if (REISERFS_SB(s)) {
-- if (REISERFS_SB(s)->xattr_root) {
-- d_invalidate(REISERFS_SB(s)->xattr_root);
-- dput(REISERFS_SB(s)->xattr_root);
-- REISERFS_SB(s)->xattr_root = NULL;
-- }
-- if (REISERFS_SB(s)->priv_root) {
-- d_invalidate(REISERFS_SB(s)->priv_root);
-- dput(REISERFS_SB(s)->priv_root);
-- REISERFS_SB(s)->priv_root = NULL;
-- }
-+ /*
-+ * Force any pending inode evictions to occur now. Any
-+ * inodes to be removed that have extended attributes
-+ * associated with them need to clean them up before
-+ * we can release the extended attribute root dentries.
-+ * shrink_dcache_for_umount will BUG if we don't release
-+ * those before it's called so ->put_super is too late.
-+ */
-+ shrink_dcache_sb(s);
-+
-+ dput(REISERFS_SB(s)->xattr_root);
-+ REISERFS_SB(s)->xattr_root = NULL;
-+ dput(REISERFS_SB(s)->priv_root);
-+ REISERFS_SB(s)->priv_root = NULL;
- }
-
- kill_block_super(s);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0025-ext3-Don-t-warn-from-writepage-when-readonly-inode-i.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0025-ext3-Don-t-warn-from-writepage-when-readonly-inode-i.patch
deleted file mode 100644
index 68cf88a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0025-ext3-Don-t-warn-from-writepage-when-readonly-inode-i.patch
+++ /dev/null
@@ -1,73 +0,0 @@
-From a7cdfdb846fcba86ea1fa6c3eb0af197957e14c5 Mon Sep 17 00:00:00 2001
-From: Jan Kara <jack at suse.cz>
-Date: Thu, 22 Dec 2011 16:49:05 +0100
-Subject: [PATCH 25/49] ext3: Don't warn from writepage when readonly inode is
- spotted after error
-
-commit 33c104d415e92a51aaf638dc3d93920cfa601e5c upstream.
-
-WARN_ON_ONCE(IS_RDONLY(inode)) tends to trip when filesystem hits error and is
-remounted read-only. This unnecessarily scares users (well, they should be
-scared because of filesystem error, but the stack trace distracts them from the
-right source of their fear ;-). We could as well just remove the WARN_ON but
-it's not hard to fix it to not trip on filesystem with errors and not use more
-cycles in the common case so that's what we do.
-
-Signed-off-by: Jan Kara <jack at suse.cz>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- fs/ext3/inode.c | 24 +++++++++++++++++++++---
- 1 file changed, 21 insertions(+), 3 deletions(-)
-
-diff --git a/fs/ext3/inode.c b/fs/ext3/inode.c
-index 85fe655..5b3f907 100644
---- a/fs/ext3/inode.c
-+++ b/fs/ext3/inode.c
-@@ -1617,7 +1617,13 @@ static int ext3_ordered_writepage(struct page *page,
- int err;
-
- J_ASSERT(PageLocked(page));
-- WARN_ON_ONCE(IS_RDONLY(inode));
-+ /*
-+ * We don't want to warn for emergency remount. The condition is
-+ * ordered to avoid dereferencing inode->i_sb in non-error case to
-+ * avoid slow-downs.
-+ */
-+ WARN_ON_ONCE(IS_RDONLY(inode) &&
-+ !(EXT3_SB(inode->i_sb)->s_mount_state & EXT3_ERROR_FS));
-
- /*
- * We give up here if we're reentered, because it might be for a
-@@ -1692,7 +1698,13 @@ static int ext3_writeback_writepage(struct page *page,
- int err;
-
- J_ASSERT(PageLocked(page));
-- WARN_ON_ONCE(IS_RDONLY(inode));
-+ /*
-+ * We don't want to warn for emergency remount. The condition is
-+ * ordered to avoid dereferencing inode->i_sb in non-error case to
-+ * avoid slow-downs.
-+ */
-+ WARN_ON_ONCE(IS_RDONLY(inode) &&
-+ !(EXT3_SB(inode->i_sb)->s_mount_state & EXT3_ERROR_FS));
-
- if (ext3_journal_current_handle())
- goto out_fail;
-@@ -1735,7 +1747,13 @@ static int ext3_journalled_writepage(struct page *page,
- int err;
-
- J_ASSERT(PageLocked(page));
-- WARN_ON_ONCE(IS_RDONLY(inode));
-+ /*
-+ * We don't want to warn for emergency remount. The condition is
-+ * ordered to avoid dereferencing inode->i_sb in non-error case to
-+ * avoid slow-downs.
-+ */
-+ WARN_ON_ONCE(IS_RDONLY(inode) &&
-+ !(EXT3_SB(inode->i_sb)->s_mount_state & EXT3_ERROR_FS));
-
- if (ext3_journal_current_handle())
- goto no_write;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0026-drivers-hv-Don-t-OOPS-when-you-cannot-init-vmbus.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0026-drivers-hv-Don-t-OOPS-when-you-cannot-init-vmbus.patch
deleted file mode 100644
index deb65c6..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0026-drivers-hv-Don-t-OOPS-when-you-cannot-init-vmbus.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-From dd343a1e4ffe4bfbfa808d2d983eb7f3c05b9649 Mon Sep 17 00:00:00 2001
-From: "K. Y. Srinivasan" <kys at microsoft.com>
-Date: Thu, 1 Dec 2011 09:59:34 -0800
-Subject: [PATCH 26/49] drivers: hv: Don't OOPS when you cannot init vmbus
-
-commit cf6a2eacbcb2593b5b91d0817915c4f0464bb534 upstream.
-
-The hv vmbus driver was causing an OOPS since it was trying to register drivers
-on top of the bus even if initialization of the bus has failed for some
-reason (such as the odd chance someone would run a hv enabled kernel in a
-non-hv environment).
-
-Signed-off-by: Sasha Levin <levinsasha928 at gmail.com>
-Signed-off-by: K. Y. Srinivasan <kys at microsoft.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/hv/vmbus_drv.c | 16 ++++++++++++++++
- 1 file changed, 16 insertions(+)
-
-diff --git a/drivers/hv/vmbus_drv.c b/drivers/hv/vmbus_drv.c
-index 0c048dd..d3b0b4f 100644
---- a/drivers/hv/vmbus_drv.c
-+++ b/drivers/hv/vmbus_drv.c
-@@ -62,6 +62,14 @@ struct hv_device_info {
- struct hv_dev_port_info outbound;
- };
-
-+static int vmbus_exists(void)
-+{
-+ if (hv_acpi_dev == NULL)
-+ return -ENODEV;
-+
-+ return 0;
-+}
-+
-
- static void get_channel_info(struct hv_device *device,
- struct hv_device_info *info)
-@@ -590,6 +598,10 @@ int __vmbus_driver_register(struct hv_driver *hv_driver, struct module *owner, c
-
- pr_info("registering driver %s\n", hv_driver->name);
-
-+ ret = vmbus_exists();
-+ if (ret < 0)
-+ return ret;
-+
- hv_driver->driver.name = hv_driver->name;
- hv_driver->driver.owner = owner;
- hv_driver->driver.mod_name = mod_name;
-@@ -614,6 +626,9 @@ void vmbus_driver_unregister(struct hv_driver *hv_driver)
- {
- pr_info("unregistering driver %s\n", hv_driver->name);
-
-+ if (!vmbus_exists())
-+ return;
-+
- driver_unregister(&hv_driver->driver);
-
- }
-@@ -776,6 +791,7 @@ static int __init hv_acpi_init(void)
-
- cleanup:
- acpi_bus_unregister_driver(&vmbus_acpi_driver);
-+ hv_acpi_dev = NULL;
- return ret;
- }
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0027-Drivers-hv-Fix-a-bug-in-vmbus_driver_unregister.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0027-Drivers-hv-Fix-a-bug-in-vmbus_driver_unregister.patch
deleted file mode 100644
index 09e0236..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0027-Drivers-hv-Fix-a-bug-in-vmbus_driver_unregister.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 8253be156f369d4015dc311ca6895f655c7ec3b1 Mon Sep 17 00:00:00 2001
-From: "K. Y. Srinivasan" <kys at microsoft.com>
-Date: Tue, 27 Dec 2011 13:49:37 -0800
-Subject: [PATCH 27/49] Drivers:hv: Fix a bug in vmbus_driver_unregister()
-
-commit 8f257a142fc3868d69de3f996b95d7bdbc509560 upstream.
-
-The function vmbus_exists() was introduced recently to deal with cases where
-the vmbus driver failed to initialize and yet other Hyper-V drivers attempted
-to register with the vmbus bus driver. This patch introduced a bug where
-vmbus_driver_unregister() would fail to unregister the driver. This patch
-fixes the problem.
-
-Signed-off-by: K. Y. Srinivasan <kys at microsoft.com>
-Signed-off-by: Fuzhou Chen <fuzhouch at microsoft.com>
-Cc: Sasha Levin <levinsasha928 at gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/hv/vmbus_drv.c | 5 +----
- 1 file changed, 1 insertion(+), 4 deletions(-)
-
-diff --git a/drivers/hv/vmbus_drv.c b/drivers/hv/vmbus_drv.c
-index d3b0b4f..d2d0a2a 100644
---- a/drivers/hv/vmbus_drv.c
-+++ b/drivers/hv/vmbus_drv.c
-@@ -627,10 +627,7 @@ void vmbus_driver_unregister(struct hv_driver *hv_driver)
- pr_info("unregistering driver %s\n", hv_driver->name);
-
- if (!vmbus_exists())
-- return;
--
-- driver_unregister(&hv_driver->driver);
--
-+ driver_unregister(&hv_driver->driver);
- }
- EXPORT_SYMBOL_GPL(vmbus_driver_unregister);
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0028-USB-update-documentation-for-usbmon.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0028-USB-update-documentation-for-usbmon.patch
deleted file mode 100644
index 0396a42..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0028-USB-update-documentation-for-usbmon.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From 4567e036cdbcff4a7859ca92fcc3a86fe84c73d1 Mon Sep 17 00:00:00 2001
-From: Alan Stern <stern at rowland.harvard.edu>
-Date: Wed, 4 Jan 2012 16:36:35 -0500
-Subject: [PATCH 28/49] USB: update documentation for usbmon
-
-commit d8cae98cddd286e38db1724dda1b0e7b467f9237 upstream.
-
-The documentation for usbmon is out of date; the usbfs "devices" file
-now exists in /sys/kernel/debug/usb rather than /proc/bus/usb. This
-patch (as1505) updates the documentation accordingly, and also
-mentions that the necessary information can be found by running lsusb.
-
-Signed-off-by: Alan Stern <stern at rowland.harvard.edu>
-CC: Pete Zaitcev <zaitcev at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- Documentation/usb/usbmon.txt | 14 +++++++++-----
- 1 file changed, 9 insertions(+), 5 deletions(-)
-
-diff --git a/Documentation/usb/usbmon.txt b/Documentation/usb/usbmon.txt
-index a4efa04..5335fa8 100644
---- a/Documentation/usb/usbmon.txt
-+++ b/Documentation/usb/usbmon.txt
-@@ -47,10 +47,11 @@ This allows to filter away annoying devices that talk continuously.
-
- 2. Find which bus connects to the desired device
-
--Run "cat /proc/bus/usb/devices", and find the T-line which corresponds to
--the device. Usually you do it by looking for the vendor string. If you have
--many similar devices, unplug one and compare two /proc/bus/usb/devices outputs.
--The T-line will have a bus number. Example:
-+Run "cat /sys/kernel/debug/usb/devices", and find the T-line which corresponds
-+to the device. Usually you do it by looking for the vendor string. If you have
-+many similar devices, unplug one and compare the two
-+/sys/kernel/debug/usb/devices outputs. The T-line will have a bus number.
-+Example:
-
- T: Bus=03 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=12 MxCh= 0
- D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
-@@ -58,7 +59,10 @@ P: Vendor=0557 ProdID=2004 Rev= 1.00
- S: Manufacturer=ATEN
- S: Product=UC100KM V2.00
-
--Bus=03 means it's bus 3.
-+"Bus=03" means it's bus 3. Alternatively, you can look at the output from
-+"lsusb" and get the bus number from the appropriate line. Example:
-+
-+Bus 003 Device 002: ID 0557:2004 ATEN UC100KM V2.00
-
- 3. Start 'cat'
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0029-usbfs-Fix-oops-related-to-user-namespace-conversion.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0029-usbfs-Fix-oops-related-to-user-namespace-conversion.patch
deleted file mode 100644
index 053e6b2..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0029-usbfs-Fix-oops-related-to-user-namespace-conversion.patch
+++ /dev/null
@@ -1,125 +0,0 @@
-From dd26fed234814467b3d7b537485351705545370c Mon Sep 17 00:00:00 2001
-From: Sarah Sharp <sarah.a.sharp at linux.intel.com>
-Date: Fri, 16 Dec 2011 11:26:30 -0800
-Subject: [PATCH 29/49] usbfs: Fix oops related to user namespace conversion.
-
-commit 1b41c8321e495337e877ca02d0b9680bc4112eff upstream.
-
-When running the Point Grey "flycap" program for their USB 3.0 camera
-(which was running as a USB 2.0 device for some reason), I trigger this
-oops whenever I try to open a video stream:
-
-Dec 15 16:48:34 puck kernel: [ 1798.715559] BUG: unable to handle kernel NULL pointer dereference at (null)
-Dec 15 16:48:34 puck kernel: [ 1798.719153] IP: [<ffffffff8147841e>] free_async+0x1e/0x70
-Dec 15 16:48:34 puck kernel: [ 1798.720991] PGD 6f833067 PUD 6fc56067 PMD 0
-Dec 15 16:48:34 puck kernel: [ 1798.722815] Oops: 0002 [#1] SMP
-Dec 15 16:48:34 puck kernel: [ 1798.724627] CPU 0
-Dec 15 16:48:34 puck kernel: [ 1798.724636] Modules linked in: ecryptfs encrypted_keys sha1_generic trusted binfmt_misc sha256_generic aesni_intel cryptd aes_x86_64 aes_generic parport_pc dm_crypt ppdev joydev snd_hda_codec_hdmi snd_hda_codec_conexant arc4 iwlwifi snd_hda_intel snd_hda_codec snd_hwdep snd_pcm thinkpad_acpi mac80211 snd_seq_midi snd_rawmidi snd_seq_midi_event snd_seq snd_timer btusb uvcvideo snd_seq_device bluetooth videodev psmouse snd v4l2_compat_ioctl32 serio_raw tpm_tis cfg80211 tpm tpm_bios nvram soundcore snd_page_alloc lp parport i915 xhci_hcd ahci libahci drm_kms_helper drm sdhci_pci sdhci e1000e i2c_algo_bit video
-Dec 15 16:48:34 puck kernel: [ 1798.734212]
-Dec 15 16:48:34 puck kernel: [ 1798.736162] Pid: 2713, comm: FlyCap2 Not tainted 3.2.0-rc5+ #28 LENOVO 4286CTO/4286CTO
-Dec 15 16:48:34 puck kernel: [ 1798.738148] RIP: 0010:[<ffffffff8147841e>] [<ffffffff8147841e>] free_async+0x1e/0x70
-Dec 15 16:48:34 puck kernel: [ 1798.740134] RSP: 0018:ffff88005715fd78 EFLAGS: 00010296
-Dec 15 16:48:34 puck kernel: [ 1798.742118] RAX: 00000000fffffff4 RBX: ffff88006fe8f900 RCX: 0000000000004118
-Dec 15 16:48:34 puck kernel: [ 1798.744116] RDX: 0000000001000000 RSI: 0000000000016390 RDI: 0000000000000000
-Dec 15 16:48:34 puck kernel: [ 1798.746087] RBP: ffff88005715fd88 R08: 0000000000000000 R09: ffffffff8146f22e
-Dec 15 16:48:34 puck kernel: [ 1798.748018] R10: ffff88006e520ac0 R11: 0000000000000001 R12: ffff88005715fe28
-Dec 15 16:48:34 puck kernel: [ 1798.749916] R13: ffff88005d31df00 R14: ffff88006fe8f900 R15: 00007f688c995cb8
-Dec 15 16:48:34 puck kernel: [ 1798.751785] FS: 00007f68a366da40(0000) GS:ffff880100200000(0000) knlGS:0000000000000000
-Dec 15 16:48:34 puck kernel: [ 1798.753659] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
-Dec 15 16:48:34 puck kernel: [ 1798.755509] CR2: 0000000000000000 CR3: 00000000706bb000 CR4: 00000000000406f0
-Dec 15 16:48:34 puck kernel: [ 1798.757334] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
-Dec 15 16:48:34 puck kernel: [ 1798.759124] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
-Dec 15 16:48:34 puck kernel: [ 1798.760871] Process FlyCap2 (pid: 2713, threadinfo ffff88005715e000, task ffff88006c675b80)
-Dec 15 16:48:34 puck kernel: [ 1798.762605] Stack:
-Dec 15 16:48:34 puck kernel: [ 1798.764297] ffff88005715fe28 0000000000000000 ffff88005715fe08 ffffffff81479058
-Dec 15 16:48:34 puck kernel: [ 1798.766020] 0000000000000000 ffffea0000004000 ffff880000004118 0000000000000000
-Dec 15 16:48:34 puck kernel: [ 1798.767750] ffff880000000001 ffff88006e520ac0 fffffff46fd81180 0000000000000000
-Dec 15 16:48:34 puck kernel: [ 1798.769472] Call Trace:
-Dec 15 16:48:34 puck kernel: [ 1798.771147] [<ffffffff81479058>] proc_do_submiturb+0x778/0xa00
-Dec 15 16:48:34 puck kernel: [ 1798.772798] [<ffffffff8147a5fd>] usbdev_do_ioctl+0x24d/0x1200
-Dec 15 16:48:34 puck kernel: [ 1798.774410] [<ffffffff8147b5de>] usbdev_ioctl+0xe/0x20
-Dec 15 16:48:34 puck kernel: [ 1798.775975] [<ffffffff81189259>] do_vfs_ioctl+0x99/0x600
-Dec 15 16:48:34 puck kernel: [ 1798.777534] [<ffffffff81189851>] sys_ioctl+0x91/0xa0
-Dec 15 16:48:34 puck kernel: [ 1798.779088] [<ffffffff816247c2>] system_call_fastpath+0x16/0x1b
-ec 15 16:48:34 puck kernel: [ 1798.780634] Code: 51 ff ff ff e9 29 ff ff ff 0f 1f 40 00 55 48 89 e5 53 48 83 ec 08 66 66 66 66 90 48 89 fb 48 8b 7f 18 e8 a6 ea c0 ff 4
-8 8b 7b 20 <f0> ff 0f 0f 94 c0 84 c0 74 05 e8 d3 99 c1 ff 48 8b 43 40 48 8b
-Dec 15 16:48:34 puck kernel: [ 1798.783970] RIP [<ffffffff8147841e>] free_async+0x1e/0x70
-Dec 15 16:48:34 puck kernel: [ 1798.785630] RSP <ffff88005715fd78>
-Dec 15 16:48:34 puck kernel: [ 1798.787274] CR2: 0000000000000000
-Dec 15 16:48:34 puck kernel: [ 1798.794728] ---[ end trace 52894d3355f88d19 ]---
-
-markup_oops.pl says the oops is in put_cred:
-
- ffffffff81478401: 48 89 e5 mov %rsp,%rbp
- ffffffff81478404: 53 push %rbx
- ffffffff81478405: 48 83 ec 08 sub $0x8,%rsp
- ffffffff81478409: e8 f2 c0 1a 00 callq ffffffff81624500 <mcount>
- ffffffff8147840e: 48 89 fb mov %rdi,%rbx | %ebx => ffff88006fe8f900
- put_pid(as->pid);
- ffffffff81478411: 48 8b 7f 18 mov 0x18(%rdi),%rdi
- ffffffff81478415: e8 a6 ea c0 ff callq ffffffff81086ec0 <put_pid>
- put_cred(as->cred);
- ffffffff8147841a: 48 8b 7b 20 mov 0x20(%rbx),%rdi | %edi => 0 %ebx = ffff88006fe8f900
- */
- static inline int atomic_dec_and_test(atomic_t *v)
- {
- unsigned char c;
-
- asm volatile(LOCK_PREFIX "decl %0; sete %1"
-*ffffffff8147841e: f0 ff 0f lock decl (%rdi) | %edi = 0 <--- faulting instruction
- ffffffff81478421: 0f 94 c0 sete %al
- static inline void put_cred(const struct cred *_cred)
- {
- struct cred *cred = (struct cred *) _cred;
-
- validate_creds(cred);
- if (atomic_dec_and_test(&(cred)->usage))
- ffffffff81478424: 84 c0 test %al,%al
- ffffffff81478426: 74 05 je ffffffff8147842d <free_async+0x2d>
- __put_cred(cred);
- ffffffff81478428: e8 d3 99 c1 ff callq ffffffff81091e00 <__put_cred>
- kfree(as->urb->transfer_buffer);
- ffffffff8147842d: 48 8b 43 40 mov 0x40(%rbx),%rax
- ffffffff81478431: 48 8b 78 68 mov 0x68(%rax),%rdi
- ffffffff81478435: e8 a6 e1 ce ff callq ffffffff811665e0 <kfree>
- kfree(as->urb->setup_packet);
- ffffffff8147843a: 48 8b 43 40 mov 0x40(%rbx),%rax
- ffffffff8147843e: 48 8b b8 90 00 00 00 mov 0x90(%rax),%rdi
- ffffffff81478445: e8 96 e1 ce ff callq ffffffff811665e0 <kfree>
- usb_free_urb(as->urb);
- ffffffff8147844a: 48 8b 7b 40 mov 0x40(%rbx),%rdi
- ffffffff8147844e: e8 0d 6b ff ff callq ffffffff8146ef60 <usb_free_urb>
-
-This bug seems to have been introduced by commit
-d178bc3a708f39cbfefc3fab37032d3f2511b4ec "user namespace: usb: make usb
-urbs user namespace aware (v2)"
-
-I'm not sure if this is right fix, but it does stop the oops.
-
-Unfortunately, the Point Grey software still refuses to work, but it's a
-closed source app, so I can't fix it.
-
-Signed-off-by: Sarah Sharp <sarah.a.sharp at linux.intel.com>
-Acked-by: Serge Hallyn <serge.hallyn at canonical.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/usb/core/devio.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/usb/core/devio.c b/drivers/usb/core/devio.c
-index e3beaf2..7abf060 100644
---- a/drivers/usb/core/devio.c
-+++ b/drivers/usb/core/devio.c
-@@ -249,7 +249,8 @@ static struct async *alloc_async(unsigned int numisoframes)
- static void free_async(struct async *as)
- {
- put_pid(as->pid);
-- put_cred(as->cred);
-+ if (as->cred)
-+ put_cred(as->cred);
- kfree(as->urb->transfer_buffer);
- kfree(as->urb->setup_packet);
- usb_free_urb(as->urb);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0030-atmel_serial-fix-spinlock-lockup-in-RS485-code.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0030-atmel_serial-fix-spinlock-lockup-in-RS485-code.patch
deleted file mode 100644
index d3200cb..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0030-atmel_serial-fix-spinlock-lockup-in-RS485-code.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 9f3da92a62f59784ea39eaa38e259f0185bd5d09 Mon Sep 17 00:00:00 2001
-From: Claudio Scordino <claudio at evidence.eu.com>
-Date: Fri, 16 Dec 2011 15:08:49 +0100
-Subject: [PATCH 30/49] atmel_serial: fix spinlock lockup in RS485 code
-
-commit dbf1115d3f8c7052788aa4e6e46abd27f3b3eeba upstream.
-
-Patch to fix a spinlock lockup in the driver that sometimes happens when the
-tasklet starts.
-
-Signed-off-by: Claudio Scordino <claudio at evidence.eu.com>
-Signed-off-by: Dave Bender <codehero at gmail.com>
-Tested-by: Dave Bender <codehero at gmail.com>
-Acked-by: Nicolas Ferre <nicolas.ferre at atmel.com>
-Acked-by: Alan Cox <alan at linux.intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/tty/serial/atmel_serial.c | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/tty/serial/atmel_serial.c b/drivers/tty/serial/atmel_serial.c
-index 4c823f3..90c8e3a 100644
---- a/drivers/tty/serial/atmel_serial.c
-+++ b/drivers/tty/serial/atmel_serial.c
-@@ -212,8 +212,9 @@ void atmel_config_rs485(struct uart_port *port, struct serial_rs485 *rs485conf)
- {
- struct atmel_uart_port *atmel_port = to_atmel_uart_port(port);
- unsigned int mode;
-+ unsigned long flags;
-
-- spin_lock(&port->lock);
-+ spin_lock_irqsave(&port->lock, flags);
-
- /* Disable interrupts */
- UART_PUT_IDR(port, atmel_port->tx_done_mask);
-@@ -244,7 +245,7 @@ void atmel_config_rs485(struct uart_port *port, struct serial_rs485 *rs485conf)
- /* Enable interrupts */
- UART_PUT_IER(port, atmel_port->tx_done_mask);
-
-- spin_unlock(&port->lock);
-+ spin_unlock_irqrestore(&port->lock, flags);
-
- }
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0031-cgroup-fix-to-allow-mounting-a-hierarchy-by-name.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0031-cgroup-fix-to-allow-mounting-a-hierarchy-by-name.patch
deleted file mode 100644
index b91d665..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0031-cgroup-fix-to-allow-mounting-a-hierarchy-by-name.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From 99dba4cb547d9eecf9a9958972763934240d26c1 Mon Sep 17 00:00:00 2001
-From: Li Zefan <lizf at cn.fujitsu.com>
-Date: Tue, 27 Dec 2011 14:25:55 +0800
-Subject: [PATCH 31/49] cgroup: fix to allow mounting a hierarchy by name
-
-commit 0d19ea866562e46989412a0676412fa0983c9ce7 upstream.
-
-If we mount a hierarchy with a specified name, the name is unique,
-and we can use it to mount the hierarchy without specifying its
-set of subsystem names. This feature is documented is
-Documentation/cgroups/cgroups.txt section 2.3
-
-Here's an example:
-
- # mount -t cgroup -o cpuset,name=myhier xxx /cgroup1
- # mount -t cgroup -o name=myhier xxx /cgroup2
-
-But it was broken by commit 32a8cf235e2f192eb002755076994525cdbaa35a
-(cgroup: make the mount options parsing more accurate)
-
-This fixes the regression.
-
-Signed-off-by: Li Zefan <lizf at cn.fujitsu.com>
-Signed-off-by: Tejun Heo <tj at kernel.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- kernel/cgroup.c | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/kernel/cgroup.c b/kernel/cgroup.c
-index a184470..cdc0354 100644
---- a/kernel/cgroup.c
-+++ b/kernel/cgroup.c
-@@ -1175,10 +1175,10 @@ static int parse_cgroupfs_options(char *data, struct cgroup_sb_opts *opts)
-
- /*
- * If the 'all' option was specified select all the subsystems,
-- * otherwise 'all, 'none' and a subsystem name options were not
-- * specified, let's default to 'all'
-+ * otherwise if 'none', 'name=' and a subsystem name options
-+ * were not specified, let's default to 'all'
- */
-- if (all_ss || (!all_ss && !one_ss && !opts->none)) {
-+ if (all_ss || (!one_ss && !opts->none && !opts->name)) {
- for (i = 0; i < CGROUP_SUBSYS_COUNT; i++) {
- struct cgroup_subsys *ss = subsys[i];
- if (ss == NULL)
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0032-udf-Fix-deadlock-when-converting-file-from-in-ICB-on.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0032-udf-Fix-deadlock-when-converting-file-from-in-ICB-on.patch
deleted file mode 100644
index 7b3593c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0032-udf-Fix-deadlock-when-converting-file-from-in-ICB-on.patch
+++ /dev/null
@@ -1,130 +0,0 @@
-From 317d33b7d9f1ae588576781c738a4f7e187c4385 Mon Sep 17 00:00:00 2001
-From: Jan Kara <jack at suse.cz>
-Date: Sat, 10 Dec 2011 02:30:48 +0100
-Subject: [PATCH 32/49] udf: Fix deadlock when converting file from in-ICB one
- to normal one
-
-commit d2eb8c359309ec45d6bf5b147303ab8e13be86ea upstream.
-
-During BKL removal in 2.6.38, conversion of files from in-ICB format to normal
-format got broken. We call ->writepage with i_data_sem held but udf_get_block()
-also acquires i_data_sem thus creating A-A deadlock.
-
-We fix the problem by dropping i_data_sem before calling ->writepage() which is
-safe since i_mutex still protects us against any changes in the file. Also fix
-pagelock - i_data_sem lock inversion in udf_expand_file_adinicb() by dropping
-i_data_sem before calling find_or_create_page().
-
-Reported-by: Matthias Matiak <netzpython at mail-on.us>
-Tested-by: Matthias Matiak <netzpython at mail-on.us>
-Reviewed-by: Namjae Jeon <linkinjeon at gmail.com>
-Signed-off-by: Jan Kara <jack at suse.cz>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- fs/udf/file.c | 6 +++---
- fs/udf/inode.c | 21 ++++++++++++++++++---
- 2 files changed, 21 insertions(+), 6 deletions(-)
-
-diff --git a/fs/udf/file.c b/fs/udf/file.c
-index d8ffa7c..dca0c38 100644
---- a/fs/udf/file.c
-+++ b/fs/udf/file.c
-@@ -125,7 +125,6 @@ static ssize_t udf_file_aio_write(struct kiocb *iocb, const struct iovec *iov,
- err = udf_expand_file_adinicb(inode);
- if (err) {
- udf_debug("udf_expand_adinicb: err=%d\n", err);
-- up_write(&iinfo->i_data_sem);
- return err;
- }
- } else {
-@@ -133,9 +132,10 @@ static ssize_t udf_file_aio_write(struct kiocb *iocb, const struct iovec *iov,
- iinfo->i_lenAlloc = pos + count;
- else
- iinfo->i_lenAlloc = inode->i_size;
-+ up_write(&iinfo->i_data_sem);
- }
-- }
-- up_write(&iinfo->i_data_sem);
-+ } else
-+ up_write(&iinfo->i_data_sem);
-
- retval = generic_file_aio_write(iocb, iov, nr_segs, ppos);
- if (retval > 0)
-diff --git a/fs/udf/inode.c b/fs/udf/inode.c
-index 4fd1d80..e2787d0 100644
---- a/fs/udf/inode.c
-+++ b/fs/udf/inode.c
-@@ -151,6 +151,12 @@ const struct address_space_operations udf_aops = {
- .bmap = udf_bmap,
- };
-
-+/*
-+ * Expand file stored in ICB to a normal one-block-file
-+ *
-+ * This function requires i_data_sem for writing and releases it.
-+ * This function requires i_mutex held
-+ */
- int udf_expand_file_adinicb(struct inode *inode)
- {
- struct page *page;
-@@ -169,9 +175,15 @@ int udf_expand_file_adinicb(struct inode *inode)
- iinfo->i_alloc_type = ICBTAG_FLAG_AD_LONG;
- /* from now on we have normal address_space methods */
- inode->i_data.a_ops = &udf_aops;
-+ up_write(&iinfo->i_data_sem);
- mark_inode_dirty(inode);
- return 0;
- }
-+ /*
-+ * Release i_data_sem so that we can lock a page - page lock ranks
-+ * above i_data_sem. i_mutex still protects us against file changes.
-+ */
-+ up_write(&iinfo->i_data_sem);
-
- page = find_or_create_page(inode->i_mapping, 0, GFP_NOFS);
- if (!page)
-@@ -187,6 +199,7 @@ int udf_expand_file_adinicb(struct inode *inode)
- SetPageUptodate(page);
- kunmap(page);
- }
-+ down_write(&iinfo->i_data_sem);
- memset(iinfo->i_ext.i_data + iinfo->i_lenEAttr, 0x00,
- iinfo->i_lenAlloc);
- iinfo->i_lenAlloc = 0;
-@@ -196,17 +209,20 @@ int udf_expand_file_adinicb(struct inode *inode)
- iinfo->i_alloc_type = ICBTAG_FLAG_AD_LONG;
- /* from now on we have normal address_space methods */
- inode->i_data.a_ops = &udf_aops;
-+ up_write(&iinfo->i_data_sem);
- err = inode->i_data.a_ops->writepage(page, &udf_wbc);
- if (err) {
- /* Restore everything back so that we don't lose data... */
- lock_page(page);
- kaddr = kmap(page);
-+ down_write(&iinfo->i_data_sem);
- memcpy(iinfo->i_ext.i_data + iinfo->i_lenEAttr, kaddr,
- inode->i_size);
- kunmap(page);
- unlock_page(page);
- iinfo->i_alloc_type = ICBTAG_FLAG_AD_IN_ICB;
- inode->i_data.a_ops = &udf_adinicb_aops;
-+ up_write(&iinfo->i_data_sem);
- }
- page_cache_release(page);
- mark_inode_dirty(inode);
-@@ -1111,10 +1127,9 @@ int udf_setsize(struct inode *inode, loff_t newsize)
- if (bsize <
- (udf_file_entry_alloc_offset(inode) + newsize)) {
- err = udf_expand_file_adinicb(inode);
-- if (err) {
-- up_write(&iinfo->i_data_sem);
-+ if (err)
- return err;
-- }
-+ down_write(&iinfo->i_data_sem);
- } else
- iinfo->i_lenAlloc = newsize;
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0033-drivers-usb-class-cdc-acm.c-clear-dangling-pointer.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0033-drivers-usb-class-cdc-acm.c-clear-dangling-pointer.patch
deleted file mode 100644
index 0967d6b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0033-drivers-usb-class-cdc-acm.c-clear-dangling-pointer.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From acba1185b43fb423f894716d8d856b2ec4b4b57e Mon Sep 17 00:00:00 2001
-From: Julia Lawall <julia at diku.dk>
-Date: Fri, 23 Dec 2011 14:02:55 +0100
-Subject: [PATCH 33/49] drivers/usb/class/cdc-acm.c: clear dangling pointer
-
-commit e7c8e8605d0bafc705ff27f9da98a1668427cc0f upstream.
-
-On some failures, the country_code field of an acm structure is freed
-without freeing the acm structure itself. Elsewhere, operations including
-memcpy and kfree are performed on the country_code field. The patch sets
-the country_code field to NULL when it is freed, and likewise sets the
-country_code_size field to 0.
-
-Signed-off-by: Julia Lawall <julia at diku.dk>
-Acked-by: Oliver Neukum <oneukum at suse.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/usb/class/cdc-acm.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/drivers/usb/class/cdc-acm.c b/drivers/usb/class/cdc-acm.c
-index a8078d0..ea5e487 100644
---- a/drivers/usb/class/cdc-acm.c
-+++ b/drivers/usb/class/cdc-acm.c
-@@ -1183,6 +1183,8 @@ made_compressed_probe:
- i = device_create_file(&intf->dev, &dev_attr_wCountryCodes);
- if (i < 0) {
- kfree(acm->country_codes);
-+ acm->country_codes = NULL;
-+ acm->country_code_size = 0;
- goto skip_countries;
- }
-
-@@ -1191,6 +1193,8 @@ made_compressed_probe:
- if (i < 0) {
- device_remove_file(&intf->dev, &dev_attr_wCountryCodes);
- kfree(acm->country_codes);
-+ acm->country_codes = NULL;
-+ acm->country_code_size = 0;
- goto skip_countries;
- }
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0034-USB-isight-fix-kernel-bug-when-loading-firmware.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0034-USB-isight-fix-kernel-bug-when-loading-firmware.patch
deleted file mode 100644
index 54e1436..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0034-USB-isight-fix-kernel-bug-when-loading-firmware.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 4e09208930ee36458849851891315d3fdd225b11 Mon Sep 17 00:00:00 2001
-From: Greg Kroah-Hartman <gregkh at suse.de>
-Date: Mon, 5 Dec 2011 14:02:59 -0800
-Subject: [PATCH 34/49] USB: isight: fix kernel bug when loading firmware
-
-commit 59bf5cf94f0fa3b08fb1258b52649077b7d0914d upstream.
-
-We were sending data on the stack when uploading firmware, which causes
-some machines fits, and is not allowed. Fix this by using the buffer we
-already had around for this very purpose.
-
-Reported-by: Wouter M. Koolen <wmkoolen at cwi.nl>
-Tested-by: Wouter M. Koolen <wmkoolen at cwi.nl>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/usb/misc/isight_firmware.c | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/usb/misc/isight_firmware.c b/drivers/usb/misc/isight_firmware.c
-index fe1d443..8f725f6 100644
---- a/drivers/usb/misc/isight_firmware.c
-+++ b/drivers/usb/misc/isight_firmware.c
-@@ -55,8 +55,9 @@ static int isight_firmware_load(struct usb_interface *intf,
-
- ptr = firmware->data;
-
-+ buf[0] = 0x01;
- if (usb_control_msg
-- (dev, usb_sndctrlpipe(dev, 0), 0xa0, 0x40, 0xe600, 0, "\1", 1,
-+ (dev, usb_sndctrlpipe(dev, 0), 0xa0, 0x40, 0xe600, 0, buf, 1,
- 300) != 1) {
- printk(KERN_ERR
- "Failed to initialise isight firmware loader\n");
-@@ -100,8 +101,9 @@ static int isight_firmware_load(struct usb_interface *intf,
- }
- }
-
-+ buf[0] = 0x00;
- if (usb_control_msg
-- (dev, usb_sndctrlpipe(dev, 0), 0xa0, 0x40, 0xe600, 0, "\0", 1,
-+ (dev, usb_sndctrlpipe(dev, 0), 0xa0, 0x40, 0xe600, 0, buf, 1,
- 300) != 1) {
- printk(KERN_ERR "isight firmware loading completion failed\n");
- ret = -ENODEV;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0035-usb-usb-storage-doesn-t-support-dynamic-id-currently.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0035-usb-usb-storage-doesn-t-support-dynamic-id-currently.patch
deleted file mode 100644
index c1931cd..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0035-usb-usb-storage-doesn-t-support-dynamic-id-currently.patch
+++ /dev/null
@@ -1,121 +0,0 @@
-From 8190d5a061930631a577541f296dba71b2495791 Mon Sep 17 00:00:00 2001
-From: Huajun Li <huajun.li.lee at gmail.com>
-Date: Wed, 4 Jan 2012 19:25:33 +0800
-Subject: [PATCH 35/49] usb: usb-storage doesn't support dynamic id currently,
- the patch disables the feature to fix an oops
-
-commit 1a3a026ba1b6bbfe0b7f79ab38cf991d691e7c9a upstream.
-
-Echo vendor and product number of a non usb-storage device to
-usb-storage driver's new_id, then plug in the device to host and you
-will find following oops msg, the root cause is usb_stor_probe1()
-refers invalid id entry if giving a dynamic id, so just disable the
-feature.
-
-[ 3105.018012] general protection fault: 0000 [#1] SMP DEBUG_PAGEALLOC
-[ 3105.018062] CPU 0
-[ 3105.018075] Modules linked in: usb_storage usb_libusual bluetooth
-dm_crypt binfmt_misc snd_hda_codec_analog snd_hda_intel snd_hda_codec
-snd_hwdep hp_wmi ppdev sparse_keymap snd_pcm snd_seq_midi snd_rawmidi
-snd_seq_midi_event snd_seq snd_timer snd_seq_device psmouse snd
-serio_raw tpm_infineon soundcore i915 snd_page_alloc tpm_tis
-parport_pc tpm tpm_bios drm_kms_helper drm i2c_algo_bit video lp
-parport usbhid hid sg sr_mod sd_mod ehci_hcd uhci_hcd usbcore e1000e
-usb_common floppy
-[ 3105.018408]
-[ 3105.018419] Pid: 189, comm: khubd Tainted: G I 3.2.0-rc7+
-#29 Hewlett-Packard HP Compaq dc7800p Convertible Minitower/0AACh
-[ 3105.018481] RIP: 0010:[<ffffffffa045830d>] [<ffffffffa045830d>]
-usb_stor_probe1+0x2fd/0xc20 [usb_storage]
-[ 3105.018536] RSP: 0018:ffff880056a3d830 EFLAGS: 00010286
-[ 3105.018562] RAX: ffff880065f4e648 RBX: ffff88006bb28000 RCX: 0000000000000000
-[ 3105.018597] RDX: ffff88006f23c7b0 RSI: 0000000000000001 RDI: 0000000000000206
-[ 3105.018632] RBP: ffff880056a3d900 R08: 0000000000000000 R09: ffff880067365000
-[ 3105.018665] R10: 00000000000002ac R11: 0000000000000010 R12: ffff6000b41a7340
-[ 3105.018698] R13: ffff880065f4ef60 R14: ffff88006bb28b88 R15: ffff88006f23d270
-[ 3105.018733] FS: 0000000000000000(0000) GS:ffff88007a200000(0000)
-knlGS:0000000000000000
-[ 3105.018773] CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
-[ 3105.018801] CR2: 00007fc99c8c4650 CR3: 0000000001e05000 CR4: 00000000000006f0
-[ 3105.018835] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
-[ 3105.018870] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
-[ 3105.018906] Process khubd (pid: 189, threadinfo ffff880056a3c000,
-task ffff88005677a400)
-[ 3105.018945] Stack:
-[ 3105.018959] 0000000000000000 0000000000000000 ffff880056a3d8d0
-0000000000000002
-[ 3105.019011] 0000000000000000 ffff880056a3d918 ffff880000000000
-0000000000000002
-[ 3105.019058] ffff880056a3d8d0 0000000000000012 ffff880056a3d8d0
-0000000000000006
-[ 3105.019105] Call Trace:
-[ 3105.019128] [<ffffffffa0458cd4>] storage_probe+0xa4/0xe0 [usb_storage]
-[ 3105.019173] [<ffffffffa0097822>] usb_probe_interface+0x172/0x330 [usbcore]
-[ 3105.019211] [<ffffffff815fda67>] driver_probe_device+0x257/0x3b0
-[ 3105.019243] [<ffffffff815fdd43>] __device_attach+0x73/0x90
-[ 3105.019272] [<ffffffff815fdcd0>] ? __driver_attach+0x110/0x110
-[ 3105.019303] [<ffffffff815fb93c>] bus_for_each_drv+0x9c/0xf0
-[ 3105.019334] [<ffffffff815fd6c7>] device_attach+0xf7/0x120
-[ 3105.019364] [<ffffffff815fc905>] bus_probe_device+0x45/0x80
-[ 3105.019396] [<ffffffff815f98a6>] device_add+0x876/0x990
-[ 3105.019434] [<ffffffffa0094e42>] usb_set_configuration+0x822/0x9e0 [usbcore]
-[ 3105.019479] [<ffffffffa00a3492>] generic_probe+0x62/0xf0 [usbcore]
-[ 3105.019518] [<ffffffffa0097a46>] usb_probe_device+0x66/0xb0 [usbcore]
-[ 3105.019555] [<ffffffff815fda67>] driver_probe_device+0x257/0x3b0
-[ 3105.019589] [<ffffffff815fdd43>] __device_attach+0x73/0x90
-[ 3105.019617] [<ffffffff815fdcd0>] ? __driver_attach+0x110/0x110
-[ 3105.019648] [<ffffffff815fb93c>] bus_for_each_drv+0x9c/0xf0
-[ 3105.019680] [<ffffffff815fd6c7>] device_attach+0xf7/0x120
-[ 3105.019709] [<ffffffff815fc905>] bus_probe_device+0x45/0x80
-[ 3105.021040] usb usb6: usb auto-resume
-[ 3105.021045] usb usb6: wakeup_rh
-[ 3105.024849] [<ffffffff815f98a6>] device_add+0x876/0x990
-[ 3105.025086] [<ffffffffa0088987>] usb_new_device+0x1e7/0x2b0 [usbcore]
-[ 3105.025086] [<ffffffffa008a4d7>] hub_thread+0xb27/0x1ec0 [usbcore]
-[ 3105.025086] [<ffffffff810d5200>] ? wake_up_bit+0x50/0x50
-[ 3105.025086] [<ffffffffa00899b0>] ? usb_remote_wakeup+0xa0/0xa0 [usbcore]
-[ 3105.025086] [<ffffffff810d49b8>] kthread+0xd8/0xf0
-[ 3105.025086] [<ffffffff81939884>] kernel_thread_helper+0x4/0x10
-[ 3105.025086] [<ffffffff8192a8c0>] ? _raw_spin_unlock_irq+0x50/0x80
-[ 3105.025086] [<ffffffff8192b1b4>] ? retint_restore_args+0x13/0x13
-[ 3105.025086] [<ffffffff810d48e0>] ? __init_kthread_worker+0x80/0x80
-[ 3105.025086] [<ffffffff81939880>] ? gs_change+0x13/0x13
-[ 3105.025086] Code: 00 48 83 05 cd ad 00 00 01 48 83 05 cd ad 00 00
-01 4c 8b ab 30 0c 00 00 48 8b 50 08 48 83 c0 30 48 89 45 a0 4c 89 a3
-40 0c 00 00 <41> 0f b6 44 24 10 48 89 55 a8 3c ff 0f 84 b8 04 00 00 48
-83 05
-[ 3105.025086] RIP [<ffffffffa045830d>] usb_stor_probe1+0x2fd/0xc20
-[usb_storage]
-[ 3105.025086] RSP <ffff880056a3d830>
-[ 3105.060037] hub 6-0:1.0: hub_resume
-[ 3105.062616] usb usb5: usb auto-resume
-[ 3105.064317] ehci_hcd 0000:00:1d.7: resume root hub
-[ 3105.094809] ---[ end trace a7919e7f17c0a727 ]---
-[ 3105.130069] hub 5-0:1.0: hub_resume
-[ 3105.132131] usb usb4: usb auto-resume
-[ 3105.132136] usb usb4: wakeup_rh
-[ 3105.180059] hub 4-0:1.0: hub_resume
-[ 3106.290052] usb usb6: suspend_rh (auto-stop)
-[ 3106.290077] usb usb4: suspend_rh (auto-stop)
-
-Signed-off-by: Huajun Li <huajun.li.lee at gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/usb/storage/usb.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/usb/storage/usb.c b/drivers/usb/storage/usb.c
-index c325e69..9e069ef 100644
---- a/drivers/usb/storage/usb.c
-+++ b/drivers/usb/storage/usb.c
-@@ -1073,6 +1073,7 @@ static struct usb_driver usb_storage_driver = {
- .id_table = usb_storage_usb_ids,
- .supports_autosuspend = 1,
- .soft_unbind = 1,
-+ .no_dynamic_id = 1,
- };
-
- static int __init usb_stor_init(void)
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0036-USB-pxa168-Fix-compilation-error.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0036-USB-pxa168-Fix-compilation-error.patch
deleted file mode 100644
index 7c169fd..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0036-USB-pxa168-Fix-compilation-error.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 8325e7fefc03f4e9942f89762d0cf80ad9ae2a3d Mon Sep 17 00:00:00 2001
-From: Tanmay Upadhyay <tanmay.upadhyay at einfochips.com>
-Date: Thu, 8 Dec 2011 10:03:49 +0530
-Subject: [PATCH 36/49] USB: pxa168: Fix compilation error
-
-commit 35657c4d72925936c7219cc5caac118ca632acc2 upstream.
-
-After commit c430131a02d677aa708f56342c1565edfdacb3c0 (Support
-controllers with big endian capability regs), HC_LENGTH takes
-two arguments. This patch fixes following compilation error:
-
-In file included from drivers/usb/host/ehci-hcd.c:1323:
-drivers/usb/host/ehci-pxa168.c:302:54: error: macro "HC_LENGTH" requires 2 arguments, but only 1 given
-In file included from drivers/usb/host/ehci-hcd.c:1323:
-drivers/usb/host/ehci-pxa168.c: In function 'ehci_pxa168_drv_probe':
-drivers/usb/host/ehci-pxa168.c:302: error: 'HC_LENGTH' undeclared (first use in this function)
-drivers/usb/host/ehci-pxa168.c:302: error: (Each undeclared identifier is reported only once
-drivers/usb/host/ehci-pxa168.c:302: error: for each function it appears in.)
-
-Signed-off-by: Tanmay Upadhyay <tanmay.upadhyay at einfochips.com>
-Acked-by: Alan Stern <stern at rowland.harvard.edu>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/usb/host/ehci-pxa168.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/usb/host/ehci-pxa168.c b/drivers/usb/host/ehci-pxa168.c
-index ac0c16e..8d0e7a2 100644
---- a/drivers/usb/host/ehci-pxa168.c
-+++ b/drivers/usb/host/ehci-pxa168.c
-@@ -299,7 +299,7 @@ static int __devinit ehci_pxa168_drv_probe(struct platform_device *pdev)
- ehci = hcd_to_ehci(hcd);
- ehci->caps = hcd->regs + 0x100;
- ehci->regs = hcd->regs + 0x100 +
-- HC_LENGTH(ehci_readl(ehci, &ehci->caps->hc_capbase));
-+ HC_LENGTH(ehci, ehci_readl(ehci, &ehci->caps->hc_capbase));
- ehci->hcs_params = ehci_readl(ehci, &ehci->caps->hcs_params);
- hcd->has_tt = 1;
- ehci->sbrn = 0x20;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0037-USB-add-quirk-for-another-camera.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0037-USB-add-quirk-for-another-camera.patch
deleted file mode 100644
index 527f6f1..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0037-USB-add-quirk-for-another-camera.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 50e9555941ff61bb9e2ef09033899beaa2e4bbf2 Mon Sep 17 00:00:00 2001
-From: Oliver Neukum <oliver at neukum.org>
-Date: Tue, 3 Jan 2012 09:58:54 +0100
-Subject: [PATCH 37/49] USB: add quirk for another camera
-
-commit 35284b3d2f68a8a3703745e629999469f78386b5 upstream.
-
-The Guillemot Webcam Hercules Dualpix Exchange camera
-has been reported with a second ID.
-
-Signed-off-by: Oliver Neukum <oneukum at suse.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/usb/core/quirks.c | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/usb/core/quirks.c b/drivers/usb/core/quirks.c
-index ecf12e1..4c65eb6 100644
---- a/drivers/usb/core/quirks.c
-+++ b/drivers/usb/core/quirks.c
-@@ -117,9 +117,12 @@ static const struct usb_device_id usb_quirk_list[] = {
- { USB_DEVICE(0x06a3, 0x0006), .driver_info =
- USB_QUIRK_CONFIG_INTF_STRINGS },
-
-- /* Guillemot Webcam Hercules Dualpix Exchange*/
-+ /* Guillemot Webcam Hercules Dualpix Exchange (2nd ID) */
- { USB_DEVICE(0x06f8, 0x0804), .driver_info = USB_QUIRK_RESET_RESUME },
-
-+ /* Guillemot Webcam Hercules Dualpix Exchange*/
-+ { USB_DEVICE(0x06f8, 0x3005), .driver_info = USB_QUIRK_RESET_RESUME },
-+
- /* M-Systems Flash Disk Pioneers */
- { USB_DEVICE(0x08ec, 0x1000), .driver_info = USB_QUIRK_RESET_RESUME },
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0038-USB-omninet-fix-write_room.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0038-USB-omninet-fix-write_room.patch
deleted file mode 100644
index 1cfcf18..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0038-USB-omninet-fix-write_room.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From a20f87f804897492ceed5fb120ca4dfded6918ed Mon Sep 17 00:00:00 2001
-From: Johan Hovold <jhovold at gmail.com>
-Date: Sun, 6 Nov 2011 19:06:21 +0100
-Subject: [PATCH 38/49] USB: omninet: fix write_room
-
-commit 694c6301e515bad574af74b6552134c4d9dcb334 upstream.
-
-Fix regression introduced by commit 507ca9bc047666 ([PATCH] USB: add
-ability for usb-serial drivers to determine if their write urb is
-currently being used.) which inverted the logic in write_room so that it
-returns zero when the write urb is actually free.
-
-Signed-off-by: Johan Hovold <jhovold at gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/usb/serial/omninet.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/usb/serial/omninet.c b/drivers/usb/serial/omninet.c
-index 60f38d5..0a8c1e6 100644
---- a/drivers/usb/serial/omninet.c
-+++ b/drivers/usb/serial/omninet.c
-@@ -315,7 +315,7 @@ static int omninet_write_room(struct tty_struct *tty)
- int room = 0; /* Default: no room */
-
- /* FIXME: no consistent locking for write_urb_busy */
-- if (wport->write_urb_busy)
-+ if (!wport->write_urb_busy)
- room = wport->bulk_out_size - OMNINET_HEADERLEN;
-
- dbg("%s - returns %d", __func__, room);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0039-usb-option-add-ZD-Incorporated-HSPA-modem.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0039-usb-option-add-ZD-Incorporated-HSPA-modem.patch
deleted file mode 100644
index f4a72ee..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0039-usb-option-add-ZD-Incorporated-HSPA-modem.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From 8a5baaaadedfa3aeba738b93fc50d60e9e21cfd5 Mon Sep 17 00:00:00 2001
-From: Janne Snabb <snabb at epipe.com>
-Date: Wed, 28 Dec 2011 19:36:00 +0000
-Subject: [PATCH 39/49] usb: option: add ZD Incorporated HSPA modem
-
-commit 3c8c9316710b83e906e425024153bf0929887b59 upstream.
-
-Add support for Chinese Noname HSPA USB modem which is apparently
-manufactured by a company called ZD Incorporated (based on texts in the
-Windows drivers).
-
-This product is available at least from Dealextreme (SKU 80032) and
-possibly in India with name Olive V-MW250. It is based on Qualcomm
-MSM6280 chip.
-
-I needed to also add "options usb-storage quirks=0685:7000:i" in modprobe
-configuration because udevd or the kernel keeps poking the embedded
-fake-cd-rom which fails and causes the device to reset. There might be
-a better way to accomplish the same. usb_modeswitch is not needed with
-this device.
-
-Signed-off-by: Janne Snabb <snabb at epipe.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/usb/serial/option.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
-index 6dd6453..c96b6b6 100644
---- a/drivers/usb/serial/option.c
-+++ b/drivers/usb/serial/option.c
-@@ -476,6 +476,10 @@ static void option_instat_callback(struct urb *urb);
- #define VIETTEL_VENDOR_ID 0x2262
- #define VIETTEL_PRODUCT_VT1000 0x0002
-
-+/* ZD Incorporated */
-+#define ZD_VENDOR_ID 0x0685
-+#define ZD_PRODUCT_7000 0x7000
-+
- /* some devices interfaces need special handling due to a number of reasons */
- enum option_blacklist_reason {
- OPTION_BLACKLIST_NONE = 0,
-@@ -1178,6 +1182,7 @@ static const struct usb_device_id option_ids[] = {
- { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CLU528) },
- { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CLU526) },
- { USB_DEVICE_AND_INTERFACE_INFO(VIETTEL_VENDOR_ID, VIETTEL_PRODUCT_VT1000, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZD_VENDOR_ID, ZD_PRODUCT_7000, 0xff, 0xff, 0xff) },
- { } /* Terminating entry */
- };
- MODULE_DEVICE_TABLE(usb, option_ids);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0040-USB-Add-USB-ID-for-Multiplex-RC-serial-adapter-to-cp.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0040-USB-Add-USB-ID-for-Multiplex-RC-serial-adapter-to-cp.patch
deleted file mode 100644
index 08661c3..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0040-USB-Add-USB-ID-for-Multiplex-RC-serial-adapter-to-cp.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 5f3ac99ec102297e3fa6be18ebc03d9ecde65d26 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Malte=20Schr=C3=B6der?= <maltesch at gmx.de>
-Date: Thu, 5 Jan 2012 20:34:40 +0100
-Subject: [PATCH 40/49] USB: Add USB-ID for Multiplex RC serial adapter to
- cp210x.c
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit 08e87d0d773dc9ca5faf4c3306e238ed0ea129b0 upstream.
-
-Hi, below patch adds the USB-ID of the serial adapters sold by
-Multiplex RC (www.multiplex-rc.de).
-
-Signed-off-by: Malte Schröder <maltesch at gmx.de>
-Cc: stable <stable at vger.kernel.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/usb/serial/cp210x.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/usb/serial/cp210x.c b/drivers/usb/serial/cp210x.c
-index fd67cc5..a1a324b 100644
---- a/drivers/usb/serial/cp210x.c
-+++ b/drivers/usb/serial/cp210x.c
-@@ -92,6 +92,7 @@ static const struct usb_device_id id_table[] = {
- { USB_DEVICE(0x10C4, 0x818B) }, /* AVIT Research USB to TTL */
- { USB_DEVICE(0x10C4, 0x819F) }, /* MJS USB Toslink Switcher */
- { USB_DEVICE(0x10C4, 0x81A6) }, /* ThinkOptics WavIt */
-+ { USB_DEVICE(0x10C4, 0x81A9) }, /* Multiplex RC Interface */
- { USB_DEVICE(0x10C4, 0x81AC) }, /* MSD Dash Hawk */
- { USB_DEVICE(0x10C4, 0x81AD) }, /* INSYS USB Modem */
- { USB_DEVICE(0x10C4, 0x81C8) }, /* Lipowsky Industrie Elektronik GmbH, Baby-JTAG */
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0041-usb-fix-number-of-mapped-SG-DMA-entries.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0041-usb-fix-number-of-mapped-SG-DMA-entries.patch
deleted file mode 100644
index 760e95d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0041-usb-fix-number-of-mapped-SG-DMA-entries.patch
+++ /dev/null
@@ -1,155 +0,0 @@
-From 1f1c6efa1c4c5546f68842735a916322705719cc Mon Sep 17 00:00:00 2001
-From: Clemens Ladisch <clemens at ladisch.de>
-Date: Sat, 3 Dec 2011 23:41:31 +0100
-Subject: [PATCH 41/49] usb: fix number of mapped SG DMA entries
-
-commit bc677d5b64644c399cd3db6a905453e611f402ab upstream.
-
-Add a new field num_mapped_sgs to struct urb so that we have a place to
-store the number of mapped entries and can also retain the original
-value of entries in num_sgs. Previously, usb_hcd_map_urb_for_dma()
-would overwrite this with the number of mapped entries, which would
-break dma_unmap_sg() because it requires the original number of entries.
-
-This fixes warnings like the following when using USB storage devices:
- ------------[ cut here ]------------
- WARNING: at lib/dma-debug.c:902 check_unmap+0x4e4/0x695()
- ehci_hcd 0000:00:12.2: DMA-API: device driver frees DMA sg list with different entry count [map count=4] [unmap count=1]
- Modules linked in: ohci_hcd ehci_hcd
- Pid: 0, comm: kworker/0:1 Not tainted 3.2.0-rc2+ #319
- Call Trace:
- <IRQ> [<ffffffff81036d3b>] warn_slowpath_common+0x80/0x98
- [<ffffffff81036de7>] warn_slowpath_fmt+0x41/0x43
- [<ffffffff811fa5ae>] check_unmap+0x4e4/0x695
- [<ffffffff8105e92c>] ? trace_hardirqs_off+0xd/0xf
- [<ffffffff8147208b>] ? _raw_spin_unlock_irqrestore+0x33/0x50
- [<ffffffff811fa84a>] debug_dma_unmap_sg+0xeb/0x117
- [<ffffffff8137b02f>] usb_hcd_unmap_urb_for_dma+0x71/0x188
- [<ffffffff8137b166>] unmap_urb_for_dma+0x20/0x22
- [<ffffffff8137b1c5>] usb_hcd_giveback_urb+0x5d/0xc0
- [<ffffffffa0000d02>] ehci_urb_done+0xf7/0x10c [ehci_hcd]
- [<ffffffffa0001140>] qh_completions+0x429/0x4bd [ehci_hcd]
- [<ffffffffa000340a>] ehci_work+0x95/0x9c0 [ehci_hcd]
- ...
- ---[ end trace f29ac88a5a48c580 ]---
- Mapped at:
- [<ffffffff811faac4>] debug_dma_map_sg+0x45/0x139
- [<ffffffff8137bc0b>] usb_hcd_map_urb_for_dma+0x22e/0x478
- [<ffffffff8137c494>] usb_hcd_submit_urb+0x63f/0x6fa
- [<ffffffff8137d01c>] usb_submit_urb+0x2c7/0x2de
- [<ffffffff8137dcd4>] usb_sg_wait+0x55/0x161
-
-Signed-off-by: Clemens Ladisch <clemens at ladisch.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/usb/core/hcd.c | 5 ++---
- drivers/usb/host/ehci-q.c | 2 +-
- drivers/usb/host/uhci-q.c | 2 +-
- drivers/usb/host/whci/qset.c | 4 ++--
- drivers/usb/host/xhci-ring.c | 4 ++--
- include/linux/usb.h | 1 +
- 6 files changed, 9 insertions(+), 9 deletions(-)
-
-diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c
-index 13222d3..179e364 100644
---- a/drivers/usb/core/hcd.c
-+++ b/drivers/usb/core/hcd.c
-@@ -1412,11 +1412,10 @@ int usb_hcd_map_urb_for_dma(struct usb_hcd *hcd, struct urb *urb,
- ret = -EAGAIN;
- else
- urb->transfer_flags |= URB_DMA_MAP_SG;
-- if (n != urb->num_sgs) {
-- urb->num_sgs = n;
-+ urb->num_mapped_sgs = n;
-+ if (n != urb->num_sgs)
- urb->transfer_flags |=
- URB_DMA_SG_COMBINED;
-- }
- } else if (urb->sg) {
- struct scatterlist *sg = urb->sg;
- urb->transfer_dma = dma_map_page(
-diff --git a/drivers/usb/host/ehci-q.c b/drivers/usb/host/ehci-q.c
-index 4e4066c..fef1db3 100644
---- a/drivers/usb/host/ehci-q.c
-+++ b/drivers/usb/host/ehci-q.c
-@@ -647,7 +647,7 @@ qh_urb_transaction (
- /*
- * data transfer stage: buffer setup
- */
-- i = urb->num_sgs;
-+ i = urb->num_mapped_sgs;
- if (len > 0 && i > 0) {
- sg = urb->sg;
- buf = sg_dma_address(sg);
-diff --git a/drivers/usb/host/uhci-q.c b/drivers/usb/host/uhci-q.c
-index f6ca80e..d2c6f5a 100644
---- a/drivers/usb/host/uhci-q.c
-+++ b/drivers/usb/host/uhci-q.c
-@@ -943,7 +943,7 @@ static int uhci_submit_common(struct uhci_hcd *uhci, struct urb *urb,
- if (usb_pipein(urb->pipe))
- status |= TD_CTRL_SPD;
-
-- i = urb->num_sgs;
-+ i = urb->num_mapped_sgs;
- if (len > 0 && i > 0) {
- sg = urb->sg;
- data = sg_dma_address(sg);
-diff --git a/drivers/usb/host/whci/qset.c b/drivers/usb/host/whci/qset.c
-index a403b53..76083ae 100644
---- a/drivers/usb/host/whci/qset.c
-+++ b/drivers/usb/host/whci/qset.c
-@@ -443,7 +443,7 @@ static int qset_add_urb_sg(struct whc *whc, struct whc_qset *qset, struct urb *u
-
- remaining = urb->transfer_buffer_length;
-
-- for_each_sg(urb->sg, sg, urb->num_sgs, i) {
-+ for_each_sg(urb->sg, sg, urb->num_mapped_sgs, i) {
- dma_addr_t dma_addr;
- size_t dma_remaining;
- dma_addr_t sp, ep;
-@@ -561,7 +561,7 @@ static int qset_add_urb_sg_linearize(struct whc *whc, struct whc_qset *qset,
-
- remaining = urb->transfer_buffer_length;
-
-- for_each_sg(urb->sg, sg, urb->num_sgs, i) {
-+ for_each_sg(urb->sg, sg, urb->num_mapped_sgs, i) {
- size_t len;
- size_t sg_remaining;
- void *orig;
-diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c
-index 9f1d4b1..d28c586 100644
---- a/drivers/usb/host/xhci-ring.c
-+++ b/drivers/usb/host/xhci-ring.c
-@@ -2561,7 +2561,7 @@ static unsigned int count_sg_trbs_needed(struct xhci_hcd *xhci, struct urb *urb)
- struct scatterlist *sg;
-
- sg = NULL;
-- num_sgs = urb->num_sgs;
-+ num_sgs = urb->num_mapped_sgs;
- temp = urb->transfer_buffer_length;
-
- xhci_dbg(xhci, "count sg list trbs: \n");
-@@ -2745,7 +2745,7 @@ static int queue_bulk_sg_tx(struct xhci_hcd *xhci, gfp_t mem_flags,
- return -EINVAL;
-
- num_trbs = count_sg_trbs_needed(xhci, urb);
-- num_sgs = urb->num_sgs;
-+ num_sgs = urb->num_mapped_sgs;
- total_packet_count = roundup(urb->transfer_buffer_length,
- usb_endpoint_maxp(&urb->ep->desc));
-
-diff --git a/include/linux/usb.h b/include/linux/usb.h
-index 1cea207..7626e5a 100644
---- a/include/linux/usb.h
-+++ b/include/linux/usb.h
-@@ -1222,6 +1222,7 @@ struct urb {
- void *transfer_buffer; /* (in) associated data buffer */
- dma_addr_t transfer_dma; /* (in) dma addr for transfer_buffer */
- struct scatterlist *sg; /* (in) scatter gather buffer list */
-+ int num_mapped_sgs; /* (internal) mapped sg entries */
- int num_sgs; /* (in) number of entries in the sg list */
- u32 transfer_buffer_length; /* (in) data buffer length */
- u32 actual_length; /* (return) actual transfer length */
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0042-xhci-Properly-handle-COMP_2ND_BW_ERR.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0042-xhci-Properly-handle-COMP_2ND_BW_ERR.patch
deleted file mode 100644
index d57b8bb..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0042-xhci-Properly-handle-COMP_2ND_BW_ERR.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From 0fb23f5a75ba46ec0d828d48dca74bc9c1c1920a Mon Sep 17 00:00:00 2001
-From: Hans de Goede <hdegoede at redhat.com>
-Date: Wed, 4 Jan 2012 23:29:18 +0100
-Subject: [PATCH 42/49] xhci: Properly handle COMP_2ND_BW_ERR
-
-commit 71d85724bdd947a3b42a88d08af79f290a1a767b upstream.
-
-I encountered a result of COMP_2ND_BW_ERR while improving how the pwc
-webcam driver handles not having the full usb1 bandwidth available to
-itself.
-
-I created the following test setup, a NEC xhci controller with a
-single TT USB 2 hub plugged into it, with a usb keyboard and a pwc webcam
-plugged into the usb2 hub. This caused the following to show up in dmesg
-when trying to stream from the pwc camera at its highest alt setting:
-
-xhci_hcd 0000:01:00.0: ERROR: unexpected command completion code 0x23.
-usb 6-2.1: Not enough bandwidth for altsetting 9
-
-And usb_set_interface returned -EINVAL, which caused my pwc code to not
-do the right thing as it expected -ENOSPC.
-
-This patch makes the xhci driver properly handle COMP_2ND_BW_ERR and makes
-usb_set_interface return -ENOSPC as expected.
-
-This should be backported to stable kernels as old as 2.6.32.
-
-Signed-off-by: Hans de Goede <hdegoede at redhat.com>
-Signed-off-by: Sarah Sharp <sarah.a.sharp at linux.intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/usb/host/xhci.c | 1 +
- drivers/usb/host/xhci.h | 1 -
- 2 files changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
-index a1afb7c..36f9dd8 100644
---- a/drivers/usb/host/xhci.c
-+++ b/drivers/usb/host/xhci.c
-@@ -1620,6 +1620,7 @@ static int xhci_configure_endpoint_result(struct xhci_hcd *xhci,
- /* FIXME: can we allocate more resources for the HC? */
- break;
- case COMP_BW_ERR:
-+ case COMP_2ND_BW_ERR:
- dev_warn(&udev->dev, "Not enough bandwidth "
- "for new device state.\n");
- ret = -ENOSPC;
-diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h
-index 3c8fbd2..09eda3a 100644
---- a/drivers/usb/host/xhci.h
-+++ b/drivers/usb/host/xhci.h
-@@ -1033,7 +1033,6 @@ struct xhci_transfer_event {
- /* Invalid Stream ID Error */
- #define COMP_STRID_ERR 34
- /* Secondary Bandwidth Error - may be returned by a Configure Endpoint cmd */
--/* FIXME - check for this */
- #define COMP_2ND_BW_ERR 35
- /* Split Transaction Error */
- #define COMP_SPLIT_ERR 36
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0043-usb-ch9-fix-up-MaxStreams-helper.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0043-usb-ch9-fix-up-MaxStreams-helper.patch
deleted file mode 100644
index e1853e0..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0043-usb-ch9-fix-up-MaxStreams-helper.patch
+++ /dev/null
@@ -1,81 +0,0 @@
-From 88294d7967eb85c2dde19473346a74fc1b324e09 Mon Sep 17 00:00:00 2001
-From: Felipe Balbi <balbi at ti.com>
-Date: Mon, 2 Jan 2012 13:35:41 +0200
-Subject: [PATCH 43/49] usb: ch9: fix up MaxStreams helper
-
-commit 18b7ede5f7ee2092aedcb578d3ac30bd5d4fc23c upstream.
-
-[ removed the dwc3 portion of the patch as it didn't apply to
-older kernels - gregkh]
-
-According to USB 3.0 Specification Table 9-22, if
-bmAttributes [4:0] are set to zero, it means "no
-streams supported", but the way this helper was
-defined on Linux, we will *always* have one stream
-which might cause several problems.
-
-For example on DWC3, we would tell the controller
-endpoint has streams enabled and yet start transfers
-with Stream ID set to 0, which would goof up the host
-side.
-
-While doing that, convert the macro to an inline
-function due to the different checks we now need.
-
-Signed-off-by: Felipe Balbi <balbi at ti.com>
-Signed-off-by: Sarah Sharp <sarah.a.sharp at linux.intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/usb/host/xhci.c | 3 +--
- include/linux/usb/ch9.h | 20 +++++++++++++++++++-
- 2 files changed, 20 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
-index 36f9dd8..b33f059 100644
---- a/drivers/usb/host/xhci.c
-+++ b/drivers/usb/host/xhci.c
-@@ -2797,8 +2797,7 @@ static int xhci_calculate_streams_and_bitmask(struct xhci_hcd *xhci,
- if (ret < 0)
- return ret;
-
-- max_streams = USB_SS_MAX_STREAMS(
-- eps[i]->ss_ep_comp.bmAttributes);
-+ max_streams = usb_ss_max_streams(&eps[i]->ss_ep_comp);
- if (max_streams < (*num_streams - 1)) {
- xhci_dbg(xhci, "Ep 0x%x only supports %u stream IDs.\n",
- eps[i]->desc.bEndpointAddress,
-diff --git a/include/linux/usb/ch9.h b/include/linux/usb/ch9.h
-index d5da6c6..61b2905 100644
---- a/include/linux/usb/ch9.h
-+++ b/include/linux/usb/ch9.h
-@@ -605,8 +605,26 @@ struct usb_ss_ep_comp_descriptor {
- } __attribute__ ((packed));
-
- #define USB_DT_SS_EP_COMP_SIZE 6
-+
- /* Bits 4:0 of bmAttributes if this is a bulk endpoint */
--#define USB_SS_MAX_STREAMS(p) (1 << ((p) & 0x1f))
-+static inline int
-+usb_ss_max_streams(const struct usb_ss_ep_comp_descriptor *comp)
-+{
-+ int max_streams;
-+
-+ if (!comp)
-+ return 0;
-+
-+ max_streams = comp->bmAttributes & 0x1f;
-+
-+ if (!max_streams)
-+ return 0;
-+
-+ max_streams = 1 << max_streams;
-+
-+ return max_streams;
-+}
-+
- /* Bits 1:0 of bmAttributes if this is an isoc endpoint */
- #define USB_SS_MULT(p) (1 + ((p) & 0x3))
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0044-igmp-Avoid-zero-delay-when-receiving-odd-mixture-of-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0044-igmp-Avoid-zero-delay-when-receiving-odd-mixture-of-.patch
deleted file mode 100644
index 6ff846f..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0044-igmp-Avoid-zero-delay-when-receiving-odd-mixture-of-.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From f93baced861192a7ee0ec93708f2611c685abfad Mon Sep 17 00:00:00 2001
-From: Ben Hutchings <ben at decadent.org.uk>
-Date: Mon, 9 Jan 2012 14:06:46 -0800
-Subject: [PATCH 44/49] igmp: Avoid zero delay when receiving odd mixture of
- IGMP queries
-
-commit a8c1f65c79cbbb2f7da782d4c9d15639a9b94b27 upstream.
-
-Commit 5b7c84066733c5dfb0e4016d939757b38de189e4 ('ipv4: correct IGMP
-behavior on v3 query during v2-compatibility mode') added yet another
-case for query parsing, which can result in max_delay = 0. Substitute
-a value of 1, as in the usual v3 case.
-
-Reported-by: Simon McVittie <smcv at debian.org>
-References: http://bugs.debian.org/654876
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
-Signed-off-by: David S. Miller <davem at davemloft.net>
----
- net/ipv4/igmp.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/net/ipv4/igmp.c b/net/ipv4/igmp.c
-index b2ca095..c3cc64c 100644
---- a/net/ipv4/igmp.c
-+++ b/net/ipv4/igmp.c
-@@ -875,6 +875,8 @@ static void igmp_heard_query(struct in_device *in_dev, struct sk_buff *skb,
- * to be intended in a v3 query.
- */
- max_delay = IGMPV3_MRC(ih3->code)*(HZ/IGMP_TIMER_SCALE);
-+ if (!max_delay)
-+ max_delay = 1; /* can't mod w/ 0 */
- } else { /* v3 */
- if (!pskb_may_pull(skb, sizeof(struct igmpv3_query)))
- return;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0045-asix-fix-infinite-loop-in-rx_fixup.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0045-asix-fix-infinite-loop-in-rx_fixup.patch
deleted file mode 100644
index 493d369..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0045-asix-fix-infinite-loop-in-rx_fixup.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 7765e2cf7fabde891d8916805ffa205da4e24f6e Mon Sep 17 00:00:00 2001
-From: Aurelien Jacobs <aurel at gnuage.org>
-Date: Sat, 7 Jan 2012 12:15:16 -0800
-Subject: [PATCH 45/49] asix: fix infinite loop in rx_fixup()
-
-commit 6c15d74defd38e7e7f8805392578b7a1d508097e upstream.
-
-At this point if skb->len happens to be 2, the subsequant skb_pull(skb, 4)
-call won't work and the skb->len won't be decreased and won't ever reach 0,
-resulting in an infinite loop.
-
-With an ASIX 88772 under heavy load, without this patch, rx_fixup() reaches
-an infinite loop in less than a minute. With this patch applied,
-no infinite loop even after hours of heavy load.
-
-Signed-off-by: Aurelien Jacobs <aurel at gnuage.org>
-Cc: Jussi Kivilinna <jussi.kivilinna at mbnet.fi>
-Signed-off-by: David S. Miller <davem at davemloft.net>
----
- drivers/net/usb/asix.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/net/usb/asix.c b/drivers/net/usb/asix.c
-index e95f0e6..dd2625a 100644
---- a/drivers/net/usb/asix.c
-+++ b/drivers/net/usb/asix.c
-@@ -376,7 +376,7 @@ static int asix_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
-
- skb_pull(skb, (size + 1) & 0xfffe);
-
-- if (skb->len == 0)
-+ if (skb->len < sizeof(header))
- break;
-
- head = (u8 *) skb->data;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0046-bonding-fix-error-handling-if-slave-is-busy-v2.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0046-bonding-fix-error-handling-if-slave-is-busy-v2.patch
deleted file mode 100644
index 1dc672d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0046-bonding-fix-error-handling-if-slave-is-busy-v2.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-From d9424820ef21c0dbf35278e9096406685b0dda64 Mon Sep 17 00:00:00 2001
-From: stephen hemminger <shemminger at vyatta.com>
-Date: Sat, 31 Dec 2011 13:26:46 +0000
-Subject: [PATCH 46/49] bonding: fix error handling if slave is busy (v2)
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit f7d9821a6a9c83450ac35e76d3709e32fd38b76f upstream.
-
-If slave device already has a receive handler registered, then the
-error unwind of bonding device enslave function is broken.
-
-The following will leave a pointer to freed memory in the slave
-device list, causing a later kernel panic.
-# modprobe dummy
-# ip li add dummy0-1 link dummy0 type macvlan
-# modprobe bonding
-# echo +dummy0 >/sys/class/net/bond0/bonding/slaves
-
-The fix is to detach the slave (which removes it from the list)
-in the unwind path.
-
-Signed-off-by: Stephen Hemminger <shemminger at vyatta.com>
-Reviewed-by: Nicolas de Pesloüan <nicolas.2p.debian at free.fr>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/net/bonding/bond_main.c | 9 +++++++--
- 1 file changed, 7 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
-index 7f87568..e58aa2b 100644
---- a/drivers/net/bonding/bond_main.c
-+++ b/drivers/net/bonding/bond_main.c
-@@ -1822,7 +1822,7 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev)
- "but new slave device does not support netpoll.\n",
- bond_dev->name);
- res = -EBUSY;
-- goto err_close;
-+ goto err_detach;
- }
- }
- #endif
-@@ -1831,7 +1831,7 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev)
-
- res = bond_create_slave_symlinks(bond_dev, slave_dev);
- if (res)
-- goto err_close;
-+ goto err_detach;
-
- res = netdev_rx_handler_register(slave_dev, bond_handle_frame,
- new_slave);
-@@ -1852,6 +1852,11 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev)
- err_dest_symlinks:
- bond_destroy_slave_symlinks(bond_dev, slave_dev);
-
-+err_detach:
-+ write_lock_bh(&bond->lock);
-+ bond_detach_slave(bond, new_slave);
-+ write_unlock_bh(&bond->lock);
-+
- err_close:
- dev_close(slave_dev);
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0047-usb-cdc-acm-Fix-acm_tty_hangup-vs.-acm_tty_close-rac.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0047-usb-cdc-acm-Fix-acm_tty_hangup-vs.-acm_tty_close-rac.patch
deleted file mode 100644
index 2130de8..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0047-usb-cdc-acm-Fix-acm_tty_hangup-vs.-acm_tty_close-rac.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From d64db2d8b1a2459f0cdae717c746411531ef5b7f Mon Sep 17 00:00:00 2001
-From: Thilo-Alexander Ginkel <thilo at ginkel.com>
-Date: Sat, 17 Dec 2011 10:55:10 +0100
-Subject: [PATCH 47/49] usb: cdc-acm: Fix acm_tty_hangup() vs. acm_tty_close()
- race
-
-[Not upstream as it was fixed differently for 3.3 with a much more
-"intrusive" rework of the driver - gregkh]
-
-There is a race condition involving acm_tty_hangup() and acm_tty_close()
-where hangup() would attempt to access tty->driver_data without proper
-locking and NULL checking after close() has potentially already set it
-to NULL. One possibility to (sporadically) trigger this behavior is to
-perform a suspend/resume cycle with a running WWAN data connection.
-
-This patch addresses the issue by introducing a NULL check for
-tty->driver_data in acm_tty_hangup() protected by open_mutex and exiting
-gracefully when hangup() is invoked on a device that has already been
-closed.
-
-Signed-off-by: Thilo-Alexander Ginkel <thilo at ginkel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/usb/class/cdc-acm.c | 12 ++++++++++--
- 1 file changed, 10 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/usb/class/cdc-acm.c b/drivers/usb/class/cdc-acm.c
-index ea5e487..e61d9c4 100644
---- a/drivers/usb/class/cdc-acm.c
-+++ b/drivers/usb/class/cdc-acm.c
-@@ -554,10 +554,18 @@ static void acm_port_down(struct acm *acm)
-
- static void acm_tty_hangup(struct tty_struct *tty)
- {
-- struct acm *acm = tty->driver_data;
-- tty_port_hangup(&acm->port);
-+ struct acm *acm;
-+
- mutex_lock(&open_mutex);
-+ acm = tty->driver_data;
-+
-+ if (!acm)
-+ goto out;
-+
-+ tty_port_hangup(&acm->port);
- acm_port_down(acm);
-+
-+out:
- mutex_unlock(&open_mutex);
- }
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0048-xfs-fix-acl-count-validation-in-xfs_acl_from_disk.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0048-xfs-fix-acl-count-validation-in-xfs_acl_from_disk.patch
deleted file mode 100644
index 97c6361..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0048-xfs-fix-acl-count-validation-in-xfs_acl_from_disk.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 1525dee10b60791931bdc64dc0827ab9f23733a2 Mon Sep 17 00:00:00 2001
-From: Xi Wang <xi.wang at gmail.com>
-Date: Mon, 12 Dec 2011 21:55:52 +0000
-Subject: [PATCH 48/49] xfs: fix acl count validation in xfs_acl_from_disk()
-
-commit 093019cf1b18dd31b2c3b77acce4e000e2cbc9ce upstream.
-
-Commit fa8b18ed didn't prevent the integer overflow and possible
-memory corruption. "count" can go negative and bypass the check.
-
-Signed-off-by: Xi Wang <xi.wang at gmail.com>
-Reviewed-by: Christoph Hellwig <hch at lst.de>
-Signed-off-by: Ben Myers <bpm at sgi.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- fs/xfs/xfs_acl.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/fs/xfs/xfs_acl.c b/fs/xfs/xfs_acl.c
-index 76e4266..ac702a6 100644
---- a/fs/xfs/xfs_acl.c
-+++ b/fs/xfs/xfs_acl.c
-@@ -39,7 +39,7 @@ xfs_acl_from_disk(struct xfs_acl *aclp)
- struct posix_acl_entry *acl_e;
- struct posix_acl *acl;
- struct xfs_acl_entry *ace;
-- int count, i;
-+ unsigned int count, i;
-
- count = be32_to_cpu(aclp->acl_cnt);
- if (count > XFS_ACL_MAX_ENTRIES)
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0049-Linux-3.2.1.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0049-Linux-3.2.1.patch
deleted file mode 100644
index 8b6fcaa..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.1/0049-Linux-3.2.1.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From ffb4eeef65c83cbcae58925d15f0c6bc5cb59cff Mon Sep 17 00:00:00 2001
-From: Greg Kroah-Hartman <gregkh at suse.de>
-Date: Thu, 12 Jan 2012 11:42:45 -0800
-Subject: [PATCH 49/49] Linux 3.2.1
-
----
- Makefile | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Makefile b/Makefile
-index adddd11..c5edffa 100644
---- a/Makefile
-+++ b/Makefile
-@@ -1,6 +1,6 @@
- VERSION = 3
- PATCHLEVEL = 2
--SUBLEVEL = 0
-+SUBLEVEL = 1
- EXTRAVERSION =
- NAME = Saber-toothed Squirrel
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0001-autofs-work-around-unhappy-compat-problem-on-x86-64.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0001-autofs-work-around-unhappy-compat-problem-on-x86-64.patch
deleted file mode 100644
index 16804db..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0001-autofs-work-around-unhappy-compat-problem-on-x86-64.patch
+++ /dev/null
@@ -1,142 +0,0 @@
-From 472122b7b0040118eae3846c9bfbb97225f1ab11 Mon Sep 17 00:00:00 2001
-From: Ian Kent <raven at themaw.net>
-Date: Wed, 22 Feb 2012 20:45:44 +0800
-Subject: [PATCH 01/95] autofs: work around unhappy compat problem on x86-64
-
-commit a32744d4abae24572eff7269bc17895c41bd0085 upstream.
-
-When the autofs protocol version 5 packet type was added in commit
-5c0a32fc2cd0 ("autofs4: add new packet type for v5 communications"), it
-obvously tried quite hard to be word-size agnostic, and uses explicitly
-sized fields that are all correctly aligned.
-
-However, with the final "char name[NAME_MAX+1]" array at the end, the
-actual size of the structure ends up being not very well defined:
-because the struct isn't marked 'packed', doing a "sizeof()" on it will
-align the size of the struct up to the biggest alignment of the members
-it has.
-
-And despite all the members being the same, the alignment of them is
-different: a "__u64" has 4-byte alignment on x86-32, but native 8-byte
-alignment on x86-64. And while 'NAME_MAX+1' ends up being a nice round
-number (256), the name[] array starts out a 4-byte aligned.
-
-End result: the "packed" size of the structure is 300 bytes: 4-byte, but
-not 8-byte aligned.
-
-As a result, despite all the fields being in the same place on all
-architectures, sizeof() will round up that size to 304 bytes on
-architectures that have 8-byte alignment for u64.
-
-Note that this is *not* a problem for 32-bit compat mode on POWER, since
-there __u64 is 8-byte aligned even in 32-bit mode. But on x86, 32-bit
-and 64-bit alignment is different for 64-bit entities, and as a result
-the structure that has exactly the same layout has different sizes.
-
-So on x86-64, but no other architecture, we will just subtract 4 from
-the size of the structure when running in a compat task. That way we
-will write the properly sized packet that user mode expects.
-
-Not pretty. Sadly, this very subtle, and unnecessary, size difference
-has been encoded in user space that wants to read packets of *exactly*
-the right size, and will refuse to touch anything else.
-
-Reported-and-tested-by: Thomas Meyer <thomas at m3y3r.de>
-Signed-off-by: Ian Kent <raven at themaw.net>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Cc: Jonathan Nieder <jrnieder at gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/autofs4/autofs_i.h | 1 +
- fs/autofs4/dev-ioctl.c | 1 +
- fs/autofs4/inode.c | 2 ++
- fs/autofs4/waitq.c | 22 +++++++++++++++++++---
- 4 files changed, 23 insertions(+), 3 deletions(-)
-
-diff --git a/fs/autofs4/autofs_i.h b/fs/autofs4/autofs_i.h
-index 326dc08..308a98b 100644
---- a/fs/autofs4/autofs_i.h
-+++ b/fs/autofs4/autofs_i.h
-@@ -110,6 +110,7 @@ struct autofs_sb_info {
- int sub_version;
- int min_proto;
- int max_proto;
-+ int compat_daemon;
- unsigned long exp_timeout;
- unsigned int type;
- int reghost_enabled;
-diff --git a/fs/autofs4/dev-ioctl.c b/fs/autofs4/dev-ioctl.c
-index 509fe1e..56bac70 100644
---- a/fs/autofs4/dev-ioctl.c
-+++ b/fs/autofs4/dev-ioctl.c
-@@ -385,6 +385,7 @@ static int autofs_dev_ioctl_setpipefd(struct file *fp,
- sbi->pipefd = pipefd;
- sbi->pipe = pipe;
- sbi->catatonic = 0;
-+ sbi->compat_daemon = is_compat_task();
- }
- out:
- mutex_unlock(&sbi->wq_mutex);
-diff --git a/fs/autofs4/inode.c b/fs/autofs4/inode.c
-index 8179f1a..98a5695 100644
---- a/fs/autofs4/inode.c
-+++ b/fs/autofs4/inode.c
-@@ -19,6 +19,7 @@
- #include <linux/parser.h>
- #include <linux/bitops.h>
- #include <linux/magic.h>
-+#include <linux/compat.h>
- #include "autofs_i.h"
- #include <linux/module.h>
-
-@@ -224,6 +225,7 @@ int autofs4_fill_super(struct super_block *s, void *data, int silent)
- set_autofs_type_indirect(&sbi->type);
- sbi->min_proto = 0;
- sbi->max_proto = 0;
-+ sbi->compat_daemon = is_compat_task();
- mutex_init(&sbi->wq_mutex);
- spin_lock_init(&sbi->fs_lock);
- sbi->queues = NULL;
-diff --git a/fs/autofs4/waitq.c b/fs/autofs4/waitq.c
-index e1fbdee..6861f61 100644
---- a/fs/autofs4/waitq.c
-+++ b/fs/autofs4/waitq.c
-@@ -90,7 +90,24 @@ static int autofs4_write(struct file *file, const void *addr, int bytes)
-
- return (bytes > 0);
- }
--
-+
-+/*
-+ * The autofs_v5 packet was misdesigned.
-+ *
-+ * The packets are identical on x86-32 and x86-64, but have different
-+ * alignment. Which means that 'sizeof()' will give different results.
-+ * Fix it up for the case of running 32-bit user mode on a 64-bit kernel.
-+ */
-+static noinline size_t autofs_v5_packet_size(struct autofs_sb_info *sbi)
-+{
-+ size_t pktsz = sizeof(struct autofs_v5_packet);
-+#if defined(CONFIG_X86_64) && defined(CONFIG_COMPAT)
-+ if (sbi->compat_daemon > 0)
-+ pktsz -= 4;
-+#endif
-+ return pktsz;
-+}
-+
- static void autofs4_notify_daemon(struct autofs_sb_info *sbi,
- struct autofs_wait_queue *wq,
- int type)
-@@ -147,8 +164,7 @@ static void autofs4_notify_daemon(struct autofs_sb_info *sbi,
- {
- struct autofs_v5_packet *packet = &pkt.v5_pkt.v5_packet;
-
-- pktsz = sizeof(*packet);
--
-+ pktsz = autofs_v5_packet_size(sbi);
- packet->wait_queue_token = wq->wait_queue_token;
- packet->len = wq->name.len;
- memcpy(packet->name, wq->name.name, wq->name.len);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0002-Fix-autofs-compile-without-CONFIG_COMPAT.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0002-Fix-autofs-compile-without-CONFIG_COMPAT.patch
deleted file mode 100644
index 44363df..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0002-Fix-autofs-compile-without-CONFIG_COMPAT.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 2938d817a741a800001a3de1796090697b4d12e8 Mon Sep 17 00:00:00 2001
-From: Linus Torvalds <torvalds at linux-foundation.org>
-Date: Sun, 26 Feb 2012 09:44:55 -0800
-Subject: [PATCH 02/95] Fix autofs compile without CONFIG_COMPAT
-
-commit 3c761ea05a8900a907f32b628611873f6bef24b2 upstream.
-
-The autofs compat handling fix caused a compile failure when
-CONFIG_COMPAT isn't defined.
-
-Instead of adding random #ifdef'fery in autofs, let's just make the
-compat helpers earlier to use: without CONFIG_COMPAT, is_compat_task()
-just hardcodes to zero.
-
-We could probably do something similar for a number of other cases where
-we have #ifdef's in code, but this is the low-hanging fruit.
-
-Reported-and-tested-by: Andreas Schwab <schwab at linux-m68k.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Cc: Jonathan Nieder <jrnieder at gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- include/linux/compat.h | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/include/linux/compat.h b/include/linux/compat.h
-index 66ed067..d42bd48 100644
---- a/include/linux/compat.h
-+++ b/include/linux/compat.h
-@@ -561,5 +561,9 @@ asmlinkage ssize_t compat_sys_process_vm_writev(compat_pid_t pid,
- unsigned long liovcnt, const struct compat_iovec __user *rvec,
- unsigned long riovcnt, unsigned long flags);
-
-+#else
-+
-+#define is_compat_task() (0)
-+
- #endif /* CONFIG_COMPAT */
- #endif /* _LINUX_COMPAT_H */
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0003-compat-fix-compile-breakage-on-s390.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0003-compat-fix-compile-breakage-on-s390.patch
deleted file mode 100644
index 55d8ab3..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0003-compat-fix-compile-breakage-on-s390.patch
+++ /dev/null
@@ -1,216 +0,0 @@
-From 94c0b0fd293ce8c712cf9ccbfecbb4f59fe737a9 Mon Sep 17 00:00:00 2001
-From: Heiko Carstens <heiko.carstens at de.ibm.com>
-Date: Mon, 27 Feb 2012 10:01:52 +0100
-Subject: [PATCH 03/95] compat: fix compile breakage on s390
-
-commit 048cd4e51d24ebf7f3552226d03c769d6ad91658 upstream.
-
-The new is_compat_task() define for the !COMPAT case in
-include/linux/compat.h conflicts with a similar define in
-arch/s390/include/asm/compat.h.
-
-This is the minimal patch which fixes the build issues.
-
-Signed-off-by: Heiko Carstens <heiko.carstens at de.ibm.com>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Cc: Jonathan Nieder <jrnieder at gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/s390/include/asm/compat.h | 7 -------
- arch/s390/kernel/process.c | 1 -
- arch/s390/kernel/ptrace.c | 2 +-
- arch/s390/kernel/setup.c | 2 +-
- arch/s390/kernel/signal.c | 1 -
- arch/s390/mm/fault.c | 1 -
- arch/s390/mm/mmap.c | 2 +-
- drivers/s390/block/dasd_eckd.c | 2 +-
- drivers/s390/block/dasd_ioctl.c | 1 +
- drivers/s390/char/fs3270.c | 1 +
- drivers/s390/char/vmcp.c | 1 +
- drivers/s390/cio/chsc_sch.c | 1 +
- drivers/s390/scsi/zfcp_cfdc.c | 1 +
- 13 files changed, 9 insertions(+), 14 deletions(-)
-
-diff --git a/arch/s390/include/asm/compat.h b/arch/s390/include/asm/compat.h
-index 2e49748..234f1d8 100644
---- a/arch/s390/include/asm/compat.h
-+++ b/arch/s390/include/asm/compat.h
-@@ -172,13 +172,6 @@ static inline int is_compat_task(void)
- return is_32bit_task();
- }
-
--#else
--
--static inline int is_compat_task(void)
--{
-- return 0;
--}
--
- #endif
-
- static inline void __user *arch_compat_alloc_user_space(long len)
-diff --git a/arch/s390/kernel/process.c b/arch/s390/kernel/process.c
-index 9451b21..53088e2 100644
---- a/arch/s390/kernel/process.c
-+++ b/arch/s390/kernel/process.c
-@@ -29,7 +29,6 @@
- #include <asm/irq.h>
- #include <asm/timer.h>
- #include <asm/nmi.h>
--#include <asm/compat.h>
- #include <asm/smp.h>
- #include "entry.h"
-
-diff --git a/arch/s390/kernel/ptrace.c b/arch/s390/kernel/ptrace.c
-index 573bc29..afe82bc 100644
---- a/arch/s390/kernel/ptrace.c
-+++ b/arch/s390/kernel/ptrace.c
-@@ -20,8 +20,8 @@
- #include <linux/regset.h>
- #include <linux/tracehook.h>
- #include <linux/seccomp.h>
-+#include <linux/compat.h>
- #include <trace/syscall.h>
--#include <asm/compat.h>
- #include <asm/segment.h>
- #include <asm/page.h>
- #include <asm/pgtable.h>
-diff --git a/arch/s390/kernel/setup.c b/arch/s390/kernel/setup.c
-index e54c4ff..773f55e 100644
---- a/arch/s390/kernel/setup.c
-+++ b/arch/s390/kernel/setup.c
-@@ -45,6 +45,7 @@
- #include <linux/kexec.h>
- #include <linux/crash_dump.h>
- #include <linux/memory.h>
-+#include <linux/compat.h>
-
- #include <asm/ipl.h>
- #include <asm/uaccess.h>
-@@ -58,7 +59,6 @@
- #include <asm/ptrace.h>
- #include <asm/sections.h>
- #include <asm/ebcdic.h>
--#include <asm/compat.h>
- #include <asm/kvm_virtio.h>
- #include <asm/diag.h>
-
-diff --git a/arch/s390/kernel/signal.c b/arch/s390/kernel/signal.c
-index 7f6f9f3..5086553 100644
---- a/arch/s390/kernel/signal.c
-+++ b/arch/s390/kernel/signal.c
-@@ -30,7 +30,6 @@
- #include <asm/ucontext.h>
- #include <asm/uaccess.h>
- #include <asm/lowcore.h>
--#include <asm/compat.h>
- #include "entry.h"
-
- #define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP)))
-diff --git a/arch/s390/mm/fault.c b/arch/s390/mm/fault.c
-index a9a3018..c7f0fbc 100644
---- a/arch/s390/mm/fault.c
-+++ b/arch/s390/mm/fault.c
-@@ -36,7 +36,6 @@
- #include <asm/pgtable.h>
- #include <asm/irq.h>
- #include <asm/mmu_context.h>
--#include <asm/compat.h>
- #include "../kernel/entry.h"
-
- #ifndef CONFIG_64BIT
-diff --git a/arch/s390/mm/mmap.c b/arch/s390/mm/mmap.c
-index f09c748..a0155c0 100644
---- a/arch/s390/mm/mmap.c
-+++ b/arch/s390/mm/mmap.c
-@@ -29,8 +29,8 @@
- #include <linux/mman.h>
- #include <linux/module.h>
- #include <linux/random.h>
-+#include <linux/compat.h>
- #include <asm/pgalloc.h>
--#include <asm/compat.h>
-
- static unsigned long stack_maxrandom_size(void)
- {
-diff --git a/drivers/s390/block/dasd_eckd.c b/drivers/s390/block/dasd_eckd.c
-index 6ab2968..fe9dacc 100644
---- a/drivers/s390/block/dasd_eckd.c
-+++ b/drivers/s390/block/dasd_eckd.c
-@@ -18,12 +18,12 @@
- #include <linux/hdreg.h> /* HDIO_GETGEO */
- #include <linux/bio.h>
- #include <linux/module.h>
-+#include <linux/compat.h>
- #include <linux/init.h>
-
- #include <asm/debug.h>
- #include <asm/idals.h>
- #include <asm/ebcdic.h>
--#include <asm/compat.h>
- #include <asm/io.h>
- #include <asm/uaccess.h>
- #include <asm/cio.h>
-diff --git a/drivers/s390/block/dasd_ioctl.c b/drivers/s390/block/dasd_ioctl.c
-index f1a2016..792c69e 100644
---- a/drivers/s390/block/dasd_ioctl.c
-+++ b/drivers/s390/block/dasd_ioctl.c
-@@ -13,6 +13,7 @@
- #define KMSG_COMPONENT "dasd"
-
- #include <linux/interrupt.h>
-+#include <linux/compat.h>
- #include <linux/major.h>
- #include <linux/fs.h>
- #include <linux/blkpg.h>
-diff --git a/drivers/s390/char/fs3270.c b/drivers/s390/char/fs3270.c
-index e712981..9117045 100644
---- a/drivers/s390/char/fs3270.c
-+++ b/drivers/s390/char/fs3270.c
-@@ -11,6 +11,7 @@
- #include <linux/console.h>
- #include <linux/init.h>
- #include <linux/interrupt.h>
-+#include <linux/compat.h>
- #include <linux/module.h>
- #include <linux/list.h>
- #include <linux/slab.h>
-diff --git a/drivers/s390/char/vmcp.c b/drivers/s390/char/vmcp.c
-index 75bde6a..89c03e6 100644
---- a/drivers/s390/char/vmcp.c
-+++ b/drivers/s390/char/vmcp.c
-@@ -13,6 +13,7 @@
-
- #include <linux/fs.h>
- #include <linux/init.h>
-+#include <linux/compat.h>
- #include <linux/kernel.h>
- #include <linux/miscdevice.h>
- #include <linux/slab.h>
-diff --git a/drivers/s390/cio/chsc_sch.c b/drivers/s390/cio/chsc_sch.c
-index 0c87b0f..8f9a1a3 100644
---- a/drivers/s390/cio/chsc_sch.c
-+++ b/drivers/s390/cio/chsc_sch.c
-@@ -8,6 +8,7 @@
- */
-
- #include <linux/slab.h>
-+#include <linux/compat.h>
- #include <linux/device.h>
- #include <linux/module.h>
- #include <linux/uaccess.h>
-diff --git a/drivers/s390/scsi/zfcp_cfdc.c b/drivers/s390/scsi/zfcp_cfdc.c
-index 303dde0..fab2c25 100644
---- a/drivers/s390/scsi/zfcp_cfdc.c
-+++ b/drivers/s390/scsi/zfcp_cfdc.c
-@@ -11,6 +11,7 @@
- #define KMSG_COMPONENT "zfcp"
- #define pr_fmt(fmt) KMSG_COMPONENT ": " fmt
-
-+#include <linux/compat.h>
- #include <linux/slab.h>
- #include <linux/types.h>
- #include <linux/miscdevice.h>
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0004-drm-i915-Prevent-a-machine-hang-by-checking-crtc-act.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0004-drm-i915-Prevent-a-machine-hang-by-checking-crtc-act.patch
deleted file mode 100644
index e80192d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0004-drm-i915-Prevent-a-machine-hang-by-checking-crtc-act.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 4bc061de33266e3ac5cecbc44b99201d8a16e533 Mon Sep 17 00:00:00 2001
-From: Alban Browaeys <prahal at yahoo.com>
-Date: Fri, 24 Feb 2012 17:12:45 +0000
-Subject: [PATCH 04/95] drm/i915: Prevent a machine hang by checking
- crtc->active before loading lut
-
-commit aed3f09db39596e539f90b11a5016aea4d8442e1 upstream.
-
-Before loading the lut (gamma), check the active state of intel_crtc,
-otherwise at least on gen2 hang ensue.
-
-This is reproducible in Xorg via:
- xset dpms force off
-then
- xgamma -rgamma 2.0 # freeze.
-
-Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=44505
-Signed-off-by: Alban Browaeys <prahal at yahoo.com>
-Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
-Reviewed-by: Jesse Barnes <jbarnes at virtuousgeek.org>
-Signed-off-by: Jesse Barnes <jbarnes at virtuousgeek.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/gpu/drm/i915/intel_display.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
-index daa5743..573f485 100644
---- a/drivers/gpu/drm/i915/intel_display.c
-+++ b/drivers/gpu/drm/i915/intel_display.c
-@@ -5965,7 +5965,7 @@ void intel_crtc_load_lut(struct drm_crtc *crtc)
- int i;
-
- /* The clocks have to be on to load the palette. */
-- if (!crtc->enabled)
-+ if (!crtc->enabled || !intel_crtc->active)
- return;
-
- /* use legacy palette for Ironlake */
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0005-ARM-LPC32xx-serial.c-HW-bug-workaround.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0005-ARM-LPC32xx-serial.c-HW-bug-workaround.patch
deleted file mode 100644
index a97dd0b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0005-ARM-LPC32xx-serial.c-HW-bug-workaround.patch
+++ /dev/null
@@ -1,83 +0,0 @@
-From eae6d88febcc4581b90ab6072545f0835902726c Mon Sep 17 00:00:00 2001
-From: Roland Stigge <stigge at antcom.de>
-Date: Mon, 27 Feb 2012 17:28:02 +0100
-Subject: [PATCH 05/95] ARM: LPC32xx: serial.c: HW bug workaround
-
-commit 2707208ee8a80dbbd5426f5aa1a934f766825bb5 upstream.
-
-This patch fixes a HW bug by flushing RX FIFOs of the UARTs on init. It was
-ported from NXP's git.lpclinux.com tree.
-
-Signed-off-by: Roland Stigge <stigge at antcom.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/arm/mach-lpc32xx/serial.c | 18 ++++++++++++++++++
- 1 file changed, 18 insertions(+)
-
-diff --git a/arch/arm/mach-lpc32xx/serial.c b/arch/arm/mach-lpc32xx/serial.c
-index 429cfdb..1a3fd4c 100644
---- a/arch/arm/mach-lpc32xx/serial.c
-+++ b/arch/arm/mach-lpc32xx/serial.c
-@@ -88,6 +88,7 @@ struct uartinit {
- char *uart_ck_name;
- u32 ck_mode_mask;
- void __iomem *pdiv_clk_reg;
-+ resource_size_t mapbase;
- };
-
- static struct uartinit uartinit_data[] __initdata = {
-@@ -97,6 +98,7 @@ static struct uartinit uartinit_data[] __initdata = {
- .ck_mode_mask =
- LPC32XX_UART_CLKMODE_LOAD(LPC32XX_UART_CLKMODE_ON, 5),
- .pdiv_clk_reg = LPC32XX_CLKPWR_UART5_CLK_CTRL,
-+ .mapbase = LPC32XX_UART5_BASE,
- },
- #endif
- #ifdef CONFIG_ARCH_LPC32XX_UART3_SELECT
-@@ -105,6 +107,7 @@ static struct uartinit uartinit_data[] __initdata = {
- .ck_mode_mask =
- LPC32XX_UART_CLKMODE_LOAD(LPC32XX_UART_CLKMODE_ON, 3),
- .pdiv_clk_reg = LPC32XX_CLKPWR_UART3_CLK_CTRL,
-+ .mapbase = LPC32XX_UART3_BASE,
- },
- #endif
- #ifdef CONFIG_ARCH_LPC32XX_UART4_SELECT
-@@ -113,6 +116,7 @@ static struct uartinit uartinit_data[] __initdata = {
- .ck_mode_mask =
- LPC32XX_UART_CLKMODE_LOAD(LPC32XX_UART_CLKMODE_ON, 4),
- .pdiv_clk_reg = LPC32XX_CLKPWR_UART4_CLK_CTRL,
-+ .mapbase = LPC32XX_UART4_BASE,
- },
- #endif
- #ifdef CONFIG_ARCH_LPC32XX_UART6_SELECT
-@@ -121,6 +125,7 @@ static struct uartinit uartinit_data[] __initdata = {
- .ck_mode_mask =
- LPC32XX_UART_CLKMODE_LOAD(LPC32XX_UART_CLKMODE_ON, 6),
- .pdiv_clk_reg = LPC32XX_CLKPWR_UART6_CLK_CTRL,
-+ .mapbase = LPC32XX_UART6_BASE,
- },
- #endif
- };
-@@ -165,6 +170,19 @@ void __init lpc32xx_serial_init(void)
-
- /* pre-UART clock divider set to 1 */
- __raw_writel(0x0101, uartinit_data[i].pdiv_clk_reg);
-+
-+ /*
-+ * Force a flush of the RX FIFOs to work around a
-+ * HW bug
-+ */
-+ puart = uartinit_data[i].mapbase;
-+ __raw_writel(0xC1, LPC32XX_UART_IIR_FCR(puart));
-+ __raw_writel(0x00, LPC32XX_UART_DLL_FIFO(puart));
-+ j = LPC32XX_SUART_FIFO_SIZE;
-+ while (j--)
-+ tmp = __raw_readl(
-+ LPC32XX_UART_DLL_FIFO(puart));
-+ __raw_writel(0, LPC32XX_UART_IIR_FCR(puart));
- }
-
- /* This needs to be done after all UART clocks are setup */
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0006-ARM-LPC32xx-serial.c-Fixed-loop-limit.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0006-ARM-LPC32xx-serial.c-Fixed-loop-limit.patch
deleted file mode 100644
index 2b9606b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0006-ARM-LPC32xx-serial.c-Fixed-loop-limit.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 08d76bb3139d89b31bbf05f2a4b279a739b47404 Mon Sep 17 00:00:00 2001
-From: Roland Stigge <stigge at antcom.de>
-Date: Mon, 27 Feb 2012 17:28:03 +0100
-Subject: [PATCH 06/95] ARM: LPC32xx: serial.c: Fixed loop limit
-
-commit ff424aa4c89d19082e8ae5a3351006bc8a4cd91b upstream.
-
-This patch fixes a wrong loop limit on UART init.
-
-Signed-off-by: Roland Stigge <stigge at antcom.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/arm/mach-lpc32xx/serial.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/arch/arm/mach-lpc32xx/serial.c b/arch/arm/mach-lpc32xx/serial.c
-index 1a3fd4c..f273528 100644
---- a/arch/arm/mach-lpc32xx/serial.c
-+++ b/arch/arm/mach-lpc32xx/serial.c
-@@ -187,7 +187,7 @@ void __init lpc32xx_serial_init(void)
-
- /* This needs to be done after all UART clocks are setup */
- __raw_writel(clkmodes, LPC32XX_UARTCTL_CLKMODE);
-- for (i = 0; i < ARRAY_SIZE(uartinit_data) - 1; i++) {
-+ for (i = 0; i < ARRAY_SIZE(uartinit_data); i++) {
- /* Force a flush of the RX FIFOs to work around a HW bug */
- puart = serial_std_platform_data[i].mapbase;
- __raw_writel(0xC1, LPC32XX_UART_IIR_FCR(puart));
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0007-ARM-LPC32xx-irq.c-Clear-latched-event.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0007-ARM-LPC32xx-irq.c-Clear-latched-event.patch
deleted file mode 100644
index e38c505..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0007-ARM-LPC32xx-irq.c-Clear-latched-event.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From f62c3f27bbc19f65557bbdb1572fd3179d22389a Mon Sep 17 00:00:00 2001
-From: Roland Stigge <stigge at antcom.de>
-Date: Mon, 27 Feb 2012 17:28:02 +0100
-Subject: [PATCH 07/95] ARM: LPC32xx: irq.c: Clear latched event
-
-commit 94ed7830cba4dce57b18a2926b5d826bfd184bd6 upstream.
-
-This patch fixes the wakeup disable function by clearing latched events.
-
-Signed-off-by: Roland Stigge <stigge at antcom.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/arm/mach-lpc32xx/irq.c | 11 ++++++++++-
- 1 file changed, 10 insertions(+), 1 deletion(-)
-
-diff --git a/arch/arm/mach-lpc32xx/irq.c b/arch/arm/mach-lpc32xx/irq.c
-index 4eae566..965b1d6 100644
---- a/arch/arm/mach-lpc32xx/irq.c
-+++ b/arch/arm/mach-lpc32xx/irq.c
-@@ -305,9 +305,18 @@ static int lpc32xx_irq_wake(struct irq_data *d, unsigned int state)
-
- if (state)
- eventreg |= lpc32xx_events[d->irq].mask;
-- else
-+ else {
- eventreg &= ~lpc32xx_events[d->irq].mask;
-
-+ /*
-+ * When disabling the wakeup, clear the latched
-+ * event
-+ */
-+ __raw_writel(lpc32xx_events[d->irq].mask,
-+ lpc32xx_events[d->irq].
-+ event_group->rawstat_reg);
-+ }
-+
- __raw_writel(eventreg,
- lpc32xx_events[d->irq].event_group->enab_reg);
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0008-ARM-LPC32xx-Fix-interrupt-controller-init.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0008-ARM-LPC32xx-Fix-interrupt-controller-init.patch
deleted file mode 100644
index 45639cb..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0008-ARM-LPC32xx-Fix-interrupt-controller-init.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From 2ba0d2ea76b770e0b2a69db02bd3ddc60bbfdcee Mon Sep 17 00:00:00 2001
-From: Roland Stigge <stigge at antcom.de>
-Date: Mon, 27 Feb 2012 17:28:02 +0100
-Subject: [PATCH 08/95] ARM: LPC32xx: Fix interrupt controller init
-
-commit 35dd0a75d4a382e7f769dd0277732e7aa5235718 upstream.
-
-This patch fixes the initialization of the interrupt controller of the LPC32xx
-by correctly setting up SIC1 and SIC2 instead of (wrongly) using the same value
-as for the Main Interrupt Controller (MIC).
-
-Signed-off-by: Roland Stigge <stigge at antcom.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/arm/mach-lpc32xx/irq.c | 10 ++++++----
- 1 file changed, 6 insertions(+), 4 deletions(-)
-
-diff --git a/arch/arm/mach-lpc32xx/irq.c b/arch/arm/mach-lpc32xx/irq.c
-index 965b1d6..198de47 100644
---- a/arch/arm/mach-lpc32xx/irq.c
-+++ b/arch/arm/mach-lpc32xx/irq.c
-@@ -389,13 +389,15 @@ void __init lpc32xx_init_irq(void)
-
- /* Setup SIC1 */
- __raw_writel(0, LPC32XX_INTC_MASK(LPC32XX_SIC1_BASE));
-- __raw_writel(MIC_APR_DEFAULT, LPC32XX_INTC_POLAR(LPC32XX_SIC1_BASE));
-- __raw_writel(MIC_ATR_DEFAULT, LPC32XX_INTC_ACT_TYPE(LPC32XX_SIC1_BASE));
-+ __raw_writel(SIC1_APR_DEFAULT, LPC32XX_INTC_POLAR(LPC32XX_SIC1_BASE));
-+ __raw_writel(SIC1_ATR_DEFAULT,
-+ LPC32XX_INTC_ACT_TYPE(LPC32XX_SIC1_BASE));
-
- /* Setup SIC2 */
- __raw_writel(0, LPC32XX_INTC_MASK(LPC32XX_SIC2_BASE));
-- __raw_writel(MIC_APR_DEFAULT, LPC32XX_INTC_POLAR(LPC32XX_SIC2_BASE));
-- __raw_writel(MIC_ATR_DEFAULT, LPC32XX_INTC_ACT_TYPE(LPC32XX_SIC2_BASE));
-+ __raw_writel(SIC2_APR_DEFAULT, LPC32XX_INTC_POLAR(LPC32XX_SIC2_BASE));
-+ __raw_writel(SIC2_ATR_DEFAULT,
-+ LPC32XX_INTC_ACT_TYPE(LPC32XX_SIC2_BASE));
-
- /* Configure supported IRQ's */
- for (i = 0; i < NR_IRQS; i++) {
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0009-ARM-LPC32xx-Fix-irq-on-GPI_28.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0009-ARM-LPC32xx-Fix-irq-on-GPI_28.patch
deleted file mode 100644
index 7e68130..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0009-ARM-LPC32xx-Fix-irq-on-GPI_28.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From 8a0acecb08f9fdf2a8ddae720a7e7ce51c7d46c3 Mon Sep 17 00:00:00 2001
-From: Roland Stigge <stigge at antcom.de>
-Date: Mon, 27 Feb 2012 17:28:02 +0100
-Subject: [PATCH 09/95] ARM: LPC32xx: Fix irq on GPI_28
-
-commit f6737055c1c432a9628a9a731f9881ad8e0a9eee upstream.
-
-The GPI_28 IRQ was not registered properly. The registration of
-IRQ_LPC32XX_GPI_28 was added and the (wrong) IRQ_LPC32XX_GPI_11 at
-LPC32XX_SIC1_IRQ(4) was replaced by IRQ_LPC32XX_GPI_28 (see manual of
-LPC32xx / interrupt controller).
-
-Signed-off-by: Roland Stigge <stigge at antcom.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/arm/mach-lpc32xx/include/mach/irqs.h | 2 +-
- arch/arm/mach-lpc32xx/irq.c | 4 ++++
- 2 files changed, 5 insertions(+), 1 deletion(-)
-
-diff --git a/arch/arm/mach-lpc32xx/include/mach/irqs.h b/arch/arm/mach-lpc32xx/include/mach/irqs.h
-index 2667f52..9e3b90d 100644
---- a/arch/arm/mach-lpc32xx/include/mach/irqs.h
-+++ b/arch/arm/mach-lpc32xx/include/mach/irqs.h
-@@ -61,7 +61,7 @@
- */
- #define IRQ_LPC32XX_JTAG_COMM_TX LPC32XX_SIC1_IRQ(1)
- #define IRQ_LPC32XX_JTAG_COMM_RX LPC32XX_SIC1_IRQ(2)
--#define IRQ_LPC32XX_GPI_11 LPC32XX_SIC1_IRQ(4)
-+#define IRQ_LPC32XX_GPI_28 LPC32XX_SIC1_IRQ(4)
- #define IRQ_LPC32XX_TS_P LPC32XX_SIC1_IRQ(6)
- #define IRQ_LPC32XX_TS_IRQ LPC32XX_SIC1_IRQ(7)
- #define IRQ_LPC32XX_TS_AUX LPC32XX_SIC1_IRQ(8)
-diff --git a/arch/arm/mach-lpc32xx/irq.c b/arch/arm/mach-lpc32xx/irq.c
-index 198de47..c74de01 100644
---- a/arch/arm/mach-lpc32xx/irq.c
-+++ b/arch/arm/mach-lpc32xx/irq.c
-@@ -118,6 +118,10 @@ static const struct lpc32xx_event_info lpc32xx_events[NR_IRQS] = {
- .event_group = &lpc32xx_event_pin_regs,
- .mask = LPC32XX_CLKPWR_EXTSRC_GPI_06_BIT,
- },
-+ [IRQ_LPC32XX_GPI_28] = {
-+ .event_group = &lpc32xx_event_pin_regs,
-+ .mask = LPC32XX_CLKPWR_EXTSRC_GPI_28_BIT,
-+ },
- [IRQ_LPC32XX_GPIO_00] = {
- .event_group = &lpc32xx_event_int_regs,
- .mask = LPC32XX_CLKPWR_INTSRC_GPIO_00_BIT,
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0010-watchdog-hpwdt-clean-up-set_memory_x-call-for-32-bit.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0010-watchdog-hpwdt-clean-up-set_memory_x-call-for-32-bit.patch
deleted file mode 100644
index 80f0a9a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0010-watchdog-hpwdt-clean-up-set_memory_x-call-for-32-bit.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From f6e694464bffbea7a0dc2168c073bd7e7f4d9684 Mon Sep 17 00:00:00 2001
-From: Maxim Uvarov <maxim.uvarov at oracle.com>
-Date: Sun, 15 Jan 2012 20:02:50 -0800
-Subject: [PATCH 10/95] watchdog: hpwdt: clean up set_memory_x call for 32 bit
-
-commit 97d2a10d5804d585ab0b58efbd710948401b886a upstream.
-
-1. address has to be page aligned.
-2. set_memory_x uses page size argument, not size.
-Bug causes with following commit:
- commit da28179b4e90dda56912ee825c7eaa62fc103797
- Author: Mingarelli, Thomas <Thomas.Mingarelli at hp.com>
- Date: Mon Nov 7 10:59:00 2011 +0100
-
- watchdog: hpwdt: Changes to handle NX secure bit in 32bit path
-
- commit e67d668e147c3b4fec638c9e0ace04319f5ceccd upstream.
-
- This patch makes use of the set_memory_x() kernel API in order
- to make necessary BIOS calls to source NMIs.
-
-Signed-off-by: Maxim Uvarov <maxim.uvarov at oracle.com>
-Signed-off-by: Wim Van Sebroeck <wim at iguana.be>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/watchdog/hpwdt.c | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/watchdog/hpwdt.c b/drivers/watchdog/hpwdt.c
-index 8464ea1..3c166d3 100644
---- a/drivers/watchdog/hpwdt.c
-+++ b/drivers/watchdog/hpwdt.c
-@@ -231,7 +231,7 @@ static int __devinit cru_detect(unsigned long map_entry,
-
- cmn_regs.u1.reax = CRU_BIOS_SIGNATURE_VALUE;
-
-- set_memory_x((unsigned long)bios32_entrypoint, (2 * PAGE_SIZE));
-+ set_memory_x((unsigned long)bios32_map, 2);
- asminline_call(&cmn_regs, bios32_entrypoint);
-
- if (cmn_regs.u1.ral != 0) {
-@@ -250,7 +250,8 @@ static int __devinit cru_detect(unsigned long map_entry,
- cru_rom_addr =
- ioremap(cru_physical_address, cru_length);
- if (cru_rom_addr) {
-- set_memory_x((unsigned long)cru_rom_addr, cru_length);
-+ set_memory_x((unsigned long)cru_rom_addr & PAGE_MASK,
-+ (cru_length + PAGE_SIZE - 1) >> PAGE_SHIFT);
- retval = 0;
- }
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0011-i2c-mxs-only-flag-completion-when-queue-is-completel.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0011-i2c-mxs-only-flag-completion-when-queue-is-completel.patch
deleted file mode 100644
index 4631965..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0011-i2c-mxs-only-flag-completion-when-queue-is-completel.patch
+++ /dev/null
@@ -1,83 +0,0 @@
-From f29a708fc403852d97151e2ce7d0332bd3dfc2d7 Mon Sep 17 00:00:00 2001
-From: Wolfram Sang <w.sang at pengutronix.de>
-Date: Fri, 13 Jan 2012 12:14:26 +0100
-Subject: [PATCH 11/95] i2c: mxs: only flag completion when queue is
- completely done
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit 844990daa2e69a4258049ba9c2bae1180657dac3 upstream.
-
-The hardware generates an interrupt for every completed command in the
-queue while the code assumed that it will only generate one interrupt
-when the queue is empty. So, explicitly check if the queue is really
-empty. This patch fixed problems which occurred due to high traffic on
-the bus. While we are here, move the completion-initialization after the
-parameter error checking.
-
-Signed-off-by: Wolfram Sang <w.sang at pengutronix.de>
-Cc: Shawn Guo <shawn.guo at linaro.org>
-Cc: Marek Vasut <marek.vasut at gmail.com>
-Cc: Lothar Waßmann <LW at KARO-electronics.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/i2c/busses/i2c-mxs.c | 13 ++++++++++---
- 1 file changed, 10 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/i2c/busses/i2c-mxs.c b/drivers/i2c/busses/i2c-mxs.c
-index 7e78f7c..3d471d5 100644
---- a/drivers/i2c/busses/i2c-mxs.c
-+++ b/drivers/i2c/busses/i2c-mxs.c
-@@ -72,6 +72,7 @@
-
- #define MXS_I2C_QUEUESTAT (0x70)
- #define MXS_I2C_QUEUESTAT_RD_QUEUE_EMPTY 0x00002000
-+#define MXS_I2C_QUEUESTAT_WRITE_QUEUE_CNT_MASK 0x0000001F
-
- #define MXS_I2C_QUEUECMD (0x80)
-
-@@ -219,14 +220,14 @@ static int mxs_i2c_xfer_msg(struct i2c_adapter *adap, struct i2c_msg *msg,
- int ret;
- int flags;
-
-- init_completion(&i2c->cmd_complete);
--
- dev_dbg(i2c->dev, "addr: 0x%04x, len: %d, flags: 0x%x, stop: %d\n",
- msg->addr, msg->len, msg->flags, stop);
-
- if (msg->len == 0)
- return -EINVAL;
-
-+ init_completion(&i2c->cmd_complete);
-+
- flags = stop ? MXS_I2C_CTRL0_POST_SEND_STOP : 0;
-
- if (msg->flags & I2C_M_RD)
-@@ -286,6 +287,7 @@ static irqreturn_t mxs_i2c_isr(int this_irq, void *dev_id)
- {
- struct mxs_i2c_dev *i2c = dev_id;
- u32 stat = readl(i2c->regs + MXS_I2C_CTRL1) & MXS_I2C_IRQ_MASK;
-+ bool is_last_cmd;
-
- if (!stat)
- return IRQ_NONE;
-@@ -300,9 +302,14 @@ static irqreturn_t mxs_i2c_isr(int this_irq, void *dev_id)
- else
- i2c->cmd_err = 0;
-
-- complete(&i2c->cmd_complete);
-+ is_last_cmd = (readl(i2c->regs + MXS_I2C_QUEUESTAT) &
-+ MXS_I2C_QUEUESTAT_WRITE_QUEUE_CNT_MASK) == 0;
-+
-+ if (is_last_cmd || i2c->cmd_err)
-+ complete(&i2c->cmd_complete);
-
- writel(stat, i2c->regs + MXS_I2C_CTRL1_CLR);
-+
- return IRQ_HANDLED;
- }
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0012-regulator-fix-the-ldo-configure-according-to-88pm860.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0012-regulator-fix-the-ldo-configure-according-to-88pm860.patch
deleted file mode 100644
index a94f75c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0012-regulator-fix-the-ldo-configure-according-to-88pm860.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From 73b51991611912eb820ad2e40d49659ccf4ea5fe Mon Sep 17 00:00:00 2001
-From: "Jett.Zhou" <jtzhou at marvell.com>
-Date: Thu, 23 Feb 2012 19:52:08 +0800
-Subject: [PATCH 12/95] regulator: fix the ldo configure according to 88pm860x
- spec
-
-commit 3380643b0eaa7ecf99c4f095bdfcb6e5df471616 upstream.
-
-Signed-off-by: Jett.Zhou <jtzhou at marvell.com>
-Signed-off-by: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/regulator/88pm8607.c | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/regulator/88pm8607.c b/drivers/regulator/88pm8607.c
-index ca0d608..1cead1d 100644
---- a/drivers/regulator/88pm8607.c
-+++ b/drivers/regulator/88pm8607.c
-@@ -196,7 +196,7 @@ static const unsigned int LDO12_suspend_table[] = {
- };
-
- static const unsigned int LDO13_table[] = {
-- 1300000, 1800000, 2000000, 2500000, 2800000, 3000000, 0, 0,
-+ 1200000, 1300000, 1800000, 2000000, 2500000, 2800000, 3000000, 0,
- };
-
- static const unsigned int LDO13_suspend_table[] = {
-@@ -389,10 +389,10 @@ static struct pm8607_regulator_info pm8607_regulator_info[] = {
- PM8607_LDO( 7, LDO7, 0, 3, SUPPLIES_EN12, 1),
- PM8607_LDO( 8, LDO8, 0, 3, SUPPLIES_EN12, 2),
- PM8607_LDO( 9, LDO9, 0, 3, SUPPLIES_EN12, 3),
-- PM8607_LDO(10, LDO10, 0, 3, SUPPLIES_EN12, 4),
-+ PM8607_LDO(10, LDO10, 0, 4, SUPPLIES_EN12, 4),
- PM8607_LDO(12, LDO12, 0, 4, SUPPLIES_EN12, 5),
- PM8607_LDO(13, VIBRATOR_SET, 1, 3, VIBRATOR_SET, 0),
-- PM8607_LDO(14, LDO14, 0, 4, SUPPLIES_EN12, 6),
-+ PM8607_LDO(14, LDO14, 0, 3, SUPPLIES_EN12, 6),
- };
-
- static int __devinit pm8607_regulator_probe(struct platform_device *pdev)
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0013-S390-KEYS-Enable-the-compat-keyctl-wrapper-on-s390x.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0013-S390-KEYS-Enable-the-compat-keyctl-wrapper-on-s390x.patch
deleted file mode 100644
index d038e89..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0013-S390-KEYS-Enable-the-compat-keyctl-wrapper-on-s390x.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From 07f3a430403e03b2f25578009e4bc69470101d74 Mon Sep 17 00:00:00 2001
-From: David Howells <dhowells at redhat.com>
-Date: Fri, 24 Feb 2012 18:01:27 +0100
-Subject: [PATCH 13/95] S390: KEYS: Enable the compat keyctl wrapper on s390x
-
-commit 1d057720609ed052a6371fe1d53300e5e6328e94 upstream.
-
-Enable the compat keyctl wrapper on s390x so that 32-bit s390 userspace can
-call the keyctl() syscall.
-
-There's an s390x assembly wrapper that truncates all the register values to
-32-bits and this then calls compat_sys_keyctl() - but the latter only exists if
-CONFIG_KEYS_COMPAT is enabled, and the s390 Kconfig doesn't enable it.
-
-Without this patch, 32-bit calls to the keyctl() syscall are given an ENOSYS
-error:
-
- [root at devel4 ~]# keyctl show
- Session Keyring
- -3: key inaccessible (Function not implemented)
-
-Signed-off-by: David Howells <dhowells at redhat.com>
-Acked-by: dan at danny.cz
-Cc: Carsten Otte <cotte at de.ibm.com>
-Reviewed-by: Christian Borntraeger <borntraeger at de.ibm.com>
-Cc: linux-s390 at vger.kernel.org
-Signed-off-by: Heiko Carstens <heiko.carstens at de.ibm.com>
-Signed-off-by: Martin Schwidefsky <schwidefsky at de.ibm.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/s390/Kconfig | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig
-index 373679b..f929db9 100644
---- a/arch/s390/Kconfig
-+++ b/arch/s390/Kconfig
-@@ -230,6 +230,9 @@ config COMPAT
- config SYSVIPC_COMPAT
- def_bool y if COMPAT && SYSVIPC
-
-+config KEYS_COMPAT
-+ def_bool y if COMPAT && KEYS
-+
- config AUDIT_ARCH
- def_bool y
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0014-perf-x86-kvm-Fix-Host-Only-Guest-Only-counting-with-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0014-perf-x86-kvm-Fix-Host-Only-Guest-Only-counting-with-.patch
deleted file mode 100644
index 47d0279..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0014-perf-x86-kvm-Fix-Host-Only-Guest-Only-counting-with-.patch
+++ /dev/null
@@ -1,182 +0,0 @@
-From cdc630df410e8ee7d102f495e5f2bf628d450828 Mon Sep 17 00:00:00 2001
-From: Joerg Roedel <joerg.roedel at amd.com>
-Date: Wed, 29 Feb 2012 14:57:32 +0100
-Subject: [PATCH 14/95] perf/x86/kvm: Fix Host-Only/Guest-Only counting with
- SVM disabled
-
-commit 1018faa6cf23b256bf25919ef203cd7c129f06f2 upstream.
-
-It turned out that a performance counter on AMD does not
-count at all when the GO or HO bit is set in the control
-register and SVM is disabled in EFER.
-
-This patch works around this issue by masking out the HO bit
-in the performance counter control register when SVM is not
-enabled.
-
-The GO bit is not touched because it is only set when the
-user wants to count in guest-mode only. So when SVM is
-disabled the counter should not run at all and the
-not-counting is the intended behaviour.
-
-Signed-off-by: Joerg Roedel <joerg.roedel at amd.com>
-Signed-off-by: Peter Zijlstra <a.p.zijlstra at chello.nl>
-Cc: Avi Kivity <avi at redhat.com>
-Cc: Stephane Eranian <eranian at google.com>
-Cc: David Ahern <dsahern at gmail.com>
-Cc: Gleb Natapov <gleb at redhat.com>
-Cc: Robert Richter <robert.richter at amd.com>
-Link: http://lkml.kernel.org/r/1330523852-19566-1-git-send-email-joerg.roedel@amd.com
-Signed-off-by: Ingo Molnar <mingo at elte.hu>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/x86/include/asm/perf_event.h | 8 ++++++++
- arch/x86/kernel/cpu/perf_event.h | 8 ++++++--
- arch/x86/kernel/cpu/perf_event_amd.c | 37 ++++++++++++++++++++++++++++++++--
- arch/x86/kvm/svm.c | 5 +++++
- 4 files changed, 54 insertions(+), 4 deletions(-)
-
-diff --git a/arch/x86/include/asm/perf_event.h b/arch/x86/include/asm/perf_event.h
-index f61c62f..50d7ff2 100644
---- a/arch/x86/include/asm/perf_event.h
-+++ b/arch/x86/include/asm/perf_event.h
-@@ -212,4 +212,12 @@ static inline perf_guest_switch_msr *perf_guest_get_msrs(int *nr)
- static inline void perf_events_lapic_init(void) { }
- #endif
-
-+#if defined(CONFIG_PERF_EVENTS) && defined(CONFIG_CPU_SUP_AMD)
-+ extern void amd_pmu_enable_virt(void);
-+ extern void amd_pmu_disable_virt(void);
-+#else
-+ static inline void amd_pmu_enable_virt(void) { }
-+ static inline void amd_pmu_disable_virt(void) { }
-+#endif
-+
- #endif /* _ASM_X86_PERF_EVENT_H */
-diff --git a/arch/x86/kernel/cpu/perf_event.h b/arch/x86/kernel/cpu/perf_event.h
-index b9698d4..02e0295 100644
---- a/arch/x86/kernel/cpu/perf_event.h
-+++ b/arch/x86/kernel/cpu/perf_event.h
-@@ -146,7 +146,9 @@ struct cpu_hw_events {
- /*
- * AMD specific bits
- */
-- struct amd_nb *amd_nb;
-+ struct amd_nb *amd_nb;
-+ /* Inverted mask of bits to clear in the perf_ctr ctrl registers */
-+ u64 perf_ctr_virt_mask;
-
- void *kfree_on_online;
- };
-@@ -372,9 +374,11 @@ void x86_pmu_disable_all(void);
- static inline void __x86_pmu_enable_event(struct hw_perf_event *hwc,
- u64 enable_mask)
- {
-+ u64 disable_mask = __this_cpu_read(cpu_hw_events.perf_ctr_virt_mask);
-+
- if (hwc->extra_reg.reg)
- wrmsrl(hwc->extra_reg.reg, hwc->extra_reg.config);
-- wrmsrl(hwc->config_base, hwc->config | enable_mask);
-+ wrmsrl(hwc->config_base, (hwc->config | enable_mask) & ~disable_mask);
- }
-
- void x86_pmu_enable_all(int added);
-diff --git a/arch/x86/kernel/cpu/perf_event_amd.c b/arch/x86/kernel/cpu/perf_event_amd.c
-index aeefd45..f64a039 100644
---- a/arch/x86/kernel/cpu/perf_event_amd.c
-+++ b/arch/x86/kernel/cpu/perf_event_amd.c
-@@ -1,4 +1,5 @@
- #include <linux/perf_event.h>
-+#include <linux/export.h>
- #include <linux/types.h>
- #include <linux/init.h>
- #include <linux/slab.h>
-@@ -357,7 +358,9 @@ static void amd_pmu_cpu_starting(int cpu)
- struct amd_nb *nb;
- int i, nb_id;
-
-- if (boot_cpu_data.x86_max_cores < 2)
-+ cpuc->perf_ctr_virt_mask = AMD_PERFMON_EVENTSEL_HOSTONLY;
-+
-+ if (boot_cpu_data.x86_max_cores < 2 || boot_cpu_data.x86 == 0x15)
- return;
-
- nb_id = amd_get_nb_id(cpu);
-@@ -587,9 +590,9 @@ static __initconst const struct x86_pmu amd_pmu_f15h = {
- .put_event_constraints = amd_put_event_constraints,
-
- .cpu_prepare = amd_pmu_cpu_prepare,
-- .cpu_starting = amd_pmu_cpu_starting,
- .cpu_dead = amd_pmu_cpu_dead,
- #endif
-+ .cpu_starting = amd_pmu_cpu_starting,
- };
-
- __init int amd_pmu_init(void)
-@@ -621,3 +624,33 @@ __init int amd_pmu_init(void)
-
- return 0;
- }
-+
-+void amd_pmu_enable_virt(void)
-+{
-+ struct cpu_hw_events *cpuc = &__get_cpu_var(cpu_hw_events);
-+
-+ cpuc->perf_ctr_virt_mask = 0;
-+
-+ /* Reload all events */
-+ x86_pmu_disable_all();
-+ x86_pmu_enable_all(0);
-+}
-+EXPORT_SYMBOL_GPL(amd_pmu_enable_virt);
-+
-+void amd_pmu_disable_virt(void)
-+{
-+ struct cpu_hw_events *cpuc = &__get_cpu_var(cpu_hw_events);
-+
-+ /*
-+ * We only mask out the Host-only bit so that host-only counting works
-+ * when SVM is disabled. If someone sets up a guest-only counter when
-+ * SVM is disabled the Guest-only bits still gets set and the counter
-+ * will not count anything.
-+ */
-+ cpuc->perf_ctr_virt_mask = AMD_PERFMON_EVENTSEL_HOSTONLY;
-+
-+ /* Reload all events */
-+ x86_pmu_disable_all();
-+ x86_pmu_enable_all(0);
-+}
-+EXPORT_SYMBOL_GPL(amd_pmu_disable_virt);
-diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c
-index e32243e..94a4672 100644
---- a/arch/x86/kvm/svm.c
-+++ b/arch/x86/kvm/svm.c
-@@ -29,6 +29,7 @@
- #include <linux/ftrace_event.h>
- #include <linux/slab.h>
-
-+#include <asm/perf_event.h>
- #include <asm/tlbflush.h>
- #include <asm/desc.h>
- #include <asm/kvm_para.h>
-@@ -575,6 +576,8 @@ static void svm_hardware_disable(void *garbage)
- wrmsrl(MSR_AMD64_TSC_RATIO, TSC_RATIO_DEFAULT);
-
- cpu_svm_disable();
-+
-+ amd_pmu_disable_virt();
- }
-
- static int svm_hardware_enable(void *garbage)
-@@ -622,6 +625,8 @@ static int svm_hardware_enable(void *garbage)
-
- svm_init_erratum_383();
-
-+ amd_pmu_enable_virt();
-+
- return 0;
- }
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0015-ALSA-hda-realtek-Fix-resume-of-multiple-input-source.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0015-ALSA-hda-realtek-Fix-resume-of-multiple-input-source.patch
deleted file mode 100644
index 3497610..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0015-ALSA-hda-realtek-Fix-resume-of-multiple-input-source.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From b69e09a8ee7effdd60a09a38ae8a28c45f000f48 Mon Sep 17 00:00:00 2001
-From: Takashi Iwai <tiwai at suse.de>
-Date: Sat, 25 Feb 2012 11:13:16 +0100
-Subject: [PATCH 15/95] ALSA: hda/realtek - Fix resume of multiple input
- sources
-
-commit 068b939431486f524438330b0848a8222e33d421 upstream.
-
-When there are multiple input sources, the driver wrongly overwrites with
-the value of the last input source on other slots at resume. Thus the
-primary input source may be shown wrongly.
-
-Reported-and-tested-by: Julian Sikorski <belegdol at gmail.com>
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- sound/pci/hda/patch_realtek.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
-index c4c8d78..3d8fbf4 100644
---- a/sound/pci/hda/patch_realtek.c
-+++ b/sound/pci/hda/patch_realtek.c
-@@ -3695,7 +3695,7 @@ static void alc_auto_init_input_src(struct hda_codec *codec)
- else
- nums = spec->num_adc_nids;
- for (c = 0; c < nums; c++)
-- alc_mux_select(codec, 0, spec->cur_mux[c], true);
-+ alc_mux_select(codec, c, spec->cur_mux[c], true);
- }
-
- /* add mic boosts if needed */
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0016-ALSA-hda-Add-a-fake-mute-feature.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0016-ALSA-hda-Add-a-fake-mute-feature.patch
deleted file mode 100644
index 79be891..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0016-ALSA-hda-Add-a-fake-mute-feature.patch
+++ /dev/null
@@ -1,119 +0,0 @@
-From 889d0ed385a0bbda6f59b820b95e8c8e2af73b99 Mon Sep 17 00:00:00 2001
-From: Takashi Iwai <tiwai at suse.de>
-Date: Mon, 27 Feb 2012 15:00:58 +0100
-Subject: [PATCH 16/95] ALSA: hda - Add a fake mute feature
-
-commit 3868137ea41866773e75d9ac4b9988dcc361ff1d upstream.
-
-Some codecs don't supply the mute amp-capabilities although the lowest
-volume gives the mute. It'd be handy if the parser provides the mute
-mixers in such a case.
-
-This patch adds an extension amp-cap bit (which is used only in the
-driver) to represent the min volume = mute state. Also modified the
-amp cache code to support the fake mute feature when this bit is set
-but the real mute bit is unset.
-
-In addition, conexant cx5051 parser uses this new feature to implement
-the missing mute controls.
-
-Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=42825
-
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- sound/pci/hda/hda_codec.c | 8 ++++++--
- sound/pci/hda/hda_codec.h | 3 +++
- sound/pci/hda/patch_conexant.c | 22 +++++++++++++++++++++-
- 3 files changed, 30 insertions(+), 3 deletions(-)
-
-diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c
-index 05c8768..f3be54e 100644
---- a/sound/pci/hda/hda_codec.c
-+++ b/sound/pci/hda/hda_codec.c
-@@ -1795,7 +1795,11 @@ static void put_vol_mute(struct hda_codec *codec, struct hda_amp_info *info,
- parm = ch ? AC_AMP_SET_RIGHT : AC_AMP_SET_LEFT;
- parm |= direction == HDA_OUTPUT ? AC_AMP_SET_OUTPUT : AC_AMP_SET_INPUT;
- parm |= index << AC_AMP_SET_INDEX_SHIFT;
-- parm |= val;
-+ if ((val & HDA_AMP_MUTE) && !(info->amp_caps & AC_AMPCAP_MUTE) &&
-+ (info->amp_caps & AC_AMPCAP_MIN_MUTE))
-+ ; /* set the zero value as a fake mute */
-+ else
-+ parm |= val;
- snd_hda_codec_write(codec, nid, 0, AC_VERB_SET_AMP_GAIN_MUTE, parm);
- info->vol[ch] = val;
- }
-@@ -2062,7 +2066,7 @@ int snd_hda_mixer_amp_tlv(struct snd_kcontrol *kcontrol, int op_flag,
- val1 = -((caps & AC_AMPCAP_OFFSET) >> AC_AMPCAP_OFFSET_SHIFT);
- val1 += ofs;
- val1 = ((int)val1) * ((int)val2);
-- if (min_mute)
-+ if (min_mute || (caps & AC_AMPCAP_MIN_MUTE))
- val2 |= TLV_DB_SCALE_MUTE;
- if (put_user(SNDRV_CTL_TLVT_DB_SCALE, _tlv))
- return -EFAULT;
-diff --git a/sound/pci/hda/hda_codec.h b/sound/pci/hda/hda_codec.h
-index 5644711..71f6744 100644
---- a/sound/pci/hda/hda_codec.h
-+++ b/sound/pci/hda/hda_codec.h
-@@ -298,6 +298,9 @@ enum {
- #define AC_AMPCAP_MUTE (1<<31) /* mute capable */
- #define AC_AMPCAP_MUTE_SHIFT 31
-
-+/* driver-specific amp-caps: using bits 24-30 */
-+#define AC_AMPCAP_MIN_MUTE (1 << 30) /* min-volume = mute */
-+
- /* Connection list */
- #define AC_CLIST_LENGTH (0x7f<<0)
- #define AC_CLIST_LONG (1<<7)
-diff --git a/sound/pci/hda/patch_conexant.c b/sound/pci/hda/patch_conexant.c
-index 08bad5b..ae94929 100644
---- a/sound/pci/hda/patch_conexant.c
-+++ b/sound/pci/hda/patch_conexant.c
-@@ -4132,7 +4132,8 @@ static int cx_auto_add_volume_idx(struct hda_codec *codec, const char *basename,
- err = snd_hda_ctl_add(codec, nid, kctl);
- if (err < 0)
- return err;
-- if (!(query_amp_caps(codec, nid, hda_dir) & AC_AMPCAP_MUTE))
-+ if (!(query_amp_caps(codec, nid, hda_dir) &
-+ (AC_AMPCAP_MUTE | AC_AMPCAP_MIN_MUTE)))
- break;
- }
- return 0;
-@@ -4425,6 +4426,22 @@ static const struct snd_pci_quirk cxt_fixups[] = {
- {}
- };
-
-+/* add "fake" mute amp-caps to DACs on cx5051 so that mixer mute switches
-+ * can be created (bko#42825)
-+ */
-+static void add_cx5051_fake_mutes(struct hda_codec *codec)
-+{
-+ static hda_nid_t out_nids[] = {
-+ 0x10, 0x11, 0
-+ };
-+ hda_nid_t *p;
-+
-+ for (p = out_nids; *p; p++)
-+ snd_hda_override_amp_caps(codec, *p, HDA_OUTPUT,
-+ AC_AMPCAP_MIN_MUTE |
-+ query_amp_caps(codec, *p, HDA_OUTPUT));
-+}
-+
- static int patch_conexant_auto(struct hda_codec *codec)
- {
- struct conexant_spec *spec;
-@@ -4443,6 +4460,9 @@ static int patch_conexant_auto(struct hda_codec *codec)
- case 0x14f15045:
- spec->single_adc_amp = 1;
- break;
-+ case 0x14f15051:
-+ add_cx5051_fake_mutes(codec);
-+ break;
- }
-
- apply_pin_fixup(codec, cxt_fixups, cxt_pincfg_tbl);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0017-ALSA-hda-Always-set-HP-pin-in-unsol-handler-for-STAC.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0017-ALSA-hda-Always-set-HP-pin-in-unsol-handler-for-STAC.patch
deleted file mode 100644
index 4a44725..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0017-ALSA-hda-Always-set-HP-pin-in-unsol-handler-for-STAC.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 29cf3a2151eda817f5da561d12614da38df8ebfa Mon Sep 17 00:00:00 2001
-From: Takashi Iwai <tiwai at suse.de>
-Date: Wed, 29 Feb 2012 09:41:17 +0100
-Subject: [PATCH 17/95] ALSA: hda - Always set HP pin in unsol handler for
- STAC/IDT codecs
-
-commit 7bff172a352a2fbe9856bba517d71a2072aab041 upstream.
-
-A bug report with an old Sony laptop showed that we can't rely on BIOS
-setting the pins of headphones but the driver should set always by
-itself.
-
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- sound/pci/hda/patch_sigmatel.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c
-index ccdac27..ed67698 100644
---- a/sound/pci/hda/patch_sigmatel.c
-+++ b/sound/pci/hda/patch_sigmatel.c
-@@ -4719,7 +4719,7 @@ static void stac92xx_hp_detect(struct hda_codec *codec)
- unsigned int val = AC_PINCTL_OUT_EN | AC_PINCTL_HP_EN;
- if (no_hp_sensing(spec, i))
- continue;
-- if (presence)
-+ if (1 /*presence*/)
- stac92xx_set_pinctl(codec, cfg->hp_pins[i], val);
- #if 0 /* FIXME */
- /* Resetting the pinctl like below may lead to (a sort of) regressions
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0018-regset-Prevent-null-pointer-reference-on-readonly-re.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0018-regset-Prevent-null-pointer-reference-on-readonly-re.patch
deleted file mode 100644
index e7c0a05..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0018-regset-Prevent-null-pointer-reference-on-readonly-re.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-From fd443a97228dddfa19680097bdbc8a1997ee6774 Mon Sep 17 00:00:00 2001
-From: "H. Peter Anvin" <hpa at zytor.com>
-Date: Fri, 2 Mar 2012 10:43:48 -0800
-Subject: [PATCH 18/95] regset: Prevent null pointer reference on readonly
- regsets
-
-commit c8e252586f8d5de906385d8cf6385fee289a825e upstream.
-
-The regset common infrastructure assumed that regsets would always
-have .get and .set methods, but not necessarily .active methods.
-Unfortunately people have since written regsets without .set methods.
-
-Rather than putting in stub functions everywhere, handle regsets with
-null .get or .set methods explicitly.
-
-Signed-off-by: H. Peter Anvin <hpa at zytor.com>
-Reviewed-by: Oleg Nesterov <oleg at redhat.com>
-Acked-by: Roland McGrath <roland at hack.frob.com>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/binfmt_elf.c | 2 +-
- include/linux/regset.h | 6 ++++++
- 2 files changed, 7 insertions(+), 1 deletion(-)
-
-diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c
-index 21ac5ee..6ff96c6 100644
---- a/fs/binfmt_elf.c
-+++ b/fs/binfmt_elf.c
-@@ -1421,7 +1421,7 @@ static int fill_thread_core_info(struct elf_thread_core_info *t,
- for (i = 1; i < view->n; ++i) {
- const struct user_regset *regset = &view->regsets[i];
- do_thread_regset_writeback(t->task, regset);
-- if (regset->core_note_type &&
-+ if (regset->core_note_type && regset->get &&
- (!regset->active || regset->active(t->task, regset))) {
- int ret;
- size_t size = regset->n * regset->size;
-diff --git a/include/linux/regset.h b/include/linux/regset.h
-index 8abee65..5150fd1 100644
---- a/include/linux/regset.h
-+++ b/include/linux/regset.h
-@@ -335,6 +335,9 @@ static inline int copy_regset_to_user(struct task_struct *target,
- {
- const struct user_regset *regset = &view->regsets[setno];
-
-+ if (!regset->get)
-+ return -EOPNOTSUPP;
-+
- if (!access_ok(VERIFY_WRITE, data, size))
- return -EIO;
-
-@@ -358,6 +361,9 @@ static inline int copy_regset_from_user(struct task_struct *target,
- {
- const struct user_regset *regset = &view->regsets[setno];
-
-+ if (!regset->set)
-+ return -EOPNOTSUPP;
-+
- if (!access_ok(VERIFY_READ, data, size))
- return -EIO;
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0019-regset-Return-EFAULT-not-EIO-on-host-side-memory-fau.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0019-regset-Return-EFAULT-not-EIO-on-host-side-memory-fau.patch
deleted file mode 100644
index fc7da25..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0019-regset-Return-EFAULT-not-EIO-on-host-side-memory-fau.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From d14a04319db794d5cb918747293a54d6d212cf00 Mon Sep 17 00:00:00 2001
-From: "H. Peter Anvin" <hpa at zytor.com>
-Date: Fri, 2 Mar 2012 10:43:49 -0800
-Subject: [PATCH 19/95] regset: Return -EFAULT, not -EIO, on host-side memory
- fault
-
-commit 5189fa19a4b2b4c3bec37c3a019d446148827717 upstream.
-
-There is only one error code to return for a bad user-space buffer
-pointer passed to a system call in the same address space as the
-system call is executed, and that is EFAULT. Furthermore, the
-low-level access routines, which catch most of the faults, return
-EFAULT already.
-
-Signed-off-by: H. Peter Anvin <hpa at zytor.com>
-Reviewed-by: Oleg Nesterov <oleg at redhat.com>
-Acked-by: Roland McGrath <roland at hack.frob.com>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- include/linux/regset.h | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/include/linux/regset.h b/include/linux/regset.h
-index 5150fd1..686f373 100644
---- a/include/linux/regset.h
-+++ b/include/linux/regset.h
-@@ -339,7 +339,7 @@ static inline int copy_regset_to_user(struct task_struct *target,
- return -EOPNOTSUPP;
-
- if (!access_ok(VERIFY_WRITE, data, size))
-- return -EIO;
-+ return -EFAULT;
-
- return regset->get(target, regset, offset, size, NULL, data);
- }
-@@ -365,7 +365,7 @@ static inline int copy_regset_from_user(struct task_struct *target,
- return -EOPNOTSUPP;
-
- if (!access_ok(VERIFY_READ, data, size))
-- return -EIO;
-+ return -EFAULT;
-
- return regset->set(target, regset, offset, size, NULL, data);
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0020-mfd-Fix-ACPI-conflict-check.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0020-mfd-Fix-ACPI-conflict-check.patch
deleted file mode 100644
index f6ad873..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0020-mfd-Fix-ACPI-conflict-check.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 5ce240f2b5a8d96af3e2a2b4ea5868eab16f8c3d Mon Sep 17 00:00:00 2001
-From: Jean Delvare <khali at linux-fr.org>
-Date: Sat, 18 Feb 2012 17:54:23 +0100
-Subject: [PATCH 20/95] mfd: Fix ACPI conflict check
-
-commit 81b5482c32769abb6dfb979560dab2f952ba86fa upstream.
-
-The code is currently always checking the first resource of every
-device only (several times.) This has been broken since the ACPI check
-was added in February 2010 in commit
-91fedede0338eb6203cdd618d8ece873fdb7c22c.
-
-Fix the check to run on each resource individually, once.
-
-Signed-off-by: Jean Delvare <khali at linux-fr.org>
-Signed-off-by: Samuel Ortiz <sameo at linux.intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/mfd/mfd-core.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/mfd/mfd-core.c b/drivers/mfd/mfd-core.c
-index 0f59228..411f523 100644
---- a/drivers/mfd/mfd-core.c
-+++ b/drivers/mfd/mfd-core.c
-@@ -123,7 +123,7 @@ static int mfd_add_device(struct device *parent, int id,
- }
-
- if (!cell->ignore_resource_conflicts) {
-- ret = acpi_check_resource_conflict(res);
-+ ret = acpi_check_resource_conflict(&res[r]);
- if (ret)
- goto fail_res;
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0021-mfd-Test-for-jack-detection-when-deciding-if-wm8994-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0021-mfd-Test-for-jack-detection-when-deciding-if-wm8994-.patch
deleted file mode 100644
index 8df4453..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0021-mfd-Test-for-jack-detection-when-deciding-if-wm8994-.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 9abde3392eefd90e7c58cfb9c1bd29ac2a145b2d Mon Sep 17 00:00:00 2001
-From: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Date: Mon, 20 Feb 2012 21:32:32 +0000
-Subject: [PATCH 21/95] mfd: Test for jack detection when deciding if wm8994
- should suspend
-
-commit e7c248a049c2aac21bded0b0722caee6f0e57256 upstream.
-
-The jack detection on WM1811 is often required during system suspend, add
-it as another check when deciding if we should suspend.
-
-Signed-off-by: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Signed-off-by: Samuel Ortiz <sameo at linux.intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/mfd/wm8994-core.c | 14 ++++++++++++++
- 1 file changed, 14 insertions(+)
-
-diff --git a/drivers/mfd/wm8994-core.c b/drivers/mfd/wm8994-core.c
-index 61894fc..9302d21 100644
---- a/drivers/mfd/wm8994-core.c
-+++ b/drivers/mfd/wm8994-core.c
-@@ -252,6 +252,20 @@ static int wm8994_suspend(struct device *dev)
- break;
- }
-
-+ switch (wm8994->type) {
-+ case WM1811:
-+ ret = wm8994_reg_read(wm8994, WM8994_ANTIPOP_2);
-+ if (ret < 0) {
-+ dev_err(dev, "Failed to read jackdet: %d\n", ret);
-+ } else if (ret & WM1811_JACKDET_MODE_MASK) {
-+ dev_dbg(dev, "CODEC still active, ignoring suspend\n");
-+ return 0;
-+ }
-+ break;
-+ default:
-+ break;
-+ }
-+
- /* Disable LDO pulldowns while the device is suspended if we
- * don't know that something will be driving them. */
- if (!wm8994->ldo_ena_always_driven)
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0022-genirq-Clear-action-thread_mask-if-IRQ_ONESHOT-is-no.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0022-genirq-Clear-action-thread_mask-if-IRQ_ONESHOT-is-no.patch
deleted file mode 100644
index e1e9e3d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0022-genirq-Clear-action-thread_mask-if-IRQ_ONESHOT-is-no.patch
+++ /dev/null
@@ -1,97 +0,0 @@
-From 81924cb9ad2be5172d94d8ec1bf687a451f4227a Mon Sep 17 00:00:00 2001
-From: Thomas Gleixner <tglx at linutronix.de>
-Date: Tue, 6 Mar 2012 23:18:54 +0100
-Subject: [PATCH 22/95] genirq: Clear action->thread_mask if IRQ_ONESHOT is
- not set
-
-commit 52abb700e16a9aa4cbc03f3d7f80206cbbc80680 upstream.
-
-Xommit ac5637611(genirq: Unmask oneshot irqs when thread was not woken)
-fails to unmask when a !IRQ_ONESHOT threaded handler is handled by
-handle_level_irq.
-
-This happens because thread_mask is or'ed unconditionally in
-irq_wake_thread(), but for !IRQ_ONESHOT interrupts never cleared. So
-the check for !desc->thread_active fails and keeps the interrupt
-disabled.
-
-Keep the thread_mask zero for !IRQ_ONESHOT interrupts.
-
-Document the thread_mask magic while at it.
-
-Reported-and-tested-by: Sven Joachim <svenjoac at gmx.de>
-Reported-and-tested-by: Stefan Lippers-Hollmann <s.l-h at gmx.de>
-Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- kernel/irq/manage.c | 44 ++++++++++++++++++++++++++++++++++++++------
- 1 file changed, 38 insertions(+), 6 deletions(-)
-
-diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c
-index cf2d7ae..ae95cd2 100644
---- a/kernel/irq/manage.c
-+++ b/kernel/irq/manage.c
-@@ -985,6 +985,11 @@ __setup_irq(unsigned int irq, struct irq_desc *desc, struct irqaction *new)
-
- /* add new interrupt at end of irq queue */
- do {
-+ /*
-+ * Or all existing action->thread_mask bits,
-+ * so we can find the next zero bit for this
-+ * new action.
-+ */
- thread_mask |= old->thread_mask;
- old_ptr = &old->next;
- old = *old_ptr;
-@@ -993,14 +998,41 @@ __setup_irq(unsigned int irq, struct irq_desc *desc, struct irqaction *new)
- }
-
- /*
-- * Setup the thread mask for this irqaction. Unlikely to have
-- * 32 resp 64 irqs sharing one line, but who knows.
-+ * Setup the thread mask for this irqaction for ONESHOT. For
-+ * !ONESHOT irqs the thread mask is 0 so we can avoid a
-+ * conditional in irq_wake_thread().
- */
-- if (new->flags & IRQF_ONESHOT && thread_mask == ~0UL) {
-- ret = -EBUSY;
-- goto out_mask;
-+ if (new->flags & IRQF_ONESHOT) {
-+ /*
-+ * Unlikely to have 32 resp 64 irqs sharing one line,
-+ * but who knows.
-+ */
-+ if (thread_mask == ~0UL) {
-+ ret = -EBUSY;
-+ goto out_mask;
-+ }
-+ /*
-+ * The thread_mask for the action is or'ed to
-+ * desc->thread_active to indicate that the
-+ * IRQF_ONESHOT thread handler has been woken, but not
-+ * yet finished. The bit is cleared when a thread
-+ * completes. When all threads of a shared interrupt
-+ * line have completed desc->threads_active becomes
-+ * zero and the interrupt line is unmasked. See
-+ * handle.c:irq_wake_thread() for further information.
-+ *
-+ * If no thread is woken by primary (hard irq context)
-+ * interrupt handlers, then desc->threads_active is
-+ * also checked for zero to unmask the irq line in the
-+ * affected hard irq flow handlers
-+ * (handle_[fasteoi|level]_irq).
-+ *
-+ * The new action gets the first zero bit of
-+ * thread_mask assigned. See the loop above which or's
-+ * all existing action->thread_mask bits.
-+ */
-+ new->thread_mask = 1 << ffz(thread_mask);
- }
-- new->thread_mask = 1 << ffz(thread_mask);
-
- if (!shared) {
- init_waitqueue_head(&desc->wait_for_threads);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0023-ARM-S3C24XX-DMA-resume-regression-fix.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0023-ARM-S3C24XX-DMA-resume-regression-fix.patch
deleted file mode 100644
index c4ae207..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0023-ARM-S3C24XX-DMA-resume-regression-fix.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 22f75673eb447eb62c1890393fe82728d86aad06 Mon Sep 17 00:00:00 2001
-From: Gusakov Andrey <dron0gus at gmail.com>
-Date: Sat, 3 Mar 2012 07:32:36 +0900
-Subject: [PATCH 23/95] ARM: S3C24XX: DMA resume regression fix
-
-commit e39d40c65dfd8390b50c03482ae9e289b8a8f351 upstream.
-
-s3c2410_dma_suspend suspends channels from 0 to dma_channels.
-s3c2410_dma_resume resumes channels in reverse order. So
-pointer should be decremented instead of being incremented.
-
-Signed-off-by: Gusakov Andrey <dron0gus at gmail.com>
-Reviewed-by: Heiko Stuebner <heiko at sntech.de>
-Signed-off-by: Kukjin Kim <kgene.kim at samsung.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/arm/plat-s3c24xx/dma.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/arch/arm/plat-s3c24xx/dma.c b/arch/arm/plat-s3c24xx/dma.c
-index 53754bc..8a90b6a 100644
---- a/arch/arm/plat-s3c24xx/dma.c
-+++ b/arch/arm/plat-s3c24xx/dma.c
-@@ -1249,7 +1249,7 @@ static void s3c2410_dma_resume(void)
- struct s3c2410_dma_chan *cp = s3c2410_chans + dma_channels - 1;
- int channel;
-
-- for (channel = dma_channels - 1; channel >= 0; cp++, channel--)
-+ for (channel = dma_channels - 1; channel >= 0; cp--, channel--)
- s3c2410_dma_resume_chan(cp);
- }
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0024-Move-Logitech-Harmony-900-from-cdc_ether-to-zaurus.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0024-Move-Logitech-Harmony-900-from-cdc_ether-to-zaurus.patch
deleted file mode 100644
index 9879b89..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0024-Move-Logitech-Harmony-900-from-cdc_ether-to-zaurus.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From c599ccd68990c0e3bacb98cf58815f9063a8792d Mon Sep 17 00:00:00 2001
-From: Scott Talbert <talbert at techie.net>
-Date: Tue, 21 Feb 2012 13:06:00 +0000
-Subject: [PATCH 24/95] Move Logitech Harmony 900 from cdc_ether to zaurus
-
-commit ee932bf9acb2e2c6a309e808000f24856330e3f9 upstream.
-
-In the current kernel implementation, the Logitech Harmony 900 remote
-control is matched to the cdc_ether driver through the generic
-USB_CDC_SUBCLASS_MDLM entry. However, this device appears to be of the
-pseudo-MDLM (Belcarra) type, rather than the standard one. This patch
-blacklists the Harmony 900 from the cdc_ether driver and whitelists it for
-the pseudo-MDLM driver in zaurus.
-
-Signed-off-by: Scott Talbert <talbert at techie.net>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/net/usb/cdc_ether.c | 7 +++++++
- drivers/net/usb/zaurus.c | 7 +++++++
- 2 files changed, 14 insertions(+)
-
-diff --git a/drivers/net/usb/cdc_ether.c b/drivers/net/usb/cdc_ether.c
-index 99ed6eb..4fd4144 100644
---- a/drivers/net/usb/cdc_ether.c
-+++ b/drivers/net/usb/cdc_ether.c
-@@ -570,6 +570,13 @@ static const struct usb_device_id products [] = {
- .driver_info = 0,
- },
-
-+/* Logitech Harmony 900 - uses the pseudo-MDLM (BLAN) driver */
-+{
-+ USB_DEVICE_AND_INTERFACE_INFO(0x046d, 0xc11f, USB_CLASS_COMM,
-+ USB_CDC_SUBCLASS_MDLM, USB_CDC_PROTO_NONE),
-+ .driver_info = 0,
-+},
-+
- /*
- * WHITELIST!!!
- *
-diff --git a/drivers/net/usb/zaurus.c b/drivers/net/usb/zaurus.c
-index 1a2234c..246b3bb 100644
---- a/drivers/net/usb/zaurus.c
-+++ b/drivers/net/usb/zaurus.c
-@@ -349,6 +349,13 @@ static const struct usb_device_id products [] = {
- ZAURUS_MASTER_INTERFACE,
- .driver_info = OLYMPUS_MXL_INFO,
- },
-+
-+/* Logitech Harmony 900 - uses the pseudo-MDLM (BLAN) driver */
-+{
-+ USB_DEVICE_AND_INTERFACE_INFO(0x046d, 0xc11f, USB_CLASS_COMM,
-+ USB_CDC_SUBCLASS_MDLM, USB_CDC_PROTO_NONE),
-+ .driver_info = (unsigned long) &bogus_mdlm_info,
-+},
- { }, // END
- };
- MODULE_DEVICE_TABLE(usb, products);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0025-alpha-fix-32-64-bit-bug-in-futex-support.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0025-alpha-fix-32-64-bit-bug-in-futex-support.patch
deleted file mode 100644
index 8b10b05..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0025-alpha-fix-32-64-bit-bug-in-futex-support.patch
+++ /dev/null
@@ -1,86 +0,0 @@
-From 516cac7f3fdceed580abef7769d3af3150515498 Mon Sep 17 00:00:00 2001
-From: Andrew Morton <akpm at linux-foundation.org>
-Date: Mon, 5 Mar 2012 14:59:19 -0800
-Subject: [PATCH 25/95] alpha: fix 32/64-bit bug in futex support
-
-commit 62aca403657fe30e5235c5331e9871e676d9ea0a upstream.
-
-Michael Cree said:
-
-: : I have noticed some user space problems (pulseaudio crashes in pthread
-: : code, glibc/nptl test suite failures, java compiler freezes on SMP alpha
-: : systems) that arise when using a 2.6.39 or later kernel on Alpha.
-: : Bisecting between 2.6.38 and 2.6.39 (using glibc/nptl test suite as
-: : criterion for good/bad kernel) eventually leads to:
-: :
-: : 8d7718aa082aaf30a0b4989e1f04858952f941bc is the first bad commit
-: : commit 8d7718aa082aaf30a0b4989e1f04858952f941bc
-: : Author: Michel Lespinasse <walken at google.com>
-: : Date: Thu Mar 10 18:50:58 2011 -0800
-: :
-: : futex: Sanitize futex ops argument types
-: :
-: : Change futex_atomic_op_inuser and futex_atomic_cmpxchg_inatomic
-: : prototypes to use u32 types for the futex as this is the data type the
-: : futex core code uses all over the place.
-: :
-: : Looking at the commit I see there is a change of the uaddr argument in
-: : the Alpha architecture specific code for futexes from int to u32, but I
-: : don't see why this should cause a problem.
-
-Richard Henderson said:
-
-: futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr,
-: u32 oldval, u32 newval)
-: ...
-: : "r"(uaddr), "r"((long)oldval), "r"(newval)
-:
-:
-: There is no 32-bit compare instruction. These are implemented by
-: consistently extending the values to a 64-bit type. Since the
-: load instruction sign-extends, we want to sign-extend the other
-: quantity as well (despite the fact it's logically unsigned).
-:
-: So:
-:
-: - : "r"(uaddr), "r"((long)oldval), "r"(newval)
-: + : "r"(uaddr), "r"((long)(int)oldval), "r"(newval)
-:
-: should do the trick.
-
-Michael said:
-
-: This fixes the glibc test suite failures and the pulseaudio related
-: crashes, but it does not fix the java compiiler lockups that I was (and
-: are still) observing. That is some other problem.
-
-Reported-by: Michael Cree <mcree at orcon.net.nz>
-Tested-by: Michael Cree <mcree at orcon.net.nz>
-Acked-by: Phil Carmody <ext-phil.2.carmody at nokia.com>
-Cc: Richard Henderson <rth at twiddle.net>
-Cc: Michel Lespinasse <walken at google.com>
-Cc: Ivan Kokshaysky <ink at jurassic.park.msu.ru>
-Reviewed-by: Matt Turner <mattst88 at gmail.com>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/alpha/include/asm/futex.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/arch/alpha/include/asm/futex.h b/arch/alpha/include/asm/futex.h
-index e8a761a..f939794 100644
---- a/arch/alpha/include/asm/futex.h
-+++ b/arch/alpha/include/asm/futex.h
-@@ -108,7 +108,7 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr,
- " lda $31,3b-2b(%0)\n"
- " .previous\n"
- : "+r"(ret), "=&r"(prev), "=&r"(cmp)
-- : "r"(uaddr), "r"((long)oldval), "r"(newval)
-+ : "r"(uaddr), "r"((long)(int)oldval), "r"(newval)
- : "memory");
-
- *uval = prev;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0026-mmc-atmel-mci-don-t-use-dma-features-when-using-DMA-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0026-mmc-atmel-mci-don-t-use-dma-features-when-using-DMA-.patch
deleted file mode 100644
index e230891..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0026-mmc-atmel-mci-don-t-use-dma-features-when-using-DMA-.patch
+++ /dev/null
@@ -1,88 +0,0 @@
-From 949f9646ccebddaf84ef0a76bf65cbb03d98ca90 Mon Sep 17 00:00:00 2001
-From: Ludovic Desroches <ludovic.desroches at atmel.com>
-Date: Thu, 9 Feb 2012 16:33:53 +0100
-Subject: [PATCH 26/95] mmc: atmel-mci: don't use dma features when using DMA
- with no chan available
-
-commit ef8781989a1bcd05aa47e853917c37df44917194 upstream.
-
-Some callbacks are set too early -- i.e. we can have dma capabilities but
-we can't get a dma channel. So wait to get the dma channel before setting
-callbacks and change logs consequently.
-
-Signed-off-by: Ludovic Desroches <ludovic.desroches at atmel.com>
-Signed-off-by: Nicolas Ferre <nicolas.ferre at atmel.com>
-Signed-off-by: Chris Ball <cjb at laptop.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/mmc/host/atmel-mci.c | 21 ++++++++++-----------
- 1 file changed, 10 insertions(+), 11 deletions(-)
-
-diff --git a/drivers/mmc/host/atmel-mci.c b/drivers/mmc/host/atmel-mci.c
-index 72bc756..9896933 100644
---- a/drivers/mmc/host/atmel-mci.c
-+++ b/drivers/mmc/host/atmel-mci.c
-@@ -1944,12 +1944,12 @@ static bool atmci_filter(struct dma_chan *chan, void *slave)
- }
- }
-
--static void atmci_configure_dma(struct atmel_mci *host)
-+static bool atmci_configure_dma(struct atmel_mci *host)
- {
- struct mci_platform_data *pdata;
-
- if (host == NULL)
-- return;
-+ return false;
-
- pdata = host->pdev->dev.platform_data;
-
-@@ -1966,12 +1966,15 @@ static void atmci_configure_dma(struct atmel_mci *host)
- host->dma.chan =
- dma_request_channel(mask, atmci_filter, pdata->dma_slave);
- }
-- if (!host->dma.chan)
-- dev_notice(&host->pdev->dev, "DMA not available, using PIO\n");
-- else
-+ if (!host->dma.chan) {
-+ dev_warn(&host->pdev->dev, "no DMA channel available\n");
-+ return false;
-+ } else {
- dev_info(&host->pdev->dev,
- "Using %s for DMA transfers\n",
- dma_chan_name(host->dma.chan));
-+ return true;
-+ }
- }
-
- static inline unsigned int atmci_get_version(struct atmel_mci *host)
-@@ -2081,8 +2084,7 @@ static int __init atmci_probe(struct platform_device *pdev)
-
- /* Get MCI capabilities and set operations according to it */
- atmci_get_cap(host);
-- if (host->caps.has_dma) {
-- dev_info(&pdev->dev, "using DMA\n");
-+ if (host->caps.has_dma && atmci_configure_dma(host)) {
- host->prepare_data = &atmci_prepare_data_dma;
- host->submit_data = &atmci_submit_data_dma;
- host->stop_transfer = &atmci_stop_transfer_dma;
-@@ -2092,15 +2094,12 @@ static int __init atmci_probe(struct platform_device *pdev)
- host->submit_data = &atmci_submit_data_pdc;
- host->stop_transfer = &atmci_stop_transfer_pdc;
- } else {
-- dev_info(&pdev->dev, "no DMA, no PDC\n");
-+ dev_info(&pdev->dev, "using PIO\n");
- host->prepare_data = &atmci_prepare_data;
- host->submit_data = &atmci_submit_data;
- host->stop_transfer = &atmci_stop_transfer;
- }
-
-- if (host->caps.has_dma)
-- atmci_configure_dma(host);
--
- platform_set_drvdata(pdev, host);
-
- /* We need at least one slot to succeed */
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0027-mmc-sdhci-esdhc-imx-fix-for-mmc-cards-on-i.MX5.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0027-mmc-sdhci-esdhc-imx-fix-for-mmc-cards-on-i.MX5.patch
deleted file mode 100644
index fd6c088..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0027-mmc-sdhci-esdhc-imx-fix-for-mmc-cards-on-i.MX5.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 4d0452d42bca9bc288709268ea3590e73dddfd03 Mon Sep 17 00:00:00 2001
-From: Sascha Hauer <s.hauer at pengutronix.de>
-Date: Fri, 17 Feb 2012 11:51:49 +0100
-Subject: [PATCH 27/95] mmc: sdhci-esdhc-imx: fix for mmc cards on i.MX5
-
-commit 5b6b0ad6e572b32a641116aaa5f897ffebe31e44 upstream.
-
-On i.MX53 we have to write a special SDHCI_CMD_ABORTCMD to the
-SDHCI_TRANSFER_MODE register during a MMC_STOP_TRANSMISSION
-command. This works for SD cards. However, with MMC cards
-the MMC_SET_BLOCK_COUNT command is used instead, but this
-needs the same handling. Fix MMC cards by testing for the
-MMC_SET_BLOCK_COUNT command aswell. Tested on a custom i.MX53
-board with a Transcend MMC+ card and eMMC.
-
-The kernel started used MMC_SET_BLOCK_COUNT in 3.0, so this
-is a regression for these boards introduced in 3.0; it should
-go to 3.0/3.1/3.2-stable.
-
-Signed-off-by: Sascha Hauer <s.hauer at pengutronix.de>
-Acked-by: Shawn Guo <shawn.guo at linaro.org>
-Signed-off-by: Chris Ball <cjb at laptop.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/mmc/host/sdhci-esdhc-imx.c | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci-esdhc-imx.c
-index 38ebc4e..4540e37 100644
---- a/drivers/mmc/host/sdhci-esdhc-imx.c
-+++ b/drivers/mmc/host/sdhci-esdhc-imx.c
-@@ -269,8 +269,9 @@ static void esdhc_writew_le(struct sdhci_host *host, u16 val, int reg)
- imx_data->scratchpad = val;
- return;
- case SDHCI_COMMAND:
-- if ((host->cmd->opcode == MMC_STOP_TRANSMISSION)
-- && (imx_data->flags & ESDHC_FLAG_MULTIBLK_NO_INT))
-+ if ((host->cmd->opcode == MMC_STOP_TRANSMISSION ||
-+ host->cmd->opcode == MMC_SET_BLOCK_COUNT) &&
-+ (imx_data->flags & ESDHC_FLAG_MULTIBLK_NO_INT))
- val |= SDHCI_CMD_ABORTCMD;
-
- if (is_imx6q_usdhc(imx_data)) {
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0028-aio-wake-up-waiters-when-freeing-unused-kiocbs.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0028-aio-wake-up-waiters-when-freeing-unused-kiocbs.patch
deleted file mode 100644
index 70c27f0..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0028-aio-wake-up-waiters-when-freeing-unused-kiocbs.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-From d5c6cec6d347a96bc73bf84d89dd1cefd9b10aeb Mon Sep 17 00:00:00 2001
-From: Jeff Moyer <jmoyer at redhat.com>
-Date: Mon, 5 Mar 2012 14:59:12 -0800
-Subject: [PATCH 28/95] aio: wake up waiters when freeing unused kiocbs
-
-commit 880641bb9da2473e9ecf6c708d993b29928c1b3c upstream.
-
-Bart Van Assche reported a hung fio process when either hot-removing
-storage or when interrupting the fio process itself. The (pruned) call
-trace for the latter looks like so:
-
- fio D 0000000000000001 0 6849 6848 0x00000004
- ffff880092541b88 0000000000000046 ffff880000000000 ffff88012fa11dc0
- ffff88012404be70 ffff880092541fd8 ffff880092541fd8 ffff880092541fd8
- ffff880128b894d0 ffff88012404be70 ffff880092541b88 000000018106f24d
- Call Trace:
- schedule+0x3f/0x60
- io_schedule+0x8f/0xd0
- wait_for_all_aios+0xc0/0x100
- exit_aio+0x55/0xc0
- mmput+0x2d/0x110
- exit_mm+0x10d/0x130
- do_exit+0x671/0x860
- do_group_exit+0x44/0xb0
- get_signal_to_deliver+0x218/0x5a0
- do_signal+0x65/0x700
- do_notify_resume+0x65/0x80
- int_signal+0x12/0x17
-
-The problem lies with the allocation batching code. It will
-opportunistically allocate kiocbs, and then trim back the list of iocbs
-when there is not enough room in the completion ring to hold all of the
-events.
-
-In the case above, what happens is that the pruning back of events ends
-up freeing up the last active request and the context is marked as dead,
-so it is thus responsible for waking up waiters. Unfortunately, the
-code does not check for this condition, so we end up with a hung task.
-
-Signed-off-by: Jeff Moyer <jmoyer at redhat.com>
-Reported-by: Bart Van Assche <bvanassche at acm.org>
-Tested-by: Bart Van Assche <bvanassche at acm.org>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/aio.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/fs/aio.c b/fs/aio.c
-index 969beb0..67e4b90 100644
---- a/fs/aio.c
-+++ b/fs/aio.c
-@@ -490,6 +490,8 @@ static void kiocb_batch_free(struct kioctx *ctx, struct kiocb_batch *batch)
- kmem_cache_free(kiocb_cachep, req);
- ctx->reqs_active--;
- }
-+ if (unlikely(!ctx->reqs_active && ctx->dead))
-+ wake_up_all(&ctx->wait);
- spin_unlock_irq(&ctx->ctx_lock);
- }
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0029-mm-memcg-Correct-unregistring-of-events-attached-to-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0029-mm-memcg-Correct-unregistring-of-events-attached-to-.patch
deleted file mode 100644
index 546921b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0029-mm-memcg-Correct-unregistring-of-events-attached-to-.patch
+++ /dev/null
@@ -1,74 +0,0 @@
-From a6ad4d12c974035e005e6e4752c462c0f44f4167 Mon Sep 17 00:00:00 2001
-From: Anton Vorontsov <anton.vorontsov at linaro.org>
-Date: Fri, 24 Feb 2012 05:14:46 +0400
-Subject: [PATCH 29/95] mm: memcg: Correct unregistring of events attached to
- the same eventfd
-
-commit 371528caec553785c37f73fa3926ea0de84f986f upstream.
-
-There is an issue when memcg unregisters events that were attached to
-the same eventfd:
-
-- On the first call mem_cgroup_usage_unregister_event() removes all
- events attached to a given eventfd, and if there were no events left,
- thresholds->primary would become NULL;
-
-- Since there were several events registered, cgroups core will call
- mem_cgroup_usage_unregister_event() again, but now kernel will oops,
- as the function doesn't expect that threshold->primary may be NULL.
-
-That's a good question whether mem_cgroup_usage_unregister_event()
-should actually remove all events in one go, but nowadays it can't
-do any better as cftype->unregister_event callback doesn't pass
-any private event-associated cookie. So, let's fix the issue by
-simply checking for threshold->primary.
-
-FWIW, w/o the patch the following oops may be observed:
-
- BUG: unable to handle kernel NULL pointer dereference at 0000000000000004
- IP: [<ffffffff810be32c>] mem_cgroup_usage_unregister_event+0x9c/0x1f0
- Pid: 574, comm: kworker/0:2 Not tainted 3.3.0-rc4+ #9 Bochs Bochs
- RIP: 0010:[<ffffffff810be32c>] [<ffffffff810be32c>] mem_cgroup_usage_unregister_event+0x9c/0x1f0
- RSP: 0018:ffff88001d0b9d60 EFLAGS: 00010246
- Process kworker/0:2 (pid: 574, threadinfo ffff88001d0b8000, task ffff88001de91cc0)
- Call Trace:
- [<ffffffff8107092b>] cgroup_event_remove+0x2b/0x60
- [<ffffffff8103db94>] process_one_work+0x174/0x450
- [<ffffffff8103e413>] worker_thread+0x123/0x2d0
-
-Signed-off-by: Anton Vorontsov <anton.vorontsov at linaro.org>
-Acked-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu at jp.fujitsu.com>
-Cc: Kirill A. Shutemov <kirill at shutemov.name>
-Cc: Michal Hocko <mhocko at suse.cz>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- mm/memcontrol.c | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/mm/memcontrol.c b/mm/memcontrol.c
-index f538e9b..de67e91 100644
---- a/mm/memcontrol.c
-+++ b/mm/memcontrol.c
-@@ -4502,6 +4502,9 @@ static void mem_cgroup_usage_unregister_event(struct cgroup *cgrp,
- */
- BUG_ON(!thresholds);
-
-+ if (!thresholds->primary)
-+ goto unlock;
-+
- usage = mem_cgroup_usage(memcg, type == _MEMSWAP);
-
- /* Check if a threshold crossed before removing */
-@@ -4550,7 +4553,7 @@ swap_buffers:
-
- /* To be sure that nobody uses thresholds */
- synchronize_rcu();
--
-+unlock:
- mutex_unlock(&memcg->thresholds_lock);
- }
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0030-NOMMU-Don-t-need-to-clear-vm_mm-when-deleting-a-VMA.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0030-NOMMU-Don-t-need-to-clear-vm_mm-when-deleting-a-VMA.patch
deleted file mode 100644
index e098a87..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0030-NOMMU-Don-t-need-to-clear-vm_mm-when-deleting-a-VMA.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 4666c2d05388b33883bef7aa13d2e355b3d0a049 Mon Sep 17 00:00:00 2001
-From: David Howells <dhowells at redhat.com>
-Date: Thu, 23 Feb 2012 13:51:00 +0000
-Subject: [PATCH 30/95] NOMMU: Don't need to clear vm_mm when deleting a VMA
-
-commit b94cfaf6685d691dc3fab023cf32f65e9b7be09c upstream.
-
-Don't clear vm_mm in a deleted VMA as it's unnecessary and might
-conceivably break the filesystem or driver VMA close routine.
-
-Reported-by: Al Viro <viro at zeniv.linux.org.uk>
-Signed-off-by: David Howells <dhowells at redhat.com>
-Acked-by: Al Viro <viro at zeniv.linux.org.uk>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- mm/nommu.c | 2 --
- 1 file changed, 2 deletions(-)
-
-diff --git a/mm/nommu.c b/mm/nommu.c
-index ee7e57e..f59e170 100644
---- a/mm/nommu.c
-+++ b/mm/nommu.c
-@@ -779,8 +779,6 @@ static void delete_vma_from_mm(struct vm_area_struct *vma)
-
- if (vma->vm_next)
- vma->vm_next->vm_prev = vma->vm_prev;
--
-- vma->vm_mm = NULL;
- }
-
- /*
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0031-cifs-fix-dentry-refcount-leak-when-opening-a-FIFO-on.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0031-cifs-fix-dentry-refcount-leak-when-opening-a-FIFO-on.patch
deleted file mode 100644
index f84f673..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0031-cifs-fix-dentry-refcount-leak-when-opening-a-FIFO-on.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-From 2e91a5d7bf034e302d797ab8be9a28dad94f31bf Mon Sep 17 00:00:00 2001
-From: Jeff Layton <jlayton at redhat.com>
-Date: Thu, 23 Feb 2012 09:37:45 -0500
-Subject: [PATCH 31/95] cifs: fix dentry refcount leak when opening a FIFO on
- lookup
-
-commit 5bccda0ebc7c0331b81ac47d39e4b920b198b2cd upstream.
-
-The cifs code will attempt to open files on lookup under certain
-circumstances. What happens though if we find that the file we opened
-was actually a FIFO or other special file?
-
-Currently, the open filehandle just ends up being leaked leading to
-a dentry refcount mismatch and oops on umount. Fix this by having the
-code close the filehandle on the server if it turns out not to be a
-regular file. While we're at it, change this spaghetti if statement
-into a switch too.
-
-Reported-by: CAI Qian <caiqian at redhat.com>
-Tested-by: CAI Qian <caiqian at redhat.com>
-Reviewed-by: Shirish Pargaonkar <shirishpargaonkar at gmail.com>
-Signed-off-by: Jeff Layton <jlayton at redhat.com>
-Signed-off-by: Steve French <smfrench at gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/cifs/dir.c | 20 ++++++++++++++++++--
- 1 file changed, 18 insertions(+), 2 deletions(-)
-
-diff --git a/fs/cifs/dir.c b/fs/cifs/dir.c
-index e4c3334..bf68b4f 100644
---- a/fs/cifs/dir.c
-+++ b/fs/cifs/dir.c
-@@ -584,10 +584,26 @@ cifs_lookup(struct inode *parent_dir_inode, struct dentry *direntry,
- * If either that or op not supported returned, follow
- * the normal lookup.
- */
-- if ((rc == 0) || (rc == -ENOENT))
-+ switch (rc) {
-+ case 0:
-+ /*
-+ * The server may allow us to open things like
-+ * FIFOs, but the client isn't set up to deal
-+ * with that. If it's not a regular file, just
-+ * close it and proceed as if it were a normal
-+ * lookup.
-+ */
-+ if (newInode && !S_ISREG(newInode->i_mode)) {
-+ CIFSSMBClose(xid, pTcon, fileHandle);
-+ break;
-+ }
-+ case -ENOENT:
- posix_open = true;
-- else if ((rc == -EINVAL) || (rc != -EOPNOTSUPP))
-+ case -EOPNOTSUPP:
-+ break;
-+ default:
- pTcon->broken_posix_open = true;
-+ }
- }
- if (!posix_open)
- rc = cifs_get_inode_info_unix(&newInode, full_path,
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0032-mac80211-zero-initialize-count-field-in-ieee80211_tx.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0032-mac80211-zero-initialize-count-field-in-ieee80211_tx.patch
deleted file mode 100644
index 9019c96..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0032-mac80211-zero-initialize-count-field-in-ieee80211_tx.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 66fafa03312e3f626b9cc940a4caa5fc28eceb8b Mon Sep 17 00:00:00 2001
-From: Mohammed Shafi Shajakhan <mohammed at qca.qualcomm.com>
-Date: Mon, 20 Feb 2012 10:05:31 +0530
-Subject: [PATCH 32/95] mac80211: zero initialize count field in
- ieee80211_tx_rate
-
-commit 8617b093d0031837a7be9b32bc674580cfb5f6b5 upstream.
-
-rate control algorithms concludes the rate as invalid
-with rate[i].idx < -1 , while they do also check for rate[i].count is
-non-zero. it would be safer to zero initialize the 'count' field.
-recently we had a ath9k rate control crash where the ath9k rate control
-in ath_tx_status assumed to check only for rate[i].count being non-zero
-in one instance and ended up in using invalid rate index for
-'connection monitoring NULL func frames' which eventually lead to the crash.
-thanks to Pavel Roskin for fixing it and finding the root cause.
-https://bugzilla.redhat.com/show_bug.cgi?id=768639
-
-Cc: Pavel Roskin <proski at gnu.org>
-Signed-off-by: Mohammed Shafi Shajakhan <mohammed at qca.qualcomm.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- net/mac80211/rate.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/net/mac80211/rate.c b/net/mac80211/rate.c
-index 5a5a776..7d84b87 100644
---- a/net/mac80211/rate.c
-+++ b/net/mac80211/rate.c
-@@ -344,7 +344,7 @@ void rate_control_get_rate(struct ieee80211_sub_if_data *sdata,
- for (i = 0; i < IEEE80211_TX_MAX_RATES; i++) {
- info->control.rates[i].idx = -1;
- info->control.rates[i].flags = 0;
-- info->control.rates[i].count = 1;
-+ info->control.rates[i].count = 0;
- }
-
- if (sdata->local->hw.flags & IEEE80211_HW_HAS_RATE_CONTROL)
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0033-ath9k_hw-prevent-writes-to-const-data-on-AR9160.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0033-ath9k_hw-prevent-writes-to-const-data-on-AR9160.patch
deleted file mode 100644
index 178c32f..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0033-ath9k_hw-prevent-writes-to-const-data-on-AR9160.patch
+++ /dev/null
@@ -1,119 +0,0 @@
-From 984266254352cc421ea6886589e862c95ab51838 Mon Sep 17 00:00:00 2001
-From: Felix Fietkau <nbd at openwrt.org>
-Date: Wed, 15 Feb 2012 19:31:20 +0100
-Subject: [PATCH 33/95] ath9k_hw: prevent writes to const data on AR9160
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit 9bbb8168ed3d8b946f9c1901a63a675012de88f2 upstream.
-
-Duplicate the data for iniAddac early on, to avoid having to do redundant
-memcpy calls later. While we're at it, make AR5416 < v2.2 use the same
-codepath. Fixes a reported crash on x86.
-
-Signed-off-by: Felix Fietkau <nbd at openwrt.org>
-Reported-by: Magnus Määttä <magnus.maatta at logica.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/net/wireless/ath/ath9k/ar5008_phy.c | 25 +------------------------
- drivers/net/wireless/ath/ath9k/ar9002_hw.c | 19 +++++++++++++++++++
- drivers/net/wireless/ath/ath9k/hw.h | 1 -
- 3 files changed, 20 insertions(+), 25 deletions(-)
-
-diff --git a/drivers/net/wireless/ath/ath9k/ar5008_phy.c b/drivers/net/wireless/ath/ath9k/ar5008_phy.c
-index f199e9e..0a3c7c8 100644
---- a/drivers/net/wireless/ath/ath9k/ar5008_phy.c
-+++ b/drivers/net/wireless/ath/ath9k/ar5008_phy.c
-@@ -489,8 +489,6 @@ static int ar5008_hw_rf_alloc_ext_banks(struct ath_hw *ah)
- ATH_ALLOC_BANK(ah->analogBank6Data, ah->iniBank6.ia_rows);
- ATH_ALLOC_BANK(ah->analogBank6TPCData, ah->iniBank6TPC.ia_rows);
- ATH_ALLOC_BANK(ah->analogBank7Data, ah->iniBank7.ia_rows);
-- ATH_ALLOC_BANK(ah->addac5416_21,
-- ah->iniAddac.ia_rows * ah->iniAddac.ia_columns);
- ATH_ALLOC_BANK(ah->bank6Temp, ah->iniBank6.ia_rows);
-
- return 0;
-@@ -519,7 +517,6 @@ static void ar5008_hw_rf_free_ext_banks(struct ath_hw *ah)
- ATH_FREE_BANK(ah->analogBank6Data);
- ATH_FREE_BANK(ah->analogBank6TPCData);
- ATH_FREE_BANK(ah->analogBank7Data);
-- ATH_FREE_BANK(ah->addac5416_21);
- ATH_FREE_BANK(ah->bank6Temp);
-
- #undef ATH_FREE_BANK
-@@ -805,27 +802,7 @@ static int ar5008_hw_process_ini(struct ath_hw *ah,
- if (ah->eep_ops->set_addac)
- ah->eep_ops->set_addac(ah, chan);
-
-- if (AR_SREV_5416_22_OR_LATER(ah)) {
-- REG_WRITE_ARRAY(&ah->iniAddac, 1, regWrites);
-- } else {
-- struct ar5416IniArray temp;
-- u32 addacSize =
-- sizeof(u32) * ah->iniAddac.ia_rows *
-- ah->iniAddac.ia_columns;
--
-- /* For AR5416 2.0/2.1 */
-- memcpy(ah->addac5416_21,
-- ah->iniAddac.ia_array, addacSize);
--
-- /* override CLKDRV value at [row, column] = [31, 1] */
-- (ah->addac5416_21)[31 * ah->iniAddac.ia_columns + 1] = 0;
--
-- temp.ia_array = ah->addac5416_21;
-- temp.ia_columns = ah->iniAddac.ia_columns;
-- temp.ia_rows = ah->iniAddac.ia_rows;
-- REG_WRITE_ARRAY(&temp, 1, regWrites);
-- }
--
-+ REG_WRITE_ARRAY(&ah->iniAddac, 1, regWrites);
- REG_WRITE(ah, AR_PHY_ADC_SERIAL_CTL, AR_PHY_SEL_INTERNAL_ADDAC);
-
- ENABLE_REGWRITE_BUFFER(ah);
-diff --git a/drivers/net/wireless/ath/ath9k/ar9002_hw.c b/drivers/net/wireless/ath/ath9k/ar9002_hw.c
-index 11f192a..d190411 100644
---- a/drivers/net/wireless/ath/ath9k/ar9002_hw.c
-+++ b/drivers/net/wireless/ath/ath9k/ar9002_hw.c
-@@ -180,6 +180,25 @@ static void ar9002_hw_init_mode_regs(struct ath_hw *ah)
- INIT_INI_ARRAY(&ah->iniAddac, ar5416Addac,
- ARRAY_SIZE(ar5416Addac), 2);
- }
-+
-+ /* iniAddac needs to be modified for these chips */
-+ if (AR_SREV_9160(ah) || !AR_SREV_5416_22_OR_LATER(ah)) {
-+ struct ar5416IniArray *addac = &ah->iniAddac;
-+ u32 size = sizeof(u32) * addac->ia_rows * addac->ia_columns;
-+ u32 *data;
-+
-+ data = kmalloc(size, GFP_KERNEL);
-+ if (!data)
-+ return;
-+
-+ memcpy(data, addac->ia_array, size);
-+ addac->ia_array = data;
-+
-+ if (!AR_SREV_5416_22_OR_LATER(ah)) {
-+ /* override CLKDRV value */
-+ INI_RA(addac, 31,1) = 0;
-+ }
-+ }
- }
-
- /* Support for Japan ch.14 (2484) spread */
-diff --git a/drivers/net/wireless/ath/ath9k/hw.h b/drivers/net/wireless/ath/ath9k/hw.h
-index f389b3c..1bd8edf 100644
---- a/drivers/net/wireless/ath/ath9k/hw.h
-+++ b/drivers/net/wireless/ath/ath9k/hw.h
-@@ -772,7 +772,6 @@ struct ath_hw {
- u32 *analogBank6Data;
- u32 *analogBank6TPCData;
- u32 *analogBank7Data;
-- u32 *addac5416_21;
- u32 *bank6Temp;
-
- u8 txpower_limit;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0034-kprobes-return-proper-error-code-from-register_kprob.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0034-kprobes-return-proper-error-code-from-register_kprob.patch
deleted file mode 100644
index 18d7fcc..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0034-kprobes-return-proper-error-code-from-register_kprob.patch
+++ /dev/null
@@ -1,79 +0,0 @@
-From 17afeea9bb7e9be3ed3b35312fc2d792831e1ace Mon Sep 17 00:00:00 2001
-From: Prashanth Nageshappa <prashanth at linux.vnet.ibm.com>
-Date: Mon, 5 Mar 2012 14:59:12 -0800
-Subject: [PATCH 34/95] kprobes: return proper error code from
- register_kprobe()
-
-commit f986a499ef6f317d906e6f6f281be966e1237a10 upstream.
-
-register_kprobe() aborts if the address of the new request falls in a
-prohibited area (such as ftrace pouch, __kprobes annotated functions,
-non-kernel text addresses, jump label text). We however don't return the
-right error on this abort, resulting in a silent failure - incorrect
-adding/reporting of kprobes ('perf probe do_fork+18' or 'perf probe
-mcount' for instance).
-
-In V2 we are incorporating Masami Hiramatsu's feedback.
-
-This patch fixes it by returning -EINVAL upon failure.
-
-While we are here, rename the label used for exit to be more appropriate.
-
-Signed-off-by: Ananth N Mavinakayanahalli <ananth at in.ibm.com>
-Signed-off-by: Prashanth K Nageshappa <prashanth at linux.vnet.ibm.com>
-Acked-by: Masami Hiramatsu <masami.hiramatsu.pt at hitachi.com>
-Cc: Jason Baron <jbaron at redhat.com>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- kernel/kprobes.c | 12 +++++++-----
- 1 file changed, 7 insertions(+), 5 deletions(-)
-
-diff --git a/kernel/kprobes.c b/kernel/kprobes.c
-index faa39d1..bc90b87 100644
---- a/kernel/kprobes.c
-+++ b/kernel/kprobes.c
-@@ -1334,8 +1334,10 @@ int __kprobes register_kprobe(struct kprobe *p)
- if (!kernel_text_address((unsigned long) p->addr) ||
- in_kprobes_functions((unsigned long) p->addr) ||
- ftrace_text_reserved(p->addr, p->addr) ||
-- jump_label_text_reserved(p->addr, p->addr))
-- goto fail_with_jump_label;
-+ jump_label_text_reserved(p->addr, p->addr)) {
-+ ret = -EINVAL;
-+ goto cannot_probe;
-+ }
-
- /* User can pass only KPROBE_FLAG_DISABLED to register_kprobe */
- p->flags &= KPROBE_FLAG_DISABLED;
-@@ -1352,7 +1354,7 @@ int __kprobes register_kprobe(struct kprobe *p)
- * its code to prohibit unexpected unloading.
- */
- if (unlikely(!try_module_get(probed_mod)))
-- goto fail_with_jump_label;
-+ goto cannot_probe;
-
- /*
- * If the module freed .init.text, we couldn't insert
-@@ -1361,7 +1363,7 @@ int __kprobes register_kprobe(struct kprobe *p)
- if (within_module_init((unsigned long)p->addr, probed_mod) &&
- probed_mod->state != MODULE_STATE_COMING) {
- module_put(probed_mod);
-- goto fail_with_jump_label;
-+ goto cannot_probe;
- }
- /* ret will be updated by following code */
- }
-@@ -1409,7 +1411,7 @@ out:
-
- return ret;
-
--fail_with_jump_label:
-+cannot_probe:
- preempt_enable();
- jump_label_unlock();
- return ret;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0035-mm-thp-fix-BUG-on-mm-nr_ptes.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0035-mm-thp-fix-BUG-on-mm-nr_ptes.patch
deleted file mode 100644
index 3a5ca20..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0035-mm-thp-fix-BUG-on-mm-nr_ptes.patch
+++ /dev/null
@@ -1,99 +0,0 @@
-From 826878fadc80bdcaec6d80e4ec0a2761c46e2c00 Mon Sep 17 00:00:00 2001
-From: Andrea Arcangeli <aarcange at redhat.com>
-Date: Mon, 5 Mar 2012 14:59:20 -0800
-Subject: [PATCH 35/95] mm: thp: fix BUG on mm->nr_ptes
-
-commit 1c641e84719429bbfe62a95ed3545ee7fe24408f upstream.
-
-Dave Jones reports a few Fedora users hitting the BUG_ON(mm->nr_ptes...)
-in exit_mmap() recently.
-
-Quoting Hugh's discovery and explanation of the SMP race condition:
-
- "mm->nr_ptes had unusual locking: down_read mmap_sem plus
- page_table_lock when incrementing, down_write mmap_sem (or mm_users
- 0) when decrementing; whereas THP is careful to increment and
- decrement it under page_table_lock.
-
- Now most of those paths in THP also hold mmap_sem for read or write
- (with appropriate checks on mm_users), but two do not: when
- split_huge_page() is called by hwpoison_user_mappings(), and when
- called by add_to_swap().
-
- It's conceivable that the latter case is responsible for the
- exit_mmap() BUG_ON mm->nr_ptes that has been reported on Fedora."
-
-The simplest way to fix it without having to alter the locking is to make
-split_huge_page() a noop in nr_ptes terms, so by counting the preallocated
-pagetables that exists for every mapped hugepage. It was an arbitrary
-choice not to count them and either way is not wrong or right, because
-they are not used but they're still allocated.
-
-Reported-by: Dave Jones <davej at redhat.com>
-Reported-by: Hugh Dickins <hughd at google.com>
-Signed-off-by: Andrea Arcangeli <aarcange at redhat.com>
-Acked-by: Hugh Dickins <hughd at google.com>
-Cc: David Rientjes <rientjes at google.com>
-Cc: Josh Boyer <jwboyer at redhat.com>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- mm/huge_memory.c | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/mm/huge_memory.c b/mm/huge_memory.c
-index 33141f5..8f005e9 100644
---- a/mm/huge_memory.c
-+++ b/mm/huge_memory.c
-@@ -642,6 +642,7 @@ static int __do_huge_pmd_anonymous_page(struct mm_struct *mm,
- set_pmd_at(mm, haddr, pmd, entry);
- prepare_pmd_huge_pte(pgtable, mm);
- add_mm_counter(mm, MM_ANONPAGES, HPAGE_PMD_NR);
-+ mm->nr_ptes++;
- spin_unlock(&mm->page_table_lock);
- }
-
-@@ -760,6 +761,7 @@ int copy_huge_pmd(struct mm_struct *dst_mm, struct mm_struct *src_mm,
- pmd = pmd_mkold(pmd_wrprotect(pmd));
- set_pmd_at(dst_mm, addr, dst_pmd, pmd);
- prepare_pmd_huge_pte(pgtable, dst_mm);
-+ dst_mm->nr_ptes++;
-
- ret = 0;
- out_unlock:
-@@ -858,7 +860,6 @@ static int do_huge_pmd_wp_page_fallback(struct mm_struct *mm,
- }
- kfree(pages);
-
-- mm->nr_ptes++;
- smp_wmb(); /* make pte visible before pmd */
- pmd_populate(mm, pmd, pgtable);
- page_remove_rmap(page);
-@@ -1017,6 +1018,7 @@ int zap_huge_pmd(struct mmu_gather *tlb, struct vm_area_struct *vma,
- VM_BUG_ON(page_mapcount(page) < 0);
- add_mm_counter(tlb->mm, MM_ANONPAGES, -HPAGE_PMD_NR);
- VM_BUG_ON(!PageHead(page));
-+ tlb->mm->nr_ptes--;
- spin_unlock(&tlb->mm->page_table_lock);
- tlb_remove_page(tlb, page);
- pte_free(tlb->mm, pgtable);
-@@ -1356,7 +1358,6 @@ static int __split_huge_page_map(struct page *page,
- pte_unmap(pte);
- }
-
-- mm->nr_ptes++;
- smp_wmb(); /* make pte visible before pmd */
- /*
- * Up to this point the pmd is present and huge and
-@@ -1969,7 +1970,6 @@ static void collapse_huge_page(struct mm_struct *mm,
- set_pmd_at(mm, address, pmd, _pmd);
- update_mmu_cache(vma, address, _pmd);
- prepare_pmd_huge_pte(pgtable, mm);
-- mm->nr_ptes--;
- spin_unlock(&mm->page_table_lock);
-
- #ifndef CONFIG_NUMA
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0036-iwlwifi-fix-key-removal.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0036-iwlwifi-fix-key-removal.patch
deleted file mode 100644
index b08e9c0..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0036-iwlwifi-fix-key-removal.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From 60fea88fe522a88f80a809d0f7ced80b93af58b7 Mon Sep 17 00:00:00 2001
-From: Johannes Berg <johannes.berg at intel.com>
-Date: Fri, 17 Feb 2012 09:47:14 -0800
-Subject: [PATCH 36/95] iwlwifi: fix key removal
-
-commit 5dcbf480473f6c3f06ad2426b7517038a2a18911 upstream.
-
-When trying to remove a key, we always send key
-flags just setting the key type, not including
-the multicast flag and the key ID. As a result,
-whenever any key was removed, the unicast key 0
-would be removed, causing a complete connection
-loss after the second rekey (the first doesn't
-cause a key removal). Fix the key removal code
-to include the key ID and multicast flag, thus
-removing the correct key.
-
-Reported-by: Alexander Schnaidt <alex.schnaidt at googlemail.com>
-Tested-by: Alexander Schnaidt <alex.schnaidt at googlemail.com>
-Signed-off-by: Johannes Berg <johannes.berg at intel.com>
-Signed-off-by: Wey-Yi Guy <wey-yi.w.guy at intel.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/net/wireless/iwlwifi/iwl-agn-sta.c | 10 +++++++++-
- 1 file changed, 9 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-sta.c b/drivers/net/wireless/iwlwifi/iwl-agn-sta.c
-index 4b2aa1d..5cfb3d1 100644
---- a/drivers/net/wireless/iwlwifi/iwl-agn-sta.c
-+++ b/drivers/net/wireless/iwlwifi/iwl-agn-sta.c
-@@ -1211,6 +1211,7 @@ int iwl_remove_dynamic_key(struct iwl_priv *priv,
- unsigned long flags;
- struct iwl_addsta_cmd sta_cmd;
- u8 sta_id = iwlagn_key_sta_id(priv, ctx->vif, sta);
-+ __le16 key_flags;
-
- /* if station isn't there, neither is the key */
- if (sta_id == IWL_INVALID_STATION)
-@@ -1236,7 +1237,14 @@ int iwl_remove_dynamic_key(struct iwl_priv *priv,
- IWL_ERR(priv, "offset %d not used in uCode key table.\n",
- keyconf->hw_key_idx);
-
-- sta_cmd.key.key_flags = STA_KEY_FLG_NO_ENC | STA_KEY_FLG_INVALID;
-+ key_flags = cpu_to_le16(keyconf->keyidx << STA_KEY_FLG_KEYID_POS);
-+ key_flags |= STA_KEY_FLG_MAP_KEY_MSK | STA_KEY_FLG_NO_ENC |
-+ STA_KEY_FLG_INVALID;
-+
-+ if (!(keyconf->flags & IEEE80211_KEY_FLAG_PAIRWISE))
-+ key_flags |= STA_KEY_MULTICAST_MSK;
-+
-+ sta_cmd.key.key_flags = key_flags;
- sta_cmd.key.key_offset = WEP_INVALID_OFFSET;
- sta_cmd.sta.modify_mask = STA_MODIFY_KEY_MASK;
- sta_cmd.mode = STA_CONTROL_MODIFY_MSK;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0037-tty-powerpc-early-udbg-consoles-can-t-be-modules.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0037-tty-powerpc-early-udbg-consoles-can-t-be-modules.patch
deleted file mode 100644
index e23d485..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0037-tty-powerpc-early-udbg-consoles-can-t-be-modules.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 40e15ade2a5ffd011659096db4413e8c40408aa3 Mon Sep 17 00:00:00 2001
-From: Stephen Rothwell <sfr at canb.auug.org.au>
-Date: Mon, 20 Feb 2012 07:22:38 +1100
-Subject: [PATCH 37/95] tty/powerpc: early udbg consoles can't be modules
-
-commit f21c6d4a49179f91fd70a41382382f08c780d425 upstream.
-
-Fixes these build errors:
-
-ERROR: ".udbg_printf" [drivers/tty/ehv_bytechan.ko] undefined!
-ERROR: ".register_early_udbg_console" [drivers/tty/ehv_bytechan.ko] undefined!
-ERROR: "udbg_putc" [drivers/tty/ehv_bytechan.ko] undefined!
-
-Cc: Timur Tabi <timur at freescale.com>
-Signed-off-by: Stephen Rothwell <sfr at canb.auug.org.au>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/tty/Kconfig | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/tty/Kconfig b/drivers/tty/Kconfig
-index b3d1741..830cd62 100644
---- a/drivers/tty/Kconfig
-+++ b/drivers/tty/Kconfig
-@@ -365,7 +365,7 @@ config PPC_EPAPR_HV_BYTECHAN
-
- config PPC_EARLY_DEBUG_EHV_BC
- bool "Early console (udbg) support for ePAPR hypervisors"
-- depends on PPC_EPAPR_HV_BYTECHAN
-+ depends on PPC_EPAPR_HV_BYTECHAN=y
- help
- Select this option to enable early console (a.k.a. "udbg") support
- via an ePAPR byte channel. You also need to choose the byte channel
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0038-S390-qdio-fix-handler-function-arguments-for-zfcp-da.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0038-S390-qdio-fix-handler-function-arguments-for-zfcp-da.patch
deleted file mode 100644
index 785c898..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0038-S390-qdio-fix-handler-function-arguments-for-zfcp-da.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From 0fe4a197fe13b8817fbe93fa72571bbdc6d2bcbf Mon Sep 17 00:00:00 2001
-From: Steffen Maier <maier at linux.vnet.ibm.com>
-Date: Fri, 2 Mar 2012 17:32:58 +0100
-Subject: [PATCH 38/95] S390: qdio: fix handler function arguments for zfcp
- data router
-
-commit 7b3cc67d4445995a025a4b55a7dc687b6829b4ca upstream.
-
-Git commit 25f269f17316549e "[S390] qdio: EQBS retry after CCQ 96"
-introduced a regression in regard to the zfcp data router.
-Revoke the incorrect simplification of the function call arguments
-for the qdio handler to make the zfcp hardware data router working
-again.
-
-This is applicable to 3.2+ kernels.
-
-Signed-off-by: Steffen Maier <maier at linux.vnet.ibm.com>
-Reviewed-by: Jan Glauber <jang at linux.vnet.ibm.com>
-Signed-off-by: Martin Schwidefsky <schwidefsky at de.ibm.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/s390/cio/qdio_main.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/s390/cio/qdio_main.c b/drivers/s390/cio/qdio_main.c
-index 3ef8d07..770a740 100644
---- a/drivers/s390/cio/qdio_main.c
-+++ b/drivers/s390/cio/qdio_main.c
-@@ -167,7 +167,7 @@ again:
- DBF_ERROR("%4x EQBS ERROR", SCH_NO(q));
- DBF_ERROR("%3d%3d%2d", count, tmp_count, nr);
- q->handler(q->irq_ptr->cdev, QDIO_ERROR_ACTIVATE_CHECK_CONDITION,
-- 0, -1, -1, q->irq_ptr->int_parm);
-+ q->nr, q->first_to_kick, count, q->irq_ptr->int_parm);
- return 0;
- }
-
-@@ -215,7 +215,7 @@ again:
- DBF_ERROR("%4x SQBS ERROR", SCH_NO(q));
- DBF_ERROR("%3d%3d%2d", count, tmp_count, nr);
- q->handler(q->irq_ptr->cdev, QDIO_ERROR_ACTIVATE_CHECK_CONDITION,
-- 0, -1, -1, q->irq_ptr->int_parm);
-+ q->nr, q->first_to_kick, count, q->irq_ptr->int_parm);
- return 0;
- }
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0039-rapidio-tsi721-fix-queue-wrapping-bug-in-inbound-doo.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0039-rapidio-tsi721-fix-queue-wrapping-bug-in-inbound-doo.patch
deleted file mode 100644
index d015e84..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0039-rapidio-tsi721-fix-queue-wrapping-bug-in-inbound-doo.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From 24333d235443f7969b0344417be788281c96237d Mon Sep 17 00:00:00 2001
-From: Alexandre Bounine <alexandre.bounine at idt.com>
-Date: Mon, 5 Mar 2012 14:59:21 -0800
-Subject: [PATCH 39/95] rapidio/tsi721: fix queue wrapping bug in inbound
- doorbell handler
-
-commit b24823e61bfd93d0e72088e4f5245287582ed289 upstream.
-
-Fix a bug that causes a kernel panic when the number of received doorbells
-is larger than number of entries in the inbound doorbell queue (current
-default value = 512).
-
-Another possible indication for this bug is large number of spurious
-doorbells reported by tsi721 driver after reaching the queue size maximum.
-
-Signed-off-by: Alexandre Bounine <alexandre.bounine at idt.com>
-Cc: Chul Kim <chul.kim at idt.com>
-Cc: Matt Porter <mporter at kernel.crashing.org>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/rapidio/devices/tsi721.c | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/rapidio/devices/tsi721.c b/drivers/rapidio/devices/tsi721.c
-index 691b1ab..30d2072 100644
---- a/drivers/rapidio/devices/tsi721.c
-+++ b/drivers/rapidio/devices/tsi721.c
-@@ -410,13 +410,14 @@ static void tsi721_db_dpc(struct work_struct *work)
- */
- mport = priv->mport;
-
-- wr_ptr = ioread32(priv->regs + TSI721_IDQ_WP(IDB_QUEUE));
-- rd_ptr = ioread32(priv->regs + TSI721_IDQ_RP(IDB_QUEUE));
-+ wr_ptr = ioread32(priv->regs + TSI721_IDQ_WP(IDB_QUEUE)) % IDB_QSIZE;
-+ rd_ptr = ioread32(priv->regs + TSI721_IDQ_RP(IDB_QUEUE)) % IDB_QSIZE;
-
- while (wr_ptr != rd_ptr) {
- idb_entry = (u64 *)(priv->idb_base +
- (TSI721_IDB_ENTRY_SIZE * rd_ptr));
- rd_ptr++;
-+ rd_ptr %= IDB_QSIZE;
- idb.msg = *idb_entry;
- *idb_entry = 0;
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0040-HID-usbhid-Add-NOGET-quirk-for-the-AIREN-Slim-keyboa.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0040-HID-usbhid-Add-NOGET-quirk-for-the-AIREN-Slim-keyboa.patch
deleted file mode 100644
index 6b61e74..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0040-HID-usbhid-Add-NOGET-quirk-for-the-AIREN-Slim-keyboa.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From ee3b012021766b0bc9af47e8ac0e5fd22efdfd86 Mon Sep 17 00:00:00 2001
-From: Alan Stern <stern at rowland.harvard.edu>
-Date: Mon, 27 Feb 2012 11:23:45 -0500
-Subject: [PATCH 40/95] HID: usbhid: Add NOGET quirk for the AIREN Slim+
- keyboard
-
-commit 37891abc8464637964a26ae4b61d307fef831f80 upstream.
-
-This patch (as1531) adds a NOGET quirk for the Slim+ keyboard marketed
-by AIREN. This keyboard seems to have a lot of bugs; NOGET works
-around only one of them.
-
-Signed-off-by: Alan Stern <stern at rowland.harvard.edu>
-Reported-by: okias <d.okias at gmail.com>
-Signed-off-by: Jiri Kosina <jkosina at suse.cz>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/hid/hid-ids.h | 3 +++
- drivers/hid/usbhid/hid-quirks.c | 1 +
- 2 files changed, 4 insertions(+)
-
-diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
-index 00cabb3..3c3daec 100644
---- a/drivers/hid/hid-ids.h
-+++ b/drivers/hid/hid-ids.h
-@@ -59,6 +59,9 @@
- #define USB_VENDOR_ID_AIRCABLE 0x16CA
- #define USB_DEVICE_ID_AIRCABLE1 0x1502
-
-+#define USB_VENDOR_ID_AIREN 0x1a2c
-+#define USB_DEVICE_ID_AIREN_SLIMPLUS 0x0002
-+
- #define USB_VENDOR_ID_ALCOR 0x058f
- #define USB_DEVICE_ID_ALCOR_USBRS232 0x9720
-
-diff --git a/drivers/hid/usbhid/hid-quirks.c b/drivers/hid/usbhid/hid-quirks.c
-index 5028d60..1fe6b80 100644
---- a/drivers/hid/usbhid/hid-quirks.c
-+++ b/drivers/hid/usbhid/hid-quirks.c
-@@ -53,6 +53,7 @@ static const struct hid_blacklist {
- { USB_VENDOR_ID_PLAYDOTCOM, USB_DEVICE_ID_PLAYDOTCOM_EMS_USBII, HID_QUIRK_MULTI_INPUT },
- { USB_VENDOR_ID_TOUCHPACK, USB_DEVICE_ID_TOUCHPACK_RTS, HID_QUIRK_MULTI_INPUT },
-
-+ { USB_VENDOR_ID_AIREN, USB_DEVICE_ID_AIREN_SLIMPLUS, HID_QUIRK_NOGET },
- { USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_UC100KM, HID_QUIRK_NOGET },
- { USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_CS124U, HID_QUIRK_NOGET },
- { USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_2PORTKVM, HID_QUIRK_NOGET },
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0041-crypto-mv_cesa-fix-final-callback-not-ignoring-input.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0041-crypto-mv_cesa-fix-final-callback-not-ignoring-input.patch
deleted file mode 100644
index 89ec447..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0041-crypto-mv_cesa-fix-final-callback-not-ignoring-input.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 8083680a77c1a483d05981bc87bd7af929d61e1c Mon Sep 17 00:00:00 2001
-From: Phil Sutter <phil.sutter at viprinet.com>
-Date: Mon, 27 Feb 2012 12:17:04 +0100
-Subject: [PATCH 41/95] crypto: mv_cesa - fix final callback not ignoring
- input data
-
-commit f8f54e190ddb4ed697036b60f5e2ae6dd45b801c upstream.
-
-Broken by commit 6ef84509f3d439ed2d43ea40080643efec37f54f for users
-passing a request with non-zero 'nbytes' field, like e.g. testmgr.
-
-Signed-off-by: Phil Sutter <phil.sutter at viprinet.com>
-Signed-off-by: Herbert Xu <herbert at gondor.apana.org.au>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/crypto/mv_cesa.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/crypto/mv_cesa.c b/drivers/crypto/mv_cesa.c
-index dcd8bab..fe79635 100644
---- a/drivers/crypto/mv_cesa.c
-+++ b/drivers/crypto/mv_cesa.c
-@@ -714,6 +714,7 @@ static int mv_hash_final(struct ahash_request *req)
- {
- struct mv_req_hash_ctx *ctx = ahash_request_ctx(req);
-
-+ ahash_request_set_crypt(req, NULL, req->result, 0);
- mv_update_hash_req_ctx(ctx, 1, 0);
- return mv_handle_req(&req->base);
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0042-osd_uld-Bump-MAX_OSD_DEVICES-from-64-to-1-048-576.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0042-osd_uld-Bump-MAX_OSD_DEVICES-from-64-to-1-048-576.patch
deleted file mode 100644
index c709413..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0042-osd_uld-Bump-MAX_OSD_DEVICES-from-64-to-1-048-576.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From 7f3be420ce32352ea342f204edc4d3eda0822fa5 Mon Sep 17 00:00:00 2001
-From: Boaz Harrosh <bharrosh at panasas.com>
-Date: Wed, 25 Jan 2012 21:42:58 +0200
-Subject: [PATCH 42/95] osd_uld: Bump MAX_OSD_DEVICES from 64 to 1,048,576
-
-commit 41f8ad76362e7aefe3a03949c43e23102dae6e0b upstream.
-
-It used to be that minors where 8 bit. But now they
-are actually 20 bit. So the fix is simplicity itself.
-
-I've tested with 300 devices and all user-mode utils
-work just fine. I have also mechanically added 10,000
-to the ida (so devices are /dev/osd10000, /dev/osd10001 ...)
-and was able to mkfs an exofs filesystem and access osds
-from user-mode.
-
-All the open-osd user-mode code uses the same library
-to access devices through their symbolic names in
-/dev/osdX so I'd say it's pretty safe. (Well tested)
-
-This patch is very important because some of the systems
-that will be deploying the 3.2 pnfs-objects code are larger
-than 64 OSDs and will stop to work properly when reaching
-that number.
-
-Signed-off-by: Boaz Harrosh <bharrosh at panasas.com>
-Signed-off-by: James Bottomley <JBottomley at Parallels.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/scsi/osd/osd_uld.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/scsi/osd/osd_uld.c b/drivers/scsi/osd/osd_uld.c
-index b31a8e3..d4ed9eb 100644
---- a/drivers/scsi/osd/osd_uld.c
-+++ b/drivers/scsi/osd/osd_uld.c
-@@ -69,10 +69,10 @@
- #ifndef SCSI_OSD_MAJOR
- # define SCSI_OSD_MAJOR 260
- #endif
--#define SCSI_OSD_MAX_MINOR 64
-+#define SCSI_OSD_MAX_MINOR MINORMASK
-
- static const char osd_name[] = "osd";
--static const char *osd_version_string = "open-osd 0.2.0";
-+static const char *osd_version_string = "open-osd 0.2.1";
-
- MODULE_AUTHOR("Boaz Harrosh <bharrosh at panasas.com>");
- MODULE_DESCRIPTION("open-osd Upper-Layer-Driver osd.ko");
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0043-viafb-select-HW-scaling-on-VX900-for-IGA2.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0043-viafb-select-HW-scaling-on-VX900-for-IGA2.patch
deleted file mode 100644
index b6d44b6..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0043-viafb-select-HW-scaling-on-VX900-for-IGA2.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From ebfef6ff13504f601e3aa56f9732474f3c956e60 Mon Sep 17 00:00:00 2001
-From: Florian Tobias Schandinat <FlorianSchandinat at gmx.de>
-Date: Wed, 22 Feb 2012 18:53:07 +0000
-Subject: [PATCH 43/95] viafb: select HW scaling on VX900 for IGA2
-
-commit 050f0e02c8dc38b2b4f2df345ac760d22ca5c7ba upstream.
-
-VX900 can do hardware scaling for both IGAs in contrast to previous
-hardware which could do it only for IGA2. This patch ensures that
-we set the parameter for IGA2 and not for IGA1. This fixes hardware
-scaling on VX900 until we have the infrastructure to support it for
-both IGAs.
-
-Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat at gmx.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/video/via/hw.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/video/via/hw.c b/drivers/video/via/hw.c
-index d5aaca9..8bdf80e 100644
---- a/drivers/video/via/hw.c
-+++ b/drivers/video/via/hw.c
-@@ -1811,6 +1811,7 @@ static void hw_init(void)
- }
-
- /* probably this should go to the scaling code one day */
-+ via_write_reg_mask(VIACR, 0xFD, 0, 0x80); /* VX900 hw scale on IGA2 */
- viafb_write_regx(scaling_parameters, ARRAY_SIZE(scaling_parameters));
-
- /* Fill VPIT Parameters */
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0044-viafb-fix-IGA1-modesetting-on-VX900.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0044-viafb-fix-IGA1-modesetting-on-VX900.patch
deleted file mode 100644
index f80d3d1..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0044-viafb-fix-IGA1-modesetting-on-VX900.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 9f9317159fdafe3d7fc64cf41f299c71c064db83 Mon Sep 17 00:00:00 2001
-From: Florian Tobias Schandinat <FlorianSchandinat at gmx.de>
-Date: Wed, 22 Feb 2012 18:53:08 +0000
-Subject: [PATCH 44/95] viafb: fix IGA1 modesetting on VX900
-
-commit e29206381a1436e0f47c0f5b9a23159a03c57715 upstream.
-
-Even if the documentation calls this bit "Reserved" it has to be set
-to 0 for correct modesetting on IGA1.
-
-Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat at gmx.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/video/via/hw.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/drivers/video/via/hw.c b/drivers/video/via/hw.c
-index 8bdf80e..8497727 100644
---- a/drivers/video/via/hw.c
-+++ b/drivers/video/via/hw.c
-@@ -1810,6 +1810,9 @@ static void hw_init(void)
- break;
- }
-
-+ /* magic required on VX900 for correct modesetting on IGA1 */
-+ via_write_reg_mask(VIACR, 0x45, 0x00, 0x01);
-+
- /* probably this should go to the scaling code one day */
- via_write_reg_mask(VIACR, 0xFD, 0, 0x80); /* VX900 hw scale on IGA2 */
- viafb_write_regx(scaling_parameters, ARRAY_SIZE(scaling_parameters));
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0045-ASoC-dapm-Check-for-bias-level-when-powering-down.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0045-ASoC-dapm-Check-for-bias-level-when-powering-down.patch
deleted file mode 100644
index 07d84c3..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0045-ASoC-dapm-Check-for-bias-level-when-powering-down.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From 2a2a58328a4241c30b0464b700899e7ba93a10a1 Mon Sep 17 00:00:00 2001
-From: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Date: Wed, 22 Feb 2012 15:52:56 +0000
-Subject: [PATCH 45/95] ASoC: dapm: Check for bias level when powering down
-
-commit 7679e42ec833ed70aa34790a5f39dcb7e5bda4fe upstream.
-
-Recent enhancements in the bias management means that we might not be
-in standby when the CODEC is idle and can have active widgets without
-being in full power mode but the shutdown functionality assumes these
-things. Add checks for the bias level at each stage so that we don't
-do transitions other than the ON->PREPARE->STANDBY->OFF ones that the
-drivers are expecting.
-
-Signed-off-by: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- sound/soc/soc-dapm.c | 12 +++++++++---
- 1 file changed, 9 insertions(+), 3 deletions(-)
-
-diff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c
-index f42e8b9..ea909c5 100644
---- a/sound/soc/soc-dapm.c
-+++ b/sound/soc/soc-dapm.c
-@@ -2982,9 +2982,13 @@ static void soc_dapm_shutdown_codec(struct snd_soc_dapm_context *dapm)
- * standby.
- */
- if (powerdown) {
-- snd_soc_dapm_set_bias_level(dapm, SND_SOC_BIAS_PREPARE);
-+ if (dapm->bias_level == SND_SOC_BIAS_ON)
-+ snd_soc_dapm_set_bias_level(dapm,
-+ SND_SOC_BIAS_PREPARE);
- dapm_seq_run(dapm, &down_list, 0, false);
-- snd_soc_dapm_set_bias_level(dapm, SND_SOC_BIAS_STANDBY);
-+ if (dapm->bias_level == SND_SOC_BIAS_PREPARE)
-+ snd_soc_dapm_set_bias_level(dapm,
-+ SND_SOC_BIAS_STANDBY);
- }
- }
-
-@@ -2997,7 +3001,9 @@ void snd_soc_dapm_shutdown(struct snd_soc_card *card)
-
- list_for_each_entry(codec, &card->codec_dev_list, list) {
- soc_dapm_shutdown_codec(&codec->dapm);
-- snd_soc_dapm_set_bias_level(&codec->dapm, SND_SOC_BIAS_OFF);
-+ if (codec->dapm.bias_level == SND_SOC_BIAS_STANDBY)
-+ snd_soc_dapm_set_bias_level(&codec->dapm,
-+ SND_SOC_BIAS_OFF);
- }
- }
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0046-ASoC-i.MX-SSI-Fix-DSP_A-format.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0046-ASoC-i.MX-SSI-Fix-DSP_A-format.patch
deleted file mode 100644
index 7eb6917..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0046-ASoC-i.MX-SSI-Fix-DSP_A-format.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 96baece54aefb7eb3a287d16dfd1531785293cb8 Mon Sep 17 00:00:00 2001
-From: Javier Martin <javier.martin at vista-silicon.com>
-Date: Thu, 23 Feb 2012 15:43:18 +0100
-Subject: [PATCH 46/95] ASoC: i.MX SSI: Fix DSP_A format.
-
-commit 5ed80a75b248bfaf840ea6b38f941edcf6ee7dc7 upstream.
-
-According to i.MX27 Reference Manual (p 1593) TXBIT0 bit selects
-whether the most significant or the less significant part of the
-data word written to the FIFO is transmitted.
-
-As DSP_A is the same as DSP_B with a data offset of 1 bit, it
-doesn't make any sense to remove TXBIT0 bit here.
-
-Signed-off-by: Javier Martin <javier.martin at vista-silicon.com>
-Acked-by: Sascha Hauer <s.hauer at pengutronix.de>
-Signed-off-by: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- sound/soc/imx/imx-ssi.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/sound/soc/imx/imx-ssi.c b/sound/soc/imx/imx-ssi.c
-index 4c05e2b..971eaf0 100644
---- a/sound/soc/imx/imx-ssi.c
-+++ b/sound/soc/imx/imx-ssi.c
-@@ -112,7 +112,7 @@ static int imx_ssi_set_dai_fmt(struct snd_soc_dai *cpu_dai, unsigned int fmt)
- break;
- case SND_SOC_DAIFMT_DSP_A:
- /* data on rising edge of bclk, frame high 1clk before data */
-- strcr |= SSI_STCR_TFSL | SSI_STCR_TEFS;
-+ strcr |= SSI_STCR_TFSL | SSI_STCR_TXBIT0 | SSI_STCR_TEFS;
- break;
- }
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0047-bsg-fix-sysfs-link-remove-warning.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0047-bsg-fix-sysfs-link-remove-warning.patch
deleted file mode 100644
index fbb6e9c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0047-bsg-fix-sysfs-link-remove-warning.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From 5edb7ce56b7a8c2332fdce83ddbb208aba2ea484 Mon Sep 17 00:00:00 2001
-From: Stanislaw Gruszka <sgruszka at redhat.com>
-Date: Wed, 8 Feb 2012 20:02:03 +0100
-Subject: [PATCH 47/95] bsg: fix sysfs link remove warning
-
-commit 37b40adf2d1b4a5e51323be73ccf8ddcf3f15dd3 upstream.
-
-We create "bsg" link if q->kobj.sd is not NULL, so remove it only
-when the same condition is true.
-
-Fixes:
-
-WARNING: at fs/sysfs/inode.c:323 sysfs_hash_and_remove+0x2b/0x77()
-sysfs: can not remove 'bsg', no directory
-Call Trace:
- [<c0429683>] warn_slowpath_common+0x6a/0x7f
- [<c0537a68>] ? sysfs_hash_and_remove+0x2b/0x77
- [<c042970b>] warn_slowpath_fmt+0x2b/0x2f
- [<c0537a68>] sysfs_hash_and_remove+0x2b/0x77
- [<c053969a>] sysfs_remove_link+0x20/0x23
- [<c05d88f1>] bsg_unregister_queue+0x40/0x6d
- [<c0692263>] __scsi_remove_device+0x31/0x9d
- [<c069149f>] scsi_forget_host+0x41/0x52
- [<c0689fa9>] scsi_remove_host+0x71/0xe0
- [<f7de5945>] quiesce_and_remove_host+0x51/0x83 [usb_storage]
- [<f7de5a1e>] usb_stor_disconnect+0x18/0x22 [usb_storage]
- [<c06c29de>] usb_unbind_interface+0x4e/0x109
- [<c067a80f>] __device_release_driver+0x6b/0xa6
- [<c067a861>] device_release_driver+0x17/0x22
- [<c067a46a>] bus_remove_device+0xd6/0xe6
- [<c06785e2>] device_del+0xf2/0x137
- [<c06c101f>] usb_disable_device+0x94/0x1a0
-
-Signed-off-by: Stanislaw Gruszka <sgruszka at redhat.com>
-Signed-off-by: Jens Axboe <axboe at kernel.dk>
-Signed-off-by: Tim Gardner <tim.gardner at canonical.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- block/bsg.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/block/bsg.c b/block/bsg.c
-index 702f131..c0ab25c 100644
---- a/block/bsg.c
-+++ b/block/bsg.c
-@@ -985,7 +985,8 @@ void bsg_unregister_queue(struct request_queue *q)
-
- mutex_lock(&bsg_mutex);
- idr_remove(&bsg_minor_idr, bcd->minor);
-- sysfs_remove_link(&q->kobj, "bsg");
-+ if (q->kobj.sd)
-+ sysfs_remove_link(&q->kobj, "bsg");
- device_unregister(bcd->class_dev);
- bcd->class_dev = NULL;
- kref_put(&bcd->ref, bsg_kref_release_function);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0048-avr32-select-generic-atomic64_t-support.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0048-avr32-select-generic-atomic64_t-support.patch
deleted file mode 100644
index 418f85e..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0048-avr32-select-generic-atomic64_t-support.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From dec8d0e38f5a0d8d9a60f59dfac4edec01c60d5e Mon Sep 17 00:00:00 2001
-From: Fabio Baltieri <fabio.baltieri at gmail.com>
-Date: Fri, 3 Feb 2012 15:37:14 -0800
-Subject: [PATCH 48/95] avr32: select generic atomic64_t support
-
-commit 31e0017e6f6fb5cfdfaf932c1f98c9bef8d57688 upstream.
-
-Enable use of the generic atomic64 implementation on AVR32 platforms.
-Without this the kernel fails to build as the architecture does not
-provide its version.
-
-Signed-off-by: Fabio Baltieri <fabio.baltieri at gmail.com>
-Acked-by: Hans-Christian Egtvedt <egtvedt at samfundet.no>
-Cc: Haavard Skinnemoen <hskinnemoen at gmail.com>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Cc: Jean-Christophe PLAGNIOL-VILLARD <plagnioj at jcrosoft.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/avr32/Kconfig | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/arch/avr32/Kconfig b/arch/avr32/Kconfig
-index 197e96f..3dea7231 100644
---- a/arch/avr32/Kconfig
-+++ b/arch/avr32/Kconfig
-@@ -8,6 +8,7 @@ config AVR32
- select HAVE_KPROBES
- select HAVE_GENERIC_HARDIRQS
- select GENERIC_IRQ_PROBE
-+ select GENERIC_ATOMIC64
- select HARDIRQS_SW_RESEND
- select GENERIC_IRQ_SHOW
- select ARCH_HAVE_NMI_SAFE_CMPXCHG
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0049-ACPI-PM-Do-not-save-restore-NVS-on-Asus-K54C-K54HR.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0049-ACPI-PM-Do-not-save-restore-NVS-on-Asus-K54C-K54HR.patch
deleted file mode 100644
index 0422888..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0049-ACPI-PM-Do-not-save-restore-NVS-on-Asus-K54C-K54HR.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 7e305e70aa38559143edea33a3afa5bbc1ccde03 Mon Sep 17 00:00:00 2001
-From: Keng-Yu Lin <kengyu at canonical.com>
-Date: Fri, 2 Dec 2011 00:04:23 +0100
-Subject: [PATCH 49/95] ACPI / PM: Do not save/restore NVS on Asus K54C/K54HR
-
-commit 5a50a7c32d630d6cdb13d69afabb0cc81b2f379c upstream.
-
-The models do not resume correctly without acpi_sleep=nonvs.
-
-Signed-off-by: Keng-Yu Lin <kengyu at canonical.com>
-Signed-off-by: Rafael J. Wysocki <rjw at sisk.pl>
-Cc: Tim Gardner <tim.gardner at canonical.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/acpi/sleep.c | 16 ++++++++++++++++
- 1 file changed, 16 insertions(+)
-
-diff --git a/drivers/acpi/sleep.c b/drivers/acpi/sleep.c
-index 6d9a3ab..0a7ed69 100644
---- a/drivers/acpi/sleep.c
-+++ b/drivers/acpi/sleep.c
-@@ -476,6 +476,22 @@ static struct dmi_system_id __initdata acpisleep_dmi_table[] = {
- DMI_MATCH(DMI_PRODUCT_NAME, "VGN-FW520F"),
- },
- },
-+ {
-+ .callback = init_nvs_nosave,
-+ .ident = "Asus K54C",
-+ .matches = {
-+ DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK Computer Inc."),
-+ DMI_MATCH(DMI_PRODUCT_NAME, "K54C"),
-+ },
-+ },
-+ {
-+ .callback = init_nvs_nosave,
-+ .ident = "Asus K54HR",
-+ .matches = {
-+ DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK Computer Inc."),
-+ DMI_MATCH(DMI_PRODUCT_NAME, "K54HR"),
-+ },
-+ },
- {},
- };
- #endif /* CONFIG_SUSPEND */
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0050-rtl8192cu-Add-new-device-IDs.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0050-rtl8192cu-Add-new-device-IDs.patch
deleted file mode 100644
index 9c46295..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0050-rtl8192cu-Add-new-device-IDs.patch
+++ /dev/null
@@ -1,108 +0,0 @@
-From 5ac86302b276565fd96dd678fc9db3cb16ad25e1 Mon Sep 17 00:00:00 2001
-From: Larry Finger <Larry.Finger at lwfinger.net>
-Date: Tue, 18 Oct 2011 17:52:01 -0500
-Subject: [PATCH 50/95] rtl8192cu: Add new device IDs
-
-commit 6cddafab54e9a17b2efefe982547865955a5ff3a upstream.
-
-The latest vendor (non-mac80211) driver of 9/22/2011 shows some new
-device IDs for rtl8192cu. In addition, some typos in the table are
-fixed and one duplicate is removed.
-
-Signed-off-by: Larry Finger <Larry.Finger at lwfinger.net>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/net/wireless/rtlwifi/rtl8192cu/sw.c | 36 ++++++++++++++++++++++++---
- 1 file changed, 32 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/net/wireless/rtlwifi/rtl8192cu/sw.c b/drivers/net/wireless/rtlwifi/rtl8192cu/sw.c
-index c244f2f..94a3e17 100644
---- a/drivers/net/wireless/rtlwifi/rtl8192cu/sw.c
-+++ b/drivers/net/wireless/rtlwifi/rtl8192cu/sw.c
-@@ -275,6 +275,8 @@ static struct usb_device_id rtl8192c_usb_ids[] = {
- {RTL_USB_DEVICE(USB_VENDER_ID_REALTEK, 0x8191, rtl92cu_hal_cfg)},
-
- /****** 8188CU ********/
-+ /* RTL8188CTV */
-+ {RTL_USB_DEVICE(USB_VENDER_ID_REALTEK, 0x018a, rtl92cu_hal_cfg)},
- /* 8188CE-VAU USB minCard */
- {RTL_USB_DEVICE(USB_VENDER_ID_REALTEK, 0x8170, rtl92cu_hal_cfg)},
- /* 8188cu 1*1 dongle */
-@@ -291,14 +293,14 @@ static struct usb_device_id rtl8192c_usb_ids[] = {
- {RTL_USB_DEVICE(USB_VENDER_ID_REALTEK, 0x817e, rtl92cu_hal_cfg)},
- /* 8188RU in Alfa AWUS036NHR */
- {RTL_USB_DEVICE(USB_VENDER_ID_REALTEK, 0x817f, rtl92cu_hal_cfg)},
-+ /* RTL8188CUS-VL */
-+ {RTL_USB_DEVICE(USB_VENDER_ID_REALTEK, 0x818a, rtl92cu_hal_cfg)},
- /* 8188 Combo for BC4 */
- {RTL_USB_DEVICE(USB_VENDER_ID_REALTEK, 0x8754, rtl92cu_hal_cfg)},
-
- /****** 8192CU ********/
-- /* 8191cu 1*2 */
-- {RTL_USB_DEVICE(USB_VENDER_ID_REALTEK, 0x8177, rtl92cu_hal_cfg)},
- /* 8192cu 2*2 */
-- {RTL_USB_DEVICE(USB_VENDER_ID_REALTEK, 0x817b, rtl92cu_hal_cfg)},
-+ {RTL_USB_DEVICE(USB_VENDER_ID_REALTEK, 0x8178, rtl92cu_hal_cfg)},
- /* 8192CE-VAU USB minCard */
- {RTL_USB_DEVICE(USB_VENDER_ID_REALTEK, 0x817c, rtl92cu_hal_cfg)},
-
-@@ -309,13 +311,17 @@ static struct usb_device_id rtl8192c_usb_ids[] = {
- {RTL_USB_DEVICE(0x07b8, 0x8188, rtl92cu_hal_cfg)}, /*Abocom - Abocom*/
- {RTL_USB_DEVICE(0x07b8, 0x8189, rtl92cu_hal_cfg)}, /*Funai - Abocom*/
- {RTL_USB_DEVICE(0x0846, 0x9041, rtl92cu_hal_cfg)}, /*NetGear WNA1000M*/
-- {RTL_USB_DEVICE(0x0Df6, 0x0052, rtl92cu_hal_cfg)}, /*Sitecom - Edimax*/
-+ {RTL_USB_DEVICE(0x0df6, 0x0052, rtl92cu_hal_cfg)}, /*Sitecom - Edimax*/
-+ {RTL_USB_DEVICE(0x0df6, 0x005c, rtl92cu_hal_cfg)}, /*Sitecom - Edimax*/
- {RTL_USB_DEVICE(0x0eb0, 0x9071, rtl92cu_hal_cfg)}, /*NO Brand - Etop*/
- /* HP - Lite-On ,8188CUS Slim Combo */
- {RTL_USB_DEVICE(0x103c, 0x1629, rtl92cu_hal_cfg)},
- {RTL_USB_DEVICE(0x13d3, 0x3357, rtl92cu_hal_cfg)}, /* AzureWave */
- {RTL_USB_DEVICE(0x2001, 0x3308, rtl92cu_hal_cfg)}, /*D-Link - Alpha*/
-+ {RTL_USB_DEVICE(0x2019, 0x4902, rtl92cu_hal_cfg)}, /*Planex - Etop*/
- {RTL_USB_DEVICE(0x2019, 0xab2a, rtl92cu_hal_cfg)}, /*Planex - Abocom*/
-+ /*SW-WF02-AD15 -Abocom*/
-+ {RTL_USB_DEVICE(0x2019, 0xab2e, rtl92cu_hal_cfg)},
- {RTL_USB_DEVICE(0x2019, 0xed17, rtl92cu_hal_cfg)}, /*PCI - Edimax*/
- {RTL_USB_DEVICE(0x20f4, 0x648b, rtl92cu_hal_cfg)}, /*TRENDnet - Cameo*/
- {RTL_USB_DEVICE(0x7392, 0x7811, rtl92cu_hal_cfg)}, /*Edimax - Edimax*/
-@@ -326,14 +332,36 @@ static struct usb_device_id rtl8192c_usb_ids[] = {
- {RTL_USB_DEVICE(0x4855, 0x0091, rtl92cu_hal_cfg)}, /* NetweeN-Feixun */
- {RTL_USB_DEVICE(0x9846, 0x9041, rtl92cu_hal_cfg)}, /* Netgear Cameo */
-
-+ /****** 8188 RU ********/
-+ /* Netcore */
-+ {RTL_USB_DEVICE(USB_VENDER_ID_REALTEK, 0x317f, rtl92cu_hal_cfg)},
-+
-+ /****** 8188CUS Slim Solo********/
-+ {RTL_USB_DEVICE(0x04f2, 0xaff7, rtl92cu_hal_cfg)}, /*Xavi*/
-+ {RTL_USB_DEVICE(0x04f2, 0xaff9, rtl92cu_hal_cfg)}, /*Xavi*/
-+ {RTL_USB_DEVICE(0x04f2, 0xaffa, rtl92cu_hal_cfg)}, /*Xavi*/
-+
-+ /****** 8188CUS Slim Combo ********/
-+ {RTL_USB_DEVICE(0x04f2, 0xaff8, rtl92cu_hal_cfg)}, /*Xavi*/
-+ {RTL_USB_DEVICE(0x04f2, 0xaffb, rtl92cu_hal_cfg)}, /*Xavi*/
-+ {RTL_USB_DEVICE(0x04f2, 0xaffc, rtl92cu_hal_cfg)}, /*Xavi*/
-+ {RTL_USB_DEVICE(0x2019, 0x1201, rtl92cu_hal_cfg)}, /*Planex-Vencer*/
-+
- /****** 8192CU ********/
-+ {RTL_USB_DEVICE(0x050d, 0x2102, rtl92cu_hal_cfg)}, /*Belcom-Sercomm*/
-+ {RTL_USB_DEVICE(0x050d, 0x2103, rtl92cu_hal_cfg)}, /*Belcom-Edimax*/
- {RTL_USB_DEVICE(0x0586, 0x341f, rtl92cu_hal_cfg)}, /*Zyxel -Abocom*/
- {RTL_USB_DEVICE(0x07aa, 0x0056, rtl92cu_hal_cfg)}, /*ATKK-Gemtek*/
- {RTL_USB_DEVICE(0x07b8, 0x8178, rtl92cu_hal_cfg)}, /*Funai -Abocom*/
-+ {RTL_USB_DEVICE(0x0846, 0x9021, rtl92cu_hal_cfg)}, /*Netgear-Sercomm*/
-+ {RTL_USB_DEVICE(0x0b05, 0x17ab, rtl92cu_hal_cfg)}, /*ASUS-Edimax*/
-+ {RTL_USB_DEVICE(0x0df6, 0x0061, rtl92cu_hal_cfg)}, /*Sitecom-Edimax*/
-+ {RTL_USB_DEVICE(0x0e66, 0x0019, rtl92cu_hal_cfg)}, /*Hawking-Edimax*/
- {RTL_USB_DEVICE(0x2001, 0x3307, rtl92cu_hal_cfg)}, /*D-Link-Cameo*/
- {RTL_USB_DEVICE(0x2001, 0x3309, rtl92cu_hal_cfg)}, /*D-Link-Alpha*/
- {RTL_USB_DEVICE(0x2001, 0x330a, rtl92cu_hal_cfg)}, /*D-Link-Alpha*/
- {RTL_USB_DEVICE(0x2019, 0xab2b, rtl92cu_hal_cfg)}, /*Planex -Abocom*/
-+ {RTL_USB_DEVICE(0x20f4, 0x624d, rtl92cu_hal_cfg)}, /*TRENDNet*/
- {RTL_USB_DEVICE(0x7392, 0x7822, rtl92cu_hal_cfg)}, /*Edimax -Edimax*/
- {}
- };
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0051-drm-i915-gen7-implement-rczunit-workaround.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0051-drm-i915-gen7-implement-rczunit-workaround.patch
deleted file mode 100644
index a5f9314..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0051-drm-i915-gen7-implement-rczunit-workaround.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From 264d5f1c3a43d069cb497773366cf973b0f58731 Mon Sep 17 00:00:00 2001
-From: Eugeni Dodonov <eugeni.dodonov at intel.com>
-Date: Wed, 8 Feb 2012 12:53:49 -0800
-Subject: [PATCH 51/95] drm/i915: gen7: implement rczunit workaround
-
-commit eae66b50c760233fad526edf4a0d327be17a055d upstream.
-
-This is yet another workaround related to clock gating which we need on
-Ivy Bridge.
-
-Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=41353
-Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=44610
-Tested-by: Eugeni Dodonov <eugeni.dodonov at intel.com>
-Signed-off-by: Eugeni Dodonov <eugeni.dodonov at intel.com>
-Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
-Signed-off-by: Jesse Barnes <jbarnes at virtuousgeek.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/gpu/drm/i915/i915_reg.h | 1 +
- drivers/gpu/drm/i915/intel_display.c | 5 +++++
- 2 files changed, 6 insertions(+)
-
-diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
-index a26d5b0..4e2e261 100644
---- a/drivers/gpu/drm/i915/i915_reg.h
-+++ b/drivers/gpu/drm/i915/i915_reg.h
-@@ -3476,6 +3476,7 @@
- #define GT_FIFO_NUM_RESERVED_ENTRIES 20
-
- #define GEN6_UCGCTL2 0x9404
-+# define GEN6_RCZUNIT_CLOCK_GATE_DISABLE (1 << 13)
- # define GEN6_RCPBUNIT_CLOCK_GATE_DISABLE (1 << 12)
- # define GEN6_RCCUNIT_CLOCK_GATE_DISABLE (1 << 11)
-
-diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
-index 573f485..31c1432 100644
---- a/drivers/gpu/drm/i915/intel_display.c
-+++ b/drivers/gpu/drm/i915/intel_display.c
-@@ -8248,6 +8248,11 @@ static void ivybridge_init_clock_gating(struct drm_device *dev)
- I915_WRITE(WM2_LP_ILK, 0);
- I915_WRITE(WM1_LP_ILK, 0);
-
-+ /* According to the spec, bit 13 (RCZUNIT) must be set on IVB.
-+ * This implements the WaDisableRCZUnitClockGating workaround.
-+ */
-+ I915_WRITE(GEN6_UCGCTL2, GEN6_RCZUNIT_CLOCK_GATE_DISABLE);
-+
- I915_WRITE(ILK_DSPCLK_GATE, IVB_VRHUNIT_CLK_GATE);
-
- for_each_pipe(pipe) {
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0052-drm-i915-gen7-Implement-an-L3-caching-workaround.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0052-drm-i915-gen7-Implement-an-L3-caching-workaround.patch
deleted file mode 100644
index 1e31e47..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0052-drm-i915-gen7-Implement-an-L3-caching-workaround.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From 238325d3b5555b7bbc0f84190da5aaf51a9da375 Mon Sep 17 00:00:00 2001
-From: Eugeni Dodonov <eugeni.dodonov at intel.com>
-Date: Wed, 8 Feb 2012 12:53:50 -0800
-Subject: [PATCH 52/95] drm/i915: gen7: Implement an L3 caching workaround.
-
-commit e4e0c058a19c41150d12ad2d3023b3cf09c5de67 upstream.
-
-This adds two cache-related workarounds for Ivy Bridge which can lead to
-3D ring hangs and corruptions.
-
-Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=41353
-Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=44610
-Tested-by: Eugeni Dodonov <eugeni.dodonov at intel.com>
-Signed-off-by: Eugeni Dodonov <eugeni.dodonov at intel.com>
-Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
-Signed-off-by: Jesse Barnes <jbarnes at virtuousgeek.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/gpu/drm/i915/i915_reg.h | 7 +++++++
- drivers/gpu/drm/i915/intel_display.c | 6 ++++++
- 2 files changed, 13 insertions(+)
-
-diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
-index 4e2e261..cbe5d01 100644
---- a/drivers/gpu/drm/i915/i915_reg.h
-+++ b/drivers/gpu/drm/i915/i915_reg.h
-@@ -2886,6 +2886,13 @@
- #define DISP_TILE_SURFACE_SWIZZLING (1<<13)
- #define DISP_FBC_WM_DIS (1<<15)
-
-+/* GEN7 chicken */
-+#define GEN7_L3CNTLREG1 0xB01C
-+#define GEN7_WA_FOR_GEN7_L3_CONTROL 0x3C4FFF8C
-+
-+#define GEN7_L3_CHICKEN_MODE_REGISTER 0xB030
-+#define GEN7_WA_L3_CHICKEN_MODE 0x20000000
-+
- /* PCH */
-
- /* south display engine interrupt */
-diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
-index 31c1432..4d1a7a7 100644
---- a/drivers/gpu/drm/i915/intel_display.c
-+++ b/drivers/gpu/drm/i915/intel_display.c
-@@ -8255,6 +8255,12 @@ static void ivybridge_init_clock_gating(struct drm_device *dev)
-
- I915_WRITE(ILK_DSPCLK_GATE, IVB_VRHUNIT_CLK_GATE);
-
-+ /* WaApplyL3ControlAndL3ChickenMode requires those two on Ivy Bridge */
-+ I915_WRITE(GEN7_L3CNTLREG1,
-+ GEN7_WA_FOR_GEN7_L3_CONTROL);
-+ I915_WRITE(GEN7_L3_CHICKEN_MODE_REGISTER,
-+ GEN7_WA_L3_CHICKEN_MODE);
-+
- for_each_pipe(pipe) {
- I915_WRITE(DSPCNTR(pipe),
- I915_READ(DSPCNTR(pipe)) |
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0053-drm-i915-gen7-work-around-a-system-hang-on-IVB.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0053-drm-i915-gen7-work-around-a-system-hang-on-IVB.patch
deleted file mode 100644
index 79cc890..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0053-drm-i915-gen7-work-around-a-system-hang-on-IVB.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From 7434b6217bccac6433fad1f2a76d152cd08d1491 Mon Sep 17 00:00:00 2001
-From: Eugeni Dodonov <eugeni.dodonov at intel.com>
-Date: Wed, 8 Feb 2012 12:53:51 -0800
-Subject: [PATCH 53/95] drm/i915: gen7: work around a system hang on IVB
-
-commit db099c8f963fe656108e0a068274c5580a17f69b upstream.
-
-This adds the workaround for WaCatErrorRejectionIssue which could result
-in a system hang.
-
-Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=41353
-Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=44610
-Tested-by: Eugeni Dodonov <eugeni.dodonov at intel.com>
-Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
-Signed-off-by: Eugeni Dodonov <eugeni.dodonov at intel.com>
-Signed-off-by: Jesse Barnes <jbarnes at virtuousgeek.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/gpu/drm/i915/i915_reg.h | 4 ++++
- drivers/gpu/drm/i915/intel_display.c | 5 +++++
- 2 files changed, 9 insertions(+)
-
-diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
-index cbe5d01..2ae87ca 100644
---- a/drivers/gpu/drm/i915/i915_reg.h
-+++ b/drivers/gpu/drm/i915/i915_reg.h
-@@ -2893,6 +2893,10 @@
- #define GEN7_L3_CHICKEN_MODE_REGISTER 0xB030
- #define GEN7_WA_L3_CHICKEN_MODE 0x20000000
-
-+/* WaCatErrorRejectionIssue */
-+#define GEN7_SQ_CHICKEN_MBCUNIT_CONFIG 0x9030
-+#define GEN7_SQ_CHICKEN_MBCUNIT_SQINTMOB (1<<11)
-+
- /* PCH */
-
- /* south display engine interrupt */
-diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
-index 4d1a7a7..bf3deb1 100644
---- a/drivers/gpu/drm/i915/intel_display.c
-+++ b/drivers/gpu/drm/i915/intel_display.c
-@@ -8261,6 +8261,11 @@ static void ivybridge_init_clock_gating(struct drm_device *dev)
- I915_WRITE(GEN7_L3_CHICKEN_MODE_REGISTER,
- GEN7_WA_L3_CHICKEN_MODE);
-
-+ /* This is required by WaCatErrorRejectionIssue */
-+ I915_WRITE(GEN7_SQ_CHICKEN_MBCUNIT_CONFIG,
-+ I915_READ(GEN7_SQ_CHICKEN_MBCUNIT_CONFIG) |
-+ GEN7_SQ_CHICKEN_MBCUNIT_SQINTMOB);
-+
- for_each_pipe(pipe) {
- I915_WRITE(DSPCNTR(pipe),
- I915_READ(DSPCNTR(pipe)) |
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0054-drm-i915-gen7-Disable-the-RHWO-optimization-as-it-ca.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0054-drm-i915-gen7-Disable-the-RHWO-optimization-as-it-ca.patch
deleted file mode 100644
index b0d2cbe..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0054-drm-i915-gen7-Disable-the-RHWO-optimization-as-it-ca.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From 62636ad79afb701ad1580d4b45eb5840e811064f Mon Sep 17 00:00:00 2001
-From: Kenneth Graunke <kenneth at whitecape.org>
-Date: Wed, 8 Feb 2012 12:53:52 -0800
-Subject: [PATCH 54/95] drm/i915: gen7: Disable the RHWO optimization as it
- can cause GPU hangs.
-
-commit d71de14ddf423ccc9a2e3f7e37553c99ead20d7c upstream.
-
-The BSpec Workarounds page states that bits 10 and 26 must be set to
-avoid 3D ring hangs.
-
-Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=41353
-Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=44610
-Tested-by: Eugeni Dodonov <eugeni.dodonov at intel.com>
-Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
-Signed-off-by: Jesse Barnes <jbarnes at virtuousgeek.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/gpu/drm/i915/i915_reg.h | 3 +++
- drivers/gpu/drm/i915/intel_display.c | 4 ++++
- 2 files changed, 7 insertions(+)
-
-diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
-index 2ae87ca..1608d2a 100644
---- a/drivers/gpu/drm/i915/i915_reg.h
-+++ b/drivers/gpu/drm/i915/i915_reg.h
-@@ -2887,6 +2887,9 @@
- #define DISP_FBC_WM_DIS (1<<15)
-
- /* GEN7 chicken */
-+#define GEN7_COMMON_SLICE_CHICKEN1 0x7010
-+# define GEN7_CSC1_RHWO_OPT_DISABLE_IN_RCC ((1<<10) | (1<<26))
-+
- #define GEN7_L3CNTLREG1 0xB01C
- #define GEN7_WA_FOR_GEN7_L3_CONTROL 0x3C4FFF8C
-
-diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
-index bf3deb1..72dc505 100644
---- a/drivers/gpu/drm/i915/intel_display.c
-+++ b/drivers/gpu/drm/i915/intel_display.c
-@@ -8255,6 +8255,10 @@ static void ivybridge_init_clock_gating(struct drm_device *dev)
-
- I915_WRITE(ILK_DSPCLK_GATE, IVB_VRHUNIT_CLK_GATE);
-
-+ /* Apply the WaDisableRHWOOptimizationForRenderHang workaround. */
-+ I915_WRITE(GEN7_COMMON_SLICE_CHICKEN1,
-+ GEN7_CSC1_RHWO_OPT_DISABLE_IN_RCC);
-+
- /* WaApplyL3ControlAndL3ChickenMode requires those two on Ivy Bridge */
- I915_WRITE(GEN7_L3CNTLREG1,
- GEN7_WA_FOR_GEN7_L3_CONTROL);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0055-drm-i915-fix-ELD-writing-for-SandyBridge.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0055-drm-i915-fix-ELD-writing-for-SandyBridge.patch
deleted file mode 100644
index e3ff40a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0055-drm-i915-fix-ELD-writing-for-SandyBridge.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From f150669e1eb97776dfc197e20317235d6bb45ae8 Mon Sep 17 00:00:00 2001
-From: Wu Fengguang <fengguang.wu at intel.com>
-Date: Fri, 9 Dec 2011 20:42:17 +0800
-Subject: [PATCH 55/95] drm/i915: fix ELD writing for SandyBridge
-
-commit b3f33cbf7ace8fc149993ee35e0d0fd57f41d6d8 upstream.
-
-SandyBridge should be using the same register addresses as IvyBridge.
-
-Signed-off-by: Wu Fengguang <fengguang.wu at intel.com>
-Signed-off-by: Keith Packard <keithp at keithp.com>
-Signed-off-by: Eugeni Dodonov <eugeni.dodonov at intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/gpu/drm/i915/intel_display.c | 10 +++++-----
- 1 file changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
-index 72dc505..9ec9755 100644
---- a/drivers/gpu/drm/i915/intel_display.c
-+++ b/drivers/gpu/drm/i915/intel_display.c
-@@ -5876,14 +5876,14 @@ static void ironlake_write_eld(struct drm_connector *connector,
- int aud_cntl_st;
- int aud_cntrl_st2;
-
-- if (IS_IVYBRIDGE(connector->dev)) {
-- hdmiw_hdmiedid = GEN7_HDMIW_HDMIEDID_A;
-- aud_cntl_st = GEN7_AUD_CNTRL_ST_A;
-- aud_cntrl_st2 = GEN7_AUD_CNTRL_ST2;
-- } else {
-+ if (HAS_PCH_IBX(connector->dev)) {
- hdmiw_hdmiedid = GEN5_HDMIW_HDMIEDID_A;
- aud_cntl_st = GEN5_AUD_CNTL_ST_A;
- aud_cntrl_st2 = GEN5_AUD_CNTL_ST2;
-+ } else {
-+ hdmiw_hdmiedid = GEN7_HDMIW_HDMIEDID_A;
-+ aud_cntl_st = GEN7_AUD_CNTRL_ST_A;
-+ aud_cntrl_st2 = GEN7_AUD_CNTRL_ST2;
- }
-
- i = to_intel_crtc(crtc)->pipe;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0056-ARM-orion-Fix-USB-phy-for-orion5x.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0056-ARM-orion-Fix-USB-phy-for-orion5x.patch
deleted file mode 100644
index 141b182..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0056-ARM-orion-Fix-USB-phy-for-orion5x.patch
+++ /dev/null
@@ -1,164 +0,0 @@
-From 3be510bba73f7c7ae5677c98d339747f3c275d52 Mon Sep 17 00:00:00 2001
-From: Andrew Lunn <andrew at lunn.ch>
-Date: Wed, 8 Feb 2012 15:52:47 +0100
-Subject: [PATCH 56/95] ARM: orion: Fix USB phy for orion5x.
-
-commit 72053353583230952c4b187e110e9da00dfc3afb upstream.
-
-The patch "ARM: orion: Consolidate USB platform setup code.", commit
-4fcd3f374a928081d391cd9a570afe3b2c692fdc broke USB on TS-7800 and
-other orion5x boards, because the wrong type of PHY was being passed
-to the EHCI driver in the platform data. Orion5x needs EHCI_PHY_ORION
-and all the others want EHCI_PHY_NA.
-
-Allow the mach- code to tell the generic plat-orion code which USB PHY
-enum to place into the platform data.
-
-Version 2: Rebase to v3.3-rc2.
-
-Reported-by: Ambroz Bizjak <ambrop7 at gmail.com>
-Signed-off-by: Andrew Lunn <andrew at lunn.ch>
-Tested-by: Ambroz Bizjak <ambrop7 at gmail.com>
-Acked-by: Nicolas Pitre <nico at linaro.org>
-Signed-off-by: Olof Johansson <olof at lixom.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/arm/mach-dove/common.c | 3 ++-
- arch/arm/mach-kirkwood/common.c | 3 ++-
- arch/arm/mach-mv78xx0/common.c | 3 ++-
- arch/arm/mach-orion5x/common.c | 4 +++-
- arch/arm/plat-orion/common.c | 9 ++++-----
- arch/arm/plat-orion/include/plat/common.h | 3 ++-
- 6 files changed, 15 insertions(+), 10 deletions(-)
-
-diff --git a/arch/arm/mach-dove/common.c b/arch/arm/mach-dove/common.c
-index a9e0dae..1620b15 100644
---- a/arch/arm/mach-dove/common.c
-+++ b/arch/arm/mach-dove/common.c
-@@ -29,6 +29,7 @@
- #include <asm/mach/arch.h>
- #include <linux/irq.h>
- #include <plat/time.h>
-+#include <plat/ehci-orion.h>
- #include <plat/common.h>
- #include "common.h"
-
-@@ -72,7 +73,7 @@ void __init dove_map_io(void)
- void __init dove_ehci0_init(void)
- {
- orion_ehci_init(&dove_mbus_dram_info,
-- DOVE_USB0_PHYS_BASE, IRQ_DOVE_USB0);
-+ DOVE_USB0_PHYS_BASE, IRQ_DOVE_USB0, EHCI_PHY_NA);
- }
-
- /*****************************************************************************
-diff --git a/arch/arm/mach-kirkwood/common.c b/arch/arm/mach-kirkwood/common.c
-index f3248cf..c5dbbb3 100644
---- a/arch/arm/mach-kirkwood/common.c
-+++ b/arch/arm/mach-kirkwood/common.c
-@@ -28,6 +28,7 @@
- #include <plat/cache-feroceon-l2.h>
- #include <plat/mvsdio.h>
- #include <plat/orion_nand.h>
-+#include <plat/ehci-orion.h>
- #include <plat/common.h>
- #include <plat/time.h>
- #include "common.h"
-@@ -74,7 +75,7 @@ void __init kirkwood_ehci_init(void)
- {
- kirkwood_clk_ctrl |= CGC_USB0;
- orion_ehci_init(&kirkwood_mbus_dram_info,
-- USB_PHYS_BASE, IRQ_KIRKWOOD_USB);
-+ USB_PHYS_BASE, IRQ_KIRKWOOD_USB, EHCI_PHY_NA);
- }
-
-
-diff --git a/arch/arm/mach-mv78xx0/common.c b/arch/arm/mach-mv78xx0/common.c
-index 23d3980..d90e244 100644
---- a/arch/arm/mach-mv78xx0/common.c
-+++ b/arch/arm/mach-mv78xx0/common.c
-@@ -20,6 +20,7 @@
- #include <mach/mv78xx0.h>
- #include <mach/bridge-regs.h>
- #include <plat/cache-feroceon-l2.h>
-+#include <plat/ehci-orion.h>
- #include <plat/orion_nand.h>
- #include <plat/time.h>
- #include <plat/common.h>
-@@ -170,7 +171,7 @@ void __init mv78xx0_map_io(void)
- void __init mv78xx0_ehci0_init(void)
- {
- orion_ehci_init(&mv78xx0_mbus_dram_info,
-- USB0_PHYS_BASE, IRQ_MV78XX0_USB_0);
-+ USB0_PHYS_BASE, IRQ_MV78XX0_USB_0, EHCI_PHY_NA);
- }
-
-
-diff --git a/arch/arm/mach-orion5x/common.c b/arch/arm/mach-orion5x/common.c
-index 22ace0b..53b68b8 100644
---- a/arch/arm/mach-orion5x/common.c
-+++ b/arch/arm/mach-orion5x/common.c
-@@ -29,6 +29,7 @@
- #include <mach/hardware.h>
- #include <mach/orion5x.h>
- #include <plat/orion_nand.h>
-+#include <plat/ehci-orion.h>
- #include <plat/time.h>
- #include <plat/common.h>
- #include "common.h"
-@@ -72,7 +73,8 @@ void __init orion5x_map_io(void)
- void __init orion5x_ehci0_init(void)
- {
- orion_ehci_init(&orion5x_mbus_dram_info,
-- ORION5X_USB0_PHYS_BASE, IRQ_ORION5X_USB0_CTRL);
-+ ORION5X_USB0_PHYS_BASE, IRQ_ORION5X_USB0_CTRL,
-+ EHCI_PHY_ORION);
- }
-
-
-diff --git a/arch/arm/plat-orion/common.c b/arch/arm/plat-orion/common.c
-index 9e5451b..11dce87 100644
---- a/arch/arm/plat-orion/common.c
-+++ b/arch/arm/plat-orion/common.c
-@@ -806,10 +806,7 @@ void __init orion_xor1_init(unsigned long mapbase_low,
- /*****************************************************************************
- * EHCI
- ****************************************************************************/
--static struct orion_ehci_data orion_ehci_data = {
-- .phy_version = EHCI_PHY_NA,
--};
--
-+static struct orion_ehci_data orion_ehci_data;
- static u64 ehci_dmamask = DMA_BIT_MASK(32);
-
-
-@@ -830,9 +827,11 @@ static struct platform_device orion_ehci = {
-
- void __init orion_ehci_init(struct mbus_dram_target_info *mbus_dram_info,
- unsigned long mapbase,
-- unsigned long irq)
-+ unsigned long irq,
-+ enum orion_ehci_phy_ver phy_version)
- {
- orion_ehci_data.dram = mbus_dram_info;
-+ orion_ehci_data.phy_version = phy_version;
- fill_resources(&orion_ehci, orion_ehci_resources, mapbase, SZ_4K - 1,
- irq);
-
-diff --git a/arch/arm/plat-orion/include/plat/common.h b/arch/arm/plat-orion/include/plat/common.h
-index a63c357..a2c0e31 100644
---- a/arch/arm/plat-orion/include/plat/common.h
-+++ b/arch/arm/plat-orion/include/plat/common.h
-@@ -95,7 +95,8 @@ void __init orion_xor1_init(unsigned long mapbase_low,
-
- void __init orion_ehci_init(struct mbus_dram_target_info *mbus_dram_info,
- unsigned long mapbase,
-- unsigned long irq);
-+ unsigned long irq,
-+ enum orion_ehci_phy_ver phy_version);
-
- void __init orion_ehci_1_init(struct mbus_dram_target_info *mbus_dram_info,
- unsigned long mapbase,
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0057-ARM-orion-Fix-Orion5x-GPIO-regression-from-MPP-clean.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0057-ARM-orion-Fix-Orion5x-GPIO-regression-from-MPP-clean.patch
deleted file mode 100644
index 1311d96..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0057-ARM-orion-Fix-Orion5x-GPIO-regression-from-MPP-clean.patch
+++ /dev/null
@@ -1,956 +0,0 @@
-From 312c368a8d87bbd61e4af956f9f3b2f2492d9cbf Mon Sep 17 00:00:00 2001
-From: Andrew Lunn <andrew at lunn.ch>
-Date: Wed, 8 Feb 2012 15:52:07 +0100
-Subject: [PATCH 57/95] ARM: orion: Fix Orion5x GPIO regression from MPP
- cleanup
-
-commit b06540371063f0f07aafc1d1ac5e974da85c973c upstream.
-
-Patchset "ARM: orion: Refactor the MPP code common in the orion
-platform" broke at least Orion5x based platforms. These platforms have
-pins configured as GPIO when the selector is not 0x0. However the
-common code assumes the selector is always 0x0 for a GPIO lines. It
-then ignores the GPIO bits in the MPP definitions, resulting in that
-Orion5x machines cannot correctly configure there GPIO lines.
-
-The Fix removes the assumption that the selector is always 0x0.
-In order that none GPIO configurations are correctly blocked,
-Kirkwood and mv78xx0 MPP definitions are corrected to only set the
-GPIO bits for GPIO configurations.
-
-This third version, which does not contain any whitespace changes,
-and is rebased on v3.3-rc2.
-
-Signed-off-by: Andrew Lunn <andrew at lunn.ch>
-Acked-by: Nicolas Pitre <nico at linaro.org>
-Signed-off-by: Olof Johansson <olof at lixom.net>
----
- arch/arm/mach-kirkwood/mpp.h | 320 +++++++++++++++++++++---------------------
- arch/arm/mach-mv78xx0/mpp.h | 226 ++++++++++++++---------------
- arch/arm/plat-orion/mpp.c | 3 +-
- 3 files changed, 274 insertions(+), 275 deletions(-)
-
-diff --git a/arch/arm/mach-kirkwood/mpp.h b/arch/arm/mach-kirkwood/mpp.h
-index ac78795..7afccf4 100644
---- a/arch/arm/mach-kirkwood/mpp.h
-+++ b/arch/arm/mach-kirkwood/mpp.h
-@@ -31,313 +31,313 @@
- #define MPP_F6282_MASK MPP( 0, 0x0, 0, 0, 0, 0, 0, 0, 1 )
-
- #define MPP0_GPIO MPP( 0, 0x0, 1, 1, 1, 1, 1, 1, 1 )
--#define MPP0_NF_IO2 MPP( 0, 0x1, 1, 1, 1, 1, 1, 1, 1 )
--#define MPP0_SPI_SCn MPP( 0, 0x2, 0, 1, 1, 1, 1, 1, 1 )
-+#define MPP0_NF_IO2 MPP( 0, 0x1, 0, 0, 1, 1, 1, 1, 1 )
-+#define MPP0_SPI_SCn MPP( 0, 0x2, 0, 0, 1, 1, 1, 1, 1 )
-
- #define MPP1_GPO MPP( 1, 0x0, 0, 1, 1, 1, 1, 1, 1 )
--#define MPP1_NF_IO3 MPP( 1, 0x1, 1, 1, 1, 1, 1, 1, 1 )
--#define MPP1_SPI_MOSI MPP( 1, 0x2, 0, 1, 1, 1, 1, 1, 1 )
-+#define MPP1_NF_IO3 MPP( 1, 0x1, 0, 0, 1, 1, 1, 1, 1 )
-+#define MPP1_SPI_MOSI MPP( 1, 0x2, 0, 0, 1, 1, 1, 1, 1 )
-
- #define MPP2_GPO MPP( 2, 0x0, 0, 1, 1, 1, 1, 1, 1 )
--#define MPP2_NF_IO4 MPP( 2, 0x1, 1, 1, 1, 1, 1, 1, 1 )
--#define MPP2_SPI_SCK MPP( 2, 0x2, 0, 1, 1, 1, 1, 1, 1 )
-+#define MPP2_NF_IO4 MPP( 2, 0x1, 0, 0, 1, 1, 1, 1, 1 )
-+#define MPP2_SPI_SCK MPP( 2, 0x2, 0, 0, 1, 1, 1, 1, 1 )
-
- #define MPP3_GPO MPP( 3, 0x0, 0, 1, 1, 1, 1, 1, 1 )
--#define MPP3_NF_IO5 MPP( 3, 0x1, 1, 1, 1, 1, 1, 1, 1 )
--#define MPP3_SPI_MISO MPP( 3, 0x2, 1, 0, 1, 1, 1, 1, 1 )
-+#define MPP3_NF_IO5 MPP( 3, 0x1, 0, 0, 1, 1, 1, 1, 1 )
-+#define MPP3_SPI_MISO MPP( 3, 0x2, 0, 0, 1, 1, 1, 1, 1 )
-
- #define MPP4_GPIO MPP( 4, 0x0, 1, 1, 1, 1, 1, 1, 1 )
--#define MPP4_NF_IO6 MPP( 4, 0x1, 1, 1, 1, 1, 1, 1, 1 )
--#define MPP4_UART0_RXD MPP( 4, 0x2, 1, 0, 1, 1, 1, 1, 1 )
--#define MPP4_SATA1_ACTn MPP( 4, 0x5, 0, 1, 0, 0, 1, 1, 1 )
-+#define MPP4_NF_IO6 MPP( 4, 0x1, 0, 0, 1, 1, 1, 1, 1 )
-+#define MPP4_UART0_RXD MPP( 4, 0x2, 0, 0, 1, 1, 1, 1, 1 )
-+#define MPP4_SATA1_ACTn MPP( 4, 0x5, 0, 0, 0, 0, 1, 1, 1 )
- #define MPP4_LCD_VGA_HSYNC MPP( 4, 0xb, 0, 0, 0, 0, 0, 0, 1 )
--#define MPP4_PTP_CLK MPP( 4, 0xd, 1, 0, 1, 1, 1, 1, 0 )
-+#define MPP4_PTP_CLK MPP( 4, 0xd, 0, 0, 1, 1, 1, 1, 0 )
-
- #define MPP5_GPO MPP( 5, 0x0, 0, 1, 1, 1, 1, 1, 1 )
--#define MPP5_NF_IO7 MPP( 5, 0x1, 1, 1, 1, 1, 1, 1, 1 )
--#define MPP5_UART0_TXD MPP( 5, 0x2, 0, 1, 1, 1, 1, 1, 1 )
--#define MPP5_PTP_TRIG_GEN MPP( 5, 0x4, 0, 1, 1, 1, 1, 1, 0 )
--#define MPP5_SATA0_ACTn MPP( 5, 0x5, 0, 1, 0, 1, 1, 1, 1 )
-+#define MPP5_NF_IO7 MPP( 5, 0x1, 0, 0, 1, 1, 1, 1, 1 )
-+#define MPP5_UART0_TXD MPP( 5, 0x2, 0, 0, 1, 1, 1, 1, 1 )
-+#define MPP5_PTP_TRIG_GEN MPP( 5, 0x4, 0, 0, 1, 1, 1, 1, 0 )
-+#define MPP5_SATA0_ACTn MPP( 5, 0x5, 0, 0, 0, 1, 1, 1, 1 )
- #define MPP5_LCD_VGA_VSYNC MPP( 5, 0xb, 0, 0, 0, 0, 0, 0, 1 )
-
--#define MPP6_SYSRST_OUTn MPP( 6, 0x1, 0, 1, 1, 1, 1, 1, 1 )
--#define MPP6_SPI_MOSI MPP( 6, 0x2, 0, 1, 1, 1, 1, 1, 1 )
--#define MPP6_PTP_TRIG_GEN MPP( 6, 0x3, 0, 1, 1, 1, 1, 1, 0 )
-+#define MPP6_SYSRST_OUTn MPP( 6, 0x1, 0, 0, 1, 1, 1, 1, 1 )
-+#define MPP6_SPI_MOSI MPP( 6, 0x2, 0, 0, 1, 1, 1, 1, 1 )
-+#define MPP6_PTP_TRIG_GEN MPP( 6, 0x3, 0, 0, 1, 1, 1, 1, 0 )
-
- #define MPP7_GPO MPP( 7, 0x0, 0, 1, 1, 1, 1, 1, 1 )
--#define MPP7_PEX_RST_OUTn MPP( 7, 0x1, 0, 1, 1, 1, 1, 1, 0 )
--#define MPP7_SPI_SCn MPP( 7, 0x2, 0, 1, 1, 1, 1, 1, 1 )
--#define MPP7_PTP_TRIG_GEN MPP( 7, 0x3, 0, 1, 1, 1, 1, 1, 0 )
--#define MPP7_LCD_PWM MPP( 7, 0xb, 0, 1, 0, 0, 0, 0, 1 )
-+#define MPP7_PEX_RST_OUTn MPP( 7, 0x1, 0, 0, 1, 1, 1, 1, 0 )
-+#define MPP7_SPI_SCn MPP( 7, 0x2, 0, 0, 1, 1, 1, 1, 1 )
-+#define MPP7_PTP_TRIG_GEN MPP( 7, 0x3, 0, 0, 1, 1, 1, 1, 0 )
-+#define MPP7_LCD_PWM MPP( 7, 0xb, 0, 0, 0, 0, 0, 0, 1 )
-
- #define MPP8_GPIO MPP( 8, 0x0, 1, 1, 1, 1, 1, 1, 1 )
--#define MPP8_TW0_SDA MPP( 8, 0x1, 1, 1, 1, 1, 1, 1, 1 )
--#define MPP8_UART0_RTS MPP( 8, 0x2, 0, 1, 1, 1, 1, 1, 1 )
--#define MPP8_UART1_RTS MPP( 8, 0x3, 0, 1, 1, 1, 1, 1, 1 )
--#define MPP8_MII0_RXERR MPP( 8, 0x4, 1, 0, 0, 1, 1, 1, 1 )
--#define MPP8_SATA1_PRESENTn MPP( 8, 0x5, 0, 1, 0, 0, 1, 1, 1 )
--#define MPP8_PTP_CLK MPP( 8, 0xc, 1, 0, 1, 1, 1, 1, 0 )
--#define MPP8_MII0_COL MPP( 8, 0xd, 1, 0, 1, 1, 1, 1, 1 )
-+#define MPP8_TW0_SDA MPP( 8, 0x1, 0, 0, 1, 1, 1, 1, 1 )
-+#define MPP8_UART0_RTS MPP( 8, 0x2, 0, 0, 1, 1, 1, 1, 1 )
-+#define MPP8_UART1_RTS MPP( 8, 0x3, 0, 0, 1, 1, 1, 1, 1 )
-+#define MPP8_MII0_RXERR MPP( 8, 0x4, 0, 0, 0, 1, 1, 1, 1 )
-+#define MPP8_SATA1_PRESENTn MPP( 8, 0x5, 0, 0, 0, 0, 1, 1, 1 )
-+#define MPP8_PTP_CLK MPP( 8, 0xc, 0, 0, 1, 1, 1, 1, 0 )
-+#define MPP8_MII0_COL MPP( 8, 0xd, 0, 0, 1, 1, 1, 1, 1 )
-
- #define MPP9_GPIO MPP( 9, 0x0, 1, 1, 1, 1, 1, 1, 1 )
--#define MPP9_TW0_SCK MPP( 9, 0x1, 1, 1, 1, 1, 1, 1, 1 )
--#define MPP9_UART0_CTS MPP( 9, 0x2, 1, 0, 1, 1, 1, 1, 1 )
--#define MPP9_UART1_CTS MPP( 9, 0x3, 1, 0, 1, 1, 1, 1, 1 )
--#define MPP9_SATA0_PRESENTn MPP( 9, 0x5, 0, 1, 0, 1, 1, 1, 1 )
--#define MPP9_PTP_EVENT_REQ MPP( 9, 0xc, 1, 0, 1, 1, 1, 1, 0 )
--#define MPP9_MII0_CRS MPP( 9, 0xd, 1, 0, 1, 1, 1, 1, 1 )
-+#define MPP9_TW0_SCK MPP( 9, 0x1, 0, 0, 1, 1, 1, 1, 1 )
-+#define MPP9_UART0_CTS MPP( 9, 0x2, 0, 0, 1, 1, 1, 1, 1 )
-+#define MPP9_UART1_CTS MPP( 9, 0x3, 0, 0, 1, 1, 1, 1, 1 )
-+#define MPP9_SATA0_PRESENTn MPP( 9, 0x5, 0, 0, 0, 1, 1, 1, 1 )
-+#define MPP9_PTP_EVENT_REQ MPP( 9, 0xc, 0, 0, 1, 1, 1, 1, 0 )
-+#define MPP9_MII0_CRS MPP( 9, 0xd, 0, 0, 1, 1, 1, 1, 1 )
-
- #define MPP10_GPO MPP( 10, 0x0, 0, 1, 1, 1, 1, 1, 1 )
--#define MPP10_SPI_SCK MPP( 10, 0x2, 0, 1, 1, 1, 1, 1, 1 )
--#define MPP10_UART0_TXD MPP( 10, 0X3, 0, 1, 1, 1, 1, 1, 1 )
--#define MPP10_SATA1_ACTn MPP( 10, 0x5, 0, 1, 0, 0, 1, 1, 1 )
--#define MPP10_PTP_TRIG_GEN MPP( 10, 0xc, 0, 1, 1, 1, 1, 1, 0 )
-+#define MPP10_SPI_SCK MPP( 10, 0x2, 0, 0, 1, 1, 1, 1, 1 )
-+#define MPP10_UART0_TXD MPP( 10, 0X3, 0, 0, 1, 1, 1, 1, 1 )
-+#define MPP10_SATA1_ACTn MPP( 10, 0x5, 0, 0, 0, 0, 1, 1, 1 )
-+#define MPP10_PTP_TRIG_GEN MPP( 10, 0xc, 0, 0, 1, 1, 1, 1, 0 )
-
- #define MPP11_GPIO MPP( 11, 0x0, 1, 1, 1, 1, 1, 1, 1 )
--#define MPP11_SPI_MISO MPP( 11, 0x2, 1, 0, 1, 1, 1, 1, 1 )
--#define MPP11_UART0_RXD MPP( 11, 0x3, 1, 0, 1, 1, 1, 1, 1 )
--#define MPP11_PTP_EVENT_REQ MPP( 11, 0x4, 1, 0, 1, 1, 1, 1, 0 )
--#define MPP11_PTP_TRIG_GEN MPP( 11, 0xc, 0, 1, 1, 1, 1, 1, 0 )
--#define MPP11_PTP_CLK MPP( 11, 0xd, 1, 0, 1, 1, 1, 1, 0 )
--#define MPP11_SATA0_ACTn MPP( 11, 0x5, 0, 1, 0, 1, 1, 1, 1 )
-+#define MPP11_SPI_MISO MPP( 11, 0x2, 0, 0, 1, 1, 1, 1, 1 )
-+#define MPP11_UART0_RXD MPP( 11, 0x3, 0, 0, 1, 1, 1, 1, 1 )
-+#define MPP11_PTP_EVENT_REQ MPP( 11, 0x4, 0, 0, 1, 1, 1, 1, 0 )
-+#define MPP11_PTP_TRIG_GEN MPP( 11, 0xc, 0, 0, 1, 1, 1, 1, 0 )
-+#define MPP11_PTP_CLK MPP( 11, 0xd, 0, 0, 1, 1, 1, 1, 0 )
-+#define MPP11_SATA0_ACTn MPP( 11, 0x5, 0, 0, 0, 1, 1, 1, 1 )
-
- #define MPP12_GPO MPP( 12, 0x0, 0, 1, 1, 1, 1, 1, 1 )
--#define MPP12_SD_CLK MPP( 12, 0x1, 0, 1, 1, 1, 1, 1, 1 )
--#define MPP12_AU_SPDIF0 MPP( 12, 0xa, 0, 1, 0, 0, 0, 0, 1 )
--#define MPP12_SPI_MOSI MPP( 12, 0xb, 0, 1, 0, 0, 0, 0, 1 )
--#define MPP12_TW1_SDA MPP( 12, 0xd, 1, 0, 0, 0, 0, 0, 1 )
-+#define MPP12_SD_CLK MPP( 12, 0x1, 0, 0, 1, 1, 1, 1, 1 )
-+#define MPP12_AU_SPDIF0 MPP( 12, 0xa, 0, 0, 0, 0, 0, 0, 1 )
-+#define MPP12_SPI_MOSI MPP( 12, 0xb, 0, 0, 0, 0, 0, 0, 1 )
-+#define MPP12_TW1_SDA MPP( 12, 0xd, 0, 0, 0, 0, 0, 0, 1 )
-
- #define MPP13_GPIO MPP( 13, 0x0, 1, 1, 1, 1, 1, 1, 1 )
--#define MPP13_SD_CMD MPP( 13, 0x1, 1, 1, 1, 1, 1, 1, 1 )
--#define MPP13_UART1_TXD MPP( 13, 0x3, 0, 1, 1, 1, 1, 1, 1 )
--#define MPP13_AU_SPDIFRMCLK MPP( 13, 0xa, 0, 1, 0, 0, 0, 0, 1 )
--#define MPP13_LCDPWM MPP( 13, 0xb, 0, 1, 0, 0, 0, 0, 1 )
-+#define MPP13_SD_CMD MPP( 13, 0x1, 0, 0, 1, 1, 1, 1, 1 )
-+#define MPP13_UART1_TXD MPP( 13, 0x3, 0, 0, 1, 1, 1, 1, 1 )
-+#define MPP13_AU_SPDIFRMCLK MPP( 13, 0xa, 0, 0, 0, 0, 0, 0, 1 )
-+#define MPP13_LCDPWM MPP( 13, 0xb, 0, 0, 0, 0, 0, 0, 1 )
-
- #define MPP14_GPIO MPP( 14, 0x0, 1, 1, 1, 1, 1, 1, 1 )
--#define MPP14_SD_D0 MPP( 14, 0x1, 1, 1, 1, 1, 1, 1, 1 )
--#define MPP14_UART1_RXD MPP( 14, 0x3, 1, 0, 1, 1, 1, 1, 1 )
--#define MPP14_SATA1_PRESENTn MPP( 14, 0x4, 0, 1, 0, 0, 1, 1, 1 )
--#define MPP14_AU_SPDIFI MPP( 14, 0xa, 1, 0, 0, 0, 0, 0, 1 )
--#define MPP14_AU_I2SDI MPP( 14, 0xb, 1, 0, 0, 0, 0, 0, 1 )
--#define MPP14_MII0_COL MPP( 14, 0xd, 1, 0, 1, 1, 1, 1, 1 )
-+#define MPP14_SD_D0 MPP( 14, 0x1, 0, 0, 1, 1, 1, 1, 1 )
-+#define MPP14_UART1_RXD MPP( 14, 0x3, 0, 0, 1, 1, 1, 1, 1 )
-+#define MPP14_SATA1_PRESENTn MPP( 14, 0x4, 0, 0, 0, 0, 1, 1, 1 )
-+#define MPP14_AU_SPDIFI MPP( 14, 0xa, 0, 0, 0, 0, 0, 0, 1 )
-+#define MPP14_AU_I2SDI MPP( 14, 0xb, 0, 0, 0, 0, 0, 0, 1 )
-+#define MPP14_MII0_COL MPP( 14, 0xd, 0, 0, 1, 1, 1, 1, 1 )
-
- #define MPP15_GPIO MPP( 15, 0x0, 1, 1, 1, 1, 1, 1, 1 )
--#define MPP15_SD_D1 MPP( 15, 0x1, 1, 1, 1, 1, 1, 1, 1 )
--#define MPP15_UART0_RTS MPP( 15, 0x2, 0, 1, 1, 1, 1, 1, 1 )
--#define MPP15_UART1_TXD MPP( 15, 0x3, 0, 1, 1, 1, 1, 1, 1 )
--#define MPP15_SATA0_ACTn MPP( 15, 0x4, 0, 1, 0, 1, 1, 1, 1 )
--#define MPP15_SPI_CSn MPP( 15, 0xb, 0, 1, 0, 0, 0, 0, 1 )
-+#define MPP15_SD_D1 MPP( 15, 0x1, 0, 0, 1, 1, 1, 1, 1 )
-+#define MPP15_UART0_RTS MPP( 15, 0x2, 0, 0, 1, 1, 1, 1, 1 )
-+#define MPP15_UART1_TXD MPP( 15, 0x3, 0, 0, 1, 1, 1, 1, 1 )
-+#define MPP15_SATA0_ACTn MPP( 15, 0x4, 0, 0, 0, 1, 1, 1, 1 )
-+#define MPP15_SPI_CSn MPP( 15, 0xb, 0, 0, 0, 0, 0, 0, 1 )
-
- #define MPP16_GPIO MPP( 16, 0x0, 1, 1, 1, 1, 1, 1, 1 )
--#define MPP16_SD_D2 MPP( 16, 0x1, 1, 1, 1, 1, 1, 1, 1 )
--#define MPP16_UART0_CTS MPP( 16, 0x2, 1, 0, 1, 1, 1, 1, 1 )
--#define MPP16_UART1_RXD MPP( 16, 0x3, 1, 0, 1, 1, 1, 1, 1 )
--#define MPP16_SATA1_ACTn MPP( 16, 0x4, 0, 1, 0, 0, 1, 1, 1 )
--#define MPP16_LCD_EXT_REF_CLK MPP( 16, 0xb, 1, 0, 0, 0, 0, 0, 1 )
--#define MPP16_MII0_CRS MPP( 16, 0xd, 1, 0, 1, 1, 1, 1, 1 )
-+#define MPP16_SD_D2 MPP( 16, 0x1, 0, 0, 1, 1, 1, 1, 1 )
-+#define MPP16_UART0_CTS MPP( 16, 0x2, 0, 0, 1, 1, 1, 1, 1 )
-+#define MPP16_UART1_RXD MPP( 16, 0x3, 0, 0, 1, 1, 1, 1, 1 )
-+#define MPP16_SATA1_ACTn MPP( 16, 0x4, 0, 0, 0, 0, 1, 1, 1 )
-+#define MPP16_LCD_EXT_REF_CLK MPP( 16, 0xb, 0, 0, 0, 0, 0, 0, 1 )
-+#define MPP16_MII0_CRS MPP( 16, 0xd, 0, 0, 1, 1, 1, 1, 1 )
-
- #define MPP17_GPIO MPP( 17, 0x0, 1, 1, 1, 1, 1, 1, 1 )
--#define MPP17_SD_D3 MPP( 17, 0x1, 1, 1, 1, 1, 1, 1, 1 )
--#define MPP17_SATA0_PRESENTn MPP( 17, 0x4, 0, 1, 0, 1, 1, 1, 1 )
--#define MPP17_SATA1_ACTn MPP( 17, 0xa, 0, 1, 0, 0, 0, 0, 1 )
--#define MPP17_TW1_SCK MPP( 17, 0xd, 1, 1, 0, 0, 0, 0, 1 )
-+#define MPP17_SD_D3 MPP( 17, 0x1, 0, 0, 1, 1, 1, 1, 1 )
-+#define MPP17_SATA0_PRESENTn MPP( 17, 0x4, 0, 0, 0, 1, 1, 1, 1 )
-+#define MPP17_SATA1_ACTn MPP( 17, 0xa, 0, 0, 0, 0, 0, 0, 1 )
-+#define MPP17_TW1_SCK MPP( 17, 0xd, 0, 0, 0, 0, 0, 0, 1 )
-
- #define MPP18_GPO MPP( 18, 0x0, 0, 1, 1, 1, 1, 1, 1 )
--#define MPP18_NF_IO0 MPP( 18, 0x1, 1, 1, 1, 1, 1, 1, 1 )
--#define MPP18_PEX0_CLKREQ MPP( 18, 0x2, 0, 1, 0, 0, 0, 0, 1 )
-+#define MPP18_NF_IO0 MPP( 18, 0x1, 0, 0, 1, 1, 1, 1, 1 )
-+#define MPP18_PEX0_CLKREQ MPP( 18, 0x2, 0, 0, 0, 0, 0, 0, 1 )
-
- #define MPP19_GPO MPP( 19, 0x0, 0, 1, 1, 1, 1, 1, 1 )
--#define MPP19_NF_IO1 MPP( 19, 0x1, 1, 1, 1, 1, 1, 1, 1 )
-+#define MPP19_NF_IO1 MPP( 19, 0x1, 0, 0, 1, 1, 1, 1, 1 )
-
- #define MPP20_GPIO MPP( 20, 0x0, 1, 1, 0, 1, 1, 1, 1 )
--#define MPP20_TSMP0 MPP( 20, 0x1, 1, 1, 0, 0, 1, 1, 1 )
--#define MPP20_TDM_CH0_TX_QL MPP( 20, 0x2, 0, 1, 0, 0, 1, 1, 1 )
-+#define MPP20_TSMP0 MPP( 20, 0x1, 0, 0, 0, 0, 1, 1, 1 )
-+#define MPP20_TDM_CH0_TX_QL MPP( 20, 0x2, 0, 0, 0, 0, 1, 1, 1 )
- #define MPP20_GE1_TXD0 MPP( 20, 0x3, 0, 0, 0, 1, 1, 1, 1 )
--#define MPP20_AU_SPDIFI MPP( 20, 0x4, 1, 0, 0, 0, 1, 1, 1 )
--#define MPP20_SATA1_ACTn MPP( 20, 0x5, 0, 1, 0, 0, 1, 1, 1 )
-+#define MPP20_AU_SPDIFI MPP( 20, 0x4, 0, 0, 0, 0, 1, 1, 1 )
-+#define MPP20_SATA1_ACTn MPP( 20, 0x5, 0, 0, 0, 0, 1, 1, 1 )
- #define MPP20_LCD_D0 MPP( 20, 0xb, 0, 0, 0, 0, 0, 0, 1 )
-
- #define MPP21_GPIO MPP( 21, 0x0, 1, 1, 0, 1, 1, 1, 1 )
--#define MPP21_TSMP1 MPP( 21, 0x1, 1, 1, 0, 0, 1, 1, 1 )
--#define MPP21_TDM_CH0_RX_QL MPP( 21, 0x2, 0, 1, 0, 0, 1, 1, 1 )
-+#define MPP21_TSMP1 MPP( 21, 0x1, 0, 0, 0, 0, 1, 1, 1 )
-+#define MPP21_TDM_CH0_RX_QL MPP( 21, 0x2, 0, 0, 0, 0, 1, 1, 1 )
- #define MPP21_GE1_TXD1 MPP( 21, 0x3, 0, 0, 0, 1, 1, 1, 1 )
--#define MPP21_AU_SPDIFO MPP( 21, 0x4, 0, 1, 0, 0, 1, 1, 1 )
--#define MPP21_SATA0_ACTn MPP( 21, 0x5, 0, 1, 0, 1, 1, 1, 1 )
-+#define MPP21_AU_SPDIFO MPP( 21, 0x4, 0, 0, 0, 0, 1, 1, 1 )
-+#define MPP21_SATA0_ACTn MPP( 21, 0x5, 0, 0, 0, 1, 1, 1, 1 )
- #define MPP21_LCD_D1 MPP( 21, 0xb, 0, 0, 0, 0, 0, 0, 1 )
-
- #define MPP22_GPIO MPP( 22, 0x0, 1, 1, 0, 1, 1, 1, 1 )
--#define MPP22_TSMP2 MPP( 22, 0x1, 1, 1, 0, 0, 1, 1, 1 )
--#define MPP22_TDM_CH2_TX_QL MPP( 22, 0x2, 0, 1, 0, 0, 1, 1, 1 )
-+#define MPP22_TSMP2 MPP( 22, 0x1, 0, 0, 0, 0, 1, 1, 1 )
-+#define MPP22_TDM_CH2_TX_QL MPP( 22, 0x2, 0, 0, 0, 0, 1, 1, 1 )
- #define MPP22_GE1_TXD2 MPP( 22, 0x3, 0, 0, 0, 1, 1, 1, 1 )
--#define MPP22_AU_SPDIFRMKCLK MPP( 22, 0x4, 0, 1, 0, 0, 1, 1, 1 )
--#define MPP22_SATA1_PRESENTn MPP( 22, 0x5, 0, 1, 0, 0, 1, 1, 1 )
-+#define MPP22_AU_SPDIFRMKCLK MPP( 22, 0x4, 0, 0, 0, 0, 1, 1, 1 )
-+#define MPP22_SATA1_PRESENTn MPP( 22, 0x5, 0, 0, 0, 0, 1, 1, 1 )
- #define MPP22_LCD_D2 MPP( 22, 0xb, 0, 0, 0, 0, 0, 0, 1 )
-
- #define MPP23_GPIO MPP( 23, 0x0, 1, 1, 0, 1, 1, 1, 1 )
--#define MPP23_TSMP3 MPP( 23, 0x1, 1, 1, 0, 0, 1, 1, 1 )
--#define MPP23_TDM_CH2_RX_QL MPP( 23, 0x2, 1, 0, 0, 0, 1, 1, 1 )
-+#define MPP23_TSMP3 MPP( 23, 0x1, 0, 0, 0, 0, 1, 1, 1 )
-+#define MPP23_TDM_CH2_RX_QL MPP( 23, 0x2, 0, 0, 0, 0, 1, 1, 1 )
- #define MPP23_GE1_TXD3 MPP( 23, 0x3, 0, 0, 0, 1, 1, 1, 1 )
--#define MPP23_AU_I2SBCLK MPP( 23, 0x4, 0, 1, 0, 0, 1, 1, 1 )
--#define MPP23_SATA0_PRESENTn MPP( 23, 0x5, 0, 1, 0, 1, 1, 1, 1 )
-+#define MPP23_AU_I2SBCLK MPP( 23, 0x4, 0, 0, 0, 0, 1, 1, 1 )
-+#define MPP23_SATA0_PRESENTn MPP( 23, 0x5, 0, 0, 0, 1, 1, 1, 1 )
- #define MPP23_LCD_D3 MPP( 23, 0xb, 0, 0, 0, 0, 0, 0, 1 )
-
- #define MPP24_GPIO MPP( 24, 0x0, 1, 1, 0, 1, 1, 1, 1 )
--#define MPP24_TSMP4 MPP( 24, 0x1, 1, 1, 0, 0, 1, 1, 1 )
--#define MPP24_TDM_SPI_CS0 MPP( 24, 0x2, 0, 1, 0, 0, 1, 1, 1 )
-+#define MPP24_TSMP4 MPP( 24, 0x1, 0, 0, 0, 0, 1, 1, 1 )
-+#define MPP24_TDM_SPI_CS0 MPP( 24, 0x2, 0, 0, 0, 0, 1, 1, 1 )
- #define MPP24_GE1_RXD0 MPP( 24, 0x3, 0, 0, 0, 1, 1, 1, 1 )
--#define MPP24_AU_I2SDO MPP( 24, 0x4, 0, 1, 0, 0, 1, 1, 1 )
-+#define MPP24_AU_I2SDO MPP( 24, 0x4, 0, 0, 0, 0, 1, 1, 1 )
- #define MPP24_LCD_D4 MPP( 24, 0xb, 0, 0, 0, 0, 0, 0, 1 )
-
- #define MPP25_GPIO MPP( 25, 0x0, 1, 1, 0, 1, 1, 1, 1 )
--#define MPP25_TSMP5 MPP( 25, 0x1, 1, 1, 0, 0, 1, 1, 1 )
--#define MPP25_TDM_SPI_SCK MPP( 25, 0x2, 0, 1, 0, 0, 1, 1, 1 )
-+#define MPP25_TSMP5 MPP( 25, 0x1, 0, 0, 0, 0, 1, 1, 1 )
-+#define MPP25_TDM_SPI_SCK MPP( 25, 0x2, 0, 0, 0, 0, 1, 1, 1 )
- #define MPP25_GE1_RXD1 MPP( 25, 0x3, 0, 0, 0, 1, 1, 1, 1 )
--#define MPP25_AU_I2SLRCLK MPP( 25, 0x4, 0, 1, 0, 0, 1, 1, 1 )
-+#define MPP25_AU_I2SLRCLK MPP( 25, 0x4, 0, 0, 0, 0, 1, 1, 1 )
- #define MPP25_LCD_D5 MPP( 25, 0xb, 0, 0, 0, 0, 0, 0, 1 )
-
- #define MPP26_GPIO MPP( 26, 0x0, 1, 1, 0, 1, 1, 1, 1 )
--#define MPP26_TSMP6 MPP( 26, 0x1, 1, 1, 0, 0, 1, 1, 1 )
--#define MPP26_TDM_SPI_MISO MPP( 26, 0x2, 1, 0, 0, 0, 1, 1, 1 )
-+#define MPP26_TSMP6 MPP( 26, 0x1, 0, 0, 0, 0, 1, 1, 1 )
-+#define MPP26_TDM_SPI_MISO MPP( 26, 0x2, 0, 0, 0, 0, 1, 1, 1 )
- #define MPP26_GE1_RXD2 MPP( 26, 0x3, 0, 0, 0, 1, 1, 1, 1 )
--#define MPP26_AU_I2SMCLK MPP( 26, 0x4, 0, 1, 0, 0, 1, 1, 1 )
-+#define MPP26_AU_I2SMCLK MPP( 26, 0x4, 0, 0, 0, 0, 1, 1, 1 )
- #define MPP26_LCD_D6 MPP( 26, 0xb, 0, 0, 0, 0, 0, 0, 1 )
-
- #define MPP27_GPIO MPP( 27, 0x0, 1, 1, 0, 1, 1, 1, 1 )
--#define MPP27_TSMP7 MPP( 27, 0x1, 1, 1, 0, 0, 1, 1, 1 )
--#define MPP27_TDM_SPI_MOSI MPP( 27, 0x2, 0, 1, 0, 0, 1, 1, 1 )
-+#define MPP27_TSMP7 MPP( 27, 0x1, 0, 0, 0, 0, 1, 1, 1 )
-+#define MPP27_TDM_SPI_MOSI MPP( 27, 0x2, 0, 0, 0, 0, 1, 1, 1 )
- #define MPP27_GE1_RXD3 MPP( 27, 0x3, 0, 0, 0, 1, 1, 1, 1 )
--#define MPP27_AU_I2SDI MPP( 27, 0x4, 1, 0, 0, 0, 1, 1, 1 )
-+#define MPP27_AU_I2SDI MPP( 27, 0x4, 0, 0, 0, 0, 1, 1, 1 )
- #define MPP27_LCD_D7 MPP( 27, 0xb, 0, 0, 0, 0, 0, 0, 1 )
-
- #define MPP28_GPIO MPP( 28, 0x0, 1, 1, 0, 1, 1, 1, 1 )
--#define MPP28_TSMP8 MPP( 28, 0x1, 1, 1, 0, 0, 1, 1, 1 )
-+#define MPP28_TSMP8 MPP( 28, 0x1, 0, 0, 0, 0, 1, 1, 1 )
- #define MPP28_TDM_CODEC_INTn MPP( 28, 0x2, 0, 0, 0, 0, 1, 1, 1 )
- #define MPP28_GE1_COL MPP( 28, 0x3, 0, 0, 0, 1, 1, 1, 1 )
--#define MPP28_AU_EXTCLK MPP( 28, 0x4, 1, 0, 0, 0, 1, 1, 1 )
-+#define MPP28_AU_EXTCLK MPP( 28, 0x4, 0, 0, 0, 0, 1, 1, 1 )
- #define MPP28_LCD_D8 MPP( 28, 0xb, 0, 0, 0, 0, 0, 0, 1 )
-
- #define MPP29_GPIO MPP( 29, 0x0, 1, 1, 0, 1, 1, 1, 1 )
--#define MPP29_TSMP9 MPP( 29, 0x1, 1, 1, 0, 0, 1, 1, 1 )
-+#define MPP29_TSMP9 MPP( 29, 0x1, 0, 0, 0, 0, 1, 1, 1 )
- #define MPP29_TDM_CODEC_RSTn MPP( 29, 0x2, 0, 0, 0, 0, 1, 1, 1 )
- #define MPP29_GE1_TCLK MPP( 29, 0x3, 0, 0, 0, 1, 1, 1, 1 )
- #define MPP29_LCD_D9 MPP( 29, 0xb, 0, 0, 0, 0, 0, 0, 1 )
-
- #define MPP30_GPIO MPP( 30, 0x0, 1, 1, 0, 1, 1, 1, 1 )
--#define MPP30_TSMP10 MPP( 30, 0x1, 1, 1, 0, 0, 1, 1, 1 )
--#define MPP30_TDM_PCLK MPP( 30, 0x2, 1, 1, 0, 0, 1, 1, 1 )
-+#define MPP30_TSMP10 MPP( 30, 0x1, 0, 0, 0, 0, 1, 1, 1 )
-+#define MPP30_TDM_PCLK MPP( 30, 0x2, 0, 0, 0, 0, 1, 1, 1 )
- #define MPP30_GE1_RXCTL MPP( 30, 0x3, 0, 0, 0, 1, 1, 1, 1 )
- #define MPP30_LCD_D10 MPP( 30, 0xb, 0, 0, 0, 0, 0, 0, 1 )
-
- #define MPP31_GPIO MPP( 31, 0x0, 1, 1, 0, 1, 1, 1, 1 )
--#define MPP31_TSMP11 MPP( 31, 0x1, 1, 1, 0, 0, 1, 1, 1 )
--#define MPP31_TDM_FS MPP( 31, 0x2, 1, 1, 0, 0, 1, 1, 1 )
-+#define MPP31_TSMP11 MPP( 31, 0x1, 0, 0, 0, 0, 1, 1, 1 )
-+#define MPP31_TDM_FS MPP( 31, 0x2, 0, 0, 0, 0, 1, 1, 1 )
- #define MPP31_GE1_RXCLK MPP( 31, 0x3, 0, 0, 0, 1, 1, 1, 1 )
- #define MPP31_LCD_D11 MPP( 31, 0xb, 0, 0, 0, 0, 0, 0, 1 )
-
- #define MPP32_GPIO MPP( 32, 0x0, 1, 1, 0, 1, 1, 1, 1 )
--#define MPP32_TSMP12 MPP( 32, 0x1, 1, 1, 0, 0, 1, 1, 1 )
--#define MPP32_TDM_DRX MPP( 32, 0x2, 1, 0, 0, 0, 1, 1, 1 )
-+#define MPP32_TSMP12 MPP( 32, 0x1, 0, 0, 0, 0, 1, 1, 1 )
-+#define MPP32_TDM_DRX MPP( 32, 0x2, 0, 0, 0, 0, 1, 1, 1 )
- #define MPP32_GE1_TCLKOUT MPP( 32, 0x3, 0, 0, 0, 1, 1, 1, 1 )
- #define MPP32_LCD_D12 MPP( 32, 0xb, 0, 0, 0, 0, 0, 0, 1 )
-
- #define MPP33_GPO MPP( 33, 0x0, 0, 1, 0, 1, 1, 1, 1 )
--#define MPP33_TDM_DTX MPP( 33, 0x2, 0, 1, 0, 0, 1, 1, 1 )
-+#define MPP33_TDM_DTX MPP( 33, 0x2, 0, 0, 0, 0, 1, 1, 1 )
- #define MPP33_GE1_TXCTL MPP( 33, 0x3, 0, 0, 0, 1, 1, 1, 1 )
- #define MPP33_LCD_D13 MPP( 33, 0xb, 0, 0, 0, 0, 0, 0, 1 )
-
- #define MPP34_GPIO MPP( 34, 0x0, 1, 1, 0, 1, 1, 1, 1 )
--#define MPP34_TDM_SPI_CS1 MPP( 34, 0x2, 0, 1, 0, 0, 1, 1, 1 )
-+#define MPP34_TDM_SPI_CS1 MPP( 34, 0x2, 0, 0, 0, 0, 1, 1, 1 )
- #define MPP34_GE1_TXEN MPP( 34, 0x3, 0, 0, 0, 1, 1, 1, 1 )
--#define MPP34_SATA1_ACTn MPP( 34, 0x5, 0, 1, 0, 0, 0, 1, 1 )
-+#define MPP34_SATA1_ACTn MPP( 34, 0x5, 0, 0, 0, 0, 0, 1, 1 )
- #define MPP34_LCD_D14 MPP( 34, 0xb, 0, 0, 0, 0, 0, 0, 1 )
-
- #define MPP35_GPIO MPP( 35, 0x0, 1, 1, 1, 1, 1, 1, 1 )
--#define MPP35_TDM_CH0_TX_QL MPP( 35, 0x2, 0, 1, 0, 0, 1, 1, 1 )
-+#define MPP35_TDM_CH0_TX_QL MPP( 35, 0x2, 0, 0, 0, 0, 1, 1, 1 )
- #define MPP35_GE1_RXERR MPP( 35, 0x3, 0, 0, 0, 1, 1, 1, 1 )
--#define MPP35_SATA0_ACTn MPP( 35, 0x5, 0, 1, 0, 1, 1, 1, 1 )
-+#define MPP35_SATA0_ACTn MPP( 35, 0x5, 0, 0, 0, 1, 1, 1, 1 )
- #define MPP35_LCD_D15 MPP( 22, 0xb, 0, 0, 0, 0, 0, 0, 1 )
--#define MPP35_MII0_RXERR MPP( 35, 0xc, 1, 0, 1, 1, 1, 1, 1 )
-+#define MPP35_MII0_RXERR MPP( 35, 0xc, 0, 0, 1, 1, 1, 1, 1 )
-
- #define MPP36_GPIO MPP( 36, 0x0, 1, 1, 1, 0, 0, 1, 1 )
--#define MPP36_TSMP0 MPP( 36, 0x1, 1, 1, 0, 0, 0, 1, 1 )
--#define MPP36_TDM_SPI_CS1 MPP( 36, 0x2, 0, 1, 0, 0, 0, 1, 1 )
--#define MPP36_AU_SPDIFI MPP( 36, 0x4, 1, 0, 1, 0, 0, 1, 1 )
--#define MPP36_TW1_SDA MPP( 36, 0xb, 1, 1, 0, 0, 0, 0, 1 )
-+#define MPP36_TSMP0 MPP( 36, 0x1, 0, 0, 0, 0, 0, 1, 1 )
-+#define MPP36_TDM_SPI_CS1 MPP( 36, 0x2, 0, 0, 0, 0, 0, 1, 1 )
-+#define MPP36_AU_SPDIFI MPP( 36, 0x4, 0, 0, 1, 0, 0, 1, 1 )
-+#define MPP36_TW1_SDA MPP( 36, 0xb, 0, 0, 0, 0, 0, 0, 1 )
-
- #define MPP37_GPIO MPP( 37, 0x0, 1, 1, 1, 0, 0, 1, 1 )
--#define MPP37_TSMP1 MPP( 37, 0x1, 1, 1, 0, 0, 0, 1, 1 )
--#define MPP37_TDM_CH2_TX_QL MPP( 37, 0x2, 0, 1, 0, 0, 0, 1, 1 )
--#define MPP37_AU_SPDIFO MPP( 37, 0x4, 0, 1, 1, 0, 0, 1, 1 )
--#define MPP37_TW1_SCK MPP( 37, 0xb, 1, 1, 0, 0, 0, 0, 1 )
-+#define MPP37_TSMP1 MPP( 37, 0x1, 0, 0, 0, 0, 0, 1, 1 )
-+#define MPP37_TDM_CH2_TX_QL MPP( 37, 0x2, 0, 0, 0, 0, 0, 1, 1 )
-+#define MPP37_AU_SPDIFO MPP( 37, 0x4, 0, 0, 1, 0, 0, 1, 1 )
-+#define MPP37_TW1_SCK MPP( 37, 0xb, 0, 0, 0, 0, 0, 0, 1 )
-
- #define MPP38_GPIO MPP( 38, 0x0, 1, 1, 1, 0, 0, 1, 1 )
--#define MPP38_TSMP2 MPP( 38, 0x1, 1, 1, 0, 0, 0, 1, 1 )
--#define MPP38_TDM_CH2_RX_QL MPP( 38, 0x2, 0, 1, 0, 0, 0, 1, 1 )
--#define MPP38_AU_SPDIFRMLCLK MPP( 38, 0x4, 0, 1, 1, 0, 0, 1, 1 )
-+#define MPP38_TSMP2 MPP( 38, 0x1, 0, 0, 0, 0, 0, 1, 1 )
-+#define MPP38_TDM_CH2_RX_QL MPP( 38, 0x2, 0, 0, 0, 0, 0, 1, 1 )
-+#define MPP38_AU_SPDIFRMLCLK MPP( 38, 0x4, 0, 0, 1, 0, 0, 1, 1 )
- #define MPP38_LCD_D18 MPP( 38, 0xb, 0, 0, 0, 0, 0, 0, 1 )
-
- #define MPP39_GPIO MPP( 39, 0x0, 1, 1, 1, 0, 0, 1, 1 )
--#define MPP39_TSMP3 MPP( 39, 0x1, 1, 1, 0, 0, 0, 1, 1 )
--#define MPP39_TDM_SPI_CS0 MPP( 39, 0x2, 0, 1, 0, 0, 0, 1, 1 )
--#define MPP39_AU_I2SBCLK MPP( 39, 0x4, 0, 1, 1, 0, 0, 1, 1 )
-+#define MPP39_TSMP3 MPP( 39, 0x1, 0, 0, 0, 0, 0, 1, 1 )
-+#define MPP39_TDM_SPI_CS0 MPP( 39, 0x2, 0, 0, 0, 0, 0, 1, 1 )
-+#define MPP39_AU_I2SBCLK MPP( 39, 0x4, 0, 0, 1, 0, 0, 1, 1 )
- #define MPP39_LCD_D19 MPP( 39, 0xb, 0, 0, 0, 0, 0, 0, 1 )
-
- #define MPP40_GPIO MPP( 40, 0x0, 1, 1, 1, 0, 0, 1, 1 )
--#define MPP40_TSMP4 MPP( 40, 0x1, 1, 1, 0, 0, 0, 1, 1 )
--#define MPP40_TDM_SPI_SCK MPP( 40, 0x2, 0, 1, 0, 0, 0, 1, 1 )
--#define MPP40_AU_I2SDO MPP( 40, 0x4, 0, 1, 1, 0, 0, 1, 1 )
-+#define MPP40_TSMP4 MPP( 40, 0x1, 0, 0, 0, 0, 0, 1, 1 )
-+#define MPP40_TDM_SPI_SCK MPP( 40, 0x2, 0, 0, 0, 0, 0, 1, 1 )
-+#define MPP40_AU_I2SDO MPP( 40, 0x4, 0, 0, 1, 0, 0, 1, 1 )
- #define MPP40_LCD_D20 MPP( 40, 0xb, 0, 0, 0, 0, 0, 0, 1 )
-
- #define MPP41_GPIO MPP( 41, 0x0, 1, 1, 1, 0, 0, 1, 1 )
--#define MPP41_TSMP5 MPP( 41, 0x1, 1, 1, 0, 0, 0, 1, 1 )
--#define MPP41_TDM_SPI_MISO MPP( 41, 0x2, 1, 0, 0, 0, 0, 1, 1 )
--#define MPP41_AU_I2SLRCLK MPP( 41, 0x4, 0, 1, 1, 0, 0, 1, 1 )
-+#define MPP41_TSMP5 MPP( 41, 0x1, 0, 0, 0, 0, 0, 1, 1 )
-+#define MPP41_TDM_SPI_MISO MPP( 41, 0x2, 0, 0, 0, 0, 0, 1, 1 )
-+#define MPP41_AU_I2SLRCLK MPP( 41, 0x4, 0, 0, 1, 0, 0, 1, 1 )
- #define MPP41_LCD_D21 MPP( 41, 0xb, 0, 0, 0, 0, 0, 0, 1 )
-
- #define MPP42_GPIO MPP( 42, 0x0, 1, 1, 1, 0, 0, 1, 1 )
--#define MPP42_TSMP6 MPP( 42, 0x1, 1, 1, 0, 0, 0, 1, 1 )
--#define MPP42_TDM_SPI_MOSI MPP( 42, 0x2, 0, 1, 0, 0, 0, 1, 1 )
--#define MPP42_AU_I2SMCLK MPP( 42, 0x4, 0, 1, 1, 0, 0, 1, 1 )
-+#define MPP42_TSMP6 MPP( 42, 0x1, 0, 0, 0, 0, 0, 1, 1 )
-+#define MPP42_TDM_SPI_MOSI MPP( 42, 0x2, 0, 0, 0, 0, 0, 1, 1 )
-+#define MPP42_AU_I2SMCLK MPP( 42, 0x4, 0, 0, 1, 0, 0, 1, 1 )
- #define MPP42_LCD_D22 MPP( 42, 0xb, 0, 0, 0, 0, 0, 0, 1 )
-
- #define MPP43_GPIO MPP( 43, 0x0, 1, 1, 1, 0, 0, 1, 1 )
--#define MPP43_TSMP7 MPP( 43, 0x1, 1, 1, 0, 0, 0, 1, 1 )
-+#define MPP43_TSMP7 MPP( 43, 0x1, 0, 0, 0, 0, 0, 1, 1 )
- #define MPP43_TDM_CODEC_INTn MPP( 43, 0x2, 0, 0, 0, 0, 0, 1, 1 )
--#define MPP43_AU_I2SDI MPP( 43, 0x4, 1, 0, 1, 0, 0, 1, 1 )
-+#define MPP43_AU_I2SDI MPP( 43, 0x4, 0, 0, 1, 0, 0, 1, 1 )
- #define MPP43_LCD_D23 MPP( 22, 0xb, 0, 0, 0, 0, 0, 0, 1 )
-
- #define MPP44_GPIO MPP( 44, 0x0, 1, 1, 1, 0, 0, 1, 1 )
--#define MPP44_TSMP8 MPP( 44, 0x1, 1, 1, 0, 0, 0, 1, 1 )
-+#define MPP44_TSMP8 MPP( 44, 0x1, 0, 0, 0, 0, 0, 1, 1 )
- #define MPP44_TDM_CODEC_RSTn MPP( 44, 0x2, 0, 0, 0, 0, 0, 1, 1 )
--#define MPP44_AU_EXTCLK MPP( 44, 0x4, 1, 0, 1, 0, 0, 1, 1 )
-+#define MPP44_AU_EXTCLK MPP( 44, 0x4, 0, 0, 1, 0, 0, 1, 1 )
- #define MPP44_LCD_CLK MPP( 44, 0xb, 0, 0, 0, 0, 0, 0, 1 )
-
- #define MPP45_GPIO MPP( 45, 0x0, 1, 1, 0, 0, 0, 1, 1 )
--#define MPP45_TSMP9 MPP( 45, 0x1, 1, 1, 0, 0, 0, 1, 1 )
--#define MPP45_TDM_PCLK MPP( 45, 0x2, 1, 1, 0, 0, 0, 1, 1 )
-+#define MPP45_TSMP9 MPP( 45, 0x1, 0, 0, 0, 0, 0, 1, 1 )
-+#define MPP45_TDM_PCLK MPP( 45, 0x2, 0, 0, 0, 0, 0, 1, 1 )
- #define MPP245_LCD_E MPP( 45, 0xb, 0, 0, 0, 0, 0, 0, 1 )
-
- #define MPP46_GPIO MPP( 46, 0x0, 1, 1, 0, 0, 0, 1, 1 )
--#define MPP46_TSMP10 MPP( 46, 0x1, 1, 1, 0, 0, 0, 1, 1 )
--#define MPP46_TDM_FS MPP( 46, 0x2, 1, 1, 0, 0, 0, 1, 1 )
-+#define MPP46_TSMP10 MPP( 46, 0x1, 0, 0, 0, 0, 0, 1, 1 )
-+#define MPP46_TDM_FS MPP( 46, 0x2, 0, 0, 0, 0, 0, 1, 1 )
- #define MPP46_LCD_HSYNC MPP( 46, 0xb, 0, 0, 0, 0, 0, 0, 1 )
-
- #define MPP47_GPIO MPP( 47, 0x0, 1, 1, 0, 0, 0, 1, 1 )
--#define MPP47_TSMP11 MPP( 47, 0x1, 1, 1, 0, 0, 0, 1, 1 )
--#define MPP47_TDM_DRX MPP( 47, 0x2, 1, 0, 0, 0, 0, 1, 1 )
-+#define MPP47_TSMP11 MPP( 47, 0x1, 0, 0, 0, 0, 0, 1, 1 )
-+#define MPP47_TDM_DRX MPP( 47, 0x2, 0, 0, 0, 0, 0, 1, 1 )
- #define MPP47_LCD_VSYNC MPP( 47, 0xb, 0, 0, 0, 0, 0, 0, 1 )
-
- #define MPP48_GPIO MPP( 48, 0x0, 1, 1, 0, 0, 0, 1, 1 )
--#define MPP48_TSMP12 MPP( 48, 0x1, 1, 1, 0, 0, 0, 1, 1 )
--#define MPP48_TDM_DTX MPP( 48, 0x2, 0, 1, 0, 0, 0, 1, 1 )
-+#define MPP48_TSMP12 MPP( 48, 0x1, 0, 0, 0, 0, 0, 1, 1 )
-+#define MPP48_TDM_DTX MPP( 48, 0x2, 0, 0, 0, 0, 0, 1, 1 )
- #define MPP48_LCD_D16 MPP( 22, 0xb, 0, 0, 0, 0, 0, 0, 1 )
-
- #define MPP49_GPIO MPP( 49, 0x0, 1, 1, 0, 0, 0, 1, 0 )
- #define MPP49_GPO MPP( 49, 0x0, 0, 1, 0, 0, 0, 0, 1 )
--#define MPP49_TSMP9 MPP( 49, 0x1, 1, 1, 0, 0, 0, 1, 0 )
--#define MPP49_TDM_CH0_RX_QL MPP( 49, 0x2, 0, 1, 0, 0, 0, 1, 1 )
--#define MPP49_PTP_CLK MPP( 49, 0x5, 1, 0, 0, 0, 0, 1, 0 )
--#define MPP49_PEX0_CLKREQ MPP( 49, 0xa, 0, 1, 0, 0, 0, 0, 1 )
-+#define MPP49_TSMP9 MPP( 49, 0x1, 0, 0, 0, 0, 0, 1, 0 )
-+#define MPP49_TDM_CH0_RX_QL MPP( 49, 0x2, 0, 0, 0, 0, 0, 1, 1 )
-+#define MPP49_PTP_CLK MPP( 49, 0x5, 0, 0, 0, 0, 0, 1, 0 )
-+#define MPP49_PEX0_CLKREQ MPP( 49, 0xa, 0, 0, 0, 0, 0, 0, 1 )
- #define MPP49_LCD_D17 MPP( 49, 0xb, 0, 0, 0, 0, 0, 0, 1 )
-
- #define MPP_MAX 49
-diff --git a/arch/arm/mach-mv78xx0/mpp.h b/arch/arm/mach-mv78xx0/mpp.h
-index b61b509..3752302 100644
---- a/arch/arm/mach-mv78xx0/mpp.h
-+++ b/arch/arm/mach-mv78xx0/mpp.h
-@@ -24,296 +24,296 @@
- #define MPP_78100_A0_MASK MPP(0, 0x0, 0, 0, 1)
-
- #define MPP0_GPIO MPP(0, 0x0, 1, 1, 1)
--#define MPP0_GE0_COL MPP(0, 0x1, 1, 0, 1)
--#define MPP0_GE1_TXCLK MPP(0, 0x2, 0, 1, 1)
-+#define MPP0_GE0_COL MPP(0, 0x1, 0, 0, 1)
-+#define MPP0_GE1_TXCLK MPP(0, 0x2, 0, 0, 1)
- #define MPP0_UNUSED MPP(0, 0x3, 0, 0, 1)
-
- #define MPP1_GPIO MPP(1, 0x0, 1, 1, 1)
--#define MPP1_GE0_RXERR MPP(1, 0x1, 1, 0, 1)
--#define MPP1_GE1_TXCTL MPP(1, 0x2, 0, 1, 1)
-+#define MPP1_GE0_RXERR MPP(1, 0x1, 0, 0, 1)
-+#define MPP1_GE1_TXCTL MPP(1, 0x2, 0, 0, 1)
- #define MPP1_UNUSED MPP(1, 0x3, 0, 0, 1)
-
- #define MPP2_GPIO MPP(2, 0x0, 1, 1, 1)
--#define MPP2_GE0_CRS MPP(2, 0x1, 1, 0, 1)
--#define MPP2_GE1_RXCTL MPP(2, 0x2, 1, 0, 1)
-+#define MPP2_GE0_CRS MPP(2, 0x1, 0, 0, 1)
-+#define MPP2_GE1_RXCTL MPP(2, 0x2, 0, 0, 1)
- #define MPP2_UNUSED MPP(2, 0x3, 0, 0, 1)
-
- #define MPP3_GPIO MPP(3, 0x0, 1, 1, 1)
--#define MPP3_GE0_TXERR MPP(3, 0x1, 0, 1, 1)
--#define MPP3_GE1_RXCLK MPP(3, 0x2, 1, 0, 1)
-+#define MPP3_GE0_TXERR MPP(3, 0x1, 0, 0, 1)
-+#define MPP3_GE1_RXCLK MPP(3, 0x2, 0, 0, 1)
- #define MPP3_UNUSED MPP(3, 0x3, 0, 0, 1)
-
- #define MPP4_GPIO MPP(4, 0x0, 1, 1, 1)
--#define MPP4_GE0_TXD4 MPP(4, 0x1, 0, 1, 1)
--#define MPP4_GE1_TXD0 MPP(4, 0x2, 0, 1, 1)
-+#define MPP4_GE0_TXD4 MPP(4, 0x1, 0, 0, 1)
-+#define MPP4_GE1_TXD0 MPP(4, 0x2, 0, 0, 1)
- #define MPP4_UNUSED MPP(4, 0x3, 0, 0, 1)
-
- #define MPP5_GPIO MPP(5, 0x0, 1, 1, 1)
--#define MPP5_GE0_TXD5 MPP(5, 0x1, 0, 1, 1)
--#define MPP5_GE1_TXD1 MPP(5, 0x2, 0, 1, 1)
-+#define MPP5_GE0_TXD5 MPP(5, 0x1, 0, 0, 1)
-+#define MPP5_GE1_TXD1 MPP(5, 0x2, 0, 0, 1)
- #define MPP5_UNUSED MPP(5, 0x3, 0, 0, 1)
-
- #define MPP6_GPIO MPP(6, 0x0, 1, 1, 1)
--#define MPP6_GE0_TXD6 MPP(6, 0x1, 0, 1, 1)
--#define MPP6_GE1_TXD2 MPP(6, 0x2, 0, 1, 1)
-+#define MPP6_GE0_TXD6 MPP(6, 0x1, 0, 0, 1)
-+#define MPP6_GE1_TXD2 MPP(6, 0x2, 0, 0, 1)
- #define MPP6_UNUSED MPP(6, 0x3, 0, 0, 1)
-
- #define MPP7_GPIO MPP(7, 0x0, 1, 1, 1)
--#define MPP7_GE0_TXD7 MPP(7, 0x1, 0, 1, 1)
--#define MPP7_GE1_TXD3 MPP(7, 0x2, 0, 1, 1)
-+#define MPP7_GE0_TXD7 MPP(7, 0x1, 0, 0, 1)
-+#define MPP7_GE1_TXD3 MPP(7, 0x2, 0, 0, 1)
- #define MPP7_UNUSED MPP(7, 0x3, 0, 0, 1)
-
- #define MPP8_GPIO MPP(8, 0x0, 1, 1, 1)
--#define MPP8_GE0_RXD4 MPP(8, 0x1, 1, 0, 1)
--#define MPP8_GE1_RXD0 MPP(8, 0x2, 1, 0, 1)
-+#define MPP8_GE0_RXD4 MPP(8, 0x1, 0, 0, 1)
-+#define MPP8_GE1_RXD0 MPP(8, 0x2, 0, 0, 1)
- #define MPP8_UNUSED MPP(8, 0x3, 0, 0, 1)
-
- #define MPP9_GPIO MPP(9, 0x0, 1, 1, 1)
--#define MPP9_GE0_RXD5 MPP(9, 0x1, 1, 0, 1)
--#define MPP9_GE1_RXD1 MPP(9, 0x2, 1, 0, 1)
-+#define MPP9_GE0_RXD5 MPP(9, 0x1, 0, 0, 1)
-+#define MPP9_GE1_RXD1 MPP(9, 0x2, 0, 0, 1)
- #define MPP9_UNUSED MPP(9, 0x3, 0, 0, 1)
-
- #define MPP10_GPIO MPP(10, 0x0, 1, 1, 1)
--#define MPP10_GE0_RXD6 MPP(10, 0x1, 1, 0, 1)
--#define MPP10_GE1_RXD2 MPP(10, 0x2, 1, 0, 1)
-+#define MPP10_GE0_RXD6 MPP(10, 0x1, 0, 0, 1)
-+#define MPP10_GE1_RXD2 MPP(10, 0x2, 0, 0, 1)
- #define MPP10_UNUSED MPP(10, 0x3, 0, 0, 1)
-
- #define MPP11_GPIO MPP(11, 0x0, 1, 1, 1)
--#define MPP11_GE0_RXD7 MPP(11, 0x1, 1, 0, 1)
--#define MPP11_GE1_RXD3 MPP(11, 0x2, 1, 0, 1)
-+#define MPP11_GE0_RXD7 MPP(11, 0x1, 0, 0, 1)
-+#define MPP11_GE1_RXD3 MPP(11, 0x2, 0, 0, 1)
- #define MPP11_UNUSED MPP(11, 0x3, 0, 0, 1)
-
- #define MPP12_GPIO MPP(12, 0x0, 1, 1, 1)
--#define MPP12_M_BB MPP(12, 0x3, 1, 0, 1)
--#define MPP12_UA0_CTSn MPP(12, 0x4, 1, 0, 1)
--#define MPP12_NAND_FLASH_REn0 MPP(12, 0x5, 0, 1, 1)
--#define MPP12_TDM0_SCSn MPP(12, 0X6, 0, 1, 1)
-+#define MPP12_M_BB MPP(12, 0x3, 0, 0, 1)
-+#define MPP12_UA0_CTSn MPP(12, 0x4, 0, 0, 1)
-+#define MPP12_NAND_FLASH_REn0 MPP(12, 0x5, 0, 0, 1)
-+#define MPP12_TDM0_SCSn MPP(12, 0X6, 0, 0, 1)
- #define MPP12_UNUSED MPP(12, 0x1, 0, 0, 1)
-
- #define MPP13_GPIO MPP(13, 0x0, 1, 1, 1)
--#define MPP13_SYSRST_OUTn MPP(13, 0x3, 0, 1, 1)
--#define MPP13_UA0_RTSn MPP(13, 0x4, 0, 1, 1)
--#define MPP13_NAN_FLASH_WEn0 MPP(13, 0x5, 0, 1, 1)
--#define MPP13_TDM_SCLK MPP(13, 0x6, 0, 1, 1)
-+#define MPP13_SYSRST_OUTn MPP(13, 0x3, 0, 0, 1)
-+#define MPP13_UA0_RTSn MPP(13, 0x4, 0, 0, 1)
-+#define MPP13_NAN_FLASH_WEn0 MPP(13, 0x5, 0, 0, 1)
-+#define MPP13_TDM_SCLK MPP(13, 0x6, 0, 0, 1)
- #define MPP13_UNUSED MPP(13, 0x1, 0, 0, 1)
-
- #define MPP14_GPIO MPP(14, 0x0, 1, 1, 1)
--#define MPP14_SATA1_ACTn MPP(14, 0x3, 0, 1, 1)
--#define MPP14_UA1_CTSn MPP(14, 0x4, 1, 0, 1)
--#define MPP14_NAND_FLASH_REn1 MPP(14, 0x5, 0, 1, 1)
--#define MPP14_TDM_SMOSI MPP(14, 0x6, 0, 1, 1)
-+#define MPP14_SATA1_ACTn MPP(14, 0x3, 0, 0, 1)
-+#define MPP14_UA1_CTSn MPP(14, 0x4, 0, 0, 1)
-+#define MPP14_NAND_FLASH_REn1 MPP(14, 0x5, 0, 0, 1)
-+#define MPP14_TDM_SMOSI MPP(14, 0x6, 0, 0, 1)
- #define MPP14_UNUSED MPP(14, 0x1, 0, 0, 1)
-
- #define MPP15_GPIO MPP(15, 0x0, 1, 1, 1)
--#define MPP15_SATA0_ACTn MPP(15, 0x3, 0, 1, 1)
--#define MPP15_UA1_RTSn MPP(15, 0x4, 0, 1, 1)
--#define MPP15_NAND_FLASH_WEn1 MPP(15, 0x5, 0, 1, 1)
--#define MPP15_TDM_SMISO MPP(15, 0x6, 1, 0, 1)
-+#define MPP15_SATA0_ACTn MPP(15, 0x3, 0, 0, 1)
-+#define MPP15_UA1_RTSn MPP(15, 0x4, 0, 0, 1)
-+#define MPP15_NAND_FLASH_WEn1 MPP(15, 0x5, 0, 0, 1)
-+#define MPP15_TDM_SMISO MPP(15, 0x6, 0, 0, 1)
- #define MPP15_UNUSED MPP(15, 0x1, 0, 0, 1)
-
- #define MPP16_GPIO MPP(16, 0x0, 1, 1, 1)
--#define MPP16_SATA1_PRESENTn MPP(16, 0x3, 0, 1, 1)
--#define MPP16_UA2_TXD MPP(16, 0x4, 0, 1, 1)
--#define MPP16_NAND_FLASH_REn3 MPP(16, 0x5, 0, 1, 1)
--#define MPP16_TDM_INTn MPP(16, 0x6, 1, 0, 1)
-+#define MPP16_SATA1_PRESENTn MPP(16, 0x3, 0, 0, 1)
-+#define MPP16_UA2_TXD MPP(16, 0x4, 0, 0, 1)
-+#define MPP16_NAND_FLASH_REn3 MPP(16, 0x5, 0, 0, 1)
-+#define MPP16_TDM_INTn MPP(16, 0x6, 0, 0, 1)
- #define MPP16_UNUSED MPP(16, 0x1, 0, 0, 1)
-
-
- #define MPP17_GPIO MPP(17, 0x0, 1, 1, 1)
--#define MPP17_SATA0_PRESENTn MPP(17, 0x3, 0, 1, 1)
--#define MPP17_UA2_RXD MPP(17, 0x4, 1, 0, 1)
--#define MPP17_NAND_FLASH_WEn3 MPP(17, 0x5, 0, 1, 1)
--#define MPP17_TDM_RSTn MPP(17, 0x6, 0, 1, 1)
-+#define MPP17_SATA0_PRESENTn MPP(17, 0x3, 0, 0, 1)
-+#define MPP17_UA2_RXD MPP(17, 0x4, 0, 0, 1)
-+#define MPP17_NAND_FLASH_WEn3 MPP(17, 0x5, 0, 0, 1)
-+#define MPP17_TDM_RSTn MPP(17, 0x6, 0, 0, 1)
- #define MPP17_UNUSED MPP(17, 0x1, 0, 0, 1)
-
-
- #define MPP18_GPIO MPP(18, 0x0, 1, 1, 1)
--#define MPP18_UA0_CTSn MPP(18, 0x4, 1, 0, 1)
--#define MPP18_BOOT_FLASH_REn MPP(18, 0x5, 0, 1, 1)
-+#define MPP18_UA0_CTSn MPP(18, 0x4, 0, 0, 1)
-+#define MPP18_BOOT_FLASH_REn MPP(18, 0x5, 0, 0, 1)
- #define MPP18_UNUSED MPP(18, 0x1, 0, 0, 1)
-
-
-
- #define MPP19_GPIO MPP(19, 0x0, 1, 1, 1)
--#define MPP19_UA0_CTSn MPP(19, 0x4, 0, 1, 1)
--#define MPP19_BOOT_FLASH_WEn MPP(19, 0x5, 0, 1, 1)
-+#define MPP19_UA0_CTSn MPP(19, 0x4, 0, 0, 1)
-+#define MPP19_BOOT_FLASH_WEn MPP(19, 0x5, 0, 0, 1)
- #define MPP19_UNUSED MPP(19, 0x1, 0, 0, 1)
-
-
- #define MPP20_GPIO MPP(20, 0x0, 1, 1, 1)
--#define MPP20_UA1_CTSs MPP(20, 0x4, 1, 0, 1)
--#define MPP20_TDM_PCLK MPP(20, 0x6, 1, 1, 0)
-+#define MPP20_UA1_CTSs MPP(20, 0x4, 0, 0, 1)
-+#define MPP20_TDM_PCLK MPP(20, 0x6, 0, 0, 0)
- #define MPP20_UNUSED MPP(20, 0x1, 0, 0, 1)
-
-
-
- #define MPP21_GPIO MPP(21, 0x0, 1, 1, 1)
--#define MPP21_UA1_CTSs MPP(21, 0x4, 0, 1, 1)
--#define MPP21_TDM_FSYNC MPP(21, 0x6, 1, 1, 0)
-+#define MPP21_UA1_CTSs MPP(21, 0x4, 0, 0, 1)
-+#define MPP21_TDM_FSYNC MPP(21, 0x6, 0, 0, 0)
- #define MPP21_UNUSED MPP(21, 0x1, 0, 0, 1)
-
-
-
- #define MPP22_GPIO MPP(22, 0x0, 1, 1, 1)
--#define MPP22_UA3_TDX MPP(22, 0x4, 0, 1, 1)
--#define MPP22_NAND_FLASH_REn2 MPP(22, 0x5, 0, 1, 1)
--#define MPP22_TDM_DRX MPP(22, 0x6, 1, 0, 1)
-+#define MPP22_UA3_TDX MPP(22, 0x4, 0, 0, 1)
-+#define MPP22_NAND_FLASH_REn2 MPP(22, 0x5, 0, 0, 1)
-+#define MPP22_TDM_DRX MPP(22, 0x6, 0, 0, 1)
- #define MPP22_UNUSED MPP(22, 0x1, 0, 0, 1)
-
-
-
- #define MPP23_GPIO MPP(23, 0x0, 1, 1, 1)
--#define MPP23_UA3_RDX MPP(23, 0x4, 1, 0, 1)
--#define MPP23_NAND_FLASH_WEn2 MPP(23, 0x5, 0, 1, 1)
--#define MPP23_TDM_DTX MPP(23, 0x6, 0, 1, 1)
-+#define MPP23_UA3_RDX MPP(23, 0x4, 0, 0, 1)
-+#define MPP23_NAND_FLASH_WEn2 MPP(23, 0x5, 0, 0, 1)
-+#define MPP23_TDM_DTX MPP(23, 0x6, 0, 0, 1)
- #define MPP23_UNUSED MPP(23, 0x1, 0, 0, 1)
-
-
- #define MPP24_GPIO MPP(24, 0x0, 1, 1, 1)
--#define MPP24_UA2_TXD MPP(24, 0x4, 0, 1, 1)
--#define MPP24_TDM_INTn MPP(24, 0x6, 1, 0, 1)
-+#define MPP24_UA2_TXD MPP(24, 0x4, 0, 0, 1)
-+#define MPP24_TDM_INTn MPP(24, 0x6, 0, 0, 1)
- #define MPP24_UNUSED MPP(24, 0x1, 0, 0, 1)
-
-
- #define MPP25_GPIO MPP(25, 0x0, 1, 1, 1)
--#define MPP25_UA2_RXD MPP(25, 0x4, 1, 0, 1)
--#define MPP25_TDM_RSTn MPP(25, 0x6, 0, 1, 1)
-+#define MPP25_UA2_RXD MPP(25, 0x4, 0, 0, 1)
-+#define MPP25_TDM_RSTn MPP(25, 0x6, 0, 0, 1)
- #define MPP25_UNUSED MPP(25, 0x1, 0, 0, 1)
-
-
- #define MPP26_GPIO MPP(26, 0x0, 1, 1, 1)
--#define MPP26_UA2_CTSn MPP(26, 0x4, 1, 0, 1)
--#define MPP26_TDM_PCLK MPP(26, 0x6, 1, 1, 1)
-+#define MPP26_UA2_CTSn MPP(26, 0x4, 0, 0, 1)
-+#define MPP26_TDM_PCLK MPP(26, 0x6, 0, 0, 1)
- #define MPP26_UNUSED MPP(26, 0x1, 0, 0, 1)
-
-
- #define MPP27_GPIO MPP(27, 0x0, 1, 1, 1)
--#define MPP27_UA2_RTSn MPP(27, 0x4, 0, 1, 1)
--#define MPP27_TDM_FSYNC MPP(27, 0x6, 1, 1, 1)
-+#define MPP27_UA2_RTSn MPP(27, 0x4, 0, 0, 1)
-+#define MPP27_TDM_FSYNC MPP(27, 0x6, 0, 0, 1)
- #define MPP27_UNUSED MPP(27, 0x1, 0, 0, 1)
-
-
- #define MPP28_GPIO MPP(28, 0x0, 1, 1, 1)
--#define MPP28_UA3_TXD MPP(28, 0x4, 0, 1, 1)
--#define MPP28_TDM_DRX MPP(28, 0x6, 1, 0, 1)
-+#define MPP28_UA3_TXD MPP(28, 0x4, 0, 0, 1)
-+#define MPP28_TDM_DRX MPP(28, 0x6, 0, 0, 1)
- #define MPP28_UNUSED MPP(28, 0x1, 0, 0, 1)
-
- #define MPP29_GPIO MPP(29, 0x0, 1, 1, 1)
--#define MPP29_UA3_RXD MPP(29, 0x4, 1, 0, 1)
--#define MPP29_SYSRST_OUTn MPP(29, 0x5, 0, 1, 1)
--#define MPP29_TDM_DTX MPP(29, 0x6, 0, 1, 1)
-+#define MPP29_UA3_RXD MPP(29, 0x4, 0, 0, 1)
-+#define MPP29_SYSRST_OUTn MPP(29, 0x5, 0, 0, 1)
-+#define MPP29_TDM_DTX MPP(29, 0x6, 0, 0, 1)
- #define MPP29_UNUSED MPP(29, 0x1, 0, 0, 1)
-
- #define MPP30_GPIO MPP(30, 0x0, 1, 1, 1)
--#define MPP30_UA3_CTSn MPP(30, 0x4, 1, 0, 1)
-+#define MPP30_UA3_CTSn MPP(30, 0x4, 0, 0, 1)
- #define MPP30_UNUSED MPP(30, 0x1, 0, 0, 1)
-
- #define MPP31_GPIO MPP(31, 0x0, 1, 1, 1)
--#define MPP31_UA3_RTSn MPP(31, 0x4, 0, 1, 1)
--#define MPP31_TDM1_SCSn MPP(31, 0x6, 0, 1, 1)
-+#define MPP31_UA3_RTSn MPP(31, 0x4, 0, 0, 1)
-+#define MPP31_TDM1_SCSn MPP(31, 0x6, 0, 0, 1)
- #define MPP31_UNUSED MPP(31, 0x1, 0, 0, 1)
-
-
- #define MPP32_GPIO MPP(32, 0x1, 1, 1, 1)
--#define MPP32_UA3_TDX MPP(32, 0x4, 0, 1, 1)
--#define MPP32_SYSRST_OUTn MPP(32, 0x5, 0, 1, 1)
--#define MPP32_TDM0_RXQ MPP(32, 0x6, 0, 1, 1)
-+#define MPP32_UA3_TDX MPP(32, 0x4, 0, 0, 1)
-+#define MPP32_SYSRST_OUTn MPP(32, 0x5, 0, 0, 1)
-+#define MPP32_TDM0_RXQ MPP(32, 0x6, 0, 0, 1)
- #define MPP32_UNUSED MPP(32, 0x3, 0, 0, 1)
-
-
- #define MPP33_GPIO MPP(33, 0x1, 1, 1, 1)
--#define MPP33_UA3_RDX MPP(33, 0x4, 1, 0, 1)
--#define MPP33_TDM0_TXQ MPP(33, 0x6, 0, 1, 1)
-+#define MPP33_UA3_RDX MPP(33, 0x4, 0, 0, 1)
-+#define MPP33_TDM0_TXQ MPP(33, 0x6, 0, 0, 1)
- #define MPP33_UNUSED MPP(33, 0x3, 0, 0, 1)
-
-
-
- #define MPP34_GPIO MPP(34, 0x1, 1, 1, 1)
--#define MPP34_UA2_TDX MPP(34, 0x4, 0, 1, 1)
--#define MPP34_TDM1_RXQ MPP(34, 0x6, 0, 1, 1)
-+#define MPP34_UA2_TDX MPP(34, 0x4, 0, 0, 1)
-+#define MPP34_TDM1_RXQ MPP(34, 0x6, 0, 0, 1)
- #define MPP34_UNUSED MPP(34, 0x3, 0, 0, 1)
-
-
-
- #define MPP35_GPIO MPP(35, 0x1, 1, 1, 1)
--#define MPP35_UA2_RDX MPP(35, 0x4, 1, 0, 1)
--#define MPP35_TDM1_TXQ MPP(35, 0x6, 0, 1, 1)
-+#define MPP35_UA2_RDX MPP(35, 0x4, 0, 0, 1)
-+#define MPP35_TDM1_TXQ MPP(35, 0x6, 0, 0, 1)
- #define MPP35_UNUSED MPP(35, 0x3, 0, 0, 1)
-
- #define MPP36_GPIO MPP(36, 0x1, 1, 1, 1)
--#define MPP36_UA0_CTSn MPP(36, 0x2, 1, 0, 1)
--#define MPP36_UA2_TDX MPP(36, 0x4, 0, 1, 1)
--#define MPP36_TDM0_SCSn MPP(36, 0x6, 0, 1, 1)
-+#define MPP36_UA0_CTSn MPP(36, 0x2, 0, 0, 1)
-+#define MPP36_UA2_TDX MPP(36, 0x4, 0, 0, 1)
-+#define MPP36_TDM0_SCSn MPP(36, 0x6, 0, 0, 1)
- #define MPP36_UNUSED MPP(36, 0x3, 0, 0, 1)
-
-
- #define MPP37_GPIO MPP(37, 0x1, 1, 1, 1)
--#define MPP37_UA0_RTSn MPP(37, 0x2, 0, 1, 1)
--#define MPP37_UA2_RXD MPP(37, 0x4, 1, 0, 1)
--#define MPP37_SYSRST_OUTn MPP(37, 0x5, 0, 1, 1)
--#define MPP37_TDM_SCLK MPP(37, 0x6, 0, 1, 1)
-+#define MPP37_UA0_RTSn MPP(37, 0x2, 0, 0, 1)
-+#define MPP37_UA2_RXD MPP(37, 0x4, 0, 0, 1)
-+#define MPP37_SYSRST_OUTn MPP(37, 0x5, 0, 0, 1)
-+#define MPP37_TDM_SCLK MPP(37, 0x6, 0, 0, 1)
- #define MPP37_UNUSED MPP(37, 0x3, 0, 0, 1)
-
-
-
-
- #define MPP38_GPIO MPP(38, 0x1, 1, 1, 1)
--#define MPP38_UA1_CTSn MPP(38, 0x2, 1, 0, 1)
--#define MPP38_UA3_TXD MPP(38, 0x4, 0, 1, 1)
--#define MPP38_SYSRST_OUTn MPP(38, 0x5, 0, 1, 1)
--#define MPP38_TDM_SMOSI MPP(38, 0x6, 0, 1, 1)
-+#define MPP38_UA1_CTSn MPP(38, 0x2, 0, 0, 1)
-+#define MPP38_UA3_TXD MPP(38, 0x4, 0, 0, 1)
-+#define MPP38_SYSRST_OUTn MPP(38, 0x5, 0, 0, 1)
-+#define MPP38_TDM_SMOSI MPP(38, 0x6, 0, 0, 1)
- #define MPP38_UNUSED MPP(38, 0x3, 0, 0, 1)
-
-
-
-
- #define MPP39_GPIO MPP(39, 0x1, 1, 1, 1)
--#define MPP39_UA1_RTSn MPP(39, 0x2, 0, 1, 1)
--#define MPP39_UA3_RXD MPP(39, 0x4, 1, 0, 1)
--#define MPP39_SYSRST_OUTn MPP(39, 0x5, 0, 1, 1)
--#define MPP39_TDM_SMISO MPP(39, 0x6, 1, 0, 1)
-+#define MPP39_UA1_RTSn MPP(39, 0x2, 0, 0, 1)
-+#define MPP39_UA3_RXD MPP(39, 0x4, 0, 0, 1)
-+#define MPP39_SYSRST_OUTn MPP(39, 0x5, 0, 0, 1)
-+#define MPP39_TDM_SMISO MPP(39, 0x6, 0, 0, 1)
- #define MPP39_UNUSED MPP(39, 0x3, 0, 0, 1)
-
-
-
- #define MPP40_GPIO MPP(40, 0x1, 1, 1, 1)
--#define MPP40_TDM_INTn MPP(40, 0x6, 1, 0, 1)
-+#define MPP40_TDM_INTn MPP(40, 0x6, 0, 0, 1)
- #define MPP40_UNUSED MPP(40, 0x0, 0, 0, 1)
-
-
-
- #define MPP41_GPIO MPP(41, 0x1, 1, 1, 1)
--#define MPP41_TDM_RSTn MPP(41, 0x6, 0, 1, 1)
-+#define MPP41_TDM_RSTn MPP(41, 0x6, 0, 0, 1)
- #define MPP41_UNUSED MPP(41, 0x0, 0, 0, 1)
-
-
-
- #define MPP42_GPIO MPP(42, 0x1, 1, 1, 1)
--#define MPP42_TDM_PCLK MPP(42, 0x6, 1, 1, 1)
-+#define MPP42_TDM_PCLK MPP(42, 0x6, 0, 0, 1)
- #define MPP42_UNUSED MPP(42, 0x0, 0, 0, 1)
-
-
-
- #define MPP43_GPIO MPP(43, 0x1, 1, 1, 1)
--#define MPP43_TDM_FSYNC MPP(43, 0x6, 1, 1, 1)
-+#define MPP43_TDM_FSYNC MPP(43, 0x6, 0, 0, 1)
- #define MPP43_UNUSED MPP(43, 0x0, 0, 0, 1)
-
-
-
- #define MPP44_GPIO MPP(44, 0x1, 1, 1, 1)
--#define MPP44_TDM_DRX MPP(44, 0x6, 1, 0, 1)
-+#define MPP44_TDM_DRX MPP(44, 0x6, 0, 0, 1)
- #define MPP44_UNUSED MPP(44, 0x0, 0, 0, 1)
-
-
-
- #define MPP45_GPIO MPP(45, 0x1, 1, 1, 1)
--#define MPP45_SATA0_ACTn MPP(45, 0x3, 0, 1, 1)
--#define MPP45_TDM_DRX MPP(45, 0x6, 0, 1, 1)
-+#define MPP45_SATA0_ACTn MPP(45, 0x3, 0, 0, 1)
-+#define MPP45_TDM_DRX MPP(45, 0x6, 0, 0, 1)
- #define MPP45_UNUSED MPP(45, 0x0, 0, 0, 1)
-
-
- #define MPP46_GPIO MPP(46, 0x1, 1, 1, 1)
--#define MPP46_TDM_SCSn MPP(46, 0x6, 0, 1, 1)
-+#define MPP46_TDM_SCSn MPP(46, 0x6, 0, 0, 1)
- #define MPP46_UNUSED MPP(46, 0x0, 0, 0, 1)
-
-
-@@ -323,14 +323,14 @@
-
-
- #define MPP48_GPIO MPP(48, 0x1, 1, 1, 1)
--#define MPP48_SATA1_ACTn MPP(48, 0x3, 0, 1, 1)
-+#define MPP48_SATA1_ACTn MPP(48, 0x3, 0, 0, 1)
- #define MPP48_UNUSED MPP(48, 0x2, 0, 0, 1)
-
-
-
- #define MPP49_GPIO MPP(49, 0x1, 1, 1, 1)
--#define MPP49_SATA0_ACTn MPP(49, 0x3, 0, 1, 1)
--#define MPP49_M_BB MPP(49, 0x4, 1, 0, 1)
-+#define MPP49_SATA0_ACTn MPP(49, 0x3, 0, 0, 1)
-+#define MPP49_M_BB MPP(49, 0x4, 0, 0, 1)
- #define MPP49_UNUSED MPP(49, 0x2, 0, 0, 1)
-
-
-diff --git a/arch/arm/plat-orion/mpp.c b/arch/arm/plat-orion/mpp.c
-index 9155343..3b1e17b 100644
---- a/arch/arm/plat-orion/mpp.c
-+++ b/arch/arm/plat-orion/mpp.c
-@@ -64,8 +64,7 @@ void __init orion_mpp_conf(unsigned int *mpp_list, unsigned int variant_mask,
- gpio_mode |= GPIO_INPUT_OK;
- if (*mpp_list & MPP_OUTPUT_MASK)
- gpio_mode |= GPIO_OUTPUT_OK;
-- if (sel != 0)
-- gpio_mode = 0;
-+
- orion_gpio_set_valid(num, gpio_mode);
- }
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0058-OMAP-4430SDP-Panda-use-gpio_free_array-to-free-HDMI-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0058-OMAP-4430SDP-Panda-use-gpio_free_array-to-free-HDMI-.patch
deleted file mode 100644
index 8d618fa..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0058-OMAP-4430SDP-Panda-use-gpio_free_array-to-free-HDMI-.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From c5d0ae10543e28dccdee30ee8b10547c75b78f87 Mon Sep 17 00:00:00 2001
-From: Tomi Valkeinen <tomi.valkeinen at ti.com>
-Date: Tue, 17 Jan 2012 11:04:53 +0200
-Subject: [PATCH 58/95] OMAP: 4430SDP/Panda: use gpio_free_array to free HDMI
- gpios
-
-commit 575753e3bea3b67eef8e454fb87f719e3f7da599 upstream.
-
-Instead of freeing the GPIOs individually, use gpio_free_array().
-
-Signed-off-by: Tomi Valkeinen <tomi.valkeinen at ti.com>
-Acked-by: Tony Lindgren <tony at atomide.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/arm/mach-omap2/board-4430sdp.c | 3 +--
- arch/arm/mach-omap2/board-omap4panda.c | 3 +--
- 2 files changed, 2 insertions(+), 4 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-4430sdp.c b/arch/arm/mach-omap2/board-4430sdp.c
-index e8ff4cf..4996323 100644
---- a/arch/arm/mach-omap2/board-4430sdp.c
-+++ b/arch/arm/mach-omap2/board-4430sdp.c
-@@ -635,8 +635,7 @@ static int sdp4430_panel_enable_hdmi(struct omap_dss_device *dssdev)
-
- static void sdp4430_panel_disable_hdmi(struct omap_dss_device *dssdev)
- {
-- gpio_free(HDMI_GPIO_LS_OE);
-- gpio_free(HDMI_GPIO_HPD);
-+ gpio_free_array(sdp4430_hdmi_gpios, ARRAY_SIZE(sdp4430_hdmi_gpios));
- }
-
- static struct nokia_dsi_panel_data dsi1_panel = {
-diff --git a/arch/arm/mach-omap2/board-omap4panda.c b/arch/arm/mach-omap2/board-omap4panda.c
-index ea45f58..ac9a8a9 100644
---- a/arch/arm/mach-omap2/board-omap4panda.c
-+++ b/arch/arm/mach-omap2/board-omap4panda.c
-@@ -446,8 +446,7 @@ static int omap4_panda_panel_enable_hdmi(struct omap_dss_device *dssdev)
-
- static void omap4_panda_panel_disable_hdmi(struct omap_dss_device *dssdev)
- {
-- gpio_free(HDMI_GPIO_LS_OE);
-- gpio_free(HDMI_GPIO_HPD);
-+ gpio_free_array(panda_hdmi_gpios, ARRAY_SIZE(panda_hdmi_gpios));
- }
-
- static struct omap_dss_device omap4_panda_hdmi_device = {
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0059-OMAP-4430SDP-Panda-rename-HPD-GPIO-to-CT_CP_HPD.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0059-OMAP-4430SDP-Panda-rename-HPD-GPIO-to-CT_CP_HPD.patch
deleted file mode 100644
index a0e9813..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0059-OMAP-4430SDP-Panda-rename-HPD-GPIO-to-CT_CP_HPD.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-From 46dbdf1be35df940b05ef2f8b3064c45cfb8c310 Mon Sep 17 00:00:00 2001
-From: Tomi Valkeinen <tomi.valkeinen at ti.com>
-Date: Tue, 17 Jan 2012 10:49:38 +0200
-Subject: [PATCH 59/95] OMAP: 4430SDP/Panda: rename HPD GPIO to CT_CP_HPD
-
-commit 3932a32fcf5393f8be70ac99dc718ad7ad0a415b upstream.
-
-The GPIO 60 on 4430sdp and Panda is not HPD GPIO, as currently marked in
-the board files, but CT_CP_HPD, which is used to enable/disable HPD
-functionality.
-
-This patch renames the GPIO.
-
-Signed-off-by: Tomi Valkeinen <tomi.valkeinen at ti.com>
-Acked-by: Tony Lindgren <tony at atomide.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/arm/mach-omap2/board-4430sdp.c | 4 ++--
- arch/arm/mach-omap2/board-omap4panda.c | 4 ++--
- 2 files changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-4430sdp.c b/arch/arm/mach-omap2/board-4430sdp.c
-index 4996323..65c6536 100644
---- a/arch/arm/mach-omap2/board-4430sdp.c
-+++ b/arch/arm/mach-omap2/board-4430sdp.c
-@@ -52,7 +52,7 @@
- #define ETH_KS8851_QUART 138
- #define OMAP4_SFH7741_SENSOR_OUTPUT_GPIO 184
- #define OMAP4_SFH7741_ENABLE_GPIO 188
--#define HDMI_GPIO_HPD 60 /* Hot plug pin for HDMI */
-+#define HDMI_GPIO_CT_CP_HPD 60 /* HPD mode enable/disable */
- #define HDMI_GPIO_LS_OE 41 /* Level shifter for HDMI */
- #define DISPLAY_SEL_GPIO 59 /* LCD2/PicoDLP switch */
- #define DLP_POWER_ON_GPIO 40
-@@ -617,7 +617,7 @@ static void sdp4430_hdmi_mux_init(void)
- }
-
- static struct gpio sdp4430_hdmi_gpios[] = {
-- { HDMI_GPIO_HPD, GPIOF_OUT_INIT_HIGH, "hdmi_gpio_hpd" },
-+ { HDMI_GPIO_CT_CP_HPD, GPIOF_OUT_INIT_HIGH, "hdmi_gpio_ct_cp_hpd" },
- { HDMI_GPIO_LS_OE, GPIOF_OUT_INIT_HIGH, "hdmi_gpio_ls_oe" },
- };
-
-diff --git a/arch/arm/mach-omap2/board-omap4panda.c b/arch/arm/mach-omap2/board-omap4panda.c
-index ac9a8a9..f39d77d 100644
---- a/arch/arm/mach-omap2/board-omap4panda.c
-+++ b/arch/arm/mach-omap2/board-omap4panda.c
-@@ -51,7 +51,7 @@
- #define GPIO_HUB_NRESET 62
- #define GPIO_WIFI_PMENA 43
- #define GPIO_WIFI_IRQ 53
--#define HDMI_GPIO_HPD 60 /* Hot plug pin for HDMI */
-+#define HDMI_GPIO_CT_CP_HPD 60 /* HPD mode enable/disable */
- #define HDMI_GPIO_LS_OE 41 /* Level shifter for HDMI */
-
- /* wl127x BT, FM, GPS connectivity chip */
-@@ -428,7 +428,7 @@ static void omap4_panda_hdmi_mux_init(void)
- }
-
- static struct gpio panda_hdmi_gpios[] = {
-- { HDMI_GPIO_HPD, GPIOF_OUT_INIT_HIGH, "hdmi_gpio_hpd" },
-+ { HDMI_GPIO_CT_CP_HPD, GPIOF_OUT_INIT_HIGH, "hdmi_gpio_ct_cp_hpd" },
- { HDMI_GPIO_LS_OE, GPIOF_OUT_INIT_HIGH, "hdmi_gpio_ls_oe" },
- };
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0060-OMAPDSS-remove-wrong-HDMI-HPD-muxing.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0060-OMAPDSS-remove-wrong-HDMI-HPD-muxing.patch
deleted file mode 100644
index 8c693ca..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0060-OMAPDSS-remove-wrong-HDMI-HPD-muxing.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From d8f2773cd0eb254b5aee9d647c34fd0901e71cb9 Mon Sep 17 00:00:00 2001
-From: Tomi Valkeinen <tomi.valkeinen at ti.com>
-Date: Tue, 17 Jan 2012 10:59:00 +0200
-Subject: [PATCH 60/95] OMAPDSS: remove wrong HDMI HPD muxing
-
-commit 7bb122d155f742fe2d79849090c825be7b4a247e upstream.
-
-"hdmi_hpd" pin is muxed to INPUT and PULLUP, but the pin is not
-currently used, and in the future when it is used, the pin is used as a
-GPIO and is board specific, not an OMAP4 wide thing.
-
-So remove the muxing for now.
-
-Signed-off-by: Tomi Valkeinen <tomi.valkeinen at ti.com>
-Acked-by: Tony Lindgren <tony at atomide.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/arm/mach-omap2/board-4430sdp.c | 4 ----
- arch/arm/mach-omap2/board-omap4panda.c | 4 ----
- 2 files changed, 8 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-4430sdp.c b/arch/arm/mach-omap2/board-4430sdp.c
-index 65c6536..ea31da3 100644
---- a/arch/arm/mach-omap2/board-4430sdp.c
-+++ b/arch/arm/mach-omap2/board-4430sdp.c
-@@ -604,12 +604,8 @@ static void __init omap_sfh7741prox_init(void)
-
- static void sdp4430_hdmi_mux_init(void)
- {
-- /* PAD0_HDMI_HPD_PAD1_HDMI_CEC */
-- omap_mux_init_signal("hdmi_hpd",
-- OMAP_PIN_INPUT_PULLUP);
- omap_mux_init_signal("hdmi_cec",
- OMAP_PIN_INPUT_PULLUP);
-- /* PAD0_HDMI_DDC_SCL_PAD1_HDMI_DDC_SDA */
- omap_mux_init_signal("hdmi_ddc_scl",
- OMAP_PIN_INPUT_PULLUP);
- omap_mux_init_signal("hdmi_ddc_sda",
-diff --git a/arch/arm/mach-omap2/board-omap4panda.c b/arch/arm/mach-omap2/board-omap4panda.c
-index f39d77d..f800080 100644
---- a/arch/arm/mach-omap2/board-omap4panda.c
-+++ b/arch/arm/mach-omap2/board-omap4panda.c
-@@ -415,12 +415,8 @@ int __init omap4_panda_dvi_init(void)
-
- static void omap4_panda_hdmi_mux_init(void)
- {
-- /* PAD0_HDMI_HPD_PAD1_HDMI_CEC */
-- omap_mux_init_signal("hdmi_hpd",
-- OMAP_PIN_INPUT_PULLUP);
- omap_mux_init_signal("hdmi_cec",
- OMAP_PIN_INPUT_PULLUP);
-- /* PAD0_HDMI_DDC_SCL_PAD1_HDMI_DDC_SDA */
- omap_mux_init_signal("hdmi_ddc_scl",
- OMAP_PIN_INPUT_PULLUP);
- omap_mux_init_signal("hdmi_ddc_sda",
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0061-OMAP-4430SDP-Panda-setup-HDMI-GPIO-muxes.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0061-OMAP-4430SDP-Panda-setup-HDMI-GPIO-muxes.patch
deleted file mode 100644
index bdffdb4..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0061-OMAP-4430SDP-Panda-setup-HDMI-GPIO-muxes.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From b8769e0c69fccaa9930818b84ee00d5f9e90c4cd Mon Sep 17 00:00:00 2001
-From: Tomi Valkeinen <tomi.valkeinen at ti.com>
-Date: Tue, 17 Jan 2012 11:02:36 +0200
-Subject: [PATCH 61/95] OMAP: 4430SDP/Panda: setup HDMI GPIO muxes
-
-commit 78a1ad8f12db70b8b0a4548b90704de08ee216ce upstream.
-
-The HDMI GPIO pins LS_OE and CT_CP_HPD are not currently configured.
-This patch configures them as output pins.
-
-Signed-off-by: Tomi Valkeinen <tomi.valkeinen at ti.com>
-Acked-by: Tony Lindgren <tony at atomide.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/arm/mach-omap2/board-4430sdp.c | 3 +++
- arch/arm/mach-omap2/board-omap4panda.c | 3 +++
- 2 files changed, 6 insertions(+)
-
-diff --git a/arch/arm/mach-omap2/board-4430sdp.c b/arch/arm/mach-omap2/board-4430sdp.c
-index ea31da3..580d436 100644
---- a/arch/arm/mach-omap2/board-4430sdp.c
-+++ b/arch/arm/mach-omap2/board-4430sdp.c
-@@ -831,6 +831,9 @@ static void omap_4430sdp_display_init(void)
- sdp4430_hdmi_mux_init();
- sdp4430_picodlp_init();
- omap_display_init(&sdp4430_dss_data);
-+
-+ omap_mux_init_gpio(HDMI_GPIO_LS_OE, OMAP_PIN_OUTPUT);
-+ omap_mux_init_gpio(HDMI_GPIO_CT_CP_HPD, OMAP_PIN_OUTPUT);
- }
-
- #ifdef CONFIG_OMAP_MUX
-diff --git a/arch/arm/mach-omap2/board-omap4panda.c b/arch/arm/mach-omap2/board-omap4panda.c
-index f800080..d32ba6f 100644
---- a/arch/arm/mach-omap2/board-omap4panda.c
-+++ b/arch/arm/mach-omap2/board-omap4panda.c
-@@ -475,6 +475,9 @@ void omap4_panda_display_init(void)
-
- omap4_panda_hdmi_mux_init();
- omap_display_init(&omap4_panda_dss_data);
-+
-+ omap_mux_init_gpio(HDMI_GPIO_LS_OE, OMAP_PIN_OUTPUT);
-+ omap_mux_init_gpio(HDMI_GPIO_CT_CP_HPD, OMAP_PIN_OUTPUT);
- }
-
- static void __init omap4_panda_init(void)
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0062-OMAP-4430SDP-Panda-add-HDMI-HPD-gpio.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0062-OMAP-4430SDP-Panda-add-HDMI-HPD-gpio.patch
deleted file mode 100644
index f08f4fc..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0062-OMAP-4430SDP-Panda-add-HDMI-HPD-gpio.patch
+++ /dev/null
@@ -1,77 +0,0 @@
-From 493540069d02cdf71f7d7567c9ccca6000aefbed Mon Sep 17 00:00:00 2001
-From: Tomi Valkeinen <tomi.valkeinen at ti.com>
-Date: Tue, 17 Jan 2012 11:05:32 +0200
-Subject: [PATCH 62/95] OMAP: 4430SDP/Panda: add HDMI HPD gpio
-
-commit aa74274b464d4aa24703963ac89a0ee942d5d267 upstream.
-
-Both Panda and 4430SDP use GPIO 63 as HDMI hot-plug-detect. Configure
-this GPIO in the board files.
-
-Signed-off-by: Tomi Valkeinen <tomi.valkeinen at ti.com>
-Acked-by: Tony Lindgren <tony at atomide.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/arm/mach-omap2/board-4430sdp.c | 3 +++
- arch/arm/mach-omap2/board-omap4panda.c | 3 +++
- 2 files changed, 6 insertions(+)
-
-diff --git a/arch/arm/mach-omap2/board-4430sdp.c b/arch/arm/mach-omap2/board-4430sdp.c
-index 580d436..2809855 100644
---- a/arch/arm/mach-omap2/board-4430sdp.c
-+++ b/arch/arm/mach-omap2/board-4430sdp.c
-@@ -54,6 +54,7 @@
- #define OMAP4_SFH7741_ENABLE_GPIO 188
- #define HDMI_GPIO_CT_CP_HPD 60 /* HPD mode enable/disable */
- #define HDMI_GPIO_LS_OE 41 /* Level shifter for HDMI */
-+#define HDMI_GPIO_HPD 63 /* Hotplug detect */
- #define DISPLAY_SEL_GPIO 59 /* LCD2/PicoDLP switch */
- #define DLP_POWER_ON_GPIO 40
-
-@@ -615,6 +616,7 @@ static void sdp4430_hdmi_mux_init(void)
- static struct gpio sdp4430_hdmi_gpios[] = {
- { HDMI_GPIO_CT_CP_HPD, GPIOF_OUT_INIT_HIGH, "hdmi_gpio_ct_cp_hpd" },
- { HDMI_GPIO_LS_OE, GPIOF_OUT_INIT_HIGH, "hdmi_gpio_ls_oe" },
-+ { HDMI_GPIO_HPD, GPIOF_DIR_IN, "hdmi_gpio_hpd" },
- };
-
- static int sdp4430_panel_enable_hdmi(struct omap_dss_device *dssdev)
-@@ -834,6 +836,7 @@ static void omap_4430sdp_display_init(void)
-
- omap_mux_init_gpio(HDMI_GPIO_LS_OE, OMAP_PIN_OUTPUT);
- omap_mux_init_gpio(HDMI_GPIO_CT_CP_HPD, OMAP_PIN_OUTPUT);
-+ omap_mux_init_gpio(HDMI_GPIO_HPD, OMAP_PIN_INPUT_PULLDOWN);
- }
-
- #ifdef CONFIG_OMAP_MUX
-diff --git a/arch/arm/mach-omap2/board-omap4panda.c b/arch/arm/mach-omap2/board-omap4panda.c
-index d32ba6f..bdc0a47 100644
---- a/arch/arm/mach-omap2/board-omap4panda.c
-+++ b/arch/arm/mach-omap2/board-omap4panda.c
-@@ -53,6 +53,7 @@
- #define GPIO_WIFI_IRQ 53
- #define HDMI_GPIO_CT_CP_HPD 60 /* HPD mode enable/disable */
- #define HDMI_GPIO_LS_OE 41 /* Level shifter for HDMI */
-+#define HDMI_GPIO_HPD 63 /* Hotplug detect */
-
- /* wl127x BT, FM, GPS connectivity chip */
- static int wl1271_gpios[] = {46, -1, -1};
-@@ -426,6 +427,7 @@ static void omap4_panda_hdmi_mux_init(void)
- static struct gpio panda_hdmi_gpios[] = {
- { HDMI_GPIO_CT_CP_HPD, GPIOF_OUT_INIT_HIGH, "hdmi_gpio_ct_cp_hpd" },
- { HDMI_GPIO_LS_OE, GPIOF_OUT_INIT_HIGH, "hdmi_gpio_ls_oe" },
-+ { HDMI_GPIO_HPD, GPIOF_DIR_IN, "hdmi_gpio_hpd" },
- };
-
- static int omap4_panda_panel_enable_hdmi(struct omap_dss_device *dssdev)
-@@ -478,6 +480,7 @@ void omap4_panda_display_init(void)
-
- omap_mux_init_gpio(HDMI_GPIO_LS_OE, OMAP_PIN_OUTPUT);
- omap_mux_init_gpio(HDMI_GPIO_CT_CP_HPD, OMAP_PIN_OUTPUT);
-+ omap_mux_init_gpio(HDMI_GPIO_HPD, OMAP_PIN_INPUT_PULLDOWN);
- }
-
- static void __init omap4_panda_init(void)
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0063-OMAPDSS-HDMI-PHY-burnout-fix.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0063-OMAPDSS-HDMI-PHY-burnout-fix.patch
deleted file mode 100644
index 413ac1c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0063-OMAPDSS-HDMI-PHY-burnout-fix.patch
+++ /dev/null
@@ -1,246 +0,0 @@
-From 9fc3feeb0ef1abf039e3de62212a1590a050d4af Mon Sep 17 00:00:00 2001
-From: Tomi Valkeinen <tomi.valkeinen at ti.com>
-Date: Tue, 17 Jan 2012 11:09:57 +0200
-Subject: [PATCH 63/95] OMAPDSS: HDMI: PHY burnout fix
-
-commit c49d005b6cc8491fad5b24f82805be2d6bcbd3dd upstream.
-
-A hardware bug in the OMAP4 HDMI PHY causes physical damage to the board
-if the HDMI PHY is kept powered on when the cable is not connected.
-
-This patch solves the problem by adding hot-plug-detection into the HDMI
-IP driver. This is not a real HPD support in the sense that nobody else
-than the IP driver gets to know about the HPD events, but is only meant
-to fix the HW bug.
-
-The strategy is simple: If the display device is turned off by the user,
-the PHY power is set to OFF. When the display device is turned on by the
-user, the PHY power is set either to LDOON or TXON, depending on whether
-the HDMI cable is connected.
-
-The reason to avoid PHY OFF when the display device is on, but the cable
-is disconnected, is that when the PHY is turned OFF, the HDMI IP is not
-"ticking" and thus the DISPC does not receive pixel clock from the HDMI
-IP. This would, for example, prevent any VSYNCs from happening, and
-would thus affect the users of omapdss. By using LDOON when the cable is
-disconnected we'll avoid the HW bug, but keep the HDMI working as usual
-from the user's point of view.
-
-Signed-off-by: Tomi Valkeinen <tomi.valkeinen at ti.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/arm/mach-omap2/board-4430sdp.c | 5 +++
- arch/arm/mach-omap2/board-omap4panda.c | 5 +++
- drivers/video/omap2/dss/hdmi.c | 3 ++
- drivers/video/omap2/dss/ti_hdmi.h | 4 ++
- drivers/video/omap2/dss/ti_hdmi_4xxx_ip.c | 68 +++++++++++++++++++++++++++--
- include/video/omapdss.h | 5 +++
- 6 files changed, 86 insertions(+), 4 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-4430sdp.c b/arch/arm/mach-omap2/board-4430sdp.c
-index 2809855..44610d8 100644
---- a/arch/arm/mach-omap2/board-4430sdp.c
-+++ b/arch/arm/mach-omap2/board-4430sdp.c
-@@ -749,6 +749,10 @@ static void sdp4430_lcd_init(void)
- pr_err("%s: Could not get lcd2_reset_gpio\n", __func__);
- }
-
-+static struct omap_dss_hdmi_data sdp4430_hdmi_data = {
-+ .hpd_gpio = HDMI_GPIO_HPD,
-+};
-+
- static struct omap_dss_device sdp4430_hdmi_device = {
- .name = "hdmi",
- .driver_name = "hdmi_panel",
-@@ -756,6 +760,7 @@ static struct omap_dss_device sdp4430_hdmi_device = {
- .platform_enable = sdp4430_panel_enable_hdmi,
- .platform_disable = sdp4430_panel_disable_hdmi,
- .channel = OMAP_DSS_CHANNEL_DIGIT,
-+ .data = &sdp4430_hdmi_data,
- };
-
- static struct picodlp_panel_data sdp4430_picodlp_pdata = {
-diff --git a/arch/arm/mach-omap2/board-omap4panda.c b/arch/arm/mach-omap2/board-omap4panda.c
-index bdc0a47..9cc9564 100644
---- a/arch/arm/mach-omap2/board-omap4panda.c
-+++ b/arch/arm/mach-omap2/board-omap4panda.c
-@@ -447,6 +447,10 @@ static void omap4_panda_panel_disable_hdmi(struct omap_dss_device *dssdev)
- gpio_free_array(panda_hdmi_gpios, ARRAY_SIZE(panda_hdmi_gpios));
- }
-
-+static struct omap_dss_hdmi_data omap4_panda_hdmi_data = {
-+ .hpd_gpio = HDMI_GPIO_HPD,
-+};
-+
- static struct omap_dss_device omap4_panda_hdmi_device = {
- .name = "hdmi",
- .driver_name = "hdmi_panel",
-@@ -454,6 +458,7 @@ static struct omap_dss_device omap4_panda_hdmi_device = {
- .platform_enable = omap4_panda_panel_enable_hdmi,
- .platform_disable = omap4_panda_panel_disable_hdmi,
- .channel = OMAP_DSS_CHANNEL_DIGIT,
-+ .data = &omap4_panda_hdmi_data,
- };
-
- static struct omap_dss_device *omap4_panda_dss_devices[] = {
-diff --git a/drivers/video/omap2/dss/hdmi.c b/drivers/video/omap2/dss/hdmi.c
-index c56378c..7099c31 100644
---- a/drivers/video/omap2/dss/hdmi.c
-+++ b/drivers/video/omap2/dss/hdmi.c
-@@ -490,6 +490,7 @@ bool omapdss_hdmi_detect(void)
-
- int omapdss_hdmi_display_enable(struct omap_dss_device *dssdev)
- {
-+ struct omap_dss_hdmi_data *priv = dssdev->data;
- int r = 0;
-
- DSSDBG("ENTER hdmi_display_enable\n");
-@@ -502,6 +503,8 @@ int omapdss_hdmi_display_enable(struct omap_dss_device *dssdev)
- goto err0;
- }
-
-+ hdmi.ip_data.hpd_gpio = priv->hpd_gpio;
-+
- r = omap_dss_start_device(dssdev);
- if (r) {
- DSSERR("failed to start device\n");
-diff --git a/drivers/video/omap2/dss/ti_hdmi.h b/drivers/video/omap2/dss/ti_hdmi.h
-index 2c3443d..ec337b5d 100644
---- a/drivers/video/omap2/dss/ti_hdmi.h
-+++ b/drivers/video/omap2/dss/ti_hdmi.h
-@@ -121,6 +121,10 @@ struct hdmi_ip_data {
- const struct ti_hdmi_ip_ops *ops;
- struct hdmi_config cfg;
- struct hdmi_pll_info pll_data;
-+
-+ /* ti_hdmi_4xxx_ip private data. These should be in a separate struct */
-+ int hpd_gpio;
-+ bool phy_tx_enabled;
- };
- int ti_hdmi_4xxx_phy_enable(struct hdmi_ip_data *ip_data);
- void ti_hdmi_4xxx_phy_disable(struct hdmi_ip_data *ip_data);
-diff --git a/drivers/video/omap2/dss/ti_hdmi_4xxx_ip.c b/drivers/video/omap2/dss/ti_hdmi_4xxx_ip.c
-index e1a6ce5..3683404 100644
---- a/drivers/video/omap2/dss/ti_hdmi_4xxx_ip.c
-+++ b/drivers/video/omap2/dss/ti_hdmi_4xxx_ip.c
-@@ -28,6 +28,7 @@
- #include <linux/delay.h>
- #include <linux/string.h>
- #include <linux/seq_file.h>
-+#include <linux/gpio.h>
-
- #include "ti_hdmi_4xxx_ip.h"
- #include "dss.h"
-@@ -223,6 +224,49 @@ void ti_hdmi_4xxx_pll_disable(struct hdmi_ip_data *ip_data)
- hdmi_set_pll_pwr(ip_data, HDMI_PLLPWRCMD_ALLOFF);
- }
-
-+static int hdmi_check_hpd_state(struct hdmi_ip_data *ip_data)
-+{
-+ unsigned long flags;
-+ bool hpd;
-+ int r;
-+ /* this should be in ti_hdmi_4xxx_ip private data */
-+ static DEFINE_SPINLOCK(phy_tx_lock);
-+
-+ spin_lock_irqsave(&phy_tx_lock, flags);
-+
-+ hpd = gpio_get_value(ip_data->hpd_gpio);
-+
-+ if (hpd == ip_data->phy_tx_enabled) {
-+ spin_unlock_irqrestore(&phy_tx_lock, flags);
-+ return 0;
-+ }
-+
-+ if (hpd)
-+ r = hdmi_set_phy_pwr(ip_data, HDMI_PHYPWRCMD_TXON);
-+ else
-+ r = hdmi_set_phy_pwr(ip_data, HDMI_PHYPWRCMD_LDOON);
-+
-+ if (r) {
-+ DSSERR("Failed to %s PHY TX power\n",
-+ hpd ? "enable" : "disable");
-+ goto err;
-+ }
-+
-+ ip_data->phy_tx_enabled = hpd;
-+err:
-+ spin_unlock_irqrestore(&phy_tx_lock, flags);
-+ return r;
-+}
-+
-+static irqreturn_t hpd_irq_handler(int irq, void *data)
-+{
-+ struct hdmi_ip_data *ip_data = data;
-+
-+ hdmi_check_hpd_state(ip_data);
-+
-+ return IRQ_HANDLED;
-+}
-+
- int ti_hdmi_4xxx_phy_enable(struct hdmi_ip_data *ip_data)
- {
- u16 r = 0;
-@@ -232,10 +276,6 @@ int ti_hdmi_4xxx_phy_enable(struct hdmi_ip_data *ip_data)
- if (r)
- return r;
-
-- r = hdmi_set_phy_pwr(ip_data, HDMI_PHYPWRCMD_TXON);
-- if (r)
-- return r;
--
- /*
- * Read address 0 in order to get the SCP reset done completed
- * Dummy access performed to make sure reset is done
-@@ -257,12 +297,32 @@ int ti_hdmi_4xxx_phy_enable(struct hdmi_ip_data *ip_data)
- /* Write to phy address 3 to change the polarity control */
- REG_FLD_MOD(phy_base, HDMI_TXPHY_PAD_CFG_CTRL, 0x1, 27, 27);
-
-+ r = request_threaded_irq(gpio_to_irq(ip_data->hpd_gpio),
-+ NULL, hpd_irq_handler,
-+ IRQF_DISABLED | IRQF_TRIGGER_RISING |
-+ IRQF_TRIGGER_FALLING, "hpd", ip_data);
-+ if (r) {
-+ DSSERR("HPD IRQ request failed\n");
-+ hdmi_set_phy_pwr(ip_data, HDMI_PHYPWRCMD_OFF);
-+ return r;
-+ }
-+
-+ r = hdmi_check_hpd_state(ip_data);
-+ if (r) {
-+ free_irq(gpio_to_irq(ip_data->hpd_gpio), ip_data);
-+ hdmi_set_phy_pwr(ip_data, HDMI_PHYPWRCMD_OFF);
-+ return r;
-+ }
-+
- return 0;
- }
-
- void ti_hdmi_4xxx_phy_disable(struct hdmi_ip_data *ip_data)
- {
-+ free_irq(gpio_to_irq(ip_data->hpd_gpio), ip_data);
-+
- hdmi_set_phy_pwr(ip_data, HDMI_PHYPWRCMD_OFF);
-+ ip_data->phy_tx_enabled = false;
- }
-
- static int hdmi_core_ddc_init(struct hdmi_ip_data *ip_data)
-diff --git a/include/video/omapdss.h b/include/video/omapdss.h
-index 378c7ed..6582c45 100644
---- a/include/video/omapdss.h
-+++ b/include/video/omapdss.h
-@@ -575,6 +575,11 @@ struct omap_dss_device {
- int (*get_backlight)(struct omap_dss_device *dssdev);
- };
-
-+struct omap_dss_hdmi_data
-+{
-+ int hpd_gpio;
-+};
-+
- struct omap_dss_driver {
- struct device_driver driver;
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0064-OMAPDSS-HDMI-hot-plug-detect-fix.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0064-OMAPDSS-HDMI-hot-plug-detect-fix.patch
deleted file mode 100644
index bee35f9..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0064-OMAPDSS-HDMI-hot-plug-detect-fix.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From ceaddf58a2932ff4a4dffa216af9db01d1bd74cc Mon Sep 17 00:00:00 2001
-From: Rob Clark <rob at ti.com>
-Date: Mon, 20 Feb 2012 15:03:36 -0600
-Subject: [PATCH 64/95] OMAPDSS: HDMI: hot plug detect fix
-
-commit ca888a7958b3d808e4efd08ceff88913f4212c69 upstream.
-
-The "OMAPDSS: HDMI: PHY burnout fix" commit switched the HDMI driver
-over to using a GPIO for plug detect. Unfortunately the ->detect()
-method was not also updated, causing HDMI to no longer work for the
-omapdrm driver (because it would actually check if a connection was
-detected before attempting to enable display).
-
-Signed-off-by: Rob Clark <rob at ti.com>
-Signed-off-by: Tomi Valkeinen <tomi.valkeinen at ti.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/video/omap2/dss/ti_hdmi_4xxx_ip.c | 9 +--------
- 1 file changed, 1 insertion(+), 8 deletions(-)
-
-diff --git a/drivers/video/omap2/dss/ti_hdmi_4xxx_ip.c b/drivers/video/omap2/dss/ti_hdmi_4xxx_ip.c
-index 3683404..aad48a1 100644
---- a/drivers/video/omap2/dss/ti_hdmi_4xxx_ip.c
-+++ b/drivers/video/omap2/dss/ti_hdmi_4xxx_ip.c
-@@ -479,14 +479,7 @@ int ti_hdmi_4xxx_read_edid(struct hdmi_ip_data *ip_data,
-
- bool ti_hdmi_4xxx_detect(struct hdmi_ip_data *ip_data)
- {
-- int r;
--
-- void __iomem *base = hdmi_core_sys_base(ip_data);
--
-- /* HPD */
-- r = REG_GET(base, HDMI_CORE_SYS_SYS_STAT, 1, 1);
--
-- return r == 1;
-+ return gpio_get_value(ip_data->hpd_gpio);
- }
-
- static void hdmi_core_init(struct hdmi_core_video_config *video_cfg,
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0065-ARM-7345-1-errata-update-workaround-for-A9-erratum-7.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0065-ARM-7345-1-errata-update-workaround-for-A9-erratum-7.patch
deleted file mode 100644
index e414161..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0065-ARM-7345-1-errata-update-workaround-for-A9-erratum-7.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From b98acc555eb9c9b790388e926ddd3ef1610c7360 Mon Sep 17 00:00:00 2001
-From: Will Deacon <will.deacon at arm.com>
-Date: Fri, 24 Feb 2012 12:12:38 +0100
-Subject: [PATCH 65/95] ARM: 7345/1: errata: update workaround for A9 erratum
- #743622
-
-commit efbc74ace95338484f8d732037b99c7c77098fce upstream.
-
-Erratum #743622 affects all r2 variants of the Cortex-A9 processor, so
-ensure that the workaround is applied regardless of the revision.
-
-Reported-by: Russell King <rmk+kernel at arm.linux.org.uk>
-Signed-off-by: Will Deacon <will.deacon at arm.com>
-Signed-off-by: Russell King <rmk+kernel at arm.linux.org.uk>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/arm/Kconfig | 2 +-
- arch/arm/mm/proc-v7.S | 4 +---
- 2 files changed, 2 insertions(+), 4 deletions(-)
-
-diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
-index f44d5a0..6cd71ec 100644
---- a/arch/arm/Kconfig
-+++ b/arch/arm/Kconfig
-@@ -1273,7 +1273,7 @@ config ARM_ERRATA_743622
- depends on CPU_V7
- help
- This option enables the workaround for the 743622 Cortex-A9
-- (r2p0..r2p2) erratum. Under very rare conditions, a faulty
-+ (r2p*) erratum. Under very rare conditions, a faulty
- optimisation in the Cortex-A9 Store Buffer may lead to data
- corruption. This workaround sets a specific bit in the diagnostic
- register of the Cortex-A9 which disables the Store Buffer
-diff --git a/arch/arm/mm/proc-v7.S b/arch/arm/mm/proc-v7.S
-index 40cc7aa..82ef81d 100644
---- a/arch/arm/mm/proc-v7.S
-+++ b/arch/arm/mm/proc-v7.S
-@@ -352,9 +352,7 @@ __v7_setup:
- mcreq p15, 0, r10, c15, c0, 1 @ write diagnostic register
- #endif
- #ifdef CONFIG_ARM_ERRATA_743622
-- teq r6, #0x20 @ present in r2p0
-- teqne r6, #0x21 @ present in r2p1
-- teqne r6, #0x22 @ present in r2p2
-+ teq r5, #0x00200000 @ only present in r2p*
- mrceq p15, 0, r10, c15, c0, 1 @ read diagnostic register
- orreq r10, r10, #1 << 6 @ set bit #6
- mcreq p15, 0, r10, c15, c0, 1 @ write diagnostic register
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0066-ARM-7354-1-perf-limit-sample_period-to-half-max_peri.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0066-ARM-7354-1-perf-limit-sample_period-to-half-max_peri.patch
deleted file mode 100644
index ec27d3a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0066-ARM-7354-1-perf-limit-sample_period-to-half-max_peri.patch
+++ /dev/null
@@ -1,163 +0,0 @@
-From 7452f29adfeefd48bfac437965f99e3f36506484 Mon Sep 17 00:00:00 2001
-From: Will Deacon <will.deacon at arm.com>
-Date: Tue, 6 Mar 2012 17:33:17 +0100
-Subject: [PATCH 66/95] ARM: 7354/1: perf: limit sample_period to half
- max_period in non-sampling mode
-
-commit 5727347180ebc6b4a866fcbe00dcb39cc03acb37 upstream.
-
-On ARM, the PMU does not stop counting after an overflow and therefore
-IRQ latency affects the new counter value read by the kernel. This is
-significant for non-sampling runs where it is possible for the new value
-to overtake the previous one, causing the delta to be out by up to
-max_period events.
-
-Commit a737823d ("ARM: 6835/1: perf: ensure overflows aren't missed due
-to IRQ latency") attempted to fix this problem by allowing interrupt
-handlers to pass an overflow flag to the event update function, causing
-the overflow calculation to assume that the counter passed through zero
-when going from prev to new. Unfortunately, this doesn't work when
-overflow occurs on the perf_task_tick path because we have the flag
-cleared and end up computing a large negative delta.
-
-This patch removes the overflow flag from armpmu_event_update and
-instead limits the sample_period to half of the max_period for
-non-sampling profiling runs.
-
-Signed-off-by: Ming Lei <ming.lei at canonical.com>
-Signed-off-by: Will Deacon <will.deacon at arm.com>
-Signed-off-by: Russell King <rmk+kernel at arm.linux.org.uk>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/arm/include/asm/pmu.h | 2 +-
- arch/arm/kernel/perf_event.c | 22 +++++++++++-----------
- arch/arm/kernel/perf_event_v6.c | 2 +-
- arch/arm/kernel/perf_event_v7.c | 2 +-
- arch/arm/kernel/perf_event_xscale.c | 4 ++--
- 5 files changed, 16 insertions(+), 16 deletions(-)
-
-diff --git a/arch/arm/include/asm/pmu.h b/arch/arm/include/asm/pmu.h
-index b5a5be2..90114fa 100644
---- a/arch/arm/include/asm/pmu.h
-+++ b/arch/arm/include/asm/pmu.h
-@@ -134,7 +134,7 @@ int __init armpmu_register(struct arm_pmu *armpmu, char *name, int type);
-
- u64 armpmu_event_update(struct perf_event *event,
- struct hw_perf_event *hwc,
-- int idx, int overflow);
-+ int idx);
-
- int armpmu_event_set_period(struct perf_event *event,
- struct hw_perf_event *hwc,
-diff --git a/arch/arm/kernel/perf_event.c b/arch/arm/kernel/perf_event.c
-index 5bb91bf..56173ae 100644
---- a/arch/arm/kernel/perf_event.c
-+++ b/arch/arm/kernel/perf_event.c
-@@ -180,7 +180,7 @@ armpmu_event_set_period(struct perf_event *event,
- u64
- armpmu_event_update(struct perf_event *event,
- struct hw_perf_event *hwc,
-- int idx, int overflow)
-+ int idx)
- {
- struct arm_pmu *armpmu = to_arm_pmu(event->pmu);
- u64 delta, prev_raw_count, new_raw_count;
-@@ -193,13 +193,7 @@ again:
- new_raw_count) != prev_raw_count)
- goto again;
-
-- new_raw_count &= armpmu->max_period;
-- prev_raw_count &= armpmu->max_period;
--
-- if (overflow)
-- delta = armpmu->max_period - prev_raw_count + new_raw_count + 1;
-- else
-- delta = new_raw_count - prev_raw_count;
-+ delta = (new_raw_count - prev_raw_count) & armpmu->max_period;
-
- local64_add(delta, &event->count);
- local64_sub(delta, &hwc->period_left);
-@@ -216,7 +210,7 @@ armpmu_read(struct perf_event *event)
- if (hwc->idx < 0)
- return;
-
-- armpmu_event_update(event, hwc, hwc->idx, 0);
-+ armpmu_event_update(event, hwc, hwc->idx);
- }
-
- static void
-@@ -232,7 +226,7 @@ armpmu_stop(struct perf_event *event, int flags)
- if (!(hwc->state & PERF_HES_STOPPED)) {
- armpmu->disable(hwc, hwc->idx);
- barrier(); /* why? */
-- armpmu_event_update(event, hwc, hwc->idx, 0);
-+ armpmu_event_update(event, hwc, hwc->idx);
- hwc->state |= PERF_HES_STOPPED | PERF_HES_UPTODATE;
- }
- }
-@@ -518,7 +512,13 @@ __hw_perf_event_init(struct perf_event *event)
- hwc->config_base |= (unsigned long)mapping;
-
- if (!hwc->sample_period) {
-- hwc->sample_period = armpmu->max_period;
-+ /*
-+ * For non-sampling runs, limit the sample_period to half
-+ * of the counter width. That way, the new counter value
-+ * is far less likely to overtake the previous one unless
-+ * you have some serious IRQ latency issues.
-+ */
-+ hwc->sample_period = armpmu->max_period >> 1;
- hwc->last_period = hwc->sample_period;
- local64_set(&hwc->period_left, hwc->sample_period);
- }
-diff --git a/arch/arm/kernel/perf_event_v6.c b/arch/arm/kernel/perf_event_v6.c
-index 533be99..88bf152 100644
---- a/arch/arm/kernel/perf_event_v6.c
-+++ b/arch/arm/kernel/perf_event_v6.c
-@@ -524,7 +524,7 @@ armv6pmu_handle_irq(int irq_num,
- continue;
-
- hwc = &event->hw;
-- armpmu_event_update(event, hwc, idx, 1);
-+ armpmu_event_update(event, hwc, idx);
- data.period = event->hw.last_period;
- if (!armpmu_event_set_period(event, hwc, idx))
- continue;
-diff --git a/arch/arm/kernel/perf_event_v7.c b/arch/arm/kernel/perf_event_v7.c
-index 460bbbb..c63a13e 100644
---- a/arch/arm/kernel/perf_event_v7.c
-+++ b/arch/arm/kernel/perf_event_v7.c
-@@ -935,7 +935,7 @@ static irqreturn_t armv7pmu_handle_irq(int irq_num, void *dev)
- continue;
-
- hwc = &event->hw;
-- armpmu_event_update(event, hwc, idx, 1);
-+ armpmu_event_update(event, hwc, idx);
- data.period = event->hw.last_period;
- if (!armpmu_event_set_period(event, hwc, idx))
- continue;
-diff --git a/arch/arm/kernel/perf_event_xscale.c b/arch/arm/kernel/perf_event_xscale.c
-index 3b99d82..831e019 100644
---- a/arch/arm/kernel/perf_event_xscale.c
-+++ b/arch/arm/kernel/perf_event_xscale.c
-@@ -259,7 +259,7 @@ xscale1pmu_handle_irq(int irq_num, void *dev)
- continue;
-
- hwc = &event->hw;
-- armpmu_event_update(event, hwc, idx, 1);
-+ armpmu_event_update(event, hwc, idx);
- data.period = event->hw.last_period;
- if (!armpmu_event_set_period(event, hwc, idx))
- continue;
-@@ -596,7 +596,7 @@ xscale2pmu_handle_irq(int irq_num, void *dev)
- continue;
-
- hwc = &event->hw;
-- armpmu_event_update(event, hwc, idx, 1);
-+ armpmu_event_update(event, hwc, idx);
- data.period = event->hw.last_period;
- if (!armpmu_event_set_period(event, hwc, idx))
- continue;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0067-ARM-7355-1-perf-clear-overflow-flag-when-disabling-c.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0067-ARM-7355-1-perf-clear-overflow-flag-when-disabling-c.patch
deleted file mode 100644
index 5d401cb..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0067-ARM-7355-1-perf-clear-overflow-flag-when-disabling-c.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 54426f627a1b329bda270f1e85f9ee0e01e18573 Mon Sep 17 00:00:00 2001
-From: Will Deacon <will.deacon at arm.com>
-Date: Tue, 6 Mar 2012 17:34:22 +0100
-Subject: [PATCH 67/95] ARM: 7355/1: perf: clear overflow flag when disabling
- counter on ARMv7 PMU
-
-commit 99c1745b9c76910e195889044f914b4898b7c9a5 upstream.
-
-When disabling a counter on an ARMv7 PMU, we should also clear the
-overflow flag in case an overflow occurred whilst stopping the counter.
-This prevents a spurious overflow being picked up later and leading to
-either false accounting or a NULL dereference.
-
-Reported-by: Ming Lei <tom.leiming at gmail.com>
-Signed-off-by: Will Deacon <will.deacon at arm.com>
-Signed-off-by: Russell King <rmk+kernel at arm.linux.org.uk>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/arm/kernel/perf_event_v7.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/arch/arm/kernel/perf_event_v7.c b/arch/arm/kernel/perf_event_v7.c
-index c63a13e..5e1e4f7 100644
---- a/arch/arm/kernel/perf_event_v7.c
-+++ b/arch/arm/kernel/perf_event_v7.c
-@@ -781,6 +781,11 @@ static inline int armv7_pmnc_disable_intens(int idx)
-
- counter = ARMV7_IDX_TO_COUNTER(idx);
- asm volatile("mcr p15, 0, %0, c9, c14, 2" : : "r" (BIT(counter)));
-+ isb();
-+ /* Clear the overflow flag in case an interrupt is pending. */
-+ asm volatile("mcr p15, 0, %0, c9, c12, 3" : : "r" (BIT(counter)));
-+ isb();
-+
- return idx;
- }
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0068-ARM-7356-1-perf-check-that-we-have-an-event-in-the-P.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0068-ARM-7356-1-perf-check-that-we-have-an-event-in-the-P.patch
deleted file mode 100644
index 732c041..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0068-ARM-7356-1-perf-check-that-we-have-an-event-in-the-P.patch
+++ /dev/null
@@ -1,103 +0,0 @@
-From c37b95acdb2e664b9673a230a56c0cefc2be3059 Mon Sep 17 00:00:00 2001
-From: Will Deacon <will.deacon at arm.com>
-Date: Tue, 6 Mar 2012 17:34:50 +0100
-Subject: [PATCH 68/95] ARM: 7356/1: perf: check that we have an event in the
- PMU IRQ handlers
-
-commit f6f5a30c834135c9f2fa10400c59ebbdd9188567 upstream.
-
-The PMU IRQ handlers in perf assume that if a counter has overflowed
-then perf must be responsible. In the paranoid world of crazy hardware,
-this could be false, so check that we do have a valid event before
-attempting to dereference NULL in the interrupt path.
-
-Signed-off-by: Ming Lei <tom.leiming at gmail.com>
-Signed-off-by: Will Deacon <will.deacon at arm.com>
-Signed-off-by: Russell King <rmk+kernel at arm.linux.org.uk>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/arm/kernel/perf_event_v6.c | 20 ++------------------
- arch/arm/kernel/perf_event_v7.c | 4 ++++
- arch/arm/kernel/perf_event_xscale.c | 6 ++++++
- 3 files changed, 12 insertions(+), 18 deletions(-)
-
-diff --git a/arch/arm/kernel/perf_event_v6.c b/arch/arm/kernel/perf_event_v6.c
-index 88bf152..b78af0c 100644
---- a/arch/arm/kernel/perf_event_v6.c
-+++ b/arch/arm/kernel/perf_event_v6.c
-@@ -467,23 +467,6 @@ armv6pmu_enable_event(struct hw_perf_event *hwc,
- raw_spin_unlock_irqrestore(&events->pmu_lock, flags);
- }
-
--static int counter_is_active(unsigned long pmcr, int idx)
--{
-- unsigned long mask = 0;
-- if (idx == ARMV6_CYCLE_COUNTER)
-- mask = ARMV6_PMCR_CCOUNT_IEN;
-- else if (idx == ARMV6_COUNTER0)
-- mask = ARMV6_PMCR_COUNT0_IEN;
-- else if (idx == ARMV6_COUNTER1)
-- mask = ARMV6_PMCR_COUNT1_IEN;
--
-- if (mask)
-- return pmcr & mask;
--
-- WARN_ONCE(1, "invalid counter number (%d)\n", idx);
-- return 0;
--}
--
- static irqreturn_t
- armv6pmu_handle_irq(int irq_num,
- void *dev)
-@@ -513,7 +496,8 @@ armv6pmu_handle_irq(int irq_num,
- struct perf_event *event = cpuc->events[idx];
- struct hw_perf_event *hwc;
-
-- if (!counter_is_active(pmcr, idx))
-+ /* Ignore if we don't have an event. */
-+ if (!event)
- continue;
-
- /*
-diff --git a/arch/arm/kernel/perf_event_v7.c b/arch/arm/kernel/perf_event_v7.c
-index 5e1e4f7..2127ca3 100644
---- a/arch/arm/kernel/perf_event_v7.c
-+++ b/arch/arm/kernel/perf_event_v7.c
-@@ -932,6 +932,10 @@ static irqreturn_t armv7pmu_handle_irq(int irq_num, void *dev)
- struct perf_event *event = cpuc->events[idx];
- struct hw_perf_event *hwc;
-
-+ /* Ignore if we don't have an event. */
-+ if (!event)
-+ continue;
-+
- /*
- * We have a single interrupt for all counters. Check that
- * each counter has overflowed before we process it.
-diff --git a/arch/arm/kernel/perf_event_xscale.c b/arch/arm/kernel/perf_event_xscale.c
-index 831e019..a5bbd36 100644
---- a/arch/arm/kernel/perf_event_xscale.c
-+++ b/arch/arm/kernel/perf_event_xscale.c
-@@ -255,6 +255,9 @@ xscale1pmu_handle_irq(int irq_num, void *dev)
- struct perf_event *event = cpuc->events[idx];
- struct hw_perf_event *hwc;
-
-+ if (!event)
-+ continue;
-+
- if (!xscale1_pmnc_counter_has_overflowed(pmnc, idx))
- continue;
-
-@@ -592,6 +595,9 @@ xscale2pmu_handle_irq(int irq_num, void *dev)
- struct perf_event *event = cpuc->events[idx];
- struct hw_perf_event *hwc;
-
-+ if (!event)
-+ continue;
-+
- if (!xscale2_pmnc_counter_has_overflowed(pmnc, idx))
- continue;
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0069-ARM-7357-1-perf-fix-overflow-handling-for-xscale2-PM.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0069-ARM-7357-1-perf-fix-overflow-handling-for-xscale2-PM.patch
deleted file mode 100644
index 34b2482..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0069-ARM-7357-1-perf-fix-overflow-handling-for-xscale2-PM.patch
+++ /dev/null
@@ -1,87 +0,0 @@
-From eec10c8ac63480ab5478326a7e2361b2f13ab775 Mon Sep 17 00:00:00 2001
-From: Will Deacon <will.deacon at arm.com>
-Date: Tue, 6 Mar 2012 17:35:55 +0100
-Subject: [PATCH 69/95] ARM: 7357/1: perf: fix overflow handling for xscale2
- PMUs
-
-commit 3f31ae121348afd9ed39700ea2a63c17cd7eeed1 upstream.
-
-xscale2 PMUs indicate overflow not via the PMU control register, but by
-a separate overflow FLAG register instead.
-
-This patch fixes the xscale2 PMU code to use this register to detect
-to overflow and ensures that we clear any pending overflow when
-disabling a counter.
-
-Signed-off-by: Will Deacon <will.deacon at arm.com>
-Signed-off-by: Russell King <rmk+kernel at arm.linux.org.uk>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/arm/kernel/perf_event_xscale.c | 10 ++++++++--
- 1 file changed, 8 insertions(+), 2 deletions(-)
-
-diff --git a/arch/arm/kernel/perf_event_xscale.c b/arch/arm/kernel/perf_event_xscale.c
-index a5bbd36..71a21e6 100644
---- a/arch/arm/kernel/perf_event_xscale.c
-+++ b/arch/arm/kernel/perf_event_xscale.c
-@@ -598,7 +598,7 @@ xscale2pmu_handle_irq(int irq_num, void *dev)
- if (!event)
- continue;
-
-- if (!xscale2_pmnc_counter_has_overflowed(pmnc, idx))
-+ if (!xscale2_pmnc_counter_has_overflowed(of_flags, idx))
- continue;
-
- hwc = &event->hw;
-@@ -669,7 +669,7 @@ xscale2pmu_enable_event(struct hw_perf_event *hwc, int idx)
- static void
- xscale2pmu_disable_event(struct hw_perf_event *hwc, int idx)
- {
-- unsigned long flags, ien, evtsel;
-+ unsigned long flags, ien, evtsel, of_flags;
- struct pmu_hw_events *events = cpu_pmu->get_hw_events();
-
- ien = xscale2pmu_read_int_enable();
-@@ -678,26 +678,31 @@ xscale2pmu_disable_event(struct hw_perf_event *hwc, int idx)
- switch (idx) {
- case XSCALE_CYCLE_COUNTER:
- ien &= ~XSCALE2_CCOUNT_INT_EN;
-+ of_flags = XSCALE2_CCOUNT_OVERFLOW;
- break;
- case XSCALE_COUNTER0:
- ien &= ~XSCALE2_COUNT0_INT_EN;
- evtsel &= ~XSCALE2_COUNT0_EVT_MASK;
- evtsel |= XSCALE_PERFCTR_UNUSED << XSCALE2_COUNT0_EVT_SHFT;
-+ of_flags = XSCALE2_COUNT0_OVERFLOW;
- break;
- case XSCALE_COUNTER1:
- ien &= ~XSCALE2_COUNT1_INT_EN;
- evtsel &= ~XSCALE2_COUNT1_EVT_MASK;
- evtsel |= XSCALE_PERFCTR_UNUSED << XSCALE2_COUNT1_EVT_SHFT;
-+ of_flags = XSCALE2_COUNT1_OVERFLOW;
- break;
- case XSCALE_COUNTER2:
- ien &= ~XSCALE2_COUNT2_INT_EN;
- evtsel &= ~XSCALE2_COUNT2_EVT_MASK;
- evtsel |= XSCALE_PERFCTR_UNUSED << XSCALE2_COUNT2_EVT_SHFT;
-+ of_flags = XSCALE2_COUNT2_OVERFLOW;
- break;
- case XSCALE_COUNTER3:
- ien &= ~XSCALE2_COUNT3_INT_EN;
- evtsel &= ~XSCALE2_COUNT3_EVT_MASK;
- evtsel |= XSCALE_PERFCTR_UNUSED << XSCALE2_COUNT3_EVT_SHFT;
-+ of_flags = XSCALE2_COUNT3_OVERFLOW;
- break;
- default:
- WARN_ONCE(1, "invalid counter number (%d)\n", idx);
-@@ -707,6 +712,7 @@ xscale2pmu_disable_event(struct hw_perf_event *hwc, int idx)
- raw_spin_lock_irqsave(&events->pmu_lock, flags);
- xscale2pmu_write_event_select(evtsel);
- xscale2pmu_write_int_enable(ien);
-+ xscale2pmu_write_overflow_flags(of_flags);
- raw_spin_unlock_irqrestore(&events->pmu_lock, flags);
- }
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0070-media-staging-lirc_serial-Fix-init-exit-order.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0070-media-staging-lirc_serial-Fix-init-exit-order.patch
deleted file mode 100644
index 31e5c22..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0070-media-staging-lirc_serial-Fix-init-exit-order.patch
+++ /dev/null
@@ -1,143 +0,0 @@
-From 03d9b3bbcec66ab0f632daef62985876821276d6 Mon Sep 17 00:00:00 2001
-From: Ben Hutchings <ben at decadent.org.uk>
-Date: Wed, 16 Nov 2011 01:49:41 -0300
-Subject: [PATCH 70/95] media: staging: lirc_serial: Fix init/exit order
-
-commit 9105b8b200410383d0854bbe237ee385d7d33ba6 upstream.
-
-Currently the module init function registers a platform_device and
-only then allocates its IRQ and I/O region. This allows allocation to
-race with the device's suspend() function. Instead, allocate
-resources in the platform driver's probe() function and free them in
-the remove() function.
-
-The module exit function removes the platform device before the
-character device that provides access to it. Change it to reverse the
-order of initialisation.
-
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
-Signed-off-by: Mauro Carvalho Chehab <mchehab at redhat.com>
-Signed-off-by: Jonathan Nieder <jrnieder at gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/staging/media/lirc/lirc_serial.c | 56 +++++++++++-------------------
- 1 file changed, 21 insertions(+), 35 deletions(-)
-
-diff --git a/drivers/staging/media/lirc/lirc_serial.c b/drivers/staging/media/lirc/lirc_serial.c
-index 8a060a8..8637631 100644
---- a/drivers/staging/media/lirc/lirc_serial.c
-+++ b/drivers/staging/media/lirc/lirc_serial.c
-@@ -836,7 +836,7 @@ static int hardware_init_port(void)
- return 0;
- }
-
--static int init_port(void)
-+static int __devinit lirc_serial_probe(struct platform_device *dev)
- {
- int i, nlow, nhigh, result;
-
-@@ -913,6 +913,18 @@ static int init_port(void)
- return 0;
- }
-
-+static int __devexit lirc_serial_remove(struct platform_device *dev)
-+{
-+ free_irq(irq, (void *)&hardware);
-+
-+ if (iommap != 0)
-+ release_mem_region(iommap, 8 << ioshift);
-+ else
-+ release_region(io, 8);
-+
-+ return 0;
-+}
-+
- static int set_use_inc(void *data)
- {
- unsigned long flags;
-@@ -1076,16 +1088,6 @@ static struct lirc_driver driver = {
-
- static struct platform_device *lirc_serial_dev;
-
--static int __devinit lirc_serial_probe(struct platform_device *dev)
--{
-- return 0;
--}
--
--static int __devexit lirc_serial_remove(struct platform_device *dev)
--{
-- return 0;
--}
--
- static int lirc_serial_suspend(struct platform_device *dev,
- pm_message_t state)
- {
-@@ -1188,10 +1190,6 @@ static int __init lirc_serial_init_module(void)
- {
- int result;
-
-- result = lirc_serial_init();
-- if (result)
-- return result;
--
- switch (type) {
- case LIRC_HOMEBREW:
- case LIRC_IRDEO:
-@@ -1211,8 +1209,7 @@ static int __init lirc_serial_init_module(void)
- break;
- #endif
- default:
-- result = -EINVAL;
-- goto exit_serial_exit;
-+ return -EINVAL;
- }
- if (!softcarrier) {
- switch (type) {
-@@ -1228,37 +1225,26 @@ static int __init lirc_serial_init_module(void)
- }
- }
-
-- result = init_port();
-- if (result < 0)
-- goto exit_serial_exit;
-+ result = lirc_serial_init();
-+ if (result)
-+ return result;
-+
- driver.features = hardware[type].features;
- driver.dev = &lirc_serial_dev->dev;
- driver.minor = lirc_register_driver(&driver);
- if (driver.minor < 0) {
- printk(KERN_ERR LIRC_DRIVER_NAME
- ": register_chrdev failed!\n");
-- result = -EIO;
-- goto exit_release;
-+ lirc_serial_exit();
-+ return -EIO;
- }
- return 0;
--exit_release:
-- release_region(io, 8);
--exit_serial_exit:
-- lirc_serial_exit();
-- return result;
- }
-
- static void __exit lirc_serial_exit_module(void)
- {
-- lirc_serial_exit();
--
-- free_irq(irq, (void *)&hardware);
--
-- if (iommap != 0)
-- release_mem_region(iommap, 8 << ioshift);
-- else
-- release_region(io, 8);
- lirc_unregister_driver(driver.minor);
-+ lirc_serial_exit();
- dprintk("cleaned up module\n");
- }
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0071-media-staging-lirc_serial-Free-resources-on-failure-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0071-media-staging-lirc_serial-Free-resources-on-failure-.patch
deleted file mode 100644
index a1dcb0c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0071-media-staging-lirc_serial-Free-resources-on-failure-.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From ae019014abd36ff47a3ebc0c2470e44534254a14 Mon Sep 17 00:00:00 2001
-From: Ben Hutchings <ben at decadent.org.uk>
-Date: Wed, 16 Nov 2011 01:52:11 -0300
-Subject: [PATCH 71/95] media: staging: lirc_serial: Free resources on failure
- paths of lirc_serial_probe()
-
-commit c8e57e1b766c2321aa76ee5e6878c69bd2313d62 upstream.
-
-Failure to allocate the I/O region leaves the IRQ allocated.
-A later failure leaves them both allocated.
-
-Reported-by: Torsten Crass <torsten.crass at eBiology.de>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
-Signed-off-by: Mauro Carvalho Chehab <mchehab at redhat.com>
-Signed-off-by: Jonathan Nieder <jrnieder at gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/staging/media/lirc/lirc_serial.c | 19 ++++++++++++++++---
- 1 file changed, 16 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/staging/media/lirc/lirc_serial.c b/drivers/staging/media/lirc/lirc_serial.c
-index 8637631..d833772 100644
---- a/drivers/staging/media/lirc/lirc_serial.c
-+++ b/drivers/staging/media/lirc/lirc_serial.c
-@@ -875,11 +875,14 @@ static int __devinit lirc_serial_probe(struct platform_device *dev)
- ": or compile the serial port driver as module and\n");
- printk(KERN_WARNING LIRC_DRIVER_NAME
- ": make sure this module is loaded first\n");
-- return -EBUSY;
-+ result = -EBUSY;
-+ goto exit_free_irq;
- }
-
-- if (hardware_init_port() < 0)
-- return -EINVAL;
-+ if (hardware_init_port() < 0) {
-+ result = -EINVAL;
-+ goto exit_release_region;
-+ }
-
- /* Initialize pulse/space widths */
- init_timing_params(duty_cycle, freq);
-@@ -911,6 +914,16 @@ static int __devinit lirc_serial_probe(struct platform_device *dev)
-
- dprintk("Interrupt %d, port %04x obtained\n", irq, io);
- return 0;
-+
-+exit_release_region:
-+ if (iommap != 0)
-+ release_mem_region(iommap, 8 << ioshift);
-+ else
-+ release_region(io, 8);
-+exit_free_irq:
-+ free_irq(irq, (void *)&hardware);
-+
-+ return result;
- }
-
- static int __devexit lirc_serial_remove(struct platform_device *dev)
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0072-media-staging-lirc_serial-Fix-deadlock-on-resume-fai.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0072-media-staging-lirc_serial-Fix-deadlock-on-resume-fai.patch
deleted file mode 100644
index a2fc8cf..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0072-media-staging-lirc_serial-Fix-deadlock-on-resume-fai.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 7d10af4b409b98292b59a8081e2083e12c23e5c9 Mon Sep 17 00:00:00 2001
-From: Ben Hutchings <ben at decadent.org.uk>
-Date: Wed, 16 Nov 2011 01:53:25 -0300
-Subject: [PATCH 72/95] media: staging: lirc_serial: Fix deadlock on resume
- failure
-
-commit 1ff1d88e862948ae5bfe490248c023ff8ac2855d upstream.
-
-A resume function cannot remove the device it is resuming!
-
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
-Signed-off-by: Mauro Carvalho Chehab <mchehab at redhat.com>
-Signed-off-by: Jonathan Nieder <jrnieder at gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/staging/media/lirc/lirc_serial.c | 4 +---
- 1 file changed, 1 insertion(+), 3 deletions(-)
-
-diff --git a/drivers/staging/media/lirc/lirc_serial.c b/drivers/staging/media/lirc/lirc_serial.c
-index d833772..befe626 100644
---- a/drivers/staging/media/lirc/lirc_serial.c
-+++ b/drivers/staging/media/lirc/lirc_serial.c
-@@ -1127,10 +1127,8 @@ static int lirc_serial_resume(struct platform_device *dev)
- {
- unsigned long flags;
-
-- if (hardware_init_port() < 0) {
-- lirc_serial_exit();
-+ if (hardware_init_port() < 0)
- return -EINVAL;
-- }
-
- spin_lock_irqsave(&hardware[type].lock, flags);
- /* Enable Interrupt */
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0073-media-staging-lirc_serial-Do-not-assume-error-codes-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0073-media-staging-lirc_serial-Do-not-assume-error-codes-.patch
deleted file mode 100644
index 122dbd3..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0073-media-staging-lirc_serial-Do-not-assume-error-codes-.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From 2ba099664516f33ff853e47879858e4f290a4b29 Mon Sep 17 00:00:00 2001
-From: Ben Hutchings <ben at decadent.org.uk>
-Date: Wed, 16 Nov 2011 01:54:04 -0300
-Subject: [PATCH 73/95] media: staging: lirc_serial: Do not assume error codes
- returned by request_irq()
-
-commit affc9a0d59ac49bd304e2137bd5e4ffdd6fdfa52 upstream.
-
-lirc_serial_probe() must fail if request_irq() returns an error, even if
-it isn't EBUSY or EINVAL,
-
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
-Signed-off-by: Mauro Carvalho Chehab <mchehab at redhat.com>
-Signed-off-by: Jonathan Nieder <jrnieder at gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/staging/media/lirc/lirc_serial.c | 21 +++++++++------------
- 1 file changed, 9 insertions(+), 12 deletions(-)
-
-diff --git a/drivers/staging/media/lirc/lirc_serial.c b/drivers/staging/media/lirc/lirc_serial.c
-index befe626..1501e4e 100644
---- a/drivers/staging/media/lirc/lirc_serial.c
-+++ b/drivers/staging/media/lirc/lirc_serial.c
-@@ -843,18 +843,15 @@ static int __devinit lirc_serial_probe(struct platform_device *dev)
- result = request_irq(irq, irq_handler,
- (share_irq ? IRQF_SHARED : 0),
- LIRC_DRIVER_NAME, (void *)&hardware);
--
-- switch (result) {
-- case -EBUSY:
-- printk(KERN_ERR LIRC_DRIVER_NAME ": IRQ %d busy\n", irq);
-- return -EBUSY;
-- case -EINVAL:
-- printk(KERN_ERR LIRC_DRIVER_NAME
-- ": Bad irq number or handler\n");
-- return -EINVAL;
-- default:
-- break;
-- };
-+ if (result < 0) {
-+ if (result == -EBUSY)
-+ printk(KERN_ERR LIRC_DRIVER_NAME ": IRQ %d busy\n",
-+ irq);
-+ else if (result == -EINVAL)
-+ printk(KERN_ERR LIRC_DRIVER_NAME
-+ ": Bad irq number or handler\n");
-+ return result;
-+ }
-
- /* Reserve io region. */
- /*
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0074-Input-ALPS-fix-touchpad-detection-when-buttons-are-p.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0074-Input-ALPS-fix-touchpad-detection-when-buttons-are-p.patch
deleted file mode 100644
index b055ac4..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0074-Input-ALPS-fix-touchpad-detection-when-buttons-are-p.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From 5162124d608a6fe5d31d75b7aa8ee3accb839b73 Mon Sep 17 00:00:00 2001
-From: Akio Idehara <zbe64533 at gmail.com>
-Date: Thu, 8 Mar 2012 13:48:12 -0600
-Subject: [PATCH 74/95] Input: ALPS - fix touchpad detection when buttons are
- pressed
-
-commit 99c90ab31fad855b9da9dee3a5aa6c27f263e9d6 upstream.
-
-ALPS touchpad detection fails if some buttons of ALPS are pressed.
-The reason is that the "E6" query response byte is different from
-what is expected.
-
-This was tested on a Toshiba Portege R500.
-
-Signed-off-by: Akio Idehara <zbe64533 at gmail.com>
-Tested-by: Seth Forshee <seth.forshee at canonical.com>
-Signed-off-by: Dmitry Torokhov <dtor at mail.ru>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/input/mouse/alps.c | 7 +++++--
- 1 file changed, 5 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c
-index 003587c..9c40c11 100644
---- a/drivers/input/mouse/alps.c
-+++ b/drivers/input/mouse/alps.c
-@@ -421,7 +421,9 @@ static const struct alps_model_info *alps_get_model(struct psmouse *psmouse, int
-
- /*
- * First try "E6 report".
-- * ALPS should return 0,0,10 or 0,0,100
-+ * ALPS should return 0,0,10 or 0,0,100 if no buttons are pressed.
-+ * The bits 0-2 of the first byte will be 1s if some buttons are
-+ * pressed.
- */
- param[0] = 0;
- if (ps2_command(ps2dev, param, PSMOUSE_CMD_SETRES) ||
-@@ -437,7 +439,8 @@ static const struct alps_model_info *alps_get_model(struct psmouse *psmouse, int
- psmouse_dbg(psmouse, "E6 report: %2.2x %2.2x %2.2x",
- param[0], param[1], param[2]);
-
-- if (param[0] != 0 || param[1] != 0 || (param[2] != 10 && param[2] != 100))
-+ if ((param[0] & 0xf8) != 0 || param[1] != 0 ||
-+ (param[2] != 10 && param[2] != 100))
- return NULL;
-
- /*
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0075-hwmon-pmbus_core-Fix-maximum-number-of-POUT-alarm-at.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0075-hwmon-pmbus_core-Fix-maximum-number-of-POUT-alarm-at.patch
deleted file mode 100644
index 98be539..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0075-hwmon-pmbus_core-Fix-maximum-number-of-POUT-alarm-at.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 91273a5272671509374d798d6608d270dde753f4 Mon Sep 17 00:00:00 2001
-From: Guenter Roeck <linux at roeck-us.net>
-Date: Sun, 4 Mar 2012 08:10:57 -0800
-Subject: [PATCH 75/95] hwmon: (pmbus_core) Fix maximum number of POUT alarm
- attributes
-
-commit 7cb3c44fb1f7999e4c53b6a52de6bc25da6de079 upstream.
-
-There are up to three POUT alarm attributes, not two, since cap_alarm was added.
-
-Reported-by: Michele Petracca <mi.petracca at gmail.com>
-Signed-off-by: Guenter Roeck <linux at roeck-us.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/hwmon/pmbus/pmbus_core.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/hwmon/pmbus/pmbus_core.c b/drivers/hwmon/pmbus/pmbus_core.c
-index 00460d8..d89b339 100644
---- a/drivers/hwmon/pmbus/pmbus_core.c
-+++ b/drivers/hwmon/pmbus/pmbus_core.c
-@@ -54,7 +54,8 @@
- lcrit_alarm, crit_alarm */
- #define PMBUS_IOUT_BOOLEANS_PER_PAGE 3 /* alarm, lcrit_alarm,
- crit_alarm */
--#define PMBUS_POUT_BOOLEANS_PER_PAGE 2 /* alarm, crit_alarm */
-+#define PMBUS_POUT_BOOLEANS_PER_PAGE 3 /* cap_alarm, alarm, crit_alarm
-+ */
- #define PMBUS_MAX_BOOLEANS_PER_FAN 2 /* alarm, fault */
- #define PMBUS_MAX_BOOLEANS_PER_TEMP 4 /* min_alarm, max_alarm,
- lcrit_alarm, crit_alarm */
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0076-hwmon-jc42-Add-support-for-ST-Microelectronics-STTS2.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0076-hwmon-jc42-Add-support-for-ST-Microelectronics-STTS2.patch
deleted file mode 100644
index 808d2c3..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0076-hwmon-jc42-Add-support-for-ST-Microelectronics-STTS2.patch
+++ /dev/null
@@ -1,89 +0,0 @@
-From 5c986387e4a96e195dc0e7517e9e5dacb12e29b8 Mon Sep 17 00:00:00 2001
-From: Jean Delvare <khali at linux-fr.org>
-Date: Mon, 5 Mar 2012 08:32:00 -0500
-Subject: [PATCH 76/95] hwmon: (jc42) Add support for ST Microelectronics
- STTS2002 and STTS3000
-
-commit 4de86126a712ba83fa038d277c8282f7ed466a4b upstream.
-
-These are fully compatible with Jedec JC 42.4 as far as I can see.
-
-Signed-off-by: Jean Delvare <khali at linux-fr.org>
-Cc: Guenter Roeck <guenter.roeck at ericsson.com>
-Signed-off-by: Guenter Roeck <guenter.roeck at ericsson.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- Documentation/hwmon/jc42 | 6 ++++++
- drivers/hwmon/Kconfig | 3 ++-
- drivers/hwmon/jc42.c | 10 ++++++++++
- 3 files changed, 18 insertions(+), 1 deletion(-)
-
-diff --git a/Documentation/hwmon/jc42 b/Documentation/hwmon/jc42
-index a22ecf4..e713375 100644
---- a/Documentation/hwmon/jc42
-+++ b/Documentation/hwmon/jc42
-@@ -48,6 +48,12 @@ Supported chips:
- Datasheets:
- http://www.st.com/stonline/products/literature/ds/13447/stts424.pdf
- http://www.st.com/stonline/products/literature/ds/13448/stts424e02.pdf
-+ * ST Microelectronics STTS2002, STTS3000
-+ Prefix: 'stts2002', 'stts3000'
-+ Addresses scanned: I2C 0x18 - 0x1f
-+ Datasheets:
-+ http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/DATASHEET/CD00225278.pdf
-+ http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/DATA_BRIEF/CD00270920.pdf
- * JEDEC JC 42.4 compliant temperature sensor chips
- Prefix: 'jc42'
- Addresses scanned: I2C 0x18 - 0x1f
-diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig
-index 91be41f..629833a 100644
---- a/drivers/hwmon/Kconfig
-+++ b/drivers/hwmon/Kconfig
-@@ -498,7 +498,8 @@ config SENSORS_JC42
- temperature sensors, which are used on many DDR3 memory modules for
- mobile devices and servers. Support will include, but not be limited
- to, ADT7408, CAT34TS02, CAT6095, MAX6604, MCP9805, MCP98242, MCP98243,
-- MCP9843, SE97, SE98, STTS424(E), TSE2002B3, and TS3000B3.
-+ MCP9843, SE97, SE98, STTS424(E), STTS2002, STTS3000, TSE2002B3, and
-+ TS3000B3.
-
- This driver can also be built as a module. If so, the module
- will be called jc42.
-diff --git a/drivers/hwmon/jc42.c b/drivers/hwmon/jc42.c
-index 2d3d728..4cbd4c7 100644
---- a/drivers/hwmon/jc42.c
-+++ b/drivers/hwmon/jc42.c
-@@ -113,6 +113,12 @@ static const unsigned short normal_i2c[] = {
- #define STTS424E_DEVID 0x0000
- #define STTS424E_DEVID_MASK 0xfffe
-
-+#define STTS2002_DEVID 0x0300
-+#define STTS2002_DEVID_MASK 0xffff
-+
-+#define STTS3000_DEVID 0x0200
-+#define STTS3000_DEVID_MASK 0xffff
-+
- static u16 jc42_hysteresis[] = { 0, 1500, 3000, 6000 };
-
- struct jc42_chips {
-@@ -133,6 +139,8 @@ static struct jc42_chips jc42_chips[] = {
- { NXP_MANID, SE98_DEVID, SE98_DEVID_MASK },
- { STM_MANID, STTS424_DEVID, STTS424_DEVID_MASK },
- { STM_MANID, STTS424E_DEVID, STTS424E_DEVID_MASK },
-+ { STM_MANID, STTS2002_DEVID, STTS2002_DEVID_MASK },
-+ { STM_MANID, STTS3000_DEVID, STTS3000_DEVID_MASK },
- };
-
- /* Each client has this additional data */
-@@ -171,6 +179,8 @@ static const struct i2c_device_id jc42_id[] = {
- { "se97b", 0 },
- { "se98", 0 },
- { "stts424", 0 },
-+ { "stts2002", 0 },
-+ { "stts3000", 0 },
- { "tse2002b3", 0 },
- { "ts3000b3", 0 },
- { }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0077-hwmon-jc42-Add-support-for-AT30TS00-TS3000GB2-TSE200.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0077-hwmon-jc42-Add-support-for-AT30TS00-TS3000GB2-TSE200.patch
deleted file mode 100644
index e3d25e7..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0077-hwmon-jc42-Add-support-for-AT30TS00-TS3000GB2-TSE200.patch
+++ /dev/null
@@ -1,153 +0,0 @@
-From 9d585bc4172c764b7f6aaf2c06a4b8e9747302ad Mon Sep 17 00:00:00 2001
-From: Guenter Roeck <linux at roeck-us.net>
-Date: Mon, 5 Mar 2012 11:13:52 -0800
-Subject: [PATCH 77/95] hwmon: (jc42) Add support for AT30TS00, TS3000GB2,
- TSE2002GB2, and MCP9804
-
-commit 1bd612a25855f4cc9345052b53d7da697dba6358 upstream.
-
-Also update IDT datasheet locations.
-
-Signed-off-by: Guenter Roeck <linux at roeck-us.net>
-Acked-by: Jean Delvare <khali at linux-fr.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- Documentation/hwmon/jc42 | 20 ++++++++++++++------
- drivers/hwmon/Kconfig | 6 +++---
- drivers/hwmon/jc42.c | 20 ++++++++++++++++++--
- 3 files changed, 35 insertions(+), 11 deletions(-)
-
-diff --git a/Documentation/hwmon/jc42 b/Documentation/hwmon/jc42
-index e713375..52729a7 100644
---- a/Documentation/hwmon/jc42
-+++ b/Documentation/hwmon/jc42
-@@ -7,21 +7,29 @@ Supported chips:
- Addresses scanned: I2C 0x18 - 0x1f
- Datasheets:
- http://www.analog.com/static/imported-files/data_sheets/ADT7408.pdf
-- * IDT TSE2002B3, TS3000B3
-- Prefix: 'tse2002b3', 'ts3000b3'
-+ * Atmel AT30TS00
-+ Prefix: 'at30ts00'
- Addresses scanned: I2C 0x18 - 0x1f
- Datasheets:
-- http://www.idt.com/products/getdoc.cfm?docid=18715691
-- http://www.idt.com/products/getdoc.cfm?docid=18715692
-+ http://www.atmel.com/Images/doc8585.pdf
-+ * IDT TSE2002B3, TSE2002GB2, TS3000B3, TS3000GB2
-+ Prefix: 'tse2002', 'ts3000'
-+ Addresses scanned: I2C 0x18 - 0x1f
-+ Datasheets:
-+ http://www.idt.com/sites/default/files/documents/IDT_TSE2002B3C_DST_20100512_120303152056.pdf
-+ http://www.idt.com/sites/default/files/documents/IDT_TSE2002GB2A1_DST_20111107_120303145914.pdf
-+ http://www.idt.com/sites/default/files/documents/IDT_TS3000B3A_DST_20101129_120303152013.pdf
-+ http://www.idt.com/sites/default/files/documents/IDT_TS3000GB2A1_DST_20111104_120303151012.pdf
- * Maxim MAX6604
- Prefix: 'max6604'
- Addresses scanned: I2C 0x18 - 0x1f
- Datasheets:
- http://datasheets.maxim-ic.com/en/ds/MAX6604.pdf
-- * Microchip MCP9805, MCP98242, MCP98243, MCP9843
-- Prefixes: 'mcp9805', 'mcp98242', 'mcp98243', 'mcp9843'
-+ * Microchip MCP9804, MCP9805, MCP98242, MCP98243, MCP9843
-+ Prefixes: 'mcp9804', 'mcp9805', 'mcp98242', 'mcp98243', 'mcp9843'
- Addresses scanned: I2C 0x18 - 0x1f
- Datasheets:
-+ http://ww1.microchip.com/downloads/en/DeviceDoc/22203C.pdf
- http://ww1.microchip.com/downloads/en/DeviceDoc/21977b.pdf
- http://ww1.microchip.com/downloads/en/DeviceDoc/21996a.pdf
- http://ww1.microchip.com/downloads/en/DeviceDoc/22153c.pdf
-diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig
-index 629833a..83e3e9d 100644
---- a/drivers/hwmon/Kconfig
-+++ b/drivers/hwmon/Kconfig
-@@ -497,9 +497,9 @@ config SENSORS_JC42
- If you say yes here, you get support for JEDEC JC42.4 compliant
- temperature sensors, which are used on many DDR3 memory modules for
- mobile devices and servers. Support will include, but not be limited
-- to, ADT7408, CAT34TS02, CAT6095, MAX6604, MCP9805, MCP98242, MCP98243,
-- MCP9843, SE97, SE98, STTS424(E), STTS2002, STTS3000, TSE2002B3, and
-- TS3000B3.
-+ to, ADT7408, AT30TS00, CAT34TS02, CAT6095, MAX6604, MCP9804, MCP9805,
-+ MCP98242, MCP98243, MCP9843, SE97, SE98, STTS424(E), STTS2002,
-+ STTS3000, TSE2002B3, TSE2002GB2, TS3000B3, and TS3000GB2.
-
- This driver can also be built as a module. If so, the module
- will be called jc42.
-diff --git a/drivers/hwmon/jc42.c b/drivers/hwmon/jc42.c
-index 4cbd4c7..0274a05 100644
---- a/drivers/hwmon/jc42.c
-+++ b/drivers/hwmon/jc42.c
-@@ -64,6 +64,7 @@ static const unsigned short normal_i2c[] = {
-
- /* Manufacturer IDs */
- #define ADT_MANID 0x11d4 /* Analog Devices */
-+#define ATMEL_MANID 0x001f /* Atmel */
- #define MAX_MANID 0x004d /* Maxim */
- #define IDT_MANID 0x00b3 /* IDT */
- #define MCP_MANID 0x0054 /* Microchip */
-@@ -77,15 +78,25 @@ static const unsigned short normal_i2c[] = {
- #define ADT7408_DEVID 0x0801
- #define ADT7408_DEVID_MASK 0xffff
-
-+/* Atmel */
-+#define AT30TS00_DEVID 0x8201
-+#define AT30TS00_DEVID_MASK 0xffff
-+
- /* IDT */
- #define TS3000B3_DEVID 0x2903 /* Also matches TSE2002B3 */
- #define TS3000B3_DEVID_MASK 0xffff
-
-+#define TS3000GB2_DEVID 0x2912 /* Also matches TSE2002GB2 */
-+#define TS3000GB2_DEVID_MASK 0xffff
-+
- /* Maxim */
- #define MAX6604_DEVID 0x3e00
- #define MAX6604_DEVID_MASK 0xffff
-
- /* Microchip */
-+#define MCP9804_DEVID 0x0200
-+#define MCP9804_DEVID_MASK 0xfffc
-+
- #define MCP98242_DEVID 0x2000
- #define MCP98242_DEVID_MASK 0xfffc
-
-@@ -129,8 +140,11 @@ struct jc42_chips {
-
- static struct jc42_chips jc42_chips[] = {
- { ADT_MANID, ADT7408_DEVID, ADT7408_DEVID_MASK },
-+ { ATMEL_MANID, AT30TS00_DEVID, AT30TS00_DEVID_MASK },
- { IDT_MANID, TS3000B3_DEVID, TS3000B3_DEVID_MASK },
-+ { IDT_MANID, TS3000GB2_DEVID, TS3000GB2_DEVID_MASK },
- { MAX_MANID, MAX6604_DEVID, MAX6604_DEVID_MASK },
-+ { MCP_MANID, MCP9804_DEVID, MCP9804_DEVID_MASK },
- { MCP_MANID, MCP98242_DEVID, MCP98242_DEVID_MASK },
- { MCP_MANID, MCP98243_DEVID, MCP98243_DEVID_MASK },
- { MCP_MANID, MCP9843_DEVID, MCP9843_DEVID_MASK },
-@@ -167,10 +181,12 @@ static struct jc42_data *jc42_update_device(struct device *dev);
-
- static const struct i2c_device_id jc42_id[] = {
- { "adt7408", 0 },
-+ { "at30ts00", 0 },
- { "cat94ts02", 0 },
- { "cat6095", 0 },
- { "jc42", 0 },
- { "max6604", 0 },
-+ { "mcp9804", 0 },
- { "mcp9805", 0 },
- { "mcp98242", 0 },
- { "mcp98243", 0 },
-@@ -181,8 +197,8 @@ static const struct i2c_device_id jc42_id[] = {
- { "stts424", 0 },
- { "stts2002", 0 },
- { "stts3000", 0 },
-- { "tse2002b3", 0 },
-- { "ts3000b3", 0 },
-+ { "tse2002", 0 },
-+ { "ts3000", 0 },
- { }
- };
- MODULE_DEVICE_TABLE(i2c, jc42_id);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0078-hwmon-zl6100-Maintain-delay-parameter-in-driver-inst.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0078-hwmon-zl6100-Maintain-delay-parameter-in-driver-inst.patch
deleted file mode 100644
index ba5933f..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0078-hwmon-zl6100-Maintain-delay-parameter-in-driver-inst.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From 5d579963233528f717bf7f2313a70bab7cb4e33b Mon Sep 17 00:00:00 2001
-From: Guenter Roeck <linux at roeck-us.net>
-Date: Wed, 7 Mar 2012 03:58:55 -0800
-Subject: [PATCH 78/95] hwmon: (zl6100) Maintain delay parameter in driver
- instance data
-
-commit 7ad6307ad6968ce25cecf209d4822d4c722be030 upstream.
-
-A global delay parameter has the side effect of being overwritten with 0 if a
-single ZL2004 or ZL6105 is instantiated. If other chips supported by the same
-driver are in the system, this will result in access errors for those chips.
-
-To solve the problem, keep a per-instance copy of the delay parameter, and do
-not change the original parameter.
-
-Signed-off-by: Guenter Roeck <linux at roeck-us.net>
-Acked-by: Jean Delvare <khali at linux-fr.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/hwmon/pmbus/zl6100.c | 10 ++++++----
- 1 file changed, 6 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/hwmon/pmbus/zl6100.c b/drivers/hwmon/pmbus/zl6100.c
-index 2bc9800..ba296fd 100644
---- a/drivers/hwmon/pmbus/zl6100.c
-+++ b/drivers/hwmon/pmbus/zl6100.c
-@@ -33,6 +33,7 @@ enum chips { zl2004, zl2006, zl2008, zl2105, zl2106, zl6100, zl6105 };
- struct zl6100_data {
- int id;
- ktime_t access; /* chip access time */
-+ int delay; /* Delay between chip accesses in uS */
- struct pmbus_driver_info info;
- };
-
-@@ -49,10 +50,10 @@ MODULE_PARM_DESC(delay, "Delay between chip accesses in uS");
- /* Some chips need a delay between accesses */
- static inline void zl6100_wait(const struct zl6100_data *data)
- {
-- if (delay) {
-+ if (data->delay) {
- s64 delta = ktime_us_delta(ktime_get(), data->access);
-- if (delta < delay)
-- udelay(delay - delta);
-+ if (delta < data->delay)
-+ udelay(data->delay - delta);
- }
- }
-
-@@ -184,8 +185,9 @@ static int zl6100_probe(struct i2c_client *client,
- * can be cleared later for additional chips if tests show that it
- * is not needed (in other words, better be safe than sorry).
- */
-+ data->delay = delay;
- if (data->id == zl2004 || data->id == zl6105)
-- delay = 0;
-+ data->delay = 0;
-
- /*
- * Since there was a direct I2C device access above, wait before
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0079-carl9170-Fix-memory-accounting-when-sta-is-in-power-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0079-carl9170-Fix-memory-accounting-when-sta-is-in-power-.patch
deleted file mode 100644
index d0487ca..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0079-carl9170-Fix-memory-accounting-when-sta-is-in-power-.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 1e7878587d7c034882253717322d431cb32b20f3 Mon Sep 17 00:00:00 2001
-From: Nicolas Cavallari <Nicolas.Cavallari at lri.fr>
-Date: Thu, 23 Feb 2012 16:53:34 +0100
-Subject: [PATCH 79/95] carl9170: Fix memory accounting when sta is in
- power-save mode.
-
-commit 992d52529d7840236d3059b51c15d5eb9e81a869 upstream.
-
-On Access Point mode, when transmitting a packet, if the destination
-station is in powersave mode, we abort transmitting the packet to the
-device queue, but we do not reclaim the allocated memory. Given enough
-packets, we can go in a state where there is no packet on the device
-queue, but we think the device has no memory left, so no packet gets
-transmitted, connections breaks and the AP stops working.
-
-This undo the allocation done in the TX path when the station is in
-power-save mode.
-
-Signed-off-by: Nicolas Cavallari <cavallar at lri.fr>
-Acked-by: Christian Lamparter <chunkeey at googlemail.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/net/wireless/ath/carl9170/tx.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/net/wireless/ath/carl9170/tx.c b/drivers/net/wireless/ath/carl9170/tx.c
-index 59472e1..3e9f0f6 100644
---- a/drivers/net/wireless/ath/carl9170/tx.c
-+++ b/drivers/net/wireless/ath/carl9170/tx.c
-@@ -1251,6 +1251,7 @@ static bool carl9170_tx_ps_drop(struct ar9170 *ar, struct sk_buff *skb)
- atomic_dec(&ar->tx_ampdu_upload);
-
- tx_info->flags |= IEEE80211_TX_STAT_TX_FILTERED;
-+ carl9170_release_dev_space(ar, skb);
- carl9170_tx_status(ar, skb, false);
- return true;
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0080-carl9170-fix-frame-delivery-if-sta-is-in-powersave-m.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0080-carl9170-fix-frame-delivery-if-sta-is-in-powersave-m.patch
deleted file mode 100644
index a4230f1..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0080-carl9170-fix-frame-delivery-if-sta-is-in-powersave-m.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From efc43768027c5797969aecf8fd1345486de5d2d1 Mon Sep 17 00:00:00 2001
-From: Christian Lamparter <chunkeey at googlemail.com>
-Date: Sat, 25 Feb 2012 21:36:36 +0100
-Subject: [PATCH 80/95] carl9170: fix frame delivery if sta is in powersave
- mode
-
-commit 9926a67557532acb6cddb1c1add02952175b5c72 upstream.
-
-Nicolas Cavallari discovered that carl9170 has some
-serious problems delivering data to sleeping stations.
-
-It turns out that the driver was not honoring two
-important flags (IEEE80211_TX_CTL_POLL_RESPONSE and
-IEEE80211_TX_CTL_CLEAR_PS_FILT) which are set on
-frames that should be sent although the receiving
-station is still in powersave mode.
-
-Reported-by: Nicolas Cavallari <Nicolas.Cavallari at lri.fr>
-Signed-off-by: Christian Lamparter <chunkeey at googlemail.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/net/wireless/ath/carl9170/tx.c | 8 +++++---
- 1 file changed, 5 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/net/wireless/ath/carl9170/tx.c b/drivers/net/wireless/ath/carl9170/tx.c
-index 3e9f0f6..f6384af 100644
---- a/drivers/net/wireless/ath/carl9170/tx.c
-+++ b/drivers/net/wireless/ath/carl9170/tx.c
-@@ -1234,6 +1234,7 @@ static bool carl9170_tx_ps_drop(struct ar9170 *ar, struct sk_buff *skb)
- {
- struct ieee80211_sta *sta;
- struct carl9170_sta_info *sta_info;
-+ struct ieee80211_tx_info *tx_info;
-
- rcu_read_lock();
- sta = __carl9170_get_tx_sta(ar, skb);
-@@ -1241,12 +1242,13 @@ static bool carl9170_tx_ps_drop(struct ar9170 *ar, struct sk_buff *skb)
- goto out_rcu;
-
- sta_info = (void *) sta->drv_priv;
-- if (unlikely(sta_info->sleeping)) {
-- struct ieee80211_tx_info *tx_info;
-+ tx_info = IEEE80211_SKB_CB(skb);
-
-+ if (unlikely(sta_info->sleeping) &&
-+ !(tx_info->flags & (IEEE80211_TX_CTL_POLL_RESPONSE |
-+ IEEE80211_TX_CTL_CLEAR_PS_FILT))) {
- rcu_read_unlock();
-
-- tx_info = IEEE80211_SKB_CB(skb);
- if (tx_info->flags & IEEE80211_TX_CTL_AMPDU)
- atomic_dec(&ar->tx_ampdu_upload);
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0081-drm-radeon-kms-set-SX_MISC-in-the-r6xx-blit-code-v2.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0081-drm-radeon-kms-set-SX_MISC-in-the-r6xx-blit-code-v2.patch
deleted file mode 100644
index 791ea42..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0081-drm-radeon-kms-set-SX_MISC-in-the-r6xx-blit-code-v2.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From 24e8154fda8fb08c4bd43ed1f014da8651603eb0 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Marek=20Ol=C5=A1=C3=A1k?= <maraeo at gmail.com>
-Date: Wed, 7 Mar 2012 23:33:00 +0100
-Subject: [PATCH 81/95] drm/radeon/kms: set SX_MISC in the r6xx blit code (v2)
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit cf00790dea6f210ddd01a6656da58c7c9a4ea0e4 upstream.
-
-Mesa may set it to 1, causing all primitives to be killed.
-
-v2: also update the r7xx code
-
-Signed-off-by: Marek Olšák <maraeo at gmail.com>
-Reviewed-by: Alex Deucher <alexander.deucher at amd.com>
-Signed-off-by: Dave Airlie <airlied at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/gpu/drm/radeon/r600_blit_shaders.c | 8 ++++++++
- 1 file changed, 8 insertions(+)
-
-diff --git a/drivers/gpu/drm/radeon/r600_blit_shaders.c b/drivers/gpu/drm/radeon/r600_blit_shaders.c
-index 2d1f6c5..73e2c7c 100644
---- a/drivers/gpu/drm/radeon/r600_blit_shaders.c
-+++ b/drivers/gpu/drm/radeon/r600_blit_shaders.c
-@@ -314,6 +314,10 @@ const u32 r6xx_default_state[] =
- 0x00000000, /* VGT_VTX_CNT_EN */
-
- 0xc0016900,
-+ 0x000000d4,
-+ 0x00000000, /* SX_MISC */
-+
-+ 0xc0016900,
- 0x000002c8,
- 0x00000000, /* VGT_STRMOUT_BUFFER_EN */
-
-@@ -626,6 +630,10 @@ const u32 r7xx_default_state[] =
- 0x00000000, /* VGT_VTX_CNT_EN */
-
- 0xc0016900,
-+ 0x000000d4,
-+ 0x00000000, /* SX_MISC */
-+
-+ 0xc0016900,
- 0x000002c8,
- 0x00000000, /* VGT_STRMOUT_BUFFER_EN */
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0082-net-usbnet-avoid-recursive-locking-in-usbnet_stop.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0082-net-usbnet-avoid-recursive-locking-in-usbnet_stop.patch
deleted file mode 100644
index 3a63459..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0082-net-usbnet-avoid-recursive-locking-in-usbnet_stop.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From 5eca962efc9d0a801d3d277d1bf0d0e6a7cddd33 Mon Sep 17 00:00:00 2001
-From: Sebastian Siewior <bigeasy at linutronix.de>
-Date: Wed, 7 Mar 2012 10:19:28 +0000
-Subject: [PATCH 82/95] net/usbnet: avoid recursive locking in usbnet_stop()
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit 4231d47e6fe69f061f96c98c30eaf9fb4c14b96d upstream.
-
-|kernel BUG at kernel/rtmutex.c:724!
-|[<c029599c>] (rt_spin_lock_slowlock+0x108/0x2bc) from [<c01c2330>] (defer_bh+0x1c/0xb4)
-|[<c01c2330>] (defer_bh+0x1c/0xb4) from [<c01c3afc>] (rx_complete+0x14c/0x194)
-|[<c01c3afc>] (rx_complete+0x14c/0x194) from [<c01cac88>] (usb_hcd_giveback_urb+0xa0/0xf0)
-|[<c01cac88>] (usb_hcd_giveback_urb+0xa0/0xf0) from [<c01e1ff4>] (musb_giveback+0x34/0x40)
-|[<c01e1ff4>] (musb_giveback+0x34/0x40) from [<c01e2b1c>] (musb_advance_schedule+0xb4/0x1c0)
-|[<c01e2b1c>] (musb_advance_schedule+0xb4/0x1c0) from [<c01e2ca8>] (musb_cleanup_urb.isra.9+0x80/0x8c)
-|[<c01e2ca8>] (musb_cleanup_urb.isra.9+0x80/0x8c) from [<c01e2ed0>] (musb_urb_dequeue+0xec/0x108)
-|[<c01e2ed0>] (musb_urb_dequeue+0xec/0x108) from [<c01cbb90>] (unlink1+0xbc/0xcc)
-|[<c01cbb90>] (unlink1+0xbc/0xcc) from [<c01cc2ec>] (usb_hcd_unlink_urb+0x54/0xa8)
-|[<c01cc2ec>] (usb_hcd_unlink_urb+0x54/0xa8) from [<c01c2a84>] (unlink_urbs.isra.17+0x2c/0x58)
-|[<c01c2a84>] (unlink_urbs.isra.17+0x2c/0x58) from [<c01c2b44>] (usbnet_terminate_urbs+0x94/0x10c)
-|[<c01c2b44>] (usbnet_terminate_urbs+0x94/0x10c) from [<c01c2d68>] (usbnet_stop+0x100/0x15c)
-|[<c01c2d68>] (usbnet_stop+0x100/0x15c) from [<c020f718>] (__dev_close_many+0x94/0xc8)
-
-defer_bh() takes the lock which is hold during unlink_urbs(). The safe
-walk suggest that the skb will be removed from the list and this is done
-by defer_bh() so it seems to be okay to drop the lock here.
-
-Reported-by: AnÃbal Almeida Pinto <anibal.pinto at efacec.com>
-Signed-off-by: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
-Acked-by: Oliver Neukum <oliver at neukum.org>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/net/usb/usbnet.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/drivers/net/usb/usbnet.c b/drivers/net/usb/usbnet.c
-index fae0fbd..81b96e3 100644
---- a/drivers/net/usb/usbnet.c
-+++ b/drivers/net/usb/usbnet.c
-@@ -589,6 +589,7 @@ static int unlink_urbs (struct usbnet *dev, struct sk_buff_head *q)
- entry = (struct skb_data *) skb->cb;
- urb = entry->urb;
-
-+ spin_unlock_irqrestore(&q->lock, flags);
- // during some PM-driven resume scenarios,
- // these (async) unlinks complete immediately
- retval = usb_unlink_urb (urb);
-@@ -596,6 +597,7 @@ static int unlink_urbs (struct usbnet *dev, struct sk_buff_head *q)
- netdev_dbg(dev->net, "unlink urb err, %d\n", retval);
- else
- count++;
-+ spin_lock_irqsave(&q->lock, flags);
- }
- spin_unlock_irqrestore (&q->lock, flags);
- return count;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0083-x86-amd-iommu_set_device_table-must-not-be-__init.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0083-x86-amd-iommu_set_device_table-must-not-be-__init.patch
deleted file mode 100644
index 550f71e..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0083-x86-amd-iommu_set_device_table-must-not-be-__init.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From f50bbf712b1cdce7339fe0c1f57eb6b348b78583 Mon Sep 17 00:00:00 2001
-From: Jan Beulich <JBeulich at suse.com>
-Date: Thu, 8 Mar 2012 08:58:13 +0000
-Subject: [PATCH 83/95] x86/amd: iommu_set_device_table() must not be __init
-
-commit 6b7f000eb6a0b81d7a809833edb7a457eedf8512 upstream.
-
-This function is called from enable_iommus(), which in turn is used
-from amd_iommu_resume().
-
-Signed-off-by: Jan Beulich <jbeulich at suse.com>
-Signed-off-by: Joerg Roedel <joerg.roedel at amd.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/iommu/amd_iommu_init.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/iommu/amd_iommu_init.c b/drivers/iommu/amd_iommu_init.c
-index 82d2410..5c74179 100644
---- a/drivers/iommu/amd_iommu_init.c
-+++ b/drivers/iommu/amd_iommu_init.c
-@@ -268,7 +268,7 @@ static void iommu_set_exclusion_range(struct amd_iommu *iommu)
- }
-
- /* Programs the physical address of the device table into the IOMMU hardware */
--static void __init iommu_set_device_table(struct amd_iommu *iommu)
-+static void iommu_set_device_table(struct amd_iommu *iommu)
- {
- u64 entry;
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0084-dm-ioctl-do-not-leak-argv-if-target-message-only-con.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0084-dm-ioctl-do-not-leak-argv-if-target-message-only-con.patch
deleted file mode 100644
index 30e0ec3..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0084-dm-ioctl-do-not-leak-argv-if-target-message-only-con.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From c9c445f3f6b243f089761858523737e757cc983c Mon Sep 17 00:00:00 2001
-From: Jesper Juhl <jj at chaosbits.net>
-Date: Wed, 7 Mar 2012 19:09:34 +0000
-Subject: [PATCH 84/95] dm ioctl: do not leak argv if target message only
- contains whitespace
-
-commit 902c6a96a7cb9c50d2a8aed1788efad0a5d8f04c upstream.
-
-If 'argc' is zero we jump to the 'out:' label, but this leaks the
-(unused) memory that 'dm_split_args()' allocated for 'argv' if the
-string being split consisted entirely of whitespace. Jump to the
-'out_argv:' label instead to free up that memory.
-
-Signed-off-by: Jesper Juhl <jj at chaosbits.net>
-Signed-off-by: Alasdair G Kergon <agk at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/md/dm-ioctl.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/md/dm-ioctl.c b/drivers/md/dm-ioctl.c
-index 31c2dc2..1ce84ed 100644
---- a/drivers/md/dm-ioctl.c
-+++ b/drivers/md/dm-ioctl.c
-@@ -1437,7 +1437,7 @@ static int target_message(struct dm_ioctl *param, size_t param_size)
-
- if (!argc) {
- DMWARN("Empty message received.");
-- goto out;
-+ goto out_argv;
- }
-
- table = dm_get_live_table(md);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0085-dm-io-fix-discard-support.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0085-dm-io-fix-discard-support.patch
deleted file mode 100644
index b5ff74a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0085-dm-io-fix-discard-support.patch
+++ /dev/null
@@ -1,86 +0,0 @@
-From cf6db92080c563161f5626184902162432f5fac5 Mon Sep 17 00:00:00 2001
-From: Milan Broz <mbroz at redhat.com>
-Date: Wed, 7 Mar 2012 19:09:37 +0000
-Subject: [PATCH 85/95] dm io: fix discard support
-
-commit 0c535e0d6f463365c29623350dbd91642363c39b upstream.
-
-This patch fixes a crash by recognising discards in dm_io.
-
-Currently dm_mirror can send REQ_DISCARD bios if running over a
-discard-enabled device and without support in dm_io the system
-crashes badly.
-
-BUG: unable to handle kernel paging request at 00800000
-IP: __bio_add_page.part.17+0xf5/0x1e0
-...
- bio_add_page+0x56/0x70
- dispatch_io+0x1cf/0x240 [dm_mod]
- ? km_get_page+0x50/0x50 [dm_mod]
- ? vm_next_page+0x20/0x20 [dm_mod]
- ? mirror_flush+0x130/0x130 [dm_mirror]
- dm_io+0xdc/0x2b0 [dm_mod]
-...
-
-Introduced in 2.6.38-rc1 by commit 5fc2ffeabb9ee0fc0e71ff16b49f34f0ed3d05b4
-(dm raid1: support discard).
-
-Signed-off-by: Milan Broz <mbroz at redhat.com>
-Acked-by: Mike Snitzer <snitzer at redhat.com>
-Signed-off-by: Alasdair G Kergon <agk at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/md/dm-io.c | 23 ++++++++++++++++-------
- 1 file changed, 16 insertions(+), 7 deletions(-)
-
-diff --git a/drivers/md/dm-io.c b/drivers/md/dm-io.c
-index ad2eba4..ea5dd28 100644
---- a/drivers/md/dm-io.c
-+++ b/drivers/md/dm-io.c
-@@ -296,6 +296,8 @@ static void do_region(int rw, unsigned region, struct dm_io_region *where,
- unsigned offset;
- unsigned num_bvecs;
- sector_t remaining = where->count;
-+ struct request_queue *q = bdev_get_queue(where->bdev);
-+ sector_t discard_sectors;
-
- /*
- * where->count may be zero if rw holds a flush and we need to
-@@ -305,9 +307,12 @@ static void do_region(int rw, unsigned region, struct dm_io_region *where,
- /*
- * Allocate a suitably sized-bio.
- */
-- num_bvecs = dm_sector_div_up(remaining,
-- (PAGE_SIZE >> SECTOR_SHIFT));
-- num_bvecs = min_t(int, bio_get_nr_vecs(where->bdev), num_bvecs);
-+ if (rw & REQ_DISCARD)
-+ num_bvecs = 1;
-+ else
-+ num_bvecs = min_t(int, bio_get_nr_vecs(where->bdev),
-+ dm_sector_div_up(remaining, (PAGE_SIZE >> SECTOR_SHIFT)));
-+
- bio = bio_alloc_bioset(GFP_NOIO, num_bvecs, io->client->bios);
- bio->bi_sector = where->sector + (where->count - remaining);
- bio->bi_bdev = where->bdev;
-@@ -315,10 +320,14 @@ static void do_region(int rw, unsigned region, struct dm_io_region *where,
- bio->bi_destructor = dm_bio_destructor;
- store_io_and_region_in_bio(bio, io, region);
-
-- /*
-- * Try and add as many pages as possible.
-- */
-- while (remaining) {
-+ if (rw & REQ_DISCARD) {
-+ discard_sectors = min_t(sector_t, q->limits.max_discard_sectors, remaining);
-+ bio->bi_size = discard_sectors << SECTOR_SHIFT;
-+ remaining -= discard_sectors;
-+ } else while (remaining) {
-+ /*
-+ * Try and add as many pages as possible.
-+ */
- dp->get_page(dp, &page, &len, &offset);
- len = min(len, to_bytes(remaining));
- if (!bio_add_page(bio, page, len, offset))
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0086-dm-flakey-fix-crash-on-read-when-corrupt_bio_byte-no.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0086-dm-flakey-fix-crash-on-read-when-corrupt_bio_byte-no.patch
deleted file mode 100644
index 82b4987..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0086-dm-flakey-fix-crash-on-read-when-corrupt_bio_byte-no.patch
+++ /dev/null
@@ -1,71 +0,0 @@
-From 91d95657633fa1d1bd641323977bc4639d39599d Mon Sep 17 00:00:00 2001
-From: Mike Snitzer <snitzer at redhat.com>
-Date: Wed, 7 Mar 2012 19:09:39 +0000
-Subject: [PATCH 86/95] dm flakey: fix crash on read when corrupt_bio_byte not
- set
-
-commit 1212268fd9816e3b8801e57b896fceaec71969ad upstream.
-
-The following BUG is hit on the first read that is submitted to a dm
-flakey test device while the device is "down" if the corrupt_bio_byte
-feature wasn't requested when the device's table was loaded.
-
-Example DM table that will hit this BUG:
-0 2097152 flakey 8:0 2048 0 30
-
-This bug was introduced by commit a3998799fb4df0b0af8271a7d50c4269032397aa
-(dm flakey: add corrupt_bio_byte feature) in v3.1-rc1.
-
-BUG: unable to handle kernel paging request at ffff8801cfce3fff
-IP: [<ffffffffa008c233>] corrupt_bio_data+0x6e/0xae [dm_flakey]
-PGD 1606063 PUD 0
-Oops: 0002 [#1] SMP
-...
-Call Trace:
- <IRQ>
- [<ffffffffa008c2b5>] flakey_end_io+0x42/0x48 [dm_flakey]
- [<ffffffffa00dca98>] clone_endio+0x54/0xb6 [dm_mod]
- [<ffffffff81130587>] bio_endio+0x2d/0x2f
- [<ffffffff811c819a>] req_bio_endio+0x96/0x9f
- [<ffffffff811c94b9>] blk_update_request+0x1dc/0x3a9
- [<ffffffff812f5ee2>] ? rcu_read_unlock+0x21/0x23
- [<ffffffff811c96a6>] blk_update_bidi_request+0x20/0x6e
- [<ffffffff811c9713>] blk_end_bidi_request+0x1f/0x5d
- [<ffffffff811c978d>] blk_end_request+0x10/0x12
- [<ffffffff8128f450>] scsi_io_completion+0x1e5/0x4b1
- [<ffffffff812882a9>] scsi_finish_command+0xec/0xf5
- [<ffffffff8128f830>] scsi_softirq_done+0xff/0x108
- [<ffffffff811ce284>] blk_done_softirq+0x84/0x98
- [<ffffffff81048d19>] __do_softirq+0xe3/0x1d5
- [<ffffffff8138f83f>] ? _raw_spin_lock+0x62/0x69
- [<ffffffff810997cf>] ? handle_irq_event+0x4c/0x61
- [<ffffffff8139833c>] call_softirq+0x1c/0x30
- [<ffffffff81003b37>] do_softirq+0x4b/0xa3
- [<ffffffff81048a39>] irq_exit+0x53/0xca
- [<ffffffff81398acd>] do_IRQ+0x9d/0xb4
- [<ffffffff81390333>] common_interrupt+0x73/0x73
-...
-
-Signed-off-by: Mike Snitzer <snitzer at redhat.com>
-Signed-off-by: Alasdair G Kergon <agk at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/md/dm-flakey.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/md/dm-flakey.c b/drivers/md/dm-flakey.c
-index 9fb18c1..b280c43 100644
---- a/drivers/md/dm-flakey.c
-+++ b/drivers/md/dm-flakey.c
-@@ -323,7 +323,7 @@ static int flakey_end_io(struct dm_target *ti, struct bio *bio,
- * Corrupt successful READs while in down state.
- * If flags were specified, only corrupt those that match.
- */
-- if (!error && bio_submitted_while_down &&
-+ if (fc->corrupt_bio_byte && !error && bio_submitted_while_down &&
- (bio_data_dir(bio) == READ) && (fc->corrupt_bio_rw == READ) &&
- all_corrupt_bio_flags_match(bio, fc))
- corrupt_bio_data(bio, fc);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0087-dm-thin-metadata-remove-incorrect-close_device-on-cr.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0087-dm-thin-metadata-remove-incorrect-close_device-on-cr.patch
deleted file mode 100644
index a144801..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0087-dm-thin-metadata-remove-incorrect-close_device-on-cr.patch
+++ /dev/null
@@ -1,100 +0,0 @@
-From 1797a1bfe359bd465954e915c1cd1988f346f792 Mon Sep 17 00:00:00 2001
-From: Mike Snitzer <snitzer at redhat.com>
-Date: Wed, 7 Mar 2012 19:09:41 +0000
-Subject: [PATCH 87/95] dm thin metadata: remove incorrect close_device on
- creation error paths
-
-commit 1f3db25d8be4ac50b897b39609802183ea68a514 upstream.
-
-The __open_device() error paths in __create_thin() and __create_snap()
-incorrectly call __close_device() even if td was not initialized by
-__open_device(). Remove this.
-
-Also document __open_device() return values, remove a redundant
-td->changed = 1 in __create_thin(), and insert an additional
-safeguard against creating an already-existing device.
-
-Signed-off-by: Mike Snitzer <snitzer at redhat.com>
-Signed-off-by: Alasdair G Kergon <agk at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/md/dm-thin-metadata.c | 22 +++++++++++++++++-----
- 1 file changed, 17 insertions(+), 5 deletions(-)
-
-diff --git a/drivers/md/dm-thin-metadata.c b/drivers/md/dm-thin-metadata.c
-index 59c4f04..13d9646 100644
---- a/drivers/md/dm-thin-metadata.c
-+++ b/drivers/md/dm-thin-metadata.c
-@@ -789,6 +789,11 @@ int dm_pool_metadata_close(struct dm_pool_metadata *pmd)
- return 0;
- }
-
-+/*
-+ * __open_device: Returns @td corresponding to device with id @dev,
-+ * creating it if @create is set and incrementing @td->open_count.
-+ * On failure, @td is undefined.
-+ */
- static int __open_device(struct dm_pool_metadata *pmd,
- dm_thin_id dev, int create,
- struct dm_thin_device **td)
-@@ -799,10 +804,16 @@ static int __open_device(struct dm_pool_metadata *pmd,
- struct disk_device_details details_le;
-
- /*
-- * Check the device isn't already open.
-+ * If the device is already open, return it.
- */
- list_for_each_entry(td2, &pmd->thin_devices, list)
- if (td2->id == dev) {
-+ /*
-+ * May not create an already-open device.
-+ */
-+ if (create)
-+ return -EEXIST;
-+
- td2->open_count++;
- *td = td2;
- return 0;
-@@ -817,6 +828,9 @@ static int __open_device(struct dm_pool_metadata *pmd,
- if (r != -ENODATA || !create)
- return r;
-
-+ /*
-+ * Create new device.
-+ */
- changed = 1;
- details_le.mapped_blocks = 0;
- details_le.transaction_id = cpu_to_le64(pmd->trans_id);
-@@ -882,12 +896,10 @@ static int __create_thin(struct dm_pool_metadata *pmd,
-
- r = __open_device(pmd, dev, 1, &td);
- if (r) {
-- __close_device(td);
- dm_btree_remove(&pmd->tl_info, pmd->root, &key, &pmd->root);
- dm_btree_del(&pmd->bl_info, dev_root);
- return r;
- }
-- td->changed = 1;
- __close_device(td);
-
- return r;
-@@ -967,14 +979,14 @@ static int __create_snap(struct dm_pool_metadata *pmd,
- goto bad;
-
- r = __set_snapshot_details(pmd, td, origin, pmd->time);
-+ __close_device(td);
-+
- if (r)
- goto bad;
-
-- __close_device(td);
- return 0;
-
- bad:
-- __close_device(td);
- dm_btree_remove(&pmd->tl_info, pmd->root, &key, &pmd->root);
- dm_btree_remove(&pmd->details_info, pmd->details_root,
- &key, &pmd->details_root);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0088-dm-thin-metadata-unlock-superblock-in-init_pmd-error.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0088-dm-thin-metadata-unlock-superblock-in-init_pmd-error.patch
deleted file mode 100644
index 9ccbee4..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0088-dm-thin-metadata-unlock-superblock-in-init_pmd-error.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 6db3a704cbd90710b19ddc34e90674680adbbb76 Mon Sep 17 00:00:00 2001
-From: Joe Thornber <ejt at redhat.com>
-Date: Wed, 7 Mar 2012 19:09:43 +0000
-Subject: [PATCH 88/95] dm thin metadata: unlock superblock in init_pmd error
- path
-
-commit 4469a5f387fdde956894137751a41473618a4a52 upstream.
-
-If dm_sm_disk_create() fails the superblock must be unlocked.
-
-Signed-off-by: Joe Thornber <ejt at redhat.com>
-Acked-by: Mike Snitzer <snitzer at redhat.com>
-Signed-off-by: Alasdair G Kergon <agk at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/md/dm-thin-metadata.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/md/dm-thin-metadata.c b/drivers/md/dm-thin-metadata.c
-index 13d9646..05b7ffc 100644
---- a/drivers/md/dm-thin-metadata.c
-+++ b/drivers/md/dm-thin-metadata.c
-@@ -385,6 +385,7 @@ static int init_pmd(struct dm_pool_metadata *pmd,
- data_sm = dm_sm_disk_create(tm, nr_blocks);
- if (IS_ERR(data_sm)) {
- DMERR("sm_disk_create failed");
-+ dm_tm_unlock(tm, sblock);
- r = PTR_ERR(data_sm);
- goto bad;
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0089-dm-thin-metadata-decrement-counter-after-removing-ma.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0089-dm-thin-metadata-decrement-counter-after-removing-ma.patch
deleted file mode 100644
index 9ce8c76..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0089-dm-thin-metadata-decrement-counter-after-removing-ma.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 24c3a899ae28cd532b890dcbc58136ed08867447 Mon Sep 17 00:00:00 2001
-From: Joe Thornber <ejt at redhat.com>
-Date: Wed, 7 Mar 2012 19:09:44 +0000
-Subject: [PATCH 89/95] dm thin metadata: decrement counter after removing
- mapped block
-
-commit af63bcb817cf708f53bcae6edc2e3fb7dd7d8051 upstream.
-
-Correct the number of mapped sectors shown on a thin device's
-status line by decrementing td->mapped_blocks in __remove() each time
-a block is removed.
-
-Signed-off-by: Joe Thornber <ejt at redhat.com>
-Acked-by: Mike Snitzer <snitzer at redhat.com>
-Signed-off-by: Alasdair G Kergon <agk at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/md/dm-thin-metadata.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/drivers/md/dm-thin-metadata.c b/drivers/md/dm-thin-metadata.c
-index 05b7ffc..237571a 100644
---- a/drivers/md/dm-thin-metadata.c
-+++ b/drivers/md/dm-thin-metadata.c
-@@ -1224,6 +1224,8 @@ static int __remove(struct dm_thin_device *td, dm_block_t block)
- if (r)
- return r;
-
-+ td->mapped_blocks--;
-+ td->changed = 1;
- pmd->need_commit = 1;
-
- return 0;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0090-dm-raid-set-MD_CHANGE_DEVS-when-rebuilding.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0090-dm-raid-set-MD_CHANGE_DEVS-when-rebuilding.patch
deleted file mode 100644
index 8ab43ff..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0090-dm-raid-set-MD_CHANGE_DEVS-when-rebuilding.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From 5690a2f1259bd32707e2238b4e2e4f1f73be206f Mon Sep 17 00:00:00 2001
-From: Jonathan E Brassow <jbrassow at redhat.com>
-Date: Wed, 7 Mar 2012 19:09:47 +0000
-Subject: [PATCH 90/95] dm raid: set MD_CHANGE_DEVS when rebuilding
-
-commit 3aa3b2b2b1edb813dc5342d0108befc39541542d upstream.
-
-The 'rebuild' parameter is used to rebuild individual devices in an
-array (e.g. resynchronize a RAID1 device or recalculate a parity device
-in higher RAID). The MD_CHANGE_DEVS flag must be set when this
-parameter is given in order to write out the superblocks and make the
-change take immediate effect. The code that handles new devices in
-super_load already sets MD_CHANGE_DEVS and 'FirstUse'. (The 'FirstUse'
-flag was being set as a special case for rebuilds in
-super_init_validation.)
-
-Add a condition for rebuilds in super_load to take care of both flags
-without the special case in 'super_init_validation'.
-
-Signed-off-by: Jonathan Brassow <jbrassow at redhat.com>
-Signed-off-by: Alasdair G Kergon <agk at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/md/dm-raid.c | 16 ++++++++++------
- 1 file changed, 10 insertions(+), 6 deletions(-)
-
-diff --git a/drivers/md/dm-raid.c b/drivers/md/dm-raid.c
-index c2907d8..4834d43 100644
---- a/drivers/md/dm-raid.c
-+++ b/drivers/md/dm-raid.c
-@@ -667,7 +667,14 @@ static int super_load(struct md_rdev *rdev, struct md_rdev *refdev)
- return ret;
-
- sb = page_address(rdev->sb_page);
-- if (sb->magic != cpu_to_le32(DM_RAID_MAGIC)) {
-+
-+ /*
-+ * Two cases that we want to write new superblocks and rebuild:
-+ * 1) New device (no matching magic number)
-+ * 2) Device specified for rebuild (!In_sync w/ offset == 0)
-+ */
-+ if ((sb->magic != cpu_to_le32(DM_RAID_MAGIC)) ||
-+ (!test_bit(In_sync, &rdev->flags) && !rdev->recovery_offset)) {
- super_sync(rdev->mddev, rdev);
-
- set_bit(FirstUse, &rdev->flags);
-@@ -744,11 +751,8 @@ static int super_init_validation(struct mddev *mddev, struct md_rdev *rdev)
- */
- rdev_for_each(r, t, mddev) {
- if (!test_bit(In_sync, &r->flags)) {
-- if (!test_bit(FirstUse, &r->flags))
-- DMERR("Superblock area of "
-- "rebuild device %d should have been "
-- "cleared.", r->raid_disk);
-- set_bit(FirstUse, &r->flags);
-+ DMINFO("Device %d specified for rebuild: "
-+ "Clearing superblock", r->raid_disk);
- rebuilds++;
- } else if (test_bit(FirstUse, &r->flags))
- new_devs++;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0091-dm-raid-fix-flush-support.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0091-dm-raid-fix-flush-support.patch
deleted file mode 100644
index da0b5f3..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0091-dm-raid-fix-flush-support.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 8092731b611778e6151662f3cc35d02101bd0ab8 Mon Sep 17 00:00:00 2001
-From: Jonathan E Brassow <jbrassow at redhat.com>
-Date: Wed, 7 Mar 2012 19:09:48 +0000
-Subject: [PATCH 91/95] dm raid: fix flush support
-
-commit 0ca93de9b789e0eb05e103f0c04de72df13da73a upstream.
-
-Fix dm-raid flush support.
-
-Both md and dm have support for flush, but the dm-raid target
-forgot to set the flag to indicate that flushes should be
-passed on. (Important for data integrity e.g. with writeback cache
-enabled.)
-
-Signed-off-by: Jonathan Brassow <jbrassow at redhat.com>
-Acked-by: Mike Snitzer <snitzer at redhat.com>
-Signed-off-by: Alasdair G Kergon <agk at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/md/dm-raid.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/md/dm-raid.c b/drivers/md/dm-raid.c
-index 4834d43..d2a3223 100644
---- a/drivers/md/dm-raid.c
-+++ b/drivers/md/dm-raid.c
-@@ -974,6 +974,7 @@ static int raid_ctr(struct dm_target *ti, unsigned argc, char **argv)
-
- INIT_WORK(&rs->md.event_work, do_table_event);
- ti->private = rs;
-+ ti->num_flush_requests = 1;
-
- mutex_lock(&rs->md.reconfig_mutex);
- ret = md_run(&rs->md);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0092-cs5535-mfgpt-don-t-call-__init-function-from-__devin.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0092-cs5535-mfgpt-don-t-call-__init-function-from-__devin.patch
deleted file mode 100644
index ed0dfc6..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0092-cs5535-mfgpt-don-t-call-__init-function-from-__devin.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From e45077e5713c37cd22f77266a0f53e082f0b16da Mon Sep 17 00:00:00 2001
-From: Danny Kukawka <danny.kukawka at bisect.de>
-Date: Thu, 2 Feb 2012 14:20:29 +0100
-Subject: [PATCH 92/95] cs5535-mfgpt: don't call __init function from
- __devinit
-
-commit 474de3bbadd9cb75ffc32cc759c40d868343d46c upstream.
-
-Fix scan_timers() to be __devinit and not __init since
-the function get called from cs5535_mfgpt_probe which is
-__devinit.
-
-Signed-off-by: Danny Kukawka <danny.kukawka at bisect.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/misc/cs5535-mfgpt.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/misc/cs5535-mfgpt.c b/drivers/misc/cs5535-mfgpt.c
-index bc685bf..87a390d 100644
---- a/drivers/misc/cs5535-mfgpt.c
-+++ b/drivers/misc/cs5535-mfgpt.c
-@@ -262,7 +262,7 @@ static void __init reset_all_timers(void)
- * In other cases (such as with VSAless OpenFirmware), the system firmware
- * leaves timers available for us to use.
- */
--static int __init scan_timers(struct cs5535_mfgpt_chip *mfgpt)
-+static int __devinit scan_timers(struct cs5535_mfgpt_chip *mfgpt)
- {
- struct cs5535_mfgpt_timer timer = { .chip = mfgpt };
- unsigned long flags;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0093-mfd-Fix-cs5535-section-mismatch.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0093-mfd-Fix-cs5535-section-mismatch.patch
deleted file mode 100644
index 009f31d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0093-mfd-Fix-cs5535-section-mismatch.patch
+++ /dev/null
@@ -1,69 +0,0 @@
-From 0973b92fd13919ca18d05b13026033e9422cdff9 Mon Sep 17 00:00:00 2001
-From: Christian Gmeiner <christian.gmeiner at gmail.com>
-Date: Tue, 13 Dec 2011 21:30:04 +0100
-Subject: [PATCH 93/95] mfd: Fix cs5535 section mismatch
-
-commit 97e43c983c721a47546e6db3b7711dcd912a6481 upstream.
-
-Silence following warnings:
-WARNING: drivers/mfd/cs5535-mfd.o(.data+0x20): Section mismatch in
-reference from the variable cs5535_mfd_drv to the function
-.devinit.text:cs5535_mfd_probe()
-The variable cs5535_mfd_drv references
-the function __devinit cs5535_mfd_probe()
-If the reference is valid then annotate the
-variable with __init* or __refdata (see linux/init.h) or name the variable:
-*driver, *_template, *_timer, *_sht, *_ops, *_probe, *_probe_one, *_console
-
-WARNING: drivers/mfd/cs5535-mfd.o(.data+0x28): Section mismatch in
-reference from the variable cs5535_mfd_drv to the function
-.devexit.text:cs5535_mfd_remove()
-The variable cs5535_mfd_drv references
-the function __devexit cs5535_mfd_remove()
-If the reference is valid then annotate the
-variable with __exit* (see linux/init.h) or name the variable:
-*driver, *_template, *_timer, *_sht, *_ops, *_probe, *_probe_one, *_console
-
-Rename the variable from *_drv to *_driver so
-modpost ignore the OK references to __devinit/__devexit
-functions.
-
-Signed-off-by: Christian Gmeiner <christian.gmeiner at gmail.com>
-Acked-by: Andres Salomon <dilinger at queued.net>
-Signed-off-by: Samuel Ortiz <sameo at linux.intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/mfd/cs5535-mfd.c | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/mfd/cs5535-mfd.c b/drivers/mfd/cs5535-mfd.c
-index 155fa04..e488a78 100644
---- a/drivers/mfd/cs5535-mfd.c
-+++ b/drivers/mfd/cs5535-mfd.c
-@@ -179,7 +179,7 @@ static struct pci_device_id cs5535_mfd_pci_tbl[] = {
- };
- MODULE_DEVICE_TABLE(pci, cs5535_mfd_pci_tbl);
-
--static struct pci_driver cs5535_mfd_drv = {
-+static struct pci_driver cs5535_mfd_driver = {
- .name = DRV_NAME,
- .id_table = cs5535_mfd_pci_tbl,
- .probe = cs5535_mfd_probe,
-@@ -188,12 +188,12 @@ static struct pci_driver cs5535_mfd_drv = {
-
- static int __init cs5535_mfd_init(void)
- {
-- return pci_register_driver(&cs5535_mfd_drv);
-+ return pci_register_driver(&cs5535_mfd_driver);
- }
-
- static void __exit cs5535_mfd_exit(void)
- {
-- pci_unregister_driver(&cs5535_mfd_drv);
-+ pci_unregister_driver(&cs5535_mfd_driver);
- }
-
- module_init(cs5535_mfd_init);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0094-spi-topcliff-pch-rename-pch_spi_pcidev-to-pch_spi_pc.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0094-spi-topcliff-pch-rename-pch_spi_pcidev-to-pch_spi_pc.patch
deleted file mode 100644
index 1d1aa87..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0094-spi-topcliff-pch-rename-pch_spi_pcidev-to-pch_spi_pc.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From e8e5eab540cdac6bbdb8f6c85a2f5344a8825973 Mon Sep 17 00:00:00 2001
-From: Danny Kukawka <danny.kukawka at bisect.de>
-Date: Thu, 2 Feb 2012 14:20:30 +0100
-Subject: [PATCH 94/95] spi-topcliff-pch: rename pch_spi_pcidev to
- pch_spi_pcidev_driver
-
-commit c88db233251b026fda775428f0250c760553e216 upstream.
-
-Rename static struct pci_driver pch_spi_pcidev to
-pch_spi_pcidev_driver to get rid of warnings from modpost checks.
-
-Signed-off-by: Danny Kukawka <danny.kukawka at bisect.de>
-Signed-off-by: Grant Likely <grant.likely at secretlab.ca>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/spi/spi-topcliff-pch.c | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/spi/spi-topcliff-pch.c b/drivers/spi/spi-topcliff-pch.c
-index 6a80749..027b6d0 100644
---- a/drivers/spi/spi-topcliff-pch.c
-+++ b/drivers/spi/spi-topcliff-pch.c
-@@ -1717,7 +1717,7 @@ static int pch_spi_resume(struct pci_dev *pdev)
-
- #endif
-
--static struct pci_driver pch_spi_pcidev = {
-+static struct pci_driver pch_spi_pcidev_driver = {
- .name = "pch_spi",
- .id_table = pch_spi_pcidev_id,
- .probe = pch_spi_probe,
-@@ -1733,7 +1733,7 @@ static int __init pch_spi_init(void)
- if (ret)
- return ret;
-
-- ret = pci_register_driver(&pch_spi_pcidev);
-+ ret = pci_register_driver(&pch_spi_pcidev_driver);
- if (ret)
- return ret;
-
-@@ -1743,7 +1743,7 @@ module_init(pch_spi_init);
-
- static void __exit pch_spi_exit(void)
- {
-- pci_unregister_driver(&pch_spi_pcidev);
-+ pci_unregister_driver(&pch_spi_pcidev_driver);
- platform_driver_unregister(&pch_spi_pd_driver);
- }
- module_exit(pch_spi_exit);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0095-Linux-3.2.10.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0095-Linux-3.2.10.patch
deleted file mode 100644
index 46d621a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.10/0095-Linux-3.2.10.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From c0a5ea26bcd2c716d508433c5d9d33d8d5caa491 Mon Sep 17 00:00:00 2001
-From: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Date: Mon, 12 Mar 2012 13:22:49 -0700
-Subject: [PATCH 95/95] Linux 3.2.10
-
----
- Makefile | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Makefile b/Makefile
-index 5f1739b..1ddd6e9 100644
---- a/Makefile
-+++ b/Makefile
-@@ -1,6 +1,6 @@
- VERSION = 3
- PATCHLEVEL = 2
--SUBLEVEL = 9
-+SUBLEVEL = 10
- EXTRAVERSION =
- NAME = Saber-toothed Squirrel
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.11/0001-Revert-mfd-Test-for-jack-detection-when-deciding-if-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.11/0001-Revert-mfd-Test-for-jack-detection-when-deciding-if-.patch
deleted file mode 100644
index df713dc..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.11/0001-Revert-mfd-Test-for-jack-detection-when-deciding-if-.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From 75d6feb2330ece547d401da6dd6f812a75728d78 Mon Sep 17 00:00:00 2001
-From: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Date: Tue, 13 Mar 2012 09:36:07 -0700
-Subject: [PATCH 1/2] Revert "mfd: Test for jack detection when deciding if
- wm8994 should suspend"
-
-This reverts commit 315e73b400c9a287a53efb5f857d308589674ac5 as it
-breaks the 3.2-stable build.
-
-Reported-by: Ben Guthro <ben at guthro.net>
-Cc: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Cc: Samuel Ortiz <sameo at linux.intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/mfd/wm8994-core.c | 14 --------------
- 1 file changed, 14 deletions(-)
-
-diff --git a/drivers/mfd/wm8994-core.c b/drivers/mfd/wm8994-core.c
-index 9302d21..61894fc 100644
---- a/drivers/mfd/wm8994-core.c
-+++ b/drivers/mfd/wm8994-core.c
-@@ -252,20 +252,6 @@ static int wm8994_suspend(struct device *dev)
- break;
- }
-
-- switch (wm8994->type) {
-- case WM1811:
-- ret = wm8994_reg_read(wm8994, WM8994_ANTIPOP_2);
-- if (ret < 0) {
-- dev_err(dev, "Failed to read jackdet: %d\n", ret);
-- } else if (ret & WM1811_JACKDET_MODE_MASK) {
-- dev_dbg(dev, "CODEC still active, ignoring suspend\n");
-- return 0;
-- }
-- break;
-- default:
-- break;
-- }
--
- /* Disable LDO pulldowns while the device is suspended if we
- * don't know that something will be driving them. */
- if (!wm8994->ldo_ena_always_driven)
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.11/0002-Linux-3.2.11.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.11/0002-Linux-3.2.11.patch
deleted file mode 100644
index ecf7bf2..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.11/0002-Linux-3.2.11.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 4a732cfb0da5b1932200d92507bfc354486eedd7 Mon Sep 17 00:00:00 2001
-From: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Date: Tue, 13 Mar 2012 10:05:09 -0700
-Subject: [PATCH 2/2] Linux 3.2.11
-
----
- Makefile | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Makefile b/Makefile
-index 1ddd6e9..4b76371 100644
---- a/Makefile
-+++ b/Makefile
-@@ -1,6 +1,6 @@
- VERSION = 3
- PATCHLEVEL = 2
--SUBLEVEL = 10
-+SUBLEVEL = 11
- EXTRAVERSION =
- NAME = Saber-toothed Squirrel
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0001-ASoC-neo1973-fix-neo1973-wm8753-initialization.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0001-ASoC-neo1973-fix-neo1973-wm8753-initialization.patch
deleted file mode 100644
index d25417a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0001-ASoC-neo1973-fix-neo1973-wm8753-initialization.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From a1d89c5f542755e8508b072a1d2f9b295c6c028c Mon Sep 17 00:00:00 2001
-From: Denis 'GNUtoo' Carikli <GNUtoo at no-log.org>
-Date: Sun, 26 Feb 2012 19:21:54 +0100
-Subject: [PATCH 01/42] ASoC: neo1973: fix neo1973 wm8753 initialization
-
-commit b2ccf065f7b23147ed135a41b01d05a332ca6b7e upstream.
-
-The neo1973 driver had wrong codec name which prevented the "sound card"
-from appearing.
-
-Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo at no-log.org>
-Signed-off-by: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- sound/soc/samsung/neo1973_wm8753.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/sound/soc/samsung/neo1973_wm8753.c b/sound/soc/samsung/neo1973_wm8753.c
-index 7207189..2fba3f7 100644
---- a/sound/soc/samsung/neo1973_wm8753.c
-+++ b/sound/soc/samsung/neo1973_wm8753.c
-@@ -421,7 +421,7 @@ static struct snd_soc_dai_link neo1973_dai[] = {
- .platform_name = "samsung-audio",
- .cpu_dai_name = "s3c24xx-iis",
- .codec_dai_name = "wm8753-hifi",
-- .codec_name = "wm8753-codec.0-001a",
-+ .codec_name = "wm8753.0-001a",
- .init = neo1973_wm8753_init,
- .ops = &neo1973_hifi_ops,
- },
-@@ -430,7 +430,7 @@ static struct snd_soc_dai_link neo1973_dai[] = {
- .stream_name = "Voice",
- .cpu_dai_name = "dfbmcs320-pcm",
- .codec_dai_name = "wm8753-voice",
-- .codec_name = "wm8753-codec.0-001a",
-+ .codec_name = "wm8753.0-001a",
- .ops = &neo1973_voice_ops,
- },
- };
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0002-ALSA-hda-realtek-Apply-the-coef-setup-only-to-ALC269.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0002-ALSA-hda-realtek-Apply-the-coef-setup-only-to-ALC269.patch
deleted file mode 100644
index b11376b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0002-ALSA-hda-realtek-Apply-the-coef-setup-only-to-ALC269.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From 87e095818ba51e16500206f1507590d8cd3127ef Mon Sep 17 00:00:00 2001
-From: Kailang Yang <kailang at realtek.com>
-Date: Wed, 7 Mar 2012 08:25:20 +0100
-Subject: [PATCH 02/42] ALSA: hda/realtek - Apply the coef-setup only to
- ALC269VB
-
-commit 526af6eb4dc71302f59806e2ccac7793963a7fe0 upstream.
-
-The coef setup in alc269_fill_coef() was designed only for ALC269VB
-model, and this has some bad effects for other ALC269 variants, such
-as turning off the external mic input. Apply it only to ALC269VB.
-
-Signed-off-by: Kailang Yang <kailang at realtek.com>
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- sound/pci/hda/patch_realtek.c | 8 ++++++++
- 1 file changed, 8 insertions(+)
-
-diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
-index 3d8fbf4..dc8a6fc 100644
---- a/sound/pci/hda/patch_realtek.c
-+++ b/sound/pci/hda/patch_realtek.c
-@@ -2063,12 +2063,16 @@ static int alc_build_controls(struct hda_codec *codec)
- */
-
- static void alc_init_special_input_src(struct hda_codec *codec);
-+static int alc269_fill_coef(struct hda_codec *codec);
-
- static int alc_init(struct hda_codec *codec)
- {
- struct alc_spec *spec = codec->spec;
- unsigned int i;
-
-+ if (codec->vendor_id == 0x10ec0269)
-+ alc269_fill_coef(codec);
-+
- alc_fix_pll(codec);
- alc_auto_init_amp(codec, spec->init_amp);
-
-@@ -5110,8 +5114,12 @@ static const struct alc_model_fixup alc269_fixup_models[] = {
-
- static int alc269_fill_coef(struct hda_codec *codec)
- {
-+ struct alc_spec *spec = codec->spec;
- int val;
-
-+ if (spec->codec_variant != ALC269_TYPE_ALC269VB)
-+ return 0;
-+
- if ((alc_get_coef0(codec) & 0x00ff) < 0x015) {
- alc_write_coef_idx(codec, 0xf, 0x960b);
- alc_write_coef_idx(codec, 0xe, 0x8817);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0003-aio-fix-io_setup-io_destroy-race.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0003-aio-fix-io_setup-io_destroy-race.patch
deleted file mode 100644
index a01113a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0003-aio-fix-io_setup-io_destroy-race.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From e5459681303b77f0525bb3311ce20b05e570ae04 Mon Sep 17 00:00:00 2001
-From: Al Viro <viro at ZenIV.linux.org.uk>
-Date: Wed, 7 Mar 2012 05:16:35 +0000
-Subject: [PATCH 03/42] aio: fix io_setup/io_destroy race
-
-commit 86b62a2cb4fc09037bbce2959d2992962396fd7f upstream.
-
-Have ioctx_alloc() return an extra reference, so that caller would drop it
-on success and not bother with re-grabbing it on failure exit. The current
-code is obviously broken - io_destroy() from another thread that managed
-to guess the address io_setup() would've returned would free ioctx right
-under us; gets especially interesting if aio_context_t * we pass to
-io_setup() points to PROT_READ mapping, so put_user() fails and we end
-up doing io_destroy() on kioctx another thread has just got freed...
-
-Signed-off-by: Al Viro <viro at zeniv.linux.org.uk>
-Acked-by: Benjamin LaHaise <bcrl at kvack.org>
-Reviewed-by: Jeff Moyer <jmoyer at redhat.com>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/aio.c | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/fs/aio.c b/fs/aio.c
-index 67e4b90..f6578cb 100644
---- a/fs/aio.c
-+++ b/fs/aio.c
-@@ -273,7 +273,7 @@ static struct kioctx *ioctx_alloc(unsigned nr_events)
- mm = ctx->mm = current->mm;
- atomic_inc(&mm->mm_count);
-
-- atomic_set(&ctx->users, 1);
-+ atomic_set(&ctx->users, 2);
- spin_lock_init(&ctx->ctx_lock);
- spin_lock_init(&ctx->ring_info.ring_lock);
- init_waitqueue_head(&ctx->wait);
-@@ -1338,10 +1338,10 @@ SYSCALL_DEFINE2(io_setup, unsigned, nr_events, aio_context_t __user *, ctxp)
- ret = PTR_ERR(ioctx);
- if (!IS_ERR(ioctx)) {
- ret = put_user(ioctx->user_id, ctxp);
-- if (!ret)
-+ if (!ret) {
-+ put_ioctx(ioctx);
- return 0;
--
-- get_ioctx(ioctx); /* io_destroy() expects us to hold a ref */
-+ }
- io_destroy(ioctx);
- }
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0004-aio-fix-the-too-late-munmap-race.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0004-aio-fix-the-too-late-munmap-race.patch
deleted file mode 100644
index 00ba981..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0004-aio-fix-the-too-late-munmap-race.patch
+++ /dev/null
@@ -1,81 +0,0 @@
-From a0e1937b89ad227fad39dd1f0edb83d57dc46c12 Mon Sep 17 00:00:00 2001
-From: Al Viro <viro at ZenIV.linux.org.uk>
-Date: Thu, 8 Mar 2012 17:51:19 +0000
-Subject: [PATCH 04/42] aio: fix the "too late munmap()" race
-
-commit c7b285550544c22bc005ec20978472c9ac7138c6 upstream.
-
-Current code has put_ioctx() called asynchronously from aio_fput_routine();
-that's done *after* we have killed the request that used to pin ioctx,
-so there's nothing to stop io_destroy() waiting in wait_for_all_aios()
-from progressing. As the result, we can end up with async call of
-put_ioctx() being the last one and possibly happening during exit_mmap()
-or elf_core_dump(), neither of which expects stray munmap() being done
-to them...
-
-We do need to prevent _freeing_ ioctx until aio_fput_routine() is done
-with that, but that's all we care about - neither io_destroy() nor
-exit_aio() will progress past wait_for_all_aios() until aio_fput_routine()
-does really_put_req(), so the ioctx teardown won't be done until then
-and we don't care about the contents of ioctx past that point.
-
-Since actual freeing of these suckers is RCU-delayed, we don't need to
-bump ioctx refcount when request goes into list for async removal.
-All we need is rcu_read_lock held just over the ->ctx_lock-protected
-area in aio_fput_routine().
-
-Signed-off-by: Al Viro <viro at zeniv.linux.org.uk>
-Reviewed-by: Jeff Moyer <jmoyer at redhat.com>
-Acked-by: Benjamin LaHaise <bcrl at kvack.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/aio.c | 14 ++++++--------
- 1 file changed, 6 insertions(+), 8 deletions(-)
-
-diff --git a/fs/aio.c b/fs/aio.c
-index f6578cb..b9d64d8 100644
---- a/fs/aio.c
-+++ b/fs/aio.c
-@@ -228,12 +228,6 @@ static void __put_ioctx(struct kioctx *ctx)
- call_rcu(&ctx->rcu_head, ctx_rcu_free);
- }
-
--static inline void get_ioctx(struct kioctx *kioctx)
--{
-- BUG_ON(atomic_read(&kioctx->users) <= 0);
-- atomic_inc(&kioctx->users);
--}
--
- static inline int try_get_ioctx(struct kioctx *kioctx)
- {
- return atomic_inc_not_zero(&kioctx->users);
-@@ -609,11 +603,16 @@ static void aio_fput_routine(struct work_struct *data)
- fput(req->ki_filp);
-
- /* Link the iocb into the context's free list */
-+ rcu_read_lock();
- spin_lock_irq(&ctx->ctx_lock);
- really_put_req(ctx, req);
-+ /*
-+ * at that point ctx might've been killed, but actual
-+ * freeing is RCU'd
-+ */
- spin_unlock_irq(&ctx->ctx_lock);
-+ rcu_read_unlock();
-
-- put_ioctx(ctx);
- spin_lock_irq(&fput_lock);
- }
- spin_unlock_irq(&fput_lock);
-@@ -644,7 +643,6 @@ static int __aio_put_req(struct kioctx *ctx, struct kiocb *req)
- * this function will be executed w/out any aio kthread wakeup.
- */
- if (unlikely(!fput_atomic(req->ki_filp))) {
-- get_ioctx(ctx);
- spin_lock(&fput_lock);
- list_add(&req->ki_list, &fput_head);
- spin_unlock(&fput_lock);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0005-x86-Derandom-delay_tsc-for-64-bit.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0005-x86-Derandom-delay_tsc-for-64-bit.patch
deleted file mode 100644
index 29ebbba..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0005-x86-Derandom-delay_tsc-for-64-bit.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From fc10b28e82caa4d0a793b9ec9657dedbd1c2afd8 Mon Sep 17 00:00:00 2001
-From: Thomas Gleixner <tglx at linutronix.de>
-Date: Fri, 9 Mar 2012 20:55:10 +0100
-Subject: [PATCH 05/42] x86: Derandom delay_tsc for 64 bit
-
-commit a7f4255f906f60f72e00aad2fb000939449ff32e upstream.
-
-Commit f0fbf0abc093 ("x86: integrate delay functions") converted
-delay_tsc() into a random delay generator for 64 bit. The reason is
-that it merged the mostly identical versions of delay_32.c and
-delay_64.c. Though the subtle difference of the result was:
-
- static void delay_tsc(unsigned long loops)
- {
-- unsigned bclock, now;
-+ unsigned long bclock, now;
-
-Now the function uses rdtscl() which returns the lower 32bit of the
-TSC. On 32bit that's not problematic as unsigned long is 32bit. On 64
-bit this fails when the lower 32bit are close to wrap around when
-bclock is read, because the following check
-
- if ((now - bclock) >= loops)
- break;
-
-evaluated to true on 64bit for e.g. bclock = 0xffffffff and now = 0
-because the unsigned long (now - bclock) of these values results in
-0xffffffff00000001 which is definitely larger than the loops
-value. That explains Tvortkos observation:
-
-"Because I am seeing udelay(500) (_occasionally_) being short, and
- that by delaying for some duration between 0us (yep) and 491us."
-
-Make those variables explicitely u32 again, so this works for both 32
-and 64 bit.
-
-Reported-by: Tvrtko Ursulin <tvrtko.ursulin at onelan.co.uk>
-Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/x86/lib/delay.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/arch/x86/lib/delay.c b/arch/x86/lib/delay.c
-index fc45ba8..e395693 100644
---- a/arch/x86/lib/delay.c
-+++ b/arch/x86/lib/delay.c
-@@ -48,9 +48,9 @@ static void delay_loop(unsigned long loops)
- }
-
- /* TSC based delay: */
--static void delay_tsc(unsigned long loops)
-+static void delay_tsc(unsigned long __loops)
- {
-- unsigned long bclock, now;
-+ u32 bclock, now, loops = __loops;
- int cpu;
-
- preempt_disable();
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0006-PCI-ignore-pre-1.1-ASPM-quirking-when-ASPM-is-disabl.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0006-PCI-ignore-pre-1.1-ASPM-quirking-when-ASPM-is-disabl.patch
deleted file mode 100644
index 6129b69..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0006-PCI-ignore-pre-1.1-ASPM-quirking-when-ASPM-is-disabl.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 7d3540104ba156ddc2a80f5c9608958faad01cec Mon Sep 17 00:00:00 2001
-From: Matthew Garrett <mjg at redhat.com>
-Date: Tue, 6 Mar 2012 13:41:49 -0500
-Subject: [PATCH 06/42] PCI: ignore pre-1.1 ASPM quirking when ASPM is
- disabled
-
-commit 4949be16822e92a18ea0cc1616319926628092ee upstream.
-
-Right now we won't touch ASPM state if ASPM is disabled, except in the case
-where we find a device that appears to be too old to reliably support ASPM.
-Right now we'll clear it in that case, which is almost certainly the wrong
-thing to do. The easiest way around this is just to disable the blacklisting
-when ASPM is disabled.
-
-Signed-off-by: Matthew Garrett <mjg at redhat.com>
-Signed-off-by: Jesse Barnes <jbarnes at virtuousgeek.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/pci/pcie/aspm.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/drivers/pci/pcie/aspm.c b/drivers/pci/pcie/aspm.c
-index 1cfbf22..24f049e 100644
---- a/drivers/pci/pcie/aspm.c
-+++ b/drivers/pci/pcie/aspm.c
-@@ -500,6 +500,9 @@ static int pcie_aspm_sanity_check(struct pci_dev *pdev)
- int pos;
- u32 reg32;
-
-+ if (aspm_disabled)
-+ return 0;
-+
- /*
- * Some functions in a slot might not all be PCIe functions,
- * very strange. Disable ASPM for the whole slot
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0007-omap3isp-ccdc-Fix-crash-in-HS-VS-interrupt-handler.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0007-omap3isp-ccdc-Fix-crash-in-HS-VS-interrupt-handler.patch
deleted file mode 100644
index a5c82fd..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0007-omap3isp-ccdc-Fix-crash-in-HS-VS-interrupt-handler.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 53af81856eb79f36e3c497dd12c3875c3c340411 Mon Sep 17 00:00:00 2001
-From: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
-Date: Fri, 11 Nov 2011 11:22:20 -0300
-Subject: [PATCH 07/42] omap3isp: ccdc: Fix crash in HS/VS interrupt handler
-
-commit bd0f2e6da7ea9e225cb2dbd3229e25584b0e9538 upstream.
-
-The HS/VS interrupt handler needs to access the pipeline object. It
-erronously tries to get it from the CCDC output video node, which isn't
-necessarily included in the pipeline. This leads to a NULL pointer
-dereference.
-
-Fix the bug by getting the pipeline object from the CCDC subdev entity.
-
-Reported-by: Gary Thomas <gary at mlbassoc.com>
-Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
-Acked-by: Sakari Ailus <sakari.ailus at iki.fi>
-Signed-off-by: Mauro Carvalho Chehab <mchehab at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/media/video/omap3isp/ispccdc.c | 3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
-
-diff --git a/drivers/media/video/omap3isp/ispccdc.c b/drivers/media/video/omap3isp/ispccdc.c
-index 54a4a3f..a319281 100644
---- a/drivers/media/video/omap3isp/ispccdc.c
-+++ b/drivers/media/video/omap3isp/ispccdc.c
-@@ -1406,8 +1406,7 @@ static int __ccdc_handle_stopping(struct isp_ccdc_device *ccdc, u32 event)
-
- static void ccdc_hs_vs_isr(struct isp_ccdc_device *ccdc)
- {
-- struct isp_pipeline *pipe =
-- to_isp_pipeline(&ccdc->video_out.video.entity);
-+ struct isp_pipeline *pipe = to_isp_pipeline(&ccdc->subdev.entity);
- struct video_device *vdev = ccdc->subdev.devnode;
- struct v4l2_event event;
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0008-rt2x00-fix-random-stalls.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0008-rt2x00-fix-random-stalls.patch
deleted file mode 100644
index 1784526..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0008-rt2x00-fix-random-stalls.patch
+++ /dev/null
@@ -1,99 +0,0 @@
-From c27583afc5c12c3731697b41e6a7c4fa2a239fae Mon Sep 17 00:00:00 2001
-From: Stanislaw Gruszka <sgruszka at redhat.com>
-Date: Fri, 9 Mar 2012 12:39:54 +0100
-Subject: [PATCH 08/42] rt2x00: fix random stalls
-
-commit 3780d038fdf4b5ef26ead10b0604ab1f46dd9510 upstream.
-
-Is possible that we stop queue and then do not wake up it again,
-especially when packets are transmitted fast. That can be easily
-reproduced with modified tx queue entry_num to some small value e.g. 16.
-
-If mac80211 already hold local->queue_stop_reason_lock, then we can wait
-on that lock in both rt2x00queue_pause_queue() and
-rt2x00queue_unpause_queue(). After drooping ->queue_stop_reason_lock
-is possible that __ieee80211_wake_queue() will be performed before
-__ieee80211_stop_queue(), hence we stop queue and newer wake up it
-again.
-
-Another race condition is possible when between rt2x00queue_threshold()
-check and rt2x00queue_pause_queue() we will process all pending tx
-buffers on different cpu. This might happen if for example interrupt
-will be triggered on cpu performing rt2x00mac_tx().
-
-To prevent race conditions serialize pause/unpause by queue->tx_lock.
-
-Signed-off-by: Stanislaw Gruszka <sgruszka at redhat.com>
-Acked-by: Gertjan van Wingerde <gwingerde at gmail.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/net/wireless/rt2x00/rt2x00dev.c | 6 +++++-
- drivers/net/wireless/rt2x00/rt2x00mac.c | 9 +++++++++
- drivers/net/wireless/rt2x00/rt2x00queue.c | 3 +++
- 3 files changed, 17 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/net/wireless/rt2x00/rt2x00dev.c b/drivers/net/wireless/rt2x00/rt2x00dev.c
-index edd317f..21b529b 100644
---- a/drivers/net/wireless/rt2x00/rt2x00dev.c
-+++ b/drivers/net/wireless/rt2x00/rt2x00dev.c
-@@ -426,10 +426,14 @@ void rt2x00lib_txdone(struct queue_entry *entry,
- /*
- * If the data queue was below the threshold before the txdone
- * handler we must make sure the packet queue in the mac80211 stack
-- * is reenabled when the txdone handler has finished.
-+ * is reenabled when the txdone handler has finished. This has to be
-+ * serialized with rt2x00mac_tx(), otherwise we can wake up queue
-+ * before it was stopped.
- */
-+ spin_lock_bh(&entry->queue->tx_lock);
- if (!rt2x00queue_threshold(entry->queue))
- rt2x00queue_unpause_queue(entry->queue);
-+ spin_unlock_bh(&entry->queue->tx_lock);
- }
- EXPORT_SYMBOL_GPL(rt2x00lib_txdone);
-
-diff --git a/drivers/net/wireless/rt2x00/rt2x00mac.c b/drivers/net/wireless/rt2x00/rt2x00mac.c
-index bf0acff..373dae1 100644
---- a/drivers/net/wireless/rt2x00/rt2x00mac.c
-+++ b/drivers/net/wireless/rt2x00/rt2x00mac.c
-@@ -152,13 +152,22 @@ void rt2x00mac_tx(struct ieee80211_hw *hw, struct sk_buff *skb)
- if (unlikely(rt2x00queue_write_tx_frame(queue, skb, false)))
- goto exit_fail;
-
-+ /*
-+ * Pausing queue has to be serialized with rt2x00lib_txdone(). Note
-+ * we should not use spin_lock_bh variant as bottom halve was already
-+ * disabled before ieee80211_xmit() call.
-+ */
-+ spin_lock(&queue->tx_lock);
- if (rt2x00queue_threshold(queue))
- rt2x00queue_pause_queue(queue);
-+ spin_unlock(&queue->tx_lock);
-
- return;
-
- exit_fail:
-+ spin_lock(&queue->tx_lock);
- rt2x00queue_pause_queue(queue);
-+ spin_unlock(&queue->tx_lock);
- exit_free_skb:
- dev_kfree_skb_any(skb);
- }
-diff --git a/drivers/net/wireless/rt2x00/rt2x00queue.c b/drivers/net/wireless/rt2x00/rt2x00queue.c
-index 5adfb3e..9b1b2b7 100644
---- a/drivers/net/wireless/rt2x00/rt2x00queue.c
-+++ b/drivers/net/wireless/rt2x00/rt2x00queue.c
-@@ -619,6 +619,9 @@ int rt2x00queue_write_tx_frame(struct data_queue *queue, struct sk_buff *skb,
- else if (test_bit(REQUIRE_DMA, &queue->rt2x00dev->cap_flags))
- rt2x00queue_align_frame(skb);
-
-+ /*
-+ * That function must be called with bh disabled.
-+ */
- spin_lock(&queue->tx_lock);
-
- if (unlikely(rt2x00queue_full(queue))) {
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0009-perf-x86-Fix-local-vs-remote-memory-events-for-NHM-W.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0009-perf-x86-Fix-local-vs-remote-memory-events-for-NHM-W.patch
deleted file mode 100644
index d57e5e3..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0009-perf-x86-Fix-local-vs-remote-memory-events-for-NHM-W.patch
+++ /dev/null
@@ -1,222 +0,0 @@
-From 1c301a267126e6e01056eda0164a67731b738f5f Mon Sep 17 00:00:00 2001
-From: Peter Zijlstra <a.p.zijlstra at chello.nl>
-Date: Mon, 5 Mar 2012 23:59:25 +0100
-Subject: [PATCH 09/42] perf/x86: Fix local vs remote memory events for
- NHM/WSM
-
-commit 87e24f4b67e68d9fd8df16e0bf9c66d1ad2a2533 upstream.
-
-Verified using the below proglet.. before:
-
-[root at westmere ~]# perf stat -e node-stores -e node-store-misses ./numa 0
-remote write
-
- Performance counter stats for './numa 0':
-
- 2,101,554 node-stores
- 2,096,931 node-store-misses
-
- 5.021546079 seconds time elapsed
-
-[root at westmere ~]# perf stat -e node-stores -e node-store-misses ./numa 1
-local write
-
- Performance counter stats for './numa 1':
-
- 501,137 node-stores
- 199 node-store-misses
-
- 5.124451068 seconds time elapsed
-
-After:
-
-[root at westmere ~]# perf stat -e node-stores -e node-store-misses ./numa 0
-remote write
-
- Performance counter stats for './numa 0':
-
- 2,107,516 node-stores
- 2,097,187 node-store-misses
-
- 5.012755149 seconds time elapsed
-
-[root at westmere ~]# perf stat -e node-stores -e node-store-misses ./numa 1
-local write
-
- Performance counter stats for './numa 1':
-
- 2,063,355 node-stores
- 165 node-store-misses
-
- 5.082091494 seconds time elapsed
-
-#define _GNU_SOURCE
-
-#include <sched.h>
-#include <stdio.h>
-#include <errno.h>
-#include <sys/mman.h>
-#include <sys/types.h>
-#include <dirent.h>
-#include <signal.h>
-#include <unistd.h>
-#include <numaif.h>
-#include <stdlib.h>
-
-#define SIZE (32*1024*1024)
-
-volatile int done;
-
-void sig_done(int sig)
-{
- done = 1;
-}
-
-int main(int argc, char **argv)
-{
- cpu_set_t *mask, *mask2;
- size_t size;
- int i, err, t;
- int nrcpus = 1024;
- char *mem;
- unsigned long nodemask = 0x01; /* node 0 */
- DIR *node;
- struct dirent *de;
- int read = 0;
- int local = 0;
-
- if (argc < 2) {
- printf("usage: %s [0-3]\n", argv[0]);
- printf(" bit0 - local/remote\n");
- printf(" bit1 - read/write\n");
- exit(0);
- }
-
- switch (atoi(argv[1])) {
- case 0:
- printf("remote write\n");
- break;
- case 1:
- printf("local write\n");
- local = 1;
- break;
- case 2:
- printf("remote read\n");
- read = 1;
- break;
- case 3:
- printf("local read\n");
- local = 1;
- read = 1;
- break;
- }
-
- mask = CPU_ALLOC(nrcpus);
- size = CPU_ALLOC_SIZE(nrcpus);
- CPU_ZERO_S(size, mask);
-
- node = opendir("/sys/devices/system/node/node0/");
- if (!node)
- perror("opendir");
- while ((de = readdir(node))) {
- int cpu;
-
- if (sscanf(de->d_name, "cpu%d", &cpu) == 1)
- CPU_SET_S(cpu, size, mask);
- }
- closedir(node);
-
- mask2 = CPU_ALLOC(nrcpus);
- CPU_ZERO_S(size, mask2);
- for (i = 0; i < size; i++)
- CPU_SET_S(i, size, mask2);
- CPU_XOR_S(size, mask2, mask2, mask); // invert
-
- if (!local)
- mask = mask2;
-
- err = sched_setaffinity(0, size, mask);
- if (err)
- perror("sched_setaffinity");
-
- mem = mmap(0, SIZE, PROT_READ|PROT_WRITE,
- MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);
- err = mbind(mem, SIZE, MPOL_BIND, &nodemask, 8*sizeof(nodemask), MPOL_MF_MOVE);
- if (err)
- perror("mbind");
-
- signal(SIGALRM, sig_done);
- alarm(5);
-
- if (!read) {
- while (!done) {
- for (i = 0; i < SIZE; i++)
- mem[i] = 0x01;
- }
- } else {
- while (!done) {
- for (i = 0; i < SIZE; i++)
- t += *(volatile char *)(mem + i);
- }
- }
-
- return 0;
-}
-
-Signed-off-by: Peter Zijlstra <a.p.zijlstra at chello.nl>
-Cc: Stephane Eranian <eranian at google.com>
-Link: http://lkml.kernel.org/n/tip-tq73sxus35xmqpojf7ootxgs@git.kernel.org
-Signed-off-by: Ingo Molnar <mingo at elte.hu>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/x86/kernel/cpu/perf_event_intel.c | 17 +++++++++--------
- 1 file changed, 9 insertions(+), 8 deletions(-)
-
-diff --git a/arch/x86/kernel/cpu/perf_event_intel.c b/arch/x86/kernel/cpu/perf_event_intel.c
-index 121f1be..957c216 100644
---- a/arch/x86/kernel/cpu/perf_event_intel.c
-+++ b/arch/x86/kernel/cpu/perf_event_intel.c
-@@ -389,14 +389,15 @@ static __initconst const u64 westmere_hw_cache_event_ids
- #define NHM_LOCAL_DRAM (1 << 14)
- #define NHM_NON_DRAM (1 << 15)
-
--#define NHM_ALL_DRAM (NHM_REMOTE_DRAM|NHM_LOCAL_DRAM)
-+#define NHM_LOCAL (NHM_LOCAL_DRAM|NHM_REMOTE_CACHE_FWD)
-+#define NHM_REMOTE (NHM_REMOTE_DRAM)
-
- #define NHM_DMND_READ (NHM_DMND_DATA_RD)
- #define NHM_DMND_WRITE (NHM_DMND_RFO|NHM_DMND_WB)
- #define NHM_DMND_PREFETCH (NHM_PF_DATA_RD|NHM_PF_DATA_RFO)
-
- #define NHM_L3_HIT (NHM_UNCORE_HIT|NHM_OTHER_CORE_HIT_SNP|NHM_OTHER_CORE_HITM)
--#define NHM_L3_MISS (NHM_NON_DRAM|NHM_ALL_DRAM|NHM_REMOTE_CACHE_FWD)
-+#define NHM_L3_MISS (NHM_NON_DRAM|NHM_LOCAL_DRAM|NHM_REMOTE_DRAM|NHM_REMOTE_CACHE_FWD)
- #define NHM_L3_ACCESS (NHM_L3_HIT|NHM_L3_MISS)
-
- static __initconst const u64 nehalem_hw_cache_extra_regs
-@@ -420,16 +421,16 @@ static __initconst const u64 nehalem_hw_cache_extra_regs
- },
- [ C(NODE) ] = {
- [ C(OP_READ) ] = {
-- [ C(RESULT_ACCESS) ] = NHM_DMND_READ|NHM_ALL_DRAM,
-- [ C(RESULT_MISS) ] = NHM_DMND_READ|NHM_REMOTE_DRAM,
-+ [ C(RESULT_ACCESS) ] = NHM_DMND_READ|NHM_LOCAL|NHM_REMOTE,
-+ [ C(RESULT_MISS) ] = NHM_DMND_READ|NHM_REMOTE,
- },
- [ C(OP_WRITE) ] = {
-- [ C(RESULT_ACCESS) ] = NHM_DMND_WRITE|NHM_ALL_DRAM,
-- [ C(RESULT_MISS) ] = NHM_DMND_WRITE|NHM_REMOTE_DRAM,
-+ [ C(RESULT_ACCESS) ] = NHM_DMND_WRITE|NHM_LOCAL|NHM_REMOTE,
-+ [ C(RESULT_MISS) ] = NHM_DMND_WRITE|NHM_REMOTE,
- },
- [ C(OP_PREFETCH) ] = {
-- [ C(RESULT_ACCESS) ] = NHM_DMND_PREFETCH|NHM_ALL_DRAM,
-- [ C(RESULT_MISS) ] = NHM_DMND_PREFETCH|NHM_REMOTE_DRAM,
-+ [ C(RESULT_ACCESS) ] = NHM_DMND_PREFETCH|NHM_LOCAL|NHM_REMOTE,
-+ [ C(RESULT_MISS) ] = NHM_DMND_PREFETCH|NHM_REMOTE,
- },
- },
- };
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0010-CIFS-Do-not-kmalloc-under-the-flocks-spinlock.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0010-CIFS-Do-not-kmalloc-under-the-flocks-spinlock.patch
deleted file mode 100644
index 150144c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0010-CIFS-Do-not-kmalloc-under-the-flocks-spinlock.patch
+++ /dev/null
@@ -1,140 +0,0 @@
-From 6fc4721b47d58ae599a4bb37869d4bfd41f70511 Mon Sep 17 00:00:00 2001
-From: Pavel Shilovsky <piastry at etersoft.ru>
-Date: Mon, 5 Mar 2012 09:39:20 +0300
-Subject: [PATCH 10/42] CIFS: Do not kmalloc under the flocks spinlock
-
-commit d5751469f210d2149cc2159ffff66cbeef6da3f2 upstream.
-
-Reorganize the code to make the memory already allocated before
-spinlock'ed loop.
-
-Reviewed-by: Jeff Layton <jlayton at redhat.com>
-Signed-off-by: Pavel Shilovsky <piastry at etersoft.ru>
-Signed-off-by: Steve French <sfrench at us.ibm.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/cifs/file.c | 69 +++++++++++++++++++++++++++++++++++++++++++++-----------
- 1 file changed, 56 insertions(+), 13 deletions(-)
-
-diff --git a/fs/cifs/file.c b/fs/cifs/file.c
-index 4dd9283..5e64748 100644
---- a/fs/cifs/file.c
-+++ b/fs/cifs/file.c
-@@ -920,16 +920,26 @@ cifs_push_mandatory_locks(struct cifsFileInfo *cfile)
- for (lockp = &inode->i_flock; *lockp != NULL; \
- lockp = &(*lockp)->fl_next)
-
-+struct lock_to_push {
-+ struct list_head llist;
-+ __u64 offset;
-+ __u64 length;
-+ __u32 pid;
-+ __u16 netfid;
-+ __u8 type;
-+};
-+
- static int
- cifs_push_posix_locks(struct cifsFileInfo *cfile)
- {
- struct cifsInodeInfo *cinode = CIFS_I(cfile->dentry->d_inode);
- struct cifs_tcon *tcon = tlink_tcon(cfile->tlink);
- struct file_lock *flock, **before;
-- struct cifsLockInfo *lck, *tmp;
-+ unsigned int count = 0, i = 0;
- int rc = 0, xid, type;
-+ struct list_head locks_to_send, *el;
-+ struct lock_to_push *lck, *tmp;
- __u64 length;
-- struct list_head locks_to_send;
-
- xid = GetXid();
-
-@@ -940,29 +950,55 @@ cifs_push_posix_locks(struct cifsFileInfo *cfile)
- return rc;
- }
-
-+ lock_flocks();
-+ cifs_for_each_lock(cfile->dentry->d_inode, before) {
-+ if ((*before)->fl_flags & FL_POSIX)
-+ count++;
-+ }
-+ unlock_flocks();
-+
- INIT_LIST_HEAD(&locks_to_send);
-
-+ /*
-+ * Allocating count locks is enough because no locks can be added to
-+ * the list while we are holding cinode->lock_mutex that protects
-+ * locking operations of this inode.
-+ */
-+ for (; i < count; i++) {
-+ lck = kmalloc(sizeof(struct lock_to_push), GFP_KERNEL);
-+ if (!lck) {
-+ rc = -ENOMEM;
-+ goto err_out;
-+ }
-+ list_add_tail(&lck->llist, &locks_to_send);
-+ }
-+
-+ i = 0;
-+ el = locks_to_send.next;
- lock_flocks();
- cifs_for_each_lock(cfile->dentry->d_inode, before) {
-+ if (el == &locks_to_send) {
-+ /* something is really wrong */
-+ cERROR(1, "Can't push all brlocks!");
-+ break;
-+ }
- flock = *before;
-+ if ((flock->fl_flags & FL_POSIX) == 0)
-+ continue;
- length = 1 + flock->fl_end - flock->fl_start;
- if (flock->fl_type == F_RDLCK || flock->fl_type == F_SHLCK)
- type = CIFS_RDLCK;
- else
- type = CIFS_WRLCK;
--
-- lck = cifs_lock_init(flock->fl_start, length, type,
-- cfile->netfid);
-- if (!lck) {
-- rc = -ENOMEM;
-- goto send_locks;
-- }
-+ lck = list_entry(el, struct lock_to_push, llist);
- lck->pid = flock->fl_pid;
--
-- list_add_tail(&lck->llist, &locks_to_send);
-+ lck->netfid = cfile->netfid;
-+ lck->length = length;
-+ lck->type = type;
-+ lck->offset = flock->fl_start;
-+ i++;
-+ el = el->next;
- }
--
--send_locks:
- unlock_flocks();
-
- list_for_each_entry_safe(lck, tmp, &locks_to_send, llist) {
-@@ -979,11 +1015,18 @@ send_locks:
- kfree(lck);
- }
-
-+out:
- cinode->can_cache_brlcks = false;
- mutex_unlock(&cinode->lock_mutex);
-
- FreeXid(xid);
- return rc;
-+err_out:
-+ list_for_each_entry_safe(lck, tmp, &locks_to_send, llist) {
-+ list_del(&lck->llist);
-+ kfree(lck);
-+ }
-+ goto out;
- }
-
- static int
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0011-vfs-fix-return-value-from-do_last.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0011-vfs-fix-return-value-from-do_last.patch
deleted file mode 100644
index f95b2aa..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0011-vfs-fix-return-value-from-do_last.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From f52c418abc401baac70461c9b92954f9cf77b5dc Mon Sep 17 00:00:00 2001
-From: Miklos Szeredi <mszeredi at suse.cz>
-Date: Tue, 6 Mar 2012 13:56:34 +0100
-Subject: [PATCH 11/42] vfs: fix return value from do_last()
-
-commit 7f6c7e62fcc123e6bd9206da99a2163fe3facc31 upstream.
-
-complete_walk() returns either ECHILD or ESTALE. do_last() turns this into
-ECHILD unconditionally. If not in RCU mode, this error will reach userspace
-which is complete nonsense.
-
-Signed-off-by: Miklos Szeredi <mszeredi at suse.cz>
-Signed-off-by: Al Viro <viro at zeniv.linux.org.uk>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/namei.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/fs/namei.c b/fs/namei.c
-index 744e942..b8344d0 100644
---- a/fs/namei.c
-+++ b/fs/namei.c
-@@ -2139,7 +2139,7 @@ static struct file *do_last(struct nameidata *nd, struct path *path,
- /* sayonara */
- error = complete_walk(nd);
- if (error)
-- return ERR_PTR(-ECHILD);
-+ return ERR_PTR(error);
-
- error = -ENOTDIR;
- if (nd->flags & LOOKUP_DIRECTORY) {
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0012-vfs-fix-double-put-after-complete_walk.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0012-vfs-fix-double-put-after-complete_walk.patch
deleted file mode 100644
index 7a88ad0..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0012-vfs-fix-double-put-after-complete_walk.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From c2f9efa695b37b1f5e70557edfdfd36f8d186d31 Mon Sep 17 00:00:00 2001
-From: Miklos Szeredi <mszeredi at suse.cz>
-Date: Tue, 6 Mar 2012 13:56:33 +0100
-Subject: [PATCH 12/42] vfs: fix double put after complete_walk()
-
-commit 097b180ca09b581ef0dc24fbcfc1b227de3875df upstream.
-
-complete_walk() already puts nd->path, no need to do it again at cleanup time.
-
-This would result in Oopses if triggered, apparently the codepath is not too
-well exercised.
-
-Signed-off-by: Miklos Szeredi <mszeredi at suse.cz>
-Signed-off-by: Al Viro <viro at zeniv.linux.org.uk>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/namei.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/fs/namei.c b/fs/namei.c
-index b8344d0..9680cef 100644
---- a/fs/namei.c
-+++ b/fs/namei.c
-@@ -2238,7 +2238,7 @@ static struct file *do_last(struct nameidata *nd, struct path *path,
- /* Why this, you ask? _Now_ we might have grown LOOKUP_JUMPED... */
- error = complete_walk(nd);
- if (error)
-- goto exit;
-+ return ERR_PTR(error);
- error = -EISDIR;
- if (S_ISDIR(nd->inode->i_mode))
- goto exit;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0013-acer-wmi-No-wifi-rfkill-on-Lenovo-machines.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0013-acer-wmi-No-wifi-rfkill-on-Lenovo-machines.patch
deleted file mode 100644
index 6cb9d28..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0013-acer-wmi-No-wifi-rfkill-on-Lenovo-machines.patch
+++ /dev/null
@@ -1,77 +0,0 @@
-From 9102b08273c16ddc92444c913e81572989342a8f Mon Sep 17 00:00:00 2001
-From: Ike Panhc <ike.pan at canonical.com>
-Date: Fri, 3 Feb 2012 16:46:39 +0800
-Subject: [PATCH 13/42] acer-wmi: No wifi rfkill on Lenovo machines
-
-commit 461e74377cfcfc2c0d6bbdfa8fc5fbc21b052c2a upstream.
-
-We have several reports which says acer-wmi is loaded on ideapads
-and register rfkill for wifi which can not be unblocked.
-
-Since ideapad-laptop also register rfkill for wifi and it works
-reliably, it will be fine acer-wmi is not going to register rfkill
-for wifi once VPC2004 is found.
-
-Also put IBM0068/LEN0068 in the list. Though thinkpad_acpi has no
-wifi rfkill capability, there are reports which says acer-wmi also
-block wireless on Thinkpad E520/E420.
-
-Signed-off-by: Ike Panhc <ike.pan at canonical.com>
-Signed-off-by: Matthew Garrett <mjg at redhat.com>
-Cc: Jonathan Nieder <jrnieder at gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/platform/x86/acer-wmi.c | 30 +++++++++++++++++++++++++++++-
- 1 file changed, 29 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/platform/x86/acer-wmi.c b/drivers/platform/x86/acer-wmi.c
-index b848277..1e5290b 100644
---- a/drivers/platform/x86/acer-wmi.c
-+++ b/drivers/platform/x86/acer-wmi.c
-@@ -679,6 +679,32 @@ static acpi_status AMW0_find_mailled(void)
- return AE_OK;
- }
-
-+static int AMW0_set_cap_acpi_check_device_found;
-+
-+static acpi_status AMW0_set_cap_acpi_check_device_cb(acpi_handle handle,
-+ u32 level, void *context, void **retval)
-+{
-+ AMW0_set_cap_acpi_check_device_found = 1;
-+ return AE_OK;
-+}
-+
-+static const struct acpi_device_id norfkill_ids[] = {
-+ { "VPC2004", 0},
-+ { "IBM0068", 0},
-+ { "LEN0068", 0},
-+ { "", 0},
-+};
-+
-+static int AMW0_set_cap_acpi_check_device(void)
-+{
-+ const struct acpi_device_id *id;
-+
-+ for (id = norfkill_ids; id->id[0]; id++)
-+ acpi_get_devices(id->id, AMW0_set_cap_acpi_check_device_cb,
-+ NULL, NULL);
-+ return AMW0_set_cap_acpi_check_device_found;
-+}
-+
- static acpi_status AMW0_set_capabilities(void)
- {
- struct wmab_args args;
-@@ -692,7 +718,9 @@ static acpi_status AMW0_set_capabilities(void)
- * work.
- */
- if (wmi_has_guid(AMW0_GUID2)) {
-- interface->capability |= ACER_CAP_WIRELESS;
-+ if ((quirks != &quirk_unknown) ||
-+ !AMW0_set_cap_acpi_check_device())
-+ interface->capability |= ACER_CAP_WIRELESS;
- return AE_OK;
- }
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0014-atl1c-dont-use-highprio-tx-queue.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0014-atl1c-dont-use-highprio-tx-queue.patch
deleted file mode 100644
index 72577e4..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0014-atl1c-dont-use-highprio-tx-queue.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From 8bdd32d35e2bc723a11b475eb797a9f11e8db598 Mon Sep 17 00:00:00 2001
-From: Eric Dumazet <eric.dumazet at gmail.com>
-Date: Wed, 15 Feb 2012 20:43:11 +0000
-Subject: [PATCH 14/42] atl1c: dont use highprio tx queue
-
-[ Upstream commit 11aad99af6ef629ff3b05d1c9f0936589b204316 ]
-
-This driver attempts to use two TX rings but lacks proper support :
-
-1) IRQ handler only takes care of TX completion on first TX ring
-2) the stop/start logic uses the legacy functions (for non multiqueue
-drivers)
-
-This means all packets witk skb mark set to 1 are sent through high
-queue but are never cleaned and queue eventualy fills and block the
-device, triggering the infamous "NETDEV WATCHDOG" message.
-
-Lets use a single TX ring to fix the problem, this driver is not a real
-multiqueue one yet.
-
-Minimal fix for stable kernels.
-
-Reported-by: Thomas Meyer <thomas at m3y3r.de>
-Tested-by: Thomas Meyer <thomas at m3y3r.de>
-Signed-off-by: Eric Dumazet <eric.dumazet at gmail.com>
-Cc: Jay Cliburn <jcliburn at gmail.com>
-Cc: Chris Snook <chris.snook at gmail.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/net/ethernet/atheros/atl1c/atl1c_main.c | 4 ----
- 1 file changed, 4 deletions(-)
-
-diff --git a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
-index 02c7ed8..eccdcff 100644
---- a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
-+++ b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
-@@ -2241,10 +2241,6 @@ static netdev_tx_t atl1c_xmit_frame(struct sk_buff *skb,
- dev_info(&adapter->pdev->dev, "tx locked\n");
- return NETDEV_TX_LOCKED;
- }
-- if (skb->mark == 0x01)
-- type = atl1c_trans_high;
-- else
-- type = atl1c_trans_normal;
-
- if (atl1c_tpd_avail(adapter, type) < tpd_req) {
- /* no enough descriptor, just stop queue */
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0015-neighbour-Fixed-race-condition-at-tbl-nht.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0015-neighbour-Fixed-race-condition-at-tbl-nht.patch
deleted file mode 100644
index 35bd072..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0015-neighbour-Fixed-race-condition-at-tbl-nht.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From 3ba7a3f4339ce0147ffa46086eead88cb45c9b0d Mon Sep 17 00:00:00 2001
-From: Michel Machado <michel at digirati.com.br>
-Date: Tue, 21 Feb 2012 11:04:13 +0000
-Subject: [PATCH 15/42] neighbour: Fixed race condition at tbl->nht
-
-[ Upstream commit 84338a6c9dbb6ff3de4749864020f8f25d86fc81 ]
-
-When the fixed race condition happens:
-
-1. While function neigh_periodic_work scans the neighbor hash table
-pointed by field tbl->nht, it unlocks and locks tbl->lock between
-buckets in order to call cond_resched.
-
-2. Assume that function neigh_periodic_work calls cond_resched, that is,
-the lock tbl->lock is available, and function neigh_hash_grow runs.
-
-3. Once function neigh_hash_grow finishes, and RCU calls
-neigh_hash_free_rcu, the original struct neigh_hash_table that function
-neigh_periodic_work was using doesn't exist anymore.
-
-4. Once back at neigh_periodic_work, whenever the old struct
-neigh_hash_table is accessed, things can go badly.
-
-Signed-off-by: Michel Machado <michel at digirati.com.br>
-CC: "David S. Miller" <davem at davemloft.net>
-CC: Eric Dumazet <eric.dumazet at gmail.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- net/core/neighbour.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/net/core/neighbour.c b/net/core/neighbour.c
-index 5ac07d3..7aafaed 100644
---- a/net/core/neighbour.c
-+++ b/net/core/neighbour.c
-@@ -802,6 +802,8 @@ next_elt:
- write_unlock_bh(&tbl->lock);
- cond_resched();
- write_lock_bh(&tbl->lock);
-+ nht = rcu_dereference_protected(tbl->nht,
-+ lockdep_is_held(&tbl->lock));
- }
- /* Cycle through all hash buckets every base_reachable_time/2 ticks.
- * ARP entry timeouts range from 1/2 base_reachable_time to 3/2
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0016-ipsec-be-careful-of-non-existing-mac-headers.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0016-ipsec-be-careful-of-non-existing-mac-headers.patch
deleted file mode 100644
index 706cdd6..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0016-ipsec-be-careful-of-non-existing-mac-headers.patch
+++ /dev/null
@@ -1,144 +0,0 @@
-From b38838f790c928ebeb30dbd6a06d4a26e84d54dc Mon Sep 17 00:00:00 2001
-From: Eric Dumazet <eric.dumazet at gmail.com>
-Date: Thu, 23 Feb 2012 10:55:02 +0000
-Subject: [PATCH 16/42] ipsec: be careful of non existing mac headers
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-[ Upstream commit 03606895cd98c0a628b17324fd7b5ff15db7e3cd ]
-
-Niccolo Belli reported ipsec crashes in case we handle a frame without
-mac header (atm in his case)
-
-Before copying mac header, better make sure it is present.
-
-Bugzilla reference: https://bugzilla.kernel.org/show_bug.cgi?id=42809
-
-Reported-by: Niccolò Belli <darkbasic at linuxsystems.it>
-Tested-by: Niccolò Belli <darkbasic at linuxsystems.it>
-Signed-off-by: Eric Dumazet <eric.dumazet at gmail.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- include/linux/skbuff.h | 10 ++++++++++
- net/ipv4/xfrm4_mode_beet.c | 5 +----
- net/ipv4/xfrm4_mode_tunnel.c | 6 ++----
- net/ipv6/xfrm6_mode_beet.c | 6 +-----
- net/ipv6/xfrm6_mode_tunnel.c | 6 ++----
- 5 files changed, 16 insertions(+), 17 deletions(-)
-
-diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
-index fe86488..6cf8b53 100644
---- a/include/linux/skbuff.h
-+++ b/include/linux/skbuff.h
-@@ -1453,6 +1453,16 @@ static inline void skb_set_mac_header(struct sk_buff *skb, const int offset)
- }
- #endif /* NET_SKBUFF_DATA_USES_OFFSET */
-
-+static inline void skb_mac_header_rebuild(struct sk_buff *skb)
-+{
-+ if (skb_mac_header_was_set(skb)) {
-+ const unsigned char *old_mac = skb_mac_header(skb);
-+
-+ skb_set_mac_header(skb, -skb->mac_len);
-+ memmove(skb_mac_header(skb), old_mac, skb->mac_len);
-+ }
-+}
-+
- static inline int skb_checksum_start_offset(const struct sk_buff *skb)
- {
- return skb->csum_start - skb_headroom(skb);
-diff --git a/net/ipv4/xfrm4_mode_beet.c b/net/ipv4/xfrm4_mode_beet.c
-index 6341818..e3db3f9 100644
---- a/net/ipv4/xfrm4_mode_beet.c
-+++ b/net/ipv4/xfrm4_mode_beet.c
-@@ -110,10 +110,7 @@ static int xfrm4_beet_input(struct xfrm_state *x, struct sk_buff *skb)
-
- skb_push(skb, sizeof(*iph));
- skb_reset_network_header(skb);
--
-- memmove(skb->data - skb->mac_len, skb_mac_header(skb),
-- skb->mac_len);
-- skb_set_mac_header(skb, -skb->mac_len);
-+ skb_mac_header_rebuild(skb);
-
- xfrm4_beet_make_header(skb);
-
-diff --git a/net/ipv4/xfrm4_mode_tunnel.c b/net/ipv4/xfrm4_mode_tunnel.c
-index 534972e..ed4bf11 100644
---- a/net/ipv4/xfrm4_mode_tunnel.c
-+++ b/net/ipv4/xfrm4_mode_tunnel.c
-@@ -66,7 +66,6 @@ static int xfrm4_mode_tunnel_output(struct xfrm_state *x, struct sk_buff *skb)
-
- static int xfrm4_mode_tunnel_input(struct xfrm_state *x, struct sk_buff *skb)
- {
-- const unsigned char *old_mac;
- int err = -EINVAL;
-
- if (XFRM_MODE_SKB_CB(skb)->protocol != IPPROTO_IPIP)
-@@ -84,10 +83,9 @@ static int xfrm4_mode_tunnel_input(struct xfrm_state *x, struct sk_buff *skb)
- if (!(x->props.flags & XFRM_STATE_NOECN))
- ipip_ecn_decapsulate(skb);
-
-- old_mac = skb_mac_header(skb);
-- skb_set_mac_header(skb, -skb->mac_len);
-- memmove(skb_mac_header(skb), old_mac, skb->mac_len);
- skb_reset_network_header(skb);
-+ skb_mac_header_rebuild(skb);
-+
- err = 0;
-
- out:
-diff --git a/net/ipv6/xfrm6_mode_beet.c b/net/ipv6/xfrm6_mode_beet.c
-index 3437d7d..f37cba9 100644
---- a/net/ipv6/xfrm6_mode_beet.c
-+++ b/net/ipv6/xfrm6_mode_beet.c
-@@ -80,7 +80,6 @@ static int xfrm6_beet_output(struct xfrm_state *x, struct sk_buff *skb)
- static int xfrm6_beet_input(struct xfrm_state *x, struct sk_buff *skb)
- {
- struct ipv6hdr *ip6h;
-- const unsigned char *old_mac;
- int size = sizeof(struct ipv6hdr);
- int err;
-
-@@ -90,10 +89,7 @@ static int xfrm6_beet_input(struct xfrm_state *x, struct sk_buff *skb)
-
- __skb_push(skb, size);
- skb_reset_network_header(skb);
--
-- old_mac = skb_mac_header(skb);
-- skb_set_mac_header(skb, -skb->mac_len);
-- memmove(skb_mac_header(skb), old_mac, skb->mac_len);
-+ skb_mac_header_rebuild(skb);
-
- xfrm6_beet_make_header(skb);
-
-diff --git a/net/ipv6/xfrm6_mode_tunnel.c b/net/ipv6/xfrm6_mode_tunnel.c
-index 4d6edff..23ecd68 100644
---- a/net/ipv6/xfrm6_mode_tunnel.c
-+++ b/net/ipv6/xfrm6_mode_tunnel.c
-@@ -63,7 +63,6 @@ static int xfrm6_mode_tunnel_output(struct xfrm_state *x, struct sk_buff *skb)
- static int xfrm6_mode_tunnel_input(struct xfrm_state *x, struct sk_buff *skb)
- {
- int err = -EINVAL;
-- const unsigned char *old_mac;
-
- if (XFRM_MODE_SKB_CB(skb)->protocol != IPPROTO_IPV6)
- goto out;
-@@ -80,10 +79,9 @@ static int xfrm6_mode_tunnel_input(struct xfrm_state *x, struct sk_buff *skb)
- if (!(x->props.flags & XFRM_STATE_NOECN))
- ipip6_ecn_decapsulate(skb);
-
-- old_mac = skb_mac_header(skb);
-- skb_set_mac_header(skb, -skb->mac_len);
-- memmove(skb_mac_header(skb), old_mac, skb->mac_len);
- skb_reset_network_header(skb);
-+ skb_mac_header_rebuild(skb);
-+
- err = 0;
-
- out:
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0017-ppp-fix-ppp_mp_reconstruct-bad-seq-errors.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0017-ppp-fix-ppp_mp_reconstruct-bad-seq-errors.patch
deleted file mode 100644
index fe5fd32..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0017-ppp-fix-ppp_mp_reconstruct-bad-seq-errors.patch
+++ /dev/null
@@ -1,90 +0,0 @@
-From 486667d032b8183f75da22b245635debbfa381ca Mon Sep 17 00:00:00 2001
-From: Ben McKeegan <ben at netservers.co.uk>
-Date: Fri, 24 Feb 2012 06:33:56 +0000
-Subject: [PATCH 17/42] ppp: fix 'ppp_mp_reconstruct bad seq' errors
-
-[ Upstream commit 8a49ad6e89feb5015e77ce6efeb2678947117e20 ]
-
-This patch fixes a (mostly cosmetic) bug introduced by the patch
-'ppp: Use SKB queue abstraction interfaces in fragment processing'
-found here: http://www.spinics.net/lists/netdev/msg153312.html
-
-The above patch rewrote and moved the code responsible for cleaning
-up discarded fragments but the new code does not catch every case
-where this is necessary. This results in some discarded fragments
-remaining in the queue, and triggering a 'bad seq' error on the
-subsequent call to ppp_mp_reconstruct. Fragments are discarded
-whenever other fragments of the same frame have been lost.
-This can generate a lot of unwanted and misleading log messages.
-
-This patch also adds additional detail to the debug logging to
-make it clearer which fragments were lost and which other fragments
-were discarded as a result of losses. (Run pppd with 'kdebug 1'
-option to enable debug logging.)
-
-Signed-off-by: Ben McKeegan <ben at netservers.co.uk>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/net/ppp/ppp_generic.c | 23 +++++++++++++++++++++++
- 1 file changed, 23 insertions(+)
-
-diff --git a/drivers/net/ppp/ppp_generic.c b/drivers/net/ppp/ppp_generic.c
-index edfa15d..486b404 100644
---- a/drivers/net/ppp/ppp_generic.c
-+++ b/drivers/net/ppp/ppp_generic.c
-@@ -2024,14 +2024,22 @@ ppp_mp_reconstruct(struct ppp *ppp)
- continue;
- }
- if (PPP_MP_CB(p)->sequence != seq) {
-+ u32 oldseq;
- /* Fragment `seq' is missing. If it is after
- minseq, it might arrive later, so stop here. */
- if (seq_after(seq, minseq))
- break;
- /* Fragment `seq' is lost, keep going. */
- lost = 1;
-+ oldseq = seq;
- seq = seq_before(minseq, PPP_MP_CB(p)->sequence)?
- minseq + 1: PPP_MP_CB(p)->sequence;
-+
-+ if (ppp->debug & 1)
-+ netdev_printk(KERN_DEBUG, ppp->dev,
-+ "lost frag %u..%u\n",
-+ oldseq, seq-1);
-+
- goto again;
- }
-
-@@ -2076,6 +2084,10 @@ ppp_mp_reconstruct(struct ppp *ppp)
- struct sk_buff *tmp2;
-
- skb_queue_reverse_walk_from_safe(list, p, tmp2) {
-+ if (ppp->debug & 1)
-+ netdev_printk(KERN_DEBUG, ppp->dev,
-+ "discarding frag %u\n",
-+ PPP_MP_CB(p)->sequence);
- __skb_unlink(p, list);
- kfree_skb(p);
- }
-@@ -2091,6 +2103,17 @@ ppp_mp_reconstruct(struct ppp *ppp)
- /* If we have discarded any fragments,
- signal a receive error. */
- if (PPP_MP_CB(head)->sequence != ppp->nextseq) {
-+ skb_queue_walk_safe(list, p, tmp) {
-+ if (p == head)
-+ break;
-+ if (ppp->debug & 1)
-+ netdev_printk(KERN_DEBUG, ppp->dev,
-+ "discarding frag %u\n",
-+ PPP_MP_CB(p)->sequence);
-+ __skb_unlink(p, list);
-+ kfree_skb(p);
-+ }
-+
- if (ppp->debug & 1)
- netdev_printk(KERN_DEBUG, ppp->dev,
- " missed pkts %u..%u\n",
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0018-sfc-Fix-assignment-of-ip_summed-for-pre-allocated-sk.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0018-sfc-Fix-assignment-of-ip_summed-for-pre-allocated-sk.patch
deleted file mode 100644
index ac641a9..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0018-sfc-Fix-assignment-of-ip_summed-for-pre-allocated-sk.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From 724515edd415300e12da1a3d2e84cadd6a5cd90b Mon Sep 17 00:00:00 2001
-From: Ben Hutchings <bhutchings at solarflare.com>
-Date: Fri, 24 Feb 2012 15:12:34 +0000
-Subject: [PATCH 18/42] sfc: Fix assignment of ip_summed for pre-allocated
- skbs
-
-[ Upstream commit ff3bc1e7527504a93710535611b2f812f3bb89bf ]
-
-When pre-allocating skbs for received packets, we set ip_summed =
-CHECKSUM_UNNCESSARY. We used to change it back to CHECKSUM_NONE when
-the received packet had an incorrect checksum or unhandled protocol.
-
-Commit bc8acf2c8c3e43fcc192762a9f964b3e9a17748b ('drivers/net: avoid
-some skb->ip_summed initializations') mistakenly replaced the latter
-assignment with a DEBUG-only assertion that ip_summed ==
-CHECKSUM_NONE. This assertion is always false, but it seems no-one
-has exercised this code path in a DEBUG build.
-
-Fix this by moving our assignment of CHECKSUM_UNNECESSARY into
-efx_rx_packet_gro().
-
-Signed-off-by: Ben Hutchings <bhutchings at solarflare.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/net/ethernet/sfc/rx.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/net/ethernet/sfc/rx.c b/drivers/net/ethernet/sfc/rx.c
-index 752d521..5ef4cc0 100644
---- a/drivers/net/ethernet/sfc/rx.c
-+++ b/drivers/net/ethernet/sfc/rx.c
-@@ -156,11 +156,10 @@ static int efx_init_rx_buffers_skb(struct efx_rx_queue *rx_queue)
- if (unlikely(!skb))
- return -ENOMEM;
-
-- /* Adjust the SKB for padding and checksum */
-+ /* Adjust the SKB for padding */
- skb_reserve(skb, NET_IP_ALIGN);
- rx_buf->len = skb_len - NET_IP_ALIGN;
- rx_buf->is_page = false;
-- skb->ip_summed = CHECKSUM_UNNECESSARY;
-
- rx_buf->dma_addr = pci_map_single(efx->pci_dev,
- skb->data, rx_buf->len,
-@@ -499,6 +498,7 @@ static void efx_rx_packet_gro(struct efx_channel *channel,
-
- EFX_BUG_ON_PARANOID(!checksummed);
- rx_buf->u.skb = NULL;
-+ skb->ip_summed = CHECKSUM_UNNECESSARY;
-
- gro_result = napi_gro_receive(napi, skb);
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0019-tcp-fix-false-reordering-signal-in-tcp_shifted_skb.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0019-tcp-fix-false-reordering-signal-in-tcp_shifted_skb.patch
deleted file mode 100644
index 7796b7d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0019-tcp-fix-false-reordering-signal-in-tcp_shifted_skb.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-From 201eee97e7d58fbde884394768761fb24229602a Mon Sep 17 00:00:00 2001
-From: Neal Cardwell <ncardwell at google.com>
-Date: Sun, 26 Feb 2012 10:06:19 +0000
-Subject: [PATCH 19/42] tcp: fix false reordering signal in tcp_shifted_skb
-
-[ Upstream commit 4c90d3b30334833450ccbb02f452d4972a3c3c3f ]
-
-When tcp_shifted_skb() shifts bytes from the skb that is currently
-pointed to by 'highest_sack' then the increment of
-TCP_SKB_CB(skb)->seq implicitly advances tcp_highest_sack_seq(). This
-implicit advancement, combined with the recent fix to pass the correct
-SACKed range into tcp_sacktag_one(), caused tcp_sacktag_one() to think
-that the newly SACKed range was before the tcp_highest_sack_seq(),
-leading to a call to tcp_update_reordering() with a degree of
-reordering matching the size of the newly SACKed range (typically just
-1 packet, which is a NOP, but potentially larger).
-
-This commit fixes this by simply calling tcp_sacktag_one() before the
-TCP_SKB_CB(skb)->seq advancement that can advance our notion of the
-highest SACKed sequence.
-
-Correspondingly, we can simplify the code a little now that
-tcp_shifted_skb() should update the lost_cnt_hint in all cases where
-skb == tp->lost_skb_hint.
-
-Signed-off-by: Neal Cardwell <ncardwell at google.com>
-Acked-by: Yuchung Cheng <ycheng at google.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- net/ipv4/tcp_input.c | 18 ++++++++++--------
- 1 file changed, 10 insertions(+), 8 deletions(-)
-
-diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
-index 53113b9..9e32fca 100644
---- a/net/ipv4/tcp_input.c
-+++ b/net/ipv4/tcp_input.c
-@@ -1406,8 +1406,16 @@ static int tcp_shifted_skb(struct sock *sk, struct sk_buff *skb,
-
- BUG_ON(!pcount);
-
-- /* Adjust hint for FACK. Non-FACK is handled in tcp_sacktag_one(). */
-- if (tcp_is_fack(tp) && (skb == tp->lost_skb_hint))
-+ /* Adjust counters and hints for the newly sacked sequence
-+ * range but discard the return value since prev is already
-+ * marked. We must tag the range first because the seq
-+ * advancement below implicitly advances
-+ * tcp_highest_sack_seq() when skb is highest_sack.
-+ */
-+ tcp_sacktag_one(sk, state, TCP_SKB_CB(skb)->sacked,
-+ start_seq, end_seq, dup_sack, pcount);
-+
-+ if (skb == tp->lost_skb_hint)
- tp->lost_cnt_hint += pcount;
-
- TCP_SKB_CB(prev)->end_seq += shifted;
-@@ -1433,12 +1441,6 @@ static int tcp_shifted_skb(struct sock *sk, struct sk_buff *skb,
- skb_shinfo(skb)->gso_type = 0;
- }
-
-- /* Adjust counters and hints for the newly sacked sequence range but
-- * discard the return value since prev is already marked.
-- */
-- tcp_sacktag_one(sk, state, TCP_SKB_CB(skb)->sacked,
-- start_seq, end_seq, dup_sack, pcount);
--
- /* Difference in this won't matter, both ACKed by the same cumul. ACK */
- TCP_SKB_CB(prev)->sacked |= (TCP_SKB_CB(skb)->sacked & TCPCB_EVER_RETRANS);
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0020-vmxnet3-Fix-transport-header-size.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0020-vmxnet3-Fix-transport-header-size.patch
deleted file mode 100644
index 8bcb9ae..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0020-vmxnet3-Fix-transport-header-size.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From 40cfa9924ed2f94482607fc884f1acb414d492b9 Mon Sep 17 00:00:00 2001
-From: Shreyas Bhatewara <sbhatewara at vmware.com>
-Date: Tue, 28 Feb 2012 22:17:38 +0000
-Subject: [PATCH 20/42] vmxnet3: Fix transport header size
-
-[ Upstream commit efead8710aad9e384730ecf25eae0287878840d7 ]
-
-Fix transport header size
-
-Fix the transpoert header size for UDP packets.
-
-Signed-off-by: Shreyas N Bhatewara <sbhatewara at vmware.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/net/vmxnet3/vmxnet3_drv.c | 7 +------
- drivers/net/vmxnet3/vmxnet3_int.h | 4 ++--
- 2 files changed, 3 insertions(+), 8 deletions(-)
-
-diff --git a/drivers/net/vmxnet3/vmxnet3_drv.c b/drivers/net/vmxnet3/vmxnet3_drv.c
-index d96bfb1..d426261 100644
---- a/drivers/net/vmxnet3/vmxnet3_drv.c
-+++ b/drivers/net/vmxnet3/vmxnet3_drv.c
-@@ -830,13 +830,8 @@ vmxnet3_parse_and_copy_hdr(struct sk_buff *skb, struct vmxnet3_tx_queue *tq,
- ctx->l4_hdr_size = ((struct tcphdr *)
- skb_transport_header(skb))->doff * 4;
- else if (iph->protocol == IPPROTO_UDP)
-- /*
-- * Use tcp header size so that bytes to
-- * be copied are more than required by
-- * the device.
-- */
- ctx->l4_hdr_size =
-- sizeof(struct tcphdr);
-+ sizeof(struct udphdr);
- else
- ctx->l4_hdr_size = 0;
- } else {
-diff --git a/drivers/net/vmxnet3/vmxnet3_int.h b/drivers/net/vmxnet3/vmxnet3_int.h
-index b18eac1..8df921b 100644
---- a/drivers/net/vmxnet3/vmxnet3_int.h
-+++ b/drivers/net/vmxnet3/vmxnet3_int.h
-@@ -70,10 +70,10 @@
- /*
- * Version numbers
- */
--#define VMXNET3_DRIVER_VERSION_STRING "1.1.18.0-k"
-+#define VMXNET3_DRIVER_VERSION_STRING "1.1.29.0-k"
-
- /* a 32-bit int, each byte encode a verion number in VMXNET3_DRIVER_VERSION */
--#define VMXNET3_DRIVER_VERSION_NUM 0x01011200
-+#define VMXNET3_DRIVER_VERSION_NUM 0x01011D00
-
- #if defined(CONFIG_PCI_MSI)
- /* RSS only makes sense if MSI-X is supported. */
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0021-packetengines-fix-config-default.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0021-packetengines-fix-config-default.patch
deleted file mode 100644
index 6cfbc55..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0021-packetengines-fix-config-default.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 08a5b2365331981cd769e07182fce70ed50c8b66 Mon Sep 17 00:00:00 2001
-From: stephen hemminger <shemminger at vyatta.com>
-Date: Fri, 2 Mar 2012 13:38:56 +0000
-Subject: [PATCH 21/42] packetengines: fix config default
-
-[ Upstream commit 3f2010b2ad3d66d5291497c9b274315e7b807ecd ]
-
-As part of the big network driver reorg, each vendor directory defaults to
-yes, so that older config's can migrate correctly. Looks like this one
-got missed.
-
-Signed-off-by: Stephen Hemminger <shemminger at vyatta.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/net/ethernet/packetengines/Kconfig | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/net/ethernet/packetengines/Kconfig b/drivers/net/ethernet/packetengines/Kconfig
-index b97132d..8f29feb 100644
---- a/drivers/net/ethernet/packetengines/Kconfig
-+++ b/drivers/net/ethernet/packetengines/Kconfig
-@@ -4,6 +4,7 @@
-
- config NET_PACKET_ENGINE
- bool "Packet Engine devices"
-+ default y
- depends on PCI
- ---help---
- If you have a network (Ethernet) card belonging to this class, say Y
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0022-r8169-corrupted-IP-fragments-fix-for-large-mtu.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0022-r8169-corrupted-IP-fragments-fix-for-large-mtu.patch
deleted file mode 100644
index 497caa4..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0022-r8169-corrupted-IP-fragments-fix-for-large-mtu.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From 87f64e870bbad8d4558ae32ea0152c5e986a5264 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?fran=C3=A7ois=20romieu?= <romieu at fr.zoreil.com>
-Date: Fri, 2 Mar 2012 04:43:14 +0000
-Subject: [PATCH 22/42] r8169: corrupted IP fragments fix for large mtu.
-
-[ Upstream commit 9c5028e9da1255dd2b99762d8627b88b29f68cce ]
-
-Noticed with the 8168d (-vb-gr, aka RTL_GIGA_MAC_VER_26).
-
-ConfigX registers should only be written while the Config9346 lock
-is held.
-
-Signed-off-by: Francois Romieu <romieu at fr.zoreil.com>
-Reported-by: Nick Bowler <nbowler at elliptictech.com>
-Cc: Hayes Wang <hayeswang at realtek.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/net/ethernet/realtek/r8169.c | 8 ++++++++
- 1 file changed, 8 insertions(+)
-
-diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c
-index c8f47f1..0cf2351 100644
---- a/drivers/net/ethernet/realtek/r8169.c
-+++ b/drivers/net/ethernet/realtek/r8169.c
-@@ -3781,12 +3781,20 @@ static void rtl8169_init_ring_indexes(struct rtl8169_private *tp)
-
- static void rtl_hw_jumbo_enable(struct rtl8169_private *tp)
- {
-+ void __iomem *ioaddr = tp->mmio_addr;
-+
-+ RTL_W8(Cfg9346, Cfg9346_Unlock);
- rtl_generic_op(tp, tp->jumbo_ops.enable);
-+ RTL_W8(Cfg9346, Cfg9346_Lock);
- }
-
- static void rtl_hw_jumbo_disable(struct rtl8169_private *tp)
- {
-+ void __iomem *ioaddr = tp->mmio_addr;
-+
-+ RTL_W8(Cfg9346, Cfg9346_Unlock);
- rtl_generic_op(tp, tp->jumbo_ops.disable);
-+ RTL_W8(Cfg9346, Cfg9346_Lock);
- }
-
- static void r8168c_hw_jumbo_enable(struct rtl8169_private *tp)
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0023-tcp-don-t-fragment-SACKed-skbs-in-tcp_mark_head_lost.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0023-tcp-don-t-fragment-SACKed-skbs-in-tcp_mark_head_lost.patch
deleted file mode 100644
index 41a5387..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0023-tcp-don-t-fragment-SACKed-skbs-in-tcp_mark_head_lost.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From c0313fea8fa8ff77714bfdab4eed42ae0785dc37 Mon Sep 17 00:00:00 2001
-From: Neal Cardwell <ncardwell at google.com>
-Date: Fri, 2 Mar 2012 21:36:51 +0000
-Subject: [PATCH 23/42] tcp: don't fragment SACKed skbs in
- tcp_mark_head_lost()
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-[ Upstream commit c0638c247f559e1a16ee79e54df14bca2cb679ea ]
-
-In tcp_mark_head_lost() we should not attempt to fragment a SACKed skb
-to mark the first portion as lost. This is for two primary reasons:
-
-(1) tcp_shifted_skb() coalesces adjacent regions of SACKed skbs. When
-doing this, it preserves the sum of their packet counts in order to
-reflect the real-world dynamics on the wire. But given that skbs can
-have remainders that do not align to MSS boundaries, this packet count
-preservation means that for SACKed skbs there is not necessarily a
-direct linear relationship between tcp_skb_pcount(skb) and
-skb->len. Thus tcp_mark_head_lost()'s previous attempts to fragment
-off and mark as lost a prefix of length (packets - oldcnt)*mss from
-SACKed skbs were leading to occasional failures of the WARN_ON(len >
-skb->len) in tcp_fragment() (which used to be a BUG_ON(); see the
-recent "crash in tcp_fragment" thread on netdev).
-
-(2) there is no real point in fragmenting off part of a SACKed skb and
-calling tcp_skb_mark_lost() on it, since tcp_skb_mark_lost() is a NOP
-for SACKed skbs.
-
-Signed-off-by: Neal Cardwell <ncardwell at google.com>
-Acked-by: Ilpo Järvinen <ilpo.jarvinen at helsinki.fi>
-Acked-by: Yuchung Cheng <ycheng at google.com>
-Acked-by: Nandita Dukkipati <nanditad at google.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- net/ipv4/tcp_input.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
-index 9e32fca..1c774af 100644
---- a/net/ipv4/tcp_input.c
-+++ b/net/ipv4/tcp_input.c
-@@ -2571,6 +2571,7 @@ static void tcp_mark_head_lost(struct sock *sk, int packets, int mark_head)
-
- if (cnt > packets) {
- if ((tcp_is_sack(tp) && !tcp_is_fack(tp)) ||
-+ (TCP_SKB_CB(skb)->sacked & TCPCB_SACKED_ACKED) ||
- (oldcnt >= packets))
- break;
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0024-bridge-check-return-value-of-ipv6_dev_get_saddr.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0024-bridge-check-return-value-of-ipv6_dev_get_saddr.patch
deleted file mode 100644
index 7a05ae2..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0024-bridge-check-return-value-of-ipv6_dev_get_saddr.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 384298df213387fc31905729a5e23e79bc6b8222 Mon Sep 17 00:00:00 2001
-From: Ulrich Weber <ulrich.weber at sophos.com>
-Date: Mon, 5 Mar 2012 04:52:44 +0000
-Subject: [PATCH 24/42] bridge: check return value of ipv6_dev_get_saddr()
-
-[ Upstream commit d1d81d4c3dd886d5fa25a2c4fa1e39cb89613712 ]
-
-otherwise source IPv6 address of ICMPV6_MGM_QUERY packet
-might be random junk if IPv6 is disabled on interface or
-link-local address is not yet ready (DAD).
-
-Signed-off-by: Ulrich Weber <ulrich.weber at sophos.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- net/bridge/br_multicast.c | 7 +++++--
- 1 file changed, 5 insertions(+), 2 deletions(-)
-
-diff --git a/net/bridge/br_multicast.c b/net/bridge/br_multicast.c
-index a5f4e57..8eb6b15 100644
---- a/net/bridge/br_multicast.c
-+++ b/net/bridge/br_multicast.c
-@@ -446,8 +446,11 @@ static struct sk_buff *br_ip6_multicast_alloc_query(struct net_bridge *br,
- ip6h->nexthdr = IPPROTO_HOPOPTS;
- ip6h->hop_limit = 1;
- ipv6_addr_set(&ip6h->daddr, htonl(0xff020000), 0, 0, htonl(1));
-- ipv6_dev_get_saddr(dev_net(br->dev), br->dev, &ip6h->daddr, 0,
-- &ip6h->saddr);
-+ if (ipv6_dev_get_saddr(dev_net(br->dev), br->dev, &ip6h->daddr, 0,
-+ &ip6h->saddr)) {
-+ kfree_skb(skb);
-+ return NULL;
-+ }
- ipv6_eth_mc_map(&ip6h->daddr, eth->h_dest);
-
- hopopt = (u8 *)(ip6h + 1);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0025-tcp-fix-tcp_shift_skb_data-to-not-shift-SACKed-data-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0025-tcp-fix-tcp_shift_skb_data-to-not-shift-SACKed-data-.patch
deleted file mode 100644
index 07ce46b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0025-tcp-fix-tcp_shift_skb_data-to-not-shift-SACKed-data-.patch
+++ /dev/null
@@ -1,89 +0,0 @@
-From c0ebd50aab8d8fa2f98ceb9da54d161f492326e0 Mon Sep 17 00:00:00 2001
-From: Neal Cardwell <ncardwell at google.com>
-Date: Mon, 5 Mar 2012 19:35:04 +0000
-Subject: [PATCH 25/42] tcp: fix tcp_shift_skb_data() to not shift SACKed data
- below snd_una
-
-[ Upstream commit 4648dc97af9d496218a05353b0e442b3dfa6aaab ]
-
-This commit fixes tcp_shift_skb_data() so that it does not shift
-SACKed data below snd_una.
-
-This fixes an issue whose symptoms exactly match reports showing
-tp->sacked_out going negative since 3.3.0-rc4 (see "WARNING: at
-net/ipv4/tcp_input.c:3418" thread on netdev).
-
-Since 2008 (832d11c5cd076abc0aa1eaf7be96c81d1a59ce41)
-tcp_shift_skb_data() had been shifting SACKed ranges that were below
-snd_una. It checked that the *end* of the skb it was about to shift
-from was above snd_una, but did not check that the end of the actual
-shifted range was above snd_una; this commit adds that check.
-
-Shifting SACKed ranges below snd_una is problematic because for such
-ranges tcp_sacktag_one() short-circuits: it does not declare anything
-as SACKed and does not increase sacked_out.
-
-Before the fixes in commits cc9a672ee522d4805495b98680f4a3db5d0a0af9
-and daef52bab1fd26e24e8e9578f8fb33ba1d0cb412, shifting SACKed ranges
-below snd_una happened to work because tcp_shifted_skb() was always
-(incorrectly) passing in to tcp_sacktag_one() an skb whose end_seq
-tcp_shift_skb_data() had already guaranteed was beyond snd_una. Hence
-tcp_sacktag_one() never short-circuited and always increased
-tp->sacked_out in this case.
-
-After those two fixes, my testing has verified that shifting SACKed
-ranges below snd_una could cause tp->sacked_out to go negative with
-the following sequence of events:
-
-(1) tcp_shift_skb_data() sees an skb whose end_seq is beyond snd_una,
- then shifts a prefix of that skb that is below snd_una
-
-(2) tcp_shifted_skb() increments the packet count of the
- already-SACKed prev sk_buff
-
-(3) tcp_sacktag_one() sees the end of the new SACKed range is below
- snd_una, so it short-circuits and doesn't increase tp->sacked_out
-
-(5) tcp_clean_rtx_queue() sees the SACKed skb has been ACKed,
- decrements tp->sacked_out by this "inflated" pcount that was
- missing a matching increase in tp->sacked_out, and hence
- tp->sacked_out underflows to a u32 like 0xFFFFFFFF, which casted
- to s32 is negative.
-
-(6) this leads to the warnings seen in the recent "WARNING: at
- net/ipv4/tcp_input.c:3418" thread on the netdev list; e.g.:
- tcp_input.c:3418 WARN_ON((int)tp->sacked_out < 0);
-
-More generally, I think this bug can be tickled in some cases where
-two or more ACKs from the receiver are lost and then a DSACK arrives
-that is immediately above an existing SACKed skb in the write queue.
-
-This fix changes tcp_shift_skb_data() to abort this sequence at step
-(1) in the scenario above by noticing that the bytes are below snd_una
-and not shifting them.
-
-Signed-off-by: Neal Cardwell <ncardwell at google.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- net/ipv4/tcp_input.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
-index 1c774af..e4d1e4a 100644
---- a/net/ipv4/tcp_input.c
-+++ b/net/ipv4/tcp_input.c
-@@ -1588,6 +1588,10 @@ static struct sk_buff *tcp_shift_skb_data(struct sock *sk, struct sk_buff *skb,
- }
- }
-
-+ /* tcp_sacktag_one() won't SACK-tag ranges below snd_una */
-+ if (!after(TCP_SKB_CB(skb)->seq + len, tp->snd_una))
-+ goto fallback;
-+
- if (!skb_shift(prev, skb, len))
- goto fallback;
- if (!tcp_shifted_skb(sk, skb, state, pcount, len, mss, dup_sack))
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0026-IPv6-Fix-not-join-all-router-mcast-group-when-forwar.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0026-IPv6-Fix-not-join-all-router-mcast-group-when-forwar.patch
deleted file mode 100644
index 048a7e3..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0026-IPv6-Fix-not-join-all-router-mcast-group-when-forwar.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 7ddf7a941aeb1bdb57801edb82c68fae8d40ea75 Mon Sep 17 00:00:00 2001
-From: Li Wei <lw at cn.fujitsu.com>
-Date: Mon, 5 Mar 2012 14:45:17 +0000
-Subject: [PATCH 26/42] IPv6: Fix not join all-router mcast group when
- forwarding set.
-
-[ Upstream commit d6ddef9e641d1229d4ec841dc75ae703171c3e92 ]
-
-When forwarding was set and a new net device is register,
-we need add this device to the all-router mcast group.
-
-Signed-off-by: Li Wei <lw at cn.fujitsu.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- net/ipv6/addrconf.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
-index 836c4ea..a5521c5 100644
---- a/net/ipv6/addrconf.c
-+++ b/net/ipv6/addrconf.c
-@@ -434,6 +434,10 @@ static struct inet6_dev * ipv6_add_dev(struct net_device *dev)
- /* Join all-node multicast group */
- ipv6_dev_mc_inc(dev, &in6addr_linklocal_allnodes);
-
-+ /* Join all-router multicast group if forwarding is set */
-+ if (ndev->cnf.forwarding && dev && (dev->flags & IFF_MULTICAST))
-+ ipv6_dev_mc_inc(dev, &in6addr_linklocal_allrouters);
-+
- return ndev;
- }
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0027-usb-asix-Patch-for-Sitecom-LN-031.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0027-usb-asix-Patch-for-Sitecom-LN-031.patch
deleted file mode 100644
index be2bf82..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0027-usb-asix-Patch-for-Sitecom-LN-031.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 636b06096f3e95adf81e162fdb74ed388c696be1 Mon Sep 17 00:00:00 2001
-From: Joerg Neikes <j.neikes at midlandgate.de>
-Date: Thu, 8 Mar 2012 22:44:03 +0000
-Subject: [PATCH 27/42] usb: asix: Patch for Sitecom LN-031
-
-commit 4e50391968849860dff1aacde358b4eb14aa5127 upstream.
-
-This patch adds support for the Sitecom LN-031 USB adapter with a AX88178 chip.
-
-Added USB id to find correct driver for AX88178 1000 Ethernet adapter.
-
-Signed-off-by: Joerg Neikes <j.neikes at midlandgate.de>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/net/usb/asix.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/drivers/net/usb/asix.c b/drivers/net/usb/asix.c
-index f5e063a..fda4be2 100644
---- a/drivers/net/usb/asix.c
-+++ b/drivers/net/usb/asix.c
-@@ -1595,6 +1595,10 @@ static const struct usb_device_id products [] = {
- USB_DEVICE (0x6189, 0x182d),
- .driver_info = (unsigned long) &ax8817x_info,
- }, {
-+ // Sitecom LN-031 "USB 2.0 10/100/1000 Ethernet adapter"
-+ USB_DEVICE (0x0df6, 0x0056),
-+ .driver_info = (unsigned long) &ax88178_info,
-+}, {
- // corega FEther USB2-TX
- USB_DEVICE (0x07aa, 0x0017),
- .driver_info = (unsigned long) &ax8817x_info,
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0028-regulator-Fix-setting-selector-in-tps6524x-set_volta.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0028-regulator-Fix-setting-selector-in-tps6524x-set_volta.patch
deleted file mode 100644
index 32f16eb..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0028-regulator-Fix-setting-selector-in-tps6524x-set_volta.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 62c35c47cb8ddee3510f8da30768d995d62736ba Mon Sep 17 00:00:00 2001
-From: Axel Lin <axel.lin at gmail.com>
-Date: Thu, 8 Mar 2012 10:02:17 +0800
-Subject: [PATCH 28/42] regulator: Fix setting selector in tps6524x
- set_voltage function
-
-commit f03570cf1709397ebe656608266b44ec772960c2 upstream.
-
-Don't assign the voltage to selector.
-
-Signed-off-by: Axel Lin <axel.lin at gmail.com>
-Signed-off-by: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/regulator/tps6524x-regulator.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/regulator/tps6524x-regulator.c b/drivers/regulator/tps6524x-regulator.c
-index 9166aa0..229b6f4 100644
---- a/drivers/regulator/tps6524x-regulator.c
-+++ b/drivers/regulator/tps6524x-regulator.c
-@@ -481,7 +481,7 @@ static int set_voltage(struct regulator_dev *rdev, int min_uV, int max_uV,
- if (i >= info->n_voltages)
- i = info->n_voltages - 1;
-
-- *selector = info->voltages[i];
-+ *selector = i;
-
- return write_field(hw, &info->voltage, i);
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0029-block-Fix-NULL-pointer-dereference-in-sd_revalidate_.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0029-block-Fix-NULL-pointer-dereference-in-sd_revalidate_.patch
deleted file mode 100644
index 3a4af4b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0029-block-Fix-NULL-pointer-dereference-in-sd_revalidate_.patch
+++ /dev/null
@@ -1,170 +0,0 @@
-From f90fbbb22b2a145c5a3d66a31a46a32bb54ed722 Mon Sep 17 00:00:00 2001
-From: Jun'ichi Nomura <j-nomura at ce.jp.nec.com>
-Date: Fri, 2 Mar 2012 10:38:33 +0100
-Subject: [PATCH 29/42] block: Fix NULL pointer dereference in
- sd_revalidate_disk
-
-commit fe316bf2d5847bc5dd975668671a7b1067603bc7 upstream.
-
-Since 2.6.39 (1196f8b), when a driver returns -ENOMEDIUM for open(),
-__blkdev_get() calls rescan_partitions() to remove
-in-kernel partition structures and raise KOBJ_CHANGE uevent.
-
-However it ends up calling driver's revalidate_disk without open
-and could cause oops.
-
-In the case of SCSI:
-
- process A process B
- ----------------------------------------------
- sys_open
- __blkdev_get
- sd_open
- returns -ENOMEDIUM
- scsi_remove_device
- <scsi_device torn down>
- rescan_partitions
- sd_revalidate_disk
- <oops>
-Oopses are reported here:
-http://marc.info/?l=linux-scsi&m=132388619710052
-
-This patch separates the partition invalidation from rescan_partitions()
-and use it for -ENOMEDIUM case.
-
-Reported-by: Huajun Li <huajun.li.lee at gmail.com>
-Signed-off-by: Jun'ichi Nomura <j-nomura at ce.jp.nec.com>
-Acked-by: Tejun Heo <tj at kernel.org>
-Signed-off-by: Jens Axboe <axboe at kernel.dk>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/block_dev.c | 16 ++++++++++++----
- fs/partitions/check.c | 48 ++++++++++++++++++++++++++++++++++++++++--------
- include/linux/genhd.h | 1 +
- 3 files changed, 53 insertions(+), 12 deletions(-)
-
-diff --git a/fs/block_dev.c b/fs/block_dev.c
-index b07f1da..abe9b48 100644
---- a/fs/block_dev.c
-+++ b/fs/block_dev.c
-@@ -1159,8 +1159,12 @@ static int __blkdev_get(struct block_device *bdev, fmode_t mode, int for_part)
- * The latter is necessary to prevent ghost
- * partitions on a removed medium.
- */
-- if (bdev->bd_invalidated && (!ret || ret == -ENOMEDIUM))
-- rescan_partitions(disk, bdev);
-+ if (bdev->bd_invalidated) {
-+ if (!ret)
-+ rescan_partitions(disk, bdev);
-+ else if (ret == -ENOMEDIUM)
-+ invalidate_partitions(disk, bdev);
-+ }
- if (ret)
- goto out_clear;
- } else {
-@@ -1190,8 +1194,12 @@ static int __blkdev_get(struct block_device *bdev, fmode_t mode, int for_part)
- if (bdev->bd_disk->fops->open)
- ret = bdev->bd_disk->fops->open(bdev, mode);
- /* the same as first opener case, read comment there */
-- if (bdev->bd_invalidated && (!ret || ret == -ENOMEDIUM))
-- rescan_partitions(bdev->bd_disk, bdev);
-+ if (bdev->bd_invalidated) {
-+ if (!ret)
-+ rescan_partitions(bdev->bd_disk, bdev);
-+ else if (ret == -ENOMEDIUM)
-+ invalidate_partitions(bdev->bd_disk, bdev);
-+ }
- if (ret)
- goto out_unlock_bdev;
- }
-diff --git a/fs/partitions/check.c b/fs/partitions/check.c
-index e3c63d1..6b5fcc5 100644
---- a/fs/partitions/check.c
-+++ b/fs/partitions/check.c
-@@ -539,17 +539,11 @@ static bool disk_unlock_native_capacity(struct gendisk *disk)
- }
- }
-
--int rescan_partitions(struct gendisk *disk, struct block_device *bdev)
-+static int drop_partitions(struct gendisk *disk, struct block_device *bdev)
- {
-- struct parsed_partitions *state = NULL;
- struct disk_part_iter piter;
- struct hd_struct *part;
-- int p, highest, res;
--rescan:
-- if (state && !IS_ERR(state)) {
-- kfree(state);
-- state = NULL;
-- }
-+ int res;
-
- if (bdev->bd_part_count)
- return -EBUSY;
-@@ -562,6 +556,24 @@ rescan:
- delete_partition(disk, part->partno);
- disk_part_iter_exit(&piter);
-
-+ return 0;
-+}
-+
-+int rescan_partitions(struct gendisk *disk, struct block_device *bdev)
-+{
-+ struct parsed_partitions *state = NULL;
-+ struct hd_struct *part;
-+ int p, highest, res;
-+rescan:
-+ if (state && !IS_ERR(state)) {
-+ kfree(state);
-+ state = NULL;
-+ }
-+
-+ res = drop_partitions(disk, bdev);
-+ if (res)
-+ return res;
-+
- if (disk->fops->revalidate_disk)
- disk->fops->revalidate_disk(disk);
- check_disk_size_change(disk, bdev);
-@@ -665,6 +677,26 @@ rescan:
- return 0;
- }
-
-+int invalidate_partitions(struct gendisk *disk, struct block_device *bdev)
-+{
-+ int res;
-+
-+ if (!bdev->bd_invalidated)
-+ return 0;
-+
-+ res = drop_partitions(disk, bdev);
-+ if (res)
-+ return res;
-+
-+ set_capacity(disk, 0);
-+ check_disk_size_change(disk, bdev);
-+ bdev->bd_invalidated = 0;
-+ /* tell userspace that the media / partition table may have changed */
-+ kobject_uevent(&disk_to_dev(disk)->kobj, KOBJ_CHANGE);
-+
-+ return 0;
-+}
-+
- unsigned char *read_dev_sector(struct block_device *bdev, sector_t n, Sector *p)
- {
- struct address_space *mapping = bdev->bd_inode->i_mapping;
-diff --git a/include/linux/genhd.h b/include/linux/genhd.h
-index 6d18f35..c6f7f6a 100644
---- a/include/linux/genhd.h
-+++ b/include/linux/genhd.h
-@@ -596,6 +596,7 @@ extern char *disk_name (struct gendisk *hd, int partno, char *buf);
-
- extern int disk_expand_part_tbl(struct gendisk *disk, int target);
- extern int rescan_partitions(struct gendisk *disk, struct block_device *bdev);
-+extern int invalidate_partitions(struct gendisk *disk, struct block_device *bdev);
- extern struct hd_struct * __must_check add_partition(struct gendisk *disk,
- int partno, sector_t start,
- sector_t len, int flags,
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0030-block-sx8-fix-pointer-math-issue-getting-fw-version.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0030-block-sx8-fix-pointer-math-issue-getting-fw-version.patch
deleted file mode 100644
index 0ed858c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0030-block-sx8-fix-pointer-math-issue-getting-fw-version.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 5a399c9c3325b2a72d3bf522b7e1b0fa48954d96 Mon Sep 17 00:00:00 2001
-From: Dan Carpenter <dan.carpenter at oracle.com>
-Date: Sat, 3 Mar 2012 12:09:17 +0100
-Subject: [PATCH 30/42] block, sx8: fix pointer math issue getting fw version
-
-commit ea5f4db8ece896c2ab9eafa0924148a2596c52e4 upstream.
-
-"mem" is type u8. We need parenthesis here or it screws up the pointer
-math probably leading to an oops.
-
-Signed-off-by: Dan Carpenter <dan.carpenter at oracle.com>
-Acked-by: Jeff Garzik <jgarzik at redhat.com>
-Signed-off-by: Jens Axboe <axboe at kernel.dk>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/block/sx8.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/block/sx8.c b/drivers/block/sx8.c
-index b70f0fc..eec7b7a 100644
---- a/drivers/block/sx8.c
-+++ b/drivers/block/sx8.c
-@@ -1116,7 +1116,7 @@ static inline void carm_handle_resp(struct carm_host *host,
- break;
- case MISC_GET_FW_VER: {
- struct carm_fw_ver *ver = (struct carm_fw_ver *)
-- mem + sizeof(struct carm_msg_get_fw_ver);
-+ (mem + sizeof(struct carm_msg_get_fw_ver));
- if (!error) {
- host->fw_ver = le32_to_cpu(ver->version);
- host->flags |= (ver->features & FL_FW_VER_MASK);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0031-block-fix-__blkdev_get-and-add_disk-race-condition.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0031-block-fix-__blkdev_get-and-add_disk-race-condition.patch
deleted file mode 100644
index 4a08d31..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0031-block-fix-__blkdev_get-and-add_disk-race-condition.patch
+++ /dev/null
@@ -1,163 +0,0 @@
-From 365dff776f2730d8aa79bb2d4cec1abcca4d30fd Mon Sep 17 00:00:00 2001
-From: Stanislaw Gruszka <sgruszka at redhat.com>
-Date: Fri, 2 Mar 2012 10:43:28 +0100
-Subject: [PATCH 31/42] block: fix __blkdev_get and add_disk race condition
-
-commit 9f53d2fe815b4011ff930a7b6db98385d45faa68 upstream.
-
-The following situation might occur:
-
-__blkdev_get: add_disk:
-
- register_disk()
-get_gendisk()
-
-disk_block_events()
- disk->ev == NULL
-
- disk_add_events()
-
-__disk_unblock_events()
- disk->ev != NULL
- --ev->block
-
-Then we unblock events, when they are suppose to be blocked. This can
-trigger events related block/genhd.c warnings, but also can crash in
-sd_check_events() or other places.
-
-I'm able to reproduce crashes with the following scripts (with
-connected usb dongle as sdb disk).
-
-<snip>
-DEV=/dev/sdb
-ENABLE=/sys/bus/usb/devices/1-2/bConfigurationValue
-
-function stop_me()
-{
- for i in `jobs -p` ; do kill $i 2> /dev/null ; done
- exit
-}
-
-trap stop_me SIGHUP SIGINT SIGTERM
-
-for ((i = 0; i < 10; i++)) ; do
- while true; do fdisk -l $DEV 2>&1 > /dev/null ; done &
-done
-
-while true ; do
-echo 1 > $ENABLE
-sleep 1
-echo 0 > $ENABLE
-done
-</snip>
-
-I use the script to verify patch fixing oops in sd_revalidate_disk
-http://marc.info/?l=linux-scsi&m=132935572512352&w=2
-Without Jun'ichi Nomura patch titled "Fix NULL pointer dereference in
-sd_revalidate_disk" or this one, script easily crash kernel within
-a few seconds. With both patches applied I do not observe crash.
-Unfortunately after some time (dozen of minutes), script will hung in:
-
-[ 1563.906432] [<c08354f5>] schedule_timeout_uninterruptible+0x15/0x20
-[ 1563.906437] [<c04532d5>] msleep+0x15/0x20
-[ 1563.906443] [<c05d60b2>] blk_drain_queue+0x32/0xd0
-[ 1563.906447] [<c05d6e00>] blk_cleanup_queue+0xd0/0x170
-[ 1563.906454] [<c06d278f>] scsi_free_queue+0x3f/0x60
-[ 1563.906459] [<c06d7e6e>] __scsi_remove_device+0x6e/0xb0
-[ 1563.906463] [<c06d4aff>] scsi_forget_host+0x4f/0x60
-[ 1563.906468] [<c06cd84a>] scsi_remove_host+0x5a/0xf0
-[ 1563.906482] [<f7f030fb>] quiesce_and_remove_host+0x5b/0xa0 [usb_storage]
-[ 1563.906490] [<f7f03203>] usb_stor_disconnect+0x13/0x20 [usb_storage]
-
-Anyway I think this patch is some step forward.
-
-As drawback, I do not teardown on sysfs file create error, because I do
-not know how to nullify disk->ev (since it can be used). However add_disk
-error handling practically does not exist too, and things will work
-without this sysfs file, except events will not be exported to user
-space.
-
-Signed-off-by: Stanislaw Gruszka <sgruszka at redhat.com>
-Acked-by: Tejun Heo <tj at kernel.org>
-Signed-off-by: Jens Axboe <axboe at kernel.dk>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- block/genhd.c | 32 +++++++++++++++++++-------------
- 1 file changed, 19 insertions(+), 13 deletions(-)
-
-diff --git a/block/genhd.c b/block/genhd.c
-index 02e9fca..9db720d 100644
---- a/block/genhd.c
-+++ b/block/genhd.c
-@@ -36,6 +36,7 @@ static DEFINE_IDR(ext_devt_idr);
-
- static struct device_type disk_type;
-
-+static void disk_alloc_events(struct gendisk *disk);
- static void disk_add_events(struct gendisk *disk);
- static void disk_del_events(struct gendisk *disk);
- static void disk_release_events(struct gendisk *disk);
-@@ -602,6 +603,8 @@ void add_disk(struct gendisk *disk)
- disk->major = MAJOR(devt);
- disk->first_minor = MINOR(devt);
-
-+ disk_alloc_events(disk);
-+
- /* Register BDI before referencing it from bdev */
- bdi = &disk->queue->backing_dev_info;
- bdi_register_dev(bdi, disk_devt(disk));
-@@ -1734,9 +1737,9 @@ module_param_cb(events_dfl_poll_msecs, &disk_events_dfl_poll_msecs_param_ops,
- &disk_events_dfl_poll_msecs, 0644);
-
- /*
-- * disk_{add|del|release}_events - initialize and destroy disk_events.
-+ * disk_{alloc|add|del|release}_events - initialize and destroy disk_events.
- */
--static void disk_add_events(struct gendisk *disk)
-+static void disk_alloc_events(struct gendisk *disk)
- {
- struct disk_events *ev;
-
-@@ -1749,16 +1752,6 @@ static void disk_add_events(struct gendisk *disk)
- return;
- }
-
-- if (sysfs_create_files(&disk_to_dev(disk)->kobj,
-- disk_events_attrs) < 0) {
-- pr_warn("%s: failed to create sysfs files for events\n",
-- disk->disk_name);
-- kfree(ev);
-- return;
-- }
--
-- disk->ev = ev;
--
- INIT_LIST_HEAD(&ev->node);
- ev->disk = disk;
- spin_lock_init(&ev->lock);
-@@ -1767,8 +1760,21 @@ static void disk_add_events(struct gendisk *disk)
- ev->poll_msecs = -1;
- INIT_DELAYED_WORK(&ev->dwork, disk_events_workfn);
-
-+ disk->ev = ev;
-+}
-+
-+static void disk_add_events(struct gendisk *disk)
-+{
-+ if (!disk->ev)
-+ return;
-+
-+ /* FIXME: error handling */
-+ if (sysfs_create_files(&disk_to_dev(disk)->kobj, disk_events_attrs) < 0)
-+ pr_warn("%s: failed to create sysfs files for events\n",
-+ disk->disk_name);
-+
- mutex_lock(&disk_events_mutex);
-- list_add_tail(&ev->node, &disk_events);
-+ list_add_tail(&disk->ev->node, &disk_events);
- mutex_unlock(&disk_events_mutex);
-
- /*
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0032-Block-use-a-freezable-workqueue-for-disk-event-polli.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0032-Block-use-a-freezable-workqueue-for-disk-event-polli.patch
deleted file mode 100644
index de8f4c9..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0032-Block-use-a-freezable-workqueue-for-disk-event-polli.patch
+++ /dev/null
@@ -1,129 +0,0 @@
-From 21816a3fe95d2536991ece0a71609d8c22f8af9d Mon Sep 17 00:00:00 2001
-From: Alan Stern <stern at rowland.harvard.edu>
-Date: Fri, 2 Mar 2012 10:51:00 +0100
-Subject: [PATCH 32/42] Block: use a freezable workqueue for disk-event
- polling
-
-commit 62d3c5439c534b0e6c653fc63e6d8c67be3a57b1 upstream.
-
-This patch (as1519) fixes a bug in the block layer's disk-events
-polling. The polling is done by a work routine queued on the
-system_nrt_wq workqueue. Since that workqueue isn't freezable, the
-polling continues even in the middle of a system sleep transition.
-
-Obviously, polling a suspended drive for media changes and such isn't
-a good thing to do; in the case of USB mass-storage devices it can
-lead to real problems requiring device resets and even re-enumeration.
-
-The patch fixes things by creating a new system-wide, non-reentrant,
-freezable workqueue and using it for disk-events polling.
-
-Signed-off-by: Alan Stern <stern at rowland.harvard.edu>
-Acked-by: Tejun Heo <tj at kernel.org>
-Acked-by: Rafael J. Wysocki <rjw at sisk.pl>
-Signed-off-by: Jens Axboe <axboe at kernel.dk>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- block/genhd.c | 10 +++++-----
- include/linux/workqueue.h | 4 ++++
- kernel/workqueue.c | 7 ++++++-
- 3 files changed, 15 insertions(+), 6 deletions(-)
-
-diff --git a/block/genhd.c b/block/genhd.c
-index 9db720d..997afd6 100644
---- a/block/genhd.c
-+++ b/block/genhd.c
-@@ -1479,9 +1479,9 @@ static void __disk_unblock_events(struct gendisk *disk, bool check_now)
- intv = disk_events_poll_jiffies(disk);
- set_timer_slack(&ev->dwork.timer, intv / 4);
- if (check_now)
-- queue_delayed_work(system_nrt_wq, &ev->dwork, 0);
-+ queue_delayed_work(system_nrt_freezable_wq, &ev->dwork, 0);
- else if (intv)
-- queue_delayed_work(system_nrt_wq, &ev->dwork, intv);
-+ queue_delayed_work(system_nrt_freezable_wq, &ev->dwork, intv);
- out_unlock:
- spin_unlock_irqrestore(&ev->lock, flags);
- }
-@@ -1525,7 +1525,7 @@ void disk_flush_events(struct gendisk *disk, unsigned int mask)
- ev->clearing |= mask;
- if (!ev->block) {
- cancel_delayed_work(&ev->dwork);
-- queue_delayed_work(system_nrt_wq, &ev->dwork, 0);
-+ queue_delayed_work(system_nrt_freezable_wq, &ev->dwork, 0);
- }
- spin_unlock_irq(&ev->lock);
- }
-@@ -1562,7 +1562,7 @@ unsigned int disk_clear_events(struct gendisk *disk, unsigned int mask)
-
- /* uncondtionally schedule event check and wait for it to finish */
- disk_block_events(disk);
-- queue_delayed_work(system_nrt_wq, &ev->dwork, 0);
-+ queue_delayed_work(system_nrt_freezable_wq, &ev->dwork, 0);
- flush_delayed_work(&ev->dwork);
- __disk_unblock_events(disk, false);
-
-@@ -1599,7 +1599,7 @@ static void disk_events_workfn(struct work_struct *work)
-
- intv = disk_events_poll_jiffies(disk);
- if (!ev->block && intv)
-- queue_delayed_work(system_nrt_wq, &ev->dwork, intv);
-+ queue_delayed_work(system_nrt_freezable_wq, &ev->dwork, intv);
-
- spin_unlock_irq(&ev->lock);
-
-diff --git a/include/linux/workqueue.h b/include/linux/workqueue.h
-index 0d556de..e228ca9 100644
---- a/include/linux/workqueue.h
-+++ b/include/linux/workqueue.h
-@@ -289,12 +289,16 @@ enum {
- *
- * system_freezable_wq is equivalent to system_wq except that it's
- * freezable.
-+ *
-+ * system_nrt_freezable_wq is equivalent to system_nrt_wq except that
-+ * it's freezable.
- */
- extern struct workqueue_struct *system_wq;
- extern struct workqueue_struct *system_long_wq;
- extern struct workqueue_struct *system_nrt_wq;
- extern struct workqueue_struct *system_unbound_wq;
- extern struct workqueue_struct *system_freezable_wq;
-+extern struct workqueue_struct *system_nrt_freezable_wq;
-
- extern struct workqueue_struct *
- __alloc_workqueue_key(const char *name, unsigned int flags, int max_active,
-diff --git a/kernel/workqueue.c b/kernel/workqueue.c
-index 42fa9ad..bb425b1 100644
---- a/kernel/workqueue.c
-+++ b/kernel/workqueue.c
-@@ -253,11 +253,13 @@ struct workqueue_struct *system_long_wq __read_mostly;
- struct workqueue_struct *system_nrt_wq __read_mostly;
- struct workqueue_struct *system_unbound_wq __read_mostly;
- struct workqueue_struct *system_freezable_wq __read_mostly;
-+struct workqueue_struct *system_nrt_freezable_wq __read_mostly;
- EXPORT_SYMBOL_GPL(system_wq);
- EXPORT_SYMBOL_GPL(system_long_wq);
- EXPORT_SYMBOL_GPL(system_nrt_wq);
- EXPORT_SYMBOL_GPL(system_unbound_wq);
- EXPORT_SYMBOL_GPL(system_freezable_wq);
-+EXPORT_SYMBOL_GPL(system_nrt_freezable_wq);
-
- #define CREATE_TRACE_POINTS
- #include <trace/events/workqueue.h>
-@@ -3821,8 +3823,11 @@ static int __init init_workqueues(void)
- WQ_UNBOUND_MAX_ACTIVE);
- system_freezable_wq = alloc_workqueue("events_freezable",
- WQ_FREEZABLE, 0);
-+ system_nrt_freezable_wq = alloc_workqueue("events_nrt_freezable",
-+ WQ_NON_REENTRANT | WQ_FREEZABLE, 0);
- BUG_ON(!system_wq || !system_long_wq || !system_nrt_wq ||
-- !system_unbound_wq || !system_freezable_wq);
-+ !system_unbound_wq || !system_freezable_wq ||
-+ !system_nrt_freezable_wq);
- return 0;
- }
- early_initcall(init_workqueues);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0033-sparc32-Add-Av8-to-assembler-command-line.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0033-sparc32-Add-Av8-to-assembler-command-line.patch
deleted file mode 100644
index 7807d73..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0033-sparc32-Add-Av8-to-assembler-command-line.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 80a069c15be0297948b3075c0e691832b9241187 Mon Sep 17 00:00:00 2001
-From: "David S. Miller" <davem at davemloft.net>
-Date: Tue, 13 Mar 2012 18:19:51 -0700
-Subject: [PATCH 33/42] sparc32: Add -Av8 to assembler command line.
-
-commit e0adb9902fb338a9fe634c3c2a3e474075c733ba upstream.
-
-Newer version of binutils are more strict about specifying the
-correct options to enable certain classes of instructions.
-
-The sparc32 build is done for v7 in order to support sun4c systems
-which lack hardware integer multiply and divide instructions.
-
-So we have to pass -Av8 when building the assembler routines that
-use these instructions and get patched into the kernel when we find
-out that we have a v8 capable cpu.
-
-Reported-by: Paul Gortmaker <paul.gortmaker at windriver.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/sparc/Makefile | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/arch/sparc/Makefile b/arch/sparc/Makefile
-index ad1fb5d..eddcfb3 100644
---- a/arch/sparc/Makefile
-+++ b/arch/sparc/Makefile
-@@ -31,7 +31,7 @@ UTS_MACHINE := sparc
-
- #KBUILD_CFLAGS += -g -pipe -fcall-used-g5 -fcall-used-g7
- KBUILD_CFLAGS += -m32 -pipe -mno-fpu -fcall-used-g5 -fcall-used-g7
--KBUILD_AFLAGS += -m32
-+KBUILD_AFLAGS += -m32 -Wa,-Av8
-
- #LDFLAGS_vmlinux = -N -Ttext 0xf0004000
- # Since 2.5.40, the first stage is left not btfix-ed.
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0034-hwmon-w83627ehf-Fix-writing-into-fan_stop_time-for-N.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0034-hwmon-w83627ehf-Fix-writing-into-fan_stop_time-for-N.patch
deleted file mode 100644
index 0fb2aca..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0034-hwmon-w83627ehf-Fix-writing-into-fan_stop_time-for-N.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 0cf88be2891cd60ef2f132c0eb55cb5334b6439d Mon Sep 17 00:00:00 2001
-From: Guenter Roeck <linux at roeck-us.net>
-Date: Mon, 12 Mar 2012 08:21:16 -0700
-Subject: [PATCH 34/42] hwmon: (w83627ehf) Fix writing into fan_stop_time for
- NCT6775F/NCT6776F
-
-commit 33fa9b620409edfc71aa6cf01a51f990fbe46ab8 upstream.
-
-NCT6775F and NCT6776F have their own set of registers for FAN_STOP_TIME. The
-correct registers were used to read FAN_STOP_TIME, but writes used the wrong
-registers. Fix it.
-
-Signed-off-by: Guenter Roeck <linux at roeck-us.net>
-Acked-by: Jean Delvare <khali at linux-fr.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/hwmon/w83627ehf.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/hwmon/w83627ehf.c b/drivers/hwmon/w83627ehf.c
-index c25387d..7a44a56 100644
---- a/drivers/hwmon/w83627ehf.c
-+++ b/drivers/hwmon/w83627ehf.c
-@@ -1607,7 +1607,7 @@ store_##reg(struct device *dev, struct device_attribute *attr, \
- val = step_time_to_reg(val, data->pwm_mode[nr]); \
- mutex_lock(&data->update_lock); \
- data->reg[nr] = val; \
-- w83627ehf_write_value(data, W83627EHF_REG_##REG[nr], val); \
-+ w83627ehf_write_value(data, data->REG_##REG[nr], val); \
- mutex_unlock(&data->update_lock); \
- return count; \
- } \
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0035-hwmon-w83627ehf-Fix-memory-leak-in-probe-function.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0035-hwmon-w83627ehf-Fix-memory-leak-in-probe-function.patch
deleted file mode 100644
index 0df8c38..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0035-hwmon-w83627ehf-Fix-memory-leak-in-probe-function.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From 61fa0a2298850898c90ce67bb0b9b440c452820a Mon Sep 17 00:00:00 2001
-From: Guenter Roeck <linux at roeck-us.net>
-Date: Mon, 12 Mar 2012 08:33:10 -0700
-Subject: [PATCH 35/42] hwmon: (w83627ehf) Fix memory leak in probe function
-
-commit 32260d94408c553dca4ce54104edf79941a27536 upstream.
-
-The driver probe function leaked memory if creating the cpu0_vid attribute file
-failed. Fix by converting the driver to use devm_kzalloc.
-
-Signed-off-by: Guenter Roeck <linux at roeck-us.net>
-Acked-by: Jean Delvare <khali at linux-fr.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/hwmon/w83627ehf.c | 7 +++----
- 1 file changed, 3 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/hwmon/w83627ehf.c b/drivers/hwmon/w83627ehf.c
-index 7a44a56..3ffa1fa 100644
---- a/drivers/hwmon/w83627ehf.c
-+++ b/drivers/hwmon/w83627ehf.c
-@@ -2004,7 +2004,8 @@ static int __devinit w83627ehf_probe(struct platform_device *pdev)
- goto exit;
- }
-
-- data = kzalloc(sizeof(struct w83627ehf_data), GFP_KERNEL);
-+ data = devm_kzalloc(&pdev->dev, sizeof(struct w83627ehf_data),
-+ GFP_KERNEL);
- if (!data) {
- err = -ENOMEM;
- goto exit_release;
-@@ -2498,9 +2499,8 @@ static int __devinit w83627ehf_probe(struct platform_device *pdev)
-
- exit_remove:
- w83627ehf_device_remove_files(dev);
-- kfree(data);
-- platform_set_drvdata(pdev, NULL);
- exit_release:
-+ platform_set_drvdata(pdev, NULL);
- release_region(res->start, IOREGION_LENGTH);
- exit:
- return err;
-@@ -2514,7 +2514,6 @@ static int __devexit w83627ehf_remove(struct platform_device *pdev)
- w83627ehf_device_remove_files(&pdev->dev);
- release_region(data->addr, IOREGION_LENGTH);
- platform_set_drvdata(pdev, NULL);
-- kfree(data);
-
- return 0;
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0036-hwmon-w83627ehf-Fix-temp2-source-for-W83627UHG.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0036-hwmon-w83627ehf-Fix-temp2-source-for-W83627UHG.patch
deleted file mode 100644
index 40044dd..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0036-hwmon-w83627ehf-Fix-temp2-source-for-W83627UHG.patch
+++ /dev/null
@@ -1,69 +0,0 @@
-From 9a7969b58bd5d4f2c05fefa4143f244ccb5b06ab Mon Sep 17 00:00:00 2001
-From: Jean Delvare <khali at linux-fr.org>
-Date: Tue, 13 Mar 2012 04:03:27 -0400
-Subject: [PATCH 36/42] hwmon: (w83627ehf) Fix temp2 source for W83627UHG
-
-commit aacb6b0052692c72fe0cb94c6b547202def6ef46 upstream.
-
-Properly set the source of temp2 for the W83627UHG. Also fix a
-comment right before that, and document the W83627UHG as reporting up
-to 3 temperatures.
-
-Signed-off-by: Jean Delvare <khali at linux-fr.org>
-Cc: Guenter Roeck <guenter.roeck at ericsson.com>
-Signed-off-by: Guenter Roeck <guenter.roeck at ericsson.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- Documentation/hwmon/w83627ehf | 2 +-
- drivers/hwmon/w83627ehf.c | 8 ++++----
- 2 files changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/Documentation/hwmon/w83627ehf b/Documentation/hwmon/w83627ehf
-index 3f44dbd..75f3155 100644
---- a/Documentation/hwmon/w83627ehf
-+++ b/Documentation/hwmon/w83627ehf
-@@ -50,7 +50,7 @@ W83627DHG, W83627DHG-P, W83627UHG, W83667HG, W83667HG-B, W83667HG-I
- (NCT6775F), and NCT6776F super I/O chips. We will refer to them collectively
- as Winbond chips.
-
--The chips implement 2 to 4 temperature sensors (9 for NCT6775F and NCT6776F),
-+The chips implement 3 to 4 temperature sensors (9 for NCT6775F and NCT6776F),
- 2 to 5 fan rotation speed sensors, 8 to 10 analog voltage sensors, one VID
- (except for 627UHG), alarms with beep warnings (control unimplemented),
- and some automatic fan regulation strategies (plus manual fan control mode).
-diff --git a/drivers/hwmon/w83627ehf.c b/drivers/hwmon/w83627ehf.c
-index 3ffa1fa..ceaec92 100644
---- a/drivers/hwmon/w83627ehf.c
-+++ b/drivers/hwmon/w83627ehf.c
-@@ -39,7 +39,7 @@
- 0x8860 0xa1
- w83627dhg 9 5 4 3 0xa020 0xc1 0x5ca3
- w83627dhg-p 9 5 4 3 0xb070 0xc1 0x5ca3
-- w83627uhg 8 2 2 2 0xa230 0xc1 0x5ca3
-+ w83627uhg 8 2 2 3 0xa230 0xc1 0x5ca3
- w83667hg 9 5 3 3 0xa510 0xc1 0x5ca3
- w83667hg-b 9 5 3 4 0xb350 0xc1 0x5ca3
- nct6775f 9 4 3 9 0xb470 0xc1 0x5ca3
-@@ -2158,16 +2158,16 @@ static int __devinit w83627ehf_probe(struct platform_device *pdev)
- w83627ehf_set_temp_reg_ehf(data, 3);
-
- /*
-- * Temperature sources for temp1 and temp2 are selected with
-+ * Temperature sources for temp2 and temp3 are selected with
- * bank 0, registers 0x49 and 0x4a.
- */
- data->temp_src[0] = 0; /* SYSTIN */
- reg = w83627ehf_read_value(data, 0x49) & 0x07;
- /* Adjust to have the same mapping as other source registers */
- if (reg == 0)
-- data->temp_src[1]++;
-+ data->temp_src[1] = 1;
- else if (reg >= 2 && reg <= 5)
-- data->temp_src[1] += 2;
-+ data->temp_src[1] = reg + 2;
- else /* should never happen */
- data->have_temp &= ~(1 << 1);
- reg = w83627ehf_read_value(data, 0x4a);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0037-rapidio-tsi721-fix-bug-in-register-offset-definition.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0037-rapidio-tsi721-fix-bug-in-register-offset-definition.patch
deleted file mode 100644
index 4f59e54..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0037-rapidio-tsi721-fix-bug-in-register-offset-definition.patch
+++ /dev/null
@@ -1,103 +0,0 @@
-From 4998c8b933c68ede83d8c017928a6666d26b42de Mon Sep 17 00:00:00 2001
-From: Alexandre Bounine <alexandre.bounine at idt.com>
-Date: Thu, 15 Mar 2012 15:17:09 -0700
-Subject: [PATCH 37/42] rapidio/tsi721: fix bug in register offset definitions
-
-commit 9bbad7da76b3dd578fb55c862624366a8c9ccd22 upstream.
-
-Fix indexed register offset definitions that use decimal (wrong) instead
-of hexadecimal (correct) notation for indexing multipliers.
-
-Incorrect definitions do not affect Tsi721 driver in its current default
-configuration because it uses only IDB queue 0. Loss of inbound
-doorbell functionality should be observed if queue other than 0 is used.
-
-Signed-off-by: Alexandre Bounine <alexandre.bounine at idt.com>
-Cc: Matt Porter <mporter at kernel.crashing.org>
-Cc: Chul Kim <chul.kim at idt.com>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/rapidio/devices/tsi721.h | 30 +++++++++++++++---------------
- 1 file changed, 15 insertions(+), 15 deletions(-)
-
-diff --git a/drivers/rapidio/devices/tsi721.h b/drivers/rapidio/devices/tsi721.h
-index 822e54c..1c226b3 100644
---- a/drivers/rapidio/devices/tsi721.h
-+++ b/drivers/rapidio/devices/tsi721.h
-@@ -118,34 +118,34 @@
-
- #define TSI721_IDB_ENTRY_SIZE 64
-
--#define TSI721_IDQ_CTL(x) (0x20000 + (x) * 1000)
-+#define TSI721_IDQ_CTL(x) (0x20000 + (x) * 0x1000)
- #define TSI721_IDQ_SUSPEND 0x00000002
- #define TSI721_IDQ_INIT 0x00000001
-
--#define TSI721_IDQ_STS(x) (0x20004 + (x) * 1000)
-+#define TSI721_IDQ_STS(x) (0x20004 + (x) * 0x1000)
- #define TSI721_IDQ_RUN 0x00200000
-
--#define TSI721_IDQ_MASK(x) (0x20008 + (x) * 1000)
-+#define TSI721_IDQ_MASK(x) (0x20008 + (x) * 0x1000)
- #define TSI721_IDQ_MASK_MASK 0xffff0000
- #define TSI721_IDQ_MASK_PATT 0x0000ffff
-
--#define TSI721_IDQ_RP(x) (0x2000c + (x) * 1000)
-+#define TSI721_IDQ_RP(x) (0x2000c + (x) * 0x1000)
- #define TSI721_IDQ_RP_PTR 0x0007ffff
-
--#define TSI721_IDQ_WP(x) (0x20010 + (x) * 1000)
-+#define TSI721_IDQ_WP(x) (0x20010 + (x) * 0x1000)
- #define TSI721_IDQ_WP_PTR 0x0007ffff
-
--#define TSI721_IDQ_BASEL(x) (0x20014 + (x) * 1000)
-+#define TSI721_IDQ_BASEL(x) (0x20014 + (x) * 0x1000)
- #define TSI721_IDQ_BASEL_ADDR 0xffffffc0
--#define TSI721_IDQ_BASEU(x) (0x20018 + (x) * 1000)
--#define TSI721_IDQ_SIZE(x) (0x2001c + (x) * 1000)
-+#define TSI721_IDQ_BASEU(x) (0x20018 + (x) * 0x1000)
-+#define TSI721_IDQ_SIZE(x) (0x2001c + (x) * 0x1000)
- #define TSI721_IDQ_SIZE_VAL(size) (__fls(size) - 4)
- #define TSI721_IDQ_SIZE_MIN 512
- #define TSI721_IDQ_SIZE_MAX (512 * 1024)
-
--#define TSI721_SR_CHINT(x) (0x20040 + (x) * 1000)
--#define TSI721_SR_CHINTE(x) (0x20044 + (x) * 1000)
--#define TSI721_SR_CHINTSET(x) (0x20048 + (x) * 1000)
-+#define TSI721_SR_CHINT(x) (0x20040 + (x) * 0x1000)
-+#define TSI721_SR_CHINTE(x) (0x20044 + (x) * 0x1000)
-+#define TSI721_SR_CHINTSET(x) (0x20048 + (x) * 0x1000)
- #define TSI721_SR_CHINT_ODBOK 0x00000020
- #define TSI721_SR_CHINT_IDBQRCV 0x00000010
- #define TSI721_SR_CHINT_SUSP 0x00000008
-@@ -156,7 +156,7 @@
-
- #define TSI721_IBWIN_NUM 8
-
--#define TSI721_IBWINLB(x) (0x29000 + (x) * 20)
-+#define TSI721_IBWINLB(x) (0x29000 + (x) * 0x20)
- #define TSI721_IBWINLB_BA 0xfffff000
- #define TSI721_IBWINLB_WEN 0x00000001
-
-@@ -187,13 +187,13 @@
- */
- #define TSI721_OBWIN_NUM TSI721_PC2SR_WINS
-
--#define TSI721_OBWINLB(x) (0x40000 + (x) * 20)
-+#define TSI721_OBWINLB(x) (0x40000 + (x) * 0x20)
- #define TSI721_OBWINLB_BA 0xffff8000
- #define TSI721_OBWINLB_WEN 0x00000001
-
--#define TSI721_OBWINUB(x) (0x40004 + (x) * 20)
-+#define TSI721_OBWINUB(x) (0x40004 + (x) * 0x20)
-
--#define TSI721_OBWINSZ(x) (0x40008 + (x) * 20)
-+#define TSI721_OBWINSZ(x) (0x40008 + (x) * 0x20)
- #define TSI721_OBWINSZ_SIZE 0x00001f00
- #define TSI721_OBWIN_SIZE(size) (__fls(size) - 15)
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0038-i2c-algo-bit-Fix-spurious-SCL-timeouts-under-heavy-l.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0038-i2c-algo-bit-Fix-spurious-SCL-timeouts-under-heavy-l.patch
deleted file mode 100644
index 896f6ab..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0038-i2c-algo-bit-Fix-spurious-SCL-timeouts-under-heavy-l.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 67d192ddf0b8fb26bc4f8f2cf405b984174522b8 Mon Sep 17 00:00:00 2001
-From: Ville Syrjala <syrjala at sci.fi>
-Date: Thu, 15 Mar 2012 18:11:05 +0100
-Subject: [PATCH 38/42] i2c-algo-bit: Fix spurious SCL timeouts under heavy
- load
-
-commit 8ee161ce5e0cfc689eb677f227a6248191165fac upstream.
-
-When the system is under heavy load, there can be a significant delay
-between the getscl() and time_after() calls inside sclhi(). That delay
-may cause the time_after() check to trigger after SCL has gone high,
-causing sclhi() to return -ETIMEDOUT.
-
-To fix the problem, double check that SCL is still low after the
-timeout has been reached, before deciding to return -ETIMEDOUT.
-
-Signed-off-by: Ville Syrjala <syrjala at sci.fi>
-Signed-off-by: Jean Delvare <khali at linux-fr.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/i2c/algos/i2c-algo-bit.c | 8 +++++++-
- 1 file changed, 7 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/i2c/algos/i2c-algo-bit.c b/drivers/i2c/algos/i2c-algo-bit.c
-index 525c734..24f94f4 100644
---- a/drivers/i2c/algos/i2c-algo-bit.c
-+++ b/drivers/i2c/algos/i2c-algo-bit.c
-@@ -103,8 +103,14 @@ static int sclhi(struct i2c_algo_bit_data *adap)
- * chips may hold it low ("clock stretching") while they
- * are processing data internally.
- */
-- if (time_after(jiffies, start + adap->timeout))
-+ if (time_after(jiffies, start + adap->timeout)) {
-+ /* Test one last time, as we may have been preempted
-+ * between last check and timeout test.
-+ */
-+ if (getscl(adap))
-+ break;
- return -ETIMEDOUT;
-+ }
- cond_resched();
- }
- #ifdef DEBUG
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0039-iscsi-target-Fix-reservation-conflict-EBUSY-response.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0039-iscsi-target-Fix-reservation-conflict-EBUSY-response.patch
deleted file mode 100644
index 3b071da..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0039-iscsi-target-Fix-reservation-conflict-EBUSY-response.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From 68cefddd17e9b4f4600a64b0351acff4bb250419 Mon Sep 17 00:00:00 2001
-From: Nicholas Bellinger <nab at linux-iscsi.org>
-Date: Tue, 13 Mar 2012 18:20:11 -0700
-Subject: [PATCH 39/42] iscsi-target: Fix reservation conflict -EBUSY response
- handling bug
-
-commit 00fdc6bbef77844ce397a7de7acfaf25e8e2e4eb upstream.
-
-This patch addresses a iscsi-target specific bug related to reservation conflict
-handling in iscsit_handle_scsi_cmd() that has been causing reservation conflicts
-to complete and not fail as expected due to incorrect errno checking. The problem
-occured with the change to return -EBUSY from transport_generic_cmd_sequencer() ->
-transport_generic_allocate_tasks() failures, that broke iscsit_handle_scsi_cmd()
-checking for -EINVAL in order to invoke a non GOOD status response.
-
-This was manifesting itself as data corruption with legacy SPC-2 reservations,
-but also effects iscsi-target LUNs with SPC-3 persistent reservations.
-
-This bug was originally introduced in lio-core commit:
-
-commit 03e98c9eb916f3f0868c1dc344dde2a60287ff72
-Author: Nicholas Bellinger <nab at linux-iscsi.org>
-Date: Fri Nov 4 02:36:16 2011 -0700
-
- target: Address legacy PYX_TRANSPORT_* return code breakage
-
-Reported-by: Martin Svec <martin.svec at zoner.cz>
-Cc: Martin Svec <martin.svec at zoner.cz>
-Cc: Christoph Hellwig <hch at lst.de>
-Signed-off-by: Nicholas Bellinger <nab at linux-iscsi.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/target/iscsi/iscsi_target.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/target/iscsi/iscsi_target.c b/drivers/target/iscsi/iscsi_target.c
-index 0c1d5c73..03d3528 100644
---- a/drivers/target/iscsi/iscsi_target.c
-+++ b/drivers/target/iscsi/iscsi_target.c
-@@ -1029,7 +1029,7 @@ done:
- return iscsit_add_reject_from_cmd(
- ISCSI_REASON_BOOKMARK_NO_RESOURCES,
- 1, 1, buf, cmd);
-- } else if (transport_ret == -EINVAL) {
-+ } else if (transport_ret < 0) {
- /*
- * Unsupported SAM Opcode. CHECK_CONDITION will be sent
- * in iscsit_execute_cmd() during the CmdSN OOO Execution
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0040-target-Fix-compatible-reservation-handling-CRH-1-wit.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0040-target-Fix-compatible-reservation-handling-CRH-1-wit.patch
deleted file mode 100644
index 1673697..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0040-target-Fix-compatible-reservation-handling-CRH-1-wit.patch
+++ /dev/null
@@ -1,152 +0,0 @@
-From 16add6db674e266a62219145284435960e47435e Mon Sep 17 00:00:00 2001
-From: Nicholas Bellinger <nab at linux-iscsi.org>
-Date: Tue, 13 Mar 2012 21:29:06 -0700
-Subject: [PATCH 40/42] target: Fix compatible reservation handling (CRH=1)
- with legacy RESERVE/RELEASE
-
-commit 087a03b3ea1c8d6e2d5743a8d1c6d571058caa04 upstream.
-
-This patch addresses a bug with target_check_scsi2_reservation_conflict()
-return checking in target_scsi2_reservation_[reserve,release]() that was
-preventing CRH=1 operation from silently succeeding in the two special
-cases defined by SPC-3, and not failing with reservation conflict status
-when dealing with legacy RESERVE/RELEASE + active SPC-3 PR logic.
-
-Also explictly set cmd->scsi_status = SAM_STAT_RESERVATION_CONFLICT during
-the early non reservation holder failure from pr_ops->t10_seq_non_holder()
-check in transport_generic_cmd_sequencer() for fabrics that already expect
-it to be set.
-
-This bug was originally introduced in mainline commit:
-
-commit eacac00ce5bfde8086cd0615fb53c986f7f970fe
-Author: Christoph Hellwig <hch at infradead.org>
-Date: Thu Nov 3 17:50:40 2011 -0400
-
- target: split core_scsi2_emulate_crh
-
-Reported-by: Martin Svec <martin.svec at zoner.cz>
-Cc: Martin Svec <martin.svec at zoner.cz>
-Cc: Christoph Hellwig <hch at lst.de>
-Signed-off-by: Nicholas Bellinger <nab at linux-iscsi.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/target/target_core_pr.c | 34 +++++++++++++++++++++-----------
- drivers/target/target_core_transport.c | 1 +
- 2 files changed, 23 insertions(+), 12 deletions(-)
-
-diff --git a/drivers/target/target_core_pr.c b/drivers/target/target_core_pr.c
-index 778c1a6..6cf6ff4 100644
---- a/drivers/target/target_core_pr.c
-+++ b/drivers/target/target_core_pr.c
-@@ -120,7 +120,7 @@ static struct t10_pr_registration *core_scsi3_locate_pr_reg(struct se_device *,
- struct se_node_acl *, struct se_session *);
- static void core_scsi3_put_pr_reg(struct t10_pr_registration *);
-
--static int target_check_scsi2_reservation_conflict(struct se_cmd *cmd, int *ret)
-+static int target_check_scsi2_reservation_conflict(struct se_cmd *cmd)
- {
- struct se_session *se_sess = cmd->se_sess;
- struct se_subsystem_dev *su_dev = cmd->se_dev->se_sub_dev;
-@@ -130,7 +130,7 @@ static int target_check_scsi2_reservation_conflict(struct se_cmd *cmd, int *ret)
- int conflict = 0;
-
- if (!crh)
-- return false;
-+ return -EINVAL;
-
- pr_reg = core_scsi3_locate_pr_reg(cmd->se_dev, se_sess->se_node_acl,
- se_sess);
-@@ -158,16 +158,14 @@ static int target_check_scsi2_reservation_conflict(struct se_cmd *cmd, int *ret)
- */
- if (pr_reg->pr_res_holder) {
- core_scsi3_put_pr_reg(pr_reg);
-- *ret = 0;
-- return false;
-+ return 1;
- }
- if ((pr_reg->pr_res_type == PR_TYPE_WRITE_EXCLUSIVE_REGONLY) ||
- (pr_reg->pr_res_type == PR_TYPE_EXCLUSIVE_ACCESS_REGONLY) ||
- (pr_reg->pr_res_type == PR_TYPE_WRITE_EXCLUSIVE_ALLREG) ||
- (pr_reg->pr_res_type == PR_TYPE_EXCLUSIVE_ACCESS_ALLREG)) {
- core_scsi3_put_pr_reg(pr_reg);
-- *ret = 0;
-- return true;
-+ return 1;
- }
- core_scsi3_put_pr_reg(pr_reg);
- conflict = 1;
-@@ -192,10 +190,10 @@ static int target_check_scsi2_reservation_conflict(struct se_cmd *cmd, int *ret)
- " while active SPC-3 registrations exist,"
- " returning RESERVATION_CONFLICT\n");
- cmd->scsi_sense_reason = TCM_RESERVATION_CONFLICT;
-- return true;
-+ return -EBUSY;
- }
-
-- return false;
-+ return 0;
- }
-
- int target_scsi2_reservation_release(struct se_task *task)
-@@ -204,12 +202,18 @@ int target_scsi2_reservation_release(struct se_task *task)
- struct se_device *dev = cmd->se_dev;
- struct se_session *sess = cmd->se_sess;
- struct se_portal_group *tpg = sess->se_tpg;
-- int ret = 0;
-+ int ret = 0, rc;
-
- if (!sess || !tpg)
- goto out;
-- if (target_check_scsi2_reservation_conflict(cmd, &ret))
-+ rc = target_check_scsi2_reservation_conflict(cmd);
-+ if (rc == 1)
-+ goto out;
-+ else if (rc < 0) {
-+ cmd->scsi_sense_reason = TCM_RESERVATION_CONFLICT;
-+ ret = -EINVAL;
- goto out;
-+ }
-
- ret = 0;
- spin_lock(&dev->dev_reservation_lock);
-@@ -246,7 +250,7 @@ int target_scsi2_reservation_reserve(struct se_task *task)
- struct se_device *dev = cmd->se_dev;
- struct se_session *sess = cmd->se_sess;
- struct se_portal_group *tpg = sess->se_tpg;
-- int ret = 0;
-+ int ret = 0, rc;
-
- if ((cmd->t_task_cdb[1] & 0x01) &&
- (cmd->t_task_cdb[1] & 0x02)) {
-@@ -262,8 +266,14 @@ int target_scsi2_reservation_reserve(struct se_task *task)
- */
- if (!sess || !tpg)
- goto out;
-- if (target_check_scsi2_reservation_conflict(cmd, &ret))
-+ rc = target_check_scsi2_reservation_conflict(cmd);
-+ if (rc == 1)
- goto out;
-+ else if (rc < 0) {
-+ cmd->scsi_sense_reason = TCM_RESERVATION_CONFLICT;
-+ ret = -EINVAL;
-+ goto out;
-+ }
-
- ret = 0;
- spin_lock(&dev->dev_reservation_lock);
-diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c
-index e4ddb93..cdb774b 100644
---- a/drivers/target/target_core_transport.c
-+++ b/drivers/target/target_core_transport.c
-@@ -2507,6 +2507,7 @@ static int transport_generic_cmd_sequencer(
- cmd, cdb, pr_reg_type) != 0) {
- cmd->se_cmd_flags |= SCF_SCSI_CDB_EXCEPTION;
- cmd->se_cmd_flags |= SCF_SCSI_RESERVATION_CONFLICT;
-+ cmd->scsi_status = SAM_STAT_RESERVATION_CONFLICT;
- cmd->scsi_sense_reason = TCM_RESERVATION_CONFLICT;
- return -EBUSY;
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0041-hwmon-zl6100-Enable-interval-between-chip-accesses-f.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0041-hwmon-zl6100-Enable-interval-between-chip-accesses-f.patch
deleted file mode 100644
index 7d266e8..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0041-hwmon-zl6100-Enable-interval-between-chip-accesses-f.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-From e4dffc01371682d0b23d22f1fe611f96b53cc486 Mon Sep 17 00:00:00 2001
-From: Guenter Roeck <guenter.roeck at ericsson.com>
-Date: Tue, 13 Mar 2012 09:05:14 -0700
-Subject: [PATCH 41/42] hwmon: (zl6100) Enable interval between chip accesses
- for all chips
-
-commit fecfb64422d91a9621a3f96ab75c3a5f13e80b58 upstream.
-
-Intersil reports that all chips supported by the zl6100 driver require
-an interval between chip accesses, even ZL2004 and ZL6105 which were thought
-to be safe.
-
-Reported-by: Vivek Gani <vgani at intersil.com>
-Signed-off-by: Guenter Roeck <guenter.roeck at ericsson.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- Documentation/hwmon/zl6100 | 14 ++++++--------
- drivers/hwmon/pmbus/zl6100.c | 11 +++--------
- 2 files changed, 9 insertions(+), 16 deletions(-)
-
-diff --git a/Documentation/hwmon/zl6100 b/Documentation/hwmon/zl6100
-index 7617798..c5e1a5b 100644
---- a/Documentation/hwmon/zl6100
-+++ b/Documentation/hwmon/zl6100
-@@ -73,14 +73,12 @@ Module parameters
- delay
- -----
-
--Some Intersil/Zilker Labs DC-DC controllers require a minimum interval between
--I2C bus accesses. According to Intersil, the minimum interval is 2 ms, though
--1 ms appears to be sufficient and has not caused any problems in testing.
--The problem is known to affect ZL6100, ZL2105, and ZL2008. It is known not to
--affect ZL2004 and ZL6105. The driver automatically sets the interval to 1 ms
--except for ZL2004 and ZL6105. To enable manual override, the driver provides a
--writeable module parameter, 'delay', which can be used to set the interval to
--a value between 0 and 65,535 microseconds.
-+Intersil/Zilker Labs DC-DC controllers require a minimum interval between I2C
-+bus accesses. According to Intersil, the minimum interval is 2 ms, though 1 ms
-+appears to be sufficient and has not caused any problems in testing. The problem
-+is known to affect all currently supported chips. For manual override, the
-+driver provides a writeable module parameter, 'delay', which can be used to set
-+the interval to a value between 0 and 65,535 microseconds.
-
-
- Sysfs entries
-diff --git a/drivers/hwmon/pmbus/zl6100.c b/drivers/hwmon/pmbus/zl6100.c
-index ba296fd..5c5cdd2 100644
---- a/drivers/hwmon/pmbus/zl6100.c
-+++ b/drivers/hwmon/pmbus/zl6100.c
-@@ -178,16 +178,11 @@ static int zl6100_probe(struct i2c_client *client,
- data->id = mid->driver_data;
-
- /*
-- * ZL2008, ZL2105, and ZL6100 are known to require a wait time
-- * between I2C accesses. ZL2004 and ZL6105 are known to be safe.
-- *
-- * Only clear the wait time for chips known to be safe. The wait time
-- * can be cleared later for additional chips if tests show that it
-- * is not needed (in other words, better be safe than sorry).
-+ * According to information from the chip vendor, all currently
-+ * supported chips are known to require a wait time between I2C
-+ * accesses.
- */
- data->delay = delay;
-- if (data->id == zl2004 || data->id == zl6105)
-- data->delay = 0;
-
- /*
- * Since there was a direct I2C device access above, wait before
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0042-Linux-3.2.12.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0042-Linux-3.2.12.patch
deleted file mode 100644
index 282912d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.12/0042-Linux-3.2.12.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 5193c69b7a34cf74e5cd0ed629eb921c3f029b3e Mon Sep 17 00:00:00 2001
-From: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Date: Mon, 19 Mar 2012 09:03:17 -0700
-Subject: [PATCH 42/42] Linux 3.2.12
-
----
- Makefile | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Makefile b/Makefile
-index 4b76371..15e80f1 100644
---- a/Makefile
-+++ b/Makefile
-@@ -1,6 +1,6 @@
- VERSION = 3
- PATCHLEVEL = 2
--SUBLEVEL = 11
-+SUBLEVEL = 12
- EXTRAVERSION =
- NAME = Saber-toothed Squirrel
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.13/0001-nilfs2-fix-NULL-pointer-dereference-in-nilfs_load_su.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.13/0001-nilfs2-fix-NULL-pointer-dereference-in-nilfs_load_su.patch
deleted file mode 100644
index 29df299..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.13/0001-nilfs2-fix-NULL-pointer-dereference-in-nilfs_load_su.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From 4f3587e3e193f8ae9278442bf254d1271c4d010d Mon Sep 17 00:00:00 2001
-From: Ryusuke Konishi <konishi.ryusuke at lab.ntt.co.jp>
-Date: Fri, 16 Mar 2012 17:08:39 -0700
-Subject: [PATCH 01/10] nilfs2: fix NULL pointer dereference in
- nilfs_load_super_block()
-
-commit d7178c79d9b7c5518f9943188091a75fc6ce0675 upstream.
-
-According to the report from Slicky Devil, nilfs caused kernel oops at
-nilfs_load_super_block function during mount after he shrank the
-partition without resizing the filesystem:
-
- BUG: unable to handle kernel NULL pointer dereference at 00000048
- IP: [<d0d7a08e>] nilfs_load_super_block+0x17e/0x280 [nilfs2]
- *pde = 00000000
- Oops: 0000 [#1] PREEMPT SMP
- ...
- Call Trace:
- [<d0d7a87b>] init_nilfs+0x4b/0x2e0 [nilfs2]
- [<d0d6f707>] nilfs_mount+0x447/0x5b0 [nilfs2]
- [<c0226636>] mount_fs+0x36/0x180
- [<c023d961>] vfs_kern_mount+0x51/0xa0
- [<c023ddae>] do_kern_mount+0x3e/0xe0
- [<c023f189>] do_mount+0x169/0x700
- [<c023fa9b>] sys_mount+0x6b/0xa0
- [<c04abd1f>] sysenter_do_call+0x12/0x28
- Code: 53 18 8b 43 20 89 4b 18 8b 4b 24 89 53 1c 89 43 24 89 4b 20 8b 43
- 20 c7 43 2c 00 00 00 00 23 75 e8 8b 50 68 89 53 28 8b 54 b3 20 <8b> 72
- 48 8b 7a 4c 8b 55 08 89 b3 84 00 00 00 89 bb 88 00 00 00
- EIP: [<d0d7a08e>] nilfs_load_super_block+0x17e/0x280 [nilfs2] SS:ESP 0068:ca9bbdcc
- CR2: 0000000000000048
-
-This turned out due to a defect in an error path which runs if the
-calculated location of the secondary super block was invalid.
-
-This patch fixes it and eliminates the reported oops.
-
-Reported-by: Slicky Devil <slicky.dvl at gmail.com>
-Signed-off-by: Ryusuke Konishi <konishi.ryusuke at lab.ntt.co.jp>
-Tested-by: Slicky Devil <slicky.dvl at gmail.com>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/nilfs2/the_nilfs.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/fs/nilfs2/the_nilfs.c b/fs/nilfs2/the_nilfs.c
-index d327140..35a8970 100644
---- a/fs/nilfs2/the_nilfs.c
-+++ b/fs/nilfs2/the_nilfs.c
-@@ -515,6 +515,7 @@ static int nilfs_load_super_block(struct the_nilfs *nilfs,
- brelse(sbh[1]);
- sbh[1] = NULL;
- sbp[1] = NULL;
-+ valid[1] = 0;
- swp = 0;
- }
- if (!valid[swp]) {
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.13/0002-afs-Read-of-file-returns-EBADMSG.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.13/0002-afs-Read-of-file-returns-EBADMSG.patch
deleted file mode 100644
index ff1e0d9..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.13/0002-afs-Read-of-file-returns-EBADMSG.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From d603197ba390bdeba1aa79167697278669fdd9f3 Mon Sep 17 00:00:00 2001
-From: Anton Blanchard <anton at samba.org>
-Date: Fri, 16 Mar 2012 10:28:07 +0000
-Subject: [PATCH 02/10] afs: Read of file returns EBADMSG
-
-commit 2c724fb92732c0b2a5629eb8af74e82eb62ac947 upstream.
-
-A read of a large file on an afs mount failed:
-
-# cat junk.file > /dev/null
-cat: junk.file: Bad message
-
-Looking at the trace, call->offset wrapped since it is only an
-unsigned short. In afs_extract_data:
-
- _enter("{%u},{%zu},%d,,%zu", call->offset, len, last, count);
-...
-
- if (call->offset < count) {
- if (last) {
- _leave(" = -EBADMSG [%d < %zu]", call->offset, count);
- return -EBADMSG;
- }
-
-Which matches the trace:
-
-[cat ] ==> afs_extract_data({65132},{524},1,,65536)
-[cat ] <== afs_extract_data() = -EBADMSG [0 < 65536]
-
-call->offset went from 65132 to 0. Fix this by making call->offset an
-unsigned int.
-
-Signed-off-by: Anton Blanchard <anton at samba.org>
-Signed-off-by: David Howells <dhowells at redhat.com>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/afs/internal.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/fs/afs/internal.h b/fs/afs/internal.h
-index d2b0888..a306bb6 100644
---- a/fs/afs/internal.h
-+++ b/fs/afs/internal.h
-@@ -109,7 +109,7 @@ struct afs_call {
- unsigned reply_size; /* current size of reply */
- unsigned first_offset; /* offset into mapping[first] */
- unsigned last_to; /* amount of mapping[last] */
-- unsigned short offset; /* offset into received data store */
-+ unsigned offset; /* offset into received data store */
- unsigned char unmarshall; /* unmarshalling phase */
- bool incoming; /* T if incoming call */
- bool send_pages; /* T if data from mapping should be sent */
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.13/0003-afs-Remote-abort-can-cause-BUG-in-rxrpc-code.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.13/0003-afs-Remote-abort-can-cause-BUG-in-rxrpc-code.patch
deleted file mode 100644
index 22cfa61..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.13/0003-afs-Remote-abort-can-cause-BUG-in-rxrpc-code.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-From 4dd3f846325bf16e5b2d976dce42da7f722ade1f Mon Sep 17 00:00:00 2001
-From: Anton Blanchard <anton at samba.org>
-Date: Fri, 16 Mar 2012 10:28:19 +0000
-Subject: [PATCH 03/10] afs: Remote abort can cause BUG in rxrpc code
-
-commit c0173863528a8c9212c53e080d63a1aaae5ef4f4 upstream.
-
-When writing files to afs I sometimes hit a BUG:
-
-kernel BUG at fs/afs/rxrpc.c:179!
-
-With a backtrace of:
-
- afs_free_call
- afs_make_call
- afs_fs_store_data
- afs_vnode_store_data
- afs_write_back_from_locked_page
- afs_writepages_region
- afs_writepages
-
-The cause is:
-
- ASSERT(skb_queue_empty(&call->rx_queue));
-
-Looking at a tcpdump of the session the abort happens because we
-are exceeding our disk quota:
-
- rx abort fs reply store-data error diskquota exceeded (32)
-
-So the abort error is valid. We hit the BUG because we haven't
-freed all the resources for the call.
-
-By freeing any skbs in call->rx_queue before calling afs_free_call
-we avoid hitting leaking memory and avoid hitting the BUG.
-
-Signed-off-by: Anton Blanchard <anton at samba.org>
-Signed-off-by: David Howells <dhowells at redhat.com>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/afs/rxrpc.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/fs/afs/rxrpc.c b/fs/afs/rxrpc.c
-index e45a323..8ad8c2a 100644
---- a/fs/afs/rxrpc.c
-+++ b/fs/afs/rxrpc.c
-@@ -314,6 +314,7 @@ int afs_make_call(struct in_addr *addr, struct afs_call *call, gfp_t gfp,
- struct msghdr msg;
- struct kvec iov[1];
- int ret;
-+ struct sk_buff *skb;
-
- _enter("%x,{%d},", addr->s_addr, ntohs(call->port));
-
-@@ -380,6 +381,8 @@ int afs_make_call(struct in_addr *addr, struct afs_call *call, gfp_t gfp,
-
- error_do_abort:
- rxrpc_kernel_abort_call(rxcall, RX_USER_ABORT);
-+ while ((skb = skb_dequeue(&call->rx_queue)))
-+ afs_free_skb(skb);
- rxrpc_kernel_end_call(rxcall);
- call->rxcall = NULL;
- error_kill_call:
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.13/0004-perf-tools-Incorrect-use-of-snprintf-results-in-SEGV.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.13/0004-perf-tools-Incorrect-use-of-snprintf-results-in-SEGV.patch
deleted file mode 100644
index 0cfd765..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.13/0004-perf-tools-Incorrect-use-of-snprintf-results-in-SEGV.patch
+++ /dev/null
@@ -1,66 +0,0 @@
-From 4458ed1dbe1180712e2c42c1816145bb793b9422 Mon Sep 17 00:00:00 2001
-From: Anton Blanchard <anton at samba.org>
-Date: Wed, 7 Mar 2012 11:42:49 +1100
-Subject: [PATCH 04/10] perf tools: Incorrect use of snprintf results in SEGV
-
-commit b832796caa1fda8516464a003c8c7cc547bc20c2 upstream.
-
-I have a workload where perf top scribbles over the stack and we SEGV.
-What makes it interesting is that an snprintf is causing this.
-
-The workload is a c++ gem that has method names over 3000 characters
-long, but snprintf is designed to avoid overrunning buffers. So what
-went wrong?
-
-The problem is we assume snprintf returns the number of characters
-written:
-
- ret += repsep_snprintf(bf + ret, size - ret, "[%c] ", self->level);
-...
- ret += repsep_snprintf(bf + ret, size - ret, "%s", self->ms.sym->name);
-
-Unfortunately this is not how snprintf works. snprintf returns the
-number of characters that would have been written if there was enough
-space. In the above case, if the first snprintf returns a value larger
-than size, we pass a negative size into the second snprintf and happily
-scribble over the stack. If you have 3000 character c++ methods thats a
-lot of stack to trample.
-
-This patch fixes repsep_snprintf by clamping the value at size - 1 which
-is the maximum snprintf can write before adding the NULL terminator.
-
-I get the sinking feeling that there are a lot of other uses of snprintf
-that have this same bug, we should audit them all.
-
-Cc: David Ahern <dsahern at gmail.com>
-Cc: Eric B Munson <emunson at mgebm.net>
-Cc: Frederic Weisbecker <fweisbec at gmail.com>
-Cc: Ingo Molnar <mingo at elte.hu>
-Cc: Paul Mackerras <paulus at samba.org>
-Cc: Peter Zijlstra <peterz at infradead.org>
-Cc: Yanmin Zhang <yanmin_zhang at linux.intel.com>
-Link: http://lkml.kernel.org/r/20120307114249.44275ca3@kryten
-Signed-off-by: Anton Blanchard <anton at samba.org>
-Signed-off-by: Arnaldo Carvalho de Melo <acme at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- tools/perf/util/sort.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/tools/perf/util/sort.c b/tools/perf/util/sort.c
-index 16da30d..076c9d4 100644
---- a/tools/perf/util/sort.c
-+++ b/tools/perf/util/sort.c
-@@ -33,6 +33,9 @@ static int repsep_snprintf(char *bf, size_t size, const char *fmt, ...)
- }
- }
- va_end(ap);
-+
-+ if (n >= (int)size)
-+ return size - 1;
- return n;
- }
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.13/0005-perf-tools-Use-scnprintf-where-applicable.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.13/0005-perf-tools-Use-scnprintf-where-applicable.patch
deleted file mode 100644
index 0b3e626..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.13/0005-perf-tools-Use-scnprintf-where-applicable.patch
+++ /dev/null
@@ -1,283 +0,0 @@
-From 0761aae695aebede1d2ab4bf704419ee0ac957f1 Mon Sep 17 00:00:00 2001
-From: Arnaldo Carvalho de Melo <acme at redhat.com>
-Date: Wed, 14 Mar 2012 12:29:29 -0300
-Subject: [PATCH 05/10] perf tools: Use scnprintf where applicable
-
-commit e7f01d1e3d8d501deb8abeaa269d5d48a703b8b0 upstream.
-
-Several places were expecting that the value returned was the number of
-characters printed, not what would be printed if there was space.
-
-Fix it by using the scnprintf and vscnprintf variants we inherited from
-the kernel sources.
-
-Some corner cases where the number of printed characters were not
-accounted were fixed too.
-
-Reported-by: Anton Blanchard <anton at samba.org>
-Cc: Anton Blanchard <anton at samba.org>
-Cc: Eric B Munson <emunson at mgebm.net>
-Cc: David Ahern <dsahern at gmail.com>
-Cc: Frederic Weisbecker <fweisbec at gmail.com>
-Cc: Mike Galbraith <efault at gmx.de>
-Cc: Paul Mackerras <paulus at samba.org>
-Cc: Peter Zijlstra <peterz at infradead.org>
-Cc: Stephane Eranian <eranian at google.com>
-Cc: Yanmin Zhang <yanmin_zhang at linux.intel.com>
-Link: http://lkml.kernel.org/n/tip-kwxo2eh29cxmd8ilixi2005x@git.kernel.org
-Signed-off-by: Arnaldo Carvalho de Melo <acme at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- tools/perf/arch/powerpc/util/header.c | 2 +-
- tools/perf/arch/x86/util/header.c | 2 +-
- tools/perf/util/color.c | 9 +++++----
- tools/perf/util/header.c | 4 ++--
- tools/perf/util/hist.c | 30 +++++++++++++++---------------
- tools/perf/util/strbuf.c | 7 ++++---
- tools/perf/util/ui/browsers/hists.c | 12 ++++++------
- tools/perf/util/ui/helpline.c | 2 +-
- 8 files changed, 35 insertions(+), 33 deletions(-)
-
-diff --git a/tools/perf/arch/powerpc/util/header.c b/tools/perf/arch/powerpc/util/header.c
-index eba80c2..2f7073d 100644
---- a/tools/perf/arch/powerpc/util/header.c
-+++ b/tools/perf/arch/powerpc/util/header.c
-@@ -25,7 +25,7 @@ get_cpuid(char *buffer, size_t sz)
-
- pvr = mfspr(SPRN_PVR);
-
-- nb = snprintf(buffer, sz, "%lu,%lu$", PVR_VER(pvr), PVR_REV(pvr));
-+ nb = scnprintf(buffer, sz, "%lu,%lu$", PVR_VER(pvr), PVR_REV(pvr));
-
- /* look for end marker to ensure the entire data fit */
- if (strchr(buffer, '$')) {
-diff --git a/tools/perf/arch/x86/util/header.c b/tools/perf/arch/x86/util/header.c
-index f940060..146d12a 100644
---- a/tools/perf/arch/x86/util/header.c
-+++ b/tools/perf/arch/x86/util/header.c
-@@ -48,7 +48,7 @@ get_cpuid(char *buffer, size_t sz)
- if (family >= 0x6)
- model += ((a >> 16) & 0xf) << 4;
- }
-- nb = snprintf(buffer, sz, "%s,%u,%u,%u$", vendor, family, model, step);
-+ nb = scnprintf(buffer, sz, "%s,%u,%u,%u$", vendor, family, model, step);
-
- /* look for end marker to ensure the entire data fit */
- if (strchr(buffer, '$')) {
-diff --git a/tools/perf/util/color.c b/tools/perf/util/color.c
-index 521c38a..11e46da1 100644
---- a/tools/perf/util/color.c
-+++ b/tools/perf/util/color.c
-@@ -1,3 +1,4 @@
-+#include <linux/kernel.h>
- #include "cache.h"
- #include "color.h"
-
-@@ -182,12 +183,12 @@ static int __color_vsnprintf(char *bf, size_t size, const char *color,
- }
-
- if (perf_use_color_default && *color)
-- r += snprintf(bf, size, "%s", color);
-- r += vsnprintf(bf + r, size - r, fmt, args);
-+ r += scnprintf(bf, size, "%s", color);
-+ r += vscnprintf(bf + r, size - r, fmt, args);
- if (perf_use_color_default && *color)
-- r += snprintf(bf + r, size - r, "%s", PERF_COLOR_RESET);
-+ r += scnprintf(bf + r, size - r, "%s", PERF_COLOR_RESET);
- if (trail)
-- r += snprintf(bf + r, size - r, "%s", trail);
-+ r += scnprintf(bf + r, size - r, "%s", trail);
- return r;
- }
-
-diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c
-index 33c17a2..2cd88c1 100644
---- a/tools/perf/util/header.c
-+++ b/tools/perf/util/header.c
-@@ -1227,7 +1227,7 @@ int build_id_cache__add_s(const char *sbuild_id, const char *debugdir,
- if (realname == NULL || filename == NULL || linkname == NULL)
- goto out_free;
-
-- len = snprintf(filename, size, "%s%s%s",
-+ len = scnprintf(filename, size, "%s%s%s",
- debugdir, is_kallsyms ? "/" : "", realname);
- if (mkdir_p(filename, 0755))
- goto out_free;
-@@ -1242,7 +1242,7 @@ int build_id_cache__add_s(const char *sbuild_id, const char *debugdir,
- goto out_free;
- }
-
-- len = snprintf(linkname, size, "%s/.build-id/%.2s",
-+ len = scnprintf(linkname, size, "%s/.build-id/%.2s",
- debugdir, sbuild_id);
-
- if (access(linkname, X_OK) && mkdir_p(linkname, 0755))
-diff --git a/tools/perf/util/hist.c b/tools/perf/util/hist.c
-index abef270..216e33a 100644
---- a/tools/perf/util/hist.c
-+++ b/tools/perf/util/hist.c
-@@ -767,7 +767,7 @@ static int hist_entry__pcnt_snprintf(struct hist_entry *self, char *s,
- sep ? "%.2f" : " %6.2f%%",
- (period * 100.0) / total);
- else
-- ret = snprintf(s, size, sep ? "%.2f" : " %6.2f%%",
-+ ret = scnprintf(s, size, sep ? "%.2f" : " %6.2f%%",
- (period * 100.0) / total);
- if (symbol_conf.show_cpu_utilization) {
- ret += percent_color_snprintf(s + ret, size - ret,
-@@ -790,20 +790,20 @@ static int hist_entry__pcnt_snprintf(struct hist_entry *self, char *s,
- }
- }
- } else
-- ret = snprintf(s, size, sep ? "%" PRIu64 : "%12" PRIu64 " ", period);
-+ ret = scnprintf(s, size, sep ? "%" PRIu64 : "%12" PRIu64 " ", period);
-
- if (symbol_conf.show_nr_samples) {
- if (sep)
-- ret += snprintf(s + ret, size - ret, "%c%" PRIu64, *sep, nr_events);
-+ ret += scnprintf(s + ret, size - ret, "%c%" PRIu64, *sep, nr_events);
- else
-- ret += snprintf(s + ret, size - ret, "%11" PRIu64, nr_events);
-+ ret += scnprintf(s + ret, size - ret, "%11" PRIu64, nr_events);
- }
-
- if (symbol_conf.show_total_period) {
- if (sep)
-- ret += snprintf(s + ret, size - ret, "%c%" PRIu64, *sep, period);
-+ ret += scnprintf(s + ret, size - ret, "%c%" PRIu64, *sep, period);
- else
-- ret += snprintf(s + ret, size - ret, " %12" PRIu64, period);
-+ ret += scnprintf(s + ret, size - ret, " %12" PRIu64, period);
- }
-
- if (pair_hists) {
-@@ -818,25 +818,25 @@ static int hist_entry__pcnt_snprintf(struct hist_entry *self, char *s,
- diff = new_percent - old_percent;
-
- if (fabs(diff) >= 0.01)
-- snprintf(bf, sizeof(bf), "%+4.2F%%", diff);
-+ ret += scnprintf(bf, sizeof(bf), "%+4.2F%%", diff);
- else
-- snprintf(bf, sizeof(bf), " ");
-+ ret += scnprintf(bf, sizeof(bf), " ");
-
- if (sep)
-- ret += snprintf(s + ret, size - ret, "%c%s", *sep, bf);
-+ ret += scnprintf(s + ret, size - ret, "%c%s", *sep, bf);
- else
-- ret += snprintf(s + ret, size - ret, "%11.11s", bf);
-+ ret += scnprintf(s + ret, size - ret, "%11.11s", bf);
-
- if (show_displacement) {
- if (displacement)
-- snprintf(bf, sizeof(bf), "%+4ld", displacement);
-+ ret += scnprintf(bf, sizeof(bf), "%+4ld", displacement);
- else
-- snprintf(bf, sizeof(bf), " ");
-+ ret += scnprintf(bf, sizeof(bf), " ");
-
- if (sep)
-- ret += snprintf(s + ret, size - ret, "%c%s", *sep, bf);
-+ ret += scnprintf(s + ret, size - ret, "%c%s", *sep, bf);
- else
-- ret += snprintf(s + ret, size - ret, "%6.6s", bf);
-+ ret += scnprintf(s + ret, size - ret, "%6.6s", bf);
- }
- }
-
-@@ -854,7 +854,7 @@ int hist_entry__snprintf(struct hist_entry *he, char *s, size_t size,
- if (se->elide)
- continue;
-
-- ret += snprintf(s + ret, size - ret, "%s", sep ?: " ");
-+ ret += scnprintf(s + ret, size - ret, "%s", sep ?: " ");
- ret += se->se_snprintf(he, s + ret, size - ret,
- hists__col_len(hists, se->se_width_idx));
- }
-diff --git a/tools/perf/util/strbuf.c b/tools/perf/util/strbuf.c
-index 92e0685..2eeb51b 100644
---- a/tools/perf/util/strbuf.c
-+++ b/tools/perf/util/strbuf.c
-@@ -1,4 +1,5 @@
- #include "cache.h"
-+#include <linux/kernel.h>
-
- int prefixcmp(const char *str, const char *prefix)
- {
-@@ -89,14 +90,14 @@ void strbuf_addf(struct strbuf *sb, const char *fmt, ...)
- if (!strbuf_avail(sb))
- strbuf_grow(sb, 64);
- va_start(ap, fmt);
-- len = vsnprintf(sb->buf + sb->len, sb->alloc - sb->len, fmt, ap);
-+ len = vscnprintf(sb->buf + sb->len, sb->alloc - sb->len, fmt, ap);
- va_end(ap);
- if (len < 0)
-- die("your vsnprintf is broken");
-+ die("your vscnprintf is broken");
- if (len > strbuf_avail(sb)) {
- strbuf_grow(sb, len);
- va_start(ap, fmt);
-- len = vsnprintf(sb->buf + sb->len, sb->alloc - sb->len, fmt, ap);
-+ len = vscnprintf(sb->buf + sb->len, sb->alloc - sb->len, fmt, ap);
- va_end(ap);
- if (len > strbuf_avail(sb)) {
- die("this should not happen, your snprintf is broken");
-diff --git a/tools/perf/util/ui/browsers/hists.c b/tools/perf/util/ui/browsers/hists.c
-index d0c94b4..81c9fa5 100644
---- a/tools/perf/util/ui/browsers/hists.c
-+++ b/tools/perf/util/ui/browsers/hists.c
-@@ -839,15 +839,15 @@ static int hists__browser_title(struct hists *self, char *bf, size_t size,
- unsigned long nr_events = self->stats.nr_events[PERF_RECORD_SAMPLE];
-
- nr_events = convert_unit(nr_events, &unit);
-- printed = snprintf(bf, size, "Events: %lu%c %s", nr_events, unit, ev_name);
-+ printed = scnprintf(bf, size, "Events: %lu%c %s", nr_events, unit, ev_name);
-
- if (thread)
-- printed += snprintf(bf + printed, size - printed,
-+ printed += scnprintf(bf + printed, size - printed,
- ", Thread: %s(%d)",
- (thread->comm_set ? thread->comm : ""),
- thread->pid);
- if (dso)
-- printed += snprintf(bf + printed, size - printed,
-+ printed += scnprintf(bf + printed, size - printed,
- ", DSO: %s", dso->short_name);
- return printed;
- }
-@@ -1097,7 +1097,7 @@ static void perf_evsel_menu__write(struct ui_browser *browser,
- HE_COLORSET_NORMAL);
-
- nr_events = convert_unit(nr_events, &unit);
-- printed = snprintf(bf, sizeof(bf), "%lu%c%s%s", nr_events,
-+ printed = scnprintf(bf, sizeof(bf), "%lu%c%s%s", nr_events,
- unit, unit == ' ' ? "" : " ", ev_name);
- slsmg_printf("%s", bf);
-
-@@ -1107,8 +1107,8 @@ static void perf_evsel_menu__write(struct ui_browser *browser,
- if (!current_entry)
- ui_browser__set_color(browser, HE_COLORSET_TOP);
- nr_events = convert_unit(nr_events, &unit);
-- snprintf(bf, sizeof(bf), ": %ld%c%schunks LOST!", nr_events,
-- unit, unit == ' ' ? "" : " ");
-+ printed += scnprintf(bf, sizeof(bf), ": %ld%c%schunks LOST!",
-+ nr_events, unit, unit == ' ' ? "" : " ");
- warn = bf;
- }
-
-diff --git a/tools/perf/util/ui/helpline.c b/tools/perf/util/ui/helpline.c
-index 6ef3c56..f50f81c 100644
---- a/tools/perf/util/ui/helpline.c
-+++ b/tools/perf/util/ui/helpline.c
-@@ -65,7 +65,7 @@ int ui_helpline__show_help(const char *format, va_list ap)
- static int backlog;
-
- pthread_mutex_lock(&ui__lock);
-- ret = vsnprintf(ui_helpline__last_msg + backlog,
-+ ret = vscnprintf(ui_helpline__last_msg + backlog,
- sizeof(ui_helpline__last_msg) - backlog, format, ap);
- backlog += ret;
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.13/0006-tcp-fix-syncookie-regression.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.13/0006-tcp-fix-syncookie-regression.patch
deleted file mode 100644
index b245f58..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.13/0006-tcp-fix-syncookie-regression.patch
+++ /dev/null
@@ -1,111 +0,0 @@
-From 1783dd4e3bf403739015f4494cb05445623826c8 Mon Sep 17 00:00:00 2001
-From: Eric Dumazet <eric.dumazet at gmail.com>
-Date: Sat, 10 Mar 2012 09:20:21 +0000
-Subject: [PATCH 06/10] tcp: fix syncookie regression
-
-[ Upstream commit dfd25ffffc132c00070eed64200e8950da5d7e9d ]
-
-commit ea4fc0d619 (ipv4: Don't use rt->rt_{src,dst} in ip_queue_xmit())
-added a serious regression on synflood handling.
-
-Simon Kirby discovered a successful connection was delayed by 20 seconds
-before being responsive.
-
-In my tests, I discovered that xmit frames were lost, and needed ~4
-retransmits and a socket dst rebuild before being really sent.
-
-In case of syncookie initiated connection, we use a different path to
-initialize the socket dst, and inet->cork.fl.u.ip4 is left cleared.
-
-As ip_queue_xmit() now depends on inet flow being setup, fix this by
-copying the temp flowi4 we use in cookie_v4_check().
-
-Reported-by: Simon Kirby <sim at netnation.com>
-Bisected-by: Simon Kirby <sim at netnation.com>
-Signed-off-by: Eric Dumazet <eric.dumazet at gmail.com>
-Tested-by: Eric Dumazet <eric.dumazet at gmail.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- net/ipv4/syncookies.c | 30 ++++++++++++++++--------------
- net/ipv4/tcp_ipv4.c | 10 +++++++---
- 2 files changed, 23 insertions(+), 17 deletions(-)
-
-diff --git a/net/ipv4/syncookies.c b/net/ipv4/syncookies.c
-index 90f6544..769c0e9 100644
---- a/net/ipv4/syncookies.c
-+++ b/net/ipv4/syncookies.c
-@@ -278,6 +278,7 @@ struct sock *cookie_v4_check(struct sock *sk, struct sk_buff *skb,
- struct rtable *rt;
- __u8 rcv_wscale;
- bool ecn_ok = false;
-+ struct flowi4 fl4;
-
- if (!sysctl_tcp_syncookies || !th->ack || th->rst)
- goto out;
-@@ -346,20 +347,16 @@ struct sock *cookie_v4_check(struct sock *sk, struct sk_buff *skb,
- * hasn't changed since we received the original syn, but I see
- * no easy way to do this.
- */
-- {
-- struct flowi4 fl4;
--
-- flowi4_init_output(&fl4, 0, sk->sk_mark, RT_CONN_FLAGS(sk),
-- RT_SCOPE_UNIVERSE, IPPROTO_TCP,
-- inet_sk_flowi_flags(sk),
-- (opt && opt->srr) ? opt->faddr : ireq->rmt_addr,
-- ireq->loc_addr, th->source, th->dest);
-- security_req_classify_flow(req, flowi4_to_flowi(&fl4));
-- rt = ip_route_output_key(sock_net(sk), &fl4);
-- if (IS_ERR(rt)) {
-- reqsk_free(req);
-- goto out;
-- }
-+ flowi4_init_output(&fl4, 0, sk->sk_mark, RT_CONN_FLAGS(sk),
-+ RT_SCOPE_UNIVERSE, IPPROTO_TCP,
-+ inet_sk_flowi_flags(sk),
-+ (opt && opt->srr) ? opt->faddr : ireq->rmt_addr,
-+ ireq->loc_addr, th->source, th->dest);
-+ security_req_classify_flow(req, flowi4_to_flowi(&fl4));
-+ rt = ip_route_output_key(sock_net(sk), &fl4);
-+ if (IS_ERR(rt)) {
-+ reqsk_free(req);
-+ goto out;
- }
-
- /* Try to redo what tcp_v4_send_synack did. */
-@@ -373,5 +370,10 @@ struct sock *cookie_v4_check(struct sock *sk, struct sk_buff *skb,
- ireq->rcv_wscale = rcv_wscale;
-
- ret = get_cookie_sock(sk, skb, req, &rt->dst);
-+ /* ip_queue_xmit() depends on our flow being setup
-+ * Normal sockets get it right from inet_csk_route_child_sock()
-+ */
-+ if (ret)
-+ inet_sk(ret)->cork.fl.u.ip4 = fl4;
- out: return ret;
- }
-diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
-index eb90aa8..de69cec 100644
---- a/net/ipv4/tcp_ipv4.c
-+++ b/net/ipv4/tcp_ipv4.c
-@@ -1465,9 +1465,13 @@ struct sock *tcp_v4_syn_recv_sock(struct sock *sk, struct sk_buff *skb,
- inet_csk(newsk)->icsk_ext_hdr_len = inet_opt->opt.optlen;
- newinet->inet_id = newtp->write_seq ^ jiffies;
-
-- if (!dst && (dst = inet_csk_route_child_sock(sk, newsk, req)) == NULL)
-- goto put_and_exit;
--
-+ if (!dst) {
-+ dst = inet_csk_route_child_sock(sk, newsk, req);
-+ if (!dst)
-+ goto put_and_exit;
-+ } else {
-+ /* syncookie case : see end of cookie_v4_check() */
-+ }
- sk_setup_caps(newsk, dst);
-
- tcp_mtup_init(newsk);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.13/0007-ipv6-Don-t-dev_hold-dev-in-ip6_mc_find_dev_rcu.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.13/0007-ipv6-Don-t-dev_hold-dev-in-ip6_mc_find_dev_rcu.patch
deleted file mode 100644
index c1e22fb..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.13/0007-ipv6-Don-t-dev_hold-dev-in-ip6_mc_find_dev_rcu.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 599c3a877230bfb0db2f20028170b27a9cfef914 Mon Sep 17 00:00:00 2001
-From: "RongQing.Li" <roy.qing.li at gmail.com>
-Date: Thu, 15 Mar 2012 22:54:14 +0000
-Subject: [PATCH 07/10] ipv6: Don't dev_hold(dev) in ip6_mc_find_dev_rcu.
-
-[ Upstream commit c577923756b7fe9071f28a76b66b83b306d1d001 ]
-
-ip6_mc_find_dev_rcu() is called with rcu_read_lock(), so don't
-need to dev_hold().
-With dev_hold(), not corresponding dev_put(), will lead to leak.
-
-[ bug introduced in 96b52e61be1 (ipv6: mcast: RCU conversions) ]
-
-Signed-off-by: RongQing.Li <roy.qing.li at gmail.com>
-Acked-by: Eric Dumazet <eric.dumazet at gmail.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- net/ipv6/mcast.c | 1 -
- 1 file changed, 1 deletion(-)
-
-diff --git a/net/ipv6/mcast.c b/net/ipv6/mcast.c
-index ee7839f..2257366 100644
---- a/net/ipv6/mcast.c
-+++ b/net/ipv6/mcast.c
-@@ -257,7 +257,6 @@ static struct inet6_dev *ip6_mc_find_dev_rcu(struct net *net,
-
- if (rt) {
- dev = rt->rt6i_dev;
-- dev_hold(dev);
- dst_release(&rt->dst);
- }
- } else
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.13/0008-iwl3945-fix-possible-il-txq-NULL-pointer-dereference.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.13/0008-iwl3945-fix-possible-il-txq-NULL-pointer-dereference.patch
deleted file mode 100644
index 07ecf54..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.13/0008-iwl3945-fix-possible-il-txq-NULL-pointer-dereference.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From 50090beeab6611dbfccd8565bf6a6a97beddc6ee Mon Sep 17 00:00:00 2001
-From: Stanislaw Gruszka <sgruszka at redhat.com>
-Date: Thu, 8 Mar 2012 13:16:01 +0100
-Subject: [PATCH 08/10] iwl3945: fix possible il->txq NULL pointer dereference
- in delayed works
-
-commit 210787e82a0ac1ffb5d7be1c796f0c51050849ad upstream.
-
-On il3945_down procedure we free tx queue data and nullify il->txq
-pointer. After that we drop mutex and then cancel delayed works. There
-is possibility, that after drooping mutex and before the cancel, some
-delayed work will start and crash while trying to send commands to
-the device. For example, here is reported crash in
-il3945_bg_reg_txpower_periodic():
-https://bugzilla.kernel.org/show_bug.cgi?id=42766#c10
-
-Patch fix problem by adding il->txq check on works that send commands,
-hence utilize tx queue.
-
-Reported-by: Clemens Eisserer <linuxhippy at gmail.com>
-Signed-off-by: Stanislaw Gruszka <sgruszka at redhat.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
----
- drivers/net/wireless/iwlegacy/iwl-3945.c | 7 ++++---
- drivers/net/wireless/iwlegacy/iwl3945-base.c | 2 +-
- 2 files changed, 5 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/net/wireless/iwlegacy/iwl-3945.c b/drivers/net/wireless/iwlegacy/iwl-3945.c
-index f7c0a74..7d1aa7c 100644
---- a/drivers/net/wireless/iwlegacy/iwl-3945.c
-+++ b/drivers/net/wireless/iwlegacy/iwl-3945.c
-@@ -1870,11 +1870,12 @@ static void iwl3945_bg_reg_txpower_periodic(struct work_struct *work)
- struct iwl_priv *priv = container_of(work, struct iwl_priv,
- _3945.thermal_periodic.work);
-
-- if (test_bit(STATUS_EXIT_PENDING, &priv->status))
-- return;
--
- mutex_lock(&priv->mutex);
-+ if (test_bit(STATUS_EXIT_PENDING, &priv->status) || priv->txq == NULL)
-+ goto out;
-+
- iwl3945_reg_txpower_periodic(priv);
-+out:
- mutex_unlock(&priv->mutex);
- }
-
-diff --git a/drivers/net/wireless/iwlegacy/iwl3945-base.c b/drivers/net/wireless/iwlegacy/iwl3945-base.c
-index 05f2ad1..b3d9f3f 100644
---- a/drivers/net/wireless/iwlegacy/iwl3945-base.c
-+++ b/drivers/net/wireless/iwlegacy/iwl3945-base.c
-@@ -2513,7 +2513,7 @@ static void iwl3945_bg_alive_start(struct work_struct *data)
- container_of(data, struct iwl_priv, alive_start.work);
-
- mutex_lock(&priv->mutex);
-- if (test_bit(STATUS_EXIT_PENDING, &priv->status))
-+ if (test_bit(STATUS_EXIT_PENDING, &priv->status) || priv->txq == NULL)
- goto out;
-
- iwl3945_alive_start(priv);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.13/0009-powerpc-pmac-Fix-SMP-kernels-on-pre-core99-UP-machin.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.13/0009-powerpc-pmac-Fix-SMP-kernels-on-pre-core99-UP-machin.patch
deleted file mode 100644
index 98111cb..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.13/0009-powerpc-pmac-Fix-SMP-kernels-on-pre-core99-UP-machin.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 93bbacdcea5490053dc692cad003f74eb116fd4a Mon Sep 17 00:00:00 2001
-From: Benjamin Herrenschmidt <benh at kernel.crashing.org>
-Date: Fri, 9 Dec 2011 15:06:18 +1100
-Subject: [PATCH 09/10] powerpc/pmac: Fix SMP kernels on pre-core99 UP
- machines
-
-commit 78c5c68a4cf4329d17abfa469345ddf323d4fd62 upstream.
-
-The code for "powersurge" SMP would kick in and cause a crash
-at boot due to the lack of a NULL test.
-
-Signed-off-by: Benjamin Herrenschmidt <benh at kernel.crashing.org>
-Signed-off-by: Jeremy Kerr <jeremy.kerr at canonical.com>
-Reported-by: Adam Conrad <adconrad at ubuntu.com>
-Tested-by: Adam Conrad <adconrad at ubuntu.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/powerpc/platforms/powermac/smp.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/arch/powerpc/platforms/powermac/smp.c b/arch/powerpc/platforms/powermac/smp.c
-index 9b6a820..3394254 100644
---- a/arch/powerpc/platforms/powermac/smp.c
-+++ b/arch/powerpc/platforms/powermac/smp.c
-@@ -414,7 +414,7 @@ static struct irqaction psurge_irqaction = {
-
- static void __init smp_psurge_setup_cpu(int cpu_nr)
- {
-- if (cpu_nr != 0)
-+ if (cpu_nr != 0 || !psurge_start)
- return;
-
- /* reset the entry point so if we get another intr we won't
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.13/0010-Linux-3.2.13.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.13/0010-Linux-3.2.13.patch
deleted file mode 100644
index 08a5856..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.13/0010-Linux-3.2.13.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From add3df1bc247cc4056661dd9ea3b445c1aea3e0d Mon Sep 17 00:00:00 2001
-From: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Date: Fri, 23 Mar 2012 13:54:45 -0700
-Subject: [PATCH 10/10] Linux 3.2.13
-
----
- Makefile | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Makefile b/Makefile
-index 15e80f1..172e041 100644
---- a/Makefile
-+++ b/Makefile
-@@ -1,6 +1,6 @@
- VERSION = 3
- PATCHLEVEL = 2
--SUBLEVEL = 12
-+SUBLEVEL = 13
- EXTRAVERSION =
- NAME = Saber-toothed Squirrel
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0001-USB-option-Add-MediaTek-MT6276M-modem-app-interfaces.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0001-USB-option-Add-MediaTek-MT6276M-modem-app-interfaces.patch
deleted file mode 100644
index f523a33..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0001-USB-option-Add-MediaTek-MT6276M-modem-app-interfaces.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From cc33a57bd7f9104a9c2f77f11dc3e7f9c22b9340 Mon Sep 17 00:00:00 2001
-From: Meng Zhang <meng.zhang at mediatek.com>
-Date: Mon, 27 Feb 2012 08:24:19 +0100
-Subject: [PATCH 001/147] USB: option: Add MediaTek MT6276M modem&app
- interfaces
-
-commit 0d8520a1d7f43328bc7085d4244d93c595064157 upstream.
-
-Add MEDIATEK products to Option driver
-
-Signed-off-by: Meng Zhang <meng.zhang at mediatek.com>
-Signed-off-by: Matthias Urlichs <matthias at urlichs.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/serial/option.c | 7 +++++++
- 1 file changed, 7 insertions(+)
-
-diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
-index 68fa8c7..547c9b9 100644
---- a/drivers/usb/serial/option.c
-+++ b/drivers/usb/serial/option.c
-@@ -484,6 +484,9 @@ static void option_instat_callback(struct urb *urb);
- #define LG_VENDOR_ID 0x1004
- #define LG_PRODUCT_L02C 0x618f
-
-+/* MediaTek products */
-+#define MEDIATEK_VENDOR_ID 0x0e8d
-+
- /* some devices interfaces need special handling due to a number of reasons */
- enum option_blacklist_reason {
- OPTION_BLACKLIST_NONE = 0,
-@@ -1198,6 +1201,10 @@ static const struct usb_device_id option_ids[] = {
- { USB_DEVICE_AND_INTERFACE_INFO(VIETTEL_VENDOR_ID, VIETTEL_PRODUCT_VT1000, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZD_VENDOR_ID, ZD_PRODUCT_7000, 0xff, 0xff, 0xff) },
- { USB_DEVICE(LG_VENDOR_ID, LG_PRODUCT_L02C) }, /* docomo L-02C modem */
-+ { USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, 0x00a1, 0xff, 0x00, 0x00) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, 0x00a1, 0xff, 0x02, 0x01) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, 0x00a2, 0xff, 0x00, 0x00) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, 0x00a2, 0xff, 0x02, 0x01) }, /* MediaTek MT6276M modem & app port */
- { } /* Terminating entry */
- };
- MODULE_DEVICE_TABLE(usb, option_ids);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0002-USB-option-driver-adding-support-for-Telit-CC864-SIN.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0002-USB-option-driver-adding-support-for-Telit-CC864-SIN.patch
deleted file mode 100644
index 2ee506a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0002-USB-option-driver-adding-support-for-Telit-CC864-SIN.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From 17ad305add28a63e155a74678178a6ce6a6a5998 Mon Sep 17 00:00:00 2001
-From: Daniele Palmas <dnlplm at gmail.com>
-Date: Wed, 29 Feb 2012 15:32:05 +0100
-Subject: [PATCH 002/147] USB: option driver: adding support for Telit
- CC864-SINGLE, CC864-DUAL and DE910-DUAL modems
-
-commit 7204cf584836c24b4b06e4ad4a8e6bb8ea84908e upstream.
-
-Adding PID for Telit CC864-SINGLE, CC864-DUAL and DE910-DUAL
-modems
-
-Signed-off-by: Daniele Palmas <dnlplm at gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/serial/option.c | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
-index 547c9b9..3c4b7df 100644
---- a/drivers/usb/serial/option.c
-+++ b/drivers/usb/serial/option.c
-@@ -307,6 +307,9 @@ static void option_instat_callback(struct urb *urb);
- #define TELIT_VENDOR_ID 0x1bc7
- #define TELIT_PRODUCT_UC864E 0x1003
- #define TELIT_PRODUCT_UC864G 0x1004
-+#define TELIT_PRODUCT_CC864_DUAL 0x1005
-+#define TELIT_PRODUCT_CC864_SINGLE 0x1006
-+#define TELIT_PRODUCT_DE910_DUAL 0x1010
-
- /* ZTE PRODUCTS */
- #define ZTE_VENDOR_ID 0x19d2
-@@ -771,6 +774,9 @@ static const struct usb_device_id option_ids[] = {
- { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6008) },
- { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_UC864E) },
- { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_UC864G) },
-+ { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_CC864_DUAL) },
-+ { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_CC864_SINGLE) },
-+ { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_DE910_DUAL) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_MF622, 0xff, 0xff, 0xff) }, /* ZTE WCDMA products */
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0002, 0xff, 0xff, 0xff),
- .driver_info = (kernel_ulong_t)&net_intf1_blacklist },
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0003-USB-option-make-interface-blacklist-work-again.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0003-USB-option-make-interface-blacklist-work-again.patch
deleted file mode 100644
index 944ea0a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0003-USB-option-make-interface-blacklist-work-again.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From ebdc22267ac3cd3aef9e300a553c0f32ac5da6f2 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Bj=C3=B8rn=20Mork?= <bjorn at mork.no>
-Date: Fri, 16 Mar 2012 12:56:44 +0100
-Subject: [PATCH 003/147] USB: option: make interface blacklist work again
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit 963940cf472d76eca2d36296e461202cc6997352 upstream.
-
-commit 0d905fd "USB: option: convert Huawei K3765, K4505, K4605
-reservered interface to blacklist" accidentally ANDed two
-blacklist tests by leaving out a return. This was not noticed
-because the two consecutive bracketless if statements made it
-syntactically correct.
-
-Signed-off-by: Bj??rn Mork <bjorn at mork.no>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/serial/option.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
-index 3c4b7df..6410935 100644
---- a/drivers/usb/serial/option.c
-+++ b/drivers/usb/serial/option.c
-@@ -1373,6 +1373,7 @@ static int option_probe(struct usb_serial *serial,
- serial->interface->cur_altsetting->desc.bInterfaceNumber,
- OPTION_BLACKLIST_RESERVED_IF,
- (const struct option_blacklist_info *) id->driver_info))
-+ return -ENODEV;
-
- /* Don't bind network interface on Samsung GT-B3730, it is handled by a separate module */
- if (serial->dev->descriptor.idVendor == SAMSUNG_VENDOR_ID &&
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0004-USB-option-add-ZTE-MF820D.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0004-USB-option-add-ZTE-MF820D.patch
deleted file mode 100644
index ae0d873..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0004-USB-option-add-ZTE-MF820D.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 0b49c52b5b44e5db6fe288173faec7136ea18c68 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Bj=C3=B8rn=20Mork?= <bjorn at mork.no>
-Date: Fri, 16 Mar 2012 15:41:26 +0100
-Subject: [PATCH 004/147] USB: option: add ZTE MF820D
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit 5889d3d4209c1050b4a3c96c41faf6c0976a4acf upstream.
-
-This device presents a total of 5 interfaces with ff/ff/ff
-class/subclass/protocol. The last one of these is verified
-to be a QMI/wwan combined interface which should be handled
-by the qmi_wwan driver, so we blacklist it here.
-
-Signed-off-by: Bj??rn Mork <bjorn at mork.no>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/serial/option.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
-index 6410935..54898c9 100644
---- a/drivers/usb/serial/option.c
-+++ b/drivers/usb/serial/option.c
-@@ -901,6 +901,8 @@ static const struct usb_device_id option_ids[] = {
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0162, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0164, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0165, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0167, 0xff, 0xff, 0xff),
-+ .driver_info = (kernel_ulong_t)&net_intf4_blacklist },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1008, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1010, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1012, 0xff, 0xff, 0xff) },
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0005-staging-zcache-avoid-AB-BA-deadlock-condition.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0005-staging-zcache-avoid-AB-BA-deadlock-condition.patch
deleted file mode 100644
index fb8bfe2..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0005-staging-zcache-avoid-AB-BA-deadlock-condition.patch
+++ /dev/null
@@ -1,66 +0,0 @@
-From 24c8eaa136cf3193f2719e9d04cc4efea3b2b732 Mon Sep 17 00:00:00 2001
-From: Andrea Righi <andrea at betterlinux.com>
-Date: Mon, 20 Feb 2012 13:11:49 +0100
-Subject: [PATCH 005/147] staging: zcache: avoid AB-BA deadlock condition
-
-commit cfbc6a92212e74b07aa76c9e2f20c542e36077fb upstream.
-
-Commit 9256a47 fixed a deadlock condition, being sure that the buddy
-list spinlock is always taken before the page spinlock.
-
-However in zbud_free_and_delist() locking order is the opposite
-(page lock -> list lock).
-
-Possible unsafe locking scenario (reported by lockdep):
-
- CPU0 CPU1
- ---- ----
- lock(&(&zbpg->lock)->rlock);
- lock(zbud_budlists_spinlock);
- lock(&(&zbpg->lock)->rlock);
- lock(zbud_budlists_spinlock);
-
-Fix by grabbing the locks in opposite order in zbud_free_and_delist().
-
-Signed-off-by: Andrea Righi <andrea at betterlinux.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/staging/zcache/zcache-main.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/staging/zcache/zcache-main.c b/drivers/staging/zcache/zcache-main.c
-index f5e469d..16ad9fe 100644
---- a/drivers/staging/zcache/zcache-main.c
-+++ b/drivers/staging/zcache/zcache-main.c
-@@ -299,10 +299,12 @@ static void zbud_free_and_delist(struct zbud_hdr *zh)
- struct zbud_page *zbpg =
- container_of(zh, struct zbud_page, buddy[budnum]);
-
-+ spin_lock(&zbud_budlists_spinlock);
- spin_lock(&zbpg->lock);
- if (list_empty(&zbpg->bud_list)) {
- /* ignore zombie page... see zbud_evict_pages() */
- spin_unlock(&zbpg->lock);
-+ spin_unlock(&zbud_budlists_spinlock);
- return;
- }
- size = zbud_free(zh);
-@@ -310,7 +312,6 @@ static void zbud_free_and_delist(struct zbud_hdr *zh)
- zh_other = &zbpg->buddy[(budnum == 0) ? 1 : 0];
- if (zh_other->size == 0) { /* was unbuddied: unlist and free */
- chunks = zbud_size_to_chunks(size) ;
-- spin_lock(&zbud_budlists_spinlock);
- BUG_ON(list_empty(&zbud_unbuddied[chunks].list));
- list_del_init(&zbpg->bud_list);
- zbud_unbuddied[chunks].count--;
-@@ -318,7 +319,6 @@ static void zbud_free_and_delist(struct zbud_hdr *zh)
- zbud_free_raw_page(zbpg);
- } else { /* was buddied: move remaining buddy to unbuddied list */
- chunks = zbud_size_to_chunks(zh_other->size) ;
-- spin_lock(&zbud_budlists_spinlock);
- list_del_init(&zbpg->bud_list);
- zcache_zbud_buddied_count--;
- list_add_tail(&zbpg->bud_list, &zbud_unbuddied[chunks].list);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0006-USB-ftdi_sio-fix-problem-when-the-manufacture-is-a-N.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0006-USB-ftdi_sio-fix-problem-when-the-manufacture-is-a-N.patch
deleted file mode 100644
index b22cdfb..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0006-USB-ftdi_sio-fix-problem-when-the-manufacture-is-a-N.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 662c920fb175331db0c7813edd168390b51d3e31 Mon Sep 17 00:00:00 2001
-From: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Date: Tue, 28 Feb 2012 09:20:09 -0800
-Subject: [PATCH 006/147] USB: ftdi_sio: fix problem when the manufacture is a
- NULL string
-
-commit 656d2b3964a9d0f9864d472f8dfa2dd7dd42e6c0 upstream.
-
-On some misconfigured ftdi_sio devices, if the manufacturer string is
-NULL, the kernel will oops when the device is plugged in. This patch
-fixes the problem.
-
-Reported-by: Wojciech M Zabolotny <W.Zabolotny at elka.pw.edu.pl>
-Tested-by: Wojciech M Zabolotny <W.Zabolotny at elka.pw.edu.pl>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/serial/ftdi_sio.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
-index f030471..d170b2a 100644
---- a/drivers/usb/serial/ftdi_sio.c
-+++ b/drivers/usb/serial/ftdi_sio.c
-@@ -1763,7 +1763,8 @@ static int ftdi_8u2232c_probe(struct usb_serial *serial)
-
- dbg("%s", __func__);
-
-- if (strcmp(udev->manufacturer, "CALAO Systems") == 0)
-+ if ((udev->manufacturer) &&
-+ (strcmp(udev->manufacturer, "CALAO Systems") == 0))
- return ftdi_jtag_probe(serial);
-
- return 0;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0007-USB-ftdi_sio-add-support-for-BeagleBone-rev-A5.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0007-USB-ftdi_sio-add-support-for-BeagleBone-rev-A5.patch
deleted file mode 100644
index f87f426..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0007-USB-ftdi_sio-add-support-for-BeagleBone-rev-A5.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 5cabeb029a6230a2ade6a4e6821f444cc40816dd Mon Sep 17 00:00:00 2001
-From: Peter Korsgaard <jacmet at sunsite.dk>
-Date: Wed, 29 Feb 2012 10:05:37 +0100
-Subject: [PATCH 007/147] USB: ftdi_sio: add support for BeagleBone rev A5+
-
-commit 444aa7fa9bd752d19ce472d3e02558b987c3cc67 upstream.
-
-BeagleBone changed to the default FTDI 0403:6010 id in rev A5 to make life
-easier for Windows users, so we need a similar workaround as the Calao
-board to support it.
-
-Signed-off-by: Peter Korsgaard <jacmet at sunsite.dk>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/serial/ftdi_sio.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
-index d170b2a..30839d4 100644
---- a/drivers/usb/serial/ftdi_sio.c
-+++ b/drivers/usb/serial/ftdi_sio.c
-@@ -1763,8 +1763,8 @@ static int ftdi_8u2232c_probe(struct usb_serial *serial)
-
- dbg("%s", __func__);
-
-- if ((udev->manufacturer) &&
-- (strcmp(udev->manufacturer, "CALAO Systems") == 0))
-+ if ((udev->manufacturer && !strcmp(udev->manufacturer, "CALAO Systems")) ||
-+ (udev->product && !strcmp(udev->product, "BeagleBone/XDS100")))
- return ftdi_jtag_probe(serial);
-
- return 0;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0008-USB-Microchip-VID-mislabeled-as-Hornby-VID-in-ftdi_s.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0008-USB-Microchip-VID-mislabeled-as-Hornby-VID-in-ftdi_s.patch
deleted file mode 100644
index 7278bdd..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0008-USB-Microchip-VID-mislabeled-as-Hornby-VID-in-ftdi_s.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From f2f8f7f7d9dfc406b8e5a9a1b89e904318c8ac0f Mon Sep 17 00:00:00 2001
-From: Bruno Thomsen <bruno.thomsen at gmail.com>
-Date: Sun, 4 Mar 2012 15:19:14 +0100
-Subject: [PATCH 008/147] USB: Microchip VID mislabeled as Hornby VID in
- ftdi_sio.
-
-commit c1cee1d84001815a1b4321c49b995254c0df3100 upstream.
-
-Microchip VID (0x04d8) was mislabeled as Hornby VID according to USB-IDs.
-
-A Full Speed USB Demo Board PID (0x000a) was mislabeled as
-Hornby Elite (an Digital Command Controller Console for model railways).
-
-Most likely the Hornby based their design on
-PIC18F87J50 Full Speed USB Demo Board.
-
-Signed-off-by: Bruno Thomsen <bruno.thomsen at gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/serial/ftdi_sio.c | 2 +-
- drivers/usb/serial/ftdi_sio_ids.h | 10 +++++++---
- 2 files changed, 8 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
-index 30839d4..363e995 100644
---- a/drivers/usb/serial/ftdi_sio.c
-+++ b/drivers/usb/serial/ftdi_sio.c
-@@ -797,7 +797,7 @@ static struct usb_device_id id_table_combined [] = {
- .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
- { USB_DEVICE(ADI_VID, ADI_GNICEPLUS_PID),
- .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
-- { USB_DEVICE(HORNBY_VID, HORNBY_ELITE_PID) },
-+ { USB_DEVICE(MICROCHIP_VID, MICROCHIP_USB_BOARD_PID) },
- { USB_DEVICE(JETI_VID, JETI_SPC1201_PID) },
- { USB_DEVICE(MARVELL_VID, MARVELL_SHEEVAPLUG_PID),
- .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
-diff --git a/drivers/usb/serial/ftdi_sio_ids.h b/drivers/usb/serial/ftdi_sio_ids.h
-index 4eb7715..df87939 100644
---- a/drivers/usb/serial/ftdi_sio_ids.h
-+++ b/drivers/usb/serial/ftdi_sio_ids.h
-@@ -532,10 +532,14 @@
- #define ADI_GNICEPLUS_PID 0xF001
-
- /*
-- * Hornby Elite
-+ * Microchip Technology, Inc.
-+ *
-+ * MICROCHIP_VID (0x04D8) and MICROCHIP_USB_BOARD_PID (0x000A) are also used by:
-+ * Hornby Elite - Digital Command Control Console
-+ * http://www.hornby.com/hornby-dcc/controllers/
- */
--#define HORNBY_VID 0x04D8
--#define HORNBY_ELITE_PID 0x000A
-+#define MICROCHIP_VID 0x04D8
-+#define MICROCHIP_USB_BOARD_PID 0x000A /* CDC RS-232 Emulation Demo */
-
- /*
- * RATOC REX-USB60F
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0009-USB-ftdi_sio-new-PID-Distortec-JTAG-lock-pick.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0009-USB-ftdi_sio-new-PID-Distortec-JTAG-lock-pick.patch
deleted file mode 100644
index 08fa95c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0009-USB-ftdi_sio-new-PID-Distortec-JTAG-lock-pick.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 42eb98a4b9dc721f8565ce0d3063db8d141f516b Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Micha=C5=82=20Wr=C3=B3bel?= <michal.wrobel at flytronic.pl>
-Date: Fri, 9 Mar 2012 14:40:18 +0100
-Subject: [PATCH 009/147] USB: ftdi_sio: new PID: Distortec JTAG-lock-pick
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit 47594d5528f28a4c025c2955c68104c75815637c upstream.
-
-Signed-off-by: Micha?? Wr??bel <michal.wrobel at flytronic.pl>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/serial/ftdi_sio.c | 2 ++
- drivers/usb/serial/ftdi_sio_ids.h | 2 ++
- 2 files changed, 4 insertions(+)
-
-diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
-index 363e995..a319eaa 100644
---- a/drivers/usb/serial/ftdi_sio.c
-+++ b/drivers/usb/serial/ftdi_sio.c
-@@ -846,6 +846,8 @@ static struct usb_device_id id_table_combined [] = {
- { USB_DEVICE(ST_VID, ST_STMCLT1030_PID),
- .driver_info = (kernel_ulong_t)&ftdi_stmclite_quirk },
- { USB_DEVICE(FTDI_VID, FTDI_RF_R106) },
-+ { USB_DEVICE(FTDI_VID, FTDI_DISTORTEC_JTAG_LOCK_PICK_PID),
-+ .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
- { }, /* Optional parameter entry */
- { } /* Terminating entry */
- };
-diff --git a/drivers/usb/serial/ftdi_sio_ids.h b/drivers/usb/serial/ftdi_sio_ids.h
-index df87939..bed1b1f 100644
---- a/drivers/usb/serial/ftdi_sio_ids.h
-+++ b/drivers/usb/serial/ftdi_sio_ids.h
-@@ -97,6 +97,8 @@
- #define FTDI_TACTRIX_OPENPORT_13S_PID 0xCC49 /* OpenPort 1.3 Subaru */
- #define FTDI_TACTRIX_OPENPORT_13U_PID 0xCC4A /* OpenPort 1.3 Universal */
-
-+#define FTDI_DISTORTEC_JTAG_LOCK_PICK_PID 0xCFF8
-+
- /* SCS HF Radio Modems PID's (http://www.scs-ptc.com) */
- /* the VID is the standard ftdi vid (FTDI_VID) */
- #define FTDI_SCS_DEVICE_0_PID 0xD010 /* SCS PTC-IIusb */
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0010-USB-ftdi_sio-add-support-for-FT-X-series-devices.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0010-USB-ftdi_sio-add-support-for-FT-X-series-devices.patch
deleted file mode 100644
index 37f665b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0010-USB-ftdi_sio-add-support-for-FT-X-series-devices.patch
+++ /dev/null
@@ -1,150 +0,0 @@
-From a1460f8a00ab8864ee14c39d4dfaa0dea4cff95e Mon Sep 17 00:00:00 2001
-From: Jim Paris <jim at jtan.com>
-Date: Wed, 14 Mar 2012 17:54:25 -0400
-Subject: [PATCH 010/147] USB: ftdi_sio: add support for FT-X series devices
-
-commit dc0827c128c0ee5a58b822b99d662b59f4b8e970 upstream.
-
-Add PID 0x6015, corresponding to the new series of FT-X chips
-(FT220XD, FT201X, FT220X, FT221X, FT230X, FT231X, FT240X). They all
-appear as serial devices, and seem indistinguishable except for the
-default product string stored in their EEPROM. The baudrate
-generation matches FT232RL devices.
-
-Tested with a FT201X and FT230X at various baudrates (100 - 3000000).
-
-Sample dmesg:
- ftdi_sio: v1.6.0:USB FTDI Serial Converters Driver
- usb 2-1: new full-speed USB device number 6 using ohci_hcd
- usb 2-1: New USB device found, idVendor=0403, idProduct=6015
- usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
- usb 2-1: Product: FT230X USB Half UART
- usb 2-1: Manufacturer: FTDI
- usb 2-1: SerialNumber: DC001WI6
- ftdi_sio 2-1:1.0: FTDI USB Serial Device converter detected
- drivers/usb/serial/ftdi_sio.c: ftdi_sio_port_probe
- drivers/usb/serial/ftdi_sio.c: ftdi_determine_type: bcdDevice = 0x1000, bNumInterfaces = 1
- usb 2-1: Detected FT-X
- usb 2-1: Number of endpoints 2
- usb 2-1: Endpoint 1 MaxPacketSize 64
- usb 2-1: Endpoint 2 MaxPacketSize 64
- usb 2-1: Setting MaxPacketSize 64
- drivers/usb/serial/ftdi_sio.c: read_latency_timer
- drivers/usb/serial/ftdi_sio.c: write_latency_timer: setting latency timer = 1
- drivers/usb/serial/ftdi_sio.c: create_sysfs_attrs
- drivers/usb/serial/ftdi_sio.c: sysfs attributes for FT-X
- usb 2-1: FTDI USB Serial Device converter now attached to ttyUSB0
-
-Signed-off-by: Jim Paris <jim at jtan.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/serial/ftdi_sio.c | 20 +++++++++++++++-----
- drivers/usb/serial/ftdi_sio.h | 3 ++-
- drivers/usb/serial/ftdi_sio_ids.h | 1 +
- 3 files changed, 18 insertions(+), 6 deletions(-)
-
-diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
-index a319eaa..b64fddc 100644
---- a/drivers/usb/serial/ftdi_sio.c
-+++ b/drivers/usb/serial/ftdi_sio.c
-@@ -188,6 +188,7 @@ static struct usb_device_id id_table_combined [] = {
- .driver_info = (kernel_ulong_t)&ftdi_8u2232c_quirk },
- { USB_DEVICE(FTDI_VID, FTDI_4232H_PID) },
- { USB_DEVICE(FTDI_VID, FTDI_232H_PID) },
-+ { USB_DEVICE(FTDI_VID, FTDI_FTX_PID) },
- { USB_DEVICE(FTDI_VID, FTDI_MICRO_CHAMELEON_PID) },
- { USB_DEVICE(FTDI_VID, FTDI_RELAIS_PID) },
- { USB_DEVICE(FTDI_VID, FTDI_OPENDCC_PID) },
-@@ -870,7 +871,8 @@ static const char *ftdi_chip_name[] = {
- [FT232RL] = "FT232RL",
- [FT2232H] = "FT2232H",
- [FT4232H] = "FT4232H",
-- [FT232H] = "FT232H"
-+ [FT232H] = "FT232H",
-+ [FTX] = "FT-X"
- };
-
-
-@@ -1171,7 +1173,8 @@ static __u32 get_ftdi_divisor(struct tty_struct *tty,
- break;
- case FT232BM: /* FT232BM chip */
- case FT2232C: /* FT2232C chip */
-- case FT232RL:
-+ case FT232RL: /* FT232RL chip */
-+ case FTX: /* FT-X series */
- if (baud <= 3000000) {
- __u16 product_id = le16_to_cpu(
- port->serial->dev->descriptor.idProduct);
-@@ -1460,10 +1463,14 @@ static void ftdi_determine_type(struct usb_serial_port *port)
- } else if (version < 0x900) {
- /* Assume it's an FT232RL */
- priv->chip_type = FT232RL;
-- } else {
-+ } else if (version < 0x1000) {
- /* Assume it's an FT232H */
- priv->chip_type = FT232H;
-+ } else {
-+ /* Assume it's an FT-X series device */
-+ priv->chip_type = FTX;
- }
-+
- dev_info(&udev->dev, "Detected %s\n", ftdi_chip_name[priv->chip_type]);
- }
-
-@@ -1591,7 +1598,8 @@ static int create_sysfs_attrs(struct usb_serial_port *port)
- priv->chip_type == FT232RL ||
- priv->chip_type == FT2232H ||
- priv->chip_type == FT4232H ||
-- priv->chip_type == FT232H)) {
-+ priv->chip_type == FT232H ||
-+ priv->chip_type == FTX)) {
- retval = device_create_file(&port->dev,
- &dev_attr_latency_timer);
- }
-@@ -1613,7 +1621,8 @@ static void remove_sysfs_attrs(struct usb_serial_port *port)
- priv->chip_type == FT232RL ||
- priv->chip_type == FT2232H ||
- priv->chip_type == FT4232H ||
-- priv->chip_type == FT232H) {
-+ priv->chip_type == FT232H ||
-+ priv->chip_type == FTX) {
- device_remove_file(&port->dev, &dev_attr_latency_timer);
- }
- }
-@@ -2287,6 +2296,7 @@ static int ftdi_tiocmget(struct tty_struct *tty)
- case FT2232H:
- case FT4232H:
- case FT232H:
-+ case FTX:
- len = 2;
- break;
- default:
-diff --git a/drivers/usb/serial/ftdi_sio.h b/drivers/usb/serial/ftdi_sio.h
-index 19584fa..ed58c6f 100644
---- a/drivers/usb/serial/ftdi_sio.h
-+++ b/drivers/usb/serial/ftdi_sio.h
-@@ -157,7 +157,8 @@ enum ftdi_chip_type {
- FT232RL = 5,
- FT2232H = 6,
- FT4232H = 7,
-- FT232H = 8
-+ FT232H = 8,
-+ FTX = 9,
- };
-
- enum ftdi_sio_baudrate {
-diff --git a/drivers/usb/serial/ftdi_sio_ids.h b/drivers/usb/serial/ftdi_sio_ids.h
-index bed1b1f..ac1c42e 100644
---- a/drivers/usb/serial/ftdi_sio_ids.h
-+++ b/drivers/usb/serial/ftdi_sio_ids.h
-@@ -23,6 +23,7 @@
- #define FTDI_8U2232C_PID 0x6010 /* Dual channel device */
- #define FTDI_4232H_PID 0x6011 /* Quad channel hi-speed device */
- #define FTDI_232H_PID 0x6014 /* Single channel hi-speed device */
-+#define FTDI_FTX_PID 0x6015 /* FT-X series (FT201X, FT230X, FT231X, etc) */
- #define FTDI_SIO_PID 0x8372 /* Product Id SIO application of 8U100AX */
- #define FTDI_232RL_PID 0xFBFA /* Product ID for FT232RL */
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0011-USB-ftdi_sio-new-PID-LUMEL-PD12.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0011-USB-ftdi_sio-new-PID-LUMEL-PD12.patch
deleted file mode 100644
index 4af208d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0011-USB-ftdi_sio-new-PID-LUMEL-PD12.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From f1a77f929e5e9c5399bf0e0a589280719f96654c Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Micha=C5=82=20Wr=C3=B3bel?= <michal.wrobel at flytronic.pl>
-Date: Thu, 15 Mar 2012 17:24:04 +0100
-Subject: [PATCH 011/147] USB: ftdi_sio: new PID: LUMEL PD12
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit 57e596f3af88ef52dea9640ed5e34ecd38893a02 upstream.
-
-Signed-off-by: Micha?? Wr??bel <michal.wrobel at flytronic.pl>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/serial/ftdi_sio.c | 1 +
- drivers/usb/serial/ftdi_sio_ids.h | 2 ++
- 2 files changed, 3 insertions(+)
-
-diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
-index b64fddc..3f3ccf6 100644
---- a/drivers/usb/serial/ftdi_sio.c
-+++ b/drivers/usb/serial/ftdi_sio.c
-@@ -849,6 +849,7 @@ static struct usb_device_id id_table_combined [] = {
- { USB_DEVICE(FTDI_VID, FTDI_RF_R106) },
- { USB_DEVICE(FTDI_VID, FTDI_DISTORTEC_JTAG_LOCK_PICK_PID),
- .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
-+ { USB_DEVICE(FTDI_VID, FTDI_LUMEL_PD12_PID) },
- { }, /* Optional parameter entry */
- { } /* Terminating entry */
- };
-diff --git a/drivers/usb/serial/ftdi_sio_ids.h b/drivers/usb/serial/ftdi_sio_ids.h
-index ac1c42e..abf6bbc 100644
---- a/drivers/usb/serial/ftdi_sio_ids.h
-+++ b/drivers/usb/serial/ftdi_sio_ids.h
-@@ -30,6 +30,8 @@
-
- /*** third-party PIDs (using FTDI_VID) ***/
-
-+#define FTDI_LUMEL_PD12_PID 0x6002
-+
- /*
- * Marvell OpenRD Base, Client
- * http://www.open-rd.org
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0012-powerpc-usb-fix-bug-of-kernel-hang-when-initializing.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0012-powerpc-usb-fix-bug-of-kernel-hang-when-initializing.patch
deleted file mode 100644
index f40aa0f..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0012-powerpc-usb-fix-bug-of-kernel-hang-when-initializing.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From 9091aa838fdba8fef22a629f43cd039daa714da6 Mon Sep 17 00:00:00 2001
-From: Shengzhou Liu <Shengzhou.Liu at freescale.com>
-Date: Thu, 16 Feb 2012 18:02:20 +0800
-Subject: [PATCH 012/147] powerpc/usb: fix bug of kernel hang when
- initializing usb
-
-commit 28c56ea1431421dec51b7b229369e991481453df upstream.
-
-If USB UTMI PHY is not enable, writing to portsc register will lead to
-kernel hang during boot up.
-
-Signed-off-by: Shengzhou Liu <Shengzhou.Liu at freescale.com>
-Reported-by: Benjamin Herrenschmidt <benh at kernel.crashing.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/host/ehci-fsl.c | 4 ++++
- drivers/usb/host/ehci-fsl.h | 1 +
- 2 files changed, 5 insertions(+)
-
-diff --git a/drivers/usb/host/ehci-fsl.c b/drivers/usb/host/ehci-fsl.c
-index b556a72..da487fd 100644
---- a/drivers/usb/host/ehci-fsl.c
-+++ b/drivers/usb/host/ehci-fsl.c
-@@ -216,6 +216,8 @@ static void ehci_fsl_setup_phy(struct ehci_hcd *ehci,
- unsigned int port_offset)
- {
- u32 portsc;
-+ struct usb_hcd *hcd = ehci_to_hcd(ehci);
-+ void __iomem *non_ehci = hcd->regs;
-
- portsc = ehci_readl(ehci, &ehci->regs->port_status[port_offset]);
- portsc &= ~(PORT_PTS_MSK | PORT_PTS_PTW);
-@@ -231,6 +233,8 @@ static void ehci_fsl_setup_phy(struct ehci_hcd *ehci,
- portsc |= PORT_PTS_PTW;
- /* fall through */
- case FSL_USB2_PHY_UTMI:
-+ /* enable UTMI PHY */
-+ setbits32(non_ehci + FSL_SOC_USB_CTRL, CTRL_UTMI_PHY_EN);
- portsc |= PORT_PTS_UTMI;
- break;
- case FSL_USB2_PHY_NONE:
-diff --git a/drivers/usb/host/ehci-fsl.h b/drivers/usb/host/ehci-fsl.h
-index 4918062..bea5013 100644
---- a/drivers/usb/host/ehci-fsl.h
-+++ b/drivers/usb/host/ehci-fsl.h
-@@ -45,5 +45,6 @@
- #define FSL_SOC_USB_PRICTRL 0x40c /* NOTE: big-endian */
- #define FSL_SOC_USB_SICTRL 0x410 /* NOTE: big-endian */
- #define FSL_SOC_USB_CTRL 0x500 /* NOTE: big-endian */
-+#define CTRL_UTMI_PHY_EN (1<<9)
- #define SNOOP_SIZE_2GB 0x1e
- #endif /* _EHCI_FSL_H */
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0013-staging-r8712u-Add-missing-initialization-and-remove.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0013-staging-r8712u-Add-missing-initialization-and-remove.patch
deleted file mode 100644
index a659fd5..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0013-staging-r8712u-Add-missing-initialization-and-remove.patch
+++ /dev/null
@@ -1,107 +0,0 @@
-From 737186258370f25f44b7aa152ae1bef1e308a929 Mon Sep 17 00:00:00 2001
-From: Larry Finger <Larry.Finger at lwfinger.net>
-Date: Thu, 9 Feb 2012 16:37:17 -0600
-Subject: [PATCH 013/147] staging: r8712u: Add missing initialization and
- remove configuration parameter CONFIG_R8712_AP
-
-commit 073863432f7eaa23c7c09733414d4be2eabf5eef upstream.
-
-When this driver was upgraded to the vendor 20100831 version in
-commit 93c55dda092c7 et al,, one listhead initialization was missed.
-This broke complete operation of the driver whenever AP mode was
-enabled. This fixes https://bugs.archlinux.org/task/27996.
-
-The configuration parameter R8712_AP is misleading as the driver cannot
-function as an AP without a heavily hacked version of hostapd. Thus, it
-makes sense to remove the parameter; however the code and data configured
-for the option is left in.
-
-Signed-off-by: Larry Finger <Larry.Finger at lwfinger.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/staging/rtl8712/Kconfig | 7 -------
- drivers/staging/rtl8712/rtl871x_sta_mgt.c | 5 +----
- drivers/staging/rtl8712/sta_info.h | 4 ----
- 3 files changed, 1 insertion(+), 15 deletions(-)
-
-diff --git a/drivers/staging/rtl8712/Kconfig b/drivers/staging/rtl8712/Kconfig
-index ea37473..6a43312 100644
---- a/drivers/staging/rtl8712/Kconfig
-+++ b/drivers/staging/rtl8712/Kconfig
-@@ -9,13 +9,6 @@ config R8712U
- This option adds the Realtek RTL8712 USB device such as the D-Link DWA-130.
- If built as a module, it will be called r8712u.
-
--config R8712_AP
-- bool "Realtek RTL8712U AP code"
-- depends on R8712U
-- default N
-- ---help---
-- This option allows the Realtek RTL8712 USB device to be an Access Point.
--
- config R8712_TX_AGGR
- bool "Realtek RTL8712U Transmit Aggregation code"
- depends on R8712U && BROKEN
-diff --git a/drivers/staging/rtl8712/rtl871x_sta_mgt.c b/drivers/staging/rtl8712/rtl871x_sta_mgt.c
-index 64f5696..1247b3d 100644
---- a/drivers/staging/rtl8712/rtl871x_sta_mgt.c
-+++ b/drivers/staging/rtl8712/rtl871x_sta_mgt.c
-@@ -42,9 +42,8 @@ static void _init_stainfo(struct sta_info *psta)
- _init_listhead(&psta->hash_list);
- _r8712_init_sta_xmit_priv(&psta->sta_xmitpriv);
- _r8712_init_sta_recv_priv(&psta->sta_recvpriv);
--#ifdef CONFIG_R8712_AP
-+ _init_listhead(&psta->asoc_list);
- _init_listhead(&psta->auth_list);
--#endif
- }
-
- u32 _r8712_init_sta_priv(struct sta_priv *pstapriv)
-@@ -71,10 +70,8 @@ u32 _r8712_init_sta_priv(struct sta_priv *pstapriv)
- get_list_head(&pstapriv->free_sta_queue));
- psta++;
- }
--#ifdef CONFIG_R8712_AP
- _init_listhead(&pstapriv->asoc_list);
- _init_listhead(&pstapriv->auth_list);
--#endif
- return _SUCCESS;
- }
-
-diff --git a/drivers/staging/rtl8712/sta_info.h b/drivers/staging/rtl8712/sta_info.h
-index 48d6a14..f8016e9 100644
---- a/drivers/staging/rtl8712/sta_info.h
-+++ b/drivers/staging/rtl8712/sta_info.h
-@@ -90,7 +90,6 @@ struct sta_info {
- * curr_network(mlme_priv/security_priv/qos/ht) : AP CAP/INFO
- * sta_info: (AP & STA) CAP/INFO
- */
--#ifdef CONFIG_R8712_AP
- struct list_head asoc_list;
- struct list_head auth_list;
- unsigned int expire_to;
-@@ -98,7 +97,6 @@ struct sta_info {
- unsigned int authalg;
- unsigned char chg_txt[128];
- unsigned int tx_ra_bitmap;
--#endif
- };
-
- struct sta_priv {
-@@ -111,13 +109,11 @@ struct sta_priv {
- struct __queue sleep_q;
- struct __queue wakeup_q;
- struct _adapter *padapter;
--#ifdef CONFIG_R8712_AP
- struct list_head asoc_list;
- struct list_head auth_list;
- unsigned int auth_to; /* sec, time to expire in authenticating. */
- unsigned int assoc_to; /* sec, time to expire before associating. */
- unsigned int expire_to; /* sec , time to expire after associated. */
--#endif
- };
-
- static inline u32 wifi_mac_hash(u8 *mac)
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0014-staging-r8712u-Fix-regression-introduced-by-commit-a.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0014-staging-r8712u-Fix-regression-introduced-by-commit-a.patch
deleted file mode 100644
index 8a983e9..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0014-staging-r8712u-Fix-regression-introduced-by-commit-a.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From 10fcebe06f12c7f87ad05084848c51d69f118505 Mon Sep 17 00:00:00 2001
-From: Larry Finger <Larry.Finger at lwfinger.net>
-Date: Sat, 25 Feb 2012 18:10:20 -0600
-Subject: [PATCH 014/147] staging: r8712u: Fix regression introduced by commit
- a5ee652
-
-commit 9f4bc8cf3fe750ed093856a5f5d41c11cc12ad22 upstream.
-
-In commit a5ee652 "staging: r8712u: Interface-state not fully tracked",
-the private boolean "bup" was set false when the interface was brought down,
-as that seemed appropriate. This change has not caused any problems when
-using NetworkManager or manual control of the device; however, when wicd
-control is used, there is a locking problem in wpa_supplicant, as shown in
-https://bugzilla.kernel.org/show_bug.cgi?id=42818.
-
-This fix reverts the only code change in commit a5ee652. My
-analysis is that "bup" is badly named. In its present form, it
-seems to indicate the up/down state of the device, but its usage
-is more consistent with an initialized/uninitialized state. That
-problem will be addressed in a later patch.
-
-Note: Commit 8c213fa, which introdued asynchronous firmware loading
-for this driver, exposed this bug to a greater extent. That bug
-is addressed in the next patch in this series.
-
-This bug is also responsible for the bug in
-https://bugzilla.kernel.org/show_bug.cgi?id=42815. and this bug is
-also part of the problems discussed at https://bugs.archlinux.org/task/27996#comment89950.
-
-Tested-by: Alberto Lago Ballesteros <saniukeokusainaya at gmail.com>
-Tested-by: Adrian <agib at gmx.de>
-Signed-off-by: Larry Finger <Larry.Finger at lwfinger.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/staging/rtl8712/os_intfs.c | 2 --
- 1 file changed, 2 deletions(-)
-
-diff --git a/drivers/staging/rtl8712/os_intfs.c b/drivers/staging/rtl8712/os_intfs.c
-index 98a3d68..fb11743 100644
---- a/drivers/staging/rtl8712/os_intfs.c
-+++ b/drivers/staging/rtl8712/os_intfs.c
-@@ -476,8 +476,6 @@ static int netdev_close(struct net_device *pnetdev)
- r8712_free_assoc_resources(padapter);
- /*s2-4.*/
- r8712_free_network_queue(padapter);
-- /* The interface is no longer Up: */
-- padapter->bup = false;
- release_firmware(padapter->fw);
- /* never exit with a firmware callback pending */
- wait_for_completion(&padapter->rtl8712_fw_ready);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0015-staging-r8712u-Fix-regression-in-signal-level-after-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0015-staging-r8712u-Fix-regression-in-signal-level-after-.patch
deleted file mode 100644
index 9cf3b16..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0015-staging-r8712u-Fix-regression-in-signal-level-after-.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From a8385f8f3089aba9d0d9b0faf580e89510648367 Mon Sep 17 00:00:00 2001
-From: Larry Finger <Larry.Finger at lwfinger.net>
-Date: Sun, 26 Feb 2012 22:08:36 -0600
-Subject: [PATCH 015/147] staging: r8712u: Fix regression in signal level
- after commit c6dc001
-
-commit da3e6ec2f443ac00aa623c5921e3521f5f38efe4 upstream.
-
-In commit c6dc001 "staging: r8712u: Merging Realtek's latest (v2.6.6).
-Various fixes", the returned qual.qual member of the iw_statistics
-struct was changed. For strong signals, this change made no difference;
-however for medium and weak signals it results in a low signal that
-shows considerable fluctuation, When using wicd for a medium-strength
-AP, the value reported in the status line is reduced from 100% to 60% by
-this bug.
-
-This problem is reported in https://bugzilla.kernel.org/show_bug.cgi?id=42826.
-
-Reported-and-tested-by: Robert Crawford <wrc1944 at gmail.com>
-Signed-off-by: Larry Finger <Larry.Finger at lwfinger.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/staging/rtl8712/rtl871x_ioctl_linux.c | 8 +-------
- 1 file changed, 1 insertion(+), 7 deletions(-)
-
-diff --git a/drivers/staging/rtl8712/rtl871x_ioctl_linux.c b/drivers/staging/rtl8712/rtl871x_ioctl_linux.c
-index 507584b8..ef35bc2 100644
---- a/drivers/staging/rtl8712/rtl871x_ioctl_linux.c
-+++ b/drivers/staging/rtl8712/rtl871x_ioctl_linux.c
-@@ -2380,13 +2380,7 @@ static struct iw_statistics *r871x_get_wireless_stats(struct net_device *dev)
- tmp_qual = padapter->recvpriv.signal;
- tmp_noise = padapter->recvpriv.noise;
- piwstats->qual.level = tmp_level;
-- /*piwstats->qual.qual = tmp_qual;
-- * The NetworkManager of Fedora 10, 13 will use the link
-- * quality for its display.
-- * So, use the fw_rssi on link quality variable because
-- * fw_rssi will be updated per 2 seconds.
-- */
-- piwstats->qual.qual = tmp_level;
-+ piwstats->qual.qual = tmp_qual;
- piwstats->qual.noise = tmp_noise;
- }
- piwstats->qual.updated = IW_QUAL_ALL_UPDATED;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0016-usb-dwc3-fix-bogus-test-in-dwc3_gadget_start_isoc.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0016-usb-dwc3-fix-bogus-test-in-dwc3_gadget_start_isoc.patch
deleted file mode 100644
index 22a9c5c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0016-usb-dwc3-fix-bogus-test-in-dwc3_gadget_start_isoc.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From 0a7695bc47ddfdeaaa1b30b88912f38a481e3abd Mon Sep 17 00:00:00 2001
-From: Paul Zimmerman <Paul.Zimmerman at synopsys.com>
-Date: Fri, 17 Feb 2012 14:10:16 -0800
-Subject: [PATCH 016/147] usb: dwc3: fix bogus test in dwc3_gadget_start_isoc
-
-commit 9bafa56c7cee5c6fa68de5924220abb220c7e229 upstream.
-
-Zero is a valid value for a microframe number. So remove the bogus
-test for non-zero in dwc3_gadget_start_isoc().
-
-Signed-off-by: Paul Zimmerman <paulz at synopsys.com>
-Signed-off-by: Felipe Balbi <balbi at ti.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/dwc3/gadget.c | 16 +++++-----------
- 1 file changed, 5 insertions(+), 11 deletions(-)
-
-diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
-index 5802720..41a2ea6 100644
---- a/drivers/usb/dwc3/gadget.c
-+++ b/drivers/usb/dwc3/gadget.c
-@@ -1405,7 +1405,7 @@ static void dwc3_endpoint_transfer_complete(struct dwc3 *dwc,
- static void dwc3_gadget_start_isoc(struct dwc3 *dwc,
- struct dwc3_ep *dep, const struct dwc3_event_depevt *event)
- {
-- u32 uf;
-+ u32 uf, mask;
-
- if (list_empty(&dep->request_list)) {
- dev_vdbg(dwc->dev, "ISOC ep %s run out for requests.\n",
-@@ -1413,16 +1413,10 @@ static void dwc3_gadget_start_isoc(struct dwc3 *dwc,
- return;
- }
-
-- if (event->parameters) {
-- u32 mask;
--
-- mask = ~(dep->interval - 1);
-- uf = event->parameters & mask;
-- /* 4 micro frames in the future */
-- uf += dep->interval * 4;
-- } else {
-- uf = 0;
-- }
-+ mask = ~(dep->interval - 1);
-+ uf = event->parameters & mask;
-+ /* 4 micro frames in the future */
-+ uf += dep->interval * 4;
-
- __dwc3_gadget_kick_transfer(dep, uf, 1);
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0017-usb-dwc3-use-proper-function-for-setting-endpoint-na.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0017-usb-dwc3-use-proper-function-for-setting-endpoint-na.patch
deleted file mode 100644
index 582b9f9..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0017-usb-dwc3-use-proper-function-for-setting-endpoint-na.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From cdbcc2f017a258caca6390e7353709a6603bc452 Mon Sep 17 00:00:00 2001
-From: Anton Tikhomirov <av.tikhomirov at samsung.com>
-Date: Thu, 23 Feb 2012 15:38:46 +0900
-Subject: [PATCH 017/147] usb: dwc3: use proper function for setting endpoint
- name
-
-commit 27a78d6a283d6782438f72306746afe4bf44c215 upstream.
-
-It's wrong to use the size of array as an argument for strncat.
-Memory corruption is possible. strlcat is exactly what we need here.
-
-Signed-off-by: Anton Tikhomirov <av.tikhomirov at samsung.com>
-Signed-off-by: Felipe Balbi <balbi at ti.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/dwc3/gadget.c | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
-index 41a2ea6..dfcda94 100644
---- a/drivers/usb/dwc3/gadget.c
-+++ b/drivers/usb/dwc3/gadget.c
-@@ -449,16 +449,16 @@ static int dwc3_gadget_ep_enable(struct usb_ep *ep,
-
- switch (usb_endpoint_type(desc)) {
- case USB_ENDPOINT_XFER_CONTROL:
-- strncat(dep->name, "-control", sizeof(dep->name));
-+ strlcat(dep->name, "-control", sizeof(dep->name));
- break;
- case USB_ENDPOINT_XFER_ISOC:
-- strncat(dep->name, "-isoc", sizeof(dep->name));
-+ strlcat(dep->name, "-isoc", sizeof(dep->name));
- break;
- case USB_ENDPOINT_XFER_BULK:
-- strncat(dep->name, "-bulk", sizeof(dep->name));
-+ strlcat(dep->name, "-bulk", sizeof(dep->name));
- break;
- case USB_ENDPOINT_XFER_INT:
-- strncat(dep->name, "-int", sizeof(dep->name));
-+ strlcat(dep->name, "-int", sizeof(dep->name));
- break;
- default:
- dev_err(dwc->dev, "invalid endpoint transfer type\n");
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0018-usb-gadgetfs-return-number-of-bytes-on-ep0-read-requ.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0018-usb-gadgetfs-return-number-of-bytes-on-ep0-read-requ.patch
deleted file mode 100644
index c226f85..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0018-usb-gadgetfs-return-number-of-bytes-on-ep0-read-requ.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 868208aaab0df10df8bff2cb3bc2ccae0fa0a16d Mon Sep 17 00:00:00 2001
-From: Thomas Faber <thfabba at gmx.de>
-Date: Fri, 2 Mar 2012 09:41:50 +0100
-Subject: [PATCH 018/147] usb: gadgetfs: return number of bytes on ep0 read
- request
-
-commit 85b4b3c8c189e0159101f7628a71411af072ff69 upstream.
-
-A read from GadgetFS endpoint 0 during the data stage of a control
-request would always return 0 on success (as returned by
-wait_event_interruptible) despite having written data into the user
-buffer.
-This patch makes it correctly set the return value to the number of
-bytes read.
-
-Signed-off-by: Thomas Faber <thfabba at gmx.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/gadget/inode.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/drivers/usb/gadget/inode.c b/drivers/usb/gadget/inode.c
-index 9361251..2a96f57 100644
---- a/drivers/usb/gadget/inode.c
-+++ b/drivers/usb/gadget/inode.c
-@@ -1043,6 +1043,8 @@ ep0_read (struct file *fd, char __user *buf, size_t len, loff_t *ptr)
- // FIXME don't call this with the spinlock held ...
- if (copy_to_user (buf, dev->req->buf, len))
- retval = -EFAULT;
-+ else
-+ retval = len;
- clean_req (dev->gadget->ep0, dev->req);
- /* NOTE userspace can't yet choose to stall */
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0019-USB-gadget-Make-g_hid-device-class-conform-to-spec.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0019-USB-gadget-Make-g_hid-device-class-conform-to-spec.patch
deleted file mode 100644
index 4751b7f..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0019-USB-gadget-Make-g_hid-device-class-conform-to-spec.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 68f1d29a63c33ab9478d1d5b11d4ba522fa3d167 Mon Sep 17 00:00:00 2001
-From: Orjan Friberg <of at flatfrog.com>
-Date: Wed, 7 Mar 2012 17:16:14 +0100
-Subject: [PATCH 019/147] USB: gadget: Make g_hid device class conform to
- spec.
-
-commit 33d2832ab0149a26418d360af3c444969a63fb28 upstream.
-
-HID devices should specify this in their interface descriptors, not in the
-device descriptor. This fixes a "missing hardware id" bug under Windows 7 with
-a VIA VL800 (3.0) controller.
-
-Signed-off-by: Orjan Friberg <of at flatfrog.com>
-Cc: Felipe Balbi <balbi at ti.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/gadget/hid.c | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/usb/gadget/hid.c b/drivers/usb/gadget/hid.c
-index f888c3e..3493adf 100644
---- a/drivers/usb/gadget/hid.c
-+++ b/drivers/usb/gadget/hid.c
-@@ -60,9 +60,9 @@ static struct usb_device_descriptor device_desc = {
- /* .bDeviceClass = USB_CLASS_COMM, */
- /* .bDeviceSubClass = 0, */
- /* .bDeviceProtocol = 0, */
-- .bDeviceClass = 0xEF,
-- .bDeviceSubClass = 2,
-- .bDeviceProtocol = 1,
-+ .bDeviceClass = USB_CLASS_PER_INTERFACE,
-+ .bDeviceSubClass = 0,
-+ .bDeviceProtocol = 0,
- /* .bMaxPacketSize0 = f(hardware) */
-
- /* Vendor and product id can be overridden by module parameters. */
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0020-futex-Cover-all-PI-opcodes-with-cmpxchg-enabled-chec.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0020-futex-Cover-all-PI-opcodes-with-cmpxchg-enabled-chec.patch
deleted file mode 100644
index 878a9a5..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0020-futex-Cover-all-PI-opcodes-with-cmpxchg-enabled-chec.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-From 67cc4b87ba54c6101c7fd5dbde9b2547463339d1 Mon Sep 17 00:00:00 2001
-From: Thomas Gleixner <tglx at linutronix.de>
-Date: Wed, 15 Feb 2012 12:08:34 +0100
-Subject: [PATCH 020/147] futex: Cover all PI opcodes with cmpxchg enabled
- check
-
-commit 59263b513c11398cd66a52d4c5b2b118ce1e0359 upstream.
-
-Some of the newer futex PI opcodes do not check the cmpxchg enabled
-variable and call unconditionally into the handling functions. Cover
-all PI opcodes in a separate check.
-
-Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
-Cc: Peter Zijlstra <peterz at infradead.org>
-Cc: Darren Hart <dvhart at linux.intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- kernel/futex.c | 19 +++++++++++++------
- 1 file changed, 13 insertions(+), 6 deletions(-)
-
-diff --git a/kernel/futex.c b/kernel/futex.c
-index 1614be2..0677023 100644
---- a/kernel/futex.c
-+++ b/kernel/futex.c
-@@ -2641,6 +2641,16 @@ long do_futex(u32 __user *uaddr, int op, u32 val, ktime_t *timeout,
- }
-
- switch (cmd) {
-+ case FUTEX_LOCK_PI:
-+ case FUTEX_UNLOCK_PI:
-+ case FUTEX_TRYLOCK_PI:
-+ case FUTEX_WAIT_REQUEUE_PI:
-+ case FUTEX_CMP_REQUEUE_PI:
-+ if (!futex_cmpxchg_enabled)
-+ return -ENOSYS;
-+ }
-+
-+ switch (cmd) {
- case FUTEX_WAIT:
- val3 = FUTEX_BITSET_MATCH_ANY;
- case FUTEX_WAIT_BITSET:
-@@ -2661,16 +2671,13 @@ long do_futex(u32 __user *uaddr, int op, u32 val, ktime_t *timeout,
- ret = futex_wake_op(uaddr, flags, uaddr2, val, val2, val3);
- break;
- case FUTEX_LOCK_PI:
-- if (futex_cmpxchg_enabled)
-- ret = futex_lock_pi(uaddr, flags, val, timeout, 0);
-+ ret = futex_lock_pi(uaddr, flags, val, timeout, 0);
- break;
- case FUTEX_UNLOCK_PI:
-- if (futex_cmpxchg_enabled)
-- ret = futex_unlock_pi(uaddr, flags);
-+ ret = futex_unlock_pi(uaddr, flags);
- break;
- case FUTEX_TRYLOCK_PI:
-- if (futex_cmpxchg_enabled)
-- ret = futex_lock_pi(uaddr, flags, 0, timeout, 1);
-+ ret = futex_lock_pi(uaddr, flags, 0, timeout, 1);
- break;
- case FUTEX_WAIT_REQUEUE_PI:
- val3 = FUTEX_BITSET_MATCH_ANY;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0021-sysfs-Fix-memory-leak-in-sysfs_sd_setsecdata.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0021-sysfs-Fix-memory-leak-in-sysfs_sd_setsecdata.patch
deleted file mode 100644
index 5f58a38..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0021-sysfs-Fix-memory-leak-in-sysfs_sd_setsecdata.patch
+++ /dev/null
@@ -1,92 +0,0 @@
-From 58d245d715be41e6b0d736466a9589d75156f0ff Mon Sep 17 00:00:00 2001
-From: Masami Ichikawa <masami256 at gmail.com>
-Date: Tue, 21 Feb 2012 07:43:50 +0900
-Subject: [PATCH 021/147] sysfs: Fix memory leak in sysfs_sd_setsecdata().
-
-commit 93518dd2ebafcc761a8637b2877008cfd748c202 upstream.
-
-This patch fixies follwing two memory leak patterns that reported by kmemleak.
-sysfs_sd_setsecdata() is called during sys_lsetxattr() operation.
-It checks sd->s_iattr is NULL or not. Then if it is NULL, it calls
-sysfs_init_inode_attrs() to allocate memory.
-That code is this.
-
-iattrs = sd->s_iattr;
-if (!iattrs)
- iattrs = sysfs_init_inode_attrs(sd);
-
-The iattrs recieves sysfs_init_inode_attrs()'s result, but sd->s_iattr
-doesn't know the address. so it needs to set correct address to
-sd->s_iattr to free memory in other function.
-
-unreferenced object 0xffff880250b73e60 (size 32):
- comm "systemd", pid 1, jiffies 4294683888 (age 94.553s)
- hex dump (first 32 bytes):
- 73 79 73 74 65 6d 5f 75 3a 6f 62 6a 65 63 74 5f system_u:object_
- 72 3a 73 79 73 66 73 5f 74 3a 73 30 00 00 00 00 r:sysfs_t:s0....
- backtrace:
- [<ffffffff814cb1d0>] kmemleak_alloc+0x73/0x98
- [<ffffffff811270ab>] __kmalloc+0x100/0x12c
- [<ffffffff8120775a>] context_struct_to_string+0x106/0x210
- [<ffffffff81207cc1>] security_sid_to_context_core+0x10b/0x129
- [<ffffffff812090ef>] security_sid_to_context+0x10/0x12
- [<ffffffff811fb0da>] selinux_inode_getsecurity+0x7d/0xa8
- [<ffffffff811fb127>] selinux_inode_getsecctx+0x22/0x2e
- [<ffffffff811f4d62>] security_inode_getsecctx+0x16/0x18
- [<ffffffff81191dad>] sysfs_setxattr+0x96/0x117
- [<ffffffff811542f0>] __vfs_setxattr_noperm+0x73/0xd9
- [<ffffffff811543d9>] vfs_setxattr+0x83/0xa1
- [<ffffffff811544c6>] setxattr+0xcf/0x101
- [<ffffffff81154745>] sys_lsetxattr+0x6a/0x8f
- [<ffffffff814efda9>] system_call_fastpath+0x16/0x1b
- [<ffffffffffffffff>] 0xffffffffffffffff
-unreferenced object 0xffff88024163c5a0 (size 96):
- comm "systemd", pid 1, jiffies 4294683888 (age 94.553s)
- hex dump (first 32 bytes):
- 00 00 00 00 ed 41 00 00 00 00 00 00 00 00 00 00 .....A..........
- 00 00 00 00 00 00 00 00 0c 64 42 4f 00 00 00 00 .........dBO....
- backtrace:
- [<ffffffff814cb1d0>] kmemleak_alloc+0x73/0x98
- [<ffffffff81127402>] kmem_cache_alloc_trace+0xc4/0xee
- [<ffffffff81191cbe>] sysfs_init_inode_attrs+0x2a/0x83
- [<ffffffff81191dd6>] sysfs_setxattr+0xbf/0x117
- [<ffffffff811542f0>] __vfs_setxattr_noperm+0x73/0xd9
- [<ffffffff811543d9>] vfs_setxattr+0x83/0xa1
- [<ffffffff811544c6>] setxattr+0xcf/0x101
- [<ffffffff81154745>] sys_lsetxattr+0x6a/0x8f
- [<ffffffff814efda9>] system_call_fastpath+0x16/0x1b
- [<ffffffffffffffff>] 0xffffffffffffffff
-`
-
-Signed-off-by: Masami Ichikawa <masami256 at gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/sysfs/inode.c | 11 ++++++-----
- 1 file changed, 6 insertions(+), 5 deletions(-)
-
-diff --git a/fs/sysfs/inode.c b/fs/sysfs/inode.c
-index deb804b..9db61a4 100644
---- a/fs/sysfs/inode.c
-+++ b/fs/sysfs/inode.c
-@@ -136,12 +136,13 @@ static int sysfs_sd_setsecdata(struct sysfs_dirent *sd, void **secdata, u32 *sec
- void *old_secdata;
- size_t old_secdata_len;
-
-- iattrs = sd->s_iattr;
-- if (!iattrs)
-- iattrs = sysfs_init_inode_attrs(sd);
-- if (!iattrs)
-- return -ENOMEM;
-+ if (!sd->s_iattr) {
-+ sd->s_iattr = sysfs_init_inode_attrs(sd);
-+ if (!sd->s_iattr)
-+ return -ENOMEM;
-+ }
-
-+ iattrs = sd->s_iattr;
- old_secdata = iattrs->ia_secdata;
- old_secdata_len = iattrs->ia_secdata_len;
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0022-tty-moxa-fix-bit-test-in-moxa_start.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0022-tty-moxa-fix-bit-test-in-moxa_start.patch
deleted file mode 100644
index 201e2b1..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0022-tty-moxa-fix-bit-test-in-moxa_start.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 94f82d523fc497167379eb0624420a2bd535103d Mon Sep 17 00:00:00 2001
-From: Dan Carpenter <dan.carpenter at oracle.com>
-Date: Wed, 7 Mar 2012 13:05:00 +0300
-Subject: [PATCH 022/147] tty: moxa: fix bit test in moxa_start()
-
-commit 58112dfbfe02d803566a2c6c8bd97b5fa3c62cdc upstream.
-
-This is supposed to be doing a shift before the comparison instead of
-just doing a bitwise AND directly. The current code means the start()
-just returns without doing anything.
-
-Signed-off-by: Dan Carpenter <dan.carpenter at oracle.com>
-Acked-by: Jiri Slaby <jslaby at suse.cz>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/tty/moxa.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/tty/moxa.c b/drivers/tty/moxa.c
-index d15a071..0174d2d 100644
---- a/drivers/tty/moxa.c
-+++ b/drivers/tty/moxa.c
-@@ -1331,7 +1331,7 @@ static void moxa_start(struct tty_struct *tty)
- if (ch == NULL)
- return;
-
-- if (!(ch->statusflags & TXSTOPPED))
-+ if (!test_bit(TXSTOPPED, &ch->statusflags))
- return;
-
- MoxaPortTxEnable(ch);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0023-TTY-Wrong-unicode-value-copied-in-con_set_unimap.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0023-TTY-Wrong-unicode-value-copied-in-con_set_unimap.patch
deleted file mode 100644
index c688faa..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0023-TTY-Wrong-unicode-value-copied-in-con_set_unimap.patch
+++ /dev/null
@@ -1,119 +0,0 @@
-From 7d00c6261eadb39ffffd02141aa566deda4d7cb3 Mon Sep 17 00:00:00 2001
-From: Liz Clark <liz.clark at hp.com>
-Date: Thu, 15 Mar 2012 10:33:29 -0700
-Subject: [PATCH 023/147] TTY: Wrong unicode value copied in con_set_unimap()
-
-commit 4a4c61b7ce26bfc9d49ea4bd121d52114bad9f99 upstream.
-
-Bugzilla 40012: PIO_UNIMAP bug: error updating Unicode-to-font map
-https://bugzilla.kernel.org/show_bug.cgi?id=40012
-
-The unicode font map for the virtual console is a 32x32x64 table which
-allocates rows dynamically as entries are added. The unicode value
-increases sequentially and should count all entries even in empty
-rows. The defect is when copying the unicode font map in con_set_unimap(),
-the unicode value is not incremented properly. The wrong unicode value
-is entered in the new font map.
-
-Signed-off-by: Liz Clark <liz.clark at hp.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/tty/vt/consolemap.c | 51 ++++++++++++++++++++++++++++++++++++-------
- 1 file changed, 43 insertions(+), 8 deletions(-)
-
-diff --git a/drivers/tty/vt/consolemap.c b/drivers/tty/vt/consolemap.c
-index 45d3e80..f343808 100644
---- a/drivers/tty/vt/consolemap.c
-+++ b/drivers/tty/vt/consolemap.c
-@@ -516,6 +516,7 @@ int con_set_unimap(struct vc_data *vc, ushort ct, struct unipair __user *list)
- int err = 0, err1, i;
- struct uni_pagedir *p, *q;
-
-+ /* Save original vc_unipagdir_loc in case we allocate a new one */
- p = (struct uni_pagedir *)*vc->vc_uni_pagedir_loc;
- if (p->readonly) return -EIO;
-
-@@ -528,26 +529,57 @@ int con_set_unimap(struct vc_data *vc, ushort ct, struct unipair __user *list)
- err1 = con_clear_unimap(vc, NULL);
- if (err1) return err1;
-
-+ /*
-+ * Since refcount was > 1, con_clear_unimap() allocated a
-+ * a new uni_pagedir for this vc. Re: p != q
-+ */
- q = (struct uni_pagedir *)*vc->vc_uni_pagedir_loc;
-- for (i = 0, l = 0; i < 32; i++)
-+
-+ /*
-+ * uni_pgdir is a 32*32*64 table with rows allocated
-+ * when its first entry is added. The unicode value must
-+ * still be incremented for empty rows. We are copying
-+ * entries from "p" (old) to "q" (new).
-+ */
-+ l = 0; /* unicode value */
-+ for (i = 0; i < 32; i++)
- if ((p1 = p->uni_pgdir[i]))
- for (j = 0; j < 32; j++)
-- if ((p2 = p1[j]))
-+ if ((p2 = p1[j])) {
- for (k = 0; k < 64; k++, l++)
- if (p2[k] != 0xffff) {
-+ /*
-+ * Found one, copy entry for unicode
-+ * l with fontpos value p2[k].
-+ */
- err1 = con_insert_unipair(q, l, p2[k]);
- if (err1) {
- p->refcount++;
- *vc->vc_uni_pagedir_loc = (unsigned long)p;
- con_release_unimap(q);
- kfree(q);
-- return err1;
-+ return err1;
- }
-- }
-- p = q;
-- } else if (p == dflt)
-+ }
-+ } else {
-+ /* Account for row of 64 empty entries */
-+ l += 64;
-+ }
-+ else
-+ /* Account for empty table */
-+ l += 32 * 64;
-+
-+ /*
-+ * Finished copying font table, set vc_uni_pagedir to new table
-+ */
-+ p = q;
-+ } else if (p == dflt) {
- dflt = NULL;
--
-+ }
-+
-+ /*
-+ * Insert user specified unicode pairs into new table.
-+ */
- while (ct--) {
- unsigned short unicode, fontpos;
- __get_user(unicode, &list->unicode);
-@@ -557,11 +589,14 @@ int con_set_unimap(struct vc_data *vc, ushort ct, struct unipair __user *list)
- list++;
- }
-
-+ /*
-+ * Merge with fontmaps of any other virtual consoles.
-+ */
- if (con_unify_unimap(vc, p))
- return err;
-
- for (i = 0; i <= 3; i++)
-- set_inverse_transl(vc, p, i); /* Update all inverse translations */
-+ set_inverse_transl(vc, p, i); /* Update inverse translations */
- set_inverse_trans_unicode(vc, p);
-
- return err;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0024-USB-serial-fix-console-error-reporting.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0024-USB-serial-fix-console-error-reporting.patch
deleted file mode 100644
index 3d057d3..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0024-USB-serial-fix-console-error-reporting.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 6a49ff9d91721997f9c625b79e70b9a37bfdf10f Mon Sep 17 00:00:00 2001
-From: Johan Hovold <jhovold at gmail.com>
-Date: Fri, 10 Feb 2012 13:20:49 +0100
-Subject: [PATCH 024/147] USB: serial: fix console error reporting
-
-commit 548dd4b6da8a8e428453d55f7fa7b8a46498d147 upstream.
-
-Do not report errors in write path if port is used as a console as this
-may trigger the same error (and error report) resulting in a loop.
-
-Reported-by: Stephen Hemminger <shemminger at vyatta.com>
-Signed-off-by: Johan Hovold <jhovold at gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/serial/generic.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/usb/serial/generic.c b/drivers/usb/serial/generic.c
-index e4db5ad..9f0b2bf 100644
---- a/drivers/usb/serial/generic.c
-+++ b/drivers/usb/serial/generic.c
-@@ -215,8 +215,10 @@ retry:
- clear_bit(i, &port->write_urbs_free);
- result = usb_submit_urb(urb, GFP_ATOMIC);
- if (result) {
-- dev_err(&port->dev, "%s - error submitting urb: %d\n",
-+ if (!port->port.console) {
-+ dev_err(&port->dev, "%s - error submitting urb: %d\n",
- __func__, result);
-+ }
- set_bit(i, &port->write_urbs_free);
- spin_lock_irqsave(&port->lock, flags);
- port->tx_bytes -= count;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0025-cdc-wdm-Fix-more-races-on-the-read-path.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0025-cdc-wdm-Fix-more-races-on-the-read-path.patch
deleted file mode 100644
index 8e2bd77..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0025-cdc-wdm-Fix-more-races-on-the-read-path.patch
+++ /dev/null
@@ -1,87 +0,0 @@
-From 028d778c63336663590f673854c0e128e1b8fa34 Mon Sep 17 00:00:00 2001
-From: Ben Hutchings <ben at decadent.org.uk>
-Date: Sun, 12 Feb 2012 06:00:41 +0000
-Subject: [PATCH 025/147] cdc-wdm: Fix more races on the read path
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit 711c68b3c0f7a924ffbee4aa962d8f62b85188ff upstream.
-
-We must not allow the input buffer length to change while we're
-shuffling the buffer contents. We also mustn't clear the WDM_READ
-flag after more data might have arrived. Therefore move both of these
-into the spinlocked region at the bottom of wdm_read().
-
-When reading desc->length without holding the iuspin lock, use
-ACCESS_ONCE() to ensure the compiler doesn't re-read it with
-inconsistent results.
-
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
-Tested-by: Bj??rn Mork <bjorn at mork.no>
-Cc: Oliver Neukum <oliver at neukum.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/class/cdc-wdm.c | 16 +++++++++++-----
- 1 file changed, 11 insertions(+), 5 deletions(-)
-
-diff --git a/drivers/usb/class/cdc-wdm.c b/drivers/usb/class/cdc-wdm.c
-index fd4aee1..eb650b7 100644
---- a/drivers/usb/class/cdc-wdm.c
-+++ b/drivers/usb/class/cdc-wdm.c
-@@ -397,7 +397,7 @@ outnl:
- static ssize_t wdm_read
- (struct file *file, char __user *buffer, size_t count, loff_t *ppos)
- {
-- int rv, cntr = 0;
-+ int rv, cntr;
- int i = 0;
- struct wdm_device *desc = file->private_data;
-
-@@ -406,7 +406,8 @@ static ssize_t wdm_read
- if (rv < 0)
- return -ERESTARTSYS;
-
-- if (desc->length == 0) {
-+ cntr = ACCESS_ONCE(desc->length);
-+ if (cntr == 0) {
- desc->read = 0;
- retry:
- if (test_bit(WDM_DISCONNECTING, &desc->flags)) {
-@@ -457,25 +458,30 @@ retry:
- goto retry;
- }
- clear_bit(WDM_READ, &desc->flags);
-+ cntr = desc->length;
- spin_unlock_irq(&desc->iuspin);
- }
-
-- cntr = count > desc->length ? desc->length : count;
-+ if (cntr > count)
-+ cntr = count;
- rv = copy_to_user(buffer, desc->ubuf, cntr);
- if (rv > 0) {
- rv = -EFAULT;
- goto err;
- }
-
-+ spin_lock_irq(&desc->iuspin);
-+
- for (i = 0; i < desc->length - cntr; i++)
- desc->ubuf[i] = desc->ubuf[i + cntr];
-
-- spin_lock_irq(&desc->iuspin);
- desc->length -= cntr;
-- spin_unlock_irq(&desc->iuspin);
- /* in case we had outstanding data */
- if (!desc->length)
- clear_bit(WDM_READ, &desc->flags);
-+
-+ spin_unlock_irq(&desc->iuspin);
-+
- rv = cntr;
-
- err:
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0026-cdc-wdm-Don-t-clear-WDM_READ-unless-entire-read-buff.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0026-cdc-wdm-Don-t-clear-WDM_READ-unless-entire-read-buff.patch
deleted file mode 100644
index 21eb3c9..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0026-cdc-wdm-Don-t-clear-WDM_READ-unless-entire-read-buff.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 77094c1a611d4c874a2903e9a702d35a4f5a6be9 Mon Sep 17 00:00:00 2001
-From: Ben Hutchings <ben at decadent.org.uk>
-Date: Sun, 12 Feb 2012 06:02:43 +0000
-Subject: [PATCH 026/147] cdc-wdm: Don't clear WDM_READ unless entire read
- buffer is emptied
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit b7a205545345578712611106b371538992e142ff upstream.
-
-The WDM_READ flag is cleared later iff desc->length is reduced to 0.
-
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
-Tested-by: Bj??rn Mork <bjorn at mork.no>
-Cc: Oliver Neukum <oliver at neukum.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/class/cdc-wdm.c | 1 -
- 1 file changed, 1 deletion(-)
-
-diff --git a/drivers/usb/class/cdc-wdm.c b/drivers/usb/class/cdc-wdm.c
-index eb650b7..9eb71d8 100644
---- a/drivers/usb/class/cdc-wdm.c
-+++ b/drivers/usb/class/cdc-wdm.c
-@@ -457,7 +457,6 @@ retry:
- spin_unlock_irq(&desc->iuspin);
- goto retry;
- }
-- clear_bit(WDM_READ, &desc->flags);
- cntr = desc->length;
- spin_unlock_irq(&desc->iuspin);
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0027-usb-fsl_udc_core-Fix-scheduling-while-atomic-dump-me.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0027-usb-fsl_udc_core-Fix-scheduling-while-atomic-dump-me.patch
deleted file mode 100644
index b2cc8cc..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0027-usb-fsl_udc_core-Fix-scheduling-while-atomic-dump-me.patch
+++ /dev/null
@@ -1,134 +0,0 @@
-From 0e5ef14de4874bc31ca8ab4bd1759ead8151950e Mon Sep 17 00:00:00 2001
-From: Peter Chen <peter.chen at freescale.com>
-Date: Thu, 16 Feb 2012 09:36:25 +0800
-Subject: [PATCH 027/147] usb: fsl_udc_core: Fix scheduling while atomic dump
- message
-
-commit c5cc5ed86667d4ae74fe40ee4ed893f4b46aba05 upstream.
-
-When loading g_ether gadget, there is below message:
-
-Backtrace:
-[<80012248>] (dump_backtrace+0x0/0x10c) from [<803cb42c>] (dump_stack+0x18/0x1c)
-r7:00000000 r6:80512000 r5:8052bef8 r4:80513f30
-[<803cb414>] (dump_stack+0x0/0x1c) from [<8000feb4>] (show_regs+0x44/0x50)
-[<8000fe70>] (show_regs+0x0/0x50) from [<8004c840>] (__schedule_bug+0x68/0x84)
-r5:8052bef8 r4:80513f30
-[<8004c7d8>] (__schedule_bug+0x0/0x84) from [<803cd0e4>] (__schedule+0x4b0/0x528)
-r5:8052bef8 r4:809aad00
-[<803ccc34>] (__schedule+0x0/0x528) from [<803cd214>] (_cond_resched+0x44/0x58)
-[<803cd1d0>] (_cond_resched+0x0/0x58) from [<800a9488>] (dma_pool_alloc+0x184/0x250)
- r5:9f9b4000 r4:9fb4fb80
- [<800a9304>] (dma_pool_alloc+0x0/0x250) from [<802a8ad8>] (fsl_req_to_dtd+0xac/0x180)
-[<802a8a2c>] (fsl_req_to_dtd+0x0/0x180) from [<802a8ce4>] (fsl_ep_queue+0x138/0x274)
-[<802a8bac>] (fsl_ep_queue+0x0/0x274) from [<7f004328>] (composite_setup+0x2d4/0xfac [g_ether])
-[<7f004054>] (composite_setup+0x0/0xfac [g_ether]) from [<802a9bb4>] (fsl_udc_irq+0x8dc/0xd38)
-[<802a92d8>] (fsl_udc_irq+0x0/0xd38) from [<800704f8>] (handle_irq_event_percpu+0x54/0x188)
-[<800704a4>] (handle_irq_event_percpu+0x0/0x188) from [<80070674>] (handle_irq_event+0x48/0x68)
-[<8007062c>] (handle_irq_event+0x0/0x68) from [<800738ec>] (handle_level_irq+0xb4/0x138)
- r5:80514f94 r4:80514f40
- [<80073838>] (handle_level_irq+0x0/0x138) from [<8006ffa4>] (generic_handle_irq+0x38/0x44)
- r7:00000012 r6:80510b1c r5:80529860 r4:80512000
- [<8006ff6c>] (generic_handle_irq+0x0/0x44) from [<8000f4c4>] (handle_IRQ+0x54/0xb4)
-[<8000f470>] (handle_IRQ+0x0/0xb4) from [<800085b8>] (tzic_handle_irq+0x64/0x94)
- r9:412fc085 r8:00000000 r7:80513f30 r6:00000001 r5:00000000
- r4:00000000
- [<80008554>] (tzic_handle_irq+0x0/0x94) from [<8000e680>] (__irq_svc+0x40/0x60)
-
-The reason of above dump message is calling dma_poll_alloc with can-schedule
-mem_flags at atomic context.
-
-To fix this problem, below changes are made:
-- fsl_req_to_dtd doesn't need to be protected by spin_lock_irqsave,
-as struct usb_request can be access at process context. Move lock
-to beginning of hardware visit (fsl_queue_td).
-- Change the memory flag which using to allocate dTD descriptor buffer,
-the memory flag can be from gadget layer.
-
-It is tested at i.mx51 bbg board with g_mass_storage, g_ether, g_serial.
-
-Signed-off-by: Peter Chen <peter.chen at freescale.com>
-Acked-by: Li Yang <leoli at freescale.com>
-Signed-off-by: Felipe Balbi <balbi at ti.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/gadget/fsl_udc_core.c | 18 ++++++++----------
- 1 file changed, 8 insertions(+), 10 deletions(-)
-
-diff --git a/drivers/usb/gadget/fsl_udc_core.c b/drivers/usb/gadget/fsl_udc_core.c
-index d7ea6c0..9085d14 100644
---- a/drivers/usb/gadget/fsl_udc_core.c
-+++ b/drivers/usb/gadget/fsl_udc_core.c
-@@ -768,7 +768,7 @@ static void fsl_queue_td(struct fsl_ep *ep, struct fsl_req *req)
- * @is_last: return flag if it is the last dTD of the request
- * return: pointer to the built dTD */
- static struct ep_td_struct *fsl_build_dtd(struct fsl_req *req, unsigned *length,
-- dma_addr_t *dma, int *is_last)
-+ dma_addr_t *dma, int *is_last, gfp_t gfp_flags)
- {
- u32 swap_temp;
- struct ep_td_struct *dtd;
-@@ -777,7 +777,7 @@ static struct ep_td_struct *fsl_build_dtd(struct fsl_req *req, unsigned *length,
- *length = min(req->req.length - req->req.actual,
- (unsigned)EP_MAX_LENGTH_TRANSFER);
-
-- dtd = dma_pool_alloc(udc_controller->td_pool, GFP_KERNEL, dma);
-+ dtd = dma_pool_alloc(udc_controller->td_pool, gfp_flags, dma);
- if (dtd == NULL)
- return dtd;
-
-@@ -827,7 +827,7 @@ static struct ep_td_struct *fsl_build_dtd(struct fsl_req *req, unsigned *length,
- }
-
- /* Generate dtd chain for a request */
--static int fsl_req_to_dtd(struct fsl_req *req)
-+static int fsl_req_to_dtd(struct fsl_req *req, gfp_t gfp_flags)
- {
- unsigned count;
- int is_last;
-@@ -836,7 +836,7 @@ static int fsl_req_to_dtd(struct fsl_req *req)
- dma_addr_t dma;
-
- do {
-- dtd = fsl_build_dtd(req, &count, &dma, &is_last);
-+ dtd = fsl_build_dtd(req, &count, &dma, &is_last, gfp_flags);
- if (dtd == NULL)
- return -ENOMEM;
-
-@@ -910,13 +910,11 @@ fsl_ep_queue(struct usb_ep *_ep, struct usb_request *_req, gfp_t gfp_flags)
- req->req.actual = 0;
- req->dtd_count = 0;
-
-- spin_lock_irqsave(&udc->lock, flags);
--
- /* build dtds and push them to device queue */
-- if (!fsl_req_to_dtd(req)) {
-+ if (!fsl_req_to_dtd(req, gfp_flags)) {
-+ spin_lock_irqsave(&udc->lock, flags);
- fsl_queue_td(ep, req);
- } else {
-- spin_unlock_irqrestore(&udc->lock, flags);
- return -ENOMEM;
- }
-
-@@ -1295,7 +1293,7 @@ static int ep0_prime_status(struct fsl_udc *udc, int direction)
- ep_is_in(ep) ? DMA_TO_DEVICE : DMA_FROM_DEVICE);
- req->mapped = 1;
-
-- if (fsl_req_to_dtd(req) == 0)
-+ if (fsl_req_to_dtd(req, GFP_ATOMIC) == 0)
- fsl_queue_td(ep, req);
- else
- return -ENOMEM;
-@@ -1379,7 +1377,7 @@ static void ch9getstatus(struct fsl_udc *udc, u8 request_type, u16 value,
- req->mapped = 1;
-
- /* prime the data phase */
-- if ((fsl_req_to_dtd(req) == 0))
-+ if ((fsl_req_to_dtd(req, GFP_ATOMIC) == 0))
- fsl_queue_td(ep, req);
- else /* no mem */
- goto stall;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0028-usb-Fix-build-error-due-to-dma_mask-is-not-at-pdev_a.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0028-usb-Fix-build-error-due-to-dma_mask-is-not-at-pdev_a.patch
deleted file mode 100644
index 2010a38..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0028-usb-Fix-build-error-due-to-dma_mask-is-not-at-pdev_a.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From 14449b27e92835504278ce397b02ca2b183cbd31 Mon Sep 17 00:00:00 2001
-From: Peter Chen <peter.chen at freescale.com>
-Date: Thu, 16 Feb 2012 09:41:52 +0800
-Subject: [PATCH 028/147] usb: Fix build error due to dma_mask is not at
- pdev_archdata at ARM
-
-commit e90fc3cb087ce5c5f81e814358222cd6d197b5db upstream.
-
-When build i.mx platform with imx_v6_v7_defconfig, and after adding
-USB Gadget support, it has below build error:
-
-CC drivers/usb/host/fsl-mph-dr-of.o
-drivers/usb/host/fsl-mph-dr-of.c: In function 'fsl_usb2_device_register':
-drivers/usb/host/fsl-mph-dr-of.c:97: error: 'struct pdev_archdata'
-has no member named 'dma_mask'
-
-It has discussed at: http://www.spinics.net/lists/linux-usb/msg57302.html
-
-For PowerPC, there is dma_mask at struct pdev_archdata, but there is
-no dma_mask at struct pdev_archdata for ARM. The pdev_archdata is
-related to specific platform, it should NOT be accessed by
-cross platform drivers, like USB.
-
-The code for pdev_archdata should be useless, as for PowerPC,
-it has already gotten the value for pdev->dev.dma_mask at function
-arch_setup_pdev_archdata of arch/powerpc/kernel/setup-common.c.
-
-Tested-by: Ramneek Mehresh <ramneek.mehresh at freescale.com>
-Signed-off-by: Peter Chen <peter.chen at freescale.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/host/fsl-mph-dr-of.c | 1 -
- 1 file changed, 1 deletion(-)
-
-diff --git a/drivers/usb/host/fsl-mph-dr-of.c b/drivers/usb/host/fsl-mph-dr-of.c
-index 9037035..5a42cf0 100644
---- a/drivers/usb/host/fsl-mph-dr-of.c
-+++ b/drivers/usb/host/fsl-mph-dr-of.c
-@@ -94,7 +94,6 @@ struct platform_device * __devinit fsl_usb2_device_register(
- pdev->dev.parent = &ofdev->dev;
-
- pdev->dev.coherent_dma_mask = ofdev->dev.coherent_dma_mask;
-- pdev->dev.dma_mask = &pdev->archdata.dma_mask;
- *pdev->dev.dma_mask = *ofdev->dev.dma_mask;
-
- retval = platform_device_add_data(pdev, pdata, sizeof(*pdata));
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0029-USB-ums_realtek-do-not-use-stack-memory-for-DMA-in-_.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0029-USB-ums_realtek-do-not-use-stack-memory-for-DMA-in-_.patch
deleted file mode 100644
index f14cf50..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0029-USB-ums_realtek-do-not-use-stack-memory-for-DMA-in-_.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From 1ae819c56089722e15e3fe2d84125e4f5aa32d4e Mon Sep 17 00:00:00 2001
-From: Josh Boyer <jwboyer at redhat.com>
-Date: Mon, 20 Feb 2012 15:34:34 -0500
-Subject: [PATCH 029/147] USB: ums_realtek: do not use stack memory for DMA in
- __do_config_autodelink
-
-commit 4898e07174b79013afd2b422ef6c4336ef8e6783 upstream.
-
-__do_config_autodelink passes the data variable to the transport function.
-If the calling functions pass a stack variable, this will eventually trigger
-a DMA-API debug backtrace for mapping stack memory in the DMA buffer. Fix
-this by calling kmemdup for the passed data instead.
-
-Signed-off-by: Josh Boyer <jwboyer at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/storage/realtek_cr.c | 8 +++++++-
- 1 file changed, 7 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/usb/storage/realtek_cr.c b/drivers/usb/storage/realtek_cr.c
-index 32c93d7..e39b188 100644
---- a/drivers/usb/storage/realtek_cr.c
-+++ b/drivers/usb/storage/realtek_cr.c
-@@ -509,9 +509,14 @@ static int __do_config_autodelink(struct us_data *us, u8 *data, u16 len)
- int retval;
- u16 addr = 0xFE47;
- u8 cmnd[12] = {0};
-+ u8 *buf;
-
- US_DEBUGP("%s, addr = 0x%x, len = %d\n", __FUNCTION__, addr, len);
-
-+ buf = kmemdup(data, len, GFP_NOIO);
-+ if (!buf)
-+ return USB_STOR_TRANSPORT_ERROR;
-+
- cmnd[0] = 0xF0;
- cmnd[1] = 0x0E;
- cmnd[2] = (u8)(addr >> 8);
-@@ -519,7 +524,8 @@ static int __do_config_autodelink(struct us_data *us, u8 *data, u16 len)
- cmnd[4] = (u8)(len >> 8);
- cmnd[5] = (u8)len;
-
-- retval = rts51x_bulk_transport_special(us, 0, cmnd, 12, data, len, DMA_TO_DEVICE, NULL);
-+ retval = rts51x_bulk_transport_special(us, 0, cmnd, 12, buf, len, DMA_TO_DEVICE, NULL);
-+ kfree(buf);
- if (retval != USB_STOR_TRANSPORT_GOOD) {
- return -EIO;
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0030-USB-qcserial-add-several-new-serial-devices.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0030-USB-qcserial-add-several-new-serial-devices.patch
deleted file mode 100644
index 15bcffc..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0030-USB-qcserial-add-several-new-serial-devices.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From e3ed8846e20e35e9a94c80270d72b20befec0859 Mon Sep 17 00:00:00 2001
-From: Thomas Tuttle <ttuttle at chromium.org>
-Date: Wed, 1 Feb 2012 16:07:17 -0500
-Subject: [PATCH 030/147] USB: qcserial: add several new serial devices
-
-commit 2db4d87070e87d198ab630e66a898b45eff316d9 upstream.
-
-Signed-off-by: Thomas Tuttle <ttuttle at chromium.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/usb/serial/qcserial.c | 14 ++++++++++++++
- 1 file changed, 14 insertions(+)
-
-diff --git a/drivers/usb/serial/qcserial.c b/drivers/usb/serial/qcserial.c
-index aa9367f..1e87d49 100644
---- a/drivers/usb/serial/qcserial.c
-+++ b/drivers/usb/serial/qcserial.c
-@@ -36,6 +36,11 @@ static const struct usb_device_id id_table[] = {
- {USB_DEVICE(0x413c, 0x8171)}, /* Dell Gobi QDL device */
- {USB_DEVICE(0x1410, 0xa001)}, /* Novatel Gobi Modem device */
- {USB_DEVICE(0x1410, 0xa008)}, /* Novatel Gobi QDL device */
-+ {USB_DEVICE(0x1410, 0xa010)}, /* Novatel Gobi QDL device */
-+ {USB_DEVICE(0x1410, 0xa011)}, /* Novatel Gobi QDL device */
-+ {USB_DEVICE(0x1410, 0xa012)}, /* Novatel Gobi QDL device */
-+ {USB_DEVICE(0x1410, 0xa013)}, /* Novatel Gobi QDL device */
-+ {USB_DEVICE(0x1410, 0xa014)}, /* Novatel Gobi QDL device */
- {USB_DEVICE(0x0b05, 0x1776)}, /* Asus Gobi Modem device */
- {USB_DEVICE(0x0b05, 0x1774)}, /* Asus Gobi QDL device */
- {USB_DEVICE(0x19d2, 0xfff3)}, /* ONDA Gobi Modem device */
-@@ -86,7 +91,16 @@ static const struct usb_device_id id_table[] = {
- {USB_DEVICE(0x16d8, 0x8002)}, /* CMDTech Gobi 2000 Modem device (VU922) */
- {USB_DEVICE(0x05c6, 0x9204)}, /* Gobi 2000 QDL device */
- {USB_DEVICE(0x05c6, 0x9205)}, /* Gobi 2000 Modem device */
-+
-+ {USB_DEVICE(0x05c6, 0x920c)}, /* Gobi 3000 QDL */
-+ {USB_DEVICE(0x05c6, 0x920d)}, /* Gobi 3000 Composite */
-+ {USB_DEVICE(0x1410, 0xa020)}, /* Novatel Gobi 3000 QDL */
-+ {USB_DEVICE(0x1410, 0xa021)}, /* Novatel Gobi 3000 Composite */
-+ {USB_DEVICE(0x413c, 0x8193)}, /* Dell Gobi 3000 QDL */
-+ {USB_DEVICE(0x413c, 0x8194)}, /* Dell Gobi 3000 Composite */
- {USB_DEVICE(0x1199, 0x9013)}, /* Sierra Wireless Gobi 3000 Modem device (MC8355) */
-+ {USB_DEVICE(0x12D1, 0x14F0)}, /* Sony Gobi 3000 QDL */
-+ {USB_DEVICE(0x12D1, 0x14F1)}, /* Sony Gobi 3000 Composite */
- { } /* Terminating entry */
- };
- MODULE_DEVICE_TABLE(usb, id_table);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0031-USB-qcserial-don-t-grab-QMI-port-on-Gobi-1000-device.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0031-USB-qcserial-don-t-grab-QMI-port-on-Gobi-1000-device.patch
deleted file mode 100644
index 55df1d5..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0031-USB-qcserial-don-t-grab-QMI-port-on-Gobi-1000-device.patch
+++ /dev/null
@@ -1,177 +0,0 @@
-From 8544c3691b838f3377a752b88365bb522eb04b72 Mon Sep 17 00:00:00 2001
-From: Dan Williams <dcbw at redhat.com>
-Date: Fri, 24 Feb 2012 13:08:43 -0600
-Subject: [PATCH 031/147] USB: qcserial: don't grab QMI port on Gobi 1000
- devices
-
-commit c192c8e71a2ded01170c1a992cd21aaedc822756 upstream.
-
-Gobi 1000 devices have a different port layout, which wasn't respected
-by the current driver, and thus it grabbed the QMI/net port. In the
-near future we'll be attaching another driver to the QMI/net port for
-these devices (cdc-wdm and qmi_wwan) so make sure the qcserial driver
-doesn't claim them. This patch also prevents qcserial from binding to
-interfaces 0 and 1 on 1K devices because those interfaces do not
-respond.
-
-Signed-off-by: Dan Williams <dcbw at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/serial/qcserial.c | 105 ++++++++++++++++++++++++-----------------
- 1 file changed, 62 insertions(+), 43 deletions(-)
-
-diff --git a/drivers/usb/serial/qcserial.c b/drivers/usb/serial/qcserial.c
-index 1e87d49..3187d8b 100644
---- a/drivers/usb/serial/qcserial.c
-+++ b/drivers/usb/serial/qcserial.c
-@@ -24,39 +24,44 @@
-
- static int debug;
-
-+#define DEVICE_G1K(v, p) \
-+ USB_DEVICE(v, p), .driver_info = 1
-+
- static const struct usb_device_id id_table[] = {
-- {USB_DEVICE(0x05c6, 0x9211)}, /* Acer Gobi QDL device */
-- {USB_DEVICE(0x05c6, 0x9212)}, /* Acer Gobi Modem Device */
-- {USB_DEVICE(0x03f0, 0x1f1d)}, /* HP un2400 Gobi Modem Device */
-- {USB_DEVICE(0x03f0, 0x201d)}, /* HP un2400 Gobi QDL Device */
-- {USB_DEVICE(0x03f0, 0x371d)}, /* HP un2430 Mobile Broadband Module */
-- {USB_DEVICE(0x04da, 0x250d)}, /* Panasonic Gobi Modem device */
-- {USB_DEVICE(0x04da, 0x250c)}, /* Panasonic Gobi QDL device */
-- {USB_DEVICE(0x413c, 0x8172)}, /* Dell Gobi Modem device */
-- {USB_DEVICE(0x413c, 0x8171)}, /* Dell Gobi QDL device */
-- {USB_DEVICE(0x1410, 0xa001)}, /* Novatel Gobi Modem device */
-- {USB_DEVICE(0x1410, 0xa008)}, /* Novatel Gobi QDL device */
-- {USB_DEVICE(0x1410, 0xa010)}, /* Novatel Gobi QDL device */
-- {USB_DEVICE(0x1410, 0xa011)}, /* Novatel Gobi QDL device */
-- {USB_DEVICE(0x1410, 0xa012)}, /* Novatel Gobi QDL device */
-- {USB_DEVICE(0x1410, 0xa013)}, /* Novatel Gobi QDL device */
-- {USB_DEVICE(0x1410, 0xa014)}, /* Novatel Gobi QDL device */
-- {USB_DEVICE(0x0b05, 0x1776)}, /* Asus Gobi Modem device */
-- {USB_DEVICE(0x0b05, 0x1774)}, /* Asus Gobi QDL device */
-- {USB_DEVICE(0x19d2, 0xfff3)}, /* ONDA Gobi Modem device */
-- {USB_DEVICE(0x19d2, 0xfff2)}, /* ONDA Gobi QDL device */
-- {USB_DEVICE(0x1557, 0x0a80)}, /* OQO Gobi QDL device */
-- {USB_DEVICE(0x05c6, 0x9001)}, /* Generic Gobi Modem device */
-- {USB_DEVICE(0x05c6, 0x9002)}, /* Generic Gobi Modem device */
-- {USB_DEVICE(0x05c6, 0x9202)}, /* Generic Gobi Modem device */
-- {USB_DEVICE(0x05c6, 0x9203)}, /* Generic Gobi Modem device */
-- {USB_DEVICE(0x05c6, 0x9222)}, /* Generic Gobi Modem device */
-- {USB_DEVICE(0x05c6, 0x9008)}, /* Generic Gobi QDL device */
-- {USB_DEVICE(0x05c6, 0x9009)}, /* Generic Gobi Modem device */
-- {USB_DEVICE(0x05c6, 0x9201)}, /* Generic Gobi QDL device */
-- {USB_DEVICE(0x05c6, 0x9221)}, /* Generic Gobi QDL device */
-- {USB_DEVICE(0x05c6, 0x9231)}, /* Generic Gobi QDL device */
-- {USB_DEVICE(0x1f45, 0x0001)}, /* Unknown Gobi QDL device */
-+ /* Gobi 1000 devices */
-+ {DEVICE_G1K(0x05c6, 0x9211)}, /* Acer Gobi QDL device */
-+ {DEVICE_G1K(0x05c6, 0x9212)}, /* Acer Gobi Modem Device */
-+ {DEVICE_G1K(0x03f0, 0x1f1d)}, /* HP un2400 Gobi Modem Device */
-+ {DEVICE_G1K(0x03f0, 0x201d)}, /* HP un2400 Gobi QDL Device */
-+ {DEVICE_G1K(0x04da, 0x250d)}, /* Panasonic Gobi Modem device */
-+ {DEVICE_G1K(0x04da, 0x250c)}, /* Panasonic Gobi QDL device */
-+ {DEVICE_G1K(0x413c, 0x8172)}, /* Dell Gobi Modem device */
-+ {DEVICE_G1K(0x413c, 0x8171)}, /* Dell Gobi QDL device */
-+ {DEVICE_G1K(0x1410, 0xa001)}, /* Novatel Gobi Modem device */
-+ {DEVICE_G1K(0x1410, 0xa008)}, /* Novatel Gobi QDL device */
-+ {DEVICE_G1K(0x0b05, 0x1776)}, /* Asus Gobi Modem device */
-+ {DEVICE_G1K(0x0b05, 0x1774)}, /* Asus Gobi QDL device */
-+ {DEVICE_G1K(0x19d2, 0xfff3)}, /* ONDA Gobi Modem device */
-+ {DEVICE_G1K(0x19d2, 0xfff2)}, /* ONDA Gobi QDL device */
-+ {DEVICE_G1K(0x1557, 0x0a80)}, /* OQO Gobi QDL device */
-+ {DEVICE_G1K(0x05c6, 0x9001)}, /* Generic Gobi Modem device */
-+ {DEVICE_G1K(0x05c6, 0x9002)}, /* Generic Gobi Modem device */
-+ {DEVICE_G1K(0x05c6, 0x9202)}, /* Generic Gobi Modem device */
-+ {DEVICE_G1K(0x05c6, 0x9203)}, /* Generic Gobi Modem device */
-+ {DEVICE_G1K(0x05c6, 0x9222)}, /* Generic Gobi Modem device */
-+ {DEVICE_G1K(0x05c6, 0x9008)}, /* Generic Gobi QDL device */
-+ {DEVICE_G1K(0x05c6, 0x9009)}, /* Generic Gobi Modem device */
-+ {DEVICE_G1K(0x05c6, 0x9201)}, /* Generic Gobi QDL device */
-+ {DEVICE_G1K(0x05c6, 0x9221)}, /* Generic Gobi QDL device */
-+ {DEVICE_G1K(0x05c6, 0x9231)}, /* Generic Gobi QDL device */
-+ {DEVICE_G1K(0x1f45, 0x0001)}, /* Unknown Gobi QDL device */
-+
-+ /* Gobi 2000 devices */
-+ {USB_DEVICE(0x1410, 0xa010)}, /* Novatel Gobi 2000 QDL device */
-+ {USB_DEVICE(0x1410, 0xa011)}, /* Novatel Gobi 2000 QDL device */
-+ {USB_DEVICE(0x1410, 0xa012)}, /* Novatel Gobi 2000 QDL device */
-+ {USB_DEVICE(0x1410, 0xa013)}, /* Novatel Gobi 2000 QDL device */
-+ {USB_DEVICE(0x1410, 0xa014)}, /* Novatel Gobi 2000 QDL device */
- {USB_DEVICE(0x413c, 0x8185)}, /* Dell Gobi 2000 QDL device (N0218, VU936) */
- {USB_DEVICE(0x413c, 0x8186)}, /* Dell Gobi 2000 Modem device (N0218, VU936) */
- {USB_DEVICE(0x05c6, 0x9208)}, /* Generic Gobi 2000 QDL device */
-@@ -92,6 +97,8 @@ static const struct usb_device_id id_table[] = {
- {USB_DEVICE(0x05c6, 0x9204)}, /* Gobi 2000 QDL device */
- {USB_DEVICE(0x05c6, 0x9205)}, /* Gobi 2000 Modem device */
-
-+ /* Gobi 3000 devices */
-+ {USB_DEVICE(0x03f0, 0x371d)}, /* HP un2430 Gobi 3000 QDL */
- {USB_DEVICE(0x05c6, 0x920c)}, /* Gobi 3000 QDL */
- {USB_DEVICE(0x05c6, 0x920d)}, /* Gobi 3000 Composite */
- {USB_DEVICE(0x1410, 0xa020)}, /* Novatel Gobi 3000 QDL */
-@@ -122,8 +129,10 @@ static int qcprobe(struct usb_serial *serial, const struct usb_device_id *id)
- int retval = -ENODEV;
- __u8 nintf;
- __u8 ifnum;
-+ bool is_gobi1k = id->driver_info ? true : false;
-
- dbg("%s", __func__);
-+ dbg("Is Gobi 1000 = %d", is_gobi1k);
-
- nintf = serial->dev->actconfig->desc.bNumInterfaces;
- dbg("Num Interfaces = %d", nintf);
-@@ -171,15 +180,25 @@ static int qcprobe(struct usb_serial *serial, const struct usb_device_id *id)
-
- case 3:
- case 4:
-- /* Composite mode */
-- /* ifnum == 0 is a broadband network adapter */
-- if (ifnum == 1) {
-- /*
-- * Diagnostics Monitor (serial line 9600 8N1)
-- * Qualcomm DM protocol
-- * use "libqcdm" (ModemManager) for communication
-- */
-- dbg("Diagnostics Monitor found");
-+ /* Composite mode; don't bind to the QMI/net interface as that
-+ * gets handled by other drivers.
-+ */
-+
-+ /* Gobi 1K USB layout:
-+ * 0: serial port (doesn't respond)
-+ * 1: serial port (doesn't respond)
-+ * 2: AT-capable modem port
-+ * 3: QMI/net
-+ *
-+ * Gobi 2K+ USB layout:
-+ * 0: QMI/net
-+ * 1: DM/DIAG (use libqcdm from ModemManager for communication)
-+ * 2: AT-capable modem port
-+ * 3: NMEA
-+ */
-+
-+ if (ifnum == 1 && !is_gobi1k) {
-+ dbg("Gobi 2K+ DM/DIAG interface found");
- retval = usb_set_interface(serial->dev, ifnum, 0);
- if (retval < 0) {
- dev_err(&serial->dev->dev,
-@@ -198,13 +217,13 @@ static int qcprobe(struct usb_serial *serial, const struct usb_device_id *id)
- retval = -ENODEV;
- kfree(data);
- }
-- } else if (ifnum==3) {
-+ } else if (ifnum==3 && !is_gobi1k) {
- /*
- * NMEA (serial line 9600 8N1)
- * # echo "\$GPS_START" > /dev/ttyUSBx
- * # echo "\$GPS_STOP" > /dev/ttyUSBx
- */
-- dbg("NMEA GPS interface found");
-+ dbg("Gobi 2K+ NMEA GPS interface found");
- retval = usb_set_interface(serial->dev, ifnum, 0);
- if (retval < 0) {
- dev_err(&serial->dev->dev,
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0032-usb-serial-Add-support-for-the-Sealevel-SeaLINK-8-20.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0032-usb-serial-Add-support-for-the-Sealevel-SeaLINK-8-20.patch
deleted file mode 100644
index f1e4d7f..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0032-usb-serial-Add-support-for-the-Sealevel-SeaLINK-8-20.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From 94b027170f277f8d39aa3e6b2fe0ec2d01ad90f9 Mon Sep 17 00:00:00 2001
-From: Scott Dial <scott.dial at scientiallc.com>
-Date: Fri, 24 Feb 2012 19:04:09 -0500
-Subject: [PATCH 032/147] usb-serial: Add support for the Sealevel SeaLINK+8
- 2038-ROHS device
-
-commit 6d161b99f875269ad4ffa44375e1e54bca6fd02e upstream.
-
-This patch adds new device IDs to the ftdi_sio module to support
-the new Sealevel SeaLINK+8 2038-ROHS device.
-
-Signed-off-by: Scott Dial <scott.dial at scientiallc.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/serial/ftdi_sio.c | 4 ++++
- drivers/usb/serial/ftdi_sio_ids.h | 4 ++++
- 2 files changed, 8 insertions(+)
-
-diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
-index 3f3ccf6..f2c9ef7 100644
---- a/drivers/usb/serial/ftdi_sio.c
-+++ b/drivers/usb/serial/ftdi_sio.c
-@@ -537,6 +537,10 @@ static struct usb_device_id id_table_combined [] = {
- { USB_DEVICE(SEALEVEL_VID, SEALEVEL_2803_6_PID) },
- { USB_DEVICE(SEALEVEL_VID, SEALEVEL_2803_7_PID) },
- { USB_DEVICE(SEALEVEL_VID, SEALEVEL_2803_8_PID) },
-+ { USB_DEVICE(SEALEVEL_VID, SEALEVEL_2803R_1_PID) },
-+ { USB_DEVICE(SEALEVEL_VID, SEALEVEL_2803R_2_PID) },
-+ { USB_DEVICE(SEALEVEL_VID, SEALEVEL_2803R_3_PID) },
-+ { USB_DEVICE(SEALEVEL_VID, SEALEVEL_2803R_4_PID) },
- { USB_DEVICE(IDTECH_VID, IDTECH_IDT1221U_PID) },
- { USB_DEVICE(OCT_VID, OCT_US101_PID) },
- { USB_DEVICE(OCT_VID, OCT_DK201_PID) },
-diff --git a/drivers/usb/serial/ftdi_sio_ids.h b/drivers/usb/serial/ftdi_sio_ids.h
-index abf6bbc..c6dd18e 100644
---- a/drivers/usb/serial/ftdi_sio_ids.h
-+++ b/drivers/usb/serial/ftdi_sio_ids.h
-@@ -689,6 +689,10 @@
- #define SEALEVEL_2803_6_PID 0X2863 /* SeaLINK+8 (2803) Port 6 */
- #define SEALEVEL_2803_7_PID 0X2873 /* SeaLINK+8 (2803) Port 7 */
- #define SEALEVEL_2803_8_PID 0X2883 /* SeaLINK+8 (2803) Port 8 */
-+#define SEALEVEL_2803R_1_PID 0Xa02a /* SeaLINK+8 (2803-ROHS) Port 1+2 */
-+#define SEALEVEL_2803R_2_PID 0Xa02b /* SeaLINK+8 (2803-ROHS) Port 3+4 */
-+#define SEALEVEL_2803R_3_PID 0Xa02c /* SeaLINK+8 (2803-ROHS) Port 5+6 */
-+#define SEALEVEL_2803R_4_PID 0Xa02d /* SeaLINK+8 (2803-ROHS) Port 7+8 */
-
- /*
- * JETI SPECTROMETER SPECBOS 1201
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0033-usb-cp210x-Update-to-support-CP2105-and-multiple-int.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0033-usb-cp210x-Update-to-support-CP2105-and-multiple-int.patch
deleted file mode 100644
index 4d50b8d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0033-usb-cp210x-Update-to-support-CP2105-and-multiple-int.patch
+++ /dev/null
@@ -1,155 +0,0 @@
-From 4d2e98ccb5f7c69868760e889389c5ba01a89bf5 Mon Sep 17 00:00:00 2001
-From: Preston Fick <preston.fick at silabs.com>
-Date: Fri, 24 Feb 2012 13:42:39 -0600
-Subject: [PATCH 033/147] usb: cp210x: Update to support CP2105 and multiple
- interface devices
-
-commit a5360a53a7ccad5ed9ccef210b94fef13c6e5529 upstream.
-
-This patch updates the cp210x driver to support CP210x multiple
-interface devices devices from Silicon Labs. The existing driver
-always sends control requests to interface 0, which is hardcoded in
-the usb_control_msg function calls. This only allows for single
-interface devices to be used, and causes a bug when using ports on an
-interface other than 0 in the multiple interface devices.
-
-Here are the changes included in this patch:
-- Updated the device list to contain the Silicon Labs factory default
- VID/PID for multiple interface CP210x devices
-- Created a cp210x_port_private struct created for each port on
- startup, this struct holds the interface number
-- Added a cp210x_release function to clean up the cp210x_port_private
- memory created on startup
-- Modified usb_get_config and usb_set_config to get a pointer to the
- cp210x_port_private struct, and use the interface number there in the
- usb_control_message wIndex param
-
-Signed-off-by: Preston Fick <preston.fick at silabs.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/serial/cp210x.c | 44 ++++++++++++++++++++++++++++++++++++++++---
- 1 file changed, 41 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/usb/serial/cp210x.c b/drivers/usb/serial/cp210x.c
-index 33d25d4..4c12404 100644
---- a/drivers/usb/serial/cp210x.c
-+++ b/drivers/usb/serial/cp210x.c
-@@ -49,6 +49,7 @@ static int cp210x_tiocmset_port(struct usb_serial_port *port,
- unsigned int, unsigned int);
- static void cp210x_break_ctl(struct tty_struct *, int);
- static int cp210x_startup(struct usb_serial *);
-+static void cp210x_release(struct usb_serial *);
- static void cp210x_dtr_rts(struct usb_serial_port *p, int on);
-
- static int debug;
-@@ -121,6 +122,8 @@ static const struct usb_device_id id_table[] = {
- { USB_DEVICE(0x10C4, 0x8665) }, /* AC-Services OBD-IF */
- { USB_DEVICE(0x10C4, 0xEA60) }, /* Silicon Labs factory default */
- { USB_DEVICE(0x10C4, 0xEA61) }, /* Silicon Labs factory default */
-+ { USB_DEVICE(0x10C4, 0xEA70) }, /* Silicon Labs factory default */
-+ { USB_DEVICE(0x10C4, 0xEA80) }, /* Silicon Labs factory default */
- { USB_DEVICE(0x10C4, 0xEA71) }, /* Infinity GPS-MIC-1 Radio Monophone */
- { USB_DEVICE(0x10C4, 0xF001) }, /* Elan Digital Systems USBscope50 */
- { USB_DEVICE(0x10C4, 0xF002) }, /* Elan Digital Systems USBwave12 */
-@@ -149,6 +152,10 @@ static const struct usb_device_id id_table[] = {
-
- MODULE_DEVICE_TABLE(usb, id_table);
-
-+struct cp210x_port_private {
-+ __u8 bInterfaceNumber;
-+};
-+
- static struct usb_driver cp210x_driver = {
- .name = "cp210x",
- .probe = usb_serial_probe,
-@@ -174,6 +181,7 @@ static struct usb_serial_driver cp210x_device = {
- .tiocmget = cp210x_tiocmget,
- .tiocmset = cp210x_tiocmset,
- .attach = cp210x_startup,
-+ .release = cp210x_release,
- .dtr_rts = cp210x_dtr_rts
- };
-
-@@ -261,6 +269,7 @@ static int cp210x_get_config(struct usb_serial_port *port, u8 request,
- unsigned int *data, int size)
- {
- struct usb_serial *serial = port->serial;
-+ struct cp210x_port_private *port_priv = usb_get_serial_port_data(port);
- __le32 *buf;
- int result, i, length;
-
-@@ -276,7 +285,7 @@ static int cp210x_get_config(struct usb_serial_port *port, u8 request,
- /* Issue the request, attempting to read 'size' bytes */
- result = usb_control_msg(serial->dev, usb_rcvctrlpipe(serial->dev, 0),
- request, REQTYPE_DEVICE_TO_HOST, 0x0000,
-- 0, buf, size, 300);
-+ port_priv->bInterfaceNumber, buf, size, 300);
-
- /* Convert data into an array of integers */
- for (i = 0; i < length; i++)
-@@ -304,6 +313,7 @@ static int cp210x_set_config(struct usb_serial_port *port, u8 request,
- unsigned int *data, int size)
- {
- struct usb_serial *serial = port->serial;
-+ struct cp210x_port_private *port_priv = usb_get_serial_port_data(port);
- __le32 *buf;
- int result, i, length;
-
-@@ -325,12 +335,12 @@ static int cp210x_set_config(struct usb_serial_port *port, u8 request,
- result = usb_control_msg(serial->dev,
- usb_sndctrlpipe(serial->dev, 0),
- request, REQTYPE_HOST_TO_DEVICE, 0x0000,
-- 0, buf, size, 300);
-+ port_priv->bInterfaceNumber, buf, size, 300);
- } else {
- result = usb_control_msg(serial->dev,
- usb_sndctrlpipe(serial->dev, 0),
- request, REQTYPE_HOST_TO_DEVICE, data[0],
-- 0, NULL, 0, 300);
-+ port_priv->bInterfaceNumber, NULL, 0, 300);
- }
-
- kfree(buf);
-@@ -830,11 +840,39 @@ static void cp210x_break_ctl (struct tty_struct *tty, int break_state)
-
- static int cp210x_startup(struct usb_serial *serial)
- {
-+ struct cp210x_port_private *port_priv;
-+ int i;
-+
- /* cp210x buffers behave strangely unless device is reset */
- usb_reset_device(serial->dev);
-+
-+ for (i = 0; i < serial->num_ports; i++) {
-+ port_priv = kzalloc(sizeof(*port_priv), GFP_KERNEL);
-+ if (!port_priv)
-+ return -ENOMEM;
-+
-+ memset(port_priv, 0x00, sizeof(*port_priv));
-+ port_priv->bInterfaceNumber =
-+ serial->interface->cur_altsetting->desc.bInterfaceNumber;
-+
-+ usb_set_serial_port_data(serial->port[i], port_priv);
-+ }
-+
- return 0;
- }
-
-+static void cp210x_release(struct usb_serial *serial)
-+{
-+ struct cp210x_port_private *port_priv;
-+ int i;
-+
-+ for (i = 0; i < serial->num_ports; i++) {
-+ port_priv = usb_get_serial_port_data(serial->port[i]);
-+ kfree(port_priv);
-+ usb_set_serial_port_data(serial->port[i], NULL);
-+ }
-+}
-+
- static int __init cp210x_init(void)
- {
- int retval;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0034-USB-serial-mos7840-Fixed-MCS7820-device-attach-probl.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0034-USB-serial-mos7840-Fixed-MCS7820-device-attach-probl.patch
deleted file mode 100644
index 6c878a9..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0034-USB-serial-mos7840-Fixed-MCS7820-device-attach-probl.patch
+++ /dev/null
@@ -1,148 +0,0 @@
-From 7121306391cac4f482edc239e2c8b0f8ac310f92 Mon Sep 17 00:00:00 2001
-From: Donald Lee <donald at asix.com.tw>
-Date: Wed, 14 Mar 2012 15:26:33 +0800
-Subject: [PATCH 034/147] USB: serial: mos7840: Fixed MCS7820 device attach
- problem
-
-commit 093ea2d3a766cb8a4c4de57efec6c0a127a58792 upstream.
-
-A MCS7820 device supports two serial ports and a MCS7840 device supports
-four serial ports. Both devices use the same driver, but the attach function
-in driver was unable to correctly handle the port numbers for MCS7820
-device. This problem has been fixed in this patch and this fix has been
-verified on x86 Linux kernel 3.2.9 with both MCS7820 and MCS7840 devices.
-
-Signed-off-by: Donald Lee <donald at asix.com.tw>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/serial/mos7840.c | 83 +++++++++++++++++++++++++++++-------------
- 1 file changed, 57 insertions(+), 26 deletions(-)
-
-diff --git a/drivers/usb/serial/mos7840.c b/drivers/usb/serial/mos7840.c
-index c72abd5..5c7d654 100644
---- a/drivers/usb/serial/mos7840.c
-+++ b/drivers/usb/serial/mos7840.c
-@@ -174,6 +174,7 @@
-
- #define CLK_MULTI_REGISTER ((__u16)(0x02))
- #define CLK_START_VALUE_REGISTER ((__u16)(0x03))
-+#define GPIO_REGISTER ((__u16)(0x07))
-
- #define SERIAL_LCR_DLAB ((__u16)(0x0080))
-
-@@ -1103,14 +1104,25 @@ static int mos7840_open(struct tty_struct *tty, struct usb_serial_port *port)
- mos7840_port->read_urb = port->read_urb;
-
- /* set up our bulk in urb */
--
-- usb_fill_bulk_urb(mos7840_port->read_urb,
-- serial->dev,
-- usb_rcvbulkpipe(serial->dev,
-- port->bulk_in_endpointAddress),
-- port->bulk_in_buffer,
-- mos7840_port->read_urb->transfer_buffer_length,
-- mos7840_bulk_in_callback, mos7840_port);
-+ if ((serial->num_ports == 2)
-+ && ((((__u16)port->number -
-+ (__u16)(port->serial->minor)) % 2) != 0)) {
-+ usb_fill_bulk_urb(mos7840_port->read_urb,
-+ serial->dev,
-+ usb_rcvbulkpipe(serial->dev,
-+ (port->bulk_in_endpointAddress) + 2),
-+ port->bulk_in_buffer,
-+ mos7840_port->read_urb->transfer_buffer_length,
-+ mos7840_bulk_in_callback, mos7840_port);
-+ } else {
-+ usb_fill_bulk_urb(mos7840_port->read_urb,
-+ serial->dev,
-+ usb_rcvbulkpipe(serial->dev,
-+ port->bulk_in_endpointAddress),
-+ port->bulk_in_buffer,
-+ mos7840_port->read_urb->transfer_buffer_length,
-+ mos7840_bulk_in_callback, mos7840_port);
-+ }
-
- dbg("mos7840_open: bulkin endpoint is %d",
- port->bulk_in_endpointAddress);
-@@ -1521,13 +1533,25 @@ static int mos7840_write(struct tty_struct *tty, struct usb_serial_port *port,
- memcpy(urb->transfer_buffer, current_position, transfer_size);
-
- /* fill urb with data and submit */
-- usb_fill_bulk_urb(urb,
-- serial->dev,
-- usb_sndbulkpipe(serial->dev,
-- port->bulk_out_endpointAddress),
-- urb->transfer_buffer,
-- transfer_size,
-- mos7840_bulk_out_data_callback, mos7840_port);
-+ if ((serial->num_ports == 2)
-+ && ((((__u16)port->number -
-+ (__u16)(port->serial->minor)) % 2) != 0)) {
-+ usb_fill_bulk_urb(urb,
-+ serial->dev,
-+ usb_sndbulkpipe(serial->dev,
-+ (port->bulk_out_endpointAddress) + 2),
-+ urb->transfer_buffer,
-+ transfer_size,
-+ mos7840_bulk_out_data_callback, mos7840_port);
-+ } else {
-+ usb_fill_bulk_urb(urb,
-+ serial->dev,
-+ usb_sndbulkpipe(serial->dev,
-+ port->bulk_out_endpointAddress),
-+ urb->transfer_buffer,
-+ transfer_size,
-+ mos7840_bulk_out_data_callback, mos7840_port);
-+ }
-
- data1 = urb->transfer_buffer;
- dbg("bulkout endpoint is %d", port->bulk_out_endpointAddress);
-@@ -1840,7 +1864,7 @@ static int mos7840_send_cmd_write_baud_rate(struct moschip_port *mos7840_port,
-
- } else {
- #ifdef HW_flow_control
-- / *setting h/w flow control bit to 0 */
-+ /* setting h/w flow control bit to 0 */
- Data = 0xb;
- mos7840_port->shadowMCR = Data;
- status = mos7840_set_uart_reg(port, MODEM_CONTROL_REGISTER,
-@@ -2309,19 +2333,26 @@ static int mos7840_ioctl(struct tty_struct *tty,
-
- static int mos7840_calc_num_ports(struct usb_serial *serial)
- {
-- int mos7840_num_ports = 0;
--
-- dbg("numberofendpoints: cur %d, alt %d",
-- (int)serial->interface->cur_altsetting->desc.bNumEndpoints,
-- (int)serial->interface->altsetting->desc.bNumEndpoints);
-- if (serial->interface->cur_altsetting->desc.bNumEndpoints == 5) {
-- mos7840_num_ports = serial->num_ports = 2;
-- } else if (serial->interface->cur_altsetting->desc.bNumEndpoints == 9) {
-+ __u16 Data = 0x00;
-+ int ret = 0;
-+ int mos7840_num_ports;
-+
-+ ret = usb_control_msg(serial->dev, usb_rcvctrlpipe(serial->dev, 0),
-+ MCS_RDREQ, MCS_RD_RTYPE, 0, GPIO_REGISTER, &Data,
-+ VENDOR_READ_LENGTH, MOS_WDR_TIMEOUT);
-+
-+ if ((Data & 0x01) == 0) {
-+ mos7840_num_ports = 2;
-+ serial->num_bulk_in = 2;
-+ serial->num_bulk_out = 2;
-+ serial->num_ports = 2;
-+ } else {
-+ mos7840_num_ports = 4;
- serial->num_bulk_in = 4;
- serial->num_bulk_out = 4;
-- mos7840_num_ports = serial->num_ports = 4;
-+ serial->num_ports = 4;
- }
-- dbg ("mos7840_num_ports = %d", mos7840_num_ports);
-+
- return mos7840_num_ports;
- }
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0035-rt2x00-Add-support-for-D-Link-DWA-127-to-rt2800usb.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0035-rt2x00-Add-support-for-D-Link-DWA-127-to-rt2800usb.patch
deleted file mode 100644
index 2805c1f..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0035-rt2x00-Add-support-for-D-Link-DWA-127-to-rt2800usb.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From bdab95dd61b9879afe660d0f5d97bf5b6ab0533e Mon Sep 17 00:00:00 2001
-From: Gertjan van Wingerde <gwingerde at gmail.com>
-Date: Sat, 11 Feb 2012 21:58:09 +0100
-Subject: [PATCH 035/147] rt2x00: Add support for D-Link DWA-127 to rt2800usb.
-
-commit d42a179b941a9e4cc6cf41d0f3cbadd75fc48a89 upstream.
-
-This is an RT3070 based device.
-
-Reported-by: Mikhail Kryshen <mikhail at kryshen.net>
-Signed-off-by: Gertjan van Wingerde <gwingerde at gmail.com>
-Acked-by: Ivo van Doorn <IvDoorn at gmail.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/net/wireless/rt2x00/rt2800usb.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/net/wireless/rt2x00/rt2800usb.c b/drivers/net/wireless/rt2x00/rt2800usb.c
-index 3265b34..cb71e88 100644
---- a/drivers/net/wireless/rt2x00/rt2800usb.c
-+++ b/drivers/net/wireless/rt2x00/rt2800usb.c
-@@ -935,6 +935,7 @@ static struct usb_device_id rt2800usb_device_table[] = {
- { USB_DEVICE(0x07d1, 0x3c0f) },
- { USB_DEVICE(0x07d1, 0x3c11) },
- { USB_DEVICE(0x07d1, 0x3c16) },
-+ { USB_DEVICE(0x2001, 0x3c1b) },
- /* Draytek */
- { USB_DEVICE(0x07fa, 0x7712) },
- /* DVICO */
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0036-rtlwifi-rtl8192c_common-rtl8192de-Check-for-allocati.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0036-rtlwifi-rtl8192c_common-rtl8192de-Check-for-allocati.patch
deleted file mode 100644
index 11a4531..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0036-rtlwifi-rtl8192c_common-rtl8192de-Check-for-allocati.patch
+++ /dev/null
@@ -1,102 +0,0 @@
-From a28aa8ba24d7303a4d8677ebf8b159014f19dca0 Mon Sep 17 00:00:00 2001
-From: Larry Finger <Larry.Finger at lwfinger.net>
-Date: Sat, 7 Jan 2012 20:46:40 -0600
-Subject: [PATCH 036/147] rtlwifi: rtl8192c_common: rtl8192de: Check for
- allocation failures
-
-commit 76a92be537f1c8c259e393632301446257ca3ea9 upstream.
-
-In https://bugzilla.redhat.com/show_bug.cgi?id=771656, a kernel bug was
-triggered due to a failed skb allocation that was not checked. This event
-lead to an audit of all memory allocations in the complete rtlwifi family
-of drivers. This patch fixes the rest.
-
-Signed-off-by: Larry Finger <Larry.Finger at lwfinger.net>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/net/wireless/rtlwifi/pci.c | 2 ++
- drivers/net/wireless/rtlwifi/rtl8192c/fw_common.c | 2 ++
- drivers/net/wireless/rtlwifi/rtl8192de/fw.c | 14 +++++++++-----
- drivers/net/wireless/rtlwifi/usb.c | 12 +++++++-----
- 4 files changed, 20 insertions(+), 10 deletions(-)
-
-diff --git a/drivers/net/wireless/rtlwifi/pci.c b/drivers/net/wireless/rtlwifi/pci.c
-index eb61061..19bb550 100644
---- a/drivers/net/wireless/rtlwifi/pci.c
-+++ b/drivers/net/wireless/rtlwifi/pci.c
-@@ -657,6 +657,8 @@ static void _rtl_receive_one(struct ieee80211_hw *hw, struct sk_buff *skb,
- return;
-
- uskb = dev_alloc_skb(skb->len + 128);
-+ if (!uskb)
-+ return; /* exit if allocation failed */
- memcpy(IEEE80211_SKB_RXCB(uskb), &rx_status, sizeof(rx_status));
- pdata = (u8 *)skb_put(uskb, skb->len);
- memcpy(pdata, skb->data, skb->len);
-diff --git a/drivers/net/wireless/rtlwifi/rtl8192c/fw_common.c b/drivers/net/wireless/rtlwifi/rtl8192c/fw_common.c
-index 950c65a..13fc0f9 100644
---- a/drivers/net/wireless/rtlwifi/rtl8192c/fw_common.c
-+++ b/drivers/net/wireless/rtlwifi/rtl8192c/fw_common.c
-@@ -752,6 +752,8 @@ void rtl92c_set_fw_rsvdpagepkt(struct ieee80211_hw *hw, bool dl_finished)
-
-
- skb = dev_alloc_skb(totalpacketlen);
-+ if (!skb)
-+ return;
- memcpy((u8 *) skb_put(skb, totalpacketlen),
- &reserved_page_packet, totalpacketlen);
-
-diff --git a/drivers/net/wireless/rtlwifi/rtl8192de/fw.c b/drivers/net/wireless/rtlwifi/rtl8192de/fw.c
-index 82f060b..c44757f 100644
---- a/drivers/net/wireless/rtlwifi/rtl8192de/fw.c
-+++ b/drivers/net/wireless/rtlwifi/rtl8192de/fw.c
-@@ -763,12 +763,16 @@ void rtl92d_set_fw_rsvdpagepkt(struct ieee80211_hw *hw, bool dl_finished)
- "rtl92d_set_fw_rsvdpagepkt(): HW_VAR_SET_TX_CMD: ALL\n",
- u1RsvdPageLoc, 3);
- skb = dev_alloc_skb(totalpacketlen);
-- memcpy((u8 *) skb_put(skb, totalpacketlen), &reserved_page_packet,
-- totalpacketlen);
-- rtstatus = _rtl92d_cmd_send_packet(hw, skb);
-+ if (!skb) {
-+ dlok = false;
-+ } else {
-+ memcpy((u8 *) skb_put(skb, totalpacketlen),
-+ &reserved_page_packet, totalpacketlen);
-+ rtstatus = _rtl92d_cmd_send_packet(hw, skb);
-
-- if (rtstatus)
-- dlok = true;
-+ if (rtstatus)
-+ dlok = true;
-+ }
- if (dlok) {
- RT_TRACE(rtlpriv, COMP_POWER, DBG_LOUD,
- ("Set RSVD page location to Fw.\n"));
-diff --git a/drivers/net/wireless/rtlwifi/usb.c b/drivers/net/wireless/rtlwifi/usb.c
-index 54cb8a6..2b7bcc8 100644
---- a/drivers/net/wireless/rtlwifi/usb.c
-+++ b/drivers/net/wireless/rtlwifi/usb.c
-@@ -481,12 +481,14 @@ static void _rtl_usb_rx_process_noagg(struct ieee80211_hw *hw,
- u8 *pdata;
-
- uskb = dev_alloc_skb(skb->len + 128);
-- memcpy(IEEE80211_SKB_RXCB(uskb), &rx_status,
-- sizeof(rx_status));
-- pdata = (u8 *)skb_put(uskb, skb->len);
-- memcpy(pdata, skb->data, skb->len);
-+ if (uskb) { /* drop packet on allocation failure */
-+ memcpy(IEEE80211_SKB_RXCB(uskb), &rx_status,
-+ sizeof(rx_status));
-+ pdata = (u8 *)skb_put(uskb, skb->len);
-+ memcpy(pdata, skb->data, skb->len);
-+ ieee80211_rx_irqsafe(hw, uskb);
-+ }
- dev_kfree_skb_any(skb);
-- ieee80211_rx_irqsafe(hw, uskb);
- } else {
- dev_kfree_skb_any(skb);
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0037-rtlwifi-Handle-previous-allocation-failures-when-fre.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0037-rtlwifi-Handle-previous-allocation-failures-when-fre.patch
deleted file mode 100644
index c30c85d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0037-rtlwifi-Handle-previous-allocation-failures-when-fre.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-From 80ee9108bee3d22e90191a67036133de09faf7cc Mon Sep 17 00:00:00 2001
-From: Simon Graham <simon.graham at virtualcomputer.com>
-Date: Tue, 7 Feb 2012 18:07:38 -0600
-Subject: [PATCH 037/147] rtlwifi: Handle previous allocation failures when
- freeing device memory
-
-commit 7f66c2f93e5779625c10d262c84537427a2673ca upstream.
-
-Handle previous allocation failures when freeing device memory
-
-Signed-off-by: Simon Graham <simon.graham at virtualcomputer.com>
-Signed-off-by: Larry Finger <Larry.Finger at lwfinger.net>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/net/wireless/rtlwifi/pci.c | 16 ++++++++++------
- 1 file changed, 10 insertions(+), 6 deletions(-)
-
-diff --git a/drivers/net/wireless/rtlwifi/pci.c b/drivers/net/wireless/rtlwifi/pci.c
-index 19bb550..9afcad3 100644
---- a/drivers/net/wireless/rtlwifi/pci.c
-+++ b/drivers/net/wireless/rtlwifi/pci.c
-@@ -1155,10 +1155,12 @@ static void _rtl_pci_free_tx_ring(struct ieee80211_hw *hw,
- ring->idx = (ring->idx + 1) % ring->entries;
- }
-
-- pci_free_consistent(rtlpci->pdev,
-- sizeof(*ring->desc) * ring->entries,
-- ring->desc, ring->dma);
-- ring->desc = NULL;
-+ if (ring->desc) {
-+ pci_free_consistent(rtlpci->pdev,
-+ sizeof(*ring->desc) * ring->entries,
-+ ring->desc, ring->dma);
-+ ring->desc = NULL;
-+ }
- }
-
- static void _rtl_pci_free_rx_ring(struct rtl_pci *rtlpci)
-@@ -1182,12 +1184,14 @@ static void _rtl_pci_free_rx_ring(struct rtl_pci *rtlpci)
- kfree_skb(skb);
- }
-
-- pci_free_consistent(rtlpci->pdev,
-+ if (rtlpci->rx_ring[rx_queue_idx].desc) {
-+ pci_free_consistent(rtlpci->pdev,
- sizeof(*rtlpci->rx_ring[rx_queue_idx].
- desc) * rtlpci->rxringcount,
- rtlpci->rx_ring[rx_queue_idx].desc,
- rtlpci->rx_ring[rx_queue_idx].dma);
-- rtlpci->rx_ring[rx_queue_idx].desc = NULL;
-+ rtlpci->rx_ring[rx_queue_idx].desc = NULL;
-+ }
- }
- }
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0038-rtlwifi-rtl8192c-Prevent-sleeping-from-invalid-conte.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0038-rtlwifi-rtl8192c-Prevent-sleeping-from-invalid-conte.patch
deleted file mode 100644
index cec2e0f..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0038-rtlwifi-rtl8192c-Prevent-sleeping-from-invalid-conte.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From 9d3a0177f72e20f06c844ede994dc3541bdae01b Mon Sep 17 00:00:00 2001
-From: Larry Finger <Larry.Finger at lwfinger.net>
-Date: Fri, 2 Mar 2012 15:23:36 -0600
-Subject: [PATCH 038/147] rtlwifi: rtl8192c: Prevent sleeping from invalid
- context in rtl8192cu
-
-commit ebecdcc12fed5d3c81853dea61a0a78a5aefab52 upstream.
-
-When driver rtl8192cu is used with the debug level set to 3 or greater,
-the result is "sleeping function called from invalid context" due to
-an rcu_read_lock() call in the DM refresh routine in driver rtl8192c.
-This lock is not necessary as the USB driver does not use the struct
-being protected, thus the lock is set only when a PCI interface is
-active.
-
-This bug is reported in https://bugzilla.kernel.org/show_bug.cgi?id=42775.
-
-Reported-by: Ronald Wahl <ronald.wahl at raritan.com>
-Tested-by: Ronald Wahl <ronald.wahl at raritan.com>
-Signed-off-by: Larry Finger <Larry.Finger at lwfinger.net>
-Cc: Ronald Wahl <ronald.wahl at raritan.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/net/wireless/rtlwifi/rtl8192c/dm_common.c | 11 ++++++++---
- 1 file changed, 8 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/net/wireless/rtlwifi/rtl8192c/dm_common.c b/drivers/net/wireless/rtlwifi/rtl8192c/dm_common.c
-index 72a98ca..4de6b78 100644
---- a/drivers/net/wireless/rtlwifi/rtl8192c/dm_common.c
-+++ b/drivers/net/wireless/rtlwifi/rtl8192c/dm_common.c
-@@ -1219,13 +1219,18 @@ static void rtl92c_dm_refresh_rate_adaptive_mask(struct ieee80211_hw *hw)
- ("PreState = %d, CurState = %d\n",
- p_ra->pre_ratr_state, p_ra->ratr_state));
-
-- rcu_read_lock();
-- sta = ieee80211_find_sta(mac->vif, mac->bssid);
-+ /* Only the PCI card uses sta in the update rate table
-+ * callback routine */
-+ if (rtlhal->interface == INTF_PCI) {
-+ rcu_read_lock();
-+ sta = ieee80211_find_sta(mac->vif, mac->bssid);
-+ }
- rtlpriv->cfg->ops->update_rate_tbl(hw, sta,
- p_ra->ratr_state);
-
- p_ra->pre_ratr_state = p_ra->ratr_state;
-- rcu_read_unlock();
-+ if (rtlhal->interface == INTF_PCI)
-+ rcu_read_unlock();
- }
- }
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0039-rtlwifi-rtl8192ce-Fix-loss-of-receive-performance.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0039-rtlwifi-rtl8192ce-Fix-loss-of-receive-performance.patch
deleted file mode 100644
index 1df8ca9..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0039-rtlwifi-rtl8192ce-Fix-loss-of-receive-performance.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 83d83582d1097f305c41838a2ca01dde71d608a1 Mon Sep 17 00:00:00 2001
-From: Jingjun Wu <jingjun_wu at realsil.com.cn>
-Date: Fri, 2 Mar 2012 20:52:14 -0600
-Subject: [PATCH 039/147] rtlwifi: rtl8192ce: Fix loss of receive performance
-
-commit a9b89e2567c743483e6354f64d7a7e3a8c101e9e upstream.
-
-Driver rtl8192ce when used with the RTL8188CE device would start at about
-20 Mbps on a 54 Mbps connection, but quickly drop to 1 Mbps. One of the
-symptoms is that the AP would need to retransmit each packet 4 of 5 times
-before the driver would acknowledge it. Recovery is possible only by
-unloading and reloading the driver. This problem was reported at
-https://bugzilla.redhat.com/show_bug.cgi?id=770207.
-
-The problem is due to a missing update of the gain setting.
-
-Signed-off-by: Jingjun Wu <jingjun_wu at realsil.com.cn>
-Signed-off-by: Larry Finger <Larry.Finger at lwfinger.net>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/net/wireless/rtlwifi/rtl8192c/dm_common.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/drivers/net/wireless/rtlwifi/rtl8192c/dm_common.c b/drivers/net/wireless/rtlwifi/rtl8192c/dm_common.c
-index 4de6b78..a004ad7 100644
---- a/drivers/net/wireless/rtlwifi/rtl8192c/dm_common.c
-+++ b/drivers/net/wireless/rtlwifi/rtl8192c/dm_common.c
-@@ -524,6 +524,10 @@ void rtl92c_dm_write_dig(struct ieee80211_hw *hw)
- dm_digtable.cur_igvalue, dm_digtable.pre_igvalue,
- dm_digtable.backoff_val));
-
-+ dm_digtable.cur_igvalue += 2;
-+ if (dm_digtable.cur_igvalue > 0x3f)
-+ dm_digtable.cur_igvalue = 0x3f;
-+
- if (dm_digtable.pre_igvalue != dm_digtable.cur_igvalue) {
- rtl_set_bbreg(hw, ROFDM0_XAAGCCORE1, 0x7f,
- dm_digtable.cur_igvalue);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0040-iwlwifi-always-monitor-for-stuck-queues.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0040-iwlwifi-always-monitor-for-stuck-queues.patch
deleted file mode 100644
index 2e4e29f..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0040-iwlwifi-always-monitor-for-stuck-queues.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-From 3d581df915fb46fe7929371df85da52ec6d65d69 Mon Sep 17 00:00:00 2001
-From: Johannes Berg <johannes.berg at intel.com>
-Date: Sun, 4 Mar 2012 08:50:46 -0800
-Subject: [PATCH 040/147] iwlwifi: always monitor for stuck queues
-
-commit 342bbf3fee2fa9a18147e74b2e3c4229a4564912 upstream.
-
-If we only monitor while associated, the following
-can happen:
- - we're associated, and the queue stuck check
- runs, setting the queue "touch" time to X
- - we disassociate, stopping the monitoring,
- which leaves the time set to X
- - almost 2s later, we associate, and enqueue
- a frame
- - before the frame is transmitted, we monitor
- for stuck queues, and find the time set to
- X, although it is now later than X + 2000ms,
- so we decide that the queue is stuck and
- erroneously restart the device
-
-It happens more with P2P because there we can
-go between associated/unassociated frequently.
-
-Reported-by: Ben Cahill <ben.m.cahill at intel.com>
-Signed-off-by: Johannes Berg <johannes.berg at intel.com>
-Signed-off-by: Wey-Yi Guy <wey-yi.w.guy at intel.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/net/wireless/iwlwifi/iwl-core.c | 18 ++++--------------
- 1 file changed, 4 insertions(+), 14 deletions(-)
-
-diff --git a/drivers/net/wireless/iwlwifi/iwl-core.c b/drivers/net/wireless/iwlwifi/iwl-core.c
-index fcf5416..3d75d4c 100644
---- a/drivers/net/wireless/iwlwifi/iwl-core.c
-+++ b/drivers/net/wireless/iwlwifi/iwl-core.c
-@@ -1787,20 +1787,10 @@ void iwl_bg_watchdog(unsigned long data)
- if (timeout == 0)
- return;
-
-- /* monitor and check for stuck cmd queue */
-- if (iwl_check_stuck_queue(priv, priv->shrd->cmd_queue))
-- return;
--
-- /* monitor and check for other stuck queues */
-- if (iwl_is_any_associated(priv)) {
-- for (cnt = 0; cnt < hw_params(priv).max_txq_num; cnt++) {
-- /* skip as we already checked the command queue */
-- if (cnt == priv->shrd->cmd_queue)
-- continue;
-- if (iwl_check_stuck_queue(priv, cnt))
-- return;
-- }
-- }
-+ /* monitor and check for stuck queues */
-+ for (cnt = 0; cnt < hw_params(priv).max_txq_num; cnt++)
-+ if (iwl_check_stuck_queue(priv, cnt))
-+ return;
-
- mod_timer(&priv->watchdog, jiffies +
- msecs_to_jiffies(IWL_WD_TICK(timeout)));
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0041-math-Introduce-div64_long.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0041-math-Introduce-div64_long.patch
deleted file mode 100644
index e46ab87..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0041-math-Introduce-div64_long.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From 0041e471301214d86b8d15b4da69899f47161df6 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <levinsasha928 at gmail.com>
-Date: Thu, 15 Mar 2012 12:36:13 -0400
-Subject: [PATCH 041/147] math: Introduce div64_long
-
-commit f910381a55cdaa097030291f272f6e6e4380c39a upstream.
-
-Add a div64_long macro which is used to devide a 64bit number by a long (which
-can be 4 bytes on 32bit systems and 8 bytes on 64bit systems).
-
-Suggested-by: Thomas Gleixner <tglx at linutronix.de>
-Signed-off-by: Sasha Levin <levinsasha928 at gmail.com>
-Cc: johnstul at us.ibm.com
-Link: http://lkml.kernel.org/r/1331829374-31543-1-git-send-email-levinsasha928@gmail.com
-Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- include/linux/math64.h | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/include/linux/math64.h b/include/linux/math64.h
-index 23fcdfc..b8ba855 100644
---- a/include/linux/math64.h
-+++ b/include/linux/math64.h
-@@ -6,6 +6,8 @@
-
- #if BITS_PER_LONG == 64
-
-+#define div64_long(x,y) div64_s64((x),(y))
-+
- /**
- * div_u64_rem - unsigned 64bit divide with 32bit divisor with remainder
- *
-@@ -45,6 +47,8 @@ static inline s64 div64_s64(s64 dividend, s64 divisor)
-
- #elif BITS_PER_LONG == 32
-
-+#define div64_long(x,y) div_s64((x),(y))
-+
- #ifndef div_u64_rem
- static inline u64 div_u64_rem(u64 dividend, u32 divisor, u32 *remainder)
- {
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0042-ntp-Fix-integer-overflow-when-setting-time.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0042-ntp-Fix-integer-overflow-when-setting-time.patch
deleted file mode 100644
index f8e3d0d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0042-ntp-Fix-integer-overflow-when-setting-time.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From c763173b9ab87b7413e63a82be88987250677b89 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <levinsasha928 at gmail.com>
-Date: Thu, 15 Mar 2012 12:36:14 -0400
-Subject: [PATCH 042/147] ntp: Fix integer overflow when setting time
-
-commit a078c6d0e6288fad6d83fb6d5edd91ddb7b6ab33 upstream.
-
-'long secs' is passed as divisor to div_s64, which accepts a 32bit
-divisor. On 64bit machines that value is trimmed back from 8 bytes
-back to 4, causing a divide by zero when the number is bigger than
-(1 << 32) - 1 and all 32 lower bits are 0.
-
-Use div64_long() instead.
-
-Signed-off-by: Sasha Levin <levinsasha928 at gmail.com>
-Cc: johnstul at us.ibm.com
-Link: http://lkml.kernel.org/r/1331829374-31543-2-git-send-email-levinsasha928@gmail.com
-Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- kernel/time/ntp.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/kernel/time/ntp.c b/kernel/time/ntp.c
-index f6117a4..4b85a7a 100644
---- a/kernel/time/ntp.c
-+++ b/kernel/time/ntp.c
-@@ -275,7 +275,7 @@ static inline s64 ntp_update_offset_fll(s64 offset64, long secs)
-
- time_status |= STA_MODE;
-
-- return div_s64(offset64 << (NTP_SCALE_SHIFT - SHIFT_FLL), secs);
-+ return div64_long(offset64 << (NTP_SCALE_SHIFT - SHIFT_FLL), secs);
- }
-
- static void ntp_update_offset(long offset)
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0043-uevent-send-events-in-correct-order-according-to-seq.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0043-uevent-send-events-in-correct-order-according-to-seq.patch
deleted file mode 100644
index 8105aca..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0043-uevent-send-events-in-correct-order-according-to-seq.patch
+++ /dev/null
@@ -1,97 +0,0 @@
-From 30890ccb8ef54dedb2569535dbb781fa2f10a119 Mon Sep 17 00:00:00 2001
-From: Andrew Vagin <avagin at openvz.org>
-Date: Wed, 7 Mar 2012 14:49:56 +0400
-Subject: [PATCH 043/147] uevent: send events in correct order according to
- seqnum (v3)
-
-commit 7b60a18da393ed70db043a777fd9e6d5363077c4 upstream.
-
-The queue handling in the udev daemon assumes that the events are
-ordered.
-
-Before this patch uevent_seqnum is incremented under sequence_lock,
-than an event is send uner uevent_sock_mutex. I want to say that code
-contained a window between incrementing seqnum and sending an event.
-
-This patch locks uevent_sock_mutex before incrementing uevent_seqnum.
-
-v2: delete sequence_lock, uevent_seqnum is protected by uevent_sock_mutex
-v3: unlock the mutex before the goto exit
-
-Thanks for Kay for the comments.
-
-Signed-off-by: Andrew Vagin <avagin at openvz.org>
-Tested-By: Kay Sievers <kay.sievers at vrfy.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- lib/kobject_uevent.c | 19 +++++++++----------
- 1 file changed, 9 insertions(+), 10 deletions(-)
-
-diff --git a/lib/kobject_uevent.c b/lib/kobject_uevent.c
-index ad72a03..6d40244 100644
---- a/lib/kobject_uevent.c
-+++ b/lib/kobject_uevent.c
-@@ -29,16 +29,17 @@
-
- u64 uevent_seqnum;
- char uevent_helper[UEVENT_HELPER_PATH_LEN] = CONFIG_UEVENT_HELPER_PATH;
--static DEFINE_SPINLOCK(sequence_lock);
- #ifdef CONFIG_NET
- struct uevent_sock {
- struct list_head list;
- struct sock *sk;
- };
- static LIST_HEAD(uevent_sock_list);
--static DEFINE_MUTEX(uevent_sock_mutex);
- #endif
-
-+/* This lock protects uevent_seqnum and uevent_sock_list */
-+static DEFINE_MUTEX(uevent_sock_mutex);
-+
- /* the strings here must match the enum in include/linux/kobject.h */
- static const char *kobject_actions[] = {
- [KOBJ_ADD] = "add",
-@@ -136,7 +137,6 @@ int kobject_uevent_env(struct kobject *kobj, enum kobject_action action,
- struct kobject *top_kobj;
- struct kset *kset;
- const struct kset_uevent_ops *uevent_ops;
-- u64 seq;
- int i = 0;
- int retval = 0;
- #ifdef CONFIG_NET
-@@ -243,17 +243,16 @@ int kobject_uevent_env(struct kobject *kobj, enum kobject_action action,
- else if (action == KOBJ_REMOVE)
- kobj->state_remove_uevent_sent = 1;
-
-+ mutex_lock(&uevent_sock_mutex);
- /* we will send an event, so request a new sequence number */
-- spin_lock(&sequence_lock);
-- seq = ++uevent_seqnum;
-- spin_unlock(&sequence_lock);
-- retval = add_uevent_var(env, "SEQNUM=%llu", (unsigned long long)seq);
-- if (retval)
-+ retval = add_uevent_var(env, "SEQNUM=%llu", (unsigned long long)++uevent_seqnum);
-+ if (retval) {
-+ mutex_unlock(&uevent_sock_mutex);
- goto exit;
-+ }
-
- #if defined(CONFIG_NET)
- /* send netlink message */
-- mutex_lock(&uevent_sock_mutex);
- list_for_each_entry(ue_sk, &uevent_sock_list, list) {
- struct sock *uevent_sock = ue_sk->sk;
- struct sk_buff *skb;
-@@ -287,8 +286,8 @@ int kobject_uevent_env(struct kobject *kobj, enum kobject_action action,
- } else
- retval = -ENOMEM;
- }
-- mutex_unlock(&uevent_sock_mutex);
- #endif
-+ mutex_unlock(&uevent_sock_mutex);
-
- /* call uevent_helper, usually only enabled during early boot */
- if (uevent_helper[0] && !kobj_usermode_filter(kobj)) {
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0044-genirq-Fix-long-term-regression-in-genirq-irq_set_ir.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0044-genirq-Fix-long-term-regression-in-genirq-irq_set_ir.patch
deleted file mode 100644
index a19b4b0..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0044-genirq-Fix-long-term-regression-in-genirq-irq_set_ir.patch
+++ /dev/null
@@ -1,96 +0,0 @@
-From 30baeed7abf879cdb6abc168307abd194d0d2668 Mon Sep 17 00:00:00 2001
-From: Russell King <linux at arm.linux.org.uk>
-Date: Mon, 5 Mar 2012 15:07:25 -0800
-Subject: [PATCH 044/147] genirq: Fix long-term regression in genirq
- irq_set_irq_type() handling
-
-commit a09b659cd68c10ec6a30cb91ebd2c327fcd5bfe5 upstream.
-
-In 2008, commit 0c5d1eb77a8be ("genirq: record trigger type") modified the
-way set_irq_type() handles the 'no trigger' condition. However, this has
-an adverse effect on PCMCIA support on Intel StrongARM and probably PXA
-platforms.
-
-PCMCIA has several status signals on the socket which can trigger
-interrupts; some of these status signals depend on the card's mode
-(whether it is configured in memory or IO mode). For example, cards have
-a 'Ready/IRQ' signal: in memory mode, this provides an indication to
-PCMCIA that the card has finished its power up initialization. In IO
-mode, it provides the device interrupt signal. Other status signals
-switch between on-board battery status and loud speaker output.
-
-In classical PCMCIA implementations, where you have a specific socket
-controller, the controller provides a method to mask interrupts from the
-socket, and importantly ignore any state transitions on the pins which
-correspond with interrupts once masked. This masking prevents unwanted
-events caused by the removal and application of socket power being
-forwarded.
-
-However, on platforms where there is no socket controller, the PCMCIA
-status and interrupt signals are routed to standard edge-triggered GPIOs.
-These GPIOs can be configured to interrupt on rising edge, falling edge,
-or never. This is where the problems start.
-
-Edge triggered interrupts are required to record events while disabled via
-the usual methods of {free,request,disable,enable}_irq() to prevent
-problems with dropped interrupts (eg, the 8390 driver uses disable_irq()
-to defer the delivery of interrupts). As a result, these interfaces can
-not be used to implement the desired behaviour.
-
-The side effect of this is that if the 'Ready/IRQ' GPIO is disabled via
-disable_irq() on suspend, and enabled via enable_irq() after resume, we
-will record the state transitions caused by powering events as valid
-interrupts, and foward them to the card driver, which may attempt to
-access a card which is not powered up.
-
-This leads delays resume while drivers spin in their interrupt handlers,
-and complaints from drivers before they realize what's happened.
-
-Moreover, in the case of the 'Ready/IRQ' signal, this is requested and
-freed by the card driver itself; the PCMCIA core has no idea whether the
-interrupt is requested, and, therefore, whether a call to disable_irq()
-would be valid. (We tried this around 2.4.17 / 2.5.1 kernel era, and
-ended up throwing it out because of this problem.)
-
-Therefore, it was decided back in around 2002 to disable the edge
-triggering instead, resulting in all state transitions on the GPIO being
-ignored. That's what we actually need the hardware to do.
-
-The commit above changes this behaviour; it explicitly prevents the 'no
-trigger' state being selected.
-
-The reason that request_irq() does not accept the 'no trigger' state is
-for compatibility with existing drivers which do not provide their desired
-triggering configuration. The set_irq_type() function is 'new' and not
-used by non-trigger aware drivers.
-
-Therefore, revert this change, and restore previously working platforms
-back to their former state.
-
-Signed-off-by: Russell King <rmk+kernel at arm.linux.org.uk>
-Cc: linux at arm.linux.org.uk
-Cc: Ingo Molnar <mingo at elte.hu>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- kernel/irq/chip.c | 3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
-
-diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c
-index fb7db75..25784d6 100644
---- a/kernel/irq/chip.c
-+++ b/kernel/irq/chip.c
-@@ -61,8 +61,7 @@ int irq_set_irq_type(unsigned int irq, unsigned int type)
- return -EINVAL;
-
- type &= IRQ_TYPE_SENSE_MASK;
-- if (type != IRQ_TYPE_NONE)
-- ret = __irq_set_trigger(desc, irq, type);
-+ ret = __irq_set_trigger(desc, irq, type);
- irq_put_desc_busunlock(desc, flags);
- return ret;
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0045-genirq-Fix-incorrect-check-for-forced-IRQ-thread-han.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0045-genirq-Fix-incorrect-check-for-forced-IRQ-thread-han.patch
deleted file mode 100644
index 16059a0..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0045-genirq-Fix-incorrect-check-for-forced-IRQ-thread-han.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 8cc03040447868b0c8ca3f6ca027fdf45216f493 Mon Sep 17 00:00:00 2001
-From: Alexander Gordeev <agordeev at redhat.com>
-Date: Fri, 9 Mar 2012 14:59:13 +0100
-Subject: [PATCH 045/147] genirq: Fix incorrect check for forced IRQ thread
- handler
-
-commit 540b60e24f3f4781d80e47122f0c4486a03375b8 upstream.
-
-We do not want a bitwise AND between boolean operands
-
-Signed-off-by: Alexander Gordeev <agordeev at redhat.com>
-Cc: Oleg Nesterov <oleg at redhat.com>
-Link: http://lkml.kernel.org/r/20120309135912.GA2114@dhcp-26-207.brq.redhat.com
-Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- kernel/irq/manage.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c
-index ae95cd2..7600092 100644
---- a/kernel/irq/manage.c
-+++ b/kernel/irq/manage.c
-@@ -773,7 +773,7 @@ static int irq_thread(void *data)
- struct irqaction *action);
- int wake;
-
-- if (force_irqthreads & test_bit(IRQTF_FORCED_THREAD,
-+ if (force_irqthreads && test_bit(IRQTF_FORCED_THREAD,
- &action->thread_flags))
- handler_fn = irq_forced_thread_fn;
- else
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0046-rtc-Disable-the-alarm-in-the-hardware-v2.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0046-rtc-Disable-the-alarm-in-the-hardware-v2.patch
deleted file mode 100644
index c7db9c6..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0046-rtc-Disable-the-alarm-in-the-hardware-v2.patch
+++ /dev/null
@@ -1,76 +0,0 @@
-From 7d3eb8bf92abead3bd005400d600f32ea4bf9d63 Mon Sep 17 00:00:00 2001
-From: Rabin Vincent <rabin.vincent at stericsson.com>
-Date: Tue, 22 Nov 2011 11:03:14 +0100
-Subject: [PATCH 046/147] rtc: Disable the alarm in the hardware (v2)
-
-commit 41c7f7424259ff11009449f87c95656f69f9b186 upstream.
-
-Currently, the RTC code does not disable the alarm in the hardware.
-
-This means that after a sequence such as the one below (the files are in the
-RTC sysfs), the box will boot up after 2 minutes even though we've
-asked for the alarm to be turned off.
-
- # echo $((`cat since_epoch`)+120) > wakealarm
- # echo 0 > wakealarm
- # poweroff
-
-Fix this by disabling the alarm when there are no timers to run.
-
-The original version of this patch was reverted. This version
-disables the irq directly instead of setting a disabled timer
-in the future.
-
-Cc: John Stultz <john.stultz at linaro.org>
-Signed-off-by: Rabin Vincent <rabin.vincent at stericsson.com>
-[Merged in the second revision from Rabin]
-Signed-off-by: John Stultz <john.stultz at linaro.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/rtc/interface.c | 15 +++++++++++++--
- 1 file changed, 13 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/rtc/interface.c b/drivers/rtc/interface.c
-index 8a1c031..c1edbf8 100644
---- a/drivers/rtc/interface.c
-+++ b/drivers/rtc/interface.c
-@@ -763,6 +763,14 @@ static int rtc_timer_enqueue(struct rtc_device *rtc, struct rtc_timer *timer)
- return 0;
- }
-
-+static void rtc_alarm_disable(struct rtc_device *rtc)
-+{
-+ if (!rtc->ops || !rtc->ops->alarm_irq_enable)
-+ return;
-+
-+ rtc->ops->alarm_irq_enable(rtc->dev.parent, false);
-+}
-+
- /**
- * rtc_timer_remove - Removes a rtc_timer from the rtc_device timerqueue
- * @rtc rtc device
-@@ -784,8 +792,10 @@ static void rtc_timer_remove(struct rtc_device *rtc, struct rtc_timer *timer)
- struct rtc_wkalrm alarm;
- int err;
- next = timerqueue_getnext(&rtc->timerqueue);
-- if (!next)
-+ if (!next) {
-+ rtc_alarm_disable(rtc);
- return;
-+ }
- alarm.time = rtc_ktime_to_tm(next->expires);
- alarm.enabled = 1;
- err = __rtc_set_alarm(rtc, &alarm);
-@@ -847,7 +857,8 @@ again:
- err = __rtc_set_alarm(rtc, &alarm);
- if (err == -ETIME)
- goto again;
-- }
-+ } else
-+ rtc_alarm_disable(rtc);
-
- mutex_unlock(&rtc->ops_lock);
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0047-p54spi-Release-GPIO-lines-and-IRQ-on-error-in-p54spi.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0047-p54spi-Release-GPIO-lines-and-IRQ-on-error-in-p54spi.patch
deleted file mode 100644
index 2ecd9fe..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0047-p54spi-Release-GPIO-lines-and-IRQ-on-error-in-p54spi.patch
+++ /dev/null
@@ -1,71 +0,0 @@
-From 4a8252cb16f69ca39f21e3bf65064d70046adf38 Mon Sep 17 00:00:00 2001
-From: Max Filippov <jcmvbkbc at gmail.com>
-Date: Thu, 1 Mar 2012 00:40:08 +0400
-Subject: [PATCH 047/147] p54spi: Release GPIO lines and IRQ on error in
- p54spi_probe
-
-commit 62ebeed8d00aef75eac4fd6c161cae75a41965ca upstream.
-
-This makes it possible to reload driver if insmod has failed due to
-missing firmware.
-
-Signed-off-by: Max Filippov <jcmvbkbc at gmail.com>
-Acked-by: Christian Lamparter <chunkeey at googlemail.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/net/wireless/p54/p54spi.c | 14 ++++++++++----
- 1 file changed, 10 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/net/wireless/p54/p54spi.c b/drivers/net/wireless/p54/p54spi.c
-index 78d0d69..428401b 100644
---- a/drivers/net/wireless/p54/p54spi.c
-+++ b/drivers/net/wireless/p54/p54spi.c
-@@ -622,19 +622,19 @@ static int __devinit p54spi_probe(struct spi_device *spi)
- ret = spi_setup(spi);
- if (ret < 0) {
- dev_err(&priv->spi->dev, "spi_setup failed");
-- goto err_free_common;
-+ goto err_free;
- }
-
- ret = gpio_request(p54spi_gpio_power, "p54spi power");
- if (ret < 0) {
- dev_err(&priv->spi->dev, "power GPIO request failed: %d", ret);
-- goto err_free_common;
-+ goto err_free;
- }
-
- ret = gpio_request(p54spi_gpio_irq, "p54spi irq");
- if (ret < 0) {
- dev_err(&priv->spi->dev, "irq GPIO request failed: %d", ret);
-- goto err_free_common;
-+ goto err_free_gpio_power;
- }
-
- gpio_direction_output(p54spi_gpio_power, 0);
-@@ -645,7 +645,7 @@ static int __devinit p54spi_probe(struct spi_device *spi)
- priv->spi);
- if (ret < 0) {
- dev_err(&priv->spi->dev, "request_irq() failed");
-- goto err_free_common;
-+ goto err_free_gpio_irq;
- }
-
- irq_set_irq_type(gpio_to_irq(p54spi_gpio_irq), IRQ_TYPE_EDGE_RISING);
-@@ -677,6 +677,12 @@ static int __devinit p54spi_probe(struct spi_device *spi)
- return 0;
-
- err_free_common:
-+ free_irq(gpio_to_irq(p54spi_gpio_irq), spi);
-+err_free_gpio_irq:
-+ gpio_free(p54spi_gpio_irq);
-+err_free_gpio_power:
-+ gpio_free(p54spi_gpio_power);
-+err_free:
- p54_free_common(priv->hw);
- return ret;
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0048-rtnetlink-Fix-VF-IFLA-policy.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0048-rtnetlink-Fix-VF-IFLA-policy.patch
deleted file mode 100644
index f938d1c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0048-rtnetlink-Fix-VF-IFLA-policy.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From cf7eecb4e8e024ff0de45c29a63241a518ddf4a0 Mon Sep 17 00:00:00 2001
-From: Greg Rose <gregory.v.rose at intel.com>
-Date: Wed, 8 Feb 2012 00:45:00 +0000
-Subject: [PATCH 048/147] rtnetlink: Fix VF IFLA policy
-
-commit 48752f6513012a1b078da08b145d5c40a644f058 upstream.
-
-Add VF spoof check to IFLA policy. The original patch I submitted to
-add the spoof checking feature to rtnl failed to add the proper policy
-rule that identifies the data type and len. This patch corrects that
-oversight. No bugs have been reported against this but it may cause
-some problem for the netlink message parsing that uses the policy
-table.
-
-Signed-off-by: Greg Rose <gregory.v.rose at intel.com>
-Tested-by: Sibai Li <sibai.li at intel.com>
-Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher at intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- net/core/rtnetlink.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c
-index 9083e82..2ef859a 100644
---- a/net/core/rtnetlink.c
-+++ b/net/core/rtnetlink.c
-@@ -1116,6 +1116,8 @@ static const struct nla_policy ifla_vf_policy[IFLA_VF_MAX+1] = {
- .len = sizeof(struct ifla_vf_vlan) },
- [IFLA_VF_TX_RATE] = { .type = NLA_BINARY,
- .len = sizeof(struct ifla_vf_tx_rate) },
-+ [IFLA_VF_SPOOFCHK] = { .type = NLA_BINARY,
-+ .len = sizeof(struct ifla_vf_spoofchk) },
- };
-
- static const struct nla_policy ifla_port_policy[IFLA_PORT_MAX+1] = {
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0049-IB-iser-Post-initial-receive-buffers-before-sending-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0049-IB-iser-Post-initial-receive-buffers-before-sending-.patch
deleted file mode 100644
index 8d3cd74..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0049-IB-iser-Post-initial-receive-buffers-before-sending-.patch
+++ /dev/null
@@ -1,143 +0,0 @@
-From de960f13b12a65cff5f74f1f7bb6871fbd9ac432 Mon Sep 17 00:00:00 2001
-From: Or Gerlitz <ogerlitz at mellanox.com>
-Date: Mon, 5 Mar 2012 18:21:44 +0200
-Subject: [PATCH 049/147] IB/iser: Post initial receive buffers before sending
- the final login request
-
-commit 89e984e2c2cd14f77ccb26c47726ac7f13b70ae8 upstream.
-
-An iser target may send iscsi NO-OP PDUs as soon as it marks the iSER
-iSCSI session as fully operative. This means that there is window
-where there are no posted receive buffers on the initiator side, so
-it's possible for the iSER RC connection to break because of RNR NAK /
-retry errors. To fix this, rely on the flags bits in the login
-request to have FFP (0x3) in the lower nibble as a marker for the
-final login request, and post an initial chunk of receive buffers
-before sending that login request instead of after getting the login
-response.
-
-Signed-off-by: Or Gerlitz <ogerlitz at mellanox.com>
-Signed-off-by: Roland Dreier <roland at purestorage.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/infiniband/ulp/iser/iscsi_iser.c | 18 ++++------------
- drivers/infiniband/ulp/iser/iscsi_iser.h | 1 +
- drivers/infiniband/ulp/iser/iser_initiator.c | 30 +++++++++++++++-----------
- 3 files changed, 22 insertions(+), 27 deletions(-)
-
-diff --git a/drivers/infiniband/ulp/iser/iscsi_iser.c b/drivers/infiniband/ulp/iser/iscsi_iser.c
-index 7e7373a..d5f3b69 100644
---- a/drivers/infiniband/ulp/iser/iscsi_iser.c
-+++ b/drivers/infiniband/ulp/iser/iscsi_iser.c
-@@ -364,6 +364,9 @@ iscsi_iser_conn_bind(struct iscsi_cls_session *cls_session,
- }
- ib_conn = ep->dd_data;
-
-+ if (iser_alloc_rx_descriptors(ib_conn))
-+ return -ENOMEM;
-+
- /* binds the iSER connection retrieved from the previously
- * connected ep_handle to the iSCSI layer connection. exchanges
- * connection pointers */
-@@ -398,19 +401,6 @@ iscsi_iser_conn_stop(struct iscsi_cls_conn *cls_conn, int flag)
- iser_conn->ib_conn = NULL;
- }
-
--static int
--iscsi_iser_conn_start(struct iscsi_cls_conn *cls_conn)
--{
-- struct iscsi_conn *conn = cls_conn->dd_data;
-- int err;
--
-- err = iser_conn_set_full_featured_mode(conn);
-- if (err)
-- return err;
--
-- return iscsi_conn_start(cls_conn);
--}
--
- static void iscsi_iser_session_destroy(struct iscsi_cls_session *cls_session)
- {
- struct Scsi_Host *shost = iscsi_session_to_shost(cls_session);
-@@ -724,7 +714,7 @@ static struct iscsi_transport iscsi_iser_transport = {
- .get_conn_param = iscsi_conn_get_param,
- .get_ep_param = iscsi_iser_get_ep_param,
- .get_session_param = iscsi_session_get_param,
-- .start_conn = iscsi_iser_conn_start,
-+ .start_conn = iscsi_conn_start,
- .stop_conn = iscsi_iser_conn_stop,
- /* iscsi host params */
- .get_host_param = iscsi_host_get_param,
-diff --git a/drivers/infiniband/ulp/iser/iscsi_iser.h b/drivers/infiniband/ulp/iser/iscsi_iser.h
-index db7ea37..296be43 100644
---- a/drivers/infiniband/ulp/iser/iscsi_iser.h
-+++ b/drivers/infiniband/ulp/iser/iscsi_iser.h
-@@ -366,4 +366,5 @@ int iser_dma_map_task_data(struct iscsi_iser_task *iser_task,
- void iser_dma_unmap_task_data(struct iscsi_iser_task *iser_task);
- int iser_initialize_task_headers(struct iscsi_task *task,
- struct iser_tx_desc *tx_desc);
-+int iser_alloc_rx_descriptors(struct iser_conn *ib_conn);
- #endif
-diff --git a/drivers/infiniband/ulp/iser/iser_initiator.c b/drivers/infiniband/ulp/iser/iser_initiator.c
-index a607542..738a149 100644
---- a/drivers/infiniband/ulp/iser/iser_initiator.c
-+++ b/drivers/infiniband/ulp/iser/iser_initiator.c
-@@ -170,7 +170,7 @@ static void iser_create_send_desc(struct iser_conn *ib_conn,
- }
-
-
--static int iser_alloc_rx_descriptors(struct iser_conn *ib_conn)
-+int iser_alloc_rx_descriptors(struct iser_conn *ib_conn)
- {
- int i, j;
- u64 dma_addr;
-@@ -242,23 +242,24 @@ void iser_free_rx_descriptors(struct iser_conn *ib_conn)
- kfree(ib_conn->rx_descs);
- }
-
--/**
-- * iser_conn_set_full_featured_mode - (iSER API)
-- */
--int iser_conn_set_full_featured_mode(struct iscsi_conn *conn)
-+static int iser_post_rx_bufs(struct iscsi_conn *conn, struct iscsi_hdr *req)
- {
- struct iscsi_iser_conn *iser_conn = conn->dd_data;
-
-- iser_dbg("Initially post: %d\n", ISER_MIN_POSTED_RX);
--
-- /* Check that there is no posted recv or send buffers left - */
-- /* they must be consumed during the login phase */
-- BUG_ON(iser_conn->ib_conn->post_recv_buf_count != 0);
-- BUG_ON(atomic_read(&iser_conn->ib_conn->post_send_buf_count) != 0);
-+ iser_dbg("req op %x flags %x\n", req->opcode, req->flags);
-+ /* check if this is the last login - going to full feature phase */
-+ if ((req->flags & ISCSI_FULL_FEATURE_PHASE) != ISCSI_FULL_FEATURE_PHASE)
-+ return 0;
-
-- if (iser_alloc_rx_descriptors(iser_conn->ib_conn))
-- return -ENOMEM;
-+ /*
-+ * Check that there is one posted recv buffer (for the last login
-+ * response) and no posted send buffers left - they must have been
-+ * consumed during previous login phases.
-+ */
-+ WARN_ON(iser_conn->ib_conn->post_recv_buf_count != 1);
-+ WARN_ON(atomic_read(&iser_conn->ib_conn->post_send_buf_count) != 0);
-
-+ iser_dbg("Initially post: %d\n", ISER_MIN_POSTED_RX);
- /* Initial post receive buffers */
- if (iser_post_recvm(iser_conn->ib_conn, ISER_MIN_POSTED_RX))
- return -ENOMEM;
-@@ -438,6 +439,9 @@ int iser_send_control(struct iscsi_conn *conn,
- err = iser_post_recvl(iser_conn->ib_conn);
- if (err)
- goto send_control_error;
-+ err = iser_post_rx_bufs(conn, task->hdr);
-+ if (err)
-+ goto send_control_error;
- }
-
- err = iser_post_send(iser_conn->ib_conn, mdesc);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0050-ima-fix-Kconfig-dependencies.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0050-ima-fix-Kconfig-dependencies.patch
deleted file mode 100644
index d1add07..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0050-ima-fix-Kconfig-dependencies.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From 48128d2a875a34aeef5b89ed93e2887179534b33 Mon Sep 17 00:00:00 2001
-From: Fabio Estevam <festevam at gmail.com>
-Date: Thu, 5 Jan 2012 12:49:54 -0200
-Subject: [PATCH 050/147] ima: fix Kconfig dependencies
-
-commit f4a0391dfa91155bd961673b31eb42d9d45c799d upstream.
-
-Fix the following build warning:
-warning: (IMA) selects TCG_TPM which has unmet direct dependencies
-(HAS_IOMEM && EXPERIMENTAL)
-
-Suggested-by: Rajiv Andrade <srajiv at linux.vnet.ibm.com>
-Signed-off-by: Fabio Estevam <fabio.estevam at freescale.com>
-Signed-off-by: Rajiv Andrade <srajiv at linux.vnet.ibm.com>
-Signed-off-by: Mimi Zohar <zohar at us.ibm.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/char/tpm/Kconfig | 1 -
- security/integrity/ima/Kconfig | 2 +-
- 2 files changed, 1 insertion(+), 2 deletions(-)
-
-diff --git a/drivers/char/tpm/Kconfig b/drivers/char/tpm/Kconfig
-index fa567f1..c9e045c 100644
---- a/drivers/char/tpm/Kconfig
-+++ b/drivers/char/tpm/Kconfig
-@@ -5,7 +5,6 @@
- menuconfig TCG_TPM
- tristate "TPM Hardware Support"
- depends on HAS_IOMEM
-- depends on EXPERIMENTAL
- select SECURITYFS
- ---help---
- If you have a TPM security chip in your system, which
-diff --git a/security/integrity/ima/Kconfig b/security/integrity/ima/Kconfig
-index 4f554f2..063298a 100644
---- a/security/integrity/ima/Kconfig
-+++ b/security/integrity/ima/Kconfig
-@@ -9,7 +9,7 @@ config IMA
- select CRYPTO_HMAC
- select CRYPTO_MD5
- select CRYPTO_SHA1
-- select TCG_TPM if !S390 && !UML
-+ select TCG_TPM if HAS_IOMEM && !UML
- select TCG_TIS if TCG_TPM
- help
- The Trusted Computing Group(TCG) runtime Integrity
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0051-x86-ioapic-Add-register-level-checks-to-detect-bogus.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0051-x86-ioapic-Add-register-level-checks-to-detect-bogus.patch
deleted file mode 100644
index a503062..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0051-x86-ioapic-Add-register-level-checks-to-detect-bogus.patch
+++ /dev/null
@@ -1,113 +0,0 @@
-From 817b882783a89bae08689d9eff2b5af91f44c4e1 Mon Sep 17 00:00:00 2001
-From: Suresh Siddha <suresh.b.siddha at intel.com>
-Date: Mon, 12 Mar 2012 11:36:33 -0700
-Subject: [PATCH 051/147] x86/ioapic: Add register level checks to detect
- bogus io-apic entries
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit 73d63d038ee9f769f5e5b46792d227fe20e442c5 upstream.
-
-With the recent changes to clear_IO_APIC_pin() which tries to
-clear remoteIRR bit explicitly, some of the users started to see
-"Unable to reset IRR for apic .." messages.
-
-Close look shows that these are related to bogus IO-APIC entries
-which return's all 1's for their io-apic registers. And the
-above mentioned error messages are benign. But kernel should
-have ignored such io-apic's in the first place.
-
-Check if register 0, 1, 2 of the listed io-apic are all 1's and
-ignore such io-apic.
-
-Reported-by: ??lvaro Castillo <midgoon at gmail.com>
-Tested-by: Jon Dufresne <jon at jondufresne.org>
-Signed-off-by: Suresh Siddha <suresh.b.siddha at intel.com>
-Cc: yinghai at kernel.org
-Cc: kernel-team at fedoraproject.org
-Cc: Josh Boyer <jwboyer at redhat.com>
-Link: http://lkml.kernel.org/r/1331577393.31585.94.camel@sbsiddha-desk.sc.intel.com
-[ Performed minor cleanup of affected code. ]
-Signed-off-by: Ingo Molnar <mingo at elte.hu>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/x86/kernel/apic/io_apic.c | 40 ++++++++++++++++++++++++++++++++--------
- 1 file changed, 32 insertions(+), 8 deletions(-)
-
-diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c
-index 6d939d7..a25e276 100644
---- a/arch/x86/kernel/apic/io_apic.c
-+++ b/arch/x86/kernel/apic/io_apic.c
-@@ -3963,18 +3963,36 @@ int mp_find_ioapic_pin(int ioapic, u32 gsi)
- static __init int bad_ioapic(unsigned long address)
- {
- if (nr_ioapics >= MAX_IO_APICS) {
-- printk(KERN_WARNING "WARNING: Max # of I/O APICs (%d) exceeded "
-- "(found %d), skipping\n", MAX_IO_APICS, nr_ioapics);
-+ pr_warn("WARNING: Max # of I/O APICs (%d) exceeded (found %d), skipping\n",
-+ MAX_IO_APICS, nr_ioapics);
- return 1;
- }
- if (!address) {
-- printk(KERN_WARNING "WARNING: Bogus (zero) I/O APIC address"
-- " found in table, skipping!\n");
-+ pr_warn("WARNING: Bogus (zero) I/O APIC address found in table, skipping!\n");
- return 1;
- }
- return 0;
- }
-
-+static __init int bad_ioapic_register(int idx)
-+{
-+ union IO_APIC_reg_00 reg_00;
-+ union IO_APIC_reg_01 reg_01;
-+ union IO_APIC_reg_02 reg_02;
-+
-+ reg_00.raw = io_apic_read(idx, 0);
-+ reg_01.raw = io_apic_read(idx, 1);
-+ reg_02.raw = io_apic_read(idx, 2);
-+
-+ if (reg_00.raw == -1 && reg_01.raw == -1 && reg_02.raw == -1) {
-+ pr_warn("I/O APIC 0x%x registers return all ones, skipping!\n",
-+ mpc_ioapic_addr(idx));
-+ return 1;
-+ }
-+
-+ return 0;
-+}
-+
- void __init mp_register_ioapic(int id, u32 address, u32 gsi_base)
- {
- int idx = 0;
-@@ -3991,6 +4009,12 @@ void __init mp_register_ioapic(int id, u32 address, u32 gsi_base)
- ioapics[idx].mp_config.apicaddr = address;
-
- set_fixmap_nocache(FIX_IO_APIC_BASE_0 + idx, address);
-+
-+ if (bad_ioapic_register(idx)) {
-+ clear_fixmap(FIX_IO_APIC_BASE_0 + idx);
-+ return;
-+ }
-+
- ioapics[idx].mp_config.apicid = io_apic_unique_id(id);
- ioapics[idx].mp_config.apicver = io_apic_get_version(idx);
-
-@@ -4011,10 +4035,10 @@ void __init mp_register_ioapic(int id, u32 address, u32 gsi_base)
- if (gsi_cfg->gsi_end >= gsi_top)
- gsi_top = gsi_cfg->gsi_end + 1;
-
-- printk(KERN_INFO "IOAPIC[%d]: apic_id %d, version %d, address 0x%x, "
-- "GSI %d-%d\n", idx, mpc_ioapic_id(idx),
-- mpc_ioapic_ver(idx), mpc_ioapic_addr(idx),
-- gsi_cfg->gsi_base, gsi_cfg->gsi_end);
-+ pr_info("IOAPIC[%d]: apic_id %d, version %d, address 0x%x, GSI %d-%d\n",
-+ idx, mpc_ioapic_id(idx),
-+ mpc_ioapic_ver(idx), mpc_ioapic_addr(idx),
-+ gsi_cfg->gsi_base, gsi_cfg->gsi_end);
-
- nr_ioapics++;
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0052-mm-thp-fix-pmd_bad-triggering-in-code-paths-holding-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0052-mm-thp-fix-pmd_bad-triggering-in-code-paths-holding-.patch
deleted file mode 100644
index d281a10..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0052-mm-thp-fix-pmd_bad-triggering-in-code-paths-holding-.patch
+++ /dev/null
@@ -1,480 +0,0 @@
-From 11c78e244603f384d1f8cebc627823cc01e952eb Mon Sep 17 00:00:00 2001
-From: Andrea Arcangeli <aarcange at redhat.com>
-Date: Wed, 21 Mar 2012 16:33:42 -0700
-Subject: [PATCH 052/147] mm: thp: fix pmd_bad() triggering in code paths
- holding mmap_sem read mode
-
-commit 1a5a9906d4e8d1976b701f889d8f35d54b928f25 upstream.
-
-In some cases it may happen that pmd_none_or_clear_bad() is called with
-the mmap_sem hold in read mode. In those cases the huge page faults can
-allocate hugepmds under pmd_none_or_clear_bad() and that can trigger a
-false positive from pmd_bad() that will not like to see a pmd
-materializing as trans huge.
-
-It's not khugepaged causing the problem, khugepaged holds the mmap_sem
-in write mode (and all those sites must hold the mmap_sem in read mode
-to prevent pagetables to go away from under them, during code review it
-seems vm86 mode on 32bit kernels requires that too unless it's
-restricted to 1 thread per process or UP builds). The race is only with
-the huge pagefaults that can convert a pmd_none() into a
-pmd_trans_huge().
-
-Effectively all these pmd_none_or_clear_bad() sites running with
-mmap_sem in read mode are somewhat speculative with the page faults, and
-the result is always undefined when they run simultaneously. This is
-probably why it wasn't common to run into this. For example if the
-madvise(MADV_DONTNEED) runs zap_page_range() shortly before the page
-fault, the hugepage will not be zapped, if the page fault runs first it
-will be zapped.
-
-Altering pmd_bad() not to error out if it finds hugepmds won't be enough
-to fix this, because zap_pmd_range would then proceed to call
-zap_pte_range (which would be incorrect if the pmd become a
-pmd_trans_huge()).
-
-The simplest way to fix this is to read the pmd in the local stack
-(regardless of what we read, no need of actual CPU barriers, only
-compiler barrier needed), and be sure it is not changing under the code
-that computes its value. Even if the real pmd is changing under the
-value we hold on the stack, we don't care. If we actually end up in
-zap_pte_range it means the pmd was not none already and it was not huge,
-and it can't become huge from under us (khugepaged locking explained
-above).
-
-All we need is to enforce that there is no way anymore that in a code
-path like below, pmd_trans_huge can be false, but pmd_none_or_clear_bad
-can run into a hugepmd. The overhead of a barrier() is just a compiler
-tweak and should not be measurable (I only added it for THP builds). I
-don't exclude different compiler versions may have prevented the race
-too by caching the value of *pmd on the stack (that hasn't been
-verified, but it wouldn't be impossible considering
-pmd_none_or_clear_bad, pmd_bad, pmd_trans_huge, pmd_none are all inlines
-and there's no external function called in between pmd_trans_huge and
-pmd_none_or_clear_bad).
-
- if (pmd_trans_huge(*pmd)) {
- if (next-addr != HPAGE_PMD_SIZE) {
- VM_BUG_ON(!rwsem_is_locked(&tlb->mm->mmap_sem));
- split_huge_page_pmd(vma->vm_mm, pmd);
- } else if (zap_huge_pmd(tlb, vma, pmd, addr))
- continue;
- /* fall through */
- }
- if (pmd_none_or_clear_bad(pmd))
-
-Because this race condition could be exercised without special
-privileges this was reported in CVE-2012-1179.
-
-The race was identified and fully explained by Ulrich who debugged it.
-I'm quoting his accurate explanation below, for reference.
-
-====== start quote =======
- mapcount 0 page_mapcount 1
- kernel BUG at mm/huge_memory.c:1384!
-
- At some point prior to the panic, a "bad pmd ..." message similar to the
- following is logged on the console:
-
- mm/memory.c:145: bad pmd ffff8800376e1f98(80000000314000e7).
-
- The "bad pmd ..." message is logged by pmd_clear_bad() before it clears
- the page's PMD table entry.
-
- 143 void pmd_clear_bad(pmd_t *pmd)
- 144 {
- -> 145 pmd_ERROR(*pmd);
- 146 pmd_clear(pmd);
- 147 }
-
- After the PMD table entry has been cleared, there is an inconsistency
- between the actual number of PMD table entries that are mapping the page
- and the page's map count (_mapcount field in struct page). When the page
- is subsequently reclaimed, __split_huge_page() detects this inconsistency.
-
- 1381 if (mapcount != page_mapcount(page))
- 1382 printk(KERN_ERR "mapcount %d page_mapcount %d\n",
- 1383 mapcount, page_mapcount(page));
- -> 1384 BUG_ON(mapcount != page_mapcount(page));
-
- The root cause of the problem is a race of two threads in a multithreaded
- process. Thread B incurs a page fault on a virtual address that has never
- been accessed (PMD entry is zero) while Thread A is executing an madvise()
- system call on a virtual address within the same 2 MB (huge page) range.
-
- virtual address space
- .---------------------.
- | |
- | |
- .-|---------------------|
- | | |
- | | |<-- B(fault)
- | | |
- 2 MB | |/////////////////////|-.
- huge < |/////////////////////| > A(range)
- page | |/////////////////////|-'
- | | |
- | | |
- '-|---------------------|
- | |
- | |
- '---------------------'
-
- - Thread A is executing an madvise(..., MADV_DONTNEED) system call
- on the virtual address range "A(range)" shown in the picture.
-
- sys_madvise
- // Acquire the semaphore in shared mode.
- down_read(¤t->mm->mmap_sem)
- ...
- madvise_vma
- switch (behavior)
- case MADV_DONTNEED:
- madvise_dontneed
- zap_page_range
- unmap_vmas
- unmap_page_range
- zap_pud_range
- zap_pmd_range
- //
- // Assume that this huge page has never been accessed.
- // I.e. content of the PMD entry is zero (not mapped).
- //
- if (pmd_trans_huge(*pmd)) {
- // We don't get here due to the above assumption.
- }
- //
- // Assume that Thread B incurred a page fault and
- .---------> // sneaks in here as shown below.
- | //
- | if (pmd_none_or_clear_bad(pmd))
- | {
- | if (unlikely(pmd_bad(*pmd)))
- | pmd_clear_bad
- | {
- | pmd_ERROR
- | // Log "bad pmd ..." message here.
- | pmd_clear
- | // Clear the page's PMD entry.
- | // Thread B incremented the map count
- | // in page_add_new_anon_rmap(), but
- | // now the page is no longer mapped
- | // by a PMD entry (-> inconsistency).
- | }
- | }
- |
- v
- - Thread B is handling a page fault on virtual address "B(fault)" shown
- in the picture.
-
- ...
- do_page_fault
- __do_page_fault
- // Acquire the semaphore in shared mode.
- down_read_trylock(&mm->mmap_sem)
- ...
- handle_mm_fault
- if (pmd_none(*pmd) && transparent_hugepage_enabled(vma))
- // We get here due to the above assumption (PMD entry is zero).
- do_huge_pmd_anonymous_page
- alloc_hugepage_vma
- // Allocate a new transparent huge page here.
- ...
- __do_huge_pmd_anonymous_page
- ...
- spin_lock(&mm->page_table_lock)
- ...
- page_add_new_anon_rmap
- // Here we increment the page's map count (starts at -1).
- atomic_set(&page->_mapcount, 0)
- set_pmd_at
- // Here we set the page's PMD entry which will be cleared
- // when Thread A calls pmd_clear_bad().
- ...
- spin_unlock(&mm->page_table_lock)
-
- The mmap_sem does not prevent the race because both threads are acquiring
- it in shared mode (down_read). Thread B holds the page_table_lock while
- the page's map count and PMD table entry are updated. However, Thread A
- does not synchronize on that lock.
-
-====== end quote =======
-
-[akpm at linux-foundation.org: checkpatch fixes]
-Reported-by: Ulrich Obergfell <uobergfe at redhat.com>
-Signed-off-by: Andrea Arcangeli <aarcange at redhat.com>
-Acked-by: Johannes Weiner <hannes at cmpxchg.org>
-Cc: Mel Gorman <mgorman at suse.de>
-Cc: Hugh Dickins <hughd at google.com>
-Cc: Dave Jones <davej at redhat.com>
-Acked-by: Larry Woodman <lwoodman at redhat.com>
-Acked-by: Rik van Riel <riel at redhat.com>
-Cc: Mark Salter <msalter at redhat.com>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/x86/kernel/vm86_32.c | 2 ++
- fs/proc/task_mmu.c | 9 ++++++
- include/asm-generic/pgtable.h | 61 +++++++++++++++++++++++++++++++++++++++++
- mm/memcontrol.c | 4 +++
- mm/memory.c | 16 ++++++++---
- mm/mempolicy.c | 2 +-
- mm/mincore.c | 2 +-
- mm/pagewalk.c | 2 +-
- mm/swapfile.c | 4 +--
- 9 files changed, 92 insertions(+), 10 deletions(-)
-
-diff --git a/arch/x86/kernel/vm86_32.c b/arch/x86/kernel/vm86_32.c
-index 863f875..04b8726 100644
---- a/arch/x86/kernel/vm86_32.c
-+++ b/arch/x86/kernel/vm86_32.c
-@@ -172,6 +172,7 @@ static void mark_screen_rdonly(struct mm_struct *mm)
- spinlock_t *ptl;
- int i;
-
-+ down_write(&mm->mmap_sem);
- pgd = pgd_offset(mm, 0xA0000);
- if (pgd_none_or_clear_bad(pgd))
- goto out;
-@@ -190,6 +191,7 @@ static void mark_screen_rdonly(struct mm_struct *mm)
- }
- pte_unmap_unlock(pte, ptl);
- out:
-+ up_write(&mm->mmap_sem);
- flush_tlb();
- }
-
-diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c
-index 7dcd2a2..3efa725 100644
---- a/fs/proc/task_mmu.c
-+++ b/fs/proc/task_mmu.c
-@@ -409,6 +409,9 @@ static int smaps_pte_range(pmd_t *pmd, unsigned long addr, unsigned long end,
- } else {
- spin_unlock(&walk->mm->page_table_lock);
- }
-+
-+ if (pmd_trans_unstable(pmd))
-+ return 0;
- /*
- * The mmap_sem held all the way back in m_start() is what
- * keeps khugepaged out of here and from collapsing things
-@@ -507,6 +510,8 @@ static int clear_refs_pte_range(pmd_t *pmd, unsigned long addr,
- struct page *page;
-
- split_huge_page_pmd(walk->mm, pmd);
-+ if (pmd_trans_unstable(pmd))
-+ return 0;
-
- pte = pte_offset_map_lock(vma->vm_mm, pmd, addr, &ptl);
- for (; addr != end; pte++, addr += PAGE_SIZE) {
-@@ -670,6 +675,8 @@ static int pagemap_pte_range(pmd_t *pmd, unsigned long addr, unsigned long end,
- int err = 0;
-
- split_huge_page_pmd(walk->mm, pmd);
-+ if (pmd_trans_unstable(pmd))
-+ return 0;
-
- /* find the first VMA at or above 'addr' */
- vma = find_vma(walk->mm, addr);
-@@ -961,6 +968,8 @@ static int gather_pte_stats(pmd_t *pmd, unsigned long addr,
- spin_unlock(&walk->mm->page_table_lock);
- }
-
-+ if (pmd_trans_unstable(pmd))
-+ return 0;
- orig_pte = pte = pte_offset_map_lock(walk->mm, pmd, addr, &ptl);
- do {
- struct page *page = can_gather_numa_stats(*pte, md->vma, addr);
-diff --git a/include/asm-generic/pgtable.h b/include/asm-generic/pgtable.h
-index 76bff2b..a03c098 100644
---- a/include/asm-generic/pgtable.h
-+++ b/include/asm-generic/pgtable.h
-@@ -425,6 +425,8 @@ extern void untrack_pfn_vma(struct vm_area_struct *vma, unsigned long pfn,
- unsigned long size);
- #endif
-
-+#ifdef CONFIG_MMU
-+
- #ifndef CONFIG_TRANSPARENT_HUGEPAGE
- static inline int pmd_trans_huge(pmd_t pmd)
- {
-@@ -441,7 +443,66 @@ static inline int pmd_write(pmd_t pmd)
- return 0;
- }
- #endif /* __HAVE_ARCH_PMD_WRITE */
-+#endif /* CONFIG_TRANSPARENT_HUGEPAGE */
-+
-+/*
-+ * This function is meant to be used by sites walking pagetables with
-+ * the mmap_sem hold in read mode to protect against MADV_DONTNEED and
-+ * transhuge page faults. MADV_DONTNEED can convert a transhuge pmd
-+ * into a null pmd and the transhuge page fault can convert a null pmd
-+ * into an hugepmd or into a regular pmd (if the hugepage allocation
-+ * fails). While holding the mmap_sem in read mode the pmd becomes
-+ * stable and stops changing under us only if it's not null and not a
-+ * transhuge pmd. When those races occurs and this function makes a
-+ * difference vs the standard pmd_none_or_clear_bad, the result is
-+ * undefined so behaving like if the pmd was none is safe (because it
-+ * can return none anyway). The compiler level barrier() is critically
-+ * important to compute the two checks atomically on the same pmdval.
-+ */
-+static inline int pmd_none_or_trans_huge_or_clear_bad(pmd_t *pmd)
-+{
-+ /* depend on compiler for an atomic pmd read */
-+ pmd_t pmdval = *pmd;
-+ /*
-+ * The barrier will stabilize the pmdval in a register or on
-+ * the stack so that it will stop changing under the code.
-+ */
-+#ifdef CONFIG_TRANSPARENT_HUGEPAGE
-+ barrier();
-+#endif
-+ if (pmd_none(pmdval))
-+ return 1;
-+ if (unlikely(pmd_bad(pmdval))) {
-+ if (!pmd_trans_huge(pmdval))
-+ pmd_clear_bad(pmd);
-+ return 1;
-+ }
-+ return 0;
-+}
-+
-+/*
-+ * This is a noop if Transparent Hugepage Support is not built into
-+ * the kernel. Otherwise it is equivalent to
-+ * pmd_none_or_trans_huge_or_clear_bad(), and shall only be called in
-+ * places that already verified the pmd is not none and they want to
-+ * walk ptes while holding the mmap sem in read mode (write mode don't
-+ * need this). If THP is not enabled, the pmd can't go away under the
-+ * code even if MADV_DONTNEED runs, but if THP is enabled we need to
-+ * run a pmd_trans_unstable before walking the ptes after
-+ * split_huge_page_pmd returns (because it may have run when the pmd
-+ * become null, but then a page fault can map in a THP and not a
-+ * regular page).
-+ */
-+static inline int pmd_trans_unstable(pmd_t *pmd)
-+{
-+#ifdef CONFIG_TRANSPARENT_HUGEPAGE
-+ return pmd_none_or_trans_huge_or_clear_bad(pmd);
-+#else
-+ return 0;
- #endif
-+}
-+
-+#endif /* CONFIG_MMU */
-
- #endif /* !__ASSEMBLY__ */
-
-diff --git a/mm/memcontrol.c b/mm/memcontrol.c
-index de67e91..778554f 100644
---- a/mm/memcontrol.c
-+++ b/mm/memcontrol.c
-@@ -5237,6 +5237,8 @@ static int mem_cgroup_count_precharge_pte_range(pmd_t *pmd,
- spinlock_t *ptl;
-
- split_huge_page_pmd(walk->mm, pmd);
-+ if (pmd_trans_unstable(pmd))
-+ return 0;
-
- pte = pte_offset_map_lock(vma->vm_mm, pmd, addr, &ptl);
- for (; addr != end; pte++, addr += PAGE_SIZE)
-@@ -5398,6 +5400,8 @@ static int mem_cgroup_move_charge_pte_range(pmd_t *pmd,
- spinlock_t *ptl;
-
- split_huge_page_pmd(walk->mm, pmd);
-+ if (pmd_trans_unstable(pmd))
-+ return 0;
- retry:
- pte = pte_offset_map_lock(vma->vm_mm, pmd, addr, &ptl);
- for (; addr != end; addr += PAGE_SIZE) {
-diff --git a/mm/memory.c b/mm/memory.c
-index 829d437..1b1ca17 100644
---- a/mm/memory.c
-+++ b/mm/memory.c
-@@ -1228,16 +1228,24 @@ static inline unsigned long zap_pmd_range(struct mmu_gather *tlb,
- do {
- next = pmd_addr_end(addr, end);
- if (pmd_trans_huge(*pmd)) {
-- if (next-addr != HPAGE_PMD_SIZE) {
-+ if (next - addr != HPAGE_PMD_SIZE) {
- VM_BUG_ON(!rwsem_is_locked(&tlb->mm->mmap_sem));
- split_huge_page_pmd(vma->vm_mm, pmd);
- } else if (zap_huge_pmd(tlb, vma, pmd))
-- continue;
-+ goto next;
- /* fall through */
- }
-- if (pmd_none_or_clear_bad(pmd))
-- continue;
-+ /*
-+ * Here there can be other concurrent MADV_DONTNEED or
-+ * trans huge page faults running, and if the pmd is
-+ * none or trans huge it can change under us. This is
-+ * because MADV_DONTNEED holds the mmap_sem in read
-+ * mode.
-+ */
-+ if (pmd_none_or_trans_huge_or_clear_bad(pmd))
-+ goto next;
- next = zap_pte_range(tlb, vma, pmd, addr, next, details);
-+next:
- cond_resched();
- } while (pmd++, addr = next, addr != end);
-
-diff --git a/mm/mempolicy.c b/mm/mempolicy.c
-index c3fdbcb..b26aae2 100644
---- a/mm/mempolicy.c
-+++ b/mm/mempolicy.c
-@@ -512,7 +512,7 @@ static inline int check_pmd_range(struct vm_area_struct *vma, pud_t *pud,
- do {
- next = pmd_addr_end(addr, end);
- split_huge_page_pmd(vma->vm_mm, pmd);
-- if (pmd_none_or_clear_bad(pmd))
-+ if (pmd_none_or_trans_huge_or_clear_bad(pmd))
- continue;
- if (check_pte_range(vma, pmd, addr, next, nodes,
- flags, private))
-diff --git a/mm/mincore.c b/mm/mincore.c
-index 636a868..936b4ce 100644
---- a/mm/mincore.c
-+++ b/mm/mincore.c
-@@ -164,7 +164,7 @@ static void mincore_pmd_range(struct vm_area_struct *vma, pud_t *pud,
- }
- /* fall through */
- }
-- if (pmd_none_or_clear_bad(pmd))
-+ if (pmd_none_or_trans_huge_or_clear_bad(pmd))
- mincore_unmapped_range(vma, addr, next, vec);
- else
- mincore_pte_range(vma, pmd, addr, next, vec);
-diff --git a/mm/pagewalk.c b/mm/pagewalk.c
-index 2f5cf10..aa9701e 100644
---- a/mm/pagewalk.c
-+++ b/mm/pagewalk.c
-@@ -59,7 +59,7 @@ again:
- continue;
-
- split_huge_page_pmd(walk->mm, pmd);
-- if (pmd_none_or_clear_bad(pmd))
-+ if (pmd_none_or_trans_huge_or_clear_bad(pmd))
- goto again;
- err = walk_pte_range(pmd, addr, next, walk);
- if (err)
-diff --git a/mm/swapfile.c b/mm/swapfile.c
-index b1cd120..2015a1e 100644
---- a/mm/swapfile.c
-+++ b/mm/swapfile.c
-@@ -931,9 +931,7 @@ static inline int unuse_pmd_range(struct vm_area_struct *vma, pud_t *pud,
- pmd = pmd_offset(pud, addr);
- do {
- next = pmd_addr_end(addr, end);
-- if (unlikely(pmd_trans_huge(*pmd)))
-- continue;
-- if (pmd_none_or_clear_bad(pmd))
-+ if (pmd_none_or_trans_huge_or_clear_bad(pmd))
- continue;
- ret = unuse_pte_range(vma, pmd, addr, next, entry, page);
- if (ret)
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0053-TPM-Zero-buffer-whole-after-copying-to-userspace.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0053-TPM-Zero-buffer-whole-after-copying-to-userspace.patch
deleted file mode 100644
index 026e58d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0053-TPM-Zero-buffer-whole-after-copying-to-userspace.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 6afa33c872ff109ed854c7dcec52130732f9e62e Mon Sep 17 00:00:00 2001
-From: Tim Gardner <tim.gardner at canonical.com>
-Date: Tue, 6 Dec 2011 11:29:20 -0700
-Subject: [PATCH 053/147] TPM: Zero buffer whole after copying to userspace
-
-commit 3ab1aff89477dafb1aaeafe8c8669114a02b7226 upstream.
-
-Commit 3321c07ae5068568cd61ac9f4ba749006a7185c9 correctly clears the TPM
-buffer if the user specified read length is >= the TPM buffer length. However,
-if the user specified read length is < the TPM buffer length, then part of the
-TPM buffer is left uncleared.
-
-Reported-by: Seth Forshee <seth.forshee at canonical.com>
-Cc: Debora Velarde <debora at linux.vnet.ibm.com>
-Cc: Rajiv Andrade <srajiv at linux.vnet.ibm.com>
-Cc: Marcel Selhorst <m.selhorst at sirrix.com>
-Cc: tpmdd-devel at lists.sourceforge.net
-Signed-off-by: Tim Gardner <tim.gardner at canonical.com>
-Signed-off-by: Rajiv Andrade <srajiv at linux.vnet.ibm.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/char/tpm/tpm.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/char/tpm/tpm.c b/drivers/char/tpm/tpm.c
-index 361a1df..b366b34 100644
---- a/drivers/char/tpm/tpm.c
-+++ b/drivers/char/tpm/tpm.c
-@@ -1115,12 +1115,13 @@ ssize_t tpm_read(struct file *file, char __user *buf,
- ret_size = atomic_read(&chip->data_pending);
- atomic_set(&chip->data_pending, 0);
- if (ret_size > 0) { /* relay data */
-+ ssize_t orig_ret_size = ret_size;
- if (size < ret_size)
- ret_size = size;
-
- mutex_lock(&chip->buffer_mutex);
- rc = copy_to_user(buf, chip->data_buffer, ret_size);
-- memset(chip->data_buffer, 0, ret_size);
-+ memset(chip->data_buffer, 0, orig_ret_size);
- if (rc)
- ret_size = -EFAULT;
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0054-PM-Domains-Fix-handling-of-wakeup-devices-during-sys.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0054-PM-Domains-Fix-handling-of-wakeup-devices-during-sys.patch
deleted file mode 100644
index 5541122..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0054-PM-Domains-Fix-handling-of-wakeup-devices-during-sys.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From 51962c5f291ab2abb638e6121c36fbaa93a9567c Mon Sep 17 00:00:00 2001
-From: "Rafael J. Wysocki" <rjw at sisk.pl>
-Date: Tue, 13 Mar 2012 22:39:31 +0100
-Subject: [PATCH 054/147] PM / Domains: Fix handling of wakeup devices during
- system resume
-
-commit cc85b20780562d404e18a47b9b55b4a5102ae53e upstream.
-
-During system suspend pm_genpd_suspend_noirq() checks if the given
-device is in a wakeup path (i.e. it appears to be needed for one or
-more wakeup devices to work or is a wakeup device itself) and if it
-needs to be "active" for wakeup to work. If that is the case, the
-function returns 0 without incrementing the device domain's counter
-of suspended devices and without executing genpd_stop_dev() for the
-device. In consequence, the device is not stopped (e.g. its clock
-isn't disabled) and power is always supplied to its domain in the
-resulting system sleep state.
-
-However, pm_genpd_resume_noirq() doesn't repeat that check and it
-runs genpd_start_dev() and decrements the domain's counter of
-suspended devices even for the wakeup device that weren't stopped by
-pm_genpd_suspend_noirq(). As a result, the start callback may be run
-unnecessarily for them and their domains' counters of suspended
-devices may become negative. Both outcomes aren't desirable, so fix
-pm_genpd_resume_noirq() to look for wakeup devices that might not be
-stopped by during system suspend.
-
-Signed-off-by: Rafael J. Wysocki <rjw at sisk.pl>
-Tested-by: Simon Horman <horms at verge.net.au>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/base/power/domain.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c
-index 6790cf7..79038e5 100644
---- a/drivers/base/power/domain.c
-+++ b/drivers/base/power/domain.c
-@@ -751,7 +751,8 @@ static int pm_genpd_resume_noirq(struct device *dev)
- if (IS_ERR(genpd))
- return -EINVAL;
-
-- if (genpd->suspend_power_off)
-+ if (genpd->suspend_power_off
-+ || (dev->power.wakeup_path && genpd_dev_active_wakeup(genpd, dev)))
- return 0;
-
- /*
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0055-bootmem-sparsemem-remove-limit-constraint-in-alloc_b.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0055-bootmem-sparsemem-remove-limit-constraint-in-alloc_b.patch
deleted file mode 100644
index 0ec6e15..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0055-bootmem-sparsemem-remove-limit-constraint-in-alloc_b.patch
+++ /dev/null
@@ -1,147 +0,0 @@
-From ad2b33f9aee5de482d4077bcd81d6afde2935336 Mon Sep 17 00:00:00 2001
-From: Nishanth Aravamudan <nacc at linux.vnet.ibm.com>
-Date: Wed, 21 Mar 2012 16:34:07 -0700
-Subject: [PATCH 055/147] bootmem/sparsemem: remove limit constraint in
- alloc_bootmem_section
-
-commit f5bf18fa22f8c41a13eb8762c7373eb3a93a7333 upstream.
-
-While testing AMS (Active Memory Sharing) / CMO (Cooperative Memory
-Overcommit) on powerpc, we tripped the following:
-
- kernel BUG at mm/bootmem.c:483!
- cpu 0x0: Vector: 700 (Program Check) at [c000000000c03940]
- pc: c000000000a62bd8: .alloc_bootmem_core+0x90/0x39c
- lr: c000000000a64bcc: .sparse_early_usemaps_alloc_node+0x84/0x29c
- sp: c000000000c03bc0
- msr: 8000000000021032
- current = 0xc000000000b0cce0
- paca = 0xc000000001d80000
- pid = 0, comm = swapper
- kernel BUG at mm/bootmem.c:483!
- enter ? for help
- [c000000000c03c80] c000000000a64bcc
- .sparse_early_usemaps_alloc_node+0x84/0x29c
- [c000000000c03d50] c000000000a64f10 .sparse_init+0x12c/0x28c
- [c000000000c03e20] c000000000a474f4 .setup_arch+0x20c/0x294
- [c000000000c03ee0] c000000000a4079c .start_kernel+0xb4/0x460
- [c000000000c03f90] c000000000009670 .start_here_common+0x1c/0x2c
-
-This is
-
- BUG_ON(limit && goal + size > limit);
-
-and after some debugging, it seems that
-
- goal = 0x7ffff000000
- limit = 0x80000000000
-
-and sparse_early_usemaps_alloc_node ->
-sparse_early_usemaps_alloc_pgdat_section calls
-
- return alloc_bootmem_section(usemap_size() * count, section_nr);
-
-This is on a system with 8TB available via the AMS pool, and as a quirk
-of AMS in firmware, all of that memory shows up in node 0. So, we end
-up with an allocation that will fail the goal/limit constraints.
-
-In theory, we could "fall-back" to alloc_bootmem_node() in
-sparse_early_usemaps_alloc_node(), but since we actually have HOTREMOVE
-defined, we'll BUG_ON() instead. A simple solution appears to be to
-unconditionally remove the limit condition in alloc_bootmem_section,
-meaning allocations are allowed to cross section boundaries (necessary
-for systems of this size).
-
-Johannes Weiner pointed out that if alloc_bootmem_section() no longer
-guarantees section-locality, we need check_usemap_section_nr() to print
-possible cross-dependencies between node descriptors and the usemaps
-allocated through it. That makes the two loops in
-sparse_early_usemaps_alloc_node() identical, so re-factor the code a
-bit.
-
-[akpm at linux-foundation.org: code simplification]
-Signed-off-by: Nishanth Aravamudan <nacc at us.ibm.com>
-Cc: Dave Hansen <haveblue at us.ibm.com>
-Cc: Anton Blanchard <anton at au1.ibm.com>
-Cc: Paul Mackerras <paulus at samba.org>
-Cc: Ben Herrenschmidt <benh at kernel.crashing.org>
-Cc: Robert Jennings <rcj at linux.vnet.ibm.com>
-Acked-by: Johannes Weiner <hannes at cmpxchg.org>
-Acked-by: Mel Gorman <mgorman at suse.de>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- mm/bootmem.c | 5 ++---
- mm/sparse.c | 30 +++++++++++-------------------
- 2 files changed, 13 insertions(+), 22 deletions(-)
-
-diff --git a/mm/bootmem.c b/mm/bootmem.c
-index 1a77012..b863822 100644
---- a/mm/bootmem.c
-+++ b/mm/bootmem.c
-@@ -768,14 +768,13 @@ void * __init alloc_bootmem_section(unsigned long size,
- unsigned long section_nr)
- {
- bootmem_data_t *bdata;
-- unsigned long pfn, goal, limit;
-+ unsigned long pfn, goal;
-
- pfn = section_nr_to_pfn(section_nr);
- goal = pfn << PAGE_SHIFT;
-- limit = section_nr_to_pfn(section_nr + 1) << PAGE_SHIFT;
- bdata = &bootmem_node_data[early_pfn_to_nid(pfn)];
-
-- return alloc_bootmem_core(bdata, size, SMP_CACHE_BYTES, goal, limit);
-+ return alloc_bootmem_core(bdata, size, SMP_CACHE_BYTES, goal, 0);
- }
- #endif
-
-diff --git a/mm/sparse.c b/mm/sparse.c
-index 61d7cde..a8bc7d3 100644
---- a/mm/sparse.c
-+++ b/mm/sparse.c
-@@ -353,29 +353,21 @@ static void __init sparse_early_usemaps_alloc_node(unsigned long**usemap_map,
-
- usemap = sparse_early_usemaps_alloc_pgdat_section(NODE_DATA(nodeid),
- usemap_count);
-- if (usemap) {
-- for (pnum = pnum_begin; pnum < pnum_end; pnum++) {
-- if (!present_section_nr(pnum))
-- continue;
-- usemap_map[pnum] = usemap;
-- usemap += size;
-+ if (!usemap) {
-+ usemap = alloc_bootmem_node(NODE_DATA(nodeid), size * usemap_count);
-+ if (!usemap) {
-+ printk(KERN_WARNING "%s: allocation failed\n", __func__);
-+ return;
- }
-- return;
- }
-
-- usemap = alloc_bootmem_node(NODE_DATA(nodeid), size * usemap_count);
-- if (usemap) {
-- for (pnum = pnum_begin; pnum < pnum_end; pnum++) {
-- if (!present_section_nr(pnum))
-- continue;
-- usemap_map[pnum] = usemap;
-- usemap += size;
-- check_usemap_section_nr(nodeid, usemap_map[pnum]);
-- }
-- return;
-+ for (pnum = pnum_begin; pnum < pnum_end; pnum++) {
-+ if (!present_section_nr(pnum))
-+ continue;
-+ usemap_map[pnum] = usemap;
-+ usemap += size;
-+ check_usemap_section_nr(nodeid, usemap_map[pnum]);
- }
--
-- printk(KERN_WARNING "%s: allocation failed\n", __func__);
- }
-
- #ifndef CONFIG_SPARSEMEM_VMEMMAP
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0056-hugetlbfs-avoid-taking-i_mutex-from-hugetlbfs_read.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0056-hugetlbfs-avoid-taking-i_mutex-from-hugetlbfs_read.patch
deleted file mode 100644
index d5cfc26..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0056-hugetlbfs-avoid-taking-i_mutex-from-hugetlbfs_read.patch
+++ /dev/null
@@ -1,140 +0,0 @@
-From 2bc105d9e4132f8a07cec0b5df3d308c1b99455f Mon Sep 17 00:00:00 2001
-From: "Aneesh Kumar K.V" <aneesh.kumar at linux.vnet.ibm.com>
-Date: Wed, 21 Mar 2012 16:34:08 -0700
-Subject: [PATCH 056/147] hugetlbfs: avoid taking i_mutex from
- hugetlbfs_read()
-
-commit a05b0855fd15504972dba2358e5faa172a1e50ba upstream.
-
-Taking i_mutex in hugetlbfs_read() can result in deadlock with mmap as
-explained below
-
- Thread A:
- read() on hugetlbfs
- hugetlbfs_read() called
- i_mutex grabbed
- hugetlbfs_read_actor() called
- __copy_to_user() called
- page fault is triggered
- Thread B, sharing address space with A:
- mmap() the same file
- ->mmap_sem is grabbed on task_B->mm->mmap_sem
- hugetlbfs_file_mmap() is called
- attempt to grab ->i_mutex and block waiting for A to give it up
- Thread A:
- pagefault handled blocked on attempt to grab task_A->mm->mmap_sem,
- which happens to be the same thing as task_B->mm->mmap_sem. Block waiting
- for B to give it up.
-
-AFAIU the i_mutex locking was added to hugetlbfs_read() as per
-http://lkml.indiana.edu/hypermail/linux/kernel/0707.2/3066.html to take
-care of the race between truncate and read. This patch fixes this by
-looking at page->mapping under lock_page() (find_lock_page()) to ensure
-that the inode didn't get truncated in the range during a parallel read.
-
-Ideally we can extend the patch to make sure we don't increase i_size in
-mmap. But that will break userspace, because applications will now have
-to use truncate(2) to increase i_size in hugetlbfs.
-
-Based on the original patch from Hillf Danton.
-
-Signed-off-by: Aneesh Kumar K.V <aneesh.kumar at linux.vnet.ibm.com>
-Cc: Hillf Danton <dhillf at gmail.com>
-Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu at jp.fujitsu.com>
-Cc: Al Viro <viro at zeniv.linux.org.uk>
-Cc: Hugh Dickins <hughd at google.com>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/hugetlbfs/inode.c | 25 +++++++++----------------
- 1 file changed, 9 insertions(+), 16 deletions(-)
-
-diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c
-index 0be5a78..2d0ca24 100644
---- a/fs/hugetlbfs/inode.c
-+++ b/fs/hugetlbfs/inode.c
-@@ -238,17 +238,10 @@ static ssize_t hugetlbfs_read(struct file *filp, char __user *buf,
- loff_t isize;
- ssize_t retval = 0;
-
-- mutex_lock(&inode->i_mutex);
--
- /* validate length */
- if (len == 0)
- goto out;
-
-- isize = i_size_read(inode);
-- if (!isize)
-- goto out;
--
-- end_index = (isize - 1) >> huge_page_shift(h);
- for (;;) {
- struct page *page;
- unsigned long nr, ret;
-@@ -256,18 +249,21 @@ static ssize_t hugetlbfs_read(struct file *filp, char __user *buf,
-
- /* nr is the maximum number of bytes to copy from this page */
- nr = huge_page_size(h);
-+ isize = i_size_read(inode);
-+ if (!isize)
-+ goto out;
-+ end_index = (isize - 1) >> huge_page_shift(h);
- if (index >= end_index) {
- if (index > end_index)
- goto out;
- nr = ((isize - 1) & ~huge_page_mask(h)) + 1;
-- if (nr <= offset) {
-+ if (nr <= offset)
- goto out;
-- }
- }
- nr = nr - offset;
-
- /* Find the page */
-- page = find_get_page(mapping, index);
-+ page = find_lock_page(mapping, index);
- if (unlikely(page == NULL)) {
- /*
- * We have a HOLE, zero out the user-buffer for the
-@@ -279,17 +275,18 @@ static ssize_t hugetlbfs_read(struct file *filp, char __user *buf,
- else
- ra = 0;
- } else {
-+ unlock_page(page);
-+
- /*
- * We have the page, copy it to user space buffer.
- */
- ra = hugetlbfs_read_actor(page, offset, buf, len, nr);
- ret = ra;
-+ page_cache_release(page);
- }
- if (ra < 0) {
- if (retval == 0)
- retval = ra;
-- if (page)
-- page_cache_release(page);
- goto out;
- }
-
-@@ -299,16 +296,12 @@ static ssize_t hugetlbfs_read(struct file *filp, char __user *buf,
- index += offset >> huge_page_shift(h);
- offset &= ~huge_page_mask(h);
-
-- if (page)
-- page_cache_release(page);
--
- /* short read or no more work */
- if ((ret != nr) || (len == 0))
- break;
- }
- out:
- *ppos = ((loff_t)index << huge_page_shift(h)) + offset;
-- mutex_unlock(&inode->i_mutex);
- return retval;
- }
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0057-ASoC-fsl-p1022ds-tell-the-WM8776-codec-driver-that-i.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0057-ASoC-fsl-p1022ds-tell-the-WM8776-codec-driver-that-i.patch
deleted file mode 100644
index a4c39dd..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0057-ASoC-fsl-p1022ds-tell-the-WM8776-codec-driver-that-i.patch
+++ /dev/null
@@ -1,89 +0,0 @@
-From a7338f169446baa4311a9248017ab75ed417a46c Mon Sep 17 00:00:00 2001
-From: Timur Tabi <timur at freescale.com>
-Date: Fri, 16 Mar 2012 16:32:52 -0500
-Subject: [PATCH 057/147] ASoC: fsl: p1022ds: tell the WM8776 codec driver
- that it's the master
-
-commit 70ac07bb633dee75ac554195b9a4d69adfa7803c upstream.
-
-The WM8776 codec driver requires the machine driver to set one of the
-SND_SOC_DAIFMT_CBx_xxx values. The P1022DS machine driver should be setting
-SND_SOC_DAIFMT_CBM_CFM, but since that value was zero, no one noticed.
-
-Commit 75d9ac46 ("ASoC: Allow DAI formats to be specified in the
-dai_link"), however, changed the value of SND_SOC_DAIFMT_CBM_CFM from zero
-to a non-zero value, which means that it now needs to be specifically set
-by the machine driver.
-
-We also set SND_SOC_DAIFMT_NB_NF, for the same reason.
-
-Signed-off-by: Timur Tabi <timur at freescale.com>
-Signed-off-by: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- sound/soc/fsl/p1022_ds.c | 24 ++++++++++++++++--------
- 1 file changed, 16 insertions(+), 8 deletions(-)
-
-diff --git a/sound/soc/fsl/p1022_ds.c b/sound/soc/fsl/p1022_ds.c
-index 2c064a9..075677c 100644
---- a/sound/soc/fsl/p1022_ds.c
-+++ b/sound/soc/fsl/p1022_ds.c
-@@ -392,7 +392,8 @@ static int p1022_ds_probe(struct platform_device *pdev)
- }
-
- if (strcasecmp(sprop, "i2s-slave") == 0) {
-- mdata->dai_format = SND_SOC_DAIFMT_I2S;
-+ mdata->dai_format = SND_SOC_DAIFMT_NB_NF |
-+ SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBM_CFM;
- mdata->codec_clk_direction = SND_SOC_CLOCK_OUT;
- mdata->cpu_clk_direction = SND_SOC_CLOCK_IN;
-
-@@ -409,31 +410,38 @@ static int p1022_ds_probe(struct platform_device *pdev)
- }
- mdata->clk_frequency = be32_to_cpup(iprop);
- } else if (strcasecmp(sprop, "i2s-master") == 0) {
-- mdata->dai_format = SND_SOC_DAIFMT_I2S;
-+ mdata->dai_format = SND_SOC_DAIFMT_NB_NF |
-+ SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBS_CFS;
- mdata->codec_clk_direction = SND_SOC_CLOCK_IN;
- mdata->cpu_clk_direction = SND_SOC_CLOCK_OUT;
- } else if (strcasecmp(sprop, "lj-slave") == 0) {
-- mdata->dai_format = SND_SOC_DAIFMT_LEFT_J;
-+ mdata->dai_format = SND_SOC_DAIFMT_NB_NF |
-+ SND_SOC_DAIFMT_LEFT_J | SND_SOC_DAIFMT_CBM_CFM;
- mdata->codec_clk_direction = SND_SOC_CLOCK_OUT;
- mdata->cpu_clk_direction = SND_SOC_CLOCK_IN;
- } else if (strcasecmp(sprop, "lj-master") == 0) {
-- mdata->dai_format = SND_SOC_DAIFMT_LEFT_J;
-+ mdata->dai_format = SND_SOC_DAIFMT_NB_NF |
-+ SND_SOC_DAIFMT_LEFT_J | SND_SOC_DAIFMT_CBS_CFS;
- mdata->codec_clk_direction = SND_SOC_CLOCK_IN;
- mdata->cpu_clk_direction = SND_SOC_CLOCK_OUT;
- } else if (strcasecmp(sprop, "rj-slave") == 0) {
-- mdata->dai_format = SND_SOC_DAIFMT_RIGHT_J;
-+ mdata->dai_format = SND_SOC_DAIFMT_NB_NF |
-+ SND_SOC_DAIFMT_RIGHT_J | SND_SOC_DAIFMT_CBM_CFM;
- mdata->codec_clk_direction = SND_SOC_CLOCK_OUT;
- mdata->cpu_clk_direction = SND_SOC_CLOCK_IN;
- } else if (strcasecmp(sprop, "rj-master") == 0) {
-- mdata->dai_format = SND_SOC_DAIFMT_RIGHT_J;
-+ mdata->dai_format = SND_SOC_DAIFMT_NB_NF |
-+ SND_SOC_DAIFMT_RIGHT_J | SND_SOC_DAIFMT_CBS_CFS;
- mdata->codec_clk_direction = SND_SOC_CLOCK_IN;
- mdata->cpu_clk_direction = SND_SOC_CLOCK_OUT;
- } else if (strcasecmp(sprop, "ac97-slave") == 0) {
-- mdata->dai_format = SND_SOC_DAIFMT_AC97;
-+ mdata->dai_format = SND_SOC_DAIFMT_NB_NF |
-+ SND_SOC_DAIFMT_AC97 | SND_SOC_DAIFMT_CBM_CFM;
- mdata->codec_clk_direction = SND_SOC_CLOCK_OUT;
- mdata->cpu_clk_direction = SND_SOC_CLOCK_IN;
- } else if (strcasecmp(sprop, "ac97-master") == 0) {
-- mdata->dai_format = SND_SOC_DAIFMT_AC97;
-+ mdata->dai_format = SND_SOC_DAIFMT_NB_NF |
-+ SND_SOC_DAIFMT_AC97 | SND_SOC_DAIFMT_CBS_CFS;
- mdata->codec_clk_direction = SND_SOC_CLOCK_IN;
- mdata->cpu_clk_direction = SND_SOC_CLOCK_OUT;
- } else {
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0058-ASoC-pxa-ssp-atomically-set-stream-active-masks.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0058-ASoC-pxa-ssp-atomically-set-stream-active-masks.patch
deleted file mode 100644
index 295a909..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0058-ASoC-pxa-ssp-atomically-set-stream-active-masks.patch
+++ /dev/null
@@ -1,122 +0,0 @@
-From ab7d4a1c2c58f17a777947ef7e0ae242fea985e4 Mon Sep 17 00:00:00 2001
-From: Daniel Mack <zonque at gmail.com>
-Date: Mon, 19 Mar 2012 09:12:53 +0100
-Subject: [PATCH 058/147] ASoC: pxa-ssp: atomically set stream active masks
-
-commit 273b72c8ce6b28df6b49423d775c3e59072c73c5 upstream.
-
-PXA's SSP engine fails to take its current channel phase into account
-when enabling a stream while the engine is already running. This
-results in randomly swapped left/right channels on either the record
-or the playback side, depending on which one was enabled first.
-
-The following patch fixes this by factoring out the bit field
-modifications in question to a separate function that pauses the
-engine temporarily, modifies the bits and kicks it off again
-afterwards. Appearantly, a transition of SSCR0_SSE syncs both
-directions properly.
-
-The patch has been rolled out to quite a number of devices over the
-last weeks and seems to fix the issue reliably.
-
-Signed-off-by: Daniel Mack <zonque at gmail.com>
-Reported-and-tested-by: Sven Neumann <s.neumann at raumfeld.com>
-Signed-off-by: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- sound/soc/pxa/pxa-ssp.c | 61 ++++++++++++++++++++++++++++-------------------
- 1 file changed, 36 insertions(+), 25 deletions(-)
-
-diff --git a/sound/soc/pxa/pxa-ssp.c b/sound/soc/pxa/pxa-ssp.c
-index 8ad93ee..b583e60 100644
---- a/sound/soc/pxa/pxa-ssp.c
-+++ b/sound/soc/pxa/pxa-ssp.c
-@@ -668,6 +668,38 @@ static int pxa_ssp_hw_params(struct snd_pcm_substream *substream,
- return 0;
- }
-
-+static void pxa_ssp_set_running_bit(struct snd_pcm_substream *substream,
-+ struct ssp_device *ssp, int value)
-+{
-+ uint32_t sscr0 = pxa_ssp_read_reg(ssp, SSCR0);
-+ uint32_t sscr1 = pxa_ssp_read_reg(ssp, SSCR1);
-+ uint32_t sspsp = pxa_ssp_read_reg(ssp, SSPSP);
-+ uint32_t sssr = pxa_ssp_read_reg(ssp, SSSR);
-+
-+ if (value && (sscr0 & SSCR0_SSE))
-+ pxa_ssp_write_reg(ssp, SSCR0, sscr0 & ~SSCR0_SSE);
-+
-+ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
-+ if (value)
-+ sscr1 |= SSCR1_TSRE;
-+ else
-+ sscr1 &= ~SSCR1_TSRE;
-+ } else {
-+ if (value)
-+ sscr1 |= SSCR1_RSRE;
-+ else
-+ sscr1 &= ~SSCR1_RSRE;
-+ }
-+
-+ pxa_ssp_write_reg(ssp, SSCR1, sscr1);
-+
-+ if (value) {
-+ pxa_ssp_write_reg(ssp, SSSR, sssr);
-+ pxa_ssp_write_reg(ssp, SSPSP, sspsp);
-+ pxa_ssp_write_reg(ssp, SSCR0, sscr0 | SSCR0_SSE);
-+ }
-+}
-+
- static int pxa_ssp_trigger(struct snd_pcm_substream *substream, int cmd,
- struct snd_soc_dai *cpu_dai)
- {
-@@ -681,42 +713,21 @@ static int pxa_ssp_trigger(struct snd_pcm_substream *substream, int cmd,
- pxa_ssp_enable(ssp);
- break;
- case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
-- val = pxa_ssp_read_reg(ssp, SSCR1);
-- if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
-- val |= SSCR1_TSRE;
-- else
-- val |= SSCR1_RSRE;
-- pxa_ssp_write_reg(ssp, SSCR1, val);
-+ pxa_ssp_set_running_bit(substream, ssp, 1);
- val = pxa_ssp_read_reg(ssp, SSSR);
- pxa_ssp_write_reg(ssp, SSSR, val);
- break;
- case SNDRV_PCM_TRIGGER_START:
-- val = pxa_ssp_read_reg(ssp, SSCR1);
-- if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
-- val |= SSCR1_TSRE;
-- else
-- val |= SSCR1_RSRE;
-- pxa_ssp_write_reg(ssp, SSCR1, val);
-- pxa_ssp_enable(ssp);
-+ pxa_ssp_set_running_bit(substream, ssp, 1);
- break;
- case SNDRV_PCM_TRIGGER_STOP:
-- val = pxa_ssp_read_reg(ssp, SSCR1);
-- if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
-- val &= ~SSCR1_TSRE;
-- else
-- val &= ~SSCR1_RSRE;
-- pxa_ssp_write_reg(ssp, SSCR1, val);
-+ pxa_ssp_set_running_bit(substream, ssp, 0);
- break;
- case SNDRV_PCM_TRIGGER_SUSPEND:
- pxa_ssp_disable(ssp);
- break;
- case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
-- val = pxa_ssp_read_reg(ssp, SSCR1);
-- if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
-- val &= ~SSCR1_TSRE;
-- else
-- val &= ~SSCR1_RSRE;
-- pxa_ssp_write_reg(ssp, SSCR1, val);
-+ pxa_ssp_set_running_bit(substream, ssp, 0);
- break;
-
- default:
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0059-tcm_loop-Set-residual-field-for-SCSI-commands.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0059-tcm_loop-Set-residual-field-for-SCSI-commands.patch
deleted file mode 100644
index 367ed76..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0059-tcm_loop-Set-residual-field-for-SCSI-commands.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From eb6dc69e78c98c8c61faba348a6eaf6cee1439d9 Mon Sep 17 00:00:00 2001
-From: Roland Dreier <roland at purestorage.com>
-Date: Tue, 14 Feb 2012 15:30:31 -0800
-Subject: [PATCH 059/147] tcm_loop: Set residual field for SCSI commands
-
-commit 6cf3fa6918baab0c447f1206f1cef9166ad04864 upstream.
-
-If the target core signals an over- or under-run, tcm_loop should call
-scsi_set_resid() to tell the SCSI midlayer about the residual data length.
-
-The difference can be seen by doing something like
-
- strace -eioctl sg_raw -r 1024 /dev/sda 8 0 0 0 1 0 > /dev/null
-
-and looking at the "resid=" part of the SG_IO ioctl -- after this patch,
-the field is correctly reported as 512.
-
-Signed-off-by: Roland Dreier <roland at purestorage.com>
-Signed-off-by: Nicholas Bellinger <nab at linux-iscsi.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/target/loopback/tcm_loop.c | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-diff --git a/drivers/target/loopback/tcm_loop.c b/drivers/target/loopback/tcm_loop.c
-index 81d5832..5d1d4f2 100644
---- a/drivers/target/loopback/tcm_loop.c
-+++ b/drivers/target/loopback/tcm_loop.c
-@@ -866,6 +866,9 @@ static int tcm_loop_queue_data_in(struct se_cmd *se_cmd)
-
- sc->result = SAM_STAT_GOOD;
- set_host_byte(sc, DID_OK);
-+ if ((se_cmd->se_cmd_flags & SCF_OVERFLOW_BIT) ||
-+ (se_cmd->se_cmd_flags & SCF_UNDERFLOW_BIT))
-+ scsi_set_resid(sc, se_cmd->residual_count);
- sc->scsi_done(sc);
- return 0;
- }
-@@ -891,6 +894,9 @@ static int tcm_loop_queue_status(struct se_cmd *se_cmd)
- sc->result = se_cmd->scsi_status;
-
- set_host_byte(sc, DID_OK);
-+ if ((se_cmd->se_cmd_flags & SCF_OVERFLOW_BIT) ||
-+ (se_cmd->se_cmd_flags & SCF_UNDERFLOW_BIT))
-+ scsi_set_resid(sc, se_cmd->residual_count);
- sc->scsi_done(sc);
- return 0;
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0060-iscsi-target-Fix-iscsit_alloc_buffs-failure-cases.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0060-iscsi-target-Fix-iscsit_alloc_buffs-failure-cases.patch
deleted file mode 100644
index c4cbbea..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0060-iscsi-target-Fix-iscsit_alloc_buffs-failure-cases.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From eeb9b513b81a2ebbb3812150c091ff26ee28d912 Mon Sep 17 00:00:00 2001
-From: Nicholas Bellinger <nab at linux-iscsi.org>
-Date: Thu, 23 Feb 2012 17:28:43 -0800
-Subject: [PATCH 060/147] iscsi-target: Fix iscsit_alloc_buffs() failure cases
-
-commit d335e6054db616bce3f040e659fa38440518ad1d upstream.
-
-Make iscsit_alloc_buffs() failure case for page_alloc_failed use correct
-__free_page() SGL pointer, and return -ENOMEM for iscsit_allocate_iovecs
-failure to push se_cmd->t_mem_sg release into iscsit_release_cmd()
-callback during iscsit_add_reject_from_cmd() connection reset.
-
-Also drop cmd->t_mem_sg = NULL assignment from page_alloc_failed
-failure case.
-
-Reported-by: Roland Dreier <roland at purestorage.com>
-Cc: Andy Grover <agrover at redhat.com>
-Signed-off-by: Nicholas Bellinger <nab at linux-iscsi.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/target/iscsi/iscsi_target.c | 14 ++++++--------
- 1 file changed, 6 insertions(+), 8 deletions(-)
-
-diff --git a/drivers/target/iscsi/iscsi_target.c b/drivers/target/iscsi/iscsi_target.c
-index 03d3528..0842cc7 100644
---- a/drivers/target/iscsi/iscsi_target.c
-+++ b/drivers/target/iscsi/iscsi_target.c
-@@ -781,7 +781,7 @@ static int iscsit_alloc_buffs(struct iscsi_cmd *cmd)
- struct scatterlist *sgl;
- u32 length = cmd->se_cmd.data_length;
- int nents = DIV_ROUND_UP(length, PAGE_SIZE);
-- int i = 0, ret;
-+ int i = 0, j = 0, ret;
- /*
- * If no SCSI payload is present, allocate the default iovecs used for
- * iSCSI PDU Header
-@@ -822,17 +822,15 @@ static int iscsit_alloc_buffs(struct iscsi_cmd *cmd)
- */
- ret = iscsit_allocate_iovecs(cmd);
- if (ret < 0)
-- goto page_alloc_failed;
-+ return -ENOMEM;
-
- return 0;
-
- page_alloc_failed:
-- while (i >= 0) {
-- __free_page(sg_page(&sgl[i]));
-- i--;
-- }
-- kfree(cmd->t_mem_sg);
-- cmd->t_mem_sg = NULL;
-+ while (j < i)
-+ __free_page(sg_page(&sgl[j++]));
-+
-+ kfree(sgl);
- return -ENOMEM;
- }
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0061-iscsi-target-Fix-dynamic-explict-NodeACL-pointer-ref.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0061-iscsi-target-Fix-dynamic-explict-NodeACL-pointer-ref.patch
deleted file mode 100644
index 016bab4..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0061-iscsi-target-Fix-dynamic-explict-NodeACL-pointer-ref.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 43d63ac69fcc86c6b92dc1b923a3b0e5bd59dab5 Mon Sep 17 00:00:00 2001
-From: Nicholas Bellinger <nab at linux-iscsi.org>
-Date: Sun, 26 Feb 2012 22:16:07 -0800
-Subject: [PATCH 061/147] iscsi-target: Fix dynamic -> explict NodeACL pointer
- reference
-
-commit d06283341aee9e48eff1b068779d340785c635ce upstream.
-
-This patch fixes a free after use in lio_target_make_nodeacl() where
-iscsi_node_acl was referenced from the original se_nacl_new allocation,
-instead of from core_tpg_add_initiator_node_acl() in the case of dynamic
--> explict NodeACL conversion.
-
-Signed-off-by: Nicholas Bellinger <nab at linux-iscsi.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/target/iscsi/iscsi_target_configfs.c | 6 ++----
- 1 file changed, 2 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/target/iscsi/iscsi_target_configfs.c b/drivers/target/iscsi/iscsi_target_configfs.c
-index db32784..83dcf49 100644
---- a/drivers/target/iscsi/iscsi_target_configfs.c
-+++ b/drivers/target/iscsi/iscsi_target_configfs.c
-@@ -816,9 +816,6 @@ static struct se_node_acl *lio_target_make_nodeacl(
- if (!se_nacl_new)
- return ERR_PTR(-ENOMEM);
-
-- acl = container_of(se_nacl_new, struct iscsi_node_acl,
-- se_node_acl);
--
- cmdsn_depth = ISCSI_TPG_ATTRIB(tpg)->default_cmdsn_depth;
- /*
- * se_nacl_new may be released by core_tpg_add_initiator_node_acl()
-@@ -829,7 +826,8 @@ static struct se_node_acl *lio_target_make_nodeacl(
- if (IS_ERR(se_nacl))
- return se_nacl;
-
-- stats_cg = &acl->se_node_acl.acl_fabric_stat_group;
-+ acl = container_of(se_nacl, struct iscsi_node_acl, se_node_acl);
-+ stats_cg = &se_nacl->acl_fabric_stat_group;
-
- stats_cg->default_groups = kzalloc(sizeof(struct config_group) * 2,
- GFP_KERNEL);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0062-ALSA-hda-fix-printing-of-high-HDMI-sample-rates.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0062-ALSA-hda-fix-printing-of-high-HDMI-sample-rates.patch
deleted file mode 100644
index 0eef1c0..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0062-ALSA-hda-fix-printing-of-high-HDMI-sample-rates.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 6b3759def25d01a00d3a88701e97cb397f3aa805 Mon Sep 17 00:00:00 2001
-From: Anssi Hannula <anssi.hannula at iki.fi>
-Date: Tue, 13 Mar 2012 17:43:02 +0200
-Subject: [PATCH 062/147] ALSA: hda - fix printing of high HDMI sample rates
-
-commit 25dc16f69892182192b1234594fd3cf342ad4195 upstream.
-
-A previous commit af65cbf296 (ALSA: hdmi: fix printout of SAD sampling
-rates) fixed the sample rates shown in /proc/asound/cardX/eldY and
-kernel log to not be entirely wrong. However, a missing rate from the
-array added in the patch causes HDMI rates 88.2 kHz, 96 kHz, 176.4 kHz,
-and 192 kHz to be shown as 96 kHz, 176.4 kHz, 192 kHz, and 384 kHz,
-respectively.
-
-Fix the reporting by adding the ALSA rate 64 kHz into the conversion
-array between 48 kHz and 88.2 kHz.
-
-Signed-off-by: Anssi Hannula <anssi.hannula at iki.fi>
-Cc: Pierre-Louis Bossart <pierre-louis.bossart at linux.intel.com>
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- sound/pci/hda/hda_eld.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/sound/pci/hda/hda_eld.c b/sound/pci/hda/hda_eld.c
-index c1da422..b58b4b1 100644
---- a/sound/pci/hda/hda_eld.c
-+++ b/sound/pci/hda/hda_eld.c
-@@ -385,8 +385,8 @@ error:
- static void hdmi_print_pcm_rates(int pcm, char *buf, int buflen)
- {
- static unsigned int alsa_rates[] = {
-- 5512, 8000, 11025, 16000, 22050, 32000, 44100, 48000, 88200,
-- 96000, 176400, 192000, 384000
-+ 5512, 8000, 11025, 16000, 22050, 32000, 44100, 48000, 64000,
-+ 88200, 96000, 176400, 192000, 384000
- };
- int i, j;
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0063-usb-gadget-fix-a-section-mismatch-when-compiling-g_f.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0063-usb-gadget-fix-a-section-mismatch-when-compiling-g_f.patch
deleted file mode 100644
index e17e866..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0063-usb-gadget-fix-a-section-mismatch-when-compiling-g_f.patch
+++ /dev/null
@@ -1,190 +0,0 @@
-From 7086d25802a86ade70baa0edfa830e10ad7cd434 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Lothar=20Wa=C3=9Fmann?= <LW at KARO-electronics.de>
-Date: Sun, 11 Mar 2012 15:08:46 +0100
-Subject: [PATCH 063/147] usb gadget: fix a section mismatch when compiling
- g_ffs with CONFIG_USB_FUNCTIONFS_ETH
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit 8d0698428822ce63f7269e7fe81fc4580807b9ac upstream.
-
- commit 28824b18ac4705e876a282a15ea0de8fc957551f:
- |Author: Michal Nazarewicz <m.nazarewicz at samsung.com>
- |Date: Wed May 5 12:53:13 2010 +0200
- |
- | USB: gadget: __init and __exit tags removed
- |
- | __init, __initdata and __exit tags have have been removed from
- | various files to make it possible for gadgets that do not use
- | the __init/__exit tags to use those.
- obviously missed (at least) this case leading to a section mismatch in
- g_ffs.c when compiling with CONFIG_USB_FUNCTIONFS_ETH enabled.
-
-Signed-off-by: Lothar Wa??mann <LW at KARO-electronics.de>
-Acked-by: Michal Nazarewicz <mina86 at mina86.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/gadget/f_subset.c | 34 +++++++++++++++++-----------------
- 1 file changed, 17 insertions(+), 17 deletions(-)
-
-diff --git a/drivers/usb/gadget/f_subset.c b/drivers/usb/gadget/f_subset.c
-index 85bd9bd..160ba02 100644
---- a/drivers/usb/gadget/f_subset.c
-+++ b/drivers/usb/gadget/f_subset.c
-@@ -74,7 +74,7 @@ static inline struct f_gether *func_to_geth(struct usb_function *f)
-
- /* interface descriptor: */
-
--static struct usb_interface_descriptor subset_data_intf __initdata = {
-+static struct usb_interface_descriptor subset_data_intf = {
- .bLength = sizeof subset_data_intf,
- .bDescriptorType = USB_DT_INTERFACE,
-
-@@ -87,7 +87,7 @@ static struct usb_interface_descriptor subset_data_intf __initdata = {
- /* .iInterface = DYNAMIC */
- };
-
--static struct usb_cdc_header_desc mdlm_header_desc __initdata = {
-+static struct usb_cdc_header_desc mdlm_header_desc = {
- .bLength = sizeof mdlm_header_desc,
- .bDescriptorType = USB_DT_CS_INTERFACE,
- .bDescriptorSubType = USB_CDC_HEADER_TYPE,
-@@ -95,7 +95,7 @@ static struct usb_cdc_header_desc mdlm_header_desc __initdata = {
- .bcdCDC = cpu_to_le16(0x0110),
- };
-
--static struct usb_cdc_mdlm_desc mdlm_desc __initdata = {
-+static struct usb_cdc_mdlm_desc mdlm_desc = {
- .bLength = sizeof mdlm_desc,
- .bDescriptorType = USB_DT_CS_INTERFACE,
- .bDescriptorSubType = USB_CDC_MDLM_TYPE,
-@@ -111,7 +111,7 @@ static struct usb_cdc_mdlm_desc mdlm_desc __initdata = {
- * can't really use its struct. All we do here is say that we're using
- * the submode of "SAFE" which directly matches the CDC Subset.
- */
--static u8 mdlm_detail_desc[] __initdata = {
-+static u8 mdlm_detail_desc[] = {
- 6,
- USB_DT_CS_INTERFACE,
- USB_CDC_MDLM_DETAIL_TYPE,
-@@ -121,7 +121,7 @@ static u8 mdlm_detail_desc[] __initdata = {
- 0, /* network data capabilities ("raw" encapsulation) */
- };
-
--static struct usb_cdc_ether_desc ether_desc __initdata = {
-+static struct usb_cdc_ether_desc ether_desc = {
- .bLength = sizeof ether_desc,
- .bDescriptorType = USB_DT_CS_INTERFACE,
- .bDescriptorSubType = USB_CDC_ETHERNET_TYPE,
-@@ -136,7 +136,7 @@ static struct usb_cdc_ether_desc ether_desc __initdata = {
-
- /* full speed support: */
-
--static struct usb_endpoint_descriptor fs_subset_in_desc __initdata = {
-+static struct usb_endpoint_descriptor fs_subset_in_desc = {
- .bLength = USB_DT_ENDPOINT_SIZE,
- .bDescriptorType = USB_DT_ENDPOINT,
-
-@@ -144,7 +144,7 @@ static struct usb_endpoint_descriptor fs_subset_in_desc __initdata = {
- .bmAttributes = USB_ENDPOINT_XFER_BULK,
- };
-
--static struct usb_endpoint_descriptor fs_subset_out_desc __initdata = {
-+static struct usb_endpoint_descriptor fs_subset_out_desc = {
- .bLength = USB_DT_ENDPOINT_SIZE,
- .bDescriptorType = USB_DT_ENDPOINT,
-
-@@ -152,7 +152,7 @@ static struct usb_endpoint_descriptor fs_subset_out_desc __initdata = {
- .bmAttributes = USB_ENDPOINT_XFER_BULK,
- };
-
--static struct usb_descriptor_header *fs_eth_function[] __initdata = {
-+static struct usb_descriptor_header *fs_eth_function[] = {
- (struct usb_descriptor_header *) &subset_data_intf,
- (struct usb_descriptor_header *) &mdlm_header_desc,
- (struct usb_descriptor_header *) &mdlm_desc,
-@@ -165,7 +165,7 @@ static struct usb_descriptor_header *fs_eth_function[] __initdata = {
-
- /* high speed support: */
-
--static struct usb_endpoint_descriptor hs_subset_in_desc __initdata = {
-+static struct usb_endpoint_descriptor hs_subset_in_desc = {
- .bLength = USB_DT_ENDPOINT_SIZE,
- .bDescriptorType = USB_DT_ENDPOINT,
-
-@@ -173,7 +173,7 @@ static struct usb_endpoint_descriptor hs_subset_in_desc __initdata = {
- .wMaxPacketSize = cpu_to_le16(512),
- };
-
--static struct usb_endpoint_descriptor hs_subset_out_desc __initdata = {
-+static struct usb_endpoint_descriptor hs_subset_out_desc = {
- .bLength = USB_DT_ENDPOINT_SIZE,
- .bDescriptorType = USB_DT_ENDPOINT,
-
-@@ -181,7 +181,7 @@ static struct usb_endpoint_descriptor hs_subset_out_desc __initdata = {
- .wMaxPacketSize = cpu_to_le16(512),
- };
-
--static struct usb_descriptor_header *hs_eth_function[] __initdata = {
-+static struct usb_descriptor_header *hs_eth_function[] = {
- (struct usb_descriptor_header *) &subset_data_intf,
- (struct usb_descriptor_header *) &mdlm_header_desc,
- (struct usb_descriptor_header *) &mdlm_desc,
-@@ -194,7 +194,7 @@ static struct usb_descriptor_header *hs_eth_function[] __initdata = {
-
- /* super speed support: */
-
--static struct usb_endpoint_descriptor ss_subset_in_desc __initdata = {
-+static struct usb_endpoint_descriptor ss_subset_in_desc = {
- .bLength = USB_DT_ENDPOINT_SIZE,
- .bDescriptorType = USB_DT_ENDPOINT,
-
-@@ -202,7 +202,7 @@ static struct usb_endpoint_descriptor ss_subset_in_desc __initdata = {
- .wMaxPacketSize = cpu_to_le16(1024),
- };
-
--static struct usb_endpoint_descriptor ss_subset_out_desc __initdata = {
-+static struct usb_endpoint_descriptor ss_subset_out_desc = {
- .bLength = USB_DT_ENDPOINT_SIZE,
- .bDescriptorType = USB_DT_ENDPOINT,
-
-@@ -210,7 +210,7 @@ static struct usb_endpoint_descriptor ss_subset_out_desc __initdata = {
- .wMaxPacketSize = cpu_to_le16(1024),
- };
-
--static struct usb_ss_ep_comp_descriptor ss_subset_bulk_comp_desc __initdata = {
-+static struct usb_ss_ep_comp_descriptor ss_subset_bulk_comp_desc = {
- .bLength = sizeof ss_subset_bulk_comp_desc,
- .bDescriptorType = USB_DT_SS_ENDPOINT_COMP,
-
-@@ -219,7 +219,7 @@ static struct usb_ss_ep_comp_descriptor ss_subset_bulk_comp_desc __initdata = {
- /* .bmAttributes = 0, */
- };
-
--static struct usb_descriptor_header *ss_eth_function[] __initdata = {
-+static struct usb_descriptor_header *ss_eth_function[] = {
- (struct usb_descriptor_header *) &subset_data_intf,
- (struct usb_descriptor_header *) &mdlm_header_desc,
- (struct usb_descriptor_header *) &mdlm_desc,
-@@ -290,7 +290,7 @@ static void geth_disable(struct usb_function *f)
-
- /* serial function driver setup/binding */
-
--static int __init
-+static int
- geth_bind(struct usb_configuration *c, struct usb_function *f)
- {
- struct usb_composite_dev *cdev = c->cdev;
-@@ -405,7 +405,7 @@ geth_unbind(struct usb_configuration *c, struct usb_function *f)
- * Caller must have called @gether_setup(). Caller is also responsible
- * for calling @gether_cleanup() before module unload.
- */
--int __init geth_bind_config(struct usb_configuration *c, u8 ethaddr[ETH_ALEN])
-+int geth_bind_config(struct usb_configuration *c, u8 ethaddr[ETH_ALEN])
- {
- struct f_gether *geth;
- int status;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0064-udlfb-remove-sysfs-framebuffer-device-with-USB-.disc.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0064-udlfb-remove-sysfs-framebuffer-device-with-USB-.disc.patch
deleted file mode 100644
index 42684c7..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0064-udlfb-remove-sysfs-framebuffer-device-with-USB-.disc.patch
+++ /dev/null
@@ -1,120 +0,0 @@
-From 65fc28a302c7d7220dbe8609899724edb9687162 Mon Sep 17 00:00:00 2001
-From: Kay Sievers <kay.sievers at vrfy.org>
-Date: Sat, 28 Jan 2012 19:57:46 +0000
-Subject: [PATCH 064/147] udlfb: remove sysfs framebuffer device with USB
- .disconnect()
-
-commit ce880cb860f36694d2cdebfac9e6ae18176fe4c4 upstream.
-
-The USB graphics card driver delays the unregistering of the framebuffer
-device to a workqueue, which breaks the userspace visible remove uevent
-sequence. Recent userspace tools started to support USB graphics card
-hotplug out-of-the-box and rely on proper events sent by the kernel.
-
-The framebuffer device is a direct child of the USB interface which is
-removed immediately after the USB .disconnect() callback. But the fb device
-in /sys stays around until its final cleanup, at a time where all the parent
-devices have been removed already.
-
-To work around that, we remove the sysfs fb device directly in the USB
-.disconnect() callback and leave only the cleanup of the internal fb
-data to the delayed work.
-
-Before:
- add /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2 (usb)
- add /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2:1.0 (usb)
- add /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2:1.0/graphics/fb0 (graphics)
- remove /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2:1.0 (usb)
- remove /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2 (usb)
- remove /2-1.2:1.0/graphics/fb0 (graphics)
-
-After:
- add /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2 (usb)
- add /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2:1.0 (usb)
- add /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2:1.0/graphics/fb1 (graphics)
- remove /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2:1.0/graphics/fb1 (graphics)
- remove /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2:1.0 (usb)
- remove /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2 (usb)
-
-Tested-by: Bernie Thompson <bernie at plugable.com>
-Acked-by: Bernie Thompson <bernie at plugable.com>
-Signed-off-by: Kay Sievers <kay.sievers at vrfy.org>
-Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat at gmx.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/video/fbmem.c | 18 +++++++++++++++++-
- drivers/video/udlfb.c | 2 +-
- include/linux/fb.h | 1 +
- 3 files changed, 19 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/video/fbmem.c b/drivers/video/fbmem.c
-index ad93629..7a41220 100644
---- a/drivers/video/fbmem.c
-+++ b/drivers/video/fbmem.c
-@@ -1651,6 +1651,7 @@ static int do_unregister_framebuffer(struct fb_info *fb_info)
- if (ret)
- return -EINVAL;
-
-+ unlink_framebuffer(fb_info);
- if (fb_info->pixmap.addr &&
- (fb_info->pixmap.flags & FB_PIXMAP_DEFAULT))
- kfree(fb_info->pixmap.addr);
-@@ -1658,7 +1659,6 @@ static int do_unregister_framebuffer(struct fb_info *fb_info)
- registered_fb[i] = NULL;
- num_registered_fb--;
- fb_cleanup_device(fb_info);
-- device_destroy(fb_class, MKDEV(FB_MAJOR, i));
- event.info = fb_info;
- fb_notifier_call_chain(FB_EVENT_FB_UNREGISTERED, &event);
-
-@@ -1667,6 +1667,22 @@ static int do_unregister_framebuffer(struct fb_info *fb_info)
- return 0;
- }
-
-+int unlink_framebuffer(struct fb_info *fb_info)
-+{
-+ int i;
-+
-+ i = fb_info->node;
-+ if (i < 0 || i >= FB_MAX || registered_fb[i] != fb_info)
-+ return -EINVAL;
-+
-+ if (fb_info->dev) {
-+ device_destroy(fb_class, MKDEV(FB_MAJOR, i));
-+ fb_info->dev = NULL;
-+ }
-+ return 0;
-+}
-+EXPORT_SYMBOL(unlink_framebuffer);
-+
- void remove_conflicting_framebuffers(struct apertures_struct *a,
- const char *name, bool primary)
- {
-diff --git a/drivers/video/udlfb.c b/drivers/video/udlfb.c
-index 3473e75..41746bb 100644
---- a/drivers/video/udlfb.c
-+++ b/drivers/video/udlfb.c
-@@ -1739,7 +1739,7 @@ static void dlfb_usb_disconnect(struct usb_interface *interface)
- for (i = 0; i < ARRAY_SIZE(fb_device_attrs); i++)
- device_remove_file(info->dev, &fb_device_attrs[i]);
- device_remove_bin_file(info->dev, &edid_attr);
--
-+ unlink_framebuffer(info);
- usb_set_intfdata(interface, NULL);
-
- /* if clients still have us open, will be freed on last close */
-diff --git a/include/linux/fb.h b/include/linux/fb.h
-index 1d6836c..73845ce 100644
---- a/include/linux/fb.h
-+++ b/include/linux/fb.h
-@@ -997,6 +997,7 @@ extern ssize_t fb_sys_write(struct fb_info *info, const char __user *buf,
- /* drivers/video/fbmem.c */
- extern int register_framebuffer(struct fb_info *fb_info);
- extern int unregister_framebuffer(struct fb_info *fb_info);
-+extern int unlink_framebuffer(struct fb_info *fb_info);
- extern void remove_conflicting_framebuffers(struct apertures_struct *a,
- const char *name, bool primary);
- extern int fb_prepare_logo(struct fb_info *fb_info, int rotate);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0065-tcm_fc-Fix-fc_exch-memory-leak-in-ft_send_resp_statu.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0065-tcm_fc-Fix-fc_exch-memory-leak-in-ft_send_resp_statu.patch
deleted file mode 100644
index e4311b4..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0065-tcm_fc-Fix-fc_exch-memory-leak-in-ft_send_resp_statu.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From a38ce1660f9b3f6abec9206118adc0a33bda9730 Mon Sep 17 00:00:00 2001
-From: Nicholas Bellinger <nab at linux-iscsi.org>
-Date: Fri, 9 Mar 2012 23:45:38 -0800
-Subject: [PATCH 065/147] tcm_fc: Fix fc_exch memory leak in
- ft_send_resp_status
-
-commit 031ed4d565b31880a4136bb7366bc89f5b1dba7d upstream.
-
-This patch fixes a bug in tcm_fc where fc_exch memory from fc_exch_mgr->ep_pool
-is currently being leaked by ft_send_resp_status() usage. Following current
-code in ft_queue_status() response path, using lport->tt.seq_send() needs to be
-followed by a lport->tt.exch_done() in order to release fc_exch memory back into
-libfc_em kmem_cache.
-
-ft_send_resp_status() code is currently used in pre submit se_cmd ft_send_work()
-error exceptions, TM request setup exceptions, and main TM response callback
-path in ft_queue_tm_resp(). This bugfix addresses the leak in these cases.
-
-Cc: Mark D Rustad <mark.d.rustad at intel.com>
-Cc: Kiran Patil <kiran.patil at intel.com>
-Cc: Robert Love <robert.w.love at intel.com>
-Cc: Andy Grover <agrover at redhat.com>
-Signed-off-by: Nicholas Bellinger <nab at linux-iscsi.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/target/tcm_fc/tfc_cmd.c | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/target/tcm_fc/tfc_cmd.c b/drivers/target/tcm_fc/tfc_cmd.c
-index 71fc9ce..754b669 100644
---- a/drivers/target/tcm_fc/tfc_cmd.c
-+++ b/drivers/target/tcm_fc/tfc_cmd.c
-@@ -329,10 +329,12 @@ static void ft_send_resp_status(struct fc_lport *lport,
-
- fc_fill_reply_hdr(fp, rx_fp, FC_RCTL_DD_CMD_STATUS, 0);
- sp = fr_seq(fp);
-- if (sp)
-+ if (sp) {
- lport->tt.seq_send(lport, sp, fp);
-- else
-+ lport->tt.exch_done(sp);
-+ } else {
- lport->tt.frame_send(lport, fp);
-+ }
- }
-
- /*
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0066-md-bitmap-ensure-to-load-bitmap-when-creating-via-sy.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0066-md-bitmap-ensure-to-load-bitmap-when-creating-via-sy.patch
deleted file mode 100644
index 03c666b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0066-md-bitmap-ensure-to-load-bitmap-when-creating-via-sy.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 850bfe24a75251acf10ad9dbacd4bc750005fd1b Mon Sep 17 00:00:00 2001
-From: NeilBrown <neilb at suse.de>
-Date: Mon, 19 Mar 2012 12:46:37 +1100
-Subject: [PATCH 066/147] md/bitmap: ensure to load bitmap when creating via
- sysfs.
-
-commit 4474ca42e2577563a919fd3ed782e2ec55bf11a2 upstream.
-
-When commit 69e51b449d383e (md/bitmap: separate out loading a bitmap...)
-created bitmap_load, it missed calling it after bitmap_create when a
-bitmap is created through the sysfs interface.
-So if a bitmap is added this way, we don't allocate memory properly
-and can crash.
-
-This is suitable for any -stable release since 2.6.35.
-Signed-off-by: NeilBrown <neilb at suse.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/md/bitmap.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/drivers/md/bitmap.c b/drivers/md/bitmap.c
-index 6d03774..2a8722b 100644
---- a/drivers/md/bitmap.c
-+++ b/drivers/md/bitmap.c
-@@ -1904,6 +1904,8 @@ location_store(struct mddev *mddev, const char *buf, size_t len)
- if (mddev->pers) {
- mddev->pers->quiesce(mddev, 1);
- rv = bitmap_create(mddev);
-+ if (!rv)
-+ rv = bitmap_load(mddev);
- if (rv) {
- bitmap_destroy(mddev);
- mddev->bitmap_info.offset = 0;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0067-md-don-t-set-md-arrays-to-readonly-on-shutdown.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0067-md-don-t-set-md-arrays-to-readonly-on-shutdown.patch
deleted file mode 100644
index 93145a1..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0067-md-don-t-set-md-arrays-to-readonly-on-shutdown.patch
+++ /dev/null
@@ -1,82 +0,0 @@
-From c52810052a2cbfeb2b8768081f8a22240c0d0abe Mon Sep 17 00:00:00 2001
-From: NeilBrown <neilb at suse.de>
-Date: Mon, 19 Mar 2012 12:46:37 +1100
-Subject: [PATCH 067/147] md: don't set md arrays to readonly on shutdown.
-
-commit c744a65c1e2d59acc54333ce80a5b0702a98010b upstream.
-
-It seems that with recent kernel, writeback can still be happening
-while shutdown is happening, and consequently data can be written
-after the md reboot notifier switches all arrays to read-only.
-This causes a BUG.
-
-So don't switch them to read-only - just mark them clean and
-set 'safemode' to '2' which mean that immediately after any
-write the array will be switch back to 'clean'.
-
-This could result in the shutdown happening when array is marked
-dirty, thus forcing a resync on reboot. However if you reboot
-without performing a "sync" first, you get to keep both halves.
-
-This is suitable for any stable kernel (though there might be some
-conflicts with obvious fixes in earlier kernels).
-
-Signed-off-by: NeilBrown <neilb at suse.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/md/md.c | 37 +++++++++++++++----------------------
- 1 file changed, 15 insertions(+), 22 deletions(-)
-
-diff --git a/drivers/md/md.c b/drivers/md/md.c
-index f47f1f8..65d552a 100644
---- a/drivers/md/md.c
-+++ b/drivers/md/md.c
-@@ -8097,30 +8097,23 @@ static int md_notify_reboot(struct notifier_block *this,
- struct mddev *mddev;
- int need_delay = 0;
-
-- if ((code == SYS_DOWN) || (code == SYS_HALT) || (code == SYS_POWER_OFF)) {
--
-- printk(KERN_INFO "md: stopping all md devices.\n");
--
-- for_each_mddev(mddev, tmp) {
-- if (mddev_trylock(mddev)) {
-- /* Force a switch to readonly even array
-- * appears to still be in use. Hence
-- * the '100'.
-- */
-- md_set_readonly(mddev, 100);
-- mddev_unlock(mddev);
-- }
-- need_delay = 1;
-+ for_each_mddev(mddev, tmp) {
-+ if (mddev_trylock(mddev)) {
-+ __md_stop_writes(mddev);
-+ mddev->safemode = 2;
-+ mddev_unlock(mddev);
- }
-- /*
-- * certain more exotic SCSI devices are known to be
-- * volatile wrt too early system reboots. While the
-- * right place to handle this issue is the given
-- * driver, we do want to have a safe RAID driver ...
-- */
-- if (need_delay)
-- mdelay(1000*1);
-+ need_delay = 1;
- }
-+ /*
-+ * certain more exotic SCSI devices are known to be
-+ * volatile wrt too early system reboots. While the
-+ * right place to handle this issue is the given
-+ * driver, we do want to have a safe RAID driver ...
-+ */
-+ if (need_delay)
-+ mdelay(1000*1);
-+
- return NOTIFY_DONE;
- }
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0068-md-raid1-raid10-avoid-deadlock-during-resync-recover.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0068-md-raid1-raid10-avoid-deadlock-during-resync-recover.patch
deleted file mode 100644
index 0fe819c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0068-md-raid1-raid10-avoid-deadlock-during-resync-recover.patch
+++ /dev/null
@@ -1,97 +0,0 @@
-From 250082bf56c6157c888f21df27d73475cb6f0065 Mon Sep 17 00:00:00 2001
-From: NeilBrown <neilb at suse.de>
-Date: Mon, 19 Mar 2012 12:46:38 +1100
-Subject: [PATCH 068/147] md/raid1,raid10: avoid deadlock during
- resync/recovery.
-
-commit d6b42dcb995e6acd7cc276774e751ffc9f0ef4bf upstream.
-
-If RAID1 or RAID10 is used under LVM or some other stacking
-block device, it is possible to enter a deadlock during
-resync or recovery.
-This can happen if the upper level block device creates
-two requests to the RAID1 or RAID10. The first request gets
-processed, blocks recovery and queue requests for underlying
-requests in current->bio_list. A resync request then starts
-which will wait for those requests and block new IO.
-
-But then the second request to the RAID1/10 will be attempted
-and it cannot progress until the resync request completes,
-which cannot progress until the underlying device requests complete,
-which are on a queue behind that second request.
-
-So allow that second request to proceed even though there is
-a resync request about to start.
-
-This is suitable for any -stable kernel.
-
-Reported-by: Ray Morris <support at bettercgi.com>
-Tested-by: Ray Morris <support at bettercgi.com>
-Signed-off-by: NeilBrown <neilb at suse.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/md/raid1.c | 17 +++++++++++++++--
- drivers/md/raid10.c | 17 +++++++++++++++--
- 2 files changed, 30 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c
-index 7d9e071..7af60ec 100644
---- a/drivers/md/raid1.c
-+++ b/drivers/md/raid1.c
-@@ -731,9 +731,22 @@ static void wait_barrier(struct r1conf *conf)
- spin_lock_irq(&conf->resync_lock);
- if (conf->barrier) {
- conf->nr_waiting++;
-- wait_event_lock_irq(conf->wait_barrier, !conf->barrier,
-+ /* Wait for the barrier to drop.
-+ * However if there are already pending
-+ * requests (preventing the barrier from
-+ * rising completely), and the
-+ * pre-process bio queue isn't empty,
-+ * then don't wait, as we need to empty
-+ * that queue to get the nr_pending
-+ * count down.
-+ */
-+ wait_event_lock_irq(conf->wait_barrier,
-+ !conf->barrier ||
-+ (conf->nr_pending &&
-+ current->bio_list &&
-+ !bio_list_empty(current->bio_list)),
- conf->resync_lock,
-- );
-+ );
- conf->nr_waiting--;
- }
- conf->nr_pending++;
-diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c
-index 685ddf3..b219449 100644
---- a/drivers/md/raid10.c
-+++ b/drivers/md/raid10.c
-@@ -790,9 +790,22 @@ static void wait_barrier(struct r10conf *conf)
- spin_lock_irq(&conf->resync_lock);
- if (conf->barrier) {
- conf->nr_waiting++;
-- wait_event_lock_irq(conf->wait_barrier, !conf->barrier,
-+ /* Wait for the barrier to drop.
-+ * However if there are already pending
-+ * requests (preventing the barrier from
-+ * rising completely), and the
-+ * pre-process bio queue isn't empty,
-+ * then don't wait, as we need to empty
-+ * that queue to get the nr_pending
-+ * count down.
-+ */
-+ wait_event_lock_irq(conf->wait_barrier,
-+ !conf->barrier ||
-+ (conf->nr_pending &&
-+ current->bio_list &&
-+ !bio_list_empty(current->bio_list)),
- conf->resync_lock,
-- );
-+ );
- conf->nr_waiting--;
- }
- conf->nr_pending++;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0069-md-fix-clearing-of-the-changed-flags-for-the-bad-blo.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0069-md-fix-clearing-of-the-changed-flags-for-the-bad-blo.patch
deleted file mode 100644
index 9dda708..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0069-md-fix-clearing-of-the-changed-flags-for-the-bad-blo.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From c1566b5f4f2d8cbc8badc75b774fa79d6c03477b Mon Sep 17 00:00:00 2001
-From: NeilBrown <neilb at suse.de>
-Date: Mon, 19 Mar 2012 12:46:41 +1100
-Subject: [PATCH 069/147] md: fix clearing of the 'changed' flags for the bad
- blocks list.
-
-commit d0962936bff659d20522555b517582a2715fd23f upstream.
-
-In super_1_sync (the first hunk) we need to clear 'changed' before
-checking read_seqretry(), otherwise we might race with other code
-adding a bad block and so won't retry later.
-
-In md_update_sb (the second hunk), in the case where there is no
-metadata (neither persistent nor external), we treat any bad blocks as
-an error. However we need to clear the 'changed' flag before calling
-md_ack_all_badblocks, else it won't do anything.
-
-This patch is suitable for -stable release 3.0 and later.
-
-Signed-off-by: NeilBrown <neilb at suse.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/md/md.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/md/md.c b/drivers/md/md.c
-index 65d552a..6f37aa4 100644
---- a/drivers/md/md.c
-+++ b/drivers/md/md.c
-@@ -1801,13 +1801,13 @@ retry:
- | BB_LEN(internal_bb));
- *bbp++ = cpu_to_le64(store_bb);
- }
-+ bb->changed = 0;
- if (read_seqretry(&bb->lock, seq))
- goto retry;
-
- bb->sector = (rdev->sb_start +
- (int)le32_to_cpu(sb->bblog_offset));
- bb->size = le16_to_cpu(sb->bblog_size);
-- bb->changed = 0;
- }
- }
-
-@@ -2362,6 +2362,7 @@ repeat:
- clear_bit(MD_CHANGE_PENDING, &mddev->flags);
- list_for_each_entry(rdev, &mddev->disks, same_set) {
- if (rdev->badblocks.changed) {
-+ rdev->badblocks.changed = 0;
- md_ack_all_badblocks(&rdev->badblocks);
- md_error(mddev, rdev);
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0070-drm-i915-Only-clear-the-GPU-domains-upon-a-successfu.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0070-drm-i915-Only-clear-the-GPU-domains-upon-a-successfu.patch
deleted file mode 100644
index 197506c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0070-drm-i915-Only-clear-the-GPU-domains-upon-a-successfu.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-From bee686c633c4875d2910e0559b7ce4bba5da1911 Mon Sep 17 00:00:00 2001
-From: Chris Wilson <chris at chris-wilson.co.uk>
-Date: Wed, 14 Dec 2011 13:57:23 +0100
-Subject: [PATCH 070/147] drm/i915: Only clear the GPU domains upon a
- successful finish
-
-commit c501ae7f332cdaf42e31af30b72b4b66cbbb1604 upstream.
-
-By clearing the GPU read domains before waiting upon the buffer, we run
-the risk of the wait being interrupted and the domains prematurely
-cleared. The next time we attempt to wait upon the buffer (after
-userspace handles the signal), we believe that the buffer is idle and so
-skip the wait.
-
-There are a number of bugs across all generations which show signs of an
-overly haste reuse of active buffers.
-
-Such as:
-
- https://bugs.freedesktop.org/show_bug.cgi?id=29046
- https://bugs.freedesktop.org/show_bug.cgi?id=35863
- https://bugs.freedesktop.org/show_bug.cgi?id=38952
- https://bugs.freedesktop.org/show_bug.cgi?id=40282
- https://bugs.freedesktop.org/show_bug.cgi?id=41098
- https://bugs.freedesktop.org/show_bug.cgi?id=41102
- https://bugs.freedesktop.org/show_bug.cgi?id=41284
- https://bugs.freedesktop.org/show_bug.cgi?id=42141
-
-A couple of those pre-date i915_gem_object_finish_gpu(), so may be
-unrelated (such as a wild write from a userspace command buffer), but
-this does look like a convincing cause for most of those bugs.
-
-Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
-Reviewed-by: Daniel Vetter <daniel.vetter at ffwll.ch>
-Reviewed-by: Eugeni Dodonov <eugeni.dodonov at intel.com>
-Signed-off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/gpu/drm/i915/i915_gem.c | 7 +++++--
- 1 file changed, 5 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
-index 8359dc7..3e7c478 100644
---- a/drivers/gpu/drm/i915/i915_gem.c
-+++ b/drivers/gpu/drm/i915/i915_gem.c
-@@ -3084,10 +3084,13 @@ i915_gem_object_finish_gpu(struct drm_i915_gem_object *obj)
- return ret;
- }
-
-+ ret = i915_gem_object_wait_rendering(obj);
-+ if (ret)
-+ return ret;
-+
- /* Ensure that we invalidate the GPU's caches and TLBs. */
- obj->base.read_domains &= ~I915_GEM_GPU_DOMAINS;
--
-- return i915_gem_object_wait_rendering(obj);
-+ return 0;
- }
-
- /**
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0071-drm-radeon-Restrict-offset-for-legacy-hardware-curso.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0071-drm-radeon-Restrict-offset-for-legacy-hardware-curso.patch
deleted file mode 100644
index b3701c8..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0071-drm-radeon-Restrict-offset-for-legacy-hardware-curso.patch
+++ /dev/null
@@ -1,131 +0,0 @@
-From 37e7d6645532f78e279da5f5257faf0ee0c0f8f3 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Michel=20D=C3=A4nzer?= <michel.daenzer at amd.com>
-Date: Wed, 14 Mar 2012 17:12:41 +0100
-Subject: [PATCH 071/147] drm/radeon: Restrict offset for legacy hardware
- cursor.
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit c4353016dac10133fa5d8535af83f0c4845a2915 upstream.
-
-The hardware only takes 27 bits for the offset, so larger offsets are
-truncated, and the hardware cursor shows random bits other than the intended
-ones.
-
-Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=46796
-
-Signed-off-by: Michel D??nzer <michel.daenzer at amd.com>
-Reviewed-by: Alex Deucher <alexander.deucher at amd.com>
-Signed-off-by: Dave Airlie <airlied at redhat.com>
----
- drivers/gpu/drm/radeon/radeon_cursor.c | 13 +++++++++++--
- drivers/gpu/drm/radeon/radeon_object.c | 18 +++++++++++++++++-
- drivers/gpu/drm/radeon/radeon_object.h | 2 ++
- 3 files changed, 30 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/gpu/drm/radeon/radeon_cursor.c b/drivers/gpu/drm/radeon/radeon_cursor.c
-index fde25c0..986d608 100644
---- a/drivers/gpu/drm/radeon/radeon_cursor.c
-+++ b/drivers/gpu/drm/radeon/radeon_cursor.c
-@@ -151,7 +151,9 @@ int radeon_crtc_cursor_set(struct drm_crtc *crtc,
- uint32_t height)
- {
- struct radeon_crtc *radeon_crtc = to_radeon_crtc(crtc);
-+ struct radeon_device *rdev = crtc->dev->dev_private;
- struct drm_gem_object *obj;
-+ struct radeon_bo *robj;
- uint64_t gpu_addr;
- int ret;
-
-@@ -173,7 +175,15 @@ int radeon_crtc_cursor_set(struct drm_crtc *crtc,
- return -ENOENT;
- }
-
-- ret = radeon_gem_object_pin(obj, RADEON_GEM_DOMAIN_VRAM, &gpu_addr);
-+ robj = gem_to_radeon_bo(obj);
-+ ret = radeon_bo_reserve(robj, false);
-+ if (unlikely(ret != 0))
-+ goto fail;
-+ /* Only 27 bit offset for legacy cursor */
-+ ret = radeon_bo_pin_restricted(robj, RADEON_GEM_DOMAIN_VRAM,
-+ ASIC_IS_AVIVO(rdev) ? 0 : 1 << 27,
-+ &gpu_addr);
-+ radeon_bo_unreserve(robj);
- if (ret)
- goto fail;
-
-@@ -181,7 +191,6 @@ int radeon_crtc_cursor_set(struct drm_crtc *crtc,
- radeon_crtc->cursor_height = height;
-
- radeon_lock_cursor(crtc, true);
-- /* XXX only 27 bit offset for legacy cursor */
- radeon_set_cursor(crtc, obj, gpu_addr);
- radeon_show_cursor(crtc);
- radeon_lock_cursor(crtc, false);
-diff --git a/drivers/gpu/drm/radeon/radeon_object.c b/drivers/gpu/drm/radeon/radeon_object.c
-index 1c85152..f3ae607 100644
---- a/drivers/gpu/drm/radeon/radeon_object.c
-+++ b/drivers/gpu/drm/radeon/radeon_object.c
-@@ -204,7 +204,8 @@ void radeon_bo_unref(struct radeon_bo **bo)
- *bo = NULL;
- }
-
--int radeon_bo_pin(struct radeon_bo *bo, u32 domain, u64 *gpu_addr)
-+int radeon_bo_pin_restricted(struct radeon_bo *bo, u32 domain, u64 max_offset,
-+ u64 *gpu_addr)
- {
- int r, i;
-
-@@ -212,6 +213,7 @@ int radeon_bo_pin(struct radeon_bo *bo, u32 domain, u64 *gpu_addr)
- bo->pin_count++;
- if (gpu_addr)
- *gpu_addr = radeon_bo_gpu_offset(bo);
-+ WARN_ON_ONCE(max_offset != 0);
- return 0;
- }
- radeon_ttm_placement_from_domain(bo, domain);
-@@ -219,6 +221,15 @@ int radeon_bo_pin(struct radeon_bo *bo, u32 domain, u64 *gpu_addr)
- /* force to pin into visible video ram */
- bo->placement.lpfn = bo->rdev->mc.visible_vram_size >> PAGE_SHIFT;
- }
-+ if (max_offset) {
-+ u64 lpfn = max_offset >> PAGE_SHIFT;
-+
-+ if (!bo->placement.lpfn)
-+ bo->placement.lpfn = bo->rdev->mc.gtt_size >> PAGE_SHIFT;
-+
-+ if (lpfn < bo->placement.lpfn)
-+ bo->placement.lpfn = lpfn;
-+ }
- for (i = 0; i < bo->placement.num_placement; i++)
- bo->placements[i] |= TTM_PL_FLAG_NO_EVICT;
- r = ttm_bo_validate(&bo->tbo, &bo->placement, false, false, false);
-@@ -232,6 +243,11 @@ int radeon_bo_pin(struct radeon_bo *bo, u32 domain, u64 *gpu_addr)
- return r;
- }
-
-+int radeon_bo_pin(struct radeon_bo *bo, u32 domain, u64 *gpu_addr)
-+{
-+ return radeon_bo_pin_restricted(bo, domain, 0, gpu_addr);
-+}
-+
- int radeon_bo_unpin(struct radeon_bo *bo)
- {
- int r, i;
-diff --git a/drivers/gpu/drm/radeon/radeon_object.h b/drivers/gpu/drm/radeon/radeon_object.h
-index b07f0f9..fb3f433 100644
---- a/drivers/gpu/drm/radeon/radeon_object.h
-+++ b/drivers/gpu/drm/radeon/radeon_object.h
-@@ -108,6 +108,8 @@ extern int radeon_bo_kmap(struct radeon_bo *bo, void **ptr);
- extern void radeon_bo_kunmap(struct radeon_bo *bo);
- extern void radeon_bo_unref(struct radeon_bo **bo);
- extern int radeon_bo_pin(struct radeon_bo *bo, u32 domain, u64 *gpu_addr);
-+extern int radeon_bo_pin_restricted(struct radeon_bo *bo, u32 domain,
-+ u64 max_offset, u64 *gpu_addr);
- extern int radeon_bo_unpin(struct radeon_bo *bo);
- extern int radeon_bo_evict_vram(struct radeon_device *rdev);
- extern void radeon_bo_force_delete(struct radeon_device *rdev);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0072-drm-radeon-kms-fix-analog-load-detection-on-DVI-I-co.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0072-drm-radeon-kms-fix-analog-load-detection-on-DVI-I-co.patch
deleted file mode 100644
index db377d3..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0072-drm-radeon-kms-fix-analog-load-detection-on-DVI-I-co.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From de31bb0d8975b5a6b55c0c0fb10fb7f84ca15c5d Mon Sep 17 00:00:00 2001
-From: Alex Deucher <alexander.deucher at amd.com>
-Date: Fri, 16 Mar 2012 12:22:09 -0400
-Subject: [PATCH 072/147] drm/radeon/kms: fix analog load detection on DVI-I
- connectors
-
-commit e00e8b5e760cbbe9067daeae5454d67c44c8d035 upstream.
-
-We digital encoders have a detect function as well (for
-DP to VGA bridges), so we make sure we choose the analog
-one here.
-
-Fixes:
-https://bugs.freedesktop.org/show_bug.cgi?id=47007
-
-Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
-Signed-off-by: Dave Airlie <airlied at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/gpu/drm/radeon/radeon_connectors.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/drivers/gpu/drm/radeon/radeon_connectors.c b/drivers/gpu/drm/radeon/radeon_connectors.c
-index e7cb3ab..f7d39ac 100644
---- a/drivers/gpu/drm/radeon/radeon_connectors.c
-+++ b/drivers/gpu/drm/radeon/radeon_connectors.c
-@@ -946,6 +946,10 @@ radeon_dvi_detect(struct drm_connector *connector, bool force)
-
- encoder = obj_to_encoder(obj);
-
-+ if (encoder->encoder_type != DRM_MODE_ENCODER_DAC ||
-+ encoder->encoder_type != DRM_MODE_ENCODER_TVDAC)
-+ continue;
-+
- encoder_funcs = encoder->helper_private;
- if (encoder_funcs->detect) {
- if (ret != connector_status_connected) {
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0073-drm-radeon-kms-add-connector-quirk-for-Fujitsu-D3003.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0073-drm-radeon-kms-add-connector-quirk-for-Fujitsu-D3003.patch
deleted file mode 100644
index a48a485..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0073-drm-radeon-kms-add-connector-quirk-for-Fujitsu-D3003.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From 5efedf1eea47c18e516e55bbfb417e447e76fc0d Mon Sep 17 00:00:00 2001
-From: Alex Deucher <alexander.deucher at amd.com>
-Date: Fri, 16 Mar 2012 12:22:10 -0400
-Subject: [PATCH 073/147] drm/radeon/kms: add connector quirk for Fujitsu
- D3003-S2 board
-
-commit 4c1b2d2da3451f5c8dd59bd7e05bd9729d2aee05 upstream.
-
-vbios lists DVI-I port as VGA and DVI-D.
-
-Fixes:
-https://bugs.freedesktop.org/show_bug.cgi?id=47007
-
-Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
-Signed-off-by: Dave Airlie <airlied at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/gpu/drm/radeon/radeon_atombios.c | 14 ++++++++++++++
- 1 file changed, 14 insertions(+)
-
-diff --git a/drivers/gpu/drm/radeon/radeon_atombios.c b/drivers/gpu/drm/radeon/radeon_atombios.c
-index 5082d17..8e1532f 100644
---- a/drivers/gpu/drm/radeon/radeon_atombios.c
-+++ b/drivers/gpu/drm/radeon/radeon_atombios.c
-@@ -442,6 +442,20 @@ static bool radeon_atom_apply_quirks(struct drm_device *dev,
- struct radeon_device *rdev = dev->dev_private;
- *i2c_bus = radeon_lookup_i2c_gpio(rdev, 0x93);
- }
-+
-+ /* Fujitsu D3003-S2 board lists DVI-I as DVI-D and VGA */
-+ if ((dev->pdev->device == 0x9802) &&
-+ (dev->pdev->subsystem_vendor == 0x1734) &&
-+ (dev->pdev->subsystem_device == 0x11bd)) {
-+ if (*connector_type == DRM_MODE_CONNECTOR_VGA) {
-+ *connector_type = DRM_MODE_CONNECTOR_DVII;
-+ *line_mux = 0x3103;
-+ } else if (*connector_type == DRM_MODE_CONNECTOR_DVID) {
-+ *connector_type = DRM_MODE_CONNECTOR_DVII;
-+ }
-+ }
-+
-+
- return true;
- }
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0074-target-Don-t-set-WBUS16-or-SYNC-bits-in-INQUIRY-resp.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0074-target-Don-t-set-WBUS16-or-SYNC-bits-in-INQUIRY-resp.patch
deleted file mode 100644
index c1eac73..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0074-target-Don-t-set-WBUS16-or-SYNC-bits-in-INQUIRY-resp.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 7f95ff0ee05801dd087ec704be16aae6383f0076 Mon Sep 17 00:00:00 2001
-From: Roland Dreier <roland at purestorage.com>
-Date: Mon, 13 Feb 2012 16:18:16 -0800
-Subject: [PATCH 074/147] target: Don't set WBUS16 or SYNC bits in INQUIRY
- response
-
-commit effc6cc8828257c32c37635e737f14fd6e19ecd7 upstream.
-
-SPC-4 says about the WBUS16 and SYNC bits:
-
- The meanings of these fields are specific to SPI-5 (see 6.4.3).
- For SCSI transport protocols other than the SCSI Parallel
- Interface, these fields are reserved.
-
-We don't have a SPI fabric module, so we should never set these bits.
-(The comment was misleading, since it only mentioned Sync but the
-actual code set WBUS16 too).
-
-Signed-off-by: Roland Dreier <roland at purestorage.com>
-Signed-off-by: Nicholas Bellinger <nab at linux-iscsi.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/target/target_core_cdb.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/target/target_core_cdb.c b/drivers/target/target_core_cdb.c
-index 8facd33..65ea65a 100644
---- a/drivers/target/target_core_cdb.c
-+++ b/drivers/target/target_core_cdb.c
-@@ -116,7 +116,7 @@ target_emulate_inquiry_std(struct se_cmd *cmd)
- goto out;
- }
-
-- buf[7] = 0x32; /* Sync=1 and CmdQue=1 */
-+ buf[7] = 0x2; /* CmdQue=1 */
-
- /*
- * Do not include vendor, product, reversion info in INQUIRY
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0075-target-fix-use-after-free-in-target_report_luns.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0075-target-fix-use-after-free-in-target_report_luns.patch
deleted file mode 100644
index af27825..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0075-target-fix-use-after-free-in-target_report_luns.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 679e28aac79ff6dc71e84679bcd97e5246697ccf Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?J=C3=B6rn=20Engel?= <joern at logfs.org>
-Date: Wed, 15 Feb 2012 16:51:32 -0500
-Subject: [PATCH 075/147] target: fix use after free in target_report_luns
-
-commit 382436f8804fe1cb20b9a2a811a10eb2d8554721 upstream.
-
-Fix possible NULL pointer dereference in target_report_luns failure path.
-
-Signed-off-by: Joern Engel <joern at logfs.org>
-Signed-off-by: Nicholas Bellinger <nab at linux-iscsi.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/target/target_core_device.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/target/target_core_device.c b/drivers/target/target_core_device.c
-index 19f8aca..097178b 100644
---- a/drivers/target/target_core_device.c
-+++ b/drivers/target/target_core_device.c
-@@ -696,12 +696,12 @@ int target_report_luns(struct se_task *se_task)
- * See SPC3 r07, page 159.
- */
- done:
-- transport_kunmap_data_sg(se_cmd);
- lun_count *= 8;
- buf[0] = ((lun_count >> 24) & 0xff);
- buf[1] = ((lun_count >> 16) & 0xff);
- buf[2] = ((lun_count >> 8) & 0xff);
- buf[3] = (lun_count & 0xff);
-+ transport_kunmap_data_sg(se_cmd);
-
- se_task->task_scsi_status = GOOD;
- transport_complete_task(se_task, 1);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0076-target-prevent-NULL-pointer-dereference-in-target_re.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0076-target-prevent-NULL-pointer-dereference-in-target_re.patch
deleted file mode 100644
index 1899a81..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0076-target-prevent-NULL-pointer-dereference-in-target_re.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 238ac5c459c0204f5134a324f95588aed557b41c Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?J=C3=B6rn=20Engel?= <joern at logfs.org>
-Date: Wed, 15 Feb 2012 16:52:11 -0500
-Subject: [PATCH 076/147] target: prevent NULL pointer dereference in
- target_report_luns
-
-commit 47f1b8803e1e358ebbf4f82bfdb98971c912a2c3 upstream.
-
-transport_kmap_data_sg can return NULL. I never saw this trigger, but
-returning -ENOMEM seems better than a crash. Also removes a pointless
-case while at it.
-
-Signed-off-by: Joern Engel <joern at logfs.org>
-Signed-off-by: Nicholas Bellinger <nab at linux-iscsi.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/target/target_core_device.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/target/target_core_device.c b/drivers/target/target_core_device.c
-index 097178b..f8773ae 100644
---- a/drivers/target/target_core_device.c
-+++ b/drivers/target/target_core_device.c
-@@ -658,7 +658,9 @@ int target_report_luns(struct se_task *se_task)
- unsigned char *buf;
- u32 cdb_offset = 0, lun_count = 0, offset = 8, i;
-
-- buf = (unsigned char *) transport_kmap_data_sg(se_cmd);
-+ buf = transport_kmap_data_sg(se_cmd);
-+ if (!buf)
-+ return -ENOMEM;
-
- /*
- * If no struct se_session pointer is present, this struct se_cmd is
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0077-target-Fix-16-bit-target-ports-for-SET-TARGET-PORT-G.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0077-target-Fix-16-bit-target-ports-for-SET-TARGET-PORT-G.patch
deleted file mode 100644
index ec49efc..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0077-target-Fix-16-bit-target-ports-for-SET-TARGET-PORT-G.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From 407e1b9350ad2124952f769ade034023a9155c71 Mon Sep 17 00:00:00 2001
-From: Roland Dreier <roland at purestorage.com>
-Date: Thu, 23 Feb 2012 17:22:12 -0800
-Subject: [PATCH 077/147] target: Fix 16-bit target ports for SET TARGET PORT
- GROUPS emulation
-
-commit 33395fb8a13731c7ef7b175dbf5a4d8a6738fe6c upstream.
-
-The old code did (MSB << 8) & 0xff, which always evaluates to 0. Just use
-get_unaligned_be16() so we don't have to worry about whether our open-coded
-version is correct or not.
-
-Signed-off-by: Roland Dreier <roland at purestorage.com>
-Signed-off-by: Nicholas Bellinger <nab at linux-iscsi.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/target/target_core_alua.c | 7 +++----
- 1 file changed, 3 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/target/target_core_alua.c b/drivers/target/target_core_alua.c
-index 1d24512..5b05744 100644
---- a/drivers/target/target_core_alua.c
-+++ b/drivers/target/target_core_alua.c
-@@ -30,6 +30,7 @@
- #include <linux/export.h>
- #include <scsi/scsi.h>
- #include <scsi/scsi_cmnd.h>
-+#include <asm/unaligned.h>
-
- #include <target/target_core_base.h>
- #include <target/target_core_device.h>
-@@ -268,8 +269,7 @@ int target_emulate_set_target_port_groups(struct se_task *task)
- * changed.
- */
- if (primary) {
-- tg_pt_id = ((ptr[2] << 8) & 0xff);
-- tg_pt_id |= (ptr[3] & 0xff);
-+ tg_pt_id = get_unaligned_be16(ptr + 2);
- /*
- * Locate the matching target port group ID from
- * the global tg_pt_gp list
-@@ -313,8 +313,7 @@ int target_emulate_set_target_port_groups(struct se_task *task)
- * the Target Port in question for the the incoming
- * SET_TARGET_PORT_GROUPS op.
- */
-- rtpi = ((ptr[2] << 8) & 0xff);
-- rtpi |= (ptr[3] & 0xff);
-+ rtpi = get_unaligned_be16(ptr + 2);
- /*
- * Locate the matching relative target port identifer
- * for the struct se_device storage object.
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0078-Bluetooth-Add-AR30XX-device-ID-on-Asus-laptops.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0078-Bluetooth-Add-AR30XX-device-ID-on-Asus-laptops.patch
deleted file mode 100644
index b0094d1..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0078-Bluetooth-Add-AR30XX-device-ID-on-Asus-laptops.patch
+++ /dev/null
@@ -1,67 +0,0 @@
-From d559faa856c1c6f84dc400b9e77af843d3b79c10 Mon Sep 17 00:00:00 2001
-From: Keng-Yu Lin <kengyu at canonical.com>
-Date: Wed, 30 Nov 2011 18:32:37 +0800
-Subject: [PATCH 078/147] Bluetooth: Add AR30XX device ID on Asus laptops
-
-commit 6b6ba88b5bb8779156b21bb957520a448c3642e2 upstream.
-
-The ID is found on Asus K54HR and K53U.
-Blacklist the AR3011-based device ID [0489:e03d]
-and add to ath3k.c for firmware loading.
-
-Below is the output of usb-devices script:
-
-Before the fiwmware loading:
-
-T: Bus=01 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#= 3 Spd=12 MxCh= 0
-D: Ver= 1.10 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs= 1
-P: Vendor=0489 ProdID=e03d Rev=00.01
-C: #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
-I: If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
-I: If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
-
-After the fiwmware loading:
-
-T: Bus=01 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#= 5 Spd=12 MxCh= 0
-D: Ver= 1.10 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs= 1
-P: Vendor=0cf3 ProdID=3005 Rev=00.01
-C: #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
-I: If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
-I: If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
-
-Signed-off-by: Keng-Yu Lin <kengyu at canonical.com>
-Signed-off-by: Gustavo F. Padovan <padovan at profusion.mobi>
-Signed-off-by: Johan Hedberg <johan.hedberg at intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/bluetooth/ath3k.c | 1 +
- drivers/bluetooth/btusb.c | 1 +
- 2 files changed, 2 insertions(+)
-
-diff --git a/drivers/bluetooth/ath3k.c b/drivers/bluetooth/ath3k.c
-index 106beb1..db811d2 100644
---- a/drivers/bluetooth/ath3k.c
-+++ b/drivers/bluetooth/ath3k.c
-@@ -64,6 +64,7 @@ static struct usb_device_id ath3k_table[] = {
- { USB_DEVICE(0x0CF3, 0x3002) },
- { USB_DEVICE(0x13d3, 0x3304) },
- { USB_DEVICE(0x0930, 0x0215) },
-+ { USB_DEVICE(0x0489, 0xE03D) },
-
- /* Atheros AR9285 Malbec with sflash firmware */
- { USB_DEVICE(0x03F0, 0x311D) },
-diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
-index eabc437..11a925c 100644
---- a/drivers/bluetooth/btusb.c
-+++ b/drivers/bluetooth/btusb.c
-@@ -119,6 +119,7 @@ static struct usb_device_id blacklist_table[] = {
- { USB_DEVICE(0x0cf3, 0x3002), .driver_info = BTUSB_IGNORE },
- { USB_DEVICE(0x13d3, 0x3304), .driver_info = BTUSB_IGNORE },
- { USB_DEVICE(0x0930, 0x0215), .driver_info = BTUSB_IGNORE },
-+ { USB_DEVICE(0x0489, 0xe03d), .driver_info = BTUSB_IGNORE },
-
- /* Atheros AR9285 Malbec with sflash firmware */
- { USB_DEVICE(0x03f0, 0x311d), .driver_info = BTUSB_IGNORE },
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0079-HID-add-extra-hotkeys-in-Asus-AIO-keyboards.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0079-HID-add-extra-hotkeys-in-Asus-AIO-keyboards.patch
deleted file mode 100644
index 47434eb..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0079-HID-add-extra-hotkeys-in-Asus-AIO-keyboards.patch
+++ /dev/null
@@ -1,71 +0,0 @@
-From 5c473125260020cedb5e4285eea74fc4528eee85 Mon Sep 17 00:00:00 2001
-From: Keng-Yu Lin <kengyu at canonical.com>
-Date: Thu, 2 Feb 2012 10:31:26 +0100
-Subject: [PATCH 079/147] HID: add extra hotkeys in Asus AIO keyboards
-
-commit 3596bb929f2abd3433c2eaa5755fad48ac207af1 upstream.
-
-The Asus All-In-One PC has a wireless keyboard with wifi toggle,
-brightness up, brightness down and display off hotkeys.
-
-This patch adds suppoort for these hotkeys.
-
-Signed-off-by: Keng-Yu Lin <kengyu at canonical.com>
-Signed-off-by: Jiri Kosina <jkosina at suse.cz>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/hid/hid-chicony.c | 5 +++++
- drivers/hid/hid-core.c | 1 +
- drivers/hid/hid-ids.h | 1 +
- 3 files changed, 7 insertions(+)
-
-diff --git a/drivers/hid/hid-chicony.c b/drivers/hid/hid-chicony.c
-index 8965ad9..4162505 100644
---- a/drivers/hid/hid-chicony.c
-+++ b/drivers/hid/hid-chicony.c
-@@ -45,6 +45,10 @@ static int ch_input_mapping(struct hid_device *hdev, struct hid_input *hi,
- case 0xff09: ch_map_key_clear(BTN_9); break;
- case 0xff0a: ch_map_key_clear(BTN_A); break;
- case 0xff0b: ch_map_key_clear(BTN_B); break;
-+ case 0x00f1: ch_map_key_clear(KEY_WLAN); break;
-+ case 0x00f2: ch_map_key_clear(KEY_BRIGHTNESSDOWN); break;
-+ case 0x00f3: ch_map_key_clear(KEY_BRIGHTNESSUP); break;
-+ case 0x00f4: ch_map_key_clear(KEY_DISPLAY_OFF); break;
- default:
- return 0;
- }
-@@ -53,6 +57,7 @@ static int ch_input_mapping(struct hid_device *hdev, struct hid_input *hi,
-
- static const struct hid_device_id ch_devices[] = {
- { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_TACTICAL_PAD) },
-+ { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_WIRELESS2) },
- { }
- };
- MODULE_DEVICE_TABLE(hid, ch_devices);
-diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
-index bb656d8..c27b402 100644
---- a/drivers/hid/hid-core.c
-+++ b/drivers/hid/hid-core.c
-@@ -1394,6 +1394,7 @@ static const struct hid_device_id hid_have_special_driver[] = {
- { HID_USB_DEVICE(USB_VENDOR_ID_CHERRY, USB_DEVICE_ID_CHERRY_CYMOTION_SOLAR) },
- { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_TACTICAL_PAD) },
- { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_WIRELESS) },
-+ { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_WIRELESS2) },
- { HID_USB_DEVICE(USB_VENDOR_ID_CHUNGHWAT, USB_DEVICE_ID_CHUNGHWAT_MULTITOUCH) },
- { HID_USB_DEVICE(USB_VENDOR_ID_CREATIVELABS, USB_DEVICE_ID_PRODIKEYS_PCMIDI) },
- { HID_USB_DEVICE(USB_VENDOR_ID_CVTOUCH, USB_DEVICE_ID_CVTOUCH_SCREEN) },
-diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
-index 3c3daec..fba3fc4 100644
---- a/drivers/hid/hid-ids.h
-+++ b/drivers/hid/hid-ids.h
-@@ -192,6 +192,7 @@
- #define USB_DEVICE_ID_CHICONY_TACTICAL_PAD 0x0418
- #define USB_DEVICE_ID_CHICONY_MULTI_TOUCH 0xb19d
- #define USB_DEVICE_ID_CHICONY_WIRELESS 0x0618
-+#define USB_DEVICE_ID_CHICONY_WIRELESS2 0x1123
-
- #define USB_VENDOR_ID_CHUNGHWAT 0x2247
- #define USB_DEVICE_ID_CHUNGHWAT_MULTITOUCH 0x0001
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0080-HID-add-more-hotkeys-in-Asus-AIO-keyboards.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0080-HID-add-more-hotkeys-in-Asus-AIO-keyboards.patch
deleted file mode 100644
index 0543141..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0080-HID-add-more-hotkeys-in-Asus-AIO-keyboards.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 236648a7e4f6330831cb031c7c970b07db3cf39f Mon Sep 17 00:00:00 2001
-From: Keng-Yu Lin <kengyu at canonical.com>
-Date: Mon, 30 Jan 2012 14:25:45 +0800
-Subject: [PATCH 080/147] HID: add more hotkeys in Asus AIO keyboards
-
-commit 6c30d5a53229aad22bb675e0bd6eb518ecaa4316 upstream.
-
-Add support for the camera key. The hotkey for
-Asus S.H.E(Super Hybrid Engine) mode is mapped to KEY_KEY_PROG1
-just for notifying the userspace.
-
-Signed-off-by: Keng-Yu Lin <kengyu at canonical.com>
-Signed-off-by: Jiri Kosina <jkosina at suse.cz>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/hid/hid-chicony.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/drivers/hid/hid-chicony.c b/drivers/hid/hid-chicony.c
-index 4162505..b99af34 100644
---- a/drivers/hid/hid-chicony.c
-+++ b/drivers/hid/hid-chicony.c
-@@ -49,6 +49,8 @@ static int ch_input_mapping(struct hid_device *hdev, struct hid_input *hi,
- case 0x00f2: ch_map_key_clear(KEY_BRIGHTNESSDOWN); break;
- case 0x00f3: ch_map_key_clear(KEY_BRIGHTNESSUP); break;
- case 0x00f4: ch_map_key_clear(KEY_DISPLAY_OFF); break;
-+ case 0x00f7: ch_map_key_clear(KEY_CAMERA); break;
-+ case 0x00f8: ch_map_key_clear(KEY_PROG1); break;
- default:
- return 0;
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0081-pata_legacy-correctly-mask-recovery-field-for-HT6560.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0081-pata_legacy-correctly-mask-recovery-field-for-HT6560.patch
deleted file mode 100644
index daf2cc7..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0081-pata_legacy-correctly-mask-recovery-field-for-HT6560.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 9d312025d223d521d0f5a46ab994323646114050 Mon Sep 17 00:00:00 2001
-From: Sergei Shtylyov <sshtylyov at ru.mvista.com>
-Date: Thu, 19 Jan 2012 19:09:56 +0300
-Subject: [PATCH 081/147] pata_legacy: correctly mask recovery field for
- HT6560B
-
-commit 9716387311c790de381214c03e7f1b72b91a8189 upstream.
-
-According to the HT6560H datasheet, the recovery timing field is 4-bit wide,
-with a value of 0 meaning 16 cycles. Correct obvious thinko in the recovery
-field mask.
-
-Signed-off-by: Sergei Shtylyov <sshtylyov at ru.mvista.com>
-Signed-off-by: Jeff Garzik <jgarzik at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/ata/pata_legacy.c | 3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
-
-diff --git a/drivers/ata/pata_legacy.c b/drivers/ata/pata_legacy.c
-index 35aca7d..4fe9d21 100644
---- a/drivers/ata/pata_legacy.c
-+++ b/drivers/ata/pata_legacy.c
-@@ -401,8 +401,7 @@ static void ht6560b_set_piomode(struct ata_port *ap, struct ata_device *adev)
- ata_timing_compute(adev, adev->pio_mode, &t, 20000, 1000);
-
- active = clamp_val(t.active, 2, 15);
-- recover = clamp_val(t.recover, 2, 16);
-- recover &= 0x15;
-+ recover = clamp_val(t.recover, 2, 16) & 0x0F;
-
- inb(0x3E6);
- inb(0x3E6);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0082-firewire-ohci-fix-too-early-completion-of-IR-multich.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0082-firewire-ohci-fix-too-early-completion-of-IR-multich.patch
deleted file mode 100644
index 0eefc06..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0082-firewire-ohci-fix-too-early-completion-of-IR-multich.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From d98908a17ece4ec33e477158112adc527c365b83 Mon Sep 17 00:00:00 2001
-From: Clemens Ladisch <clemens at ladisch.de>
-Date: Mon, 12 Mar 2012 21:45:47 +0100
-Subject: [PATCH 082/147] firewire: ohci: fix too-early completion of IR
- multichannel buffers
-
-commit 0c0efbacab8d70700d13301e0ae7975783c0cb0a upstream.
-
-handle_ir_buffer_fill() assumed that a completed descriptor would be
-indicated by a non-zero transfer_status (as in most other descriptors).
-However, this field is written by the controller as soon as (the end of)
-the first packet has been written into the buffer. As a consequence, if
-we happen to run into such a descriptor when the interrupt handler is
-executed after such a packet has completed, the descriptor would be
-taken out of the list of active descriptors as soon as the buffer had
-been partially filled, so the event for the buffer being completely
-filled would never be sent.
-
-To fix this, handle descriptors only when they have been completely
-filled, i.e., when res_count == 0. (This also matches the condition
-that is reported by the controller with an interrupt.)
-
-Signed-off-by: Clemens Ladisch <clemens at ladisch.de>
-Signed-off-by: Stefan Richter <stefanr at s5r6.in-berlin.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/firewire/ohci.c | 5 ++---
- 1 file changed, 2 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/firewire/ohci.c b/drivers/firewire/ohci.c
-index 7f5f0da..0a0225a 100644
---- a/drivers/firewire/ohci.c
-+++ b/drivers/firewire/ohci.c
-@@ -2748,7 +2748,7 @@ static int handle_ir_buffer_fill(struct context *context,
- container_of(context, struct iso_context, context);
- u32 buffer_dma;
-
-- if (!last->transfer_status)
-+ if (last->res_count != 0)
- /* Descriptor(s) not done yet, stop iteration */
- return 0;
-
-@@ -2762,8 +2762,7 @@ static int handle_ir_buffer_fill(struct context *context,
- if (le16_to_cpu(last->control) & DESCRIPTOR_IRQ_ALWAYS)
- ctx->base.callback.mc(&ctx->base,
- le32_to_cpu(last->data_address) +
-- le16_to_cpu(last->req_count) -
-- le16_to_cpu(last->res_count),
-+ le16_to_cpu(last->req_count),
- ctx->base.callback_data);
-
- return 1;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0083-KVM-x86-extend-struct-x86_emulate_ops-with-get_cpuid.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0083-KVM-x86-extend-struct-x86_emulate_ops-with-get_cpuid.patch
deleted file mode 100644
index 8e4c572..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0083-KVM-x86-extend-struct-x86_emulate_ops-with-get_cpuid.patch
+++ /dev/null
@@ -1,82 +0,0 @@
-From d76b5f6c352194eaec8afbe8397b43f1ee4130d0 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Stephan=20B=C3=A4rwolf?= <stephan.baerwolf at tu-ilmenau.de>
-Date: Thu, 12 Jan 2012 16:43:03 +0100
-Subject: [PATCH 083/147] KVM: x86: extend "struct x86_emulate_ops" with
- "get_cpuid"
-
-commit bdb42f5afebe208eae90406959383856ae2caf2b upstream.
-
-In order to be able to proceed checks on CPU-specific properties
-within the emulator, function "get_cpuid" is introduced.
-With "get_cpuid" it is possible to virtually call the guests
-"cpuid"-opcode without changing the VM's context.
-
-[mtosatti: cleanup/beautify code]
-
-Signed-off-by: Stephan Baerwolf <stephan.baerwolf at tu-ilmenau.de>
-Signed-off-by: Marcelo Tosatti <mtosatti at redhat.com>
-Signed-off-by: Stefan Bader <stefan.bader at canonical.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/x86/include/asm/kvm_emulate.h | 3 +++
- arch/x86/kvm/x86.c | 23 +++++++++++++++++++++++
- 2 files changed, 26 insertions(+)
-
-diff --git a/arch/x86/include/asm/kvm_emulate.h b/arch/x86/include/asm/kvm_emulate.h
-index a026507..a440a7f 100644
---- a/arch/x86/include/asm/kvm_emulate.h
-+++ b/arch/x86/include/asm/kvm_emulate.h
-@@ -189,6 +189,9 @@ struct x86_emulate_ops {
- int (*intercept)(struct x86_emulate_ctxt *ctxt,
- struct x86_instruction_info *info,
- enum x86_intercept_stage stage);
-+
-+ bool (*get_cpuid)(struct x86_emulate_ctxt *ctxt,
-+ u32 *eax, u32 *ebx, u32 *ecx, u32 *edx);
- };
-
- typedef u32 __attribute__((vector_size(16))) sse128_t;
-diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
-index 4c938da..e04cae1 100644
---- a/arch/x86/kvm/x86.c
-+++ b/arch/x86/kvm/x86.c
-@@ -4655,6 +4655,28 @@ static int emulator_intercept(struct x86_emulate_ctxt *ctxt,
- return kvm_x86_ops->check_intercept(emul_to_vcpu(ctxt), info, stage);
- }
-
-+static bool emulator_get_cpuid(struct x86_emulate_ctxt *ctxt,
-+ u32 *eax, u32 *ebx, u32 *ecx, u32 *edx)
-+{
-+ struct kvm_cpuid_entry2 *cpuid = NULL;
-+
-+ if (eax && ecx)
-+ cpuid = kvm_find_cpuid_entry(emul_to_vcpu(ctxt),
-+ *eax, *ecx);
-+
-+ if (cpuid) {
-+ *eax = cpuid->eax;
-+ *ecx = cpuid->ecx;
-+ if (ebx)
-+ *ebx = cpuid->ebx;
-+ if (edx)
-+ *edx = cpuid->edx;
-+ return true;
-+ }
-+
-+ return false;
-+}
-+
- static struct x86_emulate_ops emulate_ops = {
- .read_std = kvm_read_guest_virt_system,
- .write_std = kvm_write_guest_virt_system,
-@@ -4685,6 +4707,7 @@ static struct x86_emulate_ops emulate_ops = {
- .get_fpu = emulator_get_fpu,
- .put_fpu = emulator_put_fpu,
- .intercept = emulator_intercept,
-+ .get_cpuid = emulator_get_cpuid,
- };
-
- static void cache_all_regs(struct kvm_vcpu *vcpu)
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0084-KVM-x86-fix-missing-checks-in-syscall-emulation.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0084-KVM-x86-fix-missing-checks-in-syscall-emulation.patch
deleted file mode 100644
index bc72a83..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0084-KVM-x86-fix-missing-checks-in-syscall-emulation.patch
+++ /dev/null
@@ -1,148 +0,0 @@
-From 9dab57c31c4146a8d1118a8c833fb8a3e788fec6 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Stephan=20B=C3=A4rwolf?= <stephan.baerwolf at tu-ilmenau.de>
-Date: Thu, 12 Jan 2012 16:43:04 +0100
-Subject: [PATCH 084/147] KVM: x86: fix missing checks in syscall emulation
-
-commit c2226fc9e87ba3da060e47333657cd6616652b84 upstream.
-
-On hosts without this patch, 32bit guests will crash (and 64bit guests
-may behave in a wrong way) for example by simply executing following
-nasm-demo-application:
-
- [bits 32]
- global _start
- SECTION .text
- _start: syscall
-
-(I tested it with winxp and linux - both always crashed)
-
- Disassembly of section .text:
-
- 00000000 <_start>:
- 0: 0f 05 syscall
-
-The reason seems a missing "invalid opcode"-trap (int6) for the
-syscall opcode "0f05", which is not available on Intel CPUs
-within non-longmodes, as also on some AMD CPUs within legacy-mode.
-(depending on CPU vendor, MSR_EFER and cpuid)
-
-Because previous mentioned OSs may not engage corresponding
-syscall target-registers (STAR, LSTAR, CSTAR), they remain
-NULL and (non trapping) syscalls are leading to multiple
-faults and finally crashs.
-
-Depending on the architecture (AMD or Intel) pretended by
-guests, various checks according to vendor's documentation
-are implemented to overcome the current issue and behave
-like the CPUs physical counterparts.
-
-[mtosatti: cleanup/beautify code]
-
-Signed-off-by: Stephan Baerwolf <stephan.baerwolf at tu-ilmenau.de>
-Signed-off-by: Marcelo Tosatti <mtosatti at redhat.com>
-Signed-off-by: Stefan Bader <stefan.bader at canonical.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/x86/include/asm/kvm_emulate.h | 13 +++++++++
- arch/x86/kvm/emulate.c | 51 ++++++++++++++++++++++++++++++++++++
- 2 files changed, 64 insertions(+)
-
-diff --git a/arch/x86/include/asm/kvm_emulate.h b/arch/x86/include/asm/kvm_emulate.h
-index a440a7f..70ea6fd 100644
---- a/arch/x86/include/asm/kvm_emulate.h
-+++ b/arch/x86/include/asm/kvm_emulate.h
-@@ -300,6 +300,19 @@ struct x86_emulate_ctxt {
- #define X86EMUL_MODE_PROT (X86EMUL_MODE_PROT16|X86EMUL_MODE_PROT32| \
- X86EMUL_MODE_PROT64)
-
-+/* CPUID vendors */
-+#define X86EMUL_CPUID_VENDOR_AuthenticAMD_ebx 0x68747541
-+#define X86EMUL_CPUID_VENDOR_AuthenticAMD_ecx 0x444d4163
-+#define X86EMUL_CPUID_VENDOR_AuthenticAMD_edx 0x69746e65
-+
-+#define X86EMUL_CPUID_VENDOR_AMDisbetterI_ebx 0x69444d41
-+#define X86EMUL_CPUID_VENDOR_AMDisbetterI_ecx 0x21726574
-+#define X86EMUL_CPUID_VENDOR_AMDisbetterI_edx 0x74656273
-+
-+#define X86EMUL_CPUID_VENDOR_GenuineIntel_ebx 0x756e6547
-+#define X86EMUL_CPUID_VENDOR_GenuineIntel_ecx 0x6c65746e
-+#define X86EMUL_CPUID_VENDOR_GenuineIntel_edx 0x49656e69
-+
- enum x86_intercept_stage {
- X86_ICTP_NONE = 0, /* Allow zero-init to not match anything */
- X86_ICPT_PRE_EXCEPT,
-diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c
-index f1e3be18..f5302da 100644
---- a/arch/x86/kvm/emulate.c
-+++ b/arch/x86/kvm/emulate.c
-@@ -1877,6 +1877,51 @@ setup_syscalls_segments(struct x86_emulate_ctxt *ctxt,
- ss->p = 1;
- }
-
-+static bool em_syscall_is_enabled(struct x86_emulate_ctxt *ctxt)
-+{
-+ struct x86_emulate_ops *ops = ctxt->ops;
-+ u32 eax, ebx, ecx, edx;
-+
-+ /*
-+ * syscall should always be enabled in longmode - so only become
-+ * vendor specific (cpuid) if other modes are active...
-+ */
-+ if (ctxt->mode == X86EMUL_MODE_PROT64)
-+ return true;
-+
-+ eax = 0x00000000;
-+ ecx = 0x00000000;
-+ if (ops->get_cpuid(ctxt, &eax, &ebx, &ecx, &edx)) {
-+ /*
-+ * Intel ("GenuineIntel")
-+ * remark: Intel CPUs only support "syscall" in 64bit
-+ * longmode. Also an 64bit guest with a
-+ * 32bit compat-app running will #UD !! While this
-+ * behaviour can be fixed (by emulating) into AMD
-+ * response - CPUs of AMD can't behave like Intel.
-+ */
-+ if (ebx == X86EMUL_CPUID_VENDOR_GenuineIntel_ebx &&
-+ ecx == X86EMUL_CPUID_VENDOR_GenuineIntel_ecx &&
-+ edx == X86EMUL_CPUID_VENDOR_GenuineIntel_edx)
-+ return false;
-+
-+ /* AMD ("AuthenticAMD") */
-+ if (ebx == X86EMUL_CPUID_VENDOR_AuthenticAMD_ebx &&
-+ ecx == X86EMUL_CPUID_VENDOR_AuthenticAMD_ecx &&
-+ edx == X86EMUL_CPUID_VENDOR_AuthenticAMD_edx)
-+ return true;
-+
-+ /* AMD ("AMDisbetter!") */
-+ if (ebx == X86EMUL_CPUID_VENDOR_AMDisbetterI_ebx &&
-+ ecx == X86EMUL_CPUID_VENDOR_AMDisbetterI_ecx &&
-+ edx == X86EMUL_CPUID_VENDOR_AMDisbetterI_edx)
-+ return true;
-+ }
-+
-+ /* default: (not Intel, not AMD), apply Intel's stricter rules... */
-+ return false;
-+}
-+
- static int em_syscall(struct x86_emulate_ctxt *ctxt)
- {
- struct x86_emulate_ops *ops = ctxt->ops;
-@@ -1890,9 +1935,15 @@ static int em_syscall(struct x86_emulate_ctxt *ctxt)
- ctxt->mode == X86EMUL_MODE_VM86)
- return emulate_ud(ctxt);
-
-+ if (!(em_syscall_is_enabled(ctxt)))
-+ return emulate_ud(ctxt);
-+
- ops->get_msr(ctxt, MSR_EFER, &efer);
- setup_syscalls_segments(ctxt, &cs, &ss);
-
-+ if (!(efer & EFER_SCE))
-+ return emulate_ud(ctxt);
-+
- ops->get_msr(ctxt, MSR_STAR, &msr_data);
- msr_data >>= 32;
- cs_sel = (u16)(msr_data & 0xfffc);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0085-NFS-Properly-handle-the-case-where-the-delegation-is.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0085-NFS-Properly-handle-the-case-where-the-delegation-is.patch
deleted file mode 100644
index ac42054..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0085-NFS-Properly-handle-the-case-where-the-delegation-is.patch
+++ /dev/null
@@ -1,193 +0,0 @@
-From 3876d640cb4c4f09bdc26a8befea1df94fd4e71e Mon Sep 17 00:00:00 2001
-From: Trond Myklebust <Trond.Myklebust at netapp.com>
-Date: Mon, 5 Mar 2012 19:56:44 -0500
-Subject: [PATCH 085/147] NFS: Properly handle the case where the delegation
- is revoked
-
-commit a1d0b5eebc4fd6e0edb02688b35f17f67f42aea5 upstream.
-
-If we know that the delegation stateid is bad or revoked, we need to
-remove that delegation as soon as possible, and then mark all the
-stateids that relied on that delegation for recovery. We cannot use
-the delegation as part of the recovery process.
-
-Also note that NFSv4.1 uses a different error code (NFS4ERR_DELEG_REVOKED)
-to indicate that the delegation was revoked.
-
-Finally, ensure that setlk() and setattr() can both recover safely from
-a revoked delegation.
-
-Signed-off-by: Trond Myklebust <Trond.Myklebust at netapp.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/nfs/delegation.c | 11 +++++++++++
- fs/nfs/delegation.h | 1 +
- fs/nfs/nfs4_fs.h | 2 ++
- fs/nfs/nfs4proc.c | 18 ++++++++++++++++--
- fs/nfs/nfs4state.c | 29 +++++++++++++++++++++++++++--
- 5 files changed, 57 insertions(+), 4 deletions(-)
-
-diff --git a/fs/nfs/delegation.c b/fs/nfs/delegation.c
-index 7f26540..ac889af 100644
---- a/fs/nfs/delegation.c
-+++ b/fs/nfs/delegation.c
-@@ -466,6 +466,17 @@ static void nfs_delegation_run_state_manager(struct nfs_client *clp)
- nfs4_schedule_state_manager(clp);
- }
-
-+void nfs_remove_bad_delegation(struct inode *inode)
-+{
-+ struct nfs_delegation *delegation;
-+
-+ delegation = nfs_detach_delegation(NFS_I(inode), NFS_SERVER(inode));
-+ if (delegation) {
-+ nfs_inode_find_state_and_recover(inode, &delegation->stateid);
-+ nfs_free_delegation(delegation);
-+ }
-+}
-+
- /**
- * nfs_expire_all_delegation_types
- * @clp: client to process
-diff --git a/fs/nfs/delegation.h b/fs/nfs/delegation.h
-index d9322e4..691a796 100644
---- a/fs/nfs/delegation.h
-+++ b/fs/nfs/delegation.h
-@@ -45,6 +45,7 @@ void nfs_expire_unreferenced_delegations(struct nfs_client *clp);
- void nfs_handle_cb_pathdown(struct nfs_client *clp);
- int nfs_client_return_marked_delegations(struct nfs_client *clp);
- int nfs_delegations_present(struct nfs_client *clp);
-+void nfs_remove_bad_delegation(struct inode *inode);
-
- void nfs_delegation_mark_reclaim(struct nfs_client *clp);
- void nfs_delegation_reap_unclaimed(struct nfs_client *clp);
-diff --git a/fs/nfs/nfs4_fs.h b/fs/nfs/nfs4_fs.h
-index 693ae22..d6ba137f 100644
---- a/fs/nfs/nfs4_fs.h
-+++ b/fs/nfs/nfs4_fs.h
-@@ -324,6 +324,8 @@ extern void nfs4_put_open_state(struct nfs4_state *);
- extern void nfs4_close_state(struct nfs4_state *, fmode_t);
- extern void nfs4_close_sync(struct nfs4_state *, fmode_t);
- extern void nfs4_state_set_mode_locked(struct nfs4_state *, fmode_t);
-+extern void nfs_inode_find_state_and_recover(struct inode *inode,
-+ const nfs4_stateid *stateid);
- extern void nfs4_schedule_lease_recovery(struct nfs_client *);
- extern void nfs4_schedule_state_manager(struct nfs_client *);
- extern void nfs4_schedule_path_down_recovery(struct nfs_client *clp);
-diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
-index e527030..a51e1dd 100644
---- a/fs/nfs/nfs4proc.c
-+++ b/fs/nfs/nfs4proc.c
-@@ -263,8 +263,11 @@ static int nfs4_handle_exception(struct nfs_server *server, int errorcode, struc
- switch(errorcode) {
- case 0:
- return 0;
-+ case -NFS4ERR_DELEG_REVOKED:
- case -NFS4ERR_ADMIN_REVOKED:
- case -NFS4ERR_BAD_STATEID:
-+ if (state != NULL)
-+ nfs_remove_bad_delegation(state->inode);
- case -NFS4ERR_OPENMODE:
- if (state == NULL)
- break;
-@@ -1316,8 +1319,11 @@ int nfs4_open_delegation_recall(struct nfs_open_context *ctx, struct nfs4_state
- * The show must go on: exit, but mark the
- * stateid as needing recovery.
- */
-+ case -NFS4ERR_DELEG_REVOKED:
- case -NFS4ERR_ADMIN_REVOKED:
- case -NFS4ERR_BAD_STATEID:
-+ nfs_inode_find_state_and_recover(state->inode,
-+ stateid);
- nfs4_schedule_stateid_recovery(server, state);
- case -EKEYEXPIRED:
- /*
-@@ -1893,7 +1899,9 @@ static int nfs4_do_setattr(struct inode *inode, struct rpc_cred *cred,
- struct nfs4_state *state)
- {
- struct nfs_server *server = NFS_SERVER(inode);
-- struct nfs4_exception exception = { };
-+ struct nfs4_exception exception = {
-+ .state = state,
-+ };
- int err;
- do {
- err = nfs4_handle_exception(server,
-@@ -3707,8 +3715,11 @@ nfs4_async_handle_error(struct rpc_task *task, const struct nfs_server *server,
- if (task->tk_status >= 0)
- return 0;
- switch(task->tk_status) {
-+ case -NFS4ERR_DELEG_REVOKED:
- case -NFS4ERR_ADMIN_REVOKED:
- case -NFS4ERR_BAD_STATEID:
-+ if (state != NULL)
-+ nfs_remove_bad_delegation(state->inode);
- case -NFS4ERR_OPENMODE:
- if (state == NULL)
- break;
-@@ -4526,7 +4537,9 @@ out:
-
- static int nfs4_proc_setlk(struct nfs4_state *state, int cmd, struct file_lock *request)
- {
-- struct nfs4_exception exception = { };
-+ struct nfs4_exception exception = {
-+ .state = state,
-+ };
- int err;
-
- do {
-@@ -4619,6 +4632,7 @@ int nfs4_lock_delegation_recall(struct nfs4_state *state, struct file_lock *fl)
- * The show must go on: exit, but mark the
- * stateid as needing recovery.
- */
-+ case -NFS4ERR_DELEG_REVOKED:
- case -NFS4ERR_ADMIN_REVOKED:
- case -NFS4ERR_BAD_STATEID:
- case -NFS4ERR_OPENMODE:
-diff --git a/fs/nfs/nfs4state.c b/fs/nfs/nfs4state.c
-index a58eed7..0596fd6 100644
---- a/fs/nfs/nfs4state.c
-+++ b/fs/nfs/nfs4state.c
-@@ -1071,12 +1071,37 @@ void nfs4_schedule_stateid_recovery(const struct nfs_server *server, struct nfs4
- {
- struct nfs_client *clp = server->nfs_client;
-
-- if (test_and_clear_bit(NFS_DELEGATED_STATE, &state->flags))
-- nfs_async_inode_return_delegation(state->inode, &state->stateid);
- nfs4_state_mark_reclaim_nograce(clp, state);
- nfs4_schedule_state_manager(clp);
- }
-
-+void nfs_inode_find_state_and_recover(struct inode *inode,
-+ const nfs4_stateid *stateid)
-+{
-+ struct nfs_client *clp = NFS_SERVER(inode)->nfs_client;
-+ struct nfs_inode *nfsi = NFS_I(inode);
-+ struct nfs_open_context *ctx;
-+ struct nfs4_state *state;
-+ bool found = false;
-+
-+ spin_lock(&inode->i_lock);
-+ list_for_each_entry(ctx, &nfsi->open_files, list) {
-+ state = ctx->state;
-+ if (state == NULL)
-+ continue;
-+ if (!test_bit(NFS_DELEGATED_STATE, &state->flags))
-+ continue;
-+ if (memcmp(state->stateid.data, stateid->data, sizeof(state->stateid.data)) != 0)
-+ continue;
-+ nfs4_state_mark_reclaim_nograce(clp, state);
-+ found = true;
-+ }
-+ spin_unlock(&inode->i_lock);
-+ if (found)
-+ nfs4_schedule_state_manager(clp);
-+}
-+
-+
- static int nfs4_reclaim_locks(struct nfs4_state *state, const struct nfs4_state_recovery_ops *ops)
- {
- struct inode *inode = state->inode;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0086-NFSv4-Return-the-delegation-if-the-server-returns-NF.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0086-NFSv4-Return-the-delegation-if-the-server-returns-NF.patch
deleted file mode 100644
index ee59f30..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0086-NFSv4-Return-the-delegation-if-the-server-returns-NF.patch
+++ /dev/null
@@ -1,77 +0,0 @@
-From f56543c626d44b8ca33f2d37ee4758d1faab0e74 Mon Sep 17 00:00:00 2001
-From: Trond Myklebust <Trond.Myklebust at netapp.com>
-Date: Wed, 7 Mar 2012 16:39:06 -0500
-Subject: [PATCH 086/147] NFSv4: Return the delegation if the server returns
- NFS4ERR_OPENMODE
-
-commit 3114ea7a24d3264c090556a2444fc6d2c06176d4 upstream.
-
-If a setattr() fails because of an NFS4ERR_OPENMODE error, it is
-probably due to us holding a read delegation. Ensure that the
-recovery routines return that delegation in this case.
-
-Reported-by: Miklos Szeredi <miklos at szeredi.hu>
-Signed-off-by: Trond Myklebust <Trond.Myklebust at netapp.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/nfs/nfs4_fs.h | 1 +
- fs/nfs/nfs4proc.c | 13 ++++++++++++-
- 2 files changed, 13 insertions(+), 1 deletion(-)
-
-diff --git a/fs/nfs/nfs4_fs.h b/fs/nfs/nfs4_fs.h
-index d6ba137f..0983b25 100644
---- a/fs/nfs/nfs4_fs.h
-+++ b/fs/nfs/nfs4_fs.h
-@@ -191,6 +191,7 @@ struct nfs4_exception {
- long timeout;
- int retry;
- struct nfs4_state *state;
-+ struct inode *inode;
- };
-
- struct nfs4_state_recovery_ops {
-diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
-index a51e1dd..758e809 100644
---- a/fs/nfs/nfs4proc.c
-+++ b/fs/nfs/nfs4proc.c
-@@ -257,18 +257,28 @@ static int nfs4_handle_exception(struct nfs_server *server, int errorcode, struc
- {
- struct nfs_client *clp = server->nfs_client;
- struct nfs4_state *state = exception->state;
-+ struct inode *inode = exception->inode;
- int ret = errorcode;
-
- exception->retry = 0;
- switch(errorcode) {
- case 0:
- return 0;
-+ case -NFS4ERR_OPENMODE:
-+ if (nfs_have_delegation(inode, FMODE_READ)) {
-+ nfs_inode_return_delegation(inode);
-+ exception->retry = 1;
-+ return 0;
-+ }
-+ if (state == NULL)
-+ break;
-+ nfs4_schedule_stateid_recovery(server, state);
-+ goto wait_on_recovery;
- case -NFS4ERR_DELEG_REVOKED:
- case -NFS4ERR_ADMIN_REVOKED:
- case -NFS4ERR_BAD_STATEID:
- if (state != NULL)
- nfs_remove_bad_delegation(state->inode);
-- case -NFS4ERR_OPENMODE:
- if (state == NULL)
- break;
- nfs4_schedule_stateid_recovery(server, state);
-@@ -1901,6 +1911,7 @@ static int nfs4_do_setattr(struct inode *inode, struct rpc_cred *cred,
- struct nfs_server *server = NFS_SERVER(inode);
- struct nfs4_exception exception = {
- .state = state,
-+ .inode = inode,
- };
- int err;
- do {
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0087-xfs-fix-inode-lookup-race.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0087-xfs-fix-inode-lookup-race.patch
deleted file mode 100644
index 0f9e210..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0087-xfs-fix-inode-lookup-race.patch
+++ /dev/null
@@ -1,101 +0,0 @@
-From e5d6f5ef25f0e67126092de0837e7c8f2ecfbc86 Mon Sep 17 00:00:00 2001
-From: Dave Chinner <dchinner at redhat.com>
-Date: Wed, 7 Mar 2012 04:50:25 +0000
-Subject: [PATCH 087/147] xfs: fix inode lookup race
-
-commit f30d500f809eca67a21704347ab14bb35877b5ee upstream.
-
-When we get concurrent lookups of the same inode that is not in the
-per-AG inode cache, there is a race condition that triggers warnings
-in unlock_new_inode() indicating that we are initialising an inode
-that isn't in a the correct state for a new inode.
-
-When we do an inode lookup via a file handle or a bulkstat, we don't
-serialise lookups at a higher level through the dentry cache (i.e.
-pathless lookup), and so we can get concurrent lookups of the same
-inode.
-
-The race condition is between the insertion of the inode into the
-cache in the case of a cache miss and a concurrently lookup:
-
-Thread 1 Thread 2
-xfs_iget()
- xfs_iget_cache_miss()
- xfs_iread()
- lock radix tree
- radix_tree_insert()
- rcu_read_lock
- radix_tree_lookup
- lock inode flags
- XFS_INEW not set
- igrab()
- unlock inode flags
- rcu_read_unlock
- use uninitialised inode
- .....
- lock inode flags
- set XFS_INEW
- unlock inode flags
- unlock radix tree
- xfs_setup_inode()
- inode flags = I_NEW
- unlock_new_inode()
- WARNING as inode flags != I_NEW
-
-This can lead to inode corruption, inode list corruption, etc, and
-is generally a bad thing to occur.
-
-Fix this by setting XFS_INEW before inserting the inode into the
-radix tree. This will ensure any concurrent lookup will find the new
-inode with XFS_INEW set and that forces the lookup to wait until the
-XFS_INEW flag is removed before allowing the lookup to succeed.
-
-Signed-off-by: Dave Chinner <dchinner at redhat.com>
-Reviewed-by: Christoph Hellwig <hch at lst.de>
-Signed-off-by: Ben Myers <bpm at sgi.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/xfs/xfs_iget.c | 18 ++++++++++++------
- 1 file changed, 12 insertions(+), 6 deletions(-)
-
-diff --git a/fs/xfs/xfs_iget.c b/fs/xfs/xfs_iget.c
-index 0fa98b1..cfc4277 100644
---- a/fs/xfs/xfs_iget.c
-+++ b/fs/xfs/xfs_iget.c
-@@ -353,9 +353,20 @@ xfs_iget_cache_miss(
- BUG();
- }
-
-- spin_lock(&pag->pag_ici_lock);
-+ /*
-+ * These values must be set before inserting the inode into the radix
-+ * tree as the moment it is inserted a concurrent lookup (allowed by the
-+ * RCU locking mechanism) can find it and that lookup must see that this
-+ * is an inode currently under construction (i.e. that XFS_INEW is set).
-+ * The ip->i_flags_lock that protects the XFS_INEW flag forms the
-+ * memory barrier that ensures this detection works correctly at lookup
-+ * time.
-+ */
-+ ip->i_udquot = ip->i_gdquot = NULL;
-+ xfs_iflags_set(ip, XFS_INEW);
-
- /* insert the new inode */
-+ spin_lock(&pag->pag_ici_lock);
- error = radix_tree_insert(&pag->pag_ici_root, agino, ip);
- if (unlikely(error)) {
- WARN_ON(error != -EEXIST);
-@@ -363,11 +374,6 @@ xfs_iget_cache_miss(
- error = EAGAIN;
- goto out_preload_end;
- }
--
-- /* These values _must_ be set before releasing the radix tree lock! */
-- ip->i_udquot = ip->i_gdquot = NULL;
-- xfs_iflags_set(ip, XFS_INEW);
--
- spin_unlock(&pag->pag_ici_lock);
- radix_tree_preload_end();
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0088-CIFS-Respect-negotiated-MaxMpxCount.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0088-CIFS-Respect-negotiated-MaxMpxCount.patch
deleted file mode 100644
index 5f2a0dd..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0088-CIFS-Respect-negotiated-MaxMpxCount.patch
+++ /dev/null
@@ -1,212 +0,0 @@
-From 8ceb94d9185c4640cf49d48a06ddfb9ef94ec16d Mon Sep 17 00:00:00 2001
-From: Pavel Shilovsky <piastry at etersoft.ru>
-Date: Tue, 20 Mar 2012 12:55:09 +0300
-Subject: [PATCH 088/147] CIFS: Respect negotiated MaxMpxCount
-
-commit 10b9b98e41ba248a899f6175ce96ee91431b6194 upstream.
-
-Some servers sets this value less than 50 that was hardcoded and
-we lost the connection if when we exceed this limit. Fix this by
-respecting this value - not sending more than the server allows.
-
-Reviewed-by: Jeff Layton <jlayton at samba.org>
-Signed-off-by: Pavel Shilovsky <piastry at etersoft.ru>
-Signed-off-by: Steve French <sfrench at us.ibm.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/cifs/cifsfs.c | 8 ++++----
- fs/cifs/cifsglob.h | 10 +++-------
- fs/cifs/cifssmb.c | 9 +++++++--
- fs/cifs/connect.c | 11 ++++-------
- fs/cifs/dir.c | 6 ++++--
- fs/cifs/file.c | 4 ++--
- fs/cifs/transport.c | 4 ++--
- 7 files changed, 26 insertions(+), 26 deletions(-)
-
-diff --git a/fs/cifs/cifsfs.c b/fs/cifs/cifsfs.c
-index 8f1fe32..b4c2c99 100644
---- a/fs/cifs/cifsfs.c
-+++ b/fs/cifs/cifsfs.c
-@@ -76,7 +76,7 @@ MODULE_PARM_DESC(cifs_min_small, "Small network buffers in pool. Default: 30 "
- unsigned int cifs_max_pending = CIFS_MAX_REQ;
- module_param(cifs_max_pending, int, 0444);
- MODULE_PARM_DESC(cifs_max_pending, "Simultaneous requests to server. "
-- "Default: 50 Range: 2 to 256");
-+ "Default: 32767 Range: 2 to 32767.");
- unsigned short echo_retries = 5;
- module_param(echo_retries, ushort, 0644);
- MODULE_PARM_DESC(echo_retries, "Number of echo attempts before giving up and "
-@@ -1116,9 +1116,9 @@ init_cifs(void)
- if (cifs_max_pending < 2) {
- cifs_max_pending = 2;
- cFYI(1, "cifs_max_pending set to min of 2");
-- } else if (cifs_max_pending > 256) {
-- cifs_max_pending = 256;
-- cFYI(1, "cifs_max_pending set to max of 256");
-+ } else if (cifs_max_pending > CIFS_MAX_REQ) {
-+ cifs_max_pending = CIFS_MAX_REQ;
-+ cFYI(1, "cifs_max_pending set to max of %u", CIFS_MAX_REQ);
- }
-
- rc = cifs_fscache_register();
-diff --git a/fs/cifs/cifsglob.h b/fs/cifs/cifsglob.h
-index 8238aa1..c467ac8 100644
---- a/fs/cifs/cifsglob.h
-+++ b/fs/cifs/cifsglob.h
-@@ -55,14 +55,9 @@
-
- /*
- * MAX_REQ is the maximum number of requests that WE will send
-- * on one socket concurrently. It also matches the most common
-- * value of max multiplex returned by servers. We may
-- * eventually want to use the negotiated value (in case
-- * future servers can handle more) when we are more confident that
-- * we will not have problems oveloading the socket with pending
-- * write data.
-+ * on one socket concurrently.
- */
--#define CIFS_MAX_REQ 50
-+#define CIFS_MAX_REQ 32767
-
- #define RFC1001_NAME_LEN 15
- #define RFC1001_NAME_LEN_WITH_NULL (RFC1001_NAME_LEN + 1)
-@@ -263,6 +258,7 @@ struct TCP_Server_Info {
- bool session_estab; /* mark when very first sess is established */
- u16 dialect; /* dialect index that server chose */
- enum securityEnum secType;
-+ bool oplocks:1; /* enable oplocks */
- unsigned int maxReq; /* Clients should submit no more */
- /* than maxReq distinct unanswered SMBs to the server when using */
- /* multiplexed reads or writes */
-diff --git a/fs/cifs/cifssmb.c b/fs/cifs/cifssmb.c
-index 6600aa2..0e6adac 100644
---- a/fs/cifs/cifssmb.c
-+++ b/fs/cifs/cifssmb.c
-@@ -458,7 +458,10 @@ CIFSSMBNegotiate(unsigned int xid, struct cifs_ses *ses)
- goto neg_err_exit;
- }
- server->sec_mode = (__u8)le16_to_cpu(rsp->SecurityMode);
-- server->maxReq = le16_to_cpu(rsp->MaxMpxCount);
-+ server->maxReq = min_t(unsigned int,
-+ le16_to_cpu(rsp->MaxMpxCount),
-+ cifs_max_pending);
-+ server->oplocks = server->maxReq > 1 ? enable_oplocks : false;
- server->maxBuf = le16_to_cpu(rsp->MaxBufSize);
- server->max_vcs = le16_to_cpu(rsp->MaxNumberVcs);
- /* even though we do not use raw we might as well set this
-@@ -564,7 +567,9 @@ CIFSSMBNegotiate(unsigned int xid, struct cifs_ses *ses)
-
- /* one byte, so no need to convert this or EncryptionKeyLen from
- little endian */
-- server->maxReq = le16_to_cpu(pSMBr->MaxMpxCount);
-+ server->maxReq = min_t(unsigned int, le16_to_cpu(pSMBr->MaxMpxCount),
-+ cifs_max_pending);
-+ server->oplocks = server->maxReq > 1 ? enable_oplocks : false;
- /* probably no need to store and check maxvcs */
- server->maxBuf = le32_to_cpu(pSMBr->MaxBufferSize);
- server->max_rw = le32_to_cpu(pSMBr->MaxRawSize);
-diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c
-index 720edf5..a26b98f 100644
---- a/fs/cifs/connect.c
-+++ b/fs/cifs/connect.c
-@@ -625,14 +625,10 @@ static void clean_demultiplex_info(struct TCP_Server_Info *server)
- spin_unlock(&GlobalMid_Lock);
- wake_up_all(&server->response_q);
-
-- /*
-- * Check if we have blocked requests that need to free. Note that
-- * cifs_max_pending is normally 50, but can be set at module install
-- * time to as little as two.
-- */
-+ /* Check if we have blocked requests that need to free. */
- spin_lock(&GlobalMid_Lock);
-- if (atomic_read(&server->inFlight) >= cifs_max_pending)
-- atomic_set(&server->inFlight, cifs_max_pending - 1);
-+ if (atomic_read(&server->inFlight) >= server->maxReq)
-+ atomic_set(&server->inFlight, server->maxReq - 1);
- /*
- * We do not want to set the max_pending too low or we could end up
- * with the counter going negative.
-@@ -1890,6 +1886,7 @@ cifs_get_tcp_session(struct smb_vol *volume_info)
- tcp_ses->noautotune = volume_info->noautotune;
- tcp_ses->tcp_nodelay = volume_info->sockopt_tcp_nodelay;
- atomic_set(&tcp_ses->inFlight, 0);
-+ tcp_ses->maxReq = 1; /* enough to send negotiate request */
- init_waitqueue_head(&tcp_ses->response_q);
- init_waitqueue_head(&tcp_ses->request_q);
- INIT_LIST_HEAD(&tcp_ses->pending_mid_q);
-diff --git a/fs/cifs/dir.c b/fs/cifs/dir.c
-index bf68b4f..6937e7c 100644
---- a/fs/cifs/dir.c
-+++ b/fs/cifs/dir.c
-@@ -171,7 +171,7 @@ cifs_create(struct inode *inode, struct dentry *direntry, int mode,
- }
- tcon = tlink_tcon(tlink);
-
-- if (enable_oplocks)
-+ if (tcon->ses->server->oplocks)
- oplock = REQ_OPLOCK;
-
- if (nd)
-@@ -492,7 +492,7 @@ cifs_lookup(struct inode *parent_dir_inode, struct dentry *direntry,
- {
- int xid;
- int rc = 0; /* to get around spurious gcc warning, set to zero here */
-- __u32 oplock = enable_oplocks ? REQ_OPLOCK : 0;
-+ __u32 oplock;
- __u16 fileHandle = 0;
- bool posix_open = false;
- struct cifs_sb_info *cifs_sb;
-@@ -518,6 +518,8 @@ cifs_lookup(struct inode *parent_dir_inode, struct dentry *direntry,
- }
- pTcon = tlink_tcon(tlink);
-
-+ oplock = pTcon->ses->server->oplocks ? REQ_OPLOCK : 0;
-+
- /*
- * Don't allow the separator character in a path component.
- * The VFS will not allow "/", but "\" is allowed by posix.
-diff --git a/fs/cifs/file.c b/fs/cifs/file.c
-index 5e64748..4aa6080 100644
---- a/fs/cifs/file.c
-+++ b/fs/cifs/file.c
-@@ -380,7 +380,7 @@ int cifs_open(struct inode *inode, struct file *file)
- cFYI(1, "inode = 0x%p file flags are 0x%x for %s",
- inode, file->f_flags, full_path);
-
-- if (enable_oplocks)
-+ if (tcon->ses->server->oplocks)
- oplock = REQ_OPLOCK;
- else
- oplock = 0;
-@@ -505,7 +505,7 @@ static int cifs_reopen_file(struct cifsFileInfo *pCifsFile, bool can_flush)
- cFYI(1, "inode = 0x%p file flags 0x%x for %s",
- inode, pCifsFile->f_flags, full_path);
-
-- if (enable_oplocks)
-+ if (tcon->ses->server->oplocks)
- oplock = REQ_OPLOCK;
- else
- oplock = 0;
-diff --git a/fs/cifs/transport.c b/fs/cifs/transport.c
-index 0cc9584..99a27cf 100644
---- a/fs/cifs/transport.c
-+++ b/fs/cifs/transport.c
-@@ -265,12 +265,12 @@ static int wait_for_free_request(struct TCP_Server_Info *server,
-
- spin_lock(&GlobalMid_Lock);
- while (1) {
-- if (atomic_read(&server->inFlight) >= cifs_max_pending) {
-+ if (atomic_read(&server->inFlight) >= server->maxReq) {
- spin_unlock(&GlobalMid_Lock);
- cifs_num_waiters_inc(server);
- wait_event(server->request_q,
- atomic_read(&server->inFlight)
-- < cifs_max_pending);
-+ < server->maxReq);
- cifs_num_waiters_dec(server);
- spin_lock(&GlobalMid_Lock);
- } else {
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0089-cifs-fix-issue-mounting-of-DFS-ROOT-when-redirecting.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0089-cifs-fix-issue-mounting-of-DFS-ROOT-when-redirecting.patch
deleted file mode 100644
index a07d8d8..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0089-cifs-fix-issue-mounting-of-DFS-ROOT-when-redirecting.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From bf2a3ba7a460d3f1904077d790028269f468d7c1 Mon Sep 17 00:00:00 2001
-From: Jeff Layton <jlayton at redhat.com>
-Date: Wed, 21 Mar 2012 06:30:40 -0400
-Subject: [PATCH 089/147] cifs: fix issue mounting of DFS ROOT when
- redirecting from one domain controller to the next
-
-commit 1daaae8fa4afe3df78ca34e724ed7e8187e4eb32 upstream.
-
-This patch fixes an issue when cifs_mount receives a
-STATUS_BAD_NETWORK_NAME error during cifs_get_tcon but is able to
-continue after an DFS ROOT referral. In this case, the return code
-variable is not reset prior to trying to mount from the system referred
-to. Thus, is_path_accessible is not executed and the final DFS referral
-is not performed causing a mount error.
-
-Use case: In DNS, example.com resolves to the secondary AD server
-ad2.example.com Our primary domain controller is ad1.example.com and has
-a DFS redirection set up from \\ad1\share\Users to \\files\share\Users.
-Mounting \\example.com\share\Users fails.
-
-Regression introduced by commit 724d9f1.
-
-Reviewed-by: Pavel Shilovsky <piastry at etersoft.ru
-Signed-off-by: Thomas Hadig <thomas at intapp.com>
-Signed-off-by: Jeff Layton <jlayton at redhat.com>
-Signed-off-by: Steve French <sfrench at us.ibm.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/cifs/connect.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c
-index a26b98f..9e0675a 100644
---- a/fs/cifs/connect.c
-+++ b/fs/cifs/connect.c
-@@ -3217,7 +3217,7 @@ cifs_ra_pages(struct cifs_sb_info *cifs_sb)
- int
- cifs_mount(struct cifs_sb_info *cifs_sb, struct smb_vol *volume_info)
- {
-- int rc = 0;
-+ int rc;
- int xid;
- struct cifs_ses *pSesInfo;
- struct cifs_tcon *tcon;
-@@ -3244,6 +3244,7 @@ try_mount_again:
- FreeXid(xid);
- }
- #endif
-+ rc = 0;
- tcon = NULL;
- pSesInfo = NULL;
- srvTcp = NULL;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0090-CIFS-Fix-a-spurious-error-in-cifs_push_posix_locks.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0090-CIFS-Fix-a-spurious-error-in-cifs_push_posix_locks.patch
deleted file mode 100644
index db43c40..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0090-CIFS-Fix-a-spurious-error-in-cifs_push_posix_locks.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-From 456290dcbf936c8883bf84492b7c3f04e73efa1a Mon Sep 17 00:00:00 2001
-From: Pavel Shilovsky <piastry at etersoft.ru>
-Date: Sat, 17 Mar 2012 09:46:55 +0300
-Subject: [PATCH 090/147] CIFS: Fix a spurious error in cifs_push_posix_locks
-
-commit ce85852b90a214cf577fc1b4f49d99fd7e98784a upstream.
-
-Signed-off-by: Pavel Shilovsky <piastry at etersoft.ru>
-Reviewed-by: Jeff Layton <jlayton at redhat.com>
-Reported-by: Ben Hutchings <ben at decadent.org.uk>
-Signed-off-by: Steve French <sfrench at us.ibm.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/cifs/file.c | 19 ++++++++++---------
- 1 file changed, 10 insertions(+), 9 deletions(-)
-
-diff --git a/fs/cifs/file.c b/fs/cifs/file.c
-index 4aa6080..159fcc5 100644
---- a/fs/cifs/file.c
-+++ b/fs/cifs/file.c
-@@ -960,9 +960,9 @@ cifs_push_posix_locks(struct cifsFileInfo *cfile)
- INIT_LIST_HEAD(&locks_to_send);
-
- /*
-- * Allocating count locks is enough because no locks can be added to
-- * the list while we are holding cinode->lock_mutex that protects
-- * locking operations of this inode.
-+ * Allocating count locks is enough because no FL_POSIX locks can be
-+ * added to the list while we are holding cinode->lock_mutex that
-+ * protects locking operations of this inode.
- */
- for (; i < count; i++) {
- lck = kmalloc(sizeof(struct lock_to_push), GFP_KERNEL);
-@@ -973,18 +973,20 @@ cifs_push_posix_locks(struct cifsFileInfo *cfile)
- list_add_tail(&lck->llist, &locks_to_send);
- }
-
-- i = 0;
- el = locks_to_send.next;
- lock_flocks();
- cifs_for_each_lock(cfile->dentry->d_inode, before) {
-+ flock = *before;
-+ if ((flock->fl_flags & FL_POSIX) == 0)
-+ continue;
- if (el == &locks_to_send) {
-- /* something is really wrong */
-+ /*
-+ * The list ended. We don't have enough allocated
-+ * structures - something is really wrong.
-+ */
- cERROR(1, "Can't push all brlocks!");
- break;
- }
-- flock = *before;
-- if ((flock->fl_flags & FL_POSIX) == 0)
-- continue;
- length = 1 + flock->fl_end - flock->fl_start;
- if (flock->fl_type == F_RDLCK || flock->fl_type == F_SHLCK)
- type = CIFS_RDLCK;
-@@ -996,7 +998,6 @@ cifs_push_posix_locks(struct cifsFileInfo *cfile)
- lck->length = length;
- lck->type = type;
- lck->offset = flock->fl_start;
-- i++;
- el = el->next;
- }
- unlock_flocks();
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0091-UBI-fix-error-handling-in-ubi_scan.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0091-UBI-fix-error-handling-in-ubi_scan.patch
deleted file mode 100644
index 1b0619f..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0091-UBI-fix-error-handling-in-ubi_scan.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From a3dcecf0adebe74332981c56c453556e3a4ebd5b Mon Sep 17 00:00:00 2001
-From: Richard Weinberger <richard at nod.at>
-Date: Mon, 30 Jan 2012 18:20:13 +0100
-Subject: [PATCH 091/147] UBI: fix error handling in ubi_scan()
-
-commit a29852be492d61001d86c6ebf5fff9b93d7b4be9 upstream.
-
-Two bad things can happen in ubi_scan():
-1. If kmem_cache_create() fails we jump to out_si and call
- ubi_scan_destroy_si() which calls kmem_cache_destroy().
- But si->scan_leb_slab is NULL.
-2. If process_eb() fails we jump to out_vidh, call
- kmem_cache_destroy() and ubi_scan_destroy_si() which calls
- again kmem_cache_destroy().
-
-Signed-off-by: Richard Weinberger <richard at nod.at>
-Signed-off-by: Artem Bityutskiy <artem.bityutskiy at linux.intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/mtd/ubi/scan.c | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/mtd/ubi/scan.c b/drivers/mtd/ubi/scan.c
-index 0cb17d9..b99318e 100644
---- a/drivers/mtd/ubi/scan.c
-+++ b/drivers/mtd/ubi/scan.c
-@@ -1174,7 +1174,7 @@ struct ubi_scan_info *ubi_scan(struct ubi_device *ubi)
-
- ech = kzalloc(ubi->ec_hdr_alsize, GFP_KERNEL);
- if (!ech)
-- goto out_slab;
-+ goto out_si;
-
- vidh = ubi_zalloc_vid_hdr(ubi, GFP_KERNEL);
- if (!vidh)
-@@ -1235,8 +1235,6 @@ out_vidh:
- ubi_free_vid_hdr(ubi, vidh);
- out_ech:
- kfree(ech);
--out_slab:
-- kmem_cache_destroy(si->scan_leb_slab);
- out_si:
- ubi_scan_destroy_si(si);
- return ERR_PTR(err);
-@@ -1325,7 +1323,9 @@ void ubi_scan_destroy_si(struct ubi_scan_info *si)
- }
- }
-
-- kmem_cache_destroy(si->scan_leb_slab);
-+ if (si->scan_leb_slab)
-+ kmem_cache_destroy(si->scan_leb_slab);
-+
- kfree(si);
- }
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0092-UBI-fix-eraseblock-picking-criteria.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0092-UBI-fix-eraseblock-picking-criteria.patch
deleted file mode 100644
index ce317e4..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0092-UBI-fix-eraseblock-picking-criteria.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From 7abbe27ba63bb9559ea47b8449c4f0a50d98073e Mon Sep 17 00:00:00 2001
-From: Artem Bityutskiy <artem.bityutskiy at linux.intel.com>
-Date: Wed, 7 Mar 2012 19:08:36 +0200
-Subject: [PATCH 092/147] UBI: fix eraseblock picking criteria
-
-commit 7eb3aa65853e1b223bfc786b023b702018cb76c0 upstream.
-
-The 'find_wl_entry()' function expects the maximum difference as the second
-argument, not the maximum absolute value. So the "unknown" eraseblock picking
-was incorrect, as Shmulik Ladkani spotted. This patch fixes the issue.
-
-Reported-by: Shmulik Ladkani <shmulik.ladkani at gmail.com>
-Signed-off-by: Artem Bityutskiy <artem.bityutskiy at linux.intel.com>
-Reviewed-by: Shmulik Ladkani <shmulik.ladkani at gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/mtd/ubi/wl.c | 10 ++++------
- 1 file changed, 4 insertions(+), 6 deletions(-)
-
-diff --git a/drivers/mtd/ubi/wl.c b/drivers/mtd/ubi/wl.c
-index 0696e36..cf42971 100644
---- a/drivers/mtd/ubi/wl.c
-+++ b/drivers/mtd/ubi/wl.c
-@@ -389,7 +389,7 @@ static struct ubi_wl_entry *find_wl_entry(struct rb_root *root, int max)
- */
- int ubi_wl_get_peb(struct ubi_device *ubi, int dtype)
- {
-- int err, medium_ec;
-+ int err;
- struct ubi_wl_entry *e, *first, *last;
-
- ubi_assert(dtype == UBI_LONGTERM || dtype == UBI_SHORTTERM ||
-@@ -427,7 +427,7 @@ retry:
- * For unknown data we pick a physical eraseblock with medium
- * erase counter. But we by no means can pick a physical
- * eraseblock with erase counter greater or equivalent than the
-- * lowest erase counter plus %WL_FREE_MAX_DIFF.
-+ * lowest erase counter plus %WL_FREE_MAX_DIFF/2.
- */
- first = rb_entry(rb_first(&ubi->free), struct ubi_wl_entry,
- u.rb);
-@@ -436,10 +436,8 @@ retry:
- if (last->ec - first->ec < WL_FREE_MAX_DIFF)
- e = rb_entry(ubi->free.rb_node,
- struct ubi_wl_entry, u.rb);
-- else {
-- medium_ec = (first->ec + WL_FREE_MAX_DIFF)/2;
-- e = find_wl_entry(&ubi->free, medium_ec);
-- }
-+ else
-+ e = find_wl_entry(&ubi->free, WL_FREE_MAX_DIFF/2);
- break;
- case UBI_SHORTTERM:
- /*
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0093-SUNRPC-We-must-not-use-list_for_each_entry_safe-in-r.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0093-SUNRPC-We-must-not-use-list_for_each_entry_safe-in-r.patch
deleted file mode 100644
index 3b45654..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0093-SUNRPC-We-must-not-use-list_for_each_entry_safe-in-r.patch
+++ /dev/null
@@ -1,73 +0,0 @@
-From cdc2a3f4e2494e413531264d3949ce6801123ad9 Mon Sep 17 00:00:00 2001
-From: Trond Myklebust <Trond.Myklebust at netapp.com>
-Date: Mon, 19 Mar 2012 13:39:35 -0400
-Subject: [PATCH 093/147] SUNRPC: We must not use list_for_each_entry_safe()
- in rpc_wake_up()
-
-commit 540a0f7584169651f485e8ab67461fcb06934e38 upstream.
-
-The problem is that for the case of priority queues, we
-have to assume that __rpc_remove_wait_queue_priority will move new
-elements from the tk_wait.links lists into the queue->tasks[] list.
-We therefore cannot use list_for_each_entry_safe() on queue->tasks[],
-since that will skip these new tasks that __rpc_remove_wait_queue_priority
-is adding.
-
-Without this fix, rpc_wake_up and rpc_wake_up_status will both fail
-to wake up all functions on priority wait queues, which can result
-in some nasty hangs.
-
-Reported-by: Andy Adamson <andros at netapp.com>
-Signed-off-by: Trond Myklebust <Trond.Myklebust at netapp.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- net/sunrpc/sched.c | 15 +++++++++++----
- 1 file changed, 11 insertions(+), 4 deletions(-)
-
-diff --git a/net/sunrpc/sched.c b/net/sunrpc/sched.c
-index 00a1a2a..4e2b3b4 100644
---- a/net/sunrpc/sched.c
-+++ b/net/sunrpc/sched.c
-@@ -500,14 +500,18 @@ EXPORT_SYMBOL_GPL(rpc_wake_up_next);
- */
- void rpc_wake_up(struct rpc_wait_queue *queue)
- {
-- struct rpc_task *task, *next;
- struct list_head *head;
-
- spin_lock_bh(&queue->lock);
- head = &queue->tasks[queue->maxpriority];
- for (;;) {
-- list_for_each_entry_safe(task, next, head, u.tk_wait.list)
-+ while (!list_empty(head)) {
-+ struct rpc_task *task;
-+ task = list_first_entry(head,
-+ struct rpc_task,
-+ u.tk_wait.list);
- rpc_wake_up_task_queue_locked(queue, task);
-+ }
- if (head == &queue->tasks[0])
- break;
- head--;
-@@ -525,13 +529,16 @@ EXPORT_SYMBOL_GPL(rpc_wake_up);
- */
- void rpc_wake_up_status(struct rpc_wait_queue *queue, int status)
- {
-- struct rpc_task *task, *next;
- struct list_head *head;
-
- spin_lock_bh(&queue->lock);
- head = &queue->tasks[queue->maxpriority];
- for (;;) {
-- list_for_each_entry_safe(task, next, head, u.tk_wait.list) {
-+ while (!list_empty(head)) {
-+ struct rpc_task *task;
-+ task = list_first_entry(head,
-+ struct rpc_task,
-+ u.tk_wait.list);
- task->tk_status = status;
- rpc_wake_up_task_queue_locked(queue, task);
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0094-usbnet-increase-URB-reference-count-before-usb_unlin.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0094-usbnet-increase-URB-reference-count-before-usb_unlin.patch
deleted file mode 100644
index 0538503..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0094-usbnet-increase-URB-reference-count-before-usb_unlin.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From 25aa7a79e5be3c393eee41e3939d8eefa9672fc7 Mon Sep 17 00:00:00 2001
-From: "tom.leiming at gmail.com" <tom.leiming at gmail.com>
-Date: Thu, 22 Mar 2012 03:22:18 +0000
-Subject: [PATCH 094/147] usbnet: increase URB reference count before
- usb_unlink_urb
-
-commit 0956a8c20b23d429e79ff86d4325583fc06f9eb4 upstream.
-
-Commit 4231d47e6fe69f061f96c98c30eaf9fb4c14b96d(net/usbnet: avoid
-recursive locking in usbnet_stop()) fixes the recursive locking
-problem by releasing the skb queue lock, but it makes usb_unlink_urb
-racing with defer_bh, and the URB to being unlinked may be freed before
-or during calling usb_unlink_urb, so use-after-free problem may be
-triggerd inside usb_unlink_urb.
-
-The patch fixes the use-after-free problem by increasing URB
-reference count with skb queue lock held before calling
-usb_unlink_urb, so the URB won't be freed until return from
-usb_unlink_urb.
-
-Cc: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
-Cc: Alan Stern <stern at rowland.harvard.edu>
-Cc: Oliver Neukum <oliver at neukum.org>
-Reported-by: Dave Jones <davej at redhat.com>
-Signed-off-by: Ming Lei <tom.leiming at gmail.com>
-Acked-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/net/usb/usbnet.c | 9 +++++++++
- 1 file changed, 9 insertions(+)
-
-diff --git a/drivers/net/usb/usbnet.c b/drivers/net/usb/usbnet.c
-index 81b96e3..cf6a515 100644
---- a/drivers/net/usb/usbnet.c
-+++ b/drivers/net/usb/usbnet.c
-@@ -589,6 +589,14 @@ static int unlink_urbs (struct usbnet *dev, struct sk_buff_head *q)
- entry = (struct skb_data *) skb->cb;
- urb = entry->urb;
-
-+ /*
-+ * Get reference count of the URB to avoid it to be
-+ * freed during usb_unlink_urb, which may trigger
-+ * use-after-free problem inside usb_unlink_urb since
-+ * usb_unlink_urb is always racing with .complete
-+ * handler(include defer_bh).
-+ */
-+ usb_get_urb(urb);
- spin_unlock_irqrestore(&q->lock, flags);
- // during some PM-driven resume scenarios,
- // these (async) unlinks complete immediately
-@@ -597,6 +605,7 @@ static int unlink_urbs (struct usbnet *dev, struct sk_buff_head *q)
- netdev_dbg(dev->net, "unlink urb err, %d\n", retval);
- else
- count++;
-+ usb_put_urb(urb);
- spin_lock_irqsave(&q->lock, flags);
- }
- spin_unlock_irqrestore (&q->lock, flags);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0095-usbnet-don-t-clear-urb-dev-in-tx_complete.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0095-usbnet-don-t-clear-urb-dev-in-tx_complete.patch
deleted file mode 100644
index 71c9db0..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0095-usbnet-don-t-clear-urb-dev-in-tx_complete.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 31dcb2223cbb8ca92371811a9d59ed6f721e6d5d Mon Sep 17 00:00:00 2001
-From: "tom.leiming at gmail.com" <tom.leiming at gmail.com>
-Date: Thu, 22 Mar 2012 03:22:38 +0000
-Subject: [PATCH 095/147] usbnet: don't clear urb->dev in tx_complete
-
-commit 5d5440a835710d09f0ef18da5000541ec98b537a upstream.
-
-URB unlinking is always racing with its completion and tx_complete
-may be called before or during running usb_unlink_urb, so tx_complete
-must not clear urb->dev since it will be used in unlink path,
-otherwise invalid memory accesses or usb device leak may be caused
-inside usb_unlink_urb.
-
-Cc: Alan Stern <stern at rowland.harvard.edu>
-Cc: Oliver Neukum <oliver at neukum.org>
-Signed-off-by: Ming Lei <tom.leiming at gmail.com>
-Acked-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/net/usb/usbnet.c | 1 -
- 1 file changed, 1 deletion(-)
-
-diff --git a/drivers/net/usb/usbnet.c b/drivers/net/usb/usbnet.c
-index cf6a515..750e330 100644
---- a/drivers/net/usb/usbnet.c
-+++ b/drivers/net/usb/usbnet.c
-@@ -1037,7 +1037,6 @@ static void tx_complete (struct urb *urb)
- }
-
- usb_autopm_put_interface_async(dev->intf);
-- urb->dev = NULL;
- entry->state = tx_done;
- defer_bh(dev, skb, &dev->txq);
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0096-e1000e-Avoid-wrong-check-on-TX-hang.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0096-e1000e-Avoid-wrong-check-on-TX-hang.patch
deleted file mode 100644
index 23f6a5b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0096-e1000e-Avoid-wrong-check-on-TX-hang.patch
+++ /dev/null
@@ -1,98 +0,0 @@
-From 4c14b8afd02d6923243bf2e2f14bd8ad750741d3 Mon Sep 17 00:00:00 2001
-From: Jeff Kirsher <jeffrey.t.kirsher at intel.com>
-Date: Fri, 18 Nov 2011 14:25:00 +0000
-Subject: [PATCH 096/147] e1000e: Avoid wrong check on TX hang
-
-commit 09357b00255c233705b1cf6d76a8d147340545b8 upstream.
-
-Based on the original patch submitted my Michael Wang
-<wangyun at linux.vnet.ibm.com>.
-Descriptors may not be write-back while checking TX hang with flag
-FLAG2_DMA_BURST on.
-So when we detect hang, we just flush the descriptor and detect
-again for once.
-
--v2 change 1 to true and 0 to false and remove extra ()
-
-CC: Michael Wang <wangyun at linux.vnet.ibm.com>
-CC: Flavio Leitner <fbl at redhat.com>
-Acked-by: Jesse Brandeburg <jesse.brandeburg at intel.com>
-Tested-by: Aaron Brown <aaron.f.brown at intel.com>
-Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher at intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/net/ethernet/intel/e1000e/e1000.h | 1 +
- drivers/net/ethernet/intel/e1000e/netdev.c | 23 ++++++++++++++++++++---
- 2 files changed, 21 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/net/ethernet/intel/e1000e/e1000.h b/drivers/net/ethernet/intel/e1000e/e1000.h
-index 9fe18d1..f478a22 100644
---- a/drivers/net/ethernet/intel/e1000e/e1000.h
-+++ b/drivers/net/ethernet/intel/e1000e/e1000.h
-@@ -309,6 +309,7 @@ struct e1000_adapter {
- u32 txd_cmd;
-
- bool detect_tx_hung;
-+ bool tx_hang_recheck;
- u8 tx_timeout_factor;
-
- u32 tx_int_delay;
-diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c
-index a855db1..4e933d1 100644
---- a/drivers/net/ethernet/intel/e1000e/netdev.c
-+++ b/drivers/net/ethernet/intel/e1000e/netdev.c
-@@ -1030,6 +1030,7 @@ static void e1000_print_hw_hang(struct work_struct *work)
- struct e1000_adapter *adapter = container_of(work,
- struct e1000_adapter,
- print_hang_task);
-+ struct net_device *netdev = adapter->netdev;
- struct e1000_ring *tx_ring = adapter->tx_ring;
- unsigned int i = tx_ring->next_to_clean;
- unsigned int eop = tx_ring->buffer_info[i].next_to_watch;
-@@ -1041,6 +1042,21 @@ static void e1000_print_hw_hang(struct work_struct *work)
- if (test_bit(__E1000_DOWN, &adapter->state))
- return;
-
-+ if (!adapter->tx_hang_recheck &&
-+ (adapter->flags2 & FLAG2_DMA_BURST)) {
-+ /* May be block on write-back, flush and detect again
-+ * flush pending descriptor writebacks to memory
-+ */
-+ ew32(TIDV, adapter->tx_int_delay | E1000_TIDV_FPD);
-+ /* execute the writes immediately */
-+ e1e_flush();
-+ adapter->tx_hang_recheck = true;
-+ return;
-+ }
-+ /* Real hang detected */
-+ adapter->tx_hang_recheck = false;
-+ netif_stop_queue(netdev);
-+
- e1e_rphy(hw, PHY_STATUS, &phy_status);
- e1e_rphy(hw, PHY_1000T_STATUS, &phy_1000t_status);
- e1e_rphy(hw, PHY_EXT_STATUS, &phy_ext_status);
-@@ -1154,10 +1170,10 @@ static bool e1000_clean_tx_irq(struct e1000_adapter *adapter)
- if (tx_ring->buffer_info[i].time_stamp &&
- time_after(jiffies, tx_ring->buffer_info[i].time_stamp
- + (adapter->tx_timeout_factor * HZ)) &&
-- !(er32(STATUS) & E1000_STATUS_TXOFF)) {
-+ !(er32(STATUS) & E1000_STATUS_TXOFF))
- schedule_work(&adapter->print_hang_task);
-- netif_stop_queue(netdev);
-- }
-+ else
-+ adapter->tx_hang_recheck = false;
- }
- adapter->total_tx_bytes += total_tx_bytes;
- adapter->total_tx_packets += total_tx_packets;
-@@ -3782,6 +3798,7 @@ static int e1000_open(struct net_device *netdev)
-
- e1000_irq_enable(adapter);
-
-+ adapter->tx_hang_recheck = false;
- netif_start_queue(netdev);
-
- adapter->idle_check = true;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0097-x86-32-Fix-endless-loop-when-processing-signals-for-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0097-x86-32-Fix-endless-loop-when-processing-signals-for-.patch
deleted file mode 100644
index 0b817ed..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0097-x86-32-Fix-endless-loop-when-processing-signals-for-.patch
+++ /dev/null
@@ -1,85 +0,0 @@
-From 37d297b39726f3284da2f83d235c94b0d224e047 Mon Sep 17 00:00:00 2001
-From: Dmitry Adamushko <dmitry.adamushko at gmail.com>
-Date: Thu, 22 Mar 2012 21:39:25 +0100
-Subject: [PATCH 097/147] x86-32: Fix endless loop when processing signals for
- kernel tasks
-
-commit 29a2e2836ff9ea65a603c89df217f4198973a74f upstream.
-
-The problem occurs on !CONFIG_VM86 kernels [1] when a kernel-mode task
-returns from a system call with a pending signal.
-
-A real-life scenario is a child of 'khelper' returning from a failed
-kernel_execve() in ____call_usermodehelper() [ kernel/kmod.c ].
-kernel_execve() fails due to a pending SIGKILL, which is the result of
-"kill -9 -1" (at least, busybox's init does it upon reboot).
-
-The loop is as follows:
-
-* syscall_exit_work:
- - work_pending: // start_of_the_loop
- - work_notify_sig:
- - do_notify_resume()
- - do_signal()
- - if (!user_mode(regs)) return;
- - resume_userspace // TIF_SIGPENDING is still set
- - work_pending // so we call work_pending => goto
- // start_of_the_loop
-
-More information can be found in another LKML thread:
-http://www.serverphorums.com/read.php?12,457826
-
-[1] the problem was also seen on MIPS.
-
-Signed-off-by: Dmitry Adamushko <dmitry.adamushko at gmail.com>
-Link: http://lkml.kernel.org/r/1332448765.2299.68.camel@dimm
-Cc: Oleg Nesterov <oleg at redhat.com>
-Cc: Roland McGrath <roland at hack.frob.com>
-Cc: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: H. Peter Anvin <hpa at zytor.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/x86/kernel/entry_32.S | 17 ++++++++++-------
- 1 file changed, 10 insertions(+), 7 deletions(-)
-
-diff --git a/arch/x86/kernel/entry_32.S b/arch/x86/kernel/entry_32.S
-index f3f6f53..bcda816 100644
---- a/arch/x86/kernel/entry_32.S
-+++ b/arch/x86/kernel/entry_32.S
-@@ -99,12 +99,6 @@
- #endif
- .endm
-
--#ifdef CONFIG_VM86
--#define resume_userspace_sig check_userspace
--#else
--#define resume_userspace_sig resume_userspace
--#endif
--
- /*
- * User gs save/restore
- *
-@@ -328,10 +322,19 @@ ret_from_exception:
- preempt_stop(CLBR_ANY)
- ret_from_intr:
- GET_THREAD_INFO(%ebp)
--check_userspace:
-+resume_userspace_sig:
-+#ifdef CONFIG_VM86
- movl PT_EFLAGS(%esp), %eax # mix EFLAGS and CS
- movb PT_CS(%esp), %al
- andl $(X86_EFLAGS_VM | SEGMENT_RPL_MASK), %eax
-+#else
-+ /*
-+ * We can be coming here from a syscall done in the kernel space,
-+ * e.g. a failed kernel_execve().
-+ */
-+ movl PT_CS(%esp), %eax
-+ andl $SEGMENT_RPL_MASK, %eax
-+#endif
- cmpl $USER_RPL, %eax
- jb resume_kernel # not returning to v8086 or userspace
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0098-proc-ns-use-d_set_d_op-API-to-set-dentry-ops-in-proc.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0098-proc-ns-use-d_set_d_op-API-to-set-dentry-ops-in-proc.patch
deleted file mode 100644
index d32e4a6..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0098-proc-ns-use-d_set_d_op-API-to-set-dentry-ops-in-proc.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From 0b21a3eba2629ca8e573e5b0cd7d1627d17c7cf6 Mon Sep 17 00:00:00 2001
-From: Pravin B Shelar <pshelar at nicira.com>
-Date: Fri, 23 Mar 2012 15:02:55 -0700
-Subject: [PATCH 098/147] proc-ns: use d_set_d_op() API to set dentry ops in
- proc_ns_instantiate().
-
-commit 1b26c9b334044cff6d1d2698f2be41bc7d9a0864 upstream.
-
-The namespace cleanup path leaks a dentry which holds a reference count
-on a network namespace. Keeping that network namespace from being freed
-when the last user goes away. Leaving things like vlan devices in the
-leaked network namespace.
-
-If you use ip netns add for much real work this problem becomes apparent
-pretty quickly. It light testing the problem hides because frequently
-you simply don't notice the leak.
-
-Use d_set_d_op() so that DCACHE_OP_* flags are set correctly.
-
-This issue exists back to 3.0.
-
-Acked-by: "Eric W. Biederman" <ebiederm at xmission.com>
-Reported-by: Justin Pettit <jpettit at nicira.com>
-Signed-off-by: Pravin B Shelar <pshelar at nicira.com>
-Signed-off-by: Jesse Gross <jesse at nicira.com>
-Cc: David Miller <davem at davemloft.net>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/proc/namespaces.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/fs/proc/namespaces.c b/fs/proc/namespaces.c
-index be177f7..d6c078e 100644
---- a/fs/proc/namespaces.c
-+++ b/fs/proc/namespaces.c
-@@ -54,7 +54,7 @@ static struct dentry *proc_ns_instantiate(struct inode *dir,
- ei->ns_ops = ns_ops;
- ei->ns = ns;
-
-- dentry->d_op = &pid_dentry_operations;
-+ d_set_d_op(dentry, &pid_dentry_operations);
- d_add(dentry, inode);
- /* Close the race of the process dying before we return the dentry */
- if (pid_revalidate(dentry, NULL))
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0099-iommu-amd-Fix-section-warning-for-prealloc_protectio.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0099-iommu-amd-Fix-section-warning-for-prealloc_protectio.patch
deleted file mode 100644
index daafc4e..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0099-iommu-amd-Fix-section-warning-for-prealloc_protectio.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From fd9b78dce7a6acf7a69902d69c82980634cd7136 Mon Sep 17 00:00:00 2001
-From: Steffen Persvold <sp at numascale.com>
-Date: Thu, 15 Mar 2012 15:20:29 +0100
-Subject: [PATCH 099/147] iommu/amd: Fix section warning for
- prealloc_protection_domains
-
-commit cebd5fa4d3046d5b43ce1836a0120612822a7fb0 upstream.
-
-Fix the following section warning in drivers/iommu/amd_iommu.c :
-
-WARNING: vmlinux.o(.text+0x526e77): Section mismatch in reference from the function prealloc_protection_domains() to the function .init.text:alloc_passthrough_domain()
-The function prealloc_protection_domains() references
-the function __init alloc_passthrough_domain().
-This is often because prealloc_protection_domains lacks a __init
-annotation or the annotation of alloc_passthrough_domain is wrong.
-
-Signed-off-by: Steffen Persvold <sp at numascale.com>
-Signed-off-by: Joerg Roedel <joerg.roedel at amd.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/iommu/amd_iommu.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c
-index e0b3e33..966a6e7 100644
---- a/drivers/iommu/amd_iommu.c
-+++ b/drivers/iommu/amd_iommu.c
-@@ -2432,7 +2432,7 @@ static int amd_iommu_dma_supported(struct device *dev, u64 mask)
- * we don't need to preallocate the protection domains anymore.
- * For now we have to.
- */
--static void prealloc_protection_domains(void)
-+static void __init prealloc_protection_domains(void)
- {
- struct pci_dev *dev = NULL;
- struct dma_ops_domain *dma_dom;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0100-sysctl-protect-poll-in-entries-that-may-go-away.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0100-sysctl-protect-poll-in-entries-that-may-go-away.patch
deleted file mode 100644
index 15fc99d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0100-sysctl-protect-poll-in-entries-that-may-go-away.patch
+++ /dev/null
@@ -1,97 +0,0 @@
-From 55d8b2b2ea9545b29091216b9875c4e119215b63 Mon Sep 17 00:00:00 2001
-From: Lucas De Marchi <lucas.demarchi at profusion.mobi>
-Date: Thu, 22 Mar 2012 14:42:22 -0700
-Subject: [PATCH 100/147] sysctl: protect poll() in entries that may go away
-
-commit 4e474a00d7ff746ed177ddae14fa8b2d4bad7a00 upstream.
-
-Protect code accessing ctl_table by grabbing the header with grab_header()
-and after releasing with sysctl_head_finish(). This is needed if poll()
-is called in entries created by modules: currently only hostname and
-domainname support poll(), but this bug may be triggered when/if modules
-use it and if user called poll() in a file that doesn't support it.
-
-Dave Jones reported the following when using a syscall fuzzer while
-hibernating/resuming:
-
-RIP: 0010:[<ffffffff81233e3e>] [<ffffffff81233e3e>] proc_sys_poll+0x4e/0x90
-RAX: 0000000000000145 RBX: ffff88020cab6940 RCX: 0000000000000000
-RDX: ffffffff81233df0 RSI: 6b6b6b6b6b6b6b6b RDI: ffff88020cab6940
-[ ... ]
-Code: 00 48 89 fb 48 89 f1 48 8b 40 30 4c 8b 60 e8 b8 45 01 00 00 49 83
-7c 24 28 00 74 2e 49 8b 74 24 30 48 85 f6 74 24 48 85 c9 75 32 <8b> 16
-b8 45 01 00 00 48 63 d2 49 39 d5 74 10 8b 06 48 98 48 89
-
-If an entry goes away while we are polling() it, ctl_table may not exist
-anymore.
-
-Reported-by: Dave Jones <davej at redhat.com>
-Signed-off-by: Lucas De Marchi <lucas.demarchi at profusion.mobi>
-Cc: Al Viro <viro at zeniv.linux.org.uk>
-Cc: Linus Torvalds <torvalds at linux-foundation.org>
-Cc: Alexey Dobriyan <adobriyan at gmail.com>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Eric W. Biederman <ebiederm at xmission.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/proc/proc_sysctl.c | 17 ++++++++++++++++-
- 1 file changed, 16 insertions(+), 1 deletion(-)
-
-diff --git a/fs/proc/proc_sysctl.c b/fs/proc/proc_sysctl.c
-index a6b6217..53c3bce 100644
---- a/fs/proc/proc_sysctl.c
-+++ b/fs/proc/proc_sysctl.c
-@@ -188,20 +188,32 @@ static ssize_t proc_sys_write(struct file *filp, const char __user *buf,
-
- static int proc_sys_open(struct inode *inode, struct file *filp)
- {
-+ struct ctl_table_header *head = grab_header(inode);
- struct ctl_table *table = PROC_I(inode)->sysctl_entry;
-
-+ /* sysctl was unregistered */
-+ if (IS_ERR(head))
-+ return PTR_ERR(head);
-+
- if (table->poll)
- filp->private_data = proc_sys_poll_event(table->poll);
-
-+ sysctl_head_finish(head);
-+
- return 0;
- }
-
- static unsigned int proc_sys_poll(struct file *filp, poll_table *wait)
- {
- struct inode *inode = filp->f_path.dentry->d_inode;
-+ struct ctl_table_header *head = grab_header(inode);
- struct ctl_table *table = PROC_I(inode)->sysctl_entry;
-- unsigned long event = (unsigned long)filp->private_data;
- unsigned int ret = DEFAULT_POLLMASK;
-+ unsigned long event;
-+
-+ /* sysctl was unregistered */
-+ if (IS_ERR(head))
-+ return POLLERR | POLLHUP;
-
- if (!table->proc_handler)
- goto out;
-@@ -209,6 +221,7 @@ static unsigned int proc_sys_poll(struct file *filp, poll_table *wait)
- if (!table->poll)
- goto out;
-
-+ event = (unsigned long)filp->private_data;
- poll_wait(filp, &table->poll->wait, wait);
-
- if (event != atomic_read(&table->poll->event)) {
-@@ -217,6 +230,8 @@ static unsigned int proc_sys_poll(struct file *filp, poll_table *wait)
- }
-
- out:
-+ sysctl_head_finish(head);
-+
- return ret;
- }
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0101-hwmon-fam15h_power-Correct-sign-extension-of-running.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0101-hwmon-fam15h_power-Correct-sign-extension-of-running.patch
deleted file mode 100644
index 552723d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0101-hwmon-fam15h_power-Correct-sign-extension-of-running.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From c1642ad65f83a61ba5c49a36e0f0e24f71c3dd9a Mon Sep 17 00:00:00 2001
-From: Andreas Herrmann <andreas.herrmann3 at amd.com>
-Date: Fri, 23 Mar 2012 10:02:17 +0100
-Subject: [PATCH 101/147] hwmon: (fam15h_power) Correct sign extension of
- running_avg_capture
-
-commit fc0900cbda9243957d812cd6b4cc87965f9fe75f upstream.
-
-Wrong bit was used for sign extension which caused wrong end results.
-Thanks to Andre for spotting this bug.
-
-Reported-by: Andre Przywara <andre.przywara at amd.com>
-Signed-off-by: Andreas Herrmann <andreas.herrmann3 at amd.com>
-Acked-by: Guenter Roeck <guenter.roeck at ericsson.com>
-Signed-off-by: Jean Delvare <khali at linux-fr.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/hwmon/fam15h_power.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/hwmon/fam15h_power.c b/drivers/hwmon/fam15h_power.c
-index 523f8fb..930370d 100644
---- a/drivers/hwmon/fam15h_power.c
-+++ b/drivers/hwmon/fam15h_power.c
-@@ -60,7 +60,7 @@ static ssize_t show_power(struct device *dev,
- pci_bus_read_config_dword(f4->bus, PCI_DEVFN(PCI_SLOT(f4->devfn), 5),
- REG_TDP_RUNNING_AVERAGE, &val);
- running_avg_capture = (val >> 4) & 0x3fffff;
-- running_avg_capture = sign_extend32(running_avg_capture, 22);
-+ running_avg_capture = sign_extend32(running_avg_capture, 21);
- running_avg_range = val & 0xf;
-
- pci_bus_read_config_dword(f4->bus, PCI_DEVFN(PCI_SLOT(f4->devfn), 5),
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0102-lgdt330x-fix-signedness-error-in-i2c_read_demod_byte.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0102-lgdt330x-fix-signedness-error-in-i2c_read_demod_byte.patch
deleted file mode 100644
index ae14ffb..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0102-lgdt330x-fix-signedness-error-in-i2c_read_demod_byte.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From 02bdf6aaea4932d896b0a9c8648ae6aa8255eb2b Mon Sep 17 00:00:00 2001
-From: Xi Wang <xi.wang at gmail.com>
-Date: Tue, 14 Feb 2012 14:32:41 -0300
-Subject: [PATCH 102/147] lgdt330x: fix signedness error in
- i2c_read_demod_bytes()
-
-commit 34817174fca0c5512c2d5b6ea0fc37a0337ce1d8 upstream.
-
-The error handling in lgdt3303_read_status() and lgdt330x_read_ucblocks()
-doesn't work, because i2c_read_demod_bytes() returns a u8 and (err < 0)
-is always false.
-
- err = i2c_read_demod_bytes(state, 0x58, buf, 1);
- if (err < 0)
- return err;
-
-Change the return type of i2c_read_demod_bytes() to int. Also change
-the return value on error to -EIO to make (err < 0) work.
-
-Signed-off-by: Xi Wang <xi.wang at gmail.com>
-Signed-off-by: Mauro Carvalho Chehab <mchehab at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/media/dvb/frontends/lgdt330x.c | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/media/dvb/frontends/lgdt330x.c b/drivers/media/dvb/frontends/lgdt330x.c
-index 43971e6..aa63d68 100644
---- a/drivers/media/dvb/frontends/lgdt330x.c
-+++ b/drivers/media/dvb/frontends/lgdt330x.c
-@@ -104,8 +104,8 @@ static int i2c_write_demod_bytes (struct lgdt330x_state* state,
- * then reads the data returned for (len) bytes.
- */
-
--static u8 i2c_read_demod_bytes (struct lgdt330x_state* state,
-- enum I2C_REG reg, u8* buf, int len)
-+static int i2c_read_demod_bytes(struct lgdt330x_state *state,
-+ enum I2C_REG reg, u8 *buf, int len)
- {
- u8 wr [] = { reg };
- struct i2c_msg msg [] = {
-@@ -118,6 +118,8 @@ static u8 i2c_read_demod_bytes (struct lgdt330x_state* state,
- ret = i2c_transfer(state->i2c, msg, 2);
- if (ret != 2) {
- printk(KERN_WARNING "lgdt330x: %s: addr 0x%02x select 0x%02x error (ret == %i)\n", __func__, state->config->demod_address, reg, ret);
-+ if (ret >= 0)
-+ ret = -EIO;
- } else {
- ret = 0;
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0103-pvrusb2-fix-7MHz-8MHz-DVB-T-tuner-support-for-HVR190.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0103-pvrusb2-fix-7MHz-8MHz-DVB-T-tuner-support-for-HVR190.patch
deleted file mode 100644
index 974e49d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0103-pvrusb2-fix-7MHz-8MHz-DVB-T-tuner-support-for-HVR190.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From c0c8df72a8880f19b3d9631dc8c2298a533eeba0 Mon Sep 17 00:00:00 2001
-From: Michael Krufky <mkrufky at linuxtv.org>
-Date: Tue, 7 Feb 2012 13:28:33 -0300
-Subject: [PATCH 103/147] pvrusb2: fix 7MHz & 8MHz DVB-T tuner support for
- HVR1900 rev D1F5
-
-commit 9ab2393fc3e460cd2040de1483918eb17abb822f upstream.
-
-The D1F5 revision of the WinTV HVR-1900 uses a tda18271c2 tuner
-instead of a tda18271c1 tuner as used in revision D1E9. To
-account for this, we must hardcode the frontend configuration
-to use the same IF frequency configuration for both revisions
-of the device.
-
-6MHz DVB-T is unaffected by this issue, as the recommended
-IF Frequency configuration for 6MHz DVB-T is the same on both
-c1 and c2 revisions of the tda18271 tuner.
-
-Signed-off-by: Michael Krufky <mkrufky at linuxtv.org>
-Cc: Mike Isely <isely at pobox.com>
-Signed-off-by: Mauro Carvalho Chehab <mchehab at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/media/video/pvrusb2/pvrusb2-devattr.c | 10 ++++++++++
- 1 file changed, 10 insertions(+)
-
-diff --git a/drivers/media/video/pvrusb2/pvrusb2-devattr.c b/drivers/media/video/pvrusb2/pvrusb2-devattr.c
-index c6da8f7..d8c8982 100644
---- a/drivers/media/video/pvrusb2/pvrusb2-devattr.c
-+++ b/drivers/media/video/pvrusb2/pvrusb2-devattr.c
-@@ -320,7 +320,17 @@ static struct tda829x_config tda829x_no_probe = {
- .probe_tuner = TDA829X_DONT_PROBE,
- };
-
-+static struct tda18271_std_map hauppauge_tda18271_dvbt_std_map = {
-+ .dvbt_6 = { .if_freq = 3300, .agc_mode = 3, .std = 4,
-+ .if_lvl = 1, .rfagc_top = 0x37, },
-+ .dvbt_7 = { .if_freq = 3800, .agc_mode = 3, .std = 5,
-+ .if_lvl = 1, .rfagc_top = 0x37, },
-+ .dvbt_8 = { .if_freq = 4300, .agc_mode = 3, .std = 6,
-+ .if_lvl = 1, .rfagc_top = 0x37, },
-+};
-+
- static struct tda18271_config hauppauge_tda18271_dvb_config = {
-+ .std_map = &hauppauge_tda18271_dvbt_std_map,
- .gate = TDA18271_GATE_ANALOG,
- .output_opt = TDA18271_OUTPUT_LT_OFF,
- };
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0104-mxl111sf-fix-error-on-stream-stop-in-mxl111sf_ep6_st.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0104-mxl111sf-fix-error-on-stream-stop-in-mxl111sf_ep6_st.patch
deleted file mode 100644
index 2233e9a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0104-mxl111sf-fix-error-on-stream-stop-in-mxl111sf_ep6_st.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From 9b9105c08669b50ea9735b26116b0b094cdb2fbe Mon Sep 17 00:00:00 2001
-From: Michael Krufky <mkrufky at linuxtv.org>
-Date: Sun, 18 Mar 2012 14:35:57 -0300
-Subject: [PATCH 104/147] mxl111sf: fix error on stream stop in
- mxl111sf_ep6_streaming_ctrl()
-
-commit 3be5bb71fbf18f83cb88b54a62a78e03e5a4f30a upstream.
-
-Remove unnecessary register access in mxl111sf_ep6_streaming_ctrl()
-
-This code breaks driver operation in kernel 3.3 and later, although
-it works properly in 3.2 Disable register access to 0x12 for now.
-
-Signed-off-by: Michael Krufky <mkrufky at linuxtv.org>
-Signed-off-by: Mauro Carvalho Chehab <mchehab at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/media/dvb/dvb-usb/mxl111sf.c | 6 ++----
- 1 file changed, 2 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/media/dvb/dvb-usb/mxl111sf.c b/drivers/media/dvb/dvb-usb/mxl111sf.c
-index b5c98da..bc6ea9f 100644
---- a/drivers/media/dvb/dvb-usb/mxl111sf.c
-+++ b/drivers/media/dvb/dvb-usb/mxl111sf.c
-@@ -351,15 +351,13 @@ static int mxl111sf_ep6_streaming_ctrl(struct dvb_usb_adapter *adap, int onoff)
- adap_state->ep6_clockphase,
- 0, 0);
- mxl_fail(ret);
-+#if 0
- } else {
- ret = mxl111sf_disable_656_port(state);
- mxl_fail(ret);
-+#endif
- }
-
-- mxl111sf_read_reg(state, 0x12, &tmp);
-- tmp &= ~0x04;
-- mxl111sf_write_reg(state, 0x12, tmp);
--
- return ret;
- }
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0105-NFSv4-Rate-limit-the-state-manager-warning-messages.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0105-NFSv4-Rate-limit-the-state-manager-warning-messages.patch
deleted file mode 100644
index f006520..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0105-NFSv4-Rate-limit-the-state-manager-warning-messages.patch
+++ /dev/null
@@ -1,78 +0,0 @@
-From 44612d69c516879d31f7b6a4a49d00dfc49caf06 Mon Sep 17 00:00:00 2001
-From: Trond Myklebust <Trond.Myklebust at netapp.com>
-Date: Mon, 12 Mar 2012 18:01:48 -0400
-Subject: [PATCH 105/147] NFSv4: Rate limit the state manager warning messages
-
-commit 9a3ba432330e504ac61ff0043dbdaba7cea0e35a upstream.
-
-Prevent the state manager from filling up system logs when recovery
-fails on the server.
-
-Signed-off-by: Trond Myklebust <Trond.Myklebust at netapp.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/nfs/callback_xdr.c | 4 +++-
- fs/nfs/nfs4proc.c | 2 +-
- fs/nfs/nfs4state.c | 4 ++--
- 3 files changed, 6 insertions(+), 4 deletions(-)
-
-diff --git a/fs/nfs/callback_xdr.c b/fs/nfs/callback_xdr.c
-index 726e59a..168cb93 100644
---- a/fs/nfs/callback_xdr.c
-+++ b/fs/nfs/callback_xdr.c
-@@ -9,6 +9,8 @@
- #include <linux/sunrpc/svc.h>
- #include <linux/nfs4.h>
- #include <linux/nfs_fs.h>
-+#include <linux/ratelimit.h>
-+#include <linux/printk.h>
- #include <linux/slab.h>
- #include <linux/sunrpc/bc_xprt.h>
- #include "nfs4_fs.h"
-@@ -167,7 +169,7 @@ static __be32 decode_compound_hdr_arg(struct xdr_stream *xdr, struct cb_compound
- if (hdr->minorversion <= 1) {
- hdr->cb_ident = ntohl(*p++); /* ignored by v4.1 */
- } else {
-- printk(KERN_WARNING "%s: NFSv4 server callback with "
-+ pr_warn_ratelimited("NFS: %s: NFSv4 server callback with "
- "illegal minor version %u!\n",
- __func__, hdr->minorversion);
- return htonl(NFS4ERR_MINOR_VERS_MISMATCH);
-diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
-index 758e809..c9e2d9e 100644
---- a/fs/nfs/nfs4proc.c
-+++ b/fs/nfs/nfs4proc.c
-@@ -1838,7 +1838,7 @@ static struct nfs4_state *nfs4_do_open(struct inode *dir, struct dentry *dentry,
- * the user though...
- */
- if (status == -NFS4ERR_BAD_SEQID) {
-- printk(KERN_WARNING "NFS: v4 server %s "
-+ pr_warn_ratelimited("NFS: v4 server %s "
- " returned a bad sequence-id error!\n",
- NFS_SERVER(dir)->nfs_client->cl_hostname);
- exception.retry = 1;
-diff --git a/fs/nfs/nfs4state.c b/fs/nfs/nfs4state.c
-index 0596fd6..66020ac 100644
---- a/fs/nfs/nfs4state.c
-+++ b/fs/nfs/nfs4state.c
-@@ -935,7 +935,7 @@ static void nfs_increment_seqid(int status, struct nfs_seqid *seqid)
- case -NFS4ERR_BAD_SEQID:
- if (seqid->sequence->flags & NFS_SEQID_CONFIRMED)
- return;
-- printk(KERN_WARNING "NFS: v4 server returned a bad"
-+ pr_warn_ratelimited("NFS: v4 server returned a bad"
- " sequence-id error on an"
- " unconfirmed sequence %p!\n",
- seqid->sequence);
-@@ -1764,7 +1764,7 @@ static void nfs4_state_manager(struct nfs_client *clp)
- } while (atomic_read(&clp->cl_count) > 1);
- return;
- out_error:
-- printk(KERN_WARNING "Error: state manager failed on NFSv4 server %s"
-+ pr_warn_ratelimited("NFS: state manager failed on NFSv4 server %s"
- " with error %d\n", clp->cl_hostname, -status);
- nfs4_end_drain_session(clp);
- nfs4_clear_state_manager_bit(clp);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0106-PM-Hibernate-Enable-usermodehelpers-in-hibernate-err.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0106-PM-Hibernate-Enable-usermodehelpers-in-hibernate-err.patch
deleted file mode 100644
index 8cd543c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0106-PM-Hibernate-Enable-usermodehelpers-in-hibernate-err.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From 17b1d0787c9eea1fffe5432c14f53066ad2ff0c6 Mon Sep 17 00:00:00 2001
-From: "Srivatsa S. Bhat" <srivatsa.bhat at linux.vnet.ibm.com>
-Date: Fri, 17 Feb 2012 23:39:51 +0100
-Subject: [PATCH 106/147] PM / Hibernate: Enable usermodehelpers in
- hibernate() error path
-
-commit 05b4877f6a4f1ba4952d1222213d262bf8c132b7 upstream.
-
-If create_basic_memory_bitmaps() fails, usermodehelpers are not re-enabled
-before returning. Fix this. And while at it, reword the goto labels so that
-they look more meaningful.
-
-Signed-off-by: Srivatsa S. Bhat <srivatsa.bhat at linux.vnet.ibm.com>
-Signed-off-by: Rafael J. Wysocki <rjw at sisk.pl>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- kernel/power/hibernate.c | 7 ++++---
- 1 file changed, 4 insertions(+), 3 deletions(-)
-
-diff --git a/kernel/power/hibernate.c b/kernel/power/hibernate.c
-index 624538a..7c0d578 100644
---- a/kernel/power/hibernate.c
-+++ b/kernel/power/hibernate.c
-@@ -648,7 +648,7 @@ int hibernate(void)
- /* Allocate memory management structures */
- error = create_basic_memory_bitmaps();
- if (error)
-- goto Exit;
-+ goto Enable_umh;
-
- printk(KERN_INFO "PM: Syncing filesystems ... ");
- sys_sync();
-@@ -656,7 +656,7 @@ int hibernate(void)
-
- error = prepare_processes();
- if (error)
-- goto Finish;
-+ goto Free_bitmaps;
-
- error = hibernation_snapshot(hibernation_mode == HIBERNATION_PLATFORM);
- if (error)
-@@ -689,8 +689,9 @@ int hibernate(void)
-
- Thaw:
- thaw_processes();
-- Finish:
-+ Free_bitmaps:
- free_basic_memory_bitmaps();
-+ Enable_umh:
- usermodehelper_enable();
- Exit:
- pm_notifier_call_chain(PM_POST_HIBERNATION);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0107-jbd2-clear-BH_Delay-BH_Unwritten-in-journal_unmap_bu.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0107-jbd2-clear-BH_Delay-BH_Unwritten-in-journal_unmap_bu.patch
deleted file mode 100644
index f105047..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0107-jbd2-clear-BH_Delay-BH_Unwritten-in-journal_unmap_bu.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From aa127d5abf17393b4f75c53be45124307b230542 Mon Sep 17 00:00:00 2001
-From: Eric Sandeen <sandeen at redhat.com>
-Date: Mon, 20 Feb 2012 17:53:01 -0500
-Subject: [PATCH 107/147] jbd2: clear BH_Delay & BH_Unwritten in
- journal_unmap_buffer
-
-commit 15291164b22a357cb211b618adfef4fa82fc0de3 upstream.
-
-journal_unmap_buffer()'s zap_buffer: code clears a lot of buffer head
-state ala discard_buffer(), but does not touch _Delay or _Unwritten as
-discard_buffer() does.
-
-This can be problematic in some areas of the ext4 code which assume
-that if they have found a buffer marked unwritten or delay, then it's
-a live one. Perhaps those spots should check whether it is mapped
-as well, but if jbd2 is going to tear down a buffer, let's really
-tear it down completely.
-
-Without this I get some fsx failures on sub-page-block filesystems
-up until v3.2, at which point 4e96b2dbbf1d7e81f22047a50f862555a6cb87cb
-and 189e868fa8fdca702eb9db9d8afc46b5cb9144c9 make the failures go
-away, because buried within that large change is some more flag
-clearing. I still think it's worth doing in jbd2, since
-->invalidatepage leads here directly, and it's the right place
-to clear away these flags.
-
-Signed-off-by: Eric Sandeen <sandeen at redhat.com>
-Signed-off-by: "Theodore Ts'o" <tytso at mit.edu>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/jbd2/transaction.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/fs/jbd2/transaction.c b/fs/jbd2/transaction.c
-index a0e41a4..8267de5 100644
---- a/fs/jbd2/transaction.c
-+++ b/fs/jbd2/transaction.c
-@@ -1948,6 +1948,8 @@ zap_buffer_unlocked:
- clear_buffer_mapped(bh);
- clear_buffer_req(bh);
- clear_buffer_new(bh);
-+ clear_buffer_delay(bh);
-+ clear_buffer_unwritten(bh);
- bh->b_bdev = NULL;
- return may_free;
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0108-ext4-ignore-EXT4_INODE_JOURNAL_DATA-flag-with-delall.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0108-ext4-ignore-EXT4_INODE_JOURNAL_DATA-flag-with-delall.patch
deleted file mode 100644
index 3837be5..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0108-ext4-ignore-EXT4_INODE_JOURNAL_DATA-flag-with-delall.patch
+++ /dev/null
@@ -1,194 +0,0 @@
-From 9a02204e0d49b5a0717822d1919f90768cef64ff Mon Sep 17 00:00:00 2001
-From: Lukas Czerner <lczerner at redhat.com>
-Date: Mon, 20 Feb 2012 17:53:00 -0500
-Subject: [PATCH 108/147] ext4: ignore EXT4_INODE_JOURNAL_DATA flag with
- delalloc
-
-commit 3d2b158262826e8b75bbbfb7b97010838dd92ac7 upstream.
-
-Ext4 does not support data journalling with delayed allocation enabled.
-We even do not allow to mount the file system with delayed allocation
-and data journalling enabled, however it can be set via FS_IOC_SETFLAGS
-so we can hit the inode with EXT4_INODE_JOURNAL_DATA set even on file
-system mounted with delayed allocation (default) and that's where
-problem arises. The easies way to reproduce this problem is with the
-following set of commands:
-
- mkfs.ext4 /dev/sdd
- mount /dev/sdd /mnt/test1
- dd if=/dev/zero of=/mnt/test1/file bs=1M count=4
- chattr +j /mnt/test1/file
- dd if=/dev/zero of=/mnt/test1/file bs=1M count=4 conv=notrunc
- chattr -j /mnt/test1/file
-
-Additionally it can be reproduced quite reliably with xfstests 272 and
-269. In fact the above reproducer is a part of test 272.
-
-To fix this we should ignore the EXT4_INODE_JOURNAL_DATA inode flag if
-the file system is mounted with delayed allocation. This can be easily
-done by fixing ext4_should_*_data() functions do ignore data journal
-flag when delalloc is set (suggested by Ted). We also have to set the
-appropriate address space operations for the inode (again, ignoring data
-journal flag if delalloc enabled).
-
-Additionally this commit introduces ext4_inode_journal_mode() function
-because ext4_should_*_data() has already had a lot of common code and
-this change is putting it all into one function so it is easier to
-read.
-
-Successfully tested with xfstests in following configurations:
-
-delalloc + data=ordered
-delalloc + data=writeback
-data=journal
-nodelalloc + data=ordered
-nodelalloc + data=writeback
-nodelalloc + data=journal
-
-Signed-off-by: Lukas Czerner <lczerner at redhat.com>
-Signed-off-by: "Theodore Ts'o" <tytso at mit.edu>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/ext4/ext4_jbd2.h | 56 ++++++++++++++++++++++++++-------------------------
- fs/ext4/inode.c | 36 ++++++++++++++++++++-------------
- 2 files changed, 51 insertions(+), 41 deletions(-)
-
-diff --git a/fs/ext4/ext4_jbd2.h b/fs/ext4/ext4_jbd2.h
-index 5802fa1..95af6f8 100644
---- a/fs/ext4/ext4_jbd2.h
-+++ b/fs/ext4/ext4_jbd2.h
-@@ -261,43 +261,45 @@ static inline void ext4_update_inode_fsync_trans(handle_t *handle,
- /* super.c */
- int ext4_force_commit(struct super_block *sb);
-
--static inline int ext4_should_journal_data(struct inode *inode)
-+/*
-+ * Ext4 inode journal modes
-+ */
-+#define EXT4_INODE_JOURNAL_DATA_MODE 0x01 /* journal data mode */
-+#define EXT4_INODE_ORDERED_DATA_MODE 0x02 /* ordered data mode */
-+#define EXT4_INODE_WRITEBACK_DATA_MODE 0x04 /* writeback data mode */
-+
-+static inline int ext4_inode_journal_mode(struct inode *inode)
- {
- if (EXT4_JOURNAL(inode) == NULL)
-- return 0;
-- if (!S_ISREG(inode->i_mode))
-- return 1;
-- if (test_opt(inode->i_sb, DATA_FLAGS) == EXT4_MOUNT_JOURNAL_DATA)
-- return 1;
-- if (ext4_test_inode_flag(inode, EXT4_INODE_JOURNAL_DATA))
-- return 1;
-- return 0;
-+ return EXT4_INODE_WRITEBACK_DATA_MODE; /* writeback */
-+ /* We do not support data journalling with delayed allocation */
-+ if (!S_ISREG(inode->i_mode) ||
-+ test_opt(inode->i_sb, DATA_FLAGS) == EXT4_MOUNT_JOURNAL_DATA)
-+ return EXT4_INODE_JOURNAL_DATA_MODE; /* journal data */
-+ if (ext4_test_inode_flag(inode, EXT4_INODE_JOURNAL_DATA) &&
-+ !test_opt(inode->i_sb, DELALLOC))
-+ return EXT4_INODE_JOURNAL_DATA_MODE; /* journal data */
-+ if (test_opt(inode->i_sb, DATA_FLAGS) == EXT4_MOUNT_ORDERED_DATA)
-+ return EXT4_INODE_ORDERED_DATA_MODE; /* ordered */
-+ if (test_opt(inode->i_sb, DATA_FLAGS) == EXT4_MOUNT_WRITEBACK_DATA)
-+ return EXT4_INODE_WRITEBACK_DATA_MODE; /* writeback */
-+ else
-+ BUG();
-+}
-+
-+static inline int ext4_should_journal_data(struct inode *inode)
-+{
-+ return ext4_inode_journal_mode(inode) & EXT4_INODE_JOURNAL_DATA_MODE;
- }
-
- static inline int ext4_should_order_data(struct inode *inode)
- {
-- if (EXT4_JOURNAL(inode) == NULL)
-- return 0;
-- if (!S_ISREG(inode->i_mode))
-- return 0;
-- if (ext4_test_inode_flag(inode, EXT4_INODE_JOURNAL_DATA))
-- return 0;
-- if (test_opt(inode->i_sb, DATA_FLAGS) == EXT4_MOUNT_ORDERED_DATA)
-- return 1;
-- return 0;
-+ return ext4_inode_journal_mode(inode) & EXT4_INODE_ORDERED_DATA_MODE;
- }
-
- static inline int ext4_should_writeback_data(struct inode *inode)
- {
-- if (EXT4_JOURNAL(inode) == NULL)
-- return 1;
-- if (!S_ISREG(inode->i_mode))
-- return 0;
-- if (ext4_test_inode_flag(inode, EXT4_INODE_JOURNAL_DATA))
-- return 0;
-- if (test_opt(inode->i_sb, DATA_FLAGS) == EXT4_MOUNT_WRITEBACK_DATA)
-- return 1;
-- return 0;
-+ return ext4_inode_journal_mode(inode) & EXT4_INODE_WRITEBACK_DATA_MODE;
- }
-
- /*
-diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
-index 9df447f..fbd2ea4 100644
---- a/fs/ext4/inode.c
-+++ b/fs/ext4/inode.c
-@@ -2480,13 +2480,14 @@ static int ext4_da_write_end(struct file *file,
- int write_mode = (int)(unsigned long)fsdata;
-
- if (write_mode == FALL_BACK_TO_NONDELALLOC) {
-- if (ext4_should_order_data(inode)) {
-+ switch (ext4_inode_journal_mode(inode)) {
-+ case EXT4_INODE_ORDERED_DATA_MODE:
- return ext4_ordered_write_end(file, mapping, pos,
- len, copied, page, fsdata);
-- } else if (ext4_should_writeback_data(inode)) {
-+ case EXT4_INODE_WRITEBACK_DATA_MODE:
- return ext4_writeback_write_end(file, mapping, pos,
- len, copied, page, fsdata);
-- } else {
-+ default:
- BUG();
- }
- }
-@@ -3084,18 +3085,25 @@ static const struct address_space_operations ext4_da_aops = {
-
- void ext4_set_aops(struct inode *inode)
- {
-- if (ext4_should_order_data(inode) &&
-- test_opt(inode->i_sb, DELALLOC))
-- inode->i_mapping->a_ops = &ext4_da_aops;
-- else if (ext4_should_order_data(inode))
-- inode->i_mapping->a_ops = &ext4_ordered_aops;
-- else if (ext4_should_writeback_data(inode) &&
-- test_opt(inode->i_sb, DELALLOC))
-- inode->i_mapping->a_ops = &ext4_da_aops;
-- else if (ext4_should_writeback_data(inode))
-- inode->i_mapping->a_ops = &ext4_writeback_aops;
-- else
-+ switch (ext4_inode_journal_mode(inode)) {
-+ case EXT4_INODE_ORDERED_DATA_MODE:
-+ if (test_opt(inode->i_sb, DELALLOC))
-+ inode->i_mapping->a_ops = &ext4_da_aops;
-+ else
-+ inode->i_mapping->a_ops = &ext4_ordered_aops;
-+ break;
-+ case EXT4_INODE_WRITEBACK_DATA_MODE:
-+ if (test_opt(inode->i_sb, DELALLOC))
-+ inode->i_mapping->a_ops = &ext4_da_aops;
-+ else
-+ inode->i_mapping->a_ops = &ext4_writeback_aops;
-+ break;
-+ case EXT4_INODE_JOURNAL_DATA_MODE:
- inode->i_mapping->a_ops = &ext4_journalled_aops;
-+ break;
-+ default:
-+ BUG();
-+ }
- }
-
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0109-ext4-fix-race-between-unwritten-extent-conversion-an.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0109-ext4-fix-race-between-unwritten-extent-conversion-an.patch
deleted file mode 100644
index 7dd5d50..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0109-ext4-fix-race-between-unwritten-extent-conversion-an.patch
+++ /dev/null
@@ -1,90 +0,0 @@
-From 650bb7d911ba40c634964921badb10e175276089 Mon Sep 17 00:00:00 2001
-From: Jeff Moyer <jmoyer at redhat.com>
-Date: Mon, 20 Feb 2012 17:59:24 -0500
-Subject: [PATCH 109/147] ext4: fix race between unwritten extent conversion
- and truncate
-
-commit 266991b13890049ee1a6bb95b9817f06339ee3d7 upstream.
-
-The following comment in ext4_end_io_dio caught my attention:
-
- /* XXX: probably should move into the real I/O completion handler */
- inode_dio_done(inode);
-
-The truncate code takes i_mutex, then calls inode_dio_wait. Because the
-ext4 code path above will end up dropping the mutex before it is
-reacquired by the worker thread that does the extent conversion, it
-seems to me that the truncate can happen out of order. Jan Kara
-mentioned that this might result in error messages in the system logs,
-but that should be the extent of the "damage."
-
-The fix is pretty straight-forward: don't call inode_dio_done until the
-extent conversion is complete.
-
-Reviewed-by: Jan Kara <jack at suse.cz>
-Signed-off-by: Jeff Moyer <jmoyer at redhat.com>
-Signed-off-by: "Theodore Ts'o" <tytso at mit.edu>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/ext4/ext4.h | 1 +
- fs/ext4/inode.c | 10 +++++-----
- fs/ext4/page-io.c | 2 ++
- 3 files changed, 8 insertions(+), 5 deletions(-)
-
-diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h
-index 5b0e26a..655d942 100644
---- a/fs/ext4/ext4.h
-+++ b/fs/ext4/ext4.h
-@@ -184,6 +184,7 @@ struct mpage_da_data {
- #define EXT4_IO_END_UNWRITTEN 0x0001
- #define EXT4_IO_END_ERROR 0x0002
- #define EXT4_IO_END_QUEUED 0x0004
-+#define EXT4_IO_END_DIRECT 0x0008
-
- struct ext4_io_page {
- struct page *p_page;
-diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
-index fbd2ea4..d0dc109 100644
---- a/fs/ext4/inode.c
-+++ b/fs/ext4/inode.c
-@@ -2794,9 +2794,6 @@ out:
-
- /* queue the work to convert unwritten extents to written */
- queue_work(wq, &io_end->work);
--
-- /* XXX: probably should move into the real I/O completion handler */
-- inode_dio_done(inode);
- }
-
- static void ext4_end_io_buffer_write(struct buffer_head *bh, int uptodate)
-@@ -2920,9 +2917,12 @@ static ssize_t ext4_ext_direct_IO(int rw, struct kiocb *iocb,
- iocb->private = NULL;
- EXT4_I(inode)->cur_aio_dio = NULL;
- if (!is_sync_kiocb(iocb)) {
-- iocb->private = ext4_init_io_end(inode, GFP_NOFS);
-- if (!iocb->private)
-+ ext4_io_end_t *io_end =
-+ ext4_init_io_end(inode, GFP_NOFS);
-+ if (!io_end)
- return -ENOMEM;
-+ io_end->flag |= EXT4_IO_END_DIRECT;
-+ iocb->private = io_end;
- /*
- * we save the io structure for current async
- * direct IO, so that later ext4_map_blocks()
-diff --git a/fs/ext4/page-io.c b/fs/ext4/page-io.c
-index 7e106c8..924298a 100644
---- a/fs/ext4/page-io.c
-+++ b/fs/ext4/page-io.c
-@@ -111,6 +111,8 @@ int ext4_end_io_nolock(ext4_io_end_t *io)
- if (io->iocb)
- aio_complete(io->iocb, io->result, 0);
-
-+ if (io->flag & EXT4_IO_END_DIRECT)
-+ inode_dio_done(inode);
- /* Wake up anyone waiting on unwritten extent conversion */
- if (atomic_dec_and_test(&EXT4_I(inode)->i_aiodio_unwritten))
- wake_up_all(ext4_ioend_wq(io->inode));
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0110-ext4-fix-race-between-sync-and-completed-io-work.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0110-ext4-fix-race-between-sync-and-completed-io-work.patch
deleted file mode 100644
index fa0f39e..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0110-ext4-fix-race-between-sync-and-completed-io-work.patch
+++ /dev/null
@@ -1,119 +0,0 @@
-From 4eb9698d0d2e5fb6c0cd910ed3e86154b4d1ea92 Mon Sep 17 00:00:00 2001
-From: Jeff Moyer <jmoyer at redhat.com>
-Date: Mon, 5 Mar 2012 10:29:52 -0500
-Subject: [PATCH 110/147] ext4: fix race between sync and completed io work
-
-commit 491caa43639abcffaa645fbab372a7ef4ce2975c upstream.
-
-The following command line will leave the aio-stress process unkillable
-on an ext4 file system (in my case, mounted on /mnt/test):
-
-aio-stress -t 20 -s 10 -O -S -o 2 -I 1000 /mnt/test/aiostress.3561.4 /mnt/test/aiostress.3561.4.20 /mnt/test/aiostress.3561.4.19 /mnt/test/aiostress.3561.4.18 /mnt/test/aiostress.3561.4.17 /mnt/test/aiostress.3561.4.16 /mnt/test/aiostress.3561.4.15 /mnt/test/aiostress.3561.4.14 /mnt/test/aiostress.3561.4.13 /mnt/test/aiostress.3561.4.12 /mnt/test/aiostress.3561.4.11 /mnt/test/aiostress.3561.4.10 /mnt/test/aiostress.3561.4.9 /mnt/test/aiostress.3561.4.8 /mnt/test/aiostress.3561.4.7 /mnt/test/aiostress.3561.4.6 /mnt/test/aiostress.3561.4.5 /mnt/test/aiostress.3561.4.4 /mnt/test/aiostress.3561.4.3 /mnt/test/aiostress.3561.4.2
-
-This is using the aio-stress program from the xfstests test suite.
-That particular command line tells aio-stress to do random writes to
-20 files from 20 threads (one thread per file). The files are NOT
-preallocated, so you will get writes to random offsets within the
-file, thus creating holes and extending i_size. It also opens the
-file with O_DIRECT and O_SYNC.
-
-On to the problem. When an I/O requires unwritten extent conversion,
-it is queued onto the completed_io_list for the ext4 inode. Two code
-paths will pull work items from this list. The first is the
-ext4_end_io_work routine, and the second is ext4_flush_completed_IO,
-which is called via the fsync path (and O_SYNC handling, as well).
-There are two issues I've found in these code paths. First, if the
-fsync path beats the work routine to a particular I/O, the work
-routine will free the io_end structure! It does not take into account
-the fact that the io_end may still be in use by the fsync path. I've
-fixed this issue by adding yet another IO_END flag, indicating that
-the io_end is being processed by the fsync path.
-
-The second problem is that the work routine will make an assignment to
-io->flag outside of the lock. I have witnessed this result in a hang
-at umount. Moving the flag setting inside the lock resolved that
-problem.
-
-The problem was introduced by commit b82e384c7b ("ext4: optimize
-locking for end_io extent conversion"), which first appeared in 3.2.
-As such, the fix should be backported to that release (probably along
-with the unwritten extent conversion race fix).
-
-Signed-off-by: Jeff Moyer <jmoyer at redhat.com>
-Signed-off-by: "Theodore Ts'o" <tytso at mit.edu>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/ext4/ext4.h | 1 +
- fs/ext4/fsync.c | 2 ++
- fs/ext4/page-io.c | 9 +++++++--
- 3 files changed, 10 insertions(+), 2 deletions(-)
-
-diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h
-index 655d942..dbae4d9 100644
---- a/fs/ext4/ext4.h
-+++ b/fs/ext4/ext4.h
-@@ -185,6 +185,7 @@ struct mpage_da_data {
- #define EXT4_IO_END_ERROR 0x0002
- #define EXT4_IO_END_QUEUED 0x0004
- #define EXT4_IO_END_DIRECT 0x0008
-+#define EXT4_IO_END_IN_FSYNC 0x0010
-
- struct ext4_io_page {
- struct page *p_page;
-diff --git a/fs/ext4/fsync.c b/fs/ext4/fsync.c
-index 00a2cb7..bb6c7d8 100644
---- a/fs/ext4/fsync.c
-+++ b/fs/ext4/fsync.c
-@@ -89,6 +89,7 @@ int ext4_flush_completed_IO(struct inode *inode)
- io = list_entry(ei->i_completed_io_list.next,
- ext4_io_end_t, list);
- list_del_init(&io->list);
-+ io->flag |= EXT4_IO_END_IN_FSYNC;
- /*
- * Calling ext4_end_io_nolock() to convert completed
- * IO to written.
-@@ -108,6 +109,7 @@ int ext4_flush_completed_IO(struct inode *inode)
- if (ret < 0)
- ret2 = ret;
- spin_lock_irqsave(&ei->i_completed_io_lock, flags);
-+ io->flag &= ~EXT4_IO_END_IN_FSYNC;
- }
- spin_unlock_irqrestore(&ei->i_completed_io_lock, flags);
- return (ret2 < 0) ? ret2 : 0;
-diff --git a/fs/ext4/page-io.c b/fs/ext4/page-io.c
-index 924298a..24feb1c 100644
---- a/fs/ext4/page-io.c
-+++ b/fs/ext4/page-io.c
-@@ -130,12 +130,18 @@ static void ext4_end_io_work(struct work_struct *work)
- unsigned long flags;
-
- spin_lock_irqsave(&ei->i_completed_io_lock, flags);
-+ if (io->flag & EXT4_IO_END_IN_FSYNC)
-+ goto requeue;
- if (list_empty(&io->list)) {
- spin_unlock_irqrestore(&ei->i_completed_io_lock, flags);
- goto free;
- }
-
- if (!mutex_trylock(&inode->i_mutex)) {
-+ bool was_queued;
-+requeue:
-+ was_queued = !!(io->flag & EXT4_IO_END_QUEUED);
-+ io->flag |= EXT4_IO_END_QUEUED;
- spin_unlock_irqrestore(&ei->i_completed_io_lock, flags);
- /*
- * Requeue the work instead of waiting so that the work
-@@ -148,9 +154,8 @@ static void ext4_end_io_work(struct work_struct *work)
- * yield the cpu if it sees an end_io request that has already
- * been requeued.
- */
-- if (io->flag & EXT4_IO_END_QUEUED)
-+ if (was_queued)
- yield();
-- io->flag |= EXT4_IO_END_QUEUED;
- return;
- }
- list_del_init(&io->list);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0111-ext4-check-for-zero-length-extent.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0111-ext4-check-for-zero-length-extent.patch
deleted file mode 100644
index 4a83f03..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0111-ext4-check-for-zero-length-extent.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 3a71b922c02de36168d14ec55a97582f3fec2e07 Mon Sep 17 00:00:00 2001
-From: Theodore Ts'o <tytso at mit.edu>
-Date: Sun, 11 Mar 2012 23:30:16 -0400
-Subject: [PATCH 111/147] ext4: check for zero length extent
-
-commit 31d4f3a2f3c73f279ff96a7135d7202ef6833f12 upstream.
-
-Explicitly test for an extent whose length is zero, and flag that as a
-corrupted extent.
-
-This avoids a kernel BUG_ON assertion failure.
-
-Tested: Without this patch, the file system image found in
-tests/f_ext_zero_len/image.gz in the latest e2fsprogs sources causes a
-kernel panic. With this patch, an ext4 file system error is noted
-instead, and the file system is marked as being corrupted.
-
-https://bugzilla.kernel.org/show_bug.cgi?id=42859
-
-Signed-off-by: "Theodore Ts'o" <tytso at mit.edu>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/ext4/extents.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c
-index 607b155..7507036 100644
---- a/fs/ext4/extents.c
-+++ b/fs/ext4/extents.c
-@@ -301,6 +301,8 @@ static int ext4_valid_extent(struct inode *inode, struct ext4_extent *ext)
- ext4_fsblk_t block = ext4_ext_pblock(ext);
- int len = ext4_ext_get_actual_len(ext);
-
-+ if (len == 0)
-+ return 0;
- return ext4_data_block_valid(EXT4_SB(inode->i_sb), block, len);
- }
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0112-vfs-fix-d_ancestor-case-in-d_materialize_unique.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0112-vfs-fix-d_ancestor-case-in-d_materialize_unique.patch
deleted file mode 100644
index 333e3bd..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0112-vfs-fix-d_ancestor-case-in-d_materialize_unique.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From 1287e09097b8199407c64d26e9a3ce1a1b25da74 Mon Sep 17 00:00:00 2001
-From: Michel Lespinasse <walken at google.com>
-Date: Mon, 26 Mar 2012 17:32:44 -0700
-Subject: [PATCH 112/147] vfs: fix d_ancestor() case in d_materialize_unique
-
-commit b18dafc86bb879d2f38a1743985d7ceb283c2f4d upstream.
-
-In d_materialise_unique() there are 3 subcases to the 'aliased dentry'
-case; in two subcases the inode i_lock is properly released but this
-does not occur in the -ELOOP subcase.
-
-This seems to have been introduced by commit 1836750115f2 ("fix loop
-checks in d_materialise_unique()").
-
-Signed-off-by: Michel Lespinasse <walken at google.com>
-[ Added a comment, and moved the unlock to where we generate the -ELOOP,
- which seems to be more natural.
-
- You probably can't actually trigger this without a buggy network file
- server - d_materialize_unique() is for finding aliases on non-local
- filesystems, and the d_ancestor() case is for a hardlinked directory
- loop.
-
- But we should be robust in the case of such buggy servers anyway. ]
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/dcache.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/fs/dcache.c b/fs/dcache.c
-index f7908ae..eb723d3 100644
---- a/fs/dcache.c
-+++ b/fs/dcache.c
-@@ -2357,6 +2357,7 @@ struct dentry *d_materialise_unique(struct dentry *dentry, struct inode *inode)
- if (d_ancestor(alias, dentry)) {
- /* Check for loops */
- actual = ERR_PTR(-ELOOP);
-+ spin_unlock(&inode->i_lock);
- } else if (IS_ROOT(alias)) {
- /* Is this an anonymous mountpoint that we
- * could splice into our tree? */
-@@ -2366,7 +2367,7 @@ struct dentry *d_materialise_unique(struct dentry *dentry, struct inode *inode)
- goto found;
- } else {
- /* Nope, but we must(!) avoid directory
-- * aliasing */
-+ * aliasing. This drops inode->i_lock */
- actual = __d_unalias(inode, dentry, alias);
- }
- write_sequnlock(&rename_lock);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0113-ARM-tegra-select-required-CPU-and-L2-errata-options.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0113-ARM-tegra-select-required-CPU-and-L2-errata-options.patch
deleted file mode 100644
index 88fa555..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0113-ARM-tegra-select-required-CPU-and-L2-errata-options.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From b125bf4a63e80e83526c1e1f775446078c91374f Mon Sep 17 00:00:00 2001
-From: Stephen Warren <swarren at nvidia.com>
-Date: Tue, 14 Feb 2012 13:39:39 -0700
-Subject: [PATCH 113/147] ARM: tegra: select required CPU and L2 errata
- options
-
-commit f35b431dde39fb40944d1024f08d88fbf04a3193 upstream.
-
-The ARM IP revisions in Tegra are:
-Tegra20: CPU r1p1, PL310 r2p0
-Tegra30: CPU A01=r2p7/>=A02=r2p9, NEON r2p3-50, PL310 r3p1-50
-
-Based on work by Olof Johansson, although the actual list of errata is
-somewhat different here, since I added a bunch more and removed one PL310
-erratum that doesn't seem applicable.
-
-Signed-off-by: Stephen Warren <swarren at nvidia.com>
-Signed-off-by: Olof Johansson <olof at lixom.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/arm/mach-tegra/Kconfig | 12 ++++++++++++
- 1 file changed, 12 insertions(+)
-
-diff --git a/arch/arm/mach-tegra/Kconfig b/arch/arm/mach-tegra/Kconfig
-index 91aff7c..dbc59fa 100644
---- a/arch/arm/mach-tegra/Kconfig
-+++ b/arch/arm/mach-tegra/Kconfig
-@@ -13,6 +13,13 @@ config ARCH_TEGRA_2x_SOC
- select USB_ARCH_HAS_EHCI if USB_SUPPORT
- select USB_ULPI if USB_SUPPORT
- select USB_ULPI_VIEWPORT if USB_SUPPORT
-+ select ARM_ERRATA_720789
-+ select ARM_ERRATA_742230
-+ select ARM_ERRATA_751472
-+ select ARM_ERRATA_754327
-+ select ARM_ERRATA_764369
-+ select PL310_ERRATA_727915 if CACHE_L2X0
-+ select PL310_ERRATA_769419 if CACHE_L2X0
- help
- Support for NVIDIA Tegra AP20 and T20 processors, based on the
- ARM CortexA9MP CPU and the ARM PL310 L2 cache controller
-@@ -54,6 +61,11 @@ config MACH_SEABOARD
- config MACH_TEGRA_DT
- bool "Generic Tegra board (FDT support)"
- select USE_OF
-+ select ARM_ERRATA_743622
-+ select ARM_ERRATA_751472
-+ select ARM_ERRATA_754322
-+ select ARM_ERRATA_764369
-+ select PL310_ERRATA_769419 if CACHE_L2X0
- help
- Support for generic nVidia Tegra boards using Flattened Device Tree
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0114-udf-Fix-deadlock-in-udf_release_file.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0114-udf-Fix-deadlock-in-udf_release_file.patch
deleted file mode 100644
index ae80b76..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0114-udf-Fix-deadlock-in-udf_release_file.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From e812277ff9241a705c2a789f889aab4d1c26c31c Mon Sep 17 00:00:00 2001
-From: Jan Kara <jack at suse.cz>
-Date: Mon, 20 Feb 2012 17:49:56 +0100
-Subject: [PATCH 114/147] udf: Fix deadlock in udf_release_file()
-
-commit a0391a3ae91d301c0e59368531a4de5f0b122bcf upstream.
-
-udf_release_file() can be called from munmap() path with mmap_sem held. Thus
-we cannot take i_mutex there because that ranks above mmap_sem. Luckily,
-i_mutex is not needed in udf_release_file() anymore since protection by
-i_data_sem is enough to protect from races with write and truncate.
-
-Reported-by: Al Viro <viro at ZenIV.linux.org.uk>
-Reviewed-by: Namjae Jeon <linkinjeon at gmail.com>
-Signed-off-by: Jan Kara <jack at suse.cz>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/udf/file.c | 2 --
- 1 file changed, 2 deletions(-)
-
-diff --git a/fs/udf/file.c b/fs/udf/file.c
-index dca0c38..d567b84 100644
---- a/fs/udf/file.c
-+++ b/fs/udf/file.c
-@@ -201,12 +201,10 @@ out:
- static int udf_release_file(struct inode *inode, struct file *filp)
- {
- if (filp->f_mode & FMODE_WRITE) {
-- mutex_lock(&inode->i_mutex);
- down_write(&UDF_I(inode)->i_data_sem);
- udf_discard_prealloc(inode);
- udf_truncate_tail_extent(inode);
- up_write(&UDF_I(inode)->i_data_sem);
-- mutex_unlock(&inode->i_mutex);
- }
- return 0;
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0115-gpio-omap-fix-_set_gpio_irqenable-implementation.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0115-gpio-omap-fix-_set_gpio_irqenable-implementation.patch
deleted file mode 100644
index 03e2035..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0115-gpio-omap-fix-_set_gpio_irqenable-implementation.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 5f5e1bcdbe3347e680007e30b5848a8a3826f68b Mon Sep 17 00:00:00 2001
-From: Tarun Kanti DebBarma <tarun.kanti at ti.com>
-Date: Fri, 25 Nov 2011 15:27:37 +0530
-Subject: [PATCH 115/147] gpio/omap: fix _set_gpio_irqenable implementation
-
-commit 8276536cec38bc6bde30d0aa67716f22b9b9705a upstream.
-
-This function should be capable of both enabling and disabling interrupts
-based upon the *enable* parameter. Right now the function only enables
-the interrupt and *enable* is not used at all. So add the interrupt
-disable capability also using the parameter.
-
-Signed-off-by: Tarun Kanti DebBarma <tarun.kanti at ti.com>
-Reviewed-by: Santosh Shilimkar <santosh.shilimkar at ti.com>
-Acked-by: Felipe Balbi <balbi at ti.com>
-Reviewed-by: Kevin Hilman <khilman at ti.com>
-Signed-off-by: Kevin Hilman <khilman at ti.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/gpio/gpio-omap.c | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/gpio/gpio-omap.c b/drivers/gpio/gpio-omap.c
-index 4b172446..7fe6897 100644
---- a/drivers/gpio/gpio-omap.c
-+++ b/drivers/gpio/gpio-omap.c
-@@ -511,7 +511,10 @@ static void _disable_gpio_irqbank(struct gpio_bank *bank, int gpio_mask)
-
- static inline void _set_gpio_irqenable(struct gpio_bank *bank, int gpio, int enable)
- {
-- _enable_gpio_irqbank(bank, GPIO_BIT(bank, gpio));
-+ if (enable)
-+ _enable_gpio_irqbank(bank, GPIO_BIT(bank, gpio));
-+ else
-+ _disable_gpio_irqbank(bank, GPIO_BIT(bank, gpio));
- }
-
- /*
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0116-gpio-davinci-fix-oops-on-unbanked-gpio-irq-request.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0116-gpio-davinci-fix-oops-on-unbanked-gpio-irq-request.patch
deleted file mode 100644
index a6cd5ec..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0116-gpio-davinci-fix-oops-on-unbanked-gpio-irq-request.patch
+++ /dev/null
@@ -1,152 +0,0 @@
-From e91fedbcc83a758adab48636c9ba73338326a3b7 Mon Sep 17 00:00:00 2001
-From: Sekhar Nori <nsekhar at ti.com>
-Date: Sun, 11 Mar 2012 18:16:11 +0530
-Subject: [PATCH 116/147] gpio/davinci: fix oops on unbanked gpio irq request
-
-commit ab2dde9924dd1ddb791fa8b14aa52e1df681e20c upstream.
-
-Unbanked GPIO irq setup code was overwriting chip_data leading
-to the following oops on request_irq()
-
-Unable to handle kernel paging request at virtual address febfffff
-pgd = c22dc000
-[febfffff] *pgd=00000000
-Internal error: Oops: 801 [#1] PREEMPT
-Modules linked in: mcu(+) edmak irqk cmemk
-CPU: 0 Not tainted (3.0.0-rc7+ #93)
-PC is at irq_gc_mask_set_bit+0x68/0x7c
-LR is at vprintk+0x22c/0x484
-pc : [<c0080c0c>] lr : [<c00457e0>] psr: 60000093
-sp : c33e3ba0 ip : c33e3af0 fp : c33e3bc4
-r10: c04555bc r9 : c33d4340 r8 : 60000013
-r7 : 0000002d r6 : c04555bc r5 : fec67010 r4 : 00000000
-r3 : c04734c8 r2 : fec00000 r1 : ffffffff r0 : 00000026
-Flags: nZCv IRQs off FIQs on Mode SVC_32 ISA ARM Segment user
-Control: 0005317f Table: 822dc000 DAC: 00000015
-Process modprobe (pid: 526, stack limit = 0xc33e2270)
-Stack: (0xc33e3ba0 to 0xc33e4000)
-3ba0: 00000000 c007d3d4 c33e3bcc c04555bc c04555bc c33d4340 c33e3bdc c33e3bc8
-3bc0: c007f5f8 c0080bb4 00000000 c04555bc c33e3bf4 c33e3be0 c007f654 c007f5c0
-3be0: 00000000 c04555bc c33e3c24 c33e3bf8 c007e6e8 c007f618 c01f2284 c0350af8
-3c00: c0405214 bf016c98 00000001 00000000 c33dc008 0000002d c33e3c54 c33e3c28
-3c20: c007e888 c007e408 00000001 c23ef880 c33dc000 00000000 c33dc080 c25caa00
-3c40: c0487498 bf017078 c33e3c94 c33e3c58 bf016b44 c007e7d4 bf017078 c33dc008
-3c60: c25caa08 c33dc008 c33e3c84 bf017484 c25caa00 c25caa00 c01f5f48 c25caa08
-3c80: c0496d60 bf017484 c33e3ca4 c33e3c98 c022a698 bf01692c c33e3cd4 c33e3ca8
-3ca0: c01f5d88 c022a688 00000000 bf017484 c25caa00 c25caa00 c01f5f48 c25caa08
-3cc0: c0496d60 00000000 c33e3cec c33e3cd8 c01f5f8c c01f5d10 00000000 c33e3cf0
-3ce0: c33e3d14 c33e3cf0 c01f5210 c01f5f58 c303cb48 c25ecf94 c25caa00 c25caa00
-3d00: c25caa34 c33e3dd8 c33e3d34 c33e3d18 c01f6044 c01f51b8 c0496d3c c25caa00
-3d20: c044e918 c33e3dd8 c33e3d44 c33e3d38 c01f4ff4 c01f5fcc c33e3d94 c33e3d48
-3d40: c01f3d10 c01f4fd8 00000000 c044e918 00000000 00000000 c01f52c0 c034d570
-3d60: c33e3d84 c33e3d70 c022bf84 c25caa00 00000000 c044e918 c33e3dd8 c25c2e00
-3d80: c0496d60 bf01763c c33e3db4 c33e3d98 c022b1a0 c01f384c c25caa00 c33e3dd8
-3da0: 00000000 c33e3dd8 c33e3dd4 c33e3db8 c022b27c c022b0e8 00000000 bf01763c
-3dc0: c0451c80 c33e3dd8 c33e3e34 c33e3dd8 bf016f60 c022b210 5f75636d 746e6f63
-3de0: 006c6f72 00000000 00000000 00000000 00000000 00000000 00000000 bf0174bc
-3e00: 00000000 00989680 00000000 00000020 c0451c80 c0451c80 bf0174dc c01f5eb0
-3e20: c33f0f00 bf0174dc c33e3e44 c33e3e38 c01f72f4 bf016e2c c33e3e74 c33e3e48
-3e40: c01f5d88 c01f72e4 00000000 c0451c80 c0451cb4 bf0174dc c01f5eb0 c33f0f00
-3e60: c0473100 00000000 c33e3e94 c33e3e78 c01f5f44 c01f5d10 00000000 c33e3e98
-3e80: bf0174dc c01f5eb0 c33e3ebc c33e3e98 c01f5534 c01f5ec0 c303c038 c3061c30
-3ea0: 00003cd8 00098258 bf0174dc c0462ac8 c33e3ecc c33e3ec0 c01f5bec c01f54dc
-3ec0: c33e3efc c33e3ed0 c01f4d30 c01f5bdc bf0173a0 c33e2000 00003cd8 00098258
-3ee0: bf0174dc c33e2000 c00301a4 bf019000 c33e3f1c c33e3f00 c01f6588 c01f4c8c
-3f00: 00003cd8 00098258 00000000 c33e2000 c33e3f2c c33e3f20 c01f777c c01f6524
-3f20: c33e3f3c c33e3f30 bf019014 c01f7740 c33e3f7c c33e3f40 c002f3ec bf019010
-3f40: 00000000 00003cd8 00098258 bf017518 00000000 00003cd8 00098258 bf017518
-3f60: 00000000 c00301a4 c33e2000 00000000 c33e3fa4 c33e3f80 c007b934 c002f3c4
-3f80: c00b307c c00b2f48 00003cd8 00000000 00000003 00000080 00000000 c33e3fa8
-3fa0: c0030020 c007b8b8 00003cd8 00000000 00098288 00003cd8 00098258 00098240
-3fc0: 00003cd8 00000000 00000003 00000080 00098008 00098028 00098288 00000001
-3fe0: be892998 be892988 00013d7c 40178740 60000010 00098288 09089041 00200845
-Backtrace:
-[<c0080ba4>] (irq_gc_mask_set_bit+0x0/0x7c) from [<c007f5f8>] (irq_enable+0x48/0x58)
- r6:c33d4340 r5:c04555bc r4:c04555bc
-[<c007f5b0>] (irq_enable+0x0/0x58) from [<c007f654>] (irq_startup+0x4c/0x54)
- r5:c04555bc r4:00000000
-[<c007f608>] (irq_startup+0x0/0x54) from [<c007e6e8>] (__setup_irq+0x2f0/0x3cc)
- r5:c04555bc r4:00000000
-[<c007e3f8>] (__setup_irq+0x0/0x3cc) from [<c007e888>] (request_threaded_irq+0xc4/0x110)
- r8:0000002d r7:c33dc008 r6:00000000 r5:00000001 r4:bf016c98
-[<c007e7c4>] (request_threaded_irq+0x0/0x110) from [<bf016b44>] (mcu_spi_probe+0x228/0x37c [mcu])
-[<bf01691c>] (mcu_spi_probe+0x0/0x37c [mcu]) from [<c022a698>] (spi_drv_probe+0x20/0x24)
-[<c022a678>] (spi_drv_probe+0x0/0x24) from [<c01f5d88>] (driver_probe_device+0x88/0x1b0)
-[<c01f5d00>] (driver_probe_device+0x0/0x1b0) from [<c01f5f8c>] (__device_attach+0x44/0x48)
-[<c01f5f48>] (__device_attach+0x0/0x48) from [<c01f5210>] (bus_for_each_drv+0x68/0x94)
- r5:c33e3cf0 r4:00000000
-[<c01f51a8>] (bus_for_each_drv+0x0/0x94) from [<c01f6044>] (device_attach+0x88/0xa0)
- r7:c33e3dd8 r6:c25caa34 r5:c25caa00 r4:c25caa00
-[<c01f5fbc>] (device_attach+0x0/0xa0) from [<c01f4ff4>] (bus_probe_device+0x2c/0x4c)
- r7:c33e3dd8 r6:c044e918 r5:c25caa00 r4:c0496d3c
-[<c01f4fc8>] (bus_probe_device+0x0/0x4c) from [<c01f3d10>] (device_add+0x4d4/0x648)
-[<c01f383c>] (device_add+0x0/0x648) from [<c022b1a0>] (spi_add_device+0xc8/0x128)
-[<c022b0d8>] (spi_add_device+0x0/0x128) from [<c022b27c>] (spi_new_device+0x7c/0xb4)
- r7:c33e3dd8 r6:00000000 r5:c33e3dd8 r4:c25caa00
-[<c022b200>] (spi_new_device+0x0/0xb4) from [<bf016f60>] (mcu_probe+0x144/0x224 [mcu])
- r7:c33e3dd8 r6:c0451c80 r5:bf01763c r4:00000000
-[<bf016e1c>] (mcu_probe+0x0/0x224 [mcu]) from [<c01f72f4>] (platform_drv_probe+0x20/0x24)
-[<c01f72d4>] (platform_drv_probe+0x0/0x24) from [<c01f5d88>] (driver_probe_device+0x88/0x1b0)
-[<c01f5d00>] (driver_probe_device+0x0/0x1b0) from [<c01f5f44>] (__driver_attach+0x94/0x98)
-[<c01f5eb0>] (__driver_attach+0x0/0x98) from [<c01f5534>] (bus_for_each_dev+0x68/0x94)
- r7:c01f5eb0 r6:bf0174dc r5:c33e3e98 r4:00000000
-[<c01f54cc>] (bus_for_each_dev+0x0/0x94) from [<c01f5bec>] (driver_attach+0x20/0x28)
- r7:c0462ac8 r6:bf0174dc r5:00098258 r4:00003cd8
-[<c01f5bcc>] (driver_attach+0x0/0x28) from [<c01f4d30>] (bus_add_driver+0xb4/0x258)
-[<c01f4c7c>] (bus_add_driver+0x0/0x258) from [<c01f6588>] (driver_register+0x74/0x158)
-[<c01f6514>] (driver_register+0x0/0x158) from [<c01f777c>] (platform_driver_register+0x4c/0x60)
- r7:c33e2000 r6:00000000 r5:00098258 r4:00003cd8
-[<c01f7730>] (platform_driver_register+0x0/0x60) from [<bf019014>] (mcu_init+0x14/0x20 [mcu])
-[<bf019000>] (mcu_init+0x0/0x20 [mcu]) from [<c002f3ec>] (do_one_initcall+0x38/0x170)
-[<c002f3b4>] (do_one_initcall+0x0/0x170) from [<c007b934>] (sys_init_module+0x8c/0x1a4)
-[<c007b8a8>] (sys_init_module+0x0/0x1a4) from [<c0030020>] (ret_fast_syscall+0x0/0x2c)
- r7:00000080 r6:00000003 r5:00000000 r4:00003cd8
-Code: e1844003 e585400c e596300c e5932064 (e7814002)
-
-Fix the issue.
-
-Reported-by: Jon Povey <Jon.Povey at racelogic.co.uk>
-Signed-off-by: Sekhar Nori <nsekhar at ti.com>
-Signed-off-by: Grant Likely <grant.likely at secretlab.ca>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/gpio/gpio-davinci.c | 15 ++++++++++-----
- 1 file changed, 10 insertions(+), 5 deletions(-)
-
-diff --git a/drivers/gpio/gpio-davinci.c b/drivers/gpio/gpio-davinci.c
-index df0d595..a6777e5 100644
---- a/drivers/gpio/gpio-davinci.c
-+++ b/drivers/gpio/gpio-davinci.c
-@@ -313,10 +313,16 @@ static int gpio_to_irq_unbanked(struct gpio_chip *chip, unsigned offset)
- return -ENODEV;
- }
-
--static int gpio_irq_type_unbanked(struct irq_data *d, unsigned trigger)
-+static int gpio_irq_type_unbanked(struct irq_data *data, unsigned trigger)
- {
-- struct davinci_gpio_regs __iomem *g = irq2regs(d->irq);
-- u32 mask = (u32) irq_data_get_irq_handler_data(d);
-+ struct davinci_gpio_controller *d;
-+ struct davinci_gpio_regs __iomem *g;
-+ struct davinci_soc_info *soc_info = &davinci_soc_info;
-+ u32 mask;
-+
-+ d = (struct davinci_gpio_controller *)data->handler_data;
-+ g = (struct davinci_gpio_regs __iomem *)d->regs;
-+ mask = __gpio_mask(data->irq - soc_info->gpio_irq);
-
- if (trigger & ~(IRQ_TYPE_EDGE_FALLING | IRQ_TYPE_EDGE_RISING))
- return -EINVAL;
-@@ -400,8 +406,7 @@ static int __init davinci_gpio_irq_setup(void)
- /* set the direct IRQs up to use that irqchip */
- for (gpio = 0; gpio < soc_info->gpio_unbanked; gpio++, irq++) {
- irq_set_chip(irq, &gpio_irqchip_unbanked);
-- irq_set_handler_data(irq, (void *)__gpio_mask(gpio));
-- irq_set_chip_data(irq, (__force void *)g);
-+ irq_set_handler_data(irq, &chips[gpio / 32]);
- irq_set_status_flags(irq, IRQ_TYPE_EDGE_BOTH);
- }
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0117-gpio-davinci-fix-enabling-unbanked-GPIO-IRQs.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0117-gpio-davinci-fix-enabling-unbanked-GPIO-IRQs.patch
deleted file mode 100644
index 2a1370e..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0117-gpio-davinci-fix-enabling-unbanked-GPIO-IRQs.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-From a61e7db31913671e7951ed217dc0012f8578c977 Mon Sep 17 00:00:00 2001
-From: Sekhar Nori <nsekhar at ti.com>
-Date: Sun, 11 Mar 2012 18:16:12 +0530
-Subject: [PATCH 117/147] gpio/davinci: fix enabling unbanked GPIO IRQs
-
-commit 81b279d80a63628e580c71a31d30a8c3b3047ad4 upstream.
-
-Unbanked GPIO IRQ handling code made a copy of just
-the irq_chip structure for GPIO IRQ lines which caused
-problems after the generic IRQ chip conversion because
-there was no valid irq_chip_type structure with the
-right "regs" populated. irq_gc_mask_set_bit() was
-therefore accessing random addresses.
-
-Fix it by making a copy of irq_chip_type structure
-instead. This will ensure sane register offsets.
-
-Reported-by: Jon Povey <Jon.Povey at racelogic.co.uk>
-Tested-by: Jon Povey <Jon.Povey at racelogic.co.uk>
-Signed-off-by: Sekhar Nori <nsekhar at ti.com>
-Signed-off-by: Grant Likely <grant.likely at secretlab.ca>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/gpio/gpio-davinci.c | 11 ++++++-----
- 1 file changed, 6 insertions(+), 5 deletions(-)
-
-diff --git a/drivers/gpio/gpio-davinci.c b/drivers/gpio/gpio-davinci.c
-index a6777e5..3d00016 100644
---- a/drivers/gpio/gpio-davinci.c
-+++ b/drivers/gpio/gpio-davinci.c
-@@ -386,7 +386,7 @@ static int __init davinci_gpio_irq_setup(void)
- * IRQ mux conflicts; gpio_irq_type_unbanked() is only for GPIOs.
- */
- if (soc_info->gpio_unbanked) {
-- static struct irq_chip gpio_irqchip_unbanked;
-+ static struct irq_chip_type gpio_unbanked;
-
- /* pass "bank 0" GPIO IRQs to AINTC */
- chips[0].chip.to_irq = gpio_to_irq_unbanked;
-@@ -394,9 +394,10 @@ static int __init davinci_gpio_irq_setup(void)
-
- /* AINTC handles mask/unmask; GPIO handles triggering */
- irq = bank_irq;
-- gpio_irqchip_unbanked = *irq_get_chip(irq);
-- gpio_irqchip_unbanked.name = "GPIO-AINTC";
-- gpio_irqchip_unbanked.irq_set_type = gpio_irq_type_unbanked;
-+ gpio_unbanked = *container_of(irq_get_chip(irq),
-+ struct irq_chip_type, chip);
-+ gpio_unbanked.chip.name = "GPIO-AINTC";
-+ gpio_unbanked.chip.irq_set_type = gpio_irq_type_unbanked;
-
- /* default trigger: both edges */
- g = gpio2regs(0);
-@@ -405,7 +406,7 @@ static int __init davinci_gpio_irq_setup(void)
-
- /* set the direct IRQs up to use that irqchip */
- for (gpio = 0; gpio < soc_info->gpio_unbanked; gpio++, irq++) {
-- irq_set_chip(irq, &gpio_irqchip_unbanked);
-+ irq_set_chip(irq, &gpio_unbanked.chip);
- irq_set_handler_data(irq, &chips[gpio / 32]);
- irq_set_status_flags(irq, IRQ_TYPE_EDGE_BOTH);
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0118-dm-crypt-fix-mempool-deadlock.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0118-dm-crypt-fix-mempool-deadlock.patch
deleted file mode 100644
index 3f33596..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0118-dm-crypt-fix-mempool-deadlock.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-From 27573d35b38cf9f8b2bb9f1f258bcac632ef4e0e Mon Sep 17 00:00:00 2001
-From: Mikulas Patocka <mpatocka at redhat.com>
-Date: Wed, 28 Mar 2012 18:41:22 +0100
-Subject: [PATCH 118/147] dm crypt: fix mempool deadlock
-
-commit aeb2deae2660a1773c83d3c6e9e6575daa3855d6 upstream.
-
-This patch fixes a possible deadlock in dm-crypt's mempool use.
-
-Currently, dm-crypt reserves a mempool of MIN_BIO_PAGES reserved pages.
-It allocates first MIN_BIO_PAGES with non-failing allocation (the allocation
-cannot fail and waits until the mempool is refilled). Further pages are
-allocated with different gfp flags that allow failing.
-
-Because allocations may be done in parallel, this code can deadlock. Example:
-There are two processes, each tries to allocate MIN_BIO_PAGES and the processes
-run simultaneously.
-It may end up in a situation where each process allocates (MIN_BIO_PAGES / 2)
-pages. The mempool is exhausted. Each process waits for more pages to be freed
-to the mempool, which never happens.
-
-To avoid this deadlock scenario, this patch changes the code so that only
-the first page is allocated with non-failing gfp mask. Allocation of further
-pages may fail.
-
-Signed-off-by: Mikulas Patocka <mpatocka at redhat.com>
-Signed-off-by: Milan Broz <mbroz at redhat.com>
-Signed-off-by: Alasdair G Kergon <agk at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/md/dm-crypt.c | 10 ++++------
- 1 file changed, 4 insertions(+), 6 deletions(-)
-
-diff --git a/drivers/md/dm-crypt.c b/drivers/md/dm-crypt.c
-index 8c2a000..c75d947 100644
---- a/drivers/md/dm-crypt.c
-+++ b/drivers/md/dm-crypt.c
-@@ -176,7 +176,6 @@ struct crypt_config {
-
- #define MIN_IOS 16
- #define MIN_POOL_PAGES 32
--#define MIN_BIO_PAGES 8
-
- static struct kmem_cache *_crypt_io_pool;
-
-@@ -848,12 +847,11 @@ static struct bio *crypt_alloc_buffer(struct dm_crypt_io *io, unsigned size,
- }
-
- /*
-- * if additional pages cannot be allocated without waiting,
-- * return a partially allocated bio, the caller will then try
-- * to allocate additional bios while submitting this partial bio
-+ * If additional pages cannot be allocated without waiting,
-+ * return a partially-allocated bio. The caller will then try
-+ * to allocate more bios while submitting this partial bio.
- */
-- if (i == (MIN_BIO_PAGES - 1))
-- gfp_mask = (gfp_mask | __GFP_NOWARN) & ~__GFP_WAIT;
-+ gfp_mask = (gfp_mask | __GFP_NOWARN) & ~__GFP_WAIT;
-
- len = (size > PAGE_SIZE) ? PAGE_SIZE : size;
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0119-dm-crypt-add-missing-error-handling.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0119-dm-crypt-add-missing-error-handling.patch
deleted file mode 100644
index c2dfbf3..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0119-dm-crypt-add-missing-error-handling.patch
+++ /dev/null
@@ -1,116 +0,0 @@
-From 94b46b475866eb637578cd9302cb047fea4be03b Mon Sep 17 00:00:00 2001
-From: Mikulas Patocka <mpatocka at redhat.com>
-Date: Wed, 28 Mar 2012 18:41:22 +0100
-Subject: [PATCH 119/147] dm crypt: add missing error handling
-
-commit 72c6e7afc43e19f68a31dea204fc366624d6eee9 upstream.
-
-Always set io->error to -EIO when an error is detected in dm-crypt.
-
-There were cases where an error code would be set only if we finish
-processing the last sector. If there were other encryption operations in
-flight, the error would be ignored and bio would be returned with
-success as if no error happened.
-
-This bug is present in kcryptd_crypt_write_convert, kcryptd_crypt_read_convert
-and kcryptd_async_done.
-
-Signed-off-by: Mikulas Patocka <mpatocka at redhat.com>
-Reviewed-by: Milan Broz <mbroz at redhat.com>
-Signed-off-by: Alasdair G Kergon <agk at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/md/dm-crypt.c | 28 ++++++++++++++++------------
- 1 file changed, 16 insertions(+), 12 deletions(-)
-
-diff --git a/drivers/md/dm-crypt.c b/drivers/md/dm-crypt.c
-index c75d947..58d8c6d 100644
---- a/drivers/md/dm-crypt.c
-+++ b/drivers/md/dm-crypt.c
-@@ -1044,16 +1044,14 @@ static void kcryptd_queue_io(struct dm_crypt_io *io)
- queue_work(cc->io_queue, &io->work);
- }
-
--static void kcryptd_crypt_write_io_submit(struct dm_crypt_io *io,
-- int error, int async)
-+static void kcryptd_crypt_write_io_submit(struct dm_crypt_io *io, int async)
- {
- struct bio *clone = io->ctx.bio_out;
- struct crypt_config *cc = io->target->private;
-
-- if (unlikely(error < 0)) {
-+ if (unlikely(io->error < 0)) {
- crypt_free_buffer_pages(cc, clone);
- bio_put(clone);
-- io->error = -EIO;
- crypt_dec_pending(io);
- return;
- }
-@@ -1104,12 +1102,16 @@ static void kcryptd_crypt_write_convert(struct dm_crypt_io *io)
- sector += bio_sectors(clone);
-
- crypt_inc_pending(io);
-+
- r = crypt_convert(cc, &io->ctx);
-+ if (r < 0)
-+ io->error = -EIO;
-+
- crypt_finished = atomic_dec_and_test(&io->ctx.pending);
-
- /* Encryption was already finished, submit io now */
- if (crypt_finished) {
-- kcryptd_crypt_write_io_submit(io, r, 0);
-+ kcryptd_crypt_write_io_submit(io, 0);
-
- /*
- * If there was an error, do not try next fragments.
-@@ -1160,11 +1162,8 @@ static void kcryptd_crypt_write_convert(struct dm_crypt_io *io)
- crypt_dec_pending(io);
- }
-
--static void kcryptd_crypt_read_done(struct dm_crypt_io *io, int error)
-+static void kcryptd_crypt_read_done(struct dm_crypt_io *io)
- {
-- if (unlikely(error < 0))
-- io->error = -EIO;
--
- crypt_dec_pending(io);
- }
-
-@@ -1179,9 +1178,11 @@ static void kcryptd_crypt_read_convert(struct dm_crypt_io *io)
- io->sector);
-
- r = crypt_convert(cc, &io->ctx);
-+ if (r < 0)
-+ io->error = -EIO;
-
- if (atomic_dec_and_test(&io->ctx.pending))
-- kcryptd_crypt_read_done(io, r);
-+ kcryptd_crypt_read_done(io);
-
- crypt_dec_pending(io);
- }
-@@ -1202,15 +1203,18 @@ static void kcryptd_async_done(struct crypto_async_request *async_req,
- if (!error && cc->iv_gen_ops && cc->iv_gen_ops->post)
- error = cc->iv_gen_ops->post(cc, iv_of_dmreq(cc, dmreq), dmreq);
-
-+ if (error < 0)
-+ io->error = -EIO;
-+
- mempool_free(req_of_dmreq(cc, dmreq), cc->req_pool);
-
- if (!atomic_dec_and_test(&ctx->pending))
- return;
-
- if (bio_data_dir(io->base_bio) == READ)
-- kcryptd_crypt_read_done(io, error);
-+ kcryptd_crypt_read_done(io);
- else
-- kcryptd_crypt_write_io_submit(io, error, 1);
-+ kcryptd_crypt_write_io_submit(io, 1);
- }
-
- static void kcryptd_crypt(struct work_struct *work)
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0120-dm-exception-store-fix-init-error-path.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0120-dm-exception-store-fix-init-error-path.patch
deleted file mode 100644
index 5bb414b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0120-dm-exception-store-fix-init-error-path.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 24d0229ad2f723a746bbc36919b87e15a239075f Mon Sep 17 00:00:00 2001
-From: Andrei Warkentin <andrey.warkentin at gmail.com>
-Date: Wed, 28 Mar 2012 18:41:22 +0100
-Subject: [PATCH 120/147] dm exception store: fix init error path
-
-commit aadbe266f2f89ccc68b52f4effc7b3a8b29521ef upstream.
-
-Call the correct exit function on failure in dm_exception_store_init.
-
-Signed-off-by: Andrei Warkentin <andrey.warkentin at gmail.com>
-Acked-by: Mike Snitzer <snitzer at redhat.com>
-Signed-off-by: Alasdair G Kergon <agk at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/md/dm-exception-store.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/md/dm-exception-store.c b/drivers/md/dm-exception-store.c
-index 042e719..aa70f7d 100644
---- a/drivers/md/dm-exception-store.c
-+++ b/drivers/md/dm-exception-store.c
-@@ -283,7 +283,7 @@ int dm_exception_store_init(void)
- return 0;
-
- persistent_fail:
-- dm_persistent_snapshot_exit();
-+ dm_transient_snapshot_exit();
- transient_fail:
- return r;
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0121-dm-persistent-data-fix-btree-rebalancing-after-remov.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0121-dm-persistent-data-fix-btree-rebalancing-after-remov.patch
deleted file mode 100644
index f393174..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0121-dm-persistent-data-fix-btree-rebalancing-after-remov.patch
+++ /dev/null
@@ -1,272 +0,0 @@
-From 94c63ce73eda68e07380ef495c19c9f87f4655ba Mon Sep 17 00:00:00 2001
-From: Joe Thornber <ejt at redhat.com>
-Date: Wed, 28 Mar 2012 18:41:23 +0100
-Subject: [PATCH 121/147] dm persistent data: fix btree rebalancing after
- remove
-
-commit b0988900bae9ecf968a8a8d086a9eec671a9517a upstream.
-
-When we remove an entry from a node we sometimes rebalance with it's
-two neighbours. This wasn't being done correctly; in some cases
-entries have to move all the way from the right neighbour to the left
-neighbour, or vice versa. This patch pretty much re-writes the
-balancing code to fix it.
-
-This code is barely used currently; only when you delete a thin
-device, and then only if you have hundreds of them in the same pool.
-Once we have discard support, which removes mappings, this will be used
-much more heavily.
-
-Signed-off-by: Joe Thornber <ejt at redhat.com>
-Signed-off-by: Mike Snitzer <snitzer at redhat.com>
-Signed-off-by: Alasdair G Kergon <agk at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/md/persistent-data/dm-btree-remove.c | 174 +++++++++++++++-----------
- 1 file changed, 99 insertions(+), 75 deletions(-)
-
-diff --git a/drivers/md/persistent-data/dm-btree-remove.c b/drivers/md/persistent-data/dm-btree-remove.c
-index 023fbc2..1a35caf 100644
---- a/drivers/md/persistent-data/dm-btree-remove.c
-+++ b/drivers/md/persistent-data/dm-btree-remove.c
-@@ -128,18 +128,9 @@ static void delete_at(struct node *n, unsigned index)
- n->header.nr_entries = cpu_to_le32(nr_entries - 1);
- }
-
--static unsigned del_threshold(struct node *n)
--{
-- return le32_to_cpu(n->header.max_entries) / 3;
--}
--
- static unsigned merge_threshold(struct node *n)
- {
-- /*
-- * The extra one is because we know we're potentially going to
-- * delete an entry.
-- */
-- return 2 * (le32_to_cpu(n->header.max_entries) / 3) + 1;
-+ return le32_to_cpu(n->header.max_entries) / 3;
- }
-
- struct child {
-@@ -188,6 +179,15 @@ static int exit_child(struct dm_btree_info *info, struct child *c)
-
- static void shift(struct node *left, struct node *right, int count)
- {
-+ uint32_t nr_left = le32_to_cpu(left->header.nr_entries);
-+ uint32_t nr_right = le32_to_cpu(right->header.nr_entries);
-+ uint32_t max_entries = le32_to_cpu(left->header.max_entries);
-+ uint32_t r_max_entries = le32_to_cpu(right->header.max_entries);
-+
-+ BUG_ON(max_entries != r_max_entries);
-+ BUG_ON(nr_left - count > max_entries);
-+ BUG_ON(nr_right + count > max_entries);
-+
- if (!count)
- return;
-
-@@ -199,13 +199,8 @@ static void shift(struct node *left, struct node *right, int count)
- node_shift(right, count);
- }
-
-- left->header.nr_entries =
-- cpu_to_le32(le32_to_cpu(left->header.nr_entries) - count);
-- BUG_ON(le32_to_cpu(left->header.nr_entries) > le32_to_cpu(left->header.max_entries));
--
-- right->header.nr_entries =
-- cpu_to_le32(le32_to_cpu(right->header.nr_entries) + count);
-- BUG_ON(le32_to_cpu(right->header.nr_entries) > le32_to_cpu(right->header.max_entries));
-+ left->header.nr_entries = cpu_to_le32(nr_left - count);
-+ right->header.nr_entries = cpu_to_le32(nr_right + count);
- }
-
- static void __rebalance2(struct dm_btree_info *info, struct node *parent,
-@@ -215,8 +210,9 @@ static void __rebalance2(struct dm_btree_info *info, struct node *parent,
- struct node *right = r->n;
- uint32_t nr_left = le32_to_cpu(left->header.nr_entries);
- uint32_t nr_right = le32_to_cpu(right->header.nr_entries);
-+ unsigned threshold = 2 * merge_threshold(left) + 1;
-
-- if (nr_left + nr_right <= merge_threshold(left)) {
-+ if (nr_left + nr_right < threshold) {
- /*
- * Merge
- */
-@@ -234,9 +230,6 @@ static void __rebalance2(struct dm_btree_info *info, struct node *parent,
- * Rebalance.
- */
- unsigned target_left = (nr_left + nr_right) / 2;
-- unsigned shift_ = nr_left - target_left;
-- BUG_ON(le32_to_cpu(left->header.max_entries) <= nr_left - shift_);
-- BUG_ON(le32_to_cpu(right->header.max_entries) <= nr_right + shift_);
- shift(left, right, nr_left - target_left);
- *key_ptr(parent, r->index) = right->keys[0];
- }
-@@ -272,6 +265,84 @@ static int rebalance2(struct shadow_spine *s, struct dm_btree_info *info,
- return exit_child(info, &right);
- }
-
-+/*
-+ * We dump as many entries from center as possible into left, then the rest
-+ * in right, then rebalance2. This wastes some cpu, but I want something
-+ * simple atm.
-+ */
-+static void delete_center_node(struct dm_btree_info *info, struct node *parent,
-+ struct child *l, struct child *c, struct child *r,
-+ struct node *left, struct node *center, struct node *right,
-+ uint32_t nr_left, uint32_t nr_center, uint32_t nr_right)
-+{
-+ uint32_t max_entries = le32_to_cpu(left->header.max_entries);
-+ unsigned shift = min(max_entries - nr_left, nr_center);
-+
-+ BUG_ON(nr_left + shift > max_entries);
-+ node_copy(left, center, -shift);
-+ left->header.nr_entries = cpu_to_le32(nr_left + shift);
-+
-+ if (shift != nr_center) {
-+ shift = nr_center - shift;
-+ BUG_ON((nr_right + shift) > max_entries);
-+ node_shift(right, shift);
-+ node_copy(center, right, shift);
-+ right->header.nr_entries = cpu_to_le32(nr_right + shift);
-+ }
-+ *key_ptr(parent, r->index) = right->keys[0];
-+
-+ delete_at(parent, c->index);
-+ r->index--;
-+
-+ dm_tm_dec(info->tm, dm_block_location(c->block));
-+ __rebalance2(info, parent, l, r);
-+}
-+
-+/*
-+ * Redistributes entries among 3 sibling nodes.
-+ */
-+static void redistribute3(struct dm_btree_info *info, struct node *parent,
-+ struct child *l, struct child *c, struct child *r,
-+ struct node *left, struct node *center, struct node *right,
-+ uint32_t nr_left, uint32_t nr_center, uint32_t nr_right)
-+{
-+ int s;
-+ uint32_t max_entries = le32_to_cpu(left->header.max_entries);
-+ unsigned target = (nr_left + nr_center + nr_right) / 3;
-+ BUG_ON(target > max_entries);
-+
-+ if (nr_left < nr_right) {
-+ s = nr_left - target;
-+
-+ if (s < 0 && nr_center < -s) {
-+ /* not enough in central node */
-+ shift(left, center, nr_center);
-+ s = nr_center - target;
-+ shift(left, right, s);
-+ nr_right += s;
-+ } else
-+ shift(left, center, s);
-+
-+ shift(center, right, target - nr_right);
-+
-+ } else {
-+ s = target - nr_right;
-+ if (s > 0 && nr_center < s) {
-+ /* not enough in central node */
-+ shift(center, right, nr_center);
-+ s = target - nr_center;
-+ shift(left, right, s);
-+ nr_left -= s;
-+ } else
-+ shift(center, right, s);
-+
-+ shift(left, center, nr_left - target);
-+ }
-+
-+ *key_ptr(parent, c->index) = center->keys[0];
-+ *key_ptr(parent, r->index) = right->keys[0];
-+}
-+
- static void __rebalance3(struct dm_btree_info *info, struct node *parent,
- struct child *l, struct child *c, struct child *r)
- {
-@@ -282,62 +353,18 @@ static void __rebalance3(struct dm_btree_info *info, struct node *parent,
- uint32_t nr_left = le32_to_cpu(left->header.nr_entries);
- uint32_t nr_center = le32_to_cpu(center->header.nr_entries);
- uint32_t nr_right = le32_to_cpu(right->header.nr_entries);
-- uint32_t max_entries = le32_to_cpu(left->header.max_entries);
-
-- unsigned target;
-+ unsigned threshold = merge_threshold(left) * 4 + 1;
-
- BUG_ON(left->header.max_entries != center->header.max_entries);
- BUG_ON(center->header.max_entries != right->header.max_entries);
-
-- if (((nr_left + nr_center + nr_right) / 2) < merge_threshold(center)) {
-- /*
-- * Delete center node:
-- *
-- * We dump as many entries from center as possible into
-- * left, then the rest in right, then rebalance2. This
-- * wastes some cpu, but I want something simple atm.
-- */
-- unsigned shift = min(max_entries - nr_left, nr_center);
--
-- BUG_ON(nr_left + shift > max_entries);
-- node_copy(left, center, -shift);
-- left->header.nr_entries = cpu_to_le32(nr_left + shift);
--
-- if (shift != nr_center) {
-- shift = nr_center - shift;
-- BUG_ON((nr_right + shift) >= max_entries);
-- node_shift(right, shift);
-- node_copy(center, right, shift);
-- right->header.nr_entries = cpu_to_le32(nr_right + shift);
-- }
-- *key_ptr(parent, r->index) = right->keys[0];
--
-- delete_at(parent, c->index);
-- r->index--;
--
-- dm_tm_dec(info->tm, dm_block_location(c->block));
-- __rebalance2(info, parent, l, r);
--
-- return;
-- }
--
-- /*
-- * Rebalance
-- */
-- target = (nr_left + nr_center + nr_right) / 3;
-- BUG_ON(target > max_entries);
--
-- /*
-- * Adjust the left node
-- */
-- shift(left, center, nr_left - target);
--
-- /*
-- * Adjust the right node
-- */
-- shift(center, right, target - nr_right);
-- *key_ptr(parent, c->index) = center->keys[0];
-- *key_ptr(parent, r->index) = right->keys[0];
-+ if ((nr_left + nr_center + nr_right) < threshold)
-+ delete_center_node(info, parent, l, c, r, left, center, right,
-+ nr_left, nr_center, nr_right);
-+ else
-+ redistribute3(info, parent, l, c, r, left, center, right,
-+ nr_left, nr_center, nr_right);
- }
-
- static int rebalance3(struct shadow_spine *s, struct dm_btree_info *info,
-@@ -441,9 +468,6 @@ static int rebalance_children(struct shadow_spine *s,
- if (r)
- return r;
-
-- if (child_entries > del_threshold(n))
-- return 0;
--
- has_left_sibling = i > 0;
- has_right_sibling = i < (le32_to_cpu(n->header.nr_entries) - 1);
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0122-dm-thin-fix-stacked-bi_next-usage.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0122-dm-thin-fix-stacked-bi_next-usage.patch
deleted file mode 100644
index 4d9f54d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0122-dm-thin-fix-stacked-bi_next-usage.patch
+++ /dev/null
@@ -1,233 +0,0 @@
-From e2326264ad383c7611301ccad5f1cb1f90d87f8f Mon Sep 17 00:00:00 2001
-From: Joe Thornber <ejt at redhat.com>
-Date: Wed, 28 Mar 2012 18:41:23 +0100
-Subject: [PATCH 122/147] dm thin: fix stacked bi_next usage
-
-commit 6f94a4c45a6f744383f9f695dde019998db3df55 upstream.
-
-Avoid using the bi_next field for the holder of a cell when deferring
-bios because a stacked device below might change it. Store the
-holder in a new field in struct cell instead.
-
-When a cell is created, the bio that triggered creation (the holder) was
-added to the same bio list as subsequent bios. In some cases we pass
-this holder bio directly to devices underneath. If those devices use
-the bi_next field there will be trouble...
-
-This also simplifies some code that had to work out which bio was the
-holder.
-
-Signed-off-by: Joe Thornber <ejt at redhat.com>
-Signed-off-by: Mike Snitzer <snitzer at redhat.com>
-Signed-off-by: Alasdair G Kergon <agk at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/md/dm-thin.c | 124 +++++++++++++++++++++++++++++---------------------
- 1 file changed, 73 insertions(+), 51 deletions(-)
-
-diff --git a/drivers/md/dm-thin.c b/drivers/md/dm-thin.c
-index c308757..da2f021 100644
---- a/drivers/md/dm-thin.c
-+++ b/drivers/md/dm-thin.c
-@@ -124,7 +124,7 @@ struct cell {
- struct hlist_node list;
- struct bio_prison *prison;
- struct cell_key key;
-- unsigned count;
-+ struct bio *holder;
- struct bio_list bios;
- };
-
-@@ -220,55 +220,60 @@ static struct cell *__search_bucket(struct hlist_head *bucket,
- * This may block if a new cell needs allocating. You must ensure that
- * cells will be unlocked even if the calling thread is blocked.
- *
-- * Returns the number of entries in the cell prior to the new addition
-- * or < 0 on failure.
-+ * Returns 1 if the cell was already held, 0 if @inmate is the new holder.
- */
- static int bio_detain(struct bio_prison *prison, struct cell_key *key,
- struct bio *inmate, struct cell **ref)
- {
-- int r;
-+ int r = 1;
- unsigned long flags;
- uint32_t hash = hash_key(prison, key);
-- struct cell *uninitialized_var(cell), *cell2 = NULL;
-+ struct cell *cell, *cell2;
-
- BUG_ON(hash > prison->nr_buckets);
-
- spin_lock_irqsave(&prison->lock, flags);
-+
- cell = __search_bucket(prison->cells + hash, key);
-+ if (cell) {
-+ bio_list_add(&cell->bios, inmate);
-+ goto out;
-+ }
-
-- if (!cell) {
-- /*
-- * Allocate a new cell
-- */
-- spin_unlock_irqrestore(&prison->lock, flags);
-- cell2 = mempool_alloc(prison->cell_pool, GFP_NOIO);
-- spin_lock_irqsave(&prison->lock, flags);
-+ /*
-+ * Allocate a new cell
-+ */
-+ spin_unlock_irqrestore(&prison->lock, flags);
-+ cell2 = mempool_alloc(prison->cell_pool, GFP_NOIO);
-+ spin_lock_irqsave(&prison->lock, flags);
-
-- /*
-- * We've been unlocked, so we have to double check that
-- * nobody else has inserted this cell in the meantime.
-- */
-- cell = __search_bucket(prison->cells + hash, key);
-+ /*
-+ * We've been unlocked, so we have to double check that
-+ * nobody else has inserted this cell in the meantime.
-+ */
-+ cell = __search_bucket(prison->cells + hash, key);
-+ if (cell) {
-+ mempool_free(cell2, prison->cell_pool);
-+ bio_list_add(&cell->bios, inmate);
-+ goto out;
-+ }
-+
-+ /*
-+ * Use new cell.
-+ */
-+ cell = cell2;
-
-- if (!cell) {
-- cell = cell2;
-- cell2 = NULL;
-+ cell->prison = prison;
-+ memcpy(&cell->key, key, sizeof(cell->key));
-+ cell->holder = inmate;
-+ bio_list_init(&cell->bios);
-+ hlist_add_head(&cell->list, prison->cells + hash);
-
-- cell->prison = prison;
-- memcpy(&cell->key, key, sizeof(cell->key));
-- cell->count = 0;
-- bio_list_init(&cell->bios);
-- hlist_add_head(&cell->list, prison->cells + hash);
-- }
-- }
-+ r = 0;
-
-- r = cell->count++;
-- bio_list_add(&cell->bios, inmate);
-+out:
- spin_unlock_irqrestore(&prison->lock, flags);
-
-- if (cell2)
-- mempool_free(cell2, prison->cell_pool);
--
- *ref = cell;
-
- return r;
-@@ -283,8 +288,8 @@ static void __cell_release(struct cell *cell, struct bio_list *inmates)
-
- hlist_del(&cell->list);
-
-- if (inmates)
-- bio_list_merge(inmates, &cell->bios);
-+ bio_list_add(inmates, cell->holder);
-+ bio_list_merge(inmates, &cell->bios);
-
- mempool_free(cell, prison->cell_pool);
- }
-@@ -305,22 +310,44 @@ static void cell_release(struct cell *cell, struct bio_list *bios)
- * bio may be in the cell. This function releases the cell, and also does
- * a sanity check.
- */
-+static void __cell_release_singleton(struct cell *cell, struct bio *bio)
-+{
-+ hlist_del(&cell->list);
-+ BUG_ON(cell->holder != bio);
-+ BUG_ON(!bio_list_empty(&cell->bios));
-+}
-+
- static void cell_release_singleton(struct cell *cell, struct bio *bio)
- {
-- struct bio_prison *prison = cell->prison;
-- struct bio_list bios;
-- struct bio *b;
- unsigned long flags;
--
-- bio_list_init(&bios);
-+ struct bio_prison *prison = cell->prison;
-
- spin_lock_irqsave(&prison->lock, flags);
-- __cell_release(cell, &bios);
-+ __cell_release_singleton(cell, bio);
- spin_unlock_irqrestore(&prison->lock, flags);
-+}
-+
-+/*
-+ * Sometimes we don't want the holder, just the additional bios.
-+ */
-+static void __cell_release_no_holder(struct cell *cell, struct bio_list *inmates)
-+{
-+ struct bio_prison *prison = cell->prison;
-
-- b = bio_list_pop(&bios);
-- BUG_ON(b != bio);
-- BUG_ON(!bio_list_empty(&bios));
-+ hlist_del(&cell->list);
-+ bio_list_merge(inmates, &cell->bios);
-+
-+ mempool_free(cell, prison->cell_pool);
-+}
-+
-+static void cell_release_no_holder(struct cell *cell, struct bio_list *inmates)
-+{
-+ unsigned long flags;
-+ struct bio_prison *prison = cell->prison;
-+
-+ spin_lock_irqsave(&prison->lock, flags);
-+ __cell_release_no_holder(cell, inmates);
-+ spin_unlock_irqrestore(&prison->lock, flags);
- }
-
- static void cell_error(struct cell *cell)
-@@ -800,21 +827,16 @@ static void cell_defer(struct thin_c *tc, struct cell *cell,
- * Same as cell_defer above, except it omits one particular detainee,
- * a write bio that covers the block and has already been processed.
- */
--static void cell_defer_except(struct thin_c *tc, struct cell *cell,
-- struct bio *exception)
-+static void cell_defer_except(struct thin_c *tc, struct cell *cell)
- {
- struct bio_list bios;
-- struct bio *bio;
- struct pool *pool = tc->pool;
- unsigned long flags;
-
- bio_list_init(&bios);
-- cell_release(cell, &bios);
-
- spin_lock_irqsave(&pool->lock, flags);
-- while ((bio = bio_list_pop(&bios)))
-- if (bio != exception)
-- bio_list_add(&pool->deferred_bios, bio);
-+ cell_release_no_holder(cell, &pool->deferred_bios);
- spin_unlock_irqrestore(&pool->lock, flags);
-
- wake_worker(pool);
-@@ -854,7 +876,7 @@ static void process_prepared_mapping(struct new_mapping *m)
- * the bios in the cell.
- */
- if (bio) {
-- cell_defer_except(tc, m->cell, bio);
-+ cell_defer_except(tc, m->cell);
- bio_endio(bio, 0);
- } else
- cell_defer(tc, m->cell, m->data_block);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0123-backlight-fix-typo-in-tosa_lcd.c.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0123-backlight-fix-typo-in-tosa_lcd.c.patch
deleted file mode 100644
index 2f369f7..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0123-backlight-fix-typo-in-tosa_lcd.c.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 97f236081bafdb80cac73ef005a6df79d4b2c803 Mon Sep 17 00:00:00 2001
-From: Masanari Iida <standby24x7 at gmail.com>
-Date: Wed, 28 Mar 2012 14:42:56 -0700
-Subject: [PATCH 123/147] backlight: fix typo in tosa_lcd.c
-
-commit 8da00edc1069f01c34510fa405dc15d96c090a3f upstream.
-
-Fix typo in drivers/video/backlight/tosa_lcd.c
-"tosa_lcd_reume" should be "tosa_lcd_resume".
-
-Signed-off-by: Masanari Iida <standby24x7 at gmail.com>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/video/backlight/tosa_lcd.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/video/backlight/tosa_lcd.c b/drivers/video/backlight/tosa_lcd.c
-index 772f601..6f54f74 100644
---- a/drivers/video/backlight/tosa_lcd.c
-+++ b/drivers/video/backlight/tosa_lcd.c
-@@ -271,7 +271,7 @@ static int tosa_lcd_resume(struct spi_device *spi)
- }
- #else
- #define tosa_lcd_suspend NULL
--#define tosa_lcd_reume NULL
-+#define tosa_lcd_resume NULL
- #endif
-
- static struct spi_driver tosa_lcd_driver = {
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0124-xfs-Fix-oops-on-IO-error-during-xlog_recover_process.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0124-xfs-Fix-oops-on-IO-error-during-xlog_recover_process.patch
deleted file mode 100644
index 85a6e21..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0124-xfs-Fix-oops-on-IO-error-during-xlog_recover_process.patch
+++ /dev/null
@@ -1,84 +0,0 @@
-From 2b91e04fb1c28cce172844b2519c4bbedd9849c2 Mon Sep 17 00:00:00 2001
-From: Jan Kara <jack at suse.cz>
-Date: Thu, 15 Mar 2012 09:34:02 +0000
-Subject: [PATCH 124/147] xfs: Fix oops on IO error during
- xlog_recover_process_iunlinks()
-
-commit d97d32edcd732110758799ae60af725e5110b3dc upstream.
-
-When an IO error happens during inode deletion run from
-xlog_recover_process_iunlinks() filesystem gets shutdown. Thus any subsequent
-attempt to read buffers fails. Code in xlog_recover_process_iunlinks() does not
-count with the fact that read of a buffer which was read a while ago can
-really fail which results in the oops on
- agi = XFS_BUF_TO_AGI(agibp);
-
-Fix the problem by cleaning up the buffer handling in
-xlog_recover_process_iunlinks() as suggested by Dave Chinner. We release buffer
-lock but keep buffer reference to AG buffer. That is enough for buffer to stay
-pinned in memory and we don't have to call xfs_read_agi() all the time.
-
-Signed-off-by: Jan Kara <jack at suse.cz>
-Reviewed-by: Dave Chinner <dchinner at redhat.com>
-Signed-off-by: Ben Myers <bpm at sgi.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/xfs/xfs_log_recover.c | 33 +++++++++++----------------------
- 1 file changed, 11 insertions(+), 22 deletions(-)
-
-diff --git a/fs/xfs/xfs_log_recover.c b/fs/xfs/xfs_log_recover.c
-index 541a508..4f5d0ce 100644
---- a/fs/xfs/xfs_log_recover.c
-+++ b/fs/xfs/xfs_log_recover.c
-@@ -3161,37 +3161,26 @@ xlog_recover_process_iunlinks(
- */
- continue;
- }
-+ /*
-+ * Unlock the buffer so that it can be acquired in the normal
-+ * course of the transaction to truncate and free each inode.
-+ * Because we are not racing with anyone else here for the AGI
-+ * buffer, we don't even need to hold it locked to read the
-+ * initial unlinked bucket entries out of the buffer. We keep
-+ * buffer reference though, so that it stays pinned in memory
-+ * while we need the buffer.
-+ */
- agi = XFS_BUF_TO_AGI(agibp);
-+ xfs_buf_unlock(agibp);
-
- for (bucket = 0; bucket < XFS_AGI_UNLINKED_BUCKETS; bucket++) {
- agino = be32_to_cpu(agi->agi_unlinked[bucket]);
- while (agino != NULLAGINO) {
-- /*
-- * Release the agi buffer so that it can
-- * be acquired in the normal course of the
-- * transaction to truncate and free the inode.
-- */
-- xfs_buf_relse(agibp);
--
- agino = xlog_recover_process_one_iunlink(mp,
- agno, agino, bucket);
--
-- /*
-- * Reacquire the agibuffer and continue around
-- * the loop. This should never fail as we know
-- * the buffer was good earlier on.
-- */
-- error = xfs_read_agi(mp, NULL, agno, &agibp);
-- ASSERT(error == 0);
-- agi = XFS_BUF_TO_AGI(agibp);
- }
- }
--
-- /*
-- * Release the buffer for the current agi so we can
-- * go on to the next one.
-- */
-- xfs_buf_relse(agibp);
-+ xfs_buf_rele(agibp);
- }
-
- mp->m_dmevmask = mp_dmevmask;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0125-slub-Do-not-hold-slub_lock-when-calling-sysfs_slab_a.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0125-slub-Do-not-hold-slub_lock-when-calling-sysfs_slab_a.patch
deleted file mode 100644
index 325ae73..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0125-slub-Do-not-hold-slub_lock-when-calling-sysfs_slab_a.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From 4e25692d8b794add23cb09fdeeaa62ecee2ef697 Mon Sep 17 00:00:00 2001
-From: Christoph Lameter <cl at linux.com>
-Date: Tue, 17 Jan 2012 09:27:31 -0600
-Subject: [PATCH 125/147] slub: Do not hold slub_lock when calling
- sysfs_slab_add()
-
-commit 66c4c35c6bc5a1a452b024cf0364635b28fd94e4 upstream.
-
-sysfs_slab_add() calls various sysfs functions that actually may
-end up in userspace doing all sorts of things.
-
-Release the slub_lock after adding the kmem_cache structure to the list.
-At that point the address of the kmem_cache is not known so we are
-guaranteed exlusive access to the following modifications to the
-kmem_cache structure.
-
-If the sysfs_slab_add fails then reacquire the slub_lock to
-remove the kmem_cache structure from the list.
-
-Reported-by: Sasha Levin <levinsasha928 at gmail.com>
-Acked-by: Eric Dumazet <eric.dumazet at gmail.com>
-Signed-off-by: Christoph Lameter <cl at linux.com>
-Signed-off-by: Pekka Enberg <penberg at kernel.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- mm/slub.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/mm/slub.c b/mm/slub.c
-index 1a919f0..a99c785 100644
---- a/mm/slub.c
-+++ b/mm/slub.c
-@@ -3911,13 +3911,14 @@ struct kmem_cache *kmem_cache_create(const char *name, size_t size,
- if (kmem_cache_open(s, n,
- size, align, flags, ctor)) {
- list_add(&s->list, &slab_caches);
-+ up_write(&slub_lock);
- if (sysfs_slab_add(s)) {
-+ down_write(&slub_lock);
- list_del(&s->list);
- kfree(n);
- kfree(s);
- goto err;
- }
-- up_write(&slub_lock);
- return s;
- }
- kfree(n);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0126-NFSv4-Fix-two-infinite-loops-in-the-mount-code.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0126-NFSv4-Fix-two-infinite-loops-in-the-mount-code.patch
deleted file mode 100644
index dd7fa83..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0126-NFSv4-Fix-two-infinite-loops-in-the-mount-code.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From a92e847768f32d7059094c15ce686019b91893ab Mon Sep 17 00:00:00 2001
-From: Trond Myklebust <Trond.Myklebust at netapp.com>
-Date: Tue, 27 Mar 2012 18:13:02 -0400
-Subject: [PATCH 126/147] NFSv4: Fix two infinite loops in the mount code
-
-commit 05e9cfb408b24debb3a85fd98edbfd09dd148881 upstream.
-
-We can currently loop forever in nfs4_lookup_root() and in
-nfs41_proc_secinfo_no_name(), if the first iteration returns a
-NFS4ERR_DELAY or something else that causes exception.retry to get
-set.
-
-Reported-by: Weston Andros Adamson <dros at netapp.com>
-Signed-off-by: Trond Myklebust <Trond.Myklebust at netapp.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/nfs/nfs4proc.c | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
-index c9e2d9e..6db0972 100644
---- a/fs/nfs/nfs4proc.c
-+++ b/fs/nfs/nfs4proc.c
-@@ -2242,11 +2242,12 @@ static int nfs4_lookup_root(struct nfs_server *server, struct nfs_fh *fhandle,
- switch (err) {
- case 0:
- case -NFS4ERR_WRONGSEC:
-- break;
-+ goto out;
- default:
- err = nfs4_handle_exception(server, err, &exception);
- }
- } while (exception.retry);
-+out:
- return err;
- }
-
-@@ -6099,11 +6100,12 @@ nfs41_proc_secinfo_no_name(struct nfs_server *server, struct nfs_fh *fhandle,
- case 0:
- case -NFS4ERR_WRONGSEC:
- case -NFS4ERR_NOTSUPP:
-- break;
-+ goto out;
- default:
- err = nfs4_handle_exception(server, err, &exception);
- }
- } while (exception.retry);
-+out:
- return err;
- }
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0127-NFSv4.1-Fix-layoutcommit-error-handling.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0127-NFSv4.1-Fix-layoutcommit-error-handling.patch
deleted file mode 100644
index 2f1e88a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0127-NFSv4.1-Fix-layoutcommit-error-handling.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From ccd03bf68f47d089dc1c789ea11a19792e056fdf Mon Sep 17 00:00:00 2001
-From: Trond Myklebust <Trond.Myklebust at netapp.com>
-Date: Tue, 27 Mar 2012 18:22:19 -0400
-Subject: [PATCH 127/147] NFSv4.1: Fix layoutcommit error handling
-
-commit e59d27e05a6435f8c04d5ad843f37fa795f2eaaa upstream.
-
-Firstly, task->tk_status will always return negative error values,
-so the current tests for 'NFS4ERR_DELEG_REVOKED' etc. are all being
-ignored.
-Secondly, clean up the code so that we only need to test
-task->tk_status once!
-
-Signed-off-by: Trond Myklebust <Trond.Myklebust at netapp.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/nfs/nfs4proc.c | 25 +++++++++++++------------
- 1 file changed, 13 insertions(+), 12 deletions(-)
-
-diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
-index 6db0972..d945700 100644
---- a/fs/nfs/nfs4proc.c
-+++ b/fs/nfs/nfs4proc.c
-@@ -5983,21 +5983,22 @@ nfs4_layoutcommit_done(struct rpc_task *task, void *calldata)
- return;
-
- switch (task->tk_status) { /* Just ignore these failures */
-- case NFS4ERR_DELEG_REVOKED: /* layout was recalled */
-- case NFS4ERR_BADIOMODE: /* no IOMODE_RW layout for range */
-- case NFS4ERR_BADLAYOUT: /* no layout */
-- case NFS4ERR_GRACE: /* loca_recalim always false */
-+ case -NFS4ERR_DELEG_REVOKED: /* layout was recalled */
-+ case -NFS4ERR_BADIOMODE: /* no IOMODE_RW layout for range */
-+ case -NFS4ERR_BADLAYOUT: /* no layout */
-+ case -NFS4ERR_GRACE: /* loca_recalim always false */
- task->tk_status = 0;
-- }
--
-- if (nfs4_async_handle_error(task, server, NULL) == -EAGAIN) {
-- rpc_restart_call_prepare(task);
-- return;
-- }
--
-- if (task->tk_status == 0)
-+ break;
-+ case 0:
- nfs_post_op_update_inode_force_wcc(data->args.inode,
- data->res.fattr);
-+ break;
-+ default:
-+ if (nfs4_async_handle_error(task, server, NULL) == -EAGAIN) {
-+ rpc_restart_call_prepare(task);
-+ return;
-+ }
-+ }
- }
-
- static void nfs4_layoutcommit_release(void *calldata)
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0128-module-Remove-module-size-limit.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0128-module-Remove-module-size-limit.patch
deleted file mode 100644
index 09a8b51..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0128-module-Remove-module-size-limit.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From fd3597c3facb39143261c34964aabfc9c66c4fdf Mon Sep 17 00:00:00 2001
-From: Sasha Levin <levinsasha928 at gmail.com>
-Date: Mon, 30 Jan 2012 23:07:22 -0500
-Subject: [PATCH 128/147] module: Remove module size limit
-
-commit f946eeb9313ff1470758e171a60fe7438a2ded3f upstream.
-
-Module size was limited to 64MB, this was legacy limitation due to vmalloc()
-which was removed a while ago.
-
-Limiting module size to 64MB is both pointless and affects real world use
-cases.
-
-Cc: Tim Abbott <tim.abbott at oracle.com>
-Signed-off-by: Sasha Levin <sasha.levin at oracle.com>
-Signed-off-by: Rusty Russell <rusty at rustcorp.com.au>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- kernel/module.c | 3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
-
-diff --git a/kernel/module.c b/kernel/module.c
-index 178333c..6969ef0 100644
---- a/kernel/module.c
-+++ b/kernel/module.c
-@@ -2341,8 +2341,7 @@ static int copy_and_check(struct load_info *info,
- return -ENOEXEC;
-
- /* Suck in entire file: we'll want most of it. */
-- /* vmalloc barfs on "unusual" numbers. Check here */
-- if (len > 64 * 1024 * 1024 || (hdr = vmalloc(len)) == NULL)
-+ if ((hdr = vmalloc(len)) == NULL)
- return -ENOMEM;
-
- if (copy_from_user(hdr, umod, len) != 0) {
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0129-Bluetooth-btusb-fix-bInterval-for-high-super-speed-i.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0129-Bluetooth-btusb-fix-bInterval-for-high-super-speed-i.patch
deleted file mode 100644
index 2aae62b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0129-Bluetooth-btusb-fix-bInterval-for-high-super-speed-i.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 7c62cb0eff8ac7154b41d4b010c18e1a92e1bf8e Mon Sep 17 00:00:00 2001
-From: Bing Zhao <bzhao at marvell.com>
-Date: Tue, 20 Dec 2011 18:19:00 -0800
-Subject: [PATCH 129/147] Bluetooth: btusb: fix bInterval for high/super speed
- isochronous endpoints
-
-commit fa0fb93f2ac308a76fa64eb57c18511dadf97089 upstream.
-
-For high-speed/super-speed isochronous endpoints, the bInterval
-value is used as exponent, 2^(bInterval-1). Luckily we have
-usb_fill_int_urb() function that handles it correctly. So we just
-call this function to fill in the RX URB.
-
-Cc: Marcel Holtmann <marcel at holtmann.org>
-Signed-off-by: Bing Zhao <bzhao at marvell.com>
-Acked-by: Marcel Holtmann <marcel at holtmann.org>
-Signed-off-by: Gustavo F. Padovan <padovan at profusion.mobi>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/bluetooth/btusb.c | 9 ++-------
- 1 file changed, 2 insertions(+), 7 deletions(-)
-
-diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
-index 11a925c..c16c750 100644
---- a/drivers/bluetooth/btusb.c
-+++ b/drivers/bluetooth/btusb.c
-@@ -507,15 +507,10 @@ static int btusb_submit_isoc_urb(struct hci_dev *hdev, gfp_t mem_flags)
-
- pipe = usb_rcvisocpipe(data->udev, data->isoc_rx_ep->bEndpointAddress);
-
-- urb->dev = data->udev;
-- urb->pipe = pipe;
-- urb->context = hdev;
-- urb->complete = btusb_isoc_complete;
-- urb->interval = data->isoc_rx_ep->bInterval;
-+ usb_fill_int_urb(urb, data->udev, pipe, buf, size, btusb_isoc_complete,
-+ hdev, data->isoc_rx_ep->bInterval);
-
- urb->transfer_flags = URB_FREE_BUFFER | URB_ISO_ASAP;
-- urb->transfer_buffer = buf;
-- urb->transfer_buffer_length = size;
-
- __fill_isoc_descriptor(urb, size,
- le16_to_cpu(data->isoc_rx_ep->wMaxPacketSize));
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0130-drm-i915-suspend-fbdev-device-around-suspend-hiberna.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0130-drm-i915-suspend-fbdev-device-around-suspend-hiberna.patch
deleted file mode 100644
index f224abe..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0130-drm-i915-suspend-fbdev-device-around-suspend-hiberna.patch
+++ /dev/null
@@ -1,95 +0,0 @@
-From 38c2bda521b456704bd7b7376e79d69b0e867198 Mon Sep 17 00:00:00 2001
-From: Dave Airlie <airlied at redhat.com>
-Date: Wed, 28 Mar 2012 10:48:49 +0100
-Subject: [PATCH 130/147] drm/i915: suspend fbdev device around
- suspend/hibernate
-
-commit 3fa016a0b5c5237e9c387fc3249592b2cb5391c6 upstream.
-
-Looking at hibernate overwriting I though it looked like a cursor,
-so I tracked down this missing piece to stop the cursor blink
-timer. I've no idea if this is sufficient to fix the hibernate
-problems people are seeing, but please test it.
-
-Both radeon and nouveau have done this for a long time.
-
-I've run this personally all night hib/resume cycles with no fails.
-
-Reviewed-by: Keith Packard <keithp at keithp.com>
-Reported-by: Petr Tesarik <kernel at tesarici.cz>
-Reported-by: Stanislaw Gruszka <sgruszka at redhat.com>
-Reported-by: Lots of misc segfaults after hibernate across the world.
-Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=37142
-Tested-by: Dave Airlie <airlied at redhat.com>
-Tested-by: Bojan Smojver <bojan at rexursive.com>
-Tested-by: Andreas Hartmann <andihartmann at 01019freenet.de>
-Signed-off-by: Dave Airlie <airlied at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/gpu/drm/i915/i915_drv.c | 7 +++++++
- drivers/gpu/drm/i915/intel_drv.h | 2 +-
- drivers/gpu/drm/i915/intel_fb.c | 10 ++++++++++
- 3 files changed, 18 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
-index e2d85a9..d04597d 100644
---- a/drivers/gpu/drm/i915/i915_drv.c
-+++ b/drivers/gpu/drm/i915/i915_drv.c
-@@ -442,6 +442,10 @@ static int i915_drm_freeze(struct drm_device *dev)
- /* Modeset on resume, not lid events */
- dev_priv->modeset_on_lid = 0;
-
-+ console_lock();
-+ intel_fbdev_set_suspend(dev, 1);
-+ console_unlock();
-+
- return 0;
- }
-
-@@ -514,6 +518,9 @@ static int i915_drm_thaw(struct drm_device *dev)
-
- dev_priv->modeset_on_lid = 0;
-
-+ console_lock();
-+ intel_fbdev_set_suspend(dev, 0);
-+ console_unlock();
- return error;
- }
-
-diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
-index a1b4343..83e820e 100644
---- a/drivers/gpu/drm/i915/intel_drv.h
-+++ b/drivers/gpu/drm/i915/intel_drv.h
-@@ -364,7 +364,7 @@ extern int intel_framebuffer_init(struct drm_device *dev,
- struct drm_i915_gem_object *obj);
- extern int intel_fbdev_init(struct drm_device *dev);
- extern void intel_fbdev_fini(struct drm_device *dev);
--
-+extern void intel_fbdev_set_suspend(struct drm_device *dev, int state);
- extern void intel_prepare_page_flip(struct drm_device *dev, int plane);
- extern void intel_finish_page_flip(struct drm_device *dev, int pipe);
- extern void intel_finish_page_flip_plane(struct drm_device *dev, int plane);
-diff --git a/drivers/gpu/drm/i915/intel_fb.c b/drivers/gpu/drm/i915/intel_fb.c
-index ec49bae..d0ce34b 100644
---- a/drivers/gpu/drm/i915/intel_fb.c
-+++ b/drivers/gpu/drm/i915/intel_fb.c
-@@ -257,6 +257,16 @@ void intel_fbdev_fini(struct drm_device *dev)
- kfree(dev_priv->fbdev);
- dev_priv->fbdev = NULL;
- }
-+
-+void intel_fbdev_set_suspend(struct drm_device *dev, int state)
-+{
-+ drm_i915_private_t *dev_priv = dev->dev_private;
-+ if (!dev_priv->fbdev)
-+ return;
-+
-+ fb_set_suspend(dev_priv->fbdev->helper.fbdev, state);
-+}
-+
- MODULE_LICENSE("GPL and additional rights");
-
- void intel_fb_output_poll_changed(struct drm_device *dev)
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0131-Fix-pppol2tp-getsockname.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0131-Fix-pppol2tp-getsockname.patch
deleted file mode 100644
index 371e203..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0131-Fix-pppol2tp-getsockname.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From f5d559cda23c4abbccffff4d6992fba722321a1e Mon Sep 17 00:00:00 2001
-From: Benjamin LaHaise <bcrl at kvack.org>
-Date: Tue, 20 Mar 2012 03:57:54 +0000
-Subject: [PATCH 131/147] Fix pppol2tp getsockname()
-
-[ Upstream commit bbdb32cb5b73597386913d052165423b9d736145 ]
-
-While testing L2TP functionality, I came across a bug in getsockname(). The
-IP address returned within the pppol2tp_addr's addr memember was not being
-set to the IP address in use. This bug is caused by using inet_sk() on the
-wrong socket (the L2TP socket rather than the underlying UDP socket), and was
-likely introduced during the addition of L2TPv3 support.
-
-Signed-off-by: Benjamin LaHaise <bcrl at kvack.org>
-Signed-off-by: James Chapman <jchapman at katalix.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- net/l2tp/l2tp_ppp.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/net/l2tp/l2tp_ppp.c b/net/l2tp/l2tp_ppp.c
-index 8a90d75..b1bd16f 100644
---- a/net/l2tp/l2tp_ppp.c
-+++ b/net/l2tp/l2tp_ppp.c
-@@ -915,7 +915,7 @@ static int pppol2tp_getname(struct socket *sock, struct sockaddr *uaddr,
- goto end_put_sess;
- }
-
-- inet = inet_sk(sk);
-+ inet = inet_sk(tunnel->sock);
- if (tunnel->version == 2) {
- struct sockaddr_pppol2tp sp;
- len = sizeof(sp);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0132-ipv6-fix-incorrent-ipv6-ipsec-packet-fragment.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0132-ipv6-fix-incorrent-ipv6-ipsec-packet-fragment.patch
deleted file mode 100644
index eaf6d78..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0132-ipv6-fix-incorrent-ipv6-ipsec-packet-fragment.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From c809355ceedbec6be4d31c189c452323b7dd0555 Mon Sep 17 00:00:00 2001
-From: Gao feng <gaofeng at cn.fujitsu.com>
-Date: Mon, 19 Mar 2012 22:36:10 +0000
-Subject: [PATCH 132/147] ipv6: fix incorrent ipv6 ipsec packet fragment
-
-[ Upstream commit 1f85851e17b64cabd089a8a8839dddebc627948c ]
-
-Since commit 299b0767(ipv6: Fix IPsec slowpath fragmentation problem)
-In func ip6_append_data,after call skb_put(skb, fraglen + dst_exthdrlen)
-the skb->len contains dst_exthdrlen,and we don't reduce dst_exthdrlen at last
-This will make fraggap>0 in next "while cycle",and cause the size of skb incorrent
-
-Fix this by reserve headroom for dst_exthdrlen.
-
-Signed-off-by: Gao feng <gaofeng at cn.fujitsu.com>
-Acked-by: Steffen Klassert <steffen.klassert at secunet.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- net/ipv6/ip6_output.c | 11 ++++++-----
- 1 file changed, 6 insertions(+), 5 deletions(-)
-
-diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c
-index ec56271..f7f07e2 100644
---- a/net/ipv6/ip6_output.c
-+++ b/net/ipv6/ip6_output.c
-@@ -1411,8 +1411,9 @@ alloc_new_skb:
- */
- skb->ip_summed = csummode;
- skb->csum = 0;
-- /* reserve for fragmentation */
-- skb_reserve(skb, hh_len+sizeof(struct frag_hdr));
-+ /* reserve for fragmentation and ipsec header */
-+ skb_reserve(skb, hh_len + sizeof(struct frag_hdr) +
-+ dst_exthdrlen);
-
- if (sk->sk_type == SOCK_DGRAM)
- skb_shinfo(skb)->tx_flags = tx_flags;
-@@ -1420,9 +1421,9 @@ alloc_new_skb:
- /*
- * Find where to start putting bytes
- */
-- data = skb_put(skb, fraglen + dst_exthdrlen);
-- skb_set_network_header(skb, exthdrlen + dst_exthdrlen);
-- data += fragheaderlen + dst_exthdrlen;
-+ data = skb_put(skb, fraglen);
-+ skb_set_network_header(skb, exthdrlen);
-+ data += fragheaderlen;
- skb->transport_header = (skb->network_header +
- fragheaderlen);
- if (fraggap) {
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0133-net-bpf_jit-fix-BPF_S_LDX_B_MSH-compilation.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0133-net-bpf_jit-fix-BPF_S_LDX_B_MSH-compilation.patch
deleted file mode 100644
index a5780d4..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0133-net-bpf_jit-fix-BPF_S_LDX_B_MSH-compilation.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From 3f5659b743cac5379f2b1619b713edeb60844b23 Mon Sep 17 00:00:00 2001
-From: Eric Dumazet <eric.dumazet at gmail.com>
-Date: Sun, 18 Mar 2012 02:40:48 +0000
-Subject: [PATCH 133/147] net: bpf_jit: fix BPF_S_LDX_B_MSH compilation
-
-[ Upstream commit dc72d99dabb870ca5bd6d9fff674be853bb4a88d ]
-
-Matt Evans spotted that x86 bpf_jit was incorrectly handling negative
-constant offsets in BPF_S_LDX_B_MSH instruction.
-
-We need to abort JIT compilation like we do in common_load so that
-filter uses the interpreter code and can call __load_pointer()
-
-Reference: http://lists.openwall.net/netdev/2011/07/19/11
-
-Thanks to Indan Zupancic to bring back this issue.
-
-Reported-by: Matt Evans <matt at ozlabs.org>
-Reported-by: Indan Zupancic <indan at nul.nu>
-Signed-off-by: Eric Dumazet <eric.dumazet at gmail.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/x86/net/bpf_jit_comp.c | 14 +++++---------
- 1 file changed, 5 insertions(+), 9 deletions(-)
-
-diff --git a/arch/x86/net/bpf_jit_comp.c b/arch/x86/net/bpf_jit_comp.c
-index 7c1b765..5671752 100644
---- a/arch/x86/net/bpf_jit_comp.c
-+++ b/arch/x86/net/bpf_jit_comp.c
-@@ -475,8 +475,10 @@ void bpf_jit_compile(struct sk_filter *fp)
- case BPF_S_LD_W_ABS:
- func = sk_load_word;
- common_load: seen |= SEEN_DATAREF;
-- if ((int)K < 0)
-+ if ((int)K < 0) {
-+ /* Abort the JIT because __load_pointer() is needed. */
- goto out;
-+ }
- t_offset = func - (image + addrs[i]);
- EMIT1_off32(0xbe, K); /* mov imm32,%esi */
- EMIT1_off32(0xe8, t_offset); /* call */
-@@ -489,14 +491,8 @@ common_load: seen |= SEEN_DATAREF;
- goto common_load;
- case BPF_S_LDX_B_MSH:
- if ((int)K < 0) {
-- if (pc_ret0 > 0) {
-- /* addrs[pc_ret0 - 1] is the start address */
-- EMIT_JMP(addrs[pc_ret0 - 1] - addrs[i]);
-- break;
-- }
-- CLEAR_A();
-- EMIT_JMP(cleanup_addr - addrs[i]);
-- break;
-+ /* Abort the JIT because __load_pointer() is needed. */
-+ goto out;
- }
- seen |= SEEN_DATAREF | SEEN_XREG;
- t_offset = sk_load_byte_msh - (image + addrs[i]);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0134-net-fix-a-potential-rcu_read_lock-imbalance-in-rt6_f.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0134-net-fix-a-potential-rcu_read_lock-imbalance-in-rt6_f.patch
deleted file mode 100644
index c0f9663..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0134-net-fix-a-potential-rcu_read_lock-imbalance-in-rt6_f.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From fa36f84193bedebf0fdfb861e5e9f1dd72044f64 Mon Sep 17 00:00:00 2001
-From: Eric Dumazet <eric.dumazet at gmail.com>
-Date: Tue, 27 Mar 2012 09:53:52 +0000
-Subject: [PATCH 134/147] net: fix a potential rcu_read_lock() imbalance in
- rt6_fill_node()
-
-[ Upstream commit 94f826b8076e2cb92242061e92f21b5baa3eccc2 ]
-
-Commit f2c31e32b378 (net: fix NULL dereferences in check_peer_redir() )
-added a regression in rt6_fill_node(), leading to rcu_read_lock()
-imbalance.
-
-Thats because NLA_PUT() can make a jump to nla_put_failure label.
-
-Fix this by using nla_put()
-
-Many thanks to Ben Greear for his help
-
-Reported-by: Ben Greear <greearb at candelatech.com>
-Reported-by: Dave Jones <davej at redhat.com>
-Signed-off-by: Eric Dumazet <eric.dumazet at gmail.com>
-Tested-by: Ben Greear <greearb at candelatech.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- net/ipv6/route.c | 8 ++++++--
- 1 file changed, 6 insertions(+), 2 deletions(-)
-
-diff --git a/net/ipv6/route.c b/net/ipv6/route.c
-index b582a0a..059b9d9 100644
---- a/net/ipv6/route.c
-+++ b/net/ipv6/route.c
-@@ -2446,8 +2446,12 @@ static int rt6_fill_node(struct net *net,
-
- rcu_read_lock();
- n = dst_get_neighbour(&rt->dst);
-- if (n)
-- NLA_PUT(skb, RTA_GATEWAY, 16, &n->primary_key);
-+ if (n) {
-+ if (nla_put(skb, RTA_GATEWAY, 16, &n->primary_key) < 0) {
-+ rcu_read_unlock();
-+ goto nla_put_failure;
-+ }
-+ }
- rcu_read_unlock();
-
- if (rt->dst.dev)
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0135-net-fix-napi_reuse_skb-skb-reserve.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0135-net-fix-napi_reuse_skb-skb-reserve.patch
deleted file mode 100644
index b176c8b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0135-net-fix-napi_reuse_skb-skb-reserve.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 33dbbab6716bf8d3703ccb81a1e7e7084c4b8233 Mon Sep 17 00:00:00 2001
-From: Eric Dumazet <eric.dumazet at gmail.com>
-Date: Wed, 21 Mar 2012 06:58:03 +0000
-Subject: [PATCH 135/147] net: fix napi_reuse_skb() skb reserve
-
-[ Upstream commit 2a2a459eeeff48640dc557548ce576d666ab06ed ]
-
-napi->skb is allocated in napi_get_frags() using
-netdev_alloc_skb_ip_align(), with a reserve of NET_SKB_PAD +
-NET_IP_ALIGN bytes.
-
-However, when such skb is recycled in napi_reuse_skb(), it ends with a
-reserve of NET_IP_ALIGN which is suboptimal.
-
-Signed-off-by: Eric Dumazet <eric.dumazet at gmail.com>
-Cc: Herbert Xu <herbert at gondor.apana.org.au>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- net/core/dev.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/net/core/dev.c b/net/core/dev.c
-index c56cacf..55cd370 100644
---- a/net/core/dev.c
-+++ b/net/core/dev.c
-@@ -3634,7 +3634,8 @@ EXPORT_SYMBOL(napi_gro_receive);
- static void napi_reuse_skb(struct napi_struct *napi, struct sk_buff *skb)
- {
- __skb_pull(skb, skb_headlen(skb));
-- skb_reserve(skb, NET_IP_ALIGN - skb_headroom(skb));
-+ /* restore the reserve we had after netdev_alloc_skb_ip_align() */
-+ skb_reserve(skb, NET_SKB_PAD + NET_IP_ALIGN - skb_headroom(skb));
- skb->vlan_tci = 0;
- skb->dev = napi->dev;
- skb->skb_iif = 0;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0136-Remove-printk-from-rds_sendmsg.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0136-Remove-printk-from-rds_sendmsg.patch
deleted file mode 100644
index 1164259..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0136-Remove-printk-from-rds_sendmsg.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 7a3d883bc2d70f61ca23b7778c945d7e4cf5e10a Mon Sep 17 00:00:00 2001
-From: Dave Jones <davej at redhat.com>
-Date: Mon, 19 Mar 2012 13:01:07 +0000
-Subject: [PATCH 136/147] Remove printk from rds_sendmsg
-
-[ Upstream commit a6506e1486181975d318344143aca722b2b91621 ]
-
-no socket layer outputs a message for this error and neither should rds.
-
-Signed-off-by: Dave Jones <davej at redhat.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- net/rds/send.c | 1 -
- 1 file changed, 1 deletion(-)
-
-diff --git a/net/rds/send.c b/net/rds/send.c
-index e2d63c5..96531d4 100644
---- a/net/rds/send.c
-+++ b/net/rds/send.c
-@@ -935,7 +935,6 @@ int rds_sendmsg(struct kiocb *iocb, struct socket *sock, struct msghdr *msg,
- /* Mirror Linux UDP mirror of BSD error message compatibility */
- /* XXX: Perhaps MSG_MORE someday */
- if (msg->msg_flags & ~(MSG_DONTWAIT | MSG_CMSG_COMPAT)) {
-- printk(KERN_INFO "msg_flags 0x%08X\n", msg->msg_flags);
- ret = -EOPNOTSUPP;
- goto out;
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0137-sky2-override-for-PCI-legacy-power-management.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0137-sky2-override-for-PCI-legacy-power-management.patch
deleted file mode 100644
index 6e4cc9f..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0137-sky2-override-for-PCI-legacy-power-management.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From 82df145d92f585fd22bc74921a3dc184d54be9d3 Mon Sep 17 00:00:00 2001
-From: stephen hemminger <shemminger at vyatta.com>
-Date: Wed, 21 Mar 2012 05:32:05 +0000
-Subject: [PATCH 137/147] sky2: override for PCI legacy power management
-
-[ Upstream commit 5676cc7bfe1e388e87843f71daa229610385b41e ]
-
-Some BIOS's don't setup power management correctly (what else is
-new) and don't allow use of PCI Express power control. Add a special
-exception module parameter to allow working around this issue.
-Based on slightly different patch by Knut Petersen.
-
-Reported-by: Arkadiusz Miskiewicz <arekm at maven.pl>
-Signed-off-by: Stephen Hemminger <shemminger at vyatta.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/net/ethernet/marvell/sky2.c | 11 +++++++++++
- 1 file changed, 11 insertions(+)
-
-diff --git a/drivers/net/ethernet/marvell/sky2.c b/drivers/net/ethernet/marvell/sky2.c
-index 7803efa..f612b35 100644
---- a/drivers/net/ethernet/marvell/sky2.c
-+++ b/drivers/net/ethernet/marvell/sky2.c
-@@ -95,6 +95,10 @@ static int disable_msi = 0;
- module_param(disable_msi, int, 0);
- MODULE_PARM_DESC(disable_msi, "Disable Message Signaled Interrupt (MSI)");
-
-+static int legacy_pme = 0;
-+module_param(legacy_pme, int, 0);
-+MODULE_PARM_DESC(legacy_pme, "Legacy power management");
-+
- static DEFINE_PCI_DEVICE_TABLE(sky2_id_table) = {
- { PCI_DEVICE(PCI_VENDOR_ID_SYSKONNECT, 0x9000) }, /* SK-9Sxx */
- { PCI_DEVICE(PCI_VENDOR_ID_SYSKONNECT, 0x9E00) }, /* SK-9Exx */
-@@ -867,6 +871,13 @@ static void sky2_wol_init(struct sky2_port *sky2)
- /* Disable PiG firmware */
- sky2_write16(hw, B0_CTST, Y2_HW_WOL_OFF);
-
-+ /* Needed by some broken BIOSes, use PCI rather than PCI-e for WOL */
-+ if (legacy_pme) {
-+ u32 reg1 = sky2_pci_read32(hw, PCI_DEV_REG1);
-+ reg1 |= PCI_Y2_PME_LEGACY;
-+ sky2_pci_write32(hw, PCI_DEV_REG1, reg1);
-+ }
-+
- /* block receiver */
- sky2_write8(hw, SK_REG(port, RX_GMF_CTRL_T), GMF_RST_SET);
- sky2_read32(hw, B0_CTST);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0138-xfrm-Access-the-replay-notify-functions-via-the-regi.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0138-xfrm-Access-the-replay-notify-functions-via-the-regi.patch
deleted file mode 100644
index d030cc7..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0138-xfrm-Access-the-replay-notify-functions-via-the-regi.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From eaa691b3cd85066e4f84583f7b818372c86a4bc2 Mon Sep 17 00:00:00 2001
-From: Steffen Klassert <steffen.klassert at secunet.com>
-Date: Wed, 21 Mar 2012 23:36:13 +0000
-Subject: [PATCH 138/147] xfrm: Access the replay notify functions via the
- registered callbacks
-
-[ Upstream commit 1265fd616782ef03b98fd19f65c2b47fcd4ea11f ]
-
-We call the wrong replay notify function when we use ESN replay
-handling. This leads to the fact that we don't send notifications
-if we use ESN. Fix this by calling the registered callbacks instead
-of xfrm_replay_notify().
-
-Signed-off-by: Steffen Klassert <steffen.klassert at secunet.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- net/xfrm/xfrm_replay.c | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/net/xfrm/xfrm_replay.c b/net/xfrm/xfrm_replay.c
-index 39e02c5..2f6d11d 100644
---- a/net/xfrm/xfrm_replay.c
-+++ b/net/xfrm/xfrm_replay.c
-@@ -167,7 +167,7 @@ static void xfrm_replay_advance(struct xfrm_state *x, __be32 net_seq)
- }
-
- if (xfrm_aevent_is_on(xs_net(x)))
-- xfrm_replay_notify(x, XFRM_REPLAY_UPDATE);
-+ x->repl->notify(x, XFRM_REPLAY_UPDATE);
- }
-
- static int xfrm_replay_overflow_bmp(struct xfrm_state *x, struct sk_buff *skb)
-@@ -279,7 +279,7 @@ static void xfrm_replay_advance_bmp(struct xfrm_state *x, __be32 net_seq)
- replay_esn->bmp[nr] |= (1U << bitnr);
-
- if (xfrm_aevent_is_on(xs_net(x)))
-- xfrm_replay_notify(x, XFRM_REPLAY_UPDATE);
-+ x->repl->notify(x, XFRM_REPLAY_UPDATE);
- }
-
- static void xfrm_replay_notify_bmp(struct xfrm_state *x, int event)
-@@ -473,7 +473,7 @@ static void xfrm_replay_advance_esn(struct xfrm_state *x, __be32 net_seq)
- replay_esn->bmp[nr] |= (1U << bitnr);
-
- if (xfrm_aevent_is_on(xs_net(x)))
-- xfrm_replay_notify(x, XFRM_REPLAY_UPDATE);
-+ x->repl->notify(x, XFRM_REPLAY_UPDATE);
- }
-
- static struct xfrm_replay xfrm_replay_legacy = {
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0139-lockd-fix-arg-parsing-for-grace_period-and-timeout.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0139-lockd-fix-arg-parsing-for-grace_period-and-timeout.patch
deleted file mode 100644
index 3e15c06..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0139-lockd-fix-arg-parsing-for-grace_period-and-timeout.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From a0ef4bd55a5a7d190eeceb4d1626988af68a2f0e Mon Sep 17 00:00:00 2001
-From: NeilBrown <neilb at suse.de>
-Date: Tue, 7 Feb 2012 15:35:42 +1100
-Subject: [PATCH 139/147] lockd: fix arg parsing for grace_period and timeout.
-
-commit de5b8e8e047534aac6bc9803f96e7257436aef9c upstream.
-
-If you try to set grace_period or timeout via a module parameter
-to lockd, and do this on a big-endian machine where
-
- sizeof(int) != sizeof(unsigned long)
-
-it won't work. This number given will be effectively shifted right
-by the difference in those two sizes.
-
-So cast kp->arg properly to get correct result.
-
-Signed-off-by: NeilBrown <neilb at suse.de>
-Signed-off-by: J. Bruce Fields <bfields at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/lockd/svc.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/fs/lockd/svc.c b/fs/lockd/svc.c
-index c061b9a..2444780 100644
---- a/fs/lockd/svc.c
-+++ b/fs/lockd/svc.c
-@@ -440,7 +440,7 @@ static int param_set_##name(const char *val, struct kernel_param *kp) \
- __typeof__(type) num = which_strtol(val, &endp, 0); \
- if (endp == val || *endp || num < (min) || num > (max)) \
- return -EINVAL; \
-- *((int *) kp->arg) = num; \
-+ *((type *) kp->arg) = num; \
- return 0; \
- }
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0140-x86-tsc-Skip-refined-tsc-calibration-on-systems-with.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0140-x86-tsc-Skip-refined-tsc-calibration-on-systems-with.patch
deleted file mode 100644
index 637e830..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0140-x86-tsc-Skip-refined-tsc-calibration-on-systems-with.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From 6361e158f9827a43f7f20342c5f58a46ac003fb1 Mon Sep 17 00:00:00 2001
-From: Alok Kataria <akataria at vmware.com>
-Date: Tue, 21 Feb 2012 18:19:55 -0800
-Subject: [PATCH 140/147] x86, tsc: Skip refined tsc calibration on systems
- with reliable TSC
-
-commit 57779dc2b3b75bee05ef5d1ada47f615f7a13932 upstream.
-
-While running the latest Linux as guest under VMware in highly
-over-committed situations, we have seen cases when the refined TSC
-algorithm fails to get a valid tsc_start value in
-tsc_refine_calibration_work from multiple attempts. As a result the
-kernel keeps on scheduling the tsc_irqwork task for later. Subsequently
-after several attempts when it gets a valid start value it goes through
-the refined calibration and either bails out or uses the new results.
-Given that the kernel originally read the TSC frequency from the
-platform, which is the best it can get, I don't think there is much
-value in refining it.
-
-So for systems which get the TSC frequency from the platform we
-should skip the refined tsc algorithm.
-
-We can use the TSC_RELIABLE cpu cap flag to detect this, right now it is
-set only on VMware and for Moorestown Penwell both of which have there
-own TSC calibration methods.
-
-Signed-off-by: Alok N Kataria <akataria at vmware.com>
-Cc: John Stultz <johnstul at us.ibm.com>
-Cc: Dirk Brandewie <dirk.brandewie at gmail.com>
-Cc: Alan Cox <alan at linux.intel.com>
-[jstultz: Reworked to simply not schedule the refining work,
-rather then scheduling the work and bombing out later]
-Signed-off-by: John Stultz <john.stultz at linaro.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/x86/kernel/tsc.c | 10 ++++++++++
- 1 file changed, 10 insertions(+)
-
-diff --git a/arch/x86/kernel/tsc.c b/arch/x86/kernel/tsc.c
-index db48336..3fe298a 100644
---- a/arch/x86/kernel/tsc.c
-+++ b/arch/x86/kernel/tsc.c
-@@ -934,6 +934,16 @@ static int __init init_tsc_clocksource(void)
- clocksource_tsc.rating = 0;
- clocksource_tsc.flags &= ~CLOCK_SOURCE_IS_CONTINUOUS;
- }
-+
-+ /*
-+ * Trust the results of the earlier calibration on systems
-+ * exporting a reliable TSC.
-+ */
-+ if (boot_cpu_has(X86_FEATURE_TSC_RELIABLE)) {
-+ clocksource_register_khz(&clocksource_tsc, tsc_khz);
-+ return 0;
-+ }
-+
- schedule_delayed_work(&tsc_irqwork, 0);
- return 0;
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0141-x86-tls-Off-by-one-limit-check.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0141-x86-tls-Off-by-one-limit-check.patch
deleted file mode 100644
index a4510ef..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0141-x86-tls-Off-by-one-limit-check.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 2d52fe6cb2d5afcd27d1c675484bdcbefaad6d2c Mon Sep 17 00:00:00 2001
-From: Dan Carpenter <dan.carpenter at oracle.com>
-Date: Sat, 24 Mar 2012 10:52:50 +0300
-Subject: [PATCH 141/147] x86, tls: Off by one limit check
-
-commit 8f0750f19789cf352d7e24a6cc50f2ab1b4f1372 upstream.
-
-These are used as offsets into an array of GDT_ENTRY_TLS_ENTRIES members
-so GDT_ENTRY_TLS_ENTRIES is one past the end of the array.
-
-Signed-off-by: Dan Carpenter <dan.carpenter at oracle.com>
-Link: http://lkml.kernel.org/r/20120324075250.GA28258@elgon.mountain
-Signed-off-by: H. Peter Anvin <hpa at zytor.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/x86/kernel/tls.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/arch/x86/kernel/tls.c b/arch/x86/kernel/tls.c
-index 6bb7b85..bcfec2d 100644
---- a/arch/x86/kernel/tls.c
-+++ b/arch/x86/kernel/tls.c
-@@ -163,7 +163,7 @@ int regset_tls_get(struct task_struct *target, const struct user_regset *regset,
- {
- const struct desc_struct *tls;
-
-- if (pos > GDT_ENTRY_TLS_ENTRIES * sizeof(struct user_desc) ||
-+ if (pos >= GDT_ENTRY_TLS_ENTRIES * sizeof(struct user_desc) ||
- (pos % sizeof(struct user_desc)) != 0 ||
- (count % sizeof(struct user_desc)) != 0)
- return -EINVAL;
-@@ -198,7 +198,7 @@ int regset_tls_set(struct task_struct *target, const struct user_regset *regset,
- struct user_desc infobuf[GDT_ENTRY_TLS_ENTRIES];
- const struct user_desc *info;
-
-- if (pos > GDT_ENTRY_TLS_ENTRIES * sizeof(struct user_desc) ||
-+ if (pos >= GDT_ENTRY_TLS_ENTRIES * sizeof(struct user_desc) ||
- (pos % sizeof(struct user_desc)) != 0 ||
- (count % sizeof(struct user_desc)) != 0)
- return -EINVAL;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0142-compat-use-sys_sendfile64-implementation-for-sendfil.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0142-compat-use-sys_sendfile64-implementation-for-sendfil.patch
deleted file mode 100644
index a93ecf8..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0142-compat-use-sys_sendfile64-implementation-for-sendfil.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From c6fc3006639bfddf212067de1c13a8345019d934 Mon Sep 17 00:00:00 2001
-From: Chris Metcalf <cmetcalf at tilera.com>
-Date: Mon, 26 Mar 2012 16:26:12 -0400
-Subject: [PATCH 142/147] compat: use sys_sendfile64() implementation for
- sendfile syscall
-
-commit 1631fcea8399da5e80a80084b3b8c5bfd99d21e7 upstream.
-
-<asm-generic/unistd.h> was set up to use sys_sendfile() for the 32-bit
-compat API instead of sys_sendfile64(), but in fact the right thing to
-do is to use sys_sendfile64() in all cases. The 32-bit sendfile64() API
-in glibc uses the sendfile64 syscall, so it has to be capable of doing
-full 64-bit operations. But the sys_sendfile() kernel implementation
-has a MAX_NON_LFS test in it which explicitly limits the offset to 2^32.
-So, we need to use the sys_sendfile64() implementation in the kernel
-for this case.
-
-Acked-by: Arnd Bergmann <arnd at arndb.de>
-Signed-off-by: Chris Metcalf <cmetcalf at tilera.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- include/asm-generic/unistd.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/include/asm-generic/unistd.h b/include/asm-generic/unistd.h
-index 2292d1a..991ef01 100644
---- a/include/asm-generic/unistd.h
-+++ b/include/asm-generic/unistd.h
-@@ -218,7 +218,7 @@ __SC_COMP(__NR_pwritev, sys_pwritev, compat_sys_pwritev)
-
- /* fs/sendfile.c */
- #define __NR3264_sendfile 71
--__SC_3264(__NR3264_sendfile, sys_sendfile64, sys_sendfile)
-+__SYSCALL(__NR3264_sendfile, sys_sendfile64)
-
- /* fs/select.c */
- #define __NR_pselect6 72
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0143-rtc-Provide-flag-for-rtc-devices-that-don-t-support-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0143-rtc-Provide-flag-for-rtc-devices-that-don-t-support-.patch
deleted file mode 100644
index 1f20272..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0143-rtc-Provide-flag-for-rtc-devices-that-don-t-support-.patch
+++ /dev/null
@@ -1,76 +0,0 @@
-From 04cb3b02d54277c9db7bf8b185f41839317e40b1 Mon Sep 17 00:00:00 2001
-From: John Stultz <john.stultz at linaro.org>
-Date: Tue, 6 Mar 2012 17:16:09 -0800
-Subject: [PATCH 143/147] rtc: Provide flag for rtc devices that don't support
- UIE
-
-commit 4a649903f91232d02284d53724b0a45728111767 upstream.
-
-Richard Weinberger noticed that on some RTC hardware that
-doesn't support UIE mode, due to coarse granular alarms
-(like 1minute resolution), the current virtualized RTC
-support doesn't properly error out when UIE is enabled.
-
-Instead the current code queues an alarm for the next second,
-but it won't fire until up to a miniute later.
-
-This patch provides a generic way to flag this sort of hardware
-and fixes the issue on the mpc5121 where Richard noticed the
-problem.
-
-Reported-by: Richard Weinberger <richard at nod.at>
-Tested-by: Richard Weinberger <richard at nod.at>
-Signed-off-by: John Stultz <john.stultz at linaro.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/rtc/interface.c | 5 +++++
- drivers/rtc/rtc-mpc5121.c | 2 ++
- include/linux/rtc.h | 3 ++-
- 3 files changed, 9 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/rtc/interface.c b/drivers/rtc/interface.c
-index c1edbf8..565742b 100644
---- a/drivers/rtc/interface.c
-+++ b/drivers/rtc/interface.c
-@@ -445,6 +445,11 @@ int rtc_update_irq_enable(struct rtc_device *rtc, unsigned int enabled)
- if (rtc->uie_rtctimer.enabled == enabled)
- goto out;
-
-+ if (rtc->uie_unsupported) {
-+ err = -EINVAL;
-+ goto out;
-+ }
-+
- if (enabled) {
- struct rtc_time tm;
- ktime_t now, onesec;
-diff --git a/drivers/rtc/rtc-mpc5121.c b/drivers/rtc/rtc-mpc5121.c
-index da60915..0fc2d22 100644
---- a/drivers/rtc/rtc-mpc5121.c
-+++ b/drivers/rtc/rtc-mpc5121.c
-@@ -360,6 +360,8 @@ static int __devinit mpc5121_rtc_probe(struct platform_device *op)
- &mpc5200_rtc_ops, THIS_MODULE);
- }
-
-+ rtc->rtc->uie_unsupported = 1;
-+
- if (IS_ERR(rtc->rtc)) {
- err = PTR_ERR(rtc->rtc);
- goto out_free_irq;
-diff --git a/include/linux/rtc.h b/include/linux/rtc.h
-index 93f4d03..fcabfb4 100644
---- a/include/linux/rtc.h
-+++ b/include/linux/rtc.h
-@@ -202,7 +202,8 @@ struct rtc_device
- struct hrtimer pie_timer; /* sub second exp, so needs hrtimer */
- int pie_enabled;
- struct work_struct irqwork;
--
-+ /* Some hardware can't support UIE mode */
-+ int uie_unsupported;
-
- #ifdef CONFIG_RTC_INTF_DEV_UIE_EMUL
- struct work_struct uie_task;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0144-nfsd-don-t-allow-zero-length-strings-in-cache_parse.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0144-nfsd-don-t-allow-zero-length-strings-in-cache_parse.patch
deleted file mode 100644
index de5ea80..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0144-nfsd-don-t-allow-zero-length-strings-in-cache_parse.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 43917d0f4bc9e7b8d6f0cafd29da95d52f587c58 Mon Sep 17 00:00:00 2001
-From: Dan Carpenter <dan.carpenter at oracle.com>
-Date: Wed, 18 Jan 2012 12:56:02 +0300
-Subject: [PATCH 144/147] nfsd: don't allow zero length strings in
- cache_parse()
-
-commit 6d8d17499810479eabd10731179c04b2ca22152f upstream.
-
-There is no point in passing a zero length string here and quite a
-few of that cache_parse() implementations will Oops if count is
-zero.
-
-Signed-off-by: Dan Carpenter <dan.carpenter at oracle.com>
-Signed-off-by: J. Bruce Fields <bfields at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- net/sunrpc/cache.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/net/sunrpc/cache.c b/net/sunrpc/cache.c
-index 72ad836..4530a91 100644
---- a/net/sunrpc/cache.c
-+++ b/net/sunrpc/cache.c
-@@ -828,6 +828,8 @@ static ssize_t cache_do_downcall(char *kaddr, const char __user *buf,
- {
- ssize_t ret;
-
-+ if (count == 0)
-+ return -EINVAL;
- if (copy_from_user(kaddr, buf, count))
- return -EFAULT;
- kaddr[count] = '\0';
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0145-serial-sh-sci-fix-a-race-of-DMA-submit_tx-on-transfe.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0145-serial-sh-sci-fix-a-race-of-DMA-submit_tx-on-transfe.patch
deleted file mode 100644
index 14546aa..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0145-serial-sh-sci-fix-a-race-of-DMA-submit_tx-on-transfe.patch
+++ /dev/null
@@ -1,91 +0,0 @@
-From 3e2440eb910fa022dedfd93ecc868155dbd14fe1 Mon Sep 17 00:00:00 2001
-From: Yoshii Takashi <takashi.yoshii.zj at renesas.com>
-Date: Wed, 14 Mar 2012 16:14:43 +0900
-Subject: [PATCH 145/147] serial: sh-sci: fix a race of DMA submit_tx on
- transfer
-
-commit 49d4bcaddca977fffdea8b0b71f6e5da96dac78e upstream.
-
-When DMA is enabled, sh-sci transfer begins with
- uart_start()
- sci_start_tx()
- if (cookie_tx < 0) schedule_work()
-Then, starts DMA when wq scheduled, -- (A)
- process_one_work()
- work_fn_rx()
- cookie_tx = desc->submit_tx()
-And finishes when DMA transfer ends, -- (B)
- sci_dma_tx_complete()
- async_tx_ack()
- cookie_tx = -EINVAL
- (possible another schedule_work())
-
-This A to B sequence is not reentrant, since controlling variables
-(for example, cookie_tx above) are not queues nor lists. So, they
-must be invoked as A B A B..., otherwise results in kernel crash.
-
-To ensure the sequence, sci_start_tx() seems to test if cookie_tx < 0
-(represents "not used") to call schedule_work().
-But cookie_tx will not be set (to a cookie, also means "used") until
-in the middle of work queue scheduled function work_fn_tx().
-
-This gap between the test and set allows the breakage of the sequence
-under the very frequently call of uart_start().
-Another gap between async_tx_ack() and another schedule_work() results
-in the same issue, too.
-
-This patch introduces a new condition "cookie_tx == 0" just to mark
-it is "busy" and assign it within spin-locked region to fill the gaps.
-
-Signed-off-by: Takashi Yoshii <takashi.yoshii.zj at renesas.com>
-Reviewed-by: Guennadi Liakhovetski <g.liakhovetski at gmx.de>
-Signed-off-by: Paul Mundt <lethal at linux-sh.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/tty/serial/sh-sci.c | 15 ++++++++++-----
- 1 file changed, 10 insertions(+), 5 deletions(-)
-
-diff --git a/drivers/tty/serial/sh-sci.c b/drivers/tty/serial/sh-sci.c
-index aff9d61..829e51a 100644
---- a/drivers/tty/serial/sh-sci.c
-+++ b/drivers/tty/serial/sh-sci.c
-@@ -1123,17 +1123,20 @@ static void sci_dma_tx_complete(void *arg)
- port->icount.tx += sg_dma_len(&s->sg_tx);
-
- async_tx_ack(s->desc_tx);
-- s->cookie_tx = -EINVAL;
- s->desc_tx = NULL;
-
- if (uart_circ_chars_pending(xmit) < WAKEUP_CHARS)
- uart_write_wakeup(port);
-
- if (!uart_circ_empty(xmit)) {
-+ s->cookie_tx = 0;
- schedule_work(&s->work_tx);
-- } else if (port->type == PORT_SCIFA || port->type == PORT_SCIFB) {
-- u16 ctrl = sci_in(port, SCSCR);
-- sci_out(port, SCSCR, ctrl & ~SCSCR_TIE);
-+ } else {
-+ s->cookie_tx = -EINVAL;
-+ if (port->type == PORT_SCIFA || port->type == PORT_SCIFB) {
-+ u16 ctrl = sci_in(port, SCSCR);
-+ sci_out(port, SCSCR, ctrl & ~SCSCR_TIE);
-+ }
- }
-
- spin_unlock_irqrestore(&port->lock, flags);
-@@ -1395,8 +1398,10 @@ static void sci_start_tx(struct uart_port *port)
- }
-
- if (s->chan_tx && !uart_circ_empty(&s->port.state->xmit) &&
-- s->cookie_tx < 0)
-+ s->cookie_tx < 0) {
-+ s->cookie_tx = 0;
- schedule_work(&s->work_tx);
-+ }
- #endif
-
- if (!s->chan_tx || port->type == PORT_SCIFA || port->type == PORT_SCIFB) {
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0146-ASPM-Fix-pcie-devices-with-non-pcie-children.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0146-ASPM-Fix-pcie-devices-with-non-pcie-children.patch
deleted file mode 100644
index 9d2291b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0146-ASPM-Fix-pcie-devices-with-non-pcie-children.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-From f1bc4d09cd5cb0d91b7ab742b0bc2c6ea7ed9a10 Mon Sep 17 00:00:00 2001
-From: Matthew Garrett <mjg at redhat.com>
-Date: Tue, 27 Mar 2012 10:17:41 -0400
-Subject: [PATCH 146/147] ASPM: Fix pcie devices with non-pcie children
-
-commit c9651e70ad0aa499814817cbf3cc1d0b806ed3a1 upstream.
-
-Since 3.2.12 and 3.3, some systems are failing to boot with a BUG_ON.
-Some other systems using the pata_jmicron driver fail to boot because no
-disks are detected. Passing pcie_aspm=force on the kernel command line
-works around it.
-
-The cause: commit 4949be16822e ("PCI: ignore pre-1.1 ASPM quirking when
-ASPM is disabled") changed the behaviour of pcie_aspm_sanity_check() to
-always return 0 if aspm is disabled, in order to avoid cases where we
-changed ASPM state on pre-PCIe 1.1 devices.
-
-This skipped the secondary function of pcie_aspm_sanity_check which was
-to avoid us enabling ASPM on devices that had non-PCIe children, causing
-trouble later on. Move the aspm_disabled check so we continue to honour
-that scenario.
-
-Addresses https://bugzilla.kernel.org/show_bug.cgi?id=42979 and
- http://bugs.debian.org/665420
-
-Reported-by: Romain Francoise <romain at orebokech.com> # kernel panic
-Reported-by: Chris Holland <bandidoirlandes at gmail.com> # disk detection trouble
-Signed-off-by: Matthew Garrett <mjg at redhat.com>
-Tested-by: Hatem Masmoudi <hatem.masmoudi at gmail.com> # Dell Latitude E5520
-Tested-by: janek <jan0x6c at gmail.com> # pata_jmicron with JMB362/JMB363
-[jn: with more symptoms in log message]
-Signed-off-by: Jonathan Nieder <jrnieder at gmail.com>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/pci/pcie/aspm.c | 13 ++++++++++---
- 1 file changed, 10 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/pci/pcie/aspm.c b/drivers/pci/pcie/aspm.c
-index 24f049e..2275162 100644
---- a/drivers/pci/pcie/aspm.c
-+++ b/drivers/pci/pcie/aspm.c
-@@ -500,9 +500,6 @@ static int pcie_aspm_sanity_check(struct pci_dev *pdev)
- int pos;
- u32 reg32;
-
-- if (aspm_disabled)
-- return 0;
--
- /*
- * Some functions in a slot might not all be PCIe functions,
- * very strange. Disable ASPM for the whole slot
-@@ -511,6 +508,16 @@ static int pcie_aspm_sanity_check(struct pci_dev *pdev)
- pos = pci_pcie_cap(child);
- if (!pos)
- return -EINVAL;
-+
-+ /*
-+ * If ASPM is disabled then we're not going to change
-+ * the BIOS state. It's safe to continue even if it's a
-+ * pre-1.1 device
-+ */
-+
-+ if (aspm_disabled)
-+ continue;
-+
- /*
- * Disable ASPM for pre-1.1 PCIe device, we follow MS to use
- * RBER bit to determine if a function is 1.1 version device
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0147-Linux-3.2.14.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0147-Linux-3.2.14.patch
deleted file mode 100644
index 6a9f27c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.14/0147-Linux-3.2.14.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 6c99e5e88e70f85b97e9363c80763e306ac3296c Mon Sep 17 00:00:00 2001
-From: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Date: Mon, 2 Apr 2012 09:53:31 -0700
-Subject: [PATCH 147/147] Linux 3.2.14
-
----
- Makefile | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Makefile b/Makefile
-index 172e041..afe4c7d 100644
---- a/Makefile
-+++ b/Makefile
-@@ -1,6 +1,6 @@
- VERSION = 3
- PATCHLEVEL = 2
--SUBLEVEL = 13
-+SUBLEVEL = 14
- EXTRAVERSION =
- NAME = Saber-toothed Squirrel
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0001-x86-bpf_jit-fix-a-bug-in-emitting-the-16-bit-immedia.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0001-x86-bpf_jit-fix-a-bug-in-emitting-the-16-bit-immedia.patch
deleted file mode 100644
index 6ca5b96..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0001-x86-bpf_jit-fix-a-bug-in-emitting-the-16-bit-immedia.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 7e602bd1af2343c068cef31c272ffbb1f24e4569 Mon Sep 17 00:00:00 2001
-From: "zhuangfeiran at ict.ac.cn" <zhuangfeiran at ict.ac.cn>
-Date: Wed, 28 Mar 2012 23:27:00 +0000
-Subject: [PATCH 01/60] x86 bpf_jit: fix a bug in emitting the 16-bit
- immediate operand of AND
-
-[ Upstream commit 1d24fb3684f347226747c6b11ea426b7b992694e ]
-
-When K >= 0xFFFF0000, AND needs the two least significant bytes of K as
-its operand, but EMIT2() gives it the least significant byte of K and
-0x2. EMIT() should be used here to replace EMIT2().
-
-Signed-off-by: Feiran Zhuang <zhuangfeiran at ict.ac.cn>
-Acked-by: Eric Dumazet <eric.dumazet at gmail.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/x86/net/bpf_jit_comp.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/arch/x86/net/bpf_jit_comp.c b/arch/x86/net/bpf_jit_comp.c
-index 5671752..5a5b6e4 100644
---- a/arch/x86/net/bpf_jit_comp.c
-+++ b/arch/x86/net/bpf_jit_comp.c
-@@ -289,7 +289,7 @@ void bpf_jit_compile(struct sk_filter *fp)
- EMIT2(0x24, K & 0xFF); /* and imm8,%al */
- } else if (K >= 0xFFFF0000) {
- EMIT2(0x66, 0x25); /* and imm16,%ax */
-- EMIT2(K, 2);
-+ EMIT(K, 2);
- } else {
- EMIT1_off32(0x25, K); /* and imm32,%eax */
- }
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0002-tg3-Fix-5717-serdes-powerdown-problem.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0002-tg3-Fix-5717-serdes-powerdown-problem.patch
deleted file mode 100644
index 1a703dc..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0002-tg3-Fix-5717-serdes-powerdown-problem.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 1ac4686cd4465f081e95dc1f6de93bb6f5157a48 Mon Sep 17 00:00:00 2001
-From: Matt Carlson <mcarlson at broadcom.com>
-Date: Mon, 2 Apr 2012 09:01:40 +0000
-Subject: [PATCH 02/60] tg3: Fix 5717 serdes powerdown problem
-
-[ Upstream commit 085f1afc56619bda424941412fdeaff1e32c21dc ]
-
-If port 0 of a 5717 serdes device powers down, it hides the phy from
-port 1. This patch works around the problem by keeping port 0's phy
-powered up.
-
-Signed-off-by: Matt Carlson <mcarlson at broadcom.com>
-Signed-off-by: Michael Chan <mchan at broadcom.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/net/ethernet/broadcom/tg3.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/net/ethernet/broadcom/tg3.c b/drivers/net/ethernet/broadcom/tg3.c
-index bf40741..3d55883 100644
---- a/drivers/net/ethernet/broadcom/tg3.c
-+++ b/drivers/net/ethernet/broadcom/tg3.c
-@@ -2794,7 +2794,9 @@ static void tg3_power_down_phy(struct tg3 *tp, bool do_low_power)
- if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5700 ||
- GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5704 ||
- (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5780 &&
-- (tp->phy_flags & TG3_PHYFLG_MII_SERDES)))
-+ (tp->phy_flags & TG3_PHYFLG_MII_SERDES)) ||
-+ (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5717 &&
-+ !tp->pci_fn))
- return;
-
- if (GET_CHIP_REV(tp->pci_chip_rev_id) == CHIPREV_5784_AX ||
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0003-sky2-dont-overwrite-settings-for-PHY-Quick-link.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0003-sky2-dont-overwrite-settings-for-PHY-Quick-link.patch
deleted file mode 100644
index 38890ec..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0003-sky2-dont-overwrite-settings-for-PHY-Quick-link.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 52136862cecf42801481b683e0c316e9bc7658ee Mon Sep 17 00:00:00 2001
-From: Lino Sanfilippo <LinoSanfilippo at gmx.de>
-Date: Fri, 30 Mar 2012 07:28:59 +0000
-Subject: [PATCH 03/60] sky2: dont overwrite settings for PHY Quick link
-
-[ Upstream commit 2240eb4ae3dc4acff20d1a8947c441c451513e37 ]
-
-This patch corrects a bug in function sky2_open() of the Marvell Yukon 2 driver
-in which the settings for PHY quick link are overwritten.
-
-Signed-off-by: Lino Sanfilippo <LinoSanfilippo at gmx.de>
-Acked-by: Stephen Hemminger <shemminger at vyattta.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/net/ethernet/marvell/sky2.c | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/net/ethernet/marvell/sky2.c b/drivers/net/ethernet/marvell/sky2.c
-index f612b35..7eb8a00 100644
---- a/drivers/net/ethernet/marvell/sky2.c
-+++ b/drivers/net/ethernet/marvell/sky2.c
-@@ -1766,13 +1766,14 @@ static int sky2_open(struct net_device *dev)
-
- sky2_hw_up(sky2);
-
-+ /* Enable interrupts from phy/mac for port */
-+ imask = sky2_read32(hw, B0_IMSK);
-+
- if (hw->chip_id == CHIP_ID_YUKON_OPT ||
- hw->chip_id == CHIP_ID_YUKON_PRM ||
- hw->chip_id == CHIP_ID_YUKON_OP_2)
- imask |= Y2_IS_PHY_QLNK; /* enable PHY Quick Link */
-
-- /* Enable interrupts from phy/mac for port */
-- imask = sky2_read32(hw, B0_IMSK);
- imask |= portirq_msk[port];
- sky2_write32(hw, B0_IMSK, imask);
- sky2_read32(hw, B0_IMSK);
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0004-rose_dev-fix-memcpy-bug-in-rose_set_mac_address.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0004-rose_dev-fix-memcpy-bug-in-rose_set_mac_address.patch
deleted file mode 100644
index 6e7fb2e..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0004-rose_dev-fix-memcpy-bug-in-rose_set_mac_address.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 1ea3a4959cbe6145d661bd86ad83f70a61927974 Mon Sep 17 00:00:00 2001
-From: "danborkmann at iogearbox.net" <danborkmann at iogearbox.net>
-Date: Tue, 27 Mar 2012 22:47:43 +0000
-Subject: [PATCH 04/60] rose_dev: fix memcpy-bug in rose_set_mac_address
-
-[ Upstream commit 81213b5e8ae68e204aa7a3f83c4f9100405dbff9 ]
-
-If both addresses equal, nothing needs to be done. If the device is down,
-then we simply copy the new address to dev->dev_addr. If the device is up,
-then we add another loopback device with the new address, and if that does
-not fail, we remove the loopback device with the old address. And only
-then, we update the dev->dev_addr.
-
-Signed-off-by: Daniel Borkmann <daniel.borkmann at tik.ee.ethz.ch>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- net/rose/rose_dev.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/net/rose/rose_dev.c b/net/rose/rose_dev.c
-index 178ff4f..2679507 100644
---- a/net/rose/rose_dev.c
-+++ b/net/rose/rose_dev.c
-@@ -96,11 +96,11 @@ static int rose_set_mac_address(struct net_device *dev, void *addr)
- struct sockaddr *sa = addr;
- int err;
-
-- if (!memcpy(dev->dev_addr, sa->sa_data, dev->addr_len))
-+ if (!memcmp(dev->dev_addr, sa->sa_data, dev->addr_len))
- return 0;
-
- if (dev->flags & IFF_UP) {
-- err = rose_add_loopback_node((rose_address *)dev->dev_addr);
-+ err = rose_add_loopback_node((rose_address *)sa->sa_data);
- if (err)
- return err;
-
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0005-net-usb-cdc_eem-fix-mtu.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0005-net-usb-cdc_eem-fix-mtu.patch
deleted file mode 100644
index 42e8bde..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0005-net-usb-cdc_eem-fix-mtu.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 1a9aa23e139f1305c1b8e1609e8275ed7456c9ba Mon Sep 17 00:00:00 2001
-From: Rabin Vincent <rabin at rab.in>
-Date: Thu, 29 Mar 2012 07:15:15 +0000
-Subject: [PATCH 05/60] net: usb: cdc_eem: fix mtu
-
-[ Upstream commit 78fb72f7936c01d5b426c03a691eca082b03f2b9 ]
-
-Make CDC EEM recalculate the hard_mtu after adjusting the
-hard_header_len.
-
-Without this, usbnet adjusts the MTU down to 1494 bytes, and the host is
-unable to receive standard 1500-byte frames from the device.
-
-Tested with the Linux USB Ethernet gadget.
-
-Cc: Oliver Neukum <oliver at neukum.name>
-Signed-off-by: Rabin Vincent <rabin at rab.in>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/net/usb/cdc_eem.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/net/usb/cdc_eem.c b/drivers/net/usb/cdc_eem.c
-index 882f53f..82d43b2 100644
---- a/drivers/net/usb/cdc_eem.c
-+++ b/drivers/net/usb/cdc_eem.c
-@@ -93,6 +93,7 @@ static int eem_bind(struct usbnet *dev, struct usb_interface *intf)
- /* no jumbogram (16K) support for now */
-
- dev->net->hard_header_len += EEM_HEAD + ETH_FCS_LEN;
-+ dev->hard_mtu = dev->net->mtu + dev->net->hard_header_len;
-
- return 0;
- }
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0006-Fix-non-TBI-PHY-access-a-bad-merge-undid-bug-fix-in-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0006-Fix-non-TBI-PHY-access-a-bad-merge-undid-bug-fix-in-.patch
deleted file mode 100644
index f4cf933..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0006-Fix-non-TBI-PHY-access-a-bad-merge-undid-bug-fix-in-.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From 5d9449356576f8bb42022c55e966a6d00a27d810 Mon Sep 17 00:00:00 2001
-From: Kenth Eriksson <kenth.eriksson at transmode.com>
-Date: Tue, 27 Mar 2012 22:05:54 +0000
-Subject: [PATCH 06/60] Fix non TBI PHY access; a bad merge undid bug fix in a
- previous commit.
-
-[ Upstream commit 464b57da56910c8737ede75ad820b9a7afc46b3e ]
-
-The merge done in commit b26e478f undid bug fix in commit c3e072f8
-("net: fsl_pq_mdio: fix non tbi phy access"), with the result that non
-TBI (e.g. MDIO) PHYs cannot be accessed.
-
-Signed-off-by: Kenth Eriksson <kenth.eriksson at transmode.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/net/ethernet/freescale/fsl_pq_mdio.c | 13 ++++++-------
- 1 file changed, 6 insertions(+), 7 deletions(-)
-
-diff --git a/drivers/net/ethernet/freescale/fsl_pq_mdio.c b/drivers/net/ethernet/freescale/fsl_pq_mdio.c
-index 4d9f84b..ada234a 100644
---- a/drivers/net/ethernet/freescale/fsl_pq_mdio.c
-+++ b/drivers/net/ethernet/freescale/fsl_pq_mdio.c
-@@ -356,16 +356,15 @@ static int fsl_pq_mdio_probe(struct platform_device *ofdev)
-
- if (prop)
- tbiaddr = *prop;
-- }
--
-- if (tbiaddr == -1) {
-- err = -EBUSY;
-
-- goto err_free_irqs;
-+ if (tbiaddr == -1) {
-+ err = -EBUSY;
-+ goto err_free_irqs;
-+ } else {
-+ out_be32(tbipa, tbiaddr);
-+ }
- }
-
-- out_be32(tbipa, tbiaddr);
--
- err = of_mdiobus_register(new_bus, np);
- if (err) {
- printk (KERN_ERR "%s: Cannot register as MDIO bus\n",
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0007-ASoC-wm8994-Update-WM8994-DCS-calibration.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0007-ASoC-wm8994-Update-WM8994-DCS-calibration.patch
deleted file mode 100644
index b52abe1..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0007-ASoC-wm8994-Update-WM8994-DCS-calibration.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From be6768ee3f1d5ade04946ae2d9b9642e795b4dc3 Mon Sep 17 00:00:00 2001
-From: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Date: Wed, 21 Mar 2012 13:22:40 +0000
-Subject: [PATCH 07/60] ASoC: wm8994: Update WM8994 DCS calibration
-
-commit e16605855d58803fe0608417150c7a618b4f8243 upstream.
-
-Based on latest production information.
-
-Signed-off-by: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- sound/soc/codecs/wm8994.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/sound/soc/codecs/wm8994.c b/sound/soc/codecs/wm8994.c
-index 6e502af..2f1f5f8 100644
---- a/sound/soc/codecs/wm8994.c
-+++ b/sound/soc/codecs/wm8994.c
-@@ -3190,7 +3190,7 @@ static int wm8994_codec_probe(struct snd_soc_codec *codec)
- case 2:
- case 3:
- wm8994->hubs.dcs_codes_l = -9;
-- wm8994->hubs.dcs_codes_r = -5;
-+ wm8994->hubs.dcs_codes_r = -7;
- break;
- default:
- break;
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0008-mtd-ixp4xx-oops-in-ixp4xx_flash_probe.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0008-mtd-ixp4xx-oops-in-ixp4xx_flash_probe.patch
deleted file mode 100644
index b704a97..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0008-mtd-ixp4xx-oops-in-ixp4xx_flash_probe.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From 5afee8ffbb086ee0d779cba829f1d0faa0f35b9c Mon Sep 17 00:00:00 2001
-From: Marc Kleine-Budde <mkl at blackshift.org>
-Date: Wed, 8 Feb 2012 20:24:29 +0100
-Subject: [PATCH 08/60] mtd: ixp4xx: oops in ixp4xx_flash_probe
-
-commit a3c1e3b732b3708a80e4035b9d845f3f7c7dd0c9 upstream.
-
-In commit "c797533 mtd: abstract last MTD partition parser argument" the
-third argument of "mtd_device_parse_register()" changed from start address
-of the MTD device to a pointer to a struct.
-
-The "ixp4xx_flash_probe()" function was not converted properly, causing
-an oops during boot.
-
-This patch fixes the problem by filling the needed information into a
-"struct mtd_part_parser_data" and passing it to
-"mtd_device_parse_register()".
-
-Signed-off-by: Marc Kleine-Budde <mkl at blackshift.org>
-Signed-off-by: Artem Bityutskiy <artem.bityutskiy at linux.intel.com>
-Signed-off-by: David Woodhouse <David.Woodhouse at intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/mtd/maps/ixp4xx.c | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/mtd/maps/ixp4xx.c b/drivers/mtd/maps/ixp4xx.c
-index 3040901..696372f 100644
---- a/drivers/mtd/maps/ixp4xx.c
-+++ b/drivers/mtd/maps/ixp4xx.c
-@@ -182,6 +182,9 @@ static int ixp4xx_flash_probe(struct platform_device *dev)
- {
- struct flash_platform_data *plat = dev->dev.platform_data;
- struct ixp4xx_flash_info *info;
-+ struct mtd_part_parser_data ppdata = {
-+ .origin = dev->resource->start,
-+ };
- int err = -1;
-
- if (!plat)
-@@ -247,7 +250,7 @@ static int ixp4xx_flash_probe(struct platform_device *dev)
- /* Use the fast version */
- info->map.write = ixp4xx_write16;
-
-- err = mtd_device_parse_register(info->mtd, probes, dev->resource->start,
-+ err = mtd_device_parse_register(info->mtd, probes, &ppdata,
- plat->parts, plat->nr_parts);
- if (err) {
- printk(KERN_ERR "Could not parse partitions\n");
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0009-mtd-mips-lantiq-reintroduce-support-for-cmdline-part.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0009-mtd-mips-lantiq-reintroduce-support-for-cmdline-part.patch
deleted file mode 100644
index 5d9a1e6..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0009-mtd-mips-lantiq-reintroduce-support-for-cmdline-part.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From 1f6651f5448df6b40e8feafccceed942f192a430 Mon Sep 17 00:00:00 2001
-From: Daniel Schwierzeck <daniel.schwierzeck at googlemail.com>
-Date: Thu, 23 Feb 2012 17:59:49 +0100
-Subject: [PATCH 09/60] mtd: mips: lantiq: reintroduce support for cmdline
- partitions
-
-commit bf011f2ed53d587fdd8148c173c4f09ed77bdf1a upstream.
-
-Since commit ca97dec2ab5c87e9fbdf7e882e1820004a3966fa the
-command line parsing of MTD partitions does not work anymore.
-
-Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck at googlemail.com>
-Signed-off-by: John Crispin <blogic at openwrt.org>
-Signed-off-by: Artem Bityutskiy <artem.bityutskiy at linux.intel.com>
-Acked-by: John Crispin <blogic at openwrt.org>
-Signed-off-by: David Woodhouse <David.Woodhouse at intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/mtd/maps/lantiq-flash.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/mtd/maps/lantiq-flash.c b/drivers/mtd/maps/lantiq-flash.c
-index 4f10e27..764d468 100644
---- a/drivers/mtd/maps/lantiq-flash.c
-+++ b/drivers/mtd/maps/lantiq-flash.c
-@@ -45,6 +45,7 @@ struct ltq_mtd {
- };
-
- static char ltq_map_name[] = "ltq_nor";
-+static const char *ltq_probe_types[] __devinitconst = { "cmdlinepart", NULL };
-
- static map_word
- ltq_read16(struct map_info *map, unsigned long adr)
-@@ -168,7 +169,7 @@ ltq_mtd_probe(struct platform_device *pdev)
- cfi->addr_unlock1 ^= 1;
- cfi->addr_unlock2 ^= 1;
-
-- err = mtd_device_parse_register(ltq_mtd->mtd, NULL, 0,
-+ err = mtd_device_parse_register(ltq_mtd->mtd, ltq_probe_types, 0,
- ltq_mtd_data->parts, ltq_mtd_data->nr_parts);
- if (err) {
- dev_err(&pdev->dev, "failed to add partitions\n");
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0010-mtd-nand-gpmi-use-correct-member-for-checking-NAND_B.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0010-mtd-nand-gpmi-use-correct-member-for-checking-NAND_B.patch
deleted file mode 100644
index e7cbea3..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0010-mtd-nand-gpmi-use-correct-member-for-checking-NAND_B.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From a34ab661a8d66083d7e6bd4ff4e9d6758699d8ab Mon Sep 17 00:00:00 2001
-From: Wolfram Sang <w.sang at pengutronix.de>
-Date: Tue, 31 Jan 2012 13:10:43 +0100
-Subject: [PATCH 10/60] mtd: nand: gpmi: use correct member for checking
- NAND_BBT_USE_FLASH
-
-commit 5289966ea576a062b80319975b31b661c196ff9d upstream.
-
-This has been moved from .options to .bbt_options meanwhile. So, it
-currently checks for something totally different (NAND_OWN_BUFFERS) and
-decides according to that.
-
-Artem Bityutskiy: the options were moved in
-a40f734 mtd: nand: consolidate redundant flash-based BBT flags
-
-Artem Bityutskiy: CCing -stable
-
-Signed-off-by: Wolfram Sang <w.sang at pengutronix.de>
-Acked-by: Huang Shijie <b32955 at freescale.com>
-Signed-off-by: Artem Bityutskiy <artem.bityutskiy at linux.intel.com>
-Signed-off-by: David Woodhouse <David.Woodhouse at intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/mtd/nand/gpmi-nand/gpmi-nand.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/mtd/nand/gpmi-nand/gpmi-nand.c b/drivers/mtd/nand/gpmi-nand/gpmi-nand.c
-index 493ec2f..f39f83e 100644
---- a/drivers/mtd/nand/gpmi-nand/gpmi-nand.c
-+++ b/drivers/mtd/nand/gpmi-nand/gpmi-nand.c
-@@ -1124,7 +1124,7 @@ static int gpmi_block_markbad(struct mtd_info *mtd, loff_t ofs)
- chip->bbt[block >> 2] |= 0x01 << ((block & 0x03) << 1);
-
- /* Do we have a flash based bad block table ? */
-- if (chip->options & NAND_BBT_USE_FLASH)
-+ if (chip->bbt_options & NAND_BBT_USE_FLASH)
- ret = nand_update_bbt(mtd, ofs);
- else {
- chipnr = (int)(ofs >> chip->chip_shift);
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0011-mtd-sst25l-initialize-writebufsize.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0011-mtd-sst25l-initialize-writebufsize.patch
deleted file mode 100644
index 3fc3000..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0011-mtd-sst25l-initialize-writebufsize.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 187a3e03c6c3ddb6ec2a62402f9df4e26ea59d96 Mon Sep 17 00:00:00 2001
-From: Artem Bityutskiy <artem.bityutskiy at linux.intel.com>
-Date: Fri, 3 Feb 2012 10:16:50 +0200
-Subject: [PATCH 11/60] mtd: sst25l: initialize writebufsize
-
-commit c4cc625ea5958d065c21cc0fcea29e9ed8f3d2bc upstream.
-
-The writebufsize concept was introduce by commit
-"0e4ca7e mtd: add writebufsize field to mtd_info struct" and it represents
-the maximum amount of data the device writes to the media at a time. This is
-an important parameter for UBIFS which is used during recovery and which
-basically defines how big a corruption caused by a power cut can be.
-
-Set writebufsize to the flash page size because it is the maximum amount of
-data it writes at a time.
-
-Signed-off-by: Artem Bityutskiy <artem.bityutskiy at linux.intel.com>
-Signed-off-by: David Woodhouse <David.Woodhouse at intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/mtd/devices/sst25l.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/mtd/devices/sst25l.c b/drivers/mtd/devices/sst25l.c
-index d38ef3b..9c35250 100644
---- a/drivers/mtd/devices/sst25l.c
-+++ b/drivers/mtd/devices/sst25l.c
-@@ -402,6 +402,7 @@ static int __devinit sst25l_probe(struct spi_device *spi)
- flash->mtd.flags = MTD_CAP_NORFLASH;
- flash->mtd.erasesize = flash_info->erase_size;
- flash->mtd.writesize = flash_info->page_size;
-+ flash->mtd.writebufsize = flash_info->page_size;
- flash->mtd.size = flash_info->page_size * flash_info->nr_pages;
- flash->mtd.erase = sst25l_erase;
- flash->mtd.read = sst25l_read;
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0012-mtd-block2mtd-initialize-writebufsize.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0012-mtd-block2mtd-initialize-writebufsize.patch
deleted file mode 100644
index 1a57dc3..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0012-mtd-block2mtd-initialize-writebufsize.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From e9ade583fc6f98a39805d5cb7eba7048eaf17575 Mon Sep 17 00:00:00 2001
-From: Artem Bityutskiy <artem.bityutskiy at linux.intel.com>
-Date: Fri, 3 Feb 2012 09:32:44 +0200
-Subject: [PATCH 12/60] mtd: block2mtd: initialize writebufsize
-
-commit b604387411ec6a072e95910099262616edd2bd2f upstream.
-
-The writebufsize concept was introduce by commit
-"0e4ca7e mtd: add writebufsize field to mtd_info struct" and it represents
-the maximum amount of data the device writes to the media at a time. This is
-an important parameter for UBIFS which is used during recovery and which
-basically defines how big a corruption caused by a power cut can be.
-
-However, we forgot to set this parameter for block2mtd. Set it to PAGE_SIZE
-because this is actually the amount of data we write at a time.
-
-Signed-off-by: Artem Bityutskiy <artem.bityutskiy at linux.intel.com>
-Acked-by: Joern Engel <joern at lazybastard.org>
-Signed-off-by: David Woodhouse <David.Woodhouse at intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/mtd/devices/block2mtd.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/mtd/devices/block2mtd.c b/drivers/mtd/devices/block2mtd.c
-index b78f231..8cd983c 100644
---- a/drivers/mtd/devices/block2mtd.c
-+++ b/drivers/mtd/devices/block2mtd.c
-@@ -284,6 +284,7 @@ static struct block2mtd_dev *add_device(char *devname, int erase_size)
- dev->mtd.size = dev->blkdev->bd_inode->i_size & PAGE_MASK;
- dev->mtd.erasesize = erase_size;
- dev->mtd.writesize = 1;
-+ dev->mtd.writebufsize = PAGE_SIZE;
- dev->mtd.type = MTD_RAM;
- dev->mtd.flags = MTD_CAP_RAM;
- dev->mtd.erase = block2mtd_erase;
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0013-mtd-lart-initialize-writebufsize.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0013-mtd-lart-initialize-writebufsize.patch
deleted file mode 100644
index 12aaba0..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0013-mtd-lart-initialize-writebufsize.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 377b1a9ee6412981a7c01ea196c81401ded07d97 Mon Sep 17 00:00:00 2001
-From: Artem Bityutskiy <artem.bityutskiy at linux.intel.com>
-Date: Fri, 3 Feb 2012 09:53:28 +0200
-Subject: [PATCH 13/60] mtd: lart: initialize writebufsize
-
-commit fcc44a07dae0af16e84e93425fc8afe642ddc603 upstream.
-
-The writebufsize concept was introduce by commit
-"0e4ca7e mtd: add writebufsize field to mtd_info struct" and it represents
-the maximum amount of data the device writes to the media at a time. This is
-an important parameter for UBIFS which is used during recovery and which
-basically defines how big a corruption caused by a power cut can be.
-
-Set writebufsize to 4 because this drivers writes at max 4 bytes at a time.
-
-Signed-off-by: Artem Bityutskiy <artem.bityutskiy at linux.intel.com>
-Signed-off-by: David Woodhouse <David.Woodhouse at intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/mtd/devices/lart.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/mtd/devices/lart.c b/drivers/mtd/devices/lart.c
-index 3a11ea6..5f12668 100644
---- a/drivers/mtd/devices/lart.c
-+++ b/drivers/mtd/devices/lart.c
-@@ -630,6 +630,7 @@ static int __init lart_flash_init (void)
- mtd.name = module_name;
- mtd.type = MTD_NORFLASH;
- mtd.writesize = 1;
-+ mtd.writebufsize = 4;
- mtd.flags = MTD_CAP_NORFLASH;
- mtd.size = FLASH_BLOCKSIZE_PARAM * FLASH_NUMBLOCKS_16m_PARAM + FLASH_BLOCKSIZE_MAIN * FLASH_NUMBLOCKS_16m_MAIN;
- mtd.erasesize = FLASH_BLOCKSIZE_MAIN;
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0014-mtd-m25p80-set-writebufsize.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0014-mtd-m25p80-set-writebufsize.patch
deleted file mode 100644
index 6c7ac61..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0014-mtd-m25p80-set-writebufsize.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 60498eb2c6666663bf2d0f09d805048e32108fe8 Mon Sep 17 00:00:00 2001
-From: Brian Norris <computersforpeace at gmail.com>
-Date: Tue, 31 Jan 2012 00:06:03 -0800
-Subject: [PATCH 14/60] mtd: m25p80: set writebufsize
-
-commit b54f47c8bcfc5f766bf13ec31bd7dd1d4726d33b upstream.
-
-Using UBI on m25p80 can give messages like:
-
- UBI error: io_init: bad write buffer size 0 for 1 min. I/O unit
-
-We need to initialize writebufsize; I think "page_size" is the correct
-"bufsize", although I'm not sure. Comments?
-
-Signed-off-by: Brian Norris <computersforpeace at gmail.com>
-Signed-off-by: Artem Bityutskiy <artem.bityutskiy at linux.intel.com>
-Signed-off-by: David Woodhouse <David.Woodhouse at intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/mtd/devices/m25p80.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/mtd/devices/m25p80.c b/drivers/mtd/devices/m25p80.c
-index 884904d..9f9982f 100644
---- a/drivers/mtd/devices/m25p80.c
-+++ b/drivers/mtd/devices/m25p80.c
-@@ -932,6 +932,7 @@ static int __devinit m25p_probe(struct spi_device *spi)
- ppdata.of_node = spi->dev.of_node;
- flash->mtd.dev.parent = &spi->dev;
- flash->page_size = info->page_size;
-+ flash->mtd.writebufsize = flash->page_size;
-
- if (info->addr_width)
- flash->addr_width = info->addr_width;
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0015-ACPI-Do-cpufreq-clamping-for-throttling-per-package-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0015-ACPI-Do-cpufreq-clamping-for-throttling-per-package-.patch
deleted file mode 100644
index 5a9fe06..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0015-ACPI-Do-cpufreq-clamping-for-throttling-per-package-.patch
+++ /dev/null
@@ -1,132 +0,0 @@
-From 74dd093eb7fe9227cbcf62d0d9467d679a46982b Mon Sep 17 00:00:00 2001
-From: Andi Kleen <andi at firstfloor.org>
-Date: Mon, 6 Feb 2012 08:17:11 -0800
-Subject: [PATCH 15/60] ACPI: Do cpufreq clamping for throttling per package
- v2
-
-commit 2815ab92ba3ab27556212cc306288dc95692824b upstream.
-
-On Intel CPUs the processor typically uses the highest frequency
-set by any logical CPU. When the system overheats
-Linux first forces the frequency to the lowest available one
-to lower the temperature.
-
-However this was done only per logical CPU, which means all
-logical CPUs in a package would need to go through this before
-the frequency is actually lowered.
-
-Worse this delay actually prevents real throttling, because
-the real throttle code only proceeds when the lowest frequency
-is already reached.
-
-So when a throttle event happens force the lowest frequency
-for all CPUs in the package where it happened. The per CPU
-state is now kept per package, not per logical CPU. An alternative
-would be to do it per cpufreq unit, but since we want to bring
-down the temperature of the complete chip it's better
-to do it for all.
-
-In principle it may even make sense to do it for all CPUs,
-but I kept it on the package for now.
-
-With this change the frequency is actually lowered, which
-in terms also allows real throttling to proceed.
-
-I also removed an unnecessary per cpu variable initialization.
-
-v2: Fix package mapping
-
-Signed-off-by: Andi Kleen <ak at linux.intel.com>
-Signed-off-by: Len Brown <len.brown at intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/acpi/processor_thermal.c | 45 +++++++++++++++++++++++++++++++-------
- 1 file changed, 37 insertions(+), 8 deletions(-)
-
-diff --git a/drivers/acpi/processor_thermal.c b/drivers/acpi/processor_thermal.c
-index 870550d..4da7d9d 100644
---- a/drivers/acpi/processor_thermal.c
-+++ b/drivers/acpi/processor_thermal.c
-@@ -58,6 +58,27 @@ ACPI_MODULE_NAME("processor_thermal");
- static DEFINE_PER_CPU(unsigned int, cpufreq_thermal_reduction_pctg);
- static unsigned int acpi_thermal_cpufreq_is_init = 0;
-
-+#define reduction_pctg(cpu) \
-+ per_cpu(cpufreq_thermal_reduction_pctg, phys_package_first_cpu(cpu))
-+
-+/*
-+ * Emulate "per package data" using per cpu data (which should really be
-+ * provided elsewhere)
-+ *
-+ * Note we can lose a CPU on cpu hotunplug, in this case we forget the state
-+ * temporarily. Fortunately that's not a big issue here (I hope)
-+ */
-+static int phys_package_first_cpu(int cpu)
-+{
-+ int i;
-+ int id = topology_physical_package_id(cpu);
-+
-+ for_each_online_cpu(i)
-+ if (topology_physical_package_id(i) == id)
-+ return i;
-+ return 0;
-+}
-+
- static int cpu_has_cpufreq(unsigned int cpu)
- {
- struct cpufreq_policy policy;
-@@ -77,7 +98,7 @@ static int acpi_thermal_cpufreq_notifier(struct notifier_block *nb,
-
- max_freq = (
- policy->cpuinfo.max_freq *
-- (100 - per_cpu(cpufreq_thermal_reduction_pctg, policy->cpu) * 20)
-+ (100 - reduction_pctg(policy->cpu) * 20)
- ) / 100;
-
- cpufreq_verify_within_limits(policy, 0, max_freq);
-@@ -103,16 +124,28 @@ static int cpufreq_get_cur_state(unsigned int cpu)
- if (!cpu_has_cpufreq(cpu))
- return 0;
-
-- return per_cpu(cpufreq_thermal_reduction_pctg, cpu);
-+ return reduction_pctg(cpu);
- }
-
- static int cpufreq_set_cur_state(unsigned int cpu, int state)
- {
-+ int i;
-+
- if (!cpu_has_cpufreq(cpu))
- return 0;
-
-- per_cpu(cpufreq_thermal_reduction_pctg, cpu) = state;
-- cpufreq_update_policy(cpu);
-+ reduction_pctg(cpu) = state;
-+
-+ /*
-+ * Update all the CPUs in the same package because they all
-+ * contribute to the temperature and often share the same
-+ * frequency.
-+ */
-+ for_each_online_cpu(i) {
-+ if (topology_physical_package_id(i) ==
-+ topology_physical_package_id(cpu))
-+ cpufreq_update_policy(i);
-+ }
- return 0;
- }
-
-@@ -120,10 +153,6 @@ void acpi_thermal_cpufreq_init(void)
- {
- int i;
-
-- for (i = 0; i < nr_cpu_ids; i++)
-- if (cpu_present(i))
-- per_cpu(cpufreq_thermal_reduction_pctg, i) = 0;
--
- i = cpufreq_register_notifier(&acpi_thermal_cpufreq_notifier_block,
- CPUFREQ_POLICY_NOTIFIER);
- if (!i)
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0016-PNPACPI-Fix-device-ref-leaking-in-acpi_pnp_match.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0016-PNPACPI-Fix-device-ref-leaking-in-acpi_pnp_match.patch
deleted file mode 100644
index 3e12d94..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0016-PNPACPI-Fix-device-ref-leaking-in-acpi_pnp_match.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 2d081f28eff72e6dec19f1e720a03ee656e93902 Mon Sep 17 00:00:00 2001
-From: Yinghai Lu <yinghai at kernel.org>
-Date: Sat, 3 Mar 2012 13:29:20 -0800
-Subject: [PATCH 16/60] PNPACPI: Fix device ref leaking in acpi_pnp_match
-
-commit 89e96ada572fb216e582dbe3f64e1a6939a37f74 upstream.
-
-During testing pci root bus removal, found some root bus bridge is not freed.
-If booting with pnpacpi=off, those hostbridge could be freed without problem.
-It turns out that some devices reference are not released during acpi_pnp_match.
-that match should not hold one device ref during every calling.
-Add pu_device calling before returning.
-
-Signed-off-by: Yinghai Lu <yinghai at kernel.org>
-Signed-off-by: Len Brown <len.brown at intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/pnp/pnpacpi/core.c | 7 ++++++-
- 1 file changed, 6 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/pnp/pnpacpi/core.c b/drivers/pnp/pnpacpi/core.c
-index b00c176..d21e8f5 100644
---- a/drivers/pnp/pnpacpi/core.c
-+++ b/drivers/pnp/pnpacpi/core.c
-@@ -321,9 +321,14 @@ static int __init acpi_pnp_match(struct device *dev, void *_pnp)
- {
- struct acpi_device *acpi = to_acpi_device(dev);
- struct pnp_dev *pnp = _pnp;
-+ struct device *physical_device;
-+
-+ physical_device = acpi_get_physical_device(acpi->handle);
-+ if (physical_device)
-+ put_device(physical_device);
-
- /* true means it matched */
-- return !acpi_get_physical_device(acpi->handle)
-+ return !physical_device
- && compare_pnp_id(pnp->id, acpi_device_hid(acpi));
- }
-
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0017-ACPICA-Fix-regression-in-FADT-revision-checks.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0017-ACPICA-Fix-regression-in-FADT-revision-checks.patch
deleted file mode 100644
index 05e05f3..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0017-ACPICA-Fix-regression-in-FADT-revision-checks.patch
+++ /dev/null
@@ -1,69 +0,0 @@
-From 3dc8e6e70444a964715bc72938d2a1f5330a0aff Mon Sep 17 00:00:00 2001
-From: Julian Anastasov <ja at ssi.bg>
-Date: Thu, 23 Feb 2012 22:40:43 +0200
-Subject: [PATCH 17/60] ACPICA: Fix regression in FADT revision checks
-
-commit 3e80acd1af40fcd91a200b0416a7616b20c5d647 upstream.
-
- commit 64b3db22c04586997ab4be46dd5a5b99f8a2d390 (2.6.39),
-"Remove use of unreliable FADT revision field" causes regression
-for old P4 systems because now cst_control and other fields are
-not reset to 0.
-
- The effect is that acpi_processor_power_init will notice
-cst_control != 0 and a write to CST_CNT register is performed
-that should not happen. As result, the system oopses after the
-"No _CST, giving up" message, sometimes in acpi_ns_internalize_name,
-sometimes in acpi_ns_get_type, usually at random places. May be
-during migration to CPU 1 in acpi_processor_get_throttling.
-
- Every one of these settings help to avoid this problem:
- - acpi=off
- - processor.nocst=1
- - maxcpus=1
-
- The fix is to update acpi_gbl_FADT.header.length after
-the original value is used to check for old revisions.
-
-https://bugzilla.kernel.org/show_bug.cgi?id=42700
-https://bugzilla.redhat.com/show_bug.cgi?id=727865
-
-Signed-off-by: Julian Anastasov <ja at ssi.bg>
-Acked-by: Bob Moore <robert.moore at intel.com>
-Signed-off-by: Len Brown <len.brown at intel.com>
-Cc: Jonathan Nieder <jrnieder at gmail.com>
-Cc: Josh Boyer <jwboyer at gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/acpi/acpica/tbfadt.c | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/acpi/acpica/tbfadt.c b/drivers/acpi/acpica/tbfadt.c
-index 6f5588e..4c531b4 100644
---- a/drivers/acpi/acpica/tbfadt.c
-+++ b/drivers/acpi/acpica/tbfadt.c
-@@ -350,10 +350,6 @@ static void acpi_tb_convert_fadt(void)
- u32 address32;
- u32 i;
-
-- /* Update the local FADT table header length */
--
-- acpi_gbl_FADT.header.length = sizeof(struct acpi_table_fadt);
--
- /*
- * Expand the 32-bit FACS and DSDT addresses to 64-bit as necessary.
- * Later code will always use the X 64-bit field. Also, check for an
-@@ -395,6 +391,10 @@ static void acpi_tb_convert_fadt(void)
- acpi_gbl_FADT.boot_flags = 0;
- }
-
-+ /* Update the local FADT table header length */
-+
-+ acpi_gbl_FADT.header.length = sizeof(struct acpi_table_fadt);
-+
- /*
- * Expand the ACPI 1.0 32-bit addresses to the ACPI 2.0 64-bit "X"
- * generic address structures as necessary. Later code will always use
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0018-modpost-fix-ALL_INIT_DATA_SECTIONS.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0018-modpost-fix-ALL_INIT_DATA_SECTIONS.patch
deleted file mode 100644
index 7bd2cc2..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0018-modpost-fix-ALL_INIT_DATA_SECTIONS.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 3d588be49327372d7c61bcf5e1c691031ecee200 Mon Sep 17 00:00:00 2001
-From: Jan Beulich <JBeulich at suse.com>
-Date: Thu, 8 Mar 2012 09:41:25 +0000
-Subject: [PATCH 18/60] modpost: fix ALL_INIT_DATA_SECTIONS
-
-commit 9aaf440f8fabcebf9ea79a62ccf4c212e6544b49 upstream.
-
-This was lacking a comma between two supposed to be separate strings.
-
-Signed-off-by: Jan Beulich <jbeulich at suse.com>
-Signed-off-by: Michal Marek <mmarek at suse.cz>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- scripts/mod/modpost.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
-index 2bd594e..159b4cc 100644
---- a/scripts/mod/modpost.c
-+++ b/scripts/mod/modpost.c
-@@ -849,7 +849,7 @@ static void check_section(const char *modname, struct elf_info *elf,
-
- #define ALL_INIT_DATA_SECTIONS \
- ".init.setup$", ".init.rodata$", \
-- ".devinit.rodata$", ".cpuinit.rodata$", ".meminit.rodata$" \
-+ ".devinit.rodata$", ".cpuinit.rodata$", ".meminit.rodata$", \
- ".init.data$", ".devinit.data$", ".cpuinit.data$", ".meminit.data$"
- #define ALL_EXIT_DATA_SECTIONS \
- ".exit.data$", ".devexit.data$", ".cpuexit.data$", ".memexit.data$"
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0019-genirq-Adjust-irq-thread-affinity-on-IRQ_SET_MASK_OK.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0019-genirq-Adjust-irq-thread-affinity-on-IRQ_SET_MASK_OK.patch
deleted file mode 100644
index 1bd3149..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0019-genirq-Adjust-irq-thread-affinity-on-IRQ_SET_MASK_OK.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From a62ad6cb0e0456a184ba7678d456a14cd33dfeea Mon Sep 17 00:00:00 2001
-From: Jiang Liu <liuj97 at gmail.com>
-Date: Fri, 30 Mar 2012 23:11:33 +0800
-Subject: [PATCH 19/60] genirq: Adjust irq thread affinity on
- IRQ_SET_MASK_OK_NOCOPY return value
-
-commit f5cb92ac82d06cb583c1f66666314c5c0a4d7913 upstream.
-
-irq_move_masked_irq() checks the return code of
-chip->irq_set_affinity() only for 0, but IRQ_SET_MASK_OK_NOCOPY is
-also a valid return code, which is there to avoid a redundant copy of
-the cpumask. But in case of IRQ_SET_MASK_OK_NOCOPY we not only avoid
-the redundant copy, we also fail to adjust the thread affinity of an
-eventually threaded interrupt handler.
-
-Handle IRQ_SET_MASK_OK (==0) and IRQ_SET_MASK_OK_NOCOPY(==1) return
-values correctly by checking the valid return values seperately.
-
-Signed-off-by: Jiang Liu <jiang.liu at huawei.com>
-Cc: Jiang Liu <liuj97 at gmail.com>
-Cc: Keping Chen <chenkeping at huawei.com>
-Link: http://lkml.kernel.org/r/1333120296-13563-2-git-send-email-jiang.liu@huawei.com
-Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- kernel/irq/migration.c | 10 +++++++---
- 1 file changed, 7 insertions(+), 3 deletions(-)
-
-diff --git a/kernel/irq/migration.c b/kernel/irq/migration.c
-index 4742090..c3c8975 100644
---- a/kernel/irq/migration.c
-+++ b/kernel/irq/migration.c
-@@ -43,12 +43,16 @@ void irq_move_masked_irq(struct irq_data *idata)
- * masking the irqs.
- */
- if (likely(cpumask_any_and(desc->pending_mask, cpu_online_mask)
-- < nr_cpu_ids))
-- if (!chip->irq_set_affinity(&desc->irq_data,
-- desc->pending_mask, false)) {
-+ < nr_cpu_ids)) {
-+ int ret = chip->irq_set_affinity(&desc->irq_data,
-+ desc->pending_mask, false);
-+ switch (ret) {
-+ case IRQ_SET_MASK_OK:
- cpumask_copy(desc->irq_data.affinity, desc->pending_mask);
-+ case IRQ_SET_MASK_OK_NOCOPY:
- irq_set_thread_affinity(desc);
- }
-+ }
-
- cpumask_clear(desc->pending_mask);
- }
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0020-tracing-Fix-ftrace-stack-trace-entries.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0020-tracing-Fix-ftrace-stack-trace-entries.patch
deleted file mode 100644
index 00288c5..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0020-tracing-Fix-ftrace-stack-trace-entries.patch
+++ /dev/null
@@ -1,77 +0,0 @@
-From fea2076685048df406c2fc4d6542837a4306c6fd Mon Sep 17 00:00:00 2001
-From: Wolfgang Mauerer <wolfgang.mauerer at siemens.com>
-Date: Thu, 22 Mar 2012 11:18:20 +0100
-Subject: [PATCH 20/60] tracing: Fix ftrace stack trace entries
-
-commit 01de982abf8c9e10fc3089e10585cd2cc914bdab upstream.
-
-8 hex characters tell only half the tale for 64 bit CPUs,
-so use the appropriate length.
-
-Link: http://lkml.kernel.org/r/1332411501-8059-2-git-send-email-wolfgang.mauerer@siemens.com
-
-Signed-off-by: Wolfgang Mauerer <wolfgang.mauerer at siemens.com>
-Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- kernel/trace/trace_entries.h | 16 ++++++++++++----
- kernel/trace/trace_export.c | 2 +-
- 2 files changed, 13 insertions(+), 5 deletions(-)
-
-diff --git a/kernel/trace/trace_entries.h b/kernel/trace/trace_entries.h
-index 9336590..205dcac 100644
---- a/kernel/trace/trace_entries.h
-+++ b/kernel/trace/trace_entries.h
-@@ -156,6 +156,12 @@ FTRACE_ENTRY_DUP(wakeup, ctx_switch_entry,
-
- #define FTRACE_STACK_ENTRIES 8
-
-+#ifndef CONFIG_64BIT
-+# define IP_FMT "%08lx"
-+#else
-+# define IP_FMT "%016lx"
-+#endif
-+
- FTRACE_ENTRY(kernel_stack, stack_entry,
-
- TRACE_STACK,
-@@ -165,8 +171,9 @@ FTRACE_ENTRY(kernel_stack, stack_entry,
- __dynamic_array(unsigned long, caller )
- ),
-
-- F_printk("\t=> (%08lx)\n\t=> (%08lx)\n\t=> (%08lx)\n\t=> (%08lx)\n"
-- "\t=> (%08lx)\n\t=> (%08lx)\n\t=> (%08lx)\n\t=> (%08lx)\n",
-+ F_printk("\t=> (" IP_FMT ")\n\t=> (" IP_FMT ")\n\t=> (" IP_FMT ")\n"
-+ "\t=> (" IP_FMT ")\n\t=> (" IP_FMT ")\n\t=> (" IP_FMT ")\n"
-+ "\t=> (" IP_FMT ")\n\t=> (" IP_FMT ")\n",
- __entry->caller[0], __entry->caller[1], __entry->caller[2],
- __entry->caller[3], __entry->caller[4], __entry->caller[5],
- __entry->caller[6], __entry->caller[7])
-@@ -181,8 +188,9 @@ FTRACE_ENTRY(user_stack, userstack_entry,
- __array( unsigned long, caller, FTRACE_STACK_ENTRIES )
- ),
-
-- F_printk("\t=> (%08lx)\n\t=> (%08lx)\n\t=> (%08lx)\n\t=> (%08lx)\n"
-- "\t=> (%08lx)\n\t=> (%08lx)\n\t=> (%08lx)\n\t=> (%08lx)\n",
-+ F_printk("\t=> (" IP_FMT ")\n\t=> (" IP_FMT ")\n\t=> (" IP_FMT ")\n"
-+ "\t=> (" IP_FMT ")\n\t=> (" IP_FMT ")\n\t=> (" IP_FMT ")\n"
-+ "\t=> (" IP_FMT ")\n\t=> (" IP_FMT ")\n",
- __entry->caller[0], __entry->caller[1], __entry->caller[2],
- __entry->caller[3], __entry->caller[4], __entry->caller[5],
- __entry->caller[6], __entry->caller[7])
-diff --git a/kernel/trace/trace_export.c b/kernel/trace/trace_export.c
-index bbeec31..ad4000c 100644
---- a/kernel/trace/trace_export.c
-+++ b/kernel/trace/trace_export.c
-@@ -150,7 +150,7 @@ ftrace_define_fields_##name(struct ftrace_event_call *event_call) \
- #define __dynamic_array(type, item)
-
- #undef F_printk
--#define F_printk(fmt, args...) #fmt ", " __stringify(args)
-+#define F_printk(fmt, args...) __stringify(fmt) ", " __stringify(args)
-
- #undef FTRACE_ENTRY
- #define FTRACE_ENTRY(call, struct_name, etype, tstruct, print) \
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0021-tracing-Fix-ent_size-in-trace-output.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0021-tracing-Fix-ent_size-in-trace-output.patch
deleted file mode 100644
index d830db2..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0021-tracing-Fix-ent_size-in-trace-output.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From 23cc657edadf5b126485d90d9a6178478ccc7a9d Mon Sep 17 00:00:00 2001
-From: Steven Rostedt <srostedt at redhat.com>
-Date: Tue, 27 Mar 2012 10:43:28 -0400
-Subject: [PATCH 21/60] tracing: Fix ent_size in trace output
-
-commit 12b5da349a8b94c9dbc3430a6bc42eabd9eaf50b upstream.
-
-When reading the trace file, the records of each of the per_cpu buffers
-are examined to find the next event to print out. At the point of looking
-at the event, the size of the event is recorded. But if the first event is
-chosen, the other events in the other CPU buffers will reset the event size
-that is stored in the iterator descriptor, causing the event size passed to
-the output functions to be incorrect.
-
-In most cases this is not a problem, but for the case of stack traces, it
-is. With the change to the stack tracing to record a dynamic number of
-back traces, the output depends on the size of the entry instead of the
-fixed 8 back traces. When the entry size is not correct, the back traces
-would not be fully printed.
-
-Note, reading from the per-cpu trace files were not affected.
-
-Reported-by: Thomas Gleixner <tglx at linutronix.de>
-Tested-by: Thomas Gleixner <tglx at linutronix.de>
-Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- kernel/trace/trace.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
-index f2bd275..697e49d 100644
---- a/kernel/trace/trace.c
-+++ b/kernel/trace/trace.c
-@@ -1642,6 +1642,7 @@ __find_next_entry(struct trace_iterator *iter, int *ent_cpu,
- int cpu_file = iter->cpu_file;
- u64 next_ts = 0, ts;
- int next_cpu = -1;
-+ int next_size = 0;
- int cpu;
-
- /*
-@@ -1673,9 +1674,12 @@ __find_next_entry(struct trace_iterator *iter, int *ent_cpu,
- next_cpu = cpu;
- next_ts = ts;
- next_lost = lost_events;
-+ next_size = iter->ent_size;
- }
- }
-
-+ iter->ent_size = next_size;
-+
- if (ent_cpu)
- *ent_cpu = next_cpu;
-
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0022-m68k-mac-Add-missing-platform-check-before-registeri.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0022-m68k-mac-Add-missing-platform-check-before-registeri.patch
deleted file mode 100644
index 05958eb..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0022-m68k-mac-Add-missing-platform-check-before-registeri.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From fced6a21a4444111945939b57d4f274dcb9d0cdc Mon Sep 17 00:00:00 2001
-From: Geert Uytterhoeven <geert at linux-m68k.org>
-Date: Sun, 18 Mar 2012 13:21:38 +0100
-Subject: [PATCH 22/60] m68k/mac: Add missing platform check before
- registering platform devices
-
-commit 6cfeba53911d6d2f17ebbd1246893557d5ff5aeb upstream.
-
-On multi-platform kernels, the Mac platform devices should be registered
-when running on Mac only. Else it may crash later.
-
-Signed-off-by: Geert Uytterhoeven <geert at linux-m68k.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/m68k/mac/config.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/arch/m68k/mac/config.c b/arch/m68k/mac/config.c
-index c247de0..1918d76 100644
---- a/arch/m68k/mac/config.c
-+++ b/arch/m68k/mac/config.c
-@@ -950,6 +950,9 @@ int __init mac_platform_init(void)
- {
- u8 *swim_base;
-
-+ if (!MACH_IS_MAC)
-+ return -ENODEV;
-+
- /*
- * Serial devices
- */
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0023-mac80211-fix-possible-tid_rx-reorder_timer-use-after.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0023-mac80211-fix-possible-tid_rx-reorder_timer-use-after.patch
deleted file mode 100644
index 52d26c3..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0023-mac80211-fix-possible-tid_rx-reorder_timer-use-after.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From 0cf704acf102ad1855f06ce26e56e34ebd63fc3c Mon Sep 17 00:00:00 2001
-From: Stanislaw Gruszka <sgruszka at redhat.com>
-Date: Mon, 19 Mar 2012 16:00:26 +0100
-Subject: [PATCH 23/60] mac80211: fix possible tid_rx->reorder_timer use after
- free
-
-commit d72308bff5c2fa207949a5925b020bce74495e33 upstream.
-
-Is possible that we will arm the tid_rx->reorder_timer after
-del_timer_sync() in ___ieee80211_stop_rx_ba_session(). We need to stop
-timer after RCU grace period finish, so move it to
-ieee80211_free_tid_rx(). Timer will not be armed again, as
-rcu_dereference(sta->ampdu_mlme.tid_rx[tid]) will return NULL.
-
-Debug object detected problem with the following warning:
-ODEBUG: free active (active state 0) object type: timer_list hint: sta_rx_agg_reorder_timer_expired+0x0/0xf0 [mac80211]
-
-Bug report (with all warning messages):
-https://bugzilla.redhat.com/show_bug.cgi?id=804007
-
-Reported-by: "jan p. springer" <jsd at igroup.org>
-Signed-off-by: Stanislaw Gruszka <sgruszka at redhat.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- net/mac80211/agg-rx.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/net/mac80211/agg-rx.c b/net/mac80211/agg-rx.c
-index 41c2310..aea1559 100644
---- a/net/mac80211/agg-rx.c
-+++ b/net/mac80211/agg-rx.c
-@@ -49,6 +49,8 @@ static void ieee80211_free_tid_rx(struct rcu_head *h)
- container_of(h, struct tid_ampdu_rx, rcu_head);
- int i;
-
-+ del_timer_sync(&tid_rx->reorder_timer);
-+
- for (i = 0; i < tid_rx->buf_size; i++)
- dev_kfree_skb(tid_rx->reorder_buf[i]);
- kfree(tid_rx->reorder_buf);
-@@ -88,7 +90,6 @@ void ___ieee80211_stop_rx_ba_session(struct sta_info *sta, u16 tid,
- tid, 0, reason);
-
- del_timer_sync(&tid_rx->session_timer);
-- del_timer_sync(&tid_rx->reorder_timer);
-
- call_rcu(&tid_rx->rcu_head, ieee80211_free_tid_rx);
- }
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0024-rtlwifi-rtl8192ce-rtl8192cu-rtl8192de-Fix-low-gain-s.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0024-rtlwifi-rtl8192ce-rtl8192cu-rtl8192de-Fix-low-gain-s.patch
deleted file mode 100644
index a6dfc46..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0024-rtlwifi-rtl8192ce-rtl8192cu-rtl8192de-Fix-low-gain-s.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From 2e80dec6dad3b037b7b6499048c139436c6f0710 Mon Sep 17 00:00:00 2001
-From: Larry Finger <Larry.Finger at lwfinger.net>
-Date: Mon, 26 Mar 2012 09:59:48 -0500
-Subject: [PATCH 24/60] rtlwifi: rtl8192ce: rtl8192cu: rtl8192de: Fix low-gain
- setting when scanning
-
-commit 643c61e119459e9d750087b7b34be94491efebf9 upstream.
-
-In https://bugzilla.redhat.com/show_bug.cgi?id=770207, slowdowns of driver
-rtl8192ce are reported. One fix (commit a9b89e2) has already been applied,
-and it helped, but the maximum RX speed would still drop to 1 Mbps. As in
-the previous fix, the initial gain was determined to be the problem; however,
-the problem arises from a setting of the gain when scans are started.
-
-Driver rtl8192de also has the same code structure - this one is fixed as well.
-
-Reported-and-Tested-by: Ivan Pesin <ivan.pesin at gmail.com>
-Signed-off-by: Larry Finger <Larry.Finger at lwfinger.net>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/net/wireless/rtlwifi/rtl8192c/phy_common.c | 2 +-
- drivers/net/wireless/rtlwifi/rtl8192de/phy.c | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/net/wireless/rtlwifi/rtl8192c/phy_common.c b/drivers/net/wireless/rtlwifi/rtl8192c/phy_common.c
-index 1f07558..f20678a 100644
---- a/drivers/net/wireless/rtlwifi/rtl8192c/phy_common.c
-+++ b/drivers/net/wireless/rtlwifi/rtl8192c/phy_common.c
-@@ -1968,7 +1968,7 @@ void rtl92c_phy_set_io(struct ieee80211_hw *hw)
- break;
- case IO_CMD_PAUSE_DM_BY_SCAN:
- rtlphy->initgain_backup.xaagccore1 = dm_digtable.cur_igvalue;
-- dm_digtable.cur_igvalue = 0x17;
-+ dm_digtable.cur_igvalue = 0x37;
- rtl92c_dm_write_dig(hw);
- break;
- default:
-diff --git a/drivers/net/wireless/rtlwifi/rtl8192de/phy.c b/drivers/net/wireless/rtlwifi/rtl8192de/phy.c
-index 0883349..2cf4c5f 100644
---- a/drivers/net/wireless/rtlwifi/rtl8192de/phy.c
-+++ b/drivers/net/wireless/rtlwifi/rtl8192de/phy.c
-@@ -3192,7 +3192,7 @@ static void rtl92d_phy_set_io(struct ieee80211_hw *hw)
- break;
- case IO_CMD_PAUSE_DM_BY_SCAN:
- rtlphy->initgain_backup.xaagccore1 = de_digtable.cur_igvalue;
-- de_digtable.cur_igvalue = 0x17;
-+ de_digtable.cur_igvalue = 0x37;
- rtl92d_dm_write_dig(hw);
- break;
- default:
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0025-drm-Validate-requested-virtual-size-against-allocate.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0025-drm-Validate-requested-virtual-size-against-allocate.patch
deleted file mode 100644
index f38c6fb..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0025-drm-Validate-requested-virtual-size-against-allocate.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From 604965714e342993a12bd7aff566b9d4dd531fe9 Mon Sep 17 00:00:00 2001
-From: Chris Wilson <chris at chris-wilson.co.uk>
-Date: Mon, 26 Mar 2012 21:15:53 +0100
-Subject: [PATCH 25/60] drm: Validate requested virtual size against allocated
- fb size
-
-commit 62fb376e214d3c1bfdf6fbb77dac162f6da04d7e upstream.
-
-mplayer -vo fbdev tries to create a screen that is twice as tall as the
-allocated framebuffer for "doublebuffering". By default, and all in-tree
-users, only sufficient memory is allocated and mapped to satisfy the
-smallest framebuffer and the virtual size is no larger than the actual.
-For these users, we should therefore reject any userspace request to
-create a screen that requires a buffer larger than the framebuffer
-originally allocated.
-
-References: https://bugs.freedesktop.org/show_bug.cgi?id=38138
-Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
-Reviewed-by: Daniel Vetter <daniel.vetter at ffwll.ch>
-Signed-off-by: Dave Airlie <airlied at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/gpu/drm/drm_fb_helper.c | 8 ++++++--
- 1 file changed, 6 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c
-index 80fe39d..dd58373 100644
---- a/drivers/gpu/drm/drm_fb_helper.c
-+++ b/drivers/gpu/drm/drm_fb_helper.c
-@@ -610,9 +610,13 @@ int drm_fb_helper_check_var(struct fb_var_screeninfo *var,
- return -EINVAL;
-
- /* Need to resize the fb object !!! */
-- if (var->bits_per_pixel > fb->bits_per_pixel || var->xres > fb->width || var->yres > fb->height) {
-+ if (var->bits_per_pixel > fb->bits_per_pixel ||
-+ var->xres > fb->width || var->yres > fb->height ||
-+ var->xres_virtual > fb->width || var->yres_virtual > fb->height) {
- DRM_DEBUG("fb userspace requested width/height/bpp is greater than current fb "
-- "object %dx%d-%d > %dx%d-%d\n", var->xres, var->yres, var->bits_per_pixel,
-+ "request %dx%d-%d (virtual %dx%d) > %dx%d-%d\n",
-+ var->xres, var->yres, var->bits_per_pixel,
-+ var->xres_virtual, var->yres_virtual,
- fb->width, fb->height, fb->bits_per_pixel);
- return -EINVAL;
- }
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0026-drm-radeon-kms-fix-fans-after-resume.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0026-drm-radeon-kms-fix-fans-after-resume.patch
deleted file mode 100644
index 44a92d2..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0026-drm-radeon-kms-fix-fans-after-resume.patch
+++ /dev/null
@@ -1,75 +0,0 @@
-From bfb12525292fbd7a9837de23fc1e8dda589b43a1 Mon Sep 17 00:00:00 2001
-From: Alex Deucher <alexander.deucher at amd.com>
-Date: Thu, 29 Mar 2012 19:04:08 -0400
-Subject: [PATCH 26/60] drm/radeon/kms: fix fans after resume
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit 402976fe51b2d1a58a29ba06fa1ca5ace3a4cdcd upstream.
-
-On pre-R600 asics, the SpeedFanControl table is not
-executed as part of ASIC_Init as it is on newer asics.
-
-Fixes:
-https://bugzilla.kernel.org/show_bug.cgi?id=29412
-
-Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
-Reviewed-by: Michel Dänzer <michel.daenzer at amd.com>
-Signed-off-by: Dave Airlie <airlied at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/gpu/drm/radeon/atom.c | 15 ++++++++++++++-
- drivers/gpu/drm/radeon/atom.h | 1 +
- 2 files changed, 15 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/gpu/drm/radeon/atom.c b/drivers/gpu/drm/radeon/atom.c
-index 14cc88a..3a05cdb 100644
---- a/drivers/gpu/drm/radeon/atom.c
-+++ b/drivers/gpu/drm/radeon/atom.c
-@@ -1304,8 +1304,11 @@ struct atom_context *atom_parse(struct card_info *card, void *bios)
-
- int atom_asic_init(struct atom_context *ctx)
- {
-+ struct radeon_device *rdev = ctx->card->dev->dev_private;
- int hwi = CU16(ctx->data_table + ATOM_DATA_FWI_PTR);
- uint32_t ps[16];
-+ int ret;
-+
- memset(ps, 0, 64);
-
- ps[0] = cpu_to_le32(CU32(hwi + ATOM_FWI_DEFSCLK_PTR));
-@@ -1315,7 +1318,17 @@ int atom_asic_init(struct atom_context *ctx)
-
- if (!CU16(ctx->cmd_table + 4 + 2 * ATOM_CMD_INIT))
- return 1;
-- return atom_execute_table(ctx, ATOM_CMD_INIT, ps);
-+ ret = atom_execute_table(ctx, ATOM_CMD_INIT, ps);
-+ if (ret)
-+ return ret;
-+
-+ memset(ps, 0, 64);
-+
-+ if (rdev->family < CHIP_R600) {
-+ if (CU16(ctx->cmd_table + 4 + 2 * ATOM_CMD_SPDFANCNTL))
-+ atom_execute_table(ctx, ATOM_CMD_SPDFANCNTL, ps);
-+ }
-+ return ret;
- }
-
- void atom_destroy(struct atom_context *ctx)
-diff --git a/drivers/gpu/drm/radeon/atom.h b/drivers/gpu/drm/radeon/atom.h
-index 93cfe20..25fea63 100644
---- a/drivers/gpu/drm/radeon/atom.h
-+++ b/drivers/gpu/drm/radeon/atom.h
-@@ -44,6 +44,7 @@
- #define ATOM_CMD_SETSCLK 0x0A
- #define ATOM_CMD_SETMCLK 0x0B
- #define ATOM_CMD_SETPCLK 0x0C
-+#define ATOM_CMD_SPDFANCNTL 0x39
-
- #define ATOM_DATA_FWI_PTR 0xC
- #define ATOM_DATA_IIO_PTR 0x32
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0027-drm-i915-no-lvds-quirk-on-MSI-DC500.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0027-drm-i915-no-lvds-quirk-on-MSI-DC500.patch
deleted file mode 100644
index 2fc0804..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0027-drm-i915-no-lvds-quirk-on-MSI-DC500.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 17729a991754faddaeec8880db9881a5bc4fab5e Mon Sep 17 00:00:00 2001
-From: Anisse Astier <anisse at astier.eu>
-Date: Wed, 7 Mar 2012 18:36:35 +0100
-Subject: [PATCH 27/60] drm/i915: no-lvds quirk on MSI DC500
-
-commit 97effadb65ed08809e1720c8d3ee80b73a93665c upstream.
-
-This hardware doesn't have an LVDS, it's a desktop box. Fix incorrect
-LVDS detection.
-
-Signed-off-by: Anisse Astier <anisse at astier.eu>
-Acked-by: Chris Wilson <chris at chris-wilson.co.uk>
-Signed-off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/gpu/drm/i915/intel_lvds.c | 8 ++++++++
- 1 file changed, 8 insertions(+)
-
-diff --git a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c
-index b83f745..583c2d0 100644
---- a/drivers/gpu/drm/i915/intel_lvds.c
-+++ b/drivers/gpu/drm/i915/intel_lvds.c
-@@ -731,6 +731,14 @@ static const struct dmi_system_id intel_no_lvds[] = {
- DMI_MATCH(DMI_BOARD_NAME, "AT5NM10T-I"),
- },
- },
-+ {
-+ .callback = intel_no_lvds_dmi_callback,
-+ .ident = "MSI Wind Box DC500",
-+ .matches = {
-+ DMI_MATCH(DMI_BOARD_VENDOR, "MICRO-STAR INTERNATIONAL CO., LTD"),
-+ DMI_MATCH(DMI_BOARD_NAME, "MS-7469"),
-+ },
-+ },
-
- { } /* terminating entry */
- };
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0028-drm-i915-Sanitize-BIOS-debugging-bits-from-PIPECONF.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0028-drm-i915-Sanitize-BIOS-debugging-bits-from-PIPECONF.patch
deleted file mode 100644
index c70337a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0028-drm-i915-Sanitize-BIOS-debugging-bits-from-PIPECONF.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From 2bb2e47c60f77b768affa48bf847526054143d81 Mon Sep 17 00:00:00 2001
-From: Chris Wilson <chris at chris-wilson.co.uk>
-Date: Thu, 22 Mar 2012 15:00:50 +0000
-Subject: [PATCH 28/60] drm/i915: Sanitize BIOS debugging bits from PIPECONF
-
-commit f47166d2b0001fcb752b40c5a2d4db986dfbea68 upstream.
-
-Quoting the BSpec from time immemorial:
-
- PIPEACONF, bits 28:27: Frame Start Delay (Debug)
-
- Used to delay the frame start signal that is sent to the display planes.
- Care must be taken to insure that there are enough lines during VBLANK
- to support this setting.
-
-An instance of the BIOS leaving these bits set was found in the wild,
-where it caused our modesetting to go all squiffy and skewiff.
-
-Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=47271
-Reported-and-tested-by: Eva Wang <evawang at linpus.com>
-Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=43012
-Reported-and-tested-by: Carl Richell <carl at system76.com>
-Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
-Signed-off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/gpu/drm/i915/i915_reg.h | 1 +
- drivers/gpu/drm/i915/intel_display.c | 6 ++++++
- 2 files changed, 7 insertions(+)
-
-diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
-index 1608d2a..2f99fd4 100644
---- a/drivers/gpu/drm/i915/i915_reg.h
-+++ b/drivers/gpu/drm/i915/i915_reg.h
-@@ -2312,6 +2312,7 @@
- #define PIPECONF_DISABLE 0
- #define PIPECONF_DOUBLE_WIDE (1<<30)
- #define I965_PIPECONF_ACTIVE (1<<30)
-+#define PIPECONF_FRAME_START_DELAY_MASK (3<<27)
- #define PIPECONF_SINGLE_WIDE 0
- #define PIPECONF_PIPE_UNLOCKED 0
- #define PIPECONF_PIPE_LOCKED (1<<25)
-diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
-index 9ec9755..9011f48 100644
---- a/drivers/gpu/drm/i915/intel_display.c
-+++ b/drivers/gpu/drm/i915/intel_display.c
-@@ -7278,6 +7278,12 @@ static void intel_sanitize_modesetting(struct drm_device *dev,
- struct drm_i915_private *dev_priv = dev->dev_private;
- u32 reg, val;
-
-+ /* Clear any frame start delays used for debugging left by the BIOS */
-+ for_each_pipe(pipe) {
-+ reg = PIPECONF(pipe);
-+ I915_WRITE(reg, I915_READ(reg) & ~PIPECONF_FRAME_START_DELAY_MASK);
-+ }
-+
- if (HAS_PCH_SPLIT(dev))
- return;
-
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0029-drm-i915-Add-lock-on-drm_helper_resume_force_mode.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0029-drm-i915-Add-lock-on-drm_helper_resume_force_mode.patch
deleted file mode 100644
index 72dd824..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0029-drm-i915-Add-lock-on-drm_helper_resume_force_mode.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 4ab7c0a9a8f866f035d64d0b71dc7cad9bf59f51 Mon Sep 17 00:00:00 2001
-From: Sean Paul <seanpaul at chromium.org>
-Date: Fri, 23 Mar 2012 08:52:58 -0400
-Subject: [PATCH 29/60] drm/i915: Add lock on drm_helper_resume_force_mode
-
-commit 927a2f119e8235238a2fc64871051b16c9bdae75 upstream.
-
-i915_drm_thaw was not locking the mode_config lock when calling
-drm_helper_resume_force_mode. When there were multiple wake sources,
-this caused FDI training failure on SNB which in turn corrupted the
-display.
-
-Signed-off-by: Sean Paul <seanpaul at chromium.org>
-Reviewed-by: Chris Wilson <chris at chris-wilson.co.uk>
-Signed-Off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/gpu/drm/i915/i915_drv.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
-index d04597d..e52b705 100644
---- a/drivers/gpu/drm/i915/i915_drv.c
-+++ b/drivers/gpu/drm/i915/i915_drv.c
-@@ -508,7 +508,9 @@ static int i915_drm_thaw(struct drm_device *dev)
- drm_irq_install(dev);
-
- /* Resume the modeset for every activated CRTC */
-+ mutex_lock(&dev->mode_config.mutex);
- drm_helper_resume_force_mode(dev);
-+ mutex_unlock(&dev->mode_config.mutex);
-
- if (IS_IRONLAKE_M(dev))
- ironlake_enable_rc6(dev);
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0030-drm-i915-quirk-away-broken-OpRegion-VBT.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0030-drm-i915-quirk-away-broken-OpRegion-VBT.patch
deleted file mode 100644
index de8ad51..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0030-drm-i915-quirk-away-broken-OpRegion-VBT.patch
+++ /dev/null
@@ -1,71 +0,0 @@
-From 58767bacea3aca7d03afa92650f014213ef1681d Mon Sep 17 00:00:00 2001
-From: Daniel Vetter <daniel.vetter at ffwll.ch>
-Date: Sat, 24 Mar 2012 23:51:30 +0100
-Subject: [PATCH 30/60] drm/i915: quirk away broken OpRegion VBT
-
-commit 25e341cfc33d94435472983825163e97fe370a6c upstream.
-
-Somehow the BIOS manages to screw things up when copying the VBT
-around, because the one we scrap from the VBIOS rom actually works.
-
-Tested-by: Markus Heinz <markus.heinz at uni-dortmund.de>
-Acked-by: Chris Wilson <chris at chris-wilson.co.uk>
-Reviewed-by: Rodrigo Vivi <rodrigo.vivi at gmail.com>
-Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=28812
-Signed-Off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/gpu/drm/i915/intel_bios.c | 23 ++++++++++++++++++++++-
- 1 file changed, 22 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/gpu/drm/i915/intel_bios.c b/drivers/gpu/drm/i915/intel_bios.c
-index 63880e2..22efb08 100644
---- a/drivers/gpu/drm/i915/intel_bios.c
-+++ b/drivers/gpu/drm/i915/intel_bios.c
-@@ -24,6 +24,7 @@
- * Eric Anholt <eric at anholt.net>
- *
- */
-+#include <linux/dmi.h>
- #include <drm/drm_dp_helper.h>
- #include "drmP.h"
- #include "drm.h"
-@@ -621,6 +622,26 @@ init_vbt_defaults(struct drm_i915_private *dev_priv)
- dev_priv->edp.bpp = 18;
- }
-
-+static int __init intel_no_opregion_vbt_callback(const struct dmi_system_id *id)
-+{
-+ DRM_DEBUG_KMS("Falling back to manually reading VBT from "
-+ "VBIOS ROM for %s\n",
-+ id->ident);
-+ return 1;
-+}
-+
-+static const struct dmi_system_id intel_no_opregion_vbt[] = {
-+ {
-+ .callback = intel_no_opregion_vbt_callback,
-+ .ident = "ThinkCentre A57",
-+ .matches = {
-+ DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
-+ DMI_MATCH(DMI_PRODUCT_NAME, "97027RG"),
-+ },
-+ },
-+ { }
-+};
-+
- /**
- * intel_parse_bios - find VBT and initialize settings from the BIOS
- * @dev: DRM device
-@@ -641,7 +662,7 @@ intel_parse_bios(struct drm_device *dev)
- init_vbt_defaults(dev_priv);
-
- /* XXX Should this validation be moved to intel_opregion.c? */
-- if (dev_priv->opregion.vbt) {
-+ if (!dmi_check_system(intel_no_opregion_vbt) && dev_priv->opregion.vbt) {
- struct vbt_header *vbt = dev_priv->opregion.vbt;
- if (memcmp(vbt->signature, "$VBT", 4) == 0) {
- DRM_DEBUG_KMS("Using VBT from OpRegion: %20s\n",
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0031-r8169-runtime-resume-before-shutdown.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0031-r8169-runtime-resume-before-shutdown.patch
deleted file mode 100644
index b246c48..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0031-r8169-runtime-resume-before-shutdown.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From 5cc5bed22b5a987cd388292e64b2b4d473ddef10 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?fran=C3=A7ois=20romieu?= <romieu at fr.zoreil.com>
-Date: Tue, 6 Mar 2012 01:14:12 +0000
-Subject: [PATCH 31/60] r8169: runtime resume before shutdown.
-
-commit 2a15cd2ff488a9fdb55e5e34060f499853b27c77 upstream.
-
-With runtime PM, if the ethernet cable is disconnected, the device is
-transitioned to D3 state to conserve energy. If the system is shutdown
-in this state, any register accesses in rtl_shutdown are dropped on
-the floor. As the device was programmed by .runtime_suspend() to wake
-on link changes, it is thus brought back up as soon as the link recovers.
-
-Resuming every suspended device through the driver core would slow things
-down and it is not clear how many devices really need it now.
-
-Original report and D0 transition patch by Sameer Nanda. Patch has been
-changed to comply with advices by Rafael J. Wysocki and the PM folks.
-
-Reported-by: Sameer Nanda <snanda at chromium.org>
-Signed-off-by: Francois Romieu <romieu at fr.zoreil.com>
-Cc: Rafael J. Wysocki <rjw at sisk.pl>
-Cc: Hayes Wang <hayeswang at realtek.com>
-Cc: Alan Stern <stern at rowland.harvard.edu>
-Acked-by: Rafael J. Wysocki <rjw at sisk.pl>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/net/ethernet/realtek/r8169.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c
-index 0cf2351..697cae3 100644
---- a/drivers/net/ethernet/realtek/r8169.c
-+++ b/drivers/net/ethernet/realtek/r8169.c
-@@ -6194,6 +6194,9 @@ static void rtl_shutdown(struct pci_dev *pdev)
- {
- struct net_device *dev = pci_get_drvdata(pdev);
- struct rtl8169_private *tp = netdev_priv(dev);
-+ struct device *d = &pdev->dev;
-+
-+ pm_runtime_get_sync(d);
-
- rtl8169_net_suspend(dev);
-
-@@ -6215,6 +6218,8 @@ static void rtl_shutdown(struct pci_dev *pdev)
- pci_wake_from_d3(pdev, true);
- pci_set_power_state(pdev, PCI_D3hot);
- }
-+
-+ pm_runtime_put_noidle(d);
- }
-
- static struct pci_driver rtl8169_pci_driver = {
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0032-target-Fix-unsupported-WRITE_SAME-sense-payload.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0032-target-Fix-unsupported-WRITE_SAME-sense-payload.patch
deleted file mode 100644
index 40f2252..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0032-target-Fix-unsupported-WRITE_SAME-sense-payload.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From a66bf3e98840599c67fd1d60563bb1aaa0c0622f Mon Sep 17 00:00:00 2001
-From: Martin Svec <martin.svec at zoner.cz>
-Date: Mon, 6 Feb 2012 22:13:25 -0800
-Subject: [PATCH 32/60] target: Fix unsupported WRITE_SAME sense payload
-
-commit 67236c44741e250199ccd77f1115568e68cf8848 upstream.
-
-This patch fixes a bug in target-core where unsupported WRITE_SAME ops
-from a target_check_write_same_discard() failure was incorrectly
-returning CHECK_CONDITION w/ TCM_INVALID_CDB_FIELD sense data.
-This was causing some clients to not properly fall back, so go ahead
-and use the correct TCM_UNSUPPORTED_SCSI_OPCODE sense for this case.
-
-Reported-by: Martin Svec <martin.svec at zoner.cz>
-Signed-off-by: Nicholas Bellinger <nab at linux-iscsi.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/target/target_core_transport.c | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c
-index cdb774b..5660916 100644
---- a/drivers/target/target_core_transport.c
-+++ b/drivers/target/target_core_transport.c
-@@ -2666,7 +2666,7 @@ static int transport_generic_cmd_sequencer(
- cmd->se_cmd_flags |= SCF_SCSI_CONTROL_SG_IO_CDB;
-
- if (target_check_write_same_discard(&cdb[10], dev) < 0)
-- goto out_invalid_cdb_field;
-+ goto out_unsupported_cdb;
- if (!passthrough)
- cmd->execute_task = target_emulate_write_same;
- break;
-@@ -2949,7 +2949,7 @@ static int transport_generic_cmd_sequencer(
- cmd->se_cmd_flags |= SCF_SCSI_CONTROL_SG_IO_CDB;
-
- if (target_check_write_same_discard(&cdb[1], dev) < 0)
-- goto out_invalid_cdb_field;
-+ goto out_unsupported_cdb;
- if (!passthrough)
- cmd->execute_task = target_emulate_write_same;
- break;
-@@ -2972,7 +2972,7 @@ static int transport_generic_cmd_sequencer(
- * of byte 1 bit 3 UNMAP instead of original reserved field
- */
- if (target_check_write_same_discard(&cdb[1], dev) < 0)
-- goto out_invalid_cdb_field;
-+ goto out_unsupported_cdb;
- if (!passthrough)
- cmd->execute_task = target_emulate_write_same;
- break;
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0033-kgdb-debug_core-pass-the-breakpoint-struct-instead-o.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0033-kgdb-debug_core-pass-the-breakpoint-struct-instead-o.patch
deleted file mode 100644
index 310833f..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0033-kgdb-debug_core-pass-the-breakpoint-struct-instead-o.patch
+++ /dev/null
@@ -1,180 +0,0 @@
-From 69214d0d1b5f2f3e05dee62617d28c7e9daccc80 Mon Sep 17 00:00:00 2001
-From: Jason Wessel <jason.wessel at windriver.com>
-Date: Wed, 21 Mar 2012 10:17:03 -0500
-Subject: [PATCH 33/60] kgdb,debug_core: pass the breakpoint struct instead of
- address and memory
-
-commit 98b54aa1a2241b59372468bd1e9c2d207bdba54b upstream.
-
-There is extra state information that needs to be exposed in the
-kgdb_bpt structure for tracking how a breakpoint was installed. The
-debug_core only uses the the probe_kernel_write() to install
-breakpoints, but this is not enough for all the archs. Some arch such
-as x86 need to use text_poke() in order to install a breakpoint into a
-read only page.
-
-Passing the kgdb_bpt structure to kgdb_arch_set_breakpoint() and
-kgdb_arch_remove_breakpoint() allows other archs to set the type
-variable which indicates how the breakpoint was installed.
-
-Signed-off-by: Jason Wessel <jason.wessel at windriver.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- include/linux/kgdb.h | 4 ++--
- kernel/debug/debug_core.c | 53 ++++++++++++++++++++-------------------------
- 2 files changed, 26 insertions(+), 31 deletions(-)
-
-diff --git a/include/linux/kgdb.h b/include/linux/kgdb.h
-index fa39183..e5d689c 100644
---- a/include/linux/kgdb.h
-+++ b/include/linux/kgdb.h
-@@ -207,8 +207,8 @@ extern void kgdb_arch_set_pc(struct pt_regs *regs, unsigned long pc);
-
- /* Optional functions. */
- extern int kgdb_validate_break_address(unsigned long addr);
--extern int kgdb_arch_set_breakpoint(unsigned long addr, char *saved_instr);
--extern int kgdb_arch_remove_breakpoint(unsigned long addr, char *bundle);
-+extern int kgdb_arch_set_breakpoint(struct kgdb_bkpt *bpt);
-+extern int kgdb_arch_remove_breakpoint(struct kgdb_bkpt *bpt);
-
- /**
- * kgdb_arch_late - Perform any architecture specific initalization.
-diff --git a/kernel/debug/debug_core.c b/kernel/debug/debug_core.c
-index 0d7c087..7fda904 100644
---- a/kernel/debug/debug_core.c
-+++ b/kernel/debug/debug_core.c
-@@ -157,37 +157,39 @@ early_param("nokgdbroundup", opt_nokgdbroundup);
- * Weak aliases for breakpoint management,
- * can be overriden by architectures when needed:
- */
--int __weak kgdb_arch_set_breakpoint(unsigned long addr, char *saved_instr)
-+int __weak kgdb_arch_set_breakpoint(struct kgdb_bkpt *bpt)
- {
- int err;
-
-- err = probe_kernel_read(saved_instr, (char *)addr, BREAK_INSTR_SIZE);
-+ err = probe_kernel_read(bpt->saved_instr, (char *)bpt->bpt_addr,
-+ BREAK_INSTR_SIZE);
- if (err)
- return err;
--
-- return probe_kernel_write((char *)addr, arch_kgdb_ops.gdb_bpt_instr,
-- BREAK_INSTR_SIZE);
-+ err = probe_kernel_write((char *)bpt->bpt_addr,
-+ arch_kgdb_ops.gdb_bpt_instr, BREAK_INSTR_SIZE);
-+ return err;
- }
-
--int __weak kgdb_arch_remove_breakpoint(unsigned long addr, char *bundle)
-+int __weak kgdb_arch_remove_breakpoint(struct kgdb_bkpt *bpt)
- {
-- return probe_kernel_write((char *)addr,
-- (char *)bundle, BREAK_INSTR_SIZE);
-+ return probe_kernel_write((char *)bpt->bpt_addr,
-+ (char *)bpt->saved_instr, BREAK_INSTR_SIZE);
- }
-
- int __weak kgdb_validate_break_address(unsigned long addr)
- {
-- char tmp_variable[BREAK_INSTR_SIZE];
-+ struct kgdb_bkpt tmp;
- int err;
-- /* Validate setting the breakpoint and then removing it. In the
-+ /* Validate setting the breakpoint and then removing it. If the
- * remove fails, the kernel needs to emit a bad message because we
- * are deep trouble not being able to put things back the way we
- * found them.
- */
-- err = kgdb_arch_set_breakpoint(addr, tmp_variable);
-+ tmp.bpt_addr = addr;
-+ err = kgdb_arch_set_breakpoint(&tmp);
- if (err)
- return err;
-- err = kgdb_arch_remove_breakpoint(addr, tmp_variable);
-+ err = kgdb_arch_remove_breakpoint(&tmp);
- if (err)
- printk(KERN_ERR "KGDB: Critical breakpoint error, kernel "
- "memory destroyed at: %lx", addr);
-@@ -231,7 +233,6 @@ static void kgdb_flush_swbreak_addr(unsigned long addr)
- */
- int dbg_activate_sw_breakpoints(void)
- {
-- unsigned long addr;
- int error;
- int ret = 0;
- int i;
-@@ -240,16 +241,15 @@ int dbg_activate_sw_breakpoints(void)
- if (kgdb_break[i].state != BP_SET)
- continue;
-
-- addr = kgdb_break[i].bpt_addr;
-- error = kgdb_arch_set_breakpoint(addr,
-- kgdb_break[i].saved_instr);
-+ error = kgdb_arch_set_breakpoint(&kgdb_break[i]);
- if (error) {
- ret = error;
-- printk(KERN_INFO "KGDB: BP install failed: %lx", addr);
-+ printk(KERN_INFO "KGDB: BP install failed: %lx",
-+ kgdb_break[i].bpt_addr);
- continue;
- }
-
-- kgdb_flush_swbreak_addr(addr);
-+ kgdb_flush_swbreak_addr(kgdb_break[i].bpt_addr);
- kgdb_break[i].state = BP_ACTIVE;
- }
- return ret;
-@@ -298,7 +298,6 @@ int dbg_set_sw_break(unsigned long addr)
-
- int dbg_deactivate_sw_breakpoints(void)
- {
-- unsigned long addr;
- int error;
- int ret = 0;
- int i;
-@@ -306,15 +305,14 @@ int dbg_deactivate_sw_breakpoints(void)
- for (i = 0; i < KGDB_MAX_BREAKPOINTS; i++) {
- if (kgdb_break[i].state != BP_ACTIVE)
- continue;
-- addr = kgdb_break[i].bpt_addr;
-- error = kgdb_arch_remove_breakpoint(addr,
-- kgdb_break[i].saved_instr);
-+ error = kgdb_arch_remove_breakpoint(&kgdb_break[i]);
- if (error) {
-- printk(KERN_INFO "KGDB: BP remove failed: %lx\n", addr);
-+ printk(KERN_INFO "KGDB: BP remove failed: %lx\n",
-+ kgdb_break[i].bpt_addr);
- ret = error;
- }
-
-- kgdb_flush_swbreak_addr(addr);
-+ kgdb_flush_swbreak_addr(kgdb_break[i].bpt_addr);
- kgdb_break[i].state = BP_SET;
- }
- return ret;
-@@ -348,7 +346,6 @@ int kgdb_isremovedbreak(unsigned long addr)
-
- int dbg_remove_all_break(void)
- {
-- unsigned long addr;
- int error;
- int i;
-
-@@ -356,12 +353,10 @@ int dbg_remove_all_break(void)
- for (i = 0; i < KGDB_MAX_BREAKPOINTS; i++) {
- if (kgdb_break[i].state != BP_ACTIVE)
- goto setundefined;
-- addr = kgdb_break[i].bpt_addr;
-- error = kgdb_arch_remove_breakpoint(addr,
-- kgdb_break[i].saved_instr);
-+ error = kgdb_arch_remove_breakpoint(&kgdb_break[i]);
- if (error)
- printk(KERN_ERR "KGDB: breakpoint remove failed: %lx\n",
-- addr);
-+ kgdb_break[i].bpt_addr);
- setundefined:
- kgdb_break[i].state = BP_UNDEFINED;
- }
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0034-kgdbts-Fix-kernel-oops-with-CONFIG_DEBUG_RODATA.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0034-kgdbts-Fix-kernel-oops-with-CONFIG_DEBUG_RODATA.patch
deleted file mode 100644
index 38e88f1..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0034-kgdbts-Fix-kernel-oops-with-CONFIG_DEBUG_RODATA.patch
+++ /dev/null
@@ -1,121 +0,0 @@
-From 0c2fe32a76d9c3ab88685250abe3956f2ff555fe Mon Sep 17 00:00:00 2001
-From: Jason Wessel <jason.wessel at windriver.com>
-Date: Thu, 29 Mar 2012 06:55:44 -0500
-Subject: [PATCH 34/60] kgdbts: Fix kernel oops with CONFIG_DEBUG_RODATA
-
-commit 456ca7ff24841bf2d2a2dfd690fe7d42ef70d932 upstream.
-
-On x86 the kgdb test suite will oops when the kernel is compiled with
-CONFIG_DEBUG_RODATA and you run the tests after boot time. This is
-regression has existed since 2.6.26 by commit: b33cb815 (kgdbts: Use
-HW breakpoints with CONFIG_DEBUG_RODATA).
-
-The test suite can use hw breakpoints for all the tests, but it has to
-execute the hardware breakpoint specific tests first in order to
-determine that the hw breakpoints actually work. Specifically the
-very first test causes an oops:
-
-# echo V1I1 > /sys/module/kgdbts/parameters/kgdbts
-kgdb: Registered I/O driver kgdbts.
-kgdbts:RUN plant and detach test
-
-Entering kdb (current=0xffff880017aa9320, pid 1078) on processor 0 due to Keyboard Entry
-[0]kdb> kgdbts: ERROR PUT: end of test buffer on 'plant_and_detach_test' line 1 expected OK got $E14#aa
-WARNING: at drivers/misc/kgdbts.c:730 run_simple_test+0x151/0x2c0()
-[...oops clipped...]
-
-This commit re-orders the running of the tests and puts the RODATA
-check into its own function so as to correctly avoid the kernel oops
-by detecting and using the hw breakpoints.
-
-Signed-off-by: Jason Wessel <jason.wessel at windriver.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/misc/kgdbts.c | 52 ++++++++++++++++++++++++++-----------------------
- 1 file changed, 28 insertions(+), 24 deletions(-)
-
-diff --git a/drivers/misc/kgdbts.c b/drivers/misc/kgdbts.c
-index 3f7ad83..997e94d 100644
---- a/drivers/misc/kgdbts.c
-+++ b/drivers/misc/kgdbts.c
-@@ -885,6 +885,22 @@ static void run_singlestep_break_test(void)
- kgdbts_break_test();
- }
-
-+static void test_debug_rodata(void)
-+{
-+#ifdef CONFIG_DEBUG_RODATA
-+ /* Until there is an api to write to read-only text segments, use
-+ * HW breakpoints for the remainder of any tests, else print a
-+ * failure message if hw breakpoints do not work.
-+ */
-+ if (!(arch_kgdb_ops.flags & KGDB_HW_BREAKPOINT && hwbreaks_ok)) {
-+ eprintk("kgdbts: HW breakpoints BROKEN, ending tests\n");
-+ return;
-+ }
-+ force_hwbrks = 1;
-+ v1printk("kgdbts:Using HW breakpoints for SW breakpoint tests\n");
-+#endif /* CONFIG_DEBUG_RODATA */
-+}
-+
- static void kgdbts_run_tests(void)
- {
- char *ptr;
-@@ -907,6 +923,18 @@ static void kgdbts_run_tests(void)
- if (ptr)
- sstep_test = simple_strtol(ptr+1, NULL, 10);
-
-+ /* All HW break point tests */
-+ if (arch_kgdb_ops.flags & KGDB_HW_BREAKPOINT) {
-+ hwbreaks_ok = 1;
-+ v1printk("kgdbts:RUN hw breakpoint test\n");
-+ run_breakpoint_test(1);
-+ v1printk("kgdbts:RUN hw write breakpoint test\n");
-+ run_hw_break_test(1);
-+ v1printk("kgdbts:RUN access write breakpoint test\n");
-+ run_hw_break_test(0);
-+ }
-+ test_debug_rodata();
-+
- /* required internal KGDB tests */
- v1printk("kgdbts:RUN plant and detach test\n");
- run_plant_and_detach_test(0);
-@@ -924,35 +952,11 @@ static void kgdbts_run_tests(void)
-
- /* ===Optional tests=== */
-
-- /* All HW break point tests */
-- if (arch_kgdb_ops.flags & KGDB_HW_BREAKPOINT) {
-- hwbreaks_ok = 1;
-- v1printk("kgdbts:RUN hw breakpoint test\n");
-- run_breakpoint_test(1);
-- v1printk("kgdbts:RUN hw write breakpoint test\n");
-- run_hw_break_test(1);
-- v1printk("kgdbts:RUN access write breakpoint test\n");
-- run_hw_break_test(0);
-- }
--
- if (nmi_sleep) {
- v1printk("kgdbts:RUN NMI sleep %i seconds test\n", nmi_sleep);
- run_nmi_sleep_test(nmi_sleep);
- }
-
--#ifdef CONFIG_DEBUG_RODATA
-- /* Until there is an api to write to read-only text segments, use
-- * HW breakpoints for the remainder of any tests, else print a
-- * failure message if hw breakpoints do not work.
-- */
-- if (!(arch_kgdb_ops.flags & KGDB_HW_BREAKPOINT && hwbreaks_ok)) {
-- eprintk("kgdbts: HW breakpoints do not work,"
-- "skipping remaining tests\n");
-- return;
-- }
-- force_hwbrks = 1;
--#endif /* CONFIG_DEBUG_RODATA */
--
- /* If the do_fork test is run it will be the last test that is
- * executed because a kernel thread will be spawned at the very
- * end to unregister the debug hooks.
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0035-kgdbts-1-of-2-fix-single-step-awareness-to-work-corr.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0035-kgdbts-1-of-2-fix-single-step-awareness-to-work-corr.patch
deleted file mode 100644
index d28b70c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0035-kgdbts-1-of-2-fix-single-step-awareness-to-work-corr.patch
+++ /dev/null
@@ -1,212 +0,0 @@
-From ae549aeda351058e0df140fd174ac71911773ece Mon Sep 17 00:00:00 2001
-From: Jason Wessel <jason.wessel at windriver.com>
-Date: Thu, 29 Mar 2012 17:41:24 -0500
-Subject: [PATCH 35/60] kgdbts: (1 of 2) fix single step awareness to work
- correctly with SMP
-
-commit 486c5987a00a89d56c2c04c506417ef8f823ca2e upstream.
-
-The do_fork and sys_open tests have never worked properly on anything
-other than a UP configuration with the kgdb test suite. This is
-because the test suite did not fully implement the behavior of a real
-debugger. A real debugger tracks the state of what thread it asked to
-single step and can correctly continue other threads of execution or
-conditionally stop while waiting for the original thread single step
-request to return.
-
-Below is a simple method to cause a fatal kernel oops with the kgdb
-test suite on a 4 processor x86 system:
-
-while [ 1 ] ; do ls > /dev/null 2> /dev/null; done&
-while [ 1 ] ; do ls > /dev/null 2> /dev/null; done&
-while [ 1 ] ; do ls > /dev/null 2> /dev/null; done&
-while [ 1 ] ; do ls > /dev/null 2> /dev/null; done&
-echo V1I1F1000 > /sys/module/kgdbts/parameters/kgdbts
-
-Very soon after starting the test the kernel will oops with a message like:
-
-kgdbts: BP mismatch 3b7da66480 expected ffffffff8106a590
-WARNING: at drivers/misc/kgdbts.c:303 check_and_rewind_pc+0xe0/0x100()
-Call Trace:
- [<ffffffff812994a0>] check_and_rewind_pc+0xe0/0x100
- [<ffffffff81298945>] validate_simple_test+0x25/0xc0
- [<ffffffff81298f77>] run_simple_test+0x107/0x2c0
- [<ffffffff81298a18>] kgdbts_put_char+0x18/0x20
-
-The warn will turn to a hard kernel crash shortly after that because
-the pc will not get properly rewound to the right value after hitting
-a breakpoint leading to a hard lockup.
-
-This change is broken up into 2 pieces because archs that have hw
-single stepping (2.6.26 and up) need different changes than archs that
-do not have hw single stepping (3.0 and up). This change implements
-the correct behavior for an arch that supports hw single stepping.
-
-A minor defect was fixed where sys_open should be do_sys_open
-for the sys_open break point test. This solves the problem of running
-a 64 bit with a 32 bit user space. The sys_open() never gets called
-when using the 32 bit file system for the kgdb testsuite because the
-32 bit binaries invoke the compat_sys_open() call leading to the test
-never completing.
-
-In order to mimic a real debugger, the kgdb test suite now tracks the
-most recent thread that was continued (cont_thread_id), with the
-intent to single step just this thread. When the response to the
-single step request stops in a different thread that hit the original
-break point that thread will now get continued, while the debugger
-waits for the thread with the single step pending. Here is a high
-level description of the sequence of events.
-
- cont_instead_of_sstep = 0;
-
-1) set breakpoint at do_fork
-2) continue
-3) Save the thread id where we stop to cont_thread_id
-4) Remove breakpoint at do_fork
-5) Reset the PC if needed depending on kernel exception type
-6) if (cont_instead_of_sstep) { continue } else { single step }
-7) Check where we stopped
- if current thread != cont_thread_id {
- cont_instead_of_sstep = 1;
- goto step 5
- } else {
- cont_instead_of_sstep = 0;
- }
-8) clean up and run test again if needed
-
-Signed-off-by: Jason Wessel <jason.wessel at windriver.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/misc/kgdbts.c | 54 +++++++++++++++++++++++++++++++++++++++----------
- 1 file changed, 43 insertions(+), 11 deletions(-)
-
-diff --git a/drivers/misc/kgdbts.c b/drivers/misc/kgdbts.c
-index 997e94d..3cad9fc 100644
---- a/drivers/misc/kgdbts.c
-+++ b/drivers/misc/kgdbts.c
-@@ -134,6 +134,9 @@ static int force_hwbrks;
- static int hwbreaks_ok;
- static int hw_break_val;
- static int hw_break_val2;
-+static int cont_instead_of_sstep;
-+static unsigned long cont_thread_id;
-+static unsigned long sstep_thread_id;
- #if defined(CONFIG_ARM) || defined(CONFIG_MIPS) || defined(CONFIG_SPARC)
- static int arch_needs_sstep_emulation = 1;
- #else
-@@ -211,7 +214,7 @@ static unsigned long lookup_addr(char *arg)
- if (!strcmp(arg, "kgdbts_break_test"))
- addr = (unsigned long)kgdbts_break_test;
- else if (!strcmp(arg, "sys_open"))
-- addr = (unsigned long)sys_open;
-+ addr = (unsigned long)do_sys_open;
- else if (!strcmp(arg, "do_fork"))
- addr = (unsigned long)do_fork;
- else if (!strcmp(arg, "hw_break_val"))
-@@ -283,6 +286,16 @@ static void hw_break_val_write(void)
- hw_break_val++;
- }
-
-+static int get_thread_id_continue(char *put_str, char *arg)
-+{
-+ char *ptr = &put_str[11];
-+
-+ if (put_str[1] != 'T' || put_str[2] != '0')
-+ return 1;
-+ kgdb_hex2long(&ptr, &cont_thread_id);
-+ return 0;
-+}
-+
- static int check_and_rewind_pc(char *put_str, char *arg)
- {
- unsigned long addr = lookup_addr(arg);
-@@ -324,6 +337,18 @@ static int check_single_step(char *put_str, char *arg)
- gdb_regs_to_pt_regs(kgdbts_gdb_regs, &kgdbts_regs);
- v2printk("Singlestep stopped at IP: %lx\n",
- instruction_pointer(&kgdbts_regs));
-+
-+ if (sstep_thread_id != cont_thread_id && !arch_needs_sstep_emulation) {
-+ /*
-+ * Ensure we stopped in the same thread id as before, else the
-+ * debugger should continue until the original thread that was
-+ * single stepped is scheduled again, emulating gdb's behavior.
-+ */
-+ v2printk("ThrID does not match: %lx\n", cont_thread_id);
-+ cont_instead_of_sstep = 1;
-+ ts.idx -= 4;
-+ return 0;
-+ }
- if (instruction_pointer(&kgdbts_regs) == addr) {
- eprintk("kgdbts: SingleStep failed at %lx\n",
- instruction_pointer(&kgdbts_regs));
-@@ -368,7 +393,12 @@ static int got_break(char *put_str, char *arg)
- static void emul_sstep_get(char *arg)
- {
- if (!arch_needs_sstep_emulation) {
-- fill_get_buf(arg);
-+ if (cont_instead_of_sstep) {
-+ cont_instead_of_sstep = 0;
-+ fill_get_buf("c");
-+ } else {
-+ fill_get_buf(arg);
-+ }
- return;
- }
- switch (sstep_state) {
-@@ -398,9 +428,11 @@ static void emul_sstep_get(char *arg)
- static int emul_sstep_put(char *put_str, char *arg)
- {
- if (!arch_needs_sstep_emulation) {
-- if (!strncmp(put_str+1, arg, 2))
-- return 0;
-- return 1;
-+ char *ptr = &put_str[11];
-+ if (put_str[1] != 'T' || put_str[2] != '0')
-+ return 1;
-+ kgdb_hex2long(&ptr, &sstep_thread_id);
-+ return 0;
- }
- switch (sstep_state) {
- case 1:
-@@ -502,10 +534,10 @@ static struct test_struct bad_read_test[] = {
- static struct test_struct singlestep_break_test[] = {
- { "?", "S0*" }, /* Clear break points */
- { "kgdbts_break_test", "OK", sw_break, }, /* set sw breakpoint */
-- { "c", "T0*", }, /* Continue */
-+ { "c", "T0*", NULL, get_thread_id_continue }, /* Continue */
-+ { "kgdbts_break_test", "OK", sw_rem_break }, /*remove breakpoint */
- { "g", "kgdbts_break_test", NULL, check_and_rewind_pc },
- { "write", "OK", write_regs }, /* Write registers */
-- { "kgdbts_break_test", "OK", sw_rem_break }, /*remove breakpoint */
- { "s", "T0*", emul_sstep_get, emul_sstep_put }, /* Single step */
- { "g", "kgdbts_break_test", NULL, check_single_step },
- { "kgdbts_break_test", "OK", sw_break, }, /* set sw breakpoint */
-@@ -523,10 +555,10 @@ static struct test_struct singlestep_break_test[] = {
- static struct test_struct do_fork_test[] = {
- { "?", "S0*" }, /* Clear break points */
- { "do_fork", "OK", sw_break, }, /* set sw breakpoint */
-- { "c", "T0*", }, /* Continue */
-+ { "c", "T0*", NULL, get_thread_id_continue }, /* Continue */
-+ { "do_fork", "OK", sw_rem_break }, /*remove breakpoint */
- { "g", "do_fork", NULL, check_and_rewind_pc }, /* check location */
- { "write", "OK", write_regs }, /* Write registers */
-- { "do_fork", "OK", sw_rem_break }, /*remove breakpoint */
- { "s", "T0*", emul_sstep_get, emul_sstep_put }, /* Single step */
- { "g", "do_fork", NULL, check_single_step },
- { "do_fork", "OK", sw_break, }, /* set sw breakpoint */
-@@ -541,10 +573,10 @@ static struct test_struct do_fork_test[] = {
- static struct test_struct sys_open_test[] = {
- { "?", "S0*" }, /* Clear break points */
- { "sys_open", "OK", sw_break, }, /* set sw breakpoint */
-- { "c", "T0*", }, /* Continue */
-+ { "c", "T0*", NULL, get_thread_id_continue }, /* Continue */
-+ { "sys_open", "OK", sw_rem_break }, /*remove breakpoint */
- { "g", "sys_open", NULL, check_and_rewind_pc }, /* check location */
- { "write", "OK", write_regs }, /* Write registers */
-- { "sys_open", "OK", sw_rem_break }, /*remove breakpoint */
- { "s", "T0*", emul_sstep_get, emul_sstep_put }, /* Single step */
- { "g", "sys_open", NULL, check_single_step },
- { "sys_open", "OK", sw_break, }, /* set sw breakpoint */
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0036-kgdbts-2-of-2-fix-single-step-awareness-to-work-corr.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0036-kgdbts-2-of-2-fix-single-step-awareness-to-work-corr.patch
deleted file mode 100644
index 640bc3e..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0036-kgdbts-2-of-2-fix-single-step-awareness-to-work-corr.patch
+++ /dev/null
@@ -1,266 +0,0 @@
-From 13053c284b41d7ca50da37f04c9940303b9d33e0 Mon Sep 17 00:00:00 2001
-From: Jason Wessel <jason.wessel at windriver.com>
-Date: Thu, 29 Mar 2012 17:41:24 -0500
-Subject: [PATCH 36/60] kgdbts: (2 of 2) fix single step awareness to work
- correctly with SMP
-
-commit 23bbd8e346f1ef3fc1219c79cea53d8d52b207d8 upstream.
-
-The do_fork and sys_open tests have never worked properly on anything
-other than a UP configuration with the kgdb test suite. This is
-because the test suite did not fully implement the behavior of a real
-debugger. A real debugger tracks the state of what thread it asked to
-single step and can correctly continue other threads of execution or
-conditionally stop while waiting for the original thread single step
-request to return.
-
-Below is a simple method to cause a fatal kernel oops with the kgdb
-test suite on a 2 processor ARM system:
-
-while [ 1 ] ; do ls > /dev/null 2> /dev/null; done&
-while [ 1 ] ; do ls > /dev/null 2> /dev/null; done&
-echo V1I1F100 > /sys/module/kgdbts/parameters/kgdbts
-
-Very soon after starting the test the kernel will start warning with
-messages like:
-
-kgdbts: BP mismatch c002487c expected c0024878
-------------[ cut here ]------------
-WARNING: at drivers/misc/kgdbts.c:317 check_and_rewind_pc+0x9c/0xc4()
-[<c01f6520>] (check_and_rewind_pc+0x9c/0xc4)
-[<c01f595c>] (validate_simple_test+0x3c/0xc4)
-[<c01f60d4>] (run_simple_test+0x1e8/0x274)
-
-The kernel will eventually recovers, but the test suite has completely
-failed to test anything useful.
-
-This patch implements behavior similar to a real debugger that does
-not rely on hardware single stepping by using only software planted
-breakpoints.
-
-In order to mimic a real debugger, the kgdb test suite now tracks the
-most recent thread that was continued (cont_thread_id), with the
-intent to single step just this thread. When the response to the
-single step request stops in a different thread that hit the original
-break point that thread will now get continued, while the debugger
-waits for the thread with the single step pending. Here is a high
-level description of the sequence of events.
-
- cont_instead_of_sstep = 0;
-
-1) set breakpoint at do_fork
-2) continue
-3) Save the thread id where we stop to cont_thread_id
-4) Remove breakpoint at do_fork
-5) Reset the PC if needed depending on kernel exception type
-6) soft single step
-7) Check where we stopped
- if current thread != cont_thread_id {
- if (here for more than 2 times for the same thead) {
- ### must be a really busy system, start test again ###
- goto step 1
- }
- goto step 5
- } else {
- cont_instead_of_sstep = 0;
- }
-8) clean up and run test again if needed
-9) Clear out any threads that were waiting on a break point at the
- point in time the test is ended with get_cont_catch(). This
- happens sometimes because breakpoints are used in place of single
- stepping and some threads could have been in the debugger exception
- handling queue because breakpoints were hit concurrently on
- different CPUs. This also means we wait at least one second before
- unplumbing the debugger connection at the very end, so as respond
- to any debug threads waiting to be serviced.
-
-Signed-off-by: Jason Wessel <jason.wessel at windriver.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/misc/kgdbts.c | 73 +++++++++++++++++++++++++++++++++++++++++--------
- 1 file changed, 62 insertions(+), 11 deletions(-)
-
-diff --git a/drivers/misc/kgdbts.c b/drivers/misc/kgdbts.c
-index 3cad9fc..d087456 100644
---- a/drivers/misc/kgdbts.c
-+++ b/drivers/misc/kgdbts.c
-@@ -142,7 +142,9 @@ static int arch_needs_sstep_emulation = 1;
- #else
- static int arch_needs_sstep_emulation;
- #endif
-+static unsigned long cont_addr;
- static unsigned long sstep_addr;
-+static int restart_from_top_after_write;
- static int sstep_state;
-
- /* Storage for the registers, in GDB format. */
-@@ -190,7 +192,8 @@ static int kgdbts_unreg_thread(void *ptr)
- */
- while (!final_ack)
- msleep_interruptible(1500);
--
-+ /* Pause for any other threads to exit after final ack. */
-+ msleep_interruptible(1000);
- if (configured)
- kgdb_unregister_io_module(&kgdbts_io_ops);
- configured = 0;
-@@ -312,13 +315,21 @@ static int check_and_rewind_pc(char *put_str, char *arg)
- if (addr + BREAK_INSTR_SIZE == ip)
- offset = -BREAK_INSTR_SIZE;
- #endif
-- if (strcmp(arg, "silent") && ip + offset != addr) {
-+
-+ if (arch_needs_sstep_emulation && sstep_addr &&
-+ ip + offset == sstep_addr &&
-+ ((!strcmp(arg, "sys_open") || !strcmp(arg, "do_fork")))) {
-+ /* This is special case for emulated single step */
-+ v2printk("Emul: rewind hit single step bp\n");
-+ restart_from_top_after_write = 1;
-+ } else if (strcmp(arg, "silent") && ip + offset != addr) {
- eprintk("kgdbts: BP mismatch %lx expected %lx\n",
- ip + offset, addr);
- return 1;
- }
- /* Readjust the instruction pointer if needed */
- ip += offset;
-+ cont_addr = ip;
- #ifdef GDB_ADJUSTS_BREAK_OFFSET
- instruction_pointer_set(&kgdbts_regs, ip);
- #endif
-@@ -328,6 +339,8 @@ static int check_and_rewind_pc(char *put_str, char *arg)
- static int check_single_step(char *put_str, char *arg)
- {
- unsigned long addr = lookup_addr(arg);
-+ static int matched_id;
-+
- /*
- * From an arch indepent point of view the instruction pointer
- * should be on a different instruction
-@@ -338,17 +351,28 @@ static int check_single_step(char *put_str, char *arg)
- v2printk("Singlestep stopped at IP: %lx\n",
- instruction_pointer(&kgdbts_regs));
-
-- if (sstep_thread_id != cont_thread_id && !arch_needs_sstep_emulation) {
-+ if (sstep_thread_id != cont_thread_id) {
- /*
- * Ensure we stopped in the same thread id as before, else the
- * debugger should continue until the original thread that was
- * single stepped is scheduled again, emulating gdb's behavior.
- */
- v2printk("ThrID does not match: %lx\n", cont_thread_id);
-+ if (arch_needs_sstep_emulation) {
-+ if (matched_id &&
-+ instruction_pointer(&kgdbts_regs) != addr)
-+ goto continue_test;
-+ matched_id++;
-+ ts.idx -= 2;
-+ sstep_state = 0;
-+ return 0;
-+ }
- cont_instead_of_sstep = 1;
- ts.idx -= 4;
- return 0;
- }
-+continue_test:
-+ matched_id = 0;
- if (instruction_pointer(&kgdbts_regs) == addr) {
- eprintk("kgdbts: SingleStep failed at %lx\n",
- instruction_pointer(&kgdbts_regs));
-@@ -390,6 +414,31 @@ static int got_break(char *put_str, char *arg)
- return 1;
- }
-
-+static void get_cont_catch(char *arg)
-+{
-+ /* Always send detach because the test is completed at this point */
-+ fill_get_buf("D");
-+}
-+
-+static int put_cont_catch(char *put_str, char *arg)
-+{
-+ /* This is at the end of the test and we catch any and all input */
-+ v2printk("kgdbts: cleanup task: %lx\n", sstep_thread_id);
-+ ts.idx--;
-+ return 0;
-+}
-+
-+static int emul_reset(char *put_str, char *arg)
-+{
-+ if (strncmp(put_str, "$OK", 3))
-+ return 1;
-+ if (restart_from_top_after_write) {
-+ restart_from_top_after_write = 0;
-+ ts.idx = -1;
-+ }
-+ return 0;
-+}
-+
- static void emul_sstep_get(char *arg)
- {
- if (!arch_needs_sstep_emulation) {
-@@ -443,8 +492,7 @@ static int emul_sstep_put(char *put_str, char *arg)
- v2printk("Stopped at IP: %lx\n",
- instruction_pointer(&kgdbts_regs));
- /* Want to stop at IP + break instruction size by default */
-- sstep_addr = instruction_pointer(&kgdbts_regs) +
-- BREAK_INSTR_SIZE;
-+ sstep_addr = cont_addr + BREAK_INSTR_SIZE;
- break;
- case 2:
- if (strncmp(put_str, "$OK", 3)) {
-@@ -456,6 +504,9 @@ static int emul_sstep_put(char *put_str, char *arg)
- if (strncmp(put_str, "$T0", 3)) {
- eprintk("kgdbts: failed continue sstep\n");
- return 1;
-+ } else {
-+ char *ptr = &put_str[11];
-+ kgdb_hex2long(&ptr, &sstep_thread_id);
- }
- break;
- case 4:
-@@ -558,13 +609,13 @@ static struct test_struct do_fork_test[] = {
- { "c", "T0*", NULL, get_thread_id_continue }, /* Continue */
- { "do_fork", "OK", sw_rem_break }, /*remove breakpoint */
- { "g", "do_fork", NULL, check_and_rewind_pc }, /* check location */
-- { "write", "OK", write_regs }, /* Write registers */
-+ { "write", "OK", write_regs, emul_reset }, /* Write registers */
- { "s", "T0*", emul_sstep_get, emul_sstep_put }, /* Single step */
- { "g", "do_fork", NULL, check_single_step },
- { "do_fork", "OK", sw_break, }, /* set sw breakpoint */
- { "7", "T0*", skip_back_repeat_test }, /* Loop based on repeat_test */
- { "D", "OK", NULL, final_ack_set }, /* detach and unregister I/O */
-- { "", "" },
-+ { "", "", get_cont_catch, put_cont_catch },
- };
-
- /* Test for hitting a breakpoint at sys_open for what ever the number
-@@ -576,13 +627,13 @@ static struct test_struct sys_open_test[] = {
- { "c", "T0*", NULL, get_thread_id_continue }, /* Continue */
- { "sys_open", "OK", sw_rem_break }, /*remove breakpoint */
- { "g", "sys_open", NULL, check_and_rewind_pc }, /* check location */
-- { "write", "OK", write_regs }, /* Write registers */
-+ { "write", "OK", write_regs, emul_reset }, /* Write registers */
- { "s", "T0*", emul_sstep_get, emul_sstep_put }, /* Single step */
- { "g", "sys_open", NULL, check_single_step },
- { "sys_open", "OK", sw_break, }, /* set sw breakpoint */
- { "7", "T0*", skip_back_repeat_test }, /* Loop based on repeat_test */
- { "D", "OK", NULL, final_ack_set }, /* detach and unregister I/O */
-- { "", "" },
-+ { "", "", get_cont_catch, put_cont_catch },
- };
-
- /*
-@@ -725,8 +776,8 @@ static int run_simple_test(int is_get_char, int chr)
- /* This callback is a put char which is when kgdb sends data to
- * this I/O module.
- */
-- if (ts.tst[ts.idx].get[0] == '\0' &&
-- ts.tst[ts.idx].put[0] == '\0') {
-+ if (ts.tst[ts.idx].get[0] == '\0' && ts.tst[ts.idx].put[0] == '\0' &&
-+ !ts.tst[ts.idx].get_handler) {
- eprintk("kgdbts: ERROR: beyond end of test on"
- " '%s' line %i\n", ts.name, ts.idx);
- return 0;
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0037-x86-kgdb-Fix-DEBUG_RODATA-limitation-using-text_poke.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0037-x86-kgdb-Fix-DEBUG_RODATA-limitation-using-text_poke.patch
deleted file mode 100644
index be07398..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0037-x86-kgdb-Fix-DEBUG_RODATA-limitation-using-text_poke.patch
+++ /dev/null
@@ -1,166 +0,0 @@
-From d3b769924c0a3a98809ab60e0f7449fef154b26c Mon Sep 17 00:00:00 2001
-From: Jason Wessel <jason.wessel at windriver.com>
-Date: Fri, 23 Mar 2012 09:35:05 -0500
-Subject: [PATCH 37/60] x86,kgdb: Fix DEBUG_RODATA limitation using
- text_poke()
-
-commit 3751d3e85cf693e10e2c47c03c8caa65e171099b upstream.
-
-There has long been a limitation using software breakpoints with a
-kernel compiled with CONFIG_DEBUG_RODATA going back to 2.6.26. For
-this particular patch, it will apply cleanly and has been tested all
-the way back to 2.6.36.
-
-The kprobes code uses the text_poke() function which accommodates
-writing a breakpoint into a read-only page. The x86 kgdb code can
-solve the problem similarly by overriding the default breakpoint
-set/remove routines and using text_poke() directly.
-
-The x86 kgdb code will first attempt to use the traditional
-probe_kernel_write(), and next try using a the text_poke() function.
-The break point install method is tracked such that the correct break
-point removal routine will get called later on.
-
-Cc: x86 at kernel.org
-Cc: Thomas Gleixner <tglx at linutronix.de>
-Cc: Ingo Molnar <mingo at redhat.com>
-Cc: H. Peter Anvin <hpa at zytor.com>
-Inspried-by: Masami Hiramatsu <masami.hiramatsu.pt at hitachi.com>
-Signed-off-by: Jason Wessel <jason.wessel at windriver.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/x86/kernel/kgdb.c | 60 ++++++++++++++++++++++++++++++++++++++++++++++++
- drivers/misc/kgdbts.c | 17 --------------
- include/linux/kgdb.h | 3 ++-
- 3 files changed, 62 insertions(+), 18 deletions(-)
-
-diff --git a/arch/x86/kernel/kgdb.c b/arch/x86/kernel/kgdb.c
-index faba577..2f45c4c 100644
---- a/arch/x86/kernel/kgdb.c
-+++ b/arch/x86/kernel/kgdb.c
-@@ -43,6 +43,8 @@
- #include <linux/smp.h>
- #include <linux/nmi.h>
- #include <linux/hw_breakpoint.h>
-+#include <linux/uaccess.h>
-+#include <linux/memory.h>
-
- #include <asm/debugreg.h>
- #include <asm/apicdef.h>
-@@ -740,6 +742,64 @@ void kgdb_arch_set_pc(struct pt_regs *regs, unsigned long ip)
- regs->ip = ip;
- }
-
-+int kgdb_arch_set_breakpoint(struct kgdb_bkpt *bpt)
-+{
-+ int err;
-+ char opc[BREAK_INSTR_SIZE];
-+
-+ bpt->type = BP_BREAKPOINT;
-+ err = probe_kernel_read(bpt->saved_instr, (char *)bpt->bpt_addr,
-+ BREAK_INSTR_SIZE);
-+ if (err)
-+ return err;
-+ err = probe_kernel_write((char *)bpt->bpt_addr,
-+ arch_kgdb_ops.gdb_bpt_instr, BREAK_INSTR_SIZE);
-+#ifdef CONFIG_DEBUG_RODATA
-+ if (!err)
-+ return err;
-+ /*
-+ * It is safe to call text_poke() because normal kernel execution
-+ * is stopped on all cores, so long as the text_mutex is not locked.
-+ */
-+ if (mutex_is_locked(&text_mutex))
-+ return -EBUSY;
-+ text_poke((void *)bpt->bpt_addr, arch_kgdb_ops.gdb_bpt_instr,
-+ BREAK_INSTR_SIZE);
-+ err = probe_kernel_read(opc, (char *)bpt->bpt_addr, BREAK_INSTR_SIZE);
-+ if (err)
-+ return err;
-+ if (memcmp(opc, arch_kgdb_ops.gdb_bpt_instr, BREAK_INSTR_SIZE))
-+ return -EINVAL;
-+ bpt->type = BP_POKE_BREAKPOINT;
-+#endif /* CONFIG_DEBUG_RODATA */
-+ return err;
-+}
-+
-+int kgdb_arch_remove_breakpoint(struct kgdb_bkpt *bpt)
-+{
-+#ifdef CONFIG_DEBUG_RODATA
-+ int err;
-+ char opc[BREAK_INSTR_SIZE];
-+
-+ if (bpt->type != BP_POKE_BREAKPOINT)
-+ goto knl_write;
-+ /*
-+ * It is safe to call text_poke() because normal kernel execution
-+ * is stopped on all cores, so long as the text_mutex is not locked.
-+ */
-+ if (mutex_is_locked(&text_mutex))
-+ goto knl_write;
-+ text_poke((void *)bpt->bpt_addr, bpt->saved_instr, BREAK_INSTR_SIZE);
-+ err = probe_kernel_read(opc, (char *)bpt->bpt_addr, BREAK_INSTR_SIZE);
-+ if (err || memcmp(opc, bpt->saved_instr, BREAK_INSTR_SIZE))
-+ goto knl_write;
-+ return err;
-+knl_write:
-+#endif /* CONFIG_DEBUG_RODATA */
-+ return probe_kernel_write((char *)bpt->bpt_addr,
-+ (char *)bpt->saved_instr, BREAK_INSTR_SIZE);
-+}
-+
- struct kgdb_arch arch_kgdb_ops = {
- /* Breakpoint instruction: */
- .gdb_bpt_instr = { 0xcc },
-diff --git a/drivers/misc/kgdbts.c b/drivers/misc/kgdbts.c
-index d087456..3aa9a96 100644
---- a/drivers/misc/kgdbts.c
-+++ b/drivers/misc/kgdbts.c
-@@ -968,22 +968,6 @@ static void run_singlestep_break_test(void)
- kgdbts_break_test();
- }
-
--static void test_debug_rodata(void)
--{
--#ifdef CONFIG_DEBUG_RODATA
-- /* Until there is an api to write to read-only text segments, use
-- * HW breakpoints for the remainder of any tests, else print a
-- * failure message if hw breakpoints do not work.
-- */
-- if (!(arch_kgdb_ops.flags & KGDB_HW_BREAKPOINT && hwbreaks_ok)) {
-- eprintk("kgdbts: HW breakpoints BROKEN, ending tests\n");
-- return;
-- }
-- force_hwbrks = 1;
-- v1printk("kgdbts:Using HW breakpoints for SW breakpoint tests\n");
--#endif /* CONFIG_DEBUG_RODATA */
--}
--
- static void kgdbts_run_tests(void)
- {
- char *ptr;
-@@ -1016,7 +1000,6 @@ static void kgdbts_run_tests(void)
- v1printk("kgdbts:RUN access write breakpoint test\n");
- run_hw_break_test(0);
- }
-- test_debug_rodata();
-
- /* required internal KGDB tests */
- v1printk("kgdbts:RUN plant and detach test\n");
-diff --git a/include/linux/kgdb.h b/include/linux/kgdb.h
-index e5d689c..c4d2fc1 100644
---- a/include/linux/kgdb.h
-+++ b/include/linux/kgdb.h
-@@ -63,7 +63,8 @@ enum kgdb_bptype {
- BP_HARDWARE_BREAKPOINT,
- BP_WRITE_WATCHPOINT,
- BP_READ_WATCHPOINT,
-- BP_ACCESS_WATCHPOINT
-+ BP_ACCESS_WATCHPOINT,
-+ BP_POKE_BREAKPOINT,
- };
-
- enum kgdb_bpstate {
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0038-CIFS-Fix-VFS-lock-usage-for-oplocked-files.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0038-CIFS-Fix-VFS-lock-usage-for-oplocked-files.patch
deleted file mode 100644
index 2658ac8..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0038-CIFS-Fix-VFS-lock-usage-for-oplocked-files.patch
+++ /dev/null
@@ -1,99 +0,0 @@
-From bffd29387e64c0dfb9905f059ecd24bfcccbe572 Mon Sep 17 00:00:00 2001
-From: Pavel Shilovsky <piastry at etersoft.ru>
-Date: Wed, 28 Mar 2012 21:56:19 +0400
-Subject: [PATCH 38/60] CIFS: Fix VFS lock usage for oplocked files
-
-commit 66189be74ff5f9f3fd6444315b85be210d07cef2 upstream.
-
-We can deadlock if we have a write oplock and two processes
-use the same file handle. In this case the first process can't
-unlock its lock if the second process blocked on the lock in the
-same time.
-
-Fix it by using posix_lock_file rather than posix_lock_file_wait
-under cinode->lock_mutex. If we request a blocking lock and
-posix_lock_file indicates that there is another lock that prevents
-us, wait untill that lock is released and restart our call.
-
-Acked-by: Jeff Layton <jlayton at redhat.com>
-Signed-off-by: Pavel Shilovsky <piastry at etersoft.ru>
-Signed-off-by: Steve French <sfrench at us.ibm.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/cifs/file.c | 10 +++++++++-
- fs/locks.c | 3 ++-
- include/linux/fs.h | 5 +++++
- 3 files changed, 16 insertions(+), 2 deletions(-)
-
-diff --git a/fs/cifs/file.c b/fs/cifs/file.c
-index 159fcc5..0f7dc22 100644
---- a/fs/cifs/file.c
-+++ b/fs/cifs/file.c
-@@ -835,13 +835,21 @@ cifs_posix_lock_set(struct file *file, struct file_lock *flock)
- if ((flock->fl_flags & FL_POSIX) == 0)
- return rc;
-
-+try_again:
- mutex_lock(&cinode->lock_mutex);
- if (!cinode->can_cache_brlcks) {
- mutex_unlock(&cinode->lock_mutex);
- return rc;
- }
-- rc = posix_lock_file_wait(file, flock);
-+
-+ rc = posix_lock_file(file, flock, NULL);
- mutex_unlock(&cinode->lock_mutex);
-+ if (rc == FILE_LOCK_DEFERRED) {
-+ rc = wait_event_interruptible(flock->fl_wait, !flock->fl_next);
-+ if (!rc)
-+ goto try_again;
-+ locks_delete_block(flock);
-+ }
- return rc;
- }
-
-diff --git a/fs/locks.c b/fs/locks.c
-index 637694b..0d68f1f 100644
---- a/fs/locks.c
-+++ b/fs/locks.c
-@@ -510,12 +510,13 @@ static void __locks_delete_block(struct file_lock *waiter)
-
- /*
- */
--static void locks_delete_block(struct file_lock *waiter)
-+void locks_delete_block(struct file_lock *waiter)
- {
- lock_flocks();
- __locks_delete_block(waiter);
- unlock_flocks();
- }
-+EXPORT_SYMBOL(locks_delete_block);
-
- /* Insert waiter into blocker's block list.
- * We use a circular list so that processes can be easily woken up in
-diff --git a/include/linux/fs.h b/include/linux/fs.h
-index 10b2288..11f1951 100644
---- a/include/linux/fs.h
-+++ b/include/linux/fs.h
-@@ -1203,6 +1203,7 @@ extern int vfs_setlease(struct file *, long, struct file_lock **);
- extern int lease_modify(struct file_lock **, int);
- extern int lock_may_read(struct inode *, loff_t start, unsigned long count);
- extern int lock_may_write(struct inode *, loff_t start, unsigned long count);
-+extern void locks_delete_block(struct file_lock *waiter);
- extern void lock_flocks(void);
- extern void unlock_flocks(void);
- #else /* !CONFIG_FILE_LOCKING */
-@@ -1347,6 +1348,10 @@ static inline int lock_may_write(struct inode *inode, loff_t start,
- return 1;
- }
-
-+static inline void locks_delete_block(struct file_lock *waiter)
-+{
-+}
-+
- static inline void lock_flocks(void)
- {
- }
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0039-ARM-tegra-remove-Tegra30-errata-from-MACH_TEGRA_DT.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0039-ARM-tegra-remove-Tegra30-errata-from-MACH_TEGRA_DT.patch
deleted file mode 100644
index e43dada..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0039-ARM-tegra-remove-Tegra30-errata-from-MACH_TEGRA_DT.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 7255ae998bddcdfad51d059ae1c6acfe07221551 Mon Sep 17 00:00:00 2001
-From: Stephen Warren <swarren at nvidia.com>
-Date: Thu, 5 Apr 2012 16:50:05 -0600
-Subject: [PATCH 39/60] ARM: tegra: remove Tegra30 errata from MACH_TEGRA_DT
-
-[no upstream commit match, as this is a fix for a mis-applied patch in the
-previous 3.2-stable release. - gregkh]
-
-Commit 83e4194 "ARM: tegra: select required CPU and L2 errata options"
-contained two chunks; one was errata for Tegra20 (correctly applied)
-and the second errata for Tegra30. The latter was accidentally applied
-to the wrong config option; Tegra30 support wasn't added until v3.3,
-and so the second chunk should have just been dropped. This patch does
-so.
-
-Signed-off-by: Stephen Warren <swarren at nvidia.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/arm/mach-tegra/Kconfig | 5 -----
- 1 file changed, 5 deletions(-)
-
-diff --git a/arch/arm/mach-tegra/Kconfig b/arch/arm/mach-tegra/Kconfig
-index dbc59fa..379cdc7 100644
---- a/arch/arm/mach-tegra/Kconfig
-+++ b/arch/arm/mach-tegra/Kconfig
-@@ -61,11 +61,6 @@ config MACH_SEABOARD
- config MACH_TEGRA_DT
- bool "Generic Tegra board (FDT support)"
- select USE_OF
-- select ARM_ERRATA_743622
-- select ARM_ERRATA_751472
-- select ARM_ERRATA_754322
-- select ARM_ERRATA_764369
-- select PL310_ERRATA_769419 if CACHE_L2X0
- help
- Support for generic nVidia Tegra boards using Flattened Device Tree
-
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0040-mmc-sdhci-dove-Fix-compile-error-by-including-module.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0040-mmc-sdhci-dove-Fix-compile-error-by-including-module.patch
deleted file mode 100644
index 52f0244..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0040-mmc-sdhci-dove-Fix-compile-error-by-including-module.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 0055c53d221f32d89397630ae37a7310b5d974a0 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Alf=20H=C3=B8gemark?= <alf at i100.no>
-Date: Wed, 4 Apr 2012 12:27:09 -0400
-Subject: [PATCH 40/60] mmc: sdhci-dove: Fix compile error by including
- module.h
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit 8c2fc8e413ecc2c96b696e28d4eb1bc6cee8dc84 upstream.
-
-This patch fixes a compile error in drivers/mmc/host/sdhci-dove.c
-by including the linux/module.h file.
-
-Signed-off-by: Alf Høgemark <alf at i100.no>
-Signed-off-by: Chris Ball <cjb at laptop.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/mmc/host/sdhci-dove.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/mmc/host/sdhci-dove.c b/drivers/mmc/host/sdhci-dove.c
-index a81312c..31acb70 100644
---- a/drivers/mmc/host/sdhci-dove.c
-+++ b/drivers/mmc/host/sdhci-dove.c
-@@ -20,6 +20,7 @@
- */
-
- #include <linux/io.h>
-+#include <linux/module.h>
- #include <linux/mmc/host.h>
-
- #include "sdhci-pltfm.h"
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0041-mmc-atmel-mci-correct-data-timeout-computation.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0041-mmc-atmel-mci-correct-data-timeout-computation.patch
deleted file mode 100644
index c43c66a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0041-mmc-atmel-mci-correct-data-timeout-computation.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From cd7bf853d4130f7b81d066e7760289e3485beb4b Mon Sep 17 00:00:00 2001
-From: Ludovic Desroches <ludovic.desroches at atmel.com>
-Date: Wed, 28 Mar 2012 12:28:33 +0200
-Subject: [PATCH 41/60] mmc: atmel-mci: correct data timeout computation
-
-commit 66292ad92c6d3f2f1c137a1c826b331ca8595dfd upstream.
-
-The HSMCI operates at a rate of up to Master Clock divided by two.
-Moreover previous calculation can cause overflows and so wrong
-timeouts.
-
-Signed-off-by: Ludovic Desroches <ludovic.desroches at atmel.com>
-Acked-by: Nicolas Ferre <nicolas.ferre at atmel.com>
-Signed-off-by: Chris Ball <cjb at laptop.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/mmc/host/atmel-mci.c | 9 ++++++++-
- 1 file changed, 8 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/mmc/host/atmel-mci.c b/drivers/mmc/host/atmel-mci.c
-index 9896933..0932024 100644
---- a/drivers/mmc/host/atmel-mci.c
-+++ b/drivers/mmc/host/atmel-mci.c
-@@ -480,7 +480,14 @@ err:
- static inline unsigned int atmci_ns_to_clocks(struct atmel_mci *host,
- unsigned int ns)
- {
-- return (ns * (host->bus_hz / 1000000) + 999) / 1000;
-+ /*
-+ * It is easier here to use us instead of ns for the timeout,
-+ * it prevents from overflows during calculation.
-+ */
-+ unsigned int us = DIV_ROUND_UP(ns, 1000);
-+
-+ /* Maximum clock frequency is host->bus_hz/2 */
-+ return us * (DIV_ROUND_UP(host->bus_hz, 2000000));
- }
-
- static void atmci_set_timeout(struct atmel_mci *host,
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0042-tcm_fc-Add-abort-flag-for-gracefully-handling-exchan.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0042-tcm_fc-Add-abort-flag-for-gracefully-handling-exchan.patch
deleted file mode 100644
index d04f680..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0042-tcm_fc-Add-abort-flag-for-gracefully-handling-exchan.patch
+++ /dev/null
@@ -1,102 +0,0 @@
-From 3d49fca1a4b93c2fad7a36f29c6e58e4126cad8e Mon Sep 17 00:00:00 2001
-From: Mark Rustad <mark.d.rustad at intel.com>
-Date: Tue, 3 Apr 2012 10:24:41 -0700
-Subject: [PATCH 42/60] tcm_fc: Add abort flag for gracefully handling
- exchange timeout
-
-commit e1c4038282c7586c3544542b37872c434669d3ac upstream.
-
-Add abort flag and use it to terminate processing when an exchange
-is timed out or is reset. The abort flag is used in place of the
-transport_generic_free_cmd function call in the reset and timeout
-cases, because calling that function in that context would free
-memory that was in use. The aborted flag allows the lifetime to
-be managed in a more normal way, while truncating the processing.
-
-This change eliminates a source of memory corruption which
-manifested in a variety of ugly ways.
-
-(nab: Drop unused struct fc_exch *ep in ft_recv_seq)
-
-Signed-off-by: Mark Rustad <mark.d.rustad at intel.com>
-Acked-by: Kiran Patil <Kiran.patil at intel.com>
-Signed-off-by: Nicholas Bellinger <nab at linux-iscsi.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/target/tcm_fc/tcm_fc.h | 1 +
- drivers/target/tcm_fc/tfc_cmd.c | 10 ++++++++--
- drivers/target/tcm_fc/tfc_io.c | 2 ++
- 3 files changed, 11 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/target/tcm_fc/tcm_fc.h b/drivers/target/tcm_fc/tcm_fc.h
-index e05c551..be7ed12 100644
---- a/drivers/target/tcm_fc/tcm_fc.h
-+++ b/drivers/target/tcm_fc/tcm_fc.h
-@@ -124,6 +124,7 @@ struct ft_cmd {
- /* Local sense buffer */
- unsigned char ft_sense_buffer[TRANSPORT_SENSE_BUFFER];
- u32 was_ddp_setup:1; /* Set only if ddp is setup */
-+ u32 aborted:1; /* Set if aborted by reset or timeout */
- struct scatterlist *sg; /* Set only if DDP is setup */
- u32 sg_cnt; /* No. of item in scatterlist */
- };
-diff --git a/drivers/target/tcm_fc/tfc_cmd.c b/drivers/target/tcm_fc/tfc_cmd.c
-index 754b669..d95cfe2 100644
---- a/drivers/target/tcm_fc/tfc_cmd.c
-+++ b/drivers/target/tcm_fc/tfc_cmd.c
-@@ -130,6 +130,8 @@ int ft_queue_status(struct se_cmd *se_cmd)
- struct fc_exch *ep;
- size_t len;
-
-+ if (cmd->aborted)
-+ return 0;
- ft_dump_cmd(cmd, __func__);
- ep = fc_seq_exch(cmd->seq);
- lport = ep->lp;
-@@ -196,6 +198,8 @@ int ft_write_pending(struct se_cmd *se_cmd)
-
- ft_dump_cmd(cmd, __func__);
-
-+ if (cmd->aborted)
-+ return 0;
- ep = fc_seq_exch(cmd->seq);
- lport = ep->lp;
- fp = fc_frame_alloc(lport, sizeof(*txrdy));
-@@ -266,10 +270,10 @@ static void ft_recv_seq(struct fc_seq *sp, struct fc_frame *fp, void *arg)
- struct ft_cmd *cmd = arg;
- struct fc_frame_header *fh;
-
-- if (IS_ERR(fp)) {
-+ if (unlikely(IS_ERR(fp))) {
- /* XXX need to find cmd if queued */
- cmd->seq = NULL;
-- transport_generic_free_cmd(&cmd->se_cmd, 0);
-+ cmd->aborted = true;
- return;
- }
-
-@@ -447,6 +451,8 @@ int ft_queue_tm_resp(struct se_cmd *se_cmd)
- struct se_tmr_req *tmr = se_cmd->se_tmr_req;
- enum fcp_resp_rsp_codes code;
-
-+ if (cmd->aborted)
-+ return 0;
- switch (tmr->response) {
- case TMR_FUNCTION_COMPLETE:
- code = FCP_TMF_CMPL;
-diff --git a/drivers/target/tcm_fc/tfc_io.c b/drivers/target/tcm_fc/tfc_io.c
-index 1369b1c..ada131c 100644
---- a/drivers/target/tcm_fc/tfc_io.c
-+++ b/drivers/target/tcm_fc/tfc_io.c
-@@ -84,6 +84,8 @@ int ft_queue_data_in(struct se_cmd *se_cmd)
- void *from;
- void *to = NULL;
-
-+ if (cmd->aborted)
-+ return 0;
- ep = fc_seq_exch(cmd->seq);
- lport = ep->lp;
- cmd->seq = lport->tt.seq_start_next(cmd->seq);
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0043-tcm_fc-Do-not-free-tpg-structure-during-wq-allocatio.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0043-tcm_fc-Do-not-free-tpg-structure-during-wq-allocatio.patch
deleted file mode 100644
index 79c921e..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0043-tcm_fc-Do-not-free-tpg-structure-during-wq-allocatio.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From dd64e41dfd092de59c1dc5c58ceb26837c16a17c Mon Sep 17 00:00:00 2001
-From: Mark Rustad <mark.d.rustad at intel.com>
-Date: Tue, 3 Apr 2012 10:24:52 -0700
-Subject: [PATCH 43/60] tcm_fc: Do not free tpg structure during wq allocation
- failure
-
-commit 06383f10c49f507220594a455c6491ca6f8c94ab upstream.
-
-Avoid freeing a registered tpg structure if an alloc_workqueue call
-fails. This fixes a bug where the failure was leaking memory associated
-with se_portal_group setup during the original core_tpg_register() call.
-
-Signed-off-by: Mark Rustad <mark.d.rustad at intel.com>
-Acked-by: Kiran Patil <Kiran.patil at intel.com>
-Signed-off-by: Nicholas Bellinger <nab at linux-iscsi.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/target/tcm_fc/tfc_conf.c | 13 ++++++++-----
- 1 file changed, 8 insertions(+), 5 deletions(-)
-
-diff --git a/drivers/target/tcm_fc/tfc_conf.c b/drivers/target/tcm_fc/tfc_conf.c
-index 9402b73..7962325 100644
---- a/drivers/target/tcm_fc/tfc_conf.c
-+++ b/drivers/target/tcm_fc/tfc_conf.c
-@@ -304,6 +304,7 @@ static struct se_portal_group *ft_add_tpg(
- {
- struct ft_lport_acl *lacl;
- struct ft_tpg *tpg;
-+ struct workqueue_struct *wq;
- unsigned long index;
- int ret;
-
-@@ -325,18 +326,20 @@ static struct se_portal_group *ft_add_tpg(
- tpg->lport_acl = lacl;
- INIT_LIST_HEAD(&tpg->lun_list);
-
-- ret = core_tpg_register(&ft_configfs->tf_ops, wwn, &tpg->se_tpg,
-- tpg, TRANSPORT_TPG_TYPE_NORMAL);
-- if (ret < 0) {
-+ wq = alloc_workqueue("tcm_fc", 0, 1);
-+ if (!wq) {
- kfree(tpg);
- return NULL;
- }
-
-- tpg->workqueue = alloc_workqueue("tcm_fc", 0, 1);
-- if (!tpg->workqueue) {
-+ ret = core_tpg_register(&ft_configfs->tf_ops, wwn, &tpg->se_tpg,
-+ tpg, TRANSPORT_TPG_TYPE_NORMAL);
-+ if (ret < 0) {
-+ destroy_workqueue(wq);
- kfree(tpg);
- return NULL;
- }
-+ tpg->workqueue = wq;
-
- mutex_lock(&ft_lport_lock);
- list_add_tail(&tpg->list, &lacl->tpg_list);
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0044-sysctl-fix-write-access-to-dmesg_restrict-kptr_restr.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0044-sysctl-fix-write-access-to-dmesg_restrict-kptr_restr.patch
deleted file mode 100644
index e9c6efd..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0044-sysctl-fix-write-access-to-dmesg_restrict-kptr_restr.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-From 444559e0fe29e31b1a95a3668c530bd1aed732ce Mon Sep 17 00:00:00 2001
-From: Kees Cook <keescook at chromium.org>
-Date: Wed, 4 Apr 2012 11:40:19 -0700
-Subject: [PATCH 44/60] sysctl: fix write access to
- dmesg_restrict/kptr_restrict
-
-commit 620f6e8e855d6d447688a5f67a4e176944a084e8 upstream.
-
-Commit bfdc0b4 adds code to restrict access to dmesg_restrict,
-however, it incorrectly alters kptr_restrict rather than
-dmesg_restrict.
-
-The original patch from Richard Weinberger
-(https://lkml.org/lkml/2011/3/14/362) alters dmesg_restrict as
-expected, and so the patch seems to have been misapplied.
-
-This adds the CAP_SYS_ADMIN check to both dmesg_restrict and
-kptr_restrict, since both are sensitive.
-
-Reported-by: Phillip Lougher <plougher at redhat.com>
-Signed-off-by: Kees Cook <keescook at chromium.org>
-Acked-by: Serge Hallyn <serge.hallyn at canonical.com>
-Acked-by: Richard Weinberger <richard at nod.at>
-Signed-off-by: James Morris <james.l.morris at oracle.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- kernel/sysctl.c | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/kernel/sysctl.c b/kernel/sysctl.c
-index ae27196..ea7ec7f 100644
---- a/kernel/sysctl.c
-+++ b/kernel/sysctl.c
-@@ -166,7 +166,7 @@ static int proc_taint(struct ctl_table *table, int write,
- #endif
-
- #ifdef CONFIG_PRINTK
--static int proc_dmesg_restrict(struct ctl_table *table, int write,
-+static int proc_dointvec_minmax_sysadmin(struct ctl_table *table, int write,
- void __user *buffer, size_t *lenp, loff_t *ppos);
- #endif
-
-@@ -713,7 +713,7 @@ static struct ctl_table kern_table[] = {
- .data = &dmesg_restrict,
- .maxlen = sizeof(int),
- .mode = 0644,
-- .proc_handler = proc_dointvec_minmax,
-+ .proc_handler = proc_dointvec_minmax_sysadmin,
- .extra1 = &zero,
- .extra2 = &one,
- },
-@@ -722,7 +722,7 @@ static struct ctl_table kern_table[] = {
- .data = &kptr_restrict,
- .maxlen = sizeof(int),
- .mode = 0644,
-- .proc_handler = proc_dmesg_restrict,
-+ .proc_handler = proc_dointvec_minmax_sysadmin,
- .extra1 = &zero,
- .extra2 = &two,
- },
-@@ -2422,7 +2422,7 @@ static int proc_taint(struct ctl_table *table, int write,
- }
-
- #ifdef CONFIG_PRINTK
--static int proc_dmesg_restrict(struct ctl_table *table, int write,
-+static int proc_dointvec_minmax_sysadmin(struct ctl_table *table, int write,
- void __user *buffer, size_t *lenp, loff_t *ppos)
- {
- if (write && !capable(CAP_SYS_ADMIN))
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0045-modpost-Fix-modpost-license-checking-of-vmlinux.o.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0045-modpost-Fix-modpost-license-checking-of-vmlinux.o.patch
deleted file mode 100644
index 8fcd35e..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0045-modpost-Fix-modpost-license-checking-of-vmlinux.o.patch
+++ /dev/null
@@ -1,74 +0,0 @@
-From ee1916e58deb327a1bbaba6fc344e593fc54764f Mon Sep 17 00:00:00 2001
-From: Frank Rowand <frank.rowand at am.sony.com>
-Date: Mon, 9 Apr 2012 17:59:03 -0700
-Subject: [PATCH 45/60] modpost: Fix modpost license checking of vmlinux.o
-
-commit 258f742635360175564e9470eb060ff4d4b984e7 upstream.
-
-Commit f02e8a6596b7 ("module: Sort exported symbols") sorts symbols
-placing each of them in its own elf section. This sorting and merging
-into the canonical sections are done by the linker.
-
-Unfortunately modpost to generate Module.symvers file parses vmlinux.o
-(which is not linked yet) and all modules object files (which aren't
-linked yet). These aren't sanitized by the linker yet. That breaks
-modpost that can't detect license properly for modules.
-
-This patch makes modpost aware of the new exported symbols structure.
-
-[ This above is a slightly corrected version of the explanation of the
- problem, copied from commit 62a2635610db ("modpost: Fix modpost's
- license checking V3"). That commit fixed the problem for module
- object files, but not for vmlinux.o. This patch fixes modpost for
- vmlinux.o. ]
-
-Signed-off-by: Frank Rowand <frank.rowand at am.sony.com>
-Signed-off-by: Alessio Igor Bogani <abogani at kernel.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- scripts/mod/modpost.c | 7 +++++--
- scripts/mod/modpost.h | 1 +
- 2 files changed, 6 insertions(+), 2 deletions(-)
-
-diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
-index 159b4cc..619228d 100644
---- a/scripts/mod/modpost.c
-+++ b/scripts/mod/modpost.c
-@@ -132,8 +132,10 @@ static struct module *new_module(char *modname)
- /* strip trailing .o */
- s = strrchr(p, '.');
- if (s != NULL)
-- if (strcmp(s, ".o") == 0)
-+ if (strcmp(s, ".o") == 0) {
- *s = '\0';
-+ mod->is_dot_o = 1;
-+ }
-
- /* add to list */
- mod->name = p;
-@@ -587,7 +589,8 @@ static void handle_modversions(struct module *mod, struct elf_info *info,
- unsigned int crc;
- enum export export;
-
-- if (!is_vmlinux(mod->name) && strncmp(symname, "__ksymtab", 9) == 0)
-+ if ((!is_vmlinux(mod->name) || mod->is_dot_o) &&
-+ strncmp(symname, "__ksymtab", 9) == 0)
- export = export_from_secname(info, get_secindex(info, sym));
- else
- export = export_from_sec(info, get_secindex(info, sym));
-diff --git a/scripts/mod/modpost.h b/scripts/mod/modpost.h
-index 2031119..51207e4 100644
---- a/scripts/mod/modpost.h
-+++ b/scripts/mod/modpost.h
-@@ -113,6 +113,7 @@ struct module {
- int has_cleanup;
- struct buffer dev_table_buf;
- char srcversion[25];
-+ int is_dot_o;
- };
-
- struct elf_info {
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0046-x86-PCI-use-host-bridge-_CRS-info-on-MSI-MS-7253.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0046-x86-PCI-use-host-bridge-_CRS-info-on-MSI-MS-7253.patch
deleted file mode 100644
index e122d2a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0046-x86-PCI-use-host-bridge-_CRS-info-on-MSI-MS-7253.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From b8c4c0ffa982752ee73d7eb5afaf39635e86ee43 Mon Sep 17 00:00:00 2001
-From: Jonathan Nieder <jrnieder at gmail.com>
-Date: Tue, 28 Feb 2012 11:51:10 -0700
-Subject: [PATCH 46/60] x86/PCI: use host bridge _CRS info on MSI MS-7253
-
-commit 8411371709610c826bf65684f886bfdfb5780ca1 upstream.
-
-In the spirit of commit 29cf7a30f8a0 ("x86/PCI: use host bridge _CRS
-info on ASUS M2V-MX SE"), this DMI quirk turns on "pci_use_crs" by
-default on a board that needs it.
-
-This fixes boot failures and oopses introduced in 3e3da00c01d0
-("x86/pci: AMD one chain system to use pci read out res"). The quirk
-is quite targetted (to a specific board and BIOS version) for two
-reasons:
-
- (1) to emphasize that this method of tackling the problem one quirk
- at a time is a little insane
-
- (2) to give BIOS vendors an opportunity to use simpler tables and
- allow us to return to generic behavior (whatever that happens to
- be) with a later BIOS update
-
-In other words, I am not at all happy with having quirks like this.
-But it is even worse for the kernel not to work out of the box on
-these machines, so...
-
-Reference: https://bugzilla.kernel.org/show_bug.cgi?id=42619
-Reported-by: Svante Signell <svante.signell at telia.com>
-Signed-off-by: Jonathan Nieder <jrnieder at gmail.com>
-Signed-off-by: Bjorn Helgaas <bhelgaas at google.com>
-Signed-off-by: Jesse Barnes <jbarnes at virtuousgeek.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/x86/pci/acpi.c | 11 +++++++++++
- 1 file changed, 11 insertions(+)
-
-diff --git a/arch/x86/pci/acpi.c b/arch/x86/pci/acpi.c
-index f8348ab..dc00ad5 100644
---- a/arch/x86/pci/acpi.c
-+++ b/arch/x86/pci/acpi.c
-@@ -54,6 +54,17 @@ static const struct dmi_system_id pci_use_crs_table[] __initconst = {
- DMI_MATCH(DMI_BIOS_VENDOR, "American Megatrends Inc."),
- },
- },
-+ /* https://bugzilla.kernel.org/show_bug.cgi?id=42619 */
-+ {
-+ .callback = set_use_crs,
-+ .ident = "MSI MS-7253",
-+ .matches = {
-+ DMI_MATCH(DMI_BOARD_VENDOR, "MICRO-STAR INTERNATIONAL CO., LTD"),
-+ DMI_MATCH(DMI_BOARD_NAME, "MS-7253"),
-+ DMI_MATCH(DMI_BIOS_VENDOR, "Phoenix Technologies, LTD"),
-+ DMI_MATCH(DMI_BIOS_VERSION, "V1.6"),
-+ },
-+ },
- {}
- };
-
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0047-x86-PCI-do-not-tie-MSI-MS-7253-use_crs-quirk-to-BIOS.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0047-x86-PCI-do-not-tie-MSI-MS-7253-use_crs-quirk-to-BIOS.patch
deleted file mode 100644
index 240d1be..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0047-x86-PCI-do-not-tie-MSI-MS-7253-use_crs-quirk-to-BIOS.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From 6283a8eb02e48cf6f56470723c8b2f518dbe6554 Mon Sep 17 00:00:00 2001
-From: Jonathan Nieder <jrnieder at gmail.com>
-Date: Tue, 28 Feb 2012 15:31:35 -0600
-Subject: [PATCH 47/60] x86/PCI: do not tie MSI MS-7253 use_crs quirk to BIOS
- version
-
-commit a97f4f5e524bcd09a85ef0b8821a14d35e69335f upstream.
-
-Carlos was getting
-
- WARNING: at drivers/pci/pci.c:118 pci_ioremap_bar+0x24/0x52()
-
-when probing his sound card, and sound did not work. After adding
-pci=use_crs to the kernel command line, no more trouble.
-
-Ok, we can add a quirk. dmidecode output reveals that this is an MSI
-MS-7253, for which we already have a quirk, but the short-sighted
-author tied the quirk to a single BIOS version, making it not kick in
-on Carlos's machine with BIOS V1.2. If a later BIOS update makes it
-no longer necessary to look at the _CRS info it will still be
-harmless, so let's stop trying to guess which versions have and don't
-have accurate _CRS tables.
-
-Addresses https://bugtrack.alsa-project.org/alsa-bug/view.php?id=5533
-Also see <https://bugzilla.kernel.org/show_bug.cgi?id=42619>.
-
-Reported-by: Carlos Luna <caralu74 at gmail.com>
-Reviewed-by: Bjorn Helgaas <bhelgaas at google.com>
-Signed-off-by: Jonathan Nieder <jrnieder at gmail.com>
-Signed-off-by: Jesse Barnes <jbarnes at virtuousgeek.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/x86/pci/acpi.c | 1 -
- 1 file changed, 1 deletion(-)
-
-diff --git a/arch/x86/pci/acpi.c b/arch/x86/pci/acpi.c
-index dc00ad5..0ed97d8 100644
---- a/arch/x86/pci/acpi.c
-+++ b/arch/x86/pci/acpi.c
-@@ -62,7 +62,6 @@ static const struct dmi_system_id pci_use_crs_table[] __initconst = {
- DMI_MATCH(DMI_BOARD_VENDOR, "MICRO-STAR INTERNATIONAL CO., LTD"),
- DMI_MATCH(DMI_BOARD_NAME, "MS-7253"),
- DMI_MATCH(DMI_BIOS_VENDOR, "Phoenix Technologies, LTD"),
-- DMI_MATCH(DMI_BIOS_VERSION, "V1.6"),
- },
- },
- {}
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0048-TOMOYO-Fix-mount-flags-checking-order.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0048-TOMOYO-Fix-mount-flags-checking-order.patch
deleted file mode 100644
index 114b0a0..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0048-TOMOYO-Fix-mount-flags-checking-order.patch
+++ /dev/null
@@ -1,91 +0,0 @@
-From 94366efb1ed1a86595b8b1bd4f0d22f581b5a6c2 Mon Sep 17 00:00:00 2001
-From: Tetsuo Handa <penguin-kernel at I-love.SAKURA.ne.jp>
-Date: Wed, 29 Feb 2012 21:53:22 +0900
-Subject: [PATCH 48/60] TOMOYO: Fix mount flags checking order.
-
-commit df91e49477a9be15921cb2854e1d12a3bdb5e425 upstream.
-
-Userspace can pass in arbitrary combinations of MS_* flags to mount().
-
-If both MS_BIND and one of MS_SHARED/MS_PRIVATE/MS_SLAVE/MS_UNBINDABLE are
-passed, device name which should be checked for MS_BIND was not checked because
-MS_SHARED/MS_PRIVATE/MS_SLAVE/MS_UNBINDABLE had higher priority than MS_BIND.
-
-If both one of MS_BIND/MS_MOVE and MS_REMOUNT are passed, device name which
-should not be checked for MS_REMOUNT was checked because MS_BIND/MS_MOVE had
-higher priority than MS_REMOUNT.
-
-Fix these bugs by changing priority to MS_REMOUNT -> MS_BIND ->
-MS_SHARED/MS_PRIVATE/MS_SLAVE/MS_UNBINDABLE -> MS_MOVE as with do_mount() does.
-
-Also, unconditionally return -EINVAL if more than one of
-MS_SHARED/MS_PRIVATE/MS_SLAVE/MS_UNBINDABLE is passed so that TOMOYO will not
-generate inaccurate audit logs, for commit 7a2e8a8f "VFS: Sanity check mount
-flags passed to change_mnt_propagation()" clarified that these flags must be
-exclusively passed.
-
-Signed-off-by: Tetsuo Handa <penguin-kernel at I-love.SAKURA.ne.jp>
-Signed-off-by: James Morris <james.l.morris at oracle.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- security/tomoyo/mount.c | 38 ++++++++++++++++++++------------------
- 1 file changed, 20 insertions(+), 18 deletions(-)
-
-diff --git a/security/tomoyo/mount.c b/security/tomoyo/mount.c
-index bee09d0..fe00cdf 100644
---- a/security/tomoyo/mount.c
-+++ b/security/tomoyo/mount.c
-@@ -199,30 +199,32 @@ int tomoyo_mount_permission(char *dev_name, struct path *path,
- if (flags & MS_REMOUNT) {
- type = tomoyo_mounts[TOMOYO_MOUNT_REMOUNT];
- flags &= ~MS_REMOUNT;
-- }
-- if (flags & MS_MOVE) {
-- type = tomoyo_mounts[TOMOYO_MOUNT_MOVE];
-- flags &= ~MS_MOVE;
-- }
-- if (flags & MS_BIND) {
-+ } else if (flags & MS_BIND) {
- type = tomoyo_mounts[TOMOYO_MOUNT_BIND];
- flags &= ~MS_BIND;
-- }
-- if (flags & MS_UNBINDABLE) {
-- type = tomoyo_mounts[TOMOYO_MOUNT_MAKE_UNBINDABLE];
-- flags &= ~MS_UNBINDABLE;
-- }
-- if (flags & MS_PRIVATE) {
-+ } else if (flags & MS_SHARED) {
-+ if (flags & (MS_PRIVATE | MS_SLAVE | MS_UNBINDABLE))
-+ return -EINVAL;
-+ type = tomoyo_mounts[TOMOYO_MOUNT_MAKE_SHARED];
-+ flags &= ~MS_SHARED;
-+ } else if (flags & MS_PRIVATE) {
-+ if (flags & (MS_SHARED | MS_SLAVE | MS_UNBINDABLE))
-+ return -EINVAL;
- type = tomoyo_mounts[TOMOYO_MOUNT_MAKE_PRIVATE];
- flags &= ~MS_PRIVATE;
-- }
-- if (flags & MS_SLAVE) {
-+ } else if (flags & MS_SLAVE) {
-+ if (flags & (MS_SHARED | MS_PRIVATE | MS_UNBINDABLE))
-+ return -EINVAL;
- type = tomoyo_mounts[TOMOYO_MOUNT_MAKE_SLAVE];
- flags &= ~MS_SLAVE;
-- }
-- if (flags & MS_SHARED) {
-- type = tomoyo_mounts[TOMOYO_MOUNT_MAKE_SHARED];
-- flags &= ~MS_SHARED;
-+ } else if (flags & MS_UNBINDABLE) {
-+ if (flags & (MS_SHARED | MS_PRIVATE | MS_SLAVE))
-+ return -EINVAL;
-+ type = tomoyo_mounts[TOMOYO_MOUNT_MAKE_UNBINDABLE];
-+ flags &= ~MS_UNBINDABLE;
-+ } else if (flags & MS_MOVE) {
-+ type = tomoyo_mounts[TOMOYO_MOUNT_MOVE];
-+ flags &= ~MS_MOVE;
- }
- if (!type)
- type = "<NULL>";
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0049-Revert-x86-ioapic-Add-register-level-checks-to-detec.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0049-Revert-x86-ioapic-Add-register-level-checks-to-detec.patch
deleted file mode 100644
index 505f91f..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0049-Revert-x86-ioapic-Add-register-level-checks-to-detec.patch
+++ /dev/null
@@ -1,100 +0,0 @@
-From 411c3c5e1a3ce763286c32ec38523f111d836fdc Mon Sep 17 00:00:00 2001
-From: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Date: Tue, 10 Apr 2012 16:04:49 -0700
-Subject: [PATCH 49/60] Revert "x86/ioapic: Add register level checks to
- detect bogus io-apic entries"
-
-This reverts commit 273fb194e86b795b08a724c7646d0f694949070b
-[73d63d038ee9f769f5e5b46792d227fe20e442c5 upstream]
-
-It causes problems, so needs to be reverted from 3.2-stable for now.
-
-Reported-by: Konrad Rzeszutek Wilk <konrad.wilk at oracle.com>
-Cc: Jon Dufresne <jon at jondufresne.org>
-Cc: Suresh Siddha <suresh.b.siddha at intel.com>
-Cc: <yinghai at kernel.org>
-Cc: Josh Boyer <jwboyer at redhat.com>
-Cc: Ingo Molnar <mingo at elte.hu>
-Cc: Teck Choon Giam <giamteckchoon at gmail.com>
-Cc: Ben Guthro <ben at guthro.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/x86/kernel/apic/io_apic.c | 40 ++++++++--------------------------------
- 1 file changed, 8 insertions(+), 32 deletions(-)
-
-diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c
-index a25e276..6d939d7 100644
---- a/arch/x86/kernel/apic/io_apic.c
-+++ b/arch/x86/kernel/apic/io_apic.c
-@@ -3963,36 +3963,18 @@ int mp_find_ioapic_pin(int ioapic, u32 gsi)
- static __init int bad_ioapic(unsigned long address)
- {
- if (nr_ioapics >= MAX_IO_APICS) {
-- pr_warn("WARNING: Max # of I/O APICs (%d) exceeded (found %d), skipping\n",
-- MAX_IO_APICS, nr_ioapics);
-+ printk(KERN_WARNING "WARNING: Max # of I/O APICs (%d) exceeded "
-+ "(found %d), skipping\n", MAX_IO_APICS, nr_ioapics);
- return 1;
- }
- if (!address) {
-- pr_warn("WARNING: Bogus (zero) I/O APIC address found in table, skipping!\n");
-+ printk(KERN_WARNING "WARNING: Bogus (zero) I/O APIC address"
-+ " found in table, skipping!\n");
- return 1;
- }
- return 0;
- }
-
--static __init int bad_ioapic_register(int idx)
--{
-- union IO_APIC_reg_00 reg_00;
-- union IO_APIC_reg_01 reg_01;
-- union IO_APIC_reg_02 reg_02;
--
-- reg_00.raw = io_apic_read(idx, 0);
-- reg_01.raw = io_apic_read(idx, 1);
-- reg_02.raw = io_apic_read(idx, 2);
--
-- if (reg_00.raw == -1 && reg_01.raw == -1 && reg_02.raw == -1) {
-- pr_warn("I/O APIC 0x%x registers return all ones, skipping!\n",
-- mpc_ioapic_addr(idx));
-- return 1;
-- }
--
-- return 0;
--}
--
- void __init mp_register_ioapic(int id, u32 address, u32 gsi_base)
- {
- int idx = 0;
-@@ -4009,12 +3991,6 @@ void __init mp_register_ioapic(int id, u32 address, u32 gsi_base)
- ioapics[idx].mp_config.apicaddr = address;
-
- set_fixmap_nocache(FIX_IO_APIC_BASE_0 + idx, address);
--
-- if (bad_ioapic_register(idx)) {
-- clear_fixmap(FIX_IO_APIC_BASE_0 + idx);
-- return;
-- }
--
- ioapics[idx].mp_config.apicid = io_apic_unique_id(id);
- ioapics[idx].mp_config.apicver = io_apic_get_version(idx);
-
-@@ -4035,10 +4011,10 @@ void __init mp_register_ioapic(int id, u32 address, u32 gsi_base)
- if (gsi_cfg->gsi_end >= gsi_top)
- gsi_top = gsi_cfg->gsi_end + 1;
-
-- pr_info("IOAPIC[%d]: apic_id %d, version %d, address 0x%x, GSI %d-%d\n",
-- idx, mpc_ioapic_id(idx),
-- mpc_ioapic_ver(idx), mpc_ioapic_addr(idx),
-- gsi_cfg->gsi_base, gsi_cfg->gsi_end);
-+ printk(KERN_INFO "IOAPIC[%d]: apic_id %d, version %d, address 0x%x, "
-+ "GSI %d-%d\n", idx, mpc_ioapic_id(idx),
-+ mpc_ioapic_ver(idx), mpc_ioapic_addr(idx),
-+ gsi_cfg->gsi_base, gsi_cfg->gsi_end);
-
- nr_ioapics++;
- }
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0050-acer-wmi-No-wifi-rfkill-on-Sony-machines.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0050-acer-wmi-No-wifi-rfkill-on-Sony-machines.patch
deleted file mode 100644
index b564480..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0050-acer-wmi-No-wifi-rfkill-on-Sony-machines.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From ad14133a305d5de3309f31b52c0e9456eb3310be Mon Sep 17 00:00:00 2001
-From: "Lee, Chun-Yi" <joeyli.kernel at gmail.com>
-Date: Fri, 23 Mar 2012 12:36:44 +0800
-Subject: [PATCH 50/60] acer-wmi: No wifi rfkill on Sony machines
-
-commit 5719b81988f3c24ff694dc3a37e35b35630a3966 upstream.
-
-The wireless rfkill should charged by sony-laptop but not acer-wmi.
-So, add Sony's SNY5001 acpi device to blacklist in acer-wmi.
-
-Tested on Sony Vaio
-
-Cc: Carlos Corbacho <carlos at strangeworlds.co.uk>
-Cc: Matthew Garrett <mjg at redhat.com>
-Cc: Mattia Dongili <malattia at linux.it>
-Cc: Dimitris N <ddarlac at gmail.com>
-Tested-by: Dimitris N <ddarlac at gmail.com>
-Signed-off-by: Lee, Chun-Yi <jlee at suse.com>
-Signed-off-by: Matthew Garrett <mjg at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/platform/x86/acer-wmi.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/platform/x86/acer-wmi.c b/drivers/platform/x86/acer-wmi.c
-index 1e5290b..110e4af 100644
---- a/drivers/platform/x86/acer-wmi.c
-+++ b/drivers/platform/x86/acer-wmi.c
-@@ -692,6 +692,7 @@ static const struct acpi_device_id norfkill_ids[] = {
- { "VPC2004", 0},
- { "IBM0068", 0},
- { "LEN0068", 0},
-+ { "SNY5001", 0}, /* sony-laptop in charge */
- { "", 0},
- };
-
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0051-Fix-length-of-buffer-copied-in-__nfs4_get_acl_uncach.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0051-Fix-length-of-buffer-copied-in-__nfs4_get_acl_uncach.patch
deleted file mode 100644
index f755199..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0051-Fix-length-of-buffer-copied-in-__nfs4_get_acl_uncach.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 9f35dc6cc9f96e7a45b42dd5e4c8e2eee1e84e05 Mon Sep 17 00:00:00 2001
-From: Sachin Prabhu <sprabhu at redhat.com>
-Date: Thu, 22 Mar 2012 16:46:28 +0000
-Subject: [PATCH 51/60] Fix length of buffer copied in __nfs4_get_acl_uncached
-
-commit 20e0fa98b751facf9a1101edaefbc19c82616a68 upstream.
-
-_copy_from_pages() used to copy data from the temporary buffer to the
-user passed buffer is passed the wrong size parameter when copying
-data. res.acl_len contains both the bitmap and acl lenghts while
-acl_len contains the acl length after adjusting for the bitmap size.
-
-Signed-off-by: Sachin Prabhu <sprabhu at redhat.com>
-Signed-off-by: Trond Myklebust <Trond.Myklebust at netapp.com>
-Cc: Josh Boyer <jwboyer at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/nfs/nfs4proc.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
-index d945700..757293b 100644
---- a/fs/nfs/nfs4proc.c
-+++ b/fs/nfs/nfs4proc.c
-@@ -3618,7 +3618,7 @@ static ssize_t __nfs4_get_acl_uncached(struct inode *inode, void *buf, size_t bu
- if (acl_len > buflen)
- goto out_free;
- _copy_from_pages(buf, pages, res.acl_data_offset,
-- res.acl_len);
-+ acl_len);
- }
- ret = acl_len;
- out_free:
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0052-sched-x86-Fix-overflow-in-cyc2ns_offset.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0052-sched-x86-Fix-overflow-in-cyc2ns_offset.patch
deleted file mode 100644
index 0300631..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0052-sched-x86-Fix-overflow-in-cyc2ns_offset.patch
+++ /dev/null
@@ -1,99 +0,0 @@
-From 844d37ab7b6069d15d096a879225ac1e71b51974 Mon Sep 17 00:00:00 2001
-From: Salman Qazi <sqazi at google.com>
-Date: Fri, 9 Mar 2012 16:41:01 -0800
-Subject: [PATCH 52/60] sched/x86: Fix overflow in cyc2ns_offset
-
-commit 9993bc635d01a6ee7f6b833b4ee65ce7c06350b1 upstream.
-
-When a machine boots up, the TSC generally gets reset. However,
-when kexec is used to boot into a kernel, the TSC value would be
-carried over from the previous kernel. The computation of
-cycns_offset in set_cyc2ns_scale is prone to an overflow, if the
-machine has been up more than 208 days prior to the kexec. The
-overflow happens when we multiply *scale, even though there is
-enough room to store the final answer.
-
-We fix this issue by decomposing tsc_now into the quotient and
-remainder of division by CYC2NS_SCALE_FACTOR and then performing
-the multiplication separately on the two components.
-
-Refactor code to share the calculation with the previous
-fix in __cycles_2_ns().
-
-Signed-off-by: Salman Qazi <sqazi at google.com>
-Acked-by: John Stultz <john.stultz at linaro.org>
-Acked-by: Peter Zijlstra <a.p.zijlstra at chello.nl>
-Cc: Paul Turner <pjt at google.com>
-Cc: john stultz <johnstul at us.ibm.com>
-Link: http://lkml.kernel.org/r/20120310004027.19291.88460.stgit@dungbeetle.mtv.corp.google.com
-Signed-off-by: Ingo Molnar <mingo at elte.hu>
-Cc: Mike Galbraith <efault at gmx.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/x86/include/asm/timer.h | 8 ++------
- arch/x86/kernel/tsc.c | 3 ++-
- include/linux/kernel.h | 13 +++++++++++++
- 3 files changed, 17 insertions(+), 7 deletions(-)
-
-diff --git a/arch/x86/include/asm/timer.h b/arch/x86/include/asm/timer.h
-index 431793e..34baa0e 100644
---- a/arch/x86/include/asm/timer.h
-+++ b/arch/x86/include/asm/timer.h
-@@ -57,14 +57,10 @@ DECLARE_PER_CPU(unsigned long long, cyc2ns_offset);
-
- static inline unsigned long long __cycles_2_ns(unsigned long long cyc)
- {
-- unsigned long long quot;
-- unsigned long long rem;
- int cpu = smp_processor_id();
- unsigned long long ns = per_cpu(cyc2ns_offset, cpu);
-- quot = (cyc >> CYC2NS_SCALE_FACTOR);
-- rem = cyc & ((1ULL << CYC2NS_SCALE_FACTOR) - 1);
-- ns += quot * per_cpu(cyc2ns, cpu) +
-- ((rem * per_cpu(cyc2ns, cpu)) >> CYC2NS_SCALE_FACTOR);
-+ ns += mult_frac(cyc, per_cpu(cyc2ns, cpu),
-+ (1UL << CYC2NS_SCALE_FACTOR));
- return ns;
- }
-
-diff --git a/arch/x86/kernel/tsc.c b/arch/x86/kernel/tsc.c
-index 3fe298a..1ec515b 100644
---- a/arch/x86/kernel/tsc.c
-+++ b/arch/x86/kernel/tsc.c
-@@ -622,7 +622,8 @@ static void set_cyc2ns_scale(unsigned long cpu_khz, int cpu)
-
- if (cpu_khz) {
- *scale = (NSEC_PER_MSEC << CYC2NS_SCALE_FACTOR)/cpu_khz;
-- *offset = ns_now - (tsc_now * *scale >> CYC2NS_SCALE_FACTOR);
-+ *offset = ns_now - mult_frac(tsc_now, *scale,
-+ (1UL << CYC2NS_SCALE_FACTOR));
- }
-
- sched_clock_idle_wakeup_event(0);
-diff --git a/include/linux/kernel.h b/include/linux/kernel.h
-index e8b1597..a70783d 100644
---- a/include/linux/kernel.h
-+++ b/include/linux/kernel.h
-@@ -85,6 +85,19 @@
- } \
- )
-
-+/*
-+ * Multiplies an integer by a fraction, while avoiding unnecessary
-+ * overflow or loss of precision.
-+ */
-+#define mult_frac(x, numer, denom)( \
-+{ \
-+ typeof(x) quot = (x) / (denom); \
-+ typeof(x) rem = (x) % (denom); \
-+ (quot * (numer)) + ((rem * (numer)) / (denom)); \
-+} \
-+)
-+
-+
- #define _RET_IP_ (unsigned long)__builtin_return_address(0)
- #define _THIS_IP_ ({ __label__ __here; __here: (unsigned long)&&__here; })
-
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0053-mfd-Clear-twl6030-IRQ-status-register-only-once.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0053-mfd-Clear-twl6030-IRQ-status-register-only-once.patch
deleted file mode 100644
index 02d849a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0053-mfd-Clear-twl6030-IRQ-status-register-only-once.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From 84eaf07729408e49027beda2fb0861aad6f96bce Mon Sep 17 00:00:00 2001
-From: Nishanth Menon <nm at ti.com>
-Date: Wed, 22 Feb 2012 20:03:45 -0600
-Subject: [PATCH 53/60] mfd: Clear twl6030 IRQ status register only once
-
-commit 3f8349e6e98ba0455437724589072523865eae5e upstream.
-
-TWL6030 family of PMIC use a shadow interrupt status register
-while kernel processes the current interrupt event.
-However, any write(0 or 1) to register INT_STS_A, INT_STS_B or
-INT_STS_C clears all 3 interrupt status registers.
-
-Since clear of the interrupt is done on 32k clk, depending on I2C
-bus speed, we could in-adverently clear the status of a interrupt
-status pending on shadow register in the current implementation.
-This is due to the fact that multi-byte i2c write operation into
-three seperate status register could result in multiple load
-and clear of status and result in lost interrupts.
-
-Instead, doing a single byte write to INT_STS_A register with 0x0
-will clear all three interrupt status registers without the related
-risk.
-
-Acked-by: Santosh Shilimkar <santosh.shilimkar at ti.com>
-Signed-off-by: Nishanth Menon <nm at ti.com>
-Signed-off-by: Samuel Ortiz <sameo at linux.intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/mfd/twl6030-irq.c | 13 +++++++++++--
- 1 file changed, 11 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/mfd/twl6030-irq.c b/drivers/mfd/twl6030-irq.c
-index 3eee45f..83f4988 100644
---- a/drivers/mfd/twl6030-irq.c
-+++ b/drivers/mfd/twl6030-irq.c
-@@ -187,8 +187,17 @@ static int twl6030_irq_thread(void *data)
- }
- local_irq_enable();
- }
-- ret = twl_i2c_write(TWL_MODULE_PIH, sts.bytes,
-- REG_INT_STS_A, 3); /* clear INT_STS_A */
-+
-+ /*
-+ * NOTE:
-+ * Simulation confirms that documentation is wrong w.r.t the
-+ * interrupt status clear operation. A single *byte* write to
-+ * any one of STS_A to STS_C register results in all three
-+ * STS registers being reset. Since it does not matter which
-+ * value is written, all three registers are cleared on a
-+ * single byte write, so we just use 0x0 to clear.
-+ */
-+ ret = twl_i2c_write_u8(TWL_MODULE_PIH, 0x00, REG_INT_STS_A);
- if (ret)
- pr_warning("twl6030: I2C error in clearing PIH ISR\n");
-
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0054-USB-Add-Motorola-Rokr-E6-Id-to-the-USBNet-driver-zau.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0054-USB-Add-Motorola-Rokr-E6-Id-to-the-USBNet-driver-zau.patch
deleted file mode 100644
index 5a194e9..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0054-USB-Add-Motorola-Rokr-E6-Id-to-the-USBNet-driver-zau.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From d784d12ff4ada66b51ad2f394ab6cd391859897c Mon Sep 17 00:00:00 2001
-From: Guan Xin <guanx.bac at gmail.com>
-Date: Mon, 26 Mar 2012 04:11:46 +0000
-Subject: [PATCH 54/60] USB: Add Motorola Rokr E6 Id to the USBNet driver
- "zaurus"
-
-commit a2daf263107ba3eb6db33931881731fa51c95045 upstream.
-
-Added Vendor/Device Id of Motorola Rokr E6 (22b8:6027) so it can be
-recognized by the "zaurus" USBNet driver.
-Applies to Linux 3.2.13 and 2.6.39.4.
-Signed-off-by: Guan Xin <guanx.bac at gmail.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/net/usb/zaurus.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/drivers/net/usb/zaurus.c b/drivers/net/usb/zaurus.c
-index 246b3bb..c1e6a44 100644
---- a/drivers/net/usb/zaurus.c
-+++ b/drivers/net/usb/zaurus.c
-@@ -332,6 +332,11 @@ static const struct usb_device_id products [] = {
- .driver_info = ZAURUS_PXA_INFO,
- },
- {
-+ /* Motorola Rokr E6 */
-+ USB_DEVICE_AND_INTERFACE_INFO(0x22b8, 0x6027, USB_CLASS_COMM,
-+ USB_CDC_SUBCLASS_MDLM, USB_CDC_PROTO_NONE),
-+ .driver_info = (unsigned long) &bogus_mdlm_info,
-+}, {
- /* Motorola MOTOMAGX phones */
- USB_DEVICE_AND_INTERFACE_INFO(0x22b8, 0x6425, USB_CLASS_COMM,
- USB_CDC_SUBCLASS_MDLM, USB_CDC_PROTO_NONE),
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0055-ioat-fix-size-of-completion-for-Xen.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0055-ioat-fix-size-of-completion-for-Xen.patch
deleted file mode 100644
index 8dc9bec..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0055-ioat-fix-size-of-completion-for-Xen.patch
+++ /dev/null
@@ -1,209 +0,0 @@
-From 5c626e88cf0666b3663b56cdd9c43daff62153cd Mon Sep 17 00:00:00 2001
-From: Dan Williams <dan.j.williams at intel.com>
-Date: Fri, 23 Mar 2012 13:36:42 -0700
-Subject: [PATCH 55/60] ioat: fix size of 'completion' for Xen
-
-commit 275029353953c2117941ade84f02a2303912fad1 upstream.
-
-Starting with v3.2 Jonathan reports that Xen crashes loading the ioatdma
-driver. A debug run shows:
-
- ioatdma 0000:00:16.4: desc[0]: (0x300cc7000->0x300cc7040) cookie: 0 flags: 0x2 ctl: 0x29 (op: 0 int_en: 1 compl: 1)
- ...
- ioatdma 0000:00:16.4: ioat_get_current_completion: phys_complete: 0xcc7000
-
-...which shows that in this environment GFP_KERNEL memory may be backed
-by a 64-bit dma address. This breaks the driver's assumption that an
-unsigned long should be able to contain the physical address for
-descriptor memory. Switch to dma_addr_t which beyond being the right
-size, is the true type for the data i.e. an io-virtual address
-inidicating the engine's last processed descriptor.
-
-Reported-by: Jonathan Nieder <jrnieder at gmail.com>
-Reported-by: William Dauchy <wdauchy at gmail.com>
-Tested-by: William Dauchy <wdauchy at gmail.com>
-Tested-by: Dave Jiang <dave.jiang at intel.com>
-Signed-off-by: Dan Williams <dan.j.williams at intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/dma/ioat/dma.c | 16 ++++++++--------
- drivers/dma/ioat/dma.h | 6 +++---
- drivers/dma/ioat/dma_v2.c | 8 ++++----
- drivers/dma/ioat/dma_v3.c | 8 ++++----
- 4 files changed, 19 insertions(+), 19 deletions(-)
-
-diff --git a/drivers/dma/ioat/dma.c b/drivers/dma/ioat/dma.c
-index a4d6cb0..6595180 100644
---- a/drivers/dma/ioat/dma.c
-+++ b/drivers/dma/ioat/dma.c
-@@ -548,9 +548,9 @@ void ioat_dma_unmap(struct ioat_chan_common *chan, enum dma_ctrl_flags flags,
- PCI_DMA_TODEVICE, flags, 0);
- }
-
--unsigned long ioat_get_current_completion(struct ioat_chan_common *chan)
-+dma_addr_t ioat_get_current_completion(struct ioat_chan_common *chan)
- {
-- unsigned long phys_complete;
-+ dma_addr_t phys_complete;
- u64 completion;
-
- completion = *chan->completion;
-@@ -571,7 +571,7 @@ unsigned long ioat_get_current_completion(struct ioat_chan_common *chan)
- }
-
- bool ioat_cleanup_preamble(struct ioat_chan_common *chan,
-- unsigned long *phys_complete)
-+ dma_addr_t *phys_complete)
- {
- *phys_complete = ioat_get_current_completion(chan);
- if (*phys_complete == chan->last_completion)
-@@ -582,14 +582,14 @@ bool ioat_cleanup_preamble(struct ioat_chan_common *chan,
- return true;
- }
-
--static void __cleanup(struct ioat_dma_chan *ioat, unsigned long phys_complete)
-+static void __cleanup(struct ioat_dma_chan *ioat, dma_addr_t phys_complete)
- {
- struct ioat_chan_common *chan = &ioat->base;
- struct list_head *_desc, *n;
- struct dma_async_tx_descriptor *tx;
-
-- dev_dbg(to_dev(chan), "%s: phys_complete: %lx\n",
-- __func__, phys_complete);
-+ dev_dbg(to_dev(chan), "%s: phys_complete: %llx\n",
-+ __func__, (unsigned long long) phys_complete);
- list_for_each_safe(_desc, n, &ioat->used_desc) {
- struct ioat_desc_sw *desc;
-
-@@ -655,7 +655,7 @@ static void __cleanup(struct ioat_dma_chan *ioat, unsigned long phys_complete)
- static void ioat1_cleanup(struct ioat_dma_chan *ioat)
- {
- struct ioat_chan_common *chan = &ioat->base;
-- unsigned long phys_complete;
-+ dma_addr_t phys_complete;
-
- prefetch(chan->completion);
-
-@@ -701,7 +701,7 @@ static void ioat1_timer_event(unsigned long data)
- mod_timer(&chan->timer, jiffies + COMPLETION_TIMEOUT);
- spin_unlock_bh(&ioat->desc_lock);
- } else if (test_bit(IOAT_COMPLETION_PENDING, &chan->state)) {
-- unsigned long phys_complete;
-+ dma_addr_t phys_complete;
-
- spin_lock_bh(&ioat->desc_lock);
- /* if we haven't made progress and we have already
-diff --git a/drivers/dma/ioat/dma.h b/drivers/dma/ioat/dma.h
-index 5216c8a..8bebddd 100644
---- a/drivers/dma/ioat/dma.h
-+++ b/drivers/dma/ioat/dma.h
-@@ -88,7 +88,7 @@ struct ioatdma_device {
- struct ioat_chan_common {
- struct dma_chan common;
- void __iomem *reg_base;
-- unsigned long last_completion;
-+ dma_addr_t last_completion;
- spinlock_t cleanup_lock;
- dma_cookie_t completed_cookie;
- unsigned long state;
-@@ -333,7 +333,7 @@ int __devinit ioat_dma_self_test(struct ioatdma_device *device);
- void __devexit ioat_dma_remove(struct ioatdma_device *device);
- struct dca_provider * __devinit ioat_dca_init(struct pci_dev *pdev,
- void __iomem *iobase);
--unsigned long ioat_get_current_completion(struct ioat_chan_common *chan);
-+dma_addr_t ioat_get_current_completion(struct ioat_chan_common *chan);
- void ioat_init_channel(struct ioatdma_device *device,
- struct ioat_chan_common *chan, int idx);
- enum dma_status ioat_dma_tx_status(struct dma_chan *c, dma_cookie_t cookie,
-@@ -341,7 +341,7 @@ enum dma_status ioat_dma_tx_status(struct dma_chan *c, dma_cookie_t cookie,
- void ioat_dma_unmap(struct ioat_chan_common *chan, enum dma_ctrl_flags flags,
- size_t len, struct ioat_dma_descriptor *hw);
- bool ioat_cleanup_preamble(struct ioat_chan_common *chan,
-- unsigned long *phys_complete);
-+ dma_addr_t *phys_complete);
- void ioat_kobject_add(struct ioatdma_device *device, struct kobj_type *type);
- void ioat_kobject_del(struct ioatdma_device *device);
- extern const struct sysfs_ops ioat_sysfs_ops;
-diff --git a/drivers/dma/ioat/dma_v2.c b/drivers/dma/ioat/dma_v2.c
-index 5d65f83..cb8864d 100644
---- a/drivers/dma/ioat/dma_v2.c
-+++ b/drivers/dma/ioat/dma_v2.c
-@@ -126,7 +126,7 @@ static void ioat2_start_null_desc(struct ioat2_dma_chan *ioat)
- spin_unlock_bh(&ioat->prep_lock);
- }
-
--static void __cleanup(struct ioat2_dma_chan *ioat, unsigned long phys_complete)
-+static void __cleanup(struct ioat2_dma_chan *ioat, dma_addr_t phys_complete)
- {
- struct ioat_chan_common *chan = &ioat->base;
- struct dma_async_tx_descriptor *tx;
-@@ -178,7 +178,7 @@ static void __cleanup(struct ioat2_dma_chan *ioat, unsigned long phys_complete)
- static void ioat2_cleanup(struct ioat2_dma_chan *ioat)
- {
- struct ioat_chan_common *chan = &ioat->base;
-- unsigned long phys_complete;
-+ dma_addr_t phys_complete;
-
- spin_lock_bh(&chan->cleanup_lock);
- if (ioat_cleanup_preamble(chan, &phys_complete))
-@@ -259,7 +259,7 @@ int ioat2_reset_sync(struct ioat_chan_common *chan, unsigned long tmo)
- static void ioat2_restart_channel(struct ioat2_dma_chan *ioat)
- {
- struct ioat_chan_common *chan = &ioat->base;
-- unsigned long phys_complete;
-+ dma_addr_t phys_complete;
-
- ioat2_quiesce(chan, 0);
- if (ioat_cleanup_preamble(chan, &phys_complete))
-@@ -274,7 +274,7 @@ void ioat2_timer_event(unsigned long data)
- struct ioat_chan_common *chan = &ioat->base;
-
- if (test_bit(IOAT_COMPLETION_PENDING, &chan->state)) {
-- unsigned long phys_complete;
-+ dma_addr_t phys_complete;
- u64 status;
-
- status = ioat_chansts(chan);
-diff --git a/drivers/dma/ioat/dma_v3.c b/drivers/dma/ioat/dma_v3.c
-index f519c93..2dbf32b 100644
---- a/drivers/dma/ioat/dma_v3.c
-+++ b/drivers/dma/ioat/dma_v3.c
-@@ -256,7 +256,7 @@ static bool desc_has_ext(struct ioat_ring_ent *desc)
- * The difference from the dma_v2.c __cleanup() is that this routine
- * handles extended descriptors and dma-unmapping raid operations.
- */
--static void __cleanup(struct ioat2_dma_chan *ioat, unsigned long phys_complete)
-+static void __cleanup(struct ioat2_dma_chan *ioat, dma_addr_t phys_complete)
- {
- struct ioat_chan_common *chan = &ioat->base;
- struct ioat_ring_ent *desc;
-@@ -314,7 +314,7 @@ static void __cleanup(struct ioat2_dma_chan *ioat, unsigned long phys_complete)
- static void ioat3_cleanup(struct ioat2_dma_chan *ioat)
- {
- struct ioat_chan_common *chan = &ioat->base;
-- unsigned long phys_complete;
-+ dma_addr_t phys_complete;
-
- spin_lock_bh(&chan->cleanup_lock);
- if (ioat_cleanup_preamble(chan, &phys_complete))
-@@ -333,7 +333,7 @@ static void ioat3_cleanup_event(unsigned long data)
- static void ioat3_restart_channel(struct ioat2_dma_chan *ioat)
- {
- struct ioat_chan_common *chan = &ioat->base;
-- unsigned long phys_complete;
-+ dma_addr_t phys_complete;
-
- ioat2_quiesce(chan, 0);
- if (ioat_cleanup_preamble(chan, &phys_complete))
-@@ -348,7 +348,7 @@ static void ioat3_timer_event(unsigned long data)
- struct ioat_chan_common *chan = &ioat->base;
-
- if (test_bit(IOAT_COMPLETION_PENDING, &chan->state)) {
-- unsigned long phys_complete;
-+ dma_addr_t phys_complete;
- u64 status;
-
- status = ioat_chansts(chan);
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0056-ASoC-ak4642-fixup-mute-needs-1-step.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0056-ASoC-ak4642-fixup-mute-needs-1-step.patch
deleted file mode 100644
index c534626..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0056-ASoC-ak4642-fixup-mute-needs-1-step.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From ef89a7b5f82deaac432a4a797155b199d7d39c67 Mon Sep 17 00:00:00 2001
-From: Kuninori Morimoto <kuninori.morimoto.gx at renesas.com>
-Date: Wed, 4 Apr 2012 23:28:01 -0700
-Subject: [PATCH 56/60] ASoC: ak4642: fixup: mute needs +1 step
-
-commit 1f99e44cf059d2ed43c5a0724fa738b83800f725 upstream.
-
-ak4642 out_tlv is +12.0dB to -115.0 dB, and it supports mute.
-But current settings didn't care +1 step for mute.
-This patch adds it
-
-Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx at renesas.com>
-Signed-off-by: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- sound/soc/codecs/ak4642.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/sound/soc/codecs/ak4642.c b/sound/soc/codecs/ak4642.c
-index 12c1bde..1c4999d 100644
---- a/sound/soc/codecs/ak4642.c
-+++ b/sound/soc/codecs/ak4642.c
-@@ -144,7 +144,7 @@
- * min : 0xFE : -115.0 dB
- * mute: 0xFF
- */
--static const DECLARE_TLV_DB_SCALE(out_tlv, -11500, 50, 1);
-+static const DECLARE_TLV_DB_SCALE(out_tlv, -11550, 50, 1);
-
- static const struct snd_kcontrol_new ak4642_snd_controls[] = {
-
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0057-cred-copy_process-should-clear-child-replacement_ses.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0057-cred-copy_process-should-clear-child-replacement_ses.patch
deleted file mode 100644
index df101f8..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0057-cred-copy_process-should-clear-child-replacement_ses.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From 58063126ba5d427e0dae0e9319f5dabb5aeee22f Mon Sep 17 00:00:00 2001
-From: Oleg Nesterov <oleg at redhat.com>
-Date: Mon, 9 Apr 2012 21:03:50 +0200
-Subject: [PATCH 57/60] cred: copy_process() should clear
- child->replacement_session_keyring
-
-commit 79549c6dfda0603dba9a70a53467ce62d9335c33 upstream.
-
-keyctl_session_to_parent(task) sets ->replacement_session_keyring,
-it should be processed and cleared by key_replace_session_keyring().
-
-However, this task can fork before it notices TIF_NOTIFY_RESUME and
-the new child gets the bogus ->replacement_session_keyring copied by
-dup_task_struct(). This is obviously wrong and, if nothing else, this
-leads to put_cred(already_freed_cred).
-
-change copy_creds() to clear this member. If copy_process() fails
-before this point the wrong ->replacement_session_keyring doesn't
-matter, exit_creds() won't be called.
-
-Signed-off-by: Oleg Nesterov <oleg at redhat.com>
-Acked-by: David Howells <dhowells at redhat.com>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- kernel/cred.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/kernel/cred.c b/kernel/cred.c
-index 5791612..48c6fd3 100644
---- a/kernel/cred.c
-+++ b/kernel/cred.c
-@@ -385,6 +385,8 @@ int copy_creds(struct task_struct *p, unsigned long clone_flags)
- struct cred *new;
- int ret;
-
-+ p->replacement_session_keyring = NULL;
-+
- if (
- #ifdef CONFIG_KEYS
- !p->cred->thread_keyring &&
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0058-iommu-amd-Make-sure-IOMMU-interrupts-are-re-enabled-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0058-iommu-amd-Make-sure-IOMMU-interrupts-are-re-enabled-.patch
deleted file mode 100644
index 9b5e63a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0058-iommu-amd-Make-sure-IOMMU-interrupts-are-re-enabled-.patch
+++ /dev/null
@@ -1,76 +0,0 @@
-From 94a56d3bf83bb9f3876415b7e6eea80877e10c16 Mon Sep 17 00:00:00 2001
-From: Joerg Roedel <joerg.roedel at amd.com>
-Date: Wed, 11 Apr 2012 18:40:38 +0200
-Subject: [PATCH 58/60] iommu/amd: Make sure IOMMU interrupts are re-enabled
- on resume
-
-commit 9ddd592a191b32f2ee6c4b6ed2bd52665c3a49f5 upstream
-
-Unfortunatly the interrupts for the event log and the
-peripheral page-faults are only enabled at boot but not
-re-enabled at resume. Fix that for 3.2.
-
-Cc: stable at vger.kernel.org
-Signed-off-by: Joerg Roedel <joerg.roedel at amd.com>
----
- drivers/iommu/amd_iommu_init.c | 24 +++++++++++++++++-------
- 1 file changed, 17 insertions(+), 7 deletions(-)
-
-diff --git a/drivers/iommu/amd_iommu_init.c b/drivers/iommu/amd_iommu_init.c
-index 5c74179..20d5852 100644
---- a/drivers/iommu/amd_iommu_init.c
-+++ b/drivers/iommu/amd_iommu_init.c
-@@ -1033,8 +1033,9 @@ static int iommu_setup_msi(struct amd_iommu *iommu)
- {
- int r;
-
-- if (pci_enable_msi(iommu->dev))
-- return 1;
-+ r = pci_enable_msi(iommu->dev);
-+ if (r)
-+ return r;
-
- r = request_threaded_irq(iommu->dev->irq,
- amd_iommu_int_handler,
-@@ -1044,24 +1045,33 @@ static int iommu_setup_msi(struct amd_iommu *iommu)
-
- if (r) {
- pci_disable_msi(iommu->dev);
-- return 1;
-+ return r;
- }
-
- iommu->int_enabled = true;
-- iommu_feature_enable(iommu, CONTROL_EVT_INT_EN);
-
- return 0;
- }
-
- static int iommu_init_msi(struct amd_iommu *iommu)
- {
-+ int ret;
-+
- if (iommu->int_enabled)
-- return 0;
-+ goto enable_faults;
-
- if (pci_find_capability(iommu->dev, PCI_CAP_ID_MSI))
-- return iommu_setup_msi(iommu);
-+ ret = iommu_setup_msi(iommu);
-+ else
-+ ret = -ENODEV;
-
-- return 1;
-+ if (ret)
-+ return ret;
-+
-+enable_faults:
-+ iommu_feature_enable(iommu, CONTROL_EVT_INT_EN);
-+
-+ return 0;
- }
-
- /****************************************************************************
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0059-Bluetooth-Fix-l2cap-conn-failures-for-ssp-devices.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0059-Bluetooth-Fix-l2cap-conn-failures-for-ssp-devices.patch
deleted file mode 100644
index 673bcc9..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0059-Bluetooth-Fix-l2cap-conn-failures-for-ssp-devices.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 263961fa56c27b335c9598d7204e004893480253 Mon Sep 17 00:00:00 2001
-From: Peter Hurley <peter at hurleysoftware.com>
-Date: Mon, 2 Apr 2012 13:44:56 +0200
-Subject: [PATCH 59/60] Bluetooth: Fix l2cap conn failures for ssp devices
-
-commit 18daf1644e634bae951a6e3d4d19d89170209762 upstream
-
-Commit 330605423c fixed l2cap conn establishment for non-ssp remote
-devices by not setting HCI_CONN_ENCRYPT_PEND every time conn security
-is tested (which was always returning failure on any subsequent
-security checks).
-
-However, this broke l2cap conn establishment for ssp remote devices
-when an ACL link was already established at SDP-level security. This
-fix ensures that encryption must be pending whenever authentication
-is also pending.
-
-Signed-off-by: Peter Hurley <peter at hurleysoftware.com>
-Tested-by: Daniel Wagner <daniel.wagner at bmw-carit.de>
-Acked-by: Marcel Holtmann <marcel at holtmann.org>
-Signed-off-by: Johan Hedberg <johan.hedberg at intel.com>
----
- net/bluetooth/hci_conn.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/net/bluetooth/hci_conn.c b/net/bluetooth/hci_conn.c
-index c1c597e..98bfbd5 100644
---- a/net/bluetooth/hci_conn.c
-+++ b/net/bluetooth/hci_conn.c
-@@ -608,6 +608,10 @@ static int hci_conn_auth(struct hci_conn *conn, __u8 sec_level, __u8 auth_type)
-
- if (!test_and_set_bit(HCI_CONN_AUTH_PEND, &conn->pend)) {
- struct hci_cp_auth_requested cp;
-+
-+ /* encrypt must be pending if auth is also pending */
-+ set_bit(HCI_CONN_ENCRYPT_PEND, &conn->pend);
-+
- cp.handle = cpu_to_le16(conn->handle);
- hci_send_cmd(conn->hdev, HCI_OP_AUTH_REQUESTED,
- sizeof(cp), &cp);
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0060-Linux-3.2.15.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0060-Linux-3.2.15.patch
deleted file mode 100644
index 2127a27..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0060-Linux-3.2.15.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From f7e832912de7d193a1185b9f1440111cbd1dbc46 Mon Sep 17 00:00:00 2001
-From: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Date: Fri, 13 Apr 2012 09:11:03 -0700
-Subject: [PATCH 60/60] Linux 3.2.15
-
----
- Makefile | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Makefile b/Makefile
-index afe4c7d..6195122 100644
---- a/Makefile
-+++ b/Makefile
-@@ -1,6 +1,6 @@
- VERSION = 3
- PATCHLEVEL = 2
--SUBLEVEL = 14
-+SUBLEVEL = 15
- EXTRAVERSION =
- NAME = Saber-toothed Squirrel
-
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0001-drm-i915-mask-transcoder-select-bits-before-setting-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0001-drm-i915-mask-transcoder-select-bits-before-setting-.patch
deleted file mode 100644
index 2aae432..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0001-drm-i915-mask-transcoder-select-bits-before-setting-.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From 23bf11c621c4c3acfdf83cf7f5587a2463d039ec Mon Sep 17 00:00:00 2001
-From: Jesse Barnes <jbarnes at virtuousgeek.org>
-Date: Thu, 12 Jan 2012 14:51:17 -0800
-Subject: [PATCH 01/68] drm/i915: mask transcoder select bits before setting
- them on LVDS
-
-commit 7885d2052bd94395e337709cfba093a41f273ff1 upstream.
-
-The transcoder port may changed from mode set to mode set, so make sure
-to mask out the selection bits before setting the right ones or we'll
-get black screens when going from transcoder B to A.
-
-Tested-by: Vincent Vanackere <vincent.vanackere at gmail.com>
-Signed-off-by: Jesse Barnes <jbarnes at virtuousgeek.org>
-Reviewed-by: Keith Packard <keithp at keithp.com>
-Signed-off-by: Keith Packard <keithp at keithp.com>
-Cc: Jonathan Nieder <jrnieder at gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/gpu/drm/i915/intel_display.c | 13 ++++++++-----
- 1 file changed, 8 insertions(+), 5 deletions(-)
-
-diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
-index 9011f48..390768f 100644
---- a/drivers/gpu/drm/i915/intel_display.c
-+++ b/drivers/gpu/drm/i915/intel_display.c
-@@ -5646,12 +5646,15 @@ static int ironlake_crtc_mode_set(struct drm_crtc *crtc,
- if (is_lvds) {
- temp = I915_READ(PCH_LVDS);
- temp |= LVDS_PORT_EN | LVDS_A0A2_CLKA_POWER_UP;
-- if (HAS_PCH_CPT(dev))
-+ if (HAS_PCH_CPT(dev)) {
-+ temp &= ~PORT_TRANS_SEL_MASK;
- temp |= PORT_TRANS_SEL_CPT(pipe);
-- else if (pipe == 1)
-- temp |= LVDS_PIPEB_SELECT;
-- else
-- temp &= ~LVDS_PIPEB_SELECT;
-+ } else {
-+ if (pipe == 1)
-+ temp |= LVDS_PIPEB_SELECT;
-+ else
-+ temp &= ~LVDS_PIPEB_SELECT;
-+ }
-
- /* set the corresponsding LVDS_BORDER bit */
- temp |= dev_priv->lvds_border_bits;
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0002-drm-radeon-kms-fix-DVO-setup-on-some-r4xx-chips.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0002-drm-radeon-kms-fix-DVO-setup-on-some-r4xx-chips.patch
deleted file mode 100644
index aa7ef08..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0002-drm-radeon-kms-fix-DVO-setup-on-some-r4xx-chips.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 7943d755c7abd153158d25f50e2d35cec9bf7e73 Mon Sep 17 00:00:00 2001
-From: Alex Deucher <alexander.deucher at amd.com>
-Date: Tue, 3 Apr 2012 17:05:41 -0400
-Subject: [PATCH 02/68] drm/radeon/kms: fix DVO setup on some r4xx chips
-
-commit afceb9319f21b18ee3bc15ee9a5f92e18ef8a8c9 upstream.
-
-Some r4xx chips have the wrong frev in the
-DVOEncoderControl table. It should always be 1
-on r4xx. Fixes modesetting on DVO on r4xx chips
-with the bad frev.
-
-Reported by twied on #radeon.
-
-Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
-Signed-off-by: Dave Airlie <airlied at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/gpu/drm/radeon/atombios_encoders.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/drivers/gpu/drm/radeon/atombios_encoders.c b/drivers/gpu/drm/radeon/atombios_encoders.c
-index 0f8eb48..5351ee1 100644
---- a/drivers/gpu/drm/radeon/atombios_encoders.c
-+++ b/drivers/gpu/drm/radeon/atombios_encoders.c
-@@ -246,6 +246,10 @@ atombios_dvo_setup(struct drm_encoder *encoder, int action)
- if (!atom_parse_cmd_header(rdev->mode_info.atom_context, index, &frev, &crev))
- return;
-
-+ /* some R4xx chips have the wrong frev */
-+ if (rdev->family <= CHIP_RV410)
-+ frev = 1;
-+
- switch (frev) {
- case 1:
- switch (crev) {
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0003-drm-i915-ringbuffer-Exclude-last-2-cachlines-of-ring.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0003-drm-i915-ringbuffer-Exclude-last-2-cachlines-of-ring.patch
deleted file mode 100644
index a4d9528..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0003-drm-i915-ringbuffer-Exclude-last-2-cachlines-of-ring.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 283aa265f1ec642ce070bb3f1d3d69777b544144 Mon Sep 17 00:00:00 2001
-From: Chris Wilson <chris at chris-wilson.co.uk>
-Date: Mon, 9 Apr 2012 13:59:46 +0100
-Subject: [PATCH 03/68] drm/i915/ringbuffer: Exclude last 2 cachlines of ring
- on 845g
-
-commit 27c1cbd06a7620b354cbb363834f3bb8df4f410d upstream.
-
-The 845g shares the errata with i830 whereby executing a command
-within 2 cachelines of the end of the ringbuffer may cause a GPU hang.
-
-Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
-Signed-off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/gpu/drm/i915/intel_ringbuffer.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
-index 30a9af9..8673581 100644
---- a/drivers/gpu/drm/i915/intel_ringbuffer.c
-+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
-@@ -1052,7 +1052,7 @@ int intel_init_ring_buffer(struct drm_device *dev,
- * of the buffer.
- */
- ring->effective_size = ring->size;
-- if (IS_I830(ring->dev))
-+ if (IS_I830(ring->dev) || IS_845G(ring->dev))
- ring->effective_size -= 128;
-
- return 0;
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0004-drm-radeon-only-add-the-mm-i2c-bus-if-the-hw_i2c-mod.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0004-drm-radeon-only-add-the-mm-i2c-bus-if-the-hw_i2c-mod.patch
deleted file mode 100644
index ff612c5..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0004-drm-radeon-only-add-the-mm-i2c-bus-if-the-hw_i2c-mod.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 40d10e38c38f6f39e29b78688a4bcb368e265b5c Mon Sep 17 00:00:00 2001
-From: Alex Deucher <alexander.deucher at amd.com>
-Date: Tue, 10 Apr 2012 12:14:27 -0400
-Subject: [PATCH 04/68] drm/radeon: only add the mm i2c bus if the hw_i2c
- module param is set
-
-commit 46783150a6552f9513f08e62cfcc07125d6e502b upstream.
-
-It seems it can corrupt the monitor EDID in certain cases on certain
-boards when running sensors detect. It's rarely used anyway outside
-of AIW boards.
-
-http://lists.lm-sensors.org/pipermail/lm-sensors/2012-April/035847.html
-http://lists.freedesktop.org/archives/xorg/2011-January/052239.html
-
-Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
-Acked-by: Jean Delvare <khali at linux-fr.org>
-Signed-off-by: Dave Airlie <airlied at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/gpu/drm/radeon/radeon_i2c.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/drivers/gpu/drm/radeon/radeon_i2c.c b/drivers/gpu/drm/radeon/radeon_i2c.c
-index 7bb1b07..1441b00 100644
---- a/drivers/gpu/drm/radeon/radeon_i2c.c
-+++ b/drivers/gpu/drm/radeon/radeon_i2c.c
-@@ -890,6 +890,10 @@ struct radeon_i2c_chan *radeon_i2c_create(struct drm_device *dev,
- struct radeon_i2c_chan *i2c;
- int ret;
-
-+ /* don't add the mm_i2c bus unless hw_i2c is enabled */
-+ if (rec->mm_i2c && (radeon_hw_i2c == 0))
-+ return NULL;
-+
- i2c = kzalloc(sizeof(struct radeon_i2c_chan), GFP_KERNEL);
- if (i2c == NULL)
- return NULL;
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0005-drm-i915-properly-compute-dp-dithering-for-user-crea.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0005-drm-i915-properly-compute-dp-dithering-for-user-crea.patch
deleted file mode 100644
index d1b02ef..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0005-drm-i915-properly-compute-dp-dithering-for-user-crea.patch
+++ /dev/null
@@ -1,130 +0,0 @@
-From bfbf01f9468232ac6856b46665b6998afa45e4a6 Mon Sep 17 00:00:00 2001
-From: Daniel Vetter <daniel.vetter at ffwll.ch>
-Date: Tue, 10 Apr 2012 10:42:36 +0200
-Subject: [PATCH 05/68] drm/i915: properly compute dp dithering for
- user-created modes
-
-commit c4867936474183332db4c19791a65fdad6474fd5 upstream.
-
-We've only computed whether we need to fall back to 6bpc due to dp
-link bandwidth constrains in mode_valid, but not mode_fixup. Under
-various circumstances X likes to create new modes which then lack
-proper 6bpc flags (if required), resulting in mode_fixup failures and
-ultimately black screens.
-
-Chris Wilson pointed out that we still get things wrong for bpp > 24,
-but that should be fixed in another patch (and it'll be easier because
-this patch consolidates the logic).
-
-The likely culprit for this regression is
-
-commit 3d794f87238f74d80e78a7611c7fbde8a54c85c2
-Author: Keith Packard <keithp at keithp.com>
-Date: Wed Jan 25 08:16:25 2012 -0800
-
- drm/i915: Force explicit bpp selection for intel_dp_link_required
-
-v2: Fix indentation and tune down the too bold claim that this should
-fix the world. Both noticed by Chris Wilson.
-
-v3: Try to really git add things.
-
-Reported-and-tested-by: Brice Goglin <Brice.Goglin at ens-lyon.org>
-Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=48170
-Cc: stable at kernel.org
-Reviewed-by: Adam Jackson <ajax at redhat.com>
-Signed-Off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/gpu/drm/i915/intel_dp.c | 49 ++++++++++++++++++++++++++++-----------
- 1 file changed, 35 insertions(+), 14 deletions(-)
-
-diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
-index 94f860c..12eb789 100644
---- a/drivers/gpu/drm/i915/intel_dp.c
-+++ b/drivers/gpu/drm/i915/intel_dp.c
-@@ -219,14 +219,38 @@ intel_dp_max_data_rate(int max_link_clock, int max_lanes)
- return (max_link_clock * max_lanes * 8) / 10;
- }
-
-+static bool
-+intel_dp_adjust_dithering(struct intel_dp *intel_dp,
-+ struct drm_display_mode *mode,
-+ struct drm_display_mode *adjusted_mode)
-+{
-+ int max_link_clock = intel_dp_link_clock(intel_dp_max_link_bw(intel_dp));
-+ int max_lanes = intel_dp_max_lane_count(intel_dp);
-+ int max_rate, mode_rate;
-+
-+ mode_rate = intel_dp_link_required(mode->clock, 24);
-+ max_rate = intel_dp_max_data_rate(max_link_clock, max_lanes);
-+
-+ if (mode_rate > max_rate) {
-+ mode_rate = intel_dp_link_required(mode->clock, 18);
-+ if (mode_rate > max_rate)
-+ return false;
-+
-+ if (adjusted_mode)
-+ adjusted_mode->private_flags
-+ |= INTEL_MODE_DP_FORCE_6BPC;
-+
-+ return true;
-+ }
-+
-+ return true;
-+}
-+
- static int
- intel_dp_mode_valid(struct drm_connector *connector,
- struct drm_display_mode *mode)
- {
- struct intel_dp *intel_dp = intel_attached_dp(connector);
-- int max_link_clock = intel_dp_link_clock(intel_dp_max_link_bw(intel_dp));
-- int max_lanes = intel_dp_max_lane_count(intel_dp);
-- int max_rate, mode_rate;
-
- if (is_edp(intel_dp) && intel_dp->panel_fixed_mode) {
- if (mode->hdisplay > intel_dp->panel_fixed_mode->hdisplay)
-@@ -236,16 +260,8 @@ intel_dp_mode_valid(struct drm_connector *connector,
- return MODE_PANEL;
- }
-
-- mode_rate = intel_dp_link_required(mode->clock, 24);
-- max_rate = intel_dp_max_data_rate(max_link_clock, max_lanes);
--
-- if (mode_rate > max_rate) {
-- mode_rate = intel_dp_link_required(mode->clock, 18);
-- if (mode_rate > max_rate)
-- return MODE_CLOCK_HIGH;
-- else
-- mode->private_flags |= INTEL_MODE_DP_FORCE_6BPC;
-- }
-+ if (!intel_dp_adjust_dithering(intel_dp, mode, NULL))
-+ return MODE_CLOCK_HIGH;
-
- if (mode->clock < 10000)
- return MODE_CLOCK_LOW;
-@@ -673,7 +689,7 @@ intel_dp_mode_fixup(struct drm_encoder *encoder, struct drm_display_mode *mode,
- int lane_count, clock;
- int max_lane_count = intel_dp_max_lane_count(intel_dp);
- int max_clock = intel_dp_max_link_bw(intel_dp) == DP_LINK_BW_2_7 ? 1 : 0;
-- int bpp = mode->private_flags & INTEL_MODE_DP_FORCE_6BPC ? 18 : 24;
-+ int bpp;
- static int bws[2] = { DP_LINK_BW_1_62, DP_LINK_BW_2_7 };
-
- if (is_edp(intel_dp) && intel_dp->panel_fixed_mode) {
-@@ -687,6 +703,11 @@ intel_dp_mode_fixup(struct drm_encoder *encoder, struct drm_display_mode *mode,
- mode->clock = intel_dp->panel_fixed_mode->clock;
- }
-
-+ if (!intel_dp_adjust_dithering(intel_dp, mode, adjusted_mode))
-+ return false;
-+
-+ bpp = adjusted_mode->private_flags & INTEL_MODE_DP_FORCE_6BPC ? 18 : 24;
-+
- for (lane_count = 1; lane_count <= max_lane_count; lane_count <<= 1) {
- for (clock = 0; clock <= max_clock; clock++) {
- int link_avail = intel_dp_max_data_rate(intel_dp_link_clock(bws[clock]), lane_count);
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0006-drm-i915-make-rc6-module-parameter-read-only.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0006-drm-i915-make-rc6-module-parameter-read-only.patch
deleted file mode 100644
index 12db79c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0006-drm-i915-make-rc6-module-parameter-read-only.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From c4e630199ffb5b9fd2b25dbb222316f092915a14 Mon Sep 17 00:00:00 2001
-From: Jesse Barnes <jbarnes at virtuousgeek.org>
-Date: Wed, 11 Apr 2012 09:39:02 -0700
-Subject: [PATCH 06/68] drm/i915: make rc6 module parameter read-only
-
-commit f57f9c167af7cb3fd315e6a8ebe194a8aea0832a upstream.
-
-People have been getting confused and thinking this is a runtime control.
-
-Signed-off-by: Jesse Barnes <jbarnes at virtuousgeek.org>
-Signed-off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/gpu/drm/i915/i915_drv.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
-index e52b705..d0f8830 100644
---- a/drivers/gpu/drm/i915/i915_drv.c
-+++ b/drivers/gpu/drm/i915/i915_drv.c
-@@ -64,7 +64,7 @@ MODULE_PARM_DESC(semaphores,
- "Use semaphores for inter-ring sync (default: -1 (use per-chip defaults))");
-
- int i915_enable_rc6 __read_mostly = -1;
--module_param_named(i915_enable_rc6, i915_enable_rc6, int, 0600);
-+module_param_named(i915_enable_rc6, i915_enable_rc6, int, 0400);
- MODULE_PARM_DESC(i915_enable_rc6,
- "Enable power-saving render C-state 6 (default: -1 (use per-chip default)");
-
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0007-rtlwifi-Add-missing-DMA-buffer-unmapping-for-PCI-dri.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0007-rtlwifi-Add-missing-DMA-buffer-unmapping-for-PCI-dri.patch
deleted file mode 100644
index 2c7668c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0007-rtlwifi-Add-missing-DMA-buffer-unmapping-for-PCI-dri.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From 98861c7257e3ce6dd351c07abed856e73add7858 Mon Sep 17 00:00:00 2001
-From: Larry Finger <Larry.Finger at lwfinger.net>
-Date: Mon, 26 Mar 2012 10:48:20 -0500
-Subject: [PATCH 07/68] rtlwifi: Add missing DMA buffer unmapping for PCI
- drivers
-
-commit 673f7786e205c87b5d978c62827b9a66d097bebb upstream.
-
-In https://bugzilla.kernel.org/show_bug.cgi?id=42976, a system with driver
-rtl8192se used as an AP suffers from "Out of SW-IOMMU space" errors. These
-are caused by the DMA buffers used for beacons never being unmapped.
-
-This bug was also reported at
-https://bugs.launchpad.net/ubuntu/+source/linux/+bug/961618
-
-Reported-and-Tested-by: Da Xue <da at lessconfused.com>
-Signed-off-by: Larry Finger <Larry.Finger at lwfinger.net>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/net/wireless/rtlwifi/pci.c | 7 ++++++-
- 1 file changed, 6 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/net/wireless/rtlwifi/pci.c b/drivers/net/wireless/rtlwifi/pci.c
-index 9afcad3..d44d398 100644
---- a/drivers/net/wireless/rtlwifi/pci.c
-+++ b/drivers/net/wireless/rtlwifi/pci.c
-@@ -926,8 +926,13 @@ static void _rtl_pci_prepare_bcn_tasklet(struct ieee80211_hw *hw)
- memset(&tcb_desc, 0, sizeof(struct rtl_tcb_desc));
- ring = &rtlpci->tx_ring[BEACON_QUEUE];
- pskb = __skb_dequeue(&ring->queue);
-- if (pskb)
-+ if (pskb) {
-+ struct rtl_tx_desc *entry = &ring->desc[ring->idx];
-+ pci_unmap_single(rtlpci->pdev, rtlpriv->cfg->ops->get_desc(
-+ (u8 *) entry, true, HW_DESC_TXBUFF_ADDR),
-+ pskb->len, PCI_DMA_TODEVICE);
- kfree_skb(pskb);
-+ }
-
- /*NB: the beacon data buffer must be 32-bit aligned. */
- pskb = ieee80211_beacon_get(hw, mac->vif);
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0008-ARM-7379-1-DT-fix-atags_to_fdt-second-call-site.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0008-ARM-7379-1-DT-fix-atags_to_fdt-second-call-site.patch
deleted file mode 100644
index 77b44ae..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0008-ARM-7379-1-DT-fix-atags_to_fdt-second-call-site.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 2c1b118701f57e31e048458bae612029472c768d Mon Sep 17 00:00:00 2001
-From: Marc Zyngier <Marc.Zyngier at arm.com>
-Date: Wed, 11 Apr 2012 14:52:55 +0100
-Subject: [PATCH 08/68] ARM: 7379/1: DT: fix atags_to_fdt() second call site
-
-commit 9c5fd9e85f574d9d0361b2b878f55732290afe5b upstream.
-
-atags_to_fdt() returns 1 when it fails to find a valid FDT signature.
-The CONFIG_ARM_ATAG_DTB_COMPAT code is supposed to retry with another
-location, but only does so when the initial call doesn't fail.
-
-Fix this by using the correct condition in the assembly code.
-
-Acked-by: Nicolas Pitre <nicolas.pitre at linaro.org>
-Signed-off-by: Marc Zyngier <marc.zyngier at arm.com>
-Signed-off-by: Russell King <rmk+kernel at arm.linux.org.uk>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/arm/boot/compressed/head.S | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S
-index c2effc9..9c18ebd 100644
---- a/arch/arm/boot/compressed/head.S
-+++ b/arch/arm/boot/compressed/head.S
-@@ -273,7 +273,7 @@ restart: adr r0, LC0
- add r0, r0, #0x100
- mov r1, r6
- sub r2, sp, r6
-- blne atags_to_fdt
-+ bleq atags_to_fdt
-
- ldmfd sp!, {r0-r3, ip, lr}
- sub sp, sp, #0x10000
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0009-ARM-7384-1-ThumbEE-Disable-userspace-TEEHBR-access-f.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0009-ARM-7384-1-ThumbEE-Disable-userspace-TEEHBR-access-f.patch
deleted file mode 100644
index d4c1734..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0009-ARM-7384-1-ThumbEE-Disable-userspace-TEEHBR-access-f.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From a950b5b3f82c7cfd682ccc62b65b269268772fff Mon Sep 17 00:00:00 2001
-From: Jonathan Austin <Jonathan.Austin at arm.com>
-Date: Thu, 12 Apr 2012 17:45:25 +0100
-Subject: [PATCH 09/68] ARM: 7384/1: ThumbEE: Disable userspace TEEHBR access
- for !CONFIG_ARM_THUMBEE
-
-commit 078c04545ba56da21567728a909a496df5ff730d upstream.
-
-Currently when ThumbEE is not enabled (!CONFIG_ARM_THUMBEE) the ThumbEE
-register states are not saved/restored at context switch. The default state
-of the ThumbEE Ctrl register (TEECR) allows userspace accesses to the
-ThumbEE Base Handler register (TEEHBR). This can cause unexpected behaviour
-when people use ThumbEE on !CONFIG_ARM_THUMBEE kernels, as well as allowing
-covert communication - eg between userspace tasks running inside chroot
-jails.
-
-This patch sets up TEECR in order to prevent user-space access to TEEHBR
-when !CONFIG_ARM_THUMBEE. In this case, tasks are sent SIGILL if they try to
-access TEEHBR.
-
-Reviewed-by: Will Deacon <will.deacon at arm.com>
-Signed-off-by: Jonathan Austin <jonathan.austin at arm.com>
-Signed-off-by: Russell King <rmk+kernel at arm.linux.org.uk>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/arm/mm/proc-v7.S | 12 ++++++++++++
- 1 file changed, 12 insertions(+)
-
-diff --git a/arch/arm/mm/proc-v7.S b/arch/arm/mm/proc-v7.S
-index 82ef81d..785365e 100644
---- a/arch/arm/mm/proc-v7.S
-+++ b/arch/arm/mm/proc-v7.S
-@@ -382,6 +382,18 @@ __v7_setup:
- mcr p15, 0, r5, c10, c2, 0 @ write PRRR
- mcr p15, 0, r6, c10, c2, 1 @ write NMRR
- #endif
-+#ifndef CONFIG_ARM_THUMBEE
-+ mrc p15, 0, r0, c0, c1, 0 @ read ID_PFR0 for ThumbEE
-+ and r0, r0, #(0xf << 12) @ ThumbEE enabled field
-+ teq r0, #(1 << 12) @ check if ThumbEE is present
-+ bne 1f
-+ mov r5, #0
-+ mcr p14, 6, r5, c1, c0, 0 @ Initialize TEEHBR to 0
-+ mrc p14, 6, r0, c0, c0, 0 @ load TEECR
-+ orr r0, r0, #1 @ set the 1st bit in order to
-+ mcr p14, 6, r0, c0, c0, 0 @ stop userspace TEEHBR access
-+1:
-+#endif
- adr r5, v7_crval
- ldmia r5, {r5, r6}
- #ifdef CONFIG_CPU_ENDIAN_BE8
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0010-md-bitmap-prevent-bitmap_daemon_work-running-while-i.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0010-md-bitmap-prevent-bitmap_daemon_work-running-while-i.patch
deleted file mode 100644
index 4970e44..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0010-md-bitmap-prevent-bitmap_daemon_work-running-while-i.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From b694e091929929c8b56fcb1fbf28cba81dc2fe04 Mon Sep 17 00:00:00 2001
-From: NeilBrown <neilb at suse.de>
-Date: Thu, 12 Apr 2012 16:05:06 +1000
-Subject: [PATCH 10/68] md/bitmap: prevent bitmap_daemon_work running while
- initialising bitmap
-
-commit afbaa90b80b1ec66e5137cc3824746bfdf559b18 upstream.
-
-If a bitmap is added while the array is active, it is possible
-for bitmap_daemon_work to run while the bitmap is being
-initialised.
-This is particularly a problem if bitmap_daemon_work sees
-bitmap->filemap as non-NULL before it has been filled in properly.
-So hold bitmap_info.mutex while filling in ->filemap
-to prevent problems.
-
-This patch is suitable for any -stable kernel, though it might not
-apply cleanly before about 3.1.
-
-Signed-off-by: NeilBrown <neilb at suse.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/md/bitmap.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/drivers/md/bitmap.c b/drivers/md/bitmap.c
-index 2a8722b..62a8e68 100644
---- a/drivers/md/bitmap.c
-+++ b/drivers/md/bitmap.c
-@@ -1819,7 +1819,9 @@ int bitmap_load(struct mddev *mddev)
- * re-add of a missing device */
- start = mddev->recovery_cp;
-
-+ mutex_lock(&mddev->bitmap_info.mutex);
- err = bitmap_init_from_disk(bitmap, start);
-+ mutex_unlock(&mddev->bitmap_info.mutex);
-
- if (err)
- goto out;
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0011-Bluetooth-uart-ldisc-Fix-memory-leak.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0011-Bluetooth-uart-ldisc-Fix-memory-leak.patch
deleted file mode 100644
index 7efdc23..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0011-Bluetooth-uart-ldisc-Fix-memory-leak.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From b69f7a1d24573678da4e44e9f2f7028640a6d592 Mon Sep 17 00:00:00 2001
-From: Johan Hovold <jhovold at gmail.com>
-Date: Wed, 11 Apr 2012 11:24:35 +0200
-Subject: [PATCH 11/68] Bluetooth: uart-ldisc: Fix memory leak
-
-This is a partial, self-contained, minimal backport of commit
-797fe796c4335b35d95d5326824513befdb5d1e9 upstream which fixes the memory
-leak:
-
-Bluetooth: uart-ldisc: Fix memory leak and remove destruct cb
-
-We currently leak the hci_uart object if HCI_UART_PROTO_SET is never set
-because the hci-destruct callback will then never be called. This fix
-removes the hci-destruct callback and frees the driver internal private
-hci_uart object directly on tty-close. We call hci_unregister_dev() here
-so the hci-core will never call our callbacks again (except destruct).
-Therefore, we can safely free the driver internal data right away and
-set the destruct callback to NULL.
-
-Signed-off-by: David Herrmann <dh.herrmann at googlemail.com>
-Acked-by: Marcel Holtmann <marcel at holtmann.org>
-Signed-off-by: Johan Hedberg <johan.hedberg at intel.com>
-Signed-off-by: Johan Hovold <jhovold at gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/bluetooth/hci_ldisc.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/bluetooth/hci_ldisc.c b/drivers/bluetooth/hci_ldisc.c
-index 48ad2a7..36dafef 100644
---- a/drivers/bluetooth/hci_ldisc.c
-+++ b/drivers/bluetooth/hci_ldisc.c
-@@ -237,7 +237,6 @@ static void hci_uart_destruct(struct hci_dev *hdev)
- return;
-
- BT_DBG("%s", hdev->name);
-- kfree(hdev->driver_data);
- }
-
- /* ------ LDISC part ------ */
-@@ -316,6 +315,7 @@ static void hci_uart_tty_close(struct tty_struct *tty)
- hci_free_dev(hdev);
- }
- }
-+ kfree(hu);
- }
- }
-
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0012-Bluetooth-hci_ldisc-fix-NULL-pointer-dereference-on-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0012-Bluetooth-hci_ldisc-fix-NULL-pointer-dereference-on-.patch
deleted file mode 100644
index bf4047a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0012-Bluetooth-hci_ldisc-fix-NULL-pointer-dereference-on-.patch
+++ /dev/null
@@ -1,107 +0,0 @@
-From 37a8e3758523b47f282d19502ea361f1d5c2a033 Mon Sep 17 00:00:00 2001
-From: Johan Hovold <jhovold at gmail.com>
-Date: Thu, 15 Mar 2012 14:48:40 +0100
-Subject: [PATCH 12/68] Bluetooth: hci_ldisc: fix NULL-pointer dereference on
- tty_close
-
-commit 33b69bf80a3704d45341928e4ff68b6ebd470686 upstream.
-
-Do not close protocol driver until device has been unregistered.
-
-This fixes a race between tty_close and hci_dev_open which can result in
-a NULL-pointer dereference.
-
-The line discipline closes the protocol driver while we may still have
-hci_dev_open sleeping on the req_lock mutex resulting in a NULL-pointer
-dereference when lock is acquired and hci_init_req called.
-
-Bug is 100% reproducible using hciattach and a disconnected serial port:
-
-0. # hciattach -n ttyO1 any noflow
-
-1. hci_dev_open called from hci_power_on grabs req lock
-2. hci_init_req executes but device fails to initialise (times out
- eventually)
-3. hci_dev_open is called from hci_sock_ioctl and sleeps on req lock
-4. hci_uart_tty_close detaches protocol driver and cancels init req
-5. hci_dev_open (1) releases req lock
-6. hci_dev_open (3) grabs req lock, calls hci_init_req, which triggers oops
- when request is prepared in hci_uart_send_frame
-
-[ 137.201263] Unable to handle kernel NULL pointer dereference at virtual address 00000028
-[ 137.209838] pgd = c0004000
-[ 137.212677] [00000028] *pgd=00000000
-[ 137.216430] Internal error: Oops: 17 [#1]
-[ 137.220642] Modules linked in:
-[ 137.223846] CPU: 0 Tainted: G W (3.3.0-rc6-dirty #406)
-[ 137.230529] PC is at __lock_acquire+0x5c/0x1ab0
-[ 137.235290] LR is at lock_acquire+0x9c/0x128
-[ 137.239776] pc : [<c0071490>] lr : [<c00733f8>] psr: 20000093
-[ 137.239776] sp : cf869dd8 ip : c0529554 fp : c051c730
-[ 137.251800] r10: 00000000 r9 : cf8673c0 r8 : 00000080
-[ 137.257293] r7 : 00000028 r6 : 00000002 r5 : 00000000 r4 : c053fd70
-[ 137.264129] r3 : 00000000 r2 : 00000000 r1 : 00000000 r0 : 00000001
-[ 137.270965] Flags: nzCv IRQs off FIQs on Mode SVC_32 ISA ARM Segment kernel
-[ 137.278717] Control: 10c5387d Table: 8f0f4019 DAC: 00000015
-[ 137.284729] Process kworker/u:1 (pid: 7, stack limit = 0xcf8682e8)
-[ 137.291229] Stack: (0xcf869dd8 to 0xcf86a000)
-[ 137.295776] 9dc0: c0529554 00000000
-[ 137.304351] 9de0: cf8673c0 cf868000 d03ea1ef cf868000 000001ef 00000470 00000000 00000002
-[ 137.312927] 9e00: cf8673c0 00000001 c051c730 c00716ec 0000000c 00000440 c0529554 00000001
-[ 137.321533] 9e20: c051c730 cf868000 d03ea1f3 00000000 c053b978 00000000 00000028 cf868000
-[ 137.330078] 9e40: 00000000 00000000 00000002 00000000 00000000 c00733f8 00000002 00000080
-[ 137.338684] 9e60: 00000000 c02a1d50 00000000 00000001 60000013 c0969a1c 60000093 c053b96c
-[ 137.347259] 9e80: 00000002 00000018 20000013 c02a1d50 cf0ac000 00000000 00000002 cf868000
-[ 137.355834] 9ea0: 00000089 c0374130 00000002 00000000 c02a1d50 cf0ac000 0000000c cf0fc540
-[ 137.364410] 9ec0: 00000018 c02a1d50 cf0fc540 00000000 cf0fc540 c0282238 c028220c cf178d80
-[ 137.372985] 9ee0: 127525d8 c02821cc 9a1fa451 c032727c 9a1fa451 127525d8 cf0fc540 cf0ac4ec
-[ 137.381561] 9f00: cf0ac000 cf0fc540 cf0ac584 c03285f4 c0328580 cf0ac4ec cf85c740 c05510cc
-[ 137.390136] 9f20: ce825400 c004c914 00000002 00000000 c004c884 ce8254f5 cf869f48 00000000
-[ 137.398712] 9f40: c0328580 ce825415 c0a7f914 c061af64 00000000 c048cf3c cf8673c0 cf85c740
-[ 137.407287] 9f60: c05510cc c051a66c c05510ec c05510c4 cf85c750 cf868000 00000089 c004d6ac
-[ 137.415863] 9f80: 00000000 c0073d14 00000001 cf853ed8 cf85c740 c004d558 00000013 00000000
-[ 137.424438] 9fa0: 00000000 00000000 00000000 c00516b0 00000000 00000000 cf85c740 00000000
-[ 137.433013] 9fc0: 00000001 dead4ead ffffffff ffffffff c0551674 00000000 00000000 c0450aa4
-[ 137.441589] 9fe0: cf869fe0 cf869fe0 cf853ed8 c005162c c0013b30 c0013b30 00ffff00 00ffff00
-[ 137.450164] [<c0071490>] (__lock_acquire+0x5c/0x1ab0) from [<c00733f8>] (lock_acquire+0x9c/0x128)
-[ 137.459503] [<c00733f8>] (lock_acquire+0x9c/0x128) from [<c0374130>] (_raw_spin_lock_irqsave+0x44/0x58)
-[ 137.469360] [<c0374130>] (_raw_spin_lock_irqsave+0x44/0x58) from [<c02a1d50>] (skb_queue_tail+0x18/0x48)
-[ 137.479339] [<c02a1d50>] (skb_queue_tail+0x18/0x48) from [<c0282238>] (h4_enqueue+0x2c/0x34)
-[ 137.488189] [<c0282238>] (h4_enqueue+0x2c/0x34) from [<c02821cc>] (hci_uart_send_frame+0x34/0x68)
-[ 137.497497] [<c02821cc>] (hci_uart_send_frame+0x34/0x68) from [<c032727c>] (hci_send_frame+0x50/0x88)
-[ 137.507171] [<c032727c>] (hci_send_frame+0x50/0x88) from [<c03285f4>] (hci_cmd_work+0x74/0xd4)
-[ 137.516204] [<c03285f4>] (hci_cmd_work+0x74/0xd4) from [<c004c914>] (process_one_work+0x1a0/0x4ec)
-[ 137.525604] [<c004c914>] (process_one_work+0x1a0/0x4ec) from [<c004d6ac>] (worker_thread+0x154/0x344)
-[ 137.535278] [<c004d6ac>] (worker_thread+0x154/0x344) from [<c00516b0>] (kthread+0x84/0x90)
-[ 137.543975] [<c00516b0>] (kthread+0x84/0x90) from [<c0013b30>] (kernel_thread_exit+0x0/0x8)
-[ 137.552734] Code: e59f4e5c e5941000 e3510000 0a000031 (e5971000)
-[ 137.559234] ---[ end trace 1b75b31a2719ed1e ]---
-
-Signed-off-by: Johan Hovold <jhovold at gmail.com>
-Acked-by: Marcel Holtmann <marcel at holtmann.org>
-Signed-off-by: Johan Hedberg <johan.hedberg at intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/bluetooth/hci_ldisc.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/bluetooth/hci_ldisc.c b/drivers/bluetooth/hci_ldisc.c
-index 36dafef..8f3d6db 100644
---- a/drivers/bluetooth/hci_ldisc.c
-+++ b/drivers/bluetooth/hci_ldisc.c
-@@ -309,11 +309,11 @@ static void hci_uart_tty_close(struct tty_struct *tty)
- hci_uart_close(hdev);
-
- if (test_and_clear_bit(HCI_UART_PROTO_SET, &hu->flags)) {
-- hu->proto->close(hu);
- if (hdev) {
- hci_unregister_dev(hdev);
- hci_free_dev(hdev);
- }
-+ hu->proto->close(hu);
- }
- kfree(hu);
- }
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0013-ext4-address-scalability-issue-by-removing-extent-ca.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0013-ext4-address-scalability-issue-by-removing-extent-ca.patch
deleted file mode 100644
index cbf03c5..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0013-ext4-address-scalability-issue-by-removing-extent-ca.patch
+++ /dev/null
@@ -1,93 +0,0 @@
-From bc445f05f44d9e21294eaa8686837b588a27a66a Mon Sep 17 00:00:00 2001
-From: Theodore Ts'o <tytso at mit.edu>
-Date: Mon, 16 Apr 2012 12:16:20 -0400
-Subject: [PATCH 13/68] ext4: address scalability issue by removing extent
- cache statistics
-
-commit 9cd70b347e9761ea2d2ac3d758c529a48a8193e6 upstream.
-
-Andi Kleen and Tim Chen have reported that under certain circumstances
-the extent cache statistics are causing scalability problems due to
-cache line bounces.
-
-Signed-off-by: "Theodore Ts'o" <tytso at mit.edu>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/ext4/ext4.h | 3 ---
- fs/ext4/extents.c | 4 ----
- fs/ext4/super.c | 16 ----------------
- 3 files changed, 23 deletions(-)
-
-diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h
-index dbae4d9..7b1cd5c 100644
---- a/fs/ext4/ext4.h
-+++ b/fs/ext4/ext4.h
-@@ -1185,9 +1185,6 @@ struct ext4_sb_info {
- unsigned long s_ext_blocks;
- unsigned long s_ext_extents;
- #endif
-- /* ext4 extent cache stats */
-- unsigned long extent_cache_hits;
-- unsigned long extent_cache_misses;
-
- /* for buddy allocator */
- struct ext4_group_info ***s_group_info;
-diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c
-index 7507036..c2a2012 100644
---- a/fs/ext4/extents.c
-+++ b/fs/ext4/extents.c
-@@ -2052,10 +2052,6 @@ static int ext4_ext_check_cache(struct inode *inode, ext4_lblk_t block,
- ret = 1;
- }
- errout:
-- if (!ret)
-- sbi->extent_cache_misses++;
-- else
-- sbi->extent_cache_hits++;
- trace_ext4_ext_in_cache(inode, block, ret);
- spin_unlock(&EXT4_I(inode)->i_block_reservation_lock);
- return ret;
-diff --git a/fs/ext4/super.c b/fs/ext4/super.c
-index 9281dbe..961059b 100644
---- a/fs/ext4/super.c
-+++ b/fs/ext4/super.c
-@@ -2504,18 +2504,6 @@ static ssize_t lifetime_write_kbytes_show(struct ext4_attr *a,
- EXT4_SB(sb)->s_sectors_written_start) >> 1)));
- }
-
--static ssize_t extent_cache_hits_show(struct ext4_attr *a,
-- struct ext4_sb_info *sbi, char *buf)
--{
-- return snprintf(buf, PAGE_SIZE, "%lu\n", sbi->extent_cache_hits);
--}
--
--static ssize_t extent_cache_misses_show(struct ext4_attr *a,
-- struct ext4_sb_info *sbi, char *buf)
--{
-- return snprintf(buf, PAGE_SIZE, "%lu\n", sbi->extent_cache_misses);
--}
--
- static ssize_t inode_readahead_blks_store(struct ext4_attr *a,
- struct ext4_sb_info *sbi,
- const char *buf, size_t count)
-@@ -2573,8 +2561,6 @@ static struct ext4_attr ext4_attr_##name = __ATTR(name, mode, show, store)
- EXT4_RO_ATTR(delayed_allocation_blocks);
- EXT4_RO_ATTR(session_write_kbytes);
- EXT4_RO_ATTR(lifetime_write_kbytes);
--EXT4_RO_ATTR(extent_cache_hits);
--EXT4_RO_ATTR(extent_cache_misses);
- EXT4_ATTR_OFFSET(inode_readahead_blks, 0644, sbi_ui_show,
- inode_readahead_blks_store, s_inode_readahead_blks);
- EXT4_RW_ATTR_SBI_UI(inode_goal, s_inode_goal);
-@@ -2590,8 +2576,6 @@ static struct attribute *ext4_attrs[] = {
- ATTR_LIST(delayed_allocation_blocks),
- ATTR_LIST(session_write_kbytes),
- ATTR_LIST(lifetime_write_kbytes),
-- ATTR_LIST(extent_cache_hits),
-- ATTR_LIST(extent_cache_misses),
- ATTR_LIST(inode_readahead_blks),
- ATTR_LIST(inode_goal),
- ATTR_LIST(mb_stats),
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0014-ia64-fix-futex_atomic_cmpxchg_inatomic.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0014-ia64-fix-futex_atomic_cmpxchg_inatomic.patch
deleted file mode 100644
index 9175698..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0014-ia64-fix-futex_atomic_cmpxchg_inatomic.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From 75d50bfacb4322a1259307cfa50aa0f87a02f160 Mon Sep 17 00:00:00 2001
-From: "Luck, Tony" <tony.luck at intel.com>
-Date: Mon, 16 Apr 2012 16:28:01 -0700
-Subject: [PATCH 14/68] ia64: fix futex_atomic_cmpxchg_inatomic()
-
-commit c76f39bddb84f93f70a5520d9253ec0317bec216 upstream.
-
-Michel Lespinasse cleaned up the futex calling conventions in commit
-37a9d912b24f ("futex: Sanitize cmpxchg_futex_value_locked API").
-
-But the ia64 implementation was subtly broken. Gcc does not know that
-register "r8" will be updated by the fault handler if the cmpxchg
-instruction takes an exception. So it feels safe in letting the
-initialization of r8 slide to after the cmpxchg. Result: we always
-return 0 whether the user address faulted or not.
-
-Fix by moving the initialization of r8 into the __asm__ code so gcc
-won't move it.
-
-Reported-by: <emeric.maschino at gmail.com>
-Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=42757
-Tested-by: <emeric.maschino at gmail.com>
-Acked-by: Michel Lespinasse <walken at google.com>
-Signed-off-by: Tony Luck <tony.luck at intel.com>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/ia64/include/asm/futex.h | 9 +++++----
- 1 file changed, 5 insertions(+), 4 deletions(-)
-
-diff --git a/arch/ia64/include/asm/futex.h b/arch/ia64/include/asm/futex.h
-index 8428525..21ab376 100644
---- a/arch/ia64/include/asm/futex.h
-+++ b/arch/ia64/include/asm/futex.h
-@@ -107,15 +107,16 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr,
- return -EFAULT;
-
- {
-- register unsigned long r8 __asm ("r8") = 0;
-+ register unsigned long r8 __asm ("r8");
- unsigned long prev;
- __asm__ __volatile__(
- " mf;; \n"
-- " mov ar.ccv=%3;; \n"
-- "[1:] cmpxchg4.acq %0=[%1],%2,ar.ccv \n"
-+ " mov %0=r0 \n"
-+ " mov ar.ccv=%4;; \n"
-+ "[1:] cmpxchg4.acq %1=[%2],%3,ar.ccv \n"
- " .xdata4 \"__ex_table\", 1b-., 2f-. \n"
- "[2:]"
-- : "=r" (prev)
-+ : "=r" (r8), "=r" (prev)
- : "r" (uaddr), "r" (newval),
- "rO" ((long) (unsigned) oldval)
- : "memory");
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0015-drivers-rtc-rtc-pl031.c-enable-clock-on-all-ST-varia.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0015-drivers-rtc-rtc-pl031.c-enable-clock-on-all-ST-varia.patch
deleted file mode 100644
index a861101..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0015-drivers-rtc-rtc-pl031.c-enable-clock-on-all-ST-varia.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 4886a34fc21445895de3bc2584c46792d1a11bec Mon Sep 17 00:00:00 2001
-From: Linus Walleij <linus.walleij at linaro.org>
-Date: Thu, 12 Apr 2012 12:49:16 -0700
-Subject: [PATCH 15/68] drivers/rtc/rtc-pl031.c: enable clock on all ST
- variants
-
-commit 2f3972168353d355854d6381f1f360ce83b723e5 upstream.
-
-The ST variants of the PL031 all require bit 26 in the control register
-to be set before they work properly. Discovered this when testing on
-the Nomadik board where it would suprisingly just stand still.
-
-Signed-off-by: Linus Walleij <linus.walleij at linaro.org>
-Cc: Mian Yousaf Kaukab <mian.yousaf.kaukab at stericsson.com>
-Cc: Alessandro Rubini <rubini at unipv.it>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/rtc/rtc-pl031.c | 3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
-
-diff --git a/drivers/rtc/rtc-pl031.c b/drivers/rtc/rtc-pl031.c
-index ff1b84b..e86edfc 100644
---- a/drivers/rtc/rtc-pl031.c
-+++ b/drivers/rtc/rtc-pl031.c
-@@ -339,8 +339,7 @@ static int pl031_probe(struct amba_device *adev, const struct amba_id *id)
- dev_dbg(&adev->dev, "revision = 0x%01x\n", ldata->hw_revision);
-
- /* Enable the clockwatch on ST Variants */
-- if ((ldata->hw_designer == AMBA_VENDOR_ST) &&
-- (ldata->hw_revision > 1))
-+ if (ldata->hw_designer == AMBA_VENDOR_ST)
- writel(readl(ldata->base + RTC_CR) | RTC_CR_CWEN,
- ldata->base + RTC_CR);
-
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0016-hugetlb-fix-race-condition-in-hugetlb_fault.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0016-hugetlb-fix-race-condition-in-hugetlb_fault.patch
deleted file mode 100644
index 2b5f8b1..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0016-hugetlb-fix-race-condition-in-hugetlb_fault.patch
+++ /dev/null
@@ -1,89 +0,0 @@
-From cabab70ca89f34dacc965ea927f0f67706fcc22b Mon Sep 17 00:00:00 2001
-From: Chris Metcalf <cmetcalf at tilera.com>
-Date: Thu, 12 Apr 2012 12:49:15 -0700
-Subject: [PATCH 16/68] hugetlb: fix race condition in hugetlb_fault()
-
-commit 66aebce747eaf9bc456bf1f1b217d8db843031d0 upstream.
-
-The race is as follows:
-
-Suppose a multi-threaded task forks a new process (on cpu A), thus
-bumping up the ref count on all the pages. While the fork is occurring
-(and thus we have marked all the PTEs as read-only), another thread in
-the original process (on cpu B) tries to write to a huge page, taking an
-access violation from the write-protect and calling hugetlb_cow(). Now,
-suppose the fork() fails. It will undo the COW and decrement the ref
-count on the pages, so the ref count on the huge page drops back to 1.
-Meanwhile hugetlb_cow() also decrements the ref count by one on the
-original page, since the original address space doesn't need it any
-more, having copied a new page to replace the original page. This
-leaves the ref count at zero, and when we call unlock_page(), we panic.
-
- fork on CPU A fault on CPU B
- ============= ==============
- ...
- down_write(&parent->mmap_sem);
- down_write_nested(&child->mmap_sem);
- ...
- while duplicating vmas
- if error
- break;
- ...
- up_write(&child->mmap_sem);
- up_write(&parent->mmap_sem); ...
- down_read(&parent->mmap_sem);
- ...
- lock_page(page);
- handle COW
- page_mapcount(old_page) == 2
- alloc and prepare new_page
- ...
- handle error
- page_remove_rmap(page);
- put_page(page);
- ...
- fold new_page into pte
- page_remove_rmap(page);
- put_page(page);
- ...
- oops ==> unlock_page(page);
- up_read(&parent->mmap_sem);
-
-The solution is to take an extra reference to the page while we are
-holding the lock on it.
-
-Signed-off-by: Chris Metcalf <cmetcalf at tilera.com>
-Cc: Hillf Danton <dhillf at gmail.com>
-Cc: Michal Hocko <mhocko at suse.cz>
-Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu at jp.fujitsu.com>
-Cc: Hugh Dickins <hughd at google.com>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- mm/hugetlb.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/mm/hugetlb.c b/mm/hugetlb.c
-index 2316840..bd936ed 100644
---- a/mm/hugetlb.c
-+++ b/mm/hugetlb.c
-@@ -2686,6 +2686,7 @@ int hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma,
- * so no worry about deadlock.
- */
- page = pte_page(entry);
-+ get_page(page);
- if (page != pagecache_page)
- lock_page(page);
-
-@@ -2717,6 +2718,7 @@ out_page_table_lock:
- }
- if (page != pagecache_page)
- unlock_page(page);
-+ put_page(page);
-
- out_mutex:
- mutex_unlock(&hugetlb_instantiation_mutex);
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0017-staging-iio-hmc5843-Fix-crash-in-probe-function.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0017-staging-iio-hmc5843-Fix-crash-in-probe-function.patch
deleted file mode 100644
index a1b99a9..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0017-staging-iio-hmc5843-Fix-crash-in-probe-function.patch
+++ /dev/null
@@ -1,107 +0,0 @@
-From 0bc2590c85b786aa29761b2471415c7b159c142c Mon Sep 17 00:00:00 2001
-From: Marek Belisko <marek.belisko at open-nandra.com>
-Date: Thu, 12 Apr 2012 21:48:03 +0200
-Subject: [PATCH 17/68] staging: iio: hmc5843: Fix crash in probe function.
-
-commit 62d2feb9803f18c4e3c8a1a2c7e30a54df8a1d72 upstream.
-
-Fix crash after issuing:
- echo hmc5843 0x1e > /sys/class/i2c-dev/i2c-2/device/new_device
-
- [ 37.180999] device: '2-001e': device_add
- [ 37.188293] bus: 'i2c': add device 2-001e
- [ 37.194549] PM: Adding info for i2c:2-001e
- [ 37.200958] bus: 'i2c': driver_probe_device: matched device 2-001e with driver hmc5843
- [ 37.210815] bus: 'i2c': really_probe: probing driver hmc5843 with device 2-001e
- [ 37.224884] HMC5843 initialized
- [ 37.228759] ------------[ cut here ]------------
- [ 37.233612] kernel BUG at mm/slab.c:505!
- [ 37.237701] Internal error: Oops - BUG: 0 [#1] PREEMPT
- [ 37.243103] Modules linked in:
- [ 37.246337] CPU: 0 Not tainted (3.3.1-gta04+ #28)
- [ 37.251647] PC is at kfree+0x84/0x144
- [ 37.255493] LR is at kfree+0x20/0x144
- [ 37.259338] pc : [<c00b408c>] lr : [<c00b4028>] psr: 40000093
- [ 37.259368] sp : de249cd8 ip : 0000000c fp : 00000090
- [ 37.271362] r10: 0000000a r9 : de229eac r8 : c0236274
- [ 37.276855] r7 : c09d6490 r6 : a0000013 r5 : de229c00 r4 : de229c10
- [ 37.283691] r3 : c0f00218 r2 : 00000400 r1 : c0eea000 r0 : c00b4028
- [ 37.290527] Flags: nZcv IRQs off FIQs on Mode SVC_32 ISA ARM Segment user
- [ 37.298095] Control: 10c5387d Table: 9e1d0019 DAC: 00000015
- [ 37.304107] Process sh (pid: 91, stack limit = 0xde2482f0)
- [ 37.309844] Stack: (0xde249cd8 to 0xde24a000)
- [ 37.314422] 9cc0: de229c10 de229c00
- [ 37.322998] 9ce0: de229c10 ffffffea 00000005 c0236274 de140a80 c00b4798 dec00080 de140a80
- [ 37.331573] 9d00: c032f37c dec00080 000080d0 00000001 de229c00 de229c10 c048d578 00000005
- [ 37.340148] 9d20: de229eac 0000000a 00000090 c032fa40 00000001 00000000 00000001 de229c10
- [ 37.348724] 9d40: de229eac 00000029 c075b558 00000001 00000003 00000004 de229c10 c048d594
- [ 37.357299] 9d60: 00000000 60000013 00000018 205b0007 37332020 3432322e 5d343838 c0060020
- [ 37.365905] 9d80: de251600 00000001 00000000 de251600 00000001 c0065a84 de229c00 de229c48
- [ 37.374481] 9da0: 00000006 0048d62c de229c38 de229c00 de229c00 de1f6c00 de1f6c20 00000001
- [ 37.383056] 9dc0: 00000000 c048d62c 00000000 de229c00 de229c00 de1f6c00 de1f6c20 00000001
- [ 37.391632] 9de0: 00000000 c048d62c 00000000 c0330164 00000000 de1f6c20 c048d62c de1f6c00
- [ 37.400207] 9e00: c0330078 de1f6c04 c078d714 de189b58 00000000 c02ccfd8 de1f6c20 c0795f40
- [ 37.408782] 9e20: c0238330 00000000 00000000 c02381a8 de1b9fc0 de1f6c20 de1f6c20 de249e48
- [ 37.417358] 9e40: c0238330 c0236bb0 decdbed8 de7d0f14 de1f6c20 de1f6c20 de1f6c54 de1f6c20
- [ 37.425933] 9e60: 00000000 c0238030 de1f6c20 c078d7bc de1f6c20 c02377ec de1f6c20 de1f6c28
- [ 37.434509] 9e80: dee64cb0 c0236138 c047c554 de189b58 00000000 c004b45c de1f6c20 de1f6cd8
- [ 37.443084] 9ea0: c0edfa6c de1f6c00 dee64c68 de1f6c04 de1f6c20 dee64cb8 c047c554 de189b58
- [ 37.451690] 9ec0: 00000000 c02cd634 dee64c68 de249ef4 de23b008 dee64cb0 0000000d de23b000
- [ 37.460266] 9ee0: de23b007 c02cd78c 00000002 00000000 00000000 35636d68 00333438 00000000
- [ 37.468841] 9f00: 00000000 00000000 001e0000 00000000 00000000 00000000 00000000 0a10cec0
- [ 37.477416] 9f20: 00000002 de249f80 0000000d dee62990 de189b40 c0234d88 0000000d c010c354
- [ 37.485992] 9f40: 0000000d de210f28 000acc88 de249f80 0000000d de248000 00000000 c00b7bf8
- [ 37.494567] 9f60: de210f28 000acc88 de210f28 000acc88 00000000 00000000 0000000d c00b7ed8
- [ 37.503143] 9f80: 00000000 00000000 0000000d 00000000 0007fa28 0000000d 000acc88 00000004
- [ 37.511718] 9fa0: c000e544 c000e380 0007fa28 0000000d 00000001 000acc88 0000000d 00000000
- [ 37.520294] 9fc0: 0007fa28 0000000d 000acc88 00000004 00000001 00000020 00000002 00000000
- [ 37.528869] 9fe0: 00000000 beab8624 0000ea05 b6eaebac 600d0010 00000001 00000000 00000000
- [ 37.537475] [<c00b408c>] (kfree+0x84/0x144) from [<c0236274>] (device_add+0x530/0x57c)
- [ 37.545806] [<c0236274>] (device_add+0x530/0x57c) from [<c032fa40>] (iio_device_register+0x8c8/0x990)
- [ 37.555480] [<c032fa40>] (iio_device_register+0x8c8/0x990) from [<c0330164>] (hmc5843_probe+0xec/0x114)
- [ 37.565338] [<c0330164>] (hmc5843_probe+0xec/0x114) from [<c02ccfd8>] (i2c_device_probe+0xc4/0xf8)
- [ 37.574737] [<c02ccfd8>] (i2c_device_probe+0xc4/0xf8) from [<c02381a8>] (driver_probe_device+0x118/0x218)
- [ 37.584777] [<c02381a8>] (driver_probe_device+0x118/0x218) from [<c0236bb0>] (bus_for_each_drv+0x4c/0x84)
- [ 37.594818] [<c0236bb0>] (bus_for_each_drv+0x4c/0x84) from [<c0238030>] (device_attach+0x78/0xa4)
- [ 37.604125] [<c0238030>] (device_attach+0x78/0xa4) from [<c02377ec>] (bus_probe_device+0x28/0x9c)
- [ 37.613433] [<c02377ec>] (bus_probe_device+0x28/0x9c) from [<c0236138>] (device_add+0x3f4/0x57c)
- [ 37.622650] [<c0236138>] (device_add+0x3f4/0x57c) from [<c02cd634>] (i2c_new_device+0xf8/0x19c)
- [ 37.631805] [<c02cd634>] (i2c_new_device+0xf8/0x19c) from [<c02cd78c>] (i2c_sysfs_new_device+0xb4/0x130)
- [ 37.641754] [<c02cd78c>] (i2c_sysfs_new_device+0xb4/0x130) from [<c0234d88>] (dev_attr_store+0x18/0x24)
- [ 37.651611] [<c0234d88>] (dev_attr_store+0x18/0x24) from [<c010c354>] (sysfs_write_file+0x10c/0x140)
- [ 37.661193] [<c010c354>] (sysfs_write_file+0x10c/0x140) from [<c00b7bf8>] (vfs_write+0xb0/0x178)
- [ 37.670410] [<c00b7bf8>] (vfs_write+0xb0/0x178) from [<c00b7ed8>] (sys_write+0x3c/0x68)
- [ 37.678833] [<c00b7ed8>] (sys_write+0x3c/0x68) from [<c000e380>] (ret_fast_syscall+0x0/0x3c)
- [ 37.687683] Code: 1593301c e5932000 e3120080 1a000000 (e7f001f2)
- [ 37.700775] ---[ end trace aaf805debdb69390 ]---
-
-Client data was assigned to iio_dev structure in probe but in
-hmc5843_init_client function casted to private driver data structure which
-is wrong. Possibly calling mutex_init(&data->lock); corrupt data
-which the lead to above crash.
-
-Signed-off-by: Marek Belisko <marek.belisko at open-nandra.com>
-Acked-by: Jonathan Cameron <jic23 at kernel.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/staging/iio/magnetometer/hmc5843.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/staging/iio/magnetometer/hmc5843.c b/drivers/staging/iio/magnetometer/hmc5843.c
-index fc9ee97..870db4f 100644
---- a/drivers/staging/iio/magnetometer/hmc5843.c
-+++ b/drivers/staging/iio/magnetometer/hmc5843.c
-@@ -521,7 +521,9 @@ static int hmc5843_detect(struct i2c_client *client,
- /* Called when we have found a new HMC5843. */
- static void hmc5843_init_client(struct i2c_client *client)
- {
-- struct hmc5843_data *data = i2c_get_clientdata(client);
-+ struct iio_dev *indio_dev = i2c_get_clientdata(client);
-+ struct hmc5843_data *data = iio_priv(indio_dev);
-+
- hmc5843_set_meas_conf(client, data->meas_conf);
- hmc5843_set_rate(client, data->rate);
- hmc5843_configure(client, data->operating_mode);
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0018-tty-serial-altera_uart-Check-for-NULL-platform_data-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0018-tty-serial-altera_uart-Check-for-NULL-platform_data-.patch
deleted file mode 100644
index 3a39598..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0018-tty-serial-altera_uart-Check-for-NULL-platform_data-.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 33fbe982ec60fd99d02c6bf3cca78e10ad49a46a Mon Sep 17 00:00:00 2001
-From: Yuriy Kozlov <ykozlov at ptcusa.com>
-Date: Thu, 29 Mar 2012 09:55:27 +0200
-Subject: [PATCH 18/68] tty: serial: altera_uart: Check for NULL platform_data
- in probe.
-
-commit acede70d6561f2d042d9dbb153d9a3469479c0ed upstream.
-
-Follow altera_jtag_uart. This fixes a crash if there is a mistake in the DTS.
-
-Signed-off-by: Yuriy Kozlov <ykozlov at ptcusa.com>
-Signed-off-by: Tobias Klauser <tklauser at distanz.ch>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/tty/serial/altera_uart.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/tty/serial/altera_uart.c b/drivers/tty/serial/altera_uart.c
-index 1d04c50..5ba0898 100644
---- a/drivers/tty/serial/altera_uart.c
-+++ b/drivers/tty/serial/altera_uart.c
-@@ -555,7 +555,7 @@ static int __devinit altera_uart_probe(struct platform_device *pdev)
- res_mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
- if (res_mem)
- port->mapbase = res_mem->start;
-- else if (platp->mapbase)
-+ else if (platp)
- port->mapbase = platp->mapbase;
- else
- return -EINVAL;
-@@ -563,7 +563,7 @@ static int __devinit altera_uart_probe(struct platform_device *pdev)
- res_irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
- if (res_irq)
- port->irq = res_irq->start;
-- else if (platp->irq)
-+ else if (platp)
- port->irq = platp->irq;
-
- /* Check platform data first so we can override device node data */
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0019-sparc64-Eliminate-obsolete-__handle_softirq-function.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0019-sparc64-Eliminate-obsolete-__handle_softirq-function.patch
deleted file mode 100644
index f974fd9..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0019-sparc64-Eliminate-obsolete-__handle_softirq-function.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From 05ab1d059eb55460d5bafab622493a9c7d2b879f Mon Sep 17 00:00:00 2001
-From: "Paul E. McKenney" <paulmck at linux.vnet.ibm.com>
-Date: Fri, 13 Apr 2012 03:35:13 +0000
-Subject: [PATCH 19/68] sparc64: Eliminate obsolete __handle_softirq()
- function
-
-commit 3d3eeb2ef26112a200785e5fca58ec58dd33bf1e upstream.
-
-The invocation of softirq is now handled by irq_exit(), so there is no
-need for sparc64 to invoke it on the trap-return path. In fact, doing so
-is a bug because if the trap occurred in the idle loop, this invocation
-can result in lockdep-RCU failures. The problem is that RCU ignores idle
-CPUs, and the sparc64 trap-return path to the softirq handlers fails to
-tell RCU that the CPU must be considered non-idle while those handlers
-are executing. This means that RCU is ignoring any RCU read-side critical
-sections in those handlers, which in turn means that RCU-protected data
-can be yanked out from under those read-side critical sections.
-
-The shiny new lockdep-RCU ability to detect RCU read-side critical sections
-that RCU is ignoring located this problem.
-
-The fix is straightforward: Make sparc64 stop manually invoking the
-softirq handlers.
-
-Reported-by: Meelis Roos <mroos at linux.ee>
-Suggested-by: David Miller <davem at davemloft.net>
-Signed-off-by: Paul E. McKenney <paulmck at linux.vnet.ibm.com>
-Tested-by: Meelis Roos <mroos at linux.ee>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/sparc/kernel/rtrap_64.S | 7 -------
- 1 file changed, 7 deletions(-)
-
-diff --git a/arch/sparc/kernel/rtrap_64.S b/arch/sparc/kernel/rtrap_64.S
-index 77f1b95..9171fc2 100644
---- a/arch/sparc/kernel/rtrap_64.S
-+++ b/arch/sparc/kernel/rtrap_64.S
-@@ -20,11 +20,6 @@
-
- .text
- .align 32
--__handle_softirq:
-- call do_softirq
-- nop
-- ba,a,pt %xcc, __handle_softirq_continue
-- nop
- __handle_preemption:
- call schedule
- wrpr %g0, RTRAP_PSTATE, %pstate
-@@ -89,9 +84,7 @@ rtrap:
- cmp %l1, 0
-
- /* mm/ultra.S:xcall_report_regs KNOWS about this load. */
-- bne,pn %icc, __handle_softirq
- ldx [%sp + PTREGS_OFF + PT_V9_TSTATE], %l1
--__handle_softirq_continue:
- rtrap_xcall:
- sethi %hi(0xf << 20), %l4
- and %l1, %l4, %l4
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0020-sparc64-Fix-bootup-crash-on-sun4v.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0020-sparc64-Fix-bootup-crash-on-sun4v.patch
deleted file mode 100644
index ef06859..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0020-sparc64-Fix-bootup-crash-on-sun4v.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From bfc4ac59222dd446f647b3d38cd706a55a3f2320 Mon Sep 17 00:00:00 2001
-From: "David S. Miller" <davem at davemloft.net>
-Date: Fri, 13 Apr 2012 11:56:22 -0700
-Subject: [PATCH 20/68] sparc64: Fix bootup crash on sun4v.
-
-commit 9e0daff30fd7ecf698e5d20b0fa7f851e427cca5 upstream.
-
-The DS driver registers as a subsys_initcall() but this can be too
-early, in particular this risks registering before we've had a chance
-to allocate and setup module_kset in kernel/params.c which is
-performed also as a subsyts_initcall().
-
-Register DS using device_initcall() insteal.
-
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/sparc/kernel/ds.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/arch/sparc/kernel/ds.c b/arch/sparc/kernel/ds.c
-index 381edcd..27728e1 100644
---- a/arch/sparc/kernel/ds.c
-+++ b/arch/sparc/kernel/ds.c
-@@ -1267,4 +1267,4 @@ static int __init ds_init(void)
- return vio_register_driver(&ds_driver);
- }
-
--subsys_initcall(ds_init);
-+fs_initcall(ds_init);
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0021-cciss-Initialize-scsi-host-max_sectors-for-tape-driv.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0021-cciss-Initialize-scsi-host-max_sectors-for-tape-driv.patch
deleted file mode 100644
index 0d950ee..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0021-cciss-Initialize-scsi-host-max_sectors-for-tape-driv.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 21ffb8a828b59cb70af522e6560a975c0e5ddae4 Mon Sep 17 00:00:00 2001
-From: "Stephen M. Cameron" <scameron at beardog.cce.hp.com>
-Date: Thu, 22 Mar 2012 21:40:08 +0100
-Subject: [PATCH 21/68] cciss: Initialize scsi host max_sectors for tape drive
- support
-
-commit 395d287526bb60411ff37b19ad9dd38b58ba8732 upstream.
-
-The default is too small (1024 blocks), use h->cciss_max_sectors (8192 blocks)
-Without this change, if you try to set the block size of a tape drive above
-512*1024, via "mt -f /dev/st0 setblk nnn" where nnn is greater than 524288,
-it won't work right.
-
-Signed-off-by: Stephen M. Cameron <scameron at beardog.cce.hp.com>
-Signed-off-by: Jens Axboe <axboe at kernel.dk>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/block/cciss_scsi.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/block/cciss_scsi.c b/drivers/block/cciss_scsi.c
-index e820b68..f510a9c 100644
---- a/drivers/block/cciss_scsi.c
-+++ b/drivers/block/cciss_scsi.c
-@@ -866,6 +866,7 @@ cciss_scsi_detect(ctlr_info_t *h)
- sh->can_queue = cciss_tape_cmds;
- sh->sg_tablesize = h->maxsgentries;
- sh->max_cmd_len = MAX_COMMAND_SIZE;
-+ sh->max_sectors = h->cciss_max_sectors;
-
- ((struct cciss_scsi_adapter_data_t *)
- h->scsi_ctlr)->scsi_host = sh;
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0022-cciss-Fix-scsi-tape-io-with-more-than-255-scatter-ga.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0022-cciss-Fix-scsi-tape-io-with-more-than-255-scatter-ga.patch
deleted file mode 100644
index 6ab9a4e..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0022-cciss-Fix-scsi-tape-io-with-more-than-255-scatter-ga.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 3c8f69ec2a543e0b0c3f0f2a84663629ea0a1711 Mon Sep 17 00:00:00 2001
-From: "Stephen M. Cameron" <scameron at beardog.cce.hp.com>
-Date: Thu, 22 Mar 2012 21:40:09 +0100
-Subject: [PATCH 22/68] cciss: Fix scsi tape io with more than 255 scatter
- gather elements
-
-commit bc67f63650fad6b3478d9ddfd5406d45a95987c9 upstream.
-
-The total number of scatter gather elements in the CISS command
-used by the scsi tape code was being cast to a u8, which can hold
-at most 255 scatter gather elements. It should have been cast to
-a u16. Without this patch the command gets rejected by the controller
-since the total scatter gather count did not add up to the right
-value resulting in an i/o error.
-
-Signed-off-by: Stephen M. Cameron <scameron at beardog.cce.hp.com>
-Signed-off-by: Jens Axboe <axboe at kernel.dk>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/block/cciss_scsi.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/block/cciss_scsi.c b/drivers/block/cciss_scsi.c
-index f510a9c..acda773 100644
---- a/drivers/block/cciss_scsi.c
-+++ b/drivers/block/cciss_scsi.c
-@@ -1411,7 +1411,7 @@ static void cciss_scatter_gather(ctlr_info_t *h, CommandList_struct *c,
- /* track how many SG entries we are using */
- if (request_nsgs > h->maxSG)
- h->maxSG = request_nsgs;
-- c->Header.SGTotal = (__u8) request_nsgs + chained;
-+ c->Header.SGTotal = (u16) request_nsgs + chained;
- if (request_nsgs > h->max_cmd_sgentries)
- c->Header.SGList = h->max_cmd_sgentries;
- else
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0023-video-uvesafb-Fix-oops-that-uvesafb-try-to-execute-N.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0023-video-uvesafb-Fix-oops-that-uvesafb-try-to-execute-N.patch
deleted file mode 100644
index 6fe1c74..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0023-video-uvesafb-Fix-oops-that-uvesafb-try-to-execute-N.patch
+++ /dev/null
@@ -1,118 +0,0 @@
-From f60922f4d15cda62654f28c209b6123e7abe0b69 Mon Sep 17 00:00:00 2001
-From: Wang YanQing <udknight at gmail.com>
-Date: Sun, 1 Apr 2012 08:54:02 +0800
-Subject: [PATCH 23/68] video:uvesafb: Fix oops that uvesafb try to execute
- NX-protected page
-
-commit b78f29ca0516266431688c5eb42d39ce42ec039a upstream.
-
-This patch fix the oops below that catched in my machine
-
-[ 81.560602] uvesafb: NVIDIA Corporation, GT216 Board - 0696a290, Chip Rev , OEM: NVIDIA, VBE v3.0
-[ 81.609384] uvesafb: protected mode interface info at c000:d350
-[ 81.609388] uvesafb: pmi: set display start = c00cd3b3, set palette = c00cd40e
-[ 81.609390] uvesafb: pmi: ports = 3b4 3b5 3ba 3c0 3c1 3c4 3c5 3c6 3c7 3c8 3c9 3cc 3ce 3cf 3d0 3d1 3d2 3d3 3d4 3d5 3da
-[ 81.614558] uvesafb: VBIOS/hardware doesn't support DDC transfers
-[ 81.614562] uvesafb: no monitor limits have been set, default refresh rate will be used
-[ 81.614994] uvesafb: scrolling: ypan using protected mode interface, yres_virtual=4915
-[ 81.744147] kernel tried to execute NX-protected page - exploit attempt? (uid: 0)
-[ 81.744153] BUG: unable to handle kernel paging request at c00cd3b3
-[ 81.744159] IP: [<c00cd3b3>] 0xc00cd3b2
-[ 81.744167] *pdpt = 00000000016d6001 *pde = 0000000001c7b067 *pte = 80000000000cd163
-[ 81.744171] Oops: 0011 [#1] SMP
-[ 81.744174] Modules linked in: uvesafb(+) cfbcopyarea cfbimgblt cfbfillrect
-[ 81.744178]
-[ 81.744181] Pid: 3497, comm: modprobe Not tainted 3.3.0-rc4NX+ #71 Acer Aspire 4741 /Aspire 4741
-[ 81.744185] EIP: 0060:[<c00cd3b3>] EFLAGS: 00010246 CPU: 0
-[ 81.744187] EIP is at 0xc00cd3b3
-[ 81.744189] EAX: 00004f07 EBX: 00000000 ECX: 00000000 EDX: 00000000
-[ 81.744191] ESI: f763f000 EDI: f763f6e8 EBP: f57f3a0c ESP: f57f3a00
-[ 81.744192] DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068
-[ 81.744195] Process modprobe (pid: 3497, ti=f57f2000 task=f748c600 task.ti=f57f2000)
-[ 81.744196] Stack:
-[ 81.744197] f82512c5 f759341c 00000000 f57f3a30 c124a9bc 00000001 00000001 000001e0
-[ 81.744202] f8251280 f763f000 f7593400 00000000 f57f3a40 c12598dd f5c0c000 00000000
-[ 81.744206] f57f3b10 c1255efe c125a21a 00000006 f763f09c 00000000 c1c6cb60 f7593400
-[ 81.744210] Call Trace:
-[ 81.744215] [<f82512c5>] ? uvesafb_pan_display+0x45/0x60 [uvesafb]
-[ 81.744222] [<c124a9bc>] fb_pan_display+0x10c/0x160
-[ 81.744226] [<f8251280>] ? uvesafb_vbe_find_mode+0x180/0x180 [uvesafb]
-[ 81.744230] [<c12598dd>] bit_update_start+0x1d/0x50
-[ 81.744232] [<c1255efe>] fbcon_switch+0x39e/0x550
-[ 81.744235] [<c125a21a>] ? bit_cursor+0x4ea/0x560
-[ 81.744240] [<c129b6cb>] redraw_screen+0x12b/0x220
-[ 81.744245] [<c128843b>] ? tty_do_resize+0x3b/0xc0
-[ 81.744247] [<c129ef42>] vc_do_resize+0x3d2/0x3e0
-[ 81.744250] [<c129efb4>] vc_resize+0x14/0x20
-[ 81.744253] [<c12586bd>] fbcon_init+0x29d/0x500
-[ 81.744255] [<c12984c4>] ? set_inverse_trans_unicode+0xe4/0x110
-[ 81.744258] [<c129b378>] visual_init+0xb8/0x150
-[ 81.744261] [<c129c16c>] bind_con_driver+0x16c/0x360
-[ 81.744264] [<c129b47e>] ? register_con_driver+0x6e/0x190
-[ 81.744267] [<c129c3a1>] take_over_console+0x41/0x50
-[ 81.744269] [<c1257b7a>] fbcon_takeover+0x6a/0xd0
-[ 81.744272] [<c12594b8>] fbcon_event_notify+0x758/0x790
-[ 81.744277] [<c10929e2>] notifier_call_chain+0x42/0xb0
-[ 81.744280] [<c1092d30>] __blocking_notifier_call_chain+0x60/0x90
-[ 81.744283] [<c1092d7a>] blocking_notifier_call_chain+0x1a/0x20
-[ 81.744285] [<c124a5a1>] fb_notifier_call_chain+0x11/0x20
-[ 81.744288] [<c124b759>] register_framebuffer+0x1d9/0x2b0
-[ 81.744293] [<c1061c73>] ? ioremap_wc+0x33/0x40
-[ 81.744298] [<f82537c6>] uvesafb_probe+0xaba/0xc40 [uvesafb]
-[ 81.744302] [<c12bb81f>] platform_drv_probe+0xf/0x20
-[ 81.744306] [<c12ba558>] driver_probe_device+0x68/0x170
-[ 81.744309] [<c12ba731>] __device_attach+0x41/0x50
-[ 81.744313] [<c12b9088>] bus_for_each_drv+0x48/0x70
-[ 81.744316] [<c12ba7f3>] device_attach+0x83/0xa0
-[ 81.744319] [<c12ba6f0>] ? __driver_attach+0x90/0x90
-[ 81.744321] [<c12b991f>] bus_probe_device+0x6f/0x90
-[ 81.744324] [<c12b8a45>] device_add+0x5e5/0x680
-[ 81.744329] [<c122a1a3>] ? kvasprintf+0x43/0x60
-[ 81.744332] [<c121e6e4>] ? kobject_set_name_vargs+0x64/0x70
-[ 81.744335] [<c121e6e4>] ? kobject_set_name_vargs+0x64/0x70
-[ 81.744339] [<c12bbe9f>] platform_device_add+0xff/0x1b0
-[ 81.744343] [<f8252906>] uvesafb_init+0x50/0x9b [uvesafb]
-[ 81.744346] [<c100111f>] do_one_initcall+0x2f/0x170
-[ 81.744350] [<f82528b6>] ? uvesafb_is_valid_mode+0x66/0x66 [uvesafb]
-[ 81.744355] [<c10c6994>] sys_init_module+0xf4/0x1410
-[ 81.744359] [<c1157fc0>] ? vfsmount_lock_local_unlock_cpu+0x30/0x30
-[ 81.744363] [<c144cb10>] sysenter_do_call+0x12/0x36
-[ 81.744365] Code: f5 00 00 00 32 f6 66 8b da 66 d1 e3 66 ba d4 03 8a e3 b0 1c 66 ef b0 1e 66 ef 8a e7 b0 1d 66 ef b0 1f 66 ef e8 fa 00 00 00 61 c3 <60> e8 c8 00 00 00 66 8b f3 66 8b da 66 ba d4 03 b0 0c 8a e5 66
-[ 81.744388] EIP: [<c00cd3b3>] 0xc00cd3b3 SS:ESP 0068:f57f3a00
-[ 81.744391] CR2: 00000000c00cd3b3
-[ 81.744393] ---[ end trace 18b2c87c925b54d6 ]---
-
-Signed-off-by: Wang YanQing <udknight at gmail.com>
-Cc: Michal Januszewski <spock at gentoo.org>
-Cc: Alan Cox <alan at lxorguk.ukuu.org.uk>
-Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat at gmx.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/video/uvesafb.c | 11 +++++++++--
- 1 file changed, 9 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/video/uvesafb.c b/drivers/video/uvesafb.c
-index 7f8472c..8813588 100644
---- a/drivers/video/uvesafb.c
-+++ b/drivers/video/uvesafb.c
-@@ -815,8 +815,15 @@ static int __devinit uvesafb_vbe_init(struct fb_info *info)
- par->pmi_setpal = pmi_setpal;
- par->ypan = ypan;
-
-- if (par->pmi_setpal || par->ypan)
-- uvesafb_vbe_getpmi(task, par);
-+ if (par->pmi_setpal || par->ypan) {
-+ if (__supported_pte_mask & _PAGE_NX) {
-+ par->pmi_setpal = par->ypan = 0;
-+ printk(KERN_WARNING "uvesafb: NX protection is actively."
-+ "We have better not to use the PMI.\n");
-+ } else {
-+ uvesafb_vbe_getpmi(task, par);
-+ }
-+ }
- #else
- /* The protected mode interface is not available on non-x86. */
- par->pmi_setpal = par->ypan = 0;
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0024-nohz-Fix-stale-jiffies-update-in-tick_nohz_restart.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0024-nohz-Fix-stale-jiffies-update-in-tick_nohz_restart.patch
deleted file mode 100644
index a2cf91f..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0024-nohz-Fix-stale-jiffies-update-in-tick_nohz_restart.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From 5e1fb3da35cd1e7b3bf1aa1f3384b5d3735c8fa8 Mon Sep 17 00:00:00 2001
-From: Neal Cardwell <ncardwell at google.com>
-Date: Tue, 27 Mar 2012 15:09:37 -0400
-Subject: [PATCH 24/68] nohz: Fix stale jiffies update in tick_nohz_restart()
-
-commit 6f103929f8979d2638e58d7f7fda0beefcb8ee7e upstream.
-
-Fix tick_nohz_restart() to not use a stale ktime_t "now" value when
-calling tick_do_update_jiffies64(now).
-
-If we reach this point in the loop it means that we crossed a tick
-boundary since we grabbed the "now" timestamp, so at this point "now"
-refers to a time in the old jiffy, so using the old value for "now" is
-incorrect, and is likely to give us a stale jiffies value.
-
-In particular, the first time through the loop the
-tick_do_update_jiffies64(now) call is always a no-op, since the
-caller, tick_nohz_restart_sched_tick(), will have already called
-tick_do_update_jiffies64(now) with that "now" value.
-
-Note that tick_nohz_stop_sched_tick() already uses the correct
-approach: when we notice we cross a jiffy boundary, grab a new
-timestamp with ktime_get(), and *then* update jiffies.
-
-Signed-off-by: Neal Cardwell <ncardwell at google.com>
-Cc: Ben Segall <bsegall at google.com>
-Cc: Ingo Molnar <mingo at elte.hu>
-Link: http://lkml.kernel.org/r/1332875377-23014-1-git-send-email-ncardwell@google.com
-Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- kernel/time/tick-sched.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c
-index 4042064..c923640 100644
---- a/kernel/time/tick-sched.c
-+++ b/kernel/time/tick-sched.c
-@@ -508,9 +508,9 @@ static void tick_nohz_restart(struct tick_sched *ts, ktime_t now)
- hrtimer_get_expires(&ts->sched_timer), 0))
- break;
- }
-- /* Update jiffies and reread time */
-- tick_do_update_jiffies64(now);
-+ /* Reread time and update jiffies */
- now = ktime_get();
-+ tick_do_update_jiffies64(now);
- }
- }
-
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0025-pch_uart-Fix-MSI-setting-issue.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0025-pch_uart-Fix-MSI-setting-issue.patch
deleted file mode 100644
index b0f9df5..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0025-pch_uart-Fix-MSI-setting-issue.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 4390c4afeff1688398e91fa58626daa4c476426a Mon Sep 17 00:00:00 2001
-From: Tomoya MORINAGA <tomoya.rohm at gmail.com>
-Date: Mon, 2 Apr 2012 14:36:22 +0900
-Subject: [PATCH 25/68] pch_uart: Fix MSI setting issue
-
-commit 867c902e07d5677e2a5b54c0435e589513abde48 upstream.
-
-The following patch (MSI setting) is not enough.
-
-commit e463595fd9c752fa4bf06b47df93ef9ade3c7cf0
-Author: Alexander Stein <alexander.stein at systec-electronic.com>
-Date: Mon Jul 4 08:58:31 2011 +0200
-
- pch_uart: Add MSI support
-
- Signed-off-by: Alexander Stein <alexander.stein at systec-electronic.com>
- Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
-
-To enable MSI mode, PCI bus-mastering must be enabled.
-This patch enables the setting.
-
-cc: Alexander Stein <alexander.stein at systec-electronic.com>
-Signed-off-by: Tomoya MORINAGA <tomoya.rohm at gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/tty/serial/pch_uart.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/tty/serial/pch_uart.c b/drivers/tty/serial/pch_uart.c
-index d6aba8c..da776a0 100644
---- a/drivers/tty/serial/pch_uart.c
-+++ b/drivers/tty/serial/pch_uart.c
-@@ -1438,6 +1438,7 @@ static struct eg20t_port *pch_uart_init_port(struct pci_dev *pdev,
- }
-
- pci_enable_msi(pdev);
-+ pci_set_master(pdev);
-
- iobase = pci_resource_start(pdev, 0);
- mapbase = pci_resource_start(pdev, 1);
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0026-USB-serial-fix-race-between-probe-and-open.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0026-USB-serial-fix-race-between-probe-and-open.patch
deleted file mode 100644
index 60b1ca1..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0026-USB-serial-fix-race-between-probe-and-open.patch
+++ /dev/null
@@ -1,97 +0,0 @@
-From 2c3a918f01cceefb6b25eda48f8703c0f07d316d Mon Sep 17 00:00:00 2001
-From: Johan Hovold <jhovold at gmail.com>
-Date: Tue, 20 Mar 2012 16:59:33 +0100
-Subject: [PATCH 26/68] USB: serial: fix race between probe and open
-
-commit a65a6f14dc24a90bde3f5d0073ba2364476200bf upstream.
-
-Fix race between probe and open by making sure that the disconnected
-flag is not cleared until all ports have been registered.
-
-A call to tty_open while probe is running may get a reference to the
-serial structure in serial_install before its ports have been
-registered. This may lead to usb_serial_core calling driver open before
-port is fully initialised.
-
-With ftdi_sio this result in the following NULL-pointer dereference as
-the private data has not been initialised at open:
-
-[ 199.698286] IP: [<f811a089>] ftdi_open+0x59/0xe0 [ftdi_sio]
-[ 199.698297] *pde = 00000000
-[ 199.698303] Oops: 0000 [#1] PREEMPT SMP
-[ 199.698313] Modules linked in: ftdi_sio usbserial
-[ 199.698323]
-[ 199.698327] Pid: 1146, comm: ftdi_open Not tainted 3.2.11 #70 Dell Inc. Vostro 1520/0T816J
-[ 199.698339] EIP: 0060:[<f811a089>] EFLAGS: 00010286 CPU: 0
-[ 199.698344] EIP is at ftdi_open+0x59/0xe0 [ftdi_sio]
-[ 199.698348] EAX: 0000003e EBX: f5067000 ECX: 00000000 EDX: 80000600
-[ 199.698352] ESI: f48d8800 EDI: 00000001 EBP: f515dd54 ESP: f515dcfc
-[ 199.698356] DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068
-[ 199.698361] Process ftdi_open (pid: 1146, ti=f515c000 task=f481e040 task.ti=f515c000)
-[ 199.698364] Stack:
-[ 199.698368] f811a9fe f811a9e0 f811b3ef 00000000 00000000 00001388 00000000 f4a86800
-[ 199.698387] 00000002 00000000 f806e68e 00000000 f532765c f481e040 00000246 22222222
-[ 199.698479] 22222222 22222222 22222222 f5067004 f5327600 f5327638 f515dd74 f806e6ab
-[ 199.698496] Call Trace:
-[ 199.698504] [<f806e68e>] ? serial_activate+0x2e/0x70 [usbserial]
-[ 199.698511] [<f806e6ab>] serial_activate+0x4b/0x70 [usbserial]
-[ 199.698521] [<c126380c>] tty_port_open+0x7c/0xd0
-[ 199.698527] [<f806e660>] ? serial_set_termios+0xa0/0xa0 [usbserial]
-[ 199.698534] [<f806e76f>] serial_open+0x2f/0x70 [usbserial]
-[ 199.698540] [<c125d07c>] tty_open+0x20c/0x510
-[ 199.698546] [<c10e9eb7>] chrdev_open+0xe7/0x230
-[ 199.698553] [<c10e48f2>] __dentry_open+0x1f2/0x390
-[ 199.698559] [<c144bfec>] ? _raw_spin_unlock+0x2c/0x50
-[ 199.698565] [<c10e4b76>] nameidata_to_filp+0x66/0x80
-[ 199.698570] [<c10e9dd0>] ? cdev_put+0x20/0x20
-[ 199.698576] [<c10f3e08>] do_last+0x198/0x730
-[ 199.698581] [<c10f4440>] path_openat+0xa0/0x350
-[ 199.698587] [<c10f47d5>] do_filp_open+0x35/0x80
-[ 199.698593] [<c144bfec>] ? _raw_spin_unlock+0x2c/0x50
-[ 199.698599] [<c10ff110>] ? alloc_fd+0xc0/0x100
-[ 199.698605] [<c10f0b72>] ? getname_flags+0x72/0x120
-[ 199.698611] [<c10e4450>] do_sys_open+0xf0/0x1c0
-[ 199.698617] [<c11fcc08>] ? trace_hardirqs_on_thunk+0xc/0x10
-[ 199.698623] [<c10e458e>] sys_open+0x2e/0x40
-[ 199.698628] [<c144c990>] sysenter_do_call+0x12/0x36
-[ 199.698632] Code: 85 89 00 00 00 8b 16 8b 4d c0 c1 e2 08 c7 44 24 14 88 13 00 00 81 ca 00 00 00 80 c7 44 24 10 00 00 00 00 c7 44 24 0c 00 00 00 00 <0f> b7 41 78 31 c9 89 44 24 08 c7 44 24 04 00 00 00 00 c7 04 24
-[ 199.698884] EIP: [<f811a089>] ftdi_open+0x59/0xe0 [ftdi_sio] SS:ESP 0068:f515dcfc
-[ 199.698893] CR2: 0000000000000078
-[ 199.698925] ---[ end trace 77c43ec023940cff ]---
-
-Reported-and-tested-by: Ken Huang <csuhgw at gmail.com>
-Signed-off-by: Johan Hovold <jhovold at gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/serial/usb-serial.c | 8 ++++++++
- 1 file changed, 8 insertions(+)
-
-diff --git a/drivers/usb/serial/usb-serial.c b/drivers/usb/serial/usb-serial.c
-index cc274fd..38d7ebd 100644
---- a/drivers/usb/serial/usb-serial.c
-+++ b/drivers/usb/serial/usb-serial.c
-@@ -1059,6 +1059,12 @@ int usb_serial_probe(struct usb_interface *interface,
- serial->attached = 1;
- }
-
-+ /* Avoid race with tty_open and serial_install by setting the
-+ * disconnected flag and not clearing it until all ports have been
-+ * registered.
-+ */
-+ serial->disconnected = 1;
-+
- if (get_free_serial(serial, num_ports, &minor) == NULL) {
- dev_err(&interface->dev, "No more free serial devices\n");
- goto probe_error;
-@@ -1083,6 +1089,8 @@ int usb_serial_probe(struct usb_interface *interface,
- }
- }
-
-+ serial->disconnected = 0;
-+
- usb_serial_console_init(debug, minor);
-
- exit:
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0027-USB-pl2303-fix-DTR-RTS-being-raised-on-baud-rate-cha.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0027-USB-pl2303-fix-DTR-RTS-being-raised-on-baud-rate-cha.patch
deleted file mode 100644
index 139d5eb..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0027-USB-pl2303-fix-DTR-RTS-being-raised-on-baud-rate-cha.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 759454c93c1d1532f9a9c76e16741d8b09f3fefd Mon Sep 17 00:00:00 2001
-From: Johan Hovold <jhovold at gmail.com>
-Date: Fri, 23 Mar 2012 15:23:18 +0100
-Subject: [PATCH 27/68] USB: pl2303: fix DTR/RTS being raised on baud rate
- change
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit ce5c9851855bab190c9a142761d54ba583ab094c upstream.
-
-DTR/RTS should only be raised when changing baudrate from B0 and not on
-any baud rate change (> B0).
-
-Reported-by: Søren Holm <sgh at sgh.dk>
-Signed-off-by: Johan Hovold <jhovold at gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/serial/pl2303.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/usb/serial/pl2303.c b/drivers/usb/serial/pl2303.c
-index fc2d66f..5532ea5 100644
---- a/drivers/usb/serial/pl2303.c
-+++ b/drivers/usb/serial/pl2303.c
-@@ -421,7 +421,7 @@ static void pl2303_set_termios(struct tty_struct *tty,
- control = priv->line_control;
- if ((cflag & CBAUD) == B0)
- priv->line_control &= ~(CONTROL_DTR | CONTROL_RTS);
-- else
-+ else if ((old_termios->c_cflag & CBAUD) == B0)
- priv->line_control |= (CONTROL_DTR | CONTROL_RTS);
- if (control != priv->line_control) {
- control = priv->line_control;
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0028-USB-option-re-add-NOVATELWIRELESS_PRODUCT_HSPA_HIGHS.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0028-USB-option-re-add-NOVATELWIRELESS_PRODUCT_HSPA_HIGHS.patch
deleted file mode 100644
index c3736bb..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0028-USB-option-re-add-NOVATELWIRELESS_PRODUCT_HSPA_HIGHS.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 64b66ecdf795206abc8fe6ed8df7b34f581fb4cc Mon Sep 17 00:00:00 2001
-From: Santiago Garcia Mantinan <manty at debian.org>
-Date: Mon, 19 Mar 2012 18:17:00 +0100
-Subject: [PATCH 28/68] USB: option: re-add
- NOVATELWIRELESS_PRODUCT_HSPA_HIGHSPEED to option_id
- array
-
-commit 9ac2feb22b5b821d81463bef92698ef7682a3145 upstream.
-
-Re-add NOVATELWIRELESS_PRODUCT_HSPA_HIGHSPEED to option_id array
-
-Signed-off-by: Santiago Garcia Mantinan <manty at debian.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/serial/option.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
-index 54898c9..cbe3451 100644
---- a/drivers/usb/serial/option.c
-+++ b/drivers/usb/serial/option.c
-@@ -708,6 +708,7 @@ static const struct usb_device_id option_ids[] = {
- { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EVDO_EMBEDDED_FULLSPEED) },
- { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_HSPA_EMBEDDED_FULLSPEED) },
- { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EVDO_HIGHSPEED) },
-+ { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_HSPA_HIGHSPEED) },
- { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_HSPA_HIGHSPEED3) },
- { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_HSPA_HIGHSPEED4) },
- { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_HSPA_HIGHSPEED5) },
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0029-USB-ftdi_sio-fix-status-line-change-handling-for-TIO.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0029-USB-ftdi_sio-fix-status-line-change-handling-for-TIO.patch
deleted file mode 100644
index 55a36f8..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0029-USB-ftdi_sio-fix-status-line-change-handling-for-TIO.patch
+++ /dev/null
@@ -1,79 +0,0 @@
-From 8c15eaa2462cd32b7e2aebf64e4692ed6f6bd775 Mon Sep 17 00:00:00 2001
-From: Simon Arlott <simon at fire.lp0.eu>
-Date: Mon, 26 Mar 2012 21:19:40 +0100
-Subject: [PATCH 29/68] USB: ftdi_sio: fix status line change handling for
- TIOCMIWAIT and TIOCGICOUNT
-
-commit fca5430d48d53eaf103498c33fd0d1984b9f448b upstream.
-
-Handling of TIOCMIWAIT was changed by commit 1d749f9afa657f6ee9336b2bc1fcd750a647d157
- USB: ftdi_sio.c: Use ftdi async_icount structure for TIOCMIWAIT, as in other drivers
-
-FTDI_STATUS_B0_MASK does not indicate the changed modem status lines,
-it indicates the value of the current modem status lines. An xor is
-still required to determine which lines have changed.
-
-The count was only being incremented if the line was high. The only
-reason TIOCMIWAIT still worked was because the status packet is
-repeated every 1ms, so the count was always changing. The wakeup
-itself still ran based on the status lines changing.
-
-This change fixes handling of updates to the modem status lines and
-allows multiple processes to use TIOCMIWAIT concurrently.
-
-Tested with two processes waiting on different status lines being
-toggled independently.
-
-Signed-off-by: Simon Arlott <simon at fire.lp0.eu>
-Cc: Uwe Bonnes <bon at elektron.ikp.physik.tu-darmstadt.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/serial/ftdi_sio.c | 24 +++++++++++++-----------
- 1 file changed, 13 insertions(+), 11 deletions(-)
-
-diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
-index f2c9ef7..cfc8e59 100644
---- a/drivers/usb/serial/ftdi_sio.c
-+++ b/drivers/usb/serial/ftdi_sio.c
-@@ -75,7 +75,7 @@ struct ftdi_private {
- unsigned long last_dtr_rts; /* saved modem control outputs */
- struct async_icount icount;
- wait_queue_head_t delta_msr_wait; /* Used for TIOCMIWAIT */
-- char prev_status, diff_status; /* Used for TIOCMIWAIT */
-+ char prev_status; /* Used for TIOCMIWAIT */
- char transmit_empty; /* If transmitter is empty or not */
- struct usb_serial_port *port;
- __u16 interface; /* FT2232C, FT2232H or FT4232H port interface
-@@ -1979,17 +1979,19 @@ static int ftdi_process_packet(struct tty_struct *tty,
- N.B. packet may be processed more than once, but differences
- are only processed once. */
- status = packet[0] & FTDI_STATUS_B0_MASK;
-- if (status & FTDI_RS0_CTS)
-- priv->icount.cts++;
-- if (status & FTDI_RS0_DSR)
-- priv->icount.dsr++;
-- if (status & FTDI_RS0_RI)
-- priv->icount.rng++;
-- if (status & FTDI_RS0_RLSD)
-- priv->icount.dcd++;
- if (status != priv->prev_status) {
-- priv->diff_status |= status ^ priv->prev_status;
-- wake_up_interruptible(&priv->delta_msr_wait);
-+ char diff_status = status ^ priv->prev_status;
-+
-+ if (diff_status & FTDI_RS0_CTS)
-+ priv->icount.cts++;
-+ if (diff_status & FTDI_RS0_DSR)
-+ priv->icount.dsr++;
-+ if (diff_status & FTDI_RS0_RI)
-+ priv->icount.rng++;
-+ if (diff_status & FTDI_RS0_RLSD)
-+ priv->icount.dcd++;
-+
-+ wake_up_interruptible_all(&priv->delta_msr_wait);
- priv->prev_status = status;
- }
-
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0030-USB-ftdi_sio-fix-race-condition-in-TIOCMIWAIT-and-ab.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0030-USB-ftdi_sio-fix-race-condition-in-TIOCMIWAIT-and-ab.patch
deleted file mode 100644
index 1f825a8..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0030-USB-ftdi_sio-fix-race-condition-in-TIOCMIWAIT-and-ab.patch
+++ /dev/null
@@ -1,111 +0,0 @@
-From 7a6e307dd338f12c1a9ece87fdd962f48b5a56a7 Mon Sep 17 00:00:00 2001
-From: Simon Arlott <simon at fire.lp0.eu>
-Date: Mon, 26 Mar 2012 23:27:59 +0100
-Subject: [PATCH 30/68] USB: ftdi_sio: fix race condition in TIOCMIWAIT, and
- abort of TIOCMIWAIT when the device is removed
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit 876ae50d94b02f3f523aa451b45ec5fb9c25d221 upstream.
-
-There are two issues here, one is that the device is generating
-spurious very fast modem status line changes somewhere:
-
-CTS becomes high then low 18µs later:
-[121226.924373] ftdi_process_packet: prev rng=0 dsr=10 dcd=0 cts=6
-[121226.924378] ftdi_process_packet: status=10 prev=00 diff=10
-[121226.924382] ftdi_process_packet: now rng=0 dsr=10 dcd=0 cts=7
-(wake_up_interruptible is called)
-[121226.924391] ftdi_process_packet: prev rng=0 dsr=10 dcd=0 cts=7
-[121226.924394] ftdi_process_packet: status=00 prev=10 diff=10
-[121226.924397] ftdi_process_packet: now rng=0 dsr=10 dcd=0 cts=8
-(wake_up_interruptible is called)
-
-This wakes up the task in TIOCMIWAIT:
-[121226.924405] ftdi_ioctl: 19451 rng=0->0 dsr=10->10 dcd=0->0 cts=6->8
-(wait from 20:51:46 returns and observes both changes)
-
-Which then calls TIOCMIWAIT again:
-20:51:46.400239 ioctl(3, TIOCMIWAIT, 0x20) = 0
-22:11:09.441818 ioctl(3, TIOCMGET, [TIOCM_DTR|TIOCM_RTS]) = 0
-22:11:09.442812 ioctl(3, TIOCMIWAIT, 0x20) = -1 EIO (Input/output error)
-(the second wake_up_interruptible takes effect and an I/O error occurs)
-
-The other issue is that TIOCMIWAIT will wait forever (unless the task is
-interrupted) if the device is removed.
-
-This change removes the -EIO return that occurs if the counts don't
-appear to have changed. Multiple counts may have been processed as
-one or the waiting task may have started waiting after recording the
-current count.
-
-It adds a bool to indicate that the device has been removed so that
-TIOCMIWAIT doesn't wait forever, and wakes up any tasks so that they can
-return -EIO.
-
-Signed-off-by: Simon Arlott <simon at fire.lp0.eu>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/serial/ftdi_sio.c | 12 +++++++-----
- 1 file changed, 7 insertions(+), 5 deletions(-)
-
-diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
-index cfc8e59..c4cf3f3 100644
---- a/drivers/usb/serial/ftdi_sio.c
-+++ b/drivers/usb/serial/ftdi_sio.c
-@@ -76,6 +76,7 @@ struct ftdi_private {
- struct async_icount icount;
- wait_queue_head_t delta_msr_wait; /* Used for TIOCMIWAIT */
- char prev_status; /* Used for TIOCMIWAIT */
-+ bool dev_gone; /* Used to abort TIOCMIWAIT */
- char transmit_empty; /* If transmitter is empty or not */
- struct usb_serial_port *port;
- __u16 interface; /* FT2232C, FT2232H or FT4232H port interface
-@@ -1679,6 +1680,7 @@ static int ftdi_sio_port_probe(struct usb_serial_port *port)
- init_waitqueue_head(&priv->delta_msr_wait);
-
- priv->flags = ASYNC_LOW_LATENCY;
-+ priv->dev_gone = false;
-
- if (quirk && quirk->port_probe)
- quirk->port_probe(priv);
-@@ -1836,6 +1838,9 @@ static int ftdi_sio_port_remove(struct usb_serial_port *port)
-
- dbg("%s", __func__);
-
-+ priv->dev_gone = true;
-+ wake_up_interruptible_all(&priv->delta_msr_wait);
-+
- remove_sysfs_attrs(port);
-
- kref_put(&priv->kref, ftdi_sio_priv_release);
-@@ -2390,15 +2395,12 @@ static int ftdi_ioctl(struct tty_struct *tty,
- */
- case TIOCMIWAIT:
- cprev = priv->icount;
-- while (1) {
-+ while (!priv->dev_gone) {
- interruptible_sleep_on(&priv->delta_msr_wait);
- /* see if a signal did it */
- if (signal_pending(current))
- return -ERESTARTSYS;
- cnow = priv->icount;
-- if (cnow.rng == cprev.rng && cnow.dsr == cprev.dsr &&
-- cnow.dcd == cprev.dcd && cnow.cts == cprev.cts)
-- return -EIO; /* no change => error */
- if (((arg & TIOCM_RNG) && (cnow.rng != cprev.rng)) ||
- ((arg & TIOCM_DSR) && (cnow.dsr != cprev.dsr)) ||
- ((arg & TIOCM_CD) && (cnow.dcd != cprev.dcd)) ||
-@@ -2407,7 +2409,7 @@ static int ftdi_ioctl(struct tty_struct *tty,
- }
- cprev = cnow;
- }
-- /* not reached */
-+ return -EIO;
- break;
- case TIOCSERGETLSR:
- return get_lsr_info(port, (struct serial_struct __user *)arg);
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0031-USB-sierra-add-support-for-Sierra-Wireless-MC7710.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0031-USB-sierra-add-support-for-Sierra-Wireless-MC7710.patch
deleted file mode 100644
index 9de7930..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0031-USB-sierra-add-support-for-Sierra-Wireless-MC7710.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 6f304009cc2e6546ded2d677953ad5e43c8dce88 Mon Sep 17 00:00:00 2001
-From: Anton Samokhvalov <pg83 at yandex.ru>
-Date: Wed, 4 Apr 2012 22:26:01 +0400
-Subject: [PATCH 31/68] USB: sierra: add support for Sierra Wireless MC7710
-
-commit c5d703dcc776cb542b41665f2b7e2ba054efb4a7 upstream.
-
-Just add new device id. 3G works fine, LTE not tested.
-
-Signed-off-by: Anton Samokhvalov <pg83 at yandex.ru>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/serial/sierra.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/usb/serial/sierra.c b/drivers/usb/serial/sierra.c
-index b18179b..7c3ec9e 100644
---- a/drivers/usb/serial/sierra.c
-+++ b/drivers/usb/serial/sierra.c
-@@ -289,6 +289,7 @@ static const struct usb_device_id id_table[] = {
- { USB_DEVICE(0x1199, 0x6856) }, /* Sierra Wireless AirCard 881 U */
- { USB_DEVICE(0x1199, 0x6859) }, /* Sierra Wireless AirCard 885 E */
- { USB_DEVICE(0x1199, 0x685A) }, /* Sierra Wireless AirCard 885 E */
-+ { USB_DEVICE(0x1199, 0x68A2) }, /* Sierra Wireless MC7710 */
- /* Sierra Wireless C885 */
- { USB_DEVICE_AND_INTERFACE_INFO(0x1199, 0x6880, 0xFF, 0xFF, 0xFF)},
- /* Sierra Wireless C888, Air Card 501, USB 303, USB 304 */
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0032-USB-don-t-clear-urb-dev-in-scatter-gather-library.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0032-USB-don-t-clear-urb-dev-in-scatter-gather-library.patch
deleted file mode 100644
index 02e6915..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0032-USB-don-t-clear-urb-dev-in-scatter-gather-library.patch
+++ /dev/null
@@ -1,85 +0,0 @@
-From aa2fe95f433d360d0625752971b99e30ecde56bf Mon Sep 17 00:00:00 2001
-From: Alan Stern <stern at rowland.harvard.edu>
-Date: Thu, 22 Mar 2012 11:00:21 -0400
-Subject: [PATCH 32/68] USB: don't clear urb->dev in scatter-gather library
-
-commit bcf398537630bf20b4dbe59ba855b69f404c93cf upstream.
-
-This patch (as1517b) fixes an error in the USB scatter-gather library.
-The library code uses urb->dev to determine whether or nor an URB is
-currently active; the completion handler sets urb->dev to NULL.
-However the core unlinking routines need to use urb->dev. Since
-unlinking always racing with completion, the completion handler must
-not clear urb->dev -- it can lead to invalid memory accesses when a
-transfer has to be cancelled.
-
-This patch fixes the problem by getting rid of the lines that clear
-urb->dev after urb has been submitted. As a result we may end up
-trying to unlink an URB that failed in submission or that has already
-completed, so an extra check is added after each unlink to avoid
-printing an error message when this happens. The checks are updated
-in both sg_complete() and sg_cancel(), and the second is updated to
-match the first (currently it prints out unnecessary warning messages
-if a device is unplugged while a transfer is in progress).
-
-Signed-off-by: Alan Stern <stern at rowland.harvard.edu>
-Reported-and-tested-by: Illia Zaitsev <I.Zaitsev at adbglobal.com>
-CC: Ming Lei <tom.leiming at gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/core/message.c | 11 ++++++-----
- 1 file changed, 6 insertions(+), 5 deletions(-)
-
-diff --git a/drivers/usb/core/message.c b/drivers/usb/core/message.c
-index b3bdfed..aed3e07 100644
---- a/drivers/usb/core/message.c
-+++ b/drivers/usb/core/message.c
-@@ -308,7 +308,8 @@ static void sg_complete(struct urb *urb)
- retval = usb_unlink_urb(io->urbs [i]);
- if (retval != -EINPROGRESS &&
- retval != -ENODEV &&
-- retval != -EBUSY)
-+ retval != -EBUSY &&
-+ retval != -EIDRM)
- dev_err(&io->dev->dev,
- "%s, unlink --> %d\n",
- __func__, retval);
-@@ -317,7 +318,6 @@ static void sg_complete(struct urb *urb)
- }
- spin_lock(&io->lock);
- }
-- urb->dev = NULL;
-
- /* on the last completion, signal usb_sg_wait() */
- io->bytes += urb->actual_length;
-@@ -524,7 +524,6 @@ void usb_sg_wait(struct usb_sg_request *io)
- case -ENXIO: /* hc didn't queue this one */
- case -EAGAIN:
- case -ENOMEM:
-- io->urbs[i]->dev = NULL;
- retval = 0;
- yield();
- break;
-@@ -542,7 +541,6 @@ void usb_sg_wait(struct usb_sg_request *io)
-
- /* fail any uncompleted urbs */
- default:
-- io->urbs[i]->dev = NULL;
- io->urbs[i]->status = retval;
- dev_dbg(&io->dev->dev, "%s, submit --> %d\n",
- __func__, retval);
-@@ -593,7 +591,10 @@ void usb_sg_cancel(struct usb_sg_request *io)
- if (!io->urbs [i]->dev)
- continue;
- retval = usb_unlink_urb(io->urbs [i]);
-- if (retval != -EINPROGRESS && retval != -EBUSY)
-+ if (retval != -EINPROGRESS
-+ && retval != -ENODEV
-+ && retval != -EBUSY
-+ && retval != -EIDRM)
- dev_warn(&io->dev->dev, "%s, unlink --> %d\n",
- __func__, retval);
- }
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0033-USB-don-t-ignore-suspend-errors-for-root-hubs.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0033-USB-don-t-ignore-suspend-errors-for-root-hubs.patch
deleted file mode 100644
index 0d9190f..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0033-USB-don-t-ignore-suspend-errors-for-root-hubs.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From 76cec389c13edcc348d13a0efc7351752c3f71e3 Mon Sep 17 00:00:00 2001
-From: Alan Stern <stern at rowland.harvard.edu>
-Date: Wed, 28 Mar 2012 15:56:17 -0400
-Subject: [PATCH 33/68] USB: don't ignore suspend errors for root hubs
-
-commit cd4376e23a59a2adf3084cb5f4a523e6d5fd4e49 upstream.
-
-This patch (as1532) fixes a mistake in the USB suspend code. When the
-system is going to sleep, we should ignore errors in powering down USB
-devices, because they don't really matter. The devices will go to low
-power anyway when the entire USB bus gets suspended (except for
-SuperSpeed devices; maybe they will need special treatment later).
-
-However we should not ignore errors in suspending root hubs,
-especially if the error indicates that the suspend raced with a wakeup
-request. Doing so might leave the bus powered on while the system was
-supposed to be asleep, or it might cause the suspend of the root hub's
-parent controller device to fail, or it might cause a wakeup request
-to be ignored.
-
-The patch fixes the problem by ignoring errors only when the device in
-question is not a root hub.
-
-Signed-off-by: Alan Stern <stern at rowland.harvard.edu>
-Reported-by: Chen Peter <B29397 at freescale.com>
-Tested-by: Chen Peter <peter.chen at freescale.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/core/driver.c | 9 +++++++--
- 1 file changed, 7 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/usb/core/driver.c b/drivers/usb/core/driver.c
-index 45887a0..c77f0d6 100644
---- a/drivers/usb/core/driver.c
-+++ b/drivers/usb/core/driver.c
-@@ -1198,8 +1198,13 @@ static int usb_suspend_both(struct usb_device *udev, pm_message_t msg)
- if (status == 0) {
- status = usb_suspend_device(udev, msg);
-
-- /* Again, ignore errors during system sleep transitions */
-- if (!PMSG_IS_AUTO(msg))
-+ /*
-+ * Ignore errors from non-root-hub devices during
-+ * system sleep transitions. For the most part,
-+ * these devices should go to low power anyway when
-+ * the entire bus is suspended.
-+ */
-+ if (udev->parent && !PMSG_IS_AUTO(msg))
- status = 0;
- }
-
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0034-xhci-don-t-re-enable-IE-constantly.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0034-xhci-don-t-re-enable-IE-constantly.patch
deleted file mode 100644
index 590fa5b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0034-xhci-don-t-re-enable-IE-constantly.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From 4baf16baa7693c3ef1083347dfc02d92050ee34b Mon Sep 17 00:00:00 2001
-From: Felipe Balbi <balbi at ti.com>
-Date: Thu, 15 Mar 2012 16:37:08 +0200
-Subject: [PATCH 34/68] xhci: don't re-enable IE constantly
-
-commit 4e833c0b87a30798e67f06120cecebef6ee9644c upstream.
-
-While we're at that, define IMAN bitfield to aid readability.
-
-The interrupt enable bit should be set once on driver init, and we
-shouldn't need to continually re-enable it. Commit c21599a3 introduced
-a read of the irq_pending register, and that allows us to preserve the
-state of the IE bit. Before that commit, we were blindly writing 0x3 to
-the register.
-
-This patch should be backported to kernels as old as 2.6.36, or ones
-that contain the commit c21599a36165dbc78b380846b254017a548b9de5 "USB:
-xhci: Reduce reads and writes of interrupter registers".
-
-Signed-off-by: Felipe Balbi <balbi at ti.com>
-Signed-off-by: Sarah Sharp <sarah.a.sharp at linux.intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/host/xhci-ring.c | 2 +-
- drivers/usb/host/xhci.h | 4 ++++
- 2 files changed, 5 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c
-index ae92dc4..43b3447 100644
---- a/drivers/usb/host/xhci-ring.c
-+++ b/drivers/usb/host/xhci-ring.c
-@@ -2343,7 +2343,7 @@ hw_died:
- u32 irq_pending;
- /* Acknowledge the PCI interrupt */
- irq_pending = xhci_readl(xhci, &xhci->ir_set->irq_pending);
-- irq_pending |= 0x3;
-+ irq_pending |= IMAN_IP;
- xhci_writel(xhci, irq_pending, &xhci->ir_set->irq_pending);
- }
-
-diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h
-index 09eda3a..4850c4d 100644
---- a/drivers/usb/host/xhci.h
-+++ b/drivers/usb/host/xhci.h
-@@ -205,6 +205,10 @@ struct xhci_op_regs {
- #define CMD_PM_INDEX (1 << 11)
- /* bits 12:31 are reserved (and should be preserved on writes). */
-
-+/* IMAN - Interrupt Management Register */
-+#define IMAN_IP (1 << 1)
-+#define IMAN_IE (1 << 0)
-+
- /* USBSTS - USB status - status bitmasks */
- /* HC not running - set to 1 when run/stop bit is cleared. */
- #define STS_HALT XHCI_STS_HALT
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0035-xhci-Don-t-write-zeroed-pointers-to-xHC-registers.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0035-xhci-Don-t-write-zeroed-pointers-to-xHC-registers.patch
deleted file mode 100644
index 47e7b05..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0035-xhci-Don-t-write-zeroed-pointers-to-xHC-registers.patch
+++ /dev/null
@@ -1,78 +0,0 @@
-From eefbd6d2849f7b6a48865e9946d80f2d08fbda44 Mon Sep 17 00:00:00 2001
-From: Sarah Sharp <sarah.a.sharp at linux.intel.com>
-Date: Fri, 16 Mar 2012 13:09:39 -0700
-Subject: [PATCH 35/68] xhci: Don't write zeroed pointers to xHC registers.
-
-commit 159e1fcc9a60fc7daba23ee8fcdb99799de3fe84 upstream.
-
-When xhci_mem_cleanup() is called, we can't be sure if the xHC is
-actually halted. We can ask the xHC to halt by writing to the RUN bit
-in the command register, but that might timeout due to a HW hang.
-
-If the host controller is still running, we should not write zeroed
-values to the event ring dequeue pointers or base tables, the DCBAA
-pointers, or the command ring pointers. Eric Fu reports his VIA VL800
-host accesses the event ring pointers after a failed register restore on
-resume from suspend. The hypothesis is that the host never actually
-halted before the register write to change the event ring pointer to
-zero.
-
-Remove all writes of zeroed values to pointer registers in
-xhci_mem_cleanup(). Instead, make all callers of the function reset the
-host controller first, which will reset those registers to zero.
-xhci_mem_init() is the only caller that doesn't first halt and reset the
-host controller before calling xhci_mem_cleanup().
-
-This should be backported to kernels as old as 2.6.32.
-
-Signed-off-by: Sarah Sharp <sarah.a.sharp at linux.intel.com>
-Tested-by: Elric Fu <elricfu1 at gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/host/xhci-mem.c | 9 ++-------
- 1 file changed, 2 insertions(+), 7 deletions(-)
-
-diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c
-index c69cf54..01c3800 100644
---- a/drivers/usb/host/xhci-mem.c
-+++ b/drivers/usb/host/xhci-mem.c
-@@ -1704,11 +1704,6 @@ void xhci_mem_cleanup(struct xhci_hcd *xhci)
- int i;
-
- /* Free the Event Ring Segment Table and the actual Event Ring */
-- if (xhci->ir_set) {
-- xhci_writel(xhci, 0, &xhci->ir_set->erst_size);
-- xhci_write_64(xhci, 0, &xhci->ir_set->erst_base);
-- xhci_write_64(xhci, 0, &xhci->ir_set->erst_dequeue);
-- }
- size = sizeof(struct xhci_erst_entry)*(xhci->erst.num_entries);
- if (xhci->erst.entries)
- dma_free_coherent(&pdev->dev, size,
-@@ -1720,7 +1715,6 @@ void xhci_mem_cleanup(struct xhci_hcd *xhci)
- xhci->event_ring = NULL;
- xhci_dbg(xhci, "Freed event ring\n");
-
-- xhci_write_64(xhci, 0, &xhci->op_regs->cmd_ring);
- if (xhci->cmd_ring)
- xhci_ring_free(xhci, xhci->cmd_ring);
- xhci->cmd_ring = NULL;
-@@ -1749,7 +1743,6 @@ void xhci_mem_cleanup(struct xhci_hcd *xhci)
- xhci->medium_streams_pool = NULL;
- xhci_dbg(xhci, "Freed medium stream array pool\n");
-
-- xhci_write_64(xhci, 0, &xhci->op_regs->dcbaa_ptr);
- if (xhci->dcbaa)
- dma_free_coherent(&pdev->dev, sizeof(*xhci->dcbaa),
- xhci->dcbaa, xhci->dcbaa->dma);
-@@ -2358,6 +2351,8 @@ int xhci_mem_init(struct xhci_hcd *xhci, gfp_t flags)
-
- fail:
- xhci_warn(xhci, "Couldn't initialize memory\n");
-+ xhci_halt(xhci);
-+ xhci_reset(xhci);
- xhci_mem_cleanup(xhci);
- return -ENOMEM;
- }
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0036-xhci-Restore-event-ring-dequeue-pointer-on-resume.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0036-xhci-Restore-event-ring-dequeue-pointer-on-resume.patch
deleted file mode 100644
index 3b16ebd..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0036-xhci-Restore-event-ring-dequeue-pointer-on-resume.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From f8f150a7dd5f865281c14bff1e2260ecc60e9f3f Mon Sep 17 00:00:00 2001
-From: Sarah Sharp <sarah.a.sharp at linux.intel.com>
-Date: Fri, 16 Mar 2012 13:27:39 -0700
-Subject: [PATCH 36/68] xhci: Restore event ring dequeue pointer on resume.
-
-commit fb3d85bc7193f23c9a564502df95564c49a32c91 upstream.
-
-The xhci_save_registers() function saved the event ring dequeue pointer
-in the s3 register structure, but xhci_restore_registers() never
-restored it. No other code in the xHCI successful resume path would
-ever restore it either. Fix that.
-
-This should be backported to kernels as old as 2.6.37, that contain the
-commit 5535b1d5f8885695c6ded783c692e3c0d0eda8ca "USB: xHCI: PCI power
-management implementation".
-
-Signed-off-by: Sarah Sharp <sarah.a.sharp at linux.intel.com>
-Tested-by: Elric Fu <elricfu1 at gmail.com>
-Cc: Andiry Xu <andiry.xu at amd.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/host/xhci.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
-index 034f554..4d44713 100644
---- a/drivers/usb/host/xhci.c
-+++ b/drivers/usb/host/xhci.c
-@@ -681,6 +681,7 @@ static void xhci_restore_registers(struct xhci_hcd *xhci)
- xhci_writel(xhci, xhci->s3.irq_control, &xhci->ir_set->irq_control);
- xhci_writel(xhci, xhci->s3.erst_size, &xhci->ir_set->erst_size);
- xhci_write_64(xhci, xhci->s3.erst_base, &xhci->ir_set->erst_base);
-+ xhci_write_64(xhci, xhci->s3.erst_dequeue, &xhci->ir_set->erst_dequeue);
- }
-
- static void xhci_set_cmd_ring_deq(struct xhci_hcd *xhci)
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0037-USB-fix-bug-of-device-descriptor-got-from-superspeed.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0037-USB-fix-bug-of-device-descriptor-got-from-superspeed.patch
deleted file mode 100644
index 6e94e7b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0037-USB-fix-bug-of-device-descriptor-got-from-superspeed.patch
+++ /dev/null
@@ -1,73 +0,0 @@
-From 0060609ba317d6efd3584b4f0ad260944049dc69 Mon Sep 17 00:00:00 2001
-From: Elric Fu <elricfu1 at gmail.com>
-Date: Mon, 26 Mar 2012 21:16:02 +0800
-Subject: [PATCH 37/68] USB: fix bug of device descriptor got from superspeed
- device
-
-commit d8aec3dbdfd02627e198e7956ab4aaeba2a349fa upstream.
-
-When the Seagate Goflex USB3.0 device is attached to VIA xHCI
-host, sometimes the device will downgrade mode to high speed.
-By the USB analyzer, I found the device finished the link
-training process and worked at superspeed mode. But the device
-descriptor got from the device shows the device works at 2.1.
-It is very strange and seems like the device controller of
-Seagate Goflex has a little confusion.
-
-The first 8 bytes of device descriptor should be:
-12 01 00 03 00 00 00 09
-
-But the first 8 bytes of wrong device descriptor are:
-12 01 10 02 00 00 00 40
-
-The wrong device descriptor caused the initialization of mass
-storage failed. After a while, the device would be recognized
-as a high speed device and works fine.
-
-This patch will warm reset the device to fix the issue after
-finding the bcdUSB field of device descriptor isn't 0x0300
-but the speed mode of device is superspeed.
-
-This patch should be backported to kernels as old as 3.2, or ones that
-contain the commit 75d7cf72ab9fa01dc70877aa5c68e8ef477229dc "usbcore:
-refine warm reset logic".
-
-Signed-off-by: Elric Fu <elricfu1 at gmail.com>
-Acked-by: Andiry Xu <Andiry.Xu at amd.com>
-Acked-by: Sergei Shtylyov <sshtylyov at mvista.com>
-Signed-off-by: Sarah Sharp <sarah.a.sharp at linux.intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/core/hub.c | 16 ++++++++++++++++
- 1 file changed, 16 insertions(+)
-
-diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
-index f982eeb..18373ec 100644
---- a/drivers/usb/core/hub.c
-+++ b/drivers/usb/core/hub.c
-@@ -3072,6 +3072,22 @@ hub_port_init (struct usb_hub *hub, struct usb_device *udev, int port1,
- if (retval)
- goto fail;
-
-+ /*
-+ * Some superspeed devices have finished the link training process
-+ * and attached to a superspeed hub port, but the device descriptor
-+ * got from those devices show they aren't superspeed devices. Warm
-+ * reset the port attached by the devices can fix them.
-+ */
-+ if ((udev->speed == USB_SPEED_SUPER) &&
-+ (le16_to_cpu(udev->descriptor.bcdUSB) < 0x0300)) {
-+ dev_err(&udev->dev, "got a wrong device descriptor, "
-+ "warm reset device\n");
-+ hub_port_reset(hub, port1, udev,
-+ HUB_BH_RESET_TIME, true);
-+ retval = -EINVAL;
-+ goto fail;
-+ }
-+
- if (udev->descriptor.bMaxPacketSize0 == 0xff ||
- udev->speed == USB_SPEED_SUPER)
- i = 512;
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0038-xHCI-add-XHCI_RESET_ON_RESUME-quirk-for-VIA-xHCI-hos.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0038-xHCI-add-XHCI_RESET_ON_RESUME-quirk-for-VIA-xHCI-hos.patch
deleted file mode 100644
index 0e54897..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0038-xHCI-add-XHCI_RESET_ON_RESUME-quirk-for-VIA-xHCI-hos.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 8f4c9c4038bbc8e334790983712c1492e292d7f2 Mon Sep 17 00:00:00 2001
-From: Elric Fu <elricfu1 at gmail.com>
-Date: Thu, 29 Mar 2012 15:47:50 +0800
-Subject: [PATCH 38/68] xHCI: add XHCI_RESET_ON_RESUME quirk for VIA xHCI host
-
-commit 457a4f61f9bfc3ae76e5b49f30f25d86bb696f67 upstream.
-
-The suspend operation of VIA xHCI host have some issues and
-hibernate operation works fine, so The XHCI_RESET_ON_RESUME
-quirk is added for it.
-
-This patch should base on "xHCI: Don't write zeroed pointer
-to xHC registers" that is released by Sarah. Otherwise, the
-host system error will ocurr in the hibernate operation
-process.
-
-This should be backported to stable kernels as old as 2.6.37,
-that contain the commit c877b3b2ad5cb9d4fe523c5496185cc328ff3ae9
-"xhci: Add reset on resume quirk for asrock p67 host".
-
-Signed-off-by: Elric Fu <elricfu1 at gmail.com>
-Signed-off-by: Sarah Sharp <sarah.a.sharp at linux.intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/host/xhci-pci.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c
-index ef98b38..211296a 100644
---- a/drivers/usb/host/xhci-pci.c
-+++ b/drivers/usb/host/xhci-pci.c
-@@ -95,6 +95,8 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci)
- xhci->quirks |= XHCI_RESET_ON_RESUME;
- xhci_dbg(xhci, "QUIRK: Resetting on resume\n");
- }
-+ if (pdev->vendor == PCI_VENDOR_ID_VIA)
-+ xhci->quirks |= XHCI_RESET_ON_RESUME;
- }
-
- /* called during probe() after chip reset completes */
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0039-xHCI-Correct-the-define-XHCI_LEGACY_DISABLE_SMI.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0039-xHCI-Correct-the-define-XHCI_LEGACY_DISABLE_SMI.patch
deleted file mode 100644
index b184894..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0039-xHCI-Correct-the-define-XHCI_LEGACY_DISABLE_SMI.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From f7dd4f23cd64f64dbed76c7cca31533f3ed11037 Mon Sep 17 00:00:00 2001
-From: Alex He <alex.he at amd.com>
-Date: Fri, 30 Mar 2012 10:21:38 +0800
-Subject: [PATCH 39/68] xHCI: Correct the #define XHCI_LEGACY_DISABLE_SMI
-
-commit 95018a53f7653e791bba1f54c8d75d9cb700d1bd upstream.
-
-Re-define XHCI_LEGACY_DISABLE_SMI and used it in right way. All SMI enable
-bits will be cleared to zero and flag bits 29:31 are also cleared to zero.
-Other bits should be presvered as Table 146.
-
-This patch should be backported to kernels as old as 2.6.31.
-
-Signed-off-by: Alex He <alex.he at amd.com>
-Signed-off-by: Sarah Sharp <sarah.a.sharp at linux.intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/host/pci-quirks.c | 10 +++++++---
- drivers/usb/host/xhci-ext-caps.h | 5 +++--
- 2 files changed, 10 insertions(+), 5 deletions(-)
-
-diff --git a/drivers/usb/host/pci-quirks.c b/drivers/usb/host/pci-quirks.c
-index 7732d69..2afff88 100644
---- a/drivers/usb/host/pci-quirks.c
-+++ b/drivers/usb/host/pci-quirks.c
-@@ -825,9 +825,13 @@ static void __devinit quirk_usb_handoff_xhci(struct pci_dev *pdev)
- }
- }
-
-- /* Disable any BIOS SMIs */
-- writel(XHCI_LEGACY_DISABLE_SMI,
-- base + ext_cap_offset + XHCI_LEGACY_CONTROL_OFFSET);
-+ val = readl(base + ext_cap_offset + XHCI_LEGACY_CONTROL_OFFSET);
-+ /* Mask off (turn off) any enabled SMIs */
-+ val &= XHCI_LEGACY_DISABLE_SMI;
-+ /* Mask all SMI events bits, RW1C */
-+ val |= XHCI_LEGACY_SMI_EVENTS;
-+ /* Disable any BIOS SMIs and clear all SMI events*/
-+ writel(val, base + ext_cap_offset + XHCI_LEGACY_CONTROL_OFFSET);
-
- if (usb_is_intel_switchable_xhci(pdev))
- usb_enable_xhci_ports(pdev);
-diff --git a/drivers/usb/host/xhci-ext-caps.h b/drivers/usb/host/xhci-ext-caps.h
-index c7f3312..377f424 100644
---- a/drivers/usb/host/xhci-ext-caps.h
-+++ b/drivers/usb/host/xhci-ext-caps.h
-@@ -62,8 +62,9 @@
- /* USB Legacy Support Control and Status Register - section 7.1.2 */
- /* Add this offset, plus the value of xECP in HCCPARAMS to the base address */
- #define XHCI_LEGACY_CONTROL_OFFSET (0x04)
--/* bits 1:2, 5:12, and 17:19 need to be preserved; bits 21:28 should be zero */
--#define XHCI_LEGACY_DISABLE_SMI ((0x3 << 1) + (0xff << 5) + (0x7 << 17))
-+/* bits 1:3, 5:12, and 17:19 need to be preserved; bits 21:28 should be zero */
-+#define XHCI_LEGACY_DISABLE_SMI ((0x7 << 1) + (0xff << 5) + (0x7 << 17))
-+#define XHCI_LEGACY_SMI_EVENTS (0x7 << 29)
-
- /* USB 2.0 xHCI 0.96 L1C capability - section 7.2.2.1.3.2 */
- #define XHCI_L1C (1 << 16)
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0040-fix-tlb-flushing-for-page-table-pages.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0040-fix-tlb-flushing-for-page-table-pages.patch
deleted file mode 100644
index 1a6e44c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0040-fix-tlb-flushing-for-page-table-pages.patch
+++ /dev/null
@@ -1,240 +0,0 @@
-From d0cba3dd900c1420176693c3f10ec11ada4553af Mon Sep 17 00:00:00 2001
-From: Martin Schwidefsky <schwidefsky at de.ibm.com>
-Date: Wed, 11 Apr 2012 14:28:07 +0200
-Subject: [PATCH 40/68] fix tlb flushing for page table pages
-
-commit cd94154cc6a28dd9dc271042c1a59c08d26da886 upstream.
-
-Git commit 36409f6353fc2d7b6516e631415f938eadd92ffa "use generic RCU
-page-table freeing code" introduced a tlb flushing bug. Partially revert
-the above git commit and go back to s390 specific page table flush code.
-
-For s390 the TLB can contain three types of entries, "normal" TLB
-page-table entries, TLB combined region-and-segment-table (CRST) entries
-and real-space entries. Linux does not use real-space entries which
-leaves normal TLB entries and CRST entries. The CRST entries are
-intermediate steps in the page-table translation called translation paths.
-For example a 4K page access in a three-level page table setup will
-create two CRST TLB entries and one page-table TLB entry. The advantage
-of that approach is that a page access next to the previous one can reuse
-the CRST entries and needs just a single read from memory to create the
-page-table TLB entry. The disadvantage is that the TLB flushing rules are
-more complicated, before any page-table may be freed the TLB needs to be
-flushed.
-
-In short: the generic RCU page-table freeing code is incorrect for the
-CRST entries, in particular the check for mm_users < 2 is troublesome.
-
-This is applicable to 3.0+ kernels.
-
-Signed-off-by: Martin Schwidefsky <schwidefsky at de.ibm.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/s390/Kconfig | 1 -
- arch/s390/include/asm/pgalloc.h | 3 --
- arch/s390/include/asm/tlb.h | 22 +-------------
- arch/s390/mm/pgtable.c | 63 +++++++++++++++++++++++++++++++++++++--
- 4 files changed, 61 insertions(+), 28 deletions(-)
-
-diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig
-index f929db9..a3c40e8 100644
---- a/arch/s390/Kconfig
-+++ b/arch/s390/Kconfig
-@@ -90,7 +90,6 @@ config S390
- select HAVE_GET_USER_PAGES_FAST
- select HAVE_ARCH_MUTEX_CPU_RELAX
- select HAVE_ARCH_JUMP_LABEL if !MARCH_G5
-- select HAVE_RCU_TABLE_FREE if SMP
- select ARCH_SAVE_PAGE_KEYS if HIBERNATION
- select ARCH_INLINE_SPIN_TRYLOCK
- select ARCH_INLINE_SPIN_TRYLOCK_BH
-diff --git a/arch/s390/include/asm/pgalloc.h b/arch/s390/include/asm/pgalloc.h
-index 8eef9b5..78e3041 100644
---- a/arch/s390/include/asm/pgalloc.h
-+++ b/arch/s390/include/asm/pgalloc.h
-@@ -22,10 +22,7 @@ void crst_table_free(struct mm_struct *, unsigned long *);
-
- unsigned long *page_table_alloc(struct mm_struct *, unsigned long);
- void page_table_free(struct mm_struct *, unsigned long *);
--#ifdef CONFIG_HAVE_RCU_TABLE_FREE
- void page_table_free_rcu(struct mmu_gather *, unsigned long *);
--void __tlb_remove_table(void *_table);
--#endif
-
- static inline void clear_table(unsigned long *s, unsigned long val, size_t n)
- {
-diff --git a/arch/s390/include/asm/tlb.h b/arch/s390/include/asm/tlb.h
-index c687a2c..775a5ee 100644
---- a/arch/s390/include/asm/tlb.h
-+++ b/arch/s390/include/asm/tlb.h
-@@ -30,14 +30,10 @@
-
- struct mmu_gather {
- struct mm_struct *mm;
--#ifdef CONFIG_HAVE_RCU_TABLE_FREE
- struct mmu_table_batch *batch;
--#endif
- unsigned int fullmm;
-- unsigned int need_flush;
- };
-
--#ifdef CONFIG_HAVE_RCU_TABLE_FREE
- struct mmu_table_batch {
- struct rcu_head rcu;
- unsigned int nr;
-@@ -49,7 +45,6 @@ struct mmu_table_batch {
-
- extern void tlb_table_flush(struct mmu_gather *tlb);
- extern void tlb_remove_table(struct mmu_gather *tlb, void *table);
--#endif
-
- static inline void tlb_gather_mmu(struct mmu_gather *tlb,
- struct mm_struct *mm,
-@@ -57,29 +52,20 @@ static inline void tlb_gather_mmu(struct mmu_gather *tlb,
- {
- tlb->mm = mm;
- tlb->fullmm = full_mm_flush;
-- tlb->need_flush = 0;
--#ifdef CONFIG_HAVE_RCU_TABLE_FREE
- tlb->batch = NULL;
--#endif
- if (tlb->fullmm)
- __tlb_flush_mm(mm);
- }
-
- static inline void tlb_flush_mmu(struct mmu_gather *tlb)
- {
-- if (!tlb->need_flush)
-- return;
-- tlb->need_flush = 0;
-- __tlb_flush_mm(tlb->mm);
--#ifdef CONFIG_HAVE_RCU_TABLE_FREE
- tlb_table_flush(tlb);
--#endif
- }
-
- static inline void tlb_finish_mmu(struct mmu_gather *tlb,
- unsigned long start, unsigned long end)
- {
-- tlb_flush_mmu(tlb);
-+ tlb_table_flush(tlb);
- }
-
- /*
-@@ -105,10 +91,8 @@ static inline void tlb_remove_page(struct mmu_gather *tlb, struct page *page)
- static inline void pte_free_tlb(struct mmu_gather *tlb, pgtable_t pte,
- unsigned long address)
- {
--#ifdef CONFIG_HAVE_RCU_TABLE_FREE
- if (!tlb->fullmm)
- return page_table_free_rcu(tlb, (unsigned long *) pte);
--#endif
- page_table_free(tlb->mm, (unsigned long *) pte);
- }
-
-@@ -125,10 +109,8 @@ static inline void pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmd,
- #ifdef __s390x__
- if (tlb->mm->context.asce_limit <= (1UL << 31))
- return;
--#ifdef CONFIG_HAVE_RCU_TABLE_FREE
- if (!tlb->fullmm)
- return tlb_remove_table(tlb, pmd);
--#endif
- crst_table_free(tlb->mm, (unsigned long *) pmd);
- #endif
- }
-@@ -146,10 +128,8 @@ static inline void pud_free_tlb(struct mmu_gather *tlb, pud_t *pud,
- #ifdef __s390x__
- if (tlb->mm->context.asce_limit <= (1UL << 42))
- return;
--#ifdef CONFIG_HAVE_RCU_TABLE_FREE
- if (!tlb->fullmm)
- return tlb_remove_table(tlb, pud);
--#endif
- crst_table_free(tlb->mm, (unsigned long *) pud);
- #endif
- }
-diff --git a/arch/s390/mm/pgtable.c b/arch/s390/mm/pgtable.c
-index 301c84d..f8ceac4 100644
---- a/arch/s390/mm/pgtable.c
-+++ b/arch/s390/mm/pgtable.c
-@@ -687,8 +687,6 @@ void page_table_free(struct mm_struct *mm, unsigned long *table)
- }
- }
-
--#ifdef CONFIG_HAVE_RCU_TABLE_FREE
--
- static void __page_table_free_rcu(void *table, unsigned bit)
- {
- struct page *page;
-@@ -742,7 +740,66 @@ void __tlb_remove_table(void *_table)
- free_pages((unsigned long) table, ALLOC_ORDER);
- }
-
--#endif
-+static void tlb_remove_table_smp_sync(void *arg)
-+{
-+ /* Simply deliver the interrupt */
-+}
-+
-+static void tlb_remove_table_one(void *table)
-+{
-+ /*
-+ * This isn't an RCU grace period and hence the page-tables cannot be
-+ * assumed to be actually RCU-freed.
-+ *
-+ * It is however sufficient for software page-table walkers that rely
-+ * on IRQ disabling. See the comment near struct mmu_table_batch.
-+ */
-+ smp_call_function(tlb_remove_table_smp_sync, NULL, 1);
-+ __tlb_remove_table(table);
-+}
-+
-+static void tlb_remove_table_rcu(struct rcu_head *head)
-+{
-+ struct mmu_table_batch *batch;
-+ int i;
-+
-+ batch = container_of(head, struct mmu_table_batch, rcu);
-+
-+ for (i = 0; i < batch->nr; i++)
-+ __tlb_remove_table(batch->tables[i]);
-+
-+ free_page((unsigned long)batch);
-+}
-+
-+void tlb_table_flush(struct mmu_gather *tlb)
-+{
-+ struct mmu_table_batch **batch = &tlb->batch;
-+
-+ if (*batch) {
-+ __tlb_flush_mm(tlb->mm);
-+ call_rcu_sched(&(*batch)->rcu, tlb_remove_table_rcu);
-+ *batch = NULL;
-+ }
-+}
-+
-+void tlb_remove_table(struct mmu_gather *tlb, void *table)
-+{
-+ struct mmu_table_batch **batch = &tlb->batch;
-+
-+ if (*batch == NULL) {
-+ *batch = (struct mmu_table_batch *)
-+ __get_free_page(GFP_NOWAIT | __GFP_NOWARN);
-+ if (*batch == NULL) {
-+ __tlb_flush_mm(tlb->mm);
-+ tlb_remove_table_one(table);
-+ return;
-+ }
-+ (*batch)->nr = 0;
-+ }
-+ (*batch)->tables[(*batch)->nr++] = table;
-+ if ((*batch)->nr == MAX_TABLE_BATCH)
-+ tlb_table_flush(tlb);
-+}
-
- /*
- * switch on pgstes for its userspace process (for kvm)
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0041-serial-PL011-clear-pending-interrupts.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0041-serial-PL011-clear-pending-interrupts.patch
deleted file mode 100644
index 3b17d2c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0041-serial-PL011-clear-pending-interrupts.patch
+++ /dev/null
@@ -1,82 +0,0 @@
-From 83b1f68d0e0fdc6993be1ebf4ef51a439b71180f Mon Sep 17 00:00:00 2001
-From: Linus Walleij <linus.walleij at linaro.org>
-Date: Tue, 13 Mar 2012 13:27:23 +0100
-Subject: [PATCH 41/68] serial: PL011: clear pending interrupts
-
-commit 9b96fbacda34079dea0638ee1e92c56286f6114a upstream.
-
-Chanho Min reported that when the boot loader transfers
-control to the kernel, there may be pending interrupts
-causing the UART to lock up in an eternal loop trying to
-pick tokens from the FIFO (since the RX interrupt flag
-indicates there are tokens) while in practice there are
-no tokens - in fact there is only a pending IRQ flag.
-
-This patch address the issue with a combination of two
-patches suggested by Russell King that clears and mask
-all interrupts at probe() and clears any pending error
-and RX interrupts at port startup time.
-
-We suspect the spurious interrupts are a side-effect of
-switching the UART from FIFO to non-FIFO mode.
-
-Cc: Shreshtha Kumar Sahu <shreshthakumar.sahu at stericsson.com>
-Reported-by: Chanho Min <chanho0207 at gmail.com>
-Suggested-by: Russell King <linux at arm.linux.org.uk>
-Signed-off-by: Linus Walleij <linus.walleij at linaro.org>
-Reviewed-by: Jong-Sung Kim <neidhard.kim at lge.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/tty/serial/amba-pl011.c | 15 +++++++++++----
- 1 file changed, 11 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c
-index 8e00926..dddc3f2 100644
---- a/drivers/tty/serial/amba-pl011.c
-+++ b/drivers/tty/serial/amba-pl011.c
-@@ -1380,6 +1380,10 @@ static int pl011_startup(struct uart_port *port)
-
- uap->port.uartclk = clk_get_rate(uap->clk);
-
-+ /* Clear pending error and receive interrupts */
-+ writew(UART011_OEIS | UART011_BEIS | UART011_PEIS | UART011_FEIS |
-+ UART011_RTIS | UART011_RXIS, uap->port.membase + UART011_ICR);
-+
- /*
- * Allocate the IRQ
- */
-@@ -1414,10 +1418,6 @@ static int pl011_startup(struct uart_port *port)
- cr = UART01x_CR_UARTEN | UART011_CR_RXE | UART011_CR_TXE;
- writew(cr, uap->port.membase + UART011_CR);
-
-- /* Clear pending error interrupts */
-- writew(UART011_OEIS | UART011_BEIS | UART011_PEIS | UART011_FEIS,
-- uap->port.membase + UART011_ICR);
--
- /*
- * initialise the old status of the modem signals
- */
-@@ -1432,6 +1432,9 @@ static int pl011_startup(struct uart_port *port)
- * as well.
- */
- spin_lock_irq(&uap->port.lock);
-+ /* Clear out any spuriously appearing RX interrupts */
-+ writew(UART011_RTIS | UART011_RXIS,
-+ uap->port.membase + UART011_ICR);
- uap->im = UART011_RTIM;
- if (!pl011_dma_rx_running(uap))
- uap->im |= UART011_RXIM;
-@@ -1916,6 +1919,10 @@ static int pl011_probe(struct amba_device *dev, const struct amba_id *id)
- goto unmap;
- }
-
-+ /* Ensure interrupts from this UART are masked and cleared */
-+ writew(0, uap->port.membase + UART011_IMSC);
-+ writew(0xffff, uap->port.membase + UART011_ICR);
-+
- uap->vendor = vendor;
- uap->lcrh_rx = vendor->lcrh_rx;
- uap->lcrh_tx = vendor->lcrh_tx;
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0042-serial-PL011-move-interrupt-clearing.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0042-serial-PL011-move-interrupt-clearing.patch
deleted file mode 100644
index 8ecc1bd..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0042-serial-PL011-move-interrupt-clearing.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From 39f2e7d1ec34222f7e7262c87425b18964d16b25 Mon Sep 17 00:00:00 2001
-From: Linus Walleij <linus.walleij at linaro.org>
-Date: Wed, 21 Mar 2012 20:15:18 +0100
-Subject: [PATCH 42/68] serial: PL011: move interrupt clearing
-
-commit c3d8b76f61586714cdc5f219ba45592a54caaa55 upstream.
-
-Commit 360f748b204275229f8398cb2f9f53955db1503b
-"serial: PL011: clear pending interrupts"
-attempts to clear interrupts by writing to a
-yet-unassigned memory address. This fixes the issue.
-
-The breaking patch is marked for stable so should be
-carried along with the other patch.
-
-Cc: Shreshtha Kumar Sahu <shreshthakumar.sahu at stericsson.com>
-Cc: Russell King <linux at arm.linux.org.uk>
-Cc: Nicolas Pitre <nico at fluxnic.net>
-Reported-by: Viresh Kumar <viresh.kumar at st.com>
-Signed-off-by: Linus Walleij <linus.walleij at linaro.org>
-Tested-by: Grant Likely <grant.likely at secretlab.ca>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/tty/serial/amba-pl011.c | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c
-index dddc3f2..6da8cf8 100644
---- a/drivers/tty/serial/amba-pl011.c
-+++ b/drivers/tty/serial/amba-pl011.c
-@@ -1919,10 +1919,6 @@ static int pl011_probe(struct amba_device *dev, const struct amba_id *id)
- goto unmap;
- }
-
-- /* Ensure interrupts from this UART are masked and cleared */
-- writew(0, uap->port.membase + UART011_IMSC);
-- writew(0xffff, uap->port.membase + UART011_ICR);
--
- uap->vendor = vendor;
- uap->lcrh_rx = vendor->lcrh_rx;
- uap->lcrh_tx = vendor->lcrh_tx;
-@@ -1939,6 +1935,10 @@ static int pl011_probe(struct amba_device *dev, const struct amba_id *id)
- uap->port.line = i;
- pl011_dma_probe(uap);
-
-+ /* Ensure interrupts from this UART are masked and cleared */
-+ writew(0, uap->port.membase + UART011_IMSC);
-+ writew(0xffff, uap->port.membase + UART011_ICR);
-+
- snprintf(uap->type, sizeof(uap->type), "PL011 rev%u", amba_rev(dev));
-
- amba_ports[i] = uap;
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0043-fcaps-clear-the-same-personality-flags-as-suid-when-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0043-fcaps-clear-the-same-personality-flags-as-suid-when-.patch
deleted file mode 100644
index 3901682..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0043-fcaps-clear-the-same-personality-flags-as-suid-when-.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 131deceebcd7239f193e6f9fef1fe30df267e1c4 Mon Sep 17 00:00:00 2001
-From: Eric Paris <eparis at redhat.com>
-Date: Tue, 17 Apr 2012 16:26:54 -0400
-Subject: [PATCH 43/68] fcaps: clear the same personality flags as suid when
- fcaps are used
-
-commit d52fc5dde171f030170a6cb78034d166b13c9445 upstream.
-
-If a process increases permissions using fcaps all of the dangerous
-personality flags which are cleared for suid apps should also be cleared.
-Thus programs given priviledge with fcaps will continue to have address space
-randomization enabled even if the parent tried to disable it to make it
-easier to attack.
-
-Signed-off-by: Eric Paris <eparis at redhat.com>
-Reviewed-by: Serge Hallyn <serge.hallyn at canonical.com>
-Signed-off-by: James Morris <james.l.morris at oracle.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- security/commoncap.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/security/commoncap.c b/security/commoncap.c
-index ee4f848..0aee106 100644
---- a/security/commoncap.c
-+++ b/security/commoncap.c
-@@ -514,6 +514,11 @@ int cap_bprm_set_creds(struct linux_binprm *bprm)
- }
- skip:
-
-+ /* if we have fs caps, clear dangerous personality flags */
-+ if (!cap_issubset(new->cap_permitted, old->cap_permitted))
-+ bprm->per_clear |= PER_CLEAR_ON_SETID;
-+
-+
- /* Don't let someone trace a set[ug]id/setpcap binary with the revised
- * credentials unless they have the appropriate permit
- */
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0044-ath9k-fix-max-noise-floor-threshold.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0044-ath9k-fix-max-noise-floor-threshold.patch
deleted file mode 100644
index 2fde047..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0044-ath9k-fix-max-noise-floor-threshold.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From dd47cb2da9c6045068d6677d27b4a8acffa9d1a6 Mon Sep 17 00:00:00 2001
-From: Rajkumar Manoharan <rmanohar at qca.qualcomm.com>
-Date: Thu, 15 Mar 2012 06:08:04 +0530
-Subject: [PATCH 44/68] ath9k: fix max noise floor threshold
-
-commit 2ee0a07028d2cde6e131b73f029dae2b93c50f3a upstream.
-
-Currently the maximum noise floor limit is set as too high (-60dB). The
-assumption of having a higher threshold limit is that it would help
-de-sensitize the receiver (reduce phy errors) from continuous
-interference. But when we have a bursty interference where there are
-collisions and then free air time and if the receiver is desensitized too
-much, it will miss the normal packets too. Lets make use of chips
-specific min, nom and max limits always. This patch helps to improve the
-connection stability in congested networks.
-
-Cc: Paul Stewart <pstew at google.com>
-Tested-by: Gary Morain <gmorain at google.com>
-Signed-off-by: Madhan Jaganathan <madhanj at qca.qualcomm.com>
-Signed-off-by: Rajkumar Manoharan <rmanohar at qca.qualcomm.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-[bwh: Backported to 3.0/3.2: adjust context]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/net/wireless/ath/ath9k/calib.c | 5 ++---
- 1 file changed, 2 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/net/wireless/ath/ath9k/calib.c b/drivers/net/wireless/ath/ath9k/calib.c
-index 8ddef3e..d771de5 100644
---- a/drivers/net/wireless/ath/ath9k/calib.c
-+++ b/drivers/net/wireless/ath/ath9k/calib.c
-@@ -20,7 +20,6 @@
-
- /* Common calibration code */
-
--#define ATH9K_NF_TOO_HIGH -60
-
- static int16_t ath9k_hw_get_nf_hist_mid(int16_t *nfCalBuffer)
- {
-@@ -348,10 +347,10 @@ static void ath9k_hw_nf_sanitize(struct ath_hw *ah, s16 *nf)
- "NF calibrated [%s] [chain %d] is %d\n",
- (i >= 3 ? "ext" : "ctl"), i % 3, nf[i]);
-
-- if (nf[i] > ATH9K_NF_TOO_HIGH) {
-+ if (nf[i] > limit->max) {
- ath_dbg(common, ATH_DBG_CALIBRATE,
- "NF[%d] (%d) > MAX (%d), correcting to MAX\n",
-- i, nf[i], ATH9K_NF_TOO_HIGH);
-+ i, nf[i], limit->max);
- nf[i] = limit->max;
- } else if (nf[i] < limit->min) {
- ath_dbg(common, ATH_DBG_CALIBRATE,
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0045-xhci-Fix-register-save-restore-order.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0045-xhci-Fix-register-save-restore-order.patch
deleted file mode 100644
index b7de663..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0045-xhci-Fix-register-save-restore-order.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From 5d1eb145d8bd522d7e6fbbd0ee566417535f5291 Mon Sep 17 00:00:00 2001
-From: Sarah Sharp <sarah.a.sharp at linux.intel.com>
-Date: Fri, 16 Mar 2012 13:19:35 -0700
-Subject: [PATCH 45/68] xhci: Fix register save/restore order.
-
-commit c7713e736526d8c9f6f87716fb90562a8ffaff2c upstream.
-
-The xHCI 1.0 spec errata released on June 13, 2011, changes the ordering
-that the xHCI registers are saved and restored in. It moves the
-interrupt pending (IMAN) and interrupt control (IMOD) registers to be
-saved and restored last. I believe that's because the host controller
-may attempt to fetch the event ring table when interrupts are
-re-enabled. Therefore we need to restore the event ring registers
-before we re-enable interrupts.
-
-This should be backported to kernels as old as 2.6.37, that contain the
-commit 5535b1d5f8885695c6ded783c692e3c0d0eda8ca "USB: xHCI: PCI power
-management implementation"
-
-Signed-off-by: Sarah Sharp <sarah.a.sharp at linux.intel.com>
-Tested-by: Elric Fu <elricfu1 at gmail.com>
-Cc: Andiry Xu <andiry.xu at amd.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/host/xhci.c | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
-index 4d44713..4c00606 100644
---- a/drivers/usb/host/xhci.c
-+++ b/drivers/usb/host/xhci.c
-@@ -664,11 +664,11 @@ static void xhci_save_registers(struct xhci_hcd *xhci)
- xhci->s3.dev_nt = xhci_readl(xhci, &xhci->op_regs->dev_notification);
- xhci->s3.dcbaa_ptr = xhci_read_64(xhci, &xhci->op_regs->dcbaa_ptr);
- xhci->s3.config_reg = xhci_readl(xhci, &xhci->op_regs->config_reg);
-- xhci->s3.irq_pending = xhci_readl(xhci, &xhci->ir_set->irq_pending);
-- xhci->s3.irq_control = xhci_readl(xhci, &xhci->ir_set->irq_control);
- xhci->s3.erst_size = xhci_readl(xhci, &xhci->ir_set->erst_size);
- xhci->s3.erst_base = xhci_read_64(xhci, &xhci->ir_set->erst_base);
- xhci->s3.erst_dequeue = xhci_read_64(xhci, &xhci->ir_set->erst_dequeue);
-+ xhci->s3.irq_pending = xhci_readl(xhci, &xhci->ir_set->irq_pending);
-+ xhci->s3.irq_control = xhci_readl(xhci, &xhci->ir_set->irq_control);
- }
-
- static void xhci_restore_registers(struct xhci_hcd *xhci)
-@@ -677,11 +677,11 @@ static void xhci_restore_registers(struct xhci_hcd *xhci)
- xhci_writel(xhci, xhci->s3.dev_nt, &xhci->op_regs->dev_notification);
- xhci_write_64(xhci, xhci->s3.dcbaa_ptr, &xhci->op_regs->dcbaa_ptr);
- xhci_writel(xhci, xhci->s3.config_reg, &xhci->op_regs->config_reg);
-- xhci_writel(xhci, xhci->s3.irq_pending, &xhci->ir_set->irq_pending);
-- xhci_writel(xhci, xhci->s3.irq_control, &xhci->ir_set->irq_control);
- xhci_writel(xhci, xhci->s3.erst_size, &xhci->ir_set->erst_size);
- xhci_write_64(xhci, xhci->s3.erst_base, &xhci->ir_set->erst_base);
- xhci_write_64(xhci, xhci->s3.erst_dequeue, &xhci->ir_set->erst_dequeue);
-+ xhci_writel(xhci, xhci->s3.irq_pending, &xhci->ir_set->irq_pending);
-+ xhci_writel(xhci, xhci->s3.irq_control, &xhci->ir_set->irq_control);
- }
-
- static void xhci_set_cmd_ring_deq(struct xhci_hcd *xhci)
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0046-Bluetooth-hci_core-fix-NULL-pointer-dereference-at-u.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0046-Bluetooth-hci_core-fix-NULL-pointer-dereference-at-u.patch
deleted file mode 100644
index 5d271e9..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0046-Bluetooth-hci_core-fix-NULL-pointer-dereference-at-u.patch
+++ /dev/null
@@ -1,133 +0,0 @@
-From 5cfa510424e3901b81a0dd9579d078b56f5bca05 Mon Sep 17 00:00:00 2001
-From: Johan Hovold <jhovold at gmail.com>
-Date: Thu, 15 Mar 2012 14:48:41 +0100
-Subject: [PATCH 46/68] Bluetooth: hci_core: fix NULL-pointer dereference at
- unregister
-
-commit 94324962066231a938564bebad0f941cd2d06bb2 upstream.
-
-Make sure hci_dev_open returns immediately if hci_dev_unregister has
-been called.
-
-This fixes a race between hci_dev_open and hci_dev_unregister which can
-lead to a NULL-pointer dereference.
-
-Bug is 100% reproducible using hciattach and a disconnected serial port:
-
-0. # hciattach -n /dev/ttyO1 any noflow
-
-1. hci_dev_open called from hci_power_on grabs req lock
-2. hci_init_req executes but device fails to initialise (times out
- eventually)
-3. hci_dev_open is called from hci_sock_ioctl and sleeps on req lock
-4. hci_uart_tty_close calls hci_dev_unregister and sleeps on req lock in
- hci_dev_do_close
-5. hci_dev_open (1) releases req lock
-6. hci_dev_do_close grabs req lock and returns as device is not up
-7. hci_dev_unregister sleeps in destroy_workqueue
-8. hci_dev_open (3) grabs req lock, calls hci_init_req and eventually sleeps
-9. hci_dev_unregister finishes, while hci_dev_open is still running...
-
-[ 79.627136] INFO: trying to register non-static key.
-[ 79.632354] the code is fine but needs lockdep annotation.
-[ 79.638122] turning off the locking correctness validator.
-[ 79.643920] [<c00188bc>] (unwind_backtrace+0x0/0xf8) from [<c00729c4>] (__lock_acquire+0x1590/0x1ab0)
-[ 79.653594] [<c00729c4>] (__lock_acquire+0x1590/0x1ab0) from [<c00733f8>] (lock_acquire+0x9c/0x128)
-[ 79.663085] [<c00733f8>] (lock_acquire+0x9c/0x128) from [<c0040a88>] (run_timer_softirq+0x150/0x3ac)
-[ 79.672668] [<c0040a88>] (run_timer_softirq+0x150/0x3ac) from [<c003a3b8>] (__do_softirq+0xd4/0x22c)
-[ 79.682281] [<c003a3b8>] (__do_softirq+0xd4/0x22c) from [<c003a924>] (irq_exit+0x8c/0x94)
-[ 79.690856] [<c003a924>] (irq_exit+0x8c/0x94) from [<c0013a50>] (handle_IRQ+0x34/0x84)
-[ 79.699157] [<c0013a50>] (handle_IRQ+0x34/0x84) from [<c0008530>] (omap3_intc_handle_irq+0x48/0x4c)
-[ 79.708648] [<c0008530>] (omap3_intc_handle_irq+0x48/0x4c) from [<c037499c>] (__irq_usr+0x3c/0x60)
-[ 79.718048] Exception stack(0xcf281fb0 to 0xcf281ff8)
-[ 79.723358] 1fa0: 0001e6a0 be8dab00 0001e698 00036698
-[ 79.731933] 1fc0: 0002df98 0002df38 0000001f 00000000 b6f234d0 00000000 00000004 00000000
-[ 79.740509] 1fe0: 0001e6f8 be8d6aa0 be8dac50 0000aab8 80000010 ffffffff
-[ 79.747497] Unable to handle kernel NULL pointer dereference at virtual address 00000000
-[ 79.756011] pgd = cf3b4000
-[ 79.758850] [00000000] *pgd=8f0c7831, *pte=00000000, *ppte=00000000
-[ 79.765502] Internal error: Oops: 80000007 [#1]
-[ 79.770294] Modules linked in:
-[ 79.773529] CPU: 0 Tainted: G W (3.3.0-rc6-00002-gb5d5c87 #421)
-[ 79.781066] PC is at 0x0
-[ 79.783721] LR is at run_timer_softirq+0x16c/0x3ac
-[ 79.788787] pc : [<00000000>] lr : [<c0040aa4>] psr: 60000113
-[ 79.788787] sp : cf281ee0 ip : 00000000 fp : cf280000
-[ 79.800903] r10: 00000004 r9 : 00000100 r8 : b6f234d0
-[ 79.806427] r7 : c0519c28 r6 : cf093488 r5 : c0561a00 r4 : 00000000
-[ 79.813323] r3 : 00000000 r2 : c054eee0 r1 : 00000001 r0 : 00000000
-[ 79.820190] Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment user
-[ 79.827728] Control: 10c5387d Table: 8f3b4019 DAC: 00000015
-[ 79.833801] Process gpsd (pid: 1265, stack limit = 0xcf2802e8)
-[ 79.839965] Stack: (0xcf281ee0 to 0xcf282000)
-[ 79.844573] 1ee0: 00000002 00000000 c0040a24 00000000 00000002 cf281f08 00200200 00000000
-[ 79.853210] 1f00: 00000000 cf281f18 cf281f08 00000000 00000000 00000000 cf281f18 cf281f18
-[ 79.861816] 1f20: 00000000 00000001 c056184c 00000000 00000001 b6f234d0 c0561848 00000004
-[ 79.870452] 1f40: cf280000 c003a3b8 c051e79c 00000001 00000000 00000100 3fa9e7b8 0000000a
-[ 79.879089] 1f60: 00000025 cf280000 00000025 00000000 00000000 b6f234d0 00000000 00000004
-[ 79.887756] 1f80: 00000000 c003a924 c053ad38 c0013a50 fa200000 cf281fb0 ffffffff c0008530
-[ 79.896362] 1fa0: 0001e6a0 0000aab8 80000010 c037499c 0001e6a0 be8dab00 0001e698 00036698
-[ 79.904998] 1fc0: 0002df98 0002df38 0000001f 00000000 b6f234d0 00000000 00000004 00000000
-[ 79.913665] 1fe0: 0001e6f8 be8d6aa0 be8dac50 0000aab8 80000010 ffffffff 00fbf700 04ffff00
-[ 79.922302] [<c0040aa4>] (run_timer_softirq+0x16c/0x3ac) from [<c003a3b8>] (__do_softirq+0xd4/0x22c)
-[ 79.931945] [<c003a3b8>] (__do_softirq+0xd4/0x22c) from [<c003a924>] (irq_exit+0x8c/0x94)
-[ 79.940582] [<c003a924>] (irq_exit+0x8c/0x94) from [<c0013a50>] (handle_IRQ+0x34/0x84)
-[ 79.948913] [<c0013a50>] (handle_IRQ+0x34/0x84) from [<c0008530>] (omap3_intc_handle_irq+0x48/0x4c)
-[ 79.958404] [<c0008530>] (omap3_intc_handle_irq+0x48/0x4c) from [<c037499c>] (__irq_usr+0x3c/0x60)
-[ 79.967773] Exception stack(0xcf281fb0 to 0xcf281ff8)
-[ 79.973083] 1fa0: 0001e6a0 be8dab00 0001e698 00036698
-[ 79.981658] 1fc0: 0002df98 0002df38 0000001f 00000000 b6f234d0 00000000 00000004 00000000
-[ 79.990234] 1fe0: 0001e6f8 be8d6aa0 be8dac50 0000aab8 80000010 ffffffff
-[ 79.997161] Code: bad PC value
-[ 80.000396] ---[ end trace 6f6739840475f9ee ]---
-[ 80.005279] Kernel panic - not syncing: Fatal exception in interrupt
-
-Signed-off-by: Johan Hovold <jhovold at gmail.com>
-Acked-by: Marcel Holtmann <marcel at holtmann.org>
-Signed-off-by: Johan Hedberg <johan.hedberg at intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- include/net/bluetooth/hci.h | 1 +
- net/bluetooth/hci_core.c | 7 +++++++
- 2 files changed, 8 insertions(+)
-
-diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h
-index aaf79af..a7e13bf 100644
---- a/include/net/bluetooth/hci.h
-+++ b/include/net/bluetooth/hci.h
-@@ -84,6 +84,7 @@ enum {
- HCI_SERVICE_CACHE,
- HCI_LINK_KEYS,
- HCI_DEBUG_KEYS,
-+ HCI_UNREGISTER,
-
- HCI_RESET,
- };
-diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c
-index b84458d..857dc88 100644
---- a/net/bluetooth/hci_core.c
-+++ b/net/bluetooth/hci_core.c
-@@ -510,6 +510,11 @@ int hci_dev_open(__u16 dev)
-
- hci_req_lock(hdev);
-
-+ if (test_bit(HCI_UNREGISTER, &hdev->flags)) {
-+ ret = -ENODEV;
-+ goto done;
-+ }
-+
- if (hdev->rfkill && rfkill_blocked(hdev->rfkill)) {
- ret = -ERFKILL;
- goto done;
-@@ -1540,6 +1545,8 @@ int hci_unregister_dev(struct hci_dev *hdev)
-
- BT_DBG("%p name %s bus %d", hdev, hdev->name, hdev->bus);
-
-+ set_bit(HCI_UNREGISTER, &hdev->flags);
-+
- write_lock_bh(&hci_dev_list_lock);
- list_del(&hdev->list);
- write_unlock_bh(&hci_dev_list_lock);
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0047-pch_gpio-Support-new-device-LAPIS-Semiconductor-ML78.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0047-pch_gpio-Support-new-device-LAPIS-Semiconductor-ML78.patch
deleted file mode 100644
index 68cfa64..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0047-pch_gpio-Support-new-device-LAPIS-Semiconductor-ML78.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From d1d630c1d03f1b6c860fb0f7019aad8df08f4511 Mon Sep 17 00:00:00 2001
-From: Tomoya MORINAGA <tomoya-linux at dsn.lapis-semi.com>
-Date: Fri, 28 Oct 2011 09:23:32 +0900
-Subject: [PATCH 47/68] pch_gpio: Support new device LAPIS Semiconductor
- ML7831 IOH
-
-commit 868fea0507308b6548bba7debe5f5c2d5ca47fca upstream.
-
-ML7831 is companion chip for Intel Atom E6xx series.
-
-Signed-off-by: Tomoya MORINAGA <tomoya-linux at dsn.lapis-semi.com>
-Signed-off-by: Grant Likely <grant.likely at secretlab.ca>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/gpio/Kconfig | 11 ++++++-----
- drivers/gpio/gpio-pch.c | 1 +
- 2 files changed, 7 insertions(+), 5 deletions(-)
-
-diff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig
-index 8482a23..4e04157 100644
---- a/drivers/gpio/Kconfig
-+++ b/drivers/gpio/Kconfig
-@@ -387,7 +387,7 @@ config GPIO_LANGWELL
- Say Y here to support Intel Langwell/Penwell GPIO.
-
- config GPIO_PCH
-- tristate "Intel EG20T PCH / OKI SEMICONDUCTOR ML7223 IOH GPIO"
-+ tristate "Intel EG20T PCH/LAPIS Semiconductor IOH(ML7223/ML7831) GPIO"
- depends on PCI && X86
- select GENERIC_IRQ_CHIP
- help
-@@ -395,11 +395,12 @@ config GPIO_PCH
- which is an IOH(Input/Output Hub) for x86 embedded processor.
- This driver can access PCH GPIO device.
-
-- This driver also can be used for OKI SEMICONDUCTOR IOH(Input/
-- Output Hub), ML7223.
-+ This driver also can be used for LAPIS Semiconductor IOH(Input/
-+ Output Hub), ML7223 and ML7831.
- ML7223 IOH is for MP(Media Phone) use.
-- ML7223 is companion chip for Intel Atom E6xx series.
-- ML7223 is completely compatible for Intel EG20T PCH.
-+ ML7831 IOH is for general purpose use.
-+ ML7223/ML7831 is companion chip for Intel Atom E6xx series.
-+ ML7223/ML7831 is completely compatible for Intel EG20T PCH.
-
- config GPIO_ML_IOH
- tristate "OKI SEMICONDUCTOR ML7213 IOH GPIO support"
-diff --git a/drivers/gpio/gpio-pch.c b/drivers/gpio/gpio-pch.c
-index a6008e1..eb574f2 100644
---- a/drivers/gpio/gpio-pch.c
-+++ b/drivers/gpio/gpio-pch.c
-@@ -524,6 +524,7 @@ static DEFINE_PCI_DEVICE_TABLE(pch_gpio_pcidev_id) = {
- { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x8803) },
- { PCI_DEVICE(PCI_VENDOR_ID_ROHM, 0x8014) },
- { PCI_DEVICE(PCI_VENDOR_ID_ROHM, 0x8043) },
-+ { PCI_DEVICE(PCI_VENDOR_ID_ROHM, 0x8803) },
- { 0, }
- };
- MODULE_DEVICE_TABLE(pci, pch_gpio_pcidev_id);
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0048-gpio-Add-missing-spin_lock_init-in-gpio-pch-driver.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0048-gpio-Add-missing-spin_lock_init-in-gpio-pch-driver.patch
deleted file mode 100644
index f3d980f..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0048-gpio-Add-missing-spin_lock_init-in-gpio-pch-driver.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From d318ceeea315d2005b914345b86e62c43a6f37b8 Mon Sep 17 00:00:00 2001
-From: Axel Lin <axel.lin at gmail.com>
-Date: Wed, 1 Feb 2012 10:51:53 +0800
-Subject: [PATCH 48/68] gpio: Add missing spin_lock_init in gpio-pch driver
-
-commit d166370ad86b33b1111af3a0cdd7de94e03789a6 upstream.
-
-This bug was introduced by commit d568a681
-"gpio-pch: add spinlock in suspend/resume processing"
-which adds a spinlock to struct pch_gpio but never init the spinlock.
-
-Reported-by: Tomoya MORINAGA <tomoya.rohm at gmail.com>
-Signed-off-by: Axel Lin <axel.lin at gmail.com>
-Acked-by: Linus Walleij <linus.walleij at linaro.org>
-Signed-off-by: Grant Likely <grant.likely at secretlab.ca>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/gpio/gpio-pch.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/gpio/gpio-pch.c b/drivers/gpio/gpio-pch.c
-index eb574f2..779ff70 100644
---- a/drivers/gpio/gpio-pch.c
-+++ b/drivers/gpio/gpio-pch.c
-@@ -392,6 +392,7 @@ static int __devinit pch_gpio_probe(struct pci_dev *pdev,
- chip->reg = chip->base;
- pci_set_drvdata(pdev, chip);
- mutex_init(&chip->lock);
-+ spin_lock_init(&chip->spinlock);
- pch_gpio_setup(chip);
- ret = gpiochip_add(&chip->gpio);
- if (ret) {
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0049-usb-gadget-pch_udc-Fix-disconnect-issue.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0049-usb-gadget-pch_udc-Fix-disconnect-issue.patch
deleted file mode 100644
index a594419..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0049-usb-gadget-pch_udc-Fix-disconnect-issue.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 71f57b2818d96219c94e582efd23fc0d16186424 Mon Sep 17 00:00:00 2001
-From: Tomoya MORINAGA <tomoya.rohm at gmail.com>
-Date: Thu, 12 Jan 2012 11:27:05 +0900
-Subject: [PATCH 49/68] usb: gadget: pch_udc: Fix disconnect issue
-
-commit c50a3bff0edb0acd49d8033a12ea4668e09a31ad upstream.
-
-ISSUE:
-When the driver notifies a gadget of a disconnect event, a system
-rarely freezes.
-
-CAUSE:
-When the driver calls dev->driver->disconnect(), it is not calling
-spin_unlock().
-
-Signed-off-by: Tomoya MORINAGA <tomoya.rohm at gmail.com>
-Signed-off-by: Felipe Balbi <balbi at ti.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/gadget/pch_udc.c | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/usb/gadget/pch_udc.c b/drivers/usb/gadget/pch_udc.c
-index dd2313c..521e995 100644
---- a/drivers/usb/gadget/pch_udc.c
-+++ b/drivers/usb/gadget/pch_udc.c
-@@ -2335,8 +2335,11 @@ static void pch_udc_svc_ur_interrupt(struct pch_udc_dev *dev)
- /* Complete request queue */
- empty_req_queue(ep);
- }
-- if (dev->driver && dev->driver->disconnect)
-+ if (dev->driver && dev->driver->disconnect) {
-+ spin_unlock(&dev->lock);
- dev->driver->disconnect(&dev->gadget);
-+ spin_lock(&dev->lock);
-+ }
- }
-
- /**
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0050-usb-gadget-pch_udc-Fix-wrong-return-value.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0050-usb-gadget-pch_udc-Fix-wrong-return-value.patch
deleted file mode 100644
index 7f86508..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0050-usb-gadget-pch_udc-Fix-wrong-return-value.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From f081bd91f871a44ac4bf6035aaacfd666024b30a Mon Sep 17 00:00:00 2001
-From: Tomoya MORINAGA <tomoya.rohm at gmail.com>
-Date: Thu, 12 Jan 2012 11:27:06 +0900
-Subject: [PATCH 50/68] usb: gadget: pch_udc: Fix wrong return value
-
-commit c802672cd36cd063bfd54d54c8c34825ab5b2357 upstream.
-
-ISSUE:
-If the return value of pch_udc_pcd_init() is False, the return value of
-this function is unsettled.
-Since pch_udc_pcd_init() always returns 0, there is not actually the issue.
-
-CAUSE:
-If pch_udc_pcd_init() is True, the variable, retval, is not set for an
-appropriate value.
-
-Signed-off-by: Tomoya MORINAGA <tomoya.rohm at gmail.com>
-Signed-off-by: Felipe Balbi <balbi at ti.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/gadget/pch_udc.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/usb/gadget/pch_udc.c b/drivers/usb/gadget/pch_udc.c
-index 521e995..a9a7d8a 100644
---- a/drivers/usb/gadget/pch_udc.c
-+++ b/drivers/usb/gadget/pch_udc.c
-@@ -2915,8 +2915,10 @@ static int pch_udc_probe(struct pci_dev *pdev,
- }
- pch_udc = dev;
- /* initialize the hardware */
-- if (pch_udc_pcd_init(dev))
-+ if (pch_udc_pcd_init(dev)) {
-+ retval = -ENODEV;
- goto finished;
-+ }
- if (request_irq(pdev->irq, pch_udc_isr, IRQF_SHARED, KBUILD_MODNAME,
- dev)) {
- dev_err(&pdev->dev, "%s: request_irq(%d) fail\n", __func__,
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0051-usb-gadget-pch_udc-Fix-USB-suspend-issue.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0051-usb-gadget-pch_udc-Fix-USB-suspend-issue.patch
deleted file mode 100644
index 52ae325..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0051-usb-gadget-pch_udc-Fix-USB-suspend-issue.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From d99b719a9a857340a246bfd51b329ba5bc09a7ea Mon Sep 17 00:00:00 2001
-From: Tomoya MORINAGA <tomoya.rohm at gmail.com>
-Date: Thu, 12 Jan 2012 11:27:07 +0900
-Subject: [PATCH 51/68] usb: gadget: pch_udc: Fix USB suspend issue
-
-commit 84566abba058b2aae8d603dfa90b5a3778a6714f upstream.
-
-ISSUE:
-After USB Suspend, a system rarely freezes.
-
-CAUSE:
-When USB Suspend occurred, the driver is not notifying
-a gadget of the event.
-
-Signed-off-by: Tomoya MORINAGA <tomoya.rohm at gmail.com>
-Signed-off-by: Felipe Balbi <balbi at ti.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/gadget/pch_udc.c | 9 ++++++++-
- 1 file changed, 8 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/usb/gadget/pch_udc.c b/drivers/usb/gadget/pch_udc.c
-index a9a7d8a..3ab799c 100644
---- a/drivers/usb/gadget/pch_udc.c
-+++ b/drivers/usb/gadget/pch_udc.c
-@@ -2475,8 +2475,15 @@ static void pch_udc_dev_isr(struct pch_udc_dev *dev, u32 dev_intr)
- if (dev_intr & UDC_DEVINT_SC)
- pch_udc_svc_cfg_interrupt(dev);
- /* USB Suspend interrupt */
-- if (dev_intr & UDC_DEVINT_US)
-+ if (dev_intr & UDC_DEVINT_US) {
-+ if (dev->driver
-+ && dev->driver->suspend) {
-+ spin_unlock(&dev->lock);
-+ dev->driver->suspend(&dev->gadget);
-+ spin_lock(&dev->lock);
-+ }
- dev_dbg(&dev->pdev->dev, "USB_SUSPEND\n");
-+ }
- /* Clear the SOF interrupt, if enabled */
- if (dev_intr & UDC_DEVINT_SOF)
- dev_dbg(&dev->pdev->dev, "SOF\n");
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0052-usb-gadget-pch_udc-Fix-usb-gadget-pch_udc-Fix-ether-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0052-usb-gadget-pch_udc-Fix-usb-gadget-pch_udc-Fix-ether-.patch
deleted file mode 100644
index 061b331..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0052-usb-gadget-pch_udc-Fix-usb-gadget-pch_udc-Fix-ether-.patch
+++ /dev/null
@@ -1,153 +0,0 @@
-From f6fb5ed067a0dc147a7ffe713ad3cffbcf7733b9 Mon Sep 17 00:00:00 2001
-From: Tomoya MORINAGA <tomoya.rohm at gmail.com>
-Date: Thu, 12 Jan 2012 11:27:08 +0900
-Subject: [PATCH 52/68] usb: gadget: pch_udc: Fix usb/gadget/pch_udc: Fix
- ether gadget connect/disconnect issue
-
-commit 1c575d2d2e3ff2a7cb3c2e2165064199cfd8ad32 upstream.
-
-ISSUE:
-After a USB cable is connect/disconnected, the system rarely freezes.
-
-CAUSE:
-Since the USB device controller cannot know to disconnect the USB cable, when
-it is used without detecting VBUS by GPIO, the UDC driver does not notify to
-USB Gadget.
-
-Since USB Gadget cannot know to disconnect, a false setting occurred when the
-USB cable is connected/disconnect repeatedly.
-
-Signed-off-by: Tomoya MORINAGA <tomoya.rohm at gmail.com>
-Signed-off-by: Felipe Balbi <balbi at ti.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/gadget/pch_udc.c | 70 +++++++++++++++++++++++++++++++++++++++---
- 1 file changed, 66 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/usb/gadget/pch_udc.c b/drivers/usb/gadget/pch_udc.c
-index 3ab799c..f232e65 100644
---- a/drivers/usb/gadget/pch_udc.c
-+++ b/drivers/usb/gadget/pch_udc.c
-@@ -311,6 +311,7 @@ struct pch_udc_ep {
- * @registered: driver regsitered with system
- * @suspended: driver in suspended state
- * @connected: gadget driver associated
-+ * @vbus_session: required vbus_session state
- * @set_cfg_not_acked: pending acknowledgement 4 setup
- * @waiting_zlp_ack: pending acknowledgement 4 ZLP
- * @data_requests: DMA pool for data requests
-@@ -337,6 +338,7 @@ struct pch_udc_dev {
- registered:1,
- suspended:1,
- connected:1,
-+ vbus_session:1,
- set_cfg_not_acked:1,
- waiting_zlp_ack:1;
- struct pci_pool *data_requests;
-@@ -554,6 +556,31 @@ static void pch_udc_clear_disconnect(struct pch_udc_dev *dev)
- }
-
- /**
-+ * pch_udc_reconnect() - This API initializes usb device controller,
-+ * and clear the disconnect status.
-+ * @dev: Reference to pch_udc_regs structure
-+ */
-+static void pch_udc_init(struct pch_udc_dev *dev);
-+static void pch_udc_reconnect(struct pch_udc_dev *dev)
-+{
-+ pch_udc_init(dev);
-+
-+ /* enable device interrupts */
-+ /* pch_udc_enable_interrupts() */
-+ pch_udc_bit_clr(dev, UDC_DEVIRQMSK_ADDR,
-+ UDC_DEVINT_UR | UDC_DEVINT_US |
-+ UDC_DEVINT_ENUM |
-+ UDC_DEVINT_SI | UDC_DEVINT_SC);
-+
-+ /* Clear the disconnect */
-+ pch_udc_bit_set(dev, UDC_DEVCTL_ADDR, UDC_DEVCTL_RES);
-+ pch_udc_bit_clr(dev, UDC_DEVCTL_ADDR, UDC_DEVCTL_SD);
-+ mdelay(1);
-+ /* Resume USB signalling */
-+ pch_udc_bit_clr(dev, UDC_DEVCTL_ADDR, UDC_DEVCTL_RES);
-+}
-+
-+/**
- * pch_udc_vbus_session() - set or clearr the disconnect status.
- * @dev: Reference to pch_udc_regs structure
- * @is_active: Parameter specifying the action
-@@ -563,10 +590,18 @@ static void pch_udc_clear_disconnect(struct pch_udc_dev *dev)
- static inline void pch_udc_vbus_session(struct pch_udc_dev *dev,
- int is_active)
- {
-- if (is_active)
-- pch_udc_clear_disconnect(dev);
-- else
-+ if (is_active) {
-+ pch_udc_reconnect(dev);
-+ dev->vbus_session = 1;
-+ } else {
-+ if (dev->driver && dev->driver->disconnect) {
-+ spin_unlock(&dev->lock);
-+ dev->driver->disconnect(&dev->gadget);
-+ spin_lock(&dev->lock);
-+ }
- pch_udc_set_disconnect(dev);
-+ dev->vbus_session = 0;
-+ }
- }
-
- /**
-@@ -1126,7 +1161,17 @@ static int pch_udc_pcd_pullup(struct usb_gadget *gadget, int is_on)
- if (!gadget)
- return -EINVAL;
- dev = container_of(gadget, struct pch_udc_dev, gadget);
-- pch_udc_vbus_session(dev, is_on);
-+ if (is_on) {
-+ pch_udc_reconnect(dev);
-+ } else {
-+ if (dev->driver && dev->driver->disconnect) {
-+ spin_unlock(&dev->lock);
-+ dev->driver->disconnect(&dev->gadget);
-+ spin_lock(&dev->lock);
-+ }
-+ pch_udc_set_disconnect(dev);
-+ }
-+
- return 0;
- }
-
-@@ -2482,6 +2527,15 @@ static void pch_udc_dev_isr(struct pch_udc_dev *dev, u32 dev_intr)
- dev->driver->suspend(&dev->gadget);
- spin_lock(&dev->lock);
- }
-+
-+ if (dev->vbus_session == 0) {
-+ if (dev->driver && dev->driver->disconnect) {
-+ spin_unlock(&dev->lock);
-+ dev->driver->disconnect(&dev->gadget);
-+ spin_lock(&dev->lock);
-+ }
-+ pch_udc_reconnect(dev);
-+ }
- dev_dbg(&dev->pdev->dev, "USB_SUSPEND\n");
- }
- /* Clear the SOF interrupt, if enabled */
-@@ -2509,6 +2563,14 @@ static irqreturn_t pch_udc_isr(int irq, void *pdev)
- dev_intr = pch_udc_read_device_interrupts(dev);
- ep_intr = pch_udc_read_ep_interrupts(dev);
-
-+ /* For a hot plug, this find that the controller is hung up. */
-+ if (dev_intr == ep_intr)
-+ if (dev_intr == pch_udc_readl(dev, UDC_DEVCFG_ADDR)) {
-+ dev_dbg(&dev->pdev->dev, "UDC: Hung up\n");
-+ /* The controller is reset */
-+ pch_udc_writel(dev, UDC_SRST, UDC_SRST_ADDR);
-+ return IRQ_HANDLED;
-+ }
- if (dev_intr)
- /* Clear device interrupts */
- pch_udc_write_device_interrupts(dev, dev_intr);
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0053-usb-gadget-pch_udc-Reduce-redundant-interrupt.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0053-usb-gadget-pch_udc-Reduce-redundant-interrupt.patch
deleted file mode 100644
index 681f166..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0053-usb-gadget-pch_udc-Reduce-redundant-interrupt.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From e7a01f05195272844be9a3e9abae0d18086cbc69 Mon Sep 17 00:00:00 2001
-From: Tomoya MORINAGA <tomoya.rohm at gmail.com>
-Date: Thu, 12 Jan 2012 11:27:09 +0900
-Subject: [PATCH 53/68] usb: gadget: pch_udc: Reduce redundant interrupt
-
-commit 833310402c54ad9b676b465fc53ad276b13d36be upstream.
-
-ISSUE:
-USB Suspend interrupts occur frequently.
-
-CAUSE:
-When it is called pch_udc_reconnect() in USB Suspend, it repeats reset and
-Suspend.
-
-SOLUTION:
-pch_udc_reconnect() does not enable all interrupts. When an enumeration event
-occurred the driver enables all interrupts.
-
-Signed-off-by: Tomoya MORINAGA <tomoya.rohm at gmail.com>
-Signed-off-by: Felipe Balbi <balbi at ti.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/gadget/pch_udc.c | 9 ++++++---
- 1 file changed, 6 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/usb/gadget/pch_udc.c b/drivers/usb/gadget/pch_udc.c
-index f232e65..870897ac 100644
---- a/drivers/usb/gadget/pch_udc.c
-+++ b/drivers/usb/gadget/pch_udc.c
-@@ -568,9 +568,7 @@ static void pch_udc_reconnect(struct pch_udc_dev *dev)
- /* enable device interrupts */
- /* pch_udc_enable_interrupts() */
- pch_udc_bit_clr(dev, UDC_DEVIRQMSK_ADDR,
-- UDC_DEVINT_UR | UDC_DEVINT_US |
-- UDC_DEVINT_ENUM |
-- UDC_DEVINT_SI | UDC_DEVINT_SC);
-+ UDC_DEVINT_UR | UDC_DEVINT_ENUM);
-
- /* Clear the disconnect */
- pch_udc_bit_set(dev, UDC_DEVCTL_ADDR, UDC_DEVCTL_RES);
-@@ -2419,6 +2417,11 @@ static void pch_udc_svc_enum_interrupt(struct pch_udc_dev *dev)
- pch_udc_set_dma(dev, DMA_DIR_TX);
- pch_udc_set_dma(dev, DMA_DIR_RX);
- pch_udc_ep_set_rrdy(&(dev->ep[UDC_EP0OUT_IDX]));
-+
-+ /* enable device interrupts */
-+ pch_udc_enable_interrupts(dev, UDC_DEVINT_UR | UDC_DEVINT_US |
-+ UDC_DEVINT_ES | UDC_DEVINT_ENUM |
-+ UDC_DEVINT_SI | UDC_DEVINT_SC);
- }
-
- /**
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0054-ACPICA-Fix-to-allow-region-arguments-to-reference-ot.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0054-ACPICA-Fix-to-allow-region-arguments-to-reference-ot.patch
deleted file mode 100644
index bcc8661..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0054-ACPICA-Fix-to-allow-region-arguments-to-reference-ot.patch
+++ /dev/null
@@ -1,82 +0,0 @@
-From 5326c71bbfb0de3fef65c9f702ffdb8589e8e6df Mon Sep 17 00:00:00 2001
-From: Lin Ming <ming.m.lin at intel.com>
-Date: Mon, 28 Nov 2011 09:46:02 +0800
-Subject: [PATCH 54/68] ACPICA: Fix to allow region arguments to reference
- other scopes
-
-commit 8931d9ea78848b073bf299594f148b83abde4a5e upstream.
-
-Allow referenced objects to be in a different scope.
-
-http://www.acpica.org/bugzilla/show_bug.cgi?id=937
-http://marc.info/?l=linux-acpi&m=131636632718222&w=2
-
-ACPI Error: [RAMB] Namespace lookup failure, AE_NOT_FOUND (20110112/psargs-359)
-ACPI Exception: AE_NOT_FOUND, Could not execute arguments for [RAMW] (Region) (20110112/nsinit-349)
-
- Scope (_SB)
- {
- Name (RAMB, 0xDF5A1018)
- OperationRegion (\RAMW, SystemMemory, RAMB, 0x00010000)
- }
-
-For above ASL code, we need to save scope node(\_SB) to lookup
-the argument node(\_SB.RAMB).
-
-Reported-by: Jim Green <student.northwestern at gmail.com>
-Signed-off-by: Lin Ming <ming.m.lin at intel.com>
-Signed-off-by: Bob Moore <robert.moore at intel.com>
-Signed-off-by: Len Brown <len.brown at intel.com>
-Cc: Herton Ronaldo Krzesinski <herton.krzesinski at canonical.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/acpi/acpica/acobject.h | 1 +
- drivers/acpi/acpica/dsargs.c | 2 +-
- drivers/acpi/acpica/excreate.c | 6 ++++++
- 3 files changed, 8 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/acpi/acpica/acobject.h b/drivers/acpi/acpica/acobject.h
-index 1055769..6d276c2 100644
---- a/drivers/acpi/acpica/acobject.h
-+++ b/drivers/acpi/acpica/acobject.h
-@@ -358,6 +358,7 @@ typedef enum {
- */
- struct acpi_object_extra {
- ACPI_OBJECT_COMMON_HEADER struct acpi_namespace_node *method_REG; /* _REG method for this region (if any) */
-+ struct acpi_namespace_node *scope_node;
- void *region_context; /* Region-specific data */
- u8 *aml_start;
- u32 aml_length;
-diff --git a/drivers/acpi/acpica/dsargs.c b/drivers/acpi/acpica/dsargs.c
-index 42163d8..d69e4a5 100644
---- a/drivers/acpi/acpica/dsargs.c
-+++ b/drivers/acpi/acpica/dsargs.c
-@@ -384,7 +384,7 @@ acpi_status acpi_ds_get_region_arguments(union acpi_operand_object *obj_desc)
-
- /* Execute the argument AML */
-
-- status = acpi_ds_execute_arguments(node, node->parent,
-+ status = acpi_ds_execute_arguments(node, extra_desc->extra.scope_node,
- extra_desc->extra.aml_length,
- extra_desc->extra.aml_start);
- if (ACPI_FAILURE(status)) {
-diff --git a/drivers/acpi/acpica/excreate.c b/drivers/acpi/acpica/excreate.c
-index 110711a..8a06dc5 100644
---- a/drivers/acpi/acpica/excreate.c
-+++ b/drivers/acpi/acpica/excreate.c
-@@ -330,6 +330,12 @@ acpi_ex_create_region(u8 * aml_start,
- region_obj2 = obj_desc->common.next_object;
- region_obj2->extra.aml_start = aml_start;
- region_obj2->extra.aml_length = aml_length;
-+ if (walk_state->scope_info) {
-+ region_obj2->extra.scope_node =
-+ walk_state->scope_info->scope.node;
-+ } else {
-+ region_obj2->extra.scope_node = node;
-+ }
-
- /* Init the region from the operands */
-
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0055-security-fix-compile-error-in-commoncap.c.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0055-security-fix-compile-error-in-commoncap.c.patch
deleted file mode 100644
index cc78b79..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0055-security-fix-compile-error-in-commoncap.c.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 1a4f70eea080bfa569723eb1c16ca46956cebd25 Mon Sep 17 00:00:00 2001
-From: Jonghwan Choi <jhbird.choi at samsung.com>
-Date: Wed, 18 Apr 2012 17:23:04 -0400
-Subject: [PATCH 55/68] security: fix compile error in commoncap.c
-
-commit 51b79bee627d526199b2f6a6bef8ee0c0739b6d1 upstream.
-
-Add missing "personality.h"
-security/commoncap.c: In function 'cap_bprm_set_creds':
-security/commoncap.c:510: error: 'PER_CLEAR_ON_SETID' undeclared (first use in this function)
-security/commoncap.c:510: error: (Each undeclared identifier is reported only once
-security/commoncap.c:510: error: for each function it appears in.)
-
-Signed-off-by: Jonghwan Choi <jhbird.choi at samsung.com>
-Acked-by: Serge Hallyn <serge.hallyn at canonical.com>
-Signed-off-by: James Morris <james.l.morris at oracle.com>
-Cc: Eric Paris <eparis at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- security/commoncap.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/security/commoncap.c b/security/commoncap.c
-index 0aee106..12440ee 100644
---- a/security/commoncap.c
-+++ b/security/commoncap.c
-@@ -28,6 +28,7 @@
- #include <linux/prctl.h>
- #include <linux/securebits.h>
- #include <linux/user_namespace.h>
-+#include <linux/personality.h>
-
- /*
- * If a non-root user executes a setuid-root binary in
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0056-pch_gbe-Do-not-abort-probe-on-bad-MAC.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0056-pch_gbe-Do-not-abort-probe-on-bad-MAC.patch
deleted file mode 100644
index 2759af4..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0056-pch_gbe-Do-not-abort-probe-on-bad-MAC.patch
+++ /dev/null
@@ -1,81 +0,0 @@
-From aebee39c4e129dbeccd9485f8375b7e59a4b7b26 Mon Sep 17 00:00:00 2001
-From: Darren Hart <dvhart at linux.intel.com>
-Date: Mon, 16 Jan 2012 09:50:19 +0000
-Subject: [PATCH 56/68] pch_gbe: Do not abort probe on bad MAC
-
-commit 2b53d07891630dead46d65c8f896955fd3ae0302 upstream.
-
-If the MAC is invalid or not implemented, do not abort the probe. Issue
-a warning and prevent bringing the interface up until a MAC is set manually
-(via ifconfig $IFACE hw ether $MAC).
-
-Tested on two platforms, one with a valid MAC, the other without a MAC. The real
-MAC is used if present, the interface fails to come up until the MAC is set on
-the other. They successfully get an IP over DHCP and pass a simple ping and
-login over ssh test.
-
-This is meant to allow the Inforce SYS940X development board:
-http://www.inforcecomputing.com/SYS940X_ECX.html
-(and others suffering from a missing MAC) to work with the mainline kernel.
-Without this patch, the probe will fail and the interface will not be created,
-preventing the user from configuring the MAC manually.
-
-This does not make any attempt to address a missing or invalid MAC for the
-pch_phub driver.
-
-Signed-off-by: Darren Hart <dvhart at linux.intel.com>
-CC: Arjan van de Ven <arjan at linux.intel.com>
-CC: Alan Cox <alan at linux.intel.com>
-CC: Tomoya MORINAGA <tomoya.rohm at gmail.com>
-CC: Jeff Kirsher <jeffrey.t.kirsher at intel.com>
-CC: "David S. Miller" <davem at davemloft.net>
-CC: Paul Gortmaker <paul.gortmaker at windriver.com>
-CC: Jon Mason <jdmason at kudzu.us>
-CC: Mark Brown <broonie at opensource.wolfsonmicro.com>
-CC: David Laight <David.Laight at ACULAB.COM>
-CC: Joe Perches <joe at perches.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Tomoya MORINAGA <tomoya.rohm at gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c | 17 ++++++++++++++---
- 1 file changed, 14 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c
-index 48406ca..43c7b25 100644
---- a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c
-+++ b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c
-@@ -1745,6 +1745,12 @@ int pch_gbe_up(struct pch_gbe_adapter *adapter)
- struct pch_gbe_rx_ring *rx_ring = adapter->rx_ring;
- int err;
-
-+ /* Ensure we have a valid MAC */
-+ if (!is_valid_ether_addr(adapter->hw.mac.addr)) {
-+ pr_err("Error: Invalid MAC address\n");
-+ return -EINVAL;
-+ }
-+
- /* hardware has been reset, we need to reload some things */
- pch_gbe_set_multi(netdev);
-
-@@ -2467,9 +2473,14 @@ static int pch_gbe_probe(struct pci_dev *pdev,
-
- memcpy(netdev->dev_addr, adapter->hw.mac.addr, netdev->addr_len);
- if (!is_valid_ether_addr(netdev->dev_addr)) {
-- dev_err(&pdev->dev, "Invalid MAC Address\n");
-- ret = -EIO;
-- goto err_free_adapter;
-+ /*
-+ * If the MAC is invalid (or just missing), display a warning
-+ * but do not abort setting up the device. pch_gbe_up will
-+ * prevent the interface from being brought up until a valid MAC
-+ * is set.
-+ */
-+ dev_err(&pdev->dev, "Invalid MAC address, "
-+ "interface disabled.\n");
- }
- setup_timer(&adapter->watchdog_timer, pch_gbe_watchdog,
- (unsigned long)adapter);
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0057-pch_gbe-memory-corruption-calling-pch_gbe_validate_o.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0057-pch_gbe-memory-corruption-calling-pch_gbe_validate_o.patch
deleted file mode 100644
index 07cc85b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0057-pch_gbe-memory-corruption-calling-pch_gbe_validate_o.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From 39ac4e9f39a308616c42f055e6eb61883171826c Mon Sep 17 00:00:00 2001
-From: Dan Carpenter <dan.carpenter at oracle.com>
-Date: Wed, 29 Feb 2012 21:17:08 +0000
-Subject: [PATCH 57/68] pch_gbe: memory corruption calling
- pch_gbe_validate_option()
-
-commit 73f98eab9b9e0bab492ca06add5657d9e702ddb1 upstream.
-
-pch_gbe_validate_option() modifies 32 bits of memory but we pass
-&hw->phy.autoneg_advertised which only has 16 bits and &hw->mac.fc
-which only has 8 bits.
-
-Signed-off-by: Dan Carpenter <dan.carpenter at oracle.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Tomoya MORINAGA <tomoya.rohm at gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_param.c | 15 ++++++++-------
- 1 file changed, 8 insertions(+), 7 deletions(-)
-
-diff --git a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_param.c b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_param.c
-index 9cb5f91..29e23be 100644
---- a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_param.c
-+++ b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_param.c
-@@ -321,10 +321,10 @@ static void pch_gbe_check_copper_options(struct pch_gbe_adapter *adapter)
- pr_debug("AutoNeg specified along with Speed or Duplex, AutoNeg parameter ignored\n");
- hw->phy.autoneg_advertised = opt.def;
- } else {
-- hw->phy.autoneg_advertised = AutoNeg;
-- pch_gbe_validate_option(
-- (int *)(&hw->phy.autoneg_advertised),
-- &opt, adapter);
-+ int tmp = AutoNeg;
-+
-+ pch_gbe_validate_option(&tmp, &opt, adapter);
-+ hw->phy.autoneg_advertised = tmp;
- }
- }
-
-@@ -495,9 +495,10 @@ void pch_gbe_check_options(struct pch_gbe_adapter *adapter)
- .arg = { .l = { .nr = (int)ARRAY_SIZE(fc_list),
- .p = fc_list } }
- };
-- hw->mac.fc = FlowControl;
-- pch_gbe_validate_option((int *)(&hw->mac.fc),
-- &opt, adapter);
-+ int tmp = FlowControl;
-+
-+ pch_gbe_validate_option(&tmp, &opt, adapter);
-+ hw->mac.fc = tmp;
- }
-
- pch_gbe_check_copper_options(adapter);
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0058-pch_dma-Support-new-device-LAPIS-Semiconductor-ML783.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0058-pch_dma-Support-new-device-LAPIS-Semiconductor-ML783.patch
deleted file mode 100644
index dbf592c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0058-pch_dma-Support-new-device-LAPIS-Semiconductor-ML783.patch
+++ /dev/null
@@ -1,82 +0,0 @@
-From 0e69eca9d7e396d17ee6350491cb53b68b11f18a Mon Sep 17 00:00:00 2001
-From: Tomoya MORINAGA <tomoya.rohm at gmail.com>
-Date: Thu, 17 Nov 2011 16:14:23 +0900
-Subject: [PATCH 58/68] pch_dma: Support new device LAPIS Semiconductor ML7831
- IOH
-
-commit ca7fe2db892dcf91b2c72ee352eda4ff867903a7 upstream.
-
-ML7831 is companion chip for Intel Atom E6xx series.
-
-Signed-off-by: Tomoya MORINAGA <tomoya.rohm at gmail.com>
-Signed-off-by: Vinod Koul <vinod.koul at linux.intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/dma/Kconfig | 13 ++++++-------
- drivers/dma/pch_dma.c | 8 ++++++--
- 2 files changed, 12 insertions(+), 9 deletions(-)
-
-diff --git a/drivers/dma/Kconfig b/drivers/dma/Kconfig
-index 5a99bb3..da85c0d 100644
---- a/drivers/dma/Kconfig
-+++ b/drivers/dma/Kconfig
-@@ -201,18 +201,17 @@ config PL330_DMA
- platform_data for a dma-pl330 device.
-
- config PCH_DMA
-- tristate "Intel EG20T PCH / OKI Semi IOH(ML7213/ML7223) DMA support"
-+ tristate "Intel EG20T PCH / OKI Semi IOH(ML7213/ML7223/ML7831) DMA support"
- depends on PCI && X86
- select DMA_ENGINE
- help
- Enable support for Intel EG20T PCH DMA engine.
--
- This driver also can be used for OKI SEMICONDUCTOR IOH(Input/
-- Output Hub), ML7213 and ML7223.
-- ML7213 IOH is for IVI(In-Vehicle Infotainment) use and ML7223 IOH is
-- for MP(Media Phone) use.
-- ML7213/ML7223 is companion chip for Intel Atom E6xx series.
-- ML7213/ML7223 is completely compatible for Intel EG20T PCH.
-+ Output Hub), ML7213, ML7223 and ML7831.
-+ ML7213 IOH is for IVI(In-Vehicle Infotainment) use, ML7223 IOH is
-+ for MP(Media Phone) use and ML7831 IOH is for general purpose use.
-+ ML7213/ML7223/ML7831 is companion chip for Intel Atom E6xx series.
-+ ML7213/ML7223/ML7831 is completely compatible for Intel EG20T PCH.
-
- config IMX_SDMA
- tristate "i.MX SDMA support"
-diff --git a/drivers/dma/pch_dma.c b/drivers/dma/pch_dma.c
-index a6d0e3d..629c430 100644
---- a/drivers/dma/pch_dma.c
-+++ b/drivers/dma/pch_dma.c
-@@ -1018,6 +1018,8 @@ static void __devexit pch_dma_remove(struct pci_dev *pdev)
- #define PCI_DEVICE_ID_ML7223_DMA2_4CH 0x800E
- #define PCI_DEVICE_ID_ML7223_DMA3_4CH 0x8017
- #define PCI_DEVICE_ID_ML7223_DMA4_4CH 0x803B
-+#define PCI_DEVICE_ID_ML7831_DMA1_8CH 0x8810
-+#define PCI_DEVICE_ID_ML7831_DMA2_4CH 0x8815
-
- DEFINE_PCI_DEVICE_TABLE(pch_dma_id_table) = {
- { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_EG20T_PCH_DMA_8CH), 8 },
-@@ -1030,6 +1032,8 @@ DEFINE_PCI_DEVICE_TABLE(pch_dma_id_table) = {
- { PCI_VDEVICE(ROHM, PCI_DEVICE_ID_ML7223_DMA2_4CH), 4}, /* Video SPI */
- { PCI_VDEVICE(ROHM, PCI_DEVICE_ID_ML7223_DMA3_4CH), 4}, /* Security */
- { PCI_VDEVICE(ROHM, PCI_DEVICE_ID_ML7223_DMA4_4CH), 4}, /* FPGA */
-+ { PCI_VDEVICE(ROHM, PCI_DEVICE_ID_ML7831_DMA1_8CH), 8}, /* UART */
-+ { PCI_VDEVICE(ROHM, PCI_DEVICE_ID_ML7831_DMA2_4CH), 4}, /* SPI */
- { 0, },
- };
-
-@@ -1057,7 +1061,7 @@ static void __exit pch_dma_exit(void)
- module_init(pch_dma_init);
- module_exit(pch_dma_exit);
-
--MODULE_DESCRIPTION("Intel EG20T PCH / OKI SEMICONDUCTOR ML7213 IOH "
-- "DMA controller driver");
-+MODULE_DESCRIPTION("Intel EG20T PCH / OKI SEMICON ML7213/ML7223/ML7831 IOH"
-+ "DMA controller driver");
- MODULE_AUTHOR("Yong Wang <yong.y.wang at intel.com>");
- MODULE_LICENSE("GPL v2");
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0059-spi-topcliff-pch-fix-Wuninitialized-warning.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0059-spi-topcliff-pch-fix-Wuninitialized-warning.patch
deleted file mode 100644
index fe20c45..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0059-spi-topcliff-pch-fix-Wuninitialized-warning.patch
+++ /dev/null
@@ -1,82 +0,0 @@
-From 82a52f9ef76f612159cc947961ce36687ab1d58e Mon Sep 17 00:00:00 2001
-From: Danny Kukawka <danny.kukawka at bisect.de>
-Date: Tue, 14 Feb 2012 15:35:03 +0100
-Subject: [PATCH 59/68] spi-topcliff-pch: fix -Wuninitialized warning
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit de3bd7e6de25141c466773c2e0fa319b2fa93655 upstream.
-
-Fix for:
-drivers/spi/spi-topcliff-pch.c: In function ‘pch_spi_handler_sub’:
-drivers/spi/spi-topcliff-pch.c:325:17: warning: ‘bpw_len’ may be
- used uninitialized in this function [-Wuninitialized]
-drivers/spi/spi-topcliff-pch.c:325:42: warning: ‘rx_index’ may be
- used uninitialized in this function [-Wuninitialized]
-drivers/spi/spi-topcliff-pch.c:325:42: warning: ‘tx_index’ may be
- used uninitialized in this function [-Wuninitialized]
-
-Move usage of tx_index, rx_index and bpw_len into the same
-block as where they are set to prevent uninitialized usage.
-
-v2: instead of init variables with 0 move the whole block
-
-[This patch title "warnings" makes you think "This patch is not
-for bug fix". However, this patch surely patch for bug fix.]
-
-Signed-off-by: Danny Kukawka <danny.kukawka at bisect.de>
-Signed-off-by: Grant Likely <grant.likely at secretlab.ca>
-Signed-off-by: Tomoya MORINAGA <tomoya.rohm at gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/spi/spi-topcliff-pch.c | 33 +++++++++++++++++----------------
- 1 file changed, 17 insertions(+), 16 deletions(-)
-
-diff --git a/drivers/spi/spi-topcliff-pch.c b/drivers/spi/spi-topcliff-pch.c
-index 027b6d0..ec50541 100644
---- a/drivers/spi/spi-topcliff-pch.c
-+++ b/drivers/spi/spi-topcliff-pch.c
-@@ -315,22 +315,23 @@ static void pch_spi_handler_sub(struct pch_spi_data *data, u32 reg_spsr_val,
- data->tx_index = tx_index;
- data->rx_index = rx_index;
-
-- }
--
-- /* if transfer complete interrupt */
-- if (reg_spsr_val & SPSR_FI_BIT) {
-- if ((tx_index == bpw_len) && (rx_index == tx_index)) {
-- /* disable interrupts */
-- pch_spi_setclr_reg(data->master, PCH_SPCR, 0, PCH_ALL);
--
-- /* transfer is completed;
-- inform pch_spi_process_messages */
-- data->transfer_complete = true;
-- data->transfer_active = false;
-- wake_up(&data->wait);
-- } else {
-- dev_err(&data->master->dev,
-- "%s : Transfer is not completed", __func__);
-+ /* if transfer complete interrupt */
-+ if (reg_spsr_val & SPSR_FI_BIT) {
-+ if ((tx_index == bpw_len) && (rx_index == tx_index)) {
-+ /* disable interrupts */
-+ pch_spi_setclr_reg(data->master, PCH_SPCR, 0,
-+ PCH_ALL);
-+
-+ /* transfer is completed;
-+ inform pch_spi_process_messages */
-+ data->transfer_complete = true;
-+ data->transfer_active = false;
-+ wake_up(&data->wait);
-+ } else {
-+ dev_err(&data->master->dev,
-+ "%s : Transfer is not completed",
-+ __func__);
-+ }
- }
- }
- }
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0060-spi-topcliff-pch-Support-new-device-LAPIS-Semiconduc.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0060-spi-topcliff-pch-Support-new-device-LAPIS-Semiconduc.patch
deleted file mode 100644
index 2014e74..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0060-spi-topcliff-pch-Support-new-device-LAPIS-Semiconduc.patch
+++ /dev/null
@@ -1,76 +0,0 @@
-From 743c46c92827cc3cd7bd1fa7b0e9e7ca84e7463a Mon Sep 17 00:00:00 2001
-From: Tomoya MORINAGA <tomoya-linux at dsn.lapis-semi.com>
-Date: Fri, 28 Oct 2011 09:35:21 +0900
-Subject: [PATCH 60/68] spi-topcliff-pch: Support new device LAPIS
- Semiconductor ML7831 IOH
-
-commit 92b3a5c1bc3c7da1ae4675d014124f4a97ddb632 upstream.
-
-ML7831 is companion chip for Intel Atom E6xx series.
-
-Signed-off-by: Tomoya MORINAGA <tomoya-linux at dsn.lapis-semi.com>
-Signed-off-by: Grant Likely <grant.likely at secretlab.ca>
-Signed-off-by: Tomoya MORINAGA <tomoya.rohm at gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/spi/Kconfig | 6 +++---
- drivers/spi/spi-topcliff-pch.c | 5 ++++-
- 2 files changed, 7 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/spi/Kconfig b/drivers/spi/Kconfig
-index 8ba4510..7587796 100644
---- a/drivers/spi/Kconfig
-+++ b/drivers/spi/Kconfig
-@@ -346,14 +346,14 @@ config SPI_TI_SSP
- serial port.
-
- config SPI_TOPCLIFF_PCH
-- tristate "Intel EG20T PCH/OKI SEMICONDUCTOR ML7213 IOH SPI controller"
-+ tristate "Intel EG20T PCH/LAPIS Semicon IOH(ML7213/ML7223/ML7831) SPI"
- depends on PCI
- help
- SPI driver for the Topcliff PCH (Platform Controller Hub) SPI bus
- used in some x86 embedded processors.
-
-- This driver also supports the ML7213, a companion chip for the
-- Atom E6xx series and compatible with the Intel EG20T PCH.
-+ This driver also supports the ML7213/ML7223/ML7831, a companion chip
-+ for the Atom E6xx series and compatible with the Intel EG20T PCH.
-
- config SPI_TXX9
- tristate "Toshiba TXx9 SPI controller"
-diff --git a/drivers/spi/spi-topcliff-pch.c b/drivers/spi/spi-topcliff-pch.c
-index ec50541..54b9d2e 100644
---- a/drivers/spi/spi-topcliff-pch.c
-+++ b/drivers/spi/spi-topcliff-pch.c
-@@ -95,16 +95,18 @@
- #define PCH_CLOCK_HZ 50000000
- #define PCH_MAX_SPBR 1023
-
--/* Definition for ML7213 by OKI SEMICONDUCTOR */
-+/* Definition for ML7213/ML7831 by OKI SEMICONDUCTOR */
- #define PCI_VENDOR_ID_ROHM 0x10DB
- #define PCI_DEVICE_ID_ML7213_SPI 0x802c
- #define PCI_DEVICE_ID_ML7223_SPI 0x800F
-+#define PCI_DEVICE_ID_ML7831_SPI 0x8816
-
- /*
- * Set the number of SPI instance max
- * Intel EG20T PCH : 1ch
- * OKI SEMICONDUCTOR ML7213 IOH : 2ch
- * OKI SEMICONDUCTOR ML7223 IOH : 1ch
-+ * OKI SEMICONDUCTOR ML7831 IOH : 1ch
- */
- #define PCH_SPI_MAX_DEV 2
-
-@@ -218,6 +220,7 @@ static struct pci_device_id pch_spi_pcidev_id[] = {
- { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_GE_SPI), 1, },
- { PCI_VDEVICE(ROHM, PCI_DEVICE_ID_ML7213_SPI), 2, },
- { PCI_VDEVICE(ROHM, PCI_DEVICE_ID_ML7223_SPI), 1, },
-+ { PCI_VDEVICE(ROHM, PCI_DEVICE_ID_ML7831_SPI), 1, },
- { }
- };
-
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0061-Bluetooth-Adding-USB-device-13d3-3375-as-an-Atheros-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0061-Bluetooth-Adding-USB-device-13d3-3375-as-an-Atheros-.patch
deleted file mode 100644
index 53132fc..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0061-Bluetooth-Adding-USB-device-13d3-3375-as-an-Atheros-.patch
+++ /dev/null
@@ -1,67 +0,0 @@
-From 3100f55ea5eeb7e5c2c03ccf26fffdbcaa29dae7 Mon Sep 17 00:00:00 2001
-From: Eran <eran at over-here.org>
-Date: Mon, 5 Dec 2011 22:15:29 +0000
-Subject: [PATCH 61/68] Bluetooth: Adding USB device 13d3:3375 as an Atheros
- AR3012.
-
-commit 9498ba7a1d38d42eef4ef6d906ab1743c9f0fd6f upstream.
-
-The bluetooth module in the Asus UX31/UX21 is based on Atheros AR3012
-and requires a firmware to be uploaded before it's usable.
-
-output of usb-devices for this module:
-T: Bus=01 Lev=02 Prnt=02 Port=07 Cnt=03 Dev#= 6 Spd=12 MxCh= 0
-D: Ver= 1.10 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs= 1
-P: Vendor=13d3 ProdID=3375 Rev=00.02
-S: Manufacturer=Atheros Communications
-S: Product=Bluetooth USB Host Controller
-S: SerialNumber=Alaska Day 2006
-C: #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
-I: If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
-I: If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
-
-Signed-off-by: Eran <eran at over-here.org>
-Tested-by: Michal Labedzki <michal.labedzki at tieto.com>
-Signed-off-by: Gustavo F. Padovan <padovan at profusion.mobi>
-Cc: Jonathan Nieder <jrnieder at gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/bluetooth/ath3k.c | 2 ++
- drivers/bluetooth/btusb.c | 1 +
- 2 files changed, 3 insertions(+)
-
-diff --git a/drivers/bluetooth/ath3k.c b/drivers/bluetooth/ath3k.c
-index db811d2..67a79b0 100644
---- a/drivers/bluetooth/ath3k.c
-+++ b/drivers/bluetooth/ath3k.c
-@@ -71,6 +71,7 @@ static struct usb_device_id ath3k_table[] = {
-
- /* Atheros AR3012 with sflash firmware*/
- { USB_DEVICE(0x0CF3, 0x3004) },
-+ { USB_DEVICE(0x13d3, 0x3375) },
-
- /* Atheros AR5BBU12 with sflash firmware */
- { USB_DEVICE(0x0489, 0xE02C) },
-@@ -87,6 +88,7 @@ static struct usb_device_id ath3k_blist_tbl[] = {
-
- /* Atheros AR3012 with sflash firmware*/
- { USB_DEVICE(0x0cf3, 0x3004), .driver_info = BTUSB_ATH3012 },
-+ { USB_DEVICE(0x13d3, 0x3375), .driver_info = BTUSB_ATH3012 },
-
- { } /* Terminating entry */
- };
-diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
-index c16c750..df0331a 100644
---- a/drivers/bluetooth/btusb.c
-+++ b/drivers/bluetooth/btusb.c
-@@ -126,6 +126,7 @@ static struct usb_device_id blacklist_table[] = {
-
- /* Atheros 3012 with sflash firmware */
- { USB_DEVICE(0x0cf3, 0x3004), .driver_info = BTUSB_ATH3012 },
-+ { USB_DEVICE(0x13d3, 0x3375), .driver_info = BTUSB_ATH3012 },
-
- /* Atheros AR5BBU12 with sflash firmware */
- { USB_DEVICE(0x0489, 0xe02c), .driver_info = BTUSB_IGNORE },
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0062-Bluetooth-Add-Atheros-maryann-PIDVID-support.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0062-Bluetooth-Add-Atheros-maryann-PIDVID-support.patch
deleted file mode 100644
index 2fd5762..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0062-Bluetooth-Add-Atheros-maryann-PIDVID-support.patch
+++ /dev/null
@@ -1,119 +0,0 @@
-From 44d3b492e84ea02e1edd019490f1eeb39c9ab3e6 Mon Sep 17 00:00:00 2001
-From: "Cho, Yu-Chen" <acho at suse.com>
-Date: Wed, 14 Mar 2012 22:01:21 +0200
-Subject: [PATCH 62/68] Bluetooth: Add Atheros maryann PIDVID support
-
-commit 07c0ea874d43c299d185948452945a361052b6e3 upstream.
-
-Add Atheros maryann 0cf3:311d PIDVID support
-This module is AR3012 Series.
-
-Include /sys/kernel/debug/usb/devices output here for reference
-
-before:
-T: Bus=04 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 2 Spd=12 MxCh= 0
-D: Ver= 1.10 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs= 1
-P: Vendor=0cf3 ProdID=311d Rev= 0.01
-S: Manufacturer=Atheros Communications
-S: Product=Bluetooth USB Host Controller
-S: SerialNumber=Alaska Day 2006
-C:* #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
-I:* If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
-E: Ad=81(I) Atr=03(Int.) MxPS= 16 Ivl=1ms
-E: Ad=82(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
-E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
-I:* If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
-E: Ad=83(I) Atr=01(Isoc) MxPS= 0 Ivl=1ms
-E: Ad=03(O) Atr=01(Isoc) MxPS= 0 Ivl=1ms
-I: If#= 1 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
-E: Ad=83(I) Atr=01(Isoc) MxPS= 9 Ivl=1ms
-E: Ad=03(O) Atr=01(Isoc) MxPS= 9 Ivl=1ms
-I: If#= 1 Alt= 2 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
-E: Ad=83(I) Atr=01(Isoc) MxPS= 17 Ivl=1ms
-E: Ad=03(O) Atr=01(Isoc) MxPS= 17 Ivl=1ms
-I: If#= 1 Alt= 3 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
-E: Ad=83(I) Atr=01(Isoc) MxPS= 25 Ivl=1ms
-E: Ad=03(O) Atr=01(Isoc) MxPS= 25 Ivl=1ms
-I: If#= 1 Alt= 4 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
-E: Ad=83(I) Atr=01(Isoc) MxPS= 33 Ivl=1ms
-E: Ad=03(O) Atr=01(Isoc) MxPS= 33 Ivl=1ms
-I: If#= 1 Alt= 5 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
-E: Ad=83(I) Atr=01(Isoc) MxPS= 49 Ivl=1ms
-E: Ad=03(O) Atr=01(Isoc) MxPS= 49 Ivl=1ms
-
-after:
-T: Bus=04 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 2 Spd=12 MxCh= 0
-D: Ver= 1.10 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs= 1
-P: Vendor=0cf3 ProdID=311d Rev= 0.02
-S: Manufacturer=Atheros Communications
-S: Product=Bluetooth USB Host Controller
-S: SerialNumber=Alaska Day 2006
-C:* #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
-I:* If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
-E: Ad=81(I) Atr=03(Int.) MxPS= 16 Ivl=1ms
-E: Ad=82(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
-E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
-I:* If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
-E: Ad=83(I) Atr=01(Isoc) MxPS= 0 Ivl=1ms
-E: Ad=03(O) Atr=01(Isoc) MxPS= 0 Ivl=1ms
-I: If#= 1 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
-E: Ad=83(I) Atr=01(Isoc) MxPS= 9 Ivl=1ms
-E: Ad=03(O) Atr=01(Isoc) MxPS= 9 Ivl=1ms
-I: If#= 1 Alt= 2 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
-E: Ad=83(I) Atr=01(Isoc) MxPS= 17 Ivl=1ms
-E: Ad=03(O) Atr=01(Isoc) MxPS= 17 Ivl=1ms
-I: If#= 1 Alt= 3 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
-E: Ad=83(I) Atr=01(Isoc) MxPS= 25 Ivl=1ms
-E: Ad=03(O) Atr=01(Isoc) MxPS= 25 Ivl=1ms
-I: If#= 1 Alt= 4 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
-E: Ad=83(I) Atr=01(Isoc) MxPS= 33 Ivl=1ms
-E: Ad=03(O) Atr=01(Isoc) MxPS= 33 Ivl=1ms
-I: If#= 1 Alt= 5 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
-E: Ad=83(I) Atr=01(Isoc) MxPS= 49 Ivl=1ms
-E: Ad=03(O) Atr=01(Isoc) MxPS= 49 Ivl=1ms
-
-Signed-off-by: Cho, Yu-Chen <acho at suse.com>
-cked-by: Marcel Holtmann <marcel at holtmann.org>
-Signed-off-by: Johan Hedberg <johan.hedberg at intel.com>
-Cc: Jonathan Nieder <jrnieder at gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/bluetooth/ath3k.c | 2 ++
- drivers/bluetooth/btusb.c | 1 +
- 2 files changed, 3 insertions(+)
-
-diff --git a/drivers/bluetooth/ath3k.c b/drivers/bluetooth/ath3k.c
-index 67a79b0..003cd8d 100644
---- a/drivers/bluetooth/ath3k.c
-+++ b/drivers/bluetooth/ath3k.c
-@@ -71,6 +71,7 @@ static struct usb_device_id ath3k_table[] = {
-
- /* Atheros AR3012 with sflash firmware*/
- { USB_DEVICE(0x0CF3, 0x3004) },
-+ { USB_DEVICE(0x0CF3, 0x311D) },
- { USB_DEVICE(0x13d3, 0x3375) },
-
- /* Atheros AR5BBU12 with sflash firmware */
-@@ -88,6 +89,7 @@ static struct usb_device_id ath3k_blist_tbl[] = {
-
- /* Atheros AR3012 with sflash firmware*/
- { USB_DEVICE(0x0cf3, 0x3004), .driver_info = BTUSB_ATH3012 },
-+ { USB_DEVICE(0x0cf3, 0x311D), .driver_info = BTUSB_ATH3012 },
- { USB_DEVICE(0x13d3, 0x3375), .driver_info = BTUSB_ATH3012 },
-
- { } /* Terminating entry */
-diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
-index df0331a..5a87b2e 100644
---- a/drivers/bluetooth/btusb.c
-+++ b/drivers/bluetooth/btusb.c
-@@ -126,6 +126,7 @@ static struct usb_device_id blacklist_table[] = {
-
- /* Atheros 3012 with sflash firmware */
- { USB_DEVICE(0x0cf3, 0x3004), .driver_info = BTUSB_ATH3012 },
-+ { USB_DEVICE(0x0cf3, 0x311d), .driver_info = BTUSB_ATH3012 },
- { USB_DEVICE(0x13d3, 0x3375), .driver_info = BTUSB_ATH3012 },
-
- /* Atheros AR5BBU12 with sflash firmware */
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0063-Bluetooth-Add-support-for-BCM20702A0-0a5c-21e3.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0063-Bluetooth-Add-support-for-BCM20702A0-0a5c-21e3.patch
deleted file mode 100644
index cb6c36c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0063-Bluetooth-Add-support-for-BCM20702A0-0a5c-21e3.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From 8931ca8a3317ab71c85168b05664efa171563f59 Mon Sep 17 00:00:00 2001
-From: Jesse Sung <jesse.sung at canonical.com>
-Date: Thu, 22 Dec 2011 10:48:47 +0800
-Subject: [PATCH 63/68] Bluetooth: Add support for BCM20702A0 [0a5c:21e3]
-
-commit c0190925dacd976a67044f4382d4effbed568dce upstream.
-
-Add another vendor specific ID for BCM20702A0.
-
-output of usb-devices:
-T: Bus=06 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 4 Spd=12 MxCh= 0
-D: Ver= 2.00 Cls=ff(vend.) Sub=01 Prot=01 MxPS=64 #Cfgs= 1
-P: Vendor=0a5c ProdID=21e3 Rev=01.12
-S: Manufacturer=Broadcom Corp
-S: Product=BCM20702A0
-S: SerialNumber=9439E5CBF66C
-C: #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=0mA
-I: If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none)
-I: If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none)
-I: If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
-I: If#= 3 Alt= 0 #EPs= 0 Cls=fe(app. ) Sub=01 Prot=01 Driver=(none)
-
-Signed-off-by: Wen-chien Jesse Sung <jesse.sung at canonical.com>
-Acked-by: Marcel Holtmann <marcel at holtmann.org>
-Signed-off-by: Gustavo F. Padovan <padovan at profusion.mobi>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/bluetooth/btusb.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
-index 5a87b2e..db44ad5 100644
---- a/drivers/bluetooth/btusb.c
-+++ b/drivers/bluetooth/btusb.c
-@@ -101,6 +101,7 @@ static struct usb_device_id btusb_table[] = {
- { USB_DEVICE(0x0c10, 0x0000) },
-
- /* Broadcom BCM20702A0 */
-+ { USB_DEVICE(0x0a5c, 0x21e3) },
- { USB_DEVICE(0x413c, 0x8197) },
-
- { } /* Terminating entry */
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0064-futex-Do-not-leak-robust-list-to-unprivileged-proces.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0064-futex-Do-not-leak-robust-list-to-unprivileged-proces.patch
deleted file mode 100644
index 0d9c410..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0064-futex-Do-not-leak-robust-list-to-unprivileged-proces.patch
+++ /dev/null
@@ -1,170 +0,0 @@
-From 7480d9953ded1b970bb05c7585e2a08001ae8565 Mon Sep 17 00:00:00 2001
-From: Kees Cook <keescook at chromium.org>
-Date: Mon, 19 Mar 2012 16:12:53 -0700
-Subject: [PATCH 64/68] futex: Do not leak robust list to unprivileged process
-
-commit bdbb776f882f5ad431aa1e694c69c1c3d6a4a5b8 upstream.
-
-It was possible to extract the robust list head address from a setuid
-process if it had used set_robust_list(), allowing an ASLR info leak. This
-changes the permission checks to be the same as those used for similar
-info that comes out of /proc.
-
-Running a setuid program that uses robust futexes would have had:
- cred->euid != pcred->euid
- cred->euid == pcred->uid
-so the old permissions check would allow it. I'm not aware of any setuid
-programs that use robust futexes, so this is just a preventative measure.
-
-(This patch is based on changes from grsecurity.)
-
-Signed-off-by: Kees Cook <keescook at chromium.org>
-Cc: Darren Hart <dvhart at linux.intel.com>
-Cc: Peter Zijlstra <a.p.zijlstra at chello.nl>
-Cc: Jiri Kosina <jkosina at suse.cz>
-Cc: Eric W. Biederman <ebiederm at xmission.com>
-Cc: David Howells <dhowells at redhat.com>
-Cc: Serge E. Hallyn <serge.hallyn at canonical.com>
-Cc: kernel-hardening at lists.openwall.com
-Cc: spender at grsecurity.net
-Link: http://lkml.kernel.org/r/20120319231253.GA20893@www.outflux.net
-Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- kernel/futex.c | 36 +++++++++++++-----------------------
- kernel/futex_compat.c | 36 +++++++++++++-----------------------
- 2 files changed, 26 insertions(+), 46 deletions(-)
-
-diff --git a/kernel/futex.c b/kernel/futex.c
-index 0677023..866c9d5 100644
---- a/kernel/futex.c
-+++ b/kernel/futex.c
-@@ -59,6 +59,7 @@
- #include <linux/magic.h>
- #include <linux/pid.h>
- #include <linux/nsproxy.h>
-+#include <linux/ptrace.h>
-
- #include <asm/futex.h>
-
-@@ -2443,40 +2444,29 @@ SYSCALL_DEFINE3(get_robust_list, int, pid,
- {
- struct robust_list_head __user *head;
- unsigned long ret;
-- const struct cred *cred = current_cred(), *pcred;
-+ struct task_struct *p;
-
- if (!futex_cmpxchg_enabled)
- return -ENOSYS;
-
-+ rcu_read_lock();
-+
-+ ret = -ESRCH;
- if (!pid)
-- head = current->robust_list;
-+ p = current;
- else {
-- struct task_struct *p;
--
-- ret = -ESRCH;
-- rcu_read_lock();
- p = find_task_by_vpid(pid);
- if (!p)
- goto err_unlock;
-- ret = -EPERM;
-- pcred = __task_cred(p);
-- /* If victim is in different user_ns, then uids are not
-- comparable, so we must have CAP_SYS_PTRACE */
-- if (cred->user->user_ns != pcred->user->user_ns) {
-- if (!ns_capable(pcred->user->user_ns, CAP_SYS_PTRACE))
-- goto err_unlock;
-- goto ok;
-- }
-- /* If victim is in same user_ns, then uids are comparable */
-- if (cred->euid != pcred->euid &&
-- cred->euid != pcred->uid &&
-- !ns_capable(pcred->user->user_ns, CAP_SYS_PTRACE))
-- goto err_unlock;
--ok:
-- head = p->robust_list;
-- rcu_read_unlock();
- }
-
-+ ret = -EPERM;
-+ if (!ptrace_may_access(p, PTRACE_MODE_READ))
-+ goto err_unlock;
-+
-+ head = p->robust_list;
-+ rcu_read_unlock();
-+
- if (put_user(sizeof(*head), len_ptr))
- return -EFAULT;
- return put_user(head, head_ptr);
-diff --git a/kernel/futex_compat.c b/kernel/futex_compat.c
-index 5f9e689..a9642d5 100644
---- a/kernel/futex_compat.c
-+++ b/kernel/futex_compat.c
-@@ -10,6 +10,7 @@
- #include <linux/compat.h>
- #include <linux/nsproxy.h>
- #include <linux/futex.h>
-+#include <linux/ptrace.h>
-
- #include <asm/uaccess.h>
-
-@@ -136,40 +137,29 @@ compat_sys_get_robust_list(int pid, compat_uptr_t __user *head_ptr,
- {
- struct compat_robust_list_head __user *head;
- unsigned long ret;
-- const struct cred *cred = current_cred(), *pcred;
-+ struct task_struct *p;
-
- if (!futex_cmpxchg_enabled)
- return -ENOSYS;
-
-+ rcu_read_lock();
-+
-+ ret = -ESRCH;
- if (!pid)
-- head = current->compat_robust_list;
-+ p = current;
- else {
-- struct task_struct *p;
--
-- ret = -ESRCH;
-- rcu_read_lock();
- p = find_task_by_vpid(pid);
- if (!p)
- goto err_unlock;
-- ret = -EPERM;
-- pcred = __task_cred(p);
-- /* If victim is in different user_ns, then uids are not
-- comparable, so we must have CAP_SYS_PTRACE */
-- if (cred->user->user_ns != pcred->user->user_ns) {
-- if (!ns_capable(pcred->user->user_ns, CAP_SYS_PTRACE))
-- goto err_unlock;
-- goto ok;
-- }
-- /* If victim is in same user_ns, then uids are comparable */
-- if (cred->euid != pcred->euid &&
-- cred->euid != pcred->uid &&
-- !ns_capable(pcred->user->user_ns, CAP_SYS_PTRACE))
-- goto err_unlock;
--ok:
-- head = p->compat_robust_list;
-- rcu_read_unlock();
- }
-
-+ ret = -EPERM;
-+ if (!ptrace_may_access(p, PTRACE_MODE_READ))
-+ goto err_unlock;
-+
-+ head = p->compat_robust_list;
-+ rcu_read_unlock();
-+
- if (put_user(sizeof(*head), len_ptr))
- return -EFAULT;
- return put_user(ptr_to_compat(head), head_ptr);
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0065-drm-radeon-kms-fix-the-regression-of-DVI-connector-c.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0065-drm-radeon-kms-fix-the-regression-of-DVI-connector-c.patch
deleted file mode 100644
index 8bbc092..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0065-drm-radeon-kms-fix-the-regression-of-DVI-connector-c.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 53b833e3b2bc7382175c75d982087cf6b03a3753 Mon Sep 17 00:00:00 2001
-From: Takashi Iwai <tiwai at suse.de>
-Date: Wed, 18 Apr 2012 15:21:07 +0200
-Subject: [PATCH 65/68] drm/radeon/kms: fix the regression of DVI connector
- check
-
-commit e36325071832f1ba96ac54fb8ba1459f08b05dd8 upstream.
-
-The check of the encoder type in the commit [e00e8b5e: drm/radeon/kms:
-fix analog load detection on DVI-I connectors] is obviously wrong, and
-it's the culprit of the regression on my workstation with DVI-analog
-connection resulting in the blank output.
-
-Fixed the typo now.
-
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Reviewed-by: Alex Deucher <alexander.deucher at amd.com>
-Signed-off-by: Dave Airlie <airlied at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/gpu/drm/radeon/radeon_connectors.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/gpu/drm/radeon/radeon_connectors.c b/drivers/gpu/drm/radeon/radeon_connectors.c
-index f7d39ac..f19ea2e 100644
---- a/drivers/gpu/drm/radeon/radeon_connectors.c
-+++ b/drivers/gpu/drm/radeon/radeon_connectors.c
-@@ -946,7 +946,7 @@ radeon_dvi_detect(struct drm_connector *connector, bool force)
-
- encoder = obj_to_encoder(obj);
-
-- if (encoder->encoder_type != DRM_MODE_ENCODER_DAC ||
-+ if (encoder->encoder_type != DRM_MODE_ENCODER_DAC &&
- encoder->encoder_type != DRM_MODE_ENCODER_TVDAC)
- continue;
-
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0066-drm-radeon-disable-MSI-on-RV515.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0066-drm-radeon-disable-MSI-on-RV515.patch
deleted file mode 100644
index 624a8ab..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0066-drm-radeon-disable-MSI-on-RV515.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 4c47e0570154691338fd2e670109120a8e99184c Mon Sep 17 00:00:00 2001
-From: Dave Airlie <airlied at redhat.com>
-Date: Fri, 13 Apr 2012 11:14:50 +0100
-Subject: [PATCH 66/68] drm/radeon: disable MSI on RV515
-
-commit 16a5e32b83fd946312b9b13590c75d20c95c5202 upstream.
-
-My rv515 card is very flaky with msi enabled. Every so often it loses a rearm
-and never comes back, manually banging the rearm brings it back.
-
-Reviewed-by: Alex Deucher <alexander.deucher at amd.com>
-Signed-off-by: Dave Airlie <airlied at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/gpu/drm/radeon/radeon_irq_kms.c | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-diff --git a/drivers/gpu/drm/radeon/radeon_irq_kms.c b/drivers/gpu/drm/radeon/radeon_irq_kms.c
-index e7ddb49..baa019e 100644
---- a/drivers/gpu/drm/radeon/radeon_irq_kms.c
-+++ b/drivers/gpu/drm/radeon/radeon_irq_kms.c
-@@ -143,6 +143,12 @@ static bool radeon_msi_ok(struct radeon_device *rdev)
- (rdev->pdev->subsystem_device == 0x01fd))
- return true;
-
-+ /* RV515 seems to have MSI issues where it loses
-+ * MSI rearms occasionally. This leads to lockups and freezes.
-+ * disable it by default.
-+ */
-+ if (rdev->family == CHIP_RV515)
-+ return false;
- if (rdev->flags & RADEON_IS_IGP) {
- /* APUs work fine with MSIs */
- if (rdev->family >= CHIP_PALM)
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0067-drm-radeon-fix-load-detect-on-rn50-with-hardcoded-ED.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0067-drm-radeon-fix-load-detect-on-rn50-with-hardcoded-ED.patch
deleted file mode 100644
index d026278..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0067-drm-radeon-fix-load-detect-on-rn50-with-hardcoded-ED.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From cfcbd4d6d2b7604aee1daa122663bbdfa5743fd1 Mon Sep 17 00:00:00 2001
-From: Dave Airlie <airlied at redhat.com>
-Date: Thu, 19 Apr 2012 15:42:58 +0100
-Subject: [PATCH 67/68] drm/radeon: fix load detect on rn50 with hardcoded
- EDIDs.
-
-commit a09d431f344d854e4fe9cfac44f78cb8202f3eb7 upstream.
-
-When the force changes went in back in 3.3.0, we ended up returning
-disconnected in the !force case, and the connected in when forced,
-as it hit the hardcoded check.
-
-Fix it so all exits go via the hardcoded check and stop spurious
-modesets on platforms with hardcoded EDIDs.
-
-Reported-by: Evan McNabb (Red Hat)
-Reviewed-by: Alex Deucher <alexander.deucher at amd.com>
-Signed-off-by: Dave Airlie <airlied at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/gpu/drm/radeon/radeon_connectors.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/gpu/drm/radeon/radeon_connectors.c b/drivers/gpu/drm/radeon/radeon_connectors.c
-index f19ea2e..4a4493f 100644
---- a/drivers/gpu/drm/radeon/radeon_connectors.c
-+++ b/drivers/gpu/drm/radeon/radeon_connectors.c
-@@ -976,6 +976,7 @@ radeon_dvi_detect(struct drm_connector *connector, bool force)
- * cases the DVI port is actually a virtual KVM port connected to the service
- * processor.
- */
-+out:
- if ((!rdev->is_atom_bios) &&
- (ret == connector_status_disconnected) &&
- rdev->mode_info.bios_hardcoded_edid_size) {
-@@ -983,7 +984,6 @@ radeon_dvi_detect(struct drm_connector *connector, bool force)
- ret = connector_status_connected;
- }
-
--out:
- /* updated in get modes as well since we need to know if it's analog or digital */
- radeon_connector_update_scratch_regs(connector, ret);
- return ret;
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0068-Linux-3.2.16.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0068-Linux-3.2.16.patch
deleted file mode 100644
index 94f1f5f..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0068-Linux-3.2.16.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 45902e2bad446ada74fea7c6b467828211e49430 Mon Sep 17 00:00:00 2001
-From: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Date: Sun, 22 Apr 2012 15:31:32 -0700
-Subject: [PATCH 68/68] Linux 3.2.16
-
----
- Makefile | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Makefile b/Makefile
-index 6195122..3da29cb 100644
---- a/Makefile
-+++ b/Makefile
-@@ -1,6 +1,6 @@
- VERSION = 3
- PATCHLEVEL = 2
--SUBLEVEL = 15
-+SUBLEVEL = 16
- EXTRAVERSION =
- NAME = Saber-toothed Squirrel
-
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0001-crypto-sha512-Fix-byte-counter-overflow-in-SHA-512.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0001-crypto-sha512-Fix-byte-counter-overflow-in-SHA-512.patch
deleted file mode 100644
index 55b0324..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0001-crypto-sha512-Fix-byte-counter-overflow-in-SHA-512.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 56ff3a4557bf6cd95220c643eb6fdf28db222370 Mon Sep 17 00:00:00 2001
-From: Kent Yoder <key at linux.vnet.ibm.com>
-Date: Thu, 5 Apr 2012 20:34:20 +0800
-Subject: [PATCH 001/165] crypto: sha512 - Fix byte counter overflow in
- SHA-512
-
-commit 25c3d30c918207556ae1d6e663150ebdf902186b upstream.
-
-The current code only increments the upper 64 bits of the SHA-512 byte
-counter when the number of bytes hashed happens to hit 2^64 exactly.
-
-This patch increments the upper 64 bits whenever the lower 64 bits
-overflows.
-
-Signed-off-by: Kent Yoder <key at linux.vnet.ibm.com>
-Signed-off-by: Herbert Xu <herbert at gondor.apana.org.au>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- crypto/sha512_generic.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/crypto/sha512_generic.c b/crypto/sha512_generic.c
-index 107f6f7..dd30f40 100644
---- a/crypto/sha512_generic.c
-+++ b/crypto/sha512_generic.c
-@@ -174,7 +174,7 @@ sha512_update(struct shash_desc *desc, const u8 *data, unsigned int len)
- index = sctx->count[0] & 0x7f;
-
- /* Update number of bytes */
-- if (!(sctx->count[0] += len))
-+ if ((sctx->count[0] += len) < len)
- sctx->count[1]++;
-
- part_len = 128 - index;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0002-ALSA-hda-conexant-Don-t-set-HP-pin-control-bit-uncon.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0002-ALSA-hda-conexant-Don-t-set-HP-pin-control-bit-uncon.patch
deleted file mode 100644
index c03a4a3..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0002-ALSA-hda-conexant-Don-t-set-HP-pin-control-bit-uncon.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From b5fdd927a3527e8ed9a882d3c72e32435fa71dd3 Mon Sep 17 00:00:00 2001
-From: Takashi Iwai <tiwai at suse.de>
-Date: Thu, 19 Apr 2012 15:15:25 +0200
-Subject: [PATCH 002/165] ALSA: hda/conexant - Don't set HP pin-control bit
- unconditionally
-
-commit ca3649de026ff95c6f2847e8d096cf2f411c02b3 upstream.
-
-Some output pins on Conexant chips have no HP control bit, but the
-auto-parser initializes these pins unconditionally with PIN_HP.
-
-Check the pin-capability and avoid the HP bit if not supported.
-
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- sound/pci/hda/patch_conexant.c | 9 +++++++--
- 1 files changed, 7 insertions(+), 2 deletions(-)
-
-diff --git a/sound/pci/hda/patch_conexant.c b/sound/pci/hda/patch_conexant.c
-index ae94929..99a3378 100644
---- a/sound/pci/hda/patch_conexant.c
-+++ b/sound/pci/hda/patch_conexant.c
-@@ -4003,9 +4003,14 @@ static void cx_auto_init_output(struct hda_codec *codec)
- int i;
-
- mute_outputs(codec, spec->multiout.num_dacs, spec->multiout.dac_nids);
-- for (i = 0; i < cfg->hp_outs; i++)
-+ for (i = 0; i < cfg->hp_outs; i++) {
-+ unsigned int val = PIN_OUT;
-+ if (snd_hda_query_pin_caps(codec, cfg->hp_pins[i]) &
-+ AC_PINCAP_HP_DRV)
-+ val |= AC_PINCTL_HP_EN;
- snd_hda_codec_write(codec, cfg->hp_pins[i], 0,
-- AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_HP);
-+ AC_VERB_SET_PIN_WIDGET_CONTROL, val);
-+ }
- mute_outputs(codec, cfg->hp_outs, cfg->hp_pins);
- mute_outputs(codec, cfg->line_outs, cfg->line_out_pins);
- mute_outputs(codec, cfg->speaker_outs, cfg->speaker_pins);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0003-ALSA-hda-conexant-Set-up-the-missing-docking-station.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0003-ALSA-hda-conexant-Set-up-the-missing-docking-station.patch
deleted file mode 100644
index b306590..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0003-ALSA-hda-conexant-Set-up-the-missing-docking-station.patch
+++ /dev/null
@@ -1,99 +0,0 @@
-From 859f08d45339917d263a366170476c1f8389a2ea Mon Sep 17 00:00:00 2001
-From: Takashi Iwai <tiwai at suse.de>
-Date: Thu, 19 Apr 2012 15:18:08 +0200
-Subject: [PATCH 003/165] ALSA: hda/conexant - Set up the missing
- docking-station pins
-
-commit d70f363222ef373c2037412f09a600357cfa1c7a upstream.
-
-ThinkPad 410,420,510,520 and X201 with cx50585 & co chips have the
-docking-station ports, but BIOS doesn't initialize for these pins.
-Thus, like the former X200, we need to set up the pins manually in the
-driver.
-
-The odd part is that the same PCI SSID is used for X200 and T400, thus
-we need to prepare individual fixup tables for cx5051 and others.
-
-Bugzilla entries:
- https://bugzilla.redhat.com/show_bug.cgi?id=808559
- https://bugzilla.redhat.com/show_bug.cgi?id=806217
- https://bugzilla.redhat.com/show_bug.cgi?id=810697
-
-Reported-by: Josh Boyer <jwboyer at redhat.com>
-Reported-by: Jens Taprogge <jens.taprogge at taprogge.org>
-Tested-by: Jens Taprogge <jens.taprogge at taprogge.org>
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- sound/pci/hda/patch_conexant.c | 28 +++++++++++++++++++++++++---
- 1 files changed, 25 insertions(+), 3 deletions(-)
-
-diff --git a/sound/pci/hda/patch_conexant.c b/sound/pci/hda/patch_conexant.c
-index 99a3378..51a1afc 100644
---- a/sound/pci/hda/patch_conexant.c
-+++ b/sound/pci/hda/patch_conexant.c
-@@ -4413,8 +4413,10 @@ static void apply_pin_fixup(struct hda_codec *codec,
-
- enum {
- CXT_PINCFG_LENOVO_X200,
-+ CXT_PINCFG_LENOVO_TP410,
- };
-
-+/* ThinkPad X200 & co with cxt5051 */
- static const struct cxt_pincfg cxt_pincfg_lenovo_x200[] = {
- { 0x16, 0x042140ff }, /* HP (seq# overridden) */
- { 0x17, 0x21a11000 }, /* dock-mic */
-@@ -4422,15 +4424,33 @@ static const struct cxt_pincfg cxt_pincfg_lenovo_x200[] = {
- {}
- };
-
-+/* ThinkPad 410/420/510/520, X201 & co with cxt5066 */
-+static const struct cxt_pincfg cxt_pincfg_lenovo_tp410[] = {
-+ { 0x19, 0x042110ff }, /* HP (seq# overridden) */
-+ { 0x1a, 0x21a190f0 }, /* dock-mic */
-+ { 0x1c, 0x212140ff }, /* dock-HP */
-+ {}
-+};
-+
- static const struct cxt_pincfg *cxt_pincfg_tbl[] = {
- [CXT_PINCFG_LENOVO_X200] = cxt_pincfg_lenovo_x200,
-+ [CXT_PINCFG_LENOVO_TP410] = cxt_pincfg_lenovo_tp410,
- };
-
--static const struct snd_pci_quirk cxt_fixups[] = {
-+static const struct snd_pci_quirk cxt5051_fixups[] = {
- SND_PCI_QUIRK(0x17aa, 0x20f2, "Lenovo X200", CXT_PINCFG_LENOVO_X200),
- {}
- };
-
-+static const struct snd_pci_quirk cxt5066_fixups[] = {
-+ SND_PCI_QUIRK(0x17aa, 0x20f2, "Lenovo T400", CXT_PINCFG_LENOVO_TP410),
-+ SND_PCI_QUIRK(0x17aa, 0x215e, "Lenovo T410", CXT_PINCFG_LENOVO_TP410),
-+ SND_PCI_QUIRK(0x17aa, 0x215f, "Lenovo T510", CXT_PINCFG_LENOVO_TP410),
-+ SND_PCI_QUIRK(0x17aa, 0x21ce, "Lenovo T420", CXT_PINCFG_LENOVO_TP410),
-+ SND_PCI_QUIRK(0x17aa, 0x21cf, "Lenovo T520", CXT_PINCFG_LENOVO_TP410),
-+ {}
-+};
-+
- /* add "fake" mute amp-caps to DACs on cx5051 so that mixer mute switches
- * can be created (bko#42825)
- */
-@@ -4467,11 +4487,13 @@ static int patch_conexant_auto(struct hda_codec *codec)
- break;
- case 0x14f15051:
- add_cx5051_fake_mutes(codec);
-+ apply_pin_fixup(codec, cxt5051_fixups, cxt_pincfg_tbl);
-+ break;
-+ default:
-+ apply_pin_fixup(codec, cxt5066_fixups, cxt_pincfg_tbl);
- break;
- }
-
-- apply_pin_fixup(codec, cxt_fixups, cxt_pincfg_tbl);
--
- err = cx_auto_search_adcs(codec);
- if (err < 0)
- return err;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0004-ARM-clps711x-serial-driver-hungs-are-a-result-of-cal.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0004-ARM-clps711x-serial-driver-hungs-are-a-result-of-cal.patch
deleted file mode 100644
index 39e5ef5..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0004-ARM-clps711x-serial-driver-hungs-are-a-result-of-cal.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From 36a5e353678eb6856bf90e322b815865abf4c660 Mon Sep 17 00:00:00 2001
-From: Alexander Shiyan <shc_work at mail.ru>
-Date: Tue, 27 Mar 2012 12:22:49 +0400
-Subject: [PATCH 004/165] ARM: clps711x: serial driver hungs are a result of
- call disable_irq within ISR
-
-commit 7a6fbc9a887193a1e9f8658703881c528040afbc upstream.
-
-Since 2.6.30-rc1 clps711x serial driver hungs system. This is a result
-of call disable_irq from ISR. synchronize_irq waits for end of interrupt
-and goes to infinite loop. This patch fix this problem.
-
-Signed-off-by: Alexander Shiyan <shc_work at mail.ru>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/tty/serial/clps711x.c | 14 ++++++++------
- 1 files changed, 8 insertions(+), 6 deletions(-)
-
-diff --git a/drivers/tty/serial/clps711x.c b/drivers/tty/serial/clps711x.c
-index e6c3dbd..836fe273 100644
---- a/drivers/tty/serial/clps711x.c
-+++ b/drivers/tty/serial/clps711x.c
-@@ -154,10 +154,9 @@ static irqreturn_t clps711xuart_int_tx(int irq, void *dev_id)
- port->x_char = 0;
- return IRQ_HANDLED;
- }
-- if (uart_circ_empty(xmit) || uart_tx_stopped(port)) {
-- clps711xuart_stop_tx(port);
-- return IRQ_HANDLED;
-- }
-+
-+ if (uart_circ_empty(xmit) || uart_tx_stopped(port))
-+ goto disable_tx_irq;
-
- count = port->fifosize >> 1;
- do {
-@@ -171,8 +170,11 @@ static irqreturn_t clps711xuart_int_tx(int irq, void *dev_id)
- if (uart_circ_chars_pending(xmit) < WAKEUP_CHARS)
- uart_write_wakeup(port);
-
-- if (uart_circ_empty(xmit))
-- clps711xuart_stop_tx(port);
-+ if (uart_circ_empty(xmit)) {
-+ disable_tx_irq:
-+ disable_irq_nosync(TX_IRQ(port));
-+ tx_enabled(port) = 0;
-+ }
-
- return IRQ_HANDLED;
- }
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0005-ARM-OMAP1-DMTIMER-fix-broken-timer-clock-source-sele.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0005-ARM-OMAP1-DMTIMER-fix-broken-timer-clock-source-sele.patch
deleted file mode 100644
index b7a22c4..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0005-ARM-OMAP1-DMTIMER-fix-broken-timer-clock-source-sele.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From 69c74a3f01d30c6dd44991f6413a4f317f4591a7 Mon Sep 17 00:00:00 2001
-From: Paul Walmsley <paul at pwsan.com>
-Date: Tue, 10 Apr 2012 18:36:02 -0600
-Subject: [PATCH 005/165] ARM: OMAP1: DMTIMER: fix broken timer clock source
- selection
-
-commit 6aaec67da1e41a0752a2b903b989e73b9f02e182 upstream.
-
-DMTIMER source selection on OMAP1 is broken. omap1_dm_timer_set_src()
-tries to use __raw_{read,write}l() to read from and write to physical
-addresses, but those functions take virtual addresses.
-
-sparse caught this:
-
-arch/arm/mach-omap1/timer.c:50:13: warning: incorrect type in argument 1 (different base types)
-arch/arm/mach-omap1/timer.c:50:13: expected void const volatile [noderef] <asn:2>*<noident>
-arch/arm/mach-omap1/timer.c:50:13: got unsigned int
-arch/arm/mach-omap1/timer.c:52:9: warning: incorrect type in argument 1 (different base types)
-arch/arm/mach-omap1/timer.c:52:9: expected void const volatile [noderef] <asn:2>*<noident>
-arch/arm/mach-omap1/timer.c:52:9: got unsigned int
-
-Fix by using omap_{read,writel}(), just like the other users of the
-MOD_CONF_CTRL_1 register in the OMAP1 codebase. Of course, in the long term,
-removing omap_{read,write}l() is the appropriate thing to do; but
-this will take some work to do this cleanly.
-
-Looks like this was caused by 97933d6 (ARM: OMAP1: dmtimer: conversion
-to platform devices) that dangerously moved code and changed it in
-the same patch.
-
-Signed-off-by: Paul Walmsley <paul at pwsan.com>
-Cc: Tarun Kanti DebBarma <tarun.kanti at ti.com>
-[tony at atomide.com: updated comments to include the breaking commit]
-Signed-off-by: Tony Lindgren <tony at atomide.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/arm/mach-omap1/timer.c | 4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/arch/arm/mach-omap1/timer.c b/arch/arm/mach-omap1/timer.c
-index 6e90665..fb202af 100644
---- a/arch/arm/mach-omap1/timer.c
-+++ b/arch/arm/mach-omap1/timer.c
-@@ -47,9 +47,9 @@ static int omap1_dm_timer_set_src(struct platform_device *pdev,
- int n = (pdev->id - 1) << 1;
- u32 l;
-
-- l = __raw_readl(MOD_CONF_CTRL_1) & ~(0x03 << n);
-+ l = omap_readl(MOD_CONF_CTRL_1) & ~(0x03 << n);
- l |= source << n;
-- __raw_writel(l, MOD_CONF_CTRL_1);
-+ omap_writel(l, MOD_CONF_CTRL_1);
-
- return 0;
- }
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0006-mmc-fixes-for-eMMC-v4.5-discard-operation.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0006-mmc-fixes-for-eMMC-v4.5-discard-operation.patch
deleted file mode 100644
index 061a8f9..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0006-mmc-fixes-for-eMMC-v4.5-discard-operation.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-From 23e70c192386ff8d0e33f9b9225d984ae5eea97b Mon Sep 17 00:00:00 2001
-From: Adrian Hunter <adrian.hunter at intel.com>
-Date: Thu, 5 Apr 2012 14:45:47 +0300
-Subject: [PATCH 006/165] mmc: fixes for eMMC v4.5 discard operation
-
-commit 7194efb8f063ee3aa0cb50d9002348887e68ec10 upstream.
-
-eMMC v4.5 discard operation is significantly different from the
-existing trim operation because it is not guaranteed to work with
-the new sanitize operation. Consequently mmc_can_trim() is
-separated from mmc_can_discard().
-
-Also the new discard operation does not result in the sectors being
-set to all-zeros, so discard_zeroes_data must not be set.
-
-In addition, the new discard has the same timeout as trim, but from
-v4.5 trim is defined to use the hc timeout. The timeout calculation
-is adjusted accordingly.
-
-Fixes apply to linux 3.2 on.
-
-Signed-off-by: Adrian Hunter <adrian.hunter at intel.com>
-Acked-by: Jaehoon Chung <jh80.chung at samsung.com>
-Acked-by: Linus Walleij <linus.walleij at linaro.org>
-Signed-off-by: Chris Ball <cjb at laptop.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/mmc/card/queue.c | 2 +-
- drivers/mmc/core/core.c | 7 ++++---
- 2 files changed, 5 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/mmc/card/queue.c b/drivers/mmc/card/queue.c
-index dcad59c..78690f2 100644
---- a/drivers/mmc/card/queue.c
-+++ b/drivers/mmc/card/queue.c
-@@ -134,7 +134,7 @@ static void mmc_queue_setup_discard(struct request_queue *q,
-
- queue_flag_set_unlocked(QUEUE_FLAG_DISCARD, q);
- q->limits.max_discard_sectors = max_discard;
-- if (card->erased_byte == 0)
-+ if (card->erased_byte == 0 && !mmc_can_discard(card))
- q->limits.discard_zeroes_data = 1;
- q->limits.discard_granularity = card->pref_erase << 9;
- /* granularity must not be greater than max. discard */
-diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c
-index 950b97d..c420a9e 100644
---- a/drivers/mmc/core/core.c
-+++ b/drivers/mmc/core/core.c
-@@ -1516,7 +1516,10 @@ static unsigned int mmc_mmc_erase_timeout(struct mmc_card *card,
- {
- unsigned int erase_timeout;
-
-- if (card->ext_csd.erase_group_def & 1) {
-+ if (arg == MMC_DISCARD_ARG ||
-+ (arg == MMC_TRIM_ARG && card->ext_csd.rev >= 6)) {
-+ erase_timeout = card->ext_csd.trim_timeout;
-+ } else if (card->ext_csd.erase_group_def & 1) {
- /* High Capacity Erase Group Size uses HC timeouts */
- if (arg == MMC_TRIM_ARG)
- erase_timeout = card->ext_csd.trim_timeout;
-@@ -1788,8 +1791,6 @@ int mmc_can_trim(struct mmc_card *card)
- {
- if (card->ext_csd.sec_feature_support & EXT_CSD_SEC_GB_CL_EN)
- return 1;
-- if (mmc_can_discard(card))
-- return 1;
- return 0;
- }
- EXPORT_SYMBOL(mmc_can_trim);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0007-mmc-fixes-for-eMMC-v4.5-sanitize-operation.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0007-mmc-fixes-for-eMMC-v4.5-sanitize-operation.patch
deleted file mode 100644
index 602f293..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0007-mmc-fixes-for-eMMC-v4.5-sanitize-operation.patch
+++ /dev/null
@@ -1,136 +0,0 @@
-From 6e1972f1214d5827d22d15985bb50d1e05307e7e Mon Sep 17 00:00:00 2001
-From: Adrian Hunter <adrian.hunter at intel.com>
-Date: Thu, 5 Apr 2012 14:45:48 +0300
-Subject: [PATCH 007/165] mmc: fixes for eMMC v4.5 sanitize operation
-
-commit 283028122db37621b124f079ca8eae5b64807ad4 upstream.
-
-eMMC v4.5 sanitize operation erases all copies of unmapped
-data. However trim or erase operations must be used first
-to unmap the required sectors. That was not being done.
-
-Fixes apply to linux 3.2 on.
-
-Signed-off-by: Adrian Hunter <adrian.hunter at intel.com>
-Acked-by: Jaehoon Chung <jh80.chung at samsung.com>
-Acked-by: Linus Walleij <linus.walleij at linaro.org>
-Signed-off-by: Chris Ball <cjb at laptop.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/mmc/card/block.c | 54 ++++++++++++++++++++++++++++++++-------------
- drivers/mmc/core/core.c | 2 +
- 2 files changed, 40 insertions(+), 16 deletions(-)
-
-diff --git a/drivers/mmc/card/block.c b/drivers/mmc/card/block.c
-index 60e8951..6679c4f 100644
---- a/drivers/mmc/card/block.c
-+++ b/drivers/mmc/card/block.c
-@@ -799,7 +799,7 @@ static int mmc_blk_issue_secdiscard_rq(struct mmc_queue *mq,
- {
- struct mmc_blk_data *md = mq->data;
- struct mmc_card *card = md->queue.card;
-- unsigned int from, nr, arg;
-+ unsigned int from, nr, arg, trim_arg, erase_arg;
- int err = 0, type = MMC_BLK_SECDISCARD;
-
- if (!(mmc_can_secure_erase_trim(card) || mmc_can_sanitize(card))) {
-@@ -807,20 +807,26 @@ static int mmc_blk_issue_secdiscard_rq(struct mmc_queue *mq,
- goto out;
- }
-
-+ from = blk_rq_pos(req);
-+ nr = blk_rq_sectors(req);
-+
- /* The sanitize operation is supported at v4.5 only */
- if (mmc_can_sanitize(card)) {
-- err = mmc_switch(card, EXT_CSD_CMD_SET_NORMAL,
-- EXT_CSD_SANITIZE_START, 1, 0);
-- goto out;
-+ erase_arg = MMC_ERASE_ARG;
-+ trim_arg = MMC_TRIM_ARG;
-+ } else {
-+ erase_arg = MMC_SECURE_ERASE_ARG;
-+ trim_arg = MMC_SECURE_TRIM1_ARG;
- }
-
-- from = blk_rq_pos(req);
-- nr = blk_rq_sectors(req);
--
-- if (mmc_can_trim(card) && !mmc_erase_group_aligned(card, from, nr))
-- arg = MMC_SECURE_TRIM1_ARG;
-- else
-- arg = MMC_SECURE_ERASE_ARG;
-+ if (mmc_erase_group_aligned(card, from, nr))
-+ arg = erase_arg;
-+ else if (mmc_can_trim(card))
-+ arg = trim_arg;
-+ else {
-+ err = -EINVAL;
-+ goto out;
-+ }
- retry:
- if (card->quirks & MMC_QUIRK_INAND_CMD38) {
- err = mmc_switch(card, EXT_CSD_CMD_SET_NORMAL,
-@@ -830,25 +836,41 @@ retry:
- INAND_CMD38_ARG_SECERASE,
- 0);
- if (err)
-- goto out;
-+ goto out_retry;
- }
-+
- err = mmc_erase(card, from, nr, arg);
-- if (!err && arg == MMC_SECURE_TRIM1_ARG) {
-+ if (err == -EIO)
-+ goto out_retry;
-+ if (err)
-+ goto out;
-+
-+ if (arg == MMC_SECURE_TRIM1_ARG) {
- if (card->quirks & MMC_QUIRK_INAND_CMD38) {
- err = mmc_switch(card, EXT_CSD_CMD_SET_NORMAL,
- INAND_CMD38_ARG_EXT_CSD,
- INAND_CMD38_ARG_SECTRIM2,
- 0);
- if (err)
-- goto out;
-+ goto out_retry;
- }
-+
- err = mmc_erase(card, from, nr, MMC_SECURE_TRIM2_ARG);
-+ if (err == -EIO)
-+ goto out_retry;
-+ if (err)
-+ goto out;
- }
--out:
-- if (err == -EIO && !mmc_blk_reset(md, card->host, type))
-+
-+ if (mmc_can_sanitize(card))
-+ err = mmc_switch(card, EXT_CSD_CMD_SET_NORMAL,
-+ EXT_CSD_SANITIZE_START, 1, 0);
-+out_retry:
-+ if (err && !mmc_blk_reset(md, card->host, type))
- goto retry;
- if (!err)
- mmc_blk_reset_success(md, type);
-+out:
- spin_lock_irq(&md->lock);
- __blk_end_request(req, err, blk_rq_bytes(req));
- spin_unlock_irq(&md->lock);
-diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c
-index c420a9e..411a994 100644
---- a/drivers/mmc/core/core.c
-+++ b/drivers/mmc/core/core.c
-@@ -1809,6 +1809,8 @@ EXPORT_SYMBOL(mmc_can_discard);
-
- int mmc_can_sanitize(struct mmc_card *card)
- {
-+ if (!mmc_can_trim(card) && !mmc_can_erase(card))
-+ return 0;
- if (card->ext_csd.sec_feature_support & EXT_CSD_SEC_SANITIZE)
- return 1;
- return 0;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0008-mmc-unbreak-sdhci-esdhc-imx-on-i.MX25.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0008-mmc-unbreak-sdhci-esdhc-imx-on-i.MX25.patch
deleted file mode 100644
index d3adbdb..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0008-mmc-unbreak-sdhci-esdhc-imx-on-i.MX25.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 5c4111343e2cb543a436cd23d7633a513fd8385d Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Eric=20B=C3=A9nard?= <eric at eukrea.com>
-Date: Wed, 18 Apr 2012 02:30:20 +0200
-Subject: [PATCH 008/165] mmc: unbreak sdhci-esdhc-imx on i.MX25
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit b89152824f993a9572b47eb31f4579feadeac34c upstream.
-
-This was broken by me in 37865fe91582582a6f6c00652f6a2b1ff71f8a78
-("mmc: sdhci-esdhc-imx: fix timeout on i.MX's sdhci") where more
-extensive tests would have shown that read or write of data to the
-card were failing (even if the partition table was correctly read).
-
-Signed-off-by: Eric Bénard <eric at eukrea.com>
-Acked-by: Wolfram Sang <w.sang at pengutronix.de>
-Signed-off-by: Chris Ball <cjb at laptop.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/mmc/host/sdhci-esdhc-imx.c | 3 +--
- 1 files changed, 1 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci-esdhc-imx.c
-index 4540e37..1b47937 100644
---- a/drivers/mmc/host/sdhci-esdhc-imx.c
-+++ b/drivers/mmc/host/sdhci-esdhc-imx.c
-@@ -467,8 +467,7 @@ static int __devinit sdhci_esdhc_imx_probe(struct platform_device *pdev)
- clk_enable(clk);
- pltfm_host->clk = clk;
-
-- if (!is_imx25_esdhc(imx_data))
-- host->quirks |= SDHCI_QUIRK_BROKEN_TIMEOUT_VAL;
-+ host->quirks |= SDHCI_QUIRK_BROKEN_TIMEOUT_VAL;
-
- if (is_imx25_esdhc(imx_data) || is_imx35_esdhc(imx_data))
- /* Fix errata ENGcm07207 present on i.MX25 and i.MX35 */
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0009-xen-gntdev-do-not-set-VM_PFNMAP.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0009-xen-gntdev-do-not-set-VM_PFNMAP.patch
deleted file mode 100644
index 06bb9fe..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0009-xen-gntdev-do-not-set-VM_PFNMAP.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From ccc1f53caca147badfafce099bd995a33d04880a Mon Sep 17 00:00:00 2001
-From: Stefano Stabellini <stefano.stabellini at eu.citrix.com>
-Date: Tue, 3 Apr 2012 18:05:47 +0100
-Subject: [PATCH 009/165] xen/gntdev: do not set VM_PFNMAP
-
-commit e8e937be971d706061dc56220ff3605ab77622a7 upstream.
-
-Since we are using the m2p_override we do have struct pages
-corresponding to the user vma mmap'ed by gntdev.
-
-Removing the VM_PFNMAP flag makes get_user_pages work on that vma.
-An example test case would be using a Xen userspace block backend
-(QDISK) on a file on NFS using O_DIRECT.
-
-Signed-off-by: Stefano Stabellini <stefano.stabellini at eu.citrix.com>
-Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk at oracle.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/xen/gntdev.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/xen/gntdev.c b/drivers/xen/gntdev.c
-index afca14d..625890c 100644
---- a/drivers/xen/gntdev.c
-+++ b/drivers/xen/gntdev.c
-@@ -692,7 +692,7 @@ static int gntdev_mmap(struct file *flip, struct vm_area_struct *vma)
- vma->vm_flags |= VM_RESERVED|VM_DONTEXPAND;
-
- if (use_ptemod)
-- vma->vm_flags |= VM_DONTCOPY|VM_PFNMAP;
-+ vma->vm_flags |= VM_DONTCOPY;
-
- vma->vm_private_data = map;
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0010-xen-xenbus-Add-quirk-to-deal-with-misconfigured-back.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0010-xen-xenbus-Add-quirk-to-deal-with-misconfigured-back.patch
deleted file mode 100644
index 916237d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0010-xen-xenbus-Add-quirk-to-deal-with-misconfigured-back.patch
+++ /dev/null
@@ -1,151 +0,0 @@
-From a3da8d9a1658c86fb74dbd35b8bda473d8fe0717 Mon Sep 17 00:00:00 2001
-From: Konrad Rzeszutek Wilk <konrad.wilk at oracle.com>
-Date: Tue, 17 Apr 2012 22:21:38 -0400
-Subject: [PATCH 010/165] xen/xenbus: Add quirk to deal with misconfigured
- backends.
-
-commit 3066616ce23aad5719c23a0f21f32676402cb44b upstream.
-
-A rather annoying and common case is when booting a PVonHVM guest
-and exposing the PV KBD and PV VFB - as broken toolstacks don't
-always initialize the backends correctly.
-
-Normally The HVM guest is using the VGA driver and the emulated
-keyboard for this (though upstream version of QEMU implements
-PV KBD, but still uses a VGA driver). We provide a very basic
-two-stage wait mechanism - where we wait for 30 seconds for all
-devices, and then for 270 for all them except the two mentioned.
-
-That allows us to wait for the essential devices, like network
-or disk for the full 6 minutes.
-
-To trigger this, put this in your guest config:
-
-vfb = [ 'vnc=1, vnclisten=0.0.0.0 ,vncunused=1']
-
-instead of this:
-vnc=1
-vnclisten="0.0.0.0"
-
-Acked-by: Stefano Stabellini <stefano.stabellini at eu.citrix.com>
-[v3: Split delay in non-essential (30 seconds) and essential
- devices per Ian and Stefano suggestion]
-[v4: Added comments per Stefano suggestion]
-Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk at oracle.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/xen/xenbus/xenbus_probe_frontend.c | 69 +++++++++++++++++++++------
- 1 files changed, 53 insertions(+), 16 deletions(-)
-
-diff --git a/drivers/xen/xenbus/xenbus_probe_frontend.c b/drivers/xen/xenbus/xenbus_probe_frontend.c
-index 2f73195..2ce95c0 100644
---- a/drivers/xen/xenbus/xenbus_probe_frontend.c
-+++ b/drivers/xen/xenbus/xenbus_probe_frontend.c
-@@ -129,7 +129,7 @@ static int read_backend_details(struct xenbus_device *xendev)
- return xenbus_read_otherend_details(xendev, "backend-id", "backend");
- }
-
--static int is_device_connecting(struct device *dev, void *data)
-+static int is_device_connecting(struct device *dev, void *data, bool ignore_nonessential)
- {
- struct xenbus_device *xendev = to_xenbus_device(dev);
- struct device_driver *drv = data;
-@@ -146,16 +146,41 @@ static int is_device_connecting(struct device *dev, void *data)
- if (drv && (dev->driver != drv))
- return 0;
-
-+ if (ignore_nonessential) {
-+ /* With older QEMU, for PVonHVM guests the guest config files
-+ * could contain: vfb = [ 'vnc=1, vnclisten=0.0.0.0']
-+ * which is nonsensical as there is no PV FB (there can be
-+ * a PVKB) running as HVM guest. */
-+
-+ if ((strncmp(xendev->nodename, "device/vkbd", 11) == 0))
-+ return 0;
-+
-+ if ((strncmp(xendev->nodename, "device/vfb", 10) == 0))
-+ return 0;
-+ }
- xendrv = to_xenbus_driver(dev->driver);
- return (xendev->state < XenbusStateConnected ||
- (xendev->state == XenbusStateConnected &&
- xendrv->is_ready && !xendrv->is_ready(xendev)));
- }
-+static int essential_device_connecting(struct device *dev, void *data)
-+{
-+ return is_device_connecting(dev, data, true /* ignore PV[KBB+FB] */);
-+}
-+static int non_essential_device_connecting(struct device *dev, void *data)
-+{
-+ return is_device_connecting(dev, data, false);
-+}
-
--static int exists_connecting_device(struct device_driver *drv)
-+static int exists_essential_connecting_device(struct device_driver *drv)
- {
- return bus_for_each_dev(&xenbus_frontend.bus, NULL, drv,
-- is_device_connecting);
-+ essential_device_connecting);
-+}
-+static int exists_non_essential_connecting_device(struct device_driver *drv)
-+{
-+ return bus_for_each_dev(&xenbus_frontend.bus, NULL, drv,
-+ non_essential_device_connecting);
- }
-
- static int print_device_status(struct device *dev, void *data)
-@@ -186,6 +211,23 @@ static int print_device_status(struct device *dev, void *data)
- /* We only wait for device setup after most initcalls have run. */
- static int ready_to_wait_for_devices;
-
-+static bool wait_loop(unsigned long start, unsigned int max_delay,
-+ unsigned int *seconds_waited)
-+{
-+ if (time_after(jiffies, start + (*seconds_waited+5)*HZ)) {
-+ if (!*seconds_waited)
-+ printk(KERN_WARNING "XENBUS: Waiting for "
-+ "devices to initialise: ");
-+ *seconds_waited += 5;
-+ printk("%us...", max_delay - *seconds_waited);
-+ if (*seconds_waited == max_delay)
-+ return true;
-+ }
-+
-+ schedule_timeout_interruptible(HZ/10);
-+
-+ return false;
-+}
- /*
- * On a 5-minute timeout, wait for all devices currently configured. We need
- * to do this to guarantee that the filesystems and / or network devices
-@@ -209,19 +251,14 @@ static void wait_for_devices(struct xenbus_driver *xendrv)
- if (!ready_to_wait_for_devices || !xen_domain())
- return;
-
-- while (exists_connecting_device(drv)) {
-- if (time_after(jiffies, start + (seconds_waited+5)*HZ)) {
-- if (!seconds_waited)
-- printk(KERN_WARNING "XENBUS: Waiting for "
-- "devices to initialise: ");
-- seconds_waited += 5;
-- printk("%us...", 300 - seconds_waited);
-- if (seconds_waited == 300)
-- break;
-- }
--
-- schedule_timeout_interruptible(HZ/10);
-- }
-+ while (exists_non_essential_connecting_device(drv))
-+ if (wait_loop(start, 30, &seconds_waited))
-+ break;
-+
-+ /* Skips PVKB and PVFB check.*/
-+ while (exists_essential_connecting_device(drv))
-+ if (wait_loop(start, 270, &seconds_waited))
-+ break;
-
- if (seconds_waited)
- printk("\n");
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0011-USB-yurex-Remove-allocation-of-coherent-buffer-for-s.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0011-USB-yurex-Remove-allocation-of-coherent-buffer-for-s.patch
deleted file mode 100644
index c8f316a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0011-USB-yurex-Remove-allocation-of-coherent-buffer-for-s.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From 607a2c7f4e227d472b7b1c6b69ec7112f5e8b142 Mon Sep 17 00:00:00 2001
-From: Tomoki Sekiyama <tomoki.sekiyama at gmail.com>
-Date: Fri, 30 Mar 2012 08:51:28 +0900
-Subject: [PATCH 011/165] USB: yurex: Remove allocation of coherent buffer for
- setup-packet buffer
-
-commit 523fc5c14f6cad283e5a266eba0e343aed6e73d5 upstream.
-
-Removes allocation of coherent buffer for the control-request setup-packet
-buffer from the yurex driver. Using coherent buffers for setup-packet is
-obsolete and does not work with some USB host implementations.
-
-Signed-off-by: Tomoki Sekiyama <tomoki.sekiyama at gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/misc/yurex.c | 8 ++------
- 1 files changed, 2 insertions(+), 6 deletions(-)
-
-diff --git a/drivers/usb/misc/yurex.c b/drivers/usb/misc/yurex.c
-index ac5bfd6..24bff37 100644
---- a/drivers/usb/misc/yurex.c
-+++ b/drivers/usb/misc/yurex.c
-@@ -99,9 +99,7 @@ static void yurex_delete(struct kref *kref)
- usb_put_dev(dev->udev);
- if (dev->cntl_urb) {
- usb_kill_urb(dev->cntl_urb);
-- if (dev->cntl_req)
-- usb_free_coherent(dev->udev, YUREX_BUF_SIZE,
-- dev->cntl_req, dev->cntl_urb->setup_dma);
-+ kfree(dev->cntl_req);
- if (dev->cntl_buffer)
- usb_free_coherent(dev->udev, YUREX_BUF_SIZE,
- dev->cntl_buffer, dev->cntl_urb->transfer_dma);
-@@ -234,9 +232,7 @@ static int yurex_probe(struct usb_interface *interface, const struct usb_device_
- }
-
- /* allocate buffer for control req */
-- dev->cntl_req = usb_alloc_coherent(dev->udev, YUREX_BUF_SIZE,
-- GFP_KERNEL,
-- &dev->cntl_urb->setup_dma);
-+ dev->cntl_req = kmalloc(YUREX_BUF_SIZE, GFP_KERNEL);
- if (!dev->cntl_req) {
- err("Could not allocate cntl_req");
- goto error;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0012-USB-yurex-Fix-missing-URB_NO_TRANSFER_DMA_MAP-flag-i.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0012-USB-yurex-Fix-missing-URB_NO_TRANSFER_DMA_MAP-flag-i.patch
deleted file mode 100644
index b922644..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0012-USB-yurex-Fix-missing-URB_NO_TRANSFER_DMA_MAP-flag-i.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 52f84b7d4cbfe7fc0ed467312e405df648bb1dca Mon Sep 17 00:00:00 2001
-From: Tomoki Sekiyama <tomoki.sekiyama at gmail.com>
-Date: Fri, 30 Mar 2012 08:51:36 +0900
-Subject: [PATCH 012/165] USB: yurex: Fix missing URB_NO_TRANSFER_DMA_MAP flag
- in urb
-
-commit 532f17b5d59bf0deb6f1ff9bc1fb27d5b5011c09 upstream.
-
-Current probing code is setting URB_NO_TRANSFER_DMA_MAP flag into a wrong urb
-structure, and this causes BUG_ON with some USB host implementations.
-This patch fixes the issue.
-
-Signed-off-by: Tomoki Sekiyama <tomoki.sekiyama at gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/misc/yurex.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/usb/misc/yurex.c b/drivers/usb/misc/yurex.c
-index 24bff37..2504694 100644
---- a/drivers/usb/misc/yurex.c
-+++ b/drivers/usb/misc/yurex.c
-@@ -282,7 +282,7 @@ static int yurex_probe(struct usb_interface *interface, const struct usb_device_
- usb_rcvintpipe(dev->udev, dev->int_in_endpointAddr),
- dev->int_buffer, YUREX_BUF_SIZE, yurex_interrupt,
- dev, 1);
-- dev->cntl_urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
-+ dev->urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
- if (usb_submit_urb(dev->urb, GFP_KERNEL)) {
- retval = -EIO;
- err("Could not submitting URB");
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0013-uwb-fix-use-of-del_timer_sync-in-interrupt.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0013-uwb-fix-use-of-del_timer_sync-in-interrupt.patch
deleted file mode 100644
index 0fbd236..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0013-uwb-fix-use-of-del_timer_sync-in-interrupt.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-From 73b80f793567a6056f9265c82599b47bc5856db8 Mon Sep 17 00:00:00 2001
-From: Oliver Neukum <oliver at neukum.org>
-Date: Mon, 16 Apr 2012 15:28:28 +0200
-Subject: [PATCH 013/165] uwb: fix use of del_timer_sync() in interrupt
-
-commit 9426cd05682745d1024dbabdec5631309bd2f480 upstream.
-
-del_timer_sync() cannot be used in interrupt.
-Replace it with del_timer() and a flag
-
-Signed-off-by: Oliver Neukum <oneukum at suse.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/uwb/neh.c | 12 +++++++++++-
- 1 files changed, 11 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/uwb/neh.c b/drivers/uwb/neh.c
-index a269937..8cb71bb 100644
---- a/drivers/uwb/neh.c
-+++ b/drivers/uwb/neh.c
-@@ -107,6 +107,7 @@ struct uwb_rc_neh {
- u8 evt_type;
- __le16 evt;
- u8 context;
-+ u8 completed;
- uwb_rc_cmd_cb_f cb;
- void *arg;
-
-@@ -409,6 +410,7 @@ static void uwb_rc_neh_grok_event(struct uwb_rc *rc, struct uwb_rceb *rceb, size
- struct device *dev = &rc->uwb_dev.dev;
- struct uwb_rc_neh *neh;
- struct uwb_rceb *notif;
-+ unsigned long flags;
-
- if (rceb->bEventContext == 0) {
- notif = kmalloc(size, GFP_ATOMIC);
-@@ -422,7 +424,11 @@ static void uwb_rc_neh_grok_event(struct uwb_rc *rc, struct uwb_rceb *rceb, size
- } else {
- neh = uwb_rc_neh_lookup(rc, rceb);
- if (neh) {
-- del_timer_sync(&neh->timer);
-+ spin_lock_irqsave(&rc->neh_lock, flags);
-+ /* to guard against a timeout */
-+ neh->completed = 1;
-+ del_timer(&neh->timer);
-+ spin_unlock_irqrestore(&rc->neh_lock, flags);
- uwb_rc_neh_cb(neh, rceb, size);
- } else
- dev_warn(dev, "event 0x%02x/%04x/%02x (%zu bytes): nobody cared\n",
-@@ -568,6 +574,10 @@ static void uwb_rc_neh_timer(unsigned long arg)
- unsigned long flags;
-
- spin_lock_irqsave(&rc->neh_lock, flags);
-+ if (neh->completed) {
-+ spin_unlock_irqrestore(&rc->neh_lock, flags);
-+ return;
-+ }
- if (neh->context)
- __uwb_rc_neh_rm(rc, neh);
- else
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0014-uwb-fix-error-handling.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0014-uwb-fix-error-handling.patch
deleted file mode 100644
index f4bf93c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0014-uwb-fix-error-handling.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 8a03e18a4ff4ab7f3a6da08bd3f564f8a7aa2c4e Mon Sep 17 00:00:00 2001
-From: Oliver Neukum <oliver at neukum.org>
-Date: Wed, 18 Apr 2012 10:05:55 +0200
-Subject: [PATCH 014/165] uwb: fix error handling
-
-commit 5bd7b419ef2eb4989b207753e088c3437159618a upstream.
-
-Fatal errors such as a device disconnect must not trigger
-error handling. The error returns must be checked.
-
-Signed-off-by: Oliver Neukum <oneukum at suse.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/uwb/hwa-rc.c | 3 ++-
- 1 files changed, 2 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/uwb/hwa-rc.c b/drivers/uwb/hwa-rc.c
-index 2babcd4..86685e9 100644
---- a/drivers/uwb/hwa-rc.c
-+++ b/drivers/uwb/hwa-rc.c
-@@ -645,7 +645,8 @@ void hwarc_neep_cb(struct urb *urb)
- dev_err(dev, "NEEP: URB error %d\n", urb->status);
- }
- result = usb_submit_urb(urb, GFP_ATOMIC);
-- if (result < 0) {
-+ if (result < 0 && result != -ENODEV && result != -EPERM) {
-+ /* ignoring unrecoverable errors */
- dev_err(dev, "NEEP: Can't resubmit URB (%d) resetting device\n",
- result);
- goto error;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0015-davinci_mdio-Fix-MDIO-timeout-check.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0015-davinci_mdio-Fix-MDIO-timeout-check.patch
deleted file mode 100644
index fab7b50..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0015-davinci_mdio-Fix-MDIO-timeout-check.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From e132279cab18984918fc3cc9f8f02c8bd71e2931 Mon Sep 17 00:00:00 2001
-From: Christian Riesch <christian.riesch at omicron.at>
-Date: Mon, 16 Apr 2012 04:35:25 +0000
-Subject: [PATCH 015/165] davinci_mdio: Fix MDIO timeout check
-
-commit 5b76d0600b2b08eef77f8e9226938b7b6bde3099 upstream.
-
-Under heavy load (flood ping) it is possible for the MDIO timeout to
-expire before the loop checks the GO bit again. This patch adds an
-additional check whether the operation was done before actually
-returning -ETIMEDOUT.
-
-To reproduce this bug, flood ping the device, e.g., ping -f -l 1000
-After some time, a "timed out waiting for user access" warning
-may appear. And even worse, link may go down since the PHY reported a
-timeout.
-
-Signed-off-by: Christian Riesch <christian.riesch at omicron.at>
-Cc: Cyril Chemparathy <cyril at ti.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/ethernet/ti/davinci_mdio.c | 5 +++++
- 1 files changed, 5 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/net/ethernet/ti/davinci_mdio.c b/drivers/net/ethernet/ti/davinci_mdio.c
-index 1f14be6..3802de3 100644
---- a/drivers/net/ethernet/ti/davinci_mdio.c
-+++ b/drivers/net/ethernet/ti/davinci_mdio.c
-@@ -185,6 +185,11 @@ static inline int wait_for_user_access(struct davinci_mdio_data *data)
- __davinci_mdio_reset(data);
- return -EAGAIN;
- }
-+
-+ reg = __raw_readl(®s->user[0].access);
-+ if ((reg & USERACCESS_GO) == 0)
-+ return 0;
-+
- dev_err(data->dev, "timed out waiting for user access\n");
- return -ETIMEDOUT;
- }
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0016-mwifiex-update-pcie8766-scratch-register-addresses.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0016-mwifiex-update-pcie8766-scratch-register-addresses.patch
deleted file mode 100644
index fa25fb1..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0016-mwifiex-update-pcie8766-scratch-register-addresses.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From f0553ecfc94510617f6b54a980e86a197e0746ac Mon Sep 17 00:00:00 2001
-From: Bing Zhao <bzhao at marvell.com>
-Date: Thu, 12 Apr 2012 19:00:35 -0700
-Subject: [PATCH 016/165] mwifiex: update pcie8766 scratch register addresses
-
-commit 428ca8a7065354877db63ceabfc493107686eebe upstream.
-
-The scratch register addresses have been changed for newer chips.
-Since the old chip was never shipped and it will not be supported
-any more, just update register addresses to support the new chips.
-
-Signed-off-by: Bing Zhao <bzhao at marvell.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/wireless/mwifiex/pcie.h | 18 +++++++++---------
- 1 files changed, 9 insertions(+), 9 deletions(-)
-
-diff --git a/drivers/net/wireless/mwifiex/pcie.h b/drivers/net/wireless/mwifiex/pcie.h
-index 445ff21..2f218f9 100644
---- a/drivers/net/wireless/mwifiex/pcie.h
-+++ b/drivers/net/wireless/mwifiex/pcie.h
-@@ -48,15 +48,15 @@
- #define PCIE_HOST_INT_STATUS_MASK 0xC3C
- #define PCIE_SCRATCH_2_REG 0xC40
- #define PCIE_SCRATCH_3_REG 0xC44
--#define PCIE_SCRATCH_4_REG 0xCC0
--#define PCIE_SCRATCH_5_REG 0xCC4
--#define PCIE_SCRATCH_6_REG 0xCC8
--#define PCIE_SCRATCH_7_REG 0xCCC
--#define PCIE_SCRATCH_8_REG 0xCD0
--#define PCIE_SCRATCH_9_REG 0xCD4
--#define PCIE_SCRATCH_10_REG 0xCD8
--#define PCIE_SCRATCH_11_REG 0xCDC
--#define PCIE_SCRATCH_12_REG 0xCE0
-+#define PCIE_SCRATCH_4_REG 0xCD0
-+#define PCIE_SCRATCH_5_REG 0xCD4
-+#define PCIE_SCRATCH_6_REG 0xCD8
-+#define PCIE_SCRATCH_7_REG 0xCDC
-+#define PCIE_SCRATCH_8_REG 0xCE0
-+#define PCIE_SCRATCH_9_REG 0xCE4
-+#define PCIE_SCRATCH_10_REG 0xCE8
-+#define PCIE_SCRATCH_11_REG 0xCEC
-+#define PCIE_SCRATCH_12_REG 0xCF0
-
- #define CPU_INTR_DNLD_RDY BIT(0)
- #define CPU_INTR_DOOR_BELL BIT(1)
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0017-brcm80211-smac-resume-transmit-fifo-upon-receiving-f.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0017-brcm80211-smac-resume-transmit-fifo-upon-receiving-f.patch
deleted file mode 100644
index cbc4a07..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0017-brcm80211-smac-resume-transmit-fifo-upon-receiving-f.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From 97f7538da8a6b3e8cef6322b2024817759393079 Mon Sep 17 00:00:00 2001
-From: Arend van Spriel <arend at broadcom.com>
-Date: Wed, 11 Apr 2012 11:52:51 +0200
-Subject: [PATCH 017/165] brcm80211: smac: resume transmit fifo upon receiving
- frames
-
-commit badc4f07622f0f7093a201638f45e85765f1b5e4 upstream.
-
-There have been reports about not being able to use access-points
-on channel 12 and 13 or having connectivity issues when these channels
-were part of the selected regulatory domain. Upon switching to these
-channels the brcmsmac driver suspends the transmit dma fifos. This
-patch resumes them upon handing over the first received beacon to
-mac80211.
-
-This patch is to be applied to the stable tree for kernel versions
-3.2 and 3.3.
-
-Tested-by: Francesco Saverio Schiavarelli <fschiava at libero.it>
-Reviewed-by: Pieter-Paul Giesberts <pieterpg at broadcom.com>
-Reviewed-by: Brett Rudley <brudley at broadcom.com>
-Signed-off-by: Arend van Spriel <arend at broadcom.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/wireless/brcm80211/brcmsmac/main.c | 8 ++++++++
- 1 files changed, 8 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/net/wireless/brcm80211/brcmsmac/main.c b/drivers/net/wireless/brcm80211/brcmsmac/main.c
-index 453f58e..f98becc 100644
---- a/drivers/net/wireless/brcm80211/brcmsmac/main.c
-+++ b/drivers/net/wireless/brcm80211/brcmsmac/main.c
-@@ -7865,6 +7865,7 @@ brcms_c_recvctl(struct brcms_c_info *wlc, struct d11rxhdr *rxh,
- {
- int len_mpdu;
- struct ieee80211_rx_status rx_status;
-+ struct ieee80211_hdr *hdr;
-
- memset(&rx_status, 0, sizeof(rx_status));
- prep_mac80211_status(wlc, rxh, p, &rx_status);
-@@ -7874,6 +7875,13 @@ brcms_c_recvctl(struct brcms_c_info *wlc, struct d11rxhdr *rxh,
- skb_pull(p, D11_PHY_HDR_LEN);
- __skb_trim(p, len_mpdu);
-
-+ /* unmute transmit */
-+ if (wlc->hw->suspended_fifos) {
-+ hdr = (struct ieee80211_hdr *)p->data;
-+ if (ieee80211_is_beacon(hdr->frame_control))
-+ brcms_b_mute(wlc->hw, false);
-+ }
-+
- memcpy(IEEE80211_SKB_RXCB(p), &rx_status, sizeof(rx_status));
- ieee80211_rx_irqsafe(wlc->pub->ieee_hw, p);
- }
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0018-rc-core-set-mode-for-winbond-cir.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0018-rc-core-set-mode-for-winbond-cir.patch
deleted file mode 100644
index 9e59a20..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0018-rc-core-set-mode-for-winbond-cir.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 6dd8dc1e17571cbe55630e5d1e85aa7e27a0b257 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?David=20H=C3=A4rdeman?= <david at hardeman.nu>
-Date: Sun, 8 Apr 2012 06:13:04 -0300
-Subject: [PATCH 018/165] rc-core: set mode for winbond-cir
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit d9b786955f80fb306471fdb9ea24c6d03af6ca36 upstream.
-
-Setting the correct mode is required by rc-core or scancodes won't be
-generated (which isn't very user-friendly).
-
-This one-line fix should be suitable for 3.4-rc2.
-
-Signed-off-by: David Härdeman <david at hardeman.nu>
-Signed-off-by: Mauro Carvalho Chehab <mchehab at redhat.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/media/rc/winbond-cir.c | 1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/media/rc/winbond-cir.c b/drivers/media/rc/winbond-cir.c
-index 13f54b5..a7e7d6f 100644
---- a/drivers/media/rc/winbond-cir.c
-+++ b/drivers/media/rc/winbond-cir.c
-@@ -1046,6 +1046,7 @@ wbcir_probe(struct pnp_dev *device, const struct pnp_device_id *dev_id)
- goto exit_unregister_led;
- }
-
-+ data->dev->driver_type = RC_DRIVER_IR_RAW;
- data->dev->driver_name = WBCIR_NAME;
- data->dev->input_name = WBCIR_NAME;
- data->dev->input_phys = "wbcir/cir0";
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0019-drxk-Does-not-unlock-mutex-if-sanity-check-failed-in.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0019-drxk-Does-not-unlock-mutex-if-sanity-check-failed-in.patch
deleted file mode 100644
index 430687c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0019-drxk-Does-not-unlock-mutex-if-sanity-check-failed-in.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From d5cc94665b578e3e5e87884fb802e49b2f276298 Mon Sep 17 00:00:00 2001
-From: Alexey Khoroshilov <khoroshilov at ispras.ru>
-Date: Thu, 5 Apr 2012 18:53:20 -0300
-Subject: [PATCH 019/165] drxk: Does not unlock mutex if sanity check failed
- in scu_command()
-
-commit e4459e1682c107d7ee1bf102c1ba534230e9b50b upstream.
-
-If sanity check fails in scu_command(), goto error leads to unlock of
-an unheld mutex. The check should not fail in reality, but it nevertheless
-worth fixing.
-
-Found by Linux Driver Verification project (linuxtesting.org).
-
-Signed-off-by: Alexey Khoroshilov <khoroshilov at ispras.ru>
-Signed-off-by: Mauro Carvalho Chehab <mchehab at redhat.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/media/dvb/frontends/drxk_hard.c | 6 ++++--
- 1 files changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/media/dvb/frontends/drxk_hard.c b/drivers/media/dvb/frontends/drxk_hard.c
-index f6431ef..a1f5e3d 100644
---- a/drivers/media/dvb/frontends/drxk_hard.c
-+++ b/drivers/media/dvb/frontends/drxk_hard.c
-@@ -1523,8 +1523,10 @@ static int scu_command(struct drxk_state *state,
- dprintk(1, "\n");
-
- if ((cmd == 0) || ((parameterLen > 0) && (parameter == NULL)) ||
-- ((resultLen > 0) && (result == NULL)))
-- goto error;
-+ ((resultLen > 0) && (result == NULL))) {
-+ printk(KERN_ERR "drxk: Error %d on %s\n", status, __func__);
-+ return status;
-+ }
-
- mutex_lock(&state->mutex);
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0020-cfg80211-fix-interface-combinations-check.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0020-cfg80211-fix-interface-combinations-check.patch
deleted file mode 100644
index f1969a4..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0020-cfg80211-fix-interface-combinations-check.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 9080bb10c5fa9dc3a8c358eec3bffc5e0dd29ea8 Mon Sep 17 00:00:00 2001
-From: Lukasz Kucharczyk <lukasz.kucharczyk at tieto.com>
-Date: Wed, 11 Apr 2012 14:55:10 +0200
-Subject: [PATCH 020/165] cfg80211: fix interface combinations check.
-
-commit e55a4046dab28c440c96890bdddcf02dc8981f2d upstream.
-
-Signed-off-by: Lukasz Kucharczyk <lukasz.kucharczyk at tieto.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/wireless/util.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/net/wireless/util.c b/net/wireless/util.c
-index 4dde429..8bf8902 100644
---- a/net/wireless/util.c
-+++ b/net/wireless/util.c
-@@ -996,7 +996,7 @@ int cfg80211_can_change_interface(struct cfg80211_registered_device *rdev,
- if (rdev->wiphy.software_iftypes & BIT(iftype))
- continue;
- for (j = 0; j < c->n_limits; j++) {
-- if (!(limits[j].types & iftype))
-+ if (!(limits[j].types & BIT(iftype)))
- continue;
- if (limits[j].max < num[iftype])
- goto cont;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0021-Fix-modpost-failures-in-fedora-17.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0021-Fix-modpost-failures-in-fedora-17.patch
deleted file mode 100644
index 5de8b33..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0021-Fix-modpost-failures-in-fedora-17.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From 3ff39b2411c6722c1ee6c490ac4ec7f90f026d64 Mon Sep 17 00:00:00 2001
-From: David Miller <davem at davemloft.net>
-Date: Wed, 25 Apr 2012 19:41:32 -0500
-Subject: [PATCH 021/165] Fix modpost failures in fedora 17
-
-commit e88aa7bbbe3046a125ea1936b16bb921cc9c6349 upstream.
-
-The symbol table on x86-64 starts to have entries that have names
-like:
-
-_GLOBAL__sub_I_65535_0___mod_x86cpu_device_table
-
-They are of type STT_FUNCTION and this one had a length of 18. This
-matched the device ID validation logic and it barfed because the
-length did not meet the device type's criteria.
-
---------------------
-FATAL: arch/x86/crypto/aesni-intel: sizeof(struct x86cpu_device_id)=16 is not a modulo of the size of section __mod_x86cpu_device_table=18.
-Fix definition of struct x86cpu_device_id in mod_devicetable.h
---------------------
-
-These are some kind of compiler tool internal stuff being emitted and
-not something we want to inspect in modpost's device ID table
-validation code.
-
-So skip the symbol if it is not of type STT_OBJECT.
-
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Acked-by: Sam Ravnborg <sam at ravnborg.org>
-Signed-off-by: Michal Marek <mmarek at suse.cz>
-Signed-off-by: Jonathan Nieder <jrnieder at gmail.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- scripts/mod/file2alias.c | 4 ++++
- 1 files changed, 4 insertions(+), 0 deletions(-)
-
-diff --git a/scripts/mod/file2alias.c b/scripts/mod/file2alias.c
-index f936d1f..d1d0ae8 100644
---- a/scripts/mod/file2alias.c
-+++ b/scripts/mod/file2alias.c
-@@ -926,6 +926,10 @@ void handle_moddevtable(struct module *mod, struct elf_info *info,
- if (!sym->st_shndx || get_secindex(info, sym) >= info->num_sections)
- return;
-
-+ /* We're looking for an object */
-+ if (ELF_ST_TYPE(sym->st_info) != STT_OBJECT)
-+ return;
-+
- /* Handle all-NULL symbols allocated into .bss */
- if (info->sechdrs[get_secindex(info, sym)].sh_type & SHT_NOBITS) {
- zeros = calloc(1, sym->st_size);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0022-mm-fix-s390-BUG-by-__set_page_dirty_no_writeback-on-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0022-mm-fix-s390-BUG-by-__set_page_dirty_no_writeback-on-.patch
deleted file mode 100644
index 4ba10ab..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0022-mm-fix-s390-BUG-by-__set_page_dirty_no_writeback-on-.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From 8afb43e5f076643f012d0267aebb215cc0f0767b Mon Sep 17 00:00:00 2001
-From: Hugh Dickins <hughd at google.com>
-Date: Mon, 23 Apr 2012 11:14:50 -0700
-Subject: [PATCH 022/165] mm: fix s390 BUG by __set_page_dirty_no_writeback on
- swap
-
-commit aca50bd3b4c4bb5528a1878158ba7abce41de534 upstream.
-
-Mel reports a BUG_ON(slot == NULL) in radix_tree_tag_set() on s390
-3.0.13: called from __set_page_dirty_nobuffers() when page_remove_rmap()
-tries to transfer dirty flag from s390 storage key to struct page and
-radix_tree.
-
-That would be because of reclaim's shrink_page_list() calling
-add_to_swap() on this page at the same time: first PageSwapCache is set
-(causing page_mapping(page) to appear as &swapper_space), then
-page->private set, then tree_lock taken, then page inserted into
-radix_tree - so there's an interval before taking the lock when the
-radix_tree slot is empty.
-
-We could fix this by moving __add_to_swap_cache()'s spin_lock_irq up
-before the SetPageSwapCache. But a better fix is simply to do what's
-five years overdue: Ken Chen introduced __set_page_dirty_no_writeback()
-(if !PageDirty TestSetPageDirty) for tmpfs to skip all the radix_tree
-overhead, and swap is just the same - it ignores the radix_tree tag, and
-does not participate in dirty page accounting, so should be using
-__set_page_dirty_no_writeback() too.
-
-s390 testing now confirms that this does indeed fix the problem.
-
-Reported-by: Mel Gorman <mgorman at suse.de>
-Signed-off-by: Hugh Dickins <hughd at google.com>
-Acked-by: Mel Gorman <mgorman at suse.de>
-Cc: Andrew Morton <akpm at linux-foundation.org>
-Cc: Martin Schwidefsky <schwidefsky at de.ibm.com>
-Cc: Heiko Carstens <heiko.carstens at de.ibm.com>
-Cc: Rik van Riel <riel at redhat.com>
-Cc: Ken Chen <kenchen at google.com>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- mm/swap_state.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/mm/swap_state.c b/mm/swap_state.c
-index 78cc4d1..7704d9c 100644
---- a/mm/swap_state.c
-+++ b/mm/swap_state.c
-@@ -27,7 +27,7 @@
- */
- static const struct address_space_operations swap_aops = {
- .writepage = swap_writepage,
-- .set_page_dirty = __set_page_dirty_nobuffers,
-+ .set_page_dirty = __set_page_dirty_no_writeback,
- .migratepage = migrate_page,
- };
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0023-md-fix-possible-corruption-of-array-metadata-on-shut.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0023-md-fix-possible-corruption-of-array-metadata-on-shut.patch
deleted file mode 100644
index 62b6bfd..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0023-md-fix-possible-corruption-of-array-metadata-on-shut.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From fd272b3336e1e535826cc345e10353eb104363e8 Mon Sep 17 00:00:00 2001
-From: NeilBrown <neilb at suse.de>
-Date: Tue, 24 Apr 2012 10:23:16 +1000
-Subject: [PATCH 023/165] md: fix possible corruption of array metadata on
- shutdown.
-
-commit 30b8aa9172dfeaac6d77897c67ee9f9fc574cdbb upstream.
-
-commit c744a65c1e2d59acc54333ce8
- md: don't set md arrays to readonly on shutdown.
-
-removed the possibility of a 'BUG' when data is written to an array
-that has just been switched to read-only, but also introduced the
-possibility that the array metadata could be corrupted.
-
-If, when md_notify_reboot gets the mddev lock, the array is
-in a state where it is assembled but hasn't been started (as can
-happen if the personality module is not available, or in other unusual
-situations), then incorrect metadata will be written out making it
-impossible to re-assemble the array.
-
-So only call __md_stop_writes() if the array has actually been
-activated.
-
-This patch is needed for any stable kernel which has had the above
-commit applied.
-
-Reported-by: Christoph Nelles <evilazrael at evilazrael.de>
-Signed-off-by: NeilBrown <neilb at suse.de>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/md/md.c | 3 ++-
- 1 files changed, 2 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/md/md.c b/drivers/md/md.c
-index 6f37aa4..065ab4f 100644
---- a/drivers/md/md.c
-+++ b/drivers/md/md.c
-@@ -8100,7 +8100,8 @@ static int md_notify_reboot(struct notifier_block *this,
-
- for_each_mddev(mddev, tmp) {
- if (mddev_trylock(mddev)) {
-- __md_stop_writes(mddev);
-+ if (mddev->pers)
-+ __md_stop_writes(mddev);
- mddev->safemode = 2;
- mddev_unlock(mddev);
- }
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0024-jbd2-use-GFP_NOFS-for-blkdev_issue_flush.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0024-jbd2-use-GFP_NOFS-for-blkdev_issue_flush.patch
deleted file mode 100644
index 2c66b9a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0024-jbd2-use-GFP_NOFS-for-blkdev_issue_flush.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From 6556e20032c10ba45a6101a9454265c0f8c0fbc6 Mon Sep 17 00:00:00 2001
-From: Shaohua Li <shli at kernel.org>
-Date: Fri, 13 Apr 2012 10:27:35 +0800
-Subject: [PATCH 024/165] jbd2: use GFP_NOFS for blkdev_issue_flush
-
-commit 99aa78466777083255b876293e9e83dec7cd809a upstream.
-
-flush request is issued in transaction commit code path, so looks using
-GFP_KERNEL to allocate memory for flush request bio falls into the classic
-deadlock issue. I saw btrfs and dm get it right, but ext4, xfs and md are
-using GFP.
-
-Signed-off-by: Shaohua Li <shli at fusionio.com>
-Signed-off-by: Theodore Ts'o <tytso at mit.edu>
-Reviewed-by: Jan Kara <jack at suse.cz>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/jbd2/commit.c | 4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/fs/jbd2/commit.c b/fs/jbd2/commit.c
-index 68d704d..d751f04 100644
---- a/fs/jbd2/commit.c
-+++ b/fs/jbd2/commit.c
-@@ -683,7 +683,7 @@ start_journal_io:
- if (commit_transaction->t_need_data_flush &&
- (journal->j_fs_dev != journal->j_dev) &&
- (journal->j_flags & JBD2_BARRIER))
-- blkdev_issue_flush(journal->j_fs_dev, GFP_KERNEL, NULL);
-+ blkdev_issue_flush(journal->j_fs_dev, GFP_NOFS, NULL);
-
- /* Done it all: now write the commit record asynchronously. */
- if (JBD2_HAS_INCOMPAT_FEATURE(journal,
-@@ -819,7 +819,7 @@ wait_for_iobuf:
- if (JBD2_HAS_INCOMPAT_FEATURE(journal,
- JBD2_FEATURE_INCOMPAT_ASYNC_COMMIT) &&
- journal->j_flags & JBD2_BARRIER) {
-- blkdev_issue_flush(journal->j_dev, GFP_KERNEL, NULL);
-+ blkdev_issue_flush(journal->j_dev, GFP_NOFS, NULL);
- }
-
- if (err)
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0025-USB-serial-cp210x-Fixed-usb_control_msg-timeout-valu.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0025-USB-serial-cp210x-Fixed-usb_control_msg-timeout-valu.patch
deleted file mode 100644
index 027f7e7..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0025-USB-serial-cp210x-Fixed-usb_control_msg-timeout-valu.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From f9515bb74e74a5f3f7cb963984bdd8c8731495ff Mon Sep 17 00:00:00 2001
-From: Yuri Matylitski <ym at tekinsoft.com>
-Date: Fri, 20 Apr 2012 12:38:32 +0300
-Subject: [PATCH 025/165] USB: serial: cp210x: Fixed usb_control_msg timeout
- values
-
-commit 2d5733fcd33dd451022d197cb6b476e970519ca7 upstream.
-
-Fixed too small hardcoded timeout values for usb_control_msg
-in driver for SiliconLabs cp210x-based usb-to-serial adapters.
-Replaced with USB_CTRL_GET_TIMEOUT/USB_CTRL_SET_TIMEOUT.
-
-Signed-off-by: Yuri Matylitski <ym at tekinsoft.com>
-Acked-by: Kirill A. Shutemov <kirill at shutemov.name>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/serial/cp210x.c | 9 ++++++---
- 1 files changed, 6 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/usb/serial/cp210x.c b/drivers/usb/serial/cp210x.c
-index 4c12404..f2c57e0 100644
---- a/drivers/usb/serial/cp210x.c
-+++ b/drivers/usb/serial/cp210x.c
-@@ -285,7 +285,8 @@ static int cp210x_get_config(struct usb_serial_port *port, u8 request,
- /* Issue the request, attempting to read 'size' bytes */
- result = usb_control_msg(serial->dev, usb_rcvctrlpipe(serial->dev, 0),
- request, REQTYPE_DEVICE_TO_HOST, 0x0000,
-- port_priv->bInterfaceNumber, buf, size, 300);
-+ port_priv->bInterfaceNumber, buf, size,
-+ USB_CTRL_GET_TIMEOUT);
-
- /* Convert data into an array of integers */
- for (i = 0; i < length; i++)
-@@ -335,12 +336,14 @@ static int cp210x_set_config(struct usb_serial_port *port, u8 request,
- result = usb_control_msg(serial->dev,
- usb_sndctrlpipe(serial->dev, 0),
- request, REQTYPE_HOST_TO_DEVICE, 0x0000,
-- port_priv->bInterfaceNumber, buf, size, 300);
-+ port_priv->bInterfaceNumber, buf, size,
-+ USB_CTRL_SET_TIMEOUT);
- } else {
- result = usb_control_msg(serial->dev,
- usb_sndctrlpipe(serial->dev, 0),
- request, REQTYPE_HOST_TO_DEVICE, data[0],
-- port_priv->bInterfaceNumber, NULL, 0, 300);
-+ port_priv->bInterfaceNumber, NULL, 0,
-+ USB_CTRL_SET_TIMEOUT);
- }
-
- kfree(buf);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0026-pch_uart-Fix-dma-channel-unallocated-issue.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0026-pch_uart-Fix-dma-channel-unallocated-issue.patch
deleted file mode 100644
index e150ebb..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0026-pch_uart-Fix-dma-channel-unallocated-issue.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From 069f7216ddee90ddca6e1d040e58b6735f89fca6 Mon Sep 17 00:00:00 2001
-From: Tomoya MORINAGA <tomoya.rohm at gmail.com>
-Date: Thu, 12 Apr 2012 10:47:50 +0900
-Subject: [PATCH 026/165] pch_uart: Fix dma channel unallocated issue
-
-commit af6d17cdc8c89aeb3101f0d27cd32fc0592b40b2 upstream.
-
-This driver anticipates pch_uart_verify_port() is not called
-during installation.
-However, actually pch_uart_verify_port() is called during
-installation.
-As a result, memory access violation occurs like below.
-
-0. initial value: use_dma=0
-1. starup()
- - dma channel is not allocated because use_dma=0
-2. pch_uart_verify_port()
- - Set use_dma=1
-3. UART processing acts DMA mode because use_dma=1
- - memory access violation occurs!
-
-This patch fixes the issue.
-
-Solution:
-Whenever pch_uart_verify_port() is called and then
-dma channel is not allocated, the channel should be allocated.
-
-Signed-off-by: Tomoya MORINAGA <tomoya.rohm at gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-[bwh: Backported to 3.2: adjust context]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/tty/serial/pch_uart.c | 4 +++-
- 1 files changed, 3 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/tty/serial/pch_uart.c b/drivers/tty/serial/pch_uart.c
-index da776a0..a4b192d 100644
---- a/drivers/tty/serial/pch_uart.c
-+++ b/drivers/tty/serial/pch_uart.c
-@@ -1356,9 +1356,11 @@ static int pch_uart_verify_port(struct uart_port *port,
- __func__);
- return -EOPNOTSUPP;
- #endif
-- priv->use_dma = 1;
- priv->use_dma_flag = 1;
- dev_info(priv->port.dev, "PCH UART : Use DMA Mode\n");
-+ if (!priv->use_dma)
-+ pch_request_dma(port);
-+ priv->use_dma = 1;
- }
-
- return 0;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0027-drivers-tty-amiserial.c-add-missing-tty_unlock.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0027-drivers-tty-amiserial.c-add-missing-tty_unlock.patch
deleted file mode 100644
index 4b935aa..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0027-drivers-tty-amiserial.c-add-missing-tty_unlock.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From fefc2c6916651c05eed1882c3a59a6468d91e417 Mon Sep 17 00:00:00 2001
-From: Julia Lawall <Julia.Lawall at lip6.fr>
-Date: Thu, 19 Apr 2012 18:12:40 +0200
-Subject: [PATCH 027/165] drivers/tty/amiserial.c: add missing tty_unlock
-
-commit d3a7b83f865b46bb7b5e1ed18a129ce1af349db4 upstream.
-
-tty_unlock is used on all other exits from the function.
-
-Signed-off-by: Julia Lawall <Julia.Lawall at lip6.fr>
-Acked-by: Jiri Slaby <jslaby at suse.cz>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/tty/amiserial.c | 4 +++-
- 1 files changed, 3 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/tty/amiserial.c b/drivers/tty/amiserial.c
-index b84c834..8daf073 100644
---- a/drivers/tty/amiserial.c
-+++ b/drivers/tty/amiserial.c
-@@ -1113,8 +1113,10 @@ static int set_serial_info(struct async_struct * info,
- (new_serial.close_delay != state->close_delay) ||
- (new_serial.xmit_fifo_size != state->xmit_fifo_size) ||
- ((new_serial.flags & ~ASYNC_USR_MASK) !=
-- (state->flags & ~ASYNC_USR_MASK)))
-+ (state->flags & ~ASYNC_USR_MASK))) {
-+ tty_unlock();
- return -EPERM;
-+ }
- state->flags = ((state->flags & ~ASYNC_USR_MASK) |
- (new_serial.flags & ASYNC_USR_MASK));
- info->flags = ((info->flags & ~ASYNC_USR_MASK) |
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0028-USB-sierra-avoid-QMI-wwan-interface-on-MC77xx.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0028-USB-sierra-avoid-QMI-wwan-interface-on-MC77xx.patch
deleted file mode 100644
index 2158fa8..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0028-USB-sierra-avoid-QMI-wwan-interface-on-MC77xx.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From 769a100618c82ac6e8e284cc14a5fbffe13e31ce Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Bj=C3=B8rn=20Mork?= <bjorn at mork.no>
-Date: Tue, 17 Apr 2012 21:37:29 +0200
-Subject: [PATCH 028/165] USB: sierra: avoid QMI/wwan interface on MC77xx
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit 749541d19e70905e3971f2a08335a206a98e4d0c upstream.
-
-These devices have a number of non serial interfaces as well. Use
-the existing "Direct IP" blacklist to prevent binding to interfaces
-which are handled by other drivers.
-
-We also extend the "Direct IP" blacklist with with interfaces only
-seen in "QMI" mode, assuming that these devices use the same
-interface numbers for serial interfaces both in "Direct IP" and in
-"QMI" mode.
-
-Signed-off-by: Bjørn Mork <bjorn at mork.no>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/serial/sierra.c | 6 ++++--
- 1 files changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/usb/serial/sierra.c b/drivers/usb/serial/sierra.c
-index 7c3ec9e..e093585 100644
---- a/drivers/usb/serial/sierra.c
-+++ b/drivers/usb/serial/sierra.c
-@@ -221,7 +221,7 @@ static const struct sierra_iface_info typeB_interface_list = {
- };
-
- /* 'blacklist' of interfaces not served by this driver */
--static const u8 direct_ip_non_serial_ifaces[] = { 7, 8, 9, 10, 11 };
-+static const u8 direct_ip_non_serial_ifaces[] = { 7, 8, 9, 10, 11, 19, 20 };
- static const struct sierra_iface_info direct_ip_interface_blacklist = {
- .infolen = ARRAY_SIZE(direct_ip_non_serial_ifaces),
- .ifaceinfo = direct_ip_non_serial_ifaces,
-@@ -289,7 +289,6 @@ static const struct usb_device_id id_table[] = {
- { USB_DEVICE(0x1199, 0x6856) }, /* Sierra Wireless AirCard 881 U */
- { USB_DEVICE(0x1199, 0x6859) }, /* Sierra Wireless AirCard 885 E */
- { USB_DEVICE(0x1199, 0x685A) }, /* Sierra Wireless AirCard 885 E */
-- { USB_DEVICE(0x1199, 0x68A2) }, /* Sierra Wireless MC7710 */
- /* Sierra Wireless C885 */
- { USB_DEVICE_AND_INTERFACE_INFO(0x1199, 0x6880, 0xFF, 0xFF, 0xFF)},
- /* Sierra Wireless C888, Air Card 501, USB 303, USB 304 */
-@@ -299,6 +298,9 @@ static const struct usb_device_id id_table[] = {
- /* Sierra Wireless HSPA Non-Composite Device */
- { USB_DEVICE_AND_INTERFACE_INFO(0x1199, 0x6892, 0xFF, 0xFF, 0xFF)},
- { USB_DEVICE(0x1199, 0x6893) }, /* Sierra Wireless Device */
-+ { USB_DEVICE(0x1199, 0x68A2), /* Sierra Wireless MC77xx in QMI mode */
-+ .driver_info = (kernel_ulong_t)&direct_ip_interface_blacklist
-+ },
- { USB_DEVICE(0x1199, 0x68A3), /* Sierra Wireless Direct IP modems */
- .driver_info = (kernel_ulong_t)&direct_ip_interface_blacklist
- },
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0029-EHCI-fix-criterion-for-resuming-the-root-hub.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0029-EHCI-fix-criterion-for-resuming-the-root-hub.patch
deleted file mode 100644
index ca463cc..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0029-EHCI-fix-criterion-for-resuming-the-root-hub.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From 611589daeef0bd0f6b36f1fbb17f34b6abf05568 Mon Sep 17 00:00:00 2001
-From: Alan Stern <stern at rowland.harvard.edu>
-Date: Tue, 17 Apr 2012 15:24:15 -0400
-Subject: [PATCH 029/165] EHCI: fix criterion for resuming the root hub
-
-commit dc75ce9d929aabeb0843a6b1a4ab320e58ba1597 upstream.
-
-This patch (as1542) changes the criterion ehci-hcd uses to tell when
-it needs to resume the controller's root hub. A resume is needed when
-a port status change is detected, obviously, but only if the root hub
-is currently suspended.
-
-Right now the driver tests whether the root hub is running, and that
-is not the correct test. In particular, if the controller has died
-then the root hub should not be restarted. In addition, some buggy
-hardware occasionally requires the root hub to be running and
-sending out SOF packets even while it is nominally supposed to be
-suspended.
-
-In the end, the test needs to be changed. Rather than checking whether
-the root hub is currently running, the driver will now check whether
-the root hub is currently suspended. This will yield the correct
-behavior in all cases.
-
-Signed-off-by: Alan Stern <stern at rowland.harvard.edu>
-CC: Peter Chen <B29397 at freescale.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/host/ehci-hcd.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c
-index 3ff9f82..ffbbf54 100644
---- a/drivers/usb/host/ehci-hcd.c
-+++ b/drivers/usb/host/ehci-hcd.c
-@@ -867,7 +867,7 @@ static irqreturn_t ehci_irq (struct usb_hcd *hcd)
- pcd_status = status;
-
- /* resume root hub? */
-- if (!(cmd & CMD_RUN))
-+ if (ehci->rh_state == EHCI_RH_SUSPENDED)
- usb_hcd_resume_root_hub(hcd);
-
- /* get per-port change detect bits */
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0030-EHCI-always-clear-the-STS_FLR-status-bit.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0030-EHCI-always-clear-the-STS_FLR-status-bit.patch
deleted file mode 100644
index 3775ae0..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0030-EHCI-always-clear-the-STS_FLR-status-bit.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 2259a159b9b3861dcc0c8cd9c52ef85cb11ad2a5 Mon Sep 17 00:00:00 2001
-From: Alan Stern <stern at rowland.harvard.edu>
-Date: Wed, 18 Apr 2012 11:33:00 -0400
-Subject: [PATCH 030/165] EHCI: always clear the STS_FLR status bit
-
-commit 2fbe2bf1fd37f9d99950bd8d8093623cf22cf08b upstream.
-
-This patch (as1544) fixes a problem affecting some EHCI controllers.
-They can generate interrupts whenever the STS_FLR status bit is turned
-on, even though that bit is masked out in the Interrupt Enable
-register.
-
-Since the driver doesn't use STS_FLR anyway, the patch changes the
-interrupt routine to clear that bit whenever it is set, rather than
-leaving it alone.
-
-Signed-off-by: Alan Stern <stern at rowland.harvard.edu>
-Reported-and-tested-by: Tomoya MORINAGA <tomoya.rohm at gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/host/ehci-hcd.c | 7 ++++++-
- 1 files changed, 6 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c
-index ffbbf54..da2f711 100644
---- a/drivers/usb/host/ehci-hcd.c
-+++ b/drivers/usb/host/ehci-hcd.c
-@@ -815,8 +815,13 @@ static irqreturn_t ehci_irq (struct usb_hcd *hcd)
- goto dead;
- }
-
-+ /*
-+ * We don't use STS_FLR, but some controllers don't like it to
-+ * remain on, so mask it out along with the other status bits.
-+ */
-+ masked_status = status & (INTR_MASK | STS_FLR);
-+
- /* Shared IRQ? */
-- masked_status = status & INTR_MASK;
- if (!masked_status || unlikely(ehci->rh_state == EHCI_RH_HALTED)) {
- spin_unlock(&ehci->lock);
- return IRQ_NONE;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0031-USB-fix-deadlock-in-bConfigurationValue-attribute-me.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0031-USB-fix-deadlock-in-bConfigurationValue-attribute-me.patch
deleted file mode 100644
index 629cb81..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0031-USB-fix-deadlock-in-bConfigurationValue-attribute-me.patch
+++ /dev/null
@@ -1,116 +0,0 @@
-From 770feb782844457789a51d13d2933cca141bb487 Mon Sep 17 00:00:00 2001
-From: Alan Stern <stern at rowland.harvard.edu>
-Date: Tue, 17 Apr 2012 15:22:39 -0400
-Subject: [PATCH 031/165] USB: fix deadlock in bConfigurationValue attribute
- method
-
-commit 8963c487a80b4688c9e68dcc504a90074aacc145 upstream.
-
-This patch (as154) fixes a self-deadlock that occurs when userspace
-writes to the bConfigurationValue sysfs attribute for a hub with
-children. The task tries to lock the bandwidth_mutex at a time when
-it already owns the lock:
-
- The attribute's method calls usb_set_configuration(),
- which calls usb_disable_device() with the bandwidth_mutex
- held.
-
- usb_disable_device() unregisters the existing interfaces,
- which causes the hub driver to be unbound.
-
- The hub_disconnect() routine calls hub_quiesce(), which
- calls usb_disconnect() for each of the hub's children.
-
- usb_disconnect() attempts to acquire the bandwidth_mutex
- around a call to usb_disable_device().
-
-The solution is to make usb_disable_device() acquire the mutex for
-itself instead of requiring the caller to hold it. Then the mutex can
-cover only the bandwidth deallocation operation and not the region
-where the interfaces are unregistered.
-
-This has the potential to change system behavior slightly when a
-config change races with another config or altsetting change. Some of
-the bandwidth released from the old config might get claimed by the
-other config or altsetting, make it impossible to restore the old
-config in case of a failure. But since we don't try to recover from
-config-change failures anyway, this doesn't matter.
-
-[This should be marked for stable kernels that contain the commit
-fccf4e86200b8f5edd9a65da26f150e32ba79808 "USB: Free bandwidth when
-usb_disable_device is called."
-That commit was marked for stable kernels as old as 2.6.32.]
-
-Signed-off-by: Alan Stern <stern at rowland.harvard.edu>
-Signed-off-by: Sarah Sharp <sarah.a.sharp at linux.intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/core/hub.c | 3 ---
- drivers/usb/core/message.c | 6 +++---
- 2 files changed, 3 insertions(+), 6 deletions(-)
-
-diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
-index 18373ec..ab4e49f 100644
---- a/drivers/usb/core/hub.c
-+++ b/drivers/usb/core/hub.c
-@@ -1644,7 +1644,6 @@ void usb_disconnect(struct usb_device **pdev)
- {
- struct usb_device *udev = *pdev;
- int i;
-- struct usb_hcd *hcd = bus_to_hcd(udev->bus);
-
- /* mark the device as inactive, so any further urb submissions for
- * this device (and any of its children) will fail immediately.
-@@ -1667,9 +1666,7 @@ void usb_disconnect(struct usb_device **pdev)
- * so that the hardware is now fully quiesced.
- */
- dev_dbg (&udev->dev, "unregistering device\n");
-- mutex_lock(hcd->bandwidth_mutex);
- usb_disable_device(udev, 0);
-- mutex_unlock(hcd->bandwidth_mutex);
- usb_hcd_synchronize_unlinks(udev);
-
- usb_remove_ep_devs(&udev->ep0);
-diff --git a/drivers/usb/core/message.c b/drivers/usb/core/message.c
-index aed3e07..ca717da 100644
---- a/drivers/usb/core/message.c
-+++ b/drivers/usb/core/message.c
-@@ -1136,8 +1136,6 @@ void usb_disable_interface(struct usb_device *dev, struct usb_interface *intf,
- * Deallocates hcd/hardware state for the endpoints (nuking all or most
- * pending urbs) and usbcore state for the interfaces, so that usbcore
- * must usb_set_configuration() before any interfaces could be used.
-- *
-- * Must be called with hcd->bandwidth_mutex held.
- */
- void usb_disable_device(struct usb_device *dev, int skip_ep0)
- {
-@@ -1190,7 +1188,9 @@ void usb_disable_device(struct usb_device *dev, int skip_ep0)
- usb_disable_endpoint(dev, i + USB_DIR_IN, false);
- }
- /* Remove endpoints from the host controller internal state */
-+ mutex_lock(hcd->bandwidth_mutex);
- usb_hcd_alloc_bandwidth(dev, NULL, NULL, NULL);
-+ mutex_unlock(hcd->bandwidth_mutex);
- /* Second pass: remove endpoint pointers */
- }
- for (i = skip_ep0; i < 16; ++i) {
-@@ -1750,7 +1750,6 @@ free_interfaces:
- /* if it's already configured, clear out old state first.
- * getting rid of old interfaces means unbinding their drivers.
- */
-- mutex_lock(hcd->bandwidth_mutex);
- if (dev->state != USB_STATE_ADDRESS)
- usb_disable_device(dev, 1); /* Skip ep0 */
-
-@@ -1763,6 +1762,7 @@ free_interfaces:
- * host controller will not allow submissions to dropped endpoints. If
- * this call fails, the device state is unchanged.
- */
-+ mutex_lock(hcd->bandwidth_mutex);
- ret = usb_hcd_alloc_bandwidth(dev, cp, NULL, NULL);
- if (ret < 0) {
- mutex_unlock(hcd->bandwidth_mutex);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0032-usb-gadget-eliminate-NULL-pointer-dereference-bugfix.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0032-usb-gadget-eliminate-NULL-pointer-dereference-bugfix.patch
deleted file mode 100644
index 5d5852d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0032-usb-gadget-eliminate-NULL-pointer-dereference-bugfix.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From fadd4263bca7146d233ff944c17cb0f42a6e2112 Mon Sep 17 00:00:00 2001
-From: Andrzej Pietrasiewicz <andrzej.p at samsung.com>
-Date: Wed, 28 Mar 2012 09:30:50 +0200
-Subject: [PATCH 032/165] usb: gadget: eliminate NULL pointer dereference
- (bugfix)
-
-commit 92b0abf80c5c5f0e0d71d1309688a330fd74731b upstream.
-
-usb: gadget: eliminate NULL pointer dereference (bugfix)
-
-This patch fixes a bug which causes NULL pointer dereference in
-ffs_ep0_ioctl. The bug happens when the FunctionFS is not bound (either
-has not been bound yet or has been bound and then unbound) and can be
-reproduced with running the following commands:
-
-$ insmod g_ffs.ko
-$ mount -t functionfs func /dev/usbgadget
-$ ./null
-
-where null.c is:
-
-#include <fcntl.h>
-#include <linux/usb/functionfs.h>
-
-int main(void)
-{
- int fd = open("/dev/usbgadget/ep0", O_RDWR);
- ioctl(fd, FUNCTIONFS_CLEAR_HALT);
-
- return 0;
-}
-
-Signed-off-by: Andrzej Pietrasiewicz <andrzej.p at samsung.com>
-Signed-off-by: Kyungmin Park <kyungmin.park at samsung.com>
-Signed-off-by: Felipe Balbi <balbi at ti.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/gadget/f_fs.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/usb/gadget/f_fs.c b/drivers/usb/gadget/f_fs.c
-index acb3800..0e641a1 100644
---- a/drivers/usb/gadget/f_fs.c
-+++ b/drivers/usb/gadget/f_fs.c
-@@ -712,7 +712,7 @@ static long ffs_ep0_ioctl(struct file *file, unsigned code, unsigned long value)
- if (code == FUNCTIONFS_INTERFACE_REVMAP) {
- struct ffs_function *func = ffs->func;
- ret = func ? ffs_func_revmap_intf(func, value) : -ENODEV;
-- } else if (gadget->ops->ioctl) {
-+ } else if (gadget && gadget->ops->ioctl) {
- ret = gadget->ops->ioctl(gadget, code, value);
- } else {
- ret = -ENOTTY;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0033-usb-musb-omap-fix-crash-when-musb-glue-omap-gets-ini.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0033-usb-musb-omap-fix-crash-when-musb-glue-omap-gets-ini.patch
deleted file mode 100644
index f8fdb7b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0033-usb-musb-omap-fix-crash-when-musb-glue-omap-gets-ini.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From 839226b88ef2954d750d72f3ce2c6657393b8a09 Mon Sep 17 00:00:00 2001
-From: Kishon Vijay Abraham I <kishon at ti.com>
-Date: Wed, 21 Mar 2012 21:30:20 +0530
-Subject: [PATCH 033/165] usb: musb: omap: fix crash when musb glue (omap)
- gets initialized
-
-commit 3006dc8c627d738693e910c159630e4368c9e86c upstream.
-
-pm_runtime_enable is being called after omap2430_musb_init. Hence
-pm_runtime_get_sync in omap2430_musb_init does not have any effect (does
-not enable clocks) resulting in a crash during register access. It is
-fixed here.
-
-Signed-off-by: Kishon Vijay Abraham I <kishon at ti.com>
-Signed-off-by: Felipe Balbi <balbi at ti.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/musb/omap2430.c | 4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/usb/musb/omap2430.c b/drivers/usb/musb/omap2430.c
-index dd907d5..bd93e9f 100644
---- a/drivers/usb/musb/omap2430.c
-+++ b/drivers/usb/musb/omap2430.c
-@@ -463,14 +463,14 @@ static int __init omap2430_probe(struct platform_device *pdev)
- goto err2;
- }
-
-+ pm_runtime_enable(&pdev->dev);
-+
- ret = platform_device_add(musb);
- if (ret) {
- dev_err(&pdev->dev, "failed to register musb device\n");
- goto err2;
- }
-
-- pm_runtime_enable(&pdev->dev);
--
- return 0;
-
- err2:
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0034-usb-musb-omap-fix-the-error-check-for-pm_runtime_get.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0034-usb-musb-omap-fix-the-error-check-for-pm_runtime_get.patch
deleted file mode 100644
index 035b000..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0034-usb-musb-omap-fix-the-error-check-for-pm_runtime_get.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From 150f1a9111e30cc70efdac57e72af7d537754099 Mon Sep 17 00:00:00 2001
-From: Shubhrajyoti D <shubhrajyoti at ti.com>
-Date: Thu, 22 Mar 2012 12:48:06 +0530
-Subject: [PATCH 034/165] usb: musb: omap: fix the error check for
- pm_runtime_get_sync
-
-commit ad579699c4f0274bf522a9252ff9b20c72197e48 upstream.
-
-pm_runtime_get_sync returns a signed integer. In case of errors
-it returns a negative value. This patch fixes the error check
-by making it signed instead of unsigned thus preventing register
-access if get_sync_fails. Also passes the error cause to the
-debug message.
-
-Cc: Kishon Vijay Abraham I <kishon at ti.com>
-Signed-off-by: Shubhrajyoti D <shubhrajyoti at ti.com>
-Signed-off-by: Felipe Balbi <balbi at ti.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/musb/omap2430.c | 5 +++--
- 1 files changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/usb/musb/omap2430.c b/drivers/usb/musb/omap2430.c
-index bd93e9f..522ac37 100644
---- a/drivers/usb/musb/omap2430.c
-+++ b/drivers/usb/musb/omap2430.c
-@@ -283,7 +283,8 @@ static void musb_otg_notifier_work(struct work_struct *data_notifier_work)
-
- static int omap2430_musb_init(struct musb *musb)
- {
-- u32 l, status = 0;
-+ u32 l;
-+ int status = 0;
- struct device *dev = musb->controller;
- struct musb_hdrc_platform_data *plat = dev->platform_data;
- struct omap_musb_board_data *data = plat->board_data;
-@@ -302,7 +303,7 @@ static int omap2430_musb_init(struct musb *musb)
-
- status = pm_runtime_get_sync(dev);
- if (status < 0) {
-- dev_err(dev, "pm_runtime_get_sync FAILED");
-+ dev_err(dev, "pm_runtime_get_sync FAILED %d\n", status);
- goto err1;
- }
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0035-PCI-Add-quirk-for-still-enabled-interrupts-on-Intel-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0035-PCI-Add-quirk-for-still-enabled-interrupts-on-Intel-.patch
deleted file mode 100644
index 5fc8b64..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0035-PCI-Add-quirk-for-still-enabled-interrupts-on-Intel-.patch
+++ /dev/null
@@ -1,89 +0,0 @@
-From 9a9c948f1f3fdf421e090b10dc1fe15308d325d0 Mon Sep 17 00:00:00 2001
-From: Thomas Jarosch <thomas.jarosch at intra2net.com>
-Date: Wed, 7 Dec 2011 22:08:11 +0100
-Subject: [PATCH 035/165] PCI: Add quirk for still enabled interrupts on Intel
- Sandy Bridge GPUs
-
-commit f67fd55fa96f7d7295b43ffbc4a97d8f55e473aa upstream.
-
-Some BIOS implementations leave the Intel GPU interrupts enabled,
-even though no one is handling them (f.e. i915 driver is never loaded).
-Additionally the interrupt destination is not set up properly
-and the interrupt ends up -somewhere-.
-
-These spurious interrupts are "sticky" and the kernel disables
-the (shared) interrupt line after 100.000+ generated interrupts.
-
-Fix it by disabling the still enabled interrupts.
-This resolves crashes often seen on monitor unplug.
-
-Tested on the following boards:
-- Intel DH61CR: Affected
-- Intel DH67BL: Affected
-- Intel S1200KP server board: Affected
-- Asus P8H61-M LE: Affected, but system does not crash.
- Probably the IRQ ends up somewhere unnoticed.
-
-According to reports on the net, the Intel DH61WW board is also affected.
-
-Many thanks to Jesse Barnes from Intel for helping
-with the register configuration and to Intel in general
-for providing public hardware documentation.
-
-Signed-off-by: Thomas Jarosch <thomas.jarosch at intra2net.com>
-Tested-by: Charlie Suffin <charlie.suffin at stratus.com>
-Signed-off-by: Jesse Barnes <jbarnes at virtuousgeek.org>
-[bwh: Backported to 3.2: adjust context]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/pci/quirks.c | 34 ++++++++++++++++++++++++++++++++++
- 1 files changed, 34 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
-index 6476547..78fda9c 100644
---- a/drivers/pci/quirks.c
-+++ b/drivers/pci/quirks.c
-@@ -2906,6 +2906,40 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65f8, quirk_intel_mc_errata);
- DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65f9, quirk_intel_mc_errata);
- DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65fa, quirk_intel_mc_errata);
-
-+/*
-+ * Some BIOS implementations leave the Intel GPU interrupts enabled,
-+ * even though no one is handling them (f.e. i915 driver is never loaded).
-+ * Additionally the interrupt destination is not set up properly
-+ * and the interrupt ends up -somewhere-.
-+ *
-+ * These spurious interrupts are "sticky" and the kernel disables
-+ * the (shared) interrupt line after 100.000+ generated interrupts.
-+ *
-+ * Fix it by disabling the still enabled interrupts.
-+ * This resolves crashes often seen on monitor unplug.
-+ */
-+#define I915_DEIER_REG 0x4400c
-+static void __devinit disable_igfx_irq(struct pci_dev *dev)
-+{
-+ void __iomem *regs = pci_iomap(dev, 0, 0);
-+ if (regs == NULL) {
-+ dev_warn(&dev->dev, "igfx quirk: Can't iomap PCI device\n");
-+ return;
-+ }
-+
-+ /* Check if any interrupt line is still enabled */
-+ if (readl(regs + I915_DEIER_REG) != 0) {
-+ dev_warn(&dev->dev, "BIOS left Intel GPU interrupts enabled; "
-+ "disabling\n");
-+
-+ writel(0, regs + I915_DEIER_REG);
-+ }
-+
-+ pci_iounmap(dev, regs);
-+}
-+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x0102, disable_igfx_irq);
-+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x010a, disable_igfx_irq);
-+
- static void pci_do_fixups(struct pci_dev *dev, struct pci_fixup *f,
- struct pci_fixup *end)
- {
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0036-ext4-fix-endianness-breakage-in-ext4_split_extent_at.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0036-ext4-fix-endianness-breakage-in-ext4_split_extent_at.patch
deleted file mode 100644
index a2dfb9d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0036-ext4-fix-endianness-breakage-in-ext4_split_extent_at.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 7ae05a044d79254f47ba9cb8772f5c3137a9d17d Mon Sep 17 00:00:00 2001
-From: Al Viro <viro at zeniv.linux.org.uk>
-Date: Thu, 12 Apr 2012 20:32:25 -0400
-Subject: [PATCH 036/165] ext4: fix endianness breakage in
- ext4_split_extent_at()
-
-commit af1584f570b19b0285e4402a0b54731495d31784 upstream.
-
-->ee_len is __le16, so assigning cpu_to_le32() to it is going to do
-Bad Things(tm) on big-endian hosts...
-
-Signed-off-by: Al Viro <viro at zeniv.linux.org.uk>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/ext4/extents.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c
-index c2a2012..54f2bdc 100644
---- a/fs/ext4/extents.c
-+++ b/fs/ext4/extents.c
-@@ -2812,7 +2812,7 @@ static int ext4_split_extent_at(handle_t *handle,
- if (err)
- goto fix_extent_len;
- /* update the extent length and mark as initialized */
-- ex->ee_len = cpu_to_le32(ee_len);
-+ ex->ee_len = cpu_to_le16(ee_len);
- ext4_ext_try_to_merge(inode, path, ex);
- err = ext4_ext_dirty(handle, inode, path + depth);
- goto out;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0037-KVM-unmap-pages-from-the-iommu-when-slots-are-remove.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0037-KVM-unmap-pages-from-the-iommu-when-slots-are-remove.patch
deleted file mode 100644
index 937853c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0037-KVM-unmap-pages-from-the-iommu-when-slots-are-remove.patch
+++ /dev/null
@@ -1,109 +0,0 @@
-From f6b20107e527f8d57ec7c2c745109f4609d68abf Mon Sep 17 00:00:00 2001
-From: Alex Williamson <alex.williamson at redhat.com>
-Date: Fri, 27 Apr 2012 16:54:08 -0500
-Subject: [PATCH 037/165] KVM: unmap pages from the iommu when slots are
- removed
-
-commit 32f6daad4651a748a58a3ab6da0611862175722f upstream.
-
-We've been adding new mappings, but not destroying old mappings.
-This can lead to a page leak as pages are pinned using
-get_user_pages, but only unpinned with put_page if they still
-exist in the memslots list on vm shutdown. A memslot that is
-destroyed while an iommu domain is enabled for the guest will
-therefore result in an elevated page reference count that is
-never cleared.
-
-Additionally, without this fix, the iommu is only programmed
-with the first translation for a gpa. This can result in
-peer-to-peer errors if a mapping is destroyed and replaced by a
-new mapping at the same gpa as the iommu will still be pointing
-to the original, pinned memory address.
-
-Signed-off-by: Alex Williamson <alex.williamson at redhat.com>
-Signed-off-by: Marcelo Tosatti <mtosatti at redhat.com>
-Signed-off-by: Jonathan Nieder <jrnieder at gmail.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- include/linux/kvm_host.h | 6 ++++++
- virt/kvm/iommu.c | 12 ++++++++----
- virt/kvm/kvm_main.c | 5 +++--
- 3 files changed, 17 insertions(+), 6 deletions(-)
-
-diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
-index d526231..35410ef 100644
---- a/include/linux/kvm_host.h
-+++ b/include/linux/kvm_host.h
-@@ -562,6 +562,7 @@ void kvm_free_irq_source_id(struct kvm *kvm, int irq_source_id);
-
- #ifdef CONFIG_IOMMU_API
- int kvm_iommu_map_pages(struct kvm *kvm, struct kvm_memory_slot *slot);
-+void kvm_iommu_unmap_pages(struct kvm *kvm, struct kvm_memory_slot *slot);
- int kvm_iommu_map_guest(struct kvm *kvm);
- int kvm_iommu_unmap_guest(struct kvm *kvm);
- int kvm_assign_device(struct kvm *kvm,
-@@ -575,6 +576,11 @@ static inline int kvm_iommu_map_pages(struct kvm *kvm,
- return 0;
- }
-
-+static inline void kvm_iommu_unmap_pages(struct kvm *kvm,
-+ struct kvm_memory_slot *slot)
-+{
-+}
-+
- static inline int kvm_iommu_map_guest(struct kvm *kvm)
- {
- return -ENODEV;
-diff --git a/virt/kvm/iommu.c b/virt/kvm/iommu.c
-index a195c07..fd817a2 100644
---- a/virt/kvm/iommu.c
-+++ b/virt/kvm/iommu.c
-@@ -309,6 +309,11 @@ static void kvm_iommu_put_pages(struct kvm *kvm,
- }
- }
-
-+void kvm_iommu_unmap_pages(struct kvm *kvm, struct kvm_memory_slot *slot)
-+{
-+ kvm_iommu_put_pages(kvm, slot->base_gfn, slot->npages);
-+}
-+
- static int kvm_iommu_unmap_memslots(struct kvm *kvm)
- {
- int i, idx;
-@@ -317,10 +322,9 @@ static int kvm_iommu_unmap_memslots(struct kvm *kvm)
- idx = srcu_read_lock(&kvm->srcu);
- slots = kvm_memslots(kvm);
-
-- for (i = 0; i < slots->nmemslots; i++) {
-- kvm_iommu_put_pages(kvm, slots->memslots[i].base_gfn,
-- slots->memslots[i].npages);
-- }
-+ for (i = 0; i < slots->nmemslots; i++)
-+ kvm_iommu_unmap_pages(kvm, &slots->memslots[i]);
-+
- srcu_read_unlock(&kvm->srcu, idx);
-
- return 0;
-diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
-index d9cfb78..e401c1b 100644
---- a/virt/kvm/kvm_main.c
-+++ b/virt/kvm/kvm_main.c
-@@ -802,12 +802,13 @@ skip_lpage:
- if (r)
- goto out_free;
-
-- /* map the pages in iommu page table */
-+ /* map/unmap the pages in iommu page table */
- if (npages) {
- r = kvm_iommu_map_pages(kvm, &new);
- if (r)
- goto out_free;
-- }
-+ } else
-+ kvm_iommu_unmap_pages(kvm, &old);
-
- r = -ENOMEM;
- slots = kzalloc(sizeof(struct kvm_memslots), GFP_KERNEL);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0038-dell-laptop-add-3-machines-that-has-touchpad-LED.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0038-dell-laptop-add-3-machines-that-has-touchpad-LED.patch
deleted file mode 100644
index 4955043..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0038-dell-laptop-add-3-machines-that-has-touchpad-LED.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From bbfc688f2500196757c1d7334d25e335308798c5 Mon Sep 17 00:00:00 2001
-From: AceLan Kao <acelan.kao at canonical.com>
-Date: Thu, 17 Nov 2011 15:30:42 +0800
-Subject: [PATCH 038/165] dell-laptop: add 3 machines that has touchpad LED
-
-commit 2a748853ca395c48ea75baa250f7cea6f0f23dbf upstream.
-
-Add "Vostro 3555", "Inspiron N311z", and "Inspiron M5110" into quirks,
-so that they could have touchpad LED function work.
-
-Signed-off-by: AceLan Kao <acelan.kao at canonical.com>
-Signed-off-by: Matthew Garrett <mjg at redhat.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/platform/x86/dell-laptop.c | 27 +++++++++++++++++++++++++++
- 1 files changed, 27 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/platform/x86/dell-laptop.c b/drivers/platform/x86/dell-laptop.c
-index d93e962..7621ac2 100644
---- a/drivers/platform/x86/dell-laptop.c
-+++ b/drivers/platform/x86/dell-laptop.c
-@@ -184,6 +184,33 @@ static struct dmi_system_id __devinitdata dell_quirks[] = {
- },
- .driver_data = &quirk_dell_vostro_v130,
- },
-+ {
-+ .callback = dmi_matched,
-+ .ident = "Dell Vostro 3555",
-+ .matches = {
-+ DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
-+ DMI_MATCH(DMI_PRODUCT_NAME, "Vostro 3555"),
-+ },
-+ .driver_data = &quirk_dell_vostro_v130,
-+ },
-+ {
-+ .callback = dmi_matched,
-+ .ident = "Dell Inspiron N311z",
-+ .matches = {
-+ DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
-+ DMI_MATCH(DMI_PRODUCT_NAME, "Inspiron N311z"),
-+ },
-+ .driver_data = &quirk_dell_vostro_v130,
-+ },
-+ {
-+ .callback = dmi_matched,
-+ .ident = "Dell Inspiron M5110",
-+ .matches = {
-+ DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
-+ DMI_MATCH(DMI_PRODUCT_NAME, "Inspiron M5110"),
-+ },
-+ .driver_data = &quirk_dell_vostro_v130,
-+ },
- };
-
- static struct calling_interface_buffer *buffer;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0039-dell-laptop-touchpad-LED-should-persist-its-status-a.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0039-dell-laptop-touchpad-LED-should-persist-its-status-a.patch
deleted file mode 100644
index 7c8a194..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0039-dell-laptop-touchpad-LED-should-persist-its-status-a.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 7a2e5d46e7959528fb4a7b45fc3ca55339a2445f Mon Sep 17 00:00:00 2001
-From: AceLan Kao <acelan.kao at canonical.com>
-Date: Tue, 17 Jan 2012 16:18:06 +0800
-Subject: [PATCH 039/165] dell-laptop: touchpad LED should persist its status
- after S3
-
-commit 2d5de9e84928e35b4d9b46b4d8d5dcaac1cff1fa upstream.
-
-Touchpad LED will not turn on after S3, it will make the touchpad status
-doesn't consist with the LED.
-By adding one flag to let the LED device restore it's status.
-
-Signed-off-by: AceLan Kao <acelan.kao at canonical.com>
-Signed-off-by: Matthew Garrett <mjg at redhat.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/platform/x86/dell-laptop.c | 1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/platform/x86/dell-laptop.c b/drivers/platform/x86/dell-laptop.c
-index 7621ac2..92e42d4 100644
---- a/drivers/platform/x86/dell-laptop.c
-+++ b/drivers/platform/x86/dell-laptop.c
-@@ -642,6 +642,7 @@ static void touchpad_led_set(struct led_classdev *led_cdev,
- static struct led_classdev touchpad_led = {
- .name = "dell-laptop::touchpad",
- .brightness_set = touchpad_led_set,
-+ .flags = LED_CORE_SUSPENDRESUME,
- };
-
- static int __devinit touchpad_led_init(struct device *dev)
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0040-Bluetooth-Add-support-for-Atheros-04ca-3005.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0040-Bluetooth-Add-support-for-Atheros-04ca-3005.patch
deleted file mode 100644
index 3fe4be1..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0040-Bluetooth-Add-support-for-Atheros-04ca-3005.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-From cfa160178e6da132b537331ff5fc6f091a02e44a Mon Sep 17 00:00:00 2001
-From: AceLan Kao <acelan.kao at canonical.com>
-Date: Wed, 28 Mar 2012 10:25:36 +0800
-Subject: [PATCH 040/165] Bluetooth: Add support for Atheros [04ca:3005]
-
-commit 55ed7d4d1469eafbe3ad7e8fcd44f5af27845a81 upstream.
-
-Add another vendor specific ID for Atheros AR3012 device.
-This chip is wrapped by Lite-On Technology Corp.
-
-output of usb-devices:
-T: Bus=04 Lev=01 Prnt=01 Port=03 Cnt=01 Dev#= 2 Spd=12 MxCh= 0
-D: Ver= 1.10 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs= 1
-P: Vendor=04ca ProdID=3005 Rev=00.02
-S: Manufacturer=Atheros Communications
-S: Product=Bluetooth USB Host Controller
-S: SerialNumber=Alaska Day 2006
-C: #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
-I: If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
-I: If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
-
-Signed-off-by: AceLan Kao <acelan.kao at canonical.com>
-Signed-off-by: Gustavo Padovan <gustavo at padovan.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/bluetooth/ath3k.c | 2 ++
- drivers/bluetooth/btusb.c | 1 +
- 2 files changed, 3 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/bluetooth/ath3k.c b/drivers/bluetooth/ath3k.c
-index 003cd8d..99fefbd 100644
---- a/drivers/bluetooth/ath3k.c
-+++ b/drivers/bluetooth/ath3k.c
-@@ -73,6 +73,7 @@ static struct usb_device_id ath3k_table[] = {
- { USB_DEVICE(0x0CF3, 0x3004) },
- { USB_DEVICE(0x0CF3, 0x311D) },
- { USB_DEVICE(0x13d3, 0x3375) },
-+ { USB_DEVICE(0x04CA, 0x3005) },
-
- /* Atheros AR5BBU12 with sflash firmware */
- { USB_DEVICE(0x0489, 0xE02C) },
-@@ -91,6 +92,7 @@ static struct usb_device_id ath3k_blist_tbl[] = {
- { USB_DEVICE(0x0cf3, 0x3004), .driver_info = BTUSB_ATH3012 },
- { USB_DEVICE(0x0cf3, 0x311D), .driver_info = BTUSB_ATH3012 },
- { USB_DEVICE(0x13d3, 0x3375), .driver_info = BTUSB_ATH3012 },
-+ { USB_DEVICE(0x04ca, 0x3005), .driver_info = BTUSB_ATH3012 },
-
- { } /* Terminating entry */
- };
-diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
-index db44ad5..e56da6a 100644
---- a/drivers/bluetooth/btusb.c
-+++ b/drivers/bluetooth/btusb.c
-@@ -129,6 +129,7 @@ static struct usb_device_id blacklist_table[] = {
- { USB_DEVICE(0x0cf3, 0x3004), .driver_info = BTUSB_ATH3012 },
- { USB_DEVICE(0x0cf3, 0x311d), .driver_info = BTUSB_ATH3012 },
- { USB_DEVICE(0x13d3, 0x3375), .driver_info = BTUSB_ATH3012 },
-+ { USB_DEVICE(0x04ca, 0x3005), .driver_info = BTUSB_ATH3012 },
-
- /* Atheros AR5BBU12 with sflash firmware */
- { USB_DEVICE(0x0489, 0xe02c), .driver_info = BTUSB_IGNORE },
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0041-Don-t-limit-non-nested-epoll-paths.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0041-Don-t-limit-non-nested-epoll-paths.patch
deleted file mode 100644
index 0a59b94..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0041-Don-t-limit-non-nested-epoll-paths.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From 53d02f37f9e87191afdb511e740fa506af1fe2fb Mon Sep 17 00:00:00 2001
-From: Jason Baron <jbaron at redhat.com>
-Date: Fri, 16 Mar 2012 16:34:03 -0400
-Subject: [PATCH 041/165] Don't limit non-nested epoll paths
-
-commit 93dc6107a76daed81c07f50215fa6ae77691634f upstream.
-
-Commit 28d82dc1c4ed ("epoll: limit paths") that I did to limit the
-number of possible wakeup paths in epoll is causing a few applications
-to longer work (dovecot for one).
-
-The original patch is really about limiting the amount of epoll nesting
-(since epoll fds can be attached to other fds). Thus, we probably can
-allow an unlimited number of paths of depth 1. My current patch limits
-it at 1000. And enforce the limits on paths that have a greater depth.
-
-This is captured in: https://bugzilla.redhat.com/show_bug.cgi?id=681578
-
-Signed-off-by: Jason Baron <jbaron at redhat.com>
-Cc: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Jonathan Nieder <jrnieder at gmail.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/eventpoll.c | 4 ++++
- 1 files changed, 4 insertions(+), 0 deletions(-)
-
-diff --git a/fs/eventpoll.c b/fs/eventpoll.c
-index ea54cde..4d9d3a4 100644
---- a/fs/eventpoll.c
-+++ b/fs/eventpoll.c
-@@ -988,6 +988,10 @@ static int path_count[PATH_ARR_SIZE];
-
- static int path_count_inc(int nests)
- {
-+ /* Allow an arbitrary number of depth 1 paths */
-+ if (nests == 0)
-+ return 0;
-+
- if (++path_count[nests] > path_limits[nests])
- return -1;
- return 0;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0042-spi-Fix-device-unregistration-when-unregistering-the.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0042-spi-Fix-device-unregistration-when-unregistering-the.patch
deleted file mode 100644
index 54fbbfd..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0042-spi-Fix-device-unregistration-when-unregistering-the.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From e98347051c4edde97c0dfbc704660d9d0e4e0641 Mon Sep 17 00:00:00 2001
-From: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
-Date: Mon, 12 Dec 2011 01:15:06 +0100
-Subject: [PATCH 042/165] spi: Fix device unregistration when unregistering
- the bus master
-
-commit 178db7d30f94707efca1a189753c105ef69942ed upstream.
-
-Device are added as children of the bus master's parent device, but
-spi_unregister_master() looks for devices to unregister in the bus
-master's children. This results in the child devices not being
-unregistered.
-
-Fix this by registering devices as direct children of the bus master.
-
-Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
-Signed-off-by: Grant Likely <grant.likely at secretlab.ca>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/spi/spi.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c
-index 77eae99..b2ccdea 100644
---- a/drivers/spi/spi.c
-+++ b/drivers/spi/spi.c
-@@ -319,7 +319,7 @@ struct spi_device *spi_alloc_device(struct spi_master *master)
- }
-
- spi->master = master;
-- spi->dev.parent = dev;
-+ spi->dev.parent = &master->dev;
- spi->dev.bus = &spi_bus_type;
- spi->dev.release = spidev_release;
- device_initialize(&spi->dev);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0043-spi-mpc83xx-fix-NULL-pdata-dereference-bug.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0043-spi-mpc83xx-fix-NULL-pdata-dereference-bug.patch
deleted file mode 100644
index c857700..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0043-spi-mpc83xx-fix-NULL-pdata-dereference-bug.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From bc5969d96482b42246a0143d3f36744c8d06c8cf Mon Sep 17 00:00:00 2001
-From: Kenth Eriksson <kenth.eriksson at transmode.com>
-Date: Fri, 30 Mar 2012 17:05:30 +0200
-Subject: [PATCH 043/165] spi/mpc83xx: fix NULL pdata dereference bug
-
-commit 5039a86973cd35bdb2f64d28ee12f13fe2bb5a4c upstream.
-
-Commit 178db7d3, "spi: Fix device unregistration when unregistering
-the bus master", changed device initialization to be children of the
-bus master, not children of the bus masters parent device. The pdata
-pointer used in fsl_spi_chipselect must updated to reflect the changed
-initialization.
-
-Signed-off-by: Kenth Eriksson <kenth.eriksson at transmode.com>
-Acked-by: Joakim Tjernlund <Joakim.Tjernlund at transmode.se>
-Signed-off-by: Grant Likely <grant.likely at secretlab.ca>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/spi/spi-fsl-spi.c | 4 +++-
- 1 files changed, 3 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/spi/spi-fsl-spi.c b/drivers/spi/spi-fsl-spi.c
-index 24cacff..5f748c0 100644
---- a/drivers/spi/spi-fsl-spi.c
-+++ b/drivers/spi/spi-fsl-spi.c
-@@ -139,10 +139,12 @@ static void fsl_spi_change_mode(struct spi_device *spi)
- static void fsl_spi_chipselect(struct spi_device *spi, int value)
- {
- struct mpc8xxx_spi *mpc8xxx_spi = spi_master_get_devdata(spi->master);
-- struct fsl_spi_platform_data *pdata = spi->dev.parent->platform_data;
-+ struct fsl_spi_platform_data *pdata;
- bool pol = spi->mode & SPI_CS_HIGH;
- struct spi_mpc8xxx_cs *cs = spi->controller_state;
-
-+ pdata = spi->dev.parent->parent->platform_data;
-+
- if (value == BITBANG_CS_INACTIVE) {
- if (pdata->cs_control)
- pdata->cs_control(spi, !pol);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0044-rt2800-Add-support-for-the-Fujitsu-Stylistic-Q550.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0044-rt2800-Add-support-for-the-Fujitsu-Stylistic-Q550.patch
deleted file mode 100644
index cfced92..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0044-rt2800-Add-support-for-the-Fujitsu-Stylistic-Q550.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 81eef1db7c237ecc52f165049d7b128f081bc1f1 Mon Sep 17 00:00:00 2001
-From: Alan Cox <alan at linux.intel.com>
-Date: Mon, 19 Dec 2011 21:07:33 +0000
-Subject: [PATCH 044/165] rt2800: Add support for the Fujitsu Stylistic Q550
-
-commit 3ac44670ad0fca8b6c43b3e4d8494c67c419f494 upstream.
-
-Just another USB identifier.
-
-Signed-off-by: Alan Cox <alan at linux.intel.com>
-Acked-by: Gertjan van Wingerde <gwingerde at gmail.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/wireless/rt2x00/rt2800usb.c | 2 ++
- 1 files changed, 2 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/net/wireless/rt2x00/rt2800usb.c b/drivers/net/wireless/rt2x00/rt2800usb.c
-index cb71e88..c49b8bf 100644
---- a/drivers/net/wireless/rt2x00/rt2800usb.c
-+++ b/drivers/net/wireless/rt2x00/rt2800usb.c
-@@ -1161,6 +1161,8 @@ static struct usb_device_id rt2800usb_device_table[] = {
- { USB_DEVICE(0x7392, 0x7722) },
- /* Encore */
- { USB_DEVICE(0x203d, 0x14a1) },
-+ /* Fujitsu Stylistic 550 */
-+ { USB_DEVICE(0x1690, 0x0761) },
- /* Gemtek */
- { USB_DEVICE(0x15a9, 0x0010) },
- /* Gigabyte */
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0045-rt2x00-Identify-rt2800usb-chipsets.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0045-rt2x00-Identify-rt2800usb-chipsets.patch
deleted file mode 100644
index f29f428..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0045-rt2x00-Identify-rt2800usb-chipsets.patch
+++ /dev/null
@@ -1,148 +0,0 @@
-From 5d35a9613dc2f1483a1b1c8327f7050299363dee Mon Sep 17 00:00:00 2001
-From: Gertjan van Wingerde <gwingerde at gmail.com>
-Date: Wed, 28 Dec 2011 01:53:18 +0100
-Subject: [PATCH 045/165] rt2x00: Identify rt2800usb chipsets.
-
-commit bc93eda7e903ff75cefcb6e247ed9b8e9f8e9783 upstream.
-
-According to the latest USB ID database these are all RT2770 / RT2870 / RT307x
-devices.
-
-Signed-off-by: Gertjan van Wingerde <gwingerde at gmail.com>
-Acked-by: Ivo van Doorn <IvDoorn at gmail.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-[bwh: Backported to 3.2: adjust context for previously cherry-picked
- commit d42a179b941a9e4cc6cf41d0f3cbadd75fc48a89 'rt2x00: Add support
- for D-Link DWA-127 to rt2800usb']
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/wireless/rt2x00/rt2800usb.c | 26 ++++++++++++--------------
- 1 files changed, 12 insertions(+), 14 deletions(-)
-
-diff --git a/drivers/net/wireless/rt2x00/rt2800usb.c b/drivers/net/wireless/rt2x00/rt2800usb.c
-index c49b8bf..0ffa111 100644
---- a/drivers/net/wireless/rt2x00/rt2800usb.c
-+++ b/drivers/net/wireless/rt2x00/rt2800usb.c
-@@ -914,12 +914,14 @@ static struct usb_device_id rt2800usb_device_table[] = {
- { USB_DEVICE(0x050d, 0x8053) },
- { USB_DEVICE(0x050d, 0x805c) },
- { USB_DEVICE(0x050d, 0x815c) },
-+ { USB_DEVICE(0x050d, 0x825a) },
- { USB_DEVICE(0x050d, 0x825b) },
- { USB_DEVICE(0x050d, 0x935a) },
- { USB_DEVICE(0x050d, 0x935b) },
- /* Buffalo */
- { USB_DEVICE(0x0411, 0x00e8) },
- { USB_DEVICE(0x0411, 0x0158) },
-+ { USB_DEVICE(0x0411, 0x015d) },
- { USB_DEVICE(0x0411, 0x016f) },
- { USB_DEVICE(0x0411, 0x01a2) },
- /* Corega */
-@@ -934,6 +936,8 @@ static struct usb_device_id rt2800usb_device_table[] = {
- { USB_DEVICE(0x07d1, 0x3c0e) },
- { USB_DEVICE(0x07d1, 0x3c0f) },
- { USB_DEVICE(0x07d1, 0x3c11) },
-+ { USB_DEVICE(0x07d1, 0x3c13) },
-+ { USB_DEVICE(0x07d1, 0x3c15) },
- { USB_DEVICE(0x07d1, 0x3c16) },
- { USB_DEVICE(0x2001, 0x3c1b) },
- /* Draytek */
-@@ -944,6 +948,7 @@ static struct usb_device_id rt2800usb_device_table[] = {
- { USB_DEVICE(0x7392, 0x7711) },
- { USB_DEVICE(0x7392, 0x7717) },
- { USB_DEVICE(0x7392, 0x7718) },
-+ { USB_DEVICE(0x7392, 0x7722) },
- /* Encore */
- { USB_DEVICE(0x203d, 0x1480) },
- { USB_DEVICE(0x203d, 0x14a9) },
-@@ -978,6 +983,7 @@ static struct usb_device_id rt2800usb_device_table[] = {
- { USB_DEVICE(0x1737, 0x0070) },
- { USB_DEVICE(0x1737, 0x0071) },
- { USB_DEVICE(0x1737, 0x0077) },
-+ { USB_DEVICE(0x1737, 0x0078) },
- /* Logitec */
- { USB_DEVICE(0x0789, 0x0162) },
- { USB_DEVICE(0x0789, 0x0163) },
-@@ -1001,9 +1007,13 @@ static struct usb_device_id rt2800usb_device_table[] = {
- { USB_DEVICE(0x0db0, 0x871b) },
- { USB_DEVICE(0x0db0, 0x871c) },
- { USB_DEVICE(0x0db0, 0x899a) },
-+ /* Ovislink */
-+ { USB_DEVICE(0x1b75, 0x3071) },
-+ { USB_DEVICE(0x1b75, 0x3072) },
- /* Para */
- { USB_DEVICE(0x20b8, 0x8888) },
- /* Pegatron */
-+ { USB_DEVICE(0x1d4d, 0x0002) },
- { USB_DEVICE(0x1d4d, 0x000c) },
- { USB_DEVICE(0x1d4d, 0x000e) },
- { USB_DEVICE(0x1d4d, 0x0011) },
-@@ -1056,7 +1066,9 @@ static struct usb_device_id rt2800usb_device_table[] = {
- /* Sparklan */
- { USB_DEVICE(0x15a9, 0x0006) },
- /* Sweex */
-+ { USB_DEVICE(0x177f, 0x0153) },
- { USB_DEVICE(0x177f, 0x0302) },
-+ { USB_DEVICE(0x177f, 0x0313) },
- /* U-Media */
- { USB_DEVICE(0x157e, 0x300e) },
- { USB_DEVICE(0x157e, 0x3013) },
-@@ -1140,25 +1152,20 @@ static struct usb_device_id rt2800usb_device_table[] = {
- { USB_DEVICE(0x13d3, 0x3322) },
- /* Belkin */
- { USB_DEVICE(0x050d, 0x1003) },
-- { USB_DEVICE(0x050d, 0x825a) },
- /* Buffalo */
- { USB_DEVICE(0x0411, 0x012e) },
- { USB_DEVICE(0x0411, 0x0148) },
- { USB_DEVICE(0x0411, 0x0150) },
-- { USB_DEVICE(0x0411, 0x015d) },
- /* Corega */
- { USB_DEVICE(0x07aa, 0x0041) },
- { USB_DEVICE(0x07aa, 0x0042) },
- { USB_DEVICE(0x18c5, 0x0008) },
- /* D-Link */
- { USB_DEVICE(0x07d1, 0x3c0b) },
-- { USB_DEVICE(0x07d1, 0x3c13) },
-- { USB_DEVICE(0x07d1, 0x3c15) },
- { USB_DEVICE(0x07d1, 0x3c17) },
- { USB_DEVICE(0x2001, 0x3c17) },
- /* Edimax */
- { USB_DEVICE(0x7392, 0x4085) },
-- { USB_DEVICE(0x7392, 0x7722) },
- /* Encore */
- { USB_DEVICE(0x203d, 0x14a1) },
- /* Fujitsu Stylistic 550 */
-@@ -1174,19 +1181,13 @@ static struct usb_device_id rt2800usb_device_table[] = {
- /* LevelOne */
- { USB_DEVICE(0x1740, 0x0605) },
- { USB_DEVICE(0x1740, 0x0615) },
-- /* Linksys */
-- { USB_DEVICE(0x1737, 0x0078) },
- /* Logitec */
- { USB_DEVICE(0x0789, 0x0168) },
- { USB_DEVICE(0x0789, 0x0169) },
- /* Motorola */
- { USB_DEVICE(0x100d, 0x9032) },
-- /* Ovislink */
-- { USB_DEVICE(0x1b75, 0x3071) },
-- { USB_DEVICE(0x1b75, 0x3072) },
- /* Pegatron */
- { USB_DEVICE(0x05a6, 0x0101) },
-- { USB_DEVICE(0x1d4d, 0x0002) },
- { USB_DEVICE(0x1d4d, 0x0010) },
- /* Planex */
- { USB_DEVICE(0x2019, 0x5201) },
-@@ -1205,9 +1206,6 @@ static struct usb_device_id rt2800usb_device_table[] = {
- { USB_DEVICE(0x083a, 0xc522) },
- { USB_DEVICE(0x083a, 0xd522) },
- { USB_DEVICE(0x083a, 0xf511) },
-- /* Sweex */
-- { USB_DEVICE(0x177f, 0x0153) },
-- { USB_DEVICE(0x177f, 0x0313) },
- /* Zyxel */
- { USB_DEVICE(0x0586, 0x341a) },
- #endif
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0046-nfsd-fix-b0rken-error-value-for-setattr-on-read-only.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0046-nfsd-fix-b0rken-error-value-for-setattr-on-read-only.patch
deleted file mode 100644
index dd84974..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0046-nfsd-fix-b0rken-error-value-for-setattr-on-read-only.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From 41e39c9a0a6aa1e152db9dfd4019e20a9de8dce6 Mon Sep 17 00:00:00 2001
-From: Al Viro <viro at zeniv.linux.org.uk>
-Date: Fri, 27 Apr 2012 17:42:43 -0500
-Subject: [PATCH 046/165] nfsd: fix b0rken error value for setattr on
- read-only mount
-
-commit 96f6f98501196d46ce52c2697dd758d9300c63f5 upstream.
-
-..._want_write() returns -EROFS on failure, _not_ an NFS error value.
-
-Signed-off-by: Al Viro <viro at zeniv.linux.org.uk>
-Signed-off-by: Jonathan Nieder <jrnieder at gmail.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/nfsd/nfs4proc.c | 7 ++++---
- 1 files changed, 4 insertions(+), 3 deletions(-)
-
-diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c
-index fa38336..35840aa 100644
---- a/fs/nfsd/nfs4proc.c
-+++ b/fs/nfsd/nfs4proc.c
-@@ -827,6 +827,7 @@ nfsd4_setattr(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
- struct nfsd4_setattr *setattr)
- {
- __be32 status = nfs_ok;
-+ int err;
-
- if (setattr->sa_iattr.ia_valid & ATTR_SIZE) {
- nfs4_lock_state();
-@@ -838,9 +839,9 @@ nfsd4_setattr(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
- return status;
- }
- }
-- status = mnt_want_write(cstate->current_fh.fh_export->ex_path.mnt);
-- if (status)
-- return status;
-+ err = mnt_want_write(cstate->current_fh.fh_export->ex_path.mnt);
-+ if (err)
-+ return nfserrno(err);
- status = nfs_ok;
-
- status = check_attr_support(rqstp, cstate, setattr->sa_bmval,
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0047-nfsd-fix-error-values-returned-by-nfsd4_lockt-when-n.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0047-nfsd-fix-error-values-returned-by-nfsd4_lockt-when-n.patch
deleted file mode 100644
index ccb77cf..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0047-nfsd-fix-error-values-returned-by-nfsd4_lockt-when-n.patch
+++ /dev/null
@@ -1,73 +0,0 @@
-From d0fb6592c02971a290d199c1e9ee06624fd17c1c Mon Sep 17 00:00:00 2001
-From: Al Viro <viro at zeniv.linux.org.uk>
-Date: Fri, 13 Apr 2012 00:00:04 -0400
-Subject: [PATCH 047/165] nfsd: fix error values returned by nfsd4_lockt()
- when nfsd_open() fails
-
-commit 04da6e9d63427b2d0fd04766712200c250b3278f upstream.
-
-nfsd_open() already returns an NFS error value; only vfs_test_lock()
-result needs to be fed through nfserrno(). Broken by commit 55ef12
-(nfsd: Ensure nfsv4 calls the underlying filesystem on LOCKT)
-three years ago...
-
-Signed-off-by: Al Viro <viro at zeniv.linux.org.uk>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/nfsd/nfs4state.c | 23 +++++++++--------------
- 1 files changed, 9 insertions(+), 14 deletions(-)
-
-diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
-index 5abced7..4cfe260 100644
---- a/fs/nfsd/nfs4state.c
-+++ b/fs/nfsd/nfs4state.c
-@@ -4080,16 +4080,14 @@ out:
- * vfs_test_lock. (Arguably perhaps test_lock should be done with an
- * inode operation.)
- */
--static int nfsd_test_lock(struct svc_rqst *rqstp, struct svc_fh *fhp, struct file_lock *lock)
-+static __be32 nfsd_test_lock(struct svc_rqst *rqstp, struct svc_fh *fhp, struct file_lock *lock)
- {
- struct file *file;
-- int err;
--
-- err = nfsd_open(rqstp, fhp, S_IFREG, NFSD_MAY_READ, &file);
-- if (err)
-- return err;
-- err = vfs_test_lock(file, lock);
-- nfsd_close(file);
-+ __be32 err = nfsd_open(rqstp, fhp, S_IFREG, NFSD_MAY_READ, &file);
-+ if (!err) {
-+ err = nfserrno(vfs_test_lock(file, lock));
-+ nfsd_close(file);
-+ }
- return err;
- }
-
-@@ -4103,7 +4101,6 @@ nfsd4_lockt(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
- struct inode *inode;
- struct file_lock file_lock;
- struct nfs4_lockowner *lo;
-- int error;
- __be32 status;
-
- if (locks_in_grace())
-@@ -4149,12 +4146,10 @@ nfsd4_lockt(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
-
- nfs4_transform_lock_offset(&file_lock);
-
-- status = nfs_ok;
-- error = nfsd_test_lock(rqstp, &cstate->current_fh, &file_lock);
-- if (error) {
-- status = nfserrno(error);
-+ status = nfsd_test_lock(rqstp, &cstate->current_fh, &file_lock);
-+ if (status)
- goto out;
-- }
-+
- if (file_lock.fl_type != F_UNLCK) {
- status = nfserr_denied;
- nfs4_set_lock_denied(&file_lock, &lockt->lt_denied);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0048-nfsd-fix-endianness-breakage-in-TEST_STATEID-handlin.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0048-nfsd-fix-endianness-breakage-in-TEST_STATEID-handlin.patch
deleted file mode 100644
index ce62319..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0048-nfsd-fix-endianness-breakage-in-TEST_STATEID-handlin.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From c0326b2209aa31faeb2369d7311d0754d7b6d202 Mon Sep 17 00:00:00 2001
-From: Al Viro <viro at zeniv.linux.org.uk>
-Date: Fri, 13 Apr 2012 00:10:34 -0400
-Subject: [PATCH 048/165] nfsd: fix endianness breakage in TEST_STATEID
- handling
-
-commit 02f5fde5df0ea930e70f93763dd48beff182b208 upstream.
-
-->ts_id_status gets nfs errno, i.e. it's already big-endian; no need
-to apply htonl() to it. Broken by commit 174568 (NFSD: Added TEST_STATEID
-operation) last year...
-
-Signed-off-by: Al Viro <viro at zeniv.linux.org.uk>
-Cc: "J. Bruce Fields" <bfields at fieldses.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/nfsd/nfs4xdr.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c
-index b6fa792..9cfa60a 100644
---- a/fs/nfsd/nfs4xdr.c
-+++ b/fs/nfsd/nfs4xdr.c
-@@ -3411,7 +3411,7 @@ nfsd4_encode_test_stateid(struct nfsd4_compoundres *resp, int nfserr,
- nfsd4_decode_stateid(argp, &si);
- valid = nfs4_validate_stateid(cl, &si);
- RESERVE_SPACE(4);
-- *p++ = htonl(valid);
-+ *p++ = valid;
- resp->p = p;
- }
- nfs4_unlock_state();
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0049-nfsd-fix-compose_entry_fh-failure-exits.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0049-nfsd-fix-compose_entry_fh-failure-exits.patch
deleted file mode 100644
index 8294bc4..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0049-nfsd-fix-compose_entry_fh-failure-exits.patch
+++ /dev/null
@@ -1,92 +0,0 @@
-From 58c574420bacc1f5dc171dff6f0915ebc5749ee3 Mon Sep 17 00:00:00 2001
-From: Al Viro <viro at zeniv.linux.org.uk>
-Date: Fri, 13 Apr 2012 00:32:14 -0400
-Subject: [PATCH 049/165] nfsd: fix compose_entry_fh() failure exits
-
-commit efe39651f08813180f37dc508d950fc7d92b29a8 upstream.
-
-Restore the original logics ("fail on mountpoints, negatives and in
-case of fh_compose() failures"). Since commit 8177e (nfsd: clean up
-readdirplus encoding) that got broken -
- rv = fh_compose(fhp, exp, dchild, &cd->fh);
- if (rv)
- goto out;
- if (!dchild->d_inode)
- goto out;
- rv = 0;
-out:
-is equivalent to
- rv = fh_compose(fhp, exp, dchild, &cd->fh);
-out:
-and the second check has no effect whatsoever...
-
-Signed-off-by: Al Viro <viro at zeniv.linux.org.uk>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/nfsd/nfs3xdr.c | 22 ++++++++--------------
- 1 files changed, 8 insertions(+), 14 deletions(-)
-
-diff --git a/fs/nfsd/nfs3xdr.c b/fs/nfsd/nfs3xdr.c
-index 08c6e36..43f46cd 100644
---- a/fs/nfsd/nfs3xdr.c
-+++ b/fs/nfsd/nfs3xdr.c
-@@ -803,13 +803,13 @@ encode_entry_baggage(struct nfsd3_readdirres *cd, __be32 *p, const char *name,
- return p;
- }
-
--static int
-+static __be32
- compose_entry_fh(struct nfsd3_readdirres *cd, struct svc_fh *fhp,
- const char *name, int namlen)
- {
- struct svc_export *exp;
- struct dentry *dparent, *dchild;
-- int rv = 0;
-+ __be32 rv = nfserr_noent;
-
- dparent = cd->fh.fh_dentry;
- exp = cd->fh.fh_export;
-@@ -817,26 +817,20 @@ compose_entry_fh(struct nfsd3_readdirres *cd, struct svc_fh *fhp,
- if (isdotent(name, namlen)) {
- if (namlen == 2) {
- dchild = dget_parent(dparent);
-- if (dchild == dparent) {
-- /* filesystem root - cannot return filehandle for ".." */
-- dput(dchild);
-- return -ENOENT;
-- }
-+ /* filesystem root - cannot return filehandle for ".." */
-+ if (dchild == dparent)
-+ goto out;
- } else
- dchild = dget(dparent);
- } else
- dchild = lookup_one_len(name, dparent, namlen);
- if (IS_ERR(dchild))
-- return -ENOENT;
-- rv = -ENOENT;
-+ return rv;
- if (d_mountpoint(dchild))
- goto out;
-- rv = fh_compose(fhp, exp, dchild, &cd->fh);
-- if (rv)
-- goto out;
- if (!dchild->d_inode)
- goto out;
-- rv = 0;
-+ rv = fh_compose(fhp, exp, dchild, &cd->fh);
- out:
- dput(dchild);
- return rv;
-@@ -845,7 +839,7 @@ out:
- static __be32 *encode_entryplus_baggage(struct nfsd3_readdirres *cd, __be32 *p, const char *name, int namlen)
- {
- struct svc_fh fh;
-- int err;
-+ __be32 err;
-
- fh_init(&fh, NFS3_FHSIZE);
- err = compose_entry_fh(cd, &fh, name, namlen);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0050-btrfs-btrfs_root_readonly-broken-on-big-endian.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0050-btrfs-btrfs_root_readonly-broken-on-big-endian.patch
deleted file mode 100644
index 939c880..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0050-btrfs-btrfs_root_readonly-broken-on-big-endian.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From f34178385ffae408ee0ade44819875816104a99a Mon Sep 17 00:00:00 2001
-From: Al Viro <viro at zeniv.linux.org.uk>
-Date: Fri, 13 Apr 2012 11:49:04 -0400
-Subject: [PATCH 050/165] btrfs: btrfs_root_readonly() broken on big-endian
-
-commit 6ed3cf2cdfce4c9f1d73171bd3f27d9cb77b734e upstream.
-
-->root_flags is __le64 and all accesses to it go through the helpers
-that do proper conversions. Except for btrfs_root_readonly(), which
-checks bit 0 as in host-endian...
-
-Signed-off-by: Al Viro <viro at zeniv.linux.org.uk>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/btrfs/ctree.h | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h
-index 6738503..83a871f 100644
---- a/fs/btrfs/ctree.h
-+++ b/fs/btrfs/ctree.h
-@@ -2025,7 +2025,7 @@ BTRFS_SETGET_STACK_FUNCS(root_last_snapshot, struct btrfs_root_item,
-
- static inline bool btrfs_root_readonly(struct btrfs_root *root)
- {
-- return root->root_item.flags & BTRFS_ROOT_SUBVOL_RDONLY;
-+ return (root->root_item.flags & cpu_to_le64(BTRFS_ROOT_SUBVOL_RDONLY)) != 0;
- }
-
- /* struct btrfs_root_backup */
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0051-ocfs2-l_next_free_req-breakage-on-big-endian.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0051-ocfs2-l_next_free_req-breakage-on-big-endian.patch
deleted file mode 100644
index 75f2e65..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0051-ocfs2-l_next_free_req-breakage-on-big-endian.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From e72fdd80481fa4848f1d90be6e8bcdc24db469f8 Mon Sep 17 00:00:00 2001
-From: Al Viro <viro at zeniv.linux.org.uk>
-Date: Fri, 13 Apr 2012 12:22:00 -0400
-Subject: [PATCH 051/165] ocfs2: ->l_next_free_req breakage on big-endian
-
-commit 3a251f04fe97c3d335b745c98e4b377e3c3899f2 upstream.
-
-It's le16, not le32...
-
-Signed-off-by: Al Viro <viro at zeniv.linux.org.uk>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/ocfs2/alloc.c | 2 +-
- fs/ocfs2/refcounttree.c | 4 ++--
- 2 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/fs/ocfs2/alloc.c b/fs/ocfs2/alloc.c
-index 3165aeb..31b9463 100644
---- a/fs/ocfs2/alloc.c
-+++ b/fs/ocfs2/alloc.c
-@@ -1134,7 +1134,7 @@ static int ocfs2_adjust_rightmost_branch(handle_t *handle,
- }
-
- el = path_leaf_el(path);
-- rec = &el->l_recs[le32_to_cpu(el->l_next_free_rec) - 1];
-+ rec = &el->l_recs[le16_to_cpu(el->l_next_free_rec) - 1];
-
- ocfs2_adjust_rightmost_records(handle, et, path, rec);
-
-diff --git a/fs/ocfs2/refcounttree.c b/fs/ocfs2/refcounttree.c
-index cf78233..a7b7217 100644
---- a/fs/ocfs2/refcounttree.c
-+++ b/fs/ocfs2/refcounttree.c
-@@ -1036,14 +1036,14 @@ static int ocfs2_get_refcount_cpos_end(struct ocfs2_caching_info *ci,
-
- tmp_el = left_path->p_node[subtree_root].el;
- blkno = left_path->p_node[subtree_root+1].bh->b_blocknr;
-- for (i = 0; i < le32_to_cpu(tmp_el->l_next_free_rec); i++) {
-+ for (i = 0; i < le16_to_cpu(tmp_el->l_next_free_rec); i++) {
- if (le64_to_cpu(tmp_el->l_recs[i].e_blkno) == blkno) {
- *cpos_end = le32_to_cpu(tmp_el->l_recs[i+1].e_cpos);
- break;
- }
- }
-
-- BUG_ON(i == le32_to_cpu(tmp_el->l_next_free_rec));
-+ BUG_ON(i == le16_to_cpu(tmp_el->l_next_free_rec));
-
- out:
- ocfs2_free_path(left_path);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0052-ocfs-rl_used-breakage-on-big-endian.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0052-ocfs-rl_used-breakage-on-big-endian.patch
deleted file mode 100644
index 872b422..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0052-ocfs-rl_used-breakage-on-big-endian.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From 88f1278427aa9c75c6b4c7f59b160a9a29ae8f17 Mon Sep 17 00:00:00 2001
-From: Al Viro <viro at zeniv.linux.org.uk>
-Date: Fri, 13 Apr 2012 12:27:11 -0400
-Subject: [PATCH 052/165] ocfs: ->rl_used breakage on big-endian
-
-commit e1bf4cc620fd143766ddfcee3b004a1d1bb34fd0 upstream.
-
-it's le16, not le32 or le64...
-
-Signed-off-by: Al Viro <viro at zeniv.linux.org.uk>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/ocfs2/refcounttree.c | 8 ++++----
- 1 files changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/fs/ocfs2/refcounttree.c b/fs/ocfs2/refcounttree.c
-index a7b7217..bc90ebc 100644
---- a/fs/ocfs2/refcounttree.c
-+++ b/fs/ocfs2/refcounttree.c
-@@ -1468,7 +1468,7 @@ static int ocfs2_divide_leaf_refcount_block(struct buffer_head *ref_leaf_bh,
-
- trace_ocfs2_divide_leaf_refcount_block(
- (unsigned long long)ref_leaf_bh->b_blocknr,
-- le32_to_cpu(rl->rl_count), le32_to_cpu(rl->rl_used));
-+ le32_to_cpu(rl->rl_count), le16_to_cpu(rl->rl_used));
-
- /*
- * XXX: Improvement later.
-@@ -2411,7 +2411,7 @@ static int ocfs2_calc_refcount_meta_credits(struct super_block *sb,
- rb = (struct ocfs2_refcount_block *)
- prev_bh->b_data;
-
-- if (le64_to_cpu(rb->rf_records.rl_used) +
-+ if (le16_to_cpu(rb->rf_records.rl_used) +
- recs_add >
- le16_to_cpu(rb->rf_records.rl_count))
- ref_blocks++;
-@@ -2476,7 +2476,7 @@ static int ocfs2_calc_refcount_meta_credits(struct super_block *sb,
- if (prev_bh) {
- rb = (struct ocfs2_refcount_block *)prev_bh->b_data;
-
-- if (le64_to_cpu(rb->rf_records.rl_used) + recs_add >
-+ if (le16_to_cpu(rb->rf_records.rl_used) + recs_add >
- le16_to_cpu(rb->rf_records.rl_count))
- ref_blocks++;
-
-@@ -3629,7 +3629,7 @@ int ocfs2_refcounted_xattr_delete_need(struct inode *inode,
- * one will split a refcount rec, so totally we need
- * clusters * 2 new refcount rec.
- */
-- if (le64_to_cpu(rb->rf_records.rl_used) + clusters * 2 >
-+ if (le16_to_cpu(rb->rf_records.rl_used) + clusters * 2 >
- le16_to_cpu(rb->rf_records.rl_count))
- ref_blocks++;
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0053-ocfs2-rl_count-endianness-breakage.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0053-ocfs2-rl_count-endianness-breakage.patch
deleted file mode 100644
index d60dcb7..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0053-ocfs2-rl_count-endianness-breakage.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From de962467d8b4d7cd0903b5151bc5fbde4f09552f Mon Sep 17 00:00:00 2001
-From: Al Viro <viro at zeniv.linux.org.uk>
-Date: Fri, 13 Apr 2012 12:28:21 -0400
-Subject: [PATCH 053/165] ocfs2: ->rl_count endianness breakage
-
-commit 28748b325dc2d730ccc312830a91c4ae0c0d9379 upstream.
-
-le16, not le32...
-
-Signed-off-by: Al Viro <viro at zeniv.linux.org.uk>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/ocfs2/refcounttree.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/fs/ocfs2/refcounttree.c b/fs/ocfs2/refcounttree.c
-index bc90ebc..9f32d7c 100644
---- a/fs/ocfs2/refcounttree.c
-+++ b/fs/ocfs2/refcounttree.c
-@@ -1468,7 +1468,7 @@ static int ocfs2_divide_leaf_refcount_block(struct buffer_head *ref_leaf_bh,
-
- trace_ocfs2_divide_leaf_refcount_block(
- (unsigned long long)ref_leaf_bh->b_blocknr,
-- le32_to_cpu(rl->rl_count), le16_to_cpu(rl->rl_used));
-+ le16_to_cpu(rl->rl_count), le16_to_cpu(rl->rl_used));
-
- /*
- * XXX: Improvement later.
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0054-ocfs2-e_leaf_clusters-endianness-breakage.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0054-ocfs2-e_leaf_clusters-endianness-breakage.patch
deleted file mode 100644
index d30eb97..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0054-ocfs2-e_leaf_clusters-endianness-breakage.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From c38877f92a9e0858b5a4902440cef2c0df1b1632 Mon Sep 17 00:00:00 2001
-From: Al Viro <viro at zeniv.linux.org.uk>
-Date: Fri, 13 Apr 2012 12:30:02 -0400
-Subject: [PATCH 054/165] ocfs2: ->e_leaf_clusters endianness breakage
-
-commit 72094e43e3af5020510f920321d71f1798fa896d upstream.
-
-le16, not le32...
-
-Signed-off-by: Al Viro <viro at zeniv.linux.org.uk>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/ocfs2/suballoc.c | 4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/fs/ocfs2/suballoc.c b/fs/ocfs2/suballoc.c
-index ba5d97e..f169da4 100644
---- a/fs/ocfs2/suballoc.c
-+++ b/fs/ocfs2/suballoc.c
-@@ -600,7 +600,7 @@ static void ocfs2_bg_alloc_cleanup(handle_t *handle,
- ret = ocfs2_free_clusters(handle, cluster_ac->ac_inode,
- cluster_ac->ac_bh,
- le64_to_cpu(rec->e_blkno),
-- le32_to_cpu(rec->e_leaf_clusters));
-+ le16_to_cpu(rec->e_leaf_clusters));
- if (ret)
- mlog_errno(ret);
- /* Try all the clusters to free */
-@@ -1628,7 +1628,7 @@ static int ocfs2_bg_discontig_fix_by_rec(struct ocfs2_suballoc_result *res,
- {
- unsigned int bpc = le16_to_cpu(cl->cl_bpc);
- unsigned int bitoff = le32_to_cpu(rec->e_cpos) * bpc;
-- unsigned int bitcount = le32_to_cpu(rec->e_leaf_clusters) * bpc;
-+ unsigned int bitcount = le16_to_cpu(rec->e_leaf_clusters) * bpc;
-
- if (res->sr_bit_offset < bitoff)
- return 0;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0055-lockd-fix-the-endianness-bug.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0055-lockd-fix-the-endianness-bug.patch
deleted file mode 100644
index b5a1ab8..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0055-lockd-fix-the-endianness-bug.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From 3257f4da731bb45c2117beda34ed3202df1c74e4 Mon Sep 17 00:00:00 2001
-From: Al Viro <viro at zeniv.linux.org.uk>
-Date: Fri, 13 Apr 2012 13:49:47 -0400
-Subject: [PATCH 055/165] lockd: fix the endianness bug
-
-commit e847469bf77a1d339274074ed068d461f0c872bc upstream.
-
-comparing be32 values for < is not doing the right thing...
-
-Signed-off-by: Al Viro <viro at zeniv.linux.org.uk>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/lockd/clnt4xdr.c | 2 +-
- fs/lockd/clntxdr.c | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/fs/lockd/clnt4xdr.c b/fs/lockd/clnt4xdr.c
-index f848b52..046bb77 100644
---- a/fs/lockd/clnt4xdr.c
-+++ b/fs/lockd/clnt4xdr.c
-@@ -241,7 +241,7 @@ static int decode_nlm4_stat(struct xdr_stream *xdr, __be32 *stat)
- p = xdr_inline_decode(xdr, 4);
- if (unlikely(p == NULL))
- goto out_overflow;
-- if (unlikely(*p > nlm4_failed))
-+ if (unlikely(ntohl(*p) > ntohl(nlm4_failed)))
- goto out_bad_xdr;
- *stat = *p;
- return 0;
-diff --git a/fs/lockd/clntxdr.c b/fs/lockd/clntxdr.c
-index 180ac34..36057ce 100644
---- a/fs/lockd/clntxdr.c
-+++ b/fs/lockd/clntxdr.c
-@@ -236,7 +236,7 @@ static int decode_nlm_stat(struct xdr_stream *xdr,
- p = xdr_inline_decode(xdr, 4);
- if (unlikely(p == NULL))
- goto out_overflow;
-- if (unlikely(*p > nlm_lck_denied_grace_period))
-+ if (unlikely(ntohl(*p) > ntohl(nlm_lck_denied_grace_period)))
- goto out_enum;
- *stat = *p;
- return 0;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0056-usb-dwc3-ep0-increment-actual-on-bounced-ep0-case.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0056-usb-dwc3-ep0-increment-actual-on-bounced-ep0-case.patch
deleted file mode 100644
index de20c2b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0056-usb-dwc3-ep0-increment-actual-on-bounced-ep0-case.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From ab98d1498e030766394cbc78259a2a9a1aa5edbe Mon Sep 17 00:00:00 2001
-From: Felipe Balbi <balbi at ti.com>
-Date: Wed, 21 Mar 2012 11:44:00 +0200
-Subject: [PATCH 056/165] usb: dwc3: ep0: increment "actual" on bounced ep0
- case
-
-commit cd423dd3634a5232a3019eb372b144619a61cd16 upstream.
-
-due to a HW limitation we have a bounce buffer for ep0
-out transfers which are not aligned with MaxPacketSize.
-
-On such case we were not increment r->actual as we should.
-
-This patch fixes that mistake.
-
-Signed-off-by: Felipe Balbi <balbi at ti.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/dwc3/ep0.c | 3 ++-
- 1 files changed, 2 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/usb/dwc3/ep0.c b/drivers/usb/dwc3/ep0.c
-index 27bd50a..c0dcf69 100644
---- a/drivers/usb/dwc3/ep0.c
-+++ b/drivers/usb/dwc3/ep0.c
-@@ -572,9 +572,10 @@ static void dwc3_ep0_complete_data(struct dwc3 *dwc,
- dwc->ep0_bounced = false;
- } else {
- transferred = ur->length - trb.length;
-- ur->actual += transferred;
- }
-
-+ ur->actual += transferred;
-+
- if ((epnum & 1) && ur->actual < ur->length) {
- /* for some reason we did not get everything out */
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0057-net-fix-proc-net-dev-regression.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0057-net-fix-proc-net-dev-regression.patch
deleted file mode 100644
index 369b0fa..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0057-net-fix-proc-net-dev-regression.patch
+++ /dev/null
@@ -1,185 +0,0 @@
-From 83b74fb7bfab64f75ff56f20f3736c44b035c823 Mon Sep 17 00:00:00 2001
-From: Eric Dumazet <eric.dumazet at gmail.com>
-Date: Mon, 2 Apr 2012 22:33:02 +0000
-Subject: [PATCH 057/165] net: fix /proc/net/dev regression
-
-[ Upstream commit 2def16ae6b0c77571200f18ba4be049b03d75579 ]
-
-Commit f04565ddf52 (dev: use name hash for dev_seq_ops) added a second
-regression, as some devices are missing from /proc/net/dev if many
-devices are defined.
-
-When seq_file buffer is filled, the last ->next/show() method is
-canceled (pos value is reverted to value prior ->next() call)
-
-Problem is after above commit, we dont restart the lookup at right
-position in ->start() method.
-
-Fix this by removing the internal 'pos' pointer added in commit, since
-we need to use the 'loff_t *pos' provided by seq_file layer.
-
-This also reverts commit 5cac98dd0 (net: Fix corruption
-in /proc/*/net/dev_mcast), since its not needed anymore.
-
-Reported-by: Ben Greear <greearb at candelatech.com>
-Signed-off-by: Eric Dumazet <eric.dumazet at gmail.com>
-Cc: Mihai Maruseac <mmaruseac at ixiacom.com>
-Tested-by: Ben Greear <greearb at candelatech.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- include/linux/netdevice.h | 2 -
- net/core/dev.c | 58 ++++++++++----------------------------------
- net/core/dev_addr_lists.c | 3 +-
- 3 files changed, 15 insertions(+), 48 deletions(-)
-
-diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
-index a82ad4d..cbeb586 100644
---- a/include/linux/netdevice.h
-+++ b/include/linux/netdevice.h
-@@ -2536,8 +2536,6 @@ extern void net_disable_timestamp(void);
- extern void *dev_seq_start(struct seq_file *seq, loff_t *pos);
- extern void *dev_seq_next(struct seq_file *seq, void *v, loff_t *pos);
- extern void dev_seq_stop(struct seq_file *seq, void *v);
--extern int dev_seq_open_ops(struct inode *inode, struct file *file,
-- const struct seq_operations *ops);
- #endif
-
- extern int netdev_class_create_file(struct class_attribute *class_attr);
-diff --git a/net/core/dev.c b/net/core/dev.c
-index 55cd370..cd5050e 100644
---- a/net/core/dev.c
-+++ b/net/core/dev.c
-@@ -4102,54 +4102,41 @@ static int dev_ifconf(struct net *net, char __user *arg)
-
- #ifdef CONFIG_PROC_FS
-
--#define BUCKET_SPACE (32 - NETDEV_HASHBITS)
--
--struct dev_iter_state {
-- struct seq_net_private p;
-- unsigned int pos; /* bucket << BUCKET_SPACE + offset */
--};
-+#define BUCKET_SPACE (32 - NETDEV_HASHBITS - 1)
-
- #define get_bucket(x) ((x) >> BUCKET_SPACE)
- #define get_offset(x) ((x) & ((1 << BUCKET_SPACE) - 1))
- #define set_bucket_offset(b, o) ((b) << BUCKET_SPACE | (o))
-
--static inline struct net_device *dev_from_same_bucket(struct seq_file *seq)
-+static inline struct net_device *dev_from_same_bucket(struct seq_file *seq, loff_t *pos)
- {
-- struct dev_iter_state *state = seq->private;
- struct net *net = seq_file_net(seq);
- struct net_device *dev;
- struct hlist_node *p;
- struct hlist_head *h;
-- unsigned int count, bucket, offset;
-+ unsigned int count = 0, offset = get_offset(*pos);
-
-- bucket = get_bucket(state->pos);
-- offset = get_offset(state->pos);
-- h = &net->dev_name_head[bucket];
-- count = 0;
-+ h = &net->dev_name_head[get_bucket(*pos)];
- hlist_for_each_entry_rcu(dev, p, h, name_hlist) {
-- if (count++ == offset) {
-- state->pos = set_bucket_offset(bucket, count);
-+ if (++count == offset)
- return dev;
-- }
- }
-
- return NULL;
- }
-
--static inline struct net_device *dev_from_new_bucket(struct seq_file *seq)
-+static inline struct net_device *dev_from_bucket(struct seq_file *seq, loff_t *pos)
- {
-- struct dev_iter_state *state = seq->private;
- struct net_device *dev;
- unsigned int bucket;
-
-- bucket = get_bucket(state->pos);
- do {
-- dev = dev_from_same_bucket(seq);
-+ dev = dev_from_same_bucket(seq, pos);
- if (dev)
- return dev;
-
-- bucket++;
-- state->pos = set_bucket_offset(bucket, 0);
-+ bucket = get_bucket(*pos) + 1;
-+ *pos = set_bucket_offset(bucket, 1);
- } while (bucket < NETDEV_HASHENTRIES);
-
- return NULL;
-@@ -4162,33 +4149,20 @@ static inline struct net_device *dev_from_new_bucket(struct seq_file *seq)
- void *dev_seq_start(struct seq_file *seq, loff_t *pos)
- __acquires(RCU)
- {
-- struct dev_iter_state *state = seq->private;
--
- rcu_read_lock();
- if (!*pos)
- return SEQ_START_TOKEN;
-
-- /* check for end of the hash */
-- if (state->pos == 0 && *pos > 1)
-+ if (get_bucket(*pos) >= NETDEV_HASHENTRIES)
- return NULL;
-
-- return dev_from_new_bucket(seq);
-+ return dev_from_bucket(seq, pos);
- }
-
- void *dev_seq_next(struct seq_file *seq, void *v, loff_t *pos)
- {
-- struct net_device *dev;
--
- ++*pos;
--
-- if (v == SEQ_START_TOKEN)
-- return dev_from_new_bucket(seq);
--
-- dev = dev_from_same_bucket(seq);
-- if (dev)
-- return dev;
--
-- return dev_from_new_bucket(seq);
-+ return dev_from_bucket(seq, pos);
- }
-
- void dev_seq_stop(struct seq_file *seq, void *v)
-@@ -4287,13 +4261,7 @@ static const struct seq_operations dev_seq_ops = {
- static int dev_seq_open(struct inode *inode, struct file *file)
- {
- return seq_open_net(inode, file, &dev_seq_ops,
-- sizeof(struct dev_iter_state));
--}
--
--int dev_seq_open_ops(struct inode *inode, struct file *file,
-- const struct seq_operations *ops)
--{
-- return seq_open_net(inode, file, ops, sizeof(struct dev_iter_state));
-+ sizeof(struct seq_net_private));
- }
-
- static const struct file_operations dev_seq_fops = {
-diff --git a/net/core/dev_addr_lists.c b/net/core/dev_addr_lists.c
-index febba51..277faef 100644
---- a/net/core/dev_addr_lists.c
-+++ b/net/core/dev_addr_lists.c
-@@ -696,7 +696,8 @@ static const struct seq_operations dev_mc_seq_ops = {
-
- static int dev_mc_seq_open(struct inode *inode, struct file *file)
- {
-- return dev_seq_open_ops(inode, file, &dev_mc_seq_ops);
-+ return seq_open_net(inode, file, &dev_mc_seq_ops,
-+ sizeof(struct seq_net_private));
- }
-
- static const struct file_operations dev_mc_seq_fops = {
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0058-nfsd-don-t-fail-unchecked-creates-of-non-special-fil.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0058-nfsd-don-t-fail-unchecked-creates-of-non-special-fil.patch
deleted file mode 100644
index 1eb56e6..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0058-nfsd-don-t-fail-unchecked-creates-of-non-special-fil.patch
+++ /dev/null
@@ -1,75 +0,0 @@
-From 5a9807ef2e73be0be4b878dbec1691f91d875585 Mon Sep 17 00:00:00 2001
-From: "J. Bruce Fields" <bfields at redhat.com>
-Date: Mon, 9 Apr 2012 18:06:49 -0400
-Subject: [PATCH 058/165] nfsd: don't fail unchecked creates of non-special
- files
-
-commit 9dc4e6c4d1182d34604ea40fef641775f5b15456 upstream.
-
-Allow a v3 unchecked open of a non-regular file succeed as if it were a
-lookup; typically a client in such a case will want to fall back on a
-local open, so succeeding and giving it the filehandle is more useful
-than failing with nfserr_exist, which makes it appear that nothing at
-all exists by that name.
-
-Similarly for v4, on an open-create, return the same errors we would on
-an attempt to open a non-regular file, instead of returning
-nfserr_exist.
-
-This fixes a problem found doing a v4 open of a symlink with
-O_RDONLY|O_CREAT, which resulted in the current client returning EEXIST.
-
-Thanks also to Trond for analysis.
-
-Reported-by: Orion Poplawski <orion at cora.nwra.com>
-Tested-by: Orion Poplawski <orion at cora.nwra.com>
-Signed-off-by: J. Bruce Fields <bfields at redhat.com>
-[bwh: Backported to 3.2: use &resfh, not resfh]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/nfsd/nfs4proc.c | 8 ++++----
- fs/nfsd/vfs.c | 2 +-
- 2 files changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c
-index 35840aa..b8c5538 100644
---- a/fs/nfsd/nfs4proc.c
-+++ b/fs/nfsd/nfs4proc.c
-@@ -231,17 +231,17 @@ do_open_lookup(struct svc_rqst *rqstp, struct svc_fh *current_fh, struct nfsd4_o
- */
- if (open->op_createmode == NFS4_CREATE_EXCLUSIVE && status == 0)
- open->op_bmval[1] = (FATTR4_WORD1_TIME_ACCESS |
-- FATTR4_WORD1_TIME_MODIFY);
-+ FATTR4_WORD1_TIME_MODIFY);
- } else {
- status = nfsd_lookup(rqstp, current_fh,
- open->op_fname.data, open->op_fname.len, &resfh);
- fh_unlock(current_fh);
-- if (status)
-- goto out;
-- status = nfsd_check_obj_isreg(&resfh);
- }
- if (status)
- goto out;
-+ status = nfsd_check_obj_isreg(&resfh);
-+ if (status)
-+ goto out;
-
- if (is_create_with_attrs(open) && open->op_acl != NULL)
- do_set_nfs4_acl(rqstp, &resfh, open->op_acl, open->op_bmval);
-diff --git a/fs/nfsd/vfs.c b/fs/nfsd/vfs.c
-index 7a2e442..5c3cd82 100644
---- a/fs/nfsd/vfs.c
-+++ b/fs/nfsd/vfs.c
-@@ -1439,7 +1439,7 @@ do_nfsd_create(struct svc_rqst *rqstp, struct svc_fh *fhp,
- switch (createmode) {
- case NFS3_CREATE_UNCHECKED:
- if (! S_ISREG(dchild->d_inode->i_mode))
-- err = nfserr_exist;
-+ goto out;
- else if (truncp) {
- /* in nfsv4, we need to treat this case a little
- * differently. we don't want to truncate the
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0059-ppp-Don-t-stop-and-restart-queue-on-every-TX-packet.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0059-ppp-Don-t-stop-and-restart-queue-on-every-TX-packet.patch
deleted file mode 100644
index 4e154ad..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0059-ppp-Don-t-stop-and-restart-queue-on-every-TX-packet.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-From 8d46ef3ec21fd542ad3165d165a6db90427e61d8 Mon Sep 17 00:00:00 2001
-From: David Woodhouse <David.Woodhouse at intel.com>
-Date: Tue, 24 Apr 2012 22:09:47 -0400
-Subject: [PATCH 059/165] ppp: Don't stop and restart queue on every TX packet
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-[ This combines upstream commit
- e675f0cc9a872fd152edc0c77acfed19bf28b81e and follow-on bug fix
- commit 9a5d2bd99e0dfe9a31b3c160073ac445ba3d773f ]
-
-For every transmitted packet, ppp_start_xmit() will stop the netdev
-queue and then, if appropriate, restart it. This causes the TX softirq
-to run, entirely gratuitously.
-
-This is "only" a waste of CPU time in the normal case, but it's actively
-harmful when the PPP device is a TEQL slave — the wakeup will cause the
-offending device to receive the next TX packet from the TEQL queue, when
-it *should* have gone to the next slave in the list. We end up seeing
-large bursts of packets on just *one* slave device, rather than using
-the full available bandwidth over all slaves.
-
-This patch fixes the problem by *not* unconditionally stopping the queue
-in ppp_start_xmit(). It adds a return value from ppp_xmit_process()
-which indicates whether the queue should be stopped or not.
-
-It *doesn't* remove the call to netif_wake_queue() from
-ppp_xmit_process(), because other code paths (especially from
-ppp_output_wakeup()) need it there and it's messy to push it out to the
-other callers to do it based on the return value. So we leave it in
-place — it's a no-op in the case where the queue wasn't stopped, so it's
-harmless in the TX path.
-
-Signed-off-by: David Woodhouse <David.Woodhouse at intel.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/ppp/ppp_generic.c | 3 ++-
- 1 files changed, 2 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/net/ppp/ppp_generic.c b/drivers/net/ppp/ppp_generic.c
-index 486b404..3ed983c 100644
---- a/drivers/net/ppp/ppp_generic.c
-+++ b/drivers/net/ppp/ppp_generic.c
-@@ -968,7 +968,6 @@ ppp_start_xmit(struct sk_buff *skb, struct net_device *dev)
- proto = npindex_to_proto[npi];
- put_unaligned_be16(proto, pp);
-
-- netif_stop_queue(dev);
- skb_queue_tail(&ppp->file.xq, skb);
- ppp_xmit_process(ppp);
- return NETDEV_TX_OK;
-@@ -1063,6 +1062,8 @@ ppp_xmit_process(struct ppp *ppp)
- code that we can accept some more. */
- if (!ppp->xmit_pending && !skb_peek(&ppp->file.xq))
- netif_wake_queue(ppp->dev);
-+ else
-+ netif_stop_queue(ppp->dev);
- }
- ppp_xmit_unlock(ppp);
- }
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0060-tcp-allow-splice-to-build-full-TSO-packets.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0060-tcp-allow-splice-to-build-full-TSO-packets.patch
deleted file mode 100644
index ab1c612..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0060-tcp-allow-splice-to-build-full-TSO-packets.patch
+++ /dev/null
@@ -1,129 +0,0 @@
-From 2d09c2df4957a8d73ea24c4464ad6942efedf590 Mon Sep 17 00:00:00 2001
-From: Eric Dumazet <eric.dumazet at gmail.com>
-Date: Tue, 24 Apr 2012 22:12:06 -0400
-Subject: [PATCH 060/165] tcp: allow splice() to build full TSO packets
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-[ This combines upstream commit
- 2f53384424251c06038ae612e56231b96ab610ee and the follow-on bug fix
- commit 35f9c09fe9c72eb8ca2b8e89a593e1c151f28fc2 ]
-
-vmsplice()/splice(pipe, socket) call do_tcp_sendpages() one page at a
-time, adding at most 4096 bytes to an skb. (assuming PAGE_SIZE=4096)
-
-The call to tcp_push() at the end of do_tcp_sendpages() forces an
-immediate xmit when pipe is not already filled, and tso_fragment() try
-to split these skb to MSS multiples.
-
-4096 bytes are usually split in a skb with 2 MSS, and a remaining
-sub-mss skb (assuming MTU=1500)
-
-This makes slow start suboptimal because many small frames are sent to
-qdisc/driver layers instead of big ones (constrained by cwnd and packets
-in flight of course)
-
-In fact, applications using sendmsg() (adding an additional memory copy)
-instead of vmsplice()/splice()/sendfile() are a bit faster because of
-this anomaly, especially if serving small files in environments with
-large initial [c]wnd.
-
-Call tcp_push() only if MSG_MORE is not set in the flags parameter.
-
-This bit is automatically provided by splice() internals but for the
-last page, or on all pages if user specified SPLICE_F_MORE splice()
-flag.
-
-In some workloads, this can reduce number of sent logical packets by an
-order of magnitude, making zero-copy TCP actually faster than
-one-copy :)
-
-Reported-by: Tom Herbert <therbert at google.com>
-Cc: Nandita Dukkipati <nanditad at google.com>
-Cc: Neal Cardwell <ncardwell at google.com>
-Cc: Tom Herbert <therbert at google.com>
-Cc: Yuchung Cheng <ycheng at google.com>
-Cc: H.K. Jerry Chu <hkchu at google.com>
-Cc: Maciej Żenczykowski <maze at google.com>
-Cc: Mahesh Bandewar <maheshb at google.com>
-Cc: Ilpo Järvinen <ilpo.jarvinen at helsinki.fi>
-Signed-off-by: Eric Dumazet <eric.dumazet at gmail.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/splice.c | 5 ++++-
- include/linux/socket.h | 2 +-
- net/ipv4/tcp.c | 2 +-
- net/socket.c | 6 +++---
- 4 files changed, 9 insertions(+), 6 deletions(-)
-
-diff --git a/fs/splice.c b/fs/splice.c
-index fa2defa..6d0dfb8 100644
---- a/fs/splice.c
-+++ b/fs/splice.c
-@@ -31,6 +31,7 @@
- #include <linux/uio.h>
- #include <linux/security.h>
- #include <linux/gfp.h>
-+#include <linux/socket.h>
-
- /*
- * Attempt to steal a page from a pipe buffer. This should perhaps go into
-@@ -691,7 +692,9 @@ static int pipe_to_sendpage(struct pipe_inode_info *pipe,
- if (!likely(file->f_op && file->f_op->sendpage))
- return -EINVAL;
-
-- more = (sd->flags & SPLICE_F_MORE) || sd->len < sd->total_len;
-+ more = (sd->flags & SPLICE_F_MORE) ? MSG_MORE : 0;
-+ if (sd->len < sd->total_len)
-+ more |= MSG_SENDPAGE_NOTLAST;
- return file->f_op->sendpage(file, buf->page, buf->offset,
- sd->len, &pos, more);
- }
-diff --git a/include/linux/socket.h b/include/linux/socket.h
-index d0e77f6..ad919e0 100644
---- a/include/linux/socket.h
-+++ b/include/linux/socket.h
-@@ -265,7 +265,7 @@ struct ucred {
- #define MSG_NOSIGNAL 0x4000 /* Do not generate SIGPIPE */
- #define MSG_MORE 0x8000 /* Sender will send more */
- #define MSG_WAITFORONE 0x10000 /* recvmmsg(): block until 1+ packets avail */
--
-+#define MSG_SENDPAGE_NOTLAST 0x20000 /* sendpage() internal : not the last page */
- #define MSG_EOF MSG_FIN
-
- #define MSG_CMSG_CLOEXEC 0x40000000 /* Set close_on_exit for file
-diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
-index 34f5db1..36611ab 100644
---- a/net/ipv4/tcp.c
-+++ b/net/ipv4/tcp.c
-@@ -860,7 +860,7 @@ wait_for_memory:
- }
-
- out:
-- if (copied)
-+ if (copied && !(flags & MSG_SENDPAGE_NOTLAST))
- tcp_push(sk, flags, mss_now, tp->nonagle);
- return copied;
-
-diff --git a/net/socket.c b/net/socket.c
-index 2dce67a..273cbce 100644
---- a/net/socket.c
-+++ b/net/socket.c
-@@ -791,9 +791,9 @@ static ssize_t sock_sendpage(struct file *file, struct page *page,
-
- sock = file->private_data;
-
-- flags = !(file->f_flags & O_NONBLOCK) ? 0 : MSG_DONTWAIT;
-- if (more)
-- flags |= MSG_MORE;
-+ flags = (file->f_flags & O_NONBLOCK) ? MSG_DONTWAIT : 0;
-+ /* more is a combination of MSG_MORE and MSG_SENDPAGE_NOTLAST */
-+ flags |= more;
-
- return kernel_sendpage(sock, page, offset, size, flags);
- }
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0061-sctp-Allow-struct-sctp_event_subscribe-to-grow-witho.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0061-sctp-Allow-struct-sctp_event_subscribe-to-grow-witho.patch
deleted file mode 100644
index a322ca9..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0061-sctp-Allow-struct-sctp_event_subscribe-to-grow-witho.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From 8dda68d22ab01e2780f80a6afb814387fb904aa2 Mon Sep 17 00:00:00 2001
-From: Thomas Graf <tgraf at infradead.org>
-Date: Tue, 3 Apr 2012 22:17:53 +0000
-Subject: [PATCH 061/165] sctp: Allow struct sctp_event_subscribe to grow
- without breaking binaries
-
-[ Upstream commit acdd5985364f8dc511a0762fab2e683f29d9d692 ]
-
-getsockopt(..., SCTP_EVENTS, ...) performs a length check and returns
-an error if the user provides less bytes than the size of struct
-sctp_event_subscribe.
-
-Struct sctp_event_subscribe needs to be extended by an u8 for every
-new event or notification type that is added.
-
-This obviously makes getsockopt fail for binaries that are compiled
-against an older versions of <net/sctp/user.h> which do not contain
-all event types.
-
-This patch changes getsockopt behaviour to no longer return an error
-if not enough bytes are being provided by the user. Instead, it
-returns as much of sctp_event_subscribe as fits into the provided buffer.
-
-This leads to the new behavior that users see what they have been aware
-of at compile time.
-
-The setsockopt(..., SCTP_EVENTS, ...) API is already behaving like this.
-
-Signed-off-by: Thomas Graf <tgraf at suug.ch>
-Acked-by: Vlad Yasevich <vladislav.yasevich at hp.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/sctp/socket.c | 5 +++--
- 1 files changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/net/sctp/socket.c b/net/sctp/socket.c
-index 54a7cd2..0075554 100644
---- a/net/sctp/socket.c
-+++ b/net/sctp/socket.c
-@@ -4133,9 +4133,10 @@ static int sctp_getsockopt_disable_fragments(struct sock *sk, int len,
- static int sctp_getsockopt_events(struct sock *sk, int len, char __user *optval,
- int __user *optlen)
- {
-- if (len < sizeof(struct sctp_event_subscribe))
-+ if (len <= 0)
- return -EINVAL;
-- len = sizeof(struct sctp_event_subscribe);
-+ if (len > sizeof(struct sctp_event_subscribe))
-+ len = sizeof(struct sctp_event_subscribe);
- if (put_user(len, optlen))
- return -EFAULT;
- if (copy_to_user(optval, &sctp_sk(sk)->subscribe, len))
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0062-bridge-Do-not-send-queries-on-multicast-group-leaves.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0062-bridge-Do-not-send-queries-on-multicast-group-leaves.patch
deleted file mode 100644
index 8fdd946..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0062-bridge-Do-not-send-queries-on-multicast-group-leaves.patch
+++ /dev/null
@@ -1,199 +0,0 @@
-From 9f8774d2e33d8c44b98e76db91cfc0d35b187f58 Mon Sep 17 00:00:00 2001
-From: Herbert Xu <herbert at gondor.apana.org.au>
-Date: Wed, 4 Apr 2012 01:01:20 +0000
-Subject: [PATCH 062/165] bridge: Do not send queries on multicast group
- leaves
-
-[ Upstream commit 996304bbea3d2a094b7ba54c3bd65d3fffeac57b ]
-
-As it stands the bridge IGMP snooping system will respond to
-group leave messages with queries for remaining membership.
-This is both unnecessary and undesirable. First of all any
-multicast routers present should be doing this rather than us.
-What's more the queries that we send may end up upsetting other
-multicast snooping swithces in the system that are buggy.
-
-In fact, we can simply remove the code that send these queries
-because the existing membership expiry mechanism doesn't rely
-on them anyway.
-
-So this patch simply removes all code associated with group
-queries in response to group leave messages.
-
-Signed-off-by: Herbert Xu <herbert at gondor.apana.org.au>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/bridge/br_multicast.c | 81 ---------------------------------------------
- net/bridge/br_private.h | 4 --
- 2 files changed, 0 insertions(+), 85 deletions(-)
-
-diff --git a/net/bridge/br_multicast.c b/net/bridge/br_multicast.c
-index 8eb6b15..5ac1811 100644
---- a/net/bridge/br_multicast.c
-+++ b/net/bridge/br_multicast.c
-@@ -241,7 +241,6 @@ static void br_multicast_group_expired(unsigned long data)
- hlist_del_rcu(&mp->hlist[mdb->ver]);
- mdb->size--;
-
-- del_timer(&mp->query_timer);
- call_rcu_bh(&mp->rcu, br_multicast_free_group);
-
- out:
-@@ -271,7 +270,6 @@ static void br_multicast_del_pg(struct net_bridge *br,
- rcu_assign_pointer(*pp, p->next);
- hlist_del_init(&p->mglist);
- del_timer(&p->timer);
-- del_timer(&p->query_timer);
- call_rcu_bh(&p->rcu, br_multicast_free_pg);
-
- if (!mp->ports && !mp->mglist &&
-@@ -507,74 +505,6 @@ static struct sk_buff *br_multicast_alloc_query(struct net_bridge *br,
- return NULL;
- }
-
--static void br_multicast_send_group_query(struct net_bridge_mdb_entry *mp)
--{
-- struct net_bridge *br = mp->br;
-- struct sk_buff *skb;
--
-- skb = br_multicast_alloc_query(br, &mp->addr);
-- if (!skb)
-- goto timer;
--
-- netif_rx(skb);
--
--timer:
-- if (++mp->queries_sent < br->multicast_last_member_count)
-- mod_timer(&mp->query_timer,
-- jiffies + br->multicast_last_member_interval);
--}
--
--static void br_multicast_group_query_expired(unsigned long data)
--{
-- struct net_bridge_mdb_entry *mp = (void *)data;
-- struct net_bridge *br = mp->br;
--
-- spin_lock(&br->multicast_lock);
-- if (!netif_running(br->dev) || !mp->mglist ||
-- mp->queries_sent >= br->multicast_last_member_count)
-- goto out;
--
-- br_multicast_send_group_query(mp);
--
--out:
-- spin_unlock(&br->multicast_lock);
--}
--
--static void br_multicast_send_port_group_query(struct net_bridge_port_group *pg)
--{
-- struct net_bridge_port *port = pg->port;
-- struct net_bridge *br = port->br;
-- struct sk_buff *skb;
--
-- skb = br_multicast_alloc_query(br, &pg->addr);
-- if (!skb)
-- goto timer;
--
-- br_deliver(port, skb);
--
--timer:
-- if (++pg->queries_sent < br->multicast_last_member_count)
-- mod_timer(&pg->query_timer,
-- jiffies + br->multicast_last_member_interval);
--}
--
--static void br_multicast_port_group_query_expired(unsigned long data)
--{
-- struct net_bridge_port_group *pg = (void *)data;
-- struct net_bridge_port *port = pg->port;
-- struct net_bridge *br = port->br;
--
-- spin_lock(&br->multicast_lock);
-- if (!netif_running(br->dev) || hlist_unhashed(&pg->mglist) ||
-- pg->queries_sent >= br->multicast_last_member_count)
-- goto out;
--
-- br_multicast_send_port_group_query(pg);
--
--out:
-- spin_unlock(&br->multicast_lock);
--}
--
- static struct net_bridge_mdb_entry *br_multicast_get_group(
- struct net_bridge *br, struct net_bridge_port *port,
- struct br_ip *group, int hash)
-@@ -690,8 +620,6 @@ rehash:
- mp->addr = *group;
- setup_timer(&mp->timer, br_multicast_group_expired,
- (unsigned long)mp);
-- setup_timer(&mp->query_timer, br_multicast_group_query_expired,
-- (unsigned long)mp);
-
- hlist_add_head_rcu(&mp->hlist[mdb->ver], &mdb->mhash[hash]);
- mdb->size++;
-@@ -746,8 +674,6 @@ static int br_multicast_add_group(struct net_bridge *br,
- hlist_add_head(&p->mglist, &port->mglist);
- setup_timer(&p->timer, br_multicast_port_group_expired,
- (unsigned long)p);
-- setup_timer(&p->query_timer, br_multicast_port_group_query_expired,
-- (unsigned long)p);
-
- rcu_assign_pointer(*pp, p);
-
-@@ -1291,9 +1217,6 @@ static void br_multicast_leave_group(struct net_bridge *br,
- time_after(mp->timer.expires, time) :
- try_to_del_timer_sync(&mp->timer) >= 0)) {
- mod_timer(&mp->timer, time);
--
-- mp->queries_sent = 0;
-- mod_timer(&mp->query_timer, now);
- }
-
- goto out;
-@@ -1310,9 +1233,6 @@ static void br_multicast_leave_group(struct net_bridge *br,
- time_after(p->timer.expires, time) :
- try_to_del_timer_sync(&p->timer) >= 0)) {
- mod_timer(&p->timer, time);
--
-- p->queries_sent = 0;
-- mod_timer(&p->query_timer, now);
- }
-
- break;
-@@ -1680,7 +1600,6 @@ void br_multicast_stop(struct net_bridge *br)
- hlist_for_each_entry_safe(mp, p, n, &mdb->mhash[i],
- hlist[ver]) {
- del_timer(&mp->timer);
-- del_timer(&mp->query_timer);
- call_rcu_bh(&mp->rcu, br_multicast_free_group);
- }
- }
-diff --git a/net/bridge/br_private.h b/net/bridge/br_private.h
-index d7d6fb0..93264df 100644
---- a/net/bridge/br_private.h
-+++ b/net/bridge/br_private.h
-@@ -82,9 +82,7 @@ struct net_bridge_port_group {
- struct hlist_node mglist;
- struct rcu_head rcu;
- struct timer_list timer;
-- struct timer_list query_timer;
- struct br_ip addr;
-- u32 queries_sent;
- };
-
- struct net_bridge_mdb_entry
-@@ -94,10 +92,8 @@ struct net_bridge_mdb_entry
- struct net_bridge_port_group __rcu *ports;
- struct rcu_head rcu;
- struct timer_list timer;
-- struct timer_list query_timer;
- struct br_ip addr;
- bool mglist;
-- u32 queries_sent;
- };
-
- struct net_bridge_mdb_htable
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0063-ipv6-fix-array-index-in-ip6_mc_add_src.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0063-ipv6-fix-array-index-in-ip6_mc_add_src.patch
deleted file mode 100644
index afc26e4..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0063-ipv6-fix-array-index-in-ip6_mc_add_src.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From dda800eb86fb88c28f63c0136cc76b1346322feb Mon Sep 17 00:00:00 2001
-From: "RongQing.Li" <roy.qing.li at gmail.com>
-Date: Wed, 4 Apr 2012 16:47:04 +0000
-Subject: [PATCH 063/165] ipv6: fix array index in ip6_mc_add_src()
-
-[ Upstream commit 78d50217baf36093ab320f95bae0d6452daec85c ]
-
-Convert array index from the loop bound to the loop index.
-
-And remove the void type conversion to ip6_mc_del1_src() return
-code, seem it is unnecessary, since ip6_mc_del1_src() does not
-use __must_check similar attribute, no compiler will report the
-warning when it is removed.
-
-v2: enrich the commit header
-
-Signed-off-by: RongQing.Li <roy.qing.li at gmail.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/ipv6/mcast.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/net/ipv6/mcast.c b/net/ipv6/mcast.c
-index 2257366..f2d74ea 100644
---- a/net/ipv6/mcast.c
-+++ b/net/ipv6/mcast.c
-@@ -2054,7 +2054,7 @@ static int ip6_mc_add_src(struct inet6_dev *idev, const struct in6_addr *pmca,
- if (!delta)
- pmc->mca_sfcount[sfmode]--;
- for (j=0; j<i; j++)
-- (void) ip6_mc_del1_src(pmc, sfmode, &psfsrc[i]);
-+ ip6_mc_del1_src(pmc, sfmode, &psfsrc[j]);
- } else if (isexclude != (pmc->mca_sfcount[MCAST_EXCLUDE] != 0)) {
- struct ip6_sf_list *psf;
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0064-phonet-Check-input-from-user-before-allocating.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0064-phonet-Check-input-from-user-before-allocating.patch
deleted file mode 100644
index e6d6ac0..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0064-phonet-Check-input-from-user-before-allocating.patch
+++ /dev/null
@@ -1,78 +0,0 @@
-From 636e8de47aae86650672a0065eb401e918544d34 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <levinsasha928 at gmail.com>
-Date: Thu, 5 Apr 2012 12:07:45 +0000
-Subject: [PATCH 064/165] phonet: Check input from user before allocating
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-[ Upstream commit bcf1b70ac6eb0ed8286c66e6bf37cb747cbaa04c ]
-
-A phonet packet is limited to USHRT_MAX bytes, this is never checked during
-tx which means that the user can specify any size he wishes, and the kernel
-will attempt to allocate that size.
-
-In the good case, it'll lead to the following warning, but it may also cause
-the kernel to kick in the OOM and kill a random task on the server.
-
-[ 8921.744094] WARNING: at mm/page_alloc.c:2255 __alloc_pages_slowpath+0x65/0x730()
-[ 8921.749770] Pid: 5081, comm: trinity Tainted: G W 3.4.0-rc1-next-20120402-sasha #46
-[ 8921.756672] Call Trace:
-[ 8921.758185] [<ffffffff810b2ba7>] warn_slowpath_common+0x87/0xb0
-[ 8921.762868] [<ffffffff810b2be5>] warn_slowpath_null+0x15/0x20
-[ 8921.765399] [<ffffffff8117eae5>] __alloc_pages_slowpath+0x65/0x730
-[ 8921.769226] [<ffffffff81179c8a>] ? zone_watermark_ok+0x1a/0x20
-[ 8921.771686] [<ffffffff8117d045>] ? get_page_from_freelist+0x625/0x660
-[ 8921.773919] [<ffffffff8117f3a8>] __alloc_pages_nodemask+0x1f8/0x240
-[ 8921.776248] [<ffffffff811c03e0>] kmalloc_large_node+0x70/0xc0
-[ 8921.778294] [<ffffffff811c4bd4>] __kmalloc_node_track_caller+0x34/0x1c0
-[ 8921.780847] [<ffffffff821b0e3c>] ? sock_alloc_send_pskb+0xbc/0x260
-[ 8921.783179] [<ffffffff821b3c65>] __alloc_skb+0x75/0x170
-[ 8921.784971] [<ffffffff821b0e3c>] sock_alloc_send_pskb+0xbc/0x260
-[ 8921.787111] [<ffffffff821b002e>] ? release_sock+0x7e/0x90
-[ 8921.788973] [<ffffffff821b0ff0>] sock_alloc_send_skb+0x10/0x20
-[ 8921.791052] [<ffffffff824cfc20>] pep_sendmsg+0x60/0x380
-[ 8921.792931] [<ffffffff824cb4a6>] ? pn_socket_bind+0x156/0x180
-[ 8921.794917] [<ffffffff824cb50f>] ? pn_socket_autobind+0x3f/0x90
-[ 8921.797053] [<ffffffff824cb63f>] pn_socket_sendmsg+0x4f/0x70
-[ 8921.798992] [<ffffffff821ab8e7>] sock_aio_write+0x187/0x1b0
-[ 8921.801395] [<ffffffff810e325e>] ? sub_preempt_count+0xae/0xf0
-[ 8921.803501] [<ffffffff8111842c>] ? __lock_acquire+0x42c/0x4b0
-[ 8921.805505] [<ffffffff821ab760>] ? __sock_recv_ts_and_drops+0x140/0x140
-[ 8921.807860] [<ffffffff811e07cc>] do_sync_readv_writev+0xbc/0x110
-[ 8921.809986] [<ffffffff811958e7>] ? might_fault+0x97/0xa0
-[ 8921.811998] [<ffffffff817bd99e>] ? security_file_permission+0x1e/0x90
-[ 8921.814595] [<ffffffff811e17e2>] do_readv_writev+0xe2/0x1e0
-[ 8921.816702] [<ffffffff810b8dac>] ? do_setitimer+0x1ac/0x200
-[ 8921.818819] [<ffffffff810e2ec1>] ? get_parent_ip+0x11/0x50
-[ 8921.820863] [<ffffffff810e325e>] ? sub_preempt_count+0xae/0xf0
-[ 8921.823318] [<ffffffff811e1926>] vfs_writev+0x46/0x60
-[ 8921.825219] [<ffffffff811e1a3f>] sys_writev+0x4f/0xb0
-[ 8921.827127] [<ffffffff82658039>] system_call_fastpath+0x16/0x1b
-[ 8921.829384] ---[ end trace dffe390f30db9eb7 ]---
-
-Signed-off-by: Sasha Levin <levinsasha928 at gmail.com>
-Acked-by: Rémi Denis-Courmont <remi.denis-courmont at nokia.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/phonet/pep.c | 3 +++
- 1 files changed, 3 insertions(+), 0 deletions(-)
-
-diff --git a/net/phonet/pep.c b/net/phonet/pep.c
-index 2ba6e9f..007546d 100644
---- a/net/phonet/pep.c
-+++ b/net/phonet/pep.c
-@@ -1046,6 +1046,9 @@ static int pep_sendmsg(struct kiocb *iocb, struct sock *sk,
- int flags = msg->msg_flags;
- int err, done;
-
-+ if (len > USHRT_MAX)
-+ return -EMSGSIZE;
-+
- if ((msg->msg_flags & ~(MSG_DONTWAIT|MSG_EOR|MSG_NOSIGNAL|
- MSG_CMSG_COMPAT)) ||
- !(msg->msg_flags & MSG_EOR))
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0065-bonding-properly-unset-current_arp_slave-on-slave-li.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0065-bonding-properly-unset-current_arp_slave-on-slave-li.patch
deleted file mode 100644
index 74876f6..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0065-bonding-properly-unset-current_arp_slave-on-slave-li.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From 1413698b8d47c7fb2783cafd906ac1db9b1723d7 Mon Sep 17 00:00:00 2001
-From: Veaceslav Falico <vfalico at redhat.com>
-Date: Thu, 5 Apr 2012 03:47:43 +0000
-Subject: [PATCH 065/165] bonding: properly unset current_arp_slave on slave
- link up
-
-[ Upstream commit 5a4309746cd74734daa964acb02690c22b3c8911 ]
-
-When a slave comes up, we're unsetting the current_arp_slave without
-removing active flags from it, which can lead to situations where we have
-more than one slave with active flags in active-backup mode.
-
-To avoid this situation we must remove the active flags from a slave before
-removing it as a current_arp_slave.
-
-Signed-off-by: Veaceslav Falico <vfalico at redhat.com>
-Signed-off-by: Jay Vosburgh <fubar at us.ibm.com>
-Signed-off-by: Andy Gospodarek <andy at greyhouse.net>
-Signed-off-by: Marcelo Ricardo Leitner <mleitner at redhat.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/bonding/bond_main.c | 6 +++++-
- 1 files changed, 5 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
-index e58aa2b..f65e0b9 100644
---- a/drivers/net/bonding/bond_main.c
-+++ b/drivers/net/bonding/bond_main.c
-@@ -2982,7 +2982,11 @@ static void bond_ab_arp_commit(struct bonding *bond, int delta_in_ticks)
- trans_start + delta_in_ticks)) ||
- bond->curr_active_slave != slave) {
- slave->link = BOND_LINK_UP;
-- bond->current_arp_slave = NULL;
-+ if (bond->current_arp_slave) {
-+ bond_set_slave_inactive_flags(
-+ bond->current_arp_slave);
-+ bond->current_arp_slave = NULL;
-+ }
-
- pr_info("%s: link status definitely up for interface %s.\n",
- bond->dev->name, slave->dev->name);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0066-wimax-i2400m-prevent-a-possible-kernel-bug-due-to-mi.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0066-wimax-i2400m-prevent-a-possible-kernel-bug-due-to-mi.patch
deleted file mode 100644
index 7e6a8ee..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0066-wimax-i2400m-prevent-a-possible-kernel-bug-due-to-mi.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 5454ccf43f7636614fc378283890bf911c2e2058 Mon Sep 17 00:00:00 2001
-From: Phil Sutter <phil.sutter at viprinet.com>
-Date: Mon, 26 Mar 2012 09:01:30 +0000
-Subject: [PATCH 066/165] wimax: i2400m - prevent a possible kernel bug due to
- missing fw_name string
-
-[ Upstream commit 4eee6a3a04e8bb53fbe7de0f64d0524d3fbe3f80 ]
-
-This happened on a machine with a custom hotplug script calling nameif,
-probably due to slow firmware loading. At the time nameif uses ethtool
-to gather interface information, i2400m->fw_name is zero and so a null
-pointer dereference occurs from within i2400m_get_drvinfo().
-
-Signed-off-by: Phil Sutter <phil.sutter at viprinet.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/wimax/i2400m/netdev.c | 3 ++-
- 1 files changed, 2 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/net/wimax/i2400m/netdev.c b/drivers/net/wimax/i2400m/netdev.c
-index 64a1106..4697cf3 100644
---- a/drivers/net/wimax/i2400m/netdev.c
-+++ b/drivers/net/wimax/i2400m/netdev.c
-@@ -607,7 +607,8 @@ static void i2400m_get_drvinfo(struct net_device *net_dev,
- struct i2400m *i2400m = net_dev_to_i2400m(net_dev);
-
- strncpy(info->driver, KBUILD_MODNAME, sizeof(info->driver) - 1);
-- strncpy(info->fw_version, i2400m->fw_name, sizeof(info->fw_version) - 1);
-+ strncpy(info->fw_version,
-+ i2400m->fw_name ? : "", sizeof(info->fw_version) - 1);
- if (net_dev->dev.parent)
- strncpy(info->bus_info, dev_name(net_dev->dev.parent),
- sizeof(info->bus_info) - 1);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0067-netlink-fix-races-after-skb-queueing.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0067-netlink-fix-races-after-skb-queueing.patch
deleted file mode 100644
index a7ee423..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0067-netlink-fix-races-after-skb-queueing.patch
+++ /dev/null
@@ -1,82 +0,0 @@
-From 0f7eb8a3cb853edf31ec23d26623b195603814b2 Mon Sep 17 00:00:00 2001
-From: Eric Dumazet <eric.dumazet at gmail.com>
-Date: Thu, 5 Apr 2012 22:17:46 +0000
-Subject: [PATCH 067/165] netlink: fix races after skb queueing
-
-[ Upstream commit 4a7e7c2ad540e54c75489a70137bf0ec15d3a127 ]
-
-As soon as an skb is queued into socket receive_queue, another thread
-can consume it, so we are not allowed to reference skb anymore, or risk
-use after free.
-
-Signed-off-by: Eric Dumazet <eric.dumazet at gmail.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/netlink/af_netlink.c | 24 +++++++++++++-----------
- 1 files changed, 13 insertions(+), 11 deletions(-)
-
-diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c
-index 1201b6d..a99fb41 100644
---- a/net/netlink/af_netlink.c
-+++ b/net/netlink/af_netlink.c
-@@ -830,12 +830,19 @@ int netlink_attachskb(struct sock *sk, struct sk_buff *skb,
- return 0;
- }
-
--int netlink_sendskb(struct sock *sk, struct sk_buff *skb)
-+static int __netlink_sendskb(struct sock *sk, struct sk_buff *skb)
- {
- int len = skb->len;
-
- skb_queue_tail(&sk->sk_receive_queue, skb);
- sk->sk_data_ready(sk, len);
-+ return len;
-+}
-+
-+int netlink_sendskb(struct sock *sk, struct sk_buff *skb)
-+{
-+ int len = __netlink_sendskb(sk, skb);
-+
- sock_put(sk);
- return len;
- }
-@@ -960,8 +967,7 @@ static inline int netlink_broadcast_deliver(struct sock *sk,
- if (atomic_read(&sk->sk_rmem_alloc) <= sk->sk_rcvbuf &&
- !test_bit(0, &nlk->state)) {
- skb_set_owner_r(skb, sk);
-- skb_queue_tail(&sk->sk_receive_queue, skb);
-- sk->sk_data_ready(sk, skb->len);
-+ __netlink_sendskb(sk, skb);
- return atomic_read(&sk->sk_rmem_alloc) > sk->sk_rcvbuf;
- }
- return -1;
-@@ -1684,10 +1690,8 @@ static int netlink_dump(struct sock *sk)
-
- if (sk_filter(sk, skb))
- kfree_skb(skb);
-- else {
-- skb_queue_tail(&sk->sk_receive_queue, skb);
-- sk->sk_data_ready(sk, skb->len);
-- }
-+ else
-+ __netlink_sendskb(sk, skb);
- return 0;
- }
-
-@@ -1701,10 +1705,8 @@ static int netlink_dump(struct sock *sk)
-
- if (sk_filter(sk, skb))
- kfree_skb(skb);
-- else {
-- skb_queue_tail(&sk->sk_receive_queue, skb);
-- sk->sk_data_ready(sk, skb->len);
-- }
-+ else
-+ __netlink_sendskb(sk, skb);
-
- if (cb->done)
- cb->done(cb);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0068-net-fix-a-race-in-sock_queue_err_skb.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0068-net-fix-a-race-in-sock_queue_err_skb.patch
deleted file mode 100644
index 94cfa00..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0068-net-fix-a-race-in-sock_queue_err_skb.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 86e0251999e198af9ae73f58db4d5689f14862ec Mon Sep 17 00:00:00 2001
-From: Eric Dumazet <eric.dumazet at gmail.com>
-Date: Fri, 6 Apr 2012 10:49:10 +0200
-Subject: [PATCH 068/165] net: fix a race in sock_queue_err_skb()
-
-[ Upstream commit 110c43304db6f06490961529536c362d9ac5732f ]
-
-As soon as an skb is queued into socket error queue, another thread
-can consume it, so we are not allowed to reference skb anymore, or risk
-use after free.
-
-Signed-off-by: Eric Dumazet <eric.dumazet at gmail.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/core/skbuff.c | 4 +++-
- 1 files changed, 3 insertions(+), 1 deletions(-)
-
-diff --git a/net/core/skbuff.c b/net/core/skbuff.c
-index 3c30ee4..29cb392 100644
---- a/net/core/skbuff.c
-+++ b/net/core/skbuff.c
-@@ -3111,6 +3111,8 @@ static void sock_rmem_free(struct sk_buff *skb)
- */
- int sock_queue_err_skb(struct sock *sk, struct sk_buff *skb)
- {
-+ int len = skb->len;
-+
- if (atomic_read(&sk->sk_rmem_alloc) + skb->truesize >=
- (unsigned)sk->sk_rcvbuf)
- return -ENOMEM;
-@@ -3125,7 +3127,7 @@ int sock_queue_err_skb(struct sock *sk, struct sk_buff *skb)
-
- skb_queue_tail(&sk->sk_error_queue, skb);
- if (!sock_flag(sk, SOCK_DEAD))
-- sk->sk_data_ready(sk, skb->len);
-+ sk->sk_data_ready(sk, len);
- return 0;
- }
- EXPORT_SYMBOL(sock_queue_err_skb);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0069-tcp-fix-tcp_rcv_rtt_update-use-of-an-unscaled-RTT-sa.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0069-tcp-fix-tcp_rcv_rtt_update-use-of-an-unscaled-RTT-sa.patch
deleted file mode 100644
index db29f8d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0069-tcp-fix-tcp_rcv_rtt_update-use-of-an-unscaled-RTT-sa.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From e371feec366591f88fd4df14f701359bd08d33e7 Mon Sep 17 00:00:00 2001
-From: Neal Cardwell <ncardwell at google.com>
-Date: Tue, 10 Apr 2012 07:59:20 +0000
-Subject: [PATCH 069/165] tcp: fix tcp_rcv_rtt_update() use of an unscaled RTT
- sample
-
-[ Upstream commit 18a223e0b9ec8979320ba364b47c9772391d6d05 ]
-
-Fix a code path in tcp_rcv_rtt_update() that was comparing scaled and
-unscaled RTT samples.
-
-The intent in the code was to only use the 'm' measurement if it was a
-new minimum. However, since 'm' had not yet been shifted left 3 bits
-but 'new_sample' had, this comparison would nearly always succeed,
-leading us to erroneously set our receive-side RTT estimate to the 'm'
-sample when that sample could be nearly 8x too high to use.
-
-The overall effect is to often cause the receive-side RTT estimate to
-be significantly too large (up to 40% too large for brief periods in
-my tests).
-
-Signed-off-by: Neal Cardwell <ncardwell at google.com>
-Acked-by: Eric Dumazet <edumazet at google.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/ipv4/tcp_input.c | 7 +++++--
- 1 files changed, 5 insertions(+), 2 deletions(-)
-
-diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
-index e4d1e4a..4c46fa7 100644
---- a/net/ipv4/tcp_input.c
-+++ b/net/ipv4/tcp_input.c
-@@ -473,8 +473,11 @@ static void tcp_rcv_rtt_update(struct tcp_sock *tp, u32 sample, int win_dep)
- if (!win_dep) {
- m -= (new_sample >> 3);
- new_sample += m;
-- } else if (m < new_sample)
-- new_sample = m << 3;
-+ } else {
-+ m <<= 3;
-+ if (m < new_sample)
-+ new_sample = m;
-+ }
- } else {
- /* No previous measure. */
- new_sample = m << 3;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0070-net-allow-pskb_expand_head-to-get-maximum-tailroom.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0070-net-allow-pskb_expand_head-to-get-maximum-tailroom.patch
deleted file mode 100644
index 822c589..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0070-net-allow-pskb_expand_head-to-get-maximum-tailroom.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From 03bdfc1371ae4ad8b2bbe50475baa6d983f62511 Mon Sep 17 00:00:00 2001
-From: Eric Dumazet <eric.dumazet at gmail.com>
-Date: Tue, 10 Apr 2012 20:08:39 +0000
-Subject: [PATCH 070/165] net: allow pskb_expand_head() to get maximum
- tailroom
-
-[ Upstream commit 87151b8689d890dfb495081f7be9b9e257f7a2df ]
-
-Marc Merlin reported many order-1 allocations failures in TX path on its
-wireless setup, that dont make any sense with MTU=1500 network, and non
-SG capable hardware.
-
-Turns out part of the problem comes from pskb_expand_head() not using
-ksize() to get exact head size given by kmalloc(). Doing the same thing
-than __alloc_skb() allows more tailroom in skb and can prevent future
-reallocations.
-
-As a bonus, struct skb_shared_info becomes cache line aligned.
-
-Reported-by: Marc MERLIN <marc at merlins.org>
-Tested-by: Marc MERLIN <marc at merlins.org>
-Signed-off-by: Eric Dumazet <eric.dumazet at gmail.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/core/skbuff.c | 4 +++-
- 1 files changed, 3 insertions(+), 1 deletions(-)
-
-diff --git a/net/core/skbuff.c b/net/core/skbuff.c
-index 29cb392..2ec200de 100644
---- a/net/core/skbuff.c
-+++ b/net/core/skbuff.c
-@@ -903,9 +903,11 @@ int pskb_expand_head(struct sk_buff *skb, int nhead, int ntail,
- goto adjust_others;
- }
-
-- data = kmalloc(size + sizeof(struct skb_shared_info), gfp_mask);
-+ data = kmalloc(size + SKB_DATA_ALIGN(sizeof(struct skb_shared_info)),
-+ gfp_mask);
- if (!data)
- goto nodata;
-+ size = SKB_WITH_OVERHEAD(ksize(data));
-
- /* Copy only real data... and, alas, header. This should be
- * optimized for the cases when header is void.
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0071-tcp-fix-tcp_trim_head.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0071-tcp-fix-tcp_trim_head.patch
deleted file mode 100644
index da267d2..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0071-tcp-fix-tcp_trim_head.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From 137530e7322e536a814836856ef12183cd786e5f Mon Sep 17 00:00:00 2001
-From: Eric Dumazet <eric.dumazet at gmail.com>
-Date: Sun, 4 Dec 2011 08:51:08 +0000
-Subject: [PATCH 071/165] tcp: fix tcp_trim_head()
-
-[ Upstream commit 4fa48bf3c75069d636fc8830743c929a062e80dc ]
-
-commit f07d960df3 (tcp: avoid frag allocation for small frames)
-breaked assumption in tcp stack that skb is either linear (skb->data_len
-== 0), or fully fragged (skb->data_len == skb->len)
-
-tcp_trim_head() made this assumption, we must fix it.
-
-Thanks to Vijay for providing a very detailed explanation.
-
-Reported-by: Vijay Subramanian <subramanian.vijay at gmail.com>
-Signed-off-by: Eric Dumazet <eric.dumazet at gmail.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/ipv4/tcp_output.c | 13 ++++++++-----
- 1 files changed, 8 insertions(+), 5 deletions(-)
-
-diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c
-index 097e0c7..7413437 100644
---- a/net/ipv4/tcp_output.c
-+++ b/net/ipv4/tcp_output.c
-@@ -1093,6 +1093,13 @@ static void __pskb_trim_head(struct sk_buff *skb, int len)
- {
- int i, k, eat;
-
-+ eat = min_t(int, len, skb_headlen(skb));
-+ if (eat) {
-+ __skb_pull(skb, eat);
-+ len -= eat;
-+ if (!len)
-+ return;
-+ }
- eat = len;
- k = 0;
- for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) {
-@@ -1124,11 +1131,7 @@ int tcp_trim_head(struct sock *sk, struct sk_buff *skb, u32 len)
- if (skb_cloned(skb) && pskb_expand_head(skb, 0, 0, GFP_ATOMIC))
- return -ENOMEM;
-
-- /* If len == headlen, we avoid __skb_pull to preserve alignment. */
-- if (unlikely(len < skb_headlen(skb)))
-- __skb_pull(skb, len);
-- else
-- __pskb_trim_head(skb, len - skb_headlen(skb));
-+ __pskb_trim_head(skb, len);
-
- TCP_SKB_CB(skb)->seq += len;
- skb->ip_summed = CHECKSUM_PARTIAL;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0072-tcp-avoid-order-1-allocations-on-wifi-and-tx-path.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0072-tcp-avoid-order-1-allocations-on-wifi-and-tx-path.patch
deleted file mode 100644
index ed03503..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0072-tcp-avoid-order-1-allocations-on-wifi-and-tx-path.patch
+++ /dev/null
@@ -1,134 +0,0 @@
-From f5e6c8aa4ebb62b560068b1636d889b4932c4dbc Mon Sep 17 00:00:00 2001
-From: Eric Dumazet <eric.dumazet at gmail.com>
-Date: Tue, 24 Apr 2012 23:01:22 -0400
-Subject: [PATCH 072/165] tcp: avoid order-1 allocations on wifi and tx path
-
-[ This combines upstream commit
- a21d45726acacc963d8baddf74607d9b74e2b723 and the follow-on bug fix
- commit 22b4a4f22da4b39c6f7f679fd35f3d35c91bf851 ]
-
-Marc Merlin reported many order-1 allocations failures in TX path on its
-wireless setup, that dont make any sense with MTU=1500 network, and non
-SG capable hardware.
-
-After investigation, it turns out TCP uses sk_stream_alloc_skb() and
-used as a convention skb_tailroom(skb) to know how many bytes of data
-payload could be put in this skb (for non SG capable devices)
-
-Note : these skb used kmalloc-4096 (MTU=1500 + MAX_HEADER +
-sizeof(struct skb_shared_info) being above 2048)
-
-Later, mac80211 layer need to add some bytes at the tail of skb
-(IEEE80211_ENCRYPT_TAILROOM = 18 bytes) and since no more tailroom is
-available has to call pskb_expand_head() and request order-1
-allocations.
-
-This patch changes sk_stream_alloc_skb() so that only
-sk->sk_prot->max_header bytes of headroom are reserved, and use a new
-skb field, avail_size to hold the data payload limit.
-
-This way, order-0 allocations done by TCP stack can leave more than 2 KB
-of tailroom and no more allocation is performed in mac80211 layer (or
-any layer needing some tailroom)
-
-avail_size is unioned with mark/dropcount, since mark will be set later
-in IP stack for output packets. Therefore, skb size is unchanged.
-
-Reported-by: Marc MERLIN <marc at merlins.org>
-Tested-by: Marc MERLIN <marc at merlins.org>
-Signed-off-by: Eric Dumazet <eric.dumazet at gmail.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-[bwh: Correct commit hash for follow-on bug fix]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- include/linux/skbuff.h | 13 +++++++++++++
- net/ipv4/tcp.c | 8 ++++----
- net/ipv4/tcp_output.c | 3 ++-
- 3 files changed, 19 insertions(+), 5 deletions(-)
-
-diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
-index 6cf8b53..e689b47 100644
---- a/include/linux/skbuff.h
-+++ b/include/linux/skbuff.h
-@@ -458,6 +458,7 @@ struct sk_buff {
- union {
- __u32 mark;
- __u32 dropcount;
-+ __u32 avail_size;
- };
-
- __u16 vlan_tci;
-@@ -1326,6 +1327,18 @@ static inline int skb_tailroom(const struct sk_buff *skb)
- }
-
- /**
-+ * skb_availroom - bytes at buffer end
-+ * @skb: buffer to check
-+ *
-+ * Return the number of bytes of free space at the tail of an sk_buff
-+ * allocated by sk_stream_alloc()
-+ */
-+static inline int skb_availroom(const struct sk_buff *skb)
-+{
-+ return skb_is_nonlinear(skb) ? 0 : skb->avail_size - skb->len;
-+}
-+
-+/**
- * skb_reserve - adjust headroom
- * @skb: buffer to alter
- * @len: bytes to move
-diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
-index 36611ab..7904db4 100644
---- a/net/ipv4/tcp.c
-+++ b/net/ipv4/tcp.c
-@@ -701,11 +701,12 @@ struct sk_buff *sk_stream_alloc_skb(struct sock *sk, int size, gfp_t gfp)
- skb = alloc_skb_fclone(size + sk->sk_prot->max_header, gfp);
- if (skb) {
- if (sk_wmem_schedule(sk, skb->truesize)) {
-+ skb_reserve(skb, sk->sk_prot->max_header);
- /*
- * Make sure that we have exactly size bytes
- * available to the caller, no more, no less.
- */
-- skb_reserve(skb, skb_tailroom(skb) - size);
-+ skb->avail_size = size;
- return skb;
- }
- __kfree_skb(skb);
-@@ -995,10 +996,9 @@ new_segment:
- copy = seglen;
-
- /* Where to copy to? */
-- if (skb_tailroom(skb) > 0) {
-+ if (skb_availroom(skb) > 0) {
- /* We have some space in skb head. Superb! */
-- if (copy > skb_tailroom(skb))
-- copy = skb_tailroom(skb);
-+ copy = min_t(int, copy, skb_availroom(skb));
- err = skb_add_data_nocache(sk, skb, from, copy);
- if (err)
- goto do_fault;
-diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c
-index 7413437..c51dd5b 100644
---- a/net/ipv4/tcp_output.c
-+++ b/net/ipv4/tcp_output.c
-@@ -1096,6 +1096,7 @@ static void __pskb_trim_head(struct sk_buff *skb, int len)
- eat = min_t(int, len, skb_headlen(skb));
- if (eat) {
- __skb_pull(skb, eat);
-+ skb->avail_size -= eat;
- len -= eat;
- if (!len)
- return;
-@@ -2060,7 +2061,7 @@ static void tcp_retrans_try_collapse(struct sock *sk, struct sk_buff *to,
- /* Punt if not enough space exists in the first SKB for
- * the data in the second
- */
-- if (skb->len > skb_tailroom(to))
-+ if (skb->len > skb_availroom(to))
- break;
-
- if (after(TCP_SKB_CB(skb)->end_seq, tcp_wnd_end(tp)))
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0073-atl1-fix-kernel-panic-in-case-of-DMA-errors.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0073-atl1-fix-kernel-panic-in-case-of-DMA-errors.patch
deleted file mode 100644
index 3a883a7..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0073-atl1-fix-kernel-panic-in-case-of-DMA-errors.patch
+++ /dev/null
@@ -1,106 +0,0 @@
-From 9785af56c9a0c73e462058b63999df1c95cf6ce7 Mon Sep 17 00:00:00 2001
-From: Tony Zelenoff <antonz at parallels.com>
-Date: Wed, 11 Apr 2012 06:15:03 +0000
-Subject: [PATCH 073/165] atl1: fix kernel panic in case of DMA errors
-
-[ Upstream commit 03662e41c7cff64a776bfb1b3816de4be43de881 ]
-
-Problem:
-There was two separate work_struct structures which share one
-handler. Unfortunately getting atl1_adapter structure from
-work_struct in case of DMA error was done from incorrect
-offset which cause kernel panics.
-
-Solution:
-The useless work_struct for DMA error removed and
-handler name changed to more generic one.
-
-Signed-off-by: Tony Zelenoff <antonz at parallels.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/ethernet/atheros/atlx/atl1.c | 12 +++++-------
- drivers/net/ethernet/atheros/atlx/atl1.h | 3 +--
- drivers/net/ethernet/atheros/atlx/atlx.c | 2 +-
- 3 files changed, 7 insertions(+), 10 deletions(-)
-
-diff --git a/drivers/net/ethernet/atheros/atlx/atl1.c b/drivers/net/ethernet/atheros/atlx/atl1.c
-index 33a4e35..ee532e1 100644
---- a/drivers/net/ethernet/atheros/atlx/atl1.c
-+++ b/drivers/net/ethernet/atheros/atlx/atl1.c
-@@ -2473,7 +2473,7 @@ static irqreturn_t atl1_intr(int irq, void *data)
- "pcie phy link down %x\n", status);
- if (netif_running(adapter->netdev)) { /* reset MAC */
- iowrite32(0, adapter->hw.hw_addr + REG_IMR);
-- schedule_work(&adapter->pcie_dma_to_rst_task);
-+ schedule_work(&adapter->reset_dev_task);
- return IRQ_HANDLED;
- }
- }
-@@ -2485,7 +2485,7 @@ static irqreturn_t atl1_intr(int irq, void *data)
- "pcie DMA r/w error (status = 0x%x)\n",
- status);
- iowrite32(0, adapter->hw.hw_addr + REG_IMR);
-- schedule_work(&adapter->pcie_dma_to_rst_task);
-+ schedule_work(&adapter->reset_dev_task);
- return IRQ_HANDLED;
- }
-
-@@ -2630,10 +2630,10 @@ static void atl1_down(struct atl1_adapter *adapter)
- atl1_clean_rx_ring(adapter);
- }
-
--static void atl1_tx_timeout_task(struct work_struct *work)
-+static void atl1_reset_dev_task(struct work_struct *work)
- {
- struct atl1_adapter *adapter =
-- container_of(work, struct atl1_adapter, tx_timeout_task);
-+ container_of(work, struct atl1_adapter, reset_dev_task);
- struct net_device *netdev = adapter->netdev;
-
- netif_device_detach(netdev);
-@@ -3032,12 +3032,10 @@ static int __devinit atl1_probe(struct pci_dev *pdev,
- (unsigned long)adapter);
- adapter->phy_timer_pending = false;
-
-- INIT_WORK(&adapter->tx_timeout_task, atl1_tx_timeout_task);
-+ INIT_WORK(&adapter->reset_dev_task, atl1_reset_dev_task);
-
- INIT_WORK(&adapter->link_chg_task, atlx_link_chg_task);
-
-- INIT_WORK(&adapter->pcie_dma_to_rst_task, atl1_tx_timeout_task);
--
- err = register_netdev(netdev);
- if (err)
- goto err_common;
-diff --git a/drivers/net/ethernet/atheros/atlx/atl1.h b/drivers/net/ethernet/atheros/atlx/atl1.h
-index 109d6da..e04bf4d 100644
---- a/drivers/net/ethernet/atheros/atlx/atl1.h
-+++ b/drivers/net/ethernet/atheros/atlx/atl1.h
-@@ -758,9 +758,8 @@ struct atl1_adapter {
- u16 link_speed;
- u16 link_duplex;
- spinlock_t lock;
-- struct work_struct tx_timeout_task;
-+ struct work_struct reset_dev_task;
- struct work_struct link_chg_task;
-- struct work_struct pcie_dma_to_rst_task;
-
- struct timer_list phy_config_timer;
- bool phy_timer_pending;
-diff --git a/drivers/net/ethernet/atheros/atlx/atlx.c b/drivers/net/ethernet/atheros/atlx/atlx.c
-index aabcf4b..41c6d83 100644
---- a/drivers/net/ethernet/atheros/atlx/atlx.c
-+++ b/drivers/net/ethernet/atheros/atlx/atlx.c
-@@ -193,7 +193,7 @@ static void atlx_tx_timeout(struct net_device *netdev)
- {
- struct atlx_adapter *adapter = netdev_priv(netdev);
- /* Do the reset outside of interrupt context */
-- schedule_work(&adapter->tx_timeout_task);
-+ schedule_work(&adapter->reset_dev_task);
- }
-
- /*
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0074-8139cp-set-intr-mask-after-its-handler-is-registered.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0074-8139cp-set-intr-mask-after-its-handler-is-registered.patch
deleted file mode 100644
index 5f7d3f5..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0074-8139cp-set-intr-mask-after-its-handler-is-registered.patch
+++ /dev/null
@@ -1,67 +0,0 @@
-From d3b5873235963930f20f0900871e72ff3b80274b Mon Sep 17 00:00:00 2001
-From: Jason Wang <jasowang at redhat.com>
-Date: Wed, 11 Apr 2012 22:10:54 +0000
-Subject: [PATCH 074/165] 8139cp: set intr mask after its handler is
- registered
-
-[ Upstream commit a8c9cb106fe79c28d6b7f1397652cadd228715ff ]
-
-We set intr mask before its handler is registered, this does not work well when
-8139cp is sharing irq line with other devices. As the irq could be enabled by
-the device before 8139cp's hander is registered which may lead unhandled
-irq. Fix this by introducing an helper cp_irq_enable() and call it after
-request_irq().
-
-Signed-off-by: Jason Wang <jasowang at redhat.com>
-Reviewed-by: Flavio Leitner <fbl at redhat.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/ethernet/realtek/8139cp.c | 10 ++++++++--
- 1 files changed, 8 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/net/ethernet/realtek/8139cp.c b/drivers/net/ethernet/realtek/8139cp.c
-index aba4f67..8f47907 100644
---- a/drivers/net/ethernet/realtek/8139cp.c
-+++ b/drivers/net/ethernet/realtek/8139cp.c
-@@ -961,6 +961,11 @@ static inline void cp_start_hw (struct cp_private *cp)
- cpw8(Cmd, RxOn | TxOn);
- }
-
-+static void cp_enable_irq(struct cp_private *cp)
-+{
-+ cpw16_f(IntrMask, cp_intr_mask);
-+}
-+
- static void cp_init_hw (struct cp_private *cp)
- {
- struct net_device *dev = cp->dev;
-@@ -1000,8 +1005,6 @@ static void cp_init_hw (struct cp_private *cp)
-
- cpw16(MultiIntr, 0);
-
-- cpw16_f(IntrMask, cp_intr_mask);
--
- cpw8_f(Cfg9346, Cfg9346_Lock);
- }
-
-@@ -1133,6 +1136,8 @@ static int cp_open (struct net_device *dev)
- if (rc)
- goto err_out_hw;
-
-+ cp_enable_irq(cp);
-+
- netif_carrier_off(dev);
- mii_check_media(&cp->mii_if, netif_msg_link(cp), true);
- netif_start_queue(dev);
-@@ -2034,6 +2039,7 @@ static int cp_resume (struct pci_dev *pdev)
- /* FIXME: sh*t may happen if the Rx ring buffer is depleted */
- cp_init_rings_index (cp);
- cp_init_hw (cp);
-+ cp_enable_irq(cp);
- netif_start_queue (dev);
-
- spin_lock_irqsave (&cp->lock, flags);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0075-net-smsc911x-fix-skb-handling-in-receive-path.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0075-net-smsc911x-fix-skb-handling-in-receive-path.patch
deleted file mode 100644
index 996bfc4..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0075-net-smsc911x-fix-skb-handling-in-receive-path.patch
+++ /dev/null
@@ -1,78 +0,0 @@
-From d886ddd4ea18bd874325e888d3272a8db0a972ea Mon Sep 17 00:00:00 2001
-From: Will Deacon <will.deacon at arm.com>
-Date: Thu, 12 Apr 2012 05:54:09 +0000
-Subject: [PATCH 075/165] net: smsc911x: fix skb handling in receive path
-
-[ Upstream commit 3c5e979bd037888dd7d722da22da4b43659af485 ]
-
-The SMSC911x driver resets the ->head, ->data and ->tail pointers in the
-skb on the reset path in order to avoid buffer overflow due to packet
-padding performed by the hardware.
-
-This patch fixes the receive path so that the skb pointers are fixed up
-after the data has been read from the device, The error path is also
-fixed to use number of words consistently and prevent erroneous FIFO
-fastforwarding when skipping over bad data.
-
-Signed-off-by: Will Deacon <will.deacon at arm.com>
-Signed-off-by: Eric Dumazet <eric.dumazet at gmail.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/ethernet/smsc/smsc911x.c | 14 +++++---------
- 1 files changed, 5 insertions(+), 9 deletions(-)
-
-diff --git a/drivers/net/ethernet/smsc/smsc911x.c b/drivers/net/ethernet/smsc/smsc911x.c
-index 8843071..8c7dd21 100644
---- a/drivers/net/ethernet/smsc/smsc911x.c
-+++ b/drivers/net/ethernet/smsc/smsc911x.c
-@@ -1089,10 +1089,8 @@ smsc911x_rx_counterrors(struct net_device *dev, unsigned int rxstat)
-
- /* Quickly dumps bad packets */
- static void
--smsc911x_rx_fastforward(struct smsc911x_data *pdata, unsigned int pktbytes)
-+smsc911x_rx_fastforward(struct smsc911x_data *pdata, unsigned int pktwords)
- {
-- unsigned int pktwords = (pktbytes + NET_IP_ALIGN + 3) >> 2;
--
- if (likely(pktwords >= 4)) {
- unsigned int timeout = 500;
- unsigned int val;
-@@ -1156,7 +1154,7 @@ static int smsc911x_poll(struct napi_struct *napi, int budget)
- continue;
- }
-
-- skb = netdev_alloc_skb(dev, pktlength + NET_IP_ALIGN);
-+ skb = netdev_alloc_skb(dev, pktwords << 2);
- if (unlikely(!skb)) {
- SMSC_WARN(pdata, rx_err,
- "Unable to allocate skb for rx packet");
-@@ -1166,14 +1164,12 @@ static int smsc911x_poll(struct napi_struct *napi, int budget)
- break;
- }
-
-- skb->data = skb->head;
-- skb_reset_tail_pointer(skb);
-+ pdata->ops->rx_readfifo(pdata,
-+ (unsigned int *)skb->data, pktwords);
-
- /* Align IP on 16B boundary */
- skb_reserve(skb, NET_IP_ALIGN);
- skb_put(skb, pktlength - 4);
-- pdata->ops->rx_readfifo(pdata,
-- (unsigned int *)skb->head, pktwords);
- skb->protocol = eth_type_trans(skb, dev);
- skb_checksum_none_assert(skb);
- netif_receive_skb(skb);
-@@ -1396,7 +1392,7 @@ static int smsc911x_open(struct net_device *dev)
- smsc911x_reg_write(pdata, FIFO_INT, temp);
-
- /* set RX Data offset to 2 bytes for alignment */
-- smsc911x_reg_write(pdata, RX_CFG, (2 << 8));
-+ smsc911x_reg_write(pdata, RX_CFG, (NET_IP_ALIGN << 8));
-
- /* enable NAPI polling before enabling RX interrupts */
- napi_enable(&pdata->napi);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0076-net-ethernet-ks8851_mll-fix-rx-frame-buffer-overflow.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0076-net-ethernet-ks8851_mll-fix-rx-frame-buffer-overflow.patch
deleted file mode 100644
index 627d288..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0076-net-ethernet-ks8851_mll-fix-rx-frame-buffer-overflow.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 64adebf7ebe78704f2a1f09614184f1ede7631b2 Mon Sep 17 00:00:00 2001
-From: Davide Ciminaghi <ciminaghi at gnudd.com>
-Date: Fri, 13 Apr 2012 04:48:25 +0000
-Subject: [PATCH 076/165] net/ethernet: ks8851_mll fix rx frame buffer
- overflow
-
-[ Upstream commit 8a9a0ea6032186e3030419262678d652b88bf6a8 ]
-
-At the beginning of ks_rcv(), a for loop retrieves the
-header information relevant to all the frames stored
-in the mac's internal buffers. The number of pending
-frames is stored as an 8 bits field in KS_RXFCTR.
-If interrupts are disabled long enough to allow for more than
-32 frames to accumulate in the MAC's internal buffers, a buffer
-overflow occurs.
-This patch fixes the problem by making the
-driver's frame_head_info buffer big enough.
-Well actually, since the chip appears to have 12K of
-internal rx buffers and the shortest ethernet frame should
-be 64 bytes long, maybe the limit could be set to
-12*1024/64 = 192 frames, but 255 should be safer.
-
-Signed-off-by: Davide Ciminaghi <ciminaghi at gnudd.com>
-Signed-off-by: Raffaele Recalcati <raffaele.recalcati at bticino.it>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/ethernet/micrel/ks8851_mll.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/net/ethernet/micrel/ks8851_mll.c b/drivers/net/ethernet/micrel/ks8851_mll.c
-index d19c849..77241b6 100644
---- a/drivers/net/ethernet/micrel/ks8851_mll.c
-+++ b/drivers/net/ethernet/micrel/ks8851_mll.c
-@@ -40,7 +40,7 @@
- #define DRV_NAME "ks8851_mll"
-
- static u8 KS_DEFAULT_MAC_ADDRESS[] = { 0x00, 0x10, 0xA1, 0x86, 0x95, 0x11 };
--#define MAX_RECV_FRAMES 32
-+#define MAX_RECV_FRAMES 255
- #define MAX_BUF_SIZE 2048
- #define TX_BUF_SIZE 2000
- #define RX_BUF_SIZE 2000
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0077-net_sched-gred-Fix-oops-in-gred_dump-in-WRED-mode.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0077-net_sched-gred-Fix-oops-in-gred_dump-in-WRED-mode.patch
deleted file mode 100644
index 0ffd9a5..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0077-net_sched-gred-Fix-oops-in-gred_dump-in-WRED-mode.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From fad0985a19b237d9b48ab19b767413a95314b90d Mon Sep 17 00:00:00 2001
-From: David Ward <david.ward at ll.mit.edu>
-Date: Sun, 15 Apr 2012 12:31:45 +0000
-Subject: [PATCH 077/165] net_sched: gred: Fix oops in gred_dump() in WRED
- mode
-
-[ Upstream commit 244b65dbfede788f2fa3fe2463c44d0809e97c6b ]
-
-A parameter set exists for WRED mode, called wred_set, to hold the same
-values for qavg and qidlestart across all VQs. The WRED mode values had
-been previously held in the VQ for the default DP. After these values
-were moved to wred_set, the VQ for the default DP was no longer created
-automatically (so that it could be omitted on purpose, to have packets
-in the default DP enqueued directly to the device without using RED).
-
-However, gred_dump() was overlooked during that change; in WRED mode it
-still reads qavg/qidlestart from the VQ for the default DP, which might
-not even exist. As a result, this command sequence will cause an oops:
-
-tc qdisc add dev $DEV handle $HANDLE parent $PARENT gred setup \
- DPs 3 default 2 grio
-tc qdisc change dev $DEV handle $HANDLE gred DP 0 prio 8 $RED_OPTIONS
-tc qdisc change dev $DEV handle $HANDLE gred DP 1 prio 8 $RED_OPTIONS
-
-This fixes gred_dump() in WRED mode to use the values held in wred_set.
-
-Signed-off-by: David Ward <david.ward at ll.mit.edu>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/sched/sch_gred.c | 7 ++-----
- 1 files changed, 2 insertions(+), 5 deletions(-)
-
-diff --git a/net/sched/sch_gred.c b/net/sched/sch_gred.c
-index 6cd8ddf..e1afe0c 100644
---- a/net/sched/sch_gred.c
-+++ b/net/sched/sch_gred.c
-@@ -544,11 +544,8 @@ static int gred_dump(struct Qdisc *sch, struct sk_buff *skb)
- opt.packets = q->packetsin;
- opt.bytesin = q->bytesin;
-
-- if (gred_wred_mode(table)) {
-- q->parms.qidlestart =
-- table->tab[table->def]->parms.qidlestart;
-- q->parms.qavg = table->tab[table->def]->parms.qavg;
-- }
-+ if (gred_wred_mode(table))
-+ gred_load_wred_set(table, q);
-
- opt.qave = red_calc_qavg(&q->parms, q->parms.qavg);
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0078-net-usb-smsc75xx-fix-mtu.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0078-net-usb-smsc75xx-fix-mtu.patch
deleted file mode 100644
index 38677b0..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0078-net-usb-smsc75xx-fix-mtu.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From a242d0ff40b2ef87f4c23c4676441ed1c4ee20cd Mon Sep 17 00:00:00 2001
-From: Stephane Fillod <fillods at users.sf.net>
-Date: Sun, 15 Apr 2012 11:38:29 +0000
-Subject: [PATCH 078/165] net: usb: smsc75xx: fix mtu
-
-[ Upstream commit a99ff7d0123b19ecad3b589480b6542716ab6b52 ]
-
-Make smsc75xx recalculate the hard_mtu after adjusting the
-hard_header_len.
-
-Without this, usbnet adjusts the MTU down to 1492 bytes, and the host is
-unable to receive standard 1500-byte frames from the device.
-
-Inspired by same fix on cdc_eem 78fb72f7936c01d5b426c03a691eca082b03f2b9.
-
-Tested on ARM/Omap3 with EVB-LAN7500-LC.
-
-Signed-off-by: Stephane Fillod <fillods at users.sf.net>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/usb/smsc75xx.c | 1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/net/usb/smsc75xx.c b/drivers/net/usb/smsc75xx.c
-index a5b9b12..7bd219b 100644
---- a/drivers/net/usb/smsc75xx.c
-+++ b/drivers/net/usb/smsc75xx.c
-@@ -1050,6 +1050,7 @@ static int smsc75xx_bind(struct usbnet *dev, struct usb_interface *intf)
- dev->net->ethtool_ops = &smsc75xx_ethtool_ops;
- dev->net->flags |= IFF_MULTICAST;
- dev->net->hard_header_len += SMSC75XX_TX_OVERHEAD;
-+ dev->hard_mtu = dev->net->mtu + dev->net->hard_header_len;
- return 0;
- }
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0079-dummy-Add-ndo_uninit.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0079-dummy-Add-ndo_uninit.patch
deleted file mode 100644
index 2a8aa71..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0079-dummy-Add-ndo_uninit.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From ee79f6838bd3f230ebf00849029dac3b9be112e5 Mon Sep 17 00:00:00 2001
-From: Hiroaki SHIMODA <shimoda.hiroaki at gmail.com>
-Date: Sun, 15 Apr 2012 13:26:01 +0000
-Subject: [PATCH 079/165] dummy: Add ndo_uninit().
-
-commit 890fdf2a0cb88202d1427589db2cf29c1bdd3c1d upstream.
-
-In register_netdevice(), when ndo_init() is successful and later
-some error occurred, ndo_uninit() will be called.
-So dummy deivce is desirable to implement ndo_uninit() method
-to free percpu stats for this case.
-And, ndo_uninit() is also called along with dev->destructor() when
-device is unregistered, so in order to prevent dev->dstats from
-being freed twice, dev->destructor is modified to free_netdev().
-
-Signed-off-by: Hiroaki SHIMODA <shimoda.hiroaki at gmail.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/dummy.c | 6 +++---
- 1 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/net/dummy.c b/drivers/net/dummy.c
-index a7c5e88..eeac9ca 100644
---- a/drivers/net/dummy.c
-+++ b/drivers/net/dummy.c
-@@ -106,14 +106,14 @@ static int dummy_dev_init(struct net_device *dev)
- return 0;
- }
-
--static void dummy_dev_free(struct net_device *dev)
-+static void dummy_dev_uninit(struct net_device *dev)
- {
- free_percpu(dev->dstats);
-- free_netdev(dev);
- }
-
- static const struct net_device_ops dummy_netdev_ops = {
- .ndo_init = dummy_dev_init,
-+ .ndo_uninit = dummy_dev_uninit,
- .ndo_start_xmit = dummy_xmit,
- .ndo_validate_addr = eth_validate_addr,
- .ndo_set_rx_mode = set_multicast_list,
-@@ -127,7 +127,7 @@ static void dummy_setup(struct net_device *dev)
-
- /* Initialize the device structure. */
- dev->netdev_ops = &dummy_netdev_ops;
-- dev->destructor = dummy_dev_free;
-+ dev->destructor = free_netdev;
-
- /* Fill in device structure with ethernet-generic values. */
- dev->tx_queue_len = 0;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0080-tcp-fix-tcp_grow_window-for-large-incoming-frames.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0080-tcp-fix-tcp_grow_window-for-large-incoming-frames.patch
deleted file mode 100644
index 3ed3591..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0080-tcp-fix-tcp_grow_window-for-large-incoming-frames.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 57c5b1028d7bffa4d7784dd4bd8743710dc62d0c Mon Sep 17 00:00:00 2001
-From: Eric Dumazet <edumazet at google.com>
-Date: Mon, 16 Apr 2012 23:28:07 +0000
-Subject: [PATCH 080/165] tcp: fix tcp_grow_window() for large incoming frames
-
-[ Upstream commit 4d846f02392a710f9604892ac3329e628e60a230 ]
-
-tcp_grow_window() has to grow rcv_ssthresh up to window_clamp, allowing
-sender to increase its window.
-
-tcp_grow_window() still assumes a tcp frame is under MSS, but its no
-longer true with LRO/GRO.
-
-This patch fixes one of the performance issue we noticed with GRO on.
-
-Signed-off-by: Eric Dumazet <edumazet at google.com>
-Cc: Neal Cardwell <ncardwell at google.com>
-Cc: Tom Herbert <therbert at google.com>
-Acked-by: Neal Cardwell <ncardwell at google.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/ipv4/tcp_input.c | 1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
-index 4c46fa7..daedc07 100644
---- a/net/ipv4/tcp_input.c
-+++ b/net/ipv4/tcp_input.c
-@@ -334,6 +334,7 @@ static void tcp_grow_window(struct sock *sk, const struct sk_buff *skb)
- incr = __tcp_grow_window(sk, skb);
-
- if (incr) {
-+ incr = max_t(int, incr, 2 * skb->len);
- tp->rcv_ssthresh = min(tp->rcv_ssthresh + incr,
- tp->window_clamp);
- inet_csk(sk)->icsk_ack.quick |= 1;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0081-netns-do-not-leak-net_generic-data-on-failed-init.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0081-netns-do-not-leak-net_generic-data-on-failed-init.patch
deleted file mode 100644
index b5c686d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0081-netns-do-not-leak-net_generic-data-on-failed-init.patch
+++ /dev/null
@@ -1,79 +0,0 @@
-From 4637103c9e0f2f7cef243c369f6b451550a4944d Mon Sep 17 00:00:00 2001
-From: Julian Anastasov <ja at ssi.bg>
-Date: Mon, 16 Apr 2012 04:43:15 +0000
-Subject: [PATCH 081/165] netns: do not leak net_generic data on failed init
-
-[ Upstream commit b922934d017f1cc831b017913ed7d1a56c558b43 ]
-
-ops_init should free the net_generic data on
-init failure and __register_pernet_operations should not
-call ops_free when NET_NS is not enabled.
-
-Signed-off-by: Julian Anastasov <ja at ssi.bg>
-Reviewed-by: "Eric W. Biederman" <ebiederm at xmission.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/core/net_namespace.c | 33 ++++++++++++++++++---------------
- 1 files changed, 18 insertions(+), 15 deletions(-)
-
-diff --git a/net/core/net_namespace.c b/net/core/net_namespace.c
-index 0e950fd..31a5ae5 100644
---- a/net/core/net_namespace.c
-+++ b/net/core/net_namespace.c
-@@ -83,21 +83,29 @@ assign:
-
- static int ops_init(const struct pernet_operations *ops, struct net *net)
- {
-- int err;
-+ int err = -ENOMEM;
-+ void *data = NULL;
-+
- if (ops->id && ops->size) {
-- void *data = kzalloc(ops->size, GFP_KERNEL);
-+ data = kzalloc(ops->size, GFP_KERNEL);
- if (!data)
-- return -ENOMEM;
-+ goto out;
-
- err = net_assign_generic(net, *ops->id, data);
-- if (err) {
-- kfree(data);
-- return err;
-- }
-+ if (err)
-+ goto cleanup;
- }
-+ err = 0;
- if (ops->init)
-- return ops->init(net);
-- return 0;
-+ err = ops->init(net);
-+ if (!err)
-+ return 0;
-+
-+cleanup:
-+ kfree(data);
-+
-+out:
-+ return err;
- }
-
- static void ops_free(const struct pernet_operations *ops, struct net *net)
-@@ -448,12 +456,7 @@ static void __unregister_pernet_operations(struct pernet_operations *ops)
- static int __register_pernet_operations(struct list_head *list,
- struct pernet_operations *ops)
- {
-- int err = 0;
-- err = ops_init(ops, &init_net);
-- if (err)
-- ops_free(ops, &init_net);
-- return err;
--
-+ return ops_init(ops, &init_net);
- }
-
- static void __unregister_pernet_operations(struct pernet_operations *ops)
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0082-ksz884x-don-t-copy-too-much-in-netdev_set_mac_addres.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0082-ksz884x-don-t-copy-too-much-in-netdev_set_mac_addres.patch
deleted file mode 100644
index bf01b93..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0082-ksz884x-don-t-copy-too-much-in-netdev_set_mac_addres.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 921c1088587031a14b41d53e69c15ea76d4124ce Mon Sep 17 00:00:00 2001
-From: Dan Carpenter <dan.carpenter at oracle.com>
-Date: Thu, 19 Apr 2012 10:00:19 +0300
-Subject: [PATCH 082/165] ksz884x: don't copy too much in
- netdev_set_mac_address()
-
-[ Upstream commit 716af4abd6e6370226f567af50bfaca274515980 ]
-
-MAX_ADDR_LEN is 32. ETH_ALEN is 6. mac->sa_data is a 14 byte array, so
-the memcpy() is doing a read past the end of the array. I asked about
-this on netdev and Ben Hutchings told me it's supposed to be copying
-ETH_ALEN bytes (thanks Ben).
-
-Signed-off-by: Dan Carpenter <dan.carpenter at oracle.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/ethernet/micrel/ksz884x.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/net/ethernet/micrel/ksz884x.c b/drivers/net/ethernet/micrel/ksz884x.c
-index 7ece990..4b9f4bd 100644
---- a/drivers/net/ethernet/micrel/ksz884x.c
-+++ b/drivers/net/ethernet/micrel/ksz884x.c
-@@ -5679,7 +5679,7 @@ static int netdev_set_mac_address(struct net_device *dev, void *addr)
- memcpy(hw->override_addr, mac->sa_data, MAC_ADDR_LEN);
- }
-
-- memcpy(dev->dev_addr, mac->sa_data, MAX_ADDR_LEN);
-+ memcpy(dev->dev_addr, mac->sa_data, ETH_ALEN);
-
- interrupt = hw_block_intr(hw);
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0083-net-ax25-Reorder-ax25_exit-to-remove-races.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0083-net-ax25-Reorder-ax25_exit-to-remove-races.patch
deleted file mode 100644
index b0dc17d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0083-net-ax25-Reorder-ax25_exit-to-remove-races.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From 5d2236761edc280d899b5721a6aa29d2cd1d1718 Mon Sep 17 00:00:00 2001
-From: "Eric W. Biederman" <ebiederm at xmission.com>
-Date: Wed, 18 Apr 2012 16:11:23 +0000
-Subject: [PATCH 083/165] net ax25: Reorder ax25_exit to remove races.
-
-[ Upstream commit 3adadc08cc1e2cbcc15a640d639297ef5fcb17f5 ]
-
-While reviewing the sysctl code in ax25 I spotted races in ax25_exit
-where it is possible to receive notifications and packets after already
-freeing up some of the data structures needed to process those
-notifications and updates.
-
-Call unregister_netdevice_notifier early so that the rest of the cleanup
-code does not need to deal with network devices. This takes advantage
-of my recent enhancement to unregister_netdevice_notifier to send
-unregister notifications of all network devices that are current
-registered.
-
-Move the unregistration for packet types, socket types and protocol
-types before we cleanup any of the ax25 data structures to remove the
-possibilities of other races.
-
-Signed-off-by: Eric W. Biederman <ebiederm at xmission.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/ax25/af_ax25.c | 9 +++++----
- 1 files changed, 5 insertions(+), 4 deletions(-)
-
-diff --git a/net/ax25/af_ax25.c b/net/ax25/af_ax25.c
-index e7c69f4..b04a6ef 100644
---- a/net/ax25/af_ax25.c
-+++ b/net/ax25/af_ax25.c
-@@ -2006,16 +2006,17 @@ static void __exit ax25_exit(void)
- proc_net_remove(&init_net, "ax25_route");
- proc_net_remove(&init_net, "ax25");
- proc_net_remove(&init_net, "ax25_calls");
-- ax25_rt_free();
-- ax25_uid_free();
-- ax25_dev_free();
-
-- ax25_unregister_sysctl();
- unregister_netdevice_notifier(&ax25_dev_notifier);
-+ ax25_unregister_sysctl();
-
- dev_remove_pack(&ax25_packet_type);
-
- sock_unregister(PF_AX25);
- proto_unregister(&ax25_proto);
-+
-+ ax25_rt_free();
-+ ax25_uid_free();
-+ ax25_dev_free();
- }
- module_exit(ax25_exit);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0084-tcp-fix-TCP_MAXSEG-for-established-IPv6-passive-sock.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0084-tcp-fix-TCP_MAXSEG-for-established-IPv6-passive-sock.patch
deleted file mode 100644
index dbf428a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0084-tcp-fix-TCP_MAXSEG-for-established-IPv6-passive-sock.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 0f6ddd1f2a2e87994e797d2877e7270cfc7ec03c Mon Sep 17 00:00:00 2001
-From: Neal Cardwell <ncardwell at google.com>
-Date: Sun, 22 Apr 2012 09:45:47 +0000
-Subject: [PATCH 084/165] tcp: fix TCP_MAXSEG for established IPv6 passive
- sockets
-
-[ Upstream commit d135c522f1234f62e81be29cebdf59e9955139ad ]
-
-Commit f5fff5d forgot to fix TCP_MAXSEG behavior IPv6 sockets, so IPv6
-TCP server sockets that used TCP_MAXSEG would find that the advmss of
-child sockets would be incorrect. This commit mirrors the advmss logic
-from tcp_v4_syn_recv_sock in tcp_v6_syn_recv_sock. Eventually this
-logic should probably be shared between IPv4 and IPv6, but this at
-least fixes this issue.
-
-Signed-off-by: Neal Cardwell <ncardwell at google.com>
-Acked-by: Eric Dumazet <edumazet at google.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/ipv6/tcp_ipv6.c | 4 ++++
- 1 files changed, 4 insertions(+), 0 deletions(-)
-
-diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c
-index b859e4a..4a56574 100644
---- a/net/ipv6/tcp_ipv6.c
-+++ b/net/ipv6/tcp_ipv6.c
-@@ -1494,6 +1494,10 @@ static struct sock * tcp_v6_syn_recv_sock(struct sock *sk, struct sk_buff *skb,
- tcp_mtup_init(newsk);
- tcp_sync_mss(newsk, dst_mtu(dst));
- newtp->advmss = dst_metric_advmss(dst);
-+ if (tcp_sk(sk)->rx_opt.user_mss &&
-+ tcp_sk(sk)->rx_opt.user_mss < newtp->advmss)
-+ newtp->advmss = tcp_sk(sk)->rx_opt.user_mss;
-+
- tcp_initialize_rcv_mss(newsk);
- if (tcp_rsk(req)->snt_synack)
- tcp_valid_rtt_meas(newsk,
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0085-nfs-Enclose-hostname-in-brackets-when-needed-in-nfs_.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0085-nfs-Enclose-hostname-in-brackets-when-needed-in-nfs_.patch
deleted file mode 100644
index c718104..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0085-nfs-Enclose-hostname-in-brackets-when-needed-in-nfs_.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From 5d341b71950df3cbd21a7abf61ab903aac90531b Mon Sep 17 00:00:00 2001
-From: Jan Kara <jack at suse.cz>
-Date: Sat, 3 Sep 2011 01:09:43 +0200
-Subject: [PATCH 085/165] nfs: Enclose hostname in brackets when needed in
- nfs_do_root_mount
-
-commit 98a2139f4f4d7b5fcc3a54c7fddbe88612abed20 upstream.
-
-When hostname contains colon (e.g. when it is an IPv6 address) it needs
-to be enclosed in brackets to make parsing of NFS device string possible.
-Fix nfs_do_root_mount() to enclose hostname properly when needed. NFS code
-actually does not need this as it does not parse the string passed by
-nfs_do_root_mount() but the device string is exposed to userspace in
-/proc/mounts.
-
-CC: Josh Boyer <jwboyer at redhat.com>
-CC: Trond Myklebust <Trond.Myklebust at netapp.com>
-Signed-off-by: Jan Kara <jack at suse.cz>
-Signed-off-by: Trond Myklebust <Trond.Myklebust at netapp.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/nfs/super.c | 8 ++++++--
- 1 files changed, 6 insertions(+), 2 deletions(-)
-
-diff --git a/fs/nfs/super.c b/fs/nfs/super.c
-index 3ada13c..376cd65 100644
---- a/fs/nfs/super.c
-+++ b/fs/nfs/super.c
-@@ -2708,11 +2708,15 @@ static struct vfsmount *nfs_do_root_mount(struct file_system_type *fs_type,
- char *root_devname;
- size_t len;
-
-- len = strlen(hostname) + 3;
-+ len = strlen(hostname) + 5;
- root_devname = kmalloc(len, GFP_KERNEL);
- if (root_devname == NULL)
- return ERR_PTR(-ENOMEM);
-- snprintf(root_devname, len, "%s:/", hostname);
-+ /* Does hostname needs to be enclosed in brackets? */
-+ if (strchr(hostname, ':'))
-+ snprintf(root_devname, len, "[%s]:/", hostname);
-+ else
-+ snprintf(root_devname, len, "%s:/", hostname);
- root_mnt = vfs_kern_mount(fs_type, flags, root_devname, data);
- kfree(root_devname);
- return root_mnt;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0086-NFSv4-Ensure-that-the-LOCK-code-sets-exception-inode.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0086-NFSv4-Ensure-that-the-LOCK-code-sets-exception-inode.patch
deleted file mode 100644
index a0dff9c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0086-NFSv4-Ensure-that-the-LOCK-code-sets-exception-inode.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From 4fd3b67b3816e020c889f75e986ba290110c3224 Mon Sep 17 00:00:00 2001
-From: Trond Myklebust <Trond.Myklebust at netapp.com>
-Date: Wed, 18 Apr 2012 12:20:10 -0400
-Subject: [PATCH 086/165] NFSv4: Ensure that the LOCK code sets
- exception->inode
-
-commit 05ffe24f5290dc095f98fbaf84afe51ef404ccc5 upstream.
-
-All callers of nfs4_handle_exception() that need to handle
-NFS4ERR_OPENMODE correctly should set exception->inode
-
-Signed-off-by: Trond Myklebust <Trond.Myklebust at netapp.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/nfs/nfs4proc.c | 9 +++++++--
- 1 files changed, 7 insertions(+), 2 deletions(-)
-
-diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
-index 757293b..57f9971 100644
---- a/fs/nfs/nfs4proc.c
-+++ b/fs/nfs/nfs4proc.c
-@@ -4453,7 +4453,9 @@ static int _nfs4_do_setlk(struct nfs4_state *state, int cmd, struct file_lock *f
- static int nfs4_lock_reclaim(struct nfs4_state *state, struct file_lock *request)
- {
- struct nfs_server *server = NFS_SERVER(state->inode);
-- struct nfs4_exception exception = { };
-+ struct nfs4_exception exception = {
-+ .inode = state->inode,
-+ };
- int err;
-
- do {
-@@ -4471,7 +4473,9 @@ static int nfs4_lock_reclaim(struct nfs4_state *state, struct file_lock *request
- static int nfs4_lock_expired(struct nfs4_state *state, struct file_lock *request)
- {
- struct nfs_server *server = NFS_SERVER(state->inode);
-- struct nfs4_exception exception = { };
-+ struct nfs4_exception exception = {
-+ .inode = state->inode,
-+ };
- int err;
-
- err = nfs4_set_lock_state(state, request);
-@@ -4551,6 +4555,7 @@ static int nfs4_proc_setlk(struct nfs4_state *state, int cmd, struct file_lock *
- {
- struct nfs4_exception exception = {
- .state = state,
-+ .inode = state->inode,
- };
- int err;
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0087-NFSv4-Ensure-that-we-check-lock-exclusive-shared-typ.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0087-NFSv4-Ensure-that-we-check-lock-exclusive-shared-typ.patch
deleted file mode 100644
index 8a5f01d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0087-NFSv4-Ensure-that-we-check-lock-exclusive-shared-typ.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From 2057efde24445d1ca4d192617bf7d5f4fe0f38ce Mon Sep 17 00:00:00 2001
-From: Trond Myklebust <Trond.Myklebust at netapp.com>
-Date: Wed, 18 Apr 2012 12:48:35 -0400
-Subject: [PATCH 087/165] NFSv4: Ensure that we check lock exclusive/shared
- type against open modes
-
-commit 55725513b5ef9d462aa3e18527658a0362aaae83 upstream.
-
-Since we may be simulating flock() locks using NFS byte range locks,
-we can't rely on the VFS having checked the file open mode for us.
-
-Signed-off-by: Trond Myklebust <Trond.Myklebust at netapp.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/nfs/nfs4proc.c | 14 ++++++++++++++
- 1 files changed, 14 insertions(+), 0 deletions(-)
-
-diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
-index 57f9971..51f6a40 100644
---- a/fs/nfs/nfs4proc.c
-+++ b/fs/nfs/nfs4proc.c
-@@ -4601,6 +4601,20 @@ nfs4_proc_lock(struct file *filp, int cmd, struct file_lock *request)
-
- if (state == NULL)
- return -ENOLCK;
-+ /*
-+ * Don't rely on the VFS having checked the file open mode,
-+ * since it won't do this for flock() locks.
-+ */
-+ switch (request->fl_type & (F_RDLCK|F_WRLCK|F_UNLCK)) {
-+ case F_RDLCK:
-+ if (!(filp->f_mode & FMODE_READ))
-+ return -EBADF;
-+ break;
-+ case F_WRLCK:
-+ if (!(filp->f_mode & FMODE_WRITE))
-+ return -EBADF;
-+ }
-+
- do {
- status = nfs4_proc_setlk(state, cmd, request);
- if ((status != -EAGAIN) || IS_SETLK(cmd))
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0088-NFS-put-open-context-on-error-in-nfs_pagein_multi.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0088-NFS-put-open-context-on-error-in-nfs_pagein_multi.patch
deleted file mode 100644
index b0b0149..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0088-NFS-put-open-context-on-error-in-nfs_pagein_multi.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 24f8b6b7ed6a71c4bb6b7c586a1cfa9d70e9775e Mon Sep 17 00:00:00 2001
-From: Fred Isaman <iisaman at netapp.com>
-Date: Fri, 20 Apr 2012 14:47:34 -0400
-Subject: [PATCH 088/165] NFS: put open context on error in nfs_pagein_multi
-
-commit 73fb7bc7c57d971b11f2e00536ac2d3e316e0609 upstream.
-
-Signed-off-by: Fred Isaman <iisaman at netapp.com>
-Signed-off-by: Trond Myklebust <Trond.Myklebust at netapp.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/nfs/read.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/fs/nfs/read.c b/fs/nfs/read.c
-index cfa175c..41bae32 100644
---- a/fs/nfs/read.c
-+++ b/fs/nfs/read.c
-@@ -324,7 +324,7 @@ out_bad:
- while (!list_empty(res)) {
- data = list_entry(res->next, struct nfs_read_data, list);
- list_del(&data->list);
-- nfs_readdata_free(data);
-+ nfs_readdata_release(data);
- }
- nfs_readpage_release(req);
- return -ENOMEM;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0089-NFS-put-open-context-on-error-in-nfs_flush_multi.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0089-NFS-put-open-context-on-error-in-nfs_flush_multi.patch
deleted file mode 100644
index aff198a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0089-NFS-put-open-context-on-error-in-nfs_flush_multi.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From dbef91f49d543a546ee1cbe3e839c97c69486744 Mon Sep 17 00:00:00 2001
-From: Fred Isaman <iisaman at netapp.com>
-Date: Fri, 20 Apr 2012 14:47:35 -0400
-Subject: [PATCH 089/165] NFS: put open context on error in nfs_flush_multi
-
-commit 8ccd271f7a3a846ce6f85ead0760d9d12994a611 upstream.
-
-Signed-off-by: Fred Isaman <iisaman at netapp.com>
-Signed-off-by: Trond Myklebust <Trond.Myklebust at netapp.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/nfs/write.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/fs/nfs/write.c b/fs/nfs/write.c
-index 1dda78d..4efd421 100644
---- a/fs/nfs/write.c
-+++ b/fs/nfs/write.c
-@@ -974,7 +974,7 @@ out_bad:
- while (!list_empty(res)) {
- data = list_entry(res->next, struct nfs_write_data, list);
- list_del(&data->list);
-- nfs_writedata_free(data);
-+ nfs_writedata_release(data);
- }
- nfs_redirty_request(req);
- return -ENOMEM;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0090-x86-microcode-Fix-sysfs-warning-during-module-unload.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0090-x86-microcode-Fix-sysfs-warning-during-module-unload.patch
deleted file mode 100644
index 89e7192..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0090-x86-microcode-Fix-sysfs-warning-during-module-unload.patch
+++ /dev/null
@@ -1,71 +0,0 @@
-From e7e6ba91db68ef0028d61a2bf8b9f3965595b944 Mon Sep 17 00:00:00 2001
-From: Andreas Herrmann <andreas.herrmann3 at amd.com>
-Date: Thu, 12 Apr 2012 16:48:01 +0200
-Subject: [PATCH 090/165] x86, microcode: Fix sysfs warning during module
- unload on unsupported CPUs
-
-commit a956bd6f8583326b18348ab1452b4686778f785d upstream.
-
-Loading the microcode driver on an unsupported CPU and subsequently
-unloading the driver causes
-
- WARNING: at fs/sysfs/group.c:138 mc_device_remove+0x5f/0x70 [microcode]()
- Hardware name: 01972NG
- sysfs group ffffffffa00013d0 not found for kobject 'cpu0'
- Modules linked in: snd_hda_codec_hdmi snd_hda_codec_conexant snd_hda_intel btusb snd_hda_codec bluetooth thinkpad_acpi rfkill microcode(-) [last unloaded: cfg80211]
- Pid: 4560, comm: modprobe Not tainted 3.4.0-rc2-00002-g258f742 #5
- Call Trace:
- [<ffffffff8103113b>] ? warn_slowpath_common+0x7b/0xc0
- [<ffffffff81031235>] ? warn_slowpath_fmt+0x45/0x50
- [<ffffffff81120e74>] ? sysfs_remove_group+0x34/0x120
- [<ffffffffa00000ef>] ? mc_device_remove+0x5f/0x70 [microcode]
- [<ffffffff81331eb9>] ? subsys_interface_unregister+0x69/0xa0
- [<ffffffff81563526>] ? mutex_lock+0x16/0x40
- [<ffffffffa0000c3e>] ? microcode_exit+0x50/0x92 [microcode]
- [<ffffffff8107051d>] ? sys_delete_module+0x16d/0x260
- [<ffffffff810a0065>] ? wait_iff_congested+0x45/0x110
- [<ffffffff815656af>] ? page_fault+0x1f/0x30
- [<ffffffff81565ba2>] ? system_call_fastpath+0x16/0x1b
-
-on recent kernels.
-
-This is due to commit 8a25a2fd126c ("cpu: convert 'cpu' and
-'machinecheck' sysdev_class to a regular subsystem") which renders
-commit 6c53cbfced04 ("x86, microcode: Correct sysdev_add error path")
-useless.
-
-See http://marc.info/?l=linux-kernel&m=133416246406478
-
-Avoid above warning by restoring the old driver behaviour before
-6c53cbfced04 ("x86, microcode: Correct sysdev_add error path").
-
-Cc: Tigran Aivazian <tigran at aivazian.fsnet.co.uk>
-Signed-off-by: Andreas Herrmann <andreas.herrmann3 at amd.com>
-Acked-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Link: http://lkml.kernel.org/r/20120411163849.GE4794@alberich.amd.com
-Signed-off-by: Borislav Petkov <borislav.petkov at amd.com>
-[bwh: Backported to 3.2: deleted line uses sys_dev, not dev]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/x86/kernel/microcode_core.c | 4 +---
- 1 files changed, 1 insertions(+), 3 deletions(-)
-
-diff --git a/arch/x86/kernel/microcode_core.c b/arch/x86/kernel/microcode_core.c
-index 9d46f5e..563a09d 100644
---- a/arch/x86/kernel/microcode_core.c
-+++ b/arch/x86/kernel/microcode_core.c
-@@ -418,10 +418,8 @@ static int mc_sysdev_add(struct sys_device *sys_dev)
- if (err)
- return err;
-
-- if (microcode_init_cpu(cpu) == UCODE_ERROR) {
-- sysfs_remove_group(&sys_dev->kobj, &mc_attr_group);
-+ if (microcode_init_cpu(cpu) == UCODE_ERROR)
- return -EINVAL;
-- }
-
- return err;
- }
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0091-x86-apic-APIC-code-touches-invalid-MSR-on-P5-class-m.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0091-x86-apic-APIC-code-touches-invalid-MSR-on-P5-class-m.patch
deleted file mode 100644
index d46b6ce..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0091-x86-apic-APIC-code-touches-invalid-MSR-on-P5-class-m.patch
+++ /dev/null
@@ -1,91 +0,0 @@
-From 46ed52ce8ccfe7b4b4edf99fb0aeed2fbf817727 Mon Sep 17 00:00:00 2001
-From: Bryan O'Donoghue <bryan.odonoghue at linux.intel.com>
-Date: Wed, 18 Apr 2012 17:37:39 +0100
-Subject: [PATCH 091/165] x86, apic: APIC code touches invalid MSR on P5 class
- machines
-
-commit cbf2829b61c136edcba302a5e1b6b40e97d32c00 upstream.
-
-Current APIC code assumes MSR_IA32_APICBASE is present for all systems.
-Pentium Classic P5 and friends didn't have this MSR. MSR_IA32_APICBASE
-was introduced as an architectural MSR by Intel @ P6.
-
-Code paths that can touch this MSR invalidly are when vendor == Intel &&
-cpu-family == 5 and APIC bit is set in CPUID - or when you simply pass
-lapic on the kernel command line, on a P5.
-
-The below patch stops Linux incorrectly interfering with the
-MSR_IA32_APICBASE for P5 class machines. Other code paths exist that
-touch the MSR - however those paths are not currently reachable for a
-conformant P5.
-
-Signed-off-by: Bryan O'Donoghue <bryan.odonoghue at linux.intel.com>
-Link: http://lkml.kernel.org/r/4F8EEDD3.1080404@linux.intel.com
-Signed-off-by: H. Peter Anvin <hpa at linux.intel.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/x86/kernel/apic/apic.c | 34 ++++++++++++++++++++--------------
- 1 files changed, 20 insertions(+), 14 deletions(-)
-
-diff --git a/arch/x86/kernel/apic/apic.c b/arch/x86/kernel/apic/apic.c
-index f98d84c..c4e3581 100644
---- a/arch/x86/kernel/apic/apic.c
-+++ b/arch/x86/kernel/apic/apic.c
-@@ -1577,9 +1577,11 @@ static int __init apic_verify(void)
- mp_lapic_addr = APIC_DEFAULT_PHYS_BASE;
-
- /* The BIOS may have set up the APIC at some other address */
-- rdmsr(MSR_IA32_APICBASE, l, h);
-- if (l & MSR_IA32_APICBASE_ENABLE)
-- mp_lapic_addr = l & MSR_IA32_APICBASE_BASE;
-+ if (boot_cpu_data.x86 >= 6) {
-+ rdmsr(MSR_IA32_APICBASE, l, h);
-+ if (l & MSR_IA32_APICBASE_ENABLE)
-+ mp_lapic_addr = l & MSR_IA32_APICBASE_BASE;
-+ }
-
- pr_info("Found and enabled local APIC!\n");
- return 0;
-@@ -1597,13 +1599,15 @@ int __init apic_force_enable(unsigned long addr)
- * MSR. This can only be done in software for Intel P6 or later
- * and AMD K7 (Model > 1) or later.
- */
-- rdmsr(MSR_IA32_APICBASE, l, h);
-- if (!(l & MSR_IA32_APICBASE_ENABLE)) {
-- pr_info("Local APIC disabled by BIOS -- reenabling.\n");
-- l &= ~MSR_IA32_APICBASE_BASE;
-- l |= MSR_IA32_APICBASE_ENABLE | addr;
-- wrmsr(MSR_IA32_APICBASE, l, h);
-- enabled_via_apicbase = 1;
-+ if (boot_cpu_data.x86 >= 6) {
-+ rdmsr(MSR_IA32_APICBASE, l, h);
-+ if (!(l & MSR_IA32_APICBASE_ENABLE)) {
-+ pr_info("Local APIC disabled by BIOS -- reenabling.\n");
-+ l &= ~MSR_IA32_APICBASE_BASE;
-+ l |= MSR_IA32_APICBASE_ENABLE | addr;
-+ wrmsr(MSR_IA32_APICBASE, l, h);
-+ enabled_via_apicbase = 1;
-+ }
- }
- return apic_verify();
- }
-@@ -2149,10 +2153,12 @@ static void lapic_resume(void)
- * FIXME! This will be wrong if we ever support suspend on
- * SMP! We'll need to do this as part of the CPU restore!
- */
-- rdmsr(MSR_IA32_APICBASE, l, h);
-- l &= ~MSR_IA32_APICBASE_BASE;
-- l |= MSR_IA32_APICBASE_ENABLE | mp_lapic_addr;
-- wrmsr(MSR_IA32_APICBASE, l, h);
-+ if (boot_cpu_data.x86 >= 6) {
-+ rdmsr(MSR_IA32_APICBASE, l, h);
-+ l &= ~MSR_IA32_APICBASE_BASE;
-+ l |= MSR_IA32_APICBASE_ENABLE | mp_lapic_addr;
-+ wrmsr(MSR_IA32_APICBASE, l, h);
-+ }
- }
-
- maxlvt = lapic_get_maxlvt();
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0092-Revert-autofs-work-around-unhappy-compat-problem-on-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0092-Revert-autofs-work-around-unhappy-compat-problem-on-.patch
deleted file mode 100644
index a4c0c07..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0092-Revert-autofs-work-around-unhappy-compat-problem-on-.patch
+++ /dev/null
@@ -1,135 +0,0 @@
-From 57ae2e2d36a3b53fa55c4e1e6cf073f566921c40 Mon Sep 17 00:00:00 2001
-From: Linus Torvalds <torvalds at linux-foundation.org>
-Date: Sat, 28 Apr 2012 08:29:56 -0700
-Subject: [PATCH 092/165] Revert "autofs: work around unhappy compat problem
- on x86-64"
-
-commit fcbf94b9dedd2ce08e798a99aafc94fec8668161 upstream.
-
-This reverts commit a32744d4abae24572eff7269bc17895c41bd0085.
-
-While that commit was technically the right thing to do, and made the
-x86-64 compat mode work identically to native 32-bit mode (and thus
-fixing the problem with a 32-bit systemd install on a 64-bit kernel), it
-turns out that the automount binaries had workarounds for this compat
-problem.
-
-Now, the workarounds are disgusting: doing an "uname()" to find out the
-architecture of the kernel, and then comparing it for the 64-bit cases
-and fixing up the size of the read() in automount for those. And they
-were confused: it's not actually a generic 64-bit issue at all, it's
-very much tied to just x86-64, which has different alignment for an
-'u64' in 64-bit mode than in 32-bit mode.
-
-But the end result is that fixing the compat layer actually breaks the
-case of a 32-bit automount on a x86-64 kernel.
-
-There are various approaches to fix this (including just doing a
-"strcmp()" on current->comm and comparing it to "automount"), but I
-think that I will do the one that teaches pipes about a special "packet
-mode", which will allow user space to not have to care too deeply about
-the padding at the end of the autofs packet.
-
-That change will make the compat workaround unnecessary, so let's revert
-it first, and get automount working again in compat mode. The
-packetized pipes will then fix autofs for systemd.
-
-Reported-and-requested-by: Michael Tokarev <mjt at tls.msk.ru>
-Cc: Ian Kent <raven at themaw.net>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-[bwh: Backported to 3.2: adjust context]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/autofs4/autofs_i.h | 1 -
- fs/autofs4/dev-ioctl.c | 1 -
- fs/autofs4/inode.c | 2 --
- fs/autofs4/waitq.c | 22 +++-------------------
- 4 files changed, 3 insertions(+), 23 deletions(-)
-
-diff --git a/fs/autofs4/autofs_i.h b/fs/autofs4/autofs_i.h
-index 308a98b..326dc08 100644
---- a/fs/autofs4/autofs_i.h
-+++ b/fs/autofs4/autofs_i.h
-@@ -110,7 +110,6 @@ struct autofs_sb_info {
- int sub_version;
- int min_proto;
- int max_proto;
-- int compat_daemon;
- unsigned long exp_timeout;
- unsigned int type;
- int reghost_enabled;
-diff --git a/fs/autofs4/dev-ioctl.c b/fs/autofs4/dev-ioctl.c
-index 56bac70..509fe1e 100644
---- a/fs/autofs4/dev-ioctl.c
-+++ b/fs/autofs4/dev-ioctl.c
-@@ -385,7 +385,6 @@ static int autofs_dev_ioctl_setpipefd(struct file *fp,
- sbi->pipefd = pipefd;
- sbi->pipe = pipe;
- sbi->catatonic = 0;
-- sbi->compat_daemon = is_compat_task();
- }
- out:
- mutex_unlock(&sbi->wq_mutex);
-diff --git a/fs/autofs4/inode.c b/fs/autofs4/inode.c
-index 98a5695..8179f1a 100644
---- a/fs/autofs4/inode.c
-+++ b/fs/autofs4/inode.c
-@@ -19,7 +19,6 @@
- #include <linux/parser.h>
- #include <linux/bitops.h>
- #include <linux/magic.h>
--#include <linux/compat.h>
- #include "autofs_i.h"
- #include <linux/module.h>
-
-@@ -225,7 +224,6 @@ int autofs4_fill_super(struct super_block *s, void *data, int silent)
- set_autofs_type_indirect(&sbi->type);
- sbi->min_proto = 0;
- sbi->max_proto = 0;
-- sbi->compat_daemon = is_compat_task();
- mutex_init(&sbi->wq_mutex);
- spin_lock_init(&sbi->fs_lock);
- sbi->queues = NULL;
-diff --git a/fs/autofs4/waitq.c b/fs/autofs4/waitq.c
-index 6861f61..e1fbdee 100644
---- a/fs/autofs4/waitq.c
-+++ b/fs/autofs4/waitq.c
-@@ -90,24 +90,7 @@ static int autofs4_write(struct file *file, const void *addr, int bytes)
-
- return (bytes > 0);
- }
--
--/*
-- * The autofs_v5 packet was misdesigned.
-- *
-- * The packets are identical on x86-32 and x86-64, but have different
-- * alignment. Which means that 'sizeof()' will give different results.
-- * Fix it up for the case of running 32-bit user mode on a 64-bit kernel.
-- */
--static noinline size_t autofs_v5_packet_size(struct autofs_sb_info *sbi)
--{
-- size_t pktsz = sizeof(struct autofs_v5_packet);
--#if defined(CONFIG_X86_64) && defined(CONFIG_COMPAT)
-- if (sbi->compat_daemon > 0)
-- pktsz -= 4;
--#endif
-- return pktsz;
--}
--
-+
- static void autofs4_notify_daemon(struct autofs_sb_info *sbi,
- struct autofs_wait_queue *wq,
- int type)
-@@ -164,7 +147,8 @@ static void autofs4_notify_daemon(struct autofs_sb_info *sbi,
- {
- struct autofs_v5_packet *packet = &pkt.v5_pkt.v5_packet;
-
-- pktsz = autofs_v5_packet_size(sbi);
-+ pktsz = sizeof(*packet);
-+
- packet->wait_queue_token = wq->wait_queue_token;
- packet->len = wq->name.len;
- memcpy(packet->name, wq->name.name, wq->name.len);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0093-xen-correctly-check-for-pending-events-when-restorin.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0093-xen-correctly-check-for-pending-events-when-restorin.patch
deleted file mode 100644
index 970ac1c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0093-xen-correctly-check-for-pending-events-when-restorin.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From d989ae8669c297a7873a9b5c7e406bc467323388 Mon Sep 17 00:00:00 2001
-From: David Vrabel <david.vrabel at citrix.com>
-Date: Thu, 26 Apr 2012 19:44:06 +0100
-Subject: [PATCH 093/165] xen: correctly check for pending events when
- restoring irq flags
-
-commit 7eb7ce4d2e8991aff4ecb71a81949a907ca755ac upstream.
-
-In xen_restore_fl_direct(), xen_force_evtchn_callback() was being
-called even if no events were pending. This resulted in (depending on
-workload) about a 100 times as many xen_version hypercalls as
-necessary.
-
-Fix this by correcting the sense of the conditional jump.
-
-This seems to give a significant performance benefit for some
-workloads.
-
-There is some subtle tricksy "..since the check here is trying to
-check both pending and masked in a single cmpw, but I think this is
-correct. It will call check_events now only when the combined
-mask+pending word is 0x0001 (aka unmasked, pending)." (Ian)
-
-Acked-by: Ian Campbell <ian.campbell at citrix.com>
-Signed-off-by: David Vrabel <david.vrabel at citrix.com>
-Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk at oracle.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/x86/xen/xen-asm.S | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/arch/x86/xen/xen-asm.S b/arch/x86/xen/xen-asm.S
-index 79d7362..3e45aa0 100644
---- a/arch/x86/xen/xen-asm.S
-+++ b/arch/x86/xen/xen-asm.S
-@@ -96,7 +96,7 @@ ENTRY(xen_restore_fl_direct)
-
- /* check for unmasked and pending */
- cmpw $0x0001, PER_CPU_VAR(xen_vcpu_info) + XEN_vcpu_info_pending
-- jz 1f
-+ jnz 1f
- 2: call check_events
- 1:
- ENDPATCH(xen_restore_fl_direct)
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0094-xen-smp-Fix-crash-when-booting-with-ACPI-hotplug-CPU.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0094-xen-smp-Fix-crash-when-booting-with-ACPI-hotplug-CPU.patch
deleted file mode 100644
index 02b157f..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0094-xen-smp-Fix-crash-when-booting-with-ACPI-hotplug-CPU.patch
+++ /dev/null
@@ -1,99 +0,0 @@
-From 7e7b9fb05d7e36d2d585a422de52c3b2e3345cdf Mon Sep 17 00:00:00 2001
-From: Konrad Rzeszutek Wilk <konrad.wilk at oracle.com>
-Date: Thu, 26 Apr 2012 13:50:03 -0400
-Subject: [PATCH 094/165] xen/smp: Fix crash when booting with ACPI hotplug
- CPUs.
-
-commit cf405ae612b0f7e2358db7ff594c0e94846137aa upstream.
-
-When we boot on a machine that can hotplug CPUs and we
-are using 'dom0_max_vcpus=X' on the Xen hypervisor line
-to clip the amount of CPUs available to the initial domain,
-we get this:
-
-(XEN) Command line: com1=115200,8n1 dom0_mem=8G noreboot dom0_max_vcpus=8 sync_console mce_verbosity=verbose console=com1,vga loglvl=all guest_loglvl=all
-.. snip..
-DMI: Intel Corporation S2600CP/S2600CP, BIOS SE5C600.86B.99.99.x032.072520111118 07/25/2011
-.. snip.
-SMP: Allowing 64 CPUs, 32 hotplug CPUs
-installing Xen timer for CPU 7
-cpu 7 spinlock event irq 361
-NMI watchdog: disabled (cpu7): hardware events not enabled
-Brought up 8 CPUs
-.. snip..
- [acpi processor finds the CPUs are not initialized and starts calling
- arch_register_cpu, which creates /sys/devices/system/cpu/cpu8/online]
-CPU 8 got hotplugged
-CPU 9 got hotplugged
-CPU 10 got hotplugged
-.. snip..
-initcall 1_acpi_battery_init_async+0x0/0x1b returned 0 after 406 usecs
-calling erst_init+0x0/0x2bb @ 1
-
- [and the scheduler sticks newly started tasks on the new CPUs, but
- said CPUs cannot be initialized b/c the hypervisor has limited the
- amount of vCPUS to 8 - as per the dom0_max_vcpus=8 flag.
- The spinlock tries to kick the other CPU, but the structure for that
- is not initialized and we crash.]
-BUG: unable to handle kernel paging request at fffffffffffffed8
-IP: [<ffffffff81035289>] xen_spin_lock+0x29/0x60
-PGD 180d067 PUD 180e067 PMD 0
-Oops: 0002 [#1] SMP
-CPU 7
-Modules linked in:
-
-Pid: 1, comm: swapper/0 Not tainted 3.4.0-rc2upstream-00001-gf5154e8 #1 Intel Corporation S2600CP/S2600CP
-RIP: e030:[<ffffffff81035289>] [<ffffffff81035289>] xen_spin_lock+0x29/0x60
-RSP: e02b:ffff8801fb9b3a70 EFLAGS: 00010282
-
-With this patch, we cap the amount of vCPUS that the initial domain
-can run, to exactly what dom0_max_vcpus=X has specified.
-
-In the future, if there is a hypercall that will allow a running
-domain to expand past its initial set of vCPUS, this patch should
-be re-evaluated.
-
-Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk at oracle.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/x86/xen/smp.c | 15 +++++++++++++++
- 1 files changed, 15 insertions(+), 0 deletions(-)
-
-diff --git a/arch/x86/xen/smp.c b/arch/x86/xen/smp.c
-index 041d4fe..9a23fff 100644
---- a/arch/x86/xen/smp.c
-+++ b/arch/x86/xen/smp.c
-@@ -172,6 +172,7 @@ static void __init xen_fill_possible_map(void)
- static void __init xen_filter_cpu_maps(void)
- {
- int i, rc;
-+ unsigned int subtract = 0;
-
- if (!xen_initial_domain())
- return;
-@@ -186,8 +187,22 @@ static void __init xen_filter_cpu_maps(void)
- } else {
- set_cpu_possible(i, false);
- set_cpu_present(i, false);
-+ subtract++;
- }
- }
-+#ifdef CONFIG_HOTPLUG_CPU
-+ /* This is akin to using 'nr_cpus' on the Linux command line.
-+ * Which is OK as when we use 'dom0_max_vcpus=X' we can only
-+ * have up to X, while nr_cpu_ids is greater than X. This
-+ * normally is not a problem, except when CPU hotplugging
-+ * is involved and then there might be more than X CPUs
-+ * in the guest - which will not work as there is no
-+ * hypercall to expand the max number of VCPUs an already
-+ * running guest has. So cap it up to X. */
-+ if (subtract)
-+ nr_cpu_ids = nr_cpu_ids - subtract;
-+#endif
-+
- }
-
- static void __init xen_smp_prepare_boot_cpu(void)
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0095-ASoC-dapm-Ensure-power-gets-managed-for-line-widgets.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0095-ASoC-dapm-Ensure-power-gets-managed-for-line-widgets.patch
deleted file mode 100644
index e8e04c8..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0095-ASoC-dapm-Ensure-power-gets-managed-for-line-widgets.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 5cf5b5db94847bec15c83a7ba69697a74e5248e0 Mon Sep 17 00:00:00 2001
-From: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Date: Thu, 12 Apr 2012 17:29:36 +0100
-Subject: [PATCH 095/165] ASoC: dapm: Ensure power gets managed for line
- widgets
-
-commit 7e1f7c8a6e517900cd84da1b8ae020f08f286c3b upstream.
-
-Line widgets had not been included in either the power up or power down
-sequences so if a widget had an event associated with it that event would
-never be run. Fix this minimally by adding them to the sequences, we
-should probably be doing away with the specific widget types as they all
-have the same priority anyway.
-
-Signed-off-by: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- sound/soc/soc-dapm.c | 2 ++
- 1 files changed, 2 insertions(+), 0 deletions(-)
-
-diff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c
-index ea909c5..90e93bf 100644
---- a/sound/soc/soc-dapm.c
-+++ b/sound/soc/soc-dapm.c
-@@ -69,6 +69,7 @@ static int dapm_up_seq[] = {
- [snd_soc_dapm_out_drv] = 10,
- [snd_soc_dapm_hp] = 10,
- [snd_soc_dapm_spk] = 10,
-+ [snd_soc_dapm_line] = 10,
- [snd_soc_dapm_post] = 11,
- };
-
-@@ -77,6 +78,7 @@ static int dapm_down_seq[] = {
- [snd_soc_dapm_adc] = 1,
- [snd_soc_dapm_hp] = 2,
- [snd_soc_dapm_spk] = 2,
-+ [snd_soc_dapm_line] = 2,
- [snd_soc_dapm_out_drv] = 2,
- [snd_soc_dapm_pga] = 4,
- [snd_soc_dapm_mixer_named_ctl] = 5,
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0096-ASoC-wm8994-Improve-sequencing-of-AIF-channel-enable.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0096-ASoC-wm8994-Improve-sequencing-of-AIF-channel-enable.patch
deleted file mode 100644
index a576f06..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0096-ASoC-wm8994-Improve-sequencing-of-AIF-channel-enable.patch
+++ /dev/null
@@ -1,389 +0,0 @@
-From 18ea02a9ec95869c1210e6ea2f10dee99c36edbd Mon Sep 17 00:00:00 2001
-From: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Date: Thu, 12 Apr 2012 19:47:11 +0100
-Subject: [PATCH 096/165] ASoC: wm8994: Improve sequencing of AIF channel
- enables
-
-commit 1a38336b8611a04f0a624330c1f815421f4bf5f4 upstream.
-
-This ensures a clean startup of the channels, without this change some
-use cases could result in issues in a small proportion of cases.
-
-Signed-off-by: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- sound/soc/codecs/wm8994.c | 276 ++++++++++++++++++++++++++++++++++++---------
- 1 files changed, 222 insertions(+), 54 deletions(-)
-
-diff --git a/sound/soc/codecs/wm8994.c b/sound/soc/codecs/wm8994.c
-index 2f1f5f8..7806301 100644
---- a/sound/soc/codecs/wm8994.c
-+++ b/sound/soc/codecs/wm8994.c
-@@ -883,61 +883,170 @@ static void wm8994_update_class_w(struct snd_soc_codec *codec)
- }
- }
-
--static int late_enable_ev(struct snd_soc_dapm_widget *w,
-- struct snd_kcontrol *kcontrol, int event)
-+static int aif1clk_ev(struct snd_soc_dapm_widget *w,
-+ struct snd_kcontrol *kcontrol, int event)
- {
- struct snd_soc_codec *codec = w->codec;
-- struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
-+ struct wm8994 *control = codec->control_data;
-+ int mask = WM8994_AIF1DAC1L_ENA | WM8994_AIF1DAC1R_ENA;
-+ int dac;
-+ int adc;
-+ int val;
-+
-+ switch (control->type) {
-+ case WM8994:
-+ case WM8958:
-+ mask |= WM8994_AIF1DAC2L_ENA | WM8994_AIF1DAC2R_ENA;
-+ break;
-+ default:
-+ break;
-+ }
-
- switch (event) {
- case SND_SOC_DAPM_PRE_PMU:
-- if (wm8994->aif1clk_enable) {
-- snd_soc_update_bits(codec, WM8994_AIF1_CLOCKING_1,
-- WM8994_AIF1CLK_ENA_MASK,
-- WM8994_AIF1CLK_ENA);
-- wm8994->aif1clk_enable = 0;
-- }
-- if (wm8994->aif2clk_enable) {
-- snd_soc_update_bits(codec, WM8994_AIF2_CLOCKING_1,
-- WM8994_AIF2CLK_ENA_MASK,
-- WM8994_AIF2CLK_ENA);
-- wm8994->aif2clk_enable = 0;
-- }
-+ val = snd_soc_read(codec, WM8994_AIF1_CONTROL_1);
-+ if ((val & WM8994_AIF1ADCL_SRC) &&
-+ (val & WM8994_AIF1ADCR_SRC))
-+ adc = WM8994_AIF1ADC1R_ENA | WM8994_AIF1ADC2R_ENA;
-+ else if (!(val & WM8994_AIF1ADCL_SRC) &&
-+ !(val & WM8994_AIF1ADCR_SRC))
-+ adc = WM8994_AIF1ADC1L_ENA | WM8994_AIF1ADC2L_ENA;
-+ else
-+ adc = WM8994_AIF1ADC1R_ENA | WM8994_AIF1ADC2R_ENA |
-+ WM8994_AIF1ADC1L_ENA | WM8994_AIF1ADC2L_ENA;
-+
-+ val = snd_soc_read(codec, WM8994_AIF1_CONTROL_2);
-+ if ((val & WM8994_AIF1DACL_SRC) &&
-+ (val & WM8994_AIF1DACR_SRC))
-+ dac = WM8994_AIF1DAC1R_ENA | WM8994_AIF1DAC2R_ENA;
-+ else if (!(val & WM8994_AIF1DACL_SRC) &&
-+ !(val & WM8994_AIF1DACR_SRC))
-+ dac = WM8994_AIF1DAC1L_ENA | WM8994_AIF1DAC2L_ENA;
-+ else
-+ dac = WM8994_AIF1DAC1R_ENA | WM8994_AIF1DAC2R_ENA |
-+ WM8994_AIF1DAC1L_ENA | WM8994_AIF1DAC2L_ENA;
-+
-+ snd_soc_update_bits(codec, WM8994_POWER_MANAGEMENT_4,
-+ mask, adc);
-+ snd_soc_update_bits(codec, WM8994_POWER_MANAGEMENT_5,
-+ mask, dac);
-+ snd_soc_update_bits(codec, WM8994_CLOCKING_1,
-+ WM8994_AIF1DSPCLK_ENA |
-+ WM8994_SYSDSPCLK_ENA,
-+ WM8994_AIF1DSPCLK_ENA |
-+ WM8994_SYSDSPCLK_ENA);
-+ snd_soc_update_bits(codec, WM8994_POWER_MANAGEMENT_4, mask,
-+ WM8994_AIF1ADC1R_ENA |
-+ WM8994_AIF1ADC1L_ENA |
-+ WM8994_AIF1ADC2R_ENA |
-+ WM8994_AIF1ADC2L_ENA);
-+ snd_soc_update_bits(codec, WM8994_POWER_MANAGEMENT_5, mask,
-+ WM8994_AIF1DAC1R_ENA |
-+ WM8994_AIF1DAC1L_ENA |
-+ WM8994_AIF1DAC2R_ENA |
-+ WM8994_AIF1DAC2L_ENA);
-+ break;
-+
-+ case SND_SOC_DAPM_PRE_PMD:
-+ case SND_SOC_DAPM_POST_PMD:
-+ snd_soc_update_bits(codec, WM8994_POWER_MANAGEMENT_5,
-+ mask, 0);
-+ snd_soc_update_bits(codec, WM8994_POWER_MANAGEMENT_4,
-+ mask, 0);
-+
-+ val = snd_soc_read(codec, WM8994_CLOCKING_1);
-+ if (val & WM8994_AIF2DSPCLK_ENA)
-+ val = WM8994_SYSDSPCLK_ENA;
-+ else
-+ val = 0;
-+ snd_soc_update_bits(codec, WM8994_CLOCKING_1,
-+ WM8994_SYSDSPCLK_ENA |
-+ WM8994_AIF1DSPCLK_ENA, val);
- break;
- }
-
-- /* We may also have postponed startup of DSP, handle that. */
-- wm8958_aif_ev(w, kcontrol, event);
--
- return 0;
- }
-
--static int late_disable_ev(struct snd_soc_dapm_widget *w,
-- struct snd_kcontrol *kcontrol, int event)
-+static int aif2clk_ev(struct snd_soc_dapm_widget *w,
-+ struct snd_kcontrol *kcontrol, int event)
- {
- struct snd_soc_codec *codec = w->codec;
-- struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
-+ int dac;
-+ int adc;
-+ int val;
-
- switch (event) {
-+ case SND_SOC_DAPM_PRE_PMU:
-+ val = snd_soc_read(codec, WM8994_AIF2_CONTROL_1);
-+ if ((val & WM8994_AIF2ADCL_SRC) &&
-+ (val & WM8994_AIF2ADCR_SRC))
-+ adc = WM8994_AIF2ADCR_ENA;
-+ else if (!(val & WM8994_AIF2ADCL_SRC) &&
-+ !(val & WM8994_AIF2ADCR_SRC))
-+ adc = WM8994_AIF2ADCL_ENA;
-+ else
-+ adc = WM8994_AIF2ADCL_ENA | WM8994_AIF2ADCR_ENA;
-+
-+
-+ val = snd_soc_read(codec, WM8994_AIF2_CONTROL_2);
-+ if ((val & WM8994_AIF2DACL_SRC) &&
-+ (val & WM8994_AIF2DACR_SRC))
-+ dac = WM8994_AIF2DACR_ENA;
-+ else if (!(val & WM8994_AIF2DACL_SRC) &&
-+ !(val & WM8994_AIF2DACR_SRC))
-+ dac = WM8994_AIF2DACL_ENA;
-+ else
-+ dac = WM8994_AIF2DACL_ENA | WM8994_AIF2DACR_ENA;
-+
-+ snd_soc_update_bits(codec, WM8994_POWER_MANAGEMENT_4,
-+ WM8994_AIF2ADCL_ENA |
-+ WM8994_AIF2ADCR_ENA, adc);
-+ snd_soc_update_bits(codec, WM8994_POWER_MANAGEMENT_5,
-+ WM8994_AIF2DACL_ENA |
-+ WM8994_AIF2DACR_ENA, dac);
-+ snd_soc_update_bits(codec, WM8994_CLOCKING_1,
-+ WM8994_AIF2DSPCLK_ENA |
-+ WM8994_SYSDSPCLK_ENA,
-+ WM8994_AIF2DSPCLK_ENA |
-+ WM8994_SYSDSPCLK_ENA);
-+ snd_soc_update_bits(codec, WM8994_POWER_MANAGEMENT_4,
-+ WM8994_AIF2ADCL_ENA |
-+ WM8994_AIF2ADCR_ENA,
-+ WM8994_AIF2ADCL_ENA |
-+ WM8994_AIF2ADCR_ENA);
-+ snd_soc_update_bits(codec, WM8994_POWER_MANAGEMENT_5,
-+ WM8994_AIF2DACL_ENA |
-+ WM8994_AIF2DACR_ENA,
-+ WM8994_AIF2DACL_ENA |
-+ WM8994_AIF2DACR_ENA);
-+ break;
-+
-+ case SND_SOC_DAPM_PRE_PMD:
- case SND_SOC_DAPM_POST_PMD:
-- if (wm8994->aif1clk_disable) {
-- snd_soc_update_bits(codec, WM8994_AIF1_CLOCKING_1,
-- WM8994_AIF1CLK_ENA_MASK, 0);
-- wm8994->aif1clk_disable = 0;
-- }
-- if (wm8994->aif2clk_disable) {
-- snd_soc_update_bits(codec, WM8994_AIF2_CLOCKING_1,
-- WM8994_AIF2CLK_ENA_MASK, 0);
-- wm8994->aif2clk_disable = 0;
-- }
-+ snd_soc_update_bits(codec, WM8994_POWER_MANAGEMENT_5,
-+ WM8994_AIF2DACL_ENA |
-+ WM8994_AIF2DACR_ENA, 0);
-+ snd_soc_update_bits(codec, WM8994_POWER_MANAGEMENT_5,
-+ WM8994_AIF2ADCL_ENA |
-+ WM8994_AIF2ADCR_ENA, 0);
-+
-+ val = snd_soc_read(codec, WM8994_CLOCKING_1);
-+ if (val & WM8994_AIF1DSPCLK_ENA)
-+ val = WM8994_SYSDSPCLK_ENA;
-+ else
-+ val = 0;
-+ snd_soc_update_bits(codec, WM8994_CLOCKING_1,
-+ WM8994_SYSDSPCLK_ENA |
-+ WM8994_AIF2DSPCLK_ENA, val);
- break;
- }
-
- return 0;
- }
-
--static int aif1clk_ev(struct snd_soc_dapm_widget *w,
-- struct snd_kcontrol *kcontrol, int event)
-+static int aif1clk_late_ev(struct snd_soc_dapm_widget *w,
-+ struct snd_kcontrol *kcontrol, int event)
- {
- struct snd_soc_codec *codec = w->codec;
- struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
-@@ -954,8 +1063,8 @@ static int aif1clk_ev(struct snd_soc_dapm_widget *w,
- return 0;
- }
-
--static int aif2clk_ev(struct snd_soc_dapm_widget *w,
-- struct snd_kcontrol *kcontrol, int event)
-+static int aif2clk_late_ev(struct snd_soc_dapm_widget *w,
-+ struct snd_kcontrol *kcontrol, int event)
- {
- struct snd_soc_codec *codec = w->codec;
- struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
-@@ -972,6 +1081,63 @@ static int aif2clk_ev(struct snd_soc_dapm_widget *w,
- return 0;
- }
-
-+static int late_enable_ev(struct snd_soc_dapm_widget *w,
-+ struct snd_kcontrol *kcontrol, int event)
-+{
-+ struct snd_soc_codec *codec = w->codec;
-+ struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
-+
-+ switch (event) {
-+ case SND_SOC_DAPM_PRE_PMU:
-+ if (wm8994->aif1clk_enable) {
-+ aif1clk_ev(w, kcontrol, event);
-+ snd_soc_update_bits(codec, WM8994_AIF1_CLOCKING_1,
-+ WM8994_AIF1CLK_ENA_MASK,
-+ WM8994_AIF1CLK_ENA);
-+ wm8994->aif1clk_enable = 0;
-+ }
-+ if (wm8994->aif2clk_enable) {
-+ aif2clk_ev(w, kcontrol, event);
-+ snd_soc_update_bits(codec, WM8994_AIF2_CLOCKING_1,
-+ WM8994_AIF2CLK_ENA_MASK,
-+ WM8994_AIF2CLK_ENA);
-+ wm8994->aif2clk_enable = 0;
-+ }
-+ break;
-+ }
-+
-+ /* We may also have postponed startup of DSP, handle that. */
-+ wm8958_aif_ev(w, kcontrol, event);
-+
-+ return 0;
-+}
-+
-+static int late_disable_ev(struct snd_soc_dapm_widget *w,
-+ struct snd_kcontrol *kcontrol, int event)
-+{
-+ struct snd_soc_codec *codec = w->codec;
-+ struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
-+
-+ switch (event) {
-+ case SND_SOC_DAPM_POST_PMD:
-+ if (wm8994->aif1clk_disable) {
-+ snd_soc_update_bits(codec, WM8994_AIF1_CLOCKING_1,
-+ WM8994_AIF1CLK_ENA_MASK, 0);
-+ aif1clk_ev(w, kcontrol, event);
-+ wm8994->aif1clk_disable = 0;
-+ }
-+ if (wm8994->aif2clk_disable) {
-+ snd_soc_update_bits(codec, WM8994_AIF2_CLOCKING_1,
-+ WM8994_AIF2CLK_ENA_MASK, 0);
-+ aif2clk_ev(w, kcontrol, event);
-+ wm8994->aif2clk_disable = 0;
-+ }
-+ break;
-+ }
-+
-+ return 0;
-+}
-+
- static int adc_mux_ev(struct snd_soc_dapm_widget *w,
- struct snd_kcontrol *kcontrol, int event)
- {
-@@ -1268,9 +1434,9 @@ static const struct snd_kcontrol_new aif2dacr_src_mux =
- SOC_DAPM_ENUM("AIF2DACR Mux", aif2dacr_src_enum);
-
- static const struct snd_soc_dapm_widget wm8994_lateclk_revd_widgets[] = {
--SND_SOC_DAPM_SUPPLY("AIF1CLK", SND_SOC_NOPM, 0, 0, aif1clk_ev,
-+SND_SOC_DAPM_SUPPLY("AIF1CLK", SND_SOC_NOPM, 0, 0, aif1clk_late_ev,
- SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD),
--SND_SOC_DAPM_SUPPLY("AIF2CLK", SND_SOC_NOPM, 0, 0, aif2clk_ev,
-+SND_SOC_DAPM_SUPPLY("AIF2CLK", SND_SOC_NOPM, 0, 0, aif2clk_late_ev,
- SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD),
-
- SND_SOC_DAPM_PGA_E("Late DAC1L Enable PGA", SND_SOC_NOPM, 0, 0, NULL, 0,
-@@ -1299,8 +1465,10 @@ SND_SOC_DAPM_POST("Late Disable PGA", late_disable_ev)
- };
-
- static const struct snd_soc_dapm_widget wm8994_lateclk_widgets[] = {
--SND_SOC_DAPM_SUPPLY("AIF1CLK", WM8994_AIF1_CLOCKING_1, 0, 0, NULL, 0),
--SND_SOC_DAPM_SUPPLY("AIF2CLK", WM8994_AIF2_CLOCKING_1, 0, 0, NULL, 0),
-+SND_SOC_DAPM_SUPPLY("AIF1CLK", WM8994_AIF1_CLOCKING_1, 0, 0, aif1clk_ev,
-+ SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_PRE_PMD),
-+SND_SOC_DAPM_SUPPLY("AIF2CLK", WM8994_AIF2_CLOCKING_1, 0, 0, aif2clk_ev,
-+ SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_PRE_PMD),
- SND_SOC_DAPM_PGA("Direct Voice", SND_SOC_NOPM, 0, 0, NULL, 0),
- SND_SOC_DAPM_MIXER("SPKL", WM8994_POWER_MANAGEMENT_3, 8, 0,
- left_speaker_mixer, ARRAY_SIZE(left_speaker_mixer)),
-@@ -1353,30 +1521,30 @@ SND_SOC_DAPM_SUPPLY("VMID", SND_SOC_NOPM, 0, 0, vmid_event,
- SND_SOC_DAPM_SUPPLY("CLK_SYS", SND_SOC_NOPM, 0, 0, clk_sys_event,
- SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD),
-
--SND_SOC_DAPM_SUPPLY("DSP1CLK", WM8994_CLOCKING_1, 3, 0, NULL, 0),
--SND_SOC_DAPM_SUPPLY("DSP2CLK", WM8994_CLOCKING_1, 2, 0, NULL, 0),
--SND_SOC_DAPM_SUPPLY("DSPINTCLK", WM8994_CLOCKING_1, 1, 0, NULL, 0),
-+SND_SOC_DAPM_SUPPLY("DSP1CLK", SND_SOC_NOPM, 3, 0, NULL, 0),
-+SND_SOC_DAPM_SUPPLY("DSP2CLK", SND_SOC_NOPM, 2, 0, NULL, 0),
-+SND_SOC_DAPM_SUPPLY("DSPINTCLK", SND_SOC_NOPM, 1, 0, NULL, 0),
-
- SND_SOC_DAPM_AIF_OUT("AIF1ADC1L", NULL,
-- 0, WM8994_POWER_MANAGEMENT_4, 9, 0),
-+ 0, SND_SOC_NOPM, 9, 0),
- SND_SOC_DAPM_AIF_OUT("AIF1ADC1R", NULL,
-- 0, WM8994_POWER_MANAGEMENT_4, 8, 0),
-+ 0, SND_SOC_NOPM, 8, 0),
- SND_SOC_DAPM_AIF_IN_E("AIF1DAC1L", NULL, 0,
-- WM8994_POWER_MANAGEMENT_5, 9, 0, wm8958_aif_ev,
-+ SND_SOC_NOPM, 9, 0, wm8958_aif_ev,
- SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_POST_PMD),
- SND_SOC_DAPM_AIF_IN_E("AIF1DAC1R", NULL, 0,
-- WM8994_POWER_MANAGEMENT_5, 8, 0, wm8958_aif_ev,
-+ SND_SOC_NOPM, 8, 0, wm8958_aif_ev,
- SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_POST_PMD),
-
- SND_SOC_DAPM_AIF_OUT("AIF1ADC2L", NULL,
-- 0, WM8994_POWER_MANAGEMENT_4, 11, 0),
-+ 0, SND_SOC_NOPM, 11, 0),
- SND_SOC_DAPM_AIF_OUT("AIF1ADC2R", NULL,
-- 0, WM8994_POWER_MANAGEMENT_4, 10, 0),
-+ 0, SND_SOC_NOPM, 10, 0),
- SND_SOC_DAPM_AIF_IN_E("AIF1DAC2L", NULL, 0,
-- WM8994_POWER_MANAGEMENT_5, 11, 0, wm8958_aif_ev,
-+ SND_SOC_NOPM, 11, 0, wm8958_aif_ev,
- SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_POST_PMD),
- SND_SOC_DAPM_AIF_IN_E("AIF1DAC2R", NULL, 0,
-- WM8994_POWER_MANAGEMENT_5, 10, 0, wm8958_aif_ev,
-+ SND_SOC_NOPM, 10, 0, wm8958_aif_ev,
- SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_POST_PMD),
-
- SND_SOC_DAPM_MIXER("AIF1ADC1L Mixer", SND_SOC_NOPM, 0, 0,
-@@ -1403,14 +1571,14 @@ SND_SOC_DAPM_MIXER("DAC1R Mixer", SND_SOC_NOPM, 0, 0,
- dac1r_mix, ARRAY_SIZE(dac1r_mix)),
-
- SND_SOC_DAPM_AIF_OUT("AIF2ADCL", NULL, 0,
-- WM8994_POWER_MANAGEMENT_4, 13, 0),
-+ SND_SOC_NOPM, 13, 0),
- SND_SOC_DAPM_AIF_OUT("AIF2ADCR", NULL, 0,
-- WM8994_POWER_MANAGEMENT_4, 12, 0),
-+ SND_SOC_NOPM, 12, 0),
- SND_SOC_DAPM_AIF_IN_E("AIF2DACL", NULL, 0,
-- WM8994_POWER_MANAGEMENT_5, 13, 0, wm8958_aif_ev,
-+ SND_SOC_NOPM, 13, 0, wm8958_aif_ev,
- SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD),
- SND_SOC_DAPM_AIF_IN_E("AIF2DACR", NULL, 0,
-- WM8994_POWER_MANAGEMENT_5, 12, 0, wm8958_aif_ev,
-+ SND_SOC_NOPM, 12, 0, wm8958_aif_ev,
- SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD),
-
- SND_SOC_DAPM_AIF_IN("AIF1DACDAT", "AIF1 Playback", 0, SND_SOC_NOPM, 0, 0),
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0097-dmaengine-at_hdmac-remove-clear-on-read-in-atc_dosta.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0097-dmaengine-at_hdmac-remove-clear-on-read-in-atc_dosta.patch
deleted file mode 100644
index b670af2..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0097-dmaengine-at_hdmac-remove-clear-on-read-in-atc_dosta.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 461507ae293668a6dd1543092d2506fa4524d8ec Mon Sep 17 00:00:00 2001
-From: Nicolas Ferre <nicolas.ferre at atmel.com>
-Date: Mon, 16 Apr 2012 14:46:30 +0200
-Subject: [PATCH 097/165] dmaengine: at_hdmac: remove clear-on-read in
- atc_dostart()
-
-commit ed8b0d67f33518a16c6b2450fe5ebebf180c2d04 upstream.
-
-This loop on EBCISR register was designed to clear IRQ sources before enabling
-a DMA channel. This register is clear-on-read so a race condition can appear if
-another channel is already active and has just finished its transfer.
-Removing this read on EBCISR is fixing the issue as there is no case where an IRQ
-could be pending: we already make sure that this register is drained at probe()
-time and during resume.
-
-Signed-off-by: Nicolas Ferre <nicolas.ferre at atmel.com>
-Signed-off-by: Vinod Koul <vinod.koul at linux.intel.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/dma/at_hdmac.c | 4 ----
- 1 files changed, 0 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/dma/at_hdmac.c b/drivers/dma/at_hdmac.c
-index a60adbf..79dcf6e 100644
---- a/drivers/dma/at_hdmac.c
-+++ b/drivers/dma/at_hdmac.c
-@@ -239,10 +239,6 @@ static void atc_dostart(struct at_dma_chan *atchan, struct at_desc *first)
-
- vdbg_dump_regs(atchan);
-
-- /* clear any pending interrupt */
-- while (dma_readl(atdma, EBCISR))
-- cpu_relax();
--
- channel_writel(atchan, SADDR, 0);
- channel_writel(atchan, DADDR, 0);
- channel_writel(atchan, CTRLA, 0);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0098-sched-Fix-OOPS-when-build_sched_domains-percpu-alloc.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0098-sched-Fix-OOPS-when-build_sched_domains-percpu-alloc.patch
deleted file mode 100644
index 91318c4..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0098-sched-Fix-OOPS-when-build_sched_domains-percpu-alloc.patch
+++ /dev/null
@@ -1,85 +0,0 @@
-From 9568d8a7012a9ca0fafc44570e46030d60f22a91 Mon Sep 17 00:00:00 2001
-From: "he, bo" <bo.he at intel.com>
-Date: Wed, 25 Apr 2012 19:59:21 +0800
-Subject: [PATCH 098/165] sched: Fix OOPS when build_sched_domains() percpu
- allocation fails
-
-commit fb2cf2c660971bea0ad86a9a5c19ad39eab61344 upstream.
-
-Under extreme memory used up situations, percpu allocation
-might fail. We hit it when system goes to suspend-to-ram,
-causing a kworker panic:
-
- EIP: [<c124411a>] build_sched_domains+0x23a/0xad0
- Kernel panic - not syncing: Fatal exception
- Pid: 3026, comm: kworker/u:3
- 3.0.8-137473-gf42fbef #1
-
- Call Trace:
- [<c18cc4f2>] panic+0x66/0x16c
- [...]
- [<c1244c37>] partition_sched_domains+0x287/0x4b0
- [<c12a77be>] cpuset_update_active_cpus+0x1fe/0x210
- [<c123712d>] cpuset_cpu_inactive+0x1d/0x30
- [...]
-
-With this fix applied build_sched_domains() will return -ENOMEM and
-the suspend attempt fails.
-
-Signed-off-by: he, bo <bo.he at intel.com>
-Reviewed-by: Zhang, Yanmin <yanmin.zhang at intel.com>
-Reviewed-by: Srivatsa S. Bhat <srivatsa.bhat at linux.vnet.ibm.com>
-Signed-off-by: Peter Zijlstra <a.p.zijlstra at chello.nl>
-Cc: Linus Torvalds <torvalds at linux-foundation.org>
-Cc: Andrew Morton <akpm at linux-foundation.org>
-Link: http://lkml.kernel.org/r/1335355161.5892.17.camel@hebo
-[ So, we fail to deallocate a CPU because we cannot allocate RAM :-/
- I don't like that kind of sad behavior but nevertheless it should
- not crash under high memory load. ]
-Signed-off-by: Ingo Molnar <mingo at kernel.org>
-[bwh: Backported to 3.2: change filename]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- kernel/sched.c | 22 ++++++++++++++++------
- 1 files changed, 16 insertions(+), 6 deletions(-)
-
-diff --git a/kernel/sched.c b/kernel/sched.c
-index d6b149c..106a3b8 100644
---- a/kernel/sched.c
-+++ b/kernel/sched.c
-@@ -7605,16 +7605,26 @@ static void __sdt_free(const struct cpumask *cpu_map)
- struct sd_data *sdd = &tl->data;
-
- for_each_cpu(j, cpu_map) {
-- struct sched_domain *sd = *per_cpu_ptr(sdd->sd, j);
-- if (sd && (sd->flags & SD_OVERLAP))
-- free_sched_groups(sd->groups, 0);
-- kfree(*per_cpu_ptr(sdd->sd, j));
-- kfree(*per_cpu_ptr(sdd->sg, j));
-- kfree(*per_cpu_ptr(sdd->sgp, j));
-+ struct sched_domain *sd;
-+
-+ if (sdd->sd) {
-+ sd = *per_cpu_ptr(sdd->sd, j);
-+ if (sd && (sd->flags & SD_OVERLAP))
-+ free_sched_groups(sd->groups, 0);
-+ kfree(*per_cpu_ptr(sdd->sd, j));
-+ }
-+
-+ if (sdd->sg)
-+ kfree(*per_cpu_ptr(sdd->sg, j));
-+ if (sdd->sgp)
-+ kfree(*per_cpu_ptr(sdd->sgp, j));
- }
- free_percpu(sdd->sd);
-+ sdd->sd = NULL;
- free_percpu(sdd->sg);
-+ sdd->sg = NULL;
- free_percpu(sdd->sgp);
-+ sdd->sgp = NULL;
- }
- }
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0099-tracing-Fix-stacktrace-of-latency-tracers-irqsoff-an.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0099-tracing-Fix-stacktrace-of-latency-tracers-irqsoff-an.patch
deleted file mode 100644
index 191d6b8..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0099-tracing-Fix-stacktrace-of-latency-tracers-irqsoff-an.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From e2b214ae8c691f0fd7aeb572dda62401b9221ee4 Mon Sep 17 00:00:00 2001
-From: Steven Rostedt <srostedt at redhat.com>
-Date: Thu, 19 Apr 2012 10:31:47 -0400
-Subject: [PATCH 099/165] tracing: Fix stacktrace of latency tracers (irqsoff
- and friends)
-
-commit db4c75cbebd7e5910cd3bcb6790272fcc3042857 upstream.
-
-While debugging a latency with someone on IRC (mirage335) on #linux-rt (OFTC),
-we discovered that the stacktrace output of the latency tracers
-(preemptirqsoff) was empty.
-
-This bug was caused by the creation of the dynamic length stack trace
-again (like commit 12b5da3 "tracing: Fix ent_size in trace output" was).
-
-This bug is caused by the latency tracers requiring the next event
-to determine the time between the current event and the next. But by
-grabbing the next event, the iter->ent_size is set to the next event
-instead of the current one. As the stacktrace event is the last event,
-this makes the ent_size zero and causes nothing to be printed for
-the stack trace. The dynamic stacktrace uses the ent_size to determine
-how much of the stack can be printed. The ent_size of zero means
-no stack.
-
-The simple fix is to save the iter->ent_size before finding the next event.
-
-Note, mirage335 asked to remain anonymous from LKML and git, so I will
-not add the Reported-by and Tested-by tags, even though he did report
-the issue and tested the fix.
-
-Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- kernel/trace/trace_output.c | 5 +++++
- 1 files changed, 5 insertions(+), 0 deletions(-)
-
-diff --git a/kernel/trace/trace_output.c b/kernel/trace/trace_output.c
-index 5199930..1dcf253 100644
---- a/kernel/trace/trace_output.c
-+++ b/kernel/trace/trace_output.c
-@@ -638,6 +638,8 @@ int trace_print_lat_context(struct trace_iterator *iter)
- {
- u64 next_ts;
- int ret;
-+ /* trace_find_next_entry will reset ent_size */
-+ int ent_size = iter->ent_size;
- struct trace_seq *s = &iter->seq;
- struct trace_entry *entry = iter->ent,
- *next_entry = trace_find_next_entry(iter, NULL,
-@@ -646,6 +648,9 @@ int trace_print_lat_context(struct trace_iterator *iter)
- unsigned long abs_usecs = ns2usecs(iter->ts - iter->tr->time_start);
- unsigned long rel_usecs;
-
-+ /* Restore the original ent_size */
-+ iter->ent_size = ent_size;
-+
- if (!next_entry)
- next_ts = iter->ts;
- rel_usecs = ns2usecs(next_ts - iter->ts);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0100-hwmon-fam15h_power-fix-bogus-values-with-current-BIO.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0100-hwmon-fam15h_power-fix-bogus-values-with-current-BIO.patch
deleted file mode 100644
index b09d80f..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0100-hwmon-fam15h_power-fix-bogus-values-with-current-BIO.patch
+++ /dev/null
@@ -1,93 +0,0 @@
-From 9c1a0e414fb67307c1e9e7c7a81f5aa32fb3165d Mon Sep 17 00:00:00 2001
-From: Andre Przywara <andre.przywara at amd.com>
-Date: Mon, 9 Apr 2012 18:16:34 -0400
-Subject: [PATCH 100/165] hwmon: fam15h_power: fix bogus values with current
- BIOSes
-
-commit 00250ec90963b7ef6678438888f3244985ecde14 upstream.
-
-Newer BKDG[1] versions recommend a different initialization value for
-the running average range register in the northbridge. This improves
-the power reading by avoiding counter saturations resulting in bogus
-values for anything below about 80% of TDP power consumption.
-Updated BIOSes will have this new value set up from the beginning,
-but meanwhile we correct this value ourselves.
-This needs to be done on all northbridges, even on those where the
-driver itself does not register at.
-
-This fixes the driver on all current machines to provide proper
-values for idle load.
-
-[1]
-http://support.amd.com/us/Processor_TechDocs/42301_15h_Mod_00h-0Fh_BKDG.pdf
-Chapter 3.8: D18F5xE0 Processor TDP Running Average (p. 452)
-
-Signed-off-by: Andre Przywara <andre.przywara at amd.com>
-Acked-by: Jean Delvare <khali at linux-fr.org>
-[guenter.roeck at ericsson.com: Removed unnecessary return statement]
-Signed-off-by: Guenter Roeck <guenter.roeck at ericsson.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/hwmon/fam15h_power.c | 39 +++++++++++++++++++++++++++++++++++++++
- 1 files changed, 39 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/hwmon/fam15h_power.c b/drivers/hwmon/fam15h_power.c
-index 930370d..99aaf2e 100644
---- a/drivers/hwmon/fam15h_power.c
-+++ b/drivers/hwmon/fam15h_power.c
-@@ -122,6 +122,38 @@ static bool __devinit fam15h_power_is_internal_node0(struct pci_dev *f4)
- return true;
- }
-
-+/*
-+ * Newer BKDG versions have an updated recommendation on how to properly
-+ * initialize the running average range (was: 0xE, now: 0x9). This avoids
-+ * counter saturations resulting in bogus power readings.
-+ * We correct this value ourselves to cope with older BIOSes.
-+ */
-+static void __devinit tweak_runavg_range(struct pci_dev *pdev)
-+{
-+ u32 val;
-+ const struct pci_device_id affected_device = {
-+ PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_15H_NB_F4) };
-+
-+ /*
-+ * let this quirk apply only to the current version of the
-+ * northbridge, since future versions may change the behavior
-+ */
-+ if (!pci_match_id(&affected_device, pdev))
-+ return;
-+
-+ pci_bus_read_config_dword(pdev->bus,
-+ PCI_DEVFN(PCI_SLOT(pdev->devfn), 5),
-+ REG_TDP_RUNNING_AVERAGE, &val);
-+ if ((val & 0xf) != 0xe)
-+ return;
-+
-+ val &= ~0xf;
-+ val |= 0x9;
-+ pci_bus_write_config_dword(pdev->bus,
-+ PCI_DEVFN(PCI_SLOT(pdev->devfn), 5),
-+ REG_TDP_RUNNING_AVERAGE, val);
-+}
-+
- static void __devinit fam15h_power_init_data(struct pci_dev *f4,
- struct fam15h_power_data *data)
- {
-@@ -155,6 +187,13 @@ static int __devinit fam15h_power_probe(struct pci_dev *pdev,
- struct device *dev;
- int err;
-
-+ /*
-+ * though we ignore every other northbridge, we still have to
-+ * do the tweaking on _each_ node in MCM processors as the counters
-+ * are working hand-in-hand
-+ */
-+ tweak_runavg_range(pdev);
-+
- if (!fam15h_power_is_internal_node0(pdev)) {
- err = -ENODEV;
- goto exit;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0101-hwmon-fam15h_power-Fix-pci_device_id-array.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0101-hwmon-fam15h_power-Fix-pci_device_id-array.patch
deleted file mode 100644
index 44a4282..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0101-hwmon-fam15h_power-Fix-pci_device_id-array.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From 1acc2cf212b6af4889076ca69cc08f56ddb02161 Mon Sep 17 00:00:00 2001
-From: Guenter Roeck <guenter.roeck at ericsson.com>
-Date: Wed, 25 Apr 2012 13:44:20 -0700
-Subject: [PATCH 101/165] hwmon: (fam15h_power) Fix pci_device_id array
-
-commit c3e40a9972428d6e2d8e287ed0233a57a218c30f upstream.
-
-pci_match_id() takes an *array* of IDs which must be properly zero-
-terminated.
-
-Reported-by: Ben Hutchings <ben at decadent.org.uk>
-Signed-off-by: Guenter Roeck <guenter.roeck at ericsson.com>
-Acked-by: Jean Delvare <khali at linux-fr.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/hwmon/fam15h_power.c | 9 ++++++---
- 1 files changed, 6 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/hwmon/fam15h_power.c b/drivers/hwmon/fam15h_power.c
-index 99aaf2e..9a4c3ab 100644
---- a/drivers/hwmon/fam15h_power.c
-+++ b/drivers/hwmon/fam15h_power.c
-@@ -128,17 +128,20 @@ static bool __devinit fam15h_power_is_internal_node0(struct pci_dev *f4)
- * counter saturations resulting in bogus power readings.
- * We correct this value ourselves to cope with older BIOSes.
- */
-+static DEFINE_PCI_DEVICE_TABLE(affected_device) = {
-+ { PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_15H_NB_F4) },
-+ { 0 }
-+};
-+
- static void __devinit tweak_runavg_range(struct pci_dev *pdev)
- {
- u32 val;
-- const struct pci_device_id affected_device = {
-- PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_15H_NB_F4) };
-
- /*
- * let this quirk apply only to the current version of the
- * northbridge, since future versions may change the behavior
- */
-- if (!pci_match_id(&affected_device, pdev))
-+ if (!pci_match_id(affected_device, pdev))
- return;
-
- pci_bus_read_config_dword(pdev->bus,
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0102-dell-laptop-Terminate-quirks-list-properly.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0102-dell-laptop-Terminate-quirks-list-properly.patch
deleted file mode 100644
index 69d4748..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0102-dell-laptop-Terminate-quirks-list-properly.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From d53a6237d32c4a220706555cb5ac5bfa439495fc Mon Sep 17 00:00:00 2001
-From: Martin Nyhus <martin.nyhus at gmx.com>
-Date: Thu, 15 Mar 2012 18:25:48 +0100
-Subject: [PATCH 102/165] dell-laptop: Terminate quirks list properly
-
-commit d62d421b071b08249361044d8e56c8b5c3ed6aa7 upstream.
-
-Add missing DMI_NONE entry to end of the quirks list so
-dmi_check_system() won't read past the end of the list.
-
-Signed-off-by: Martin Nyhus <martin.nyhus at gmx.com>
-Signed-off-by: Matthew Garrett <mjg at redhat.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/platform/x86/dell-laptop.c | 1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/platform/x86/dell-laptop.c b/drivers/platform/x86/dell-laptop.c
-index 92e42d4..1d3bcce 100644
---- a/drivers/platform/x86/dell-laptop.c
-+++ b/drivers/platform/x86/dell-laptop.c
-@@ -211,6 +211,7 @@ static struct dmi_system_id __devinitdata dell_quirks[] = {
- },
- .driver_data = &quirk_dell_vostro_v130,
- },
-+ { }
- };
-
- static struct calling_interface_buffer *buffer;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0103-drm-radeon-kms-need-to-set-up-ss-on-DP-bridges-as-we.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0103-drm-radeon-kms-need-to-set-up-ss-on-DP-bridges-as-we.patch
deleted file mode 100644
index f444f58..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0103-drm-radeon-kms-need-to-set-up-ss-on-DP-bridges-as-we.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 8c6a4eb92e96889d0a8666eb32fd43307db5e554 Mon Sep 17 00:00:00 2001
-From: Alex Deucher <alexander.deucher at amd.com>
-Date: Fri, 27 Apr 2012 17:18:59 -0400
-Subject: [PATCH 103/165] drm/radeon/kms: need to set up ss on DP bridges as
- well
-
-commit 700698e7c303f5095107c62a81872c2c3dad1702 upstream.
-
-Makes Nutmeg DP to VGA bridges work for me.
-
-Fixes:
-https://bugs.freedesktop.org/show_bug.cgi?id=42490
-
-Noticed by Jerome Glisse (after weeks of debugging).
-
-Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
-Signed-off-by: Dave Airlie <airlied at redhat.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpu/drm/radeon/atombios_crtc.c | 4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/gpu/drm/radeon/atombios_crtc.c b/drivers/gpu/drm/radeon/atombios_crtc.c
-index b30081f..757c549 100644
---- a/drivers/gpu/drm/radeon/atombios_crtc.c
-+++ b/drivers/gpu/drm/radeon/atombios_crtc.c
-@@ -917,8 +917,8 @@ static void atombios_crtc_set_pll(struct drm_crtc *crtc, struct drm_display_mode
- break;
- }
-
-- if (radeon_encoder->active_device &
-- (ATOM_DEVICE_LCD_SUPPORT | ATOM_DEVICE_DFP_SUPPORT)) {
-+ if ((radeon_encoder->active_device & (ATOM_DEVICE_LCD_SUPPORT | ATOM_DEVICE_DFP_SUPPORT)) ||
-+ (radeon_encoder_get_dp_bridge_encoder_id(encoder) != ENCODER_OBJECT_ID_NONE)) {
- struct radeon_encoder_atom_dig *dig = radeon_encoder->enc_priv;
- struct drm_connector *connector =
- radeon_get_connector_for_encoder(encoder);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0104-drm-i915-handle-input-output-sdvo-timings-separately.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0104-drm-i915-handle-input-output-sdvo-timings-separately.patch
deleted file mode 100644
index 36df16e..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0104-drm-i915-handle-input-output-sdvo-timings-separately.patch
+++ /dev/null
@@ -1,182 +0,0 @@
-From 5ac88fb769b43e9c87ffe472fa1ed93f0dd1e526 Mon Sep 17 00:00:00 2001
-From: Daniel Vetter <daniel.vetter at ffwll.ch>
-Date: Sun, 1 Apr 2012 19:16:18 +0200
-Subject: [PATCH 104/165] drm/i915: handle input/output sdvo timings
- separately in mode_set
-
-commit 6651819b4b4fc3caa6964c5d825eb4bb996f3905 upstream.
-
-We seem to have a decent confusion between the output timings and the
-input timings of the sdvo encoder. If I understand the code correctly,
-we use the original mode unchanged for the output timings, safe for
-the lvds case. And we should use the adjusted mode for input timings.
-
-Clarify the situation by adding an explicit output_dtd to the sdvo
-mode_set function and streamline the code-flow by moving the input and
-output mode setting in the sdvo encode together.
-
-Furthermore testing showed that the sdvo input timing needs the
-unadjusted dotclock, the sdvo chip will automatically compute the
-required pixel multiplier to get a dotclock above 100 MHz.
-
-Fix this up when converting a drm mode to an sdvo dtd.
-
-This regression was introduced in
-
-commit c74696b9c890074c1e1ee3d7496fc71eb3680ced
-Author: Pavel Roskin <proski at gnu.org>
-Date: Thu Sep 2 14:46:34 2010 -0400
-
- i915: revert some checks added by commit 32aad86f
-
-particularly the following hunk:
-
-> diff --git a/drivers/gpu/drm/i915/intel_sdvo.c
-> b/drivers/gpu/drm/i915/intel_sdvo.c
-> index 093e914..62d22ae 100644
-> --- a/drivers/gpu/drm/i915/intel_sdvo.c
-> +++ b/drivers/gpu/drm/i915/intel_sdvo.c
-> @@ -1122,11 +1123,9 @@ static void intel_sdvo_mode_set(struct drm_encoder *encoder,
->
-> /* We have tried to get input timing in mode_fixup, and filled into
-> adjusted_mode */
-> - if (intel_sdvo->is_tv || intel_sdvo->is_lvds) {
-> - intel_sdvo_get_dtd_from_mode(&input_dtd, adjusted_mode);
-> + intel_sdvo_get_dtd_from_mode(&input_dtd, adjusted_mode);
-> + if (intel_sdvo->is_tv || intel_sdvo->is_lvds)
-> input_dtd.part2.sdvo_flags = intel_sdvo->sdvo_flags;
-> - } else
-> - intel_sdvo_get_dtd_from_mode(&input_dtd, mode);
->
-> /* If it's a TV, we already set the output timing in mode_fixup.
-> * Otherwise, the output timing is equal to the input timing.
-
-Due to questions raised in review, below a more elaborate analysis of
-the bug at hand:
-
-Sdvo seems to have two timings, one is the output timing which will be
-sent over whatever is connected on the other side of the sdvo chip (panel,
-hdmi screen, tv), the other is the input timing which will be generated by
-the gmch pipe. It looks like sdvo is expected to scale between the two.
-
-To make things slightly more complicated, we have a bunch of special
-cases:
-- For lvds panel we always use a fixed output timing, namely
- intel_sdvo->sdvo_lvds_fixed_mode, hence that special case.
-- Sdvo has an interface to generate a preferred input timing for a given
- output timing. This is the confusing thing that I've tried to clear up
- with the follow-on patches.
-- A special requirement is that the input pixel clock needs to be between
- 100MHz and 200MHz (likely to keep it within the electromechanical design
- range of PCIe), 270MHz on later gen4+. Lower pixel clocks are
- doubled/quadrupled.
-
-The thing this patch tries to fix is that the pipe needs to be
-explicitly instructed to double/quadruple the pixels and needs the
-correspondingly higher pixel clock, whereas the sdvo adaptor seems to
-do that itself and needs the unadjusted pixel clock. For the sdvo
-encode side we already set the pixel mutliplier with a different
-command (0x21).
-
-This patch tries to fix this mess by:
-- Keeping the output mode timing in the unadjusted plain mode, safe
- for the lvds case.
-- Storing the input timing in the adjusted_mode with the adjusted
- pixel clock. This way we don't need to frob around with the core
- crtc mode set code.
-- Fixing up the pixelclock when constructing the sdvo dtd timing
- struct. This is why the first hunk of the patch is an integral part
- of the series.
-- Dropping the is_tv special case because input_dtd is equivalent to
- adjusted_mode after these changes. Follow-up patches clear this up
- further (by simply ripping out intel_sdvo->input_dtd because it's
- not needed).
-
-v2: Extend commit message with an in-depth bug analysis.
-
-Reported-and-Tested-by: Bernard Blackham <b-linuxgit at largestprime.net>
-Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=48157
-Reviewed-by: Jesse Barnes <jbarnes at virtuousgeek.org>
-Signed-off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
-[bwh: Indented the hunk quoted above so quilt doesn't try to apply it]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpu/drm/i915/intel_sdvo.c | 34 ++++++++++++++++++----------------
- 1 files changed, 18 insertions(+), 16 deletions(-)
-
-diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c
-index e334ec3..0a877dd 100644
---- a/drivers/gpu/drm/i915/intel_sdvo.c
-+++ b/drivers/gpu/drm/i915/intel_sdvo.c
-@@ -731,6 +731,7 @@ static void intel_sdvo_get_dtd_from_mode(struct intel_sdvo_dtd *dtd,
- uint16_t width, height;
- uint16_t h_blank_len, h_sync_len, v_blank_len, v_sync_len;
- uint16_t h_sync_offset, v_sync_offset;
-+ int mode_clock;
-
- width = mode->crtc_hdisplay;
- height = mode->crtc_vdisplay;
-@@ -745,7 +746,11 @@ static void intel_sdvo_get_dtd_from_mode(struct intel_sdvo_dtd *dtd,
- h_sync_offset = mode->crtc_hsync_start - mode->crtc_hblank_start;
- v_sync_offset = mode->crtc_vsync_start - mode->crtc_vblank_start;
-
-- dtd->part1.clock = mode->clock / 10;
-+ mode_clock = mode->clock;
-+ mode_clock /= intel_mode_get_pixel_multiplier(mode) ?: 1;
-+ mode_clock /= 10;
-+ dtd->part1.clock = mode_clock;
-+
- dtd->part1.h_active = width & 0xff;
- dtd->part1.h_blank = h_blank_len & 0xff;
- dtd->part1.h_high = (((width >> 8) & 0xf) << 4) |
-@@ -997,7 +1002,7 @@ static void intel_sdvo_mode_set(struct drm_encoder *encoder,
- struct intel_sdvo *intel_sdvo = to_intel_sdvo(encoder);
- u32 sdvox;
- struct intel_sdvo_in_out_map in_out;
-- struct intel_sdvo_dtd input_dtd;
-+ struct intel_sdvo_dtd input_dtd, output_dtd;
- int pixel_multiplier = intel_mode_get_pixel_multiplier(adjusted_mode);
- int rate;
-
-@@ -1022,20 +1027,13 @@ static void intel_sdvo_mode_set(struct drm_encoder *encoder,
- intel_sdvo->attached_output))
- return;
-
-- /* We have tried to get input timing in mode_fixup, and filled into
-- * adjusted_mode.
-- */
-- if (intel_sdvo->is_tv || intel_sdvo->is_lvds) {
-- input_dtd = intel_sdvo->input_dtd;
-- } else {
-- /* Set the output timing to the screen */
-- if (!intel_sdvo_set_target_output(intel_sdvo,
-- intel_sdvo->attached_output))
-- return;
--
-- intel_sdvo_get_dtd_from_mode(&input_dtd, adjusted_mode);
-- (void) intel_sdvo_set_output_timing(intel_sdvo, &input_dtd);
-- }
-+ /* lvds has a special fixed output timing. */
-+ if (intel_sdvo->is_lvds)
-+ intel_sdvo_get_dtd_from_mode(&output_dtd,
-+ intel_sdvo->sdvo_lvds_fixed_mode);
-+ else
-+ intel_sdvo_get_dtd_from_mode(&output_dtd, mode);
-+ (void) intel_sdvo_set_output_timing(intel_sdvo, &output_dtd);
-
- /* Set the input timing to the screen. Assume always input 0. */
- if (!intel_sdvo_set_target_input(intel_sdvo))
-@@ -1053,6 +1051,10 @@ static void intel_sdvo_mode_set(struct drm_encoder *encoder,
- !intel_sdvo_set_tv_format(intel_sdvo))
- return;
-
-+ /* We have tried to get input timing in mode_fixup, and filled into
-+ * adjusted_mode.
-+ */
-+ intel_sdvo_get_dtd_from_mode(&input_dtd, adjusted_mode);
- (void) intel_sdvo_set_input_timing(intel_sdvo, &input_dtd);
-
- switch (pixel_multiplier) {
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0105-drm-i915-relative_constants_mode-race-fix.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0105-drm-i915-relative_constants_mode-race-fix.patch
deleted file mode 100644
index e074c3b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0105-drm-i915-relative_constants_mode-race-fix.patch
+++ /dev/null
@@ -1,78 +0,0 @@
-From c1f4cbb7a7af1e7a02e2516bd82215fd79b9edbd Mon Sep 17 00:00:00 2001
-From: Ben Widawsky <ben at bwidawsk.net>
-Date: Mon, 12 Dec 2011 19:21:57 -0800
-Subject: [PATCH 105/165] drm/i915: relative_constants_mode race fix
-
-commit e2971bdab2b761683353da383c0fd5ac704d1cca upstream.
-
-dev_priv keeps track of the current addressing mode that gets set at
-execbuffer time. Unfortunately the existing code was doing this before
-acquiring struct_mutex which leaves a race with another thread also
-doing an execbuffer. If that wasn't bad enough, relocate_slow drops
-struct_mutex which opens a much more likely error where another thread
-comes in and modifies the state while relocate_slow is being slow.
-
-The solution here is to just defer setting this state until we
-absolutely need it, and we know we'll have struct_mutex for the
-remainder of our code path.
-
-v2: Keith noticed a bug in the original patch.
-
-Signed-off-by: Ben Widawsky <ben at bwidawsk.net>
-Reviewed-by: Daniel Vetter <daniel.vetter at ffwll.ch>
-Signed-off-by: Keith Packard <keithp at keithp.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpu/drm/i915/i915_gem_execbuffer.c | 29 +++++++++++++++------------
- 1 files changed, 16 insertions(+), 13 deletions(-)
-
-diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
-index b9da890..7d64f83 100644
---- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c
-+++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
-@@ -1033,19 +1033,6 @@ i915_gem_do_execbuffer(struct drm_device *dev, void *data,
- if (INTEL_INFO(dev)->gen > 5 &&
- mode == I915_EXEC_CONSTANTS_REL_SURFACE)
- return -EINVAL;
--
-- ret = intel_ring_begin(ring, 4);
-- if (ret)
-- return ret;
--
-- intel_ring_emit(ring, MI_NOOP);
-- intel_ring_emit(ring, MI_LOAD_REGISTER_IMM(1));
-- intel_ring_emit(ring, INSTPM);
-- intel_ring_emit(ring,
-- I915_EXEC_CONSTANTS_MASK << 16 | mode);
-- intel_ring_advance(ring);
--
-- dev_priv->relative_constants_mode = mode;
- }
- break;
- default:
-@@ -1176,6 +1163,22 @@ i915_gem_do_execbuffer(struct drm_device *dev, void *data,
- }
- }
-
-+ if (ring == &dev_priv->ring[RCS] &&
-+ mode != dev_priv->relative_constants_mode) {
-+ ret = intel_ring_begin(ring, 4);
-+ if (ret)
-+ goto err;
-+
-+ intel_ring_emit(ring, MI_NOOP);
-+ intel_ring_emit(ring, MI_LOAD_REGISTER_IMM(1));
-+ intel_ring_emit(ring, INSTPM);
-+ intel_ring_emit(ring,
-+ I915_EXEC_CONSTANTS_MASK << 16 | mode);
-+ intel_ring_advance(ring);
-+
-+ dev_priv->relative_constants_mode = mode;
-+ }
-+
- trace_i915_gem_ring_dispatch(ring, seqno);
-
- exec_start = batch_obj->gtt_offset + args->batch_start_offset;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0106-drm-i915-Force-sync-command-ordering-Gen6.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0106-drm-i915-Force-sync-command-ordering-Gen6.patch
deleted file mode 100644
index e59e166..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0106-drm-i915-Force-sync-command-ordering-Gen6.patch
+++ /dev/null
@@ -1,98 +0,0 @@
-From 04029d7c030fddf168b85e9f39f76fcc282b768b Mon Sep 17 00:00:00 2001
-From: Ben Widawsky <ben at bwidawsk.net>
-Date: Mon, 12 Dec 2011 19:21:58 -0800
-Subject: [PATCH 106/165] drm/i915: Force sync command ordering (Gen6+)
-
-commit 84f9f938be4156e4baea466688bd6abae1c9e6ba upstream.
-
-The docs say this is required for Gen7, and since the bit was added for
-Gen6, we are also setting it there pit pf paranoia. Particularly as
-Chris points out, if PIPE_CONTROL counts as a 3d state packet.
-
-This was found through doc inspection by Ken and applies to Gen6+;
-
-Reported-by: Kenneth Graunke <kenneth at whitecape.org>
-Signed-off-by: Ben Widawsky <ben at bwidawsk.net>
-Reviewed-by: Chris Wilson <chris at chris-wilson.co.uk>
-Reviewed-by: Daniel Vetter <daniel.vetter at ffwll.ch>
-Reviewed-by: Eric Anholt <eric at anholt.net>
-Signed-off-by: Keith Packard <keithp at keithp.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpu/drm/i915/i915_gem_execbuffer.c | 9 +++++++--
- drivers/gpu/drm/i915/i915_reg.h | 1 +
- drivers/gpu/drm/i915/intel_ringbuffer.c | 5 +++++
- 3 files changed, 13 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
-index 7d64f83..ed00f29 100644
---- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c
-+++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
-@@ -984,6 +984,7 @@ i915_gem_do_execbuffer(struct drm_device *dev, void *data,
- struct intel_ring_buffer *ring;
- u32 exec_start, exec_len;
- u32 seqno;
-+ u32 mask;
- int ret, mode, i;
-
- if (!i915_gem_check_execbuffer(args)) {
-@@ -1021,6 +1022,7 @@ i915_gem_do_execbuffer(struct drm_device *dev, void *data,
- }
-
- mode = args->flags & I915_EXEC_CONSTANTS_MASK;
-+ mask = I915_EXEC_CONSTANTS_MASK;
- switch (mode) {
- case I915_EXEC_CONSTANTS_REL_GENERAL:
- case I915_EXEC_CONSTANTS_ABSOLUTE:
-@@ -1033,6 +1035,10 @@ i915_gem_do_execbuffer(struct drm_device *dev, void *data,
- if (INTEL_INFO(dev)->gen > 5 &&
- mode == I915_EXEC_CONSTANTS_REL_SURFACE)
- return -EINVAL;
-+
-+ /* The HW changed the meaning on this bit on gen6 */
-+ if (INTEL_INFO(dev)->gen >= 6)
-+ mask &= ~I915_EXEC_CONSTANTS_REL_SURFACE;
- }
- break;
- default:
-@@ -1172,8 +1178,7 @@ i915_gem_do_execbuffer(struct drm_device *dev, void *data,
- intel_ring_emit(ring, MI_NOOP);
- intel_ring_emit(ring, MI_LOAD_REGISTER_IMM(1));
- intel_ring_emit(ring, INSTPM);
-- intel_ring_emit(ring,
-- I915_EXEC_CONSTANTS_MASK << 16 | mode);
-+ intel_ring_emit(ring, mask << 16 | mode);
- intel_ring_advance(ring);
-
- dev_priv->relative_constants_mode = mode;
-diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
-index 2f99fd4..beca72f 100644
---- a/drivers/gpu/drm/i915/i915_reg.h
-+++ b/drivers/gpu/drm/i915/i915_reg.h
-@@ -442,6 +442,7 @@
- #define INSTPM_AGPBUSY_DIS (1<<11) /* gen3: when disabled, pending interrupts
- will not assert AGPBUSY# and will only
- be delivered when out of C3. */
-+#define INSTPM_FORCE_ORDERING (1<<7) /* GEN6+ */
- #define ACTHD 0x020c8
- #define FW_BLC 0x020d8
- #define FW_BLC2 0x020dc
-diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
-index 8673581..3c9c086 100644
---- a/drivers/gpu/drm/i915/intel_ringbuffer.c
-+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
-@@ -414,6 +414,11 @@ static int init_render_ring(struct intel_ring_buffer *ring)
- return ret;
- }
-
-+ if (INTEL_INFO(dev)->gen >= 6) {
-+ I915_WRITE(INSTPM,
-+ INSTPM_FORCE_ORDERING << 16 | INSTPM_FORCE_ORDERING);
-+ }
-+
- return ret;
- }
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0107-drm-i915-Set-the-Stencil-Cache-eviction-policy-to-no.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0107-drm-i915-Set-the-Stencil-Cache-eviction-policy-to-no.patch
deleted file mode 100644
index 9b0ecd8..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0107-drm-i915-Set-the-Stencil-Cache-eviction-policy-to-no.patch
+++ /dev/null
@@ -1,69 +0,0 @@
-From 623fa1ce0a50adf5f5e1133e459b5d725a378a6d Mon Sep 17 00:00:00 2001
-From: Kenneth Graunke <kenneth at whitecape.org>
-Date: Fri, 27 Apr 2012 12:44:41 -0700
-Subject: [PATCH 107/165] drm/i915: Set the Stencil Cache eviction policy to
- non-LRA mode.
-
-commit 3a69ddd6f872180b6f61fda87152b37202118fbc upstream.
-
-Clearing bit 5 of CACHE_MODE_0 is necessary to prevent GPU hangs in
-OpenGL programs such as Google MapsGL, Google Earth, and gzdoom when
-using separate stencil buffers. Without it, the GPU tries to use the
-LRA eviction policy, which isn't supported. This was supposed to be off
-by default, but seems to be on for many machines.
-
-This cannot be done in gen6_init_clock_gating with most of the other
-workaround bits; the render ring needs to exist. Otherwise, the
-register write gets dropped on the floor (one printk will show it
-changed, but a second printk immediately following shows the value
-reverts to the old one).
-
-Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=47535
-Cc: Rob Castle <futuredub at gmail.com>
-Cc: Eric Appleman <erappleman at gmail.com>
-Cc: aaron667 at gmx.net
-Cc: Keith Packard <keithp at keithp.com>
-Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
-Reviewed-by: Daniel Vetter <daniel.vetter at ffwll.ch>
-Acked-by: Daniel Vetter <daniel.vetter at ffwll.ch>
-Signed-off-by: Dave Airlie <airlied at redhat.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpu/drm/i915/i915_reg.h | 1 +
- drivers/gpu/drm/i915/intel_ringbuffer.c | 8 ++++++++
- 2 files changed, 9 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
-index beca72f..cbe5a88 100644
---- a/drivers/gpu/drm/i915/i915_reg.h
-+++ b/drivers/gpu/drm/i915/i915_reg.h
-@@ -523,6 +523,7 @@
- #define CM0_MASK_SHIFT 16
- #define CM0_IZ_OPT_DISABLE (1<<6)
- #define CM0_ZR_OPT_DISABLE (1<<5)
-+#define CM0_STC_EVICT_DISABLE_LRA_SNB (1<<5)
- #define CM0_DEPTH_EVICT_DISABLE (1<<4)
- #define CM0_COLOR_EVICT_DISABLE (1<<3)
- #define CM0_DEPTH_WRITE_DISABLE (1<<1)
-diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
-index 3c9c086..273f403 100644
---- a/drivers/gpu/drm/i915/intel_ringbuffer.c
-+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
-@@ -417,6 +417,14 @@ static int init_render_ring(struct intel_ring_buffer *ring)
- if (INTEL_INFO(dev)->gen >= 6) {
- I915_WRITE(INSTPM,
- INSTPM_FORCE_ORDERING << 16 | INSTPM_FORCE_ORDERING);
-+
-+ /* From the Sandybridge PRM, volume 1 part 3, page 24:
-+ * "If this bit is set, STCunit will have LRA as replacement
-+ * policy. [...] This bit must be reset. LRA replacement
-+ * policy is not supported."
-+ */
-+ I915_WRITE(CACHE_MODE_0,
-+ CM0_STC_EVICT_DISABLE_LRA_SNB << CM0_MASK_SHIFT);
- }
-
- return ret;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0108-drm-i915-fix-integer-overflow-in-i915_gem_execbuffer.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0108-drm-i915-fix-integer-overflow-in-i915_gem_execbuffer.patch
deleted file mode 100644
index b726175..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0108-drm-i915-fix-integer-overflow-in-i915_gem_execbuffer.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 8f2f90a48393e092ca95f2a6e112baada0db0a3c Mon Sep 17 00:00:00 2001
-From: Xi Wang <xi.wang at gmail.com>
-Date: Mon, 23 Apr 2012 04:06:41 -0400
-Subject: [PATCH 108/165] drm/i915: fix integer overflow in
- i915_gem_execbuffer2()
-
-commit ed8cd3b2cd61004cab85380c52b1817aca1ca49b upstream.
-
-On 32-bit systems, a large args->buffer_count from userspace via ioctl
-may overflow the allocation size, leading to out-of-bounds access.
-
-This vulnerability was introduced in commit 8408c282 ("drm/i915:
-First try a normal large kmalloc for the temporary exec buffers").
-
-Signed-off-by: Xi Wang <xi.wang at gmail.com>
-Reviewed-by: Chris Wilson <chris at chris-wilson.co.uk>
-Signed-off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
-[bwh: Backported to 3.2: adjust context]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpu/drm/i915/i915_gem_execbuffer.c | 3 ++-
- 1 files changed, 2 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
-index ed00f29..5b6fe31 100644
---- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c
-+++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
-@@ -1322,7 +1322,8 @@ i915_gem_execbuffer2(struct drm_device *dev, void *data,
- struct drm_i915_gem_exec_object2 *exec2_list = NULL;
- int ret;
-
-- if (args->buffer_count < 1) {
-+ if (args->buffer_count < 1 ||
-+ args->buffer_count > UINT_MAX / sizeof(*exec2_list)) {
- DRM_ERROR("execbuf2 with %d buffers\n", args->buffer_count);
- return -EINVAL;
- }
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0109-drm-i915-fix-integer-overflow-in-i915_gem_do_execbuf.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0109-drm-i915-fix-integer-overflow-in-i915_gem_do_execbuf.patch
deleted file mode 100644
index c60b3d2..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0109-drm-i915-fix-integer-overflow-in-i915_gem_do_execbuf.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From f69e43d73be5dc1a1b1550c12c06f32d7eeee9b5 Mon Sep 17 00:00:00 2001
-From: Xi Wang <xi.wang at gmail.com>
-Date: Mon, 23 Apr 2012 04:06:42 -0400
-Subject: [PATCH 109/165] drm/i915: fix integer overflow in
- i915_gem_do_execbuffer()
-
-commit 44afb3a04391a74309d16180d1e4f8386fdfa745 upstream.
-
-On 32-bit systems, a large args->num_cliprects from userspace via ioctl
-may overflow the allocation size, leading to out-of-bounds access.
-
-This vulnerability was introduced in commit 432e58ed ("drm/i915: Avoid
-allocation for execbuffer object list").
-
-Signed-off-by: Xi Wang <xi.wang at gmail.com>
-Reviewed-by: Chris Wilson <chris at chris-wilson.co.uk>
-Signed-off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpu/drm/i915/i915_gem_execbuffer.c | 5 +++++
- 1 files changed, 5 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
-index 5b6fe31..a6c2f7a 100644
---- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c
-+++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
-@@ -1057,6 +1057,11 @@ i915_gem_do_execbuffer(struct drm_device *dev, void *data,
- return -EINVAL;
- }
-
-+ if (args->num_cliprects > UINT_MAX / sizeof(*cliprects)) {
-+ DRM_DEBUG("execbuf with %u cliprects\n",
-+ args->num_cliprects);
-+ return -EINVAL;
-+ }
- cliprects = kmalloc(args->num_cliprects * sizeof(*cliprects),
- GFP_KERNEL);
- if (cliprects == NULL) {
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0110-nl80211-ensure-interface-is-up-in-various-APIs.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0110-nl80211-ensure-interface-is-up-in-various-APIs.patch
deleted file mode 100644
index ced33cf..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0110-nl80211-ensure-interface-is-up-in-various-APIs.patch
+++ /dev/null
@@ -1,152 +0,0 @@
-From aed930a331278472b81fbea0dfbdbe27672d41cd Mon Sep 17 00:00:00 2001
-From: Johannes Berg <johannes.berg at intel.com>
-Date: Mon, 2 Apr 2012 10:51:55 +0200
-Subject: [PATCH 110/165] nl80211: ensure interface is up in various APIs
-
-commit 2b5f8b0b44e17e625cfba1e7b88db44f4dcc0441 upstream.
-[backported by Ben Greear]
-
-The nl80211 handling code should ensure as much as
-it can that the interface is in a valid state, it
-can certainly ensure the interface is running.
-
-Not doing so can cause calls through mac80211 into
-the driver that result in warnings and unspecified
-behaviour in the driver.
-
-Reported-by: Ben Greear <greearb at candelatech.com>
-Signed-off-by: Johannes Berg <johannes.berg at intel.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Ben Greear <greearb at candelatech.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/wireless/nl80211.c | 29 +++++++++++++++++------------
- 1 files changed, 17 insertions(+), 12 deletions(-)
-
-diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
-index ffafda5..c06c365 100644
---- a/net/wireless/nl80211.c
-+++ b/net/wireless/nl80211.c
-@@ -1258,6 +1258,11 @@ static int nl80211_set_wiphy(struct sk_buff *skb, struct genl_info *info)
- goto bad_res;
- }
-
-+ if (!netif_running(netdev)) {
-+ result = -ENETDOWN;
-+ goto bad_res;
-+ }
-+
- nla_for_each_nested(nl_txq_params,
- info->attrs[NL80211_ATTR_WIPHY_TXQ_PARAMS],
- rem_txq_params) {
-@@ -5944,7 +5949,7 @@ static struct genl_ops nl80211_ops[] = {
- .doit = nl80211_get_key,
- .policy = nl80211_policy,
- .flags = GENL_ADMIN_PERM,
-- .internal_flags = NL80211_FLAG_NEED_NETDEV |
-+ .internal_flags = NL80211_FLAG_NEED_NETDEV_UP |
- NL80211_FLAG_NEED_RTNL,
- },
- {
-@@ -5976,7 +5981,7 @@ static struct genl_ops nl80211_ops[] = {
- .policy = nl80211_policy,
- .flags = GENL_ADMIN_PERM,
- .doit = nl80211_addset_beacon,
-- .internal_flags = NL80211_FLAG_NEED_NETDEV |
-+ .internal_flags = NL80211_FLAG_NEED_NETDEV_UP |
- NL80211_FLAG_NEED_RTNL,
- },
- {
-@@ -5984,7 +5989,7 @@ static struct genl_ops nl80211_ops[] = {
- .policy = nl80211_policy,
- .flags = GENL_ADMIN_PERM,
- .doit = nl80211_addset_beacon,
-- .internal_flags = NL80211_FLAG_NEED_NETDEV |
-+ .internal_flags = NL80211_FLAG_NEED_NETDEV_UP |
- NL80211_FLAG_NEED_RTNL,
- },
- {
-@@ -6008,7 +6013,7 @@ static struct genl_ops nl80211_ops[] = {
- .doit = nl80211_set_station,
- .policy = nl80211_policy,
- .flags = GENL_ADMIN_PERM,
-- .internal_flags = NL80211_FLAG_NEED_NETDEV |
-+ .internal_flags = NL80211_FLAG_NEED_NETDEV_UP |
- NL80211_FLAG_NEED_RTNL,
- },
- {
-@@ -6024,7 +6029,7 @@ static struct genl_ops nl80211_ops[] = {
- .doit = nl80211_del_station,
- .policy = nl80211_policy,
- .flags = GENL_ADMIN_PERM,
-- .internal_flags = NL80211_FLAG_NEED_NETDEV |
-+ .internal_flags = NL80211_FLAG_NEED_NETDEV_UP |
- NL80211_FLAG_NEED_RTNL,
- },
- {
-@@ -6057,7 +6062,7 @@ static struct genl_ops nl80211_ops[] = {
- .doit = nl80211_del_mpath,
- .policy = nl80211_policy,
- .flags = GENL_ADMIN_PERM,
-- .internal_flags = NL80211_FLAG_NEED_NETDEV |
-+ .internal_flags = NL80211_FLAG_NEED_NETDEV_UP |
- NL80211_FLAG_NEED_RTNL,
- },
- {
-@@ -6065,7 +6070,7 @@ static struct genl_ops nl80211_ops[] = {
- .doit = nl80211_set_bss,
- .policy = nl80211_policy,
- .flags = GENL_ADMIN_PERM,
-- .internal_flags = NL80211_FLAG_NEED_NETDEV |
-+ .internal_flags = NL80211_FLAG_NEED_NETDEV_UP |
- NL80211_FLAG_NEED_RTNL,
- },
- {
-@@ -6091,7 +6096,7 @@ static struct genl_ops nl80211_ops[] = {
- .doit = nl80211_get_mesh_config,
- .policy = nl80211_policy,
- /* can be retrieved by unprivileged users */
-- .internal_flags = NL80211_FLAG_NEED_NETDEV |
-+ .internal_flags = NL80211_FLAG_NEED_NETDEV_UP |
- NL80211_FLAG_NEED_RTNL,
- },
- {
-@@ -6224,7 +6229,7 @@ static struct genl_ops nl80211_ops[] = {
- .doit = nl80211_setdel_pmksa,
- .policy = nl80211_policy,
- .flags = GENL_ADMIN_PERM,
-- .internal_flags = NL80211_FLAG_NEED_NETDEV |
-+ .internal_flags = NL80211_FLAG_NEED_NETDEV_UP |
- NL80211_FLAG_NEED_RTNL,
- },
- {
-@@ -6232,7 +6237,7 @@ static struct genl_ops nl80211_ops[] = {
- .doit = nl80211_setdel_pmksa,
- .policy = nl80211_policy,
- .flags = GENL_ADMIN_PERM,
-- .internal_flags = NL80211_FLAG_NEED_NETDEV |
-+ .internal_flags = NL80211_FLAG_NEED_NETDEV_UP |
- NL80211_FLAG_NEED_RTNL,
- },
- {
-@@ -6240,7 +6245,7 @@ static struct genl_ops nl80211_ops[] = {
- .doit = nl80211_flush_pmksa,
- .policy = nl80211_policy,
- .flags = GENL_ADMIN_PERM,
-- .internal_flags = NL80211_FLAG_NEED_NETDEV |
-+ .internal_flags = NL80211_FLAG_NEED_NETDEV_UP |
- NL80211_FLAG_NEED_RTNL,
- },
- {
-@@ -6328,7 +6333,7 @@ static struct genl_ops nl80211_ops[] = {
- .doit = nl80211_set_wds_peer,
- .policy = nl80211_policy,
- .flags = GENL_ADMIN_PERM,
-- .internal_flags = NL80211_FLAG_NEED_NETDEV |
-+ .internal_flags = NL80211_FLAG_NEED_NETDEV_UP |
- NL80211_FLAG_NEED_RTNL,
- },
- {
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0111-ALSA-HDA-Add-external-mic-quirk-for-Asus-Zenbook-UX3.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0111-ALSA-HDA-Add-external-mic-quirk-for-Asus-Zenbook-UX3.patch
deleted file mode 100644
index 86dbcea..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0111-ALSA-HDA-Add-external-mic-quirk-for-Asus-Zenbook-UX3.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 12bea9197ab5065d6eebf8a3746d486acc05963d Mon Sep 17 00:00:00 2001
-From: David Henningsson <david.henningsson at canonical.com>
-Date: Fri, 20 Apr 2012 10:01:46 +0200
-Subject: [PATCH 111/165] ALSA: HDA: Add external mic quirk for Asus Zenbook
- UX31E
-
-commit 5ac57550f279c3d991ef0b398681bcaca18169f7 upstream.
-
-According to the reporter, external mic starts to work if the
-laptop-dmic model is used. According to BIOS pin config, all
-pins are consistent with the alc269vb_laptop_dmic fixup, except
-for the external mic, which is not present.
-
-BugLink: https://bugs.launchpad.net/bugs/950490
-Signed-off-by: David Henningsson <david.henningsson at canonical.com>
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-[bwh: Backported to 3.2: adjust context]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- sound/pci/hda/patch_realtek.c | 1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
-index dc8a6fc..0bc5a46 100644
---- a/sound/pci/hda/patch_realtek.c
-+++ b/sound/pci/hda/patch_realtek.c
-@@ -5032,6 +5032,7 @@ static const struct alc_fixup alc269_fixups[] = {
- };
-
- static const struct snd_pci_quirk alc269_fixup_tbl[] = {
-+ SND_PCI_QUIRK(0x1043, 0x1427, "Asus Zenbook UX31E", ALC269VB_FIXUP_DMIC),
- SND_PCI_QUIRK(0x1043, 0x1a13, "Asus G73Jw", ALC269_FIXUP_ASUS_G73JW),
- SND_PCI_QUIRK(0x1043, 0x16e3, "ASUS UX50", ALC269_FIXUP_STEREO_DMIC),
- SND_PCI_QUIRK(0x1043, 0x831a, "ASUS P901", ALC269_FIXUP_STEREO_DMIC),
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0112-USB-cdc-wdm-fix-race-leading-leading-to-memory-corru.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0112-USB-cdc-wdm-fix-race-leading-leading-to-memory-corru.patch
deleted file mode 100644
index 2167487..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0112-USB-cdc-wdm-fix-race-leading-leading-to-memory-corru.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-From 5fe563d7ee35fedc59e2e8b230b31394aee32651 Mon Sep 17 00:00:00 2001
-From: Oliver Neukum <oliver at neukum.org>
-Date: Thu, 26 Apr 2012 21:59:10 +0200
-Subject: [PATCH 112/165] USB: cdc-wdm: fix race leading leading to memory
- corruption
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit 5c22837adca7c30b66121cf18ad3e160134268d4 upstream.
-
-This patch fixes a race whereby a pointer to a buffer
-would be overwritten while the buffer was in use leading
-to a double free and a memory leak. This causes crashes.
-This bug was introduced in 2.6.34
-
-Signed-off-by: Oliver Neukum <oneukum at suse.de>
-Tested-by: Bjørn Mork <bjorn at mork.no>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/class/cdc-wdm.c | 7 +++++--
- 1 files changed, 5 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/usb/class/cdc-wdm.c b/drivers/usb/class/cdc-wdm.c
-index 9eb71d8..2db0327 100644
---- a/drivers/usb/class/cdc-wdm.c
-+++ b/drivers/usb/class/cdc-wdm.c
-@@ -108,8 +108,9 @@ static void wdm_out_callback(struct urb *urb)
- spin_lock(&desc->iuspin);
- desc->werr = urb->status;
- spin_unlock(&desc->iuspin);
-- clear_bit(WDM_IN_USE, &desc->flags);
- kfree(desc->outbuf);
-+ desc->outbuf = NULL;
-+ clear_bit(WDM_IN_USE, &desc->flags);
- wake_up(&desc->wait);
- }
-
-@@ -312,7 +313,7 @@ static ssize_t wdm_write
- if (we < 0)
- return -EIO;
-
-- desc->outbuf = buf = kmalloc(count, GFP_KERNEL);
-+ buf = kmalloc(count, GFP_KERNEL);
- if (!buf) {
- rv = -ENOMEM;
- goto outnl;
-@@ -376,10 +377,12 @@ static ssize_t wdm_write
- req->wIndex = desc->inum;
- req->wLength = cpu_to_le16(count);
- set_bit(WDM_IN_USE, &desc->flags);
-+ desc->outbuf = buf;
-
- rv = usb_submit_urb(desc->command, GFP_KERNEL);
- if (rv < 0) {
- kfree(buf);
-+ desc->outbuf = NULL;
- clear_bit(WDM_IN_USE, &desc->flags);
- dev_err(&desc->intf->dev, "Tx URB error: %d\n", rv);
- } else {
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0113-USB-EHCI-fix-crash-during-suspend-on-ASUS-computers.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0113-USB-EHCI-fix-crash-during-suspend-on-ASUS-computers.patch
deleted file mode 100644
index ddf3dcf..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0113-USB-EHCI-fix-crash-during-suspend-on-ASUS-computers.patch
+++ /dev/null
@@ -1,97 +0,0 @@
-From 37377ccfbb44158128be2372cc9088b6c670e440 Mon Sep 17 00:00:00 2001
-From: Alan Stern <stern at rowland.harvard.edu>
-Date: Tue, 24 Apr 2012 14:07:22 -0400
-Subject: [PATCH 113/165] USB: EHCI: fix crash during suspend on ASUS
- computers
-
-commit 151b61284776be2d6f02d48c23c3625678960b97 upstream.
-
-This patch (as1545) fixes a problem affecting several ASUS computers:
-The machine crashes or corrupts memory when going into suspend if the
-ehci-hcd driver is bound to any controllers. Users have been forced
-to unbind or unload ehci-hcd before putting their systems to sleep.
-
-After extensive testing, it was determined that the machines don't
-like going into suspend when any EHCI controllers are in the PCI D3
-power state. Presumably this is a firmware bug, but there's nothing
-we can do about it except to avoid putting the controllers in D3
-during system sleep.
-
-The patch adds a new flag to indicate whether the problem is present,
-and avoids changing the controller's power state if the flag is set.
-Runtime suspend is unaffected; this matters only for system suspend.
-However as a side effect, the controller will not respond to remote
-wakeup requests while the system is asleep. Hence USB wakeup is not
-functional -- but of course, this is already true in the current state
-of affairs.
-
-This fixes Bugzilla #42728.
-
-Signed-off-by: Alan Stern <stern at rowland.harvard.edu>
-Tested-by: Steven Rostedt <rostedt at goodmis.org>
-Tested-by: Andrey Rahmatullin <wrar at wrar.name>
-Tested-by: Oleksij Rempel (fishor) <bug-track at fisher-privat.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-[bwh: Backported to 3.2: adjust context]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/core/hcd-pci.c | 9 +++++++++
- drivers/usb/host/ehci-pci.c | 8 ++++++++
- include/linux/usb/hcd.h | 2 ++
- 3 files changed, 19 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/usb/core/hcd-pci.c b/drivers/usb/core/hcd-pci.c
-index 61d08dd..5f1404a 100644
---- a/drivers/usb/core/hcd-pci.c
-+++ b/drivers/usb/core/hcd-pci.c
-@@ -495,6 +495,15 @@ static int hcd_pci_suspend_noirq(struct device *dev)
-
- pci_save_state(pci_dev);
-
-+ /*
-+ * Some systems crash if an EHCI controller is in D3 during
-+ * a sleep transition. We have to leave such controllers in D0.
-+ */
-+ if (hcd->broken_pci_sleep) {
-+ dev_dbg(dev, "Staying in PCI D0\n");
-+ return retval;
-+ }
-+
- /* If the root hub is dead rather than suspended, disallow remote
- * wakeup. usb_hc_died() should ensure that both hosts are marked as
- * dying, so we only need to check the primary roothub.
-diff --git a/drivers/usb/host/ehci-pci.c b/drivers/usb/host/ehci-pci.c
-index f4b627d..971d312 100644
---- a/drivers/usb/host/ehci-pci.c
-+++ b/drivers/usb/host/ehci-pci.c
-@@ -144,6 +144,14 @@ static int ehci_pci_setup(struct usb_hcd *hcd)
- hcd->has_tt = 1;
- tdi_reset(ehci);
- }
-+ if (pdev->subsystem_vendor == PCI_VENDOR_ID_ASUSTEK) {
-+ /* EHCI #1 or #2 on 6 Series/C200 Series chipset */
-+ if (pdev->device == 0x1c26 || pdev->device == 0x1c2d) {
-+ ehci_info(ehci, "broken D3 during system sleep on ASUS\n");
-+ hcd->broken_pci_sleep = 1;
-+ device_set_wakeup_capable(&pdev->dev, false);
-+ }
-+ }
- break;
- case PCI_VENDOR_ID_TDI:
- if (pdev->device == PCI_DEVICE_ID_TDI_EHCI) {
-diff --git a/include/linux/usb/hcd.h b/include/linux/usb/hcd.h
-index 03354d5..64cec8d 100644
---- a/include/linux/usb/hcd.h
-+++ b/include/linux/usb/hcd.h
-@@ -128,6 +128,8 @@ struct usb_hcd {
- unsigned wireless:1; /* Wireless USB HCD */
- unsigned authorized_default:1;
- unsigned has_tt:1; /* Integrated TT in root hub */
-+ unsigned broken_pci_sleep:1; /* Don't put the
-+ controller in PCI-D3 for system sleep */
-
- int irq; /* irq allocated */
- void __iomem *regs; /* device memory/io */
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0114-USB-gadget-storage-gadgets-send-wrong-error-code-for.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0114-USB-gadget-storage-gadgets-send-wrong-error-code-for.patch
deleted file mode 100644
index 52f75c8..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0114-USB-gadget-storage-gadgets-send-wrong-error-code-for.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From e2ac51161592388a8e729fda87a35c467e56eb7b Mon Sep 17 00:00:00 2001
-From: Alan Stern <stern at rowland.harvard.edu>
-Date: Wed, 11 Apr 2012 16:09:10 -0400
-Subject: [PATCH 114/165] USB: gadget: storage gadgets send wrong error code
- for unknown commands
-
-commit c85dcdac5852295cf6822f5c4331a6ddab72581f upstream.
-
-This patch (as1539) fixes a minor bug in the mass-storage gadget
-drivers. When an unknown command is received, the error code sent
-back is "Invalid Field in CDB" rather than "Invalid Command". This is
-because the bitmask of CDB bytes allowed to be nonzero is incorrect.
-
-When handling an unknown command, we don't care which command bytes
-are nonzero. All the bits in the mask should be set, not just eight
-of them.
-
-Signed-off-by: Alan Stern <stern at rowland.harvard.edu>
-CC: <Michal Nazarewicz <mina86 at mina86.com>
-Signed-off-by: Felipe Balbi <balbi at ti.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/gadget/f_mass_storage.c | 2 +-
- drivers/usb/gadget/file_storage.c | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/usb/gadget/f_mass_storage.c b/drivers/usb/gadget/f_mass_storage.c
-index 1a6f415..a5570b6 100644
---- a/drivers/usb/gadget/f_mass_storage.c
-+++ b/drivers/usb/gadget/f_mass_storage.c
-@@ -2182,7 +2182,7 @@ unknown_cmnd:
- common->data_size_from_cmnd = 0;
- sprintf(unknown, "Unknown x%02x", common->cmnd[0]);
- reply = check_command(common, common->cmnd_size,
-- DATA_DIR_UNKNOWN, 0xff, 0, unknown);
-+ DATA_DIR_UNKNOWN, ~0, 0, unknown);
- if (reply == 0) {
- common->curlun->sense_data = SS_INVALID_COMMAND;
- reply = -EINVAL;
-diff --git a/drivers/usb/gadget/file_storage.c b/drivers/usb/gadget/file_storage.c
-index 17a7047..41056e2 100644
---- a/drivers/usb/gadget/file_storage.c
-+++ b/drivers/usb/gadget/file_storage.c
-@@ -2569,7 +2569,7 @@ static int do_scsi_command(struct fsg_dev *fsg)
- fsg->data_size_from_cmnd = 0;
- sprintf(unknown, "Unknown x%02x", fsg->cmnd[0]);
- if ((reply = check_command(fsg, fsg->cmnd_size,
-- DATA_DIR_UNKNOWN, 0xff, 0, unknown)) == 0) {
-+ DATA_DIR_UNKNOWN, ~0, 0, unknown)) == 0) {
- fsg->curlun->sense_data = SS_INVALID_COMMAND;
- reply = -EINVAL;
- }
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0115-usb-gadget-dummy-do-not-call-pullup-on-udc_stop.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0115-usb-gadget-dummy-do-not-call-pullup-on-udc_stop.patch
deleted file mode 100644
index 9338500..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0115-usb-gadget-dummy-do-not-call-pullup-on-udc_stop.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 19436e7f0105b1503a6c0685311c287f094f0a88 Mon Sep 17 00:00:00 2001
-From: Felipe Balbi <balbi at ti.com>
-Date: Wed, 18 Apr 2012 13:59:30 +0300
-Subject: [PATCH 115/165] usb: gadget: dummy: do not call pullup() on
- udc_stop()
-
-commit 15b120d67019d691e4389372967332d74a80522a upstream.
-
-pullup() is already called properly by udc-core.c and
-there's no need to call it from udc_stop(), in fact that
-will cause issues.
-
-Reviewed-by: Alexander Shishkin <alexander.shishkin at linux.intel.com>
-Acked-by: Alan Stern <stern at rowland.harvard.edu>
-Signed-off-by: Felipe Balbi <balbi at ti.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/gadget/dummy_hcd.c | 1 -
- 1 files changed, 0 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/usb/gadget/dummy_hcd.c b/drivers/usb/gadget/dummy_hcd.c
-index db815c2..9098642 100644
---- a/drivers/usb/gadget/dummy_hcd.c
-+++ b/drivers/usb/gadget/dummy_hcd.c
-@@ -924,7 +924,6 @@ static int dummy_udc_stop(struct usb_gadget *g,
-
- dum->driver = NULL;
-
-- dummy_pullup(&dum->gadget, 0);
- return 0;
- }
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0116-usb-gadget-uvc-uvc_request_data-length-field-must-be.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0116-usb-gadget-uvc-uvc_request_data-length-field-must-be.patch
deleted file mode 100644
index 3f5d159..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0116-usb-gadget-uvc-uvc_request_data-length-field-must-be.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From c50d42c9d902b99077153d177a0fba885220552f Mon Sep 17 00:00:00 2001
-From: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
-Date: Tue, 24 Apr 2012 11:29:42 +0200
-Subject: [PATCH 116/165] usb gadget: uvc: uvc_request_data::length field must
- be signed
-
-commit 6f6543f53f9ce136e01d7114bf6f0818ca54fb41 upstream.
-
-The field is used to pass the UVC request data length, but can also be
-used to signal an error when setting it to a negative value. Switch from
-unsigned int to __s32.
-
-Reported-by: Fernandez Gonzalo <gfernandez at copreci.es>
-Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/gadget/uvc.h | 2 +-
- drivers/usb/gadget/uvc_v4l2.c | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/usb/gadget/uvc.h b/drivers/usb/gadget/uvc.h
-index bc78c60..ca4e03a 100644
---- a/drivers/usb/gadget/uvc.h
-+++ b/drivers/usb/gadget/uvc.h
-@@ -28,7 +28,7 @@
-
- struct uvc_request_data
- {
-- unsigned int length;
-+ __s32 length;
- __u8 data[60];
- };
-
-diff --git a/drivers/usb/gadget/uvc_v4l2.c b/drivers/usb/gadget/uvc_v4l2.c
-index f6e083b..54d7ca5 100644
---- a/drivers/usb/gadget/uvc_v4l2.c
-+++ b/drivers/usb/gadget/uvc_v4l2.c
-@@ -39,7 +39,7 @@ uvc_send_response(struct uvc_device *uvc, struct uvc_request_data *data)
- if (data->length < 0)
- return usb_ep_set_halt(cdev->gadget->ep0);
-
-- req->length = min(uvc->event_length, data->length);
-+ req->length = min_t(unsigned int, uvc->event_length, data->length);
- req->zero = data->length < uvc->event_length;
- req->dma = DMA_ADDR_INVALID;
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0117-pipes-add-a-packetized-pipe-mode-for-writing.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0117-pipes-add-a-packetized-pipe-mode-for-writing.patch
deleted file mode 100644
index e25c9d0..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0117-pipes-add-a-packetized-pipe-mode-for-writing.patch
+++ /dev/null
@@ -1,143 +0,0 @@
-From 458c33bdfc9d408f94038a4db0544ab348d0d96d Mon Sep 17 00:00:00 2001
-From: Linus Torvalds <torvalds at linux-foundation.org>
-Date: Sun, 29 Apr 2012 13:12:42 -0700
-Subject: [PATCH 117/165] pipes: add a "packetized pipe" mode for writing
-
-commit 9883035ae7edef3ec62ad215611cb8e17d6a1a5d upstream.
-
-The actual internal pipe implementation is already really about
-individual packets (called "pipe buffers"), and this simply exposes that
-as a special packetized mode.
-
-When we are in the packetized mode (marked by O_DIRECT as suggested by
-Alan Cox), a write() on a pipe will not merge the new data with previous
-writes, so each write will get a pipe buffer of its own. The pipe
-buffer is then marked with the PIPE_BUF_FLAG_PACKET flag, which in turn
-will tell the reader side to break the read at that boundary (and throw
-away any partial packet contents that do not fit in the read buffer).
-
-End result: as long as you do writes less than PIPE_BUF in size (so that
-the pipe doesn't have to split them up), you can now treat the pipe as a
-packet interface, where each read() system call will read one packet at
-a time. You can just use a sufficiently big read buffer (PIPE_BUF is
-sufficient, since bigger than that doesn't guarantee atomicity anyway),
-and the return value of the read() will naturally give you the size of
-the packet.
-
-NOTE! We do not support zero-sized packets, and zero-sized reads and
-writes to a pipe continue to be no-ops. Also note that big packets will
-currently be split at write time, but that the size at which that
-happens is not really specified (except that it's bigger than PIPE_BUF).
-Currently that limit is the system page size, but we might want to
-explicitly support bigger packets some day.
-
-The main user for this is going to be the autofs packet interface,
-allowing us to stop having to care so deeply about exact packet sizes
-(which have had bugs with 32/64-bit compatibility modes). But user
-space can create packetized pipes with "pipe2(fd, O_DIRECT)", which will
-fail with an EINVAL on kernels that do not support this interface.
-
-Tested-by: Michael Tokarev <mjt at tls.msk.ru>
-Cc: Alan Cox <alan at lxorguk.ukuu.org.uk>
-Cc: David Miller <davem at davemloft.net>
-Cc: Ian Kent <raven at themaw.net>
-Cc: Thomas Meyer <thomas at m3y3r.de>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/pipe.c | 31 +++++++++++++++++++++++++++++--
- include/linux/pipe_fs_i.h | 1 +
- 2 files changed, 30 insertions(+), 2 deletions(-)
-
-diff --git a/fs/pipe.c b/fs/pipe.c
-index 4065f07..05ed5ca 100644
---- a/fs/pipe.c
-+++ b/fs/pipe.c
-@@ -345,6 +345,16 @@ static const struct pipe_buf_operations anon_pipe_buf_ops = {
- .get = generic_pipe_buf_get,
- };
-
-+static const struct pipe_buf_operations packet_pipe_buf_ops = {
-+ .can_merge = 0,
-+ .map = generic_pipe_buf_map,
-+ .unmap = generic_pipe_buf_unmap,
-+ .confirm = generic_pipe_buf_confirm,
-+ .release = anon_pipe_buf_release,
-+ .steal = generic_pipe_buf_steal,
-+ .get = generic_pipe_buf_get,
-+};
-+
- static ssize_t
- pipe_read(struct kiocb *iocb, const struct iovec *_iov,
- unsigned long nr_segs, loff_t pos)
-@@ -406,6 +416,13 @@ redo:
- ret += chars;
- buf->offset += chars;
- buf->len -= chars;
-+
-+ /* Was it a packet buffer? Clean up and exit */
-+ if (buf->flags & PIPE_BUF_FLAG_PACKET) {
-+ total_len = chars;
-+ buf->len = 0;
-+ }
-+
- if (!buf->len) {
- buf->ops = NULL;
- ops->release(pipe, buf);
-@@ -458,6 +475,11 @@ redo:
- return ret;
- }
-
-+static inline int is_packetized(struct file *file)
-+{
-+ return (file->f_flags & O_DIRECT) != 0;
-+}
-+
- static ssize_t
- pipe_write(struct kiocb *iocb, const struct iovec *_iov,
- unsigned long nr_segs, loff_t ppos)
-@@ -592,6 +614,11 @@ redo2:
- buf->ops = &anon_pipe_buf_ops;
- buf->offset = 0;
- buf->len = chars;
-+ buf->flags = 0;
-+ if (is_packetized(filp)) {
-+ buf->ops = &packet_pipe_buf_ops;
-+ buf->flags = PIPE_BUF_FLAG_PACKET;
-+ }
- pipe->nrbufs = ++bufs;
- pipe->tmp_page = NULL;
-
-@@ -1012,7 +1039,7 @@ struct file *create_write_pipe(int flags)
- goto err_dentry;
- f->f_mapping = inode->i_mapping;
-
-- f->f_flags = O_WRONLY | (flags & O_NONBLOCK);
-+ f->f_flags = O_WRONLY | (flags & (O_NONBLOCK | O_DIRECT));
- f->f_version = 0;
-
- return f;
-@@ -1056,7 +1083,7 @@ int do_pipe_flags(int *fd, int flags)
- int error;
- int fdw, fdr;
-
-- if (flags & ~(O_CLOEXEC | O_NONBLOCK))
-+ if (flags & ~(O_CLOEXEC | O_NONBLOCK | O_DIRECT))
- return -EINVAL;
-
- fw = create_write_pipe(flags);
-diff --git a/include/linux/pipe_fs_i.h b/include/linux/pipe_fs_i.h
-index 77257c9..0072a53 100644
---- a/include/linux/pipe_fs_i.h
-+++ b/include/linux/pipe_fs_i.h
-@@ -8,6 +8,7 @@
- #define PIPE_BUF_FLAG_LRU 0x01 /* page is on the LRU */
- #define PIPE_BUF_FLAG_ATOMIC 0x02 /* was atomically mapped */
- #define PIPE_BUF_FLAG_GIFT 0x04 /* page is a gift */
-+#define PIPE_BUF_FLAG_PACKET 0x08 /* read() as a packet */
-
- /**
- * struct pipe_buffer - a linux kernel pipe buffer
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0118-autofs-make-the-autofsv5-packet-file-descriptor-use-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0118-autofs-make-the-autofsv5-packet-file-descriptor-use-.patch
deleted file mode 100644
index 26baefc..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0118-autofs-make-the-autofsv5-packet-file-descriptor-use-.patch
+++ /dev/null
@@ -1,117 +0,0 @@
-From 06cd49dc3fc506eec882f7cf754eacd9804a79cd Mon Sep 17 00:00:00 2001
-From: Linus Torvalds <torvalds at linux-foundation.org>
-Date: Sun, 29 Apr 2012 13:30:08 -0700
-Subject: [PATCH 118/165] autofs: make the autofsv5 packet file descriptor use
- a packetized pipe
-
-commit 64f371bc3107e69efce563a3d0f0e6880de0d537 upstream.
-
-The autofs packet size has had a very unfortunate size problem on x86:
-because the alignment of 'u64' differs in 32-bit and 64-bit modes, and
-because the packet data was not 8-byte aligned, the size of the autofsv5
-packet structure differed between 32-bit and 64-bit modes despite
-looking otherwise identical (300 vs 304 bytes respectively).
-
-We first fixed that up by making the 64-bit compat mode know about this
-problem in commit a32744d4abae ("autofs: work around unhappy compat
-problem on x86-64"), and that made a 32-bit 'systemd' work happily on a
-64-bit kernel because everything then worked the same way as on a 32-bit
-kernel.
-
-But it turned out that 'automount' had actually known and worked around
-this problem in user space, so fixing the kernel to do the proper 32-bit
-compatibility handling actually *broke* 32-bit automount on a 64-bit
-kernel, because it knew that the packet sizes were wrong and expected
-those incorrect sizes.
-
-As a result, we ended up reverting that compatibility mode fix, and
-thus breaking systemd again, in commit fcbf94b9dedd.
-
-With both automount and systemd doing a single read() system call, and
-verifying that they get *exactly* the size they expect but using
-different sizes, it seemed that fixing one of them inevitably seemed to
-break the other. At one point, a patch I seriously considered applying
-from Michael Tokarev did a "strcmp()" to see if it was automount that
-was doing the operation. Ugly, ugly.
-
-However, a prettier solution exists now thanks to the packetized pipe
-mode. By marking the communication pipe as being packetized (by simply
-setting the O_DIRECT flag), we can always just write the bigger packet
-size, and if user-space does a smaller read, it will just get that
-partial end result and the extra alignment padding will simply be thrown
-away.
-
-This makes both automount and systemd happy, since they now get the size
-they asked for, and the kernel side of autofs simply no longer needs to
-care - it could pad out the packet arbitrarily.
-
-Of course, if there is some *other* user of autofs (please, please,
-please tell me it ain't so - and we haven't heard of any) that tries to
-read the packets with multiple writes, that other user will now be
-broken - the whole point of the packetized mode is that one system call
-gets exactly one packet, and you cannot read a packet in pieces.
-
-Tested-by: Michael Tokarev <mjt at tls.msk.ru>
-Cc: Alan Cox <alan at lxorguk.ukuu.org.uk>
-Cc: David Miller <davem at davemloft.net>
-Cc: Ian Kent <raven at themaw.net>
-Cc: Thomas Meyer <thomas at m3y3r.de>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/autofs4/autofs_i.h | 11 +++++++++++
- fs/autofs4/dev-ioctl.c | 2 +-
- fs/autofs4/inode.c | 2 +-
- 3 files changed, 13 insertions(+), 2 deletions(-)
-
-diff --git a/fs/autofs4/autofs_i.h b/fs/autofs4/autofs_i.h
-index 326dc08..650d520 100644
---- a/fs/autofs4/autofs_i.h
-+++ b/fs/autofs4/autofs_i.h
-@@ -268,6 +268,17 @@ int autofs4_fill_super(struct super_block *, void *, int);
- struct autofs_info *autofs4_new_ino(struct autofs_sb_info *);
- void autofs4_clean_ino(struct autofs_info *);
-
-+static inline int autofs_prepare_pipe(struct file *pipe)
-+{
-+ if (!pipe->f_op || !pipe->f_op->write)
-+ return -EINVAL;
-+ if (!S_ISFIFO(pipe->f_dentry->d_inode->i_mode))
-+ return -EINVAL;
-+ /* We want a packet pipe */
-+ pipe->f_flags |= O_DIRECT;
-+ return 0;
-+}
-+
- /* Queue management functions */
-
- int autofs4_wait(struct autofs_sb_info *,struct dentry *, enum autofs_notify);
-diff --git a/fs/autofs4/dev-ioctl.c b/fs/autofs4/dev-ioctl.c
-index 509fe1e..de54271 100644
---- a/fs/autofs4/dev-ioctl.c
-+++ b/fs/autofs4/dev-ioctl.c
-@@ -376,7 +376,7 @@ static int autofs_dev_ioctl_setpipefd(struct file *fp,
- err = -EBADF;
- goto out;
- }
-- if (!pipe->f_op || !pipe->f_op->write) {
-+ if (autofs_prepare_pipe(pipe) < 0) {
- err = -EPIPE;
- fput(pipe);
- goto out;
-diff --git a/fs/autofs4/inode.c b/fs/autofs4/inode.c
-index 8179f1a..7b5293e 100644
---- a/fs/autofs4/inode.c
-+++ b/fs/autofs4/inode.c
-@@ -292,7 +292,7 @@ int autofs4_fill_super(struct super_block *s, void *data, int silent)
- printk("autofs: could not open pipe file descriptor\n");
- goto fail_dput;
- }
-- if (!pipe->f_op || !pipe->f_op->write)
-+ if (autofs_prepare_pipe(pipe) < 0)
- goto fail_fput;
- sbi->pipe = pipe;
- sbi->pipefd = pipefd;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0119-ARM-7396-1-errata-only-handle-ARM-erratum-326103-on-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0119-ARM-7396-1-errata-only-handle-ARM-erratum-326103-on-.patch
deleted file mode 100644
index 645bdb6..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0119-ARM-7396-1-errata-only-handle-ARM-erratum-326103-on-.patch
+++ /dev/null
@@ -1,89 +0,0 @@
-From 73a8033457dd006878a2eeeb14133724923cd6af Mon Sep 17 00:00:00 2001
-From: Will Deacon <will.deacon at arm.com>
-Date: Fri, 20 Apr 2012 17:20:08 +0100
-Subject: [PATCH 119/165] ARM: 7396/1: errata: only handle ARM erratum #326103
- on affected cores
-
-commit f0c4b8d653f5ee091fb8d4d02ed7eaad397491bb upstream.
-
-Erratum #326103 ("FSR write bit incorrect on a SWP to read-only memory")
-only affects the ARM 1136 core prior to r1p0. The workaround
-disassembles the faulting instruction to determine whether it was a read
-or write access on all v6 cores.
-
-An issue has been reported on the ARM 11MPCore whereby loading the
-faulting instruction may happen in parallel with that page being
-unmapped, resulting in a deadlock due to the lack of TLB broadcasting
-in hardware:
-
-http://lists.infradead.org/pipermail/linux-arm-kernel/2012-March/091561.html
-
-This patch limits the workaround so that it is only used on affected
-cores, which are known to be UP only. Other v6 cores can rely on the
-FSR to indicate the access type correctly.
-
-Signed-off-by: Will Deacon <will.deacon at arm.com>
-Signed-off-by: Russell King <rmk+kernel at arm.linux.org.uk>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/arm/Kconfig | 9 +++++++++
- arch/arm/mm/abort-ev6.S | 17 +++++++++++------
- 2 files changed, 20 insertions(+), 6 deletions(-)
-
-diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
-index 6cd71ec..26574f0 100644
---- a/arch/arm/Kconfig
-+++ b/arch/arm/Kconfig
-@@ -1156,6 +1156,15 @@ if !MMU
- source "arch/arm/Kconfig-nommu"
- endif
-
-+config ARM_ERRATA_326103
-+ bool "ARM errata: FSR write bit incorrect on a SWP to read-only memory"
-+ depends on CPU_V6
-+ help
-+ Executing a SWP instruction to read-only memory does not set bit 11
-+ of the FSR on the ARM 1136 prior to r1p0. This causes the kernel to
-+ treat the access as a read, preventing a COW from occurring and
-+ causing the faulting task to livelock.
-+
- config ARM_ERRATA_411920
- bool "ARM errata: Invalidation of the Instruction Cache operation can fail"
- depends on CPU_V6 || CPU_V6K
-diff --git a/arch/arm/mm/abort-ev6.S b/arch/arm/mm/abort-ev6.S
-index ff1f7cc..8074199 100644
---- a/arch/arm/mm/abort-ev6.S
-+++ b/arch/arm/mm/abort-ev6.S
-@@ -26,18 +26,23 @@ ENTRY(v6_early_abort)
- mrc p15, 0, r1, c5, c0, 0 @ get FSR
- mrc p15, 0, r0, c6, c0, 0 @ get FAR
- /*
-- * Faulty SWP instruction on 1136 doesn't set bit 11 in DFSR (erratum 326103).
-- * The test below covers all the write situations, including Java bytecodes
-+ * Faulty SWP instruction on 1136 doesn't set bit 11 in DFSR.
- */
-- bic r1, r1, #1 << 11 @ clear bit 11 of FSR
-+#ifdef CONFIG_ARM_ERRATA_326103
-+ ldr ip, =0x4107b36
-+ mrc p15, 0, r3, c0, c0, 0 @ get processor id
-+ teq ip, r3, lsr #4 @ r0 ARM1136?
-+ bne do_DataAbort
- tst r5, #PSR_J_BIT @ Java?
-+ tsteq r5, #PSR_T_BIT @ Thumb?
- bne do_DataAbort
-- do_thumb_abort fsr=r1, pc=r4, psr=r5, tmp=r3
-- ldreq r3, [r4] @ read aborted ARM instruction
-+ bic r1, r1, #1 << 11 @ clear bit 11 of FSR
-+ ldr r3, [r4] @ read aborted ARM instruction
- #ifdef CONFIG_CPU_ENDIAN_BE8
-- reveq r3, r3
-+ rev r3, r3
- #endif
- do_ldrd_abort tmp=ip, insn=r3
- tst r3, #1 << 20 @ L = 0 -> write
- orreq r1, r1, #1 << 11 @ yes.
-+#endif
- b do_DataAbort
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0120-ARM-7397-1-l2x0-only-apply-workaround-for-erratum-75.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0120-ARM-7397-1-l2x0-only-apply-workaround-for-erratum-75.patch
deleted file mode 100644
index 32e3a48..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0120-ARM-7397-1-l2x0-only-apply-workaround-for-erratum-75.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From 8d2876b00b257ea48fddbccfb531ad618d83ed0b Mon Sep 17 00:00:00 2001
-From: Will Deacon <will.deacon at arm.com>
-Date: Fri, 20 Apr 2012 17:21:08 +0100
-Subject: [PATCH 120/165] ARM: 7397/1: l2x0: only apply workaround for erratum
- #753970 on PL310
-
-commit f154fe9b806574437b47f08e924ad10c0e240b23 upstream.
-
-The workaround for PL310 erratum #753970 can lead to deadlock on systems
-with an L220 cache controller.
-
-This patch makes the workaround effective only when the cache controller
-is identified as a PL310 at probe time.
-
-Signed-off-by: Will Deacon <will.deacon at arm.com>
-Signed-off-by: Russell King <rmk+kernel at arm.linux.org.uk>
-[bwh: Backported to 3.2: adjust context]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/arm/mm/cache-l2x0.c | 12 ++++++------
- 1 files changed, 6 insertions(+), 6 deletions(-)
-
-diff --git a/arch/arm/mm/cache-l2x0.c b/arch/arm/mm/cache-l2x0.c
-index b1e192b..971d527 100644
---- a/arch/arm/mm/cache-l2x0.c
-+++ b/arch/arm/mm/cache-l2x0.c
-@@ -32,6 +32,7 @@ static void __iomem *l2x0_base;
- static DEFINE_RAW_SPINLOCK(l2x0_lock);
- static uint32_t l2x0_way_mask; /* Bitmask of active ways */
- static uint32_t l2x0_size;
-+static unsigned long sync_reg_offset = L2X0_CACHE_SYNC;
-
- struct l2x0_regs l2x0_saved_regs;
-
-@@ -61,12 +62,7 @@ static inline void cache_sync(void)
- {
- void __iomem *base = l2x0_base;
-
--#ifdef CONFIG_PL310_ERRATA_753970
-- /* write to an unmmapped register */
-- writel_relaxed(0, base + L2X0_DUMMY_REG);
--#else
-- writel_relaxed(0, base + L2X0_CACHE_SYNC);
--#endif
-+ writel_relaxed(0, base + sync_reg_offset);
- cache_wait(base + L2X0_CACHE_SYNC, 1);
- }
-
-@@ -331,6 +327,10 @@ void __init l2x0_init(void __iomem *base, __u32 aux_val, __u32 aux_mask)
- else
- ways = 8;
- type = "L310";
-+#ifdef CONFIG_PL310_ERRATA_753970
-+ /* Unmapped register. */
-+ sync_reg_offset = L2X0_DUMMY_REG;
-+#endif
- break;
- case L2X0_CACHE_ID_PART_L210:
- ways = (aux >> 13) & 0xf;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0121-ARM-7398-1-l2x0-only-write-to-debug-registers-on-PL3.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0121-ARM-7398-1-l2x0-only-write-to-debug-registers-on-PL3.patch
deleted file mode 100644
index ffd9e26..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0121-ARM-7398-1-l2x0-only-write-to-debug-registers-on-PL3.patch
+++ /dev/null
@@ -1,69 +0,0 @@
-From a927ce0f8dd30f05ced7a71a5523ca5d82eab5d6 Mon Sep 17 00:00:00 2001
-From: Will Deacon <will.deacon at arm.com>
-Date: Fri, 20 Apr 2012 17:22:11 +0100
-Subject: [PATCH 121/165] ARM: 7398/1: l2x0: only write to debug registers on
- PL310
-
-commit ab4d536890853ab6675ede65db40e2c0980cb0ea upstream.
-
-PL310 errata #588369 and #727915 require writes to the debug registers
-of the cache controller to work around known problems. Writing these
-registers on L220 may cause deadlock, so ensure that we only perform
-this operation when we identify a PL310 at probe time.
-
-Signed-off-by: Will Deacon <will.deacon at arm.com>
-Signed-off-by: Russell King <rmk+kernel at arm.linux.org.uk>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/arm/mm/cache-l2x0.c | 13 ++++++++-----
- 1 files changed, 8 insertions(+), 5 deletions(-)
-
-diff --git a/arch/arm/mm/cache-l2x0.c b/arch/arm/mm/cache-l2x0.c
-index 971d527..db7bcc0 100644
---- a/arch/arm/mm/cache-l2x0.c
-+++ b/arch/arm/mm/cache-l2x0.c
-@@ -81,10 +81,13 @@ static inline void l2x0_inv_line(unsigned long addr)
- }
-
- #if defined(CONFIG_PL310_ERRATA_588369) || defined(CONFIG_PL310_ERRATA_727915)
-+static inline void debug_writel(unsigned long val)
-+{
-+ if (outer_cache.set_debug)
-+ outer_cache.set_debug(val);
-+}
-
--#define debug_writel(val) outer_cache.set_debug(val)
--
--static void l2x0_set_debug(unsigned long val)
-+static void pl310_set_debug(unsigned long val)
- {
- writel_relaxed(val, l2x0_base + L2X0_DEBUG_CTRL);
- }
-@@ -94,7 +97,7 @@ static inline void debug_writel(unsigned long val)
- {
- }
-
--#define l2x0_set_debug NULL
-+#define pl310_set_debug NULL
- #endif
-
- #ifdef CONFIG_PL310_ERRATA_588369
-@@ -331,6 +334,7 @@ void __init l2x0_init(void __iomem *base, __u32 aux_val, __u32 aux_mask)
- /* Unmapped register. */
- sync_reg_offset = L2X0_DUMMY_REG;
- #endif
-+ outer_cache.set_debug = pl310_set_debug;
- break;
- case L2X0_CACHE_ID_PART_L210:
- ways = (aux >> 13) & 0xf;
-@@ -379,7 +383,6 @@ void __init l2x0_init(void __iomem *base, __u32 aux_val, __u32 aux_mask)
- outer_cache.flush_all = l2x0_flush_all;
- outer_cache.inv_all = l2x0_inv_all;
- outer_cache.disable = l2x0_disable;
-- outer_cache.set_debug = l2x0_set_debug;
-
- printk(KERN_INFO "%s cache controller enabled\n", type);
- printk(KERN_INFO "l2x0: %d ways, CACHE_ID 0x%08x, AUX_CTRL 0x%08x, Cache size: %d B\n",
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0122-ARM-7403-1-tls-remove-covert-channel-via-TPIDRURW.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0122-ARM-7403-1-tls-remove-covert-channel-via-TPIDRURW.patch
deleted file mode 100644
index 3caa8b6..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0122-ARM-7403-1-tls-remove-covert-channel-via-TPIDRURW.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From 3130ecbd0c24f4b31da00862223e9985010690c2 Mon Sep 17 00:00:00 2001
-From: Will Deacon <will.deacon at arm.com>
-Date: Fri, 27 Apr 2012 12:45:07 +0100
-Subject: [PATCH 122/165] ARM: 7403/1: tls: remove covert channel via TPIDRURW
-
-commit 6a1c53124aa161eb624ce7b1e40ade728186d34c upstream.
-
-TPIDRURW is a user read/write register forming part of the group of
-thread registers in more recent versions of the ARM architecture (~v6+).
-
-Currently, the kernel does not touch this register, which allows tasks
-to communicate covertly by reading and writing to the register without
-context-switching affecting its contents.
-
-This patch clears TPIDRURW when TPIDRURO is updated via the set_tls
-macro, which is called directly from __switch_to. Since the current
-behaviour makes the register useless to userspace as far as thread
-pointers are concerned, simply clearing the register (rather than saving
-and restoring it) will not cause any problems to userspace.
-
-Signed-off-by: Will Deacon <will.deacon at arm.com>
-Signed-off-by: Russell King <rmk+kernel at arm.linux.org.uk>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/arm/include/asm/tls.h | 4 ++++
- 1 files changed, 4 insertions(+), 0 deletions(-)
-
-diff --git a/arch/arm/include/asm/tls.h b/arch/arm/include/asm/tls.h
-index 60843eb..73409e6 100644
---- a/arch/arm/include/asm/tls.h
-+++ b/arch/arm/include/asm/tls.h
-@@ -7,6 +7,8 @@
-
- .macro set_tls_v6k, tp, tmp1, tmp2
- mcr p15, 0, \tp, c13, c0, 3 @ set TLS register
-+ mov \tmp1, #0
-+ mcr p15, 0, \tmp1, c13, c0, 2 @ clear user r/w TLS register
- .endm
-
- .macro set_tls_v6, tp, tmp1, tmp2
-@@ -15,6 +17,8 @@
- mov \tmp2, #0xffff0fff
- tst \tmp1, #HWCAP_TLS @ hardware TLS available?
- mcrne p15, 0, \tp, c13, c0, 3 @ yes, set TLS register
-+ movne \tmp1, #0
-+ mcrne p15, 0, \tmp1, c13, c0, 2 @ clear user r/w TLS register
- streq \tp, [\tmp2, #-15] @ set TLS value at 0xffff0ff0
- .endm
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0123-ARM-7406-1-hotplug-copy-the-affinity-mask-when-force.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0123-ARM-7406-1-hotplug-copy-the-affinity-mask-when-force.patch
deleted file mode 100644
index 7f66991..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0123-ARM-7406-1-hotplug-copy-the-affinity-mask-when-force.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From 453a85cabdd26d6525b6563e7d1b804b4b88d42f Mon Sep 17 00:00:00 2001
-From: Will Deacon <will.deacon at arm.com>
-Date: Fri, 27 Apr 2012 12:56:24 +0100
-Subject: [PATCH 123/165] ARM: 7406/1: hotplug: copy the affinity mask when
- forcefully migrating IRQs
-
-commit 5e7371ded05adfcfcee44a8bc070bfc37979b8f2 upstream.
-
-When a CPU is hotplugged off, we migrate any IRQs currently affine to it
-away and onto another online CPU by calling the irq_set_affinity
-function of the relevant interrupt controller chip. This function
-returns either IRQ_SET_MASK_OK or IRQ_SET_MASK_OK_NOCOPY, to indicate
-whether irq_data.affinity was updated.
-
-If we are forcefully migrating an interrupt (because the affinity mask
-no longer identifies any online CPUs) then we should update the IRQ
-affinity mask to reflect the new CPU set. Failure to do so can
-potentially leave /proc/irq/n/smp_affinity identifying only offline
-CPUs, which may confuse userspace IRQ balancing daemons.
-
-This patch updates migrate_one_irq to copy the affinity mask when
-the interrupt chip returns IRQ_SET_MASK_OK after forcefully changing the
-affinity of an interrupt.
-
-Reported-by: Leif Lindholm <leif.lindholm at arm.com>
-Signed-off-by: Will Deacon <will.deacon at arm.com>
-Signed-off-by: Russell King <rmk+kernel at arm.linux.org.uk>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/arm/kernel/irq.c | 6 +++---
- 1 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/arch/arm/kernel/irq.c b/arch/arm/kernel/irq.c
-index 3efd82c..87c8be5 100644
---- a/arch/arm/kernel/irq.c
-+++ b/arch/arm/kernel/irq.c
-@@ -156,10 +156,10 @@ static bool migrate_one_irq(struct irq_desc *desc)
- }
-
- c = irq_data_get_irq_chip(d);
-- if (c->irq_set_affinity)
-- c->irq_set_affinity(d, affinity, true);
-- else
-+ if (!c->irq_set_affinity)
- pr_debug("IRQ%u: unable to set affinity\n", d->irq);
-+ else if (c->irq_set_affinity(d, affinity, true) == IRQ_SET_MASK_OK && ret)
-+ cpumask_copy(d->affinity, affinity);
-
- return ret;
- }
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0124-libsas-fix-sas_find_bcast_phy-in-the-presence-of-vac.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0124-libsas-fix-sas_find_bcast_phy-in-the-presence-of-vac.patch
deleted file mode 100644
index c29f0ac..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0124-libsas-fix-sas_find_bcast_phy-in-the-presence-of-vac.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-From 8656241ad68bd13cec3e1fc5bf4ce8006b838b74 Mon Sep 17 00:00:00 2001
-From: Thomas Jackson <thomas.p.jackson at intel.com>
-Date: Fri, 17 Feb 2012 18:33:10 -0800
-Subject: [PATCH 124/165] libsas: fix sas_find_bcast_phy() in the presence of
- 'vacant' phys
-
-commit 1699490db339e2c6b3037ea8e7dcd6b2755b688e upstream.
-
-If an expander reports 'PHY VACANT' for a phy index prior to the one
-that generated a BCN libsas fails rediscovery. Since a vacant phy is
-defined as a valid phy index that will never have an attached device
-just continue the search.
-
-Signed-off-by: Thomas Jackson <thomas.p.jackson at intel.com>
-Signed-off-by: Dan Williams <dan.j.williams at intel.com>
-Signed-off-by: James Bottomley <JBottomley at Parallels.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/scsi/libsas/sas_expander.c | 17 ++++++++++++-----
- 1 files changed, 12 insertions(+), 5 deletions(-)
-
-diff --git a/drivers/scsi/libsas/sas_expander.c b/drivers/scsi/libsas/sas_expander.c
-index 1b831c5..a68780b 100644
---- a/drivers/scsi/libsas/sas_expander.c
-+++ b/drivers/scsi/libsas/sas_expander.c
-@@ -1643,9 +1643,17 @@ static int sas_find_bcast_phy(struct domain_device *dev, int *phy_id,
- int phy_change_count = 0;
-
- res = sas_get_phy_change_count(dev, i, &phy_change_count);
-- if (res)
-- goto out;
-- else if (phy_change_count != ex->ex_phy[i].phy_change_count) {
-+ switch (res) {
-+ case SMP_RESP_PHY_VACANT:
-+ case SMP_RESP_NO_PHY:
-+ continue;
-+ case SMP_RESP_FUNC_ACC:
-+ break;
-+ default:
-+ return res;
-+ }
-+
-+ if (phy_change_count != ex->ex_phy[i].phy_change_count) {
- if (update)
- ex->ex_phy[i].phy_change_count =
- phy_change_count;
-@@ -1653,8 +1661,7 @@ static int sas_find_bcast_phy(struct domain_device *dev, int *phy_id,
- return 0;
- }
- }
--out:
-- return res;
-+ return 0;
- }
-
- static int sas_get_ex_change_count(struct domain_device *dev, int *ecc)
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0125-libsas-fix-false-positive-device-attached-conditions.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0125-libsas-fix-false-positive-device-attached-conditions.patch
deleted file mode 100644
index cb5c192..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0125-libsas-fix-false-positive-device-attached-conditions.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From 18c33d9e87a0a285218cc075f4a471fe53142061 Mon Sep 17 00:00:00 2001
-From: Dan Williams <dan.j.williams at intel.com>
-Date: Tue, 20 Mar 2012 10:50:27 -0700
-Subject: [PATCH 125/165] libsas: fix false positive 'device attached'
- conditions
-
-commit 7d1d865181185bdf1316d236b1b4bd02c9020729 upstream.
-
-Normalize phy->attached_sas_addr to return a zero-address in the case
-when device-type == NO_DEVICE or the linkrate is invalid to handle
-expanders that put non-zero sas addresses in the discovery response:
-
- sas: ex 5001b4da000f903f phy02:U:0 attached: 0100000000000000 (no device)
- sas: ex 5001b4da000f903f phy01:U:0 attached: 0100000000000000 (no device)
- sas: ex 5001b4da000f903f phy03:U:0 attached: 0100000000000000 (no device)
- sas: ex 5001b4da000f903f phy00:U:0 attached: 0100000000000000 (no device)
-
-Reported-by: Andrzej Jakowski <andrzej.jakowski at intel.com>
-Signed-off-by: Dan Williams <dan.j.williams at intel.com>
-Signed-off-by: James Bottomley <JBottomley at Parallels.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/scsi/libsas/sas_expander.c | 9 ++++++++-
- 1 files changed, 8 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/scsi/libsas/sas_expander.c b/drivers/scsi/libsas/sas_expander.c
-index a68780b..e48ba4b 100644
---- a/drivers/scsi/libsas/sas_expander.c
-+++ b/drivers/scsi/libsas/sas_expander.c
-@@ -192,7 +192,14 @@ static void sas_set_ex_phy(struct domain_device *dev, int phy_id,
- phy->attached_sata_ps = dr->attached_sata_ps;
- phy->attached_iproto = dr->iproto << 1;
- phy->attached_tproto = dr->tproto << 1;
-- memcpy(phy->attached_sas_addr, dr->attached_sas_addr, SAS_ADDR_SIZE);
-+ /* help some expanders that fail to zero sas_address in the 'no
-+ * device' case
-+ */
-+ if (phy->attached_dev_type == NO_DEVICE ||
-+ phy->linkrate < SAS_LINK_RATE_1_5_GBPS)
-+ memset(phy->attached_sas_addr, 0, SAS_ADDR_SIZE);
-+ else
-+ memcpy(phy->attached_sas_addr, dr->attached_sas_addr, SAS_ADDR_SIZE);
- phy->attached_phy_id = dr->attached_phy_id;
- phy->phy_change_count = dr->change_count;
- phy->routing_attr = dr->routing_attr;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0126-efi-Add-new-variable-attributes.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0126-efi-Add-new-variable-attributes.patch
deleted file mode 100644
index e5bc69d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0126-efi-Add-new-variable-attributes.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From 9b4ee1cca5f9cce3c72d4a34597a0c1dc0c786bd Mon Sep 17 00:00:00 2001
-From: Matthew Garrett <mjg at redhat.com>
-Date: Mon, 30 Apr 2012 16:11:29 -0400
-Subject: [PATCH 126/165] efi: Add new variable attributes
-
-commit 41b3254c93acc56adc3c4477fef7c9512d47659e upstream.
-
-More recent versions of the UEFI spec have added new attributes for
-variables. Add them.
-
-Signed-off-by: Matthew Garrett <mjg at redhat.com>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-[bwh: Backported to 3.2: adjust context]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- include/linux/efi.h | 13 ++++++++++++-
- 1 files changed, 12 insertions(+), 1 deletions(-)
-
-diff --git a/include/linux/efi.h b/include/linux/efi.h
-index 2362a0b..1328d8c 100644
---- a/include/linux/efi.h
-+++ b/include/linux/efi.h
-@@ -383,7 +383,18 @@ extern int __init efi_setup_pcdp_console(char *);
- #define EFI_VARIABLE_NON_VOLATILE 0x0000000000000001
- #define EFI_VARIABLE_BOOTSERVICE_ACCESS 0x0000000000000002
- #define EFI_VARIABLE_RUNTIME_ACCESS 0x0000000000000004
--
-+#define EFI_VARIABLE_HARDWARE_ERROR_RECORD 0x0000000000000008
-+#define EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS 0x0000000000000010
-+#define EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS 0x0000000000000020
-+#define EFI_VARIABLE_APPEND_WRITE 0x0000000000000040
-+
-+#define EFI_VARIABLE_MASK (EFI_VARIABLE_NON_VOLATILE | \
-+ EFI_VARIABLE_BOOTSERVICE_ACCESS | \
-+ EFI_VARIABLE_RUNTIME_ACCESS | \
-+ EFI_VARIABLE_HARDWARE_ERROR_RECORD | \
-+ EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS | \
-+ EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS | \
-+ EFI_VARIABLE_APPEND_WRITE)
- /*
- * EFI Device Path information
- */
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0127-efi-Validate-UEFI-boot-variables.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0127-efi-Validate-UEFI-boot-variables.patch
deleted file mode 100644
index 92781aa..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0127-efi-Validate-UEFI-boot-variables.patch
+++ /dev/null
@@ -1,231 +0,0 @@
-From 620a8b56785ca32ec7cde5f632617d89409a21ba Mon Sep 17 00:00:00 2001
-From: Matthew Garrett <mjg at redhat.com>
-Date: Mon, 30 Apr 2012 16:11:30 -0400
-Subject: [PATCH 127/165] efi: Validate UEFI boot variables
-
-commit fec6c20b570bcf541e581fc97f2e0cbdb9725b98 upstream.
-
-A common flaw in UEFI systems is a refusal to POST triggered by a malformed
-boot variable. Once in this state, machines may only be restored by
-reflashing their firmware with an external hardware device. While this is
-obviously a firmware bug, the serious nature of the outcome suggests that
-operating systems should filter their variable writes in order to prevent
-a malicious user from rendering the machine unusable.
-
-Signed-off-by: Matthew Garrett <mjg at redhat.com>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/firmware/efivars.c | 182 ++++++++++++++++++++++++++++++++++++++++++++
- 1 files changed, 182 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/firmware/efivars.c b/drivers/firmware/efivars.c
-index b0a8117..150e4ec 100644
---- a/drivers/firmware/efivars.c
-+++ b/drivers/firmware/efivars.c
-@@ -191,6 +191,176 @@ utf16_strncmp(const efi_char16_t *a, const efi_char16_t *b, size_t len)
- }
- }
-
-+static bool
-+validate_device_path(struct efi_variable *var, int match, u8 *buffer, int len)
-+{
-+ struct efi_generic_dev_path *node;
-+ int offset = 0;
-+
-+ node = (struct efi_generic_dev_path *)buffer;
-+
-+ while (offset < len) {
-+ offset += node->length;
-+
-+ if (offset > len)
-+ return false;
-+
-+ if ((node->type == EFI_DEV_END_PATH ||
-+ node->type == EFI_DEV_END_PATH2) &&
-+ node->sub_type == EFI_DEV_END_ENTIRE)
-+ return true;
-+
-+ node = (struct efi_generic_dev_path *)(buffer + offset);
-+ }
-+
-+ /*
-+ * If we're here then either node->length pointed past the end
-+ * of the buffer or we reached the end of the buffer without
-+ * finding a device path end node.
-+ */
-+ return false;
-+}
-+
-+static bool
-+validate_boot_order(struct efi_variable *var, int match, u8 *buffer, int len)
-+{
-+ /* An array of 16-bit integers */
-+ if ((len % 2) != 0)
-+ return false;
-+
-+ return true;
-+}
-+
-+static bool
-+validate_load_option(struct efi_variable *var, int match, u8 *buffer, int len)
-+{
-+ u16 filepathlength;
-+ int i, desclength = 0;
-+
-+ /* Either "Boot" or "Driver" followed by four digits of hex */
-+ for (i = match; i < match+4; i++) {
-+ if (hex_to_bin(var->VariableName[i] & 0xff) < 0)
-+ return true;
-+ }
-+
-+ /* A valid entry must be at least 6 bytes */
-+ if (len < 6)
-+ return false;
-+
-+ filepathlength = buffer[4] | buffer[5] << 8;
-+
-+ /*
-+ * There's no stored length for the description, so it has to be
-+ * found by hand
-+ */
-+ desclength = utf16_strsize((efi_char16_t *)(buffer + 6), len) + 2;
-+
-+ /* Each boot entry must have a descriptor */
-+ if (!desclength)
-+ return false;
-+
-+ /*
-+ * If the sum of the length of the description, the claimed filepath
-+ * length and the original header are greater than the length of the
-+ * variable, it's malformed
-+ */
-+ if ((desclength + filepathlength + 6) > len)
-+ return false;
-+
-+ /*
-+ * And, finally, check the filepath
-+ */
-+ return validate_device_path(var, match, buffer + desclength + 6,
-+ filepathlength);
-+}
-+
-+static bool
-+validate_uint16(struct efi_variable *var, int match, u8 *buffer, int len)
-+{
-+ /* A single 16-bit integer */
-+ if (len != 2)
-+ return false;
-+
-+ return true;
-+}
-+
-+static bool
-+validate_ascii_string(struct efi_variable *var, int match, u8 *buffer, int len)
-+{
-+ int i;
-+
-+ for (i = 0; i < len; i++) {
-+ if (buffer[i] > 127)
-+ return false;
-+
-+ if (buffer[i] == 0)
-+ return true;
-+ }
-+
-+ return false;
-+}
-+
-+struct variable_validate {
-+ char *name;
-+ bool (*validate)(struct efi_variable *var, int match, u8 *data,
-+ int len);
-+};
-+
-+static const struct variable_validate variable_validate[] = {
-+ { "BootNext", validate_uint16 },
-+ { "BootOrder", validate_boot_order },
-+ { "DriverOrder", validate_boot_order },
-+ { "Boot*", validate_load_option },
-+ { "Driver*", validate_load_option },
-+ { "ConIn", validate_device_path },
-+ { "ConInDev", validate_device_path },
-+ { "ConOut", validate_device_path },
-+ { "ConOutDev", validate_device_path },
-+ { "ErrOut", validate_device_path },
-+ { "ErrOutDev", validate_device_path },
-+ { "Timeout", validate_uint16 },
-+ { "Lang", validate_ascii_string },
-+ { "PlatformLang", validate_ascii_string },
-+ { "", NULL },
-+};
-+
-+static bool
-+validate_var(struct efi_variable *var, u8 *data, int len)
-+{
-+ int i;
-+ u16 *unicode_name = var->VariableName;
-+
-+ for (i = 0; variable_validate[i].validate != NULL; i++) {
-+ const char *name = variable_validate[i].name;
-+ int match;
-+
-+ for (match = 0; ; match++) {
-+ char c = name[match];
-+ u16 u = unicode_name[match];
-+
-+ /* All special variables are plain ascii */
-+ if (u > 127)
-+ return true;
-+
-+ /* Wildcard in the matching name means we've matched */
-+ if (c == '*')
-+ return variable_validate[i].validate(var,
-+ match, data, len);
-+
-+ /* Case sensitive match */
-+ if (c != u)
-+ break;
-+
-+ /* Reached the end of the string while matching */
-+ if (!c)
-+ return variable_validate[i].validate(var,
-+ match, data, len);
-+ }
-+ }
-+
-+ return true;
-+}
-+
- static efi_status_t
- get_var_data_locked(struct efivars *efivars, struct efi_variable *var)
- {
-@@ -324,6 +494,12 @@ efivar_store_raw(struct efivar_entry *entry, const char *buf, size_t count)
- return -EINVAL;
- }
-
-+ if ((new_var->Attributes & ~EFI_VARIABLE_MASK) != 0 ||
-+ validate_var(new_var, new_var->Data, new_var->DataSize) == false) {
-+ printk(KERN_ERR "efivars: Malformed variable content\n");
-+ return -EINVAL;
-+ }
-+
- spin_lock(&efivars->lock);
- status = efivars->ops->set_variable(new_var->VariableName,
- &new_var->VendorGuid,
-@@ -624,6 +800,12 @@ static ssize_t efivar_create(struct file *filp, struct kobject *kobj,
- if (!capable(CAP_SYS_ADMIN))
- return -EACCES;
-
-+ if ((new_var->Attributes & ~EFI_VARIABLE_MASK) != 0 ||
-+ validate_var(new_var, new_var->Data, new_var->DataSize) == false) {
-+ printk(KERN_ERR "efivars: Malformed variable content\n");
-+ return -EINVAL;
-+ }
-+
- spin_lock(&efivars->lock);
-
- /*
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0128-PM-Hibernate-fix-the-number-of-pages-used-for-hibern.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0128-PM-Hibernate-fix-the-number-of-pages-used-for-hibern.patch
deleted file mode 100644
index 913b473..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0128-PM-Hibernate-fix-the-number-of-pages-used-for-hibern.patch
+++ /dev/null
@@ -1,100 +0,0 @@
-From a33123cb0368231d84b8839f9f56bee45c51016d Mon Sep 17 00:00:00 2001
-From: Bojan Smojver <bojan at rexursive.com>
-Date: Tue, 24 Apr 2012 23:53:28 +0200
-Subject: [PATCH 128/165] PM / Hibernate: fix the number of pages used for
- hibernate/thaw buffering
-
-commit f8262d476823a7ea1eb497ff9676d1eab2393c75 upstream.
-
-Hibernation regression fix, since 3.2.
-
-Calculate the number of required free pages based on non-high memory
-pages only, because that is where the buffers will come from.
-
-Commit 081a9d043c983f161b78fdc4671324d1342b86bc introduced a new buffer
-page allocation logic during hibernation, in order to improve the
-performance. The amount of pages allocated was calculated based on total
-amount of pages available, although only non-high memory pages are
-usable for this purpose. This caused hibernation code to attempt to over
-allocate pages on platforms that have high memory, which led to hangs.
-
-Signed-off-by: Bojan Smojver <bojan at rexursive.com>
-Signed-off-by: Rafael J. Wysocki <rjw at suse.de>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- kernel/power/swap.c | 28 ++++++++++++++++++++++------
- 1 files changed, 22 insertions(+), 6 deletions(-)
-
-diff --git a/kernel/power/swap.c b/kernel/power/swap.c
-index 11a594c..b313086 100644
---- a/kernel/power/swap.c
-+++ b/kernel/power/swap.c
-@@ -52,6 +52,23 @@
-
- #define MAP_PAGE_ENTRIES (PAGE_SIZE / sizeof(sector_t) - 1)
-
-+/*
-+ * Number of free pages that are not high.
-+ */
-+static inline unsigned long low_free_pages(void)
-+{
-+ return nr_free_pages() - nr_free_highpages();
-+}
-+
-+/*
-+ * Number of pages required to be kept free while writing the image. Always
-+ * half of all available low pages before the writing starts.
-+ */
-+static inline unsigned long reqd_free_pages(void)
-+{
-+ return low_free_pages() / 2;
-+}
-+
- struct swap_map_page {
- sector_t entries[MAP_PAGE_ENTRIES];
- sector_t next_swap;
-@@ -73,7 +90,7 @@ struct swap_map_handle {
- sector_t cur_swap;
- sector_t first_sector;
- unsigned int k;
-- unsigned long nr_free_pages, written;
-+ unsigned long reqd_free_pages;
- u32 crc32;
- };
-
-@@ -317,8 +334,7 @@ static int get_swap_writer(struct swap_map_handle *handle)
- goto err_rel;
- }
- handle->k = 0;
-- handle->nr_free_pages = nr_free_pages() >> 1;
-- handle->written = 0;
-+ handle->reqd_free_pages = reqd_free_pages();
- handle->first_sector = handle->cur_swap;
- return 0;
- err_rel:
-@@ -353,11 +369,11 @@ static int swap_write_page(struct swap_map_handle *handle, void *buf,
- handle->cur_swap = offset;
- handle->k = 0;
- }
-- if (bio_chain && ++handle->written > handle->nr_free_pages) {
-+ if (bio_chain && low_free_pages() <= handle->reqd_free_pages) {
- error = hib_wait_on_bio_chain(bio_chain);
- if (error)
- goto out;
-- handle->written = 0;
-+ handle->reqd_free_pages = reqd_free_pages();
- }
- out:
- return error;
-@@ -619,7 +635,7 @@ static int save_image_lzo(struct swap_map_handle *handle,
- * Adjust number of free pages after all allocations have been done.
- * We don't want to run out of pages when writing.
- */
-- handle->nr_free_pages = nr_free_pages() >> 1;
-+ handle->reqd_free_pages = reqd_free_pages();
-
- /*
- * Start the CRC32 thread.
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0129-drm-i915-enable-dip-before-writing-data-on-gen4.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0129-drm-i915-enable-dip-before-writing-data-on-gen4.patch
deleted file mode 100644
index 639addc..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0129-drm-i915-enable-dip-before-writing-data-on-gen4.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From 239f17a64c2c70a830feacf5fe07fb8ca1b288fb Mon Sep 17 00:00:00 2001
-From: Paulo Zanoni <paulo.r.zanoni at intel.com>
-Date: Wed, 2 May 2012 22:55:43 -0300
-Subject: [PATCH 129/165] drm/i915: enable dip before writing data on gen4
-
-commit c1230df7e19e0f27655c0eb9d966c7e03be7cc50 upstream.
-
-While testing with the intel_infoframes tool on gen4, I see that when
-video DIP is disabled, what we write to the DATA memory is not exactly
-what we read back later.
-
-This regression has been introduce in
-
-commit 64a8fc0145a1d0fdc25fc9367c2e6c621955fb3b
-Author: Jesse Barnes <jbarnes at virtuousgeek.org>
-Date: Thu Sep 22 11:16:00 2011 +0530
-
- drm/i915: fix ILK+ infoframe support
-
-That commit was setting VIDEO_DIP_CTL to 0 when initializing, which
-caused the problem.
-
-Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=43947
-Tested-by: Yang Guang <guang.a.yang at intel.com>
-Signed-off-by: Paulo Zanoni <paulo.r.zanoni at intel.com>
-Reviewed-by: Eugeni Dodonov <eugeni.dodonov at intel.com>
-[danvet: Pimped commit message by using the usual commit citation
-layout.]
-Signed-off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpu/drm/i915/intel_hdmi.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
-index 64541f7..9cd81ba 100644
---- a/drivers/gpu/drm/i915/intel_hdmi.c
-+++ b/drivers/gpu/drm/i915/intel_hdmi.c
-@@ -136,7 +136,7 @@ static void i9xx_write_infoframe(struct drm_encoder *encoder,
-
- val &= ~VIDEO_DIP_SELECT_MASK;
-
-- I915_WRITE(VIDEO_DIP_CTL, val | port | flags);
-+ I915_WRITE(VIDEO_DIP_CTL, VIDEO_DIP_ENABLE | val | port | flags);
-
- for (i = 0; i < len; i += 4) {
- I915_WRITE(VIDEO_DIP_DATA, *data);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0130-sched-Fix-nohz-load-accounting-again.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0130-sched-Fix-nohz-load-accounting-again.patch
deleted file mode 100644
index 44a254b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0130-sched-Fix-nohz-load-accounting-again.patch
+++ /dev/null
@@ -1,133 +0,0 @@
-From 01347c8bd017f3c031bc472db23953f9695fd65c Mon Sep 17 00:00:00 2001
-From: Peter Zijlstra <peterz at infradead.org>
-Date: Thu, 1 Mar 2012 15:04:46 +0100
-Subject: [PATCH 130/165] sched: Fix nohz load accounting -- again!
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit c308b56b5398779cd3da0f62ab26b0453494c3d4 upstream.
-
-Various people reported nohz load tracking still being wrecked, but Doug
-spotted the actual problem. We fold the nohz remainder in too soon,
-causing us to loose samples and under-account.
-
-So instead of playing catch-up up-front, always do a single load-fold
-with whatever state we encounter and only then fold the nohz remainder
-and play catch-up.
-
-Reported-by: Doug Smythies <dsmythies at telus.net>
-Reported-by: LesÅ=82aw Kope=C4=87 <leslaw.kopec at nasza-klasa.pl>
-Reported-by: Aman Gupta <aman at tmm1.net>
-Signed-off-by: Peter Zijlstra <a.p.zijlstra at chello.nl>
-Link: http://lkml.kernel.org/n/tip-4v31etnhgg9kwd6ocgx3rxl8@git.kernel.org
-Signed-off-by: Ingo Molnar <mingo at elte.hu>
-[bwh: Backported to 3.2: change filename]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- kernel/sched.c | 53 ++++++++++++++++++++++++++---------------------------
- 1 files changed, 26 insertions(+), 27 deletions(-)
-
-diff --git a/kernel/sched.c b/kernel/sched.c
-index 106a3b8..299f55c 100644
---- a/kernel/sched.c
-+++ b/kernel/sched.c
-@@ -3538,13 +3538,10 @@ calc_load_n(unsigned long load, unsigned long exp,
- * Once we've updated the global active value, we need to apply the exponential
- * weights adjusted to the number of cycles missed.
- */
--static void calc_global_nohz(unsigned long ticks)
-+static void calc_global_nohz(void)
- {
- long delta, active, n;
-
-- if (time_before(jiffies, calc_load_update))
-- return;
--
- /*
- * If we crossed a calc_load_update boundary, make sure to fold
- * any pending idle changes, the respective CPUs might have
-@@ -3556,31 +3553,25 @@ static void calc_global_nohz(unsigned long ticks)
- atomic_long_add(delta, &calc_load_tasks);
-
- /*
-- * If we were idle for multiple load cycles, apply them.
-+ * It could be the one fold was all it took, we done!
- */
-- if (ticks >= LOAD_FREQ) {
-- n = ticks / LOAD_FREQ;
-+ if (time_before(jiffies, calc_load_update + 10))
-+ return;
-
-- active = atomic_long_read(&calc_load_tasks);
-- active = active > 0 ? active * FIXED_1 : 0;
-+ /*
-+ * Catch-up, fold however many we are behind still
-+ */
-+ delta = jiffies - calc_load_update - 10;
-+ n = 1 + (delta / LOAD_FREQ);
-
-- avenrun[0] = calc_load_n(avenrun[0], EXP_1, active, n);
-- avenrun[1] = calc_load_n(avenrun[1], EXP_5, active, n);
-- avenrun[2] = calc_load_n(avenrun[2], EXP_15, active, n);
-+ active = atomic_long_read(&calc_load_tasks);
-+ active = active > 0 ? active * FIXED_1 : 0;
-
-- calc_load_update += n * LOAD_FREQ;
-- }
-+ avenrun[0] = calc_load_n(avenrun[0], EXP_1, active, n);
-+ avenrun[1] = calc_load_n(avenrun[1], EXP_5, active, n);
-+ avenrun[2] = calc_load_n(avenrun[2], EXP_15, active, n);
-
-- /*
-- * Its possible the remainder of the above division also crosses
-- * a LOAD_FREQ period, the regular check in calc_global_load()
-- * which comes after this will take care of that.
-- *
-- * Consider us being 11 ticks before a cycle completion, and us
-- * sleeping for 4*LOAD_FREQ + 22 ticks, then the above code will
-- * age us 4 cycles, and the test in calc_global_load() will
-- * pick up the final one.
-- */
-+ calc_load_update += n * LOAD_FREQ;
- }
- #else
- static void calc_load_account_idle(struct rq *this_rq)
-@@ -3592,7 +3583,7 @@ static inline long calc_load_fold_idle(void)
- return 0;
- }
-
--static void calc_global_nohz(unsigned long ticks)
-+static void calc_global_nohz(void)
- {
- }
- #endif
-@@ -3620,8 +3611,6 @@ void calc_global_load(unsigned long ticks)
- {
- long active;
-
-- calc_global_nohz(ticks);
--
- if (time_before(jiffies, calc_load_update + 10))
- return;
-
-@@ -3633,6 +3622,16 @@ void calc_global_load(unsigned long ticks)
- avenrun[2] = calc_load(avenrun[2], EXP_15, active);
-
- calc_load_update += LOAD_FREQ;
-+
-+ /*
-+ * Account one period with whatever state we found before
-+ * folding in the nohz state and ageing the entire idle period.
-+ *
-+ * This avoids loosing a sample when we go idle between
-+ * calc_load_account_active() (10 ticks ago) and now and thus
-+ * under-accounting.
-+ */
-+ calc_global_nohz();
- }
-
- /*
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0131-efivars-Improve-variable-validation.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0131-efivars-Improve-variable-validation.patch
deleted file mode 100644
index c87a8b7..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0131-efivars-Improve-variable-validation.patch
+++ /dev/null
@@ -1,142 +0,0 @@
-From aa7664378bab4f65e93402fa64c031a1fd52369c Mon Sep 17 00:00:00 2001
-From: Matthew Garrett <mjg at redhat.com>
-Date: Thu, 3 May 2012 16:50:46 -0400
-Subject: [PATCH 131/165] efivars: Improve variable validation
-
-commit 54b3a4d311c98ad94b737802a8b5f2c8c6bfd627 upstream.
-
-Ben Hutchings pointed out that the validation in efivars was inadequate -
-most obviously, an entry with size 0 would server as a DoS against the
-kernel. Improve this based on his suggestions.
-
-Signed-off-by: Matthew Garrett <mjg at redhat.com>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/firmware/efivars.c | 46 ++++++++++++++++++++++++++++---------------
- 1 files changed, 30 insertions(+), 16 deletions(-)
-
-diff --git a/drivers/firmware/efivars.c b/drivers/firmware/efivars.c
-index 150e4ec..0535c21 100644
---- a/drivers/firmware/efivars.c
-+++ b/drivers/firmware/efivars.c
-@@ -192,18 +192,21 @@ utf16_strncmp(const efi_char16_t *a, const efi_char16_t *b, size_t len)
- }
-
- static bool
--validate_device_path(struct efi_variable *var, int match, u8 *buffer, int len)
-+validate_device_path(struct efi_variable *var, int match, u8 *buffer,
-+ unsigned long len)
- {
- struct efi_generic_dev_path *node;
- int offset = 0;
-
- node = (struct efi_generic_dev_path *)buffer;
-
-- while (offset < len) {
-- offset += node->length;
-+ if (len < sizeof(*node))
-+ return false;
-
-- if (offset > len)
-- return false;
-+ while (offset <= len - sizeof(*node) &&
-+ node->length >= sizeof(*node) &&
-+ node->length <= len - offset) {
-+ offset += node->length;
-
- if ((node->type == EFI_DEV_END_PATH ||
- node->type == EFI_DEV_END_PATH2) &&
-@@ -222,7 +225,8 @@ validate_device_path(struct efi_variable *var, int match, u8 *buffer, int len)
- }
-
- static bool
--validate_boot_order(struct efi_variable *var, int match, u8 *buffer, int len)
-+validate_boot_order(struct efi_variable *var, int match, u8 *buffer,
-+ unsigned long len)
- {
- /* An array of 16-bit integers */
- if ((len % 2) != 0)
-@@ -232,19 +236,27 @@ validate_boot_order(struct efi_variable *var, int match, u8 *buffer, int len)
- }
-
- static bool
--validate_load_option(struct efi_variable *var, int match, u8 *buffer, int len)
-+validate_load_option(struct efi_variable *var, int match, u8 *buffer,
-+ unsigned long len)
- {
- u16 filepathlength;
-- int i, desclength = 0;
-+ int i, desclength = 0, namelen;
-+
-+ namelen = utf16_strnlen(var->VariableName, sizeof(var->VariableName));
-
- /* Either "Boot" or "Driver" followed by four digits of hex */
- for (i = match; i < match+4; i++) {
-- if (hex_to_bin(var->VariableName[i] & 0xff) < 0)
-+ if (var->VariableName[i] > 127 ||
-+ hex_to_bin(var->VariableName[i] & 0xff) < 0)
- return true;
- }
-
-- /* A valid entry must be at least 6 bytes */
-- if (len < 6)
-+ /* Reject it if there's 4 digits of hex and then further content */
-+ if (namelen > match + 4)
-+ return false;
-+
-+ /* A valid entry must be at least 8 bytes */
-+ if (len < 8)
- return false;
-
- filepathlength = buffer[4] | buffer[5] << 8;
-@@ -253,7 +265,7 @@ validate_load_option(struct efi_variable *var, int match, u8 *buffer, int len)
- * There's no stored length for the description, so it has to be
- * found by hand
- */
-- desclength = utf16_strsize((efi_char16_t *)(buffer + 6), len) + 2;
-+ desclength = utf16_strsize((efi_char16_t *)(buffer + 6), len - 6) + 2;
-
- /* Each boot entry must have a descriptor */
- if (!desclength)
-@@ -275,7 +287,8 @@ validate_load_option(struct efi_variable *var, int match, u8 *buffer, int len)
- }
-
- static bool
--validate_uint16(struct efi_variable *var, int match, u8 *buffer, int len)
-+validate_uint16(struct efi_variable *var, int match, u8 *buffer,
-+ unsigned long len)
- {
- /* A single 16-bit integer */
- if (len != 2)
-@@ -285,7 +298,8 @@ validate_uint16(struct efi_variable *var, int match, u8 *buffer, int len)
- }
-
- static bool
--validate_ascii_string(struct efi_variable *var, int match, u8 *buffer, int len)
-+validate_ascii_string(struct efi_variable *var, int match, u8 *buffer,
-+ unsigned long len)
- {
- int i;
-
-@@ -303,7 +317,7 @@ validate_ascii_string(struct efi_variable *var, int match, u8 *buffer, int len)
- struct variable_validate {
- char *name;
- bool (*validate)(struct efi_variable *var, int match, u8 *data,
-- int len);
-+ unsigned long len);
- };
-
- static const struct variable_validate variable_validate[] = {
-@@ -325,7 +339,7 @@ static const struct variable_validate variable_validate[] = {
- };
-
- static bool
--validate_var(struct efi_variable *var, u8 *data, int len)
-+validate_var(struct efi_variable *var, u8 *data, unsigned long len)
- {
- int i;
- u16 *unicode_name = var->VariableName;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0132-fs-cifs-fix-parsing-of-dfs-referrals.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0132-fs-cifs-fix-parsing-of-dfs-referrals.patch
deleted file mode 100644
index d39f6d8..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0132-fs-cifs-fix-parsing-of-dfs-referrals.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From 39565f288e6b2270679f089aae07d579bbf8a156 Mon Sep 17 00:00:00 2001
-From: Stefan Metzmacher <metze at samba.org>
-Date: Fri, 4 May 2012 00:19:28 +0200
-Subject: [PATCH 132/165] fs/cifs: fix parsing of dfs referrals
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit d8f2799b105a24bb0bbd3380a0d56e6348484058 upstream.
-
-The problem was that the first referral was parsed more than once
-and so the caller tried the same referrals multiple times.
-
-The problem was introduced partly by commit
-066ce6899484d9026acd6ba3a8dbbedb33d7ae1b,
-where 'ref += le16_to_cpu(ref->Size);' got lost,
-but that was also wrong...
-
-Signed-off-by: Stefan Metzmacher <metze at samba.org>
-Tested-by: Björn Jacke <bj at sernet.de>
-Reviewed-by: Jeff Layton <jlayton at redhat.com>
-Signed-off-by: Steve French <sfrench at us.ibm.com>
-[bwh: Backport to 3.2: adjust context]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/cifs/cifssmb.c | 6 +++++-
- 1 files changed, 5 insertions(+), 1 deletions(-)
-
-diff --git a/fs/cifs/cifssmb.c b/fs/cifs/cifssmb.c
-index 0e6adac..e89803b 100644
---- a/fs/cifs/cifssmb.c
-+++ b/fs/cifs/cifssmb.c
-@@ -4826,8 +4826,12 @@ parse_DFS_referrals(TRANSACTION2_GET_DFS_REFER_RSP *pSMBr,
- max_len = data_end - temp;
- node->node_name = cifs_strndup_from_ucs(temp, max_len,
- is_unicode, nls_codepage);
-- if (!node->node_name)
-+ if (!node->node_name) {
- rc = -ENOMEM;
-+ goto parse_DFS_referrals_exit;
-+ }
-+
-+ ref++;
- }
-
- parse_DFS_referrals_exit:
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0133-Fix-__read_seqcount_begin-to-use-ACCESS_ONCE-for-seq.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0133-Fix-__read_seqcount_begin-to-use-ACCESS_ONCE-for-seq.patch
deleted file mode 100644
index d922110..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0133-Fix-__read_seqcount_begin-to-use-ACCESS_ONCE-for-seq.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From 9daab99a20e2ce18687c16c10546e0c5343e22c2 Mon Sep 17 00:00:00 2001
-From: Linus Torvalds <torvalds at linux-foundation.org>
-Date: Fri, 4 May 2012 14:46:02 -0700
-Subject: [PATCH 133/165] Fix __read_seqcount_begin() to use ACCESS_ONCE for
- sequence value read
-
-commit 2f624278626677bfaf73fef97f86b37981621f5c upstream.
-
-We really need to use a ACCESS_ONCE() on the sequence value read in
-__read_seqcount_begin(), because otherwise the compiler might end up
-reloading the value in between the test and the return of it. As a
-result, it might end up returning an odd value (which means that a write
-is in progress).
-
-If the reader is then fast enough that that odd value is still the
-current one when the read_seqcount_retry() is done, we might end up with
-a "successful" read sequence, even despite the concurrent write being
-active.
-
-In practice this probably never really happens - there just isn't
-anything else going on around the read of the sequence count, and the
-common case is that we end up having a read barrier immediately
-afterwards.
-
-So the code sequence in which gcc might decide to reaload from memory is
-small, and there's no reason to believe it would ever actually do the
-reload. But if the compiler ever were to decide to do so, it would be
-incredibly annoying to debug. Let's just make sure.
-
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- include/linux/seqlock.h | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/include/linux/seqlock.h b/include/linux/seqlock.h
-index c6db9fb..bb1fac5 100644
---- a/include/linux/seqlock.h
-+++ b/include/linux/seqlock.h
-@@ -141,7 +141,7 @@ static inline unsigned __read_seqcount_begin(const seqcount_t *s)
- unsigned ret;
-
- repeat:
-- ret = s->sequence;
-+ ret = ACCESS_ONCE(s->sequence);
- if (unlikely(ret & 1)) {
- cpu_relax();
- goto repeat;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0134-hwmon-coretemp-Increase-CPU-core-limit.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0134-hwmon-coretemp-Increase-CPU-core-limit.patch
deleted file mode 100644
index d1fc79d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0134-hwmon-coretemp-Increase-CPU-core-limit.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From d0c9c20fe1b85573de668afb64f38b05c6263998 Mon Sep 17 00:00:00 2001
-From: Guenter Roeck <guenter.roeck at ericsson.com>
-Date: Tue, 1 May 2012 08:15:42 -0700
-Subject: [PATCH 134/165] hwmon: (coretemp) Increase CPU core limit
-
-commit bdc71c9a87b898e4c380c23b2e3e18071312ecde upstream.
-
-CPU core ID is used to index the core_data[] array. The core ID is, however, not
-sequential; 10-core CPUS can have a core ID as high as 25. Increase the limit to
-32 to be able to deal with current CPUs.
-
-Signed-off-by: Guenter Roeck <guenter.roeck at ericsson.com>
-Acked-by: Jean Delvare <khali at linux-fr.org>
-Acked-by: Durgadoss R <durgadoss.r at intel.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/hwmon/coretemp.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/hwmon/coretemp.c b/drivers/hwmon/coretemp.c
-index 104b376..8b53a7a 100644
---- a/drivers/hwmon/coretemp.c
-+++ b/drivers/hwmon/coretemp.c
-@@ -51,7 +51,7 @@ module_param_named(tjmax, force_tjmax, int, 0444);
- MODULE_PARM_DESC(tjmax, "TjMax value in degrees Celsius");
-
- #define BASE_SYSFS_ATTR_NO 2 /* Sysfs Base attr no for coretemp */
--#define NUM_REAL_CORES 16 /* Number of Real cores per cpu */
-+#define NUM_REAL_CORES 32 /* Number of Real cores per cpu */
- #define CORETEMP_NAME_LENGTH 17 /* String Length of attrs */
- #define MAX_CORE_ATTRS 4 /* Maximum no of basic attrs */
- #define TOTAL_ATTRS (MAX_CORE_ATTRS + 1)
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0135-nouveau-initialise-has_optimus-variable.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0135-nouveau-initialise-has_optimus-variable.patch
deleted file mode 100644
index 5a24108..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0135-nouveau-initialise-has_optimus-variable.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From c6ecb5ef76bc2c141529aeab1ef2490b377e1906 Mon Sep 17 00:00:00 2001
-From: Dave Airlie <airlied at redhat.com>
-Date: Wed, 2 May 2012 20:26:24 +0100
-Subject: [PATCH 135/165] nouveau: initialise has_optimus variable.
-
-commit addde4ec31456c5f1e9b61aae3edcfeb0f338f87 upstream.
-
-We should initialise this to 0 really to avoid getting false positives.
-
-Signed-off-by: Dave Airlie <airlied at redhat.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpu/drm/nouveau/nouveau_acpi.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/gpu/drm/nouveau/nouveau_acpi.c b/drivers/gpu/drm/nouveau/nouveau_acpi.c
-index 525744d..3df56c7 100644
---- a/drivers/gpu/drm/nouveau/nouveau_acpi.c
-+++ b/drivers/gpu/drm/nouveau/nouveau_acpi.c
-@@ -245,7 +245,7 @@ static bool nouveau_dsm_detect(void)
- struct acpi_buffer buffer = {sizeof(acpi_method_name), acpi_method_name};
- struct pci_dev *pdev = NULL;
- int has_dsm = 0;
-- int has_optimus;
-+ int has_optimus = 0;
- int vga_count = 0;
- bool guid_valid;
- int retval;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0136-hwmon-coretemp-fix-oops-on-cpu-unplug.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0136-hwmon-coretemp-fix-oops-on-cpu-unplug.patch
deleted file mode 100644
index e2fa646..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0136-hwmon-coretemp-fix-oops-on-cpu-unplug.patch
+++ /dev/null
@@ -1,77 +0,0 @@
-From f9b3a3cd3a49c5c547207f4e8496a39f9d470536 Mon Sep 17 00:00:00 2001
-From: "Kirill A. Shutemov" <kirill.shutemov at linux.intel.com>
-Date: Mon, 30 Apr 2012 09:18:01 -0400
-Subject: [PATCH 136/165] hwmon: (coretemp) fix oops on cpu unplug
-
-commit b704871124b477807966f06789c2b32f2de58bf7 upstream.
-
-coretemp tries to access core_data array beyond bounds on cpu unplug if
-core id of the cpu if more than NUM_REAL_CORES-1.
-
-BUG: unable to handle kernel NULL pointer dereference at 000000000000013c
-IP: [<ffffffffa00159af>] coretemp_cpu_callback+0x93/0x1ba [coretemp]
-PGD 673e5a067 PUD 66e9b3067 PMD 0
-Oops: 0000 [#1] SMP
-CPU 79
-Modules linked in: sunrpc cpufreq_ondemand acpi_cpufreq freq_table mperf bnep bluetooth rfkill ip6t_REJECT nf_conntrack_ipv6 nf_defrag_ipv6 ip6table_filter nf_conntrack_ipv4 nf_defrag_ipv4 ip6_tables xt_state nf_conntrack coretemp crc32c_intel asix tpm_tis pcspkr usbnet iTCO_wdt i2c_i801 microcode mii joydev tpm i2c_core iTCO_vendor_support tpm_bios i7core_edac igb ioatdma edac_core dca megaraid_sas [last unloaded: oprofile]
-
-Pid: 3315, comm: set-cpus Tainted: G W 3.4.0-rc5+ #2 QCI QSSC-S4R/QSSC-S4R
-RIP: 0010:[<ffffffffa00159af>] [<ffffffffa00159af>] coretemp_cpu_callback+0x93/0x1ba [coretemp]
-RSP: 0018:ffff880472fb3d48 EFLAGS: 00010246
-RAX: 0000000000000124 RBX: 0000000000000034 RCX: 00000000ffffffff
-RDX: 0000000000000000 RSI: 0000000000000046 RDI: 0000000000000246
-RBP: ffff880472fb3d88 R08: ffff88077fcd36c0 R09: 0000000000000001
-R10: ffffffff8184bc48 R11: 0000000000000000 R12: ffff880273095800
-R13: 0000000000000013 R14: ffff8802730a1810 R15: 0000000000000000
-FS: 00007f694a20f720(0000) GS:ffff88077fcc0000(0000) knlGS:0000000000000000
-CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
-CR2: 000000000000013c CR3: 000000067209b000 CR4: 00000000000007e0
-DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
-DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
-Process set-cpus (pid: 3315, threadinfo ffff880472fb2000, task ffff880471fa0000)
-Stack:
- ffff880277b4c308 0000000000000003 ffff880472fb3d88 0000000000000005
- 0000000000000034 00000000ffffffd1 ffffffff81cadc70 ffff880472fb3e14
- ffff880472fb3dc8 ffffffff8161f48d ffff880471fa0000 0000000000000034
-Call Trace:
- [<ffffffff8161f48d>] notifier_call_chain+0x4d/0x70
- [<ffffffff8107f1be>] __raw_notifier_call_chain+0xe/0x10
- [<ffffffff81059d30>] __cpu_notify+0x20/0x40
- [<ffffffff815fa251>] _cpu_down+0x81/0x270
- [<ffffffff815fa477>] cpu_down+0x37/0x50
- [<ffffffff815fd6a3>] store_online+0x63/0xc0
- [<ffffffff813c7078>] dev_attr_store+0x18/0x30
- [<ffffffff811f02cf>] sysfs_write_file+0xef/0x170
- [<ffffffff81180443>] vfs_write+0xb3/0x180
- [<ffffffff8118076a>] sys_write+0x4a/0x90
- [<ffffffff816236a9>] system_call_fastpath+0x16/0x1b
-Code: 48 c7 c7 94 60 01 a0 44 0f b7 ac 10 ac 00 00 00 31 c0 e8 41 b7 5f e1 41 83 c5 02 49 63 c5 49 8b 44 c4 10 48 85 c0 74 56 45 31 ff <39> 58 18 75 4e eb 1f 49 63 d7 4c 89 f7 48 89 45 c8 48 6b d2 28
-RIP [<ffffffffa00159af>] coretemp_cpu_callback+0x93/0x1ba [coretemp]
- RSP <ffff880472fb3d48>
-CR2: 000000000000013c
-
-Signed-off-by: Kirill A. Shutemov <kirill.shutemov at linux.intel.com>
-Signed-off-by: Guenter Roeck <guenter.roeck at ericsson.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/hwmon/coretemp.c | 4 ++++
- 1 files changed, 4 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/hwmon/coretemp.c b/drivers/hwmon/coretemp.c
-index 8b53a7a..427468f 100644
---- a/drivers/hwmon/coretemp.c
-+++ b/drivers/hwmon/coretemp.c
-@@ -705,6 +705,10 @@ static void __cpuinit put_core_offline(unsigned int cpu)
-
- indx = TO_ATTR_NO(cpu);
-
-+ /* The core id is too big, just return */
-+ if (indx > MAX_CORE_DATA - 1)
-+ return;
-+
- if (pdata->core_data[indx] && pdata->core_data[indx]->cpu == cpu)
- coretemp_remove_core(pdata, &pdev->dev, indx);
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0137-libata-skip-old-error-history-when-counting-probe-tr.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0137-libata-skip-old-error-history-when-counting-probe-tr.patch
deleted file mode 100644
index 581c14d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0137-libata-skip-old-error-history-when-counting-probe-tr.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From a826ba1d1dd61542f0790e7c646e8534d170d7f6 Mon Sep 17 00:00:00 2001
-From: Lin Ming <ming.m.lin at intel.com>
-Date: Thu, 3 May 2012 22:15:07 +0800
-Subject: [PATCH 137/165] libata: skip old error history when counting probe
- trials
-
-commit 6868225e3e92399068be9a5f1635752d91012ad5 upstream.
-
-Commit d902747("[libata] Add ATA transport class") introduced
-ATA_EFLAG_OLD_ER to mark entries in the error ring as cleared.
-
-But ata_count_probe_trials_cb() didn't check this flag and it still
-counts the old error history. So wrong probe trials count is returned
-and it causes problem, for example, SATA link speed is slowed down from
-3.0Gbps to 1.5Gbps.
-
-Fix it by checking ATA_EFLAG_OLD_ER in ata_count_probe_trials_cb().
-
-Signed-off-by: Lin Ming <ming.m.lin at intel.com>
-Signed-off-by: Jeff Garzik <jgarzik at redhat.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/ata/libata-eh.c | 3 ++-
- 1 files changed, 2 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c
-index a9b2820..58db834 100644
---- a/drivers/ata/libata-eh.c
-+++ b/drivers/ata/libata-eh.c
-@@ -3500,7 +3500,8 @@ static int ata_count_probe_trials_cb(struct ata_ering_entry *ent, void *void_arg
- u64 now = get_jiffies_64();
- int *trials = void_arg;
-
-- if (ent->timestamp < now - min(now, interval))
-+ if ((ent->eflags & ATA_EFLAG_OLD_ER) ||
-+ (ent->timestamp < now - min(now, interval)))
- return -1;
-
- (*trials)++;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0138-b43-only-reload-config-after-successful-initializati.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0138-b43-only-reload-config-after-successful-initializati.patch
deleted file mode 100644
index c3de0fd..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0138-b43-only-reload-config-after-successful-initializati.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From 9edb0f56a8e94b830ce7a97706689fbe8d362066 Mon Sep 17 00:00:00 2001
-From: Seth Forshee <seth.forshee at canonical.com>
-Date: Wed, 25 Apr 2012 17:28:00 -0500
-Subject: [PATCH 138/165] b43: only reload config after successful
- initialization
-
-commit dbdedbdf4fbff3d4962a0786f37aa86dfdc48a7e upstream.
-
-Commit 2a19032 (b43: reload phy and bss settings after core restarts)
-introduced an unconditional call to b43_op_config() at the end of
-b43_op_start(). When firmware fails to load this can wedge the system.
-There's no need to reload the configuration after a failed
-initialization anyway, so only make the call if initialization was
-successful.
-
-BugLink: http://bugs.launchpad.net/bugs/950295
-Cc: Felix Fietkau <nbd at openwrt.org>
-Signed-off-by: Seth Forshee <seth.forshee at canonical.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/wireless/b43/main.c | 10 ++++++++--
- 1 files changed, 8 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/net/wireless/b43/main.c b/drivers/net/wireless/b43/main.c
-index 5634d9a..680709c 100644
---- a/drivers/net/wireless/b43/main.c
-+++ b/drivers/net/wireless/b43/main.c
-@@ -4820,8 +4820,14 @@ static int b43_op_start(struct ieee80211_hw *hw)
- out_mutex_unlock:
- mutex_unlock(&wl->mutex);
-
-- /* reload configuration */
-- b43_op_config(hw, ~0);
-+ /*
-+ * Configuration may have been overwritten during initialization.
-+ * Reload the configuration, but only if initialization was
-+ * successful. Reloading the configuration after a failed init
-+ * may hang the system.
-+ */
-+ if (!err)
-+ b43_op_config(hw, ~0);
-
- return err;
- }
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0139-i2c-pnx-Disable-clk-in-suspend.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0139-i2c-pnx-Disable-clk-in-suspend.patch
deleted file mode 100644
index 58200f9..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0139-i2c-pnx-Disable-clk-in-suspend.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 3413f898d1af58e99c56510c996fb039b6c5cd37 Mon Sep 17 00:00:00 2001
-From: Roland Stigge <stigge at antcom.de>
-Date: Wed, 4 Apr 2012 10:34:37 +0200
-Subject: [PATCH 139/165] i2c: pnx: Disable clk in suspend
-
-commit 6c557cfee08751d22aed34840f389b846f0f4508 upstream.
-
-In the driver's suspend function, clk_enable() was used instead of
-clk_disable(). This is corrected with this patch.
-
-Signed-off-by: Roland Stigge <stigge at antcom.de>
-Reviewed-by: Arnd Bergmann <arnd at arndb.de>
-
-[wsa: reworded commit header slightly]
-
-Signed-off-by: Wolfram Sang <w.sang at pengutronix.de>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/i2c/busses/i2c-pnx.c | 3 +--
- 1 files changed, 1 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/i2c/busses/i2c-pnx.c b/drivers/i2c/busses/i2c-pnx.c
-index 04be9f8..eb8ad53 100644
---- a/drivers/i2c/busses/i2c-pnx.c
-+++ b/drivers/i2c/busses/i2c-pnx.c
-@@ -546,8 +546,7 @@ static int i2c_pnx_controller_suspend(struct platform_device *pdev,
- {
- struct i2c_pnx_algo_data *alg_data = platform_get_drvdata(pdev);
-
-- /* FIXME: shouldn't this be clk_disable? */
-- clk_enable(alg_data->clk);
-+ clk_disable(alg_data->clk);
-
- return 0;
- }
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0140-ipw2200-Fix-race-condition-in-the-command-completion.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0140-ipw2200-Fix-race-condition-in-the-command-completion.patch
deleted file mode 100644
index ce811ab..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0140-ipw2200-Fix-race-condition-in-the-command-completion.patch
+++ /dev/null
@@ -1,74 +0,0 @@
-From 306bd550f671e8d7ac5503cba114e5bb525aa787 Mon Sep 17 00:00:00 2001
-From: Stanislav Yakovlev <stas.yakovlev at gmail.com>
-Date: Thu, 19 Apr 2012 15:55:09 -0400
-Subject: [PATCH 140/165] ipw2200: Fix race condition in the command
- completion acknowledge
-
-commit dd447319895d0c0af423e483d9b63f84f3f8869a upstream.
-
-Driver incorrectly validates command completion: instead of waiting
-for a command to be acknowledged it continues execution. Most of the
-time driver gets acknowledge of the command completion in a tasklet
-before it executes the next one. But sometimes it sends the next
-command before it gets acknowledge for the previous one. In such a
-case one of the following error messages appear in the log:
-
-Failed to send SYSTEM_CONFIG: Already sending a command.
-Failed to send ASSOCIATE: Already sending a command.
-Failed to send TX_POWER: Already sending a command.
-
-After that you need to reload the driver to get it working again.
-
-This bug occurs during roaming (reported by Sam Varshavchik)
-https://bugzilla.redhat.com/show_bug.cgi?id=738508
-and machine booting (reported by Tom Gundersen and Mads Kiilerich)
-https://bugs.archlinux.org/task/28097
-https://bugzilla.redhat.com/show_bug.cgi?id=802106
-
-This patch doesn't fix the delay issue during firmware load.
-But at least device now works as usual after boot.
-
-Signed-off-by: Stanislav Yakovlev <stas.yakovlev at gmail.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/wireless/ipw2x00/ipw2200.c | 13 ++++++++++++-
- 1 files changed, 12 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/net/wireless/ipw2x00/ipw2200.c b/drivers/net/wireless/ipw2x00/ipw2200.c
-index 99a710d..827889b 100644
---- a/drivers/net/wireless/ipw2x00/ipw2200.c
-+++ b/drivers/net/wireless/ipw2x00/ipw2200.c
-@@ -2183,6 +2183,7 @@ static int __ipw_send_cmd(struct ipw_priv *priv, struct host_cmd *cmd)
- {
- int rc = 0;
- unsigned long flags;
-+ unsigned long now, end;
-
- spin_lock_irqsave(&priv->lock, flags);
- if (priv->status & STATUS_HCMD_ACTIVE) {
-@@ -2224,10 +2225,20 @@ static int __ipw_send_cmd(struct ipw_priv *priv, struct host_cmd *cmd)
- }
- spin_unlock_irqrestore(&priv->lock, flags);
-
-+ now = jiffies;
-+ end = now + HOST_COMPLETE_TIMEOUT;
-+again:
- rc = wait_event_interruptible_timeout(priv->wait_command_queue,
- !(priv->
- status & STATUS_HCMD_ACTIVE),
-- HOST_COMPLETE_TIMEOUT);
-+ end - now);
-+ if (rc < 0) {
-+ now = jiffies;
-+ if (time_before(now, end))
-+ goto again;
-+ rc = 0;
-+ }
-+
- if (rc == 0) {
- spin_lock_irqsave(&priv->lock, flags);
- if (priv->status & STATUS_HCMD_ACTIVE) {
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0141-mac80211-fix-AP-mode-EAP-tx-for-VLAN-stations.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0141-mac80211-fix-AP-mode-EAP-tx-for-VLAN-stations.patch
deleted file mode 100644
index 5a35f40..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0141-mac80211-fix-AP-mode-EAP-tx-for-VLAN-stations.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From d60da87d5ec426412fc4c55d4231c292ceb51a41 Mon Sep 17 00:00:00 2001
-From: Felix Fietkau <nbd at openwrt.org>
-Date: Sun, 29 Apr 2012 15:44:16 +0200
-Subject: [PATCH 141/165] mac80211: fix AP mode EAP tx for VLAN stations
-
-commit 66f2c99af3d6f2d0aa1120884cf1c60613ef61c0 upstream.
-
-EAP frames for stations in an AP VLAN are sent on the main AP interface
-to avoid race conditions wrt. moving stations.
-For that to work properly, sta_info_get_bss must be used instead of
-sta_info_get when sending EAP packets.
-Previously this was only done for cooked monitor injected packets, so
-this patch adds a check for tx->skb->protocol to the same place.
-
-Signed-off-by: Felix Fietkau <nbd at openwrt.org>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/mac80211/tx.c | 3 ++-
- 1 files changed, 2 insertions(+), 1 deletions(-)
-
-diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
-index eff1f4e..4ff35bf 100644
---- a/net/mac80211/tx.c
-+++ b/net/mac80211/tx.c
-@@ -1121,7 +1121,8 @@ ieee80211_tx_prepare(struct ieee80211_sub_if_data *sdata,
- tx->sta = rcu_dereference(sdata->u.vlan.sta);
- if (!tx->sta && sdata->dev->ieee80211_ptr->use_4addr)
- return TX_DROP;
-- } else if (info->flags & IEEE80211_TX_CTL_INJECTED) {
-+ } else if (info->flags & IEEE80211_TX_CTL_INJECTED ||
-+ tx->sdata->control_port_protocol == tx->skb->protocol) {
- tx->sta = sta_info_get_bss(sdata, hdr->addr1);
- }
- if (!tx->sta)
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0142-rtlwifi-Fix-oops-on-unload.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0142-rtlwifi-Fix-oops-on-unload.patch
deleted file mode 100644
index 6a60247..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0142-rtlwifi-Fix-oops-on-unload.patch
+++ /dev/null
@@ -1,67 +0,0 @@
-From 53290583562535da122f89cc3acb6babf2c55e66 Mon Sep 17 00:00:00 2001
-From: Larry Finger <Larry.Finger at lwfinger.net>
-Date: Thu, 19 Apr 2012 21:39:06 -0500
-Subject: [PATCH 142/165] rtlwifi: Fix oops on unload
-
-commit 44eb65cfd8da4b9c231238998729e858e963a980 upstream.
-
-Under some circumstances, a PCI-based driver reports the following OOPs:
-
-Mar 19 08:14:35 kvothe kernel: [ 6584.626011] Oops: 0000 [#1] SMP
---snip--
-Mar 19 08:14:35 kvothe kernel: [ 6584.626011] Pid: 19627, comm: rmmod
-Not tainted 3.2.9-2.fc16.x86_64 #1 LENOVO 05962RU/05962RU
-Mar 19 08:14:35 kvothe kernel: [ 6584.626011] RIP:
-0010:[<ffffffffa0418d39>] [<ffffffffa0418d39>]
-rtl92ce_get_desc+0x19/0xd0 [rtl8192ce]
---snip--
-Mar 19 08:14:35 kvothe kernel: [ 6584.626011] Process rmmod (pid:
-19627, threadinfo ffff880050262000, task ffff8801156d5cc0)
-Mar 19 08:14:35 kvothe kernel: [ 6584.626011] Stack:
-Mar 19 08:14:35 kvothe kernel: [ 6584.626011] 0000000000000002
-ffff8801176c2540 ffff880050263ca8 ffffffffa03348e7
-Mar 19 08:14:35 kvothe kernel: [ 6584.626011] 0000000000000282
-0000000180150014 ffff880050263fd8 ffff8801176c2810
-Mar 19 08:14:35 kvothe kernel: [ 6584.626011] ffff880050263bc8
-ffffffff810550e2 00000000000002c0 ffff8801176c0d40
-Mar 19 08:14:35 kvothe kernel: [ 6584.626011] Call Trace:
-Mar 19 08:14:35 kvothe kernel: [ 6584.626011] [<ffffffffa03348e7>]
-_rtl_pci_rx_interrupt+0x187/0x650 [rtlwifi]
---snip--
-Mar 19 08:14:35 kvothe kernel: [ 6584.626011] Code: ff 09 d0 89 07 48
-83 c4 08 5b 5d c3 66 0f 1f 44 00 00 55 48 89 e5 53 48 83 ec 08 66 66
-66 66 90 40 84 f6 89 d3 74 13 84 d2 75 57 <8b> 07 48 83 c4 08 5b 5d c1
-e8 1f c3 0f 1f 00 84 d2 74 ed 80 fa
-Mar 19 08:14:35 kvothe kernel: [ 6584.626011] RIP
-[<ffffffffa0418d39>] rtl92ce_get_desc+0x19/0xd0 [rtl8192ce]
-Mar 19 08:14:35 kvothe kernel: [ 6584.626011] RSP <ffff880050263b58>
-Mar 19 08:14:35 kvothe kernel: [ 6584.626011] CR2: 00000000000006e0
-Mar 19 08:14:35 kvothe kernel: [ 6584.646491] ---[ end trace
-8636c766dcfbe0e6 ]---
-
-This oops is due to interrupts not being disabled in this particular path.
-
-Reported-by: Dave Airlie <airlied at gmail.com>
-Tested-by: Dave Airlie <airlied at gmail.com>
-Signed-off-by: Larry Finger <Larry.Finger at lwfinger.net>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/wireless/rtlwifi/pci.c | 1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/net/wireless/rtlwifi/pci.c b/drivers/net/wireless/rtlwifi/pci.c
-index d44d398..47ba0f7 100644
---- a/drivers/net/wireless/rtlwifi/pci.c
-+++ b/drivers/net/wireless/rtlwifi/pci.c
-@@ -1961,6 +1961,7 @@ void rtl_pci_disconnect(struct pci_dev *pdev)
- rtl_deinit_deferred_work(hw);
- rtlpriv->intf_ops->adapter_stop(hw);
- }
-+ rtlpriv->cfg->ops->disable_interrupt(hw);
-
- /*deinit rfkill */
- rtl_deinit_rfkill(hw);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0143-wl1251-fix-crash-on-remove-due-to-premature-kfree.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0143-wl1251-fix-crash-on-remove-due-to-premature-kfree.patch
deleted file mode 100644
index c07b0d1..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0143-wl1251-fix-crash-on-remove-due-to-premature-kfree.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 7b9847c5e4ba91a74d25b755ee45703487c5189e Mon Sep 17 00:00:00 2001
-From: Grazvydas Ignotas <notasas at gmail.com>
-Date: Thu, 26 Apr 2012 23:07:43 +0300
-Subject: [PATCH 143/165] wl1251: fix crash on remove due to premature kfree
-
-commit 328c32f0f85467af5a6c4c3289e168d9ad2555af upstream.
-
-Currently SDIO glue frees it's own structure before calling
-wl1251_free_hw(), which in turn calls ieee80211_unregister_hw().
-The later call may result in a need to communicate with the chip
-to stop it (as it happens now if the interface is still up before
-rmmod), which means calls are made back to the glue, resulting in
-freed memory access.
-
-Fix this by freeing glue data last.
-
-Signed-off-by: Grazvydas Ignotas <notasas at gmail.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/wireless/wl1251/sdio.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/net/wireless/wl1251/sdio.c b/drivers/net/wireless/wl1251/sdio.c
-index f786942..1b851f6 100644
---- a/drivers/net/wireless/wl1251/sdio.c
-+++ b/drivers/net/wireless/wl1251/sdio.c
-@@ -315,8 +315,8 @@ static void __devexit wl1251_sdio_remove(struct sdio_func *func)
-
- if (wl->irq)
- free_irq(wl->irq, wl);
-- kfree(wl_sdio);
- wl1251_free_hw(wl);
-+ kfree(wl_sdio);
-
- sdio_claim_host(func);
- sdio_release_irq(func);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0144-wl1251-fix-crash-on-remove-due-to-leftover-work-item.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0144-wl1251-fix-crash-on-remove-due-to-leftover-work-item.patch
deleted file mode 100644
index 3873825..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0144-wl1251-fix-crash-on-remove-due-to-leftover-work-item.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From aac395832157e17755262dfe2f08d99a454f66f9 Mon Sep 17 00:00:00 2001
-From: Grazvydas Ignotas <notasas at gmail.com>
-Date: Thu, 26 Apr 2012 23:07:44 +0300
-Subject: [PATCH 144/165] wl1251: fix crash on remove due to leftover work
- item
-
-commit 4c1bcdb5a3354b250b82a67549f57ac27a3bb85f upstream.
-
-This driver currently leaves elp_work behind when stopping, which
-occasionally results in data corruption because work function ends
-up accessing freed memory, typical symptoms of this are various
-worker_thread crashes. Fix it by cancelling elp_work.
-
-Signed-off-by: Grazvydas Ignotas <notasas at gmail.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/wireless/wl1251/main.c | 1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/net/wireless/wl1251/main.c b/drivers/net/wireless/wl1251/main.c
-index ba3268e..40c1574 100644
---- a/drivers/net/wireless/wl1251/main.c
-+++ b/drivers/net/wireless/wl1251/main.c
-@@ -479,6 +479,7 @@ static void wl1251_op_stop(struct ieee80211_hw *hw)
- cancel_work_sync(&wl->irq_work);
- cancel_work_sync(&wl->tx_work);
- cancel_work_sync(&wl->filter_work);
-+ cancel_delayed_work_sync(&wl->elp_work);
-
- mutex_lock(&wl->mutex);
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0145-iwlwifi-do-not-nulify-ctx-vif-on-reset.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0145-iwlwifi-do-not-nulify-ctx-vif-on-reset.patch
deleted file mode 100644
index cdd9c4a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0145-iwlwifi-do-not-nulify-ctx-vif-on-reset.patch
+++ /dev/null
@@ -1,85 +0,0 @@
-From 3fabef3cff16e308410b75ac612ba271be969051 Mon Sep 17 00:00:00 2001
-From: Stanislaw Gruszka <sgruszka at redhat.com>
-Date: Wed, 18 Apr 2012 08:01:15 -0700
-Subject: [PATCH 145/165] iwlwifi: do not nulify ctx->vif on reset
-
-commit 8db4c7e25d153fb049e81715d72fa3be3a0c3b69 upstream.
-
-ctx->vif is dereferenced in different part of iwlwifi code, so do not
-nullify it.
-
-This should address at least one of the possible reasons of WARNING at
-iwlagn_mac_remove_interface, and perhaps some random crashes when
-firmware reset is performed.
-
-Signed-off-by: Stanislaw Gruszka <sgruszka at redhat.com>
-Signed-off-by: Wey-Yi Guy <wey-yi.w.guy at intel.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-[bwh: Backported to 3.2:
- - Change filename iwl-mac80211.c to iwl-core.c
- - Change context in iwlagn_prepare_restart()]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/wireless/iwlwifi/iwl-agn.c | 3 ---
- drivers/net/wireless/iwlwifi/iwl-core.c | 10 +++++++++-
- 2 files changed, 9 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c
-index e0e9a3d..d7d2512 100644
---- a/drivers/net/wireless/iwlwifi/iwl-agn.c
-+++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
-@@ -1504,7 +1504,6 @@ static void iwl_bg_run_time_calib_work(struct work_struct *work)
-
- static void iwlagn_prepare_restart(struct iwl_priv *priv)
- {
-- struct iwl_rxon_context *ctx;
- bool bt_full_concurrent;
- u8 bt_ci_compliance;
- u8 bt_load;
-@@ -1513,8 +1512,6 @@ static void iwlagn_prepare_restart(struct iwl_priv *priv)
-
- lockdep_assert_held(&priv->shrd->mutex);
-
-- for_each_context(priv, ctx)
-- ctx->vif = NULL;
- priv->is_open = 0;
-
- /*
-diff --git a/drivers/net/wireless/iwlwifi/iwl-core.c b/drivers/net/wireless/iwlwifi/iwl-core.c
-index 3d75d4c..832ec4d 100644
---- a/drivers/net/wireless/iwlwifi/iwl-core.c
-+++ b/drivers/net/wireless/iwlwifi/iwl-core.c
-@@ -1228,6 +1228,7 @@ int iwlagn_mac_add_interface(struct ieee80211_hw *hw,
- struct iwl_rxon_context *tmp, *ctx = NULL;
- int err;
- enum nl80211_iftype viftype = ieee80211_vif_type_p2p(vif);
-+ bool reset = false;
-
- IWL_DEBUG_MAC80211(priv, "enter: type %d, addr %pM\n",
- viftype, vif->addr);
-@@ -1249,6 +1250,13 @@ int iwlagn_mac_add_interface(struct ieee80211_hw *hw,
- tmp->interface_modes | tmp->exclusive_interface_modes;
-
- if (tmp->vif) {
-+ /* On reset we need to add the same interface again */
-+ if (tmp->vif == vif) {
-+ reset = true;
-+ ctx = tmp;
-+ break;
-+ }
-+
- /* check if this busy context is exclusive */
- if (tmp->exclusive_interface_modes &
- BIT(tmp->vif->type)) {
-@@ -1275,7 +1283,7 @@ int iwlagn_mac_add_interface(struct ieee80211_hw *hw,
- ctx->vif = vif;
-
- err = iwl_setup_interface(priv, ctx);
-- if (!err)
-+ if (!err || reset)
- goto out;
-
- ctx->vif = NULL;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0146-iwlwifi-fix-hardware-queue-programming.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0146-iwlwifi-fix-hardware-queue-programming.patch
deleted file mode 100644
index c86049b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0146-iwlwifi-fix-hardware-queue-programming.patch
+++ /dev/null
@@ -1,114 +0,0 @@
-From dabe62a4921edd9f40f1477912cc0ac706f5e63d Mon Sep 17 00:00:00 2001
-From: Johannes Berg <johannes.berg at intel.com>
-Date: Mon, 23 Apr 2012 14:17:50 -0700
-Subject: [PATCH 146/165] iwlwifi: fix hardware queue programming
-
-commit 5ef4acd58ab2abd0dd0c8e3cacd61a0dc5d73646 upstream.
-
-Newer devices have 20 (5000 series) or 30 (6000 series)
-hardware queues, rather than the 16 that 4965 had. This
-was added to the driver a long time ago, but improperly:
-the queue registers for the higher queues aren't just
-continuations of the registers for the first 16 queues,
-they are in other places. Therefore, the hardware would
-lock up when trying to activate queue 16 or above and
-the device would have to be restarted.
-
-Thanks goes to Emmanuel who identified this and told me
-how the queue programming should be done.
-
-Note that we don't use queues 20 and higher today and
-doing so needs more work than this.
-
-Signed-off-by: Johannes Berg <johannes.berg at intel.com>
-Signed-off-by: Wey-Yi Guy <wey-yi.w.guy at intel.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/wireless/iwlwifi/iwl-fh.h | 24 +++++++++++++++++++-----
- drivers/net/wireless/iwlwifi/iwl-prph.h | 27 ++++++++++++++++++++++++---
- 2 files changed, 43 insertions(+), 8 deletions(-)
-
-diff --git a/drivers/net/wireless/iwlwifi/iwl-fh.h b/drivers/net/wireless/iwlwifi/iwl-fh.h
-index 5bede9d..aae992a 100644
---- a/drivers/net/wireless/iwlwifi/iwl-fh.h
-+++ b/drivers/net/wireless/iwlwifi/iwl-fh.h
-@@ -104,15 +104,29 @@
- * (see struct iwl_tfd_frame). These 16 pointer registers are offset by 0x04
- * bytes from one another. Each TFD circular buffer in DRAM must be 256-byte
- * aligned (address bits 0-7 must be 0).
-+ * Later devices have 20 (5000 series) or 30 (higher) queues, but the registers
-+ * for them are in different places.
- *
- * Bit fields in each pointer register:
- * 27-0: TFD CB physical base address [35:8], must be 256-byte aligned
- */
--#define FH_MEM_CBBC_LOWER_BOUND (FH_MEM_LOWER_BOUND + 0x9D0)
--#define FH_MEM_CBBC_UPPER_BOUND (FH_MEM_LOWER_BOUND + 0xA10)
--
--/* Find TFD CB base pointer for given queue (range 0-15). */
--#define FH_MEM_CBBC_QUEUE(x) (FH_MEM_CBBC_LOWER_BOUND + (x) * 0x4)
-+#define FH_MEM_CBBC_0_15_LOWER_BOUND (FH_MEM_LOWER_BOUND + 0x9D0)
-+#define FH_MEM_CBBC_0_15_UPPER_BOUND (FH_MEM_LOWER_BOUND + 0xA10)
-+#define FH_MEM_CBBC_16_19_LOWER_BOUND (FH_MEM_LOWER_BOUND + 0xBF0)
-+#define FH_MEM_CBBC_16_19_UPPER_BOUND (FH_MEM_LOWER_BOUND + 0xC00)
-+#define FH_MEM_CBBC_20_31_LOWER_BOUND (FH_MEM_LOWER_BOUND + 0xB20)
-+#define FH_MEM_CBBC_20_31_UPPER_BOUND (FH_MEM_LOWER_BOUND + 0xB80)
-+
-+/* Find TFD CB base pointer for given queue */
-+static inline unsigned int FH_MEM_CBBC_QUEUE(unsigned int chnl)
-+{
-+ if (chnl < 16)
-+ return FH_MEM_CBBC_0_15_LOWER_BOUND + 4 * chnl;
-+ if (chnl < 20)
-+ return FH_MEM_CBBC_16_19_LOWER_BOUND + 4 * (chnl - 16);
-+ WARN_ON_ONCE(chnl >= 32);
-+ return FH_MEM_CBBC_20_31_LOWER_BOUND + 4 * (chnl - 20);
-+}
-
-
- /**
-diff --git a/drivers/net/wireless/iwlwifi/iwl-prph.h b/drivers/net/wireless/iwlwifi/iwl-prph.h
-index bebdd82..d9b089e 100644
---- a/drivers/net/wireless/iwlwifi/iwl-prph.h
-+++ b/drivers/net/wireless/iwlwifi/iwl-prph.h
-@@ -227,12 +227,33 @@
- #define SCD_AIT (SCD_BASE + 0x0c)
- #define SCD_TXFACT (SCD_BASE + 0x10)
- #define SCD_ACTIVE (SCD_BASE + 0x14)
--#define SCD_QUEUE_WRPTR(x) (SCD_BASE + 0x18 + (x) * 4)
--#define SCD_QUEUE_RDPTR(x) (SCD_BASE + 0x68 + (x) * 4)
- #define SCD_QUEUECHAIN_SEL (SCD_BASE + 0xe8)
- #define SCD_AGGR_SEL (SCD_BASE + 0x248)
- #define SCD_INTERRUPT_MASK (SCD_BASE + 0x108)
--#define SCD_QUEUE_STATUS_BITS(x) (SCD_BASE + 0x10c + (x) * 4)
-+
-+static inline unsigned int SCD_QUEUE_WRPTR(unsigned int chnl)
-+{
-+ if (chnl < 20)
-+ return SCD_BASE + 0x18 + chnl * 4;
-+ WARN_ON_ONCE(chnl >= 32);
-+ return SCD_BASE + 0x284 + (chnl - 20) * 4;
-+}
-+
-+static inline unsigned int SCD_QUEUE_RDPTR(unsigned int chnl)
-+{
-+ if (chnl < 20)
-+ return SCD_BASE + 0x68 + chnl * 4;
-+ WARN_ON_ONCE(chnl >= 32);
-+ return SCD_BASE + 0x2B4 + (chnl - 20) * 4;
-+}
-+
-+static inline unsigned int SCD_QUEUE_STATUS_BITS(unsigned int chnl)
-+{
-+ if (chnl < 20)
-+ return SCD_BASE + 0x10c + chnl * 4;
-+ WARN_ON_ONCE(chnl >= 32);
-+ return SCD_BASE + 0x384 + (chnl - 20) * 4;
-+}
-
- /*********************** END TX SCHEDULER *************************************/
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0147-hfsplus-Fix-potential-buffer-overflows.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0147-hfsplus-Fix-potential-buffer-overflows.patch
deleted file mode 100644
index f379dc3..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0147-hfsplus-Fix-potential-buffer-overflows.patch
+++ /dev/null
@@ -1,79 +0,0 @@
-From e5c4ffba0f91d7315823292c6a46a0e3a35cf5f1 Mon Sep 17 00:00:00 2001
-From: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Date: Fri, 4 May 2012 12:09:39 -0700
-Subject: [PATCH 147/165] hfsplus: Fix potential buffer overflows
-
-commit 6f24f892871acc47b40dd594c63606a17c714f77 upstream.
-
-Commit ec81aecb2966 ("hfs: fix a potential buffer overflow") fixed a few
-potential buffer overflows in the hfs filesystem. But as Timo Warns
-pointed out, these changes also need to be made on the hfsplus
-filesystem as well.
-
-Reported-by: Timo Warns <warns at pre-sense.de>
-Acked-by: WANG Cong <amwang at redhat.com>
-Cc: Alexey Khoroshilov <khoroshilov at ispras.ru>
-Cc: Miklos Szeredi <mszeredi at suse.cz>
-Cc: Sage Weil <sage at newdream.net>
-Cc: Eugene Teo <eteo at redhat.com>
-Cc: Roman Zippel <zippel at linux-m68k.org>
-Cc: Al Viro <viro at zeniv.linux.org.uk>
-Cc: Christoph Hellwig <hch at lst.de>
-Cc: Alexey Dobriyan <adobriyan at gmail.com>
-Cc: Dave Anderson <anderson at redhat.com>
-Cc: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/hfsplus/catalog.c | 4 ++++
- fs/hfsplus/dir.c | 11 +++++++++++
- 2 files changed, 15 insertions(+), 0 deletions(-)
-
-diff --git a/fs/hfsplus/catalog.c b/fs/hfsplus/catalog.c
-index 4dfbfec..ec2a9c2 100644
---- a/fs/hfsplus/catalog.c
-+++ b/fs/hfsplus/catalog.c
-@@ -366,6 +366,10 @@ int hfsplus_rename_cat(u32 cnid,
- err = hfs_brec_find(&src_fd);
- if (err)
- goto out;
-+ if (src_fd.entrylength > sizeof(entry) || src_fd.entrylength < 0) {
-+ err = -EIO;
-+ goto out;
-+ }
-
- hfs_bnode_read(src_fd.bnode, &entry, src_fd.entryoffset,
- src_fd.entrylength);
-diff --git a/fs/hfsplus/dir.c b/fs/hfsplus/dir.c
-index 4536cd3..5adb740 100644
---- a/fs/hfsplus/dir.c
-+++ b/fs/hfsplus/dir.c
-@@ -150,6 +150,11 @@ static int hfsplus_readdir(struct file *filp, void *dirent, filldir_t filldir)
- filp->f_pos++;
- /* fall through */
- case 1:
-+ if (fd.entrylength > sizeof(entry) || fd.entrylength < 0) {
-+ err = -EIO;
-+ goto out;
-+ }
-+
- hfs_bnode_read(fd.bnode, &entry, fd.entryoffset,
- fd.entrylength);
- if (be16_to_cpu(entry.type) != HFSPLUS_FOLDER_THREAD) {
-@@ -181,6 +186,12 @@ static int hfsplus_readdir(struct file *filp, void *dirent, filldir_t filldir)
- err = -EIO;
- goto out;
- }
-+
-+ if (fd.entrylength > sizeof(entry) || fd.entrylength < 0) {
-+ err = -EIO;
-+ goto out;
-+ }
-+
- hfs_bnode_read(fd.bnode, &entry, fd.entryoffset,
- fd.entrylength);
- type = be16_to_cpu(entry.type);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0148-ASoC-tlv312aic23-unbreak-resume.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0148-ASoC-tlv312aic23-unbreak-resume.patch
deleted file mode 100644
index 9f93387..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0148-ASoC-tlv312aic23-unbreak-resume.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From b0209aed70b2cc2a544817e2b57d68d9dfcf4635 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Eric=20B=C3=A9nard?= <eric at eukrea.com>
-Date: Sun, 29 Apr 2012 17:37:57 +0200
-Subject: [PATCH 148/165] ASoC: tlv312aic23: unbreak resume
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit e875c1e3e758447ba81ca450d89434b3b0496d37 upstream.
-
-* commit f9dfbf9 "ASoC: tlv320aic23: convert to soc-cache" leads to
-a bug preventing resumeof the codec as regmap expects a 9 bits data
-register but 0xFFFF is passed in tlv320aic23_set_bias_level and this
-values gets cached preventing any write to the TLV320AIC23_PWR
-register as the final value produced by regmap is (register << 9) | value
-
-* this patch solves the problem by only working on the 9 bits the
-register contains.
-
-Signed-off-by: Eric Bénard <eric at eukrea.com>
-Signed-off-by: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- sound/soc/codecs/tlv320aic23.c | 4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/sound/soc/codecs/tlv320aic23.c b/sound/soc/codecs/tlv320aic23.c
-index 336de8f..0e7e26e 100644
---- a/sound/soc/codecs/tlv320aic23.c
-+++ b/sound/soc/codecs/tlv320aic23.c
-@@ -473,7 +473,7 @@ static int tlv320aic23_set_dai_sysclk(struct snd_soc_dai *codec_dai,
- static int tlv320aic23_set_bias_level(struct snd_soc_codec *codec,
- enum snd_soc_bias_level level)
- {
-- u16 reg = snd_soc_read(codec, TLV320AIC23_PWR) & 0xff7f;
-+ u16 reg = snd_soc_read(codec, TLV320AIC23_PWR) & 0x17f;
-
- switch (level) {
- case SND_SOC_BIAS_ON:
-@@ -492,7 +492,7 @@ static int tlv320aic23_set_bias_level(struct snd_soc_codec *codec,
- case SND_SOC_BIAS_OFF:
- /* everything off, dac mute, inactive */
- snd_soc_write(codec, TLV320AIC23_ACTIVE, 0x0);
-- snd_soc_write(codec, TLV320AIC23_PWR, 0xffff);
-+ snd_soc_write(codec, TLV320AIC23_PWR, 0x1ff);
- break;
- }
- codec->dapm.bias_level = level;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0149-asm-generic-Use-__BITS_PER_LONG-in-statfs.h.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0149-asm-generic-Use-__BITS_PER_LONG-in-statfs.h.patch
deleted file mode 100644
index 43289d6..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0149-asm-generic-Use-__BITS_PER_LONG-in-statfs.h.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 09fdfacc87dfa2183da3d66ac788901636ef33f2 Mon Sep 17 00:00:00 2001
-From: "H. Peter Anvin" <hpa at linux.intel.com>
-Date: Thu, 26 Apr 2012 11:45:16 -0700
-Subject: [PATCH 149/165] asm-generic: Use __BITS_PER_LONG in statfs.h
-
-commit f5c2347ee20a8d6964d6a6b1ad04f200f8d4dfa7 upstream.
-
-<asm-generic/statfs.h> is exported to userspace, so using
-BITS_PER_LONG is invalid. We need to use __BITS_PER_LONG instead.
-
-This is kernel bugzilla 43165.
-
-Reported-by: H.J. Lu <hjl.tools at gmail.com>
-Signed-off-by: H. Peter Anvin <hpa at linux.intel.com>
-Link: http://lkml.kernel.org/r/1335465916-16965-1-git-send-email-hpa@linux.intel.com
-Acked-by: Arnd Bergmann <arnd at arndb.de>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- include/asm-generic/statfs.h | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/include/asm-generic/statfs.h b/include/asm-generic/statfs.h
-index 0fd28e0..c749af9 100644
---- a/include/asm-generic/statfs.h
-+++ b/include/asm-generic/statfs.h
-@@ -15,7 +15,7 @@ typedef __kernel_fsid_t fsid_t;
- * with a 10' pole.
- */
- #ifndef __statfs_word
--#if BITS_PER_LONG == 64
-+#if __BITS_PER_LONG == 64
- #define __statfs_word long
- #else
- #define __statfs_word __u32
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0150-x86-relocs-Remove-an-unused-variable.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0150-x86-relocs-Remove-an-unused-variable.patch
deleted file mode 100644
index 5b06381..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0150-x86-relocs-Remove-an-unused-variable.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 174b97406f578b117e9403dde42ac98f80919a0b Mon Sep 17 00:00:00 2001
-From: Kusanagi Kouichi <slash at ac.auone-net.jp>
-Date: Sun, 1 Apr 2012 17:29:32 +0900
-Subject: [PATCH 150/165] x86, relocs: Remove an unused variable
-
-commit 7c77cda0fe742ed07622827ce80963bbeebd1e3f upstream.
-
-sh_symtab is set but not used.
-
-[ hpa: putting this in urgent because of the sheer harmlessness of the patch:
- it quiets a build warning but does not change any generated code. ]
-
-Signed-off-by: Kusanagi Kouichi <slash at ac.auone-net.jp>
-Link: http://lkml.kernel.org/r/20120401082932.D5E066FC03D@msa105.auone-net.jp
-Signed-off-by: H. Peter Anvin <hpa at linux.intel.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/x86/boot/compressed/relocs.c | 2 --
- 1 files changed, 0 insertions(+), 2 deletions(-)
-
-diff --git a/arch/x86/boot/compressed/relocs.c b/arch/x86/boot/compressed/relocs.c
-index 89bbf4e..e77f4e4 100644
---- a/arch/x86/boot/compressed/relocs.c
-+++ b/arch/x86/boot/compressed/relocs.c
-@@ -402,13 +402,11 @@ static void print_absolute_symbols(void)
- for (i = 0; i < ehdr.e_shnum; i++) {
- struct section *sec = &secs[i];
- char *sym_strtab;
-- Elf32_Sym *sh_symtab;
- int j;
-
- if (sec->shdr.sh_type != SHT_SYMTAB) {
- continue;
- }
-- sh_symtab = sec->symtab;
- sym_strtab = sec->link->strtab;
- for (j = 0; j < sec->shdr.sh_size/sizeof(Elf32_Sym); j++) {
- Elf32_Sym *sym;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0151-ARM-7410-1-Add-extra-clobber-registers-for-assembly-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0151-ARM-7410-1-Add-extra-clobber-registers-for-assembly-.patch
deleted file mode 100644
index b712f67..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0151-ARM-7410-1-Add-extra-clobber-registers-for-assembly-.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 8a73393b01a8d2a9959a094d34d037802d78161b Mon Sep 17 00:00:00 2001
-From: Tim Bird <tim.bird at am.sony.com>
-Date: Wed, 2 May 2012 22:55:39 +0100
-Subject: [PATCH 151/165] ARM: 7410/1: Add extra clobber registers for
- assembly in kernel_execve
-
-commit e787ec1376e862fcea1bfd523feb7c5fb43ecdb9 upstream.
-
-The inline assembly in kernel_execve() uses r8 and r9. Since this
-code sequence does not return, it usually doesn't matter if the
-register clobber list is accurate. However, I saw a case where a
-particular version of gcc used r8 as an intermediate for the value
-eventually passed to r9. Because r8 is used in the inline
-assembly, and not mentioned in the clobber list, r9 was set
-to an incorrect value.
-
-This resulted in a kernel panic on execution of the first user-space
-program in the system. r9 is used in ret_to_user as the thread_info
-pointer, and if it's wrong, bad things happen.
-
-Signed-off-by: Tim Bird <tim.bird at am.sony.com>
-Signed-off-by: Russell King <rmk+kernel at arm.linux.org.uk>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/arm/kernel/sys_arm.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/arch/arm/kernel/sys_arm.c b/arch/arm/kernel/sys_arm.c
-index d2b1779..76cbb05 100644
---- a/arch/arm/kernel/sys_arm.c
-+++ b/arch/arm/kernel/sys_arm.c
-@@ -115,7 +115,7 @@ int kernel_execve(const char *filename,
- "Ir" (THREAD_START_SP - sizeof(regs)),
- "r" (®s),
- "Ir" (sizeof(regs))
-- : "r0", "r1", "r2", "r3", "ip", "lr", "memory");
-+ : "r0", "r1", "r2", "r3", "r8", "r9", "ip", "lr", "memory");
-
- out:
- return ret;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0152-ARM-7414-1-SMP-prevent-use-of-the-console-when-using.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0152-ARM-7414-1-SMP-prevent-use-of-the-console-when-using.patch
deleted file mode 100644
index d84c0d4..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0152-ARM-7414-1-SMP-prevent-use-of-the-console-when-using.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From c4c0043207f643dbe84706b1f3d6948b1e2de64d Mon Sep 17 00:00:00 2001
-From: Colin Cross <ccross at android.com>
-Date: Sat, 5 May 2012 20:58:13 +0100
-Subject: [PATCH 152/165] ARM: 7414/1: SMP: prevent use of the console when
- using idmap_pgd
-
-commit fde165b2a29673aabf18ceff14dea1f1cfb0daad upstream.
-
-Commit 4e8ee7de227e3ab9a72040b448ad728c5428a042 (ARM: SMP: use
-idmap_pgd for mapping MMU enable during secondary booting)
-switched secondary boot to use idmap_pgd, which is initialized
-during early_initcall, instead of a page table initialized during
-__cpu_up. This causes idmap_pgd to contain the static mappings
-but be missing all dynamic mappings.
-
-If a console is registered that creates a dynamic mapping, the
-printk in secondary_start_kernel will trigger a data abort on
-the missing mapping before the exception handlers have been
-initialized, leading to a hang. Initial boot is not affected
-because no consoles have been registered, and resume is usually
-not affected because the offending console is suspended.
-Onlining a cpu with hotplug triggers the problem.
-
-A workaround is to the printk in secondary_start_kernel until
-after the page tables have been switched back to init_mm.
-
-Signed-off-by: Colin Cross <ccross at android.com>
-Signed-off-by: Russell King <rmk+kernel at arm.linux.org.uk>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/arm/kernel/smp.c | 4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c
-index ef5640b..e10e59a 100644
---- a/arch/arm/kernel/smp.c
-+++ b/arch/arm/kernel/smp.c
-@@ -297,8 +297,6 @@ asmlinkage void __cpuinit secondary_start_kernel(void)
- struct mm_struct *mm = &init_mm;
- unsigned int cpu = smp_processor_id();
-
-- printk("CPU%u: Booted secondary processor\n", cpu);
--
- /*
- * All kernel threads share the same mm context; grab a
- * reference and switch to it.
-@@ -310,6 +308,8 @@ asmlinkage void __cpuinit secondary_start_kernel(void)
- enter_lazy_tlb(mm, current);
- local_flush_tlb_all();
-
-+ printk("CPU%u: Booted secondary processor\n", cpu);
-+
- cpu_init();
- preempt_disable();
- trace_hardirqs_off();
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0153-drm-i915-disable-sdvo-hotplug-on-i945g-gm.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0153-drm-i915-disable-sdvo-hotplug-on-i945g-gm.patch
deleted file mode 100644
index 4ce1011..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0153-drm-i915-disable-sdvo-hotplug-on-i945g-gm.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From fa5bf9a9b89ddc63cb451a2aecb112c7715aaffb Mon Sep 17 00:00:00 2001
-From: Daniel Vetter <daniel.vetter at ffwll.ch>
-Date: Fri, 4 May 2012 11:29:56 +0200
-Subject: [PATCH 153/165] drm/i915: disable sdvo hotplug on i945g/gm
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit 768b107e4b3be0acf6f58e914afe4f337c00932b upstream.
-
-Chris Wilson dug out a hw erratum saying that there's noise on the
-interrupt line on i945G chips. We also have a bug report from a i945GM
-chip with an sdvo hotplug interrupt storm (and no apparent cause).
-
-Play it safe and disable sdvo hotplug on all i945 variants.
-
-Note that this is a regression that has been introduced in 3.1,
-when we've enabled sdvo hotplug support with
-
-commit cc68c81aed7d892deaf12d720d5455208e94cd0a
-Author: Simon Farnsworth <simon.farnsworth at onelan.co.uk>
-Date: Wed Sep 21 17:13:30 2011 +0100
-
- drm/i915: Enable SDVO hotplug interrupts for HDMI and DVI
-
-Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=38442
-Reported-and-tested-by: Dominik Köppl <dominik at devwork.org>
-Reviewed-by: Chris Wilson <chris at chris-wilson.co.uk>
-Signed-Off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpu/drm/i915/intel_sdvo.c | 6 ++++++
- 1 files changed, 6 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c
-index 0a877dd..8eddcca 100644
---- a/drivers/gpu/drm/i915/intel_sdvo.c
-+++ b/drivers/gpu/drm/i915/intel_sdvo.c
-@@ -1221,8 +1221,14 @@ static bool intel_sdvo_get_capabilities(struct intel_sdvo *intel_sdvo, struct in
-
- static int intel_sdvo_supports_hotplug(struct intel_sdvo *intel_sdvo)
- {
-+ struct drm_device *dev = intel_sdvo->base.base.dev;
- u8 response[2];
-
-+ /* HW Erratum: SDVO Hotplug is broken on all i945G chips, there's noise
-+ * on the line. */
-+ if (IS_I945G(dev) || IS_I945GM(dev))
-+ return false;
-+
- return intel_sdvo_get_value(intel_sdvo, SDVO_CMD_GET_HOT_PLUG_SUPPORT,
- &response, 2) && response[0];
- }
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0154-drm-i915-Do-no-set-Stencil-Cache-eviction-LRA-w-a-on.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0154-drm-i915-Do-no-set-Stencil-Cache-eviction-LRA-w-a-on.patch
deleted file mode 100644
index f5c50b2..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0154-drm-i915-Do-no-set-Stencil-Cache-eviction-LRA-w-a-on.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From 69056e5ea1d5eef50061b03d95dc6afd26ee9627 Mon Sep 17 00:00:00 2001
-From: Daniel Vetter <daniel.vetter at ffwll.ch>
-Date: Sun, 6 May 2012 16:50:24 +0200
-Subject: [PATCH 154/165] drm/i915: Do no set Stencil Cache eviction LRA w/a
- on gen7+
-
-commit 2e7a44814d802c8ba479164b8924070cd908d6b5 upstream.
-
-I've flagged this while reviewing the first version and Ken Graunke
-fixed it up in v2, but unfortunately Dave Airlie picked up the wrong
-version.
-
-Cc: Dave Airlie <airlied at redhat.com>
-Cc: Kenneth Graunke <kenneth at whitecape.org>
-Signed-Off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpu/drm/i915/intel_ringbuffer.c | 9 ++++++---
- 1 files changed, 6 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
-index 273f403..62f9ac5 100644
---- a/drivers/gpu/drm/i915/intel_ringbuffer.c
-+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
-@@ -414,10 +414,8 @@ static int init_render_ring(struct intel_ring_buffer *ring)
- return ret;
- }
-
-- if (INTEL_INFO(dev)->gen >= 6) {
-- I915_WRITE(INSTPM,
-- INSTPM_FORCE_ORDERING << 16 | INSTPM_FORCE_ORDERING);
-
-+ if (IS_GEN6(dev)) {
- /* From the Sandybridge PRM, volume 1 part 3, page 24:
- * "If this bit is set, STCunit will have LRA as replacement
- * policy. [...] This bit must be reset. LRA replacement
-@@ -427,6 +425,11 @@ static int init_render_ring(struct intel_ring_buffer *ring)
- CM0_STC_EVICT_DISABLE_LRA_SNB << CM0_MASK_SHIFT);
- }
-
-+ if (INTEL_INFO(dev)->gen >= 6) {
-+ I915_WRITE(INSTPM,
-+ INSTPM_FORCE_ORDERING << 16 | INSTPM_FORCE_ORDERING);
-+ }
-+
- return ret;
- }
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0155-xen-pte-Fix-crashes-when-trying-to-see-non-existent-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0155-xen-pte-Fix-crashes-when-trying-to-see-non-existent-.patch
deleted file mode 100644
index 97aed57..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0155-xen-pte-Fix-crashes-when-trying-to-see-non-existent-.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From 9476d5b9241f9e02cf2d0b0789e8e229709d54bf Mon Sep 17 00:00:00 2001
-From: Konrad Rzeszutek Wilk <konrad.wilk at oracle.com>
-Date: Thu, 3 May 2012 16:14:14 -0400
-Subject: [PATCH 155/165] xen/pte: Fix crashes when trying to see non-existent
- PGD/PMD/PUD/PTEs
-
-commit b7e5ffe5d83fa40d702976d77452004abbe35791 upstream.
-
-If I try to do "cat /sys/kernel/debug/kernel_page_tables"
-I end up with:
-
-BUG: unable to handle kernel paging request at ffffc7fffffff000
-IP: [<ffffffff8106aa51>] ptdump_show+0x221/0x480
-PGD 0
-Oops: 0000 [#1] SMP
-CPU 0
-.. snip..
-RAX: 0000000000000000 RBX: ffffc00000000fff RCX: 0000000000000000
-RDX: 0000800000000000 RSI: 0000000000000000 RDI: ffffc7fffffff000
-
-which is due to the fact we are trying to access a PFN that is not
-accessible to us. The reason (at least in this case) was that
-PGD[256] is set to __HYPERVISOR_VIRT_START which was setup (by the
-hypervisor) to point to a read-only linear map of the MFN->PFN array.
-During our parsing we would get the MFN (a valid one), try to look
-it up in the MFN->PFN tree and find it invalid and return ~0 as PFN.
-Then pte_mfn_to_pfn would happilly feed that in, attach the flags
-and return it back to the caller. 'ptdump_show' bitshifts it and
-gets and invalid value that it tries to dereference.
-
-Instead of doing all of that, we detect the ~0 case and just
-return !_PAGE_PRESENT.
-
-This bug has been in existence .. at least until 2.6.37 (yikes!)
-
-Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk at oracle.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/x86/xen/mmu.c | 7 ++++++-
- 1 files changed, 6 insertions(+), 1 deletions(-)
-
-diff --git a/arch/x86/xen/mmu.c b/arch/x86/xen/mmu.c
-index 87f6673..ec3d603 100644
---- a/arch/x86/xen/mmu.c
-+++ b/arch/x86/xen/mmu.c
-@@ -353,8 +353,13 @@ static pteval_t pte_mfn_to_pfn(pteval_t val)
- {
- if (val & _PAGE_PRESENT) {
- unsigned long mfn = (val & PTE_PFN_MASK) >> PAGE_SHIFT;
-+ unsigned long pfn = mfn_to_pfn(mfn);
-+
- pteval_t flags = val & PTE_FLAGS_MASK;
-- val = ((pteval_t)mfn_to_pfn(mfn) << PAGE_SHIFT) | flags;
-+ if (unlikely(pfn == ~0))
-+ val = flags & ~_PAGE_PRESENT;
-+ else
-+ val = ((pteval_t)pfn << PAGE_SHIFT) | flags;
- }
-
- return val;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0156-xen-pci-don-t-use-PCI-BIOS-service-for-configuration.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0156-xen-pci-don-t-use-PCI-BIOS-service-for-configuration.patch
deleted file mode 100644
index f2f42b1..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0156-xen-pci-don-t-use-PCI-BIOS-service-for-configuration.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From 26cb931f7927821d30686897588964e66b9ec156 Mon Sep 17 00:00:00 2001
-From: David Vrabel <david.vrabel at citrix.com>
-Date: Fri, 4 May 2012 14:29:46 +0100
-Subject: [PATCH 156/165] xen/pci: don't use PCI BIOS service for
- configuration space accesses
-
-commit 76a8df7b49168509df02461f83fab117a4a86e08 upstream.
-
-The accessing PCI configuration space with the PCI BIOS32 service does
-not work in PV guests.
-
-On systems without MMCONFIG or where the BIOS hasn't marked the
-MMCONFIG region as reserved in the e820 map, the BIOS service is
-probed (even though direct access is preferred) and this hangs.
-
-Acked-by: Jan Beulich <jbeulich at suse.com>
-Signed-off-by: David Vrabel <david.vrabel at citrix.com>
-[v1: Fixed compile error when CONFIG_PCI is not set]
-Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk at oracle.com>
-[bwh: Backported to 3.2: adjust context]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/x86/xen/enlighten.c | 7 +++++--
- 1 files changed, 5 insertions(+), 2 deletions(-)
-
-diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
-index 1f92865..e7c920b 100644
---- a/arch/x86/xen/enlighten.c
-+++ b/arch/x86/xen/enlighten.c
-@@ -62,6 +62,7 @@
- #include <asm/reboot.h>
- #include <asm/stackprotector.h>
- #include <asm/hypervisor.h>
-+#include <asm/pci_x86.h>
-
- #include "xen-ops.h"
- #include "mmu.h"
-@@ -1278,8 +1279,10 @@ asmlinkage void __init xen_start_kernel(void)
- /* Make sure ACS will be enabled */
- pci_request_acs();
- }
--
--
-+#ifdef CONFIG_PCI
-+ /* PCI BIOS service won't work from a PV guest. */
-+ pci_probe &= ~PCI_PROBE_BIOS;
-+#endif
- xen_raw_console_write("about to get started...\n");
-
- xen_setup_runstate_info(0);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0157-percpu-x86-don-t-use-PMD_SIZE-as-embedded-atom_size-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0157-percpu-x86-don-t-use-PMD_SIZE-as-embedded-atom_size-.patch
deleted file mode 100644
index c948145..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0157-percpu-x86-don-t-use-PMD_SIZE-as-embedded-atom_size-.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-From 40bfc308a453997d543e78d6c825275710c48a1c Mon Sep 17 00:00:00 2001
-From: Tejun Heo <tj at kernel.org>
-Date: Fri, 27 Apr 2012 10:54:35 -0700
-Subject: [PATCH 157/165] percpu, x86: don't use PMD_SIZE as embedded
- atom_size on 32bit
-
-commit d5e28005a1d2e67833852f4c9ea8ec206ea3ff85 upstream.
-
-With the embed percpu first chunk allocator, x86 uses either PAGE_SIZE
-or PMD_SIZE for atom_size. PMD_SIZE is used when CPU supports PSE so
-that percpu areas are aligned to PMD mappings and possibly allow using
-PMD mappings in vmalloc areas in the future. Using larger atom_size
-doesn't waste actual memory; however, it does require larger vmalloc
-space allocation later on for !first chunks.
-
-With reasonably sized vmalloc area, PMD_SIZE shouldn't be a problem
-but x86_32 at this point is anything but reasonable in terms of
-address space and using larger atom_size reportedly leads to frequent
-percpu allocation failures on certain setups.
-
-As there is no reason to not use PMD_SIZE on x86_64 as vmalloc space
-is aplenty and most x86_64 configurations support PSE, fix the issue
-by always using PMD_SIZE on x86_64 and PAGE_SIZE on x86_32.
-
-v2: drop cpu_has_pse test and make x86_64 always use PMD_SIZE and
- x86_32 PAGE_SIZE as suggested by hpa.
-
-Signed-off-by: Tejun Heo <tj at kernel.org>
-Reported-by: Yanmin Zhang <yanmin.zhang at intel.com>
-Reported-by: ShuoX Liu <shuox.liu at intel.com>
-Acked-by: H. Peter Anvin <hpa at zytor.com>
-LKML-Reference: <4F97BA98.6010001 at intel.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/x86/kernel/setup_percpu.c | 14 +++++++++++++-
- 1 files changed, 13 insertions(+), 1 deletions(-)
-
-diff --git a/arch/x86/kernel/setup_percpu.c b/arch/x86/kernel/setup_percpu.c
-index 71f4727..5a98aa2 100644
---- a/arch/x86/kernel/setup_percpu.c
-+++ b/arch/x86/kernel/setup_percpu.c
-@@ -185,10 +185,22 @@ void __init setup_per_cpu_areas(void)
- #endif
- rc = -EINVAL;
- if (pcpu_chosen_fc != PCPU_FC_PAGE) {
-- const size_t atom_size = cpu_has_pse ? PMD_SIZE : PAGE_SIZE;
- const size_t dyn_size = PERCPU_MODULE_RESERVE +
- PERCPU_DYNAMIC_RESERVE - PERCPU_FIRST_CHUNK_RESERVE;
-+ size_t atom_size;
-
-+ /*
-+ * On 64bit, use PMD_SIZE for atom_size so that embedded
-+ * percpu areas are aligned to PMD. This, in the future,
-+ * can also allow using PMD mappings in vmalloc area. Use
-+ * PAGE_SIZE on 32bit as vmalloc space is highly contended
-+ * and large vmalloc area allocs can easily fail.
-+ */
-+#ifdef CONFIG_X86_64
-+ atom_size = PMD_SIZE;
-+#else
-+ atom_size = PAGE_SIZE;
-+#endif
- rc = pcpu_embed_first_chunk(PERCPU_FIRST_CHUNK_RESERVE,
- dyn_size, atom_size,
- pcpu_cpu_distance,
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0158-iwlagn-allow-up-to-uCode-API-6-for-6000-devices.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0158-iwlagn-allow-up-to-uCode-API-6-for-6000-devices.patch
deleted file mode 100644
index 7e27234..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0158-iwlagn-allow-up-to-uCode-API-6-for-6000-devices.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-From cad1b4d0f128eb46af3732795f91e3aba5ea4fbb Mon Sep 17 00:00:00 2001
-From: Johannes Berg <johannes.berg at intel.com>
-Date: Fri, 4 Nov 2011 07:22:37 -0700
-Subject: [PATCH 158/165] iwlagn: allow up to uCode API 6 for 6000 devices
-
-commit b914811524fbe9e91fe50845f5d7bd4316b8a6ee upstream.
-
-Since the uCode hasn't been released (yet?),
-warn only if using older than API 4, but load
-anything up to API 6.
-
-Signed-off-by: Johannes Berg <johannes.berg at intel.com>
-Signed-off-by: Wey-Yi Guy <wey-yi.w.guy at intel.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/wireless/iwlwifi/iwl-6000.c | 7 +++++--
- 1 files changed, 5 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/net/wireless/iwlwifi/iwl-6000.c b/drivers/net/wireless/iwlwifi/iwl-6000.c
-index c840c78..ae3ea32 100644
---- a/drivers/net/wireless/iwlwifi/iwl-6000.c
-+++ b/drivers/net/wireless/iwlwifi/iwl-6000.c
-@@ -46,11 +46,12 @@
- #include "iwl-cfg.h"
-
- /* Highest firmware API version supported */
--#define IWL6000_UCODE_API_MAX 4
-+#define IWL6000_UCODE_API_MAX 6
- #define IWL6050_UCODE_API_MAX 5
- #define IWL6000G2_UCODE_API_MAX 6
-
- /* Oldest version we won't warn about */
-+#define IWL6000_UCODE_API_OK 4
- #define IWL6000G2_UCODE_API_OK 5
-
- /* Lowest firmware API version supported */
-@@ -479,6 +480,7 @@ struct iwl_cfg iwl130_bg_cfg = {
- #define IWL_DEVICE_6000i \
- .fw_name_pre = IWL6000_FW_PRE, \
- .ucode_api_max = IWL6000_UCODE_API_MAX, \
-+ .ucode_api_ok = IWL6000_UCODE_API_OK, \
- .ucode_api_min = IWL6000_UCODE_API_MIN, \
- .valid_tx_ant = ANT_BC, /* .cfg overwrite */ \
- .valid_rx_ant = ANT_BC, /* .cfg overwrite */ \
-@@ -559,6 +561,7 @@ struct iwl_cfg iwl6000_3agn_cfg = {
- .name = "Intel(R) Centrino(R) Ultimate-N 6300 AGN",
- .fw_name_pre = IWL6000_FW_PRE,
- .ucode_api_max = IWL6000_UCODE_API_MAX,
-+ .ucode_api_ok = IWL6000_UCODE_API_OK,
- .ucode_api_min = IWL6000_UCODE_API_MIN,
- .eeprom_ver = EEPROM_6000_EEPROM_VERSION,
- .eeprom_calib_ver = EEPROM_6000_TX_POWER_VERSION,
-@@ -569,7 +572,7 @@ struct iwl_cfg iwl6000_3agn_cfg = {
- .led_mode = IWL_LED_BLINK,
- };
-
--MODULE_FIRMWARE(IWL6000_MODULE_FIRMWARE(IWL6000_UCODE_API_MAX));
-+MODULE_FIRMWARE(IWL6000_MODULE_FIRMWARE(IWL6000_UCODE_API_OK));
- MODULE_FIRMWARE(IWL6050_MODULE_FIRMWARE(IWL6050_UCODE_API_MAX));
- MODULE_FIRMWARE(IWL6005_MODULE_FIRMWARE(IWL6000G2_UCODE_API_MAX));
- MODULE_FIRMWARE(IWL6030_MODULE_FIRMWARE(IWL6000G2_UCODE_API_MAX));
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0159-iwlwifi-use-correct-released-ucode-version.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0159-iwlwifi-use-correct-released-ucode-version.patch
deleted file mode 100644
index e6ea8fa..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0159-iwlwifi-use-correct-released-ucode-version.patch
+++ /dev/null
@@ -1,159 +0,0 @@
-From 6ae066df7c16000f163eab3a745b711447536e70 Mon Sep 17 00:00:00 2001
-From: Meenakshi Venkataraman <meenakshi.venkataraman at intel.com>
-Date: Sun, 22 Apr 2012 07:55:27 -0700
-Subject: [PATCH 159/165] iwlwifi: use correct released ucode version
-
-commit 78cbcf2b9dbe0565820dc7721316f9c401000a68 upstream.
-
-Report correctly the latest released version
-of the iwlwifi firmware for all
-iwlwifi-supported devices.
-
-Signed-off-by: Meenakshi Venkataraman <meenakshi.venkataraman at intel.com>
-Signed-off-by: Wey-Yi Guy <wey-yi.w.guy at intel.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-[bwh: Backported to 3.2: adjust context]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/wireless/iwlwifi/iwl-1000.c | 8 ++++----
- drivers/net/wireless/iwlwifi/iwl-2000.c | 16 ++++++++--------
- drivers/net/wireless/iwlwifi/iwl-5000.c | 11 +++++++++--
- drivers/net/wireless/iwlwifi/iwl-6000.c | 10 ++++++----
- 4 files changed, 27 insertions(+), 18 deletions(-)
-
-diff --git a/drivers/net/wireless/iwlwifi/iwl-1000.c b/drivers/net/wireless/iwlwifi/iwl-1000.c
-index dd008b0..1e6c8cc 100644
---- a/drivers/net/wireless/iwlwifi/iwl-1000.c
-+++ b/drivers/net/wireless/iwlwifi/iwl-1000.c
-@@ -45,8 +45,8 @@
- #include "iwl-cfg.h"
-
- /* Highest firmware API version supported */
--#define IWL1000_UCODE_API_MAX 6
--#define IWL100_UCODE_API_MAX 6
-+#define IWL1000_UCODE_API_MAX 5
-+#define IWL100_UCODE_API_MAX 5
-
- /* Oldest version we won't warn about */
- #define IWL1000_UCODE_API_OK 5
-@@ -244,5 +244,5 @@ struct iwl_cfg iwl100_bg_cfg = {
- IWL_DEVICE_100,
- };
-
--MODULE_FIRMWARE(IWL1000_MODULE_FIRMWARE(IWL1000_UCODE_API_MAX));
--MODULE_FIRMWARE(IWL100_MODULE_FIRMWARE(IWL100_UCODE_API_MAX));
-+MODULE_FIRMWARE(IWL1000_MODULE_FIRMWARE(IWL1000_UCODE_API_OK));
-+MODULE_FIRMWARE(IWL100_MODULE_FIRMWARE(IWL100_UCODE_API_OK));
-diff --git a/drivers/net/wireless/iwlwifi/iwl-2000.c b/drivers/net/wireless/iwlwifi/iwl-2000.c
-index 7943197..9823e41 100644
---- a/drivers/net/wireless/iwlwifi/iwl-2000.c
-+++ b/drivers/net/wireless/iwlwifi/iwl-2000.c
-@@ -51,10 +51,10 @@
- #define IWL135_UCODE_API_MAX 6
-
- /* Oldest version we won't warn about */
--#define IWL2030_UCODE_API_OK 5
--#define IWL2000_UCODE_API_OK 5
--#define IWL105_UCODE_API_OK 5
--#define IWL135_UCODE_API_OK 5
-+#define IWL2030_UCODE_API_OK 6
-+#define IWL2000_UCODE_API_OK 6
-+#define IWL105_UCODE_API_OK 6
-+#define IWL135_UCODE_API_OK 6
-
- /* Lowest firmware API version supported */
- #define IWL2030_UCODE_API_MIN 5
-@@ -372,7 +372,7 @@ struct iwl_cfg iwl135_bgn_cfg = {
- .ht_params = &iwl2000_ht_params,
- };
-
--MODULE_FIRMWARE(IWL2000_MODULE_FIRMWARE(IWL2000_UCODE_API_MAX));
--MODULE_FIRMWARE(IWL2030_MODULE_FIRMWARE(IWL2030_UCODE_API_MAX));
--MODULE_FIRMWARE(IWL105_MODULE_FIRMWARE(IWL105_UCODE_API_MAX));
--MODULE_FIRMWARE(IWL135_MODULE_FIRMWARE(IWL135_UCODE_API_MAX));
-+MODULE_FIRMWARE(IWL2000_MODULE_FIRMWARE(IWL2000_UCODE_API_OK));
-+MODULE_FIRMWARE(IWL2030_MODULE_FIRMWARE(IWL2030_UCODE_API_OK));
-+MODULE_FIRMWARE(IWL105_MODULE_FIRMWARE(IWL105_UCODE_API_OK));
-+MODULE_FIRMWARE(IWL135_MODULE_FIRMWARE(IWL135_UCODE_API_OK));
-diff --git a/drivers/net/wireless/iwlwifi/iwl-5000.c b/drivers/net/wireless/iwlwifi/iwl-5000.c
-index f55fb2d..606213f 100644
---- a/drivers/net/wireless/iwlwifi/iwl-5000.c
-+++ b/drivers/net/wireless/iwlwifi/iwl-5000.c
-@@ -50,6 +50,10 @@
- #define IWL5000_UCODE_API_MAX 5
- #define IWL5150_UCODE_API_MAX 2
-
-+/* Oldest version we won't warn about */
-+#define IWL5000_UCODE_API_OK 5
-+#define IWL5150_UCODE_API_OK 2
-+
- /* Lowest firmware API version supported */
- #define IWL5000_UCODE_API_MIN 1
- #define IWL5150_UCODE_API_MIN 1
-@@ -373,6 +377,7 @@ static struct iwl_ht_params iwl5000_ht_params = {
- #define IWL_DEVICE_5000 \
- .fw_name_pre = IWL5000_FW_PRE, \
- .ucode_api_max = IWL5000_UCODE_API_MAX, \
-+ .ucode_api_ok = IWL5000_UCODE_API_OK, \
- .ucode_api_min = IWL5000_UCODE_API_MIN, \
- .eeprom_ver = EEPROM_5000_EEPROM_VERSION, \
- .eeprom_calib_ver = EEPROM_5000_TX_POWER_VERSION, \
-@@ -416,6 +421,7 @@ struct iwl_cfg iwl5350_agn_cfg = {
- .name = "Intel(R) WiMAX/WiFi Link 5350 AGN",
- .fw_name_pre = IWL5000_FW_PRE,
- .ucode_api_max = IWL5000_UCODE_API_MAX,
-+ .ucode_api_ok = IWL5000_UCODE_API_OK,
- .ucode_api_min = IWL5000_UCODE_API_MIN,
- .eeprom_ver = EEPROM_5050_EEPROM_VERSION,
- .eeprom_calib_ver = EEPROM_5050_TX_POWER_VERSION,
-@@ -429,6 +435,7 @@ struct iwl_cfg iwl5350_agn_cfg = {
- #define IWL_DEVICE_5150 \
- .fw_name_pre = IWL5150_FW_PRE, \
- .ucode_api_max = IWL5150_UCODE_API_MAX, \
-+ .ucode_api_ok = IWL5150_UCODE_API_OK, \
- .ucode_api_min = IWL5150_UCODE_API_MIN, \
- .eeprom_ver = EEPROM_5050_EEPROM_VERSION, \
- .eeprom_calib_ver = EEPROM_5050_TX_POWER_VERSION, \
-@@ -450,5 +457,5 @@ struct iwl_cfg iwl5150_abg_cfg = {
- IWL_DEVICE_5150,
- };
-
--MODULE_FIRMWARE(IWL5000_MODULE_FIRMWARE(IWL5000_UCODE_API_MAX));
--MODULE_FIRMWARE(IWL5150_MODULE_FIRMWARE(IWL5150_UCODE_API_MAX));
-+MODULE_FIRMWARE(IWL5000_MODULE_FIRMWARE(IWL5000_UCODE_API_OK));
-+MODULE_FIRMWARE(IWL5150_MODULE_FIRMWARE(IWL5150_UCODE_API_OK));
-diff --git a/drivers/net/wireless/iwlwifi/iwl-6000.c b/drivers/net/wireless/iwlwifi/iwl-6000.c
-index ae3ea32..9509298 100644
---- a/drivers/net/wireless/iwlwifi/iwl-6000.c
-+++ b/drivers/net/wireless/iwlwifi/iwl-6000.c
-@@ -53,6 +53,8 @@
- /* Oldest version we won't warn about */
- #define IWL6000_UCODE_API_OK 4
- #define IWL6000G2_UCODE_API_OK 5
-+#define IWL6050_UCODE_API_OK 5
-+#define IWL6000G2B_UCODE_API_OK 6
-
- /* Lowest firmware API version supported */
- #define IWL6000_UCODE_API_MIN 4
-@@ -359,7 +361,7 @@ static struct iwl_bt_params iwl6000_bt_params = {
- #define IWL_DEVICE_6005 \
- .fw_name_pre = IWL6005_FW_PRE, \
- .ucode_api_max = IWL6000G2_UCODE_API_MAX, \
-- .ucode_api_ok = IWL6000G2_UCODE_API_OK, \
-+ .ucode_api_ok = IWL6000G2B_UCODE_API_OK, \
- .ucode_api_min = IWL6000G2_UCODE_API_MIN, \
- .eeprom_ver = EEPROM_6005_EEPROM_VERSION, \
- .eeprom_calib_ver = EEPROM_6005_TX_POWER_VERSION, \
-@@ -573,6 +575,6 @@ struct iwl_cfg iwl6000_3agn_cfg = {
- };
-
- MODULE_FIRMWARE(IWL6000_MODULE_FIRMWARE(IWL6000_UCODE_API_OK));
--MODULE_FIRMWARE(IWL6050_MODULE_FIRMWARE(IWL6050_UCODE_API_MAX));
--MODULE_FIRMWARE(IWL6005_MODULE_FIRMWARE(IWL6000G2_UCODE_API_MAX));
--MODULE_FIRMWARE(IWL6030_MODULE_FIRMWARE(IWL6000G2_UCODE_API_MAX));
-+MODULE_FIRMWARE(IWL6050_MODULE_FIRMWARE(IWL6050_UCODE_API_OK));
-+MODULE_FIRMWARE(IWL6005_MODULE_FIRMWARE(IWL6000G2_UCODE_API_OK));
-+MODULE_FIRMWARE(IWL6030_MODULE_FIRMWARE(IWL6000G2B_UCODE_API_OK));
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0160-iwlwifi-use-6000G2B-for-6030-device-series.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0160-iwlwifi-use-6000G2B-for-6030-device-series.patch
deleted file mode 100644
index 94d460a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0160-iwlwifi-use-6000G2B-for-6030-device-series.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From 4d665b9d5d7be0652d0942fe8bd0ea3bd3d73ebd Mon Sep 17 00:00:00 2001
-From: Wey-Yi Guy <wey-yi.w.guy at intel.com>
-Date: Wed, 25 Apr 2012 08:10:08 -0700
-Subject: [PATCH 160/165] iwlwifi: use 6000G2B for 6030 device series
-
-commit 1ed2ec37b44e86eaa8e0a03b908a39c80f65ee45 upstream.
-
-"iwlwifi: use correct released ucode version" change
-the ucode api ok from 6000G2 to 6000G2B, but it shall belong
-to 6030 device series, not the 6005 device series. Fix it
-
-Signed-off-by: Wey-Yi Guy <wey-yi.w.guy at intel.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-[bwh: Backported to 3.2: adjust context]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/wireless/iwlwifi/iwl-6000.c | 4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/net/wireless/iwlwifi/iwl-6000.c b/drivers/net/wireless/iwlwifi/iwl-6000.c
-index 9509298..b4f809c 100644
---- a/drivers/net/wireless/iwlwifi/iwl-6000.c
-+++ b/drivers/net/wireless/iwlwifi/iwl-6000.c
-@@ -361,7 +361,7 @@ static struct iwl_bt_params iwl6000_bt_params = {
- #define IWL_DEVICE_6005 \
- .fw_name_pre = IWL6005_FW_PRE, \
- .ucode_api_max = IWL6000G2_UCODE_API_MAX, \
-- .ucode_api_ok = IWL6000G2B_UCODE_API_OK, \
-+ .ucode_api_ok = IWL6000G2_UCODE_API_OK, \
- .ucode_api_min = IWL6000G2_UCODE_API_MIN, \
- .eeprom_ver = EEPROM_6005_EEPROM_VERSION, \
- .eeprom_calib_ver = EEPROM_6005_TX_POWER_VERSION, \
-@@ -402,7 +402,7 @@ struct iwl_cfg iwl6005_2agn_d_cfg = {
- #define IWL_DEVICE_6030 \
- .fw_name_pre = IWL6030_FW_PRE, \
- .ucode_api_max = IWL6000G2_UCODE_API_MAX, \
-- .ucode_api_ok = IWL6000G2_UCODE_API_OK, \
-+ .ucode_api_ok = IWL6000G2B_UCODE_API_OK, \
- .ucode_api_min = IWL6000G2_UCODE_API_MIN, \
- .eeprom_ver = EEPROM_6030_EEPROM_VERSION, \
- .eeprom_calib_ver = EEPROM_6030_TX_POWER_VERSION, \
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0161-exit_signal-simplify-the-we-have-changed-execution-d.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0161-exit_signal-simplify-the-we-have-changed-execution-d.patch
deleted file mode 100644
index 228a391..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0161-exit_signal-simplify-the-we-have-changed-execution-d.patch
+++ /dev/null
@@ -1,75 +0,0 @@
-From 24b4ef6e688f21346c5385ef56f4d9bc8c9e4c2c Mon Sep 17 00:00:00 2001
-From: Oleg Nesterov <oleg at redhat.com>
-Date: Mon, 19 Mar 2012 17:03:22 +0100
-Subject: [PATCH 161/165] exit_signal: simplify the "we have changed execution
- domain" logic
-
-commit e636825346b36a07ccfc8e30946d52855e21f681 upstream.
-
-exit_notify() checks "tsk->self_exec_id != tsk->parent_exec_id"
-to handle the "we have changed execution domain" case.
-
-We can change do_thread() to always set ->exit_signal = SIGCHLD
-and remove this check to simplify the code.
-
-We could change setup_new_exec() instead, this looks more logical
-because it increments ->self_exec_id. But note that de_thread()
-already resets ->exit_signal if it changes the leader, let's keep
-both changes close to each other.
-
-Note that we change ->exit_signal lockless, this changes the rules.
-Thereafter ->exit_signal is not stable under tasklist but this is
-fine, the only possible change is OLDSIG -> SIGCHLD. This can race
-with eligible_child() but the race is harmless. We can race with
-reparent_leader() which changes our ->exit_signal in parallel, but
-it does the same change to SIGCHLD.
-
-The noticeable user-visible change is that the execing task is not
-"visible" to do_wait()->eligible_child(__WCLONE) right after exec.
-To me this looks more logical, and this is consistent with mt case.
-
-Signed-off-by: Oleg Nesterov <oleg at redhat.com>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/exec.c | 3 +++
- kernel/exit.c | 7 +------
- 2 files changed, 4 insertions(+), 6 deletions(-)
-
-diff --git a/fs/exec.c b/fs/exec.c
-index 3625464..160cd2f 100644
---- a/fs/exec.c
-+++ b/fs/exec.c
-@@ -973,6 +973,9 @@ static int de_thread(struct task_struct *tsk)
- sig->notify_count = 0;
-
- no_thread_group:
-+ /* we have changed execution domain */
-+ tsk->exit_signal = SIGCHLD;
-+
- if (current->mm)
- setmax_mm_hiwater_rss(&sig->maxrss, current->mm);
-
-diff --git a/kernel/exit.c b/kernel/exit.c
-index e6e01b9..ab66cb0 100644
---- a/kernel/exit.c
-+++ b/kernel/exit.c
-@@ -828,14 +828,9 @@ static void exit_notify(struct task_struct *tsk, int group_dead)
- * If the parent exec id doesn't match the exec id we saved
- * when we started then we know the parent has changed security
- * domain.
-- *
-- * If our self_exec id doesn't match our parent_exec_id then
-- * we have changed execution domain as these two values started
-- * the same after a fork.
- */
- if (thread_group_leader(tsk) && tsk->exit_signal != SIGCHLD &&
-- (tsk->parent_exec_id != tsk->real_parent->self_exec_id ||
-- tsk->self_exec_id != tsk->parent_exec_id))
-+ tsk->parent_exec_id != tsk->real_parent->self_exec_id)
- tsk->exit_signal = SIGCHLD;
-
- if (unlikely(tsk->ptrace)) {
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0162-exit_signal-fix-the-parent-has-changed-security-doma.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0162-exit_signal-fix-the-parent-has-changed-security-doma.patch
deleted file mode 100644
index 2942964..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0162-exit_signal-fix-the-parent-has-changed-security-doma.patch
+++ /dev/null
@@ -1,77 +0,0 @@
-From a24587831e14c94ca7bc3d947ecea53269b37d96 Mon Sep 17 00:00:00 2001
-From: Oleg Nesterov <oleg at redhat.com>
-Date: Mon, 19 Mar 2012 17:03:41 +0100
-Subject: [PATCH 162/165] exit_signal: fix the "parent has changed security
- domain" logic
-
-commit b6e238dceed36891cc633167afe7151f1f3d83c5 upstream.
-
-exit_notify() changes ->exit_signal if the parent already did exec.
-This doesn't really work, we are not going to send the signal now
-if there is another live thread or the exiting task is traced. The
-parent can exec before the last dies or the tracer detaches.
-
-Move this check into do_notify_parent() which actually sends the
-signal.
-
-The user-visible change is that we do not change ->exit_signal,
-and thus the exiting task is still "clone children" for
-do_wait()->eligible_child(__WCLONE). Hopefully this is fine, the
-current logic is racy anyway.
-
-Signed-off-by: Oleg Nesterov <oleg at redhat.com>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- kernel/exit.c | 14 --------------
- kernel/signal.c | 9 +++++++++
- 2 files changed, 9 insertions(+), 14 deletions(-)
-
-diff --git a/kernel/exit.c b/kernel/exit.c
-index ab66cb0..5a8a66e 100644
---- a/kernel/exit.c
-+++ b/kernel/exit.c
-@@ -819,20 +819,6 @@ static void exit_notify(struct task_struct *tsk, int group_dead)
- if (group_dead)
- kill_orphaned_pgrp(tsk->group_leader, NULL);
-
-- /* Let father know we died
-- *
-- * Thread signals are configurable, but you aren't going to use
-- * that to send signals to arbitrary processes.
-- * That stops right now.
-- *
-- * If the parent exec id doesn't match the exec id we saved
-- * when we started then we know the parent has changed security
-- * domain.
-- */
-- if (thread_group_leader(tsk) && tsk->exit_signal != SIGCHLD &&
-- tsk->parent_exec_id != tsk->real_parent->self_exec_id)
-- tsk->exit_signal = SIGCHLD;
--
- if (unlikely(tsk->ptrace)) {
- int sig = thread_group_leader(tsk) &&
- thread_group_empty(tsk) &&
-diff --git a/kernel/signal.c b/kernel/signal.c
-index 2065515..08e0b97 100644
---- a/kernel/signal.c
-+++ b/kernel/signal.c
-@@ -1610,6 +1610,15 @@ bool do_notify_parent(struct task_struct *tsk, int sig)
- BUG_ON(!tsk->ptrace &&
- (tsk->group_leader != tsk || !thread_group_empty(tsk)));
-
-+ if (sig != SIGCHLD) {
-+ /*
-+ * This is only possible if parent == real_parent.
-+ * Check if it has changed security domain.
-+ */
-+ if (tsk->parent_exec_id != tsk->parent->self_exec_id)
-+ sig = SIGCHLD;
-+ }
-+
- info.si_signo = sig;
- info.si_errno = 0;
- /*
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0163-staging-r8712u-Fix-regression-caused-by-commit-8c213.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0163-staging-r8712u-Fix-regression-caused-by-commit-8c213.patch
deleted file mode 100644
index de44b79..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0163-staging-r8712u-Fix-regression-caused-by-commit-8c213.patch
+++ /dev/null
@@ -1,66 +0,0 @@
-From 2bf1f9816fc88b740d28781d6aa902daa3e4d6b1 Mon Sep 17 00:00:00 2001
-From: Larry Finger <Larry.Finger at lwfinger.net>
-Date: Sat, 25 Feb 2012 18:10:21 -0600
-Subject: [PATCH 163/165] staging: r8712u: Fix regression caused by commit
- 8c213fa
-
-commit 2080913e017ab9f88379d93fd09546ad95faf87b upstream.
-
-In commit 8c213fa "staging: r8712u: Use asynchronous firmware loading",
-the command to release the firmware was placed in the wrong routine.
-
-In combination with the bug introduced in commit a5ee652 "staging: r8712u:
-Interface-state not fully tracked", the driver attempts to upload firmware
-that had already been released. This bug is the source of one of the
-problems in https://bugs.archlinux.org/task/27996#comment89833.
-
-Tested-by: Alberto Lago Ballesteros <saniukeokusainaya at gmail.com>
-Tested-by: Adrian <agib at gmx.de>
-Signed-off-by: Larry Finger <Larry.Finger at lwfinger.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/staging/rtl8712/os_intfs.c | 3 ---
- drivers/staging/rtl8712/usb_intf.c | 5 +++++
- 2 files changed, 5 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/staging/rtl8712/os_intfs.c b/drivers/staging/rtl8712/os_intfs.c
-index fb11743..4bb2797 100644
---- a/drivers/staging/rtl8712/os_intfs.c
-+++ b/drivers/staging/rtl8712/os_intfs.c
-@@ -476,9 +476,6 @@ static int netdev_close(struct net_device *pnetdev)
- r8712_free_assoc_resources(padapter);
- /*s2-4.*/
- r8712_free_network_queue(padapter);
-- release_firmware(padapter->fw);
-- /* never exit with a firmware callback pending */
-- wait_for_completion(&padapter->rtl8712_fw_ready);
- return 0;
- }
-
-diff --git a/drivers/staging/rtl8712/usb_intf.c b/drivers/staging/rtl8712/usb_intf.c
-index 9bade18..ec41d38 100644
---- a/drivers/staging/rtl8712/usb_intf.c
-+++ b/drivers/staging/rtl8712/usb_intf.c
-@@ -30,6 +30,7 @@
-
- #include <linux/usb.h>
- #include <linux/module.h>
-+#include <linux/firmware.h>
-
- #include "osdep_service.h"
- #include "drv_types.h"
-@@ -621,6 +622,10 @@ static void r871xu_dev_remove(struct usb_interface *pusb_intf)
- struct _adapter *padapter = netdev_priv(pnetdev);
- struct usb_device *udev = interface_to_usbdev(pusb_intf);
-
-+ if (padapter->fw_found)
-+ release_firmware(padapter->fw);
-+ /* never exit with a firmware callback pending */
-+ wait_for_completion(&padapter->rtl8712_fw_ready);
- usb_set_intfdata(pusb_intf, NULL);
- if (padapter) {
- if (drvpriv.drv_registered == true)
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0164-smsc95xx-mark-link-down-on-startup-and-let-PHY-inter.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0164-smsc95xx-mark-link-down-on-startup-and-let-PHY-inter.patch
deleted file mode 100644
index 01c337d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0164-smsc95xx-mark-link-down-on-startup-and-let-PHY-inter.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 0f1ae32284c0946f9ea7acabb3177ac20b22b9e5 Mon Sep 17 00:00:00 2001
-From: Paolo Pisati <paolo.pisati at canonical.com>
-Date: Mon, 23 Apr 2012 04:05:20 +0000
-Subject: [PATCH 164/165] smsc95xx: mark link down on startup and let PHY
- interrupt deal with carrier changes
-
-commit 07d69d4238418746a7b85c5d05ec17c658a2a390 upstream.
-
-Without this patch sysfs reports the cable as present
-
-flag at flag-desktop:~$ cat /sys/class/net/eth0/carrier
-1
-
-while it's not:
-
-flag at flag-desktop:~$ sudo mii-tool eth0
-eth0: no link
-
-Tested on my Beagle XM.
-
-v2: added mantainer to the list of recipient
-
-Signed-off-by: Paolo Pisati <paolo.pisati at canonical.com>
-Acked-by: Steve Glendinning <steve.glendinning at shawell.net>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/usb/smsc95xx.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/net/usb/smsc95xx.c b/drivers/net/usb/smsc95xx.c
-index eff6767..55b3218 100644
---- a/drivers/net/usb/smsc95xx.c
-+++ b/drivers/net/usb/smsc95xx.c
-@@ -1190,7 +1190,7 @@ static const struct driver_info smsc95xx_info = {
- .rx_fixup = smsc95xx_rx_fixup,
- .tx_fixup = smsc95xx_tx_fixup,
- .status = smsc95xx_status,
-- .flags = FLAG_ETHER | FLAG_SEND_ZLP,
-+ .flags = FLAG_ETHER | FLAG_SEND_ZLP | FLAG_LINK_INTR,
- };
-
- static const struct usb_device_id products[] = {
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0165-Linux-3.2.17.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0165-Linux-3.2.17.patch
deleted file mode 100644
index 2cb7e1c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0165-Linux-3.2.17.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 4780abf2e3c25a099dd269b676d9696763f3eed6 Mon Sep 17 00:00:00 2001
-From: Ben Hutchings <ben at decadent.org.uk>
-Date: Fri, 11 May 2012 13:15:38 +0100
-Subject: [PATCH 165/165] Linux 3.2.17
-
----
- Makefile | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/Makefile b/Makefile
-index 3da29cb..4c4efa3 100644
---- a/Makefile
-+++ b/Makefile
-@@ -1,6 +1,6 @@
- VERSION = 3
- PATCHLEVEL = 2
--SUBLEVEL = 16
-+SUBLEVEL = 17
- EXTRAVERSION =
- NAME = Saber-toothed Squirrel
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0001-regulator-Fix-the-logic-to-ensure-new-voltage-settin.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0001-regulator-Fix-the-logic-to-ensure-new-voltage-settin.patch
deleted file mode 100644
index 444cb56..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0001-regulator-Fix-the-logic-to-ensure-new-voltage-settin.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 94383ff64ebeaa09055462cb48260eb2831235ef Mon Sep 17 00:00:00 2001
-From: Axel Lin <axel.lin at gmail.com>
-Date: Wed, 11 Apr 2012 20:53:58 +0800
-Subject: [PATCH 01/56] regulator: Fix the logic to ensure new voltage setting
- in valid range
-
-commit f55205f4d4a8823a11bb8b37ef2ecbd78fb09463 upstream.
-
-I think this is a typo.
-To ensure new voltage setting won't greater than desc->max,
-the equation should be desc->min + desc->step * new_val <= desc->max.
-
-Signed-off-by: Axel Lin <axel.lin at gmail.com>
-Signed-off-by: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/regulator/max8997.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/regulator/max8997.c b/drivers/regulator/max8997.c
-index 6176129..8cba82d 100644
---- a/drivers/regulator/max8997.c
-+++ b/drivers/regulator/max8997.c
-@@ -689,7 +689,7 @@ static int max8997_set_voltage_buck(struct regulator_dev *rdev,
- }
-
- new_val++;
-- } while (desc->min + desc->step + new_val <= desc->max);
-+ } while (desc->min + desc->step * new_val <= desc->max);
-
- new_idx = tmp_idx;
- new_val = tmp_val;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0002-ARM-OMAP-Revert-ARM-OMAP-ctrl-Fix-CONTROL_DSIPHY-reg.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0002-ARM-OMAP-Revert-ARM-OMAP-ctrl-Fix-CONTROL_DSIPHY-reg.patch
deleted file mode 100644
index eb9eb3c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0002-ARM-OMAP-Revert-ARM-OMAP-ctrl-Fix-CONTROL_DSIPHY-reg.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From c0d0663f26ba8ed987704a454a360b1a5997e1d7 Mon Sep 17 00:00:00 2001
-From: Archit Taneja <archit at ti.com>
-Date: Thu, 19 Apr 2012 17:39:16 +0530
-Subject: [PATCH 02/56] ARM: OMAP: Revert "ARM: OMAP: ctrl: Fix CONTROL_DSIPHY
- register fields"
-
-commit 08ca7444f589bedf9ad5d82883e5d0754852d73b upstream.
-
-This reverts commit 46f8c3c7e95c0d30d95911e7975ddc4f93b3e237.
-
-The commit above swapped the DSI1_PPID and DSI2_PPID register fields in
-CONTROL_DSIPHY to be in sync with the newer public OMAP TRMs(after version V).
-
-With this commit, contention errors were reported on DSI lanes some OMAP4 SDPs.
-After probing the DSI lanes on OMAP4 SDP, it was seen that setting bits in the
-DSI2_PPID field was pulling up voltage on DSI1 lanes, and DSI1_PPID field was
-pulling up voltage on DSI2 lanes.
-
-This proves that the current version of OMAP4 TRM is incorrect, swap the
-position of register fields according to the older TRM versions as they were
-correct.
-
-Acked-by: Tomi Valkeinen <tomi.valkeinen at ti.com>
-Signed-off-by: Archit Taneja <archit at ti.com>
-Signed-off-by: Tony Lindgren <tony at atomide.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- .../include/mach/ctrl_module_pad_core_44xx.h | 8 ++++----
- 1 files changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/include/mach/ctrl_module_pad_core_44xx.h b/arch/arm/mach-omap2/include/mach/ctrl_module_pad_core_44xx.h
-index 1e2d332..c88420d 100644
---- a/arch/arm/mach-omap2/include/mach/ctrl_module_pad_core_44xx.h
-+++ b/arch/arm/mach-omap2/include/mach/ctrl_module_pad_core_44xx.h
-@@ -941,10 +941,10 @@
- #define OMAP4_DSI2_LANEENABLE_MASK (0x7 << 29)
- #define OMAP4_DSI1_LANEENABLE_SHIFT 24
- #define OMAP4_DSI1_LANEENABLE_MASK (0x1f << 24)
--#define OMAP4_DSI2_PIPD_SHIFT 19
--#define OMAP4_DSI2_PIPD_MASK (0x1f << 19)
--#define OMAP4_DSI1_PIPD_SHIFT 14
--#define OMAP4_DSI1_PIPD_MASK (0x1f << 14)
-+#define OMAP4_DSI1_PIPD_SHIFT 19
-+#define OMAP4_DSI1_PIPD_MASK (0x1f << 19)
-+#define OMAP4_DSI2_PIPD_SHIFT 14
-+#define OMAP4_DSI2_PIPD_MASK (0x1f << 14)
-
- /* CONTROL_MCBSPLP */
- #define OMAP4_ALBCTRLRX_FSX_SHIFT 31
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0003-ALSA-echoaudio-Remove-incorrect-part-of-assertion.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0003-ALSA-echoaudio-Remove-incorrect-part-of-assertion.patch
deleted file mode 100644
index 3e8bed3..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0003-ALSA-echoaudio-Remove-incorrect-part-of-assertion.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From d88c1668a535d2abb3d201b8a521e46eff3f5e0e Mon Sep 17 00:00:00 2001
-From: Mark Hills <mark at pogo.org.uk>
-Date: Mon, 30 Apr 2012 19:39:22 +0100
-Subject: [PATCH 03/56] ALSA: echoaudio: Remove incorrect part of assertion
-
-commit c914f55f7cdfafe9d7d5b248751902c7ab57691e upstream.
-
-This assertion seems to imply that chip->dsp_code_to_load is a pointer.
-It's actually an integer handle on the actual firmware, and 0 has no
-special meaning.
-
-The assertion prevents initialisation of a Darla20 card, but would also
-affect other models. It seems it was introduced in commit dd7b254d.
-
-ALSA sound/pci/echoaudio/echoaudio.c:2061 Echoaudio driver starting...
-ALSA sound/pci/echoaudio/echoaudio.c:1969 chip=ebe4e000
-ALSA sound/pci/echoaudio/echoaudio.c:2007 pci=ed568000 irq=19 subdev=0010 Init hardware...
-ALSA sound/pci/echoaudio/darla20_dsp.c:36 init_hw() - Darla20
-------------[ cut here ]------------
-WARNING: at sound/pci/echoaudio/echoaudio_dsp.c:478 init_hw+0x1d1/0x86c [snd_darla20]()
-Hardware name: Dell DM051
-BUG? (!chip->dsp_code_to_load || !chip->comm_page)
-
-Signed-off-by: Mark Hills <mark at pogo.org.uk>
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- sound/pci/echoaudio/echoaudio_dsp.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/sound/pci/echoaudio/echoaudio_dsp.c b/sound/pci/echoaudio/echoaudio_dsp.c
-index 64417a7..d8c670c 100644
---- a/sound/pci/echoaudio/echoaudio_dsp.c
-+++ b/sound/pci/echoaudio/echoaudio_dsp.c
-@@ -475,7 +475,7 @@ static int load_firmware(struct echoaudio *chip)
- const struct firmware *fw;
- int box_type, err;
-
-- if (snd_BUG_ON(!chip->dsp_code_to_load || !chip->comm_page))
-+ if (snd_BUG_ON(!chip->comm_page))
- return -EPERM;
-
- /* See if the ASIC is present and working - only if the DSP is already loaded */
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0004-ARM-orion5x-Fix-GPIO-enable-bits-for-MPP9.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0004-ARM-orion5x-Fix-GPIO-enable-bits-for-MPP9.patch
deleted file mode 100644
index da89cfa..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0004-ARM-orion5x-Fix-GPIO-enable-bits-for-MPP9.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 900f27b9d47023edb709aad271b5d7516bb7c990 Mon Sep 17 00:00:00 2001
-From: Ben Hutchings <ben at decadent.org.uk>
-Date: Sun, 8 Apr 2012 05:18:53 +0100
-Subject: [PATCH 04/56] ARM: orion5x: Fix GPIO enable bits for MPP9
-
-commit 48d99f47a81a66bdd61a348c7fe8df5a7afdf5f3 upstream.
-
-Commit 554cdaefd1cf7bb54b209c4e68c7cec87ce442a9 ('ARM: orion5x: Refactor
-mpp code to use common orion platform mpp.') seems to have accidentally
-inverted the GPIO valid bits for MPP9 (only). For the mv2120 platform
-which uses MPP9 as a GPIO LED device, this results in the error:
-
-[ 12.711476] leds-gpio: probe of leds-gpio failed with error -22
-
-Reported-by: Henry von Tresckow <hvontres at gmail.com>
-References: http://bugs.debian.org/667446
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
-Tested-by: Hans Henry von Tresckow <hvontres at gmail.com>
-Signed-off-by: Jason Cooper <jason at lakedaemon.net>
----
- arch/arm/mach-orion5x/mpp.h | 4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/arch/arm/mach-orion5x/mpp.h b/arch/arm/mach-orion5x/mpp.h
-index eac6897..db70e79 100644
---- a/arch/arm/mach-orion5x/mpp.h
-+++ b/arch/arm/mach-orion5x/mpp.h
-@@ -65,8 +65,8 @@
- #define MPP8_GIGE MPP(8, 0x1, 0, 0, 1, 1, 1)
-
- #define MPP9_UNUSED MPP(9, 0x0, 0, 0, 1, 1, 1)
--#define MPP9_GPIO MPP(9, 0x0, 0, 0, 1, 1, 1)
--#define MPP9_GIGE MPP(9, 0x1, 1, 1, 1, 1, 1)
-+#define MPP9_GPIO MPP(9, 0x0, 1, 1, 1, 1, 1)
-+#define MPP9_GIGE MPP(9, 0x1, 0, 0, 1, 1, 1)
-
- #define MPP10_UNUSED MPP(10, 0x0, 0, 0, 1, 1, 1)
- #define MPP10_GPIO MPP(10, 0x0, 1, 1, 1, 1, 1)
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0005-ALSA-HDA-Lessen-CPU-usage-when-waiting-for-chip-to-r.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0005-ALSA-HDA-Lessen-CPU-usage-when-waiting-for-chip-to-r.patch
deleted file mode 100644
index 9cdf2a7..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0005-ALSA-HDA-Lessen-CPU-usage-when-waiting-for-chip-to-r.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From 3c3471703a78272a055d786ba1474384494bb7fc Mon Sep 17 00:00:00 2001
-From: David Henningsson <david.henningsson at canonical.com>
-Date: Fri, 4 May 2012 11:05:55 +0200
-Subject: [PATCH 05/56] ALSA: HDA: Lessen CPU usage when waiting for chip to
- respond
-
-commit 32cf4023e689ad5b3a81a749d8cc99d7f184cb99 upstream.
-
-When an IRQ for some reason gets lost, we wait up to a second using
-udelay, which is CPU intensive. This patch improves the situation by
-waiting about 30 ms in the CPU intensive mode, then stepping down to
-using msleep(2) instead. In essence, we trade some granularity in
-exchange for less CPU consumption when the waiting time is a bit longer.
-
-As a result, PulseAudio should no longer be killed by the kernel
-for taking up to much RT-prio CPU time. At least not for *this* reason.
-
-Signed-off-by: David Henningsson <david.henningsson at canonical.com>
-Tested-by: Arun Raghavan <arun.raghavan at collabora.co.uk>
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- sound/pci/hda/hda_intel.c | 6 ++++--
- 1 files changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
-index 192e6c0..53345bc 100644
---- a/sound/pci/hda/hda_intel.c
-+++ b/sound/pci/hda/hda_intel.c
-@@ -769,11 +769,13 @@ static unsigned int azx_rirb_get_response(struct hda_bus *bus,
- {
- struct azx *chip = bus->private_data;
- unsigned long timeout;
-+ unsigned long loopcounter;
- int do_poll = 0;
-
- again:
- timeout = jiffies + msecs_to_jiffies(1000);
-- for (;;) {
-+
-+ for (loopcounter = 0;; loopcounter++) {
- if (chip->polling_mode || do_poll) {
- spin_lock_irq(&chip->reg_lock);
- azx_update_rirb(chip);
-@@ -789,7 +791,7 @@ static unsigned int azx_rirb_get_response(struct hda_bus *bus,
- }
- if (time_after(jiffies, timeout))
- break;
-- if (bus->needs_damn_long_delay)
-+ if (bus->needs_damn_long_delay || loopcounter > 3000)
- msleep(2); /* temporary workaround */
- else {
- udelay(10);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0006-percpu-pcpu_embed_first_chunk-should-free-unused-par.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0006-percpu-pcpu_embed_first_chunk-should-free-unused-par.patch
deleted file mode 100644
index 26c5bd4..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0006-percpu-pcpu_embed_first_chunk-should-free-unused-par.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From c49984f9b2cba3ae4eb6ac7056e45cde17629a20 Mon Sep 17 00:00:00 2001
-From: Tejun Heo <tj at kernel.org>
-Date: Fri, 27 Apr 2012 08:42:53 -0700
-Subject: [PATCH 06/56] percpu: pcpu_embed_first_chunk() should free unused
- parts after all allocs are complete
-
-commit 42b64281453249dac52861f9b97d18552a7ec62b upstream.
-
-pcpu_embed_first_chunk() allocates memory for each node, copies percpu
-data and frees unused portions of it before proceeding to the next
-group. This assumes that allocations for different nodes doesn't
-overlap; however, depending on memory topology, the bootmem allocator
-may end up allocating memory from a different node than the requested
-one which may overlap with the portion freed from one of the previous
-percpu areas. This leads to percpu groups for different nodes
-overlapping which is a serious bug.
-
-This patch separates out copy & partial free from the allocation loop
-such that all allocations are complete before partial frees happen.
-
-This also fixes overlapping frees which could happen on allocation
-failure path - out_free_areas path frees whole groups but the groups
-could have portions freed at that point.
-
-Signed-off-by: Tejun Heo <tj at kernel.org>
-Reported-by: "Pavel V. Panteleev" <pp_84 at mail.ru>
-Tested-by: "Pavel V. Panteleev" <pp_84 at mail.ru>
-LKML-Reference: <E1SNhwY-0007ui-V7.pp_84-mail-ru at f220.mail.ru>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- mm/percpu.c | 10 ++++++++++
- 1 files changed, 10 insertions(+), 0 deletions(-)
-
-diff --git a/mm/percpu.c b/mm/percpu.c
-index 716eb4a..5c29750 100644
---- a/mm/percpu.c
-+++ b/mm/percpu.c
-@@ -1642,6 +1642,16 @@ int __init pcpu_embed_first_chunk(size_t reserved_size, size_t dyn_size,
- areas[group] = ptr;
-
- base = min(ptr, base);
-+ }
-+
-+ /*
-+ * Copy data and free unused parts. This should happen after all
-+ * allocations are complete; otherwise, we may end up with
-+ * overlapping groups.
-+ */
-+ for (group = 0; group < ai->nr_groups; group++) {
-+ struct pcpu_group_info *gi = &ai->groups[group];
-+ void *ptr = areas[group];
-
- for (i = 0; i < gi->nr_units; i++, ptr += ai->unit_size) {
- if (gi->cpu_map[i] == NR_CPUS) {
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0007-hugetlb-prevent-BUG_ON-in-hugetlb_fault-hugetlb_cow.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0007-hugetlb-prevent-BUG_ON-in-hugetlb_fault-hugetlb_cow.patch
deleted file mode 100644
index c7f28af..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0007-hugetlb-prevent-BUG_ON-in-hugetlb_fault-hugetlb_cow.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 264ef98284920c3c4b7139ce642f41f9b253bc24 Mon Sep 17 00:00:00 2001
-From: Chris Metcalf <cmetcalf at tilera.com>
-Date: Thu, 10 May 2012 13:01:44 -0700
-Subject: [PATCH 07/56] hugetlb: prevent BUG_ON in hugetlb_fault() ->
- hugetlb_cow()
-
-commit 4998a6c0edce7fae9c0a5463f6ec3fa585258ee7 upstream.
-
-Commit 66aebce747eaf ("hugetlb: fix race condition in hugetlb_fault()")
-added code to avoid a race condition by elevating the page refcount in
-hugetlb_fault() while calling hugetlb_cow().
-
-However, one code path in hugetlb_cow() includes an assertion that the
-page count is 1, whereas it may now also have the value 2 in this path.
-
-The consensus is that this BUG_ON has served its purpose, so rather than
-extending it to cover both cases, we just remove it.
-
-Signed-off-by: Chris Metcalf <cmetcalf at tilera.com>
-Acked-by: Mel Gorman <mel at csn.ul.ie>
-Acked-by: Hillf Danton <dhillf at gmail.com>
-Acked-by: Hugh Dickins <hughd at google.com>
-Cc: Michal Hocko <mhocko at suse.cz>
-Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu at jp.fujitsu.com>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- mm/hugetlb.c | 1 -
- 1 files changed, 0 insertions(+), 1 deletions(-)
-
-diff --git a/mm/hugetlb.c b/mm/hugetlb.c
-index bd936ed..7120c2e 100644
---- a/mm/hugetlb.c
-+++ b/mm/hugetlb.c
-@@ -2405,7 +2405,6 @@ retry_avoidcopy:
- if (outside_reserve) {
- BUG_ON(huge_pte_none(pte));
- if (unmap_ref_private(mm, vma, old_page, address)) {
-- BUG_ON(page_count(old_page) != 1);
- BUG_ON(huge_pte_none(pte));
- spin_lock(&mm->page_table_lock);
- goto retry_avoidcopy;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0008-namespaces-pid_ns-fix-leakage-on-fork-failure.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0008-namespaces-pid_ns-fix-leakage-on-fork-failure.patch
deleted file mode 100644
index 6810b96..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0008-namespaces-pid_ns-fix-leakage-on-fork-failure.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From 524ae74866597ebc0894b12ce456d8a53f80f533 Mon Sep 17 00:00:00 2001
-From: Mike Galbraith <efault at gmx.de>
-Date: Thu, 10 May 2012 13:01:45 -0700
-Subject: [PATCH 08/56] namespaces, pid_ns: fix leakage on fork() failure
-
-commit 5e2bf0142231194d36fdc9596b36a261ed2b9fe7 upstream.
-
-Fork() failure post namespace creation for a child cloned with
-CLONE_NEWPID leaks pid_namespace/mnt_cache due to proc being mounted
-during creation, but not unmounted during cleanup. Call
-pid_ns_release_proc() during cleanup.
-
-Signed-off-by: Mike Galbraith <efault at gmx.de>
-Acked-by: Oleg Nesterov <oleg at redhat.com>
-Reviewed-by: "Eric W. Biederman" <ebiederm at xmission.com>
-Cc: Pavel Emelyanov <xemul at parallels.com>
-Cc: Cyrill Gorcunov <gorcunov at openvz.org>
-Cc: Louis Rilling <louis.rilling at kerlabs.com>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- kernel/fork.c | 3 +++
- 1 files changed, 3 insertions(+), 0 deletions(-)
-
-diff --git a/kernel/fork.c b/kernel/fork.c
-index 0acf42c0..26f1ab0 100644
---- a/kernel/fork.c
-+++ b/kernel/fork.c
-@@ -47,6 +47,7 @@
- #include <linux/audit.h>
- #include <linux/memcontrol.h>
- #include <linux/ftrace.h>
-+#include <linux/proc_fs.h>
- #include <linux/profile.h>
- #include <linux/rmap.h>
- #include <linux/ksm.h>
-@@ -1387,6 +1388,8 @@ bad_fork_cleanup_io:
- if (p->io_context)
- exit_io_context(p);
- bad_fork_cleanup_namespaces:
-+ if (unlikely(clone_flags & CLONE_NEWPID))
-+ pid_ns_release_proc(p->nsproxy->pid_ns);
- exit_task_namespaces(p);
- bad_fork_cleanup_mm:
- if (p->mm)
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0009-mm-nobootmem-fix-sign-extend-problem-in-__free_pages.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0009-mm-nobootmem-fix-sign-extend-problem-in-__free_pages.patch
deleted file mode 100644
index c6208eb..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0009-mm-nobootmem-fix-sign-extend-problem-in-__free_pages.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From 06ae235e974156cc9304c169f89bba4d6ea4f6e4 Mon Sep 17 00:00:00 2001
-From: Russ Anderson <rja at sgi.com>
-Date: Thu, 10 May 2012 13:01:46 -0700
-Subject: [PATCH 09/56] mm: nobootmem: fix sign extend problem in
- __free_pages_memory()
-
-commit 6bc2e853c6b46a6041980d58200ad9b0a73a60ff upstream.
-
-Systems with 8 TBytes of memory or greater can hit a problem where only
-the the first 8 TB of memory shows up. This is due to "int i" being
-smaller than "unsigned long start_aligned", causing the high bits to be
-dropped.
-
-The fix is to change `i' to unsigned long to match start_aligned
-and end_aligned.
-
-Thanks to Jack Steiner for assistance tracking this down.
-
-Signed-off-by: Russ Anderson <rja at sgi.com>
-Cc: Jack Steiner <steiner at sgi.com>
-Cc: Johannes Weiner <hannes at cmpxchg.org>
-Cc: Tejun Heo <tj at kernel.org>
-Cc: David S. Miller <davem at davemloft.net>
-Cc: Yinghai Lu <yinghai at kernel.org>
-Cc: Gavin Shan <shangw at linux.vnet.ibm.com>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- mm/nobootmem.c | 3 +--
- 1 files changed, 1 insertions(+), 2 deletions(-)
-
-diff --git a/mm/nobootmem.c b/mm/nobootmem.c
-index 7fa41b4..07c08c4 100644
---- a/mm/nobootmem.c
-+++ b/mm/nobootmem.c
-@@ -83,8 +83,7 @@ void __init free_bootmem_late(unsigned long addr, unsigned long size)
-
- static void __init __free_pages_memory(unsigned long start, unsigned long end)
- {
-- int i;
-- unsigned long start_aligned, end_aligned;
-+ unsigned long i, start_aligned, end_aligned;
- int order = ilog2(BITS_PER_LONG);
-
- start_aligned = (start + (BITS_PER_LONG - 1)) & ~(BITS_PER_LONG - 1);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0010-asix-Fix-tx-transfer-padding-for-full-speed-USB.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0010-asix-Fix-tx-transfer-padding-for-full-speed-USB.patch
deleted file mode 100644
index c08dcb3..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0010-asix-Fix-tx-transfer-padding-for-full-speed-USB.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From ccd532b836540eb1f0e1d9eee4a87b8403d729c1 Mon Sep 17 00:00:00 2001
-From: Ingo van Lil <inguin at gmx.de>
-Date: Mon, 23 Apr 2012 22:05:38 +0000
-Subject: [PATCH 10/56] asix: Fix tx transfer padding for full-speed USB
-
-[ Upstream commit 2a5809499e35b53a6044fd34e72b242688b7a862 ]
-
-The asix.c USB Ethernet driver avoids ending a tx transfer with a zero-
-length packet by appending a four-byte padding to transfers whose length
-is a multiple of maxpacket. However, the hard-coded 512 byte maxpacket
-length is valid for high-speed USB only; full-speed USB uses 64 byte
-packets.
-
-Signed-off-by: Ingo van Lil <inguin at gmx.de>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/usb/asix.c | 4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/net/usb/asix.c b/drivers/net/usb/asix.c
-index fda4be2..a9abee8 100644
---- a/drivers/net/usb/asix.c
-+++ b/drivers/net/usb/asix.c
-@@ -403,7 +403,7 @@ static struct sk_buff *asix_tx_fixup(struct usbnet *dev, struct sk_buff *skb,
- u32 packet_len;
- u32 padbytes = 0xffff0000;
-
-- padlen = ((skb->len + 4) % 512) ? 0 : 4;
-+ padlen = ((skb->len + 4) & (dev->maxpacket - 1)) ? 0 : 4;
-
- if ((!skb_cloned(skb)) &&
- ((headroom + tailroom) >= (4 + padlen))) {
-@@ -425,7 +425,7 @@ static struct sk_buff *asix_tx_fixup(struct usbnet *dev, struct sk_buff *skb,
- cpu_to_le32s(&packet_len);
- skb_copy_to_linear_data(skb, &packet_len, sizeof(packet_len));
-
-- if ((skb->len % 512) == 0) {
-+ if (padlen) {
- cpu_to_le32s(&padbytes);
- memcpy(skb_tail_pointer(skb), &padbytes, sizeof(padbytes));
- skb_put(skb, sizeof(padbytes));
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0011-netem-fix-possible-skb-leak.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0011-netem-fix-possible-skb-leak.patch
deleted file mode 100644
index d57c44c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0011-netem-fix-possible-skb-leak.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From abb480a271308924f4174413f6d6969ecaaba892 Mon Sep 17 00:00:00 2001
-From: Eric Dumazet <edumazet at google.com>
-Date: Sun, 29 Apr 2012 09:08:22 +0000
-Subject: [PATCH 11/56] netem: fix possible skb leak
-
-[ Upstream commit 116a0fc31c6c9b8fc821be5a96e5bf0b43260131 ]
-
-skb_checksum_help(skb) can return an error, we must free skb in this
-case. qdisc_drop(skb, sch) can also be feeded with a NULL skb (if
-skb_unshare() failed), so lets use this generic helper.
-
-Signed-off-by: Eric Dumazet <edumazet at google.com>
-Cc: Stephen Hemminger <shemminger at osdl.org>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/sched/sch_netem.c | 6 ++----
- 1 files changed, 2 insertions(+), 4 deletions(-)
-
-diff --git a/net/sched/sch_netem.c b/net/sched/sch_netem.c
-index 7801b15..a489d8b 100644
---- a/net/sched/sch_netem.c
-+++ b/net/sched/sch_netem.c
-@@ -351,10 +351,8 @@ static int netem_enqueue(struct sk_buff *skb, struct Qdisc *sch)
- if (q->corrupt && q->corrupt >= get_crandom(&q->corrupt_cor)) {
- if (!(skb = skb_unshare(skb, GFP_ATOMIC)) ||
- (skb->ip_summed == CHECKSUM_PARTIAL &&
-- skb_checksum_help(skb))) {
-- sch->qstats.drops++;
-- return NET_XMIT_DROP;
-- }
-+ skb_checksum_help(skb)))
-+ return qdisc_drop(skb, sch);
-
- skb->data[net_random() % skb_headlen(skb)] ^= 1<<(net_random() % 8);
- }
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0012-net-In-unregister_netdevice_notifier-unregister-the-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0012-net-In-unregister_netdevice_notifier-unregister-the-.patch
deleted file mode 100644
index 0c1ea20..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0012-net-In-unregister_netdevice_notifier-unregister-the-.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-From d2b1ac073ca1e2caabafe219d0d1f04f4a2d1467 Mon Sep 17 00:00:00 2001
-From: "Eric W. Biederman" <ebiederm at xmission.com>
-Date: Fri, 6 Apr 2012 15:33:35 +0000
-Subject: [PATCH 12/56] net: In unregister_netdevice_notifier unregister the
- netdevices.
-
-[ Upstream commit 7d3d43dab4e978d8d9ad1acf8af15c9b1c4b0f0f ]
-
-We already synthesize events in register_netdevice_notifier and synthesizing
-events in unregister_netdevice_notifier allows to us remove the need for
-special case cleanup code.
-
-This change should be safe as it adds no new cases for existing callers
-of unregiser_netdevice_notifier to handle.
-
-Signed-off-by: Eric W. Biederman <ebiederm at xmission.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/core/dev.c | 20 ++++++++++++++++++++
- 1 files changed, 20 insertions(+), 0 deletions(-)
-
-diff --git a/net/core/dev.c b/net/core/dev.c
-index cd5050e..61a7baa 100644
---- a/net/core/dev.c
-+++ b/net/core/dev.c
-@@ -1421,14 +1421,34 @@ EXPORT_SYMBOL(register_netdevice_notifier);
- * register_netdevice_notifier(). The notifier is unlinked into the
- * kernel structures and may then be reused. A negative errno code
- * is returned on a failure.
-+ *
-+ * After unregistering unregister and down device events are synthesized
-+ * for all devices on the device list to the removed notifier to remove
-+ * the need for special case cleanup code.
- */
-
- int unregister_netdevice_notifier(struct notifier_block *nb)
- {
-+ struct net_device *dev;
-+ struct net *net;
- int err;
-
- rtnl_lock();
- err = raw_notifier_chain_unregister(&netdev_chain, nb);
-+ if (err)
-+ goto unlock;
-+
-+ for_each_net(net) {
-+ for_each_netdev(net, dev) {
-+ if (dev->flags & IFF_UP) {
-+ nb->notifier_call(nb, NETDEV_GOING_DOWN, dev);
-+ nb->notifier_call(nb, NETDEV_DOWN, dev);
-+ }
-+ nb->notifier_call(nb, NETDEV_UNREGISTER, dev);
-+ nb->notifier_call(nb, NETDEV_UNREGISTER_BATCH, dev);
-+ }
-+ }
-+unlock:
- rtnl_unlock();
- return err;
- }
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0013-net-l2tp-unlock-socket-lock-before-returning-from-l2.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0013-net-l2tp-unlock-socket-lock-before-returning-from-l2.patch
deleted file mode 100644
index 199864f..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0013-net-l2tp-unlock-socket-lock-before-returning-from-l2.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 1b3ded810906676f03b6eab986308b1cf5e6b135 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <levinsasha928 at gmail.com>
-Date: Wed, 2 May 2012 03:58:43 +0000
-Subject: [PATCH 13/56] net: l2tp: unlock socket lock before returning from
- l2tp_ip_sendmsg
-
-[ Upstream commit 84768edbb2721637620b2d84501bb0d5aed603f1 ]
-
-l2tp_ip_sendmsg could return without releasing socket lock, making it all the
-way to userspace, and generating the following warning:
-
-[ 130.891594] ================================================
-[ 130.894569] [ BUG: lock held when returning to user space! ]
-[ 130.897257] 3.4.0-rc5-next-20120501-sasha #104 Tainted: G W
-[ 130.900336] ------------------------------------------------
-[ 130.902996] trinity/8384 is leaving the kernel with locks still held!
-[ 130.906106] 1 lock held by trinity/8384:
-[ 130.907924] #0: (sk_lock-AF_INET){+.+.+.}, at: [<ffffffff82b9503f>] l2tp_ip_sendmsg+0x2f/0x550
-
-Introduced by commit 2f16270 ("l2tp: Fix locking in l2tp_ip.c").
-
-Signed-off-by: Sasha Levin <levinsasha928 at gmail.com>
-Acked-by: Eric Dumazet <edumazet at google.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/l2tp/l2tp_ip.c | 3 ++-
- 1 files changed, 2 insertions(+), 1 deletions(-)
-
-diff --git a/net/l2tp/l2tp_ip.c b/net/l2tp/l2tp_ip.c
-index 55670ec..2a2a3e7 100644
---- a/net/l2tp/l2tp_ip.c
-+++ b/net/l2tp/l2tp_ip.c
-@@ -441,8 +441,9 @@ static int l2tp_ip_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *m
-
- daddr = lip->l2tp_addr.s_addr;
- } else {
-+ rc = -EDESTADDRREQ;
- if (sk->sk_state != TCP_ESTABLISHED)
-- return -EDESTADDRREQ;
-+ goto out;
-
- daddr = inet->inet_daddr;
- connected = 1;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0014-sky2-propogate-rx-hash-when-packet-is-copied.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0014-sky2-propogate-rx-hash-when-packet-is-copied.patch
deleted file mode 100644
index 55d6ef9..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0014-sky2-propogate-rx-hash-when-packet-is-copied.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 040442d719f91dcb002eaa1efaffbebd2fd44328 Mon Sep 17 00:00:00 2001
-From: stephen hemminger <shemminger at vyatta.com>
-Date: Mon, 30 Apr 2012 05:49:45 +0000
-Subject: [PATCH 14/56] sky2: propogate rx hash when packet is copied
-
-[ Upstream commit 3f42941b5d1d13542b1a755a9e4f633aa72e4d3e ]
-
-When a small packet is received, the driver copies it to a new skb to allow
-reusing the full size Rx buffer. The copy was propogating the checksum offload
-but not the receive hash information. The bug is impact was mostly harmless
-and therefore not observed until reviewing this area of code.
-
-Signed-off-by: Stephen Hemminger <shemminger at vyatta.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/ethernet/marvell/sky2.c | 3 +++
- 1 files changed, 3 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/net/ethernet/marvell/sky2.c b/drivers/net/ethernet/marvell/sky2.c
-index 7eb8a00..e1f4b65 100644
---- a/drivers/net/ethernet/marvell/sky2.c
-+++ b/drivers/net/ethernet/marvell/sky2.c
-@@ -2475,8 +2475,11 @@ static struct sk_buff *receive_copy(struct sky2_port *sky2,
- skb_copy_from_linear_data(re->skb, skb->data, length);
- skb->ip_summed = re->skb->ip_summed;
- skb->csum = re->skb->csum;
-+ skb->rxhash = re->skb->rxhash;
-+
- pci_dma_sync_single_for_device(sky2->hw->pdev, re->data_addr,
- length, PCI_DMA_FROMDEVICE);
-+ re->skb->rxhash = 0;
- re->skb->ip_summed = CHECKSUM_NONE;
- skb_put(skb, length);
- }
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0015-sky2-fix-receive-length-error-in-mixed-non-VLAN-VLAN.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0015-sky2-fix-receive-length-error-in-mixed-non-VLAN-VLAN.patch
deleted file mode 100644
index ba0888d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0015-sky2-fix-receive-length-error-in-mixed-non-VLAN-VLAN.patch
+++ /dev/null
@@ -1,136 +0,0 @@
-From 27f7b26b133f97629f82ce156d481a32a881472b Mon Sep 17 00:00:00 2001
-From: stephen hemminger <shemminger at vyatta.com>
-Date: Mon, 30 Apr 2012 06:47:37 +0000
-Subject: [PATCH 15/56] sky2: fix receive length error in mixed non-VLAN/VLAN
- traffic
-
-[ Upstream commit e072b3fad5f3915102c94628b4971f52ff99dd05 ]
-
-Bug: The VLAN bit of the MAC RX Status Word is unreliable in several older
-supported chips. Sometimes the VLAN bit is not set for valid VLAN packets
-and also sometimes the VLAN bit is set for non-VLAN packets that came after
-a VLAN packet. This results in a receive length error when VLAN hardware
-tagging is enabled.
-
-Fix: Variation on original fix proposed by Mirko.
-The VLAN information is decoded in the status loop, and can be
-applied to the received SKB there. This eliminates the need for the
-separate tag field in the interface data structure. The tag has to
-be copied and cleared if packet is copied. This version checked out
-with vlan and normal traffic.
-
-Note: vlan_tx_tag_present should be renamed vlan_tag_present, but that
-is outside scope of this.
-
-Reported-by: Mirko Lindner <mlindner at marvell.com>
-Signed-off-by: Stephen Hemminger <shemminger at vyatta.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/ethernet/marvell/sky2.c | 28 +++++++++++++++++-----------
- drivers/net/ethernet/marvell/sky2.h | 1 -
- 2 files changed, 17 insertions(+), 12 deletions(-)
-
-diff --git a/drivers/net/ethernet/marvell/sky2.c b/drivers/net/ethernet/marvell/sky2.c
-index e1f4b65..65c51ff 100644
---- a/drivers/net/ethernet/marvell/sky2.c
-+++ b/drivers/net/ethernet/marvell/sky2.c
-@@ -2476,9 +2476,11 @@ static struct sk_buff *receive_copy(struct sky2_port *sky2,
- skb->ip_summed = re->skb->ip_summed;
- skb->csum = re->skb->csum;
- skb->rxhash = re->skb->rxhash;
-+ skb->vlan_tci = re->skb->vlan_tci;
-
- pci_dma_sync_single_for_device(sky2->hw->pdev, re->data_addr,
- length, PCI_DMA_FROMDEVICE);
-+ re->skb->vlan_tci = 0;
- re->skb->rxhash = 0;
- re->skb->ip_summed = CHECKSUM_NONE;
- skb_put(skb, length);
-@@ -2564,9 +2566,6 @@ static struct sk_buff *sky2_receive(struct net_device *dev,
- struct sk_buff *skb = NULL;
- u16 count = (status & GMR_FS_LEN) >> 16;
-
-- if (status & GMR_FS_VLAN)
-- count -= VLAN_HLEN; /* Account for vlan tag */
--
- netif_printk(sky2, rx_status, KERN_DEBUG, dev,
- "rx slot %u status 0x%x len %d\n",
- sky2->rx_next, status, length);
-@@ -2574,6 +2573,9 @@ static struct sk_buff *sky2_receive(struct net_device *dev,
- sky2->rx_next = (sky2->rx_next + 1) % sky2->rx_pending;
- prefetch(sky2->rx_ring + sky2->rx_next);
-
-+ if (vlan_tx_tag_present(re->skb))
-+ count -= VLAN_HLEN; /* Account for vlan tag */
-+
- /* This chip has hardware problems that generates bogus status.
- * So do only marginal checking and expect higher level protocols
- * to handle crap frames.
-@@ -2631,11 +2633,8 @@ static inline void sky2_tx_done(struct net_device *dev, u16 last)
- }
-
- static inline void sky2_skb_rx(const struct sky2_port *sky2,
-- u32 status, struct sk_buff *skb)
-+ struct sk_buff *skb)
- {
-- if (status & GMR_FS_VLAN)
-- __vlan_hwaccel_put_tag(skb, be16_to_cpu(sky2->rx_tag));
--
- if (skb->ip_summed == CHECKSUM_NONE)
- netif_receive_skb(skb);
- else
-@@ -2689,6 +2688,14 @@ static void sky2_rx_checksum(struct sky2_port *sky2, u32 status)
- }
- }
-
-+static void sky2_rx_tag(struct sky2_port *sky2, u16 length)
-+{
-+ struct sk_buff *skb;
-+
-+ skb = sky2->rx_ring[sky2->rx_next].skb;
-+ __vlan_hwaccel_put_tag(skb, be16_to_cpu(length));
-+}
-+
- static void sky2_rx_hash(struct sky2_port *sky2, u32 status)
- {
- struct sk_buff *skb;
-@@ -2747,8 +2754,7 @@ static int sky2_status_intr(struct sky2_hw *hw, int to_do, u16 idx)
- }
-
- skb->protocol = eth_type_trans(skb, dev);
--
-- sky2_skb_rx(sky2, status, skb);
-+ sky2_skb_rx(sky2, skb);
-
- /* Stop after net poll weight */
- if (++work_done >= to_do)
-@@ -2756,11 +2762,11 @@ static int sky2_status_intr(struct sky2_hw *hw, int to_do, u16 idx)
- break;
-
- case OP_RXVLAN:
-- sky2->rx_tag = length;
-+ sky2_rx_tag(sky2, length);
- break;
-
- case OP_RXCHKSVLAN:
-- sky2->rx_tag = length;
-+ sky2_rx_tag(sky2, length);
- /* fall through */
- case OP_RXCHKS:
- if (likely(dev->features & NETIF_F_RXCSUM))
-diff --git a/drivers/net/ethernet/marvell/sky2.h b/drivers/net/ethernet/marvell/sky2.h
-index ff6f58b..3c896ce 100644
---- a/drivers/net/ethernet/marvell/sky2.h
-+++ b/drivers/net/ethernet/marvell/sky2.h
-@@ -2241,7 +2241,6 @@ struct sky2_port {
- u16 rx_pending;
- u16 rx_data_size;
- u16 rx_nfrags;
-- u16 rx_tag;
-
- struct {
- unsigned long last;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0016-sungem-Fix-WakeOnLan.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0016-sungem-Fix-WakeOnLan.patch
deleted file mode 100644
index f750148..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0016-sungem-Fix-WakeOnLan.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 4fb3cd4329db7cba66335fe4d74f5234030cf1a9 Mon Sep 17 00:00:00 2001
-From: Gerard Lledo <gerard.lledo at gmail.com>
-Date: Sat, 28 Apr 2012 08:52:37 +0000
-Subject: [PATCH 16/56] sungem: Fix WakeOnLan
-
-[ Upstream commit 5a8887d39e1ba5ee2d4ccb94b14d6f2dce5ddfca ]
-
-WakeOnLan was broken in this driver because gp->asleep_wol is a 1-bit
-bitfield and it was being assigned WAKE_MAGIC, which is (1 << 5).
-gp->asleep_wol remains 0 and the machine never wakes up. Fixed by casting
-gp->wake_on_lan to bool. Tested on an iBook G4.
-
-Signed-off-by: Gerard Lledo <gerard.lledo at gmail.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/ethernet/sun/sungem.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/net/ethernet/sun/sungem.c b/drivers/net/ethernet/sun/sungem.c
-index ceab215..c508d6a 100644
---- a/drivers/net/ethernet/sun/sungem.c
-+++ b/drivers/net/ethernet/sun/sungem.c
-@@ -2340,7 +2340,7 @@ static int gem_suspend(struct pci_dev *pdev, pm_message_t state)
- netif_device_detach(dev);
-
- /* Switch off chip, remember WOL setting */
-- gp->asleep_wol = gp->wake_on_lan;
-+ gp->asleep_wol = !!gp->wake_on_lan;
- gem_do_stop(dev, gp->asleep_wol);
-
- /* Unlock the network stack */
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0017-tg3-Avoid-panic-from-reserved-statblk-field-access.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0017-tg3-Avoid-panic-from-reserved-statblk-field-access.patch
deleted file mode 100644
index 1fbe741..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0017-tg3-Avoid-panic-from-reserved-statblk-field-access.patch
+++ /dev/null
@@ -1,67 +0,0 @@
-From ec9a6575908fa9558b613ace25ec0a9f5e1795ec Mon Sep 17 00:00:00 2001
-From: Matt Carlson <mcarlson at broadcom.com>
-Date: Tue, 24 Apr 2012 13:37:01 +0000
-Subject: [PATCH 17/56] tg3: Avoid panic from reserved statblk field access
-
-[ Upstream commit f891ea1634ce41f5f47ae40d8594809f4cd2ca66 ]
-
-When RSS is enabled, interrupt vector 0 does not receive any rx traffic.
-The rx producer index fields for vector 0's status block should be
-considered reserved in this case. This patch changes the code to
-respect these reserved fields, which avoids a kernel panic when these
-fields take on non-zero values.
-
-Signed-off-by: Matt Carlson <mcarlson at broadcom.com>
-Signed-off-by: Michael Chan <mchan at broadcom.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/ethernet/broadcom/tg3.c | 18 ++++++++++++++++--
- 1 files changed, 16 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/net/ethernet/broadcom/tg3.c b/drivers/net/ethernet/broadcom/tg3.c
-index 3d55883..2dcac28 100644
---- a/drivers/net/ethernet/broadcom/tg3.c
-+++ b/drivers/net/ethernet/broadcom/tg3.c
-@@ -879,8 +879,13 @@ static inline unsigned int tg3_has_work(struct tg3_napi *tnapi)
- if (sblk->status & SD_STATUS_LINK_CHG)
- work_exists = 1;
- }
-- /* check for RX/TX work to do */
-- if (sblk->idx[0].tx_consumer != tnapi->tx_cons ||
-+
-+ /* check for TX work to do */
-+ if (sblk->idx[0].tx_consumer != tnapi->tx_cons)
-+ work_exists = 1;
-+
-+ /* check for RX work to do */
-+ if (tnapi->rx_rcb_prod_idx &&
- *(tnapi->rx_rcb_prod_idx) != tnapi->rx_rcb_ptr)
- work_exists = 1;
-
-@@ -5895,6 +5900,9 @@ static int tg3_poll_work(struct tg3_napi *tnapi, int work_done, int budget)
- return work_done;
- }
-
-+ if (!tnapi->rx_rcb_prod_idx)
-+ return work_done;
-+
- /* run RX thread, within the bounds set by NAPI.
- * All RX "locking" is done by ensuring outside
- * code synchronizes with tg3->napi.poll()
-@@ -7448,6 +7456,12 @@ static int tg3_alloc_consistent(struct tg3 *tp)
- */
- switch (i) {
- default:
-+ if (tg3_flag(tp, ENABLE_RSS)) {
-+ tnapi->rx_rcb_prod_idx = NULL;
-+ break;
-+ }
-+ /* Fall through */
-+ case 1:
- tnapi->rx_rcb_prod_idx = &sblk->idx[0].rx_producer;
- break;
- case 2:
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0018-tcp-fix-infinite-cwnd-in-tcp_complete_cwr.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0018-tcp-fix-infinite-cwnd-in-tcp_complete_cwr.patch
deleted file mode 100644
index 7e2818d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0018-tcp-fix-infinite-cwnd-in-tcp_complete_cwr.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 6b142c33b94fd1c35b6a19be0982ae408ce8d162 Mon Sep 17 00:00:00 2001
-From: Yuchung Cheng <ycheng at google.com>
-Date: Mon, 30 Apr 2012 06:00:18 +0000
-Subject: [PATCH 18/56] tcp: fix infinite cwnd in tcp_complete_cwr()
-
-[ Upstream commit 1cebce36d660c83bd1353e41f3e66abd4686f215 ]
-
-When the cwnd reduction is done, ssthresh may be infinite
-if TCP enters CWR via ECN or F-RTO. If cwnd is not undone, i.e.,
-undo_marker is set, tcp_complete_cwr() falsely set cwnd to the
-infinite ssthresh value. The correct operation is to keep cwnd
-intact because it has been updated in ECN or F-RTO.
-
-Signed-off-by: Yuchung Cheng <ycheng at google.com>
-Acked-by: Neal Cardwell <ncardwell at google.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/ipv4/tcp_input.c | 9 ++++++---
- 1 files changed, 6 insertions(+), 3 deletions(-)
-
-diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
-index daedc07..db07c9e 100644
---- a/net/ipv4/tcp_input.c
-+++ b/net/ipv4/tcp_input.c
-@@ -2868,11 +2868,14 @@ static inline void tcp_complete_cwr(struct sock *sk)
-
- /* Do not moderate cwnd if it's already undone in cwr or recovery. */
- if (tp->undo_marker) {
-- if (inet_csk(sk)->icsk_ca_state == TCP_CA_CWR)
-+ if (inet_csk(sk)->icsk_ca_state == TCP_CA_CWR) {
- tp->snd_cwnd = min(tp->snd_cwnd, tp->snd_ssthresh);
-- else /* PRR */
-+ tp->snd_cwnd_stamp = tcp_time_stamp;
-+ } else if (tp->snd_ssthresh < TCP_INFINITE_SSTHRESH) {
-+ /* PRR algorithm. */
- tp->snd_cwnd = tp->snd_ssthresh;
-- tp->snd_cwnd_stamp = tcp_time_stamp;
-+ tp->snd_cwnd_stamp = tcp_time_stamp;
-+ }
- }
- tcp_ca_event(sk, CA_EVENT_COMPLETE_CWR);
- }
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0019-tcp-change-tcp_adv_win_scale-and-tcp_rmem-2.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0019-tcp-change-tcp_adv_win_scale-and-tcp_rmem-2.patch
deleted file mode 100644
index e0e1dda..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0019-tcp-change-tcp_adv_win_scale-and-tcp_rmem-2.patch
+++ /dev/null
@@ -1,124 +0,0 @@
-From 98d841428279a8060b46cf13a1463ebbeca65b4a Mon Sep 17 00:00:00 2001
-From: Eric Dumazet <edumazet at google.com>
-Date: Wed, 2 May 2012 02:28:41 +0000
-Subject: [PATCH 19/56] tcp: change tcp_adv_win_scale and tcp_rmem[2]
-
-[ Upstream commit b49960a05e32121d29316cfdf653894b88ac9190 ]
-
-tcp_adv_win_scale default value is 2, meaning we expect a good citizen
-skb to have skb->len / skb->truesize ratio of 75% (3/4)
-
-In 2.6 kernels we (mis)accounted for typical MSS=1460 frame :
-1536 + 64 + 256 = 1856 'estimated truesize', and 1856 * 3/4 = 1392.
-So these skbs were considered as not bloated.
-
-With recent truesize fixes, a typical MSS=1460 frame truesize is now the
-more precise :
-2048 + 256 = 2304. But 2304 * 3/4 = 1728.
-So these skb are not good citizen anymore, because 1460 < 1728
-
-(GRO can escape this problem because it build skbs with a too low
-truesize.)
-
-This also means tcp advertises a too optimistic window for a given
-allocated rcvspace : When receiving frames, sk_rmem_alloc can hit
-sk_rcvbuf limit and we call tcp_prune_queue()/tcp_collapse() too often,
-especially when application is slow to drain its receive queue or in
-case of losses (netperf is fast, scp is slow). This is a major latency
-source.
-
-We should adjust the len/truesize ratio to 50% instead of 75%
-
-This patch :
-
-1) changes tcp_adv_win_scale default to 1 instead of 2
-
-2) increase tcp_rmem[2] limit from 4MB to 6MB to take into account
-better truesize tracking and to allow autotuning tcp receive window to
-reach same value than before. Note that same amount of kernel memory is
-consumed compared to 2.6 kernels.
-
-Signed-off-by: Eric Dumazet <edumazet at google.com>
-Cc: Neal Cardwell <ncardwell at google.com>
-Cc: Tom Herbert <therbert at google.com>
-Cc: Yuchung Cheng <ycheng at google.com>
-Acked-by: Neal Cardwell <ncardwell at google.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- Documentation/networking/ip-sysctl.txt | 4 ++--
- net/ipv4/tcp.c | 9 +++++----
- net/ipv4/tcp_input.c | 2 +-
- 3 files changed, 8 insertions(+), 7 deletions(-)
-
-diff --git a/Documentation/networking/ip-sysctl.txt b/Documentation/networking/ip-sysctl.txt
-index 589f2da..a4399f5 100644
---- a/Documentation/networking/ip-sysctl.txt
-+++ b/Documentation/networking/ip-sysctl.txt
-@@ -137,7 +137,7 @@ tcp_adv_win_scale - INTEGER
- (if tcp_adv_win_scale > 0) or bytes-bytes/2^(-tcp_adv_win_scale),
- if it is <= 0.
- Possible values are [-31, 31], inclusive.
-- Default: 2
-+ Default: 1
-
- tcp_allowed_congestion_control - STRING
- Show/set the congestion control choices available to non-privileged
-@@ -397,7 +397,7 @@ tcp_rmem - vector of 3 INTEGERs: min, default, max
- net.core.rmem_max. Calling setsockopt() with SO_RCVBUF disables
- automatic tuning of that socket's receive buffer size, in which
- case this value is ignored.
-- Default: between 87380B and 4MB, depending on RAM size.
-+ Default: between 87380B and 6MB, depending on RAM size.
-
- tcp_sack - BOOLEAN
- Enable select acknowledgments (SACKS).
-diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
-index 7904db4..8f826b1 100644
---- a/net/ipv4/tcp.c
-+++ b/net/ipv4/tcp.c
-@@ -3216,7 +3216,7 @@ void __init tcp_init(void)
- {
- struct sk_buff *skb = NULL;
- unsigned long limit;
-- int i, max_share, cnt;
-+ int i, max_rshare, max_wshare, cnt;
- unsigned long jiffy = jiffies;
-
- BUILD_BUG_ON(sizeof(struct tcp_skb_cb) > sizeof(skb->cb));
-@@ -3280,15 +3280,16 @@ void __init tcp_init(void)
-
- /* Set per-socket limits to no more than 1/128 the pressure threshold */
- limit = ((unsigned long)sysctl_tcp_mem[1]) << (PAGE_SHIFT - 7);
-- max_share = min(4UL*1024*1024, limit);
-+ max_wshare = min(4UL*1024*1024, limit);
-+ max_rshare = min(6UL*1024*1024, limit);
-
- sysctl_tcp_wmem[0] = SK_MEM_QUANTUM;
- sysctl_tcp_wmem[1] = 16*1024;
-- sysctl_tcp_wmem[2] = max(64*1024, max_share);
-+ sysctl_tcp_wmem[2] = max(64*1024, max_wshare);
-
- sysctl_tcp_rmem[0] = SK_MEM_QUANTUM;
- sysctl_tcp_rmem[1] = 87380;
-- sysctl_tcp_rmem[2] = max(87380, max_share);
-+ sysctl_tcp_rmem[2] = max(87380, max_rshare);
-
- printk(KERN_INFO "TCP: Hash tables configured "
- "(established %u bind %u)\n",
-diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
-index db07c9e..9726927 100644
---- a/net/ipv4/tcp_input.c
-+++ b/net/ipv4/tcp_input.c
-@@ -83,7 +83,7 @@ int sysctl_tcp_ecn __read_mostly = 2;
- EXPORT_SYMBOL(sysctl_tcp_ecn);
- int sysctl_tcp_dsack __read_mostly = 1;
- int sysctl_tcp_app_win __read_mostly = 31;
--int sysctl_tcp_adv_win_scale __read_mostly = 2;
-+int sysctl_tcp_adv_win_scale __read_mostly = 1;
- EXPORT_SYMBOL(sysctl_tcp_adv_win_scale);
-
- int sysctl_tcp_stdurg __read_mostly;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0020-brcm80211-smac-pass-missing-argument-to-brcms_b_mute.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0020-brcm80211-smac-pass-missing-argument-to-brcms_b_mute.patch
deleted file mode 100644
index 92501a2..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0020-brcm80211-smac-pass-missing-argument-to-brcms_b_mute.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 9edfb7d2fb5250828aabc9ad47708b56184fa010 Mon Sep 17 00:00:00 2001
-From: Jonathan Nieder <jrnieder at gmail.com>
-Date: Fri, 11 May 2012 19:35:33 -0500
-Subject: [PATCH 20/56] brcm80211: smac: pass missing argument to
- 'brcms_b_mute'
-
-[Not needed upstream --- this bug is specific to 3.2.y.]
-
-Commit c6c44893c864, which removes the flag argument from brcms_b_mute,
-is not part of 3.2.y, and we forgot to adjust a new call accordingly
-when applying commit badc4f07622f ("brcm80211: smac: resume transmit
-fifo upon receiving frames").
-
- drivers/net/wireless/brcm80211/brcmsmac/main.c: In function 'brcms_c_recvctl':
- drivers/net/wireless/brcm80211/brcmsmac/main.c:7882:4: error: too few arguments to function 'brcms_b_mute'
- drivers/net/wireless/brcm80211/brcmsmac/main.c:2538:13: note: declared here
-
-Earlier build tests missed this because they didn't include this driver
-due to 'depends on BCMA=n'.
-
-Reported-by: Ben Hutchings <ben at decadent.org.uk>
-Signed-off-by: Jonathan Nieder <jrnieder at gmail.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/wireless/brcm80211/brcmsmac/main.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/net/wireless/brcm80211/brcmsmac/main.c b/drivers/net/wireless/brcm80211/brcmsmac/main.c
-index f98becc..833cbef 100644
---- a/drivers/net/wireless/brcm80211/brcmsmac/main.c
-+++ b/drivers/net/wireless/brcm80211/brcmsmac/main.c
-@@ -7879,7 +7879,7 @@ brcms_c_recvctl(struct brcms_c_info *wlc, struct d11rxhdr *rxh,
- if (wlc->hw->suspended_fifos) {
- hdr = (struct ieee80211_hdr *)p->data;
- if (ieee80211_is_beacon(hdr->frame_control))
-- brcms_b_mute(wlc->hw, false);
-+ brcms_b_mute(wlc->hw, false, 0);
- }
-
- memcpy(IEEE80211_SKB_RXCB(p), &rx_status, sizeof(rx_status));
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0021-phy-icplus-fix-Auto-Power-Saving-in-ip101a_config_in.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0021-phy-icplus-fix-Auto-Power-Saving-in-ip101a_config_in.patch
deleted file mode 100644
index 5b7769f..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0021-phy-icplus-fix-Auto-Power-Saving-in-ip101a_config_in.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 78381ca9729f5c7508cc74701d29cc325f37c5b7 Mon Sep 17 00:00:00 2001
-From: Srinivas Kandagatla <srinivas.kandagatla at st.com>
-Date: Mon, 2 Apr 2012 00:02:09 +0000
-Subject: [PATCH 21/56] phy:icplus:fix Auto Power Saving in
- ip101a_config_init.
-
-[ Upstream commit b3300146aa8efc5d3937fd33f3cfdc580a3843bc ]
-
-This patch fixes Auto Power Saving configuration in ip101a_config_init
-which was broken as there is no phy register write followed after
-setting IP101A_APS_ON flag.
-
-This patch also fixes the return value of ip101a_config_init.
-
-Without this patch ip101a_config_init returns 2 which is not an error
-accroding to IS_ERR and the mac driver will continue accessing 2 as
-valid pointer to phy_dev resulting in memory fault.
-
-Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla at st.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Jonathan Nieder <jrnieder at gmail.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/phy/icplus.c | 3 ++-
- 1 files changed, 2 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/net/phy/icplus.c b/drivers/net/phy/icplus.c
-index c81f136..b142300 100644
---- a/drivers/net/phy/icplus.c
-+++ b/drivers/net/phy/icplus.c
-@@ -150,7 +150,8 @@ static int ip101a_config_init(struct phy_device *phydev)
- /* Enable Auto Power Saving mode */
- c = phy_read(phydev, IP10XX_SPEC_CTRL_STATUS);
- c |= IP101A_APS_ON;
-- return c;
-+
-+ return phy_write(phydev, IP10XX_SPEC_CTRL_STATUS, c);
- }
-
- static int ip175c_read_status(struct phy_device *phydev)
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0022-NFSv4-Revalidate-uid-gid-after-open.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0022-NFSv4-Revalidate-uid-gid-after-open.patch
deleted file mode 100644
index edc0c91..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0022-NFSv4-Revalidate-uid-gid-after-open.patch
+++ /dev/null
@@ -1,74 +0,0 @@
-From 28797e10f3879232042e0f636e6650a2b35912f6 Mon Sep 17 00:00:00 2001
-From: Jonathan Nieder <jrnieder at gmail.com>
-Date: Fri, 11 May 2012 04:20:20 -0500
-Subject: [PATCH 22/56] NFSv4: Revalidate uid/gid after open
-
-This is a shorter (and more appropriate for stable kernels) analog to
-the following upstream commit:
-
-commit 6926afd1925a54a13684ebe05987868890665e2b
-Author: Trond Myklebust <Trond.Myklebust at netapp.com>
-Date: Sat Jan 7 13:22:46 2012 -0500
-
- NFSv4: Save the owner/group name string when doing open
-
- ...so that we can do the uid/gid mapping outside the asynchronous RPC
- context.
- This fixes a bug in the current NFSv4 atomic open code where the client
- isn't able to determine what the true uid/gid fields of the file are,
- (because the asynchronous nature of the OPEN call denies it the ability
- to do an upcall) and so fills them with default values, marking the
- inode as needing revalidation.
- Unfortunately, in some cases, the VFS will do some additional sanity
- checks on the file, and may override the server's decision to allow
- the open because it sees the wrong owner/group fields.
-
- Signed-off-by: Trond Myklebust <Trond.Myklebust at netapp.com>
-
-Without this patch, logging into two different machines with home
-directories mounted over NFS4 and then running "vim" and typing ":q"
-in each reliably produces the following error on the second machine:
-
- E137: Viminfo file is not writable: /users/system/rtheys/.viminfo
-
-This regression was introduced by 80e52aced138 ("NFSv4: Don't do
-idmapper upcalls for asynchronous RPC calls", merged during the 2.6.32
-cycle) --- after the OPEN call, .viminfo has the default values for
-st_uid and st_gid (0xfffffffe) cached because we do not want to let
-rpciod wait for an idmapper upcall to fill them in.
-
-The fix used in mainline is to save the owner and group as strings and
-perform the upcall in _nfs4_proc_open outside the rpciod context,
-which takes about 600 lines. For stable, we can do something similar
-with a one-liner: make open check for the stale fields and make a
-(synchronous) GETATTR call to fill them when needed.
-
-Trond dictated the patch, I typed it in, and Rik tested it.
-
-Addresses http://bugs.debian.org/659111 and
- https://bugzilla.redhat.com/789298
-
-Reported-by: Rik Theys <Rik.Theys at esat.kuleuven.be>
-Explained-by: David Flyn <davidf at rd.bbc.co.uk>
-Signed-off-by: Jonathan Nieder <jrnieder at gmail.com>
-Tested-by: Rik Theys <Rik.Theys at esat.kuleuven.be>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/nfs/nfs4proc.c | 1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
-index 51f6a40..bab7c58 100644
---- a/fs/nfs/nfs4proc.c
-+++ b/fs/nfs/nfs4proc.c
-@@ -1802,6 +1802,7 @@ static int _nfs4_do_open(struct inode *dir, struct dentry *dentry, fmode_t fmode
- nfs_setattr_update_inode(state->inode, sattr);
- nfs_post_op_update_inode(state->inode, opendata->o_res.f_attr);
- }
-+ nfs_revalidate_inode(server, state->inode);
- nfs4_opendata_put(opendata);
- nfs4_put_state_owner(sp);
- *res = state;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0023-target-Drop-incorrect-se_lun_acl-release-for-dynamic.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0023-target-Drop-incorrect-se_lun_acl-release-for-dynamic.patch
deleted file mode 100644
index 66d0601..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0023-target-Drop-incorrect-se_lun_acl-release-for-dynamic.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-From ca92b5c1f22073e079dae19162698441a231e36f Mon Sep 17 00:00:00 2001
-From: Nicholas Bellinger <nab at linux-iscsi.org>
-Date: Thu, 10 May 2012 22:05:49 -0700
-Subject: [PATCH 23/56] target: Drop incorrect se_lun_acl release for dynamic
- -> explict ACL conversion
-
-commit cfebf8f42f47327fa54cf05c19b98f4bd5236a26 upstream.
-
-This patch removes some potentially problematic legacy code within
-core_clear_initiator_node_from_tpg() that was originally intended to
-release left over se_lun_acl setup during dynamic NodeACL+MappedLUN
-generate when running with TPG demo-mode operation.
-
-Since we now only ever expect to allocate and release se_lun_acl from
-within target_core_fabric_configfs.c:target_fabric_make_mappedlun() and
-target_fabric_drop_mappedlun() context respectively, this code for
-demo-mode release is incorrect and needs to be removed.
-
-Cc: Christoph Hellwig <hch at lst.de>
-Cc: Andy Grover <agrover at redhat.com>
-Signed-off-by: Nicholas Bellinger <nab at linux-iscsi.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/target/target_core_tpg.c | 22 ----------------------
- 1 files changed, 0 insertions(+), 22 deletions(-)
-
-diff --git a/drivers/target/target_core_tpg.c b/drivers/target/target_core_tpg.c
-index 8ddd133..d91fe44 100644
---- a/drivers/target/target_core_tpg.c
-+++ b/drivers/target/target_core_tpg.c
-@@ -63,7 +63,6 @@ static void core_clear_initiator_node_from_tpg(
- int i;
- struct se_dev_entry *deve;
- struct se_lun *lun;
-- struct se_lun_acl *acl, *acl_tmp;
-
- spin_lock_irq(&nacl->device_list_lock);
- for (i = 0; i < TRANSPORT_MAX_LUNS_PER_TPG; i++) {
-@@ -84,28 +83,7 @@ static void core_clear_initiator_node_from_tpg(
- core_update_device_list_for_node(lun, NULL, deve->mapped_lun,
- TRANSPORT_LUNFLAGS_NO_ACCESS, nacl, tpg, 0);
-
-- spin_lock(&lun->lun_acl_lock);
-- list_for_each_entry_safe(acl, acl_tmp,
-- &lun->lun_acl_list, lacl_list) {
-- if (!strcmp(acl->initiatorname, nacl->initiatorname) &&
-- (acl->mapped_lun == deve->mapped_lun))
-- break;
-- }
--
-- if (!acl) {
-- pr_err("Unable to locate struct se_lun_acl for %s,"
-- " mapped_lun: %u\n", nacl->initiatorname,
-- deve->mapped_lun);
-- spin_unlock(&lun->lun_acl_lock);
-- spin_lock_irq(&nacl->device_list_lock);
-- continue;
-- }
--
-- list_del(&acl->lacl_list);
-- spin_unlock(&lun->lun_acl_lock);
--
- spin_lock_irq(&nacl->device_list_lock);
-- kfree(acl);
- }
- spin_unlock_irq(&nacl->device_list_lock);
- }
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0024-marvell-cam-fix-an-ARM-build-error.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0024-marvell-cam-fix-an-ARM-build-error.patch
deleted file mode 100644
index 09a02df..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0024-marvell-cam-fix-an-ARM-build-error.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 10b936ceae2bf61d07542014bf9140f302810892 Mon Sep 17 00:00:00 2001
-From: Jonathan Corbet <corbet at lwn.net>
-Date: Fri, 20 Apr 2012 12:22:50 -0300
-Subject: [PATCH 24/56] marvell-cam: fix an ARM build error
-
-commit 9967232f1be5bab10c7b7a8dcf51ff5c3c1a6d77 upstream.
-
-One of the OLPC changes lost a little in its translation to mainline,
-leading to build errors on the ARM architecture. Remove the offending
-line, and all will be well.
-
-Reported-by: Mathieu Poirier <mathieu.poirier at linaro.org>
-Signed-off-by: Jonathan Corbet <corbet at lwn.net>
-Signed-off-by: Mauro Carvalho Chehab <mchehab at redhat.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/media/video/marvell-ccic/mmp-driver.c | 1 -
- 1 files changed, 0 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/media/video/marvell-ccic/mmp-driver.c b/drivers/media/video/marvell-ccic/mmp-driver.c
-index fb0b124..a6b7657 100644
---- a/drivers/media/video/marvell-ccic/mmp-driver.c
-+++ b/drivers/media/video/marvell-ccic/mmp-driver.c
-@@ -175,7 +175,6 @@ static int mmpcam_probe(struct platform_device *pdev)
- INIT_LIST_HEAD(&cam->devlist);
-
- mcam = &cam->mcam;
-- mcam->platform = MHP_Armada610;
- mcam->plat_power_up = mmpcam_power_up;
- mcam->plat_power_down = mmpcam_power_down;
- mcam->dev = &pdev->dev;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0025-rc-Postpone-ISR-registration.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0025-rc-Postpone-ISR-registration.patch
deleted file mode 100644
index 501e7d8..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0025-rc-Postpone-ISR-registration.patch
+++ /dev/null
@@ -1,325 +0,0 @@
-From 51e9e3cdf5aa99d1bda7d03d213cc4dc0766c7ed Mon Sep 17 00:00:00 2001
-From: Luis Henriques <luis.henriques at canonical.com>
-Date: Sat, 21 Apr 2012 12:25:21 -0300
-Subject: [PATCH 25/56] rc: Postpone ISR registration
-
-commit 9ef449c6b31bb6a8e6dedc24de475a3b8c79be20 upstream.
-
-An early registration of an ISR was causing a crash to several users (for
-example, with the ite-cir driver: http://bugs.launchpad.net/bugs/972723).
-The reason was that IRQs were being triggered before a driver
-initialisation was completed.
-
-This patch fixes this by moving the invocation to request_irq() and to
-request_region() to a later stage on the driver probe function.
-
-Signed-off-by: Luis Henriques <luis.henriques at canonical.com>
-Acked-by: Jarod Wilson <jarod at redhat.com>
-Signed-off-by: Mauro Carvalho Chehab <mchehab at redhat.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/media/rc/ene_ir.c | 32 ++++++++--------
- drivers/media/rc/fintek-cir.c | 20 +++++-----
- drivers/media/rc/ite-cir.c | 20 +++++-----
- drivers/media/rc/nuvoton-cir.c | 36 +++++++++---------
- drivers/media/rc/winbond-cir.c | 78 ++++++++++++++++++++--------------------
- 5 files changed, 93 insertions(+), 93 deletions(-)
-
-diff --git a/drivers/media/rc/ene_ir.c b/drivers/media/rc/ene_ir.c
-index 860c112..bef5296 100644
---- a/drivers/media/rc/ene_ir.c
-+++ b/drivers/media/rc/ene_ir.c
-@@ -1018,22 +1018,6 @@ static int ene_probe(struct pnp_dev *pnp_dev, const struct pnp_device_id *id)
-
- spin_lock_init(&dev->hw_lock);
-
-- /* claim the resources */
-- error = -EBUSY;
-- dev->hw_io = pnp_port_start(pnp_dev, 0);
-- if (!request_region(dev->hw_io, ENE_IO_SIZE, ENE_DRIVER_NAME)) {
-- dev->hw_io = -1;
-- dev->irq = -1;
-- goto error;
-- }
--
-- dev->irq = pnp_irq(pnp_dev, 0);
-- if (request_irq(dev->irq, ene_isr,
-- IRQF_SHARED, ENE_DRIVER_NAME, (void *)dev)) {
-- dev->irq = -1;
-- goto error;
-- }
--
- pnp_set_drvdata(pnp_dev, dev);
- dev->pnp_dev = pnp_dev;
-
-@@ -1086,6 +1070,22 @@ static int ene_probe(struct pnp_dev *pnp_dev, const struct pnp_device_id *id)
- device_set_wakeup_capable(&pnp_dev->dev, true);
- device_set_wakeup_enable(&pnp_dev->dev, true);
-
-+ /* claim the resources */
-+ error = -EBUSY;
-+ dev->hw_io = pnp_port_start(pnp_dev, 0);
-+ if (!request_region(dev->hw_io, ENE_IO_SIZE, ENE_DRIVER_NAME)) {
-+ dev->hw_io = -1;
-+ dev->irq = -1;
-+ goto error;
-+ }
-+
-+ dev->irq = pnp_irq(pnp_dev, 0);
-+ if (request_irq(dev->irq, ene_isr,
-+ IRQF_SHARED, ENE_DRIVER_NAME, (void *)dev)) {
-+ dev->irq = -1;
-+ goto error;
-+ }
-+
- error = rc_register_device(rdev);
- if (error < 0)
- goto error;
-diff --git a/drivers/media/rc/fintek-cir.c b/drivers/media/rc/fintek-cir.c
-index 7f7079b..4218f73 100644
---- a/drivers/media/rc/fintek-cir.c
-+++ b/drivers/media/rc/fintek-cir.c
-@@ -504,16 +504,6 @@ static int fintek_probe(struct pnp_dev *pdev, const struct pnp_device_id *dev_id
-
- spin_lock_init(&fintek->fintek_lock);
-
-- ret = -EBUSY;
-- /* now claim resources */
-- if (!request_region(fintek->cir_addr,
-- fintek->cir_port_len, FINTEK_DRIVER_NAME))
-- goto failure;
--
-- if (request_irq(fintek->cir_irq, fintek_cir_isr, IRQF_SHARED,
-- FINTEK_DRIVER_NAME, (void *)fintek))
-- goto failure;
--
- pnp_set_drvdata(pdev, fintek);
- fintek->pdev = pdev;
-
-@@ -548,6 +538,16 @@ static int fintek_probe(struct pnp_dev *pdev, const struct pnp_device_id *dev_id
- /* rx resolution is hardwired to 50us atm, 1, 25, 100 also possible */
- rdev->rx_resolution = US_TO_NS(CIR_SAMPLE_PERIOD);
-
-+ ret = -EBUSY;
-+ /* now claim resources */
-+ if (!request_region(fintek->cir_addr,
-+ fintek->cir_port_len, FINTEK_DRIVER_NAME))
-+ goto failure;
-+
-+ if (request_irq(fintek->cir_irq, fintek_cir_isr, IRQF_SHARED,
-+ FINTEK_DRIVER_NAME, (void *)fintek))
-+ goto failure;
-+
- ret = rc_register_device(rdev);
- if (ret)
- goto failure;
-diff --git a/drivers/media/rc/ite-cir.c b/drivers/media/rc/ite-cir.c
-index 682009d..0e49c99 100644
---- a/drivers/media/rc/ite-cir.c
-+++ b/drivers/media/rc/ite-cir.c
-@@ -1515,16 +1515,6 @@ static int ite_probe(struct pnp_dev *pdev, const struct pnp_device_id
- /* initialize raw event */
- init_ir_raw_event(&itdev->rawir);
-
-- ret = -EBUSY;
-- /* now claim resources */
-- if (!request_region(itdev->cir_addr,
-- dev_desc->io_region_size, ITE_DRIVER_NAME))
-- goto failure;
--
-- if (request_irq(itdev->cir_irq, ite_cir_isr, IRQF_SHARED,
-- ITE_DRIVER_NAME, (void *)itdev))
-- goto failure;
--
- /* set driver data into the pnp device */
- pnp_set_drvdata(pdev, itdev);
- itdev->pdev = pdev;
-@@ -1600,6 +1590,16 @@ static int ite_probe(struct pnp_dev *pdev, const struct pnp_device_id
- rdev->driver_name = ITE_DRIVER_NAME;
- rdev->map_name = RC_MAP_RC6_MCE;
-
-+ ret = -EBUSY;
-+ /* now claim resources */
-+ if (!request_region(itdev->cir_addr,
-+ dev_desc->io_region_size, ITE_DRIVER_NAME))
-+ goto failure;
-+
-+ if (request_irq(itdev->cir_irq, ite_cir_isr, IRQF_SHARED,
-+ ITE_DRIVER_NAME, (void *)itdev))
-+ goto failure;
-+
- ret = rc_register_device(rdev);
- if (ret)
- goto failure;
-diff --git a/drivers/media/rc/nuvoton-cir.c b/drivers/media/rc/nuvoton-cir.c
-index 144f3f5..8b2c071 100644
---- a/drivers/media/rc/nuvoton-cir.c
-+++ b/drivers/media/rc/nuvoton-cir.c
-@@ -1021,24 +1021,6 @@ static int nvt_probe(struct pnp_dev *pdev, const struct pnp_device_id *dev_id)
- spin_lock_init(&nvt->nvt_lock);
- spin_lock_init(&nvt->tx.lock);
-
-- ret = -EBUSY;
-- /* now claim resources */
-- if (!request_region(nvt->cir_addr,
-- CIR_IOREG_LENGTH, NVT_DRIVER_NAME))
-- goto failure;
--
-- if (request_irq(nvt->cir_irq, nvt_cir_isr, IRQF_SHARED,
-- NVT_DRIVER_NAME, (void *)nvt))
-- goto failure;
--
-- if (!request_region(nvt->cir_wake_addr,
-- CIR_IOREG_LENGTH, NVT_DRIVER_NAME))
-- goto failure;
--
-- if (request_irq(nvt->cir_wake_irq, nvt_cir_wake_isr, IRQF_SHARED,
-- NVT_DRIVER_NAME, (void *)nvt))
-- goto failure;
--
- pnp_set_drvdata(pdev, nvt);
- nvt->pdev = pdev;
-
-@@ -1085,6 +1067,24 @@ static int nvt_probe(struct pnp_dev *pdev, const struct pnp_device_id *dev_id)
- rdev->tx_resolution = XYZ;
- #endif
-
-+ ret = -EBUSY;
-+ /* now claim resources */
-+ if (!request_region(nvt->cir_addr,
-+ CIR_IOREG_LENGTH, NVT_DRIVER_NAME))
-+ goto failure;
-+
-+ if (request_irq(nvt->cir_irq, nvt_cir_isr, IRQF_SHARED,
-+ NVT_DRIVER_NAME, (void *)nvt))
-+ goto failure;
-+
-+ if (!request_region(nvt->cir_wake_addr,
-+ CIR_IOREG_LENGTH, NVT_DRIVER_NAME))
-+ goto failure;
-+
-+ if (request_irq(nvt->cir_wake_irq, nvt_cir_wake_isr, IRQF_SHARED,
-+ NVT_DRIVER_NAME, (void *)nvt))
-+ goto failure;
-+
- ret = rc_register_device(rdev);
- if (ret)
- goto failure;
-diff --git a/drivers/media/rc/winbond-cir.c b/drivers/media/rc/winbond-cir.c
-index a7e7d6f..4591770 100644
---- a/drivers/media/rc/winbond-cir.c
-+++ b/drivers/media/rc/winbond-cir.c
-@@ -991,39 +991,10 @@ wbcir_probe(struct pnp_dev *device, const struct pnp_device_id *dev_id)
- "(w: 0x%lX, e: 0x%lX, s: 0x%lX, i: %u)\n",
- data->wbase, data->ebase, data->sbase, data->irq);
-
-- if (!request_region(data->wbase, WAKEUP_IOMEM_LEN, DRVNAME)) {
-- dev_err(dev, "Region 0x%lx-0x%lx already in use!\n",
-- data->wbase, data->wbase + WAKEUP_IOMEM_LEN - 1);
-- err = -EBUSY;
-- goto exit_free_data;
-- }
--
-- if (!request_region(data->ebase, EHFUNC_IOMEM_LEN, DRVNAME)) {
-- dev_err(dev, "Region 0x%lx-0x%lx already in use!\n",
-- data->ebase, data->ebase + EHFUNC_IOMEM_LEN - 1);
-- err = -EBUSY;
-- goto exit_release_wbase;
-- }
--
-- if (!request_region(data->sbase, SP_IOMEM_LEN, DRVNAME)) {
-- dev_err(dev, "Region 0x%lx-0x%lx already in use!\n",
-- data->sbase, data->sbase + SP_IOMEM_LEN - 1);
-- err = -EBUSY;
-- goto exit_release_ebase;
-- }
--
-- err = request_irq(data->irq, wbcir_irq_handler,
-- IRQF_DISABLED, DRVNAME, device);
-- if (err) {
-- dev_err(dev, "Failed to claim IRQ %u\n", data->irq);
-- err = -EBUSY;
-- goto exit_release_sbase;
-- }
--
- led_trigger_register_simple("cir-tx", &data->txtrigger);
- if (!data->txtrigger) {
- err = -ENOMEM;
-- goto exit_free_irq;
-+ goto exit_free_data;
- }
-
- led_trigger_register_simple("cir-rx", &data->rxtrigger);
-@@ -1062,9 +1033,38 @@ wbcir_probe(struct pnp_dev *device, const struct pnp_device_id *dev_id)
- data->dev->priv = data;
- data->dev->dev.parent = &device->dev;
-
-+ if (!request_region(data->wbase, WAKEUP_IOMEM_LEN, DRVNAME)) {
-+ dev_err(dev, "Region 0x%lx-0x%lx already in use!\n",
-+ data->wbase, data->wbase + WAKEUP_IOMEM_LEN - 1);
-+ err = -EBUSY;
-+ goto exit_free_rc;
-+ }
-+
-+ if (!request_region(data->ebase, EHFUNC_IOMEM_LEN, DRVNAME)) {
-+ dev_err(dev, "Region 0x%lx-0x%lx already in use!\n",
-+ data->ebase, data->ebase + EHFUNC_IOMEM_LEN - 1);
-+ err = -EBUSY;
-+ goto exit_release_wbase;
-+ }
-+
-+ if (!request_region(data->sbase, SP_IOMEM_LEN, DRVNAME)) {
-+ dev_err(dev, "Region 0x%lx-0x%lx already in use!\n",
-+ data->sbase, data->sbase + SP_IOMEM_LEN - 1);
-+ err = -EBUSY;
-+ goto exit_release_ebase;
-+ }
-+
-+ err = request_irq(data->irq, wbcir_irq_handler,
-+ IRQF_DISABLED, DRVNAME, device);
-+ if (err) {
-+ dev_err(dev, "Failed to claim IRQ %u\n", data->irq);
-+ err = -EBUSY;
-+ goto exit_release_sbase;
-+ }
-+
- err = rc_register_device(data->dev);
- if (err)
-- goto exit_free_rc;
-+ goto exit_free_irq;
-
- device_init_wakeup(&device->dev, 1);
-
-@@ -1072,14 +1072,6 @@ wbcir_probe(struct pnp_dev *device, const struct pnp_device_id *dev_id)
-
- return 0;
-
--exit_free_rc:
-- rc_free_device(data->dev);
--exit_unregister_led:
-- led_classdev_unregister(&data->led);
--exit_unregister_rxtrigger:
-- led_trigger_unregister_simple(data->rxtrigger);
--exit_unregister_txtrigger:
-- led_trigger_unregister_simple(data->txtrigger);
- exit_free_irq:
- free_irq(data->irq, device);
- exit_release_sbase:
-@@ -1088,6 +1080,14 @@ exit_release_ebase:
- release_region(data->ebase, EHFUNC_IOMEM_LEN);
- exit_release_wbase:
- release_region(data->wbase, WAKEUP_IOMEM_LEN);
-+exit_free_rc:
-+ rc_free_device(data->dev);
-+exit_unregister_led:
-+ led_classdev_unregister(&data->led);
-+exit_unregister_rxtrigger:
-+ led_trigger_unregister_simple(data->rxtrigger);
-+exit_unregister_txtrigger:
-+ led_trigger_unregister_simple(data->txtrigger);
- exit_free_data:
- kfree(data);
- pnp_set_drvdata(device, NULL);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0026-cdc_ether-Ignore-bogus-union-descriptor-for-RNDIS-de.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0026-cdc_ether-Ignore-bogus-union-descriptor-for-RNDIS-de.patch
deleted file mode 100644
index 718254a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0026-cdc_ether-Ignore-bogus-union-descriptor-for-RNDIS-de.patch
+++ /dev/null
@@ -1,75 +0,0 @@
-From 701699958f6f1770bf758ebac587fd85e73e8c76 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Bj=C3=B8rn=20Mork?= <bjorn at mork.no>
-Date: Thu, 26 Apr 2012 02:35:10 +0000
-Subject: [PATCH 26/56] cdc_ether: Ignore bogus union descriptor for RNDIS
- devices
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit 6eddcb4c82883451aec3be1240f17793370fa62f upstream.
-
-Some RNDIS devices include a bogus CDC Union descriptor pointing
-to non-existing interfaces. The RNDIS code is already prepared
-to handle devices without a CDC Union descriptor by hardwiring
-the driver to use interfaces 0 and 1, which is correct for the
-devices with the bogus descriptor as well. So we can reuse the
-existing workaround.
-
-Cc: Markus Kolb <linux-201011 at tower-net.de>
-Cc: Iker Salmón San Millán <shaola at esdebian.org>
-Cc: Jonathan Nieder <jrnieder at gmail.com>
-Cc: Oliver Neukum <oliver at neukum.org>
-Cc: 655387 at bugs.debian.org
-Signed-off-by: Bjørn Mork <bjorn at mork.no>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/usb/cdc_ether.c | 14 ++++++++++++--
- 1 files changed, 12 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/net/usb/cdc_ether.c b/drivers/net/usb/cdc_ether.c
-index 4fd4144..eac4886 100644
---- a/drivers/net/usb/cdc_ether.c
-+++ b/drivers/net/usb/cdc_ether.c
-@@ -83,6 +83,7 @@ int usbnet_generic_cdc_bind(struct usbnet *dev, struct usb_interface *intf)
- struct cdc_state *info = (void *) &dev->data;
- int status;
- int rndis;
-+ bool android_rndis_quirk = false;
- struct usb_driver *driver = driver_of(intf);
- struct usb_cdc_mdlm_desc *desc = NULL;
- struct usb_cdc_mdlm_detail_desc *detail = NULL;
-@@ -195,6 +196,11 @@ int usbnet_generic_cdc_bind(struct usbnet *dev, struct usb_interface *intf)
- info->control,
- info->u->bSlaveInterface0,
- info->data);
-+ /* fall back to hard-wiring for RNDIS */
-+ if (rndis) {
-+ android_rndis_quirk = true;
-+ goto next_desc;
-+ }
- goto bad_desc;
- }
- if (info->control != intf) {
-@@ -271,11 +277,15 @@ next_desc:
- /* Microsoft ActiveSync based and some regular RNDIS devices lack the
- * CDC descriptors, so we'll hard-wire the interfaces and not check
- * for descriptors.
-+ *
-+ * Some Android RNDIS devices have a CDC Union descriptor pointing
-+ * to non-existing interfaces. Ignore that and attempt the same
-+ * hard-wired 0 and 1 interfaces.
- */
-- if (rndis && !info->u) {
-+ if (rndis && (!info->u || android_rndis_quirk)) {
- info->control = usb_ifnum_to_if(dev->udev, 0);
- info->data = usb_ifnum_to_if(dev->udev, 1);
-- if (!info->control || !info->data) {
-+ if (!info->control || !info->data || info->control != intf) {
- dev_dbg(&intf->dev,
- "rndis: master #0/%p slave #1/%p\n",
- info->control,
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0027-jffs2-Fix-lock-acquisition-order-bug-in-gc-path.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0027-jffs2-Fix-lock-acquisition-order-bug-in-gc-path.patch
deleted file mode 100644
index 4f32155..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0027-jffs2-Fix-lock-acquisition-order-bug-in-gc-path.patch
+++ /dev/null
@@ -1,103 +0,0 @@
-From f1c7fc81d6b170d79df0dc657040e42ece3b1953 Mon Sep 17 00:00:00 2001
-From: Josh Cartwright <joshc at linux.com>
-Date: Thu, 29 Mar 2012 19:34:53 -0400
-Subject: [PATCH 27/56] jffs2: Fix lock acquisition order bug in gc path
-
-commit 226bb7df3d22bcf4a1c0fe8206c80cc427498eae upstream.
-
-The locking policy is such that the erase_complete_block spinlock is
-nested within the alloc_sem mutex. This fixes a case in which the
-acquisition order was erroneously reversed. This issue was caught by
-the following lockdep splat:
-
- =======================================================
- [ INFO: possible circular locking dependency detected ]
- 3.0.5 #1
- -------------------------------------------------------
- jffs2_gcd_mtd6/299 is trying to acquire lock:
- (&c->alloc_sem){+.+.+.}, at: [<c01f7714>] jffs2_garbage_collect_pass+0x314/0x890
-
- but task is already holding lock:
- (&(&c->erase_completion_lock)->rlock){+.+...}, at: [<c01f7708>] jffs2_garbage_collect_pass+0x308/0x890
-
- which lock already depends on the new lock.
-
- the existing dependency chain (in reverse order) is:
-
- -> #1 (&(&c->erase_completion_lock)->rlock){+.+...}:
- [<c008bec4>] validate_chain+0xe6c/0x10bc
- [<c008c660>] __lock_acquire+0x54c/0xba4
- [<c008d240>] lock_acquire+0xa4/0x114
- [<c046780c>] _raw_spin_lock+0x3c/0x4c
- [<c01f744c>] jffs2_garbage_collect_pass+0x4c/0x890
- [<c01f937c>] jffs2_garbage_collect_thread+0x1b4/0x1cc
- [<c0071a68>] kthread+0x98/0xa0
- [<c000f264>] kernel_thread_exit+0x0/0x8
-
- -> #0 (&c->alloc_sem){+.+.+.}:
- [<c008ad2c>] print_circular_bug+0x70/0x2c4
- [<c008c08c>] validate_chain+0x1034/0x10bc
- [<c008c660>] __lock_acquire+0x54c/0xba4
- [<c008d240>] lock_acquire+0xa4/0x114
- [<c0466628>] mutex_lock_nested+0x74/0x33c
- [<c01f7714>] jffs2_garbage_collect_pass+0x314/0x890
- [<c01f937c>] jffs2_garbage_collect_thread+0x1b4/0x1cc
- [<c0071a68>] kthread+0x98/0xa0
- [<c000f264>] kernel_thread_exit+0x0/0x8
-
- other info that might help us debug this:
-
- Possible unsafe locking scenario:
-
- CPU0 CPU1
- ---- ----
- lock(&(&c->erase_completion_lock)->rlock);
- lock(&c->alloc_sem);
- lock(&(&c->erase_completion_lock)->rlock);
- lock(&c->alloc_sem);
-
- *** DEADLOCK ***
-
- 1 lock held by jffs2_gcd_mtd6/299:
- #0: (&(&c->erase_completion_lock)->rlock){+.+...}, at: [<c01f7708>] jffs2_garbage_collect_pass+0x308/0x890
-
- stack backtrace:
- [<c00155dc>] (unwind_backtrace+0x0/0x100) from [<c0463dc0>] (dump_stack+0x20/0x24)
- [<c0463dc0>] (dump_stack+0x20/0x24) from [<c008ae84>] (print_circular_bug+0x1c8/0x2c4)
- [<c008ae84>] (print_circular_bug+0x1c8/0x2c4) from [<c008c08c>] (validate_chain+0x1034/0x10bc)
- [<c008c08c>] (validate_chain+0x1034/0x10bc) from [<c008c660>] (__lock_acquire+0x54c/0xba4)
- [<c008c660>] (__lock_acquire+0x54c/0xba4) from [<c008d240>] (lock_acquire+0xa4/0x114)
- [<c008d240>] (lock_acquire+0xa4/0x114) from [<c0466628>] (mutex_lock_nested+0x74/0x33c)
- [<c0466628>] (mutex_lock_nested+0x74/0x33c) from [<c01f7714>] (jffs2_garbage_collect_pass+0x314/0x890)
- [<c01f7714>] (jffs2_garbage_collect_pass+0x314/0x890) from [<c01f937c>] (jffs2_garbage_collect_thread+0x1b4/0x1cc)
- [<c01f937c>] (jffs2_garbage_collect_thread+0x1b4/0x1cc) from [<c0071a68>] (kthread+0x98/0xa0)
- [<c0071a68>] (kthread+0x98/0xa0) from [<c000f264>] (kernel_thread_exit+0x0/0x8)
-
-This was introduce in '81cfc9f jffs2: Fix serious write stall due to erase'.
-
-Signed-off-by: Josh Cartwright <joshc at linux.com>
-Signed-off-by: Artem Bityutskiy <artem.bityutskiy at linux.intel.com>
-Signed-off-by: David Woodhouse <David.Woodhouse at intel.com>
-[bwh: Backported to 3.2: adjust context]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/jffs2/gc.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/fs/jffs2/gc.c b/fs/jffs2/gc.c
-index 31dce61..4bbd521 100644
---- a/fs/jffs2/gc.c
-+++ b/fs/jffs2/gc.c
-@@ -225,8 +225,8 @@ int jffs2_garbage_collect_pass(struct jffs2_sb_info *c)
- return 0;
-
- D1(printk(KERN_DEBUG "No progress from erasing blocks; doing GC anyway\n"));
-- spin_lock(&c->erase_completion_lock);
- mutex_lock(&c->alloc_sem);
-+ spin_lock(&c->erase_completion_lock);
- }
-
- /* First, work out which block we're garbage-collecting */
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0028-s5p-fimc-Fix-locking-in-subdev-set_crop-op.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0028-s5p-fimc-Fix-locking-in-subdev-set_crop-op.patch
deleted file mode 100644
index df322fd..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0028-s5p-fimc-Fix-locking-in-subdev-set_crop-op.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From fdde7964742c3802205c7fa50677abfe7b462bfd Mon Sep 17 00:00:00 2001
-From: Sylwester Nawrocki <s.nawrocki at samsung.com>
-Date: Sat, 21 Apr 2012 18:46:30 -0300
-Subject: [PATCH 28/56] s5p-fimc: Fix locking in subdev set_crop op
-
-commit e985dbf7d93e2a3e114b4525413e50f83613e0cb upstream.
-
-When setting TRY crop on the sub-device the mutex was erroneously acquired
-rather than released on exit path. This bug is present in kernels starting
-from v3.2.
-
-Signed-off-by: Sylwester Nawrocki <s.nawrocki at samsung.com>
-Signed-off-by: Kyungmin Park <kyungmin.park at samsung.com>
-Signed-off-by: Mauro Carvalho Chehab <mchehab at redhat.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/media/video/s5p-fimc/fimc-capture.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/media/video/s5p-fimc/fimc-capture.c b/drivers/media/video/s5p-fimc/fimc-capture.c
-index 2cc3b91..327a81f 100644
---- a/drivers/media/video/s5p-fimc/fimc-capture.c
-+++ b/drivers/media/video/s5p-fimc/fimc-capture.c
-@@ -1304,7 +1304,7 @@ static int fimc_subdev_set_crop(struct v4l2_subdev *sd,
- fimc_capture_try_crop(ctx, r, crop->pad);
-
- if (crop->which == V4L2_SUBDEV_FORMAT_TRY) {
-- mutex_lock(&fimc->lock);
-+ mutex_unlock(&fimc->lock);
- *v4l2_subdev_get_try_crop(fh, crop->pad) = *r;
- return 0;
- }
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0029-dm-mpath-check-if-scsi_dh-module-already-loaded-befo.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0029-dm-mpath-check-if-scsi_dh-module-already-loaded-befo.patch
deleted file mode 100644
index cbbc4f1..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0029-dm-mpath-check-if-scsi_dh-module-already-loaded-befo.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 6cbf63344c48a119864df9c5873d0407a32d9872 Mon Sep 17 00:00:00 2001
-From: Mike Snitzer <snitzer at redhat.com>
-Date: Sat, 12 May 2012 01:43:21 +0100
-Subject: [PATCH 29/56] dm mpath: check if scsi_dh module already loaded
- before trying to load
-
-commit 510193a2d3d2e03ae53b95c0ae4f33cdff02cbf8 upstream.
-
-If the requested scsi_dh module is already loaded then skip
-request_module().
-
-Multipath table loads can hang in an unnecessary __request_module.
-
-Reported-by: Ben Marzinski <bmarzins at redhat.com>
-Signed-off-by: Mike Snitzer <snitzer at redhat.com>
-Signed-off-by: Alasdair G Kergon <agk at redhat.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/md/dm-mpath.c | 4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/md/dm-mpath.c b/drivers/md/dm-mpath.c
-index 801d92d..a417f94 100644
---- a/drivers/md/dm-mpath.c
-+++ b/drivers/md/dm-mpath.c
-@@ -698,8 +698,8 @@ static int parse_hw_handler(struct dm_arg_set *as, struct multipath *m)
- return 0;
-
- m->hw_handler_name = kstrdup(dm_shift_arg(as), GFP_KERNEL);
-- request_module("scsi_dh_%s", m->hw_handler_name);
-- if (scsi_dh_handler_exist(m->hw_handler_name) == 0) {
-+ if (!try_then_request_module(scsi_dh_handler_exist(m->hw_handler_name),
-+ "scsi_dh_%s", m->hw_handler_name)) {
- ti->error = "unknown hardware handler type";
- ret = -EINVAL;
- goto fail;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0030-sparc64-Do-not-clobber-g2-in-xcall_fetch_glob_regs.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0030-sparc64-Do-not-clobber-g2-in-xcall_fetch_glob_regs.patch
deleted file mode 100644
index a684875..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0030-sparc64-Do-not-clobber-g2-in-xcall_fetch_glob_regs.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From 03ddf7fce874ca8243c81666ca3cc742f195781b Mon Sep 17 00:00:00 2001
-From: "David S. Miller" <davem at davemloft.net>
-Date: Thu, 10 May 2012 11:00:46 -0700
-Subject: [PATCH 30/56] sparc64: Do not clobber %g2 in
- xcall_fetch_glob_regs().
-
-[ Upstream commit a5a737e090e25981e99d69f01400e3a80356581c ]
-
-%g2 is meant to hold the CPUID number throughout this routine, since
-at the very beginning, and at the very end, we use %g2 to calculate
-indexes into per-cpu arrays.
-
-However we erroneously clobber it in order to hold the %cwp register
-value mid-stream.
-
-Fix this code to use %g3 for the %cwp read and related calulcations
-instead.
-
-Reported-by: Meelis Roos <mroos at linux.ee>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/sparc/kernel/central.c | 2 +-
- arch/sparc/mm/ultra.S | 6 +++---
- 2 files changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/arch/sparc/kernel/central.c b/arch/sparc/kernel/central.c
-index 38d48a5..9708851 100644
---- a/arch/sparc/kernel/central.c
-+++ b/arch/sparc/kernel/central.c
-@@ -269,4 +269,4 @@ static int __init sunfire_init(void)
- return 0;
- }
-
--subsys_initcall(sunfire_init);
-+fs_initcall(sunfire_init);
-diff --git a/arch/sparc/mm/ultra.S b/arch/sparc/mm/ultra.S
-index b57a594..874162a 100644
---- a/arch/sparc/mm/ultra.S
-+++ b/arch/sparc/mm/ultra.S
-@@ -495,11 +495,11 @@ xcall_fetch_glob_regs:
- stx %o7, [%g1 + GR_SNAP_O7]
- stx %i7, [%g1 + GR_SNAP_I7]
- /* Don't try this at home kids... */
-- rdpr %cwp, %g2
-- sub %g2, 1, %g7
-+ rdpr %cwp, %g3
-+ sub %g3, 1, %g7
- wrpr %g7, %cwp
- mov %i7, %g7
-- wrpr %g2, %cwp
-+ wrpr %g3, %cwp
- stx %g7, [%g1 + GR_SNAP_RPC]
- sethi %hi(trap_block), %g7
- or %g7, %lo(trap_block), %g7
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0031-gpio-Add-missing-spin_lock_init-in-gpio-ml-ioh-drive.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0031-gpio-Add-missing-spin_lock_init-in-gpio-ml-ioh-drive.patch
deleted file mode 100644
index bc85a02..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0031-gpio-Add-missing-spin_lock_init-in-gpio-ml-ioh-drive.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 37f2f887df9f3c8428bd1776a5c0ca1d302b3ea1 Mon Sep 17 00:00:00 2001
-From: Axel Lin <axel.lin at gmail.com>
-Date: Wed, 1 Feb 2012 10:50:05 +0800
-Subject: [PATCH 31/56] gpio: Add missing spin_lock_init in gpio-ml-ioh driver
-
-commit 7e3a70fb7bccada029c188c89bfbf3c0a63c1500 upstream.
-
-This bug was introduced by commit 54be5663
-"gpio-ml-ioh: Support interrupt function" which adds a spinlock to struct
-ioh_gpio but never init the spinlock.
-
-Signed-off-by: Axel Lin <axel.lin at gmail.com>
-Signed-off-by: Grant Likely <grant.likely at secretlab.ca>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpio/gpio-ml-ioh.c | 1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/gpio/gpio-ml-ioh.c b/drivers/gpio/gpio-ml-ioh.c
-index 461958f..271fd49 100644
---- a/drivers/gpio/gpio-ml-ioh.c
-+++ b/drivers/gpio/gpio-ml-ioh.c
-@@ -448,6 +448,7 @@ static int __devinit ioh_gpio_probe(struct pci_dev *pdev,
- chip->reg = chip->base;
- chip->ch = i;
- mutex_init(&chip->lock);
-+ spin_lock_init(&chip->spinlock);
- ioh_gpio_setup(chip, num_ports[i]);
- ret = gpiochip_add(&chip->gpio);
- if (ret) {
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0032-spi-topcliff-pch-Modify-pci-bus-number-dynamically-t.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0032-spi-topcliff-pch-Modify-pci-bus-number-dynamically-t.patch
deleted file mode 100644
index e46fe62..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0032-spi-topcliff-pch-Modify-pci-bus-number-dynamically-t.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From e985aa700788ca6b938d4505cbe1dbdd88a3dbfd Mon Sep 17 00:00:00 2001
-From: Tomoya MORINAGA <tomoya.rohm at gmail.com>
-Date: Fri, 9 Dec 2011 13:11:42 +0900
-Subject: [PATCH 32/56] spi-topcliff-pch: Modify pci-bus number dynamically to
- get DMA device info
-
-commit ee2ece5261a639b89f194d141444b03b4c923179 upstream.
-
-Signed-off-by: Tomoya MORINAGA <tomoya.rohm at gmail.com>
-Signed-off-by: Grant Likely <grant.likely at secretlab.ca>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/spi/spi-topcliff-pch.c | 3 ++-
- 1 files changed, 2 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/spi/spi-topcliff-pch.c b/drivers/spi/spi-topcliff-pch.c
-index 54b9d2e..3238ec8 100644
---- a/drivers/spi/spi-topcliff-pch.c
-+++ b/drivers/spi/spi-topcliff-pch.c
-@@ -924,7 +924,8 @@ static void pch_spi_request_dma(struct pch_spi_data *data, int bpw)
- dma_cap_set(DMA_SLAVE, mask);
-
- /* Get DMA's dev information */
-- dma_dev = pci_get_bus_and_slot(2, PCI_DEVFN(12, 0));
-+ dma_dev = pci_get_bus_and_slot(data->board_dat->pdev->bus->number,
-+ PCI_DEVFN(12, 0));
-
- /* Set Tx DMA */
- param = &dma->param_tx;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0033-spi-topcliff-pch-Fix-issue-for-transmitting-over-4KB.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0033-spi-topcliff-pch-Fix-issue-for-transmitting-over-4KB.patch
deleted file mode 100644
index f11f8c1..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0033-spi-topcliff-pch-Fix-issue-for-transmitting-over-4KB.patch
+++ /dev/null
@@ -1,187 +0,0 @@
-From fcd3dfee85be4b4bdde47eecba12490ede6218d2 Mon Sep 17 00:00:00 2001
-From: Tomoya MORINAGA <tomoya.rohm at gmail.com>
-Date: Fri, 9 Dec 2011 13:13:27 +0900
-Subject: [PATCH 33/56] spi-topcliff-pch: Fix issue for transmitting over
- 4KByte
-
-commit 7d05b3e868ee0f9231baf40cb77be3df5dd1f18c upstream.
-
-Currently, when spi-topcliff-pch receives transmit request over 4KByte,
-this driver can't process correctly. This driver needs to divide the data
-into 4Kbyte unit.
-This patch fixes the issue.
-
-Signed-off-by: Tomoya MORINAGA <tomoya.rohm at gmail.com>
-Signed-off-by: Grant Likely <grant.likely at secretlab.ca>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/spi/spi-topcliff-pch.c | 66 +++++++++++++++++++++++++++++++++-------
- 1 files changed, 55 insertions(+), 11 deletions(-)
-
-diff --git a/drivers/spi/spi-topcliff-pch.c b/drivers/spi/spi-topcliff-pch.c
-index 3238ec8..1e60827 100644
---- a/drivers/spi/spi-topcliff-pch.c
-+++ b/drivers/spi/spi-topcliff-pch.c
-@@ -196,6 +196,7 @@ struct pch_spi_data {
- struct pch_spi_dma_ctrl dma;
- int use_dma;
- u8 irq_reg_sts;
-+ int save_total_len;
- };
-
- /**
-@@ -823,11 +824,13 @@ static void pch_spi_copy_rx_data_for_dma(struct pch_spi_data *data, int bpw)
- rx_dma_buf = data->dma.rx_buf_virt;
- for (j = 0; j < data->bpw_len; j++)
- *rx_buf++ = *rx_dma_buf++ & 0xFF;
-+ data->cur_trans->rx_buf = rx_buf;
- } else {
- rx_sbuf = data->cur_trans->rx_buf;
- rx_dma_sbuf = data->dma.rx_buf_virt;
- for (j = 0; j < data->bpw_len; j++)
- *rx_sbuf++ = *rx_dma_sbuf++;
-+ data->cur_trans->rx_buf = rx_sbuf;
- }
- }
-
-@@ -853,6 +856,9 @@ static int pch_spi_start_transfer(struct pch_spi_data *data)
- rtn = wait_event_interruptible_timeout(data->wait,
- data->transfer_complete,
- msecs_to_jiffies(2 * HZ));
-+ if (!rtn)
-+ dev_err(&data->master->dev,
-+ "%s wait-event timeout\n", __func__);
-
- dma_sync_sg_for_cpu(&data->master->dev, dma->sg_rx_p, dma->nent,
- DMA_FROM_DEVICE);
-@@ -989,6 +995,7 @@ static void pch_spi_handle_dma(struct pch_spi_data *data, int *bpw)
- int i;
- int size;
- int rem;
-+ int head;
- unsigned long flags;
- struct pch_spi_dma_ctrl *dma;
-
-@@ -1017,6 +1024,11 @@ static void pch_spi_handle_dma(struct pch_spi_data *data, int *bpw)
- }
- data->bpw_len = data->cur_trans->len / (*bpw / 8);
-
-+ if (data->bpw_len > PCH_BUF_SIZE) {
-+ data->bpw_len = PCH_BUF_SIZE;
-+ data->cur_trans->len -= PCH_BUF_SIZE;
-+ }
-+
- /* copy Tx Data */
- if (data->cur_trans->tx_buf != NULL) {
- if (*bpw == 8) {
-@@ -1031,10 +1043,17 @@ static void pch_spi_handle_dma(struct pch_spi_data *data, int *bpw)
- *tx_dma_sbuf++ = *tx_sbuf++;
- }
- }
-+
-+ /* Calculate Rx parameter for DMA transmitting */
- if (data->bpw_len > PCH_DMA_TRANS_SIZE) {
-- num = data->bpw_len / PCH_DMA_TRANS_SIZE + 1;
-+ if (data->bpw_len % PCH_DMA_TRANS_SIZE) {
-+ num = data->bpw_len / PCH_DMA_TRANS_SIZE + 1;
-+ rem = data->bpw_len % PCH_DMA_TRANS_SIZE;
-+ } else {
-+ num = data->bpw_len / PCH_DMA_TRANS_SIZE;
-+ rem = PCH_DMA_TRANS_SIZE;
-+ }
- size = PCH_DMA_TRANS_SIZE;
-- rem = data->bpw_len % PCH_DMA_TRANS_SIZE;
- } else {
- num = 1;
- size = data->bpw_len;
-@@ -1094,15 +1113,23 @@ static void pch_spi_handle_dma(struct pch_spi_data *data, int *bpw)
- dma->nent = num;
- dma->desc_rx = desc_rx;
-
-- /* TX */
-- if (data->bpw_len > PCH_DMA_TRANS_SIZE) {
-- num = data->bpw_len / PCH_DMA_TRANS_SIZE;
-+ /* Calculate Tx parameter for DMA transmitting */
-+ if (data->bpw_len > PCH_MAX_FIFO_DEPTH) {
-+ head = PCH_MAX_FIFO_DEPTH - PCH_DMA_TRANS_SIZE;
-+ if (data->bpw_len % PCH_DMA_TRANS_SIZE > 4) {
-+ num = data->bpw_len / PCH_DMA_TRANS_SIZE + 1;
-+ rem = data->bpw_len % PCH_DMA_TRANS_SIZE - head;
-+ } else {
-+ num = data->bpw_len / PCH_DMA_TRANS_SIZE;
-+ rem = data->bpw_len % PCH_DMA_TRANS_SIZE +
-+ PCH_DMA_TRANS_SIZE - head;
-+ }
- size = PCH_DMA_TRANS_SIZE;
-- rem = 16;
- } else {
- num = 1;
- size = data->bpw_len;
- rem = data->bpw_len;
-+ head = 0;
- }
-
- dma->sg_tx_p = kzalloc(sizeof(struct scatterlist)*num, GFP_ATOMIC);
-@@ -1112,11 +1139,17 @@ static void pch_spi_handle_dma(struct pch_spi_data *data, int *bpw)
- for (i = 0; i < num; i++, sg++) {
- if (i == 0) {
- sg->offset = 0;
-+ sg_set_page(sg, virt_to_page(dma->tx_buf_virt), size + head,
-+ sg->offset);
-+ sg_dma_len(sg) = size + head;
-+ } else if (i == (num - 1)) {
-+ sg->offset = head + size * i;
-+ sg->offset = sg->offset * (*bpw / 8);
- sg_set_page(sg, virt_to_page(dma->tx_buf_virt), rem,
- sg->offset);
- sg_dma_len(sg) = rem;
- } else {
-- sg->offset = rem + size * (i - 1);
-+ sg->offset = head + size * i;
- sg->offset = sg->offset * (*bpw / 8);
- sg_set_page(sg, virt_to_page(dma->tx_buf_virt), size,
- sg->offset);
-@@ -1204,6 +1237,7 @@ static void pch_spi_process_messages(struct work_struct *pwork)
- data->current_msg->spi->bits_per_word);
- pch_spi_writereg(data->master, PCH_SSNXCR, SSN_NO_CONTROL);
- do {
-+ int cnt;
- /* If we are already processing a message get the next
- transfer structure from the message otherwise retrieve
- the 1st transfer request from the message. */
-@@ -1223,11 +1257,20 @@ static void pch_spi_process_messages(struct work_struct *pwork)
- }
- spin_unlock(&data->lock);
-
-+ if (!data->cur_trans->len)
-+ goto out;
-+ cnt = (data->cur_trans->len - 1) / PCH_BUF_SIZE + 1;
-+ data->save_total_len = data->cur_trans->len;
- if (data->use_dma) {
-- pch_spi_handle_dma(data, &bpw);
-- if (!pch_spi_start_transfer(data))
-- goto out;
-- pch_spi_copy_rx_data_for_dma(data, bpw);
-+ int i;
-+ char *save_rx_buf = data->cur_trans->rx_buf;
-+ for (i = 0; i < cnt; i ++) {
-+ pch_spi_handle_dma(data, &bpw);
-+ if (!pch_spi_start_transfer(data))
-+ goto out;
-+ pch_spi_copy_rx_data_for_dma(data, bpw);
-+ }
-+ data->cur_trans->rx_buf = save_rx_buf;
- } else {
- pch_spi_set_tx(data, &bpw);
- pch_spi_set_ir(data);
-@@ -1238,6 +1281,7 @@ static void pch_spi_process_messages(struct work_struct *pwork)
- data->pkt_tx_buff = NULL;
- }
- /* increment message count */
-+ data->cur_trans->len = data->save_total_len;
- data->current_msg->actual_length += data->cur_trans->len;
-
- dev_dbg(&data->master->dev,
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0034-spi-topcliff-pch-supports-a-spi-mode-setup-and-bit-o.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0034-spi-topcliff-pch-supports-a-spi-mode-setup-and-bit-o.patch
deleted file mode 100644
index c9d0ab7..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0034-spi-topcliff-pch-supports-a-spi-mode-setup-and-bit-o.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 3e43ac1c2f64e955c74f598621363028d87a93c2 Mon Sep 17 00:00:00 2001
-From: Tomoya MORINAGA <tomoya.rohm at gmail.com>
-Date: Fri, 9 Dec 2011 13:13:28 +0900
-Subject: [PATCH 34/56] spi-topcliff-pch: supports a spi mode setup and bit
- order setup by IO control
-
-commit f258b44e22e07f5e98ac2260c70acff5784791b6 upstream.
-
-This patch supports a spi mode setup and bit order setup by IO control.
- spi mode: mode 0 to mode 3
- bit order: LSB first, MSB first
-
-Signed-off-by: Tomoya MORINAGA <tomoya.rohm at gmail.com>
-Signed-off-by: Grant Likely <grant.likely at secretlab.ca>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/spi/spi-topcliff-pch.c | 1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/spi/spi-topcliff-pch.c b/drivers/spi/spi-topcliff-pch.c
-index 1e60827..0c4efed 100644
---- a/drivers/spi/spi-topcliff-pch.c
-+++ b/drivers/spi/spi-topcliff-pch.c
-@@ -1434,6 +1434,7 @@ static int __devinit pch_spi_pd_probe(struct platform_device *plat_dev)
- master->num_chipselect = PCH_MAX_CS;
- master->setup = pch_spi_setup;
- master->transfer = pch_spi_transfer;
-+ master->mode_bits = SPI_CPOL | SPI_CPHA | SPI_LSB_FIRST;
-
- data->board_dat = board_dat;
- data->plat_dev = plat_dev;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0035-spi-topcliff-pch-add-recovery-processing-in-case-wai.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0035-spi-topcliff-pch-add-recovery-processing-in-case-wai.patch
deleted file mode 100644
index 5370de5..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0035-spi-topcliff-pch-add-recovery-processing-in-case-wai.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 0c6c9c1d69fbdd6a1f54668a2c9f8f306c702728 Mon Sep 17 00:00:00 2001
-From: Tomoya MORINAGA <tomoya.rohm at gmail.com>
-Date: Fri, 9 Dec 2011 13:13:29 +0900
-Subject: [PATCH 35/56] spi-topcliff-pch: add recovery processing in case
- wait-event timeout
-
-commit 0f57e168aa109775430c76cc663fb64909813d84 upstream.
-
-Currently, pch_spi_start_transfer failure is not anticipated.
-This patch adds the processing.
-
-Signed-off-by: Tomoya MORINAGA <tomoya.rohm at gmail.com>
-Signed-off-by: Grant Likely <grant.likely at secretlab.ca>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/spi/spi-topcliff-pch.c | 10 +++++++++-
- 1 files changed, 9 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/spi/spi-topcliff-pch.c b/drivers/spi/spi-topcliff-pch.c
-index 0c4efed..1590dbd 100644
---- a/drivers/spi/spi-topcliff-pch.c
-+++ b/drivers/spi/spi-topcliff-pch.c
-@@ -1266,8 +1266,16 @@ static void pch_spi_process_messages(struct work_struct *pwork)
- char *save_rx_buf = data->cur_trans->rx_buf;
- for (i = 0; i < cnt; i ++) {
- pch_spi_handle_dma(data, &bpw);
-- if (!pch_spi_start_transfer(data))
-+ if (!pch_spi_start_transfer(data)) {
-+ data->transfer_complete = true;
-+ data->current_msg->status = -EIO;
-+ data->current_msg->complete
-+ (data->current_msg->context);
-+ data->bcurrent_msg_processing = false;
-+ data->current_msg = NULL;
-+ data->cur_trans = NULL;
- goto out;
-+ }
- pch_spi_copy_rx_data_for_dma(data, bpw);
- }
- data->cur_trans->rx_buf = save_rx_buf;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0036-ext4-avoid-deadlock-on-sync-mounted-FS-w-o-journal.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0036-ext4-avoid-deadlock-on-sync-mounted-FS-w-o-journal.patch
deleted file mode 100644
index ffdd996..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0036-ext4-avoid-deadlock-on-sync-mounted-FS-w-o-journal.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-From ee9d8cc0c47d0095d5d27b81b7459fa534c56a67 Mon Sep 17 00:00:00 2001
-From: Eric Sandeen <sandeen at redhat.com>
-Date: Mon, 20 Feb 2012 23:06:18 -0500
-Subject: [PATCH 36/56] ext4: avoid deadlock on sync-mounted FS w/o journal
-
-commit c1bb05a657fb3d8c6179a4ef7980261fae4521d7 upstream.
-
-Processes hang forever on a sync-mounted ext2 file system that
-is mounted with the ext4 module (default in Fedora 16).
-
-I can reproduce this reliably by mounting an ext2 partition with
-"-o sync" and opening a new file an that partition with vim. vim
-will hang in "D" state forever. The same happens on ext4 without
-a journal.
-
-I am attaching a small patch here that solves this issue for me.
-In the sync mounted case without a journal,
-ext4_handle_dirty_metadata() may call sync_dirty_buffer(), which
-can't be called with buffer lock held.
-
-Also move mb_cache_entry_release inside lock to avoid race
-fixed previously by 8a2bfdcb ext[34]: EA block reference count racing fix
-Note too that ext2 fixed this same problem in 2006 with
-b2f49033 [PATCH] fix deadlock in ext2
-
-Signed-off-by: Martin.Wilck at ts.fujitsu.com
-[sandeen at redhat.com: move mb_cache_entry_release before unlock, edit commit msg]
-Signed-off-by: Eric Sandeen <sandeen at redhat.com>
-Signed-off-by: "Theodore Ts'o" <tytso at mit.edu>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/ext4/xattr.c | 7 ++++---
- 1 files changed, 4 insertions(+), 3 deletions(-)
-
-diff --git a/fs/ext4/xattr.c b/fs/ext4/xattr.c
-index 93a00d8..4410ae7 100644
---- a/fs/ext4/xattr.c
-+++ b/fs/ext4/xattr.c
-@@ -487,18 +487,19 @@ ext4_xattr_release_block(handle_t *handle, struct inode *inode,
- ext4_free_blocks(handle, inode, bh, 0, 1,
- EXT4_FREE_BLOCKS_METADATA |
- EXT4_FREE_BLOCKS_FORGET);
-+ unlock_buffer(bh);
- } else {
- le32_add_cpu(&BHDR(bh)->h_refcount, -1);
-+ if (ce)
-+ mb_cache_entry_release(ce);
-+ unlock_buffer(bh);
- error = ext4_handle_dirty_metadata(handle, inode, bh);
- if (IS_SYNC(inode))
- ext4_handle_sync(handle);
- dquot_free_block(inode, 1);
- ea_bdebug(bh, "refcount now=%d; releasing",
- le32_to_cpu(BHDR(bh)->h_refcount));
-- if (ce)
-- mb_cache_entry_release(ce);
- }
-- unlock_buffer(bh);
- out:
- ext4_std_error(inode->i_sb, error);
- return;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0037-ia64-Add-accept4-syscall.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0037-ia64-Add-accept4-syscall.patch
deleted file mode 100644
index fa24f4d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0037-ia64-Add-accept4-syscall.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From 0ab7c7f97658245faa8a63b0e4870f5459f53e6e Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?=C3=89meric=20Maschino?= <emeric.maschino at gmail.com>
-Date: Mon, 9 Jan 2012 12:55:10 -0800
-Subject: [PATCH 37/56] ia64: Add accept4() syscall
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit 65cc21b4523e94d5640542a818748cd3be8cd6b4 upstream.
-
-While debugging udev > 170 failure on Debian Wheezy
-(http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=648325), it appears
-that the issue was in fact due to missing accept4() in ia64.
-
-This patch simply adds accept4() to ia64.
-
-Signed-off-by: Émeric Maschino <emeric.maschino at gmail.com>
-Signed-off-by: Tony Luck <tony.luck at intel.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/ia64/include/asm/unistd.h | 3 ++-
- arch/ia64/kernel/entry.S | 1 +
- 2 files changed, 3 insertions(+), 1 deletions(-)
-
-diff --git a/arch/ia64/include/asm/unistd.h b/arch/ia64/include/asm/unistd.h
-index 7617248..7a3bd25 100644
---- a/arch/ia64/include/asm/unistd.h
-+++ b/arch/ia64/include/asm/unistd.h
-@@ -323,11 +323,12 @@
- #define __NR_sendmmsg 1331
- #define __NR_process_vm_readv 1332
- #define __NR_process_vm_writev 1333
-+#define __NR_accept4 1334
-
- #ifdef __KERNEL__
-
-
--#define NR_syscalls 310 /* length of syscall table */
-+#define NR_syscalls 311 /* length of syscall table */
-
- /*
- * The following defines stop scripts/checksyscalls.sh from complaining about
-diff --git a/arch/ia64/kernel/entry.S b/arch/ia64/kernel/entry.S
-index 5b31d46..1ccbe12 100644
---- a/arch/ia64/kernel/entry.S
-+++ b/arch/ia64/kernel/entry.S
-@@ -1779,6 +1779,7 @@ sys_call_table:
- data8 sys_sendmmsg
- data8 sys_process_vm_readv
- data8 sys_process_vm_writev
-+ data8 sys_accept4
-
- .org sys_call_table + 8*NR_syscalls // guard against failures to increase NR_syscalls
- #endif /* __IA64_ASM_PARAVIRTUALIZED_NATIVE */
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0038-brcm80211-smac-fix-endless-retry-of-A-MPDU-transmiss.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0038-brcm80211-smac-fix-endless-retry-of-A-MPDU-transmiss.patch
deleted file mode 100644
index 09f5e5b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0038-brcm80211-smac-fix-endless-retry-of-A-MPDU-transmiss.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From 258bf060571803e3260270a579344d4a69eafe98 Mon Sep 17 00:00:00 2001
-From: Arend van Spriel <arend at broadcom.com>
-Date: Thu, 9 Feb 2012 21:08:58 +0100
-Subject: [PATCH 38/56] brcm80211: smac: fix endless retry of A-MPDU
- transmissions
-
-commit 5e379203c7788b7af01150bfadbc74d2797a2ef4 upstream.
-
-The A-MPDU code checked against a retry limit, but it was using
-the wrong variable to do so. This patch fixes this to assure
-proper retry mechanism.
-
-This problem had a side-effect causing the mac80211 flush callback
-to remain waiting forever as well. That side effect has been fixed
-by commit by Stanislaw Gruszka:
-
-commit f96b08a7e6f69c0f0a576554df3df5b1b519c479
-Date: Tue Jan 17 12:38:50 2012 +0100
-
- brcmsmac: fix tx queue flush infinite loop
-
- Reference:
- https://bugzilla.kernel.org/show_bug.cgi?id=42576
-
-Cc: Stanislaw Gruszka <sgruszka at redhat.com>
-Reviewed-by: Pieter-Paul Giesberts <pieterpg at broadcom.com>
-Reviewed-by: Alwin Beukers <alwin at broadcom.com>
-Signed-off-by: Arend van Spriel <arend at broadcom.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/wireless/brcm80211/brcmsmac/ampdu.c | 6 +-----
- 1 files changed, 1 insertions(+), 5 deletions(-)
-
-diff --git a/drivers/net/wireless/brcm80211/brcmsmac/ampdu.c b/drivers/net/wireless/brcm80211/brcmsmac/ampdu.c
-index 7f27dbd..0515862 100644
---- a/drivers/net/wireless/brcm80211/brcmsmac/ampdu.c
-+++ b/drivers/net/wireless/brcm80211/brcmsmac/ampdu.c
-@@ -1053,17 +1053,13 @@ brcms_c_ampdu_dotxstatus_complete(struct ampdu_info *ampdu, struct scb *scb,
- }
- /* either retransmit or send bar if ack not recd */
- if (!ack_recd) {
-- struct ieee80211_tx_rate *txrate =
-- tx_info->status.rates;
-- if (retry && (txrate[0].count < (int)retry_limit)) {
-+ if (retry && (ini->txretry[index] < (int)retry_limit)) {
- ini->txretry[index]++;
- ini->tx_in_transit--;
- /*
- * Use high prededence for retransmit to
- * give some punch
- */
-- /* brcms_c_txq_enq(wlc, scb, p,
-- * BRCMS_PRIO_TO_PREC(tid)); */
- brcms_c_txq_enq(wlc, scb, p,
- BRCMS_PRIO_TO_HI_PREC(tid));
- } else {
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0039-ARM-7417-1-vfp-ensure-preemption-is-disabled-when-en.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0039-ARM-7417-1-vfp-ensure-preemption-is-disabled-when-en.patch
deleted file mode 100644
index 9c2fe73..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0039-ARM-7417-1-vfp-ensure-preemption-is-disabled-when-en.patch
+++ /dev/null
@@ -1,73 +0,0 @@
-From 51fdc0c99703cfde72be81bef9c7e38ac5c023a0 Mon Sep 17 00:00:00 2001
-From: Will Deacon <will.deacon at arm.com>
-Date: Fri, 11 May 2012 17:42:37 +0100
-Subject: [PATCH 39/56] ARM: 7417/1: vfp: ensure preemption is disabled when
- enabling VFP access
-
-commit 998de4acb2ba188d20768d1065658377a2e7d29b upstream.
-
-The vfp_enable function enables access to the VFP co-processor register
-space (cp10 and cp11) on the current CPU and must be called with
-preemption disabled. Unfortunately, the vfp_init late initcall does not
-disable preemption and can lead to an oops during boot if thread
-migration occurs at the wrong time and we end up attempting to access
-the FPSID on a CPU with VFP access disabled.
-
-This patch fixes the initcall to call vfp_enable from a non-preemptible
-context on each CPU and adds a BUG_ON(preemptible) to ensure that any
-similar problems are easily spotted in the future.
-
-Reported-by: Hyungwoo Yang <hwoo.yang at gmail.com>
-Signed-off-by: Hyungwoo Yang <hyungwooy at nvidia.com>
-Signed-off-by: Will Deacon <will.deacon at arm.com>
-Signed-off-by: Russell King <rmk+kernel at arm.linux.org.uk>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/arm/vfp/vfpmodule.c | 10 ++++++----
- 1 files changed, 6 insertions(+), 4 deletions(-)
-
-diff --git a/arch/arm/vfp/vfpmodule.c b/arch/arm/vfp/vfpmodule.c
-index 8f3ccdd..8ea07e4 100644
---- a/arch/arm/vfp/vfpmodule.c
-+++ b/arch/arm/vfp/vfpmodule.c
-@@ -11,6 +11,7 @@
- #include <linux/types.h>
- #include <linux/cpu.h>
- #include <linux/cpu_pm.h>
-+#include <linux/hardirq.h>
- #include <linux/kernel.h>
- #include <linux/notifier.h>
- #include <linux/signal.h>
-@@ -428,7 +429,10 @@ void VFP_bounce(u32 trigger, u32 fpexc, struct pt_regs *regs)
-
- static void vfp_enable(void *unused)
- {
-- u32 access = get_copro_access();
-+ u32 access;
-+
-+ BUG_ON(preemptible());
-+ access = get_copro_access();
-
- /*
- * Enable full access to VFP (cp10 and cp11)
-@@ -556,7 +560,7 @@ static int __init vfp_init(void)
- unsigned int cpu_arch = cpu_architecture();
-
- if (cpu_arch >= CPU_ARCH_ARMv6)
-- vfp_enable(NULL);
-+ on_each_cpu(vfp_enable, NULL, 1);
-
- /*
- * First check that there is a VFP that we can use.
-@@ -577,8 +581,6 @@ static int __init vfp_init(void)
- } else {
- hotcpu_notifier(vfp_hotplug, 0);
-
-- smp_call_function(vfp_enable, NULL, 1);
--
- VFP_arch = (vfpsid & FPSID_ARCH_MASK) >> FPSID_ARCH_BIT; /* Extract the architecture version */
- printk("implementor %02x architecture %d part %02x variant %x rev %x\n",
- (vfpsid & FPSID_IMPLEMENTER_MASK) >> FPSID_IMPLEMENTER_BIT,
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0040-target-Fix-SPC-2-RELEASE-bug-for-multi-session-iSCSI.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0040-target-Fix-SPC-2-RELEASE-bug-for-multi-session-iSCSI.patch
deleted file mode 100644
index cf2db91..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0040-target-Fix-SPC-2-RELEASE-bug-for-multi-session-iSCSI.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From b081b9481296d51cdb05548b8f67888a240a675f Mon Sep 17 00:00:00 2001
-From: Bernhard Kohl <Riedel-und-Kohl at t-online.de>
-Date: Sun, 13 May 2012 23:39:37 +0200
-Subject: [PATCH 40/56] target: Fix SPC-2 RELEASE bug for multi-session iSCSI
- client setups
-
-commit edc318d9fea6854df752ec8c645b960b0d5a1d23 upstream.
-
-This patch addresses a bug in a special case for target core SPC-2 RELEASE
-logic where the same physical client (eg: iSCSI InitiatorName) with
-differing iSCSI session identifiers (ISID) is allowed to incorrectly release
-the same client's SPC-2 reservation from the non reservation holding path.
-
-Note this bug is specific to iscsi-target w/ SPC-2 reservations, and
-with the default enforce_pr_isids=1 device attr setting in target-core
-controls if a InitiatorName + different ISID reservations are handled
-the same as a single iSCSI client entity.
-
-Signed-off-by: Bernhard Kohl <bernhard.kohl at gmx.net>
-Signed-off-by: Nicholas Bellinger <nab at linux-iscsi.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/target/target_core_pr.c | 3 +++
- 1 files changed, 3 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/target/target_core_pr.c b/drivers/target/target_core_pr.c
-index 6cf6ff4..b75bc92 100644
---- a/drivers/target/target_core_pr.c
-+++ b/drivers/target/target_core_pr.c
-@@ -223,6 +223,9 @@ int target_scsi2_reservation_release(struct se_task *task)
- if (dev->dev_reserved_node_acl != sess->se_node_acl)
- goto out_unlock;
-
-+ if (dev->dev_res_bin_isid != sess->sess_bin_isid)
-+ goto out_unlock;
-+
- dev->dev_reserved_node_acl = NULL;
- dev->dev_flags &= ~DF_SPC2_RESERVATIONS;
- if (dev->dev_flags & DF_SPC2_RESERVATIONS_WITH_ISID) {
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0041-crypto-mv_cesa-requires-on-CRYPTO_HASH-to-build.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0041-crypto-mv_cesa-requires-on-CRYPTO_HASH-to-build.patch
deleted file mode 100644
index 8176064..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0041-crypto-mv_cesa-requires-on-CRYPTO_HASH-to-build.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From d5f0e3adeaf18edfac8b3c7d8f867fe92923a4ab Mon Sep 17 00:00:00 2001
-From: Alexander Clouter <alex at digriz.org.uk>
-Date: Sat, 12 May 2012 09:45:08 +0100
-Subject: [PATCH 41/56] crypto: mv_cesa requires on CRYPTO_HASH to build
-
-commit 1ebfefcf37a6e308266a8d786e8cfea0a454058c upstream.
-
-Without CRYPTO_HASH being selected, mv_cesa has a lot of hooks
-into undefined exports.
-----
- MODPOST 81 modules
- Kernel: arch/arm/boot/Image is ready
- AS arch/arm/boot/compressed/head.o
- GZIP arch/arm/boot/compressed/piggy.gzip
- CC arch/arm/boot/compressed/misc.o
- CC arch/arm/boot/compressed/decompress.o
-ERROR: "crypto_ahash_type" [drivers/crypto/mv_cesa.ko] undefined!
-ERROR: "crypto_shash_final" [drivers/crypto/mv_cesa.ko] undefined!
-ERROR: "crypto_register_ahash" [drivers/crypto/mv_cesa.ko] undefined!
-ERROR: "crypto_unregister_ahash" [drivers/crypto/mv_cesa.ko] undefined!
-ERROR: "crypto_shash_update" [drivers/crypto/mv_cesa.ko] undefined!
-ERROR: "crypto_shash_digest" [drivers/crypto/mv_cesa.ko] undefined!
-ERROR: "crypto_shash_setkey" [drivers/crypto/mv_cesa.ko] undefined!
-ERROR: "crypto_alloc_shash" [drivers/crypto/mv_cesa.ko] undefined!
-make[1]: *** [__modpost] Error 1
-make: *** [modules] Error 2
-make: *** Waiting for unfinished jobs....
-----
-
-Signed-off-by: Alexander Clouter <alex at digriz.org.uk>
-Signed-off-by: Jason Cooper <jason at lakedaemon.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/crypto/Kconfig | 1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/crypto/Kconfig b/drivers/crypto/Kconfig
-index 6d16b4b..7e3002b 100644
---- a/drivers/crypto/Kconfig
-+++ b/drivers/crypto/Kconfig
-@@ -173,6 +173,7 @@ config CRYPTO_DEV_MV_CESA
- select CRYPTO_ALGAPI
- select CRYPTO_AES
- select CRYPTO_BLKCIPHER2
-+ select CRYPTO_HASH
- help
- This driver allows you to utilize the Cryptographic Engines and
- Security Accelerator (CESA) which can be found on the Marvell Orion
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0042-ALSA-hda-idt-Fix-power-map-for-speaker-pins-with-som.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0042-ALSA-hda-idt-Fix-power-map-for-speaker-pins-with-som.patch
deleted file mode 100644
index 21705fd..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0042-ALSA-hda-idt-Fix-power-map-for-speaker-pins-with-som.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From e7a10d7bb94e2d5618757447f0ac108d8951b4a6 Mon Sep 17 00:00:00 2001
-From: Takashi Iwai <tiwai at suse.de>
-Date: Tue, 15 May 2012 08:07:31 +0200
-Subject: [PATCH 42/56] ALSA: hda/idt - Fix power-map for speaker-pins with
- some HP laptops
-
-commit b0791dda813c179e539b0fc1ecd3f5f30f2571e2 upstream.
-
-BIOS on some HP laptops don't set the speaker-pins as fixed but expose
-as jacks, and this confuses the driver as if these pins are
-jack-detectable. As a result, the machine doesn't get sounds from
-speakers because the driver prepares the power-map update via jack
-unsol events which never come up in reality. The bug was introduced
-in some time in 3.2 for enabling the power-mapping feature.
-
-This patch fixes the problem by replacing the check of the persistent
-power-map bits with a proper is_jack_detectable() call.
-
-Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=43240
-
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- sound/pci/hda/patch_sigmatel.c | 6 +++---
- 1 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c
-index ed67698..7b7a516 100644
---- a/sound/pci/hda/patch_sigmatel.c
-+++ b/sound/pci/hda/patch_sigmatel.c
-@@ -4484,9 +4484,9 @@ static int stac92xx_init(struct hda_codec *codec)
- def_conf = get_defcfg_connect(def_conf);
- /* skip any ports that don't have jacks since presence
- * detection is useless */
-- if (def_conf != AC_JACK_PORT_COMPLEX) {
-- if (def_conf != AC_JACK_PORT_NONE)
-- stac_toggle_power_map(codec, nid, 1);
-+ if (def_conf != AC_JACK_PORT_NONE &&
-+ !is_jack_detectable(codec, nid)) {
-+ stac_toggle_power_map(codec, nid, 1);
- continue;
- }
- if (enable_pin_detect(codec, nid, STAC_PWR_EVENT)) {
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0043-ASoC-wm8994-Fix-AIF2ADC-power-down.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0043-ASoC-wm8994-Fix-AIF2ADC-power-down.patch
deleted file mode 100644
index 505ca3f..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0043-ASoC-wm8994-Fix-AIF2ADC-power-down.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From ffbe8f6bb9d1b143aa8d3e37c4c237219b71544d Mon Sep 17 00:00:00 2001
-From: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Date: Tue, 15 May 2012 18:13:00 +0100
-Subject: [PATCH 43/56] ASoC: wm8994: Fix AIF2ADC power down
-
-commit c7f5f2389377b66028bc129890aa653deafe8d39 upstream.
-
-Signed-off-by: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- sound/soc/codecs/wm8994.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/sound/soc/codecs/wm8994.c b/sound/soc/codecs/wm8994.c
-index 7806301..3e7aa22 100644
---- a/sound/soc/codecs/wm8994.c
-+++ b/sound/soc/codecs/wm8994.c
-@@ -1027,7 +1027,7 @@ static int aif2clk_ev(struct snd_soc_dapm_widget *w,
- snd_soc_update_bits(codec, WM8994_POWER_MANAGEMENT_5,
- WM8994_AIF2DACL_ENA |
- WM8994_AIF2DACR_ENA, 0);
-- snd_soc_update_bits(codec, WM8994_POWER_MANAGEMENT_5,
-+ snd_soc_update_bits(codec, WM8994_POWER_MANAGEMENT_4,
- WM8994_AIF2ADCL_ENA |
- WM8994_AIF2ADCR_ENA, 0);
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0044-usbnet-fix-skb-traversing-races-during-unlink-v2.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0044-usbnet-fix-skb-traversing-races-during-unlink-v2.patch
deleted file mode 100644
index 080b001..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0044-usbnet-fix-skb-traversing-races-during-unlink-v2.patch
+++ /dev/null
@@ -1,222 +0,0 @@
-From 5dc6e8a33ae9998d96530b6e6778654685d02b86 Mon Sep 17 00:00:00 2001
-From: Ming Lei <tom.leiming at gmail.com>
-Date: Thu, 26 Apr 2012 11:33:46 +0800
-Subject: [PATCH 44/56] usbnet: fix skb traversing races during unlink(v2)
-
-commit 5b6e9bcdeb65634b4ad604eb4536404bbfc62cfa upstream.
-
-Commit 4231d47e6fe69f061f96c98c30eaf9fb4c14b96d(net/usbnet: avoid
-recursive locking in usbnet_stop()) fixes the recursive locking
-problem by releasing the skb queue lock before unlink, but may
-cause skb traversing races:
- - after URB is unlinked and the queue lock is released,
- the refered skb and skb->next may be moved to done queue,
- even be released
- - in skb_queue_walk_safe, the next skb is still obtained
- by next pointer of the last skb
- - so maybe trigger oops or other problems
-
-This patch extends the usage of entry->state to describe 'start_unlink'
-state, so always holding the queue(rx/tx) lock to change the state if
-the referd skb is in rx or tx queue because we need to know if the
-refered urb has been started unlinking in unlink_urbs.
-
-The other part of this patch is based on Huajun's patch:
-always traverse from head of the tx/rx queue to get skb which is
-to be unlinked but not been started unlinking.
-
-Signed-off-by: Huajun Li <huajun.li.lee at gmail.com>
-Signed-off-by: Ming Lei <tom.leiming at gmail.com>
-Cc: Oliver Neukum <oneukum at suse.de>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/usb/usbnet.c | 54 +++++++++++++++++++++++++++++++-------------
- include/linux/usb/usbnet.h | 3 +-
- 2 files changed, 40 insertions(+), 17 deletions(-)
-
-diff --git a/drivers/net/usb/usbnet.c b/drivers/net/usb/usbnet.c
-index 750e330..b873b5d 100644
---- a/drivers/net/usb/usbnet.c
-+++ b/drivers/net/usb/usbnet.c
-@@ -281,17 +281,32 @@ int usbnet_change_mtu (struct net_device *net, int new_mtu)
- }
- EXPORT_SYMBOL_GPL(usbnet_change_mtu);
-
-+/* The caller must hold list->lock */
-+static void __usbnet_queue_skb(struct sk_buff_head *list,
-+ struct sk_buff *newsk, enum skb_state state)
-+{
-+ struct skb_data *entry = (struct skb_data *) newsk->cb;
-+
-+ __skb_queue_tail(list, newsk);
-+ entry->state = state;
-+}
-+
- /*-------------------------------------------------------------------------*/
-
- /* some LK 2.4 HCDs oopsed if we freed or resubmitted urbs from
- * completion callbacks. 2.5 should have fixed those bugs...
- */
-
--static void defer_bh(struct usbnet *dev, struct sk_buff *skb, struct sk_buff_head *list)
-+static enum skb_state defer_bh(struct usbnet *dev, struct sk_buff *skb,
-+ struct sk_buff_head *list, enum skb_state state)
- {
- unsigned long flags;
-+ enum skb_state old_state;
-+ struct skb_data *entry = (struct skb_data *) skb->cb;
-
- spin_lock_irqsave(&list->lock, flags);
-+ old_state = entry->state;
-+ entry->state = state;
- __skb_unlink(skb, list);
- spin_unlock(&list->lock);
- spin_lock(&dev->done.lock);
-@@ -299,6 +314,7 @@ static void defer_bh(struct usbnet *dev, struct sk_buff *skb, struct sk_buff_hea
- if (dev->done.qlen == 1)
- tasklet_schedule(&dev->bh);
- spin_unlock_irqrestore(&dev->done.lock, flags);
-+ return old_state;
- }
-
- /* some work can't be done in tasklets, so we use keventd
-@@ -339,7 +355,6 @@ static int rx_submit (struct usbnet *dev, struct urb *urb, gfp_t flags)
- entry = (struct skb_data *) skb->cb;
- entry->urb = urb;
- entry->dev = dev;
-- entry->state = rx_start;
- entry->length = 0;
-
- usb_fill_bulk_urb (urb, dev->udev, dev->in,
-@@ -371,7 +386,7 @@ static int rx_submit (struct usbnet *dev, struct urb *urb, gfp_t flags)
- tasklet_schedule (&dev->bh);
- break;
- case 0:
-- __skb_queue_tail (&dev->rxq, skb);
-+ __usbnet_queue_skb(&dev->rxq, skb, rx_start);
- }
- } else {
- netif_dbg(dev, ifdown, dev->net, "rx: stopped\n");
-@@ -422,16 +437,17 @@ static void rx_complete (struct urb *urb)
- struct skb_data *entry = (struct skb_data *) skb->cb;
- struct usbnet *dev = entry->dev;
- int urb_status = urb->status;
-+ enum skb_state state;
-
- skb_put (skb, urb->actual_length);
-- entry->state = rx_done;
-+ state = rx_done;
- entry->urb = NULL;
-
- switch (urb_status) {
- /* success */
- case 0:
- if (skb->len < dev->net->hard_header_len) {
-- entry->state = rx_cleanup;
-+ state = rx_cleanup;
- dev->net->stats.rx_errors++;
- dev->net->stats.rx_length_errors++;
- netif_dbg(dev, rx_err, dev->net,
-@@ -470,7 +486,7 @@ static void rx_complete (struct urb *urb)
- "rx throttle %d\n", urb_status);
- }
- block:
-- entry->state = rx_cleanup;
-+ state = rx_cleanup;
- entry->urb = urb;
- urb = NULL;
- break;
-@@ -481,17 +497,18 @@ block:
- // FALLTHROUGH
-
- default:
-- entry->state = rx_cleanup;
-+ state = rx_cleanup;
- dev->net->stats.rx_errors++;
- netif_dbg(dev, rx_err, dev->net, "rx status %d\n", urb_status);
- break;
- }
-
-- defer_bh(dev, skb, &dev->rxq);
-+ state = defer_bh(dev, skb, &dev->rxq, state);
-
- if (urb) {
- if (netif_running (dev->net) &&
-- !test_bit (EVENT_RX_HALT, &dev->flags)) {
-+ !test_bit (EVENT_RX_HALT, &dev->flags) &&
-+ state != unlink_start) {
- rx_submit (dev, urb, GFP_ATOMIC);
- return;
- }
-@@ -577,16 +594,23 @@ EXPORT_SYMBOL_GPL(usbnet_purge_paused_rxq);
- static int unlink_urbs (struct usbnet *dev, struct sk_buff_head *q)
- {
- unsigned long flags;
-- struct sk_buff *skb, *skbnext;
-+ struct sk_buff *skb;
- int count = 0;
-
- spin_lock_irqsave (&q->lock, flags);
-- skb_queue_walk_safe(q, skb, skbnext) {
-+ while (!skb_queue_empty(q)) {
- struct skb_data *entry;
- struct urb *urb;
- int retval;
-
-- entry = (struct skb_data *) skb->cb;
-+ skb_queue_walk(q, skb) {
-+ entry = (struct skb_data *) skb->cb;
-+ if (entry->state != unlink_start)
-+ goto found;
-+ }
-+ break;
-+found:
-+ entry->state = unlink_start;
- urb = entry->urb;
-
- /*
-@@ -1037,8 +1061,7 @@ static void tx_complete (struct urb *urb)
- }
-
- usb_autopm_put_interface_async(dev->intf);
-- entry->state = tx_done;
-- defer_bh(dev, skb, &dev->txq);
-+ (void) defer_bh(dev, skb, &dev->txq, tx_done);
- }
-
- /*-------------------------------------------------------------------------*/
-@@ -1094,7 +1117,6 @@ netdev_tx_t usbnet_start_xmit (struct sk_buff *skb,
- entry = (struct skb_data *) skb->cb;
- entry->urb = urb;
- entry->dev = dev;
-- entry->state = tx_start;
- entry->length = length;
-
- usb_fill_bulk_urb (urb, dev->udev, dev->out,
-@@ -1153,7 +1175,7 @@ netdev_tx_t usbnet_start_xmit (struct sk_buff *skb,
- break;
- case 0:
- net->trans_start = jiffies;
-- __skb_queue_tail (&dev->txq, skb);
-+ __usbnet_queue_skb(&dev->txq, skb, tx_start);
- if (dev->txq.qlen >= TX_QLEN (dev))
- netif_stop_queue (net);
- }
-diff --git a/include/linux/usb/usbnet.h b/include/linux/usb/usbnet.h
-index 605b0aa..76f4396 100644
---- a/include/linux/usb/usbnet.h
-+++ b/include/linux/usb/usbnet.h
-@@ -191,7 +191,8 @@ extern void usbnet_cdc_status(struct usbnet *, struct urb *);
- enum skb_state {
- illegal = 0,
- tx_start, tx_done,
-- rx_start, rx_done, rx_cleanup
-+ rx_start, rx_done, rx_cleanup,
-+ unlink_start
- };
-
- struct skb_data { /* skb->cb is one of these */
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0045-cdc_ether-add-Novatel-USB551L-device-IDs-for-FLAG_WW.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0045-cdc_ether-add-Novatel-USB551L-device-IDs-for-FLAG_WW.patch
deleted file mode 100644
index 2310ee5..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0045-cdc_ether-add-Novatel-USB551L-device-IDs-for-FLAG_WW.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From 3a586ee50e3f8a380125a8ce332de9f4c0ef727e Mon Sep 17 00:00:00 2001
-From: Dan Williams <dcbw at redhat.com>
-Date: Mon, 7 May 2012 04:24:51 +0000
-Subject: [PATCH 45/56] cdc_ether: add Novatel USB551L device IDs for
- FLAG_WWAN
-
-commit 4e6304b8420aba5311ba21fd68dab2924ae4d91a upstream.
-
-Needs to be tagged with FLAG_WWAN, which since it has generic
-descriptors, won't happen if we don't override the generic
-driver info.
-
-Cc: Oliver Neukum <oliver at neukum.org>
-Signed-off-by: Dan Williams <dcbw at redhat.com>
-Acked-by: Oliver Neukum <oliver at neukum.org>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/usb/cdc_ether.c | 16 ++++++++++++++++
- 1 files changed, 16 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/net/usb/cdc_ether.c b/drivers/net/usb/cdc_ether.c
-index eac4886..2ba40cf 100644
---- a/drivers/net/usb/cdc_ether.c
-+++ b/drivers/net/usb/cdc_ether.c
-@@ -482,6 +482,7 @@ static const struct driver_info wwan_info = {
- /*-------------------------------------------------------------------------*/
-
- #define HUAWEI_VENDOR_ID 0x12D1
-+#define NOVATEL_VENDOR_ID 0x1410
-
- static const struct usb_device_id products [] = {
- /*
-@@ -599,6 +600,21 @@ static const struct usb_device_id products [] = {
- * because of bugs/quirks in a given product (like Zaurus, above).
- */
- {
-+ /* Novatel USB551L */
-+ /* This match must come *before* the generic CDC-ETHER match so that
-+ * we get FLAG_WWAN set on the device, since it's descriptors are
-+ * generic CDC-ETHER.
-+ */
-+ .match_flags = USB_DEVICE_ID_MATCH_VENDOR
-+ | USB_DEVICE_ID_MATCH_PRODUCT
-+ | USB_DEVICE_ID_MATCH_INT_INFO,
-+ .idVendor = NOVATEL_VENDOR_ID,
-+ .idProduct = 0xB001,
-+ .bInterfaceClass = USB_CLASS_COMM,
-+ .bInterfaceSubClass = USB_CDC_SUBCLASS_ETHERNET,
-+ .bInterfaceProtocol = USB_CDC_PROTO_NONE,
-+ .driver_info = (unsigned long)&wwan_info,
-+}, {
- USB_INTERFACE_INFO(USB_CLASS_COMM, USB_CDC_SUBCLASS_ETHERNET,
- USB_CDC_PROTO_NONE),
- .driver_info = (unsigned long) &cdc_info,
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0046-ARM-prevent-VM_GROWSDOWN-mmaps-extending-below-FIRST.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0046-ARM-prevent-VM_GROWSDOWN-mmaps-extending-below-FIRST.patch
deleted file mode 100644
index 59cacc9..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0046-ARM-prevent-VM_GROWSDOWN-mmaps-extending-below-FIRST.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From bb7f36d5a6a8621f37a79996cfbf0f0318862fcd Mon Sep 17 00:00:00 2001
-From: Russell King <rmk+kernel at arm.linux.org.uk>
-Date: Wed, 16 May 2012 15:19:20 +0100
-Subject: [PATCH 46/56] ARM: prevent VM_GROWSDOWN mmaps extending below
- FIRST_USER_ADDRESS
-
-commit 9b61a4d1b2064dbd0c9e61754305ac852170509f upstream.
-
-Reported-by: Al Viro <viro at zeniv.linux.org.uk>
-Signed-off-by: Russell King <rmk+kernel at arm.linux.org.uk>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/arm/mm/fault.c | 4 +++-
- 1 files changed, 3 insertions(+), 1 deletions(-)
-
-diff --git a/arch/arm/mm/fault.c b/arch/arm/mm/fault.c
-index aa33949..4b0bc37 100644
---- a/arch/arm/mm/fault.c
-+++ b/arch/arm/mm/fault.c
-@@ -267,7 +267,9 @@ good_area:
- return fault;
-
- check_stack:
-- if (vma->vm_flags & VM_GROWSDOWN && !expand_stack(vma, addr))
-+ /* Don't allow expansion below FIRST_USER_ADDRESS */
-+ if (vma->vm_flags & VM_GROWSDOWN &&
-+ addr >= FIRST_USER_ADDRESS && !expand_stack(vma, addr))
- goto good_area;
- out:
- return fault;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0047-arch-tile-apply-commit-74fca9da0-to-the-compat-signa.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0047-arch-tile-apply-commit-74fca9da0-to-the-compat-signa.patch
deleted file mode 100644
index 2b95a67..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0047-arch-tile-apply-commit-74fca9da0-to-the-compat-signa.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From 4fb637e8e8bd6149d99d92389a104494bb234540 Mon Sep 17 00:00:00 2001
-From: Chris Metcalf <cmetcalf at tilera.com>
-Date: Wed, 16 May 2012 14:54:20 -0400
-Subject: [PATCH 47/56] arch/tile: apply commit 74fca9da0 to the compat signal
- handling as well
-
-commit a134d228298c6aa9007205c6b81cae0cac0acb5d upstream.
-
-This passes siginfo and mcontext to tilegx32 signal handlers that
-don't have SA_SIGINFO set just as we have been doing for tilegx64.
-
-Signed-off-by: Chris Metcalf <cmetcalf at tilera.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/tile/kernel/compat_signal.c | 12 +++++-------
- 1 files changed, 5 insertions(+), 7 deletions(-)
-
-diff --git a/arch/tile/kernel/compat_signal.c b/arch/tile/kernel/compat_signal.c
-index a7869ad..41459d8 100644
---- a/arch/tile/kernel/compat_signal.c
-+++ b/arch/tile/kernel/compat_signal.c
-@@ -406,19 +406,17 @@ int compat_setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
- * Set up registers for signal handler.
- * Registers that we don't modify keep the value they had from
- * user-space at the time we took the signal.
-+ * We always pass siginfo and mcontext, regardless of SA_SIGINFO,
-+ * since some things rely on this (e.g. glibc's debug/segfault.c).
- */
- regs->pc = ptr_to_compat_reg(ka->sa.sa_handler);
- regs->ex1 = PL_ICS_EX1(USER_PL, 1); /* set crit sec in handler */
- regs->sp = ptr_to_compat_reg(frame);
- regs->lr = restorer;
- regs->regs[0] = (unsigned long) usig;
--
-- if (ka->sa.sa_flags & SA_SIGINFO) {
-- /* Need extra arguments, so mark to restore caller-saves. */
-- regs->regs[1] = ptr_to_compat_reg(&frame->info);
-- regs->regs[2] = ptr_to_compat_reg(&frame->uc);
-- regs->flags |= PT_FLAGS_CALLER_SAVES;
-- }
-+ regs->regs[1] = ptr_to_compat_reg(&frame->info);
-+ regs->regs[2] = ptr_to_compat_reg(&frame->uc);
-+ regs->flags |= PT_FLAGS_CALLER_SAVES;
-
- /*
- * Notify any tracer that was single-stepping it.
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0048-MD-Add-del_timer_sync-to-mddev_suspend-fix-nasty-pan.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0048-MD-Add-del_timer_sync-to-mddev_suspend-fix-nasty-pan.patch
deleted file mode 100644
index 8daf07a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0048-MD-Add-del_timer_sync-to-mddev_suspend-fix-nasty-pan.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From efbb3ae65b6bd81ebb5b7487fdfc4d65812b0825 Mon Sep 17 00:00:00 2001
-From: Jonathan Brassow <jbrassow at redhat.com>
-Date: Wed, 16 May 2012 04:06:14 -0500
-Subject: [PATCH 48/56] MD: Add del_timer_sync to mddev_suspend (fix nasty
- panic)
-
-commit 0d9f4f135eb6dea06bdcb7065b1e4ff78274a5e9 upstream.
-
-Use del_timer_sync to remove timer before mddev_suspend finishes.
-
-We don't want a timer going off after an mddev_suspend is called. This is
-especially true with device-mapper, since it can call the destructor function
-immediately following a suspend. This results in the removal (kfree) of the
-structures upon which the timer depends - resulting in a very ugly panic.
-Therefore, we add a del_timer_sync to mddev_suspend to prevent this.
-
-Signed-off-by: NeilBrown <neilb at suse.de>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/md/md.c | 2 ++
- 1 files changed, 2 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/md/md.c b/drivers/md/md.c
-index 065ab4f..adcd850 100644
---- a/drivers/md/md.c
-+++ b/drivers/md/md.c
-@@ -392,6 +392,8 @@ void mddev_suspend(struct mddev *mddev)
- synchronize_rcu();
- wait_event(mddev->sb_wait, atomic_read(&mddev->active_io) == 0);
- mddev->pers->quiesce(mddev, 1);
-+
-+ del_timer_sync(&mddev->safemode_timer);
- }
- EXPORT_SYMBOL_GPL(mddev_suspend);
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0049-target-Fix-bug-in-handling-of-FILEIO-block_device-re.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0049-target-Fix-bug-in-handling-of-FILEIO-block_device-re.patch
deleted file mode 100644
index 9422e65..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0049-target-Fix-bug-in-handling-of-FILEIO-block_device-re.patch
+++ /dev/null
@@ -1,78 +0,0 @@
-From 08671b3fdc83c369484ee2b4e9bfab6b0a6ee48d Mon Sep 17 00:00:00 2001
-From: Nicholas Bellinger <nab at linux-iscsi.org>
-Date: Wed, 16 May 2012 16:05:26 -0700
-Subject: [PATCH 49/56] target: Fix bug in handling of FILEIO + block_device
- resize ops
-
-commit cd9323fd68aee3c1c6b5b21e5746c9d1b586fb58 upstream.
-
-This patch fixes a bug in the handling of FILEIO w/ underlying block_device
-resize operations where the original fd_dev->fd_dev_size was incorrectly being
-used in fd_get_blocks() for READ_CAPACITY response payloads.
-
-This patch avoids using fd_dev->fd_dev_size for FILEIO devices with
-an underlying block_device, and instead changes fd_get_blocks() to
-get the sector count directly from i_size_read() as recommended by hch.
-
-Reported-by: Christoph Hellwig <hch at lst.de>
-Signed-off-by: Nicholas Bellinger <nab at linux-iscsi.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/target/target_core_file.c | 22 ++++++++++++++++------
- 1 files changed, 16 insertions(+), 6 deletions(-)
-
-diff --git a/drivers/target/target_core_file.c b/drivers/target/target_core_file.c
-index b4864fb..cad8b92 100644
---- a/drivers/target/target_core_file.c
-+++ b/drivers/target/target_core_file.c
-@@ -170,6 +170,7 @@ static struct se_device *fd_create_virtdevice(
- inode = file->f_mapping->host;
- if (S_ISBLK(inode->i_mode)) {
- struct request_queue *q;
-+ unsigned long long dev_size;
- /*
- * Setup the local scope queue_limits from struct request_queue->limits
- * to pass into transport_add_device_to_core_hba() as struct se_dev_limits.
-@@ -184,13 +185,12 @@ static struct se_device *fd_create_virtdevice(
- * one (1) logical sector from underlying struct block_device
- */
- fd_dev->fd_block_size = bdev_logical_block_size(inode->i_bdev);
-- fd_dev->fd_dev_size = (i_size_read(file->f_mapping->host) -
-+ dev_size = (i_size_read(file->f_mapping->host) -
- fd_dev->fd_block_size);
-
- pr_debug("FILEIO: Using size: %llu bytes from struct"
- " block_device blocks: %llu logical_block_size: %d\n",
-- fd_dev->fd_dev_size,
-- div_u64(fd_dev->fd_dev_size, fd_dev->fd_block_size),
-+ dev_size, div_u64(dev_size, fd_dev->fd_block_size),
- fd_dev->fd_block_size);
- } else {
- if (!(fd_dev->fbd_flags & FBDF_HAS_SIZE)) {
-@@ -606,10 +606,20 @@ static u32 fd_get_device_type(struct se_device *dev)
- static sector_t fd_get_blocks(struct se_device *dev)
- {
- struct fd_dev *fd_dev = dev->dev_ptr;
-- unsigned long long blocks_long = div_u64(fd_dev->fd_dev_size,
-- dev->se_sub_dev->se_dev_attrib.block_size);
-+ struct file *f = fd_dev->fd_file;
-+ struct inode *i = f->f_mapping->host;
-+ unsigned long long dev_size;
-+ /*
-+ * When using a file that references an underlying struct block_device,
-+ * ensure dev_size is always based on the current inode size in order
-+ * to handle underlying block_device resize operations.
-+ */
-+ if (S_ISBLK(i->i_mode))
-+ dev_size = (i_size_read(i) - fd_dev->fd_block_size);
-+ else
-+ dev_size = fd_dev->fd_dev_size;
-
-- return blocks_long;
-+ return div_u64(dev_size, dev->se_sub_dev->se_dev_attrib.block_size);
- }
-
- static struct se_subsystem_api fileio_template = {
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0050-tcp-do_tcp_sendpages-must-try-to-push-data-out-on-oo.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0050-tcp-do_tcp_sendpages-must-try-to-push-data-out-on-oo.patch
deleted file mode 100644
index 1e3a68b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0050-tcp-do_tcp_sendpages-must-try-to-push-data-out-on-oo.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From 8c6c5b3fb938b8af747c79cfe8c5cb39db72202a Mon Sep 17 00:00:00 2001
-From: Willy Tarreau <w at 1wt.eu>
-Date: Thu, 17 May 2012 11:14:14 +0000
-Subject: [PATCH 50/56] tcp: do_tcp_sendpages() must try to push data out on
- oom conditions
-
-commit bad115cfe5b509043b684d3a007ab54b80090aa1 upstream.
-
-Since recent changes on TCP splicing (starting with commits 2f533844
-"tcp: allow splice() to build full TSO packets" and 35f9c09f "tcp:
-tcp_sendpages() should call tcp_push() once"), I started seeing
-massive stalls when forwarding traffic between two sockets using
-splice() when pipe buffers were larger than socket buffers.
-
-Latest changes (net: netdev_alloc_skb() use build_skb()) made the
-problem even more apparent.
-
-The reason seems to be that if do_tcp_sendpages() fails on out of memory
-condition without being able to send at least one byte, tcp_push() is not
-called and the buffers cannot be flushed.
-
-After applying the attached patch, I cannot reproduce the stalls at all
-and the data rate it perfectly stable and steady under any condition
-which previously caused the problem to be permanent.
-
-The issue seems to have been there since before the kernel migrated to
-git, which makes me think that the stalls I occasionally experienced
-with tux during stress-tests years ago were probably related to the
-same issue.
-
-This issue was first encountered on 3.0.31 and 3.2.17, so please backport
-to -stable.
-
-Signed-off-by: Willy Tarreau <w at 1wt.eu>
-Acked-by: Eric Dumazet <edumazet at google.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/ipv4/tcp.c | 3 +--
- 1 files changed, 1 insertions(+), 2 deletions(-)
-
-diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
-index 8f826b1..11ba922 100644
---- a/net/ipv4/tcp.c
-+++ b/net/ipv4/tcp.c
-@@ -851,8 +851,7 @@ new_segment:
- wait_for_sndbuf:
- set_bit(SOCK_NOSPACE, &sk->sk_socket->flags);
- wait_for_memory:
-- if (copied)
-- tcp_push(sk, flags & ~MSG_MORE, mss_now, TCP_NAGLE_PUSH);
-+ tcp_push(sk, flags & ~MSG_MORE, mss_now, TCP_NAGLE_PUSH);
-
- if ((err = sk_stream_wait_memory(sk, &timeo)) != 0)
- goto do_error;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0051-e1000-Prevent-reset-task-killing-itself.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0051-e1000-Prevent-reset-task-killing-itself.patch
deleted file mode 100644
index 1a3cdf4..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0051-e1000-Prevent-reset-task-killing-itself.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 4cad7c8fe708e7795f298240e246cec993a7e74b Mon Sep 17 00:00:00 2001
-From: Tushar Dave <tushar.n.dave at intel.com>
-Date: Thu, 17 May 2012 01:04:50 +0000
-Subject: [PATCH 51/56] e1000: Prevent reset task killing itself.
-
-commit 8ce6909f77ba1b7bcdea65cc2388fd1742b6d669 upstream.
-
-Killing reset task while adapter is resetting causes deadlock.
-Only kill reset task if adapter is not resetting.
-Ref bug #43132 on bugzilla.kernel.org
-
-Signed-off-by: Tushar Dave <tushar.n.dave at intel.com>
-Tested-by: Aaron Brown <aaron.f.brown at intel.com>
-Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher at intel.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/ethernet/intel/e1000/e1000_main.c | 6 +++++-
- 1 files changed, 5 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/net/ethernet/intel/e1000/e1000_main.c b/drivers/net/ethernet/intel/e1000/e1000_main.c
-index cf480b5..de00805 100644
---- a/drivers/net/ethernet/intel/e1000/e1000_main.c
-+++ b/drivers/net/ethernet/intel/e1000/e1000_main.c
-@@ -494,7 +494,11 @@ out:
- static void e1000_down_and_stop(struct e1000_adapter *adapter)
- {
- set_bit(__E1000_DOWN, &adapter->flags);
-- cancel_work_sync(&adapter->reset_task);
-+
-+ /* Only kill reset task if adapter is not resetting */
-+ if (!test_bit(__E1000_RESETTING, &adapter->flags))
-+ cancel_work_sync(&adapter->reset_task);
-+
- cancel_delayed_work_sync(&adapter->watchdog_task);
- cancel_delayed_work_sync(&adapter->phy_info_task);
- cancel_delayed_work_sync(&adapter->fifo_stall_task);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0052-mtd-map.h-fix-arm-cross-build-failure.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0052-mtd-map.h-fix-arm-cross-build-failure.patch
deleted file mode 100644
index 297eb07..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0052-mtd-map.h-fix-arm-cross-build-failure.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From e3478e0a8885a446eed02cd159394c0ea74ecfd0 Mon Sep 17 00:00:00 2001
-From: Artem Bityutskiy <artem.bityutskiy at linux.intel.com>
-Date: Fri, 30 Dec 2011 18:28:01 +0200
-Subject: [PATCH 52/56] mtd: map.h: fix arm cross-build failure
-
-commit 4a42243886b87cd28a39b192161767c2af851a55 upstream.
-
-This patch fixes the following build failure:
-In file included from include/linux/mtd/qinfo.h:4:0,
- from include/linux/mtd/pfow.h:7,
- from drivers/mtd/lpddr/lpddr_cmds.c:27:
-include/linux/mtd/map.h: In function 'inline_map_read':
-include/linux/mtd/map.h:409:3: error: implicit declaration of function 'BUILD_BUG_ON' [-Werror=implicit-function-declaration]
-
-Signed-off-by: Artem Bityutskiy <artem.bityutskiy at linux.intel.com>
-Signed-off-by: David Woodhouse <David.Woodhouse at intel.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- include/linux/mtd/map.h | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/include/linux/mtd/map.h b/include/linux/mtd/map.h
-index a9e6ba4..daad4e6 100644
---- a/include/linux/mtd/map.h
-+++ b/include/linux/mtd/map.h
-@@ -26,7 +26,7 @@
- #include <linux/list.h>
- #include <linux/string.h>
- #include <linux/bug.h>
--
-+#include <linux/kernel.h>
-
- #include <asm/unaligned.h>
- #include <asm/system.h>
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0053-stmmac-Fix-compilation-error-in-mmc_core.c.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0053-stmmac-Fix-compilation-error-in-mmc_core.c.patch
deleted file mode 100644
index 5a0b0d7..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0053-stmmac-Fix-compilation-error-in-mmc_core.c.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 19ccd03475be60d00e4ac87f05020c31201ae29d Mon Sep 17 00:00:00 2001
-From: Stefan Roese <sr at denx.de>
-Date: Tue, 10 Jan 2012 01:47:40 +0000
-Subject: [PATCH 53/56] stmmac: Fix compilation error in mmc_core.c
-
-commit 1dd8117e3320fb42ec40ef2ace982871572d34ed upstream.
-
-Fix this error:
-
- CC drivers/net/ethernet/stmicro/stmmac/mmc_core.o
-drivers/net/ethernet/stmicro/stmmac/mmc_core.c: In function 'dwmac_mmc_ctrl':
-drivers/net/ethernet/stmicro/stmmac/mmc_core.c:143:2: error: implicit
- declaration of function 'pr_debug' [-Werror=implicit-function-declaration]
-
-Signed-off-by: Stefan Roese <sr at denx.de>
-Cc: Giuseppe Cavallaro <peppe.cavallaro at st.com>
-Acked-by: Giuseppe Cavallaro <peppe.cavallaro at st.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/ethernet/stmicro/stmmac/mmc_core.c | 1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/net/ethernet/stmicro/stmmac/mmc_core.c b/drivers/net/ethernet/stmicro/stmmac/mmc_core.c
-index 41e6b33..c07cfe9 100644
---- a/drivers/net/ethernet/stmicro/stmmac/mmc_core.c
-+++ b/drivers/net/ethernet/stmicro/stmmac/mmc_core.c
-@@ -22,6 +22,7 @@
- Author: Giuseppe Cavallaro <peppe.cavallaro at st.com>
- *******************************************************************************/
-
-+#include <linux/kernel.h>
- #include <linux/io.h>
- #include "mmc.h"
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0054-pktgen-fix-crash-at-module-unload.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0054-pktgen-fix-crash-at-module-unload.patch
deleted file mode 100644
index 3d38f55..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0054-pktgen-fix-crash-at-module-unload.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-From 0db05d78c77595936a7494aa049850169c49b861 Mon Sep 17 00:00:00 2001
-From: Eric Dumazet <eric.dumazet at gmail.com>
-Date: Wed, 9 May 2012 13:29:51 +0000
-Subject: [PATCH 54/56] pktgen: fix crash at module unload
-
-commit c57b54684060c8aced64a5b78ff69ff289af97b9 upstream.
-
-commit 7d3d43dab4e9 (net: In unregister_netdevice_notifier unregister
-the netdevices.) makes pktgen crashing at module unload.
-
-[ 296.820578] BUG: spinlock bad magic on CPU#6, rmmod/3267
-[ 296.820719] lock: ffff880310c38000, .magic: ffff8803, .owner: <none>/-1, .owner_cpu: -1
-[ 296.820943] Pid: 3267, comm: rmmod Not tainted 3.4.0-rc5+ #254
-[ 296.821079] Call Trace:
-[ 296.821211] [<ffffffff8168a715>] spin_dump+0x8a/0x8f
-[ 296.821345] [<ffffffff8168a73b>] spin_bug+0x21/0x26
-[ 296.821507] [<ffffffff812b4741>] do_raw_spin_lock+0x131/0x140
-[ 296.821648] [<ffffffff8169188e>] _raw_spin_lock+0x1e/0x20
-[ 296.821786] [<ffffffffa00cc0fd>] __pktgen_NN_threads+0x4d/0x140 [pktgen]
-[ 296.821928] [<ffffffffa00ccf8d>] pktgen_device_event+0x10d/0x1e0 [pktgen]
-[ 296.822073] [<ffffffff8154ed4f>] unregister_netdevice_notifier+0x7f/0x100
-[ 296.822216] [<ffffffffa00d2a0b>] pg_cleanup+0x48/0x73 [pktgen]
-[ 296.822357] [<ffffffff8109528e>] sys_delete_module+0x17e/0x2a0
-[ 296.822502] [<ffffffff81699652>] system_call_fastpath+0x16/0x1b
-
-Hold the pktgen_thread_lock while splicing pktgen_threads, and test
-pktgen_exiting in pktgen_device_event() to make unload faster.
-
-Signed-off-by: Eric Dumazet <edumazet at google.com>
-Cc: Eric W. Biederman <ebiederm at xmission.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/core/pktgen.c | 10 ++++++++--
- 1 files changed, 8 insertions(+), 2 deletions(-)
-
-diff --git a/net/core/pktgen.c b/net/core/pktgen.c
-index 0001c24..657e5f9 100644
---- a/net/core/pktgen.c
-+++ b/net/core/pktgen.c
-@@ -1932,7 +1932,7 @@ static int pktgen_device_event(struct notifier_block *unused,
- {
- struct net_device *dev = ptr;
-
-- if (!net_eq(dev_net(dev), &init_net))
-+ if (!net_eq(dev_net(dev), &init_net) || pktgen_exiting)
- return NOTIFY_DONE;
-
- /* It is OK that we do not hold the group lock right now,
-@@ -3758,12 +3758,18 @@ static void __exit pg_cleanup(void)
- {
- struct pktgen_thread *t;
- struct list_head *q, *n;
-+ struct list_head list;
-
- /* Stop all interfaces & threads */
- pktgen_exiting = true;
-
-- list_for_each_safe(q, n, &pktgen_threads) {
-+ mutex_lock(&pktgen_thread_lock);
-+ list_splice(&list, &pktgen_threads);
-+ mutex_unlock(&pktgen_thread_lock);
-+
-+ list_for_each_safe(q, n, &list) {
- t = list_entry(q, struct pktgen_thread, th_list);
-+ list_del(&t->th_list);
- kthread_stop(t->tsk);
- kfree(t);
- }
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0055-pktgen-fix-module-unload-for-good.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0055-pktgen-fix-module-unload-for-good.patch
deleted file mode 100644
index 1f86f35..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0055-pktgen-fix-module-unload-for-good.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From 20b87e11f8ebb8b1fa74b668770c7f2b301b40b4 Mon Sep 17 00:00:00 2001
-From: Eric Dumazet <edumazet at google.com>
-Date: Thu, 17 May 2012 23:52:26 +0000
-Subject: [PATCH 55/56] pktgen: fix module unload for good
-
-commit d4b1133558e0d417342d5d2c49e4c35b428ff20d upstream.
-
-commit c57b5468406 (pktgen: fix crash at module unload) did a very poor
-job with list primitives.
-
-1) list_splice() arguments were in the wrong order
-
-2) list_splice(list, head) has undefined behavior if head is not
-initialized.
-
-3) We should use the list_splice_init() variant to clear pktgen_threads
-list.
-
-Signed-off-by: Eric Dumazet <edumazet at google.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/core/pktgen.c | 4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/net/core/pktgen.c b/net/core/pktgen.c
-index 657e5f9..df878de 100644
---- a/net/core/pktgen.c
-+++ b/net/core/pktgen.c
-@@ -3758,13 +3758,13 @@ static void __exit pg_cleanup(void)
- {
- struct pktgen_thread *t;
- struct list_head *q, *n;
-- struct list_head list;
-+ LIST_HEAD(list);
-
- /* Stop all interfaces & threads */
- pktgen_exiting = true;
-
- mutex_lock(&pktgen_thread_lock);
-- list_splice(&list, &pktgen_threads);
-+ list_splice_init(&pktgen_threads, &list);
- mutex_unlock(&pktgen_thread_lock);
-
- list_for_each_safe(q, n, &list) {
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0056-Linux-3.2.18.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0056-Linux-3.2.18.patch
deleted file mode 100644
index a8809ed..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.18/0056-Linux-3.2.18.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From c04a2fde6b61eb063267b611c43371e61d0cabc3 Mon Sep 17 00:00:00 2001
-From: Ben Hutchings <ben at decadent.org.uk>
-Date: Sun, 20 May 2012 22:56:54 +0100
-Subject: [PATCH 56/56] Linux 3.2.18
-
----
- Makefile | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/Makefile b/Makefile
-index 4c4efa3..add68f1 100644
---- a/Makefile
-+++ b/Makefile
-@@ -1,6 +1,6 @@
- VERSION = 3
- PATCHLEVEL = 2
--SUBLEVEL = 17
-+SUBLEVEL = 18
- EXTRAVERSION =
- NAME = Saber-toothed Squirrel
-
---
-1.7.7.6
-
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
deleted file mode 100644
index dff41fc..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0001-KVM-mmu_notifier-Flush-TLBs-before-releasing-mmu_loc.patch
+++ /dev/null
@@ -1,79 +0,0 @@
-From e29e69cb6dff635429cbda9a9548c3d0390689f9 Mon Sep 17 00:00:00 2001
-From: Takuya Yoshikawa <yoshikawa.takuya at oss.ntt.co.jp>
-Date: Fri, 10 Feb 2012 15:28:31 +0900
-Subject: [PATCH 001/117] KVM: mmu_notifier: Flush TLBs before releasing
- mmu_lock
-
-(cherry picked from commit 565f3be2174611f364405bbea2d86e153c2e7e78
-
-Other threads may process the same page in that small window and skip
-TLB flush and then return before these functions do flush.
-
-Signed-off-by: Takuya Yoshikawa <yoshikawa.takuya at oss.ntt.co.jp>
-Signed-off-by: Marcelo Tosatti <mtosatti at redhat.com>
-Signed-off-by: Avi Kivity <avi at redhat.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- virt/kvm/kvm_main.c | 19 ++++++++++---------
- 1 file changed, 10 insertions(+), 9 deletions(-)
-
-diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
-index e401c1b..9ffac2e 100644
---- a/virt/kvm/kvm_main.c
-+++ b/virt/kvm/kvm_main.c
-@@ -289,15 +289,15 @@ static void kvm_mmu_notifier_invalidate_page(struct mmu_notifier *mn,
- */
- idx = srcu_read_lock(&kvm->srcu);
- spin_lock(&kvm->mmu_lock);
-+
- kvm->mmu_notifier_seq++;
- need_tlb_flush = kvm_unmap_hva(kvm, address) | kvm->tlbs_dirty;
-- spin_unlock(&kvm->mmu_lock);
-- srcu_read_unlock(&kvm->srcu, idx);
--
- /* we've to flush the tlb before the pages can be freed */
- if (need_tlb_flush)
- kvm_flush_remote_tlbs(kvm);
-
-+ spin_unlock(&kvm->mmu_lock);
-+ srcu_read_unlock(&kvm->srcu, idx);
- }
-
- static void kvm_mmu_notifier_change_pte(struct mmu_notifier *mn,
-@@ -335,12 +335,12 @@ static void kvm_mmu_notifier_invalidate_range_start(struct mmu_notifier *mn,
- for (; start < end; start += PAGE_SIZE)
- need_tlb_flush |= kvm_unmap_hva(kvm, start);
- need_tlb_flush |= kvm->tlbs_dirty;
-- spin_unlock(&kvm->mmu_lock);
-- srcu_read_unlock(&kvm->srcu, idx);
--
- /* we've to flush the tlb before the pages can be freed */
- if (need_tlb_flush)
- kvm_flush_remote_tlbs(kvm);
-+
-+ spin_unlock(&kvm->mmu_lock);
-+ srcu_read_unlock(&kvm->srcu, idx);
- }
-
- static void kvm_mmu_notifier_invalidate_range_end(struct mmu_notifier *mn,
-@@ -378,13 +378,14 @@ static int kvm_mmu_notifier_clear_flush_young(struct mmu_notifier *mn,
-
- idx = srcu_read_lock(&kvm->srcu);
- spin_lock(&kvm->mmu_lock);
-- young = kvm_age_hva(kvm, address);
-- spin_unlock(&kvm->mmu_lock);
-- srcu_read_unlock(&kvm->srcu, idx);
-
-+ young = kvm_age_hva(kvm, address);
- if (young)
- kvm_flush_remote_tlbs(kvm);
-
-+ spin_unlock(&kvm->mmu_lock);
-+ srcu_read_unlock(&kvm->srcu, idx);
-+
- return young;
- }
-
---
-1.7.9.5
-
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
deleted file mode 100644
index 801ab45..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0002-KVM-Ensure-all-vcpus-are-consistent-with-in-kernel-i.patch
+++ /dev/null
@@ -1,110 +0,0 @@
-From 54719e9d5196e2af1e358795de9face038502343 Mon Sep 17 00:00:00 2001
-From: Avi Kivity <avi at redhat.com>
-Date: Mon, 5 Mar 2012 14:23:29 +0200
-Subject: [PATCH 002/117] KVM: Ensure all vcpus are consistent with in-kernel
- irqchip settings
-
-(cherry picked from commit 3e515705a1f46beb1c942bb8043c16f8ac7b1e9e)
-
-If some vcpus are created before KVM_CREATE_IRQCHIP, then
-irqchip_in_kernel() and vcpu->arch.apic will be inconsistent, leading
-to potential NULL pointer dereferences.
-
-Fix by:
-- ensuring that no vcpus are installed when KVM_CREATE_IRQCHIP is called
-- ensuring that a vcpu has an apic if it is installed after KVM_CREATE_IRQCHIP
-
-This is somewhat long winded because vcpu->arch.apic is created without
-kvm->lock held.
-
-Based on earlier patch by Michael Ellerman.
-
-Signed-off-by: Michael Ellerman <michael at ellerman.id.au>
-Signed-off-by: Avi Kivity <avi at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/ia64/kvm/kvm-ia64.c | 5 +++++
- arch/x86/kvm/x86.c | 8 ++++++++
- include/linux/kvm_host.h | 7 +++++++
- virt/kvm/kvm_main.c | 4 ++++
- 4 files changed, 24 insertions(+)
-
-diff --git a/arch/ia64/kvm/kvm-ia64.c b/arch/ia64/kvm/kvm-ia64.c
-index 43f4c92..7073185 100644
---- a/arch/ia64/kvm/kvm-ia64.c
-+++ b/arch/ia64/kvm/kvm-ia64.c
-@@ -1169,6 +1169,11 @@ out:
-
- #define PALE_RESET_ENTRY 0x80000000ffffffb0UL
-
-+bool kvm_vcpu_compatible(struct kvm_vcpu *vcpu)
-+{
-+ return irqchip_in_kernel(vcpu->kcm) == (vcpu->arch.apic != NULL);
-+}
-+
- int kvm_arch_vcpu_init(struct kvm_vcpu *vcpu)
- {
- struct kvm_vcpu *v;
-diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
-index e04cae1..4fc5323 100644
---- a/arch/x86/kvm/x86.c
-+++ b/arch/x86/kvm/x86.c
-@@ -3579,6 +3579,9 @@ long kvm_arch_vm_ioctl(struct file *filp,
- r = -EEXIST;
- if (kvm->arch.vpic)
- goto create_irqchip_unlock;
-+ r = -EINVAL;
-+ if (atomic_read(&kvm->online_vcpus))
-+ goto create_irqchip_unlock;
- r = -ENOMEM;
- vpic = kvm_create_pic(kvm);
- if (vpic) {
-@@ -6486,6 +6489,11 @@ void kvm_arch_check_processor_compat(void *rtn)
- kvm_x86_ops->check_processor_compatibility(rtn);
- }
-
-+bool kvm_vcpu_compatible(struct kvm_vcpu *vcpu)
-+{
-+ return irqchip_in_kernel(vcpu->kvm) == (vcpu->arch.apic != NULL);
-+}
-+
- int kvm_arch_vcpu_init(struct kvm_vcpu *vcpu)
- {
- struct page *page;
-diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
-index 35410ef..6136821 100644
---- a/include/linux/kvm_host.h
-+++ b/include/linux/kvm_host.h
-@@ -744,6 +744,13 @@ static inline bool kvm_vcpu_is_bsp(struct kvm_vcpu *vcpu)
- {
- return vcpu->kvm->bsp_vcpu_id == vcpu->vcpu_id;
- }
-+
-+bool kvm_vcpu_compatible(struct kvm_vcpu *vcpu);
-+
-+#else
-+
-+static inline bool kvm_vcpu_compatible(struct kvm_vcpu *vcpu) { return true; }
-+
- #endif
-
- #ifdef __KVM_HAVE_DEVICE_ASSIGNMENT
-diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
-index 9ffac2e..ec747dc 100644
---- a/virt/kvm/kvm_main.c
-+++ b/virt/kvm/kvm_main.c
-@@ -1667,6 +1667,10 @@ static int kvm_vm_ioctl_create_vcpu(struct kvm *kvm, u32 id)
- goto vcpu_destroy;
-
- mutex_lock(&kvm->lock);
-+ if (!kvm_vcpu_compatible(vcpu)) {
-+ r = -EINVAL;
-+ goto unlock_vcpu_destroy;
-+ }
- if (atomic_read(&kvm->online_vcpus) == KVM_MAX_VCPUS) {
- r = -EINVAL;
- goto unlock_vcpu_destroy;
---
-1.7.9.5
-
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
deleted file mode 100644
index 12c9a1e..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0003-KVM-lock-slots_lock-around-device-assignment.patch
+++ /dev/null
@@ -1,83 +0,0 @@
-From 2464830dde6595631a26a5178946f8d8d0ac974f Mon Sep 17 00:00:00 2001
-From: Alex Williamson <alex.williamson at redhat.com>
-Date: Tue, 17 Apr 2012 21:46:44 -0600
-Subject: [PATCH 003/117] KVM: lock slots_lock around device assignment
-
-(cherry picked from commit 21a1416a1c945c5aeaeaf791b63c64926018eb77)
-
-As pointed out by Jason Baron, when assigning a device to a guest
-we first set the iommu domain pointer, which enables mapping
-and unmapping of memory slots to the iommu. This leaves a window
-where this path is enabled, but we haven't synchronized the iommu
-mappings to the existing memory slots. Thus a slot being removed
-at that point could send us down unexpected code paths removing
-non-existent pinnings and iommu mappings. Take the slots_lock
-around creating the iommu domain and initial mappings as well as
-around iommu teardown to avoid this race.
-
-Signed-off-by: Alex Williamson <alex.williamson at redhat.com>
-Signed-off-by: Marcelo Tosatti <mtosatti at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- virt/kvm/iommu.c | 23 +++++++++++++++--------
- 1 file changed, 15 insertions(+), 8 deletions(-)
-
-diff --git a/virt/kvm/iommu.c b/virt/kvm/iommu.c
-index fd817a2..533db33 100644
---- a/virt/kvm/iommu.c
-+++ b/virt/kvm/iommu.c
-@@ -239,9 +239,13 @@ int kvm_iommu_map_guest(struct kvm *kvm)
- return -ENODEV;
- }
-
-+ mutex_lock(&kvm->slots_lock);
-+
- kvm->arch.iommu_domain = iommu_domain_alloc(&pci_bus_type);
-- if (!kvm->arch.iommu_domain)
-- return -ENOMEM;
-+ if (!kvm->arch.iommu_domain) {
-+ r = -ENOMEM;
-+ goto out_unlock;
-+ }
-
- if (!allow_unsafe_assigned_interrupts &&
- !iommu_domain_has_cap(kvm->arch.iommu_domain,
-@@ -252,17 +256,16 @@ int kvm_iommu_map_guest(struct kvm *kvm)
- " module option.\n", __func__);
- iommu_domain_free(kvm->arch.iommu_domain);
- kvm->arch.iommu_domain = NULL;
-- return -EPERM;
-+ r = -EPERM;
-+ goto out_unlock;
- }
-
- r = kvm_iommu_map_memslots(kvm);
- if (r)
-- goto out_unmap;
--
-- return 0;
-+ kvm_iommu_unmap_memslots(kvm);
-
--out_unmap:
-- kvm_iommu_unmap_memslots(kvm);
-+out_unlock:
-+ mutex_unlock(&kvm->slots_lock);
- return r;
- }
-
-@@ -338,7 +341,11 @@ int kvm_iommu_unmap_guest(struct kvm *kvm)
- if (!domain)
- return 0;
-
-+ mutex_lock(&kvm->slots_lock);
- kvm_iommu_unmap_memslots(kvm);
-+ kvm->arch.iommu_domain = NULL;
-+ mutex_unlock(&kvm->slots_lock);
-+
- iommu_domain_free(domain);
- return 0;
- }
---
-1.7.9.5
-
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
deleted file mode 100644
index 34538bd..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0004-KVM-nVMX-Fix-erroneous-exception-bitmap-check.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From c997d0a009e5eb7b372287c13fc9eaba901533e8 Mon Sep 17 00:00:00 2001
-From: Nadav Har'El <nyh at math.technion.ac.il>
-Date: Tue, 6 Mar 2012 16:39:22 +0200
-Subject: [PATCH 004/117] KVM: nVMX: Fix erroneous exception bitmap check
-
-(cherry picked from commit 9587190107d0c0cbaccbf7bf6b0245d29095a9ae)
-
-The code which checks whether to inject a pagefault to L1 or L2 (in
-nested VMX) was wrong, incorrect in how it checked the PF_VECTOR bit.
-Thanks to Dan Carpenter for spotting this.
-
-Signed-off-by: Nadav Har'El <nyh at il.ibm.com>
-Reported-by: Dan Carpenter <dan.carpenter at oracle.com>
-Signed-off-by: Avi Kivity <avi at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/x86/kvm/vmx.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
-index 4ea7678..7ac5993 100644
---- a/arch/x86/kvm/vmx.c
-+++ b/arch/x86/kvm/vmx.c
-@@ -1677,7 +1677,7 @@ static int nested_pf_handled(struct kvm_vcpu *vcpu)
- struct vmcs12 *vmcs12 = get_vmcs12(vcpu);
-
- /* TODO: also check PFEC_MATCH/MASK, not just EB.PF. */
-- if (!(vmcs12->exception_bitmap & PF_VECTOR))
-+ if (!(vmcs12->exception_bitmap & (1u << PF_VECTOR)))
- return 0;
-
- nested_vmx_vmexit(vcpu);
---
-1.7.9.5
-
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
deleted file mode 100644
index 6a3536f..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0005-KVM-VMX-vmx_set_cr0-expects-kvm-srcu-locked.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 6d02e81e40e77ff4e0d65ae89cf91a7402d3255f Mon Sep 17 00:00:00 2001
-From: Marcelo Tosatti <mtosatti at redhat.com>
-Date: Tue, 27 Mar 2012 19:47:26 -0300
-Subject: [PATCH 005/117] KVM: VMX: vmx_set_cr0 expects kvm->srcu locked
-
-(cherry picked from commit 7a4f5ad051e02139a9f1c0f7f4b1acb88915852b)
-
-vmx_set_cr0 is called from vcpu run context, therefore it expects
-kvm->srcu to be held (for setting up the real-mode TSS).
-
-Signed-off-by: Marcelo Tosatti <mtosatti at redhat.com>
-Signed-off-by: Avi Kivity <avi at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/x86/kvm/vmx.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
-index 7ac5993..7315488 100644
---- a/arch/x86/kvm/vmx.c
-+++ b/arch/x86/kvm/vmx.c
-@@ -3915,7 +3915,9 @@ static int vmx_vcpu_reset(struct kvm_vcpu *vcpu)
- vmcs_write16(VIRTUAL_PROCESSOR_ID, vmx->vpid);
-
- vmx->vcpu.arch.cr0 = X86_CR0_NW | X86_CR0_CD | X86_CR0_ET;
-+ vcpu->srcu_idx = srcu_read_lock(&vcpu->kvm->srcu);
- vmx_set_cr0(&vmx->vcpu, kvm_read_cr0(vcpu)); /* enter rmode */
-+ srcu_read_unlock(&vcpu->kvm->srcu, vcpu->srcu_idx);
- vmx_set_cr4(&vmx->vcpu, 0);
- vmx_set_efer(&vmx->vcpu, 0);
- vmx_fpu_activate(&vmx->vcpu);
---
-1.7.9.5
-
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
deleted file mode 100644
index f47e28d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0006-KVM-s390-do-store-status-after-handling-STOP_ON_STOP.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-From 4ec77e205d0abcfd9d48332ac0a8d60322966562 Mon Sep 17 00:00:00 2001
-From: Jens Freimann <jfrei at linux.vnet.ibm.com>
-Date: Mon, 6 Feb 2012 10:59:03 +0100
-Subject: [PATCH 006/117] KVM: s390: do store status after handling
- STOP_ON_STOP bit
-
-(cherry picked from commit 9e0d5473e2f0ba2d2fe9dab9408edef3060b710e)
-
-In handle_stop() handle the stop bit before doing the store status as
-described for "Stop and Store Status" in the Principles of Operation.
-We have to give up the local_int.lock before calling kvm store status
-since it calls gmap_fault() which might sleep. Since local_int.lock
-only protects local_int.* and not guest memory we can give up the lock.
-
-Signed-off-by: Jens Freimann <jfrei at linux.vnet.ibm.com>
-Signed-off-by: Christian Borntraeger <borntraeger at de.ibm.com>
-Signed-off-by: Marcelo Tosatti <mtosatti at redhat.com>
-Signed-off-by: Avi Kivity <avi at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/s390/kvm/intercept.c | 20 ++++++++++++--------
- 1 file changed, 12 insertions(+), 8 deletions(-)
-
-diff --git a/arch/s390/kvm/intercept.c b/arch/s390/kvm/intercept.c
-index 0243454..a5f6eff 100644
---- a/arch/s390/kvm/intercept.c
-+++ b/arch/s390/kvm/intercept.c
-@@ -133,13 +133,6 @@ static int handle_stop(struct kvm_vcpu *vcpu)
-
- vcpu->stat.exit_stop_request++;
- spin_lock_bh(&vcpu->arch.local_int.lock);
-- if (vcpu->arch.local_int.action_bits & ACTION_STORE_ON_STOP) {
-- vcpu->arch.local_int.action_bits &= ~ACTION_STORE_ON_STOP;
-- rc = kvm_s390_vcpu_store_status(vcpu,
-- KVM_S390_STORE_STATUS_NOADDR);
-- if (rc >= 0)
-- rc = -EOPNOTSUPP;
-- }
-
- if (vcpu->arch.local_int.action_bits & ACTION_RELOADVCPU_ON_STOP) {
- vcpu->arch.local_int.action_bits &= ~ACTION_RELOADVCPU_ON_STOP;
-@@ -155,7 +148,18 @@ static int handle_stop(struct kvm_vcpu *vcpu)
- rc = -EOPNOTSUPP;
- }
-
-- spin_unlock_bh(&vcpu->arch.local_int.lock);
-+ if (vcpu->arch.local_int.action_bits & ACTION_STORE_ON_STOP) {
-+ vcpu->arch.local_int.action_bits &= ~ACTION_STORE_ON_STOP;
-+ /* store status must be called unlocked. Since local_int.lock
-+ * only protects local_int.* and not guest memory we can give
-+ * up the lock here */
-+ spin_unlock_bh(&vcpu->arch.local_int.lock);
-+ rc = kvm_s390_vcpu_store_status(vcpu,
-+ KVM_S390_STORE_STATUS_NOADDR);
-+ if (rc >= 0)
-+ rc = -EOPNOTSUPP;
-+ } else
-+ spin_unlock_bh(&vcpu->arch.local_int.lock);
- return rc;
- }
-
---
-1.7.9.5
-
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
deleted file mode 100644
index cd494d6..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0007-KVM-s390-Sanitize-fpc-registers-for-KVM_SET_FPU.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 12632a351defb18140a84df1720a363d94991973 Mon Sep 17 00:00:00 2001
-From: Christian Borntraeger <borntraeger at de.ibm.com>
-Date: Mon, 6 Feb 2012 10:59:02 +0100
-Subject: [PATCH 007/117] KVM: s390: Sanitize fpc registers for KVM_SET_FPU
-
-(cherry picked from commit 851755871c1f3184f4124c466e85881f17fa3226)
-
-commit 7eef87dc99e419b1cc051e4417c37e4744d7b661 (KVM: s390: fix
-register setting) added a load of the floating point control register
-to the KVM_SET_FPU path. Lets make sure that the fpc is valid.
-
-Signed-off-by: Christian Borntraeger <borntraeger at de.ibm.com>
-Signed-off-by: Marcelo Tosatti <mtosatti at redhat.com>
-Signed-off-by: Avi Kivity <avi at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/s390/kvm/kvm-s390.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c
-index d1c44573..d3cb86c 100644
---- a/arch/s390/kvm/kvm-s390.c
-+++ b/arch/s390/kvm/kvm-s390.c
-@@ -418,7 +418,7 @@ int kvm_arch_vcpu_ioctl_get_sregs(struct kvm_vcpu *vcpu,
- int kvm_arch_vcpu_ioctl_set_fpu(struct kvm_vcpu *vcpu, struct kvm_fpu *fpu)
- {
- memcpy(&vcpu->arch.guest_fpregs.fprs, &fpu->fprs, sizeof(fpu->fprs));
-- vcpu->arch.guest_fpregs.fpc = fpu->fpc;
-+ vcpu->arch.guest_fpregs.fpc = fpu->fpc & FPC_VALID_MASK;
- restore_fp_regs(&vcpu->arch.guest_fpregs);
- return 0;
- }
---
-1.7.9.5
-
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
deleted file mode 100644
index d0b79e0..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0008-bio-don-t-overflow-in-bio_get_nr_vecs.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From ac72e8c98ddb0c511b506472d9bc5afcf720babc Mon Sep 17 00:00:00 2001
-From: Kent Overstreet <kent.overstreet at gmail.com>
-Date: Wed, 8 Feb 2012 22:07:18 +0100
-Subject: [PATCH 008/117] bio: don't overflow in bio_get_nr_vecs()
-
-commit 5abebfdd02450fa1349daacf242e70b3736581e3 upstream.
-
-There were two places bio_get_nr_vecs() could overflow:
-
-First, it did a left shift to convert from sectors to bytes immediately
-before dividing by PAGE_SIZE. If PAGE_SIZE ever was less than 512 a great
-many things would break, so dividing by PAGE_SIZE >> 9 is safe and will
-generate smaller code too.
-
-The nastier overflow was in the DIV_ROUND_UP() (that's what the code was
-effectively doing, anyways). If n + d overflowed, the whole thing would
-return 0 which breaks things rather effectively.
-
-bio_get_nr_vecs() doesn't claim to give an exact value anyways, so the
-DIV_ROUND_UP() is silly; we could do a straight divide except if a
-device's queue_max_sectors was less than PAGE_SIZE we'd return 0. So we
-just add 1; this should always be safe - things will break badly if
-bio_get_nr_vecs() returns > BIO_MAX_PAGES (bio_alloc() will suddenly start
-failing) but it's queue_max_segments that must guard against this, if
-queue_max_sectors is preventing this from happen things are going to
-explode on architectures with different PAGE_SIZE.
-
-Signed-off-by: Kent Overstreet <koverstreet at google.com>
-Cc: Tejun Heo <tj at kernel.org>
-Acked-by: Valdis Kletnieks <Valdis.Kletnieks at vt.edu>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Jens Axboe <axboe at kernel.dk>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/bio.c | 10 +++-------
- 1 file changed, 3 insertions(+), 7 deletions(-)
-
-diff --git a/fs/bio.c b/fs/bio.c
-index b1fe82c..b980ecd 100644
---- a/fs/bio.c
-+++ b/fs/bio.c
-@@ -505,13 +505,9 @@ EXPORT_SYMBOL(bio_clone);
- int bio_get_nr_vecs(struct block_device *bdev)
- {
- struct request_queue *q = bdev_get_queue(bdev);
-- int nr_pages;
--
-- nr_pages = ((queue_max_sectors(q) << 9) + PAGE_SIZE - 1) >> PAGE_SHIFT;
-- if (nr_pages > queue_max_segments(q))
-- nr_pages = queue_max_segments(q);
--
-- return nr_pages;
-+ return min_t(unsigned,
-+ queue_max_segments(q),
-+ queue_max_sectors(q) / (PAGE_SIZE >> 9) + 1);
- }
- EXPORT_SYMBOL(bio_get_nr_vecs);
-
---
-1.7.9.5
-
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
deleted file mode 100644
index 1be8875..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0009-bio-allocation-failure-due-to-bio_get_nr_vecs.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From a98c14f6d0a745c09fa0ebf22c2ce8913c211d9b Mon Sep 17 00:00:00 2001
-From: Bernd Schubert <bernd.schubert at itwm.fraunhofer.de>
-Date: Fri, 11 May 2012 16:36:44 +0200
-Subject: [PATCH 009/117] bio allocation failure due to bio_get_nr_vecs()
-
-commit f908ee9463b09ddd05e1c1a0111132212dc05fac upstream.
-
-The number of bio_get_nr_vecs() is passed down via bio_alloc() to
-bvec_alloc_bs(), which fails the bio allocation if
-nr_iovecs > BIO_MAX_PAGES. For the underlying caller this causes an
-unexpected bio allocation failure.
-Limiting to queue_max_segments() is not sufficient, as max_segments
-also might be very large.
-
-bvec_alloc_bs(gfp_mask, nr_iovecs, ) => NULL when nr_iovecs > BIO_MAX_PAGES
-bio_alloc_bioset(gfp_mask, nr_iovecs, ...)
-bio_alloc(GFP_NOIO, nvecs)
-xfs_alloc_ioend_bio()
-
-Signed-off-by: Bernd Schubert <bernd.schubert at itwm.fraunhofer.de>
-Signed-off-by: Jens Axboe <axboe at kernel.dk>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/bio.c | 7 ++++++-
- 1 file changed, 6 insertions(+), 1 deletion(-)
-
-diff --git a/fs/bio.c b/fs/bio.c
-index b980ecd..4fc4dbb 100644
---- a/fs/bio.c
-+++ b/fs/bio.c
-@@ -505,9 +505,14 @@ EXPORT_SYMBOL(bio_clone);
- int bio_get_nr_vecs(struct block_device *bdev)
- {
- struct request_queue *q = bdev_get_queue(bdev);
-- return min_t(unsigned,
-+ int nr_pages;
-+
-+ nr_pages = min_t(unsigned,
- queue_max_segments(q),
- queue_max_sectors(q) / (PAGE_SIZE >> 9) + 1);
-+
-+ return min_t(unsigned, nr_pages, BIO_MAX_PAGES);
-+
- }
- EXPORT_SYMBOL(bio_get_nr_vecs);
-
---
-1.7.9.5
-
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
deleted file mode 100644
index 65aff34..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0010-block-fix-buffer-overflow-when-printing-partition-UU.patch
+++ /dev/null
@@ -1,98 +0,0 @@
-From 6a6f5fba154e1400185844d74b953fba440fda63 Mon Sep 17 00:00:00 2001
-From: Tejun Heo <tj at kernel.org>
-Date: Tue, 15 May 2012 08:22:04 +0200
-Subject: [PATCH 010/117] block: fix buffer overflow when printing partition
- UUIDs
-
-commit 05c69d298c96703741cac9a5cbbf6c53bd55a6e2 upstream.
-
-6d1d8050b4bc8 "block, partition: add partition_meta_info to hd_struct"
-added part_unpack_uuid() which assumes that the passed in buffer has
-enough space for sprintfing "%pU" - 37 characters including '\0'.
-
-Unfortunately, b5af921ec0233 "init: add support for root devices
-specified by partition UUID" supplied 33 bytes buffer to the function
-leading to the following panic with stackprotector enabled.
-
- Kernel panic - not syncing: stack-protector: Kernel stack corrupted in: ffffffff81b14c7e
-
- [<ffffffff815e226b>] panic+0xba/0x1c6
- [<ffffffff81b14c7e>] ? printk_all_partitions+0x259/0x26xb
- [<ffffffff810566bb>] __stack_chk_fail+0x1b/0x20
- [<ffffffff81b15c7e>] printk_all_paritions+0x259/0x26xb
- [<ffffffff81aedfe0>] mount_block_root+0x1bc/0x27f
- [<ffffffff81aee0fa>] mount_root+0x57/0x5b
- [<ffffffff81aee23b>] prepare_namespace+0x13d/0x176
- [<ffffffff8107eec0>] ? release_tgcred.isra.4+0x330/0x30
- [<ffffffff81aedd60>] kernel_init+0x155/0x15a
- [<ffffffff81087b97>] ? schedule_tail+0x27/0xb0
- [<ffffffff815f4d24>] kernel_thread_helper+0x5/0x10
- [<ffffffff81aedc0b>] ? start_kernel+0x3c5/0x3c5
- [<ffffffff815f4d20>] ? gs_change+0x13/0x13
-
-Increase the buffer size, remove the dangerous part_unpack_uuid() and
-use snprintf() directly from printk_all_partitions().
-
-Signed-off-by: Tejun Heo <tj at kernel.org>
-Reported-by: Szymon Gruszczynski <sz.gruszczynski at googlemail.com>
-Cc: Will Drewry <wad at chromium.org>
-Signed-off-by: Jens Axboe <axboe at kernel.dk>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- block/genhd.c | 10 ++++++----
- include/linux/genhd.h | 6 ------
- 2 files changed, 6 insertions(+), 10 deletions(-)
-
-diff --git a/block/genhd.c b/block/genhd.c
-index 997afd6..4927476 100644
---- a/block/genhd.c
-+++ b/block/genhd.c
-@@ -744,7 +744,7 @@ void __init printk_all_partitions(void)
- struct hd_struct *part;
- char name_buf[BDEVNAME_SIZE];
- char devt_buf[BDEVT_SIZE];
-- u8 uuid[PARTITION_META_INFO_UUIDLTH * 2 + 1];
-+ char uuid_buf[PARTITION_META_INFO_UUIDLTH * 2 + 5];
-
- /*
- * Don't show empty devices or things that have been
-@@ -763,14 +763,16 @@ void __init printk_all_partitions(void)
- while ((part = disk_part_iter_next(&piter))) {
- bool is_part0 = part == &disk->part0;
-
-- uuid[0] = 0;
-+ uuid_buf[0] = '\0';
- if (part->info)
-- part_unpack_uuid(part->info->uuid, uuid);
-+ snprintf(uuid_buf, sizeof(uuid_buf), "%pU",
-+ part->info->uuid);
-
- printk("%s%s %10llu %s %s", is_part0 ? "" : " ",
- bdevt_str(part_devt(part), devt_buf),
- (unsigned long long)part->nr_sects >> 1,
-- disk_name(disk, part->partno, name_buf), uuid);
-+ disk_name(disk, part->partno, name_buf),
-+ uuid_buf);
- if (is_part0) {
- if (disk->driverfs_dev != NULL &&
- disk->driverfs_dev->driver != NULL)
-diff --git a/include/linux/genhd.h b/include/linux/genhd.h
-index c6f7f6a..4eec461 100644
---- a/include/linux/genhd.h
-+++ b/include/linux/genhd.h
-@@ -222,12 +222,6 @@ static inline void part_pack_uuid(const u8 *uuid_str, u8 *to)
- }
- }
-
--static inline char *part_unpack_uuid(const u8 *uuid, char *out)
--{
-- sprintf(out, "%pU", uuid);
-- return out;
--}
--
- static inline int disk_max_parts(struct gendisk *disk)
- {
- if (disk->flags & GENHD_FL_EXT_DEVT)
---
-1.7.9.5
-
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
deleted file mode 100644
index 8ca8689..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0011-fix-PA1.1-oops-on-boot.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 882770bdde14aed9bf896980f51fe2fc8a55623f Mon Sep 17 00:00:00 2001
-From: James Bottomley <JBottomley at Parallels.com>
-Date: Tue, 15 May 2012 11:04:19 +0100
-Subject: [PATCH 011/117] fix PA1.1 oops on boot
-
-commit 5e185581d7c46ddd33cd9c01106d1fc86efb9376 upstream.
-
-All PA1.1 systems have been oopsing on boot since
-
-commit f311847c2fcebd81912e2f0caf8a461dec28db41
-Author: James Bottomley <James.Bottomley at HansenPartnership.com>
-Date: Wed Dec 22 10:22:11 2010 -0600
-
- parisc: flush pages through tmpalias space
-
-because a PA2.0 instruction was accidentally introduced into the PA1.1 TLB
-insertion interruption path when it was consolidated with the do_alias macro.
-Fix the do_alias macro only to use PA2.0 instructions if compiled for 64 bit.
-Signed-off-by: James Bottomley <JBottomley at Parallels.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/parisc/kernel/entry.S | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/arch/parisc/kernel/entry.S b/arch/parisc/kernel/entry.S
-index 6f05944..5350342 100644
---- a/arch/parisc/kernel/entry.S
-+++ b/arch/parisc/kernel/entry.S
-@@ -581,7 +581,11 @@
- */
- cmpiclr,= 0x01,\tmp,%r0
- ldi (_PAGE_DIRTY|_PAGE_READ|_PAGE_WRITE),\prot
-+#ifdef CONFIG_64BIT
- depd,z \prot,8,7,\prot
-+#else
-+ depw,z \prot,8,7,\prot
-+#endif
- /*
- * OK, it is in the temp alias region, check whether "from" or "to".
- * Check "subtle" note in pacache.S re: r23/r26.
---
-1.7.9.5
-
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
deleted file mode 100644
index a5f6121..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0012-fix-crash-in-flush_icache_page_asm-on-PA1.1.patch
+++ /dev/null
@@ -1,91 +0,0 @@
-From 95093fb411e522ec7a6c33d12863107ba841fe72 Mon Sep 17 00:00:00 2001
-From: John David Anglin <dave.anglin at bell.net>
-Date: Wed, 16 May 2012 10:14:52 +0100
-Subject: [PATCH 012/117] fix crash in flush_icache_page_asm on PA1.1
-
-commit 207f583d7179f707f402c36a7bda5ca1fd03ad5b upstream.
-
-As pointed out by serveral people, PA1.1 only has a type 26 instruction
-meaning that the space register must be explicitly encoded. Not giving an
-explicit space means that the compiler uses the type 24 version which is PA2.0
-only resulting in an illegal instruction crash.
-
-This regression was caused by
-
- commit f311847c2fcebd81912e2f0caf8a461dec28db41
- Author: James Bottomley <James.Bottomley at HansenPartnership.com>
- Date: Wed Dec 22 10:22:11 2010 -0600
-
- parisc: flush pages through tmpalias space
-
-Reported-by: Helge Deller <deller at gmx.de>
-Signed-off-by: John David Anglin <dave.anglin at bell.net>
-Signed-off-by: James Bottomley <JBottomley at Parallels.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/parisc/kernel/pacache.S | 38 ++++++++++++++++++++------------------
- 1 file changed, 20 insertions(+), 18 deletions(-)
-
-diff --git a/arch/parisc/kernel/pacache.S b/arch/parisc/kernel/pacache.S
-index 93ff3d9..5d7218a 100644
---- a/arch/parisc/kernel/pacache.S
-+++ b/arch/parisc/kernel/pacache.S
-@@ -692,7 +692,7 @@ ENTRY(flush_icache_page_asm)
-
- /* Purge any old translation */
-
-- pitlb (%sr0,%r28)
-+ pitlb (%sr4,%r28)
-
- ldil L%icache_stride, %r1
- ldw R%icache_stride(%r1), %r1
-@@ -706,27 +706,29 @@ ENTRY(flush_icache_page_asm)
- sub %r25, %r1, %r25
-
-
--1: fic,m %r1(%r28)
-- fic,m %r1(%r28)
-- fic,m %r1(%r28)
-- fic,m %r1(%r28)
-- fic,m %r1(%r28)
-- fic,m %r1(%r28)
-- fic,m %r1(%r28)
-- fic,m %r1(%r28)
-- fic,m %r1(%r28)
-- fic,m %r1(%r28)
-- fic,m %r1(%r28)
-- fic,m %r1(%r28)
-- fic,m %r1(%r28)
-- fic,m %r1(%r28)
-- fic,m %r1(%r28)
-+ /* fic only has the type 26 form on PA1.1, requiring an
-+ * explicit space specification, so use %sr4 */
-+1: fic,m %r1(%sr4,%r28)
-+ fic,m %r1(%sr4,%r28)
-+ fic,m %r1(%sr4,%r28)
-+ fic,m %r1(%sr4,%r28)
-+ fic,m %r1(%sr4,%r28)
-+ fic,m %r1(%sr4,%r28)
-+ fic,m %r1(%sr4,%r28)
-+ fic,m %r1(%sr4,%r28)
-+ fic,m %r1(%sr4,%r28)
-+ fic,m %r1(%sr4,%r28)
-+ fic,m %r1(%sr4,%r28)
-+ fic,m %r1(%sr4,%r28)
-+ fic,m %r1(%sr4,%r28)
-+ fic,m %r1(%sr4,%r28)
-+ fic,m %r1(%sr4,%r28)
- cmpb,COND(<<) %r28, %r25,1b
-- fic,m %r1(%r28)
-+ fic,m %r1(%sr4,%r28)
-
- sync
- bv %r0(%r2)
-- pitlb (%sr0,%r25)
-+ pitlb (%sr4,%r25)
- .exit
-
- .procend
---
-1.7.9.5
-
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
deleted file mode 100644
index 461025a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0013-fix-panic-on-prefetch-NULL-on-PA7300LC.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From ae4fc9e89e9e7fb510ddbff1c3ca6d41477f45e1 Mon Sep 17 00:00:00 2001
-From: James Bottomley <JBottomley at Parallels.com>
-Date: Wed, 16 May 2012 11:10:27 +0100
-Subject: [PATCH 013/117] fix panic on prefetch(NULL) on PA7300LC
-
-commit b3cb8674811d1851bbf1486a73d62b90c119b994 upstream.
-
-Due to an errata, the PA7300LC generates a TLB miss interruption even on the
-prefetch instruction. This means that prefetch(NULL), which is supposed to be
-a nop on linux actually generates a NULL deref fault. Fix this by testing the
-address of prefetch against NULL before doing the prefetch.
-
-Signed-off-by: James Bottomley <JBottomley at Parallels.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/parisc/include/asm/prefetch.h | 7 ++++++-
- 1 file changed, 6 insertions(+), 1 deletion(-)
-
-diff --git a/arch/parisc/include/asm/prefetch.h b/arch/parisc/include/asm/prefetch.h
-index c5edc60..1ee7c82 100644
---- a/arch/parisc/include/asm/prefetch.h
-+++ b/arch/parisc/include/asm/prefetch.h
-@@ -21,7 +21,12 @@
- #define ARCH_HAS_PREFETCH
- static inline void prefetch(const void *addr)
- {
-- __asm__("ldw 0(%0), %%r0" : : "r" (addr));
-+ __asm__(
-+#ifndef CONFIG_PA20
-+ /* Need to avoid prefetch of NULL on PA7300LC */
-+ " extrw,u,= %0,31,32,%%r0\n"
-+#endif
-+ " ldw 0(%0), %%r0" : : "r" (addr));
- }
-
- /* LDD is a PA2.0 addition. */
---
-1.7.9.5
-
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
deleted file mode 100644
index abfee03..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0014-arch-tile-Kconfig-remove-pointless-M386-test.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 083a3c3d326ad085b05c8606f4ea8594ca6467b8 Mon Sep 17 00:00:00 2001
-From: Chris Metcalf <cmetcalf at tilera.com>
-Date: Tue, 27 Mar 2012 13:47:57 -0400
-Subject: [PATCH 014/117] arch/tile/Kconfig: remove pointless "!M386" test.
-
-commit 8d6951439ef524683057251f1231df232046b6b6 upstream.
-
-Looks like a cut and paste bug from the x86 version.
-
-Signed-off-by: Chris Metcalf <cmetcalf at tilera.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/tile/Kconfig | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/arch/tile/Kconfig b/arch/tile/Kconfig
-index 70a0de4..7c9d2d4 100644
---- a/arch/tile/Kconfig
-+++ b/arch/tile/Kconfig
-@@ -12,7 +12,7 @@ config TILE
- select GENERIC_PENDING_IRQ if SMP
- select GENERIC_IRQ_SHOW
- select SYS_HYPERVISOR
-- select ARCH_HAVE_NMI_SAFE_CMPXCHG if !M386
-+ select ARCH_HAVE_NMI_SAFE_CMPXCHG
-
- # FIXME: investigate whether we need/want these options.
- # select HAVE_IOREMAP_PROT
---
-1.7.9.5
-
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
deleted file mode 100644
index 593e184..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0015-tilegx-enable-SYSCALL_WRAPPERS-support.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 7f297eaca9b90a9be05ebe02c90efca3692136db Mon Sep 17 00:00:00 2001
-From: Chris Metcalf <cmetcalf at tilera.com>
-Date: Fri, 18 May 2012 13:33:24 -0400
-Subject: [PATCH 015/117] tilegx: enable SYSCALL_WRAPPERS support
-
-commit e6d9668e119af44ae5bcd5f1197174531458afe3 upstream.
-
-Some discussion with the glibc mailing lists revealed that this was
-necessary for 64-bit platforms with MIPS-like sign-extension rules
-for 32-bit values. The original symptom was that passing (uid_t)-1 to
-setreuid() was failing in programs linked -pthread because of the "setxid"
-mechanism for passing setxid-type function arguments to the syscall code.
-SYSCALL_WRAPPERS handles ensuring that all syscall arguments end up with
-proper sign-extension and is thus the appropriate fix for this problem.
-
-On other platforms (s390, powerpc, sparc64, and mips) this was fixed
-in 2.6.28.6. The general issue is tracked as CVE-2009-0029.
-
-Signed-off-by: Chris Metcalf <cmetcalf at tilera.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/tile/Kconfig | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/arch/tile/Kconfig b/arch/tile/Kconfig
-index 7c9d2d4..6cb8319 100644
---- a/arch/tile/Kconfig
-+++ b/arch/tile/Kconfig
-@@ -11,6 +11,7 @@ config TILE
- select GENERIC_IRQ_PROBE
- select GENERIC_PENDING_IRQ if SMP
- select GENERIC_IRQ_SHOW
-+ select HAVE_SYSCALL_WRAPPERS if TILEGX
- select SYS_HYPERVISOR
- select ARCH_HAVE_NMI_SAFE_CMPXCHG
-
---
-1.7.9.5
-
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
deleted file mode 100644
index 14de1ba..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0016-mtd-sm_ftl-fix-typo-in-major-number.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 183929ad3fad7588523ae70fa91912196d4697db Mon Sep 17 00:00:00 2001
-From: Maxim Levitsky <maximlevitsky at gmail.com>
-Date: Sat, 17 Mar 2012 20:16:53 +0200
-Subject: [PATCH 016/117] mtd: sm_ftl: fix typo in major number.
-
-commit 452380efbd72d8d41f53ea64c8a6ea1fedc4394d upstream.
-
-major == 0 allocates dynamic major, not major == -1
-
-Signed-off-by: Maxim Levitsky <maximlevitsky at gmail.com>
-Signed-off-by: Artem Bityutskiy <artem.bityutskiy at linux.intel.com>
-Signed-off-by: David Woodhouse <David.Woodhouse at intel.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/mtd/sm_ftl.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/mtd/sm_ftl.c b/drivers/mtd/sm_ftl.c
-index fddb714..a9ff89ff 100644
---- a/drivers/mtd/sm_ftl.c
-+++ b/drivers/mtd/sm_ftl.c
-@@ -1256,7 +1256,7 @@ static void sm_remove_dev(struct mtd_blktrans_dev *dev)
-
- static struct mtd_blktrans_ops sm_ftl_ops = {
- .name = "smblk",
-- .major = -1,
-+ .major = 0,
- .part_bits = SM_FTL_PARTN_BITS,
- .blksize = SM_SECTOR_SIZE,
- .getgeo = sm_getgeo,
---
-1.7.9.5
-
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
deleted file mode 100644
index 58f4fce..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0017-hpsa-Fix-problem-with-MSA2xxx-devices.patch
+++ /dev/null
@@ -1,77 +0,0 @@
-From 3b1c9abc52f8145721d64abf54bf65139554f2be Mon Sep 17 00:00:00 2001
-From: "Stephen M. Cameron" <scameron at beardog.cce.hp.com>
-Date: Thu, 19 Jan 2012 14:01:04 -0600
-Subject: [PATCH 017/117] hpsa: Fix problem with MSA2xxx devices
-
-commit 9bc3711cbb67ac620bf09b4a147cbab45b2c36c0 upstream.
-
-Upgraded firmware on Smart Array P7xx (and some others) made them show up as
-SCSI revision 5 devices and this caused the driver to fail to map MSA2xxx
-logical drives to the correct bus/target/lun. A symptom of this would be that
-the target ID of the logical drives as presented by the external storage array
-is ignored, and all such logical drives are assigned to target zero,
-differentiated only by LUN. Some multipath software reportedly does not deal
-well with this behavior, failing to recognize different paths to the same
-device as such.
-
-Signed-off-by: Stephen M. Cameron <scameron at beardog.cce.hp.com>
-Signed-off-by: Scott Teel <scott.teel at hp.com>
-Signed-off-by: James Bottomley <JBottomley at Parallels.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/scsi/hpsa.c | 34 +++++++++++++++-------------------
- 1 file changed, 15 insertions(+), 19 deletions(-)
-
-diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c
-index 865d452..dc9dea3 100644
---- a/drivers/scsi/hpsa.c
-+++ b/drivers/scsi/hpsa.c
-@@ -1674,30 +1674,26 @@ static void figure_bus_target_lun(struct ctlr_info *h,
-
- if (is_logical_dev_addr_mode(lunaddrbytes)) {
- /* logical device */
-- if (unlikely(is_scsi_rev_5(h))) {
-- /* p1210m, logical drives lun assignments
-- * match SCSI REPORT LUNS data.
-+ lunid = le32_to_cpu(*((__le32 *) lunaddrbytes));
-+ if (is_msa2xxx(h, device)) {
-+ /* msa2xxx way, put logicals on bus 1
-+ * and match target/lun numbers box
-+ * reports.
- */
-- lunid = le32_to_cpu(*((__le32 *) lunaddrbytes));
-- *bus = 0;
-- *target = 0;
-- *lun = (lunid & 0x3fff) + 1;
-+ *bus = 1;
-+ *target = (lunid >> 16) & 0x3fff;
-+ *lun = lunid & 0x00ff;
- } else {
-- /* not p1210m... */
-- lunid = le32_to_cpu(*((__le32 *) lunaddrbytes));
-- if (is_msa2xxx(h, device)) {
-- /* msa2xxx way, put logicals on bus 1
-- * and match target/lun numbers box
-- * reports.
-- */
-- *bus = 1;
-- *target = (lunid >> 16) & 0x3fff;
-- *lun = lunid & 0x00ff;
-+ if (likely(is_scsi_rev_5(h))) {
-+ /* All current smart arrays (circa 2011) */
-+ *bus = 0;
-+ *target = 0;
-+ *lun = (lunid & 0x3fff) + 1;
- } else {
-- /* Traditional smart array way. */
-+ /* Traditional old smart array way. */
- *bus = 0;
-- *lun = 0;
- *target = lunid & 0x3fff;
-+ *lun = 0;
- }
- }
- } else {
---
-1.7.9.5
-
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
deleted file mode 100644
index dc82d8d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0018-SELinux-if-sel_make_bools-errors-don-t-leave-inconsi.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From d5263c321d2e9dcacc4eed438d3dad60c13f95ba Mon Sep 17 00:00:00 2001
-From: Eric Paris <eparis at redhat.com>
-Date: Wed, 4 Apr 2012 13:47:11 -0400
-Subject: [PATCH 018/117] SELinux: if sel_make_bools errors don't leave
- inconsistent state
-
-commit 154c50ca4eb9ae472f50b6a481213e21ead4457d upstream.
-
-We reset the bool names and values array to NULL, but do not reset the
-number of entries in these arrays to 0. If we error out and then get back
-into this function we will walk these NULL pointers based on the belief
-that they are non-zero length.
-
-Signed-off-by: Eric Paris <eparis at redhat.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- security/selinux/selinuxfs.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/security/selinux/selinuxfs.c b/security/selinux/selinuxfs.c
-index f466587..b4f802d 100644
---- a/security/selinux/selinuxfs.c
-+++ b/security/selinux/selinuxfs.c
-@@ -1238,6 +1238,7 @@ static int sel_make_bools(void)
- kfree(bool_pending_names[i]);
- kfree(bool_pending_names);
- kfree(bool_pending_values);
-+ bool_num = 0;
- bool_pending_names = NULL;
- bool_pending_values = NULL;
-
---
-1.7.9.5
-
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
deleted file mode 100644
index 20927de..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0019-cfg80211-warn-if-db.txt-is-empty-with-CONFIG_CFG8021.patch
+++ /dev/null
@@ -1,86 +0,0 @@
-From d9029a9d61ea9f9f8b153d7967365d66229b3874 Mon Sep 17 00:00:00 2001
-From: "Luis R. Rodriguez" <mcgrof at frijolero.org>
-Date: Fri, 23 Mar 2012 07:23:31 -0700
-Subject: [PATCH 019/117] cfg80211: warn if db.txt is empty with
- CONFIG_CFG80211_INTERNAL_REGDB
-
-commit 80007efeff0568375b08faf93c7aad65602cb97e upstream.
-
-It has happened twice now where elaborate troubleshooting has
-undergone on systems where CONFIG_CFG80211_INTERNAL_REGDB [0]
-has been set but yet net/wireless/db.txt was not updated.
-
-Despite the documentation on this it seems system integrators could
-use some more help with this, so throw out a kernel warning at boot time
-when their database is empty.
-
-This does mean that the error-prone system integrator won't likely
-realize the issue until they boot the machine but -- it does not seem
-to make sense to enable a build bug breaking random build testing.
-
-[0] http://wireless.kernel.org/en/developers/Regulatory/CRDA#CONFIG_CFG80211_INTERNAL_REGDB
-
-Cc: Stephen Rothwell <sfr at canb.auug.org.au>
-Cc: Youngsin Lee <youngsin at qualcomm.com>
-Cc: Raja Mani <rmani at qca.qualcomm.com>
-Cc: Senthil Kumar Balasubramanian <senthilb at qca.qualcomm.com>
-Cc: Vipin Mehta <vipimeht at qca.qualcomm.com>
-Cc: yahuan at qca.qualcomm.com
-Cc: jjan at qca.qualcomm.com
-Cc: vthiagar at qca.qualcomm.com
-Cc: henrykim at qualcomm.com
-Cc: jouni at qca.qualcomm.com
-Cc: athiruve at qca.qualcomm.com
-Cc: cjkim at qualcomm.com
-Cc: philipk at qca.qualcomm.com
-Cc: sunnykim at qualcomm.com
-Cc: sskwak at qualcomm.com
-Cc: kkim at qualcomm.com
-Cc: mattbyun at qualcomm.com
-Cc: ryanlee at qualcomm.com
-Cc: simbap at qualcomm.com
-Cc: krislee at qualcomm.com
-Cc: conner at qualcomm.com
-Cc: hojinkim at qualcomm.com
-Cc: honglee at qualcomm.com
-Cc: johnwkim at qualcomm.com
-Cc: jinyong at qca.qualcomm.com
-Signed-off-by: Luis R. Rodriguez <mcgrof at frijolero.org>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/wireless/reg.c | 10 ++++++++++
- 1 file changed, 10 insertions(+)
-
-diff --git a/net/wireless/reg.c b/net/wireless/reg.c
-index 3302c56..c1c99dd 100644
---- a/net/wireless/reg.c
-+++ b/net/wireless/reg.c
-@@ -379,7 +379,15 @@ static void reg_regdb_query(const char *alpha2)
-
- schedule_work(®_regdb_work);
- }
-+
-+/* Feel free to add any other sanity checks here */
-+static void reg_regdb_size_check(void)
-+{
-+ /* We should ideally BUILD_BUG_ON() but then random builds would fail */
-+ WARN_ONCE(!reg_regdb_size, "db.txt is empty, you should update it...");
-+}
- #else
-+static inline void reg_regdb_size_check(void) {}
- static inline void reg_regdb_query(const char *alpha2) {}
- #endif /* CONFIG_CFG80211_INTERNAL_REGDB */
-
-@@ -2236,6 +2244,8 @@ int __init regulatory_init(void)
- spin_lock_init(®_requests_lock);
- spin_lock_init(®_pending_beacons_lock);
-
-+ reg_regdb_size_check();
-+
- cfg80211_regdomain = cfg80211_world_regdom;
-
- user_alpha2[0] = '9';
---
-1.7.9.5
-
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
deleted file mode 100644
index d27b465..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0020-mpt2sas-Fix-for-panic-happening-because-of-improper-.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From b12bc1d8337657ea79d90aecba397eaee36d10f6 Mon Sep 17 00:00:00 2001
-From: "nagalakshmi.nandigama at lsi.com" <nagalakshmi.nandigama at lsi.com>
-Date: Tue, 20 Mar 2012 12:10:01 +0530
-Subject: [PATCH 020/117] mpt2sas: Fix for panic happening because of improper
- memory allocation
-
-commit e42fafc25fa86c61824e8d4c5e7582316415d24f upstream.
-
-The ioc->pfacts member in the IOC structure is getting set to zero
-following a call to _base_get_ioc_facts due to the memset in that routine.
-So if the ioc->pfacts was read after a host reset, there would be a NULL
-pointer dereference. The routine _base_get_ioc_facts is called from context
-of host reset. The problem in _base_get_ioc_facts is the size of
-Mpi2IOCFactsReply is 64, whereas the sizeof "struct mpt2sas_facts" is 60,
-so there is a four byte overflow resulting from the memset.
-
-Also, there is memset in _base_get_port_facts using the incorrect structure,
-it should be "struct mpt2sas_port_facts" instead of Mpi2PortFactsReply.
-
-Signed-off-by: Nagalakshmi Nandigama <nagalakshmi.nandigama at lsi.com>
-Signed-off-by: James Bottomley <JBottomley at Parallels.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/scsi/mpt2sas/mpt2sas_base.c | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/scsi/mpt2sas/mpt2sas_base.c b/drivers/scsi/mpt2sas/mpt2sas_base.c
-index b1ddfef..ac336e1 100644
---- a/drivers/scsi/mpt2sas/mpt2sas_base.c
-+++ b/drivers/scsi/mpt2sas/mpt2sas_base.c
-@@ -3274,7 +3274,7 @@ _base_get_port_facts(struct MPT2SAS_ADAPTER *ioc, int port, int sleep_flag)
- }
-
- pfacts = &ioc->pfacts[port];
-- memset(pfacts, 0, sizeof(Mpi2PortFactsReply_t));
-+ memset(pfacts, 0, sizeof(struct mpt2sas_port_facts));
- pfacts->PortNumber = mpi_reply.PortNumber;
- pfacts->VP_ID = mpi_reply.VP_ID;
- pfacts->VF_ID = mpi_reply.VF_ID;
-@@ -3316,7 +3316,7 @@ _base_get_ioc_facts(struct MPT2SAS_ADAPTER *ioc, int sleep_flag)
- }
-
- facts = &ioc->facts;
-- memset(facts, 0, sizeof(Mpi2IOCFactsReply_t));
-+ memset(facts, 0, sizeof(struct mpt2sas_facts));
- facts->MsgVersion = le16_to_cpu(mpi_reply.MsgVersion);
- facts->HeaderVersion = le16_to_cpu(mpi_reply.HeaderVersion);
- facts->VP_ID = mpi_reply.VP_ID;
-@@ -4193,7 +4193,7 @@ mpt2sas_base_attach(struct MPT2SAS_ADAPTER *ioc)
- goto out_free_resources;
-
- ioc->pfacts = kcalloc(ioc->facts.NumberOfPorts,
-- sizeof(Mpi2PortFactsReply_t), GFP_KERNEL);
-+ sizeof(struct mpt2sas_port_facts), GFP_KERNEL);
- if (!ioc->pfacts) {
- r = -ENOMEM;
- goto out_free_resources;
---
-1.7.9.5
-
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
deleted file mode 100644
index ba58393..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0021-isdn-gigaset-ratelimit-CAPI-message-dumps.patch
+++ /dev/null
@@ -1,87 +0,0 @@
-From cb510e3381f2dda5ad0cdf3519e6eee50ee2081e Mon Sep 17 00:00:00 2001
-From: Tilman Schmidt <tilman at imap.cc>
-Date: Wed, 25 Apr 2012 13:02:19 +0000
-Subject: [PATCH 021/117] isdn/gigaset: ratelimit CAPI message dumps
-
-commit 8e618aad5348b6e6c5a90e8d97ea643197963b20 upstream.
-
-Introduce a global ratelimit for CAPI message dumps to protect
-against possible log flood.
-Drop the ratelimit for ignored messages which is now covered by the
-global one.
-
-Signed-off-by: Tilman Schmidt <tilman at imap.cc>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/isdn/gigaset/capi.c | 22 +++++++++-------------
- 1 file changed, 9 insertions(+), 13 deletions(-)
-
-diff --git a/drivers/isdn/gigaset/capi.c b/drivers/isdn/gigaset/capi.c
-index 6d5ceee..5b80ef7 100644
---- a/drivers/isdn/gigaset/capi.c
-+++ b/drivers/isdn/gigaset/capi.c
-@@ -14,6 +14,7 @@
- #include "gigaset.h"
- #include <linux/proc_fs.h>
- #include <linux/seq_file.h>
-+#include <linux/ratelimit.h>
- #include <linux/isdn/capilli.h>
- #include <linux/isdn/capicmd.h>
- #include <linux/isdn/capiutil.h>
-@@ -223,10 +224,14 @@ get_appl(struct gigaset_capi_ctr *iif, u16 appl)
- static inline void dump_cmsg(enum debuglevel level, const char *tag, _cmsg *p)
- {
- #ifdef CONFIG_GIGASET_DEBUG
-+ /* dump at most 20 messages in 20 secs */
-+ static DEFINE_RATELIMIT_STATE(msg_dump_ratelimit, 20 * HZ, 20);
- _cdebbuf *cdb;
-
- if (!(gigaset_debuglevel & level))
- return;
-+ if (!___ratelimit(&msg_dump_ratelimit, tag))
-+ return;
-
- cdb = capi_cmsg2str(p);
- if (cdb) {
-@@ -2059,12 +2064,6 @@ static void do_reset_b3_req(struct gigaset_capi_ctr *iif,
- }
-
- /*
-- * dump unsupported/ignored messages at most twice per minute,
-- * some apps send those very frequently
-- */
--static unsigned long ignored_msg_dump_time;
--
--/*
- * unsupported CAPI message handler
- */
- static void do_unsupported(struct gigaset_capi_ctr *iif,
-@@ -2073,8 +2072,7 @@ static void do_unsupported(struct gigaset_capi_ctr *iif,
- {
- /* decode message */
- capi_message2cmsg(&iif->acmsg, skb->data);
-- if (printk_timed_ratelimit(&ignored_msg_dump_time, 30 * 1000))
-- dump_cmsg(DEBUG_CMD, __func__, &iif->acmsg);
-+ dump_cmsg(DEBUG_CMD, __func__, &iif->acmsg);
- send_conf(iif, ap, skb, CapiMessageNotSupportedInCurrentState);
- }
-
-@@ -2085,11 +2083,9 @@ static void do_nothing(struct gigaset_capi_ctr *iif,
- struct gigaset_capi_appl *ap,
- struct sk_buff *skb)
- {
-- if (printk_timed_ratelimit(&ignored_msg_dump_time, 30 * 1000)) {
-- /* decode message */
-- capi_message2cmsg(&iif->acmsg, skb->data);
-- dump_cmsg(DEBUG_CMD, __func__, &iif->acmsg);
-- }
-+ /* decode message */
-+ capi_message2cmsg(&iif->acmsg, skb->data);
-+ dump_cmsg(DEBUG_CMD, __func__, &iif->acmsg);
- dev_kfree_skb_any(skb);
- }
-
---
-1.7.9.5
-
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
deleted file mode 100644
index 92a5406..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0022-isdn-gigaset-fix-CAPI-disconnect-B3-handling.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 49aed427d03f5bc84f690900a4a13c52b4c0916c Mon Sep 17 00:00:00 2001
-From: Tilman Schmidt <tilman at imap.cc>
-Date: Wed, 25 Apr 2012 13:02:20 +0000
-Subject: [PATCH 022/117] isdn/gigaset: fix CAPI disconnect B3 handling
-
-commit 62a1cfe052346b96a552b6a9178d412c709711bb upstream.
-
-If DISCONNECT_B3_IND was synthesized because of a DISCONNECT_REQ
-with existing logical connections, the connection state wasn't
-updated accordingly. Also the emitted DISCONNECT_B3_IND message
-wasn't included in the debug log as requested.
-This patch fixes both of these issues.
-
-Signed-off-by: Tilman Schmidt <tilman at imap.cc>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-[bwh: Backported to 3.2: adjust context]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/isdn/gigaset/capi.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/drivers/isdn/gigaset/capi.c b/drivers/isdn/gigaset/capi.c
-index 5b80ef7..fd17bb3 100644
---- a/drivers/isdn/gigaset/capi.c
-+++ b/drivers/isdn/gigaset/capi.c
-@@ -1887,6 +1887,9 @@ static void do_disconnect_req(struct gigaset_capi_ctr *iif,
-
- /* check for active logical connection */
- if (bcs->apconnstate >= APCONN_ACTIVE) {
-+ /* clear it */
-+ bcs->apconnstate = APCONN_SETUP;
-+
- /*
- * emit DISCONNECT_B3_IND with cause 0x3301
- * use separate cmsg structure, as the content of iif->acmsg
-@@ -1911,6 +1914,7 @@ static void do_disconnect_req(struct gigaset_capi_ctr *iif,
- }
- capi_cmsg2message(b3cmsg,
- __skb_put(b3skb, CAPI_DISCONNECT_B3_IND_BASELEN));
-+ dump_cmsg(DEBUG_CMD, __func__, b3cmsg);
- kfree(b3cmsg);
- capi_ctr_handle_message(&iif->ctr, ap->id, b3skb);
- }
---
-1.7.9.5
-
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
deleted file mode 100644
index efbdbbb..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0023-isdn-gigaset-improve-error-handling-querying-firmwar.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From acee45e91a831a741676284dc84513b074705805 Mon Sep 17 00:00:00 2001
-From: Tilman Schmidt <tilman at imap.cc>
-Date: Wed, 25 Apr 2012 13:02:20 +0000
-Subject: [PATCH 023/117] isdn/gigaset: improve error handling querying
- firmware version
-
-commit e055d03dc088a990fe5ea24a2d64033a168da23c upstream.
-
-An out-of-place "OK" response to the "AT+GMR" (get firmware version)
-command turns out to be, more often than not, a delayed response to
-a previous command rather than an actual error, so continue waiting
-for the version number in that case.
-
-Signed-off-by: Tilman Schmidt <tilman at imap.cc>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-[bwh: Backported to 3.2: adjust indentation]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/isdn/gigaset/ev-layer.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/isdn/gigaset/ev-layer.c b/drivers/isdn/gigaset/ev-layer.c
-index 6d12623..e95fac0 100644
---- a/drivers/isdn/gigaset/ev-layer.c
-+++ b/drivers/isdn/gigaset/ev-layer.c
-@@ -190,6 +190,7 @@ struct reply_t gigaset_tab_nocid[] =
- ACT_INIT} },
- {RSP_OK, 121, 121, -1, 0, 0, {ACT_GOTVER,
- ACT_INIT} },
-+{RSP_NONE, 121, 121, -1, 120, 0, {ACT_GETSTRING} },
-
- /* leave dle mode */
- {RSP_INIT, 0, 0, SEQ_DLE0, 201, 5, {0}, "^SDLE=0\r"},
-@@ -1314,8 +1315,9 @@ static void do_action(int action, struct cardstate *cs,
- s = ev->ptr;
-
- if (!strcmp(s, "OK")) {
-+ /* OK without version string: assume old response */
- *p_genresp = 1;
-- *p_resp_code = RSP_ERROR;
-+ *p_resp_code = RSP_NONE;
- break;
- }
-
---
-1.7.9.5
-
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
deleted file mode 100644
index 52b1d96..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0024-KEYS-Use-the-compat-keyctl-syscall-wrapper-on-Sparc6.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From ab5b15d0550f35ed49bb445fe04092d8b6fac542 Mon Sep 17 00:00:00 2001
-From: David Howells <dhowells at redhat.com>
-Date: Fri, 11 May 2012 10:56:56 +0100
-Subject: [PATCH 024/117] KEYS: Use the compat keyctl() syscall wrapper on
- Sparc64 for Sparc32 compat
-
-commit 45de6767dc51358a188f75dc4ad9dfddb7fb9480 upstream.
-
-Use the 32-bit compat keyctl() syscall wrapper on Sparc64 for Sparc32 binary
-compatibility.
-
-Without this, keyctl(KEYCTL_INSTANTIATE_IOV) is liable to malfunction as it
-uses an iovec array read from userspace - though the kernel should survive this
-as it checks pointers and sizes anyway.
-
-I think all the other keyctl() function should just work, provided (a) the top
-32-bits of each 64-bit argument register are cleared prior to invoking the
-syscall routine, and the 32-bit address space is right at the 0-end of the
-64-bit address space. Most of the arguments are 32-bit anyway, and so for
-those clearing is not required.
-
-Signed-off-by: David Howells <dhowells at redhat.com
-cc: "David S. Miller" <davem at davemloft.net>
-cc: sparclinux at vger.kernel.org
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/sparc/Kconfig | 3 +++
- arch/sparc/kernel/systbls_64.S | 2 +-
- 2 files changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig
-index f92602e..f210d51 100644
---- a/arch/sparc/Kconfig
-+++ b/arch/sparc/Kconfig
-@@ -583,6 +583,9 @@ config SYSVIPC_COMPAT
- depends on COMPAT && SYSVIPC
- default y
-
-+config KEYS_COMPAT
-+ def_bool y if COMPAT && KEYS
-+
- endmenu
-
- source "net/Kconfig"
-diff --git a/arch/sparc/kernel/systbls_64.S b/arch/sparc/kernel/systbls_64.S
-index db86b1a..3a58e0d 100644
---- a/arch/sparc/kernel/systbls_64.S
-+++ b/arch/sparc/kernel/systbls_64.S
-@@ -74,7 +74,7 @@ sys_call_table32:
- .word sys_timer_delete, compat_sys_timer_create, sys_ni_syscall, compat_sys_io_setup, sys_io_destroy
- /*270*/ .word sys32_io_submit, sys_io_cancel, compat_sys_io_getevents, sys32_mq_open, sys_mq_unlink
- .word compat_sys_mq_timedsend, compat_sys_mq_timedreceive, compat_sys_mq_notify, compat_sys_mq_getsetattr, compat_sys_waitid
--/*280*/ .word sys32_tee, sys_add_key, sys_request_key, sys_keyctl, compat_sys_openat
-+/*280*/ .word sys32_tee, sys_add_key, sys_request_key, compat_sys_keyctl, compat_sys_openat
- .word sys_mkdirat, sys_mknodat, sys_fchownat, compat_sys_futimesat, compat_sys_fstatat64
- /*290*/ .word sys_unlinkat, sys_renameat, sys_linkat, sys_symlinkat, sys_readlinkat
- .word sys_fchmodat, sys_faccessat, compat_sys_pselect6, compat_sys_ppoll, sys_unshare
---
-1.7.9.5
-
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
deleted file mode 100644
index fe3c1e7..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0025-IB-core-Fix-mismatch-between-locked-and-pinned-pages.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From a107ab4ce96a6243eca41ca139acc033a8be253b Mon Sep 17 00:00:00 2001
-From: Yishai Hadas <yishaih at mellanox.com>
-Date: Thu, 10 May 2012 23:28:05 +0300
-Subject: [PATCH 025/117] IB/core: Fix mismatch between locked and pinned
- pages
-
-commit c4870eb874ac16dccef40e1bc7a002c7e9156adc upstream.
-
-Commit bc3e53f682d9 ("mm: distinguish between mlocked and pinned
-pages") introduced a separate counter for pinned pages and used it in
-the IB stack. However, in ib_umem_get() the pinned counter is
-incremented, but ib_umem_release() wrongly decrements the locked
-counter. Fix this.
-
-Signed-off-by: Yishai Hadas <yishaih at mellanox.com>
-Reviewed-by: Christoph Lameter <cl at linux.com>
-Signed-off-by: Roland Dreier <roland at purestorage.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/infiniband/core/umem.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/infiniband/core/umem.c b/drivers/infiniband/core/umem.c
-index 71f0c0f..a841123 100644
---- a/drivers/infiniband/core/umem.c
-+++ b/drivers/infiniband/core/umem.c
-@@ -269,7 +269,7 @@ void ib_umem_release(struct ib_umem *umem)
- } else
- down_write(&mm->mmap_sem);
-
-- current->mm->locked_vm -= diff;
-+ current->mm->pinned_vm -= diff;
- up_write(&mm->mmap_sem);
- mmput(mm);
- kfree(umem);
---
-1.7.9.5
-
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
deleted file mode 100644
index 027fb88..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0026-regulator-core-Release-regulator-regulator-supplies-.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 675478b722ec5e21b9e1db453e3c59ced85b2008 Mon Sep 17 00:00:00 2001
-From: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Date: Sun, 13 May 2012 18:35:56 +0100
-Subject: [PATCH 026/117] regulator: core: Release regulator-regulator
- supplies on error
-
-commit e81dba85c6388dfabcb76cbc2b8bd02836a53ae5 upstream.
-
-If we fail while registering a regulator make sure we release the supply
-for the regulator if there is one.
-
-Signed-off-by: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Acked-by: Liam Girdwood <lrg at ti.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/regulator/core.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c
-index 938398f..6ec610c 100644
---- a/drivers/regulator/core.c
-+++ b/drivers/regulator/core.c
-@@ -2765,6 +2765,8 @@ unset_supplies:
- unset_regulator_supplies(rdev);
-
- scrub:
-+ if (rdev->supply)
-+ regulator_put(rdev->supply);
- kfree(rdev->constraints);
- device_unregister(&rdev->dev);
- /* device core frees rdev */
---
-1.7.9.5
-
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
deleted file mode 100644
index 4ab581b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0027-iommu-Fix-off-by-one-in-dmar_get_fault_reason.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 3dd0f718e41c8a6e580d3c11f8153ffd7ddeacde Mon Sep 17 00:00:00 2001
-From: Dan Carpenter <dan.carpenter at oracle.com>
-Date: Sun, 13 May 2012 20:09:38 +0300
-Subject: [PATCH 027/117] iommu: Fix off by one in dmar_get_fault_reason()
-
-commit fefe1ed1398b81e3fadc92d11d91162d343c8836 upstream.
-
-fault_reason - 0x20 == ARRAY_SIZE(irq_remap_fault_reasons) is
-one past the end of the array.
-
-Signed-off-by: Dan Carpenter <dan.carpenter at oracle.com>
-Cc: Joerg Roedel <joerg.roedel at amd.com>
-Cc: Youquan Song <youquan.song at intel.com>
-Cc: walter harms <wharms at bfs.de>
-Cc: Suresh Siddha <suresh.b.siddha at intel.com>
-Link: http://lkml.kernel.org/r/20120513170938.GA4280@elgon.mountain
-Signed-off-by: Ingo Molnar <mingo at kernel.org>
-[bwh: Backported to 3.2: s/irq_remap_fault_reasons/intr_remap_fault_reasons/]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/iommu/dmar.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/iommu/dmar.c b/drivers/iommu/dmar.c
-index 35c1e17..97b2e21 100644
---- a/drivers/iommu/dmar.c
-+++ b/drivers/iommu/dmar.c
-@@ -1056,8 +1056,8 @@ static const char *intr_remap_fault_reasons[] =
-
- const char *dmar_get_fault_reason(u8 fault_reason, int *fault_type)
- {
-- if (fault_reason >= 0x20 && (fault_reason <= 0x20 +
-- ARRAY_SIZE(intr_remap_fault_reasons))) {
-+ if (fault_reason >= 0x20 && (fault_reason - 0x20 <
-+ ARRAY_SIZE(intr_remap_fault_reasons))) {
- *fault_type = INTR_REMAP;
- return intr_remap_fault_reasons[fault_reason - 0x20];
- } else if (fault_reason < ARRAY_SIZE(dma_remap_fault_reasons)) {
---
-1.7.9.5
-
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
deleted file mode 100644
index 9fde99c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0028-RDMA-cxgb4-Always-wake-up-waiters-in-c4iw_peer_abort.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From e8cefa61ecf62e7ec98658843627df00696699d5 Mon Sep 17 00:00:00 2001
-From: Steve Wise <swise at opengridcomputing.com>
-Date: Fri, 27 Apr 2012 09:59:16 -0500
-Subject: [PATCH 028/117] RDMA/cxgb4: Always wake up waiters in
- c4iw_peer_abort_intr()
-
-commit 0f1dcfae6bc5563424346ad3a03282b8235a4c33 upstream.
-
-This fixes a race where an ingress abort fails to wake up the thread
-blocked in rdma_init() causing the app to hang.
-
-Signed-off-by: Steve Wise <swise at opengridcomputing.com>
-Signed-off-by: Roland Dreier <roland at purestorage.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/infiniband/hw/cxgb4/cm.c | 5 +----
- 1 file changed, 1 insertion(+), 4 deletions(-)
-
-diff --git a/drivers/infiniband/hw/cxgb4/cm.c b/drivers/infiniband/hw/cxgb4/cm.c
-index 0747004..151334c 100644
---- a/drivers/infiniband/hw/cxgb4/cm.c
-+++ b/drivers/infiniband/hw/cxgb4/cm.c
-@@ -2725,11 +2725,8 @@ static int peer_abort_intr(struct c4iw_dev *dev, struct sk_buff *skb)
-
- /*
- * Wake up any threads in rdma_init() or rdma_fini().
-- * However, this is not needed if com state is just
-- * MPA_REQ_SENT
- */
-- if (ep->com.state != MPA_REQ_SENT)
-- c4iw_wake_up(&ep->com.wr_wait, -ECONNRESET);
-+ c4iw_wake_up(&ep->com.wr_wait, -ECONNRESET);
- sched(dev, skb);
- return 0;
- }
---
-1.7.9.5
-
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
deleted file mode 100644
index 99be4e3..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0029-RDMA-cxgb4-Drop-peer_abort-when-no-endpoint-found.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 6ccdd0ede34681b1bdda91a5735e700274db9e5c Mon Sep 17 00:00:00 2001
-From: Steve Wise <swise at opengridcomputing.com>
-Date: Mon, 30 Apr 2012 15:31:29 -0500
-Subject: [PATCH 029/117] RDMA/cxgb4: Drop peer_abort when no endpoint found
-
-commit 14b9222808bb8bfefc71f72bc0dbdcf3b2f0140f upstream.
-
-Log a warning and drop the abort message. Otherwise we will do a
-bogus wake_up() and crash.
-
-Signed-off-by: Steve Wise <swise at opengridcomputing.com>
-Signed-off-by: Roland Dreier <roland at purestorage.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/infiniband/hw/cxgb4/cm.c | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-diff --git a/drivers/infiniband/hw/cxgb4/cm.c b/drivers/infiniband/hw/cxgb4/cm.c
-index 151334c..2e6a538 100644
---- a/drivers/infiniband/hw/cxgb4/cm.c
-+++ b/drivers/infiniband/hw/cxgb4/cm.c
-@@ -2714,6 +2714,12 @@ static int peer_abort_intr(struct c4iw_dev *dev, struct sk_buff *skb)
- unsigned int tid = GET_TID(req);
-
- ep = lookup_tid(t, tid);
-+ if (!ep) {
-+ printk(KERN_WARNING MOD
-+ "Abort on non-existent endpoint, tid %d\n", tid);
-+ kfree_skb(skb);
-+ return 0;
-+ }
- if (is_neg_adv_abort(req->status)) {
- PDBG("%s neg_adv_abort ep %p tid %u\n", __func__, ep,
- ep->hwtid);
---
-1.7.9.5
-
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
deleted file mode 100644
index bd7759f..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0030-s390-pfault-fix-task-state-race.patch
+++ /dev/null
@@ -1,82 +0,0 @@
-From f292f8180fb1ab073d5e88859f3d05608fa1fbe7 Mon Sep 17 00:00:00 2001
-From: Heiko Carstens <heiko.carstens at de.ibm.com>
-Date: Wed, 9 May 2012 09:37:30 +0200
-Subject: [PATCH 030/117] s390/pfault: fix task state race
-
-commit d5e50a51ccbda36b379aba9d1131a852eb908dda upstream.
-
-When setting the current task state to TASK_UNINTERRUPTIBLE this can
-race with a different cpu. The other cpu could set the task state after
-it inspected it (while it was still TASK_RUNNING) to TASK_RUNNING which
-would change the state from TASK_UNINTERRUPTIBLE to TASK_RUNNING again.
-
-This race was always present in the pfault interrupt code but didn't
-cause anything harmful before commit f2db2e6c "[S390] pfault: cpu hotplug
-vs missing completion interrupts" which relied on the fact that after
-setting the task state to TASK_UNINTERRUPTIBLE the task would really
-sleep.
-Since this is not necessarily the case the result may be a list corruption
-of the pfault_list or, as observed, a use-after-free bug while trying to
-access the task_struct of a task which terminated itself already.
-
-To fix this, we need to get a reference of the affected task when receiving
-the initial pfault interrupt and add special handling if we receive yet
-another initial pfault interrupt when the task is already enqueued in the
-pfault list.
-
-Signed-off-by: Heiko Carstens <heiko.carstens at de.ibm.com>
-Reviewed-by: Martin Schwidefsky <schwidefsky at de.ibm.com>
-Signed-off-by: Martin Schwidefsky <schwidefsky at de.ibm.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/s390/mm/fault.c | 14 ++++++++++++--
- 1 file changed, 12 insertions(+), 2 deletions(-)
-
-diff --git a/arch/s390/mm/fault.c b/arch/s390/mm/fault.c
-index c7f0fbc..b28aaa4 100644
---- a/arch/s390/mm/fault.c
-+++ b/arch/s390/mm/fault.c
-@@ -583,6 +583,7 @@ static void pfault_interrupt(unsigned int ext_int_code,
- tsk->thread.pfault_wait = 0;
- list_del(&tsk->thread.list);
- wake_up_process(tsk);
-+ put_task_struct(tsk);
- } else {
- /* Completion interrupt was faster than initial
- * interrupt. Set pfault_wait to -1 so the initial
-@@ -597,14 +598,22 @@ static void pfault_interrupt(unsigned int ext_int_code,
- put_task_struct(tsk);
- } else {
- /* signal bit not set -> a real page is missing. */
-- if (tsk->thread.pfault_wait == -1) {
-+ if (tsk->thread.pfault_wait == 1) {
-+ /* Already on the list with a reference: put to sleep */
-+ set_task_state(tsk, TASK_UNINTERRUPTIBLE);
-+ set_tsk_need_resched(tsk);
-+ } else if (tsk->thread.pfault_wait == -1) {
- /* Completion interrupt was faster than the initial
- * interrupt (pfault_wait == -1). Set pfault_wait
- * back to zero and exit. */
- tsk->thread.pfault_wait = 0;
- } else {
- /* Initial interrupt arrived before completion
-- * interrupt. Let the task sleep. */
-+ * interrupt. Let the task sleep.
-+ * An extra task reference is needed since a different
-+ * cpu may set the task state to TASK_RUNNING again
-+ * before the scheduler is reached. */
-+ get_task_struct(tsk);
- tsk->thread.pfault_wait = 1;
- list_add(&tsk->thread.list, &pfault_list);
- set_task_state(tsk, TASK_UNINTERRUPTIBLE);
-@@ -629,6 +638,7 @@ static int __cpuinit pfault_cpu_notify(struct notifier_block *self,
- list_del(&thread->list);
- tsk = container_of(thread, struct task_struct, thread);
- wake_up_process(tsk);
-+ put_task_struct(tsk);
- }
- spin_unlock_irq(&pfault_lock);
- break;
---
-1.7.9.5
-
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
deleted file mode 100644
index 000d1dc..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0031-isci-fix-oem-parameter-validation-on-single-controll.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 51945640120dea3c9b3a0207bc864138c6c1c8a8 Mon Sep 17 00:00:00 2001
-From: Dan Williams <dan.j.williams at intel.com>
-Date: Mon, 30 Apr 2012 11:57:44 -0700
-Subject: [PATCH 031/117] isci: fix oem parameter validation on single
- controller skus
-
-commit fc25f79af321c01a739150ba2c09435cf977a63d upstream.
-
-OEM parameters [1] are parsed from the platform option-rom / efi
-driver. By default the driver was validating the parameters for the
-dual-controller case, but in single-controller case only the first set
-of parameters may be valid.
-
-Limit the validation to the number of actual controllers detected
-otherwise the driver may fail to parse the valid parameters leading to
-driver-load or runtime failures.
-
-[1] the platform specific set of phy address, configuration,and analog
- tuning values
-
-[stable v3.0+]
-Reported-by: Dave Jiang <dave.jiang at intel.com>
-Tested-by: Dave Jiang <dave.jiang at intel.com>
-Signed-off-by: Dan Williams <dan.j.williams at intel.com>
-[bwh: Backported to 3.2: adjust context]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/scsi/isci/init.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/scsi/isci/init.c b/drivers/scsi/isci/init.c
-index a97edab..83d08b6 100644
---- a/drivers/scsi/isci/init.c
-+++ b/drivers/scsi/isci/init.c
-@@ -465,7 +465,7 @@ static int __devinit isci_pci_probe(struct pci_dev *pdev, const struct pci_devic
- if (!orom)
- orom = isci_request_oprom(pdev);
-
-- for (i = 0; orom && i < ARRAY_SIZE(orom->ctrl); i++) {
-+ for (i = 0; orom && i < num_controllers(pdev); i++) {
- if (sci_oem_parameters_validate(&orom->ctrl[i])) {
- dev_warn(&pdev->dev,
- "[%d]: invalid oem parameters detected, falling back to firmware\n", i);
---
-1.7.9.5
-
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
deleted file mode 100644
index 231e430..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0032-Fix-blocking-allocations-called-very-early-during-bo.patch
+++ /dev/null
@@ -1,69 +0,0 @@
-From 193433aeaf9380a822cd4bf7f5777e70b2e86550 Mon Sep 17 00:00:00 2001
-From: Linus Torvalds <torvalds at linux-foundation.org>
-Date: Mon, 21 May 2012 12:52:42 -0700
-Subject: [PATCH 032/117] Fix blocking allocations called very early during
- bootup
-
-commit 31a67102f4762df5544bc2dfb34a931233d2a5b2 upstream.
-
-During early boot, when the scheduler hasn't really been fully set up,
-we really can't do blocking allocations because with certain (dubious)
-configurations the "might_resched()" calls can actually result in
-scheduling events.
-
-We could just make such users always use GFP_ATOMIC, but quite often the
-code that does the allocation isn't really aware of the fact that the
-scheduler isn't up yet, and forcing that kind of random knowledge on the
-initialization code is just annoying and not good for anybody.
-
-And we actually have a the 'gfp_allowed_mask' exactly for this reason:
-it's just that the kernel init sequence happens to set it to allow
-blocking allocations much too early.
-
-So move the 'gfp_allowed_mask' initialization from 'start_kernel()'
-(which is some of the earliest init code, and runs with preemption
-disabled for good reasons) into 'kernel_init()'. kernel_init() is run
-in the newly created thread that will become the 'init' process, as
-opposed to the early startup code that runs within the context of what
-will be the first idle thread.
-
-So by the time we reach 'kernel_init()', we know that the scheduler must
-be at least limping along, because we've already scheduled from the idle
-thread into the init thread.
-
-Reported-by: Steven Rostedt <rostedt at goodmis.org>
-Cc: David Rientjes <rientjes at google.com>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- init/main.c | 7 ++++---
- 1 file changed, 4 insertions(+), 3 deletions(-)
-
-diff --git a/init/main.c b/init/main.c
-index 217ed23..cb08fea2 100644
---- a/init/main.c
-+++ b/init/main.c
-@@ -563,9 +563,6 @@ asmlinkage void __init start_kernel(void)
- early_boot_irqs_disabled = false;
- local_irq_enable();
-
-- /* Interrupts are enabled now so all GFP allocations are safe. */
-- gfp_allowed_mask = __GFP_BITS_MASK;
--
- kmem_cache_init_late();
-
- /*
-@@ -798,6 +795,10 @@ static int __init kernel_init(void * unused)
- * Wait until kthreadd is all set-up.
- */
- wait_for_completion(&kthreadd_done);
-+
-+ /* Now the scheduler is fully set up and can do blocking allocations */
-+ gfp_allowed_mask = __GFP_BITS_MASK;
-+
- /*
- * init can allocate pages on any node
- */
---
-1.7.9.5
-
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
deleted file mode 100644
index e496eb2..0000000
--- 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
+++ /dev/null
@@ -1,109 +0,0 @@
-From 078dda1f3c0c180fc5d408f9f087752a0afbed3f Mon Sep 17 00:00:00 2001
-From: Linus Torvalds <torvalds at linux-foundation.org>
-Date: Mon, 21 May 2012 16:06:20 -0700
-Subject: [PATCH 033/117] vfs: make AIO use the proper rw_verify_area() area
- helpers
-
-commit a70b52ec1aaeaf60f4739edb1b422827cb6f3893 upstream.
-
-We had for some reason overlooked the AIO interface, and it didn't use
-the proper rw_verify_area() helper function that checks (for example)
-mandatory locking on the file, and that the size of the access doesn't
-cause us to overflow the provided offset limits etc.
-
-Instead, AIO did just the security_file_permission() thing (that
-rw_verify_area() also does) directly.
-
-This fixes it to do all the proper helper functions, which not only
-means that now mandatory file locking works with AIO too, we can
-actually remove lines of code.
-
-Reported-by: Manish Honap <manish_honap_vit at yahoo.co.in>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/aio.c | 30 ++++++++++++++----------------
- 1 file changed, 14 insertions(+), 16 deletions(-)
-
-diff --git a/fs/aio.c b/fs/aio.c
-index b9d64d8..3b65ee7 100644
---- a/fs/aio.c
-+++ b/fs/aio.c
-@@ -1477,6 +1477,10 @@ static ssize_t aio_setup_vectored_rw(int type, struct kiocb *kiocb, bool compat)
- if (ret < 0)
- goto out;
-
-+ ret = rw_verify_area(type, kiocb->ki_filp, &kiocb->ki_pos, ret);
-+ if (ret < 0)
-+ goto out;
-+
- kiocb->ki_nr_segs = kiocb->ki_nbytes;
- kiocb->ki_cur_seg = 0;
- /* ki_nbytes/left now reflect bytes instead of segs */
-@@ -1488,11 +1492,17 @@ out:
- return ret;
- }
-
--static ssize_t aio_setup_single_vector(struct kiocb *kiocb)
-+static ssize_t aio_setup_single_vector(int type, struct file * file, struct kiocb *kiocb)
- {
-+ int bytes;
-+
-+ bytes = rw_verify_area(type, file, &kiocb->ki_pos, kiocb->ki_left);
-+ if (bytes < 0)
-+ return bytes;
-+
- kiocb->ki_iovec = &kiocb->ki_inline_vec;
- kiocb->ki_iovec->iov_base = kiocb->ki_buf;
-- kiocb->ki_iovec->iov_len = kiocb->ki_left;
-+ kiocb->ki_iovec->iov_len = bytes;
- kiocb->ki_nr_segs = 1;
- kiocb->ki_cur_seg = 0;
- return 0;
-@@ -1517,10 +1527,7 @@ static ssize_t aio_setup_iocb(struct kiocb *kiocb, bool compat)
- if (unlikely(!access_ok(VERIFY_WRITE, kiocb->ki_buf,
- kiocb->ki_left)))
- break;
-- ret = security_file_permission(file, MAY_READ);
-- if (unlikely(ret))
-- break;
-- ret = aio_setup_single_vector(kiocb);
-+ ret = aio_setup_single_vector(READ, file, kiocb);
- if (ret)
- break;
- ret = -EINVAL;
-@@ -1535,10 +1542,7 @@ static ssize_t aio_setup_iocb(struct kiocb *kiocb, bool compat)
- if (unlikely(!access_ok(VERIFY_READ, kiocb->ki_buf,
- kiocb->ki_left)))
- break;
-- ret = security_file_permission(file, MAY_WRITE);
-- if (unlikely(ret))
-- break;
-- ret = aio_setup_single_vector(kiocb);
-+ ret = aio_setup_single_vector(WRITE, file, kiocb);
- if (ret)
- break;
- ret = -EINVAL;
-@@ -1549,9 +1553,6 @@ static ssize_t aio_setup_iocb(struct kiocb *kiocb, bool compat)
- ret = -EBADF;
- if (unlikely(!(file->f_mode & FMODE_READ)))
- break;
-- ret = security_file_permission(file, MAY_READ);
-- if (unlikely(ret))
-- break;
- ret = aio_setup_vectored_rw(READ, kiocb, compat);
- if (ret)
- break;
-@@ -1563,9 +1564,6 @@ static ssize_t aio_setup_iocb(struct kiocb *kiocb, bool compat)
- ret = -EBADF;
- if (unlikely(!(file->f_mode & FMODE_WRITE)))
- break;
-- ret = security_file_permission(file, MAY_WRITE);
-- if (unlikely(ret))
-- break;
- ret = aio_setup_vectored_rw(WRITE, kiocb, compat);
- if (ret)
- break;
---
-1.7.9.5
-
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
deleted file mode 100644
index 2539418..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0034-docs-update-HOWTO-for-2.6.x-3.x-versioning.patch
+++ /dev/null
@@ -1,100 +0,0 @@
-From d2c7de1fefbc917e3731bf69e18b553b3c7a165f Mon Sep 17 00:00:00 2001
-From: Kees Cook <keescook at chromium.org>
-Date: Wed, 18 Apr 2012 23:16:45 -0700
-Subject: [PATCH 034/117] docs: update HOWTO for 2.6.x -> 3.x versioning
-
-commit 591bfc6bf9e5e25e464fd4c87d64afd5135667c4 upstream.
-
-The HOWTO document needed updating for the new kernel versioning. The
-git URI for -next was updated as well.
-
-Signed-off-by: Kees Cook <keescook at chromium.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- Documentation/HOWTO | 32 ++++++++++++++++----------------
- 1 file changed, 16 insertions(+), 16 deletions(-)
-
-diff --git a/Documentation/HOWTO b/Documentation/HOWTO
-index f7ade3b..59c080f 100644
---- a/Documentation/HOWTO
-+++ b/Documentation/HOWTO
-@@ -218,16 +218,16 @@ The development process
- Linux kernel development process currently consists of a few different
- main kernel "branches" and lots of different subsystem-specific kernel
- branches. These different branches are:
-- - main 2.6.x kernel tree
-- - 2.6.x.y -stable kernel tree
-- - 2.6.x -git kernel patches
-+ - main 3.x kernel tree
-+ - 3.x.y -stable kernel tree
-+ - 3.x -git kernel patches
- - subsystem specific kernel trees and patches
-- - the 2.6.x -next kernel tree for integration tests
-+ - the 3.x -next kernel tree for integration tests
-
--2.6.x kernel tree
-+3.x kernel tree
- -----------------
--2.6.x kernels are maintained by Linus Torvalds, and can be found on
--kernel.org in the pub/linux/kernel/v2.6/ directory. Its development
-+3.x kernels are maintained by Linus Torvalds, and can be found on
-+kernel.org in the pub/linux/kernel/v3.x/ directory. Its development
- process is as follows:
- - As soon as a new kernel is released a two weeks window is open,
- during this period of time maintainers can submit big diffs to
-@@ -262,20 +262,20 @@ mailing list about kernel releases:
- released according to perceived bug status, not according to a
- preconceived timeline."
-
--2.6.x.y -stable kernel tree
-+3.x.y -stable kernel tree
- ---------------------------
--Kernels with 4-part versions are -stable kernels. They contain
-+Kernels with 3-part versions are -stable kernels. They contain
- relatively small and critical fixes for security problems or significant
--regressions discovered in a given 2.6.x kernel.
-+regressions discovered in a given 3.x kernel.
-
- This is the recommended branch for users who want the most recent stable
- kernel and are not interested in helping test development/experimental
- versions.
-
--If no 2.6.x.y kernel is available, then the highest numbered 2.6.x
-+If no 3.x.y kernel is available, then the highest numbered 3.x
- kernel is the current stable kernel.
-
--2.6.x.y are maintained by the "stable" team <stable at vger.kernel.org>, and
-+3.x.y are maintained by the "stable" team <stable at vger.kernel.org>, and
- are released as needs dictate. The normal release period is approximately
- two weeks, but it can be longer if there are no pressing problems. A
- security-related problem, instead, can cause a release to happen almost
-@@ -285,7 +285,7 @@ The file Documentation/stable_kernel_rules.txt in the kernel tree
- documents what kinds of changes are acceptable for the -stable tree, and
- how the release process works.
-
--2.6.x -git patches
-+3.x -git patches
- ------------------
- These are daily snapshots of Linus' kernel tree which are managed in a
- git repository (hence the name.) These patches are usually released
-@@ -317,13 +317,13 @@ revisions to it, and maintainers can mark patches as under review,
- accepted, or rejected. Most of these patchwork sites are listed at
- http://patchwork.kernel.org/.
-
--2.6.x -next kernel tree for integration tests
-+3.x -next kernel tree for integration tests
- ---------------------------------------------
--Before updates from subsystem trees are merged into the mainline 2.6.x
-+Before updates from subsystem trees are merged into the mainline 3.x
- tree, they need to be integration-tested. For this purpose, a special
- testing repository exists into which virtually all subsystem trees are
- pulled on an almost daily basis:
-- http://git.kernel.org/?p=linux/kernel/git/sfr/linux-next.git
-+ http://git.kernel.org/?p=linux/kernel/git/next/linux-next.git
- http://linux.f-seidel.de/linux-next/pmwiki/
-
- This way, the -next kernel gives a summary outlook onto what will be
---
-1.7.9.5
-
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
deleted file mode 100644
index 0286930..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0035-drivers-staging-comedi-comedi_fops.c-add-missing-vfr.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From bf21ec2ca510b5e8d017ea1177ffa78a2fec5b93 Mon Sep 17 00:00:00 2001
-From: Julia Lawall <Julia.Lawall at lip6.fr>
-Date: Sun, 22 Apr 2012 13:37:09 +0200
-Subject: [PATCH 035/117] drivers/staging/comedi/comedi_fops.c: add missing
- vfree
-
-commit abae41e6438b798e046d721b6ccdd55b4a398170 upstream.
-
-aux_free is freed on all other exits from the function. By removing the
-return, we can benefit from the vfree already at the end of the function.
-
-Signed-off-by: Julia Lawall <Julia.Lawall at lip6.fr>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/staging/comedi/comedi_fops.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/staging/comedi/comedi_fops.c b/drivers/staging/comedi/comedi_fops.c
-index 5e78c77..4ad2c0e 100644
---- a/drivers/staging/comedi/comedi_fops.c
-+++ b/drivers/staging/comedi/comedi_fops.c
-@@ -280,7 +280,7 @@ static int do_devconfig_ioctl(struct comedi_device *dev,
- if (ret == 0) {
- if (!try_module_get(dev->driver->module)) {
- comedi_device_detach(dev);
-- return -ENOSYS;
-+ ret = -ENOSYS;
- }
- }
-
---
-1.7.9.5
-
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
deleted file mode 100644
index b1eb787..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0036-USB-move-usb_translate_errors-to-linux-usb.h.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-From a62e9c8e391b91bd60c705748ea8ec207ef72eab Mon Sep 17 00:00:00 2001
-From: Johan Hovold <jhovold at gmail.com>
-Date: Thu, 10 Nov 2011 14:58:26 +0100
-Subject: [PATCH 036/117] USB: move usb_translate_errors to linux/usb.h
-
-commit 2c4d6bf295ae10ffcd84f0df6cb642598eb66603 upstream.
-
-Move usb_translate_errors from usb core to linux/usb.h as it is meant to
-be accessed from drivers.
-
-Signed-off-by: Johan Hovold <jhovold at gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/core/usb.h | 14 --------------
- include/linux/usb.h | 13 +++++++++++++
- 2 files changed, 13 insertions(+), 14 deletions(-)
-
-diff --git a/drivers/usb/core/usb.h b/drivers/usb/core/usb.h
-index 3888778..45e8479 100644
---- a/drivers/usb/core/usb.h
-+++ b/drivers/usb/core/usb.h
-@@ -132,20 +132,6 @@ static inline int is_usb_device_driver(struct device_driver *drv)
- for_devices;
- }
-
--/* translate USB error codes to codes user space understands */
--static inline int usb_translate_errors(int error_code)
--{
-- switch (error_code) {
-- case 0:
-- case -ENOMEM:
-- case -ENODEV:
-- return error_code;
-- default:
-- return -EIO;
-- }
--}
--
--
- /* for labeling diagnostics */
- extern const char *usbcore_name;
-
-diff --git a/include/linux/usb.h b/include/linux/usb.h
-index 7626e5a..68cdc84 100644
---- a/include/linux/usb.h
-+++ b/include/linux/usb.h
-@@ -1600,6 +1600,19 @@ usb_maxpacket(struct usb_device *udev, int pipe, int is_out)
-
- /* ----------------------------------------------------------------------- */
-
-+/* translate USB error codes to codes user space understands */
-+static inline int usb_translate_errors(int error_code)
-+{
-+ switch (error_code) {
-+ case 0:
-+ case -ENOMEM:
-+ case -ENODEV:
-+ return error_code;
-+ default:
-+ return -EIO;
-+ }
-+}
-+
- /* Events from the usb core */
- #define USB_DEVICE_ADD 0x0001
- #define USB_DEVICE_REMOVE 0x0002
---
-1.7.9.5
-
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
deleted file mode 100644
index bbb4964..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0037-USB-cdc-wdm-sanitize-error-returns.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 1676590583666a41bf8b26924d0ab9b729455813 Mon Sep 17 00:00:00 2001
-From: Oliver Neukum <oliver at neukum.org>
-Date: Fri, 27 Apr 2012 14:23:54 +0200
-Subject: [PATCH 037/117] USB: cdc-wdm: sanitize error returns
-
-commit 24a85bae5da2b43fed423859c09c5a81ab359473 upstream.
-
-wdm_flush() returns unsanitized USB error codes.
-They must be cleaned up to before being anded to user space
-
-Signed-off-by: Oliver Neukum <oneukum at suse.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/class/cdc-wdm.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/usb/class/cdc-wdm.c b/drivers/usb/class/cdc-wdm.c
-index 2db0327..ac9099a 100644
---- a/drivers/usb/class/cdc-wdm.c
-+++ b/drivers/usb/class/cdc-wdm.c
-@@ -500,7 +500,7 @@ static int wdm_flush(struct file *file, fl_owner_t id)
- dev_err(&desc->intf->dev, "Error in flush path: %d\n",
- desc->werr);
-
-- return desc->werr;
-+ return usb_translate_errors(desc->werr);
- }
-
- static unsigned int wdm_poll(struct file *file, struct poll_table_struct *wait)
---
-1.7.9.5
-
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
deleted file mode 100644
index 06dd85c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0038-USB-cdc-wdm-fix-memory-leak.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From bc51604d6cadd35fa7a9a4d70644471cb6ab81f8 Mon Sep 17 00:00:00 2001
-From: Oliver Neukum <oliver at neukum.org>
-Date: Fri, 27 Apr 2012 14:36:37 +0200
-Subject: [PATCH 038/117] USB: cdc-wdm: fix memory leak
-
-commit 2f338c8a1904e2e7aa5a8bd12fb0cf2422d17da4 upstream.
-
-cleanup() is not called if the last close() comes after
-disconnect(). That leads to a memory leak. Rectified
-by checking for an earlier disconnect() in release()
-
-Signed-off-by: Oliver Neukum <oneukum at suse.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-[bwh: Backported to 3.2: adjust context]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/class/cdc-wdm.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/drivers/usb/class/cdc-wdm.c b/drivers/usb/class/cdc-wdm.c
-index ac9099a..cfe5be4 100644
---- a/drivers/usb/class/cdc-wdm.c
-+++ b/drivers/usb/class/cdc-wdm.c
-@@ -590,6 +590,8 @@ static int wdm_release(struct inode *inode, struct file *file)
- kill_urbs(desc);
- if (!test_bit(WDM_DISCONNECTING, &desc->flags))
- desc->intf->needs_remote_wakeup = 0;
-+ else
-+ cleanup(desc);
- }
- mutex_unlock(&wdm_mutex);
- return 0;
---
-1.7.9.5
-
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
deleted file mode 100644
index c895c80..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0039-8250_pci-fix-pch-uart-matching.patch
+++ /dev/null
@@ -1,102 +0,0 @@
-From e90d4ef7a5801bf1e9c956edf51d22f6c8f33611 Mon Sep 17 00:00:00 2001
-From: Arnaud Patard <apatard at hupstream.com>
-Date: Wed, 25 Apr 2012 12:17:24 +0200
-Subject: [PATCH 039/117] 8250_pci: fix pch uart matching
-
-commit aaa10eb1d0034eccc096f583fe308f0921617598 upstream.
-
-The rules used to make 8250_pci "ignore" the PCH uarts are lacking pci subids
-entries, preventing it to match and thus is breaking serial port support for
-theses systems.
-
-This has been tested on a nanoETXexpress-TT, which has a specifici uart clock.
-
-Tested-by: Erwan Velu <Erwan.Velu at zodiacaerospace.com>
-Signed-off-by: Arnaud Patard <apatard at hupstream.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-[bwh: Backported to 3.2: adjust filename]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/tty/serial/8250_pci.c | 18 ++++++++++++++++++
- 1 file changed, 18 insertions(+)
-
-diff --git a/drivers/tty/serial/8250_pci.c b/drivers/tty/serial/8250_pci.c
-index 825937a..482d51e 100644
---- a/drivers/tty/serial/8250_pci.c
-+++ b/drivers/tty/serial/8250_pci.c
-@@ -1590,54 +1590,72 @@ static struct pci_serial_quirk pci_serial_quirks[] __refdata = {
- {
- .vendor = PCI_VENDOR_ID_INTEL,
- .device = 0x8811,
-+ .subvendor = PCI_ANY_ID,
-+ .subdevice = PCI_ANY_ID,
- .init = pci_eg20t_init,
- .setup = pci_default_setup,
- },
- {
- .vendor = PCI_VENDOR_ID_INTEL,
- .device = 0x8812,
-+ .subvendor = PCI_ANY_ID,
-+ .subdevice = PCI_ANY_ID,
- .init = pci_eg20t_init,
- .setup = pci_default_setup,
- },
- {
- .vendor = PCI_VENDOR_ID_INTEL,
- .device = 0x8813,
-+ .subvendor = PCI_ANY_ID,
-+ .subdevice = PCI_ANY_ID,
- .init = pci_eg20t_init,
- .setup = pci_default_setup,
- },
- {
- .vendor = PCI_VENDOR_ID_INTEL,
- .device = 0x8814,
-+ .subvendor = PCI_ANY_ID,
-+ .subdevice = PCI_ANY_ID,
- .init = pci_eg20t_init,
- .setup = pci_default_setup,
- },
- {
- .vendor = 0x10DB,
- .device = 0x8027,
-+ .subvendor = PCI_ANY_ID,
-+ .subdevice = PCI_ANY_ID,
- .init = pci_eg20t_init,
- .setup = pci_default_setup,
- },
- {
- .vendor = 0x10DB,
- .device = 0x8028,
-+ .subvendor = PCI_ANY_ID,
-+ .subdevice = PCI_ANY_ID,
- .init = pci_eg20t_init,
- .setup = pci_default_setup,
- },
- {
- .vendor = 0x10DB,
- .device = 0x8029,
-+ .subvendor = PCI_ANY_ID,
-+ .subdevice = PCI_ANY_ID,
- .init = pci_eg20t_init,
- .setup = pci_default_setup,
- },
- {
- .vendor = 0x10DB,
- .device = 0x800C,
-+ .subvendor = PCI_ANY_ID,
-+ .subdevice = PCI_ANY_ID,
- .init = pci_eg20t_init,
- .setup = pci_default_setup,
- },
- {
- .vendor = 0x10DB,
- .device = 0x800D,
-+ .subvendor = PCI_ANY_ID,
-+ .subdevice = PCI_ANY_ID,
- .init = pci_eg20t_init,
- .setup = pci_default_setup,
- },
---
-1.7.9.5
-
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
deleted file mode 100644
index 5d78e49..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0040-usb-add-USB_QUIRK_RESET_RESUME-for-M-Audio-88es.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From aa66cb26f7b032f3ae43ff3cb126b3a3cff9b151 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Steffen=20M=C3=BCller?= <steffen.mueller at radio-frei.de>
-Date: Mon, 30 Apr 2012 13:05:34 +0200
-Subject: [PATCH 040/117] usb: add USB_QUIRK_RESET_RESUME for M-Audio 88es
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit 166cb70e97bd83d7ae9bbec6ae59a178fd9bb823 upstream.
-
-Tested-by: Steffen Müller <steffen.mueller at radio-frei.de>
-Signed-off-by: Steffen Müller <steffen.mueller at radio-frei.de>
-Signed-off-by: Stefan Seyfried <seife+kernel at b1-systems.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/core/quirks.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/drivers/usb/core/quirks.c b/drivers/usb/core/quirks.c
-index 4c65eb6..32d3adc 100644
---- a/drivers/usb/core/quirks.c
-+++ b/drivers/usb/core/quirks.c
-@@ -123,6 +123,9 @@ static const struct usb_device_id usb_quirk_list[] = {
- /* Guillemot Webcam Hercules Dualpix Exchange*/
- { USB_DEVICE(0x06f8, 0x3005), .driver_info = USB_QUIRK_RESET_RESUME },
-
-+ /* Midiman M-Audio Keystation 88es */
-+ { USB_DEVICE(0x0763, 0x0192), .driver_info = USB_QUIRK_RESET_RESUME },
-+
- /* M-Systems Flash Disk Pioneers */
- { USB_DEVICE(0x08ec, 0x1000), .driver_info = USB_QUIRK_RESET_RESUME },
-
---
-1.7.9.5
-
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
deleted file mode 100644
index 2bc330a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0041-usb-usbtest-two-super-speed-fixes-for-usbtest.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From bb6dfbca863a06884b7af33a6c46fddb690eb7d3 Mon Sep 17 00:00:00 2001
-From: Paul Zimmerman <Paul.Zimmerman at synopsys.com>
-Date: Mon, 16 Apr 2012 14:19:07 -0700
-Subject: [PATCH 041/117] usb: usbtest: two super speed fixes for usbtest
-
-commit 6a23ccd216b6a8ba2c67a9f9d8969b4431ad2920 upstream.
-
-bMaxPacketSize0 field for super speed is a power of 2, not a count.
-The size itself is always 512.
-
-Max packet size for a super speed bulk endpoint is 1024, so
-allocate the urb size in halt_simple() accordingly.
-
-Signed-off-by: Paul Zimmerman <paulz at synopsys.com>
-Acked-by: Felipe Balbi <balbi at ti.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/misc/usbtest.c | 17 ++++++++++++-----
- 1 file changed, 12 insertions(+), 5 deletions(-)
-
-diff --git a/drivers/usb/misc/usbtest.c b/drivers/usb/misc/usbtest.c
-index bd6d008..b9ac9a3 100644
---- a/drivers/usb/misc/usbtest.c
-+++ b/drivers/usb/misc/usbtest.c
-@@ -1025,7 +1025,10 @@ test_ctrl_queue(struct usbtest_dev *dev, struct usbtest_param *param)
- case 13: /* short read, resembling case 10 */
- req.wValue = cpu_to_le16((USB_DT_CONFIG << 8) | 0);
- /* last data packet "should" be DATA1, not DATA0 */
-- len = 1024 - udev->descriptor.bMaxPacketSize0;
-+ if (udev->speed == USB_SPEED_SUPER)
-+ len = 1024 - 512;
-+ else
-+ len = 1024 - udev->descriptor.bMaxPacketSize0;
- expected = -EREMOTEIO;
- break;
- case 14: /* short read; try to fill the last packet */
-@@ -1384,11 +1387,15 @@ static int test_halt(struct usbtest_dev *tdev, int ep, struct urb *urb)
-
- static int halt_simple(struct usbtest_dev *dev)
- {
-- int ep;
-- int retval = 0;
-- struct urb *urb;
-+ int ep;
-+ int retval = 0;
-+ struct urb *urb;
-+ struct usb_device *udev = testdev_to_usbdev(dev);
-
-- urb = simple_alloc_urb(testdev_to_usbdev(dev), 0, 512);
-+ if (udev->speed == USB_SPEED_SUPER)
-+ urb = simple_alloc_urb(udev, 0, 1024);
-+ else
-+ urb = simple_alloc_urb(udev, 0, 512);
- if (urb == NULL)
- return -ENOMEM;
-
---
-1.7.9.5
-
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
deleted file mode 100644
index 1c7547e..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0042-8250.c-less-than-2400-baud-fix.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From 52c1820cb4b5f10c0664104bb6f570305d0c49cc Mon Sep 17 00:00:00 2001
-From: Christian Melki <christian.melki at ericsson.se>
-Date: Mon, 30 Apr 2012 11:21:26 +0200
-Subject: [PATCH 042/117] 8250.c: less than 2400 baud fix.
-
-commit f9a9111b540fd67db5dab332f4b83d86c90e27b1 upstream.
-
-We noticed that we were loosing data at speed less than 2400 baud.
-It turned out our (TI16750 compatible) uart with 64 byte outgoing fifo
-was truncated to 16 byte (bit 5 sets fifo len) when modifying the fcr
-reg.
-The input code still fills the buffer with 64 bytes if I remember
-correctly and thus data is lost.
-Our fix was to remove whiping of the fcr content and just add the
-TRIGGER_1 which we want for latency.
-I can't see why this would not work on less than 2400 always, for all
-uarts ...
-Otherwise one would have to make sure the filling of the fifo re-checks
-the current state of available fifo size (urrk).
-
-Signed-off-by: Christian Melki <christian.melki at ericsson.se>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-[bwh: Backported to 3.2: adjust filename; replace *port with up->port]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/tty/serial/8250.c | 9 +++++----
- 1 file changed, 5 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/tty/serial/8250.c b/drivers/tty/serial/8250.c
-index eeadf1b..70585b6 100644
---- a/drivers/tty/serial/8250.c
-+++ b/drivers/tty/serial/8250.c
-@@ -2327,10 +2327,11 @@ serial8250_do_set_termios(struct uart_port *port, struct ktermios *termios,
- quot++;
-
- if (up->capabilities & UART_CAP_FIFO && up->port.fifosize > 1) {
-- if (baud < 2400)
-- fcr = UART_FCR_ENABLE_FIFO | UART_FCR_TRIGGER_1;
-- else
-- fcr = uart_config[up->port.type].fcr;
-+ fcr = uart_config[up->port.type].fcr;
-+ if (baud < 2400) {
-+ fcr &= ~UART_FCR_TRIGGER_MASK;
-+ fcr |= UART_FCR_TRIGGER_1;
-+ }
- }
-
- /*
---
-1.7.9.5
-
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
deleted file mode 100644
index ce641a4..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0043-usb-xhci-Handle-COMP_TX_ERR-for-isoc-tds.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From 5ccddedea273a8a59eda8f3a7ad026d0751ada3d Mon Sep 17 00:00:00 2001
-From: Hans de Goede <hdegoede at redhat.com>
-Date: Mon, 23 Apr 2012 15:06:09 +0200
-Subject: [PATCH 043/117] usb-xhci: Handle COMP_TX_ERR for isoc tds
-
-commit 9c745995ae5c4ff787f34a359de908facc11ee00 upstream.
-
-While testing unplugging an UVC HD webcam with usb-redirection (so through
-usbdevfs), my userspace usb-redir code was getting a value of -1 in
-iso_frame_desc[n].status, which according to Documentation/usb/error-codes.txt
-is not a valid value.
-
-The source of this -1 is the default case in xhci-ring.c:process_isoc_td()
-adding a kprintf there showed the value of trb_comp_code to be COMP_TX_ERR
-in this case, so this patch adds handling for that completion code to
-process_isoc_td().
-
-This was observed and tested with the following xhci controller:
-1033:0194 NEC Corporation uPD720200 USB 3.0 Host Controller (rev 04)
-
-Note: I also wonder if setting frame->status to -1 (-EPERM) is the best we can
-do, but since I cannot come up with anything better I've left that as is.
-
-This patch should be backported to kernels as old as 2.6.36, which contain the
-commit 04e51901dd44f40a5a385ced897f6bca87d5f40a "USB: xHCI: Isochronous
-transfer implementation".
-
-Signed-off-by: Hans de Goede <hdegoede at redhat.com>
-Signed-off-by: Sarah Sharp <sarah.a.sharp at linux.intel.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/host/xhci-ring.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c
-index 43b3447..2304c45 100644
---- a/drivers/usb/host/xhci-ring.c
-+++ b/drivers/usb/host/xhci-ring.c
-@@ -1752,6 +1752,7 @@ static int process_isoc_td(struct xhci_hcd *xhci, struct xhci_td *td,
- break;
- case COMP_DEV_ERR:
- case COMP_STALL:
-+ case COMP_TX_ERR:
- frame->status = -EPROTO;
- skip_td = true;
- break;
---
-1.7.9.5
-
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
deleted file mode 100644
index eaa0ec5..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0044-xhci-Avoid-dead-ports-when-CONFIG_USB_XHCI_HCD-n.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From 48a73f4c8ba6d9e5587a29aa4f9710f405a28cc7 Mon Sep 17 00:00:00 2001
-From: Sarah Sharp <sarah.a.sharp at linux.intel.com>
-Date: Mon, 16 Apr 2012 10:56:47 -0700
-Subject: [PATCH 044/117] xhci: Avoid dead ports when CONFIG_USB_XHCI_HCD=n
-
-commit 51c9e6c7732b67769c0a514d31f505e49fa82dd4 upstream.
-
-If the user chooses to say "no" to CONFIG_USB_XHCI_HCD on a system
-with an Intel Panther Point chipset, the PCI quirks code or the EHCI
-driver will switch the ports over to the xHCI host, but the xHCI driver
-will never load. The ports will be powered off and seem "dead" to the
-user.
-
-Fix this by only switching the ports over if CONFIG_USB_XHCI_HCD is
-either compiled in, or compiled as a module.
-
-This patch should be backported to stable kernels as old as 3.0,
-that contain commit 69e848c2090aebba5698a1620604c7dccb448684
-"Intel xhci: Support EHCI/xHCI port switching."
-
-Signed-off-by: Sarah Sharp <sarah.a.sharp at linux.intel.com>
-Reported-by: Eric Anholt <eric.anholt at intel.com>
-Reported-by: David Bein <d.bein at f5.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/host/pci-quirks.c | 14 ++++++++++++++
- 1 file changed, 14 insertions(+)
-
-diff --git a/drivers/usb/host/pci-quirks.c b/drivers/usb/host/pci-quirks.c
-index 2afff88..a33362b 100644
---- a/drivers/usb/host/pci-quirks.c
-+++ b/drivers/usb/host/pci-quirks.c
-@@ -9,6 +9,7 @@
- */
-
- #include <linux/types.h>
-+#include <linux/kconfig.h>
- #include <linux/kernel.h>
- #include <linux/pci.h>
- #include <linux/init.h>
-@@ -742,6 +743,19 @@ void usb_enable_xhci_ports(struct pci_dev *xhci_pdev)
- {
- u32 ports_available;
-
-+ /* Don't switchover the ports if the user hasn't compiled the xHCI
-+ * driver. Otherwise they will see "dead" USB ports that don't power
-+ * the devices.
-+ */
-+ if (!IS_ENABLED(CONFIG_USB_XHCI_HCD)) {
-+ dev_warn(&xhci_pdev->dev,
-+ "CONFIG_USB_XHCI_HCD is turned off, "
-+ "defaulting to EHCI.\n");
-+ dev_warn(&xhci_pdev->dev,
-+ "USB 3.0 devices will work at USB 2.0 speeds.\n");
-+ return;
-+ }
-+
- ports_available = 0xffffffff;
- /* Write USB3_PSSEN, the USB 3.0 Port SuperSpeed Enable
- * Register, to turn on SuperSpeed terminations for all
---
-1.7.9.5
-
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
deleted file mode 100644
index 2bd8bcd..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0045-xhci-Add-Lynx-Point-to-list-of-Intel-switchable-host.patch
+++ /dev/null
@@ -1,81 +0,0 @@
-From cc4326a34985d9ce41cd590e7cf7275a0fbaa9dd Mon Sep 17 00:00:00 2001
-From: Sarah Sharp <sarah.a.sharp at linux.intel.com>
-Date: Thu, 9 Feb 2012 15:55:13 -0800
-Subject: [PATCH 045/117] xhci: Add Lynx Point to list of Intel switchable
- hosts.
-
-commit 1c12443ab8eba71a658fae4572147e56d1f84f66 upstream.
-
-The upcoming Intel Lynx Point chipset includes an xHCI host controller
-that can have ports switched from the EHCI host controller, just like
-the Intel Panther Point xHCI host. This time, ports from both EHCI
-hosts can be switched to the xHCI host controller. The PCI config
-registers to do the port switching are in the exact same place in the
-xHCI PCI configuration registers, with the same semantics.
-
-Hooray for shipping patches for next-gen hardware before the current gen
-hardware is even available for purchase!
-
-This patch should be backported to stable kernels as old as 3.0,
-that contain commit 69e848c2090aebba5698a1620604c7dccb448684
-"Intel xhci: Support EHCI/xHCI port switching."
-
-Signed-off-by: Sarah Sharp <sarah.a.sharp at linux.intel.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/host/ehci-pci.c | 4 +++-
- drivers/usb/host/pci-quirks.c | 18 +++++++++++++++++-
- 2 files changed, 20 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/usb/host/ehci-pci.c b/drivers/usb/host/ehci-pci.c
-index 971d312..ee85e81 100644
---- a/drivers/usb/host/ehci-pci.c
-+++ b/drivers/usb/host/ehci-pci.c
-@@ -365,7 +365,9 @@ static bool usb_is_intel_switchable_ehci(struct pci_dev *pdev)
- {
- return pdev->class == PCI_CLASS_SERIAL_USB_EHCI &&
- pdev->vendor == PCI_VENDOR_ID_INTEL &&
-- pdev->device == 0x1E26;
-+ (pdev->device == 0x1E26 ||
-+ pdev->device == 0x8C2D ||
-+ pdev->device == 0x8C26);
- }
-
- static void ehci_enable_xhci_companion(void)
-diff --git a/drivers/usb/host/pci-quirks.c b/drivers/usb/host/pci-quirks.c
-index a33362b..833b3c6 100644
---- a/drivers/usb/host/pci-quirks.c
-+++ b/drivers/usb/host/pci-quirks.c
-@@ -713,12 +713,28 @@ static int handshake(void __iomem *ptr, u32 mask, u32 done,
- return -ETIMEDOUT;
- }
-
--bool usb_is_intel_switchable_xhci(struct pci_dev *pdev)
-+#define PCI_DEVICE_ID_INTEL_LYNX_POINT_XHCI 0x8C31
-+
-+bool usb_is_intel_ppt_switchable_xhci(struct pci_dev *pdev)
- {
- return pdev->class == PCI_CLASS_SERIAL_USB_XHCI &&
- pdev->vendor == PCI_VENDOR_ID_INTEL &&
- pdev->device == PCI_DEVICE_ID_INTEL_PANTHERPOINT_XHCI;
- }
-+
-+/* The Intel Lynx Point chipset also has switchable ports. */
-+bool usb_is_intel_lpt_switchable_xhci(struct pci_dev *pdev)
-+{
-+ return pdev->class == PCI_CLASS_SERIAL_USB_XHCI &&
-+ pdev->vendor == PCI_VENDOR_ID_INTEL &&
-+ pdev->device == PCI_DEVICE_ID_INTEL_LYNX_POINT_XHCI;
-+}
-+
-+bool usb_is_intel_switchable_xhci(struct pci_dev *pdev)
-+{
-+ return usb_is_intel_ppt_switchable_xhci(pdev) ||
-+ usb_is_intel_lpt_switchable_xhci(pdev);
-+}
- EXPORT_SYMBOL_GPL(usb_is_intel_switchable_xhci);
-
- /*
---
-1.7.9.5
-
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
deleted file mode 100644
index 5e46323..0000000
--- 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
+++ /dev/null
@@ -1,44 +0,0 @@
-From 45bf78829065725fa73b4cacfaf2a2142056d301 Mon Sep 17 00:00:00 2001
-From: Peter Chen <peter.chen at freescale.com>
-Date: Sun, 1 Apr 2012 15:17:16 +0800
-Subject: [PATCH 046/117] usb: gadget: fsl_udc_core: dTD's next dtd pointer
- need to be updated once written
-
-commit 4d0947dec4db1224354e2f6f00ae22ce38e62a43 upstream.
-
-dTD's next dtd pointer need to be updated once CPU writes it, or this
-request may not be handled by controller, then host will get NAK from
-device forever.
-
-This problem occurs when there is a request is handling, we need to add
-a new request to dTD list, if this new request is added before the current
-one is finished, the new request is intended to added as next dtd pointer
-at current dTD, but without wmb(), the dTD's next dtd pointer may not be
-updated when the controller reads it. In that case, the controller will
-still get Terminate Bit is 1 at dTD's next dtd pointer, that means there is
-no next request, then this new request is missed by controller.
-
-Signed-off-by: Peter Chen <peter.chen at freescale.com>
-Acked-by: Li Yang <leoli at freescale.com>
-Signed-off-by: Felipe Balbi <balbi at ti.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/gadget/fsl_udc_core.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/drivers/usb/gadget/fsl_udc_core.c b/drivers/usb/gadget/fsl_udc_core.c
-index 9085d14..185db03 100644
---- a/drivers/usb/gadget/fsl_udc_core.c
-+++ b/drivers/usb/gadget/fsl_udc_core.c
-@@ -736,6 +736,8 @@ static void fsl_queue_td(struct fsl_ep *ep, struct fsl_req *req)
- lastreq = list_entry(ep->queue.prev, struct fsl_req, queue);
- lastreq->tail->next_td_ptr =
- cpu_to_hc32(req->head->td_dma & DTD_ADDR_MASK);
-+ /* Ensure dTD's next dtd pointer to be updated */
-+ wmb();
- /* Read prime bit, if 1 goto done */
- if (fsl_readl(&dr_regs->endpointprime) & bitmask)
- return;
---
-1.7.9.5
-
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
deleted file mode 100644
index 9c15081..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0047-Add-missing-call-to-uart_update_timeout.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 17e2d3e18d2042fb6fb23605752754deb87772c5 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Lothar=20Wa=C3=9Fmann?= <LW at KARO-electronics.de>
-Date: Thu, 3 May 2012 11:37:12 +0200
-Subject: [PATCH 047/117] Add missing call to uart_update_timeout()
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit 8b979f7c6bf13a57e7b6002f1175312a44773960 upstream.
-
-This patch fixes a problem reported here:
-http://article.gmane.org/gmane.linux.ports.arm.kernel/155242/match=auart
-
-Signed-off-by: Lothar Waßmann <LW at KARO-electronics.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/tty/serial/mxs-auart.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/drivers/tty/serial/mxs-auart.c b/drivers/tty/serial/mxs-auart.c
-index 7e02c9c..5b3d063 100644
---- a/drivers/tty/serial/mxs-auart.c
-+++ b/drivers/tty/serial/mxs-auart.c
-@@ -368,6 +368,8 @@ static void mxs_auart_settermios(struct uart_port *u,
-
- writel(ctrl, u->membase + AUART_LINECTRL);
- writel(ctrl2, u->membase + AUART_CTRL2);
-+
-+ uart_update_timeout(u, termios->c_cflag, baud);
- }
-
- static irqreturn_t mxs_auart_irq_handle(int irq, void *context)
---
-1.7.9.5
-
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
deleted file mode 100644
index 493344b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0048-USB-ftdi-sio-add-support-for-Physik-Instrumente-E-86.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From 52bf48eda8302a253e63ac9ec069a1635932b237 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?=C3=89ric=20Piel?= <piel at delmic.com>
-Date: Mon, 7 May 2012 12:37:54 +0200
-Subject: [PATCH 048/117] USB: ftdi-sio: add support for Physik Instrumente
- E-861
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit b69cc672052540e8efb1368420f10d7d4d8b8a3d upstream.
-
-This adds VID/PID for the PI E-861. Without it, I had to do:
-modprobe -q ftdi-sio product=0x1008 vendor=0x1a72
-
-http://www.physikinstrumente.com/en/products/prdetail.php?sortnr=900610
-
-Signed-off-by: Éric Piel <piel at delmic.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/serial/ftdi_sio.c | 1 +
- drivers/usb/serial/ftdi_sio_ids.h | 8 ++++++++
- 2 files changed, 9 insertions(+)
-
-diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
-index c4cf3f3..450bdfe 100644
---- a/drivers/usb/serial/ftdi_sio.c
-+++ b/drivers/usb/serial/ftdi_sio.c
-@@ -809,6 +809,7 @@ static struct usb_device_id id_table_combined [] = {
- .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
- { USB_DEVICE(LARSENBRUSGAARD_VID, LB_ALTITRACK_PID) },
- { USB_DEVICE(GN_OTOMETRICS_VID, AURICAL_USB_PID) },
-+ { USB_DEVICE(PI_VID, PI_E861_PID) },
- { USB_DEVICE(BAYER_VID, BAYER_CONTOUR_CABLE_PID) },
- { USB_DEVICE(FTDI_VID, MARVELL_OPENRD_PID),
- .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
-diff --git a/drivers/usb/serial/ftdi_sio_ids.h b/drivers/usb/serial/ftdi_sio_ids.h
-index c6dd18e..219b199 100644
---- a/drivers/usb/serial/ftdi_sio_ids.h
-+++ b/drivers/usb/serial/ftdi_sio_ids.h
-@@ -785,6 +785,14 @@
- #define RTSYSTEMS_SERIAL_VX7_PID 0x9e52 /* Serial converter for VX-7 Radios using FT232RL */
- #define RTSYSTEMS_CT29B_PID 0x9e54 /* CT29B Radio Cable */
-
-+
-+/*
-+ * Physik Instrumente
-+ * http://www.physikinstrumente.com/en/products/
-+ */
-+#define PI_VID 0x1a72 /* Vendor ID */
-+#define PI_E861_PID 0x1008 /* E-861 piezo controller USB connection */
-+
- /*
- * Bayer Ascensia Contour blood glucose meter USB-converter cable.
- * http://winglucofacts.com/cables/
---
-1.7.9.5
-
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
deleted file mode 100644
index 81f1eb1..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0049-USB-ffs-test-fix-length-argument-of-out-function-cal.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 7041c376790f592d9ed3c6b88a44a6cf18b8423c Mon Sep 17 00:00:00 2001
-From: Matthias Fend <Matthias.Fend at wolfvision.net>
-Date: Mon, 7 May 2012 14:37:30 +0200
-Subject: [PATCH 049/117] USB: ffs-test: fix length argument of out function
- call
-
-commit eb9c5836384cd2a276254df6254ed71117983626 upstream.
-
-The out functions should only handle actual available data instead of the complete buffer.
-Otherwise for example the ep0_consume function will report ghost events since it tries to decode
-the complete buffer - which may contain partly invalid data.
-
-Signed-off-by: Matthias Fend <matthias.fend at wolfvision.net>
-Acked-by: Michal Nazarewicz <mina86 at mina86.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- tools/usb/ffs-test.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/tools/usb/ffs-test.c b/tools/usb/ffs-test.c
-index b9c7986..f17dfee 100644
---- a/tools/usb/ffs-test.c
-+++ b/tools/usb/ffs-test.c
-@@ -324,7 +324,7 @@ static void *start_thread_helper(void *arg)
-
- ret = t->in(t, t->buf, t->buf_size);
- if (ret > 0) {
-- ret = t->out(t, t->buf, t->buf_size);
-+ ret = t->out(t, t->buf, ret);
- name = out_name;
- op = "write";
- } else {
---
-1.7.9.5
-
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
deleted file mode 100644
index c5f666a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0050-HID-wiimote-Fix-IR-data-parser.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From 0842fcae9a509f08c6d540dfa4d3f097c4f3f92d Mon Sep 17 00:00:00 2001
-From: David Herrmann <dh.herrmann at googlemail.com>
-Date: Tue, 8 May 2012 16:52:31 +0200
-Subject: [PATCH 050/117] HID: wiimote: Fix IR data parser
-
-commit 74b89e8a3625c17c7452532dfb997ac4f1a38751 upstream.
-
-We incorrectly parse incoming IR data. The extra byte contains the upper
-bits and not the lower bits of the x/y coordinates. User-space expects
-absolute position data from us so this patch does not break existing
-applications. On the contrary, it extends the virtual view and fixes
-garbage reports for margin areas of the virtual screen.
-
-Reported-by: Peter Bukovsky <bukovsky.peter at gmail.com>
-Signed-off-by: David Herrmann <dh.herrmann at googlemail.com>
-Signed-off-by: Jiri Kosina <jkosina at suse.cz>
-[bwh: Backported to 3.2: adjust filename]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/hid/hid-wiimote.c | 16 +++++-----------
- 1 file changed, 5 insertions(+), 11 deletions(-)
-
-diff --git a/drivers/hid/hid-wiimote.c b/drivers/hid/hid-wiimote.c
-index 76739c0..bfa9a27 100644
---- a/drivers/hid/hid-wiimote.c
-+++ b/drivers/hid/hid-wiimote.c
-@@ -829,7 +829,7 @@ static void __ir_to_input(struct wiimote_data *wdata, const __u8 *ir,
-
- /*
- * Basic IR data is encoded into 3 bytes. The first two bytes are the
-- * upper 8 bit of the X/Y data, the 3rd byte contains the lower 2 bits
-+ * lower 8 bit of the X/Y data, the 3rd byte contains the upper 2 bits
- * of both.
- * If data is packed, then the 3rd byte is put first and slightly
- * reordered. This allows to interleave packed and non-packed data to
-@@ -838,17 +838,11 @@ static void __ir_to_input(struct wiimote_data *wdata, const __u8 *ir,
- */
-
- if (packed) {
-- x = ir[1] << 2;
-- y = ir[2] << 2;
--
-- x |= ir[0] & 0x3;
-- y |= (ir[0] >> 2) & 0x3;
-+ x = ir[1] | ((ir[0] & 0x03) << 8);
-+ y = ir[2] | ((ir[0] & 0x0c) << 6);
- } else {
-- x = ir[0] << 2;
-- y = ir[1] << 2;
--
-- x |= (ir[2] >> 4) & 0x3;
-- y |= (ir[2] >> 6) & 0x3;
-+ x = ir[0] | ((ir[2] & 0x30) << 4);
-+ y = ir[1] | ((ir[2] & 0xc0) << 2);
- }
-
- input_report_abs(wdata->ir, xid, x);
---
-1.7.9.5
-
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
deleted file mode 100644
index 6a9b5d9..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0051-usb-storage-unusual_devs-entry-for-Yarvik-PMP400-MP4.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From a595c200511d66729bc55aadbb93adb96988c590 Mon Sep 17 00:00:00 2001
-From: Alan Stern <stern at rowland.harvard.edu>
-Date: Tue, 8 May 2012 15:15:25 -0400
-Subject: [PATCH 051/117] usb-storage: unusual_devs entry for Yarvik PMP400
- MP4 player
-
-commit df767b71e5816692134d59c0c17e0f77cd73333d upstream.
-
-This patch (as1553) adds an unusual_dev entrie for the Yarvik PMP400
-MP4 music player.
-
-Signed-off-by: Alan Stern <stern at rowland.harvard.edu>
-Reported-by: Jesse Feddema <jdfeddema at gmail.com>
-Tested-by: Jesse Feddema <jdfeddema at gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/storage/unusual_devs.h | 7 +++++++
- 1 file changed, 7 insertions(+)
-
-diff --git a/drivers/usb/storage/unusual_devs.h b/drivers/usb/storage/unusual_devs.h
-index 24caba7..591f57f 100644
---- a/drivers/usb/storage/unusual_devs.h
-+++ b/drivers/usb/storage/unusual_devs.h
-@@ -1885,6 +1885,13 @@ UNUSUAL_DEV( 0x1652, 0x6600, 0x0201, 0x0201,
- USB_SC_DEVICE, USB_PR_DEVICE, NULL,
- US_FL_IGNORE_RESIDUE ),
-
-+/* Reported by Jesse Feddema <jdfeddema at gmail.com> */
-+UNUSUAL_DEV( 0x177f, 0x0400, 0x0000, 0x0000,
-+ "Yarvik",
-+ "PMP400",
-+ USB_SC_DEVICE, USB_PR_DEVICE, NULL,
-+ US_FL_BULK_IGNORE_TAG | US_FL_MAX_SECTORS_64 ),
-+
- /* Reported by Hans de Goede <hdegoede at redhat.com>
- * These Appotech controllers are found in Picture Frames, they provide a
- * (buggy) emulation of a cdrom drive which contains the windows software
---
-1.7.9.5
-
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
deleted file mode 100644
index 3f380bb..0000000
--- 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
+++ /dev/null
@@ -1,63 +0,0 @@
-From ac7728e7d633262cd020d764404abf381f282d12 Mon Sep 17 00:00:00 2001
-From: Nicolas Ferre <nicolas.ferre at atmel.com>
-Date: Wed, 9 May 2012 10:48:54 +0200
-Subject: [PATCH 052/117] USB: ohci-at91: add a reset function to fix race
- condition
-
-commit 07e4e556eff4938eb2edf2591de3aa7d7fb82b52 upstream.
-
-A possible race condition appears because we are not initializing
-the ohci->regs before calling usb_hcd_request_irqs().
-We move the call to ohci_init() in hcd->driver->reset() instead of
-hcd->driver->start() to fix this.
-This was experienced when we share the same IRQ line between OHCI and EHCI
-controllers.
-
-Signed-off-by: Nicolas Ferre <nicolas.ferre at atmel.com>
-Tested-by: Christian Eggers <christian.eggers at kathrein.de>
-Acked-by: Alan Stern <stern at rowland.harvard.edu>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/host/ohci-at91.c | 11 ++++++++++-
- 1 file changed, 10 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/usb/host/ohci-at91.c b/drivers/usb/host/ohci-at91.c
-index 95a9fec..a60c7aa 100644
---- a/drivers/usb/host/ohci-at91.c
-+++ b/drivers/usb/host/ohci-at91.c
-@@ -199,7 +199,7 @@ static void usb_hcd_at91_remove(struct usb_hcd *hcd,
- /*-------------------------------------------------------------------------*/
-
- static int __devinit
--ohci_at91_start (struct usb_hcd *hcd)
-+ohci_at91_reset (struct usb_hcd *hcd)
- {
- struct at91_usbh_data *board = hcd->self.controller->platform_data;
- struct ohci_hcd *ohci = hcd_to_ohci (hcd);
-@@ -209,6 +209,14 @@ ohci_at91_start (struct usb_hcd *hcd)
- return ret;
-
- ohci->num_ports = board->ports;
-+ return 0;
-+}
-+
-+static int __devinit
-+ohci_at91_start (struct usb_hcd *hcd)
-+{
-+ struct ohci_hcd *ohci = hcd_to_ohci (hcd);
-+ int ret;
-
- if ((ret = ohci_run(ohci)) < 0) {
- err("can't start %s", hcd->self.bus_name);
-@@ -390,6 +398,7 @@ static const struct hc_driver ohci_at91_hc_driver = {
- /*
- * basic lifecycle operations
- */
-+ .reset = ohci_at91_reset,
- .start = ohci_at91_start,
- .stop = ohci_stop,
- .shutdown = ohci_shutdown,
---
-1.7.9.5
-
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
deleted file mode 100644
index 181bd55..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0053-HID-logitech-read-all-32-bits-of-report-type-bitfiel.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-From 4061b435a02342ee10ee34fb69f2c75d53e8da70 Mon Sep 17 00:00:00 2001
-From: Jonathan Nieder <jrnieder at gmail.com>
-Date: Fri, 11 May 2012 16:17:16 +0200
-Subject: [PATCH 053/117] HID: logitech: read all 32 bits of report type
- bitfield
-
-commit 44d27f7dfedd9aadc082cda31462f6600f56e4ec upstream.
-
-On big-endian systems (e.g., Apple PowerBook), trying to use a
-logitech wireless mouse with the Logitech Unifying Receiver does not
-work with v3.2 and later kernels. The device doesn't show up in
-/dev/input. Older kernels work fine.
-
-That is because the new hid-logitech-dj driver claims the device. The
-device arrival notification appears:
-
- 20 00 41 02 00 00 00 00 00 00 00 00 00 00 00
-
-and we read the report_types bitfield (02 00 00 00) to find out what
-kind of device it is. Unfortunately the driver only reads the first 8
-bits and treats that value as a 32-bit little-endian number, so on a
-powerpc the report type seems to be 0x02000000 and is not recognized.
-
-Even on little-endian machines, connecting a media center remote
-control (report type 00 01 00 00) with this driver loaded would
-presumably fail for the same reason.
-
-Fix both problems by using get_unaligned_le32() to read all four
-bytes, which is a little clearer anyway. After this change, the
-wireless mouse works on Hugo's PowerBook again.
-
-Based on a patch by Nestor Lopez Casado.
-Addresses http://bugs.debian.org/671292
-
-Reported-by: Hugo Osvaldo Barrera <hugo at osvaldobarrera.com.ar>
-Inspired-by: Nestor Lopez Casado <nlopezcasad at logitech.com>
-Signed-off-by: Jonathan Nieder <jrnieder at gmail.com>
-Signed-off-by: Nestor Lopez Casado <nlopezcasad at logitech.com>
-Signed-off-by: Jiri Kosina <jkosina at suse.cz>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/hid/hid-logitech-dj.c | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/hid/hid-logitech-dj.c b/drivers/hid/hid-logitech-dj.c
-index 38b12e4..2eac8c5 100644
---- a/drivers/hid/hid-logitech-dj.c
-+++ b/drivers/hid/hid-logitech-dj.c
-@@ -26,6 +26,7 @@
- #include <linux/hid.h>
- #include <linux/module.h>
- #include <linux/usb.h>
-+#include <asm/unaligned.h>
- #include "usbhid/usbhid.h"
- #include "hid-ids.h"
- #include "hid-logitech-dj.h"
-@@ -265,8 +266,8 @@ static void logi_dj_recv_add_djhid_device(struct dj_receiver_dev *djrcv_dev,
- goto dj_device_allocate_fail;
- }
-
-- dj_dev->reports_supported = le32_to_cpu(
-- dj_report->report_params[DEVICE_PAIRED_RF_REPORT_TYPE]);
-+ dj_dev->reports_supported = get_unaligned_le32(
-+ dj_report->report_params + DEVICE_PAIRED_RF_REPORT_TYPE);
- dj_dev->hdev = dj_hiddev;
- dj_dev->dj_receiver_dev = djrcv_dev;
- dj_dev->device_index = dj_report->device_index;
---
-1.7.9.5
-
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
deleted file mode 100644
index 105ed17..0000000
--- 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
+++ /dev/null
@@ -1,77 +0,0 @@
-From 38827d01920cd8adbdbdb89d79b749f6cb50b8f0 Mon Sep 17 00:00:00 2001
-From: Darren Hart <dvhart at linux.intel.com>
-Date: Fri, 11 May 2012 13:56:57 -0700
-Subject: [PATCH 054/117] USB: serial: ti_usb_3410_5052: Add support for the
- FRI2 serial console
-
-commit 975dc33b82cb887d75a29b1e3835c8eb063a8e99 upstream.
-
-The Kontron M2M development board, also known as the Fish River Island II,
-has an optional daughter card providing access to the PCH_UART (EG20T) via
-a ti_usb_3410_5052 uart to usb chip.
-
-http://us.kontron.com/products/systems+and+platforms/m2m/m2m+smart+services+developer+kit.html
-
-Signed-off-by: Darren Hart <dvhart at linux.intel.com>
-CC: Al Borchers <alborchers at steinerpoint.com>
-CC: Peter Berger <pberger at brimson.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/serial/ti_usb_3410_5052.c | 6 ++++--
- drivers/usb/serial/ti_usb_3410_5052.h | 1 +
- 2 files changed, 5 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/usb/serial/ti_usb_3410_5052.c b/drivers/usb/serial/ti_usb_3410_5052.c
-index 21c82b0..2856474 100644
---- a/drivers/usb/serial/ti_usb_3410_5052.c
-+++ b/drivers/usb/serial/ti_usb_3410_5052.c
-@@ -165,7 +165,7 @@ static unsigned int product_5052_count;
- /* the array dimension is the number of default entries plus */
- /* TI_EXTRA_VID_PID_COUNT user defined entries plus 1 terminating */
- /* null entry */
--static struct usb_device_id ti_id_table_3410[14+TI_EXTRA_VID_PID_COUNT+1] = {
-+static struct usb_device_id ti_id_table_3410[15+TI_EXTRA_VID_PID_COUNT+1] = {
- { USB_DEVICE(TI_VENDOR_ID, TI_3410_PRODUCT_ID) },
- { USB_DEVICE(TI_VENDOR_ID, TI_3410_EZ430_ID) },
- { USB_DEVICE(MTS_VENDOR_ID, MTS_GSM_NO_FW_PRODUCT_ID) },
-@@ -180,6 +180,7 @@ static struct usb_device_id ti_id_table_3410[14+TI_EXTRA_VID_PID_COUNT+1] = {
- { USB_DEVICE(IBM_VENDOR_ID, IBM_454B_PRODUCT_ID) },
- { USB_DEVICE(IBM_VENDOR_ID, IBM_454C_PRODUCT_ID) },
- { USB_DEVICE(ABBOTT_VENDOR_ID, ABBOTT_PRODUCT_ID) },
-+ { USB_DEVICE(TI_VENDOR_ID, FRI2_PRODUCT_ID) },
- };
-
- static struct usb_device_id ti_id_table_5052[5+TI_EXTRA_VID_PID_COUNT+1] = {
-@@ -189,7 +190,7 @@ static struct usb_device_id ti_id_table_5052[5+TI_EXTRA_VID_PID_COUNT+1] = {
- { USB_DEVICE(TI_VENDOR_ID, TI_5052_FIRMWARE_PRODUCT_ID) },
- };
-
--static struct usb_device_id ti_id_table_combined[18+2*TI_EXTRA_VID_PID_COUNT+1] = {
-+static struct usb_device_id ti_id_table_combined[19+2*TI_EXTRA_VID_PID_COUNT+1] = {
- { USB_DEVICE(TI_VENDOR_ID, TI_3410_PRODUCT_ID) },
- { USB_DEVICE(TI_VENDOR_ID, TI_3410_EZ430_ID) },
- { USB_DEVICE(MTS_VENDOR_ID, MTS_GSM_NO_FW_PRODUCT_ID) },
-@@ -208,6 +209,7 @@ static struct usb_device_id ti_id_table_combined[18+2*TI_EXTRA_VID_PID_COUNT+1]
- { USB_DEVICE(IBM_VENDOR_ID, IBM_454B_PRODUCT_ID) },
- { USB_DEVICE(IBM_VENDOR_ID, IBM_454C_PRODUCT_ID) },
- { USB_DEVICE(ABBOTT_VENDOR_ID, ABBOTT_PRODUCT_ID) },
-+ { USB_DEVICE(TI_VENDOR_ID, FRI2_PRODUCT_ID) },
- { }
- };
-
-diff --git a/drivers/usb/serial/ti_usb_3410_5052.h b/drivers/usb/serial/ti_usb_3410_5052.h
-index f140f1b..b353e7e 100644
---- a/drivers/usb/serial/ti_usb_3410_5052.h
-+++ b/drivers/usb/serial/ti_usb_3410_5052.h
-@@ -37,6 +37,7 @@
- #define TI_5152_BOOT_PRODUCT_ID 0x5152 /* no EEPROM, no firmware */
- #define TI_5052_EEPROM_PRODUCT_ID 0x505A /* EEPROM, no firmware */
- #define TI_5052_FIRMWARE_PRODUCT_ID 0x505F /* firmware is running */
-+#define FRI2_PRODUCT_ID 0x5053 /* Fish River Island II */
-
- /* Multi-Tech vendor and product ids */
- #define MTS_VENDOR_ID 0x06E0
---
-1.7.9.5
-
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
deleted file mode 100644
index 40e98b3..0000000
--- 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
+++ /dev/null
@@ -1,38 +0,0 @@
-From 420e76b95a867f5105ee9b3d824c47f62601c19b Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Bj=C3=B8rn=20Mork?= <bjorn at mork.no>
-Date: Wed, 9 May 2012 13:53:21 +0200
-Subject: [PATCH 055/117] USB: cdc-wdm: poll must return POLLHUP if device is
- gone
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit 616b6937e348ef2b4c6ea5fef2cd3c441145efb0 upstream.
-
-Else the poll will be restarted indefinitely in a tight loop,
-preventing final device cleanup.
-
-Cc: Oliver Neukum <oliver at neukum.org>
-Signed-off-by: Bjørn Mork <bjorn at mork.no>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/class/cdc-wdm.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/usb/class/cdc-wdm.c b/drivers/usb/class/cdc-wdm.c
-index cfe5be4..38d8c33 100644
---- a/drivers/usb/class/cdc-wdm.c
-+++ b/drivers/usb/class/cdc-wdm.c
-@@ -511,7 +511,7 @@ static unsigned int wdm_poll(struct file *file, struct poll_table_struct *wait)
-
- spin_lock_irqsave(&desc->iuspin, flags);
- if (test_bit(WDM_DISCONNECTING, &desc->flags)) {
-- mask = POLLERR;
-+ mask = POLLHUP | POLLERR;
- spin_unlock_irqrestore(&desc->iuspin, flags);
- goto desc_out;
- }
---
-1.7.9.5
-
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
deleted file mode 100644
index 4ad688a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0056-USB-cdc-wdm-add-debug-messages-on-cleanup.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From ec4941d4623bada1da050a962485961da8c928d6 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Bj=C3=B8rn=20Mork?= <bjorn at mork.no>
-Date: Mon, 30 Apr 2012 09:26:11 +0200
-Subject: [PATCH 056/117] USB: cdc-wdm: add debug messages on cleanup
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit 880bca3a2a6f159d7453e0cbcbfe2f1d8204d907 upstream.
-
-Device state cleanup is done in either wdm_disconnect or
-wdm_release depending on the order they are called. Adding
-a couple of debug messages to document the program flow.
-
-Signed-off-by: Bjørn Mork <bjorn at mork.no>
-Acked-by: Oliver Neukum <oneukum at suse.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-[bwh: Backported to 3.2: adjust context]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/class/cdc-wdm.c | 8 ++++++--
- 1 file changed, 6 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/usb/class/cdc-wdm.c b/drivers/usb/class/cdc-wdm.c
-index 38d8c33..40a3f0b 100644
---- a/drivers/usb/class/cdc-wdm.c
-+++ b/drivers/usb/class/cdc-wdm.c
-@@ -588,10 +588,12 @@ static int wdm_release(struct inode *inode, struct file *file)
- if (!desc->count) {
- dev_dbg(&desc->intf->dev, "wdm_release: cleanup");
- kill_urbs(desc);
-- if (!test_bit(WDM_DISCONNECTING, &desc->flags))
-+ if (!test_bit(WDM_DISCONNECTING, &desc->flags)) {
- desc->intf->needs_remote_wakeup = 0;
-- else
-+ } else {
-+ dev_dbg(&desc->intf->dev, "%s: device gone - cleaning up\n", __func__);
- cleanup(desc);
-+ }
- }
- mutex_unlock(&wdm_mutex);
- return 0;
-@@ -807,6 +809,8 @@ static void wdm_disconnect(struct usb_interface *intf)
- mutex_unlock(&desc->rlock);
- if (!desc->count)
- cleanup(desc);
-+ else
-+ dev_dbg(&intf->dev, "%s: %d open files - postponing cleanup\n", __func__, desc->count);
- mutex_unlock(&wdm_mutex);
- }
-
---
-1.7.9.5
-
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
deleted file mode 100644
index 146b18b..0000000
--- 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
+++ /dev/null
@@ -1,66 +0,0 @@
-From beaa75548738c322895c5b3ca7c010397cfb0afb Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Bj=C3=B8rn=20Mork?= <bjorn at mork.no>
-Date: Wed, 9 May 2012 13:53:22 +0200
-Subject: [PATCH 057/117] USB: cdc-wdm: cannot use dev_printk when device is
- gone
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit 6b0b79d38806481c1c8fffa7c5842f3c83679a42 upstream.
-
-We cannot dereference a removed USB interface for
-dev_printk. Use pr_debug instead where necessary.
-
-Flush errors are expected if device is unplugged and are
-therefore best ingored at this point.
-
-Move the kill_urbs() call in wdm_release with dev_dbg()
-for the non disconnect, as we know it has already been
-called if WDM_DISCONNECTING is set. This does not
-actually fix anything, but keeps the code more consistent.
-
-Cc: Oliver Neukum <oliver at neukum.org>
-Signed-off-by: Bjørn Mork <bjorn at mork.no>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-[bwh: Backported to 3.2: adjust context]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/class/cdc-wdm.c | 11 +++++++----
- 1 file changed, 7 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/usb/class/cdc-wdm.c b/drivers/usb/class/cdc-wdm.c
-index 40a3f0b..554ac90 100644
---- a/drivers/usb/class/cdc-wdm.c
-+++ b/drivers/usb/class/cdc-wdm.c
-@@ -496,7 +496,9 @@ static int wdm_flush(struct file *file, fl_owner_t id)
- struct wdm_device *desc = file->private_data;
-
- wait_event(desc->wait, !test_bit(WDM_IN_USE, &desc->flags));
-- if (desc->werr < 0)
-+
-+ /* cannot dereference desc->intf if WDM_DISCONNECTING */
-+ if (desc->werr < 0 && !test_bit(WDM_DISCONNECTING, &desc->flags))
- dev_err(&desc->intf->dev, "Error in flush path: %d\n",
- desc->werr);
-
-@@ -586,12 +588,13 @@ static int wdm_release(struct inode *inode, struct file *file)
- mutex_unlock(&desc->wlock);
-
- if (!desc->count) {
-- dev_dbg(&desc->intf->dev, "wdm_release: cleanup");
-- kill_urbs(desc);
- if (!test_bit(WDM_DISCONNECTING, &desc->flags)) {
-+ dev_dbg(&desc->intf->dev, "wdm_release: cleanup");
-+ kill_urbs(desc);
- desc->intf->needs_remote_wakeup = 0;
- } else {
-- dev_dbg(&desc->intf->dev, "%s: device gone - cleaning up\n", __func__);
-+ /* must avoid dev_printk here as desc->intf is invalid */
-+ pr_debug(KBUILD_MODNAME " %s: device gone - cleaning up\n", __func__);
- cleanup(desc);
- }
- }
---
-1.7.9.5
-
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
deleted file mode 100644
index 8c999bc..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0058-tty-Allow-uart_register-unregister-register.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From d3f8f68e0ff8065d2769fc80ebab6cd4a99df65d Mon Sep 17 00:00:00 2001
-From: Alan Cox <alan at linux.intel.com>
-Date: Mon, 14 May 2012 14:51:22 +0100
-Subject: [PATCH 058/117] tty: Allow uart_register/unregister/register
-
-commit 1e66cded334e6cea596c72f6f650eec351b1e959 upstream.
-
-This is legitimate but because we don't clear the drv->state pointer in the
-unregister code causes a bogus BUG().
-
-Resolves-bug: https://bugzilla.kernel.org/show_bug.cgi?id=42880
-Signed-off-by: Alan Cox <alan at linux.intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/tty/serial/serial_core.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/tty/serial/serial_core.c b/drivers/tty/serial/serial_core.c
-index 0406d7f..af5ffb9 100644
---- a/drivers/tty/serial/serial_core.c
-+++ b/drivers/tty/serial/serial_core.c
-@@ -2305,6 +2305,7 @@ void uart_unregister_driver(struct uart_driver *drv)
- tty_unregister_driver(p);
- put_tty_driver(p);
- kfree(drv->state);
-+ drv->state = NULL;
- drv->tty_driver = NULL;
- }
-
---
-1.7.9.5
-
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
deleted file mode 100644
index 22d6da3..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0059-workqueue-skip-nr_running-sanity-check-in-worker_ent.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From ac2fd7de4ac5b536aace631588cdab6c27a3ef9d Mon Sep 17 00:00:00 2001
-From: Tejun Heo <tj at kernel.org>
-Date: Mon, 14 May 2012 15:04:50 -0700
-Subject: [PATCH 059/117] workqueue: skip nr_running sanity check in
- worker_enter_idle() if trustee is active
-
-commit 544ecf310f0e7f51fa057ac2a295fc1b3b35a9d3 upstream.
-
-worker_enter_idle() has WARN_ON_ONCE() which triggers if nr_running
-isn't zero when every worker is idle. This can trigger spuriously
-while a cpu is going down due to the way trustee sets %WORKER_ROGUE
-and zaps nr_running.
-
-It first sets %WORKER_ROGUE on all workers without updating
-nr_running, releases gcwq->lock, schedules, regrabs gcwq->lock and
-then zaps nr_running. If the last running worker enters idle
-inbetween, it would see stale nr_running which hasn't been zapped yet
-and trigger the WARN_ON_ONCE().
-
-Fix it by performing the sanity check iff the trustee is idle.
-
-Signed-off-by: Tejun Heo <tj at kernel.org>
-Reported-by: "Paul E. McKenney" <paulmck at linux.vnet.ibm.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- kernel/workqueue.c | 9 +++++++--
- 1 file changed, 7 insertions(+), 2 deletions(-)
-
-diff --git a/kernel/workqueue.c b/kernel/workqueue.c
-index bb425b1..7947e16 100644
---- a/kernel/workqueue.c
-+++ b/kernel/workqueue.c
-@@ -1215,8 +1215,13 @@ static void worker_enter_idle(struct worker *worker)
- } else
- wake_up_all(&gcwq->trustee_wait);
-
-- /* sanity check nr_running */
-- WARN_ON_ONCE(gcwq->nr_workers == gcwq->nr_idle &&
-+ /*
-+ * Sanity check nr_running. Because trustee releases gcwq->lock
-+ * between setting %WORKER_ROGUE and zapping nr_running, the
-+ * warning may trigger spuriously. Check iff trustee is idle.
-+ */
-+ WARN_ON_ONCE(gcwq->trustee_state == TRUSTEE_DONE &&
-+ gcwq->nr_workers == gcwq->nr_idle &&
- atomic_read(get_gcwq_nr_running(gcwq->cpu)));
- }
-
---
-1.7.9.5
-
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
deleted file mode 100644
index 58e0547..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0060-xhci-Add-new-short-TX-quirk-for-Fresco-Logic-host.patch
+++ /dev/null
@@ -1,129 +0,0 @@
-From 24338a0903923d202e90e35100abe050436bf00a Mon Sep 17 00:00:00 2001
-From: Sarah Sharp <sarah.a.sharp at linux.intel.com>
-Date: Tue, 8 May 2012 09:22:49 -0700
-Subject: [PATCH 060/117] xhci: Add new short TX quirk for Fresco Logic host.
-
-commit 1530bbc6272d9da1e39ef8e06190d42c13a02733 upstream.
-
-Sergio reported that when he recorded audio from a USB headset mic
-plugged into the USB 3.0 port on his ASUS N53SV-DH72, the audio sounded
-"robotic". When plugged into the USB 2.0 port under EHCI on the same
-laptop, the audio sounded fine. The device is:
-
-Bus 002 Device 004: ID 046d:0a0c Logitech, Inc. Clear Chat Comfort USB Headset
-
-The problem was tracked down to the Fresco Logic xHCI host controller
-not correctly reporting short transfers on isochronous IN endpoints.
-The driver would submit a 96 byte transfer, the device would only send
-88 or 90 bytes, and the xHCI host would report the transfer had a
-"successful" completion code, with an untransferred buffer length of 8
-or 6 bytes.
-
-The successful completion code and non-zero untransferred length is a
-contradiction. The xHCI host is supposed to only mark a transfer as
-successful if all the bytes are transferred. Otherwise, the transfer
-should be marked with a short packet completion code. Without the EHCI
-bus trace, we wouldn't know whether the xHCI driver should trust the
-completion code or the untransferred length. With it, we know to trust
-the untransferred length.
-
-Add a new xHCI quirk for the Fresco Logic host controller. If a
-transfer is reported as successful, but the untransferred length is
-non-zero, print a warning. For the Fresco Logic host, change the
-completion code to COMP_SHORT_TX and process the transfer like a short
-transfer.
-
-This should be backported to stable kernels that contain the commit
-f5182b4155b9d686c5540a6822486400e34ddd98 "xhci: Disable MSI for some
-Fresco Logic hosts." That commit was marked for stable kernels as old
-as 2.6.36.
-
-Signed-off-by: Sarah Sharp <sarah.a.sharp at linux.intel.com>
-Reported-by: Sergio Correia <lists at uece.net>
-Tested-by: Sergio Correia <lists at uece.net>
-Signed-off-by: Sarah Sharp <sarah.a.sharp at linux.intel.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/host/xhci-pci.c | 1 +
- drivers/usb/host/xhci-ring.c | 20 +++++++++++++++++---
- drivers/usb/host/xhci.h | 1 +
- 3 files changed, 19 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c
-index 211296a..daf5754 100644
---- a/drivers/usb/host/xhci-pci.c
-+++ b/drivers/usb/host/xhci-pci.c
-@@ -72,6 +72,7 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci)
- xhci_dbg(xhci, "QUIRK: Fresco Logic revision %u "
- "has broken MSI implementation\n",
- pdev->revision);
-+ xhci->quirks |= XHCI_TRUST_TX_LENGTH;
- }
-
- if (pdev->vendor == PCI_VENDOR_ID_NEC)
-diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c
-index 2304c45..fb0981e 100644
---- a/drivers/usb/host/xhci-ring.c
-+++ b/drivers/usb/host/xhci-ring.c
-@@ -1735,8 +1735,12 @@ static int process_isoc_td(struct xhci_hcd *xhci, struct xhci_td *td,
- /* handle completion code */
- switch (trb_comp_code) {
- case COMP_SUCCESS:
-- frame->status = 0;
-- break;
-+ if (TRB_LEN(le32_to_cpu(event->transfer_len)) == 0) {
-+ frame->status = 0;
-+ break;
-+ }
-+ if ((xhci->quirks & XHCI_TRUST_TX_LENGTH))
-+ trb_comp_code = COMP_SHORT_TX;
- case COMP_SHORT_TX:
- frame->status = td->urb->transfer_flags & URB_SHORT_NOT_OK ?
- -EREMOTEIO : 0;
-@@ -1833,13 +1837,16 @@ static int process_bulk_intr_td(struct xhci_hcd *xhci, struct xhci_td *td,
- switch (trb_comp_code) {
- case COMP_SUCCESS:
- /* Double check that the HW transferred everything. */
-- if (event_trb != td->last_trb) {
-+ if (event_trb != td->last_trb ||
-+ TRB_LEN(le32_to_cpu(event->transfer_len)) != 0) {
- xhci_warn(xhci, "WARN Successful completion "
- "on short TX\n");
- if (td->urb->transfer_flags & URB_SHORT_NOT_OK)
- *status = -EREMOTEIO;
- else
- *status = 0;
-+ if ((xhci->quirks & XHCI_TRUST_TX_LENGTH))
-+ trb_comp_code = COMP_SHORT_TX;
- } else {
- *status = 0;
- }
-@@ -1978,6 +1985,13 @@ static int handle_tx_event(struct xhci_hcd *xhci,
- * transfer type
- */
- case COMP_SUCCESS:
-+ if (TRB_LEN(le32_to_cpu(event->transfer_len)) == 0)
-+ break;
-+ if (xhci->quirks & XHCI_TRUST_TX_LENGTH)
-+ trb_comp_code = COMP_SHORT_TX;
-+ else
-+ xhci_warn(xhci, "WARN Successful completion on short TX: "
-+ "needs XHCI_TRUST_TX_LENGTH quirk?\n");
- case COMP_SHORT_TX:
- break;
- case COMP_STOP:
-diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h
-index 4850c4d..363b141 100644
---- a/drivers/usb/host/xhci.h
-+++ b/drivers/usb/host/xhci.h
-@@ -1466,6 +1466,7 @@ struct xhci_hcd {
- #define XHCI_RESET_ON_RESUME (1 << 7)
- #define XHCI_SW_BW_CHECKING (1 << 8)
- #define XHCI_AMD_0x96_HOST (1 << 9)
-+#define XHCI_TRUST_TX_LENGTH (1 << 10)
- unsigned int num_active_eps;
- unsigned int limit_active_eps;
- /* There are two roothubs to keep track of bus suspend info for */
---
-1.7.9.5
-
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
deleted file mode 100644
index 230c80a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0061-usbcore-enable-USB2-LPM-if-port-suspend-fails.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 644753e795bddc5e687932d9e8b6795859553ac3 Mon Sep 17 00:00:00 2001
-From: Andiry Xu <andiry.xu at gmail.com>
-Date: Sat, 5 May 2012 00:50:10 +0800
-Subject: [PATCH 061/117] usbcore: enable USB2 LPM if port suspend fails
-
-commit c3e751e4f4754793bb52bd5ae30e9cc027edbb12 upstream.
-
-USB2 LPM is disabled when device begin to suspend and enabled after device
-is resumed. That's because USB spec does not define the transition from
-U1/U2 state to U3 state.
-
-If usb_port_suspend() fails, usb_port_resume() is never called, and USB2 LPM
-is disabled in this situation. Enable USB2 LPM if port suspend fails.
-
-This patch should be backported to kernels as old as 3.2, that contain
-the commit 65580b4321eb36f16ae8b5987bfa1bb948fc5112 "xHCI: set USB2
-hardware LPM".
-
-Signed-off-by: Andiry Xu <andiry.xu at gmail.com>
-Signed-off-by: Sarah Sharp <sarah.a.sharp at linux.intel.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/core/hub.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
-index ab4e49f..50cf41a 100644
---- a/drivers/usb/core/hub.c
-+++ b/drivers/usb/core/hub.c
-@@ -2420,6 +2420,10 @@ int usb_port_suspend(struct usb_device *udev, pm_message_t msg)
- NULL, 0,
- USB_CTRL_SET_TIMEOUT);
-
-+ /* Try to enable USB2 hardware LPM again */
-+ if (udev->usb2_hw_lpm_capable == 1)
-+ usb_set_usb2_hardware_lpm(udev, 1);
-+
- /* System sleep transitions should never fail */
- if (!PMSG_IS_AUTO(msg))
- status = 0;
---
-1.7.9.5
-
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
deleted file mode 100644
index 92793f3..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0062-perf-x86-Update-event-scheduling-constraints-for-AMD.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From 2ece12a2e8f1df09f28dbed203e3295d99d94c83 Mon Sep 17 00:00:00 2001
-From: Robert Richter <robert.richter at amd.com>
-Date: Fri, 18 May 2012 12:40:42 +0200
-Subject: [PATCH 062/117] perf/x86: Update event scheduling constraints for
- AMD family 15h models
-
-commit 5bcdf5e4fee3c45e1281c25e4941f2163cb28c65 upstream.
-
-This update is for newer family 15h cpu models from 0x02 to 0x1f.
-
-Signed-off-by: Robert Richter <robert.richter at amd.com>
-Acked-by: Peter Zijlstra <peterz at infradead.org>
-Cc: Stephane Eranian <eranian at google.com>
-Link: http://lkml.kernel.org/r/1337337642-1621-1-git-send-email-robert.richter@amd.com
-Signed-off-by: Ingo Molnar <mingo at kernel.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/x86/kernel/cpu/perf_event_amd.c | 11 ++++++++++-
- 1 file changed, 10 insertions(+), 1 deletion(-)
-
-diff --git a/arch/x86/kernel/cpu/perf_event_amd.c b/arch/x86/kernel/cpu/perf_event_amd.c
-index f64a039..3dbfb00 100644
---- a/arch/x86/kernel/cpu/perf_event_amd.c
-+++ b/arch/x86/kernel/cpu/perf_event_amd.c
-@@ -473,6 +473,7 @@ static __initconst const struct x86_pmu amd_pmu = {
- * 0x023 DE PERF_CTL[2:0]
- * 0x02D LS PERF_CTL[3]
- * 0x02E LS PERF_CTL[3,0]
-+ * 0x031 LS PERF_CTL[2:0] (**)
- * 0x043 CU PERF_CTL[2:0]
- * 0x045 CU PERF_CTL[2:0]
- * 0x046 CU PERF_CTL[2:0]
-@@ -486,10 +487,12 @@ static __initconst const struct x86_pmu amd_pmu = {
- * 0x0DD LS PERF_CTL[5:0]
- * 0x0DE LS PERF_CTL[5:0]
- * 0x0DF LS PERF_CTL[5:0]
-+ * 0x1C0 EX PERF_CTL[5:3]
- * 0x1D6 EX PERF_CTL[5:0]
- * 0x1D8 EX PERF_CTL[5:0]
- *
-- * (*) depending on the umask all FPU counters may be used
-+ * (*) depending on the umask all FPU counters may be used
-+ * (**) only one unitmask enabled at a time
- */
-
- static struct event_constraint amd_f15_PMC0 = EVENT_CONSTRAINT(0, 0x01, 0);
-@@ -539,6 +542,12 @@ amd_get_event_constraints_f15h(struct cpu_hw_events *cpuc, struct perf_event *ev
- return &amd_f15_PMC3;
- case 0x02E:
- return &amd_f15_PMC30;
-+ case 0x031:
-+ if (hweight_long(hwc->config & ARCH_PERFMON_EVENTSEL_UMASK) <= 1)
-+ return &amd_f15_PMC20;
-+ return &emptyconstraint;
-+ case 0x1C0:
-+ return &amd_f15_PMC53;
- default:
- return &amd_f15_PMC50;
- }
---
-1.7.9.5
-
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
deleted file mode 100644
index 4f897b4..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0063-USB-fix-resource-leak-in-xhci-power-loss-path.patch
+++ /dev/null
@@ -1,74 +0,0 @@
-From 51025bed29bdd5301f9028357e13707356ae9692 Mon Sep 17 00:00:00 2001
-From: Oliver Neukum <oneukum at suse.de>
-Date: Thu, 10 May 2012 10:19:21 +0200
-Subject: [PATCH 063/117] USB: fix resource leak in xhci power loss path
-
-commit f8a9e72d125f4e00ec529ba67b674321a1f3bf31 upstream.
-
-Some more data structures must be freed and counters
-reset if an XHCI controller has lost power. The failure
-to do so renders some chips inoperative after a certain number
-of S4 cycles.
-
-This patch should be backported to kernels as old as 3.2,
-that contain the commits c29eea621900f18287d50519f72cb9113746d75a
-"xhci: Implement HS/FS/LS bandwidth checking." and
-commit 839c817ce67178ca3c7c7ad534c571bba1e69ebe
-"xhci: Implement HS/FS/LS bandwidth checking."
-
-Signed-off-by: Oliver Neukum <oneukum at suse.de>
-Signed-off-by: Sarah Sharp <sarah.a.sharp at linux.intel.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/host/xhci-mem.c | 26 ++++++++++++++++++++++++++
- 1 file changed, 26 insertions(+)
-
-diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c
-index 01c3800..a7b0676 100644
---- a/drivers/usb/host/xhci-mem.c
-+++ b/drivers/usb/host/xhci-mem.c
-@@ -1699,6 +1699,14 @@ void xhci_mem_cleanup(struct xhci_hcd *xhci)
- {
- struct pci_dev *pdev = to_pci_dev(xhci_to_hcd(xhci)->self.controller);
- struct dev_info *dev_info, *next;
-+ struct list_head *tt_list_head;
-+ struct list_head *tt;
-+ struct list_head *endpoints;
-+ struct list_head *ep, *q;
-+ struct xhci_tt_bw_info *tt_info;
-+ struct xhci_interval_bw_table *bwt;
-+ struct xhci_virt_ep *virt_ep;
-+
- unsigned long flags;
- int size;
- int i;
-@@ -1757,8 +1765,26 @@ void xhci_mem_cleanup(struct xhci_hcd *xhci)
- }
- spin_unlock_irqrestore(&xhci->lock, flags);
-
-+ bwt = &xhci->rh_bw->bw_table;
-+ for (i = 0; i < XHCI_MAX_INTERVAL; i++) {
-+ endpoints = &bwt->interval_bw[i].endpoints;
-+ list_for_each_safe(ep, q, endpoints) {
-+ virt_ep = list_entry(ep, struct xhci_virt_ep, bw_endpoint_list);
-+ list_del(&virt_ep->bw_endpoint_list);
-+ kfree(virt_ep);
-+ }
-+ }
-+
-+ tt_list_head = &xhci->rh_bw->tts;
-+ list_for_each_safe(tt, q, tt_list_head) {
-+ tt_info = list_entry(tt, struct xhci_tt_bw_info, tt_list);
-+ list_del(tt);
-+ kfree(tt_info);
-+ }
-+
- xhci->num_usb2_ports = 0;
- xhci->num_usb3_ports = 0;
-+ xhci->num_active_eps = 0;
- kfree(xhci->usb2_ports);
- kfree(xhci->usb3_ports);
- kfree(xhci->port_array);
---
-1.7.9.5
-
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
deleted file mode 100644
index f28b167..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0064-xhci-Reset-reserved-command-ring-TRBs-on-cleanup.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 06abda2cc51b6f5ffcb67e7b7299ffd7e3af966b Mon Sep 17 00:00:00 2001
-From: Sarah Sharp <sarah.a.sharp at linux.intel.com>
-Date: Tue, 8 May 2012 07:09:26 -0700
-Subject: [PATCH 064/117] xhci: Reset reserved command ring TRBs on cleanup.
-
-commit 33b2831ac870d50cc8e01c317b07fb1e69c13fe1 upstream.
-
-When the xHCI driver needs to clean up memory (perhaps due to a failed
-register restore on resume from S3 or resume from S4), it needs to reset
-the number of reserved TRBs on the command ring to zero. Otherwise,
-several resume cycles (about 30) with a UAS device attached will
-continually increment the number of reserved TRBs, until all command
-submissions fail because there isn't enough room on the command ring.
-
-This patch should be backported to kernels as old as 2.6.32,
-that contain the commit 913a8a344ffcaf0b4a586d6662a2c66a7106557d
-"USB: xhci: Change how xHCI commands are handled."
-
-Signed-off-by: Sarah Sharp <sarah.a.sharp at linux.intel.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/host/xhci-mem.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c
-index a7b0676..4232e868 100644
---- a/drivers/usb/host/xhci-mem.c
-+++ b/drivers/usb/host/xhci-mem.c
-@@ -1723,6 +1723,7 @@ void xhci_mem_cleanup(struct xhci_hcd *xhci)
- xhci->event_ring = NULL;
- xhci_dbg(xhci, "Freed event ring\n");
-
-+ xhci->cmd_ring_reserved_trbs = 0;
- if (xhci->cmd_ring)
- xhci_ring_free(xhci, xhci->cmd_ring);
- xhci->cmd_ring = NULL;
---
-1.7.9.5
-
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
deleted file mode 100644
index 4814713..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0065-USB-Remove-races-in-devio.c.patch
+++ /dev/null
@@ -1,132 +0,0 @@
-From 13538bbeb4fc2e5f45d426579967a675474e4f16 Mon Sep 17 00:00:00 2001
-From: Huajun Li <huajun.li.lee at gmail.com>
-Date: Fri, 18 May 2012 20:12:51 +0800
-Subject: [PATCH 065/117] USB: Remove races in devio.c
-
-commit 4e09dcf20f7b5358615514c2ec8584b248ab8874 upstream.
-
-There exist races in devio.c, below is one case,
-and there are similar races in destroy_async()
-and proc_unlinkurb(). Remove these races.
-
- cancel_bulk_urbs() async_completed()
-------------------- -----------------------
- spin_unlock(&ps->lock);
-
- list_move_tail(&as->asynclist,
- &ps->async_completed);
-
- wake_up(&ps->wait);
-
- Lead to free_async() be triggered,
- then urb and 'as' will be freed.
-
- usb_unlink_urb(as->urb);
- ===> refer to the freed 'as'
-
-Signed-off-by: Huajun Li <huajun.li.lee at gmail.com>
-Cc: Alan Stern <stern at rowland.harvard.edu>
-Cc: Oncaphillis <oncaphillis at snafu.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/core/devio.c | 33 +++++++++++++++++++++++++--------
- 1 file changed, 25 insertions(+), 8 deletions(-)
-
-diff --git a/drivers/usb/core/devio.c b/drivers/usb/core/devio.c
-index 7abf060..f6ff837 100644
---- a/drivers/usb/core/devio.c
-+++ b/drivers/usb/core/devio.c
-@@ -295,17 +295,14 @@ static struct async *async_getcompleted(struct dev_state *ps)
- static struct async *async_getpending(struct dev_state *ps,
- void __user *userurb)
- {
-- unsigned long flags;
- struct async *as;
-
-- spin_lock_irqsave(&ps->lock, flags);
- list_for_each_entry(as, &ps->async_pending, asynclist)
- if (as->userurb == userurb) {
- list_del_init(&as->asynclist);
-- spin_unlock_irqrestore(&ps->lock, flags);
- return as;
- }
-- spin_unlock_irqrestore(&ps->lock, flags);
-+
- return NULL;
- }
-
-@@ -360,6 +357,7 @@ static void cancel_bulk_urbs(struct dev_state *ps, unsigned bulk_addr)
- __releases(ps->lock)
- __acquires(ps->lock)
- {
-+ struct urb *urb;
- struct async *as;
-
- /* Mark all the pending URBs that match bulk_addr, up to but not
-@@ -382,8 +380,11 @@ __acquires(ps->lock)
- list_for_each_entry(as, &ps->async_pending, asynclist) {
- if (as->bulk_status == AS_UNLINK) {
- as->bulk_status = 0; /* Only once */
-+ urb = as->urb;
-+ usb_get_urb(urb);
- spin_unlock(&ps->lock); /* Allow completions */
-- usb_unlink_urb(as->urb);
-+ usb_unlink_urb(urb);
-+ usb_put_urb(urb);
- spin_lock(&ps->lock);
- goto rescan;
- }
-@@ -434,6 +435,7 @@ static void async_completed(struct urb *urb)
-
- static void destroy_async(struct dev_state *ps, struct list_head *list)
- {
-+ struct urb *urb;
- struct async *as;
- unsigned long flags;
-
-@@ -441,10 +443,13 @@ static void destroy_async(struct dev_state *ps, struct list_head *list)
- while (!list_empty(list)) {
- as = list_entry(list->next, struct async, asynclist);
- list_del_init(&as->asynclist);
-+ urb = as->urb;
-+ usb_get_urb(urb);
-
- /* drop the spinlock so the completion handler can run */
- spin_unlock_irqrestore(&ps->lock, flags);
-- usb_kill_urb(as->urb);
-+ usb_kill_urb(urb);
-+ usb_put_urb(urb);
- spin_lock_irqsave(&ps->lock, flags);
- }
- spin_unlock_irqrestore(&ps->lock, flags);
-@@ -1350,12 +1355,24 @@ static int proc_submiturb(struct dev_state *ps, void __user *arg)
-
- static int proc_unlinkurb(struct dev_state *ps, void __user *arg)
- {
-+ struct urb *urb;
- struct async *as;
-+ unsigned long flags;
-
-+ spin_lock_irqsave(&ps->lock, flags);
- as = async_getpending(ps, arg);
-- if (!as)
-+ if (!as) {
-+ spin_unlock_irqrestore(&ps->lock, flags);
- return -EINVAL;
-- usb_kill_urb(as->urb);
-+ }
-+
-+ urb = as->urb;
-+ usb_get_urb(urb);
-+ spin_unlock_irqrestore(&ps->lock, flags);
-+
-+ usb_kill_urb(urb);
-+ usb_put_urb(urb);
-+
- return 0;
- }
-
---
-1.7.9.5
-
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
deleted file mode 100644
index dc48a60..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0066-md-using-GFP_NOIO-to-allocate-bio-for-flush-request.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From d4bae88d4fc370e24457c3cf69fb343316b8f759 Mon Sep 17 00:00:00 2001
-From: Shaohua Li <shli at kernel.org>
-Date: Mon, 21 May 2012 09:26:59 +1000
-Subject: [PATCH 066/117] md: using GFP_NOIO to allocate bio for flush request
-
-commit b5e1b8cee7ad58a15d2fa79bcd7946acb592602d upstream.
-
-A flush request is usually issued in transaction commit code path, so
-using GFP_KERNEL to allocate memory for flush request bio falls into
-the classic deadlock issue.
-
-This is suitable for any -stable kernel to which it applies as it
-avoids a possible deadlock.
-
-Signed-off-by: Shaohua Li <shli at fusionio.com>
-Signed-off-by: NeilBrown <neilb at suse.de>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/md/md.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/md/md.c b/drivers/md/md.c
-index adcd850..700ecae 100644
---- a/drivers/md/md.c
-+++ b/drivers/md/md.c
-@@ -453,7 +453,7 @@ static void submit_flushes(struct work_struct *ws)
- atomic_inc(&rdev->nr_pending);
- atomic_inc(&rdev->nr_pending);
- rcu_read_unlock();
-- bi = bio_alloc_mddev(GFP_KERNEL, 0, mddev);
-+ bi = bio_alloc_mddev(GFP_NOIO, 0, mddev);
- bi->bi_end_io = md_end_flush;
- bi->bi_private = rdev;
- bi->bi_bdev = rdev->bdev;
---
-1.7.9.5
-
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
deleted file mode 100644
index 346a207..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0067-um-Implement-a-custom-pte_same-function.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From ed8e2c17d62006fb136c30abeb552673727c5eee Mon Sep 17 00:00:00 2001
-From: Richard Weinberger <richard at nod.at>
-Date: Sat, 14 Apr 2012 17:29:30 +0200
-Subject: [PATCH 067/117] um: Implement a custom pte_same() function
-
-commit f15b9000eb1d09bbaa4b0a6b2089d7e1f64e84b3 upstream.
-
-UML uses the _PAGE_NEWPAGE flag to mark pages which are not jet
-installed on the host side using mmap().
-pte_same() has to ignore this flag, otherwise unuse_pte_range()
-is unable to unuse the page because two identical
-page tables entries with different _PAGE_NEWPAGE flags would not
-match and swapoff() would never return.
-
-Analyzed-by: Hugh Dickins <hughd at google.com>
-Signed-off-by: Richard Weinberger <richard at nod.at>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/um/include/asm/pgtable.h | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-diff --git a/arch/um/include/asm/pgtable.h b/arch/um/include/asm/pgtable.h
-index 41474fb..0fea0ec 100644
---- a/arch/um/include/asm/pgtable.h
-+++ b/arch/um/include/asm/pgtable.h
-@@ -271,6 +271,12 @@ static inline void set_pte(pte_t *pteptr, pte_t pteval)
- }
- #define set_pte_at(mm,addr,ptep,pteval) set_pte(ptep,pteval)
-
-+#define __HAVE_ARCH_PTE_SAME
-+static inline int pte_same(pte_t pte_a, pte_t pte_b)
-+{
-+ return !((pte_val(pte_a) ^ pte_val(pte_b)) & ~_PAGE_NEWPAGE);
-+}
-+
- /*
- * Conversion functions: convert a page and protection to a page entry,
- * and a page entry and page directory to the page they refer to.
---
-1.7.9.5
-
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
deleted file mode 100644
index cdb5252..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0068-um-Fix-__swp_type.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From a8f0308ef13a60d8103b7635fdbd54e10a621a0a Mon Sep 17 00:00:00 2001
-From: Richard Weinberger <richard at nod.at>
-Date: Sat, 14 Apr 2012 17:46:01 +0200
-Subject: [PATCH 068/117] um: Fix __swp_type()
-
-commit 2b76ebaa728f8a3967c52aa189261c72fe56a6f1 upstream.
-
-The current __swp_type() function uses a too small bitshift.
-Using more than one swap files causes bad pages because
-the type bits clash with other page flags.
-
-Analyzed-by: Hugh Dickins <hughd at google.com>
-Signed-off-by: Richard Weinberger <richard at nod.at>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/um/include/asm/pgtable.h | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/arch/um/include/asm/pgtable.h b/arch/um/include/asm/pgtable.h
-index 0fea0ec..aa365c5 100644
---- a/arch/um/include/asm/pgtable.h
-+++ b/arch/um/include/asm/pgtable.h
-@@ -352,11 +352,11 @@ extern pte_t *virt_to_pte(struct mm_struct *mm, unsigned long addr);
- #define update_mmu_cache(vma,address,ptep) do ; while (0)
-
- /* Encode and de-code a swap entry */
--#define __swp_type(x) (((x).val >> 4) & 0x3f)
-+#define __swp_type(x) (((x).val >> 5) & 0x1f)
- #define __swp_offset(x) ((x).val >> 11)
-
- #define __swp_entry(type, offset) \
-- ((swp_entry_t) { ((type) << 4) | ((offset) << 11) })
-+ ((swp_entry_t) { ((type) << 5) | ((offset) << 11) })
- #define __pte_to_swp_entry(pte) \
- ((swp_entry_t) { pte_val(pte_mkuptodate(pte)) })
- #define __swp_entry_to_pte(x) ((pte_t) { (x).val })
---
-1.7.9.5
-
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
deleted file mode 100644
index b4f1a5f..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0069-swap-don-t-do-discard-if-no-discard-option-added.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From c3ad2b1e42ce62ce0b8aa5283e5f1eee851dd3fb Mon Sep 17 00:00:00 2001
-From: Shaohua Li <shli at kernel.org>
-Date: Wed, 21 Mar 2012 16:34:17 -0700
-Subject: [PATCH 069/117] swap: don't do discard if no discard option added
-
-commit 052b1987faca3606109d88d96bce124851f7c4c2 upstream.
-
-When swapon() was not passed the SWAP_FLAG_DISCARD option, sys_swapon()
-will still perform a discard operation. This can cause problems if
-discard is slow or buggy.
-
-Reverse the order of the check so that a discard operation is performed
-only if the sys_swapon() caller is attempting to enable discard.
-
-Signed-off-by: Shaohua Li <shli at fusionio.com>
-Reported-by: Holger Kiehl <Holger.Kiehl at dwd.de>
-Tested-by: Holger Kiehl <Holger.Kiehl at dwd.de>
-Cc: Hugh Dickins <hughd at google.com>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- mm/swapfile.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/mm/swapfile.c b/mm/swapfile.c
-index 2015a1e..d3955f2 100644
---- a/mm/swapfile.c
-+++ b/mm/swapfile.c
-@@ -2102,7 +2102,7 @@ SYSCALL_DEFINE2(swapon, const char __user *, specialfile, int, swap_flags)
- p->flags |= SWP_SOLIDSTATE;
- p->cluster_next = 1 + (random32() % p->highest_bit);
- }
-- if (discard_swap(p) == 0 && (swap_flags & SWAP_FLAG_DISCARD))
-+ if ((swap_flags & SWAP_FLAG_DISCARD) && discard_swap(p) == 0)
- p->flags |= SWP_DISCARDABLE;
- }
-
---
-1.7.9.5
-
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
deleted file mode 100644
index cf106b4..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0070-Input-wacom-relax-Bamboo-stylus-ID-check.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From ae03191fbcee985e26e744fc2e3b928077e647a1 Mon Sep 17 00:00:00 2001
-From: Chris Bagwell <chris at cnpbagwell.com>
-Date: Wed, 26 Oct 2011 22:28:34 -0700
-Subject: [PATCH 070/117] Input: wacom - relax Bamboo stylus ID check
-
-commit c5981411f60c31f0dff6f0f98d2d3711384badaf upstream.
-
-Bit 0x02 always means tip versus eraser. Bit 0x01 is something related
-to version of stylus and different values are starting to be used.
-
-Relaxing proximity check is required to be used with 3rd generation
-Bamboo Pen and Touch tablets.
-
-Signed-off-by: Chris Bagwell <chris at cnpbagwell.com>
-Acked-by: Ping Cheng <pingc at wacom.com>
-Signed-off-by: Dmitry Torokhov <dtor at mail.ru>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/input/tablet/wacom_wac.c | 7 +------
- 1 file changed, 1 insertion(+), 6 deletions(-)
-
-diff --git a/drivers/input/tablet/wacom_wac.c b/drivers/input/tablet/wacom_wac.c
-index 2ee47d0..f00c70e 100644
---- a/drivers/input/tablet/wacom_wac.c
-+++ b/drivers/input/tablet/wacom_wac.c
-@@ -843,12 +843,7 @@ static int wacom_bpt_pen(struct wacom_wac *wacom)
- unsigned char *data = wacom->data;
- int prox = 0, x = 0, y = 0, p = 0, d = 0, pen = 0, btn1 = 0, btn2 = 0;
-
-- /*
-- * Similar to Graphire protocol, data[1] & 0x20 is proximity and
-- * data[1] & 0x18 is tool ID. 0x30 is safety check to ignore
-- * 2 unused tool ID's.
-- */
-- prox = (data[1] & 0x30) == 0x30;
-+ prox = (data[1] & 0x20) == 0x20;
-
- /*
- * All reports shared between PEN and RUBBER tool must be
---
-1.7.9.5
-
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
deleted file mode 100644
index b1855cc..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0071-ahci-Detect-Marvell-88SE9172-SATA-controller.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 3e4b4afbb70e3054734cacd6aacf50024f27c3dd Mon Sep 17 00:00:00 2001
-From: Matt Johnson <johnso87 at illinois.edu>
-Date: Fri, 27 Apr 2012 01:42:30 -0500
-Subject: [PATCH 071/117] ahci: Detect Marvell 88SE9172 SATA controller
-
-commit 642d89252201c4155fc3946bf9cdea409e5d263e upstream.
-
-The Marvell 88SE9172 SATA controller (PCI ID 1b4b 917a) already worked
-once it was detected, but was missing an ahci_pci_tbl entry.
-
-Boot tested on a Gigabyte Z68X-UD3H-B3 motherboard.
-
-Signed-off-by: Matt Johnson <johnso87 at illinois.edu>
-Signed-off-by: Jeff Garzik <jgarzik at redhat.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/ata/ahci.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
-index cf26222..fb65915 100644
---- a/drivers/ata/ahci.c
-+++ b/drivers/ata/ahci.c
-@@ -384,6 +384,8 @@ static const struct pci_device_id ahci_pci_tbl[] = {
- .driver_data = board_ahci_yes_fbs }, /* 88se9128 */
- { PCI_DEVICE(0x1b4b, 0x9125),
- .driver_data = board_ahci_yes_fbs }, /* 88se9125 */
-+ { PCI_DEVICE(0x1b4b, 0x917a),
-+ .driver_data = board_ahci_yes_fbs }, /* 88se9172 */
- { PCI_DEVICE(0x1b4b, 0x91a3),
- .driver_data = board_ahci_yes_fbs },
-
---
-1.7.9.5
-
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
deleted file mode 100644
index 9af45a0..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0072-ARM-7365-1-drop-unused-parameter-from-flush_cache_us.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-From 06d6cd667991ac824b4e32c07ad4c382e202b920 Mon Sep 17 00:00:00 2001
-From: Dima Zavin <dima at android.com>
-Date: Thu, 29 Mar 2012 20:44:06 +0100
-Subject: [PATCH 072/117] ARM: 7365/1: drop unused parameter from
- flush_cache_user_range
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit 4542b6a0fa6b48d9ae6b41c1efeb618b7a221b2a upstream.
-
-vma isn't used and flush_cache_user_range isn't a standard macro that
-is used on several archs with the same prototype. In fact only unicore32
-has a macro with the same name (with an identical implementation and no
-in-tree users).
-
-This is a part of a patch proposed by Dima Zavin (with Message-id:
-1272439931-12795-1-git-send-email-dima at android.com) that didn't get
-accepted.
-
-Cc: Dima Zavin <dima at android.com>
-Acked-by: Catalin Marinas <catalin.marinas at arm.com>
-Signed-off-by: Uwe Kleine-König <u.kleine-koenig at pengutronix.de>
-Signed-off-by: Russell King <rmk+kernel at arm.linux.org.uk>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/arm/include/asm/cacheflush.h | 2 +-
- arch/arm/kernel/traps.c | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/arch/arm/include/asm/cacheflush.h b/arch/arm/include/asm/cacheflush.h
-index d5d8d5c..1252a26 100644
---- a/arch/arm/include/asm/cacheflush.h
-+++ b/arch/arm/include/asm/cacheflush.h
-@@ -249,7 +249,7 @@ extern void flush_cache_page(struct vm_area_struct *vma, unsigned long user_addr
- * Harvard caches are synchronised for the user space address range.
- * This is used for the ARM private sys_cacheflush system call.
- */
--#define flush_cache_user_range(vma,start,end) \
-+#define flush_cache_user_range(start,end) \
- __cpuc_coherent_user_range((start) & PAGE_MASK, PAGE_ALIGN(end))
-
- /*
-diff --git a/arch/arm/kernel/traps.c b/arch/arm/kernel/traps.c
-index 99a5727..f363ad9 100644
---- a/arch/arm/kernel/traps.c
-+++ b/arch/arm/kernel/traps.c
-@@ -488,7 +488,7 @@ do_cache_op(unsigned long start, unsigned long end, int flags)
- if (end > vma->vm_end)
- end = vma->vm_end;
-
-- flush_cache_user_range(vma, start, end);
-+ flush_cache_user_range(start, end);
- }
- up_read(&mm->mmap_sem);
- }
---
-1.7.9.5
-
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
deleted file mode 100644
index bb8d026..0000000
--- 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
+++ /dev/null
@@ -1,45 +0,0 @@
-From bf1dbf3f545a79e9ac5ff460053283f2760f095b Mon Sep 17 00:00:00 2001
-From: Dima Zavin <dima at android.com>
-Date: Mon, 30 Apr 2012 10:26:14 +0100
-Subject: [PATCH 073/117] ARM: 7409/1: Do not call flush_cache_user_range with
- mmap_sem held
-
-commit 435a7ef52db7d86e67a009b36cac1457f8972391 upstream.
-
-We can't be holding the mmap_sem while calling flush_cache_user_range
-because the flush can fault. If we fault on a user address, the
-page fault handler will try to take mmap_sem again. Since both places
-acquire the read lock, most of the time it succeeds. However, if another
-thread tries to acquire the write lock on the mmap_sem (e.g. mmap) in
-between the call to flush_cache_user_range and the fault, the down_read
-in do_page_fault will deadlock.
-
-[will: removed drop of vma parameter as already queued by rmk (7365/1)]
-
-Acked-by: Catalin Marinas <catalin.marinas at arm.com>
-Signed-off-by: Dima Zavin <dima at android.com>
-Signed-off-by: John Stultz <john.stultz at linaro.org>
-Signed-off-by: Will Deacon <will.deacon at arm.com>
-Signed-off-by: Russell King <rmk+kernel at arm.linux.org.uk>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/arm/kernel/traps.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/arch/arm/kernel/traps.c b/arch/arm/kernel/traps.c
-index f363ad9..160cb16 100644
---- a/arch/arm/kernel/traps.c
-+++ b/arch/arm/kernel/traps.c
-@@ -488,7 +488,9 @@ do_cache_op(unsigned long start, unsigned long end, int flags)
- if (end > vma->vm_end)
- end = vma->vm_end;
-
-+ up_read(&mm->mmap_sem);
- flush_cache_user_range(start, end);
-+ return;
- }
- up_read(&mm->mmap_sem);
- }
---
-1.7.9.5
-
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
deleted file mode 100644
index 615aa31..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0074-sony-laptop-Enable-keyboard-backlight-by-default.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From 444d2b8e5c56b431d2aa79db0c1742c6159b661a Mon Sep 17 00:00:00 2001
-From: Josh Boyer <jwboyer at redhat.com>
-Date: Wed, 2 Nov 2011 14:32:00 -0400
-Subject: [PATCH 074/117] sony-laptop: Enable keyboard backlight by default
-
-commit 6fe6ae56a7cebaebc2e6daa11c423e4692f9b592 upstream.
-
-When the keyboard backlight support was originally added, the commit said
-to default it to on with a 10 second timeout. That actually wasn't the
-case, as the default value is commented out for the kbd_backlight parameter.
-Because it is a static variable, it gets set to 0 by default without some
-other form of initialization.
-
-However, it seems the function to set the value wasn't actually called
-immediately, so whatever state the keyboard was in initially would remain.
-Then commit df410d522410e67660 was introduced during the 2.6.39 timeframe to
-immediately set whatever value was present (as well as attempt to
-restore/reset the state on module removal or resume). That seems to have
-now forced the light off immediately when the module is loaded unless
-the option kbd_backlight=1 is specified.
-
-Let's enable it by default again (for the first time). This should solve
-https://bugzilla.redhat.com/show_bug.cgi?id=728478
-
-Signed-off-by: Josh Boyer <jwboyer at redhat.com>
-Acked-by: Mattia Dongili <malattia at linux.it>
-Signed-off-by: Matthew Garrett <mjg at redhat.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/platform/x86/sony-laptop.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/platform/x86/sony-laptop.c b/drivers/platform/x86/sony-laptop.c
-index c006dee..40c4705 100644
---- a/drivers/platform/x86/sony-laptop.c
-+++ b/drivers/platform/x86/sony-laptop.c
-@@ -127,7 +127,7 @@ MODULE_PARM_DESC(minor,
- "default is -1 (automatic)");
- #endif
-
--static int kbd_backlight; /* = 1 */
-+static int kbd_backlight = 1;
- module_param(kbd_backlight, int, 0444);
- MODULE_PARM_DESC(kbd_backlight,
- "set this to 0 to disable keyboard backlight, "
---
-1.7.9.5
-
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
deleted file mode 100644
index e86f89a..0000000
--- 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
+++ /dev/null
@@ -1,54 +0,0 @@
-From b277e4c19f3668e1a58e03d8933a3c6cd612c5e2 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <levinsasha928 at gmail.com>
-Date: Sat, 5 May 2012 17:06:35 +0200
-Subject: [PATCH 075/117] init: don't try mounting device as nfs root unless
- type fully matches
-
-commit 377485f6244af255b04d662cf19cddbbc4ae4310 upstream.
-
-Currently, we'll try mounting any device who's major device number is
-UNNAMED_MAJOR as NFS root. This would happen for non-NFS devices as
-well (such as 9p devices) but it wouldn't cause any issues since
-mounting the device as NFS would fail quickly and the code proceeded to
-doing the proper mount:
-
- [ 101.522716] VFS: Unable to mount root fs via NFS, trying floppy.
- [ 101.534499] VFS: Mounted root (9p filesystem) on device 0:18.
-
-Commit 6829a048102a ("NFS: Retry mounting NFSROOT") introduced retries
-when mounting NFS root, which means that now we don't immediately fail
-and instead it takes an additional 90+ seconds until we stop retrying,
-which has revealed the issue this patch fixes.
-
-This meant that it would take an additional 90 seconds to boot when
-we're not using a device type which gets detected in order before NFS.
-
-This patch modifies the NFS type check to require device type to be
-'Root_NFS' instead of requiring the device to have an UNNAMED_MAJOR
-major. This makes boot process cleaner since we now won't go through
-the NFS mounting code at all when the device isn't an NFS root
-("/dev/nfs").
-
-Signed-off-by: Sasha Levin <levinsasha928 at gmail.com>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- init/do_mounts.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/init/do_mounts.c b/init/do_mounts.c
-index db6e5ee..d6c229f 100644
---- a/init/do_mounts.c
-+++ b/init/do_mounts.c
-@@ -470,7 +470,7 @@ void __init change_floppy(char *fmt, ...)
- void __init mount_root(void)
- {
- #ifdef CONFIG_ROOT_NFS
-- if (MAJOR(ROOT_DEV) == UNNAMED_MAJOR) {
-+ if (ROOT_DEV == Root_NFS) {
- if (mount_nfs_root())
- return;
-
---
-1.7.9.5
-
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
deleted file mode 100644
index 0d731c2..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0076-memcg-free-spare-array-to-avoid-memory-leak.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 0b0f028ae418e6b772241ed68bee5f2d0c6bcb3a Mon Sep 17 00:00:00 2001
-From: Sha Zhengju <handai.szj at taobao.com>
-Date: Thu, 10 May 2012 13:01:45 -0700
-Subject: [PATCH 076/117] memcg: free spare array to avoid memory leak
-
-commit 8c7577637ca31385e92769a77e2ab5b428e8b99c upstream.
-
-When the last event is unregistered, there is no need to keep the spare
-array anymore. So free it to avoid memory leak.
-
-Signed-off-by: Sha Zhengju <handai.szj at taobao.com>
-Acked-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu at jp.fujitsu.com>
-Reviewed-by: Kirill A. Shutemov <kirill at shutemov.name>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- mm/memcontrol.c | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-diff --git a/mm/memcontrol.c b/mm/memcontrol.c
-index 778554f..c8425b1 100644
---- a/mm/memcontrol.c
-+++ b/mm/memcontrol.c
-@@ -4549,6 +4549,12 @@ static void mem_cgroup_usage_unregister_event(struct cgroup *cgrp,
- swap_buffers:
- /* Swap primary and spare array */
- thresholds->spare = thresholds->primary;
-+ /* If all events are unregistered, free the spare array */
-+ if (!new) {
-+ kfree(thresholds->spare);
-+ thresholds->spare = NULL;
-+ }
-+
- rcu_assign_pointer(thresholds->primary, new);
-
- /* To be sure that nobody uses thresholds */
---
-1.7.9.5
-
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
deleted file mode 100644
index de65263..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0077-compat-Fix-RT-signal-mask-corruption-via-sigprocmask.patch
+++ /dev/null
@@ -1,107 +0,0 @@
-From 2ed9e3e61cd65b3a43998d48846744be1b263394 Mon Sep 17 00:00:00 2001
-From: Jan Kiszka <jan.kiszka at siemens.com>
-Date: Thu, 10 May 2012 10:04:36 -0300
-Subject: [PATCH 077/117] compat: Fix RT signal mask corruption via
- sigprocmask
-
-commit b7dafa0ef3145c31d7753be0a08b3cbda51f0209 upstream.
-
-compat_sys_sigprocmask reads a smaller signal mask from userspace than
-sigprogmask accepts for setting. So the high word of blocked.sig[0]
-will be cleared, releasing any potentially blocked RT signal.
-
-This was discovered via userspace code that relies on get/setcontext.
-glibc's i386 versions of those functions use sigprogmask instead of
-rt_sigprogmask to save/restore signal mask and caused RT signal
-unblocking this way.
-
-As suggested by Linus, this replaces the sys_sigprocmask based compat
-version with one that open-codes the required logic, including the merge
-of the existing blocked set with the new one provided on SIG_SETMASK.
-
-Signed-off-by: Jan Kiszka <jan.kiszka at siemens.com>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- kernel/compat.c | 63 ++++++++++++++++++++++++++++++++++++++++---------------
- 1 file changed, 46 insertions(+), 17 deletions(-)
-
-diff --git a/kernel/compat.c b/kernel/compat.c
-index f346ced..a6d0649 100644
---- a/kernel/compat.c
-+++ b/kernel/compat.c
-@@ -320,25 +320,54 @@ asmlinkage long compat_sys_sigpending(compat_old_sigset_t __user *set)
-
- #ifdef __ARCH_WANT_SYS_SIGPROCMASK
-
--asmlinkage long compat_sys_sigprocmask(int how, compat_old_sigset_t __user *set,
-- compat_old_sigset_t __user *oset)
-+/*
-+ * sys_sigprocmask SIG_SETMASK sets the first (compat) word of the
-+ * blocked set of signals to the supplied signal set
-+ */
-+static inline void compat_sig_setmask(sigset_t *blocked, compat_sigset_word set)
- {
-- old_sigset_t s;
-- long ret;
-- mm_segment_t old_fs;
-+ memcpy(blocked->sig, &set, sizeof(set));
-+}
-
-- if (set && get_user(s, set))
-- return -EFAULT;
-- old_fs = get_fs();
-- set_fs(KERNEL_DS);
-- ret = sys_sigprocmask(how,
-- set ? (old_sigset_t __user *) &s : NULL,
-- oset ? (old_sigset_t __user *) &s : NULL);
-- set_fs(old_fs);
-- if (ret == 0)
-- if (oset)
-- ret = put_user(s, oset);
-- return ret;
-+asmlinkage long compat_sys_sigprocmask(int how,
-+ compat_old_sigset_t __user *nset,
-+ compat_old_sigset_t __user *oset)
-+{
-+ old_sigset_t old_set, new_set;
-+ sigset_t new_blocked;
-+
-+ old_set = current->blocked.sig[0];
-+
-+ if (nset) {
-+ if (get_user(new_set, nset))
-+ return -EFAULT;
-+ new_set &= ~(sigmask(SIGKILL) | sigmask(SIGSTOP));
-+
-+ new_blocked = current->blocked;
-+
-+ switch (how) {
-+ case SIG_BLOCK:
-+ sigaddsetmask(&new_blocked, new_set);
-+ break;
-+ case SIG_UNBLOCK:
-+ sigdelsetmask(&new_blocked, new_set);
-+ break;
-+ case SIG_SETMASK:
-+ compat_sig_setmask(&new_blocked, new_set);
-+ break;
-+ default:
-+ return -EINVAL;
-+ }
-+
-+ set_current_blocked(&new_blocked);
-+ }
-+
-+ if (oset) {
-+ if (put_user(old_set, oset))
-+ return -EFAULT;
-+ }
-+
-+ return 0;
- }
-
- #endif
---
-1.7.9.5
-
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
deleted file mode 100644
index d7a8016..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0078-ext3-Fix-error-handling-on-inode-bitmap-corruption.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From c95c67d82938539844654f8d12a831e06ddae45a Mon Sep 17 00:00:00 2001
-From: Jan Kara <jack at suse.cz>
-Date: Thu, 8 Dec 2011 21:13:46 +0100
-Subject: [PATCH 078/117] ext3: Fix error handling on inode bitmap corruption
-
-commit 1415dd8705394399d59a3df1ab48d149e1e41e77 upstream.
-
-When insert_inode_locked() fails in ext3_new_inode() it most likely
-means inode bitmap got corrupted and we allocated again inode which
-is already in use. Also doing unlock_new_inode() during error recovery
-is wrong since inode does not have I_NEW set. Fix the problem by jumping
-to fail: (instead of fail_drop:) which declares filesystem error and
-does not call unlock_new_inode().
-
-Reviewed-by: Eric Sandeen <sandeen at redhat.com>
-Signed-off-by: Jan Kara <jack at suse.cz>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/ext3/ialloc.c | 8 ++++++--
- 1 file changed, 6 insertions(+), 2 deletions(-)
-
-diff --git a/fs/ext3/ialloc.c b/fs/ext3/ialloc.c
-index 5c866e0..adae962 100644
---- a/fs/ext3/ialloc.c
-+++ b/fs/ext3/ialloc.c
-@@ -525,8 +525,12 @@ got:
- if (IS_DIRSYNC(inode))
- handle->h_sync = 1;
- if (insert_inode_locked(inode) < 0) {
-- err = -EINVAL;
-- goto fail_drop;
-+ /*
-+ * Likely a bitmap corruption causing inode to be allocated
-+ * twice.
-+ */
-+ err = -EIO;
-+ goto fail;
- }
- spin_lock(&sbi->s_next_gen_lock);
- inode->i_generation = sbi->s_next_generation++;
---
-1.7.9.5
-
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
deleted file mode 100644
index 4d6aacf..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0079-ext4-fix-error-handling-on-inode-bitmap-corruption.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 92d372ef4ce9cea8d08163f727e4eeac7e9a2472 Mon Sep 17 00:00:00 2001
-From: Jan Kara <jack at suse.cz>
-Date: Sun, 18 Dec 2011 17:37:02 -0500
-Subject: [PATCH 079/117] ext4: fix error handling on inode bitmap corruption
-
-commit acd6ad83517639e8f09a8c5525b1dccd81cd2a10 upstream.
-
-When insert_inode_locked() fails in ext4_new_inode() it most likely means inode
-bitmap got corrupted and we allocated again inode which is already in use. Also
-doing unlock_new_inode() during error recovery is wrong since the inode does
-not have I_NEW set. Fix the problem by jumping to fail: (instead of fail_drop:)
-which declares filesystem error and does not call unlock_new_inode().
-
-Signed-off-by: Jan Kara <jack at suse.cz>
-Signed-off-by: "Theodore Ts'o" <tytso at mit.edu>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/ext4/ialloc.c | 8 ++++++--
- 1 file changed, 6 insertions(+), 2 deletions(-)
-
-diff --git a/fs/ext4/ialloc.c b/fs/ext4/ialloc.c
-index 00beb4f..8fb6844 100644
---- a/fs/ext4/ialloc.c
-+++ b/fs/ext4/ialloc.c
-@@ -885,8 +885,12 @@ got:
- if (IS_DIRSYNC(inode))
- ext4_handle_sync(handle);
- if (insert_inode_locked(inode) < 0) {
-- err = -EINVAL;
-- goto fail_drop;
-+ /*
-+ * Likely a bitmap corruption causing inode to be allocated
-+ * twice.
-+ */
-+ err = -EIO;
-+ goto fail;
- }
- spin_lock(&sbi->s_next_gen_lock);
- inode->i_generation = sbi->s_next_generation++;
---
-1.7.9.5
-
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
deleted file mode 100644
index 1460ce3..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0080-ACPI-PM-Add-Sony-Vaio-VPCCW29FX-to-nonvs-blacklist.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 1155d70b0cfab4cef0edb62753bc9b5053d6fa8e Mon Sep 17 00:00:00 2001
-From: Lan Tianyu <tianyu.lan at intel.com>
-Date: Sat, 21 Jan 2012 09:23:56 +0800
-Subject: [PATCH 080/117] ACPI / PM: Add Sony Vaio VPCCW29FX to nonvs
- blacklist.
-
-commit 93f770846e8dedc5d9117bd4ad9d7efd18420627 upstream.
-
-Sony Vaio VPCCW29FX does not resume correctly without
-acpi_sleep=nonvs, so add it to the ACPI sleep blacklist.
-
-https://bugzilla.kernel.org/show_bug.cgi?id=34722
-
-Signed-off-by: Lan Tianyu <tianyu.lan at intel.com>
-Signed-off-by: Len Brown <len.brown at intel.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/acpi/sleep.c | 8 ++++++++
- 1 file changed, 8 insertions(+)
-
-diff --git a/drivers/acpi/sleep.c b/drivers/acpi/sleep.c
-index 0a7ed69..ca191ff 100644
---- a/drivers/acpi/sleep.c
-+++ b/drivers/acpi/sleep.c
-@@ -438,6 +438,14 @@ static struct dmi_system_id __initdata acpisleep_dmi_table[] = {
- },
- {
- .callback = init_nvs_nosave,
-+ .ident = "Sony Vaio VPCCW29FX",
-+ .matches = {
-+ DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"),
-+ DMI_MATCH(DMI_PRODUCT_NAME, "VPCCW29FX"),
-+ },
-+ },
-+ {
-+ .callback = init_nvs_nosave,
- .ident = "Averatec AV1020-ED2",
- .matches = {
- DMI_MATCH(DMI_SYS_VENDOR, "AVERATEC"),
---
-1.7.9.5
-
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
deleted file mode 100644
index f16c608..0000000
--- 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
+++ /dev/null
@@ -1,42 +0,0 @@
-From a9b96c2354127a1d9d0401564b6359403aecdb66 Mon Sep 17 00:00:00 2001
-From: "Stephen M. Cameron" <scameron at beardog.cce.hp.com>
-Date: Mon, 28 Nov 2011 10:15:20 -0600
-Subject: [PATCH 081/117] hpsa: Add IRQF_SHARED back in for the non-MSI(X)
- interrupt handler
-
-commit 45bcf018d1a4779d592764ef57517c92589d55d7 upstream.
-
-IRQF_SHARED is required for older controllers that don't support MSI(X)
-and which may end up sharing an interrupt. All the controllers hpsa
-normally supports have MSI(X) capability, but older controllers may be
-encountered via the hpsa_allow_any=1 module parameter.
-
-Also remove deprecated IRQF_DISABLED.
-
-Signed-off-by: Stephen M. Cameron <scameron at beardog.cce.hp.com>
-Signed-off-by: James Bottomley <JBottomley at Parallels.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/scsi/hpsa.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c
-index dc9dea3..b4d2c86 100644
---- a/drivers/scsi/hpsa.c
-+++ b/drivers/scsi/hpsa.c
-@@ -4068,10 +4068,10 @@ static int hpsa_request_irq(struct ctlr_info *h,
-
- if (h->msix_vector || h->msi_vector)
- rc = request_irq(h->intr[h->intr_mode], msixhandler,
-- IRQF_DISABLED, h->devname, h);
-+ 0, h->devname, h);
- else
- rc = request_irq(h->intr[h->intr_mode], intxhandler,
-- IRQF_DISABLED, h->devname, h);
-+ IRQF_SHARED, h->devname, h);
- if (rc) {
- dev_err(&h->pdev->dev, "unable to get irq %d for %s\n",
- h->intr[h->intr_mode], h->devname);
---
-1.7.9.5
-
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
deleted file mode 100644
index b25a680..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0082-wake-up-s_wait_unfrozen-when-freeze_fs-fails.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From ab66f47089f09bceebe3bee38d5e76e08ec748d0 Mon Sep 17 00:00:00 2001
-From: Kazuya Mio <k-mio at sx.jp.nec.com>
-Date: Thu, 1 Dec 2011 16:51:07 +0900
-Subject: [PATCH 082/117] wake up s_wait_unfrozen when ->freeze_fs fails
-
-commit e1616300a20c80396109c1cf013ba9a36055a3da upstream.
-
-dd slept infinitely when fsfeeze failed because of EIO.
-To fix this problem, if ->freeze_fs fails, freeze_super() wakes up
-the tasks waiting for the filesystem to become unfrozen.
-
-When s_frozen isn't SB_UNFROZEN in __generic_file_aio_write(),
-the function sleeps until FITHAW ioctl wakes up s_wait_unfrozen.
-
-However, if ->freeze_fs fails, s_frozen is set to SB_UNFROZEN and then
-freeze_super() returns an error number. In this case, FITHAW ioctl returns
-EINVAL because s_frozen is already SB_UNFROZEN. There is no way to wake up
-s_wait_unfrozen, so __generic_file_aio_write() sleeps infinitely.
-
-Signed-off-by: Kazuya Mio <k-mio at sx.jp.nec.com>
-Signed-off-by: Al Viro <viro at zeniv.linux.org.uk>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/super.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/fs/super.c b/fs/super.c
-index afd0f1a..2a698f6 100644
---- a/fs/super.c
-+++ b/fs/super.c
-@@ -1166,6 +1166,8 @@ int freeze_super(struct super_block *sb)
- printk(KERN_ERR
- "VFS:Filesystem freeze failed\n");
- sb->s_frozen = SB_UNFROZEN;
-+ smp_wmb();
-+ wake_up(&sb->s_wait_unfrozen);
- deactivate_locked_super(sb);
- return ret;
- }
---
-1.7.9.5
-
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
deleted file mode 100644
index 0d16878..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0083-cifs-fix-revalidation-test-in-cifs_llseek.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 3f974a0efbf9480d3a540a029f5a98da92ce772e Mon Sep 17 00:00:00 2001
-From: Dan Carpenter <dan.carpenter at oracle.com>
-Date: Mon, 30 Apr 2012 17:36:21 +0300
-Subject: [PATCH 083/117] cifs: fix revalidation test in cifs_llseek()
-
-commit 48a5730e5b71201e226ff06e245bf308feba5f10 upstream.
-
-This test is always true so it means we revalidate the length every
-time, which generates more network traffic. When it is SEEK_SET or
-SEEK_CUR, then we don't need to revalidate.
-
-Signed-off-by: Dan Carpenter <dan.carpenter at oracle.com>
-Reviewed-by: Jeff Layton <jlayton at redhat.com>
-Signed-off-by: Steve French <sfrench at us.ibm.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/cifs/cifsfs.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/fs/cifs/cifsfs.c b/fs/cifs/cifsfs.c
-index b4c2c99..b1451af 100644
---- a/fs/cifs/cifsfs.c
-+++ b/fs/cifs/cifsfs.c
-@@ -703,7 +703,7 @@ static loff_t cifs_llseek(struct file *file, loff_t offset, int origin)
- * origin == SEEK_END || SEEK_DATA || SEEK_HOLE => we must revalidate
- * the cached file length
- */
-- if (origin != SEEK_SET || origin != SEEK_CUR) {
-+ if (origin != SEEK_SET && origin != SEEK_CUR) {
- int rc;
- struct inode *inode = file->f_path.dentry->d_inode;
-
---
-1.7.9.5
-
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
deleted file mode 100644
index d3a6229..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0084-dl2k-Clean-up-rio_ioctl.patch
+++ /dev/null
@@ -1,123 +0,0 @@
-From 69fa22d4b635612c73cb0427447c5916e18a217e Mon Sep 17 00:00:00 2001
-From: Jeff Mahoney <jeffm at suse.com>
-Date: Wed, 25 Apr 2012 14:32:09 +0000
-Subject: [PATCH 084/117] dl2k: Clean up rio_ioctl
-
-commit 1bb57e940e1958e40d51f2078f50c3a96a9b2d75 upstream.
-
-The dl2k driver's rio_ioctl call has a few issues:
-- No permissions checking
-- Implements SIOCGMIIREG and SIOCGMIIREG using the SIOCDEVPRIVATE numbers
-- Has a few ioctls that may have been used for debugging at one point
- but have no place in the kernel proper.
-
-This patch removes all but the MII ioctls, renumbers them to use the
-standard ones, and adds the proper permission check for SIOCSMIIREG.
-
-We can also get rid of the dl2k-specific struct mii_data in favor of
-the generic struct mii_ioctl_data.
-
-Since we have the phyid on hand, we can add the SIOCGMIIPHY ioctl too.
-
-Most of the MII code for the driver could probably be converted to use
-the generic MII library but I don't have a device to test the results.
-
-Reported-by: Stephan Mueller <stephan.mueller at atsec.com>
-Signed-off-by: Jeff Mahoney <jeffm at suse.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/ethernet/dlink/dl2k.c | 52 +++++++------------------------------
- drivers/net/ethernet/dlink/dl2k.h | 7 -----
- 2 files changed, 9 insertions(+), 50 deletions(-)
-
-diff --git a/drivers/net/ethernet/dlink/dl2k.c b/drivers/net/ethernet/dlink/dl2k.c
-index b2dc2c8..2e09edb 100644
---- a/drivers/net/ethernet/dlink/dl2k.c
-+++ b/drivers/net/ethernet/dlink/dl2k.c
-@@ -1259,55 +1259,21 @@ rio_ioctl (struct net_device *dev, struct ifreq *rq, int cmd)
- {
- int phy_addr;
- struct netdev_private *np = netdev_priv(dev);
-- struct mii_data *miidata = (struct mii_data *) &rq->ifr_ifru;
--
-- struct netdev_desc *desc;
-- int i;
-+ struct mii_ioctl_data *miidata = if_mii(rq);
-
- phy_addr = np->phy_addr;
- switch (cmd) {
-- case SIOCDEVPRIVATE:
-- break;
--
-- case SIOCDEVPRIVATE + 1:
-- miidata->out_value = mii_read (dev, phy_addr, miidata->reg_num);
-+ case SIOCGMIIPHY:
-+ miidata->phy_id = phy_addr;
- break;
-- case SIOCDEVPRIVATE + 2:
-- mii_write (dev, phy_addr, miidata->reg_num, miidata->in_value);
-+ case SIOCGMIIREG:
-+ miidata->val_out = mii_read (dev, phy_addr, miidata->reg_num);
- break;
-- case SIOCDEVPRIVATE + 3:
-- break;
-- case SIOCDEVPRIVATE + 4:
-- break;
-- case SIOCDEVPRIVATE + 5:
-- netif_stop_queue (dev);
-+ case SIOCSMIIREG:
-+ if (!capable(CAP_NET_ADMIN))
-+ return -EPERM;
-+ mii_write (dev, phy_addr, miidata->reg_num, miidata->val_in);
- break;
-- case SIOCDEVPRIVATE + 6:
-- netif_wake_queue (dev);
-- break;
-- case SIOCDEVPRIVATE + 7:
-- printk
-- ("tx_full=%x cur_tx=%lx old_tx=%lx cur_rx=%lx old_rx=%lx\n",
-- netif_queue_stopped(dev), np->cur_tx, np->old_tx, np->cur_rx,
-- np->old_rx);
-- break;
-- case SIOCDEVPRIVATE + 8:
-- printk("TX ring:\n");
-- for (i = 0; i < TX_RING_SIZE; i++) {
-- desc = &np->tx_ring[i];
-- printk
-- ("%02x:cur:%08x next:%08x status:%08x frag1:%08x frag0:%08x",
-- i,
-- (u32) (np->tx_ring_dma + i * sizeof (*desc)),
-- (u32)le64_to_cpu(desc->next_desc),
-- (u32)le64_to_cpu(desc->status),
-- (u32)(le64_to_cpu(desc->fraginfo) >> 32),
-- (u32)le64_to_cpu(desc->fraginfo));
-- printk ("\n");
-- }
-- printk ("\n");
-- break;
--
- default:
- return -EOPNOTSUPP;
- }
-diff --git a/drivers/net/ethernet/dlink/dl2k.h b/drivers/net/ethernet/dlink/dl2k.h
-index ba0adca..30c2da3 100644
---- a/drivers/net/ethernet/dlink/dl2k.h
-+++ b/drivers/net/ethernet/dlink/dl2k.h
-@@ -365,13 +365,6 @@ struct ioctl_data {
- char *data;
- };
-
--struct mii_data {
-- __u16 reserved;
-- __u16 reg_num;
-- __u16 in_value;
-- __u16 out_value;
--};
--
- /* The Rx and Tx buffer descriptors. */
- struct netdev_desc {
- __le64 next_desc;
---
-1.7.9.5
-
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
deleted file mode 100644
index 0c09aac..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0085-OMAPDSS-VENC-fix-NULL-pointer-dereference-in-DSS2-VE.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From ad7129ee930fa9b9efd04490a4ddcd5d5a9039a9 Mon Sep 17 00:00:00 2001
-From: Danny Kukawka <danny.kukawka at bisect.de>
-Date: Tue, 24 Jan 2012 16:44:42 +0100
-Subject: [PATCH 085/117] OMAPDSS: VENC: fix NULL pointer dereference in DSS2
- VENC sysfs debug attr on OMAP4
-
-commit cc1d3e032df53d83d0ca4d537d8eb67eb5b3e808 upstream.
-
-Commit ba02fa37de80bea10d706f39f076dd848348320a disabled the
-venc driver registration on OMAP4. Since the driver never gets
-probed/initialised your get a dereferenceed NULL pointer if you
-try to get info from /sys/kernel/debug/omapdss/venc
-
-Return info message about disabled venc if venc_dump_regs() gets called.
-
-Signed-off-by: Danny Kukawka <danny.kukawka at bisect.de>
-Signed-off-by: Tomi Valkeinen <tomi.valkeinen at ti.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/video/omap2/dss/venc.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/drivers/video/omap2/dss/venc.c b/drivers/video/omap2/dss/venc.c
-index 7533458..7152b53 100644
---- a/drivers/video/omap2/dss/venc.c
-+++ b/drivers/video/omap2/dss/venc.c
-@@ -679,6 +679,11 @@ void venc_dump_regs(struct seq_file *s)
- {
- #define DUMPREG(r) seq_printf(s, "%-35s %08x\n", #r, venc_read_reg(r))
-
-+ if (cpu_is_omap44xx()) {
-+ seq_printf(s, "VENC currently disabled on OMAP44xx\n");
-+ return;
-+ }
-+
- if (venc_runtime_get())
- return;
-
---
-1.7.9.5
-
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
deleted file mode 100644
index f2be4cd..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0086-i2c-eg20t-change-timeout-value-50msec-to-1000msec.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 64affee5c2afb0dff67a4c3669e3c44c98575809 Mon Sep 17 00:00:00 2001
-From: Tomoya MORINAGA <tomoya.rohm at gmail.com>
-Date: Mon, 26 Mar 2012 14:55:25 +0900
-Subject: [PATCH 086/117] i2c-eg20t: change timeout value 50msec to 1000msec
-
-commit 8a52f9f347da721b199b7f9dcc0168bbe7d0baae upstream.
-
-Currently, during i2c works alone, wait-event timeout is not occurred.
-However, as CPU load increases, timeout occurs frequently.
-So, I modified like this patch.
-Modifying like this patch, I've never seen the timeout event with high
-load test.
-
-Signed-off-by: Tomoya MORINAGA <tomoya.rohm at gmail.com>
-Signed-off-by: Wolfram Sang <w.sang at pengutronix.de>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/i2c/busses/i2c-eg20t.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/i2c/busses/i2c-eg20t.c b/drivers/i2c/busses/i2c-eg20t.c
-index 730215e..2cda65bf 100644
---- a/drivers/i2c/busses/i2c-eg20t.c
-+++ b/drivers/i2c/busses/i2c-eg20t.c
-@@ -315,7 +315,7 @@ static s32 pch_i2c_wait_for_xfer_complete(struct i2c_algo_pch_data *adap)
- {
- long ret;
- ret = wait_event_timeout(pch_event,
-- (adap->pch_event_flag != 0), msecs_to_jiffies(50));
-+ (adap->pch_event_flag != 0), msecs_to_jiffies(1000));
-
- if (ret == 0) {
- pch_err(adap, "timeout: %x\n", adap->pch_event_flag);
---
-1.7.9.5
-
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
deleted file mode 100644
index d48f0e0..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0087-drm-i915-GEN7-Use-HW-scheduler-for-fixed-function-sh.patch
+++ /dev/null
@@ -1,100 +0,0 @@
-From b8fd6d0d306fe861b9a5d692b5d14c169a14bc7e Mon Sep 17 00:00:00 2001
-From: Ben Widawsky <ben at bwidawsk.net>
-Date: Sat, 14 Apr 2012 18:41:32 -0700
-Subject: [PATCH 087/117] drm/i915: [GEN7] Use HW scheduler for fixed function
- shaders
-
-commit a1e969e0332de7a430e62822cee8f2ec8d83cd7c upstream.
-
-This originally started as a patch from Bernard as a way of simply
-setting the VS scheduler. After submitting the RFC patch, we decided to
-also modify the DS scheduler. To be most explicit, I've made the patch
-explicitly set all scheduler modes, and included the defines for other
-modes (in case someone feels frisky later).
-
-The rest of the story gets a bit weird. The first version of the patch
-showed an almost unbelievable performance improvement. Since rebasing my
-branch it appears the performance improvement has gone, unfortunately.
-But setting these bits seem to be the right thing to do given that the
-docs describe corruption that can occur with the default settings.
-
-In summary, I am seeing no more perf improvements (or regressions) in my
-limited testing, but we believe this should be set to prevent rendering
-corruption, therefore cc stable.
-
-v1: Clear bit 4 also (Ken + Eugeni)
-Do a full clear + set of the bits we want (Me).
-
-Cc: Bernard Kilarski <bernard.r.kilarski at intel.com>
-Reviewed-by (RFC): Kenneth Graunke <kenneth at whitecape.org>
-Signed-off-by: Ben Widawsky <benjamin.widawsky at intel.com>
-Reviewed-by: Eugeni Dodonov <eugeni.dodonov at intel.com>
-Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
-Signed-off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpu/drm/i915/i915_reg.h | 15 +++++++++++++++
- drivers/gpu/drm/i915/intel_display.c | 14 ++++++++++++++
- 2 files changed, 29 insertions(+)
-
-diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
-index cbe5a88..a1d53b6 100644
---- a/drivers/gpu/drm/i915/i915_reg.h
-+++ b/drivers/gpu/drm/i915/i915_reg.h
-@@ -570,6 +570,21 @@
-
- #define GEN6_BSD_RNCID 0x12198
-
-+#define GEN7_FF_THREAD_MODE 0x20a0
-+#define GEN7_FF_SCHED_MASK 0x0077070
-+#define GEN7_FF_TS_SCHED_HS1 (0x5<<16)
-+#define GEN7_FF_TS_SCHED_HS0 (0x3<<16)
-+#define GEN7_FF_TS_SCHED_LOAD_BALANCE (0x1<<16)
-+#define GEN7_FF_TS_SCHED_HW (0x0<<16) /* Default */
-+#define GEN7_FF_VS_SCHED_HS1 (0x5<<12)
-+#define GEN7_FF_VS_SCHED_HS0 (0x3<<12)
-+#define GEN7_FF_VS_SCHED_LOAD_BALANCE (0x1<<12) /* Default */
-+#define GEN7_FF_VS_SCHED_HW (0x0<<12)
-+#define GEN7_FF_DS_SCHED_HS1 (0x5<<4)
-+#define GEN7_FF_DS_SCHED_HS0 (0x3<<4)
-+#define GEN7_FF_DS_SCHED_LOAD_BALANCE (0x1<<4) /* Default */
-+#define GEN7_FF_DS_SCHED_HW (0x0<<4)
-+
- /*
- * Framebuffer compression (915+ only)
- */
-diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
-index 390768f..68fa8f8 100644
---- a/drivers/gpu/drm/i915/intel_display.c
-+++ b/drivers/gpu/drm/i915/intel_display.c
-@@ -8245,6 +8245,18 @@ static void gen6_init_clock_gating(struct drm_device *dev)
- }
- }
-
-+static void gen7_setup_fixed_func_scheduler(struct drm_i915_private *dev_priv)
-+{
-+ uint32_t reg = I915_READ(GEN7_FF_THREAD_MODE);
-+
-+ reg &= ~GEN7_FF_SCHED_MASK;
-+ reg |= GEN7_FF_TS_SCHED_HW;
-+ reg |= GEN7_FF_VS_SCHED_HW;
-+ reg |= GEN7_FF_DS_SCHED_HW;
-+
-+ I915_WRITE(GEN7_FF_THREAD_MODE, reg);
-+}
-+
- static void ivybridge_init_clock_gating(struct drm_device *dev)
- {
- struct drm_i915_private *dev_priv = dev->dev_private;
-@@ -8285,6 +8297,8 @@ static void ivybridge_init_clock_gating(struct drm_device *dev)
- DISPPLANE_TRICKLE_FEED_DISABLE);
- intel_flush_display_plane(dev_priv, pipe);
- }
-+
-+ gen7_setup_fixed_func_scheduler(dev_priv);
- }
-
- static void g4x_init_clock_gating(struct drm_device *dev)
---
-1.7.9.5
-
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
deleted file mode 100644
index 4fcc89e..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0088-mmc-sdio-avoid-spurious-calls-to-interrupt-handlers.patch
+++ /dev/null
@@ -1,99 +0,0 @@
-From 418111eaa285eb1418ef4634eb2a24e955d0c0a4 Mon Sep 17 00:00:00 2001
-From: Nicolas Pitre <nicolas.pitre at linaro.org>
-Date: Mon, 16 Apr 2012 19:16:54 -0400
-Subject: [PATCH 088/117] mmc: sdio: avoid spurious calls to interrupt
- handlers
-
-commit bbbc4c4d8c5face097d695f9bf3a39647ba6b7e7 upstream.
-
-Commit 06e8935feb ("optimized SDIO IRQ handling for single irq")
-introduced some spurious calls to SDIO function interrupt handlers,
-such as when the SDIO IRQ thread is started, or the safety check
-performed upon a system resume. Let's add a flag to perform the
-optimization only when a real interrupt is signaled by the host
-driver and we know there is no point confirming it.
-
-Reported-by: Sujit Reddy Thumma <sthumma at codeaurora.org>
-Signed-off-by: Nicolas Pitre <nico at linaro.org>
-Signed-off-by: Chris Ball <cjb at laptop.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/mmc/core/sdio.c | 2 +-
- drivers/mmc/core/sdio_irq.c | 11 +++++++----
- include/linux/mmc/host.h | 2 ++
- 3 files changed, 10 insertions(+), 5 deletions(-)
-
-diff --git a/drivers/mmc/core/sdio.c b/drivers/mmc/core/sdio.c
-index 3ab565e..558a495 100644
---- a/drivers/mmc/core/sdio.c
-+++ b/drivers/mmc/core/sdio.c
-@@ -663,7 +663,7 @@ static int mmc_sdio_resume(struct mmc_host *host)
- }
-
- if (!err && host->sdio_irqs)
-- mmc_signal_sdio_irq(host);
-+ wake_up_process(host->sdio_irq_thread);
- mmc_release_host(host);
-
- /*
-diff --git a/drivers/mmc/core/sdio_irq.c b/drivers/mmc/core/sdio_irq.c
-index 68f81b9..9dd0462 100644
---- a/drivers/mmc/core/sdio_irq.c
-+++ b/drivers/mmc/core/sdio_irq.c
-@@ -28,18 +28,20 @@
-
- #include "sdio_ops.h"
-
--static int process_sdio_pending_irqs(struct mmc_card *card)
-+static int process_sdio_pending_irqs(struct mmc_host *host)
- {
-+ struct mmc_card *card = host->card;
- int i, ret, count;
- unsigned char pending;
- struct sdio_func *func;
-
- /*
- * Optimization, if there is only 1 function interrupt registered
-- * call irq handler directly
-+ * and we know an IRQ was signaled then call irq handler directly.
-+ * Otherwise do the full probe.
- */
- func = card->sdio_single_irq;
-- if (func) {
-+ if (func && host->sdio_irq_pending) {
- func->irq_handler(func);
- return 1;
- }
-@@ -116,7 +118,8 @@ static int sdio_irq_thread(void *_host)
- ret = __mmc_claim_host(host, &host->sdio_irq_thread_abort);
- if (ret)
- break;
-- ret = process_sdio_pending_irqs(host->card);
-+ ret = process_sdio_pending_irqs(host);
-+ host->sdio_irq_pending = false;
- mmc_release_host(host);
-
- /*
-diff --git a/include/linux/mmc/host.h b/include/linux/mmc/host.h
-index a3ac9c4..deb6282 100644
---- a/include/linux/mmc/host.h
-+++ b/include/linux/mmc/host.h
-@@ -303,6 +303,7 @@ struct mmc_host {
-
- unsigned int sdio_irqs;
- struct task_struct *sdio_irq_thread;
-+ bool sdio_irq_pending;
- atomic_t sdio_irq_thread_abort;
-
- mmc_pm_flag_t pm_flags; /* requested pm features */
-@@ -356,6 +357,7 @@ extern int mmc_cache_ctrl(struct mmc_host *, u8);
- static inline void mmc_signal_sdio_irq(struct mmc_host *host)
- {
- host->ops->enable_sdio_irq(host, 0);
-+ host->sdio_irq_pending = true;
- wake_up_process(host->sdio_irq_thread);
- }
-
---
-1.7.9.5
-
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
deleted file mode 100644
index a1606fd..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0089-smsusb-add-autodetection-support-for-USB-ID-2040-c0a.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From f408079974e4190a820716d82a01af3f3201cd56 Mon Sep 17 00:00:00 2001
-From: Michael Krufky <mkrufky at linuxtv.org>
-Date: Thu, 22 Mar 2012 13:55:05 -0300
-Subject: [PATCH 089/117] smsusb: add autodetection support for USB ID
- 2040:c0a0
-
-commit 4d1b58b84472d1d300a66e1c5fd765b21e74ba15 upstream.
-
-Signed-off-by: Michael Krufky <mkrufky at linuxtv.org>
-Signed-off-by: Mauro Carvalho Chehab <mchehab at redhat.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/media/dvb/siano/smsusb.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/drivers/media/dvb/siano/smsusb.c b/drivers/media/dvb/siano/smsusb.c
-index 51c7121..b7d1e3e 100644
---- a/drivers/media/dvb/siano/smsusb.c
-+++ b/drivers/media/dvb/siano/smsusb.c
-@@ -542,6 +542,8 @@ static const struct usb_device_id smsusb_id_table[] __devinitconst = {
- .driver_info = SMS1XXX_BOARD_HAUPPAUGE_WINDHAM },
- { USB_DEVICE(0x2040, 0xc090),
- .driver_info = SMS1XXX_BOARD_HAUPPAUGE_WINDHAM },
-+ { USB_DEVICE(0x2040, 0xc0a0),
-+ .driver_info = SMS1XXX_BOARD_HAUPPAUGE_WINDHAM },
- { } /* Terminating entry */
- };
-
---
-1.7.9.5
-
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
deleted file mode 100644
index 08a9b59..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0090-uvcvideo-Fix-ENUMINPUT-handling.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 1565ef649160b0fb7c0911ce172ecc475db2741e Mon Sep 17 00:00:00 2001
-From: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
-Date: Wed, 21 Mar 2012 09:50:36 -0300
-Subject: [PATCH 090/117] uvcvideo: Fix ENUMINPUT handling
-
-commit 31c5f0c5e25ed71eeced170f113bb590f2f1f6f3 upstream.
-
-Properly validate the user-supplied index against the number of inputs.
-The code used the pin local variable instead of the index by mistake.
-
-Reported-by: Jozef Vesely <vesely at gjh.sk>
-Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
-Signed-off-by: Mauro Carvalho Chehab <mchehab at redhat.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/media/video/uvc/uvc_v4l2.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/media/video/uvc/uvc_v4l2.c b/drivers/media/video/uvc/uvc_v4l2.c
-index cf7788f..1030479 100644
---- a/drivers/media/video/uvc/uvc_v4l2.c
-+++ b/drivers/media/video/uvc/uvc_v4l2.c
-@@ -689,7 +689,7 @@ static long uvc_v4l2_do_ioctl(struct file *file, unsigned int cmd, void *arg)
- break;
- }
- pin = iterm->id;
-- } else if (pin < selector->bNrInPins) {
-+ } else if (index < selector->bNrInPins) {
- pin = selector->baSourceID[index];
- list_for_each_entry(iterm, &chain->entities, chain) {
- if (!UVC_ENTITY_IS_ITERM(iterm))
---
-1.7.9.5
-
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
deleted file mode 100644
index 41055a0..0000000
--- 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
+++ /dev/null
@@ -1,63 +0,0 @@
-From e7fcb3c81686f5853ff08909c0f580536291be51 Mon Sep 17 00:00:00 2001
-From: Chris Wilson <chris at chris-wilson.co.uk>
-Date: Wed, 9 May 2012 21:45:43 +0100
-Subject: [PATCH 091/117] drm/i915: Avoid a double-read of PCH_IIR during
- interrupt handling
-
-commit 9adab8b5a7fde248504f484e197589f3e3c922e2 upstream.
-
-Currently the code re-reads PCH_IIR during the hotplug interrupt
-processing. Not only is this a wasted read, but introduces a potential
-for handling a spurious interrupt as we then may not clear all the
-interrupts processed (since the re-read IIR may contains more interrupts
-asserted than we clear using the result of the original read).
-
-Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
-Cc: Jesse Barnes <jbarnes at virtuousgeek.org>
-Signed-off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpu/drm/i915/i915_irq.c | 9 +++------
- 1 file changed, 3 insertions(+), 6 deletions(-)
-
-diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
-index d47a53b..d3820c2 100644
---- a/drivers/gpu/drm/i915/i915_irq.c
-+++ b/drivers/gpu/drm/i915/i915_irq.c
-@@ -424,14 +424,11 @@ static void gen6_pm_rps_work(struct work_struct *work)
- mutex_unlock(&dev_priv->dev->struct_mutex);
- }
-
--static void pch_irq_handler(struct drm_device *dev)
-+static void pch_irq_handler(struct drm_device *dev, u32 pch_iir)
- {
- drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private;
-- u32 pch_iir;
- int pipe;
-
-- pch_iir = I915_READ(SDEIIR);
--
- if (pch_iir & SDE_AUDIO_POWER_MASK)
- DRM_DEBUG_DRIVER("PCH audio power change on port %d\n",
- (pch_iir & SDE_AUDIO_POWER_MASK) >>
-@@ -529,7 +526,7 @@ static irqreturn_t ivybridge_irq_handler(DRM_IRQ_ARGS)
- if (de_iir & DE_PCH_EVENT_IVB) {
- if (pch_iir & SDE_HOTPLUG_MASK_CPT)
- queue_work(dev_priv->wq, &dev_priv->hotplug_work);
-- pch_irq_handler(dev);
-+ pch_irq_handler(dev, pch_iir);
- }
-
- if (pm_iir & GEN6_PM_DEFERRED_EVENTS) {
-@@ -629,7 +626,7 @@ static irqreturn_t ironlake_irq_handler(DRM_IRQ_ARGS)
- if (de_iir & DE_PCH_EVENT) {
- if (pch_iir & hotplug_mask)
- queue_work(dev_priv->wq, &dev_priv->hotplug_work);
-- pch_irq_handler(dev);
-+ pch_irq_handler(dev, pch_iir);
- }
-
- if (de_iir & DE_PCU_EVENT) {
---
-1.7.9.5
-
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
deleted file mode 100644
index 2a97b80..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0092-b43legacy-Fix-error-due-to-MMIO-access-with-SSB-unpo.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 6f8ba55029ac1a15f55de85122401036a08d6b89 Mon Sep 17 00:00:00 2001
-From: Larry Finger <Larry.Finger at lwfinger.net>
-Date: Sun, 6 May 2012 16:01:05 -0500
-Subject: [PATCH 092/117] b43legacy: Fix error due to MMIO access with SSB
- unpowered
-
-commit 8f4b20388fa77226a3605627a33a23f90d559e50 upstream.
-
-There is a dummy read of a PCI MMIO register that occurs before the SSB bus
-has been powered, which is an error. This bug has not been seen earlier,
-but was apparently exposed when udev was updated to version 182.
-
-Signed-off-by: Larry Finger <Larry.Finger at lwfinger.net>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/wireless/b43legacy/main.c | 2 --
- 1 file changed, 2 deletions(-)
-
-diff --git a/drivers/net/wireless/b43legacy/main.c b/drivers/net/wireless/b43legacy/main.c
-index 20f0243..c5ce163 100644
---- a/drivers/net/wireless/b43legacy/main.c
-+++ b/drivers/net/wireless/b43legacy/main.c
-@@ -1564,8 +1564,6 @@ static int b43legacy_request_firmware(struct b43legacy_wldev *dev)
- const char *filename;
- int err;
-
-- /* do dummy read */
-- ssb_read32(dev->dev, SSB_TMSHIGH);
- if (!fw->ucode) {
- if (rev == 2)
- filename = "ucode2";
---
-1.7.9.5
-
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
deleted file mode 100644
index b3e3fa6..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0093-gpio-mpc8xxx-Prevent-NULL-pointer-deref-in-demux-han.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From 3a36f1d3f5cc6f221848df7c4cdc1269fc2085e9 Mon Sep 17 00:00:00 2001
-From: Thomas Gleixner <tglx at linutronix.de>
-Date: Thu, 3 May 2012 12:22:06 +0200
-Subject: [PATCH 093/117] gpio: mpc8xxx: Prevent NULL pointer deref in demux
- handler
-
-commit d6de85e85edcc38c9edcde45a0a568818fcddc13 upstream.
-
-commit cfadd838(powerpc/8xxx: Fix interrupt handling in MPC8xxx GPIO
-driver) added an unconditional call of chip->irq_eoi() to the demux
-handler.
-
-This leads to a NULL pointer derefernce on MPC512x platforms which use
-this driver as well.
-
-Make it conditional.
-
-Reported-by: Thomas Wucher <thwucher at linutronix.de>
-Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
-Cc: Felix Radensky <felix at embedded-sol.com>
-Cc: Kumar Gala <galak at kernel.crashing.org>
-Cc: Grant Likely <grant.likely at secretlab.ca>
-Signed-off-by: Grant Likely <grant.likely at secretlab.ca>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpio/gpio-mpc8xxx.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/gpio/gpio-mpc8xxx.c b/drivers/gpio/gpio-mpc8xxx.c
-index 5cd04b6..edcffd6 100644
---- a/drivers/gpio/gpio-mpc8xxx.c
-+++ b/drivers/gpio/gpio-mpc8xxx.c
-@@ -163,7 +163,8 @@ static void mpc8xxx_gpio_irq_cascade(unsigned int irq, struct irq_desc *desc)
- if (mask)
- generic_handle_irq(irq_linear_revmap(mpc8xxx_gc->irq,
- 32 - ffs(mask)));
-- chip->irq_eoi(&desc->irq_data);
-+ if (chip->irq_eoi)
-+ chip->irq_eoi(&desc->irq_data);
- }
-
- static void mpc8xxx_irq_unmask(struct irq_data *d)
---
-1.7.9.5
-
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
deleted file mode 100644
index 9e3e30e..0000000
--- 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
+++ /dev/null
@@ -1,52 +0,0 @@
-From 031b0156d47e41f3815fcee8b2043c0b7d21dba0 Mon Sep 17 00:00:00 2001
-From: Daniel Vetter <daniel.vetter at ffwll.ch>
-Date: Sun, 13 May 2012 22:29:25 +0200
-Subject: [PATCH 094/117] drm/i915: don't clobber the pipe param in
- sanitize_modesetting
-
-commit a9dcf84b14ef4e9a609910367576995e6f32f3dc upstream.
-
-... we need it later on in the function to clean up pipe <-> plane
-associations. This regression has been introduced in
-
-commit f47166d2b0001fcb752b40c5a2d4db986dfbea68
-Author: Chris Wilson <chris at chris-wilson.co.uk>
-Date: Thu Mar 22 15:00:50 2012 +0000
-
- drm/i915: Sanitize BIOS debugging bits from PIPECONF
-
-Spotted by staring at debug output of an (as it turns out) totally
-unrelated bug.
-
-v2: I've totally failed to do the s/pipe/i/ correctly, spotted by
-Chris Wilson.
-
-Reviewed-by: Chris Wilson <chris at chris-wilson.co.uk>
-Reviewed-by: Eugeni Dodonov <eugeni.dodonov at intel.com>
-Signed-Off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpu/drm/i915/intel_display.c | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
-index 68fa8f8..3ff980d 100644
---- a/drivers/gpu/drm/i915/intel_display.c
-+++ b/drivers/gpu/drm/i915/intel_display.c
-@@ -7280,10 +7280,11 @@ static void intel_sanitize_modesetting(struct drm_device *dev,
- {
- struct drm_i915_private *dev_priv = dev->dev_private;
- u32 reg, val;
-+ int i;
-
- /* Clear any frame start delays used for debugging left by the BIOS */
-- for_each_pipe(pipe) {
-- reg = PIPECONF(pipe);
-+ for_each_pipe(i) {
-+ reg = PIPECONF(i);
- I915_WRITE(reg, I915_READ(reg) & ~PIPECONF_FRAME_START_DELAY_MASK);
- }
-
---
-1.7.9.5
-
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
deleted file mode 100644
index 3dc340b..0000000
--- 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
+++ /dev/null
@@ -1,42 +0,0 @@
-From ee003c924af5accb5545a0f07b09f488cdd16e76 Mon Sep 17 00:00:00 2001
-From: Herton Ronaldo Krzesinski <herton.krzesinski at canonical.com>
-Date: Fri, 11 May 2012 15:29:50 -0700
-Subject: [PATCH 095/117] spi/spi-fsl-spi: reference correct pdata in
- fsl_spi_cs_control
-
-commit 067aa4815a9bc12a569d8a06afef50ba5773afbf upstream.
-
-Commit 178db7d3, "spi: Fix device unregistration when unregistering
-the bus master", changed spi device initialization of dev.parent pointer
-to be the master's device pointer instead of his parent.
-
-This introduced a bug in spi-fsl-spi, since its usage of spi device
-pointer was not updated accordingly. This was later fixed by commit
-5039a86, "spi/mpc83xx: fix NULL pdata dereference bug", but it missed
-another spot on fsl_spi_cs_control function where we also need to update
-usage of spi device pointer. This change address that.
-
-Signed-off-by: Herton Ronaldo Krzesinski <herton.krzesinski at canonical.com>
-Acked-by: Joakim Tjernlund <Joakim.Tjernlund at transmode.se>
-Signed-off-by: Grant Likely <grant.likely at secretlab.ca>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/spi/spi-fsl-spi.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/spi/spi-fsl-spi.c b/drivers/spi/spi-fsl-spi.c
-index 5f748c0..6a62934 100644
---- a/drivers/spi/spi-fsl-spi.c
-+++ b/drivers/spi/spi-fsl-spi.c
-@@ -933,7 +933,7 @@ err:
-
- static void fsl_spi_cs_control(struct spi_device *spi, bool on)
- {
-- struct device *dev = spi->dev.parent;
-+ struct device *dev = spi->dev.parent->parent;
- struct mpc8xxx_spi_probe_info *pinfo = to_of_pinfo(dev->platform_data);
- u16 cs = spi->chip_select;
- int gpio = pinfo->gpios[cs];
---
-1.7.9.5
-
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
deleted file mode 100644
index 64f01ae..0000000
--- 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
+++ /dev/null
@@ -1,90 +0,0 @@
-From ccee9896b442dd46dc0fd4c7ae4b9e8e470fab2b Mon Sep 17 00:00:00 2001
-From: Stefano Stabellini <stefano.stabellini at eu.citrix.com>
-Date: Mon, 21 May 2012 16:54:10 +0100
-Subject: [PATCH 096/117] xen: do not map the same GSI twice in PVHVM guests.
-
-commit 68c2c39a76b094e9b2773e5846424ea674bf2c46 upstream.
-
-PV on HVM guests map GSIs into event channels. At restore time the
-event channels are resumed by restore_pirqs.
-
-Device drivers might try to register the same GSI again through ACPI at
-restore time, but the GSI has already been mapped and bound by
-restore_pirqs. This patch detects these situations and avoids
- mapping the same GSI multiple times.
-
-Without this patch we get:
-(XEN) irq.c:2235: dom4: pirq 23 or emuirq 28 already mapped
-and waste a pirq.
-
-Signed-off-by: Stefano Stabellini <stefano.stabellini at eu.citrix.com>
-Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk at oracle.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/x86/pci/xen.c | 4 ++++
- drivers/xen/events.c | 5 +++--
- include/xen/events.h | 3 +++
- 3 files changed, 10 insertions(+), 2 deletions(-)
-
-diff --git a/arch/x86/pci/xen.c b/arch/x86/pci/xen.c
-index d99346e..4c262f6 100644
---- a/arch/x86/pci/xen.c
-+++ b/arch/x86/pci/xen.c
-@@ -64,6 +64,10 @@ static int xen_register_pirq(u32 gsi, int gsi_override, int triggering,
- int shareable = 0;
- char *name;
-
-+ irq = xen_irq_from_gsi(gsi);
-+ if (irq > 0)
-+ return irq;
-+
- if (set_pirq)
- pirq = gsi;
-
-diff --git a/drivers/xen/events.c b/drivers/xen/events.c
-index 6e075cd..fec1204 100644
---- a/drivers/xen/events.c
-+++ b/drivers/xen/events.c
-@@ -600,7 +600,7 @@ static void disable_pirq(struct irq_data *data)
- disable_dynirq(data);
- }
-
--static int find_irq_by_gsi(unsigned gsi)
-+int xen_irq_from_gsi(unsigned gsi)
- {
- struct irq_info *info;
-
-@@ -614,6 +614,7 @@ static int find_irq_by_gsi(unsigned gsi)
-
- return -1;
- }
-+EXPORT_SYMBOL_GPL(xen_irq_from_gsi);
-
- /*
- * Do not make any assumptions regarding the relationship between the
-@@ -633,7 +634,7 @@ int xen_bind_pirq_gsi_to_irq(unsigned gsi,
-
- mutex_lock(&irq_mapping_update_lock);
-
-- irq = find_irq_by_gsi(gsi);
-+ irq = xen_irq_from_gsi(gsi);
- if (irq != -1) {
- printk(KERN_INFO "xen_map_pirq_gsi: returning irq %d for gsi %u\n",
- irq, gsi);
-diff --git a/include/xen/events.h b/include/xen/events.h
-index d287997..8f3d622 100644
---- a/include/xen/events.h
-+++ b/include/xen/events.h
-@@ -96,6 +96,9 @@ int xen_irq_from_pirq(unsigned pirq);
- /* Return the pirq allocated to the irq. */
- int xen_pirq_from_irq(unsigned irq);
-
-+/* Return the irq allocated to the gsi */
-+int xen_irq_from_gsi(unsigned gsi);
-+
- /* Determine whether to ignore this IRQ if it is passed to a guest. */
- int xen_test_irq_shared(int irq);
-
---
-1.7.9.5
-
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
deleted file mode 100644
index 7698a84..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0097-nouveau-nouveau_set_bo_placement-takes-TTM-flags.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 49228e195ea0ed24fe598a16c8721ee019df508d Mon Sep 17 00:00:00 2001
-From: Dave Airlie <airlied at redhat.com>
-Date: Fri, 18 May 2012 15:31:12 +0100
-Subject: [PATCH 097/117] nouveau: nouveau_set_bo_placement takes TTM flags
-
-commit c284815debba2f14ee2fd07b1b4cc972ab116110 upstream.
-
-This seems to be wrong to me, spotted while thinking about dma-buf.
-
-Reviewed-by: Ben Skeggs <bskeggs at redhat.com>
-Signed-off-by: Dave Airlie <airlied at redhat.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpu/drm/nouveau/nouveau_bo.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/gpu/drm/nouveau/nouveau_bo.c b/drivers/gpu/drm/nouveau/nouveau_bo.c
-index 7cc37e6..d5af089 100644
---- a/drivers/gpu/drm/nouveau/nouveau_bo.c
-+++ b/drivers/gpu/drm/nouveau/nouveau_bo.c
-@@ -1024,7 +1024,7 @@ nouveau_ttm_fault_reserve_notify(struct ttm_buffer_object *bo)
-
- nvbo->placement.fpfn = 0;
- nvbo->placement.lpfn = dev_priv->fb_mappable_pages;
-- nouveau_bo_placement_set(nvbo, TTM_PL_VRAM, 0);
-+ nouveau_bo_placement_set(nvbo, TTM_PL_FLAG_VRAM, 0);
- return nouveau_bo_validate(nvbo, false, true, false);
- }
-
---
-1.7.9.5
-
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
deleted file mode 100644
index 4d21aff..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0098-MCE-Fix-vm86-handling-for-32bit-mce-handler.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 7a3402ddb979d26b777cc6f99824881af9362e8d Mon Sep 17 00:00:00 2001
-From: Andi Kleen <andi at firstfloor.org>
-Date: Fri, 19 Nov 2010 13:16:22 +0100
-Subject: [PATCH 098/117] MCE: Fix vm86 handling for 32bit mce handler
-
-commit a129a7c84582629741e5fa6f40026efcd7a65bd4 upstream.
-
-When running on 32bit the mce handler could misinterpret
-vm86 mode as ring 0. This can affect whether it does recovery
-or not; it was possible to panic when recovery was actually
-possible.
-
-Fix this by always forcing vm86 to look like ring 3.
-
-Signed-off-by: Andi Kleen <ak at linux.intel.com>
-Signed-off-by: Tony Luck <tony.luck at intel.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/x86/kernel/cpu/mcheck/mce.c | 8 ++++++++
- 1 file changed, 8 insertions(+)
-
-diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c
-index 2af127d..b0f1271 100644
---- a/arch/x86/kernel/cpu/mcheck/mce.c
-+++ b/arch/x86/kernel/cpu/mcheck/mce.c
-@@ -389,6 +389,14 @@ static inline void mce_gather_info(struct mce *m, struct pt_regs *regs)
- if (m->mcgstatus & (MCG_STATUS_RIPV|MCG_STATUS_EIPV)) {
- m->ip = regs->ip;
- m->cs = regs->cs;
-+
-+ /*
-+ * When in VM86 mode make the cs look like ring 3
-+ * always. This is a lie, but it's better than passing
-+ * the additional vm86 bit around everywhere.
-+ */
-+ if (v8086_mode(regs))
-+ m->cs |= 3;
- }
- /* Use accurate RIP reporting if available. */
- if (rip_msr)
---
-1.7.9.5
-
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
deleted file mode 100644
index 05cd8cf..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0099-x86-mce-Fix-check-for-processor-context-when-machine.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From 7938ffb57366a0e5f4b878955148f515d9940453 Mon Sep 17 00:00:00 2001
-From: Tony Luck <tony.luck at intel.com>
-Date: Wed, 23 May 2012 14:14:22 -0700
-Subject: [PATCH 099/117] x86/mce: Fix check for processor context when
- machine check was taken.
-
-commit 875e26648cf9b6db9d8dc07b7959d7c61fb3f49c upstream.
-
-Linus pointed out that there was no value is checking whether m->ip
-was zero - because zero is a legimate value. If we have a reliable
-(or faked in the VM86 case) "m->cs" we can use it to tell whether we
-were in user mode or kernelwhen the machine check hit.
-
-Reported-by: Linus Torvalds <torvalds at linuxfoundation.org>
-Signed-off-by: Tony Luck <tony.luck at intel.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/x86/kernel/cpu/mcheck/mce-severity.c | 16 ++++++++++------
- 1 file changed, 10 insertions(+), 6 deletions(-)
-
-diff --git a/arch/x86/kernel/cpu/mcheck/mce-severity.c b/arch/x86/kernel/cpu/mcheck/mce-severity.c
-index 7395d5f..c9c9cfe 100644
---- a/arch/x86/kernel/cpu/mcheck/mce-severity.c
-+++ b/arch/x86/kernel/cpu/mcheck/mce-severity.c
-@@ -145,15 +145,19 @@ static struct severity {
- };
-
- /*
-- * If the EIPV bit is set, it means the saved IP is the
-- * instruction which caused the MCE.
-+ * If mcgstatus indicated that ip/cs on the stack were
-+ * no good, then "m->cs" will be zero and we will have
-+ * to assume the worst case (IN_KERNEL) as we actually
-+ * have no idea what we were executing when the machine
-+ * check hit.
-+ * If we do have a good "m->cs" (or a faked one in the
-+ * case we were executing in VM86 mode) we can use it to
-+ * distinguish an exception taken in user from from one
-+ * taken in the kernel.
- */
- static int error_context(struct mce *m)
- {
-- if (m->mcgstatus & MCG_STATUS_EIPV)
-- return (m->ip && (m->cs & 3) == 3) ? IN_USER : IN_KERNEL;
-- /* Unknown, assume kernel */
-- return IN_KERNEL;
-+ return ((m->cs & 3) == 3) ? IN_USER : IN_KERNEL;
- }
-
- int mce_severity(struct mce *m, int tolerant, char **msg)
---
-1.7.9.5
-
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
deleted file mode 100644
index 26aba7e..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0100-tile-fix-bug-where-fls-0-was-not-returning-0.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From 91587d2e157874620dcdb8378b2512b809605c26 Mon Sep 17 00:00:00 2001
-From: Chris Metcalf <cmetcalf at tilera.com>
-Date: Fri, 25 May 2012 12:32:09 -0400
-Subject: [PATCH 100/117] tile: fix bug where fls(0) was not returning 0
-
-commit 9f1d62bed7f015d11b9164078b7fea433b474114 upstream.
-
-This is because __builtin_clz(0) returns 64 for the "undefined" case
-of 0, since the builtin just does a right-shift 32 and "clz" instruction.
-So, use the alpha approach of casting to u32 and using __builtin_clzll().
-
-Signed-off-by: Chris Metcalf <cmetcalf at tilera.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/tile/include/asm/bitops.h | 12 ++++++------
- 1 file changed, 6 insertions(+), 6 deletions(-)
-
-diff --git a/arch/tile/include/asm/bitops.h b/arch/tile/include/asm/bitops.h
-index 16f1fa5..bd186c4 100644
---- a/arch/tile/include/asm/bitops.h
-+++ b/arch/tile/include/asm/bitops.h
-@@ -77,6 +77,11 @@ static inline int ffs(int x)
- return __builtin_ffs(x);
- }
-
-+static inline int fls64(__u64 w)
-+{
-+ return (sizeof(__u64) * 8) - __builtin_clzll(w);
-+}
-+
- /**
- * fls - find last set bit in word
- * @x: the word to search
-@@ -90,12 +95,7 @@ static inline int ffs(int x)
- */
- static inline int fls(int x)
- {
-- return (sizeof(int) * 8) - __builtin_clz(x);
--}
--
--static inline int fls64(__u64 w)
--{
-- return (sizeof(__u64) * 8) - __builtin_clzll(w);
-+ return fls64((unsigned int) x);
- }
-
- static inline unsigned int __arch_hweight32(unsigned int w)
---
-1.7.9.5
-
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
deleted file mode 100644
index 8ab6c6e..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0101-intel-iommu-Add-device-info-into-list-before-doing-c.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From 7049f47a9ae3e01f50957ed9349d850579905544 Mon Sep 17 00:00:00 2001
-From: David Woodhouse <dwmw2 at infradead.org>
-Date: Fri, 25 May 2012 17:42:54 +0100
-Subject: [PATCH 101/117] intel-iommu: Add device info into list before doing
- context mapping
-
-commit e2ad23d04c1304431ab5176c89b7b476ded2d995 upstream.
-
-Add device info into list before doing context mapping, because device
-info will be used by iommu_enable_dev_iotlb(). Without it, ATS won't get
-enabled as it should be.
-
-ATS, while a dubious decision from a security point of view, can be very
-important for performance.
-
-Signed-off-by: Xudong Hao <xudong.hao at intel.com>
-Signed-off-by: Xiantao Zhang <xiantao.zhang at intel.com>
-Acked-by: Chris Wright <chrisw at sous-sol.org>
-Signed-off-by: David Woodhouse <David.Woodhouse at intel.com>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/iommu/intel-iommu.c | 17 +++++++++++------
- 1 file changed, 11 insertions(+), 6 deletions(-)
-
-diff --git a/drivers/iommu/intel-iommu.c b/drivers/iommu/intel-iommu.c
-index bdc447f..ccf347f 100644
---- a/drivers/iommu/intel-iommu.c
-+++ b/drivers/iommu/intel-iommu.c
-@@ -2267,12 +2267,6 @@ static int domain_add_dev_info(struct dmar_domain *domain,
- if (!info)
- return -ENOMEM;
-
-- ret = domain_context_mapping(domain, pdev, translation);
-- if (ret) {
-- free_devinfo_mem(info);
-- return ret;
-- }
--
- info->segment = pci_domain_nr(pdev->bus);
- info->bus = pdev->bus->number;
- info->devfn = pdev->devfn;
-@@ -2285,6 +2279,17 @@ static int domain_add_dev_info(struct dmar_domain *domain,
- pdev->dev.archdata.iommu = info;
- spin_unlock_irqrestore(&device_domain_lock, flags);
-
-+ ret = domain_context_mapping(domain, pdev, translation);
-+ if (ret) {
-+ spin_lock_irqsave(&device_domain_lock, flags);
-+ list_del(&info->link);
-+ list_del(&info->global);
-+ pdev->dev.archdata.iommu = NULL;
-+ spin_unlock_irqrestore(&device_domain_lock, flags);
-+ free_devinfo_mem(info);
-+ return ret;
-+ }
-+
- return 0;
- }
-
---
-1.7.9.5
-
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
deleted file mode 100644
index 0a655d2..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0102-ethtool-Null-terminate-filename-passed-to-ethtool_op.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From 79bd1de9faf5778df943c48022550d78a85d18d5 Mon Sep 17 00:00:00 2001
-From: Ben Hutchings <bhutchings at solarflare.com>
-Date: Wed, 1 Feb 2012 09:32:25 +0000
-Subject: [PATCH 102/117] ethtool: Null-terminate filename passed to
- ethtool_ops::flash_device
-
-commit 786f528119722f564a22ad953411374e06116333 upstream.
-
-The parameters for ETHTOOL_FLASHDEV include a filename, which ought to
-be null-terminated. Currently the only driver that implements
-ethtool_ops::flash_device attempts to add a null terminator if
-necessary, but does it wrongly. Do it in the ethtool core instead.
-
-Signed-off-by: Ben Hutchings <bhutchings at solarflare.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/ethernet/emulex/benet/be_ethtool.c | 6 +-----
- net/core/ethtool.c | 2 ++
- 2 files changed, 3 insertions(+), 5 deletions(-)
-
-diff --git a/drivers/net/ethernet/emulex/benet/be_ethtool.c b/drivers/net/ethernet/emulex/benet/be_ethtool.c
-index bf8153e..7570c1a 100644
---- a/drivers/net/ethernet/emulex/benet/be_ethtool.c
-+++ b/drivers/net/ethernet/emulex/benet/be_ethtool.c
-@@ -649,12 +649,8 @@ static int
- be_do_flash(struct net_device *netdev, struct ethtool_flash *efl)
- {
- struct be_adapter *adapter = netdev_priv(netdev);
-- char file_name[ETHTOOL_FLASH_MAX_FILENAME];
-
-- file_name[ETHTOOL_FLASH_MAX_FILENAME - 1] = 0;
-- strcpy(file_name, efl->data);
--
-- return be_load_fw(adapter, file_name);
-+ return be_load_fw(adapter, efl->data);
- }
-
- static int
-diff --git a/net/core/ethtool.c b/net/core/ethtool.c
-index f444817..2b587ec 100644
---- a/net/core/ethtool.c
-+++ b/net/core/ethtool.c
-@@ -1549,6 +1549,8 @@ static noinline_for_stack int ethtool_flash_device(struct net_device *dev,
- if (!dev->ethtool_ops->flash_device)
- return -EOPNOTSUPP;
-
-+ efl.data[ETHTOOL_FLASH_MAX_FILENAME - 1] = 0;
-+
- return dev->ethtool_ops->flash_device(dev, &efl);
- }
-
---
-1.7.9.5
-
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
deleted file mode 100644
index 143e752..0000000
--- 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
+++ /dev/null
@@ -1,157 +0,0 @@
-From 27066ac72b55b4402110f19a0897cc67d2b514d3 Mon Sep 17 00:00:00 2001
-From: Jeff Moyer <jmoyer at redhat.com>
-Date: Fri, 11 May 2012 16:34:10 +0200
-Subject: [PATCH 103/117] block: don't mark buffers beyond end of disk as
- mapped
-
-commit 080399aaaf3531f5b8761ec0ac30ff98891e8686 upstream.
-
-Hi,
-
-We have a bug report open where a squashfs image mounted on ppc64 would
-exhibit errors due to trying to read beyond the end of the disk. It can
-easily be reproduced by doing the following:
-
-[root at ibm-p750e-02-lp3 ~]# ls -l install.img
--rw-r--r-- 1 root root 142032896 Apr 30 16:46 install.img
-[root at ibm-p750e-02-lp3 ~]# mount -o loop ./install.img /mnt/test
-[root at ibm-p750e-02-lp3 ~]# dd if=/dev/loop0 of=/dev/null
-dd: reading `/dev/loop0': Input/output error
-277376+0 records in
-277376+0 records out
-142016512 bytes (142 MB) copied, 0.9465 s, 150 MB/s
-
-In dmesg, you'll find the following:
-
-squashfs: version 4.0 (2009/01/31) Phillip Lougher
-[ 43.106012] attempt to access beyond end of device
-[ 43.106029] loop0: rw=0, want=277410, limit=277408
-[ 43.106039] Buffer I/O error on device loop0, logical block 138704
-[ 43.106053] attempt to access beyond end of device
-[ 43.106057] loop0: rw=0, want=277412, limit=277408
-[ 43.106061] Buffer I/O error on device loop0, logical block 138705
-[ 43.106066] attempt to access beyond end of device
-[ 43.106070] loop0: rw=0, want=277414, limit=277408
-[ 43.106073] Buffer I/O error on device loop0, logical block 138706
-[ 43.106078] attempt to access beyond end of device
-[ 43.106081] loop0: rw=0, want=277416, limit=277408
-[ 43.106085] Buffer I/O error on device loop0, logical block 138707
-[ 43.106089] attempt to access beyond end of device
-[ 43.106093] loop0: rw=0, want=277418, limit=277408
-[ 43.106096] Buffer I/O error on device loop0, logical block 138708
-[ 43.106101] attempt to access beyond end of device
-[ 43.106104] loop0: rw=0, want=277420, limit=277408
-[ 43.106108] Buffer I/O error on device loop0, logical block 138709
-[ 43.106112] attempt to access beyond end of device
-[ 43.106116] loop0: rw=0, want=277422, limit=277408
-[ 43.106120] Buffer I/O error on device loop0, logical block 138710
-[ 43.106124] attempt to access beyond end of device
-[ 43.106128] loop0: rw=0, want=277424, limit=277408
-[ 43.106131] Buffer I/O error on device loop0, logical block 138711
-[ 43.106135] attempt to access beyond end of device
-[ 43.106139] loop0: rw=0, want=277426, limit=277408
-[ 43.106143] Buffer I/O error on device loop0, logical block 138712
-[ 43.106147] attempt to access beyond end of device
-[ 43.106151] loop0: rw=0, want=277428, limit=277408
-[ 43.106154] Buffer I/O error on device loop0, logical block 138713
-[ 43.106158] attempt to access beyond end of device
-[ 43.106162] loop0: rw=0, want=277430, limit=277408
-[ 43.106166] attempt to access beyond end of device
-[ 43.106169] loop0: rw=0, want=277432, limit=277408
-...
-[ 43.106307] attempt to access beyond end of device
-[ 43.106311] loop0: rw=0, want=277470, limit=2774
-
-Squashfs manages to read in the end block(s) of the disk during the
-mount operation. Then, when dd reads the block device, it leads to
-block_read_full_page being called with buffers that are beyond end of
-disk, but are marked as mapped. Thus, it would end up submitting read
-I/O against them, resulting in the errors mentioned above. I fixed the
-problem by modifying init_page_buffers to only set the buffer mapped if
-it fell inside of i_size.
-
-Cheers,
-Jeff
-
-Signed-off-by: Jeff Moyer <jmoyer at redhat.com>
-Acked-by: Nick Piggin <npiggin at kernel.dk>
-
---
-
-Changes from v1->v2: re-used max_block, as suggested by Nick Piggin.
-Signed-off-by: Jens Axboe <axboe at kernel.dk>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/block_dev.c | 6 +++---
- fs/buffer.c | 4 +++-
- include/linux/fs.h | 1 +
- 3 files changed, 7 insertions(+), 4 deletions(-)
-
-diff --git a/fs/block_dev.c b/fs/block_dev.c
-index abe9b48..9b98987 100644
---- a/fs/block_dev.c
-+++ b/fs/block_dev.c
-@@ -68,7 +68,7 @@ static void bdev_inode_switch_bdi(struct inode *inode,
- spin_unlock(&dst->wb.list_lock);
- }
-
--static sector_t max_block(struct block_device *bdev)
-+sector_t blkdev_max_block(struct block_device *bdev)
- {
- sector_t retval = ~((sector_t)0);
- loff_t sz = i_size_read(bdev->bd_inode);
-@@ -139,7 +139,7 @@ static int
- blkdev_get_block(struct inode *inode, sector_t iblock,
- struct buffer_head *bh, int create)
- {
-- if (iblock >= max_block(I_BDEV(inode))) {
-+ if (iblock >= blkdev_max_block(I_BDEV(inode))) {
- if (create)
- return -EIO;
-
-@@ -161,7 +161,7 @@ static int
- blkdev_get_blocks(struct inode *inode, sector_t iblock,
- struct buffer_head *bh, int create)
- {
-- sector_t end_block = max_block(I_BDEV(inode));
-+ sector_t end_block = blkdev_max_block(I_BDEV(inode));
- unsigned long max_blocks = bh->b_size >> inode->i_blkbits;
-
- if ((iblock + max_blocks) > end_block) {
-diff --git a/fs/buffer.c b/fs/buffer.c
-index 19d8eb7..c807931 100644
---- a/fs/buffer.c
-+++ b/fs/buffer.c
-@@ -971,6 +971,7 @@ init_page_buffers(struct page *page, struct block_device *bdev,
- struct buffer_head *head = page_buffers(page);
- struct buffer_head *bh = head;
- int uptodate = PageUptodate(page);
-+ sector_t end_block = blkdev_max_block(I_BDEV(bdev->bd_inode));
-
- do {
- if (!buffer_mapped(bh)) {
-@@ -979,7 +980,8 @@ init_page_buffers(struct page *page, struct block_device *bdev,
- bh->b_blocknr = block;
- if (uptodate)
- set_buffer_uptodate(bh);
-- set_buffer_mapped(bh);
-+ if (block < end_block)
-+ set_buffer_mapped(bh);
- }
- block++;
- bh = bh->b_this_page;
-diff --git a/include/linux/fs.h b/include/linux/fs.h
-index 11f1951..43d36b7 100644
---- a/include/linux/fs.h
-+++ b/include/linux/fs.h
-@@ -2094,6 +2094,7 @@ extern void unregister_blkdev(unsigned int, const char *);
- extern struct block_device *bdget(dev_t);
- extern struct block_device *bdgrab(struct block_device *bdev);
- extern void bd_set_size(struct block_device *, loff_t size);
-+extern sector_t blkdev_max_block(struct block_device *bdev);
- extern void bd_forget(struct inode *inode);
- extern void bdput(struct block_device *);
- extern void invalidate_bdev(struct block_device *);
---
-1.7.9.5
-
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
deleted file mode 100644
index 1362765..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0104-drivers-rtc-rtc-pl031.c-configure-correct-wday-for-2.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From 39c43ea9fecaddcfddd03787b920b8accdb87884 Mon Sep 17 00:00:00 2001
-From: Rajkumar Kasirajan <rajkumar.kasirajan at stericsson.com>
-Date: Thu, 17 May 2012 17:03:24 -0700
-Subject: [PATCH 104/117] drivers/rtc/rtc-pl031.c: configure correct wday for
- 2000-01-01
-
-commit c0a5f4a05af588a0f9951f8d24e2564b09501918 upstream.
-
-The reset date of the ST Micro version of PL031 is 2000-01-01. The
-correct weekday for 2000-01-01 is saturday, but pl031 is initialized to
-sunday. This may lead to alarm malfunction, so configure the correct
-wday if RTC_DR indicates reset.
-
-Signed-off-by: Rajkumar Kasirajan <rajkumar.kasirajan at stericsson.com>
-Signed-off-by: Linus Walleij <linus.walleij at linaro.org>
-Cc: Mattias Wallin <mattias.wallin at stericsson.com>
-Cc: Alessandro Zummo <a.zummo at towertech.it>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/rtc/rtc-pl031.c | 18 ++++++++++++++++++
- 1 file changed, 18 insertions(+)
-
-diff --git a/drivers/rtc/rtc-pl031.c b/drivers/rtc/rtc-pl031.c
-index e86edfc..1e80a48 100644
---- a/drivers/rtc/rtc-pl031.c
-+++ b/drivers/rtc/rtc-pl031.c
-@@ -312,6 +312,7 @@ static int pl031_probe(struct amba_device *adev, const struct amba_id *id)
- int ret;
- struct pl031_local *ldata;
- struct rtc_class_ops *ops = id->data;
-+ unsigned long time;
-
- ret = amba_request_regions(adev, NULL);
- if (ret)
-@@ -343,6 +344,23 @@ static int pl031_probe(struct amba_device *adev, const struct amba_id *id)
- writel(readl(ldata->base + RTC_CR) | RTC_CR_CWEN,
- ldata->base + RTC_CR);
-
-+ /*
-+ * On ST PL031 variants, the RTC reset value does not provide correct
-+ * weekday for 2000-01-01. Correct the erroneous sunday to saturday.
-+ */
-+ if (ldata->hw_designer == AMBA_VENDOR_ST) {
-+ if (readl(ldata->base + RTC_YDR) == 0x2000) {
-+ time = readl(ldata->base + RTC_DR);
-+ if ((time &
-+ (RTC_MON_MASK | RTC_MDAY_MASK | RTC_WDAY_MASK))
-+ == 0x02120000) {
-+ time = time | (0x7 << RTC_WDAY_SHIFT);
-+ writel(0x2000, ldata->base + RTC_YLR);
-+ writel(time, ldata->base + RTC_LR);
-+ }
-+ }
-+ }
-+
- ldata->rtc = rtc_device_register("pl031", &adev->dev, ops,
- THIS_MODULE);
- if (IS_ERR(ldata->rtc)) {
---
-1.7.9.5
-
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
deleted file mode 100644
index 67b25e2..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0105-rtlwifi-Preallocate-USB-read-buffers-and-eliminate-k.patch
+++ /dev/null
@@ -1,136 +0,0 @@
-From 91ccd8364ff45f06a05715225583247c09be4bbc Mon Sep 17 00:00:00 2001
-From: Larry Finger <Larry.Finger at lwfinger.net>
-Date: Mon, 19 Mar 2012 15:44:31 -0500
-Subject: [PATCH 105/117] rtlwifi: Preallocate USB read buffers and eliminate
- kalloc in read routine
-
-commit a7959c1394d4126a70a53b914ce4105f5173d0aa upstream.
-
-The current version of rtlwifi for USB operations uses kmalloc to
-acquire a 32-bit buffer for each read of the device. When
-_usb_read_sync() is called with the rcu_lock held, the result is
-a "sleeping function called from invalid context" BUG. This is
-reported for two cases in https://bugzilla.kernel.org/show_bug.cgi?id=42775.
-The first case has the lock originating from within rtlwifi and could
-be fixed by rearranging the locking; however, the second originates from
-within mac80211. The kmalloc() call is removed from _usb_read_sync()
-by creating a ring buffer pointer in the private area and
-allocating the buffer data in the probe routine.
-
-Signed-off-by: Larry Finger <Larry.Finger at lwfinger.net>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-[This version will apply to 3.2 and earlier. - Larry]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/wireless/rtlwifi/usb.c | 34 ++++++++++++++++------------------
- drivers/net/wireless/rtlwifi/wifi.h | 6 +++++-
- 2 files changed, 21 insertions(+), 19 deletions(-)
-
-diff --git a/drivers/net/wireless/rtlwifi/usb.c b/drivers/net/wireless/rtlwifi/usb.c
-index 2b7bcc8..db34db6 100644
---- a/drivers/net/wireless/rtlwifi/usb.c
-+++ b/drivers/net/wireless/rtlwifi/usb.c
-@@ -113,46 +113,38 @@ static int _usbctrl_vendorreq_sync_read(struct usb_device *udev, u8 request,
- return status;
- }
-
--static u32 _usb_read_sync(struct usb_device *udev, u32 addr, u16 len)
-+static u32 _usb_read_sync(struct rtl_priv *rtlpriv, u32 addr, u16 len)
- {
-+ struct device *dev = rtlpriv->io.dev;
-+ struct usb_device *udev = to_usb_device(dev);
- u8 request;
- u16 wvalue;
- u16 index;
-- u32 *data;
-- u32 ret;
-+ __le32 *data = &rtlpriv->usb_data[rtlpriv->usb_data_index];
-
-- data = kmalloc(sizeof(u32), GFP_KERNEL);
-- if (!data)
-- return -ENOMEM;
- request = REALTEK_USB_VENQT_CMD_REQ;
- index = REALTEK_USB_VENQT_CMD_IDX; /* n/a */
-
- wvalue = (u16)addr;
- _usbctrl_vendorreq_sync_read(udev, request, wvalue, index, data, len);
-- ret = *data;
-- kfree(data);
-- return ret;
-+ if (++rtlpriv->usb_data_index >= RTL_USB_MAX_RX_COUNT)
-+ rtlpriv->usb_data_index = 0;
-+ return le32_to_cpu(*data);
- }
-
- static u8 _usb_read8_sync(struct rtl_priv *rtlpriv, u32 addr)
- {
-- struct device *dev = rtlpriv->io.dev;
--
-- return (u8)_usb_read_sync(to_usb_device(dev), addr, 1);
-+ return (u8)_usb_read_sync(rtlpriv, addr, 1);
- }
-
- static u16 _usb_read16_sync(struct rtl_priv *rtlpriv, u32 addr)
- {
-- struct device *dev = rtlpriv->io.dev;
--
-- return (u16)_usb_read_sync(to_usb_device(dev), addr, 2);
-+ return (u16)_usb_read_sync(rtlpriv, addr, 2);
- }
-
- static u32 _usb_read32_sync(struct rtl_priv *rtlpriv, u32 addr)
- {
-- struct device *dev = rtlpriv->io.dev;
--
-- return _usb_read_sync(to_usb_device(dev), addr, 4);
-+ return _usb_read_sync(rtlpriv, addr, 4);
- }
-
- static void _usb_write_async(struct usb_device *udev, u32 addr, u32 val,
-@@ -913,6 +905,11 @@ int __devinit rtl_usb_probe(struct usb_interface *intf,
- return -ENOMEM;
- }
- rtlpriv = hw->priv;
-+ rtlpriv->usb_data = kzalloc(RTL_USB_MAX_RX_COUNT * sizeof(u32),
-+ GFP_KERNEL);
-+ if (!rtlpriv->usb_data)
-+ return -ENOMEM;
-+ rtlpriv->usb_data_index = 0;
- SET_IEEE80211_DEV(hw, &intf->dev);
- udev = interface_to_usbdev(intf);
- usb_get_dev(udev);
-@@ -990,6 +987,7 @@ void rtl_usb_disconnect(struct usb_interface *intf)
- /* rtl_deinit_rfkill(hw); */
- rtl_usb_deinit(hw);
- rtl_deinit_core(hw);
-+ kfree(rtlpriv->usb_data);
- rtlpriv->cfg->ops->deinit_sw_leds(hw);
- rtlpriv->cfg->ops->deinit_sw_vars(hw);
- _rtl_usb_io_handler_release(hw);
-diff --git a/drivers/net/wireless/rtlwifi/wifi.h b/drivers/net/wireless/rtlwifi/wifi.h
-index 713c7dd..b1e9deb 100644
---- a/drivers/net/wireless/rtlwifi/wifi.h
-+++ b/drivers/net/wireless/rtlwifi/wifi.h
-@@ -63,7 +63,7 @@
- #define AC_MAX 4
- #define QOS_QUEUE_NUM 4
- #define RTL_MAC80211_NUM_QUEUE 5
--
-+#define RTL_USB_MAX_RX_COUNT 100
- #define QBSS_LOAD_SIZE 5
- #define MAX_WMMELE_LENGTH 64
-
-@@ -1621,6 +1621,10 @@ struct rtl_priv {
- interface or hardware */
- unsigned long status;
-
-+ /* data buffer pointer for USB reads */
-+ __le32 *usb_data;
-+ int usb_data_index;
-+
- /*This must be the last item so
- that it points to the data allocated
- beyond this structure like:
---
-1.7.9.5
-
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
deleted file mode 100644
index 678add0..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0106-NFS4-fix-compile-warnings-in-nfs4proc.c.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 697781d208d92b5998815e584411f29c34048cd6 Mon Sep 17 00:00:00 2001
-From: Peng Tao <bergwolf at gmail.com>
-Date: Tue, 10 Jan 2012 22:42:47 +0800
-Subject: [PATCH 106/117] NFS4: fix compile warnings in nfs4proc.c
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit de040beccd52bb5fcac90031505384d037b1111c upstream.
-
-compile in nfs-for-3.3 branch shows following warnings. Fix it here.
-
-fs/nfs/nfs4proc.c: In function ‘__nfs4_get_acl_uncached’:
-fs/nfs/nfs4proc.c:3589: warning: format ‘%ld’ expects type ‘long int’, but argument 4 has type ‘size_t’
-fs/nfs/nfs4proc.c:3589: warning: format ‘%ld’ expects type ‘long int’, but argument 6 has type ‘size_t’
-
-Signed-off-by: Peng Tao <peng_tao at emc.com>
-Signed-off-by: Trond Myklebust <Trond.Myklebust at netapp.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/nfs/nfs4proc.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
-index bab7c58..065f82e 100644
---- a/fs/nfs/nfs4proc.c
-+++ b/fs/nfs/nfs4proc.c
-@@ -3601,7 +3601,7 @@ static ssize_t __nfs4_get_acl_uncached(struct inode *inode, void *buf, size_t bu
- res.acl_flags |= NFS4_ACL_LEN_REQUEST;
- resp_buf = page_address(pages[0]);
-
-- dprintk("%s buf %p buflen %ld npages %d args.acl_len %ld\n",
-+ dprintk("%s buf %p buflen %zu npages %d args.acl_len %zu\n",
- __func__, buf, buflen, npages, args.acl_len);
- ret = nfs4_call_sync(NFS_SERVER(inode)->client, NFS_SERVER(inode),
- &msg, &args.seq_args, &res.seq_res, 0);
---
-1.7.9.5
-
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
deleted file mode 100644
index 6859029..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0107-Avoid-reading-past-buffer-when-calling-GETACL.patch
+++ /dev/null
@@ -1,123 +0,0 @@
-From c47d1a5a922ddebee44945d665affd7214f2dbf3 Mon Sep 17 00:00:00 2001
-From: Sachin Prabhu <sprabhu at redhat.com>
-Date: Tue, 17 Apr 2012 14:35:39 +0100
-Subject: [PATCH 107/117] Avoid reading past buffer when calling GETACL
-
-commit 5a00689930ab975fdd1b37b034475017e460cf2a upstream.
-
-Bug noticed in commit
-bf118a342f10dafe44b14451a1392c3254629a1f
-
-When calling GETACL, if the size of the bitmap array, the length
-attribute and the acl returned by the server is greater than the
-allocated buffer(args.acl_len), we can Oops with a General Protection
-fault at _copy_from_pages() when we attempt to read past the pages
-allocated.
-
-This patch allocates an extra PAGE for the bitmap and checks to see that
-the bitmap + attribute_length + ACLs don't exceed the buffer space
-allocated to it.
-
-Signed-off-by: Sachin Prabhu <sprabhu at redhat.com>
-Reported-by: Jian Li <jiali at redhat.com>
-[Trond: Fixed a size_t vs unsigned int printk() warning]
-Signed-off-by: Trond Myklebust <Trond.Myklebust at netapp.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/nfs/nfs4proc.c | 16 ++++++++++------
- fs/nfs/nfs4xdr.c | 18 +++++++++++-------
- 2 files changed, 21 insertions(+), 13 deletions(-)
-
-diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
-index 065f82e..39e5341 100644
---- a/fs/nfs/nfs4proc.c
-+++ b/fs/nfs/nfs4proc.c
-@@ -3582,19 +3582,23 @@ static ssize_t __nfs4_get_acl_uncached(struct inode *inode, void *buf, size_t bu
- if (npages == 0)
- npages = 1;
-
-+ /* Add an extra page to handle the bitmap returned */
-+ npages++;
-+
- for (i = 0; i < npages; i++) {
- pages[i] = alloc_page(GFP_KERNEL);
- if (!pages[i])
- goto out_free;
- }
-- if (npages > 1) {
-- /* for decoding across pages */
-- res.acl_scratch = alloc_page(GFP_KERNEL);
-- if (!res.acl_scratch)
-- goto out_free;
-- }
-+
-+ /* for decoding across pages */
-+ res.acl_scratch = alloc_page(GFP_KERNEL);
-+ if (!res.acl_scratch)
-+ goto out_free;
-+
- args.acl_len = npages * PAGE_SIZE;
- args.acl_pgbase = 0;
-+
- /* Let decode_getfacl know not to fail if the ACL data is larger than
- * the page we send as a guess */
- if (buf == NULL)
-diff --git a/fs/nfs/nfs4xdr.c b/fs/nfs/nfs4xdr.c
-index 68adab4..d7e6f7b 100644
---- a/fs/nfs/nfs4xdr.c
-+++ b/fs/nfs/nfs4xdr.c
-@@ -4965,11 +4965,19 @@ static int decode_getacl(struct xdr_stream *xdr, struct rpc_rqst *req,
- bitmap[3] = {0};
- struct kvec *iov = req->rq_rcv_buf.head;
- int status;
-+ size_t page_len = xdr->buf->page_len;
-
- res->acl_len = 0;
- if ((status = decode_op_hdr(xdr, OP_GETATTR)) != 0)
- goto out;
-+
- bm_p = xdr->p;
-+ res->acl_data_offset = be32_to_cpup(bm_p) + 2;
-+ res->acl_data_offset <<= 2;
-+ /* Check if the acl data starts beyond the allocated buffer */
-+ if (res->acl_data_offset > page_len)
-+ return -ERANGE;
-+
- if ((status = decode_attr_bitmap(xdr, bitmap)) != 0)
- goto out;
- if ((status = decode_attr_length(xdr, &attrlen, &savep)) != 0)
-@@ -4979,28 +4987,24 @@ static int decode_getacl(struct xdr_stream *xdr, struct rpc_rqst *req,
- return -EIO;
- if (likely(bitmap[0] & FATTR4_WORD0_ACL)) {
- size_t hdrlen;
-- u32 recvd;
-
- /* The bitmap (xdr len + bitmaps) and the attr xdr len words
- * are stored with the acl data to handle the problem of
- * variable length bitmaps.*/
- xdr->p = bm_p;
-- res->acl_data_offset = be32_to_cpup(bm_p) + 2;
-- res->acl_data_offset <<= 2;
-
- /* We ignore &savep and don't do consistency checks on
- * the attr length. Let userspace figure it out.... */
- hdrlen = (u8 *)xdr->p - (u8 *)iov->iov_base;
- attrlen += res->acl_data_offset;
-- recvd = req->rq_rcv_buf.len - hdrlen;
-- if (attrlen > recvd) {
-+ if (attrlen > page_len) {
- if (res->acl_flags & NFS4_ACL_LEN_REQUEST) {
- /* getxattr interface called with a NULL buf */
- res->acl_len = attrlen;
- goto out;
- }
-- dprintk("NFS: acl reply: attrlen %u > recvd %u\n",
-- attrlen, recvd);
-+ dprintk("NFS: acl reply: attrlen %zu > page_len %u\n",
-+ attrlen, page_len);
- return -EINVAL;
- }
- xdr_read_pages(xdr, attrlen);
---
-1.7.9.5
-
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
deleted file mode 100644
index 4334d5c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0108-Avoid-beyond-bounds-copy-while-caching-ACL.patch
+++ /dev/null
@@ -1,88 +0,0 @@
-From 883e739eda3448cf83266a155d8ad39b1fe7ac6e Mon Sep 17 00:00:00 2001
-From: Sachin Prabhu <sprabhu at redhat.com>
-Date: Tue, 17 Apr 2012 14:36:40 +0100
-Subject: [PATCH 108/117] Avoid beyond bounds copy while caching ACL
-
-commit 5794d21ef4639f0e33440927bb903f9598c21e92 upstream.
-
-When attempting to cache ACLs returned from the server, if the bitmap
-size + the ACL size is greater than a PAGE_SIZE but the ACL size itself
-is smaller than a PAGE_SIZE, we can read past the buffer page boundary.
-
-Signed-off-by: Sachin Prabhu <sprabhu at redhat.com>
-Reported-by: Jian Li <jiali at redhat.com>
-Signed-off-by: Trond Myklebust <Trond.Myklebust at netapp.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/nfs/nfs4proc.c | 12 +++++-------
- fs/nfs/nfs4xdr.c | 2 +-
- 2 files changed, 6 insertions(+), 8 deletions(-)
-
-diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
-index 39e5341..03d9b90 100644
---- a/fs/nfs/nfs4proc.c
-+++ b/fs/nfs/nfs4proc.c
-@@ -3526,16 +3526,16 @@ out:
- return ret;
- }
-
--static void nfs4_write_cached_acl(struct inode *inode, const char *buf, size_t acl_len)
-+static void nfs4_write_cached_acl(struct inode *inode, struct page **pages, size_t pgbase, size_t acl_len)
- {
- struct nfs4_cached_acl *acl;
-
-- if (buf && acl_len <= PAGE_SIZE) {
-+ if (pages && acl_len <= PAGE_SIZE) {
- acl = kmalloc(sizeof(*acl) + acl_len, GFP_KERNEL);
- if (acl == NULL)
- goto out;
- acl->cached = 1;
-- memcpy(acl->data, buf, acl_len);
-+ _copy_from_pages(acl->data, pages, pgbase, acl_len);
- } else {
- acl = kmalloc(sizeof(*acl), GFP_KERNEL);
- if (acl == NULL)
-@@ -3568,7 +3568,6 @@ static ssize_t __nfs4_get_acl_uncached(struct inode *inode, void *buf, size_t bu
- struct nfs_getaclres res = {
- .acl_len = buflen,
- };
-- void *resp_buf;
- struct rpc_message msg = {
- .rpc_proc = &nfs4_procedures[NFSPROC4_CLNT_GETACL],
- .rpc_argp = &args,
-@@ -3603,7 +3602,6 @@ static ssize_t __nfs4_get_acl_uncached(struct inode *inode, void *buf, size_t bu
- * the page we send as a guess */
- if (buf == NULL)
- res.acl_flags |= NFS4_ACL_LEN_REQUEST;
-- resp_buf = page_address(pages[0]);
-
- dprintk("%s buf %p buflen %zu npages %d args.acl_len %zu\n",
- __func__, buf, buflen, npages, args.acl_len);
-@@ -3614,9 +3612,9 @@ static ssize_t __nfs4_get_acl_uncached(struct inode *inode, void *buf, size_t bu
-
- acl_len = res.acl_len - res.acl_data_offset;
- if (acl_len > args.acl_len)
-- nfs4_write_cached_acl(inode, NULL, acl_len);
-+ nfs4_write_cached_acl(inode, NULL, 0, acl_len);
- else
-- nfs4_write_cached_acl(inode, resp_buf + res.acl_data_offset,
-+ nfs4_write_cached_acl(inode, pages, res.acl_data_offset,
- acl_len);
- if (buf) {
- ret = -ERANGE;
-diff --git a/fs/nfs/nfs4xdr.c b/fs/nfs/nfs4xdr.c
-index d7e6f7b..bdd5bdc 100644
---- a/fs/nfs/nfs4xdr.c
-+++ b/fs/nfs/nfs4xdr.c
-@@ -5003,7 +5003,7 @@ static int decode_getacl(struct xdr_stream *xdr, struct rpc_rqst *req,
- res->acl_len = attrlen;
- goto out;
- }
-- dprintk("NFS: acl reply: attrlen %zu > page_len %u\n",
-+ dprintk("NFS: acl reply: attrlen %u > page_len %zu\n",
- attrlen, page_len);
- return -EINVAL;
- }
---
-1.7.9.5
-
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
deleted file mode 100644
index e6899f5..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0109-i2c-tegra-notify-transfer-complete-after-clearing-st.patch
+++ /dev/null
@@ -1,73 +0,0 @@
-From 0f8821cf8d7d8c94c8d29d8d32c02d90363ffe9b Mon Sep 17 00:00:00 2001
-From: Laxman Dewangan <ldewangan at nvidia.com>
-Date: Mon, 7 May 2012 12:16:19 +0530
-Subject: [PATCH 109/117] i2c: tegra: notify transfer-complete after clearing
- status.
-
-commit c889e91d2cc22123f20f40dde0c0a91856a20eea upstream.
-
-The notification of the transfer complete by calling complete()
-should be done after clearing all interrupt status.
-This avoids the race condition of misconfigure the i2c controller
-in multi-core environment.
-
-Signed-off-by: Laxman Dewangan <ldewangan at nvidia.com>
-Acked-by: Stephen Warren <swarren at wwwdotorg.org>
-Signed-off-by: Wolfram Sang <w.sang at pengutronix.de>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/i2c/busses/i2c-tegra.c | 13 ++++++-------
- 1 file changed, 6 insertions(+), 7 deletions(-)
-
-diff --git a/drivers/i2c/busses/i2c-tegra.c b/drivers/i2c/busses/i2c-tegra.c
-index 46b6500..3d7885a 100644
---- a/drivers/i2c/busses/i2c-tegra.c
-+++ b/drivers/i2c/busses/i2c-tegra.c
-@@ -401,8 +401,6 @@ static irqreturn_t tegra_i2c_isr(int irq, void *dev_id)
- disable_irq_nosync(i2c_dev->irq);
- i2c_dev->irq_disabled = 1;
- }
--
-- complete(&i2c_dev->msg_complete);
- goto err;
- }
-
-@@ -411,7 +409,6 @@ static irqreturn_t tegra_i2c_isr(int irq, void *dev_id)
- i2c_dev->msg_err |= I2C_ERR_NO_ACK;
- if (status & I2C_INT_ARBITRATION_LOST)
- i2c_dev->msg_err |= I2C_ERR_ARBITRATION_LOST;
-- complete(&i2c_dev->msg_complete);
- goto err;
- }
-
-@@ -429,14 +426,14 @@ static irqreturn_t tegra_i2c_isr(int irq, void *dev_id)
- tegra_i2c_mask_irq(i2c_dev, I2C_INT_TX_FIFO_DATA_REQ);
- }
-
-+ i2c_writel(i2c_dev, status, I2C_INT_STATUS);
-+ if (i2c_dev->is_dvc)
-+ dvc_writel(i2c_dev, DVC_STATUS_I2C_DONE_INTR, DVC_STATUS);
-+
- if (status & I2C_INT_PACKET_XFER_COMPLETE) {
- BUG_ON(i2c_dev->msg_buf_remaining);
- complete(&i2c_dev->msg_complete);
- }
--
-- i2c_writel(i2c_dev, status, I2C_INT_STATUS);
-- if (i2c_dev->is_dvc)
-- dvc_writel(i2c_dev, DVC_STATUS_I2C_DONE_INTR, DVC_STATUS);
- return IRQ_HANDLED;
- err:
- /* An error occurred, mask all interrupts */
-@@ -446,6 +443,8 @@ err:
- i2c_writel(i2c_dev, status, I2C_INT_STATUS);
- if (i2c_dev->is_dvc)
- dvc_writel(i2c_dev, DVC_STATUS_I2C_DONE_INTR, DVC_STATUS);
-+
-+ complete(&i2c_dev->msg_complete);
- return IRQ_HANDLED;
- }
-
---
-1.7.9.5
-
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
deleted file mode 100644
index 7b921ac..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0110-i2c-davinci-Free-requested-IRQ-in-remove.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 38de7136cb639352d20e39a90c41bb93f63a03e6 Mon Sep 17 00:00:00 2001
-From: Marcus Folkesson <marcus.folkesson at gmail.com>
-Date: Thu, 3 May 2012 15:56:36 +0200
-Subject: [PATCH 110/117] i2c: davinci: Free requested IRQ in remove
-
-commit 9868a060ccf769c08ec378a9829137e272e9a92c upstream.
-
-The freed IRQ is not necessary the one requested in probe.
-Even if it was, with two or more i2c-controllers it will fails anyway.
-
-Signed-off-by: Marcus Folkesson <marcus.folkesson at gmail.com>
-Signed-off-by: Wolfram Sang <w.sang at pengutronix.de>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/i2c/busses/i2c-davinci.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/i2c/busses/i2c-davinci.c b/drivers/i2c/busses/i2c-davinci.c
-index a76d85f..79b4bcb 100644
---- a/drivers/i2c/busses/i2c-davinci.c
-+++ b/drivers/i2c/busses/i2c-davinci.c
-@@ -755,7 +755,7 @@ static int davinci_i2c_remove(struct platform_device *pdev)
- dev->clk = NULL;
-
- davinci_i2c_write_reg(dev, DAVINCI_I2C_MDR_REG, 0);
-- free_irq(IRQ_I2C, dev);
-+ free_irq(dev->irq, dev);
- iounmap(dev->base);
- kfree(dev);
-
---
-1.7.9.5
-
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
deleted file mode 100644
index dfd1310..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0111-x86-realmode-16-bit-real-mode-code-support-for-reloc.patch
+++ /dev/null
@@ -1,1651 +0,0 @@
-From 873824542d50e967bda4a3526b4aceec80641c6d Mon Sep 17 00:00:00 2001
-From: "H. Peter Anvin" <hpa at linux.intel.com>
-Date: Tue, 8 May 2012 21:22:24 +0300
-Subject: [PATCH 111/117] x86, realmode: 16-bit real-mode code support for
- relocs tool
-
-commit 6520fe5564acf07ade7b18a1272db1184835c487 upstream.
-
-A new option is added to the relocs tool called '--realmode'.
-This option causes the generation of 16-bit segment relocations
-and 32-bit linear relocations for the real-mode code. When
-the real-mode code is moved to the low-memory during kernel
-initialization, these relocation entries can be used to
-relocate the code properly.
-
-In the assembly code 16-bit segment relocations must be relative
-to the 'real_mode_seg' absolute symbol. Linear relocations must be
-relative to a symbol prefixed with 'pa_'.
-
-16-bit segment relocation is used to load cs:ip in 16-bit code.
-Linear relocations are used in the 32-bit code for relocatable
-data references. They are declared in the linker script of the
-real-mode code.
-
-The relocs tool is moved to arch/x86/tools/relocs.c, and added new
-target archscripts that can be used to build scripts needed building
-an architecture. be compiled before building the arch/x86 tree.
-
-[ hpa: accelerating this because it detects invalid absolute
- relocations, a serious bug in binutils 2.22.52.0.x which currently
- produces bad kernels. ]
-
-Signed-off-by: H. Peter Anvin <hpa at linux.intel.com>
-Link: http://lkml.kernel.org/r/1336501366-28617-2-git-send-email-jarkko.sakkinen@intel.com
-Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen at intel.com>
-Signed-off-by: H. Peter Anvin <hpa at linux.intel.com>
-Cc: <stable at vger.kernel.org>
-[bwh: Backported to 3.2:
- - Adjust context (no archheaders; no insn_sanity)
- - Expand put_unaligned_le32()]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- Makefile | 9 +-
- arch/x86/Makefile | 3 +
- arch/x86/boot/compressed/Makefile | 9 +-
- arch/x86/boot/compressed/relocs.c | 680 -------------------------------
- arch/x86/tools/.gitignore | 1 +
- arch/x86/tools/Makefile | 3 +
- arch/x86/tools/relocs.c | 799 +++++++++++++++++++++++++++++++++++++
- scripts/Makefile | 2 +
- 8 files changed, 818 insertions(+), 688 deletions(-)
- delete mode 100644 arch/x86/boot/compressed/relocs.c
- create mode 100644 arch/x86/tools/.gitignore
- create mode 100644 arch/x86/tools/relocs.c
-
-diff --git a/Makefile b/Makefile
-index add68f1..0226da5 100644
---- a/Makefile
-+++ b/Makefile
-@@ -442,7 +442,7 @@ asm-generic:
-
- no-dot-config-targets := clean mrproper distclean \
- cscope gtags TAGS tags help %docs check% coccicheck \
-- include/linux/version.h headers_% \
-+ include/linux/version.h headers_% archscripts \
- kernelversion %src-pkg
-
- config-targets := 0
-@@ -979,7 +979,7 @@ prepare1: prepare2 include/linux/version.h include/generated/utsrelease.h \
- include/config/auto.conf
- $(cmd_crmodverdir)
-
--archprepare: prepare1 scripts_basic
-+archprepare: archscripts prepare1 scripts_basic
-
- prepare0: archprepare FORCE
- $(Q)$(MAKE) $(build)=.
-@@ -1046,8 +1046,11 @@ hdr-inst := -rR -f $(srctree)/scripts/Makefile.headersinst obj
- # If we do an all arch process set dst to asm-$(hdr-arch)
- hdr-dst = $(if $(KBUILD_HEADERS), dst=include/asm-$(hdr-arch), dst=include/asm)
-
-+PHONY += archscripts
-+archscripts:
-+
- PHONY += __headers
--__headers: include/linux/version.h scripts_basic asm-generic FORCE
-+__headers: include/linux/version.h scripts_basic asm-generic archscripts FORCE
- $(Q)$(MAKE) $(build)=scripts build_unifdef
-
- PHONY += headers_install_all
-diff --git a/arch/x86/Makefile b/arch/x86/Makefile
-index b02e509..774fd16 100644
---- a/arch/x86/Makefile
-+++ b/arch/x86/Makefile
-@@ -117,6 +117,9 @@ KBUILD_CFLAGS += $(call cc-option,-mno-sse -mno-mmx -mno-sse2 -mno-3dnow,)
- KBUILD_CFLAGS += $(mflags-y)
- KBUILD_AFLAGS += $(mflags-y)
-
-+archscripts:
-+ $(Q)$(MAKE) $(build)=arch/x86/tools relocs
-+
- ###
- # Kernel objects
-
-diff --git a/arch/x86/boot/compressed/Makefile b/arch/x86/boot/compressed/Makefile
-index 09664ef..77453c6 100644
---- a/arch/x86/boot/compressed/Makefile
-+++ b/arch/x86/boot/compressed/Makefile
-@@ -31,13 +31,12 @@ OBJCOPYFLAGS_vmlinux.bin := -R .comment -S
- $(obj)/vmlinux.bin: vmlinux FORCE
- $(call if_changed,objcopy)
-
-+targets += vmlinux.bin.all vmlinux.relocs
-
--targets += vmlinux.bin.all vmlinux.relocs relocs
--hostprogs-$(CONFIG_X86_NEED_RELOCS) += relocs
--
-+CMD_RELOCS = arch/x86/tools/relocs
- quiet_cmd_relocs = RELOCS $@
-- cmd_relocs = $(obj)/relocs $< > $@;$(obj)/relocs --abs-relocs $<
--$(obj)/vmlinux.relocs: vmlinux $(obj)/relocs FORCE
-+ cmd_relocs = $(CMD_RELOCS) $< > $@;$(CMD_RELOCS) --abs-relocs $<
-+$(obj)/vmlinux.relocs: vmlinux FORCE
- $(call if_changed,relocs)
-
- vmlinux.bin.all-y := $(obj)/vmlinux.bin
-diff --git a/arch/x86/boot/compressed/relocs.c b/arch/x86/boot/compressed/relocs.c
-deleted file mode 100644
-index e77f4e4..0000000
---- a/arch/x86/boot/compressed/relocs.c
-+++ /dev/null
-@@ -1,680 +0,0 @@
--#include <stdio.h>
--#include <stdarg.h>
--#include <stdlib.h>
--#include <stdint.h>
--#include <string.h>
--#include <errno.h>
--#include <unistd.h>
--#include <elf.h>
--#include <byteswap.h>
--#define USE_BSD
--#include <endian.h>
--#include <regex.h>
--
--static void die(char *fmt, ...);
--
--#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
--static Elf32_Ehdr ehdr;
--static unsigned long reloc_count, reloc_idx;
--static unsigned long *relocs;
--
--struct section {
-- Elf32_Shdr shdr;
-- struct section *link;
-- Elf32_Sym *symtab;
-- Elf32_Rel *reltab;
-- char *strtab;
--};
--static struct section *secs;
--
--/*
-- * Following symbols have been audited. There values are constant and do
-- * not change if bzImage is loaded at a different physical address than
-- * the address for which it has been compiled. Don't warn user about
-- * absolute relocations present w.r.t these symbols.
-- */
--static const char abs_sym_regex[] =
-- "^(xen_irq_disable_direct_reloc$|"
-- "xen_save_fl_direct_reloc$|"
-- "VDSO|"
-- "__crc_)";
--static regex_t abs_sym_regex_c;
--static int is_abs_reloc(const char *sym_name)
--{
-- return !regexec(&abs_sym_regex_c, sym_name, 0, NULL, 0);
--}
--
--/*
-- * These symbols are known to be relative, even if the linker marks them
-- * as absolute (typically defined outside any section in the linker script.)
-- */
--static const char rel_sym_regex[] =
-- "^_end$";
--static regex_t rel_sym_regex_c;
--static int is_rel_reloc(const char *sym_name)
--{
-- return !regexec(&rel_sym_regex_c, sym_name, 0, NULL, 0);
--}
--
--static void regex_init(void)
--{
-- char errbuf[128];
-- int err;
--
-- err = regcomp(&abs_sym_regex_c, abs_sym_regex,
-- REG_EXTENDED|REG_NOSUB);
-- if (err) {
-- regerror(err, &abs_sym_regex_c, errbuf, sizeof errbuf);
-- die("%s", errbuf);
-- }
--
-- err = regcomp(&rel_sym_regex_c, rel_sym_regex,
-- REG_EXTENDED|REG_NOSUB);
-- if (err) {
-- regerror(err, &rel_sym_regex_c, errbuf, sizeof errbuf);
-- die("%s", errbuf);
-- }
--}
--
--static void die(char *fmt, ...)
--{
-- va_list ap;
-- va_start(ap, fmt);
-- vfprintf(stderr, fmt, ap);
-- va_end(ap);
-- exit(1);
--}
--
--static const char *sym_type(unsigned type)
--{
-- static const char *type_name[] = {
--#define SYM_TYPE(X) [X] = #X
-- SYM_TYPE(STT_NOTYPE),
-- SYM_TYPE(STT_OBJECT),
-- SYM_TYPE(STT_FUNC),
-- SYM_TYPE(STT_SECTION),
-- SYM_TYPE(STT_FILE),
-- SYM_TYPE(STT_COMMON),
-- SYM_TYPE(STT_TLS),
--#undef SYM_TYPE
-- };
-- const char *name = "unknown sym type name";
-- if (type < ARRAY_SIZE(type_name)) {
-- name = type_name[type];
-- }
-- return name;
--}
--
--static const char *sym_bind(unsigned bind)
--{
-- static const char *bind_name[] = {
--#define SYM_BIND(X) [X] = #X
-- SYM_BIND(STB_LOCAL),
-- SYM_BIND(STB_GLOBAL),
-- SYM_BIND(STB_WEAK),
--#undef SYM_BIND
-- };
-- const char *name = "unknown sym bind name";
-- if (bind < ARRAY_SIZE(bind_name)) {
-- name = bind_name[bind];
-- }
-- return name;
--}
--
--static const char *sym_visibility(unsigned visibility)
--{
-- static const char *visibility_name[] = {
--#define SYM_VISIBILITY(X) [X] = #X
-- SYM_VISIBILITY(STV_DEFAULT),
-- SYM_VISIBILITY(STV_INTERNAL),
-- SYM_VISIBILITY(STV_HIDDEN),
-- SYM_VISIBILITY(STV_PROTECTED),
--#undef SYM_VISIBILITY
-- };
-- const char *name = "unknown sym visibility name";
-- if (visibility < ARRAY_SIZE(visibility_name)) {
-- name = visibility_name[visibility];
-- }
-- return name;
--}
--
--static const char *rel_type(unsigned type)
--{
-- static const char *type_name[] = {
--#define REL_TYPE(X) [X] = #X
-- REL_TYPE(R_386_NONE),
-- REL_TYPE(R_386_32),
-- REL_TYPE(R_386_PC32),
-- REL_TYPE(R_386_GOT32),
-- REL_TYPE(R_386_PLT32),
-- REL_TYPE(R_386_COPY),
-- REL_TYPE(R_386_GLOB_DAT),
-- REL_TYPE(R_386_JMP_SLOT),
-- REL_TYPE(R_386_RELATIVE),
-- REL_TYPE(R_386_GOTOFF),
-- REL_TYPE(R_386_GOTPC),
--#undef REL_TYPE
-- };
-- const char *name = "unknown type rel type name";
-- if (type < ARRAY_SIZE(type_name) && type_name[type]) {
-- name = type_name[type];
-- }
-- return name;
--}
--
--static const char *sec_name(unsigned shndx)
--{
-- const char *sec_strtab;
-- const char *name;
-- sec_strtab = secs[ehdr.e_shstrndx].strtab;
-- name = "<noname>";
-- if (shndx < ehdr.e_shnum) {
-- name = sec_strtab + secs[shndx].shdr.sh_name;
-- }
-- else if (shndx == SHN_ABS) {
-- name = "ABSOLUTE";
-- }
-- else if (shndx == SHN_COMMON) {
-- name = "COMMON";
-- }
-- return name;
--}
--
--static const char *sym_name(const char *sym_strtab, Elf32_Sym *sym)
--{
-- const char *name;
-- name = "<noname>";
-- if (sym->st_name) {
-- name = sym_strtab + sym->st_name;
-- }
-- else {
-- name = sec_name(secs[sym->st_shndx].shdr.sh_name);
-- }
-- return name;
--}
--
--
--
--#if BYTE_ORDER == LITTLE_ENDIAN
--#define le16_to_cpu(val) (val)
--#define le32_to_cpu(val) (val)
--#endif
--#if BYTE_ORDER == BIG_ENDIAN
--#define le16_to_cpu(val) bswap_16(val)
--#define le32_to_cpu(val) bswap_32(val)
--#endif
--
--static uint16_t elf16_to_cpu(uint16_t val)
--{
-- return le16_to_cpu(val);
--}
--
--static uint32_t elf32_to_cpu(uint32_t val)
--{
-- return le32_to_cpu(val);
--}
--
--static void read_ehdr(FILE *fp)
--{
-- if (fread(&ehdr, sizeof(ehdr), 1, fp) != 1) {
-- die("Cannot read ELF header: %s\n",
-- strerror(errno));
-- }
-- if (memcmp(ehdr.e_ident, ELFMAG, SELFMAG) != 0) {
-- die("No ELF magic\n");
-- }
-- if (ehdr.e_ident[EI_CLASS] != ELFCLASS32) {
-- die("Not a 32 bit executable\n");
-- }
-- if (ehdr.e_ident[EI_DATA] != ELFDATA2LSB) {
-- die("Not a LSB ELF executable\n");
-- }
-- if (ehdr.e_ident[EI_VERSION] != EV_CURRENT) {
-- die("Unknown ELF version\n");
-- }
-- /* Convert the fields to native endian */
-- ehdr.e_type = elf16_to_cpu(ehdr.e_type);
-- ehdr.e_machine = elf16_to_cpu(ehdr.e_machine);
-- ehdr.e_version = elf32_to_cpu(ehdr.e_version);
-- ehdr.e_entry = elf32_to_cpu(ehdr.e_entry);
-- ehdr.e_phoff = elf32_to_cpu(ehdr.e_phoff);
-- ehdr.e_shoff = elf32_to_cpu(ehdr.e_shoff);
-- ehdr.e_flags = elf32_to_cpu(ehdr.e_flags);
-- ehdr.e_ehsize = elf16_to_cpu(ehdr.e_ehsize);
-- ehdr.e_phentsize = elf16_to_cpu(ehdr.e_phentsize);
-- ehdr.e_phnum = elf16_to_cpu(ehdr.e_phnum);
-- ehdr.e_shentsize = elf16_to_cpu(ehdr.e_shentsize);
-- ehdr.e_shnum = elf16_to_cpu(ehdr.e_shnum);
-- ehdr.e_shstrndx = elf16_to_cpu(ehdr.e_shstrndx);
--
-- if ((ehdr.e_type != ET_EXEC) && (ehdr.e_type != ET_DYN)) {
-- die("Unsupported ELF header type\n");
-- }
-- if (ehdr.e_machine != EM_386) {
-- die("Not for x86\n");
-- }
-- if (ehdr.e_version != EV_CURRENT) {
-- die("Unknown ELF version\n");
-- }
-- if (ehdr.e_ehsize != sizeof(Elf32_Ehdr)) {
-- die("Bad Elf header size\n");
-- }
-- if (ehdr.e_phentsize != sizeof(Elf32_Phdr)) {
-- die("Bad program header entry\n");
-- }
-- if (ehdr.e_shentsize != sizeof(Elf32_Shdr)) {
-- die("Bad section header entry\n");
-- }
-- if (ehdr.e_shstrndx >= ehdr.e_shnum) {
-- die("String table index out of bounds\n");
-- }
--}
--
--static void read_shdrs(FILE *fp)
--{
-- int i;
-- Elf32_Shdr shdr;
--
-- secs = calloc(ehdr.e_shnum, sizeof(struct section));
-- if (!secs) {
-- die("Unable to allocate %d section headers\n",
-- ehdr.e_shnum);
-- }
-- if (fseek(fp, ehdr.e_shoff, SEEK_SET) < 0) {
-- die("Seek to %d failed: %s\n",
-- ehdr.e_shoff, strerror(errno));
-- }
-- for (i = 0; i < ehdr.e_shnum; i++) {
-- struct section *sec = &secs[i];
-- if (fread(&shdr, sizeof shdr, 1, fp) != 1)
-- die("Cannot read ELF section headers %d/%d: %s\n",
-- i, ehdr.e_shnum, strerror(errno));
-- sec->shdr.sh_name = elf32_to_cpu(shdr.sh_name);
-- sec->shdr.sh_type = elf32_to_cpu(shdr.sh_type);
-- sec->shdr.sh_flags = elf32_to_cpu(shdr.sh_flags);
-- sec->shdr.sh_addr = elf32_to_cpu(shdr.sh_addr);
-- sec->shdr.sh_offset = elf32_to_cpu(shdr.sh_offset);
-- sec->shdr.sh_size = elf32_to_cpu(shdr.sh_size);
-- sec->shdr.sh_link = elf32_to_cpu(shdr.sh_link);
-- sec->shdr.sh_info = elf32_to_cpu(shdr.sh_info);
-- sec->shdr.sh_addralign = elf32_to_cpu(shdr.sh_addralign);
-- sec->shdr.sh_entsize = elf32_to_cpu(shdr.sh_entsize);
-- if (sec->shdr.sh_link < ehdr.e_shnum)
-- sec->link = &secs[sec->shdr.sh_link];
-- }
--
--}
--
--static void read_strtabs(FILE *fp)
--{
-- int i;
-- for (i = 0; i < ehdr.e_shnum; i++) {
-- struct section *sec = &secs[i];
-- if (sec->shdr.sh_type != SHT_STRTAB) {
-- continue;
-- }
-- sec->strtab = malloc(sec->shdr.sh_size);
-- if (!sec->strtab) {
-- die("malloc of %d bytes for strtab failed\n",
-- sec->shdr.sh_size);
-- }
-- if (fseek(fp, sec->shdr.sh_offset, SEEK_SET) < 0) {
-- die("Seek to %d failed: %s\n",
-- sec->shdr.sh_offset, strerror(errno));
-- }
-- if (fread(sec->strtab, 1, sec->shdr.sh_size, fp)
-- != sec->shdr.sh_size) {
-- die("Cannot read symbol table: %s\n",
-- strerror(errno));
-- }
-- }
--}
--
--static void read_symtabs(FILE *fp)
--{
-- int i,j;
-- for (i = 0; i < ehdr.e_shnum; i++) {
-- struct section *sec = &secs[i];
-- if (sec->shdr.sh_type != SHT_SYMTAB) {
-- continue;
-- }
-- sec->symtab = malloc(sec->shdr.sh_size);
-- if (!sec->symtab) {
-- die("malloc of %d bytes for symtab failed\n",
-- sec->shdr.sh_size);
-- }
-- if (fseek(fp, sec->shdr.sh_offset, SEEK_SET) < 0) {
-- die("Seek to %d failed: %s\n",
-- sec->shdr.sh_offset, strerror(errno));
-- }
-- if (fread(sec->symtab, 1, sec->shdr.sh_size, fp)
-- != sec->shdr.sh_size) {
-- die("Cannot read symbol table: %s\n",
-- strerror(errno));
-- }
-- for (j = 0; j < sec->shdr.sh_size/sizeof(Elf32_Sym); j++) {
-- Elf32_Sym *sym = &sec->symtab[j];
-- sym->st_name = elf32_to_cpu(sym->st_name);
-- sym->st_value = elf32_to_cpu(sym->st_value);
-- sym->st_size = elf32_to_cpu(sym->st_size);
-- sym->st_shndx = elf16_to_cpu(sym->st_shndx);
-- }
-- }
--}
--
--
--static void read_relocs(FILE *fp)
--{
-- int i,j;
-- for (i = 0; i < ehdr.e_shnum; i++) {
-- struct section *sec = &secs[i];
-- if (sec->shdr.sh_type != SHT_REL) {
-- continue;
-- }
-- sec->reltab = malloc(sec->shdr.sh_size);
-- if (!sec->reltab) {
-- die("malloc of %d bytes for relocs failed\n",
-- sec->shdr.sh_size);
-- }
-- if (fseek(fp, sec->shdr.sh_offset, SEEK_SET) < 0) {
-- die("Seek to %d failed: %s\n",
-- sec->shdr.sh_offset, strerror(errno));
-- }
-- if (fread(sec->reltab, 1, sec->shdr.sh_size, fp)
-- != sec->shdr.sh_size) {
-- die("Cannot read symbol table: %s\n",
-- strerror(errno));
-- }
-- for (j = 0; j < sec->shdr.sh_size/sizeof(Elf32_Rel); j++) {
-- Elf32_Rel *rel = &sec->reltab[j];
-- rel->r_offset = elf32_to_cpu(rel->r_offset);
-- rel->r_info = elf32_to_cpu(rel->r_info);
-- }
-- }
--}
--
--
--static void print_absolute_symbols(void)
--{
-- int i;
-- printf("Absolute symbols\n");
-- printf(" Num: Value Size Type Bind Visibility Name\n");
-- for (i = 0; i < ehdr.e_shnum; i++) {
-- struct section *sec = &secs[i];
-- char *sym_strtab;
-- int j;
--
-- if (sec->shdr.sh_type != SHT_SYMTAB) {
-- continue;
-- }
-- sym_strtab = sec->link->strtab;
-- for (j = 0; j < sec->shdr.sh_size/sizeof(Elf32_Sym); j++) {
-- Elf32_Sym *sym;
-- const char *name;
-- sym = &sec->symtab[j];
-- name = sym_name(sym_strtab, sym);
-- if (sym->st_shndx != SHN_ABS) {
-- continue;
-- }
-- printf("%5d %08x %5d %10s %10s %12s %s\n",
-- j, sym->st_value, sym->st_size,
-- sym_type(ELF32_ST_TYPE(sym->st_info)),
-- sym_bind(ELF32_ST_BIND(sym->st_info)),
-- sym_visibility(ELF32_ST_VISIBILITY(sym->st_other)),
-- name);
-- }
-- }
-- printf("\n");
--}
--
--static void print_absolute_relocs(void)
--{
-- int i, printed = 0;
--
-- for (i = 0; i < ehdr.e_shnum; i++) {
-- struct section *sec = &secs[i];
-- struct section *sec_applies, *sec_symtab;
-- char *sym_strtab;
-- Elf32_Sym *sh_symtab;
-- int j;
-- if (sec->shdr.sh_type != SHT_REL) {
-- continue;
-- }
-- sec_symtab = sec->link;
-- sec_applies = &secs[sec->shdr.sh_info];
-- if (!(sec_applies->shdr.sh_flags & SHF_ALLOC)) {
-- continue;
-- }
-- sh_symtab = sec_symtab->symtab;
-- sym_strtab = sec_symtab->link->strtab;
-- for (j = 0; j < sec->shdr.sh_size/sizeof(Elf32_Rel); j++) {
-- Elf32_Rel *rel;
-- Elf32_Sym *sym;
-- const char *name;
-- rel = &sec->reltab[j];
-- sym = &sh_symtab[ELF32_R_SYM(rel->r_info)];
-- name = sym_name(sym_strtab, sym);
-- if (sym->st_shndx != SHN_ABS) {
-- continue;
-- }
--
-- /* Absolute symbols are not relocated if bzImage is
-- * loaded at a non-compiled address. Display a warning
-- * to user at compile time about the absolute
-- * relocations present.
-- *
-- * User need to audit the code to make sure
-- * some symbols which should have been section
-- * relative have not become absolute because of some
-- * linker optimization or wrong programming usage.
-- *
-- * Before warning check if this absolute symbol
-- * relocation is harmless.
-- */
-- if (is_abs_reloc(name) || is_rel_reloc(name))
-- continue;
--
-- if (!printed) {
-- printf("WARNING: Absolute relocations"
-- " present\n");
-- printf("Offset Info Type Sym.Value "
-- "Sym.Name\n");
-- printed = 1;
-- }
--
-- printf("%08x %08x %10s %08x %s\n",
-- rel->r_offset,
-- rel->r_info,
-- rel_type(ELF32_R_TYPE(rel->r_info)),
-- sym->st_value,
-- name);
-- }
-- }
--
-- if (printed)
-- printf("\n");
--}
--
--static void walk_relocs(void (*visit)(Elf32_Rel *rel, Elf32_Sym *sym))
--{
-- int i;
-- /* Walk through the relocations */
-- for (i = 0; i < ehdr.e_shnum; i++) {
-- char *sym_strtab;
-- Elf32_Sym *sh_symtab;
-- struct section *sec_applies, *sec_symtab;
-- int j;
-- struct section *sec = &secs[i];
--
-- if (sec->shdr.sh_type != SHT_REL) {
-- continue;
-- }
-- sec_symtab = sec->link;
-- sec_applies = &secs[sec->shdr.sh_info];
-- if (!(sec_applies->shdr.sh_flags & SHF_ALLOC)) {
-- continue;
-- }
-- sh_symtab = sec_symtab->symtab;
-- sym_strtab = sec_symtab->link->strtab;
-- for (j = 0; j < sec->shdr.sh_size/sizeof(Elf32_Rel); j++) {
-- Elf32_Rel *rel;
-- Elf32_Sym *sym;
-- unsigned r_type;
-- rel = &sec->reltab[j];
-- sym = &sh_symtab[ELF32_R_SYM(rel->r_info)];
-- r_type = ELF32_R_TYPE(rel->r_info);
-- /* Don't visit relocations to absolute symbols */
-- if (sym->st_shndx == SHN_ABS &&
-- !is_rel_reloc(sym_name(sym_strtab, sym))) {
-- continue;
-- }
-- switch (r_type) {
-- case R_386_NONE:
-- case R_386_PC32:
-- /*
-- * NONE can be ignored and and PC relative
-- * relocations don't need to be adjusted.
-- */
-- break;
-- case R_386_32:
-- /* Visit relocations that need to be adjusted */
-- visit(rel, sym);
-- break;
-- default:
-- die("Unsupported relocation type: %s (%d)\n",
-- rel_type(r_type), r_type);
-- break;
-- }
-- }
-- }
--}
--
--static void count_reloc(Elf32_Rel *rel, Elf32_Sym *sym)
--{
-- reloc_count += 1;
--}
--
--static void collect_reloc(Elf32_Rel *rel, Elf32_Sym *sym)
--{
-- /* Remember the address that needs to be adjusted. */
-- relocs[reloc_idx++] = rel->r_offset;
--}
--
--static int cmp_relocs(const void *va, const void *vb)
--{
-- const unsigned long *a, *b;
-- a = va; b = vb;
-- return (*a == *b)? 0 : (*a > *b)? 1 : -1;
--}
--
--static void emit_relocs(int as_text)
--{
-- int i;
-- /* Count how many relocations I have and allocate space for them. */
-- reloc_count = 0;
-- walk_relocs(count_reloc);
-- relocs = malloc(reloc_count * sizeof(relocs[0]));
-- if (!relocs) {
-- die("malloc of %d entries for relocs failed\n",
-- reloc_count);
-- }
-- /* Collect up the relocations */
-- reloc_idx = 0;
-- walk_relocs(collect_reloc);
--
-- /* Order the relocations for more efficient processing */
-- qsort(relocs, reloc_count, sizeof(relocs[0]), cmp_relocs);
--
-- /* Print the relocations */
-- if (as_text) {
-- /* Print the relocations in a form suitable that
-- * gas will like.
-- */
-- printf(".section \".data.reloc\",\"a\"\n");
-- printf(".balign 4\n");
-- for (i = 0; i < reloc_count; i++) {
-- printf("\t .long 0x%08lx\n", relocs[i]);
-- }
-- printf("\n");
-- }
-- else {
-- unsigned char buf[4];
-- /* Print a stop */
-- fwrite("\0\0\0\0", 4, 1, stdout);
-- /* Now print each relocation */
-- for (i = 0; i < reloc_count; i++) {
-- buf[0] = (relocs[i] >> 0) & 0xff;
-- buf[1] = (relocs[i] >> 8) & 0xff;
-- buf[2] = (relocs[i] >> 16) & 0xff;
-- buf[3] = (relocs[i] >> 24) & 0xff;
-- fwrite(buf, 4, 1, stdout);
-- }
-- }
--}
--
--static void usage(void)
--{
-- die("relocs [--abs-syms |--abs-relocs | --text] vmlinux\n");
--}
--
--int main(int argc, char **argv)
--{
-- int show_absolute_syms, show_absolute_relocs;
-- int as_text;
-- const char *fname;
-- FILE *fp;
-- int i;
--
-- regex_init();
--
-- show_absolute_syms = 0;
-- show_absolute_relocs = 0;
-- as_text = 0;
-- fname = NULL;
-- for (i = 1; i < argc; i++) {
-- char *arg = argv[i];
-- if (*arg == '-') {
-- if (strcmp(argv[1], "--abs-syms") == 0) {
-- show_absolute_syms = 1;
-- continue;
-- }
--
-- if (strcmp(argv[1], "--abs-relocs") == 0) {
-- show_absolute_relocs = 1;
-- continue;
-- }
-- else if (strcmp(argv[1], "--text") == 0) {
-- as_text = 1;
-- continue;
-- }
-- }
-- else if (!fname) {
-- fname = arg;
-- continue;
-- }
-- usage();
-- }
-- if (!fname) {
-- usage();
-- }
-- fp = fopen(fname, "r");
-- if (!fp) {
-- die("Cannot open %s: %s\n",
-- fname, strerror(errno));
-- }
-- read_ehdr(fp);
-- read_shdrs(fp);
-- read_strtabs(fp);
-- read_symtabs(fp);
-- read_relocs(fp);
-- if (show_absolute_syms) {
-- print_absolute_symbols();
-- return 0;
-- }
-- if (show_absolute_relocs) {
-- print_absolute_relocs();
-- return 0;
-- }
-- emit_relocs(as_text);
-- return 0;
--}
-diff --git a/arch/x86/tools/.gitignore b/arch/x86/tools/.gitignore
-new file mode 100644
-index 0000000..be0ed06
---- /dev/null
-+++ b/arch/x86/tools/.gitignore
-@@ -0,0 +1 @@
-+relocs
-diff --git a/arch/x86/tools/Makefile b/arch/x86/tools/Makefile
-index f820826..162a34a 100644
---- a/arch/x86/tools/Makefile
-+++ b/arch/x86/tools/Makefile
-@@ -29,3 +29,6 @@ HOSTCFLAGS_test_get_len.o := -Wall -I$(objtree)/arch/x86/lib/ -I$(srctree)/arch/
- # Dependencies are also needed.
- $(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
-
-+HOST_EXTRACFLAGS += -I$(srctree)/tools/include
-+hostprogs-y += relocs
-+relocs: $(obj)/relocs
-diff --git a/arch/x86/tools/relocs.c b/arch/x86/tools/relocs.c
-new file mode 100644
-index 0000000..2071bad
---- /dev/null
-+++ b/arch/x86/tools/relocs.c
-@@ -0,0 +1,799 @@
-+#include <stdio.h>
-+#include <stdarg.h>
-+#include <stdlib.h>
-+#include <stdint.h>
-+#include <string.h>
-+#include <errno.h>
-+#include <unistd.h>
-+#include <elf.h>
-+#include <byteswap.h>
-+#define USE_BSD
-+#include <endian.h>
-+#include <regex.h>
-+
-+static void die(char *fmt, ...);
-+
-+#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
-+static Elf32_Ehdr ehdr;
-+static unsigned long reloc_count, reloc_idx;
-+static unsigned long *relocs;
-+static unsigned long reloc16_count, reloc16_idx;
-+static unsigned long *relocs16;
-+
-+struct section {
-+ Elf32_Shdr shdr;
-+ struct section *link;
-+ Elf32_Sym *symtab;
-+ Elf32_Rel *reltab;
-+ char *strtab;
-+};
-+static struct section *secs;
-+
-+enum symtype {
-+ S_ABS,
-+ S_REL,
-+ S_SEG,
-+ S_LIN,
-+ S_NSYMTYPES
-+};
-+
-+static const char * const sym_regex_kernel[S_NSYMTYPES] = {
-+/*
-+ * Following symbols have been audited. There values are constant and do
-+ * not change if bzImage is loaded at a different physical address than
-+ * the address for which it has been compiled. Don't warn user about
-+ * absolute relocations present w.r.t these symbols.
-+ */
-+ [S_ABS] =
-+ "^(xen_irq_disable_direct_reloc$|"
-+ "xen_save_fl_direct_reloc$|"
-+ "VDSO|"
-+ "__crc_)",
-+
-+/*
-+ * These symbols are known to be relative, even if the linker marks them
-+ * as absolute (typically defined outside any section in the linker script.)
-+ */
-+ [S_REL] =
-+ "^_end$",
-+};
-+
-+
-+static const char * const sym_regex_realmode[S_NSYMTYPES] = {
-+/*
-+ * These are 16-bit segment symbols when compiling 16-bit code.
-+ */
-+ [S_SEG] =
-+ "^real_mode_seg$",
-+
-+/*
-+ * These are offsets belonging to segments, as opposed to linear addresses,
-+ * when compiling 16-bit code.
-+ */
-+ [S_LIN] =
-+ "^pa_",
-+};
-+
-+static const char * const *sym_regex;
-+
-+static regex_t sym_regex_c[S_NSYMTYPES];
-+static int is_reloc(enum symtype type, const char *sym_name)
-+{
-+ return sym_regex[type] &&
-+ !regexec(&sym_regex_c[type], sym_name, 0, NULL, 0);
-+}
-+
-+static void regex_init(int use_real_mode)
-+{
-+ char errbuf[128];
-+ int err;
-+ int i;
-+
-+ if (use_real_mode)
-+ sym_regex = sym_regex_realmode;
-+ else
-+ sym_regex = sym_regex_kernel;
-+
-+ for (i = 0; i < S_NSYMTYPES; i++) {
-+ if (!sym_regex[i])
-+ continue;
-+
-+ err = regcomp(&sym_regex_c[i], sym_regex[i],
-+ REG_EXTENDED|REG_NOSUB);
-+
-+ if (err) {
-+ regerror(err, &sym_regex_c[i], errbuf, sizeof errbuf);
-+ die("%s", errbuf);
-+ }
-+ }
-+}
-+
-+static void die(char *fmt, ...)
-+{
-+ va_list ap;
-+ va_start(ap, fmt);
-+ vfprintf(stderr, fmt, ap);
-+ va_end(ap);
-+ exit(1);
-+}
-+
-+static const char *sym_type(unsigned type)
-+{
-+ static const char *type_name[] = {
-+#define SYM_TYPE(X) [X] = #X
-+ SYM_TYPE(STT_NOTYPE),
-+ SYM_TYPE(STT_OBJECT),
-+ SYM_TYPE(STT_FUNC),
-+ SYM_TYPE(STT_SECTION),
-+ SYM_TYPE(STT_FILE),
-+ SYM_TYPE(STT_COMMON),
-+ SYM_TYPE(STT_TLS),
-+#undef SYM_TYPE
-+ };
-+ const char *name = "unknown sym type name";
-+ if (type < ARRAY_SIZE(type_name)) {
-+ name = type_name[type];
-+ }
-+ return name;
-+}
-+
-+static const char *sym_bind(unsigned bind)
-+{
-+ static const char *bind_name[] = {
-+#define SYM_BIND(X) [X] = #X
-+ SYM_BIND(STB_LOCAL),
-+ SYM_BIND(STB_GLOBAL),
-+ SYM_BIND(STB_WEAK),
-+#undef SYM_BIND
-+ };
-+ const char *name = "unknown sym bind name";
-+ if (bind < ARRAY_SIZE(bind_name)) {
-+ name = bind_name[bind];
-+ }
-+ return name;
-+}
-+
-+static const char *sym_visibility(unsigned visibility)
-+{
-+ static const char *visibility_name[] = {
-+#define SYM_VISIBILITY(X) [X] = #X
-+ SYM_VISIBILITY(STV_DEFAULT),
-+ SYM_VISIBILITY(STV_INTERNAL),
-+ SYM_VISIBILITY(STV_HIDDEN),
-+ SYM_VISIBILITY(STV_PROTECTED),
-+#undef SYM_VISIBILITY
-+ };
-+ const char *name = "unknown sym visibility name";
-+ if (visibility < ARRAY_SIZE(visibility_name)) {
-+ name = visibility_name[visibility];
-+ }
-+ return name;
-+}
-+
-+static const char *rel_type(unsigned type)
-+{
-+ static const char *type_name[] = {
-+#define REL_TYPE(X) [X] = #X
-+ REL_TYPE(R_386_NONE),
-+ REL_TYPE(R_386_32),
-+ REL_TYPE(R_386_PC32),
-+ REL_TYPE(R_386_GOT32),
-+ REL_TYPE(R_386_PLT32),
-+ REL_TYPE(R_386_COPY),
-+ REL_TYPE(R_386_GLOB_DAT),
-+ REL_TYPE(R_386_JMP_SLOT),
-+ REL_TYPE(R_386_RELATIVE),
-+ REL_TYPE(R_386_GOTOFF),
-+ REL_TYPE(R_386_GOTPC),
-+ REL_TYPE(R_386_8),
-+ REL_TYPE(R_386_PC8),
-+ REL_TYPE(R_386_16),
-+ REL_TYPE(R_386_PC16),
-+#undef REL_TYPE
-+ };
-+ const char *name = "unknown type rel type name";
-+ if (type < ARRAY_SIZE(type_name) && type_name[type]) {
-+ name = type_name[type];
-+ }
-+ return name;
-+}
-+
-+static const char *sec_name(unsigned shndx)
-+{
-+ const char *sec_strtab;
-+ const char *name;
-+ sec_strtab = secs[ehdr.e_shstrndx].strtab;
-+ name = "<noname>";
-+ if (shndx < ehdr.e_shnum) {
-+ name = sec_strtab + secs[shndx].shdr.sh_name;
-+ }
-+ else if (shndx == SHN_ABS) {
-+ name = "ABSOLUTE";
-+ }
-+ else if (shndx == SHN_COMMON) {
-+ name = "COMMON";
-+ }
-+ return name;
-+}
-+
-+static const char *sym_name(const char *sym_strtab, Elf32_Sym *sym)
-+{
-+ const char *name;
-+ name = "<noname>";
-+ if (sym->st_name) {
-+ name = sym_strtab + sym->st_name;
-+ }
-+ else {
-+ name = sec_name(sym->st_shndx);
-+ }
-+ return name;
-+}
-+
-+
-+
-+#if BYTE_ORDER == LITTLE_ENDIAN
-+#define le16_to_cpu(val) (val)
-+#define le32_to_cpu(val) (val)
-+#endif
-+#if BYTE_ORDER == BIG_ENDIAN
-+#define le16_to_cpu(val) bswap_16(val)
-+#define le32_to_cpu(val) bswap_32(val)
-+#endif
-+
-+static uint16_t elf16_to_cpu(uint16_t val)
-+{
-+ return le16_to_cpu(val);
-+}
-+
-+static uint32_t elf32_to_cpu(uint32_t val)
-+{
-+ return le32_to_cpu(val);
-+}
-+
-+static void read_ehdr(FILE *fp)
-+{
-+ if (fread(&ehdr, sizeof(ehdr), 1, fp) != 1) {
-+ die("Cannot read ELF header: %s\n",
-+ strerror(errno));
-+ }
-+ if (memcmp(ehdr.e_ident, ELFMAG, SELFMAG) != 0) {
-+ die("No ELF magic\n");
-+ }
-+ if (ehdr.e_ident[EI_CLASS] != ELFCLASS32) {
-+ die("Not a 32 bit executable\n");
-+ }
-+ if (ehdr.e_ident[EI_DATA] != ELFDATA2LSB) {
-+ die("Not a LSB ELF executable\n");
-+ }
-+ if (ehdr.e_ident[EI_VERSION] != EV_CURRENT) {
-+ die("Unknown ELF version\n");
-+ }
-+ /* Convert the fields to native endian */
-+ ehdr.e_type = elf16_to_cpu(ehdr.e_type);
-+ ehdr.e_machine = elf16_to_cpu(ehdr.e_machine);
-+ ehdr.e_version = elf32_to_cpu(ehdr.e_version);
-+ ehdr.e_entry = elf32_to_cpu(ehdr.e_entry);
-+ ehdr.e_phoff = elf32_to_cpu(ehdr.e_phoff);
-+ ehdr.e_shoff = elf32_to_cpu(ehdr.e_shoff);
-+ ehdr.e_flags = elf32_to_cpu(ehdr.e_flags);
-+ ehdr.e_ehsize = elf16_to_cpu(ehdr.e_ehsize);
-+ ehdr.e_phentsize = elf16_to_cpu(ehdr.e_phentsize);
-+ ehdr.e_phnum = elf16_to_cpu(ehdr.e_phnum);
-+ ehdr.e_shentsize = elf16_to_cpu(ehdr.e_shentsize);
-+ ehdr.e_shnum = elf16_to_cpu(ehdr.e_shnum);
-+ ehdr.e_shstrndx = elf16_to_cpu(ehdr.e_shstrndx);
-+
-+ if ((ehdr.e_type != ET_EXEC) && (ehdr.e_type != ET_DYN)) {
-+ die("Unsupported ELF header type\n");
-+ }
-+ if (ehdr.e_machine != EM_386) {
-+ die("Not for x86\n");
-+ }
-+ if (ehdr.e_version != EV_CURRENT) {
-+ die("Unknown ELF version\n");
-+ }
-+ if (ehdr.e_ehsize != sizeof(Elf32_Ehdr)) {
-+ die("Bad Elf header size\n");
-+ }
-+ if (ehdr.e_phentsize != sizeof(Elf32_Phdr)) {
-+ die("Bad program header entry\n");
-+ }
-+ if (ehdr.e_shentsize != sizeof(Elf32_Shdr)) {
-+ die("Bad section header entry\n");
-+ }
-+ if (ehdr.e_shstrndx >= ehdr.e_shnum) {
-+ die("String table index out of bounds\n");
-+ }
-+}
-+
-+static void read_shdrs(FILE *fp)
-+{
-+ int i;
-+ Elf32_Shdr shdr;
-+
-+ secs = calloc(ehdr.e_shnum, sizeof(struct section));
-+ if (!secs) {
-+ die("Unable to allocate %d section headers\n",
-+ ehdr.e_shnum);
-+ }
-+ if (fseek(fp, ehdr.e_shoff, SEEK_SET) < 0) {
-+ die("Seek to %d failed: %s\n",
-+ ehdr.e_shoff, strerror(errno));
-+ }
-+ for (i = 0; i < ehdr.e_shnum; i++) {
-+ struct section *sec = &secs[i];
-+ if (fread(&shdr, sizeof shdr, 1, fp) != 1)
-+ die("Cannot read ELF section headers %d/%d: %s\n",
-+ i, ehdr.e_shnum, strerror(errno));
-+ sec->shdr.sh_name = elf32_to_cpu(shdr.sh_name);
-+ sec->shdr.sh_type = elf32_to_cpu(shdr.sh_type);
-+ sec->shdr.sh_flags = elf32_to_cpu(shdr.sh_flags);
-+ sec->shdr.sh_addr = elf32_to_cpu(shdr.sh_addr);
-+ sec->shdr.sh_offset = elf32_to_cpu(shdr.sh_offset);
-+ sec->shdr.sh_size = elf32_to_cpu(shdr.sh_size);
-+ sec->shdr.sh_link = elf32_to_cpu(shdr.sh_link);
-+ sec->shdr.sh_info = elf32_to_cpu(shdr.sh_info);
-+ sec->shdr.sh_addralign = elf32_to_cpu(shdr.sh_addralign);
-+ sec->shdr.sh_entsize = elf32_to_cpu(shdr.sh_entsize);
-+ if (sec->shdr.sh_link < ehdr.e_shnum)
-+ sec->link = &secs[sec->shdr.sh_link];
-+ }
-+
-+}
-+
-+static void read_strtabs(FILE *fp)
-+{
-+ int i;
-+ for (i = 0; i < ehdr.e_shnum; i++) {
-+ struct section *sec = &secs[i];
-+ if (sec->shdr.sh_type != SHT_STRTAB) {
-+ continue;
-+ }
-+ sec->strtab = malloc(sec->shdr.sh_size);
-+ if (!sec->strtab) {
-+ die("malloc of %d bytes for strtab failed\n",
-+ sec->shdr.sh_size);
-+ }
-+ if (fseek(fp, sec->shdr.sh_offset, SEEK_SET) < 0) {
-+ die("Seek to %d failed: %s\n",
-+ sec->shdr.sh_offset, strerror(errno));
-+ }
-+ if (fread(sec->strtab, 1, sec->shdr.sh_size, fp)
-+ != sec->shdr.sh_size) {
-+ die("Cannot read symbol table: %s\n",
-+ strerror(errno));
-+ }
-+ }
-+}
-+
-+static void read_symtabs(FILE *fp)
-+{
-+ int i,j;
-+ for (i = 0; i < ehdr.e_shnum; i++) {
-+ struct section *sec = &secs[i];
-+ if (sec->shdr.sh_type != SHT_SYMTAB) {
-+ continue;
-+ }
-+ sec->symtab = malloc(sec->shdr.sh_size);
-+ if (!sec->symtab) {
-+ die("malloc of %d bytes for symtab failed\n",
-+ sec->shdr.sh_size);
-+ }
-+ if (fseek(fp, sec->shdr.sh_offset, SEEK_SET) < 0) {
-+ die("Seek to %d failed: %s\n",
-+ sec->shdr.sh_offset, strerror(errno));
-+ }
-+ if (fread(sec->symtab, 1, sec->shdr.sh_size, fp)
-+ != sec->shdr.sh_size) {
-+ die("Cannot read symbol table: %s\n",
-+ strerror(errno));
-+ }
-+ for (j = 0; j < sec->shdr.sh_size/sizeof(Elf32_Sym); j++) {
-+ Elf32_Sym *sym = &sec->symtab[j];
-+ sym->st_name = elf32_to_cpu(sym->st_name);
-+ sym->st_value = elf32_to_cpu(sym->st_value);
-+ sym->st_size = elf32_to_cpu(sym->st_size);
-+ sym->st_shndx = elf16_to_cpu(sym->st_shndx);
-+ }
-+ }
-+}
-+
-+
-+static void read_relocs(FILE *fp)
-+{
-+ int i,j;
-+ for (i = 0; i < ehdr.e_shnum; i++) {
-+ struct section *sec = &secs[i];
-+ if (sec->shdr.sh_type != SHT_REL) {
-+ continue;
-+ }
-+ sec->reltab = malloc(sec->shdr.sh_size);
-+ if (!sec->reltab) {
-+ die("malloc of %d bytes for relocs failed\n",
-+ sec->shdr.sh_size);
-+ }
-+ if (fseek(fp, sec->shdr.sh_offset, SEEK_SET) < 0) {
-+ die("Seek to %d failed: %s\n",
-+ sec->shdr.sh_offset, strerror(errno));
-+ }
-+ if (fread(sec->reltab, 1, sec->shdr.sh_size, fp)
-+ != sec->shdr.sh_size) {
-+ die("Cannot read symbol table: %s\n",
-+ strerror(errno));
-+ }
-+ for (j = 0; j < sec->shdr.sh_size/sizeof(Elf32_Rel); j++) {
-+ Elf32_Rel *rel = &sec->reltab[j];
-+ rel->r_offset = elf32_to_cpu(rel->r_offset);
-+ rel->r_info = elf32_to_cpu(rel->r_info);
-+ }
-+ }
-+}
-+
-+
-+static void print_absolute_symbols(void)
-+{
-+ int i;
-+ printf("Absolute symbols\n");
-+ printf(" Num: Value Size Type Bind Visibility Name\n");
-+ for (i = 0; i < ehdr.e_shnum; i++) {
-+ struct section *sec = &secs[i];
-+ char *sym_strtab;
-+ int j;
-+
-+ if (sec->shdr.sh_type != SHT_SYMTAB) {
-+ continue;
-+ }
-+ sym_strtab = sec->link->strtab;
-+ for (j = 0; j < sec->shdr.sh_size/sizeof(Elf32_Sym); j++) {
-+ Elf32_Sym *sym;
-+ const char *name;
-+ sym = &sec->symtab[j];
-+ name = sym_name(sym_strtab, sym);
-+ if (sym->st_shndx != SHN_ABS) {
-+ continue;
-+ }
-+ printf("%5d %08x %5d %10s %10s %12s %s\n",
-+ j, sym->st_value, sym->st_size,
-+ sym_type(ELF32_ST_TYPE(sym->st_info)),
-+ sym_bind(ELF32_ST_BIND(sym->st_info)),
-+ sym_visibility(ELF32_ST_VISIBILITY(sym->st_other)),
-+ name);
-+ }
-+ }
-+ printf("\n");
-+}
-+
-+static void print_absolute_relocs(void)
-+{
-+ int i, printed = 0;
-+
-+ for (i = 0; i < ehdr.e_shnum; i++) {
-+ struct section *sec = &secs[i];
-+ struct section *sec_applies, *sec_symtab;
-+ char *sym_strtab;
-+ Elf32_Sym *sh_symtab;
-+ int j;
-+ if (sec->shdr.sh_type != SHT_REL) {
-+ continue;
-+ }
-+ sec_symtab = sec->link;
-+ sec_applies = &secs[sec->shdr.sh_info];
-+ if (!(sec_applies->shdr.sh_flags & SHF_ALLOC)) {
-+ continue;
-+ }
-+ sh_symtab = sec_symtab->symtab;
-+ sym_strtab = sec_symtab->link->strtab;
-+ for (j = 0; j < sec->shdr.sh_size/sizeof(Elf32_Rel); j++) {
-+ Elf32_Rel *rel;
-+ Elf32_Sym *sym;
-+ const char *name;
-+ rel = &sec->reltab[j];
-+ sym = &sh_symtab[ELF32_R_SYM(rel->r_info)];
-+ name = sym_name(sym_strtab, sym);
-+ if (sym->st_shndx != SHN_ABS) {
-+ continue;
-+ }
-+
-+ /* Absolute symbols are not relocated if bzImage is
-+ * loaded at a non-compiled address. Display a warning
-+ * to user at compile time about the absolute
-+ * relocations present.
-+ *
-+ * User need to audit the code to make sure
-+ * some symbols which should have been section
-+ * relative have not become absolute because of some
-+ * linker optimization or wrong programming usage.
-+ *
-+ * Before warning check if this absolute symbol
-+ * relocation is harmless.
-+ */
-+ if (is_reloc(S_ABS, name) || is_reloc(S_REL, name))
-+ continue;
-+
-+ if (!printed) {
-+ printf("WARNING: Absolute relocations"
-+ " present\n");
-+ printf("Offset Info Type Sym.Value "
-+ "Sym.Name\n");
-+ printed = 1;
-+ }
-+
-+ printf("%08x %08x %10s %08x %s\n",
-+ rel->r_offset,
-+ rel->r_info,
-+ rel_type(ELF32_R_TYPE(rel->r_info)),
-+ sym->st_value,
-+ name);
-+ }
-+ }
-+
-+ if (printed)
-+ printf("\n");
-+}
-+
-+static void walk_relocs(void (*visit)(Elf32_Rel *rel, Elf32_Sym *sym),
-+ int use_real_mode)
-+{
-+ int i;
-+ /* Walk through the relocations */
-+ for (i = 0; i < ehdr.e_shnum; i++) {
-+ char *sym_strtab;
-+ Elf32_Sym *sh_symtab;
-+ struct section *sec_applies, *sec_symtab;
-+ int j;
-+ struct section *sec = &secs[i];
-+
-+ if (sec->shdr.sh_type != SHT_REL) {
-+ continue;
-+ }
-+ sec_symtab = sec->link;
-+ sec_applies = &secs[sec->shdr.sh_info];
-+ if (!(sec_applies->shdr.sh_flags & SHF_ALLOC)) {
-+ continue;
-+ }
-+ sh_symtab = sec_symtab->symtab;
-+ sym_strtab = sec_symtab->link->strtab;
-+ for (j = 0; j < sec->shdr.sh_size/sizeof(Elf32_Rel); j++) {
-+ Elf32_Rel *rel;
-+ Elf32_Sym *sym;
-+ unsigned r_type;
-+ const char *symname;
-+ rel = &sec->reltab[j];
-+ sym = &sh_symtab[ELF32_R_SYM(rel->r_info)];
-+ r_type = ELF32_R_TYPE(rel->r_info);
-+
-+ switch (r_type) {
-+ case R_386_NONE:
-+ case R_386_PC32:
-+ case R_386_PC16:
-+ case R_386_PC8:
-+ /*
-+ * NONE can be ignored and and PC relative
-+ * relocations don't need to be adjusted.
-+ */
-+ break;
-+
-+ case R_386_16:
-+ symname = sym_name(sym_strtab, sym);
-+ if (!use_real_mode)
-+ goto bad;
-+ if (sym->st_shndx == SHN_ABS) {
-+ if (is_reloc(S_ABS, symname))
-+ break;
-+ else if (!is_reloc(S_SEG, symname))
-+ goto bad;
-+ } else {
-+ if (is_reloc(S_LIN, symname))
-+ goto bad;
-+ else
-+ break;
-+ }
-+ visit(rel, sym);
-+ break;
-+
-+ case R_386_32:
-+ symname = sym_name(sym_strtab, sym);
-+ if (sym->st_shndx == SHN_ABS) {
-+ if (is_reloc(S_ABS, symname))
-+ break;
-+ else if (!is_reloc(S_REL, symname))
-+ goto bad;
-+ } else {
-+ if (use_real_mode &&
-+ !is_reloc(S_LIN, symname))
-+ break;
-+ }
-+ visit(rel, sym);
-+ break;
-+ default:
-+ die("Unsupported relocation type: %s (%d)\n",
-+ rel_type(r_type), r_type);
-+ break;
-+ bad:
-+ symname = sym_name(sym_strtab, sym);
-+ die("Invalid %s relocation: %s\n",
-+ rel_type(r_type), symname);
-+ }
-+ }
-+ }
-+}
-+
-+static void count_reloc(Elf32_Rel *rel, Elf32_Sym *sym)
-+{
-+ if (ELF32_R_TYPE(rel->r_info) == R_386_16)
-+ reloc16_count++;
-+ else
-+ reloc_count++;
-+}
-+
-+static void collect_reloc(Elf32_Rel *rel, Elf32_Sym *sym)
-+{
-+ /* Remember the address that needs to be adjusted. */
-+ if (ELF32_R_TYPE(rel->r_info) == R_386_16)
-+ relocs16[reloc16_idx++] = rel->r_offset;
-+ else
-+ relocs[reloc_idx++] = rel->r_offset;
-+}
-+
-+static int cmp_relocs(const void *va, const void *vb)
-+{
-+ const unsigned long *a, *b;
-+ a = va; b = vb;
-+ return (*a == *b)? 0 : (*a > *b)? 1 : -1;
-+}
-+
-+static int write32(unsigned int v, FILE *f)
-+{
-+ unsigned char buf[4];
-+
-+ buf[0] = (v >> 0) & 0xff;
-+ buf[1] = (v >> 8) & 0xff;
-+ buf[2] = (v >> 16) & 0xff;
-+ buf[3] = (v >> 24) & 0xff;
-+ return fwrite(buf, 1, 4, f) == 4 ? 0 : -1;
-+}
-+
-+static void emit_relocs(int as_text, int use_real_mode)
-+{
-+ int i;
-+ /* Count how many relocations I have and allocate space for them. */
-+ reloc_count = 0;
-+ walk_relocs(count_reloc, use_real_mode);
-+ relocs = malloc(reloc_count * sizeof(relocs[0]));
-+ if (!relocs) {
-+ die("malloc of %d entries for relocs failed\n",
-+ reloc_count);
-+ }
-+
-+ relocs16 = malloc(reloc16_count * sizeof(relocs[0]));
-+ if (!relocs16) {
-+ die("malloc of %d entries for relocs16 failed\n",
-+ reloc16_count);
-+ }
-+ /* Collect up the relocations */
-+ reloc_idx = 0;
-+ walk_relocs(collect_reloc, use_real_mode);
-+
-+ if (reloc16_count && !use_real_mode)
-+ die("Segment relocations found but --realmode not specified\n");
-+
-+ /* Order the relocations for more efficient processing */
-+ qsort(relocs, reloc_count, sizeof(relocs[0]), cmp_relocs);
-+ qsort(relocs16, reloc16_count, sizeof(relocs16[0]), cmp_relocs);
-+
-+ /* Print the relocations */
-+ if (as_text) {
-+ /* Print the relocations in a form suitable that
-+ * gas will like.
-+ */
-+ printf(".section \".data.reloc\",\"a\"\n");
-+ printf(".balign 4\n");
-+ if (use_real_mode) {
-+ printf("\t.long %lu\n", reloc16_count);
-+ for (i = 0; i < reloc16_count; i++)
-+ printf("\t.long 0x%08lx\n", relocs16[i]);
-+ printf("\t.long %lu\n", reloc_count);
-+ for (i = 0; i < reloc_count; i++) {
-+ printf("\t.long 0x%08lx\n", relocs[i]);
-+ }
-+ } else {
-+ /* Print a stop */
-+ printf("\t.long 0x%08lx\n", (unsigned long)0);
-+ for (i = 0; i < reloc_count; i++) {
-+ printf("\t.long 0x%08lx\n", relocs[i]);
-+ }
-+ }
-+
-+ printf("\n");
-+ }
-+ else {
-+ if (use_real_mode) {
-+ write32(reloc16_count, stdout);
-+ for (i = 0; i < reloc16_count; i++)
-+ write32(relocs16[i], stdout);
-+ write32(reloc_count, stdout);
-+
-+ /* Now print each relocation */
-+ for (i = 0; i < reloc_count; i++)
-+ write32(relocs[i], stdout);
-+ } else {
-+ /* Print a stop */
-+ write32(0, stdout);
-+
-+ /* Now print each relocation */
-+ for (i = 0; i < reloc_count; i++) {
-+ write32(relocs[i], stdout);
-+ }
-+ }
-+ }
-+}
-+
-+static void usage(void)
-+{
-+ die("relocs [--abs-syms|--abs-relocs|--text|--realmode] vmlinux\n");
-+}
-+
-+int main(int argc, char **argv)
-+{
-+ int show_absolute_syms, show_absolute_relocs;
-+ int as_text, use_real_mode;
-+ const char *fname;
-+ FILE *fp;
-+ int i;
-+
-+ show_absolute_syms = 0;
-+ show_absolute_relocs = 0;
-+ as_text = 0;
-+ use_real_mode = 0;
-+ fname = NULL;
-+ for (i = 1; i < argc; i++) {
-+ char *arg = argv[i];
-+ if (*arg == '-') {
-+ if (strcmp(arg, "--abs-syms") == 0) {
-+ show_absolute_syms = 1;
-+ continue;
-+ }
-+ if (strcmp(arg, "--abs-relocs") == 0) {
-+ show_absolute_relocs = 1;
-+ continue;
-+ }
-+ if (strcmp(arg, "--text") == 0) {
-+ as_text = 1;
-+ continue;
-+ }
-+ if (strcmp(arg, "--realmode") == 0) {
-+ use_real_mode = 1;
-+ continue;
-+ }
-+ }
-+ else if (!fname) {
-+ fname = arg;
-+ continue;
-+ }
-+ usage();
-+ }
-+ if (!fname) {
-+ usage();
-+ }
-+ regex_init(use_real_mode);
-+ fp = fopen(fname, "r");
-+ if (!fp) {
-+ die("Cannot open %s: %s\n",
-+ fname, strerror(errno));
-+ }
-+ read_ehdr(fp);
-+ read_shdrs(fp);
-+ read_strtabs(fp);
-+ read_symtabs(fp);
-+ read_relocs(fp);
-+ if (show_absolute_syms) {
-+ print_absolute_symbols();
-+ return 0;
-+ }
-+ if (show_absolute_relocs) {
-+ print_absolute_relocs();
-+ return 0;
-+ }
-+ emit_relocs(as_text, use_real_mode);
-+ return 0;
-+}
-diff --git a/scripts/Makefile b/scripts/Makefile
-index df7678f..3626666 100644
---- a/scripts/Makefile
-+++ b/scripts/Makefile
-@@ -8,6 +8,8 @@
- # conmakehash: Create arrays for initializing the kernel console tables
- # docproc: Used in Documentation/DocBook
-
-+HOST_EXTRACFLAGS += -I$(srctree)/tools/include
-+
- hostprogs-$(CONFIG_KALLSYMS) += kallsyms
- hostprogs-$(CONFIG_LOGO) += pnmtologo
- hostprogs-$(CONFIG_VT) += conmakehash
---
-1.7.9.5
-
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
deleted file mode 100644
index 870616f..0000000
--- 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
+++ /dev/null
@@ -1,43 +0,0 @@
-From 41c3afdbac5e0d6a1dd88fcffb21e0916a517409 Mon Sep 17 00:00:00 2001
-From: "H. Peter Anvin" <hpa at linux.intel.com>
-Date: Fri, 18 May 2012 00:24:09 -0700
-Subject: [PATCH 112/117] x86, relocs: Workaround for binutils 2.22.52.0.1
- section bug
-
-commit a3e854d95a76862cd37937e0b0438f540536771a upstream.
-
-GNU ld 2.22.52.0.1 has a bug that it blindly changes symbols from
-section-relative to absolute if they are in a section of zero length.
-This turns the symbols __init_begin and __init_end into absolute
-symbols. Let the relocs program know that those should be treated as
-relative symbols.
-
-Reported-by: Ingo Molnar <mingo at kernel.org>
-Signed-off-by: H. Peter Anvin <hpa at zytor.com>
-Cc: H.J. Lu <hjl.tools at gmail.com>
-Cc: Jarkko Sakkinen <jarkko.sakkinen at intel.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/x86/tools/relocs.c | 6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
-
-diff --git a/arch/x86/tools/relocs.c b/arch/x86/tools/relocs.c
-index 2071bad..c218b07 100644
---- a/arch/x86/tools/relocs.c
-+++ b/arch/x86/tools/relocs.c
-@@ -55,7 +55,11 @@ static const char * const sym_regex_kernel[S_NSYMTYPES] = {
- * as absolute (typically defined outside any section in the linker script.)
- */
- [S_REL] =
-- "^_end$",
-+ "^(__init_(begin|end)|"
-+ "__x86_cpu_dev_(start|end)|"
-+ "(__parainstructions|__alt_instructions)(|_end)|"
-+ "(__iommu_table|__apicdrivers|__smp_locks)(|_end)|"
-+ "_end)$"
- };
-
-
---
-1.7.9.5
-
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
deleted file mode 100644
index 1908b5f..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0113-x86-relocs-When-printing-an-error-say-relative-or-ab.patch
+++ /dev/null
@@ -1,69 +0,0 @@
-From 4deb87f411769d6a601fa0994480b83e2b39e49c Mon Sep 17 00:00:00 2001
-From: "H. Peter Anvin" <hpa at linux.intel.com>
-Date: Fri, 18 May 2012 09:52:01 -0700
-Subject: [PATCH 113/117] x86, relocs: When printing an error, say relative or
- absolute
-
-commit 24ab82bd9bf18f3efc69a131d73577940941e1b7 upstream.
-
-When the relocs tool throws an error, let the error message say if it
-is an absolute or relative symbol. This should make it a lot more
-clear what action the programmer needs to take and should help us find
-the reason if additional symbol bugs show up.
-
-Signed-off-by: H. Peter Anvin <hpa at zytor.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/x86/tools/relocs.c | 11 ++++++++---
- 1 file changed, 8 insertions(+), 3 deletions(-)
-
-diff --git a/arch/x86/tools/relocs.c b/arch/x86/tools/relocs.c
-index c218b07..c075507 100644
---- a/arch/x86/tools/relocs.c
-+++ b/arch/x86/tools/relocs.c
-@@ -562,10 +562,14 @@ static void walk_relocs(void (*visit)(Elf32_Rel *rel, Elf32_Sym *sym),
- Elf32_Sym *sym;
- unsigned r_type;
- const char *symname;
-+ int shn_abs;
-+
- rel = &sec->reltab[j];
- sym = &sh_symtab[ELF32_R_SYM(rel->r_info)];
- r_type = ELF32_R_TYPE(rel->r_info);
-
-+ shn_abs = sym->st_shndx == SHN_ABS;
-+
- switch (r_type) {
- case R_386_NONE:
- case R_386_PC32:
-@@ -581,7 +585,7 @@ static void walk_relocs(void (*visit)(Elf32_Rel *rel, Elf32_Sym *sym),
- symname = sym_name(sym_strtab, sym);
- if (!use_real_mode)
- goto bad;
-- if (sym->st_shndx == SHN_ABS) {
-+ if (shn_abs) {
- if (is_reloc(S_ABS, symname))
- break;
- else if (!is_reloc(S_SEG, symname))
-@@ -597,7 +601,7 @@ static void walk_relocs(void (*visit)(Elf32_Rel *rel, Elf32_Sym *sym),
-
- case R_386_32:
- symname = sym_name(sym_strtab, sym);
-- if (sym->st_shndx == SHN_ABS) {
-+ if (shn_abs) {
- if (is_reloc(S_ABS, symname))
- break;
- else if (!is_reloc(S_REL, symname))
-@@ -615,7 +619,8 @@ static void walk_relocs(void (*visit)(Elf32_Rel *rel, Elf32_Sym *sym),
- break;
- bad:
- symname = sym_name(sym_strtab, sym);
-- die("Invalid %s relocation: %s\n",
-+ die("Invalid %s %s relocation: %s\n",
-+ shn_abs ? "absolute" : "relative",
- rel_type(r_type), symname);
- }
- }
---
-1.7.9.5
-
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
deleted file mode 100644
index e05d5e0..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0114-x86-relocs-Build-clean-fix.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From fcc41e2fb71499938dcbeef7614bb60e1d3be391 Mon Sep 17 00:00:00 2001
-From: Jarkko Sakkinen <jarkko.sakkinen at intel.com>
-Date: Mon, 21 May 2012 20:51:24 +0300
-Subject: [PATCH 114/117] x86, relocs: Build clean fix
-
-commit b2d668da9307c4c163dd603d2bb3cadb10f9fd37 upstream.
-
-relocs was not cleaned up when "make clean" is issued. This
-patch fixes the issue.
-
-Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen at intel.com>
-Link: http://lkml.kernel.org/r/1337622684-6834-1-git-send-email-jarkko.sakkinen@intel.com
-Signed-off-by: H. Peter Anvin <hpa at zytor.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/x86/Makefile | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/arch/x86/Makefile b/arch/x86/Makefile
-index 774fd16..03dbc7f5b 100644
---- a/arch/x86/Makefile
-+++ b/arch/x86/Makefile
-@@ -183,6 +183,7 @@ archclean:
- $(Q)rm -rf $(objtree)/arch/i386
- $(Q)rm -rf $(objtree)/arch/x86_64
- $(Q)$(MAKE) $(clean)=$(boot)
-+ $(Q)$(MAKE) $(clean)=arch/x86/tools
-
- define archhelp
- echo '* bzImage - Compressed kernel image (arch/x86/boot/bzImage)'
---
-1.7.9.5
-
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
deleted file mode 100644
index da90c19..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0115-x86-32-relocs-Whitelist-more-symbols-for-ld-bug-work.patch
+++ /dev/null
@@ -1,73 +0,0 @@
-From 4cef8ea9c2bb186461b7f50c806d2e1ecfb81ceb Mon Sep 17 00:00:00 2001
-From: "H. Peter Anvin" <hpa at zytor.com>
-Date: Wed, 23 May 2012 14:02:34 -0700
-Subject: [PATCH 115/117] x86-32, relocs: Whitelist more symbols for ld bug
- workaround
-
-commit fd952815307f0f272bf49fd364a7fd2f9992bc42 upstream.
-
-As noted in checkin:
-
-a3e854d95 x86, relocs: Workaround for binutils 2.22.52.0.1 section bug
-
-ld version 2.22.52.0.[12] can incorrectly promote relative symbols to
-absolute, if the output section they appear in is otherwise empty.
-
-Since checkin:
-
-6520fe55 x86, realmode: 16-bit real-mode code support for relocs tool
-
-we actually check for this and error out rather than silently creating
-a kernel which will malfunction if relocated.
-
-Ingo found a configuration in which __start_builtin_fw triggered the
-warning.
-
-Go through the linker script sources and look for more symbols that
-could plausibly get bogusly promoted to absolute, and add them to the
-whitelist.
-
-In general, if the following error triggers:
-
- Invalid absolute R_386_32 relocation: <symbol>
-
-... then we should verify that <symbol> is really meant to be
-relocated, and add it and any related symbols manually to the S_REL
-regexp.
-
-Please note that 6520fe55 does not introduce the error, only the check
-for the error -- without 6520fe55 this version of ld will simply
-produce a corrupt kernel if CONFIG_RELOCATABLE is set on x86-32.
-
-Reported-by: Ingo Molnar <mingo at kernel.org>
-Signed-off-by: H. Peter Anvin <hpa at zytor.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/x86/tools/relocs.c | 11 +++++++++++
- 1 file changed, 11 insertions(+)
-
-diff --git a/arch/x86/tools/relocs.c b/arch/x86/tools/relocs.c
-index c075507..eb1ad63 100644
---- a/arch/x86/tools/relocs.c
-+++ b/arch/x86/tools/relocs.c
-@@ -59,6 +59,17 @@ static const char * const sym_regex_kernel[S_NSYMTYPES] = {
- "__x86_cpu_dev_(start|end)|"
- "(__parainstructions|__alt_instructions)(|_end)|"
- "(__iommu_table|__apicdrivers|__smp_locks)(|_end)|"
-+ "__(start|end)_pci_.*|"
-+ "__(start|end)_builtin_fw|"
-+ "__(start|stop)___ksymtab(|_gpl|_unused|_unused_gpl|_gpl_future)|"
-+ "__(start|stop)___kcrctab(|_gpl|_unused|_unused_gpl|_gpl_future)|"
-+ "__(start|stop)___param|"
-+ "__(start|stop)___modver|"
-+ "__(start|stop)___bug_table|"
-+ "__tracedata_(start|end)|"
-+ "__(start|stop)_notes|"
-+ "__end_rodata|"
-+ "__initramfs_start|"
- "_end)$"
- };
-
---
-1.7.9.5
-
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
deleted file mode 100644
index ad47cac..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0116-x86-relocs-Add-jiffies-and-jiffies_64-to-the-relativ.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 31885c2e45d56acc14aff8d0fafe4b0bee3be940 Mon Sep 17 00:00:00 2001
-From: "H. Peter Anvin" <hpa at zytor.com>
-Date: Thu, 24 May 2012 07:01:38 -0700
-Subject: [PATCH 116/117] x86, relocs: Add jiffies and jiffies_64 to the
- relative whitelist
-
-commit ea17e7414bc62e8d3bde8d08e3df1d921c518c17 upstream.
-
-The symbol jiffies is created in the linker script as an alias to
-jiffies_64. Unfortunately this is done outside any section, and
-apparently GNU ld 2.21 doesn't carry the section with it, so we end up
-with an absolute symbol and therefore a broken kernel.
-
-Add jiffies and jiffies_64 to the whitelist.
-
-The most disturbing bit with this discovery is that it shows that we
-have had multiple linker bugs in this area crossing multiple
-generations, and have been silently building bad kernels for some time.
-
-Link: http://lkml.kernel.org/r/20120524171604.0d98284f3affc643e9714470@canb.auug.org.au
-Reported-by: Stephen Rothwell <sfr at canb.auug.org.au>
-Signed-off-by: H. Peter Anvin <hpa at zytor.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/x86/tools/relocs.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/arch/x86/tools/relocs.c b/arch/x86/tools/relocs.c
-index eb1ad63..e529730 100644
---- a/arch/x86/tools/relocs.c
-+++ b/arch/x86/tools/relocs.c
-@@ -70,6 +70,7 @@ static const char * const sym_regex_kernel[S_NSYMTYPES] = {
- "__(start|stop)_notes|"
- "__end_rodata|"
- "__initramfs_start|"
-+ "(jiffies|jiffies_64)|"
- "_end)$"
- };
-
---
-1.7.9.5
-
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
deleted file mode 100644
index e71638b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0117-Linux-3.2.19.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 6ffcfc07eaa7389cee6c647a604b444e3b890a21 Mon Sep 17 00:00:00 2001
-From: Ben Hutchings <ben at decadent.org.uk>
-Date: Thu, 31 May 2012 00:44:12 +0100
-Subject: [PATCH 117/117] Linux 3.2.19
-
----
- Makefile | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Makefile b/Makefile
-index 0226da5..c291184 100644
---- a/Makefile
-+++ b/Makefile
-@@ -1,6 +1,6 @@
- VERSION = 3
- PATCHLEVEL = 2
--SUBLEVEL = 18
-+SUBLEVEL = 19
- EXTRAVERSION =
- NAME = Saber-toothed Squirrel
-
---
-1.7.9.5
-
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
deleted file mode 100644
index ed10e3a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0001-mtdoops-fix-the-oops_page_used-array-size.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 8ca3e7c57df66813802542ce347e79ba5537f303 Mon Sep 17 00:00:00 2001
-From: Roman Tereshonkov <roman.tereshonkov at nokia.com>
-Date: Tue, 29 Nov 2011 12:49:18 +0200
-Subject: [PATCH 001/129] mtdoops: fix the oops_page_used array size
-
-commit 556f063580db2953a7e53cd46b47724246320f60 upstream.
-
-The array of unsigned long pointed by oops_page_used is allocated
-by vmalloc which requires the size to be in bytes.
-
-BITS_PER_LONG is equal to 32.
-If we want to allocate memory for 32 pages with one bit per page then
-32 / BITS_PER_LONG is equal to 1 byte that is 8 bits.
-To fix it we need to multiply the result by sizeof(unsigned long) equal to 4.
-
-Signed-off-by: Roman Tereshonkov <roman.tereshonkov at nokia.com>
-Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy at linux.intel.com>
-Signed-off-by: David Woodhouse <David.Woodhouse at intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/mtd/mtdoops.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/mtd/mtdoops.c b/drivers/mtd/mtdoops.c
-index 1e2fa62..0782b31 100644
---- a/drivers/mtd/mtdoops.c
-+++ b/drivers/mtd/mtdoops.c
-@@ -369,7 +369,7 @@ static void mtdoops_notify_add(struct mtd_info *mtd)
-
- /* oops_page_used is a bit field */
- cxt->oops_page_used = vmalloc(DIV_ROUND_UP(mtdoops_pages,
-- BITS_PER_LONG));
-+ BITS_PER_LONG) * sizeof(unsigned long));
- if (!cxt->oops_page_used) {
- printk(KERN_ERR "mtdoops: could not allocate page array\n");
- return;
---
-1.7.9.5
-
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
deleted file mode 100644
index 3933c59..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0002-mtd-mtdoops-skip-reading-initially-bad-blocks.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From bfaedde2c4ae9dcab0aabf7dc7172999df5669ec Mon Sep 17 00:00:00 2001
-From: Roman Tereshonkov <roman.tereshonkov at nokia.com>
-Date: Fri, 2 Dec 2011 15:07:17 +0200
-Subject: [PATCH 002/129] mtd: mtdoops: skip reading initially bad blocks
-
-commit 3538c56329936c78f7d356889908790006d0124c upstream.
-
-Use block_isbad to check and skip the bad blocks reading.
-This will allow to get rid of the read errors if bad blocks
-are present initially.
-
-Signed-off-by: Roman Tereshonkov <roman.tereshonkov at nokia.com>
-Signed-off-by: Artem Bityutskiy <artem.bityutskiy at linux.intel.com>
-Signed-off-by: David Woodhouse <David.Woodhouse at intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/mtd/mtdoops.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/drivers/mtd/mtdoops.c b/drivers/mtd/mtdoops.c
-index 0782b31..f3cdce9 100644
---- a/drivers/mtd/mtdoops.c
-+++ b/drivers/mtd/mtdoops.c
-@@ -253,6 +253,9 @@ static void find_next_position(struct mtdoops_context *cxt)
- size_t retlen;
-
- for (page = 0; page < cxt->oops_pages; page++) {
-+ if (mtd->block_isbad &&
-+ mtd->block_isbad(mtd, page * record_size))
-+ continue;
- /* Assume the page is used */
- mark_page_used(cxt, page);
- ret = mtd->read(mtd, page * record_size, MTDOOPS_HEADER_SIZE,
---
-1.7.9.5
-
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
deleted file mode 100644
index 11ea583..0000000
--- 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
+++ /dev/null
@@ -1,85 +0,0 @@
-From 1e5cac540c54d687fea366251cc0ddf9266c0685 Mon Sep 17 00:00:00 2001
-From: Brian Norris <computersforpeace at gmail.com>
-Date: Mon, 7 Nov 2011 15:51:05 -0800
-Subject: [PATCH 003/129] mtd: mtd_blkdevs: don't increase 'open' count on
- error path
-
-commit 342ff28f5a2e5aa3236617bd2bddf6c749677ef2 upstream.
-
-Some error paths in mtd_blkdevs were fixed in the following commit:
-
- commit 94735ec4044a6d318b83ad3c5794e931ed168d10
- mtd: mtd_blkdevs: fix error path in blktrans_open
-
-But on these error paths, the block device's `dev->open' count is
-already incremented before we check for errors. This meant that, while
-the error path was handled correctly on the first time through
-blktrans_open(), the device is erroneously considered already open on
-the second time through.
-
-This problem can be seen, for instance, when a UBI volume is
-simultaneously mounted as a UBIFS partition and read through its
-corresponding gluebi mtdblockX device. This results in blktrans_open()
-passing its error checks (with `dev->open > 0') without actually having
-a handle on the device. Here's a summarized log of the actions and
-results with nandsim:
-
- # modprobe nandsim
- # modprobe mtdblock
- # modprobe gluebi
- # modprobe ubifs
- # ubiattach /dev/ubi_ctrl -m 0
- ...
- # ubimkvol /dev/ubi0 -N test -s 16MiB
- ...
- # mount -t ubifs ubi0:test /mnt
- # ls /dev/mtdblock*
- /dev/mtdblock0 /dev/mtdblock1
- # cat /dev/mtdblock1 > /dev/null
- cat: can't open '/dev/mtdblock4': Device or resource busy
- # cat /dev/mtdblock1 > /dev/null
-
- CPU 0 Unable to handle kernel paging request at virtual address
- fffffff0, epc == 8031536c, ra == 8031f280
- Oops[#1]:
- ...
- Call Trace:
- [<8031536c>] ubi_leb_read+0x14/0x164
- [<8031f280>] gluebi_read+0xf0/0x148
- [<802edba8>] mtdblock_readsect+0x64/0x198
- [<802ecfe4>] mtd_blktrans_thread+0x330/0x3f4
- [<8005be98>] kthread+0x88/0x90
- [<8000bc04>] kernel_thread_helper+0x10/0x18
-
-Signed-off-by: Brian Norris <computersforpeace at gmail.com>
-Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy at linux.intel.com>
-Signed-off-by: David Woodhouse <David.Woodhouse at intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/mtd/mtd_blkdevs.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/mtd/mtd_blkdevs.c b/drivers/mtd/mtd_blkdevs.c
-index ed8b5e7..424ca5f 100644
---- a/drivers/mtd/mtd_blkdevs.c
-+++ b/drivers/mtd/mtd_blkdevs.c
-@@ -215,7 +215,7 @@ static int blktrans_open(struct block_device *bdev, fmode_t mode)
-
- mutex_lock(&dev->lock);
-
-- if (dev->open++)
-+ if (dev->open)
- goto unlock;
-
- kref_get(&dev->ref);
-@@ -235,6 +235,7 @@ static int blktrans_open(struct block_device *bdev, fmode_t mode)
- goto error_release;
-
- unlock:
-+ dev->open++;
- mutex_unlock(&dev->lock);
- blktrans_dev_put(dev);
- return ret;
---
-1.7.9.5
-
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
deleted file mode 100644
index 6a4a0e0..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0004-mtd-tests-stresstest-bail-out-if-device-has-not-enou.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From 401f9918c9daf754c70eb65a895c8ef3bde5b441 Mon Sep 17 00:00:00 2001
-From: Wolfram Sang <w.sang at pengutronix.de>
-Date: Tue, 29 Nov 2011 15:34:08 +0100
-Subject: [PATCH 004/129] mtd: tests: stresstest: bail out if device has not
- enough eraseblocks
-
-commit 2f4478ccff7df845dc9c0f8996a96373122c4417 upstream.
-
-stresstest needs at least two eraseblocks. Bail out gracefully if that
-condition is not met. Fixes the following 'division by zero' OOPS:
-
-[ 619.100000] mtd_stresstest: MTD device size 131072, eraseblock size 131072, page size 2048, count of eraseblocks 1, pages per eraseblock 64, OOB size 64
-[ 619.120000] mtd_stresstest: scanning for bad eraseblocks
-[ 619.120000] mtd_stresstest: scanned 1 eraseblocks, 0 are bad
-[ 619.130000] mtd_stresstest: doing operations
-[ 619.130000] mtd_stresstest: 0 operations done
-[ 619.140000] Division by zero in kernel.
-...
-
-caused by
-
- /* Read or write up 2 eraseblocks at a time - hence 'ebcnt - 1' */
- eb %= (ebcnt - 1);
-
-Signed-off-by: Wolfram Sang <w.sang at pengutronix.de>
-Signed-off-by: Artem Bityutskiy <artem.bityutskiy at linux.intel.com>
-Signed-off-by: David Woodhouse <David.Woodhouse at intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/mtd/tests/mtd_stresstest.c | 7 +++++++
- 1 file changed, 7 insertions(+)
-
-diff --git a/drivers/mtd/tests/mtd_stresstest.c b/drivers/mtd/tests/mtd_stresstest.c
-index 52ffd91..811642f 100644
---- a/drivers/mtd/tests/mtd_stresstest.c
-+++ b/drivers/mtd/tests/mtd_stresstest.c
-@@ -284,6 +284,12 @@ static int __init mtd_stresstest_init(void)
- (unsigned long long)mtd->size, mtd->erasesize,
- pgsize, ebcnt, pgcnt, mtd->oobsize);
-
-+ if (ebcnt < 2) {
-+ printk(PRINT_PREF "error: need at least 2 eraseblocks\n");
-+ err = -ENOSPC;
-+ goto out_put_mtd;
-+ }
-+
- /* Read or write up 2 eraseblocks at a time */
- bufsize = mtd->erasesize * 2;
-
-@@ -322,6 +328,7 @@ out:
- kfree(bbt);
- vfree(writebuf);
- vfree(readbuf);
-+out_put_mtd:
- put_mtd_device(mtd);
- if (err)
- printk(PRINT_PREF "error %d occurred\n", err);
---
-1.7.9.5
-
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
deleted file mode 100644
index 26ba973..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0005-drivers-rtc-interface.c-fix-alarm-rollover-when-day-.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From 4795aa3e23be426bc3971ce821f37983dcee409f Mon Sep 17 00:00:00 2001
-From: Ben Hutchings <ben at decadent.org.uk>
-Date: Tue, 10 Jan 2012 15:11:02 -0800
-Subject: [PATCH 005/129] drivers/rtc/interface.c: fix alarm rollover when day
- or month is out-of-range
-
-commit e74a8f2edb92cb690b467cea0ab652c509e9f624 upstream.
-
-Commit f44f7f96a20a ("RTC: Initialize kernel state from RTC") introduced a
-potential infinite loop. If an alarm time contains a wildcard month and
-an invalid day (> 31), or a wildcard year and an invalid month (>= 12),
-the loop searching for the next matching date will never terminate. Treat
-the invalid values as wildcards.
-
-Fixes <http://bugs.debian.org/646429>, <http://bugs.debian.org/653331>
-
-Reported-by: leo weppelman <leoweppelman at googlemail.com>
-Reported-by: "P. van Gaans" <mailme667 at yahoo.co.uk>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
-Signed-off-by: Jonathan Nieder <jrnieder at gmail.com>
-Cc: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Cc: Marcelo Roberto Jimenez <mroberto at cpti.cetuc.puc-rio.br>
-Cc: Thomas Gleixner <tglx at linutronix.de>
-Cc: John Stultz <john.stultz at linaro.org>
-Acked-by: Alessandro Zummo <a.zummo at towertech.it>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/rtc/interface.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/rtc/interface.c b/drivers/rtc/interface.c
-index 8e28625..8a1c031 100644
---- a/drivers/rtc/interface.c
-+++ b/drivers/rtc/interface.c
-@@ -228,11 +228,11 @@ int __rtc_read_alarm(struct rtc_device *rtc, struct rtc_wkalrm *alarm)
- alarm->time.tm_hour = now.tm_hour;
-
- /* For simplicity, only support date rollover for now */
-- if (alarm->time.tm_mday == -1) {
-+ if (alarm->time.tm_mday < 1 || alarm->time.tm_mday > 31) {
- alarm->time.tm_mday = now.tm_mday;
- missing = day;
- }
-- if (alarm->time.tm_mon == -1) {
-+ if ((unsigned)alarm->time.tm_mon >= 12) {
- alarm->time.tm_mon = now.tm_mon;
- if (missing == none)
- missing = month;
---
-1.7.9.5
-
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
deleted file mode 100644
index 31d7359..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0006-ext4-add-missing-ext4_resize_end-on-error-paths.patch
+++ /dev/null
@@ -1,109 +0,0 @@
-From e6f3a0306b95afbc5965b42a05d85c102401b48c Mon Sep 17 00:00:00 2001
-From: Djalal Harouni <tixxdz at opendz.org>
-Date: Wed, 4 Jan 2012 17:09:52 -0500
-Subject: [PATCH 006/129] ext4: add missing ext4_resize_end on error paths
-
-commit 014a1770371a028d22f364718c805f4216911ecd upstream.
-
-Online resize ioctls 'EXT4_IOC_GROUP_EXTEND' and 'EXT4_IOC_GROUP_ADD'
-call ext4_resize_begin() to check permissions and to set the
-EXT4_RESIZING bit lock, they do their work and they must finish with
-ext4_resize_end() which calls clear_bit_unlock() to unlock and to
-avoid -EBUSY errors for the next resize operations.
-
-This patch adds the missing ext4_resize_end() calls on error paths.
-
-Patch tested.
-
-Signed-off-by: Djalal Harouni <tixxdz at opendz.org>
-Signed-off-by: "Theodore Ts'o" <tytso at mit.edu>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- fs/ext4/ioctl.c | 28 ++++++++++++++++++----------
- 1 file changed, 18 insertions(+), 10 deletions(-)
-
-diff --git a/fs/ext4/ioctl.c b/fs/ext4/ioctl.c
-index a567968..ab25f57 100644
---- a/fs/ext4/ioctl.c
-+++ b/fs/ext4/ioctl.c
-@@ -182,19 +182,22 @@ setversion_out:
- if (err)
- return err;
-
-- if (get_user(n_blocks_count, (__u32 __user *)arg))
-- return -EFAULT;
-+ if (get_user(n_blocks_count, (__u32 __user *)arg)) {
-+ err = -EFAULT;
-+ goto group_extend_out;
-+ }
-
- if (EXT4_HAS_RO_COMPAT_FEATURE(sb,
- EXT4_FEATURE_RO_COMPAT_BIGALLOC)) {
- ext4_msg(sb, KERN_ERR,
- "Online resizing not supported with bigalloc");
-- return -EOPNOTSUPP;
-+ err = -EOPNOTSUPP;
-+ goto group_extend_out;
- }
-
- err = mnt_want_write(filp->f_path.mnt);
- if (err)
-- return err;
-+ goto group_extend_out;
-
- err = ext4_group_extend(sb, EXT4_SB(sb)->s_es, n_blocks_count);
- if (EXT4_SB(sb)->s_journal) {
-@@ -204,9 +207,10 @@ setversion_out:
- }
- if (err == 0)
- err = err2;
-+
- mnt_drop_write(filp->f_path.mnt);
-+group_extend_out:
- ext4_resize_end(sb);
--
- return err;
- }
-
-@@ -267,19 +271,22 @@ mext_out:
- return err;
-
- if (copy_from_user(&input, (struct ext4_new_group_input __user *)arg,
-- sizeof(input)))
-- return -EFAULT;
-+ sizeof(input))) {
-+ err = -EFAULT;
-+ goto group_add_out;
-+ }
-
- if (EXT4_HAS_RO_COMPAT_FEATURE(sb,
- EXT4_FEATURE_RO_COMPAT_BIGALLOC)) {
- ext4_msg(sb, KERN_ERR,
- "Online resizing not supported with bigalloc");
-- return -EOPNOTSUPP;
-+ err = -EOPNOTSUPP;
-+ goto group_add_out;
- }
-
- err = mnt_want_write(filp->f_path.mnt);
- if (err)
-- return err;
-+ goto group_add_out;
-
- err = ext4_group_add(sb, &input);
- if (EXT4_SB(sb)->s_journal) {
-@@ -289,9 +296,10 @@ mext_out:
- }
- if (err == 0)
- err = err2;
-+
- mnt_drop_write(filp->f_path.mnt);
-+group_add_out:
- ext4_resize_end(sb);
--
- return err;
- }
-
---
-1.7.9.5
-
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
deleted file mode 100644
index 8d8449f..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0007-ext4-fix-undefined-behavior-in-ext4_fill_flex_info.patch
+++ /dev/null
@@ -1,74 +0,0 @@
-From 7105c77677c92d13510d38fd5dd085944464015e Mon Sep 17 00:00:00 2001
-From: Xi Wang <xi.wang at gmail.com>
-Date: Tue, 10 Jan 2012 11:51:10 -0500
-Subject: [PATCH 007/129] ext4: fix undefined behavior in
- ext4_fill_flex_info()
-
-commit d50f2ab6f050311dbf7b8f5501b25f0bf64a439b upstream.
-
-Commit 503358ae01b70ce6909d19dd01287093f6b6271c ("ext4: avoid divide by
-zero when trying to mount a corrupted file system") fixes CVE-2009-4307
-by performing a sanity check on s_log_groups_per_flex, since it can be
-set to a bogus value by an attacker.
-
- sbi->s_log_groups_per_flex = sbi->s_es->s_log_groups_per_flex;
- groups_per_flex = 1 << sbi->s_log_groups_per_flex;
-
- if (groups_per_flex < 2) { ... }
-
-This patch fixes two potential issues in the previous commit.
-
-1) The sanity check might only work on architectures like PowerPC.
-On x86, 5 bits are used for the shifting amount. That means, given a
-large s_log_groups_per_flex value like 36, groups_per_flex = 1 << 36
-is essentially 1 << 4 = 16, rather than 0. This will bypass the check,
-leaving s_log_groups_per_flex and groups_per_flex inconsistent.
-
-2) The sanity check relies on undefined behavior, i.e., oversized shift.
-A standard-confirming C compiler could rewrite the check in unexpected
-ways. Consider the following equivalent form, assuming groups_per_flex
-is unsigned for simplicity.
-
- groups_per_flex = 1 << sbi->s_log_groups_per_flex;
- if (groups_per_flex == 0 || groups_per_flex == 1) {
-
-We compile the code snippet using Clang 3.0 and GCC 4.6. Clang will
-completely optimize away the check groups_per_flex == 0, leaving the
-patched code as vulnerable as the original. GCC keeps the check, but
-there is no guarantee that future versions will do the same.
-
-Signed-off-by: Xi Wang <xi.wang at gmail.com>
-Signed-off-by: "Theodore Ts'o" <tytso at mit.edu>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- fs/ext4/super.c | 7 +++----
- 1 file changed, 3 insertions(+), 4 deletions(-)
-
-diff --git a/fs/ext4/super.c b/fs/ext4/super.c
-index 3e1329e..9281dbe 100644
---- a/fs/ext4/super.c
-+++ b/fs/ext4/super.c
-@@ -2006,17 +2006,16 @@ static int ext4_fill_flex_info(struct super_block *sb)
- struct ext4_group_desc *gdp = NULL;
- ext4_group_t flex_group_count;
- ext4_group_t flex_group;
-- int groups_per_flex = 0;
-+ unsigned int groups_per_flex = 0;
- size_t size;
- int i;
-
- sbi->s_log_groups_per_flex = sbi->s_es->s_log_groups_per_flex;
-- groups_per_flex = 1 << sbi->s_log_groups_per_flex;
--
-- if (groups_per_flex < 2) {
-+ if (sbi->s_log_groups_per_flex < 1 || sbi->s_log_groups_per_flex > 31) {
- sbi->s_log_groups_per_flex = 0;
- return 1;
- }
-+ groups_per_flex = 1 << sbi->s_log_groups_per_flex;
-
- /* We allocate both existing and potentially added groups */
- flex_group_count = ((sbi->s_groups_count + groups_per_flex - 1) +
---
-1.7.9.5
-
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
deleted file mode 100644
index bf1692b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0008-ALSA-snd-usb-us122l-Delete-calls-to-preempt_disable.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From 14f05d5692c7431710f71ea914ad07dc0b60d2a2 Mon Sep 17 00:00:00 2001
-From: Karsten Wiese <fzu at wemgehoertderstaat.de>
-Date: Fri, 30 Dec 2011 01:42:01 +0100
-Subject: [PATCH 008/129] ALSA: snd-usb-us122l: Delete calls to
- preempt_disable
-
-commit d0f3a2eb9062560bebca8b923424f3ca02a331ba upstream.
-
-They are not needed here.
-
-Signed-off-by: Karsten Wiese <fzu at wemgehoertderstaat.de>
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- sound/usb/usx2y/usb_stream.c | 6 ++----
- 1 file changed, 2 insertions(+), 4 deletions(-)
-
-diff --git a/sound/usb/usx2y/usb_stream.c b/sound/usb/usx2y/usb_stream.c
-index c400ade..1e7a47a 100644
---- a/sound/usb/usx2y/usb_stream.c
-+++ b/sound/usb/usx2y/usb_stream.c
-@@ -674,7 +674,7 @@ dotry:
- inurb->transfer_buffer_length =
- inurb->number_of_packets *
- inurb->iso_frame_desc[0].length;
-- preempt_disable();
-+
- if (u == 0) {
- int now;
- struct usb_device *dev = inurb->dev;
-@@ -686,19 +686,17 @@ dotry:
- }
- err = usb_submit_urb(inurb, GFP_ATOMIC);
- if (err < 0) {
-- preempt_enable();
- snd_printk(KERN_ERR"usb_submit_urb(sk->inurb[%i])"
- " returned %i\n", u, err);
- return err;
- }
- err = usb_submit_urb(outurb, GFP_ATOMIC);
- if (err < 0) {
-- preempt_enable();
- snd_printk(KERN_ERR"usb_submit_urb(sk->outurb[%i])"
- " returned %i\n", u, err);
- return err;
- }
-- preempt_enable();
-+
- if (inurb->start_frame != outurb->start_frame) {
- snd_printd(KERN_DEBUG
- "u[%i] start_frames differ in:%u out:%u\n",
---
-1.7.9.5
-
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
deleted file mode 100644
index 17e9a30..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0009-ALSA-HDA-Fix-master-control-for-Cirrus-Logic-421X.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From 78e0e9b19b4202874115f3a2745dad208dad51e2 Mon Sep 17 00:00:00 2001
-From: David Henningsson <david.henningsson at canonical.com>
-Date: Mon, 2 Jan 2012 12:40:15 +0100
-Subject: [PATCH 009/129] ALSA: HDA: Fix master control for Cirrus Logic 421X
-
-commit 40d03e63e91af8ddccdfd5a536cc2a6e51433e1d upstream.
-
-The control name "HP/Speakers" is non-standard, and since there is
-only one DAC on this chip there is no need for a virtual master
-anyway.
-
-Signed-off-by: David Henningsson <david.henningsson at canonical.com>
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- sound/pci/hda/patch_cirrus.c | 13 +------------
- 1 file changed, 1 insertion(+), 12 deletions(-)
-
-diff --git a/sound/pci/hda/patch_cirrus.c b/sound/pci/hda/patch_cirrus.c
-index 70a7abd..f55ceb6 100644
---- a/sound/pci/hda/patch_cirrus.c
-+++ b/sound/pci/hda/patch_cirrus.c
-@@ -1771,30 +1771,19 @@ static int build_cs421x_output(struct hda_codec *codec)
- struct auto_pin_cfg *cfg = &spec->autocfg;
- struct snd_kcontrol *kctl;
- int err;
-- char *name = "HP/Speakers";
-+ char *name = "Master";
-
- fix_volume_caps(codec, dac);
-- if (!spec->vmaster_sw) {
-- err = add_vmaster(codec, dac);
-- if (err < 0)
-- return err;
-- }
-
- err = add_mute(codec, name, 0,
- HDA_COMPOSE_AMP_VAL(dac, 3, 0, HDA_OUTPUT), 0, &kctl);
- if (err < 0)
- return err;
-- err = snd_ctl_add_slave(spec->vmaster_sw, kctl);
-- if (err < 0)
-- return err;
-
- err = add_volume(codec, name, 0,
- HDA_COMPOSE_AMP_VAL(dac, 3, 0, HDA_OUTPUT), 0, &kctl);
- if (err < 0)
- return err;
-- err = snd_ctl_add_slave(spec->vmaster_vol, kctl);
-- if (err < 0)
-- return err;
-
- if (cfg->speaker_outs) {
- err = snd_hda_ctl_add(codec, 0,
---
-1.7.9.5
-
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
deleted file mode 100644
index 4d0d47a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0010-ALSA-HDA-Fix-automute-for-Cirrus-Logic-421x.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From d16d6a4af51d31f0b7a1a0109c99fd926416cd1f Mon Sep 17 00:00:00 2001
-From: David Henningsson <david.henningsson at canonical.com>
-Date: Mon, 2 Jan 2012 12:40:16 +0100
-Subject: [PATCH 010/129] ALSA: HDA: Fix automute for Cirrus Logic 421x
-
-commit 78e2a928e377d5124932d4399c6c581908b027a0 upstream.
-
-There was a bug in the automute logic causing speakers not to
-mute when headphones were plugged in.
-
-Tested-by: Hsin-Yi Chen <hychen at canonical.com>
-Signed-off-by: David Henningsson <david.henningsson at canonical.com>
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- sound/pci/hda/patch_cirrus.c | 14 ++++++--------
- 1 file changed, 6 insertions(+), 8 deletions(-)
-
-diff --git a/sound/pci/hda/patch_cirrus.c b/sound/pci/hda/patch_cirrus.c
-index f55ceb6..5b0a9bb 100644
---- a/sound/pci/hda/patch_cirrus.c
-+++ b/sound/pci/hda/patch_cirrus.c
-@@ -920,16 +920,14 @@ static void cs_automute(struct hda_codec *codec)
-
- /* mute speakers if spdif or hp jack is plugged in */
- for (i = 0; i < cfg->speaker_outs; i++) {
-+ int pin_ctl = hp_present ? 0 : PIN_OUT;
-+ /* detect on spdif is specific to CS421x */
-+ if (spdif_present && (spec->vendor_nid == CS421X_VENDOR_NID))
-+ pin_ctl = 0;
-+
- nid = cfg->speaker_pins[i];
- snd_hda_codec_write(codec, nid, 0,
-- AC_VERB_SET_PIN_WIDGET_CONTROL,
-- hp_present ? 0 : PIN_OUT);
-- /* detect on spdif is specific to CS421x */
-- if (spec->vendor_nid == CS421X_VENDOR_NID) {
-- snd_hda_codec_write(codec, nid, 0,
-- AC_VERB_SET_PIN_WIDGET_CONTROL,
-- spdif_present ? 0 : PIN_OUT);
-- }
-+ AC_VERB_SET_PIN_WIDGET_CONTROL, pin_ctl);
- }
- if (spec->gpio_eapd_hp) {
- unsigned int gpio = hp_present ?
---
-1.7.9.5
-
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
deleted file mode 100644
index 4187528..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0011-ALSA-ice1724-Check-for-ac97-to-avoid-kernel-oops.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 97a18462c03b9c0c3e22aaec73045024f198aacc Mon Sep 17 00:00:00 2001
-From: Pavel Hofman <pavel.hofman at ivitera.com>
-Date: Thu, 5 Jan 2012 23:05:18 +0100
-Subject: [PATCH 011/129] ALSA: ice1724 - Check for ac97 to avoid kernel oops
-
-commit e7848163aa2a649d9065f230fadff80dc3519775 upstream.
-
-Cards with identical PCI ids but no AC97 config in EEPROM do not have
-the ac97 field initialized. We must check for this case to avoid kernel oops.
-
-Signed-off-by: Pavel Hofman <pavel.hofman at ivitera.com>
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- sound/pci/ice1712/amp.c | 7 +++++--
- 1 file changed, 5 insertions(+), 2 deletions(-)
-
-diff --git a/sound/pci/ice1712/amp.c b/sound/pci/ice1712/amp.c
-index e328cfb..e525da2 100644
---- a/sound/pci/ice1712/amp.c
-+++ b/sound/pci/ice1712/amp.c
-@@ -68,8 +68,11 @@ static int __devinit snd_vt1724_amp_init(struct snd_ice1712 *ice)
-
- static int __devinit snd_vt1724_amp_add_controls(struct snd_ice1712 *ice)
- {
-- /* we use pins 39 and 41 of the VT1616 for left and right read outputs */
-- snd_ac97_write_cache(ice->ac97, 0x5a, snd_ac97_read(ice->ac97, 0x5a) & ~0x8000);
-+ if (ice->ac97)
-+ /* we use pins 39 and 41 of the VT1616 for left and right
-+ read outputs */
-+ snd_ac97_write_cache(ice->ac97, 0x5a,
-+ snd_ac97_read(ice->ac97, 0x5a) & ~0x8000);
- return 0;
- }
-
---
-1.7.9.5
-
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
deleted file mode 100644
index 1fe6016..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0012-ALSA-usb-audio-Avoid-flood-of-frame-active-debug-mes.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From fc0b965ed3b89f9f6cacff2dcd472f473b82ed99 Mon Sep 17 00:00:00 2001
-From: Takashi Iwai <tiwai at suse.de>
-Date: Mon, 9 Jan 2012 11:37:20 +0100
-Subject: [PATCH 012/129] ALSA: usb-audio - Avoid flood of frame-active debug
- messages
-
-commit 80c8a2a372599e604b04a9c568952fe39cd1851d upstream.
-
-With some buggy devices, the usb-audio driver may give "frame xxx active"
-kernel messages too often. Better to keep it as debug-only using
-snd_printdd(), and also add the rate-limit for avoiding floods.
-
-Bugzilla: https://bugzilla.novell.com/show_bug.cgi?id=738681
-
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- sound/usb/endpoint.c | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/sound/usb/endpoint.c b/sound/usb/endpoint.c
-index 81c6ede..08dcce5 100644
---- a/sound/usb/endpoint.c
-+++ b/sound/usb/endpoint.c
-@@ -17,6 +17,7 @@
-
- #include <linux/gfp.h>
- #include <linux/init.h>
-+#include <linux/ratelimit.h>
- #include <linux/usb.h>
- #include <linux/usb/audio.h>
-
-@@ -458,8 +459,8 @@ static int retire_capture_urb(struct snd_usb_substream *subs,
-
- for (i = 0; i < urb->number_of_packets; i++) {
- cp = (unsigned char *)urb->transfer_buffer + urb->iso_frame_desc[i].offset;
-- if (urb->iso_frame_desc[i].status) {
-- snd_printd(KERN_ERR "frame %d active: %d\n", i, urb->iso_frame_desc[i].status);
-+ if (urb->iso_frame_desc[i].status && printk_ratelimit()) {
-+ snd_printdd("frame %d active: %d\n", i, urb->iso_frame_desc[i].status);
- // continue;
- }
- bytes = urb->iso_frame_desc[i].actual_length;
---
-1.7.9.5
-
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
deleted file mode 100644
index 5ab9509..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0013-ALSA-hda-Use-auto-parser-for-HP-laptops-with-cx20459.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 0f951c7e3066c834b47172ee36435129c7c1d978 Mon Sep 17 00:00:00 2001
-From: Takashi Iwai <tiwai at suse.de>
-Date: Tue, 10 Jan 2012 08:59:56 +0100
-Subject: [PATCH 013/129] ALSA: hda - Use auto-parser for HP laptops with
- cx20459 codec
-
-commit de4da59e480cdf1075b33dbaf8078fc87bc52241 upstream.
-
-These laptops can work well with the auto-parser and their BIOS setups,
-and in addition, the auto-parser fixes the problem with S3/S4 where
-the unsol event handling is killed after resume due to fallback to the
-single-cmd mode.
-
-Bugzilla: https://bugzilla.novell.com/show_bug.cgi?id=740115
-
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- sound/pci/hda/patch_conexant.c | 2 --
- 1 file changed, 2 deletions(-)
-
-diff --git a/sound/pci/hda/patch_conexant.c b/sound/pci/hda/patch_conexant.c
-index 0de2119..7072251 100644
---- a/sound/pci/hda/patch_conexant.c
-+++ b/sound/pci/hda/patch_conexant.c
-@@ -1120,8 +1120,6 @@ static const char * const cxt5045_models[CXT5045_MODELS] = {
-
- static const struct snd_pci_quirk cxt5045_cfg_tbl[] = {
- SND_PCI_QUIRK(0x103c, 0x30d5, "HP 530", CXT5045_LAPTOP_HP530),
-- SND_PCI_QUIRK_MASK(0x103c, 0xff00, 0x3000, "HP DV Series",
-- CXT5045_LAPTOP_HPSENSE),
- SND_PCI_QUIRK(0x1179, 0xff31, "Toshiba P105", CXT5045_LAPTOP_MICSENSE),
- SND_PCI_QUIRK(0x152d, 0x0753, "Benq R55E", CXT5045_BENQ),
- SND_PCI_QUIRK(0x1734, 0x10ad, "Fujitsu Si1520", CXT5045_LAPTOP_MICSENSE),
---
-1.7.9.5
-
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
deleted file mode 100644
index 5278905..0000000
--- 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
+++ /dev/null
@@ -1,58 +0,0 @@
-From 244e54a801fd96fbe05447599832c9eb110debeb Mon Sep 17 00:00:00 2001
-From: Takashi Iwai <tiwai at suse.de>
-Date: Tue, 10 Jan 2012 12:41:22 +0100
-Subject: [PATCH 014/129] ALSA: hda - Return the error from get_wcaps_type()
- for invalid NIDs
-
-commit 3a90274de3548ebb2aabfbf488cea8e275a73dc6 upstream.
-
-When an invalid NID is given, get_wcaps() returns zero as the error,
-but get_wcaps_type() takes it as the normal value and returns a bogus
-AC_WID_AUD_OUT value. This confuses the parser.
-
-With this patch, get_wcaps_type() returns -1 when value 0 is given,
-i.e. an invalid NID is passed to get_wcaps().
-
-Bugzilla: https://bugzilla.novell.com/show_bug.cgi?id=740118
-
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- sound/pci/hda/hda_local.h | 7 ++++++-
- sound/pci/hda/hda_proc.c | 2 ++
- 2 files changed, 8 insertions(+), 1 deletion(-)
-
-diff --git a/sound/pci/hda/hda_local.h b/sound/pci/hda/hda_local.h
-index 618ddad..368f0c5 100644
---- a/sound/pci/hda/hda_local.h
-+++ b/sound/pci/hda/hda_local.h
-@@ -487,7 +487,12 @@ static inline u32 get_wcaps(struct hda_codec *codec, hda_nid_t nid)
- }
-
- /* get the widget type from widget capability bits */
--#define get_wcaps_type(wcaps) (((wcaps) & AC_WCAP_TYPE) >> AC_WCAP_TYPE_SHIFT)
-+static inline int get_wcaps_type(unsigned int wcaps)
-+{
-+ if (!wcaps)
-+ return -1; /* invalid type */
-+ return (wcaps & AC_WCAP_TYPE) >> AC_WCAP_TYPE_SHIFT;
-+}
-
- static inline unsigned int get_wcaps_channels(u32 wcaps)
- {
-diff --git a/sound/pci/hda/hda_proc.c b/sound/pci/hda/hda_proc.c
-index 2c981b5..254ab52 100644
---- a/sound/pci/hda/hda_proc.c
-+++ b/sound/pci/hda/hda_proc.c
-@@ -54,6 +54,8 @@ static const char *get_wid_type_name(unsigned int wid_value)
- [AC_WID_BEEP] = "Beep Generator Widget",
- [AC_WID_VENDOR] = "Vendor Defined Widget",
- };
-+ if (wid_value == -1)
-+ return "UNKNOWN Widget";
- wid_value &= 0xf;
- if (names[wid_value])
- return names[wid_value];
---
-1.7.9.5
-
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
deleted file mode 100644
index 5284246..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0015-ALSA-hda-Fix-the-detection-of-Loopback-Mixing-contro.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From cf6e92f0c3bbf4cdbd62a8838b9b8f2153d9607a Mon Sep 17 00:00:00 2001
-From: Takashi Iwai <tiwai at suse.de>
-Date: Tue, 10 Jan 2012 15:16:02 +0100
-Subject: [PATCH 015/129] ALSA: hda - Fix the detection of "Loopback Mixing"
- control for VIA codecs
-
-commit 4808d12d1dddb046ec86425e5f6766f02e950292 upstream.
-
-Currently the driver checks only the out_mix_path[] for the primary
-output route for judging whether to create the loopback-mixing control
-or not. But, there are cases where aamix-routing is available only on
-headphone or speaker paths but not on the primary output path. So, the
-driver ignores such cases inappropriately.
-
-This patch fixes the check of the loopback-mixing control by testing
-all mix-routing paths.
-
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- sound/pci/hda/patch_via.c | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/sound/pci/hda/patch_via.c b/sound/pci/hda/patch_via.c
-index b513762..8d69e59 100644
---- a/sound/pci/hda/patch_via.c
-+++ b/sound/pci/hda/patch_via.c
-@@ -2200,7 +2200,10 @@ static int via_auto_create_loopback_switch(struct hda_codec *codec)
- {
- struct via_spec *spec = codec->spec;
-
-- if (!spec->aa_mix_nid || !spec->out_mix_path.depth)
-+ if (!spec->aa_mix_nid)
-+ return 0; /* no loopback switching available */
-+ if (!(spec->out_mix_path.depth || spec->hp_mix_path.depth ||
-+ spec->speaker_path.depth))
- return 0; /* no loopback switching available */
- if (!via_clone_control(spec, &via_aamix_ctl_enum))
- return -ENOMEM;
---
-1.7.9.5
-
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
deleted file mode 100644
index 457ebc2..0000000
--- 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
+++ /dev/null
@@ -1,92 +0,0 @@
-From 2fb2fe7e67d82706d84fdcf8876c28958c69998b Mon Sep 17 00:00:00 2001
-From: Takashi Iwai <tiwai at suse.de>
-Date: Wed, 11 Jan 2012 12:34:11 +0100
-Subject: [PATCH 016/129] ALSA: hda - Fix the lost power-setup of seconary
- pins after PM resume
-
-commit f2cbba7602383cd9cdd21f0a5d0b8bd1aad47b33 upstream.
-
-When multiple headphone or other detectable output pins are present,
-the power-map has to be updated after resume appropriately, but the
-current driver doesn't check all pins but only the first pin (since
-it's enough to check it for the mute-behavior). This resulted in the
-silent output from the secondary outputs after PM resume.
-
-This patch fixes the problem by checking all pins at (re-)init time.
-
-Bugzilla: https://bugzilla.novell.com/show_bug.cgi?id=740347
-
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- sound/pci/hda/patch_sigmatel.c | 36 +++++++++++++++++++++++-------------
- 1 file changed, 23 insertions(+), 13 deletions(-)
-
-diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c
-index 616678f..a87b260 100644
---- a/sound/pci/hda/patch_sigmatel.c
-+++ b/sound/pci/hda/patch_sigmatel.c
-@@ -4326,6 +4326,27 @@ static void stac_store_hints(struct hda_codec *codec)
- }
- }
-
-+static void stac_issue_unsol_events(struct hda_codec *codec, int num_pins,
-+ const hda_nid_t *pins)
-+{
-+ while (num_pins--)
-+ stac_issue_unsol_event(codec, *pins++);
-+}
-+
-+/* fake event to set up pins */
-+static void stac_fake_hp_events(struct hda_codec *codec)
-+{
-+ struct sigmatel_spec *spec = codec->spec;
-+
-+ if (spec->autocfg.hp_outs)
-+ stac_issue_unsol_events(codec, spec->autocfg.hp_outs,
-+ spec->autocfg.hp_pins);
-+ if (spec->autocfg.line_outs &&
-+ spec->autocfg.line_out_pins[0] != spec->autocfg.hp_pins[0])
-+ stac_issue_unsol_events(codec, spec->autocfg.line_outs,
-+ spec->autocfg.line_out_pins);
-+}
-+
- static int stac92xx_init(struct hda_codec *codec)
- {
- struct sigmatel_spec *spec = codec->spec;
-@@ -4376,10 +4397,7 @@ static int stac92xx_init(struct hda_codec *codec)
- stac92xx_auto_set_pinctl(codec, spec->autocfg.line_out_pins[0],
- AC_PINCTL_OUT_EN);
- /* fake event to set up pins */
-- if (cfg->hp_pins[0])
-- stac_issue_unsol_event(codec, cfg->hp_pins[0]);
-- else if (cfg->line_out_pins[0])
-- stac_issue_unsol_event(codec, cfg->line_out_pins[0]);
-+ stac_fake_hp_events(codec);
- } else {
- stac92xx_auto_init_multi_out(codec);
- stac92xx_auto_init_hp_out(codec);
-@@ -5028,19 +5046,11 @@ static void stac927x_proc_hook(struct snd_info_buffer *buffer,
- #ifdef CONFIG_PM
- static int stac92xx_resume(struct hda_codec *codec)
- {
-- struct sigmatel_spec *spec = codec->spec;
--
- stac92xx_init(codec);
- snd_hda_codec_resume_amp(codec);
- snd_hda_codec_resume_cache(codec);
- /* fake event to set up pins again to override cached values */
-- if (spec->hp_detect) {
-- if (spec->autocfg.hp_pins[0])
-- stac_issue_unsol_event(codec, spec->autocfg.hp_pins[0]);
-- else if (spec->autocfg.line_out_pins[0])
-- stac_issue_unsol_event(codec,
-- spec->autocfg.line_out_pins[0]);
-- }
-+ stac_fake_hp_events(codec);
- return 0;
- }
-
---
-1.7.9.5
-
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
deleted file mode 100644
index f39bef5..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0017-drm-radeon-kms-workaround-invalid-AVI-infoframe-chec.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 27ce68d3d7c9f0815bb269da0495aa675eebf846 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5 at gmail.com>
-Date: Fri, 23 Dec 2011 20:32:18 +0100
-Subject: [PATCH 017/129] drm/radeon/kms: workaround invalid AVI infoframe
- checksum issue
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit 92db7f6c860b8190571a9dc1fcbc16d003422fe8 upstream.
-
-This change was verified to fix both issues with no video I've
-investigated. I've also checked checksum calculation with fglrx on:
-RV620, HD54xx, HD5450, HD6310, HD6320.
-
-Signed-off-by: Rafał Miłecki <zajec5 at gmail.com>
-Signed-off-by: Dave Airlie <airlied at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/gpu/drm/radeon/r600_hdmi.c | 7 +++++++
- 1 file changed, 7 insertions(+)
-
-diff --git a/drivers/gpu/drm/radeon/r600_hdmi.c b/drivers/gpu/drm/radeon/r600_hdmi.c
-index f5ac7e7..c45d921 100644
---- a/drivers/gpu/drm/radeon/r600_hdmi.c
-+++ b/drivers/gpu/drm/radeon/r600_hdmi.c
-@@ -196,6 +196,13 @@ static void r600_hdmi_videoinfoframe(
- frame[0xD] = (right_bar >> 8);
-
- r600_hdmi_infoframe_checksum(0x82, 0x02, 0x0D, frame);
-+ /* Our header values (type, version, length) should be alright, Intel
-+ * is using the same. Checksum function also seems to be OK, it works
-+ * fine for audio infoframe. However calculated value is always lower
-+ * by 2 in comparison to fglrx. It breaks displaying anything in case
-+ * of TVs that strictly check the checksum. Hack it manually here to
-+ * workaround this issue. */
-+ frame[0x0] += 2;
-
- WREG32(offset+R600_HDMI_VIDEOINFOFRAME_0,
- frame[0x0] | (frame[0x1] << 8) | (frame[0x2] << 16) | (frame[0x3] << 24));
---
-1.7.9.5
-
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
deleted file mode 100644
index 8eb632d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0018-drm-radeon-kms-disable-writeback-on-pre-R300-asics.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 4080c93fb98e70e64d31c2ab2bd036a940c0807b Mon Sep 17 00:00:00 2001
-From: Alex Deucher <alexander.deucher at amd.com>
-Date: Tue, 3 Jan 2012 09:48:38 -0500
-Subject: [PATCH 018/129] drm/radeon/kms: disable writeback on pre-R300 asics
-
-commit 28eebb703e28bc455ba704adb1026f76649b768c upstream.
-
-We often end up missing fences on older asics with
-writeback enabled which leads to delays in the userspace
-accel code, so just disable it by default on those asics.
-
-Reported-by: Helge Deller <deller at gmx.de>
-Reported-by: Dave Airlie <airlied at redhat.com>
-Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
-Signed-off-by: Dave Airlie <airlied at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/gpu/drm/radeon/radeon_device.c | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c
-index c4d00a1..9b39145 100644
---- a/drivers/gpu/drm/radeon/radeon_device.c
-+++ b/drivers/gpu/drm/radeon/radeon_device.c
-@@ -224,8 +224,11 @@ int radeon_wb_init(struct radeon_device *rdev)
- if (radeon_no_wb == 1)
- rdev->wb.enabled = false;
- else {
-- /* often unreliable on AGP */
- if (rdev->flags & RADEON_IS_AGP) {
-+ /* often unreliable on AGP */
-+ rdev->wb.enabled = false;
-+ } else if (rdev->family < CHIP_R300) {
-+ /* often unreliable on pre-r300 */
- rdev->wb.enabled = false;
- } else {
- rdev->wb.enabled = true;
---
-1.7.9.5
-
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
deleted file mode 100644
index 64a0b20..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0019-radeon-Fix-disabling-PCI-bus-mastering-on-big-endian.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-From 73267cb0dea18d38a023f20c110e79b742c030c9 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Michel=20D=C3=A4nzer?= <michel.daenzer at amd.com>
-Date: Thu, 5 Jan 2012 18:42:17 +0100
-Subject: [PATCH 019/129] radeon: Fix disabling PCI bus mastering on big
- endian hosts.
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit 3df96909b75835d487a9178761622b0cbd7310d4 upstream.
-
-It would previously write basically random bits to PCI configuration space...
-Not very surprising that the GPU tended to stop responding completely. The
-resulting MCE even froze the whole machine sometimes.
-
-Now resetting the GPU after a lockup has at least a fighting chance of
-succeeding.
-
-Signed-off-by: Michel Dänzer <michel.daenzer at amd.com>
-Reviewed-by: Alex Deucher <alexander.deucher at amd.com>
-Signed-off-by: Dave Airlie <airlied at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/gpu/drm/radeon/r100.c | 5 +++--
- drivers/gpu/drm/radeon/rs600.c | 4 ++--
- 2 files changed, 5 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/gpu/drm/radeon/r100.c b/drivers/gpu/drm/radeon/r100.c
-index bfc08f6..31b0d1a 100644
---- a/drivers/gpu/drm/radeon/r100.c
-+++ b/drivers/gpu/drm/radeon/r100.c
-@@ -2177,6 +2177,7 @@ bool r100_gpu_is_lockup(struct radeon_device *rdev)
- void r100_bm_disable(struct radeon_device *rdev)
- {
- u32 tmp;
-+ u16 tmp16;
-
- /* disable bus mastering */
- tmp = RREG32(R_000030_BUS_CNTL);
-@@ -2187,8 +2188,8 @@ void r100_bm_disable(struct radeon_device *rdev)
- WREG32(R_000030_BUS_CNTL, (tmp & 0xFFFFFFFF) | 0x00000040);
- tmp = RREG32(RADEON_BUS_CNTL);
- mdelay(1);
-- pci_read_config_word(rdev->pdev, 0x4, (u16*)&tmp);
-- pci_write_config_word(rdev->pdev, 0x4, tmp & 0xFFFB);
-+ pci_read_config_word(rdev->pdev, 0x4, &tmp16);
-+ pci_write_config_word(rdev->pdev, 0x4, tmp16 & 0xFFFB);
- mdelay(1);
- }
-
-diff --git a/drivers/gpu/drm/radeon/rs600.c b/drivers/gpu/drm/radeon/rs600.c
-index b1053d6..c259e21 100644
---- a/drivers/gpu/drm/radeon/rs600.c
-+++ b/drivers/gpu/drm/radeon/rs600.c
-@@ -324,10 +324,10 @@ void rs600_hpd_fini(struct radeon_device *rdev)
-
- void rs600_bm_disable(struct radeon_device *rdev)
- {
-- u32 tmp;
-+ u16 tmp;
-
- /* disable bus mastering */
-- pci_read_config_word(rdev->pdev, 0x4, (u16*)&tmp);
-+ pci_read_config_word(rdev->pdev, 0x4, &tmp);
- pci_write_config_word(rdev->pdev, 0x4, tmp & 0xFFFB);
- mdelay(1);
- }
---
-1.7.9.5
-
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
deleted file mode 100644
index 68ba056..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0020-pnfs-obj-pNFS-errors-are-communicated-on-iodata-pnfs.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From 873440a8680a5cf108ce5372f065fec762b7f73c Mon Sep 17 00:00:00 2001
-From: Boaz Harrosh <bharrosh at panasas.com>
-Date: Fri, 6 Jan 2012 09:28:12 +0200
-Subject: [PATCH 020/129] pnfs-obj: pNFS errors are communicated on
- iodata->pnfs_error
-
-commit 5c0b4129c07b902b27d3f3ebc087757f534a3abd upstream.
-
-Some time along the way pNFS IO errors were switched to
-communicate with a special iodata->pnfs_error member instead
-of the regular RPC members. But objlayout was not switched
-over.
-
-Fix that!
-Without this fix any IO error is hanged, because IO is not
-switched to MDS and pages are never cleared or read.
-
-[Applies to 3.2.0. Same bug different patch for 3.1/0 Kernels]
-Signed-off-by: Boaz Harrosh <bharrosh at panasas.com>
-Signed-off-by: Trond Myklebust <Trond.Myklebust at netapp.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- fs/nfs/objlayout/objlayout.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/fs/nfs/objlayout/objlayout.c b/fs/nfs/objlayout/objlayout.c
-index 72074e3..b3c2903 100644
---- a/fs/nfs/objlayout/objlayout.c
-+++ b/fs/nfs/objlayout/objlayout.c
-@@ -254,6 +254,8 @@ objlayout_read_done(struct objlayout_io_res *oir, ssize_t status, bool sync)
- oir->status = rdata->task.tk_status = status;
- if (status >= 0)
- rdata->res.count = status;
-+ else
-+ rdata->pnfs_error = status;
- objlayout_iodone(oir);
- /* must not use oir after this point */
-
-@@ -334,6 +336,8 @@ objlayout_write_done(struct objlayout_io_res *oir, ssize_t status, bool sync)
- if (status >= 0) {
- wdata->res.count = status;
- wdata->verf.committed = oir->committed;
-+ } else {
-+ wdata->pnfs_error = status;
- }
- objlayout_iodone(oir);
- /* must not use oir after this point */
---
-1.7.9.5
-
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
deleted file mode 100644
index b05bc19..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0021-pnfs-obj-Must-return-layout-on-IO-error.patch
+++ /dev/null
@@ -1,92 +0,0 @@
-From e20497d523b9954e6fe3a3cd333d1286e3c241ed Mon Sep 17 00:00:00 2001
-From: Boaz Harrosh <bharrosh at panasas.com>
-Date: Fri, 6 Jan 2012 09:31:20 +0200
-Subject: [PATCH 021/129] pnfs-obj: Must return layout on IO error
-
-commit fe0fe83585f88346557868a803a479dfaaa0688a upstream.
-
-As mandated by the standard. In case of an IO error, a pNFS
-objects layout driver must return it's layout. This is because
-all device errors are reported to the server as part of the
-layout return buffer.
-
-This is implemented the same way PNFS_LAYOUTRET_ON_SETATTR
-is done, through a bit flag on the pnfs_layoutdriver_type->flags
-member. The flag is set by the layout driver that wants a
-layout_return preformed at pnfs_ld_{write,read}_done in case
-of an error.
-(Though I have not defined a wrapper like pnfs_ld_layoutret_on_setattr
- because this code is never called outside of pnfs.c and pnfs IO
- paths)
-
-Without this patch 3.[0-2] Kernels leak memory and have an annoying
-WARN_ON after every IO error utilizing the pnfs-obj driver.
-
-Signed-off-by: Boaz Harrosh <bharrosh at panasas.com>
-Signed-off-by: Trond Myklebust <Trond.Myklebust at netapp.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- fs/nfs/objlayout/objio_osd.c | 3 ++-
- fs/nfs/pnfs.c | 12 ++++++++++++
- fs/nfs/pnfs.h | 1 +
- 3 files changed, 15 insertions(+), 1 deletion(-)
-
-diff --git a/fs/nfs/objlayout/objio_osd.c b/fs/nfs/objlayout/objio_osd.c
-index c807ab9..55d0128 100644
---- a/fs/nfs/objlayout/objio_osd.c
-+++ b/fs/nfs/objlayout/objio_osd.c
-@@ -551,7 +551,8 @@ static const struct nfs_pageio_ops objio_pg_write_ops = {
- static struct pnfs_layoutdriver_type objlayout_type = {
- .id = LAYOUT_OSD2_OBJECTS,
- .name = "LAYOUT_OSD2_OBJECTS",
-- .flags = PNFS_LAYOUTRET_ON_SETATTR,
-+ .flags = PNFS_LAYOUTRET_ON_SETATTR |
-+ PNFS_LAYOUTRET_ON_ERROR,
-
- .alloc_layout_hdr = objlayout_alloc_layout_hdr,
- .free_layout_hdr = objlayout_free_layout_hdr,
-diff --git a/fs/nfs/pnfs.c b/fs/nfs/pnfs.c
-index 8e672a2..f881a63 100644
---- a/fs/nfs/pnfs.c
-+++ b/fs/nfs/pnfs.c
-@@ -1178,6 +1178,15 @@ void pnfs_ld_write_done(struct nfs_write_data *data)
- put_lseg(data->lseg);
- data->lseg = NULL;
- dprintk("pnfs write error = %d\n", data->pnfs_error);
-+ if (NFS_SERVER(data->inode)->pnfs_curr_ld->flags &
-+ PNFS_LAYOUTRET_ON_ERROR) {
-+ /* Don't lo_commit on error, Server will needs to
-+ * preform a file recovery.
-+ */
-+ clear_bit(NFS_INO_LAYOUTCOMMIT,
-+ &NFS_I(data->inode)->flags);
-+ pnfs_return_layout(data->inode);
-+ }
- }
- data->mds_ops->rpc_release(data);
- }
-@@ -1267,6 +1276,9 @@ static void pnfs_ld_handle_read_error(struct nfs_read_data *data)
- put_lseg(data->lseg);
- data->lseg = NULL;
- dprintk("pnfs write error = %d\n", data->pnfs_error);
-+ if (NFS_SERVER(data->inode)->pnfs_curr_ld->flags &
-+ PNFS_LAYOUTRET_ON_ERROR)
-+ pnfs_return_layout(data->inode);
-
- nfs_pageio_init_read_mds(&pgio, data->inode);
-
-diff --git a/fs/nfs/pnfs.h b/fs/nfs/pnfs.h
-index 1509530..53d593a 100644
---- a/fs/nfs/pnfs.h
-+++ b/fs/nfs/pnfs.h
-@@ -68,6 +68,7 @@ enum {
- enum layoutdriver_policy_flags {
- /* Should the pNFS client commit and return the layout upon a setattr */
- PNFS_LAYOUTRET_ON_SETATTR = 1 << 0,
-+ PNFS_LAYOUTRET_ON_ERROR = 1 << 1,
- };
-
- struct nfs4_deviceid_node;
---
-1.7.9.5
-
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
deleted file mode 100644
index ceac5a9..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0022-NFS-Retry-mounting-NFSROOT.patch
+++ /dev/null
@@ -1,94 +0,0 @@
-From 51a699a0c53b199599fe16688248143ee98a167e Mon Sep 17 00:00:00 2001
-From: Chuck Lever <chuck.lever at oracle.com>
-Date: Mon, 5 Dec 2011 15:40:30 -0500
-Subject: [PATCH 022/129] NFS: Retry mounting NFSROOT
-
-commit 43717c7daebf10b43f12e68512484b3095bb1ba5 upstream.
-
-Lukas Razik <linux at razik.name> reports that on his SPARC system,
-booting with an NFS root file system stopped working after commit
-56463e50 "NFS: Use super.c for NFSROOT mount option parsing."
-
-We found that the network switch to which Lukas' client was attached
-was delaying access to the LAN after the client's NIC driver reported
-that its link was up. The delay was longer than the timeouts used in
-the NFS client during mounting.
-
-NFSROOT worked for Lukas before commit 56463e50 because in those
-kernels, the client's first operation was an rpcbind request to
-determine which port the NFS server was listening on. When that
-request failed after a long timeout, the client simply selected the
-default NFS port (2049). By that time the switch was allowing access
-to the LAN, and the mount succeeded.
-
-Neither of these client behaviors is desirable, so reverting 56463e50
-is really not a choice. Instead, introduce a mechanism that retries
-the NFSROOT mount request several times. This is the same tactic that
-normal user space NFS mounts employ to overcome server and network
-delays.
-
-Signed-off-by: Lukas Razik <linux at razik.name>
-[ cel: match kernel coding style, add proper patch description ]
-[ cel: add exponential back-off ]
-Signed-off-by: Chuck Lever <chuck.lever at oracle.com>
-Tested-by: Lukas Razik <linux at razik.name>
-Signed-off-by: Trond Myklebust <Trond.Myklebust at netapp.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- init/do_mounts.c | 35 +++++++++++++++++++++++++++++++----
- 1 file changed, 31 insertions(+), 4 deletions(-)
-
-diff --git a/init/do_mounts.c b/init/do_mounts.c
-index 0f6e1d9..db6e5ee 100644
---- a/init/do_mounts.c
-+++ b/init/do_mounts.c
-@@ -398,15 +398,42 @@ out:
- }
-
- #ifdef CONFIG_ROOT_NFS
-+
-+#define NFSROOT_TIMEOUT_MIN 5
-+#define NFSROOT_TIMEOUT_MAX 30
-+#define NFSROOT_RETRY_MAX 5
-+
- static int __init mount_nfs_root(void)
- {
- char *root_dev, *root_data;
-+ unsigned int timeout;
-+ int try, err;
-
-- if (nfs_root_data(&root_dev, &root_data) != 0)
-- return 0;
-- if (do_mount_root(root_dev, "nfs", root_mountflags, root_data) != 0)
-+ err = nfs_root_data(&root_dev, &root_data);
-+ if (err != 0)
- return 0;
-- return 1;
-+
-+ /*
-+ * The server or network may not be ready, so try several
-+ * times. Stop after a few tries in case the client wants
-+ * to fall back to other boot methods.
-+ */
-+ timeout = NFSROOT_TIMEOUT_MIN;
-+ for (try = 1; ; try++) {
-+ err = do_mount_root(root_dev, "nfs",
-+ root_mountflags, root_data);
-+ if (err == 0)
-+ return 1;
-+ if (try > NFSROOT_RETRY_MAX)
-+ break;
-+
-+ /* Wait, in case the server refused us immediately */
-+ ssleep(timeout);
-+ timeout <<= 1;
-+ if (timeout > NFSROOT_TIMEOUT_MAX)
-+ timeout = NFSROOT_TIMEOUT_MAX;
-+ }
-+ return 0;
- }
- #endif
-
---
-1.7.9.5
-
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
deleted file mode 100644
index 34ea494..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0023-NFSv4.1-fix-backchannel-slotid-off-by-one-bug.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 4d12390d5a9b1c151416e0fbef4702455f4a2626 Mon Sep 17 00:00:00 2001
-From: Andy Adamson <andros at netapp.com>
-Date: Wed, 9 Nov 2011 13:58:20 -0500
-Subject: [PATCH 023/129] NFSv4.1: fix backchannel slotid off-by-one bug
-
-commit 61f2e5106582d02f30b6807e3f9c07463c572ccb upstream.
-
-Signed-off-by: Andy Adamson <andros at netapp.com>
-Signed-off-by: Trond Myklebust <Trond.Myklebust at netapp.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- fs/nfs/callback_proc.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/fs/nfs/callback_proc.c b/fs/nfs/callback_proc.c
-index 43926ad..54cea8a 100644
---- a/fs/nfs/callback_proc.c
-+++ b/fs/nfs/callback_proc.c
-@@ -339,7 +339,7 @@ validate_seqid(struct nfs4_slot_table *tbl, struct cb_sequenceargs * args)
- dprintk("%s enter. slotid %d seqid %d\n",
- __func__, args->csa_slotid, args->csa_sequenceid);
-
-- if (args->csa_slotid > NFS41_BC_MAX_CALLBACKS)
-+ if (args->csa_slotid >= NFS41_BC_MAX_CALLBACKS)
- return htonl(NFS4ERR_BADSLOT);
-
- slot = tbl->slots + args->csa_slotid;
---
-1.7.9.5
-
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
deleted file mode 100644
index 70d96b3..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0024-NFS-fix-recent-breakage-to-NFS-error-handling.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From 7aab7b372a174e80233a74ff10d55ded1ea28c2f Mon Sep 17 00:00:00 2001
-From: NeilBrown <neilb at suse.de>
-Date: Wed, 16 Nov 2011 11:46:31 +1100
-Subject: [PATCH 024/129] NFS - fix recent breakage to NFS error handling.
-
-commit 2edb6bc3852c681c0d948245bd55108dc6407604 upstream.
-
- From c6d615d2b97fe305cbf123a8751ced859dca1d5e Mon Sep 17 00:00:00 2001
- From: NeilBrown <neilb at suse.de>
- Date: Wed, 16 Nov 2011 09:39:05 +1100
- Subject: NFS - fix recent breakage to NFS error handling.
-
-commit 02c24a82187d5a628c68edfe71ae60dc135cd178 made a small and
-presumably unintended change to write error handling in NFS.
-
-Previously an error from filemap_write_and_wait_range would only be of
-interest if nfs_file_fsync did not return an error. After this commit,
-an error from filemap_write_and_wait_range would mean that (the rest of)
-nfs_file_fsync would not even be called.
-
-This means that:
- 1/ you are more likely to see EIO than e.g. EDQUOT or ENOSPC.
- 2/ NFS_CONTEXT_ERROR_WRITE remains set for longer so more writes are
- synchronous.
-
-This patch restores previous behaviour.
-
-Cc: Josef Bacik <josef at redhat.com>
-Cc: Jan Kara <jack at suse.cz>
-Cc: Al Viro <viro at zeniv.linux.org.uk>
-Signed-off-by: NeilBrown <neilb at suse.de>
-Signed-off-by: Trond Myklebust <Trond.Myklebust at netapp.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- fs/nfs/file.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/fs/nfs/file.c b/fs/nfs/file.c
-index 606ef0f..c43a452 100644
---- a/fs/nfs/file.c
-+++ b/fs/nfs/file.c
-@@ -272,13 +272,13 @@ nfs_file_fsync(struct file *file, loff_t start, loff_t end, int datasync)
- datasync);
-
- ret = filemap_write_and_wait_range(inode->i_mapping, start, end);
-- if (ret)
-- return ret;
- mutex_lock(&inode->i_mutex);
-
- nfs_inc_stats(inode, NFSIOS_VFSFSYNC);
- have_error = test_and_clear_bit(NFS_CONTEXT_ERROR_WRITE, &ctx->flags);
- status = nfs_commit_inode(inode, FLUSH_SYNC);
-+ if (status >= 0 && ret < 0)
-+ status = ret;
- have_error |= test_bit(NFS_CONTEXT_ERROR_WRITE, &ctx->flags);
- if (have_error)
- ret = xchg(&ctx->error, 0);
---
-1.7.9.5
-
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
deleted file mode 100644
index f57d732..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0025-NFSv4-include-bitmap-in-nfsv4-get-acl-data.patch
+++ /dev/null
@@ -1,313 +0,0 @@
-From 0ae2afe3f515d5e56beeefa0f0e5fd23cb358f4a Mon Sep 17 00:00:00 2001
-From: Andy Adamson <andros at netapp.com>
-Date: Wed, 7 Dec 2011 11:55:27 -0500
-Subject: [PATCH 025/129] NFSv4: include bitmap in nfsv4 get acl data
-
-commit bf118a342f10dafe44b14451a1392c3254629a1f upstream.
-
-The NFSv4 bitmap size is unbounded: a server can return an arbitrary
-sized bitmap in an FATTR4_WORD0_ACL request. Replace using the
-nfs4_fattr_bitmap_maxsz as a guess to the maximum bitmask returned by a server
-with the inclusion of the bitmap (xdr length plus bitmasks) and the acl data
-xdr length to the (cached) acl page data.
-
-This is a general solution to commit e5012d1f "NFSv4.1: update
-nfs4_fattr_bitmap_maxsz" and fixes hitting a BUG_ON in xdr_shrink_bufhead
-when getting ACLs.
-
-Fix a bug in decode_getacl that returned -EINVAL on ACLs > page when getxattr
-was called with a NULL buffer, preventing ACL > PAGE_SIZE from being retrieved.
-
-Signed-off-by: Andy Adamson <andros at netapp.com>
-Signed-off-by: Trond Myklebust <Trond.Myklebust at netapp.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- fs/nfs/nfs4proc.c | 96 ++++++++++++++++++++++++++------------------
- fs/nfs/nfs4xdr.c | 31 ++++++++++----
- include/linux/nfs_xdr.h | 5 +++
- include/linux/sunrpc/xdr.h | 2 +
- net/sunrpc/xdr.c | 3 +-
- 5 files changed, 89 insertions(+), 48 deletions(-)
-
-diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
-index d9f4d78..055d702 100644
---- a/fs/nfs/nfs4proc.c
-+++ b/fs/nfs/nfs4proc.c
-@@ -3430,19 +3430,6 @@ static inline int nfs4_server_supports_acls(struct nfs_server *server)
- */
- #define NFS4ACL_MAXPAGES (XATTR_SIZE_MAX >> PAGE_CACHE_SHIFT)
-
--static void buf_to_pages(const void *buf, size_t buflen,
-- struct page **pages, unsigned int *pgbase)
--{
-- const void *p = buf;
--
-- *pgbase = offset_in_page(buf);
-- p -= *pgbase;
-- while (p < buf + buflen) {
-- *(pages++) = virt_to_page(p);
-- p += PAGE_CACHE_SIZE;
-- }
--}
--
- static int buf_to_pages_noslab(const void *buf, size_t buflen,
- struct page **pages, unsigned int *pgbase)
- {
-@@ -3539,9 +3526,19 @@ out:
- nfs4_set_cached_acl(inode, acl);
- }
-
-+/*
-+ * The getxattr API returns the required buffer length when called with a
-+ * NULL buf. The NFSv4 acl tool then calls getxattr again after allocating
-+ * the required buf. On a NULL buf, we send a page of data to the server
-+ * guessing that the ACL request can be serviced by a page. If so, we cache
-+ * up to the page of ACL data, and the 2nd call to getxattr is serviced by
-+ * the cache. If not so, we throw away the page, and cache the required
-+ * length. The next getxattr call will then produce another round trip to
-+ * the server, this time with the input buf of the required size.
-+ */
- static ssize_t __nfs4_get_acl_uncached(struct inode *inode, void *buf, size_t buflen)
- {
-- struct page *pages[NFS4ACL_MAXPAGES];
-+ struct page *pages[NFS4ACL_MAXPAGES] = {NULL, };
- struct nfs_getaclargs args = {
- .fh = NFS_FH(inode),
- .acl_pages = pages,
-@@ -3556,41 +3553,60 @@ static ssize_t __nfs4_get_acl_uncached(struct inode *inode, void *buf, size_t bu
- .rpc_argp = &args,
- .rpc_resp = &res,
- };
-- struct page *localpage = NULL;
-- int ret;
-+ int ret = -ENOMEM, npages, i, acl_len = 0;
-
-- if (buflen < PAGE_SIZE) {
-- /* As long as we're doing a round trip to the server anyway,
-- * let's be prepared for a page of acl data. */
-- localpage = alloc_page(GFP_KERNEL);
-- resp_buf = page_address(localpage);
-- if (localpage == NULL)
-- return -ENOMEM;
-- args.acl_pages[0] = localpage;
-- args.acl_pgbase = 0;
-- args.acl_len = PAGE_SIZE;
-- } else {
-- resp_buf = buf;
-- buf_to_pages(buf, buflen, args.acl_pages, &args.acl_pgbase);
-+ npages = (buflen + PAGE_SIZE - 1) >> PAGE_SHIFT;
-+ /* As long as we're doing a round trip to the server anyway,
-+ * let's be prepared for a page of acl data. */
-+ if (npages == 0)
-+ npages = 1;
-+
-+ for (i = 0; i < npages; i++) {
-+ pages[i] = alloc_page(GFP_KERNEL);
-+ if (!pages[i])
-+ goto out_free;
-+ }
-+ if (npages > 1) {
-+ /* for decoding across pages */
-+ args.acl_scratch = alloc_page(GFP_KERNEL);
-+ if (!args.acl_scratch)
-+ goto out_free;
- }
-- ret = nfs4_call_sync(NFS_SERVER(inode)->client, NFS_SERVER(inode), &msg, &args.seq_args, &res.seq_res, 0);
-+ args.acl_len = npages * PAGE_SIZE;
-+ args.acl_pgbase = 0;
-+ /* Let decode_getfacl know not to fail if the ACL data is larger than
-+ * the page we send as a guess */
-+ if (buf == NULL)
-+ res.acl_flags |= NFS4_ACL_LEN_REQUEST;
-+ resp_buf = page_address(pages[0]);
-+
-+ dprintk("%s buf %p buflen %ld npages %d args.acl_len %ld\n",
-+ __func__, buf, buflen, npages, args.acl_len);
-+ ret = nfs4_call_sync(NFS_SERVER(inode)->client, NFS_SERVER(inode),
-+ &msg, &args.seq_args, &res.seq_res, 0);
- if (ret)
- goto out_free;
-- if (res.acl_len > args.acl_len)
-- nfs4_write_cached_acl(inode, NULL, res.acl_len);
-+
-+ acl_len = res.acl_len - res.acl_data_offset;
-+ if (acl_len > args.acl_len)
-+ nfs4_write_cached_acl(inode, NULL, acl_len);
- else
-- nfs4_write_cached_acl(inode, resp_buf, res.acl_len);
-+ nfs4_write_cached_acl(inode, resp_buf + res.acl_data_offset,
-+ acl_len);
- if (buf) {
- ret = -ERANGE;
-- if (res.acl_len > buflen)
-+ if (acl_len > buflen)
- goto out_free;
-- if (localpage)
-- memcpy(buf, resp_buf, res.acl_len);
-+ _copy_from_pages(buf, pages, res.acl_data_offset,
-+ res.acl_len);
- }
-- ret = res.acl_len;
-+ ret = acl_len;
- out_free:
-- if (localpage)
-- __free_page(localpage);
-+ for (i = 0; i < npages; i++)
-+ if (pages[i])
-+ __free_page(pages[i]);
-+ if (args.acl_scratch)
-+ __free_page(args.acl_scratch);
- return ret;
- }
-
-@@ -3621,6 +3637,8 @@ static ssize_t nfs4_proc_get_acl(struct inode *inode, void *buf, size_t buflen)
- nfs_zap_acl_cache(inode);
- ret = nfs4_read_cached_acl(inode, buf, buflen);
- if (ret != -ENOENT)
-+ /* -ENOENT is returned if there is no ACL or if there is an ACL
-+ * but no cached acl data, just the acl length */
- return ret;
- return nfs4_get_acl_uncached(inode, buf, buflen);
- }
-diff --git a/fs/nfs/nfs4xdr.c b/fs/nfs/nfs4xdr.c
-index e6161b2..dcaf693 100644
---- a/fs/nfs/nfs4xdr.c
-+++ b/fs/nfs/nfs4xdr.c
-@@ -2517,11 +2517,13 @@ static void nfs4_xdr_enc_getacl(struct rpc_rqst *req, struct xdr_stream *xdr,
- encode_compound_hdr(xdr, req, &hdr);
- encode_sequence(xdr, &args->seq_args, &hdr);
- encode_putfh(xdr, args->fh, &hdr);
-- replen = hdr.replen + op_decode_hdr_maxsz + nfs4_fattr_bitmap_maxsz + 1;
-+ replen = hdr.replen + op_decode_hdr_maxsz + 1;
- encode_getattr_two(xdr, FATTR4_WORD0_ACL, 0, &hdr);
-
- xdr_inline_pages(&req->rq_rcv_buf, replen << 2,
- args->acl_pages, args->acl_pgbase, args->acl_len);
-+ xdr_set_scratch_buffer(xdr, page_address(args->acl_scratch), PAGE_SIZE);
-+
- encode_nops(&hdr);
- }
-
-@@ -4957,17 +4959,18 @@ decode_restorefh(struct xdr_stream *xdr)
- }
-
- static int decode_getacl(struct xdr_stream *xdr, struct rpc_rqst *req,
-- size_t *acl_len)
-+ struct nfs_getaclres *res)
- {
-- __be32 *savep;
-+ __be32 *savep, *bm_p;
- uint32_t attrlen,
- bitmap[3] = {0};
- struct kvec *iov = req->rq_rcv_buf.head;
- int status;
-
-- *acl_len = 0;
-+ res->acl_len = 0;
- if ((status = decode_op_hdr(xdr, OP_GETATTR)) != 0)
- goto out;
-+ bm_p = xdr->p;
- if ((status = decode_attr_bitmap(xdr, bitmap)) != 0)
- goto out;
- if ((status = decode_attr_length(xdr, &attrlen, &savep)) != 0)
-@@ -4979,18 +4982,30 @@ static int decode_getacl(struct xdr_stream *xdr, struct rpc_rqst *req,
- size_t hdrlen;
- u32 recvd;
-
-+ /* The bitmap (xdr len + bitmaps) and the attr xdr len words
-+ * are stored with the acl data to handle the problem of
-+ * variable length bitmaps.*/
-+ xdr->p = bm_p;
-+ res->acl_data_offset = be32_to_cpup(bm_p) + 2;
-+ res->acl_data_offset <<= 2;
-+
- /* We ignore &savep and don't do consistency checks on
- * the attr length. Let userspace figure it out.... */
- hdrlen = (u8 *)xdr->p - (u8 *)iov->iov_base;
-+ attrlen += res->acl_data_offset;
- recvd = req->rq_rcv_buf.len - hdrlen;
- if (attrlen > recvd) {
-- dprintk("NFS: server cheating in getattr"
-- " acl reply: attrlen %u > recvd %u\n",
-+ if (res->acl_flags & NFS4_ACL_LEN_REQUEST) {
-+ /* getxattr interface called with a NULL buf */
-+ res->acl_len = attrlen;
-+ goto out;
-+ }
-+ dprintk("NFS: acl reply: attrlen %u > recvd %u\n",
- attrlen, recvd);
- return -EINVAL;
- }
- xdr_read_pages(xdr, attrlen);
-- *acl_len = attrlen;
-+ res->acl_len = attrlen;
- } else
- status = -EOPNOTSUPP;
-
-@@ -6028,7 +6043,7 @@ nfs4_xdr_dec_getacl(struct rpc_rqst *rqstp, struct xdr_stream *xdr,
- status = decode_putfh(xdr);
- if (status)
- goto out;
-- status = decode_getacl(xdr, rqstp, &res->acl_len);
-+ status = decode_getacl(xdr, rqstp, res);
-
- out:
- return status;
-diff --git a/include/linux/nfs_xdr.h b/include/linux/nfs_xdr.h
-index 2a7c533..6c898af 100644
---- a/include/linux/nfs_xdr.h
-+++ b/include/linux/nfs_xdr.h
-@@ -602,11 +602,16 @@ struct nfs_getaclargs {
- size_t acl_len;
- unsigned int acl_pgbase;
- struct page ** acl_pages;
-+ struct page * acl_scratch;
- struct nfs4_sequence_args seq_args;
- };
-
-+/* getxattr ACL interface flags */
-+#define NFS4_ACL_LEN_REQUEST 0x0001 /* zero length getxattr buffer */
- struct nfs_getaclres {
- size_t acl_len;
-+ size_t acl_data_offset;
-+ int acl_flags;
- struct nfs4_sequence_res seq_res;
- };
-
-diff --git a/include/linux/sunrpc/xdr.h b/include/linux/sunrpc/xdr.h
-index a20970e..af70af3 100644
---- a/include/linux/sunrpc/xdr.h
-+++ b/include/linux/sunrpc/xdr.h
-@@ -191,6 +191,8 @@ extern int xdr_decode_array2(struct xdr_buf *buf, unsigned int base,
- struct xdr_array2_desc *desc);
- extern int xdr_encode_array2(struct xdr_buf *buf, unsigned int base,
- struct xdr_array2_desc *desc);
-+extern void _copy_from_pages(char *p, struct page **pages, size_t pgbase,
-+ size_t len);
-
- /*
- * Provide some simple tools for XDR buffer overflow-checking etc.
-diff --git a/net/sunrpc/xdr.c b/net/sunrpc/xdr.c
-index 277ebd4..593f4c6 100644
---- a/net/sunrpc/xdr.c
-+++ b/net/sunrpc/xdr.c
-@@ -296,7 +296,7 @@ _copy_to_pages(struct page **pages, size_t pgbase, const char *p, size_t len)
- * Copies data into an arbitrary memory location from an array of pages
- * The copy is assumed to be non-overlapping.
- */
--static void
-+void
- _copy_from_pages(char *p, struct page **pages, size_t pgbase, size_t len)
- {
- struct page **pgfrom;
-@@ -324,6 +324,7 @@ _copy_from_pages(char *p, struct page **pages, size_t pgbase, size_t len)
-
- } while ((len -= copy) != 0);
- }
-+EXPORT_SYMBOL_GPL(_copy_from_pages);
-
- /*
- * xdr_shrink_bufhead
---
-1.7.9.5
-
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
deleted file mode 100644
index ccc04bd..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0026-nfs-fix-regression-in-handling-of-context-option-in-.patch
+++ /dev/null
@@ -1,147 +0,0 @@
-From 116cbe8665b2a7fd6538b2d92e04f016317fee84 Mon Sep 17 00:00:00 2001
-From: Jeff Layton <jlayton at redhat.com>
-Date: Tue, 20 Dec 2011 06:57:45 -0500
-Subject: [PATCH 026/129] nfs: fix regression in handling of context= option
- in NFSv4
-
-commit 8a0d551a59ac92d8ff048d6cb29d3a02073e81e8 upstream.
-
-Setting the security context of a NFSv4 mount via the context= mount
-option is currently broken. The NFSv4 codepath allocates a parsed
-options struct, and then parses the mount options to fill it. It
-eventually calls nfs4_remote_mount which calls security_init_mnt_opts.
-That clobbers the lsm_opts struct that was populated earlier. This bug
-also looks like it causes a small memory leak on each v4 mount where
-context= is used.
-
-Fix this by moving the initialization of the lsm_opts into
-nfs_alloc_parsed_mount_data. Also, add a destructor for
-nfs_parsed_mount_data to make it easier to free all of the allocations
-hanging off of it, and to ensure that the security_free_mnt_opts is
-called whenever security_init_mnt_opts is.
-
-I believe this regression was introduced quite some time ago, probably
-by commit c02d7adf.
-
-Signed-off-by: Jeff Layton <jlayton at redhat.com>
-Signed-off-by: Trond Myklebust <Trond.Myklebust at netapp.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- fs/nfs/super.c | 43 +++++++++++++++++++------------------------
- 1 file changed, 19 insertions(+), 24 deletions(-)
-
-diff --git a/fs/nfs/super.c b/fs/nfs/super.c
-index 1347774..3ada13c 100644
---- a/fs/nfs/super.c
-+++ b/fs/nfs/super.c
-@@ -909,10 +909,24 @@ static struct nfs_parsed_mount_data *nfs_alloc_parsed_mount_data(unsigned int ve
- data->auth_flavor_len = 1;
- data->version = version;
- data->minorversion = 0;
-+ security_init_mnt_opts(&data->lsm_opts);
- }
- return data;
- }
-
-+static void nfs_free_parsed_mount_data(struct nfs_parsed_mount_data *data)
-+{
-+ if (data) {
-+ kfree(data->client_address);
-+ kfree(data->mount_server.hostname);
-+ kfree(data->nfs_server.export_path);
-+ kfree(data->nfs_server.hostname);
-+ kfree(data->fscache_uniq);
-+ security_free_mnt_opts(&data->lsm_opts);
-+ kfree(data);
-+ }
-+}
-+
- /*
- * Sanity-check a server address provided by the mount command.
- *
-@@ -2220,9 +2234,7 @@ static struct dentry *nfs_fs_mount(struct file_system_type *fs_type,
- data = nfs_alloc_parsed_mount_data(NFS_DEFAULT_VERSION);
- mntfh = nfs_alloc_fhandle();
- if (data == NULL || mntfh == NULL)
-- goto out_free_fh;
--
-- security_init_mnt_opts(&data->lsm_opts);
-+ goto out;
-
- /* Validate the mount data */
- error = nfs_validate_mount_data(raw_data, data, mntfh, dev_name);
-@@ -2234,8 +2246,6 @@ static struct dentry *nfs_fs_mount(struct file_system_type *fs_type,
- #ifdef CONFIG_NFS_V4
- if (data->version == 4) {
- mntroot = nfs4_try_mount(flags, dev_name, data);
-- kfree(data->client_address);
-- kfree(data->nfs_server.export_path);
- goto out;
- }
- #endif /* CONFIG_NFS_V4 */
-@@ -2290,13 +2300,8 @@ static struct dentry *nfs_fs_mount(struct file_system_type *fs_type,
- s->s_flags |= MS_ACTIVE;
-
- out:
-- kfree(data->nfs_server.hostname);
-- kfree(data->mount_server.hostname);
-- kfree(data->fscache_uniq);
-- security_free_mnt_opts(&data->lsm_opts);
--out_free_fh:
-+ nfs_free_parsed_mount_data(data);
- nfs_free_fhandle(mntfh);
-- kfree(data);
- return mntroot;
-
- out_err_nosb:
-@@ -2623,9 +2628,7 @@ nfs4_remote_mount(struct file_system_type *fs_type, int flags,
-
- mntfh = nfs_alloc_fhandle();
- if (data == NULL || mntfh == NULL)
-- goto out_free_fh;
--
-- security_init_mnt_opts(&data->lsm_opts);
-+ goto out;
-
- /* Get a volume representation */
- server = nfs4_create_server(data, mntfh);
-@@ -2677,13 +2680,10 @@ nfs4_remote_mount(struct file_system_type *fs_type, int flags,
-
- s->s_flags |= MS_ACTIVE;
-
-- security_free_mnt_opts(&data->lsm_opts);
- nfs_free_fhandle(mntfh);
- return mntroot;
-
- out:
-- security_free_mnt_opts(&data->lsm_opts);
--out_free_fh:
- nfs_free_fhandle(mntfh);
- return ERR_PTR(error);
-
-@@ -2838,7 +2838,7 @@ static struct dentry *nfs4_mount(struct file_system_type *fs_type,
-
- data = nfs_alloc_parsed_mount_data(4);
- if (data == NULL)
-- goto out_free_data;
-+ goto out;
-
- /* Validate the mount data */
- error = nfs4_validate_mount_data(raw_data, data, dev_name);
-@@ -2852,12 +2852,7 @@ static struct dentry *nfs4_mount(struct file_system_type *fs_type,
- error = PTR_ERR(res);
-
- out:
-- kfree(data->client_address);
-- kfree(data->nfs_server.export_path);
-- kfree(data->nfs_server.hostname);
-- kfree(data->fscache_uniq);
--out_free_data:
-- kfree(data);
-+ nfs_free_parsed_mount_data(data);
- dprintk("<-- nfs4_mount() = %d%s\n", error,
- error != 0 ? " [error]" : "");
- return res;
---
-1.7.9.5
-
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
deleted file mode 100644
index 22df17c..0000000
--- 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
+++ /dev/null
@@ -1,35 +0,0 @@
-From b475e4ad0950706030ae96b367c2dbb065a785be Mon Sep 17 00:00:00 2001
-From: Chase Douglas <chase.douglas at canonical.com>
-Date: Mon, 7 Nov 2011 11:08:05 -0800
-Subject: [PATCH 027/129] HID: bump maximum global item tag report size to 96
- bytes
-
-commit e46e927b9b7e8d95526e69322855243882b7e1a3 upstream.
-
-This allows the latest N-Trig devices to function properly.
-
-BugLink: https://bugs.launchpad.net/bugs/724831
-
-Signed-off-by: Chase Douglas <chase.douglas at canonical.com>
-Signed-off-by: Jiri Kosina <jkosina at suse.cz>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/hid/hid-core.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
-index af35384..1473067 100644
---- a/drivers/hid/hid-core.c
-+++ b/drivers/hid/hid-core.c
-@@ -362,7 +362,7 @@ static int hid_parser_global(struct hid_parser *parser, struct hid_item *item)
-
- case HID_GLOBAL_ITEM_TAG_REPORT_SIZE:
- parser->global.report_size = item_udata(item);
-- if (parser->global.report_size > 32) {
-+ if (parser->global.report_size > 96) {
- dbg_hid("invalid report_size %d\n",
- parser->global.report_size);
- return -1;
---
-1.7.9.5
-
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
deleted file mode 100644
index 0216672..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0028-HID-wiimote-Select-INPUT_FF_MEMLESS.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 2cfaf0fb0c2b2fb54ecae98d34df27d549a6e92c Mon Sep 17 00:00:00 2001
-From: David Herrmann <dh.herrmann at googlemail.com>
-Date: Wed, 7 Dec 2011 21:33:59 +0100
-Subject: [PATCH 028/129] HID: wiimote: Select INPUT_FF_MEMLESS
-
-commit ef6f41157f3864d9bf42671b2ed66062dcafb72e upstream.
-
-We depend on memless force-feedback support, therefore correctly select the
-related config options.
-
-Reported-by: Randy Dunlap <rdunlap at xenotime.net>
-Signed-off-by: David Herrmann <dh.herrmann at googlemail.com>
-Signed-off-by: Jiri Kosina <jkosina at suse.cz>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/hid/Kconfig | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/hid/Kconfig b/drivers/hid/Kconfig
-index 22a4a05..332c22a 100644
---- a/drivers/hid/Kconfig
-+++ b/drivers/hid/Kconfig
-@@ -620,6 +620,7 @@ config HID_WIIMOTE
- depends on BT_HIDP
- depends on LEDS_CLASS
- select POWER_SUPPLY
-+ select INPUT_FF_MEMLESS
- ---help---
- Support for the Nintendo Wii Remote bluetooth device.
-
---
-1.7.9.5
-
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
deleted file mode 100644
index 75dbf57..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0029-UBI-fix-missing-scrub-when-there-is-a-bit-flip.patch
+++ /dev/null
@@ -1,81 +0,0 @@
-From 68ff23dc67132bf9668c4e7dab105f7d8a83937f Mon Sep 17 00:00:00 2001
-From: Bhavesh Parekh <bparekh at nvidia.com>
-Date: Wed, 30 Nov 2011 17:43:42 +0530
-Subject: [PATCH 029/129] UBI: fix missing scrub when there is a bit-flip
-
-commit e801e128b2200c40a0ec236cf2330b2586b6e05a upstream.
-
-Under some cases, when scrubbing the PEB if we did not get the lock on
-the PEB it fails to scrub. Add that PEB again to the scrub list
-
-Artem: minor amendments.
-
-Signed-off-by: Bhavesh Parekh <bparekh at nvidia.com>
-Signed-off-by: Artem Bityutskiy <artem.bityutskiy at linux.intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/mtd/ubi/eba.c | 6 ++++--
- drivers/mtd/ubi/ubi.h | 2 ++
- drivers/mtd/ubi/wl.c | 5 ++++-
- 3 files changed, 10 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/mtd/ubi/eba.c b/drivers/mtd/ubi/eba.c
-index fb7f19b..cd26da8 100644
---- a/drivers/mtd/ubi/eba.c
-+++ b/drivers/mtd/ubi/eba.c
-@@ -1028,12 +1028,14 @@ int ubi_eba_copy_leb(struct ubi_device *ubi, int from, int to,
- * 'ubi_wl_put_peb()' function on the @ubi->move_mutex. In turn, we are
- * holding @ubi->move_mutex and go sleep on the LEB lock. So, if the
- * LEB is already locked, we just do not move it and return
-- * %MOVE_CANCEL_RACE, which means that UBI will re-try, but later.
-+ * %MOVE_RETRY. Note, we do not return %MOVE_CANCEL_RACE here because
-+ * we do not know the reasons of the contention - it may be just a
-+ * normal I/O on this LEB, so we want to re-try.
- */
- err = leb_write_trylock(ubi, vol_id, lnum);
- if (err) {
- dbg_wl("contention on LEB %d:%d, cancel", vol_id, lnum);
-- return MOVE_CANCEL_RACE;
-+ return MOVE_RETRY;
- }
-
- /*
-diff --git a/drivers/mtd/ubi/ubi.h b/drivers/mtd/ubi/ubi.h
-index dc64c76..d51d75d 100644
---- a/drivers/mtd/ubi/ubi.h
-+++ b/drivers/mtd/ubi/ubi.h
-@@ -120,6 +120,7 @@ enum {
- * PEB
- * MOVE_CANCEL_BITFLIPS: canceled because a bit-flip was detected in the
- * target PEB
-+ * MOVE_RETRY: retry scrubbing the PEB
- */
- enum {
- MOVE_CANCEL_RACE = 1,
-@@ -127,6 +128,7 @@ enum {
- MOVE_TARGET_RD_ERR,
- MOVE_TARGET_WR_ERR,
- MOVE_CANCEL_BITFLIPS,
-+ MOVE_RETRY,
- };
-
- /**
-diff --git a/drivers/mtd/ubi/wl.c b/drivers/mtd/ubi/wl.c
-index 42c684c..277c429 100644
---- a/drivers/mtd/ubi/wl.c
-+++ b/drivers/mtd/ubi/wl.c
-@@ -795,7 +795,10 @@ static int wear_leveling_worker(struct ubi_device *ubi, struct ubi_work *wrk,
- protect = 1;
- goto out_not_moved;
- }
--
-+ if (err == MOVE_RETRY) {
-+ scrubbing = 1;
-+ goto out_not_moved;
-+ }
- if (err == MOVE_CANCEL_BITFLIPS || err == MOVE_TARGET_WR_ERR ||
- err == MOVE_TARGET_RD_ERR) {
- /*
---
-1.7.9.5
-
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
deleted file mode 100644
index ee5d64c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0030-UBI-fix-use-after-free-on-error-path.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From 917c71669ddf01983d843f8fc19bbdc296748a9c Mon Sep 17 00:00:00 2001
-From: Artem Bityutskiy <artem.bityutskiy at linux.intel.com>
-Date: Thu, 5 Jan 2012 10:47:18 +0200
-Subject: [PATCH 030/129] UBI: fix use-after-free on error path
-
-commit e57e0d8e818512047fe379157c3f77f1b9fabffb upstream.
-
-When we fail to erase a PEB, we free the corresponding erase entry object,
-but then re-schedule this object if the error code was something like -EAGAIN.
-Obviously, it is a bug to use the object after we have freed it.
-
-Reported-by: Emese Revfy <re.emese at gmail.com>
-Signed-off-by: Artem Bityutskiy <artem.bityutskiy at linux.intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/mtd/ubi/wl.c | 7 ++++---
- 1 file changed, 4 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/mtd/ubi/wl.c b/drivers/mtd/ubi/wl.c
-index 277c429..0696e36 100644
---- a/drivers/mtd/ubi/wl.c
-+++ b/drivers/mtd/ubi/wl.c
-@@ -1052,7 +1052,6 @@ static int erase_worker(struct ubi_device *ubi, struct ubi_work *wl_wrk,
-
- ubi_err("failed to erase PEB %d, error %d", pnum, err);
- kfree(wl_wrk);
-- kmem_cache_free(ubi_wl_entry_slab, e);
-
- if (err == -EINTR || err == -ENOMEM || err == -EAGAIN ||
- err == -EBUSY) {
-@@ -1065,14 +1064,16 @@ static int erase_worker(struct ubi_device *ubi, struct ubi_work *wl_wrk,
- goto out_ro;
- }
- return err;
-- } else if (err != -EIO) {
-+ }
-+
-+ kmem_cache_free(ubi_wl_entry_slab, e);
-+ if (err != -EIO)
- /*
- * If this is not %-EIO, we have no idea what to do. Scheduling
- * this physical eraseblock for erasure again would cause
- * errors again and again. Well, lets switch to R/O mode.
- */
- goto out_ro;
-- }
-
- /* It is %-EIO, the PEB went bad */
-
---
-1.7.9.5
-
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
deleted file mode 100644
index ab3d2d4..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0031-PCI-Fix-PCI_EXP_TYPE_RC_EC-value.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 9e38af95ee520c7c6ffa8b4fcc976a3437ef8103 Mon Sep 17 00:00:00 2001
-From: Alex Williamson <alex.williamson at redhat.com>
-Date: Wed, 16 Nov 2011 09:24:16 -0700
-Subject: [PATCH 031/129] PCI: Fix PCI_EXP_TYPE_RC_EC value
-
-commit 1830ea91c20b06608f7cdb2455ce05ba834b3214 upstream.
-
-Spec shows this as 1010b = 0xa
-
-Signed-off-by: Alex Williamson <alex.williamson at redhat.com>
-Signed-off-by: Jesse Barnes <jbarnes at virtuousgeek.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- include/linux/pci_regs.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/include/linux/pci_regs.h b/include/linux/pci_regs.h
-index b5d9657..411c412 100644
---- a/include/linux/pci_regs.h
-+++ b/include/linux/pci_regs.h
-@@ -392,7 +392,7 @@
- #define PCI_EXP_TYPE_DOWNSTREAM 0x6 /* Downstream Port */
- #define PCI_EXP_TYPE_PCI_BRIDGE 0x7 /* PCI/PCI-X Bridge */
- #define PCI_EXP_TYPE_RC_END 0x9 /* Root Complex Integrated Endpoint */
--#define PCI_EXP_TYPE_RC_EC 0x10 /* Root Complex Event Collector */
-+#define PCI_EXP_TYPE_RC_EC 0xa /* Root Complex Event Collector */
- #define PCI_EXP_FLAGS_SLOT 0x0100 /* Slot implemented */
- #define PCI_EXP_FLAGS_IRQ 0x3e00 /* Interrupt message number */
- #define PCI_EXP_DEVCAP 4 /* Device capabilities */
---
-1.7.9.5
-
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
deleted file mode 100644
index 6da8ef8..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0032-PCI-msi-Disable-msi-interrupts-when-we-initialize-a-.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From 948a5d9ea80dfda0b40581e02217f30ffefd8e60 Mon Sep 17 00:00:00 2001
-From: "Eric W. Biederman" <ebiederm at xmission.com>
-Date: Mon, 17 Oct 2011 11:46:06 -0700
-Subject: [PATCH 032/129] PCI: msi: Disable msi interrupts when we initialize
- a pci device
-
-commit a776c491ca5e38c26d9f66923ff574d041e747f4 upstream.
-
-I traced a nasty kexec on panic boot failure to the fact that we had
-screaming msi interrupts and we were not disabling the msi messages at
-kernel startup. The booting kernel had not enabled those interupts so
-was not prepared to handle them.
-
-I can see no reason why we would ever want to leave the msi interrupts
-enabled at boot if something else has enabled those interrupts. The pci
-spec specifies that msi interrupts should be off by default. Drivers
-are expected to enable the msi interrupts if they want to use them. Our
-interrupt handling code reprograms the interrupt handlers at boot and
-will not be be able to do anything useful with an unexpected interrupt.
-
-This patch applies cleanly all of the way back to 2.6.32 where I noticed
-the problem.
-
-Signed-off-by: Eric W. Biederman <ebiederm at xmission.com>
-Signed-off-by: Jesse Barnes <jbarnes at virtuousgeek.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/pci/msi.c | 10 ++++++++++
- 1 file changed, 10 insertions(+)
-
-diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c
-index 0e6d04d..e3efb43 100644
---- a/drivers/pci/msi.c
-+++ b/drivers/pci/msi.c
-@@ -870,5 +870,15 @@ EXPORT_SYMBOL(pci_msi_enabled);
-
- void pci_msi_init_pci_dev(struct pci_dev *dev)
- {
-+ int pos;
- INIT_LIST_HEAD(&dev->msi_list);
-+
-+ /* Disable the msi hardware to avoid screaming interrupts
-+ * during boot. This is the power on reset default so
-+ * usually this should be a noop.
-+ */
-+ pos = pci_find_capability(dev, PCI_CAP_ID_MSI);
-+ if (pos)
-+ msi_set_enable(dev, pos, 0);
-+ msix_set_enable(dev, 0);
- }
---
-1.7.9.5
-
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
deleted file mode 100644
index b7dc6e8..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0033-x86-PCI-Ignore-CPU-non-addressable-_CRS-reserved-mem.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-From 08ba39eb25bcf540f859e7204c3307ee43b52eff Mon Sep 17 00:00:00 2001
-From: Gary Hade <garyhade at us.ibm.com>
-Date: Mon, 14 Nov 2011 15:42:16 -0800
-Subject: [PATCH 033/129] x86/PCI: Ignore CPU non-addressable _CRS reserved
- memory resources
-
-commit ae5cd86455381282ece162966183d3f208c6fad7 upstream.
-
-This assures that a _CRS reserved host bridge window or window region is
-not used if it is not addressable by the CPU. The new code either trims
-the window to exclude the non-addressable portion or totally ignores the
-window if the entire window is non-addressable.
-
-The current code has been shown to be problematic with 32-bit non-PAE
-kernels on systems where _CRS reserves resources above 4GB.
-
-Signed-off-by: Gary Hade <garyhade at us.ibm.com>
-Reviewed-by: Bjorn Helgaas <bhelgaas at google.com>
-Cc: Thomas Renninger <trenn at novell.com>
-Cc: linux-kernel at vger.kernel.org
-Signed-off-by: Jesse Barnes <jbarnes at virtuousgeek.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- arch/x86/pci/acpi.c | 18 ++++++++++++++++--
- 1 file changed, 16 insertions(+), 2 deletions(-)
-
-diff --git a/arch/x86/pci/acpi.c b/arch/x86/pci/acpi.c
-index 404f21a..f8348ab 100644
---- a/arch/x86/pci/acpi.c
-+++ b/arch/x86/pci/acpi.c
-@@ -149,7 +149,7 @@ setup_resource(struct acpi_resource *acpi_res, void *data)
- struct acpi_resource_address64 addr;
- acpi_status status;
- unsigned long flags;
-- u64 start, end;
-+ u64 start, orig_end, end;
-
- status = resource_to_addr(acpi_res, &addr);
- if (!ACPI_SUCCESS(status))
-@@ -165,7 +165,21 @@ setup_resource(struct acpi_resource *acpi_res, void *data)
- return AE_OK;
-
- start = addr.minimum + addr.translation_offset;
-- end = addr.maximum + addr.translation_offset;
-+ orig_end = end = addr.maximum + addr.translation_offset;
-+
-+ /* Exclude non-addressable range or non-addressable portion of range */
-+ end = min(end, (u64)iomem_resource.end);
-+ if (end <= start) {
-+ dev_info(&info->bridge->dev,
-+ "host bridge window [%#llx-%#llx] "
-+ "(ignored, not CPU addressable)\n", start, orig_end);
-+ return AE_OK;
-+ } else if (orig_end != end) {
-+ dev_info(&info->bridge->dev,
-+ "host bridge window [%#llx-%#llx] "
-+ "([%#llx-%#llx] ignored, not CPU addressable)\n",
-+ start, orig_end, end + 1, orig_end);
-+ }
-
- res = &info->res[info->res_num];
- res->name = info->name;
---
-1.7.9.5
-
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
deleted file mode 100644
index 8d30b65..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0034-x86-PCI-amd-factor-out-MMCONFIG-discovery.patch
+++ /dev/null
@@ -1,160 +0,0 @@
-From 64525bdf1bbff67faf88ccd7bc83ef856489ed24 Mon Sep 17 00:00:00 2001
-From: Bjorn Helgaas <bhelgaas at google.com>
-Date: Thu, 5 Jan 2012 14:27:19 -0700
-Subject: [PATCH 034/129] x86/PCI: amd: factor out MMCONFIG discovery
-
-commit 24d25dbfa63c376323096660bfa9ad45a08870ce upstream.
-
-This factors out the AMD native MMCONFIG discovery so we can use it
-outside amd_bus.c.
-
-amd_bus.c reads AMD MSRs so it can remove the MMCONFIG area from the
-PCI resources. We may also need the MMCONFIG information to work
-around BIOS defects in the ACPI MCFG table.
-
-Cc: Borislav Petkov <borislav.petkov at amd.com>
-Cc: Yinghai Lu <yinghai at kernel.org>
-Signed-off-by: Bjorn Helgaas <bhelgaas at google.com>
-Signed-off-by: Jesse Barnes <jbarnes at virtuousgeek.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- arch/x86/include/asm/amd_nb.h | 2 ++
- arch/x86/kernel/amd_nb.c | 31 ++++++++++++++++++++++++++++++
- arch/x86/pci/amd_bus.c | 42 +++++++++++------------------------------
- 3 files changed, 44 insertions(+), 31 deletions(-)
-
-diff --git a/arch/x86/include/asm/amd_nb.h b/arch/x86/include/asm/amd_nb.h
-index 8e41071..49ad773 100644
---- a/arch/x86/include/asm/amd_nb.h
-+++ b/arch/x86/include/asm/amd_nb.h
-@@ -1,6 +1,7 @@
- #ifndef _ASM_X86_AMD_NB_H
- #define _ASM_X86_AMD_NB_H
-
-+#include <linux/ioport.h>
- #include <linux/pci.h>
-
- struct amd_nb_bus_dev_range {
-@@ -13,6 +14,7 @@ extern const struct pci_device_id amd_nb_misc_ids[];
- extern const struct amd_nb_bus_dev_range amd_nb_bus_dev_ranges[];
-
- extern bool early_is_amd_nb(u32 value);
-+extern struct resource *amd_get_mmconfig_range(struct resource *res);
- extern int amd_cache_northbridges(void);
- extern void amd_flush_garts(void);
- extern int amd_numa_init(void);
-diff --git a/arch/x86/kernel/amd_nb.c b/arch/x86/kernel/amd_nb.c
-index 4c39baa..bae1efe 100644
---- a/arch/x86/kernel/amd_nb.c
-+++ b/arch/x86/kernel/amd_nb.c
-@@ -119,6 +119,37 @@ bool __init early_is_amd_nb(u32 device)
- return false;
- }
-
-+struct resource *amd_get_mmconfig_range(struct resource *res)
-+{
-+ u32 address;
-+ u64 base, msr;
-+ unsigned segn_busn_bits;
-+
-+ if (boot_cpu_data.x86_vendor != X86_VENDOR_AMD)
-+ return NULL;
-+
-+ /* assume all cpus from fam10h have mmconfig */
-+ if (boot_cpu_data.x86 < 0x10)
-+ return NULL;
-+
-+ address = MSR_FAM10H_MMIO_CONF_BASE;
-+ rdmsrl(address, msr);
-+
-+ /* mmconfig is not enabled */
-+ if (!(msr & FAM10H_MMIO_CONF_ENABLE))
-+ return NULL;
-+
-+ base = msr & (FAM10H_MMIO_CONF_BASE_MASK<<FAM10H_MMIO_CONF_BASE_SHIFT);
-+
-+ segn_busn_bits = (msr >> FAM10H_MMIO_CONF_BUSRANGE_SHIFT) &
-+ FAM10H_MMIO_CONF_BUSRANGE_MASK;
-+
-+ res->flags = IORESOURCE_MEM;
-+ res->start = base;
-+ res->end = base + (1ULL<<(segn_busn_bits + 20)) - 1;
-+ return res;
-+}
-+
- int amd_get_subcaches(int cpu)
- {
- struct pci_dev *link = node_to_amd_nb(amd_get_nb_id(cpu))->link;
-diff --git a/arch/x86/pci/amd_bus.c b/arch/x86/pci/amd_bus.c
-index 026e493..385a940 100644
---- a/arch/x86/pci/amd_bus.c
-+++ b/arch/x86/pci/amd_bus.c
-@@ -30,34 +30,6 @@ static struct pci_hostbridge_probe pci_probes[] __initdata = {
- { 0, 0x18, PCI_VENDOR_ID_AMD, 0x1300 },
- };
-
--static u64 __initdata fam10h_mmconf_start;
--static u64 __initdata fam10h_mmconf_end;
--static void __init get_pci_mmcfg_amd_fam10h_range(void)
--{
-- u32 address;
-- u64 base, msr;
-- unsigned segn_busn_bits;
--
-- /* assume all cpus from fam10h have mmconf */
-- if (boot_cpu_data.x86 < 0x10)
-- return;
--
-- address = MSR_FAM10H_MMIO_CONF_BASE;
-- rdmsrl(address, msr);
--
-- /* mmconfig is not enable */
-- if (!(msr & FAM10H_MMIO_CONF_ENABLE))
-- return;
--
-- base = msr & (FAM10H_MMIO_CONF_BASE_MASK<<FAM10H_MMIO_CONF_BASE_SHIFT);
--
-- segn_busn_bits = (msr >> FAM10H_MMIO_CONF_BUSRANGE_SHIFT) &
-- FAM10H_MMIO_CONF_BUSRANGE_MASK;
--
-- fam10h_mmconf_start = base;
-- fam10h_mmconf_end = base + (1ULL<<(segn_busn_bits + 20)) - 1;
--}
--
- #define RANGE_NUM 16
-
- /**
-@@ -85,6 +57,9 @@ static int __init early_fill_mp_bus_info(void)
- u64 val;
- u32 address;
- bool found;
-+ struct resource fam10h_mmconf_res, *fam10h_mmconf;
-+ u64 fam10h_mmconf_start;
-+ u64 fam10h_mmconf_end;
-
- if (!early_pci_allowed())
- return -1;
-@@ -211,12 +186,17 @@ static int __init early_fill_mp_bus_info(void)
- subtract_range(range, RANGE_NUM, 0, end);
-
- /* get mmconfig */
-- get_pci_mmcfg_amd_fam10h_range();
-+ fam10h_mmconf = amd_get_mmconfig_range(&fam10h_mmconf_res);
- /* need to take out mmconf range */
-- if (fam10h_mmconf_end) {
-- printk(KERN_DEBUG "Fam 10h mmconf [%llx, %llx]\n", fam10h_mmconf_start, fam10h_mmconf_end);
-+ if (fam10h_mmconf) {
-+ printk(KERN_DEBUG "Fam 10h mmconf %pR\n", fam10h_mmconf);
-+ fam10h_mmconf_start = fam10h_mmconf->start;
-+ fam10h_mmconf_end = fam10h_mmconf->end;
- subtract_range(range, RANGE_NUM, fam10h_mmconf_start,
- fam10h_mmconf_end + 1);
-+ } else {
-+ fam10h_mmconf_start = 0;
-+ fam10h_mmconf_end = 0;
- }
-
- /* mmio resource */
---
-1.7.9.5
-
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
deleted file mode 100644
index 3fd79be..0000000
--- 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
+++ /dev/null
@@ -1,37 +0,0 @@
-From ab624504467af8cf207855de15bc8b835605ba88 Mon Sep 17 00:00:00 2001
-From: Bjorn Helgaas <bhelgaas at google.com>
-Date: Thu, 12 Jan 2012 08:01:40 -0700
-Subject: [PATCH 035/129] x86/PCI: build amd_bus.o only when CONFIG_AMD_NB=y
-
-commit 5cf9a4e69c1ff0ccdd1d2b7404f95c0531355274 upstream.
-
-We only need amd_bus.o for AMD systems with PCI. arch/x86/pci/Makefile
-already depends on CONFIG_PCI=y, so this patch just adds the dependency
-on CONFIG_AMD_NB.
-
-Cc: Yinghai Lu <yinghai at kernel.org>
-Signed-off-by: Bjorn Helgaas <bhelgaas at google.com>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- arch/x86/pci/Makefile | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/arch/x86/pci/Makefile b/arch/x86/pci/Makefile
-index 6b8759f..d24d3da 100644
---- a/arch/x86/pci/Makefile
-+++ b/arch/x86/pci/Makefile
-@@ -18,8 +18,9 @@ obj-$(CONFIG_X86_NUMAQ) += numaq_32.o
- obj-$(CONFIG_X86_MRST) += mrst.o
-
- obj-y += common.o early.o
--obj-y += amd_bus.o bus_numa.o
-+obj-y += bus_numa.o
-
-+obj-$(CONFIG_AMD_NB) += amd_bus.o
- obj-$(CONFIG_PCI_CNB20LE_QUIRK) += broadcom_bus.o
-
- ifeq ($(CONFIG_PCI_DEBUG),y)
---
-1.7.9.5
-
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
deleted file mode 100644
index 411ca8b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0036-SCSI-mpt2sas-Release-spinlock-for-the-raid-device-li.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From b76617ff2fa38409d3065f944359e5e47b290014 Mon Sep 17 00:00:00 2001
-From: "nagalakshmi.nandigama at lsi.com" <nagalakshmi.nandigama at lsi.com>
-Date: Thu, 1 Dec 2011 07:52:56 +0530
-Subject: [PATCH 036/129] SCSI: mpt2sas: Release spinlock for the raid device
- list before blocking it
-
-commit 30c43282f3d347f47f9e05199d2b14f56f3f2837 upstream.
-
-Added code to release the spinlock that is used to protect the
-raid device list before calling a function that can block. The
-blocking was causing a reschedule, and subsequently it is tried
-to acquire the same lock, resulting in a panic (NMI Watchdog
-detecting a CPU lockup).
-
-Signed-off-by: Nagalakshmi Nandigama <nagalakshmi.nandigama at lsi.com>
-Signed-off-by: James Bottomley <JBottomley at Parallels.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/scsi/mpt2sas/mpt2sas_scsih.c | 7 ++++---
- 1 file changed, 4 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/scsi/mpt2sas/mpt2sas_scsih.c b/drivers/scsi/mpt2sas/mpt2sas_scsih.c
-index d570573..3a4f666 100644
---- a/drivers/scsi/mpt2sas/mpt2sas_scsih.c
-+++ b/drivers/scsi/mpt2sas/mpt2sas_scsih.c
-@@ -6714,6 +6714,7 @@ _scsih_mark_responding_raid_device(struct MPT2SAS_ADAPTER *ioc, u64 wwid,
- } else
- sas_target_priv_data = NULL;
- raid_device->responding = 1;
-+ spin_unlock_irqrestore(&ioc->raid_device_lock, flags);
- starget_printk(KERN_INFO, raid_device->starget,
- "handle(0x%04x), wwid(0x%016llx)\n", handle,
- (unsigned long long)raid_device->wwid);
-@@ -6724,16 +6725,16 @@ _scsih_mark_responding_raid_device(struct MPT2SAS_ADAPTER *ioc, u64 wwid,
- */
- _scsih_init_warpdrive_properties(ioc, raid_device);
- if (raid_device->handle == handle)
-- goto out;
-+ return;
- printk(KERN_INFO "\thandle changed from(0x%04x)!!!\n",
- raid_device->handle);
- raid_device->handle = handle;
- if (sas_target_priv_data)
- sas_target_priv_data->handle = handle;
-- goto out;
-+ return;
- }
- }
-- out:
-+
- spin_unlock_irqrestore(&ioc->raid_device_lock, flags);
- }
-
---
-1.7.9.5
-
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
deleted file mode 100644
index d58ff27..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0037-SCSI-mpt2sas-Fix-for-memory-allocation-error-for-lar.patch
+++ /dev/null
@@ -1,177 +0,0 @@
-From c987e1592482d819fd950fbaad9a1405f892c39e Mon Sep 17 00:00:00 2001
-From: "nagalakshmi.nandigama at lsi.com" <nagalakshmi.nandigama at lsi.com>
-Date: Thu, 1 Dec 2011 07:53:08 +0530
-Subject: [PATCH 037/129] SCSI: mpt2sas : Fix for memory allocation error for
- large host credits
-
-commit aff132d95ffe14eca96cab90597cdd010b457af7 upstream.
-
-The amount of memory required for tracking chain buffers is rather
-large, and when the host credit count is big, memory allocation
-failure occurs inside __get_free_pages.
-
-The fix is to limit the number of chains to 100,000. In addition,
-the number of host credits is limited to 30,000 IOs. However this
-limitation can be overridden this using the command line option
-max_queue_depth. The algorithm for calculating the
-reply_post_queue_depth is changed so that it is equal to
-(reply_free_queue_depth + 16), previously it was (reply_free_queue_depth * 2).
-
-Signed-off-by: Nagalakshmi Nandigama <nagalakshmi.nandigama at lsi.com>
-Signed-off-by: James Bottomley <JBottomley at Parallels.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/scsi/mpt2sas/mpt2sas_base.c | 83 +++++++++++-----------------------
- drivers/scsi/mpt2sas/mpt2sas_scsih.c | 4 +-
- 2 files changed, 29 insertions(+), 58 deletions(-)
-
-diff --git a/drivers/scsi/mpt2sas/mpt2sas_base.c b/drivers/scsi/mpt2sas/mpt2sas_base.c
-index beda04a..0794c72 100644
---- a/drivers/scsi/mpt2sas/mpt2sas_base.c
-+++ b/drivers/scsi/mpt2sas/mpt2sas_base.c
-@@ -65,6 +65,8 @@ static MPT_CALLBACK mpt_callbacks[MPT_MAX_CALLBACKS];
-
- #define FAULT_POLLING_INTERVAL 1000 /* in milliseconds */
-
-+#define MAX_HBA_QUEUE_DEPTH 30000
-+#define MAX_CHAIN_DEPTH 100000
- static int max_queue_depth = -1;
- module_param(max_queue_depth, int, 0);
- MODULE_PARM_DESC(max_queue_depth, " max controller queue depth ");
-@@ -2311,8 +2313,6 @@ _base_release_memory_pools(struct MPT2SAS_ADAPTER *ioc)
- }
- if (ioc->chain_dma_pool)
- pci_pool_destroy(ioc->chain_dma_pool);
-- }
-- if (ioc->chain_lookup) {
- free_pages((ulong)ioc->chain_lookup, ioc->chain_pages);
- ioc->chain_lookup = NULL;
- }
-@@ -2330,9 +2330,7 @@ static int
- _base_allocate_memory_pools(struct MPT2SAS_ADAPTER *ioc, int sleep_flag)
- {
- struct mpt2sas_facts *facts;
-- u32 queue_size, queue_diff;
- u16 max_sge_elements;
-- u16 num_of_reply_frames;
- u16 chains_needed_per_io;
- u32 sz, total_sz, reply_post_free_sz;
- u32 retry_sz;
-@@ -2359,7 +2357,8 @@ _base_allocate_memory_pools(struct MPT2SAS_ADAPTER *ioc, int sleep_flag)
- max_request_credit = (max_queue_depth < facts->RequestCredit)
- ? max_queue_depth : facts->RequestCredit;
- else
-- max_request_credit = facts->RequestCredit;
-+ max_request_credit = min_t(u16, facts->RequestCredit,
-+ MAX_HBA_QUEUE_DEPTH);
-
- ioc->hba_queue_depth = max_request_credit;
- ioc->hi_priority_depth = facts->HighPriorityCredit;
-@@ -2400,50 +2399,25 @@ _base_allocate_memory_pools(struct MPT2SAS_ADAPTER *ioc, int sleep_flag)
- }
- ioc->chains_needed_per_io = chains_needed_per_io;
-
-- /* reply free queue sizing - taking into account for events */
-- num_of_reply_frames = ioc->hba_queue_depth + 32;
--
-- /* number of replies frames can't be a multiple of 16 */
-- /* decrease number of reply frames by 1 */
-- if (!(num_of_reply_frames % 16))
-- num_of_reply_frames--;
--
-- /* calculate number of reply free queue entries
-- * (must be multiple of 16)
-- */
--
-- /* (we know reply_free_queue_depth is not a multiple of 16) */
-- queue_size = num_of_reply_frames;
-- queue_size += 16 - (queue_size % 16);
-- ioc->reply_free_queue_depth = queue_size;
--
-- /* reply descriptor post queue sizing */
-- /* this size should be the number of request frames + number of reply
-- * frames
-- */
--
-- queue_size = ioc->hba_queue_depth + num_of_reply_frames + 1;
-- /* round up to 16 byte boundary */
-- if (queue_size % 16)
-- queue_size += 16 - (queue_size % 16);
--
-- /* check against IOC maximum reply post queue depth */
-- if (queue_size > facts->MaxReplyDescriptorPostQueueDepth) {
-- queue_diff = queue_size -
-- facts->MaxReplyDescriptorPostQueueDepth;
-+ /* reply free queue sizing - taking into account for 64 FW events */
-+ ioc->reply_free_queue_depth = ioc->hba_queue_depth + 64;
-
-- /* round queue_diff up to multiple of 16 */
-- if (queue_diff % 16)
-- queue_diff += 16 - (queue_diff % 16);
--
-- /* adjust hba_queue_depth, reply_free_queue_depth,
-- * and queue_size
-- */
-- ioc->hba_queue_depth -= (queue_diff / 2);
-- ioc->reply_free_queue_depth -= (queue_diff / 2);
-- queue_size = facts->MaxReplyDescriptorPostQueueDepth;
-+ /* align the reply post queue on the next 16 count boundary */
-+ if (!ioc->reply_free_queue_depth % 16)
-+ ioc->reply_post_queue_depth = ioc->reply_free_queue_depth + 16;
-+ else
-+ ioc->reply_post_queue_depth = ioc->reply_free_queue_depth +
-+ 32 - (ioc->reply_free_queue_depth % 16);
-+ if (ioc->reply_post_queue_depth >
-+ facts->MaxReplyDescriptorPostQueueDepth) {
-+ ioc->reply_post_queue_depth = min_t(u16,
-+ (facts->MaxReplyDescriptorPostQueueDepth -
-+ (facts->MaxReplyDescriptorPostQueueDepth % 16)),
-+ (ioc->hba_queue_depth - (ioc->hba_queue_depth % 16)));
-+ ioc->reply_free_queue_depth = ioc->reply_post_queue_depth - 16;
-+ ioc->hba_queue_depth = ioc->reply_free_queue_depth - 64;
- }
-- ioc->reply_post_queue_depth = queue_size;
-+
-
- dinitprintk(ioc, printk(MPT2SAS_INFO_FMT "scatter gather: "
- "sge_in_main_msg(%d), sge_per_chain(%d), sge_per_io(%d), "
-@@ -2529,15 +2503,12 @@ _base_allocate_memory_pools(struct MPT2SAS_ADAPTER *ioc, int sleep_flag)
- "depth(%d)\n", ioc->name, ioc->request,
- ioc->scsiio_depth));
-
-- /* loop till the allocation succeeds */
-- do {
-- sz = ioc->chain_depth * sizeof(struct chain_tracker);
-- ioc->chain_pages = get_order(sz);
-- ioc->chain_lookup = (struct chain_tracker *)__get_free_pages(
-- GFP_KERNEL, ioc->chain_pages);
-- if (ioc->chain_lookup == NULL)
-- ioc->chain_depth -= 100;
-- } while (ioc->chain_lookup == NULL);
-+ ioc->chain_depth = min_t(u32, ioc->chain_depth, MAX_CHAIN_DEPTH);
-+ sz = ioc->chain_depth * sizeof(struct chain_tracker);
-+ ioc->chain_pages = get_order(sz);
-+
-+ ioc->chain_lookup = (struct chain_tracker *)__get_free_pages(
-+ GFP_KERNEL, ioc->chain_pages);
- ioc->chain_dma_pool = pci_pool_create("chain pool", ioc->pdev,
- ioc->request_sz, 16, 0);
- if (!ioc->chain_dma_pool) {
-diff --git a/drivers/scsi/mpt2sas/mpt2sas_scsih.c b/drivers/scsi/mpt2sas/mpt2sas_scsih.c
-index 3a4f666..9bc6fb2 100644
---- a/drivers/scsi/mpt2sas/mpt2sas_scsih.c
-+++ b/drivers/scsi/mpt2sas/mpt2sas_scsih.c
-@@ -1007,8 +1007,8 @@ _scsih_get_chain_buffer_tracker(struct MPT2SAS_ADAPTER *ioc, u16 smid)
- spin_lock_irqsave(&ioc->scsi_lookup_lock, flags);
- if (list_empty(&ioc->free_chain_list)) {
- spin_unlock_irqrestore(&ioc->scsi_lookup_lock, flags);
-- printk(MPT2SAS_WARN_FMT "chain buffers not available\n",
-- ioc->name);
-+ dfailprintk(ioc, printk(MPT2SAS_WARN_FMT "chain buffers not "
-+ "available\n", ioc->name));
- return NULL;
- }
- chain_req = list_entry(ioc->free_chain_list.next,
---
-1.7.9.5
-
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
deleted file mode 100644
index ce8871b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0038-xen-xenbus-Reject-replies-with-payload-XENSTORE_PAYL.patch
+++ /dev/null
@@ -1,78 +0,0 @@
-From 60ff826ed445ff093db42fd2e5ac97839c3c43d4 Mon Sep 17 00:00:00 2001
-From: Ian Campbell <Ian.Campbell at citrix.com>
-Date: Wed, 4 Jan 2012 09:34:49 +0000
-Subject: [PATCH 038/129] xen/xenbus: Reject replies with payload >
- XENSTORE_PAYLOAD_MAX.
-
-commit 9e7860cee18241633eddb36a4c34c7b61d8cecbc upstream.
-
-Haogang Chen found out that:
-
- There is a potential integer overflow in process_msg() that could result
- in cross-domain attack.
-
- body = kmalloc(msg->hdr.len + 1, GFP_NOIO | __GFP_HIGH);
-
- When a malicious guest passes 0xffffffff in msg->hdr.len, the subsequent
- call to xb_read() would write to a zero-length buffer.
-
- The other end of this connection is always the xenstore backend daemon
- so there is no guest (malicious or otherwise) which can do this. The
- xenstore daemon is a trusted component in the system.
-
- However this seem like a reasonable robustness improvement so we should
- have it.
-
-And Ian when read the API docs found that:
- The payload length (len field of the header) is limited to 4096
- (XENSTORE_PAYLOAD_MAX) in both directions. If a client exceeds the
- limit, its xenstored connection will be immediately killed by
- xenstored, which is usually catastrophic from the client's point of
- view. Clients (particularly domains, which cannot just reconnect)
- should avoid this.
-
-so this patch checks against that instead.
-
-This also avoids a potential integer overflow pointed out by Haogang Chen.
-
-Signed-off-by: Ian Campbell <ian.campbell at citrix.com>
-Cc: Haogang Chen <haogangchen at gmail.com>
-Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk at oracle.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/xen/xenbus/xenbus_xs.c | 6 ++++++
- include/xen/interface/io/xs_wire.h | 3 +++
- 2 files changed, 9 insertions(+)
-
-diff --git a/drivers/xen/xenbus/xenbus_xs.c b/drivers/xen/xenbus/xenbus_xs.c
-index ede860f..a580b17 100644
---- a/drivers/xen/xenbus/xenbus_xs.c
-+++ b/drivers/xen/xenbus/xenbus_xs.c
-@@ -801,6 +801,12 @@ static int process_msg(void)
- goto out;
- }
-
-+ if (msg->hdr.len > XENSTORE_PAYLOAD_MAX) {
-+ kfree(msg);
-+ err = -EINVAL;
-+ goto out;
-+ }
-+
- body = kmalloc(msg->hdr.len + 1, GFP_NOIO | __GFP_HIGH);
- if (body == NULL) {
- kfree(msg);
-diff --git a/include/xen/interface/io/xs_wire.h b/include/xen/interface/io/xs_wire.h
-index f6f07aa..7cdfca2 100644
---- a/include/xen/interface/io/xs_wire.h
-+++ b/include/xen/interface/io/xs_wire.h
-@@ -87,4 +87,7 @@ struct xenstore_domain_interface {
- XENSTORE_RING_IDX rsp_cons, rsp_prod;
- };
-
-+/* Violating this is very bad. See docs/misc/xenstore.txt. */
-+#define XENSTORE_PAYLOAD_MAX 4096
-+
- #endif /* _XS_WIRE_H */
---
-1.7.9.5
-
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
deleted file mode 100644
index a6df906..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0039-md-raid1-perform-bad-block-tests-for-WriteMostly-dev.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From 4f2bf4b7d712836951cdbfa4807ae0309711487c Mon Sep 17 00:00:00 2001
-From: NeilBrown <neilb at suse.de>
-Date: Mon, 9 Jan 2012 01:41:51 +1100
-Subject: [PATCH 039/129] md/raid1: perform bad-block tests for WriteMostly
- devices too.
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit 307729c8bc5b5a41361af8af95906eee7552acb1 upstream.
-
-We normally try to avoid reading from write-mostly devices, but when
-we do we really have to check for bad blocks and be sure not to
-try reading them.
-
-With the current code, best_good_sectors might not get set and that
-causes zero-length read requests to be send down which is very
-confusing.
-
-This bug was introduced in commit d2eb35acfdccbe2 and so the patch
-is suitable for 3.1.x and 3.2.x
-
-Reported-and-tested-by: Michał Mirosław <mirq-linux at rere.qmqm.pl>
-Reported-and-tested-by: Art -kwaak- van Breemen <ard at telegraafnet.nl>
-Signed-off-by: NeilBrown <neilb at suse.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/md/raid1.c | 11 ++++++++++-
- 1 file changed, 10 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c
-index ede2461..7d9e071 100644
---- a/drivers/md/raid1.c
-+++ b/drivers/md/raid1.c
-@@ -525,8 +525,17 @@ static int read_balance(struct r1conf *conf, struct r1bio *r1_bio, int *max_sect
- if (test_bit(WriteMostly, &rdev->flags)) {
- /* Don't balance among write-mostly, just
- * use the first as a last resort */
-- if (best_disk < 0)
-+ if (best_disk < 0) {
-+ if (is_badblock(rdev, this_sector, sectors,
-+ &first_bad, &bad_sectors)) {
-+ if (first_bad < this_sector)
-+ /* Cannot use this */
-+ continue;
-+ best_good_sectors = first_bad - this_sector;
-+ } else
-+ best_good_sectors = sectors;
- best_disk = disk;
-+ }
- continue;
- }
- /* This is a reasonable device to use. It might
---
-1.7.9.5
-
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
deleted file mode 100644
index 221f3df..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0040-ima-free-duplicate-measurement-memory.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From 5800ae9277818c4ce77d7efd4a1035738ec40400 Mon Sep 17 00:00:00 2001
-From: Roberto Sassu <roberto.sassu at polito.it>
-Date: Mon, 19 Dec 2011 15:57:27 +0100
-Subject: [PATCH 040/129] ima: free duplicate measurement memory
-
-commit 45fae7493970d7c45626ccd96d4a74f5f1eea5a9 upstream.
-
-Info about new measurements are cached in the iint for performance. When
-the inode is flushed from cache, the associated iint is flushed as well.
-Subsequent access to the inode will cause the inode to be re-measured and
-will attempt to add a duplicate entry to the measurement list.
-
-This patch frees the duplicate measurement memory, fixing a memory leak.
-
-Signed-off-by: Roberto Sassu <roberto.sassu at polito.it>
-Signed-off-by: Mimi Zohar <zohar at us.ibm.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- security/integrity/ima/ima_api.c | 4 ++--
- security/integrity/ima/ima_queue.c | 1 +
- 2 files changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/security/integrity/ima/ima_api.c b/security/integrity/ima/ima_api.c
-index 0d50df0..88a2788 100644
---- a/security/integrity/ima/ima_api.c
-+++ b/security/integrity/ima/ima_api.c
-@@ -178,8 +178,8 @@ void ima_store_measurement(struct integrity_iint_cache *iint,
- strncpy(entry->template.file_name, filename, IMA_EVENT_NAME_LEN_MAX);
-
- result = ima_store_template(entry, violation, inode);
-- if (!result)
-+ if (!result || result == -EEXIST)
- iint->flags |= IMA_MEASURED;
-- else
-+ if (result < 0)
- kfree(entry);
- }
-diff --git a/security/integrity/ima/ima_queue.c b/security/integrity/ima/ima_queue.c
-index 8e28f04..e1a5062 100644
---- a/security/integrity/ima/ima_queue.c
-+++ b/security/integrity/ima/ima_queue.c
-@@ -114,6 +114,7 @@ int ima_add_template_entry(struct ima_template_entry *entry, int violation,
- memcpy(digest, entry->digest, sizeof digest);
- if (ima_lookup_digest_entry(digest)) {
- audit_cause = "hash_exists";
-+ result = -EEXIST;
- goto out;
- }
- }
---
-1.7.9.5
-
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
deleted file mode 100644
index 3f30fe2..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0041-ima-fix-invalid-memory-reference.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-From 2c5908ebba650537dda1db47220afc062e7d61bd Mon Sep 17 00:00:00 2001
-From: Roberto Sassu <roberto.sassu at polito.it>
-Date: Mon, 19 Dec 2011 15:57:28 +0100
-Subject: [PATCH 041/129] ima: fix invalid memory reference
-
-commit 7b7e5916aa2f46e57f8bd8cb89c34620ebfda5da upstream.
-
-Don't free a valid measurement entry on TPM PCR extend failure.
-
-Signed-off-by: Roberto Sassu <roberto.sassu at polito.it>
-Signed-off-by: Mimi Zohar <zohar at us.ibm.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- security/integrity/ima/ima_queue.c | 16 +++++++++++-----
- 1 file changed, 11 insertions(+), 5 deletions(-)
-
-diff --git a/security/integrity/ima/ima_queue.c b/security/integrity/ima/ima_queue.c
-index e1a5062..55a6271 100644
---- a/security/integrity/ima/ima_queue.c
-+++ b/security/integrity/ima/ima_queue.c
-@@ -23,6 +23,8 @@
- #include <linux/slab.h>
- #include "ima.h"
-
-+#define AUDIT_CAUSE_LEN_MAX 32
-+
- LIST_HEAD(ima_measurements); /* list of all measurements */
-
- /* key: inode (before secure-hashing a file) */
-@@ -94,7 +96,8 @@ static int ima_pcr_extend(const u8 *hash)
-
- result = tpm_pcr_extend(TPM_ANY_NUM, CONFIG_IMA_MEASURE_PCR_IDX, hash);
- if (result != 0)
-- pr_err("IMA: Error Communicating to TPM chip\n");
-+ pr_err("IMA: Error Communicating to TPM chip, result: %d\n",
-+ result);
- return result;
- }
-
-@@ -106,8 +109,9 @@ int ima_add_template_entry(struct ima_template_entry *entry, int violation,
- {
- u8 digest[IMA_DIGEST_SIZE];
- const char *audit_cause = "hash_added";
-+ char tpm_audit_cause[AUDIT_CAUSE_LEN_MAX];
- int audit_info = 1;
-- int result = 0;
-+ int result = 0, tpmresult = 0;
-
- mutex_lock(&ima_extend_list_mutex);
- if (!violation) {
-@@ -129,9 +133,11 @@ int ima_add_template_entry(struct ima_template_entry *entry, int violation,
- if (violation) /* invalidate pcr */
- memset(digest, 0xff, sizeof digest);
-
-- result = ima_pcr_extend(digest);
-- if (result != 0) {
-- audit_cause = "TPM error";
-+ tpmresult = ima_pcr_extend(digest);
-+ if (tpmresult != 0) {
-+ snprintf(tpm_audit_cause, AUDIT_CAUSE_LEN_MAX, "TPM_error(%d)",
-+ tpmresult);
-+ audit_cause = tpm_audit_cause;
- audit_info = 0;
- }
- out:
---
-1.7.9.5
-
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
deleted file mode 100644
index 2af89dd..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0042-slub-fix-a-possible-memleak-in-__slab_alloc.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 71490e8f6f58ec56533554888983ce09d6ee5cb1 Mon Sep 17 00:00:00 2001
-From: Eric Dumazet <eric.dumazet at gmail.com>
-Date: Tue, 13 Dec 2011 04:57:06 +0100
-Subject: [PATCH 042/129] slub: fix a possible memleak in __slab_alloc()
-
-commit 73736e0387ba0e6d2b703407b4d26168d31516a7 upstream.
-
-Zhihua Che reported a possible memleak in slub allocator on
-CONFIG_PREEMPT=y builds.
-
-It is possible current thread migrates right before disabling irqs in
-__slab_alloc(). We must check again c->freelist, and perform a normal
-allocation instead of scratching c->freelist.
-
-Many thanks to Zhihua Che for spotting this bug, introduced in 2.6.39
-
-V2: Its also possible an IRQ freed one (or several) object(s) and
-populated c->freelist, so its not a CONFIG_PREEMPT only problem.
-
-Reported-by: Zhihua Che <zhihua.che at gmail.com>
-Signed-off-by: Eric Dumazet <eric.dumazet at gmail.com>
-Acked-by: Christoph Lameter <cl at linux.com>
-Signed-off-by: Pekka Enberg <penberg at kernel.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- mm/slub.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/mm/slub.c b/mm/slub.c
-index ed3334d..1a919f0 100644
---- a/mm/slub.c
-+++ b/mm/slub.c
-@@ -2166,6 +2166,11 @@ redo:
- goto new_slab;
- }
-
-+ /* must check again c->freelist in case of cpu migration or IRQ */
-+ object = c->freelist;
-+ if (object)
-+ goto load_freelist;
-+
- stat(s, ALLOC_SLOWPATH);
-
- do {
---
-1.7.9.5
-
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
deleted file mode 100644
index c8c5bd7..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0043-PNP-work-around-Dell-1536-1546-BIOS-MMCONFIG-bug-tha.patch
+++ /dev/null
@@ -1,101 +0,0 @@
-From ac901f18d34bc2bf1be5e6b56cf6eeb045c0bbee Mon Sep 17 00:00:00 2001
-From: Bjorn Helgaas <bhelgaas at google.com>
-Date: Thu, 5 Jan 2012 14:27:24 -0700
-Subject: [PATCH 043/129] PNP: work around Dell 1536/1546 BIOS MMCONFIG bug
- that breaks USB
-
-commit eb31aae8cb5eb54e234ed2d857ddac868195d911 upstream.
-
-Some Dell BIOSes have MCFG tables that don't report the entire
-MMCONFIG area claimed by the chipset. If we move PCI devices into
-that claimed-but-unreported area, they don't work.
-
-This quirk reads the AMD MMCONFIG MSRs and adds PNP0C01 resources as
-needed to cover the entire area.
-
-Example problem scenario:
-
- BIOS-e820: 00000000cfec5400 - 00000000d4000000 (reserved)
- Fam 10h mmconf [d0000000, dfffffff]
- PCI: MMCONFIG for domain 0000 [bus 00-3f] at [mem 0xd0000000-0xd3ffffff] (base 0xd0000000)
- pnp 00:0c: [mem 0xd0000000-0xd3ffffff]
- pci 0000:00:12.0: reg 10: [mem 0xffb00000-0xffb00fff]
- pci 0000:00:12.0: no compatible bridge window for [mem 0xffb00000-0xffb00fff]
- pci 0000:00:12.0: BAR 0: assigned [mem 0xd4000000-0xd40000ff]
-
-Reported-by: Lisa Salimbas <lisa.salimbas at canonical.com>
-Reported-by: <thuban at singularity.fr>
-Tested-by: dann frazier <dann.frazier at canonical.com>
-References: https://bugzilla.kernel.org/show_bug.cgi?id=31602
-References: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/647043
-References: https://bugzilla.redhat.com/show_bug.cgi?id=770308
-Signed-off-by: Bjorn Helgaas <bhelgaas at google.com>
-Signed-off-by: Jesse Barnes <jbarnes at virtuousgeek.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/pnp/quirks.c | 42 ++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 42 insertions(+)
-
-diff --git a/drivers/pnp/quirks.c b/drivers/pnp/quirks.c
-index dfbd5a6..258fef2 100644
---- a/drivers/pnp/quirks.c
-+++ b/drivers/pnp/quirks.c
-@@ -295,6 +295,45 @@ static void quirk_system_pci_resources(struct pnp_dev *dev)
- }
- }
-
-+#ifdef CONFIG_AMD_NB
-+
-+#include <asm/amd_nb.h>
-+
-+static void quirk_amd_mmconfig_area(struct pnp_dev *dev)
-+{
-+ resource_size_t start, end;
-+ struct pnp_resource *pnp_res;
-+ struct resource *res;
-+ struct resource mmconfig_res, *mmconfig;
-+
-+ mmconfig = amd_get_mmconfig_range(&mmconfig_res);
-+ if (!mmconfig)
-+ return;
-+
-+ list_for_each_entry(pnp_res, &dev->resources, list) {
-+ res = &pnp_res->res;
-+ if (res->end < mmconfig->start || res->start > mmconfig->end ||
-+ (res->start == mmconfig->start && res->end == mmconfig->end))
-+ continue;
-+
-+ dev_info(&dev->dev, FW_BUG
-+ "%pR covers only part of AMD MMCONFIG area %pR; adding more reservations\n",
-+ res, mmconfig);
-+ if (mmconfig->start < res->start) {
-+ start = mmconfig->start;
-+ end = res->start - 1;
-+ pnp_add_mem_resource(dev, start, end, 0);
-+ }
-+ if (mmconfig->end > res->end) {
-+ start = res->end + 1;
-+ end = mmconfig->end;
-+ pnp_add_mem_resource(dev, start, end, 0);
-+ }
-+ break;
-+ }
-+}
-+#endif
-+
- /*
- * PnP Quirks
- * Cards or devices that need some tweaking due to incomplete resource info
-@@ -322,6 +361,9 @@ static struct pnp_fixup pnp_fixups[] = {
- /* PnP resources that might overlap PCI BARs */
- {"PNP0c01", quirk_system_pci_resources},
- {"PNP0c02", quirk_system_pci_resources},
-+#ifdef CONFIG_AMD_NB
-+ {"PNP0c01", quirk_amd_mmconfig_area},
-+#endif
- {""}
- };
-
---
-1.7.9.5
-
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
deleted file mode 100644
index ec9189d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0044-asix-fix-setting-custom-MAC-address-on-Asix-88178-de.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From 45268a6d90150936994e8b3e21eb91a54586685e Mon Sep 17 00:00:00 2001
-From: Jussi Kivilinna <jussi.kivilinna at mbnet.fi>
-Date: Tue, 10 Jan 2012 06:40:23 +0000
-Subject: [PATCH 044/129] asix: fix setting custom MAC address on Asix 88178
- devices
-
-commit 71bc5d94061516c4e70303570128797bcf768b10 upstream.
-
-In kernel v3.2 initialization sequence for Asix 88178 devices was changed so
-that hardware is reseted on every time interface is brought up (ifconfig up),
-instead just at USB probe time. This causes problem with setting custom MAC
-address to device as ax88178_reset causes reload of MAC address from EEPROM.
-
-This patch fixes the issue by rewriting MAC address at end of ax88178_reset.
-
-Signed-off-by: Jussi Kivilinna <jussi.kivilinna at mbnet.fi>
-Acked-by: Grant Grundler <grundler at chromium.org>
-Cc: Allan Chou <allan at asix.com.tw>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/net/usb/asix.c | 7 +++++++
- 1 file changed, 7 insertions(+)
-
-diff --git a/drivers/net/usb/asix.c b/drivers/net/usb/asix.c
-index dd2625a..b495821 100644
---- a/drivers/net/usb/asix.c
-+++ b/drivers/net/usb/asix.c
-@@ -1316,6 +1316,13 @@ static int ax88178_reset(struct usbnet *dev)
- if (ret < 0)
- return ret;
-
-+ /* Rewrite MAC address */
-+ memcpy(data->mac_addr, dev->net->dev_addr, ETH_ALEN);
-+ ret = asix_write_cmd(dev, AX_CMD_WRITE_NODE_ID, 0, 0, ETH_ALEN,
-+ data->mac_addr);
-+ if (ret < 0)
-+ return ret;
-+
- ret = asix_write_rx_ctl(dev, AX_DEFAULT_RX_CTL);
- if (ret < 0)
- return ret;
---
-1.7.9.5
-
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
deleted file mode 100644
index b39ee83..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0045-asix-fix-setting-custom-MAC-address-on-Asix-88772-de.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From fa83c408b16aae1d3d85868c528caf491e14af76 Mon Sep 17 00:00:00 2001
-From: Jussi Kivilinna <jussi.kivilinna at mbnet.fi>
-Date: Tue, 10 Jan 2012 06:40:17 +0000
-Subject: [PATCH 045/129] asix: fix setting custom MAC address on Asix 88772
- devices
-
-commit 8ef66bdc4bda6aac2dae73b84d79dc8c2db33637 upstream.
-
-In kernel v3.2 initialization sequence for Asix 88772 devices was changed so
-that hardware is reseted on every time interface is brought up (ifconfig up),
-instead just at USB probe time. This causes problem with setting custom MAC
-address to device as ax88772_reset causes reload of MAC address from EEPROM.
-
-This patch fixes the issue by rewriting MAC address at end of ax88772_reset.
-
-Signed-off-by: Jussi Kivilinna <jussi.kivilinna at mbnet.fi>
-Acked-by: Grant Grundler <grundler at chromium.org>
-Cc: Allan Chou <allan at asix.com.tw>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/net/usb/asix.c | 8 ++++++++
- 1 file changed, 8 insertions(+)
-
-diff --git a/drivers/net/usb/asix.c b/drivers/net/usb/asix.c
-index b495821..f5e063a 100644
---- a/drivers/net/usb/asix.c
-+++ b/drivers/net/usb/asix.c
-@@ -974,6 +974,7 @@ static int ax88772_link_reset(struct usbnet *dev)
-
- static int ax88772_reset(struct usbnet *dev)
- {
-+ struct asix_data *data = (struct asix_data *)&dev->data;
- int ret, embd_phy;
- u16 rx_ctl;
-
-@@ -1051,6 +1052,13 @@ static int ax88772_reset(struct usbnet *dev)
- goto out;
- }
-
-+ /* Rewrite MAC address */
-+ memcpy(data->mac_addr, dev->net->dev_addr, ETH_ALEN);
-+ ret = asix_write_cmd(dev, AX_CMD_WRITE_NODE_ID, 0, 0, ETH_ALEN,
-+ data->mac_addr);
-+ if (ret < 0)
-+ goto out;
-+
- /* Set RX_CTL to default values with 2k buffer, and enable cactus */
- ret = asix_write_rx_ctl(dev, AX_DEFAULT_RX_CTL);
- if (ret < 0)
---
-1.7.9.5
-
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
deleted file mode 100644
index 3fe1fc7..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0046-include-linux-crash_dump.h-needs-elf.h.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From a509baa477542eca7e6f6d8d23dc1ba04248a62f Mon Sep 17 00:00:00 2001
-From: Fabio Estevam <festevam at gmail.com>
-Date: Thu, 12 Jan 2012 17:20:20 -0800
-Subject: [PATCH 046/129] include/linux/crash_dump.h needs elf.h
-
-commit 1f536b9e9f85456df93614b3c2f6a1a2b7d7cb9b upstream.
-
-Building an ARM target we get the following warnings:
-
- CC arch/arm/kernel/setup.o
- In file included from arch/arm/kernel/setup.c:39:
- arch/arm/include/asm/elf.h:102:1: warning: "vmcore_elf64_check_arch" redefined
- In file included from arch/arm/kernel/setup.c:24:
- include/linux/crash_dump.h:30:1: warning: this is the location of the previous definition
-
-Quoting Russell King:
-
-"linux/crash_dump.h makes no attempt to include asm/elf.h, but it depends
-on stuff in asm/elf.h to determine how stuff inside this file is defined
-at parse time.
-
-So, if asm/elf.h is included after linux/crash_dump.h or not at all, you
-get a different result from the situation where asm/elf.h is included
-before."
-
-So add elf.h header to crash_dump.h to avoid this problem.
-
-The original discussion about this can be found at:
-http://www.spinics.net/lists/arm-kernel/msg154113.html
-
-Signed-off-by: Fabio Estevam <fabio.estevam at freescale.com>
-Cc: Russell King <rmk at arm.linux.org.uk>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- include/linux/crash_dump.h | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/include/linux/crash_dump.h b/include/linux/crash_dump.h
-index 5c4abce..b936763 100644
---- a/include/linux/crash_dump.h
-+++ b/include/linux/crash_dump.h
-@@ -5,6 +5,7 @@
- #include <linux/kexec.h>
- #include <linux/device.h>
- #include <linux/proc_fs.h>
-+#include <linux/elf.h>
-
- #define ELFCORE_ADDR_MAX (-1ULL)
- #define ELFCORE_ADDR_ERR (-2ULL)
---
-1.7.9.5
-
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
deleted file mode 100644
index 083f876..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0047-rtl8192se-Fix-BUG-caused-by-failure-to-check-skb-all.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From b12320439e84a510f0043ea4b2540080c8bbb9a7 Mon Sep 17 00:00:00 2001
-From: Larry Finger <Larry.Finger at lwfinger.net>
-Date: Wed, 4 Jan 2012 20:50:47 -0600
-Subject: [PATCH 047/129] rtl8192se: Fix BUG caused by failure to check skb
- allocation
-
-commit d90db4b12bc1b9b8a787ef28550fdb767ee25a49 upstream.
-
-When downloading firmware into the device, the driver fails to check the
-return when allocating an skb. When the allocation fails, a BUG can be
-generated, as seen in https://bugzilla.redhat.com/show_bug.cgi?id=771656.
-
-Signed-off-by: Larry Finger <Larry.Finger at lwfinger.net>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/net/wireless/rtlwifi/rtl8192se/fw.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/drivers/net/wireless/rtlwifi/rtl8192se/fw.c b/drivers/net/wireless/rtlwifi/rtl8192se/fw.c
-index 6f91a14..3fda6b1 100644
---- a/drivers/net/wireless/rtlwifi/rtl8192se/fw.c
-+++ b/drivers/net/wireless/rtlwifi/rtl8192se/fw.c
-@@ -196,6 +196,8 @@ static bool _rtl92s_firmware_downloadcode(struct ieee80211_hw *hw,
- /* Allocate skb buffer to contain firmware */
- /* info and tx descriptor info. */
- skb = dev_alloc_skb(frag_length);
-+ if (!skb)
-+ return false;
- skb_reserve(skb, extra_descoffset);
- seg_ptr = (u8 *)skb_put(skb, (u32)(frag_length -
- extra_descoffset));
-@@ -573,6 +575,8 @@ static bool _rtl92s_firmware_set_h2c_cmd(struct ieee80211_hw *hw, u8 h2c_cmd,
-
- len = _rtl92s_get_h2c_cmdlen(MAX_TRANSMIT_BUFFER_SIZE, 1, &cmd_len);
- skb = dev_alloc_skb(len);
-+ if (!skb)
-+ return false;
- cb_desc = (struct rtl_tcb_desc *)(skb->cb);
- cb_desc->queue_index = TXCMD_QUEUE;
- cb_desc->cmd_or_init = DESC_PACKET_TYPE_NORMAL;
---
-1.7.9.5
-
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
deleted file mode 100644
index e7063df..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0048-mac80211-fix-rx-key-NULL-pointer-dereference-in-prom.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From 12b3ec5c806e2daef619f068f80115f4dc0aa6bb Mon Sep 17 00:00:00 2001
-From: Stanislaw Gruszka <sgruszka at redhat.com>
-Date: Wed, 11 Jan 2012 09:26:54 +0100
-Subject: [PATCH 048/129] mac80211: fix rx->key NULL pointer dereference in
- promiscuous mode
-
-commit 1140afa862842ac3e56678693050760edc4ecde9 upstream.
-
-Since:
-
-commit 816c04fe7ef01dd9649f5ccfe796474db8708be5
-Author: Christian Lamparter <chunkeey at googlemail.com>
-Date: Sat Apr 30 15:24:30 2011 +0200
-
- mac80211: consolidate MIC failure report handling
-
-is possible to that we dereference rx->key == NULL when driver set
-RX_FLAG_MMIC_STRIPPED and not RX_FLAG_IV_STRIPPED and we are in
-promiscuous mode. This happen with rt73usb and rt61pci at least.
-
-Before the commit we always check rx->key against NULL, so I assume
-fix should be done in mac80211 (also mic_fail path has similar check).
-
-References:
-https://bugzilla.redhat.com/show_bug.cgi?id=769766
-http://rt2x00.serialmonkey.com/pipermail/users_rt2x00.serialmonkey.com/2012-January/004395.html
-
-Reported-by: Stuart D Gathman <stuart at gathman.org>
-Reported-by: Kai Wohlfahrt <kai.scorpio at gmail.com>
-Signed-off-by: Stanislaw Gruszka <sgruszka at redhat.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- net/mac80211/wpa.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/net/mac80211/wpa.c b/net/mac80211/wpa.c
-index f614ce7..28a39bb 100644
---- a/net/mac80211/wpa.c
-+++ b/net/mac80211/wpa.c
-@@ -106,7 +106,7 @@ ieee80211_rx_h_michael_mic_verify(struct ieee80211_rx_data *rx)
- if (status->flag & RX_FLAG_MMIC_ERROR)
- goto mic_fail;
-
-- if (!(status->flag & RX_FLAG_IV_STRIPPED))
-+ if (!(status->flag & RX_FLAG_IV_STRIPPED) && rx->key)
- goto update_iv;
-
- return RX_CONTINUE;
---
-1.7.9.5
-
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
deleted file mode 100644
index 1313103..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0049-ath9k-Fix-regression-in-channelwidth-switch-at-the-s.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-From f7938357cefb08ed00118138736f4d475fbc6578 Mon Sep 17 00:00:00 2001
-From: Rajkumar Manoharan <rmanohar at qca.qualcomm.com>
-Date: Mon, 9 Jan 2012 15:37:53 +0530
-Subject: [PATCH 049/129] ath9k: Fix regression in channelwidth switch at the
- same channel
-
-commit 1a19f77f3642b8194ad9cf55548cc5d92e841766 upstream.
-
-The commit "ath9k: Fix invalid noisefloor reading due to channel update"
-preserves the current channel noisefloor readings before updating
-channel type at the same channel index. It is also updating the curchan
-pointer. As survey updation is also referring curchan pointer to fetch
-the appropriate index, which might leads to invalid memory access. This
-patch partially reverts the change and stores the noise floor history
-buffer before updating channel type w/o updating curchan.
-
-Cc: Gary Morain <gmorain at google.com>
-Cc: Paul Stewart <pstew at google.com>
-Reported-by: Mohammed Shafi Shajakhan <mohammed at qca.qualcomm.com>
-Signed-off-by: Rajkumar Manoharan <rmanohar at qca.qualcomm.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/net/wireless/ath/ath9k/calib.c | 1 +
- drivers/net/wireless/ath/ath9k/main.c | 8 ++------
- 2 files changed, 3 insertions(+), 6 deletions(-)
-
-diff --git a/drivers/net/wireless/ath/ath9k/calib.c b/drivers/net/wireless/ath/ath9k/calib.c
-index 9953881..8ddef3e 100644
---- a/drivers/net/wireless/ath/ath9k/calib.c
-+++ b/drivers/net/wireless/ath/ath9k/calib.c
-@@ -402,6 +402,7 @@ bool ath9k_hw_getnf(struct ath_hw *ah, struct ath9k_channel *chan)
- ah->noise = ath9k_hw_getchan_noise(ah, chan);
- return true;
- }
-+EXPORT_SYMBOL(ath9k_hw_getnf);
-
- void ath9k_init_nfcal_hist_buffer(struct ath_hw *ah,
- struct ath9k_channel *chan)
-diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c
-index a9c5ae7..f76a814 100644
---- a/drivers/net/wireless/ath/ath9k/main.c
-+++ b/drivers/net/wireless/ath/ath9k/main.c
-@@ -1667,7 +1667,6 @@ static int ath9k_config(struct ieee80211_hw *hw, u32 changed)
-
- if (changed & IEEE80211_CONF_CHANGE_CHANNEL) {
- struct ieee80211_channel *curchan = hw->conf.channel;
-- struct ath9k_channel old_chan;
- int pos = curchan->hw_value;
- int old_pos = -1;
- unsigned long flags;
-@@ -1693,11 +1692,8 @@ static int ath9k_config(struct ieee80211_hw *hw, u32 changed)
- * Preserve the current channel values, before updating
- * the same channel
- */
-- if (old_pos == pos) {
-- memcpy(&old_chan, &sc->sc_ah->channels[pos],
-- sizeof(struct ath9k_channel));
-- ah->curchan = &old_chan;
-- }
-+ if (ah->curchan && (old_pos == pos))
-+ ath9k_hw_getnf(ah, ah->curchan);
-
- ath9k_cmn_update_ichannel(&sc->sc_ah->channels[pos],
- curchan, conf->channel_type);
---
-1.7.9.5
-
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
deleted file mode 100644
index a3cc188..0000000
--- 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
+++ /dev/null
@@ -1,179 +0,0 @@
-From 3a43cb3518148d31838d97bff3e6fcc29487499d Mon Sep 17 00:00:00 2001
-From: KAMEZAWA Hiroyuki <kamezawa.hiroyu at jp.fujitsu.com>
-Date: Thu, 12 Jan 2012 17:17:44 -0800
-Subject: [PATCH 050/129] memcg: add mem_cgroup_replace_page_cache() to fix
- LRU issue
-
-commit ab936cbcd02072a34b60d268f94440fd5cf1970b upstream.
-
-Commit ef6a3c6311 ("mm: add replace_page_cache_page() function") added a
-function replace_page_cache_page(). This function replaces a page in the
-radix-tree with a new page. WHen doing this, memory cgroup needs to fix
-up the accounting information. memcg need to check PCG_USED bit etc.
-
-In some(many?) cases, 'newpage' is on LRU before calling
-replace_page_cache(). So, memcg's LRU accounting information should be
-fixed, too.
-
-This patch adds mem_cgroup_replace_page_cache() and removes the old hooks.
- In that function, old pages will be unaccounted without touching
-res_counter and new page will be accounted to the memcg (of old page).
-WHen overwriting pc->mem_cgroup of newpage, take zone->lru_lock and avoid
-races with LRU handling.
-
-Background:
- replace_page_cache_page() is called by FUSE code in its splice() handling.
- Here, 'newpage' is replacing oldpage but this newpage is not a newly allocated
- page and may be on LRU. LRU mis-accounting will be critical for memory cgroup
- because rmdir() checks the whole LRU is empty and there is no account leak.
- If a page is on the other LRU than it should be, rmdir() will fail.
-
-This bug was added in March 2011, but no bug report yet. I guess there
-are not many people who use memcg and FUSE at the same time with upstream
-kernels.
-
-The result of this bug is that admin cannot destroy a memcg because of
-account leak. So, no panic, no deadlock. And, even if an active cgroup
-exist, umount can succseed. So no problem at shutdown.
-
-Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu at jp.fujitsu.com>
-Acked-by: Johannes Weiner <hannes at cmpxchg.org>
-Acked-by: Michal Hocko <mhocko at suse.cz>
-Cc: Miklos Szeredi <mszeredi at suse.cz>
-Cc: Hugh Dickins <hughd at google.com>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- include/linux/memcontrol.h | 6 ++++++
- mm/filemap.c | 18 ++----------------
- mm/memcontrol.c | 44 ++++++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 52 insertions(+), 16 deletions(-)
-
-diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h
-index b87068a..81572af 100644
---- a/include/linux/memcontrol.h
-+++ b/include/linux/memcontrol.h
-@@ -119,6 +119,8 @@ struct zone_reclaim_stat*
- mem_cgroup_get_reclaim_stat_from_page(struct page *page);
- extern void mem_cgroup_print_oom_info(struct mem_cgroup *memcg,
- struct task_struct *p);
-+extern void mem_cgroup_replace_page_cache(struct page *oldpage,
-+ struct page *newpage);
-
- #ifdef CONFIG_CGROUP_MEM_RES_CTLR_SWAP
- extern int do_swap_account;
-@@ -366,6 +368,10 @@ static inline
- void mem_cgroup_count_vm_event(struct mm_struct *mm, enum vm_event_item idx)
- {
- }
-+static inline void mem_cgroup_replace_page_cache(struct page *oldpage,
-+ struct page *newpage)
-+{
-+}
- #endif /* CONFIG_CGROUP_MEM_CONT */
-
- #if !defined(CONFIG_CGROUP_MEM_RES_CTLR) || !defined(CONFIG_DEBUG_VM)
-diff --git a/mm/filemap.c b/mm/filemap.c
-index 5f0a3c9..90286a4 100644
---- a/mm/filemap.c
-+++ b/mm/filemap.c
-@@ -393,24 +393,11 @@ EXPORT_SYMBOL(filemap_write_and_wait_range);
- int replace_page_cache_page(struct page *old, struct page *new, gfp_t gfp_mask)
- {
- int error;
-- struct mem_cgroup *memcg = NULL;
-
- VM_BUG_ON(!PageLocked(old));
- VM_BUG_ON(!PageLocked(new));
- VM_BUG_ON(new->mapping);
-
-- /*
-- * This is not page migration, but prepare_migration and
-- * end_migration does enough work for charge replacement.
-- *
-- * In the longer term we probably want a specialized function
-- * for moving the charge from old to new in a more efficient
-- * manner.
-- */
-- error = mem_cgroup_prepare_migration(old, new, &memcg, gfp_mask);
-- if (error)
-- return error;
--
- error = radix_tree_preload(gfp_mask & ~__GFP_HIGHMEM);
- if (!error) {
- struct address_space *mapping = old->mapping;
-@@ -432,13 +419,12 @@ int replace_page_cache_page(struct page *old, struct page *new, gfp_t gfp_mask)
- if (PageSwapBacked(new))
- __inc_zone_page_state(new, NR_SHMEM);
- spin_unlock_irq(&mapping->tree_lock);
-+ /* mem_cgroup codes must not be called under tree_lock */
-+ mem_cgroup_replace_page_cache(old, new);
- radix_tree_preload_end();
- if (freepage)
- freepage(old);
- page_cache_release(old);
-- mem_cgroup_end_migration(memcg, old, new, true);
-- } else {
-- mem_cgroup_end_migration(memcg, old, new, false);
- }
-
- return error;
-diff --git a/mm/memcontrol.c b/mm/memcontrol.c
-index b63f5f7..f538e9b 100644
---- a/mm/memcontrol.c
-+++ b/mm/memcontrol.c
-@@ -3366,6 +3366,50 @@ void mem_cgroup_end_migration(struct mem_cgroup *memcg,
- cgroup_release_and_wakeup_rmdir(&memcg->css);
- }
-
-+/*
-+ * At replace page cache, newpage is not under any memcg but it's on
-+ * LRU. So, this function doesn't touch res_counter but handles LRU
-+ * in correct way. Both pages are locked so we cannot race with uncharge.
-+ */
-+void mem_cgroup_replace_page_cache(struct page *oldpage,
-+ struct page *newpage)
-+{
-+ struct mem_cgroup *memcg;
-+ struct page_cgroup *pc;
-+ struct zone *zone;
-+ enum charge_type type = MEM_CGROUP_CHARGE_TYPE_CACHE;
-+ unsigned long flags;
-+
-+ if (mem_cgroup_disabled())
-+ return;
-+
-+ pc = lookup_page_cgroup(oldpage);
-+ /* fix accounting on old pages */
-+ lock_page_cgroup(pc);
-+ memcg = pc->mem_cgroup;
-+ mem_cgroup_charge_statistics(memcg, PageCgroupCache(pc), -1);
-+ ClearPageCgroupUsed(pc);
-+ unlock_page_cgroup(pc);
-+
-+ if (PageSwapBacked(oldpage))
-+ type = MEM_CGROUP_CHARGE_TYPE_SHMEM;
-+
-+ zone = page_zone(newpage);
-+ pc = lookup_page_cgroup(newpage);
-+ /*
-+ * Even if newpage->mapping was NULL before starting replacement,
-+ * the newpage may be on LRU(or pagevec for LRU) already. We lock
-+ * LRU while we overwrite pc->mem_cgroup.
-+ */
-+ spin_lock_irqsave(&zone->lru_lock, flags);
-+ if (PageLRU(newpage))
-+ del_page_from_lru_list(zone, newpage, page_lru(newpage));
-+ __mem_cgroup_commit_charge(memcg, newpage, 1, pc, type);
-+ if (PageLRU(newpage))
-+ add_page_to_lru_list(zone, newpage, page_lru(newpage));
-+ spin_unlock_irqrestore(&zone->lru_lock, flags);
-+}
-+
- #ifdef CONFIG_DEBUG_VM
- static struct page_cgroup *lookup_page_cgroup_used(struct page *page)
- {
---
-1.7.9.5
-
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
deleted file mode 100644
index fce1568..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0051-x86-Fix-mmap-random-address-range.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 65ce587697fd360eea3dc06a3a1422d63a159fd1 Mon Sep 17 00:00:00 2001
-From: Ludwig Nussel <ludwig.nussel at suse.de>
-Date: Tue, 15 Nov 2011 14:46:46 -0800
-Subject: [PATCH 051/129] x86: Fix mmap random address range
-
-commit 9af0c7a6fa860698d080481f24a342ba74b68982 upstream.
-
-On x86_32 casting the unsigned int result of get_random_int() to
-long may result in a negative value. On x86_32 the range of
-mmap_rnd() therefore was -255 to 255. The 32bit mode on x86_64
-used 0 to 255 as intended.
-
-The bug was introduced by 675a081 ("x86: unify mmap_{32|64}.c")
-in January 2008.
-
-Signed-off-by: Ludwig Nussel <ludwig.nussel at suse.de>
-Cc: Linus Torvalds <torvalds at linux-foundation.org>
-Cc: harvey.harrison at gmail.com
-Cc: "H. Peter Anvin" <hpa at zytor.com>
-Cc: Harvey Harrison <harvey.harrison at gmail.com>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Link: http://lkml.kernel.org/r/201111152246.pAFMklOB028527@wpaz5.hot.corp.google.com
-Signed-off-by: Ingo Molnar <mingo at elte.hu>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- arch/x86/mm/mmap.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/arch/x86/mm/mmap.c b/arch/x86/mm/mmap.c
-index 4b5ba85..845df68 100644
---- a/arch/x86/mm/mmap.c
-+++ b/arch/x86/mm/mmap.c
-@@ -75,9 +75,9 @@ static unsigned long mmap_rnd(void)
- */
- if (current->flags & PF_RANDOMIZE) {
- if (mmap_is_ia32())
-- rnd = (long)get_random_int() % (1<<8);
-+ rnd = get_random_int() % (1<<8);
- else
-- rnd = (long)(get_random_int() % (1<<28));
-+ rnd = get_random_int() % (1<<28);
- }
- return rnd << PAGE_SHIFT;
- }
---
-1.7.9.5
-
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
deleted file mode 100644
index 5d261cc..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0052-UBI-fix-nameless-volumes-handling.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From addbb632cd11d02b5386a9ebf040b0f89b6e2c84 Mon Sep 17 00:00:00 2001
-From: Richard Weinberger <richard at nod.at>
-Date: Fri, 13 Jan 2012 15:07:40 +0100
-Subject: [PATCH 052/129] UBI: fix nameless volumes handling
-
-commit 4a59c797a18917a5cf3ff7ade296b46134d91e6a upstream.
-
-Currently it's possible to create a volume without a name. E.g:
-ubimkvol -n 32 -s 2MiB -t static /dev/ubi0 -N ""
-
-After that vtbl_check() will always fail because it does not permit
-empty strings.
-
-Signed-off-by: Richard Weinberger <richard at nod.at>
-Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy at linux.intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/mtd/ubi/cdev.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/drivers/mtd/ubi/cdev.c b/drivers/mtd/ubi/cdev.c
-index 3320a50..ad76592 100644
---- a/drivers/mtd/ubi/cdev.c
-+++ b/drivers/mtd/ubi/cdev.c
-@@ -632,6 +632,9 @@ static int verify_mkvol_req(const struct ubi_device *ubi,
- if (req->alignment != 1 && n)
- goto bad;
-
-+ if (!req->name[0] || !req->name_len)
-+ goto bad;
-+
- if (req->name_len > UBI_VOL_NAME_MAX) {
- err = -ENAMETOOLONG;
- goto bad;
---
-1.7.9.5
-
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
deleted file mode 100644
index 83cd1b1..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0053-UBI-fix-debugging-messages.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 96bd5436400b64fe57b0be756f9424b1e1d1e430 Mon Sep 17 00:00:00 2001
-From: Artem Bityutskiy <artem.bityutskiy at linux.intel.com>
-Date: Tue, 10 Jan 2012 19:32:30 +0200
-Subject: [PATCH 053/129] UBI: fix debugging messages
-
-commit 72f0d453d81d35087b1d3ad7c8285628c2be6e1d upstream.
-
-Patch ab50ff684707031ed4bad2fdd313208ae392e5bb broke UBI debugging messages:
-before that commit when UBI debugging was enabled, users saw few useful
-debugging messages after attaching an MTD device. However, that patch turned
-'dbg_msg()' into 'pr_debug()', so to enable the debugging messages users have
-to enable them first via /sys/kernel/debug/dynamic_debug/control, which is
-very impractical.
-
-This commit makes 'dbg_msg()' to use 'printk()' instead of 'pr_debug()', just
-as it was before the breakage.
-
-Signed-off-by: Artem Bityutskiy <artem.bityutskiy at linux.intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/mtd/ubi/debug.h | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/mtd/ubi/debug.h b/drivers/mtd/ubi/debug.h
-index 64fbb00..ead2cd1 100644
---- a/drivers/mtd/ubi/debug.h
-+++ b/drivers/mtd/ubi/debug.h
-@@ -43,7 +43,10 @@
- pr_debug("UBI DBG " type ": " fmt "\n", ##__VA_ARGS__)
-
- /* Just a debugging messages not related to any specific UBI subsystem */
--#define dbg_msg(fmt, ...) ubi_dbg_msg("msg", fmt, ##__VA_ARGS__)
-+#define dbg_msg(fmt, ...) \
-+ printk(KERN_DEBUG "UBI DBG (pid %d): %s: " fmt "\n", \
-+ current->pid, __func__, ##__VA_ARGS__)
-+
- /* General debugging messages */
- #define dbg_gen(fmt, ...) ubi_dbg_msg("gen", fmt, ##__VA_ARGS__)
- /* Messages from the eraseblock association sub-system */
---
-1.7.9.5
-
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
deleted file mode 100644
index 2790744..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0054-UBI-make-vid_hdr-non-static.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From f767fd8bc40accebf74bdee01946ed6452a626df Mon Sep 17 00:00:00 2001
-From: Richard Weinberger <rw at linutronix.de>
-Date: Thu, 22 Dec 2011 16:12:57 +0100
-Subject: [PATCH 054/129] UBI: make vid_hdr non-static
-
-commit 6bdccffe8c4268d02f71873102131fb6ed37ed9a upstream.
-
-Remove 'static' modifier from the 'vid_hdr' local variable. I do not know
-how it slipped in, but this is a bug and will break UBI if someone attaches
-2 UBI volumes at the same time.
-
-Artem: amended teh commit message, added -stable.
-
-Signed-off-by: Richard Weinberger <rw at linutronix.de>
-Signed-off-by: Artem Bityutskiy <artem.bityutskiy at linux.intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/mtd/ubi/vtbl.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/mtd/ubi/vtbl.c b/drivers/mtd/ubi/vtbl.c
-index 9ad18da..890754c 100644
---- a/drivers/mtd/ubi/vtbl.c
-+++ b/drivers/mtd/ubi/vtbl.c
-@@ -306,7 +306,7 @@ static int create_vtbl(struct ubi_device *ubi, struct ubi_scan_info *si,
- int copy, void *vtbl)
- {
- int err, tries = 0;
-- static struct ubi_vid_hdr *vid_hdr;
-+ struct ubi_vid_hdr *vid_hdr;
- struct ubi_scan_leb *new_seb;
-
- ubi_msg("create volume table (copy #%d)", copy + 1);
---
-1.7.9.5
-
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
deleted file mode 100644
index 9c45712..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0055-UBIFS-fix-debugging-messages.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 6c07a86a7e8ac8231be518705c91ba4b32da1813 Mon Sep 17 00:00:00 2001
-From: Artem Bityutskiy <artem.bityutskiy at linux.intel.com>
-Date: Tue, 10 Jan 2012 19:32:30 +0200
-Subject: [PATCH 055/129] UBIFS: fix debugging messages
-
-commit d34315da9146253351146140ea4b277193ee5e5f upstream.
-
-Patch 56e46742e846e4de167dde0e1e1071ace1c882a5 broke UBIFS debugging messages:
-before that commit when UBIFS debugging was enabled, users saw few useful
-debugging messages after mount. However, that patch turned 'dbg_msg()' into
-'pr_debug()', so to enable the debugging messages users have to enable them
-first via /sys/kernel/debug/dynamic_debug/control, which is very impractical.
-
-This commit makes 'dbg_msg()' to use 'printk()' instead of 'pr_debug()', just
-as it was before the breakage.
-
-Signed-off-by: Artem Bityutskiy <artem.bityutskiy at linux.intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- fs/ubifs/debug.h | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/fs/ubifs/debug.h b/fs/ubifs/debug.h
-index 8d9c468..3f65829 100644
---- a/fs/ubifs/debug.h
-+++ b/fs/ubifs/debug.h
-@@ -190,7 +190,10 @@ extern spinlock_t dbg_lock;
- } while (0)
-
- /* Just a debugging messages not related to any specific UBIFS subsystem */
--#define dbg_msg(fmt, ...) ubifs_dbg_msg("msg", fmt, ##__VA_ARGS__)
-+#define dbg_msg(fmt, ...) \
-+ printk(KERN_DEBUG "UBIFS DBG (pid %d): %s: " fmt "\n", current->pid, \
-+ __func__, ##__VA_ARGS__)
-+
- /* General messages */
- #define dbg_gen(fmt, ...) ubifs_dbg_msg("gen", fmt, ##__VA_ARGS__)
- /* Additional journal messages */
---
-1.7.9.5
-
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
deleted file mode 100644
index 8ad2285..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0056-UBIFS-make-debugging-messages-light-again.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From 400fba6cfdfd168d550113f665c3b168cf9214cf Mon Sep 17 00:00:00 2001
-From: Artem Bityutskiy <artem.bityutskiy at linux.intel.com>
-Date: Wed, 11 Jan 2012 15:13:27 +0200
-Subject: [PATCH 056/129] UBIFS: make debugging messages light again
-
-commit 1f5d78dc4823a85f112aaa2d0f17624f8c2a6c52 upstream.
-
-We switch to dynamic debugging in commit
-56e46742e846e4de167dde0e1e1071ace1c882a5 but did not take into account that
-now we do not control anymore whether a specific message is enabled or not.
-So now we lock the "dbg_lock" and release it in every debugging macro, which
-make them not so light-weight.
-
-This commit removes the "dbg_lock" protection from the debugging macros to
-fix the issue.
-
-The downside is that now our DBGKEY() stuff is broken, but this is not
-critical at all and will be fixed later.
-
-Signed-off-by: Artem Bityutskiy <artem.bityutskiy at linux.intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- fs/ubifs/debug.h | 12 +++++-------
- 1 file changed, 5 insertions(+), 7 deletions(-)
-
-diff --git a/fs/ubifs/debug.h b/fs/ubifs/debug.h
-index 3f65829..c9d2941 100644
---- a/fs/ubifs/debug.h
-+++ b/fs/ubifs/debug.h
-@@ -175,19 +175,17 @@ const char *dbg_key_str1(const struct ubifs_info *c,
- const union ubifs_key *key);
-
- /*
-- * DBGKEY macros require @dbg_lock to be held, which it is in the dbg message
-- * macros.
-+ * TODO: these macros are now broken because there is no locking around them
-+ * and we use a global buffer for the key string. This means that in case of
-+ * concurrent execution we will end up with incorrect and messy key strings.
- */
- #define DBGKEY(key) dbg_key_str0(c, (key))
- #define DBGKEY1(key) dbg_key_str1(c, (key))
-
- extern spinlock_t dbg_lock;
-
--#define ubifs_dbg_msg(type, fmt, ...) do { \
-- spin_lock(&dbg_lock); \
-- pr_debug("UBIFS DBG " type ": " fmt "\n", ##__VA_ARGS__); \
-- spin_unlock(&dbg_lock); \
--} while (0)
-+#define ubifs_dbg_msg(type, fmt, ...) \
-+ pr_debug("UBIFS DBG " type ": " fmt "\n", ##__VA_ARGS__)
-
- /* Just a debugging messages not related to any specific UBIFS subsystem */
- #define dbg_msg(fmt, ...) \
---
-1.7.9.5
-
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
deleted file mode 100644
index 528fc93..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0057-i2c-Fix-error-value-returned-by-several-bus-drivers.patch
+++ /dev/null
@@ -1,197 +0,0 @@
-From c9f51b32db94ab1e2dc628cc379f7cc7013801f5 Mon Sep 17 00:00:00 2001
-From: Jean Delvare <khali at linux-fr.org>
-Date: Thu, 12 Jan 2012 20:32:03 +0100
-Subject: [PATCH 057/129] i2c: Fix error value returned by several bus drivers
-
-commit 7c1f59c9d5caf3a84f35549b5d58f3c055a68da5 upstream.
-
-When adding checks for ACPI resource conflicts to many bus drivers,
-not enough attention was paid to the error paths, and for several
-drivers this causes 0 to be returned on error in some cases. Fix this
-by properly returning a non-zero value on every error.
-
-Signed-off-by: Jean Delvare <khali at linux-fr.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/i2c/busses/i2c-ali1535.c | 11 +++++++----
- drivers/i2c/busses/i2c-nforce2.c | 2 +-
- drivers/i2c/busses/i2c-sis5595.c | 4 ++--
- drivers/i2c/busses/i2c-sis630.c | 6 +++++-
- drivers/i2c/busses/i2c-viapro.c | 7 +++++--
- 5 files changed, 20 insertions(+), 10 deletions(-)
-
-diff --git a/drivers/i2c/busses/i2c-ali1535.c b/drivers/i2c/busses/i2c-ali1535.c
-index b6807db..5b667e5 100644
---- a/drivers/i2c/busses/i2c-ali1535.c
-+++ b/drivers/i2c/busses/i2c-ali1535.c
-@@ -140,7 +140,7 @@ static unsigned short ali1535_smba;
- defined to make the transition easier. */
- static int __devinit ali1535_setup(struct pci_dev *dev)
- {
-- int retval = -ENODEV;
-+ int retval;
- unsigned char temp;
-
- /* Check the following things:
-@@ -155,6 +155,7 @@ static int __devinit ali1535_setup(struct pci_dev *dev)
- if (ali1535_smba == 0) {
- dev_warn(&dev->dev,
- "ALI1535_smb region uninitialized - upgrade BIOS?\n");
-+ retval = -ENODEV;
- goto exit;
- }
-
-@@ -167,6 +168,7 @@ static int __devinit ali1535_setup(struct pci_dev *dev)
- ali1535_driver.name)) {
- dev_err(&dev->dev, "ALI1535_smb region 0x%x already in use!\n",
- ali1535_smba);
-+ retval = -EBUSY;
- goto exit;
- }
-
-@@ -174,6 +176,7 @@ static int __devinit ali1535_setup(struct pci_dev *dev)
- pci_read_config_byte(dev, SMBCFG, &temp);
- if ((temp & ALI1535_SMBIO_EN) == 0) {
- dev_err(&dev->dev, "SMB device not enabled - upgrade BIOS?\n");
-+ retval = -ENODEV;
- goto exit_free;
- }
-
-@@ -181,6 +184,7 @@ static int __devinit ali1535_setup(struct pci_dev *dev)
- pci_read_config_byte(dev, SMBHSTCFG, &temp);
- if ((temp & 1) == 0) {
- dev_err(&dev->dev, "SMBus controller not enabled - upgrade BIOS?\n");
-+ retval = -ENODEV;
- goto exit_free;
- }
-
-@@ -198,12 +202,11 @@ static int __devinit ali1535_setup(struct pci_dev *dev)
- dev_dbg(&dev->dev, "SMBREV = 0x%X\n", temp);
- dev_dbg(&dev->dev, "ALI1535_smba = 0x%X\n", ali1535_smba);
-
-- retval = 0;
--exit:
-- return retval;
-+ return 0;
-
- exit_free:
- release_region(ali1535_smba, ALI1535_SMB_IOSIZE);
-+exit:
- return retval;
- }
-
-diff --git a/drivers/i2c/busses/i2c-nforce2.c b/drivers/i2c/busses/i2c-nforce2.c
-index ff1e127..4853b52 100644
---- a/drivers/i2c/busses/i2c-nforce2.c
-+++ b/drivers/i2c/busses/i2c-nforce2.c
-@@ -356,7 +356,7 @@ static int __devinit nforce2_probe_smb (struct pci_dev *dev, int bar,
- error = acpi_check_region(smbus->base, smbus->size,
- nforce2_driver.name);
- if (error)
-- return -1;
-+ return error;
-
- if (!request_region(smbus->base, smbus->size, nforce2_driver.name)) {
- dev_err(&smbus->adapter.dev, "Error requesting region %02x .. %02X for %s\n",
-diff --git a/drivers/i2c/busses/i2c-sis5595.c b/drivers/i2c/busses/i2c-sis5595.c
-index 4375866..6d60284 100644
---- a/drivers/i2c/busses/i2c-sis5595.c
-+++ b/drivers/i2c/busses/i2c-sis5595.c
-@@ -147,7 +147,7 @@ static int __devinit sis5595_setup(struct pci_dev *SIS5595_dev)
- u16 a;
- u8 val;
- int *i;
-- int retval = -ENODEV;
-+ int retval;
-
- /* Look for imposters */
- for (i = blacklist; *i != 0; i++) {
-@@ -223,7 +223,7 @@ static int __devinit sis5595_setup(struct pci_dev *SIS5595_dev)
-
- error:
- release_region(sis5595_base + SMB_INDEX, 2);
-- return retval;
-+ return -ENODEV;
- }
-
- static int sis5595_transaction(struct i2c_adapter *adap)
-diff --git a/drivers/i2c/busses/i2c-sis630.c b/drivers/i2c/busses/i2c-sis630.c
-index e6f539e..b617fd0 100644
---- a/drivers/i2c/busses/i2c-sis630.c
-+++ b/drivers/i2c/busses/i2c-sis630.c
-@@ -393,7 +393,7 @@ static int __devinit sis630_setup(struct pci_dev *sis630_dev)
- {
- unsigned char b;
- struct pci_dev *dummy = NULL;
-- int retval = -ENODEV, i;
-+ int retval, i;
-
- /* check for supported SiS devices */
- for (i=0; supported[i] > 0 ; i++) {
-@@ -418,18 +418,21 @@ static int __devinit sis630_setup(struct pci_dev *sis630_dev)
- */
- if (pci_read_config_byte(sis630_dev, SIS630_BIOS_CTL_REG,&b)) {
- dev_err(&sis630_dev->dev, "Error: Can't read bios ctl reg\n");
-+ retval = -ENODEV;
- goto exit;
- }
- /* if ACPI already enabled , do nothing */
- if (!(b & 0x80) &&
- pci_write_config_byte(sis630_dev, SIS630_BIOS_CTL_REG, b | 0x80)) {
- dev_err(&sis630_dev->dev, "Error: Can't enable ACPI\n");
-+ retval = -ENODEV;
- goto exit;
- }
-
- /* Determine the ACPI base address */
- if (pci_read_config_word(sis630_dev,SIS630_ACPI_BASE_REG,&acpi_base)) {
- dev_err(&sis630_dev->dev, "Error: Can't determine ACPI base address\n");
-+ retval = -ENODEV;
- goto exit;
- }
-
-@@ -445,6 +448,7 @@ static int __devinit sis630_setup(struct pci_dev *sis630_dev)
- sis630_driver.name)) {
- dev_err(&sis630_dev->dev, "SMBus registers 0x%04x-0x%04x already "
- "in use!\n", acpi_base + SMB_STS, acpi_base + SMB_SAA);
-+ retval = -EBUSY;
- goto exit;
- }
-
-diff --git a/drivers/i2c/busses/i2c-viapro.c b/drivers/i2c/busses/i2c-viapro.c
-index 0b012f1..58261d4 100644
---- a/drivers/i2c/busses/i2c-viapro.c
-+++ b/drivers/i2c/busses/i2c-viapro.c
-@@ -324,7 +324,7 @@ static int __devinit vt596_probe(struct pci_dev *pdev,
- const struct pci_device_id *id)
- {
- unsigned char temp;
-- int error = -ENODEV;
-+ int error;
-
- /* Determine the address of the SMBus areas */
- if (force_addr) {
-@@ -390,6 +390,7 @@ found:
- dev_err(&pdev->dev, "SMBUS: Error: Host SMBus "
- "controller not enabled! - upgrade BIOS or "
- "use force=1\n");
-+ error = -ENODEV;
- goto release_region;
- }
- }
-@@ -422,9 +423,11 @@ found:
- "SMBus Via Pro adapter at %04x", vt596_smba);
-
- vt596_pdev = pci_dev_get(pdev);
-- if (i2c_add_adapter(&vt596_adapter)) {
-+ error = i2c_add_adapter(&vt596_adapter);
-+ if (error) {
- pci_dev_put(vt596_pdev);
- vt596_pdev = NULL;
-+ goto release_region;
- }
-
- /* Always return failure here. This is to allow other drivers to bind
---
-1.7.9.5
-
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
deleted file mode 100644
index db3a0d0..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0058-mmc-core-Fix-voltage-select-in-DDR-mode.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 4272b6efe99cd197257777ddeaff1b2bf5428a13 Mon Sep 17 00:00:00 2001
-From: Girish K S <girish.shivananjappa at linaro.org>
-Date: Thu, 15 Dec 2011 17:27:42 +0530
-Subject: [PATCH 058/129] mmc: core: Fix voltage select in DDR mode
-
-commit 913047e9e5787a90696533a9f109552b7694ecc9 upstream.
-
-This patch fixes the wrong comparison before setting the interface
-voltage in DDR mode.
-
-The assignment to the variable ddr before comaprison is either
-ddr = MMC_1_2V_DDR_MODE; or ddr == MMC_1_8V_DDR_MODE. But the comparison
-is done with the extended csd value if ddr == EXT_CSD_CARD_TYPE_DDR_1_2V.
-
-Signed-off-by: Girish K S <girish.shivananjappa at linaro.org>
-Acked-by: Subhash Jadavani <subhashj at codeaurora.org>
-Acked-by: Philip Rakity <prakity at marvell.com>
-Signed-off-by: Chris Ball <cjb at laptop.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/mmc/core/mmc.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c
-index d240427..fb7c27f 100644
---- a/drivers/mmc/core/mmc.c
-+++ b/drivers/mmc/core/mmc.c
-@@ -1048,7 +1048,7 @@ static int mmc_init_card(struct mmc_host *host, u32 ocr,
- *
- * WARNING: eMMC rules are NOT the same as SD DDR
- */
-- if (ddr == EXT_CSD_CARD_TYPE_DDR_1_2V) {
-+ if (ddr == MMC_1_2V_DDR_MODE) {
- err = mmc_set_signal_voltage(host,
- MMC_SIGNAL_VOLTAGE_120, 0);
- if (err)
---
-1.7.9.5
-
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
deleted file mode 100644
index 2d01133..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0059-mmc-sdhci-Fix-tuning-timer-incorrect-setting-when-su.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 5fda16f987c13e470fd4a4ae87dd3ed6b4f5be46 Mon Sep 17 00:00:00 2001
-From: Aaron Lu <aaron.lu at amd.com>
-Date: Wed, 28 Dec 2011 11:11:12 +0800
-Subject: [PATCH 059/129] mmc: sdhci: Fix tuning timer incorrect setting when
- suspending host
-
-commit c6ced0db08010ed75df221a2946c5228454b38d5 upstream.
-
-When suspending host, the tuning timer shoule be deactivated.
-And the HOST_NEEDS_TUNING flag should be set after tuning timer is
-deactivated.
-
-Signed-off-by: Philip Rakity <prakity at marvell.com>
-Signed-off-by: Aaron Lu <aaron.lu at amd.com>
-Acked-by: Adrian Hunter <adrian.hunter at intel.com>
-Signed-off-by: Chris Ball <cjb at laptop.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/mmc/host/sdhci.c | 3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
-
-diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
-index 19ed580..9279c1b 100644
---- a/drivers/mmc/host/sdhci.c
-+++ b/drivers/mmc/host/sdhci.c
-@@ -2336,9 +2336,8 @@ int sdhci_suspend_host(struct sdhci_host *host)
- /* Disable tuning since we are suspending */
- if (host->version >= SDHCI_SPEC_300 && host->tuning_count &&
- host->tuning_mode == SDHCI_TUNING_MODE_1) {
-+ del_timer_sync(&host->tuning_timer);
- host->flags &= ~SDHCI_NEEDS_RETUNING;
-- mod_timer(&host->tuning_timer, jiffies +
-- host->tuning_count * HZ);
- }
-
- ret = mmc_suspend_host(host->mmc);
---
-1.7.9.5
-
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
deleted file mode 100644
index 0760c62..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0060-mmc-sd-Fix-SDR12-timing-regression.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 54914e0a2c7c46dd863ba4ca2f530591c8cea37f Mon Sep 17 00:00:00 2001
-From: Alexander Elbs <alex at segv.de>
-Date: Tue, 3 Jan 2012 23:26:53 -0500
-Subject: [PATCH 060/129] mmc: sd: Fix SDR12 timing regression
-
-commit dd8df17fe83483d7ea06ff229895e35a42071599 upstream.
-
-This patch fixes a failure to recognize SD cards reported on a Dell
-Vostro with O2 Micro SD card reader. Patch 49c468f ("mmc: sd: add
-support for uhs bus speed mode selection") caused the problem, by
-setting the SDHCI_CTRL_HISPD flag even for legacy timings.
-
-Signed-off-by: Alexander Elbs <alex at segv.de>
-Acked-by: Philip Rakity <prakity at marvell.com>
-Acked-by: Arindam Nath <arindam.nath at amd.com>
-Signed-off-by: Chris Ball <cjb at laptop.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/mmc/host/sdhci.c | 3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
-
-diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
-index 9279c1b..6ce32a7 100644
---- a/drivers/mmc/host/sdhci.c
-+++ b/drivers/mmc/host/sdhci.c
-@@ -1364,8 +1364,7 @@ static void sdhci_do_set_ios(struct sdhci_host *host, struct mmc_ios *ios)
- if ((ios->timing == MMC_TIMING_UHS_SDR50) ||
- (ios->timing == MMC_TIMING_UHS_SDR104) ||
- (ios->timing == MMC_TIMING_UHS_DDR50) ||
-- (ios->timing == MMC_TIMING_UHS_SDR25) ||
-- (ios->timing == MMC_TIMING_UHS_SDR12))
-+ (ios->timing == MMC_TIMING_UHS_SDR25))
- ctrl |= SDHCI_CTRL_HISPD;
-
- ctrl_2 = sdhci_readw(host, SDHCI_HOST_CONTROL2);
---
-1.7.9.5
-
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
deleted file mode 100644
index 293dd52..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0061-V4L-DVB-v4l2-ioctl-integer-overflow-in-video_usercop.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From 51aa88e66716df0c5b5df5b8815cbf0b7b50ac35 Mon Sep 17 00:00:00 2001
-From: Dan Carpenter <dan.carpenter at oracle.com>
-Date: Thu, 5 Jan 2012 02:27:57 -0300
-Subject: [PATCH 061/129] V4L/DVB: v4l2-ioctl: integer overflow in
- video_usercopy()
-
-commit 6c06108be53ca5e94d8b0e93883d534dd9079646 upstream.
-
-If ctrls->count is too high the multiplication could overflow and
-array_size would be lower than expected. Mauro and Hans Verkuil
-suggested that we cap it at 1024. That comes from the maximum
-number of controls with lots of room for expantion.
-
-$ grep V4L2_CID include/linux/videodev2.h | wc -l
-211
-
-Signed-off-by: Dan Carpenter <dan.carpenter at oracle.com>
-Signed-off-by: Mauro Carvalho Chehab <mchehab at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/media/video/v4l2-ioctl.c | 4 ++++
- include/linux/videodev2.h | 1 +
- 2 files changed, 5 insertions(+)
-
-diff --git a/drivers/media/video/v4l2-ioctl.c b/drivers/media/video/v4l2-ioctl.c
-index e1da8fc..639abee 100644
---- a/drivers/media/video/v4l2-ioctl.c
-+++ b/drivers/media/video/v4l2-ioctl.c
-@@ -2226,6 +2226,10 @@ static int check_array_args(unsigned int cmd, void *parg, size_t *array_size,
- struct v4l2_ext_controls *ctrls = parg;
-
- if (ctrls->count != 0) {
-+ if (ctrls->count > V4L2_CID_MAX_CTRLS) {
-+ ret = -EINVAL;
-+ break;
-+ }
- *user_ptr = (void __user *)ctrls->controls;
- *kernel_ptr = (void *)&ctrls->controls;
- *array_size = sizeof(struct v4l2_ext_control)
-diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h
-index 4b752d5..45a7698 100644
---- a/include/linux/videodev2.h
-+++ b/include/linux/videodev2.h
-@@ -1131,6 +1131,7 @@ struct v4l2_querymenu {
- #define V4L2_CTRL_FLAG_NEXT_CTRL 0x80000000
-
- /* User-class control IDs defined by V4L2 */
-+#define V4L2_CID_MAX_CTRLS 1024
- #define V4L2_CID_BASE (V4L2_CTRL_CLASS_USER | 0x900)
- #define V4L2_CID_USER_BASE V4L2_CID_BASE
- /* IDs reserved for driver specific controls */
---
-1.7.9.5
-
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
deleted file mode 100644
index 1ca3eae..0000000
--- 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
+++ /dev/null
@@ -1,71 +0,0 @@
-From 0eeb9347d25c283bdbdd1a9e4d7d4881852887d1 Mon Sep 17 00:00:00 2001
-From: Gleb Natapov <gleb at redhat.com>
-Date: Sun, 8 Jan 2012 17:07:28 +0200
-Subject: [PATCH 062/129] Unused iocbs in a batch should not be accounted as
- active.
-
-commit 69e4747ee9727d660b88d7e1efe0f4afcb35db1b upstream.
-
-Since commit 080d676de095 ("aio: allocate kiocbs in batches") iocbs are
-allocated in a batch during processing of first iocbs. All iocbs in a
-batch are automatically added to ctx->active_reqs list and accounted in
-ctx->reqs_active.
-
-If one (not the last one) of iocbs submitted by an user fails, further
-iocbs are not processed, but they are still present in ctx->active_reqs
-and accounted in ctx->reqs_active. This causes process to stuck in a D
-state in wait_for_all_aios() on exit since ctx->reqs_active will never
-go down to zero. Furthermore since kiocb_batch_free() frees iocb
-without removing it from active_reqs list the list become corrupted
-which may cause oops.
-
-Fix this by removing iocb from ctx->active_reqs and updating
-ctx->reqs_active in kiocb_batch_free().
-
-Signed-off-by: Gleb Natapov <gleb at redhat.com>
-Reviewed-by: Jeff Moyer <jmoyer at redhat.com>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- fs/aio.c | 11 +++++++++--
- 1 file changed, 9 insertions(+), 2 deletions(-)
-
-diff --git a/fs/aio.c b/fs/aio.c
-index 78c514c..969beb0 100644
---- a/fs/aio.c
-+++ b/fs/aio.c
-@@ -476,14 +476,21 @@ static void kiocb_batch_init(struct kiocb_batch *batch, long total)
- batch->count = total;
- }
-
--static void kiocb_batch_free(struct kiocb_batch *batch)
-+static void kiocb_batch_free(struct kioctx *ctx, struct kiocb_batch *batch)
- {
- struct kiocb *req, *n;
-
-+ if (list_empty(&batch->head))
-+ return;
-+
-+ spin_lock_irq(&ctx->ctx_lock);
- list_for_each_entry_safe(req, n, &batch->head, ki_batch) {
- list_del(&req->ki_batch);
-+ list_del(&req->ki_list);
- kmem_cache_free(kiocb_cachep, req);
-+ ctx->reqs_active--;
- }
-+ spin_unlock_irq(&ctx->ctx_lock);
- }
-
- /*
-@@ -1742,7 +1749,7 @@ long do_io_submit(aio_context_t ctx_id, long nr,
- }
- blk_finish_plug(&plug);
-
-- kiocb_batch_free(&batch);
-+ kiocb_batch_free(ctx, &batch);
- put_ioctx(ctx);
- return i ? i : ret;
- }
---
-1.7.9.5
-
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
deleted file mode 100644
index 4a0cf7b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0063-ftrace-Fix-unregister-ftrace_ops-accounting.patch
+++ /dev/null
@@ -1,227 +0,0 @@
-From 87a8f79b24eaa28f865547dc85b9c10b97a80686 Mon Sep 17 00:00:00 2001
-From: Jiri Olsa <jolsa at redhat.com>
-Date: Mon, 5 Dec 2011 18:22:48 +0100
-Subject: [PATCH 063/129] ftrace: Fix unregister ftrace_ops accounting
-
-commit 30fb6aa74011dcf595f306ca2727254d708b786e upstream.
-
-Multiple users of the function tracer can register their functions
-with the ftrace_ops structure. The accounting within ftrace will
-update the counter on each function record that is being traced.
-When the ftrace_ops filtering adds or removes functions, the
-function records will be updated accordingly if the ftrace_ops is
-still registered.
-
-When a ftrace_ops is removed, the counter of the function records,
-that the ftrace_ops traces, are decremented. When they reach zero
-the functions that they represent are modified to stop calling the
-mcount code.
-
-When changes are made, the code is updated via stop_machine() with
-a command passed to the function to tell it what to do. There is an
-ENABLE and DISABLE command that tells the called function to enable
-or disable the functions. But the ENABLE is really a misnomer as it
-should just update the records, as records that have been enabled
-and now have a count of zero should be disabled.
-
-The DISABLE command is used to disable all functions regardless of
-their counter values. This is the big off switch and is not the
-complement of the ENABLE command.
-
-To make matters worse, when a ftrace_ops is unregistered and there
-is another ftrace_ops registered, neither the DISABLE nor the
-ENABLE command are set when calling into the stop_machine() function
-and the records will not be updated to match their counter. A command
-is passed to that function that will update the mcount code to call
-the registered callback directly if it is the only one left. This
-means that the ftrace_ops that is still registered will have its callback
-called by all functions that have been set for it as well as the ftrace_ops
-that was just unregistered.
-
-Here's a way to trigger this bug. Compile the kernel with
-CONFIG_FUNCTION_PROFILER set and with CONFIG_FUNCTION_GRAPH not set:
-
- CONFIG_FUNCTION_PROFILER=y
- # CONFIG_FUNCTION_GRAPH is not set
-
-This will force the function profiler to use the function tracer instead
-of the function graph tracer.
-
- # cd /sys/kernel/debug/tracing
- # echo schedule > set_ftrace_filter
- # echo function > current_tracer
- # cat set_ftrace_filter
- schedule
- # cat trace
- # tracer: nop
- #
- # entries-in-buffer/entries-written: 692/68108025 #P:4
- #
- # _-----=> irqs-off
- # / _----=> need-resched
- # | / _---=> hardirq/softirq
- # || / _--=> preempt-depth
- # ||| / delay
- # TASK-PID CPU# |||| TIMESTAMP FUNCTION
- # | | | |||| | |
- kworker/0:2-909 [000] .... 531.235574: schedule <-worker_thread
- <idle>-0 [001] .N.. 531.235575: schedule <-cpu_idle
- kworker/0:2-909 [000] .... 531.235597: schedule <-worker_thread
- sshd-2563 [001] .... 531.235647: schedule <-schedule_hrtimeout_range_clock
-
- # echo 1 > function_profile_enabled
- # echo 0 > function_porfile_enabled
- # cat set_ftrace_filter
- schedule
- # cat trace
- # tracer: function
- #
- # entries-in-buffer/entries-written: 159701/118821262 #P:4
- #
- # _-----=> irqs-off
- # / _----=> need-resched
- # | / _---=> hardirq/softirq
- # || / _--=> preempt-depth
- # ||| / delay
- # TASK-PID CPU# |||| TIMESTAMP FUNCTION
- # | | | |||| | |
- <idle>-0 [002] ...1 604.870655: local_touch_nmi <-cpu_idle
- <idle>-0 [002] d..1 604.870655: enter_idle <-cpu_idle
- <idle>-0 [002] d..1 604.870656: atomic_notifier_call_chain <-enter_idle
- <idle>-0 [002] d..1 604.870656: __atomic_notifier_call_chain <-atomic_notifier_call_chain
-
-The same problem could have happened with the trace_probe_ops,
-but they are modified with the set_frace_filter file which does the
-update at closure of the file.
-
-The simple solution is to change ENABLE to UPDATE and call it every
-time an ftrace_ops is unregistered.
-
-Link: http://lkml.kernel.org/r/1323105776-26961-3-git-send-email-jolsa@redhat.com
-
-Signed-off-by: Jiri Olsa <jolsa at redhat.com>
-Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- kernel/trace/ftrace.c | 27 +++++++++++++--------------
- 1 file changed, 13 insertions(+), 14 deletions(-)
-
-diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
-index b1e8943..25b4f4d 100644
---- a/kernel/trace/ftrace.c
-+++ b/kernel/trace/ftrace.c
-@@ -948,7 +948,7 @@ struct ftrace_func_probe {
- };
-
- enum {
-- FTRACE_ENABLE_CALLS = (1 << 0),
-+ FTRACE_UPDATE_CALLS = (1 << 0),
- FTRACE_DISABLE_CALLS = (1 << 1),
- FTRACE_UPDATE_TRACE_FUNC = (1 << 2),
- FTRACE_START_FUNC_RET = (1 << 3),
-@@ -1519,7 +1519,7 @@ int ftrace_text_reserved(void *start, void *end)
-
-
- static int
--__ftrace_replace_code(struct dyn_ftrace *rec, int enable)
-+__ftrace_replace_code(struct dyn_ftrace *rec, int update)
- {
- unsigned long ftrace_addr;
- unsigned long flag = 0UL;
-@@ -1527,17 +1527,17 @@ __ftrace_replace_code(struct dyn_ftrace *rec, int enable)
- ftrace_addr = (unsigned long)FTRACE_ADDR;
-
- /*
-- * If we are enabling tracing:
-+ * If we are updating calls:
- *
- * If the record has a ref count, then we need to enable it
- * because someone is using it.
- *
- * Otherwise we make sure its disabled.
- *
-- * If we are disabling tracing, then disable all records that
-+ * If we are disabling calls, then disable all records that
- * are enabled.
- */
-- if (enable && (rec->flags & ~FTRACE_FL_MASK))
-+ if (update && (rec->flags & ~FTRACE_FL_MASK))
- flag = FTRACE_FL_ENABLED;
-
- /* If the state of this record hasn't changed, then do nothing */
-@@ -1553,7 +1553,7 @@ __ftrace_replace_code(struct dyn_ftrace *rec, int enable)
- return ftrace_make_nop(NULL, rec, ftrace_addr);
- }
-
--static void ftrace_replace_code(int enable)
-+static void ftrace_replace_code(int update)
- {
- struct dyn_ftrace *rec;
- struct ftrace_page *pg;
-@@ -1567,7 +1567,7 @@ static void ftrace_replace_code(int enable)
- if (rec->flags & FTRACE_FL_FREE)
- continue;
-
-- failed = __ftrace_replace_code(rec, enable);
-+ failed = __ftrace_replace_code(rec, update);
- if (failed) {
- ftrace_bug(failed, rec->ip);
- /* Stop processing */
-@@ -1623,7 +1623,7 @@ static int __ftrace_modify_code(void *data)
- */
- function_trace_stop++;
-
-- if (*command & FTRACE_ENABLE_CALLS)
-+ if (*command & FTRACE_UPDATE_CALLS)
- ftrace_replace_code(1);
- else if (*command & FTRACE_DISABLE_CALLS)
- ftrace_replace_code(0);
-@@ -1691,7 +1691,7 @@ static int ftrace_startup(struct ftrace_ops *ops, int command)
- return -ENODEV;
-
- ftrace_start_up++;
-- command |= FTRACE_ENABLE_CALLS;
-+ command |= FTRACE_UPDATE_CALLS;
-
- /* ops marked global share the filter hashes */
- if (ops->flags & FTRACE_OPS_FL_GLOBAL) {
-@@ -1743,8 +1743,7 @@ static void ftrace_shutdown(struct ftrace_ops *ops, int command)
- if (ops != &global_ops || !global_start_up)
- ops->flags &= ~FTRACE_OPS_FL_ENABLED;
-
-- if (!ftrace_start_up)
-- command |= FTRACE_DISABLE_CALLS;
-+ command |= FTRACE_UPDATE_CALLS;
-
- if (saved_ftrace_func != ftrace_trace_function) {
- saved_ftrace_func = ftrace_trace_function;
-@@ -1766,7 +1765,7 @@ static void ftrace_startup_sysctl(void)
- saved_ftrace_func = NULL;
- /* ftrace_start_up is true if we want ftrace running */
- if (ftrace_start_up)
-- ftrace_run_update_code(FTRACE_ENABLE_CALLS);
-+ ftrace_run_update_code(FTRACE_UPDATE_CALLS);
- }
-
- static void ftrace_shutdown_sysctl(void)
-@@ -2919,7 +2918,7 @@ ftrace_set_regex(struct ftrace_ops *ops, unsigned char *buf, int len,
- ret = ftrace_hash_move(ops, enable, orig_hash, hash);
- if (!ret && ops->flags & FTRACE_OPS_FL_ENABLED
- && ftrace_enabled)
-- ftrace_run_update_code(FTRACE_ENABLE_CALLS);
-+ ftrace_run_update_code(FTRACE_UPDATE_CALLS);
-
- mutex_unlock(&ftrace_lock);
-
-@@ -3107,7 +3106,7 @@ ftrace_regex_release(struct inode *inode, struct file *file)
- orig_hash, iter->hash);
- if (!ret && (iter->ops->flags & FTRACE_OPS_FL_ENABLED)
- && ftrace_enabled)
-- ftrace_run_update_code(FTRACE_ENABLE_CALLS);
-+ ftrace_run_update_code(FTRACE_UPDATE_CALLS);
-
- mutex_unlock(&ftrace_lock);
- }
---
-1.7.9.5
-
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
deleted file mode 100644
index 383b3f8..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0064-kconfig-streamline-config.pl-Simplify-backslash-line.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-From a3bca61c4e149d9e00102d41a0b81cae4fbca06f Mon Sep 17 00:00:00 2001
-From: Steven Rostedt <srostedt at redhat.com>
-Date: Fri, 13 Jan 2012 17:50:39 -0500
-Subject: [PATCH 064/129] kconfig/streamline-config.pl: Simplify backslash
- line concatination
-
-commit d060d963e88f3e990cec2fe5214de49de9a49eca upstream.
-
-Simplify the way lines ending with backslashes (continuation) in Makefiles
-is parsed. This is needed to implement a necessary fix.
-
-Tested-by: Thomas Lange <thomas-lange2 at gmx.de>
-Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- scripts/kconfig/streamline_config.pl | 25 ++++++++++++-------------
- 1 file changed, 12 insertions(+), 13 deletions(-)
-
-diff --git a/scripts/kconfig/streamline_config.pl b/scripts/kconfig/streamline_config.pl
-index ec7afce..42ef5ea 100644
---- a/scripts/kconfig/streamline_config.pl
-+++ b/scripts/kconfig/streamline_config.pl
-@@ -253,17 +253,22 @@ if ($kconfig) {
- # Read all Makefiles to map the configs to the objects
- foreach my $makefile (@makefiles) {
-
-- my $cont = 0;
-+ my $line = "";
-
- open(MIN,$makefile) || die "Can't open $makefile";
- while (<MIN>) {
-- my $objs;
--
-- # is this a line after a line with a backslash?
-- if ($cont && /(\S.*)$/) {
-- $objs = $1;
-+ # if this line ends with a backslash, continue
-+ chomp;
-+ if (/^(.*)\\$/) {
-+ $line .= $1;
-+ next;
- }
-- $cont = 0;
-+
-+ $line .= $_;
-+ $_ = $line;
-+ $line = "";
-+
-+ my $objs;
-
- # collect objects after obj-$(CONFIG_FOO_BAR)
- if (/obj-\$\((CONFIG_[^\)]*)\)\s*[+:]?=\s*(.*)/) {
-@@ -271,12 +276,6 @@ foreach my $makefile (@makefiles) {
- $objs = $2;
- }
- if (defined($objs)) {
-- # test if the line ends with a backslash
-- if ($objs =~ m,(.*)\\$,) {
-- $objs = $1;
-- $cont = 1;
-- }
--
- foreach my $obj (split /\s+/,$objs) {
- $obj =~ s/-/_/g;
- if ($obj =~ /(.*)\.o$/) {
---
-1.7.9.5
-
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
deleted file mode 100644
index 141754e..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0065-kconfig-streamline-config.pl-Fix-parsing-Makefile-wi.patch
+++ /dev/null
@@ -1,98 +0,0 @@
-From ac774661d11eb00497542857681b22c652d3d67c Mon Sep 17 00:00:00 2001
-From: Steven Rostedt <srostedt at redhat.com>
-Date: Fri, 13 Jan 2012 17:53:40 -0500
-Subject: [PATCH 065/129] kconfig/streamline-config.pl: Fix parsing Makefile
- with variables
-
-commit 364212fddaaa60c5a64f67a0f5624ad996ecc8a0 upstream.
-
-Thomas Lange reported that when he did a 'make localmodconfig', his
-config was missing the brcmsmac driver, even though he had the module
-loaded.
-
-Looking into this, I found the file:
-drivers/net/wireless/brcm80211/brcmsmac/Makefile
-had the following in the Makefile:
-
-MODULEPFX := brcmsmac
-
-obj-$(CONFIG_BRCMSMAC) += $(MODULEPFX).o
-
-The way streamline-config.pl works, is parsing all the
- obj-$(CONFIG_FOO) += foo.o
-lines to find that CONFIG_FOO belongs to the module foo.ko.
-
-But in this case, the brcmsmac.o was not used, but a variable in its place.
-
-By changing streamline-config.pl to remember defined variables in Makefiles
-and substituting them when they are used in the obj-X lines, allows
-Thomas (and others) to have their brcmsmac module stay configured
-when it is loaded and running "make localmodconfig".
-
-Reported-by: Thomas Lange <thomas-lange2 at gmx.de>
-Tested-by: Thomas Lange <thomas-lange2 at gmx.de>
-Cc: Arend van Spriel <arend at broadcom.com>
-Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- scripts/kconfig/streamline_config.pl | 29 +++++++++++++++++++++++++++++
- 1 file changed, 29 insertions(+)
-
-diff --git a/scripts/kconfig/streamline_config.pl b/scripts/kconfig/streamline_config.pl
-index 42ef5ea..bccf07dd 100644
---- a/scripts/kconfig/streamline_config.pl
-+++ b/scripts/kconfig/streamline_config.pl
-@@ -250,10 +250,33 @@ if ($kconfig) {
- read_kconfig($kconfig);
- }
-
-+sub convert_vars {
-+ my ($line, %vars) = @_;
-+
-+ my $process = "";
-+
-+ while ($line =~ s/^(.*?)(\$\((.*?)\))//) {
-+ my $start = $1;
-+ my $variable = $2;
-+ my $var = $3;
-+
-+ if (defined($vars{$var})) {
-+ $process .= $start . $vars{$var};
-+ } else {
-+ $process .= $start . $variable;
-+ }
-+ }
-+
-+ $process .= $line;
-+
-+ return $process;
-+}
-+
- # Read all Makefiles to map the configs to the objects
- foreach my $makefile (@makefiles) {
-
- my $line = "";
-+ my %make_vars;
-
- open(MIN,$makefile) || die "Can't open $makefile";
- while (<MIN>) {
-@@ -270,10 +293,16 @@ foreach my $makefile (@makefiles) {
-
- my $objs;
-
-+ $_ = convert_vars($_, %make_vars);
-+
- # collect objects after obj-$(CONFIG_FOO_BAR)
- if (/obj-\$\((CONFIG_[^\)]*)\)\s*[+:]?=\s*(.*)/) {
- $var = $1;
- $objs = $2;
-+
-+ # check if variables are set
-+ } elsif (/^\s*(\S+)\s*[:]?=\s*(.*\S)/) {
-+ $make_vars{$1} = $2;
- }
- if (defined($objs)) {
- foreach my $obj (split /\s+/,$objs) {
---
-1.7.9.5
-
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
deleted file mode 100644
index 76168fb..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0066-svcrpc-fix-double-free-on-shutdown-of-nfsd-after-cha.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From 184eee2d8b585d5e2a0ec3f2c50f682e91ef769a Mon Sep 17 00:00:00 2001
-From: "J. Bruce Fields" <bfields at redhat.com>
-Date: Thu, 22 Dec 2011 18:22:49 -0700
-Subject: [PATCH 066/129] svcrpc: fix double-free on shutdown of nfsd after
- changing pool mode
-
-commit 61c8504c428edcebf23b97775a129c5b393a302b upstream.
-
-The pool_to and to_pool fields of the global svc_pool_map are freed on
-shutdown, but are initialized in nfsd startup only in the
-SVC_POOL_PERCPU and SVC_POOL_PERNODE cases.
-
-They *are* initialized to zero on kernel startup. So as long as you use
-only SVC_POOL_GLOBAL (the default), this will never be a problem.
-
-You're also OK if you only ever use SVC_POOL_PERCPU or SVC_POOL_PERNODE.
-
-However, the following sequence events leads to a double-free:
-
- 1. set SVC_POOL_PERCPU or SVC_POOL_PERNODE
- 2. start nfsd: both fields are initialized.
- 3. shutdown nfsd: both fields are freed.
- 4. set SVC_POOL_GLOBAL
- 5. start nfsd: the fields are left untouched.
- 6. shutdown nfsd: now we try to free them again.
-
-Step 4 is actually unnecessary, since (for some bizarre reason), nfsd
-automatically resets the pool mode to SVC_POOL_GLOBAL on shutdown.
-
-Signed-off-by: J. Bruce Fields <bfields at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- net/sunrpc/svc.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/net/sunrpc/svc.c b/net/sunrpc/svc.c
-index 6e03888..5443ffd 100644
---- a/net/sunrpc/svc.c
-+++ b/net/sunrpc/svc.c
-@@ -167,6 +167,7 @@ svc_pool_map_alloc_arrays(struct svc_pool_map *m, unsigned int maxpools)
-
- fail_free:
- kfree(m->to_pool);
-+ m->to_pool = NULL;
- fail:
- return -ENOMEM;
- }
-@@ -287,7 +288,9 @@ svc_pool_map_put(void)
- if (!--m->count) {
- m->mode = SVC_POOL_DEFAULT;
- kfree(m->to_pool);
-+ m->to_pool = NULL;
- kfree(m->pool_to);
-+ m->pool_to = NULL;
- m->npools = 0;
- }
-
---
-1.7.9.5
-
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
deleted file mode 100644
index 23264ca..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0067-svcrpc-destroy-server-sockets-all-at-once.patch
+++ /dev/null
@@ -1,85 +0,0 @@
-From 7bbbb974406d83275664903d43b9e9bf4b99c131 Mon Sep 17 00:00:00 2001
-From: "J. Bruce Fields" <bfields at redhat.com>
-Date: Tue, 29 Nov 2011 11:35:35 -0500
-Subject: [PATCH 067/129] svcrpc: destroy server sockets all at once
-
-commit 2fefb8a09e7ed251ae8996e0c69066e74c5aa560 upstream.
-
-There's no reason I can see that we need to call sv_shutdown between
-closing the two lists of sockets.
-
-Signed-off-by: J. Bruce Fields <bfields at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- include/linux/sunrpc/svcsock.h | 2 +-
- net/sunrpc/svc.c | 7 +------
- net/sunrpc/svc_xprt.c | 11 ++++++++++-
- 3 files changed, 12 insertions(+), 8 deletions(-)
-
-diff --git a/include/linux/sunrpc/svcsock.h b/include/linux/sunrpc/svcsock.h
-index 85c50b4..c84e974 100644
---- a/include/linux/sunrpc/svcsock.h
-+++ b/include/linux/sunrpc/svcsock.h
-@@ -34,7 +34,7 @@ struct svc_sock {
- /*
- * Function prototypes.
- */
--void svc_close_all(struct list_head *);
-+void svc_close_all(struct svc_serv *);
- int svc_recv(struct svc_rqst *, long);
- int svc_send(struct svc_rqst *);
- void svc_drop(struct svc_rqst *);
-diff --git a/net/sunrpc/svc.c b/net/sunrpc/svc.c
-index 5443ffd..7ddfb04 100644
---- a/net/sunrpc/svc.c
-+++ b/net/sunrpc/svc.c
-@@ -531,16 +531,11 @@ svc_destroy(struct svc_serv *serv)
-
- del_timer_sync(&serv->sv_temptimer);
-
-- svc_close_all(&serv->sv_tempsocks);
-+ svc_close_all(serv);
-
- if (serv->sv_shutdown)
- serv->sv_shutdown(serv);
-
-- svc_close_all(&serv->sv_permsocks);
--
-- BUG_ON(!list_empty(&serv->sv_permsocks));
-- BUG_ON(!list_empty(&serv->sv_tempsocks));
--
- cache_clean_deferred(serv);
-
- if (svc_serv_is_pooled(serv))
-diff --git a/net/sunrpc/svc_xprt.c b/net/sunrpc/svc_xprt.c
-index 447cd0e..dcdc8df 100644
---- a/net/sunrpc/svc_xprt.c
-+++ b/net/sunrpc/svc_xprt.c
-@@ -928,7 +928,7 @@ void svc_close_xprt(struct svc_xprt *xprt)
- }
- EXPORT_SYMBOL_GPL(svc_close_xprt);
-
--void svc_close_all(struct list_head *xprt_list)
-+static void svc_close_list(struct list_head *xprt_list)
- {
- struct svc_xprt *xprt;
- struct svc_xprt *tmp;
-@@ -946,6 +946,15 @@ void svc_close_all(struct list_head *xprt_list)
- }
- }
-
-+void svc_close_all(struct svc_serv *serv)
-+{
-+ svc_close_list(&serv->sv_tempsocks);
-+ svc_close_list(&serv->sv_permsocks);
-+ BUG_ON(!list_empty(&serv->sv_permsocks));
-+ BUG_ON(!list_empty(&serv->sv_tempsocks));
-+
-+}
-+
- /*
- * Handle defer and revisit of requests
- */
---
-1.7.9.5
-
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
deleted file mode 100644
index 494d909..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0068-svcrpc-avoid-memory-corruption-on-pool-shutdown.patch
+++ /dev/null
@@ -1,156 +0,0 @@
-From 5faa65a4101dc292e7d43c525e87f4f2acae40e3 Mon Sep 17 00:00:00 2001
-From: "J. Bruce Fields" <bfields at redhat.com>
-Date: Tue, 29 Nov 2011 17:00:26 -0500
-Subject: [PATCH 068/129] svcrpc: avoid memory-corruption on pool shutdown
-
-commit b4f36f88b3ee7cf26bf0be84e6c7fc15f84dcb71 upstream.
-
-Socket callbacks use svc_xprt_enqueue() to add an xprt to a
-pool->sp_sockets list. In normal operation a server thread will later
-come along and take the xprt off that list. On shutdown, after all the
-threads have exited, we instead manually walk the sv_tempsocks and
-sv_permsocks lists to find all the xprt's and delete them.
-
-So the sp_sockets lists don't really matter any more. As a result,
-we've mostly just ignored them and hoped they would go away.
-
-Which has gotten us into trouble; witness for example ebc63e531cc6
-"svcrpc: fix list-corrupting race on nfsd shutdown", the result of Ben
-Greear noticing that a still-running svc_xprt_enqueue() could re-add an
-xprt to an sp_sockets list just before it was deleted. The fix was to
-remove it from the list at the end of svc_delete_xprt(). But that only
-made corruption less likely--I can see nothing that prevents a
-svc_xprt_enqueue() from adding another xprt to the list at the same
-moment that we're removing this xprt from the list. In fact, despite
-the earlier xpo_detach(), I don't even see what guarantees that
-svc_xprt_enqueue() couldn't still be running on this xprt.
-
-So, instead, note that svc_xprt_enqueue() essentially does:
- lock sp_lock
- if XPT_BUSY unset
- add to sp_sockets
- unlock sp_lock
-
-So, if we do:
-
- set XPT_BUSY on every xprt.
- Empty every sp_sockets list, under the sp_socks locks.
-
-Then we're left knowing that the sp_sockets lists are all empty and will
-stay that way, since any svc_xprt_enqueue() will check XPT_BUSY under
-the sp_lock and see it set.
-
-And *then* we can continue deleting the xprt's.
-
-(Thanks to Jeff Layton for being correctly suspicious of this code....)
-
-Cc: Ben Greear <greearb at candelatech.com>
-Cc: Jeff Layton <jlayton at redhat.com>
-Signed-off-by: J. Bruce Fields <bfields at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- net/sunrpc/svc.c | 10 +++++++++-
- net/sunrpc/svc_xprt.c | 48 +++++++++++++++++++++++++++++-------------------
- 2 files changed, 38 insertions(+), 20 deletions(-)
-
-diff --git a/net/sunrpc/svc.c b/net/sunrpc/svc.c
-index 7ddfb04..d4ad50e 100644
---- a/net/sunrpc/svc.c
-+++ b/net/sunrpc/svc.c
-@@ -530,7 +530,15 @@ svc_destroy(struct svc_serv *serv)
- printk("svc_destroy: no threads for serv=%p!\n", serv);
-
- del_timer_sync(&serv->sv_temptimer);
--
-+ /*
-+ * The set of xprts (contained in the sv_tempsocks and
-+ * sv_permsocks lists) is now constant, since it is modified
-+ * only by accepting new sockets (done by service threads in
-+ * svc_recv) or aging old ones (done by sv_temptimer), or
-+ * configuration changes (excluded by whatever locking the
-+ * caller is using--nfsd_mutex in the case of nfsd). So it's
-+ * safe to traverse those lists and shut everything down:
-+ */
- svc_close_all(serv);
-
- if (serv->sv_shutdown)
-diff --git a/net/sunrpc/svc_xprt.c b/net/sunrpc/svc_xprt.c
-index dcdc8df..9ed2cd0 100644
---- a/net/sunrpc/svc_xprt.c
-+++ b/net/sunrpc/svc_xprt.c
-@@ -893,14 +893,7 @@ void svc_delete_xprt(struct svc_xprt *xprt)
- spin_lock_bh(&serv->sv_lock);
- if (!test_and_set_bit(XPT_DETACHED, &xprt->xpt_flags))
- list_del_init(&xprt->xpt_list);
-- /*
-- * The only time we're called while xpt_ready is still on a list
-- * is while the list itself is about to be destroyed (in
-- * svc_destroy). BUT svc_xprt_enqueue could still be attempting
-- * to add new entries to the sp_sockets list, so we can't leave
-- * a freed xprt on it.
-- */
-- list_del_init(&xprt->xpt_ready);
-+ BUG_ON(!list_empty(&xprt->xpt_ready));
- if (test_bit(XPT_TEMP, &xprt->xpt_flags))
- serv->sv_tmpcnt--;
- spin_unlock_bh(&serv->sv_lock);
-@@ -931,28 +924,45 @@ EXPORT_SYMBOL_GPL(svc_close_xprt);
- static void svc_close_list(struct list_head *xprt_list)
- {
- struct svc_xprt *xprt;
-- struct svc_xprt *tmp;
-
-- /*
-- * The server is shutting down, and no more threads are running.
-- * svc_xprt_enqueue() might still be running, but at worst it
-- * will re-add the xprt to sp_sockets, which will soon get
-- * freed. So we don't bother with any more locking, and don't
-- * leave the close to the (nonexistent) server threads:
-- */
-- list_for_each_entry_safe(xprt, tmp, xprt_list, xpt_list) {
-+ list_for_each_entry(xprt, xprt_list, xpt_list) {
- set_bit(XPT_CLOSE, &xprt->xpt_flags);
-- svc_delete_xprt(xprt);
-+ set_bit(XPT_BUSY, &xprt->xpt_flags);
- }
- }
-
- void svc_close_all(struct svc_serv *serv)
- {
-+ struct svc_pool *pool;
-+ struct svc_xprt *xprt;
-+ struct svc_xprt *tmp;
-+ int i;
-+
- svc_close_list(&serv->sv_tempsocks);
- svc_close_list(&serv->sv_permsocks);
-+
-+ for (i = 0; i < serv->sv_nrpools; i++) {
-+ pool = &serv->sv_pools[i];
-+
-+ spin_lock_bh(&pool->sp_lock);
-+ while (!list_empty(&pool->sp_sockets)) {
-+ xprt = list_first_entry(&pool->sp_sockets, struct svc_xprt, xpt_ready);
-+ list_del_init(&xprt->xpt_ready);
-+ }
-+ spin_unlock_bh(&pool->sp_lock);
-+ }
-+ /*
-+ * At this point the sp_sockets lists will stay empty, since
-+ * svc_enqueue will not add new entries without taking the
-+ * sp_lock and checking XPT_BUSY.
-+ */
-+ list_for_each_entry_safe(xprt, tmp, &serv->sv_tempsocks, xpt_list)
-+ svc_delete_xprt(xprt);
-+ list_for_each_entry_safe(xprt, tmp, &serv->sv_permsocks, xpt_list)
-+ svc_delete_xprt(xprt);
-+
- BUG_ON(!list_empty(&serv->sv_permsocks));
- BUG_ON(!list_empty(&serv->sv_tempsocks));
--
- }
-
- /*
---
-1.7.9.5
-
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
deleted file mode 100644
index 06f300b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0069-nfsd4-fix-lockowner-matching.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-From 041400912607efd62cf9aa6ad4e5ad6baf957f1a Mon Sep 17 00:00:00 2001
-From: "J. Bruce Fields" <bfields at redhat.com>
-Date: Mon, 7 Nov 2011 16:37:57 -0500
-Subject: [PATCH 069/129] nfsd4: fix lockowner matching
-
-commit b93d87c19821ba7d3ee11557403d782e541071ad upstream.
-
-Lockowners are looked up by file as well as by owner, but we were
-forgetting to do a comparison on the file. This could cause an
-incorrect result from lockt.
-
-(Note looking up the inode from the lockowner is pretty awkward here.
-The data structures need fixing.)
-
-Signed-off-by: J. Bruce Fields <bfields at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- fs/nfsd/nfs4state.c | 17 +++++++++++++++--
- 1 file changed, 15 insertions(+), 2 deletions(-)
-
-diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
-index 47e94e3..5abced7 100644
---- a/fs/nfsd/nfs4state.c
-+++ b/fs/nfsd/nfs4state.c
-@@ -3809,16 +3809,29 @@ nevermind:
- deny->ld_type = NFS4_WRITE_LT;
- }
-
-+static bool same_lockowner_ino(struct nfs4_lockowner *lo, struct inode *inode, clientid_t *clid, struct xdr_netobj *owner)
-+{
-+ struct nfs4_ol_stateid *lst;
-+
-+ if (!same_owner_str(&lo->lo_owner, owner, clid))
-+ return false;
-+ lst = list_first_entry(&lo->lo_owner.so_stateids,
-+ struct nfs4_ol_stateid, st_perstateowner);
-+ return lst->st_file->fi_inode == inode;
-+}
-+
- static struct nfs4_lockowner *
- find_lockowner_str(struct inode *inode, clientid_t *clid,
- struct xdr_netobj *owner)
- {
- unsigned int hashval = lock_ownerstr_hashval(inode, clid->cl_id, owner);
-+ struct nfs4_lockowner *lo;
- struct nfs4_stateowner *op;
-
- list_for_each_entry(op, &lock_ownerstr_hashtbl[hashval], so_strhash) {
-- if (same_owner_str(op, owner, clid))
-- return lockowner(op);
-+ lo = lockowner(op);
-+ if (same_lockowner_ino(lo, inode, clid, owner))
-+ return lo;
- }
- return NULL;
- }
---
-1.7.9.5
-
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
deleted file mode 100644
index 42f3853..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0070-nfsd-Fix-oops-when-parsing-a-0-length-export.patch
+++ /dev/null
@@ -1,82 +0,0 @@
-From 57a7686869f3ca7dfb8694583c88b5dfd510e4f6 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <levinsasha928 at gmail.com>
-Date: Fri, 18 Nov 2011 12:14:49 +0200
-Subject: [PATCH 070/129] nfsd: Fix oops when parsing a 0 length export
-
-commit b2ea70afade7080360ac55c4e64ff7a5fafdb67b upstream.
-
-expkey_parse() oopses when handling a 0 length export. This is easily
-triggerable from usermode by writing 0 bytes into
-'/proc/[proc id]/net/rpc/nfsd.fh/channel'.
-
-Below is the log:
-
-[ 1402.286893] BUG: unable to handle kernel paging request at ffff880077c49fff
-[ 1402.287632] IP: [<ffffffff812b4b99>] expkey_parse+0x28/0x2e1
-[ 1402.287632] PGD 2206063 PUD 1fdfd067 PMD 1ffbc067 PTE 8000000077c49160
-[ 1402.287632] Oops: 0000 [#1] PREEMPT SMP DEBUG_PAGEALLOC
-[ 1402.287632] CPU 1
-[ 1402.287632] Pid: 20198, comm: trinity Not tainted 3.2.0-rc2-sasha-00058-gc65cd37 #6
-[ 1402.287632] RIP: 0010:[<ffffffff812b4b99>] [<ffffffff812b4b99>] expkey_parse+0x28/0x2e1
-[ 1402.287632] RSP: 0018:ffff880077f0fd68 EFLAGS: 00010292
-[ 1402.287632] RAX: ffff880077c49fff RBX: 00000000ffffffea RCX: 0000000001043400
-[ 1402.287632] RDX: 0000000000000000 RSI: ffff880077c4a000 RDI: ffffffff82283de0
-[ 1402.287632] RBP: ffff880077f0fe18 R08: 0000000000000001 R09: ffff880000000000
-[ 1402.287632] R10: 0000000000000000 R11: 0000000000000001 R12: ffff880077c4a000
-[ 1402.287632] R13: ffffffff82283de0 R14: 0000000001043400 R15: ffffffff82283de0
-[ 1402.287632] FS: 00007f25fec3f700(0000) GS:ffff88007d400000(0000) knlGS:0000000000000000
-[ 1402.287632] CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
-[ 1402.287632] CR2: ffff880077c49fff CR3: 0000000077e1d000 CR4: 00000000000406e0
-[ 1402.287632] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
-[ 1402.287632] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
-[ 1402.287632] Process trinity (pid: 20198, threadinfo ffff880077f0e000, task ffff880077db17b0)
-[ 1402.287632] Stack:
-[ 1402.287632] ffff880077db17b0 ffff880077c4a000 ffff880077f0fdb8 ffffffff810b411e
-[ 1402.287632] ffff880000000000 ffff880077db17b0 ffff880077c4a000 ffffffff82283de0
-[ 1402.287632] 0000000001043400 ffffffff82283de0 ffff880077f0fde8 ffffffff81111f63
-[ 1402.287632] Call Trace:
-[ 1402.287632] [<ffffffff810b411e>] ? lock_release+0x1af/0x1bc
-[ 1402.287632] [<ffffffff81111f63>] ? might_fault+0x97/0x9e
-[ 1402.287632] [<ffffffff81111f1a>] ? might_fault+0x4e/0x9e
-[ 1402.287632] [<ffffffff81a8bcf2>] cache_do_downcall+0x3e/0x4f
-[ 1402.287632] [<ffffffff81a8c950>] cache_write.clone.16+0xbb/0x130
-[ 1402.287632] [<ffffffff81a8c9df>] ? cache_write_pipefs+0x1a/0x1a
-[ 1402.287632] [<ffffffff81a8c9f8>] cache_write_procfs+0x19/0x1b
-[ 1402.287632] [<ffffffff8118dc54>] proc_reg_write+0x8e/0xad
-[ 1402.287632] [<ffffffff8113fe81>] vfs_write+0xaa/0xfd
-[ 1402.287632] [<ffffffff8114142d>] ? fget_light+0x35/0x9e
-[ 1402.287632] [<ffffffff8113ff8b>] sys_write+0x48/0x6f
-[ 1402.287632] [<ffffffff81bbdb92>] system_call_fastpath+0x16/0x1b
-[ 1402.287632] Code: c0 c9 c3 55 48 63 d2 48 89 e5 48 8d 44 32 ff 41 57 41 56 41 55 41 54 53 bb ea ff ff ff 48 81 ec 88 00 00 00 48 89 b5 58 ff ff ff
-[ 1402.287632] 38 0a 0f 85 89 02 00 00 c6 00 00 48 8b 3d 44 4a e5 01 48 85
-[ 1402.287632] RIP [<ffffffff812b4b99>] expkey_parse+0x28/0x2e1
-[ 1402.287632] RSP <ffff880077f0fd68>
-[ 1402.287632] CR2: ffff880077c49fff
-[ 1402.287632] ---[ end trace 368ef53ff773a5e3 ]---
-
-Cc: "J. Bruce Fields" <bfields at fieldses.org>
-Cc: Neil Brown <neilb at suse.de>
-Cc: linux-nfs at vger.kernel.org
-Signed-off-by: Sasha Levin <levinsasha928 at gmail.com>
-Signed-off-by: J. Bruce Fields <bfields at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- fs/nfsd/export.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/fs/nfsd/export.c b/fs/nfsd/export.c
-index 62f3b90..5f312ab 100644
---- a/fs/nfsd/export.c
-+++ b/fs/nfsd/export.c
-@@ -87,7 +87,7 @@ static int expkey_parse(struct cache_detail *cd, char *mesg, int mlen)
- struct svc_expkey key;
- struct svc_expkey *ek = NULL;
-
-- if (mesg[mlen-1] != '\n')
-+ if (mlen < 1 || mesg[mlen-1] != '\n')
- return -EINVAL;
- mesg[mlen-1] = 0;
-
---
-1.7.9.5
-
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
deleted file mode 100644
index b320467..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0071-fsnotify-don-t-BUG-in-fsnotify_destroy_mark.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From 25778654573b3763a5f34e694b17ec9ff43fb3bb Mon Sep 17 00:00:00 2001
-From: Miklos Szeredi <mszeredi at suse.cz>
-Date: Thu, 12 Jan 2012 17:59:46 +0100
-Subject: [PATCH 071/129] fsnotify: don't BUG in fsnotify_destroy_mark()
-
-commit fed474857efbed79cd390d0aee224231ca718f63 upstream.
-
-Removing the parent of a watched file results in "kernel BUG at
-fs/notify/mark.c:139".
-
-To reproduce
-
- add "-w /tmp/audit/dir/watched_file" to audit.rules
- rm -rf /tmp/audit/dir
-
-This is caused by fsnotify_destroy_mark() being called without an
-extra reference taken by the caller.
-
-Reported by Francesco Cosoleto here:
-
- https://bugzilla.novell.com/show_bug.cgi?id=689860
-
-Fix by removing the BUG_ON and adding a comment about not accessing mark after
-the iput.
-
-Signed-off-by: Miklos Szeredi <mszeredi at suse.cz>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- fs/notify/mark.c | 8 +++++---
- 1 file changed, 5 insertions(+), 3 deletions(-)
-
-diff --git a/fs/notify/mark.c b/fs/notify/mark.c
-index e14587d..f104d56 100644
---- a/fs/notify/mark.c
-+++ b/fs/notify/mark.c
-@@ -135,9 +135,6 @@ void fsnotify_destroy_mark(struct fsnotify_mark *mark)
-
- mark->flags &= ~FSNOTIFY_MARK_FLAG_ALIVE;
-
-- /* 1 from caller and 1 for being on i_list/g_list */
-- BUG_ON(atomic_read(&mark->refcnt) < 2);
--
- spin_lock(&group->mark_lock);
-
- if (mark->flags & FSNOTIFY_MARK_FLAG_INODE) {
-@@ -182,6 +179,11 @@ void fsnotify_destroy_mark(struct fsnotify_mark *mark)
- iput(inode);
-
- /*
-+ * We don't necessarily have a ref on mark from caller so the above iput
-+ * may have already destroyed it. Don't touch from now on.
-+ */
-+
-+ /*
- * it's possible that this group tried to destroy itself, but this
- * this mark was simultaneously being freed by inode. If that's the
- * case, we finish freeing the group here.
---
-1.7.9.5
-
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
deleted file mode 100644
index fc5632b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0072-x86-UV-Update-Boot-messages-for-SGI-UV2-platform.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From 76df9b14b1edf95a3f1194c0b08547e50931fefd Mon Sep 17 00:00:00 2001
-From: Jack Steiner <steiner at sgi.com>
-Date: Fri, 6 Jan 2012 13:19:00 -0600
-Subject: [PATCH 072/129] x86, UV: Update Boot messages for SGI UV2 platform
-
-commit da517a08ac5913cd80ce3507cddd00f2a091b13c upstream.
-
-SGI UV systems print a message during boot:
-
- UV: Found <num> blades
-
-Due to packaging changes, the blade count is not accurate for
-on the next generation of the platform. This patch corrects the
-count.
-
-Signed-off-by: Jack Steiner <steiner at sgi.com>
-Link: http://lkml.kernel.org/r/20120106191900.GA19772@sgi.com
-Signed-off-by: Ingo Molnar <mingo at elte.hu>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- arch/x86/kernel/apic/x2apic_uv_x.c | 7 ++++++-
- 1 file changed, 6 insertions(+), 1 deletion(-)
-
-diff --git a/arch/x86/kernel/apic/x2apic_uv_x.c b/arch/x86/kernel/apic/x2apic_uv_x.c
-index 9d59bba..79b05b8 100644
---- a/arch/x86/kernel/apic/x2apic_uv_x.c
-+++ b/arch/x86/kernel/apic/x2apic_uv_x.c
-@@ -769,7 +769,12 @@ void __init uv_system_init(void)
- for(i = 0; i < UVH_NODE_PRESENT_TABLE_DEPTH; i++)
- uv_possible_blades +=
- hweight64(uv_read_local_mmr( UVH_NODE_PRESENT_TABLE + i * 8));
-- printk(KERN_DEBUG "UV: Found %d blades\n", uv_num_possible_blades());
-+
-+ /* uv_num_possible_blades() is really the hub count */
-+ printk(KERN_INFO "UV: Found %d blades, %d hubs\n",
-+ is_uv1_hub() ? uv_num_possible_blades() :
-+ (uv_num_possible_blades() + 1) / 2,
-+ uv_num_possible_blades());
-
- bytes = sizeof(struct uv_blade_info) * uv_num_possible_blades();
- uv_blade_info = kzalloc(bytes, GFP_KERNEL);
---
-1.7.9.5
-
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
deleted file mode 100644
index 06552c0..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0073-recordmcount-Fix-handling-of-elf64-big-endian-object.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 4b493a169e4e0955d63015a30910a15d4d2cefed Mon Sep 17 00:00:00 2001
-From: David Daney <david.daney at cavium.com>
-Date: Mon, 19 Dec 2011 17:42:42 -0800
-Subject: [PATCH 073/129] recordmcount: Fix handling of elf64 big-endian
- objects.
-
-commit 2e885057b7f75035f0b85e02f737891482815a81 upstream.
-
-In ELF64, the sh_flags field is 64-bits wide. recordmcount was
-erroneously treating it as a 32-bit wide field. For little endian
-objects this works because the flags of interest (SHF_EXECINSTR)
-reside in the lower 32 bits of the word, and you get the same result
-with either a 32-bit or 64-bit read. Big endian objects on the
-other hand do not work at all with this error.
-
-The fix: Correctly treat sh_flags as 64-bits wide in elf64 objects.
-
-The symptom I observed was that my
-__start_mcount_loc..__stop_mcount_loc was empty even though ftrace
-function tracing was enabled.
-
-Link: http://lkml.kernel.org/r/1324345362-12230-1-git-send-email-ddaney.cavm@gmail.com
-
-Signed-off-by: David Daney <david.daney at cavium.com>
-Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- scripts/recordmcount.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/scripts/recordmcount.h b/scripts/recordmcount.h
-index f40a6af6..54e35c1 100644
---- a/scripts/recordmcount.h
-+++ b/scripts/recordmcount.h
-@@ -462,7 +462,7 @@ __has_rel_mcount(Elf_Shdr const *const relhdr, /* is SHT_REL or SHT_RELA */
- succeed_file();
- }
- if (w(txthdr->sh_type) != SHT_PROGBITS ||
-- !(w(txthdr->sh_flags) & SHF_EXECINSTR))
-+ !(_w(txthdr->sh_flags) & SHF_EXECINSTR))
- return NULL;
- return txtname;
- }
---
-1.7.9.5
-
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
deleted file mode 100644
index d9a8f19..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0074-uvcvideo-Fix-integer-overflow-in-uvc_ioctl_ctrl_map.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From ea50d13fefca15eb7d541f1830b2361943090063 Mon Sep 17 00:00:00 2001
-From: Haogang Chen <haogangchen at gmail.com>
-Date: Tue, 29 Nov 2011 18:32:25 -0300
-Subject: [PATCH 074/129] uvcvideo: Fix integer overflow in
- uvc_ioctl_ctrl_map()
-
-commit 806e23e95f94a27ee445022d724060b9b45cb64a upstream.
-
-There is a potential integer overflow in uvc_ioctl_ctrl_map(). When a
-large xmap->menu_count is passed from the userspace, the subsequent call
-to kmalloc() will allocate a buffer smaller than expected.
-map->menu_count and map->menu_info would later be used in a loop (e.g.
-in uvc_query_v4l2_ctrl), which leads to out-of-bound access.
-
-The patch checks the ioctl argument and returns -EINVAL for zero or too
-large values in xmap->menu_count.
-
-Signed-off-by: Haogang Chen <haogangchen at gmail.com>
-[laurent.pinchart at ideasonboard.com Prevent excessive memory consumption]
-Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
-Signed-off-by: Mauro Carvalho Chehab <mchehab at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/media/video/uvc/uvc_v4l2.c | 9 +++++++++
- drivers/media/video/uvc/uvcvideo.h | 1 +
- 2 files changed, 10 insertions(+)
-
-diff --git a/drivers/media/video/uvc/uvc_v4l2.c b/drivers/media/video/uvc/uvc_v4l2.c
-index dadf11f..cf7788f 100644
---- a/drivers/media/video/uvc/uvc_v4l2.c
-+++ b/drivers/media/video/uvc/uvc_v4l2.c
-@@ -58,6 +58,15 @@ static int uvc_ioctl_ctrl_map(struct uvc_video_chain *chain,
- break;
-
- case V4L2_CTRL_TYPE_MENU:
-+ /* Prevent excessive memory consumption, as well as integer
-+ * overflows.
-+ */
-+ if (xmap->menu_count == 0 ||
-+ xmap->menu_count > UVC_MAX_CONTROL_MENU_ENTRIES) {
-+ ret = -EINVAL;
-+ goto done;
-+ }
-+
- size = xmap->menu_count * sizeof(*map->menu_info);
- map->menu_info = kmalloc(size, GFP_KERNEL);
- if (map->menu_info == NULL) {
-diff --git a/drivers/media/video/uvc/uvcvideo.h b/drivers/media/video/uvc/uvcvideo.h
-index 4c1392e..bc446ba 100644
---- a/drivers/media/video/uvc/uvcvideo.h
-+++ b/drivers/media/video/uvc/uvcvideo.h
-@@ -113,6 +113,7 @@
-
- /* Maximum allowed number of control mappings per device */
- #define UVC_MAX_CONTROL_MAPPINGS 1024
-+#define UVC_MAX_CONTROL_MENU_ENTRIES 32
-
- /* Devices quirks */
- #define UVC_QUIRK_STATUS_INTERVAL 0x00000001
---
-1.7.9.5
-
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
deleted file mode 100644
index 9ab9f3d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0075-dcache-use-a-dispose-list-in-select_parent.patch
+++ /dev/null
@@ -1,172 +0,0 @@
-From 4289e10c1a424c39e50bb4c44447da025fdf37b9 Mon Sep 17 00:00:00 2001
-From: Dave Chinner <david at fromorbit.com>
-Date: Tue, 23 Aug 2011 18:56:24 +1000
-Subject: [PATCH 075/129] dcache: use a dispose list in select_parent
-
-commit b48f03b319ba78f3abf9a7044d1f436d8d90f4f9 upstream.
-
-select_parent currently abuses the dentry cache LRU to provide
-cleanup features for child dentries that need to be freed. It moves
-them to the tail of the LRU, then tells shrink_dcache_parent() to
-calls __shrink_dcache_sb to unconditionally move them to a dispose
-list (as DCACHE_REFERENCED is ignored). __shrink_dcache_sb() has to
-relock the dentries to move them off the LRU onto the dispose list,
-but otherwise does not touch the dentries that select_parent() moved
-to the tail of the LRU. It then passses the dispose list to
-shrink_dentry_list() which tries to free the dentries.
-
-IOWs, the use of __shrink_dcache_sb() is superfluous - we can build
-exactly the same list of dentries for disposal directly in
-select_parent() and call shrink_dentry_list() instead of calling
-__shrink_dcache_sb() to do that. This means that we avoid long holds
-on the lru lock walking the LRU moving dentries to the dispose list
-We also avoid the need to relock each dentry just to move it off the
-LRU, reducing the numebr of times we lock each dentry to dispose of
-them in shrink_dcache_parent() from 3 to 2 times.
-
-Further, we remove one of the two callers of __shrink_dcache_sb().
-This also means that __shrink_dcache_sb can be moved into back into
-prune_dcache_sb() and we no longer have to handle referenced
-dentries conditionally, simplifying the code.
-
-Signed-off-by: Dave Chinner <dchinner at redhat.com>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Al Viro <viro at zeniv.linux.org.uk>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- fs/dcache.c | 63 ++++++++++++++++++++---------------------------------------
- 1 file changed, 21 insertions(+), 42 deletions(-)
-
-diff --git a/fs/dcache.c b/fs/dcache.c
-index 89509b5..108116e 100644
---- a/fs/dcache.c
-+++ b/fs/dcache.c
-@@ -275,15 +275,15 @@ static void dentry_lru_prune(struct dentry *dentry)
- }
- }
-
--static void dentry_lru_move_tail(struct dentry *dentry)
-+static void dentry_lru_move_list(struct dentry *dentry, struct list_head *list)
- {
- spin_lock(&dcache_lru_lock);
- if (list_empty(&dentry->d_lru)) {
-- list_add_tail(&dentry->d_lru, &dentry->d_sb->s_dentry_lru);
-+ list_add_tail(&dentry->d_lru, list);
- dentry->d_sb->s_nr_dentry_unused++;
- dentry_stat.nr_unused++;
- } else {
-- list_move_tail(&dentry->d_lru, &dentry->d_sb->s_dentry_lru);
-+ list_move_tail(&dentry->d_lru, list);
- }
- spin_unlock(&dcache_lru_lock);
- }
-@@ -769,14 +769,18 @@ static void shrink_dentry_list(struct list_head *list)
- }
-
- /**
-- * __shrink_dcache_sb - shrink the dentry LRU on a given superblock
-- * @sb: superblock to shrink dentry LRU.
-- * @count: number of entries to prune
-- * @flags: flags to control the dentry processing
-+ * prune_dcache_sb - shrink the dcache
-+ * @sb: superblock
-+ * @count: number of entries to try to free
-+ *
-+ * Attempt to shrink the superblock dcache LRU by @count entries. This is
-+ * done when we need more memory an called from the superblock shrinker
-+ * function.
- *
-- * If flags contains DCACHE_REFERENCED reference dentries will not be pruned.
-+ * This function may fail to free any resources if all the dentries are in
-+ * use.
- */
--static void __shrink_dcache_sb(struct super_block *sb, int count, int flags)
-+void prune_dcache_sb(struct super_block *sb, int count)
- {
- struct dentry *dentry;
- LIST_HEAD(referenced);
-@@ -795,13 +799,7 @@ relock:
- goto relock;
- }
-
-- /*
-- * If we are honouring the DCACHE_REFERENCED flag and the
-- * dentry has this flag set, don't free it. Clear the flag
-- * and put it back on the LRU.
-- */
-- if (flags & DCACHE_REFERENCED &&
-- dentry->d_flags & DCACHE_REFERENCED) {
-+ if (dentry->d_flags & DCACHE_REFERENCED) {
- dentry->d_flags &= ~DCACHE_REFERENCED;
- list_move(&dentry->d_lru, &referenced);
- spin_unlock(&dentry->d_lock);
-@@ -821,23 +819,6 @@ relock:
- }
-
- /**
-- * prune_dcache_sb - shrink the dcache
-- * @sb: superblock
-- * @nr_to_scan: number of entries to try to free
-- *
-- * Attempt to shrink the superblock dcache LRU by @nr_to_scan entries. This is
-- * done when we need more memory an called from the superblock shrinker
-- * function.
-- *
-- * This function may fail to free any resources if all the dentries are in
-- * use.
-- */
--void prune_dcache_sb(struct super_block *sb, int nr_to_scan)
--{
-- __shrink_dcache_sb(sb, nr_to_scan, DCACHE_REFERENCED);
--}
--
--/**
- * shrink_dcache_sb - shrink dcache for a superblock
- * @sb: superblock
- *
-@@ -1091,7 +1072,7 @@ EXPORT_SYMBOL(have_submounts);
- * drop the lock and return early due to latency
- * constraints.
- */
--static int select_parent(struct dentry * parent)
-+static int select_parent(struct dentry *parent, struct list_head *dispose)
- {
- struct dentry *this_parent;
- struct list_head *next;
-@@ -1113,12 +1094,11 @@ resume:
-
- spin_lock_nested(&dentry->d_lock, DENTRY_D_LOCK_NESTED);
-
-- /*
-- * move only zero ref count dentries to the end
-- * of the unused list for prune_dcache
-+ /*
-+ * move only zero ref count dentries to the dispose list.
- */
- if (!dentry->d_count) {
-- dentry_lru_move_tail(dentry);
-+ dentry_lru_move_list(dentry, dispose);
- found++;
- } else {
- dentry_lru_del(dentry);
-@@ -1180,14 +1160,13 @@ rename_retry:
- *
- * Prune the dcache to remove unused children of the parent dentry.
- */
--
- void shrink_dcache_parent(struct dentry * parent)
- {
-- struct super_block *sb = parent->d_sb;
-+ LIST_HEAD(dispose);
- int found;
-
-- while ((found = select_parent(parent)) != 0)
-- __shrink_dcache_sb(sb, found, 0);
-+ while ((found = select_parent(parent, &dispose)) != 0)
-+ shrink_dentry_list(&dispose);
- }
- EXPORT_SYMBOL(shrink_dcache_parent);
-
---
-1.7.9.5
-
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
deleted file mode 100644
index 7d33d3c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0076-fix-shrink_dcache_parent-livelock.patch
+++ /dev/null
@@ -1,130 +0,0 @@
-From 72a350429f61098d46984c13e8da293ec7a8ffe4 Mon Sep 17 00:00:00 2001
-From: Miklos Szeredi <miklos at szeredi.hu>
-Date: Tue, 10 Jan 2012 18:22:25 +0100
-Subject: [PATCH 076/129] fix shrink_dcache_parent() livelock
-
-commit eaf5f9073533cde21c7121c136f1c3f072d9cf59 upstream.
-
-Two (or more) concurrent calls of shrink_dcache_parent() on the same dentry may
-cause shrink_dcache_parent() to loop forever.
-
-Here's what appears to happen:
-
-1 - CPU0: select_parent(P) finds C and puts it on dispose list, returns 1
-
-2 - CPU1: select_parent(P) locks P->d_lock
-
-3 - CPU0: shrink_dentry_list() locks C->d_lock
- dentry_kill(C) tries to lock P->d_lock but fails, unlocks C->d_lock
-
-4 - CPU1: select_parent(P) locks C->d_lock,
- moves C from dispose list being processed on CPU0 to the new
-dispose list, returns 1
-
-5 - CPU0: shrink_dentry_list() finds dispose list empty, returns
-
-6 - Goto 2 with CPU0 and CPU1 switched
-
-Basically select_parent() steals the dentry from shrink_dentry_list() and thinks
-it found a new one, causing shrink_dentry_list() to think it's making progress
-and loop over and over.
-
-One way to trigger this is to make udev calls stat() on the sysfs file while it
-is going away.
-
-Having a file in /lib/udev/rules.d/ with only this one rule seems to the trick:
-
-ATTR{vendor}=="0x8086", ATTR{device}=="0x10ca", ENV{PCI_SLOT_NAME}="%k", ENV{MATCHADDR}="$attr{address}", RUN+="/bin/true"
-
-Then execute the following loop:
-
-while true; do
- echo -bond0 > /sys/class/net/bonding_masters
- echo +bond0 > /sys/class/net/bonding_masters
- echo -bond1 > /sys/class/net/bonding_masters
- echo +bond1 > /sys/class/net/bonding_masters
-done
-
-One fix would be to check all callers and prevent concurrent calls to
-shrink_dcache_parent(). But I think a better solution is to stop the
-stealing behavior.
-
-This patch adds a new dentry flag that is set when the dentry is added to the
-dispose list. The flag is cleared in dentry_lru_del() in case the dentry gets a
-new reference just before being pruned.
-
-If the dentry has this flag, select_parent() will skip it and let
-shrink_dentry_list() retry pruning it. With select_parent() skipping those
-dentries there will not be the appearance of progress (new dentries found) when
-there is none, hence shrink_dcache_parent() will not loop forever.
-
-Set the flag is also set in prune_dcache_sb() for consistency as suggested by
-Linus.
-
-Signed-off-by: Miklos Szeredi <mszeredi at suse.cz>
-Signed-off-by: Al Viro <viro at zeniv.linux.org.uk>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- fs/dcache.c | 15 +++++++++++----
- include/linux/dcache.h | 1 +
- 2 files changed, 12 insertions(+), 4 deletions(-)
-
-diff --git a/fs/dcache.c b/fs/dcache.c
-index 108116e..f7908ae 100644
---- a/fs/dcache.c
-+++ b/fs/dcache.c
-@@ -242,6 +242,7 @@ static void dentry_lru_add(struct dentry *dentry)
- static void __dentry_lru_del(struct dentry *dentry)
- {
- list_del_init(&dentry->d_lru);
-+ dentry->d_flags &= ~DCACHE_SHRINK_LIST;
- dentry->d_sb->s_nr_dentry_unused--;
- dentry_stat.nr_unused--;
- }
-@@ -805,6 +806,7 @@ relock:
- spin_unlock(&dentry->d_lock);
- } else {
- list_move_tail(&dentry->d_lru, &tmp);
-+ dentry->d_flags |= DCACHE_SHRINK_LIST;
- spin_unlock(&dentry->d_lock);
- if (!--count)
- break;
-@@ -1096,14 +1098,19 @@ resume:
-
- /*
- * move only zero ref count dentries to the dispose list.
-+ *
-+ * Those which are presently on the shrink list, being processed
-+ * by shrink_dentry_list(), shouldn't be moved. Otherwise the
-+ * loop in shrink_dcache_parent() might not make any progress
-+ * and loop forever.
- */
-- if (!dentry->d_count) {
-+ if (dentry->d_count) {
-+ dentry_lru_del(dentry);
-+ } else if (!(dentry->d_flags & DCACHE_SHRINK_LIST)) {
- dentry_lru_move_list(dentry, dispose);
-+ dentry->d_flags |= DCACHE_SHRINK_LIST;
- found++;
-- } else {
-- dentry_lru_del(dentry);
- }
--
- /*
- * We can return to the caller if we have found some (this
- * ensures forward progress). We'll be coming back to find
-diff --git a/include/linux/dcache.h b/include/linux/dcache.h
-index ed9f74f..4eb8c80 100644
---- a/include/linux/dcache.h
-+++ b/include/linux/dcache.h
-@@ -203,6 +203,7 @@ struct dentry_operations {
-
- #define DCACHE_CANT_MOUNT 0x0100
- #define DCACHE_GENOCIDE 0x0200
-+#define DCACHE_SHRINK_LIST 0x0400
-
- #define DCACHE_NFSFS_RENAMED 0x1000
- /* this dentry has been "silly renamed" and has to be deleted on the last
---
-1.7.9.5
-
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
deleted file mode 100644
index 50c770c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0077-pnfsblock-acquire-im_lock-in-_preload_range.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-From ff2123e28998f18ebfddf17f1babbc0db77e9857 Mon Sep 17 00:00:00 2001
-From: Peng Tao <bergwolf at gmail.com>
-Date: Thu, 12 Jan 2012 23:18:41 +0800
-Subject: [PATCH 077/129] pnfsblock: acquire im_lock in _preload_range
-
-commit 39e567ae36fe03c2b446e1b83ee3d39bea08f90b upstream.
-
-When calling _add_entry, we should take the im_lock to protect
-agains other modifiers.
-
-Signed-off-by: Peng Tao <peng_tao at emc.com>
-Signed-off-by: Benny Halevy <bhalevy at tonian.com>
-Signed-off-by: Trond Myklebust <Trond.Myklebust at netapp.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- fs/nfs/blocklayout/extents.c | 11 ++++++-----
- 1 file changed, 6 insertions(+), 5 deletions(-)
-
-diff --git a/fs/nfs/blocklayout/extents.c b/fs/nfs/blocklayout/extents.c
-index 19fa7b0..c69682a 100644
---- a/fs/nfs/blocklayout/extents.c
-+++ b/fs/nfs/blocklayout/extents.c
-@@ -139,11 +139,13 @@ static int _set_range(struct my_tree *tree, int32_t tag, u64 s, u64 length)
- }
-
- /* Ensure that future operations on given range of tree will not malloc */
--static int _preload_range(struct my_tree *tree, u64 offset, u64 length)
-+static int _preload_range(struct pnfs_inval_markings *marks,
-+ u64 offset, u64 length)
- {
- u64 start, end, s;
- int count, i, used = 0, status = -ENOMEM;
- struct pnfs_inval_tracking **storage;
-+ struct my_tree *tree = &marks->im_tree;
-
- dprintk("%s(%llu, %llu) enter\n", __func__, offset, length);
- start = normalize(offset, tree->mtt_step_size);
-@@ -161,12 +163,11 @@ static int _preload_range(struct my_tree *tree, u64 offset, u64 length)
- goto out_cleanup;
- }
-
-- /* Now need lock - HOW??? */
--
-+ spin_lock(&marks->im_lock);
- for (s = start; s < end; s += tree->mtt_step_size)
- used += _add_entry(tree, s, INTERNAL_EXISTS, storage[used]);
-+ spin_unlock(&marks->im_lock);
-
-- /* Unlock - HOW??? */
- status = 0;
-
- out_cleanup:
-@@ -286,7 +287,7 @@ int bl_mark_sectors_init(struct pnfs_inval_markings *marks,
-
- start = normalize(offset, marks->im_block_size);
- end = normalize_up(offset + length, marks->im_block_size);
-- if (_preload_range(&marks->im_tree, start, end - start))
-+ if (_preload_range(marks, start, end - start))
- goto outerr;
-
- spin_lock(&marks->im_lock);
---
-1.7.9.5
-
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
deleted file mode 100644
index bc8b40d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0078-pnfsblock-don-t-spinlock-when-freeing-block_dev.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From c483f16efb181ee2384aa9d5672ebebfc714ab1d Mon Sep 17 00:00:00 2001
-From: Peng Tao <bergwolf at gmail.com>
-Date: Thu, 12 Jan 2012 23:18:47 +0800
-Subject: [PATCH 078/129] pnfsblock: don't spinlock when freeing block_dev
-
-commit 93a3844ee0f843b05a1df4b52e1a19ff26b98d24 upstream.
-
-bl_free_block_dev() may sleep. We can not call it with spinlock held.
-Besides, there is no need to take bm_lock as we are last user freeing bm_devlist.
-
-Signed-off-by: Peng Tao <peng_tao at emc.com>
-Signed-off-by: Benny Halevy <bhalevy at tonian.com>
-Signed-off-by: Trond Myklebust <Trond.Myklebust at netapp.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- fs/nfs/blocklayout/blocklayout.c | 11 ++++-------
- 1 file changed, 4 insertions(+), 7 deletions(-)
-
-diff --git a/fs/nfs/blocklayout/blocklayout.c b/fs/nfs/blocklayout/blocklayout.c
-index 281ae95..ce8129d 100644
---- a/fs/nfs/blocklayout/blocklayout.c
-+++ b/fs/nfs/blocklayout/blocklayout.c
-@@ -779,16 +779,13 @@ bl_cleanup_layoutcommit(struct nfs4_layoutcommit_data *lcdata)
- static void free_blk_mountid(struct block_mount_id *mid)
- {
- if (mid) {
-- struct pnfs_block_dev *dev;
-- spin_lock(&mid->bm_lock);
-- while (!list_empty(&mid->bm_devlist)) {
-- dev = list_first_entry(&mid->bm_devlist,
-- struct pnfs_block_dev,
-- bm_node);
-+ struct pnfs_block_dev *dev, *tmp;
-+
-+ /* No need to take bm_lock as we are last user freeing bm_devlist */
-+ list_for_each_entry_safe(dev, tmp, &mid->bm_devlist, bm_node) {
- list_del(&dev->bm_node);
- bl_free_block_dev(dev);
- }
-- spin_unlock(&mid->bm_lock);
- kfree(mid);
- }
- }
---
-1.7.9.5
-
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
deleted file mode 100644
index f003ff0..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0079-pnfsblock-limit-bio-page-count.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From a9de14f6624613210b273a24046142495f745038 Mon Sep 17 00:00:00 2001
-From: Peng Tao <bergwolf at gmail.com>
-Date: Thu, 12 Jan 2012 23:18:48 +0800
-Subject: [PATCH 079/129] pnfsblock: limit bio page count
-
-commit 74a6eeb44ca6174d9cc93b9b8b4d58211c57bc80 upstream.
-
-One bio can have at most BIO_MAX_PAGES pages. We should limit it bec otherwise
-bio_alloc will fail when there are many pages in one read/write_pagelist.
-
-Signed-off-by: Peng Tao <peng_tao at emc.com>
-Signed-off-by: Benny Halevy <bhalevy at tonian.com>
-Signed-off-by: Trond Myklebust <Trond.Myklebust at netapp.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- fs/nfs/blocklayout/blocklayout.c | 17 +++++++++++------
- 1 file changed, 11 insertions(+), 6 deletions(-)
-
-diff --git a/fs/nfs/blocklayout/blocklayout.c b/fs/nfs/blocklayout/blocklayout.c
-index ce8129d..3db6b82 100644
---- a/fs/nfs/blocklayout/blocklayout.c
-+++ b/fs/nfs/blocklayout/blocklayout.c
-@@ -146,14 +146,19 @@ static struct bio *bl_alloc_init_bio(int npg, sector_t isect,
- {
- struct bio *bio;
-
-+ npg = min(npg, BIO_MAX_PAGES);
- bio = bio_alloc(GFP_NOIO, npg);
-- if (!bio)
-- return NULL;
-+ if (!bio && (current->flags & PF_MEMALLOC)) {
-+ while (!bio && (npg /= 2))
-+ bio = bio_alloc(GFP_NOIO, npg);
-+ }
-
-- bio->bi_sector = isect - be->be_f_offset + be->be_v_offset;
-- bio->bi_bdev = be->be_mdev;
-- bio->bi_end_io = end_io;
-- bio->bi_private = par;
-+ if (bio) {
-+ bio->bi_sector = isect - be->be_f_offset + be->be_v_offset;
-+ bio->bi_bdev = be->be_mdev;
-+ bio->bi_end_io = end_io;
-+ bio->bi_private = par;
-+ }
- return bio;
- }
-
---
-1.7.9.5
-
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
deleted file mode 100644
index 77b753d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0080-mac80211-revert-on-channel-work-optimisations.patch
+++ /dev/null
@@ -1,635 +0,0 @@
-From 785fae0af79dd35416a44469930c2cbe87ff2c48 Mon Sep 17 00:00:00 2001
-From: Johannes Berg <johannes.berg at intel.com>
-Date: Tue, 29 Nov 2011 10:20:02 +0100
-Subject: [PATCH 080/129] mac80211: revert on-channel work optimisations
-
-commit e76aadc572288a158ae18ae1c10fe395c7bca066 upstream.
-
-Backport note:
-This patch it's a full revert of commit b23b025f "mac80211: Optimize
-scans on current operating channel.". On upstrem revert e76aadc5 we
-keep some bits from that commit, which are needed for upstream version
-of mac80211.
-
-The on-channel work optimisations have caused a
-number of issues, and the code is unfortunately
-very complex and almost impossible to follow.
-Instead of attempting to put in more workarounds
-let's just remove those optimisations, we can
-work on them again later, after we change the
-whole auth/assoc design.
-
-This should fix rate_control_send_low() warnings,
-see RH bug 731365.
-
-Signed-off-by: Johannes Berg <johannes.berg at intel.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Stanislaw Gruszka <sgruszka at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- net/mac80211/ieee80211_i.h | 13 ++++----
- net/mac80211/main.c | 58 ++++-----------------------------
- net/mac80211/offchannel.c | 68 ++++++++++++++++++--------------------
- net/mac80211/rx.c | 10 ++++--
- net/mac80211/scan.c | 77 +++++++++++++-------------------------------
- net/mac80211/tx.c | 3 +-
- net/mac80211/work.c | 77 +++++++-------------------------------------
- 7 files changed, 85 insertions(+), 221 deletions(-)
-
-diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h
-index ea10a51..73495f1 100644
---- a/net/mac80211/ieee80211_i.h
-+++ b/net/mac80211/ieee80211_i.h
-@@ -702,6 +702,8 @@ struct tpt_led_trigger {
- * well be on the operating channel
- * @SCAN_HW_SCANNING: The hardware is scanning for us, we have no way to
- * determine if we are on the operating channel or not
-+ * @SCAN_OFF_CHANNEL: We're off our operating channel for scanning,
-+ * gets only set in conjunction with SCAN_SW_SCANNING
- * @SCAN_COMPLETED: Set for our scan work function when the driver reported
- * that the scan completed.
- * @SCAN_ABORTED: Set for our scan work function when the driver reported
-@@ -710,6 +712,7 @@ struct tpt_led_trigger {
- enum {
- SCAN_SW_SCANNING,
- SCAN_HW_SCANNING,
-+ SCAN_OFF_CHANNEL,
- SCAN_COMPLETED,
- SCAN_ABORTED,
- };
-@@ -1140,14 +1143,10 @@ int ieee80211_request_sched_scan_stop(struct ieee80211_sub_if_data *sdata);
- void ieee80211_sched_scan_stopped_work(struct work_struct *work);
-
- /* off-channel helpers */
--bool ieee80211_cfg_on_oper_channel(struct ieee80211_local *local);
--void ieee80211_offchannel_enable_all_ps(struct ieee80211_local *local,
-- bool tell_ap);
--void ieee80211_offchannel_stop_vifs(struct ieee80211_local *local,
-- bool offchannel_ps_enable);
-+void ieee80211_offchannel_stop_beaconing(struct ieee80211_local *local);
-+void ieee80211_offchannel_stop_station(struct ieee80211_local *local);
- void ieee80211_offchannel_return(struct ieee80211_local *local,
-- bool enable_beaconing,
-- bool offchannel_ps_disable);
-+ bool enable_beaconing);
- void ieee80211_hw_roc_setup(struct ieee80211_local *local);
-
- /* interface handling */
-diff --git a/net/mac80211/main.c b/net/mac80211/main.c
-index cae4435..a7536fd 100644
---- a/net/mac80211/main.c
-+++ b/net/mac80211/main.c
-@@ -92,47 +92,6 @@ static void ieee80211_reconfig_filter(struct work_struct *work)
- ieee80211_configure_filter(local);
- }
-
--/*
-- * Returns true if we are logically configured to be on
-- * the operating channel AND the hardware-conf is currently
-- * configured on the operating channel. Compares channel-type
-- * as well.
-- */
--bool ieee80211_cfg_on_oper_channel(struct ieee80211_local *local)
--{
-- struct ieee80211_channel *chan, *scan_chan;
-- enum nl80211_channel_type channel_type;
--
-- /* This logic needs to match logic in ieee80211_hw_config */
-- if (local->scan_channel) {
-- chan = local->scan_channel;
-- /* If scanning on oper channel, use whatever channel-type
-- * is currently in use.
-- */
-- if (chan == local->oper_channel)
-- channel_type = local->_oper_channel_type;
-- else
-- channel_type = NL80211_CHAN_NO_HT;
-- } else if (local->tmp_channel) {
-- chan = scan_chan = local->tmp_channel;
-- channel_type = local->tmp_channel_type;
-- } else {
-- chan = local->oper_channel;
-- channel_type = local->_oper_channel_type;
-- }
--
-- if (chan != local->oper_channel ||
-- channel_type != local->_oper_channel_type)
-- return false;
--
-- /* Check current hardware-config against oper_channel. */
-- if ((local->oper_channel != local->hw.conf.channel) ||
-- (local->_oper_channel_type != local->hw.conf.channel_type))
-- return false;
--
-- return true;
--}
--
- int ieee80211_hw_config(struct ieee80211_local *local, u32 changed)
- {
- struct ieee80211_channel *chan, *scan_chan;
-@@ -145,9 +104,6 @@ int ieee80211_hw_config(struct ieee80211_local *local, u32 changed)
-
- scan_chan = local->scan_channel;
-
-- /* If this off-channel logic ever changes, ieee80211_on_oper_channel
-- * may need to change as well.
-- */
- offchannel_flag = local->hw.conf.flags & IEEE80211_CONF_OFFCHANNEL;
- if (scan_chan) {
- chan = scan_chan;
-@@ -158,19 +114,17 @@ int ieee80211_hw_config(struct ieee80211_local *local, u32 changed)
- channel_type = local->_oper_channel_type;
- else
- channel_type = NL80211_CHAN_NO_HT;
-- } else if (local->tmp_channel) {
-+ local->hw.conf.flags |= IEEE80211_CONF_OFFCHANNEL;
-+ } else if (local->tmp_channel &&
-+ local->oper_channel != local->tmp_channel) {
- chan = scan_chan = local->tmp_channel;
- channel_type = local->tmp_channel_type;
-+ local->hw.conf.flags |= IEEE80211_CONF_OFFCHANNEL;
- } else {
- chan = local->oper_channel;
- channel_type = local->_oper_channel_type;
-- }
--
-- if (chan != local->oper_channel ||
-- channel_type != local->_oper_channel_type)
-- local->hw.conf.flags |= IEEE80211_CONF_OFFCHANNEL;
-- else
- local->hw.conf.flags &= ~IEEE80211_CONF_OFFCHANNEL;
-+ }
-
- offchannel_flag ^= local->hw.conf.flags & IEEE80211_CONF_OFFCHANNEL;
-
-@@ -279,7 +233,7 @@ void ieee80211_bss_info_change_notify(struct ieee80211_sub_if_data *sdata,
-
- if (changed & BSS_CHANGED_BEACON_ENABLED) {
- if (local->quiescing || !ieee80211_sdata_running(sdata) ||
-- test_bit(SDATA_STATE_OFFCHANNEL, &sdata->state)) {
-+ test_bit(SCAN_SW_SCANNING, &local->scanning)) {
- sdata->vif.bss_conf.enable_beacon = false;
- } else {
- /*
-diff --git a/net/mac80211/offchannel.c b/net/mac80211/offchannel.c
-index 3d41441..1b239be 100644
---- a/net/mac80211/offchannel.c
-+++ b/net/mac80211/offchannel.c
-@@ -18,14 +18,10 @@
- #include "driver-trace.h"
-
- /*
-- * Tell our hardware to disable PS.
-- * Optionally inform AP that we will go to sleep so that it will buffer
-- * the frames while we are doing off-channel work. This is optional
-- * because we *may* be doing work on-operating channel, and want our
-- * hardware unconditionally awake, but still let the AP send us normal frames.
-+ * inform AP that we will go to sleep so that it will buffer the frames
-+ * while we scan
- */
--static void ieee80211_offchannel_ps_enable(struct ieee80211_sub_if_data *sdata,
-- bool tell_ap)
-+static void ieee80211_offchannel_ps_enable(struct ieee80211_sub_if_data *sdata)
- {
- struct ieee80211_local *local = sdata->local;
- struct ieee80211_if_managed *ifmgd = &sdata->u.mgd;
-@@ -46,8 +42,8 @@ static void ieee80211_offchannel_ps_enable(struct ieee80211_sub_if_data *sdata,
- ieee80211_hw_config(local, IEEE80211_CONF_CHANGE_PS);
- }
-
-- if (tell_ap && (!local->offchannel_ps_enabled ||
-- !(local->hw.flags & IEEE80211_HW_PS_NULLFUNC_STACK)))
-+ if (!(local->offchannel_ps_enabled) ||
-+ !(local->hw.flags & IEEE80211_HW_PS_NULLFUNC_STACK))
- /*
- * If power save was enabled, no need to send a nullfunc
- * frame because AP knows that we are sleeping. But if the
-@@ -82,9 +78,6 @@ static void ieee80211_offchannel_ps_disable(struct ieee80211_sub_if_data *sdata)
- * we are sleeping, let's just enable power save mode in
- * hardware.
- */
-- /* TODO: Only set hardware if CONF_PS changed?
-- * TODO: Should we set offchannel_ps_enabled to false?
-- */
- local->hw.conf.flags |= IEEE80211_CONF_PS;
- ieee80211_hw_config(local, IEEE80211_CONF_CHANGE_PS);
- } else if (local->hw.conf.dynamic_ps_timeout > 0) {
-@@ -103,61 +96,63 @@ static void ieee80211_offchannel_ps_disable(struct ieee80211_sub_if_data *sdata)
- ieee80211_sta_reset_conn_monitor(sdata);
- }
-
--void ieee80211_offchannel_stop_vifs(struct ieee80211_local *local,
-- bool offchannel_ps_enable)
-+void ieee80211_offchannel_stop_beaconing(struct ieee80211_local *local)
- {
- struct ieee80211_sub_if_data *sdata;
-
-- /*
-- * notify the AP about us leaving the channel and stop all
-- * STA interfaces.
-- */
- mutex_lock(&local->iflist_mtx);
- list_for_each_entry(sdata, &local->interfaces, list) {
- if (!ieee80211_sdata_running(sdata))
- continue;
-
-- if (sdata->vif.type != NL80211_IFTYPE_MONITOR)
-- set_bit(SDATA_STATE_OFFCHANNEL, &sdata->state);
--
-- /* Check to see if we should disable beaconing. */
-+ /* disable beaconing */
- if (sdata->vif.type == NL80211_IFTYPE_AP ||
- sdata->vif.type == NL80211_IFTYPE_ADHOC ||
- sdata->vif.type == NL80211_IFTYPE_MESH_POINT)
- ieee80211_bss_info_change_notify(
- sdata, BSS_CHANGED_BEACON_ENABLED);
-
-- if (sdata->vif.type != NL80211_IFTYPE_MONITOR) {
-+ /*
-+ * only handle non-STA interfaces here, STA interfaces
-+ * are handled in ieee80211_offchannel_stop_station(),
-+ * e.g., from the background scan state machine.
-+ *
-+ * In addition, do not stop monitor interface to allow it to be
-+ * used from user space controlled off-channel operations.
-+ */
-+ if (sdata->vif.type != NL80211_IFTYPE_STATION &&
-+ sdata->vif.type != NL80211_IFTYPE_MONITOR) {
-+ set_bit(SDATA_STATE_OFFCHANNEL, &sdata->state);
- netif_tx_stop_all_queues(sdata->dev);
-- if (offchannel_ps_enable &&
-- (sdata->vif.type == NL80211_IFTYPE_STATION) &&
-- sdata->u.mgd.associated)
-- ieee80211_offchannel_ps_enable(sdata, true);
- }
- }
- mutex_unlock(&local->iflist_mtx);
- }
-
--void ieee80211_offchannel_enable_all_ps(struct ieee80211_local *local,
-- bool tell_ap)
-+void ieee80211_offchannel_stop_station(struct ieee80211_local *local)
- {
- struct ieee80211_sub_if_data *sdata;
-
-+ /*
-+ * notify the AP about us leaving the channel and stop all STA interfaces
-+ */
- mutex_lock(&local->iflist_mtx);
- list_for_each_entry(sdata, &local->interfaces, list) {
- if (!ieee80211_sdata_running(sdata))
- continue;
-
-- if (sdata->vif.type == NL80211_IFTYPE_STATION &&
-- sdata->u.mgd.associated)
-- ieee80211_offchannel_ps_enable(sdata, tell_ap);
-+ if (sdata->vif.type == NL80211_IFTYPE_STATION) {
-+ set_bit(SDATA_STATE_OFFCHANNEL, &sdata->state);
-+ netif_tx_stop_all_queues(sdata->dev);
-+ if (sdata->u.mgd.associated)
-+ ieee80211_offchannel_ps_enable(sdata);
-+ }
- }
- mutex_unlock(&local->iflist_mtx);
- }
-
- void ieee80211_offchannel_return(struct ieee80211_local *local,
-- bool enable_beaconing,
-- bool offchannel_ps_disable)
-+ bool enable_beaconing)
- {
- struct ieee80211_sub_if_data *sdata;
-
-@@ -167,8 +162,7 @@ void ieee80211_offchannel_return(struct ieee80211_local *local,
- continue;
-
- /* Tell AP we're back */
-- if (offchannel_ps_disable &&
-- sdata->vif.type == NL80211_IFTYPE_STATION) {
-+ if (sdata->vif.type == NL80211_IFTYPE_STATION) {
- if (sdata->u.mgd.associated)
- ieee80211_offchannel_ps_disable(sdata);
- }
-@@ -188,7 +182,7 @@ void ieee80211_offchannel_return(struct ieee80211_local *local,
- netif_tx_wake_all_queues(sdata->dev);
- }
-
-- /* Check to see if we should re-enable beaconing */
-+ /* re-enable beaconing */
- if (enable_beaconing &&
- (sdata->vif.type == NL80211_IFTYPE_AP ||
- sdata->vif.type == NL80211_IFTYPE_ADHOC ||
-diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
-index fb123e2..5c51607 100644
---- a/net/mac80211/rx.c
-+++ b/net/mac80211/rx.c
-@@ -421,10 +421,16 @@ ieee80211_rx_h_passive_scan(struct ieee80211_rx_data *rx)
- return RX_CONTINUE;
-
- if (test_bit(SCAN_HW_SCANNING, &local->scanning) ||
-- test_bit(SCAN_SW_SCANNING, &local->scanning) ||
- local->sched_scanning)
- return ieee80211_scan_rx(rx->sdata, skb);
-
-+ if (test_bit(SCAN_SW_SCANNING, &local->scanning)) {
-+ /* drop all the other packets during a software scan anyway */
-+ if (ieee80211_scan_rx(rx->sdata, skb) != RX_QUEUED)
-+ dev_kfree_skb(skb);
-+ return RX_QUEUED;
-+ }
-+
- /* scanning finished during invoking of handlers */
- I802_DEBUG_INC(local->rx_handlers_drop_passive_scan);
- return RX_DROP_UNUSABLE;
-@@ -2858,7 +2864,7 @@ static void __ieee80211_rx_handle_packet(struct ieee80211_hw *hw,
- local->dot11ReceivedFragmentCount++;
-
- if (unlikely(test_bit(SCAN_HW_SCANNING, &local->scanning) ||
-- test_bit(SCAN_SW_SCANNING, &local->scanning)))
-+ test_bit(SCAN_OFF_CHANNEL, &local->scanning)))
- status->rx_flags |= IEEE80211_RX_IN_SCAN;
-
- if (ieee80211_is_mgmt(fc))
-diff --git a/net/mac80211/scan.c b/net/mac80211/scan.c
-index 105436d..5279300 100644
---- a/net/mac80211/scan.c
-+++ b/net/mac80211/scan.c
-@@ -213,14 +213,6 @@ ieee80211_scan_rx(struct ieee80211_sub_if_data *sdata, struct sk_buff *skb)
- if (bss)
- ieee80211_rx_bss_put(sdata->local, bss);
-
-- /* If we are on-operating-channel, and this packet is for the
-- * current channel, pass the pkt on up the stack so that
-- * the rest of the stack can make use of it.
-- */
-- if (ieee80211_cfg_on_oper_channel(sdata->local)
-- && (channel == sdata->local->oper_channel))
-- return RX_CONTINUE;
--
- dev_kfree_skb(skb);
- return RX_QUEUED;
- }
-@@ -264,8 +256,6 @@ static void __ieee80211_scan_completed(struct ieee80211_hw *hw, bool aborted,
- bool was_hw_scan)
- {
- struct ieee80211_local *local = hw_to_local(hw);
-- bool on_oper_chan;
-- bool enable_beacons = false;
-
- lockdep_assert_held(&local->mtx);
-
-@@ -298,25 +288,11 @@ static void __ieee80211_scan_completed(struct ieee80211_hw *hw, bool aborted,
- local->scanning = 0;
- local->scan_channel = NULL;
-
-- on_oper_chan = ieee80211_cfg_on_oper_channel(local);
--
-- if (was_hw_scan || !on_oper_chan)
-- ieee80211_hw_config(local, IEEE80211_CONF_CHANGE_CHANNEL);
-- else
-- /* Set power back to normal operating levels. */
-- ieee80211_hw_config(local, 0);
--
-+ ieee80211_hw_config(local, IEEE80211_CONF_CHANGE_CHANNEL);
- if (!was_hw_scan) {
-- bool on_oper_chan2;
- ieee80211_configure_filter(local);
- drv_sw_scan_complete(local);
-- on_oper_chan2 = ieee80211_cfg_on_oper_channel(local);
-- /* We should always be on-channel at this point. */
-- WARN_ON(!on_oper_chan2);
-- if (on_oper_chan2 && (on_oper_chan != on_oper_chan2))
-- enable_beacons = true;
--
-- ieee80211_offchannel_return(local, enable_beacons, true);
-+ ieee80211_offchannel_return(local, true);
- }
-
- ieee80211_recalc_idle(local);
-@@ -357,15 +333,13 @@ static int ieee80211_start_sw_scan(struct ieee80211_local *local)
- */
- drv_sw_scan_start(local);
-
-+ ieee80211_offchannel_stop_beaconing(local);
-+
- local->leave_oper_channel_time = 0;
- local->next_scan_state = SCAN_DECISION;
- local->scan_channel_idx = 0;
-
-- /* We always want to use off-channel PS, even if we
-- * are not really leaving oper-channel. Don't
-- * tell the AP though, as long as we are on-channel.
-- */
-- ieee80211_offchannel_enable_all_ps(local, false);
-+ drv_flush(local, false);
-
- ieee80211_configure_filter(local);
-
-@@ -508,20 +482,7 @@ static void ieee80211_scan_state_decision(struct ieee80211_local *local,
- }
- mutex_unlock(&local->iflist_mtx);
-
-- next_chan = local->scan_req->channels[local->scan_channel_idx];
--
-- if (ieee80211_cfg_on_oper_channel(local)) {
-- /* We're currently on operating channel. */
-- if (next_chan == local->oper_channel)
-- /* We don't need to move off of operating channel. */
-- local->next_scan_state = SCAN_SET_CHANNEL;
-- else
-- /*
-- * We do need to leave operating channel, as next
-- * scan is somewhere else.
-- */
-- local->next_scan_state = SCAN_LEAVE_OPER_CHANNEL;
-- } else {
-+ if (local->scan_channel) {
- /*
- * we're currently scanning a different channel, let's
- * see if we can scan another channel without interfering
-@@ -537,6 +498,7 @@ static void ieee80211_scan_state_decision(struct ieee80211_local *local,
- *
- * Otherwise switch back to the operating channel.
- */
-+ next_chan = local->scan_req->channels[local->scan_channel_idx];
-
- bad_latency = time_after(jiffies +
- ieee80211_scan_get_channel_time(next_chan),
-@@ -554,6 +516,12 @@ static void ieee80211_scan_state_decision(struct ieee80211_local *local,
- local->next_scan_state = SCAN_ENTER_OPER_CHANNEL;
- else
- local->next_scan_state = SCAN_SET_CHANNEL;
-+ } else {
-+ /*
-+ * we're on the operating channel currently, let's
-+ * leave that channel now to scan another one
-+ */
-+ local->next_scan_state = SCAN_LEAVE_OPER_CHANNEL;
- }
-
- *next_delay = 0;
-@@ -562,10 +530,9 @@ static void ieee80211_scan_state_decision(struct ieee80211_local *local,
- static void ieee80211_scan_state_leave_oper_channel(struct ieee80211_local *local,
- unsigned long *next_delay)
- {
-- /* PS will already be in off-channel mode,
-- * we do that once at the beginning of scanning.
-- */
-- ieee80211_offchannel_stop_vifs(local, false);
-+ ieee80211_offchannel_stop_station(local);
-+
-+ __set_bit(SCAN_OFF_CHANNEL, &local->scanning);
-
- /*
- * What if the nullfunc frames didn't arrive?
-@@ -588,15 +555,15 @@ static void ieee80211_scan_state_enter_oper_channel(struct ieee80211_local *loca
- {
- /* switch back to the operating channel */
- local->scan_channel = NULL;
-- if (!ieee80211_cfg_on_oper_channel(local))
-- ieee80211_hw_config(local, IEEE80211_CONF_CHANGE_CHANNEL);
-+ ieee80211_hw_config(local, IEEE80211_CONF_CHANGE_CHANNEL);
-
- /*
-- * Re-enable vifs and beaconing. Leave PS
-- * in off-channel state..will put that back
-- * on-channel at the end of scanning.
-+ * Only re-enable station mode interface now; beaconing will be
-+ * re-enabled once the full scan has been completed.
- */
-- ieee80211_offchannel_return(local, true, false);
-+ ieee80211_offchannel_return(local, false);
-+
-+ __clear_bit(SCAN_OFF_CHANNEL, &local->scanning);
-
- *next_delay = HZ / 5;
- local->next_scan_state = SCAN_DECISION;
-diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
-index 1f8b120..eff1f4e 100644
---- a/net/mac80211/tx.c
-+++ b/net/mac80211/tx.c
-@@ -259,8 +259,7 @@ ieee80211_tx_h_check_assoc(struct ieee80211_tx_data *tx)
- if (unlikely(info->flags & IEEE80211_TX_CTL_INJECTED))
- return TX_CONTINUE;
-
-- if (unlikely(test_bit(SCAN_SW_SCANNING, &tx->local->scanning)) &&
-- test_bit(SDATA_STATE_OFFCHANNEL, &tx->sdata->state) &&
-+ if (unlikely(test_bit(SCAN_OFF_CHANNEL, &tx->local->scanning)) &&
- !ieee80211_is_probe_req(hdr->frame_control) &&
- !ieee80211_is_nullfunc(hdr->frame_control))
- /*
-diff --git a/net/mac80211/work.c b/net/mac80211/work.c
-index 6c53b6d..99165ef 100644
---- a/net/mac80211/work.c
-+++ b/net/mac80211/work.c
-@@ -899,26 +899,6 @@ static bool ieee80211_work_ct_coexists(enum nl80211_channel_type wk_ct,
- return false;
- }
-
--static enum nl80211_channel_type
--ieee80211_calc_ct(enum nl80211_channel_type wk_ct,
-- enum nl80211_channel_type oper_ct)
--{
-- switch (wk_ct) {
-- case NL80211_CHAN_NO_HT:
-- return oper_ct;
-- case NL80211_CHAN_HT20:
-- if (oper_ct != NL80211_CHAN_NO_HT)
-- return oper_ct;
-- return wk_ct;
-- case NL80211_CHAN_HT40MINUS:
-- case NL80211_CHAN_HT40PLUS:
-- return wk_ct;
-- }
-- WARN_ON(1); /* shouldn't get here */
-- return wk_ct;
--}
--
--
- static void ieee80211_work_timer(unsigned long data)
- {
- struct ieee80211_local *local = (void *) data;
-@@ -969,52 +949,18 @@ static void ieee80211_work_work(struct work_struct *work)
- }
-
- if (!started && !local->tmp_channel) {
-- bool on_oper_chan;
-- bool tmp_chan_changed = false;
-- bool on_oper_chan2;
-- enum nl80211_channel_type wk_ct;
-- on_oper_chan = ieee80211_cfg_on_oper_channel(local);
--
-- /* Work with existing channel type if possible. */
-- wk_ct = wk->chan_type;
-- if (wk->chan == local->hw.conf.channel)
-- wk_ct = ieee80211_calc_ct(wk->chan_type,
-- local->hw.conf.channel_type);
--
-- if (local->tmp_channel)
-- if ((local->tmp_channel != wk->chan) ||
-- (local->tmp_channel_type != wk_ct))
-- tmp_chan_changed = true;
--
-- local->tmp_channel = wk->chan;
-- local->tmp_channel_type = wk_ct;
- /*
-- * Leave the station vifs in awake mode if they
-- * happen to be on the same channel as
-- * the requested channel.
-+ * TODO: could optimize this by leaving the
-+ * station vifs in awake mode if they
-+ * happen to be on the same channel as
-+ * the requested channel
- */
-- on_oper_chan2 = ieee80211_cfg_on_oper_channel(local);
-- if (on_oper_chan != on_oper_chan2) {
-- if (on_oper_chan2) {
-- /* going off oper channel, PS too */
-- ieee80211_offchannel_stop_vifs(local,
-- true);
-- ieee80211_hw_config(local, 0);
-- } else {
-- /* going on channel, but leave PS
-- * off-channel. */
-- ieee80211_hw_config(local, 0);
-- ieee80211_offchannel_return(local,
-- true,
-- false);
-- }
-- } else if (tmp_chan_changed)
-- /* Still off-channel, but on some other
-- * channel, so update hardware.
-- * PS should already be off-channel.
-- */
-- ieee80211_hw_config(local, 0);
-+ ieee80211_offchannel_stop_beaconing(local);
-+ ieee80211_offchannel_stop_station(local);
-
-+ local->tmp_channel = wk->chan;
-+ local->tmp_channel_type = wk->chan_type;
-+ ieee80211_hw_config(local, 0);
- started = true;
- wk->timeout = jiffies;
- }
-@@ -1100,8 +1046,7 @@ static void ieee80211_work_work(struct work_struct *work)
- * we still need to do a hardware config. Currently,
- * we cannot be here while scanning, however.
- */
-- if (!ieee80211_cfg_on_oper_channel(local))
-- ieee80211_hw_config(local, 0);
-+ ieee80211_hw_config(local, 0);
-
- /* At the least, we need to disable offchannel_ps,
- * so just go ahead and run the entire offchannel
-@@ -1109,7 +1054,7 @@ static void ieee80211_work_work(struct work_struct *work)
- * beaconing if we were already on-oper-channel
- * as a future optimization.
- */
-- ieee80211_offchannel_return(local, true, true);
-+ ieee80211_offchannel_return(local, true);
-
- /* give connection some time to breathe */
- run_again(local, jiffies + HZ/2);
---
-1.7.9.5
-
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
deleted file mode 100644
index 5db3fea..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0081-HID-hid-multitouch-add-another-eGalax-id.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From 15efaf9be89966a57b4d147511de686976e4a4eb Mon Sep 17 00:00:00 2001
-From: Chris Bagwell <chris at cnpbagwell.com>
-Date: Wed, 23 Nov 2011 10:54:27 +0100
-Subject: [PATCH 081/129] HID: hid-multitouch - add another eGalax id
-
-commit 1fd8f047490dd0ec4e4db710fcbc1bd4798d944c upstream.
-
-This allows ASUS Eee Slate touchscreens to work.
-
-Signed-off-by: Chris Bagwell <chris at cnpbagwell.com>
-Reviewed-by: Benjamin Tissoires <benjamin.tissoires at gmail.com>
-Signed-off-by: Jiri Kosina <jkosina at suse.cz>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/hid/hid-core.c | 1 +
- drivers/hid/hid-ids.h | 1 +
- drivers/hid/hid-multitouch.c | 3 +++
- 3 files changed, 5 insertions(+)
-
-diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
-index 1473067..b51cbf2 100644
---- a/drivers/hid/hid-core.c
-+++ b/drivers/hid/hid-core.c
-@@ -1409,6 +1409,7 @@ static const struct hid_device_id hid_have_special_driver[] = {
- { HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH2) },
- { HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH3) },
- { HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH4) },
-+ { HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH5) },
- { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_BM084) },
- { HID_USB_DEVICE(USB_VENDOR_ID_ELO, USB_DEVICE_ID_ELO_TS2515) },
- { HID_USB_DEVICE(USB_VENDOR_ID_EMS, USB_DEVICE_ID_EMS_TRIO_LINKER_PLUS_II) },
-diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
-index 4a441a6..4c9a342 100644
---- a/drivers/hid/hid-ids.h
-+++ b/drivers/hid/hid-ids.h
-@@ -235,6 +235,7 @@
- #define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH2 0x72a1
- #define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH3 0x480e
- #define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH4 0x726b
-+#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH5 0xa001
-
- #define USB_VENDOR_ID_ELECOM 0x056e
- #define USB_DEVICE_ID_ELECOM_BM084 0x0061
-diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c
-index f1c909f..a59d939 100644
---- a/drivers/hid/hid-multitouch.c
-+++ b/drivers/hid/hid-multitouch.c
-@@ -662,6 +662,9 @@ static const struct hid_device_id mt_devices[] = {
- { .driver_data = MT_CLS_EGALAX,
- HID_USB_DEVICE(USB_VENDOR_ID_DWAV,
- USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH4) },
-+ { .driver_data = MT_CLS_EGALAX,
-+ HID_USB_DEVICE(USB_VENDOR_ID_DWAV,
-+ USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH5) },
-
- /* Elo TouchSystems IntelliTouch Plus panel */
- { .driver_data = MT_CLS_DUAL_NSMU_CONTACTID,
---
-1.7.9.5
-
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
deleted file mode 100644
index 807223b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0082-HID-multitouch-cleanup-with-eGalax-PID-definitions.patch
+++ /dev/null
@@ -1,112 +0,0 @@
-From 13e475d4826aa0be579632fd2a7473aee213e82b Mon Sep 17 00:00:00 2001
-From: Benjamin Tissoires <benjamin.tissoires at enac.fr>
-Date: Wed, 23 Nov 2011 10:54:31 +0100
-Subject: [PATCH 082/129] HID: multitouch: cleanup with eGalax PID definitions
-
-commit e36f690b37945e0a9bb1554e1546eeec93f7d1f6 upstream.
-
-This is just a renaming of USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH{N}
-to USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_{PID} to handle more eGalax
-devices.
-
-Signed-off-by: Benjamin Tissoires <benjamin.tissoires at enac.fr>
-Signed-off-by: Jiri Kosina <jkosina at suse.cz>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/hid/hid-core.c | 12 ++++++------
- drivers/hid/hid-ids.h | 12 ++++++------
- drivers/hid/hid-multitouch.c | 24 ++++++++++++------------
- 3 files changed, 24 insertions(+), 24 deletions(-)
-
-diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
-index b51cbf2..4434aba 100644
---- a/drivers/hid/hid-core.c
-+++ b/drivers/hid/hid-core.c
-@@ -1404,12 +1404,12 @@ static const struct hid_device_id hid_have_special_driver[] = {
- { HID_USB_DEVICE(USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_TRUETOUCH) },
- { HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, 0x0006) },
- { HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, 0x0011) },
-- { HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH) },
-- { HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH1) },
-- { HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH2) },
-- { HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH3) },
-- { HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH4) },
-- { HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH5) },
-+ { HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_480D) },
-+ { HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_480E) },
-+ { HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_720C) },
-+ { HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_726B) },
-+ { HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_72A1) },
-+ { HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_A001) },
- { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_BM084) },
- { HID_USB_DEVICE(USB_VENDOR_ID_ELO, USB_DEVICE_ID_ELO_TS2515) },
- { HID_USB_DEVICE(USB_VENDOR_ID_EMS, USB_DEVICE_ID_EMS_TRIO_LINKER_PLUS_II) },
-diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
-index 4c9a342..9db8789 100644
---- a/drivers/hid/hid-ids.h
-+++ b/drivers/hid/hid-ids.h
-@@ -230,12 +230,12 @@
-
- #define USB_VENDOR_ID_DWAV 0x0eef
- #define USB_DEVICE_ID_EGALAX_TOUCHCONTROLLER 0x0001
--#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH 0x480d
--#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH1 0x720c
--#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH2 0x72a1
--#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH3 0x480e
--#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH4 0x726b
--#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH5 0xa001
-+#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_480D 0x480d
-+#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_480E 0x480e
-+#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_720C 0x720c
-+#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_726B 0x726b
-+#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_72A1 0x72a1
-+#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_A001 0xa001
-
- #define USB_VENDOR_ID_ELECOM 0x056e
- #define USB_DEVICE_ID_ELECOM_BM084 0x0061
-diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c
-index a59d939..815bd22 100644
---- a/drivers/hid/hid-multitouch.c
-+++ b/drivers/hid/hid-multitouch.c
-@@ -645,26 +645,26 @@ static const struct hid_device_id mt_devices[] = {
- USB_DEVICE_ID_CYPRESS_TRUETOUCH) },
-
- /* eGalax devices (resistive) */
-- { .driver_data = MT_CLS_EGALAX,
-+ { .driver_data = MT_CLS_EGALAX,
- HID_USB_DEVICE(USB_VENDOR_ID_DWAV,
-- USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH) },
-- { .driver_data = MT_CLS_EGALAX,
-+ USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_480D) },
-+ { .driver_data = MT_CLS_EGALAX,
- HID_USB_DEVICE(USB_VENDOR_ID_DWAV,
-- USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH3) },
-+ USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_480E) },
-
- /* eGalax devices (capacitive) */
-- { .driver_data = MT_CLS_EGALAX,
-+ { .driver_data = MT_CLS_EGALAX,
- HID_USB_DEVICE(USB_VENDOR_ID_DWAV,
-- USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH1) },
-- { .driver_data = MT_CLS_EGALAX,
-+ USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_720C) },
-+ { .driver_data = MT_CLS_EGALAX,
- HID_USB_DEVICE(USB_VENDOR_ID_DWAV,
-- USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH2) },
-- { .driver_data = MT_CLS_EGALAX,
-+ USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_726B) },
-+ { .driver_data = MT_CLS_EGALAX,
- HID_USB_DEVICE(USB_VENDOR_ID_DWAV,
-- USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH4) },
-- { .driver_data = MT_CLS_EGALAX,
-+ USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_72A1) },
-+ { .driver_data = MT_CLS_EGALAX,
- HID_USB_DEVICE(USB_VENDOR_ID_DWAV,
-- USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH5) },
-+ USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_A001) },
-
- /* Elo TouchSystems IntelliTouch Plus panel */
- { .driver_data = MT_CLS_DUAL_NSMU_CONTACTID,
---
-1.7.9.5
-
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
deleted file mode 100644
index f038705..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0083-HID-multitouch-Add-egalax-ID-for-Acer-Iconia-W500.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From d92a1f3e6dbdf628dec0f2a37f3920f89ef304fa Mon Sep 17 00:00:00 2001
-From: Marek Vasut <marek.vasut at gmail.com>
-Date: Wed, 23 Nov 2011 10:54:32 +0100
-Subject: [PATCH 083/129] HID: multitouch: Add egalax ID for Acer Iconia W500
-
-commit bb9ff21072043634f147c05ac65dbf8185d4af6d upstream.
-
-This patch adds USB ID for the touchpanel in Acer Iconia W500. The panel
-supports up to five fingers, therefore the need for a new addition of panel
-types.
-
-Signed-off-by: Marek Vasut <marek.vasut at gmail.com>
-Signed-off-by: Benjamin Tissoires <benjamin.tissoires at enac.fr>
-Signed-off-by: Jiri Kosina <jkosina at suse.cz>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/hid/hid-core.c | 1 +
- drivers/hid/hid-ids.h | 1 +
- drivers/hid/hid-multitouch.c | 3 +++
- 3 files changed, 5 insertions(+)
-
-diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
-index 4434aba..9cee7b2 100644
---- a/drivers/hid/hid-core.c
-+++ b/drivers/hid/hid-core.c
-@@ -1409,6 +1409,7 @@ static const struct hid_device_id hid_have_special_driver[] = {
- { HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_720C) },
- { HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_726B) },
- { HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_72A1) },
-+ { HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_7302) },
- { HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_A001) },
- { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_BM084) },
- { HID_USB_DEVICE(USB_VENDOR_ID_ELO, USB_DEVICE_ID_ELO_TS2515) },
-diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
-index 9db8789..9eb90b1 100644
---- a/drivers/hid/hid-ids.h
-+++ b/drivers/hid/hid-ids.h
-@@ -235,6 +235,7 @@
- #define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_720C 0x720c
- #define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_726B 0x726b
- #define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_72A1 0x72a1
-+#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_7302 0x7302
- #define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_A001 0xa001
-
- #define USB_VENDOR_ID_ELECOM 0x056e
-diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c
-index 815bd22..c77d495 100644
---- a/drivers/hid/hid-multitouch.c
-+++ b/drivers/hid/hid-multitouch.c
-@@ -664,6 +664,9 @@ static const struct hid_device_id mt_devices[] = {
- USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_72A1) },
- { .driver_data = MT_CLS_EGALAX,
- HID_USB_DEVICE(USB_VENDOR_ID_DWAV,
-+ USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_7302) },
-+ { .driver_data = MT_CLS_EGALAX,
-+ HID_USB_DEVICE(USB_VENDOR_ID_DWAV,
- USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_A001) },
-
- /* Elo TouchSystems IntelliTouch Plus panel */
---
-1.7.9.5
-
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
deleted file mode 100644
index 94eb6c3..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0084-HID-multitouch-add-support-for-the-MSI-Windpad-110W.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From a68c39aa3ae77996cb2f2cefe21ad1e62e1767a5 Mon Sep 17 00:00:00 2001
-From: Benjamin Tissoires <benjamin.tissoires at enac.fr>
-Date: Wed, 23 Nov 2011 10:54:33 +0100
-Subject: [PATCH 084/129] HID: multitouch: add support for the MSI Windpad
- 110W
-
-commit 66f06127f34ad6e8a1b24a2c03144b694d19f99f upstream.
-
-Just another eGalax device.
-Please note that adding this device to have_special_driver
-in hid-core.c is not required anymore.
-
-Signed-off-by: Benjamin Tissoires <benjamin.tissoires at enac.fr>
-Signed-off-by: Jiri Kosina <jkosina at suse.cz>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/hid/hid-ids.h | 1 +
- drivers/hid/hid-multitouch.c | 3 +++
- 2 files changed, 4 insertions(+)
-
-diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
-index 9eb90b1..6ccd7df 100644
---- a/drivers/hid/hid-ids.h
-+++ b/drivers/hid/hid-ids.h
-@@ -235,6 +235,7 @@
- #define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_720C 0x720c
- #define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_726B 0x726b
- #define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_72A1 0x72a1
-+#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_72FA 0x72fa
- #define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_7302 0x7302
- #define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_A001 0xa001
-
-diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c
-index c77d495..6f6b1d9 100644
---- a/drivers/hid/hid-multitouch.c
-+++ b/drivers/hid/hid-multitouch.c
-@@ -664,6 +664,9 @@ static const struct hid_device_id mt_devices[] = {
- USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_72A1) },
- { .driver_data = MT_CLS_EGALAX,
- HID_USB_DEVICE(USB_VENDOR_ID_DWAV,
-+ USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_72FA) },
-+ { .driver_data = MT_CLS_EGALAX,
-+ HID_USB_DEVICE(USB_VENDOR_ID_DWAV,
- USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_7302) },
- { .driver_data = MT_CLS_EGALAX,
- HID_USB_DEVICE(USB_VENDOR_ID_DWAV,
---
-1.7.9.5
-
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
deleted file mode 100644
index f04d3ee..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0085-HID-hid-multitouch-add-support-for-new-Hanvon-panels.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From 4ed2fc990faee86390129e45efc3a3538bbac92b Mon Sep 17 00:00:00 2001
-From: Benjamin Tissoires <benjamin.tissoires at enac.fr>
-Date: Tue, 29 Nov 2011 13:13:12 +0100
-Subject: [PATCH 085/129] HID: hid-multitouch: add support for new Hanvon
- panels
-
-commit 545803651da8dde248eeb8ce3ed1e547e9e4ac0a upstream.
-
-Signed-off-by: Benjamin Tissoires <benjamin.tissoires at enac.fr>
-Acked-by: Henrik Rydberg <rydberg at euromail.se>
-Signed-off-by: Jiri Kosina <jkosina at suse.cz>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/hid/hid-core.c | 1 +
- drivers/hid/hid-ids.h | 3 +++
- drivers/hid/hid-multitouch.c | 5 +++++
- 3 files changed, 9 insertions(+)
-
-diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
-index 9cee7b2..a1cb906 100644
---- a/drivers/hid/hid-core.c
-+++ b/drivers/hid/hid-core.c
-@@ -1425,6 +1425,7 @@ static const struct hid_device_id hid_have_special_driver[] = {
- { HID_USB_DEVICE(USB_VENDOR_ID_GYRATION, USB_DEVICE_ID_GYRATION_REMOTE_2) },
- { HID_USB_DEVICE(USB_VENDOR_ID_GYRATION, USB_DEVICE_ID_GYRATION_REMOTE_3) },
- { HID_USB_DEVICE(USB_VENDOR_ID_HANVON, USB_DEVICE_ID_HANVON_MULTITOUCH) },
-+ { HID_USB_DEVICE(USB_VENDOR_ID_HANVON_ALT, USB_DEVICE_ID_HANVON_ALT_MULTITOUCH) },
- { HID_USB_DEVICE(USB_VENDOR_ID_IDEACOM, USB_DEVICE_ID_IDEACOM_IDC6650) },
- { HID_USB_DEVICE(USB_VENDOR_ID_HOLTEK, USB_DEVICE_ID_HOLTEK_ON_LINE_GRIP) },
- { HID_USB_DEVICE(USB_VENDOR_ID_ILITEK, USB_DEVICE_ID_ILITEK_MULTITOUCH) },
-diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
-index 6ccd7df..56df290 100644
---- a/drivers/hid/hid-ids.h
-+++ b/drivers/hid/hid-ids.h
-@@ -359,6 +359,9 @@
- #define USB_VENDOR_ID_HANVON 0x20b3
- #define USB_DEVICE_ID_HANVON_MULTITOUCH 0x0a18
-
-+#define USB_VENDOR_ID_HANVON_ALT 0x22ed
-+#define USB_DEVICE_ID_HANVON_ALT_MULTITOUCH 0x1010
-+
- #define USB_VENDOR_ID_HAPP 0x078b
- #define USB_DEVICE_ID_UGCI_DRIVING 0x0010
- #define USB_DEVICE_ID_UGCI_FLYING 0x0020
-diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c
-index 6f6b1d9..ea20c8e 100644
---- a/drivers/hid/hid-multitouch.c
-+++ b/drivers/hid/hid-multitouch.c
-@@ -687,6 +687,11 @@ static const struct hid_device_id mt_devices[] = {
- HID_USB_DEVICE(USB_VENDOR_ID_GOODTOUCH,
- USB_DEVICE_ID_GOODTOUCH_000f) },
-
-+ /* Hanvon panels */
-+ { .driver_data = MT_CLS_DUAL_INRANGE_CONTACTID,
-+ HID_USB_DEVICE(USB_VENDOR_ID_HANVON_ALT,
-+ USB_DEVICE_ID_HANVON_ALT_MULTITOUCH) },
-+
- /* Ideacom panel */
- { .driver_data = MT_CLS_SERIAL,
- HID_USB_DEVICE(USB_VENDOR_ID_IDEACOM,
---
-1.7.9.5
-
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
deleted file mode 100644
index 4298a32..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0086-HID-multitouch-add-support-of-Atmel-multitouch-panel.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From e554f29a63f8eae08e42cb59b1bc715fbf91b340 Mon Sep 17 00:00:00 2001
-From: Benjamin Tissoires <benjamin.tissoires at gmail.com>
-Date: Fri, 23 Dec 2011 15:40:59 +0100
-Subject: [PATCH 086/129] HID: multitouch: add support of Atmel multitouch
- panels
-
-commit b105712469d957cf1ab223c1ea72b7ba88edb926 upstream.
-
-Signed-off-by: Benjamin Tissoires <benjamin.tissoires at gmail.com>
-Acked-by: Henrik Rydberg <rydberg at euromail.se>
-Signed-off-by: Jiri Kosina <jkosina at suse.cz>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/hid/Kconfig | 1 +
- drivers/hid/hid-ids.h | 3 +++
- drivers/hid/hid-multitouch.c | 5 +++++
- 3 files changed, 9 insertions(+)
-
-diff --git a/drivers/hid/Kconfig b/drivers/hid/Kconfig
-index 332c22a..36f5df3 100644
---- a/drivers/hid/Kconfig
-+++ b/drivers/hid/Kconfig
-@@ -335,6 +335,7 @@ config HID_MULTITOUCH
- Say Y here if you have one of the following devices:
- - 3M PCT touch screens
- - ActionStar dual touch panels
-+ - Atmel panels
- - Cando dual touch panels
- - Chunghwa panels
- - CVTouch panels
-diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
-index 56df290..bf95a50 100644
---- a/drivers/hid/hid-ids.h
-+++ b/drivers/hid/hid-ids.h
-@@ -145,6 +145,9 @@
- #define USB_DEVICE_ID_ATEN_4PORTKVM 0x2205
- #define USB_DEVICE_ID_ATEN_4PORTKVMC 0x2208
-
-+#define USB_VENDOR_ID_ATMEL 0x03eb
-+#define USB_DEVICE_ID_ATMEL_MULTITOUCH 0x211c
-+
- #define USB_VENDOR_ID_AVERMEDIA 0x07ca
- #define USB_DEVICE_ID_AVER_FM_MR800 0xb800
-
-diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c
-index ea20c8e..7f83024 100644
---- a/drivers/hid/hid-multitouch.c
-+++ b/drivers/hid/hid-multitouch.c
-@@ -615,6 +615,11 @@ static const struct hid_device_id mt_devices[] = {
- HID_USB_DEVICE(USB_VENDOR_ID_ACTIONSTAR,
- USB_DEVICE_ID_ACTIONSTAR_1011) },
-
-+ /* Atmel panels */
-+ { .driver_data = MT_CLS_SERIAL,
-+ HID_USB_DEVICE(USB_VENDOR_ID_ATMEL,
-+ USB_DEVICE_ID_ATMEL_MULTITOUCH) },
-+
- /* Cando panels */
- { .driver_data = MT_CLS_DUAL_INRANGE_CONTACTNUMBER,
- HID_USB_DEVICE(USB_VENDOR_ID_CANDO,
---
-1.7.9.5
-
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
deleted file mode 100644
index f3afca5..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0087-HID-multitouch-add-support-for-3M-32.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From 40fd7506c85fcb799dedb54d4bce3118a56078cc Mon Sep 17 00:00:00 2001
-From: Benjamin Tissoires <benjamin.tissoires at gmail.com>
-Date: Fri, 23 Dec 2011 15:41:00 +0100
-Subject: [PATCH 087/129] HID: multitouch: add support for 3M 32"
-
-commit c4fad877cd0efb51d8180ae2eaa791c99c92051c upstream.
-
-Signed-off-by: Benjamin Tissoires <benjamin.tissoires at gmail.com>
-Acked-by: Henrik Rydberg <rydberg at euromail.se>
-Signed-off-by: Jiri Kosina <jkosina at suse.cz>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/hid/hid-ids.h | 1 +
- drivers/hid/hid-multitouch.c | 3 +++
- 2 files changed, 4 insertions(+)
-
-diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
-index bf95a50..6e53391a 100644
---- a/drivers/hid/hid-ids.h
-+++ b/drivers/hid/hid-ids.h
-@@ -21,6 +21,7 @@
- #define USB_VENDOR_ID_3M 0x0596
- #define USB_DEVICE_ID_3M1968 0x0500
- #define USB_DEVICE_ID_3M2256 0x0502
-+#define USB_DEVICE_ID_3M3266 0x0506
-
- #define USB_VENDOR_ID_A4TECH 0x09da
- #define USB_DEVICE_ID_A4TECH_WCP32PU 0x0006
-diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c
-index 7f83024..4a63dee 100644
---- a/drivers/hid/hid-multitouch.c
-+++ b/drivers/hid/hid-multitouch.c
-@@ -609,6 +609,9 @@ static const struct hid_device_id mt_devices[] = {
- { .driver_data = MT_CLS_3M,
- HID_USB_DEVICE(USB_VENDOR_ID_3M,
- USB_DEVICE_ID_3M2256) },
-+ { .driver_data = MT_CLS_3M,
-+ HID_USB_DEVICE(USB_VENDOR_ID_3M,
-+ USB_DEVICE_ID_3M3266) },
-
- /* ActionStar panels */
- { .driver_data = MT_CLS_DEFAULT,
---
-1.7.9.5
-
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
deleted file mode 100644
index 8d2bfef..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0088-HID-hid-multitouch-add-support-9-new-Xiroku-devices.patch
+++ /dev/null
@@ -1,117 +0,0 @@
-From 7d63e2bd6f004a4c99c40f9768efe4fa3bef6d28 Mon Sep 17 00:00:00 2001
-From: Masatoshi Hoshikawa <hoshikawa at xiroku.com>
-Date: Thu, 5 Jan 2012 11:53:46 +0900
-Subject: [PATCH 088/129] HID: hid-multitouch: add support 9 new Xiroku
- devices
-
-commit 11576c6114c3b6505aea2e0c988bedb856a0e20c upstream.
-
-This patch adds support for the Xiroku Inc. panels (SPX/MPX/CSR/etc.).
-
-Signed-off-by: Masatoshi Hoshikawa <hoshikawa at xiroku.com>
-Signed-off-by: Jiri Kosina <jkosina at suse.cz>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/hid/Kconfig | 1 +
- drivers/hid/hid-core.c | 9 +++++++++
- drivers/hid/hid-ids.h | 11 +++++++++++
- drivers/hid/hid-multitouch.c | 29 +++++++++++++++++++++++++++++
- 4 files changed, 50 insertions(+)
-
-diff --git a/drivers/hid/Kconfig b/drivers/hid/Kconfig
-index 36f5df3..d21f6d0 100644
---- a/drivers/hid/Kconfig
-+++ b/drivers/hid/Kconfig
-@@ -356,6 +356,7 @@ config HID_MULTITOUCH
- - Touch International Panels
- - Unitec Panels
- - XAT optical touch panels
-+ - Xiroku optical touch panels
-
- If unsure, say N.
-
-diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
-index a1cb906..bb656d8 100644
---- a/drivers/hid/hid-core.c
-+++ b/drivers/hid/hid-core.c
-@@ -1552,6 +1552,15 @@ static const struct hid_device_id hid_have_special_driver[] = {
- { HID_USB_DEVICE(USB_VENDOR_ID_WALTOP, USB_DEVICE_ID_WALTOP_MEDIA_TABLET_10_6_INCH) },
- { HID_USB_DEVICE(USB_VENDOR_ID_WALTOP, USB_DEVICE_ID_WALTOP_MEDIA_TABLET_14_1_INCH) },
- { HID_USB_DEVICE(USB_VENDOR_ID_XAT, USB_DEVICE_ID_XAT_CSR) },
-+ { HID_USB_DEVICE(USB_VENDOR_ID_XIROKU, USB_DEVICE_ID_XIROKU_SPX) },
-+ { HID_USB_DEVICE(USB_VENDOR_ID_XIROKU, USB_DEVICE_ID_XIROKU_MPX) },
-+ { HID_USB_DEVICE(USB_VENDOR_ID_XIROKU, USB_DEVICE_ID_XIROKU_CSR) },
-+ { HID_USB_DEVICE(USB_VENDOR_ID_XIROKU, USB_DEVICE_ID_XIROKU_SPX1) },
-+ { HID_USB_DEVICE(USB_VENDOR_ID_XIROKU, USB_DEVICE_ID_XIROKU_MPX1) },
-+ { HID_USB_DEVICE(USB_VENDOR_ID_XIROKU, USB_DEVICE_ID_XIROKU_CSR1) },
-+ { HID_USB_DEVICE(USB_VENDOR_ID_XIROKU, USB_DEVICE_ID_XIROKU_SPX2) },
-+ { HID_USB_DEVICE(USB_VENDOR_ID_XIROKU, USB_DEVICE_ID_XIROKU_MPX2) },
-+ { HID_USB_DEVICE(USB_VENDOR_ID_XIROKU, USB_DEVICE_ID_XIROKU_CSR2) },
- { HID_USB_DEVICE(USB_VENDOR_ID_X_TENSIONS, USB_DEVICE_ID_SPEEDLINK_VAD_CEZANNE) },
- { HID_USB_DEVICE(USB_VENDOR_ID_ZEROPLUS, 0x0005) },
- { HID_USB_DEVICE(USB_VENDOR_ID_ZEROPLUS, 0x0030) },
-diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
-index 6e53391a..00cabb3 100644
---- a/drivers/hid/hid-ids.h
-+++ b/drivers/hid/hid-ids.h
-@@ -717,6 +717,17 @@
- #define USB_VENDOR_ID_XAT 0x2505
- #define USB_DEVICE_ID_XAT_CSR 0x0220
-
-+#define USB_VENDOR_ID_XIROKU 0x1477
-+#define USB_DEVICE_ID_XIROKU_SPX 0x1006
-+#define USB_DEVICE_ID_XIROKU_MPX 0x1007
-+#define USB_DEVICE_ID_XIROKU_CSR 0x100e
-+#define USB_DEVICE_ID_XIROKU_SPX1 0x1021
-+#define USB_DEVICE_ID_XIROKU_CSR1 0x1022
-+#define USB_DEVICE_ID_XIROKU_MPX1 0x1023
-+#define USB_DEVICE_ID_XIROKU_SPX2 0x1024
-+#define USB_DEVICE_ID_XIROKU_CSR2 0x1025
-+#define USB_DEVICE_ID_XIROKU_MPX2 0x1026
-+
- #define USB_VENDOR_ID_YEALINK 0x6993
- #define USB_DEVICE_ID_YEALINK_P1K_P4K_B2K 0xb001
-
-diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c
-index 4a63dee..995fc4c 100644
---- a/drivers/hid/hid-multitouch.c
-+++ b/drivers/hid/hid-multitouch.c
-@@ -780,6 +780,35 @@ static const struct hid_device_id mt_devices[] = {
- HID_USB_DEVICE(USB_VENDOR_ID_XAT,
- USB_DEVICE_ID_XAT_CSR) },
-
-+ /* Xiroku */
-+ { .driver_data = MT_CLS_DEFAULT,
-+ HID_USB_DEVICE(USB_VENDOR_ID_XIROKU,
-+ USB_DEVICE_ID_XIROKU_SPX) },
-+ { .driver_data = MT_CLS_DEFAULT,
-+ HID_USB_DEVICE(USB_VENDOR_ID_XIROKU,
-+ USB_DEVICE_ID_XIROKU_MPX) },
-+ { .driver_data = MT_CLS_DEFAULT,
-+ HID_USB_DEVICE(USB_VENDOR_ID_XIROKU,
-+ USB_DEVICE_ID_XIROKU_CSR) },
-+ { .driver_data = MT_CLS_DEFAULT,
-+ HID_USB_DEVICE(USB_VENDOR_ID_XIROKU,
-+ USB_DEVICE_ID_XIROKU_SPX1) },
-+ { .driver_data = MT_CLS_DEFAULT,
-+ HID_USB_DEVICE(USB_VENDOR_ID_XIROKU,
-+ USB_DEVICE_ID_XIROKU_MPX1) },
-+ { .driver_data = MT_CLS_DEFAULT,
-+ HID_USB_DEVICE(USB_VENDOR_ID_XIROKU,
-+ USB_DEVICE_ID_XIROKU_CSR1) },
-+ { .driver_data = MT_CLS_DEFAULT,
-+ HID_USB_DEVICE(USB_VENDOR_ID_XIROKU,
-+ USB_DEVICE_ID_XIROKU_SPX2) },
-+ { .driver_data = MT_CLS_DEFAULT,
-+ HID_USB_DEVICE(USB_VENDOR_ID_XIROKU,
-+ USB_DEVICE_ID_XIROKU_MPX2) },
-+ { .driver_data = MT_CLS_DEFAULT,
-+ HID_USB_DEVICE(USB_VENDOR_ID_XIROKU,
-+ USB_DEVICE_ID_XIROKU_CSR2) },
-+
- { }
- };
- MODULE_DEVICE_TABLE(hid, mt_devices);
---
-1.7.9.5
-
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
deleted file mode 100644
index 94a3da3..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0089-fix-cputime-overflow-in-uptime_proc_show.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From 36934c4efd11c4f65dd956b2a6649d99ccf5bd86 Mon Sep 17 00:00:00 2001
-From: Martin Schwidefsky <schwidefsky at de.ibm.com>
-Date: Thu, 15 Dec 2011 14:56:10 +0100
-Subject: [PATCH 089/129] fix cputime overflow in uptime_proc_show
-
-commit c3e0ef9a298e028a82ada28101ccd5cf64d209ee upstream.
-
-For 32-bit architectures using standard jiffies the idletime calculation
-in uptime_proc_show will quickly overflow. It takes (2^32 / HZ) seconds
-of idle-time, or e.g. 12.45 days with no load on a quad-core with HZ=1000.
-Switch to 64-bit calculations.
-
-Cc: Michael Abbott <michael.abbott at diamond.ac.uk>
-Signed-off-by: Martin Schwidefsky <schwidefsky at de.ibm.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- fs/proc/uptime.c | 9 +++++++--
- 1 file changed, 7 insertions(+), 2 deletions(-)
-
-diff --git a/fs/proc/uptime.c b/fs/proc/uptime.c
-index 766b1d4..29166ec 100644
---- a/fs/proc/uptime.c
-+++ b/fs/proc/uptime.c
-@@ -11,15 +11,20 @@ static int uptime_proc_show(struct seq_file *m, void *v)
- {
- struct timespec uptime;
- struct timespec idle;
-+ cputime64_t idletime;
-+ u64 nsec;
-+ u32 rem;
- int i;
-- cputime_t idletime = cputime_zero;
-
-+ idletime = 0;
- for_each_possible_cpu(i)
- idletime = cputime64_add(idletime, kstat_cpu(i).cpustat.idle);
-
- do_posix_clock_monotonic_gettime(&uptime);
- monotonic_to_bootbased(&uptime);
-- cputime_to_timespec(idletime, &idle);
-+ nsec = cputime64_to_jiffies64(idletime) * TICK_NSEC;
-+ idle.tv_sec = div_u64_rem(nsec, NSEC_PER_SEC, &rem);
-+ idle.tv_nsec = rem;
- seq_printf(m, "%lu.%02lu %lu.%02lu\n",
- (unsigned long) uptime.tv_sec,
- (uptime.tv_nsec / (NSEC_PER_SEC / 100)),
---
-1.7.9.5
-
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
deleted file mode 100644
index e9a2e70..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0090-block-add-and-use-scsi_blk_cmd_ioctl.patch
+++ /dev/null
@@ -1,166 +0,0 @@
-From 151de2f79ddb7f437ada87d5f204be82db004f9d Mon Sep 17 00:00:00 2001
-From: Paolo Bonzini <pbonzini at redhat.com>
-Date: Thu, 12 Jan 2012 16:01:27 +0100
-Subject: [PATCH 090/129] block: add and use scsi_blk_cmd_ioctl
-
-commit 577ebb374c78314ac4617242f509e2f5e7156649 upstream.
-
-Introduce a wrapper around scsi_cmd_ioctl that takes a block device.
-
-The function will then be enhanced to detect partition block devices
-and, in that case, subject the ioctls to whitelisting.
-
-Cc: linux-scsi at vger.kernel.org
-Cc: Jens Axboe <axboe at kernel.dk>
-Cc: James Bottomley <JBottomley at parallels.com>
-Signed-off-by: Paolo Bonzini <pbonzini at redhat.com>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- block/scsi_ioctl.c | 7 +++++++
- drivers/block/cciss.c | 6 +++---
- drivers/block/ub.c | 3 +--
- drivers/block/virtio_blk.c | 4 ++--
- drivers/cdrom/cdrom.c | 3 +--
- drivers/ide/ide-floppy_ioctl.c | 3 +--
- drivers/scsi/sd.c | 2 +-
- include/linux/blkdev.h | 2 ++
- 8 files changed, 18 insertions(+), 12 deletions(-)
-
-diff --git a/block/scsi_ioctl.c b/block/scsi_ioctl.c
-index fbdf0d8..a2c11f3 100644
---- a/block/scsi_ioctl.c
-+++ b/block/scsi_ioctl.c
-@@ -690,6 +690,13 @@ int scsi_cmd_ioctl(struct request_queue *q, struct gendisk *bd_disk, fmode_t mod
- }
- EXPORT_SYMBOL(scsi_cmd_ioctl);
-
-+int scsi_cmd_blk_ioctl(struct block_device *bd, fmode_t mode,
-+ unsigned int cmd, void __user *arg)
-+{
-+ return scsi_cmd_ioctl(bd->bd_disk->queue, bd->bd_disk, mode, cmd, arg);
-+}
-+EXPORT_SYMBOL(scsi_cmd_blk_ioctl);
-+
- static int __init blk_scsi_ioctl_init(void)
- {
- blk_set_cmd_filter_defaults(&blk_default_cmd_filter);
-diff --git a/drivers/block/cciss.c b/drivers/block/cciss.c
-index 587cce5..b0f553b 100644
---- a/drivers/block/cciss.c
-+++ b/drivers/block/cciss.c
-@@ -1735,7 +1735,7 @@ static int cciss_ioctl(struct block_device *bdev, fmode_t mode,
- case CCISS_BIG_PASSTHRU:
- return cciss_bigpassthru(h, argp);
-
-- /* scsi_cmd_ioctl handles these, below, though some are not */
-+ /* scsi_cmd_blk_ioctl handles these, below, though some are not */
- /* very meaningful for cciss. SG_IO is the main one people want. */
-
- case SG_GET_VERSION_NUM:
-@@ -1746,9 +1746,9 @@ static int cciss_ioctl(struct block_device *bdev, fmode_t mode,
- case SG_EMULATED_HOST:
- case SG_IO:
- case SCSI_IOCTL_SEND_COMMAND:
-- return scsi_cmd_ioctl(disk->queue, disk, mode, cmd, argp);
-+ return scsi_cmd_blk_ioctl(bdev, mode, cmd, argp);
-
-- /* scsi_cmd_ioctl would normally handle these, below, but */
-+ /* scsi_cmd_blk_ioctl would normally handle these, below, but */
- /* they aren't a good fit for cciss, as CD-ROMs are */
- /* not supported, and we don't have any bus/target/lun */
- /* which we present to the kernel. */
-diff --git a/drivers/block/ub.c b/drivers/block/ub.c
-index 0e376d4..7333b9e 100644
---- a/drivers/block/ub.c
-+++ b/drivers/block/ub.c
-@@ -1744,12 +1744,11 @@ static int ub_bd_release(struct gendisk *disk, fmode_t mode)
- static int ub_bd_ioctl(struct block_device *bdev, fmode_t mode,
- unsigned int cmd, unsigned long arg)
- {
-- struct gendisk *disk = bdev->bd_disk;
- void __user *usermem = (void __user *) arg;
- int ret;
-
- mutex_lock(&ub_mutex);
-- ret = scsi_cmd_ioctl(disk->queue, disk, mode, cmd, usermem);
-+ ret = scsi_cmd_blk_ioctl(bdev, mode, cmd, usermem);
- mutex_unlock(&ub_mutex);
-
- return ret;
-diff --git a/drivers/block/virtio_blk.c b/drivers/block/virtio_blk.c
-index 4d0b70a..e46f2f7 100644
---- a/drivers/block/virtio_blk.c
-+++ b/drivers/block/virtio_blk.c
-@@ -243,8 +243,8 @@ static int virtblk_ioctl(struct block_device *bdev, fmode_t mode,
- if (!virtio_has_feature(vblk->vdev, VIRTIO_BLK_F_SCSI))
- return -ENOTTY;
-
-- return scsi_cmd_ioctl(disk->queue, disk, mode, cmd,
-- (void __user *)data);
-+ return scsi_cmd_blk_ioctl(bdev, mode, cmd,
-+ (void __user *)data);
- }
-
- /* We provide getgeo only to please some old bootloader/partitioning tools */
-diff --git a/drivers/cdrom/cdrom.c b/drivers/cdrom/cdrom.c
-index f997c27..cedb231 100644
---- a/drivers/cdrom/cdrom.c
-+++ b/drivers/cdrom/cdrom.c
-@@ -2747,12 +2747,11 @@ int cdrom_ioctl(struct cdrom_device_info *cdi, struct block_device *bdev,
- {
- void __user *argp = (void __user *)arg;
- int ret;
-- struct gendisk *disk = bdev->bd_disk;
-
- /*
- * Try the generic SCSI command ioctl's first.
- */
-- ret = scsi_cmd_ioctl(disk->queue, disk, mode, cmd, argp);
-+ ret = scsi_cmd_blk_ioctl(bdev, mode, cmd, argp);
- if (ret != -ENOTTY)
- return ret;
-
-diff --git a/drivers/ide/ide-floppy_ioctl.c b/drivers/ide/ide-floppy_ioctl.c
-index d267b7a..a22ca84 100644
---- a/drivers/ide/ide-floppy_ioctl.c
-+++ b/drivers/ide/ide-floppy_ioctl.c
-@@ -292,8 +292,7 @@ int ide_floppy_ioctl(ide_drive_t *drive, struct block_device *bdev,
- * and CDROM_SEND_PACKET (legacy) ioctls
- */
- if (cmd != CDROM_SEND_PACKET && cmd != SCSI_IOCTL_SEND_COMMAND)
-- err = scsi_cmd_ioctl(bdev->bd_disk->queue, bdev->bd_disk,
-- mode, cmd, argp);
-+ err = scsi_cmd_blk_ioctl(bdev, mode, cmd, argp);
-
- if (err == -ENOTTY)
- err = generic_ide_ioctl(drive, bdev, cmd, arg);
-diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
-index fa3a591..ffa1c79 100644
---- a/drivers/scsi/sd.c
-+++ b/drivers/scsi/sd.c
-@@ -1096,7 +1096,7 @@ static int sd_ioctl(struct block_device *bdev, fmode_t mode,
- error = scsi_ioctl(sdp, cmd, p);
- break;
- default:
-- error = scsi_cmd_ioctl(disk->queue, disk, mode, cmd, p);
-+ error = scsi_cmd_blk_ioctl(bdev, mode, cmd, p);
- if (error != -ENOTTY)
- break;
- error = scsi_ioctl(sdp, cmd, p);
-diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
-index 94acd81..ca7b869 100644
---- a/include/linux/blkdev.h
-+++ b/include/linux/blkdev.h
-@@ -675,6 +675,8 @@ extern int blk_insert_cloned_request(struct request_queue *q,
- struct request *rq);
- extern void blk_delay_queue(struct request_queue *, unsigned long);
- extern void blk_recount_segments(struct request_queue *, struct bio *);
-+extern int scsi_cmd_blk_ioctl(struct block_device *, fmode_t,
-+ unsigned int, void __user *);
- extern int scsi_cmd_ioctl(struct request_queue *, struct gendisk *, fmode_t,
- unsigned int, void __user *);
- extern int sg_scsi_ioctl(struct request_queue *, struct gendisk *, fmode_t,
---
-1.7.9.5
-
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
deleted file mode 100644
index 1fa4e50..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0091-block-fail-SCSI-passthrough-ioctls-on-partition-devi.patch
+++ /dev/null
@@ -1,166 +0,0 @@
-From 8dbedb00985bf3ed9848b179a45bb399a733d311 Mon Sep 17 00:00:00 2001
-From: Paolo Bonzini <pbonzini at redhat.com>
-Date: Thu, 12 Jan 2012 16:01:28 +0100
-Subject: [PATCH 091/129] block: fail SCSI passthrough ioctls on partition
- devices
-
-commit 0bfc96cb77224736dfa35c3c555d37b3646ef35e upstream.
-
-[ Changes with respect to 3.3: return -ENOTTY from scsi_verify_blk_ioctl
- and -ENOIOCTLCMD from sd_compat_ioctl. ]
-
-Linux allows executing the SG_IO ioctl on a partition or LVM volume, and
-will pass the command to the underlying block device. This is
-well-known, but it is also a large security problem when (via Unix
-permissions, ACLs, SELinux or a combination thereof) a program or user
-needs to be granted access only to part of the disk.
-
-This patch lets partitions forward a small set of harmless ioctls;
-others are logged with printk so that we can see which ioctls are
-actually sent. In my tests only CDROM_GET_CAPABILITY actually occurred.
-Of course it was being sent to a (partition on a) hard disk, so it would
-have failed with ENOTTY and the patch isn't changing anything in
-practice. Still, I'm treating it specially to avoid spamming the logs.
-
-In principle, this restriction should include programs running with
-CAP_SYS_RAWIO. If for example I let a program access /dev/sda2 and
-/dev/sdb, it still should not be able to read/write outside the
-boundaries of /dev/sda2 independent of the capabilities. However, for
-now programs with CAP_SYS_RAWIO will still be allowed to send the
-ioctls. Their actions will still be logged.
-
-This patch does not affect the non-libata IDE driver. That driver
-however already tests for bd != bd->bd_contains before issuing some
-ioctl; it could be restricted further to forbid these ioctls even for
-programs running with CAP_SYS_ADMIN/CAP_SYS_RAWIO.
-
-Cc: linux-scsi at vger.kernel.org
-Cc: Jens Axboe <axboe at kernel.dk>
-Cc: James Bottomley <JBottomley at parallels.com>
-Signed-off-by: Paolo Bonzini <pbonzini at redhat.com>
-[ Make it also print the command name when warning - Linus ]
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- block/scsi_ioctl.c | 45 +++++++++++++++++++++++++++++++++++++++++++++
- drivers/scsi/sd.c | 11 +++++++++--
- include/linux/blkdev.h | 1 +
- 3 files changed, 55 insertions(+), 2 deletions(-)
-
-diff --git a/block/scsi_ioctl.c b/block/scsi_ioctl.c
-index a2c11f3..688be8a 100644
---- a/block/scsi_ioctl.c
-+++ b/block/scsi_ioctl.c
-@@ -24,6 +24,7 @@
- #include <linux/capability.h>
- #include <linux/completion.h>
- #include <linux/cdrom.h>
-+#include <linux/ratelimit.h>
- #include <linux/slab.h>
- #include <linux/times.h>
- #include <asm/uaccess.h>
-@@ -690,9 +691,53 @@ int scsi_cmd_ioctl(struct request_queue *q, struct gendisk *bd_disk, fmode_t mod
- }
- EXPORT_SYMBOL(scsi_cmd_ioctl);
-
-+int scsi_verify_blk_ioctl(struct block_device *bd, unsigned int cmd)
-+{
-+ if (bd && bd == bd->bd_contains)
-+ return 0;
-+
-+ /* Actually none of these is particularly useful on a partition,
-+ * but they are safe.
-+ */
-+ switch (cmd) {
-+ case SCSI_IOCTL_GET_IDLUN:
-+ case SCSI_IOCTL_GET_BUS_NUMBER:
-+ case SCSI_IOCTL_GET_PCI:
-+ case SCSI_IOCTL_PROBE_HOST:
-+ case SG_GET_VERSION_NUM:
-+ case SG_SET_TIMEOUT:
-+ case SG_GET_TIMEOUT:
-+ case SG_GET_RESERVED_SIZE:
-+ case SG_SET_RESERVED_SIZE:
-+ case SG_EMULATED_HOST:
-+ return 0;
-+ case CDROM_GET_CAPABILITY:
-+ /* Keep this until we remove the printk below. udev sends it
-+ * and we do not want to spam dmesg about it. CD-ROMs do
-+ * not have partitions, so we get here only for disks.
-+ */
-+ return -ENOTTY;
-+ default:
-+ break;
-+ }
-+
-+ /* In particular, rule out all resets and host-specific ioctls. */
-+ printk_ratelimited(KERN_WARNING
-+ "%s: sending ioctl %x to a partition!\n", current->comm, cmd);
-+
-+ return capable(CAP_SYS_RAWIO) ? 0 : -ENOTTY;
-+}
-+EXPORT_SYMBOL(scsi_verify_blk_ioctl);
-+
- int scsi_cmd_blk_ioctl(struct block_device *bd, fmode_t mode,
- unsigned int cmd, void __user *arg)
- {
-+ int ret;
-+
-+ ret = scsi_verify_blk_ioctl(bd, cmd);
-+ if (ret < 0)
-+ return ret;
-+
- return scsi_cmd_ioctl(bd->bd_disk->queue, bd->bd_disk, mode, cmd, arg);
- }
- EXPORT_SYMBOL(scsi_cmd_blk_ioctl);
-diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
-index ffa1c79..4b63c73 100644
---- a/drivers/scsi/sd.c
-+++ b/drivers/scsi/sd.c
-@@ -1074,6 +1074,10 @@ static int sd_ioctl(struct block_device *bdev, fmode_t mode,
- SCSI_LOG_IOCTL(1, sd_printk(KERN_INFO, sdkp, "sd_ioctl: disk=%s, "
- "cmd=0x%x\n", disk->disk_name, cmd));
-
-+ error = scsi_verify_blk_ioctl(bdev, cmd);
-+ if (error < 0)
-+ return error;
-+
- /*
- * If we are in the middle of error recovery, don't let anyone
- * else try and use this device. Also, if error recovery fails, it
-@@ -1266,6 +1270,11 @@ static int sd_compat_ioctl(struct block_device *bdev, fmode_t mode,
- unsigned int cmd, unsigned long arg)
- {
- struct scsi_device *sdev = scsi_disk(bdev->bd_disk)->device;
-+ int ret;
-+
-+ ret = scsi_verify_blk_ioctl(bdev, cmd);
-+ if (ret < 0)
-+ return -ENOIOCTLCMD;
-
- /*
- * If we are in the middle of error recovery, don't let anyone
-@@ -1277,8 +1286,6 @@ static int sd_compat_ioctl(struct block_device *bdev, fmode_t mode,
- return -ENODEV;
-
- if (sdev->host->hostt->compat_ioctl) {
-- int ret;
--
- ret = sdev->host->hostt->compat_ioctl(sdev, cmd, (void __user *)arg);
-
- return ret;
-diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
-index ca7b869..0ed1eb0 100644
---- a/include/linux/blkdev.h
-+++ b/include/linux/blkdev.h
-@@ -675,6 +675,7 @@ extern int blk_insert_cloned_request(struct request_queue *q,
- struct request *rq);
- extern void blk_delay_queue(struct request_queue *, unsigned long);
- extern void blk_recount_segments(struct request_queue *, struct bio *);
-+extern int scsi_verify_blk_ioctl(struct block_device *, unsigned int);
- extern int scsi_cmd_blk_ioctl(struct block_device *, fmode_t,
- unsigned int, void __user *);
- extern int scsi_cmd_ioctl(struct request_queue *, struct gendisk *, fmode_t,
---
-1.7.9.5
-
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
deleted file mode 100644
index 044086f..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0092-dm-do-not-forward-ioctls-from-logical-volumes-to-the.patch
+++ /dev/null
@@ -1,90 +0,0 @@
-From 3d35ea93b3f19f86a464814e7b59464ec3832e9c Mon Sep 17 00:00:00 2001
-From: Paolo Bonzini <pbonzini at redhat.com>
-Date: Thu, 12 Jan 2012 16:01:29 +0100
-Subject: [PATCH 092/129] dm: do not forward ioctls from logical volumes to
- the underlying device
-
-commit ec8013beddd717d1740cfefb1a9b900deef85462 upstream.
-
-A logical volume can map to just part of underlying physical volume.
-In this case, it must be treated like a partition.
-
-Based on a patch from Alasdair G Kergon.
-
-Cc: Alasdair G Kergon <agk at redhat.com>
-Cc: dm-devel at redhat.com
-Signed-off-by: Paolo Bonzini <pbonzini at redhat.com>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/md/dm-flakey.c | 11 ++++++++++-
- drivers/md/dm-linear.c | 12 +++++++++++-
- drivers/md/dm-mpath.c | 6 ++++++
- 3 files changed, 27 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/md/dm-flakey.c b/drivers/md/dm-flakey.c
-index f84c080..9fb18c1 100644
---- a/drivers/md/dm-flakey.c
-+++ b/drivers/md/dm-flakey.c
-@@ -368,8 +368,17 @@ static int flakey_status(struct dm_target *ti, status_type_t type,
- static int flakey_ioctl(struct dm_target *ti, unsigned int cmd, unsigned long arg)
- {
- struct flakey_c *fc = ti->private;
-+ struct dm_dev *dev = fc->dev;
-+ int r = 0;
-
-- return __blkdev_driver_ioctl(fc->dev->bdev, fc->dev->mode, cmd, arg);
-+ /*
-+ * Only pass ioctls through if the device sizes match exactly.
-+ */
-+ if (fc->start ||
-+ ti->len != i_size_read(dev->bdev->bd_inode) >> SECTOR_SHIFT)
-+ r = scsi_verify_blk_ioctl(NULL, cmd);
-+
-+ return r ? : __blkdev_driver_ioctl(dev->bdev, dev->mode, cmd, arg);
- }
-
- static int flakey_merge(struct dm_target *ti, struct bvec_merge_data *bvm,
-diff --git a/drivers/md/dm-linear.c b/drivers/md/dm-linear.c
-index 3921e3b..9728839 100644
---- a/drivers/md/dm-linear.c
-+++ b/drivers/md/dm-linear.c
-@@ -116,7 +116,17 @@ static int linear_ioctl(struct dm_target *ti, unsigned int cmd,
- unsigned long arg)
- {
- struct linear_c *lc = (struct linear_c *) ti->private;
-- return __blkdev_driver_ioctl(lc->dev->bdev, lc->dev->mode, cmd, arg);
-+ struct dm_dev *dev = lc->dev;
-+ int r = 0;
-+
-+ /*
-+ * Only pass ioctls through if the device sizes match exactly.
-+ */
-+ if (lc->start ||
-+ ti->len != i_size_read(dev->bdev->bd_inode) >> SECTOR_SHIFT)
-+ r = scsi_verify_blk_ioctl(NULL, cmd);
-+
-+ return r ? : __blkdev_driver_ioctl(dev->bdev, dev->mode, cmd, arg);
- }
-
- static int linear_merge(struct dm_target *ti, struct bvec_merge_data *bvm,
-diff --git a/drivers/md/dm-mpath.c b/drivers/md/dm-mpath.c
-index 5e0090e..801d92d 100644
---- a/drivers/md/dm-mpath.c
-+++ b/drivers/md/dm-mpath.c
-@@ -1520,6 +1520,12 @@ static int multipath_ioctl(struct dm_target *ti, unsigned int cmd,
-
- spin_unlock_irqrestore(&m->lock, flags);
-
-+ /*
-+ * Only pass ioctls through if the device sizes match exactly.
-+ */
-+ if (!r && ti->len != i_size_read(bdev->bd_inode) >> SECTOR_SHIFT)
-+ r = scsi_verify_blk_ioctl(NULL, cmd);
-+
- return r ? : __blkdev_driver_ioctl(bdev, mode, cmd, arg);
- }
-
---
-1.7.9.5
-
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
deleted file mode 100644
index 5c2c566..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0093-proc-clean-up-and-fix-proc-pid-mem-handling.patch
+++ /dev/null
@@ -1,271 +0,0 @@
-From b1eff256d4110a894a3a70a224d3581136645ada Mon Sep 17 00:00:00 2001
-From: Linus Torvalds <torvalds at linux-foundation.org>
-Date: Tue, 17 Jan 2012 15:21:19 -0800
-Subject: [PATCH 093/129] proc: clean up and fix /proc/<pid>/mem handling
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit e268337dfe26dfc7efd422a804dbb27977a3cccc upstream.
-
-Jüri Aedla reported that the /proc/<pid>/mem handling really isn't very
-robust, and it also doesn't match the permission checking of any of the
-other related files.
-
-This changes it to do the permission checks at open time, and instead of
-tracking the process, it tracks the VM at the time of the open. That
-simplifies the code a lot, but does mean that if you hold the file
-descriptor open over an execve(), you'll continue to read from the _old_
-VM.
-
-That is different from our previous behavior, but much simpler. If
-somebody actually finds a load where this matters, we'll need to revert
-this commit.
-
-I suspect that nobody will ever notice - because the process mapping
-addresses will also have changed as part of the execve. So you cannot
-actually usefully access the fd across a VM change simply because all
-the offsets for IO would have changed too.
-
-Reported-by: Jüri Aedla <asd at ut.ee>
-Cc: Al Viro <viro at zeniv.linux.org.uk>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- fs/proc/base.c | 145 +++++++++++++++-----------------------------------------
- 1 file changed, 39 insertions(+), 106 deletions(-)
-
-diff --git a/fs/proc/base.c b/fs/proc/base.c
-index 851ba3d..1fc1dca 100644
---- a/fs/proc/base.c
-+++ b/fs/proc/base.c
-@@ -194,65 +194,7 @@ static int proc_root_link(struct inode *inode, struct path *path)
- return result;
- }
-
--static struct mm_struct *__check_mem_permission(struct task_struct *task)
--{
-- struct mm_struct *mm;
--
-- mm = get_task_mm(task);
-- if (!mm)
-- return ERR_PTR(-EINVAL);
--
-- /*
-- * A task can always look at itself, in case it chooses
-- * to use system calls instead of load instructions.
-- */
-- if (task == current)
-- return mm;
--
-- /*
-- * If current is actively ptrace'ing, and would also be
-- * permitted to freshly attach with ptrace now, permit it.
-- */
-- if (task_is_stopped_or_traced(task)) {
-- int match;
-- rcu_read_lock();
-- match = (ptrace_parent(task) == current);
-- rcu_read_unlock();
-- if (match && ptrace_may_access(task, PTRACE_MODE_ATTACH))
-- return mm;
-- }
--
-- /*
-- * No one else is allowed.
-- */
-- mmput(mm);
-- return ERR_PTR(-EPERM);
--}
--
--/*
-- * If current may access user memory in @task return a reference to the
-- * corresponding mm, otherwise ERR_PTR.
-- */
--static struct mm_struct *check_mem_permission(struct task_struct *task)
--{
-- struct mm_struct *mm;
-- int err;
--
-- /*
-- * Avoid racing if task exec's as we might get a new mm but validate
-- * against old credentials.
-- */
-- err = mutex_lock_killable(&task->signal->cred_guard_mutex);
-- if (err)
-- return ERR_PTR(err);
--
-- mm = __check_mem_permission(task);
-- mutex_unlock(&task->signal->cred_guard_mutex);
--
-- return mm;
--}
--
--struct mm_struct *mm_for_maps(struct task_struct *task)
-+static struct mm_struct *mm_access(struct task_struct *task, unsigned int mode)
- {
- struct mm_struct *mm;
- int err;
-@@ -263,7 +205,7 @@ struct mm_struct *mm_for_maps(struct task_struct *task)
-
- mm = get_task_mm(task);
- if (mm && mm != current->mm &&
-- !ptrace_may_access(task, PTRACE_MODE_READ)) {
-+ !ptrace_may_access(task, mode)) {
- mmput(mm);
- mm = ERR_PTR(-EACCES);
- }
-@@ -272,6 +214,11 @@ struct mm_struct *mm_for_maps(struct task_struct *task)
- return mm;
- }
-
-+struct mm_struct *mm_for_maps(struct task_struct *task)
-+{
-+ return mm_access(task, PTRACE_MODE_READ);
-+}
-+
- static int proc_pid_cmdline(struct task_struct *task, char * buffer)
- {
- int res = 0;
-@@ -816,38 +763,39 @@ static const struct file_operations proc_single_file_operations = {
-
- static int mem_open(struct inode* inode, struct file* file)
- {
-- file->private_data = (void*)((long)current->self_exec_id);
-+ struct task_struct *task = get_proc_task(file->f_path.dentry->d_inode);
-+ struct mm_struct *mm;
-+
-+ if (!task)
-+ return -ESRCH;
-+
-+ mm = mm_access(task, PTRACE_MODE_ATTACH);
-+ put_task_struct(task);
-+
-+ if (IS_ERR(mm))
-+ return PTR_ERR(mm);
-+
- /* OK to pass negative loff_t, we can catch out-of-range */
- file->f_mode |= FMODE_UNSIGNED_OFFSET;
-+ file->private_data = mm;
-+
- return 0;
- }
-
- static ssize_t mem_read(struct file * file, char __user * buf,
- size_t count, loff_t *ppos)
- {
-- struct task_struct *task = get_proc_task(file->f_path.dentry->d_inode);
-+ int ret;
- char *page;
- unsigned long src = *ppos;
-- int ret = -ESRCH;
-- struct mm_struct *mm;
-+ struct mm_struct *mm = file->private_data;
-
-- if (!task)
-- goto out_no_task;
-+ if (!mm)
-+ return 0;
-
-- ret = -ENOMEM;
- page = (char *)__get_free_page(GFP_TEMPORARY);
- if (!page)
-- goto out;
--
-- mm = check_mem_permission(task);
-- ret = PTR_ERR(mm);
-- if (IS_ERR(mm))
-- goto out_free;
--
-- ret = -EIO;
--
-- if (file->private_data != (void*)((long)current->self_exec_id))
-- goto out_put;
-+ return -ENOMEM;
-
- ret = 0;
-
-@@ -874,13 +822,7 @@ static ssize_t mem_read(struct file * file, char __user * buf,
- }
- *ppos = src;
-
--out_put:
-- mmput(mm);
--out_free:
- free_page((unsigned long) page);
--out:
-- put_task_struct(task);
--out_no_task:
- return ret;
- }
-
-@@ -889,27 +831,15 @@ static ssize_t mem_write(struct file * file, const char __user *buf,
- {
- int copied;
- char *page;
-- struct task_struct *task = get_proc_task(file->f_path.dentry->d_inode);
- unsigned long dst = *ppos;
-- struct mm_struct *mm;
-+ struct mm_struct *mm = file->private_data;
-
-- copied = -ESRCH;
-- if (!task)
-- goto out_no_task;
-+ if (!mm)
-+ return 0;
-
-- copied = -ENOMEM;
- page = (char *)__get_free_page(GFP_TEMPORARY);
- if (!page)
-- goto out_task;
--
-- mm = check_mem_permission(task);
-- copied = PTR_ERR(mm);
-- if (IS_ERR(mm))
-- goto out_free;
--
-- copied = -EIO;
-- if (file->private_data != (void *)((long)current->self_exec_id))
-- goto out_mm;
-+ return -ENOMEM;
-
- copied = 0;
- while (count > 0) {
-@@ -933,13 +863,7 @@ static ssize_t mem_write(struct file * file, const char __user *buf,
- }
- *ppos = dst;
-
--out_mm:
-- mmput(mm);
--out_free:
- free_page((unsigned long) page);
--out_task:
-- put_task_struct(task);
--out_no_task:
- return copied;
- }
-
-@@ -959,11 +883,20 @@ loff_t mem_lseek(struct file *file, loff_t offset, int orig)
- return file->f_pos;
- }
-
-+static int mem_release(struct inode *inode, struct file *file)
-+{
-+ struct mm_struct *mm = file->private_data;
-+
-+ mmput(mm);
-+ return 0;
-+}
-+
- static const struct file_operations proc_mem_operations = {
- .llseek = mem_lseek,
- .read = mem_read,
- .write = mem_write,
- .open = mem_open,
-+ .release = mem_release,
- };
-
- static ssize_t environ_read(struct file *file, char __user *buf,
---
-1.7.9.5
-
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
deleted file mode 100644
index 92722cf..0000000
--- 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
+++ /dev/null
@@ -1,35 +0,0 @@
-From a8cd5ec584f74044ccca71a50312fac4e69f4d64 Mon Sep 17 00:00:00 2001
-From: David Henningsson <david.henningsson at canonical.com>
-Date: Thu, 12 Jan 2012 16:31:14 +0100
-Subject: [PATCH 094/129] ALSA: HDA: Use LPIB position fix for Macbook Pro 7,1
-
-commit b01de4fb40137fbda7530550ff0cd37171dafb0c upstream.
-
-Several users have reported "choppy" audio under the 3.2 kernel,
-and that changing position_fix to 1 has resolved their problem.
-The chip is an nVidia Corporation MCP89 High Definition Audio,
-[10de:0d94] (rev a2).
-
-BugLink: https://bugs.launchpad.net/bugs/909419
-Signed-off-by: David Henningsson <david.henningsson at canonical.com>
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- sound/pci/hda/hda_intel.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
-index c2f79e6..5b2b75b 100644
---- a/sound/pci/hda/hda_intel.c
-+++ b/sound/pci/hda/hda_intel.c
-@@ -2509,6 +2509,7 @@ static struct snd_pci_quirk position_fix_list[] __devinitdata = {
- SND_PCI_QUIRK(0x1043, 0x81e7, "ASUS M2V", POS_FIX_LPIB),
- SND_PCI_QUIRK(0x1043, 0x83ce, "ASUS 1101HA", POS_FIX_LPIB),
- SND_PCI_QUIRK(0x104d, 0x9069, "Sony VPCS11V9E", POS_FIX_LPIB),
-+ SND_PCI_QUIRK(0x10de, 0xcb89, "Macbook Pro 7,1", POS_FIX_LPIB),
- SND_PCI_QUIRK(0x1297, 0x3166, "Shuttle", POS_FIX_LPIB),
- SND_PCI_QUIRK(0x1458, 0xa022, "ga-ma770-ud3", POS_FIX_LPIB),
- SND_PCI_QUIRK(0x1462, 0x1002, "MSI Wind U115", POS_FIX_LPIB),
---
-1.7.9.5
-
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
deleted file mode 100644
index 5e1651f..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0095-ALSA-virtuoso-Xonar-DS-fix-polarity-of-front-output.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 142a4939e76aa02d8e2d8338a63dabf59bc83f1b Mon Sep 17 00:00:00 2001
-From: Clemens Ladisch <clemens at ladisch.de>
-Date: Sat, 14 Jan 2012 16:42:24 +0100
-Subject: [PATCH 095/129] ALSA: virtuoso: Xonar DS: fix polarity of front
- output
-
-commit f0e48b6bd4e407459715240cd241ddb6b89bdf81 upstream.
-
-The two DACs for the front output and the surround/center/LFE/back
-outputs are wired up out of phase, so when channels are duplicated,
-their sound can cancel out each other and result in a weaker bass
-response. To fix this, reverse the polarity of the neutron flow to
-the front output.
-
-Reported-any-tested-by: Daniel Hill <daniel at enemyplanet.geek.nz>
-Signed-off-by: Clemens Ladisch <clemens at ladisch.de>
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- sound/pci/oxygen/xonar_wm87x6.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/sound/pci/oxygen/xonar_wm87x6.c b/sound/pci/oxygen/xonar_wm87x6.c
-index 42d1ab1..915546a 100644
---- a/sound/pci/oxygen/xonar_wm87x6.c
-+++ b/sound/pci/oxygen/xonar_wm87x6.c
-@@ -177,6 +177,7 @@ static void wm8776_registers_init(struct oxygen *chip)
- struct xonar_wm87x6 *data = chip->model_data;
-
- wm8776_write(chip, WM8776_RESET, 0);
-+ wm8776_write(chip, WM8776_PHASESWAP, WM8776_PH_MASK);
- wm8776_write(chip, WM8776_DACCTRL1, WM8776_DZCEN |
- WM8776_PL_LEFT_LEFT | WM8776_PL_RIGHT_RIGHT);
- wm8776_write(chip, WM8776_DACMUTE, chip->dac_mute ? WM8776_DMUTE : 0);
---
-1.7.9.5
-
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
deleted file mode 100644
index 6bad4a4..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0096-ALSA-HDA-Fix-internal-microphone-on-Dell-Studio-16-X.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From c46905cc61a1b5ff0500d15d79ba8110283e6c58 Mon Sep 17 00:00:00 2001
-From: David Henningsson <david.henningsson at canonical.com>
-Date: Mon, 16 Jan 2012 10:52:20 +0100
-Subject: [PATCH 096/129] ALSA: HDA: Fix internal microphone on Dell Studio 16
- XPS 1645
-
-commit ffe535edb9a9c5b4d5fe03dfa3d89a1495580f1b upstream.
-
-More than one user reports that changing the model from "both" to
-"dmic" makes their Internal Mic work.
-
-Tested-by: Martin Ling <martin-launchpad at earth.li>
-BugLink: https://bugs.launchpad.net/bugs/795823
-Signed-off-by: David Henningsson <david.henningsson at canonical.com>
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- sound/pci/hda/patch_sigmatel.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c
-index a87b260..f3c73a9 100644
---- a/sound/pci/hda/patch_sigmatel.c
-+++ b/sound/pci/hda/patch_sigmatel.c
-@@ -1631,7 +1631,7 @@ static const struct snd_pci_quirk stac92hd73xx_cfg_tbl[] = {
- SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x02bd,
- "Dell Studio 1557", STAC_DELL_M6_DMIC),
- SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x02fe,
-- "Dell Studio XPS 1645", STAC_DELL_M6_BOTH),
-+ "Dell Studio XPS 1645", STAC_DELL_M6_DMIC),
- SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0413,
- "Dell Studio 1558", STAC_DELL_M6_DMIC),
- {} /* terminator */
---
-1.7.9.5
-
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
deleted file mode 100644
index 3393f76..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0097-TOMOYO-Accept-000-as-a-valid-character.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From df8b89ac669c66d219a762da1ba79151acce2bf1 Mon Sep 17 00:00:00 2001
-From: Tetsuo Handa <from-tomoyo-users-en at I-love.SAKURA.ne.jp>
-Date: Sun, 15 Jan 2012 11:05:59 +0900
-Subject: [PATCH 097/129] TOMOYO: Accept \000 as a valid character.
-
-commit 25add8cf99c9ec8b8dc0acd8b9241e963fc0d29c upstream.
-
-TOMOYO 2.5 in Linux 3.2 and later handles Unix domain socket's address.
-Thus, tomoyo_correct_word2() needs to accept \000 as a valid character, or
-TOMOYO 2.5 cannot handle Unix domain's abstract socket address.
-
-Reported-by: Steven Allen <steven at stebalien.com>
-Signed-off-by: Tetsuo Handa <penguin-kernel at I-love.SAKURA.ne.jp>
-Signed-off-by: James Morris <jmorris at namei.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- security/tomoyo/util.c | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/security/tomoyo/util.c b/security/tomoyo/util.c
-index 4a9b4b2..867558c 100644
---- a/security/tomoyo/util.c
-+++ b/security/tomoyo/util.c
-@@ -492,13 +492,13 @@ static bool tomoyo_correct_word2(const char *string, size_t len)
- if (d < '0' || d > '7' || e < '0' || e > '7')
- break;
- c = tomoyo_make_byte(c, d, e);
-- if (tomoyo_invalid(c))
-- continue; /* pattern is not \000 */
-+ if (c <= ' ' || c >= 127)
-+ continue;
- }
- goto out;
- } else if (in_repetition && c == '/') {
- goto out;
-- } else if (tomoyo_invalid(c)) {
-+ } else if (c <= ' ' || c >= 127) {
- goto out;
- }
- }
---
-1.7.9.5
-
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
deleted file mode 100644
index 410dc4f..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0098-intel-idle-Make-idle-driver-more-robust.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From 0e193a44b182c4d14fd4ec0eda63e1cba9e4a0a7 Mon Sep 17 00:00:00 2001
-From: Thomas Renninger <trenn at suse.de>
-Date: Sun, 4 Dec 2011 22:17:29 +0100
-Subject: [PATCH 098/129] intel idle: Make idle driver more robust
-
-commit 5c2a9f06a9cd7194f884cdc88144866235dec07d upstream.
-
-kvm -cpu host passes the original cpuid info to the guest.
-
-Latest kvm version seem to return true for mwait_leaf cpuid
-function on recent Intel CPUs. But it does not return mwait
-C-states (mwait_substates), instead zero is returned.
-
-While real CPUs seem to always return non-zero values, the intel
-idle driver should not get active in kvm (mwait_substates == 0)
-case and bail out.
-Otherwise a Null pointer exception will happen later when the
-cpuidle subsystem tries to get active:
-[0.984807] BUG: unable to handle kernel NULL pointer dereference at (null)
-[0.984807] IP: [<(null)>] (null)
-...
-[0.984807][<ffffffff8143cf34>] ? cpuidle_idle_call+0xb4/0x340
-[0.984807][<ffffffff8159e7bc>] ? __atomic_notifier_call_chain+0x4c/0x70
-[0.984807][<ffffffff81001198>] ? cpu_idle+0x78/0xd0
-
-Reference:
-https://bugzilla.novell.com/show_bug.cgi?id=726296
-
-Signed-off-by: Thomas Renninger <trenn at suse.de>
-CC: Bruno Friedmann <bruno at ioda-net.ch>
-Signed-off-by: Len Brown <len.brown at intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/idle/intel_idle.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/idle/intel_idle.c b/drivers/idle/intel_idle.c
-index 5d2f8e1..1dafcc3 100644
---- a/drivers/idle/intel_idle.c
-+++ b/drivers/idle/intel_idle.c
-@@ -348,7 +348,8 @@ static int intel_idle_probe(void)
- cpuid(CPUID_MWAIT_LEAF, &eax, &ebx, &ecx, &mwait_substates);
-
- if (!(ecx & CPUID5_ECX_EXTENSIONS_SUPPORTED) ||
-- !(ecx & CPUID5_ECX_INTERRUPT_BREAK))
-+ !(ecx & CPUID5_ECX_INTERRUPT_BREAK) ||
-+ !mwait_substates)
- return -ENODEV;
-
- pr_debug(PREFIX "MWAIT substates: 0x%x\n", mwait_substates);
---
-1.7.9.5
-
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
deleted file mode 100644
index cbebf3b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0099-intel_idle-fix-API-misuse.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From c8fa4b79449fe6d516847fc308c7126e65d5eec1 Mon Sep 17 00:00:00 2001
-From: Shaohua Li <shaohua.li at intel.com>
-Date: Tue, 10 Jan 2012 15:48:19 -0800
-Subject: [PATCH 099/129] intel_idle: fix API misuse
-
-commit 39a74fdedd1c1461d6fb6d330b5266886513c98f upstream.
-
-smp_call_function() only lets all other CPUs execute a specific function,
-while we expect all CPUs do in intel_idle. Without the fix, we could have
-one cpu which has auto_demotion enabled or has no broadcast timer setup.
-Usually we don't see impact because auto demotion just harms power and the
-intel_idle init is called in CPU 0, where boradcast timer delivers
-interrupt, but this still could be a problem.
-
-Signed-off-by: Shaohua Li <shaohua.li at intel.com>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Len Brown <len.brown at intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/idle/intel_idle.c | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/idle/intel_idle.c b/drivers/idle/intel_idle.c
-index 1dafcc3..5b39216 100644
---- a/drivers/idle/intel_idle.c
-+++ b/drivers/idle/intel_idle.c
-@@ -395,7 +395,7 @@ static int intel_idle_probe(void)
- if (boot_cpu_has(X86_FEATURE_ARAT)) /* Always Reliable APIC Timer */
- lapic_timer_reliable_states = LAPIC_TIMER_ALWAYS_RELIABLE;
- else {
-- smp_call_function(__setup_broadcast_timer, (void *)true, 1);
-+ on_each_cpu(__setup_broadcast_timer, (void *)true, 1);
- register_cpu_notifier(&setup_broadcast_notifier);
- }
-
-@@ -472,7 +472,7 @@ static int intel_idle_cpuidle_driver_init(void)
- }
-
- if (auto_demotion_disable_flags)
-- smp_call_function(auto_demotion_disable, NULL, 1);
-+ on_each_cpu(auto_demotion_disable, NULL, 1);
-
- return 0;
- }
-@@ -569,7 +569,7 @@ static void __exit intel_idle_exit(void)
- cpuidle_unregister_driver(&intel_idle_driver);
-
- if (lapic_timer_reliable_states != LAPIC_TIMER_ALWAYS_RELIABLE) {
-- smp_call_function(__setup_broadcast_timer, (void *)false, 1);
-+ on_each_cpu(__setup_broadcast_timer, (void *)false, 1);
- unregister_cpu_notifier(&setup_broadcast_notifier);
- }
-
---
-1.7.9.5
-
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
deleted file mode 100644
index 5f6eb01..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0100-ACPI-Store-SRAT-table-revision.patch
+++ /dev/null
@@ -1,66 +0,0 @@
-From 8f15cb284e8a758b4040fd87729b365bb7805dbb Mon Sep 17 00:00:00 2001
-From: Kurt Garloff <kurt at garloff.de>
-Date: Tue, 17 Jan 2012 04:18:02 -0500
-Subject: [PATCH 100/129] ACPI: Store SRAT table revision
-
-commit 8df0eb7c9d96f9e82f233ee8b74e0f0c8471f868 upstream.
-
-In SRAT v1, we had 8bit proximity domain (PXM) fields; SRAT v2 provides
-32bits for these. The new fields were reserved before.
-According to the ACPI spec, the OS must disregrard reserved fields.
-In order to know whether or not, we must know what version the SRAT
-table has.
-
-This patch stores the SRAT table revision for later consumption
-by arch specific __init functions.
-
-Signed-off-by: Kurt Garloff <kurt at garloff.de>
-Signed-off-by: Len Brown <len.brown at intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/acpi/numa.c | 6 ++++++
- include/acpi/acpi_numa.h | 1 +
- 2 files changed, 7 insertions(+)
-
-diff --git a/drivers/acpi/numa.c b/drivers/acpi/numa.c
-index 3b5c318..e56f3be 100644
---- a/drivers/acpi/numa.c
-+++ b/drivers/acpi/numa.c
-@@ -45,6 +45,8 @@ static int pxm_to_node_map[MAX_PXM_DOMAINS]
- static int node_to_pxm_map[MAX_NUMNODES]
- = { [0 ... MAX_NUMNODES - 1] = PXM_INVAL };
-
-+unsigned char acpi_srat_revision __initdata;
-+
- int pxm_to_node(int pxm)
- {
- if (pxm < 0)
-@@ -255,9 +257,13 @@ acpi_parse_memory_affinity(struct acpi_subtable_header * header,
-
- static int __init acpi_parse_srat(struct acpi_table_header *table)
- {
-+ struct acpi_table_srat *srat;
- if (!table)
- return -EINVAL;
-
-+ srat = (struct acpi_table_srat *)table;
-+ acpi_srat_revision = srat->header.revision;
-+
- /* Real work done in acpi_table_parse_srat below. */
-
- return 0;
-diff --git a/include/acpi/acpi_numa.h b/include/acpi/acpi_numa.h
-index 1739726..451823c 100644
---- a/include/acpi/acpi_numa.h
-+++ b/include/acpi/acpi_numa.h
-@@ -15,6 +15,7 @@ extern int pxm_to_node(int);
- extern int node_to_pxm(int);
- extern void __acpi_map_pxm_to_node(int, int);
- extern int acpi_map_pxm_to_node(int);
-+extern unsigned char acpi_srat_revision;
-
- #endif /* CONFIG_ACPI_NUMA */
- #endif /* __ACP_NUMA_H */
---
-1.7.9.5
-
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
deleted file mode 100644
index 2209860..0000000
--- 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
+++ /dev/null
@@ -1,50 +0,0 @@
-From 63a87105c14ecf9a81f741a3864b775901237f53 Mon Sep 17 00:00:00 2001
-From: Kurt Garloff <kurt at garloff.de>
-Date: Tue, 17 Jan 2012 04:20:31 -0500
-Subject: [PATCH 101/129] ACPI, x86: Use SRAT table rev to use 8bit or 32bit
- PXM fields (x86/x86-64)
-
-commit cd298f60a2451a16e0f077404bf69b62ec868733 upstream.
-
-In SRAT v1, we had 8bit proximity domain (PXM) fields; SRAT v2 provides
-32bits for these. The new fields were reserved before.
-According to the ACPI spec, the OS must disregrard reserved fields.
-
-x86/x86-64 was rather inconsistent prior to this patch; it used 8 bits
-for the pxm field in cpu_affinity, but 32 bits in mem_affinity.
-This patch makes it consistent: Either use 8 bits consistently (SRAT
-rev 1 or lower) or 32 bits (SRAT rev 2 or higher).
-
-cc: x86 at kernel.org
-Signed-off-by: Kurt Garloff <kurt at garloff.de>
-Signed-off-by: Len Brown <len.brown at intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- arch/x86/mm/srat.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/arch/x86/mm/srat.c b/arch/x86/mm/srat.c
-index 81dbfde..7efd0c6 100644
---- a/arch/x86/mm/srat.c
-+++ b/arch/x86/mm/srat.c
-@@ -104,6 +104,8 @@ acpi_numa_processor_affinity_init(struct acpi_srat_cpu_affinity *pa)
- if ((pa->flags & ACPI_SRAT_CPU_ENABLED) == 0)
- return;
- pxm = pa->proximity_domain_lo;
-+ if (acpi_srat_revision >= 2)
-+ pxm |= *((unsigned int*)pa->proximity_domain_hi) << 8;
- node = setup_node(pxm);
- if (node < 0) {
- printk(KERN_ERR "SRAT: Too many proximity domains %x\n", pxm);
-@@ -155,6 +157,8 @@ acpi_numa_memory_affinity_init(struct acpi_srat_mem_affinity *ma)
- start = ma->base_address;
- end = start + ma->length;
- pxm = ma->proximity_domain;
-+ if (acpi_srat_revision <= 1)
-+ pxm &= 0xff;
- node = setup_node(pxm);
- if (node < 0) {
- printk(KERN_ERR "SRAT: Too many proximity domains.\n");
---
-1.7.9.5
-
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
deleted file mode 100644
index 9aa68af..0000000
--- 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
+++ /dev/null
@@ -1,66 +0,0 @@
-From d9beea03fc99ab5df65264a47802449c6630a8bf Mon Sep 17 00:00:00 2001
-From: Kurt Garloff <kurt at garloff.de>
-Date: Tue, 17 Jan 2012 04:21:49 -0500
-Subject: [PATCH 102/129] ACPI, ia64: Use SRAT table rev to use 8bit or
- 16/32bit PXM fields (ia64)
-
-commit 9f10f6a520deb3639fac78d81151a3ade88b4e7f upstream.
-
-In SRAT v1, we had 8bit proximity domain (PXM) fields; SRAT v2 provides
-32bits for these. The new fields were reserved before.
-According to the ACPI spec, the OS must disregrard reserved fields.
-
-ia64 did handle the PXM fields almost consistently, but depending on
-sgi's sn2 platform. This patch leaves the sn2 logic in, but does also
-use 16/32 bits for PXM if the SRAT has rev 2 or higher.
-
-The patch also adds __init to the two pxm accessor functions, as they
-access __initdata now and are called from an __init function only anyway.
-
-Note that the code only uses 16 bits for the PXM field in the processor
-proximity field; the patch does not address this as 16 bits are more than
-enough.
-
-Signed-off-by: Kurt Garloff <kurt at garloff.de>
-Signed-off-by: Len Brown <len.brown at intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- arch/ia64/kernel/acpi.c | 10 ++++++----
- 1 file changed, 6 insertions(+), 4 deletions(-)
-
-diff --git a/arch/ia64/kernel/acpi.c b/arch/ia64/kernel/acpi.c
-index bfb4d01..5207035 100644
---- a/arch/ia64/kernel/acpi.c
-+++ b/arch/ia64/kernel/acpi.c
-@@ -429,22 +429,24 @@ static u32 __devinitdata pxm_flag[PXM_FLAG_LEN];
- static struct acpi_table_slit __initdata *slit_table;
- cpumask_t early_cpu_possible_map = CPU_MASK_NONE;
-
--static int get_processor_proximity_domain(struct acpi_srat_cpu_affinity *pa)
-+static int __init
-+get_processor_proximity_domain(struct acpi_srat_cpu_affinity *pa)
- {
- int pxm;
-
- pxm = pa->proximity_domain_lo;
-- if (ia64_platform_is("sn2"))
-+ if (ia64_platform_is("sn2") || acpi_srat_revision >= 2)
- pxm += pa->proximity_domain_hi[0] << 8;
- return pxm;
- }
-
--static int get_memory_proximity_domain(struct acpi_srat_mem_affinity *ma)
-+static int __init
-+get_memory_proximity_domain(struct acpi_srat_mem_affinity *ma)
- {
- int pxm;
-
- pxm = ma->proximity_domain;
-- if (!ia64_platform_is("sn2"))
-+ if (!ia64_platform_is("sn2") && acpi_srat_revision <= 1)
- pxm &= 0xff;
-
- return pxm;
---
-1.7.9.5
-
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
deleted file mode 100644
index 66d9672..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0103-ACPICA-Put-back-the-call-to-acpi_os_validate_address.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-From 0279b040f1dafa5f545c9ef255b39a99f9490750 Mon Sep 17 00:00:00 2001
-From: Lin Ming <ming.m.lin at intel.com>
-Date: Tue, 29 Nov 2011 22:13:35 +0800
-Subject: [PATCH 103/129] ACPICA: Put back the call to
- acpi_os_validate_address
-
-commit da4d8b287abe783d30e968155614531a0937d090 upstream.
-
-The call to acpi_os_validate_address in acpi_ds_get_region_arguments was
-removed by mistake in commit 9ad19ac(ACPICA: Split large dsopcode and
-dsload.c files).
-
-Put it back.
-
-Reported-and-bisected-by: Luca Tettamanti <kronos.it at gmail.com>
-Signed-off-by: Lin Ming <ming.m.lin at intel.com>
-Signed-off-by: Len Brown <len.brown at intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/acpi/acpica/dsargs.c | 24 ++++++++++++++++++++++++
- 1 file changed, 24 insertions(+)
-
-diff --git a/drivers/acpi/acpica/dsargs.c b/drivers/acpi/acpica/dsargs.c
-index 8c7b997..42163d8 100644
---- a/drivers/acpi/acpica/dsargs.c
-+++ b/drivers/acpi/acpica/dsargs.c
-@@ -387,5 +387,29 @@ acpi_status acpi_ds_get_region_arguments(union acpi_operand_object *obj_desc)
- status = acpi_ds_execute_arguments(node, node->parent,
- extra_desc->extra.aml_length,
- extra_desc->extra.aml_start);
-+ if (ACPI_FAILURE(status)) {
-+ return_ACPI_STATUS(status);
-+ }
-+
-+ /* Validate the region address/length via the host OS */
-+
-+ status = acpi_os_validate_address(obj_desc->region.space_id,
-+ obj_desc->region.address,
-+ (acpi_size) obj_desc->region.length,
-+ acpi_ut_get_node_name(node));
-+
-+ if (ACPI_FAILURE(status)) {
-+ /*
-+ * Invalid address/length. We will emit an error message and mark
-+ * the region as invalid, so that it will cause an additional error if
-+ * it is ever used. Then return AE_OK.
-+ */
-+ ACPI_EXCEPTION((AE_INFO, status,
-+ "During address validation of OpRegion [%4.4s]",
-+ node->name.ascii));
-+ obj_desc->common.flags |= AOPOBJ_INVALID;
-+ status = AE_OK;
-+ }
-+
- return_ACPI_STATUS(status);
- }
---
-1.7.9.5
-
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
deleted file mode 100644
index edd3fc3..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0104-ACPI-processor-fix-acpi_get_cpuid-for-UP-processor.patch
+++ /dev/null
@@ -1,75 +0,0 @@
-From 639adc94e82ece74d00c447a2e5d9180bdfd5355 Mon Sep 17 00:00:00 2001
-From: Lin Ming <ming.m.lin at intel.com>
-Date: Tue, 13 Dec 2011 09:36:03 +0800
-Subject: [PATCH 104/129] ACPI: processor: fix acpi_get_cpuid for UP processor
-
-commit d640113fe80e45ebd4a5b420b220d3f6bf37f682 upstream.
-
-For UP processor, it is likely that no _MAT method or MADT table defined.
-So currently acpi_get_cpuid(...) always return -1 for UP processor.
-This is wrong. It should return valid value for CPU0.
-
-In the other hand, BIOS may define multiple CPU handles even for UP
-processor, for example
-
- Scope (_PR)
- {
- Processor (CPU0, 0x00, 0x00000410, 0x06) {}
- Processor (CPU1, 0x01, 0x00000410, 0x06) {}
- Processor (CPU2, 0x02, 0x00000410, 0x06) {}
- Processor (CPU3, 0x03, 0x00000410, 0x06) {}
- }
-
-We should only return valid value for CPU0's acpi handle.
-And return invalid value for others.
-
-http://marc.info/?t=132329819900003&r=1&w=2
-
-Reported-and-tested-by: wallak at free.fr
-Signed-off-by: Lin Ming <ming.m.lin at intel.com>
-Signed-off-by: Len Brown <len.brown at intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/acpi/processor_core.c | 26 ++++++++++++++++++++++++--
- 1 file changed, 24 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/acpi/processor_core.c b/drivers/acpi/processor_core.c
-index 3a0428e..c850de4 100644
---- a/drivers/acpi/processor_core.c
-+++ b/drivers/acpi/processor_core.c
-@@ -173,8 +173,30 @@ int acpi_get_cpuid(acpi_handle handle, int type, u32 acpi_id)
- apic_id = map_mat_entry(handle, type, acpi_id);
- if (apic_id == -1)
- apic_id = map_madt_entry(type, acpi_id);
-- if (apic_id == -1)
-- return apic_id;
-+ if (apic_id == -1) {
-+ /*
-+ * On UP processor, there is no _MAT or MADT table.
-+ * So above apic_id is always set to -1.
-+ *
-+ * BIOS may define multiple CPU handles even for UP processor.
-+ * For example,
-+ *
-+ * Scope (_PR)
-+ * {
-+ * Processor (CPU0, 0x00, 0x00000410, 0x06) {}
-+ * Processor (CPU1, 0x01, 0x00000410, 0x06) {}
-+ * Processor (CPU2, 0x02, 0x00000410, 0x06) {}
-+ * Processor (CPU3, 0x03, 0x00000410, 0x06) {}
-+ * }
-+ *
-+ * Ignores apic_id and always return 0 for CPU0's handle.
-+ * Return -1 for other CPU's handle.
-+ */
-+ if (acpi_id == 0)
-+ return acpi_id;
-+ else
-+ return apic_id;
-+ }
-
- #ifdef CONFIG_SMP
- for_each_possible_cpu(i) {
---
-1.7.9.5
-
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
deleted file mode 100644
index e91b360..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0105-sym53c8xx-Fix-NULL-pointer-dereference-in-slave_dest.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From af1ad4d4ecbbfca6424c1f8fa40e1aec8fae4836 Mon Sep 17 00:00:00 2001
-From: Stratos Psomadakis <psomas at gentoo.org>
-Date: Sun, 4 Dec 2011 02:23:54 +0200
-Subject: [PATCH 105/129] sym53c8xx: Fix NULL pointer dereference in
- slave_destroy
-
-commit cced5041ed5a2d1352186510944b0ddfbdbe4c0b upstream.
-
-sym53c8xx_slave_destroy unconditionally assumes that sym53c8xx_slave_alloc has
-succesesfully allocated a sym_lcb. This can lead to a NULL pointer dereference
-(exposed by commit 4e6c82b).
-
-Signed-off-by: Stratos Psomadakis <psomas at gentoo.org>
-Signed-off-by: James Bottomley <JBottomley at Parallels.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/scsi/sym53c8xx_2/sym_glue.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/drivers/scsi/sym53c8xx_2/sym_glue.c b/drivers/scsi/sym53c8xx_2/sym_glue.c
-index b4543f5..36d1ed7 100644
---- a/drivers/scsi/sym53c8xx_2/sym_glue.c
-+++ b/drivers/scsi/sym53c8xx_2/sym_glue.c
-@@ -839,6 +839,10 @@ static void sym53c8xx_slave_destroy(struct scsi_device *sdev)
- struct sym_lcb *lp = sym_lp(tp, sdev->lun);
- unsigned long flags;
-
-+ /* if slave_alloc returned before allocating a sym_lcb, return */
-+ if (!lp)
-+ return;
-+
- spin_lock_irqsave(np->s.host->host_lock, flags);
-
- if (lp->busy_itlq || lp->busy_itl) {
---
-1.7.9.5
-
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
deleted file mode 100644
index 22c0c37..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0106-target-Set-response-format-in-INQUIRY-response.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From 860d8eb163f67712acbcc072e5362e3ca01ef2b8 Mon Sep 17 00:00:00 2001
-From: Roland Dreier <roland at purestorage.com>
-Date: Tue, 6 Dec 2011 10:02:09 -0800
-Subject: [PATCH 106/129] target: Set response format in INQUIRY response
-
-commit ce136176fea522fc8f4c16dcae7e8ed1d890ca39 upstream.
-
-Current SCSI specs say that the "response format" field in the standard
-INQUIRY response should be set to 2, and all the real SCSI devices I
-have do put 2 here. So let's do that too.
-
-Signed-off-by: Roland Dreier <roland at purestorage.com>
-Signed-off-by: Nicholas Bellinger <nab at linux-iscsi.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/target/target_core_cdb.c | 12 ++++++++++++
- 1 file changed, 12 insertions(+)
-
-diff --git a/drivers/target/target_core_cdb.c b/drivers/target/target_core_cdb.c
-index 831468b..2e8c1be 100644
---- a/drivers/target/target_core_cdb.c
-+++ b/drivers/target/target_core_cdb.c
-@@ -94,6 +94,18 @@ target_emulate_inquiry_std(struct se_cmd *cmd)
- buf[2] = dev->transport->get_device_rev(dev);
-
- /*
-+ * NORMACA and HISUP = 0, RESPONSE DATA FORMAT = 2
-+ *
-+ * SPC4 says:
-+ * A RESPONSE DATA FORMAT field set to 2h indicates that the
-+ * standard INQUIRY data is in the format defined in this
-+ * standard. Response data format values less than 2h are
-+ * obsolete. Response data format values greater than 2h are
-+ * reserved.
-+ */
-+ buf[3] = 2;
-+
-+ /*
- * Enable SCCS and TPGS fields for Emulated ALUA
- */
- if (dev->se_sub_dev->t10_alua.alua_type == SPC3_ALUA_EMULATED)
---
-1.7.9.5
-
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
deleted file mode 100644
index 2d2bff5..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0107-target-Set-additional-sense-length-field-in-sense-da.patch
+++ /dev/null
@@ -1,177 +0,0 @@
-From ae86c4561c40068ef81f484829a47512c99853d0 Mon Sep 17 00:00:00 2001
-From: Roland Dreier <roland at purestorage.com>
-Date: Tue, 13 Dec 2011 14:55:33 -0800
-Subject: [PATCH 107/129] target: Set additional sense length field in sense
- data
-
-commit 895f3022523361e9b383cf48f51feb1f7d5e7e53 upstream.
-
-The target code was not setting the additional sense length field in the
-sense data it returned, which meant that at least the Linux stack
-ignored the ASC/ASCQ fields. For example, without this patch, on a
-tcm_loop device:
-
- # sg_raw -v /dev/sda 2 0 0 0 0 0
-
-gives
-
- cdb to send: 02 00 00 00 00 00
- SCSI Status: Check Condition
-
- Sense Information:
- Fixed format, current; Sense key: Illegal Request
- Raw sense data (in hex):
- 70 00 05 00 00 00 00 00
-
-while after the patch we correctly get the following (which matches what
-a regular disk returns):
-
- cdb to send: 02 00 00 00 00 00
- SCSI Status: Check Condition
-
- Sense Information:
- Fixed format, current; Sense key: Illegal Request
- Additional sense: Invalid command operation code
- Raw sense data (in hex):
- 70 00 05 00 00 00 00 0a 00 00 00 00 20 00 00 00
- 00 00
-
-Signed-off-by: Roland Dreier <roland at purestorage.com>
-Signed-off-by: Nicholas Bellinger <nab at linux-iscsi.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/target/target_core_transport.c | 14 ++++++++++++++
- include/target/target_core_base.h | 1 +
- 2 files changed, 15 insertions(+)
-
-diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c
-index 0257658..e87d0eb 100644
---- a/drivers/target/target_core_transport.c
-+++ b/drivers/target/target_core_transport.c
-@@ -4353,6 +4353,7 @@ int transport_send_check_condition_and_sense(
- case TCM_NON_EXISTENT_LUN:
- /* CURRENT ERROR */
- buffer[offset] = 0x70;
-+ buffer[offset+SPC_ADD_SENSE_LEN_OFFSET] = 10;
- /* ILLEGAL REQUEST */
- buffer[offset+SPC_SENSE_KEY_OFFSET] = ILLEGAL_REQUEST;
- /* LOGICAL UNIT NOT SUPPORTED */
-@@ -4362,6 +4363,7 @@ int transport_send_check_condition_and_sense(
- case TCM_SECTOR_COUNT_TOO_MANY:
- /* CURRENT ERROR */
- buffer[offset] = 0x70;
-+ buffer[offset+SPC_ADD_SENSE_LEN_OFFSET] = 10;
- /* ILLEGAL REQUEST */
- buffer[offset+SPC_SENSE_KEY_OFFSET] = ILLEGAL_REQUEST;
- /* INVALID COMMAND OPERATION CODE */
-@@ -4370,6 +4372,7 @@ int transport_send_check_condition_and_sense(
- case TCM_UNKNOWN_MODE_PAGE:
- /* CURRENT ERROR */
- buffer[offset] = 0x70;
-+ buffer[offset+SPC_ADD_SENSE_LEN_OFFSET] = 10;
- /* ILLEGAL REQUEST */
- buffer[offset+SPC_SENSE_KEY_OFFSET] = ILLEGAL_REQUEST;
- /* INVALID FIELD IN CDB */
-@@ -4378,6 +4381,7 @@ int transport_send_check_condition_and_sense(
- case TCM_CHECK_CONDITION_ABORT_CMD:
- /* CURRENT ERROR */
- buffer[offset] = 0x70;
-+ buffer[offset+SPC_ADD_SENSE_LEN_OFFSET] = 10;
- /* ABORTED COMMAND */
- buffer[offset+SPC_SENSE_KEY_OFFSET] = ABORTED_COMMAND;
- /* BUS DEVICE RESET FUNCTION OCCURRED */
-@@ -4387,6 +4391,7 @@ int transport_send_check_condition_and_sense(
- case TCM_INCORRECT_AMOUNT_OF_DATA:
- /* CURRENT ERROR */
- buffer[offset] = 0x70;
-+ buffer[offset+SPC_ADD_SENSE_LEN_OFFSET] = 10;
- /* ABORTED COMMAND */
- buffer[offset+SPC_SENSE_KEY_OFFSET] = ABORTED_COMMAND;
- /* WRITE ERROR */
-@@ -4397,6 +4402,7 @@ int transport_send_check_condition_and_sense(
- case TCM_INVALID_CDB_FIELD:
- /* CURRENT ERROR */
- buffer[offset] = 0x70;
-+ buffer[offset+SPC_ADD_SENSE_LEN_OFFSET] = 10;
- /* ABORTED COMMAND */
- buffer[offset+SPC_SENSE_KEY_OFFSET] = ABORTED_COMMAND;
- /* INVALID FIELD IN CDB */
-@@ -4405,6 +4411,7 @@ int transport_send_check_condition_and_sense(
- case TCM_INVALID_PARAMETER_LIST:
- /* CURRENT ERROR */
- buffer[offset] = 0x70;
-+ buffer[offset+SPC_ADD_SENSE_LEN_OFFSET] = 10;
- /* ABORTED COMMAND */
- buffer[offset+SPC_SENSE_KEY_OFFSET] = ABORTED_COMMAND;
- /* INVALID FIELD IN PARAMETER LIST */
-@@ -4413,6 +4420,7 @@ int transport_send_check_condition_and_sense(
- case TCM_UNEXPECTED_UNSOLICITED_DATA:
- /* CURRENT ERROR */
- buffer[offset] = 0x70;
-+ buffer[offset+SPC_ADD_SENSE_LEN_OFFSET] = 10;
- /* ABORTED COMMAND */
- buffer[offset+SPC_SENSE_KEY_OFFSET] = ABORTED_COMMAND;
- /* WRITE ERROR */
-@@ -4423,6 +4431,7 @@ int transport_send_check_condition_and_sense(
- case TCM_SERVICE_CRC_ERROR:
- /* CURRENT ERROR */
- buffer[offset] = 0x70;
-+ buffer[offset+SPC_ADD_SENSE_LEN_OFFSET] = 10;
- /* ABORTED COMMAND */
- buffer[offset+SPC_SENSE_KEY_OFFSET] = ABORTED_COMMAND;
- /* PROTOCOL SERVICE CRC ERROR */
-@@ -4433,6 +4442,7 @@ int transport_send_check_condition_and_sense(
- case TCM_SNACK_REJECTED:
- /* CURRENT ERROR */
- buffer[offset] = 0x70;
-+ buffer[offset+SPC_ADD_SENSE_LEN_OFFSET] = 10;
- /* ABORTED COMMAND */
- buffer[offset+SPC_SENSE_KEY_OFFSET] = ABORTED_COMMAND;
- /* READ ERROR */
-@@ -4443,6 +4453,7 @@ int transport_send_check_condition_and_sense(
- case TCM_WRITE_PROTECTED:
- /* CURRENT ERROR */
- buffer[offset] = 0x70;
-+ buffer[offset+SPC_ADD_SENSE_LEN_OFFSET] = 10;
- /* DATA PROTECT */
- buffer[offset+SPC_SENSE_KEY_OFFSET] = DATA_PROTECT;
- /* WRITE PROTECTED */
-@@ -4451,6 +4462,7 @@ int transport_send_check_condition_and_sense(
- case TCM_CHECK_CONDITION_UNIT_ATTENTION:
- /* CURRENT ERROR */
- buffer[offset] = 0x70;
-+ buffer[offset+SPC_ADD_SENSE_LEN_OFFSET] = 10;
- /* UNIT ATTENTION */
- buffer[offset+SPC_SENSE_KEY_OFFSET] = UNIT_ATTENTION;
- core_scsi3_ua_for_check_condition(cmd, &asc, &ascq);
-@@ -4460,6 +4472,7 @@ int transport_send_check_condition_and_sense(
- case TCM_CHECK_CONDITION_NOT_READY:
- /* CURRENT ERROR */
- buffer[offset] = 0x70;
-+ buffer[offset+SPC_ADD_SENSE_LEN_OFFSET] = 10;
- /* Not Ready */
- buffer[offset+SPC_SENSE_KEY_OFFSET] = NOT_READY;
- transport_get_sense_codes(cmd, &asc, &ascq);
-@@ -4470,6 +4483,7 @@ int transport_send_check_condition_and_sense(
- default:
- /* CURRENT ERROR */
- buffer[offset] = 0x70;
-+ buffer[offset+SPC_ADD_SENSE_LEN_OFFSET] = 10;
- /* ILLEGAL REQUEST */
- buffer[offset+SPC_SENSE_KEY_OFFSET] = ILLEGAL_REQUEST;
- /* LOGICAL UNIT COMMUNICATION FAILURE */
-diff --git a/include/target/target_core_base.h b/include/target/target_core_base.h
-index 6873c7d..a79886c 100644
---- a/include/target/target_core_base.h
-+++ b/include/target/target_core_base.h
-@@ -34,6 +34,7 @@
- #define TRANSPORT_SENSE_BUFFER SCSI_SENSE_BUFFERSIZE
- /* Used by transport_send_check_condition_and_sense() */
- #define SPC_SENSE_KEY_OFFSET 2
-+#define SPC_ADD_SENSE_LEN_OFFSET 7
- #define SPC_ASC_KEY_OFFSET 12
- #define SPC_ASCQ_KEY_OFFSET 13
- #define TRANSPORT_IQN_LEN 224
---
-1.7.9.5
-
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
deleted file mode 100644
index 1d681ad..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0108-bcma-invalidate-the-mapped-core-over-suspend-resume.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From 744b53e5115a140039ef4e7834bb84797b4db37e Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5 at gmail.com>
-Date: Fri, 13 Jan 2012 23:58:38 +0100
-Subject: [PATCH 108/129] bcma: invalidate the mapped core over suspend/resume
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit 28e7d218da975f6ae1751e293aed938952c55c98 upstream.
-
-This clears the currently mapped core when suspending, to force
-re-mapping after resume. Without that we were touching default core
-registers believing some other core is mapped. Such a behaviour
-resulted in lockups on some machines.
-
-Signed-off-by: Rafał Miłecki <zajec5 at gmail.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/bcma/host_pci.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/drivers/bcma/host_pci.c b/drivers/bcma/host_pci.c
-index 990f5a8..48e06be 100644
---- a/drivers/bcma/host_pci.c
-+++ b/drivers/bcma/host_pci.c
-@@ -227,11 +227,14 @@ static void bcma_host_pci_remove(struct pci_dev *dev)
- #ifdef CONFIG_PM
- static int bcma_host_pci_suspend(struct pci_dev *dev, pm_message_t state)
- {
-+ struct bcma_bus *bus = pci_get_drvdata(dev);
-+
- /* Host specific */
- pci_save_state(dev);
- pci_disable_device(dev);
- pci_set_power_state(dev, pci_choose_state(dev, state));
-
-+ bus->mapped_core = NULL;
- return 0;
- }
-
---
-1.7.9.5
-
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
deleted file mode 100644
index 281a380..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0109-cx23885-dvb-check-if-dvb_attach-succeded.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 3fcecb64e1ce21bda3d69718f0fefa1ed0d7f06b Mon Sep 17 00:00:00 2001
-From: Miroslav Slugen <thunder.mmm at gmail.com>
-Date: Sun, 11 Dec 2011 18:57:58 -0300
-Subject: [PATCH 109/129] cx23885-dvb: check if dvb_attach() succeded
-
-commit a7c8aadad39428b64d26c3971d967f8314e2397d upstream.
-
-Fix possible null dereference for Leadtek DTV 3200H
-XC4000 tuner when no firmware file available.
-
-Signed-off-by: Miroslav Slugen <thunder.mmm at gmail.com>
-Signed-off-by: Mauro Carvalho Chehab <mchehab at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/media/video/cx23885/cx23885-dvb.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/drivers/media/video/cx23885/cx23885-dvb.c b/drivers/media/video/cx23885/cx23885-dvb.c
-index bcb45be..f0482b2 100644
---- a/drivers/media/video/cx23885/cx23885-dvb.c
-+++ b/drivers/media/video/cx23885/cx23885-dvb.c
-@@ -940,6 +940,11 @@ static int dvb_register(struct cx23885_tsport *port)
-
- fe = dvb_attach(xc4000_attach, fe0->dvb.frontend,
- &dev->i2c_bus[1].i2c_adap, &cfg);
-+ if (!fe) {
-+ printk(KERN_ERR "%s/2: xc4000 attach failed\n",
-+ dev->name);
-+ goto frontend_detach;
-+ }
- }
- break;
- case CX23885_BOARD_TBS_6920:
---
-1.7.9.5
-
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
deleted file mode 100644
index 3bb70b8..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0110-cx88-fix-don-t-duplicate-xc4000-entry-for-radio.patch
+++ /dev/null
@@ -1,95 +0,0 @@
-From dedbeeab016e8baaeed49bae9f4a0dab47da8a54 Mon Sep 17 00:00:00 2001
-From: Miroslav Slugen <thunder.mmm at gmail.com>
-Date: Sun, 11 Dec 2011 19:00:06 -0300
-Subject: [PATCH 110/129] cx88: fix: don't duplicate xc4000 entry for radio
-
-commit b6854e3f31402476bcc9d2f41570389fa491de17 upstream.
-
-All radio tuners in cx88 driver using same address for radio and tuner,
-so there is no need to probe it twice for same tuner and we can use
-radio_type UNSET, this also fix broken radio since kernel 2.6.39-rc1
-for those tuners.
-
-Signed-off-by: Miroslav Slugen <thunder.mmm at gmail.com>
-Signed-off-by: Mauro Carvalho Chehab <mchehab at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/media/video/cx88/cx88-cards.c | 24 ++++++++++++------------
- 1 file changed, 12 insertions(+), 12 deletions(-)
-
-diff --git a/drivers/media/video/cx88/cx88-cards.c b/drivers/media/video/cx88/cx88-cards.c
-index 0d719fa..3929d93 100644
---- a/drivers/media/video/cx88/cx88-cards.c
-+++ b/drivers/media/video/cx88/cx88-cards.c
-@@ -1573,8 +1573,8 @@ static const struct cx88_board cx88_boards[] = {
- .name = "Pinnacle Hybrid PCTV",
- .tuner_type = TUNER_XC2028,
- .tuner_addr = 0x61,
-- .radio_type = TUNER_XC2028,
-- .radio_addr = 0x61,
-+ .radio_type = UNSET,
-+ .radio_addr = ADDR_UNSET,
- .input = { {
- .type = CX88_VMUX_TELEVISION,
- .vmux = 0,
-@@ -1611,8 +1611,8 @@ static const struct cx88_board cx88_boards[] = {
- .name = "Leadtek TV2000 XP Global",
- .tuner_type = TUNER_XC2028,
- .tuner_addr = 0x61,
-- .radio_type = TUNER_XC2028,
-- .radio_addr = 0x61,
-+ .radio_type = UNSET,
-+ .radio_addr = ADDR_UNSET,
- .input = { {
- .type = CX88_VMUX_TELEVISION,
- .vmux = 0,
-@@ -2043,8 +2043,8 @@ static const struct cx88_board cx88_boards[] = {
- .name = "Terratec Cinergy HT PCI MKII",
- .tuner_type = TUNER_XC2028,
- .tuner_addr = 0x61,
-- .radio_type = TUNER_XC2028,
-- .radio_addr = 0x61,
-+ .radio_type = UNSET,
-+ .radio_addr = ADDR_UNSET,
- .input = { {
- .type = CX88_VMUX_TELEVISION,
- .vmux = 0,
-@@ -2082,9 +2082,9 @@ static const struct cx88_board cx88_boards[] = {
- [CX88_BOARD_WINFAST_DTV1800H] = {
- .name = "Leadtek WinFast DTV1800 Hybrid",
- .tuner_type = TUNER_XC2028,
-- .radio_type = TUNER_XC2028,
-+ .radio_type = UNSET,
- .tuner_addr = 0x61,
-- .radio_addr = 0x61,
-+ .radio_addr = ADDR_UNSET,
- /*
- * GPIO setting
- *
-@@ -2123,9 +2123,9 @@ static const struct cx88_board cx88_boards[] = {
- [CX88_BOARD_WINFAST_DTV1800H_XC4000] = {
- .name = "Leadtek WinFast DTV1800 H (XC4000)",
- .tuner_type = TUNER_XC4000,
-- .radio_type = TUNER_XC4000,
-+ .radio_type = UNSET,
- .tuner_addr = 0x61,
-- .radio_addr = 0x61,
-+ .radio_addr = ADDR_UNSET,
- /*
- * GPIO setting
- *
-@@ -2164,9 +2164,9 @@ static const struct cx88_board cx88_boards[] = {
- [CX88_BOARD_WINFAST_DTV2000H_PLUS] = {
- .name = "Leadtek WinFast DTV2000 H PLUS",
- .tuner_type = TUNER_XC4000,
-- .radio_type = TUNER_XC4000,
-+ .radio_type = UNSET,
- .tuner_addr = 0x61,
-- .radio_addr = 0x61,
-+ .radio_addr = ADDR_UNSET,
- /*
- * GPIO
- * 2: 1: mute audio
---
-1.7.9.5
-
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
deleted file mode 100644
index ca03460..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0111-tuner-Fix-numberspace-conflict-between-xc4000-and-pt.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 5af871e87d37ab57459c6c7244aa4837993ee9eb Mon Sep 17 00:00:00 2001
-From: Miroslav Slugen <thunder.mmm at gmail.com>
-Date: Sun, 11 Dec 2011 18:47:32 -0300
-Subject: [PATCH 111/129] tuner: Fix numberspace conflict between xc4000 and
- pti 5nf05 tuners
-
-commit cd4ca7afc61d3b18fcd635002459fb6b1d701099 upstream.
-
-Update xc4000 tuner definition, number 81 is already in use by
-TUNER_PARTSNIC_PTI_5NF05.
-
-Signed-off-by: Miroslav Slugen <thunder.mmm at gmail.com>
-Signed-off-by: Mauro Carvalho Chehab <mchehab at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- include/media/tuner.h | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/include/media/tuner.h b/include/media/tuner.h
-index 89c290b..29e1920 100644
---- a/include/media/tuner.h
-+++ b/include/media/tuner.h
-@@ -127,7 +127,6 @@
- #define TUNER_PHILIPS_FMD1216MEX_MK3 78
- #define TUNER_PHILIPS_FM1216MK5 79
- #define TUNER_PHILIPS_FQ1216LME_MK3 80 /* Active loopthrough, no FM */
--#define TUNER_XC4000 81 /* Xceive Silicon Tuner */
-
- #define TUNER_PARTSNIC_PTI_5NF05 81
- #define TUNER_PHILIPS_CU1216L 82
-@@ -136,6 +135,8 @@
- #define TUNER_PHILIPS_FQ1236_MK5 85 /* NTSC, TDA9885, no FM radio */
- #define TUNER_TENA_TNF_5337 86
-
-+#define TUNER_XC4000 87 /* Xceive Silicon Tuner */
-+
- /* tv card specific */
- #define TDA9887_PRESENT (1<<0)
- #define TDA9887_PORT1_INACTIVE (1<<1)
---
-1.7.9.5
-
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
deleted file mode 100644
index fa68a22..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0112-tracepoints-module-Fix-disabling-tracepoints-with-ta.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From 1c99223cf33c02c8f79d74bda8a0f4352bd4d7f6 Mon Sep 17 00:00:00 2001
-From: Steven Rostedt <srostedt at redhat.com>
-Date: Fri, 13 Jan 2012 21:40:59 -0500
-Subject: [PATCH 112/129] tracepoints/module: Fix disabling tracepoints with
- taint CRAP or OOT
-
-commit c10076c4304083af15a41f6bc5e657e781c1f9a6 upstream.
-
-Tracepoints are disabled for tainted modules, which is usually because the
-module is either proprietary or was forced, and we don't want either of them
-using kernel tracepoints.
-
-But, a module can also be tainted by being in the staging directory or
-compiled out of tree. Either is fine for use with tracepoints, no need
-to punish them. I found this out when I noticed that my sample trace event
-module, when done out of tree, stopped working.
-
-Cc: Mathieu Desnoyers <mathieu.desnoyers at efficios.com>
-Cc: Ben Hutchings <ben at decadent.org.uk>
-Cc: Dave Jones <davej at redhat.com>
-Cc: Greg Kroah-Hartman <gregkh at suse.de>
-Cc: Rusty Russell <rusty at rustcorp.com.au>
-Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- kernel/tracepoint.c | 7 ++++---
- 1 file changed, 4 insertions(+), 3 deletions(-)
-
-diff --git a/kernel/tracepoint.c b/kernel/tracepoint.c
-index db110b8..f1539de 100644
---- a/kernel/tracepoint.c
-+++ b/kernel/tracepoint.c
-@@ -634,10 +634,11 @@ static int tracepoint_module_coming(struct module *mod)
- int ret = 0;
-
- /*
-- * We skip modules that tain the kernel, especially those with different
-- * module header (for forced load), to make sure we don't cause a crash.
-+ * We skip modules that taint the kernel, especially those with different
-+ * module headers (for forced load), to make sure we don't cause a crash.
-+ * Staging and out-of-tree GPL modules are fine.
- */
-- if (mod->taints)
-+ if (mod->taints & ~((1 << TAINT_OOT_MODULE) | (1 << TAINT_CRAP)))
- return 0;
- mutex_lock(&tracepoints_mutex);
- tp_mod = kmalloc(sizeof(struct tp_module), GFP_KERNEL);
---
-1.7.9.5
-
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
deleted file mode 100644
index aec3465..0000000
--- 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
+++ /dev/null
@@ -1,350 +0,0 @@
-From ebde7b91a72ac0cc014d021051f8a46a786dbb00 Mon Sep 17 00:00:00 2001
-From: Cliff Wickman <cpw at sgi.com>
-Date: Mon, 16 Jan 2012 15:17:50 -0600
-Subject: [PATCH 113/129] x86/UV2: Fix new UV2 hardware by using native UV2
- broadcast mode
-
-commit da87c937e5a2374686edd58df06cfd5050b125fa upstream.
-
-Update the use of the Broadcast Assist Unit on SGI Altix UV2 to
-the use of native UV2 mode on new hardware (not the legacy mode).
-
-UV2 native mode has a different format for a broadcast message.
-We also need quick differentiaton between UV1 and UV2.
-
-Signed-off-by: Cliff Wickman <cpw at sgi.com>
-Link: http://lkml.kernel.org/r/20120116211750.GA5767@sgi.com
-Signed-off-by: Ingo Molnar <mingo at elte.hu>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- arch/x86/include/asm/uv/uv_bau.h | 93 +++++++++++++++++++++++++++++++++++---
- arch/x86/platform/uv/tlb_uv.c | 88 ++++++++++++++++++++++++++----------
- 2 files changed, 151 insertions(+), 30 deletions(-)
-
-diff --git a/arch/x86/include/asm/uv/uv_bau.h b/arch/x86/include/asm/uv/uv_bau.h
-index 8e862aa..4a46b27 100644
---- a/arch/x86/include/asm/uv/uv_bau.h
-+++ b/arch/x86/include/asm/uv/uv_bau.h
-@@ -65,7 +65,7 @@
- * UV2: Bit 19 selects between
- * (0): 10 microsecond timebase and
- * (1): 80 microseconds
-- * we're using 655us, similar to UV1: 65 units of 10us
-+ * we're using 560us, similar to UV1: 65 units of 10us
- */
- #define UV1_INTD_SOFT_ACK_TIMEOUT_PERIOD (9UL)
- #define UV2_INTD_SOFT_ACK_TIMEOUT_PERIOD (15UL)
-@@ -235,10 +235,10 @@ struct bau_msg_payload {
-
-
- /*
-- * Message header: 16 bytes (128 bits) (bytes 0x30-0x3f of descriptor)
-+ * UV1 Message header: 16 bytes (128 bits) (bytes 0x30-0x3f of descriptor)
- * see table 4.2.3.0.1 in broacast_assist spec.
- */
--struct bau_msg_header {
-+struct uv1_bau_msg_header {
- unsigned int dest_subnodeid:6; /* must be 0x10, for the LB */
- /* bits 5:0 */
- unsigned int base_dest_nasid:15; /* nasid of the first bit */
-@@ -318,19 +318,87 @@ struct bau_msg_header {
- };
-
- /*
-+ * UV2 Message header: 16 bytes (128 bits) (bytes 0x30-0x3f of descriptor)
-+ * see figure 9-2 of harp_sys.pdf
-+ */
-+struct uv2_bau_msg_header {
-+ unsigned int base_dest_nasid:15; /* nasid of the first bit */
-+ /* bits 14:0 */ /* in uvhub map */
-+ unsigned int dest_subnodeid:5; /* must be 0x10, for the LB */
-+ /* bits 19:15 */
-+ unsigned int rsvd_1:1; /* must be zero */
-+ /* bit 20 */
-+ /* Address bits 59:21 */
-+ /* bits 25:2 of address (44:21) are payload */
-+ /* these next 24 bits become bytes 12-14 of msg */
-+ /* bits 28:21 land in byte 12 */
-+ unsigned int replied_to:1; /* sent as 0 by the source to
-+ byte 12 */
-+ /* bit 21 */
-+ unsigned int msg_type:3; /* software type of the
-+ message */
-+ /* bits 24:22 */
-+ unsigned int canceled:1; /* message canceled, resource
-+ is to be freed*/
-+ /* bit 25 */
-+ unsigned int payload_1:3; /* not currently used */
-+ /* bits 28:26 */
-+
-+ /* bits 36:29 land in byte 13 */
-+ unsigned int payload_2a:3; /* not currently used */
-+ unsigned int payload_2b:5; /* not currently used */
-+ /* bits 36:29 */
-+
-+ /* bits 44:37 land in byte 14 */
-+ unsigned int payload_3:8; /* not currently used */
-+ /* bits 44:37 */
-+
-+ unsigned int rsvd_2:7; /* reserved */
-+ /* bits 51:45 */
-+ unsigned int swack_flag:1; /* software acknowledge flag */
-+ /* bit 52 */
-+ unsigned int rsvd_3a:3; /* must be zero */
-+ unsigned int rsvd_3b:8; /* must be zero */
-+ unsigned int rsvd_3c:8; /* must be zero */
-+ unsigned int rsvd_3d:3; /* must be zero */
-+ /* bits 74:53 */
-+ unsigned int fairness:3; /* usually zero */
-+ /* bits 77:75 */
-+
-+ unsigned int sequence:16; /* message sequence number */
-+ /* bits 93:78 Suppl_A */
-+ unsigned int chaining:1; /* next descriptor is part of
-+ this activation*/
-+ /* bit 94 */
-+ unsigned int multilevel:1; /* multi-level multicast
-+ format */
-+ /* bit 95 */
-+ unsigned int rsvd_4:24; /* ordered / source node /
-+ source subnode / aging
-+ must be zero */
-+ /* bits 119:96 */
-+ unsigned int command:8; /* message type */
-+ /* bits 127:120 */
-+};
-+
-+/*
- * The activation descriptor:
- * The format of the message to send, plus all accompanying control
- * Should be 64 bytes
- */
- struct bau_desc {
-- struct pnmask distribution;
-+ struct pnmask distribution;
- /*
- * message template, consisting of header and payload:
- */
-- struct bau_msg_header header;
-- struct bau_msg_payload payload;
-+ union bau_msg_header {
-+ struct uv1_bau_msg_header uv1_hdr;
-+ struct uv2_bau_msg_header uv2_hdr;
-+ } header;
-+
-+ struct bau_msg_payload payload;
- };
--/*
-+/* UV1:
- * -payload-- ---------header------
- * bytes 0-11 bits 41-56 bits 58-81
- * A B (2) C (3)
-@@ -340,6 +408,16 @@ struct bau_desc {
- * bytes 0-11 bytes 12-14 bytes 16-17 (byte 15 filled in by hw as vector)
- * ------------payload queue-----------
- */
-+/* UV2:
-+ * -payload-- ---------header------
-+ * bytes 0-11 bits 70-78 bits 21-44
-+ * A B (2) C (3)
-+ *
-+ * A/B/C are moved to:
-+ * A C B
-+ * bytes 0-11 bytes 12-14 bytes 16-17 (byte 15 filled in by hw as vector)
-+ * ------------payload queue-----------
-+ */
-
- /*
- * The payload queue on the destination side is an array of these.
-@@ -511,6 +589,7 @@ struct bau_control {
- short osnode;
- short uvhub_cpu;
- short uvhub;
-+ short uvhub_version;
- short cpus_in_socket;
- short cpus_in_uvhub;
- short partition_base_pnode;
-diff --git a/arch/x86/platform/uv/tlb_uv.c b/arch/x86/platform/uv/tlb_uv.c
-index 5b55219..1341a2e 100644
---- a/arch/x86/platform/uv/tlb_uv.c
-+++ b/arch/x86/platform/uv/tlb_uv.c
-@@ -573,7 +573,7 @@ static int wait_completion(struct bau_desc *bau_desc,
- right_shift = ((cpu - UV_CPUS_PER_AS) * UV_ACT_STATUS_SIZE);
- }
-
-- if (is_uv1_hub())
-+ if (bcp->uvhub_version == 1)
- return uv1_wait_completion(bau_desc, mmr_offset, right_shift,
- bcp, try);
- else
-@@ -757,15 +757,22 @@ int uv_flush_send_and_wait(struct bau_desc *bau_desc,
- {
- int seq_number = 0;
- int completion_stat = 0;
-+ int uv1 = 0;
- long try = 0;
- unsigned long index;
- cycles_t time1;
- cycles_t time2;
- struct ptc_stats *stat = bcp->statp;
- struct bau_control *hmaster = bcp->uvhub_master;
-+ struct uv1_bau_msg_header *uv1_hdr = NULL;
-+ struct uv2_bau_msg_header *uv2_hdr = NULL;
-
-- if (is_uv1_hub())
-+ if (bcp->uvhub_version == 1) {
-+ uv1 = 1;
- uv1_throttle(hmaster, stat);
-+ uv1_hdr = &bau_desc->header.uv1_hdr;
-+ } else
-+ uv2_hdr = &bau_desc->header.uv2_hdr;
-
- while (hmaster->uvhub_quiesce)
- cpu_relax();
-@@ -773,14 +780,23 @@ int uv_flush_send_and_wait(struct bau_desc *bau_desc,
- time1 = get_cycles();
- do {
- if (try == 0) {
-- bau_desc->header.msg_type = MSG_REGULAR;
-+ if (uv1)
-+ uv1_hdr->msg_type = MSG_REGULAR;
-+ else
-+ uv2_hdr->msg_type = MSG_REGULAR;
- seq_number = bcp->message_number++;
- } else {
-- bau_desc->header.msg_type = MSG_RETRY;
-+ if (uv1)
-+ uv1_hdr->msg_type = MSG_RETRY;
-+ else
-+ uv2_hdr->msg_type = MSG_RETRY;
- stat->s_retry_messages++;
- }
-
-- bau_desc->header.sequence = seq_number;
-+ if (uv1)
-+ uv1_hdr->sequence = seq_number;
-+ else
-+ uv2_hdr->sequence = seq_number;
- index = (1UL << AS_PUSH_SHIFT) | bcp->uvhub_cpu;
- bcp->send_message = get_cycles();
-
-@@ -967,7 +983,7 @@ const struct cpumask *uv_flush_tlb_others(const struct cpumask *cpumask,
- stat->s_ntargself++;
-
- bau_desc = bcp->descriptor_base;
-- bau_desc += ITEMS_PER_DESC * bcp->uvhub_cpu;
-+ bau_desc += (ITEMS_PER_DESC * bcp->uvhub_cpu);
- bau_uvhubs_clear(&bau_desc->distribution, UV_DISTRIBUTION_SIZE);
- if (set_distrib_bits(flush_mask, bcp, bau_desc, &locals, &remotes))
- return NULL;
-@@ -1083,7 +1099,7 @@ static void __init enable_timeouts(void)
- */
- mmr_image |= (1L << SOFTACK_MSHIFT);
- if (is_uv2_hub()) {
-- mmr_image |= (1L << UV2_LEG_SHFT);
-+ mmr_image &= ~(1L << UV2_LEG_SHFT);
- mmr_image |= (1L << UV2_EXT_SHFT);
- }
- write_mmr_misc_control(pnode, mmr_image);
-@@ -1432,12 +1448,15 @@ static void activation_descriptor_init(int node, int pnode, int base_pnode)
- {
- int i;
- int cpu;
-+ int uv1 = 0;
- unsigned long gpa;
- unsigned long m;
- unsigned long n;
- size_t dsize;
- struct bau_desc *bau_desc;
- struct bau_desc *bd2;
-+ struct uv1_bau_msg_header *uv1_hdr;
-+ struct uv2_bau_msg_header *uv2_hdr;
- struct bau_control *bcp;
-
- /*
-@@ -1451,6 +1470,8 @@ static void activation_descriptor_init(int node, int pnode, int base_pnode)
- gpa = uv_gpa(bau_desc);
- n = uv_gpa_to_gnode(gpa);
- m = uv_gpa_to_offset(gpa);
-+ if (is_uv1_hub())
-+ uv1 = 1;
-
- /* the 14-bit pnode */
- write_mmr_descriptor_base(pnode, (n << UV_DESC_PSHIFT | m));
-@@ -1461,21 +1482,33 @@ static void activation_descriptor_init(int node, int pnode, int base_pnode)
- */
- for (i = 0, bd2 = bau_desc; i < (ADP_SZ * ITEMS_PER_DESC); i++, bd2++) {
- memset(bd2, 0, sizeof(struct bau_desc));
-- bd2->header.swack_flag = 1;
-- /*
-- * The base_dest_nasid set in the message header is the nasid
-- * of the first uvhub in the partition. The bit map will
-- * indicate destination pnode numbers relative to that base.
-- * They may not be consecutive if nasid striding is being used.
-- */
-- bd2->header.base_dest_nasid = UV_PNODE_TO_NASID(base_pnode);
-- bd2->header.dest_subnodeid = UV_LB_SUBNODEID;
-- bd2->header.command = UV_NET_ENDPOINT_INTD;
-- bd2->header.int_both = 1;
-- /*
-- * all others need to be set to zero:
-- * fairness chaining multilevel count replied_to
-- */
-+ if (uv1) {
-+ uv1_hdr = &bd2->header.uv1_hdr;
-+ uv1_hdr->swack_flag = 1;
-+ /*
-+ * The base_dest_nasid set in the message header
-+ * is the nasid of the first uvhub in the partition.
-+ * The bit map will indicate destination pnode numbers
-+ * relative to that base. They may not be consecutive
-+ * if nasid striding is being used.
-+ */
-+ uv1_hdr->base_dest_nasid =
-+ UV_PNODE_TO_NASID(base_pnode);
-+ uv1_hdr->dest_subnodeid = UV_LB_SUBNODEID;
-+ uv1_hdr->command = UV_NET_ENDPOINT_INTD;
-+ uv1_hdr->int_both = 1;
-+ /*
-+ * all others need to be set to zero:
-+ * fairness chaining multilevel count replied_to
-+ */
-+ } else {
-+ uv2_hdr = &bd2->header.uv2_hdr;
-+ uv2_hdr->swack_flag = 1;
-+ uv2_hdr->base_dest_nasid =
-+ UV_PNODE_TO_NASID(base_pnode);
-+ uv2_hdr->dest_subnodeid = UV_LB_SUBNODEID;
-+ uv2_hdr->command = UV_NET_ENDPOINT_INTD;
-+ }
- }
- for_each_present_cpu(cpu) {
- if (pnode != uv_blade_to_pnode(uv_cpu_to_blade_id(cpu)))
-@@ -1728,6 +1761,14 @@ static int scan_sock(struct socket_desc *sdp, struct uvhub_desc *bdp,
- bcp->cpus_in_socket = sdp->num_cpus;
- bcp->socket_master = *smasterp;
- bcp->uvhub = bdp->uvhub;
-+ if (is_uv1_hub())
-+ bcp->uvhub_version = 1;
-+ else if (is_uv2_hub())
-+ bcp->uvhub_version = 2;
-+ else {
-+ printk(KERN_EMERG "uvhub version not 1 or 2\n");
-+ return 1;
-+ }
- bcp->uvhub_master = *hmasterp;
- bcp->uvhub_cpu = uv_cpu_hub_info(cpu)->blade_processor_id;
- if (bcp->uvhub_cpu >= MAX_CPUS_PER_UVHUB) {
-@@ -1867,7 +1908,8 @@ static int __init uv_bau_init(void)
- val = 1L << 63;
- write_gmmr_activation(pnode, val);
- mmr = 1; /* should be 1 to broadcast to both sockets */
-- write_mmr_data_broadcast(pnode, mmr);
-+ if (!is_uv1_hub())
-+ write_mmr_data_broadcast(pnode, mmr);
- }
- }
-
---
-1.7.9.5
-
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
deleted file mode 100644
index 02118c9..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0114-x86-UV2-Fix-BAU-destination-timeout-initialization.patch
+++ /dev/null
@@ -1,66 +0,0 @@
-From dcca45052472bcbd331d0451777cb947588e1dd5 Mon Sep 17 00:00:00 2001
-From: Cliff Wickman <cpw at sgi.com>
-Date: Mon, 16 Jan 2012 15:18:48 -0600
-Subject: [PATCH 114/129] x86/UV2: Fix BAU destination timeout initialization
-
-commit d059f9fa84a30e04279c6ff615e9e2cf3b260191 upstream.
-
-Move the call to enable_timeouts() forward so that
-BAU_MISC_CONTROL is initialized before using it in
-calculate_destination_timeout().
-
-Fix the calculation of a BAU destination timeout
-for UV2 (in calculate_destination_timeout()).
-
-Signed-off-by: Cliff Wickman <cpw at sgi.com>
-Link: http://lkml.kernel.org/r/20120116211848.GB5767@sgi.com
-Signed-off-by: Ingo Molnar <mingo at elte.hu>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- arch/x86/platform/uv/tlb_uv.c | 13 +++++++------
- 1 file changed, 7 insertions(+), 6 deletions(-)
-
-diff --git a/arch/x86/platform/uv/tlb_uv.c b/arch/x86/platform/uv/tlb_uv.c
-index 1341a2e..c425ff1 100644
---- a/arch/x86/platform/uv/tlb_uv.c
-+++ b/arch/x86/platform/uv/tlb_uv.c
-@@ -1617,14 +1617,14 @@ static int calculate_destination_timeout(void)
- ts_ns = base * mult1 * mult2;
- ret = ts_ns / 1000;
- } else {
-- /* 4 bits 0/1 for 10/80us, 3 bits of multiplier */
-- mmr_image = uv_read_local_mmr(UVH_AGING_PRESCALE_SEL);
-+ /* 4 bits 0/1 for 10/80us base, 3 bits of multiplier */
-+ mmr_image = uv_read_local_mmr(UVH_LB_BAU_MISC_CONTROL);
- mmr_image = (mmr_image & UV_SA_MASK) >> UV_SA_SHFT;
- if (mmr_image & (1L << UV2_ACK_UNITS_SHFT))
-- mult1 = 80;
-+ base = 80;
- else
-- mult1 = 10;
-- base = mmr_image & UV2_ACK_MASK;
-+ base = 10;
-+ mult1 = mmr_image & UV2_ACK_MASK;
- ret = mult1 * base;
- }
- return ret;
-@@ -1886,6 +1886,8 @@ static int __init uv_bau_init(void)
- uv_base_pnode = uv_blade_to_pnode(uvhub);
- }
-
-+ enable_timeouts();
-+
- if (init_per_cpu(nuvhubs, uv_base_pnode)) {
- nobau = 1;
- return 0;
-@@ -1896,7 +1898,6 @@ static int __init uv_bau_init(void)
- if (uv_blade_nr_possible_cpus(uvhub))
- init_uvhub(uvhub, vector, uv_base_pnode);
-
-- enable_timeouts();
- alloc_intr_gate(vector, uv_bau_message_intr1);
-
- for_each_possible_blade(uvhub) {
---
-1.7.9.5
-
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
deleted file mode 100644
index 11d610c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0115-x86-UV2-Work-around-BAU-bug.patch
+++ /dev/null
@@ -1,570 +0,0 @@
-From 3ebb4a034dca1cd312f42c9ff1ff47c873f211b6 Mon Sep 17 00:00:00 2001
-From: Cliff Wickman <cpw at sgi.com>
-Date: Mon, 16 Jan 2012 15:19:47 -0600
-Subject: [PATCH 115/129] x86/UV2: Work around BAU bug
-
-commit c5d35d399e685acccc85a675e8765c26b2a9813a upstream.
-
-This patch implements a workaround for a UV2 hardware bug.
-The bug is a non-atomic update of a memory-mapped register. When
-hardware message delivery and software message acknowledge occur
-simultaneously the pending message acknowledge for the arriving
-message may be lost. This causes the sender's message status to
-stay busy.
-
-Part of the workaround is to not acknowledge a completed message
-until it is verified that no other message is actually using the
-resource that is mistakenly recorded in the completed message.
-
-Part of the workaround is to test for long elapsed time in such
-a busy condition, then handle it by using a spare sending
-descriptor. The stay-busy condition is eventually timed out by
-hardware, and then the original sending descriptor can be
-re-used. Most of that logic change is in keeping track of the
-current descriptor and the state of the spares.
-
-The occurrences of the workaround are added to the BAU
-statistics.
-
-Signed-off-by: Cliff Wickman <cpw at sgi.com>
-Link: http://lkml.kernel.org/r/20120116211947.GC5767@sgi.com
-Signed-off-by: Ingo Molnar <mingo at elte.hu>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- arch/x86/include/asm/uv/uv_bau.h | 13 +-
- arch/x86/platform/uv/tlb_uv.c | 274 +++++++++++++++++++++++++++++++++-----
- 2 files changed, 254 insertions(+), 33 deletions(-)
-
-diff --git a/arch/x86/include/asm/uv/uv_bau.h b/arch/x86/include/asm/uv/uv_bau.h
-index 4a46b27..1b82f7e 100644
---- a/arch/x86/include/asm/uv/uv_bau.h
-+++ b/arch/x86/include/asm/uv/uv_bau.h
-@@ -167,6 +167,7 @@
- #define FLUSH_RETRY_TIMEOUT 2
- #define FLUSH_GIVEUP 3
- #define FLUSH_COMPLETE 4
-+#define FLUSH_RETRY_BUSYBUG 5
-
- /*
- * tuning the action when the numalink network is extremely delayed
-@@ -463,7 +464,6 @@ struct bau_pq_entry {
- struct msg_desc {
- struct bau_pq_entry *msg;
- int msg_slot;
-- int swack_slot;
- struct bau_pq_entry *queue_first;
- struct bau_pq_entry *queue_last;
- };
-@@ -517,6 +517,9 @@ struct ptc_stats {
- unsigned long s_retry_messages; /* retry broadcasts */
- unsigned long s_bau_reenabled; /* for bau enable/disable */
- unsigned long s_bau_disabled; /* for bau enable/disable */
-+ unsigned long s_uv2_wars; /* uv2 workaround, perm. busy */
-+ unsigned long s_uv2_wars_hw; /* uv2 workaround, hiwater */
-+ unsigned long s_uv2_war_waits; /* uv2 workaround, long waits */
- /* destination statistics */
- unsigned long d_alltlb; /* times all tlb's on this
- cpu were flushed */
-@@ -593,6 +596,8 @@ struct bau_control {
- short cpus_in_socket;
- short cpus_in_uvhub;
- short partition_base_pnode;
-+ short using_desc; /* an index, like uvhub_cpu */
-+ unsigned int inuse_map;
- unsigned short message_number;
- unsigned short uvhub_quiesce;
- short socket_acknowledge_count[DEST_Q_SIZE];
-@@ -610,6 +615,7 @@ struct bau_control {
- int cong_response_us;
- int cong_reps;
- int cong_period;
-+ unsigned long clocks_per_100_usec;
- cycles_t period_time;
- long period_requests;
- struct hub_and_pnode *thp;
-@@ -670,6 +676,11 @@ static inline void write_mmr_sw_ack(unsigned long mr)
- uv_write_local_mmr(UVH_LB_BAU_INTD_SOFTWARE_ACKNOWLEDGE_ALIAS, mr);
- }
-
-+static inline void write_gmmr_sw_ack(int pnode, unsigned long mr)
-+{
-+ write_gmmr(pnode, UVH_LB_BAU_INTD_SOFTWARE_ACKNOWLEDGE_ALIAS, mr);
-+}
-+
- static inline unsigned long read_mmr_sw_ack(void)
- {
- return read_lmmr(UVH_LB_BAU_INTD_SOFTWARE_ACKNOWLEDGE);
-diff --git a/arch/x86/platform/uv/tlb_uv.c b/arch/x86/platform/uv/tlb_uv.c
-index c425ff1..9010ca7 100644
---- a/arch/x86/platform/uv/tlb_uv.c
-+++ b/arch/x86/platform/uv/tlb_uv.c
-@@ -157,13 +157,14 @@ static int __init uvhub_to_first_apicid(int uvhub)
- * clear of the Timeout bit (as well) will free the resource. No reply will
- * be sent (the hardware will only do one reply per message).
- */
--static void reply_to_message(struct msg_desc *mdp, struct bau_control *bcp)
-+static void reply_to_message(struct msg_desc *mdp, struct bau_control *bcp,
-+ int do_acknowledge)
- {
- unsigned long dw;
- struct bau_pq_entry *msg;
-
- msg = mdp->msg;
-- if (!msg->canceled) {
-+ if (!msg->canceled && do_acknowledge) {
- dw = (msg->swack_vec << UV_SW_ACK_NPENDING) | msg->swack_vec;
- write_mmr_sw_ack(dw);
- }
-@@ -212,8 +213,8 @@ static void bau_process_retry_msg(struct msg_desc *mdp,
- if (mmr & (msg_res << UV_SW_ACK_NPENDING)) {
- unsigned long mr;
- /*
-- * is the resource timed out?
-- * make everyone ignore the cancelled message.
-+ * Is the resource timed out?
-+ * Make everyone ignore the cancelled message.
- */
- msg2->canceled = 1;
- stat->d_canceled++;
-@@ -231,8 +232,8 @@ static void bau_process_retry_msg(struct msg_desc *mdp,
- * Do all the things a cpu should do for a TLB shootdown message.
- * Other cpu's may come here at the same time for this message.
- */
--static void bau_process_message(struct msg_desc *mdp,
-- struct bau_control *bcp)
-+static void bau_process_message(struct msg_desc *mdp, struct bau_control *bcp,
-+ int do_acknowledge)
- {
- short socket_ack_count = 0;
- short *sp;
-@@ -284,8 +285,9 @@ static void bau_process_message(struct msg_desc *mdp,
- if (msg_ack_count == bcp->cpus_in_uvhub) {
- /*
- * All cpus in uvhub saw it; reply
-+ * (unless we are in the UV2 workaround)
- */
-- reply_to_message(mdp, bcp);
-+ reply_to_message(mdp, bcp, do_acknowledge);
- }
- }
-
-@@ -491,27 +493,138 @@ static int uv1_wait_completion(struct bau_desc *bau_desc,
- /*
- * UV2 has an extra bit of status in the ACTIVATION_STATUS_2 register.
- */
--static unsigned long uv2_read_status(unsigned long offset, int rshft, int cpu)
-+static unsigned long uv2_read_status(unsigned long offset, int rshft, int desc)
- {
- unsigned long descriptor_status;
- unsigned long descriptor_status2;
-
- descriptor_status = ((read_lmmr(offset) >> rshft) & UV_ACT_STATUS_MASK);
-- descriptor_status2 = (read_mmr_uv2_status() >> cpu) & 0x1UL;
-+ descriptor_status2 = (read_mmr_uv2_status() >> desc) & 0x1UL;
- descriptor_status = (descriptor_status << 1) | descriptor_status2;
- return descriptor_status;
- }
-
-+/*
-+ * Return whether the status of the descriptor that is normally used for this
-+ * cpu (the one indexed by its hub-relative cpu number) is busy.
-+ * The status of the original 32 descriptors is always reflected in the 64
-+ * bits of UVH_LB_BAU_SB_ACTIVATION_STATUS_0.
-+ * The bit provided by the activation_status_2 register is irrelevant to
-+ * the status if it is only being tested for busy or not busy.
-+ */
-+int normal_busy(struct bau_control *bcp)
-+{
-+ int cpu = bcp->uvhub_cpu;
-+ int mmr_offset;
-+ int right_shift;
-+
-+ mmr_offset = UVH_LB_BAU_SB_ACTIVATION_STATUS_0;
-+ right_shift = cpu * UV_ACT_STATUS_SIZE;
-+ return (((((read_lmmr(mmr_offset) >> right_shift) &
-+ UV_ACT_STATUS_MASK)) << 1) == UV2H_DESC_BUSY);
-+}
-+
-+/*
-+ * Entered when a bau descriptor has gone into a permanent busy wait because
-+ * of a hardware bug.
-+ * Workaround the bug.
-+ */
-+int handle_uv2_busy(struct bau_control *bcp)
-+{
-+ int busy_one = bcp->using_desc;
-+ int normal = bcp->uvhub_cpu;
-+ int selected = -1;
-+ int i;
-+ unsigned long descriptor_status;
-+ unsigned long status;
-+ int mmr_offset;
-+ struct bau_desc *bau_desc_old;
-+ struct bau_desc *bau_desc_new;
-+ struct bau_control *hmaster = bcp->uvhub_master;
-+ struct ptc_stats *stat = bcp->statp;
-+ cycles_t ttm;
-+
-+ stat->s_uv2_wars++;
-+ spin_lock(&hmaster->uvhub_lock);
-+ /* try for the original first */
-+ if (busy_one != normal) {
-+ if (!normal_busy(bcp))
-+ selected = normal;
-+ }
-+ if (selected < 0) {
-+ /* can't use the normal, select an alternate */
-+ mmr_offset = UVH_LB_BAU_SB_ACTIVATION_STATUS_1;
-+ descriptor_status = read_lmmr(mmr_offset);
-+
-+ /* scan available descriptors 32-63 */
-+ for (i = 0; i < UV_CPUS_PER_AS; i++) {
-+ if ((hmaster->inuse_map & (1 << i)) == 0) {
-+ status = ((descriptor_status >>
-+ (i * UV_ACT_STATUS_SIZE)) &
-+ UV_ACT_STATUS_MASK) << 1;
-+ if (status != UV2H_DESC_BUSY) {
-+ selected = i + UV_CPUS_PER_AS;
-+ break;
-+ }
-+ }
-+ }
-+ }
-+
-+ if (busy_one != normal)
-+ /* mark the busy alternate as not in-use */
-+ hmaster->inuse_map &= ~(1 << (busy_one - UV_CPUS_PER_AS));
-+
-+ if (selected >= 0) {
-+ /* switch to the selected descriptor */
-+ if (selected != normal) {
-+ /* set the selected alternate as in-use */
-+ hmaster->inuse_map |=
-+ (1 << (selected - UV_CPUS_PER_AS));
-+ if (selected > stat->s_uv2_wars_hw)
-+ stat->s_uv2_wars_hw = selected;
-+ }
-+ bau_desc_old = bcp->descriptor_base;
-+ bau_desc_old += (ITEMS_PER_DESC * busy_one);
-+ bcp->using_desc = selected;
-+ bau_desc_new = bcp->descriptor_base;
-+ bau_desc_new += (ITEMS_PER_DESC * selected);
-+ *bau_desc_new = *bau_desc_old;
-+ } else {
-+ /*
-+ * All are busy. Wait for the normal one for this cpu to
-+ * free up.
-+ */
-+ stat->s_uv2_war_waits++;
-+ spin_unlock(&hmaster->uvhub_lock);
-+ ttm = get_cycles();
-+ do {
-+ cpu_relax();
-+ } while (normal_busy(bcp));
-+ spin_lock(&hmaster->uvhub_lock);
-+ /* switch to the original descriptor */
-+ bcp->using_desc = normal;
-+ bau_desc_old = bcp->descriptor_base;
-+ bau_desc_old += (ITEMS_PER_DESC * bcp->using_desc);
-+ bcp->using_desc = (ITEMS_PER_DESC * normal);
-+ bau_desc_new = bcp->descriptor_base;
-+ bau_desc_new += (ITEMS_PER_DESC * normal);
-+ *bau_desc_new = *bau_desc_old; /* copy the entire descriptor */
-+ }
-+ spin_unlock(&hmaster->uvhub_lock);
-+ return FLUSH_RETRY_BUSYBUG;
-+}
-+
- static int uv2_wait_completion(struct bau_desc *bau_desc,
- unsigned long mmr_offset, int right_shift,
- struct bau_control *bcp, long try)
- {
- unsigned long descriptor_stat;
- cycles_t ttm;
-- int cpu = bcp->uvhub_cpu;
-+ int desc = bcp->using_desc;
-+ long busy_reps = 0;
- struct ptc_stats *stat = bcp->statp;
-
-- descriptor_stat = uv2_read_status(mmr_offset, right_shift, cpu);
-+ descriptor_stat = uv2_read_status(mmr_offset, right_shift, desc);
-
- /* spin on the status MMR, waiting for it to go idle */
- while (descriptor_stat != UV2H_DESC_IDLE) {
-@@ -542,12 +655,23 @@ static int uv2_wait_completion(struct bau_desc *bau_desc,
- bcp->conseccompletes = 0;
- return FLUSH_RETRY_TIMEOUT;
- } else {
-+ busy_reps++;
-+ if (busy_reps > 1000000) {
-+ /* not to hammer on the clock */
-+ busy_reps = 0;
-+ ttm = get_cycles();
-+ if ((ttm - bcp->send_message) >
-+ (bcp->clocks_per_100_usec)) {
-+ return handle_uv2_busy(bcp);
-+ }
-+ }
- /*
- * descriptor_stat is still BUSY
- */
- cpu_relax();
- }
-- descriptor_stat = uv2_read_status(mmr_offset, right_shift, cpu);
-+ descriptor_stat = uv2_read_status(mmr_offset, right_shift,
-+ desc);
- }
- bcp->conseccompletes++;
- return FLUSH_COMPLETE;
-@@ -563,14 +687,14 @@ static int wait_completion(struct bau_desc *bau_desc,
- {
- int right_shift;
- unsigned long mmr_offset;
-- int cpu = bcp->uvhub_cpu;
-+ int desc = bcp->using_desc;
-
-- if (cpu < UV_CPUS_PER_AS) {
-+ if (desc < UV_CPUS_PER_AS) {
- mmr_offset = UVH_LB_BAU_SB_ACTIVATION_STATUS_0;
-- right_shift = cpu * UV_ACT_STATUS_SIZE;
-+ right_shift = desc * UV_ACT_STATUS_SIZE;
- } else {
- mmr_offset = UVH_LB_BAU_SB_ACTIVATION_STATUS_1;
-- right_shift = ((cpu - UV_CPUS_PER_AS) * UV_ACT_STATUS_SIZE);
-+ right_shift = ((desc - UV_CPUS_PER_AS) * UV_ACT_STATUS_SIZE);
- }
-
- if (bcp->uvhub_version == 1)
-@@ -752,8 +876,7 @@ static void handle_cmplt(int completion_status, struct bau_desc *bau_desc,
- * Returns 1 if it gives up entirely and the original cpu mask is to be
- * returned to the kernel.
- */
--int uv_flush_send_and_wait(struct bau_desc *bau_desc,
-- struct cpumask *flush_mask, struct bau_control *bcp)
-+int uv_flush_send_and_wait(struct cpumask *flush_mask, struct bau_control *bcp)
- {
- int seq_number = 0;
- int completion_stat = 0;
-@@ -766,20 +889,24 @@ int uv_flush_send_and_wait(struct bau_desc *bau_desc,
- struct bau_control *hmaster = bcp->uvhub_master;
- struct uv1_bau_msg_header *uv1_hdr = NULL;
- struct uv2_bau_msg_header *uv2_hdr = NULL;
-+ struct bau_desc *bau_desc;
-
-- if (bcp->uvhub_version == 1) {
-- uv1 = 1;
-+ if (bcp->uvhub_version == 1)
- uv1_throttle(hmaster, stat);
-- uv1_hdr = &bau_desc->header.uv1_hdr;
-- } else
-- uv2_hdr = &bau_desc->header.uv2_hdr;
-
- while (hmaster->uvhub_quiesce)
- cpu_relax();
-
- time1 = get_cycles();
- do {
-- if (try == 0) {
-+ bau_desc = bcp->descriptor_base;
-+ bau_desc += (ITEMS_PER_DESC * bcp->using_desc);
-+ if (bcp->uvhub_version == 1) {
-+ uv1 = 1;
-+ uv1_hdr = &bau_desc->header.uv1_hdr;
-+ } else
-+ uv2_hdr = &bau_desc->header.uv2_hdr;
-+ if ((try == 0) || (completion_stat == FLUSH_RETRY_BUSYBUG)) {
- if (uv1)
- uv1_hdr->msg_type = MSG_REGULAR;
- else
-@@ -797,13 +924,14 @@ int uv_flush_send_and_wait(struct bau_desc *bau_desc,
- uv1_hdr->sequence = seq_number;
- else
- uv2_hdr->sequence = seq_number;
-- index = (1UL << AS_PUSH_SHIFT) | bcp->uvhub_cpu;
-+ index = (1UL << AS_PUSH_SHIFT) | bcp->using_desc;
- bcp->send_message = get_cycles();
-
- write_mmr_activation(index);
-
- try++;
- completion_stat = wait_completion(bau_desc, bcp, try);
-+ /* UV2: wait_completion() may change the bcp->using_desc */
-
- handle_cmplt(completion_stat, bau_desc, bcp, hmaster, stat);
-
-@@ -814,6 +942,7 @@ int uv_flush_send_and_wait(struct bau_desc *bau_desc,
- }
- cpu_relax();
- } while ((completion_stat == FLUSH_RETRY_PLUGGED) ||
-+ (completion_stat == FLUSH_RETRY_BUSYBUG) ||
- (completion_stat == FLUSH_RETRY_TIMEOUT));
-
- time2 = get_cycles();
-@@ -828,6 +957,7 @@ int uv_flush_send_and_wait(struct bau_desc *bau_desc,
- record_send_stats(time1, time2, bcp, stat, completion_stat, try);
-
- if (completion_stat == FLUSH_GIVEUP)
-+ /* FLUSH_GIVEUP will fall back to using IPI's for tlb flush */
- return 1;
- return 0;
- }
-@@ -983,7 +1113,7 @@ const struct cpumask *uv_flush_tlb_others(const struct cpumask *cpumask,
- stat->s_ntargself++;
-
- bau_desc = bcp->descriptor_base;
-- bau_desc += (ITEMS_PER_DESC * bcp->uvhub_cpu);
-+ bau_desc += (ITEMS_PER_DESC * bcp->using_desc);
- bau_uvhubs_clear(&bau_desc->distribution, UV_DISTRIBUTION_SIZE);
- if (set_distrib_bits(flush_mask, bcp, bau_desc, &locals, &remotes))
- return NULL;
-@@ -996,13 +1126,86 @@ const struct cpumask *uv_flush_tlb_others(const struct cpumask *cpumask,
- * uv_flush_send_and_wait returns 0 if all cpu's were messaged,
- * or 1 if it gave up and the original cpumask should be returned.
- */
-- if (!uv_flush_send_and_wait(bau_desc, flush_mask, bcp))
-+ if (!uv_flush_send_and_wait(flush_mask, bcp))
- return NULL;
- else
- return cpumask;
- }
-
- /*
-+ * Search the message queue for any 'other' message with the same software
-+ * acknowledge resource bit vector.
-+ */
-+struct bau_pq_entry *find_another_by_swack(struct bau_pq_entry *msg,
-+ struct bau_control *bcp, unsigned char swack_vec)
-+{
-+ struct bau_pq_entry *msg_next = msg + 1;
-+
-+ if (msg_next > bcp->queue_last)
-+ msg_next = bcp->queue_first;
-+ while ((msg_next->swack_vec != 0) && (msg_next != msg)) {
-+ if (msg_next->swack_vec == swack_vec)
-+ return msg_next;
-+ msg_next++;
-+ if (msg_next > bcp->queue_last)
-+ msg_next = bcp->queue_first;
-+ }
-+ return NULL;
-+}
-+
-+/*
-+ * UV2 needs to work around a bug in which an arriving message has not
-+ * set a bit in the UVH_LB_BAU_INTD_SOFTWARE_ACKNOWLEDGE register.
-+ * Such a message must be ignored.
-+ */
-+void process_uv2_message(struct msg_desc *mdp, struct bau_control *bcp)
-+{
-+ unsigned long mmr_image;
-+ unsigned char swack_vec;
-+ struct bau_pq_entry *msg = mdp->msg;
-+ struct bau_pq_entry *other_msg;
-+
-+ mmr_image = read_mmr_sw_ack();
-+ swack_vec = msg->swack_vec;
-+
-+ if ((swack_vec & mmr_image) == 0) {
-+ /*
-+ * This message was assigned a swack resource, but no
-+ * reserved acknowlegment is pending.
-+ * The bug has prevented this message from setting the MMR.
-+ * And no other message has used the same sw_ack resource.
-+ * Do the requested shootdown but do not reply to the msg.
-+ * (the 0 means make no acknowledge)
-+ */
-+ bau_process_message(mdp, bcp, 0);
-+ return;
-+ }
-+
-+ /*
-+ * Some message has set the MMR 'pending' bit; it might have been
-+ * another message. Look for that message.
-+ */
-+ other_msg = find_another_by_swack(msg, bcp, msg->swack_vec);
-+ if (other_msg) {
-+ /* There is another. Do not ack the current one. */
-+ bau_process_message(mdp, bcp, 0);
-+ /*
-+ * Let the natural processing of that message acknowledge
-+ * it. Don't get the processing of sw_ack's out of order.
-+ */
-+ return;
-+ }
-+
-+ /*
-+ * There is no other message using this sw_ack, so it is safe to
-+ * acknowledge it.
-+ */
-+ bau_process_message(mdp, bcp, 1);
-+
-+ return;
-+}
-+
-+/*
- * The BAU message interrupt comes here. (registered by set_intr_gate)
- * See entry_64.S
- *
-@@ -1038,9 +1241,11 @@ void uv_bau_message_interrupt(struct pt_regs *regs)
- count++;
-
- msgdesc.msg_slot = msg - msgdesc.queue_first;
-- msgdesc.swack_slot = ffs(msg->swack_vec) - 1;
- msgdesc.msg = msg;
-- bau_process_message(&msgdesc, bcp);
-+ if (bcp->uvhub_version == 2)
-+ process_uv2_message(&msgdesc, bcp);
-+ else
-+ bau_process_message(&msgdesc, bcp, 1);
-
- msg++;
- if (msg > msgdesc.queue_last)
-@@ -1158,7 +1363,7 @@ static int ptc_seq_show(struct seq_file *file, void *data)
- seq_printf(file,
- "all one mult none retry canc nocan reset rcan ");
- seq_printf(file,
-- "disable enable\n");
-+ "disable enable wars warshw warwaits\n");
- }
- if (cpu < num_possible_cpus() && cpu_online(cpu)) {
- stat = &per_cpu(ptcstats, cpu);
-@@ -1189,8 +1394,10 @@ static int ptc_seq_show(struct seq_file *file, void *data)
- stat->d_nomsg, stat->d_retries, stat->d_canceled,
- stat->d_nocanceled, stat->d_resets,
- stat->d_rcanceled);
-- seq_printf(file, "%ld %ld\n",
-- stat->s_bau_disabled, stat->s_bau_reenabled);
-+ seq_printf(file, "%ld %ld %ld %ld %ld\n",
-+ stat->s_bau_disabled, stat->s_bau_reenabled,
-+ stat->s_uv2_wars, stat->s_uv2_wars_hw,
-+ stat->s_uv2_war_waits);
- }
- return 0;
- }
-@@ -1564,6 +1771,7 @@ static void pq_init(int node, int pnode)
- write_mmr_payload_first(pnode, pn_first);
- write_mmr_payload_tail(pnode, first);
- write_mmr_payload_last(pnode, last);
-+ write_gmmr_sw_ack(pnode, 0xffffUL);
-
- /* in effect, all msg_type's are set to MSG_NOOP */
- memset(pqp, 0, sizeof(struct bau_pq_entry) * DEST_Q_SIZE);
-@@ -1651,6 +1859,7 @@ static void __init init_per_cpu_tunables(void)
- bcp->cong_response_us = congested_respns_us;
- bcp->cong_reps = congested_reps;
- bcp->cong_period = congested_period;
-+ bcp->clocks_per_100_usec = usec_2_cycles(100);
- }
- }
-
-@@ -1771,6 +1980,7 @@ static int scan_sock(struct socket_desc *sdp, struct uvhub_desc *bdp,
- }
- bcp->uvhub_master = *hmasterp;
- bcp->uvhub_cpu = uv_cpu_hub_info(cpu)->blade_processor_id;
-+ bcp->using_desc = bcp->uvhub_cpu;
- if (bcp->uvhub_cpu >= MAX_CPUS_PER_UVHUB) {
- printk(KERN_EMERG "%d cpus per uvhub invalid\n",
- bcp->uvhub_cpu);
---
-1.7.9.5
-
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
deleted file mode 100644
index 33c2028..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0116-ath9k_hw-fix-interpretation-of-the-rx-KeyMiss-flag.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From 36fed113f3b66718282151fa962f644e793520f5 Mon Sep 17 00:00:00 2001
-From: Felix Fietkau <nbd at openwrt.org>
-Date: Sat, 14 Jan 2012 15:08:34 +0100
-Subject: [PATCH 116/129] ath9k_hw: fix interpretation of the rx KeyMiss flag
-
-commit 7a532fe7131216a02c81a6c1b1f8632da1195a58 upstream.
-
-Documentation states that the KeyMiss flag is only valid if RxFrameOK is
-unset, however empirical evidence has shown that this is false.
-When KeyMiss is set (and RxFrameOK is 1), the hardware passes a valid frame
-which has not been decrypted. The driver then falsely marks the frame
-as decrypted, and when using CCMP this corrupts the rx CCMP PN, leading
-to connection hangs.
-
-Signed-off-by: Felix Fietkau <nbd at openwrt.org>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/net/wireless/ath/ath9k/ar9003_mac.c | 5 +++--
- drivers/net/wireless/ath/ath9k/mac.c | 5 +++--
- 2 files changed, 6 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/net/wireless/ath/ath9k/ar9003_mac.c b/drivers/net/wireless/ath/ath9k/ar9003_mac.c
-index ccde784..f5ae3c6 100644
---- a/drivers/net/wireless/ath/ath9k/ar9003_mac.c
-+++ b/drivers/net/wireless/ath/ath9k/ar9003_mac.c
-@@ -526,10 +526,11 @@ int ath9k_hw_process_rxdesc_edma(struct ath_hw *ah, struct ath_rx_status *rxs,
- rxs->rs_status |= ATH9K_RXERR_DECRYPT;
- else if (rxsp->status11 & AR_MichaelErr)
- rxs->rs_status |= ATH9K_RXERR_MIC;
-- if (rxsp->status11 & AR_KeyMiss)
-- rxs->rs_status |= ATH9K_RXERR_KEYMISS;
- }
-
-+ if (rxsp->status11 & AR_KeyMiss)
-+ rxs->rs_status |= ATH9K_RXERR_KEYMISS;
-+
- return 0;
- }
- EXPORT_SYMBOL(ath9k_hw_process_rxdesc_edma);
-diff --git a/drivers/net/wireless/ath/ath9k/mac.c b/drivers/net/wireless/ath/ath9k/mac.c
-index ecdb6fd..bbcb777 100644
---- a/drivers/net/wireless/ath/ath9k/mac.c
-+++ b/drivers/net/wireless/ath/ath9k/mac.c
-@@ -621,10 +621,11 @@ int ath9k_hw_rxprocdesc(struct ath_hw *ah, struct ath_desc *ds,
- rs->rs_status |= ATH9K_RXERR_DECRYPT;
- else if (ads.ds_rxstatus8 & AR_MichaelErr)
- rs->rs_status |= ATH9K_RXERR_MIC;
-- if (ads.ds_rxstatus8 & AR_KeyMiss)
-- rs->rs_status |= ATH9K_RXERR_KEYMISS;
- }
-
-+ if (ads.ds_rxstatus8 & AR_KeyMiss)
-+ rs->rs_status |= ATH9K_RXERR_KEYMISS;
-+
- return 0;
- }
- EXPORT_SYMBOL(ath9k_hw_rxprocdesc);
---
-1.7.9.5
-
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
deleted file mode 100644
index 9fc97d7..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0117-rt2800pci-fix-spurious-interrupts-generation.patch
+++ /dev/null
@@ -1,86 +0,0 @@
-From a84e0b6f2dfb09db9a5cb66bb913f619d8973a62 Mon Sep 17 00:00:00 2001
-From: Stanislaw Gruszka <sgruszka at redhat.com>
-Date: Fri, 13 Jan 2012 12:59:32 +0100
-Subject: [PATCH 117/129] rt2800pci: fix spurious interrupts generation
-
-commit dfd00c4c8f3dfa1fd7cec45f83d98b2a49743dcd upstream.
-
-Same devices can generate interrupt without properly setting bit in
-INT_SOURCE_CSR register (spurious interrupt), what will cause IRQ line
-will be disabled by interrupts controller driver.
-
-We discovered that clearing INT_MASK_CSR stops such behaviour. We
-previously first read that register, and then clear all know interrupt
-sources bits and do not touch reserved bits. After this patch, we write
-to all register content (I believe writing to reserved bits on that
-register will not cause any problems, I tested that on my rt2800pci
-device).
-
-This fix very bad performance problem, practically making device
-unusable (since worked without interrupts), reported in:
-https://bugzilla.redhat.com/show_bug.cgi?id=658451
-
-We previously tried to workaround that issue in commit
-4ba7d9997869d25bd223dea7536fc1ce9fab3b3b "rt2800pci: handle spurious
-interrupts", but it was reverted in commit
-82e5fc2a34fa9ffea38f00c4066b7e600a0ca5e6
-as thing, that will prevent to detect real spurious interrupts.
-
-Reported-and-tested-by: Amir Hedayaty <hedayaty at gmail.com>
-Signed-off-by: Stanislaw Gruszka <sgruszka at redhat.com>
-Acked-by: Gertjan van Wingerde <gwingerde at gmail.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/net/wireless/rt2x00/rt2800pci.c | 28 ++++++++--------------------
- 1 file changed, 8 insertions(+), 20 deletions(-)
-
-diff --git a/drivers/net/wireless/rt2x00/rt2800pci.c b/drivers/net/wireless/rt2x00/rt2800pci.c
-index da48c8a..837b460 100644
---- a/drivers/net/wireless/rt2x00/rt2800pci.c
-+++ b/drivers/net/wireless/rt2x00/rt2800pci.c
-@@ -422,7 +422,6 @@ static int rt2800pci_init_queues(struct rt2x00_dev *rt2x00dev)
- static void rt2800pci_toggle_irq(struct rt2x00_dev *rt2x00dev,
- enum dev_state state)
- {
-- int mask = (state == STATE_RADIO_IRQ_ON);
- u32 reg;
- unsigned long flags;
-
-@@ -436,25 +435,14 @@ static void rt2800pci_toggle_irq(struct rt2x00_dev *rt2x00dev,
- }
-
- spin_lock_irqsave(&rt2x00dev->irqmask_lock, flags);
-- rt2x00pci_register_read(rt2x00dev, INT_MASK_CSR, ®);
-- rt2x00_set_field32(®, INT_MASK_CSR_RXDELAYINT, 0);
-- rt2x00_set_field32(®, INT_MASK_CSR_TXDELAYINT, 0);
-- rt2x00_set_field32(®, INT_MASK_CSR_RX_DONE, mask);
-- rt2x00_set_field32(®, INT_MASK_CSR_AC0_DMA_DONE, 0);
-- rt2x00_set_field32(®, INT_MASK_CSR_AC1_DMA_DONE, 0);
-- rt2x00_set_field32(®, INT_MASK_CSR_AC2_DMA_DONE, 0);
-- rt2x00_set_field32(®, INT_MASK_CSR_AC3_DMA_DONE, 0);
-- rt2x00_set_field32(®, INT_MASK_CSR_HCCA_DMA_DONE, 0);
-- rt2x00_set_field32(®, INT_MASK_CSR_MGMT_DMA_DONE, 0);
-- rt2x00_set_field32(®, INT_MASK_CSR_MCU_COMMAND, 0);
-- rt2x00_set_field32(®, INT_MASK_CSR_RXTX_COHERENT, 0);
-- rt2x00_set_field32(®, INT_MASK_CSR_TBTT, mask);
-- rt2x00_set_field32(®, INT_MASK_CSR_PRE_TBTT, mask);
-- rt2x00_set_field32(®, INT_MASK_CSR_TX_FIFO_STATUS, mask);
-- rt2x00_set_field32(®, INT_MASK_CSR_AUTO_WAKEUP, mask);
-- rt2x00_set_field32(®, INT_MASK_CSR_GPTIMER, 0);
-- rt2x00_set_field32(®, INT_MASK_CSR_RX_COHERENT, 0);
-- rt2x00_set_field32(®, INT_MASK_CSR_TX_COHERENT, 0);
-+ reg = 0;
-+ if (state == STATE_RADIO_IRQ_ON) {
-+ rt2x00_set_field32(®, INT_MASK_CSR_RX_DONE, 1);
-+ rt2x00_set_field32(®, INT_MASK_CSR_TBTT, 1);
-+ rt2x00_set_field32(®, INT_MASK_CSR_PRE_TBTT, 1);
-+ rt2x00_set_field32(®, INT_MASK_CSR_TX_FIFO_STATUS, 1);
-+ rt2x00_set_field32(®, INT_MASK_CSR_AUTO_WAKEUP, 1);
-+ }
- rt2x00pci_register_write(rt2x00dev, INT_MASK_CSR, reg);
- spin_unlock_irqrestore(&rt2x00dev->irqmask_lock, flags);
-
---
-1.7.9.5
-
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
deleted file mode 100644
index 6a0feaa..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0118-xfs-fix-endian-conversion-issue-in-discard-code.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From 1075b6106024e51af7a5108626091322d2e91710 Mon Sep 17 00:00:00 2001
-From: Dave Chinner <dchinner at redhat.com>
-Date: Wed, 18 Jan 2012 14:41:45 -0600
-Subject: [PATCH 118/129] xfs: fix endian conversion issue in discard code
-
-commit b1c770c273a4787069306fc82aab245e9ac72e9d upstream
-
-When finding the longest extent in an AG, we read the value directly
-out of the AGF buffer without endian conversion. This will give an
-incorrect length, resulting in FITRIM operations potentially not
-trimming everything that it should.
-
-Signed-off-by: Dave Chinner <dchinner at redhat.com>
-Reviewed-by: Christoph Hellwig <hch at lst.de>
-Signed-off-by: Ben Myers <bpm at sgi.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- fs/xfs/xfs_discard.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/fs/xfs/xfs_discard.c b/fs/xfs/xfs_discard.c
-index 8a24f0c..286a051 100644
---- a/fs/xfs/xfs_discard.c
-+++ b/fs/xfs/xfs_discard.c
-@@ -68,7 +68,7 @@ xfs_trim_extents(
- * Look up the longest btree in the AGF and start with it.
- */
- error = xfs_alloc_lookup_le(cur, 0,
-- XFS_BUF_TO_AGF(agbp)->agf_longest, &i);
-+ be32_to_cpu(XFS_BUF_TO_AGF(agbp)->agf_longest), &i);
- if (error)
- goto out_del_cursor;
-
-@@ -84,7 +84,7 @@ xfs_trim_extents(
- if (error)
- goto out_del_cursor;
- XFS_WANT_CORRUPTED_GOTO(i == 1, out_del_cursor);
-- ASSERT(flen <= XFS_BUF_TO_AGF(agbp)->agf_longest);
-+ ASSERT(flen <= be32_to_cpu(XFS_BUF_TO_AGF(agbp)->agf_longest));
-
- /*
- * Too small? Give up.
---
-1.7.9.5
-
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
deleted file mode 100644
index 1539167..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0119-i2c-eg20t-modified-the-setting-of-transfer-rate.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From d73358012ed5ac74a1f51fa250d221be5e3ca304 Mon Sep 17 00:00:00 2001
-From: Toshiharu Okada <toshiharu-linux at dsn.okisemi.com>
-Date: Mon, 26 Sep 2011 16:16:23 +0900
-Subject: [PATCH 119/129] i2c-eg20t: modified the setting of transfer rate.
-
-commit ff35e8b18984ad2a82cbd259fc07f0be4b34b1aa upstream.
-
-This patch modified the setting value of
-I2C Bus Transfer Rate Setting Counter regisrer.
-
-Signed-off-by: Toshiharu Okada <toshiharu-linux at dsn.okisemi.com>
-Signed-off-by: Ben Dooks <ben-linux at fluff.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/i2c/busses/i2c-eg20t.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/i2c/busses/i2c-eg20t.c b/drivers/i2c/busses/i2c-eg20t.c
-index 18936ac..730215e 100644
---- a/drivers/i2c/busses/i2c-eg20t.c
-+++ b/drivers/i2c/busses/i2c-eg20t.c
-@@ -243,7 +243,7 @@ static void pch_i2c_init(struct i2c_algo_pch_data *adap)
- if (pch_clk > PCH_MAX_CLK)
- pch_clk = 62500;
-
-- pch_i2cbc = (pch_clk + (pch_i2c_speed * 4)) / pch_i2c_speed * 8;
-+ pch_i2cbc = (pch_clk + (pch_i2c_speed * 4)) / (pch_i2c_speed * 8);
- /* Set transfer speed in I2CBC */
- iowrite32(pch_i2cbc, p + PCH_I2CBC);
-
---
-1.7.9.5
-
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
deleted file mode 100644
index 7926f22..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0120-score-fix-off-by-one-index-into-syscall-table.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 9391ba8a34c0947af9b6c756387fc8bf70959648 Mon Sep 17 00:00:00 2001
-From: Dan Rosenberg <drosenberg at vsecurity.com>
-Date: Fri, 20 Jan 2012 14:34:27 -0800
-Subject: [PATCH 120/129] score: fix off-by-one index into syscall table
-
-commit c25a785d6647984505fa165b5cd84cfc9a95970b upstream.
-
-If the provided system call number is equal to __NR_syscalls, the
-current check will pass and a function pointer just after the system
-call table may be called, since sys_call_table is an array with total
-size __NR_syscalls.
-
-Whether or not this is a security bug depends on what the compiler puts
-immediately after the system call table. It's likely that this won't do
-anything bad because there is an additional NULL check on the syscall
-entry, but if there happens to be a non-NULL value immediately after the
-system call table, this may result in local privilege escalation.
-
-Signed-off-by: Dan Rosenberg <drosenberg at vsecurity.com>
-Cc: Chen Liqin <liqin.chen at sunplusct.com>
-Cc: Lennox Wu <lennox.wu at gmail.com>
-Cc: Eugene Teo <eugeneteo at kernel.sg>
-Cc: Arnd Bergmann <arnd at arndb.de>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- arch/score/kernel/entry.S | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/arch/score/kernel/entry.S b/arch/score/kernel/entry.S
-index 577abba..83bb960 100644
---- a/arch/score/kernel/entry.S
-+++ b/arch/score/kernel/entry.S
-@@ -408,7 +408,7 @@ ENTRY(handle_sys)
- sw r9, [r0, PT_EPC]
-
- cmpi.c r27, __NR_syscalls # check syscall number
-- bgtu illegal_syscall
-+ bgeu illegal_syscall
-
- slli r8, r27, 2 # get syscall routine
- la r11, sys_call_table
---
-1.7.9.5
-
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
deleted file mode 100644
index f857485..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0121-cifs-lower-default-wsize-when-unix-extensions-are-no.patch
+++ /dev/null
@@ -1,67 +0,0 @@
-From 95b45505920a18fb705ad35e9144aaf94ea01421 Mon Sep 17 00:00:00 2001
-From: Jeff Layton <jlayton at redhat.com>
-Date: Tue, 17 Jan 2012 16:08:51 -0500
-Subject: [PATCH 121/129] cifs: lower default wsize when unix extensions are
- not used
-
-commit ce91acb3acae26f4163c5a6f1f695d1a1e8d9009 upstream.
-
-We've had some reports of servers (namely, the Solaris in-kernel CIFS
-server) that don't deal properly with writes that are "too large" even
-though they set CAP_LARGE_WRITE_ANDX. Change the default to better
-mirror what windows clients do.
-
-Cc: Pavel Shilovsky <piastry at etersoft.ru>
-Reported-by: Nick Davis <phireph0x at yahoo.com>
-Signed-off-by: Jeff Layton <jlayton at redhat.com>
-Signed-off-by: Steve French <smfrench at gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- fs/cifs/connect.c | 23 +++++++++++++++++++----
- 1 file changed, 19 insertions(+), 4 deletions(-)
-
-diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c
-index f3670cf..63e4be4 100644
---- a/fs/cifs/connect.c
-+++ b/fs/cifs/connect.c
-@@ -2914,18 +2914,33 @@ void cifs_setup_cifs_sb(struct smb_vol *pvolume_info,
- #define CIFS_DEFAULT_IOSIZE (1024 * 1024)
-
- /*
-- * Windows only supports a max of 60k reads. Default to that when posix
-- * extensions aren't in force.
-+ * Windows only supports a max of 60kb reads and 65535 byte writes. Default to
-+ * those values when posix extensions aren't in force. In actuality here, we
-+ * use 65536 to allow for a write that is a multiple of 4k. Most servers seem
-+ * to be ok with the extra byte even though Windows doesn't send writes that
-+ * are that large.
-+ *
-+ * Citation:
-+ *
-+ * http://blogs.msdn.com/b/openspecification/archive/2009/04/10/smb-maximum-transmit-buffer-size-and-performance-tuning.aspx
- */
- #define CIFS_DEFAULT_NON_POSIX_RSIZE (60 * 1024)
-+#define CIFS_DEFAULT_NON_POSIX_WSIZE (65536)
-
- static unsigned int
- cifs_negotiate_wsize(struct cifs_tcon *tcon, struct smb_vol *pvolume_info)
- {
- __u64 unix_cap = le64_to_cpu(tcon->fsUnixInfo.Capability);
- struct TCP_Server_Info *server = tcon->ses->server;
-- unsigned int wsize = pvolume_info->wsize ? pvolume_info->wsize :
-- CIFS_DEFAULT_IOSIZE;
-+ unsigned int wsize;
-+
-+ /* start with specified wsize, or default */
-+ if (pvolume_info->wsize)
-+ wsize = pvolume_info->wsize;
-+ else if (tcon->unix_ext && (unix_cap & CIFS_UNIX_LARGE_WRITE_CAP))
-+ wsize = CIFS_DEFAULT_IOSIZE;
-+ else
-+ wsize = CIFS_DEFAULT_NON_POSIX_WSIZE;
-
- /* can server support 24-bit write sizes? (via UNIX extensions) */
- if (!tcon->unix_ext || !(unix_cap & CIFS_UNIX_LARGE_WRITE_CAP))
---
-1.7.9.5
-
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
deleted file mode 100644
index ff82995..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0122-kprobes-initialize-before-using-a-hlist.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From b15b8b5f7a9cfc20c2e68ba4a6a402ff44bb6c4a Mon Sep 17 00:00:00 2001
-From: Ananth N Mavinakayanahalli <ananth at in.ibm.com>
-Date: Fri, 20 Jan 2012 14:34:04 -0800
-Subject: [PATCH 122/129] kprobes: initialize before using a hlist
-
-commit d496aab567e7e52b3e974c9192a5de6e77dce32c upstream.
-
-Commit ef53d9c5e ("kprobes: improve kretprobe scalability with hashed
-locking") introduced a bug where we can potentially leak
-kretprobe_instances since we initialize a hlist head after having used
-it.
-
-Initialize the hlist head before using it.
-
-Reported by: Jim Keniston <jkenisto at us.ibm.com>
-Acked-by: Jim Keniston <jkenisto at us.ibm.com>
-Signed-off-by: Ananth N Mavinakayanahalli <ananth at in.ibm.com>
-Acked-by: Masami Hiramatsu <masami.hiramatsu.pt at hitachi.com>
-Cc: Srinivasa D S <srinivasa at in.ibm.com>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- kernel/kprobes.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/kernel/kprobes.c b/kernel/kprobes.c
-index e5d8464..52fd049 100644
---- a/kernel/kprobes.c
-+++ b/kernel/kprobes.c
-@@ -1077,6 +1077,7 @@ void __kprobes kprobe_flush_task(struct task_struct *tk)
- /* Early boot. kretprobe_table_locks not yet initialized. */
- return;
-
-+ INIT_HLIST_HEAD(&empty_rp);
- hash = hash_ptr(tk, KPROBE_HASH_BITS);
- head = &kretprobe_inst_table[hash];
- kretprobe_table_lock(hash, &flags);
-@@ -1085,7 +1086,6 @@ void __kprobes kprobe_flush_task(struct task_struct *tk)
- recycle_rp_inst(ri, &empty_rp);
- }
- kretprobe_table_unlock(hash, &flags);
-- INIT_HLIST_HEAD(&empty_rp);
- hlist_for_each_entry_safe(ri, node, tmp, &empty_rp, hlist) {
- hlist_del(&ri->hlist);
- kfree(ri);
---
-1.7.9.5
-
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
deleted file mode 100644
index 521c3d5..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0123-proc-clear_refs-do-not-clear-reserved-pages.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-From 8077f2d3611dd0c75c64f018c7e01dc2a4948a27 Mon Sep 17 00:00:00 2001
-From: Will Deacon <will.deacon at arm.com>
-Date: Fri, 20 Jan 2012 14:34:09 -0800
-Subject: [PATCH 123/129] proc: clear_refs: do not clear reserved pages
-
-commit 85e72aa5384b1a614563ad63257ded0e91d1a620 upstream.
-
-/proc/pid/clear_refs is used to clear the Referenced and YOUNG bits for
-pages and corresponding page table entries of the task with PID pid, which
-includes any special mappings inserted into the page tables in order to
-provide things like vDSOs and user helper functions.
-
-On ARM this causes a problem because the vectors page is mapped as a
-global mapping and since ec706dab ("ARM: add a vma entry for the user
-accessible vector page"), a VMA is also inserted into each task for this
-page to aid unwinding through signals and syscall restarts. Since the
-vectors page is required for handling faults, clearing the YOUNG bit (and
-subsequently writing a faulting pte) means that we lose the vectors page
-*globally* and cannot fault it back in. This results in a system deadlock
-on the next exception.
-
-To see this problem in action, just run:
-
- $ echo 1 > /proc/self/clear_refs
-
-on an ARM platform (as any user) and watch your system hang. I think this
-has been the case since 2.6.37
-
-This patch avoids clearing the aforementioned bits for reserved pages,
-therefore leaving the vectors page intact on ARM. Since reserved pages
-are not candidates for swap, this change should not have any impact on the
-usefulness of clear_refs.
-
-Signed-off-by: Will Deacon <will.deacon at arm.com>
-Reported-by: Moussa Ba <moussaba at micron.com>
-Acked-by: Hugh Dickins <hughd at google.com>
-Cc: David Rientjes <rientjes at google.com>
-Cc: Russell King <rmk at arm.linux.org.uk>
-Acked-by: Nicolas Pitre <nico at linaro.org>
-Cc: Matt Mackall <mpm at selenic.com>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- fs/proc/task_mmu.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c
-index e418c5a..7dcd2a2 100644
---- a/fs/proc/task_mmu.c
-+++ b/fs/proc/task_mmu.c
-@@ -518,6 +518,9 @@ static int clear_refs_pte_range(pmd_t *pmd, unsigned long addr,
- if (!page)
- continue;
-
-+ if (PageReserved(page))
-+ continue;
-+
- /* Clear accessed and referenced bits. */
- ptep_test_and_clear_young(vma, addr, pte);
- ClearPageReferenced(page);
---
-1.7.9.5
-
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
deleted file mode 100644
index 1d4d2f8..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0124-mm-fix-NULL-ptr-dereference-in-__count_immobile_page.patch
+++ /dev/null
@@ -1,91 +0,0 @@
-From e4131b26d39c1bf1f739fd09451ade0906252661 Mon Sep 17 00:00:00 2001
-From: Michal Hocko <mhocko at suse.cz>
-Date: Fri, 20 Jan 2012 14:33:55 -0800
-Subject: [PATCH 124/129] mm: fix NULL ptr dereference in
- __count_immobile_pages
-
-commit 687875fb7de4a95223af20ee024282fa9099f860 upstream.
-
-Fix the following NULL ptr dereference caused by
-
- cat /sys/devices/system/memory/memory0/removable
-
-Pid: 13979, comm: sed Not tainted 3.0.13-0.5-default #1 IBM BladeCenter LS21 -[7971PAM]-/Server Blade
-RIP: __count_immobile_pages+0x4/0x100
-Process sed (pid: 13979, threadinfo ffff880221c36000, task ffff88022e788480)
-Call Trace:
- is_pageblock_removable_nolock+0x34/0x40
- is_mem_section_removable+0x74/0xf0
- show_mem_removable+0x41/0x70
- sysfs_read_file+0xfe/0x1c0
- vfs_read+0xc7/0x130
- sys_read+0x53/0xa0
- system_call_fastpath+0x16/0x1b
-
-We are crashing because we are trying to dereference NULL zone which
-came from pfn=0 (struct page ffffea0000000000). According to the boot
-log this page is marked reserved:
-e820 update range: 0000000000000000 - 0000000000010000 (usable) ==> (reserved)
-
-and early_node_map confirms that:
-early_node_map[3] active PFN ranges
- 1: 0x00000010 -> 0x0000009c
- 1: 0x00000100 -> 0x000bffa3
- 1: 0x00100000 -> 0x00240000
-
-The problem is that memory_present works in PAGE_SECTION_MASK aligned
-blocks so the reserved range sneaks into the the section as well. This
-also means that free_area_init_node will not take care of those reserved
-pages and they stay uninitialized.
-
-When we try to read the removable status we walk through all available
-sections and hope that the zone is valid for all pages in the section.
-But this is not true in this case as the zone and nid are not initialized.
-
-We have only one node in this particular case and it is marked as node=1
-(rather than 0) and that made the problem visible because page_to_nid will
-return 0 and there are no zones on the node.
-
-Let's check that the zone is valid and that the given pfn falls into its
-boundaries and mark the section not removable. This might cause some
-false positives, probably, but we do not have any sane way to find out
-whether the page is reserved by the platform or it is just not used for
-whatever other reasons.
-
-Signed-off-by: Michal Hocko <mhocko at suse.cz>
-Acked-by: Mel Gorman <mgorman at suse.de>
-Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu at jp.fujitsu.com>
-Cc: Andrea Arcangeli <aarcange at redhat.com>
-Cc: David Rientjes <rientjes at google.com>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- mm/page_alloc.c | 11 +++++++++++
- 1 file changed, 11 insertions(+)
-
-diff --git a/mm/page_alloc.c b/mm/page_alloc.c
-index 2b8ba3a..485be89 100644
---- a/mm/page_alloc.c
-+++ b/mm/page_alloc.c
-@@ -5608,6 +5608,17 @@ __count_immobile_pages(struct zone *zone, struct page *page, int count)
- bool is_pageblock_removable_nolock(struct page *page)
- {
- struct zone *zone = page_zone(page);
-+ unsigned long pfn = page_to_pfn(page);
-+
-+ /*
-+ * We have to be careful here because we are iterating over memory
-+ * sections which are not zone aware so we might end up outside of
-+ * the zone but still within the section.
-+ */
-+ if (!zone || zone->zone_start_pfn > pfn ||
-+ zone->zone_start_pfn + zone->spanned_pages <= pfn)
-+ return false;
-+
- return __count_immobile_pages(zone, page, 0);
- }
-
---
-1.7.9.5
-
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
deleted file mode 100644
index b0cda03..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0125-iwlagn-check-for-SMPS-mode.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From 70fd986c5b5171460831de5af79b0d62af90411f Mon Sep 17 00:00:00 2001
-From: Wey-Yi Guy <wey-yi.w.guy at intel.com>
-Date: Thu, 10 Nov 2011 06:55:04 -0800
-Subject: [PATCH 125/129] iwlagn: check for SMPS mode
-
-commit b2ccccdca46273c7b321ecf5041c362cd950da20 upstream.
-
-Check and report WARN only when its invalid
-
-Resolves:
-https://bugzilla.kernel.org/show_bug.cgi?id=42621
-https://bugzilla.redhat.com/show_bug.cgi?id=766071
-
-Signed-off-by: Wey-Yi Guy <wey-yi.w.guy at intel.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/net/wireless/iwlwifi/iwl-agn-lib.c | 1 +
- drivers/net/wireless/iwlwifi/iwl-agn-rxon.c | 3 +++
- 2 files changed, 4 insertions(+)
-
-diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-lib.c b/drivers/net/wireless/iwlwifi/iwl-agn-lib.c
-index 1a52ed2..6465983 100644
---- a/drivers/net/wireless/iwlwifi/iwl-agn-lib.c
-+++ b/drivers/net/wireless/iwlwifi/iwl-agn-lib.c
-@@ -827,6 +827,7 @@ static int iwl_get_idle_rx_chain_count(struct iwl_priv *priv, int active_cnt)
- case IEEE80211_SMPS_STATIC:
- case IEEE80211_SMPS_DYNAMIC:
- return IWL_NUM_IDLE_CHAINS_SINGLE;
-+ case IEEE80211_SMPS_AUTOMATIC:
- case IEEE80211_SMPS_OFF:
- return active_cnt;
- default:
-diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-rxon.c b/drivers/net/wireless/iwlwifi/iwl-agn-rxon.c
-index 5c7c17c..d552fa3 100644
---- a/drivers/net/wireless/iwlwifi/iwl-agn-rxon.c
-+++ b/drivers/net/wireless/iwlwifi/iwl-agn-rxon.c
-@@ -559,6 +559,9 @@ int iwlagn_mac_config(struct ieee80211_hw *hw, u32 changed)
-
- mutex_lock(&priv->shrd->mutex);
-
-+ if (test_bit(STATUS_EXIT_PENDING, &priv->shrd->status))
-+ goto out;
-+
- if (unlikely(test_bit(STATUS_SCANNING, &priv->shrd->status))) {
- IWL_DEBUG_MAC80211(priv, "leave - scanning\n");
- goto out;
---
-1.7.9.5
-
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
deleted file mode 100644
index b00ae5c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0126-iwlegacy-3945-fix-hw-passive-scan-on-radar-channels.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From 2daa9185b2ac519603743cbc902f00633947e878 Mon Sep 17 00:00:00 2001
-From: Stanislaw Gruszka <sgruszka at redhat.com>
-Date: Fri, 23 Dec 2011 08:13:50 +0100
-Subject: [PATCH 126/129] iwlegacy: 3945: fix hw passive scan on radar
- channels
-
-commit 68acc4afb040d98ddfd2cae0de09e2f4e1ee127f upstream.
-
-Patch fix firmware error on "iw dev wlan0 scan passive" for
-hardware scanning (with disable_hw_scan=0 module parameter).
-
- iwl3945 0000:03:00.0: Microcode SW error detected. Restarting 0x82000008.
- iwl3945 0000:03:00.0: Loaded firmware version: 15.32.2.9
- iwl3945 0000:03:00.0: Start IWL Error Log Dump:
- iwl3945 0000:03:00.0: Status: 0x0002A2E4, count: 1
- iwl3945 0000:03:00.0: Desc Time asrtPC blink2 ilink1 nmiPC Line
- iwl3945 0000:03:00.0: SYSASSERT (0x5) 0041263900 0x13756 0x0031C 0x00000 764
- iwl3945 0000:03:00.0: Error Reply type 0x000002FC cmd C_SCAN (0x80) seq 0x443E ser 0x00340000
- iwl3945 0000:03:00.0: Command C_SCAN failed: FW Error
- iwl3945 0000:03:00.0: Can't stop Rx DMA.
-
-We have disable ability to change passive scanning to active on
-particular channel when traffic is detected on that channel. Otherwise
-firmware will report error, when we try to do passive scan on radar
-channels.
-
-Reported-and-debugged-by: Pedro Francisco <pedrogfrancisco at gmail.com>
-Signed-off-by: Stanislaw Gruszka <sgruszka at redhat.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/net/wireless/iwlegacy/iwl3945-base.c | 9 ++++-----
- 1 file changed, 4 insertions(+), 5 deletions(-)
-
-diff --git a/drivers/net/wireless/iwlegacy/iwl3945-base.c b/drivers/net/wireless/iwlegacy/iwl3945-base.c
-index b282d86..05f2ad1 100644
---- a/drivers/net/wireless/iwlegacy/iwl3945-base.c
-+++ b/drivers/net/wireless/iwlegacy/iwl3945-base.c
-@@ -2656,14 +2656,13 @@ int iwl3945_request_scan(struct iwl_priv *priv, struct ieee80211_vif *vif)
- IWL_WARN(priv, "Invalid scan band\n");
- return -EIO;
- }
--
- /*
-- * If active scaning is requested but a certain channel
-- * is marked passive, we can do active scanning if we
-- * detect transmissions.
-+ * If active scaning is requested but a certain channel is marked
-+ * passive, we can do active scanning if we detect transmissions. For
-+ * passive only scanning disable switching to active on any channel.
- */
- scan->good_CRC_th = is_active ? IWL_GOOD_CRC_TH_DEFAULT :
-- IWL_GOOD_CRC_TH_DISABLED;
-+ IWL_GOOD_CRC_TH_NEVER;
-
- len = iwl_legacy_fill_probe_req(priv, (struct ieee80211_mgmt *)scan->data,
- vif->addr, priv->scan_request->ie,
---
-1.7.9.5
-
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
deleted file mode 100644
index dfab752..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0127-SHM_UNLOCK-fix-long-unpreemptible-section.patch
+++ /dev/null
@@ -1,186 +0,0 @@
-From e74be920e142da39a0824238a5031649fbec2890 Mon Sep 17 00:00:00 2001
-From: Hugh Dickins <hughd at google.com>
-Date: Fri, 20 Jan 2012 14:34:19 -0800
-Subject: [PATCH 127/129] SHM_UNLOCK: fix long unpreemptible section
-
-commit 85046579bde15e532983438f86b36856e358f417 upstream.
-
-scan_mapping_unevictable_pages() is used to make SysV SHM_LOCKed pages
-evictable again once the shared memory is unlocked. It does this with
-pagevec_lookup()s across the whole object (which might occupy most of
-memory), and takes 300ms to unlock 7GB here. A cond_resched() every
-PAGEVEC_SIZE pages would be good.
-
-However, KOSAKI-san points out that this is called under shmem.c's
-info->lock, and it's also under shm.c's shm_lock(), both spinlocks.
-There is no strong reason for that: we need to take these pages off the
-unevictable list soonish, but those locks are not required for it.
-
-So move the call to scan_mapping_unevictable_pages() from shmem.c's
-unlock handling up to shm.c's unlock handling. Remove the recently
-added barrier, not needed now we have spin_unlock() before the scan.
-
-Use get_file(), with subsequent fput(), to make sure we have a reference
-to mapping throughout scan_mapping_unevictable_pages(): that's something
-that was previously guaranteed by the shm_lock().
-
-Remove shmctl's lru_add_drain_all(): we don't fault in pages at SHM_LOCK
-time, and we lazily discover them to be Unevictable later, so it serves
-no purpose for SHM_LOCK; and serves no purpose for SHM_UNLOCK, since
-pages still on pagevec are not marked Unevictable.
-
-The original code avoided redundant rescans by checking VM_LOCKED flag
-at its level: now avoid them by checking shp's SHM_LOCKED.
-
-The original code called scan_mapping_unevictable_pages() on a locked
-area at shm_destroy() time: perhaps we once had accounting cross-checks
-which required that, but not now, so skip the overhead and just let
-inode eviction deal with them.
-
-Put check_move_unevictable_page() and scan_mapping_unevictable_pages()
-under CONFIG_SHMEM (with stub for the TINY case when ramfs is used),
-more as comment than to save space; comment them used for SHM_UNLOCK.
-
-Signed-off-by: Hugh Dickins <hughd at google.com>
-Reviewed-by: KOSAKI Motohiro <kosaki.motohiro at jp.fujitsu.com>
-Cc: Minchan Kim <minchan.kim at gmail.com>
-Cc: Rik van Riel <riel at redhat.com>
-Cc: Shaohua Li <shaohua.li at intel.com>
-Cc: Eric Dumazet <eric.dumazet at gmail.com>
-Cc: Johannes Weiner <hannes at cmpxchg.org>
-Cc: Michel Lespinasse <walken at google.com>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- ipc/shm.c | 37 ++++++++++++++++++++++---------------
- mm/shmem.c | 7 -------
- mm/vmscan.c | 12 +++++++++++-
- 3 files changed, 33 insertions(+), 23 deletions(-)
-
-diff --git a/ipc/shm.c b/ipc/shm.c
-index 02ecf2c..854ab58 100644
---- a/ipc/shm.c
-+++ b/ipc/shm.c
-@@ -870,9 +870,7 @@ SYSCALL_DEFINE3(shmctl, int, shmid, int, cmd, struct shmid_ds __user *, buf)
- case SHM_LOCK:
- case SHM_UNLOCK:
- {
-- struct file *uninitialized_var(shm_file);
--
-- lru_add_drain_all(); /* drain pagevecs to lru lists */
-+ struct file *shm_file;
-
- shp = shm_lock_check(ns, shmid);
- if (IS_ERR(shp)) {
-@@ -895,22 +893,31 @@ SYSCALL_DEFINE3(shmctl, int, shmid, int, cmd, struct shmid_ds __user *, buf)
- err = security_shm_shmctl(shp, cmd);
- if (err)
- goto out_unlock;
--
-- if(cmd==SHM_LOCK) {
-+
-+ shm_file = shp->shm_file;
-+ if (is_file_hugepages(shm_file))
-+ goto out_unlock;
-+
-+ if (cmd == SHM_LOCK) {
- struct user_struct *user = current_user();
-- if (!is_file_hugepages(shp->shm_file)) {
-- err = shmem_lock(shp->shm_file, 1, user);
-- if (!err && !(shp->shm_perm.mode & SHM_LOCKED)){
-- shp->shm_perm.mode |= SHM_LOCKED;
-- shp->mlock_user = user;
-- }
-+ err = shmem_lock(shm_file, 1, user);
-+ if (!err && !(shp->shm_perm.mode & SHM_LOCKED)) {
-+ shp->shm_perm.mode |= SHM_LOCKED;
-+ shp->mlock_user = user;
- }
-- } else if (!is_file_hugepages(shp->shm_file)) {
-- shmem_lock(shp->shm_file, 0, shp->mlock_user);
-- shp->shm_perm.mode &= ~SHM_LOCKED;
-- shp->mlock_user = NULL;
-+ goto out_unlock;
- }
-+
-+ /* SHM_UNLOCK */
-+ if (!(shp->shm_perm.mode & SHM_LOCKED))
-+ goto out_unlock;
-+ shmem_lock(shm_file, 0, shp->mlock_user);
-+ shp->shm_perm.mode &= ~SHM_LOCKED;
-+ shp->mlock_user = NULL;
-+ get_file(shm_file);
- shm_unlock(shp);
-+ scan_mapping_unevictable_pages(shm_file->f_mapping);
-+ fput(shm_file);
- goto out;
- }
- case IPC_RMID:
-diff --git a/mm/shmem.c b/mm/shmem.c
-index d6722506..cc6d40b2 100644
---- a/mm/shmem.c
-+++ b/mm/shmem.c
-@@ -1068,13 +1068,6 @@ int shmem_lock(struct file *file, int lock, struct user_struct *user)
- user_shm_unlock(inode->i_size, user);
- info->flags &= ~VM_LOCKED;
- mapping_clear_unevictable(file->f_mapping);
-- /*
-- * Ensure that a racing putback_lru_page() can see
-- * the pages of this mapping are evictable when we
-- * skip them due to !PageLRU during the scan.
-- */
-- smp_mb__after_clear_bit();
-- scan_mapping_unevictable_pages(file->f_mapping);
- }
- retval = 0;
-
-diff --git a/mm/vmscan.c b/mm/vmscan.c
-index f54a05b..824676a 100644
---- a/mm/vmscan.c
-+++ b/mm/vmscan.c
-@@ -3353,6 +3353,7 @@ int page_evictable(struct page *page, struct vm_area_struct *vma)
- return 1;
- }
-
-+#ifdef CONFIG_SHMEM
- /**
- * check_move_unevictable_page - check page for evictability and move to appropriate zone lru list
- * @page: page to check evictability and move to appropriate lru list
-@@ -3363,6 +3364,8 @@ int page_evictable(struct page *page, struct vm_area_struct *vma)
- *
- * Restrictions: zone->lru_lock must be held, page must be on LRU and must
- * have PageUnevictable set.
-+ *
-+ * This function is only used for SysV IPC SHM_UNLOCK.
- */
- static void check_move_unevictable_page(struct page *page, struct zone *zone)
- {
-@@ -3396,6 +3399,8 @@ retry:
- *
- * Scan all pages in mapping. Check unevictable pages for
- * evictability and move them to the appropriate zone lru list.
-+ *
-+ * This function is only used for SysV IPC SHM_UNLOCK.
- */
- void scan_mapping_unevictable_pages(struct address_space *mapping)
- {
-@@ -3441,9 +3446,14 @@ void scan_mapping_unevictable_pages(struct address_space *mapping)
- pagevec_release(&pvec);
-
- count_vm_events(UNEVICTABLE_PGSCANNED, pg_scanned);
-+ cond_resched();
- }
--
- }
-+#else
-+void scan_mapping_unevictable_pages(struct address_space *mapping)
-+{
-+}
-+#endif /* CONFIG_SHMEM */
-
- static void warn_scan_unevictable_pages(void)
- {
---
-1.7.9.5
-
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
deleted file mode 100644
index 70d0fee..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0128-SHM_UNLOCK-fix-Unevictable-pages-stranded-after-swap.patch
+++ /dev/null
@@ -1,342 +0,0 @@
-From 67890984571f0de5f3d975ef1d67643d89d92174 Mon Sep 17 00:00:00 2001
-From: Hugh Dickins <hughd at google.com>
-Date: Fri, 20 Jan 2012 14:34:21 -0800
-Subject: [PATCH 128/129] SHM_UNLOCK: fix Unevictable pages stranded after
- swap
-
-commit 245132643e1cfcd145bbc86a716c1818371fcb93 upstream.
-
-Commit cc39c6a9bbde ("mm: account skipped entries to avoid looping in
-find_get_pages") correctly fixed an infinite loop; but left a problem
-that find_get_pages() on shmem would return 0 (appearing to callers to
-mean end of tree) when it meets a run of nr_pages swap entries.
-
-The only uses of find_get_pages() on shmem are via pagevec_lookup(),
-called from invalidate_mapping_pages(), and from shmctl SHM_UNLOCK's
-scan_mapping_unevictable_pages(). The first is already commented, and
-not worth worrying about; but the second can leave pages on the
-Unevictable list after an unusual sequence of swapping and locking.
-
-Fix that by using shmem_find_get_pages_and_swap() (then ignoring the
-swap) instead of pagevec_lookup().
-
-But I don't want to contaminate vmscan.c with shmem internals, nor
-shmem.c with LRU locking. So move scan_mapping_unevictable_pages() into
-shmem.c, renaming it shmem_unlock_mapping(); and rename
-check_move_unevictable_page() to check_move_unevictable_pages(), looping
-down an array of pages, oftentimes under the same lock.
-
-Leave out the "rotate unevictable list" block: that's a leftover from
-when this was used for /proc/sys/vm/scan_unevictable_pages, whose flawed
-handling involved looking at pages at tail of LRU.
-
-Was there significance to the sequence first ClearPageUnevictable, then
-test page_evictable, then SetPageUnevictable here? I think not, we're
-under LRU lock, and have no barriers between those.
-
-Signed-off-by: Hugh Dickins <hughd at google.com>
-Reviewed-by: KOSAKI Motohiro <kosaki.motohiro at jp.fujitsu.com>
-Cc: Minchan Kim <minchan.kim at gmail.com>
-Cc: Rik van Riel <riel at redhat.com>
-Cc: Shaohua Li <shaohua.li at intel.com>
-Cc: Eric Dumazet <eric.dumazet at gmail.com>
-Cc: Johannes Weiner <hannes at cmpxchg.org>
-Cc: Michel Lespinasse <walken at google.com>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- include/linux/shmem_fs.h | 1 +
- include/linux/swap.h | 2 +-
- ipc/shm.c | 2 +-
- mm/shmem.c | 46 +++++++++++++++--
- mm/vmscan.c | 122 ++++++++++++++--------------------------------
- 5 files changed, 81 insertions(+), 92 deletions(-)
-
-diff --git a/include/linux/shmem_fs.h b/include/linux/shmem_fs.h
-index 9291ac3..6f10c9c 100644
---- a/include/linux/shmem_fs.h
-+++ b/include/linux/shmem_fs.h
-@@ -48,6 +48,7 @@ extern struct file *shmem_file_setup(const char *name,
- loff_t size, unsigned long flags);
- extern int shmem_zero_setup(struct vm_area_struct *);
- extern int shmem_lock(struct file *file, int lock, struct user_struct *user);
-+extern void shmem_unlock_mapping(struct address_space *mapping);
- extern struct page *shmem_read_mapping_page_gfp(struct address_space *mapping,
- pgoff_t index, gfp_t gfp_mask);
- extern void shmem_truncate_range(struct inode *inode, loff_t start, loff_t end);
-diff --git a/include/linux/swap.h b/include/linux/swap.h
-index 1e22e12..67b3fa3 100644
---- a/include/linux/swap.h
-+++ b/include/linux/swap.h
-@@ -272,7 +272,7 @@ static inline int zone_reclaim(struct zone *z, gfp_t mask, unsigned int order)
- #endif
-
- extern int page_evictable(struct page *page, struct vm_area_struct *vma);
--extern void scan_mapping_unevictable_pages(struct address_space *);
-+extern void check_move_unevictable_pages(struct page **, int nr_pages);
-
- extern unsigned long scan_unevictable_pages;
- extern int scan_unevictable_handler(struct ctl_table *, int,
-diff --git a/ipc/shm.c b/ipc/shm.c
-index 854ab58..b76be5b 100644
---- a/ipc/shm.c
-+++ b/ipc/shm.c
-@@ -916,7 +916,7 @@ SYSCALL_DEFINE3(shmctl, int, shmid, int, cmd, struct shmid_ds __user *, buf)
- shp->mlock_user = NULL;
- get_file(shm_file);
- shm_unlock(shp);
-- scan_mapping_unevictable_pages(shm_file->f_mapping);
-+ shmem_unlock_mapping(shm_file->f_mapping);
- fput(shm_file);
- goto out;
- }
-diff --git a/mm/shmem.c b/mm/shmem.c
-index cc6d40b2..6c253f7 100644
---- a/mm/shmem.c
-+++ b/mm/shmem.c
-@@ -379,7 +379,7 @@ static int shmem_free_swap(struct address_space *mapping,
- /*
- * Pagevec may contain swap entries, so shuffle up pages before releasing.
- */
--static void shmem_pagevec_release(struct pagevec *pvec)
-+static void shmem_deswap_pagevec(struct pagevec *pvec)
- {
- int i, j;
-
-@@ -389,7 +389,36 @@ static void shmem_pagevec_release(struct pagevec *pvec)
- pvec->pages[j++] = page;
- }
- pvec->nr = j;
-- pagevec_release(pvec);
-+}
-+
-+/*
-+ * SysV IPC SHM_UNLOCK restore Unevictable pages to their evictable lists.
-+ */
-+void shmem_unlock_mapping(struct address_space *mapping)
-+{
-+ struct pagevec pvec;
-+ pgoff_t indices[PAGEVEC_SIZE];
-+ pgoff_t index = 0;
-+
-+ pagevec_init(&pvec, 0);
-+ /*
-+ * Minor point, but we might as well stop if someone else SHM_LOCKs it.
-+ */
-+ while (!mapping_unevictable(mapping)) {
-+ /*
-+ * Avoid pagevec_lookup(): find_get_pages() returns 0 as if it
-+ * has finished, if it hits a row of PAGEVEC_SIZE swap entries.
-+ */
-+ pvec.nr = shmem_find_get_pages_and_swap(mapping, index,
-+ PAGEVEC_SIZE, pvec.pages, indices);
-+ if (!pvec.nr)
-+ break;
-+ index = indices[pvec.nr - 1] + 1;
-+ shmem_deswap_pagevec(&pvec);
-+ check_move_unevictable_pages(pvec.pages, pvec.nr);
-+ pagevec_release(&pvec);
-+ cond_resched();
-+ }
- }
-
- /*
-@@ -440,7 +469,8 @@ void shmem_truncate_range(struct inode *inode, loff_t lstart, loff_t lend)
- }
- unlock_page(page);
- }
-- shmem_pagevec_release(&pvec);
-+ shmem_deswap_pagevec(&pvec);
-+ pagevec_release(&pvec);
- mem_cgroup_uncharge_end();
- cond_resched();
- index++;
-@@ -470,7 +500,8 @@ void shmem_truncate_range(struct inode *inode, loff_t lstart, loff_t lend)
- continue;
- }
- if (index == start && indices[0] > end) {
-- shmem_pagevec_release(&pvec);
-+ shmem_deswap_pagevec(&pvec);
-+ pagevec_release(&pvec);
- break;
- }
- mem_cgroup_uncharge_start();
-@@ -494,7 +525,8 @@ void shmem_truncate_range(struct inode *inode, loff_t lstart, loff_t lend)
- }
- unlock_page(page);
- }
-- shmem_pagevec_release(&pvec);
-+ shmem_deswap_pagevec(&pvec);
-+ pagevec_release(&pvec);
- mem_cgroup_uncharge_end();
- index++;
- }
-@@ -2439,6 +2471,10 @@ int shmem_lock(struct file *file, int lock, struct user_struct *user)
- return 0;
- }
-
-+void shmem_unlock_mapping(struct address_space *mapping)
-+{
-+}
-+
- void shmem_truncate_range(struct inode *inode, loff_t lstart, loff_t lend)
- {
- truncate_inode_pages_range(inode->i_mapping, lstart, lend);
-diff --git a/mm/vmscan.c b/mm/vmscan.c
-index 824676a..cb33d9c 100644
---- a/mm/vmscan.c
-+++ b/mm/vmscan.c
-@@ -636,7 +636,7 @@ redo:
- * When racing with an mlock or AS_UNEVICTABLE clearing
- * (page is unlocked) make sure that if the other thread
- * does not observe our setting of PG_lru and fails
-- * isolation/check_move_unevictable_page,
-+ * isolation/check_move_unevictable_pages,
- * we see PG_mlocked/AS_UNEVICTABLE cleared below and move
- * the page back to the evictable list.
- *
-@@ -3355,104 +3355,56 @@ int page_evictable(struct page *page, struct vm_area_struct *vma)
-
- #ifdef CONFIG_SHMEM
- /**
-- * check_move_unevictable_page - check page for evictability and move to appropriate zone lru list
-- * @page: page to check evictability and move to appropriate lru list
-- * @zone: zone page is in
-+ * check_move_unevictable_pages - check pages for evictability and move to appropriate zone lru list
-+ * @pages: array of pages to check
-+ * @nr_pages: number of pages to check
- *
-- * Checks a page for evictability and moves the page to the appropriate
-- * zone lru list.
-- *
-- * Restrictions: zone->lru_lock must be held, page must be on LRU and must
-- * have PageUnevictable set.
-+ * Checks pages for evictability and moves them to the appropriate lru list.
- *
- * This function is only used for SysV IPC SHM_UNLOCK.
- */
--static void check_move_unevictable_page(struct page *page, struct zone *zone)
-+void check_move_unevictable_pages(struct page **pages, int nr_pages)
- {
-- VM_BUG_ON(PageActive(page));
-+ struct zone *zone = NULL;
-+ int pgscanned = 0;
-+ int pgrescued = 0;
-+ int i;
-
--retry:
-- ClearPageUnevictable(page);
-- if (page_evictable(page, NULL)) {
-- enum lru_list l = page_lru_base_type(page);
-+ for (i = 0; i < nr_pages; i++) {
-+ struct page *page = pages[i];
-+ struct zone *pagezone;
-
-- __dec_zone_state(zone, NR_UNEVICTABLE);
-- list_move(&page->lru, &zone->lru[l].list);
-- mem_cgroup_move_lists(page, LRU_UNEVICTABLE, l);
-- __inc_zone_state(zone, NR_INACTIVE_ANON + l);
-- __count_vm_event(UNEVICTABLE_PGRESCUED);
-- } else {
-- /*
-- * rotate unevictable list
-- */
-- SetPageUnevictable(page);
-- list_move(&page->lru, &zone->lru[LRU_UNEVICTABLE].list);
-- mem_cgroup_rotate_lru_list(page, LRU_UNEVICTABLE);
-- if (page_evictable(page, NULL))
-- goto retry;
-- }
--}
--
--/**
-- * scan_mapping_unevictable_pages - scan an address space for evictable pages
-- * @mapping: struct address_space to scan for evictable pages
-- *
-- * Scan all pages in mapping. Check unevictable pages for
-- * evictability and move them to the appropriate zone lru list.
-- *
-- * This function is only used for SysV IPC SHM_UNLOCK.
-- */
--void scan_mapping_unevictable_pages(struct address_space *mapping)
--{
-- pgoff_t next = 0;
-- pgoff_t end = (i_size_read(mapping->host) + PAGE_CACHE_SIZE - 1) >>
-- PAGE_CACHE_SHIFT;
-- struct zone *zone;
-- struct pagevec pvec;
-+ pgscanned++;
-+ pagezone = page_zone(page);
-+ if (pagezone != zone) {
-+ if (zone)
-+ spin_unlock_irq(&zone->lru_lock);
-+ zone = pagezone;
-+ spin_lock_irq(&zone->lru_lock);
-+ }
-
-- if (mapping->nrpages == 0)
-- return;
-+ if (!PageLRU(page) || !PageUnevictable(page))
-+ continue;
-
-- pagevec_init(&pvec, 0);
-- while (next < end &&
-- pagevec_lookup(&pvec, mapping, next, PAGEVEC_SIZE)) {
-- int i;
-- int pg_scanned = 0;
--
-- zone = NULL;
--
-- for (i = 0; i < pagevec_count(&pvec); i++) {
-- struct page *page = pvec.pages[i];
-- pgoff_t page_index = page->index;
-- struct zone *pagezone = page_zone(page);
--
-- pg_scanned++;
-- if (page_index > next)
-- next = page_index;
-- next++;
--
-- if (pagezone != zone) {
-- if (zone)
-- spin_unlock_irq(&zone->lru_lock);
-- zone = pagezone;
-- spin_lock_irq(&zone->lru_lock);
-- }
-+ if (page_evictable(page, NULL)) {
-+ enum lru_list lru = page_lru_base_type(page);
-
-- if (PageLRU(page) && PageUnevictable(page))
-- check_move_unevictable_page(page, zone);
-+ VM_BUG_ON(PageActive(page));
-+ ClearPageUnevictable(page);
-+ __dec_zone_state(zone, NR_UNEVICTABLE);
-+ list_move(&page->lru, &zone->lru[lru].list);
-+ mem_cgroup_move_lists(page, LRU_UNEVICTABLE, lru);
-+ __inc_zone_state(zone, NR_INACTIVE_ANON + lru);
-+ pgrescued++;
- }
-- if (zone)
-- spin_unlock_irq(&zone->lru_lock);
-- pagevec_release(&pvec);
-+ }
-
-- count_vm_events(UNEVICTABLE_PGSCANNED, pg_scanned);
-- cond_resched();
-+ if (zone) {
-+ __count_vm_events(UNEVICTABLE_PGRESCUED, pgrescued);
-+ __count_vm_events(UNEVICTABLE_PGSCANNED, pgscanned);
-+ spin_unlock_irq(&zone->lru_lock);
- }
- }
--#else
--void scan_mapping_unevictable_pages(struct address_space *mapping)
--{
--}
- #endif /* CONFIG_SHMEM */
-
- static void warn_scan_unevictable_pages(void)
---
-1.7.9.5
-
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
deleted file mode 100644
index 191a68f..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0129-Linux-3.2.2.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 9c4bad0da47e7a8597bf0135088e482b1a970ba7 Mon Sep 17 00:00:00 2001
-From: Greg Kroah-Hartman <gregkh at suse.de>
-Date: Wed, 25 Jan 2012 16:39:32 -0800
-Subject: [PATCH 129/129] Linux 3.2.2
-
----
- Makefile | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Makefile b/Makefile
-index c5edffa..2f684da 100644
---- a/Makefile
-+++ b/Makefile
-@@ -1,6 +1,6 @@
- VERSION = 3
- PATCHLEVEL = 2
--SUBLEVEL = 1
-+SUBLEVEL = 2
- EXTRAVERSION =
- NAME = Saber-toothed Squirrel
-
---
-1.7.9.5
-
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
deleted file mode 100644
index fbb8207..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0001-iommu-amd-Add-workaround-for-event-log-erratum.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-From d08904adc2bdce433151a95add376e5446af13de Mon Sep 17 00:00:00 2001
-From: Joerg Roedel <joerg.roedel at amd.com>
-Date: Thu, 12 Apr 2012 14:12:00 +0200
-Subject: [PATCH 01/86] iommu/amd: Add workaround for event log erratum
-
-commit 3d06fca8d2aa3543030e40b95f1d62f9f5a03540 upstream.
-
-Due to a recent erratum it can happen that the head pointer
-of the event-log is updated before the actual event-log
-entry is written. This patch implements the recommended
-workaround.
-
-Signed-off-by: Joerg Roedel <joerg.roedel at amd.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/iommu/amd_iommu.c | 29 +++++++++++++++++++++++------
- 1 file changed, 23 insertions(+), 6 deletions(-)
-
-diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c
-index 966a6e7..f1d5408 100644
---- a/drivers/iommu/amd_iommu.c
-+++ b/drivers/iommu/amd_iommu.c
-@@ -381,12 +381,27 @@ static void dump_command(unsigned long phys_addr)
-
- static void iommu_print_event(struct amd_iommu *iommu, void *__evt)
- {
-- u32 *event = __evt;
-- int type = (event[1] >> EVENT_TYPE_SHIFT) & EVENT_TYPE_MASK;
-- int devid = (event[0] >> EVENT_DEVID_SHIFT) & EVENT_DEVID_MASK;
-- int domid = (event[1] >> EVENT_DOMID_SHIFT) & EVENT_DOMID_MASK;
-- int flags = (event[1] >> EVENT_FLAGS_SHIFT) & EVENT_FLAGS_MASK;
-- u64 address = (u64)(((u64)event[3]) << 32) | event[2];
-+ int type, devid, domid, flags;
-+ volatile u32 *event = __evt;
-+ int count = 0;
-+ u64 address;
-+
-+retry:
-+ type = (event[1] >> EVENT_TYPE_SHIFT) & EVENT_TYPE_MASK;
-+ devid = (event[0] >> EVENT_DEVID_SHIFT) & EVENT_DEVID_MASK;
-+ domid = (event[1] >> EVENT_DOMID_SHIFT) & EVENT_DOMID_MASK;
-+ flags = (event[1] >> EVENT_FLAGS_SHIFT) & EVENT_FLAGS_MASK;
-+ address = (u64)(((u64)event[3]) << 32) | event[2];
-+
-+ if (type == 0) {
-+ /* Did we hit the erratum? */
-+ if (++count == LOOP_TIMEOUT) {
-+ pr_err("AMD-Vi: No event written to event log\n");
-+ return;
-+ }
-+ udelay(1);
-+ goto retry;
-+ }
-
- printk(KERN_ERR "AMD-Vi: Event logged [");
-
-@@ -439,6 +454,8 @@ static void iommu_print_event(struct amd_iommu *iommu, void *__evt)
- default:
- printk(KERN_ERR "UNKNOWN type=0x%02x]\n", type);
- }
-+
-+ memset(__evt, 0, 4 * sizeof(u32));
- }
-
- static void iommu_poll_events(struct amd_iommu *iommu)
---
-1.7.9.5
-
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
deleted file mode 100644
index 33c5e4c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0002-MIPS-BCM63XX-Add-missing-include-for-bcm63xx_gpio.h.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From 46955a5e45c31c112caee68f0b31b6caac294ce0 Mon Sep 17 00:00:00 2001
-From: Jonas Gorski <jonas.gorski at gmail.com>
-Date: Tue, 15 May 2012 17:47:52 +0200
-Subject: [PATCH 02/86] MIPS: BCM63XX: Add missing include for bcm63xx_gpio.h
-
-commit 442209f31dafef9fde852858e1ce566b675b720d upstream.
-
-bcm63xx_gpio.h uses macros defined in bcm63xx_cpu.h without including it,
-leading to the following build failure:
-
- CC [M] drivers/mmc/core/cd-gpio.o
-In file included from arch/mips/include/asm/mach-bcm63xx/gpio.h:4:0,
- from arch/mips/include/asm/gpio.h:4,
- from include/linux/gpio.h:30,
- from drivers/mmc/core/cd-gpio.c:12:
-
-arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h: In function 'bcm63xx_gpio_count':
-arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h:10:2: error: implicit declaration of function 'bcm63xx_get_cpu_id'
-arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h:11:7: error: 'BCM6358_CPU_ID' undeclared (first use in this function)
-arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h:11:7: note: each undeclared identifier is reported only once for each function it appears in
-arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h:13:7: error: 'BCM6338_CPU_ID' undeclared (first use in this function)
-arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h:15:7: error: 'BCM6345_CPU_ID' undeclared (first use in this function)
-arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h:17:7: error: 'BCM6368_CPU_ID' undeclared (first use in this function)
-arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h:19:7: error: 'BCM6348_CPU_ID' undeclared (first use in this function)
-
-make[7]: *** [drivers/mmc/core/cd-gpio.o] Error 1
-
-Signed-off-by: Jonas Gorski <jonas.gorski at gmail.com>
-Cc: linux-mips at linux-mips.org
-Cc: Maxime Bizon <mbizon at freebox.fr>
-Cc: Florian Fainelli <florian at openwrt.org>
-Signed-off-by: Ralf Baechle <ralf at linux-mips.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h
-index 3999ec0..67d1ce0 100644
---- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h
-+++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h
-@@ -2,6 +2,7 @@
- #define BCM63XX_GPIO_H
-
- #include <linux/init.h>
-+#include <bcm63xx_cpu.h>
-
- int __init bcm63xx_gpio_init(void);
-
---
-1.7.9.5
-
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
deleted file mode 100644
index 33f7854..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0003-cifs-Include-backup-intent-search-flags-during-searc.patch
+++ /dev/null
@@ -1,152 +0,0 @@
-From 173ad16c027991780b0eb74f6ad49ae7621647f5 Mon Sep 17 00:00:00 2001
-From: Shirish Pargaonkar <shirishpargaonkar at gmail.com>
-Date: Tue, 15 May 2012 10:19:16 -0500
-Subject: [PATCH 03/86] cifs: Include backup intent search flags during
- searches {try #2)
-
-commit 2608bee744a92d60d15ff4e6e0b913d8b406aedd upstream.
-
-As observed and suggested by Tushar Gosavi...
-
----------
-readdir calls these function to send TRANS2_FIND_FIRST and
-TRANS2_FIND_NEXT command to the server. The current cifs module is
-not specifying CIFS_SEARCH_BACKUP_SEARCH flag while sending these
-command when backupuid/backupgid is specified. This can be resolved
-by specifying CIFS_SEARCH_BACKUP_SEARCH flag.
----------
-
-Reported-and-Tested-by: Tushar Gosavi <tugosavi at in.ibm.com>
-Signed-off-by: Shirish Pargaonkar <shirishpargaonkar at gmail.com>
-Acked-by: Jeff Layton <jlayton at redhat.com>
-Signed-off-by: Steve French <sfrench at us.ibm.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/cifs/cifsproto.h | 6 ++++--
- fs/cifs/cifssmb.c | 12 +++++-------
- fs/cifs/readdir.c | 15 +++++++++++++--
- 3 files changed, 22 insertions(+), 11 deletions(-)
-
-diff --git a/fs/cifs/cifsproto.h b/fs/cifs/cifsproto.h
-index 6f4e243..26917d3 100644
---- a/fs/cifs/cifsproto.h
-+++ b/fs/cifs/cifsproto.h
-@@ -184,11 +184,13 @@ extern int CIFSTCon(unsigned int xid, struct cifs_ses *ses,
-
- extern int CIFSFindFirst(const int xid, struct cifs_tcon *tcon,
- const char *searchName, const struct nls_table *nls_codepage,
-- __u16 *searchHandle, struct cifs_search_info *psrch_inf,
-+ __u16 *searchHandle, __u16 search_flags,
-+ struct cifs_search_info *psrch_inf,
- int map, const char dirsep);
-
- extern int CIFSFindNext(const int xid, struct cifs_tcon *tcon,
-- __u16 searchHandle, struct cifs_search_info *psrch_inf);
-+ __u16 searchHandle, __u16 search_flags,
-+ struct cifs_search_info *psrch_inf);
-
- extern int CIFSFindClose(const int, struct cifs_tcon *tcon,
- const __u16 search_handle);
-diff --git a/fs/cifs/cifssmb.c b/fs/cifs/cifssmb.c
-index e89803b..6aa7457 100644
---- a/fs/cifs/cifssmb.c
-+++ b/fs/cifs/cifssmb.c
-@@ -4327,7 +4327,7 @@ int
- CIFSFindFirst(const int xid, struct cifs_tcon *tcon,
- const char *searchName,
- const struct nls_table *nls_codepage,
-- __u16 *pnetfid,
-+ __u16 *pnetfid, __u16 search_flags,
- struct cifs_search_info *psrch_inf, int remap, const char dirsep)
- {
- /* level 257 SMB_ */
-@@ -4399,8 +4399,7 @@ findFirstRetry:
- cpu_to_le16(ATTR_READONLY | ATTR_HIDDEN | ATTR_SYSTEM |
- ATTR_DIRECTORY);
- pSMB->SearchCount = cpu_to_le16(CIFSMaxBufSize/sizeof(FILE_UNIX_INFO));
-- pSMB->SearchFlags = cpu_to_le16(CIFS_SEARCH_CLOSE_AT_END |
-- CIFS_SEARCH_RETURN_RESUME);
-+ pSMB->SearchFlags = cpu_to_le16(search_flags);
- pSMB->InformationLevel = cpu_to_le16(psrch_inf->info_level);
-
- /* BB what should we set StorageType to? Does it matter? BB */
-@@ -4470,8 +4469,8 @@ findFirstRetry:
- return rc;
- }
-
--int CIFSFindNext(const int xid, struct cifs_tcon *tcon,
-- __u16 searchHandle, struct cifs_search_info *psrch_inf)
-+int CIFSFindNext(const int xid, struct cifs_tcon *tcon, __u16 searchHandle,
-+ __u16 search_flags, struct cifs_search_info *psrch_inf)
- {
- TRANSACTION2_FNEXT_REQ *pSMB = NULL;
- TRANSACTION2_FNEXT_RSP *pSMBr = NULL;
-@@ -4514,8 +4513,7 @@ int CIFSFindNext(const int xid, struct cifs_tcon *tcon,
- cpu_to_le16(CIFSMaxBufSize / sizeof(FILE_UNIX_INFO));
- pSMB->InformationLevel = cpu_to_le16(psrch_inf->info_level);
- pSMB->ResumeKey = psrch_inf->resume_key;
-- pSMB->SearchFlags =
-- cpu_to_le16(CIFS_SEARCH_CLOSE_AT_END | CIFS_SEARCH_RETURN_RESUME);
-+ pSMB->SearchFlags = cpu_to_le16(search_flags);
-
- name_len = psrch_inf->resume_name_len;
- params += name_len;
-diff --git a/fs/cifs/readdir.c b/fs/cifs/readdir.c
-index a090bbe..db4a138 100644
---- a/fs/cifs/readdir.c
-+++ b/fs/cifs/readdir.c
-@@ -219,6 +219,7 @@ int get_symlink_reparse_path(char *full_path, struct cifs_sb_info *cifs_sb,
-
- static int initiate_cifs_search(const int xid, struct file *file)
- {
-+ __u16 search_flags;
- int rc = 0;
- char *full_path = NULL;
- struct cifsFileInfo *cifsFile;
-@@ -270,8 +271,12 @@ ffirst_retry:
- cifsFile->srch_inf.info_level = SMB_FIND_FILE_DIRECTORY_INFO;
- }
-
-+ search_flags = CIFS_SEARCH_CLOSE_AT_END | CIFS_SEARCH_RETURN_RESUME;
-+ if (backup_cred(cifs_sb))
-+ search_flags |= CIFS_SEARCH_BACKUP_SEARCH;
-+
- rc = CIFSFindFirst(xid, pTcon, full_path, cifs_sb->local_nls,
-- &cifsFile->netfid, &cifsFile->srch_inf,
-+ &cifsFile->netfid, search_flags, &cifsFile->srch_inf,
- cifs_sb->mnt_cifs_flags &
- CIFS_MOUNT_MAP_SPECIAL_CHR, CIFS_DIR_SEP(cifs_sb));
- if (rc == 0)
-@@ -502,11 +507,13 @@ static int cifs_save_resume_key(const char *current_entry,
- static int find_cifs_entry(const int xid, struct cifs_tcon *pTcon,
- struct file *file, char **ppCurrentEntry, int *num_to_ret)
- {
-+ __u16 search_flags;
- int rc = 0;
- int pos_in_buf = 0;
- loff_t first_entry_in_buffer;
- loff_t index_to_find = file->f_pos;
- struct cifsFileInfo *cifsFile = file->private_data;
-+ struct cifs_sb_info *cifs_sb = CIFS_SB(file->f_path.dentry->d_sb);
- /* check if index in the buffer */
-
- if ((cifsFile == NULL) || (ppCurrentEntry == NULL) ||
-@@ -560,10 +567,14 @@ static int find_cifs_entry(const int xid, struct cifs_tcon *pTcon,
- cifsFile);
- }
-
-+ search_flags = CIFS_SEARCH_CLOSE_AT_END | CIFS_SEARCH_RETURN_RESUME;
-+ if (backup_cred(cifs_sb))
-+ search_flags |= CIFS_SEARCH_BACKUP_SEARCH;
-+
- while ((index_to_find >= cifsFile->srch_inf.index_of_last_entry) &&
- (rc == 0) && !cifsFile->srch_inf.endOfSearch) {
- cFYI(1, "calling findnext2");
-- rc = CIFSFindNext(xid, pTcon, cifsFile->netfid,
-+ rc = CIFSFindNext(xid, pTcon, cifsFile->netfid, search_flags,
- &cifsFile->srch_inf);
- /* FindFirst/Next set last_entry to NULL on malformed reply */
- if (cifsFile->srch_inf.last_entry)
---
-1.7.9.5
-
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
deleted file mode 100644
index f3aea62..0000000
--- 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
+++ /dev/null
@@ -1,63 +0,0 @@
-From 0a5a9dc98eefca8c849daa43b5763fc53d672ebf Mon Sep 17 00:00:00 2001
-From: Trond Myklebust <Trond.Myklebust at netapp.com>
-Date: Sat, 19 May 2012 12:12:53 -0400
-Subject: [PATCH 04/86] sunrpc: fix loss of task->tk_status after rpc_delay
- call in xprt_alloc_slot
-
-commit 1afeaf5c29aa07db25760d2fbed5c08a3aec3498 upstream.
-
-xprt_alloc_slot will call rpc_delay() to make the task wait a bit before
-retrying when it gets back an -ENOMEM error from xprt_dynamic_alloc_slot.
-The problem is that rpc_delay will clear the task->tk_status, causing
-call_reserveresult to abort the task.
-
-The solution is simply to let call_reserveresult handle the ENOMEM error
-directly.
-
-Reported-by: Jeff Layton <jlayton at redhat.com>
-Signed-off-by: Trond Myklebust <Trond.Myklebust at netapp.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/sunrpc/clnt.c | 2 ++
- net/sunrpc/xprt.c | 5 +++--
- 2 files changed, 5 insertions(+), 2 deletions(-)
-
-diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c
-index f0268ea..b2250da 100644
---- a/net/sunrpc/clnt.c
-+++ b/net/sunrpc/clnt.c
-@@ -959,6 +959,8 @@ call_reserveresult(struct rpc_task *task)
- }
-
- switch (status) {
-+ case -ENOMEM:
-+ rpc_delay(task, HZ >> 2);
- case -EAGAIN: /* woken up; retry */
- task->tk_action = call_reserve;
- return;
-diff --git a/net/sunrpc/xprt.c b/net/sunrpc/xprt.c
-index c64c0ef..3ac9789 100644
---- a/net/sunrpc/xprt.c
-+++ b/net/sunrpc/xprt.c
-@@ -977,15 +977,16 @@ static void xprt_alloc_slot(struct rpc_task *task)
- goto out_init_req;
- switch (PTR_ERR(req)) {
- case -ENOMEM:
-- rpc_delay(task, HZ >> 2);
- dprintk("RPC: dynamic allocation of request slot "
- "failed! Retrying\n");
-+ task->tk_status = -ENOMEM;
- break;
- case -EAGAIN:
- rpc_sleep_on(&xprt->backlog, task, NULL);
- dprintk("RPC: waiting for request slot\n");
-+ default:
-+ task->tk_status = -EAGAIN;
- }
-- task->tk_status = -EAGAIN;
- return;
- out_init_req:
- task->tk_status = 0;
---
-1.7.9.5
-
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
deleted file mode 100644
index 0b0abbd..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0005-exofs-Fix-CRASH-on-very-early-IO-errors.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From afd117116e98d0444a0ace7d152207a54cc15ff5 Mon Sep 17 00:00:00 2001
-From: Boaz Harrosh <bharrosh at panasas.com>
-Date: Wed, 16 May 2012 14:22:21 +0300
-Subject: [PATCH 05/86] exofs: Fix CRASH on very early IO errors.
-
-commit 6abe4a87f7bc7978705c386dbba0ca0c7790b3ec upstream.
-
-If at exofs_fill_super() we had an early termination
-do to any error, like an IO error while reading the
-super-block. We would crash inside exofs_free_sbi().
-
-This is because sbi->oc.numdevs was set to 1, before
-we actually have a device table at all.
-
-Fix it by moving the sbi->oc.numdevs = 1 to after the
-allocation of the device table.
-
-Reported-by: Johannes Schild <JSchild at gmx.de>
-
-Stable: This is a bug since v3.2.0
-Signed-off-by: Boaz Harrosh <bharrosh at panasas.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/exofs/super.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/fs/exofs/super.c b/fs/exofs/super.c
-index e6085ec..7ed5000 100644
---- a/fs/exofs/super.c
-+++ b/fs/exofs/super.c
-@@ -745,7 +745,6 @@ static int exofs_fill_super(struct super_block *sb, void *data, int silent)
- sbi->one_comp.obj.partition = opts->pid;
- sbi->one_comp.obj.id = 0;
- exofs_make_credential(sbi->one_comp.cred, &sbi->one_comp.obj);
-- sbi->oc.numdevs = 1;
- sbi->oc.single_comp = EC_SINGLE_COMP;
- sbi->oc.comps = &sbi->one_comp;
-
-@@ -803,6 +802,7 @@ static int exofs_fill_super(struct super_block *sb, void *data, int silent)
- goto free_sbi;
-
- ore_comp_set_dev(&sbi->oc, 0, od);
-+ sbi->oc.numdevs = 1;
- }
-
- __sbi_read_stats(sbi);
---
-1.7.9.5
-
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
deleted file mode 100644
index d54b0cd..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0006-cifs-fix-oops-while-traversing-open-file-list-try-4.patch
+++ /dev/null
@@ -1,141 +0,0 @@
-From 4efa0e1388965846f96dfa4afd84b6ee7560eec7 Mon Sep 17 00:00:00 2001
-From: Shirish Pargaonkar <shirishpargaonkar at gmail.com>
-Date: Mon, 21 May 2012 09:20:12 -0500
-Subject: [PATCH 06/86] cifs: fix oops while traversing open file list (try
- #4)
-
-commit 2c0c2a08bed7a3b791f88d09d16ace56acb3dd98 upstream.
-
-While traversing the linked list of open file handles, if the identfied
-file handle is invalid, a reopen is attempted and if it fails, we
-resume traversing where we stopped and cifs can oops while accessing
-invalid next element, for list might have changed.
-
-So mark the invalid file handle and attempt reopen if no
-valid file handle is found in rest of the list.
-If reopen fails, move the invalid file handle to the end of the list
-and start traversing the list again from the begining.
-Repeat this four times before giving up and returning an error if
-file reopen keeps failing.
-
-Signed-off-by: Shirish Pargaonkar <shirishpargaonkar at gmail.com>
-Reviewed-by: Jeff Layton <jlayton at redhat.com>
-Signed-off-by: Steve French <sfrench at us.ibm.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/cifs/cifsglob.h | 1 +
- fs/cifs/file.c | 57 ++++++++++++++++++++++++++++++----------------------
- 2 files changed, 34 insertions(+), 24 deletions(-)
-
-diff --git a/fs/cifs/cifsglob.h b/fs/cifs/cifsglob.h
-index c467ac8..2f3ff59 100644
---- a/fs/cifs/cifsglob.h
-+++ b/fs/cifs/cifsglob.h
-@@ -43,6 +43,7 @@
-
- #define CIFS_MIN_RCV_POOL 4
-
-+#define MAX_REOPEN_ATT 5 /* these many maximum attempts to reopen a file */
- /*
- * default attribute cache timeout (jiffies)
- */
-diff --git a/fs/cifs/file.c b/fs/cifs/file.c
-index 0f7dc22..0bb785f 100644
---- a/fs/cifs/file.c
-+++ b/fs/cifs/file.c
-@@ -1534,10 +1534,11 @@ struct cifsFileInfo *find_readable_file(struct cifsInodeInfo *cifs_inode,
- struct cifsFileInfo *find_writable_file(struct cifsInodeInfo *cifs_inode,
- bool fsuid_only)
- {
-- struct cifsFileInfo *open_file;
-+ struct cifsFileInfo *open_file, *inv_file = NULL;
- struct cifs_sb_info *cifs_sb;
- bool any_available = false;
- int rc;
-+ unsigned int refind = 0;
-
- /* Having a null inode here (because mapping->host was set to zero by
- the VFS or MM) should not happen but we had reports of on oops (due to
-@@ -1557,40 +1558,25 @@ struct cifsFileInfo *find_writable_file(struct cifsInodeInfo *cifs_inode,
-
- spin_lock(&cifs_file_list_lock);
- refind_writable:
-+ if (refind > MAX_REOPEN_ATT) {
-+ spin_unlock(&cifs_file_list_lock);
-+ return NULL;
-+ }
- list_for_each_entry(open_file, &cifs_inode->openFileList, flist) {
- if (!any_available && open_file->pid != current->tgid)
- continue;
- if (fsuid_only && open_file->uid != current_fsuid())
- continue;
- if (OPEN_FMODE(open_file->f_flags) & FMODE_WRITE) {
-- cifsFileInfo_get(open_file);
--
- if (!open_file->invalidHandle) {
- /* found a good writable file */
-+ cifsFileInfo_get(open_file);
- spin_unlock(&cifs_file_list_lock);
- return open_file;
-+ } else {
-+ if (!inv_file)
-+ inv_file = open_file;
- }
--
-- spin_unlock(&cifs_file_list_lock);
--
-- /* Had to unlock since following call can block */
-- rc = cifs_reopen_file(open_file, false);
-- if (!rc)
-- return open_file;
--
-- /* if it fails, try another handle if possible */
-- cFYI(1, "wp failed on reopen file");
-- cifsFileInfo_put(open_file);
--
-- spin_lock(&cifs_file_list_lock);
--
-- /* else we simply continue to the next entry. Thus
-- we do not loop on reopen errors. If we
-- can not reopen the file, for example if we
-- reconnected to a server with another client
-- racing to delete or lock the file we would not
-- make progress if we restarted before the beginning
-- of the loop here. */
- }
- }
- /* couldn't find useable FH with same pid, try any available */
-@@ -1598,7 +1584,30 @@ refind_writable:
- any_available = true;
- goto refind_writable;
- }
-+
-+ if (inv_file) {
-+ any_available = false;
-+ cifsFileInfo_get(inv_file);
-+ }
-+
- spin_unlock(&cifs_file_list_lock);
-+
-+ if (inv_file) {
-+ rc = cifs_reopen_file(inv_file, false);
-+ if (!rc)
-+ return inv_file;
-+ else {
-+ spin_lock(&cifs_file_list_lock);
-+ list_move_tail(&inv_file->flist,
-+ &cifs_inode->openFileList);
-+ spin_unlock(&cifs_file_list_lock);
-+ cifsFileInfo_put(inv_file);
-+ spin_lock(&cifs_file_list_lock);
-+ ++refind;
-+ goto refind_writable;
-+ }
-+ }
-+
- return NULL;
- }
-
---
-1.7.9.5
-
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
deleted file mode 100644
index abd3752..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0007-Fix-dm-multipath-starvation-when-scsi-host-is-busy.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From 49f60fdaf9a6a36e04829a74b3b1f28ab99dc96a Mon Sep 17 00:00:00 2001
-From: Jun'ichi Nomura <j-nomura at ce.jp.nec.com>
-Date: Tue, 22 May 2012 18:57:17 +0900
-Subject: [PATCH 07/86] Fix dm-multipath starvation when scsi host is busy
-
-commit b7e94a1686c5daef4f649f7f4f839cc294f07710 upstream.
-
-block congestion control doesn't have any concept of fairness across
-multiple queues. This means that if SCSI reports the host as busy in
-the queue congestion control it can result in an unfair starvation
-situation in dm-mp if there are multiple multipath devices on the same
-host. For example:
-http://www.redhat.com/archives/dm-devel/2012-May/msg00123.html
-
-The fix for this is to report only the sdev busy state (and ignore the
-host busy state) in the block congestion control call back.
-The host is still congested, but the SCSI subsystem will sort out the
-congestion in a fair way because it knows the relation between the
-queues and the host.
-
-[jejb: fixed up trailing whitespace]
-Reported-by: Bernd Schubert <bernd.schubert at itwm.fraunhofer.de>
-Tested-by: Bernd Schubert <bernd.schubert at itwm.fraunhofer.de>
-Signed-off-by: Jun'ichi Nomura <j-nomura at ce.jp.nec.com>
-Signed-off-by: James Bottomley <JBottomley at Parallels.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/scsi/scsi_lib.c | 11 +++++++----
- 1 file changed, 7 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
-index f85cfa6..f0ab58e 100644
---- a/drivers/scsi/scsi_lib.c
-+++ b/drivers/scsi/scsi_lib.c
-@@ -1382,16 +1382,19 @@ static int scsi_lld_busy(struct request_queue *q)
- {
- struct scsi_device *sdev = q->queuedata;
- struct Scsi_Host *shost;
-- struct scsi_target *starget;
-
- if (!sdev)
- return 0;
-
- shost = sdev->host;
-- starget = scsi_target(sdev);
-
-- if (scsi_host_in_recovery(shost) || scsi_host_is_busy(shost) ||
-- scsi_target_is_busy(starget) || scsi_device_is_busy(sdev))
-+ /*
-+ * Ignore host/starget busy state.
-+ * Since block layer does not have a concept of fairness across
-+ * multiple queues, congestion of host/starget needs to be handled
-+ * in SCSI layer.
-+ */
-+ if (scsi_host_in_recovery(shost) || scsi_device_is_busy(sdev))
- return 1;
-
- return 0;
---
-1.7.9.5
-
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
deleted file mode 100644
index 57522bf..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0008-ixp4xx-fix-compilation-by-adding-gpiolib-support.patch
+++ /dev/null
@@ -1,210 +0,0 @@
-From ee8e09be6e0d533351740fc80d291bab8e2686c3 Mon Sep 17 00:00:00 2001
-From: Richard Cochran <richardcochran at gmail.com>
-Date: Wed, 23 May 2012 18:19:51 +0200
-Subject: [PATCH 08/86] ixp4xx: fix compilation by adding gpiolib support
-
-commit 9dde0ae3769875ec1370cb316e50c54b57d52c1a upstream.
-
-Once again, ixp4xx no longer even compiles. This patch fixes the issue
-by converting over to gpiolib. This patch was first made by Imre and
-posted by Marc, and I added in Russell's suggestion to empty the gpio
-header file.
-
-This fix should also go for 3.1, 3.2, 3.3, and 3.4.
-
-Signed-off-by: Richard Cochran <richardcochran at gmail.com>
-Signed-off-by: Arnd Bergmann <arnd at arndb.de>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/arm/Kconfig | 2 +-
- arch/arm/mach-ixp4xx/common.c | 48 +++++++++++++++++-
- arch/arm/mach-ixp4xx/include/mach/gpio.h | 79 +-----------------------------
- 3 files changed, 48 insertions(+), 81 deletions(-)
-
-diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
-index 26574f0..cad2ec2 100644
---- a/arch/arm/Kconfig
-+++ b/arch/arm/Kconfig
-@@ -520,7 +520,7 @@ config ARCH_IXP4XX
- depends on MMU
- select CLKSRC_MMIO
- select CPU_XSCALE
-- select GENERIC_GPIO
-+ select ARCH_REQUIRE_GPIOLIB
- select GENERIC_CLOCKEVENTS
- select HAVE_SCHED_CLOCK
- select MIGHT_HAVE_PCI
-diff --git a/arch/arm/mach-ixp4xx/common.c b/arch/arm/mach-ixp4xx/common.c
-index b86a005..caf28fc 100644
---- a/arch/arm/mach-ixp4xx/common.c
-+++ b/arch/arm/mach-ixp4xx/common.c
-@@ -29,6 +29,7 @@
- #include <linux/clockchips.h>
- #include <linux/io.h>
- #include <linux/export.h>
-+#include <linux/gpio.h>
-
- #include <mach/udc.h>
- #include <mach/hardware.h>
-@@ -106,7 +107,7 @@ static signed char irq2gpio[32] = {
- 7, 8, 9, 10, 11, 12, -1, -1,
- };
-
--int gpio_to_irq(int gpio)
-+static int ixp4xx_gpio_to_irq(struct gpio_chip *chip, unsigned gpio)
- {
- int irq;
-
-@@ -116,7 +117,6 @@ int gpio_to_irq(int gpio)
- }
- return -EINVAL;
- }
--EXPORT_SYMBOL(gpio_to_irq);
-
- int irq_to_gpio(unsigned int irq)
- {
-@@ -376,12 +376,56 @@ static struct platform_device *ixp46x_devices[] __initdata = {
- unsigned long ixp4xx_exp_bus_size;
- EXPORT_SYMBOL(ixp4xx_exp_bus_size);
-
-+static int ixp4xx_gpio_direction_input(struct gpio_chip *chip, unsigned gpio)
-+{
-+ gpio_line_config(gpio, IXP4XX_GPIO_IN);
-+
-+ return 0;
-+}
-+
-+static int ixp4xx_gpio_direction_output(struct gpio_chip *chip, unsigned gpio,
-+ int level)
-+{
-+ gpio_line_set(gpio, level);
-+ gpio_line_config(gpio, IXP4XX_GPIO_OUT);
-+
-+ return 0;
-+}
-+
-+static int ixp4xx_gpio_get_value(struct gpio_chip *chip, unsigned gpio)
-+{
-+ int value;
-+
-+ gpio_line_get(gpio, &value);
-+
-+ return value;
-+}
-+
-+static void ixp4xx_gpio_set_value(struct gpio_chip *chip, unsigned gpio,
-+ int value)
-+{
-+ gpio_line_set(gpio, value);
-+}
-+
-+static struct gpio_chip ixp4xx_gpio_chip = {
-+ .label = "IXP4XX_GPIO_CHIP",
-+ .direction_input = ixp4xx_gpio_direction_input,
-+ .direction_output = ixp4xx_gpio_direction_output,
-+ .get = ixp4xx_gpio_get_value,
-+ .set = ixp4xx_gpio_set_value,
-+ .to_irq = ixp4xx_gpio_to_irq,
-+ .base = 0,
-+ .ngpio = 16,
-+};
-+
- void __init ixp4xx_sys_init(void)
- {
- ixp4xx_exp_bus_size = SZ_16M;
-
- platform_add_devices(ixp4xx_devices, ARRAY_SIZE(ixp4xx_devices));
-
-+ gpiochip_add(&ixp4xx_gpio_chip);
-+
- if (cpu_is_ixp46x()) {
- int region;
-
-diff --git a/arch/arm/mach-ixp4xx/include/mach/gpio.h b/arch/arm/mach-ixp4xx/include/mach/gpio.h
-index 83d6b4e..ef37f26 100644
---- a/arch/arm/mach-ixp4xx/include/mach/gpio.h
-+++ b/arch/arm/mach-ixp4xx/include/mach/gpio.h
-@@ -1,79 +1,2 @@
--/*
-- * arch/arm/mach-ixp4xx/include/mach/gpio.h
-- *
-- * IXP4XX GPIO wrappers for arch-neutral GPIO calls
-- *
-- * Written by Milan Svoboda <msvoboda at ra.rockwell.com>
-- * Based on PXA implementation by Philipp Zabel <philipp.zabel at gmail.com>
-- *
-- * This program is free software; you can redistribute it and/or modify
-- * it under the terms of the GNU General Public License as published by
-- * the Free Software Foundation; either version 2 of the License, or
-- * (at your option) any later version.
-- *
-- * This program is distributed in the hope that it will be useful,
-- * but WITHOUT ANY WARRANTY; without even the implied warranty of
-- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- * GNU General Public License for more details.
-- *
-- * You should have received a copy of the GNU General Public License
-- * along with this program; if not, write to the Free Software
-- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-- *
-- */
--
--#ifndef __ASM_ARCH_IXP4XX_GPIO_H
--#define __ASM_ARCH_IXP4XX_GPIO_H
--
--#include <linux/kernel.h>
--#include <mach/hardware.h>
--
--#define __ARM_GPIOLIB_COMPLEX
--
--static inline int gpio_request(unsigned gpio, const char *label)
--{
-- return 0;
--}
--
--static inline void gpio_free(unsigned gpio)
--{
-- might_sleep();
--
-- return;
--}
--
--static inline int gpio_direction_input(unsigned gpio)
--{
-- gpio_line_config(gpio, IXP4XX_GPIO_IN);
-- return 0;
--}
--
--static inline int gpio_direction_output(unsigned gpio, int level)
--{
-- gpio_line_set(gpio, level);
-- gpio_line_config(gpio, IXP4XX_GPIO_OUT);
-- return 0;
--}
--
--static inline int gpio_get_value(unsigned gpio)
--{
-- int value;
--
-- gpio_line_get(gpio, &value);
--
-- return value;
--}
--
--static inline void gpio_set_value(unsigned gpio, int value)
--{
-- gpio_line_set(gpio, value);
--}
--
--#include <asm-generic/gpio.h> /* cansleep wrappers */
--
--extern int gpio_to_irq(int gpio);
--#define gpio_to_irq gpio_to_irq
--extern int irq_to_gpio(unsigned int irq);
--
--#endif
-+/* empty */
-
---
-1.7.9.5
-
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
deleted file mode 100644
index c470feb..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0009-drm-i915-properly-handle-interlaced-bit-for-sdvo-dtd.patch
+++ /dev/null
@@ -1,78 +0,0 @@
-From b519a21cd90e7ce2e8e8474c5beb3671862018b3 Mon Sep 17 00:00:00 2001
-From: Daniel Vetter <daniel.vetter at ffwll.ch>
-Date: Sat, 12 May 2012 22:22:58 +0200
-Subject: [PATCH 09/86] drm/i915: properly handle interlaced bit for sdvo dtd
- conversion
-
-commit 59d92bfa5f0cdf57f82f5181b0ad6af75c3fdf41 upstream.
-
-We've simply ignored this, which isn't too great. With this, interlaced
-1080i works on my HDMI screen connected through sdvo. For no apparent
-reason anything else still doesn't work as it should.
-
-While at it, give these magic numbers in the dtd proper names and
-add a comment that they match with EDID detailed timings.
-
-v2: Actually use the right bit for interlaced.
-
-Tested-by: Peter Ross <pross at xvid.org>
-Reviewed-by: Paulo Zanoni <paulo.r.zanoni at intel.com>
-Signed-Off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpu/drm/i915/intel_sdvo.c | 12 ++++++++----
- drivers/gpu/drm/i915/intel_sdvo_regs.h | 5 +++++
- 2 files changed, 13 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c
-index 8eddcca..a8d8ee5 100644
---- a/drivers/gpu/drm/i915/intel_sdvo.c
-+++ b/drivers/gpu/drm/i915/intel_sdvo.c
-@@ -769,10 +769,12 @@ static void intel_sdvo_get_dtd_from_mode(struct intel_sdvo_dtd *dtd,
- ((v_sync_len & 0x30) >> 4);
-
- dtd->part2.dtd_flags = 0x18;
-+ if (mode->flags & DRM_MODE_FLAG_INTERLACE)
-+ dtd->part2.dtd_flags |= DTD_FLAG_INTERLACE;
- if (mode->flags & DRM_MODE_FLAG_PHSYNC)
-- dtd->part2.dtd_flags |= 0x2;
-+ dtd->part2.dtd_flags |= DTD_FLAG_HSYNC_POSITIVE;
- if (mode->flags & DRM_MODE_FLAG_PVSYNC)
-- dtd->part2.dtd_flags |= 0x4;
-+ dtd->part2.dtd_flags |= DTD_FLAG_VSYNC_POSITIVE;
-
- dtd->part2.sdvo_flags = 0;
- dtd->part2.v_sync_off_high = v_sync_offset & 0xc0;
-@@ -806,9 +808,11 @@ static void intel_sdvo_get_mode_from_dtd(struct drm_display_mode * mode,
- mode->clock = dtd->part1.clock * 10;
-
- mode->flags &= ~(DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC);
-- if (dtd->part2.dtd_flags & 0x2)
-+ if (dtd->part2.dtd_flags & DTD_FLAG_INTERLACE)
-+ mode->flags |= DRM_MODE_FLAG_INTERLACE;
-+ if (dtd->part2.dtd_flags & DTD_FLAG_HSYNC_POSITIVE)
- mode->flags |= DRM_MODE_FLAG_PHSYNC;
-- if (dtd->part2.dtd_flags & 0x4)
-+ if (dtd->part2.dtd_flags & DTD_FLAG_VSYNC_POSITIVE)
- mode->flags |= DRM_MODE_FLAG_PVSYNC;
- }
-
-diff --git a/drivers/gpu/drm/i915/intel_sdvo_regs.h b/drivers/gpu/drm/i915/intel_sdvo_regs.h
-index 4aa6f34..372f33b 100644
---- a/drivers/gpu/drm/i915/intel_sdvo_regs.h
-+++ b/drivers/gpu/drm/i915/intel_sdvo_regs.h
-@@ -61,6 +61,11 @@ struct intel_sdvo_caps {
- u16 output_flags;
- } __attribute__((packed));
-
-+/* Note: SDVO detailed timing flags match EDID misc flags. */
-+#define DTD_FLAG_HSYNC_POSITIVE (1 << 1)
-+#define DTD_FLAG_VSYNC_POSITIVE (1 << 2)
-+#define DTD_FLAG_INTERLACE (1 << 7)
-+
- /** This matches the EDID DTD structure, more or less */
- struct intel_sdvo_dtd {
- struct {
---
-1.7.9.5
-
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
deleted file mode 100644
index 78fa10a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0010-drm-i915-enable-vdd-when-switching-off-the-eDP-panel.patch
+++ /dev/null
@@ -1,97 +0,0 @@
-From d915c2455a13d5067c95770d33dd71dae5fdabf0 Mon Sep 17 00:00:00 2001
-From: Daniel Vetter <daniel.vetter at ffwll.ch>
-Date: Sun, 20 May 2012 17:14:50 +0200
-Subject: [PATCH 10/86] drm/i915: enable vdd when switching off the eDP panel
-
-commit 6cb49835da0426f69a2931bc2a0a8156344b0e41 upstream.
-
-We have one bug report from a validation team that we get the eDP
-panel sequencing still somewhat wrong: We need to enable VDD while
-switching off the panel and backlight. Unfortunately that reporter
-seems to have fallen off the earth :(
-
-For another reporter this actually fixes a black panel issue because
-without this the backlight/panel gets confused and doesn't light up
-again.
-
-v2: I've forgotten to remove the vdd_off call in panel_off which is
-now bogus. This essentially reverts
-
-commit 17038de5f16569a25343cf68668f3b657eafb00e
-Author: Chris Wilson <chris at chris-wilson.co.uk>
-Date: Mon Apr 16 22:43:42 2012 +0100
-
- drm/i915/dp: Flush any outstanding work to turn the VDD off
-
-v3: the current panel_off code forces off the vdd power, too. Which is
-bogus and resulted in some funny warnings later on when we've tried to
-do aux channel communications with just the vdd forced on. Fix this,
-too.
-
-Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=46312
-Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=43163
-Tested-by: Vincent Frentzel <zcecc22 at gmail.com>
-Reviewed-by: Jesse Barnes <jbarnes at virtuousgeek.org>
-Signed-Off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
-[bwh: Backported to 3.2: nothing to revert here]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpu/drm/i915/intel_dp.c | 17 ++++++++---------
- 1 file changed, 8 insertions(+), 9 deletions(-)
-
-diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
-index 12eb789..d4c4937 100644
---- a/drivers/gpu/drm/i915/intel_dp.c
-+++ b/drivers/gpu/drm/i915/intel_dp.c
-@@ -1149,10 +1149,10 @@ static void ironlake_edp_panel_off(struct intel_dp *intel_dp)
-
- DRM_DEBUG_KMS("Turn eDP power off\n");
-
-- WARN(intel_dp->want_panel_vdd, "Cannot turn power off while VDD is on\n");
-+ WARN(!intel_dp->want_panel_vdd, "Need VDD to turn off panel\n");
-
- pp = ironlake_get_pp_control(dev_priv);
-- pp &= ~(POWER_TARGET_ON | EDP_FORCE_VDD | PANEL_POWER_RESET | EDP_BLC_ENABLE);
-+ pp &= ~(POWER_TARGET_ON | PANEL_POWER_RESET | EDP_BLC_ENABLE);
- I915_WRITE(PCH_PP_CONTROL, pp);
- POSTING_READ(PCH_PP_CONTROL);
-
-@@ -1260,18 +1260,16 @@ static void intel_dp_prepare(struct drm_encoder *encoder)
- {
- struct intel_dp *intel_dp = enc_to_intel_dp(encoder);
-
-+
-+ /* Make sure the panel is off before trying to change the mode. But also
-+ * ensure that we have vdd while we switch off the panel. */
-+ ironlake_edp_panel_vdd_on(intel_dp);
- ironlake_edp_backlight_off(intel_dp);
- ironlake_edp_panel_off(intel_dp);
-
-- /* Wake up the sink first */
-- ironlake_edp_panel_vdd_on(intel_dp);
- intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_ON);
- intel_dp_link_down(intel_dp);
- ironlake_edp_panel_vdd_off(intel_dp, false);
--
-- /* Make sure the panel is off before trying to
-- * change the mode
-- */
- }
-
- static void intel_dp_commit(struct drm_encoder *encoder)
-@@ -1303,10 +1301,11 @@ intel_dp_dpms(struct drm_encoder *encoder, int mode)
- uint32_t dp_reg = I915_READ(intel_dp->output_reg);
-
- if (mode != DRM_MODE_DPMS_ON) {
-+ /* Switching the panel off requires vdd. */
-+ ironlake_edp_panel_vdd_on(intel_dp);
- ironlake_edp_backlight_off(intel_dp);
- ironlake_edp_panel_off(intel_dp);
-
-- ironlake_edp_panel_vdd_on(intel_dp);
- intel_dp_sink_dpms(intel_dp, mode);
- intel_dp_link_down(intel_dp);
- ironlake_edp_panel_vdd_off(intel_dp, false);
---
-1.7.9.5
-
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
deleted file mode 100644
index ad6ab9f..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0011-drm-i915-Add-Clientron-E830-to-the-ignore-LVDS-list.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From ef4b47456ac4610f22bb2920e5562a6f854193d6 Mon Sep 17 00:00:00 2001
-From: Joel Sass <jsass at disklessworkstations.com>
-Date: Tue, 10 Jan 2012 13:03:55 -0500
-Subject: [PATCH 11/86] drm/i915: Add Clientron E830 to the ignore LVDS list
-
-commit 44306ab302687b519a31aa498b954c1e26f95a6b upstream.
-
-Signed-off-by: Joel Sass <jsass at disklessworkstations.com>
-Reviewed-by: Adam Jackson <ajax at redhat.com>
-Signed-off-by: Keith Packard <keithp at keithp.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpu/drm/i915/intel_lvds.c | 8 ++++++++
- 1 file changed, 8 insertions(+)
-
-diff --git a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c
-index 583c2d0..8b42354 100644
---- a/drivers/gpu/drm/i915/intel_lvds.c
-+++ b/drivers/gpu/drm/i915/intel_lvds.c
-@@ -716,6 +716,14 @@ static const struct dmi_system_id intel_no_lvds[] = {
- },
- },
- {
-+ .callback = intel_no_lvds_dmi_callback,
-+ .ident = "Clientron E830",
-+ .matches = {
-+ DMI_MATCH(DMI_SYS_VENDOR, "Clientron"),
-+ DMI_MATCH(DMI_PRODUCT_NAME, "E830"),
-+ },
-+ },
-+ {
- .callback = intel_no_lvds_dmi_callback,
- .ident = "Asus EeeBox PC EB1007",
- .matches = {
---
-1.7.9.5
-
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
deleted file mode 100644
index 8ffca2f..0000000
--- 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
+++ /dev/null
@@ -1,54 +0,0 @@
-From 6beb441393de6232df05c7850c99d26dd5ebbded Mon Sep 17 00:00:00 2001
-From: Marc Gariepy <mgariepy at ubuntu.com>
-Date: Thu, 9 Feb 2012 09:35:21 -0500
-Subject: [PATCH 12/86] drm/i915: Ignore LVDS on hp t5745 and hp st5747 thin
- client
-
-commit f5b8a7ed0405d48fd096acce48fbefbed77fb055 upstream.
-
-Add a no_lvds quirk for the HP t5745 and HP st5747 thin clients
-
-dmidecode for those thin clients are attached in thoses bugs:
-https://bugs.launchpad.net/ubuntu/+source/linux/+bug/911916
-https://bugs.launchpad.net/ubuntu/+source/linux/+bug/911920
-
-Signed-off-by: Marc Gariepy <mgariepy at ubuntu.com>
-Acked-by: Adam Jackson <ajax at redhat.com>
-Signed-off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
-[bwh: Backported to 3.2: adjust context because these quirk entries aren't
- consistently cc'd to stable and are now being applied out of order]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpu/drm/i915/intel_lvds.c | 16 ++++++++++++++++
- 1 file changed, 16 insertions(+)
-
-diff --git a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c
-index 8b42354..8c8a242 100644
---- a/drivers/gpu/drm/i915/intel_lvds.c
-+++ b/drivers/gpu/drm/i915/intel_lvds.c
-@@ -741,6 +741,22 @@ static const struct dmi_system_id intel_no_lvds[] = {
- },
- {
- .callback = intel_no_lvds_dmi_callback,
-+ .ident = "Hewlett-Packard t5745",
-+ .matches = {
-+ DMI_MATCH(DMI_BOARD_VENDOR, "Hewlett-Packard"),
-+ DMI_MATCH(DMI_BOARD_NAME, "hp t5745"),
-+ },
-+ },
-+ {
-+ .callback = intel_no_lvds_dmi_callback,
-+ .ident = "Hewlett-Packard st5747",
-+ .matches = {
-+ DMI_MATCH(DMI_BOARD_VENDOR, "Hewlett-Packard"),
-+ DMI_MATCH(DMI_BOARD_NAME, "hp st5747"),
-+ },
-+ },
-+ {
-+ .callback = intel_no_lvds_dmi_callback,
- .ident = "MSI Wind Box DC500",
- .matches = {
- DMI_MATCH(DMI_BOARD_VENDOR, "MICRO-STAR INTERNATIONAL CO., LTD"),
---
-1.7.9.5
-
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
deleted file mode 100644
index dc269a7..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0013-drm-i915-no-lvds-quirk-for-HP-t5740e-Thin-Client.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From f2171756e0e65d51316644162826fd3c64774734 Mon Sep 17 00:00:00 2001
-From: Jan-Benedict Glaw <jan-benedict.glaw at getslash.de>
-Date: Tue, 22 May 2012 15:21:53 +0200
-Subject: [PATCH 13/86] drm/i915: no lvds quirk for HP t5740e Thin Client
-
-commit 3347111999870c37eab1b969e90af9fdaf0334ba upstream.
-
-This box has DisplayPort and VGA, but no LVDS. Product specs are at
-http://h10010.www1.hp.com/wwpc/us/en/sm/WF25a/12454-12454-321959-338927-3640406-4282707.html?dnr=1
-and dmidecode output can be found at http://www.getslash.de/bug_attachments/dmidecode-t5740e.txt
-
-Signed-off-by: Jan-Benedict Glaw <jbglaw at getslash.de>
-Signed-off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpu/drm/i915/intel_lvds.c | 8 ++++++++
- 1 file changed, 8 insertions(+)
-
-diff --git a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c
-index 8c8a242..ceec71b 100644
---- a/drivers/gpu/drm/i915/intel_lvds.c
-+++ b/drivers/gpu/drm/i915/intel_lvds.c
-@@ -741,6 +741,14 @@ static const struct dmi_system_id intel_no_lvds[] = {
- },
- {
- .callback = intel_no_lvds_dmi_callback,
-+ .ident = "Hewlett-Packard HP t5740e Thin Client",
-+ .matches = {
-+ DMI_MATCH(DMI_BOARD_VENDOR, "Hewlett-Packard"),
-+ DMI_MATCH(DMI_PRODUCT_NAME, "HP t5740e Thin Client"),
-+ },
-+ },
-+ {
-+ .callback = intel_no_lvds_dmi_callback,
- .ident = "Hewlett-Packard t5745",
- .matches = {
- DMI_MATCH(DMI_BOARD_VENDOR, "Hewlett-Packard"),
---
-1.7.9.5
-
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
deleted file mode 100644
index 8a83f69..0000000
--- 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
+++ /dev/null
@@ -1,66 +0,0 @@
-From f3a0b43b245485fb298eac1ba14679bf95a2a88b Mon Sep 17 00:00:00 2001
-From: Daniel Vetter <daniel.vetter at ffwll.ch>
-Date: Tue, 22 May 2012 21:41:25 +0200
-Subject: [PATCH 14/86] drm/i915: wait for a vblank to pass after tv detect
-
-commit bf2125e2f7e931b50a6c76ba0435ba001409ccbf upstream.
-
-Otherwise the hw will get confused and result in a black screen.
-
-This regression has been most likely introduce in
-
-commit 974b93315b2213b74a42a87e8a9d4fc8c0dbe90c
-Author: Chris Wilson <chris at chris-wilson.co.uk>
-Date: Sun Sep 5 00:44:20 2010 +0100
-
- drm/i915/tv: Poll for DAC state change
-
-That commit replace the first msleep(20) with a busy-loop, but failed
-to keep the 2nd msleep around. Later on we've replaced all these
-msleep(20) by proper vblanks.
-
-For reference also see the commit in xf86-video-intel:
-
-commit 1142be53eb8d2ee8a9b60ace5d49f0ba27332275
-Author: Jesse Barnes <jbarnes at hobbes.lan>
-Date: Mon Jun 9 08:52:59 2008 -0700
-
- Fix TV programming: add vblank wait after TV_CTL writes
-
- Fxies FDO bug #14000; we need to wait for vblank after
- writing TV_CTL or following "DPMS on" calls may not actually enable the output.
-
-v2: As suggested by Chris Wilson, add a small comment to ensure that
-no one accidentally removes this vblank wait again - there really
-seems to be no sane explanation for why we need it, but it is
-required.
-
-Launchpad: https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-video-intel/+bug/763688
-Reported-and-Tested-by: Robert Lowery <rglowery at exemail.com.au>
-Cc: Rodrigo Vivi <rodrigo.vivi at gmail.com>
-Acked-by: Chris Wilson <chris at chris-wilson.co.uk>
-Signed-Off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpu/drm/i915/intel_tv.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/drivers/gpu/drm/i915/intel_tv.c b/drivers/gpu/drm/i915/intel_tv.c
-index 2b1fcad..12041fa 100644
---- a/drivers/gpu/drm/i915/intel_tv.c
-+++ b/drivers/gpu/drm/i915/intel_tv.c
-@@ -1307,6 +1307,11 @@ intel_tv_detect_type(struct intel_tv *intel_tv,
-
- I915_WRITE(TV_DAC, save_tv_dac & ~TVDAC_STATE_CHG_EN);
- I915_WRITE(TV_CTL, save_tv_ctl);
-+ POSTING_READ(TV_CTL);
-+
-+ /* For unknown reasons the hw barfs if we don't do this vblank wait. */
-+ intel_wait_for_vblank(intel_tv->base.base.dev,
-+ to_intel_crtc(intel_tv->base.base.crtc)->pipe);
-
- /* Restore interrupt config */
- if (connector->polled & DRM_CONNECTOR_POLL_HPD) {
---
-1.7.9.5
-
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
deleted file mode 100644
index 74edb53..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0015-drm-i915-Update-GEN6_RP_CONTROL-definitions.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From f303698996052a0fcd44d1fbfbfa58a20d59a1e1 Mon Sep 17 00:00:00 2001
-From: Ben Widawsky <ben at bwidawsk.net>
-Date: Mon, 12 Dec 2011 19:21:59 -0800
-Subject: [PATCH 15/86] drm/i915: Update GEN6_RP_CONTROL definitions
-
-commit 6ed55ee7da15329476174bc5821dbc723f671f44 upstream.
-
-This matches the modern specs more accurately.
-
-This will be used by the following patch to fix the way we display RC
-status.
-
-Signed-off-by: Ben Widawsky <ben at bwidawsk.net>
-Reviewed-by: Jesse Barnes <jbarnes at virtuousgeek.org>
-Reviewed-by: Eugeni Dodonov <eugeni.dodonov at intel.com>
-Signed-off-by: Keith Packard <keithp at keithp.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpu/drm/i915/i915_reg.h | 6 +++++-
- drivers/gpu/drm/i915/intel_display.c | 2 +-
- 2 files changed, 6 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
-index a1d53b6..06ec1e5 100644
---- a/drivers/gpu/drm/i915/i915_reg.h
-+++ b/drivers/gpu/drm/i915/i915_reg.h
-@@ -3533,7 +3533,11 @@
- #define GEN6_CAGF_MASK (0x7f << GEN6_CAGF_SHIFT)
- #define GEN6_RP_CONTROL 0xA024
- #define GEN6_RP_MEDIA_TURBO (1<<11)
--#define GEN6_RP_USE_NORMAL_FREQ (1<<9)
-+#define GEN6_RP_MEDIA_MODE_MASK (3<<9)
-+#define GEN6_RP_MEDIA_HW_TURBO_MODE (3<<9)
-+#define GEN6_RP_MEDIA_HW_NORMAL_MODE (2<<9)
-+#define GEN6_RP_MEDIA_HW_MODE (1<<9)
-+#define GEN6_RP_MEDIA_SW_MODE (0<<9)
- #define GEN6_RP_MEDIA_IS_GFX (1<<8)
- #define GEN6_RP_ENABLE (1<<7)
- #define GEN6_RP_UP_IDLE_MIN (0x1<<3)
-diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
-index 3ff980d..ed27fbc 100644
---- a/drivers/gpu/drm/i915/intel_display.c
-+++ b/drivers/gpu/drm/i915/intel_display.c
-@@ -8005,7 +8005,7 @@ void gen6_enable_rps(struct drm_i915_private *dev_priv)
- I915_WRITE(GEN6_RP_IDLE_HYSTERSIS, 10);
- I915_WRITE(GEN6_RP_CONTROL,
- GEN6_RP_MEDIA_TURBO |
-- GEN6_RP_USE_NORMAL_FREQ |
-+ GEN6_RP_MEDIA_HW_MODE |
- GEN6_RP_MEDIA_IS_GFX |
- GEN6_RP_ENABLE |
- GEN6_RP_UP_BUSY_AVG |
---
-1.7.9.5
-
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
deleted file mode 100644
index 5a9ce7b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0016-drm-i915-always-use-RPNSWREQ-for-turbo-change-reques.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From f3c8f039e644d5ce7961567174a9d5b8ebb4b447 Mon Sep 17 00:00:00 2001
-From: Jesse Barnes <jbarnes at virtuousgeek.org>
-Date: Tue, 22 May 2012 09:30:33 -0700
-Subject: [PATCH 16/86] drm/i915: always use RPNSWREQ for turbo change
- requests
-
-commit 89ba829e38bd500f438bc08af4229204c8ed7f35 upstream.
-
-Media turbo requests can either use RPVSWREQ or RPNSWREQ to indicate
-what the interrupt handler should do. Since we only deal with the
-latter in our turbo code, make the media engine use that for turbo
-requests.
-
-Tested-by: Joe Bloggsian <joebloggsian at gmail.com>
-Signed-off-by: Jesse Barnes <jbarnes at virtuousgeek.org>
-Reviewed-by: Eugeni Dodonov <eugeni.dodonov at intel.com>
-Signed-off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
-[bwh: Backported to 3.2: adjust filename]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpu/drm/i915/intel_display.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
-index ed27fbc..41bbe78 100644
---- a/drivers/gpu/drm/i915/intel_display.c
-+++ b/drivers/gpu/drm/i915/intel_display.c
-@@ -8005,7 +8005,7 @@ void gen6_enable_rps(struct drm_i915_private *dev_priv)
- I915_WRITE(GEN6_RP_IDLE_HYSTERSIS, 10);
- I915_WRITE(GEN6_RP_CONTROL,
- GEN6_RP_MEDIA_TURBO |
-- GEN6_RP_MEDIA_HW_MODE |
-+ GEN6_RP_MEDIA_HW_NORMAL_MODE |
- GEN6_RP_MEDIA_IS_GFX |
- GEN6_RP_ENABLE |
- GEN6_RP_UP_BUSY_AVG |
---
-1.7.9.5
-
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
deleted file mode 100644
index 8767291..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0017-solos-pci-Fix-DMA-support.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From 44882d3e1cf0d691b04f438f70a32e6b918961d7 Mon Sep 17 00:00:00 2001
-From: David Woodhouse <dwmw2 at infradead.org>
-Date: Thu, 24 May 2012 04:58:27 +0000
-Subject: [PATCH 17/86] solos-pci: Fix DMA support
-
-commit b4bd8ad9bb311e8536f726f7a633620ccd358cde upstream.
-
-DMA support has finally made its way to the top of the TODO list, having
-realised that a Geode using MMIO can't keep up with two ADSL2+ lines
-each running at 21Mb/s.
-
-This patch fixes a couple of bugs in the DMA support in the driver, so
-once the corresponding FPGA update is complete and tested everything
-should work properly.
-
-We weren't storing the currently-transmitting skb, so we were never
-unmapping it and never freeing/popping it when the TX was done.
-And the addition of pci_set_master() is fairly self-explanatory.
-
-Signed-off-by: David Woodhouse <David.Woodhouse at intel.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/atm/solos-pci.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/atm/solos-pci.c b/drivers/atm/solos-pci.c
-index 5d1d076..d452592 100644
---- a/drivers/atm/solos-pci.c
-+++ b/drivers/atm/solos-pci.c
-@@ -984,6 +984,7 @@ static uint32_t fpga_tx(struct solos_card *card)
- } else if (skb && card->using_dma) {
- SKB_CB(skb)->dma_addr = pci_map_single(card->dev, skb->data,
- skb->len, PCI_DMA_TODEVICE);
-+ card->tx_skb[port] = skb;
- iowrite32(SKB_CB(skb)->dma_addr,
- card->config_regs + TX_DMA_ADDR(port));
- }
-@@ -1152,7 +1153,8 @@ static int fpga_probe(struct pci_dev *dev, const struct pci_device_id *id)
- db_fpga_upgrade = db_firmware_upgrade = 0;
- }
-
-- if (card->fpga_version >= DMA_SUPPORTED){
-+ if (card->fpga_version >= DMA_SUPPORTED) {
-+ pci_set_master(dev);
- card->using_dma = 1;
- } else {
- card->using_dma = 0;
---
-1.7.9.5
-
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
deleted file mode 100644
index 0aa2bca..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0018-microblaze-Do-not-select-GENERIC_GPIO-by-default.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From d821eff0a262c36772be73973e20aea13568911e Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars at metafoo.de>
-Date: Mon, 9 Apr 2012 15:05:44 +0200
-Subject: [PATCH 18/86] microblaze: Do not select GENERIC_GPIO by default
-
-commit 59516b07b4ffa7e607a5787674ea3c405f1b390c upstream.
-
-The microblaze architecture does not provide a native GPIO API implementation
-nor requires GPIOLIB, but still selects GENERIC_GPIO by default. As a result the
-following build error occurs, if GPIOLIB is not selected:
-
- include/asm-generic/gpio.h: In function 'gpio_get_value_cansleep':
- include/asm-generic/gpio.h:218: error: implicit declaration of function '__gpio_get_value'
- include/asm-generic/gpio.h: In function 'gpio_set_value_cansleep':
- include/asm-generic/gpio.h:224: error: implicit declaration of function '__gpio_set_value'
-
-This patch addresses the issue by not selecting GENERIC_GPIO by default. This
-causes the GPIO API to be stubbed out if no implementation is provided.
-
-Signed-off-by: Lars-Peter Clausen <lars at metafoo.de>
-Tested-by: Michal Simek <monstr at monstr.eu>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/microblaze/Kconfig | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/arch/microblaze/Kconfig b/arch/microblaze/Kconfig
-index e446bab..a93ed04 100644
---- a/arch/microblaze/Kconfig
-+++ b/arch/microblaze/Kconfig
-@@ -46,7 +46,7 @@ config GENERIC_CLOCKEVENTS
- def_bool y
-
- config GENERIC_GPIO
-- def_bool y
-+ bool
-
- config GENERIC_CSUM
- def_bool y
---
-1.7.9.5
-
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
deleted file mode 100644
index 5bf5053..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0019-fix-boot-failure-on-32-bit-systems-caused-by-branch-.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From c3697804cdbf0ae3b5ae49ce49abea593e03e08c Mon Sep 17 00:00:00 2001
-From: John David Anglin <dave.anglin at bell.net>
-Date: Thu, 17 May 2012 10:34:34 -0400
-Subject: [PATCH 19/86] fix boot failure on 32-bit systems caused by branch
- stubs placed before .text
-
-commit ed5fb2471b7060767957fb964eb1aaec71533ab1 upstream.
-
-In certain configurations, the resulting kernel becomes too large to boot
-because the linker places the long branch stubs for the merged .text section
-at the very start of the image. As a result, the initial transfer of control
-jumps to an unexpected location. Fix this by placing the head text in a
-separate section so the stubs for .text are not at the start of the image.
-
-Signed-off-by: John David Anglin <dave.anglin at bell.net>
-Signed-off-by: James Bottomley <JBottomley at Parallels.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/parisc/kernel/vmlinux.lds.S | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/arch/parisc/kernel/vmlinux.lds.S b/arch/parisc/kernel/vmlinux.lds.S
-index fa6f2b8..64a9998 100644
---- a/arch/parisc/kernel/vmlinux.lds.S
-+++ b/arch/parisc/kernel/vmlinux.lds.S
-@@ -50,8 +50,10 @@ SECTIONS
- . = KERNEL_BINARY_TEXT_START;
-
- _text = .; /* Text and read-only data */
-- .text ALIGN(16) : {
-+ .head ALIGN(16) : {
- HEAD_TEXT
-+ } = 0
-+ .text ALIGN(16) : {
- TEXT_TEXT
- SCHED_TEXT
- LOCK_TEXT
-@@ -65,7 +67,7 @@ SECTIONS
- *(.fixup)
- *(.lock.text) /* out-of-line lock text */
- *(.gnu.warning)
-- } = 0
-+ }
- /* End of text section */
- _etext = .;
-
---
-1.7.9.5
-
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
deleted file mode 100644
index 45a00c5..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0020-fix-TLB-fault-path-on-PA2.0-narrow-systems.patch
+++ /dev/null
@@ -1,142 +0,0 @@
-From 4eb3b7f46aefa5899d72767e3bf1a826fd563a7a Mon Sep 17 00:00:00 2001
-From: James Bottomley <JBottomley at Parallels.com>
-Date: Mon, 21 May 2012 07:49:01 +0100
-Subject: [PATCH 20/86] fix TLB fault path on PA2.0 narrow systems
-
-commit 2f649c1f6f0fef445ce79a19b79e5ce8fe9d7f19 upstream.
-
-commit 5e185581d7c46ddd33cd9c01106d1fc86efb9376
-Author: James Bottomley <JBottomley at Parallels.com>
-
- [PARISC] fix PA1.1 oops on boot
-
-Didn't quite fix the crash on boot. It moved it from PA1.1 processors to
-PA2.0 narrow kernels. The final fix is to make sure the [id]tlb_miss_20 paths
-also work. Even on narrow systems, these paths require using the wide
-instructions becuase the tlb insertion format is wide. Fix this by
-conditioning the dep[wd],z on whether we're being called from _11 or _20[w]
-paths.
-
-Tested-by: Helge Deller <deller at gmx.de>
-Signed-off-by: James Bottomley <JBottomley at Parallels.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/parisc/kernel/entry.S | 30 +++++++++++++++++-------------
- 1 file changed, 17 insertions(+), 13 deletions(-)
-
-diff --git a/arch/parisc/kernel/entry.S b/arch/parisc/kernel/entry.S
-index 5350342..07ef351 100644
---- a/arch/parisc/kernel/entry.S
-+++ b/arch/parisc/kernel/entry.S
-@@ -552,7 +552,7 @@
- * entry (identifying the physical page) and %r23 up with
- * the from tlb entry (or nothing if only a to entry---for
- * clear_user_page_asm) */
-- .macro do_alias spc,tmp,tmp1,va,pte,prot,fault
-+ .macro do_alias spc,tmp,tmp1,va,pte,prot,fault,patype
- cmpib,COND(<>),n 0,\spc,\fault
- ldil L%(TMPALIAS_MAP_START),\tmp
- #if defined(CONFIG_64BIT) && (TMPALIAS_MAP_START >= 0x80000000)
-@@ -581,11 +581,15 @@
- */
- cmpiclr,= 0x01,\tmp,%r0
- ldi (_PAGE_DIRTY|_PAGE_READ|_PAGE_WRITE),\prot
--#ifdef CONFIG_64BIT
-+.ifc \patype,20
- depd,z \prot,8,7,\prot
--#else
-+.else
-+.ifc \patype,11
- depw,z \prot,8,7,\prot
--#endif
-+.else
-+ .error "undefined PA type to do_alias"
-+.endif
-+.endif
- /*
- * OK, it is in the temp alias region, check whether "from" or "to".
- * Check "subtle" note in pacache.S re: r23/r26.
-@@ -1189,7 +1193,7 @@ dtlb_miss_20w:
- nop
-
- dtlb_check_alias_20w:
-- do_alias spc,t0,t1,va,pte,prot,dtlb_fault
-+ do_alias spc,t0,t1,va,pte,prot,dtlb_fault,20
-
- idtlbt pte,prot
-
-@@ -1213,7 +1217,7 @@ nadtlb_miss_20w:
- nop
-
- nadtlb_check_alias_20w:
-- do_alias spc,t0,t1,va,pte,prot,nadtlb_emulate
-+ do_alias spc,t0,t1,va,pte,prot,nadtlb_emulate,20
-
- idtlbt pte,prot
-
-@@ -1245,7 +1249,7 @@ dtlb_miss_11:
- nop
-
- dtlb_check_alias_11:
-- do_alias spc,t0,t1,va,pte,prot,dtlb_fault
-+ do_alias spc,t0,t1,va,pte,prot,dtlb_fault,11
-
- idtlba pte,(va)
- idtlbp prot,(va)
-@@ -1277,7 +1281,7 @@ nadtlb_miss_11:
- nop
-
- nadtlb_check_alias_11:
-- do_alias spc,t0,t1,va,pte,prot,nadtlb_emulate
-+ do_alias spc,t0,t1,va,pte,prot,nadtlb_emulate,11
-
- idtlba pte,(va)
- idtlbp prot,(va)
-@@ -1304,7 +1308,7 @@ dtlb_miss_20:
- nop
-
- dtlb_check_alias_20:
-- do_alias spc,t0,t1,va,pte,prot,dtlb_fault
-+ do_alias spc,t0,t1,va,pte,prot,dtlb_fault,20
-
- idtlbt pte,prot
-
-@@ -1330,7 +1334,7 @@ nadtlb_miss_20:
- nop
-
- nadtlb_check_alias_20:
-- do_alias spc,t0,t1,va,pte,prot,nadtlb_emulate
-+ do_alias spc,t0,t1,va,pte,prot,nadtlb_emulate,20
-
- idtlbt pte,prot
-
-@@ -1457,7 +1461,7 @@ naitlb_miss_20w:
- nop
-
- naitlb_check_alias_20w:
-- do_alias spc,t0,t1,va,pte,prot,naitlb_fault
-+ do_alias spc,t0,t1,va,pte,prot,naitlb_fault,20
-
- iitlbt pte,prot
-
-@@ -1511,7 +1515,7 @@ naitlb_miss_11:
- nop
-
- naitlb_check_alias_11:
-- do_alias spc,t0,t1,va,pte,prot,itlb_fault
-+ do_alias spc,t0,t1,va,pte,prot,itlb_fault,11
-
- iitlba pte,(%sr0, va)
- iitlbp prot,(%sr0, va)
-@@ -1557,7 +1561,7 @@ naitlb_miss_20:
- nop
-
- naitlb_check_alias_20:
-- do_alias spc,t0,t1,va,pte,prot,naitlb_fault
-+ do_alias spc,t0,t1,va,pte,prot,naitlb_fault,20
-
- iitlbt pte,prot
-
---
-1.7.9.5
-
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
deleted file mode 100644
index ae85f30..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0021-iwlwifi-update-BT-traffic-load-states-correctly.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From d6c8a717c65d6ffaf27d7eead214275785dfd47d Mon Sep 17 00:00:00 2001
-From: Meenakshi Venkataraman <meenakshi.venkataraman at intel.com>
-Date: Wed, 16 May 2012 22:35:57 +0200
-Subject: [PATCH 21/86] iwlwifi: update BT traffic load states correctly
-
-commit 882dde8eb0d49ce0f853f8f4084dde56a21fe55f upstream.
-
-When BT traffic load changes from its
-previous state, a new LQ command needs to be
-sent down to the firmware. This needs to
-be done only once per change. The state
-variable that keeps track of this change is
-last_bt_traffic_load. However, it was not
-being updated when the change had been
-handled. Not updating this variable was
-causing a flood of advanced BT config
-commands to be sent to the firmware. Fix
-this.
-
-Signed-off-by: Meenakshi Venkataraman <meenakshi.venkataraman at intel.com>
-Signed-off-by: Wey-Yi Guy <wey-yi.w.guy at intel.com>
-Signed-off-by: Johannes Berg <johannes.berg at intel.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/wireless/iwlwifi/iwl-agn-rs.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-rs.c b/drivers/net/wireless/iwlwifi/iwl-agn-rs.c
-index 66118ce..9ba2c1b 100644
---- a/drivers/net/wireless/iwlwifi/iwl-agn-rs.c
-+++ b/drivers/net/wireless/iwlwifi/iwl-agn-rs.c
-@@ -886,6 +886,7 @@ static void rs_bt_update_lq(struct iwl_priv *priv, struct iwl_rxon_context *ctx,
- if ((priv->bt_traffic_load != priv->last_bt_traffic_load) ||
- (priv->bt_full_concurrent != full_concurrent)) {
- priv->bt_full_concurrent = full_concurrent;
-+ priv->last_bt_traffic_load = priv->bt_traffic_load;
-
- /* Update uCode's rate table. */
- tbl = &(lq_sta->lq_info[lq_sta->active_tbl]);
---
-1.7.9.5
-
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
deleted file mode 100644
index e07210e..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0022-iwlwifi-do-not-use-shadow-registers-by-default.patch
+++ /dev/null
@@ -1,84 +0,0 @@
-From 1b2a3d0a7a21c97a9803bafe00e150d6b7d6b7c3 Mon Sep 17 00:00:00 2001
-From: Meenakshi Venkataraman <meenakshi.venkataraman at intel.com>
-Date: Wed, 16 May 2012 22:35:59 +0200
-Subject: [PATCH 22/86] iwlwifi: do not use shadow registers by default
-
-commit 66a770729a5cdd24efed8afa5258f81232d8bba2 upstream.
-
-Shadow registers in the device are meant to
-allow the driver to update certain device
-registers without needing to wake up all
-components of the device. However, using
-this feature in the device causes
-communication between the driver and the
-device to become unreliable, resulting in
-host command timeouts.
-
-Disable this feature by default till a fix is
-available for the bug.
-
-Signed-off-by: Meenakshi Venkataraman <meenakshi.venkataraman at intel.com>
-Signed-off-by: Johannes Berg <johannes.berg at intel.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/wireless/iwlwifi/iwl-2000.c | 4 ++--
- drivers/net/wireless/iwlwifi/iwl-6000.c | 6 +++---
- 2 files changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/drivers/net/wireless/iwlwifi/iwl-2000.c b/drivers/net/wireless/iwlwifi/iwl-2000.c
-index 9823e41..a97a52a 100644
---- a/drivers/net/wireless/iwlwifi/iwl-2000.c
-+++ b/drivers/net/wireless/iwlwifi/iwl-2000.c
-@@ -211,7 +211,7 @@ static struct iwl_base_params iwl2000_base_params = {
- .chain_noise_scale = 1000,
- .wd_timeout = IWL_DEF_WD_TIMEOUT,
- .max_event_log_size = 512,
-- .shadow_reg_enable = true,
-+ .shadow_reg_enable = false, /* TODO: fix bugs using this feature */
- .hd_v2 = true,
- };
-
-@@ -230,7 +230,7 @@ static struct iwl_base_params iwl2030_base_params = {
- .chain_noise_scale = 1000,
- .wd_timeout = IWL_LONG_WD_TIMEOUT,
- .max_event_log_size = 512,
-- .shadow_reg_enable = true,
-+ .shadow_reg_enable = false, /* TODO: fix bugs using this feature */
- .hd_v2 = true,
- };
-
-diff --git a/drivers/net/wireless/iwlwifi/iwl-6000.c b/drivers/net/wireless/iwlwifi/iwl-6000.c
-index b4f809c..0b9f797 100644
---- a/drivers/net/wireless/iwlwifi/iwl-6000.c
-+++ b/drivers/net/wireless/iwlwifi/iwl-6000.c
-@@ -308,7 +308,7 @@ static struct iwl_base_params iwl6000_base_params = {
- .chain_noise_scale = 1000,
- .wd_timeout = IWL_DEF_WD_TIMEOUT,
- .max_event_log_size = 512,
-- .shadow_reg_enable = true,
-+ .shadow_reg_enable = false, /* TODO: fix bugs using this feature */
- };
-
- static struct iwl_base_params iwl6050_base_params = {
-@@ -325,7 +325,7 @@ static struct iwl_base_params iwl6050_base_params = {
- .chain_noise_scale = 1500,
- .wd_timeout = IWL_DEF_WD_TIMEOUT,
- .max_event_log_size = 1024,
-- .shadow_reg_enable = true,
-+ .shadow_reg_enable = false, /* TODO: fix bugs using this feature */
- };
- static struct iwl_base_params iwl6000_g2_base_params = {
- .eeprom_size = OTP_LOW_IMAGE_SIZE,
-@@ -341,7 +341,7 @@ static struct iwl_base_params iwl6000_g2_base_params = {
- .chain_noise_scale = 1000,
- .wd_timeout = IWL_LONG_WD_TIMEOUT,
- .max_event_log_size = 512,
-- .shadow_reg_enable = true,
-+ .shadow_reg_enable = false, /* TODO: fix bugs using this feature */
- };
-
- static struct iwl_ht_params iwl6000_ht_params = {
---
-1.7.9.5
-
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
deleted file mode 100644
index 63e29df..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0023-wl1251-fix-oops-on-early-interrupt.patch
+++ /dev/null
@@ -1,69 +0,0 @@
-From 430e704f68d8b8c21a7d764e1f0ea94614a303e2 Mon Sep 17 00:00:00 2001
-From: Grazvydas Ignotas <notasas at gmail.com>
-Date: Fri, 18 May 2012 03:04:08 +0300
-Subject: [PATCH 23/86] wl1251: fix oops on early interrupt
-
-commit f380f2c4a12e913356bd49f8790ec1063c4fe9f8 upstream.
-
-This driver disables interrupt just after requesting it and enables it
-later, after interface is up. However currently there is a time window
-between request_irq() and disable_irq() where if interrupt arrives, the
-driver oopses because it's not yet ready to process it. This can be
-reproduced by inserting the module, associating and removing the module
-multiple times.
-
-Eliminate this race by setting IRQF_NOAUTOEN flag before request_irq().
-
-Signed-off-by: Grazvydas Ignotas <notasas at gmail.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-[bwh: Backported to 3.2: adjust filename]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/wireless/wl1251/sdio.c | 2 +-
- drivers/net/wireless/wl1251/spi.c | 3 +--
- 2 files changed, 2 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/net/wireless/wl1251/sdio.c b/drivers/net/wireless/wl1251/sdio.c
-index 1b851f6..e2750a1 100644
---- a/drivers/net/wireless/wl1251/sdio.c
-+++ b/drivers/net/wireless/wl1251/sdio.c
-@@ -260,6 +260,7 @@ static int wl1251_sdio_probe(struct sdio_func *func,
- }
-
- if (wl->irq) {
-+ irq_set_status_flags(wl->irq, IRQ_NOAUTOEN);
- ret = request_irq(wl->irq, wl1251_line_irq, 0, "wl1251", wl);
- if (ret < 0) {
- wl1251_error("request_irq() failed: %d", ret);
-@@ -267,7 +268,6 @@ static int wl1251_sdio_probe(struct sdio_func *func,
- }
-
- irq_set_irq_type(wl->irq, IRQ_TYPE_EDGE_RISING);
-- disable_irq(wl->irq);
-
- wl1251_sdio_ops.enable_irq = wl1251_enable_line_irq;
- wl1251_sdio_ops.disable_irq = wl1251_disable_line_irq;
-diff --git a/drivers/net/wireless/wl1251/spi.c b/drivers/net/wireless/wl1251/spi.c
-index eaa5f95..134ae9c 100644
---- a/drivers/net/wireless/wl1251/spi.c
-+++ b/drivers/net/wireless/wl1251/spi.c
-@@ -281,6 +281,7 @@ static int __devinit wl1251_spi_probe(struct spi_device *spi)
-
- wl->use_eeprom = pdata->use_eeprom;
-
-+ irq_set_status_flags(wl->irq, IRQ_NOAUTOEN);
- ret = request_irq(wl->irq, wl1251_irq, 0, DRIVER_NAME, wl);
- if (ret < 0) {
- wl1251_error("request_irq() failed: %d", ret);
-@@ -289,8 +290,6 @@ static int __devinit wl1251_spi_probe(struct spi_device *spi)
-
- irq_set_irq_type(wl->irq, IRQ_TYPE_EDGE_RISING);
-
-- disable_irq(wl->irq);
--
- ret = wl1251_init_ieee80211(wl);
- if (ret)
- goto out_irq;
---
-1.7.9.5
-
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
deleted file mode 100644
index 0eacfc1..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0024-NFSv4-Map-NFS4ERR_SHARE_DENIED-into-an-EACCES-error-.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From b93bea69232a6e245feb4094ffbb43181a057a31 Mon Sep 17 00:00:00 2001
-From: Trond Myklebust <Trond.Myklebust at netapp.com>
-Date: Mon, 28 May 2012 11:36:28 -0400
-Subject: [PATCH 24/86] NFSv4: Map NFS4ERR_SHARE_DENIED into an EACCES error
- instead of EIO
-
-commit fb13bfa7e1bcfdcfdece47c24b62f1a1cad957e9 upstream.
-
-If a file OPEN is denied due to a share lock, the resulting
-NFS4ERR_SHARE_DENIED is currently mapped to the default EIO.
-This patch adds a more appropriate mapping, and brings Linux
-into line with what Solaris 10 does.
-
-See https://bugzilla.kernel.org/show_bug.cgi?id=43286
-
-Signed-off-by: Trond Myklebust <Trond.Myklebust at netapp.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/nfs/nfs4proc.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
-index 03d9b90..a3cae5d 100644
---- a/fs/nfs/nfs4proc.c
-+++ b/fs/nfs/nfs4proc.c
-@@ -96,6 +96,8 @@ static int nfs4_map_errors(int err)
- case -NFS4ERR_BADOWNER:
- case -NFS4ERR_BADNAME:
- return -EINVAL;
-+ case -NFS4ERR_SHARE_DENIED:
-+ return -EACCES;
- default:
- dprintk("%s could not handle NFSv4 error %d\n",
- __func__, -err);
---
-1.7.9.5
-
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
deleted file mode 100644
index 4f3f165..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0025-drm-radeon-fix-XFX-quirk.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From cce4054d32b88b0f9402746063937e36af798333 Mon Sep 17 00:00:00 2001
-From: Alex Deucher <alexander.deucher at amd.com>
-Date: Wed, 23 May 2012 11:48:59 -0400
-Subject: [PATCH 25/86] drm/radeon: fix XFX quirk
-
-commit 1ebf169ad4dc68f18cc0dab35163b0f324fc6c41 upstream.
-
-Only override the ddc bus if the connector doesn't have
-a valid one. The existing code overrode the ddc bus for
-all connectors even if it had ddc bus.
-
-Fixes ddc on another XFX card with the same pci ids that
-was broken by the quirk overwriting the correct ddc bus.
-
-Reported-by: Mehdi Aqadjani Memar <m.aqadjanimemar at student.ru.nl>
-Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
-Signed-off-by: Dave Airlie <airlied at redhat.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpu/drm/radeon/radeon_atombios.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/gpu/drm/radeon/radeon_atombios.c b/drivers/gpu/drm/radeon/radeon_atombios.c
-index 8e1532f..9d2c369 100644
---- a/drivers/gpu/drm/radeon/radeon_atombios.c
-+++ b/drivers/gpu/drm/radeon/radeon_atombios.c
-@@ -438,7 +438,9 @@ static bool radeon_atom_apply_quirks(struct drm_device *dev,
- */
- if ((dev->pdev->device == 0x9498) &&
- (dev->pdev->subsystem_vendor == 0x1682) &&
-- (dev->pdev->subsystem_device == 0x2452)) {
-+ (dev->pdev->subsystem_device == 0x2452) &&
-+ (i2c_bus->valid == false) &&
-+ !(supported_device & (ATOM_DEVICE_TV_SUPPORT | ATOM_DEVICE_CV_SUPPORT))) {
- struct radeon_device *rdev = dev->dev_private;
- *i2c_bus = radeon_lookup_i2c_gpio(rdev, 0x93);
- }
---
-1.7.9.5
-
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
deleted file mode 100644
index ee6bd61..0000000
--- 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
+++ /dev/null
@@ -1,92 +0,0 @@
-From 1e0f99c0848ee2dfcc5a814f141c2c81c20a23ca Mon Sep 17 00:00:00 2001
-From: Felix Fietkau <nbd at openwrt.org>
-Date: Thu, 24 May 2012 14:32:20 +0200
-Subject: [PATCH 26/86] ath9k: fix a use-after-free-bug when
- ath_tx_setup_buffer() fails
-
-commit 81357a281dcc454841532c46b30e6f2ba12b73ea upstream.
-
-ath_tx_setup_buffer() can fail if there is no ath_buf left, or if mapping DMA
-failed. In this case it frees the skb passed to it.
-If ath_tx_setup_buffer is called from ath_tx_form_aggr, the skb is still
-linked into the tid buffer list and must be dequeued before being released.
-
-Signed-off-by: Felix Fietkau <nbd at openwrt.org>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/wireless/ath/ath9k/xmit.c | 16 ++++++++++------
- 1 file changed, 10 insertions(+), 6 deletions(-)
-
-diff --git a/drivers/net/wireless/ath/ath9k/xmit.c b/drivers/net/wireless/ath/ath9k/xmit.c
-index 03b0a65..76fd277 100644
---- a/drivers/net/wireless/ath/ath9k/xmit.c
-+++ b/drivers/net/wireless/ath/ath9k/xmit.c
-@@ -64,7 +64,8 @@ static void ath_tx_update_baw(struct ath_softc *sc, struct ath_atx_tid *tid,
- static struct ath_buf *ath_tx_setup_buffer(struct ath_softc *sc,
- struct ath_txq *txq,
- struct ath_atx_tid *tid,
-- struct sk_buff *skb);
-+ struct sk_buff *skb,
-+ bool dequeue);
-
- enum {
- MCS_HT20,
-@@ -761,7 +762,7 @@ static enum ATH_AGGR_STATUS ath_tx_form_aggr(struct ath_softc *sc,
- fi = get_frame_info(skb);
- bf = fi->bf;
- if (!fi->bf)
-- bf = ath_tx_setup_buffer(sc, txq, tid, skb);
-+ bf = ath_tx_setup_buffer(sc, txq, tid, skb, true);
-
- if (!bf)
- continue;
-@@ -1669,7 +1670,7 @@ static void ath_tx_send_ampdu(struct ath_softc *sc, struct ath_atx_tid *tid,
- return;
- }
-
-- bf = ath_tx_setup_buffer(sc, txctl->txq, tid, skb);
-+ bf = ath_tx_setup_buffer(sc, txctl->txq, tid, skb, false);
- if (!bf)
- return;
-
-@@ -1696,7 +1697,7 @@ static void ath_tx_send_normal(struct ath_softc *sc, struct ath_txq *txq,
-
- bf = fi->bf;
- if (!bf)
-- bf = ath_tx_setup_buffer(sc, txq, tid, skb);
-+ bf = ath_tx_setup_buffer(sc, txq, tid, skb, false);
-
- if (!bf)
- return;
-@@ -1761,7 +1762,8 @@ u8 ath_txchainmask_reduction(struct ath_softc *sc, u8 chainmask, u32 rate)
- static struct ath_buf *ath_tx_setup_buffer(struct ath_softc *sc,
- struct ath_txq *txq,
- struct ath_atx_tid *tid,
-- struct sk_buff *skb)
-+ struct sk_buff *skb,
-+ bool dequeue)
- {
- struct ath_common *common = ath9k_hw_common(sc->sc_ah);
- struct ath_frame_info *fi = get_frame_info(skb);
-@@ -1802,6 +1804,8 @@ static struct ath_buf *ath_tx_setup_buffer(struct ath_softc *sc,
- return bf;
-
- error:
-+ if (dequeue)
-+ __skb_unlink(skb, &tid->buf_q);
- dev_kfree_skb_any(skb);
- return NULL;
- }
-@@ -1833,7 +1837,7 @@ static void ath_tx_start_dma(struct ath_softc *sc, struct sk_buff *skb,
- */
- ath_tx_send_ampdu(sc, tid, skb, txctl);
- } else {
-- bf = ath_tx_setup_buffer(sc, txctl->txq, tid, skb);
-+ bf = ath_tx_setup_buffer(sc, txctl->txq, tid, skb, false);
- if (!bf)
- goto out;
-
---
-1.7.9.5
-
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
deleted file mode 100644
index d357b19..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0027-mac80211-fix-ADDBA-declined-after-suspend-with-wowla.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From 8446a84cc5885f2d4b3816dccac474f97fc047a9 Mon Sep 17 00:00:00 2001
-From: Eyal Shapira <eyal at wizery.com>
-Date: Tue, 29 May 2012 02:00:22 -0700
-Subject: [PATCH 27/86] mac80211: fix ADDBA declined after suspend with wowlan
-
-commit 7b21aea04d084916ac4e0e8852dcc9cd60ec0d1d upstream.
-
-WLAN_STA_BLOCK_BA is set while suspending but doesn't get cleared
-when resuming in case of wowlan. This causes further ADDBA requests
-received to be rejected. Fix it by clearing it in the wowlan path
-as well.
-
-Signed-off-by: Eyal Shapira <eyal at wizery.com>
-Reviewed-by: Johannes Berg <johannes at sipsolutions.net>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/mac80211/util.c | 12 ++++++------
- 1 file changed, 6 insertions(+), 6 deletions(-)
-
-diff --git a/net/mac80211/util.c b/net/mac80211/util.c
-index d5230ec..7095ae5 100644
---- a/net/mac80211/util.c
-+++ b/net/mac80211/util.c
-@@ -1111,6 +1111,12 @@ int ieee80211_reconfig(struct ieee80211_local *local)
- }
- }
-
-+ /* add back keys */
-+ list_for_each_entry(sdata, &local->interfaces, list)
-+ if (ieee80211_sdata_running(sdata))
-+ ieee80211_enable_keys(sdata);
-+
-+ wake_up:
- /*
- * Clear the WLAN_STA_BLOCK_BA flag so new aggregation
- * sessions can be established after a resume.
-@@ -1132,12 +1138,6 @@ int ieee80211_reconfig(struct ieee80211_local *local)
- mutex_unlock(&local->sta_mtx);
- }
-
-- /* add back keys */
-- list_for_each_entry(sdata, &local->interfaces, list)
-- if (ieee80211_sdata_running(sdata))
-- ieee80211_enable_keys(sdata);
--
-- wake_up:
- ieee80211_wake_queues_by_reason(hw,
- IEEE80211_QUEUE_STOP_REASON_SUSPEND);
-
---
-1.7.9.5
-
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
deleted file mode 100644
index 56441d0..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0028-mm-fork-fix-overflow-in-vma-length-when-copying-mmap.patch
+++ /dev/null
@@ -1,81 +0,0 @@
-From 078ef70fff8b069bb9bc4eb27aa649ee8aa977dd Mon Sep 17 00:00:00 2001
-From: Siddhesh Poyarekar <siddhesh.poyarekar at gmail.com>
-Date: Tue, 29 May 2012 15:06:22 -0700
-Subject: [PATCH 28/86] mm/fork: fix overflow in vma length when copying mmap
- on clone
-
-commit 7edc8b0ac16cbaed7cb4ea4c6b95ce98d2997e84 upstream.
-
-The vma length in dup_mmap is calculated and stored in a unsigned int,
-which is insufficient and hence overflows for very large maps (beyond
-16TB). The following program demonstrates this:
-
-#include <stdio.h>
-#include <unistd.h>
-#include <sys/mman.h>
-
-#define GIG 1024 * 1024 * 1024L
-#define EXTENT 16393
-
-int main(void)
-{
- int i, r;
- void *m;
- char buf[1024];
-
- for (i = 0; i < EXTENT; i++) {
- m = mmap(NULL, (size_t) 1 * 1024 * 1024 * 1024L,
- PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, 0, 0);
-
- if (m == (void *)-1)
- printf("MMAP Failed: %d\n", m);
- else
- printf("%d : MMAP returned %p\n", i, m);
-
- r = fork();
-
- if (r == 0) {
- printf("%d: successed\n", i);
- return 0;
- } else if (r < 0)
- printf("FORK Failed: %d\n", r);
- else if (r > 0)
- wait(NULL);
- }
- return 0;
-}
-
-Increase the storage size of the result to unsigned long, which is
-sufficient for storing the difference between addresses.
-
-Signed-off-by: Siddhesh Poyarekar <siddhesh.poyarekar at gmail.com>
-Cc: Tejun Heo <tj at kernel.org>
-Cc: Oleg Nesterov <oleg at redhat.com>
-Cc: Jens Axboe <axboe at kernel.dk>
-Cc: Peter Zijlstra <a.p.zijlstra at chello.nl>
-Acked-by: Hugh Dickins <hughd at google.com>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-[bwh: Backported to 3.2: adjust context]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- kernel/fork.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/kernel/fork.c b/kernel/fork.c
-index 26f1ab0..79ee71f 100644
---- a/kernel/fork.c
-+++ b/kernel/fork.c
-@@ -352,7 +352,8 @@ static int dup_mmap(struct mm_struct *mm, struct mm_struct *oldmm)
- }
- charge = 0;
- if (mpnt->vm_flags & VM_ACCOUNT) {
-- unsigned int len = (mpnt->vm_end - mpnt->vm_start) >> PAGE_SHIFT;
-+ unsigned long len;
-+ len = (mpnt->vm_end - mpnt->vm_start) >> PAGE_SHIFT;
- if (security_vm_enough_memory(len))
- goto fail_nomem;
- charge = len;
---
-1.7.9.5
-
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
deleted file mode 100644
index efa5eeb..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0029-mm-consider-all-swapped-back-pages-in-used-once-logi.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-From cf8d6db03ffac6e6a8fa566942bb47d2cc2957bf Mon Sep 17 00:00:00 2001
-From: Michal Hocko <mhocko at suse.cz>
-Date: Tue, 29 May 2012 15:06:45 -0700
-Subject: [PATCH 29/86] mm: consider all swapped back pages in used-once logic
-
-commit e48982734ea0500d1eba4f9d96195acc5406cad6 upstream.
-
-Commit 645747462435 ("vmscan: detect mapped file pages used only once")
-made mapped pages have another round in inactive list because they might
-be just short lived and so we could consider them again next time. This
-heuristic helps to reduce pressure on the active list with a streaming
-IO worklods.
-
-This patch fixes a regression introduced by this commit for heavy shmem
-based workloads because unlike Anon pages, which are excluded from this
-heuristic because they are usually long lived, shmem pages are handled
-as a regular page cache.
-
-This doesn't work quite well, unfortunately, if the workload is mostly
-backed by shmem (in memory database sitting on 80% of memory) with a
-streaming IO in the background (backup - up to 20% of memory). Anon
-inactive list is full of (dirty) shmem pages when watermarks are hit.
-Shmem pages are kept in the inactive list (they are referenced) in the
-first round and it is hard to reclaim anything else so we reach lower
-scanning priorities very quickly which leads to an excessive swap out.
-
-Let's fix this by excluding all swap backed pages (they tend to be long
-lived wrt. the regular page cache anyway) from used-once heuristic and
-rather activate them if they are referenced.
-
-The customer's workload is shmem backed database (80% of RAM) and they
-are measuring transactions/s with an IO in the background (20%).
-Transactions touch more or less random rows in the table. The
-transaction rate fell by a factor of 3 (in the worst case) because of
-commit 64574746. This patch restores the previous numbers.
-
-Signed-off-by: Michal Hocko <mhocko at suse.cz>
-Acked-by: Johannes Weiner <hannes at cmpxchg.org>
-Cc: Mel Gorman <mel at csn.ul.ie>
-Cc: Minchan Kim <minchan at kernel.org>
-Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu at jp.fujitsu.com>
-Reviewed-by: Rik van Riel <riel at redhat.com>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- mm/vmscan.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/mm/vmscan.c b/mm/vmscan.c
-index cb33d9c..fbe2d2c 100644
---- a/mm/vmscan.c
-+++ b/mm/vmscan.c
-@@ -697,7 +697,7 @@ static enum page_references page_check_references(struct page *page,
- return PAGEREF_RECLAIM;
-
- if (referenced_ptes) {
-- if (PageAnon(page))
-+ if (PageSwapBacked(page))
- return PAGEREF_ACTIVATE;
- /*
- * All mapped pages start out with page table
---
-1.7.9.5
-
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
deleted file mode 100644
index eb99e73..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0030-hugetlb-fix-resv_map-leak-in-error-path.patch
+++ /dev/null
@@ -1,101 +0,0 @@
-From a82ac9b8fd3715f2bb17cd888fad25cfefa4bccb Mon Sep 17 00:00:00 2001
-From: Dave Hansen <dave at linux.vnet.ibm.com>
-Date: Fri, 18 May 2012 11:46:30 -0700
-Subject: [PATCH 30/86] hugetlb: fix resv_map leak in error path
-
-commit c50ac050811d6485616a193eb0f37bfbd191cc89 upstream.
-
-When called for anonymous (non-shared) mappings, hugetlb_reserve_pages()
-does a resv_map_alloc(). It depends on code in hugetlbfs's
-vm_ops->close() to release that allocation.
-
-However, in the mmap() failure path, we do a plain unmap_region() without
-the remove_vma() which actually calls vm_ops->close().
-
-This is a decent fix. This leak could get reintroduced if new code (say,
-after hugetlb_reserve_pages() in hugetlbfs_file_mmap()) decides to return
-an error. But, I think it would have to unroll the reservation anyway.
-
-Christoph's test case:
-
- http://marc.info/?l=linux-mm&m=133728900729735
-
-Signed-off-by: Dave Hansen <dave at linux.vnet.ibm.com>
-[Christoph Lameter: I have rediffed the patch against 2.6.32 and 3.2.0.]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- mm/hugetlb.c | 28 ++++++++++++++++++++++------
- 1 file changed, 22 insertions(+), 6 deletions(-)
-
-diff --git a/mm/hugetlb.c b/mm/hugetlb.c
-index 7120c2e..c715bb9 100644
---- a/mm/hugetlb.c
-+++ b/mm/hugetlb.c
-@@ -2068,6 +2068,15 @@ static void hugetlb_vm_op_open(struct vm_area_struct *vma)
- kref_get(&reservations->refs);
- }
-
-+static void resv_map_put(struct vm_area_struct *vma)
-+{
-+ struct resv_map *reservations = vma_resv_map(vma);
-+
-+ if (!reservations)
-+ return;
-+ kref_put(&reservations->refs, resv_map_release);
-+}
-+
- static void hugetlb_vm_op_close(struct vm_area_struct *vma)
- {
- struct hstate *h = hstate_vma(vma);
-@@ -2083,7 +2092,7 @@ static void hugetlb_vm_op_close(struct vm_area_struct *vma)
- reserve = (end - start) -
- region_count(&reservations->regions, start, end);
-
-- kref_put(&reservations->refs, resv_map_release);
-+ resv_map_put(vma);
-
- if (reserve) {
- hugetlb_acct_memory(h, -reserve);
-@@ -2884,12 +2893,16 @@ int hugetlb_reserve_pages(struct inode *inode,
- set_vma_resv_flags(vma, HPAGE_RESV_OWNER);
- }
-
-- if (chg < 0)
-- return chg;
-+ if (chg < 0) {
-+ ret = chg;
-+ goto out_err;
-+ }
-
- /* There must be enough filesystem quota for the mapping */
-- if (hugetlb_get_quota(inode->i_mapping, chg))
-- return -ENOSPC;
-+ if (hugetlb_get_quota(inode->i_mapping, chg)) {
-+ ret = -ENOSPC;
-+ goto out_err;
-+ }
-
- /*
- * Check enough hugepages are available for the reservation.
-@@ -2898,7 +2911,7 @@ int hugetlb_reserve_pages(struct inode *inode,
- ret = hugetlb_acct_memory(h, chg);
- if (ret < 0) {
- hugetlb_put_quota(inode->i_mapping, chg);
-- return ret;
-+ goto out_err;
- }
-
- /*
-@@ -2915,6 +2928,9 @@ int hugetlb_reserve_pages(struct inode *inode,
- if (!vma || vma->vm_flags & VM_MAYSHARE)
- region_add(&inode->i_mapping->private_list, from, to);
- return 0;
-+out_err:
-+ resv_map_put(vma);
-+ return ret;
- }
-
- void hugetlb_unreserve_pages(struct inode *inode, long offset, long freed)
---
-1.7.9.5
-
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
deleted file mode 100644
index 002d8e8..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0031-mm-vmalloc.c-change-void-into-explict-vm_struct.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From ac48cea598418be2acfa451a3488cdd51570641e Mon Sep 17 00:00:00 2001
-From: Minchan Kim <minchan at kernel.org>
-Date: Tue, 10 Jan 2012 15:08:39 -0800
-Subject: [PATCH 31/86] mm/vmalloc.c: change void* into explict vm_struct*
-
-commit db1aecafef58b5dda39c4228debe2c845e4a27ab upstream.
-
-vmap_area->private is void* but we don't use the field for various purpose
-but use only for vm_struct. So change it to a vm_struct* with naming to
-improve for readability and type checking.
-
-Signed-off-by: Minchan Kim <minchan at kernel.org>
-Acked-by: David Rientjes <rientjes at google.com>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- mm/vmalloc.c | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/mm/vmalloc.c b/mm/vmalloc.c
-index 21fdf46..877ca04 100644
---- a/mm/vmalloc.c
-+++ b/mm/vmalloc.c
-@@ -256,7 +256,7 @@ struct vmap_area {
- struct rb_node rb_node; /* address sorted rbtree */
- struct list_head list; /* address sorted list */
- struct list_head purge_list; /* "lazy purge" list */
-- void *private;
-+ struct vm_struct *vm;
- struct rcu_head rcu_head;
- };
-
-@@ -1285,7 +1285,7 @@ static void setup_vmalloc_vm(struct vm_struct *vm, struct vmap_area *va,
- vm->addr = (void *)va->va_start;
- vm->size = va->va_end - va->va_start;
- vm->caller = caller;
-- va->private = vm;
-+ va->vm = vm;
- va->flags |= VM_VM_AREA;
- }
-
-@@ -1408,7 +1408,7 @@ static struct vm_struct *find_vm_area(const void *addr)
-
- va = find_vmap_area((unsigned long)addr);
- if (va && va->flags & VM_VM_AREA)
-- return va->private;
-+ return va->vm;
-
- return NULL;
- }
-@@ -1427,7 +1427,7 @@ struct vm_struct *remove_vm_area(const void *addr)
-
- va = find_vmap_area((unsigned long)addr);
- if (va && va->flags & VM_VM_AREA) {
-- struct vm_struct *vm = va->private;
-+ struct vm_struct *vm = va->vm;
-
- if (!(vm->flags & VM_UNLIST)) {
- struct vm_struct *tmp, **p;
---
-1.7.9.5
-
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
deleted file mode 100644
index 8018140..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0032-mm-fix-faulty-initialization-in-vmalloc_init.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From 25ca214b138f89e6881a9fee029f1c55756bd8a3 Mon Sep 17 00:00:00 2001
-From: KyongHo <pullip.cho at samsung.com>
-Date: Tue, 29 May 2012 15:06:49 -0700
-Subject: [PATCH 32/86] mm: fix faulty initialization in vmalloc_init()
-
-commit dbda591d920b4c7692725b13e3f68ecb251e9080 upstream.
-
-The transfer of ->flags causes some of the static mapping virtual
-addresses to be prematurely freed (before the mapping is removed) because
-VM_LAZY_FREE gets "set" if tmp->flags has VM_IOREMAP set. This might
-cause subsequent vmalloc/ioremap calls to fail because it might allocate
-one of the freed virtual address ranges that aren't unmapped.
-
-va->flags has different types of flags from tmp->flags. If a region with
-VM_IOREMAP set is registered with vm_area_add_early(), it will be removed
-by __purge_vmap_area_lazy().
-
-Fix vmalloc_init() to correctly initialize vmap_area for the given
-vm_struct.
-
-Also initialise va->vm. If it is not set, find_vm_area() for the early
-vm regions will always fail.
-
-Signed-off-by: KyongHo Cho <pullip.cho at samsung.com>
-Cc: "Olav Haugan" <ohaugan at codeaurora.org>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- mm/vmalloc.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/mm/vmalloc.c b/mm/vmalloc.c
-index 877ca04..577e51d 100644
---- a/mm/vmalloc.c
-+++ b/mm/vmalloc.c
-@@ -1185,9 +1185,10 @@ void __init vmalloc_init(void)
- /* Import existing vmlist entries. */
- for (tmp = vmlist; tmp; tmp = tmp->next) {
- va = kzalloc(sizeof(struct vmap_area), GFP_NOWAIT);
-- va->flags = tmp->flags | VM_VM_AREA;
-+ va->flags = VM_VM_AREA;
- va->va_start = (unsigned long)tmp->addr;
- va->va_end = va->va_start + tmp->size;
-+ va->vm = tmp;
- __insert_vmap_area(va);
- }
-
---
-1.7.9.5
-
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
deleted file mode 100644
index e95f557..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0033-fix-scsi_wait_scan.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From f7eda9338b67b376df9a1d42b9533035dde4bf80 Mon Sep 17 00:00:00 2001
-From: James Bottomley <jbottomley at parallels.com>
-Date: Wed, 30 May 2012 09:45:39 +0000
-Subject: [PATCH 33/86] fix scsi_wait_scan
-
-commit 1ff2f40305772b159a91c19590ee159d3a504afc upstream.
-
-Commit c751085943362143f84346d274e0011419c84202
-Author: Rafael J. Wysocki <rjw at sisk.pl>
-Date: Sun Apr 12 20:06:56 2009 +0200
-
- PM/Hibernate: Wait for SCSI devices scan to complete during resume
-
-Broke the scsi_wait_scan module in 2.6.30. Apparently debian still uses it so
-fix it and backport to stable before removing it in 3.6.
-
-The breakage is caused because the function template in
-include/scsi/scsi_scan.h is defined to be a nop unless SCSI is built in.
-That means that in the modular case (which is every distro), the
-scsi_wait_scan module does a simple async_synchronize_full() instead of
-waiting for scans.
-
-Signed-off-by: James Bottomley <JBottomley at Parallels.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/scsi/scsi_wait_scan.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/scsi/scsi_wait_scan.c b/drivers/scsi/scsi_wait_scan.c
-index 74708fc..ae78148 100644
---- a/drivers/scsi/scsi_wait_scan.c
-+++ b/drivers/scsi/scsi_wait_scan.c
-@@ -12,7 +12,7 @@
-
- #include <linux/module.h>
- #include <linux/device.h>
--#include <scsi/scsi_scan.h>
-+#include "scsi_priv.h"
-
- static int __init wait_scan_init(void)
- {
---
-1.7.9.5
-
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
deleted file mode 100644
index df28752..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0034-mm-fix-vma_resv_map-NULL-pointer.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-From 17ceee89567f7c23b2f1eb1d44a323e20912dd59 Mon Sep 17 00:00:00 2001
-From: Dave Hansen <dave at linux.vnet.ibm.com>
-Date: Wed, 30 May 2012 07:51:07 -0700
-Subject: [PATCH 34/86] mm: fix vma_resv_map() NULL pointer
-
-commit 4523e1458566a0e8ecfaff90f380dd23acc44d27 upstream.
-
-hugetlb_reserve_pages() can be used for either normal file-backed
-hugetlbfs mappings, or MAP_HUGETLB. In the MAP_HUGETLB, semi-anonymous
-mode, there is not a VMA around. The new call to resv_map_put() assumed
-that there was, and resulted in a NULL pointer dereference:
-
- BUG: unable to handle kernel NULL pointer dereference at 0000000000000030
- IP: vma_resv_map+0x9/0x30
- PGD 141453067 PUD 1421e1067 PMD 0
- Oops: 0000 [#1] PREEMPT SMP
- ...
- Pid: 14006, comm: trinity-child6 Not tainted 3.4.0+ #36
- RIP: vma_resv_map+0x9/0x30
- ...
- Process trinity-child6 (pid: 14006, threadinfo ffff8801414e0000, task ffff8801414f26b0)
- Call Trace:
- resv_map_put+0xe/0x40
- hugetlb_reserve_pages+0xa6/0x1d0
- hugetlb_file_setup+0x102/0x2c0
- newseg+0x115/0x360
- ipcget+0x1ce/0x310
- sys_shmget+0x5a/0x60
- system_call_fastpath+0x16/0x1b
-
-This was reported by Dave Jones, but was reproducible with the
-libhugetlbfs test cases, so shame on me for not running them in the
-first place.
-
-With this, the oops is gone, and the output of libhugetlbfs's
-run_tests.py is identical to plain 3.4 again.
-
-[ Marked for stable, since this was introduced by commit c50ac050811d
- ("hugetlb: fix resv_map leak in error path") which was also marked for
- stable ]
-
-Reported-by: Dave Jones <davej at redhat.com>
-Cc: Mel Gorman <mel at csn.ul.ie>
-Cc: KOSAKI Motohiro <kosaki.motohiro at jp.fujitsu.com>
-Cc: Christoph Lameter <cl at linux.com>
-Cc: Andrea Arcangeli <aarcange at redhat.com>
-Cc: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- mm/hugetlb.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/mm/hugetlb.c b/mm/hugetlb.c
-index c715bb9..5f5c545 100644
---- a/mm/hugetlb.c
-+++ b/mm/hugetlb.c
-@@ -2929,7 +2929,8 @@ int hugetlb_reserve_pages(struct inode *inode,
- region_add(&inode->i_mapping->private_list, from, to);
- return 0;
- out_err:
-- resv_map_put(vma);
-+ if (vma)
-+ resv_map_put(vma);
- return ret;
- }
-
---
-1.7.9.5
-
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
deleted file mode 100644
index 53bf549..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0035-x86-amd-xen-Avoid-NULL-pointer-paravirt-references.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 827eb1e22d5bbbd59b40cffc5d1e811c4d2e6a24 Mon Sep 17 00:00:00 2001
-From: Konrad Rzeszutek Wilk <konrad at darnok.org>
-Date: Wed, 30 May 2012 18:23:56 -0400
-Subject: [PATCH 35/86] x86, amd, xen: Avoid NULL pointer paravirt references
-
-commit 1ab46fd319bcf1fcd9fb6311727d532b580e4eba upstream.
-
-Stub out MSR methods that aren't actually needed. This fixes a crash
-as Xen Dom0 on AMD Trinity systems. A bigger patch should be added to
-remove the paravirt machinery completely for the methods which
-apparently have no users!
-
-Reported-by: Andre Przywara <andre.przywara at amd.com>
-Link: http://lkml.kernel.org/r/20120530222356.GA28417@andromeda.dapyr.net
-Signed-off-by: H. Peter Anvin <hpa at zytor.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/x86/xen/enlighten.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
-index e7c920b..cca659e 100644
---- a/arch/x86/xen/enlighten.c
-+++ b/arch/x86/xen/enlighten.c
-@@ -982,7 +982,10 @@ static const struct pv_cpu_ops xen_cpu_ops __initconst = {
- .wbinvd = native_wbinvd,
-
- .read_msr = native_read_msr_safe,
-+ .rdmsr_regs = native_rdmsr_safe_regs,
- .write_msr = xen_write_msr_safe,
-+ .wrmsr_regs = native_wrmsr_safe_regs,
-+
- .read_tsc = native_read_tsc,
- .read_pmc = native_read_pmc,
-
---
-1.7.9.5
-
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
deleted file mode 100644
index e399e07..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0036-slub-fix-a-memory-leak-in-get_partial_node.patch
+++ /dev/null
@@ -1,86 +0,0 @@
-From e03e067f960f7714ac98fdef365cafff22086a6b Mon Sep 17 00:00:00 2001
-From: Joonsoo Kim <js1304 at gmail.com>
-Date: Thu, 17 May 2012 00:13:02 +0900
-Subject: [PATCH 36/86] slub: fix a memory leak in get_partial_node()
-
-commit 02d7633fa567be7bf55a993b79d2a31b95ce2227 upstream.
-
-In the case which is below,
-
-1. acquire slab for cpu partial list
-2. free object to it by remote cpu
-3. page->freelist = t
-
-then memory leak is occurred.
-
-Change acquire_slab() not to zap freelist when it works for cpu partial list.
-I think it is a sufficient solution for fixing a memory leak.
-
-Below is output of 'slabinfo -r kmalloc-256'
-when './perf stat -r 30 hackbench 50 process 4000 > /dev/null' is done.
-
-***Vanilla***
-Sizes (bytes) Slabs Debug Memory
-------------------------------------------------------------------------
-Object : 256 Total : 468 Sanity Checks : Off Total: 3833856
-SlabObj: 256 Full : 111 Redzoning : Off Used : 2004992
-SlabSiz: 8192 Partial: 302 Poisoning : Off Loss : 1828864
-Loss : 0 CpuSlab: 55 Tracking : Off Lalig: 0
-Align : 8 Objects: 32 Tracing : Off Lpadd: 0
-
-***Patched***
-Sizes (bytes) Slabs Debug Memory
-------------------------------------------------------------------------
-Object : 256 Total : 300 Sanity Checks : Off Total: 2457600
-SlabObj: 256 Full : 204 Redzoning : Off Used : 2348800
-SlabSiz: 8192 Partial: 33 Poisoning : Off Loss : 108800
-Loss : 0 CpuSlab: 63 Tracking : Off Lalig: 0
-Align : 8 Objects: 32 Tracing : Off Lpadd: 0
-
-Total and loss number is the impact of this patch.
-
-Acked-by: Christoph Lameter <cl at linux.com>
-Signed-off-by: Joonsoo Kim <js1304 at gmail.com>
-Signed-off-by: Pekka Enberg <penberg at kernel.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- mm/slub.c | 9 ++++++---
- 1 file changed, 6 insertions(+), 3 deletions(-)
-
-diff --git a/mm/slub.c b/mm/slub.c
-index a99c785..af47188 100644
---- a/mm/slub.c
-+++ b/mm/slub.c
-@@ -1506,15 +1506,19 @@ static inline void *acquire_slab(struct kmem_cache *s,
- freelist = page->freelist;
- counters = page->counters;
- new.counters = counters;
-- if (mode)
-+ if (mode) {
- new.inuse = page->objects;
-+ new.freelist = NULL;
-+ } else {
-+ new.freelist = freelist;
-+ }
-
- VM_BUG_ON(new.frozen);
- new.frozen = 1;
-
- } while (!__cmpxchg_double_slab(s, page,
- freelist, counters,
-- NULL, new.counters,
-+ new.freelist, new.counters,
- "lock and freeze"));
-
- remove_partial(n, page);
-@@ -1556,7 +1560,6 @@ static void *get_partial_node(struct kmem_cache *s,
- object = t;
- available = page->objects - page->inuse;
- } else {
-- page->freelist = t;
- available = put_cpu_partial(s, page, 0);
- }
- if (kmem_cache_debug(s) || available > s->cpu_partial / 2)
---
-1.7.9.5
-
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
deleted file mode 100644
index 6fbcfa0..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0037-ext4-force-ro-mount-if-ext4_setup_super-fails.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From ce325abe66432bbcf9d8dc2834d7c8c77f32ce52 Mon Sep 17 00:00:00 2001
-From: Eric Sandeen <sandeen at redhat.com>
-Date: Mon, 28 May 2012 14:17:25 -0400
-Subject: [PATCH 37/86] ext4: force ro mount if ext4_setup_super() fails
-
-commit 7e84b6216467b84cd332c8e567bf5aa113fd2f38 upstream.
-
-If ext4_setup_super() fails i.e. due to a too-high revision,
-the error is logged in dmesg but the fs is not mounted RO as
-indicated.
-
-Tested by:
-
-# mkfs.ext4 -r 4 /dev/sdb6
-# mount /dev/sdb6 /mnt/test
-# dmesg | grep "too high"
-[164919.759248] EXT4-fs (sdb6): revision level too high, forcing read-only mode
-# grep sdb6 /proc/mounts
-/dev/sdb6 /mnt/test2 ext4 rw,seclabel,relatime,data=ordered 0 0
-
-Reviewed-by: Andreas Dilger <adilger at whamcloud.com>
-Signed-off-by: Eric Sandeen <sandeen at redhat.com>
-Signed-off-by: "Theodore Ts'o" <tytso at mit.edu>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/ext4/super.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/fs/ext4/super.c b/fs/ext4/super.c
-index 961059b..c91811e 100644
---- a/fs/ext4/super.c
-+++ b/fs/ext4/super.c
-@@ -3727,7 +3727,8 @@ no_journal:
- goto failed_mount4;
- }
-
-- ext4_setup_super(sb, es, sb->s_flags & MS_RDONLY);
-+ if (ext4_setup_super(sb, es, sb->s_flags & MS_RDONLY))
-+ sb->s_flags |= MS_RDONLY;
-
- /* determine the minimum size of new large inodes, if present */
- if (sbi->s_inode_size > EXT4_GOOD_OLD_INODE_SIZE) {
---
-1.7.9.5
-
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
deleted file mode 100644
index 60e970a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0038-ext4-disallow-hard-linked-directory-in-ext4_lookup.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 7d7a4c4be4fc37041962a101a848c38bf13dc0c4 Mon Sep 17 00:00:00 2001
-From: Andreas Dilger <adilger at dilger.ca>
-Date: Mon, 28 May 2012 17:02:25 -0400
-Subject: [PATCH 38/86] ext4: disallow hard-linked directory in ext4_lookup
-
-commit 7e936b737211e6b54e34b71a827e56b872e958d8 upstream.
-
-A hard-linked directory to its parent can cause the VFS to deadlock,
-and is a sign of a corrupted file system. So detect this case in
-ext4_lookup(), before the rmdir() lockup scenario can take place.
-
-Signed-off-by: Andreas Dilger <adilger at dilger.ca>
-Signed-off-by: "Theodore Ts'o" <tytso at mit.edu>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/ext4/namei.c | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-diff --git a/fs/ext4/namei.c b/fs/ext4/namei.c
-index aa4c782..4dd0890 100644
---- a/fs/ext4/namei.c
-+++ b/fs/ext4/namei.c
-@@ -1037,6 +1037,12 @@ static struct dentry *ext4_lookup(struct inode *dir, struct dentry *dentry, stru
- EXT4_ERROR_INODE(dir, "bad inode number: %u", ino);
- return ERR_PTR(-EIO);
- }
-+ if (unlikely(ino == dir->i_ino)) {
-+ EXT4_ERROR_INODE(dir, "'%.*s' linked to parent dir",
-+ dentry->d_name.len,
-+ dentry->d_name.name);
-+ return ERR_PTR(-EIO);
-+ }
- inode = ext4_iget(dir->i_sb, ino);
- if (inode == ERR_PTR(-ESTALE)) {
- EXT4_ERROR_INODE(dir,
---
-1.7.9.5
-
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
deleted file mode 100644
index e2b0f24..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0039-mtd-nand-fix-scan_read_raw_oob.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From ec329940d4991f4051c3b8cf971aa2e67ad9da20 Mon Sep 17 00:00:00 2001
-From: Dmitry Maluka <D.Maluka at adbglobal.com>
-Date: Fri, 11 May 2012 20:51:51 +0300
-Subject: [PATCH 39/86] mtd: nand: fix scan_read_raw_oob
-
-commit 34a5704d91d6f8376a4c0a0143a1dd3eb3ccb37e upstream.
-
-It seems there is a bug in scan_read_raw_oob() in nand_bbt.c which
-should cause wrong functioning of NAND_BBT_SCANALLPAGES option.
-
-Artem: the patch did not apply and I had to amend it a bit.
-
-Signed-off-by: Artem Bityutskiy <artem.bityutskiy at linux.intel.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/mtd/nand/nand_bbt.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/mtd/nand/nand_bbt.c b/drivers/mtd/nand/nand_bbt.c
-index 69148ae..f024375 100644
---- a/drivers/mtd/nand/nand_bbt.c
-+++ b/drivers/mtd/nand/nand_bbt.c
-@@ -324,6 +324,7 @@ static int scan_read_raw_oob(struct mtd_info *mtd, uint8_t *buf, loff_t offs,
-
- buf += mtd->oobsize + mtd->writesize;
- len -= mtd->writesize;
-+ offs += mtd->writesize;
- }
- return 0;
- }
---
-1.7.9.5
-
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
deleted file mode 100644
index cab17c9..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0040-vfs-increment-iversion-when-a-file-is-truncated.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From dcbd120f33b3df21a22bb7e09710f9f078c5b459 Mon Sep 17 00:00:00 2001
-From: Dmitry Kasatkin <dmitry.kasatkin at intel.com>
-Date: Tue, 29 May 2012 11:02:21 -0700
-Subject: [PATCH 40/86] vfs: increment iversion when a file is truncated
-
-commit 799243a389bde0de10fa21ca1ca453d2fe538b85 upstream.
-
-When a file is truncated with truncate()/ftruncate() and then closed,
-iversion is not updated. This patch uses ATTR_SIZE flag as an indication
-to increment iversion.
-
-Mimi said:
-
-On fput(), i_version is used to detect and flag files that have changed
-and need to be re-measured in the IMA measurement policy. When a file
-is truncated with truncate()/ftruncate() and then closed, i_version is
-not updated. As a result, although the file has changed, it will not be
-re-measured and added to the IMA measurement list on subsequent access.
-
-Signed-off-by: Dmitry Kasatkin <dmitry.kasatkin at intel.com>
-Acked-by: Mimi Zohar <zohar at us.ibm.com>
-Cc: Al Viro <viro at zeniv.linux.org.uk>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Al Viro <viro at zeniv.linux.org.uk>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/attr.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/fs/attr.c b/fs/attr.c
-index 7ee7ba4..b8f55c4 100644
---- a/fs/attr.c
-+++ b/fs/attr.c
-@@ -176,6 +176,11 @@ int notify_change(struct dentry * dentry, struct iattr * attr)
- return -EPERM;
- }
-
-+ if ((ia_valid & ATTR_SIZE) && IS_I_VERSION(inode)) {
-+ if (attr->ia_size != inode->i_size)
-+ inode_inc_iversion(inode);
-+ }
-+
- if ((ia_valid & ATTR_MODE)) {
- mode_t amode = attr->ia_mode;
- /* Flag setting protected by i_mutex */
---
-1.7.9.5
-
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
deleted file mode 100644
index 99722a5..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0041-vfs-umount_tree-might-be-called-on-subtree-that-had-.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 7124b305f5c83709f41473a2cf6025bcdb9b88fe Mon Sep 17 00:00:00 2001
-From: Al Viro <viro at zeniv.linux.org.uk>
-Date: Tue, 29 May 2012 22:03:48 -0400
-Subject: [PATCH 41/86] vfs: umount_tree() might be called on subtree that had
- never made it
-
-commit 63d37a84ab6004c235314ffd7a76c5eb28c2fae0 upstream.
-
-__mnt_make_shortterm() in there undoes the effect of __mnt_make_longterm()
-we'd done back when we set ->mnt_ns non-NULL; it should not be done to
-vfsmounts that had never gone through commit_tree() and friends. Kudos to
-lczerner for catching that one...
-
-Signed-off-by: Al Viro <viro at zeniv.linux.org.uk>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/namespace.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/fs/namespace.c b/fs/namespace.c
-index cfc6d44..ca4913a 100644
---- a/fs/namespace.c
-+++ b/fs/namespace.c
-@@ -1244,8 +1244,9 @@ void umount_tree(struct vfsmount *mnt, int propagate, struct list_head *kill)
- list_del_init(&p->mnt_expire);
- list_del_init(&p->mnt_list);
- __touch_mnt_namespace(p->mnt_ns);
-+ if (p->mnt_ns)
-+ __mnt_make_shortterm(p);
- p->mnt_ns = NULL;
-- __mnt_make_shortterm(p);
- list_del_init(&p->mnt_child);
- if (p->mnt_parent != p) {
- p->mnt_parent->mnt_ghosts++;
---
-1.7.9.5
-
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
deleted file mode 100644
index e9720b2..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0042-ext4-add-missing-save_error_info-to-ext4_error.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 1b72b00b0a3384ac8e6b2ddb6b06132e714e9441 Mon Sep 17 00:00:00 2001
-From: Theodore Ts'o <tytso at mit.edu>
-Date: Wed, 30 May 2012 23:00:16 -0400
-Subject: [PATCH 42/86] ext4: add missing save_error_info() to ext4_error()
-
-commit f3fc0210c0fc91900766c995f089c39170e68305 upstream.
-
-The ext4_error() function is missing a call to save_error_info().
-Since this is the function which marks the file system as containing
-an error, this oversight (which was introduced in 2.6.36) is quite
-significant, and should be backported to older stable kernels with
-high urgency.
-
-Reported-by: Ken Sumrall <ksumrall at google.com>
-Signed-off-by: "Theodore Ts'o" <tytso at mit.edu>
-Cc: ksumrall at google.com
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/ext4/super.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/fs/ext4/super.c b/fs/ext4/super.c
-index c91811e..ab7aa3f 100644
---- a/fs/ext4/super.c
-+++ b/fs/ext4/super.c
-@@ -480,6 +480,7 @@ void __ext4_error(struct super_block *sb, const char *function,
- printk(KERN_CRIT "EXT4-fs error (device %s): %s:%d: comm %s: %pV\n",
- sb->s_id, function, line, current->comm, &vaf);
- va_end(args);
-+ save_error_info(sb, function, line);
-
- ext4_handle_error(sb);
- }
---
-1.7.9.5
-
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
deleted file mode 100644
index 7c69f66..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0043-ALSA-usb-audio-fix-rate_list-memory-leak.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 881cf192607e150b2843d5a504a6c05bd6be8136 Mon Sep 17 00:00:00 2001
-From: Clemens Ladisch <clemens at ladisch.de>
-Date: Fri, 18 May 2012 18:00:43 +0200
-Subject: [PATCH 43/86] ALSA: usb-audio: fix rate_list memory leak
-
-commit 5cd5d7c44990658df6ab49f6253c39617c53b03d upstream.
-
-The array of sample rates is reallocated every time when opening
-the PCM device, but was freed only once when unplugging the device.
-
-Reported-by: "Alexander E. Patrakov" <patrakov at gmail.com>
-Signed-off-by: Clemens Ladisch <clemens at ladisch.de>
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- sound/usb/pcm.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/sound/usb/pcm.c b/sound/usb/pcm.c
-index 0220b0f..839165f 100644
---- a/sound/usb/pcm.c
-+++ b/sound/usb/pcm.c
-@@ -698,6 +698,9 @@ static int snd_usb_pcm_check_knot(struct snd_pcm_runtime *runtime,
- int count = 0, needs_knot = 0;
- int err;
-
-+ kfree(subs->rate_list.list);
-+ subs->rate_list.list = NULL;
-+
- list_for_each_entry(fp, &subs->fmt_list, list) {
- if (fp->rates & SNDRV_PCM_RATE_CONTINUOUS)
- return 0;
---
-1.7.9.5
-
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
deleted file mode 100644
index 63a6bf4..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0044-ext4-add-ext4_mb_unload_buddy-in-the-error-path.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 63234d728c49257d747db57d3dfeb9989b9d040a Mon Sep 17 00:00:00 2001
-From: Salman Qazi <sqazi at google.com>
-Date: Thu, 31 May 2012 23:51:27 -0400
-Subject: [PATCH 44/86] ext4: add ext4_mb_unload_buddy in the error path
-
-commit 02b7831019ea4e7994968c84b5826fa8b248ffc8 upstream.
-
-ext4_free_blocks fails to pair an ext4_mb_load_buddy with a matching
-ext4_mb_unload_buddy when it fails a memory allocation.
-
-Signed-off-by: Salman Qazi <sqazi at google.com>
-Signed-off-by: "Theodore Ts'o" <tytso at mit.edu>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/ext4/mballoc.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c
-index e2d8be8..382e4fc 100644
---- a/fs/ext4/mballoc.c
-+++ b/fs/ext4/mballoc.c
-@@ -4693,6 +4693,7 @@ do_more:
- */
- new_entry = kmem_cache_alloc(ext4_free_ext_cachep, GFP_NOFS);
- if (!new_entry) {
-+ ext4_mb_unload_buddy(&e4b);
- err = -ENOMEM;
- goto error_return;
- }
---
-1.7.9.5
-
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
deleted file mode 100644
index 0fc4e4b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0045-ext4-remove-mb_groups-before-tearing-down-the-buddy_.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From 36ac3cf2860adbbe83743fd5ec6f89e54e67605c Mon Sep 17 00:00:00 2001
-From: Salman Qazi <sqazi at google.com>
-Date: Thu, 31 May 2012 23:52:14 -0400
-Subject: [PATCH 45/86] ext4: remove mb_groups before tearing down the
- buddy_cache
-
-commit 95599968d19db175829fb580baa6b68939b320fb upstream.
-
-We can't have references held on pages in the s_buddy_cache while we are
-trying to truncate its pages and put the inode. All the pages must be
-gone before we reach clear_inode. This can only be gauranteed if we
-can prevent new users from grabbing references to s_buddy_cache's pages.
-
-The original bug can be reproduced and the bug fix can be verified by:
-
-while true; do mount -t ext4 /dev/ram0 /export/hda3/ram0; \
- umount /export/hda3/ram0; done &
-
-while true; do cat /proc/fs/ext4/ram0/mb_groups; done
-
-Signed-off-by: Salman Qazi <sqazi at google.com>
-Signed-off-by: "Theodore Ts'o" <tytso at mit.edu>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/ext4/mballoc.c | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c
-index 382e4fc..1d07c12 100644
---- a/fs/ext4/mballoc.c
-+++ b/fs/ext4/mballoc.c
-@@ -2567,6 +2567,9 @@ int ext4_mb_release(struct super_block *sb)
- struct ext4_sb_info *sbi = EXT4_SB(sb);
- struct kmem_cache *cachep = get_groupinfo_cache(sb->s_blocksize_bits);
-
-+ if (sbi->s_proc)
-+ remove_proc_entry("mb_groups", sbi->s_proc);
-+
- if (sbi->s_group_info) {
- for (i = 0; i < ngroups; i++) {
- grinfo = ext4_get_group_info(sb, i);
-@@ -2614,8 +2617,6 @@ int ext4_mb_release(struct super_block *sb)
- }
-
- free_percpu(sbi->s_locality_groups);
-- if (sbi->s_proc)
-- remove_proc_entry("mb_groups", sbi->s_proc);
-
- return 0;
- }
---
-1.7.9.5
-
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
deleted file mode 100644
index 96c23ec..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0046-drm-radeon-fix-bank-information-in-tiling-config.patch
+++ /dev/null
@@ -1,84 +0,0 @@
-From 08a5d338c177aeaff3fed888cf9a36feb07a033d Mon Sep 17 00:00:00 2001
-From: Alex Deucher <alexander.deucher at amd.com>
-Date: Thu, 31 May 2012 18:53:36 -0400
-Subject: [PATCH 46/86] drm/radeon: fix bank information in tiling config
-
-commit 29d654067a98c1cb8874c774e5fd799a038af8a6 upstream.
-
-While there are cards with more than 8 mem banks, the max
-number of banks from a tiling perspective is 8, so cap
-the tiling config at 8 banks.
-
-Fixes:
-https://bugs.freedesktop.org/show_bug.cgi?id=43448
-
-Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
-Signed-off-by: Dave Airlie <airlied at redhat.com>
-[bwh: Backported to 3.2: fix up context and indentation for missing
- IGP condition in ni.c]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpu/drm/radeon/evergreen.c | 9 ++++++---
- drivers/gpu/drm/radeon/ni.c | 6 ++++--
- drivers/gpu/drm/radeon/rv770.c | 8 ++++++--
- 3 files changed, 16 insertions(+), 7 deletions(-)
-
-diff --git a/drivers/gpu/drm/radeon/evergreen.c b/drivers/gpu/drm/radeon/evergreen.c
-index 92c9628..88d080c 100644
---- a/drivers/gpu/drm/radeon/evergreen.c
-+++ b/drivers/gpu/drm/radeon/evergreen.c
-@@ -2074,9 +2074,12 @@ static void evergreen_gpu_init(struct radeon_device *rdev)
- /* num banks is 8 on all fusion asics. 0 = 4, 1 = 8, 2 = 16 */
- if (rdev->flags & RADEON_IS_IGP)
- rdev->config.evergreen.tile_config |= 1 << 4;
-- else
-- rdev->config.evergreen.tile_config |=
-- ((mc_arb_ramcfg & NOOFBANK_MASK) >> NOOFBANK_SHIFT) << 4;
-+ else {
-+ if ((mc_arb_ramcfg & NOOFBANK_MASK) >> NOOFBANK_SHIFT)
-+ rdev->config.evergreen.tile_config |= 1 << 4;
-+ else
-+ rdev->config.evergreen.tile_config |= 0 << 4;
-+ }
- rdev->config.evergreen.tile_config |=
- ((mc_arb_ramcfg & BURSTLENGTH_MASK) >> BURSTLENGTH_SHIFT) << 8;
- rdev->config.evergreen.tile_config |=
-diff --git a/drivers/gpu/drm/radeon/ni.c b/drivers/gpu/drm/radeon/ni.c
-index 0e57998..9e50814 100644
---- a/drivers/gpu/drm/radeon/ni.c
-+++ b/drivers/gpu/drm/radeon/ni.c
-@@ -804,8 +804,10 @@ static void cayman_gpu_init(struct radeon_device *rdev)
- rdev->config.cayman.tile_config |= (3 << 0);
- break;
- }
-- rdev->config.cayman.tile_config |=
-- ((mc_arb_ramcfg & NOOFBANK_MASK) >> NOOFBANK_SHIFT) << 4;
-+ if ((mc_arb_ramcfg & NOOFBANK_MASK) >> NOOFBANK_SHIFT)
-+ rdev->config.cayman.tile_config |= 1 << 4;
-+ else
-+ rdev->config.cayman.tile_config |= 0 << 4;
- rdev->config.cayman.tile_config |=
- ((gb_addr_config & PIPE_INTERLEAVE_SIZE_MASK) >> PIPE_INTERLEAVE_SIZE_SHIFT) << 8;
- rdev->config.cayman.tile_config |=
-diff --git a/drivers/gpu/drm/radeon/rv770.c b/drivers/gpu/drm/radeon/rv770.c
-index 23ae1c6..e3f01b8 100644
---- a/drivers/gpu/drm/radeon/rv770.c
-+++ b/drivers/gpu/drm/radeon/rv770.c
-@@ -689,8 +689,12 @@ static void rv770_gpu_init(struct radeon_device *rdev)
-
- if (rdev->family == CHIP_RV770)
- gb_tiling_config |= BANK_TILING(1);
-- else
-- gb_tiling_config |= BANK_TILING((mc_arb_ramcfg & NOOFBANK_MASK) >> NOOFBANK_SHIFT);
-+ else {
-+ if ((mc_arb_ramcfg & NOOFBANK_MASK) >> NOOFBANK_SHIFT)
-+ gb_tiling_config |= BANK_TILING(1);
-+ else
-+ gb_tiling_config |= BANK_TILING(0);
-+ }
- rdev->config.rv770.tiling_nbanks = 4 << ((gb_tiling_config >> 4) & 0x3);
- gb_tiling_config |= GROUP_SIZE((mc_arb_ramcfg & BURSTLENGTH_MASK) >> BURSTLENGTH_SHIFT);
- if ((mc_arb_ramcfg & BURSTLENGTH_MASK) >> BURSTLENGTH_SHIFT)
---
-1.7.9.5
-
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
deleted file mode 100644
index 51d41d9..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0047-drm-radeon-properly-program-gart-on-rv740-juniper-cy.patch
+++ /dev/null
@@ -1,79 +0,0 @@
-From b872949a1d4d4a7587bbbfa4adb1a69216c625a8 Mon Sep 17 00:00:00 2001
-From: Alex Deucher <alexander.deucher at amd.com>
-Date: Thu, 31 May 2012 18:54:43 -0400
-Subject: [PATCH 47/86] drm/radeon: properly program gart on rv740, juniper,
- cypress, barts, hemlock
-
-commit 0b8c30bc4943137a4a36b9cb059b1cc684f5d702 upstream.
-
-Need to program an additional VM register. This doesn't not currently
-cause any problems, but allows us to program the proper backend
-map in a subsequent patch which should improve performance on these
-asics.
-
-Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
-Signed-off-by: Dave Airlie <airlied at redhat.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpu/drm/radeon/evergreen.c | 5 +++++
- drivers/gpu/drm/radeon/evergreend.h | 1 +
- drivers/gpu/drm/radeon/rv770.c | 2 ++
- drivers/gpu/drm/radeon/rv770d.h | 1 +
- 4 files changed, 9 insertions(+)
-
-diff --git a/drivers/gpu/drm/radeon/evergreen.c b/drivers/gpu/drm/radeon/evergreen.c
-index 88d080c..7777c2f 100644
---- a/drivers/gpu/drm/radeon/evergreen.c
-+++ b/drivers/gpu/drm/radeon/evergreen.c
-@@ -977,6 +977,11 @@ int evergreen_pcie_gart_enable(struct radeon_device *rdev)
- WREG32(MC_VM_MD_L1_TLB0_CNTL, tmp);
- WREG32(MC_VM_MD_L1_TLB1_CNTL, tmp);
- WREG32(MC_VM_MD_L1_TLB2_CNTL, tmp);
-+ if ((rdev->family == CHIP_JUNIPER) ||
-+ (rdev->family == CHIP_CYPRESS) ||
-+ (rdev->family == CHIP_HEMLOCK) ||
-+ (rdev->family == CHIP_BARTS))
-+ WREG32(MC_VM_MD_L1_TLB3_CNTL, tmp);
- }
- WREG32(MC_VM_MB_L1_TLB0_CNTL, tmp);
- WREG32(MC_VM_MB_L1_TLB1_CNTL, tmp);
-diff --git a/drivers/gpu/drm/radeon/evergreend.h b/drivers/gpu/drm/radeon/evergreend.h
-index e00039e..0128445 100644
---- a/drivers/gpu/drm/radeon/evergreend.h
-+++ b/drivers/gpu/drm/radeon/evergreend.h
-@@ -230,6 +230,7 @@
- #define MC_VM_MD_L1_TLB0_CNTL 0x2654
- #define MC_VM_MD_L1_TLB1_CNTL 0x2658
- #define MC_VM_MD_L1_TLB2_CNTL 0x265C
-+#define MC_VM_MD_L1_TLB3_CNTL 0x2698
-
- #define FUS_MC_VM_MD_L1_TLB0_CNTL 0x265C
- #define FUS_MC_VM_MD_L1_TLB1_CNTL 0x2660
-diff --git a/drivers/gpu/drm/radeon/rv770.c b/drivers/gpu/drm/radeon/rv770.c
-index e3f01b8..e36ba7f 100644
---- a/drivers/gpu/drm/radeon/rv770.c
-+++ b/drivers/gpu/drm/radeon/rv770.c
-@@ -151,6 +151,8 @@ int rv770_pcie_gart_enable(struct radeon_device *rdev)
- WREG32(MC_VM_MD_L1_TLB0_CNTL, tmp);
- WREG32(MC_VM_MD_L1_TLB1_CNTL, tmp);
- WREG32(MC_VM_MD_L1_TLB2_CNTL, tmp);
-+ if (rdev->family == CHIP_RV740)
-+ WREG32(MC_VM_MD_L1_TLB3_CNTL, tmp);
- WREG32(MC_VM_MB_L1_TLB0_CNTL, tmp);
- WREG32(MC_VM_MB_L1_TLB1_CNTL, tmp);
- WREG32(MC_VM_MB_L1_TLB2_CNTL, tmp);
-diff --git a/drivers/gpu/drm/radeon/rv770d.h b/drivers/gpu/drm/radeon/rv770d.h
-index 79fa588..7538092 100644
---- a/drivers/gpu/drm/radeon/rv770d.h
-+++ b/drivers/gpu/drm/radeon/rv770d.h
-@@ -174,6 +174,7 @@
- #define MC_VM_MD_L1_TLB0_CNTL 0x2654
- #define MC_VM_MD_L1_TLB1_CNTL 0x2658
- #define MC_VM_MD_L1_TLB2_CNTL 0x265C
-+#define MC_VM_MD_L1_TLB3_CNTL 0x2698
- #define MC_VM_SYSTEM_APERTURE_DEFAULT_ADDR 0x203C
- #define MC_VM_SYSTEM_APERTURE_HIGH_ADDR 0x2038
- #define MC_VM_SYSTEM_APERTURE_LOW_ADDR 0x2034
---
-1.7.9.5
-
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
deleted file mode 100644
index e4ec73c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0048-drm-radeon-fix-HD6790-HD6570-backend-programming.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From 78a76c99190cb06c44e3432b33fa1641f6c75fa9 Mon Sep 17 00:00:00 2001
-From: Jerome Glisse <jglisse at redhat.com>
-Date: Thu, 31 May 2012 19:00:24 -0400
-Subject: [PATCH 48/86] drm/radeon: fix HD6790, HD6570 backend programming
-
-commit 95c4b23ec4e2fa5604df229ddf134e31d7b3b378 upstream.
-
-Without this bit sets we get broken rendering and
-lockups.
-
-fglrx sets this bit.
-
-Bugs that should be fixed by this patch :
-https://bugs.freedesktop.org/show_bug.cgi?id=49792
-https://bugzilla.kernel.org/show_bug.cgi?id=43207
-https://bugs.freedesktop.org/show_bug.cgi?id=39282
-
-Signed-off-by: Jerome Glisse <jglisse at redhat.com>
-Acked-by: Alex Deucher <alexander.deucher at amd.com>
-Signed-off-by: Dave Airlie <airlied at redhat.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpu/drm/radeon/evergreen.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/gpu/drm/radeon/evergreen.c b/drivers/gpu/drm/radeon/evergreen.c
-index 7777c2f..dac178b 100644
---- a/drivers/gpu/drm/radeon/evergreen.c
-+++ b/drivers/gpu/drm/radeon/evergreen.c
-@@ -2116,9 +2116,9 @@ static void evergreen_gpu_init(struct radeon_device *rdev)
- WREG32(CC_SYS_RB_BACKEND_DISABLE, rb);
- WREG32(GC_USER_RB_BACKEND_DISABLE, rb);
- WREG32(CC_GC_SHADER_PIPE_CONFIG, sp);
-- }
-+ }
-
-- grbm_gfx_index |= SE_BROADCAST_WRITES;
-+ grbm_gfx_index = INSTANCE_BROADCAST_WRITES | SE_BROADCAST_WRITES;
- WREG32(GRBM_GFX_INDEX, grbm_gfx_index);
- WREG32(RLC_GFX_INDEX, grbm_gfx_index);
-
---
-1.7.9.5
-
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
deleted file mode 100644
index 6529366..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0049-drm-ttm-Fix-spinlock-imbalance.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 309af9e8861e14263a958a70779944d8208f4323 Mon Sep 17 00:00:00 2001
-From: Thomas Hellstrom <thellstrom at vmware.com>
-Date: Fri, 1 Jun 2012 15:39:11 +0200
-Subject: [PATCH 49/86] drm/ttm: Fix spinlock imbalance
-
-commit a8ff3ee211fccf708e1911bbc096625453ebf759 upstream.
-
-This imbalance may cause hangs when TTM is trying to swap out a buffer
-that is already on the delayed delete list.
-
-Signed-off-by: Thomas Hellstrom <thellstrom at vmware.com>
-Reviewed-by: Jakob Bornecrantz <jakob at vmware.com>
-Signed-off-by: Dave Airlie <airlied at redhat.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpu/drm/ttm/ttm_bo.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c
-index 0bb0f5f..0d27bff 100644
---- a/drivers/gpu/drm/ttm/ttm_bo.c
-+++ b/drivers/gpu/drm/ttm/ttm_bo.c
-@@ -1816,6 +1816,7 @@ static int ttm_bo_swapout(struct ttm_mem_shrink *shrink)
- spin_unlock(&glob->lru_lock);
- (void) ttm_bo_cleanup_refs(bo, false, false, false);
- kref_put(&bo->list_kref, ttm_bo_release_list);
-+ spin_lock(&glob->lru_lock);
- continue;
- }
-
---
-1.7.9.5
-
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
deleted file mode 100644
index 81726bb..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0050-drm-vmwgfx-Fix-nasty-write-past-alloced-memory-area.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 345d5c3e9925e3a22b7974adfdb8bbb257432aee Mon Sep 17 00:00:00 2001
-From: Thomas Hellstrom <thellstrom at vmware.com>
-Date: Fri, 1 Jun 2012 15:48:04 +0200
-Subject: [PATCH 50/86] drm/vmwgfx: Fix nasty write past alloced memory area
-
-commit 0824db38e515644f8d1bfd64adbd7cb2c6ea7c62 upstream.
-
-Signed-off-by: Thomas Hellstrom <thellstrom at vmware.com>
-Reviewed-by: Jakob Bornecrantz <jakob at vmware.com>
-Signed-off-by: Dave Airlie <airlied at redhat.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpu/drm/vmwgfx/vmwgfx_gmr.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_gmr.c b/drivers/gpu/drm/vmwgfx/vmwgfx_gmr.c
-index f4e7763..c41226a 100644
---- a/drivers/gpu/drm/vmwgfx/vmwgfx_gmr.c
-+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_gmr.c
-@@ -66,7 +66,7 @@ static int vmw_gmr2_bind(struct vmw_private *dev_priv,
- cmd += sizeof(remap_cmd) / sizeof(uint32);
-
- for (i = 0; i < num_pages; ++i) {
-- if (VMW_PPN_SIZE > 4)
-+ if (VMW_PPN_SIZE <= 4)
- *cmd = page_to_pfn(*pages++);
- else
- *((uint64_t *)cmd) = page_to_pfn(*pages++);
---
-1.7.9.5
-
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
deleted file mode 100644
index f2451df..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0051-mtd-of_parts-fix-breakage-in-Kconfig.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From a0ca2787e60cec97689e654987149ead8fa6253b Mon Sep 17 00:00:00 2001
-From: Frank Svendsboe <frank.svendsboe at gmail.com>
-Date: Thu, 17 May 2012 22:43:09 +0200
-Subject: [PATCH 51/86] mtd: of_parts: fix breakage in Kconfig
-
-commit 2e929d001e85126d9267de373d4b76014789661d upstream.
-
-MTD_OF_PARTS and the default setting is not working due to using 'Y'
-instead of 'y', introduced in commit
-d6137badeff1ef64b4e0092ec249ebdeaeb3ff37. This made our board, and
-possibly other boards using DTS defined partitions and not having
-CONFIG_MTD_OF_PARTS=y defined in the defconfig, fail to mount root.
-
-Signed-off-by: Frank Svendsboe <frank.svendsboe at gmail.com>
-Signed-off-by: Artem Bityutskiy <artem.bityutskiy at linux.intel.com>
-Signed-off-by: David Woodhouse <David.Woodhouse at intel.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/mtd/Kconfig | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/mtd/Kconfig b/drivers/mtd/Kconfig
-index 318a869..4035b6d 100644
---- a/drivers/mtd/Kconfig
-+++ b/drivers/mtd/Kconfig
-@@ -128,7 +128,7 @@ config MTD_AFS_PARTS
-
- config MTD_OF_PARTS
- tristate "OpenFirmware partitioning information support"
-- default Y
-+ default y
- depends on OF
- help
- This provides a partition parsing function which derives
---
-1.7.9.5
-
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
deleted file mode 100644
index c808bfe..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0052-fec_mpc52xx-fix-timestamp-filtering.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From cc0b272fadb6be36a03152cbd37a95725a5114d4 Mon Sep 17 00:00:00 2001
-From: Stephan Gatzka <stephan at gatzka.org>
-Date: Sat, 2 Jun 2012 03:04:06 +0000
-Subject: [PATCH 52/86] fec_mpc52xx: fix timestamp filtering
-
-commit 9ca3cc6f3026946ba655e863ca2096339e667639 upstream.
-
-skb_defer_rx_timestamp was called with a freshly allocated skb but must
-be called with rskb instead.
-
-Signed-off-by: Stephan Gatzka <stephan at gatzka.org>
-Acked-by: Richard Cochran <richardcochran at gmail.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/ethernet/freescale/fec_mpc52xx.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/net/ethernet/freescale/fec_mpc52xx.c b/drivers/net/ethernet/freescale/fec_mpc52xx.c
-index 30745b5..1e52736 100644
---- a/drivers/net/ethernet/freescale/fec_mpc52xx.c
-+++ b/drivers/net/ethernet/freescale/fec_mpc52xx.c
-@@ -437,7 +437,7 @@ static irqreturn_t mpc52xx_fec_rx_interrupt(int irq, void *dev_id)
- length = status & BCOM_FEC_RX_BD_LEN_MASK;
- skb_put(rskb, length - 4); /* length without CRC32 */
- rskb->protocol = eth_type_trans(rskb, dev);
-- if (!skb_defer_rx_timestamp(skb))
-+ if (!skb_defer_rx_timestamp(rskb))
- netif_rx(rskb);
-
- spin_lock(&priv->lock);
---
-1.7.9.5
-
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
deleted file mode 100644
index e8bb82b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0053-Bluetooth-btusb-Add-vendor-specific-ID-0a5c-21f3-for.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From b57ea95f303c57eecda3fabdf246147ca9236cc3 Mon Sep 17 00:00:00 2001
-From: Manoj Iyer <manoj.iyer at canonical.com>
-Date: Thu, 2 Feb 2012 09:32:36 -0600
-Subject: [PATCH 53/86] Bluetooth: btusb: Add vendor specific ID (0a5c 21f3)
- for BCM20702A0
-
-commit 37305cf649689a4d2341dd6fd89b091c6007f9ba upstream.
-
-T: Bus=01 Lev=02 Prnt=02 Port=03 Cnt=03 Dev#= 5 Spd=12 MxCh= 0
-D: Ver= 2.00 Cls=ff(vend.) Sub=01 Prot=01 MxPS=64 #Cfgs= 1
-P: Vendor=0a5c ProdID=21f3 Rev=01.12
-S: Manufacturer=Broadcom Corp
-S: Product=BCM20702A0
-S: SerialNumber=74DE2B344A7B
-C: #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=0mA
-I: If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none)
-I: If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none)
-I: If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
-I: If#= 3 Alt= 0 #EPs= 0 Cls=fe(app. ) Sub=01 Prot=01 Driver=(none)
-
-Signed-off-by: Manoj Iyer <manoj.iyer at canonical.com>
-Tested-by: Dennis Chua <dennis.chua at canonical.com>
-Acked-by: Marcel Holtmann <marcel at holtmann.org>
-Signed-off-by: Johan Hedberg <johan.hedberg at intel.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/bluetooth/btusb.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
-index e56da6a..1f8c8ca 100644
---- a/drivers/bluetooth/btusb.c
-+++ b/drivers/bluetooth/btusb.c
-@@ -102,6 +102,7 @@ static struct usb_device_id btusb_table[] = {
-
- /* Broadcom BCM20702A0 */
- { USB_DEVICE(0x0a5c, 0x21e3) },
-+ { USB_DEVICE(0x0a5c, 0x21f3) },
- { USB_DEVICE(0x413c, 0x8197) },
-
- { } /* Terminating entry */
---
-1.7.9.5
-
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
deleted file mode 100644
index 4adefec..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0054-Bluetooth-btusb-add-support-for-BCM20702A0-0a5c-21e6.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From c2b51905d0a995131d0e4ad248ebe4bc4a5c9470 Mon Sep 17 00:00:00 2001
-From: "James M. Leddy" <james.leddy at canonical.com>
-Date: Tue, 6 Mar 2012 02:41:33 +0200
-Subject: [PATCH 54/86] Bluetooth: btusb: add support for BCM20702A0
- [0a5c:21e6]
-
-commit 0a4eaeeb993658a4d6cff054a863241f32d3d2fb upstream.
-
-Add another vendor specific ID for BCM20702A0. This has been tested and
-works on hardware with this device.
-
-output of usb-devices:
-T: Bus=01 Lev=02 Prnt=02 Port=03 Cnt=04 Dev#= 6 Spd=12 MxCh= 0
-D: Ver= 2.00 Cls=ff(vend.) Sub=01 Prot=01 MxPS=64 #Cfgs= 1
-P: Vendor=0a5c ProdID=21e6 Rev=01.12
-S: Manufacturer=Broadcom Corp
-S: Product=BCM20702A0
-S: SerialNumber=D0DF9AFB227B
-C: #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=0mA
-I: If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none)
-I: If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none)
-I: If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
-I: If#= 3 Alt= 0 #EPs= 0 Cls=fe(app. ) Sub=01 Prot=01 Driver=(none)
-
-Signed-off-by: James M. Leddy <james.leddy at canonical.com>
-Acked-by: Marcel Holtmann <marcel at holtmann.org>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Johan Hedberg <johan.hedberg at intel.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/bluetooth/btusb.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
-index 1f8c8ca..fde7512 100644
---- a/drivers/bluetooth/btusb.c
-+++ b/drivers/bluetooth/btusb.c
-@@ -102,6 +102,7 @@ static struct usb_device_id btusb_table[] = {
-
- /* Broadcom BCM20702A0 */
- { USB_DEVICE(0x0a5c, 0x21e3) },
-+ { USB_DEVICE(0x0a5c, 0x21e6) },
- { USB_DEVICE(0x0a5c, 0x21f3) },
- { USB_DEVICE(0x413c, 0x8197) },
-
---
-1.7.9.5
-
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
deleted file mode 100644
index 65aed69..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0055-Bluetooth-btusb-Add-USB-device-ID-0a5c-21e8.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 67248cba79392f35493056ea7262d27fc1fe06f3 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Jo=C3=A3o=20Paulo=20Rechi=20Vita?= <jprvita at openbossa.org>
-Date: Wed, 14 Mar 2012 21:45:16 +0200
-Subject: [PATCH 55/86] Bluetooth: btusb: Add USB device ID "0a5c 21e8"
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit 6dfc326f0605fd87e4c10ccde10de0ce4280d72d upstream.
-
-One more vendor-specific ID for BCM20702A0.
-
-T: Bus=01 Lev=03 Prnt=05 Port=02 Cnt=01 Dev#= 9 Spd=12 MxCh= 0
-D: Ver= 2.00 Cls=ff(vend.) Sub=01 Prot=01 MxPS=64 #Cfgs= 1
-P: Vendor=0a5c ProdID=21e8 Rev=01.12
-S: Manufacturer=Broadcom Corp
-S: Product=BCM20702A0
-S: SerialNumber=00027221F4E2
-C: #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=0mA
-I: If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none)
-I: If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none)
-I: If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
-I: If#= 3 Alt= 0 #EPs= 0 Cls=fe(app. ) Sub=01 Prot=01 Driver=(none)
-
-Signed-off-by: João Paulo Rechi Vita <jprvita at openbossa.org>
-Acked-by: Gustavo F. Padovan <padovan at profusion.mobi>
-Signed-off-by: Johan Hedberg <johan.hedberg at intel.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/bluetooth/btusb.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
-index fde7512..d4859bf 100644
---- a/drivers/bluetooth/btusb.c
-+++ b/drivers/bluetooth/btusb.c
-@@ -103,6 +103,7 @@ static struct usb_device_id btusb_table[] = {
- /* Broadcom BCM20702A0 */
- { USB_DEVICE(0x0a5c, 0x21e3) },
- { USB_DEVICE(0x0a5c, 0x21e6) },
-+ { USB_DEVICE(0x0a5c, 0x21e8) },
- { USB_DEVICE(0x0a5c, 0x21f3) },
- { USB_DEVICE(0x413c, 0x8197) },
-
---
-1.7.9.5
-
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
deleted file mode 100644
index 35c5c39..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0056-Bluetooth-btusb-typo-in-Broadcom-SoftSailing-id.patch
+++ /dev/null
@@ -1,66 +0,0 @@
-From e109dadcc7d05181ac8e093311d8a242b0d58ca7 Mon Sep 17 00:00:00 2001
-From: Don Zickus <dzickus at redhat.com>
-Date: Wed, 28 Mar 2012 16:41:11 -0400
-Subject: [PATCH 56/86] Bluetooth: btusb: typo in Broadcom SoftSailing id
-
-commit 2e8b506310f6433d5558387fd568d4bfb1d6a799 upstream.
-
-I was trying to backport the following commit to RHEL-6
-
- From 0cea73465cd22373c5cd43a3edd25fbd4bb532ef Mon Sep 17 00:00:00 2001
- From: Oliver Neukum <oliver at neukum.org>
- Date: Wed, 21 Sep 2011 11:37:15 +0200
- Subject: [PATCH] btusb: add device entry for Broadcom SoftSailing
-
-and noticed it wasn't working on an HP Elitebook. Looking into the patch I
-noticed a very subtle typo in the ids. The patch has '0x05ac' instead of
-'0x0a5c'. A snippet of the lsusb -v output also shows this:
-
-Bus 002 Device 003: ID 0a5c:21e1 Broadcom Corp.
-Device Descriptor:
- bLength 18
- bDescriptorType 1
- bcdUSB 2.00
- bDeviceClass 255 Vendor Specific Class
- bDeviceSubClass 1
- bDeviceProtocol 1
- bMaxPacketSize0 64
- idVendor 0x0a5c Broadcom Corp.
- idProduct 0x21e1
- bcdDevice 1.12
- iManufacturer 1 Broadcom Corp
- iProduct 2 BCM20702A0
- iSerial 3 60D819F0338C
- bNumConfigurations 1
-
-Looking at other Broadcom ids, the fix matches them whereas the original patch
-matches Apple's ids.
-
-Tested on an HP Elitebook 8760w. The btusb binds and the userspace stuff loads
-correctly.
-
-Cc: Oliver Neukum <oliver at neukum.org>
-Signed-off-by: Don Zickus <dzickus at redhat.com>
-Acked-by: Marcel Holtmann <marcel at holtmann.org>
-Signed-off-by: Johan Hedberg <johan.hedberg at intel.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/bluetooth/btusb.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
-index d4859bf..f8a0b7f 100644
---- a/drivers/bluetooth/btusb.c
-+++ b/drivers/bluetooth/btusb.c
-@@ -61,7 +61,7 @@ static struct usb_device_id btusb_table[] = {
- { USB_DEVICE_INFO(0xe0, 0x01, 0x01) },
-
- /* Broadcom SoftSailing reporting vendor specific */
-- { USB_DEVICE(0x05ac, 0x21e1) },
-+ { USB_DEVICE(0x0a5c, 0x21e1) },
-
- /* Apple MacBookPro 7,1 */
- { USB_DEVICE(0x05ac, 0x8213) },
---
-1.7.9.5
-
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
deleted file mode 100644
index 4e9b6d6..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0057-Bluetooth-btusb-Add-vendor-specific-ID-0489-e042-for.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From d7988c4b2a641a23d6156b650616eada6ba6152a Mon Sep 17 00:00:00 2001
-From: Manoj Iyer <manoj.iyer at canonical.com>
-Date: Mon, 9 Apr 2012 09:22:28 -0500
-Subject: [PATCH 57/86] Bluetooth: btusb: Add vendor specific ID (0489 e042)
- for BCM20702A0
-
-commit 79cd76022044f8177bb00e3fd590ec8d6b5f8c35 upstream.
-
-T: Bus=02 Lev=02 Prnt=02 Port=04 Cnt=01 Dev#= 3 Spd=12 MxCh= 0
-D: Ver= 2.00 Cls=ff(vend.) Sub=01 Prot=01 MxPS=64 #Cfgs= 1
-P: Vendor=0489 ProdID=e042 Rev=01.12
-S: Manufacturer=Broadcom Corp
-S: Product=BCM20702A0
-S: SerialNumber=E4D53DCA61B5
-C: #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=0mA
-I: If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none)
-I: If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none)
-I: If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
-I: If#= 3 Alt= 0 #EPs= 0 Cls=fe(app. ) Sub=01 Prot=01 Driver=(none)
-
-Reported-by: Dennis Chua <dennis.chua at canonical.com>
-Signed-off-by: Manoj Iyer <manoj.iyer at canonical.com>
-Signed-off-by: Johan Hedberg <johan.hedberg at intel.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/bluetooth/btusb.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
-index f8a0b7f..41fe990 100644
---- a/drivers/bluetooth/btusb.c
-+++ b/drivers/bluetooth/btusb.c
-@@ -101,6 +101,7 @@ static struct usb_device_id btusb_table[] = {
- { USB_DEVICE(0x0c10, 0x0000) },
-
- /* Broadcom BCM20702A0 */
-+ { USB_DEVICE(0x0489, 0xe042) },
- { USB_DEVICE(0x0a5c, 0x21e3) },
- { USB_DEVICE(0x0a5c, 0x21e6) },
- { USB_DEVICE(0x0a5c, 0x21e8) },
---
-1.7.9.5
-
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
deleted file mode 100644
index f383af8..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0058-Bluetooth-Add-support-for-Atheros-13d3-3362.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-From e98b15f43ca380ca2d8adeae78da99222cf12f8a Mon Sep 17 00:00:00 2001
-From: AceLan Kao <acelan.kao at canonical.com>
-Date: Fri, 13 Apr 2012 17:39:57 +0800
-Subject: [PATCH 58/86] Bluetooth: Add support for Atheros [13d3:3362]
-
-commit 87522a433ba6886b5ccbb497e0a7cb8097def64e upstream.
-
-Add another vendor specific ID for Atheros AR3012 device.
-This chip is wrapped by IMC Networks.
-
-output of usb-devices:
-T: Bus=01 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#= 5 Spd=12 MxCh= 0
-D: Ver= 1.10 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs= 1
-P: Vendor=13d3 ProdID=3362 Rev=00.02
-S: Manufacturer=Atheros Communications
-S: Product=Bluetooth USB Host Controller
-S: SerialNumber=Alaska Day 2006
-C: #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
-I: If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
-I: If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
-
-Signed-off-by: AceLan Kao <acelan.kao at canonical.com>
-Signed-off-by: Johan Hedberg <johan.hedberg at intel.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/bluetooth/ath3k.c | 2 ++
- drivers/bluetooth/btusb.c | 1 +
- 2 files changed, 3 insertions(+)
-
-diff --git a/drivers/bluetooth/ath3k.c b/drivers/bluetooth/ath3k.c
-index 99fefbd..90482ef 100644
---- a/drivers/bluetooth/ath3k.c
-+++ b/drivers/bluetooth/ath3k.c
-@@ -74,6 +74,7 @@ static struct usb_device_id ath3k_table[] = {
- { USB_DEVICE(0x0CF3, 0x311D) },
- { USB_DEVICE(0x13d3, 0x3375) },
- { USB_DEVICE(0x04CA, 0x3005) },
-+ { USB_DEVICE(0x13d3, 0x3362) },
-
- /* Atheros AR5BBU12 with sflash firmware */
- { USB_DEVICE(0x0489, 0xE02C) },
-@@ -93,6 +94,7 @@ static struct usb_device_id ath3k_blist_tbl[] = {
- { USB_DEVICE(0x0cf3, 0x311D), .driver_info = BTUSB_ATH3012 },
- { USB_DEVICE(0x13d3, 0x3375), .driver_info = BTUSB_ATH3012 },
- { USB_DEVICE(0x04ca, 0x3005), .driver_info = BTUSB_ATH3012 },
-+ { USB_DEVICE(0x13d3, 0x3362), .driver_info = BTUSB_ATH3012 },
-
- { } /* Terminating entry */
- };
-diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
-index 41fe990..1329fa7 100644
---- a/drivers/bluetooth/btusb.c
-+++ b/drivers/bluetooth/btusb.c
-@@ -134,6 +134,7 @@ static struct usb_device_id blacklist_table[] = {
- { USB_DEVICE(0x0cf3, 0x311d), .driver_info = BTUSB_ATH3012 },
- { USB_DEVICE(0x13d3, 0x3375), .driver_info = BTUSB_ATH3012 },
- { USB_DEVICE(0x04ca, 0x3005), .driver_info = BTUSB_ATH3012 },
-+ { USB_DEVICE(0x13d3, 0x3362), .driver_info = BTUSB_ATH3012 },
-
- /* Atheros AR5BBU12 with sflash firmware */
- { USB_DEVICE(0x0489, 0xe02c), .driver_info = BTUSB_IGNORE },
---
-1.7.9.5
-
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
deleted file mode 100644
index b52635a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0059-Bluetooth-Add-support-for-AR3012-0cf3-e004.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-From d86daa62c84ee4f586aed288307d8086ffd03db9 Mon Sep 17 00:00:00 2001
-From: AceLan Kao <acelan.kao at canonical.com>
-Date: Thu, 19 Apr 2012 14:53:45 +0800
-Subject: [PATCH 59/86] Bluetooth: Add support for AR3012 [0cf3:e004]
-
-commit ac71311e65e2c4c2dbac76db698fecbee755b016 upstream.
-
-Add another vendor specific ID for Atheros AR3012
-
-output of usb-devices:
-T: Bus=02 Lev=02 Prnt=02 Port=04 Cnt=01 Dev#= 4 Spd=12 MxCh= 0
-D: Ver= 1.10 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs= 1
-P: Vendor=0cf3 ProdID=e004 Rev=00.02
-S: Manufacturer=Atheros Communications
-S: Product=Bluetooth USB Host Controller
-S: SerialNumber=Alaska Day 2006
-C: #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
-I: If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
-I: If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
-
-BugLink: https://bugs.launchpad.net/bugs/922715
-
-Signed-off-by: AceLan Kao <acelan.kao at canonical.com>
-Signed-off-by: Marcel Holtmann <marcel at holtmann.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/bluetooth/ath3k.c | 2 ++
- drivers/bluetooth/btusb.c | 1 +
- 2 files changed, 3 insertions(+)
-
-diff --git a/drivers/bluetooth/ath3k.c b/drivers/bluetooth/ath3k.c
-index 90482ef..7e0b3c4 100644
---- a/drivers/bluetooth/ath3k.c
-+++ b/drivers/bluetooth/ath3k.c
-@@ -75,6 +75,7 @@ static struct usb_device_id ath3k_table[] = {
- { USB_DEVICE(0x13d3, 0x3375) },
- { USB_DEVICE(0x04CA, 0x3005) },
- { USB_DEVICE(0x13d3, 0x3362) },
-+ { USB_DEVICE(0x0CF3, 0xE004) },
-
- /* Atheros AR5BBU12 with sflash firmware */
- { USB_DEVICE(0x0489, 0xE02C) },
-@@ -95,6 +96,7 @@ static struct usb_device_id ath3k_blist_tbl[] = {
- { USB_DEVICE(0x13d3, 0x3375), .driver_info = BTUSB_ATH3012 },
- { USB_DEVICE(0x04ca, 0x3005), .driver_info = BTUSB_ATH3012 },
- { USB_DEVICE(0x13d3, 0x3362), .driver_info = BTUSB_ATH3012 },
-+ { USB_DEVICE(0x0cf3, 0xe004), .driver_info = BTUSB_ATH3012 },
-
- { } /* Terminating entry */
- };
-diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
-index 1329fa7..d6217c2 100644
---- a/drivers/bluetooth/btusb.c
-+++ b/drivers/bluetooth/btusb.c
-@@ -135,6 +135,7 @@ static struct usb_device_id blacklist_table[] = {
- { USB_DEVICE(0x13d3, 0x3375), .driver_info = BTUSB_ATH3012 },
- { USB_DEVICE(0x04ca, 0x3005), .driver_info = BTUSB_ATH3012 },
- { USB_DEVICE(0x13d3, 0x3362), .driver_info = BTUSB_ATH3012 },
-+ { USB_DEVICE(0x0cf3, 0xe004), .driver_info = BTUSB_ATH3012 },
-
- /* Atheros AR5BBU12 with sflash firmware */
- { USB_DEVICE(0x0489, 0xe02c), .driver_info = BTUSB_IGNORE },
---
-1.7.9.5
-
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
deleted file mode 100644
index ca759ca..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0060-Add-Foxconn-Hon-Hai-IDs-for-btusb-module.patch
+++ /dev/null
@@ -1,71 +0,0 @@
-From ebe49536c92d57d8147efb128bbd6e3aff2e9289 Mon Sep 17 00:00:00 2001
-From: Steven Harms <sjharms at gmail.com>
-Date: Fri, 13 Apr 2012 14:45:55 -0400
-Subject: [PATCH 60/86] Add Foxconn / Hon Hai IDs for btusb module
-
-commit 985140369be1e886754d8ac0375dd64e4f727311 upstream.
-
-This change adds 0x0489:0xe033 to the btusb module.
-
-This bluetooth usb device is integrated in the Acer TimelineX AS4830TG-6808 notebook.
-
-Output from /sys/kernel/debug/usb/devices:
-
-T: Bus=01 Lev=02 Prnt=02 Port=05 Cnt=02 Dev#= 4 Spd=12 MxCh= 0
-D: Ver= 2.00 Cls=ff(vend.) Sub=01 Prot=01 MxPS=64 #Cfgs= 1
-P: Vendor=0489 ProdID=e033 Rev= 2.29
-S: Manufacturer=Broadcom Corp
-S: Product=Acer Module
-S: SerialNumber=60D819F74101
-C:* #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr= 0mA
-I:* If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=01 Prot=01 Driver=btusb
-E: Ad=81(I) Atr=03(Int.) MxPS= 16 Ivl=1ms
-E: Ad=82(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
-E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
-I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=btusb
-E: Ad=83(I) Atr=01(Isoc) MxPS= 0 Ivl=1ms
-E: Ad=03(O) Atr=01(Isoc) MxPS= 0 Ivl=1ms
-I: If#= 1 Alt= 1 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=btusb
-E: Ad=83(I) Atr=01(Isoc) MxPS= 9 Ivl=1ms
-E: Ad=03(O) Atr=01(Isoc) MxPS= 9 Ivl=1ms
-I: If#= 1 Alt= 2 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
-E: Ad=83(I) Atr=01(Isoc) MxPS= 17 Ivl=1ms
-E: Ad=03(O) Atr=01(Isoc) MxPS= 17 Ivl=1ms
-I: If#= 1 Alt= 3 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
-E: Ad=83(I) Atr=01(Isoc) MxPS= 32 Ivl=1ms
-E: Ad=03(O) Atr=01(Isoc) MxPS= 32 Ivl=1ms
-I: If#= 1 Alt= 4 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
-E: Ad=83(I) Atr=01(Isoc) MxPS= 64 Ivl=1ms
-E: Ad=03(O) Atr=01(Isoc) MxPS= 64 Ivl=1ms
-I: If#= 1 Alt= 5 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
-E: Ad=83(I) Atr=01(Isoc) MxPS= 64 Ivl=1ms
-E: Ad=03(O) Atr=01(Isoc) MxPS= 64 Ivl=1ms
-I:* If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
-E: Ad=84(I) Atr=02(Bulk) MxPS= 32 Ivl=0ms
-E: Ad=04(O) Atr=02(Bulk) MxPS= 32 Ivl=0ms
-I:* If#= 3 Alt= 0 #EPs= 0 Cls=fe(app. ) Sub=01 Prot=01 Driver=(none)
-
-Signed-off-by: Steven Harms <sjharms at gmail.com>
-Signed-off-by: Gustavo Padovan <gustavo at padovan.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/bluetooth/btusb.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
-index d6217c2..fdceeac 100644
---- a/drivers/bluetooth/btusb.c
-+++ b/drivers/bluetooth/btusb.c
-@@ -108,6 +108,9 @@ static struct usb_device_id btusb_table[] = {
- { USB_DEVICE(0x0a5c, 0x21f3) },
- { USB_DEVICE(0x413c, 0x8197) },
-
-+ /* Foxconn - Hon Hai */
-+ { USB_DEVICE(0x0489, 0xe033) },
-+
- { } /* Terminating entry */
- };
-
---
-1.7.9.5
-
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
deleted file mode 100644
index f0c30e1..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0061-Bluetooth-Add-support-for-Foxconn-Hon-Hai-AR5BBU22-0.patch
+++ /dev/null
@@ -1,94 +0,0 @@
-From c28bcb8c3f6bdeb976832e0726872944c739ae6a Mon Sep 17 00:00:00 2001
-From: Michael Gruetzner <mgruetzn at gmx.de>
-Date: Wed, 2 May 2012 22:33:40 +0200
-Subject: [PATCH 61/86] Bluetooth: Add support for Foxconn/Hon Hai AR5BBU22
- 0489:E03C
-
-commit 85d59726c5c66016a507f1f4a60db8e374dd284d upstream.
-
-Add Foxconn/Hon Hai AR5BBU22 Bluetooth Module( 0x489:0xE03C) to
-the blacklist of btusb module and add it to the ath3k module to properly
-load the firmware in Kernel 3.3.4
-The device is integrated in e.g. some Acer Aspire 7750G.
-
-Output from /sys/kernel/debug/usb/devices:
-
-T: Bus=01 Lev=02 Prnt=02 Port=05 Cnt=02 Dev#= 6 Spd=12 MxCh= 0
-D: Ver= 2.00 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs= 1
-P: Vendor=0489 ProdID=e03c Rev= 0.02
-S: Manufacturer=Atheros Communications
-S: Product=Bluetooth USB Host Controller
-S: SerialNumber=Alaska Day 2006
-C:* #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
-I:* If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
-E: Ad=81(I) Atr=03(Int.) MxPS= 16 Ivl=1ms
-E: Ad=82(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
-E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
-I:* If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
-E: Ad=83(I) Atr=01(Isoc) MxPS= 0 Ivl=1ms
-E: Ad=03(O) Atr=01(Isoc) MxPS= 0 Ivl=1ms
-I: If#= 1 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
-E: Ad=83(I) Atr=01(Isoc) MxPS= 9 Ivl=1ms
-E: Ad=03(O) Atr=01(Isoc) MxPS= 9 Ivl=1ms
-I: If#= 1 Alt= 2 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
-E: Ad=83(I) Atr=01(Isoc) MxPS= 17 Ivl=1ms
-E: Ad=03(O) Atr=01(Isoc) MxPS= 17 Ivl=1ms
-I: If#= 1 Alt= 3 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
-E: Ad=83(I) Atr=01(Isoc) MxPS= 25 Ivl=1ms
-E: Ad=03(O) Atr=01(Isoc) MxPS= 25 Ivl=1ms
-I: If#= 1 Alt= 4 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
-E: Ad=83(I) Atr=01(Isoc) MxPS= 33 Ivl=1ms
-E: Ad=03(O) Atr=01(Isoc) MxPS= 33 Ivl=1ms
-I: If#= 1 Alt= 5 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
-E: Ad=83(I) Atr=01(Isoc) MxPS= 49 Ivl=1ms
-E: Ad=03(O) Atr=01(Isoc) MxPS= 49 Ivl=1ms
-
-Signed-off-by: Michael Gruetzner <mgruetzn at gmx.de>
-Signed-off-by: Gustavo Padovan <gustavo at padovan.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/bluetooth/ath3k.c | 6 ++++++
- drivers/bluetooth/btusb.c | 3 +++
- 2 files changed, 9 insertions(+)
-
-diff --git a/drivers/bluetooth/ath3k.c b/drivers/bluetooth/ath3k.c
-index 7e0b3c4..f1bd44f 100644
---- a/drivers/bluetooth/ath3k.c
-+++ b/drivers/bluetooth/ath3k.c
-@@ -80,6 +80,9 @@ static struct usb_device_id ath3k_table[] = {
- /* Atheros AR5BBU12 with sflash firmware */
- { USB_DEVICE(0x0489, 0xE02C) },
-
-+ /* Atheros AR5BBU22 with sflash firmware */
-+ { USB_DEVICE(0x0489, 0xE03C) },
-+
- { } /* Terminating entry */
- };
-
-@@ -98,6 +101,9 @@ static struct usb_device_id ath3k_blist_tbl[] = {
- { USB_DEVICE(0x13d3, 0x3362), .driver_info = BTUSB_ATH3012 },
- { USB_DEVICE(0x0cf3, 0xe004), .driver_info = BTUSB_ATH3012 },
-
-+ /* Atheros AR5BBU22 with sflash firmware */
-+ { USB_DEVICE(0x0489, 0xE03C), .driver_info = BTUSB_ATH3012 },
-+
- { } /* Terminating entry */
- };
-
-diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
-index fdceeac..fc4bcd6 100644
---- a/drivers/bluetooth/btusb.c
-+++ b/drivers/bluetooth/btusb.c
-@@ -143,6 +143,9 @@ static struct usb_device_id blacklist_table[] = {
- /* Atheros AR5BBU12 with sflash firmware */
- { USB_DEVICE(0x0489, 0xe02c), .driver_info = BTUSB_IGNORE },
-
-+ /* Atheros AR5BBU12 with sflash firmware */
-+ { USB_DEVICE(0x0489, 0xe03c), .driver_info = BTUSB_ATH3012 },
-+
- /* Broadcom BCM2035 */
- { USB_DEVICE(0x0a5c, 0x2035), .driver_info = BTUSB_WRONG_SCO_MTU },
- { USB_DEVICE(0x0a5c, 0x200a), .driver_info = BTUSB_WRONG_SCO_MTU },
---
-1.7.9.5
-
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
deleted file mode 100644
index de38173..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0062-drm-i915-Disable-FBC-on-SandyBridge.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From d23ccb0cbe37783fcfb8879480160ed840488bb2 Mon Sep 17 00:00:00 2001
-From: Chris Wilson <chris at chris-wilson.co.uk>
-Date: Tue, 8 Nov 2011 23:17:34 +0000
-Subject: [PATCH 62/86] drm/i915:: Disable FBC on SandyBridge
-
-commit d56d8b28e9247e7e35e02fbb12b12239a2c33ad1 upstream.
-
-Enabling FBC is causing the BLT ring to run between 10-100x slower than
-normal and frequently lockup. The interim solution is disable FBC once
-more until we know why.
-
-Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
-Signed-off-by: Keith Packard <keithp at keithp.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpu/drm/i915/intel_display.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
-index 41bbe78..4720397 100644
---- a/drivers/gpu/drm/i915/intel_display.c
-+++ b/drivers/gpu/drm/i915/intel_display.c
-@@ -1864,7 +1864,7 @@ static void intel_update_fbc(struct drm_device *dev)
- if (enable_fbc < 0) {
- DRM_DEBUG_KMS("fbc set to per-chip default\n");
- enable_fbc = 1;
-- if (INTEL_INFO(dev)->gen <= 5)
-+ if (INTEL_INFO(dev)->gen <= 6)
- enable_fbc = 0;
- }
- if (!enable_fbc) {
---
-1.7.9.5
-
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
deleted file mode 100644
index 71f8710..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0063-ipv4-Do-not-use-dead-fib_info-entries.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 1fc7ceff08329209e4c28263a5b545343d4cce19 Mon Sep 17 00:00:00 2001
-From: "David S. Miller" <davem at davemloft.net>
-Date: Thu, 10 May 2012 22:16:32 -0400
-Subject: [PATCH 63/86] ipv4: Do not use dead fib_info entries.
-
-[ Upstream commit dccd9ecc374462e5d6a5b8f8110415a86c2213d8 ]
-
-Due to RCU lookups and RCU based release, fib_info objects can
-be found during lookup which have fi->fib_dead set.
-
-We must ignore these entries, otherwise we risk dereferencing
-the parts of the entry which are being torn down.
-
-Reported-by: Yevgen Pronenko <yevgen.pronenko at sonymobile.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/ipv4/fib_trie.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/net/ipv4/fib_trie.c b/net/ipv4/fib_trie.c
-index 3ce23f9..cd2d639 100644
---- a/net/ipv4/fib_trie.c
-+++ b/net/ipv4/fib_trie.c
-@@ -1372,6 +1372,8 @@ static int check_leaf(struct fib_table *tb, struct trie *t, struct leaf *l,
-
- if (fa->fa_tos && fa->fa_tos != flp->flowi4_tos)
- continue;
-+ if (fi->fib_dead)
-+ continue;
- if (fa->fa_info->fib_scope < flp->flowi4_scope)
- continue;
- fib_alias_accessed(fa);
---
-1.7.9.5
-
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
deleted file mode 100644
index 80f8f2c..0000000
--- 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
+++ /dev/null
@@ -1,92 +0,0 @@
-From 5d360e327490263d01b60ed06f9c48ec923e93c4 Mon Sep 17 00:00:00 2001
-From: Yanmin Zhang <yanmin_zhang at linux.intel.com>
-Date: Wed, 23 May 2012 15:39:45 +0000
-Subject: [PATCH 64/86] ipv4: fix the rcu race between free_fib_info and
- ip_route_output_slow
-
-[ Upstream commit e49cc0da7283088c5e03d475ffe2fdcb24a6d5b1 ]
-
-We hit a kernel OOPS.
-
-<3>[23898.789643] BUG: sleeping function called from invalid context at
-/data/buildbot/workdir/ics/hardware/intel/linux-2.6/arch/x86/mm/fault.c:1103
-<3>[23898.862215] in_atomic(): 0, irqs_disabled(): 0, pid: 10526, name:
-Thread-6683
-<4>[23898.967805] HSU serial 0000:00:05.1: 0000:00:05.2:HSU serial prevented me
-to suspend...
-<4>[23899.258526] Pid: 10526, comm: Thread-6683 Tainted: G W
-3.0.8-137685-ge7742f9 #1
-<4>[23899.357404] HSU serial 0000:00:05.1: 0000:00:05.2:HSU serial prevented me
-to suspend...
-<4>[23899.904225] Call Trace:
-<4>[23899.989209] [<c1227f50>] ? pgtable_bad+0x130/0x130
-<4>[23900.000416] [<c1238c2a>] __might_sleep+0x10a/0x110
-<4>[23900.007357] [<c1228021>] do_page_fault+0xd1/0x3c0
-<4>[23900.013764] [<c18e9ba9>] ? restore_all+0xf/0xf
-<4>[23900.024024] [<c17c007b>] ? napi_complete+0x8b/0x690
-<4>[23900.029297] [<c1227f50>] ? pgtable_bad+0x130/0x130
-<4>[23900.123739] [<c1227f50>] ? pgtable_bad+0x130/0x130
-<4>[23900.128955] [<c18ea0c3>] error_code+0x5f/0x64
-<4>[23900.133466] [<c1227f50>] ? pgtable_bad+0x130/0x130
-<4>[23900.138450] [<c17f6298>] ? __ip_route_output_key+0x698/0x7c0
-<4>[23900.144312] [<c17f5f8d>] ? __ip_route_output_key+0x38d/0x7c0
-<4>[23900.150730] [<c17f63df>] ip_route_output_flow+0x1f/0x60
-<4>[23900.156261] [<c181de58>] ip4_datagram_connect+0x188/0x2b0
-<4>[23900.161960] [<c18e981f>] ? _raw_spin_unlock_bh+0x1f/0x30
-<4>[23900.167834] [<c18298d6>] inet_dgram_connect+0x36/0x80
-<4>[23900.173224] [<c14f9e88>] ? _copy_from_user+0x48/0x140
-<4>[23900.178817] [<c17ab9da>] sys_connect+0x9a/0xd0
-<4>[23900.183538] [<c132e93c>] ? alloc_file+0xdc/0x240
-<4>[23900.189111] [<c123925d>] ? sub_preempt_count+0x3d/0x50
-
-Function free_fib_info resets nexthop_nh->nh_dev to NULL before releasing
-fi. Other cpu might be accessing fi. Fixing it by delaying the releasing.
-
-With the patch, we ran MTBF testing on Android mobile for 12 hours
-and didn't trigger the issue.
-
-Thank Eric for very detailed review/checking the issue.
-
-Signed-off-by: Yanmin Zhang <yanmin_zhang at linux.intel.com>
-Signed-off-by: Kun Jiang <kunx.jiang at intel.com>
-Acked-by: Eric Dumazet <edumazet at google.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/ipv4/fib_semantics.c | 12 ++++++------
- 1 file changed, 6 insertions(+), 6 deletions(-)
-
-diff --git a/net/ipv4/fib_semantics.c b/net/ipv4/fib_semantics.c
-index 80106d8..d01f9c6 100644
---- a/net/ipv4/fib_semantics.c
-+++ b/net/ipv4/fib_semantics.c
-@@ -146,6 +146,12 @@ static void free_fib_info_rcu(struct rcu_head *head)
- {
- struct fib_info *fi = container_of(head, struct fib_info, rcu);
-
-+ change_nexthops(fi) {
-+ if (nexthop_nh->nh_dev)
-+ dev_put(nexthop_nh->nh_dev);
-+ } endfor_nexthops(fi);
-+
-+ release_net(fi->fib_net);
- if (fi->fib_metrics != (u32 *) dst_default_metrics)
- kfree(fi->fib_metrics);
- kfree(fi);
-@@ -157,13 +163,7 @@ void free_fib_info(struct fib_info *fi)
- pr_warning("Freeing alive fib_info %p\n", fi);
- return;
- }
-- change_nexthops(fi) {
-- if (nexthop_nh->nh_dev)
-- dev_put(nexthop_nh->nh_dev);
-- nexthop_nh->nh_dev = NULL;
-- } endfor_nexthops(fi);
- fib_info_cnt--;
-- release_net(fi->fib_net);
- call_rcu(&fi->rcu, free_fib_info_rcu);
- }
-
---
-1.7.9.5
-
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
deleted file mode 100644
index 2d13453..0000000
--- 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
+++ /dev/null
@@ -1,110 +0,0 @@
-From aebe9f30c2e54be6030a3a5a25c005053d1e26ef Mon Sep 17 00:00:00 2001
-From: "Peter Huang (Peng)" <peter.huangpeng at huawei.com>
-Date: Thu, 19 Apr 2012 20:12:51 +0000
-Subject: [PATCH 65/86] set fake_rtable's dst to NULL to avoid kernel Oops
-
-[ Upstream commit a881e963c7fe1f226e991ee9bbe8907acda93294 ]
-
-bridge: set fake_rtable's dst to NULL to avoid kernel Oops
-
-when bridge is deleted before tap/vif device's delete, kernel may
-encounter an oops because of NULL reference to fake_rtable's dst.
-Set fake_rtable's dst to NULL before sending packets out can solve
-this problem.
-
-v4 reformat, change br_drop_fake_rtable(skb) to {}
-
-v3 enrich commit header
-
-v2 introducing new flag DST_FAKE_RTABLE to dst_entry struct.
-
-[ Use "do { } while (0)" for nop br_drop_fake_rtable()
- implementation -DaveM ]
-
-Acked-by: Eric Dumazet <eric.dumazet at gmail.com>
-Signed-off-by: Peter Huang <peter.huangpeng at huawei.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- include/linux/netfilter_bridge.h | 9 +++++++++
- include/net/dst.h | 1 +
- net/bridge/br_forward.c | 1 +
- net/bridge/br_netfilter.c | 8 ++------
- 4 files changed, 13 insertions(+), 6 deletions(-)
-
-diff --git a/include/linux/netfilter_bridge.h b/include/linux/netfilter_bridge.h
-index 0ddd161..31d2844 100644
---- a/include/linux/netfilter_bridge.h
-+++ b/include/linux/netfilter_bridge.h
-@@ -104,9 +104,18 @@ struct bridge_skb_cb {
- } daddr;
- };
-
-+static inline void br_drop_fake_rtable(struct sk_buff *skb)
-+{
-+ struct dst_entry *dst = skb_dst(skb);
-+
-+ if (dst && (dst->flags & DST_FAKE_RTABLE))
-+ skb_dst_drop(skb);
-+}
-+
- #else
- #define nf_bridge_maybe_copy_header(skb) (0)
- #define nf_bridge_pad(skb) (0)
-+#define br_drop_fake_rtable(skb) do { } while (0)
- #endif /* CONFIG_BRIDGE_NETFILTER */
-
- #endif /* __KERNEL__ */
-diff --git a/include/net/dst.h b/include/net/dst.h
-index 75766b4..65bca65 100644
---- a/include/net/dst.h
-+++ b/include/net/dst.h
-@@ -54,6 +54,7 @@ struct dst_entry {
- #define DST_NOCACHE 0x0010
- #define DST_NOCOUNT 0x0020
- #define DST_NOPEER 0x0040
-+#define DST_FAKE_RTABLE 0x0080
-
- short error;
- short obsolete;
-diff --git a/net/bridge/br_forward.c b/net/bridge/br_forward.c
-index ee64287..e221f88 100644
---- a/net/bridge/br_forward.c
-+++ b/net/bridge/br_forward.c
-@@ -47,6 +47,7 @@ int br_dev_queue_push_xmit(struct sk_buff *skb)
- kfree_skb(skb);
- } else {
- skb_push(skb, ETH_HLEN);
-+ br_drop_fake_rtable(skb);
- dev_queue_xmit(skb);
- }
-
-diff --git a/net/bridge/br_netfilter.c b/net/bridge/br_netfilter.c
-index fa8b8f7..577ea5d 100644
---- a/net/bridge/br_netfilter.c
-+++ b/net/bridge/br_netfilter.c
-@@ -147,7 +147,7 @@ void br_netfilter_rtable_init(struct net_bridge *br)
- rt->dst.dev = br->dev;
- rt->dst.path = &rt->dst;
- dst_init_metrics(&rt->dst, br_dst_default_metrics, true);
-- rt->dst.flags = DST_NOXFRM | DST_NOPEER;
-+ rt->dst.flags = DST_NOXFRM | DST_NOPEER | DST_FAKE_RTABLE;
- rt->dst.ops = &fake_dst_ops;
- }
-
-@@ -687,11 +687,7 @@ static unsigned int br_nf_local_in(unsigned int hook, struct sk_buff *skb,
- const struct net_device *out,
- int (*okfn)(struct sk_buff *))
- {
-- struct rtable *rt = skb_rtable(skb);
--
-- if (rt && rt == bridge_parent_rtable(in))
-- skb_dst_drop(skb);
--
-+ br_drop_fake_rtable(skb);
- return NF_ACCEPT;
- }
-
---
-1.7.9.5
-
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
deleted file mode 100644
index c9b4d22..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0066-ipv6-fix-incorrect-ipsec-fragment.patch
+++ /dev/null
@@ -1,181 +0,0 @@
-From 8e6278442fffb4bfa735336a954144198fd7d778 Mon Sep 17 00:00:00 2001
-From: Gao feng <gaofeng at cn.fujitsu.com>
-Date: Sat, 26 May 2012 01:30:53 +0000
-Subject: [PATCH 66/86] ipv6: fix incorrect ipsec fragment
-
-[ Upstream commit 0c1833797a5a6ec23ea9261d979aa18078720b74 ]
-
-Since commit ad0081e43a
-"ipv6: Fragment locally generated tunnel-mode IPSec6 packets as needed"
-the fragment of packets is incorrect.
-because tunnel mode needs IPsec headers and trailer for all fragments,
-while on transport mode it is sufficient to add the headers to the
-first fragment and the trailer to the last.
-
-so modify mtu and maxfraglen base on ipsec mode and if fragment is first
-or last.
-
-with my test,it work well(every fragment's size is the mtu)
-and does not trigger slow fragment path.
-
-Changes from v1:
- though optimization, mtu_prev and maxfraglen_prev can be delete.
- replace xfrm mode codes with dst_entry's new frag DST_XFRM_TUNNEL.
- add fuction ip6_append_data_mtu to make codes clearer.
-
-Signed-off-by: Gao feng <gaofeng at cn.fujitsu.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- include/net/dst.h | 1 +
- net/ipv6/ip6_output.c | 68 +++++++++++++++++++++++++++++++++++-------------
- net/xfrm/xfrm_policy.c | 3 +++
- 3 files changed, 54 insertions(+), 18 deletions(-)
-
-diff --git a/include/net/dst.h b/include/net/dst.h
-index 65bca65..16010d1 100644
---- a/include/net/dst.h
-+++ b/include/net/dst.h
-@@ -55,6 +55,7 @@ struct dst_entry {
- #define DST_NOCOUNT 0x0020
- #define DST_NOPEER 0x0040
- #define DST_FAKE_RTABLE 0x0080
-+#define DST_XFRM_TUNNEL 0x0100
-
- short error;
- short obsolete;
-diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c
-index f7f07e2..ae98e09 100644
---- a/net/ipv6/ip6_output.c
-+++ b/net/ipv6/ip6_output.c
-@@ -1178,6 +1178,29 @@ static inline struct ipv6_rt_hdr *ip6_rthdr_dup(struct ipv6_rt_hdr *src,
- return src ? kmemdup(src, (src->hdrlen + 1) * 8, gfp) : NULL;
- }
-
-+static void ip6_append_data_mtu(int *mtu,
-+ int *maxfraglen,
-+ unsigned int fragheaderlen,
-+ struct sk_buff *skb,
-+ struct rt6_info *rt)
-+{
-+ if (!(rt->dst.flags & DST_XFRM_TUNNEL)) {
-+ if (skb == NULL) {
-+ /* first fragment, reserve header_len */
-+ *mtu = *mtu - rt->dst.header_len;
-+
-+ } else {
-+ /*
-+ * this fragment is not first, the headers
-+ * space is regarded as data space.
-+ */
-+ *mtu = dst_mtu(rt->dst.path);
-+ }
-+ *maxfraglen = ((*mtu - fragheaderlen) & ~7)
-+ + fragheaderlen - sizeof(struct frag_hdr);
-+ }
-+}
-+
- int ip6_append_data(struct sock *sk, int getfrag(void *from, char *to,
- int offset, int len, int odd, struct sk_buff *skb),
- void *from, int length, int transhdrlen,
-@@ -1187,7 +1210,7 @@ int ip6_append_data(struct sock *sk, int getfrag(void *from, char *to,
- struct inet_sock *inet = inet_sk(sk);
- struct ipv6_pinfo *np = inet6_sk(sk);
- struct inet_cork *cork;
-- struct sk_buff *skb;
-+ struct sk_buff *skb, *skb_prev = NULL;
- unsigned int maxfraglen, fragheaderlen;
- int exthdrlen;
- int dst_exthdrlen;
-@@ -1245,8 +1268,12 @@ int ip6_append_data(struct sock *sk, int getfrag(void *from, char *to,
- inet->cork.fl.u.ip6 = *fl6;
- np->cork.hop_limit = hlimit;
- np->cork.tclass = tclass;
-- mtu = np->pmtudisc == IPV6_PMTUDISC_PROBE ?
-- rt->dst.dev->mtu : dst_mtu(&rt->dst);
-+ if (rt->dst.flags & DST_XFRM_TUNNEL)
-+ mtu = np->pmtudisc == IPV6_PMTUDISC_PROBE ?
-+ rt->dst.dev->mtu : dst_mtu(&rt->dst);
-+ else
-+ mtu = np->pmtudisc == IPV6_PMTUDISC_PROBE ?
-+ rt->dst.dev->mtu : dst_mtu(rt->dst.path);
- if (np->frag_size < mtu) {
- if (np->frag_size)
- mtu = np->frag_size;
-@@ -1342,25 +1369,27 @@ int ip6_append_data(struct sock *sk, int getfrag(void *from, char *to,
- unsigned int fraglen;
- unsigned int fraggap;
- unsigned int alloclen;
-- struct sk_buff *skb_prev;
- alloc_new_skb:
-- skb_prev = skb;
--
- /* There's no room in the current skb */
-- if (skb_prev)
-- fraggap = skb_prev->len - maxfraglen;
-+ if (skb)
-+ fraggap = skb->len - maxfraglen;
- else
- fraggap = 0;
-+ /* update mtu and maxfraglen if necessary */
-+ if (skb == NULL || skb_prev == NULL)
-+ ip6_append_data_mtu(&mtu, &maxfraglen,
-+ fragheaderlen, skb, rt);
-+
-+ skb_prev = skb;
-
- /*
- * If remaining data exceeds the mtu,
- * we know we need more fragment(s).
- */
- datalen = length + fraggap;
-- if (datalen > (cork->length <= mtu && !(cork->flags & IPCORK_ALLFRAG) ? mtu : maxfraglen) - fragheaderlen)
-- datalen = maxfraglen - fragheaderlen;
-
-- fraglen = datalen + fragheaderlen;
-+ if (datalen > (cork->length <= mtu && !(cork->flags & IPCORK_ALLFRAG) ? mtu : maxfraglen) - fragheaderlen)
-+ datalen = maxfraglen - fragheaderlen - rt->dst.trailer_len;
- if ((flags & MSG_MORE) &&
- !(rt->dst.dev->features&NETIF_F_SG))
- alloclen = mtu;
-@@ -1369,13 +1398,16 @@ alloc_new_skb:
-
- alloclen += dst_exthdrlen;
-
-- /*
-- * The last fragment gets additional space at tail.
-- * Note: we overallocate on fragments with MSG_MODE
-- * because we have no idea if we're the last one.
-- */
-- if (datalen == length + fraggap)
-- alloclen += rt->dst.trailer_len;
-+ if (datalen != length + fraggap) {
-+ /*
-+ * this is not the last fragment, the trailer
-+ * space is regarded as data space.
-+ */
-+ datalen += rt->dst.trailer_len;
-+ }
-+
-+ alloclen += rt->dst.trailer_len;
-+ fraglen = datalen + fragheaderlen;
-
- /*
- * We just reserve space for fragment header.
-diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c
-index 9049a5c..0174034 100644
---- a/net/xfrm/xfrm_policy.c
-+++ b/net/xfrm/xfrm_policy.c
-@@ -1919,6 +1919,9 @@ no_transform:
- }
- ok:
- xfrm_pols_put(pols, drop_pols);
-+ if (dst && dst->xfrm &&
-+ dst->xfrm->props.mode == XFRM_MODE_TUNNEL)
-+ dst->flags |= DST_XFRM_TUNNEL;
- return dst;
-
- nopol:
---
-1.7.9.5
-
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
deleted file mode 100644
index 258e412..0000000
--- 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
+++ /dev/null
@@ -1,113 +0,0 @@
-From d1517b97762180b241f3e888abb8c1ec72e760be Mon Sep 17 00:00:00 2001
-From: James Chapman <jchapman at katalix.com>
-Date: Tue, 29 May 2012 23:13:23 +0000
-Subject: [PATCH 67/86] l2tp: fix oops in L2TP IP sockets for connect()
- AF_UNSPEC case
-
-[ Upstream commit c51ce49735c183ef2592db70f918ee698716276b ]
-
-An application may call connect() to disconnect a socket using an
-address with family AF_UNSPEC. The L2TP IP sockets were not handling
-this case when the socket is not bound and an attempt to connect()
-using AF_UNSPEC in such cases would result in an oops. This patch
-addresses the problem by protecting the sk_prot->disconnect() call
-against trying to unhash the socket before it is bound.
-
-The patch also adds more checks that the sockaddr supplied to bind()
-and connect() calls is valid.
-
- RIP: 0010:[<ffffffff82e133b0>] [<ffffffff82e133b0>] inet_unhash+0x50/0xd0
- RSP: 0018:ffff88001989be28 EFLAGS: 00010293
- Stack:
- ffff8800407a8000 0000000000000000 ffff88001989be78 ffffffff82e3a249
- ffffffff82e3a050 ffff88001989bec8 ffff88001989be88 ffff8800407a8000
- 0000000000000010 ffff88001989bec8 ffff88001989bea8 ffffffff82e42639
- Call Trace:
- [<ffffffff82e3a249>] udp_disconnect+0x1f9/0x290
- [<ffffffff82e42639>] inet_dgram_connect+0x29/0x80
- [<ffffffff82d012fc>] sys_connect+0x9c/0x100
-
-Reported-by: Sasha Levin <levinsasha928 at gmail.com>
-Signed-off-by: James Chapman <jchapman at katalix.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/l2tp/l2tp_ip.c | 30 ++++++++++++++++++++++++------
- 1 file changed, 24 insertions(+), 6 deletions(-)
-
-diff --git a/net/l2tp/l2tp_ip.c b/net/l2tp/l2tp_ip.c
-index 2a2a3e7..2fbbe1f 100644
---- a/net/l2tp/l2tp_ip.c
-+++ b/net/l2tp/l2tp_ip.c
-@@ -251,9 +251,16 @@ static int l2tp_ip_bind(struct sock *sk, struct sockaddr *uaddr, int addr_len)
- {
- struct inet_sock *inet = inet_sk(sk);
- struct sockaddr_l2tpip *addr = (struct sockaddr_l2tpip *) uaddr;
-- int ret = -EINVAL;
-+ int ret;
- int chk_addr_ret;
-
-+ if (!sock_flag(sk, SOCK_ZAPPED))
-+ return -EINVAL;
-+ if (addr_len < sizeof(struct sockaddr_l2tpip))
-+ return -EINVAL;
-+ if (addr->l2tp_family != AF_INET)
-+ return -EINVAL;
-+
- ret = -EADDRINUSE;
- read_lock_bh(&l2tp_ip_lock);
- if (__l2tp_ip_bind_lookup(&init_net, addr->l2tp_addr.s_addr, sk->sk_bound_dev_if, addr->l2tp_conn_id))
-@@ -283,6 +290,8 @@ static int l2tp_ip_bind(struct sock *sk, struct sockaddr *uaddr, int addr_len)
- sk_del_node_init(sk);
- write_unlock_bh(&l2tp_ip_lock);
- ret = 0;
-+ sock_reset_flag(sk, SOCK_ZAPPED);
-+
- out:
- release_sock(sk);
-
-@@ -303,13 +312,14 @@ static int l2tp_ip_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len
- __be32 saddr;
- int oif, rc;
-
-- rc = -EINVAL;
-+ if (sock_flag(sk, SOCK_ZAPPED)) /* Must bind first - autobinding does not work */
-+ return -EINVAL;
-+
- if (addr_len < sizeof(*lsa))
-- goto out;
-+ return -EINVAL;
-
-- rc = -EAFNOSUPPORT;
- if (lsa->l2tp_family != AF_INET)
-- goto out;
-+ return -EAFNOSUPPORT;
-
- lock_sock(sk);
-
-@@ -363,6 +373,14 @@ out:
- return rc;
- }
-
-+static int l2tp_ip_disconnect(struct sock *sk, int flags)
-+{
-+ if (sock_flag(sk, SOCK_ZAPPED))
-+ return 0;
-+
-+ return udp_disconnect(sk, flags);
-+}
-+
- static int l2tp_ip_getname(struct socket *sock, struct sockaddr *uaddr,
- int *uaddr_len, int peer)
- {
-@@ -598,7 +616,7 @@ static struct proto l2tp_ip_prot = {
- .close = l2tp_ip_close,
- .bind = l2tp_ip_bind,
- .connect = l2tp_ip_connect,
-- .disconnect = udp_disconnect,
-+ .disconnect = l2tp_ip_disconnect,
- .ioctl = udp_ioctl,
- .destroy = l2tp_ip_destroy_sock,
- .setsockopt = ip_setsockopt,
---
-1.7.9.5
-
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
deleted file mode 100644
index 3cc1e86..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0068-r8169-missing-barriers.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From c354bf6217e04a41a963b465634ff37450c68c1e Mon Sep 17 00:00:00 2001
-From: Francois Romieu <romieu at fr.zoreil.com>
-Date: Fri, 27 Jan 2012 15:05:38 +0100
-Subject: [PATCH 68/86] r8169: missing barriers.
-
-[ Upstream commit 1e874e041fc7c222cbd85b20c4406070be1f687a ]
-
-Signed-off-by: Francois Romieu <romieu at fr.zoreil.com>
-Cc: Hayes Wang <hayeswang at realtek.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/ethernet/realtek/r8169.c | 5 ++---
- 1 file changed, 2 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c
-index 697cae3..5104d76 100644
---- a/drivers/net/ethernet/realtek/r8169.c
-+++ b/drivers/net/ethernet/realtek/r8169.c
-@@ -5562,7 +5562,7 @@ static netdev_tx_t rtl8169_start_xmit(struct sk_buff *skb,
-
- if (TX_BUFFS_AVAIL(tp) < MAX_SKB_FRAGS) {
- netif_stop_queue(dev);
-- smp_rmb();
-+ smp_mb();
- if (TX_BUFFS_AVAIL(tp) >= MAX_SKB_FRAGS)
- netif_wake_queue(dev);
- }
-@@ -5663,7 +5663,7 @@ static void rtl8169_tx_interrupt(struct net_device *dev,
-
- if (tp->dirty_tx != dirty_tx) {
- tp->dirty_tx = dirty_tx;
-- smp_wmb();
-+ smp_mb();
- if (netif_queue_stopped(dev) &&
- (TX_BUFFS_AVAIL(tp) >= MAX_SKB_FRAGS)) {
- netif_wake_queue(dev);
-@@ -5674,7 +5674,6 @@ static void rtl8169_tx_interrupt(struct net_device *dev,
- * of start_xmit activity is detected (if it is not detected,
- * it is slow enough). -- FR
- */
-- smp_rmb();
- if (tp->cur_tx != dirty_tx)
- RTL_W8(TxPoll, NPQ);
- }
---
-1.7.9.5
-
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
deleted file mode 100644
index e8e1ad5..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0069-r8169-fix-early-queue-wake-up.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From 88d5ff14a80522c59577194a954942feefd47d67 Mon Sep 17 00:00:00 2001
-From: Francois Romieu <romieu at fr.zoreil.com>
-Date: Tue, 31 Jan 2012 00:00:19 +0100
-Subject: [PATCH 69/86] r8169: fix early queue wake-up.
-
-[ Upstream commit ae1f23fb433ac0aaff8aeaa5a7b14348e9aa8277 ]
-
-With infinite gratitude to Eric Dumazet for allowing me to identify
-the error.
-
-Signed-off-by: Francois Romieu <romieu at fr.zoreil.com>
-Acked-by: Eric Dumazet <eric.dumazet at gmail.com>
-Cc: Hayes Wang <hayeswang at realtek.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/ethernet/realtek/r8169.c | 18 ++++++++++++++++++
- 1 file changed, 18 insertions(+)
-
-diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c
-index 5104d76..5f3fa32 100644
---- a/drivers/net/ethernet/realtek/r8169.c
-+++ b/drivers/net/ethernet/realtek/r8169.c
-@@ -5561,7 +5561,18 @@ static netdev_tx_t rtl8169_start_xmit(struct sk_buff *skb,
- RTL_W8(TxPoll, NPQ);
-
- if (TX_BUFFS_AVAIL(tp) < MAX_SKB_FRAGS) {
-+ /* Avoid wrongly optimistic queue wake-up: rtl_tx thread must
-+ * not miss a ring update when it notices a stopped queue.
-+ */
-+ smp_wmb();
- netif_stop_queue(dev);
-+ /* Sync with rtl_tx:
-+ * - publish queue status and cur_tx ring index (write barrier)
-+ * - refresh dirty_tx ring index (read barrier).
-+ * May the current thread have a pessimistic view of the ring
-+ * status and forget to wake up queue, a racing rtl_tx thread
-+ * can't.
-+ */
- smp_mb();
- if (TX_BUFFS_AVAIL(tp) >= MAX_SKB_FRAGS)
- netif_wake_queue(dev);
-@@ -5663,6 +5674,13 @@ static void rtl8169_tx_interrupt(struct net_device *dev,
-
- if (tp->dirty_tx != dirty_tx) {
- tp->dirty_tx = dirty_tx;
-+ /* Sync with rtl8169_start_xmit:
-+ * - publish dirty_tx ring index (write barrier)
-+ * - refresh cur_tx ring index and queue status (read barrier)
-+ * May the current thread miss the stopped queue condition,
-+ * a racing xmit thread can only have a right view of the
-+ * ring status.
-+ */
- smp_mb();
- if (netif_queue_stopped(dev) &&
- (TX_BUFFS_AVAIL(tp) >= MAX_SKB_FRAGS)) {
---
-1.7.9.5
-
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
deleted file mode 100644
index c124fb6..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0070-r8169-fix-unsigned-int-wraparound-with-TSO.patch
+++ /dev/null
@@ -1,82 +0,0 @@
-From 70031dbb0e0a38f332ddb13359f9984bd25eb8c2 Mon Sep 17 00:00:00 2001
-From: Julien Ducourthial <jducourt at free.fr>
-Date: Wed, 9 May 2012 00:00:06 +0200
-Subject: [PATCH 70/86] r8169: fix unsigned int wraparound with TSO
-
-[ Upstream commit 477206a018f902895bfcd069dd820bfe94c187b1 ]
-
-The r8169 may get stuck or show bad behaviour after activating TSO :
-the net_device is not stopped when it has no more TX descriptors.
-This problem comes from TX_BUFS_AVAIL which may reach -1 when all
-transmit descriptors are in use. The patch simply tries to keep positive
-values.
-
-Tested with 8111d(onboard) on a D510MO, and with 8111e(onboard) on a
-Zotac 890GXITX.
-
-Signed-off-by: Julien Ducourthial <jducourt at free.fr>
-Acked-by: Francois Romieu <romieu at fr.zoreil.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/ethernet/realtek/r8169.c | 16 ++++++++++------
- 1 file changed, 10 insertions(+), 6 deletions(-)
-
-diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c
-index 5f3fa32..cc2565c 100644
---- a/drivers/net/ethernet/realtek/r8169.c
-+++ b/drivers/net/ethernet/realtek/r8169.c
-@@ -62,8 +62,12 @@
- #define R8169_MSG_DEFAULT \
- (NETIF_MSG_DRV | NETIF_MSG_PROBE | NETIF_MSG_IFUP | NETIF_MSG_IFDOWN)
-
--#define TX_BUFFS_AVAIL(tp) \
-- (tp->dirty_tx + NUM_TX_DESC - tp->cur_tx - 1)
-+#define TX_SLOTS_AVAIL(tp) \
-+ (tp->dirty_tx + NUM_TX_DESC - tp->cur_tx)
-+
-+/* A skbuff with nr_frags needs nr_frags+1 entries in the tx queue */
-+#define TX_FRAGS_READY_FOR(tp,nr_frags) \
-+ (TX_SLOTS_AVAIL(tp) >= (nr_frags + 1))
-
- /* Maximum number of multicast addresses to filter (vs. Rx-all-multicast).
- The RTL chips use a 64 element hash table based on the Ethernet CRC. */
-@@ -5512,7 +5516,7 @@ static netdev_tx_t rtl8169_start_xmit(struct sk_buff *skb,
- u32 opts[2];
- int frags;
-
-- if (unlikely(TX_BUFFS_AVAIL(tp) < skb_shinfo(skb)->nr_frags)) {
-+ if (unlikely(!TX_FRAGS_READY_FOR(tp, skb_shinfo(skb)->nr_frags))) {
- netif_err(tp, drv, dev, "BUG! Tx Ring full when queue awake!\n");
- goto err_stop_0;
- }
-@@ -5560,7 +5564,7 @@ static netdev_tx_t rtl8169_start_xmit(struct sk_buff *skb,
-
- RTL_W8(TxPoll, NPQ);
-
-- if (TX_BUFFS_AVAIL(tp) < MAX_SKB_FRAGS) {
-+ if (!TX_FRAGS_READY_FOR(tp, MAX_SKB_FRAGS)) {
- /* Avoid wrongly optimistic queue wake-up: rtl_tx thread must
- * not miss a ring update when it notices a stopped queue.
- */
-@@ -5574,7 +5578,7 @@ static netdev_tx_t rtl8169_start_xmit(struct sk_buff *skb,
- * can't.
- */
- smp_mb();
-- if (TX_BUFFS_AVAIL(tp) >= MAX_SKB_FRAGS)
-+ if (TX_FRAGS_READY_FOR(tp, MAX_SKB_FRAGS))
- netif_wake_queue(dev);
- }
-
-@@ -5683,7 +5687,7 @@ static void rtl8169_tx_interrupt(struct net_device *dev,
- */
- smp_mb();
- if (netif_queue_stopped(dev) &&
-- (TX_BUFFS_AVAIL(tp) >= MAX_SKB_FRAGS)) {
-+ TX_FRAGS_READY_FOR(tp, MAX_SKB_FRAGS)) {
- netif_wake_queue(dev);
- }
- /*
---
-1.7.9.5
-
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
deleted file mode 100644
index 53583ee..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0071-Revert-net-maintain-namespace-isolation-between-vlan.patch
+++ /dev/null
@@ -1,138 +0,0 @@
-From 8094a25020703041f42a531dfac0a2ee24319119 Mon Sep 17 00:00:00 2001
-From: "David S. Miller" <davem at davemloft.net>
-Date: Thu, 10 May 2012 23:03:34 -0400
-Subject: [PATCH 71/86] Revert "net: maintain namespace isolation between vlan
- and real device"
-
-[ Upstream commit 59b9997baba5242997ddc7bd96b1391f5275a5a4 ]
-
-This reverts commit 8a83a00b0735190384a348156837918271034144.
-
-It causes regressions for S390 devices, because it does an
-unconditional DST drop on SKBs for vlans and the QETH device
-needs the neighbour entry hung off the DST for certain things
-on transmit.
-
-Arnd can't remember exactly why he even needed this change.
-
-Conflicts:
-
- drivers/net/macvlan.c
- net/8021q/vlan_dev.c
- net/core/dev.c
-
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/macvlan.c | 2 +-
- include/linux/netdevice.h | 9 ---------
- net/8021q/vlan_dev.c | 2 +-
- net/core/dev.c | 36 +++++-------------------------------
- 4 files changed, 7 insertions(+), 42 deletions(-)
-
-diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c
-index 959d448..97f342e 100644
---- a/drivers/net/macvlan.c
-+++ b/drivers/net/macvlan.c
-@@ -258,7 +258,7 @@ static int macvlan_queue_xmit(struct sk_buff *skb, struct net_device *dev)
-
- xmit_world:
- skb->ip_summed = ip_summed;
-- skb_set_dev(skb, vlan->lowerdev);
-+ skb->dev = vlan->lowerdev;
- return dev_queue_xmit(skb);
- }
-
-diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
-index cbeb586..cb52340 100644
---- a/include/linux/netdevice.h
-+++ b/include/linux/netdevice.h
-@@ -1420,15 +1420,6 @@ static inline bool netdev_uses_dsa_tags(struct net_device *dev)
- return 0;
- }
-
--#ifndef CONFIG_NET_NS
--static inline void skb_set_dev(struct sk_buff *skb, struct net_device *dev)
--{
-- skb->dev = dev;
--}
--#else /* CONFIG_NET_NS */
--void skb_set_dev(struct sk_buff *skb, struct net_device *dev);
--#endif
--
- static inline bool netdev_uses_trailer_tags(struct net_device *dev)
- {
- #ifdef CONFIG_NET_DSA_TAG_TRAILER
-diff --git a/net/8021q/vlan_dev.c b/net/8021q/vlan_dev.c
-index bc25286..0cccca8 100644
---- a/net/8021q/vlan_dev.c
-+++ b/net/8021q/vlan_dev.c
-@@ -156,7 +156,7 @@ static netdev_tx_t vlan_dev_hard_start_xmit(struct sk_buff *skb,
- skb = __vlan_hwaccel_put_tag(skb, vlan_tci);
- }
-
-- skb_set_dev(skb, vlan_dev_info(dev)->real_dev);
-+ skb->dev = vlan_dev_info(dev)->real_dev;
- len = skb->len;
- ret = dev_queue_xmit(skb);
-
-diff --git a/net/core/dev.c b/net/core/dev.c
-index 61a7baa..1cbddc9 100644
---- a/net/core/dev.c
-+++ b/net/core/dev.c
-@@ -1607,10 +1607,14 @@ int dev_forward_skb(struct net_device *dev, struct sk_buff *skb)
- kfree_skb(skb);
- return NET_RX_DROP;
- }
-- skb_set_dev(skb, dev);
-+ skb->dev = dev;
-+ skb_dst_drop(skb);
- skb->tstamp.tv64 = 0;
- skb->pkt_type = PACKET_HOST;
- skb->protocol = eth_type_trans(skb, dev);
-+ skb->mark = 0;
-+ secpath_reset(skb);
-+ nf_reset(skb);
- return netif_rx(skb);
- }
- EXPORT_SYMBOL_GPL(dev_forward_skb);
-@@ -1865,36 +1869,6 @@ void netif_device_attach(struct net_device *dev)
- }
- EXPORT_SYMBOL(netif_device_attach);
-
--/**
-- * skb_dev_set -- assign a new device to a buffer
-- * @skb: buffer for the new device
-- * @dev: network device
-- *
-- * If an skb is owned by a device already, we have to reset
-- * all data private to the namespace a device belongs to
-- * before assigning it a new device.
-- */
--#ifdef CONFIG_NET_NS
--void skb_set_dev(struct sk_buff *skb, struct net_device *dev)
--{
-- skb_dst_drop(skb);
-- if (skb->dev && !net_eq(dev_net(skb->dev), dev_net(dev))) {
-- secpath_reset(skb);
-- nf_reset(skb);
-- skb_init_secmark(skb);
-- skb->mark = 0;
-- skb->priority = 0;
-- skb->nf_trace = 0;
-- skb->ipvs_property = 0;
--#ifdef CONFIG_NET_SCHED
-- skb->tc_index = 0;
--#endif
-- }
-- skb->dev = dev;
--}
--EXPORT_SYMBOL(skb_set_dev);
--#endif /* CONFIG_NET_NS */
--
- /*
- * Invalidate hardware checksum when packet is to be mangled, and
- * complete checksum manually on outgoing path.
---
-1.7.9.5
-
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
deleted file mode 100644
index 6cb2e1a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0072-sctp-check-cached-dst-before-using-it.patch
+++ /dev/null
@@ -1,88 +0,0 @@
-From 23c5783d07dcd62f8b86c4eaefef08f2892cbbd0 Mon Sep 17 00:00:00 2001
-From: Nicolas Dichtel <nicolas.dichtel at 6wind.com>
-Date: Fri, 4 May 2012 05:24:54 +0000
-Subject: [PATCH 72/86] sctp: check cached dst before using it
-
-[ Upstream commit e0268868ba064980488fc8c194db3d8e9fb2959c ]
-
-dst_check() will take care of SA (and obsolete field), hence
-IPsec rekeying scenario is taken into account.
-
-Signed-off-by: Nicolas Dichtel <nicolas.dichtel at 6wind.com>
-Acked-by: Vlad Yaseivch <vyasevich at gmail.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- include/net/sctp/sctp.h | 13 +++++++++++++
- net/sctp/output.c | 4 +---
- net/sctp/transport.c | 17 -----------------
- 3 files changed, 14 insertions(+), 20 deletions(-)
-
-diff --git a/include/net/sctp/sctp.h b/include/net/sctp/sctp.h
-index 6a72a58..ad03988 100644
---- a/include/net/sctp/sctp.h
-+++ b/include/net/sctp/sctp.h
-@@ -703,4 +703,17 @@ static inline void sctp_v4_map_v6(union sctp_addr *addr)
- addr->v6.sin6_addr.s6_addr32[2] = htonl(0x0000ffff);
- }
-
-+/* The cookie is always 0 since this is how it's used in the
-+ * pmtu code.
-+ */
-+static inline struct dst_entry *sctp_transport_dst_check(struct sctp_transport *t)
-+{
-+ if (t->dst && !dst_check(t->dst, 0)) {
-+ dst_release(t->dst);
-+ t->dst = NULL;
-+ }
-+
-+ return t->dst;
-+}
-+
- #endif /* __net_sctp_h__ */
-diff --git a/net/sctp/output.c b/net/sctp/output.c
-index 817174e..8fc4dcd 100644
---- a/net/sctp/output.c
-+++ b/net/sctp/output.c
-@@ -377,9 +377,7 @@ int sctp_packet_transmit(struct sctp_packet *packet)
- */
- skb_set_owner_w(nskb, sk);
-
-- /* The 'obsolete' field of dst is set to 2 when a dst is freed. */
-- if (!dst || (dst->obsolete > 1)) {
-- dst_release(dst);
-+ if (!sctp_transport_dst_check(tp)) {
- sctp_transport_route(tp, NULL, sctp_sk(sk));
- if (asoc && (asoc->param_flags & SPP_PMTUD_ENABLE)) {
- sctp_assoc_sync_pmtu(asoc);
-diff --git a/net/sctp/transport.c b/net/sctp/transport.c
-index 394c57c..8da4481 100644
---- a/net/sctp/transport.c
-+++ b/net/sctp/transport.c
-@@ -226,23 +226,6 @@ void sctp_transport_pmtu(struct sctp_transport *transport, struct sock *sk)
- transport->pathmtu = SCTP_DEFAULT_MAXSEGMENT;
- }
-
--/* this is a complete rip-off from __sk_dst_check
-- * the cookie is always 0 since this is how it's used in the
-- * pmtu code
-- */
--static struct dst_entry *sctp_transport_dst_check(struct sctp_transport *t)
--{
-- struct dst_entry *dst = t->dst;
--
-- if (dst && dst->obsolete && dst->ops->check(dst, 0) == NULL) {
-- dst_release(t->dst);
-- t->dst = NULL;
-- return NULL;
-- }
--
-- return dst;
--}
--
- void sctp_transport_update_pmtu(struct sctp_transport *t, u32 pmtu)
- {
- struct dst_entry *dst;
---
-1.7.9.5
-
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
deleted file mode 100644
index 797dd94..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0073-skb-avoid-unnecessary-reallocations-in-__skb_cow.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 102f9a70f2f084fe0380f1df716f89427cf5f965 Mon Sep 17 00:00:00 2001
-From: Felix Fietkau <nbd at openwrt.org>
-Date: Tue, 29 May 2012 03:35:08 +0000
-Subject: [PATCH 73/86] skb: avoid unnecessary reallocations in __skb_cow
-
-[ Upstream commit 617c8c11236716dcbda877e764b7bf37c6fd8063 ]
-
-At the beginning of __skb_cow, headroom gets set to a minimum of
-NET_SKB_PAD. This causes unnecessary reallocations if the buffer was not
-cloned and the headroom is just below NET_SKB_PAD, but still more than the
-amount requested by the caller.
-This was showing up frequently in my tests on VLAN tx, where
-vlan_insert_tag calls skb_cow_head(skb, VLAN_HLEN).
-
-Locally generated packets should have enough headroom, and for forward
-paths, we already have NET_SKB_PAD bytes of headroom, so we don't need to
-add any extra space here.
-
-Signed-off-by: Felix Fietkau <nbd at openwrt.org>
-Signed-off-by: Eric Dumazet <edumazet at google.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- include/linux/skbuff.h | 2 --
- 1 file changed, 2 deletions(-)
-
-diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
-index e689b47..bdb4590 100644
---- a/include/linux/skbuff.h
-+++ b/include/linux/skbuff.h
-@@ -1866,8 +1866,6 @@ static inline int __skb_cow(struct sk_buff *skb, unsigned int headroom,
- {
- int delta = 0;
-
-- if (headroom < NET_SKB_PAD)
-- headroom = NET_SKB_PAD;
- if (headroom > skb_headroom(skb))
- delta = headroom - skb_headroom(skb);
-
---
-1.7.9.5
-
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
deleted file mode 100644
index 421e97a..0000000
--- 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
+++ /dev/null
@@ -1,100 +0,0 @@
-From f7088713900622e33404d09b3b16e44d780ea515 Mon Sep 17 00:00:00 2001
-From: Benjamin Poirier <bpoirier at suse.de>
-Date: Thu, 24 May 2012 11:32:38 +0000
-Subject: [PATCH 74/86] xfrm: take net hdr len into account for esp payload
- size calculation
-
-[ Upstream commit 91657eafb64b4cb53ec3a2fbc4afc3497f735788 ]
-
-Corrects the function that determines the esp payload size. The calculations
-done in esp{4,6}_get_mtu() lead to overlength frames in transport mode for
-certain mtu values and suboptimal frames for others.
-
-According to what is done, mainly in esp{,6}_output() and tcp_mtu_to_mss(),
-net_header_len must be taken into account before doing the alignment
-calculation.
-
-Signed-off-by: Benjamin Poirier <bpoirier at suse.de>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/ipv4/esp4.c | 24 +++++++++---------------
- net/ipv6/esp6.c | 18 +++++++-----------
- 2 files changed, 16 insertions(+), 26 deletions(-)
-
-diff --git a/net/ipv4/esp4.c b/net/ipv4/esp4.c
-index a5b4134..530787b 100644
---- a/net/ipv4/esp4.c
-+++ b/net/ipv4/esp4.c
-@@ -457,28 +457,22 @@ static u32 esp4_get_mtu(struct xfrm_state *x, int mtu)
- struct esp_data *esp = x->data;
- u32 blksize = ALIGN(crypto_aead_blocksize(esp->aead), 4);
- u32 align = max_t(u32, blksize, esp->padlen);
-- u32 rem;
--
-- mtu -= x->props.header_len + crypto_aead_authsize(esp->aead);
-- rem = mtu & (align - 1);
-- mtu &= ~(align - 1);
-+ unsigned int net_adj;
-
- switch (x->props.mode) {
-- case XFRM_MODE_TUNNEL:
-- break;
-- default:
- case XFRM_MODE_TRANSPORT:
-- /* The worst case */
-- mtu -= blksize - 4;
-- mtu += min_t(u32, blksize - 4, rem);
-- break;
- case XFRM_MODE_BEET:
-- /* The worst case. */
-- mtu += min_t(u32, IPV4_BEET_PHMAXLEN, rem);
-+ net_adj = sizeof(struct iphdr);
- break;
-+ case XFRM_MODE_TUNNEL:
-+ net_adj = 0;
-+ break;
-+ default:
-+ BUG();
- }
-
-- return mtu - 2;
-+ return ((mtu - x->props.header_len - crypto_aead_authsize(esp->aead) -
-+ net_adj) & ~(align - 1)) + (net_adj - 2);
- }
-
- static void esp4_err(struct sk_buff *skb, u32 info)
-diff --git a/net/ipv6/esp6.c b/net/ipv6/esp6.c
-index 1ac7938..65dd543 100644
---- a/net/ipv6/esp6.c
-+++ b/net/ipv6/esp6.c
-@@ -411,19 +411,15 @@ static u32 esp6_get_mtu(struct xfrm_state *x, int mtu)
- struct esp_data *esp = x->data;
- u32 blksize = ALIGN(crypto_aead_blocksize(esp->aead), 4);
- u32 align = max_t(u32, blksize, esp->padlen);
-- u32 rem;
-+ unsigned int net_adj;
-
-- mtu -= x->props.header_len + crypto_aead_authsize(esp->aead);
-- rem = mtu & (align - 1);
-- mtu &= ~(align - 1);
--
-- if (x->props.mode != XFRM_MODE_TUNNEL) {
-- u32 padsize = ((blksize - 1) & 7) + 1;
-- mtu -= blksize - padsize;
-- mtu += min_t(u32, blksize - padsize, rem);
-- }
-+ if (x->props.mode != XFRM_MODE_TUNNEL)
-+ net_adj = sizeof(struct ipv6hdr);
-+ else
-+ net_adj = 0;
-
-- return mtu - 2;
-+ return ((mtu - x->props.header_len - crypto_aead_authsize(esp->aead) -
-+ net_adj) & ~(align - 1)) + (net_adj - 2);
- }
-
- static void esp6_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
---
-1.7.9.5
-
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
deleted file mode 100644
index 868bcce..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0075-ACPI-battery-only-refresh-the-sysfs-files-when-perti.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From f01aa357417f413fff9af7ef10496ece02d2c8d7 Mon Sep 17 00:00:00 2001
-From: Andy Whitcroft <apw at canonical.com>
-Date: Thu, 3 May 2012 14:48:26 +0100
-Subject: [PATCH 75/86] ACPI battery: only refresh the sysfs files when
- pertinent information changes
-
-commit c5971456964290da7e98222892797b71ef793e62 upstream.
-
-We only need to regenerate the sysfs files when the capacity units
-change, avoid the update otherwise.
-
-The origin of this issue is dates way back to 2.6.38:
-da8aeb92d4853f37e281f11fddf61f9c7d84c3cd
-(ACPI / Battery: Update information on info notification and resume)
-
-Signed-off-by: Andy Whitcroft <apw at canonical.com>
-Tested-by: Ralf Jung <post at ralfj.de>
-Signed-off-by: Len Brown <len.brown at intel.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/acpi/battery.c | 10 +++++++++-
- 1 file changed, 9 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/acpi/battery.c b/drivers/acpi/battery.c
-index 7711d94..5535477 100644
---- a/drivers/acpi/battery.c
-+++ b/drivers/acpi/battery.c
-@@ -643,11 +643,19 @@ static int acpi_battery_update(struct acpi_battery *battery)
-
- static void acpi_battery_refresh(struct acpi_battery *battery)
- {
-+ int power_unit;
-+
- if (!battery->bat.dev)
- return;
-
-+ power_unit = battery->power_unit;
-+
- acpi_battery_get_info(battery);
-- /* The battery may have changed its reporting units. */
-+
-+ if (power_unit == battery->power_unit)
-+ return;
-+
-+ /* The battery has changed its reporting units. */
- sysfs_remove_battery(battery);
- sysfs_add_battery(battery);
- }
---
-1.7.9.5
-
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
deleted file mode 100644
index 7c0a003..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0076-target-file-Use-O_DSYNC-by-default-for-FILEIO-backen.patch
+++ /dev/null
@@ -1,188 +0,0 @@
-From f959a45c2bfd20be1435dee828b7e4eadd862b45 Mon Sep 17 00:00:00 2001
-From: Nicholas Bellinger <nab at linux-iscsi.org>
-Date: Wed, 30 May 2012 16:25:41 -0700
-Subject: [PATCH 76/86] target/file: Use O_DSYNC by default for FILEIO
- backends
-
-commit a4dff3043c231d57f982af635c9d2192ee40e5ae upstream.
-
-Convert to use O_DSYNC for all cases at FILEIO backend creation time to
-avoid the extra syncing of pure timestamp updates with legacy O_SYNC during
-default operation as recommended by hch. Continue to do this independently of
-Write Cache Enable (WCE) bit, as WCE=0 is currently the default for all backend
-devices and enabled by user on per device basis via attrib/emulate_write_cache.
-
-This patch drops the now unnecessary fd_buffered_io= token usage that was
-originally signalling when to explictly disable O_SYNC at backend creation
-time for buffered I/O operation. This can end up being dangerous for a number
-of reasons during physical node failure, so go ahead and drop this option
-for now when O_DSYNC is used as the default.
-
-Also allow explict FUA WRITEs -> vfs_fsync_range() call to function in
-fd_execute_cmd() independently of WCE bit setting.
-
-Reported-by: Christoph Hellwig <hch at lst.de>
-Cc: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Nicholas Bellinger <nab at linux-iscsi.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
-[bwh: Backported to 3.2:
- - We have fd_do_task() and not fd_execute_cmd()
- - Various fields are in struct se_task rather than struct se_cmd
- - fd_create_virtdevice() flags initialisation hasn't been cleaned up]
----
- drivers/target/target_core_file.c | 78 ++++++++-----------------------------
- drivers/target/target_core_file.h | 1 -
- 2 files changed, 17 insertions(+), 62 deletions(-)
-
-diff --git a/drivers/target/target_core_file.c b/drivers/target/target_core_file.c
-index cad8b92..455a251 100644
---- a/drivers/target/target_core_file.c
-+++ b/drivers/target/target_core_file.c
-@@ -134,21 +134,11 @@ static struct se_device *fd_create_virtdevice(
- ret = PTR_ERR(dev_p);
- goto fail;
- }
--#if 0
-- if (di->no_create_file)
-- flags = O_RDWR | O_LARGEFILE;
-- else
-- flags = O_RDWR | O_CREAT | O_LARGEFILE;
--#else
-- flags = O_RDWR | O_CREAT | O_LARGEFILE;
--#endif
--/* flags |= O_DIRECT; */
- /*
-- * If fd_buffered_io=1 has not been set explicitly (the default),
-- * use O_SYNC to force FILEIO writes to disk.
-+ * Use O_DSYNC by default instead of O_SYNC to forgo syncing
-+ * of pure timestamp updates.
- */
-- if (!(fd_dev->fbd_flags & FDBD_USE_BUFFERED_IO))
-- flags |= O_SYNC;
-+ flags = O_RDWR | O_CREAT | O_LARGEFILE | O_DSYNC;
-
- file = filp_open(dev_p, flags, 0600);
- if (IS_ERR(file)) {
-@@ -400,26 +390,6 @@ static void fd_emulate_sync_cache(struct se_task *task)
- transport_complete_sync_cache(cmd, ret == 0);
- }
-
--/*
-- * WRITE Force Unit Access (FUA) emulation on a per struct se_task
-- * LBA range basis..
-- */
--static void fd_emulate_write_fua(struct se_cmd *cmd, struct se_task *task)
--{
-- struct se_device *dev = cmd->se_dev;
-- struct fd_dev *fd_dev = dev->dev_ptr;
-- loff_t start = task->task_lba * dev->se_sub_dev->se_dev_attrib.block_size;
-- loff_t end = start + task->task_size;
-- int ret;
--
-- pr_debug("FILEIO: FUA WRITE LBA: %llu, bytes: %u\n",
-- task->task_lba, task->task_size);
--
-- ret = vfs_fsync_range(fd_dev->fd_file, start, end, 1);
-- if (ret != 0)
-- pr_err("FILEIO: vfs_fsync_range() failed: %d\n", ret);
--}
--
- static int fd_do_task(struct se_task *task)
- {
- struct se_cmd *cmd = task->task_se_cmd;
-@@ -434,19 +404,21 @@ static int fd_do_task(struct se_task *task)
- ret = fd_do_readv(task);
- } else {
- ret = fd_do_writev(task);
--
-+ /*
-+ * Perform implict vfs_fsync_range() for fd_do_writev() ops
-+ * for SCSI WRITEs with Forced Unit Access (FUA) set.
-+ * Allow this to happen independent of WCE=0 setting.
-+ */
- if (ret > 0 &&
-- dev->se_sub_dev->se_dev_attrib.emulate_write_cache > 0 &&
- dev->se_sub_dev->se_dev_attrib.emulate_fua_write > 0 &&
- (cmd->se_cmd_flags & SCF_FUA)) {
-- /*
-- * We might need to be a bit smarter here
-- * and return some sense data to let the initiator
-- * know the FUA WRITE cache sync failed..?
-- */
-- fd_emulate_write_fua(cmd, task);
-- }
-+ struct fd_dev *fd_dev = dev->dev_ptr;
-+ loff_t start = task->task_lba *
-+ dev->se_sub_dev->se_dev_attrib.block_size;
-+ loff_t end = start + task->task_size;
-
-+ vfs_fsync_range(fd_dev->fd_file, start, end, 1);
-+ }
- }
-
- if (ret < 0) {
-@@ -478,7 +450,6 @@ enum {
- static match_table_t tokens = {
- {Opt_fd_dev_name, "fd_dev_name=%s"},
- {Opt_fd_dev_size, "fd_dev_size=%s"},
-- {Opt_fd_buffered_io, "fd_buffered_io=%d"},
- {Opt_err, NULL}
- };
-
-@@ -490,7 +461,7 @@ static ssize_t fd_set_configfs_dev_params(
- struct fd_dev *fd_dev = se_dev->se_dev_su_ptr;
- char *orig, *ptr, *arg_p, *opts;
- substring_t args[MAX_OPT_ARGS];
-- int ret = 0, arg, token;
-+ int ret = 0, token;
-
- opts = kstrdup(page, GFP_KERNEL);
- if (!opts)
-@@ -534,19 +505,6 @@ static ssize_t fd_set_configfs_dev_params(
- " bytes\n", fd_dev->fd_dev_size);
- fd_dev->fbd_flags |= FBDF_HAS_SIZE;
- break;
-- case Opt_fd_buffered_io:
-- match_int(args, &arg);
-- if (arg != 1) {
-- pr_err("bogus fd_buffered_io=%d value\n", arg);
-- ret = -EINVAL;
-- goto out;
-- }
--
-- pr_debug("FILEIO: Using buffered I/O"
-- " operations for struct fd_dev\n");
--
-- fd_dev->fbd_flags |= FDBD_USE_BUFFERED_IO;
-- break;
- default:
- break;
- }
-@@ -578,10 +536,8 @@ static ssize_t fd_show_configfs_dev_params(
- ssize_t bl = 0;
-
- bl = sprintf(b + bl, "TCM FILEIO ID: %u", fd_dev->fd_dev_id);
-- bl += sprintf(b + bl, " File: %s Size: %llu Mode: %s\n",
-- fd_dev->fd_dev_name, fd_dev->fd_dev_size,
-- (fd_dev->fbd_flags & FDBD_USE_BUFFERED_IO) ?
-- "Buffered" : "Synchronous");
-+ bl += sprintf(b + bl, " File: %s Size: %llu Mode: O_DSYNC\n",
-+ fd_dev->fd_dev_name, fd_dev->fd_dev_size);
- return bl;
- }
-
-diff --git a/drivers/target/target_core_file.h b/drivers/target/target_core_file.h
-index 59e6e73..53ece69 100644
---- a/drivers/target/target_core_file.h
-+++ b/drivers/target/target_core_file.h
-@@ -18,7 +18,6 @@ struct fd_request {
-
- #define FBDF_HAS_PATH 0x01
- #define FBDF_HAS_SIZE 0x02
--#define FDBD_USE_BUFFERED_IO 0x04
-
- struct fd_dev {
- u32 fbd_flags;
---
-1.7.9.5
-
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
deleted file mode 100644
index 5d13500..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0077-iommu-amd-Cache-pdev-pointer-to-root-bridge.patch
+++ /dev/null
@@ -1,84 +0,0 @@
-From 24791636a8052063d0f0ee3df30d8fce92e59398 Mon Sep 17 00:00:00 2001
-From: Joerg Roedel <joerg.roedel at amd.com>
-Date: Thu, 31 May 2012 17:38:11 +0200
-Subject: [PATCH 77/86] iommu/amd: Cache pdev pointer to root-bridge
-
-commit c1bf94ec1e12d76838ad485158aecf208ebd8fb9 upstream.
-
-At some point pci_get_bus_and_slot started to enable
-interrupts. Since this function is used in the
-amd_iommu_resume path it will enable interrupts on resume
-which causes a warning. The fix will use a cached pointer
-to the root-bridge to re-enable the IOMMU in case the BIOS
-is broken.
-
-Signed-off-by: Joerg Roedel <joerg.roedel at amd.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/iommu/amd_iommu_init.c | 13 +++++--------
- drivers/iommu/amd_iommu_types.h | 3 +++
- 2 files changed, 8 insertions(+), 8 deletions(-)
-
-diff --git a/drivers/iommu/amd_iommu_init.c b/drivers/iommu/amd_iommu_init.c
-index 20d5852..6269eb0 100644
---- a/drivers/iommu/amd_iommu_init.c
-+++ b/drivers/iommu/amd_iommu_init.c
-@@ -943,6 +943,9 @@ static int __init init_iommu_one(struct amd_iommu *iommu, struct ivhd_header *h)
- if (!iommu->dev)
- return 1;
-
-+ iommu->root_pdev = pci_get_bus_and_slot(iommu->dev->bus->number,
-+ PCI_DEVFN(0, 0));
-+
- iommu->cap_ptr = h->cap_ptr;
- iommu->pci_seg = h->pci_seg;
- iommu->mmio_phys = h->mmio_phys;
-@@ -1225,20 +1228,16 @@ static void iommu_apply_resume_quirks(struct amd_iommu *iommu)
- {
- int i, j;
- u32 ioc_feature_control;
-- struct pci_dev *pdev = NULL;
-+ struct pci_dev *pdev = iommu->root_pdev;
-
- /* RD890 BIOSes may not have completely reconfigured the iommu */
-- if (!is_rd890_iommu(iommu->dev))
-+ if (!is_rd890_iommu(iommu->dev) || !pdev)
- return;
-
- /*
- * First, we need to ensure that the iommu is enabled. This is
- * controlled by a register in the northbridge
- */
-- pdev = pci_get_bus_and_slot(iommu->dev->bus->number, PCI_DEVFN(0, 0));
--
-- if (!pdev)
-- return;
-
- /* Select Northbridge indirect register 0x75 and enable writing */
- pci_write_config_dword(pdev, 0x60, 0x75 | (1 << 7));
-@@ -1248,8 +1247,6 @@ static void iommu_apply_resume_quirks(struct amd_iommu *iommu)
- if (!(ioc_feature_control & 0x1))
- pci_write_config_dword(pdev, 0x64, ioc_feature_control | 1);
-
-- pci_dev_put(pdev);
--
- /* Restore the iommu BAR */
- pci_write_config_dword(iommu->dev, iommu->cap_ptr + 4,
- iommu->stored_addr_lo);
-diff --git a/drivers/iommu/amd_iommu_types.h b/drivers/iommu/amd_iommu_types.h
-index 5b9c507..40ab83b 100644
---- a/drivers/iommu/amd_iommu_types.h
-+++ b/drivers/iommu/amd_iommu_types.h
-@@ -385,6 +385,9 @@ struct amd_iommu {
- /* Pointer to PCI device of this IOMMU */
- struct pci_dev *dev;
-
-+ /* Cache pdev to root device for resume quirks */
-+ struct pci_dev *root_pdev;
-+
- /* physical address of MMIO space */
- u64 mmio_phys;
- /* virtual address of MMIO space */
---
-1.7.9.5
-
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
deleted file mode 100644
index 70ca675..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0078-drm-radeon-kms-add-new-Palm-Sumo-PCI-ids.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From eec9a1ae19fea9a7eeab32de2371932e845f8486 Mon Sep 17 00:00:00 2001
-From: Alex Deucher <alexander.deucher at amd.com>
-Date: Tue, 5 Jun 2012 09:50:29 -0400
-Subject: [PATCH 78/86] drm/radeon/kms: add new Palm, Sumo PCI ids
-
-commit 4a6991cc1fad514745b79181df3ace72d561e7aa upstream.
-
-Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
-Signed-off-by: Dave Airlie <airlied at redhat.com>
-[bwh: Backported to 3.2: adjust context]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- include/drm/drm_pciids.h | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/include/drm/drm_pciids.h b/include/drm/drm_pciids.h
-index 14b6cd0..78654ca 100644
---- a/include/drm/drm_pciids.h
-+++ b/include/drm/drm_pciids.h
-@@ -493,6 +493,7 @@
- {0x1002, 0x9645, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_SUMO2|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
- {0x1002, 0x9647, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_SUMO|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP},\
- {0x1002, 0x9648, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_SUMO|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP},\
-+ {0x1002, 0x9649, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_SUMO|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP},\
- {0x1002, 0x964a, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_SUMO|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
- {0x1002, 0x964b, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_SUMO|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
- {0x1002, 0x964c, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_SUMO|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
-@@ -512,6 +513,7 @@
- {0x1002, 0x9807, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PALM|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
- {0x1002, 0x9808, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PALM|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
- {0x1002, 0x9809, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PALM|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
-+ {0x1002, 0x980A, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PALM|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
- {0, 0, 0}
-
- #define r128_PCI_IDS \
---
-1.7.9.5
-
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
deleted file mode 100644
index 024015e..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0079-drm-radeon-kms-add-new-BTC-PCI-ids.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 3ed59dee924ffa272751ccbb5d84c57cef96a779 Mon Sep 17 00:00:00 2001
-From: Alex Deucher <alexander.deucher at amd.com>
-Date: Tue, 5 Jun 2012 09:50:30 -0400
-Subject: [PATCH 79/86] drm/radeon/kms: add new BTC PCI ids
-
-commit a2bef8ce826dd1e787fd8ad9b6e0566ba59dab43 upstream.
-
-Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
-Signed-off-by: Dave Airlie <airlied at redhat.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- include/drm/drm_pciids.h | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/include/drm/drm_pciids.h b/include/drm/drm_pciids.h
-index 78654ca..def807c 100644
---- a/include/drm/drm_pciids.h
-+++ b/include/drm/drm_pciids.h
-@@ -181,6 +181,7 @@
- {0x1002, 0x6747, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TURKS|RADEON_NEW_MEMMAP}, \
- {0x1002, 0x6748, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TURKS|RADEON_NEW_MEMMAP}, \
- {0x1002, 0x6749, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TURKS|RADEON_NEW_MEMMAP}, \
-+ {0x1002, 0x674A, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TURKS|RADEON_NEW_MEMMAP}, \
- {0x1002, 0x6750, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TURKS|RADEON_NEW_MEMMAP}, \
- {0x1002, 0x6751, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TURKS|RADEON_NEW_MEMMAP}, \
- {0x1002, 0x6758, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TURKS|RADEON_NEW_MEMMAP}, \
-@@ -198,6 +199,7 @@
- {0x1002, 0x6767, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CAICOS|RADEON_NEW_MEMMAP}, \
- {0x1002, 0x6768, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CAICOS|RADEON_NEW_MEMMAP}, \
- {0x1002, 0x6770, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CAICOS|RADEON_NEW_MEMMAP}, \
-+ {0x1002, 0x6771, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CAICOS|RADEON_NEW_MEMMAP}, \
- {0x1002, 0x6772, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CAICOS|RADEON_NEW_MEMMAP}, \
- {0x1002, 0x6778, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CAICOS|RADEON_NEW_MEMMAP}, \
- {0x1002, 0x6779, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CAICOS|RADEON_NEW_MEMMAP}, \
---
-1.7.9.5
-
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
deleted file mode 100644
index 7314c7d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0080-btree-fix-tree-corruption-in-btree_get_prev.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From b209359cc7df5f400a4c1cd342bf19afc377961e Mon Sep 17 00:00:00 2001
-From: Roland Dreier <roland at purestorage.com>
-Date: Thu, 7 Jun 2012 14:21:13 -0700
-Subject: [PATCH 80/86] btree: fix tree corruption in btree_get_prev()
-
-commit cbf8ae32f66a9ceb8907ad9e16663c2a29e48990 upstream.
-
-The memory the parameter __key points to is used as an iterator in
-btree_get_prev(), so if we save off a bkey() pointer in retry_key and
-then assign that to __key, we'll end up corrupting the btree internals
-when we do eg
-
- longcpy(__key, bkey(geo, node, i), geo->keylen);
-
-to return the key value. What we should do instead is use longcpy() to
-copy the key value that retry_key points to __key.
-
-This can cause a btree to get corrupted by seemingly read-only
-operations such as btree_for_each_safe.
-
-[akpm at linux-foundation.org: avoid the double longcpy()]
-Signed-off-by: Roland Dreier <roland at purestorage.com>
-Acked-by: Joern Engel <joern at logfs.org>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- lib/btree.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/lib/btree.c b/lib/btree.c
-index 2a34392..297124d 100644
---- a/lib/btree.c
-+++ b/lib/btree.c
-@@ -319,8 +319,8 @@ void *btree_get_prev(struct btree_head *head, struct btree_geo *geo,
-
- if (head->height == 0)
- return NULL;
--retry:
- longcpy(key, __key, geo->keylen);
-+retry:
- dec_key(geo, key);
-
- node = head->node;
-@@ -351,7 +351,7 @@ retry:
- }
- miss:
- if (retry_key) {
-- __key = retry_key;
-+ longcpy(key, retry_key, geo->keylen);
- retry_key = NULL;
- goto retry;
- }
---
-1.7.9.5
-
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
deleted file mode 100644
index 0c34a7d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0081-kbuild-install-kernel-page-flags.h.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From 5e25d4d8ce731b609f1be874fd76f66bc03de441 Mon Sep 17 00:00:00 2001
-From: Ulrich Drepper <drepper at akkadia.org>
-Date: Tue, 29 May 2012 15:06:30 -0700
-Subject: [PATCH 81/86] kbuild: install kernel-page-flags.h
-
-commit 9295b7a07c859a42346221b5839be0ae612333b0 upstream.
-
-Programs using /proc/kpageflags need to know about the various flags. The
-<linux/kernel-page-flags.h> provides them and the comments in the file
-indicate that it is supposed to be used by user-level code. But the file
-is not installed.
-
-Install the headers and mark the unstable flags as out-of-bounds. The
-page-type tool is also adjusted to not duplicate the definitions
-
-Signed-off-by: Ulrich Drepper <drepper at gmail.com>
-Acked-by: KOSAKI Motohiro <kosaki.motohiro at jp.fujitsu.com>
-Acked-by: Fengguang Wu <fengguang.wu at intel.com>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-[bwh: Backported to 3.2: adjust context; drop change to missing tools/vm/]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- include/linux/Kbuild | 1 +
- include/linux/kernel-page-flags.h | 4 ++++
- 2 files changed, 5 insertions(+)
-
-diff --git a/include/linux/Kbuild b/include/linux/Kbuild
-index 619b565..bd21ecd 100644
---- a/include/linux/Kbuild
-+++ b/include/linux/Kbuild
-@@ -224,6 +224,7 @@ header-y += kd.h
- header-y += kdev_t.h
- header-y += kernel.h
- header-y += kernelcapi.h
-+header-y += kernel-page-flags.h
- header-y += keyboard.h
- header-y += keyctl.h
- header-y += l2tp.h
-diff --git a/include/linux/kernel-page-flags.h b/include/linux/kernel-page-flags.h
-index bd92a89..096b05d 100644
---- a/include/linux/kernel-page-flags.h
-+++ b/include/linux/kernel-page-flags.h
-@@ -31,6 +31,8 @@
-
- #define KPF_KSM 21
-
-+#ifdef __KERNEL__
-+
- /* kernel hacking assistances
- * WARNING: subject to change, never rely on them!
- */
-@@ -43,4 +45,6 @@
- #define KPF_ARCH 38
- #define KPF_UNCACHED 39
-
-+#endif /* __KERNEL__ */
-+
- #endif /* LINUX_KERNEL_PAGE_FLAGS_H */
---
-1.7.9.5
-
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
deleted file mode 100644
index a55d8f9..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0082-asix-allow-full-size-8021Q-frames-to-be-received.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From 7d6dc5bd5f0608f96ec3d12d9eaecf45b053ccb8 Mon Sep 17 00:00:00 2001
-From: Eric Dumazet <edumazet at google.com>
-Date: Mon, 28 May 2012 22:31:41 +0000
-Subject: [PATCH 82/86] asix: allow full size 8021Q frames to be received
-
-commit 9dae31009b1a00d926c6fe032d5a88099620adc3 upstream.
-
-asix driver drops 8021Q full size frames because it doesn't take into
-account VLAN header size.
-
-Tested on AX88772 adapter.
-
-Signed-off-by: Eric Dumazet <edumazet at google.com>
-CC: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-CC: Allan Chou <allan at asix.com.tw>
-CC: Trond Wuellner <trond at chromium.org>
-CC: Grant Grundler <grundler at chromium.org>
-CC: Paul Stewart <pstew at chromium.org>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-[bwh: Backported to 3.2: no offset used in asix_rx_fixup()]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/usb/asix.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/net/usb/asix.c b/drivers/net/usb/asix.c
-index a9abee8..fc147a5 100644
---- a/drivers/net/usb/asix.c
-+++ b/drivers/net/usb/asix.c
-@@ -35,6 +35,7 @@
- #include <linux/crc32.h>
- #include <linux/usb/usbnet.h>
- #include <linux/slab.h>
-+#include <linux/if_vlan.h>
-
- #define DRIVER_VERSION "08-Nov-2011"
- #define DRIVER_NAME "asix"
-@@ -348,7 +349,7 @@ static int asix_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
- return 2;
- }
-
-- if (size > dev->net->mtu + ETH_HLEN) {
-+ if (size > dev->net->mtu + ETH_HLEN + VLAN_HLEN) {
- netdev_err(dev->net, "asix_rx_fixup() Bad RX Length %d\n",
- size);
- return 0;
---
-1.7.9.5
-
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
deleted file mode 100644
index b306294..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0083-ext4-don-t-trash-state-flags-in-EXT4_IOC_SETFLAGS.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From 2060683e126ab7d9bb0ed4a089f572d6f1563015 Mon Sep 17 00:00:00 2001
-From: Theodore Ts'o <tytso at mit.edu>
-Date: Thu, 31 May 2012 23:46:01 -0400
-Subject: [PATCH 83/86] ext4: don't trash state flags in EXT4_IOC_SETFLAGS
-
-commit 79906964a187c405db72a3abc60eb9b50d804fbc upstream.
-
-In commit 353eb83c we removed i_state_flags with 64-bit longs, But
-when handling the EXT4_IOC_SETFLAGS ioctl, we replace i_flags
-directly, which trashes the state flags which are stored in the high
-32-bits of i_flags on 64-bit platforms. So use the the
-ext4_{set,clear}_inode_flags() functions which use atomic bit
-manipulation functions instead.
-
-Reported-by: Tao Ma <boyu.mt at taobao.com>
-Signed-off-by: "Theodore Ts'o" <tytso at mit.edu>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/ext4/ioctl.c | 12 +++++++++---
- 1 file changed, 9 insertions(+), 3 deletions(-)
-
-diff --git a/fs/ext4/ioctl.c b/fs/ext4/ioctl.c
-index ab25f57..1b7bc39 100644
---- a/fs/ext4/ioctl.c
-+++ b/fs/ext4/ioctl.c
-@@ -36,7 +36,7 @@ long ext4_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
- handle_t *handle = NULL;
- int err, migrate = 0;
- struct ext4_iloc iloc;
-- unsigned int oldflags;
-+ unsigned int oldflags, mask, i;
- unsigned int jflag;
-
- if (!inode_owner_or_capable(inode))
-@@ -113,8 +113,14 @@ long ext4_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
- if (err)
- goto flags_err;
-
-- flags = flags & EXT4_FL_USER_MODIFIABLE;
-- flags |= oldflags & ~EXT4_FL_USER_MODIFIABLE;
-+ for (i = 0, mask = 1; i < 32; i++, mask <<= 1) {
-+ if (!(mask & EXT4_FL_USER_MODIFIABLE))
-+ continue;
-+ if (mask & flags)
-+ ext4_set_inode_flag(inode, i);
-+ else
-+ ext4_clear_inode_flag(inode, i);
-+ }
- ei->i_flags = flags;
-
- ext4_set_inode_flags(inode);
---
-1.7.9.5
-
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
deleted file mode 100644
index 1529c65..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0084-ext4-don-t-set-i_flags-in-EXT4_IOC_SETFLAGS.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 829f95bac40b76e3eb7d26d5bab4a156d749ae33 Mon Sep 17 00:00:00 2001
-From: Tao Ma <boyu.mt at taobao.com>
-Date: Thu, 7 Jun 2012 19:04:19 -0400
-Subject: [PATCH 84/86] ext4: don't set i_flags in EXT4_IOC_SETFLAGS
-
-commit b22b1f178f6799278d3178d894f37facb2085765 upstream.
-
-Commit 7990696 uses the ext4_{set,clear}_inode_flags() functions to
-change the i_flags automatically but fails to remove the error setting
-of i_flags. So we still have the problem of trashing state flags.
-Fix this by removing the assignment.
-
-Signed-off-by: Tao Ma <boyu.mt at taobao.com>
-Signed-off-by: "Theodore Ts'o" <tytso at mit.edu>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/ext4/ioctl.c | 1 -
- 1 file changed, 1 deletion(-)
-
-diff --git a/fs/ext4/ioctl.c b/fs/ext4/ioctl.c
-index 1b7bc39..76a6e3b 100644
---- a/fs/ext4/ioctl.c
-+++ b/fs/ext4/ioctl.c
-@@ -121,7 +121,6 @@ long ext4_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
- else
- ext4_clear_inode_flag(inode, i);
- }
-- ei->i_flags = flags;
-
- ext4_set_inode_flags(inode);
- inode->i_ctime = ext4_current_time(inode);
---
-1.7.9.5
-
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
deleted file mode 100644
index 3d05f08..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0085-ext4-fix-the-free-blocks-calculation-for-ext3-file-s.patch
+++ /dev/null
@@ -1,76 +0,0 @@
-From f83716d6c669e13a5c79262a51a267a752559c5d Mon Sep 17 00:00:00 2001
-From: Theodore Ts'o <tytso at mit.edu>
-Date: Thu, 7 Jun 2012 18:56:06 -0400
-Subject: [PATCH 85/86] ext4: fix the free blocks calculation for ext3 file
- systems w/ uninit_bg
-
-commit b0dd6b70f0fda17ae9762fbb72d98e40a4f66556 upstream.
-
-Ext3 filesystems that are converted to use as many ext4 file system
-features as possible will enable uninit_bg to speed up e2fsck times.
-These file systems will have a native ext3 layout of inode tables and
-block allocation bitmaps (as opposed to ext4's flex_bg layout).
-Unfortunately, in these cases, when first allocating a block in an
-uninitialized block group, ext4 would incorrectly calculate the number
-of free blocks in that block group, and then errorneously report that
-the file system was corrupt:
-
-EXT4-fs error (device vdd): ext4_mb_generate_buddy:741: group 30, 32254 clusters in bitmap, 32258 in gd
-
-This problem can be reproduced via:
-
- mke2fs -q -t ext4 -O ^flex_bg /dev/vdd 5g
- mount -t ext4 /dev/vdd /mnt
- fallocate -l 4600m /mnt/test
-
-The problem was caused by a bone headed mistake in the check to see if a
-particular metadata block was part of the block group.
-
-Many thanks to Kees Cook for finding and bisecting the buggy commit
-which introduced this bug (commit fd034a84e1, present since v3.2).
-
-Reported-by: Sander Eikelenboom <linux at eikelenboom.it>
-Reported-by: Kees Cook <keescook at chromium.org>
-Signed-off-by: "Theodore Ts'o" <tytso at mit.edu>
-Tested-by: Kees Cook <keescook at chromium.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/ext4/balloc.c | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/fs/ext4/balloc.c b/fs/ext4/balloc.c
-index 12ccacd..914bf9e 100644
---- a/fs/ext4/balloc.c
-+++ b/fs/ext4/balloc.c
-@@ -88,8 +88,8 @@ unsigned ext4_num_overhead_clusters(struct super_block *sb,
- * unusual file system layouts.
- */
- if (ext4_block_in_group(sb, ext4_block_bitmap(sb, gdp), block_group)) {
-- block_cluster = EXT4_B2C(sbi, (start -
-- ext4_block_bitmap(sb, gdp)));
-+ block_cluster = EXT4_B2C(sbi,
-+ ext4_block_bitmap(sb, gdp) - start);
- if (block_cluster < num_clusters)
- block_cluster = -1;
- else if (block_cluster == num_clusters) {
-@@ -100,7 +100,7 @@ unsigned ext4_num_overhead_clusters(struct super_block *sb,
-
- if (ext4_block_in_group(sb, ext4_inode_bitmap(sb, gdp), block_group)) {
- inode_cluster = EXT4_B2C(sbi,
-- start - ext4_inode_bitmap(sb, gdp));
-+ ext4_inode_bitmap(sb, gdp) - start);
- if (inode_cluster < num_clusters)
- inode_cluster = -1;
- else if (inode_cluster == num_clusters) {
-@@ -112,7 +112,7 @@ unsigned ext4_num_overhead_clusters(struct super_block *sb,
- itbl_blk = ext4_inode_table(sb, gdp);
- for (i = 0; i < sbi->s_itb_per_group; i++) {
- if (ext4_block_in_group(sb, itbl_blk + i, block_group)) {
-- c = EXT4_B2C(sbi, start - itbl_blk + i);
-+ c = EXT4_B2C(sbi, itbl_blk + i - start);
- if ((c < num_clusters) || (c == inode_cluster) ||
- (c == block_cluster) || (c == itbl_cluster))
- continue;
---
-1.7.9.5
-
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
deleted file mode 100644
index 58597da..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0086-Linux-3.2.20.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 12056d4d781913f38e7d7a05fbf7c1b48a1f7d4d Mon Sep 17 00:00:00 2001
-From: Ben Hutchings <ben at decadent.org.uk>
-Date: Sun, 10 Jun 2012 14:42:13 +0100
-Subject: [PATCH 86/86] Linux 3.2.20
-
----
- Makefile | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Makefile b/Makefile
-index c291184..c7e9cc4 100644
---- a/Makefile
-+++ b/Makefile
-@@ -1,6 +1,6 @@
- VERSION = 3
- PATCHLEVEL = 2
--SUBLEVEL = 19
-+SUBLEVEL = 20
- EXTRAVERSION =
- NAME = Saber-toothed Squirrel
-
---
-1.7.9.5
-
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
deleted file mode 100644
index f55f3ea..0000000
--- 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
+++ /dev/null
@@ -1,44 +0,0 @@
-From 70a948c214a99cc13d1258bee77c13ca8a430c3d Mon Sep 17 00:00:00 2001
-From: Chris Wilson <chris at chris-wilson.co.uk>
-Date: Mon, 4 Jun 2012 17:05:40 +0100
-Subject: [PATCH 01/67] drm/i915: Mark the ringbuffers as being in the GTT
- domain
-
-commit 3eef8918ff440837f6af791942d8dd07e1a268ee upstream.
-
-By correctly describing the rinbuffers as being in the GTT domain, it
-appears that we are more careful with the management of the CPU cache
-upon resume and so prevent some coherency issue when submitting commands
-to the GPU later. A secondary effect is that the debug logs are then
-consistent with the actual usage (i.e. they no longer describe the
-ringbuffers as being in the CPU write domain when we are accessing them
-through an wc iomapping.)
-
-Reported-and-tested-by: Daniel Gnoutcheff <daniel at gnoutcheff.name>
-Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=41092
-Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
-Signed-off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
-[bwh: Backported to 3.2: adjust context]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpu/drm/i915/intel_ringbuffer.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
-index 62f9ac5..83da6e5 100644
---- a/drivers/gpu/drm/i915/intel_ringbuffer.c
-+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
-@@ -1045,6 +1045,10 @@ int intel_init_ring_buffer(struct drm_device *dev,
- if (ret)
- goto err_unref;
-
-+ ret = i915_gem_object_set_to_gtt_domain(obj, true);
-+ if (ret)
-+ goto err_unpin;
-+
- ring->map.size = ring->size;
- ring->map.offset = dev->agp->base + obj->gtt_offset;
- ring->map.type = 0;
---
-1.7.9.5
-
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
deleted file mode 100644
index 14782bd..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0002-drm-i915-hold-forcewake-around-ring-hw-init.patch
+++ /dev/null
@@ -1,158 +0,0 @@
-From 56894d493cca01018bd2f3222a8a20b87abc1edd Mon Sep 17 00:00:00 2001
-From: Daniel Vetter <daniel.vetter at ffwll.ch>
-Date: Mon, 4 Jun 2012 11:18:15 +0200
-Subject: [PATCH 02/67] drm/i915: hold forcewake around ring hw init
-
-commit b7884eb45ec98c0d34c7f49005ae9d4b4b4e38f6 upstream.
-
-Empirical evidence suggests that we need to: On at least one ivb
-machine when running the hangman i-g-t test, the rings don't properly
-initialize properly - the RING_START registers seems to be stuck at
-all zeros.
-
-Holding forcewake around this register init sequences makes chip reset
-reliable again. Note that this is not the first such issue:
-
-commit f01db988ef6f6c70a6cc36ee71e4a98a68901229
-Author: Sean Paul <seanpaul at chromium.org>
-Date: Fri Mar 16 12:43:22 2012 -0400
-
- drm/i915: Add wait_for in init_ring_common
-
-added delay loops to make RING_START and RING_CTL initialization
-reliable on the blt ring at boot-up. So I guess it won't hurt if we do
-this unconditionally for all force_wake needing gpus.
-
-To avoid copy&pasting of the HAS_FORCE_WAKE check I've added a new
-intel_info bit for that.
-
-v2: Fixup missing commas in static struct and properly handling the
-error case in init_ring_common, both noticed by Jani Nikula.
-
-Reported-and-tested-by: Yang Guang <guang.a.yang at intel.com>
-Reviewed-by: Eugeni Dodonov <eugeni.dodonov at intel.com>
-Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=50522
-Signed-Off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
-[bwh: Backported to 3.2:
- - drop changes to Haswell device information
- - NEEDS_FORCE_WAKE didn't refer to Valley View anyway]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpu/drm/i915/i915_drv.c | 6 +++++-
- drivers/gpu/drm/i915/i915_drv.h | 3 +++
- drivers/gpu/drm/i915/intel_ringbuffer.c | 16 +++++++++++++---
- 3 files changed, 21 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
-index d0f8830..3a1bfd7 100644
---- a/drivers/gpu/drm/i915/i915_drv.c
-+++ b/drivers/gpu/drm/i915/i915_drv.c
-@@ -214,6 +214,7 @@ static const struct intel_device_info intel_sandybridge_d_info = {
- .need_gfx_hws = 1, .has_hotplug = 1,
- .has_bsd_ring = 1,
- .has_blt_ring = 1,
-+ .has_force_wake = 1,
- };
-
- static const struct intel_device_info intel_sandybridge_m_info = {
-@@ -222,6 +223,7 @@ static const struct intel_device_info intel_sandybridge_m_info = {
- .has_fbc = 1,
- .has_bsd_ring = 1,
- .has_blt_ring = 1,
-+ .has_force_wake = 1,
- };
-
- static const struct intel_device_info intel_ivybridge_d_info = {
-@@ -229,6 +231,7 @@ static const struct intel_device_info intel_ivybridge_d_info = {
- .need_gfx_hws = 1, .has_hotplug = 1,
- .has_bsd_ring = 1,
- .has_blt_ring = 1,
-+ .has_force_wake = 1,
- };
-
- static const struct intel_device_info intel_ivybridge_m_info = {
-@@ -237,6 +240,7 @@ static const struct intel_device_info intel_ivybridge_m_info = {
- .has_fbc = 0, /* FBC is not enabled on Ivybridge mobile yet */
- .has_bsd_ring = 1,
- .has_blt_ring = 1,
-+ .has_force_wake = 1,
- };
-
- static const struct pci_device_id pciidlist[] = { /* aka */
-@@ -939,7 +943,7 @@ MODULE_LICENSE("GPL and additional rights");
-
- /* We give fast paths for the really cool registers */
- #define NEEDS_FORCE_WAKE(dev_priv, reg) \
-- (((dev_priv)->info->gen >= 6) && \
-+ ((HAS_FORCE_WAKE((dev_priv)->dev)) && \
- ((reg) < 0x40000) && \
- ((reg) != FORCEWAKE) && \
- ((reg) != ECOBUS))
-diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
-index ae294a0..d62c731 100644
---- a/drivers/gpu/drm/i915/i915_drv.h
-+++ b/drivers/gpu/drm/i915/i915_drv.h
-@@ -244,6 +244,7 @@ struct intel_device_info {
- u8 is_broadwater:1;
- u8 is_crestline:1;
- u8 is_ivybridge:1;
-+ u8 has_force_wake:1;
- u8 has_fbc:1;
- u8 has_pipe_cxsr:1;
- u8 has_hotplug:1;
-@@ -1001,6 +1002,8 @@ struct drm_i915_file_private {
- #define HAS_PCH_CPT(dev) (INTEL_PCH_TYPE(dev) == PCH_CPT)
- #define HAS_PCH_IBX(dev) (INTEL_PCH_TYPE(dev) == PCH_IBX)
-
-+#define HAS_FORCE_WAKE(dev) (INTEL_INFO(dev)->has_force_wake)
-+
- #include "i915_trace.h"
-
- extern struct drm_ioctl_desc i915_ioctls[];
-diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
-index 83da6e5..933e66b 100644
---- a/drivers/gpu/drm/i915/intel_ringbuffer.c
-+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
-@@ -263,10 +263,15 @@ u32 intel_ring_get_active_head(struct intel_ring_buffer *ring)
-
- static int init_ring_common(struct intel_ring_buffer *ring)
- {
-- drm_i915_private_t *dev_priv = ring->dev->dev_private;
-+ struct drm_device *dev = ring->dev;
-+ drm_i915_private_t *dev_priv = dev->dev_private;
- struct drm_i915_gem_object *obj = ring->obj;
-+ int ret = 0;
- u32 head;
-
-+ if (HAS_FORCE_WAKE(dev))
-+ gen6_gt_force_wake_get(dev_priv);
-+
- /* Stop the ring if it's running. */
- I915_WRITE_CTL(ring, 0);
- I915_WRITE_HEAD(ring, 0);
-@@ -314,7 +319,8 @@ static int init_ring_common(struct intel_ring_buffer *ring)
- I915_READ_HEAD(ring),
- I915_READ_TAIL(ring),
- I915_READ_START(ring));
-- return -EIO;
-+ ret = -EIO;
-+ goto out;
- }
-
- if (!drm_core_check_feature(ring->dev, DRIVER_MODESET))
-@@ -325,7 +331,11 @@ static int init_ring_common(struct intel_ring_buffer *ring)
- ring->space = ring_space(ring);
- }
-
-- return 0;
-+out:
-+ if (HAS_FORCE_WAKE(dev))
-+ gen6_gt_force_wake_put(dev_priv);
-+
-+ return ret;
- }
-
- static int
---
-1.7.9.5
-
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
deleted file mode 100644
index 9593526..0000000
--- 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
+++ /dev/null
@@ -1,166 +0,0 @@
-From d2d41b738ccb89bf3e5903fdf04bb43a712dd5d3 Mon Sep 17 00:00:00 2001
-From: Chris Wilson <chris at chris-wilson.co.uk>
-Date: Tue, 17 Apr 2012 19:35:53 +0100
-Subject: [PATCH 03/67] drm/i915: Unpin the flip target if we fail to queue
- the flip
-
-commit 83d4092b0381e5dd6f312b2ec57121dcf0fcbade upstream.
-
-Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
-Cc: Jesse Barnes <jbarnes at virtuousgeek.org>
-Signed-off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
-[bwh: Backported to 3.2:
- - adjust context
- - we don't have intel_unpin_fb_obj(); use i915_gem_object_unpin()]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpu/drm/i915/intel_display.c | 50 ++++++++++++++++++++++++----------
- 1 file changed, 35 insertions(+), 15 deletions(-)
-
-diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
-index 4720397..1f43ae5 100644
---- a/drivers/gpu/drm/i915/intel_display.c
-+++ b/drivers/gpu/drm/i915/intel_display.c
-@@ -7009,14 +7009,14 @@ static int intel_gen2_queue_flip(struct drm_device *dev,
-
- ret = intel_pin_and_fence_fb_obj(dev, obj, LP_RING(dev_priv));
- if (ret)
-- goto out;
-+ goto err;
-
- /* Offset into the new buffer for cases of shared fbs between CRTCs */
- offset = crtc->y * fb->pitch + crtc->x * fb->bits_per_pixel/8;
-
- ret = BEGIN_LP_RING(6);
- if (ret)
-- goto out;
-+ goto err_unpin;
-
- /* Can't queue multiple flips, so wait for the previous
- * one to finish before executing the next.
-@@ -7033,7 +7033,11 @@ static int intel_gen2_queue_flip(struct drm_device *dev,
- OUT_RING(obj->gtt_offset + offset);
- OUT_RING(MI_NOOP);
- ADVANCE_LP_RING();
--out:
-+ return 0;
-+
-+err_unpin:
-+ i915_gem_object_unpin(obj);
-+err:
- return ret;
- }
-
-@@ -7050,14 +7054,14 @@ static int intel_gen3_queue_flip(struct drm_device *dev,
-
- ret = intel_pin_and_fence_fb_obj(dev, obj, LP_RING(dev_priv));
- if (ret)
-- goto out;
-+ goto err;
-
- /* Offset into the new buffer for cases of shared fbs between CRTCs */
- offset = crtc->y * fb->pitch + crtc->x * fb->bits_per_pixel/8;
-
- ret = BEGIN_LP_RING(6);
- if (ret)
-- goto out;
-+ goto err_unpin;
-
- if (intel_crtc->plane)
- flip_mask = MI_WAIT_FOR_PLANE_B_FLIP;
-@@ -7072,7 +7076,11 @@ static int intel_gen3_queue_flip(struct drm_device *dev,
- OUT_RING(MI_NOOP);
-
- ADVANCE_LP_RING();
--out:
-+ return 0;
-+
-+err_unpin:
-+ i915_gem_object_unpin(obj);
-+err:
- return ret;
- }
-
-@@ -7088,11 +7096,11 @@ static int intel_gen4_queue_flip(struct drm_device *dev,
-
- ret = intel_pin_and_fence_fb_obj(dev, obj, LP_RING(dev_priv));
- if (ret)
-- goto out;
-+ goto err;
-
- ret = BEGIN_LP_RING(4);
- if (ret)
-- goto out;
-+ goto err_unpin;
-
- /* i965+ uses the linear or tiled offsets from the
- * Display Registers (which do not change across a page-flip)
-@@ -7111,7 +7119,11 @@ static int intel_gen4_queue_flip(struct drm_device *dev,
- pipesrc = I915_READ(PIPESRC(intel_crtc->pipe)) & 0x0fff0fff;
- OUT_RING(pf | pipesrc);
- ADVANCE_LP_RING();
--out:
-+ return 0;
-+
-+err_unpin:
-+ i915_gem_object_unpin(obj);
-+err:
- return ret;
- }
-
-@@ -7127,11 +7139,11 @@ static int intel_gen6_queue_flip(struct drm_device *dev,
-
- ret = intel_pin_and_fence_fb_obj(dev, obj, LP_RING(dev_priv));
- if (ret)
-- goto out;
-+ goto err;
-
- ret = BEGIN_LP_RING(4);
- if (ret)
-- goto out;
-+ goto err_unpin;
-
- OUT_RING(MI_DISPLAY_FLIP |
- MI_DISPLAY_FLIP_PLANE(intel_crtc->plane));
-@@ -7142,7 +7154,11 @@ static int intel_gen6_queue_flip(struct drm_device *dev,
- pipesrc = I915_READ(PIPESRC(intel_crtc->pipe)) & 0x0fff0fff;
- OUT_RING(pf | pipesrc);
- ADVANCE_LP_RING();
--out:
-+ return 0;
-+
-+err_unpin:
-+ i915_gem_object_unpin(obj);
-+err:
- return ret;
- }
-
-@@ -7164,18 +7180,22 @@ static int intel_gen7_queue_flip(struct drm_device *dev,
-
- ret = intel_pin_and_fence_fb_obj(dev, obj, ring);
- if (ret)
-- goto out;
-+ goto err;
-
- ret = intel_ring_begin(ring, 4);
- if (ret)
-- goto out;
-+ goto err_unpin;
-
- intel_ring_emit(ring, MI_DISPLAY_FLIP_I915 | (intel_crtc->plane << 19));
- intel_ring_emit(ring, (fb->pitch | obj->tiling_mode));
- intel_ring_emit(ring, (obj->gtt_offset));
- intel_ring_emit(ring, (MI_NOOP));
- intel_ring_advance(ring);
--out:
-+ return 0;
-+
-+err_unpin:
-+ i915_gem_object_unpin(obj);
-+err:
- return ret;
- }
-
---
-1.7.9.5
-
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
deleted file mode 100644
index 33031c7..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0004-drm-i915-fix-up-ivb-plane-3-pageflips.patch
+++ /dev/null
@@ -1,93 +0,0 @@
-From e76a063bd6b6038a0fd3ab502ae6f14ebc145944 Mon Sep 17 00:00:00 2001
-From: Daniel Vetter <daniel.vetter at ffwll.ch>
-Date: Wed, 23 May 2012 14:02:00 +0200
-Subject: [PATCH 04/67] drm/i915: fix up ivb plane 3 pageflips
-
-commit cb05d8dedefa3066bf5d74ef88c6ca6cf4bd1c87 upstream.
-
-Or at least plug another gapping hole. Apparrently hw desingers only
-moved the bit field, but did not bother ot re-enumerate the planes
-when adding support for a 3rd pipe.
-
-Discovered by i-g-t/flip_test.
-
-This may or may not fix the reference bugzilla, because that one
-smells like we have still larger fish to fry.
-
-v2: Fixup the impossible case to catch programming errors, noticed by
-Chris Wilson.
-
-References: https://bugs.freedesktop.org/show_bug.cgi?id=50069
-Acked-by: Chris Wilson <chris at chris-wilson.co.uk>
-Tested-by: Eugeni Dodonov <eugeni.dodonov at intel.com>
-Eugeni Dodonov <eugeni.dodonov at intel.com>
-Signed-Off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
-[bwh: Backported to 3.2: adjust context]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpu/drm/i915/i915_reg.h | 8 ++++++++
- drivers/gpu/drm/i915/intel_display.c | 19 ++++++++++++++++++-
- 2 files changed, 26 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
-index 06ec1e5..fd53122 100644
---- a/drivers/gpu/drm/i915/i915_reg.h
-+++ b/drivers/gpu/drm/i915/i915_reg.h
-@@ -164,6 +164,14 @@
- #define MI_DISPLAY_FLIP MI_INSTR(0x14, 2)
- #define MI_DISPLAY_FLIP_I915 MI_INSTR(0x14, 1)
- #define MI_DISPLAY_FLIP_PLANE(n) ((n) << 20)
-+/* IVB has funny definitions for which plane to flip. */
-+#define MI_DISPLAY_FLIP_IVB_PLANE_A (0 << 19)
-+#define MI_DISPLAY_FLIP_IVB_PLANE_B (1 << 19)
-+#define MI_DISPLAY_FLIP_IVB_SPRITE_A (2 << 19)
-+#define MI_DISPLAY_FLIP_IVB_SPRITE_B (3 << 19)
-+#define MI_DISPLAY_FLIP_IVB_PLANE_C (4 << 19)
-+#define MI_DISPLAY_FLIP_IVB_SPRITE_C (5 << 19)
-+
- #define MI_SET_CONTEXT MI_INSTR(0x18, 0)
- #define MI_MM_SPACE_GTT (1<<8)
- #define MI_MM_SPACE_PHYSICAL (0<<8)
-diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
-index 1f43ae5..5c1cdb8 100644
---- a/drivers/gpu/drm/i915/intel_display.c
-+++ b/drivers/gpu/drm/i915/intel_display.c
-@@ -7176,17 +7176,34 @@ static int intel_gen7_queue_flip(struct drm_device *dev,
- struct drm_i915_private *dev_priv = dev->dev_private;
- struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
- struct intel_ring_buffer *ring = &dev_priv->ring[BCS];
-+ uint32_t plane_bit = 0;
- int ret;
-
- ret = intel_pin_and_fence_fb_obj(dev, obj, ring);
- if (ret)
- goto err;
-
-+ switch(intel_crtc->plane) {
-+ case PLANE_A:
-+ plane_bit = MI_DISPLAY_FLIP_IVB_PLANE_A;
-+ break;
-+ case PLANE_B:
-+ plane_bit = MI_DISPLAY_FLIP_IVB_PLANE_B;
-+ break;
-+ case PLANE_C:
-+ plane_bit = MI_DISPLAY_FLIP_IVB_PLANE_C;
-+ break;
-+ default:
-+ WARN_ONCE(1, "unknown plane in flip command\n");
-+ ret = -ENODEV;
-+ goto err;
-+ }
-+
- ret = intel_ring_begin(ring, 4);
- if (ret)
- goto err_unpin;
-
-- intel_ring_emit(ring, MI_DISPLAY_FLIP_I915 | (intel_crtc->plane << 19));
-+ intel_ring_emit(ring, MI_DISPLAY_FLIP_I915 | plane_bit);
- intel_ring_emit(ring, (fb->pitch | obj->tiling_mode));
- intel_ring_emit(ring, (obj->gtt_offset));
- intel_ring_emit(ring, (MI_NOOP));
---
-1.7.9.5
-
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
deleted file mode 100644
index 8b303d2..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0005-char-agp-add-another-Ironlake-host-bridge.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From afd5d9b3973b65b15dd6c48f3f403c4809f71b66 Mon Sep 17 00:00:00 2001
-From: Eugeni Dodonov <eugeni.dodonov at intel.com>
-Date: Wed, 6 Jun 2012 11:59:06 -0300
-Subject: [PATCH 05/67] char/agp: add another Ironlake host bridge
-
-commit 67384fe3fd450536342330f684ea1f7dcaef8130 upstream.
-
-This seems to come on Gigabyte H55M-S2V and was discovered through the
-https://bugs.freedesktop.org/show_bug.cgi?id=50381 debugging.
-
-Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=50381
-Signed-off-by: Eugeni Dodonov <eugeni.dodonov at intel.com>
-Signed-off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/char/agp/intel-agp.c | 1 +
- drivers/char/agp/intel-agp.h | 1 +
- 2 files changed, 2 insertions(+)
-
-diff --git a/drivers/char/agp/intel-agp.c b/drivers/char/agp/intel-agp.c
-index b427711..58b49d1 100644
---- a/drivers/char/agp/intel-agp.c
-+++ b/drivers/char/agp/intel-agp.c
-@@ -897,6 +897,7 @@ static struct pci_device_id agp_intel_pci_table[] = {
- ID(PCI_DEVICE_ID_INTEL_B43_HB),
- ID(PCI_DEVICE_ID_INTEL_B43_1_HB),
- ID(PCI_DEVICE_ID_INTEL_IRONLAKE_D_HB),
-+ ID(PCI_DEVICE_ID_INTEL_IRONLAKE_D2_HB),
- ID(PCI_DEVICE_ID_INTEL_IRONLAKE_M_HB),
- ID(PCI_DEVICE_ID_INTEL_IRONLAKE_MA_HB),
- ID(PCI_DEVICE_ID_INTEL_IRONLAKE_MC2_HB),
-diff --git a/drivers/char/agp/intel-agp.h b/drivers/char/agp/intel-agp.h
-index 5da67f1..6f24604 100644
---- a/drivers/char/agp/intel-agp.h
-+++ b/drivers/char/agp/intel-agp.h
-@@ -211,6 +211,7 @@
- #define PCI_DEVICE_ID_INTEL_G41_HB 0x2E30
- #define PCI_DEVICE_ID_INTEL_G41_IG 0x2E32
- #define PCI_DEVICE_ID_INTEL_IRONLAKE_D_HB 0x0040
-+#define PCI_DEVICE_ID_INTEL_IRONLAKE_D2_HB 0x0069
- #define PCI_DEVICE_ID_INTEL_IRONLAKE_D_IG 0x0042
- #define PCI_DEVICE_ID_INTEL_IRONLAKE_M_HB 0x0044
- #define PCI_DEVICE_ID_INTEL_IRONLAKE_MA_HB 0x0062
---
-1.7.9.5
-
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
deleted file mode 100644
index 26dc10f..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0006-x86-uv-Fix-UV2-BAU-legacy-mode.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From ccfbdd3321d88685a0c3a2f69838a7a4706e32ef Mon Sep 17 00:00:00 2001
-From: Cliff Wickman <cpw at sgi.com>
-Date: Thu, 7 Jun 2012 08:31:40 -0500
-Subject: [PATCH 06/67] x86/uv: Fix UV2 BAU legacy mode
-
-commit d5d2d2eea84b0d8450b082edbc3dbde41fb8bfd8 upstream.
-
-The SGI Altix UV2 BAU (Broadcast Assist Unit) as used for
-tlb-shootdown (selective broadcast mode) always uses UV2
-broadcast descriptor format. There is no need to clear the
-'legacy' (UV1) mode, because the hardware always uses UV2 mode
-for selective broadcast.
-
-But the BIOS uses general broadcast and legacy mode, and the
-hardware pays attention to the legacy mode bit for general
-broadcast. So the kernel must not clear that mode bit.
-
-Signed-off-by: Cliff Wickman <cpw at sgi.com>
-Link: http://lkml.kernel.org/r/E1SccoO-0002Lh-Cb@eag09.americas.sgi.com
-Signed-off-by: Ingo Molnar <mingo at kernel.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/x86/include/asm/uv/uv_bau.h | 1 -
- arch/x86/platform/uv/tlb_uv.c | 1 -
- 2 files changed, 2 deletions(-)
-
-diff --git a/arch/x86/include/asm/uv/uv_bau.h b/arch/x86/include/asm/uv/uv_bau.h
-index 1b82f7e..679229f 100644
---- a/arch/x86/include/asm/uv/uv_bau.h
-+++ b/arch/x86/include/asm/uv/uv_bau.h
-@@ -149,7 +149,6 @@
- /* 4 bits of software ack period */
- #define UV2_ACK_MASK 0x7UL
- #define UV2_ACK_UNITS_SHFT 3
--#define UV2_LEG_SHFT UV2H_LB_BAU_MISC_CONTROL_USE_LEGACY_DESCRIPTOR_FORMATS_SHFT
- #define UV2_EXT_SHFT UV2H_LB_BAU_MISC_CONTROL_ENABLE_EXTENDED_SB_STATUS_SHFT
-
- /*
-diff --git a/arch/x86/platform/uv/tlb_uv.c b/arch/x86/platform/uv/tlb_uv.c
-index 81aee5a..29a69550 100644
---- a/arch/x86/platform/uv/tlb_uv.c
-+++ b/arch/x86/platform/uv/tlb_uv.c
-@@ -1304,7 +1304,6 @@ static void __init enable_timeouts(void)
- */
- mmr_image |= (1L << SOFTACK_MSHIFT);
- if (is_uv2_hub()) {
-- mmr_image &= ~(1L << UV2_LEG_SHFT);
- mmr_image |= (1L << UV2_EXT_SHFT);
- }
- write_mmr_misc_control(pnode, mmr_image);
---
-1.7.9.5
-
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
deleted file mode 100644
index 3076ce9..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0007-powerpc-Fix-kernel-panic-during-kernel-module-load.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-From 5c6f8c50fe40cec7015a6bfa9762bf76d52211d6 Mon Sep 17 00:00:00 2001
-From: Steffen Rumler <steffen.rumler.ext at nsn.com>
-Date: Wed, 6 Jun 2012 16:37:17 +0200
-Subject: [PATCH 07/67] powerpc: Fix kernel panic during kernel module load
-
-commit 3c75296562f43e6fbc6cddd3de948a7b3e4e9bcf upstream.
-
-This fixes a problem which can causes kernel oopses while loading
-a kernel module.
-
-According to the PowerPC EABI specification, GPR r11 is assigned
-the dedicated function to point to the previous stack frame.
-In the powerpc-specific kernel module loader, do_plt_call()
-(in arch/powerpc/kernel/module_32.c), GPR r11 is also used
-to generate trampoline code.
-
-This combination crashes the kernel, in the case where the compiler
-chooses to use a helper function for saving GPRs on entry, and the
-module loader has placed the .init.text section far away from the
-.text section, meaning that it has to generate a trampoline for
-functions in the .init.text section to call the GPR save helper.
-Because the trampoline trashes r11, references to the stack frame
-using r11 can cause an oops.
-
-The fix just uses GPR r12 instead of GPR r11 for generating the
-trampoline code. According to the statements from Freescale, this is
-safe from an EABI perspective.
-
-I've tested the fix for kernel 2.6.33 on MPC8541.
-
-Signed-off-by: Steffen Rumler <steffen.rumler.ext at nsn.com>
-[paulus at samba.org: reworded the description]
-Signed-off-by: Paul Mackerras <paulus at samba.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/powerpc/kernel/module_32.c | 11 +++++------
- 1 file changed, 5 insertions(+), 6 deletions(-)
-
-diff --git a/arch/powerpc/kernel/module_32.c b/arch/powerpc/kernel/module_32.c
-index 0b6d796..2e3200c 100644
---- a/arch/powerpc/kernel/module_32.c
-+++ b/arch/powerpc/kernel/module_32.c
-@@ -176,8 +176,8 @@ int module_frob_arch_sections(Elf32_Ehdr *hdr,
-
- static inline int entry_matches(struct ppc_plt_entry *entry, Elf32_Addr val)
- {
-- if (entry->jump[0] == 0x3d600000 + ((val + 0x8000) >> 16)
-- && entry->jump[1] == 0x396b0000 + (val & 0xffff))
-+ if (entry->jump[0] == 0x3d800000 + ((val + 0x8000) >> 16)
-+ && entry->jump[1] == 0x398c0000 + (val & 0xffff))
- return 1;
- return 0;
- }
-@@ -204,10 +204,9 @@ static uint32_t do_plt_call(void *location,
- entry++;
- }
-
-- /* Stolen from Paul Mackerras as well... */
-- entry->jump[0] = 0x3d600000+((val+0x8000)>>16); /* lis r11,sym at ha */
-- entry->jump[1] = 0x396b0000 + (val&0xffff); /* addi r11,r11,sym at l*/
-- entry->jump[2] = 0x7d6903a6; /* mtctr r11 */
-+ entry->jump[0] = 0x3d800000+((val+0x8000)>>16); /* lis r12,sym at ha */
-+ entry->jump[1] = 0x398c0000 + (val&0xffff); /* addi r12,r12,sym at l*/
-+ entry->jump[2] = 0x7d8903a6; /* mtctr r12 */
- entry->jump[3] = 0x4e800420; /* bctr */
-
- DEBUGP("Initialized plt for 0x%x at %p\n", val, entry);
---
-1.7.9.5
-
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
deleted file mode 100644
index 4b3559b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0008-drm-nouveau-determine-a-value-for-display_info.bpc-i.patch
+++ /dev/null
@@ -1,81 +0,0 @@
-From ac9d749e3f0fcf7e8ce73cf00cf3a7d91debdc89 Mon Sep 17 00:00:00 2001
-From: Ben Skeggs <bskeggs at redhat.com>
-Date: Mon, 17 Oct 2011 10:24:49 +1000
-Subject: [PATCH 08/67] drm/nouveau: determine a value for display_info.bpc if
- edid doesn't
-
-commit 6322175530c89ab719cea28202f96a3660491727 upstream.
-
-Signed-off-by: Ben Skeggs <bskeggs at redhat.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpu/drm/nouveau/nouveau_connector.c | 46 +++++++++++++++++++++++++++
- 1 file changed, 46 insertions(+)
-
-diff --git a/drivers/gpu/drm/nouveau/nouveau_connector.c b/drivers/gpu/drm/nouveau/nouveau_connector.c
-index cea6696..e2c50d8 100644
---- a/drivers/gpu/drm/nouveau/nouveau_connector.c
-+++ b/drivers/gpu/drm/nouveau/nouveau_connector.c
-@@ -602,6 +602,46 @@ nouveau_connector_scaler_modes_add(struct drm_connector *connector)
- return modes;
- }
-
-+static void
-+nouveau_connector_detect_depth(struct drm_connector *connector)
-+{
-+ struct drm_nouveau_private *dev_priv = connector->dev->dev_private;
-+ struct nouveau_connector *nv_connector = nouveau_connector(connector);
-+ struct nouveau_encoder *nv_encoder = nv_connector->detected_encoder;
-+ struct nvbios *bios = &dev_priv->vbios;
-+ struct drm_display_mode *mode = nv_connector->native_mode;
-+ bool duallink;
-+
-+ /* if the edid is feeling nice enough to provide this info, use it */
-+ if (nv_connector->edid && connector->display_info.bpc)
-+ return;
-+
-+ /* if not, we're out of options unless we're LVDS, default to 6bpc */
-+ connector->display_info.bpc = 6;
-+ if (nv_encoder->dcb->type != OUTPUT_LVDS)
-+ return;
-+
-+ /* LVDS: panel straps */
-+ if (bios->fp_no_ddc) {
-+ if (bios->fp.if_is_24bit)
-+ connector->display_info.bpc = 8;
-+ return;
-+ }
-+
-+ /* LVDS: DDC panel, need to first determine the number of links to
-+ * know which if_is_24bit flag to check...
-+ */
-+ if (nv_connector->edid &&
-+ nv_connector->dcb->type == DCB_CONNECTOR_LVDS_SPWG)
-+ duallink = ((u8 *)nv_connector->edid)[121] == 2;
-+ else
-+ duallink = mode->clock >= bios->fp.duallink_transition_clk;
-+
-+ if ((!duallink && (bios->fp.strapless_is_24bit & 1)) ||
-+ ( duallink && (bios->fp.strapless_is_24bit & 2)))
-+ connector->display_info.bpc = 8;
-+}
-+
- static int
- nouveau_connector_get_modes(struct drm_connector *connector)
- {
-@@ -646,6 +686,12 @@ nouveau_connector_get_modes(struct drm_connector *connector)
- ret = 1;
- }
-
-+ /* Attempt to determine display colour depth, this has to happen after
-+ * we've determined the "native" mode for LVDS, as the VBIOS tables
-+ * require us to compare against a pixel clock in some cases..
-+ */
-+ nouveau_connector_detect_depth(connector);
-+
- if (nv_encoder->dcb->type == OUTPUT_TV)
- ret = get_slave_funcs(encoder)->get_modes(encoder, connector);
-
---
-1.7.9.5
-
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
deleted file mode 100644
index eeb07d1..0000000
--- 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
+++ /dev/null
@@ -1,42 +0,0 @@
-From 672b73575b5fb47166e255cc9a374b858d5f59da Mon Sep 17 00:00:00 2001
-From: Ben Skeggs <bskeggs at redhat.com>
-Date: Sat, 24 Mar 2012 16:26:13 +1000
-Subject: [PATCH 09/67] drm/nouveau: default to 8bpc for non-LVDS panels if
- EDID isn't useful
-
-commit c8435362f2211086b34ce871fa9c3fcc7ca79ff9 upstream.
-
-A few reports of bad behaviour since the autodetection defaulted to 6bpc,
-lets fix this.
-
-Signed-off-by: Ben Skeggs <bskeggs at redhat.com>
-Signed-off-by: Dave Airlie <airlied at redhat.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpu/drm/nouveau/nouveau_connector.c | 9 ++++++---
- 1 file changed, 6 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/gpu/drm/nouveau/nouveau_connector.c b/drivers/gpu/drm/nouveau/nouveau_connector.c
-index e2c50d8..eeaa8ca 100644
---- a/drivers/gpu/drm/nouveau/nouveau_connector.c
-+++ b/drivers/gpu/drm/nouveau/nouveau_connector.c
-@@ -616,10 +616,13 @@ nouveau_connector_detect_depth(struct drm_connector *connector)
- if (nv_connector->edid && connector->display_info.bpc)
- return;
-
-- /* if not, we're out of options unless we're LVDS, default to 6bpc */
-- connector->display_info.bpc = 6;
-- if (nv_encoder->dcb->type != OUTPUT_LVDS)
-+ /* if not, we're out of options unless we're LVDS, default to 8bpc */
-+ if (nv_encoder->dcb->type != OUTPUT_LVDS) {
-+ connector->display_info.bpc = 8;
- return;
-+ }
-+
-+ connector->display_info.bpc = 6;
-
- /* LVDS: panel straps */
- if (bios->fp_no_ddc) {
---
-1.7.9.5
-
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
deleted file mode 100644
index f9a2041..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0010-drm-nouveau-disp-fix-dithering-not-being-enabled-on-.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 1c16b668a8c284025dc8c639a1b760eccaed3864 Mon Sep 17 00:00:00 2001
-From: Ben Skeggs <bskeggs at redhat.com>
-Date: Sat, 5 May 2012 00:39:21 +1000
-Subject: [PATCH 10/67] drm/nouveau/disp: fix dithering not being enabled on
- some eDP macbooks
-
-commit a6a17859f1bdf607650ee055101f54c5f207762b upstream.
-
-Signed-off-by: Ben Skeggs <bskeggs at redhat.com>
-[Maarten Lankhorst backported to 3.2,
- changing nv_connector->type to nv_connector->dcb->type]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpu/drm/nouveau/nouveau_connector.c | 8 +++++++-
- 1 file changed, 7 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/gpu/drm/nouveau/nouveau_connector.c b/drivers/gpu/drm/nouveau/nouveau_connector.c
-index eeaa8ca..1e72db5 100644
---- a/drivers/gpu/drm/nouveau/nouveau_connector.c
-+++ b/drivers/gpu/drm/nouveau/nouveau_connector.c
-@@ -616,7 +616,13 @@ nouveau_connector_detect_depth(struct drm_connector *connector)
- if (nv_connector->edid && connector->display_info.bpc)
- return;
-
-- /* if not, we're out of options unless we're LVDS, default to 8bpc */
-+ /* EDID 1.4 is *supposed* to be supported on eDP, but, Apple... */
-+ if (nv_connector->dcb->type == DCB_CONNECTOR_eDP) {
-+ connector->display_info.bpc = 6;
-+ return;
-+ }
-+
-+ /* we're out of options unless we're LVDS, default to 8bpc */
- if (nv_encoder->dcb->type != OUTPUT_LVDS) {
- connector->display_info.bpc = 8;
- return;
---
-1.7.9.5
-
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
deleted file mode 100644
index 041098a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0011-fuse-fix-stat-call-on-32-bit-platforms.patch
+++ /dev/null
@@ -1,103 +0,0 @@
-From 16bebb9a3715d7d06a3bcc4b4ec1c1209251d494 Mon Sep 17 00:00:00 2001
-From: Pavel Shilovsky <piastry at etersoft.ru>
-Date: Thu, 10 May 2012 19:49:38 +0400
-Subject: [PATCH 11/67] fuse: fix stat call on 32 bit platforms
-
-commit 45c72cd73c788dd18c8113d4a404d6b4a01decf1 upstream.
-
-Now we store attr->ino at inode->i_ino, return attr->ino at the
-first time and then return inode->i_ino if the attribute timeout
-isn't expired. That's wrong on 32 bit platforms because attr->ino
-is 64 bit and inode->i_ino is 32 bit in this case.
-
-Fix this by saving 64 bit ino in fuse_inode structure and returning
-it every time we call getattr. Also squash attr->ino into inode->i_ino
-explicitly.
-
-Signed-off-by: Pavel Shilovsky <piastry at etersoft.ru>
-Signed-off-by: Miklos Szeredi <mszeredi at suse.cz>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/fuse/dir.c | 1 +
- fs/fuse/fuse_i.h | 3 +++
- fs/fuse/inode.c | 17 ++++++++++++++++-
- 3 files changed, 20 insertions(+), 1 deletion(-)
-
-diff --git a/fs/fuse/dir.c b/fs/fuse/dir.c
-index 9f63e49..5ef7afb 100644
---- a/fs/fuse/dir.c
-+++ b/fs/fuse/dir.c
-@@ -858,6 +858,7 @@ int fuse_update_attributes(struct inode *inode, struct kstat *stat,
- if (stat) {
- generic_fillattr(inode, stat);
- stat->mode = fi->orig_i_mode;
-+ stat->ino = fi->orig_ino;
- }
- }
-
-diff --git a/fs/fuse/fuse_i.h b/fs/fuse/fuse_i.h
-index cf6db0a..89c4a58 100644
---- a/fs/fuse/fuse_i.h
-+++ b/fs/fuse/fuse_i.h
-@@ -82,6 +82,9 @@ struct fuse_inode {
- preserve the original mode */
- mode_t orig_i_mode;
-
-+ /** 64 bit inode number */
-+ u64 orig_ino;
-+
- /** Version of last attribute change */
- u64 attr_version;
-
-diff --git a/fs/fuse/inode.c b/fs/fuse/inode.c
-index aa83109..1f82d95 100644
---- a/fs/fuse/inode.c
-+++ b/fs/fuse/inode.c
-@@ -91,6 +91,7 @@ static struct inode *fuse_alloc_inode(struct super_block *sb)
- fi->nlookup = 0;
- fi->attr_version = 0;
- fi->writectr = 0;
-+ fi->orig_ino = 0;
- INIT_LIST_HEAD(&fi->write_files);
- INIT_LIST_HEAD(&fi->queued_writes);
- INIT_LIST_HEAD(&fi->writepages);
-@@ -140,6 +141,18 @@ static int fuse_remount_fs(struct super_block *sb, int *flags, char *data)
- return 0;
- }
-
-+/*
-+ * ino_t is 32-bits on 32-bit arch. We have to squash the 64-bit value down
-+ * so that it will fit.
-+ */
-+static ino_t fuse_squash_ino(u64 ino64)
-+{
-+ ino_t ino = (ino_t) ino64;
-+ if (sizeof(ino_t) < sizeof(u64))
-+ ino ^= ino64 >> (sizeof(u64) - sizeof(ino_t)) * 8;
-+ return ino;
-+}
-+
- void fuse_change_attributes_common(struct inode *inode, struct fuse_attr *attr,
- u64 attr_valid)
- {
-@@ -149,7 +162,7 @@ void fuse_change_attributes_common(struct inode *inode, struct fuse_attr *attr,
- fi->attr_version = ++fc->attr_version;
- fi->i_time = attr_valid;
-
-- inode->i_ino = attr->ino;
-+ inode->i_ino = fuse_squash_ino(attr->ino);
- inode->i_mode = (inode->i_mode & S_IFMT) | (attr->mode & 07777);
- set_nlink(inode, attr->nlink);
- inode->i_uid = attr->uid;
-@@ -175,6 +188,8 @@ void fuse_change_attributes_common(struct inode *inode, struct fuse_attr *attr,
- fi->orig_i_mode = inode->i_mode;
- if (!(fc->flags & FUSE_DEFAULT_PERMISSIONS))
- inode->i_mode &= ~S_ISVTX;
-+
-+ fi->orig_ino = attr->ino;
- }
-
- void fuse_change_attributes(struct inode *inode, struct fuse_attr *attr,
---
-1.7.9.5
-
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
deleted file mode 100644
index 29c6318..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0012-x86-MCE-AMD-Make-APIC-LVT-thresholding-interrupt-opt.patch
+++ /dev/null
@@ -1,146 +0,0 @@
-From 558e69f643c0c8492df4bb6898cbf3caf3e1e160 Mon Sep 17 00:00:00 2001
-From: Borislav Petkov <borislav.petkov at amd.com>
-Date: Sun, 10 Jun 2012 00:50:15 +0900
-Subject: [PATCH 12/67] x86, MCE, AMD: Make APIC LVT thresholding interrupt
- optional
-
-commit f227d4306cf30e1d5b6f231e8ef9006c34f3d186 upstream.
-
-Currently, the APIC LVT interrupt for error thresholding is implicitly
-enabled. However, there are models in the F15h range which do not enable
-it. Make the code machinery which sets up the APIC interrupt support
-an optional setting and add an ->interrupt_capable member to the bank
-representation mirroring that capability and enable the interrupt offset
-programming only if it is true.
-
-Simplify code and fixup comment style while at it.
-
-This patch is for stable kernels v3.0 to v3.2.
-
-Signed-off-by: Borislav Petkov <borislav.petkov at amd.com>
-Signed-off-by: Robert Richter <robert.richter at amd.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/x86/kernel/cpu/mcheck/mce_amd.c | 55 +++++++++++++++++++++++++++-------
- 1 file changed, 44 insertions(+), 11 deletions(-)
-
-diff --git a/arch/x86/kernel/cpu/mcheck/mce_amd.c b/arch/x86/kernel/cpu/mcheck/mce_amd.c
-index f547421..445a61c 100644
---- a/arch/x86/kernel/cpu/mcheck/mce_amd.c
-+++ b/arch/x86/kernel/cpu/mcheck/mce_amd.c
-@@ -52,6 +52,7 @@ struct threshold_block {
- unsigned int cpu;
- u32 address;
- u16 interrupt_enable;
-+ bool interrupt_capable;
- u16 threshold_limit;
- struct kobject kobj;
- struct list_head miscj;
-@@ -86,6 +87,21 @@ struct thresh_restart {
- u16 old_limit;
- };
-
-+static bool lvt_interrupt_supported(unsigned int bank, u32 msr_high_bits)
-+{
-+ /*
-+ * bank 4 supports APIC LVT interrupts implicitly since forever.
-+ */
-+ if (bank == 4)
-+ return true;
-+
-+ /*
-+ * IntP: interrupt present; if this bit is set, the thresholding
-+ * bank can generate APIC LVT interrupts
-+ */
-+ return msr_high_bits & BIT(28);
-+}
-+
- static int lvt_off_valid(struct threshold_block *b, int apic, u32 lo, u32 hi)
- {
- int msr = (hi & MASK_LVTOFF_HI) >> 20;
-@@ -107,8 +123,10 @@ static int lvt_off_valid(struct threshold_block *b, int apic, u32 lo, u32 hi)
- return 1;
- };
-
--/* must be called with correct cpu affinity */
--/* Called via smp_call_function_single() */
-+/*
-+ * Called via smp_call_function_single(), must be called with correct
-+ * cpu affinity.
-+ */
- static void threshold_restart_bank(void *_tr)
- {
- struct thresh_restart *tr = _tr;
-@@ -131,6 +149,12 @@ static void threshold_restart_bank(void *_tr)
- (new_count & THRESHOLD_MAX);
- }
-
-+ /* clear IntType */
-+ hi &= ~MASK_INT_TYPE_HI;
-+
-+ if (!tr->b->interrupt_capable)
-+ goto done;
-+
- if (tr->set_lvt_off) {
- if (lvt_off_valid(tr->b, tr->lvt_off, lo, hi)) {
- /* set new lvt offset */
-@@ -139,9 +163,10 @@ static void threshold_restart_bank(void *_tr)
- }
- }
-
-- tr->b->interrupt_enable ?
-- (hi = (hi & ~MASK_INT_TYPE_HI) | INT_TYPE_APIC) :
-- (hi &= ~MASK_INT_TYPE_HI);
-+ if (tr->b->interrupt_enable)
-+ hi |= INT_TYPE_APIC;
-+
-+ done:
-
- hi |= MASK_COUNT_EN_HI;
- wrmsr(tr->b->address, lo, hi);
-@@ -206,14 +231,18 @@ void mce_amd_feature_init(struct cpuinfo_x86 *c)
- if (shared_bank[bank] && c->cpu_core_id)
- break;
- #endif
-- offset = setup_APIC_mce(offset,
-- (high & MASK_LVTOFF_HI) >> 20);
-
- memset(&b, 0, sizeof(b));
-- b.cpu = cpu;
-- b.bank = bank;
-- b.block = block;
-- b.address = address;
-+ b.cpu = cpu;
-+ b.bank = bank;
-+ b.block = block;
-+ b.address = address;
-+ b.interrupt_capable = lvt_interrupt_supported(bank, high);
-+
-+ if (b.interrupt_capable) {
-+ int new = (high & MASK_LVTOFF_HI) >> 20;
-+ offset = setup_APIC_mce(offset, new);
-+ }
-
- mce_threshold_block_init(&b, offset);
- mce_threshold_vector = amd_threshold_interrupt;
-@@ -313,6 +342,9 @@ store_interrupt_enable(struct threshold_block *b, const char *buf, size_t size)
- struct thresh_restart tr;
- unsigned long new;
-
-+ if (!b->interrupt_capable)
-+ return -EINVAL;
-+
- if (strict_strtoul(buf, 0, &new) < 0)
- return -EINVAL;
-
-@@ -471,6 +503,7 @@ static __cpuinit int allocate_threshold_blocks(unsigned int cpu,
- b->cpu = cpu;
- b->address = address;
- b->interrupt_enable = 0;
-+ b->interrupt_capable = lvt_interrupt_supported(bank, high);
- b->threshold_limit = THRESHOLD_MAX;
-
- INIT_LIST_HEAD(&b->miscj);
---
-1.7.9.5
-
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
deleted file mode 100644
index e453609..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0013-x86-amd-Re-enable-CPU-topology-extensions-in-case-BI.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From ab8b86f7a27c50219b82e9dfc92a21d8715403bf Mon Sep 17 00:00:00 2001
-From: Andreas Herrmann <andreas.herrmann3 at amd.com>
-Date: Tue, 3 Apr 2012 12:13:07 +0200
-Subject: [PATCH 13/67] x86/amd: Re-enable CPU topology extensions in case
- BIOS has disabled it
-
-BIOS will switch off the corresponding feature flag on family
-15h models 10h-1fh non-desktop CPUs.
-
-The topology extension CPUID leafs are required to detect which
-cores belong to the same compute unit. (thread siblings mask is
-set accordingly and also correct information about L1i and L2
-cache sharing depends on this).
-
-W/o this patch we wouldn't see which cores belong to the same
-compute unit and also cache sharing information for L1i and L2
-would be incorrect on such systems.
-
-Signed-off-by: Andreas Herrmann <andreas.herrmann3 at amd.com>
-Signed-off-by: Ingo Molnar <mingo at kernel.org>
-(cherry picked from commit f7f286a910221ae18b21c18d9d0f4cd88965829f)
-
-Signed-off-by: Tim Gardner <tim.gardner at canonical.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/x86/kernel/cpu/amd.c | 18 ++++++++++++++++++
- 1 file changed, 18 insertions(+)
-
-diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c
-index 0bab2b1..3524e1f 100644
---- a/arch/x86/kernel/cpu/amd.c
-+++ b/arch/x86/kernel/cpu/amd.c
-@@ -571,6 +571,24 @@ static void __cpuinit init_amd(struct cpuinfo_x86 *c)
- }
- }
-
-+ /* re-enable TopologyExtensions if switched off by BIOS */
-+ if ((c->x86 == 0x15) &&
-+ (c->x86_model >= 0x10) && (c->x86_model <= 0x1f) &&
-+ !cpu_has(c, X86_FEATURE_TOPOEXT)) {
-+ u64 val;
-+
-+ if (!rdmsrl_amd_safe(0xc0011005, &val)) {
-+ val |= 1ULL << 54;
-+ wrmsrl_amd_safe(0xc0011005, val);
-+ rdmsrl(0xc0011005, val);
-+ if (val & (1ULL << 54)) {
-+ set_cpu_cap(c, X86_FEATURE_TOPOEXT);
-+ printk(KERN_INFO FW_INFO "CPU: Re-enabling "
-+ "disabled Topology Extensions Support\n");
-+ }
-+ }
-+ }
-+
- cpu_detect_cache_sizes(c);
-
- /* Multi core CPU? */
---
-1.7.9.5
-
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
deleted file mode 100644
index cf74ee5..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0014-hwmon-fam15h_power-Increase-output-resolution.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From e88182a80fd1abfed0a667c28fd70632c728b9b0 Mon Sep 17 00:00:00 2001
-From: Andre Przywara <andre.przywara at amd.com>
-Date: Fri, 23 Mar 2012 10:02:17 +0100
-Subject: [PATCH 14/67] hwmon: (fam15h_power) Increase output resolution
-
-On high CPU load the accumulating values in the running_avg_cap
-register are very low (below 10), so averaging them too early leads
-to unnecessary poor output resolution. Since we pretend to output
-micro-Watt we better keep all the bits we have as long as possible.
-
-Signed-off-by: Andre Przywara <andre.przywara at amd.com>
-Signed-off-by: Andreas Herrmann <andreas.herrmann3 at amd.com>
-Acked-by: Guenter Roeck <guenter.roeck at ericsson.com>
-Signed-off-by: Jean Delvare <khali at linux-fr.org>
-(cherry picked from commit 941a956b0e387b21f385f486c34ef67576775cfc)
-
-Signed-off-by: Tim Gardner <tim.gardner at canonical.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/hwmon/fam15h_power.c | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/hwmon/fam15h_power.c b/drivers/hwmon/fam15h_power.c
-index 9a4c3ab..e8e18ca 100644
---- a/drivers/hwmon/fam15h_power.c
-+++ b/drivers/hwmon/fam15h_power.c
-@@ -61,14 +61,14 @@ static ssize_t show_power(struct device *dev,
- REG_TDP_RUNNING_AVERAGE, &val);
- running_avg_capture = (val >> 4) & 0x3fffff;
- running_avg_capture = sign_extend32(running_avg_capture, 21);
-- running_avg_range = val & 0xf;
-+ running_avg_range = (val & 0xf) + 1;
-
- pci_bus_read_config_dword(f4->bus, PCI_DEVFN(PCI_SLOT(f4->devfn), 5),
- REG_TDP_LIMIT3, &val);
-
- tdp_limit = val >> 16;
-- curr_pwr_watts = tdp_limit + data->base_tdp -
-- (s32)(running_avg_capture >> (running_avg_range + 1));
-+ curr_pwr_watts = (tdp_limit + data->base_tdp) << running_avg_range;
-+ curr_pwr_watts -= running_avg_capture;
- curr_pwr_watts *= data->tdp_to_watts;
-
- /*
-@@ -78,7 +78,7 @@ static ssize_t show_power(struct device *dev,
- * scaling factor 1/(2^16). For conversion we use
- * (10^6)/(2^16) = 15625/(2^10)
- */
-- curr_pwr_watts = (curr_pwr_watts * 15625) >> 10;
-+ curr_pwr_watts = (curr_pwr_watts * 15625) >> (10 + running_avg_range);
- return sprintf(buf, "%u\n", (unsigned int) curr_pwr_watts);
- }
- static DEVICE_ATTR(power1_input, S_IRUGO, show_power, NULL);
---
-1.7.9.5
-
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
deleted file mode 100644
index ea7a120..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0015-sched-Fix-the-relax_domain_level-boot-parameter.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-From 701bbc54cf5b05f981bd595a0662317d4d7576fc Mon Sep 17 00:00:00 2001
-From: Dimitri Sivanich <sivanich at sgi.com>
-Date: Tue, 5 Jun 2012 13:44:36 -0500
-Subject: [PATCH 15/67] sched: Fix the relax_domain_level boot parameter
-
-commit a841f8cef4bb124f0f5563314d0beaf2e1249d72 upstream.
-
-It does not get processed because sched_domain_level_max is 0 at the
-time that setup_relax_domain_level() is run.
-
-Simply accept the value as it is, as we don't know the value of
-sched_domain_level_max until sched domain construction is completed.
-
-Fix sched_relax_domain_level in cpuset. The build_sched_domain() routine calls
-the set_domain_attribute() routine prior to setting the sd->level, however,
-the set_domain_attribute() routine relies on the sd->level to decide whether
-idle load balancing will be off/on.
-
-Signed-off-by: Dimitri Sivanich <sivanich at sgi.com>
-Signed-off-by: Peter Zijlstra <a.p.zijlstra at chello.nl>
-Link: http://lkml.kernel.org/r/20120605184436.GA15668@sgi.com
-Signed-off-by: Ingo Molnar <mingo at kernel.org>
-[bwh: Backported to 3.2: adjust the filename]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- kernel/sched.c | 9 +++------
- 1 file changed, 3 insertions(+), 6 deletions(-)
-
-diff --git a/kernel/sched.c b/kernel/sched.c
-index 299f55c..576a27f 100644
---- a/kernel/sched.c
-+++ b/kernel/sched.c
-@@ -7429,11 +7429,8 @@ int sched_domain_level_max;
-
- static int __init setup_relax_domain_level(char *str)
- {
-- unsigned long val;
--
-- val = simple_strtoul(str, NULL, 0);
-- if (val < sched_domain_level_max)
-- default_relax_domain_level = val;
-+ if (kstrtoint(str, 0, &default_relax_domain_level))
-+ pr_warn("Unable to set relax_domain_level\n");
-
- return 1;
- }
-@@ -7636,7 +7633,6 @@ struct sched_domain *build_sched_domain(struct sched_domain_topology_level *tl,
- if (!sd)
- return child;
-
-- set_domain_attribute(sd, attr);
- cpumask_and(sched_domain_span(sd), cpu_map, tl->mask(cpu));
- if (child) {
- sd->level = child->level + 1;
-@@ -7644,6 +7640,7 @@ struct sched_domain *build_sched_domain(struct sched_domain_topology_level *tl,
- child->parent = sd;
- }
- sd->child = child;
-+ set_domain_attribute(sd, attr);
-
- return sd;
- }
---
-1.7.9.5
-
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
deleted file mode 100644
index 01d143e..0000000
--- 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
+++ /dev/null
@@ -1,47 +0,0 @@
-From 9dfeca7b52fe58b2a49b59834a976405a424b622 Mon Sep 17 00:00:00 2001
-From: Emmanuel Grumbach <emmanuel.grumbach at intel.com>
-Date: Wed, 6 Jun 2012 09:13:36 +0200
-Subject: [PATCH 16/67] iwlwifi: don't mess up the SCD when removing a key
-
-commit d6ee27eb13beab94056e0de52d81220058ca2297 upstream.
-
-When we remove a key, we put a key index which was supposed
-to tell the fw that we are actually removing the key. But
-instead the fw took that index as a valid index and messed
-up the SRAM of the device.
-
-This memory corruption on the device mangled the data of
-the SCD. The impact on the user is that SCD queue 2 got
-stuck after having removed keys.
-The message is the log that was printed is:
-
-Queue 2 stuck for 10000ms
-
-This doesn't seem to fix the higher queues that get stuck
-from time to time.
-
-Reviewed-by: Meenakshi Venkataraman <meenakshi.venkataraman at intel.com>
-Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach at intel.com>
-Signed-off-by: Johannes Berg <johannes.berg at intel.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/wireless/iwlwifi/iwl-agn-sta.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-sta.c b/drivers/net/wireless/iwlwifi/iwl-agn-sta.c
-index 5cfb3d1..ccf1524 100644
---- a/drivers/net/wireless/iwlwifi/iwl-agn-sta.c
-+++ b/drivers/net/wireless/iwlwifi/iwl-agn-sta.c
-@@ -1245,7 +1245,7 @@ int iwl_remove_dynamic_key(struct iwl_priv *priv,
- key_flags |= STA_KEY_MULTICAST_MSK;
-
- sta_cmd.key.key_flags = key_flags;
-- sta_cmd.key.key_offset = WEP_INVALID_OFFSET;
-+ sta_cmd.key.key_offset = keyconf->hw_key_idx;
- sta_cmd.sta.modify_mask = STA_MODIFY_KEY_MASK;
- sta_cmd.mode = STA_CONTROL_MODIFY_MSK;
-
---
-1.7.9.5
-
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
deleted file mode 100644
index 24e1bed..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0017-hwrng-atmel-rng-fix-race-condition-leading-to-repeat.patch
+++ /dev/null
@@ -1,85 +0,0 @@
-From 1468193368592ea5ed063093a7f776a19af2a131 Mon Sep 17 00:00:00 2001
-From: Peter Korsgaard <jacmet at sunsite.dk>
-Date: Thu, 31 May 2012 20:53:08 +1000
-Subject: [PATCH 17/67] hwrng: atmel-rng - fix race condition leading to
- repeated bits
-
-commit 121daad8fd1dce63076fa55aaedd5dc3f981b334 upstream.
-
-Data valid gets cleared by reading the ISR (status register) and NOT from
-reading ODATA (data register). A new data word can become available between
-checking ISR and reading ODATA, causing us to reuse the same data word next
-time atmel_trng_read() gets called, if that happens before the following
-data word is ready.
-
-With this fixed, rngtest no longer complains of 'Continous run' errors.
-Before:
-
-rngtest -c 1000 < /dev/hwrng
-rngtest 3
-Copyright (c) 2004 by Henrique de Moraes Holschuh
-This is free software; see the source for copying conditions. There is NO warr.
-
-rngtest: starting FIPS tests...
-rngtest: bits received from input: 20000032
-rngtest: FIPS 140-2 successes: 923
-rngtest: FIPS 140-2 failures: 77
-rngtest: FIPS 140-2(2001-10-10) Monobit: 0
-rngtest: FIPS 140-2(2001-10-10) Poker: 0
-rngtest: FIPS 140-2(2001-10-10) Runs: 1
-rngtest: FIPS 140-2(2001-10-10) Long run: 0
-rngtest: FIPS 140-2(2001-10-10) Continuous run: 76
-rngtest: input channel speed: (min=721.402; avg=46003.510; max=49321.338)Kibitss
-rngtest: FIPS tests speed: (min=11.442; avg=12.714; max=12.801)Mibits/s
-rngtest: Program run time: 1931860 microseconds
-
-After:
-
-rngtest -c 1000 < /dev/hwrng
-rngtest 3
-Copyright (c) 2004 by Henrique de Moraes Holschuh
-This is free software; see the source for copying conditions. There is NO warr.
-
-rngtest: starting FIPS tests...
-rngtest: bits received from input: 20000032
-rngtest: FIPS 140-2 successes: 1000
-rngtest: FIPS 140-2 failures: 0
-rngtest: FIPS 140-2(2001-10-10) Monobit: 0
-rngtest: FIPS 140-2(2001-10-10) Poker: 0
-rngtest: FIPS 140-2(2001-10-10) Runs: 0
-rngtest: FIPS 140-2(2001-10-10) Long run: 0
-rngtest: FIPS 140-2(2001-10-10) Continuous run: 0
-rngtest: input channel speed: (min=777.518; avg=36988.482; max=43115.342)Kibitss
-rngtest: FIPS tests speed: (min=11.951; avg=12.715; max=12.887)Mibits/s
-rngtest: Program run time: 2035543 microseconds
-
-Signed-off-by: Peter Korsgaard <jacmet at sunsite.dk>
-Reported-by: George Pontis <GPontis at z9.com>
-Acked-by: Nicolas Ferre <nicolas.ferre at atmel.com>
-Signed-off-by: Herbert Xu <herbert at gondor.apana.org.au>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/char/hw_random/atmel-rng.c | 7 +++++++
- 1 file changed, 7 insertions(+)
-
-diff --git a/drivers/char/hw_random/atmel-rng.c b/drivers/char/hw_random/atmel-rng.c
-index 241df2e..0477982 100644
---- a/drivers/char/hw_random/atmel-rng.c
-+++ b/drivers/char/hw_random/atmel-rng.c
-@@ -36,6 +36,13 @@ static int atmel_trng_read(struct hwrng *rng, void *buf, size_t max,
- /* data ready? */
- if (readl(trng->base + TRNG_ODATA) & 1) {
- *data = readl(trng->base + TRNG_ODATA);
-+ /*
-+ ensure data ready is only set again AFTER the next data
-+ word is ready in case it got set between checking ISR
-+ and reading ODATA, so we don't risk re-reading the
-+ same word
-+ */
-+ readl(trng->base + TRNG_ISR);
- return 4;
- } else
- return 0;
---
-1.7.9.5
-
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
deleted file mode 100644
index fa13f31..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0018-crypto-aesni-intel-fix-unaligned-cbc-decrypt-for-x86.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From e7814580e8b3d8f81dac54f4919f7f3b75b40c0d Mon Sep 17 00:00:00 2001
-From: Mathias Krause <minipli at googlemail.com>
-Date: Wed, 30 May 2012 01:43:08 +0200
-Subject: [PATCH 18/67] crypto: aesni-intel - fix unaligned cbc decrypt for
- x86-32
-
-commit 7c8d51848a88aafdb68f42b6b650c83485ea2f84 upstream.
-
-The 32 bit variant of cbc(aes) decrypt is using instructions requiring
-128 bit aligned memory locations but fails to ensure this constraint in
-the code. Fix this by loading the data into intermediate registers with
-load unaligned instructions.
-
-This fixes reported general protection faults related to aesni.
-
-References: https://bugzilla.kernel.org/show_bug.cgi?id=43223
-Reported-by: Daniel <garkein at mailueberfall.de>
-Signed-off-by: Mathias Krause <minipli at googlemail.com>
-Signed-off-by: Herbert Xu <herbert at gondor.apana.org.au>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/x86/crypto/aesni-intel_asm.S | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/arch/x86/crypto/aesni-intel_asm.S b/arch/x86/crypto/aesni-intel_asm.S
-index be6d9e3..3470624 100644
---- a/arch/x86/crypto/aesni-intel_asm.S
-+++ b/arch/x86/crypto/aesni-intel_asm.S
-@@ -2460,10 +2460,12 @@ ENTRY(aesni_cbc_dec)
- pxor IN3, STATE4
- movaps IN4, IV
- #else
-- pxor (INP), STATE2
-- pxor 0x10(INP), STATE3
- pxor IN1, STATE4
- movaps IN2, IV
-+ movups (INP), IN1
-+ pxor IN1, STATE2
-+ movups 0x10(INP), IN2
-+ pxor IN2, STATE3
- #endif
- movups STATE1, (OUTP)
- movups STATE2, 0x10(OUTP)
---
-1.7.9.5
-
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
deleted file mode 100644
index 7135b15..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0019-xen-setup-filter-APERFMPERF-cpuid-feature-out.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From 88d89048f346736a57637924307749c8cc782751 Mon Sep 17 00:00:00 2001
-From: Andre Przywara <andre.przywara at amd.com>
-Date: Tue, 29 May 2012 13:07:31 +0200
-Subject: [PATCH 19/67] xen/setup: filter APERFMPERF cpuid feature out
-
-commit 5e626254206a709c6e937f3dda69bf26c7344f6f upstream.
-
-Xen PV kernels allow access to the APERF/MPERF registers to read the
-effective frequency. Access to the MSRs is however redirected to the
-currently scheduled physical CPU, making consecutive read and
-compares unreliable. In addition each rdmsr traps into the hypervisor.
-So to avoid bogus readouts and expensive traps, disable the kernel
-internal feature flag for APERF/MPERF if running under Xen.
-This will
-a) remove the aperfmperf flag from /proc/cpuinfo
-b) not mislead the power scheduler (arch/x86/kernel/cpu/sched.c) to
- use the feature to improve scheduling (by default disabled)
-c) not mislead the cpufreq driver to use the MSRs
-
-This does not cover userland programs which access the MSRs via the
-device file interface, but this will be addressed separately.
-
-Signed-off-by: Andre Przywara <andre.przywara at amd.com>
-Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk at oracle.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/x86/xen/enlighten.c | 8 ++++++++
- 1 file changed, 8 insertions(+)
-
-diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
-index cca659e..44d4393 100644
---- a/arch/x86/xen/enlighten.c
-+++ b/arch/x86/xen/enlighten.c
-@@ -198,6 +198,9 @@ static void __init xen_banner(void)
- xen_feature(XENFEAT_mmu_pt_update_preserve_ad) ? " (preserve-AD)" : "");
- }
-
-+#define CPUID_THERM_POWER_LEAF 6
-+#define APERFMPERF_PRESENT 0
-+
- static __read_mostly unsigned int cpuid_leaf1_edx_mask = ~0;
- static __read_mostly unsigned int cpuid_leaf1_ecx_mask = ~0;
-
-@@ -218,6 +221,11 @@ static void xen_cpuid(unsigned int *ax, unsigned int *bx,
- maskedx = cpuid_leaf1_edx_mask;
- break;
-
-+ case CPUID_THERM_POWER_LEAF:
-+ /* Disabling APERFMPERF for kernel usage */
-+ maskecx = ~(1 << APERFMPERF_PRESENT);
-+ break;
-+
- case 0xb:
- /* Suppress extended topology stuff */
- maskebx = 0;
---
-1.7.9.5
-
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
deleted file mode 100644
index 8d9f08c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0020-NFSv4.1-Fix-a-request-leak-on-the-back-channel.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 11e050e0bcf1f48f656630c0e603752e8d537126 Mon Sep 17 00:00:00 2001
-From: Trond Myklebust <Trond.Myklebust at netapp.com>
-Date: Thu, 31 May 2012 15:26:38 -0400
-Subject: [PATCH 20/67] NFSv4.1: Fix a request leak on the back channel
-
-commit b3b02ae5865c2dcd506322e0fc6def59a042e72f upstream.
-
-If the call to svc_process_common() fails, then the request
-needs to be freed before we can exit bc_svc_process.
-
-Signed-off-by: Trond Myklebust <Trond.Myklebust at netapp.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/sunrpc/svc.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/net/sunrpc/svc.c b/net/sunrpc/svc.c
-index d4ad50e..c80c162 100644
---- a/net/sunrpc/svc.c
-+++ b/net/sunrpc/svc.c
-@@ -1358,7 +1358,8 @@ bc_svc_process(struct svc_serv *serv, struct rpc_rqst *req,
- sizeof(req->rq_snd_buf));
- return bc_send(req);
- } else {
-- /* Nothing to do to drop request */
-+ /* drop request */
-+ xprt_free_bc_request(req);
- return 0;
- }
- }
---
-1.7.9.5
-
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
deleted file mode 100644
index b2ff99b..0000000
--- 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
+++ /dev/null
@@ -1,70 +0,0 @@
-From a17c423f5b57ba5a2c6dc959b6259d07f7d32741 Mon Sep 17 00:00:00 2001
-From: AnilKumar Ch <anilkumar at ti.com>
-Date: Wed, 23 May 2012 17:45:09 +0530
-Subject: [PATCH 21/67] can: c_can: fix "BUG! echo_skb is occupied!" during
- transmit
-
-commit 617caccebe451716df21c069b079d5936ed7b0f3 upstream.
-
-This patch fixes an issue with transmit routine, which causes
-"can_put_echo_skb: BUG! echo_skb is occupied!" message when
-using "cansequence -p" on D_CAN controller.
-
-In c_can driver, while transmitting packets tx_echo flag holds
-the no of can frames put for transmission into the hardware.
-
-As the comment above c_can_do_tx() indicates, if we find any packet
-which is not transmitted then we should stop looking for more.
-In the current implementation this is not taken care of causing the
-said message.
-
-Also, fix the condition used to find if the packet is transmitted
-or not. Current code skips the first tx message object and ends up
-checking one extra invalid object.
-
-While at it, fix the comment on top of c_can_do_tx() to use the
-terminology "packet" instead of "package" since it is more
-standard.
-
-Signed-off-by: AnilKumar Ch <anilkumar at ti.com>
-Acked-by: Wolfgang Grandegger <wg at grandegger.com>
-Signed-off-by: Marc Kleine-Budde <mkl at pengutronix.de>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/can/c_can/c_can.c | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/net/can/c_can/c_can.c b/drivers/net/can/c_can/c_can.c
-index 536bda0..9ac28df 100644
---- a/drivers/net/can/c_can/c_can.c
-+++ b/drivers/net/can/c_can/c_can.c
-@@ -686,7 +686,7 @@ static int c_can_get_berr_counter(const struct net_device *dev,
- *
- * We iterate from priv->tx_echo to priv->tx_next and check if the
- * packet has been transmitted, echo it back to the CAN framework.
-- * If we discover a not yet transmitted package, stop looking for more.
-+ * If we discover a not yet transmitted packet, stop looking for more.
- */
- static void c_can_do_tx(struct net_device *dev)
- {
-@@ -698,7 +698,7 @@ static void c_can_do_tx(struct net_device *dev)
- for (/* nix */; (priv->tx_next - priv->tx_echo) > 0; priv->tx_echo++) {
- msg_obj_no = get_tx_echo_msg_obj(priv);
- val = c_can_read_reg32(priv, &priv->regs->txrqst1);
-- if (!(val & (1 << msg_obj_no))) {
-+ if (!(val & (1 << (msg_obj_no - 1)))) {
- can_get_echo_skb(dev,
- msg_obj_no - C_CAN_MSG_OBJ_TX_FIRST);
- stats->tx_bytes += priv->read_reg(priv,
-@@ -706,6 +706,8 @@ static void c_can_do_tx(struct net_device *dev)
- & IF_MCONT_DLC_MASK;
- stats->tx_packets++;
- c_can_inval_msg_object(dev, 0, msg_obj_no);
-+ } else {
-+ break;
- }
- }
-
---
-1.7.9.5
-
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
deleted file mode 100644
index 34b220e..0000000
--- 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
+++ /dev/null
@@ -1,73 +0,0 @@
-From b030affc0fa9283e4ee79a349f6b41d3217c0dc7 Mon Sep 17 00:00:00 2001
-From: AnilKumar Ch <anilkumar at ti.com>
-Date: Wed, 23 May 2012 17:45:10 +0530
-Subject: [PATCH 22/67] can: c_can: fix an interrupt thrash issue with c_can
- driver
-
-commit 148c87c89e1a8863d3d965179f3ab1a06490569e upstream.
-
-This patch fixes an interrupt thrash issue with c_can driver.
-
-In c_can_isr() function interrupts are disabled and enabled only in
-c_can_poll() function. c_can_isr() & c_can_poll() both read the
-irqstatus flag. However, irqstatus is always read as 0 in c_can_poll()
-because all C_CAN interrupts are disabled in c_can_isr(). This causes
-all interrupts to be re-enabled in c_can_poll() which in turn causes
-another interrupt since the event is not really handled. This keeps
-happening causing a flood of interrupts.
-
-To fix this, read the irqstatus register in isr and use the same cached
-value in the poll function.
-
-Signed-off-by: AnilKumar Ch <anilkumar at ti.com>
-Acked-by: Wolfgang Grandegger <wg at grandegger.com>
-Signed-off-by: Marc Kleine-Budde <mkl at pengutronix.de>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/can/c_can/c_can.c | 7 +++----
- drivers/net/can/c_can/c_can.h | 1 +
- 2 files changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/net/can/c_can/c_can.c b/drivers/net/can/c_can/c_can.c
-index 9ac28df..fa01621 100644
---- a/drivers/net/can/c_can/c_can.c
-+++ b/drivers/net/can/c_can/c_can.c
-@@ -952,7 +952,7 @@ static int c_can_poll(struct napi_struct *napi, int quota)
- struct net_device *dev = napi->dev;
- struct c_can_priv *priv = netdev_priv(dev);
-
-- irqstatus = priv->read_reg(priv, &priv->regs->interrupt);
-+ irqstatus = priv->irqstatus;
- if (!irqstatus)
- goto end;
-
-@@ -1030,12 +1030,11 @@ end:
-
- static irqreturn_t c_can_isr(int irq, void *dev_id)
- {
-- u16 irqstatus;
- struct net_device *dev = (struct net_device *)dev_id;
- struct c_can_priv *priv = netdev_priv(dev);
-
-- irqstatus = priv->read_reg(priv, &priv->regs->interrupt);
-- if (!irqstatus)
-+ priv->irqstatus = priv->read_reg(priv, &priv->regs->interrupt);
-+ if (!priv->irqstatus)
- return IRQ_NONE;
-
- /* disable all interrupts and schedule the NAPI */
-diff --git a/drivers/net/can/c_can/c_can.h b/drivers/net/can/c_can/c_can.h
-index 9b7fbef..5f32d34 100644
---- a/drivers/net/can/c_can/c_can.h
-+++ b/drivers/net/can/c_can/c_can.h
-@@ -76,6 +76,7 @@ struct c_can_priv {
- unsigned int tx_next;
- unsigned int tx_echo;
- void *priv; /* for board-specific data */
-+ u16 irqstatus;
- };
-
- struct net_device *alloc_c_can_dev(void);
---
-1.7.9.5
-
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
deleted file mode 100644
index 8baf6c3..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0023-can-c_can-fix-race-condition-in-c_can_open.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From cf14ce22ab2b0faada7f120865c7970a07a0d06d Mon Sep 17 00:00:00 2001
-From: AnilKumar Ch <anilkumar at ti.com>
-Date: Wed, 23 May 2012 17:45:11 +0530
-Subject: [PATCH 23/67] can: c_can: fix race condition in c_can_open()
-
-commit f461f27a4436dbe691908fe08b867ef888848cc3 upstream.
-
-Fix the issue of C_CAN interrupts getting disabled forever when canconfig
-utility is used multiple times. According to NAPI usage we disable all
-the hardware interrupts in ISR and re-enable them in poll(). Current
-implementation calls napi_enable() after hardware interrupts are enabled.
-If we get any interrupts between these two steps then we do not process
-those interrupts because napi is not enabled. Mostly these interrupts
-come because of STATUS is not 0x7 or ERROR interrupts. If napi_enable()
-happens before HW interrupts enabled then c_can_poll() function will be
-called eventual re-enabling.
-
-This patch moves the napi_enable() call before interrupts enabled.
-
-Signed-off-by: AnilKumar Ch <anilkumar at ti.com>
-Acked-by: Wolfgang Grandegger <wg at grandegger.com>
-Signed-off-by: Marc Kleine-Budde <mkl at pengutronix.de>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/can/c_can/c_can.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/net/can/c_can/c_can.c b/drivers/net/can/c_can/c_can.c
-index fa01621..8dc84d6 100644
---- a/drivers/net/can/c_can/c_can.c
-+++ b/drivers/net/can/c_can/c_can.c
-@@ -1064,10 +1064,11 @@ static int c_can_open(struct net_device *dev)
- goto exit_irq_fail;
- }
-
-+ napi_enable(&priv->napi);
-+
- /* start the c_can controller */
- c_can_start(dev);
-
-- napi_enable(&priv->napi);
- netif_start_queue(dev);
-
- return 0;
---
-1.7.9.5
-
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
deleted file mode 100644
index 6714a86..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0024-ARM-i.MX53-Fix-PLL4-base-address.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 8b306e31b138a75a790c1f78f911714fee071ab8 Mon Sep 17 00:00:00 2001
-From: Sascha Hauer <s.hauer at pengutronix.de>
-Date: Mon, 4 Jun 2012 14:58:07 +0200
-Subject: [PATCH 24/67] ARM i.MX53: Fix PLL4 base address
-
-commit cdd781ab1906d039c2a93078385645d2d5af8491 upstream.
-
-MX53_DPLL4_BASE accidently returned the base address of PLL3.
-Fix this.
-
-Signed-off-by: Sascha Hauer <s.hauer at pengutronix.de>
-[bwh: Backported to 3.2: adjust filename]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/arm/mach-mx5/crm_regs.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/arch/arm/mach-mx5/crm_regs.h b/arch/arm/mach-mx5/crm_regs.h
-index 5e11ba7..5e3f1f0 100644
---- a/arch/arm/mach-mx5/crm_regs.h
-+++ b/arch/arm/mach-mx5/crm_regs.h
-@@ -23,7 +23,7 @@
- #define MX53_DPLL1_BASE MX53_IO_ADDRESS(MX53_PLL1_BASE_ADDR)
- #define MX53_DPLL2_BASE MX53_IO_ADDRESS(MX53_PLL2_BASE_ADDR)
- #define MX53_DPLL3_BASE MX53_IO_ADDRESS(MX53_PLL3_BASE_ADDR)
--#define MX53_DPLL4_BASE MX53_IO_ADDRESS(MX53_PLL3_BASE_ADDR)
-+#define MX53_DPLL4_BASE MX53_IO_ADDRESS(MX53_PLL4_BASE_ADDR)
-
- /* PLL Register Offsets */
- #define MXC_PLL_DP_CTL 0x00
---
-1.7.9.5
-
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
deleted file mode 100644
index d7a896e..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0025-usb-musb_gadget-fix-crash-caused-by-dangling-pointer.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From cb8353a20faf8ec806f2e04848e1a8d2ba17194c Mon Sep 17 00:00:00 2001
-From: Grazvydas Ignotas <notasas at gmail.com>
-Date: Sat, 26 May 2012 00:21:33 +0300
-Subject: [PATCH 25/67] usb: musb_gadget: fix crash caused by dangling pointer
-
-commit 08f75bf14fadaa81fe362d5acda9b77b113dd0a2 upstream.
-
-usb_ep_ops.disable must clear external copy of the endpoint descriptor,
-otherwise musb crashes after loading/unloading several gadget modules
-in a row:
-
-Unable to handle kernel paging request at virtual address bf013730
-pgd = c0004000
-[bf013730] *pgd=8f26d811, *pte=00000000, *ppte=00000000
-Internal error: Oops: 7 [#1]
-Modules linked in: g_cdc [last unloaded: g_file_storage]
-CPU: 0 Not tainted (3.2.17 #647)
-PC is at musb_gadget_enable+0x4c/0x24c
-LR is at _raw_spin_lock_irqsave+0x4c/0x58
-[<c027c030>] (musb_gadget_enable+0x4c/0x24c) from [<bf01b760>] (gether_connect+0x3c/0x19c [g_cdc])
-[<bf01b760>] (gether_connect+0x3c/0x19c [g_cdc]) from [<bf01ba1c>] (ecm_set_alt+0x15c/0x180 [g_cdc])
-[<bf01ba1c>] (ecm_set_alt+0x15c/0x180 [g_cdc]) from [<bf01ecd4>] (composite_setup+0x85c/0xac4 [g_cdc])
-[<bf01ecd4>] (composite_setup+0x85c/0xac4 [g_cdc]) from [<c027b744>] (musb_g_ep0_irq+0x844/0x924)
-[<c027b744>] (musb_g_ep0_irq+0x844/0x924) from [<c027a97c>] (musb_interrupt+0x79c/0x864)
-[<c027a97c>] (musb_interrupt+0x79c/0x864) from [<c027aaa8>] (generic_interrupt+0x64/0x7c)
-[<c027aaa8>] (generic_interrupt+0x64/0x7c) from [<c00797cc>] (handle_irq_event_percpu+0x28/0x178)
-...
-
-Signed-off-by: Grazvydas Ignotas <notasas at gmail.com>
-Signed-off-by: Felipe Balbi <balbi at ti.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/musb/musb_gadget.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/usb/musb/musb_gadget.c b/drivers/usb/musb/musb_gadget.c
-index 47349ca..28ea50c 100644
---- a/drivers/usb/musb/musb_gadget.c
-+++ b/drivers/usb/musb/musb_gadget.c
-@@ -1206,6 +1206,7 @@ static int musb_gadget_disable(struct usb_ep *ep)
- }
-
- musb_ep->desc = NULL;
-+ musb_ep->end_point.desc = NULL;
-
- /* abort all pending DMA and requests */
- nuke(musb_ep, -ESHUTDOWN);
---
-1.7.9.5
-
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
deleted file mode 100644
index 0829b27..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0026-mac80211-clean-up-remain-on-channel-on-interface-sto.patch
+++ /dev/null
@@ -1,80 +0,0 @@
-From 7b2ac3203d120ea1afdf29bdcd5e99d59875e348 Mon Sep 17 00:00:00 2001
-From: Johannes Berg <johannes.berg at intel.com>
-Date: Thu, 31 May 2012 15:09:27 +0200
-Subject: [PATCH 26/67] mac80211: clean up remain-on-channel on interface stop
-
-commit 71ecfa1893034eeb1c93e02e22ee2ad26d080858 upstream.
-
-When any interface goes down, it could be the one that we
-were doing a remain-on-channel with. We therefore need to
-cancel the remain-on-channel and flush the related work
-structs so they don't run after the interface has been
-removed or even destroyed.
-
-It's also possible in this case that an off-channel SKB
-was never transmitted, so free it if this is the case.
-Note that this can also happen if the driver finishes
-the off-channel period without ever starting it.
-
-Reported-by: Nirav Shah <nirav.j2.shah at intel.com>
-Signed-off-by: Johannes Berg <johannes.berg at intel.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/mac80211/iface.c | 12 ++++++++++++
- net/mac80211/offchannel.c | 16 ++++++++++++++++
- 2 files changed, 28 insertions(+)
-
-diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c
-index 30d7355..f4ddf34 100644
---- a/net/mac80211/iface.c
-+++ b/net/mac80211/iface.c
-@@ -495,6 +495,18 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata,
- ieee80211_configure_filter(local);
- break;
- default:
-+ mutex_lock(&local->mtx);
-+ if (local->hw_roc_dev == sdata->dev &&
-+ local->hw_roc_channel) {
-+ /* ignore return value since this is racy */
-+ drv_cancel_remain_on_channel(local);
-+ ieee80211_queue_work(&local->hw, &local->hw_roc_done);
-+ }
-+ mutex_unlock(&local->mtx);
-+
-+ flush_work(&local->hw_roc_start);
-+ flush_work(&local->hw_roc_done);
-+
- flush_work(&sdata->work);
- /*
- * When we get here, the interface is marked down.
-diff --git a/net/mac80211/offchannel.c b/net/mac80211/offchannel.c
-index 1b239be..db2c215 100644
---- a/net/mac80211/offchannel.c
-+++ b/net/mac80211/offchannel.c
-@@ -246,6 +246,22 @@ static void ieee80211_hw_roc_done(struct work_struct *work)
- return;
- }
-
-+ /* was never transmitted */
-+ if (local->hw_roc_skb) {
-+ u64 cookie;
-+
-+ cookie = local->hw_roc_cookie ^ 2;
-+
-+ cfg80211_mgmt_tx_status(local->hw_roc_dev, cookie,
-+ local->hw_roc_skb->data,
-+ local->hw_roc_skb->len, false,
-+ GFP_KERNEL);
-+
-+ kfree_skb(local->hw_roc_skb);
-+ local->hw_roc_skb = NULL;
-+ local->hw_roc_skb_for_status = NULL;
-+ }
-+
- if (!local->hw_roc_for_tx)
- cfg80211_remain_on_channel_expired(local->hw_roc_dev,
- local->hw_roc_cookie,
---
-1.7.9.5
-
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
deleted file mode 100644
index 892b6c2..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0027-rt2x00-use-atomic-variable-for-seqno.patch
+++ /dev/null
@@ -1,174 +0,0 @@
-From da83f4fb1b871f4b4398362b12ca03b82b223a2e Mon Sep 17 00:00:00 2001
-From: Stanislaw Gruszka <sgruszka at redhat.com>
-Date: Fri, 1 Jun 2012 11:29:40 +0200
-Subject: [PATCH 27/67] rt2x00: use atomic variable for seqno
-
-commit e5851dac2c95af7159716832300b9f50c62c648e upstream.
-
-Remove spinlock as atomic_t can be used instead. Note we use only 16
-lower bits, upper bits are changed but we impilcilty cast to u16.
-
-This fix possible deadlock on IBSS mode reproted by lockdep:
-
-=================================
-[ INFO: inconsistent lock state ]
-3.4.0-wl+ #4 Not tainted
----------------------------------
-inconsistent {IN-SOFTIRQ-W} -> {SOFTIRQ-ON-W} usage.
-kworker/u:2/30374 [HC0[0]:SC0[0]:HE1:SE1] takes:
- (&(&intf->seqlock)->rlock){+.?...}, at: [<f9979a20>] rt2x00queue_create_tx_descriptor+0x380/0x490 [rt2x00lib]
-{IN-SOFTIRQ-W} state was registered at:
- [<c04978ab>] __lock_acquire+0x47b/0x1050
- [<c0498504>] lock_acquire+0x84/0xf0
- [<c0835733>] _raw_spin_lock+0x33/0x40
- [<f9979a20>] rt2x00queue_create_tx_descriptor+0x380/0x490 [rt2x00lib]
- [<f9979f2a>] rt2x00queue_write_tx_frame+0x1a/0x300 [rt2x00lib]
- [<f997834f>] rt2x00mac_tx+0x7f/0x380 [rt2x00lib]
- [<f98fe363>] __ieee80211_tx+0x1b3/0x300 [mac80211]
- [<f98ffdf5>] ieee80211_tx+0x105/0x130 [mac80211]
- [<f99000dd>] ieee80211_xmit+0xad/0x100 [mac80211]
- [<f9900519>] ieee80211_subif_start_xmit+0x2d9/0x930 [mac80211]
- [<c0782e87>] dev_hard_start_xmit+0x307/0x660
- [<c079bb71>] sch_direct_xmit+0xa1/0x1e0
- [<c0784bb3>] dev_queue_xmit+0x183/0x730
- [<c078c27a>] neigh_resolve_output+0xfa/0x1e0
- [<c07b436a>] ip_finish_output+0x24a/0x460
- [<c07b4897>] ip_output+0xb7/0x100
- [<c07b2d60>] ip_local_out+0x20/0x60
- [<c07e01ff>] igmpv3_sendpack+0x4f/0x60
- [<c07e108f>] igmp_ifc_timer_expire+0x29f/0x330
- [<c04520fc>] run_timer_softirq+0x15c/0x2f0
- [<c0449e3e>] __do_softirq+0xae/0x1e0
-irq event stamp: 18380437
-hardirqs last enabled at (18380437): [<c0526027>] __slab_alloc.clone.3+0x67/0x5f0
-hardirqs last disabled at (18380436): [<c0525ff3>] __slab_alloc.clone.3+0x33/0x5f0
-softirqs last enabled at (18377616): [<c0449eb3>] __do_softirq+0x123/0x1e0
-softirqs last disabled at (18377611): [<c041278d>] do_softirq+0x9d/0xe0
-
-other info that might help us debug this:
- Possible unsafe locking scenario:
-
- CPU0
- ----
- lock(&(&intf->seqlock)->rlock);
- <Interrupt>
- lock(&(&intf->seqlock)->rlock);
-
- *** DEADLOCK ***
-
-4 locks held by kworker/u:2/30374:
- #0: (wiphy_name(local->hw.wiphy)){++++.+}, at: [<c045cf99>] process_one_work+0x109/0x3f0
- #1: ((&sdata->work)){+.+.+.}, at: [<c045cf99>] process_one_work+0x109/0x3f0
- #2: (&ifibss->mtx){+.+.+.}, at: [<f98f005b>] ieee80211_ibss_work+0x1b/0x470 [mac80211]
- #3: (&intf->beacon_skb_mutex){+.+...}, at: [<f997a644>] rt2x00queue_update_beacon+0x24/0x50 [rt2x00lib]
-
-stack backtrace:
-Pid: 30374, comm: kworker/u:2 Not tainted 3.4.0-wl+ #4
-Call Trace:
- [<c04962a6>] print_usage_bug+0x1f6/0x220
- [<c0496a12>] mark_lock+0x2c2/0x300
- [<c0495ff0>] ? check_usage_forwards+0xc0/0xc0
- [<c04978ec>] __lock_acquire+0x4bc/0x1050
- [<c0527890>] ? __kmalloc_track_caller+0x1c0/0x1d0
- [<c0777fb6>] ? copy_skb_header+0x26/0x90
- [<c0498504>] lock_acquire+0x84/0xf0
- [<f9979a20>] ? rt2x00queue_create_tx_descriptor+0x380/0x490 [rt2x00lib]
- [<c0835733>] _raw_spin_lock+0x33/0x40
- [<f9979a20>] ? rt2x00queue_create_tx_descriptor+0x380/0x490 [rt2x00lib]
- [<f9979a20>] rt2x00queue_create_tx_descriptor+0x380/0x490 [rt2x00lib]
- [<f997a5cf>] rt2x00queue_update_beacon_locked+0x5f/0xb0 [rt2x00lib]
- [<f997a64d>] rt2x00queue_update_beacon+0x2d/0x50 [rt2x00lib]
- [<f9977e3a>] rt2x00mac_bss_info_changed+0x1ca/0x200 [rt2x00lib]
- [<f9977c70>] ? rt2x00mac_remove_interface+0x70/0x70 [rt2x00lib]
- [<f98e4dd0>] ieee80211_bss_info_change_notify+0xe0/0x1d0 [mac80211]
- [<f98ef7b8>] __ieee80211_sta_join_ibss+0x3b8/0x610 [mac80211]
- [<c0496ab4>] ? mark_held_locks+0x64/0xc0
- [<c0440012>] ? virt_efi_query_capsule_caps+0x12/0x50
- [<f98efb09>] ieee80211_sta_join_ibss+0xf9/0x140 [mac80211]
- [<f98f0456>] ieee80211_ibss_work+0x416/0x470 [mac80211]
- [<c0496d8b>] ? trace_hardirqs_on+0xb/0x10
- [<c077683b>] ? skb_dequeue+0x4b/0x70
- [<f98f207f>] ieee80211_iface_work+0x13f/0x230 [mac80211]
- [<c045cf99>] ? process_one_work+0x109/0x3f0
- [<c045d015>] process_one_work+0x185/0x3f0
- [<c045cf99>] ? process_one_work+0x109/0x3f0
- [<f98f1f40>] ? ieee80211_teardown_sdata+0xa0/0xa0 [mac80211]
- [<c045ed86>] worker_thread+0x116/0x270
- [<c045ec70>] ? manage_workers+0x1e0/0x1e0
- [<c0462f64>] kthread+0x84/0x90
- [<c0462ee0>] ? __init_kthread_worker+0x60/0x60
- [<c083d382>] kernel_thread_helper+0x6/0x10
-
-Signed-off-by: Stanislaw Gruszka <sgruszka at redhat.com>
-Acked-by: Helmut Schaa <helmut.schaa at googlemail.com>
-Acked-by: Gertjan van Wingerde <gwingerde at gmail.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/wireless/rt2x00/rt2x00.h | 3 +--
- drivers/net/wireless/rt2x00/rt2x00mac.c | 1 -
- drivers/net/wireless/rt2x00/rt2x00queue.c | 13 ++++++-------
- 3 files changed, 7 insertions(+), 10 deletions(-)
-
-diff --git a/drivers/net/wireless/rt2x00/rt2x00.h b/drivers/net/wireless/rt2x00/rt2x00.h
-index 99ff12d..c778164 100644
---- a/drivers/net/wireless/rt2x00/rt2x00.h
-+++ b/drivers/net/wireless/rt2x00/rt2x00.h
-@@ -390,8 +390,7 @@ struct rt2x00_intf {
- * for hardware which doesn't support hardware
- * sequence counting.
- */
-- spinlock_t seqlock;
-- u16 seqno;
-+ atomic_t seqno;
- };
-
- static inline struct rt2x00_intf* vif_to_intf(struct ieee80211_vif *vif)
-diff --git a/drivers/net/wireless/rt2x00/rt2x00mac.c b/drivers/net/wireless/rt2x00/rt2x00mac.c
-index 373dae1..921da9a 100644
---- a/drivers/net/wireless/rt2x00/rt2x00mac.c
-+++ b/drivers/net/wireless/rt2x00/rt2x00mac.c
-@@ -277,7 +277,6 @@ int rt2x00mac_add_interface(struct ieee80211_hw *hw,
- else
- rt2x00dev->intf_sta_count++;
-
-- spin_lock_init(&intf->seqlock);
- mutex_init(&intf->beacon_skb_mutex);
- intf->beacon = entry;
-
-diff --git a/drivers/net/wireless/rt2x00/rt2x00queue.c b/drivers/net/wireless/rt2x00/rt2x00queue.c
-index 9b1b2b7..50f92d5 100644
---- a/drivers/net/wireless/rt2x00/rt2x00queue.c
-+++ b/drivers/net/wireless/rt2x00/rt2x00queue.c
-@@ -207,6 +207,7 @@ static void rt2x00queue_create_tx_descriptor_seq(struct rt2x00_dev *rt2x00dev,
- struct ieee80211_tx_info *tx_info = IEEE80211_SKB_CB(skb);
- struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data;
- struct rt2x00_intf *intf = vif_to_intf(tx_info->control.vif);
-+ u16 seqno;
-
- if (!(tx_info->flags & IEEE80211_TX_CTL_ASSIGN_SEQ))
- return;
-@@ -227,15 +228,13 @@ static void rt2x00queue_create_tx_descriptor_seq(struct rt2x00_dev *rt2x00dev,
- * sequence counting per-frame, since those will override the
- * sequence counter given by mac80211.
- */
-- spin_lock(&intf->seqlock);
--
- if (test_bit(ENTRY_TXD_FIRST_FRAGMENT, &txdesc->flags))
-- intf->seqno += 0x10;
-- hdr->seq_ctrl &= cpu_to_le16(IEEE80211_SCTL_FRAG);
-- hdr->seq_ctrl |= cpu_to_le16(intf->seqno);
--
-- spin_unlock(&intf->seqlock);
-+ seqno = atomic_add_return(0x10, &intf->seqno);
-+ else
-+ seqno = atomic_read(&intf->seqno);
-
-+ hdr->seq_ctrl &= cpu_to_le16(IEEE80211_SCTL_FRAG);
-+ hdr->seq_ctrl |= cpu_to_le16(seqno);
- }
-
- static void rt2x00queue_create_tx_descriptor_plcp(struct rt2x00_dev *rt2x00dev,
---
-1.7.9.5
-
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
deleted file mode 100644
index 2902592..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0028-iwlwifi-disable-WoWLAN-if-CONFIG_PM_SLEEP.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From 17276afbec2e85771fb30bc2ea9150e4d75ccc89 Mon Sep 17 00:00:00 2001
-From: Johannes Berg <johannes.berg at intel.com>
-Date: Mon, 4 Jun 2012 13:43:11 +0200
-Subject: [PATCH 28/67] iwlwifi: disable WoWLAN if !CONFIG_PM_SLEEP
-
-commit fcb6ff5e2cb83e1de10631f6621f45ca3401bf61 upstream.
-
-If CONFIG_PM_SLEEP is disabled, then iwlwifi doesn't
-support suspend/resume handlers and thus mac80211
-(correctly) refuses advertising WoWLAN. Disable
-WoWLAN in the driver in this case.
-
-Reported-by: Sebastian Kemper <sebastian_ml at gmx.net>
-Signed-off-by: Johannes Berg <johannes.berg at intel.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-[bwh: Backported to 3.2: adjust filename, context]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/wireless/iwlwifi/iwl-agn.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c
-index d7d2512..8b88e87 100644
---- a/drivers/net/wireless/iwlwifi/iwl-agn.c
-+++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
-@@ -1696,6 +1696,7 @@ static int iwlagn_mac_setup_register(struct iwl_priv *priv,
- WIPHY_FLAG_DISABLE_BEACON_HINTS |
- WIPHY_FLAG_IBSS_RSN;
-
-+#ifdef CONFIG_PM_SLEEP
- if (priv->ucode_wowlan.code.len && device_can_wakeup(bus(priv)->dev)) {
- hw->wiphy->wowlan.flags = WIPHY_WOWLAN_MAGIC_PKT |
- WIPHY_WOWLAN_DISCONNECT |
-@@ -1712,6 +1713,7 @@ static int iwlagn_mac_setup_register(struct iwl_priv *priv,
- hw->wiphy->wowlan.pattern_max_len =
- IWLAGN_WOWLAN_MAX_PATTERN_LEN;
- }
-+#endif
-
- if (iwlagn_mod_params.power_save)
- hw->wiphy->flags |= WIPHY_FLAG_PS_ON_BY_DEFAULT;
---
-1.7.9.5
-
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
deleted file mode 100644
index 4b600f2..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0029-ASoC-wm8994-Ensure-all-AIFnCLK-events-are-run-from-t.patch
+++ /dev/null
@@ -1,66 +0,0 @@
-From d3ca90f12aa66e72ccb2e1674664d498971f0d77 Mon Sep 17 00:00:00 2001
-From: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Date: Tue, 5 Jun 2012 12:25:19 +0100
-Subject: [PATCH 29/67] ASoC: wm8994: Ensure all AIFnCLK events are run from
- the _late variants
-
-commit c8fdc1b56611faa7b38eab6b99da5e20113661ff upstream.
-
-Ensure that all the actions get taken at appropriate times by calling the
-_PRE and _POST events for the aifNclk_ev functions explicitly.
-
-Signed-off-by: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- sound/soc/codecs/wm8994.c | 12 ++++++++----
- 1 file changed, 8 insertions(+), 4 deletions(-)
-
-diff --git a/sound/soc/codecs/wm8994.c b/sound/soc/codecs/wm8994.c
-index 3e7aa22..3de9c6a 100644
---- a/sound/soc/codecs/wm8994.c
-+++ b/sound/soc/codecs/wm8994.c
-@@ -1090,17 +1090,19 @@ static int late_enable_ev(struct snd_soc_dapm_widget *w,
- switch (event) {
- case SND_SOC_DAPM_PRE_PMU:
- if (wm8994->aif1clk_enable) {
-- aif1clk_ev(w, kcontrol, event);
-+ aif1clk_ev(w, kcontrol, SND_SOC_DAPM_PRE_PMU);
- snd_soc_update_bits(codec, WM8994_AIF1_CLOCKING_1,
- WM8994_AIF1CLK_ENA_MASK,
- WM8994_AIF1CLK_ENA);
-+ aif1clk_ev(w, kcontrol, SND_SOC_DAPM_POST_PMU);
- wm8994->aif1clk_enable = 0;
- }
- if (wm8994->aif2clk_enable) {
-- aif2clk_ev(w, kcontrol, event);
-+ aif2clk_ev(w, kcontrol, SND_SOC_DAPM_PRE_PMU);
- snd_soc_update_bits(codec, WM8994_AIF2_CLOCKING_1,
- WM8994_AIF2CLK_ENA_MASK,
- WM8994_AIF2CLK_ENA);
-+ aif2clk_ev(w, kcontrol, SND_SOC_DAPM_POST_PMU);
- wm8994->aif2clk_enable = 0;
- }
- break;
-@@ -1121,15 +1123,17 @@ static int late_disable_ev(struct snd_soc_dapm_widget *w,
- switch (event) {
- case SND_SOC_DAPM_POST_PMD:
- if (wm8994->aif1clk_disable) {
-+ aif1clk_ev(w, kcontrol, SND_SOC_DAPM_PRE_PMD);
- snd_soc_update_bits(codec, WM8994_AIF1_CLOCKING_1,
- WM8994_AIF1CLK_ENA_MASK, 0);
-- aif1clk_ev(w, kcontrol, event);
-+ aif1clk_ev(w, kcontrol, SND_SOC_DAPM_POST_PMD);
- wm8994->aif1clk_disable = 0;
- }
- if (wm8994->aif2clk_disable) {
-+ aif2clk_ev(w, kcontrol, SND_SOC_DAPM_PRE_PMD);
- snd_soc_update_bits(codec, WM8994_AIF2_CLOCKING_1,
- WM8994_AIF2CLK_ENA_MASK, 0);
-- aif2clk_ev(w, kcontrol, event);
-+ aif2clk_ev(w, kcontrol, SND_SOC_DAPM_POST_PMD);
- wm8994->aif2clk_disable = 0;
- }
- break;
---
-1.7.9.5
-
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
deleted file mode 100644
index 5d536db..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0030-ASoC-wm8994-Apply-volume-updates-with-clocks-enabled.patch
+++ /dev/null
@@ -1,170 +0,0 @@
-From 35621bc53d008a89c20278c6bf5e049addcd4cd1 Mon Sep 17 00:00:00 2001
-From: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Date: Tue, 5 Jun 2012 12:31:32 +0100
-Subject: [PATCH 30/67] ASoC: wm8994: Apply volume updates with clocks enabled
-
-commit bfd37bb5f681961e255fd2f346c20fdae2ef3f27 upstream.
-
-Volume updates may not be acted upon if there is no clock applied when
-the volume update is written. Ensure this doesn't happen by writing out
-registers with volume updates after we enable each of the clocks.
-
-There are more registers updated than before as previously we were
-relying on wm_hubs to set those for controls it manages.
-
-Signed-off-by: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- sound/soc/codecs/wm8994.c | 93 ++++++++++++++++++++++++++++-----------------
- 1 file changed, 58 insertions(+), 35 deletions(-)
-
-diff --git a/sound/soc/codecs/wm8994.c b/sound/soc/codecs/wm8994.c
-index 3de9c6a..de61b8a 100644
---- a/sound/soc/codecs/wm8994.c
-+++ b/sound/soc/codecs/wm8994.c
-@@ -41,6 +41,39 @@
- #define WM8994_NUM_DRC 3
- #define WM8994_NUM_EQ 3
-
-+static struct {
-+ unsigned int reg;
-+ unsigned int mask;
-+} wm8994_vu_bits[] = {
-+ { WM8994_LEFT_LINE_INPUT_1_2_VOLUME, WM8994_IN1_VU },
-+ { WM8994_RIGHT_LINE_INPUT_1_2_VOLUME, WM8994_IN1_VU },
-+ { WM8994_LEFT_LINE_INPUT_3_4_VOLUME, WM8994_IN2_VU },
-+ { WM8994_RIGHT_LINE_INPUT_3_4_VOLUME, WM8994_IN2_VU },
-+ { WM8994_SPEAKER_VOLUME_LEFT, WM8994_SPKOUT_VU },
-+ { WM8994_SPEAKER_VOLUME_RIGHT, WM8994_SPKOUT_VU },
-+ { WM8994_LEFT_OUTPUT_VOLUME, WM8994_HPOUT1_VU },
-+ { WM8994_RIGHT_OUTPUT_VOLUME, WM8994_HPOUT1_VU },
-+ { WM8994_LEFT_OPGA_VOLUME, WM8994_MIXOUT_VU },
-+ { WM8994_RIGHT_OPGA_VOLUME, WM8994_MIXOUT_VU },
-+
-+ { WM8994_AIF1_DAC1_LEFT_VOLUME, WM8994_AIF1DAC1_VU },
-+ { WM8994_AIF1_DAC1_RIGHT_VOLUME, WM8994_AIF1DAC1_VU },
-+ { WM8994_AIF1_DAC2_LEFT_VOLUME, WM8994_AIF1DAC2_VU },
-+ { WM8994_AIF1_DAC2_RIGHT_VOLUME, WM8994_AIF1DAC2_VU },
-+ { WM8994_AIF2_DAC_LEFT_VOLUME, WM8994_AIF2DAC_VU },
-+ { WM8994_AIF2_DAC_RIGHT_VOLUME, WM8994_AIF2DAC_VU },
-+ { WM8994_AIF1_ADC1_LEFT_VOLUME, WM8994_AIF1ADC1_VU },
-+ { WM8994_AIF1_ADC1_RIGHT_VOLUME, WM8994_AIF1ADC1_VU },
-+ { WM8994_AIF1_ADC2_LEFT_VOLUME, WM8994_AIF1ADC2_VU },
-+ { WM8994_AIF1_ADC2_RIGHT_VOLUME, WM8994_AIF1ADC2_VU },
-+ { WM8994_AIF2_ADC_LEFT_VOLUME, WM8994_AIF2ADC_VU },
-+ { WM8994_AIF2_ADC_RIGHT_VOLUME, WM8994_AIF1ADC2_VU },
-+ { WM8994_DAC1_LEFT_VOLUME, WM8994_DAC1_VU },
-+ { WM8994_DAC1_RIGHT_VOLUME, WM8994_DAC1_VU },
-+ { WM8994_DAC2_LEFT_VOLUME, WM8994_DAC2_VU },
-+ { WM8994_DAC2_RIGHT_VOLUME, WM8994_DAC2_VU },
-+};
-+
- static int wm8994_drc_base[] = {
- WM8994_AIF1_DRC1_1,
- WM8994_AIF1_DRC2_1,
-@@ -889,6 +922,7 @@ static int aif1clk_ev(struct snd_soc_dapm_widget *w,
- struct snd_soc_codec *codec = w->codec;
- struct wm8994 *control = codec->control_data;
- int mask = WM8994_AIF1DAC1L_ENA | WM8994_AIF1DAC1R_ENA;
-+ int i;
- int dac;
- int adc;
- int val;
-@@ -947,6 +981,13 @@ static int aif1clk_ev(struct snd_soc_dapm_widget *w,
- WM8994_AIF1DAC2L_ENA);
- break;
-
-+ case SND_SOC_DAPM_POST_PMU:
-+ for (i = 0; i < ARRAY_SIZE(wm8994_vu_bits); i++)
-+ snd_soc_write(codec, wm8994_vu_bits[i].reg,
-+ snd_soc_read(codec,
-+ wm8994_vu_bits[i].reg));
-+ break;
-+
- case SND_SOC_DAPM_PRE_PMD:
- case SND_SOC_DAPM_POST_PMD:
- snd_soc_update_bits(codec, WM8994_POWER_MANAGEMENT_5,
-@@ -972,6 +1013,7 @@ static int aif2clk_ev(struct snd_soc_dapm_widget *w,
- struct snd_kcontrol *kcontrol, int event)
- {
- struct snd_soc_codec *codec = w->codec;
-+ int i;
- int dac;
- int adc;
- int val;
-@@ -1022,6 +1064,13 @@ static int aif2clk_ev(struct snd_soc_dapm_widget *w,
- WM8994_AIF2DACR_ENA);
- break;
-
-+ case SND_SOC_DAPM_POST_PMU:
-+ for (i = 0; i < ARRAY_SIZE(wm8994_vu_bits); i++)
-+ snd_soc_write(codec, wm8994_vu_bits[i].reg,
-+ snd_soc_read(codec,
-+ wm8994_vu_bits[i].reg));
-+ break;
-+
- case SND_SOC_DAPM_PRE_PMD:
- case SND_SOC_DAPM_POST_PMD:
- snd_soc_update_bits(codec, WM8994_POWER_MANAGEMENT_5,
-@@ -1470,9 +1519,11 @@ SND_SOC_DAPM_POST("Late Disable PGA", late_disable_ev)
-
- static const struct snd_soc_dapm_widget wm8994_lateclk_widgets[] = {
- SND_SOC_DAPM_SUPPLY("AIF1CLK", WM8994_AIF1_CLOCKING_1, 0, 0, aif1clk_ev,
-- SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_PRE_PMD),
-+ SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMU |
-+ SND_SOC_DAPM_PRE_PMD),
- SND_SOC_DAPM_SUPPLY("AIF2CLK", WM8994_AIF2_CLOCKING_1, 0, 0, aif2clk_ev,
-- SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_PRE_PMD),
-+ SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMU |
-+ SND_SOC_DAPM_PRE_PMD),
- SND_SOC_DAPM_PGA("Direct Voice", SND_SOC_NOPM, 0, 0, NULL, 0),
- SND_SOC_DAPM_MIXER("SPKL", WM8994_POWER_MANAGEMENT_3, 8, 0,
- left_speaker_mixer, ARRAY_SIZE(left_speaker_mixer)),
-@@ -3486,39 +3537,11 @@ static int wm8994_codec_probe(struct snd_soc_codec *codec)
-
- wm8994_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
-
-- /* Latch volume updates (right only; we always do left then right). */
-- snd_soc_update_bits(codec, WM8994_AIF1_DAC1_LEFT_VOLUME,
-- WM8994_AIF1DAC1_VU, WM8994_AIF1DAC1_VU);
-- snd_soc_update_bits(codec, WM8994_AIF1_DAC1_RIGHT_VOLUME,
-- WM8994_AIF1DAC1_VU, WM8994_AIF1DAC1_VU);
-- snd_soc_update_bits(codec, WM8994_AIF1_DAC2_LEFT_VOLUME,
-- WM8994_AIF1DAC2_VU, WM8994_AIF1DAC2_VU);
-- snd_soc_update_bits(codec, WM8994_AIF1_DAC2_RIGHT_VOLUME,
-- WM8994_AIF1DAC2_VU, WM8994_AIF1DAC2_VU);
-- snd_soc_update_bits(codec, WM8994_AIF2_DAC_LEFT_VOLUME,
-- WM8994_AIF2DAC_VU, WM8994_AIF2DAC_VU);
-- snd_soc_update_bits(codec, WM8994_AIF2_DAC_RIGHT_VOLUME,
-- WM8994_AIF2DAC_VU, WM8994_AIF2DAC_VU);
-- snd_soc_update_bits(codec, WM8994_AIF1_ADC1_LEFT_VOLUME,
-- WM8994_AIF1ADC1_VU, WM8994_AIF1ADC1_VU);
-- snd_soc_update_bits(codec, WM8994_AIF1_ADC1_RIGHT_VOLUME,
-- WM8994_AIF1ADC1_VU, WM8994_AIF1ADC1_VU);
-- snd_soc_update_bits(codec, WM8994_AIF1_ADC2_LEFT_VOLUME,
-- WM8994_AIF1ADC2_VU, WM8994_AIF1ADC2_VU);
-- snd_soc_update_bits(codec, WM8994_AIF1_ADC2_RIGHT_VOLUME,
-- WM8994_AIF1ADC2_VU, WM8994_AIF1ADC2_VU);
-- snd_soc_update_bits(codec, WM8994_AIF2_ADC_LEFT_VOLUME,
-- WM8994_AIF2ADC_VU, WM8994_AIF1ADC2_VU);
-- snd_soc_update_bits(codec, WM8994_AIF2_ADC_RIGHT_VOLUME,
-- WM8994_AIF2ADC_VU, WM8994_AIF1ADC2_VU);
-- snd_soc_update_bits(codec, WM8994_DAC1_LEFT_VOLUME,
-- WM8994_DAC1_VU, WM8994_DAC1_VU);
-- snd_soc_update_bits(codec, WM8994_DAC1_RIGHT_VOLUME,
-- WM8994_DAC1_VU, WM8994_DAC1_VU);
-- snd_soc_update_bits(codec, WM8994_DAC2_LEFT_VOLUME,
-- WM8994_DAC2_VU, WM8994_DAC2_VU);
-- snd_soc_update_bits(codec, WM8994_DAC2_RIGHT_VOLUME,
-- WM8994_DAC2_VU, WM8994_DAC2_VU);
-+ /* Latch volume update bits */
-+ for (i = 0; i < ARRAY_SIZE(wm8994_vu_bits); i++)
-+ snd_soc_update_bits(codec, wm8994_vu_bits[i].reg,
-+ wm8994_vu_bits[i].mask,
-+ wm8994_vu_bits[i].mask);
-
- /* Set the low bit of the 3D stereo depth so TLV matches */
- snd_soc_update_bits(codec, WM8994_AIF1_DAC1_FILTERS_2,
---
-1.7.9.5
-
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
deleted file mode 100644
index 51d633b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0031-iwlwifi-unregister-LEDs-if-mac80211-registration-fai.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 95f7667f3af2005c125446c8a5d59f60a4d05ad7 Mon Sep 17 00:00:00 2001
-From: Johannes Berg <johannes.berg at intel.com>
-Date: Tue, 5 Jun 2012 09:38:35 +0200
-Subject: [PATCH 31/67] iwlwifi: unregister LEDs if mac80211 registration
- fails
-
-commit 0e1fa7ef25004b9c1a14147bce61c15c2f1c6744 upstream.
-
-Otherwise the LEDs stick around and cause issues the
-next time around since they're still there but not
-really hooked up.
-
-Signed-off-by: Johannes Berg <johannes.berg at intel.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-[bwh: Backported to 3.2: adjust filename]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/wireless/iwlwifi/iwl-agn.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c
-index 8b88e87..16cdd12 100644
---- a/drivers/net/wireless/iwlwifi/iwl-agn.c
-+++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
-@@ -1741,6 +1741,7 @@ static int iwlagn_mac_setup_register(struct iwl_priv *priv,
- ret = ieee80211_register_hw(priv->hw);
- if (ret) {
- IWL_ERR(priv, "Failed to register hw (error %d)\n", ret);
-+ iwl_leds_exit(priv);
- return ret;
- }
- priv->mac80211_registered = 1;
---
-1.7.9.5
-
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
deleted file mode 100644
index fd32445..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0032-cfg80211-fix-interface-combinations-check.patch
+++ /dev/null
@@ -1,81 +0,0 @@
-From 5b6e7b80e2a121632158da46a21f6be9d561ce8c Mon Sep 17 00:00:00 2001
-From: Johannes Berg <johannes.berg at intel.com>
-Date: Tue, 5 Jun 2012 12:16:50 +0200
-Subject: [PATCH 32/67] cfg80211: fix interface combinations check
-
-commit 463454b5dbd8dbab6e2fc6c557329e5b811b9c32 upstream.
-
-If a given interface combination doesn't contain
-a required interface type then we missed checking
-that and erroneously allowed it even though iface
-type wasn't there at all. Add a check that makes
-sure that all interface types are accounted for.
-
-Reported-by: Mohammed Shafi Shajakhan <mohammed at qca.qualcomm.com>
-Signed-off-by: Johannes Berg <johannes.berg at intel.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/wireless/util.c | 19 ++++++++++++++++++-
- 1 file changed, 18 insertions(+), 1 deletion(-)
-
-diff --git a/net/wireless/util.c b/net/wireless/util.c
-index 8bf8902..d38815d 100644
---- a/net/wireless/util.c
-+++ b/net/wireless/util.c
-@@ -943,6 +943,7 @@ int cfg80211_can_change_interface(struct cfg80211_registered_device *rdev,
- enum nl80211_iftype iftype)
- {
- struct wireless_dev *wdev_iter;
-+ u32 used_iftypes = BIT(iftype);
- int num[NUM_NL80211_IFTYPES];
- int total = 1;
- int i, j;
-@@ -976,12 +977,14 @@ int cfg80211_can_change_interface(struct cfg80211_registered_device *rdev,
-
- num[wdev_iter->iftype]++;
- total++;
-+ used_iftypes |= BIT(wdev_iter->iftype);
- }
- mutex_unlock(&rdev->devlist_mtx);
-
- for (i = 0; i < rdev->wiphy.n_iface_combinations; i++) {
- const struct ieee80211_iface_combination *c;
- struct ieee80211_iface_limit *limits;
-+ u32 all_iftypes = 0;
-
- c = &rdev->wiphy.iface_combinations[i];
-
-@@ -996,6 +999,7 @@ int cfg80211_can_change_interface(struct cfg80211_registered_device *rdev,
- if (rdev->wiphy.software_iftypes & BIT(iftype))
- continue;
- for (j = 0; j < c->n_limits; j++) {
-+ all_iftypes |= limits[j].types;
- if (!(limits[j].types & BIT(iftype)))
- continue;
- if (limits[j].max < num[iftype])
-@@ -1003,7 +1007,20 @@ int cfg80211_can_change_interface(struct cfg80211_registered_device *rdev,
- limits[j].max -= num[iftype];
- }
- }
-- /* yay, it fits */
-+
-+ /*
-+ * Finally check that all iftypes that we're currently
-+ * using are actually part of this combination. If they
-+ * aren't then we can't use this combination and have
-+ * to continue to the next.
-+ */
-+ if ((all_iftypes & used_iftypes) != used_iftypes)
-+ goto cont;
-+
-+ /*
-+ * This combination covered all interface types and
-+ * supported the requested numbers, so we're good.
-+ */
- kfree(limits);
- return 0;
- cont:
---
-1.7.9.5
-
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
deleted file mode 100644
index d51719d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0033-mpt2sas-Fix-unsafe-using-smp_processor_id-in-preempt.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 3c997939218ed3d4fec3441eaea74d04392d2007 Mon Sep 17 00:00:00 2001
-From: "nagalakshmi.nandigama at lsi.com" <nagalakshmi.nandigama at lsi.com>
-Date: Tue, 17 Apr 2012 11:25:04 +0530
-Subject: [PATCH 33/67] mpt2sas: Fix unsafe using smp_processor_id() in
- preemptible
-
-commit a2c658505bf5c75516ee0a79287223e86a2474af upstream.
-
-When CONFIG_DEBUG_PREEMPT is enabled, bug is observed in the smp_processor_id().
-This is because smp_processor_id() is not called in preempt safe condition.
-
-To fix this issue, use raw_smp_processor_id instead of smp_processor_id.
-
-Signed-off-by: Nagalakshmi Nandigama <nagalakshmi.nandigama at lsi.com>
-Signed-off-by: James Bottomley <JBottomley at Parallels.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/scsi/mpt2sas/mpt2sas_base.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/scsi/mpt2sas/mpt2sas_base.c b/drivers/scsi/mpt2sas/mpt2sas_base.c
-index ac336e1..e903077 100644
---- a/drivers/scsi/mpt2sas/mpt2sas_base.c
-+++ b/drivers/scsi/mpt2sas/mpt2sas_base.c
-@@ -1739,7 +1739,7 @@ static inline void _base_writeq(__u64 b, volatile void __iomem *addr,
- static inline u8
- _base_get_msix_index(struct MPT2SAS_ADAPTER *ioc)
- {
-- return ioc->cpu_msix_table[smp_processor_id()];
-+ return ioc->cpu_msix_table[raw_smp_processor_id()];
- }
-
- /**
---
-1.7.9.5
-
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
deleted file mode 100644
index 797282b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0034-net-sierra_net-device-IDs-for-Aircard-320U.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-From a6d6029227b3b65257a974953df957d28ea190e7 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Bj=C3=B8rn=20Mork?= <bjorn at mork.no>
-Date: Tue, 5 Jun 2012 21:18:10 +0000
-Subject: [PATCH 34/67] net: sierra_net: device IDs for Aircard 320U++
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit dd03cff23d694cfb0fdae80cb618e7ced05ea696 upstream.
-
-Adding device IDs for Aircard 320U and two other devices
-found in the out-of-tree version of this driver.
-
-Cc: linux at sierrawireless.com
-Cc: Autif Khan <autif.mlist at gmail.com>
-Cc: Tom Cassidy <tomas.cassidy at gmail.com>
-Signed-off-by: Bjørn Mork <bjorn at mork.no>
-Acked-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/usb/sierra_net.c | 14 ++++++++++----
- 1 file changed, 10 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/net/usb/sierra_net.c b/drivers/net/usb/sierra_net.c
-index ed1b432..864448b 100644
---- a/drivers/net/usb/sierra_net.c
-+++ b/drivers/net/usb/sierra_net.c
-@@ -943,7 +943,7 @@ struct sk_buff *sierra_net_tx_fixup(struct usbnet *dev, struct sk_buff *skb,
- }
-
- static const u8 sierra_net_ifnum_list[] = { 7, 10, 11 };
--static const struct sierra_net_info_data sierra_net_info_data_68A3 = {
-+static const struct sierra_net_info_data sierra_net_info_data_direct_ip = {
- .rx_urb_size = 8 * 1024,
- .whitelist = {
- .infolen = ARRAY_SIZE(sierra_net_ifnum_list),
-@@ -951,7 +951,7 @@ static const struct sierra_net_info_data sierra_net_info_data_68A3 = {
- }
- };
-
--static const struct driver_info sierra_net_info_68A3 = {
-+static const struct driver_info sierra_net_info_direct_ip = {
- .description = "Sierra Wireless USB-to-WWAN Modem",
- .flags = FLAG_WWAN | FLAG_SEND_ZLP,
- .bind = sierra_net_bind,
-@@ -959,12 +959,18 @@ static const struct driver_info sierra_net_info_68A3 = {
- .status = sierra_net_status,
- .rx_fixup = sierra_net_rx_fixup,
- .tx_fixup = sierra_net_tx_fixup,
-- .data = (unsigned long)&sierra_net_info_data_68A3,
-+ .data = (unsigned long)&sierra_net_info_data_direct_ip,
- };
-
- static const struct usb_device_id products[] = {
- {USB_DEVICE(0x1199, 0x68A3), /* Sierra Wireless USB-to-WWAN modem */
-- .driver_info = (unsigned long) &sierra_net_info_68A3},
-+ .driver_info = (unsigned long) &sierra_net_info_direct_ip},
-+ {USB_DEVICE(0x0F3D, 0x68A3), /* AT&T Direct IP modem */
-+ .driver_info = (unsigned long) &sierra_net_info_direct_ip},
-+ {USB_DEVICE(0x1199, 0x68AA), /* Sierra Wireless Direct IP LTE modem */
-+ .driver_info = (unsigned long) &sierra_net_info_direct_ip},
-+ {USB_DEVICE(0x0F3D, 0x68AA), /* AT&T Direct IP LTE modem */
-+ .driver_info = (unsigned long) &sierra_net_info_direct_ip},
-
- {}, /* last item */
- };
---
-1.7.9.5
-
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
deleted file mode 100644
index e14a5f3..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0035-ARM-imx6-exit-coherency-when-shutting-down-a-cpu.patch
+++ /dev/null
@@ -1,98 +0,0 @@
-From 863d8967cf0028dc6f7ca98d88f4e93045ec143e Mon Sep 17 00:00:00 2001
-From: Shawn Guo <shawn.guo at linaro.org>
-Date: Tue, 22 May 2012 22:13:46 +0800
-Subject: [PATCH 35/67] ARM: imx6: exit coherency when shutting down a cpu
-
-commit 602bf40971d7f9a1ec0b7ba2b7e6427849828651 upstream.
-
-There is a system hang issue on imx6q which can easily be seen with
-running a cpu hotplug stress testing (hotplug secondary cores from
-user space via sysfs interface for thousands iterations).
-
-It turns out that the issue is caused by coherency of the cpu that
-is being shut down. When shutting down a cpu, we need to have the
-cpu exit coherency to prevent it from receiving cache, TLB, or BTB
-maintenance operations broadcast by other CPUs in the cluster.
-
-Copy cpu_enter_lowpower() and cpu_leave_lowpower() from mach-vexpress
-to have coherency properly handled in platform_cpu_die(), thus fix
-the issue.
-
-Signed-off-by: Shawn Guo <shawn.guo at linaro.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/arm/mach-imx/hotplug.c | 42 +++++++++++++++++++++++++++++++++++++++++-
- 1 file changed, 41 insertions(+), 1 deletion(-)
-
-diff --git a/arch/arm/mach-imx/hotplug.c b/arch/arm/mach-imx/hotplug.c
-index 89493ab..20ed2d5 100644
---- a/arch/arm/mach-imx/hotplug.c
-+++ b/arch/arm/mach-imx/hotplug.c
-@@ -12,6 +12,7 @@
-
- #include <linux/errno.h>
- #include <asm/cacheflush.h>
-+#include <asm/cp15.h>
- #include <mach/common.h>
-
- int platform_cpu_kill(unsigned int cpu)
-@@ -19,6 +20,44 @@ int platform_cpu_kill(unsigned int cpu)
- return 1;
- }
-
-+static inline void cpu_enter_lowpower(void)
-+{
-+ unsigned int v;
-+
-+ flush_cache_all();
-+ asm volatile(
-+ "mcr p15, 0, %1, c7, c5, 0\n"
-+ " mcr p15, 0, %1, c7, c10, 4\n"
-+ /*
-+ * Turn off coherency
-+ */
-+ " mrc p15, 0, %0, c1, c0, 1\n"
-+ " bic %0, %0, %3\n"
-+ " mcr p15, 0, %0, c1, c0, 1\n"
-+ " mrc p15, 0, %0, c1, c0, 0\n"
-+ " bic %0, %0, %2\n"
-+ " mcr p15, 0, %0, c1, c0, 0\n"
-+ : "=&r" (v)
-+ : "r" (0), "Ir" (CR_C), "Ir" (0x40)
-+ : "cc");
-+}
-+
-+static inline void cpu_leave_lowpower(void)
-+{
-+ unsigned int v;
-+
-+ asm volatile(
-+ "mrc p15, 0, %0, c1, c0, 0\n"
-+ " orr %0, %0, %1\n"
-+ " mcr p15, 0, %0, c1, c0, 0\n"
-+ " mrc p15, 0, %0, c1, c0, 1\n"
-+ " orr %0, %0, %2\n"
-+ " mcr p15, 0, %0, c1, c0, 1\n"
-+ : "=&r" (v)
-+ : "Ir" (CR_C), "Ir" (0x40)
-+ : "cc");
-+}
-+
- /*
- * platform-specific code to shutdown a CPU
- *
-@@ -26,9 +65,10 @@ int platform_cpu_kill(unsigned int cpu)
- */
- void platform_cpu_die(unsigned int cpu)
- {
-- flush_cache_all();
-+ cpu_enter_lowpower();
- imx_enable_cpu(cpu, false);
- cpu_do_idle();
-+ cpu_leave_lowpower();
-
- /* We should never return from idle */
- panic("cpu %d unexpectedly exit from shutdown\n", cpu);
---
-1.7.9.5
-
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
deleted file mode 100644
index e0f48f5..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0036-ARM-i.MX-imx21ads-Fix-overlapping-static-i-o-mapping.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From b56e5718560c09bd064d57a3de17be1a329f2c65 Mon Sep 17 00:00:00 2001
-From: Jaccon Bastiaansen <jaccon.bastiaansen at gmail.com>
-Date: Mon, 30 Apr 2012 11:53:43 +0200
-Subject: [PATCH 36/67] ARM i.MX imx21ads: Fix overlapping static i/o mappings
-
-commit 350ab15bb2ffe7103bc6bf6c634f3c5b286eaf2a upstream.
-
-The statically defined I/O memory regions for the i.MX21 on chip
-peripherals and the on board I/O peripherals of the i.MX21ADS board
-overlap. This results in a kernel crash during startup. This is fixed
-by reducing the memory range for the on board I/O peripherals to the
-actually required range.
-
-Signed-off-by: Jaccon Bastiaansen <jaccon.bastiaansen at gmail.com>
-Signed-off-by: Sascha Hauer <s.hauer at pengutronix.de>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/arm/mach-imx/mach-mx21ads.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/arch/arm/mach-imx/mach-mx21ads.c b/arch/arm/mach-imx/mach-mx21ads.c
-index 25f8402..ad994b3 100644
---- a/arch/arm/mach-imx/mach-mx21ads.c
-+++ b/arch/arm/mach-imx/mach-mx21ads.c
-@@ -32,7 +32,7 @@
- * Memory-mapped I/O on MX21ADS base board
- */
- #define MX21ADS_MMIO_BASE_ADDR 0xf5000000
--#define MX21ADS_MMIO_SIZE SZ_16M
-+#define MX21ADS_MMIO_SIZE 0xc00000
-
- #define MX21ADS_REG_ADDR(offset) (void __force __iomem *) \
- (MX21ADS_MMIO_BASE_ADDR + (offset))
---
-1.7.9.5
-
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
deleted file mode 100644
index 9f00f9f..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0037-NFSv4-Fix-unnecessary-delegation-returns-in-nfs4_do_.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 2b0262efb8720c3199a4fc4c119de05df5957bbc Mon Sep 17 00:00:00 2001
-From: Trond Myklebust <Trond.Myklebust at netapp.com>
-Date: Fri, 8 Jun 2012 10:58:09 -0400
-Subject: [PATCH 37/67] NFSv4: Fix unnecessary delegation returns in
- nfs4_do_open
-
-commit 2d0dbc6ae8a5194aaecb9cfffb9053f38fce8b86 upstream.
-
-While nfs4_do_open() expects the fmode argument to be restricted to
-combinations of FMODE_READ and FMODE_WRITE, both nfs4_atomic_open()
-and nfs4_proc_create will pass the nfs_open_context->mode,
-which contains the full fmode_t.
-
-This patch ensures that nfs4_do_open strips the other fmode_t bits,
-fixing a problem in which the nfs4_do_open call would result in an
-unnecessary delegation return.
-
-Reported-by: Fred Isaman <iisaman at netapp.com>
-Signed-off-by: Trond Myklebust <Trond.Myklebust at netapp.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/nfs/nfs4proc.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
-index a3cae5d..8000459 100644
---- a/fs/nfs/nfs4proc.c
-+++ b/fs/nfs/nfs4proc.c
-@@ -1825,6 +1825,7 @@ static struct nfs4_state *nfs4_do_open(struct inode *dir, struct dentry *dentry,
- struct nfs4_state *res;
- int status;
-
-+ fmode &= FMODE_READ|FMODE_WRITE;
- do {
- status = _nfs4_do_open(dir, dentry, fmode, flags, sattr, cred, &res);
- if (status == 0)
---
-1.7.9.5
-
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
deleted file mode 100644
index 0bc6ade..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0038-iwlwifi-use-correct-supported-firmware-for-6035-and-.patch
+++ /dev/null
@@ -1,88 +0,0 @@
-From f4ef6f3f77fa0419a906d75f96c4dea111956872 Mon Sep 17 00:00:00 2001
-From: Meenakshi Venkataraman <meenakshi.venkataraman at intel.com>
-Date: Tue, 5 Jun 2012 20:24:37 +0200
-Subject: [PATCH 38/67] iwlwifi: use correct supported firmware for 6035 and
- 6000g2
-
-commit d2c8b15d0cb486f4938ba7f2af349d9d1220cb10 upstream.
-
-My patch
-
- iwlwifi: use correct released ucode version
-
-did not correctly report supported firmware
-for the 6035 device. This patch fixes it. The
-minimum supported firmware version for 6035
-is v6.
-
-Also correct the minimum supported firmware
-version for the 6000g2 series of devices.
-
-Signed-off-by: Meenakshi Venkataraman <meenakshi.venkataraman at intel.com>
-Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach at intel.com>
-Signed-off-by: Johannes Berg <johannes.berg at intel.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-[bwh: Backported to 3.2:
- - adjust context
- - make IWL_DEVICE_6035 identical for IWL_DEVICE_6030 except for the
- ucode_api_* fields]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/wireless/iwlwifi/iwl-6000.c | 22 ++++++++++++++++++++--
- 1 file changed, 20 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/net/wireless/iwlwifi/iwl-6000.c b/drivers/net/wireless/iwlwifi/iwl-6000.c
-index 0b9f797..9b6b010 100644
---- a/drivers/net/wireless/iwlwifi/iwl-6000.c
-+++ b/drivers/net/wireless/iwlwifi/iwl-6000.c
-@@ -49,17 +49,20 @@
- #define IWL6000_UCODE_API_MAX 6
- #define IWL6050_UCODE_API_MAX 5
- #define IWL6000G2_UCODE_API_MAX 6
-+#define IWL6035_UCODE_API_MAX 6
-
- /* Oldest version we won't warn about */
- #define IWL6000_UCODE_API_OK 4
- #define IWL6000G2_UCODE_API_OK 5
- #define IWL6050_UCODE_API_OK 5
- #define IWL6000G2B_UCODE_API_OK 6
-+#define IWL6035_UCODE_API_OK 6
-
- /* Lowest firmware API version supported */
- #define IWL6000_UCODE_API_MIN 4
- #define IWL6050_UCODE_API_MIN 4
--#define IWL6000G2_UCODE_API_MIN 4
-+#define IWL6000G2_UCODE_API_MIN 5
-+#define IWL6035_UCODE_API_MIN 6
-
- #define IWL6000_FW_PRE "iwlwifi-6000-"
- #define IWL6000_MODULE_FIRMWARE(api) IWL6000_FW_PRE __stringify(api) ".ucode"
-@@ -436,9 +439,24 @@ struct iwl_cfg iwl6030_2bg_cfg = {
- IWL_DEVICE_6030,
- };
-
-+#define IWL_DEVICE_6035 \
-+ .fw_name_pre = IWL6030_FW_PRE, \
-+ .ucode_api_max = IWL6035_UCODE_API_MAX, \
-+ .ucode_api_ok = IWL6035_UCODE_API_OK, \
-+ .ucode_api_min = IWL6035_UCODE_API_MIN, \
-+ .eeprom_ver = EEPROM_6030_EEPROM_VERSION, \
-+ .eeprom_calib_ver = EEPROM_6030_TX_POWER_VERSION, \
-+ .lib = &iwl6030_lib, \
-+ .base_params = &iwl6000_g2_base_params, \
-+ .bt_params = &iwl6000_bt_params, \
-+ .need_dc_calib = true, \
-+ .need_temp_offset_calib = true, \
-+ .led_mode = IWL_LED_RF_STATE, \
-+ .adv_pm = true
-+
- struct iwl_cfg iwl6035_2agn_cfg = {
- .name = "6035 Series 2x2 AGN/BT",
-- IWL_DEVICE_6030,
-+ IWL_DEVICE_6035,
- .ht_params = &iwl6000_ht_params,
- };
-
---
-1.7.9.5
-
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
deleted file mode 100644
index e13734b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0039-iwlwifi-disable-the-buggy-chain-extension-feature-in.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From 0011758ae1822920fd9c6bcd18cafb780971a7b3 Mon Sep 17 00:00:00 2001
-From: Emmanuel Grumbach <emmanuel.grumbach at intel.com>
-Date: Wed, 6 Jun 2012 13:55:02 +0200
-Subject: [PATCH 39/67] iwlwifi: disable the buggy chain extension feature in
- HW
-
-commit d012d04e4d6312ea157b6cf19e9689af934f5aa7 upstream.
-
-This feature has been reported to be buggy and enabled by
-default. We therefore need to disable it manually.
-
-Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach at intel.com>
-Signed-off-by: Johannes Berg <johannes.berg at intel.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-[bwh: Backported to 3.2 as instructed: pass bus(trans) to iwl_write_prph()]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/wireless/iwlwifi/iwl-prph.h | 1 +
- drivers/net/wireless/iwlwifi/iwl-trans-pcie.c | 5 +++++
- 2 files changed, 6 insertions(+)
-
-diff --git a/drivers/net/wireless/iwlwifi/iwl-prph.h b/drivers/net/wireless/iwlwifi/iwl-prph.h
-index d9b089e..0683006 100644
---- a/drivers/net/wireless/iwlwifi/iwl-prph.h
-+++ b/drivers/net/wireless/iwlwifi/iwl-prph.h
-@@ -228,6 +228,7 @@
- #define SCD_TXFACT (SCD_BASE + 0x10)
- #define SCD_ACTIVE (SCD_BASE + 0x14)
- #define SCD_QUEUECHAIN_SEL (SCD_BASE + 0xe8)
-+#define SCD_CHAINEXT_EN (SCD_BASE + 0x244)
- #define SCD_AGGR_SEL (SCD_BASE + 0x248)
- #define SCD_INTERRUPT_MASK (SCD_BASE + 0x108)
-
-diff --git a/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c b/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c
-index 5f17ab8..5815cf5 100644
---- a/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c
-+++ b/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c
-@@ -868,6 +868,11 @@ static void iwl_trans_pcie_tx_start(struct iwl_trans *trans)
- iwl_write_prph(bus(trans), SCD_DRAM_BASE_ADDR,
- trans_pcie->scd_bc_tbls.dma >> 10);
-
-+ /* The chain extension of the SCD doesn't work well. This feature is
-+ * enabled by default by the HW, so we need to disable it manually.
-+ */
-+ iwl_write_prph(bus(trans), SCD_CHAINEXT_EN, 0);
-+
- /* Enable DMA channel */
- for (chan = 0; chan < FH_TCSR_CHNL_NUM ; chan++)
- iwl_write_direct32(bus(trans), FH_TCSR_CHNL_TX_CONFIG_REG(chan),
---
-1.7.9.5
-
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
deleted file mode 100644
index 619df98..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0040-ALSA-hda-Add-codec-no_jack_detect-flag.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 6b9a3be3e496ccc4125e0c6daded90e823864642 Mon Sep 17 00:00:00 2001
-From: Takashi Iwai <tiwai at suse.de>
-Date: Mon, 13 Feb 2012 11:55:02 +0100
-Subject: [PATCH 40/67] ALSA: hda - Add codec->no_jack_detect flag
-
-commit 71b1e9e43d5199f57c109e20c0f4dffc5c048130 upstream.
-
-Add a new flag to indicate that the codec has no jack-detection cap.
-This flag should be set for hardwares that have no jack-detect
-implementation although the codec chip itself supports it.
-
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-[bwh: Backported to 3.2: adjust filename and context for is_jack_detectable()]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- sound/pci/hda/hda_codec.h | 1 +
- sound/pci/hda/hda_local.h | 2 ++
- 2 files changed, 3 insertions(+)
-
-diff --git a/sound/pci/hda/hda_codec.h b/sound/pci/hda/hda_codec.h
-index 71f6744..78b2223 100644
---- a/sound/pci/hda/hda_codec.h
-+++ b/sound/pci/hda/hda_codec.h
-@@ -858,6 +858,7 @@ struct hda_codec {
- unsigned int pins_shutup:1; /* pins are shut up */
- unsigned int no_trigger_sense:1; /* don't trigger at pin-sensing */
- unsigned int ignore_misc_bit:1; /* ignore MISC_NO_PRESENCE bit */
-+ unsigned int no_jack_detect:1; /* Machine has no jack-detection */
- #ifdef CONFIG_SND_HDA_POWER_SAVE
- unsigned int power_on :1; /* current (global) power-state */
- unsigned int power_transition :1; /* power-state in transition */
-diff --git a/sound/pci/hda/hda_local.h b/sound/pci/hda/hda_local.h
-index 368f0c5..c78b753 100644
---- a/sound/pci/hda/hda_local.h
-+++ b/sound/pci/hda/hda_local.h
-@@ -515,6 +515,8 @@ int snd_hda_jack_detect(struct hda_codec *codec, hda_nid_t nid);
-
- static inline bool is_jack_detectable(struct hda_codec *codec, hda_nid_t nid)
- {
-+ if (codec->no_jack_detect)
-+ return false;
- if (!(snd_hda_query_pin_caps(codec, nid) & AC_PINCAP_PRES_DETECT))
- return false;
- if (!codec->ignore_misc_bit &&
---
-1.7.9.5
-
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
deleted file mode 100644
index f040ea2..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0041-ALSA-hda-add-support-for-Uniwill-ECS-M31EI-notebook.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 0c29db802dc506ead06e7fac2b2d4d139e818ae3 Mon Sep 17 00:00:00 2001
-From: Jaroslav Kysela <perex at perex.cz>
-Date: Tue, 7 Feb 2012 14:18:14 +0100
-Subject: [PATCH 41/67] ALSA: hda - add support for Uniwill ECS M31EI notebook
-
-commit 416846d2b31fc740ed9d5a5ec116964fb43c4358 upstream.
-
-This hardware requires same fixup for the node 0x0f like Asus A6Rp.
-More information: https://bugzilla.redhat.com/show_bug.cgi?id=785417
-
-Signed-off-by: Jaroslav Kysela <perex at perex.cz>
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- sound/pci/hda/patch_realtek.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
-index 0bc5a46..7d304af 100644
---- a/sound/pci/hda/patch_realtek.c
-+++ b/sound/pci/hda/patch_realtek.c
-@@ -5318,6 +5318,7 @@ static const struct alc_fixup alc861_fixups[] = {
-
- static const struct snd_pci_quirk alc861_fixup_tbl[] = {
- SND_PCI_QUIRK_VENDOR(0x1043, "ASUS laptop", PINFIX_ASUS_A6RP),
-+ SND_PCI_QUIRK(0x1584, 0x0000, "Uniwill ECS M31EI", PINFIX_ASUS_A6RP),
- SND_PCI_QUIRK(0x1584, 0x2b01, "Haier W18", PINFIX_ASUS_A6RP),
- SND_PCI_QUIRK(0x1734, 0x10c7, "FSC Amilo Pi1505", PINFIX_FSC_AMILO_PI1505),
- {}
---
-1.7.9.5
-
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
deleted file mode 100644
index 588a0ed..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0042-ALSA-hda-Suppress-auto-mute-feature-on-some-machines.patch
+++ /dev/null
@@ -1,93 +0,0 @@
-From bc9c3f7a38a28cba8ad0455548f064a81a8c9a69 Mon Sep 17 00:00:00 2001
-From: Takashi Iwai <tiwai at suse.de>
-Date: Mon, 13 Feb 2012 11:56:25 +0100
-Subject: [PATCH 42/67] ALSA: hda - Suppress auto-mute feature on some
- machines with ALC861
-
-commit e652f4c861fb7f1f59ff0828db0d85578471932d upstream.
-
-A few machines with ALC861 & co are reported not to work properly with
-the auto-mute feature in software. The auto-mute feature is implemented
-in the hardware level, and the jack-detection never works with them.
-
-Also, rename the fixup index as ALC861_FIXUP_* to follow the standard.
-
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- sound/pci/hda/patch_realtek.c | 38 ++++++++++++++++++++++++++++++--------
- 1 file changed, 30 insertions(+), 8 deletions(-)
-
-diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
-index 7d304af..d4616fb 100644
---- a/sound/pci/hda/patch_realtek.c
-+++ b/sound/pci/hda/patch_realtek.c
-@@ -5278,8 +5278,10 @@ static const struct hda_amp_list alc861_loopbacks[] = {
-
- /* Pin config fixes */
- enum {
-- PINFIX_FSC_AMILO_PI1505,
-- PINFIX_ASUS_A6RP,
-+ ALC861_FIXUP_FSC_AMILO_PI1505,
-+ ALC861_FIXUP_AMP_VREF_0F,
-+ ALC861_FIXUP_NO_JACK_DETECT,
-+ ALC861_FIXUP_ASUS_A6RP,
- };
-
- /* On some laptops, VREF of pin 0x0f is abused for controlling the main amp */
-@@ -5301,8 +5303,16 @@ static void alc861_fixup_asus_amp_vref_0f(struct hda_codec *codec,
- spec->keep_vref_in_automute = 1;
- }
-
-+/* suppress the jack-detection */
-+static void alc_fixup_no_jack_detect(struct hda_codec *codec,
-+ const struct alc_fixup *fix, int action)
-+{
-+ if (action == ALC_FIXUP_ACT_PRE_PROBE)
-+ codec->no_jack_detect = 1;
-+}
-+
- static const struct alc_fixup alc861_fixups[] = {
-- [PINFIX_FSC_AMILO_PI1505] = {
-+ [ALC861_FIXUP_FSC_AMILO_PI1505] = {
- .type = ALC_FIXUP_PINS,
- .v.pins = (const struct alc_pincfg[]) {
- { 0x0b, 0x0221101f }, /* HP */
-@@ -5310,17 +5320,29 @@ static const struct alc_fixup alc861_fixups[] = {
- { }
- }
- },
-- [PINFIX_ASUS_A6RP] = {
-+ [ALC861_FIXUP_AMP_VREF_0F] = {
- .type = ALC_FIXUP_FUNC,
- .v.func = alc861_fixup_asus_amp_vref_0f,
- },
-+ [ALC861_FIXUP_NO_JACK_DETECT] = {
-+ .type = ALC_FIXUP_FUNC,
-+ .v.func = alc_fixup_no_jack_detect,
-+ },
-+ [ALC861_FIXUP_ASUS_A6RP] = {
-+ .type = ALC_FIXUP_FUNC,
-+ .v.func = alc861_fixup_asus_amp_vref_0f,
-+ .chained = true,
-+ .chain_id = ALC861_FIXUP_NO_JACK_DETECT,
-+ }
- };
-
- static const struct snd_pci_quirk alc861_fixup_tbl[] = {
-- SND_PCI_QUIRK_VENDOR(0x1043, "ASUS laptop", PINFIX_ASUS_A6RP),
-- SND_PCI_QUIRK(0x1584, 0x0000, "Uniwill ECS M31EI", PINFIX_ASUS_A6RP),
-- SND_PCI_QUIRK(0x1584, 0x2b01, "Haier W18", PINFIX_ASUS_A6RP),
-- SND_PCI_QUIRK(0x1734, 0x10c7, "FSC Amilo Pi1505", PINFIX_FSC_AMILO_PI1505),
-+ SND_PCI_QUIRK(0x1043, 0x1393, "ASUS A6Rp", ALC861_FIXUP_ASUS_A6RP),
-+ SND_PCI_QUIRK_VENDOR(0x1043, "ASUS laptop", ALC861_FIXUP_AMP_VREF_0F),
-+ SND_PCI_QUIRK(0x1462, 0x7254, "HP DX2200", ALC861_FIXUP_NO_JACK_DETECT),
-+ SND_PCI_QUIRK(0x1584, 0x2b01, "Haier W18", ALC861_FIXUP_AMP_VREF_0F),
-+ SND_PCI_QUIRK(0x1584, 0x0000, "Uniwill ECS M31EI", ALC861_FIXUP_AMP_VREF_0F),
-+ SND_PCI_QUIRK(0x1734, 0x10c7, "FSC Amilo Pi1505", ALC861_FIXUP_FSC_AMILO_PI1505),
- {}
- };
-
---
-1.7.9.5
-
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
deleted file mode 100644
index bfbb148..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0043-ALSA-hda-Add-another-jack-detection-suppression-for-.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From 5dadca9a4cd269970d942d9e235320f30c425b31 Mon Sep 17 00:00:00 2001
-From: Takashi Iwai <tiwai at suse.de>
-Date: Mon, 13 Feb 2012 12:03:25 +0100
-Subject: [PATCH 43/67] ALSA: hda - Add another jack-detection suppression for
- ASUS ALC892
-
-commit 1565cc358585be40608b46f18f7ac431a1aae2bc upstream.
-
-Add the jack-detect suppression for an ASUS machine with ALC892 codec.
-
-Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=42655
-
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- sound/pci/hda/patch_realtek.c | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
-index d4616fb..ba8a877 100644
---- a/sound/pci/hda/patch_realtek.c
-+++ b/sound/pci/hda/patch_realtek.c
-@@ -5594,6 +5594,7 @@ enum {
- ALC662_FIXUP_ASUS_MODE6,
- ALC662_FIXUP_ASUS_MODE7,
- ALC662_FIXUP_ASUS_MODE8,
-+ ALC662_FIXUP_NO_JACK_DETECT,
- };
-
- static const struct alc_fixup alc662_fixups[] = {
-@@ -5739,6 +5740,10 @@ static const struct alc_fixup alc662_fixups[] = {
- .chained = true,
- .chain_id = ALC662_FIXUP_SKU_IGNORE
- },
-+ [ALC662_FIXUP_NO_JACK_DETECT] = {
-+ .type = ALC_FIXUP_FUNC,
-+ .v.func = alc_fixup_no_jack_detect,
-+ },
- };
-
- static const struct snd_pci_quirk alc662_fixup_tbl[] = {
-@@ -5747,6 +5752,7 @@ static const struct snd_pci_quirk alc662_fixup_tbl[] = {
- SND_PCI_QUIRK(0x1025, 0x031c, "Gateway NV79", ALC662_FIXUP_SKU_IGNORE),
- SND_PCI_QUIRK(0x1025, 0x038b, "Acer Aspire 8943G", ALC662_FIXUP_ASPIRE),
- SND_PCI_QUIRK(0x103c, 0x1632, "HP RP5800", ALC662_FIXUP_HP_RP5800),
-+ SND_PCI_QUIRK(0x1043, 0x8469, "ASUS mobo", ALC662_FIXUP_NO_JACK_DETECT),
- SND_PCI_QUIRK(0x105b, 0x0cd6, "Foxconn", ALC662_FIXUP_ASUS_MODE2),
- SND_PCI_QUIRK(0x144d, 0xc051, "Samsung R720", ALC662_FIXUP_IDEAPAD),
- SND_PCI_QUIRK(0x17aa, 0x38af, "Lenovo Ideapad Y550P", ALC662_FIXUP_IDEAPAD),
---
-1.7.9.5
-
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
deleted file mode 100644
index 925129a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0044-ALSA-HDA-Pin-fixup-for-Zotac-Z68-motherboard.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From 733c9de011d1599e23402465b1bd33730bee4fc1 Mon Sep 17 00:00:00 2001
-From: David Henningsson <david.henningsson at canonical.com>
-Date: Tue, 12 Jun 2012 13:15:12 +0200
-Subject: [PATCH 44/67] ALSA: HDA: Pin fixup for Zotac Z68 motherboard
-
-commit edfe3bfc1b779ddda9bcff523eb022dda37b93c8 upstream.
-
-Pin 0x1b was connected to the front panel connector, which according to
-the HDA standard should contain a mic and a headphone. In this case,
-the headphone was listed as "line out" by BIOS.
-
-BugLink: https://bugs.launchpad.net/bugs/993162
-Signed-off-by: David Henningsson <david.henningsson at canonical.com>
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- sound/pci/hda/patch_realtek.c | 9 +++++++++
- 1 file changed, 9 insertions(+)
-
-diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
-index ba8a877..0005bde 100644
---- a/sound/pci/hda/patch_realtek.c
-+++ b/sound/pci/hda/patch_realtek.c
-@@ -5595,6 +5595,7 @@ enum {
- ALC662_FIXUP_ASUS_MODE7,
- ALC662_FIXUP_ASUS_MODE8,
- ALC662_FIXUP_NO_JACK_DETECT,
-+ ALC662_FIXUP_ZOTAC_Z68,
- };
-
- static const struct alc_fixup alc662_fixups[] = {
-@@ -5744,6 +5745,13 @@ static const struct alc_fixup alc662_fixups[] = {
- .type = ALC_FIXUP_FUNC,
- .v.func = alc_fixup_no_jack_detect,
- },
-+ [ALC662_FIXUP_ZOTAC_Z68] = {
-+ .type = ALC_FIXUP_PINS,
-+ .v.pins = (const struct alc_pincfg[]) {
-+ { 0x1b, 0x02214020 }, /* Front HP */
-+ { }
-+ }
-+ },
- };
-
- static const struct snd_pci_quirk alc662_fixup_tbl[] = {
-@@ -5757,6 +5765,7 @@ static const struct snd_pci_quirk alc662_fixup_tbl[] = {
- SND_PCI_QUIRK(0x144d, 0xc051, "Samsung R720", ALC662_FIXUP_IDEAPAD),
- SND_PCI_QUIRK(0x17aa, 0x38af, "Lenovo Ideapad Y550P", ALC662_FIXUP_IDEAPAD),
- SND_PCI_QUIRK(0x17aa, 0x3a0d, "Lenovo Ideapad Y550", ALC662_FIXUP_IDEAPAD),
-+ SND_PCI_QUIRK(0x19da, 0xa130, "Zotac Z68", ALC662_FIXUP_ZOTAC_Z68),
- SND_PCI_QUIRK(0x1b35, 0x2206, "CZC P10T", ALC662_FIXUP_CZC_P10T),
-
- #if 0
---
-1.7.9.5
-
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
deleted file mode 100644
index 940c459..0000000
--- 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
+++ /dev/null
@@ -1,68 +0,0 @@
-From 4b2cda453ae678e21afaa8d35cb77d670239e9cb Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Bj=C3=B8rn=20Mork?= <bjorn at mork.no>
-Date: Wed, 25 Jan 2012 13:03:29 +0100
-Subject: [PATCH 45/67] usb: cdc-wdm: Add device-id for Huawei 3G/LTE modems
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit fec67b45bf045582c3172101970090d640cd56d9 upstream.
-
-[v2: Editorial changes suggested by Sergei Shtylyov]
-
-These modems use the Qualcomm MSM Interface (QMI) protocol for
-management of their CDC ECM like wwan interface. This driver
-is perfect for exporting the protocol to userspace.
-
-The created character device will be indistinguishable from a
-common AT command based Device Management interface, so
-userspace applications must do some intelligent matching
-on the USB device.
-
-Cc: Sergei Shtylyov <sshtylyov at mvista.com>
-Signed-off-by: Bjørn Mork <bjorn at mork.no>
-Acked-by: Oliver Neukum <oneukum at suse.de>
-Acked-by: Marcel Holtmann <marcel at holtmann.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/class/cdc-wdm.c | 16 ++++++++++++++++
- 1 file changed, 16 insertions(+)
-
-diff --git a/drivers/usb/class/cdc-wdm.c b/drivers/usb/class/cdc-wdm.c
-index 554ac90..19fb5fa 100644
---- a/drivers/usb/class/cdc-wdm.c
-+++ b/drivers/usb/class/cdc-wdm.c
-@@ -31,6 +31,8 @@
- #define DRIVER_AUTHOR "Oliver Neukum"
- #define DRIVER_DESC "USB Abstract Control Model driver for USB WCM Device Management"
-
-+#define HUAWEI_VENDOR_ID 0x12D1
-+
- static const struct usb_device_id wdm_ids[] = {
- {
- .match_flags = USB_DEVICE_ID_MATCH_INT_CLASS |
-@@ -38,6 +40,20 @@ static const struct usb_device_id wdm_ids[] = {
- .bInterfaceClass = USB_CLASS_COMM,
- .bInterfaceSubClass = USB_CDC_SUBCLASS_DMM
- },
-+ {
-+ /*
-+ * Huawei E392, E398 and possibly other Qualcomm based modems
-+ * embed the Qualcomm QMI protocol inside CDC on CDC ECM like
-+ * control interfaces. Userspace access to this is required
-+ * to configure the accompanying data interface
-+ */
-+ .match_flags = USB_DEVICE_ID_MATCH_VENDOR |
-+ USB_DEVICE_ID_MATCH_INT_INFO,
-+ .idVendor = HUAWEI_VENDOR_ID,
-+ .bInterfaceClass = USB_CLASS_VENDOR_SPEC,
-+ .bInterfaceSubClass = 1,
-+ .bInterfaceProtocol = 9, /* NOTE: CDC ECM control interface! */
-+ },
- { }
- };
-
---
-1.7.9.5
-
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
deleted file mode 100644
index 954ac8c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0046-USB-qcserial-Add-Sierra-Wireless-device-IDs.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 1fc193abca612fd776509b13f114254443d79300 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Bj=C3=B8rn=20Mork?= <bjorn at mork.no>
-Date: Thu, 24 May 2012 11:19:04 +0200
-Subject: [PATCH 46/67] USB: qcserial: Add Sierra Wireless device IDs
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit c41444ccfa33a1c20efa319e554cb531576e64a2 upstream.
-
-Some additional IDs found in the BSD/GPL licensed out-of-tree
-GobiSerial driver from Sierra Wireless.
-
-Signed-off-by: Bjørn Mork <bjorn at mork.no>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/serial/qcserial.c | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-diff --git a/drivers/usb/serial/qcserial.c b/drivers/usb/serial/qcserial.c
-index 3187d8b..6634477 100644
---- a/drivers/usb/serial/qcserial.c
-+++ b/drivers/usb/serial/qcserial.c
-@@ -105,7 +105,13 @@ static const struct usb_device_id id_table[] = {
- {USB_DEVICE(0x1410, 0xa021)}, /* Novatel Gobi 3000 Composite */
- {USB_DEVICE(0x413c, 0x8193)}, /* Dell Gobi 3000 QDL */
- {USB_DEVICE(0x413c, 0x8194)}, /* Dell Gobi 3000 Composite */
-+ {USB_DEVICE(0x1199, 0x9010)}, /* Sierra Wireless Gobi 3000 QDL */
-+ {USB_DEVICE(0x1199, 0x9012)}, /* Sierra Wireless Gobi 3000 QDL */
- {USB_DEVICE(0x1199, 0x9013)}, /* Sierra Wireless Gobi 3000 Modem device (MC8355) */
-+ {USB_DEVICE(0x1199, 0x9014)}, /* Sierra Wireless Gobi 3000 QDL */
-+ {USB_DEVICE(0x1199, 0x9015)}, /* Sierra Wireless Gobi 3000 Modem device */
-+ {USB_DEVICE(0x1199, 0x9018)}, /* Sierra Wireless Gobi 3000 QDL */
-+ {USB_DEVICE(0x1199, 0x9019)}, /* Sierra Wireless Gobi 3000 Modem device */
- {USB_DEVICE(0x12D1, 0x14F0)}, /* Sony Gobi 3000 QDL */
- {USB_DEVICE(0x12D1, 0x14F1)}, /* Sony Gobi 3000 Composite */
- { } /* Terminating entry */
---
-1.7.9.5
-
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
deleted file mode 100644
index 7d101e2..0000000
--- 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
+++ /dev/null
@@ -1,48 +0,0 @@
-From 4303646551b97b4a9d0dfe195a85a32840e920b6 Mon Sep 17 00:00:00 2001
-From: Evan McNabb <evan at mcnabbs.org>
-Date: Fri, 25 May 2012 22:46:14 -0400
-Subject: [PATCH 47/67] USB: ftdi-sio: Add support for RT Systems USB-RTS01
- serial adapter
-
-commit e00a54d772210d450e5c1a801534c3c8a448549f upstream.
-
-Add support for RT Systems USB-RTS01 USB to Serial adapter:
-http://www.rtsystemsinc.com/Photos/USBRTS01.html
-
-Tested by controlling Icom IC-718 amateur radio transceiver via hamlib.
-
-Signed-off-by: Evan McNabb <evan at mcnabbs.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/serial/ftdi_sio.c | 1 +
- drivers/usb/serial/ftdi_sio_ids.h | 1 +
- 2 files changed, 2 insertions(+)
-
-diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
-index 450bdfe..4045e39 100644
---- a/drivers/usb/serial/ftdi_sio.c
-+++ b/drivers/usb/serial/ftdi_sio.c
-@@ -737,6 +737,7 @@ static struct usb_device_id id_table_combined [] = {
- { USB_DEVICE(TELLDUS_VID, TELLDUS_TELLSTICK_PID) },
- { USB_DEVICE(RTSYSTEMS_VID, RTSYSTEMS_SERIAL_VX7_PID) },
- { USB_DEVICE(RTSYSTEMS_VID, RTSYSTEMS_CT29B_PID) },
-+ { USB_DEVICE(RTSYSTEMS_VID, RTSYSTEMS_RTS01_PID) },
- { USB_DEVICE(FTDI_VID, FTDI_MAXSTREAM_PID) },
- { USB_DEVICE(FTDI_VID, FTDI_PHI_FISCO_PID) },
- { USB_DEVICE(TML_VID, TML_USB_SERIAL_PID) },
-diff --git a/drivers/usb/serial/ftdi_sio_ids.h b/drivers/usb/serial/ftdi_sio_ids.h
-index 219b199..d27d7d7 100644
---- a/drivers/usb/serial/ftdi_sio_ids.h
-+++ b/drivers/usb/serial/ftdi_sio_ids.h
-@@ -784,6 +784,7 @@
- #define RTSYSTEMS_VID 0x2100 /* Vendor ID */
- #define RTSYSTEMS_SERIAL_VX7_PID 0x9e52 /* Serial converter for VX-7 Radios using FT232RL */
- #define RTSYSTEMS_CT29B_PID 0x9e54 /* CT29B Radio Cable */
-+#define RTSYSTEMS_RTS01_PID 0x9e57 /* USB-RTS01 Radio Cable */
-
-
- /*
---
-1.7.9.5
-
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
deleted file mode 100644
index 276c640..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0048-USB-serial-cp210x-add-Optris-MS-Pro-usb-id.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From e7e29e6887d233e82b4dae59804228688370bcfa Mon Sep 17 00:00:00 2001
-From: Mikko Tuumanen <mikko.tuumanen at qemsoftware.com>
-Date: Fri, 1 Jun 2012 11:28:55 +0300
-Subject: [PATCH 48/67] USB: serial: cp210x: add Optris MS Pro usb id
-
-commit 5bbfa6f427c1d7244a5ee154ab8fa37265a5e049 upstream.
-
-Signed-off-by: Mikko Tuumanen <mikko.tuumanen at qemsoftware.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/serial/cp210x.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/usb/serial/cp210x.c b/drivers/usb/serial/cp210x.c
-index f2c57e0..aa0c43f 100644
---- a/drivers/usb/serial/cp210x.c
-+++ b/drivers/usb/serial/cp210x.c
-@@ -82,6 +82,7 @@ static const struct usb_device_id id_table[] = {
- { USB_DEVICE(0x10C4, 0x8066) }, /* Argussoft In-System Programmer */
- { USB_DEVICE(0x10C4, 0x806F) }, /* IMS USB to RS422 Converter Cable */
- { USB_DEVICE(0x10C4, 0x807A) }, /* Crumb128 board */
-+ { USB_DEVICE(0x10C4, 0x80C4) }, /* Cygnal Integrated Products, Inc., Optris infrared thermometer */
- { USB_DEVICE(0x10C4, 0x80CA) }, /* Degree Controls Inc */
- { USB_DEVICE(0x10C4, 0x80DD) }, /* Tracient RFID */
- { USB_DEVICE(0x10C4, 0x80F6) }, /* Suunto sports instrument */
---
-1.7.9.5
-
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
deleted file mode 100644
index 2932333..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0049-USB-serial-sierra-Add-support-for-Sierra-Wireless-Ai.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 73b49603c6b6e058eeff4bea1866156fd35847d1 Mon Sep 17 00:00:00 2001
-From: Tom Cassidy <tomas.cassidy at gmail.com>
-Date: Wed, 6 Jun 2012 17:08:48 +1000
-Subject: [PATCH 49/67] USB: serial: sierra: Add support for Sierra Wireless
- AirCard 320U modem
-
-commit 19a3dd1575e954e8c004413bee3e12d3962f2525 upstream.
-
-Add support for Sierra Wireless AirCard 320U modem
-
-Signed-off-by: Tomas Cassidy <tomas.cassidy at gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/serial/sierra.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/drivers/usb/serial/sierra.c b/drivers/usb/serial/sierra.c
-index e093585..535d087 100644
---- a/drivers/usb/serial/sierra.c
-+++ b/drivers/usb/serial/sierra.c
-@@ -304,6 +304,10 @@ static const struct usb_device_id id_table[] = {
- { USB_DEVICE(0x1199, 0x68A3), /* Sierra Wireless Direct IP modems */
- .driver_info = (kernel_ulong_t)&direct_ip_interface_blacklist
- },
-+ /* AT&T Direct IP LTE modems */
-+ { USB_DEVICE_AND_INTERFACE_INFO(0x0F3D, 0x68AA, 0xFF, 0xFF, 0xFF),
-+ .driver_info = (kernel_ulong_t)&direct_ip_interface_blacklist
-+ },
- { USB_DEVICE(0x0f3d, 0x68A3), /* Airprime/Sierra Wireless Direct IP modems */
- .driver_info = (kernel_ulong_t)&direct_ip_interface_blacklist
- },
---
-1.7.9.5
-
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
deleted file mode 100644
index 0685a5c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0050-USB-option-Updated-Huawei-K4605-has-better-id.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 547f4fcdd71718e4522557b1d9210d11ef00d17e Mon Sep 17 00:00:00 2001
-From: Andrew Bird <ajb at spheresystems.co.uk>
-Date: Mon, 28 May 2012 12:43:06 +0100
-Subject: [PATCH 50/67] USB: option: Updated Huawei K4605 has better id
-
-commit 42ca7da1c2363dbef4ba1b6917c4c02274b6a5e2 upstream.
-
-Later firmwares for this device now have proper subclass and
-protocol info so we can identify it nicely without needing to use
-the blacklist. I'm not removing the old 0xff matching as there
-may be devices in the field that still need that.
-
-Signed-off-by: Andrew Bird <ajb at spheresystems.co.uk>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-[bwh: Backported to 3.2: adjust context]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/serial/option.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
-index cbe3451..ef57b1e 100644
---- a/drivers/usb/serial/option.c
-+++ b/drivers/usb/serial/option.c
-@@ -666,6 +666,8 @@ static const struct usb_device_id option_ids[] = {
- { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3806, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4605, 0xff, 0xff, 0xff),
- .driver_info = (kernel_ulong_t) &huawei_cdc12_blacklist },
-+ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4605, 0xff, 0x01, 0x31) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4605, 0xff, 0x01, 0x32) },
- { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3770, 0xff, 0x02, 0x31) },
- { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3770, 0xff, 0x02, 0x32) },
- { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3771, 0xff, 0x02, 0x31) },
---
-1.7.9.5
-
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
deleted file mode 100644
index 3c0c6a4..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0051-USB-mct_u232-Fix-incorrect-TIOCMSET-return.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From 1c51f7fd275092f5a0aa6063a04711bc5d0a2ede Mon Sep 17 00:00:00 2001
-From: Alan Cox <alan at linux.intel.com>
-Date: Tue, 22 May 2012 20:45:13 +0100
-Subject: [PATCH 51/67] USB: mct_u232: Fix incorrect TIOCMSET return
-
-commit 1aa3c63cf0a79153ee13c8f82e4eb6c40b66a161 upstream.
-
-The low level helper returns 1 on success. The ioctl should however return
-0. As this is the only user of the helper return, make the helper return 0 or
-an error code.
-
-Resolves-bug: https://bugzilla.kernel.org/show_bug.cgi?id=43009
-Signed-off-by: Alan Cox <alan at linux.intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/serial/mct_u232.c | 13 ++++++++-----
- 1 file changed, 8 insertions(+), 5 deletions(-)
-
-diff --git a/drivers/usb/serial/mct_u232.c b/drivers/usb/serial/mct_u232.c
-index ba0d287..42de17b 100644
---- a/drivers/usb/serial/mct_u232.c
-+++ b/drivers/usb/serial/mct_u232.c
-@@ -359,13 +359,16 @@ static int mct_u232_set_modem_ctrl(struct usb_serial *serial,
- MCT_U232_SET_REQUEST_TYPE,
- 0, 0, buf, MCT_U232_SET_MODEM_CTRL_SIZE,
- WDR_TIMEOUT);
-- if (rc < 0)
-- dev_err(&serial->dev->dev,
-- "Set MODEM CTRL 0x%x failed (error = %d)\n", mcr, rc);
-+ kfree(buf);
-+
- dbg("set_modem_ctrl: state=0x%x ==> mcr=0x%x", control_state, mcr);
-
-- kfree(buf);
-- return rc;
-+ if (rc < 0) {
-+ dev_err(&serial->dev->dev,
-+ "Set MODEM CTRL 0x%x failed (error = %d)\n", mcr, rc);
-+ return rc;
-+ }
-+ return 0;
- } /* mct_u232_set_modem_ctrl */
-
- static int mct_u232_get_modem_stat(struct usb_serial *serial,
---
-1.7.9.5
-
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
deleted file mode 100644
index 7e8970a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0052-USB-option-fix-port-data-abuse.patch
+++ /dev/null
@@ -1,81 +0,0 @@
-From 34491f4f5c53bc499adfe6eec7c146592f295bed Mon Sep 17 00:00:00 2001
-From: Johan Hovold <jhovold at gmail.com>
-Date: Tue, 29 May 2012 17:57:52 +0200
-Subject: [PATCH 52/67] USB: option: fix port-data abuse
-
-commit 4273f9878b0a8271df055e3c8f2e7f08c6a4a2f4 upstream.
-
-Commit 8b4c6a3ab596961b78465 ("USB: option: Use generic USB wwan code")
-moved option port-data allocation to usb_wwan_startup but still cast the
-port data to the old struct...
-
-Signed-off-by: Johan Hovold <jhovold at gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-[bwh: Backported to 3.2: adjust context]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/serial/option.c | 34 +++-------------------------------
- 1 file changed, 3 insertions(+), 31 deletions(-)
-
-diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
-index ef57b1e..5be3915 100644
---- a/drivers/usb/serial/option.c
-+++ b/drivers/usb/serial/option.c
-@@ -1269,35 +1269,6 @@ static struct usb_serial_driver option_1port_device = {
-
- static int debug;
-
--/* per port private data */
--
--#define N_IN_URB 4
--#define N_OUT_URB 4
--#define IN_BUFLEN 4096
--#define OUT_BUFLEN 4096
--
--struct option_port_private {
-- /* Input endpoints and buffer for this port */
-- struct urb *in_urbs[N_IN_URB];
-- u8 *in_buffer[N_IN_URB];
-- /* Output endpoints and buffer for this port */
-- struct urb *out_urbs[N_OUT_URB];
-- u8 *out_buffer[N_OUT_URB];
-- unsigned long out_busy; /* Bit vector of URBs in use */
-- int opened;
-- struct usb_anchor delayed;
--
-- /* Settings for the port */
-- int rts_state; /* Handshaking pins (outputs) */
-- int dtr_state;
-- int cts_state; /* Handshaking pins (inputs) */
-- int dsr_state;
-- int dcd_state;
-- int ri_state;
--
-- unsigned long tx_start_time[N_OUT_URB];
--};
--
- /* Functions used by new usb-serial code. */
- static int __init option_init(void)
- {
-@@ -1400,7 +1371,8 @@ static void option_instat_callback(struct urb *urb)
- int err;
- int status = urb->status;
- struct usb_serial_port *port = urb->context;
-- struct option_port_private *portdata = usb_get_serial_port_data(port);
-+ struct usb_wwan_port_private *portdata =
-+ usb_get_serial_port_data(port);
-
- dbg("%s", __func__);
- dbg("%s: urb %p port %p has data %p", __func__, urb, port, portdata);
-@@ -1461,7 +1433,7 @@ static int option_send_setup(struct usb_serial_port *port)
- struct usb_serial *serial = port->serial;
- struct usb_wwan_intf_private *intfdata =
- (struct usb_wwan_intf_private *) serial->private;
-- struct option_port_private *portdata;
-+ struct usb_wwan_port_private *portdata;
- int ifNum = serial->interface->cur_altsetting->desc.bInterfaceNumber;
- int val = 0;
- dbg("%s", __func__);
---
-1.7.9.5
-
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
deleted file mode 100644
index 3b0f86d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0053-USB-option-fix-memory-leak.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From 84fb397f8fc0802c2f0422044a4c9cd34f480b44 Mon Sep 17 00:00:00 2001
-From: Johan Hovold <jhovold at gmail.com>
-Date: Tue, 29 May 2012 18:22:48 +0200
-Subject: [PATCH 53/67] USB: option: fix memory leak
-
-commit b9c3aab315b51f81649a0d737c4c73783fbd8de0 upstream.
-
-Fix memory leak introduced by commit 383cedc3bb435de7a2 ("USB: serial:
-full autosuspend support for the option driver") which allocates
-usb-serial data but never frees it.
-
-Signed-off-by: Johan Hovold <jhovold at gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/serial/option.c | 12 +++++++++++-
- 1 file changed, 11 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
-index 5be3915..4bd2b85 100644
---- a/drivers/usb/serial/option.c
-+++ b/drivers/usb/serial/option.c
-@@ -47,6 +47,7 @@
- /* Function prototypes */
- static int option_probe(struct usb_serial *serial,
- const struct usb_device_id *id);
-+static void option_release(struct usb_serial *serial);
- static int option_send_setup(struct usb_serial_port *port);
- static void option_instat_callback(struct urb *urb);
-
-@@ -1259,7 +1260,7 @@ static struct usb_serial_driver option_1port_device = {
- .ioctl = usb_wwan_ioctl,
- .attach = usb_wwan_startup,
- .disconnect = usb_wwan_disconnect,
-- .release = usb_wwan_release,
-+ .release = option_release,
- .read_int_callback = option_instat_callback,
- #ifdef CONFIG_PM
- .suspend = usb_wwan_suspend,
-@@ -1366,6 +1367,15 @@ static int option_probe(struct usb_serial *serial,
- return 0;
- }
-
-+static void option_release(struct usb_serial *serial)
-+{
-+ struct usb_wwan_intf_private *priv = usb_get_serial_data(serial);
-+
-+ usb_wwan_release(serial);
-+
-+ kfree(priv);
-+}
-+
- static void option_instat_callback(struct urb *urb)
- {
- int err;
---
-1.7.9.5
-
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
deleted file mode 100644
index 750f0cc..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0054-USB-option-add-more-YUGA-device-ids.patch
+++ /dev/null
@@ -1,94 +0,0 @@
-From 8d06ef9e804169ec35e4b67ae24e8712b0fa87bb Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?=E8=AF=B4=E4=B8=8D=E5=BE=97?= <gavin.kx at qq.com>
-Date: Mon, 28 May 2012 21:31:29 +0800
-Subject: [PATCH 54/67] USB: option: add more YUGA device ids
-
-commit 0ef0be15fd2564767f114c249fc4af704d8e16f4 upstream.
-
-Signed-off-by: gavin zhu <gavin.zhu at qq.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/serial/option.c | 44 ++++++++++++++++++++++++++-----------------
- 1 file changed, 27 insertions(+), 17 deletions(-)
-
-diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
-index 4bd2b85..61d6c31 100644
---- a/drivers/usb/serial/option.c
-+++ b/drivers/usb/serial/option.c
-@@ -426,7 +426,7 @@ static void option_instat_callback(struct urb *urb);
- #define SAMSUNG_VENDOR_ID 0x04e8
- #define SAMSUNG_PRODUCT_GT_B3730 0x6889
-
--/* YUGA products www.yuga-info.com*/
-+/* YUGA products www.yuga-info.com gavin.kx at qq.com */
- #define YUGA_VENDOR_ID 0x257A
- #define YUGA_PRODUCT_CEM600 0x1601
- #define YUGA_PRODUCT_CEM610 0x1602
-@@ -443,6 +443,8 @@ static void option_instat_callback(struct urb *urb);
- #define YUGA_PRODUCT_CEU516 0x160C
- #define YUGA_PRODUCT_CEU528 0x160D
- #define YUGA_PRODUCT_CEU526 0x160F
-+#define YUGA_PRODUCT_CEU881 0x161F
-+#define YUGA_PRODUCT_CEU882 0x162F
-
- #define YUGA_PRODUCT_CWM600 0x2601
- #define YUGA_PRODUCT_CWM610 0x2602
-@@ -458,23 +460,26 @@ static void option_instat_callback(struct urb *urb);
- #define YUGA_PRODUCT_CWU518 0x260B
- #define YUGA_PRODUCT_CWU516 0x260C
- #define YUGA_PRODUCT_CWU528 0x260D
-+#define YUGA_PRODUCT_CWU581 0x260E
- #define YUGA_PRODUCT_CWU526 0x260F
--
--#define YUGA_PRODUCT_CLM600 0x2601
--#define YUGA_PRODUCT_CLM610 0x2602
--#define YUGA_PRODUCT_CLM500 0x2603
--#define YUGA_PRODUCT_CLM510 0x2604
--#define YUGA_PRODUCT_CLM800 0x2605
--#define YUGA_PRODUCT_CLM900 0x2606
--
--#define YUGA_PRODUCT_CLU718 0x2607
--#define YUGA_PRODUCT_CLU716 0x2608
--#define YUGA_PRODUCT_CLU728 0x2609
--#define YUGA_PRODUCT_CLU726 0x260A
--#define YUGA_PRODUCT_CLU518 0x260B
--#define YUGA_PRODUCT_CLU516 0x260C
--#define YUGA_PRODUCT_CLU528 0x260D
--#define YUGA_PRODUCT_CLU526 0x260F
-+#define YUGA_PRODUCT_CWU582 0x261F
-+#define YUGA_PRODUCT_CWU583 0x262F
-+
-+#define YUGA_PRODUCT_CLM600 0x3601
-+#define YUGA_PRODUCT_CLM610 0x3602
-+#define YUGA_PRODUCT_CLM500 0x3603
-+#define YUGA_PRODUCT_CLM510 0x3604
-+#define YUGA_PRODUCT_CLM800 0x3605
-+#define YUGA_PRODUCT_CLM900 0x3606
-+
-+#define YUGA_PRODUCT_CLU718 0x3607
-+#define YUGA_PRODUCT_CLU716 0x3608
-+#define YUGA_PRODUCT_CLU728 0x3609
-+#define YUGA_PRODUCT_CLU726 0x360A
-+#define YUGA_PRODUCT_CLU518 0x360B
-+#define YUGA_PRODUCT_CLU516 0x360C
-+#define YUGA_PRODUCT_CLU528 0x360D
-+#define YUGA_PRODUCT_CLU526 0x360F
-
- /* Viettel products */
- #define VIETTEL_VENDOR_ID 0x2262
-@@ -1210,6 +1215,11 @@ static const struct usb_device_id option_ids[] = {
- { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CLU516) },
- { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CLU528) },
- { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CLU526) },
-+ { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEU881) },
-+ { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEU882) },
-+ { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CWU581) },
-+ { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CWU582) },
-+ { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CWU583) },
- { USB_DEVICE_AND_INTERFACE_INFO(VIETTEL_VENDOR_ID, VIETTEL_PRODUCT_VT1000, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZD_VENDOR_ID, ZD_PRODUCT_7000, 0xff, 0xff, 0xff) },
- { USB_DEVICE(LG_VENDOR_ID, LG_PRODUCT_L02C) }, /* docomo L-02C modem */
---
-1.7.9.5
-
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
deleted file mode 100644
index 6102fca..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0055-target-Return-error-to-initiator-if-SET-TARGET-PORT-.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From c9d1a254f6f1c91f6d43d9ec46d7d1d76f2f82ee Mon Sep 17 00:00:00 2001
-From: Roland Dreier <roland at purestorage.com>
-Date: Mon, 4 Jun 2012 23:24:51 -0700
-Subject: [PATCH 55/67] target: Return error to initiator if SET TARGET PORT
- GROUPS emulation fails
-
-commit 59e4f541baf728dbb426949bfa9f6862387ffd0e upstream.
-
-The error paths in target_emulate_set_target_port_groups() are all
-essentially "rc = -EINVAL; goto out;" but the code at "out:" ignores
-rc and always returns success. This means that even if eg explicit
-ALUA is turned off, the initiator will always see a good SCSI status
-for SET TARGET PORT GROUPS.
-
-Fix this by returning rc as is intended. It appears this bug was
-added by the following patch:
-
-commit 05d1c7c0d0db4cc25548d9aadebb416888a82327
-Author: Andy Grover <agrover at redhat.com>
-Date: Wed Jul 20 19:13:28 2011 +0000
-
- target: Make all control CDBs scatter-gather
-
-Signed-off-by: Roland Dreier <roland at purestorage.com>
-Cc: Andy Grover <agrover at redhat.com>
-Signed-off-by: Nicholas Bellinger <nab at linux-iscsi.org>
-[bwh: Backported to 3.2: we have transport_complete_task()
- and not target_complete_cmd()]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/target/target_core_alua.c | 8 +++++---
- 1 file changed, 5 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/target/target_core_alua.c b/drivers/target/target_core_alua.c
-index 5b05744..0364ca2 100644
---- a/drivers/target/target_core_alua.c
-+++ b/drivers/target/target_core_alua.c
-@@ -352,9 +352,11 @@ int target_emulate_set_target_port_groups(struct se_task *task)
-
- out:
- transport_kunmap_data_sg(cmd);
-- task->task_scsi_status = GOOD;
-- transport_complete_task(task, 1);
-- return 0;
-+ if (!rc) {
-+ task->task_scsi_status = GOOD;
-+ transport_complete_task(task, 1);
-+ }
-+ return rc;
- }
-
- static inline int core_alua_state_nonoptimized(
---
-1.7.9.5
-
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
deleted file mode 100644
index 1231863..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0056-USB-add-NO_D3_DURING_SLEEP-flag-and-revert-151b61284.patch
+++ /dev/null
@@ -1,179 +0,0 @@
-From edf1db1d2784e8b11a07eb3e6b7efb3cb45291ae Mon Sep 17 00:00:00 2001
-From: Alan Stern <stern at rowland.harvard.edu>
-Date: Wed, 13 Jun 2012 11:20:19 -0400
-Subject: [PATCH 56/67] USB: add NO_D3_DURING_SLEEP flag and revert
- 151b61284776be2
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit c2fb8a3fa25513de8fedb38509b1f15a5bbee47b upstream.
-
-This patch (as1558) fixes a problem affecting several ASUS computers:
-The machine crashes or corrupts memory when going into suspend if the
-ehci-hcd driver is bound to any controllers. Users have been forced
-to unbind or unload ehci-hcd before putting their systems to sleep.
-
-After extensive testing, it was determined that the machines don't
-like going into suspend when any EHCI controllers are in the PCI D3
-power state. Presumably this is a firmware bug, but there's nothing
-we can do about it except to avoid putting the controllers in D3
-during system sleep.
-
-The patch adds a new flag to indicate whether the problem is present,
-and avoids changing the controller's power state if the flag is set.
-Runtime suspend is unaffected; this matters only for system suspend.
-However as a side effect, the controller will not respond to remote
-wakeup requests while the system is asleep. Hence USB wakeup is not
-functional -- but of course, this is already true in the current state
-of affairs.
-
-A similar patch has already been applied as commit
-151b61284776be2d6f02d48c23c3625678960b97 (USB: EHCI: fix crash during
-suspend on ASUS computers). The patch supersedes that one and reverts
-it. There are two differences:
-
- The old patch added the flag at the USB level; this patch
- adds it at the PCI level.
-
- The old patch applied to all chipsets with the same vendor,
- subsystem vendor, and product IDs; this patch makes an
- exception for a known-good system (based on DMI information).
-
-Signed-off-by: Alan Stern <stern at rowland.harvard.edu>
-Tested-by: Dâniel Fraga <fragabr at gmail.com>
-Tested-by: Andrey Rahmatullin <wrar at wrar.name>
-Tested-by: Steven Rostedt <rostedt at goodmis.org>
-Reviewed-by: Rafael J. Wysocki <rjw at sisk.pl>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/pci/pci.c | 5 +++++
- drivers/pci/quirks.c | 26 ++++++++++++++++++++++++++
- drivers/usb/core/hcd-pci.c | 9 ---------
- drivers/usb/host/ehci-pci.c | 8 --------
- include/linux/pci.h | 2 ++
- include/linux/usb/hcd.h | 2 --
- 6 files changed, 33 insertions(+), 19 deletions(-)
-
-diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
-index 6d4a531..e5b75eb 100644
---- a/drivers/pci/pci.c
-+++ b/drivers/pci/pci.c
-@@ -1689,6 +1689,11 @@ int pci_prepare_to_sleep(struct pci_dev *dev)
- if (target_state == PCI_POWER_ERROR)
- return -EIO;
-
-+ /* Some devices mustn't be in D3 during system sleep */
-+ if (target_state == PCI_D3hot &&
-+ (dev->dev_flags & PCI_DEV_FLAGS_NO_D3_DURING_SLEEP))
-+ return 0;
-+
- pci_enable_wake(dev, target_state, device_may_wakeup(&dev->dev));
-
- error = pci_set_power_state(dev, target_state);
-diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
-index 78fda9c..3c56fec 100644
---- a/drivers/pci/quirks.c
-+++ b/drivers/pci/quirks.c
-@@ -2940,6 +2940,32 @@ static void __devinit disable_igfx_irq(struct pci_dev *dev)
- DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x0102, disable_igfx_irq);
- DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x010a, disable_igfx_irq);
-
-+/*
-+ * The Intel 6 Series/C200 Series chipset's EHCI controllers on many
-+ * ASUS motherboards will cause memory corruption or a system crash
-+ * if they are in D3 while the system is put into S3 sleep.
-+ */
-+static void __devinit asus_ehci_no_d3(struct pci_dev *dev)
-+{
-+ const char *sys_info;
-+ static const char good_Asus_board[] = "P8Z68-V";
-+
-+ if (dev->dev_flags & PCI_DEV_FLAGS_NO_D3_DURING_SLEEP)
-+ return;
-+ if (dev->subsystem_vendor != PCI_VENDOR_ID_ASUSTEK)
-+ return;
-+ sys_info = dmi_get_system_info(DMI_BOARD_NAME);
-+ if (sys_info && memcmp(sys_info, good_Asus_board,
-+ sizeof(good_Asus_board) - 1) == 0)
-+ return;
-+
-+ dev_info(&dev->dev, "broken D3 during system sleep on ASUS\n");
-+ dev->dev_flags |= PCI_DEV_FLAGS_NO_D3_DURING_SLEEP;
-+ device_set_wakeup_capable(&dev->dev, false);
-+}
-+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x1c26, asus_ehci_no_d3);
-+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x1c2d, asus_ehci_no_d3);
-+
- static void pci_do_fixups(struct pci_dev *dev, struct pci_fixup *f,
- struct pci_fixup *end)
- {
-diff --git a/drivers/usb/core/hcd-pci.c b/drivers/usb/core/hcd-pci.c
-index 5f1404a..61d08dd 100644
---- a/drivers/usb/core/hcd-pci.c
-+++ b/drivers/usb/core/hcd-pci.c
-@@ -495,15 +495,6 @@ static int hcd_pci_suspend_noirq(struct device *dev)
-
- pci_save_state(pci_dev);
-
-- /*
-- * Some systems crash if an EHCI controller is in D3 during
-- * a sleep transition. We have to leave such controllers in D0.
-- */
-- if (hcd->broken_pci_sleep) {
-- dev_dbg(dev, "Staying in PCI D0\n");
-- return retval;
-- }
--
- /* If the root hub is dead rather than suspended, disallow remote
- * wakeup. usb_hc_died() should ensure that both hosts are marked as
- * dying, so we only need to check the primary roothub.
-diff --git a/drivers/usb/host/ehci-pci.c b/drivers/usb/host/ehci-pci.c
-index ee85e81..a79e64b 100644
---- a/drivers/usb/host/ehci-pci.c
-+++ b/drivers/usb/host/ehci-pci.c
-@@ -144,14 +144,6 @@ static int ehci_pci_setup(struct usb_hcd *hcd)
- hcd->has_tt = 1;
- tdi_reset(ehci);
- }
-- if (pdev->subsystem_vendor == PCI_VENDOR_ID_ASUSTEK) {
-- /* EHCI #1 or #2 on 6 Series/C200 Series chipset */
-- if (pdev->device == 0x1c26 || pdev->device == 0x1c2d) {
-- ehci_info(ehci, "broken D3 during system sleep on ASUS\n");
-- hcd->broken_pci_sleep = 1;
-- device_set_wakeup_capable(&pdev->dev, false);
-- }
-- }
- break;
- case PCI_VENDOR_ID_TDI:
- if (pdev->device == PCI_DEVICE_ID_TDI_EHCI) {
-diff --git a/include/linux/pci.h b/include/linux/pci.h
-index 7cda65b..c0cfa0d 100644
---- a/include/linux/pci.h
-+++ b/include/linux/pci.h
-@@ -176,6 +176,8 @@ enum pci_dev_flags {
- PCI_DEV_FLAGS_NO_D3 = (__force pci_dev_flags_t) 2,
- /* Provide indication device is assigned by a Virtual Machine Manager */
- PCI_DEV_FLAGS_ASSIGNED = (__force pci_dev_flags_t) 4,
-+ /* Device causes system crash if in D3 during S3 sleep */
-+ PCI_DEV_FLAGS_NO_D3_DURING_SLEEP = (__force pci_dev_flags_t) 8,
- };
-
- enum pci_irq_reroute_variant {
-diff --git a/include/linux/usb/hcd.h b/include/linux/usb/hcd.h
-index 64cec8d..03354d5 100644
---- a/include/linux/usb/hcd.h
-+++ b/include/linux/usb/hcd.h
-@@ -128,8 +128,6 @@ struct usb_hcd {
- unsigned wireless:1; /* Wireless USB HCD */
- unsigned authorized_default:1;
- unsigned has_tt:1; /* Integrated TT in root hub */
-- unsigned broken_pci_sleep:1; /* Don't put the
-- controller in PCI-D3 for system sleep */
-
- int irq; /* irq allocated */
- void __iomem *regs; /* device memory/io */
---
-1.7.9.5
-
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
deleted file mode 100644
index abcb4c9..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0057-USB-serial-Enforce-USB-driver-and-USB-serial-driver-.patch
+++ /dev/null
@@ -1,162 +0,0 @@
-From 445ae7e401ef25e383d9784a4602b815b2a580e1 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Bj=C3=B8rn=20Mork?= <bjorn at mork.no>
-Date: Wed, 30 May 2012 10:00:14 +0200
-Subject: [PATCH 57/67] USB: serial: Enforce USB driver and USB serial driver
- match
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit 954c3f8a5f1b7716be9eee978b3bc85bae92d7c8 upstream.
-
-We need to make sure that the USB serial driver we find
-matches the USB driver whose probe we are currently
-executing. Otherwise we will end up with USB serial
-devices bound to the correct serial driver but wrong
-USB driver.
-
-An example of such cross-probing, where the usbserial_generic
-USB driver has found the sierra serial driver:
-
-May 29 18:26:15 nemi kernel: [ 4442.559246] usbserial_generic 4-4:1.0: Sierra USB modem converter detected
-May 29 18:26:20 nemi kernel: [ 4447.556747] usbserial_generic 4-4:1.2: Sierra USB modem converter detected
-May 29 18:26:25 nemi kernel: [ 4452.557288] usbserial_generic 4-4:1.3: Sierra USB modem converter detected
-
-sysfs view of the same problem:
-
-bjorn at nemi:~$ ls -l /sys/bus/usb/drivers/sierra/
-total 0
---w------- 1 root root 4096 May 29 18:23 bind
-lrwxrwxrwx 1 root root 0 May 29 18:23 module -> ../../../../module/usbserial
---w------- 1 root root 4096 May 29 18:23 uevent
---w------- 1 root root 4096 May 29 18:23 unbind
-bjorn at nemi:~$ ls -l /sys/bus/usb-serial/drivers/sierra/
-total 0
---w------- 1 root root 4096 May 29 18:23 bind
-lrwxrwxrwx 1 root root 0 May 29 18:23 module -> ../../../../module/sierra
--rw-r--r-- 1 root root 4096 May 29 18:23 new_id
-lrwxrwxrwx 1 root root 0 May 29 18:32 ttyUSB0 -> ../../../../devices/pci0000:00/0000:00:1d.7/usb4/4-4/4-4:1.0/ttyUSB0
-lrwxrwxrwx 1 root root 0 May 29 18:32 ttyUSB1 -> ../../../../devices/pci0000:00/0000:00:1d.7/usb4/4-4/4-4:1.2/ttyUSB1
-lrwxrwxrwx 1 root root 0 May 29 18:32 ttyUSB2 -> ../../../../devices/pci0000:00/0000:00:1d.7/usb4/4-4/4-4:1.3/ttyUSB2
---w------- 1 root root 4096 May 29 18:23 uevent
---w------- 1 root root 4096 May 29 18:23 unbind
-
-bjorn at nemi:~$ ls -l /sys/bus/usb/drivers/usbserial_generic/
-total 0
-lrwxrwxrwx 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
-lrwxrwxrwx 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
-lrwxrwxrwx 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
---w------- 1 root root 4096 May 29 18:33 bind
-lrwxrwxrwx 1 root root 0 May 29 18:33 module -> ../../../../module/usbserial
---w------- 1 root root 4096 May 29 18:22 uevent
---w------- 1 root root 4096 May 29 18:33 unbind
-bjorn at nemi:~$ ls -l /sys/bus/usb-serial/drivers/generic/
-total 0
---w------- 1 root root 4096 May 29 18:33 bind
-lrwxrwxrwx 1 root root 0 May 29 18:33 module -> ../../../../module/usbserial
--rw-r--r-- 1 root root 4096 May 29 18:33 new_id
---w------- 1 root root 4096 May 29 18:22 uevent
---w------- 1 root root 4096 May 29 18:33 unbind
-
-So we end up with a mismatch between the USB driver and the
-USB serial driver. The reason for the above is simple: The
-USB driver probe will succeed if *any* registered serial
-driver matches, and will use that serial driver for all
-serial driver functions.
-
-This makes ref counting go wrong. We count the USB driver
-as used, but not the USB serial driver. This may result
-in Oops'es as demonstrated by Johan Hovold <jhovold at gmail.com>:
-
-[11811.646396] drivers/usb/serial/usb-serial.c: get_free_serial 1
-[11811.646443] drivers/usb/serial/usb-serial.c: get_free_serial - minor base = 0
-[11811.646460] drivers/usb/serial/usb-serial.c: usb_serial_probe - registering ttyUSB0
-[11811.646766] usb 6-1: pl2303 converter now attached to ttyUSB0
-[11812.264197] USB Serial deregistering driver FTDI USB Serial Device
-[11812.264865] usbcore: deregistering interface driver ftdi_sio
-[11812.282180] USB Serial deregistering driver pl2303
-[11812.283141] pl2303 ttyUSB0: pl2303 converter now disconnected from ttyUSB0
-[11812.283272] usbcore: deregistering interface driver pl2303
-[11812.301056] USB Serial deregistering driver generic
-[11812.301186] usbcore: deregistering interface driver usbserial_generic
-[11812.301259] drivers/usb/serial/usb-serial.c: usb_serial_disconnect
-[11812.301823] BUG: unable to handle kernel paging request at f8e7438c
-[11812.301845] IP: [<f8e38445>] usb_serial_disconnect+0xb5/0x100 [usbserial]
-[11812.301871] *pde = 357ef067 *pte = 00000000
-[11812.301957] Oops: 0000 [#1] PREEMPT SMP
-[11812.301983] Modules linked in: usbserial(-) [last unloaded: pl2303]
-[11812.302008]
-[11812.302019] Pid: 1323, comm: modprobe Tainted: G W 3.4.0-rc7+ #101 Dell Inc. Vostro 1520/0T816J
-[11812.302115] EIP: 0060:[<f8e38445>] EFLAGS: 00010246 CPU: 1
-[11812.302130] EIP is at usb_serial_disconnect+0xb5/0x100 [usbserial]
-[11812.302141] EAX: f508a180 EBX: f508a180 ECX: 00000000 EDX: f8e74300
-[11812.302151] ESI: f5050800 EDI: 00000001 EBP: f5141e78 ESP: f5141e58
-[11812.302160] DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068
-[11812.302170] CR0: 8005003b CR2: f8e7438c CR3: 34848000 CR4: 000007d0
-[11812.302180] DR0: 00000000 DR1: 00000000 DR2: 00000000 DR3: 00000000
-[11812.302189] DR6: ffff0ff0 DR7: 00000400
-[11812.302199] Process modprobe (pid: 1323, ti=f5140000 task=f61e2bc0 task.ti=f5140000)
-[11812.302209] Stack:
-[11812.302216] f8e3be0f f8e3b29c f8e3ae00 00000000 f513641c f5136400 f513641c f507a540
-[11812.302325] f5141e98 c133d2c1 00000000 00000000 f509c400 f513641c f507a590 f5136450
-[11812.302372] f5141ea8 c12f0344 f513641c f507a590 f5141ebc c12f0c67 00000000 f507a590
-[11812.302419] Call Trace:
-[11812.302439] [<c133d2c1>] usb_unbind_interface+0x51/0x190
-[11812.302456] [<c12f0344>] __device_release_driver+0x64/0xb0
-[11812.302469] [<c12f0c67>] driver_detach+0x97/0xa0
-[11812.302483] [<c12f001c>] bus_remove_driver+0x6c/0xe0
-[11812.302500] [<c145938d>] ? __mutex_unlock_slowpath+0xcd/0x140
-[11812.302514] [<c12f0ff9>] driver_unregister+0x49/0x80
-[11812.302528] [<c1457df6>] ? printk+0x1d/0x1f
-[11812.302540] [<c133c50d>] usb_deregister+0x5d/0xb0
-[11812.302557] [<f8e37c55>] ? usb_serial_deregister+0x45/0x50 [usbserial]
-[11812.302575] [<f8e37c8d>] usb_serial_deregister_drivers+0x2d/0x40 [usbserial]
-[11812.302593] [<f8e3a6e2>] usb_serial_generic_deregister+0x12/0x20 [usbserial]
-[11812.302611] [<f8e3acf0>] usb_serial_exit+0x8/0x32 [usbserial]
-[11812.302716] [<c1080b48>] sys_delete_module+0x158/0x260
-[11812.302730] [<c110594e>] ? mntput+0x1e/0x30
-[11812.302746] [<c145c3c3>] ? sysenter_exit+0xf/0x18
-[11812.302746] [<c107777c>] ? trace_hardirqs_on_caller+0xec/0x170
-[11812.302746] [<c145c390>] sysenter_do_call+0x12/0x36
-[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
-[11812.302746] EIP: [<f8e38445>] usb_serial_disconnect+0xb5/0x100 [usbserial] SS:ESP 0068:f5141e58
-[11812.302746] CR2: 00000000f8e7438c
-
-Fix by only evaluating serial drivers pointing back to the
-USB driver we are currently probing. This still allows two
-or more drivers to match the same device, running their
-serial driver probes to sort out which one to use.
-
-Signed-off-by: Bjørn Mork <bjorn at mork.no>
-Reviewed-by: Felipe Balbi <balbi at ti.com>
-Tested-by: Johan Hovold <jhovold at gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/serial/usb-serial.c | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/usb/serial/usb-serial.c b/drivers/usb/serial/usb-serial.c
-index 38d7ebd..8bea45c 100644
---- a/drivers/usb/serial/usb-serial.c
-+++ b/drivers/usb/serial/usb-serial.c
-@@ -669,12 +669,14 @@ exit:
- static struct usb_serial_driver *search_serial_device(
- struct usb_interface *iface)
- {
-- const struct usb_device_id *id;
-+ const struct usb_device_id *id = NULL;
- struct usb_serial_driver *drv;
-+ struct usb_driver *driver = to_usb_driver(iface->dev.driver);
-
- /* Check if the usb id matches a known device */
- list_for_each_entry(drv, &usb_serial_driver_list, driver_list) {
-- id = get_iface_id(drv, iface);
-+ if (drv->usb_driver == driver)
-+ id = get_iface_id(drv, iface);
- if (id)
- return drv;
- }
---
-1.7.9.5
-
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
deleted file mode 100644
index 6243e98..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0058-xhci-Fix-invalid-loop-check-in-xhci_free_tt_info.patch
+++ /dev/null
@@ -1,89 +0,0 @@
-From 6007e93797d693599661f4547d329258ec711a9f Mon Sep 17 00:00:00 2001
-From: Takashi Iwai <tiwai at suse.de>
-Date: Fri, 1 Jun 2012 10:06:23 +0200
-Subject: [PATCH 58/67] xhci: Fix invalid loop check in xhci_free_tt_info()
-
-commit 46ed8f00d8982e49f8fe2c1a9cea192f640cb3ba upstream.
-
-xhci_free_tt_info() may access the invalid memory when it removes the
-last entry but the list is not empty. Then tt_next reaches to the
-list head but it still tries to check the tt_info of that entry.
-
-This patch fixes the bug and cleans up the messy code by rewriting
-with a simple list_for_each_entry_safe().
-
-This patch should be backported to kernels as old as 3.2, that contain
-the commit 839c817ce67178ca3c7c7ad534c571bba1e69ebe "xhci: Store
-information about roothubs and TTs."
-
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Signed-off-by: Sarah Sharp <sarah.a.sharp at linux.intel.com>
-Reviewed-by: Oliver Neukum <oneukum at suse.de>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/host/xhci-mem.c | 39 ++++++++++-----------------------------
- 1 file changed, 10 insertions(+), 29 deletions(-)
-
-diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c
-index 4232e868..b85eb36 100644
---- a/drivers/usb/host/xhci-mem.c
-+++ b/drivers/usb/host/xhci-mem.c
-@@ -693,10 +693,9 @@ static void xhci_free_tt_info(struct xhci_hcd *xhci,
- struct xhci_virt_device *virt_dev,
- int slot_id)
- {
-- struct list_head *tt;
- struct list_head *tt_list_head;
-- struct list_head *tt_next;
-- struct xhci_tt_bw_info *tt_info;
-+ struct xhci_tt_bw_info *tt_info, *next;
-+ bool slot_found = false;
-
- /* If the device never made it past the Set Address stage,
- * it may not have the real_port set correctly.
-@@ -708,34 +707,16 @@ static void xhci_free_tt_info(struct xhci_hcd *xhci,
- }
-
- tt_list_head = &(xhci->rh_bw[virt_dev->real_port - 1].tts);
-- if (list_empty(tt_list_head))
-- return;
--
-- list_for_each(tt, tt_list_head) {
-- tt_info = list_entry(tt, struct xhci_tt_bw_info, tt_list);
-- if (tt_info->slot_id == slot_id)
-+ list_for_each_entry_safe(tt_info, next, tt_list_head, tt_list) {
-+ /* Multi-TT hubs will have more than one entry */
-+ if (tt_info->slot_id == slot_id) {
-+ slot_found = true;
-+ list_del(&tt_info->tt_list);
-+ kfree(tt_info);
-+ } else if (slot_found) {
- break;
-+ }
- }
-- /* Cautionary measure in case the hub was disconnected before we
-- * stored the TT information.
-- */
-- if (tt_info->slot_id != slot_id)
-- return;
--
-- tt_next = tt->next;
-- tt_info = list_entry(tt, struct xhci_tt_bw_info,
-- tt_list);
-- /* Multi-TT hubs will have more than one entry */
-- do {
-- list_del(tt);
-- kfree(tt_info);
-- tt = tt_next;
-- if (list_empty(tt_list_head))
-- break;
-- tt_next = tt->next;
-- tt_info = list_entry(tt, struct xhci_tt_bw_info,
-- tt_list);
-- } while (tt_info->slot_id == slot_id);
- }
-
- int xhci_alloc_tt_info(struct xhci_hcd *xhci,
---
-1.7.9.5
-
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
deleted file mode 100644
index 41ec5ed..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0059-xhci-Don-t-free-endpoints-in-xhci_mem_cleanup.patch
+++ /dev/null
@@ -1,94 +0,0 @@
-From fcb37c126483592a507dafef265b134f975a749f Mon Sep 17 00:00:00 2001
-From: Takashi Iwai <tiwai at suse.de>
-Date: Fri, 1 Jun 2012 10:06:24 +0200
-Subject: [PATCH 59/67] xhci: Don't free endpoints in xhci_mem_cleanup()
-
-commit 32f1d2c536d0c26c5814cb0e6a0606c42d02fac1 upstream.
-
-This patch fixes a few issues introduced in the recent fix
-[f8a9e72d: USB: fix resource leak in xhci power loss path]
-
-- The endpoints listed in bw table are just links and each entry is an
- array member of dev->eps[]. But the commit above adds a kfree() call
- to these instances, and thus it results in memory corruption.
-
-- It clears only the first entry of rh_bw[], but there can be multiple
- ports.
-
-- It'd be safer to clear the list_head of ep as well, not only
- removing from the list, as it's checked in
- xhci_discover_or_reset_device().
-
-This patch should be backported to kernels as old as 3.2, that contain
-the commit 839c817ce67178ca3c7c7ad534c571bba1e69ebe "xhci: Store
-information about roothubs and TTs."
-
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Signed-off-by: Sarah Sharp <sarah.a.sharp at linux.intel.com>
-Reviewed-by: Oliver Neukum <oneukum at suse.de>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/host/xhci-mem.c | 35 ++++++++++++++---------------------
- 1 file changed, 14 insertions(+), 21 deletions(-)
-
-diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c
-index b85eb36..a40ab98 100644
---- a/drivers/usb/host/xhci-mem.c
-+++ b/drivers/usb/host/xhci-mem.c
-@@ -1680,17 +1680,9 @@ void xhci_mem_cleanup(struct xhci_hcd *xhci)
- {
- struct pci_dev *pdev = to_pci_dev(xhci_to_hcd(xhci)->self.controller);
- struct dev_info *dev_info, *next;
-- struct list_head *tt_list_head;
-- struct list_head *tt;
-- struct list_head *endpoints;
-- struct list_head *ep, *q;
-- struct xhci_tt_bw_info *tt_info;
-- struct xhci_interval_bw_table *bwt;
-- struct xhci_virt_ep *virt_ep;
--
- unsigned long flags;
- int size;
-- int i;
-+ int i, j, num_ports;
-
- /* Free the Event Ring Segment Table and the actual Event Ring */
- size = sizeof(struct xhci_erst_entry)*(xhci->erst.num_entries);
-@@ -1747,21 +1739,22 @@ void xhci_mem_cleanup(struct xhci_hcd *xhci)
- }
- spin_unlock_irqrestore(&xhci->lock, flags);
-
-- bwt = &xhci->rh_bw->bw_table;
-- for (i = 0; i < XHCI_MAX_INTERVAL; i++) {
-- endpoints = &bwt->interval_bw[i].endpoints;
-- list_for_each_safe(ep, q, endpoints) {
-- virt_ep = list_entry(ep, struct xhci_virt_ep, bw_endpoint_list);
-- list_del(&virt_ep->bw_endpoint_list);
-- kfree(virt_ep);
-+ num_ports = HCS_MAX_PORTS(xhci->hcs_params1);
-+ for (i = 0; i < num_ports; i++) {
-+ struct xhci_interval_bw_table *bwt = &xhci->rh_bw[i].bw_table;
-+ for (j = 0; j < XHCI_MAX_INTERVAL; j++) {
-+ struct list_head *ep = &bwt->interval_bw[j].endpoints;
-+ while (!list_empty(ep))
-+ list_del_init(ep->next);
- }
- }
-
-- tt_list_head = &xhci->rh_bw->tts;
-- list_for_each_safe(tt, q, tt_list_head) {
-- tt_info = list_entry(tt, struct xhci_tt_bw_info, tt_list);
-- list_del(tt);
-- kfree(tt_info);
-+ for (i = 0; i < num_ports; i++) {
-+ struct xhci_tt_bw_info *tt, *n;
-+ list_for_each_entry_safe(tt, n, &xhci->rh_bw[i].tts, tt_list) {
-+ list_del(&tt->tt_list);
-+ kfree(tt);
-+ }
- }
-
- xhci->num_usb2_ports = 0;
---
-1.7.9.5
-
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
deleted file mode 100644
index 6ca5f78..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0060-xHCI-Increase-the-timeout-for-controller-save-restor.patch
+++ /dev/null
@@ -1,66 +0,0 @@
-From 989ee831bd73b7de3030e3d01068f4b115f277f9 Mon Sep 17 00:00:00 2001
-From: Andiry Xu <andiry.xu at gmail.com>
-Date: Wed, 13 Jun 2012 10:51:57 +0800
-Subject: [PATCH 60/67] xHCI: Increase the timeout for controller save/restore
- state operation
-
-commit 622eb783fe6ff4c1baa47db16c3a5db97f9e6e50 upstream.
-
-When system software decides to power down the xHC with the intent of
-resuming operation at a later time, it will ask xHC to save the internal
-state and restore it when resume to correctly recover from a power event.
-Two bits are used to enable this operation: Save State and Restore State.
-
-xHCI spec 4.23.2 says software should "Set the Controller Save/Restore
-State flag in the USBCMD register and wait for the Save/Restore State
-Status flag in the USBSTS register to transition to '0'". However, it does
-not define how long software should wait for the SSS/RSS bit to transition
-to 0.
-
-Currently the timeout is set to 1ms. There is bug report
-(https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1002697)
-indicates that the timeout is too short for ASMedia ASM1042 host controller
-to save/restore the state successfully. Increase the timeout to 10ms helps to
-resolve the issue.
-
-This patch should be backported to stable kernels as old as 2.6.37, that
-contain the commit 5535b1d5f8885695c6ded783c692e3c0d0eda8ca "USB: xHCI:
-PCI power management implementation"
-
-Signed-off-by: Andiry Xu <andiry.xu at gmail.com>
-Signed-off-by: Sarah Sharp <sarah.a.sharp at linux.intel.com>
-Cc: Ming Lei <ming.lei at canonical.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/host/xhci.c | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
-index 4c00606..05f82e9 100644
---- a/drivers/usb/host/xhci.c
-+++ b/drivers/usb/host/xhci.c
-@@ -783,8 +783,8 @@ int xhci_suspend(struct xhci_hcd *xhci)
- command = xhci_readl(xhci, &xhci->op_regs->command);
- command |= CMD_CSS;
- xhci_writel(xhci, command, &xhci->op_regs->command);
-- if (handshake(xhci, &xhci->op_regs->status, STS_SAVE, 0, 10*100)) {
-- xhci_warn(xhci, "WARN: xHC CMD_CSS timeout\n");
-+ if (handshake(xhci, &xhci->op_regs->status, STS_SAVE, 0, 10 * 1000)) {
-+ xhci_warn(xhci, "WARN: xHC save state timeout\n");
- spin_unlock_irq(&xhci->lock);
- return -ETIMEDOUT;
- }
-@@ -836,8 +836,8 @@ int xhci_resume(struct xhci_hcd *xhci, bool hibernated)
- command |= CMD_CRS;
- xhci_writel(xhci, command, &xhci->op_regs->command);
- if (handshake(xhci, &xhci->op_regs->status,
-- STS_RESTORE, 0, 10*100)) {
-- xhci_dbg(xhci, "WARN: xHC CMD_CSS timeout\n");
-+ STS_RESTORE, 0, 10 * 1000)) {
-+ xhci_warn(xhci, "WARN: xHC restore state timeout\n");
- spin_unlock_irq(&xhci->lock);
- return -ETIMEDOUT;
- }
---
-1.7.9.5
-
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
deleted file mode 100644
index 940cd4c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0061-usb-PS3-EHCI-QH-read-work-around.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 8358979f2727e09ed8658dfbc95fa3ffdbbdac75 Mon Sep 17 00:00:00 2001
-From: Geoff Levand <geoff at infradead.org>
-Date: Tue, 8 Nov 2011 16:01:18 -0800
-Subject: [PATCH 61/67] usb: PS3 EHCI QH read work-around
-
-commit aaa0ef289afe9186f81e2340114ea413eef0492a upstream.
-
-PS3 EHCI HC errata fix 244. The SCC EHCI HC will not correctly perform QH
-reads that occur near or span a micro-frame boundry. This is due to a problem
-in the Nak Count Reload Control logic (EHCI Specification 1.0 Section 4.9.1).
-
-The work-around for this problem is for the HC driver to set I=1 (inactive) for
-QHs with H=1 (list head).
-
-Signed-off-by: Geoff Levand <geoff at infradead.org>
-Acked-by: Alan Stern <stern at rowland.harvard.edu>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/host/ehci-hcd.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c
-index da2f711..64c0d7b 100644
---- a/drivers/usb/host/ehci-hcd.c
-+++ b/drivers/usb/host/ehci-hcd.c
-@@ -620,6 +620,7 @@ static int ehci_init(struct usb_hcd *hcd)
- hw = ehci->async->hw;
- hw->hw_next = QH_NEXT(ehci, ehci->async->qh_dma);
- hw->hw_info1 = cpu_to_hc32(ehci, QH_HEAD);
-+ hw->hw_info1 |= cpu_to_hc32(ehci, (1 << 7)); /* I = 1 */
- hw->hw_token = cpu_to_hc32(ehci, QTD_STS_HALT);
- hw->hw_qtd_next = EHCI_LIST_END(ehci);
- ehci->async->qh_state = QH_STATE_LINKED;
---
-1.7.9.5
-
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
deleted file mode 100644
index d3476fc..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0062-USB-fix-PS3-EHCI-systems.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 5ed14fb69997843bfb782a2f742ef8c583e44f4b Mon Sep 17 00:00:00 2001
-From: Ricardo Martins <rasm at fe.up.pt>
-Date: Tue, 22 May 2012 18:02:03 +0100
-Subject: [PATCH 62/67] USB: fix PS3 EHCI systems
-
-commit 4f7a67e2dd49fbfba002c453bc24bf00e701cc71 upstream.
-
-After commit aaa0ef289afe9186f81e2340114ea413eef0492a "PS3 EHCI QH
-read work-around", Terratec Grabby (em28xx) stopped working with AMD
-Geode LX 800 (USB controller AMD CS5536). Since this is a PS3 only
-fix, the following patch adds a conditional block around it.
-
-Signed-off-by: Ricardo Martins <rasm at fe.up.pt>
-Acked-by: Alan Stern <stern at rowland.harvard.edu>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/host/ehci-hcd.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c
-index 64c0d7b..339be10 100644
---- a/drivers/usb/host/ehci-hcd.c
-+++ b/drivers/usb/host/ehci-hcd.c
-@@ -620,7 +620,9 @@ static int ehci_init(struct usb_hcd *hcd)
- hw = ehci->async->hw;
- hw->hw_next = QH_NEXT(ehci, ehci->async->qh_dma);
- hw->hw_info1 = cpu_to_hc32(ehci, QH_HEAD);
-+#if defined(CONFIG_PPC_PS3)
- hw->hw_info1 |= cpu_to_hc32(ehci, (1 << 7)); /* I = 1 */
-+#endif
- hw->hw_token = cpu_to_hc32(ehci, QTD_STS_HALT);
- hw->hw_qtd_next = EHCI_LIST_END(ehci);
- ehci->async->qh_state = QH_STATE_LINKED;
---
-1.7.9.5
-
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
deleted file mode 100644
index 8eab02a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0063-usb-cdc-acm-fix-devices-not-unthrottled-on-open.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From d48aade3b822cbd46666d0ef17a646bb5eba2bd3 Mon Sep 17 00:00:00 2001
-From: Otto Meta <otto.patches at sister-shadow.de>
-Date: Wed, 6 Jun 2012 18:46:21 +0200
-Subject: [PATCH 63/67] usb: cdc-acm: fix devices not unthrottled on open
-
-commit 6c4707f3f8c44ec18282e1c014c80e1c257042f9 upstream.
-
-Currently CDC-ACM devices stay throttled when their TTY is closed while
-throttled, stalling further communication attempts after the next open.
-
-Unthrottling during open/activate got lost starting with kernel
-3.0.0 and this patch reintroduces it.
-
-Signed-off-by: Otto Meta <otto.patches at sister-shadow.de>
-Acked-by: Johan Hovold <jhovold at gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/class/cdc-acm.c | 8 ++++++++
- 1 file changed, 8 insertions(+)
-
-diff --git a/drivers/usb/class/cdc-acm.c b/drivers/usb/class/cdc-acm.c
-index e61d9c4..1094469 100644
---- a/drivers/usb/class/cdc-acm.c
-+++ b/drivers/usb/class/cdc-acm.c
-@@ -498,6 +498,14 @@ static int acm_tty_open(struct tty_struct *tty, struct file *filp)
-
- usb_autopm_put_interface(acm->control);
-
-+ /*
-+ * Unthrottle device in case the TTY was closed while throttled.
-+ */
-+ spin_lock_irq(&acm->read_lock);
-+ acm->throttled = 0;
-+ acm->throttle_req = 0;
-+ spin_unlock_irq(&acm->read_lock);
-+
- if (acm_submit_read_urbs(acm, GFP_KERNEL))
- goto bail_out;
-
---
-1.7.9.5
-
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
deleted file mode 100644
index 8131498..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0064-USB-fix-gathering-of-interface-associations.patch
+++ /dev/null
@@ -1,88 +0,0 @@
-From 88948e29878410f75f424d93c132dae0771bbb38 Mon Sep 17 00:00:00 2001
-From: Daniel Mack <zonque at gmail.com>
-Date: Tue, 12 Jun 2012 20:23:52 +0200
-Subject: [PATCH 64/67] USB: fix gathering of interface associations
-
-commit b3a3dd074f7053ef824ad077e5331b52220ceba1 upstream.
-
-TEAC's UD-H01 (and probably other devices) have a gap in the interface
-number allocation of their descriptors:
-
- Configuration Descriptor:
- bLength 9
- bDescriptorType 2
- wTotalLength 220
- bNumInterfaces 3
- [...]
- Interface Descriptor:
- bLength 9
- bDescriptorType 4
- bInterfaceNumber 0
- bAlternateSetting 0
- [...]
- Interface Association:
- bLength 8
- bDescriptorType 11
- bFirstInterface 2
- bInterfaceCount 2
- bFunctionClass 1 Audio
- bFunctionSubClass 0
- bFunctionProtocol 32
- iFunction 4
- Interface Descriptor:
- bLength 9
- bDescriptorType 4
- bInterfaceNumber 2
- bAlternateSetting 0
- [...]
-
-Once a configuration is selected, usb_set_configuration() walks the
-known interfaces of a given configuration and calls find_iad() on
-each of them to set the interface association pointer the interface
-is included in.
-
-The problem here is that the loop variable is taken for the interface
-number in the comparison logic that gathers the association. Which is
-fine as long as the descriptors are sane.
-
-In the case above, however, the logic gets out of sync and the
-interface association fields of all interfaces beyond the interface
-number gap are wrong.
-
-Fix this by passing the interface's bInterfaceNumber to find_iad()
-instead.
-
-Signed-off-by: Daniel Mack <zonque at gmail.com>
-Reported-by: bEN <ml_all at circa.be>
-Reported-by: Ivan Perrone <ivanperrone at hotmail.com>
-Tested-by: ivan perrone <ivanperrone at hotmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/core/message.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/usb/core/message.c b/drivers/usb/core/message.c
-index ca717da..ef116a5 100644
---- a/drivers/usb/core/message.c
-+++ b/drivers/usb/core/message.c
-@@ -1803,7 +1803,6 @@ free_interfaces:
- intfc = cp->intf_cache[i];
- intf->altsetting = intfc->altsetting;
- intf->num_altsetting = intfc->num_altsetting;
-- intf->intf_assoc = find_iad(dev, cp, i);
- kref_get(&intfc->ref);
-
- alt = usb_altnum_to_altsetting(intf, 0);
-@@ -1816,6 +1815,8 @@ free_interfaces:
- if (!alt)
- alt = &intf->altsetting[0];
-
-+ intf->intf_assoc =
-+ find_iad(dev, cp, alt->desc.bInterfaceNumber);
- intf->cur_altsetting = alt;
- usb_enable_interface(dev, intf, true);
- intf->dev.parent = &dev->dev;
---
-1.7.9.5
-
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
deleted file mode 100644
index ebf34f1..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0065-swap-fix-shmem-swapping-when-more-than-8-areas.patch
+++ /dev/null
@@ -1,102 +0,0 @@
-From aa557a3d3043ce3af6fb9349fcb59db12972784d Mon Sep 17 00:00:00 2001
-From: Hugh Dickins <hughd at google.com>
-Date: Fri, 15 Jun 2012 17:55:50 -0700
-Subject: [PATCH 65/67] swap: fix shmem swapping when more than 8 areas
-
-commit 9b15b817f3d62409290fd56fe3cbb076a931bb0a upstream.
-
-Minchan Kim reports that when a system has many swap areas, and tmpfs
-swaps out to the ninth or more, shmem_getpage_gfp()'s attempts to read
-back the page cannot locate it, and the read fails with -ENOMEM.
-
-Whoops. Yes, I blindly followed read_swap_header()'s pte_to_swp_entry(
-swp_entry_to_pte()) technique for determining maximum usable swap
-offset, without stopping to realize that that actually depends upon the
-pte swap encoding shifting swap offset to the higher bits and truncating
-it there. Whereas our radix_tree swap encoding leaves offset in the
-lower bits: it's swap "type" (that is, index of swap area) that was
-truncated.
-
-Fix it by reducing the SWP_TYPE_SHIFT() in swapops.h, and removing the
-broken radix_to_swp_entry(swp_to_radix_entry()) from read_swap_header().
-
-This does not reduce the usable size of a swap area any further, it
-leaves it as claimed when making the original commit: no change from 3.0
-on x86_64, nor on i386 without PAE; but 3.0's 512GB is reduced to 128GB
-per swapfile on i386 with PAE. It's not a change I would have risked
-five years ago, but with x86_64 supported for ten years, I believe it's
-appropriate now.
-
-Hmm, and what if some architecture implements its swap pte with offset
-encoded below type? That would equally break the maximum usable swap
-offset check. Happily, they all follow the same tradition of encoding
-offset above type, but I'll prepare a check on that for next.
-
-Reported-and-Reviewed-and-Tested-by: Minchan Kim <minchan at kernel.org>
-Signed-off-by: Hugh Dickins <hughd at google.com>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- include/linux/swapops.h | 8 +++++---
- mm/swapfile.c | 12 ++++--------
- 2 files changed, 9 insertions(+), 11 deletions(-)
-
-diff --git a/include/linux/swapops.h b/include/linux/swapops.h
-index 2189d3f..d6955607 100644
---- a/include/linux/swapops.h
-+++ b/include/linux/swapops.h
-@@ -8,13 +8,15 @@
- * get good packing density in that tree, so the index should be dense in
- * the low-order bits.
- *
-- * We arrange the `type' and `offset' fields so that `type' is at the five
-+ * We arrange the `type' and `offset' fields so that `type' is at the seven
- * high-order bits of the swp_entry_t and `offset' is right-aligned in the
-- * remaining bits.
-+ * remaining bits. Although `type' itself needs only five bits, we allow for
-+ * shmem/tmpfs to shift it all up a further two bits: see swp_to_radix_entry().
- *
- * swp_entry_t's are *never* stored anywhere in their arch-dependent format.
- */
--#define SWP_TYPE_SHIFT(e) (sizeof(e.val) * 8 - MAX_SWAPFILES_SHIFT)
-+#define SWP_TYPE_SHIFT(e) ((sizeof(e.val) * 8) - \
-+ (MAX_SWAPFILES_SHIFT + RADIX_TREE_EXCEPTIONAL_SHIFT))
- #define SWP_OFFSET_MASK(e) ((1UL << SWP_TYPE_SHIFT(e)) - 1)
-
- /*
-diff --git a/mm/swapfile.c b/mm/swapfile.c
-index d3955f2..fad1830 100644
---- a/mm/swapfile.c
-+++ b/mm/swapfile.c
-@@ -1921,24 +1921,20 @@ static unsigned long read_swap_header(struct swap_info_struct *p,
-
- /*
- * Find out how many pages are allowed for a single swap
-- * device. There are three limiting factors: 1) the number
-+ * device. There are two limiting factors: 1) the number
- * of bits for the swap offset in the swp_entry_t type, and
- * 2) the number of bits in the swap pte as defined by the
-- * the different architectures, and 3) the number of free bits
-- * in an exceptional radix_tree entry. In order to find the
-+ * different architectures. In order to find the
- * largest possible bit mask, a swap entry with swap type 0
- * and swap offset ~0UL is created, encoded to a swap pte,
- * decoded to a swp_entry_t again, and finally the swap
- * offset is extracted. This will mask all the bits from
- * the initial ~0UL mask that can't be encoded in either
- * the swp_entry_t or the architecture definition of a
-- * swap pte. Then the same is done for a radix_tree entry.
-+ * swap pte.
- */
- maxpages = swp_offset(pte_to_swp_entry(
-- swp_entry_to_pte(swp_entry(0, ~0UL))));
-- maxpages = swp_offset(radix_to_swp_entry(
-- swp_to_radix_entry(swp_entry(0, maxpages)))) + 1;
--
-+ swp_entry_to_pte(swp_entry(0, ~0UL)))) + 1;
- if (maxpages > swap_header->info.last_page) {
- maxpages = swap_header->info.last_page + 1;
- /* p->max is an unsigned int: don't overflow it */
---
-1.7.9.5
-
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
deleted file mode 100644
index 8c259c2..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0066-drm-radeon-add-some-additional-6xx-7xx-EG-register-i.patch
+++ /dev/null
@@ -1,121 +0,0 @@
-From 5e599e218c67e5888e56cd171473ac988facb120 Mon Sep 17 00:00:00 2001
-From: Alex Deucher <alexander.deucher at amd.com>
-Date: Thu, 14 Jun 2012 22:06:36 +0200
-Subject: [PATCH 66/67] drm/radeon: add some additional 6xx/7xx/EG register
- init
-
-commit b866d1334ba2d544bc575d75357dea6bdcdc7f46 upstream.
-
-- SMX_SAR_CTL0 needs to be programmed correctly to prevent
-problems with memory exports in certain cases.
-- VC_ENHANCE needs to be initialized on 6xx/7xx.
-
-Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
-Signed-off-by: Dave Airlie <airlied at redhat.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpu/drm/radeon/evergreen.c | 3 +++
- drivers/gpu/drm/radeon/evergreend.h | 1 +
- drivers/gpu/drm/radeon/r600.c | 1 +
- drivers/gpu/drm/radeon/r600d.h | 1 +
- drivers/gpu/drm/radeon/rv770.c | 5 ++++-
- drivers/gpu/drm/radeon/rv770d.h | 3 +++
- 6 files changed, 13 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/gpu/drm/radeon/evergreen.c b/drivers/gpu/drm/radeon/evergreen.c
-index dac178b..931f4df 100644
---- a/drivers/gpu/drm/radeon/evergreen.c
-+++ b/drivers/gpu/drm/radeon/evergreen.c
-@@ -2148,6 +2148,9 @@ static void evergreen_gpu_init(struct radeon_device *rdev)
- smx_dc_ctl0 |= NUMBER_OF_SETS(rdev->config.evergreen.sx_num_of_sets);
- WREG32(SMX_DC_CTL0, smx_dc_ctl0);
-
-+ if (rdev->family <= CHIP_SUMO2)
-+ WREG32(SMX_SAR_CTL0, 0x00010000);
-+
- WREG32(SX_EXPORT_BUFFER_SIZES, (COLOR_BUFFER_SIZE((rdev->config.evergreen.sx_max_export_size / 4) - 1) |
- POSITION_BUFFER_SIZE((rdev->config.evergreen.sx_max_export_pos_size / 4) - 1) |
- SMX_BUFFER_SIZE((rdev->config.evergreen.sx_max_export_smx_size / 4) - 1)));
-diff --git a/drivers/gpu/drm/radeon/evergreend.h b/drivers/gpu/drm/radeon/evergreend.h
-index 0128445..6ecd23f 100644
---- a/drivers/gpu/drm/radeon/evergreend.h
-+++ b/drivers/gpu/drm/radeon/evergreend.h
-@@ -270,6 +270,7 @@
- #define SCRATCH_UMSK 0x8540
- #define SCRATCH_ADDR 0x8544
-
-+#define SMX_SAR_CTL0 0xA008
- #define SMX_DC_CTL0 0xA020
- #define USE_HASH_FUNCTION (1 << 0)
- #define NUMBER_OF_SETS(x) ((x) << 1)
-diff --git a/drivers/gpu/drm/radeon/r600.c b/drivers/gpu/drm/radeon/r600.c
-index 9cdda0b..bdfa82a 100644
---- a/drivers/gpu/drm/radeon/r600.c
-+++ b/drivers/gpu/drm/radeon/r600.c
-@@ -1905,6 +1905,7 @@ void r600_gpu_init(struct radeon_device *rdev)
- WREG32(PA_CL_ENHANCE, (CLIP_VTX_REORDER_ENA |
- NUM_CLIP_SEQ(3)));
- WREG32(PA_SC_ENHANCE, FORCE_EOV_MAX_CLK_CNT(4095));
-+ WREG32(VC_ENHANCE, 0);
- }
-
-
-diff --git a/drivers/gpu/drm/radeon/r600d.h b/drivers/gpu/drm/radeon/r600d.h
-index bfe1b5d..d4d23a8d 100644
---- a/drivers/gpu/drm/radeon/r600d.h
-+++ b/drivers/gpu/drm/radeon/r600d.h
-@@ -461,6 +461,7 @@
- #define TC_L2_SIZE(x) ((x)<<5)
- #define L2_DISABLE_LATE_HIT (1<<9)
-
-+#define VC_ENHANCE 0x9714
-
- #define VGT_CACHE_INVALIDATION 0x88C4
- #define CACHE_INVALIDATION(x) ((x)<<0)
-diff --git a/drivers/gpu/drm/radeon/rv770.c b/drivers/gpu/drm/radeon/rv770.c
-index e36ba7f..cc79449 100644
---- a/drivers/gpu/drm/radeon/rv770.c
-+++ b/drivers/gpu/drm/radeon/rv770.c
-@@ -782,6 +782,9 @@ static void rv770_gpu_init(struct radeon_device *rdev)
- ACK_FLUSH_CTL(3) |
- SYNC_FLUSH_CTL));
-
-+ if (rdev->family != CHIP_RV770)
-+ WREG32(SMX_SAR_CTL0, 0x00003f3f);
-+
- db_debug3 = RREG32(DB_DEBUG3);
- db_debug3 &= ~DB_CLK_OFF_DELAY(0x1f);
- switch (rdev->family) {
-@@ -960,7 +963,7 @@ static void rv770_gpu_init(struct radeon_device *rdev)
-
- WREG32(PA_CL_ENHANCE, (CLIP_VTX_REORDER_ENA |
- NUM_CLIP_SEQ(3)));
--
-+ WREG32(VC_ENHANCE, 0);
- }
-
- void r700_vram_gtt_location(struct radeon_device *rdev, struct radeon_mc *mc)
-diff --git a/drivers/gpu/drm/radeon/rv770d.h b/drivers/gpu/drm/radeon/rv770d.h
-index 7538092..7095a71 100644
---- a/drivers/gpu/drm/radeon/rv770d.h
-+++ b/drivers/gpu/drm/radeon/rv770d.h
-@@ -208,6 +208,7 @@
- #define SCRATCH_UMSK 0x8540
- #define SCRATCH_ADDR 0x8544
-
-+#define SMX_SAR_CTL0 0xA008
- #define SMX_DC_CTL0 0xA020
- #define USE_HASH_FUNCTION (1 << 0)
- #define CACHE_DEPTH(x) ((x) << 1)
-@@ -307,6 +308,8 @@
- #define TCP_CNTL 0x9610
- #define TCP_CHAN_STEER 0x9614
-
-+#define VC_ENHANCE 0x9714
-+
- #define VGT_CACHE_INVALIDATION 0x88C4
- #define CACHE_INVALIDATION(x) ((x)<<0)
- #define VC_ONLY 0
---
-1.7.9.5
-
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
deleted file mode 100644
index d9d9f9f..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0067-Linux-3.2.21.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 1eb1eabe86e7b13627d8f03d32a2e402e26d77a5 Mon Sep 17 00:00:00 2001
-From: Ben Hutchings <ben at decadent.org.uk>
-Date: Tue, 19 Jun 2012 23:18:30 +0100
-Subject: [PATCH 67/67] Linux 3.2.21
-
----
- Makefile | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Makefile b/Makefile
-index c7e9cc4..7eb465e 100644
---- a/Makefile
-+++ b/Makefile
-@@ -1,6 +1,6 @@
- VERSION = 3
- PATCHLEVEL = 2
--SUBLEVEL = 20
-+SUBLEVEL = 21
- EXTRAVERSION =
- NAME = Saber-toothed Squirrel
-
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0001-staging-iio-ad7606-Re-add-missing-scale-attribute.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0001-staging-iio-ad7606-Re-add-missing-scale-attribute.patch
deleted file mode 100644
index 4f7f561..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0001-staging-iio-ad7606-Re-add-missing-scale-attribute.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From ea62444a6898324ec9aeb8799a8fd518073fe5a8 Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars at metafoo.de>
-Date: Tue, 5 Jun 2012 18:16:31 +0200
-Subject: [PATCH 01/46] staging:iio:ad7606: Re-add missing scale attribute
-
-commit 279bf2e57c30c9a4482b2b6ede11b31c41e35e78 upstream.
-
-Commit 50ac23be ("staging:iio:adc:ad7606 add local define for chan_spec
-structures.") accidentally removed the scale info_mask flag. This patch
-adds it back again.
-
-Signed-off-by: Lars-Peter Clausen <lars at metafoo.de>
-Acked-by: Jonathan Cameron <jic23 at kernel.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-[bwh: Backported to 3.2:
- - info_mask was completely gone rather than set to another flag
- - IIO_CHAN_INFO_SCALE_SHARED_BIT was not defined; write it out as a shift]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/staging/iio/adc/ad7606_core.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/staging/iio/adc/ad7606_core.c b/drivers/staging/iio/adc/ad7606_core.c
-index 54423ab..2ee187f 100644
---- a/drivers/staging/iio/adc/ad7606_core.c
-+++ b/drivers/staging/iio/adc/ad7606_core.c
-@@ -241,6 +241,7 @@ static const struct attribute_group ad7606_attribute_group = {
- .indexed = 1, \
- .channel = num, \
- .address = num, \
-+ .info_mask = (1 << IIO_CHAN_INFO_SCALE_SHARED), \
- .scan_index = num, \
- .scan_type = IIO_ST('s', 16, 16, 0), \
- }
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0002-Tools-hv-verify-origin-of-netlink-connector-message.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0002-Tools-hv-verify-origin-of-netlink-connector-message.patch
deleted file mode 100644
index 7b4da32..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0002-Tools-hv-verify-origin-of-netlink-connector-message.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From 510150c1fa93796d65a9b598a8e1509629f5d84e Mon Sep 17 00:00:00 2001
-From: Olaf Hering <olaf at aepfle.de>
-Date: Thu, 31 May 2012 16:40:06 +0200
-Subject: [PATCH 02/46] Tools: hv: verify origin of netlink connector message
-
-commit bcc2c9c3fff859e0eb019fe6fec26f9b8eba795c upstream.
-
-The SuSE security team suggested to use recvfrom instead of recv to be
-certain that the connector message is originated from kernel.
-
-CVE-2012-2669
-
-Signed-off-by: Olaf Hering <olaf at aepfle.de>
-Signed-off-by: Marcus Meissner <meissner at suse.de>
-Signed-off-by: Sebastian Krahmer <krahmer at suse.de>
-Signed-off-by: K. Y. Srinivasan <kys at microsoft.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- tools/hv/hv_kvp_daemon.c | 10 +++++++---
- 1 file changed, 7 insertions(+), 3 deletions(-)
-
-diff --git a/tools/hv/hv_kvp_daemon.c b/tools/hv/hv_kvp_daemon.c
-index 11224ed..323d4d9 100644
---- a/tools/hv/hv_kvp_daemon.c
-+++ b/tools/hv/hv_kvp_daemon.c
-@@ -384,14 +384,18 @@ int main(void)
- pfd.fd = fd;
-
- while (1) {
-+ struct sockaddr *addr_p = (struct sockaddr *) &addr;
-+ socklen_t addr_l = sizeof(addr);
- pfd.events = POLLIN;
- pfd.revents = 0;
- poll(&pfd, 1, -1);
-
-- len = recv(fd, kvp_recv_buffer, sizeof(kvp_recv_buffer), 0);
-+ len = recvfrom(fd, kvp_recv_buffer, sizeof(kvp_recv_buffer), 0,
-+ addr_p, &addr_l);
-
-- if (len < 0) {
-- syslog(LOG_ERR, "recv failed; error:%d", len);
-+ if (len < 0 || addr.nl_pid) {
-+ syslog(LOG_ERR, "recvfrom failed; pid:%u error:%d %s",
-+ addr.nl_pid, errno, strerror(errno));
- close(fd);
- return -1;
- }
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0003-edac-avoid-mce-decoding-crash-after-edac-driver-unlo.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0003-edac-avoid-mce-decoding-crash-after-edac-driver-unlo.patch
deleted file mode 100644
index 6670761..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0003-edac-avoid-mce-decoding-crash-after-edac-driver-unlo.patch
+++ /dev/null
@@ -1,166 +0,0 @@
-From 081ba8d6f6253982766e17b90992c1002c31acb0 Mon Sep 17 00:00:00 2001
-From: Chen Gong <gong.chen at linux.intel.com>
-Date: Tue, 8 May 2012 20:40:12 -0300
-Subject: [PATCH 03/46] edac: avoid mce decoding crash after edac driver
- unloaded
-
-commit e35fca4791fcdd43dc1fd769797df40c562ab491 upstream.
-
-Some edac drivers register themselves as mce decoders via
-notifier_chain. But in current notifier_chain implementation logic,
-it doesn't accept same notifier registered twice. If so, it will be
-wrong when adding/removing the element from the list. For example,
-on one SandyBridge platform, remove module sb_edac and then trigger
-one error, it will hit oops because it has no mce decoder registered
-but related notifier_chain still points to an invalid callback
-function. Here is an example:
-
-Call Trace:
- [<ffffffff8150ef6a>] atomic_notifier_call_chain+0x1a/0x20
- [<ffffffff8102b936>] mce_log+0x46/0x180
- [<ffffffff8102eaea>] apei_mce_report_mem_error+0x4a/0x60
- [<ffffffff812e19d2>] ghes_do_proc+0x192/0x210
- [<ffffffff812e2066>] ghes_proc+0x46/0x70
- [<ffffffff812e20d8>] ghes_notify_sci+0x48/0x80
- [<ffffffff8150ef05>] notifier_call_chain+0x55/0x80
- [<ffffffff81076f1a>] __blocking_notifier_call_chain+0x5a/0x80
- [<ffffffff812aea11>] ? acpi_os_wait_events_complete+0x23/0x23
- [<ffffffff81076f56>] blocking_notifier_call_chain+0x16/0x20
- [<ffffffff812ddc4d>] acpi_hed_notify+0x19/0x1b
- [<ffffffff812b16bd>] acpi_device_notify+0x19/0x1b
- [<ffffffff812beb38>] acpi_ev_notify_dispatch+0x67/0x7f
- [<ffffffff812aea3a>] acpi_os_execute_deferred+0x29/0x36
- [<ffffffff81069dc2>] process_one_work+0x132/0x450
- [<ffffffff8106bbcb>] worker_thread+0x17b/0x3c0
- [<ffffffff8106ba50>] ? manage_workers+0x120/0x120
- [<ffffffff81070aee>] kthread+0x9e/0xb0
- [<ffffffff81514724>] kernel_thread_helper+0x4/0x10
- [<ffffffff81070a50>] ? kthread_freezable_should_stop+0x70/0x70
- [<ffffffff81514720>] ? gs_change+0x13/0x13
-Code: f3 49 89 d4 45 85 ed 4d 89 c6 48 8b 0f 74 48 48 85 c9 75 17 eb 41
-0f 1f 80 00 00 00 00 41 83 ed 01 4c 89 f9 74 22 4d 85 ff 74 1d <4c> 8b
-79 08 4c 89 e2 48 89 de 48 89 cf ff 11 4d 85 f6 74 04 41
-RIP [<ffffffff8150eef6>] notifier_call_chain+0x46/0x80
- RSP <ffff88042868fb20>
-CR2: ffffffffa01af838
----[ end trace 0100930068e73e6f ]---
-BUG: unable to handle kernel paging request at fffffffffffffff8
-IP: [<ffffffff810705b0>] kthread_data+0x10/0x20
-PGD 1a0d067 PUD 1a0e067 PMD 0
-Oops: 0000 [#2] SMP
-
-Only i7core_edac and sb_edac have such issues because they have more
-than one memory controller which means they have to register mce
-decoder many times.
-
-Signed-off-by: Chen Gong <gong.chen at linux.intel.com>
-Signed-off-by: Mauro Carvalho Chehab <mchehab at redhat.com>
-[bwh: Backported to 3.2: drivers call atomic_notifier_chain_{,un}register()
- directly]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/edac/i7core_edac.c | 15 ++++-----------
- drivers/edac/sb_edac.c | 10 ++++------
- 2 files changed, 8 insertions(+), 17 deletions(-)
-
-diff --git a/drivers/edac/i7core_edac.c b/drivers/edac/i7core_edac.c
-index 70ad892..b3ccefa 100644
---- a/drivers/edac/i7core_edac.c
-+++ b/drivers/edac/i7core_edac.c
-@@ -1932,12 +1932,6 @@ static int i7core_mce_check_error(struct notifier_block *nb, unsigned long val,
- if (mce->bank != 8)
- return NOTIFY_DONE;
-
--#ifdef CONFIG_SMP
-- /* Only handle if it is the right mc controller */
-- if (mce->socketid != pvt->i7core_dev->socket)
-- return NOTIFY_DONE;
--#endif
--
- smp_rmb();
- if ((pvt->mce_out + 1) % MCE_LOG_LEN == pvt->mce_in) {
- smp_wmb();
-@@ -2234,8 +2228,6 @@ static void i7core_unregister_mci(struct i7core_dev *i7core_dev)
- if (pvt->enable_scrub)
- disable_sdram_scrub_setting(mci);
-
-- atomic_notifier_chain_unregister(&x86_mce_decoder_chain, &i7_mce_dec);
--
- /* Disable EDAC polling */
- i7core_pci_ctl_release(pvt);
-
-@@ -2336,8 +2328,6 @@ static int i7core_register_mci(struct i7core_dev *i7core_dev)
- /* DCLK for scrub rate setting */
- pvt->dclk_freq = get_dclk_freq();
-
-- atomic_notifier_chain_register(&x86_mce_decoder_chain, &i7_mce_dec);
--
- return 0;
-
- fail0:
-@@ -2481,8 +2471,10 @@ static int __init i7core_init(void)
-
- pci_rc = pci_register_driver(&i7core_driver);
-
-- if (pci_rc >= 0)
-+ if (pci_rc >= 0) {
-+ atomic_notifier_chain_register(&x86_mce_decoder_chain, &i7_mce_dec);
- return 0;
-+ }
-
- i7core_printk(KERN_ERR, "Failed to register device with error %d.\n",
- pci_rc);
-@@ -2498,6 +2490,7 @@ static void __exit i7core_exit(void)
- {
- debugf2("MC: " __FILE__ ": %s()\n", __func__);
- pci_unregister_driver(&i7core_driver);
-+ atomic_notifier_chain_unregister(&x86_mce_decoder_chain, &i7_mce_dec);
- }
-
- module_init(i7core_init);
-diff --git a/drivers/edac/sb_edac.c b/drivers/edac/sb_edac.c
-index 7a402bf..18a1293 100644
---- a/drivers/edac/sb_edac.c
-+++ b/drivers/edac/sb_edac.c
-@@ -1661,9 +1661,6 @@ static void sbridge_unregister_mci(struct sbridge_dev *sbridge_dev)
- debugf0("MC: " __FILE__ ": %s(): mci = %p, dev = %p\n",
- __func__, mci, &sbridge_dev->pdev[0]->dev);
-
-- atomic_notifier_chain_unregister(&x86_mce_decoder_chain,
-- &sbridge_mce_dec);
--
- /* Remove MC sysfs nodes */
- edac_mc_del_mc(mci->dev);
-
-@@ -1731,8 +1728,6 @@ static int sbridge_register_mci(struct sbridge_dev *sbridge_dev)
- goto fail0;
- }
-
-- atomic_notifier_chain_register(&x86_mce_decoder_chain,
-- &sbridge_mce_dec);
- return 0;
-
- fail0:
-@@ -1861,8 +1856,10 @@ static int __init sbridge_init(void)
-
- pci_rc = pci_register_driver(&sbridge_driver);
-
-- if (pci_rc >= 0)
-+ if (pci_rc >= 0) {
-+ atomic_notifier_chain_register(&x86_mce_decoder_chain, &sbridge_mce_dec);
- return 0;
-+ }
-
- sbridge_printk(KERN_ERR, "Failed to register device with error %d.\n",
- pci_rc);
-@@ -1878,6 +1875,7 @@ static void __exit sbridge_exit(void)
- {
- debugf2("MC: " __FILE__ ": %s()\n", __func__);
- pci_unregister_driver(&sbridge_driver);
-+ atomic_notifier_chain_unregister(&x86_mce_decoder_chain, &sbridge_mce_dec);
- }
-
- module_init(sbridge_init);
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0004-hwrng-atmel-rng-fix-data-valid-check.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0004-hwrng-atmel-rng-fix-data-valid-check.patch
deleted file mode 100644
index 85105de..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0004-hwrng-atmel-rng-fix-data-valid-check.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-From 28a0aa72b2ef00a665564ea05846ad22cb3f18ee Mon Sep 17 00:00:00 2001
-From: Peter Korsgaard <jacmet at sunsite.dk>
-Date: Tue, 12 Jun 2012 08:27:04 +0800
-Subject: [PATCH 04/46] hwrng: atmel-rng - fix data valid check
-
-commit c475c06f4bb689d6ad87d7512e036d6dface3160 upstream.
-
-Brown paper bag: Data valid is LSB of the ISR (status register), and NOT
-of ODATA (current random data word)!
-
-With this, rngtest is a lot happier. Before:
-
-rngtest 3
-Copyright (c) 2004 by Henrique de Moraes Holschuh
-This is free software; see the source for copying conditions. There is NO warr.
-
-rngtest: starting FIPS tests...
-rngtest: bits received from input: 20000032
-rngtest: FIPS 140-2 successes: 3
-rngtest: FIPS 140-2 failures: 997
-rngtest: FIPS 140-2(2001-10-10) Monobit: 604
-rngtest: FIPS 140-2(2001-10-10) Poker: 996
-rngtest: FIPS 140-2(2001-10-10) Runs: 36
-rngtest: FIPS 140-2(2001-10-10) Long run: 0
-rngtest: FIPS 140-2(2001-10-10) Continuous run: 117
-rngtest: input channel speed: (min=622.371; avg=23682.481; max=28224.350)Kibitss
-rngtest: FIPS tests speed: (min=12.361; avg=12.718; max=12.861)Mibits/s
-rngtest: Program run time: 2331696 microsecondsx
-
-After:
-rngtest 3
-Copyright (c) 2004 by Henrique de Moraes Holschuh
-This is free software; see the source for copying conditions. There is NO warr.
-
-rngtest: starting FIPS tests...
-rngtest: bits received from input: 20000032
-rngtest: FIPS 140-2 successes: 999
-rngtest: FIPS 140-2 failures: 1
-rngtest: FIPS 140-2(2001-10-10) Monobit: 0
-rngtest: FIPS 140-2(2001-10-10) Poker: 0
-rngtest: FIPS 140-2(2001-10-10) Runs: 1
-rngtest: FIPS 140-2(2001-10-10) Long run: 0
-rngtest: FIPS 140-2(2001-10-10) Continuous run: 0
-rngtest: input channel speed: (min=777.363; avg=43588.270; max=47870.711)Kibitss
-rngtest: FIPS tests speed: (min=11.943; avg=12.716; max=12.844)Mibits/s
-rngtest: Program run time: 1955282 microseconds
-
-Signed-off-by: Peter Korsgaard <jacmet at sunsite.dk>
-Reported-by: George Pontis <GPontis at z9.com>
-Acked-by: Nicolas Ferre <nicolas.ferre at atmel.com>
-Signed-off-by: Herbert Xu <herbert at gondor.apana.org.au>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/char/hw_random/atmel-rng.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/char/hw_random/atmel-rng.c b/drivers/char/hw_random/atmel-rng.c
-index 0477982..1b5675b 100644
---- a/drivers/char/hw_random/atmel-rng.c
-+++ b/drivers/char/hw_random/atmel-rng.c
-@@ -34,7 +34,7 @@ static int atmel_trng_read(struct hwrng *rng, void *buf, size_t max,
- u32 *data = buf;
-
- /* data ready? */
-- if (readl(trng->base + TRNG_ODATA) & 1) {
-+ if (readl(trng->base + TRNG_ISR) & 1) {
- *data = readl(trng->base + TRNG_ODATA);
- /*
- ensure data ready is only set again AFTER the next data
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0005-staging-r8712u-Add-new-USB-IDs.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0005-staging-r8712u-Add-new-USB-IDs.patch
deleted file mode 100644
index 2bc87d7..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0005-staging-r8712u-Add-new-USB-IDs.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 4f4723008a7461c6840e643bc66fcd92bfbf26b3 Mon Sep 17 00:00:00 2001
-From: Lubomir Schmidt <gentoo.lubomir at googlemail.com>
-Date: Fri, 15 Jun 2012 15:12:17 -0500
-Subject: [PATCH 05/46] staging: r8712u: Add new USB IDs
-
-commit 3026b0e942c65c65c8fc80d391d004228b52b916 upstream.
-
-There are two new devices for this driver.
-
-Signed-off-by: Larry Finger <Larry.Finger at lwfinger.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/staging/rtl8712/usb_intf.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/drivers/staging/rtl8712/usb_intf.c b/drivers/staging/rtl8712/usb_intf.c
-index ec41d38..f4b738f 100644
---- a/drivers/staging/rtl8712/usb_intf.c
-+++ b/drivers/staging/rtl8712/usb_intf.c
-@@ -102,6 +102,8 @@ static struct usb_device_id rtl871x_usb_id_tbl[] = {
- /* - */
- {USB_DEVICE(0x20F4, 0x646B)},
- {USB_DEVICE(0x083A, 0xC512)},
-+ {USB_DEVICE(0x25D4, 0x4CA1)},
-+ {USB_DEVICE(0x25D4, 0x4CAB)},
-
- /* RTL8191SU */
- /* Realtek */
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0006-hwmon-applesmc-Limit-key-length-in-warning-messages.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0006-hwmon-applesmc-Limit-key-length-in-warning-messages.patch
deleted file mode 100644
index dc75f16..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0006-hwmon-applesmc-Limit-key-length-in-warning-messages.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From d94e9fcf553861cd10a1780c6aeaa6a4419ba5ce Mon Sep 17 00:00:00 2001
-From: Henrik Rydberg <rydberg at euromail.se>
-Date: Thu, 7 Jun 2012 04:54:29 -0400
-Subject: [PATCH 06/46] hwmon: (applesmc) Limit key length in warning messages
-
-commit ac852edb47b15900886ba2564eeeb13b3b526e3e upstream.
-
-Key lookups may call read_smc() with a fixed-length key string,
-and if the lookup fails, trailing stack content may appear in the
-kernel log. Fixed with this patch.
-
-Signed-off-by: Henrik Rydberg <rydberg at euromail.se>
-Signed-off-by: Guenter Roeck <linux at roeck-us.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/hwmon/applesmc.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/hwmon/applesmc.c b/drivers/hwmon/applesmc.c
-index 4c07436..d99aa84 100644
---- a/drivers/hwmon/applesmc.c
-+++ b/drivers/hwmon/applesmc.c
-@@ -215,7 +215,7 @@ static int read_smc(u8 cmd, const char *key, u8 *buffer, u8 len)
- int i;
-
- if (send_command(cmd) || send_argument(key)) {
-- pr_warn("%s: read arg fail\n", key);
-+ pr_warn("%.4s: read arg fail\n", key);
- return -EIO;
- }
-
-@@ -223,7 +223,7 @@ static int read_smc(u8 cmd, const char *key, u8 *buffer, u8 len)
-
- for (i = 0; i < len; i++) {
- if (__wait_status(0x05)) {
-- pr_warn("%s: read data fail\n", key);
-+ pr_warn("%.4s: read data fail\n", key);
- return -EIO;
- }
- buffer[i] = inb(APPLESMC_DATA_PORT);
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0007-mm-pmd_read_atomic-fix-32bit-PAE-pmd-walk-vs-pmd_pop.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0007-mm-pmd_read_atomic-fix-32bit-PAE-pmd-walk-vs-pmd_pop.patch
deleted file mode 100644
index 9cac18d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0007-mm-pmd_read_atomic-fix-32bit-PAE-pmd-walk-vs-pmd_pop.patch
+++ /dev/null
@@ -1,218 +0,0 @@
-From 8bf1709b6925d4e05120bdfed73992d50e7f11bf Mon Sep 17 00:00:00 2001
-From: Andrea Arcangeli <aarcange at redhat.com>
-Date: Tue, 29 May 2012 15:06:49 -0700
-Subject: [PATCH 07/46] mm: pmd_read_atomic: fix 32bit PAE pmd walk vs
- pmd_populate SMP race condition
-
-commit 26c191788f18129af0eb32a358cdaea0c7479626 upstream.
-
-When holding the mmap_sem for reading, pmd_offset_map_lock should only
-run on a pmd_t that has been read atomically from the pmdp pointer,
-otherwise we may read only half of it leading to this crash.
-
-PID: 11679 TASK: f06e8000 CPU: 3 COMMAND: "do_race_2_panic"
- #0 [f06a9dd8] crash_kexec at c049b5ec
- #1 [f06a9e2c] oops_end at c083d1c2
- #2 [f06a9e40] no_context at c0433ded
- #3 [f06a9e64] bad_area_nosemaphore at c043401a
- #4 [f06a9e6c] __do_page_fault at c0434493
- #5 [f06a9eec] do_page_fault at c083eb45
- #6 [f06a9f04] error_code (via page_fault) at c083c5d5
- EAX: 01fb470c EBX: fff35000 ECX: 00000003 EDX: 00000100 EBP:
- 00000000
- DS: 007b ESI: 9e201000 ES: 007b EDI: 01fb4700 GS: 00e0
- CS: 0060 EIP: c083bc14 ERR: ffffffff EFLAGS: 00010246
- #7 [f06a9f38] _spin_lock at c083bc14
- #8 [f06a9f44] sys_mincore at c0507b7d
- #9 [f06a9fb0] system_call at c083becd
- start len
- EAX: ffffffda EBX: 9e200000 ECX: 00001000 EDX: 6228537f
- DS: 007b ESI: 00000000 ES: 007b EDI: 003d0f00
- SS: 007b ESP: 62285354 EBP: 62285388 GS: 0033
- CS: 0073 EIP: 00291416 ERR: 000000da EFLAGS: 00000286
-
-This should be a longstanding bug affecting x86 32bit PAE without THP.
-Only archs with 64bit large pmd_t and 32bit unsigned long should be
-affected.
-
-With THP enabled the barrier() in pmd_none_or_trans_huge_or_clear_bad()
-would partly hide the bug when the pmd transition from none to stable,
-by forcing a re-read of the *pmd in pmd_offset_map_lock, but when THP is
-enabled a new set of problem arises by the fact could then transition
-freely in any of the none, pmd_trans_huge or pmd_trans_stable states.
-So making the barrier in pmd_none_or_trans_huge_or_clear_bad()
-unconditional isn't good idea and it would be a flakey solution.
-
-This should be fully fixed by introducing a pmd_read_atomic that reads
-the pmd in order with THP disabled, or by reading the pmd atomically
-with cmpxchg8b with THP enabled.
-
-Luckily this new race condition only triggers in the places that must
-already be covered by pmd_none_or_trans_huge_or_clear_bad() so the fix
-is localized there but this bug is not related to THP.
-
-NOTE: this can trigger on x86 32bit systems with PAE enabled with more
-than 4G of ram, otherwise the high part of the pmd will never risk to be
-truncated because it would be zero at all times, in turn so hiding the
-SMP race.
-
-This bug was discovered and fully debugged by Ulrich, quote:
-
-----
-[..]
-pmd_none_or_trans_huge_or_clear_bad() loads the content of edx and
-eax.
-
- 496 static inline int pmd_none_or_trans_huge_or_clear_bad(pmd_t
- *pmd)
- 497 {
- 498 /* depend on compiler for an atomic pmd read */
- 499 pmd_t pmdval = *pmd;
-
- // edi = pmd pointer
-0xc0507a74 <sys_mincore+548>: mov 0x8(%esp),%edi
-...
- // edx = PTE page table high address
-0xc0507a84 <sys_mincore+564>: mov 0x4(%edi),%edx
-...
- // eax = PTE page table low address
-0xc0507a8e <sys_mincore+574>: mov (%edi),%eax
-
-[..]
-
-Please note that the PMD is not read atomically. These are two "mov"
-instructions where the high order bits of the PMD entry are fetched
-first. Hence, the above machine code is prone to the following race.
-
-- The PMD entry {high|low} is 0x0000000000000000.
- The "mov" at 0xc0507a84 loads 0x00000000 into edx.
-
-- A page fault (on another CPU) sneaks in between the two "mov"
- instructions and instantiates the PMD.
-
-- The PMD entry {high|low} is now 0x00000003fda38067.
- The "mov" at 0xc0507a8e loads 0xfda38067 into eax.
-----
-
-Reported-by: Ulrich Obergfell <uobergfe at redhat.com>
-Signed-off-by: Andrea Arcangeli <aarcange at redhat.com>
-Cc: Mel Gorman <mgorman at suse.de>
-Cc: Hugh Dickins <hughd at google.com>
-Cc: Larry Woodman <lwoodman at redhat.com>
-Cc: Petr Matousek <pmatouse at redhat.com>
-Cc: Rik van Riel <riel at redhat.com>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/x86/include/asm/pgtable-3level.h | 50 +++++++++++++++++++++++++++++++++
- include/asm-generic/pgtable.h | 22 +++++++++++++--
- 2 files changed, 70 insertions(+), 2 deletions(-)
-
-diff --git a/arch/x86/include/asm/pgtable-3level.h b/arch/x86/include/asm/pgtable-3level.h
-index effff47..43876f1 100644
---- a/arch/x86/include/asm/pgtable-3level.h
-+++ b/arch/x86/include/asm/pgtable-3level.h
-@@ -31,6 +31,56 @@ static inline void native_set_pte(pte_t *ptep, pte_t pte)
- ptep->pte_low = pte.pte_low;
- }
-
-+#define pmd_read_atomic pmd_read_atomic
-+/*
-+ * pte_offset_map_lock on 32bit PAE kernels was reading the pmd_t with
-+ * a "*pmdp" dereference done by gcc. Problem is, in certain places
-+ * where pte_offset_map_lock is called, concurrent page faults are
-+ * allowed, if the mmap_sem is hold for reading. An example is mincore
-+ * vs page faults vs MADV_DONTNEED. On the page fault side
-+ * pmd_populate rightfully does a set_64bit, but if we're reading the
-+ * pmd_t with a "*pmdp" on the mincore side, a SMP race can happen
-+ * because gcc will not read the 64bit of the pmd atomically. To fix
-+ * this all places running pmd_offset_map_lock() while holding the
-+ * mmap_sem in read mode, shall read the pmdp pointer using this
-+ * function to know if the pmd is null nor not, and in turn to know if
-+ * they can run pmd_offset_map_lock or pmd_trans_huge or other pmd
-+ * operations.
-+ *
-+ * Without THP if the mmap_sem is hold for reading, the
-+ * pmd can only transition from null to not null while pmd_read_atomic runs.
-+ * So there's no need of literally reading it atomically.
-+ *
-+ * With THP if the mmap_sem is hold for reading, the pmd can become
-+ * THP or null or point to a pte (and in turn become "stable") at any
-+ * time under pmd_read_atomic, so it's mandatory to read it atomically
-+ * with cmpxchg8b.
-+ */
-+#ifndef CONFIG_TRANSPARENT_HUGEPAGE
-+static inline pmd_t pmd_read_atomic(pmd_t *pmdp)
-+{
-+ pmdval_t ret;
-+ u32 *tmp = (u32 *)pmdp;
-+
-+ ret = (pmdval_t) (*tmp);
-+ if (ret) {
-+ /*
-+ * If the low part is null, we must not read the high part
-+ * or we can end up with a partial pmd.
-+ */
-+ smp_rmb();
-+ ret |= ((pmdval_t)*(tmp + 1)) << 32;
-+ }
-+
-+ return (pmd_t) { ret };
-+}
-+#else /* CONFIG_TRANSPARENT_HUGEPAGE */
-+static inline pmd_t pmd_read_atomic(pmd_t *pmdp)
-+{
-+ return (pmd_t) { atomic64_read((atomic64_t *)pmdp) };
-+}
-+#endif /* CONFIG_TRANSPARENT_HUGEPAGE */
-+
- static inline void native_set_pte_atomic(pte_t *ptep, pte_t pte)
- {
- set_64bit((unsigned long long *)(ptep), native_pte_val(pte));
-diff --git a/include/asm-generic/pgtable.h b/include/asm-generic/pgtable.h
-index a03c098..831924a 100644
---- a/include/asm-generic/pgtable.h
-+++ b/include/asm-generic/pgtable.h
-@@ -445,6 +445,18 @@ static inline int pmd_write(pmd_t pmd)
- #endif /* __HAVE_ARCH_PMD_WRITE */
- #endif /* CONFIG_TRANSPARENT_HUGEPAGE */
-
-+#ifndef pmd_read_atomic
-+static inline pmd_t pmd_read_atomic(pmd_t *pmdp)
-+{
-+ /*
-+ * Depend on compiler for an atomic pmd read. NOTE: this is
-+ * only going to work, if the pmdval_t isn't larger than
-+ * an unsigned long.
-+ */
-+ return *pmdp;
-+}
-+#endif
-+
- /*
- * This function is meant to be used by sites walking pagetables with
- * the mmap_sem hold in read mode to protect against MADV_DONTNEED and
-@@ -458,11 +470,17 @@ static inline int pmd_write(pmd_t pmd)
- * undefined so behaving like if the pmd was none is safe (because it
- * can return none anyway). The compiler level barrier() is critically
- * important to compute the two checks atomically on the same pmdval.
-+ *
-+ * For 32bit kernels with a 64bit large pmd_t this automatically takes
-+ * care of reading the pmd atomically to avoid SMP race conditions
-+ * against pmd_populate() when the mmap_sem is hold for reading by the
-+ * caller (a special atomic read not done by "gcc" as in the generic
-+ * version above, is also needed when THP is disabled because the page
-+ * fault can populate the pmd from under us).
- */
- static inline int pmd_none_or_trans_huge_or_clear_bad(pmd_t *pmd)
- {
-- /* depend on compiler for an atomic pmd read */
-- pmd_t pmdval = *pmd;
-+ pmd_t pmdval = pmd_read_atomic(pmd);
- /*
- * The barrier will stabilize the pmdval in a register or on
- * the stack so that it will stop changing under the code.
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0008-thp-avoid-atomic64_read-in-pmd_read_atomic-for-32bit.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0008-thp-avoid-atomic64_read-in-pmd_read_atomic-for-32bit.patch
deleted file mode 100644
index 79be9e0..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0008-thp-avoid-atomic64_read-in-pmd_read_atomic-for-32bit.patch
+++ /dev/null
@@ -1,125 +0,0 @@
-From dcfb4634621189a74522dee4d0dab8b5c1786b02 Mon Sep 17 00:00:00 2001
-From: Andrea Arcangeli <aarcange at redhat.com>
-Date: Wed, 20 Jun 2012 12:52:57 -0700
-Subject: [PATCH 08/46] thp: avoid atomic64_read in pmd_read_atomic for 32bit
- PAE
-
-commit e4eed03fd06578571c01d4f1478c874bb432c815 upstream.
-
-In the x86 32bit PAE CONFIG_TRANSPARENT_HUGEPAGE=y case while holding the
-mmap_sem for reading, cmpxchg8b cannot be used to read pmd contents under
-Xen.
-
-So instead of dealing only with "consistent" pmdvals in
-pmd_none_or_trans_huge_or_clear_bad() (which would be conceptually
-simpler) we let pmd_none_or_trans_huge_or_clear_bad() deal with pmdvals
-where the low 32bit and high 32bit could be inconsistent (to avoid having
-to use cmpxchg8b).
-
-The only guarantee we get from pmd_read_atomic is that if the low part of
-the pmd was found null, the high part will be null too (so the pmd will be
-considered unstable). And if the low part of the pmd is found "stable"
-later, then it means the whole pmd was read atomically (because after a
-pmd is stable, neither MADV_DONTNEED nor page faults can alter it anymore,
-and we read the high part after the low part).
-
-In the 32bit PAE x86 case, it is enough to read the low part of the pmdval
-atomically to declare the pmd as "stable" and that's true for THP and no
-THP, furthermore in the THP case we also have a barrier() that will
-prevent any inconsistent pmdvals to be cached by a later re-read of the
-*pmd.
-
-Signed-off-by: Andrea Arcangeli <aarcange at redhat.com>
-Cc: Jonathan Nieder <jrnieder at gmail.com>
-Cc: Ulrich Obergfell <uobergfe at redhat.com>
-Cc: Mel Gorman <mgorman at suse.de>
-Cc: Hugh Dickins <hughd at google.com>
-Cc: Larry Woodman <lwoodman at redhat.com>
-Cc: Petr Matousek <pmatouse at redhat.com>
-Cc: Rik van Riel <riel at redhat.com>
-Cc: Jan Beulich <jbeulich at suse.com>
-Cc: KOSAKI Motohiro <kosaki.motohiro at gmail.com>
-Tested-by: Andrew Jones <drjones at redhat.com>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/x86/include/asm/pgtable-3level.h | 30 +++++++++++++++++-------------
- include/asm-generic/pgtable.h | 10 ++++++++++
- 2 files changed, 27 insertions(+), 13 deletions(-)
-
-diff --git a/arch/x86/include/asm/pgtable-3level.h b/arch/x86/include/asm/pgtable-3level.h
-index 43876f1..cb00ccc 100644
---- a/arch/x86/include/asm/pgtable-3level.h
-+++ b/arch/x86/include/asm/pgtable-3level.h
-@@ -47,16 +47,26 @@ static inline void native_set_pte(pte_t *ptep, pte_t pte)
- * they can run pmd_offset_map_lock or pmd_trans_huge or other pmd
- * operations.
- *
-- * Without THP if the mmap_sem is hold for reading, the
-- * pmd can only transition from null to not null while pmd_read_atomic runs.
-- * So there's no need of literally reading it atomically.
-+ * Without THP if the mmap_sem is hold for reading, the pmd can only
-+ * transition from null to not null while pmd_read_atomic runs. So
-+ * we can always return atomic pmd values with this function.
- *
- * With THP if the mmap_sem is hold for reading, the pmd can become
-- * THP or null or point to a pte (and in turn become "stable") at any
-- * time under pmd_read_atomic, so it's mandatory to read it atomically
-- * with cmpxchg8b.
-+ * trans_huge or none or point to a pte (and in turn become "stable")
-+ * at any time under pmd_read_atomic. We could read it really
-+ * atomically here with a atomic64_read for the THP enabled case (and
-+ * it would be a whole lot simpler), but to avoid using cmpxchg8b we
-+ * only return an atomic pmdval if the low part of the pmdval is later
-+ * found stable (i.e. pointing to a pte). And we're returning a none
-+ * pmdval if the low part of the pmd is none. In some cases the high
-+ * and low part of the pmdval returned may not be consistent if THP is
-+ * enabled (the low part may point to previously mapped hugepage,
-+ * while the high part may point to a more recently mapped hugepage),
-+ * but pmd_none_or_trans_huge_or_clear_bad() only needs the low part
-+ * of the pmd to be read atomically to decide if the pmd is unstable
-+ * or not, with the only exception of when the low part of the pmd is
-+ * zero in which case we return a none pmd.
- */
--#ifndef CONFIG_TRANSPARENT_HUGEPAGE
- static inline pmd_t pmd_read_atomic(pmd_t *pmdp)
- {
- pmdval_t ret;
-@@ -74,12 +84,6 @@ static inline pmd_t pmd_read_atomic(pmd_t *pmdp)
-
- return (pmd_t) { ret };
- }
--#else /* CONFIG_TRANSPARENT_HUGEPAGE */
--static inline pmd_t pmd_read_atomic(pmd_t *pmdp)
--{
-- return (pmd_t) { atomic64_read((atomic64_t *)pmdp) };
--}
--#endif /* CONFIG_TRANSPARENT_HUGEPAGE */
-
- static inline void native_set_pte_atomic(pte_t *ptep, pte_t pte)
- {
-diff --git a/include/asm-generic/pgtable.h b/include/asm-generic/pgtable.h
-index 831924a..bc00876 100644
---- a/include/asm-generic/pgtable.h
-+++ b/include/asm-generic/pgtable.h
-@@ -484,6 +484,16 @@ static inline int pmd_none_or_trans_huge_or_clear_bad(pmd_t *pmd)
- /*
- * The barrier will stabilize the pmdval in a register or on
- * the stack so that it will stop changing under the code.
-+ *
-+ * When CONFIG_TRANSPARENT_HUGEPAGE=y on x86 32bit PAE,
-+ * pmd_read_atomic is allowed to return a not atomic pmdval
-+ * (for example pointing to an hugepage that has never been
-+ * mapped in the pmd). The below checks will only care about
-+ * the low part of the pmd with 32bit PAE x86 anyway, with the
-+ * exception of pmd_none(). So the important thing is that if
-+ * the low part of the pmd is found null, the high part will
-+ * be also null or the pmd_none() check below would be
-+ * confused.
- */
- #ifdef CONFIG_TRANSPARENT_HUGEPAGE
- barrier();
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0009-nilfs2-ensure-proper-cache-clearing-for-gc-inodes.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0009-nilfs2-ensure-proper-cache-clearing-for-gc-inodes.patch
deleted file mode 100644
index 4cfe490..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0009-nilfs2-ensure-proper-cache-clearing-for-gc-inodes.patch
+++ /dev/null
@@ -1,71 +0,0 @@
-From c1a7e61b722c55f0bbbe234d8f16ab19882a0c6b Mon Sep 17 00:00:00 2001
-From: Ryusuke Konishi <konishi.ryusuke at lab.ntt.co.jp>
-Date: Wed, 20 Jun 2012 12:52:57 -0700
-Subject: [PATCH 09/46] nilfs2: ensure proper cache clearing for gc-inodes
-
-commit fbb24a3a915f105016f1c828476be11aceac8504 upstream.
-
-A gc-inode is a pseudo inode used to buffer the blocks to be moved by
-garbage collection.
-
-Block caches of gc-inodes must be cleared every time a garbage collection
-function (nilfs_clean_segments) completes. Otherwise, stale blocks
-buffered in the caches may be wrongly reused in successive calls of the GC
-function.
-
-For user files, this is not a problem because their gc-inodes are
-distinguished by a checkpoint number as well as an inode number. They
-never buffer different blocks if either an inode number, a checkpoint
-number, or a block offset differs.
-
-However, gc-inodes of sufile, cpfile and DAT file can store different data
-for the same block offset. Thus, the nilfs_clean_segments function can
-move incorrect block for these meta-data files if an old block is cached.
-I found this is really causing meta-data corruption in nilfs.
-
-This fixes the issue by ensuring cache clear of gc-inodes and resolves
-reported GC problems including checkpoint file corruption, b-tree
-corruption, and the following warning during GC.
-
- nilfs_palloc_freev: entry number 307234 already freed.
- ...
-
-Signed-off-by: Ryusuke Konishi <konishi.ryusuke at lab.ntt.co.jp>
-Tested-by: Ryusuke Konishi <konishi.ryusuke at lab.ntt.co.jp>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/nilfs2/gcinode.c | 2 ++
- fs/nilfs2/segment.c | 2 ++
- 2 files changed, 4 insertions(+)
-
-diff --git a/fs/nilfs2/gcinode.c b/fs/nilfs2/gcinode.c
-index 08a07a2..57ceaf3 100644
---- a/fs/nilfs2/gcinode.c
-+++ b/fs/nilfs2/gcinode.c
-@@ -191,6 +191,8 @@ void nilfs_remove_all_gcinodes(struct the_nilfs *nilfs)
- while (!list_empty(head)) {
- ii = list_first_entry(head, struct nilfs_inode_info, i_dirty);
- list_del_init(&ii->i_dirty);
-+ truncate_inode_pages(&ii->vfs_inode.i_data, 0);
-+ nilfs_btnode_cache_clear(&ii->i_btnode_cache);
- iput(&ii->vfs_inode);
- }
- }
-diff --git a/fs/nilfs2/segment.c b/fs/nilfs2/segment.c
-index bb24ab6..6f24e67 100644
---- a/fs/nilfs2/segment.c
-+++ b/fs/nilfs2/segment.c
-@@ -2309,6 +2309,8 @@ nilfs_remove_written_gcinodes(struct the_nilfs *nilfs, struct list_head *head)
- if (!test_bit(NILFS_I_UPDATED, &ii->i_state))
- continue;
- list_del_init(&ii->i_dirty);
-+ truncate_inode_pages(&ii->vfs_inode.i_data, 0);
-+ nilfs_btnode_cache_clear(&ii->i_btnode_cache);
- iput(&ii->vfs_inode);
- }
- }
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0010-drm-i915-Finish-any-pending-operations-on-the-frameb.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0010-drm-i915-Finish-any-pending-operations-on-the-frameb.patch
deleted file mode 100644
index 9d0f37e..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0010-drm-i915-Finish-any-pending-operations-on-the-frameb.patch
+++ /dev/null
@@ -1,130 +0,0 @@
-From 4c0724b407a2c71dbb932d74363e386f798dca61 Mon Sep 17 00:00:00 2001
-From: Chris Wilson <chris at chris-wilson.co.uk>
-Date: Tue, 3 Apr 2012 17:58:35 +0100
-Subject: [PATCH 10/46] drm/i915: Finish any pending operations on the
- framebuffer before disabling
-
-Similar to the case where we are changing from one framebuffer to
-another, we need to be sure that there are no pending WAIT_FOR_EVENTs on
-the pipe for the current framebuffer before switching. If we disable the
-pipe, and then try to execute a WAIT_FOR_EVENT it will block
-indefinitely and cause a GPU hang.
-
-We attempted to fix this in commit 85345517fe6d4de27b0d6ca19fef9d28ac947c4a
-(drm/i915: Retire any pending operations on the old scanout when switching)
-for the case of mode switching, but this leaves the condition where we
-are switching off the pipe vulnerable.
-
-There still remains the race condition were a display may be unplugged,
-switched off by the core, a uevent sent to notify the DDX and the DDX
-may issue a WAIT_FOR_EVENT before it processes the uevent. This window
-does not exist if the pipe is only switched off in response to the
-uevent. Time to make sure that is so...
-
-Reported-by: Francis Leblanc <Francis.Leblanc-Lebeau at verint.com>
-Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=36515
-Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=45413
-Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
-Reviewed-by: Eugeni Dodonov <eugeni.dodonov at intel.com>
-[danvet: fixup spelling in comment, noticed by Eugeni.]
-Signed-off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
-(cherry picked from commit 14667a4bde4361b7ac420d68a2e9e9b9b2df5231)
-Signed-off-by: Timo Aaltonen <timo.aaltonen at canonical.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpu/drm/i915/intel_display.c | 65 ++++++++++++++++++++++++----------
- 1 file changed, 46 insertions(+), 19 deletions(-)
-
-diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
-index 5c1cdb8..6aa7716 100644
---- a/drivers/gpu/drm/i915/intel_display.c
-+++ b/drivers/gpu/drm/i915/intel_display.c
-@@ -2187,6 +2187,33 @@ intel_pipe_set_base_atomic(struct drm_crtc *crtc, struct drm_framebuffer *fb,
- }
-
- static int
-+intel_finish_fb(struct drm_framebuffer *old_fb)
-+{
-+ struct drm_i915_gem_object *obj = to_intel_framebuffer(old_fb)->obj;
-+ struct drm_i915_private *dev_priv = obj->base.dev->dev_private;
-+ bool was_interruptible = dev_priv->mm.interruptible;
-+ int ret;
-+
-+ wait_event(dev_priv->pending_flip_queue,
-+ atomic_read(&dev_priv->mm.wedged) ||
-+ atomic_read(&obj->pending_flip) == 0);
-+
-+ /* Big Hammer, we also need to ensure that any pending
-+ * MI_WAIT_FOR_EVENT inside a user batch buffer on the
-+ * current scanout is retired before unpinning the old
-+ * framebuffer.
-+ *
-+ * This should only fail upon a hung GPU, in which case we
-+ * can safely continue.
-+ */
-+ dev_priv->mm.interruptible = false;
-+ ret = i915_gem_object_finish_gpu(obj);
-+ dev_priv->mm.interruptible = was_interruptible;
-+
-+ return ret;
-+}
-+
-+static int
- intel_pipe_set_base(struct drm_crtc *crtc, int x, int y,
- struct drm_framebuffer *old_fb)
- {
-@@ -2224,25 +2251,8 @@ intel_pipe_set_base(struct drm_crtc *crtc, int x, int y,
- return ret;
- }
-
-- if (old_fb) {
-- struct drm_i915_private *dev_priv = dev->dev_private;
-- struct drm_i915_gem_object *obj = to_intel_framebuffer(old_fb)->obj;
--
-- wait_event(dev_priv->pending_flip_queue,
-- atomic_read(&dev_priv->mm.wedged) ||
-- atomic_read(&obj->pending_flip) == 0);
--
-- /* Big Hammer, we also need to ensure that any pending
-- * MI_WAIT_FOR_EVENT inside a user batch buffer on the
-- * current scanout is retired before unpinning the old
-- * framebuffer.
-- *
-- * This should only fail upon a hung GPU, in which case we
-- * can safely continue.
-- */
-- ret = i915_gem_object_finish_gpu(obj);
-- (void) ret;
-- }
-+ if (old_fb)
-+ intel_finish_fb(old_fb);
-
- ret = intel_pipe_set_base_atomic(crtc, crtc->fb, x, y,
- LEAVE_ATOMIC_MODE_SET);
-@@ -3312,6 +3322,23 @@ static void intel_crtc_disable(struct drm_crtc *crtc)
- struct drm_crtc_helper_funcs *crtc_funcs = crtc->helper_private;
- struct drm_device *dev = crtc->dev;
-
-+ /* Flush any pending WAITs before we disable the pipe. Note that
-+ * we need to drop the struct_mutex in order to acquire it again
-+ * during the lowlevel dpms routines around a couple of the
-+ * operations. It does not look trivial nor desirable to move
-+ * that locking higher. So instead we leave a window for the
-+ * submission of further commands on the fb before we can actually
-+ * disable it. This race with userspace exists anyway, and we can
-+ * only rely on the pipe being disabled by userspace after it
-+ * receives the hotplug notification and has flushed any pending
-+ * batches.
-+ */
-+ if (crtc->fb) {
-+ mutex_lock(&dev->struct_mutex);
-+ intel_finish_fb(crtc->fb);
-+ mutex_unlock(&dev->struct_mutex);
-+ }
-+
- crtc_funcs->dpms(crtc, DRM_MODE_DPMS_OFF);
-
- if (crtc->fb) {
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0011-drm-i915-Remove-use-of-the-autoreported-ringbuffer-H.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0011-drm-i915-Remove-use-of-the-autoreported-ringbuffer-H.patch
deleted file mode 100644
index ad69a94..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0011-drm-i915-Remove-use-of-the-autoreported-ringbuffer-H.patch
+++ /dev/null
@@ -1,84 +0,0 @@
-From 7e3ac17c5a78a999c5932d6617f63a6ca7cf91b0 Mon Sep 17 00:00:00 2001
-From: Chris Wilson <chris at chris-wilson.co.uk>
-Date: Wed, 8 Feb 2012 13:34:13 +0000
-Subject: [PATCH 11/46] drm/i915: Remove use of the autoreported ringbuffer
- HEAD position
-
-This is a revert of 6aa56062eaba67adfb247cded244fd877329588d.
-
-This was originally introduced to workaround reads of the ringbuffer
-registers returning 0 on SandyBridge causing hangs due to ringbuffer
-overflow. The root cause here was reads through the GT powerwell require
-the forcewake dance, something we only learnt of later. Now it appears
-that reading the reported head position from the HWS is returning
-garbage, leading once again to hangs.
-
-For example, on q35 the autoreported head reports:
- [ 217.975608] head now 00010000, actual 00010000
- [ 436.725613] head now 00200000, actual 00200000
- [ 462.956033] head now 00210000, actual 00210010
- [ 485.501409] head now 00400000, actual 00400020
- [ 508.064280] head now 00410000, actual 00410000
- [ 530.576078] head now 00600000, actual 00600020
- [ 553.273489] head now 00610000, actual 00610018
-which appears reasonably sane. In contrast, if we look at snb:
- [ 141.970680] head now 00e10000, actual 00008238
- [ 141.974062] head now 02734000, actual 000083c8
- [ 141.974425] head now 00e10000, actual 00008488
- [ 141.980374] head now 032b5000, actual 000088b8
- [ 141.980885] head now 03271000, actual 00008950
- [ 142.040628] head now 02101000, actual 00008b40
- [ 142.180173] head now 02734000, actual 00009050
- [ 142.181090] head now 00000000, actual 00000ae0
- [ 142.183737] head now 02734000, actual 00009050
-
-In addition, the automatic reporting of the head position is scheduled
-to be defeatured in the future. It has no more utility, remove it.
-
-Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=45492
-Reviewed-by: Daniel Vetter <daniel.vetter at ffwll.ch>
-Tested-by: Eric Anholt <eric at anholt.net>
-Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
-Signed-off-by: Jesse Barnes <jbarnes at virtuousgeek.org>
-(cherry picked from commit 5d031e5b633d910f35e6e0abce94d9d842390006)
-Signed-off-by: Timo Aaltonen <timo.aaltonen at canonical.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpu/drm/i915/intel_ringbuffer.c | 14 +-------------
- 1 file changed, 1 insertion(+), 13 deletions(-)
-
-diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
-index 933e66b..f6613dc 100644
---- a/drivers/gpu/drm/i915/intel_ringbuffer.c
-+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
-@@ -306,7 +306,7 @@ static int init_ring_common(struct intel_ring_buffer *ring)
-
- I915_WRITE_CTL(ring,
- ((ring->size - PAGE_SIZE) & RING_NR_PAGES)
-- | RING_REPORT_64K | RING_VALID);
-+ | RING_VALID);
-
- /* If the head is still not zero, the ring is dead */
- if ((I915_READ_CTL(ring) & RING_VALID) == 0 ||
-@@ -1157,18 +1157,6 @@ int intel_wait_ring_buffer(struct intel_ring_buffer *ring, int n)
- struct drm_device *dev = ring->dev;
- struct drm_i915_private *dev_priv = dev->dev_private;
- unsigned long end;
-- u32 head;
--
-- /* If the reported head position has wrapped or hasn't advanced,
-- * fallback to the slow and accurate path.
-- */
-- head = intel_read_status_page(ring, 4);
-- if (head > ring->head) {
-- ring->head = head;
-- ring->space = ring_space(ring);
-- if (ring->space >= n)
-- return 0;
-- }
-
- trace_i915_ring_wait_begin(ring);
- end = jiffies + 3 * HZ;
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0012-e1000e-Disable-ASPM-L1-on-82574.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0012-e1000e-Disable-ASPM-L1-on-82574.patch
deleted file mode 100644
index b47746d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0012-e1000e-Disable-ASPM-L1-on-82574.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 7bc45fa1ef48339e44c48d53e0cdb9d0d4e33d43 Mon Sep 17 00:00:00 2001
-From: Chris Boot <bootc at bootc.net>
-Date: Tue, 24 Apr 2012 07:24:52 +0000
-Subject: [PATCH 12/46] e1000e: Disable ASPM L1 on 82574
-
-commit id d4a4206ebbaf48b55803a7eb34e330530d83a889
-
-ASPM on the 82574 causes trouble. Currently the driver disables L0s for
-this NIC but only disables L1 if the MTU is >1500. This patch simply
-causes L1 to be disabled regardless of the MTU setting.
-
-Signed-off-by: Chris Boot <bootc at bootc.net>
-Cc: "Wyborny, Carolyn" <carolyn.wyborny at intel.com>
-Cc: Nix <nix at esperi.org.uk>
-Link: https://lkml.org/lkml/2012/3/19/362
-Tested-by: Jeff Pieper <jeffrey.e.pieper at intel.com>
-[Jeff Kirsher: Backport to 3.2-3.4 kernels]
-Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher at intel.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/ethernet/intel/e1000e/82571.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/net/ethernet/intel/e1000e/82571.c b/drivers/net/ethernet/intel/e1000e/82571.c
-index a3e65fd..e556fc3 100644
---- a/drivers/net/ethernet/intel/e1000e/82571.c
-+++ b/drivers/net/ethernet/intel/e1000e/82571.c
-@@ -2080,8 +2080,9 @@ const struct e1000_info e1000_82574_info = {
- | FLAG_HAS_SMART_POWER_DOWN
- | FLAG_HAS_AMT
- | FLAG_HAS_CTRLEXT_ON_LOAD,
-- .flags2 = FLAG2_CHECK_PHY_HANG
-+ .flags2 = FLAG2_CHECK_PHY_HANG
- | FLAG2_DISABLE_ASPM_L0S
-+ | FLAG2_DISABLE_ASPM_L1
- | FLAG2_NO_DISABLE_RX,
- .pba = 32,
- .max_hw_frame_size = DEFAULT_JUMBO,
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0013-e1000e-Remove-special-case-for-82573-82574-ASPM-L1-d.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0013-e1000e-Remove-special-case-for-82573-82574-ASPM-L1-d.patch
deleted file mode 100644
index 3eeacc0..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0013-e1000e-Remove-special-case-for-82573-82574-ASPM-L1-d.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 51d8e7091033042d3ae09363abe5e93d0698930e Mon Sep 17 00:00:00 2001
-From: Chris Boot <bootc at bootc.net>
-Date: Tue, 24 Apr 2012 07:24:58 +0000
-Subject: [PATCH 13/46] e1000e: Remove special case for 82573/82574 ASPM L1
- disablement
-
-commit 59aed95263bdd0e2b48eb9be5a94346d2d4abf90 upstream.
-
-For the 82573, ASPM L1 gets disabled wholesale so this special-case code
-is not required. For the 82574 the previous patch does the same as for
-the 82573, disabling L1 on the adapter. Thus, this code is no longer
-required and can be removed.
-
-Signed-off-by: Chris Boot <bootc at bootc.net>
-Tested-by: Jeff Pieper <jeffrey.e.pieper at intel.com>
-Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher at intel.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/ethernet/intel/e1000e/netdev.c | 8 --------
- 1 file changed, 8 deletions(-)
-
-diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c
-index 4e933d1..64d3f98 100644
---- a/drivers/net/ethernet/intel/e1000e/netdev.c
-+++ b/drivers/net/ethernet/intel/e1000e/netdev.c
-@@ -5132,14 +5132,6 @@ static int e1000_change_mtu(struct net_device *netdev, int new_mtu)
- return -EINVAL;
- }
-
-- /* 82573 Errata 17 */
-- if (((adapter->hw.mac.type == e1000_82573) ||
-- (adapter->hw.mac.type == e1000_82574)) &&
-- (max_frame > ETH_FRAME_LEN + ETH_FCS_LEN)) {
-- adapter->flags2 |= FLAG2_DISABLE_ASPM_L1;
-- e1000e_disable_aspm(adapter->pdev, PCIE_LINK_STATE_L1);
-- }
--
- while (test_and_set_bit(__E1000_RESETTING, &adapter->state))
- usleep_range(1000, 2000);
- /* e1000e_down -> e1000e_reset dependent on max_frame_size & mtu */
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0014-drm-i915-Do-the-fallback-non-IRQ-wait-in-ring-thrott.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0014-drm-i915-Do-the-fallback-non-IRQ-wait-in-ring-thrott.patch
deleted file mode 100644
index 3601ef4..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0014-drm-i915-Do-the-fallback-non-IRQ-wait-in-ring-thrott.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From f00febe1475d06993b3f723ece375388dcf3bb9b Mon Sep 17 00:00:00 2001
-From: Eric Anholt <eric at anholt.net>
-Date: Thu, 22 Dec 2011 14:54:59 -0800
-Subject: [PATCH 14/46] drm/i915: Do the fallback non-IRQ wait in ring
- throttle, too.
-
-commit 7ea29b13e5e3e1e61e612349eb0366efdb6457f3 upstream.
-
-As a workaround for IRQ synchronization issues in the gen7 BLT ring,
-we want to turn the two wait functions into polling loops.
-
-Signed-off-by: Eric Anholt <eric at anholt.net>
-Tested-by: Eugeni Dodonov <eugeni.dodonov at intel.com>
-Reviewed-by: Eugeni Dodonov <eugeni.dodonov at intel.com>
-Acked-by: Kenneth Graunke <kenneth at whitecape.org>
-Signed-off-by: Keith Packard <keithp at keithp.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpu/drm/i915/i915_gem.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
-index 3e7c478..3e2edc6 100644
---- a/drivers/gpu/drm/i915/i915_gem.c
-+++ b/drivers/gpu/drm/i915/i915_gem.c
-@@ -3312,6 +3312,10 @@ i915_gem_ring_throttle(struct drm_device *dev, struct drm_file *file)
-
- if (ret == 0 && atomic_read(&dev_priv->mm.wedged))
- ret = -EIO;
-+ } else if (wait_for(i915_seqno_passed(ring->get_seqno(ring),
-+ seqno) ||
-+ atomic_read(&dev_priv->mm.wedged), 3000)) {
-+ ret = -EBUSY;
- }
- }
-
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0015-staging-rts_pstor-Fix-possible-panic-by-NULL-pointer.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0015-staging-rts_pstor-Fix-possible-panic-by-NULL-pointer.patch
deleted file mode 100644
index bfe82b6..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0015-staging-rts_pstor-Fix-possible-panic-by-NULL-pointer.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-From 1c17511004913ab88dd06ac7df912125a97ea2c3 Mon Sep 17 00:00:00 2001
-From: wwang <wei_wang at realsil.com.cn>
-Date: Tue, 27 Mar 2012 16:43:11 +0800
-Subject: [PATCH 15/46] staging:rts_pstor:Fix possible panic by NULL pointer
- dereference
-
-commit 0d05568ac79bfc595f1eadc3e0fd7a20a45f7b69 upstream.
-
-rtsx_transport.c (rtsx_transfer_sglist_adma_partial):
-pointer struct scatterlist *sg, which is mapped in dma_map_sg,
-is used as an iterator in later transfer operation. It is corrupted and
-passed to dma_unmap_sg, thus causing fatal unmap of some erroneous address.
-Fix it by duplicating *sg_ptr for iterating.
-
-Signed-off-by: wwang <wei_wang at realsil.com.cn>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/staging/rts_pstor/rtsx_transport.c | 11 ++++++-----
- 1 file changed, 6 insertions(+), 5 deletions(-)
-
-diff --git a/drivers/staging/rts_pstor/rtsx_transport.c b/drivers/staging/rts_pstor/rtsx_transport.c
-index 4e3d2c1..9b2e5c9 100644
---- a/drivers/staging/rts_pstor/rtsx_transport.c
-+++ b/drivers/staging/rts_pstor/rtsx_transport.c
-@@ -335,6 +335,7 @@ static int rtsx_transfer_sglist_adma_partial(struct rtsx_chip *chip, u8 card,
- int sg_cnt, i, resid;
- int err = 0;
- long timeleft;
-+ struct scatterlist *sg_ptr;
- u32 val = TRIG_DMA;
-
- if ((sg == NULL) || (num_sg <= 0) || !offset || !index)
-@@ -371,7 +372,7 @@ static int rtsx_transfer_sglist_adma_partial(struct rtsx_chip *chip, u8 card,
- sg_cnt = dma_map_sg(&(rtsx->pci->dev), sg, num_sg, dma_dir);
-
- resid = size;
--
-+ sg_ptr = sg;
- chip->sgi = 0;
- /* Usually the next entry will be @sg@ + 1, but if this sg element
- * is part of a chained scatterlist, it could jump to the start of
-@@ -379,14 +380,14 @@ static int rtsx_transfer_sglist_adma_partial(struct rtsx_chip *chip, u8 card,
- * the proper sg
- */
- for (i = 0; i < *index; i++)
-- sg = sg_next(sg);
-+ sg_ptr = sg_next(sg_ptr);
- for (i = *index; i < sg_cnt; i++) {
- dma_addr_t addr;
- unsigned int len;
- u8 option;
-
-- addr = sg_dma_address(sg);
-- len = sg_dma_len(sg);
-+ addr = sg_dma_address(sg_ptr);
-+ len = sg_dma_len(sg_ptr);
-
- RTSX_DEBUGP("DMA addr: 0x%x, Len: 0x%x\n",
- (unsigned int)addr, len);
-@@ -415,7 +416,7 @@ static int rtsx_transfer_sglist_adma_partial(struct rtsx_chip *chip, u8 card,
- if (!resid)
- break;
-
-- sg = sg_next(sg);
-+ sg_ptr = sg_next(sg_ptr);
- }
-
- RTSX_DEBUGP("SG table count = %d\n", chip->sgi);
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0016-gspca-core-Fix-buffers-staying-in-queued-state-after.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0016-gspca-core-Fix-buffers-staying-in-queued-state-after.patch
deleted file mode 100644
index 152c0d5..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0016-gspca-core-Fix-buffers-staying-in-queued-state-after.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From f9f47b15a0eb3d8ae86f5d034fd8924ab258a4d2 Mon Sep 17 00:00:00 2001
-From: Hans de Goede <hdegoede at redhat.com>
-Date: Tue, 22 May 2012 11:24:05 -0300
-Subject: [PATCH 16/46] gspca-core: Fix buffers staying in queued state after
- a stream_off
-
-commit af05ef01e9cde84620c6855a8d8ab9c8a1db9009 upstream.
-
-This fixes a regression introduced by commit f7059ea and should be
-backported to all supported stable kernels which have this commit.
-
-Signed-off-by: Hans de Goede <hdegoede at redhat.com>
-Tested-by: Antonio Ospite <ospite at studenti.unina.it>
-Signed-off-by: Mauro Carvalho Chehab <mchehab at redhat.com>
-[bwh: Backported to 3.2: adjust context]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/media/video/gspca/gspca.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/media/video/gspca/gspca.c b/drivers/media/video/gspca/gspca.c
-index 2ca10df..981501f 100644
---- a/drivers/media/video/gspca/gspca.c
-+++ b/drivers/media/video/gspca/gspca.c
-@@ -1697,7 +1697,7 @@ static int vidioc_streamoff(struct file *file, void *priv,
- enum v4l2_buf_type buf_type)
- {
- struct gspca_dev *gspca_dev = priv;
-- int ret;
-+ int i, ret;
-
- if (buf_type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
- return -EINVAL;
-@@ -1728,6 +1728,8 @@ static int vidioc_streamoff(struct file *file, void *priv,
- wake_up_interruptible(&gspca_dev->wq);
-
- /* empty the transfer queues */
-+ for (i = 0; i < gspca_dev->nframes; i++)
-+ gspca_dev->frame[i].v4l2_buf.flags &= ~BUF_ALL_FLAGS;
- atomic_set(&gspca_dev->fr_q, 0);
- atomic_set(&gspca_dev->fr_i, 0);
- gspca_dev->fr_o = 0;
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0017-smsusb-add-autodetection-support-for-USB-ID-2040-f5a.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0017-smsusb-add-autodetection-support-for-USB-ID-2040-f5a.patch
deleted file mode 100644
index 84e2eb9..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0017-smsusb-add-autodetection-support-for-USB-ID-2040-f5a.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From ac5a4cc2f5d46f744484e577f41441acdbb0a68b Mon Sep 17 00:00:00 2001
-From: Michael Krufky <mkrufky at linuxtv.org>
-Date: Fri, 25 May 2012 09:29:12 -0300
-Subject: [PATCH 17/46] smsusb: add autodetection support for USB ID 2040:f5a0
-
-commit 3e1141e2ce5667301a74ca2ef396d9bd5e995f7f upstream.
-
-Signed-off-by: Michael Krufky <mkrufky at linuxtv.org>
-Signed-off-by: Mauro Carvalho Chehab <mchehab at redhat.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/media/dvb/siano/smsusb.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/drivers/media/dvb/siano/smsusb.c b/drivers/media/dvb/siano/smsusb.c
-index b7d1e3e..fb68805 100644
---- a/drivers/media/dvb/siano/smsusb.c
-+++ b/drivers/media/dvb/siano/smsusb.c
-@@ -544,6 +544,8 @@ static const struct usb_device_id smsusb_id_table[] __devinitconst = {
- .driver_info = SMS1XXX_BOARD_HAUPPAUGE_WINDHAM },
- { USB_DEVICE(0x2040, 0xc0a0),
- .driver_info = SMS1XXX_BOARD_HAUPPAUGE_WINDHAM },
-+ { USB_DEVICE(0x2040, 0xf5a0),
-+ .driver_info = SMS1XXX_BOARD_HAUPPAUGE_WINDHAM },
- { } /* Terminating entry */
- };
-
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0018-drm-edid-don-t-return-stack-garbage-from-supports_rb.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0018-drm-edid-don-t-return-stack-garbage-from-supports_rb.patch
deleted file mode 100644
index 87ce7d9..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0018-drm-edid-don-t-return-stack-garbage-from-supports_rb.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 2d6a30faab149fe943e5648ef8ed9a6de7c112b1 Mon Sep 17 00:00:00 2001
-From: Daniel Vetter <daniel.vetter at ffwll.ch>
-Date: Tue, 19 Jun 2012 11:33:06 +0200
-Subject: [PATCH 18/46] drm/edid: don't return stack garbage from supports_rb
-
-commit b196a4980ff7bb54db478e2a408dc8b12be15304 upstream.
-
-We need to initialize this to false, because the is_rb callback only
-ever sets it to true.
-
-Noticed while reading through the code.
-
-Signed-Off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
-Reviewed-by: Adam Jackson <ajax at redhat.com>
-Signed-off-by: Dave Airlie <airlied at redhat.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpu/drm/drm_edid.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
-index 3e927ce..a1ee634 100644
---- a/drivers/gpu/drm/drm_edid.c
-+++ b/drivers/gpu/drm/drm_edid.c
-@@ -585,7 +585,7 @@ static bool
- drm_monitor_supports_rb(struct edid *edid)
- {
- if (edid->revision >= 4) {
-- bool ret;
-+ bool ret = false;
- drm_for_each_detailed_block((u8 *)edid, is_rb, &ret);
- return ret;
- }
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0019-drm-nouveau-fbcon-using-nv_two_heads-is-not-a-good-i.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0019-drm-nouveau-fbcon-using-nv_two_heads-is-not-a-good-i.patch
deleted file mode 100644
index 85deab4..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0019-drm-nouveau-fbcon-using-nv_two_heads-is-not-a-good-i.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 94823f5367fcb795a9e2d263b23c600ffa1b465f Mon Sep 17 00:00:00 2001
-From: Ben Skeggs <bskeggs at redhat.com>
-Date: Tue, 26 Jun 2012 12:12:30 +1000
-Subject: [PATCH 19/46] drm/nouveau/fbcon: using nv_two_heads is not a good
- idea
-
-commit 9bd0c15fcfb42f6245447c53347d65ad9e72080b upstream.
-
-nv_two_heads() was never meant to be used outside of pre-nv50 code. The
-code checks for >= NV_10 for 2 CRTCs, then downgrades a few specific
-chipsets to 1 CRTC based on (pci_device & 0x0ff0).
-
-The breakage example seen is on GTX 560Ti, with a pciid of 0x1200, which
-gets detected as an NV20 (0x020x) with 1 CRTC by nv_two_heads(), causing
-memory corruption because there's actually 2 CRTCs..
-
-This switches fbcon to use the CRTC count directly from the mode_config
-structure, which will also fix the same issue on Kepler boards which have
-4 CRTCs.
-
-Signed-off-by: Ben Skeggs <bskeggs at redhat.com>
-Signed-off-by: Dave Airlie <airlied at redhat.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpu/drm/nouveau/nouveau_fbcon.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/gpu/drm/nouveau/nouveau_fbcon.c b/drivers/gpu/drm/nouveau/nouveau_fbcon.c
-index 3a4cc32..cc0801d 100644
---- a/drivers/gpu/drm/nouveau/nouveau_fbcon.c
-+++ b/drivers/gpu/drm/nouveau/nouveau_fbcon.c
-@@ -499,7 +499,7 @@ int nouveau_fbcon_init(struct drm_device *dev)
- nfbdev->helper.funcs = &nouveau_fbcon_helper_funcs;
-
- ret = drm_fb_helper_init(dev, &nfbdev->helper,
-- nv_two_heads(dev) ? 2 : 1, 4);
-+ dev->mode_config.num_crtc, 4);
- if (ret) {
- kfree(nfbdev);
- return ret;
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0020-dm-thin-reinstate-missing-mempool_free-in-cell_relea.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0020-dm-thin-reinstate-missing-mempool_free-in-cell_relea.patch
deleted file mode 100644
index 725aa12..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0020-dm-thin-reinstate-missing-mempool_free-in-cell_relea.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From 41466ed94cbd995e8553e3f6bd76b698cdb398ab Mon Sep 17 00:00:00 2001
-From: Mike Snitzer <snitzer at redhat.com>
-Date: Sat, 12 May 2012 01:43:12 +0100
-Subject: [PATCH 20/46] dm thin: reinstate missing mempool_free in
- cell_release_singleton
-
-commit 03aaae7cdc71bc306888440b1f569d463e917b6d upstream.
-
-Fix a significant memory leak inadvertently introduced during
-simplification of cell_release_singleton() in commit
-6f94a4c45a6f744383f9f695dde019998db3df55 ("dm thin: fix stacked bi_next
-usage").
-
-A cell's hlist_del() must be accompanied by a mempool_free().
-Use __cell_release() to do this, like before.
-
-Signed-off-by: Mike Snitzer <snitzer at redhat.com>
-Signed-off-by: Alasdair G Kergon <agk at redhat.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/md/dm-thin.c | 9 ++++++---
- 1 file changed, 6 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/md/dm-thin.c b/drivers/md/dm-thin.c
-index da2f021..532a902 100644
---- a/drivers/md/dm-thin.c
-+++ b/drivers/md/dm-thin.c
-@@ -288,8 +288,10 @@ static void __cell_release(struct cell *cell, struct bio_list *inmates)
-
- hlist_del(&cell->list);
-
-- bio_list_add(inmates, cell->holder);
-- bio_list_merge(inmates, &cell->bios);
-+ if (inmates) {
-+ bio_list_add(inmates, cell->holder);
-+ bio_list_merge(inmates, &cell->bios);
-+ }
-
- mempool_free(cell, prison->cell_pool);
- }
-@@ -312,9 +314,10 @@ static void cell_release(struct cell *cell, struct bio_list *bios)
- */
- static void __cell_release_singleton(struct cell *cell, struct bio *bio)
- {
-- hlist_del(&cell->list);
- BUG_ON(cell->holder != bio);
- BUG_ON(!bio_list_empty(&cell->bios));
-+
-+ __cell_release(cell, NULL);
- }
-
- static void cell_release_singleton(struct cell *cell, struct bio *bio)
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0021-ath9k-Fix-a-WARNING-on-suspend-resume-with-IBSS.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0021-ath9k-Fix-a-WARNING-on-suspend-resume-with-IBSS.patch
deleted file mode 100644
index a3917dc..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0021-ath9k-Fix-a-WARNING-on-suspend-resume-with-IBSS.patch
+++ /dev/null
@@ -1,75 +0,0 @@
-From 5bd15d249215ca79b080b366616c0a5f1c38904c Mon Sep 17 00:00:00 2001
-From: Mohammed Shafi Shajakhan <mohammed at qca.qualcomm.com>
-Date: Wed, 6 Jun 2012 10:33:10 +0530
-Subject: [PATCH 21/46] ath9k: Fix a WARNING on suspend/resume with IBSS
-
-commit 2031b4c2b4904f7448ab9e4bc6b9bf16e32709f5 upstream.
-
-this patch is dependent on the patch "cfg80211: fix interface
-combinations"
-
-In ath9k currently we have ADHOC interface as a single incompatible
-interface. when drv_add_interface is called during resume we got to
-consider number of vifs already present in addition to checking the
-drivers 'opmode' information about ADHOC. we incorrectly assume
-an ADHOC interface is already present. Then we may miss some driver
-specific data for the ADHOC interface after resume.
-
-The above mentioned checks can be removed from the driver,
-as the patch 'cfg80211: fix interface combinations' ensures that
-if an interface type is not advertised by the driver in any of the
-interface combinations(via ieee80211_iface_combination) then it shall
-be treated as a single incompatible interface. Fixes the following
-warning on suspend/resume with ibss interface.
-
- ath: phy0: Cannot create ADHOC interface when other
- interfaces already exist.
- WARNING: at net/mac80211/driver-ops.h:12
- ieee80211_reconfig+0x1882/0x1ca0 [mac80211]()
- Hardware name: 2842RK1
- wlan2: Failed check-sdata-in-driver check, flags: 0x0
-
- Call Trace:
- [<c01361b2>] warn_slowpath_common+0x72/0xa0
- [<f8aaa7c2>] ? ieee80211_reconfig+0x1882/0x1ca0
- [mac80211]
- [<f8aaa7c2>] ? ieee80211_reconfig+0x1882/0x1ca0
- [mac80211]
- [<c0136283>] warn_slowpath_fmt+0x33/0x40
- [<f8aaa7c2>] ieee80211_reconfig+0x1882/0x1ca0 [mac80211]
- [<c06c1d1a>] ? mutex_lock_nested+0x23a/0x2f0
- [<f8a95097>] ieee80211_resume+0x27/0x70 [mac80211]
- [<fd177edf>] wiphy_resume+0x8f/0xa0 [cfg80211]
-
-Cc: Rajkumar Manoharan <rmanohar at qca.qualcomm.com>
-Signed-off-by: Mohammed Shafi Shajakhan <mohammed at qca.qualcomm.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-[bwh: Backported to 3.2: adjust context]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/wireless/ath/ath9k/main.c | 9 ---------
- 1 file changed, 9 deletions(-)
-
-diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c
-index f76a814..5b22ecd 100644
---- a/drivers/net/wireless/ath/ath9k/main.c
-+++ b/drivers/net/wireless/ath/ath9k/main.c
-@@ -1486,15 +1486,6 @@ static int ath9k_add_interface(struct ieee80211_hw *hw,
- }
- }
-
-- if ((ah->opmode == NL80211_IFTYPE_ADHOC) ||
-- ((vif->type == NL80211_IFTYPE_ADHOC) &&
-- sc->nvifs > 0)) {
-- ath_err(common, "Cannot create ADHOC interface when other"
-- " interfaces already exist.\n");
-- ret = -EINVAL;
-- goto out;
-- }
--
- ath_dbg(common, ATH_DBG_CONFIG,
- "Attach a VIF of type: %d\n", vif->type);
-
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0022-cfg80211-fix-potential-deadlock-in-regulatory.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0022-cfg80211-fix-potential-deadlock-in-regulatory.patch
deleted file mode 100644
index fe1bc4b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0022-cfg80211-fix-potential-deadlock-in-regulatory.patch
+++ /dev/null
@@ -1,144 +0,0 @@
-From 76f7c2172698cade04f33c7f8841b641c95ddeda Mon Sep 17 00:00:00 2001
-From: Eliad Peller <eliad at wizery.com>
-Date: Tue, 12 Jun 2012 12:53:13 +0300
-Subject: [PATCH 22/46] cfg80211: fix potential deadlock in regulatory
-
-commit fe20b39ec32e975f1054c0b7866c873a954adf05 upstream.
-
-reg_timeout_work() calls restore_regulatory_settings() which
-takes cfg80211_mutex.
-
-reg_set_request_processed() already holds cfg80211_mutex
-before calling cancel_delayed_work_sync(reg_timeout),
-so it might deadlock.
-
-Call the async cancel_delayed_work instead, in order
-to avoid the potential deadlock.
-
-This is the relevant lockdep warning:
-
-cfg80211: Calling CRDA for country: XX
-
-======================================================
-[ INFO: possible circular locking dependency detected ]
-3.4.0-rc5-wl+ #26 Not tainted
--------------------------------------------------------
-kworker/0:2/1391 is trying to acquire lock:
- (cfg80211_mutex){+.+.+.}, at: [<bf28ae00>] restore_regulatory_settings+0x34/0x418 [cfg80211]
-
-but task is already holding lock:
- ((reg_timeout).work){+.+...}, at: [<c0059e94>] process_one_work+0x1f0/0x480
-
-which lock already depends on the new lock.
-
-the existing dependency chain (in reverse order) is:
-
--> #2 ((reg_timeout).work){+.+...}:
- [<c008fd44>] validate_chain+0xb94/0x10f0
- [<c0090b68>] __lock_acquire+0x8c8/0x9b0
- [<c0090d40>] lock_acquire+0xf0/0x114
- [<c005b600>] wait_on_work+0x4c/0x154
- [<c005c000>] __cancel_work_timer+0xd4/0x11c
- [<c005c064>] cancel_delayed_work_sync+0x1c/0x20
- [<bf28b274>] reg_set_request_processed+0x50/0x78 [cfg80211]
- [<bf28bd84>] set_regdom+0x550/0x600 [cfg80211]
- [<bf294cd8>] nl80211_set_reg+0x218/0x258 [cfg80211]
- [<c03c7738>] genl_rcv_msg+0x1a8/0x1e8
- [<c03c6a00>] netlink_rcv_skb+0x5c/0xc0
- [<c03c7584>] genl_rcv+0x28/0x34
- [<c03c6720>] netlink_unicast+0x15c/0x228
- [<c03c6c7c>] netlink_sendmsg+0x218/0x298
- [<c03933c8>] sock_sendmsg+0xa4/0xc0
- [<c039406c>] __sys_sendmsg+0x1e4/0x268
- [<c0394228>] sys_sendmsg+0x4c/0x70
- [<c0013840>] ret_fast_syscall+0x0/0x3c
-
--> #1 (reg_mutex){+.+.+.}:
- [<c008fd44>] validate_chain+0xb94/0x10f0
- [<c0090b68>] __lock_acquire+0x8c8/0x9b0
- [<c0090d40>] lock_acquire+0xf0/0x114
- [<c04734dc>] mutex_lock_nested+0x48/0x320
- [<bf28b2cc>] reg_todo+0x30/0x538 [cfg80211]
- [<c0059f44>] process_one_work+0x2a0/0x480
- [<c005a4b4>] worker_thread+0x1bc/0x2bc
- [<c0061148>] kthread+0x98/0xa4
- [<c0014af4>] kernel_thread_exit+0x0/0x8
-
--> #0 (cfg80211_mutex){+.+.+.}:
- [<c008ed58>] print_circular_bug+0x68/0x2cc
- [<c008fb28>] validate_chain+0x978/0x10f0
- [<c0090b68>] __lock_acquire+0x8c8/0x9b0
- [<c0090d40>] lock_acquire+0xf0/0x114
- [<c04734dc>] mutex_lock_nested+0x48/0x320
- [<bf28ae00>] restore_regulatory_settings+0x34/0x418 [cfg80211]
- [<bf28b200>] reg_timeout_work+0x1c/0x20 [cfg80211]
- [<c0059f44>] process_one_work+0x2a0/0x480
- [<c005a4b4>] worker_thread+0x1bc/0x2bc
- [<c0061148>] kthread+0x98/0xa4
- [<c0014af4>] kernel_thread_exit+0x0/0x8
-
-other info that might help us debug this:
-
-Chain exists of:
- cfg80211_mutex --> reg_mutex --> (reg_timeout).work
-
- Possible unsafe locking scenario:
-
- CPU0 CPU1
- ---- ----
- lock((reg_timeout).work);
- lock(reg_mutex);
- lock((reg_timeout).work);
- lock(cfg80211_mutex);
-
- *** DEADLOCK ***
-
-2 locks held by kworker/0:2/1391:
- #0: (events){.+.+.+}, at: [<c0059e94>] process_one_work+0x1f0/0x480
- #1: ((reg_timeout).work){+.+...}, at: [<c0059e94>] process_one_work+0x1f0/0x480
-
-stack backtrace:
-[<c001b928>] (unwind_backtrace+0x0/0x12c) from [<c0471d3c>] (dump_stack+0x20/0x24)
-[<c0471d3c>] (dump_stack+0x20/0x24) from [<c008ef70>] (print_circular_bug+0x280/0x2cc)
-[<c008ef70>] (print_circular_bug+0x280/0x2cc) from [<c008fb28>] (validate_chain+0x978/0x10f0)
-[<c008fb28>] (validate_chain+0x978/0x10f0) from [<c0090b68>] (__lock_acquire+0x8c8/0x9b0)
-[<c0090b68>] (__lock_acquire+0x8c8/0x9b0) from [<c0090d40>] (lock_acquire+0xf0/0x114)
-[<c0090d40>] (lock_acquire+0xf0/0x114) from [<c04734dc>] (mutex_lock_nested+0x48/0x320)
-[<c04734dc>] (mutex_lock_nested+0x48/0x320) from [<bf28ae00>] (restore_regulatory_settings+0x34/0x418 [cfg80211])
-[<bf28ae00>] (restore_regulatory_settings+0x34/0x418 [cfg80211]) from [<bf28b200>] (reg_timeout_work+0x1c/0x20 [cfg80211])
-[<bf28b200>] (reg_timeout_work+0x1c/0x20 [cfg80211]) from [<c0059f44>] (process_one_work+0x2a0/0x480)
-[<c0059f44>] (process_one_work+0x2a0/0x480) from [<c005a4b4>] (worker_thread+0x1bc/0x2bc)
-[<c005a4b4>] (worker_thread+0x1bc/0x2bc) from [<c0061148>] (kthread+0x98/0xa4)
-[<c0061148>] (kthread+0x98/0xa4) from [<c0014af4>] (kernel_thread_exit+0x0/0x8)
-cfg80211: Calling CRDA to update world regulatory domain
-cfg80211: World regulatory domain updated:
-cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
-cfg80211: (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
-cfg80211: (2457000 KHz - 2482000 KHz @ 20000 KHz), (300 mBi, 2000 mBm)
-cfg80211: (2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm)
-cfg80211: (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
-cfg80211: (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
-
-Signed-off-by: Eliad Peller <eliad at wizery.com>
-Signed-off-by: Johannes Berg <johannes.berg at intel.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/wireless/reg.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/net/wireless/reg.c b/net/wireless/reg.c
-index c1c99dd..d57d05b 100644
---- a/net/wireless/reg.c
-+++ b/net/wireless/reg.c
-@@ -1369,7 +1369,7 @@ static void reg_set_request_processed(void)
- spin_unlock(®_requests_lock);
-
- if (last_request->initiator == NL80211_REGDOM_SET_BY_USER)
-- cancel_delayed_work_sync(®_timeout);
-+ cancel_delayed_work(®_timeout);
-
- if (need_more_processing)
- schedule_work(®_work);
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0023-ath9k-Fix-softlockup-in-AR9485.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0023-ath9k-Fix-softlockup-in-AR9485.patch
deleted file mode 100644
index 7a88ca0..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0023-ath9k-Fix-softlockup-in-AR9485.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-From 7195eb3dcc15a2a0ea8c557806abf32241e276d1 Mon Sep 17 00:00:00 2001
-From: Mohammed Shafi Shajakhan <mohammed at qca.qualcomm.com>
-Date: Wed, 13 Jun 2012 21:28:09 +0530
-Subject: [PATCH 23/46] ath9k: Fix softlockup in AR9485
-
-commit bcb7ad7bcbef030e6ba71ede1f9866368aca7c99 upstream.
-
-steps to recreate:
-load latest ath9k driver with AR9485
-stop the network-manager and wpa_supplicant
-bring the interface up
-
- Call Trace:
- [<ffffffffa0517490>] ? ath_hw_check+0xe0/0xe0 [ath9k]
- [<ffffffff812cd1e8>] __const_udelay+0x28/0x30
- [<ffffffffa03bae7a>] ar9003_get_pll_sqsum_dvc+0x4a/0x80 [ath9k_hw]
- [<ffffffffa05174eb>] ath_hw_pll_work+0x5b/0xe0 [ath9k]
- [<ffffffff810744fe>] process_one_work+0x11e/0x470
- [<ffffffff8107530f>] worker_thread+0x15f/0x360
- [<ffffffff810751b0>] ? manage_workers+0x230/0x230
- [<ffffffff81079af3>] kthread+0x93/0xa0
- [<ffffffff815fd3a4>] kernel_thread_helper+0x4/0x10
- [<ffffffff81079a60>] ? kthread_freezable_should_stop+0x70/0x70
- [<ffffffff815fd3a0>] ? gs_change+0x13/0x13
-
-ensure that the PLL-WAR for AR9485/AR9340 is executed only if the STA is
-associated (or) IBSS/AP mode had started beaconing. Ideally this WAR
-is needed to recover from some rare beacon stuck during stress testing.
-Before the STA is associated/IBSS had started beaconing, PLL4(0x1618c)
-always seem to have zero even though we had configured PLL3(0x16188) to
-query about PLL's locking status. When we keep on polling infinitely PLL4's
-8th bit(ie check for PLL locking measurements is done), machine hangs
-due to softlockup.
-
-fixes https://bugzilla.redhat.com/show_bug.cgi?id=811142
-
-Reported-by: Rolf Offermanns <rolf.offermanns at gmx.net>
-Tested-by: Mohammed Shafi Shajakhan <mohammed at qca.qualcomm.com>
-Signed-off-by: Mohammed Shafi Shajakhan <mohammed at qca.qualcomm.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/wireless/ath/ath9k/main.c | 9 +++++++++
- 1 file changed, 9 insertions(+)
-
-diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c
-index 5b22ecd..95437fc 100644
---- a/drivers/net/wireless/ath/ath9k/main.c
-+++ b/drivers/net/wireless/ath/ath9k/main.c
-@@ -1042,6 +1042,15 @@ void ath_hw_pll_work(struct work_struct *work)
- hw_pll_work.work);
- u32 pll_sqsum;
-
-+ /*
-+ * ensure that the PLL WAR is executed only
-+ * after the STA is associated (or) if the
-+ * beaconing had started in interfaces that
-+ * uses beacons.
-+ */
-+ if (!(sc->sc_flags & SC_OP_BEACONS))
-+ return;
-+
- if (AR_SREV_9485(sc->sc_ah)) {
-
- ath9k_ps_wakeup(sc);
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0024-can-c_can-precedence-error-in-c_can_chip_config.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0024-can-c_can-precedence-error-in-c_can_chip_config.patch
deleted file mode 100644
index 4fd58e4..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0024-can-c_can-precedence-error-in-c_can_chip_config.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From a06c6152d3db3bab83eefcbff5a1e41c91c8295d Mon Sep 17 00:00:00 2001
-From: Dan Carpenter <dan.carpenter at oracle.com>
-Date: Fri, 15 Jun 2012 00:20:44 +0000
-Subject: [PATCH 24/46] can: c_can: precedence error in c_can_chip_config()
-
-commit d9cb9bd63eb27ac19f26a8547128c053f43a5da8 upstream.
-
-(CAN_CTRLMODE_LISTENONLY & CAN_CTRLMODE_LOOPBACK) is (0x02 & 0x01) which
-is zero so the condition is never true. The intent here was to test
-that both flags were set.
-
-Signed-off-by: Dan Carpenter <dan.carpenter at oracle.com>
-Acked-by: Oliver Hartkopp <socketcan at hartkopp.net>
-Signed-off-by: Marc Kleine-Budde <mkl at pengutronix.de>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/can/c_can/c_can.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/net/can/c_can/c_can.c b/drivers/net/can/c_can/c_can.c
-index 8dc84d6..86cd532 100644
---- a/drivers/net/can/c_can/c_can.c
-+++ b/drivers/net/can/c_can/c_can.c
-@@ -590,8 +590,8 @@ static void c_can_chip_config(struct net_device *dev)
- priv->write_reg(priv, &priv->regs->control,
- CONTROL_ENABLE_AR);
-
-- if (priv->can.ctrlmode & (CAN_CTRLMODE_LISTENONLY &
-- CAN_CTRLMODE_LOOPBACK)) {
-+ if ((priv->can.ctrlmode & CAN_CTRLMODE_LISTENONLY) &&
-+ (priv->can.ctrlmode & CAN_CTRLMODE_LOOPBACK)) {
- /* loopback + silent mode : useful for hot self-test */
- priv->write_reg(priv, &priv->regs->control, CONTROL_EIE |
- CONTROL_SIE | CONTROL_IE | CONTROL_TEST);
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0025-ath9k-fix-a-tx-rate-duration-calculation-bug.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0025-ath9k-fix-a-tx-rate-duration-calculation-bug.patch
deleted file mode 100644
index 82df3fb..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0025-ath9k-fix-a-tx-rate-duration-calculation-bug.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From aabb8d6daa5fecfc6086a480865312860e6a1080 Mon Sep 17 00:00:00 2001
-From: Felix Fietkau <nbd at openwrt.org>
-Date: Fri, 15 Jun 2012 03:04:52 +0200
-Subject: [PATCH 25/46] ath9k: fix a tx rate duration calculation bug
-
-commit 76591bea9714a58d8924154068c78d702eb2cb17 upstream.
-
-The rate pointer variable for a rate series is used in a loop before it is
-initialized. This went unnoticed because it was used earlier for the RTS/CTS
-rate. This bug can lead to the wrong PHY type being passed to the
-duration calculation function.
-
-Signed-off-by: Felix Fietkau <nbd at openwrt.org>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/wireless/ath/ath9k/xmit.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/net/wireless/ath/ath9k/xmit.c b/drivers/net/wireless/ath/ath9k/xmit.c
-index 76fd277..c59c592 100644
---- a/drivers/net/wireless/ath/ath9k/xmit.c
-+++ b/drivers/net/wireless/ath/ath9k/xmit.c
-@@ -936,13 +936,13 @@ static void ath_buf_set_rate(struct ath_softc *sc, struct ath_buf *bf,
- }
-
- /* legacy rates */
-+ rate = &sc->sbands[tx_info->band].bitrates[rates[i].idx];
- if ((tx_info->band == IEEE80211_BAND_2GHZ) &&
- !(rate->flags & IEEE80211_RATE_ERP_G))
- phy = WLAN_RC_PHY_CCK;
- else
- phy = WLAN_RC_PHY_OFDM;
-
-- rate = &sc->sbands[tx_info->band].bitrates[rates[i].idx];
- info->rates[i].Rate = rate->hw_value;
- if (rate->hw_value_short) {
- if (rates[i].flags & IEEE80211_TX_RC_USE_SHORT_PREAMBLE)
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0026-batman-adv-fix-skb-data-assignment.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0026-batman-adv-fix-skb-data-assignment.patch
deleted file mode 100644
index f64ab78..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0026-batman-adv-fix-skb-data-assignment.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 124c9eb2772ae36b2a2d9afa510976cc38a497ef Mon Sep 17 00:00:00 2001
-From: Antonio Quartulli <ordex at autistici.org>
-Date: Fri, 29 Jun 2012 22:58:03 +0200
-Subject: [PATCH 26/46] batman-adv: fix skb->data assignment
-
-commit 2c995ff892313009e336ecc8ec3411022f5b1c39 upstream.
-
-skb_linearize(skb) possibly rearranges the skb internal data and then changes
-the skb->data pointer value. For this reason any other pointer in the code that
-was assigned skb->data before invoking skb_linearise(skb) must be re-assigned.
-
-In the current tt_query message handling code this is not done and therefore, in
-case of skb linearization, the pointer used to handle the packet header ends up
-in pointing to free'd memory.
-
-This bug was introduced by a73105b8d4c765d9ebfb664d0a66802127d8e4c7
-(batman-adv: improved client announcement mechanism)
-
-Signed-off-by: Antonio Quartulli <ordex at autistici.org>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-[This patch is a backport for kernel versions 3.1 and 3.2 - Antonio]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/batman-adv/routing.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/net/batman-adv/routing.c b/net/batman-adv/routing.c
-index f961cc5..da587ad 100644
---- a/net/batman-adv/routing.c
-+++ b/net/batman-adv/routing.c
-@@ -619,6 +619,8 @@ int recv_tt_query(struct sk_buff *skb, struct hard_iface *recv_if)
- /* packet needs to be linearized to access the TT changes */
- if (skb_linearize(skb) < 0)
- goto out;
-+ /* skb_linearize() possibly changed skb->data */
-+ tt_query = (struct tt_query_packet *)skb->data;
-
- if (is_my_mac(tt_query->dst))
- handle_tt_response(bat_priv, tt_query);
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0027-ARM-SAMSUNG-Should-check-for-IS_ERR-clk-instead-of-N.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0027-ARM-SAMSUNG-Should-check-for-IS_ERR-clk-instead-of-N.patch
deleted file mode 100644
index 99b9398..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0027-ARM-SAMSUNG-Should-check-for-IS_ERR-clk-instead-of-N.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From dcf35ea664aae563cd99db11c78285f28b7bdcde Mon Sep 17 00:00:00 2001
-From: Jonghwan Choi <jhbird.choi at samsung.com>
-Date: Wed, 20 Jun 2012 17:05:37 +0900
-Subject: [PATCH 27/46] ARM: SAMSUNG: Should check for IS_ERR(clk) instead of
- NULL
-
-commit a5d8f4765f0e92ef027492a8cb979c5b8d45f2c3 upstream.
-
-On the error condition clk_get() returns ERR_PTR().
-
-Signed-off-by: Jonghwan Choi <jhbird.choi at samsung.com>
-Signed-off-by: Kukjin Kim <kgene.kim at samsung.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/arm/plat-samsung/include/plat/watchdog-reset.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/arch/arm/plat-samsung/include/plat/watchdog-reset.h b/arch/arm/plat-samsung/include/plat/watchdog-reset.h
-index 40dbb2b..11b19ea 100644
---- a/arch/arm/plat-samsung/include/plat/watchdog-reset.h
-+++ b/arch/arm/plat-samsung/include/plat/watchdog-reset.h
-@@ -24,7 +24,7 @@ static inline void arch_wdt_reset(void)
-
- __raw_writel(0, S3C2410_WTCON); /* disable watchdog, to be safe */
-
-- if (s3c2410_wdtclk)
-+ if (!IS_ERR(s3c2410_wdtclk))
- clk_enable(s3c2410_wdtclk);
-
- /* put initial values into count and data */
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0028-ath9k_hw-avoid-possible-infinite-loop-in-ar9003_get_.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0028-ath9k_hw-avoid-possible-infinite-loop-in-ar9003_get_.patch
deleted file mode 100644
index 2b1b0a7..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0028-ath9k_hw-avoid-possible-infinite-loop-in-ar9003_get_.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From 750f92b77aa8db48a56f5d34dd6a61a3184cf119 Mon Sep 17 00:00:00 2001
-From: Mohammed Shafi Shajakhan <mohammed at qca.qualcomm.com>
-Date: Mon, 18 Jun 2012 13:13:30 +0530
-Subject: [PATCH 28/46] ath9k_hw: avoid possible infinite loop in
- ar9003_get_pll_sqsum_dvc
-
-commit f18e3c6b67f448ec47b3a5b242789bd3d5644879 upstream.
-
-"ath9k: Fix softlockup in AR9485" with commit id
-64bc1239c790e051ff677e023435d770d2ffa174 fixed the reported
-issue, yet its better to avoid the possible infinite loop
-in ar9003_get_pll_sqsum_dvc by having a timeout as suggested
-by ath9k maintainers.
-http://www.spinics.net/lists/linux-wireless/msg92126.html.
-Based on my testing PLL's locking measurement is done in
-~200us (2 iterations).
-
-Cc: Rolf Offermanns <rolf.offermanns at gmx.net>
-Cc: Sujith Manoharan <c_manoha at qca.qualcomm.com>
-Cc: Senthil Balasubramanian <senthilb at qca.qualcomm.com>
-Signed-off-by: Mohammed Shafi Shajakhan <mohammed at qca.qualcomm.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/wireless/ath/ath9k/hw.c | 14 +++++++++++++-
- 1 file changed, 13 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/net/wireless/ath/ath9k/hw.c b/drivers/net/wireless/ath/ath9k/hw.c
-index 8b0c2ca..6973620 100644
---- a/drivers/net/wireless/ath/ath9k/hw.c
-+++ b/drivers/net/wireless/ath/ath9k/hw.c
-@@ -718,13 +718,25 @@ static void ath9k_hw_init_qos(struct ath_hw *ah)
-
- u32 ar9003_get_pll_sqsum_dvc(struct ath_hw *ah)
- {
-+ struct ath_common *common = ath9k_hw_common(ah);
-+ int i = 0;
-+
- REG_CLR_BIT(ah, PLL3, PLL3_DO_MEAS_MASK);
- udelay(100);
- REG_SET_BIT(ah, PLL3, PLL3_DO_MEAS_MASK);
-
-- while ((REG_READ(ah, PLL4) & PLL4_MEAS_DONE) == 0)
-+ while ((REG_READ(ah, PLL4) & PLL4_MEAS_DONE) == 0) {
-+
- udelay(100);
-
-+ if (WARN_ON_ONCE(i >= 100)) {
-+ ath_err(common, "PLL4 meaurement not done\n");
-+ break;
-+ }
-+
-+ i++;
-+ }
-+
- return (REG_READ(ah, PLL3) & SQSUM_DVC_MASK) >> 3;
- }
- EXPORT_SYMBOL(ar9003_get_pll_sqsum_dvc);
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0029-iwlwifi-remove-log_event-debugfs-file-debugging-is-d.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0029-iwlwifi-remove-log_event-debugfs-file-debugging-is-d.patch
deleted file mode 100644
index 65fb0be..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0029-iwlwifi-remove-log_event-debugfs-file-debugging-is-d.patch
+++ /dev/null
@@ -1,67 +0,0 @@
-From 470e08b2e73b3ce64336de8d55b009e4782735b8 Mon Sep 17 00:00:00 2001
-From: Johannes Berg <johannes.berg at intel.com>
-Date: Wed, 20 Jun 2012 08:46:25 +0200
-Subject: [PATCH 29/46] iwlwifi: remove log_event debugfs file debugging is
- disabled
-
-commit 882b7b7d11d65e8eccce738f1ce97cdfdb998f9f upstream.
-
-When debugging is disabled, the event log functions aren't
-functional in the way that the debugfs file expects. This
-leads to the debugfs access crashing. Since the event log
-functions aren't functional then, remove the debugfs file
-when CONFIG_IWLWIFI_DEBUG is not set.
-
-Reported-by: Lekensteyn <lekensteyn at gmail.com>
-Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach at intel.com>
-Signed-off-by: Johannes Berg <johannes.berg at intel.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-[bwh: Backported to 3.2: adjust filename, context]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/wireless/iwlwifi/iwl-trans-pcie.c | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-diff --git a/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c b/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c
-index 5815cf5..4661a64 100644
---- a/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c
-+++ b/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c
-@@ -1777,6 +1777,7 @@ static ssize_t iwl_dbgfs_rx_queue_read(struct file *file,
- return simple_read_from_buffer(user_buf, count, ppos, buf, pos);
- }
-
-+#ifdef CONFIG_IWLWIFI_DEBUG
- static ssize_t iwl_dbgfs_log_event_read(struct file *file,
- char __user *user_buf,
- size_t count, loff_t *ppos)
-@@ -1814,6 +1815,7 @@ static ssize_t iwl_dbgfs_log_event_write(struct file *file,
-
- return count;
- }
-+#endif
-
- static ssize_t iwl_dbgfs_interrupt_read(struct file *file,
- char __user *user_buf,
-@@ -1941,7 +1943,9 @@ static ssize_t iwl_dbgfs_fh_reg_read(struct file *file,
- return ret;
- }
-
-+#ifdef CONFIG_IWLWIFI_DEBUG
- DEBUGFS_READ_WRITE_FILE_OPS(log_event);
-+#endif
- DEBUGFS_READ_WRITE_FILE_OPS(interrupt);
- DEBUGFS_READ_FILE_OPS(fh_reg);
- DEBUGFS_READ_FILE_OPS(rx_queue);
-@@ -1957,7 +1961,9 @@ static int iwl_trans_pcie_dbgfs_register(struct iwl_trans *trans,
- {
- DEBUGFS_ADD_FILE(rx_queue, dir, S_IRUSR);
- DEBUGFS_ADD_FILE(tx_queue, dir, S_IRUSR);
-+#ifdef CONFIG_IWLWIFI_DEBUG
- DEBUGFS_ADD_FILE(log_event, dir, S_IWUSR | S_IRUSR);
-+#endif
- DEBUGFS_ADD_FILE(interrupt, dir, S_IWUSR | S_IRUSR);
- DEBUGFS_ADD_FILE(csr, dir, S_IWUSR);
- DEBUGFS_ADD_FILE(fh_reg, dir, S_IRUSR);
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0030-ARM-SAMSUNG-Fix-for-S3C2412-EBI-memory-mapping.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0030-ARM-SAMSUNG-Fix-for-S3C2412-EBI-memory-mapping.patch
deleted file mode 100644
index 4a91186..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0030-ARM-SAMSUNG-Fix-for-S3C2412-EBI-memory-mapping.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 4885fac40cf4f8adf4c6832d90b3b60c4ac44f19 Mon Sep 17 00:00:00 2001
-From: Jose Miguel Goncalves <jose.goncalves at inov.pt>
-Date: Sat, 12 May 2012 06:11:49 +0900
-Subject: [PATCH 30/46] ARM: SAMSUNG: Fix for S3C2412 EBI memory mapping
-
-commit 3dca938656c7b0ff6b0717a5dde0f5f45e592be5 upstream.
-
-While upgrading the kernel on a S3C2412 based board I've noted
-that it was impossible to boot the board with a 2.6.32 or upper
-kernel. I've tracked down the problem to the EBI virtual memory
-mapping that is in conflict with the IO mapping definition in
-arch/arm/mach-s3c24xx/s3c2412.c.
-
-Signed-off-by: Jose Miguel Goncalves <jose.goncalves at inov.pt>
-Signed-off-by: Kukjin Kim <kgene.kim at samsung.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/arm/plat-samsung/include/plat/map-s3c.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/arch/arm/plat-samsung/include/plat/map-s3c.h b/arch/arm/plat-samsung/include/plat/map-s3c.h
-index 7d04875..c0c70a8 100644
---- a/arch/arm/plat-samsung/include/plat/map-s3c.h
-+++ b/arch/arm/plat-samsung/include/plat/map-s3c.h
-@@ -22,7 +22,7 @@
- #define S3C24XX_VA_WATCHDOG S3C_VA_WATCHDOG
-
- #define S3C2412_VA_SSMC S3C_ADDR_CPU(0x00000000)
--#define S3C2412_VA_EBI S3C_ADDR_CPU(0x00010000)
-+#define S3C2412_VA_EBI S3C_ADDR_CPU(0x00100000)
-
- #define S3C2410_PA_UART (0x50000000)
- #define S3C24XX_PA_UART S3C2410_PA_UART
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0031-USB-option-add-id-for-Cellient-MEN-200.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0031-USB-option-add-id-for-Cellient-MEN-200.patch
deleted file mode 100644
index d41471f..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0031-USB-option-add-id-for-Cellient-MEN-200.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From 8ca01cdb21b1e0daed013a4536ca89543f844424 Mon Sep 17 00:00:00 2001
-From: Dmitry Shmygov <shmygov at rambler.ru>
-Date: Wed, 20 Jun 2012 15:51:40 +0400
-Subject: [PATCH 31/46] USB: option: add id for Cellient MEN-200
-
-commit 1e2c4e59d2b8797973471b4a287a43eac12a0f40 upstream.
-
-Add vendor and product ID to option.c driver
-for Cellient MEN-200 EVDO Rev.B 450MHz data module.
-http://cellient.com
-
-Signed-off-by: Dmitry Shmygov <shmygov at rambler.ru>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/serial/option.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
-index 61d6c31..e311711c 100644
---- a/drivers/usb/serial/option.c
-+++ b/drivers/usb/serial/option.c
-@@ -496,6 +496,10 @@ static void option_instat_callback(struct urb *urb);
- /* MediaTek products */
- #define MEDIATEK_VENDOR_ID 0x0e8d
-
-+/* Cellient products */
-+#define CELLIENT_VENDOR_ID 0x2692
-+#define CELLIENT_PRODUCT_MEN200 0x9005
-+
- /* some devices interfaces need special handling due to a number of reasons */
- enum option_blacklist_reason {
- OPTION_BLACKLIST_NONE = 0,
-@@ -1227,6 +1231,7 @@ static const struct usb_device_id option_ids[] = {
- { USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, 0x00a1, 0xff, 0x02, 0x01) },
- { USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, 0x00a2, 0xff, 0x00, 0x00) },
- { USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, 0x00a2, 0xff, 0x02, 0x01) }, /* MediaTek MT6276M modem & app port */
-+ { USB_DEVICE(CELLIENT_VENDOR_ID, CELLIENT_PRODUCT_MEN200) },
- { } /* Terminating entry */
- };
- MODULE_DEVICE_TABLE(usb, option_ids);
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0032-oprofile-perf-use-NR_CPUS-instead-or-nr_cpumask_bits.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0032-oprofile-perf-use-NR_CPUS-instead-or-nr_cpumask_bits.patch
deleted file mode 100644
index e2c5be8..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0032-oprofile-perf-use-NR_CPUS-instead-or-nr_cpumask_bits.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From fa7b3de0ebfa0cd8a833ea2daa5ded5ea50fd085 Mon Sep 17 00:00:00 2001
-From: Will Deacon <will.deacon at arm.com>
-Date: Fri, 8 Jun 2012 16:16:04 +0100
-Subject: [PATCH 32/46] oprofile: perf: use NR_CPUS instead or nr_cpumask_bits
- for static array
-
-commit e734568b675c985db2026848fefaac01c22977a5 upstream.
-
-The OProfile perf backend uses a static array to keep track of the
-perf events on the system. When compiling with CONFIG_CPUMASK_OFFSTACK=y
-&& SMP, nr_cpumask_bits is not a compile-time constant and the build
-will fail with:
-
-oprofile_perf.c:28: error: variably modified 'perf_events' at file scope
-
-This patch uses NR_CPUs instead of nr_cpumask_bits for the array
-initialisation. If this causes space problems in the future, we can
-always move to dynamic allocation for the events array.
-
-Cc: Matt Fleming <matt at console-pimps.org>
-Reported-by: Russell King - ARM Linux <linux at arm.linux.org.uk>
-Signed-off-by: Will Deacon <will.deacon at arm.com>
-Signed-off-by: Robert Richter <robert.richter at amd.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/oprofile/oprofile_perf.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/oprofile/oprofile_perf.c b/drivers/oprofile/oprofile_perf.c
-index da14432..efc4b7f 100644
---- a/drivers/oprofile/oprofile_perf.c
-+++ b/drivers/oprofile/oprofile_perf.c
-@@ -25,7 +25,7 @@ static int oprofile_perf_enabled;
- static DEFINE_MUTEX(oprofile_perf_mutex);
-
- static struct op_counter_config *counter_config;
--static struct perf_event **perf_events[nr_cpumask_bits];
-+static struct perf_event **perf_events[NR_CPUS];
- static int num_counters;
-
- /*
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0033-drm-i915-Refactor-the-deferred-PM_IIR-handling-into-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0033-drm-i915-Refactor-the-deferred-PM_IIR-handling-into-.patch
deleted file mode 100644
index ac1efd7..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0033-drm-i915-Refactor-the-deferred-PM_IIR-handling-into-.patch
+++ /dev/null
@@ -1,107 +0,0 @@
-From 179d0e42c797861a350b6f72e534edad4dac0f65 Mon Sep 17 00:00:00 2001
-From: Chris Wilson <chris at chris-wilson.co.uk>
-Date: Sun, 15 Apr 2012 11:56:03 +0100
-Subject: [PATCH 33/46] drm/i915: Refactor the deferred PM_IIR handling into a
- single function
-
-commit fc6826d1dcd65f3d1e9a5377678882e4e08f02be upstream.
-
-This function, along with the registers and deferred work hander, are
-all shared with SandyBridge, IvyBridge and their variants. So remove the
-duplicate code into a single function.
-
-Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
-Reviewed-by: Ben Widawsky <ben at bwidawsk.net>
-Signed-Off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
-[bwh: Backported to 3.2: adjust context; drop changes for Valley View]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpu/drm/i915/i915_irq.c | 58 +++++++++++++++++++--------------------
- 1 file changed, 29 insertions(+), 29 deletions(-)
-
-diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
-index d3820c2..17c335e 100644
---- a/drivers/gpu/drm/i915/i915_irq.c
-+++ b/drivers/gpu/drm/i915/i915_irq.c
-@@ -424,6 +424,31 @@ static void gen6_pm_rps_work(struct work_struct *work)
- mutex_unlock(&dev_priv->dev->struct_mutex);
- }
-
-+static void gen6_queue_rps_work(struct drm_i915_private *dev_priv,
-+ u32 pm_iir)
-+{
-+ unsigned long flags;
-+
-+ /*
-+ * IIR bits should never already be set because IMR should
-+ * prevent an interrupt from being shown in IIR. The warning
-+ * displays a case where we've unsafely cleared
-+ * dev_priv->pm_iir. Although missing an interrupt of the same
-+ * type is not a problem, it displays a problem in the logic.
-+ *
-+ * The mask bit in IMR is cleared by rps_work.
-+ */
-+
-+ spin_lock_irqsave(&dev_priv->rps_lock, flags);
-+ WARN(dev_priv->pm_iir & pm_iir, "Missed a PM interrupt\n");
-+ dev_priv->pm_iir |= pm_iir;
-+ I915_WRITE(GEN6_PMIMR, dev_priv->pm_iir);
-+ POSTING_READ(GEN6_PMIMR);
-+ spin_unlock_irqrestore(&dev_priv->rps_lock, flags);
-+
-+ queue_work(dev_priv->wq, &dev_priv->rps_work);
-+}
-+
- static void pch_irq_handler(struct drm_device *dev, u32 pch_iir)
- {
- drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private;
-@@ -529,16 +554,8 @@ static irqreturn_t ivybridge_irq_handler(DRM_IRQ_ARGS)
- pch_irq_handler(dev, pch_iir);
- }
-
-- if (pm_iir & GEN6_PM_DEFERRED_EVENTS) {
-- unsigned long flags;
-- spin_lock_irqsave(&dev_priv->rps_lock, flags);
-- WARN(dev_priv->pm_iir & pm_iir, "Missed a PM interrupt\n");
-- dev_priv->pm_iir |= pm_iir;
-- I915_WRITE(GEN6_PMIMR, dev_priv->pm_iir);
-- POSTING_READ(GEN6_PMIMR);
-- spin_unlock_irqrestore(&dev_priv->rps_lock, flags);
-- queue_work(dev_priv->wq, &dev_priv->rps_work);
-- }
-+ if (pm_iir & GEN6_PM_DEFERRED_EVENTS)
-+ gen6_queue_rps_work(dev_priv, pm_iir);
-
- /* should clear PCH hotplug event before clear CPU irq */
- I915_WRITE(SDEIIR, pch_iir);
-@@ -634,25 +651,8 @@ static irqreturn_t ironlake_irq_handler(DRM_IRQ_ARGS)
- i915_handle_rps_change(dev);
- }
-
-- if (IS_GEN6(dev) && pm_iir & GEN6_PM_DEFERRED_EVENTS) {
-- /*
-- * IIR bits should never already be set because IMR should
-- * prevent an interrupt from being shown in IIR. The warning
-- * displays a case where we've unsafely cleared
-- * dev_priv->pm_iir. Although missing an interrupt of the same
-- * type is not a problem, it displays a problem in the logic.
-- *
-- * The mask bit in IMR is cleared by rps_work.
-- */
-- unsigned long flags;
-- spin_lock_irqsave(&dev_priv->rps_lock, flags);
-- WARN(dev_priv->pm_iir & pm_iir, "Missed a PM interrupt\n");
-- dev_priv->pm_iir |= pm_iir;
-- I915_WRITE(GEN6_PMIMR, dev_priv->pm_iir);
-- POSTING_READ(GEN6_PMIMR);
-- spin_unlock_irqrestore(&dev_priv->rps_lock, flags);
-- queue_work(dev_priv->wq, &dev_priv->rps_work);
-- }
-+ if (IS_GEN6(dev) && pm_iir & GEN6_PM_DEFERRED_EVENTS)
-+ gen6_queue_rps_work(dev_priv, pm_iir);
-
- /* should clear PCH hotplug event before clear CPU irq */
- I915_WRITE(SDEIIR, pch_iir);
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0034-drm-i915-rip-out-the-PM_IIR-WARN.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0034-drm-i915-rip-out-the-PM_IIR-WARN.patch
deleted file mode 100644
index bd34e07..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0034-drm-i915-rip-out-the-PM_IIR-WARN.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From a01c3081fec2775e6ed17963f2f70ea67d5e6401 Mon Sep 17 00:00:00 2001
-From: Daniel Vetter <daniel.vetter at ffwll.ch>
-Date: Thu, 21 Jun 2012 14:55:22 +0200
-Subject: [PATCH 34/46] drm/i915: rip out the PM_IIR WARN
-
-commit 58bf8062d0b293b8e1028e5b0342082002886bd4 upstream.
-
-After banging my head against this for the past few months, I still
-don't see how this could possible race under the premise that once an
-irq bit is masked in PM_IMR and reset in PM_IIR it won't show up again
-until we unmask it in PM_IMR.
-
-Still, we have reports of this being seen in the wild. Now Bspec has
-this little bit of lovely language in the PMIIR register:
-
-Public SNB Docs, Vol3Part2, 2.5.14 "PMIIR":
-
-"For each bit, the IIR can store a second pending interrupt if two or
-more of the same interrupt conditions occur before the first condition
-is cleared. Upon clearing the interrupt, the IIR bit will momentarily
-go low, then return high to indicate there is another interrupt
-pending."
-
-Now if we presume that PMIMR only prevent new interrupts from being
-queued, we could easily end up masking an interrupt and clearing it,
-but the 2nd pending interrupt setting the bit in PMIIR right away
-again. Which leads, the next time the irq handler runs, to hitting the
-WARN.
-
-Also, no bad side effects of this have ever been reported. And we've
-tracked down our issues with the gpu turbo getting stuck to bogus
-interrupt generation limits in th RPLIMIT register.
-
-So let's just rip out this WARN as bogus and call it a day. The only
-shallow thing here is that this 2-deep irq queue in the hw makes you
-wonder how racy the windows irq handler is ...
-
-Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=42907
-Acked-by: Chris Wilson <chris at chris-wilson.co.uk>
-Signed-Off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpu/drm/i915/i915_irq.c | 1 -
- 1 file changed, 1 deletion(-)
-
-diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
-index 17c335e..578ddfc 100644
---- a/drivers/gpu/drm/i915/i915_irq.c
-+++ b/drivers/gpu/drm/i915/i915_irq.c
-@@ -440,7 +440,6 @@ static void gen6_queue_rps_work(struct drm_i915_private *dev_priv,
- */
-
- spin_lock_irqsave(&dev_priv->rps_lock, flags);
-- WARN(dev_priv->pm_iir & pm_iir, "Missed a PM interrupt\n");
- dev_priv->pm_iir |= pm_iir;
- I915_WRITE(GEN6_PMIMR, dev_priv->pm_iir);
- POSTING_READ(GEN6_PMIMR);
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0035-drm-i915-Fix-eDP-blank-screen-after-S3-resume-on-HP-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0035-drm-i915-Fix-eDP-blank-screen-after-S3-resume-on-HP-.patch
deleted file mode 100644
index 7f6394c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0035-drm-i915-Fix-eDP-blank-screen-after-S3-resume-on-HP-.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From e083a17405e8771aaa8853534c66721aa5aa36ea Mon Sep 17 00:00:00 2001
-From: Takashi Iwai <tiwai at suse.de>
-Date: Thu, 21 Jun 2012 15:30:41 +0200
-Subject: [PATCH 35/46] drm/i915: Fix eDP blank screen after S3 resume on HP
- desktops
-
-commit 6db65cbb941f9d433659bdad02b307f6d94465df upstream.
-
-This patch fixes the problem on some HP desktop machines with eDP
-which give blank screens after S3 resume.
-
-It turned out that BLC_PWM_CPU_CTL must be written after
-BLC_PWM_CPU_CTL2. Otherwise it doesn't take effect on these
-SNB machines.
-
-Tested with 3.5-rc3 kernel.
-
-Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=49233
-
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Signed-off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpu/drm/i915/i915_suspend.c | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/gpu/drm/i915/i915_suspend.c b/drivers/gpu/drm/i915/i915_suspend.c
-index a1eb83d..f38d196 100644
---- a/drivers/gpu/drm/i915/i915_suspend.c
-+++ b/drivers/gpu/drm/i915/i915_suspend.c
-@@ -739,8 +739,11 @@ static void i915_restore_display(struct drm_device *dev)
- if (HAS_PCH_SPLIT(dev)) {
- I915_WRITE(BLC_PWM_PCH_CTL1, dev_priv->saveBLC_PWM_CTL);
- I915_WRITE(BLC_PWM_PCH_CTL2, dev_priv->saveBLC_PWM_CTL2);
-- I915_WRITE(BLC_PWM_CPU_CTL, dev_priv->saveBLC_CPU_PWM_CTL);
-+ /* NOTE: BLC_PWM_CPU_CTL must be written after BLC_PWM_CPU_CTL2;
-+ * otherwise we get blank eDP screen after S3 on some machines
-+ */
- I915_WRITE(BLC_PWM_CPU_CTL2, dev_priv->saveBLC_CPU_PWM_CTL2);
-+ I915_WRITE(BLC_PWM_CPU_CTL, dev_priv->saveBLC_CPU_PWM_CTL);
- I915_WRITE(PCH_PP_ON_DELAYS, dev_priv->savePP_ON_DELAYS);
- I915_WRITE(PCH_PP_OFF_DELAYS, dev_priv->savePP_OFF_DELAYS);
- I915_WRITE(PCH_PP_DIVISOR, dev_priv->savePP_DIVISOR);
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0036-PM-Sleep-Prevent-waiting-forever-on-asynchronous-sus.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0036-PM-Sleep-Prevent-waiting-forever-on-asynchronous-sus.patch
deleted file mode 100644
index 0426542..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0036-PM-Sleep-Prevent-waiting-forever-on-asynchronous-sus.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From 148576d5144418385e4a0d59c5c9547d662ae0f2 Mon Sep 17 00:00:00 2001
-From: Mandeep Singh Baines <msb at chromium.org>
-Date: Sun, 24 Jun 2012 23:31:09 +0200
-Subject: [PATCH 36/46] PM / Sleep: Prevent waiting forever on asynchronous
- suspend after abort
-
-commit 1f758b23177d588a71b96ad02990e715949bb82f upstream.
-
-__device_suspend() must always send a completion. Otherwise, parent
-devices will wait forever.
-
-Commit 1e2ef05b, "PM: Limit race conditions between runtime PM and
-system sleep (v2)", introduced a regression by short-circuiting the
-complete_all() for certain error cases.
-
-This patch fixes the bug by always signalling a completion.
-
-Addresses http://crosbug.com/31972
-
-Tested by injecting an abort.
-
-Signed-off-by: Mandeep Singh Baines <msb at chromium.org>
-Signed-off-by: Rafael J. Wysocki <rjw at sisk.pl>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/base/power/main.c | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/base/power/main.c b/drivers/base/power/main.c
-index c3d2dfc..b96544a 100644
---- a/drivers/base/power/main.c
-+++ b/drivers/base/power/main.c
-@@ -869,7 +869,7 @@ static int __device_suspend(struct device *dev, pm_message_t state, bool async)
- dpm_wait_for_children(dev, async);
-
- if (async_error)
-- return 0;
-+ goto Complete;
-
- pm_runtime_get_noresume(dev);
- if (pm_runtime_barrier(dev) && device_may_wakeup(dev))
-@@ -878,7 +878,7 @@ static int __device_suspend(struct device *dev, pm_message_t state, bool async)
- if (pm_wakeup_pending()) {
- pm_runtime_put_sync(dev);
- async_error = -EBUSY;
-- return 0;
-+ goto Complete;
- }
-
- device_lock(dev);
-@@ -926,6 +926,8 @@ static int __device_suspend(struct device *dev, pm_message_t state, bool async)
- }
-
- device_unlock(dev);
-+
-+ Complete:
- complete_all(&dev->power.completion);
-
- if (error) {
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0037-x86-cpufeature-Rename-X86_FEATURE_DTS-to-X86_FEATURE.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0037-x86-cpufeature-Rename-X86_FEATURE_DTS-to-X86_FEATURE.patch
deleted file mode 100644
index c536a73..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0037-x86-cpufeature-Rename-X86_FEATURE_DTS-to-X86_FEATURE.patch
+++ /dev/null
@@ -1,73 +0,0 @@
-From edb1135bf688ed567d95e964af22488274890640 Mon Sep 17 00:00:00 2001
-From: "H. Peter Anvin" <hpa at linux.intel.com>
-Date: Fri, 22 Jun 2012 10:58:06 -0700
-Subject: [PATCH 37/46] x86, cpufeature: Rename X86_FEATURE_DTS to
- X86_FEATURE_DTHERM
-
-commit 4ad33411308596f2f918603509729922a1ec4411 upstream.
-
-It makes sense to label "Digital Thermal Sensor" as "DTS", but
-unfortunately the string "dts" was already used for "Debug Store", and
-/proc/cpuinfo is a user space ABI.
-
-Therefore, rename this to "dtherm".
-
-This conflict went into mainline via the hwmon tree without any x86
-maintainer ack, and without any kind of hint in the subject.
-
- a4659053 x86/hwmon: fix initialization of coretemp
-
-Reported-by: Jean Delvare <khali at linux-fr.org>
-Link: http://lkml.kernel.org/r/4FE34BCB.5050305@linux.intel.com
-Cc: Jan Beulich <JBeulich at suse.com>
-Signed-off-by: H. Peter Anvin <hpa at linux.intel.com>
-[bwh: Backported to 3.2: drop the coretemp device table change]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/x86/include/asm/cpufeature.h | 2 +-
- arch/x86/kernel/cpu/scattered.c | 2 +-
- drivers/hwmon/coretemp.c | 2 +-
- 3 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/arch/x86/include/asm/cpufeature.h b/arch/x86/include/asm/cpufeature.h
-index f3444f7..0c3b775 100644
---- a/arch/x86/include/asm/cpufeature.h
-+++ b/arch/x86/include/asm/cpufeature.h
-@@ -175,7 +175,7 @@
- #define X86_FEATURE_XSAVEOPT (7*32+ 4) /* Optimized Xsave */
- #define X86_FEATURE_PLN (7*32+ 5) /* Intel Power Limit Notification */
- #define X86_FEATURE_PTS (7*32+ 6) /* Intel Package Thermal Status */
--#define X86_FEATURE_DTS (7*32+ 7) /* Digital Thermal Sensor */
-+#define X86_FEATURE_DTHERM (7*32+ 7) /* Digital Thermal Sensor */
-
- /* Virtualization flags: Linux defined, word 8 */
- #define X86_FEATURE_TPR_SHADOW (8*32+ 0) /* Intel TPR Shadow */
-diff --git a/arch/x86/kernel/cpu/scattered.c b/arch/x86/kernel/cpu/scattered.c
-index c7f64e6..ea6106c 100644
---- a/arch/x86/kernel/cpu/scattered.c
-+++ b/arch/x86/kernel/cpu/scattered.c
-@@ -31,7 +31,7 @@ void __cpuinit init_scattered_cpuid_features(struct cpuinfo_x86 *c)
- const struct cpuid_bit *cb;
-
- static const struct cpuid_bit __cpuinitconst cpuid_bits[] = {
-- { X86_FEATURE_DTS, CR_EAX, 0, 0x00000006, 0 },
-+ { X86_FEATURE_DTHERM, CR_EAX, 0, 0x00000006, 0 },
- { X86_FEATURE_IDA, CR_EAX, 1, 0x00000006, 0 },
- { X86_FEATURE_ARAT, CR_EAX, 2, 0x00000006, 0 },
- { X86_FEATURE_PLN, CR_EAX, 4, 0x00000006, 0 },
-diff --git a/drivers/hwmon/coretemp.c b/drivers/hwmon/coretemp.c
-index 427468f..0790c98 100644
---- a/drivers/hwmon/coretemp.c
-+++ b/drivers/hwmon/coretemp.c
-@@ -660,7 +660,7 @@ static void __cpuinit get_core_online(unsigned int cpu)
- * sensors. We check this bit only, all the early CPUs
- * without thermal sensors will be filtered out.
- */
-- if (!cpu_has(c, X86_FEATURE_DTS))
-+ if (!cpu_has(c, X86_FEATURE_DTHERM))
- return;
-
- if (!pdev) {
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0038-stable-Allow-merging-of-backports-for-serious-user-v.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0038-stable-Allow-merging-of-backports-for-serious-user-v.patch
deleted file mode 100644
index 37925c6..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0038-stable-Allow-merging-of-backports-for-serious-user-v.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From 2bbcf955f97142e2b38c1da222da381d3729beb9 Mon Sep 17 00:00:00 2001
-From: Mel Gorman <mgorman at suse.de>
-Date: Thu, 21 Jun 2012 11:36:50 +0100
-Subject: [PATCH 38/46] stable: Allow merging of backports for serious
- user-visible performance issues
-
-commit eb3979f64d25120d60b9e761a4c58f70b1a02f86 upstream.
-
-Distribution kernel maintainers routinely backport fixes for users that
-were deemed important but not "something critical" as defined by the
-rules. To users of these kernels they are very serious and failing to fix
-them reduces the value of -stable.
-
-The problem is that the patches fixing these issues are often subtle and
-prone to regressions in other ways and need greater care and attention.
-To combat this, these "serious" backports should have a higher barrier
-to entry.
-
-This patch relaxes the rules to allow a distribution maintainer to merge
-to -stable a backported patch or small series that fixes a "serious"
-user-visible performance issue. They should include additional information on
-the user-visible bug affected and a link to the bugzilla entry if available.
-The same rules about the patch being already in mainline still apply.
-
-Signed-off-by: Mel Gorman <mgorman at suse.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- Documentation/stable_kernel_rules.txt | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-diff --git a/Documentation/stable_kernel_rules.txt b/Documentation/stable_kernel_rules.txt
-index 21fd05c..e1f856b 100644
---- a/Documentation/stable_kernel_rules.txt
-+++ b/Documentation/stable_kernel_rules.txt
-@@ -12,6 +12,12 @@ Rules on what kind of patches are accepted, and which ones are not, into the
- marked CONFIG_BROKEN), an oops, a hang, data corruption, a real
- security issue, or some "oh, that's not good" issue. In short, something
- critical.
-+ - Serious issues as reported by a user of a distribution kernel may also
-+ be considered if they fix a notable performance or interactivity issue.
-+ As these fixes are not as obvious and have a higher risk of a subtle
-+ regression they should only be submitted by a distribution kernel
-+ maintainer and include an addendum linking to a bugzilla entry if it
-+ exists and additional information on the user-visible impact.
- - New device IDs and quirks are also accepted.
- - No "theoretical race condition" issues, unless an explanation of how the
- race can be exploited is also provided.
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0039-ALSA-hda-Add-Realtek-ALC280-codec-support.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0039-ALSA-hda-Add-Realtek-ALC280-codec-support.patch
deleted file mode 100644
index a784376..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0039-ALSA-hda-Add-Realtek-ALC280-codec-support.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 0aab048a80bd01c77244fa5d7e714a1174401ab1 Mon Sep 17 00:00:00 2001
-From: David Henningsson <david.henningsson at canonical.com>
-Date: Mon, 25 Jun 2012 19:49:28 +0200
-Subject: [PATCH 39/46] ALSA: hda - Add Realtek ALC280 codec support
-
-commit befae82e2906cb7155020876a531b0b8c6c8d8c8 upstream.
-
-This chip looks very similar to ALC269 and ALC27* variants. The bug reporter
-has verified that sound was working after this patch had been applied.
-
-BugLink: https://bugs.launchpad.net/bugs/1017017
-Tested-by: Richard Crossley <richardcrossley at o2.co.uk>
-Signed-off-by: David Henningsson <david.henningsson at canonical.com>
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- sound/pci/hda/patch_realtek.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
-index 0005bde..5f096a5 100644
---- a/sound/pci/hda/patch_realtek.c
-+++ b/sound/pci/hda/patch_realtek.c
-@@ -5988,6 +5988,7 @@ static const struct hda_codec_preset snd_hda_preset_realtek[] = {
- { .id = 0x10ec0272, .name = "ALC272", .patch = patch_alc662 },
- { .id = 0x10ec0275, .name = "ALC275", .patch = patch_alc269 },
- { .id = 0x10ec0276, .name = "ALC276", .patch = patch_alc269 },
-+ { .id = 0x10ec0280, .name = "ALC280", .patch = patch_alc269 },
- { .id = 0x10ec0861, .rev = 0x100340, .name = "ALC660",
- .patch = patch_alc861 },
- { .id = 0x10ec0660, .name = "ALC660-VD", .patch = patch_alc861vd },
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0040-USB-option-Add-USB-ID-for-Novatel-Ovation-MC551.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0040-USB-option-Add-USB-ID-for-Novatel-Ovation-MC551.patch
deleted file mode 100644
index 4e011cd..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0040-USB-option-Add-USB-ID-for-Novatel-Ovation-MC551.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 2e5d03393a6928616737edfb24457da88d21102b Mon Sep 17 00:00:00 2001
-From: Forest Bond <forest.bond at rapidrollout.com>
-Date: Fri, 22 Jun 2012 10:30:38 -0400
-Subject: [PATCH 40/46] USB: option: Add USB ID for Novatel Ovation MC551
-
-commit 065b07e7a14676f4138ce4619d229c0be5a74230 upstream.
-
-This device is also known as the Verizon USB551L.
-
-Signed-off-by: Forest Bond <forest.bond at rapidrollout.com>
-Acked-by: Dan Williams <dcbw at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/serial/option.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
-index e311711c..21a4734 100644
---- a/drivers/usb/serial/option.c
-+++ b/drivers/usb/serial/option.c
-@@ -235,6 +235,7 @@ static void option_instat_callback(struct urb *urb);
- #define NOVATELWIRELESS_PRODUCT_G1 0xA001
- #define NOVATELWIRELESS_PRODUCT_G1_M 0xA002
- #define NOVATELWIRELESS_PRODUCT_G2 0xA010
-+#define NOVATELWIRELESS_PRODUCT_MC551 0xB001
-
- /* AMOI PRODUCTS */
- #define AMOI_VENDOR_ID 0x1614
-@@ -734,6 +735,8 @@ static const struct usb_device_id option_ids[] = {
- { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_G1) },
- { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_G1_M) },
- { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_G2) },
-+ /* Novatel Ovation MC551 a.k.a. Verizon USB551L */
-+ { USB_DEVICE_AND_INTERFACE_INFO(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_MC551, 0xff, 0xff, 0xff) },
-
- { USB_DEVICE(AMOI_VENDOR_ID, AMOI_PRODUCT_H01) },
- { USB_DEVICE(AMOI_VENDOR_ID, AMOI_PRODUCT_H01A) },
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0041-USB-CP210x-Add-10-Device-IDs.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0041-USB-CP210x-Add-10-Device-IDs.patch
deleted file mode 100644
index f6509bf..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0041-USB-CP210x-Add-10-Device-IDs.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From 88093f6173b2c203d31bf67ed055419f5ec21953 Mon Sep 17 00:00:00 2001
-From: Craig Shelley <craig at microtron.org.uk>
-Date: Tue, 26 Jun 2012 23:20:04 +0100
-Subject: [PATCH 41/46] USB: CP210x Add 10 Device IDs
-
-commit 3fcc8f96829776cf181918461923d1e3bbb831a2 upstream.
-
-This patch adds 10 device IDs for CP210x based devices from the following manufacturers:
-Timewave
-Clipsal
-Festo
-Link Instruments
-
-Signed-off-by: Craig Shelley <craig at microtron.org.uk>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/serial/cp210x.c | 11 +++++++++++
- 1 file changed, 11 insertions(+)
-
-diff --git a/drivers/usb/serial/cp210x.c b/drivers/usb/serial/cp210x.c
-index aa0c43f..35e6b5f 100644
---- a/drivers/usb/serial/cp210x.c
-+++ b/drivers/usb/serial/cp210x.c
-@@ -93,6 +93,7 @@ static const struct usb_device_id id_table[] = {
- { USB_DEVICE(0x10C4, 0x814B) }, /* West Mountain Radio RIGtalk */
- { USB_DEVICE(0x10C4, 0x8156) }, /* B&G H3000 link cable */
- { USB_DEVICE(0x10C4, 0x815E) }, /* Helicomm IP-Link 1220-DVM */
-+ { USB_DEVICE(0x10C4, 0x815F) }, /* Timewave HamLinkUSB */
- { USB_DEVICE(0x10C4, 0x818B) }, /* AVIT Research USB to TTL */
- { USB_DEVICE(0x10C4, 0x819F) }, /* MJS USB Toslink Switcher */
- { USB_DEVICE(0x10C4, 0x81A6) }, /* ThinkOptics WavIt */
-@@ -134,7 +135,13 @@ static const struct usb_device_id id_table[] = {
- { USB_DEVICE(0x10CE, 0xEA6A) }, /* Silicon Labs MobiData GPRS USB Modem 100EU */
- { USB_DEVICE(0x13AD, 0x9999) }, /* Baltech card reader */
- { USB_DEVICE(0x1555, 0x0004) }, /* Owen AC4 USB-RS485 Converter */
-+ { USB_DEVICE(0x166A, 0x0201) }, /* Clipsal 5500PACA C-Bus Pascal Automation Controller */
-+ { USB_DEVICE(0x166A, 0x0301) }, /* Clipsal 5800PC C-Bus Wireless PC Interface */
- { USB_DEVICE(0x166A, 0x0303) }, /* Clipsal 5500PCU C-Bus USB interface */
-+ { USB_DEVICE(0x166A, 0x0304) }, /* Clipsal 5000CT2 C-Bus Black and White Touchscreen */
-+ { USB_DEVICE(0x166A, 0x0305) }, /* Clipsal C-5000CT2 C-Bus Spectrum Colour Touchscreen */
-+ { USB_DEVICE(0x166A, 0x0401) }, /* Clipsal L51xx C-Bus Architectural Dimmer */
-+ { USB_DEVICE(0x166A, 0x0101) }, /* Clipsal 5560884 C-Bus Multi-room Audio Matrix Switcher */
- { USB_DEVICE(0x16D6, 0x0001) }, /* Jablotron serial interface */
- { USB_DEVICE(0x16DC, 0x0010) }, /* W-IE-NE-R Plein & Baus GmbH PL512 Power Supply */
- { USB_DEVICE(0x16DC, 0x0011) }, /* W-IE-NE-R Plein & Baus GmbH RCM Remote Control for MARATON Power Supply */
-@@ -146,7 +153,11 @@ static const struct usb_device_id id_table[] = {
- { USB_DEVICE(0x1843, 0x0200) }, /* Vaisala USB Instrument Cable */
- { USB_DEVICE(0x18EF, 0xE00F) }, /* ELV USB-I2C-Interface */
- { USB_DEVICE(0x1BE3, 0x07A6) }, /* WAGO 750-923 USB Service Cable */
-+ { USB_DEVICE(0x1E29, 0x0102) }, /* Festo CPX-USB */
-+ { USB_DEVICE(0x1E29, 0x0501) }, /* Festo CMSP */
- { USB_DEVICE(0x3195, 0xF190) }, /* Link Instruments MSO-19 */
-+ { USB_DEVICE(0x3195, 0xF280) }, /* Link Instruments MSO-28 */
-+ { USB_DEVICE(0x3195, 0xF281) }, /* Link Instruments MSO-28 */
- { USB_DEVICE(0x413C, 0x9500) }, /* DW700 GPS USB interface */
- { } /* Terminating Entry */
- };
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0042-xen-netfront-teardown-the-device-before-unregisterin.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0042-xen-netfront-teardown-the-device-before-unregisterin.patch
deleted file mode 100644
index 5847cb6..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0042-xen-netfront-teardown-the-device-before-unregisterin.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From 55cebafff1e8327fe9dfa3b66d6f70bf88138902 Mon Sep 17 00:00:00 2001
-From: Ian Campbell <Ian.Campbell at citrix.com>
-Date: Mon, 25 Jun 2012 22:48:41 +0000
-Subject: [PATCH 42/46] xen/netfront: teardown the device before unregistering
- it.
-
-commit 6bc96d047fe32d76ef79f3195c52a542edf7c705 upstream.
-
-Fixes:
-[ 15.470311] WARNING: at /local/scratch/ianc/devel/kernels/linux/fs/sysfs/file.c:498 sysfs_attr_ns+0x95/0xa0()
-[ 15.470326] sysfs: kobject eth0 without dirent
-[ 15.470333] Modules linked in:
-[ 15.470342] Pid: 12, comm: xenwatch Not tainted 3.4.0-x86_32p-xenU #93
-and
-[ 9.150554] BUG: unable to handle kernel paging request at 2b359000
-[ 9.150577] IP: [<c1279561>] linkwatch_do_dev+0x81/0xc0
-[ 9.150592] *pdpt = 000000002c3c9027 *pde = 0000000000000000
-[ 9.150604] Oops: 0002 [#1] SMP
-[ 9.150613] Modules linked in:
-
-This is http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=675190
-
-Reported-by: George Shuklin <george.shuklin at gmail.com>
-Signed-off-by: Ian Campbell <ian.campbell at citrix.com>
-Tested-by: William Dauchy <wdauchy at gmail.com>
-Cc: 675190 at bugs.debian.org
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/xen-netfront.c | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/net/xen-netfront.c b/drivers/net/xen-netfront.c
-index 226faab..fc35308 100644
---- a/drivers/net/xen-netfront.c
-+++ b/drivers/net/xen-netfront.c
-@@ -1922,14 +1922,14 @@ static int __devexit xennet_remove(struct xenbus_device *dev)
-
- dev_dbg(&dev->dev, "%s\n", dev->nodename);
-
-- unregister_netdev(info->netdev);
--
- xennet_disconnect_backend(info);
-
-- del_timer_sync(&info->rx_refill_timer);
--
- xennet_sysfs_delif(info->netdev);
-
-+ unregister_netdev(info->netdev);
-+
-+ del_timer_sync(&info->rx_refill_timer);
-+
- free_percpu(info->stats);
-
- free_netdev(info->netdev);
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0043-can-flexcan-use-be32_to_cpup-to-handle-the-value-of-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0043-can-flexcan-use-be32_to_cpup-to-handle-the-value-of-.patch
deleted file mode 100644
index fa007b3..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0043-can-flexcan-use-be32_to_cpup-to-handle-the-value-of-.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From 06f8253f22e3ba961cc490243917206e2a8a8502 Mon Sep 17 00:00:00 2001
-From: Hui Wang <jason77.wang at gmail.com>
-Date: Wed, 27 Jun 2012 16:19:18 +0800
-Subject: [PATCH 43/46] can: flexcan: use be32_to_cpup to handle the value of
- dt entry
-
-commit 85f2f834e85517307f13e30e630a5fc86f757cb5 upstream.
-
-The freescale arm i.MX series platform can support this driver, and
-usually the arm cpu works in the little endian mode by default, while
-device tree entry value is stored in big endian format, we should use
-be32_to_cpup() to handle them, after modification, it can work well
-both on the le cpu and be cpu.
-
-Cc: Shawn Guo <shawn.guo at linaro.org>
-Signed-off-by: Hui Wang <jason77.wang at gmail.com>
-Signed-off-by: Marc Kleine-Budde <mkl at pengutronix.de>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/can/flexcan.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/net/can/flexcan.c b/drivers/net/can/flexcan.c
-index e023379..e59d006 100644
---- a/drivers/net/can/flexcan.c
-+++ b/drivers/net/can/flexcan.c
-@@ -933,12 +933,12 @@ static int __devinit flexcan_probe(struct platform_device *pdev)
- u32 clock_freq = 0;
-
- if (pdev->dev.of_node) {
-- const u32 *clock_freq_p;
-+ const __be32 *clock_freq_p;
-
- clock_freq_p = of_get_property(pdev->dev.of_node,
- "clock-frequency", NULL);
- if (clock_freq_p)
-- clock_freq = *clock_freq_p;
-+ clock_freq = be32_to_cpup(clock_freq_p);
- }
-
- if (!clock_freq) {
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0044-acpi_pad-fix-power_saving-thread-deadlock.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0044-acpi_pad-fix-power_saving-thread-deadlock.patch
deleted file mode 100644
index fd063f1..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0044-acpi_pad-fix-power_saving-thread-deadlock.patch
+++ /dev/null
@@ -1,66 +0,0 @@
-From 64a1cb8318eb947d5217e72c7b295a1bda892ecd Mon Sep 17 00:00:00 2001
-From: Stuart Hayes <Stuart_Hayes at Dell.com>
-Date: Wed, 13 Jun 2012 16:10:45 -0500
-Subject: [PATCH 44/46] acpi_pad: fix power_saving thread deadlock
-
-commit 5f1601261050251a5ca293378b492a69d590dacb upstream.
-
-The acpi_pad driver can get stuck in destroy_power_saving_task()
-waiting for kthread_stop() to stop a power_saving thread. The problem
-is that the isolated_cpus_lock mutex is owned when
-destroy_power_saving_task() calls kthread_stop(), which waits for a
-power_saving thread to end, and the power_saving thread tries to
-acquire the isolated_cpus_lock when it calls round_robin_cpu(). This
-patch fixes the issue by making round_robin_cpu() use its own mutex.
-
-https://bugzilla.kernel.org/show_bug.cgi?id=42981
-
-Signed-off-by: Stuart Hayes <Stuart_Hayes at Dell.com>
-Signed-off-by: Len Brown <len.brown at intel.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/acpi/acpi_pad.c | 7 ++++---
- 1 file changed, 4 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/acpi/acpi_pad.c b/drivers/acpi/acpi_pad.c
-index a43fa1a..1502c502 100644
---- a/drivers/acpi/acpi_pad.c
-+++ b/drivers/acpi/acpi_pad.c
-@@ -36,6 +36,7 @@
- #define ACPI_PROCESSOR_AGGREGATOR_DEVICE_NAME "Processor Aggregator"
- #define ACPI_PROCESSOR_AGGREGATOR_NOTIFY 0x80
- static DEFINE_MUTEX(isolated_cpus_lock);
-+static DEFINE_MUTEX(round_robin_lock);
-
- static unsigned long power_saving_mwait_eax;
-
-@@ -107,7 +108,7 @@ static void round_robin_cpu(unsigned int tsk_index)
- if (!alloc_cpumask_var(&tmp, GFP_KERNEL))
- return;
-
-- mutex_lock(&isolated_cpus_lock);
-+ mutex_lock(&round_robin_lock);
- cpumask_clear(tmp);
- for_each_cpu(cpu, pad_busy_cpus)
- cpumask_or(tmp, tmp, topology_thread_cpumask(cpu));
-@@ -116,7 +117,7 @@ static void round_robin_cpu(unsigned int tsk_index)
- if (cpumask_empty(tmp))
- cpumask_andnot(tmp, cpu_online_mask, pad_busy_cpus);
- if (cpumask_empty(tmp)) {
-- mutex_unlock(&isolated_cpus_lock);
-+ mutex_unlock(&round_robin_lock);
- return;
- }
- for_each_cpu(cpu, tmp) {
-@@ -131,7 +132,7 @@ static void round_robin_cpu(unsigned int tsk_index)
- tsk_in_cpu[tsk_index] = preferred_cpu;
- cpumask_set_cpu(preferred_cpu, pad_busy_cpus);
- cpu_weight[preferred_cpu]++;
-- mutex_unlock(&isolated_cpus_lock);
-+ mutex_unlock(&round_robin_lock);
-
- set_cpus_allowed_ptr(current, cpumask_of(preferred_cpu));
- }
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0045-batman-adv-only-drop-packets-of-known-wifi-clients.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0045-batman-adv-only-drop-packets-of-known-wifi-clients.patch
deleted file mode 100644
index ce2107d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0045-batman-adv-only-drop-packets-of-known-wifi-clients.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From b3f045e43695ea8ac7c43715d0c98d58d488683d Mon Sep 17 00:00:00 2001
-From: Marek Lindner <lindner_marek at yahoo.de>
-Date: Wed, 20 Jun 2012 17:16:05 +0200
-Subject: [PATCH 45/46] batman-adv: only drop packets of known wifi clients
-
-commit 5870adc68fc39d81089f1e80efdf64b97e5c37a1 upstream.
-
-bug introduced with 59b699cdee039d75915c354da06937102d1f9a84
-
-If the source or destination mac address of an ethernet packet
-could not be found in the translation table the packet was
-dropped if AP isolation was turned on. This behavior would
-make it impossible to send broadcast packets over the mesh as
-the broadcast address will never enter the translation table.
-
-Signed-off-by: Marek Lindner <lindner_marek at yahoo.de>
-Acked-by: Antonio Quartulli <ordex at autistici.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/batman-adv/translation-table.c | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/net/batman-adv/translation-table.c b/net/batman-adv/translation-table.c
-index 5f09a57..088af45 100644
---- a/net/batman-adv/translation-table.c
-+++ b/net/batman-adv/translation-table.c
-@@ -1816,10 +1816,10 @@ bool is_ap_isolated(struct bat_priv *bat_priv, uint8_t *src, uint8_t *dst)
- {
- struct tt_local_entry *tt_local_entry = NULL;
- struct tt_global_entry *tt_global_entry = NULL;
-- bool ret = true;
-+ bool ret = false;
-
- if (!atomic_read(&bat_priv->ap_isolation))
-- return false;
-+ goto out;
-
- tt_local_entry = tt_local_hash_find(bat_priv, dst);
- if (!tt_local_entry)
-@@ -1829,10 +1829,10 @@ bool is_ap_isolated(struct bat_priv *bat_priv, uint8_t *src, uint8_t *dst)
- if (!tt_global_entry)
- goto out;
-
-- if (_is_ap_isolated(tt_local_entry, tt_global_entry))
-+ if (!_is_ap_isolated(tt_local_entry, tt_global_entry))
- goto out;
-
-- ret = false;
-+ ret = true;
-
- out:
- if (tt_global_entry)
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0046-Linux-3.2.22.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0046-Linux-3.2.22.patch
deleted file mode 100644
index f96d4a6..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.22/0046-Linux-3.2.22.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 453efabb6ea10cbe4a726e9637b76991f39d3655 Mon Sep 17 00:00:00 2001
-From: Ben Hutchings <ben at decadent.org.uk>
-Date: Wed, 4 Jul 2012 05:44:35 +0100
-Subject: [PATCH 46/46] Linux 3.2.22
-
----
- Makefile | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Makefile b/Makefile
-index 7eb465e..9a7d921 100644
---- a/Makefile
-+++ b/Makefile
-@@ -1,6 +1,6 @@
- VERSION = 3
- PATCHLEVEL = 2
--SUBLEVEL = 21
-+SUBLEVEL = 22
- EXTRAVERSION =
- NAME = Saber-toothed Squirrel
-
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0001-splice-fix-racy-pipe-buffers-uses.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0001-splice-fix-racy-pipe-buffers-uses.patch
deleted file mode 100644
index 6441cc2..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0001-splice-fix-racy-pipe-buffers-uses.patch
+++ /dev/null
@@ -1,298 +0,0 @@
-From e02d361ade75d22d28ce36460954b4bc6439fc74 Mon Sep 17 00:00:00 2001
-From: Eric Dumazet <edumazet at google.com>
-Date: Tue, 12 Jun 2012 15:24:40 +0200
-Subject: [PATCH 01/49] splice: fix racy pipe->buffers uses
-
-commit 047fe3605235888f3ebcda0c728cb31937eadfe6 upstream.
-
-Dave Jones reported a kernel BUG at mm/slub.c:3474! triggered
-by splice_shrink_spd() called from vmsplice_to_pipe()
-
-commit 35f3d14dbbc5 (pipe: add support for shrinking and growing pipes)
-added capability to adjust pipe->buffers.
-
-Problem is some paths don't hold pipe mutex and assume pipe->buffers
-doesn't change for their duration.
-
-Fix this by adding nr_pages_max field in struct splice_pipe_desc, and
-use it in place of pipe->buffers where appropriate.
-
-splice_shrink_spd() loses its struct pipe_inode_info argument.
-
-Reported-by: Dave Jones <davej at redhat.com>
-Signed-off-by: Eric Dumazet <edumazet at google.com>
-Cc: Jens Axboe <axboe at kernel.dk>
-Cc: Alexander Viro <viro at zeniv.linux.org.uk>
-Cc: Tom Herbert <therbert at google.com>
-Tested-by: Dave Jones <davej at redhat.com>
-Signed-off-by: Jens Axboe <axboe at kernel.dk>
-[bwh: Backported to 3.2:
- - Adjust context in vmsplice_to_pipe()
- - Update one more call to splice_shrink_spd(), from skb_splice_bits()]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/splice.c | 35 ++++++++++++++++++++---------------
- include/linux/splice.h | 8 ++++----
- kernel/relay.c | 5 +++--
- kernel/trace/trace.c | 6 ++++--
- mm/shmem.c | 3 ++-
- net/core/skbuff.c | 3 ++-
- 6 files changed, 35 insertions(+), 25 deletions(-)
-
-diff --git a/fs/splice.c b/fs/splice.c
-index 6d0dfb8..014fcb4 100644
---- a/fs/splice.c
-+++ b/fs/splice.c
-@@ -274,13 +274,16 @@ void spd_release_page(struct splice_pipe_desc *spd, unsigned int i)
- * Check if we need to grow the arrays holding pages and partial page
- * descriptions.
- */
--int splice_grow_spd(struct pipe_inode_info *pipe, struct splice_pipe_desc *spd)
-+int splice_grow_spd(const struct pipe_inode_info *pipe, struct splice_pipe_desc *spd)
- {
-- if (pipe->buffers <= PIPE_DEF_BUFFERS)
-+ unsigned int buffers = ACCESS_ONCE(pipe->buffers);
-+
-+ spd->nr_pages_max = buffers;
-+ if (buffers <= PIPE_DEF_BUFFERS)
- return 0;
-
-- spd->pages = kmalloc(pipe->buffers * sizeof(struct page *), GFP_KERNEL);
-- spd->partial = kmalloc(pipe->buffers * sizeof(struct partial_page), GFP_KERNEL);
-+ spd->pages = kmalloc(buffers * sizeof(struct page *), GFP_KERNEL);
-+ spd->partial = kmalloc(buffers * sizeof(struct partial_page), GFP_KERNEL);
-
- if (spd->pages && spd->partial)
- return 0;
-@@ -290,10 +293,9 @@ int splice_grow_spd(struct pipe_inode_info *pipe, struct splice_pipe_desc *spd)
- return -ENOMEM;
- }
-
--void splice_shrink_spd(struct pipe_inode_info *pipe,
-- struct splice_pipe_desc *spd)
-+void splice_shrink_spd(struct splice_pipe_desc *spd)
- {
-- if (pipe->buffers <= PIPE_DEF_BUFFERS)
-+ if (spd->nr_pages_max <= PIPE_DEF_BUFFERS)
- return;
-
- kfree(spd->pages);
-@@ -316,6 +318,7 @@ __generic_file_splice_read(struct file *in, loff_t *ppos,
- struct splice_pipe_desc spd = {
- .pages = pages,
- .partial = partial,
-+ .nr_pages_max = PIPE_DEF_BUFFERS,
- .flags = flags,
- .ops = &page_cache_pipe_buf_ops,
- .spd_release = spd_release_page,
-@@ -327,7 +330,7 @@ __generic_file_splice_read(struct file *in, loff_t *ppos,
- index = *ppos >> PAGE_CACHE_SHIFT;
- loff = *ppos & ~PAGE_CACHE_MASK;
- req_pages = (len + loff + PAGE_CACHE_SIZE - 1) >> PAGE_CACHE_SHIFT;
-- nr_pages = min(req_pages, pipe->buffers);
-+ nr_pages = min(req_pages, spd.nr_pages_max);
-
- /*
- * Lookup the (hopefully) full range of pages we need.
-@@ -498,7 +501,7 @@ fill_it:
- if (spd.nr_pages)
- error = splice_to_pipe(pipe, &spd);
-
-- splice_shrink_spd(pipe, &spd);
-+ splice_shrink_spd(&spd);
- return error;
- }
-
-@@ -599,6 +602,7 @@ ssize_t default_file_splice_read(struct file *in, loff_t *ppos,
- struct splice_pipe_desc spd = {
- .pages = pages,
- .partial = partial,
-+ .nr_pages_max = PIPE_DEF_BUFFERS,
- .flags = flags,
- .ops = &default_pipe_buf_ops,
- .spd_release = spd_release_page,
-@@ -609,8 +613,8 @@ ssize_t default_file_splice_read(struct file *in, loff_t *ppos,
-
- res = -ENOMEM;
- vec = __vec;
-- if (pipe->buffers > PIPE_DEF_BUFFERS) {
-- vec = kmalloc(pipe->buffers * sizeof(struct iovec), GFP_KERNEL);
-+ if (spd.nr_pages_max > PIPE_DEF_BUFFERS) {
-+ vec = kmalloc(spd.nr_pages_max * sizeof(struct iovec), GFP_KERNEL);
- if (!vec)
- goto shrink_ret;
- }
-@@ -618,7 +622,7 @@ ssize_t default_file_splice_read(struct file *in, loff_t *ppos,
- offset = *ppos & ~PAGE_CACHE_MASK;
- nr_pages = (len + offset + PAGE_CACHE_SIZE - 1) >> PAGE_CACHE_SHIFT;
-
-- for (i = 0; i < nr_pages && i < pipe->buffers && len; i++) {
-+ for (i = 0; i < nr_pages && i < spd.nr_pages_max && len; i++) {
- struct page *page;
-
- page = alloc_page(GFP_USER);
-@@ -666,7 +670,7 @@ ssize_t default_file_splice_read(struct file *in, loff_t *ppos,
- shrink_ret:
- if (vec != __vec)
- kfree(vec);
-- splice_shrink_spd(pipe, &spd);
-+ splice_shrink_spd(&spd);
- return res;
-
- err:
-@@ -1616,6 +1620,7 @@ static long vmsplice_to_pipe(struct file *file, const struct iovec __user *iov,
- struct splice_pipe_desc spd = {
- .pages = pages,
- .partial = partial,
-+ .nr_pages_max = PIPE_DEF_BUFFERS,
- .flags = flags,
- .ops = &user_page_pipe_buf_ops,
- .spd_release = spd_release_page,
-@@ -1631,13 +1636,13 @@ static long vmsplice_to_pipe(struct file *file, const struct iovec __user *iov,
-
- spd.nr_pages = get_iovec_page_array(iov, nr_segs, spd.pages,
- spd.partial, flags & SPLICE_F_GIFT,
-- pipe->buffers);
-+ spd.nr_pages_max);
- if (spd.nr_pages <= 0)
- ret = spd.nr_pages;
- else
- ret = splice_to_pipe(pipe, &spd);
-
-- splice_shrink_spd(pipe, &spd);
-+ splice_shrink_spd(&spd);
- return ret;
- }
-
-diff --git a/include/linux/splice.h b/include/linux/splice.h
-index 26e5b61..09a545a 100644
---- a/include/linux/splice.h
-+++ b/include/linux/splice.h
-@@ -51,7 +51,8 @@ struct partial_page {
- struct splice_pipe_desc {
- struct page **pages; /* page map */
- struct partial_page *partial; /* pages[] may not be contig */
-- int nr_pages; /* number of pages in map */
-+ int nr_pages; /* number of populated pages in map */
-+ unsigned int nr_pages_max; /* pages[] & partial[] arrays size */
- unsigned int flags; /* splice flags */
- const struct pipe_buf_operations *ops;/* ops associated with output pipe */
- void (*spd_release)(struct splice_pipe_desc *, unsigned int);
-@@ -85,9 +86,8 @@ extern ssize_t splice_direct_to_actor(struct file *, struct splice_desc *,
- /*
- * for dynamic pipe sizing
- */
--extern int splice_grow_spd(struct pipe_inode_info *, struct splice_pipe_desc *);
--extern void splice_shrink_spd(struct pipe_inode_info *,
-- struct splice_pipe_desc *);
-+extern int splice_grow_spd(const struct pipe_inode_info *, struct splice_pipe_desc *);
-+extern void splice_shrink_spd(struct splice_pipe_desc *);
- extern void spd_release_page(struct splice_pipe_desc *, unsigned int);
-
- extern const struct pipe_buf_operations page_cache_pipe_buf_ops;
-diff --git a/kernel/relay.c b/kernel/relay.c
-index b6f803a..a535fc9 100644
---- a/kernel/relay.c
-+++ b/kernel/relay.c
-@@ -1235,6 +1235,7 @@ static ssize_t subbuf_splice_actor(struct file *in,
- struct splice_pipe_desc spd = {
- .pages = pages,
- .nr_pages = 0,
-+ .nr_pages_max = PIPE_DEF_BUFFERS,
- .partial = partial,
- .flags = flags,
- .ops = &relay_pipe_buf_ops,
-@@ -1302,8 +1303,8 @@ static ssize_t subbuf_splice_actor(struct file *in,
- ret += padding;
-
- out:
-- splice_shrink_spd(pipe, &spd);
-- return ret;
-+ splice_shrink_spd(&spd);
-+ return ret;
- }
-
- static ssize_t relay_file_splice_read(struct file *in,
-diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
-index 697e49d..7e4edd3 100644
---- a/kernel/trace/trace.c
-+++ b/kernel/trace/trace.c
-@@ -3456,6 +3456,7 @@ static ssize_t tracing_splice_read_pipe(struct file *filp,
- .pages = pages_def,
- .partial = partial_def,
- .nr_pages = 0, /* This gets updated below. */
-+ .nr_pages_max = PIPE_DEF_BUFFERS,
- .flags = flags,
- .ops = &tracing_pipe_buf_ops,
- .spd_release = tracing_spd_release_pipe,
-@@ -3527,7 +3528,7 @@ static ssize_t tracing_splice_read_pipe(struct file *filp,
-
- ret = splice_to_pipe(pipe, &spd);
- out:
-- splice_shrink_spd(pipe, &spd);
-+ splice_shrink_spd(&spd);
- return ret;
-
- out_err:
-@@ -4017,6 +4018,7 @@ tracing_buffers_splice_read(struct file *file, loff_t *ppos,
- struct splice_pipe_desc spd = {
- .pages = pages_def,
- .partial = partial_def,
-+ .nr_pages_max = PIPE_DEF_BUFFERS,
- .flags = flags,
- .ops = &buffer_pipe_buf_ops,
- .spd_release = buffer_spd_release,
-@@ -4104,7 +4106,7 @@ tracing_buffers_splice_read(struct file *file, loff_t *ppos,
- }
-
- ret = splice_to_pipe(pipe, &spd);
-- splice_shrink_spd(pipe, &spd);
-+ splice_shrink_spd(&spd);
- out:
- return ret;
- }
-diff --git a/mm/shmem.c b/mm/shmem.c
-index 6c253f7..7a82174 100644
---- a/mm/shmem.c
-+++ b/mm/shmem.c
-@@ -1359,6 +1359,7 @@ static ssize_t shmem_file_splice_read(struct file *in, loff_t *ppos,
- struct splice_pipe_desc spd = {
- .pages = pages,
- .partial = partial,
-+ .nr_pages_max = PIPE_DEF_BUFFERS,
- .flags = flags,
- .ops = &page_cache_pipe_buf_ops,
- .spd_release = spd_release_page,
-@@ -1447,7 +1448,7 @@ static ssize_t shmem_file_splice_read(struct file *in, loff_t *ppos,
- if (spd.nr_pages)
- error = splice_to_pipe(pipe, &spd);
-
-- splice_shrink_spd(pipe, &spd);
-+ splice_shrink_spd(&spd);
-
- if (error > 0) {
- *ppos += error;
-diff --git a/net/core/skbuff.c b/net/core/skbuff.c
-index 2ec200de..af9c3c6 100644
---- a/net/core/skbuff.c
-+++ b/net/core/skbuff.c
-@@ -1663,6 +1663,7 @@ int skb_splice_bits(struct sk_buff *skb, unsigned int offset,
- struct splice_pipe_desc spd = {
- .pages = pages,
- .partial = partial,
-+ .nr_pages_max = MAX_SKB_FRAGS,
- .flags = flags,
- .ops = &sock_pipe_buf_ops,
- .spd_release = sock_spd_release,
-@@ -1709,7 +1710,7 @@ done:
- lock_sock(sk);
- }
-
-- splice_shrink_spd(pipe, &spd);
-+ splice_shrink_spd(&spd);
- return ret;
- }
-
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0002-umem-fix-up-unplugging.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0002-umem-fix-up-unplugging.patch
deleted file mode 100644
index 0b28837..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0002-umem-fix-up-unplugging.patch
+++ /dev/null
@@ -1,86 +0,0 @@
-From fd0fcfd8f28824587f180ccde95c03fca533ab05 Mon Sep 17 00:00:00 2001
-From: Tao Guo <glorioustao at gmail.com>
-Date: Wed, 13 Jun 2012 21:17:21 +0200
-Subject: [PATCH 02/49] umem: fix up unplugging
-
-commit 32587371ad3db2f9d335de10dbd8cffd4fff5669 upstream.
-
-Fix a regression introduced by 7eaceaccab5f40 ("block: remove per-queue
-plugging"). In that patch, Jens removed the whole mm_unplug_device()
-function, which used to be the trigger to make umem start to work.
-
-We need to implement unplugging to make umem start to work, or I/O will
-never be triggered.
-
-Signed-off-by: Tao Guo <Tao.Guo at emc.com>
-Cc: Neil Brown <neilb at suse.de>
-Cc: Jens Axboe <axboe at kernel.dk>
-Cc: Shaohua Li <shli at kernel.org>
-Acked-by: NeilBrown <neilb at suse.de>
-Signed-off-by: Jens Axboe <axboe at kernel.dk>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/block/umem.c | 40 ++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 40 insertions(+)
-
-diff --git a/drivers/block/umem.c b/drivers/block/umem.c
-index aa27120..9a72277 100644
---- a/drivers/block/umem.c
-+++ b/drivers/block/umem.c
-@@ -513,6 +513,44 @@ static void process_page(unsigned long data)
- }
- }
-
-+struct mm_plug_cb {
-+ struct blk_plug_cb cb;
-+ struct cardinfo *card;
-+};
-+
-+static void mm_unplug(struct blk_plug_cb *cb)
-+{
-+ struct mm_plug_cb *mmcb = container_of(cb, struct mm_plug_cb, cb);
-+
-+ spin_lock_irq(&mmcb->card->lock);
-+ activate(mmcb->card);
-+ spin_unlock_irq(&mmcb->card->lock);
-+ kfree(mmcb);
-+}
-+
-+static int mm_check_plugged(struct cardinfo *card)
-+{
-+ struct blk_plug *plug = current->plug;
-+ struct mm_plug_cb *mmcb;
-+
-+ if (!plug)
-+ return 0;
-+
-+ list_for_each_entry(mmcb, &plug->cb_list, cb.list) {
-+ if (mmcb->cb.callback == mm_unplug && mmcb->card == card)
-+ return 1;
-+ }
-+ /* Not currently on the callback list */
-+ mmcb = kmalloc(sizeof(*mmcb), GFP_ATOMIC);
-+ if (!mmcb)
-+ return 0;
-+
-+ mmcb->card = card;
-+ mmcb->cb.callback = mm_unplug;
-+ list_add(&mmcb->cb.list, &plug->cb_list);
-+ return 1;
-+}
-+
- static void mm_make_request(struct request_queue *q, struct bio *bio)
- {
- struct cardinfo *card = q->queuedata;
-@@ -523,6 +561,8 @@ static void mm_make_request(struct request_queue *q, struct bio *bio)
- *card->biotail = bio;
- bio->bi_next = NULL;
- card->biotail = &bio->bi_next;
-+ if (bio->bi_rw & REQ_SYNC || !mm_check_plugged(card))
-+ activate(card);
- spin_unlock_irq(&card->lock);
-
- return;
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0003-mwifiex-fix-11n-rx-packet-drop-issue.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0003-mwifiex-fix-11n-rx-packet-drop-issue.patch
deleted file mode 100644
index eef5de7..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0003-mwifiex-fix-11n-rx-packet-drop-issue.patch
+++ /dev/null
@@ -1,88 +0,0 @@
-From 8c92af27a522bcec5dc2ced7b49b8f3f57492b21 Mon Sep 17 00:00:00 2001
-From: Stone Piao <piaoyun at marvell.com>
-Date: Wed, 20 Jun 2012 20:21:10 -0700
-Subject: [PATCH 03/49] mwifiex: fix 11n rx packet drop issue
-
-commit 925839243dc9aa4ef25305f5afd10ed18258a4ac upstream.
-
-Currently we check the sequence number of last packet received
-against start_win. If a sequence hole is detected, start_win is
-updated to next sequence number.
-
-Since the rx sequence number is initialized to 0, a corner case
-exists when BA setup happens immediately after association. As
-0 is a valid sequence number, start_win gets increased to 1
-incorrectly. This causes the first packet with sequence number 0
-being dropped.
-
-Initialize rx sequence number as 0xffff and skip adjusting
-start_win if the sequence number remains 0xffff. The sequence
-number will be updated once the first packet is received.
-
-Signed-off-by: Stone Piao <piaoyun at marvell.com>
-Signed-off-by: Avinash Patil <patila at marvell.com>
-Signed-off-by: Kiran Divekar <dkiran at marvell.com>
-Signed-off-by: Bing Zhao <bzhao at marvell.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/wireless/mwifiex/11n_rxreorder.c | 5 +++--
- drivers/net/wireless/mwifiex/11n_rxreorder.h | 7 +++++++
- drivers/net/wireless/mwifiex/wmm.c | 2 ++
- 3 files changed, 12 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/net/wireless/mwifiex/11n_rxreorder.c b/drivers/net/wireless/mwifiex/11n_rxreorder.c
-index 7aa9aa0..39fd4d5 100644
---- a/drivers/net/wireless/mwifiex/11n_rxreorder.c
-+++ b/drivers/net/wireless/mwifiex/11n_rxreorder.c
-@@ -267,7 +267,8 @@ mwifiex_11n_create_rx_reorder_tbl(struct mwifiex_private *priv, u8 *ta,
- else
- last_seq = priv->rx_seq[tid];
-
-- if (last_seq >= new_node->start_win)
-+ if (last_seq != MWIFIEX_DEF_11N_RX_SEQ_NUM &&
-+ last_seq >= new_node->start_win)
- new_node->start_win = last_seq + 1;
-
- new_node->win_size = win_size;
-@@ -611,5 +612,5 @@ void mwifiex_11n_cleanup_reorder_tbl(struct mwifiex_private *priv)
- spin_unlock_irqrestore(&priv->rx_reorder_tbl_lock, flags);
-
- INIT_LIST_HEAD(&priv->rx_reorder_tbl_ptr);
-- memset(priv->rx_seq, 0, sizeof(priv->rx_seq));
-+ mwifiex_reset_11n_rx_seq_num(priv);
- }
-diff --git a/drivers/net/wireless/mwifiex/11n_rxreorder.h b/drivers/net/wireless/mwifiex/11n_rxreorder.h
-index 033c8ad..7128baa 100644
---- a/drivers/net/wireless/mwifiex/11n_rxreorder.h
-+++ b/drivers/net/wireless/mwifiex/11n_rxreorder.h
-@@ -37,6 +37,13 @@
-
- #define ADDBA_RSP_STATUS_ACCEPT 0
-
-+#define MWIFIEX_DEF_11N_RX_SEQ_NUM 0xffff
-+
-+static inline void mwifiex_reset_11n_rx_seq_num(struct mwifiex_private *priv)
-+{
-+ memset(priv->rx_seq, 0xff, sizeof(priv->rx_seq));
-+}
-+
- int mwifiex_11n_rx_reorder_pkt(struct mwifiex_private *,
- u16 seqNum,
- u16 tid, u8 *ta,
-diff --git a/drivers/net/wireless/mwifiex/wmm.c b/drivers/net/wireless/mwifiex/wmm.c
-index 6c239c3..b94a349 100644
---- a/drivers/net/wireless/mwifiex/wmm.c
-+++ b/drivers/net/wireless/mwifiex/wmm.c
-@@ -406,6 +406,8 @@ mwifiex_wmm_init(struct mwifiex_adapter *adapter)
- priv->add_ba_param.tx_win_size = MWIFIEX_AMPDU_DEF_TXWINSIZE;
- priv->add_ba_param.rx_win_size = MWIFIEX_AMPDU_DEF_RXWINSIZE;
-
-+ mwifiex_reset_11n_rx_seq_num(priv);
-+
- atomic_set(&priv->wmm.tx_pkts_queued, 0);
- atomic_set(&priv->wmm.highest_queued_prio, HIGH_PRIO_TID);
- }
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0004-mwifiex-fix-WPS-eapol-handshake-failure.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0004-mwifiex-fix-WPS-eapol-handshake-failure.patch
deleted file mode 100644
index b25c446..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0004-mwifiex-fix-WPS-eapol-handshake-failure.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From ea7217bde3c1bbcb215d3b67a4308399ac1d574c Mon Sep 17 00:00:00 2001
-From: Stone Piao <piaoyun at marvell.com>
-Date: Wed, 20 Jun 2012 20:21:11 -0700
-Subject: [PATCH 04/49] mwifiex: fix WPS eapol handshake failure
-
-commit f03ba7e9a24e5e9efaad56bd1713b994ea556b16 upstream.
-
-After association, STA will go through eapol handshake with WPS
-enabled AP. It's observed that WPS handshake fails with some 11n
-AP. The reason for the failure is that the eapol packet is sent
-via 11n frame aggregation.
-
-The eapol packet should be sent directly without 11n aggregation.
-
-This patch fixes the problem by adding WPS session control while
-dequeuing Tx packets for transmission.
-
-Signed-off-by: Stone Piao <piaoyun at marvell.com>
-Signed-off-by: Avinash Patil <patila at marvell.com>
-Signed-off-by: Bing Zhao <bzhao at marvell.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-[bwh: Backported to 3.2: reformat the if-statement per earlier
- upstream commit c65a30f35f938b421ac67c34a9e70b0e49e6019a]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/wireless/mwifiex/wmm.c | 10 ++++++----
- 1 file changed, 6 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/net/wireless/mwifiex/wmm.c b/drivers/net/wireless/mwifiex/wmm.c
-index b94a349..06fcf1e 100644
---- a/drivers/net/wireless/mwifiex/wmm.c
-+++ b/drivers/net/wireless/mwifiex/wmm.c
-@@ -1211,10 +1211,12 @@ mwifiex_dequeue_tx_packet(struct mwifiex_adapter *adapter)
- return 0;
- }
-
-- if (!ptr->is_11n_enabled || mwifiex_is_ba_stream_setup(priv, ptr, tid)
-- || ((priv->sec_info.wpa_enabled
-- || priv->sec_info.wpa2_enabled) && !priv->wpa_is_gtk_set)
-- ) {
-+ if (!ptr->is_11n_enabled ||
-+ mwifiex_is_ba_stream_setup(priv, ptr, tid) ||
-+ priv->wps.session_enable ||
-+ ((priv->sec_info.wpa_enabled ||
-+ priv->sec_info.wpa2_enabled) &&
-+ !priv->wpa_is_gtk_set)) {
- mwifiex_send_single_packet(priv, ptr, ptr_index, flags);
- /* ra_list_spinlock has been freed in
- mwifiex_send_single_packet() */
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0005-NFC-Prevent-multiple-buffer-overflows-in-NCI.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0005-NFC-Prevent-multiple-buffer-overflows-in-NCI.patch
deleted file mode 100644
index 10ae647..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0005-NFC-Prevent-multiple-buffer-overflows-in-NCI.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From e7d858dec1d8cf3c283019ff51adae14b8be9388 Mon Sep 17 00:00:00 2001
-From: Dan Rosenberg <dan.j.rosenberg at gmail.com>
-Date: Mon, 25 Jun 2012 16:05:27 +0200
-Subject: [PATCH 05/49] NFC: Prevent multiple buffer overflows in NCI
-
-commit 67de956ff5dc1d4f321e16cfbd63f5be3b691b43 upstream.
-
-Fix multiple remotely-exploitable stack-based buffer overflows due to
-the NCI code pulling length fields directly from incoming frames and
-copying too much data into statically-sized arrays.
-
-Signed-off-by: Dan Rosenberg <dan.j.rosenberg at gmail.com>
-Cc: security at kernel.org
-Cc: Lauro Ramos Venancio <lauro.venancio at openbossa.org>
-Cc: Aloisio Almeida Jr <aloisio.almeida at openbossa.org>
-Cc: Samuel Ortiz <sameo at linux.intel.com>
-Cc: David S. Miller <davem at davemloft.net>
-Acked-by: Ilan Elias <ilane at ti.com>
-Signed-off-by: Samuel Ortiz <sameo at linux.intel.com>
-[bwh: Backported to 3.2:
- - Drop changes to parsing of tech B and tech F parameters
- - Various renaming]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/nfc/nci/ntf.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/net/nfc/nci/ntf.c b/net/nfc/nci/ntf.c
-index 96633f5..12b6a80 100644
---- a/net/nfc/nci/ntf.c
-+++ b/net/nfc/nci/ntf.c
-@@ -86,7 +86,7 @@ static int nci_rf_activate_nfca_passive_poll(struct nci_dev *ndev,
- nfca_poll->sens_res = __le16_to_cpu(*((__u16 *)data));
- data += 2;
-
-- nfca_poll->nfcid1_len = *data++;
-+ nfca_poll->nfcid1_len = min_t(__u8, *data++, sizeof(nfca_poll->nfcid1));
-
- nfc_dbg("sens_res 0x%x, nfcid1_len %d",
- nfca_poll->sens_res,
-@@ -111,7 +111,7 @@ static int nci_rf_activate_nfca_passive_poll(struct nci_dev *ndev,
-
- switch (ntf->rf_interface_type) {
- case NCI_RF_INTERFACE_ISO_DEP:
-- nfca_poll_iso_dep->rats_res_len = *data++;
-+ nfca_poll_iso_dep->rats_res_len = min_t(__u8, *data++, 20);
- if (nfca_poll_iso_dep->rats_res_len > 0) {
- memcpy(nfca_poll_iso_dep->rats_res,
- data,
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0006-ath9k-fix-dynamic-WEP-related-regression.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0006-ath9k-fix-dynamic-WEP-related-regression.patch
deleted file mode 100644
index e8fe414..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0006-ath9k-fix-dynamic-WEP-related-regression.patch
+++ /dev/null
@@ -1,80 +0,0 @@
-From 11f5e090b288e9e933c8b7790626db9a5beef760 Mon Sep 17 00:00:00 2001
-From: Felix Fietkau <nbd at openwrt.org>
-Date: Sat, 23 Jun 2012 19:23:31 +0200
-Subject: [PATCH 06/49] ath9k: fix dynamic WEP related regression
-
-commit bed3d9c0b71f9afbfec905cb6db3b9f16be29d4d upstream.
-
-commit 7a532fe7131216a02c81a6c1b1f8632da1195a58
-ath9k_hw: fix interpretation of the rx KeyMiss flag
-
-This commit used the rx key miss indication to detect packets that were
-passed from the hardware without being decrypted, however it seems that
-this bit is not only undefined in the static WEP case, but also for
-dynamically allocated WEP keys. This caused a regression when using
-WEP-LEAP.
-
-This patch fixes the regression by keeping track of which key indexes
-refer to CCMP keys and only using the key miss indication for those.
-
-Reported-by: Stanislaw Gruszka <sgruszka at redhat.com>
-Signed-off-by: Felix Fietkau <nbd at openwrt.org>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/wireless/ath/ath.h | 1 +
- drivers/net/wireless/ath/ath9k/recv.c | 3 ++-
- drivers/net/wireless/ath/key.c | 4 ++++
- 3 files changed, 7 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/net/wireless/ath/ath.h b/drivers/net/wireless/ath/ath.h
-index 0f9ee46..4cc4a8b 100644
---- a/drivers/net/wireless/ath/ath.h
-+++ b/drivers/net/wireless/ath/ath.h
-@@ -143,6 +143,7 @@ struct ath_common {
- u32 keymax;
- DECLARE_BITMAP(keymap, ATH_KEYMAX);
- DECLARE_BITMAP(tkip_keymap, ATH_KEYMAX);
-+ DECLARE_BITMAP(ccmp_keymap, ATH_KEYMAX);
- enum ath_crypt_caps crypt_caps;
-
- unsigned int clockrate;
-diff --git a/drivers/net/wireless/ath/ath9k/recv.c b/drivers/net/wireless/ath/ath9k/recv.c
-index 2f3aeac..e6d791c 100644
---- a/drivers/net/wireless/ath/ath9k/recv.c
-+++ b/drivers/net/wireless/ath/ath9k/recv.c
-@@ -829,7 +829,8 @@ static bool ath9k_rx_accept(struct ath_common *common,
- * descriptor does contain a valid key index. This has been observed
- * mostly with CCMP encryption.
- */
-- if (rx_stats->rs_keyix == ATH9K_RXKEYIX_INVALID)
-+ if (rx_stats->rs_keyix == ATH9K_RXKEYIX_INVALID ||
-+ !test_bit(rx_stats->rs_keyix, common->ccmp_keymap))
- rx_stats->rs_status &= ~ATH9K_RXERR_KEYMISS;
-
- if (!rx_stats->rs_datalen)
-diff --git a/drivers/net/wireless/ath/key.c b/drivers/net/wireless/ath/key.c
-index 4cf7c5e..1ec3fa5 100644
---- a/drivers/net/wireless/ath/key.c
-+++ b/drivers/net/wireless/ath/key.c
-@@ -556,6 +556,9 @@ int ath_key_config(struct ath_common *common,
- return -EIO;
-
- set_bit(idx, common->keymap);
-+ if (key->cipher == WLAN_CIPHER_SUITE_CCMP)
-+ set_bit(idx, common->ccmp_keymap);
-+
- if (key->cipher == WLAN_CIPHER_SUITE_TKIP) {
- set_bit(idx + 64, common->keymap);
- set_bit(idx, common->tkip_keymap);
-@@ -582,6 +585,7 @@ void ath_key_delete(struct ath_common *common, struct ieee80211_key_conf *key)
- return;
-
- clear_bit(key->hw_key_idx, common->keymap);
-+ clear_bit(key->hw_key_idx, common->ccmp_keymap);
- if (key->cipher != WLAN_CIPHER_SUITE_TKIP)
- return;
-
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0007-NFC-Return-from-rawsock_release-when-sk-is-NULL.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0007-NFC-Return-from-rawsock_release-when-sk-is-NULL.patch
deleted file mode 100644
index 43801f4..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0007-NFC-Return-from-rawsock_release-when-sk-is-NULL.patch
+++ /dev/null
@@ -1,107 +0,0 @@
-From fd1f8dc4e31b8daeec0cb785256de7297a06e300 Mon Sep 17 00:00:00 2001
-From: Eric Dumazet <edumazet at google.com>
-Date: Tue, 12 Jun 2012 00:47:58 +0200
-Subject: [PATCH 07/49] NFC: Return from rawsock_release when sk is NULL
-
-commit 03e934f620101ca2cfc9383bd76172dd3e1f8567 upstream.
-
-Sasha Levin reported following panic :
-
-[ 2136.383310] BUG: unable to handle kernel NULL pointer dereference at
-00000000000003b0
-[ 2136.384022] IP: [<ffffffff8114e400>] __lock_acquire+0xc0/0x4b0
-[ 2136.384022] PGD 131c4067 PUD 11c0c067 PMD 0
-[ 2136.388106] Oops: 0000 [#1] PREEMPT SMP DEBUG_PAGEALLOC
-[ 2136.388106] CPU 1
-[ 2136.388106] Pid: 24855, comm: trinity-child1 Tainted: G W
-3.5.0-rc2-sasha-00015-g7b268f7 #374
-[ 2136.388106] RIP: 0010:[<ffffffff8114e400>] [<ffffffff8114e400>]
-__lock_acquire+0xc0/0x4b0
-[ 2136.388106] RSP: 0018:ffff8800130b3ca8 EFLAGS: 00010046
-[ 2136.388106] RAX: 0000000000000086 RBX: ffff88001186b000 RCX:
-0000000000000000
-[ 2136.388106] RDX: 0000000000000000 RSI: 0000000000000000 RDI:
-0000000000000000
-[ 2136.388106] RBP: ffff8800130b3d08 R08: 0000000000000001 R09:
-0000000000000000
-[ 2136.388106] R10: 0000000000000000 R11: 0000000000000001 R12:
-0000000000000002
-[ 2136.388106] R13: 00000000000003b0 R14: 0000000000000000 R15:
-0000000000000000
-[ 2136.388106] FS: 00007fa5b1bd4700(0000) GS:ffff88001b800000(0000)
-knlGS:0000000000000000
-[ 2136.388106] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
-[ 2136.388106] CR2: 00000000000003b0 CR3: 0000000011d1f000 CR4:
-00000000000406e0
-[ 2136.388106] DR0: 0000000000000000 DR1: 0000000000000000 DR2:
-0000000000000000
-[ 2136.388106] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7:
-0000000000000400
-[ 2136.388106] Process trinity-child1 (pid: 24855, threadinfo
-ffff8800130b2000, task ffff88001186b000)
-[ 2136.388106] Stack:
-[ 2136.388106] ffff8800130b3cd8 ffffffff81121785 ffffffff81236774
-000080d000000001
-[ 2136.388106] ffff88001b9d6c00 00000000001d6c00 ffffffff130b3d08
-ffff88001186b000
-[ 2136.388106] 0000000000000000 0000000000000002 0000000000000000
-0000000000000000
-[ 2136.388106] Call Trace:
-[ 2136.388106] [<ffffffff81121785>] ? sched_clock_local+0x25/0x90
-[ 2136.388106] [<ffffffff81236774>] ? get_empty_filp+0x74/0x220
-[ 2136.388106] [<ffffffff8114e97a>] lock_acquire+0x18a/0x1e0
-[ 2136.388106] [<ffffffff836b37df>] ? rawsock_release+0x4f/0xa0
-[ 2136.388106] [<ffffffff837c0ef0>] _raw_write_lock_bh+0x40/0x80
-[ 2136.388106] [<ffffffff836b37df>] ? rawsock_release+0x4f/0xa0
-[ 2136.388106] [<ffffffff836b37df>] rawsock_release+0x4f/0xa0
-[ 2136.388106] [<ffffffff8321cfe8>] sock_release+0x18/0x70
-[ 2136.388106] [<ffffffff8321d069>] sock_close+0x29/0x30
-[ 2136.388106] [<ffffffff81236bca>] __fput+0x11a/0x2c0
-[ 2136.388106] [<ffffffff81236d85>] fput+0x15/0x20
-[ 2136.388106] [<ffffffff8321de34>] sys_accept4+0x1b4/0x200
-[ 2136.388106] [<ffffffff837c165c>] ? _raw_spin_unlock_irq+0x4c/0x80
-[ 2136.388106] [<ffffffff837c1669>] ? _raw_spin_unlock_irq+0x59/0x80
-[ 2136.388106] [<ffffffff837c2565>] ? sysret_check+0x22/0x5d
-[ 2136.388106] [<ffffffff8321de8b>] sys_accept+0xb/0x10
-[ 2136.388106] [<ffffffff837c2539>] system_call_fastpath+0x16/0x1b
-[ 2136.388106] Code: ec 04 00 0f 85 ea 03 00 00 be d5 0b 00 00 48 c7 c7
-8a c1 40 84 e8 b1 a5 f8 ff 31 c0 e9 d4 03 00 00 66 2e 0f 1f 84 00 00 00
-00 00 <49> 81 7d 00 60 73 5e 85 b8 01 00 00 00 44 0f 44 e0 83 fe 01 77
-[ 2136.388106] RIP [<ffffffff8114e400>] __lock_acquire+0xc0/0x4b0
-[ 2136.388106] RSP <ffff8800130b3ca8>
-[ 2136.388106] CR2: 00000000000003b0
-[ 2136.388106] ---[ end trace 6d450e935ee18982 ]---
-[ 2136.388106] Kernel panic - not syncing: Fatal exception in interrupt
-
-rawsock_release() should test if sock->sk is NULL before calling
-sock_orphan()/sock_put()
-
-Reported-by: Sasha Levin <levinsasha928 at gmail.com>
-Tested-by: Sasha Levin <levinsasha928 at gmail.com>
-Signed-off-by: Eric Dumazet <edumazet at google.com>
-Signed-off-by: Samuel Ortiz <sameo at linux.intel.com>
-[bwh: Backported to 3.2: keep using nfc_dbg(), not pr_debug()]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/nfc/rawsock.c | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/net/nfc/rawsock.c b/net/nfc/rawsock.c
-index ee7b2b3..7a167fc 100644
---- a/net/nfc/rawsock.c
-+++ b/net/nfc/rawsock.c
-@@ -52,7 +52,10 @@ static int rawsock_release(struct socket *sock)
- {
- struct sock *sk = sock->sk;
-
-- nfc_dbg("sock=%p", sock);
-+ nfc_dbg("sock=%p sk=%p", sock, sk);
-+
-+ if (!sk)
-+ return 0;
-
- sock_orphan(sk);
- sock_put(sk);
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0008-rtlwifi-rtl8192cu-New-USB-IDs.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0008-rtlwifi-rtl8192cu-New-USB-IDs.patch
deleted file mode 100644
index 99f6f60..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0008-rtlwifi-rtl8192cu-New-USB-IDs.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From a771eb7b20c60a73ec422943dd387fbca27cf94d Mon Sep 17 00:00:00 2001
-From: Larry Finger <Larry.Finger at lwfinger.net>
-Date: Mon, 25 Jun 2012 18:01:12 -0500
-Subject: [PATCH 08/49] rtlwifi: rtl8192cu: New USB IDs
-
-commit f63d7dabd5da9ef41f28f6d69b29bc084db0ca5a upstream.
-
-The latest Realtek driver for the RTL8188CU and RTL8192CU chips adds three
-new USB IDs.
-
-Reported-by: Xose Vazquez Perez <xose.vazquez at gmail.com>
-Signed-off-by: Larry Finger <Larry.Finger at lwfinger.net>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/wireless/rtlwifi/rtl8192cu/sw.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/drivers/net/wireless/rtlwifi/rtl8192cu/sw.c b/drivers/net/wireless/rtlwifi/rtl8192cu/sw.c
-index 94a3e17..0302148 100644
---- a/drivers/net/wireless/rtlwifi/rtl8192cu/sw.c
-+++ b/drivers/net/wireless/rtlwifi/rtl8192cu/sw.c
-@@ -311,9 +311,11 @@ static struct usb_device_id rtl8192c_usb_ids[] = {
- {RTL_USB_DEVICE(0x07b8, 0x8188, rtl92cu_hal_cfg)}, /*Abocom - Abocom*/
- {RTL_USB_DEVICE(0x07b8, 0x8189, rtl92cu_hal_cfg)}, /*Funai - Abocom*/
- {RTL_USB_DEVICE(0x0846, 0x9041, rtl92cu_hal_cfg)}, /*NetGear WNA1000M*/
-+ {RTL_USB_DEVICE(0x0bda, 0x5088, rtl92cu_hal_cfg)}, /*Thinkware-CC&C*/
- {RTL_USB_DEVICE(0x0df6, 0x0052, rtl92cu_hal_cfg)}, /*Sitecom - Edimax*/
- {RTL_USB_DEVICE(0x0df6, 0x005c, rtl92cu_hal_cfg)}, /*Sitecom - Edimax*/
- {RTL_USB_DEVICE(0x0eb0, 0x9071, rtl92cu_hal_cfg)}, /*NO Brand - Etop*/
-+ {RTL_USB_DEVICE(0x4856, 0x0091, rtl92cu_hal_cfg)}, /*NetweeN - Feixun*/
- /* HP - Lite-On ,8188CUS Slim Combo */
- {RTL_USB_DEVICE(0x103c, 0x1629, rtl92cu_hal_cfg)},
- {RTL_USB_DEVICE(0x13d3, 0x3357, rtl92cu_hal_cfg)}, /* AzureWave */
-@@ -355,6 +357,7 @@ static struct usb_device_id rtl8192c_usb_ids[] = {
- {RTL_USB_DEVICE(0x07b8, 0x8178, rtl92cu_hal_cfg)}, /*Funai -Abocom*/
- {RTL_USB_DEVICE(0x0846, 0x9021, rtl92cu_hal_cfg)}, /*Netgear-Sercomm*/
- {RTL_USB_DEVICE(0x0b05, 0x17ab, rtl92cu_hal_cfg)}, /*ASUS-Edimax*/
-+ {RTL_USB_DEVICE(0x0bda, 0x8186, rtl92cu_hal_cfg)}, /*Realtek 92CE-VAU*/
- {RTL_USB_DEVICE(0x0df6, 0x0061, rtl92cu_hal_cfg)}, /*Sitecom-Edimax*/
- {RTL_USB_DEVICE(0x0e66, 0x0019, rtl92cu_hal_cfg)}, /*Hawking-Edimax*/
- {RTL_USB_DEVICE(0x2001, 0x3307, rtl92cu_hal_cfg)}, /*D-Link-Cameo*/
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0009-ath9k-enable-serialize_regmode-for-non-PCIE-AR9287.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0009-ath9k-enable-serialize_regmode-for-non-PCIE-AR9287.patch
deleted file mode 100644
index 383dda2..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0009-ath9k-enable-serialize_regmode-for-non-PCIE-AR9287.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From f65b74252f667d75391a86a6dee82aefb0e9b983 Mon Sep 17 00:00:00 2001
-From: Panayiotis Karabassis <panayk at gmail.com>
-Date: Tue, 26 Jun 2012 23:37:17 +0300
-Subject: [PATCH 09/49] ath9k: enable serialize_regmode for non-PCIE AR9287
-
-commit 7508b657967cf664b5aa0f6367d05016e7e3bc2a upstream.
-
-https://bugzilla.kernel.org/show_bug.cgi?id=42903
-
-Based on the work of <fynivx at gmail.com>
-
-Signed-off-by: Panayiotis Karabassis <panayk at gmail.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/wireless/ath/ath9k/hw.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/net/wireless/ath/ath9k/hw.c b/drivers/net/wireless/ath/ath9k/hw.c
-index 6973620..7f97164 100644
---- a/drivers/net/wireless/ath/ath9k/hw.c
-+++ b/drivers/net/wireless/ath/ath9k/hw.c
-@@ -557,7 +557,7 @@ static int __ath9k_hw_init(struct ath_hw *ah)
-
- if (ah->config.serialize_regmode == SER_REG_MODE_AUTO) {
- if (ah->hw_version.macVersion == AR_SREV_VERSION_5416_PCI ||
-- ((AR_SREV_9160(ah) || AR_SREV_9280(ah)) &&
-+ ((AR_SREV_9160(ah) || AR_SREV_9280(ah) || AR_SREV_9287(ah)) &&
- !ah->is_pciexpress)) {
- ah->config.serialize_regmode =
- SER_REG_MODE_ON;
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0010-mac80211-correct-behaviour-on-unrecognised-action-fr.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0010-mac80211-correct-behaviour-on-unrecognised-action-fr.patch
deleted file mode 100644
index 3aafce8..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0010-mac80211-correct-behaviour-on-unrecognised-action-fr.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From 21cdc703702f7ffbf440dc29b68044ac13363078 Mon Sep 17 00:00:00 2001
-From: Johannes Berg <johannes.berg at intel.com>
-Date: Wed, 27 Jun 2012 15:38:56 +0200
-Subject: [PATCH 10/49] mac80211: correct behaviour on unrecognised action
- frames
-
-commit 4b5ebccc40843104d980f0714bc86bfcd5568941 upstream.
-
-When receiving an "individually addressed" action frame, the
-receiver is required to return it to the sender. mac80211
-gets this wrong as it also returns group addressed (mcast)
-frames to the sender. Fix this and update the reference to
-the new 802.11 standards version since things were shuffled
-around significantly.
-
-Signed-off-by: Johannes Berg <johannes.berg at intel.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/mac80211/rx.c | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
-index 064d20f..cda4875 100644
---- a/net/mac80211/rx.c
-+++ b/net/mac80211/rx.c
-@@ -2389,7 +2389,7 @@ ieee80211_rx_h_action_return(struct ieee80211_rx_data *rx)
- * frames that we didn't handle, including returning unknown
- * ones. For all other modes we will return them to the sender,
- * setting the 0x80 bit in the action category, as required by
-- * 802.11-2007 7.3.1.11.
-+ * 802.11-2012 9.24.4.
- * Newer versions of hostapd shall also use the management frame
- * registration mechanisms, but older ones still use cooked
- * monitor interfaces so push all frames there.
-@@ -2399,6 +2399,9 @@ ieee80211_rx_h_action_return(struct ieee80211_rx_data *rx)
- sdata->vif.type == NL80211_IFTYPE_AP_VLAN))
- return RX_DROP_MONITOR;
-
-+ if (is_multicast_ether_addr(mgmt->da))
-+ return RX_DROP_MONITOR;
-+
- /* do not return rejected action frames */
- if (mgmt->u.action.category & 0x80)
- return RX_DROP_UNUSABLE;
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0011-ASoC-tlv320aic3x-Fix-codec-pll-configure-bug.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0011-ASoC-tlv320aic3x-Fix-codec-pll-configure-bug.patch
deleted file mode 100644
index 29139a1..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0011-ASoC-tlv320aic3x-Fix-codec-pll-configure-bug.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From 8ba42ffb182648185f9f5f924d26cf97b6be721f Mon Sep 17 00:00:00 2001
-From: "Hebbar, Gururaja" <gururaja.hebbar at ti.com>
-Date: Tue, 26 Jun 2012 19:25:11 +0530
-Subject: [PATCH 11/49] ASoC: tlv320aic3x: Fix codec pll configure bug
-
-commit c9fe573a6584034670c1a55ee8162d623519cbbf upstream.
-
-In sound/soc/codecs/tlv320aic3x.c
-
- data = snd_soc_read(codec, AIC3X_PLL_PROGA_REG);
- snd_soc_write(codec, AIC3X_PLL_PROGA_REG,
- data | (pll_p << PLLP_SHIFT));
-
-In the above code, pll-p value is OR'ed with previous value without
-clearing it. Bug is not seen if pll-p value doesn't change across
-Sampling frequency.
-
-However on some platforms (like AM335x EVM-SK), pll-p may have different
-values across different sampling frequencies. In such case, above code
-configures the pll with a wrong value.
-Because of this bug, when a audio stream is played with pll value
-different from previous stream, audio is heard as differently(like its
-stretched).
-
-Signed-off-by: Hebbar, Gururaja <gururaja.hebbar at ti.com>
-Signed-off-by: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- sound/soc/codecs/tlv320aic3x.c | 4 +---
- sound/soc/codecs/tlv320aic3x.h | 1 +
- 2 files changed, 2 insertions(+), 3 deletions(-)
-
-diff --git a/sound/soc/codecs/tlv320aic3x.c b/sound/soc/codecs/tlv320aic3x.c
-index d0dbac1..cdb473c 100644
---- a/sound/soc/codecs/tlv320aic3x.c
-+++ b/sound/soc/codecs/tlv320aic3x.c
-@@ -963,9 +963,7 @@ static int aic3x_hw_params(struct snd_pcm_substream *substream,
- }
-
- found:
-- data = snd_soc_read(codec, AIC3X_PLL_PROGA_REG);
-- snd_soc_write(codec, AIC3X_PLL_PROGA_REG,
-- data | (pll_p << PLLP_SHIFT));
-+ snd_soc_update_bits(codec, AIC3X_PLL_PROGA_REG, PLLP_MASK, pll_p);
- snd_soc_write(codec, AIC3X_OVRF_STATUS_AND_PLLR_REG,
- pll_r << PLLR_SHIFT);
- snd_soc_write(codec, AIC3X_PLL_PROGB_REG, pll_j << PLLJ_SHIFT);
-diff --git a/sound/soc/codecs/tlv320aic3x.h b/sound/soc/codecs/tlv320aic3x.h
-index 06a1978..16d9999 100644
---- a/sound/soc/codecs/tlv320aic3x.h
-+++ b/sound/soc/codecs/tlv320aic3x.h
-@@ -166,6 +166,7 @@
-
- /* PLL registers bitfields */
- #define PLLP_SHIFT 0
-+#define PLLP_MASK 7
- #define PLLQ_SHIFT 3
- #define PLLR_SHIFT 0
- #define PLLJ_SHIFT 2
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0012-powerpc-xmon-Use-cpumask-iterator-to-avoid-warning.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0012-powerpc-xmon-Use-cpumask-iterator-to-avoid-warning.patch
deleted file mode 100644
index 217ab5d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0012-powerpc-xmon-Use-cpumask-iterator-to-avoid-warning.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From 6d7506b0391c86ac347dce94f2c4642ce126cf45 Mon Sep 17 00:00:00 2001
-From: Anton Blanchard <anton at samba.org>
-Date: Thu, 28 Jun 2012 19:28:57 +0000
-Subject: [PATCH 12/49] powerpc/xmon: Use cpumask iterator to avoid warning
-
-commit bc1d7702910c7c7e88eb60b58429dbfe293683ce upstream.
-
-We have a bug report where the kernel hits a warning in the cpumask
-code:
-
-WARNING: at include/linux/cpumask.h:107
-
-Which is:
- WARN_ON_ONCE(cpu >= nr_cpumask_bits);
-
-The backtrace is:
- cpu_cmd
- cmds
- xmon_core
- xmon
- die
-
-xmon is iterating through 0 to NR_CPUS. I'm not sure why we are still
-open coding this but iterating above nr_cpu_ids is definitely a bug.
-
-This patch iterates through all possible cpus, in case we issue a
-system reset and CPUs in an offline state call in.
-
-Perhaps the old code was trying to handle CPUs that were in the
-partition but were never started (eg kexec into a kernel with an
-nr_cpus= boot option). They are going to die way before we get into
-xmon since we haven't set any kernel state up for them.
-
-Signed-off-by: Anton Blanchard <anton at samba.org>
-Signed-off-by: Benjamin Herrenschmidt <benh at kernel.crashing.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/powerpc/xmon/xmon.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/arch/powerpc/xmon/xmon.c b/arch/powerpc/xmon/xmon.c
-index 03a217a..b7e63d8 100644
---- a/arch/powerpc/xmon/xmon.c
-+++ b/arch/powerpc/xmon/xmon.c
-@@ -975,7 +975,7 @@ static int cpu_cmd(void)
- /* print cpus waiting or in xmon */
- printf("cpus stopped:");
- count = 0;
-- for (cpu = 0; cpu < NR_CPUS; ++cpu) {
-+ for_each_possible_cpu(cpu) {
- if (cpumask_test_cpu(cpu, &cpus_in_xmon)) {
- if (count == 0)
- printf(" %x", cpu);
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0013-powerpc-kvm-sldi-should-be-sld.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0013-powerpc-kvm-sldi-should-be-sld.patch
deleted file mode 100644
index 9f77ca5..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0013-powerpc-kvm-sldi-should-be-sld.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From af803001738a2e5609dbbe767f8f7a61bef3cf9c Mon Sep 17 00:00:00 2001
-From: Michael Neuling <mikey at neuling.org>
-Date: Mon, 25 Jun 2012 13:33:11 +0000
-Subject: [PATCH 13/49] powerpc/kvm: sldi should be sld
-
-commit 2f584a146a2965b82fce89b8d2f95dc5cfe468d0 upstream.
-
-Since we are taking a registers, this should never have been an sldi.
-Talking to paulus offline, this is the correct fix.
-
-Was introduced by:
- commit 19ccb76a1938ab364a412253daec64613acbf3df
- Author: Paul Mackerras <paulus at samba.org>
- Date: Sat Jul 23 17:42:46 2011 +1000
-
-Talking to paulus, this shouldn't be a literal.
-
-Signed-off-by: Michael Neuling <mikey at neuling.org>
-Signed-off-by: Benjamin Herrenschmidt <benh at kernel.crashing.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/powerpc/kvm/book3s_hv_rmhandlers.S | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/arch/powerpc/kvm/book3s_hv_rmhandlers.S b/arch/powerpc/kvm/book3s_hv_rmhandlers.S
-index 44d8829..5e8dc08 100644
---- a/arch/powerpc/kvm/book3s_hv_rmhandlers.S
-+++ b/arch/powerpc/kvm/book3s_hv_rmhandlers.S
-@@ -763,7 +763,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_ARCH_201)
- lwz r3,VCORE_NAPPING_THREADS(r5)
- lwz r4,VCPU_PTID(r9)
- li r0,1
-- sldi r0,r0,r4
-+ sld r0,r0,r4
- andc. r3,r3,r0 /* no sense IPI'ing ourselves */
- beq 43f
- mulli r4,r4,PACA_SIZE /* get paca for thread 0 */
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0014-md-raid10-Don-t-try-to-recovery-unmatched-and-unused.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0014-md-raid10-Don-t-try-to-recovery-unmatched-and-unused.patch
deleted file mode 100644
index e6c64f5..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0014-md-raid10-Don-t-try-to-recovery-unmatched-and-unused.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From 8002ce8e1b7a0ef6b60567ed63ed12fe6780b98a Mon Sep 17 00:00:00 2001
-From: NeilBrown <neilb at suse.de>
-Date: Tue, 3 Jul 2012 10:37:30 +1000
-Subject: [PATCH 14/49] md/raid10: Don't try to recovery unmatched (and
- unused) chunks.
-
-commit fc448a18ae6219af9a73257b1fbcd009efab4a81 upstream.
-
-If a RAID10 has an odd number of chunks - as might happen when there
-are an odd number of devices - the last chunk has no pair and so is
-not mirrored. We don't store data there, but when recovering the last
-device in an array we retry to recover that last chunk from a
-non-existent location. This results in an error, and the recovery
-aborts.
-
-When we get to that last chunk we should just stop - there is nothing
-more to do anyway.
-
-This bug has been present since the introduction of RAID10, so the
-patch is appropriate for any -stable kernel.
-
-Reported-by: Christian Balzer <chibi at gol.com>
-Tested-by: Christian Balzer <chibi at gol.com>
-Signed-off-by: NeilBrown <neilb at suse.de>
-[bwh: Backported to 3.2: adjust context]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/md/raid10.c | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c
-index b219449..3b67566 100644
---- a/drivers/md/raid10.c
-+++ b/drivers/md/raid10.c
-@@ -2436,6 +2436,12 @@ static sector_t sync_request(struct mddev *mddev, sector_t sector_nr,
- /* want to reconstruct this device */
- rb2 = r10_bio;
- sect = raid10_find_virt(conf, sector_nr, i);
-+ if (sect >= mddev->resync_max_sectors) {
-+ /* last stripe is not complete - don't
-+ * try to recover this sector.
-+ */
-+ continue;
-+ }
- /* Unless we are doing a full sync, we only need
- * to recover the block if it is set in the bitmap
- */
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0015-md-raid5-Do-not-add-data_offset-before-call-to-is_ba.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0015-md-raid5-Do-not-add-data_offset-before-call-to-is_ba.patch
deleted file mode 100644
index 953b3b6..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0015-md-raid5-Do-not-add-data_offset-before-call-to-is_ba.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From 2afec61845b4c0bed64c257a0acc2612e1862885 Mon Sep 17 00:00:00 2001
-From: majianpeng <majianpeng at gmail.com>
-Date: Tue, 12 Jun 2012 08:31:10 +0800
-Subject: [PATCH 15/49] md/raid5: Do not add data_offset before call to
- is_badblock
-
-commit 6c0544e255dd6582a9899572e120fb55d9f672a4 upstream.
-
-In chunk_aligned_read() we are adding data_offset before calling
-is_badblock. But is_badblock also adds data_offset, so that is bad.
-
-So move the addition of data_offset to after the call to
-is_badblock.
-
-This bug was introduced by commit 31c176ecdf3563140e639
- md/raid5: avoid reading from known bad blocks.
-which first appeared in 3.0. So that patch is suitable for any
--stable kernel from 3.0.y onwards. However it will need minor
-revision for most of those (as the comment didn't appear until
-recently).
-
-Signed-off-by: majianpeng <majianpeng at gmail.com>
-Signed-off-by: NeilBrown <neilb at suse.de>
-[bwh: Backported to 3.2: ignored missing comment]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/md/raid5.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
-index 858fdbb..d423c7e 100644
---- a/drivers/md/raid5.c
-+++ b/drivers/md/raid5.c
-@@ -3621,7 +3621,6 @@ static int chunk_aligned_read(struct mddev *mddev, struct bio * raid_bio)
- raid_bio->bi_next = (void*)rdev;
- align_bi->bi_bdev = rdev->bdev;
- align_bi->bi_flags &= ~(1 << BIO_SEG_VALID);
-- align_bi->bi_sector += rdev->data_offset;
-
- if (!bio_fits_rdev(align_bi) ||
- is_badblock(rdev, align_bi->bi_sector, align_bi->bi_size>>9,
-@@ -3632,6 +3631,9 @@ static int chunk_aligned_read(struct mddev *mddev, struct bio * raid_bio)
- return 0;
- }
-
-+ /* No reshape active, so we can trust rdev->data_offset */
-+ align_bi->bi_sector += rdev->data_offset;
-+
- spin_lock_irq(&conf->device_lock);
- wait_event_lock_irq(conf->wait_for_stripe,
- conf->quiesce == 0,
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0016-md-raid5-In-ops_run_io-inc-nr_pending-before-calling.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0016-md-raid5-In-ops_run_io-inc-nr_pending-before-calling.patch
deleted file mode 100644
index 493b6be..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0016-md-raid5-In-ops_run_io-inc-nr_pending-before-calling.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From 1e6a8f24c1ff905a8bae6dd5222bc128eb60f886 Mon Sep 17 00:00:00 2001
-From: majianpeng <majianpeng at gmail.com>
-Date: Tue, 3 Jul 2012 12:11:54 +1000
-Subject: [PATCH 16/49] md/raid5: In ops_run_io, inc nr_pending before calling
- md_wait_for_blocked_rdev
-
-commit 1850753d2e6d9ca7856581ca5d3cf09521e6a5d7 upstream.
-
-In ops_run_io(), the call to md_wait_for_blocked_rdev will decrement
-nr_pending so we lose the reference we hold on the rdev.
-So atomic_inc it first to maintain the reference.
-
-This bug was introduced by commit 73e92e51b7969ef5477d
- md/raid5. Don't write to known bad block on doubtful devices.
-
-which appeared in 3.0, so patch is suitable for stable kernels since
-then.
-
-Signed-off-by: majianpeng <majianpeng at gmail.com>
-Signed-off-by: NeilBrown <neilb at suse.de>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/md/raid5.c | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
-index d423c7e..6ba4954 100644
---- a/drivers/md/raid5.c
-+++ b/drivers/md/raid5.c
-@@ -542,6 +542,12 @@ static void ops_run_io(struct stripe_head *sh, struct stripe_head_state *s)
- * a chance*/
- md_check_recovery(conf->mddev);
- }
-+ /*
-+ * Because md_wait_for_blocked_rdev
-+ * will dec nr_pending, we must
-+ * increment it first.
-+ */
-+ atomic_inc(&rdev->nr_pending);
- md_wait_for_blocked_rdev(rdev, conf->mddev);
- } else {
- /* Acknowledged bad block - skip the write */
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0017-md-raid10-fix-failure-when-trying-to-repair-a-read-e.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0017-md-raid10-fix-failure-when-trying-to-repair-a-read-e.patch
deleted file mode 100644
index 1f96efa..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0017-md-raid10-fix-failure-when-trying-to-repair-a-read-e.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From 4c1df6ee8b798576a23b25ab391cd7f3b5835bcd Mon Sep 17 00:00:00 2001
-From: NeilBrown <neilb at suse.de>
-Date: Tue, 3 Jul 2012 15:55:33 +1000
-Subject: [PATCH 17/49] md/raid10: fix failure when trying to repair a read
- error.
-
-commit 055d3747dbf00ce85c6872ecca4d466638e80c22 upstream.
-
-commit 58c54fcca3bac5bf9290cfed31c76e4c4bfbabaf
- md/raid10: handle further errors during fix_read_error better.
-
-in 3.1 added "r10_sync_page_io" which takes an IO size in sectors.
-But we were passing the IO size in bytes!!!
-This resulting in bio_add_page failing, and empty request being sent
-down, and a consequent BUG_ON in scsi_lib.
-
-[fix missing space in error message at same time]
-
-This fix is suitable for 3.1.y and later.
-
-Reported-by: Christian Balzer <chibi at gol.com>
-Signed-off-by: NeilBrown <neilb at suse.de>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/md/raid10.c | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c
-index 3b67566..7a9eef6 100644
---- a/drivers/md/raid10.c
-+++ b/drivers/md/raid10.c
-@@ -1919,7 +1919,7 @@ static void fix_read_error(struct r10conf *conf, struct mddev *mddev, struct r10
- if (r10_sync_page_io(rdev,
- r10_bio->devs[sl].addr +
- sect,
-- s<<9, conf->tmppage, WRITE)
-+ s, conf->tmppage, WRITE)
- == 0) {
- /* Well, this device is dead */
- printk(KERN_NOTICE
-@@ -1956,7 +1956,7 @@ static void fix_read_error(struct r10conf *conf, struct mddev *mddev, struct r10
- switch (r10_sync_page_io(rdev,
- r10_bio->devs[sl].addr +
- sect,
-- s<<9, conf->tmppage,
-+ s, conf->tmppage,
- READ)) {
- case 0:
- /* Well, this device is dead */
-@@ -2119,7 +2119,7 @@ read_more:
- rdev = conf->mirrors[mirror].rdev;
- printk_ratelimited(
- KERN_ERR
-- "md/raid10:%s: %s: redirecting"
-+ "md/raid10:%s: %s: redirecting "
- "sector %llu to another mirror\n",
- mdname(mddev),
- bdevname(rdev->bdev, b),
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0018-drm-i915-kick-any-firmware-framebuffers-before-claim.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0018-drm-i915-kick-any-firmware-framebuffers-before-claim.patch
deleted file mode 100644
index ab9e976..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0018-drm-i915-kick-any-firmware-framebuffers-before-claim.patch
+++ /dev/null
@@ -1,118 +0,0 @@
-From 3426f0a75320d87b4fd5a63263ff4f1a7574fd90 Mon Sep 17 00:00:00 2001
-From: Daniel Vetter <daniel.vetter at ffwll.ch>
-Date: Sun, 1 Jul 2012 17:09:42 +0200
-Subject: [PATCH 18/49] drm/i915: kick any firmware framebuffers before
- claiming the gtt
-
-commit 9f846a16d213523fbe6daea17e20df6b8ac5a1e5 upstream.
-
-Especially vesafb likes to map everything as uc- (yikes), and if that
-mapping hangs around still while we try to map the gtt as wc the
-kernel will downgrade our request to uc-, resulting in abyssal
-performance.
-
-Unfortunately we can't do this as early as readon does (i.e. as the
-first thing we do when initializing the hw) because our fb/mmio space
-region moves around on a per-gen basis. So I've had to move it below
-the gtt initialization, but that seems to work, too. The important
-thing is that we do this before we set up the gtt wc mapping.
-
-Now an altogether different question is why people compile their
-kernels with vesafb enabled, but I guess making things just work isn't
-bad per se ...
-
-v2:
-- s/radeondrmfb/inteldrmfb/
-- fix up error handling
-
-v3: Kill #ifdef X86, this is Intel after all. Noticed by Ben Widawsky.
-
-v4: Jani Nikula complained about the pointless bool primary
-initialization.
-
-v5: Don't oops if we can't allocate, noticed by Chris Wilson.
-
-v6: Resolve conflicts with agp rework and fixup whitespace.
-
-This is commit e188719a2891f01b3100d in drm-next.
-
-Backport to 3.5 -fixes queue requested by Dave Airlie - due to grub
-using vesa on fedora their initrd seems to load vesafb before loading
-the real kms driver. So tons more people actually experience a
-dead-slow gpu. Hence also the Cc: stable.
-
-Reported-and-tested-by: "Kilarski, Bernard R" <bernard.r.kilarski at intel.com>
-Reviewed-by: Chris Wilson <chris at chris-wilson.co.uk>
-Signed-off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
-Signed-off-by: Dave Airlie <airlied at redhat.com>
-[bwh: Backported to 3.2: adjust context]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpu/drm/i915/i915_dma.c | 37 ++++++++++++++++++++++++++++++-------
- 1 file changed, 30 insertions(+), 7 deletions(-)
-
-diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c
-index c4da951..ca67338 100644
---- a/drivers/gpu/drm/i915/i915_dma.c
-+++ b/drivers/gpu/drm/i915/i915_dma.c
-@@ -1890,6 +1890,27 @@ ips_ping_for_i915_load(void)
- }
- }
-
-+static void i915_kick_out_firmware_fb(struct drm_i915_private *dev_priv)
-+{
-+ struct apertures_struct *ap;
-+ struct pci_dev *pdev = dev_priv->dev->pdev;
-+ bool primary;
-+
-+ ap = alloc_apertures(1);
-+ if (!ap)
-+ return;
-+
-+ ap->ranges[0].base = dev_priv->dev->agp->base;
-+ ap->ranges[0].size =
-+ dev_priv->mm.gtt->gtt_mappable_entries << PAGE_SHIFT;
-+ primary =
-+ pdev->resource[PCI_ROM_RESOURCE].flags & IORESOURCE_ROM_SHADOW;
-+
-+ remove_conflicting_framebuffers(ap, "inteldrmfb", primary);
-+
-+ kfree(ap);
-+}
-+
- /**
- * i915_driver_load - setup chip and create an initial config
- * @dev: DRM device
-@@ -1927,6 +1948,15 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags)
- goto free_priv;
- }
-
-+ dev_priv->mm.gtt = intel_gtt_get();
-+ if (!dev_priv->mm.gtt) {
-+ DRM_ERROR("Failed to initialize GTT\n");
-+ ret = -ENODEV;
-+ goto put_bridge;
-+ }
-+
-+ i915_kick_out_firmware_fb(dev_priv);
-+
- /* overlay on gen2 is broken and can't address above 1G */
- if (IS_GEN2(dev))
- dma_set_coherent_mask(&dev->pdev->dev, DMA_BIT_MASK(30));
-@@ -1950,13 +1980,6 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags)
- goto put_bridge;
- }
-
-- dev_priv->mm.gtt = intel_gtt_get();
-- if (!dev_priv->mm.gtt) {
-- DRM_ERROR("Failed to initialize GTT\n");
-- ret = -ENODEV;
-- goto out_rmmap;
-- }
--
- agp_size = dev_priv->mm.gtt->gtt_mappable_entries << PAGE_SHIFT;
-
- dev_priv->mm.gtt_mapping =
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0019-dm-persistent-data-fix-shadow_info_leak-on-dm_tm_des.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0019-dm-persistent-data-fix-shadow_info_leak-on-dm_tm_des.patch
deleted file mode 100644
index 9ac2fb5..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0019-dm-persistent-data-fix-shadow_info_leak-on-dm_tm_des.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 97bbf28874e2f7467c0d05db53041e556488087a Mon Sep 17 00:00:00 2001
-From: Mike Snitzer <snitzer at redhat.com>
-Date: Tue, 3 Jul 2012 12:55:33 +0100
-Subject: [PATCH 19/49] dm persistent data: fix shadow_info_leak on
- dm_tm_destroy
-
-commit 25d7cd6faa7ae6ed2565617c3ee2500ccb8a9f7f upstream.
-
-Cleanup the shadow table before destroying the transaction manager.
-
-Reference: leak was identified with kmemleak when running
-test_discard_random_sectors in the thinp-test-suite.
-
-Signed-off-by: Mike Snitzer <snitzer at redhat.com>
-Signed-off-by: Alasdair G Kergon <agk at redhat.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/md/persistent-data/dm-transaction-manager.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/drivers/md/persistent-data/dm-transaction-manager.c b/drivers/md/persistent-data/dm-transaction-manager.c
-index 6f8d387..e5902d1 100644
---- a/drivers/md/persistent-data/dm-transaction-manager.c
-+++ b/drivers/md/persistent-data/dm-transaction-manager.c
-@@ -138,6 +138,9 @@ EXPORT_SYMBOL_GPL(dm_tm_create_non_blocking_clone);
-
- void dm_tm_destroy(struct dm_transaction_manager *tm)
- {
-+ if (!tm->is_clone)
-+ wipe_shadow_table(tm);
-+
- kfree(tm);
- }
- EXPORT_SYMBOL_GPL(dm_tm_destroy);
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0020-dm-persistent-data-handle-space-map-checker-creation.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0020-dm-persistent-data-handle-space-map-checker-creation.patch
deleted file mode 100644
index f186538..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0020-dm-persistent-data-handle-space-map-checker-creation.patch
+++ /dev/null
@@ -1,182 +0,0 @@
-From 5ac62b535b410eb5bfbb5457703fd42f5b517088 Mon Sep 17 00:00:00 2001
-From: Mike Snitzer <snitzer at redhat.com>
-Date: Tue, 3 Jul 2012 12:55:35 +0100
-Subject: [PATCH 20/49] dm persistent data: handle space map checker creation
- failure
-
-commit 62662303e7f590fdfbb0070ab820a0ad4267c119 upstream.
-
-If CONFIG_DM_DEBUG_SPACE_MAPS is enabled and dm_sm_checker_create()
-fails, dm_tm_create_internal() would still return success even though it
-cleaned up all resources it was supposed to have created. This will
-lead to a kernel crash:
-
-general protection fault: 0000 [#1] SMP DEBUG_PAGEALLOC
-...
-RIP: 0010:[<ffffffff81593659>] [<ffffffff81593659>] dm_bufio_get_block_size+0x9/0x20
-Call Trace:
- [<ffffffff81599bae>] dm_bm_block_size+0xe/0x10
- [<ffffffff8159b8b8>] sm_ll_init+0x78/0xd0
- [<ffffffff8159c1a6>] sm_ll_new_disk+0x16/0xa0
- [<ffffffff8159c98e>] dm_sm_disk_create+0xfe/0x160
- [<ffffffff815abf6e>] dm_pool_metadata_open+0x16e/0x6a0
- [<ffffffff815aa010>] pool_ctr+0x3f0/0x900
- [<ffffffff8158d565>] dm_table_add_target+0x195/0x450
- [<ffffffff815904c4>] table_load+0xe4/0x330
- [<ffffffff815917ea>] ctl_ioctl+0x15a/0x2c0
- [<ffffffff81591963>] dm_ctl_ioctl+0x13/0x20
- [<ffffffff8116a4f8>] do_vfs_ioctl+0x98/0x560
- [<ffffffff8116aa51>] sys_ioctl+0x91/0xa0
- [<ffffffff81869f52>] system_call_fastpath+0x16/0x1b
-
-Fix the space map checker code to return an appropriate ERR_PTR and have
-dm_sm_disk_create() and dm_tm_create_internal() check for it with
-IS_ERR.
-
-Reported-by: Vivek Goyal <vgoyal at redhat.com>
-Signed-off-by: Mike Snitzer <snitzer at redhat.com>
-Signed-off-by: Alasdair G Kergon <agk at redhat.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/md/persistent-data/dm-space-map-checker.c | 24 ++++++++++----------
- drivers/md/persistent-data/dm-space-map-disk.c | 11 ++++++++-
- .../md/persistent-data/dm-transaction-manager.c | 8 +++++--
- 3 files changed, 28 insertions(+), 15 deletions(-)
-
-diff --git a/drivers/md/persistent-data/dm-space-map-checker.c b/drivers/md/persistent-data/dm-space-map-checker.c
-index 50ed53b..6d7c832 100644
---- a/drivers/md/persistent-data/dm-space-map-checker.c
-+++ b/drivers/md/persistent-data/dm-space-map-checker.c
-@@ -343,25 +343,25 @@ struct dm_space_map *dm_sm_checker_create(struct dm_space_map *sm)
- int r;
- struct sm_checker *smc;
-
-- if (!sm)
-- return NULL;
-+ if (IS_ERR_OR_NULL(sm))
-+ return ERR_PTR(-EINVAL);
-
- smc = kmalloc(sizeof(*smc), GFP_KERNEL);
- if (!smc)
-- return NULL;
-+ return ERR_PTR(-ENOMEM);
-
- memcpy(&smc->sm, &ops_, sizeof(smc->sm));
- r = ca_create(&smc->old_counts, sm);
- if (r) {
- kfree(smc);
-- return NULL;
-+ return ERR_PTR(r);
- }
-
- r = ca_create(&smc->counts, sm);
- if (r) {
- ca_destroy(&smc->old_counts);
- kfree(smc);
-- return NULL;
-+ return ERR_PTR(r);
- }
-
- smc->real_sm = sm;
-@@ -371,7 +371,7 @@ struct dm_space_map *dm_sm_checker_create(struct dm_space_map *sm)
- ca_destroy(&smc->counts);
- ca_destroy(&smc->old_counts);
- kfree(smc);
-- return NULL;
-+ return ERR_PTR(r);
- }
-
- r = ca_commit(&smc->old_counts, &smc->counts);
-@@ -379,7 +379,7 @@ struct dm_space_map *dm_sm_checker_create(struct dm_space_map *sm)
- ca_destroy(&smc->counts);
- ca_destroy(&smc->old_counts);
- kfree(smc);
-- return NULL;
-+ return ERR_PTR(r);
- }
-
- return &smc->sm;
-@@ -391,25 +391,25 @@ struct dm_space_map *dm_sm_checker_create_fresh(struct dm_space_map *sm)
- int r;
- struct sm_checker *smc;
-
-- if (!sm)
-- return NULL;
-+ if (IS_ERR_OR_NULL(sm))
-+ return ERR_PTR(-EINVAL);
-
- smc = kmalloc(sizeof(*smc), GFP_KERNEL);
- if (!smc)
-- return NULL;
-+ return ERR_PTR(-ENOMEM);
-
- memcpy(&smc->sm, &ops_, sizeof(smc->sm));
- r = ca_create(&smc->old_counts, sm);
- if (r) {
- kfree(smc);
-- return NULL;
-+ return ERR_PTR(r);
- }
-
- r = ca_create(&smc->counts, sm);
- if (r) {
- ca_destroy(&smc->old_counts);
- kfree(smc);
-- return NULL;
-+ return ERR_PTR(r);
- }
-
- smc->real_sm = sm;
-diff --git a/drivers/md/persistent-data/dm-space-map-disk.c b/drivers/md/persistent-data/dm-space-map-disk.c
-index fc469ba..3d0ed53 100644
---- a/drivers/md/persistent-data/dm-space-map-disk.c
-+++ b/drivers/md/persistent-data/dm-space-map-disk.c
-@@ -290,7 +290,16 @@ struct dm_space_map *dm_sm_disk_create(struct dm_transaction_manager *tm,
- dm_block_t nr_blocks)
- {
- struct dm_space_map *sm = dm_sm_disk_create_real(tm, nr_blocks);
-- return dm_sm_checker_create_fresh(sm);
-+ struct dm_space_map *smc;
-+
-+ if (IS_ERR_OR_NULL(sm))
-+ return sm;
-+
-+ smc = dm_sm_checker_create_fresh(sm);
-+ if (IS_ERR(smc))
-+ dm_sm_destroy(sm);
-+
-+ return smc;
- }
- EXPORT_SYMBOL_GPL(dm_sm_disk_create);
-
-diff --git a/drivers/md/persistent-data/dm-transaction-manager.c b/drivers/md/persistent-data/dm-transaction-manager.c
-index e5902d1..ba54aac 100644
---- a/drivers/md/persistent-data/dm-transaction-manager.c
-+++ b/drivers/md/persistent-data/dm-transaction-manager.c
-@@ -345,8 +345,10 @@ static int dm_tm_create_internal(struct dm_block_manager *bm,
- }
-
- *sm = dm_sm_checker_create(inner);
-- if (!*sm)
-+ if (IS_ERR(*sm)) {
-+ r = PTR_ERR(*sm);
- goto bad2;
-+ }
-
- } else {
- r = dm_bm_write_lock(dm_tm_get_bm(*tm), sb_location,
-@@ -365,8 +367,10 @@ static int dm_tm_create_internal(struct dm_block_manager *bm,
- }
-
- *sm = dm_sm_checker_create(inner);
-- if (!*sm)
-+ if (IS_ERR(*sm)) {
-+ r = PTR_ERR(*sm);
- goto bad2;
-+ }
- }
-
- return 0;
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0021-dm-persistent-data-fix-allocation-failure-in-space-m.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0021-dm-persistent-data-fix-allocation-failure-in-space-m.patch
deleted file mode 100644
index b8121c8..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0021-dm-persistent-data-fix-allocation-failure-in-space-m.patch
+++ /dev/null
@@ -1,95 +0,0 @@
-From d93e7e98bbff07495ac95fd10c02c2e0d5392079 Mon Sep 17 00:00:00 2001
-From: Mike Snitzer <snitzer at redhat.com>
-Date: Tue, 3 Jul 2012 12:55:37 +0100
-Subject: [PATCH 21/49] dm persistent data: fix allocation failure in space
- map checker init
-
-commit b0239faaf87c38bb419c9264bf20817438ddc3a9 upstream.
-
-If CONFIG_DM_DEBUG_SPACE_MAPS is enabled and memory is fragmented and a
-sufficiently-large metadata device is used in a thin pool then the space
-map checker will fail to allocate the memory it requires.
-
-Switch from kmalloc to vmalloc to allow larger virtually contiguous
-allocations for the space map checker's internal count arrays.
-
-Reported-by: Vivek Goyal <vgoyal at redhat.com>
-Signed-off-by: Mike Snitzer <snitzer at redhat.com>
-Signed-off-by: Alasdair G Kergon <agk at redhat.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/md/persistent-data/dm-space-map-checker.c | 30 +++++++++++++--------
- 1 file changed, 19 insertions(+), 11 deletions(-)
-
-diff --git a/drivers/md/persistent-data/dm-space-map-checker.c b/drivers/md/persistent-data/dm-space-map-checker.c
-index 6d7c832..fc90c11 100644
---- a/drivers/md/persistent-data/dm-space-map-checker.c
-+++ b/drivers/md/persistent-data/dm-space-map-checker.c
-@@ -8,6 +8,7 @@
-
- #include <linux/device-mapper.h>
- #include <linux/export.h>
-+#include <linux/vmalloc.h>
-
- #ifdef CONFIG_DM_DEBUG_SPACE_MAPS
-
-@@ -89,13 +90,23 @@ static int ca_create(struct count_array *ca, struct dm_space_map *sm)
-
- ca->nr = nr_blocks;
- ca->nr_free = nr_blocks;
-- ca->counts = kzalloc(sizeof(*ca->counts) * nr_blocks, GFP_KERNEL);
-- if (!ca->counts)
-- return -ENOMEM;
-+
-+ if (!nr_blocks)
-+ ca->counts = NULL;
-+ else {
-+ ca->counts = vzalloc(sizeof(*ca->counts) * nr_blocks);
-+ if (!ca->counts)
-+ return -ENOMEM;
-+ }
-
- return 0;
- }
-
-+static void ca_destroy(struct count_array *ca)
-+{
-+ vfree(ca->counts);
-+}
-+
- static int ca_load(struct count_array *ca, struct dm_space_map *sm)
- {
- int r;
-@@ -126,12 +137,14 @@ static int ca_load(struct count_array *ca, struct dm_space_map *sm)
- static int ca_extend(struct count_array *ca, dm_block_t extra_blocks)
- {
- dm_block_t nr_blocks = ca->nr + extra_blocks;
-- uint32_t *counts = kzalloc(sizeof(*counts) * nr_blocks, GFP_KERNEL);
-+ uint32_t *counts = vzalloc(sizeof(*counts) * nr_blocks);
- if (!counts)
- return -ENOMEM;
-
-- memcpy(counts, ca->counts, sizeof(*counts) * ca->nr);
-- kfree(ca->counts);
-+ if (ca->counts) {
-+ memcpy(counts, ca->counts, sizeof(*counts) * ca->nr);
-+ ca_destroy(ca);
-+ }
- ca->nr = nr_blocks;
- ca->nr_free += extra_blocks;
- ca->counts = counts;
-@@ -151,11 +164,6 @@ static int ca_commit(struct count_array *old, struct count_array *new)
- return 0;
- }
-
--static void ca_destroy(struct count_array *ca)
--{
-- kfree(ca->counts);
--}
--
- /*----------------------------------------------------------------*/
-
- struct sm_checker {
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0022-ALSA-hda-Fix-power-map-regression-for-HP-dv6-co.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0022-ALSA-hda-Fix-power-map-regression-for-HP-dv6-co.patch
deleted file mode 100644
index 3b85ba7..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0022-ALSA-hda-Fix-power-map-regression-for-HP-dv6-co.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From 6411ef218c12f6719597631d388f2b13945a5251 Mon Sep 17 00:00:00 2001
-From: Takashi Iwai <tiwai at suse.de>
-Date: Tue, 26 Jun 2012 17:35:10 +0200
-Subject: [PATCH 22/49] ALSA: hda - Fix power-map regression for HP dv6 & co
-
-commit 6e1c39c6b00d9141a82c231ba7c5e5b1716974b2 upstream.
-
-The recent fix for power-map controls (commit b0791dda813) caused
-regressions on some other HP laptops. They have fixed pins but these
-pins are exposed as jack-detectable. Thus the driver tries to control
-the power-map dynamically per jack detection where it never gets on.
-
-This patch adds the check of connection and it assumes the no jack
-detection is available for fixed pins no matter what pin capability
-says.
-
-BugLink: http://bugs.launchpad.net/bugs/1013183
-Reported-by: Luis Henriques <luis.henriques at canonical.com>
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- sound/pci/hda/patch_sigmatel.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c
-index 7b7a516..2b973f5 100644
---- a/sound/pci/hda/patch_sigmatel.c
-+++ b/sound/pci/hda/patch_sigmatel.c
-@@ -4457,7 +4457,7 @@ static int stac92xx_init(struct hda_codec *codec)
- AC_PINCTL_IN_EN);
- for (i = 0; i < spec->num_pwrs; i++) {
- hda_nid_t nid = spec->pwr_nids[i];
-- int pinctl, def_conf;
-+ unsigned int pinctl, def_conf;
-
- /* power on when no jack detection is available */
- /* or when the VREF is used for controlling LED */
-@@ -4484,7 +4484,7 @@ static int stac92xx_init(struct hda_codec *codec)
- def_conf = get_defcfg_connect(def_conf);
- /* skip any ports that don't have jacks since presence
- * detection is useless */
-- if (def_conf != AC_JACK_PORT_NONE &&
-+ if (def_conf != AC_JACK_PORT_COMPLEX ||
- !is_jack_detectable(codec, nid)) {
- stac_toggle_power_map(codec, nid, 1);
- continue;
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0023-tracing-change-CPU-ring-buffer-state-from-tracing_cp.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0023-tracing-change-CPU-ring-buffer-state-from-tracing_cp.patch
deleted file mode 100644
index eb84795..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0023-tracing-change-CPU-ring-buffer-state-from-tracing_cp.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From 04098d77869c04c5bf703846783cb89b4297b2bb Mon Sep 17 00:00:00 2001
-From: Vaibhav Nagarnaik <vnagarnaik at google.com>
-Date: Thu, 3 May 2012 18:59:52 -0700
-Subject: [PATCH 23/49] tracing: change CPU ring buffer state from
- tracing_cpumask
-
-commit 71babb2705e2203a64c27ede13ae3508a0d2c16c upstream.
-
-According to Documentation/trace/ftrace.txt:
-
-tracing_cpumask:
-
- This is a mask that lets the user only trace
- on specified CPUS. The format is a hex string
- representing the CPUS.
-
-The tracing_cpumask currently doesn't affect the tracing state of
-per-CPU ring buffers.
-
-This patch enables/disables CPU recording as its corresponding bit in
-tracing_cpumask is set/unset.
-
-Link: http://lkml.kernel.org/r/1336096792-25373-3-git-send-email-vnagarnaik@google.com
-
-Cc: Frederic Weisbecker <fweisbec at gmail.com>
-Cc: Ingo Molnar <mingo at redhat.com>
-Cc: Laurent Chavey <chavey at google.com>
-Cc: Justin Teravest <teravest at google.com>
-Cc: David Sharp <dhsharp at google.com>
-Signed-off-by: Vaibhav Nagarnaik <vnagarnaik at google.com>
-Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- kernel/trace/trace.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
-index 7e4edd3..5638104 100644
---- a/kernel/trace/trace.c
-+++ b/kernel/trace/trace.c
-@@ -2541,10 +2541,12 @@ tracing_cpumask_write(struct file *filp, const char __user *ubuf,
- if (cpumask_test_cpu(cpu, tracing_cpumask) &&
- !cpumask_test_cpu(cpu, tracing_cpumask_new)) {
- atomic_inc(&global_trace.data[cpu]->disabled);
-+ ring_buffer_record_disable_cpu(global_trace.buffer, cpu);
- }
- if (!cpumask_test_cpu(cpu, tracing_cpumask) &&
- cpumask_test_cpu(cpu, tracing_cpumask_new)) {
- atomic_dec(&global_trace.data[cpu]->disabled);
-+ ring_buffer_record_enable_cpu(global_trace.buffer, cpu);
- }
- }
- arch_spin_unlock(&ftrace_max_lock);
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0024-mwifiex-fix-wrong-return-values-in-add_virtual_intf-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0024-mwifiex-fix-wrong-return-values-in-add_virtual_intf-.patch
deleted file mode 100644
index e7cb513..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0024-mwifiex-fix-wrong-return-values-in-add_virtual_intf-.patch
+++ /dev/null
@@ -1,93 +0,0 @@
-From 0b53b4fb097d5d599a3a3fcd0ac10ad140bdf9c4 Mon Sep 17 00:00:00 2001
-From: Bing Zhao <bzhao at marvell.com>
-Date: Tue, 3 Jul 2012 20:43:56 -0700
-Subject: [PATCH 24/49] mwifiex: fix wrong return values in add_virtual_intf()
- error cases
-
-commit 858faa57dd9e2b91f3f870fbb1185982e42f5a2b upstream
-
-backported for linux-3.2.y, linux-3.3.y, linux-3.4.y
-
-add_virtual_intf() needs to return an ERR_PTR(), instead of NULL,
-on errors, otherwise cfg80211 will crash.
-
-Reported-by: Johannes Berg <johannes at sipsolutions.net>
-Signed-off-by: Bing Zhao <bzhao at marvell.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/wireless/mwifiex/cfg80211.c | 21 +++++++++------------
- 1 file changed, 9 insertions(+), 12 deletions(-)
-
-diff --git a/drivers/net/wireless/mwifiex/cfg80211.c b/drivers/net/wireless/mwifiex/cfg80211.c
-index 462c710..01dcb1a 100644
---- a/drivers/net/wireless/mwifiex/cfg80211.c
-+++ b/drivers/net/wireless/mwifiex/cfg80211.c
-@@ -1177,11 +1177,11 @@ struct net_device *mwifiex_add_virtual_intf(struct wiphy *wiphy,
- void *mdev_priv;
-
- if (!priv)
-- return NULL;
-+ return ERR_PTR(-EFAULT);
-
- adapter = priv->adapter;
- if (!adapter)
-- return NULL;
-+ return ERR_PTR(-EFAULT);
-
- switch (type) {
- case NL80211_IFTYPE_UNSPECIFIED:
-@@ -1190,7 +1190,7 @@ struct net_device *mwifiex_add_virtual_intf(struct wiphy *wiphy,
- if (priv->bss_mode) {
- wiphy_err(wiphy, "cannot create multiple"
- " station/adhoc interfaces\n");
-- return NULL;
-+ return ERR_PTR(-EINVAL);
- }
-
- if (type == NL80211_IFTYPE_UNSPECIFIED)
-@@ -1208,14 +1208,15 @@ struct net_device *mwifiex_add_virtual_intf(struct wiphy *wiphy,
- break;
- default:
- wiphy_err(wiphy, "type not supported\n");
-- return NULL;
-+ return ERR_PTR(-EINVAL);
- }
-
- dev = alloc_netdev_mq(sizeof(struct mwifiex_private *), name,
- ether_setup, 1);
- if (!dev) {
- wiphy_err(wiphy, "no memory available for netdevice\n");
-- goto error;
-+ priv->bss_mode = NL80211_IFTYPE_UNSPECIFIED;
-+ return ERR_PTR(-ENOMEM);
- }
-
- dev_net_set(dev, wiphy_net(wiphy));
-@@ -1240,7 +1241,9 @@ struct net_device *mwifiex_add_virtual_intf(struct wiphy *wiphy,
- /* Register network device */
- if (register_netdevice(dev)) {
- wiphy_err(wiphy, "cannot register virtual network device\n");
-- goto error;
-+ free_netdev(dev);
-+ priv->bss_mode = NL80211_IFTYPE_UNSPECIFIED;
-+ return ERR_PTR(-EFAULT);
- }
-
- sema_init(&priv->async_sem, 1);
-@@ -1252,12 +1255,6 @@ struct net_device *mwifiex_add_virtual_intf(struct wiphy *wiphy,
- mwifiex_dev_debugfs_init(priv);
- #endif
- return dev;
--error:
-- if (dev && (dev->reg_state == NETREG_UNREGISTERED))
-- free_netdev(dev);
-- priv->bss_mode = NL80211_IFTYPE_UNSPECIFIED;
--
-- return NULL;
- }
- EXPORT_SYMBOL_GPL(mwifiex_add_virtual_intf);
-
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0025-udf-Use-ret-instead-of-abusing-i-in-udf_load_logical.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0025-udf-Use-ret-instead-of-abusing-i-in-udf_load_logical.patch
deleted file mode 100644
index 0d5c179..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0025-udf-Use-ret-instead-of-abusing-i-in-udf_load_logical.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 4d7257d8f5c970ce0f699d893f6050fd8bd11f3c Mon Sep 17 00:00:00 2001
-From: Jan Kara <jack at suse.cz>
-Date: Wed, 27 Jun 2012 20:08:44 +0200
-Subject: [PATCH 25/49] udf: Use 'ret' instead of abusing 'i' in
- udf_load_logicalvol()
-
-commit cb14d340ef1737c24125dd663eff77734a482d47 upstream.
-
-Signed-off-by: Jan Kara <jack at suse.cz>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/udf/super.c | 6 ++----
- 1 file changed, 2 insertions(+), 4 deletions(-)
-
-diff --git a/fs/udf/super.c b/fs/udf/super.c
-index 87cb24a..eea2bfe 100644
---- a/fs/udf/super.c
-+++ b/fs/udf/super.c
-@@ -1235,11 +1235,9 @@ static int udf_load_logicalvol(struct super_block *sb, sector_t block,
- BUG_ON(ident != TAG_IDENT_LVD);
- lvd = (struct logicalVolDesc *)bh->b_data;
-
-- i = udf_sb_alloc_partition_maps(sb, le32_to_cpu(lvd->numPartitionMaps));
-- if (i != 0) {
-- ret = i;
-+ ret = udf_sb_alloc_partition_maps(sb, le32_to_cpu(lvd->numPartitionMaps));
-+ if (ret)
- goto out_bh;
-- }
-
- for (i = 0, offset = 0;
- i < sbi->s_partitions && offset < le32_to_cpu(lvd->mapTableLength);
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0026-udf-Avoid-run-away-loop-when-partition-table-length-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0026-udf-Avoid-run-away-loop-when-partition-table-length-.patch
deleted file mode 100644
index b9fb57a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0026-udf-Avoid-run-away-loop-when-partition-table-length-.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From 0a9d08974ed753d12541081ae062e5f69298d791 Mon Sep 17 00:00:00 2001
-From: Jan Kara <jack at suse.cz>
-Date: Wed, 27 Jun 2012 20:20:22 +0200
-Subject: [PATCH 26/49] udf: Avoid run away loop when partition table length
- is corrupted
-
-commit adee11b2085bee90bd8f4f52123ffb07882d6256 upstream.
-
-Check provided length of partition table so that (possibly maliciously)
-corrupted partition table cannot cause accessing data beyond current buffer.
-
-Signed-off-by: Jan Kara <jack at suse.cz>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/udf/super.c | 10 +++++++++-
- 1 file changed, 9 insertions(+), 1 deletion(-)
-
-diff --git a/fs/udf/super.c b/fs/udf/super.c
-index eea2bfe..800e839 100644
---- a/fs/udf/super.c
-+++ b/fs/udf/super.c
-@@ -1227,6 +1227,7 @@ static int udf_load_logicalvol(struct super_block *sb, sector_t block,
- struct genericPartitionMap *gpm;
- uint16_t ident;
- struct buffer_head *bh;
-+ unsigned int table_len;
- int ret = 0;
-
- bh = udf_read_tagged(sb, block, block, &ident);
-@@ -1234,13 +1235,20 @@ static int udf_load_logicalvol(struct super_block *sb, sector_t block,
- return 1;
- BUG_ON(ident != TAG_IDENT_LVD);
- lvd = (struct logicalVolDesc *)bh->b_data;
-+ table_len = le32_to_cpu(lvd->mapTableLength);
-+ if (sizeof(*lvd) + table_len > sb->s_blocksize) {
-+ udf_err(sb, "error loading logical volume descriptor: "
-+ "Partition table too long (%u > %lu)\n", table_len,
-+ sb->s_blocksize - sizeof(*lvd));
-+ goto out_bh;
-+ }
-
- ret = udf_sb_alloc_partition_maps(sb, le32_to_cpu(lvd->numPartitionMaps));
- if (ret)
- goto out_bh;
-
- for (i = 0, offset = 0;
-- i < sbi->s_partitions && offset < le32_to_cpu(lvd->mapTableLength);
-+ i < sbi->s_partitions && offset < table_len;
- i++, offset += gpm->partitionMapLength) {
- struct udf_part_map *map = &sbi->s_partmaps[i];
- gpm = (struct genericPartitionMap *)
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0027-udf-Fortify-loading-of-sparing-table.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0027-udf-Fortify-loading-of-sparing-table.patch
deleted file mode 100644
index 2c4b706..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0027-udf-Fortify-loading-of-sparing-table.patch
+++ /dev/null
@@ -1,134 +0,0 @@
-From 9db7244bafd8f99123cf5fe816e4961115831ca9 Mon Sep 17 00:00:00 2001
-From: Jan Kara <jack at suse.cz>
-Date: Wed, 27 Jun 2012 21:23:07 +0200
-Subject: [PATCH 27/49] udf: Fortify loading of sparing table
-
-commit 1df2ae31c724e57be9d7ac00d78db8a5dabdd050 upstream.
-
-Add sanity checks when loading sparing table from disk to avoid accessing
-unallocated memory or writing to it.
-
-Signed-off-by: Jan Kara <jack at suse.cz>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/udf/super.c | 86 ++++++++++++++++++++++++++++++++++----------------------
- 1 file changed, 53 insertions(+), 33 deletions(-)
-
-diff --git a/fs/udf/super.c b/fs/udf/super.c
-index 800e839..270e135 100644
---- a/fs/udf/super.c
-+++ b/fs/udf/super.c
-@@ -56,6 +56,7 @@
- #include <linux/seq_file.h>
- #include <linux/bitmap.h>
- #include <linux/crc-itu-t.h>
-+#include <linux/log2.h>
- #include <asm/byteorder.h>
-
- #include "udf_sb.h"
-@@ -1217,11 +1218,59 @@ out_bh:
- return ret;
- }
-
-+static int udf_load_sparable_map(struct super_block *sb,
-+ struct udf_part_map *map,
-+ struct sparablePartitionMap *spm)
-+{
-+ uint32_t loc;
-+ uint16_t ident;
-+ struct sparingTable *st;
-+ struct udf_sparing_data *sdata = &map->s_type_specific.s_sparing;
-+ int i;
-+ struct buffer_head *bh;
-+
-+ map->s_partition_type = UDF_SPARABLE_MAP15;
-+ sdata->s_packet_len = le16_to_cpu(spm->packetLength);
-+ if (!is_power_of_2(sdata->s_packet_len)) {
-+ udf_err(sb, "error loading logical volume descriptor: "
-+ "Invalid packet length %u\n",
-+ (unsigned)sdata->s_packet_len);
-+ return -EIO;
-+ }
-+ if (spm->numSparingTables > 4) {
-+ udf_err(sb, "error loading logical volume descriptor: "
-+ "Too many sparing tables (%d)\n",
-+ (int)spm->numSparingTables);
-+ return -EIO;
-+ }
-+
-+ for (i = 0; i < spm->numSparingTables; i++) {
-+ loc = le32_to_cpu(spm->locSparingTable[i]);
-+ bh = udf_read_tagged(sb, loc, loc, &ident);
-+ if (!bh)
-+ continue;
-+
-+ st = (struct sparingTable *)bh->b_data;
-+ if (ident != 0 ||
-+ strncmp(st->sparingIdent.ident, UDF_ID_SPARING,
-+ strlen(UDF_ID_SPARING)) ||
-+ sizeof(*st) + le16_to_cpu(st->reallocationTableLen) >
-+ sb->s_blocksize) {
-+ brelse(bh);
-+ continue;
-+ }
-+
-+ sdata->s_spar_map[i] = bh;
-+ }
-+ map->s_partition_func = udf_get_pblock_spar15;
-+ return 0;
-+}
-+
- static int udf_load_logicalvol(struct super_block *sb, sector_t block,
- struct kernel_lb_addr *fileset)
- {
- struct logicalVolDesc *lvd;
-- int i, j, offset;
-+ int i, offset;
- uint8_t type;
- struct udf_sb_info *sbi = UDF_SB(sb);
- struct genericPartitionMap *gpm;
-@@ -1283,38 +1332,9 @@ static int udf_load_logicalvol(struct super_block *sb, sector_t block,
- } else if (!strncmp(upm2->partIdent.ident,
- UDF_ID_SPARABLE,
- strlen(UDF_ID_SPARABLE))) {
-- uint32_t loc;
-- struct sparingTable *st;
-- struct sparablePartitionMap *spm =
-- (struct sparablePartitionMap *)gpm;
--
-- map->s_partition_type = UDF_SPARABLE_MAP15;
-- map->s_type_specific.s_sparing.s_packet_len =
-- le16_to_cpu(spm->packetLength);
-- for (j = 0; j < spm->numSparingTables; j++) {
-- struct buffer_head *bh2;
--
-- loc = le32_to_cpu(
-- spm->locSparingTable[j]);
-- bh2 = udf_read_tagged(sb, loc, loc,
-- &ident);
-- map->s_type_specific.s_sparing.
-- s_spar_map[j] = bh2;
--
-- if (bh2 == NULL)
-- continue;
--
-- st = (struct sparingTable *)bh2->b_data;
-- if (ident != 0 || strncmp(
-- st->sparingIdent.ident,
-- UDF_ID_SPARING,
-- strlen(UDF_ID_SPARING))) {
-- brelse(bh2);
-- map->s_type_specific.s_sparing.
-- s_spar_map[j] = NULL;
-- }
-- }
-- map->s_partition_func = udf_get_pblock_spar15;
-+ if (udf_load_sparable_map(sb, map,
-+ (struct sparablePartitionMap *)gpm) < 0)
-+ goto out_bh;
- } else if (!strncmp(upm2->partIdent.ident,
- UDF_ID_METADATA,
- strlen(UDF_ID_METADATA))) {
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0028-ARM-fix-rcu-stalls-on-SMP-platforms.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0028-ARM-fix-rcu-stalls-on-SMP-platforms.patch
deleted file mode 100644
index 4187adc..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0028-ARM-fix-rcu-stalls-on-SMP-platforms.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-From cb4aa2ef6f748fa3a3e6cd3889153c191e63d48e Mon Sep 17 00:00:00 2001
-From: Russell King <rmk+kernel at arm.linux.org.uk>
-Date: Thu, 19 Jan 2012 15:20:58 +0000
-Subject: [PATCH 28/49] ARM: fix rcu stalls on SMP platforms
-
-commit 7deabca0acfe02b8e18f59a4c95676012f49a304 upstream.
-
-We can stall RCU processing on SMP platforms if a CPU sits in its idle
-loop for a long time. This happens because we don't call irq_enter()
-and irq_exit() around generic_smp_call_function_interrupt() and
-friends. Add the necessary calls, and remove the one from within
-ipi_timer(), so that they're all in a common place.
-
-Signed-off-by: Russell King <rmk+kernel at arm.linux.org.uk>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/arm/kernel/smp.c | 10 ++++++++--
- 1 file changed, 8 insertions(+), 2 deletions(-)
-
-diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c
-index e10e59a..1d1710e 100644
---- a/arch/arm/kernel/smp.c
-+++ b/arch/arm/kernel/smp.c
-@@ -471,9 +471,7 @@ static DEFINE_PER_CPU(struct clock_event_device, percpu_clockevent);
- static void ipi_timer(void)
- {
- struct clock_event_device *evt = &__get_cpu_var(percpu_clockevent);
-- irq_enter();
- evt->event_handler(evt);
-- irq_exit();
- }
-
- #ifdef CONFIG_GENERIC_CLOCKEVENTS_BROADCAST
-@@ -572,7 +570,9 @@ void handle_IPI(int ipinr, struct pt_regs *regs)
-
- switch (ipinr) {
- case IPI_TIMER:
-+ irq_enter();
- ipi_timer();
-+ irq_exit();
- break;
-
- case IPI_RESCHEDULE:
-@@ -580,15 +580,21 @@ void handle_IPI(int ipinr, struct pt_regs *regs)
- break;
-
- case IPI_CALL_FUNC:
-+ irq_enter();
- generic_smp_call_function_interrupt();
-+ irq_exit();
- break;
-
- case IPI_CALL_FUNC_SINGLE:
-+ irq_enter();
- generic_smp_call_function_single_interrupt();
-+ irq_exit();
- break;
-
- case IPI_CPU_STOP:
-+ irq_enter();
- ipi_cpu_stop(cpu);
-+ irq_exit();
- break;
-
- default:
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0029-net-sock-validate-data_len-before-allocating-skb-in-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0029-net-sock-validate-data_len-before-allocating-skb-in-.patch
deleted file mode 100644
index 7ede727..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0029-net-sock-validate-data_len-before-allocating-skb-in-.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From 9e88f1e8bf3f7dbc0cb410a09c003180052bd7d4 Mon Sep 17 00:00:00 2001
-From: Jason Wang <jasowang at redhat.com>
-Date: Wed, 30 May 2012 21:18:10 +0000
-Subject: [PATCH 29/49] net: sock: validate data_len before allocating skb in
- sock_alloc_send_pskb()
-
-[ Upstream commit cc9b17ad29ecaa20bfe426a8d4dbfb94b13ff1cc ]
-
-We need to validate the number of pages consumed by data_len, otherwise frags
-array could be overflowed by userspace. So this patch validate data_len and
-return -EMSGSIZE when data_len may occupies more frags than MAX_SKB_FRAGS.
-
-Signed-off-by: Jason Wang <jasowang at redhat.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/core/sock.c | 7 +++++--
- 1 file changed, 5 insertions(+), 2 deletions(-)
-
-diff --git a/net/core/sock.c b/net/core/sock.c
-index b23f174..8d095b9 100644
---- a/net/core/sock.c
-+++ b/net/core/sock.c
-@@ -1497,6 +1497,11 @@ struct sk_buff *sock_alloc_send_pskb(struct sock *sk, unsigned long header_len,
- gfp_t gfp_mask;
- long timeo;
- int err;
-+ int npages = (data_len + (PAGE_SIZE - 1)) >> PAGE_SHIFT;
-+
-+ err = -EMSGSIZE;
-+ if (npages > MAX_SKB_FRAGS)
-+ goto failure;
-
- gfp_mask = sk->sk_allocation;
- if (gfp_mask & __GFP_WAIT)
-@@ -1515,14 +1520,12 @@ struct sk_buff *sock_alloc_send_pskb(struct sock *sk, unsigned long header_len,
- if (atomic_read(&sk->sk_wmem_alloc) < sk->sk_sndbuf) {
- skb = alloc_skb(header_len, gfp_mask);
- if (skb) {
-- int npages;
- int i;
-
- /* No pages, we're done... */
- if (!data_len)
- break;
-
-- npages = (data_len + (PAGE_SIZE - 1)) >> PAGE_SHIFT;
- skb->truesize += data_len;
- skb_shinfo(skb)->nr_frags = npages;
- for (i = 0; i < npages; i++) {
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0030-cipso-handle-CIPSO-options-correctly-when-NetLabel-i.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0030-cipso-handle-CIPSO-options-correctly-when-NetLabel-i.patch
deleted file mode 100644
index 8310ad9..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0030-cipso-handle-CIPSO-options-correctly-when-NetLabel-i.patch
+++ /dev/null
@@ -1,80 +0,0 @@
-From e3e2beb00731e994722f01a1c284e3bcc69264ba Mon Sep 17 00:00:00 2001
-From: Paul Moore <pmoore at redhat.com>
-Date: Fri, 1 Jun 2012 05:54:56 +0000
-Subject: [PATCH 30/49] cipso: handle CIPSO options correctly when NetLabel is
- disabled
-
-[ Upstream commit 20e2a86485967c385d7c7befc1646e4d1d39362e ]
-
-When NetLabel is not enabled, e.g. CONFIG_NETLABEL=n, and the system
-receives a CIPSO tagged packet it is dropped (cipso_v4_validate()
-returns non-zero). In most cases this is the correct and desired
-behavior, however, in the case where we are simply forwarding the
-traffic, e.g. acting as a network bridge, this becomes a problem.
-
-This patch fixes the forwarding problem by providing the basic CIPSO
-validation code directly in ip_options_compile() without the need for
-the NetLabel or CIPSO code. The new validation code can not perform
-any of the CIPSO option label/value verification that
-cipso_v4_validate() does, but it can verify the basic CIPSO option
-format.
-
-The behavior when NetLabel is enabled is unchanged.
-
-Signed-off-by: Paul Moore <pmoore at redhat.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- include/net/cipso_ipv4.h | 29 ++++++++++++++++++++++++++++-
- 1 file changed, 28 insertions(+), 1 deletion(-)
-
-diff --git a/include/net/cipso_ipv4.h b/include/net/cipso_ipv4.h
-index 9808877..a7a683e 100644
---- a/include/net/cipso_ipv4.h
-+++ b/include/net/cipso_ipv4.h
-@@ -42,6 +42,7 @@
- #include <net/netlabel.h>
- #include <net/request_sock.h>
- #include <linux/atomic.h>
-+#include <asm/unaligned.h>
-
- /* known doi values */
- #define CIPSO_V4_DOI_UNKNOWN 0x00000000
-@@ -285,7 +286,33 @@ static inline int cipso_v4_skbuff_getattr(const struct sk_buff *skb,
- static inline int cipso_v4_validate(const struct sk_buff *skb,
- unsigned char **option)
- {
-- return -ENOSYS;
-+ unsigned char *opt = *option;
-+ unsigned char err_offset = 0;
-+ u8 opt_len = opt[1];
-+ u8 opt_iter;
-+
-+ if (opt_len < 8) {
-+ err_offset = 1;
-+ goto out;
-+ }
-+
-+ if (get_unaligned_be32(&opt[2]) == 0) {
-+ err_offset = 2;
-+ goto out;
-+ }
-+
-+ for (opt_iter = 6; opt_iter < opt_len;) {
-+ if (opt[opt_iter + 1] > (opt_len - opt_iter)) {
-+ err_offset = opt_iter + 1;
-+ goto out;
-+ }
-+ opt_iter += opt[opt_iter + 1];
-+ }
-+
-+out:
-+ *option = opt + err_offset;
-+ return err_offset;
-+
- }
- #endif /* CONFIG_NETLABEL */
-
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0031-net-l2tp_eth-fix-kernel-panic-on-rmmod-l2tp_eth.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0031-net-l2tp_eth-fix-kernel-panic-on-rmmod-l2tp_eth.patch
deleted file mode 100644
index 27a349b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0031-net-l2tp_eth-fix-kernel-panic-on-rmmod-l2tp_eth.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From b5ad3a0c0628afa77ab9de116e252fbac91f6db2 Mon Sep 17 00:00:00 2001
-From: Eric Dumazet <edumazet at google.com>
-Date: Thu, 7 Jun 2012 00:07:20 +0000
-Subject: [PATCH 31/49] net: l2tp_eth: fix kernel panic on rmmod l2tp_eth
-
-[ Upstream commit a06998b88b1651c5f71c0e35f528bf2057188ead ]
-
-We must prevent module unloading if some devices are still attached to
-l2tp_eth driver.
-
-Signed-off-by: Eric Dumazet <edumazet at google.com>
-Reported-by: Denys Fedoryshchenko <denys at visp.net.lb>
-Tested-by: Denys Fedoryshchenko <denys at visp.net.lb>
-Cc: James Chapman <jchapman at katalix.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/l2tp/l2tp_eth.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/net/l2tp/l2tp_eth.c b/net/l2tp/l2tp_eth.c
-index d2726a7..3c55f63 100644
---- a/net/l2tp/l2tp_eth.c
-+++ b/net/l2tp/l2tp_eth.c
-@@ -167,6 +167,7 @@ static void l2tp_eth_delete(struct l2tp_session *session)
- if (dev) {
- unregister_netdev(dev);
- spriv->dev = NULL;
-+ module_put(THIS_MODULE);
- }
- }
- }
-@@ -254,6 +255,7 @@ static int l2tp_eth_create(struct net *net, u32 tunnel_id, u32 session_id, u32 p
- if (rc < 0)
- goto out_del_dev;
-
-+ __module_get(THIS_MODULE);
- /* Must be done after register_netdev() */
- strlcpy(session->ifname, dev->name, IFNAMSIZ);
-
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0032-l2tp-fix-a-race-in-l2tp_ip_sendmsg.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0032-l2tp-fix-a-race-in-l2tp_ip_sendmsg.patch
deleted file mode 100644
index 60f8a9d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0032-l2tp-fix-a-race-in-l2tp_ip_sendmsg.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From a2ee8c14e43a7432b50a050cd07c06d43caa9314 Mon Sep 17 00:00:00 2001
-From: Eric Dumazet <edumazet at google.com>
-Date: Fri, 8 Jun 2012 06:25:00 +0000
-Subject: [PATCH 32/49] l2tp: fix a race in l2tp_ip_sendmsg()
-
-[ Upstream commit 4399a4df98a63e30fd16e9d0cecc46ea92269e8f ]
-
-Commit 081b1b1bb27f (l2tp: fix l2tp_ip_sendmsg() route handling) added
-a race, in case IP route cache is disabled.
-
-In this case, we should not do the dst_release(&rt->dst), since it'll
-free the dst immediately, instead of waiting a RCU grace period.
-
-Signed-off-by: Eric Dumazet <edumazet at google.com>
-Cc: James Chapman <jchapman at katalix.com>
-Cc: Denys Fedoryshchenko <denys at visp.net.lb>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/l2tp/l2tp_ip.c | 9 ++++++---
- 1 file changed, 6 insertions(+), 3 deletions(-)
-
-diff --git a/net/l2tp/l2tp_ip.c b/net/l2tp/l2tp_ip.c
-index 2fbbe1f..6c7e609 100644
---- a/net/l2tp/l2tp_ip.c
-+++ b/net/l2tp/l2tp_ip.c
-@@ -515,10 +515,12 @@ static int l2tp_ip_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *m
- sk->sk_bound_dev_if);
- if (IS_ERR(rt))
- goto no_route;
-- if (connected)
-+ if (connected) {
- sk_setup_caps(sk, &rt->dst);
-- else
-- dst_release(&rt->dst); /* safe since we hold rcu_read_lock */
-+ } else {
-+ skb_dst_set(skb, &rt->dst);
-+ goto xmit;
-+ }
- }
-
- /* We dont need to clone dst here, it is guaranteed to not disappear.
-@@ -526,6 +528,7 @@ static int l2tp_ip_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *m
- */
- skb_dst_set_noref(skb, &rt->dst);
-
-+xmit:
- /* Queue the packet to IP for output */
- rc = ip_queue_xmit(skb, &inet->cork.fl);
- rcu_read_unlock();
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0033-sky2-fix-checksum-bit-management-on-some-chips.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0033-sky2-fix-checksum-bit-management-on-some-chips.patch
deleted file mode 100644
index f1d1fb6..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0033-sky2-fix-checksum-bit-management-on-some-chips.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From f13b66c5fac7aa65e68a960806d6c5e97df723eb Mon Sep 17 00:00:00 2001
-From: stephen hemminger <shemminger at vyatta.com>
-Date: Wed, 6 Jun 2012 10:01:30 +0000
-Subject: [PATCH 33/49] sky2: fix checksum bit management on some chips
-
-[ Upstream commit 5ff0feac88ced864f44adb145142269196fa79d9 ]
-
-The newer flavors of Yukon II use a different method for receive
-checksum offload. This is indicated in the driver by the SKY2_HW_NEW_LE
-flag. On these newer chips, the BMU_ENA_RX_CHKSUM should not be set.
-
-The driver would get incorrectly toggle the bit, enabling the old
-checksum logic on these chips and cause a BUG_ON() assertion. If
-receive checksum was toggled via ethtool.
-
-Reported-by: Kirill Smelkov <kirr at mns.spb.ru>
-Signed-off-by: Stephen Hemminger <shemminger at vyatta.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/ethernet/marvell/sky2.c | 10 ++++++----
- 1 file changed, 6 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/net/ethernet/marvell/sky2.c b/drivers/net/ethernet/marvell/sky2.c
-index 65c51ff..11ddd838 100644
---- a/drivers/net/ethernet/marvell/sky2.c
-+++ b/drivers/net/ethernet/marvell/sky2.c
-@@ -4361,10 +4361,12 @@ static int sky2_set_features(struct net_device *dev, u32 features)
- struct sky2_port *sky2 = netdev_priv(dev);
- u32 changed = dev->features ^ features;
-
-- if (changed & NETIF_F_RXCSUM) {
-- u32 on = features & NETIF_F_RXCSUM;
-- sky2_write32(sky2->hw, Q_ADDR(rxqaddr[sky2->port], Q_CSR),
-- on ? BMU_ENA_RX_CHKSUM : BMU_DIS_RX_CHKSUM);
-+ if ((changed & NETIF_F_RXCSUM) &&
-+ !(sky2->hw->flags & SKY2_HW_NEW_LE)) {
-+ sky2_write32(sky2->hw,
-+ Q_ADDR(rxqaddr[sky2->port], Q_CSR),
-+ (features & NETIF_F_RXCSUM)
-+ ? BMU_ENA_RX_CHKSUM : BMU_DIS_RX_CHKSUM);
- }
-
- if (changed & NETIF_F_RXHASH)
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0034-be2net-fix-a-race-in-be_xmit.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0034-be2net-fix-a-race-in-be_xmit.patch
deleted file mode 100644
index c67c72a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0034-be2net-fix-a-race-in-be_xmit.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From 5588c981e9bc21ca9bd050a8e15feb4adb1215b9 Mon Sep 17 00:00:00 2001
-From: Eric Dumazet <edumazet at google.com>
-Date: Thu, 7 Jun 2012 22:59:59 +0000
-Subject: [PATCH 34/49] be2net: fix a race in be_xmit()
-
-[ Upstream commit cd8f76c0a0c6fce0b2cf23c9bd0123f91453f46d ]
-
-As soon as hardware is notified of a transmit, we no longer can assume
-skb can be dereferenced, as TX completion might have freed the packet.
-
-Signed-off-by: Eric Dumazet <edumazet at google.com>
-Cc: Sathya Perla <sathya.perla at emulex.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/ethernet/emulex/benet/be_main.c | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c
-index bf266a0..36c7c4e 100644
---- a/drivers/net/ethernet/emulex/benet/be_main.c
-+++ b/drivers/net/ethernet/emulex/benet/be_main.c
-@@ -696,6 +696,8 @@ static netdev_tx_t be_xmit(struct sk_buff *skb,
-
- copied = make_tx_wrbs(adapter, txq, skb, wrb_cnt, dummy_wrb);
- if (copied) {
-+ int gso_segs = skb_shinfo(skb)->gso_segs;
-+
- /* record the sent skb in the sent_skb table */
- BUG_ON(txo->sent_skb_list[start]);
- txo->sent_skb_list[start] = skb;
-@@ -713,8 +715,7 @@ static netdev_tx_t be_xmit(struct sk_buff *skb,
-
- be_txq_notify(adapter, txq->id, wrb_cnt);
-
-- be_tx_stats_update(txo, wrb_cnt, copied,
-- skb_shinfo(skb)->gso_segs, stopped);
-+ be_tx_stats_update(txo, wrb_cnt, copied, gso_segs, stopped);
- } else {
- txq->head = start;
- dev_kfree_skb_any(skb);
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0035-dummy-fix-rcu_sched-self-detected-stalls.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0035-dummy-fix-rcu_sched-self-detected-stalls.patch
deleted file mode 100644
index 33f9ffa..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0035-dummy-fix-rcu_sched-self-detected-stalls.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From 6e4b4fb46ccc49cacb3258764f2414ecd4fb27a4 Mon Sep 17 00:00:00 2001
-From: Eric Dumazet <edumazet at google.com>
-Date: Sun, 10 Jun 2012 21:11:57 +0000
-Subject: [PATCH 35/49] dummy: fix rcu_sched self-detected stalls
-
-[ Upstream commit 16b0dc29c1af9df341428f4c49ada4f626258082 ]
-
-Trying to "modprobe dummy numdummies=30000" triggers :
-
-INFO: rcu_sched self-detected stall on CPU { 8} (t=60000 jiffies)
-
-After this splat, RTNL is locked and reboot is needed.
-
-We must call cond_resched() to avoid this, even holding RTNL.
-
-Signed-off-by: Eric Dumazet <edumazet at google.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/dummy.c | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/net/dummy.c b/drivers/net/dummy.c
-index eeac9ca..68fe73c 100644
---- a/drivers/net/dummy.c
-+++ b/drivers/net/dummy.c
-@@ -37,6 +37,7 @@
- #include <linux/rtnetlink.h>
- #include <net/rtnetlink.h>
- #include <linux/u64_stats_sync.h>
-+#include <linux/sched.h>
-
- static int numdummies = 1;
-
-@@ -186,8 +187,10 @@ static int __init dummy_init_module(void)
- rtnl_lock();
- err = __rtnl_link_register(&dummy_link_ops);
-
-- for (i = 0; i < numdummies && !err; i++)
-+ for (i = 0; i < numdummies && !err; i++) {
- err = dummy_init_one();
-+ cond_resched();
-+ }
- if (err < 0)
- __rtnl_link_unregister(&dummy_link_ops);
- rtnl_unlock();
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0036-bonding-Fix-corrupted-queue_mapping.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0036-bonding-Fix-corrupted-queue_mapping.patch
deleted file mode 100644
index 6f9681c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0036-bonding-Fix-corrupted-queue_mapping.patch
+++ /dev/null
@@ -1,117 +0,0 @@
-From 218ae95441a945d2a474b2277156749f416b8859 Mon Sep 17 00:00:00 2001
-From: Eric Dumazet <edumazet at google.com>
-Date: Tue, 12 Jun 2012 06:03:51 +0000
-Subject: [PATCH 36/49] bonding: Fix corrupted queue_mapping
-
-[ Upstream commit 5ee31c6898ea5537fcea160999d60dc63bc0c305 ]
-
-In the transmit path of the bonding driver, skb->cb is used to
-stash the skb->queue_mapping so that the bonding device can set its
-own queue mapping. This value becomes corrupted since the skb->cb is
-also used in __dev_xmit_skb.
-
-When transmitting through bonding driver, bond_select_queue is
-called from dev_queue_xmit. In bond_select_queue the original
-skb->queue_mapping is copied into skb->cb (via bond_queue_mapping)
-and skb->queue_mapping is overwritten with the bond driver queue.
-
-Subsequently in dev_queue_xmit, __dev_xmit_skb is called which writes
-the packet length into skb->cb, thereby overwriting the stashed
-queue mappping. In bond_dev_queue_xmit (called from hard_start_xmit),
-the queue mapping for the skb is set to the stashed value which is now
-the skb length and hence is an invalid queue for the slave device.
-
-If we want to save skb->queue_mapping into skb->cb[], best place is to
-add a field in struct qdisc_skb_cb, to make sure it wont conflict with
-other layers (eg : Qdiscc, Infiniband...)
-
-This patchs also makes sure (struct qdisc_skb_cb)->data is aligned on 8
-bytes :
-
-netem qdisc for example assumes it can store an u64 in it, without
-misalignment penalty.
-
-Note : we only have 20 bytes left in (struct qdisc_skb_cb)->data[].
-The largest user is CHOKe and it fills it.
-
-Based on a previous patch from Tom Herbert.
-
-Signed-off-by: Eric Dumazet <edumazet at google.com>
-Reported-by: Tom Herbert <therbert at google.com>
-Cc: John Fastabend <john.r.fastabend at intel.com>
-Cc: Roland Dreier <roland at kernel.org>
-Acked-by: Neil Horman <nhorman at tuxdriver.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/bonding/bond_main.c | 9 +++++----
- include/net/sch_generic.h | 7 +++++--
- 2 files changed, 10 insertions(+), 6 deletions(-)
-
-diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
-index f65e0b9..1a88e38 100644
---- a/drivers/net/bonding/bond_main.c
-+++ b/drivers/net/bonding/bond_main.c
-@@ -77,6 +77,7 @@
- #include <net/route.h>
- #include <net/net_namespace.h>
- #include <net/netns/generic.h>
-+#include <net/pkt_sched.h>
- #include "bonding.h"
- #include "bond_3ad.h"
- #include "bond_alb.h"
-@@ -382,8 +383,6 @@ struct vlan_entry *bond_next_vlan(struct bonding *bond, struct vlan_entry *curr)
- return next;
- }
-
--#define bond_queue_mapping(skb) (*(u16 *)((skb)->cb))
--
- /**
- * bond_dev_queue_xmit - Prepare skb for xmit.
- *
-@@ -396,7 +395,9 @@ int bond_dev_queue_xmit(struct bonding *bond, struct sk_buff *skb,
- {
- skb->dev = slave_dev;
-
-- skb->queue_mapping = bond_queue_mapping(skb);
-+ BUILD_BUG_ON(sizeof(skb->queue_mapping) !=
-+ sizeof(qdisc_skb_cb(skb)->bond_queue_mapping));
-+ skb->queue_mapping = qdisc_skb_cb(skb)->bond_queue_mapping;
-
- if (unlikely(netpoll_tx_running(slave_dev)))
- bond_netpoll_send_skb(bond_get_slave_by_dev(bond, slave_dev), skb);
-@@ -4151,7 +4152,7 @@ static u16 bond_select_queue(struct net_device *dev, struct sk_buff *skb)
- /*
- * Save the original txq to restore before passing to the driver
- */
-- bond_queue_mapping(skb) = skb->queue_mapping;
-+ qdisc_skb_cb(skb)->bond_queue_mapping = skb->queue_mapping;
-
- if (unlikely(txq >= dev->real_num_tx_queues)) {
- do {
-diff --git a/include/net/sch_generic.h b/include/net/sch_generic.h
-index 55ce96b..9d7d54a 100644
---- a/include/net/sch_generic.h
-+++ b/include/net/sch_generic.h
-@@ -220,13 +220,16 @@ struct tcf_proto {
-
- struct qdisc_skb_cb {
- unsigned int pkt_len;
-- unsigned char data[24];
-+ u16 bond_queue_mapping;
-+ u16 _pad;
-+ unsigned char data[20];
- };
-
- static inline void qdisc_cb_private_validate(const struct sk_buff *skb, int sz)
- {
- struct qdisc_skb_cb *qcb;
-- BUILD_BUG_ON(sizeof(skb->cb) < sizeof(unsigned int) + sz);
-+
-+ BUILD_BUG_ON(sizeof(skb->cb) < offsetof(struct qdisc_skb_cb, data) + sz);
- BUILD_BUG_ON(sizeof(qcb->data) < sz);
- }
-
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0037-ethtool-allow-ETHTOOL_GSSET_INFO-for-users.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0037-ethtool-allow-ETHTOOL_GSSET_INFO-for-users.patch
deleted file mode 100644
index 6e02ce1..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0037-ethtool-allow-ETHTOOL_GSSET_INFO-for-users.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 7d1a3b73b1d85f034aeb9e5c1e4eb44ce56658be Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Micha=C5=82=20Miros=C5=82aw?= <mirq-linux at rere.qmqm.pl>
-Date: Sun, 22 Jan 2012 00:20:40 +0000
-Subject: [PATCH 37/49] ethtool: allow ETHTOOL_GSSET_INFO for users
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-[ Upstream commit f80400a26a2e8bff541de12834a1134358bb6642 ]
-
-Allow ETHTOOL_GSSET_INFO ethtool ioctl() for unprivileged users.
-ETHTOOL_GSTRINGS is already allowed, but is unusable without this one.
-
-Signed-off-by: Michał Mirosław <mirq-linux at rere.qmqm.pl>
-Acked-by: Ben Hutchings <bhutchings at solarflare.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/core/ethtool.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/net/core/ethtool.c b/net/core/ethtool.c
-index 2b587ec..2367246 100644
---- a/net/core/ethtool.c
-+++ b/net/core/ethtool.c
-@@ -1672,6 +1672,7 @@ int dev_ethtool(struct net *net, struct ifreq *ifr)
- case ETHTOOL_GRXCSUM:
- case ETHTOOL_GTXCSUM:
- case ETHTOOL_GSG:
-+ case ETHTOOL_GSSET_INFO:
- case ETHTOOL_GSTRINGS:
- case ETHTOOL_GTSO:
- case ETHTOOL_GPERMADDR:
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0038-netpoll-fix-netpoll_send_udp-bugs.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0038-netpoll-fix-netpoll_send_udp-bugs.patch
deleted file mode 100644
index e906246..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0038-netpoll-fix-netpoll_send_udp-bugs.patch
+++ /dev/null
@@ -1,77 +0,0 @@
-From 1757946f8c246a1b46bf27d40716d4f78145f4a1 Mon Sep 17 00:00:00 2001
-From: Eric Dumazet <edumazet at google.com>
-Date: Tue, 12 Jun 2012 19:30:21 +0000
-Subject: [PATCH 38/49] netpoll: fix netpoll_send_udp() bugs
-
-[ Upstream commit 954fba0274058d27c7c07b5ea07c41b3b7477894 ]
-
-Bogdan Hamciuc diagnosed and fixed following bug in netpoll_send_udp() :
-
-"skb->len += len;" instead of "skb_put(skb, len);"
-
-Meaning that _if_ a network driver needs to call skb_realloc_headroom(),
-only packet headers would be copied, leaving garbage in the payload.
-
-However the skb_realloc_headroom() must be avoided as much as possible
-since it requires memory and netpoll tries hard to work even if memory
-is exhausted (using a pool of preallocated skbs)
-
-It appears netpoll_send_udp() reserved 16 bytes for the ethernet header,
-which happens to work for typicall drivers but not all.
-
-Right thing is to use LL_RESERVED_SPACE(dev)
-(And also add dev->needed_tailroom of tailroom)
-
-This patch combines both fixes.
-
-Many thanks to Bogdan for raising this issue.
-
-Reported-by: Bogdan Hamciuc <bogdan.hamciuc at freescale.com>
-Signed-off-by: Eric Dumazet <edumazet at google.com>
-Tested-by: Bogdan Hamciuc <bogdan.hamciuc at freescale.com>
-Cc: Herbert Xu <herbert at gondor.apana.org.au>
-Cc: Neil Horman <nhorman at tuxdriver.com>
-Reviewed-by: Neil Horman <nhorman at tuxdriver.com>
-Reviewed-by: Cong Wang <xiyou.wangcong at gmail.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/core/netpoll.c | 11 ++++++-----
- 1 file changed, 6 insertions(+), 5 deletions(-)
-
-diff --git a/net/core/netpoll.c b/net/core/netpoll.c
-index ab0633f..db4bb7a 100644
---- a/net/core/netpoll.c
-+++ b/net/core/netpoll.c
-@@ -351,22 +351,23 @@ EXPORT_SYMBOL(netpoll_send_skb_on_dev);
-
- void netpoll_send_udp(struct netpoll *np, const char *msg, int len)
- {
-- int total_len, eth_len, ip_len, udp_len;
-+ int total_len, ip_len, udp_len;
- struct sk_buff *skb;
- struct udphdr *udph;
- struct iphdr *iph;
- struct ethhdr *eth;
-
- udp_len = len + sizeof(*udph);
-- ip_len = eth_len = udp_len + sizeof(*iph);
-- total_len = eth_len + ETH_HLEN + NET_IP_ALIGN;
-+ ip_len = udp_len + sizeof(*iph);
-+ total_len = ip_len + LL_RESERVED_SPACE(np->dev);
-
-- skb = find_skb(np, total_len, total_len - len);
-+ skb = find_skb(np, total_len + np->dev->needed_tailroom,
-+ total_len - len);
- if (!skb)
- return;
-
- skb_copy_to_linear_data(skb, msg, len);
-- skb->len += len;
-+ skb_put(skb, len);
-
- skb_push(skb, sizeof(*udph));
- skb_reset_transport_header(skb);
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0039-ipv6-Move-ipv6-proc-file-registration-to-end-of-init.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0039-ipv6-Move-ipv6-proc-file-registration-to-end-of-init.patch
deleted file mode 100644
index 202fca3..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0039-ipv6-Move-ipv6-proc-file-registration-to-end-of-init.patch
+++ /dev/null
@@ -1,126 +0,0 @@
-From 0991f9681e1142099a36959648a920e9ee9dda33 Mon Sep 17 00:00:00 2001
-From: Thomas Graf <tgraf at suug.ch>
-Date: Mon, 18 Jun 2012 12:08:33 +0000
-Subject: [PATCH 39/49] ipv6: Move ipv6 proc file registration to end of init
- order
-
-[ Upstream commit d189634ecab947c10f6f832258b103d0bbfe73cc ]
-
-/proc/net/ipv6_route reflects the contents of fib_table_hash. The proc
-handler is installed in ip6_route_net_init() whereas fib_table_hash is
-allocated in fib6_net_init() _after_ the proc handler has been installed.
-
-This opens up a short time frame to access fib_table_hash with its pants
-down.
-
-Move the registration of the proc files to a later point in the init
-order to avoid the race.
-
-Tested :-)
-
-Signed-off-by: Thomas Graf <tgraf at suug.ch>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/ipv6/route.c | 41 +++++++++++++++++++++++++++++++----------
- 1 file changed, 31 insertions(+), 10 deletions(-)
-
-diff --git a/net/ipv6/route.c b/net/ipv6/route.c
-index 059b9d9..2e21751 100644
---- a/net/ipv6/route.c
-+++ b/net/ipv6/route.c
-@@ -2881,10 +2881,6 @@ static int __net_init ip6_route_net_init(struct net *net)
- net->ipv6.sysctl.ip6_rt_mtu_expires = 10*60*HZ;
- net->ipv6.sysctl.ip6_rt_min_advmss = IPV6_MIN_MTU - 20 - 40;
-
--#ifdef CONFIG_PROC_FS
-- proc_net_fops_create(net, "ipv6_route", 0, &ipv6_route_proc_fops);
-- proc_net_fops_create(net, "rt6_stats", S_IRUGO, &rt6_stats_seq_fops);
--#endif
- net->ipv6.ip6_rt_gc_expire = 30*HZ;
-
- ret = 0;
-@@ -2905,10 +2901,6 @@ out_ip6_dst_ops:
-
- static void __net_exit ip6_route_net_exit(struct net *net)
- {
--#ifdef CONFIG_PROC_FS
-- proc_net_remove(net, "ipv6_route");
-- proc_net_remove(net, "rt6_stats");
--#endif
- kfree(net->ipv6.ip6_null_entry);
- #ifdef CONFIG_IPV6_MULTIPLE_TABLES
- kfree(net->ipv6.ip6_prohibit_entry);
-@@ -2917,11 +2909,33 @@ static void __net_exit ip6_route_net_exit(struct net *net)
- dst_entries_destroy(&net->ipv6.ip6_dst_ops);
- }
-
-+static int __net_init ip6_route_net_init_late(struct net *net)
-+{
-+#ifdef CONFIG_PROC_FS
-+ proc_net_fops_create(net, "ipv6_route", 0, &ipv6_route_proc_fops);
-+ proc_net_fops_create(net, "rt6_stats", S_IRUGO, &rt6_stats_seq_fops);
-+#endif
-+ return 0;
-+}
-+
-+static void __net_exit ip6_route_net_exit_late(struct net *net)
-+{
-+#ifdef CONFIG_PROC_FS
-+ proc_net_remove(net, "ipv6_route");
-+ proc_net_remove(net, "rt6_stats");
-+#endif
-+}
-+
- static struct pernet_operations ip6_route_net_ops = {
- .init = ip6_route_net_init,
- .exit = ip6_route_net_exit,
- };
-
-+static struct pernet_operations ip6_route_net_late_ops = {
-+ .init = ip6_route_net_init_late,
-+ .exit = ip6_route_net_exit_late,
-+};
-+
- static struct notifier_block ip6_route_dev_notifier = {
- .notifier_call = ip6_route_dev_notify,
- .priority = 0,
-@@ -2971,19 +2985,25 @@ int __init ip6_route_init(void)
- if (ret)
- goto xfrm6_init;
-
-+ ret = register_pernet_subsys(&ip6_route_net_late_ops);
-+ if (ret)
-+ goto fib6_rules_init;
-+
- ret = -ENOBUFS;
- if (__rtnl_register(PF_INET6, RTM_NEWROUTE, inet6_rtm_newroute, NULL, NULL) ||
- __rtnl_register(PF_INET6, RTM_DELROUTE, inet6_rtm_delroute, NULL, NULL) ||
- __rtnl_register(PF_INET6, RTM_GETROUTE, inet6_rtm_getroute, NULL, NULL))
-- goto fib6_rules_init;
-+ goto out_register_late_subsys;
-
- ret = register_netdevice_notifier(&ip6_route_dev_notifier);
- if (ret)
-- goto fib6_rules_init;
-+ goto out_register_late_subsys;
-
- out:
- return ret;
-
-+out_register_late_subsys:
-+ unregister_pernet_subsys(&ip6_route_net_late_ops);
- fib6_rules_init:
- fib6_rules_cleanup();
- xfrm6_init:
-@@ -3002,6 +3022,7 @@ out_kmem_cache:
- void ip6_route_cleanup(void)
- {
- unregister_netdevice_notifier(&ip6_route_dev_notifier);
-+ unregister_pernet_subsys(&ip6_route_net_late_ops);
- fib6_rules_cleanup();
- xfrm6_fini();
- fib6_gc_cleanup();
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0040-bridge-Assign-rtnl_link_ops-to-bridge-devices-create.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0040-bridge-Assign-rtnl_link_ops-to-bridge-devices-create.patch
deleted file mode 100644
index bacca53..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0040-bridge-Assign-rtnl_link_ops-to-bridge-devices-create.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From e310ae5ff49ec77b2c991cffe288ac766e5f5203 Mon Sep 17 00:00:00 2001
-From: stephen hemminger <shemminger at vyatta.com>
-Date: Tue, 26 Jun 2012 05:48:45 +0000
-Subject: [PATCH 40/49] bridge: Assign rtnl_link_ops to bridge devices created
- via ioctl (v2)
-
-[ Upstream commit 149ddd83a92b02c658d6c61f3276eb6500d585e8 ]
-
-This ensures that bridges created with brctl(8) or ioctl(2) directly
-also carry IFLA_LINKINFO when dumped over netlink. This also allows
-to create a bridge with ioctl(2) and delete it with RTM_DELLINK.
-
-Signed-off-by: Thomas Graf <tgraf at suug.ch>
-Signed-off-by: Stephen Hemminger <shemminger at vyatta.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/bridge/br_if.c | 1 +
- net/bridge/br_netlink.c | 2 +-
- net/bridge/br_private.h | 1 +
- 3 files changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/net/bridge/br_if.c b/net/bridge/br_if.c
-index f603e5b..f3f75ad 100644
---- a/net/bridge/br_if.c
-+++ b/net/bridge/br_if.c
-@@ -240,6 +240,7 @@ int br_add_bridge(struct net *net, const char *name)
- return -ENOMEM;
-
- dev_net_set(dev, net);
-+ dev->rtnl_link_ops = &br_link_ops;
-
- res = register_netdev(dev);
- if (res)
-diff --git a/net/bridge/br_netlink.c b/net/bridge/br_netlink.c
-index a1daf82..cbf9ccd 100644
---- a/net/bridge/br_netlink.c
-+++ b/net/bridge/br_netlink.c
-@@ -211,7 +211,7 @@ static int br_validate(struct nlattr *tb[], struct nlattr *data[])
- return 0;
- }
-
--static struct rtnl_link_ops br_link_ops __read_mostly = {
-+struct rtnl_link_ops br_link_ops __read_mostly = {
- .kind = "bridge",
- .priv_size = sizeof(struct net_bridge),
- .setup = br_dev_setup,
-diff --git a/net/bridge/br_private.h b/net/bridge/br_private.h
-index 93264df..b9bba8f 100644
---- a/net/bridge/br_private.h
-+++ b/net/bridge/br_private.h
-@@ -536,6 +536,7 @@ extern int (*br_fdb_test_addr_hook)(struct net_device *dev, unsigned char *addr)
- #endif
-
- /* br_netlink.c */
-+extern struct rtnl_link_ops br_link_ops;
- extern int br_netlink_init(void);
- extern void br_netlink_fini(void);
- extern void br_ifinfo_notify(int event, struct net_bridge_port *port);
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0041-Btrfs-run-delayed-directory-updates-during-log-repla.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0041-Btrfs-run-delayed-directory-updates-during-log-repla.patch
deleted file mode 100644
index c6b1663..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0041-Btrfs-run-delayed-directory-updates-during-log-repla.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From 478ed8ce8490d599e1bb8e79007b85d6a9e7f1a0 Mon Sep 17 00:00:00 2001
-From: Chris Mason <chris.mason at fusionio.com>
-Date: Mon, 2 Jul 2012 15:29:53 -0400
-Subject: [PATCH 41/49] Btrfs: run delayed directory updates during log replay
-
-commit b6305567e7d31b0bec1b8cb9ec0cadd7f7086f5f upstream.
-
-While we are resolving directory modifications in the
-tree log, we are triggering delayed metadata updates to
-the filesystem btrees.
-
-This commit forces the delayed updates to run so the
-replay code can find any modifications done. It stops
-us from crashing because the directory deleltion replay
-expects items to be removed immediately from the tree.
-
-Signed-off-by: Chris Mason <chris.mason at fusionio.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/btrfs/tree-log.c | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-diff --git a/fs/btrfs/tree-log.c b/fs/btrfs/tree-log.c
-index 3568374..19b127c 100644
---- a/fs/btrfs/tree-log.c
-+++ b/fs/btrfs/tree-log.c
-@@ -692,6 +692,8 @@ static noinline int drop_one_dir_item(struct btrfs_trans_handle *trans,
- kfree(name);
-
- iput(inode);
-+
-+ btrfs_run_delayed_items(trans, root);
- return ret;
- }
-
-@@ -897,6 +899,7 @@ again:
- ret = btrfs_unlink_inode(trans, root, dir,
- inode, victim_name,
- victim_name_len);
-+ btrfs_run_delayed_items(trans, root);
- }
- kfree(victim_name);
- ptr = (unsigned long)(victim_ref + 1) + victim_name_len;
-@@ -1477,6 +1480,9 @@ again:
- ret = btrfs_unlink_inode(trans, root, dir, inode,
- name, name_len);
- BUG_ON(ret);
-+
-+ btrfs_run_delayed_items(trans, root);
-+
- kfree(name);
- iput(inode);
-
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0042-cifs-when-server-doesn-t-set-CAP_LARGE_READ_X-cap-de.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0042-cifs-when-server-doesn-t-set-CAP_LARGE_READ_X-cap-de.patch
deleted file mode 100644
index 435c9cb..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0042-cifs-when-server-doesn-t-set-CAP_LARGE_READ_X-cap-de.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From 3ef708aec9359ad6b05d8ae43663cf5e73c58e9d Mon Sep 17 00:00:00 2001
-From: Jeff Layton <jlayton at redhat.com>
-Date: Mon, 2 Jul 2012 07:24:25 -0400
-Subject: [PATCH 42/49] cifs: when server doesn't set CAP_LARGE_READ_X, cap
- default rsize at MaxBufferSize
-
-commit ec01d738a1691dfc85b96b9f796020267a7be577 upstream.
-
-When the server doesn't advertise CAP_LARGE_READ_X, then MS-CIFS states
-that you must cap the size of the read at the client's MaxBufferSize.
-Unfortunately, testing with many older servers shows that they often
-can't service a read larger than their own MaxBufferSize.
-
-Since we can't assume what the server will do in this situation, we must
-be conservative here for the default. When the server can't do large
-reads, then assume that it can't satisfy any read larger than its
-MaxBufferSize either.
-
-Luckily almost all modern servers can do large reads, so this won't
-affect them. This is really just for older win9x and OS/2 era servers.
-Also, note that this patch just governs the default rsize. The admin can
-always override this if he so chooses.
-
-Reported-by: David H. Durgee <dhdurgee at acm.org>
-Signed-off-by: Jeff Layton <jlayton at redhat.com>
-Signed-off-by: Steven French <sfrench at w500smf.(none)>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/cifs/connect.c | 9 +++------
- 1 file changed, 3 insertions(+), 6 deletions(-)
-
-diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c
-index 9e0675a..b21670c 100644
---- a/fs/cifs/connect.c
-+++ b/fs/cifs/connect.c
-@@ -2975,18 +2975,15 @@ cifs_negotiate_rsize(struct cifs_tcon *tcon, struct smb_vol *pvolume_info)
- * MS-CIFS indicates that servers are only limited by the client's
- * bufsize for reads, testing against win98se shows that it throws
- * INVALID_PARAMETER errors if you try to request too large a read.
-+ * OS/2 just sends back short reads.
- *
-- * If the server advertises a MaxBufferSize of less than one page,
-- * assume that it also can't satisfy reads larger than that either.
-- *
-- * FIXME: Is there a better heuristic for this?
-+ * If the server doesn't advertise CAP_LARGE_READ_X, then assume that
-+ * it can't handle a read request larger than its MaxBufferSize either.
- */
- if (tcon->unix_ext && (unix_cap & CIFS_UNIX_LARGE_READ_CAP))
- defsize = CIFS_DEFAULT_IOSIZE;
- else if (server->capabilities & CAP_LARGE_READ_X)
- defsize = CIFS_DEFAULT_NON_POSIX_RSIZE;
-- else if (server->maxBuf >= PAGE_CACHE_SIZE)
-- defsize = CIFSMaxBufSize;
- else
- defsize = server->maxBuf - sizeof(READ_RSP);
-
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0043-ocfs2-clear-unaligned-io-flag-when-dio-fails.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0043-ocfs2-clear-unaligned-io-flag-when-dio-fails.patch
deleted file mode 100644
index c07be0d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0043-ocfs2-clear-unaligned-io-flag-when-dio-fails.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 605e639247e5f40be06b013748769bd2cc252e04 Mon Sep 17 00:00:00 2001
-From: Junxiao Bi <junxiao.bi at oracle.com>
-Date: Wed, 27 Jun 2012 17:09:55 +0800
-Subject: [PATCH 43/49] ocfs2: clear unaligned io flag when dio fails
-
-commit 3e5d3c35a68c9a933bdbdd8685bd1a205b57e806 upstream.
-
-The unaligned io flag is set in the kiocb when an unaligned
-dio is issued, it should be cleared even when the dio fails,
-or it may affect the following io which are using the same
-kiocb.
-
-Signed-off-by: Junxiao Bi <junxiao.bi at oracle.com>
-Signed-off-by: Joel Becker <jlbec at evilplan.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/ocfs2/file.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/fs/ocfs2/file.c b/fs/ocfs2/file.c
-index 6e39668..07ee5b4 100644
---- a/fs/ocfs2/file.c
-+++ b/fs/ocfs2/file.c
-@@ -2422,8 +2422,10 @@ out_dio:
- unaligned_dio = 0;
- }
-
-- if (unaligned_dio)
-+ if (unaligned_dio) {
-+ ocfs2_iocb_clear_unaligned_aio(iocb);
- atomic_dec(&OCFS2_I(inode)->ip_unaligned_aio);
-+ }
-
- out:
- if (rw_level != -1)
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0044-aio-make-kiocb-private-NUll-in-init_sync_kiocb.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0044-aio-make-kiocb-private-NUll-in-init_sync_kiocb.patch
deleted file mode 100644
index 1084fef..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0044-aio-make-kiocb-private-NUll-in-init_sync_kiocb.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 21dbeb828448f788ffb3590cf6706c074bb1048f Mon Sep 17 00:00:00 2001
-From: Junxiao Bi <junxiao.bi at oracle.com>
-Date: Wed, 27 Jun 2012 17:09:54 +0800
-Subject: [PATCH 44/49] aio: make kiocb->private NUll in init_sync_kiocb()
-
-commit 2dfd06036ba7ae8e7be2daf5a2fff1dac42390bf upstream.
-
-Ocfs2 uses kiocb.*private as a flag of unsigned long size. In
-commit a11f7e6 ocfs2: serialize unaligned aio, the unaligned
-io flag is involved in it to serialize the unaligned aio. As
-*private is not initialized in init_sync_kiocb() of do_sync_write(),
-this unaligned io flag may be unexpectly set in an aligned dio.
-And this will cause OCFS2_I(inode)->ip_unaligned_aio decreased
-to -1 in ocfs2_dio_end_io(), thus the following unaligned dio
-will hang forever at ocfs2_aiodio_wait() in ocfs2_file_aio_write().
-
-Signed-off-by: Junxiao Bi <junxiao.bi at oracle.com>
-Acked-by: Jeff Moyer <jmoyer at redhat.com>
-Signed-off-by: Joel Becker <jlbec at evilplan.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- include/linux/aio.h | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/include/linux/aio.h b/include/linux/aio.h
-index 2314ad8..b1a520e 100644
---- a/include/linux/aio.h
-+++ b/include/linux/aio.h
-@@ -140,6 +140,7 @@ struct kiocb {
- (x)->ki_dtor = NULL; \
- (x)->ki_obj.tsk = tsk; \
- (x)->ki_user_data = 0; \
-+ (x)->private = NULL; \
- } while (0)
-
- #define AIO_RING_MAGIC 0xa10a10a1
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0045-mtd-cafe_nand-fix-an-vs-mistake.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0045-mtd-cafe_nand-fix-an-vs-mistake.patch
deleted file mode 100644
index 9003be4..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0045-mtd-cafe_nand-fix-an-vs-mistake.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From e48907a3c090265dcbe0965537bbe9b510a1f7ef Mon Sep 17 00:00:00 2001
-From: Dan Carpenter <dan.carpenter at oracle.com>
-Date: Sat, 9 Jun 2012 19:08:25 +0300
-Subject: [PATCH 45/49] mtd: cafe_nand: fix an & vs | mistake
-
-commit 48f8b641297df49021093763a3271119a84990a2 upstream.
-
-The intent here was clearly to set result to true if the 0x40000000 flag
-was set. But instead there was a | vs & typo and we always set result
-to true.
-
-Artem: check the spec at
-wiki.laptop.org/images/5/5c/88ALP01_Datasheet_July_2007.pdf
-and this fix looks correct.
-
-Signed-off-by: Dan Carpenter <dan.carpenter at oracle.com>
-Signed-off-by: Artem Bityutskiy <artem.bityutskiy at linux.intel.com>
-Signed-off-by: David Woodhouse <David.Woodhouse at intel.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/mtd/nand/cafe_nand.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/mtd/nand/cafe_nand.c b/drivers/mtd/nand/cafe_nand.c
-index 72d3f23..68ecf48 100644
---- a/drivers/mtd/nand/cafe_nand.c
-+++ b/drivers/mtd/nand/cafe_nand.c
-@@ -102,7 +102,7 @@ static const char *part_probes[] = { "cmdlinepart", "RedBoot", NULL };
- static int cafe_device_ready(struct mtd_info *mtd)
- {
- struct cafe_priv *cafe = mtd->priv;
-- int result = !!(cafe_readl(cafe, NAND_STATUS) | 0x40000000);
-+ int result = !!(cafe_readl(cafe, NAND_STATUS) & 0x40000000);
- uint32_t irqs = cafe_readl(cafe, NAND_IRQ);
-
- cafe_writel(cafe, irqs, NAND_IRQ);
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0046-mm-Hold-a-file-reference-in-madvise_remove.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0046-mm-Hold-a-file-reference-in-madvise_remove.patch
deleted file mode 100644
index 82bb8b1..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0046-mm-Hold-a-file-reference-in-madvise_remove.patch
+++ /dev/null
@@ -1,80 +0,0 @@
-From 565460286859b1512972fc637f2c653cf648d622 Mon Sep 17 00:00:00 2001
-From: Andy Lutomirski <luto at amacapital.net>
-Date: Thu, 5 Jul 2012 16:00:11 -0700
-Subject: [PATCH 46/49] mm: Hold a file reference in madvise_remove
-
-commit 9ab4233dd08036fe34a89c7dc6f47a8bf2eb29eb upstream.
-
-Otherwise the code races with munmap (causing a use-after-free
-of the vma) or with close (causing a use-after-free of the struct
-file).
-
-The bug was introduced by commit 90ed52ebe481 ("[PATCH] holepunch: fix
-mmap_sem i_mutex deadlock")
-
-Cc: Hugh Dickins <hugh at veritas.com>
-Cc: Miklos Szeredi <mszeredi at suse.cz>
-Cc: Badari Pulavarty <pbadari at us.ibm.com>
-Cc: Nick Piggin <npiggin at suse.de>
-Signed-off-by: Andy Lutomirski <luto at amacapital.net>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-[bwh: Backported to 3.2:
- - Adjust context
- - madvise_remove() calls vmtruncate_range(), not do_fallocate()]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- mm/madvise.c | 16 +++++++++++++---
- 1 file changed, 13 insertions(+), 3 deletions(-)
-
-diff --git a/mm/madvise.c b/mm/madvise.c
-index 74bf193..23d3a6b 100644
---- a/mm/madvise.c
-+++ b/mm/madvise.c
-@@ -13,6 +13,7 @@
- #include <linux/hugetlb.h>
- #include <linux/sched.h>
- #include <linux/ksm.h>
-+#include <linux/file.h>
-
- /*
- * Any behaviour which results in changes to the vma->vm_flags needs to
-@@ -197,14 +198,16 @@ static long madvise_remove(struct vm_area_struct *vma,
- struct address_space *mapping;
- loff_t offset, endoff;
- int error;
-+ struct file *f;
-
- *prev = NULL; /* tell sys_madvise we drop mmap_sem */
-
- if (vma->vm_flags & (VM_LOCKED|VM_NONLINEAR|VM_HUGETLB))
- return -EINVAL;
-
-- if (!vma->vm_file || !vma->vm_file->f_mapping
-- || !vma->vm_file->f_mapping->host) {
-+ f = vma->vm_file;
-+
-+ if (!f || !f->f_mapping || !f->f_mapping->host) {
- return -EINVAL;
- }
-
-@@ -218,9 +221,16 @@ static long madvise_remove(struct vm_area_struct *vma,
- endoff = (loff_t)(end - vma->vm_start - 1)
- + ((loff_t)vma->vm_pgoff << PAGE_SHIFT);
-
-- /* vmtruncate_range needs to take i_mutex */
-+ /*
-+ * vmtruncate_range may need to take i_mutex. We need to
-+ * explicitly grab a reference because the vma (and hence the
-+ * vma's reference to the file) can go away as soon as we drop
-+ * mmap_sem.
-+ */
-+ get_file(f);
- up_read(¤t->mm->mmap_sem);
- error = vmtruncate_range(mapping->host, offset, endoff);
-+ fput(f);
- down_read(¤t->mm->mmap_sem);
- return error;
- }
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0047-tcm_fc-Resolve-suspicious-RCU-usage-warnings.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0047-tcm_fc-Resolve-suspicious-RCU-usage-warnings.patch
deleted file mode 100644
index e0373e0..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0047-tcm_fc-Resolve-suspicious-RCU-usage-warnings.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 7b764186beda304507cde2161d84f4e9b16c8ce6 Mon Sep 17 00:00:00 2001
-From: Mark Rustad <mark.d.rustad at intel.com>
-Date: Tue, 26 Jun 2012 15:57:30 -0700
-Subject: [PATCH 47/49] tcm_fc: Resolve suspicious RCU usage warnings
-
-commit 863555be0c81558b1af277addcf68acb8f778860 upstream.
-
-Use rcu_dereference_protected to tell rcu that the ft_lport_lock
-is held during ft_lport_create. This resolved "suspicious RCU usage"
-warnings when debugging options are turned on.
-
-Signed-off-by: Mark Rustad <mark.d.rustad at intel.com>
-Tested-by: Ross Brattain <ross.b.brattain at intel.com>
-Signed-off-by: Nicholas Bellinger <nab at linux-iscsi.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/target/tcm_fc/tfc_sess.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/target/tcm_fc/tfc_sess.c b/drivers/target/tcm_fc/tfc_sess.c
-index 3269213..64ddb63 100644
---- a/drivers/target/tcm_fc/tfc_sess.c
-+++ b/drivers/target/tcm_fc/tfc_sess.c
-@@ -61,7 +61,8 @@ static struct ft_tport *ft_tport_create(struct fc_lport *lport)
- struct ft_tport *tport;
- int i;
-
-- tport = rcu_dereference(lport->prov[FC_TYPE_FCP]);
-+ tport = rcu_dereference_protected(lport->prov[FC_TYPE_FCP],
-+ lockdep_is_held(&ft_lport_lock));
- if (tport && tport->tpg)
- return tport;
-
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0048-vfs-make-O_PATH-file-descriptors-usable-for-fchdir.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0048-vfs-make-O_PATH-file-descriptors-usable-for-fchdir.patch
deleted file mode 100644
index eb450c1..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0048-vfs-make-O_PATH-file-descriptors-usable-for-fchdir.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From 7c0f859e15ad91f6d6921970fc9d48f1f7804bf9 Mon Sep 17 00:00:00 2001
-From: Linus Torvalds <torvalds at linux-foundation.org>
-Date: Sat, 7 Jul 2012 10:17:00 -0700
-Subject: [PATCH 48/49] vfs: make O_PATH file descriptors usable for
- 'fchdir()'
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit 332a2e1244bd08b9e3ecd378028513396a004a24 upstream.
-
-We already use them for openat() and friends, but fchdir() also wants to
-be able to use O_PATH file descriptors. This should make it comparable
-to the O_SEARCH of Solaris. In particular, O_PATH allows you to access
-(not-quite-open) a directory you don't have read persmission to, only
-execute permission.
-
-Noticed during development of multithread support for ksh93.
-
-Reported-by: ольга крыжановская <olga.kryzhanovska at gmail.com>
-Cc: Al Viro <viro at zeniv.linux.org.uk>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/open.c | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/fs/open.c b/fs/open.c
-index 22c41b5..e2b5d51 100644
---- a/fs/open.c
-+++ b/fs/open.c
-@@ -396,10 +396,10 @@ SYSCALL_DEFINE1(fchdir, unsigned int, fd)
- {
- struct file *file;
- struct inode *inode;
-- int error;
-+ int error, fput_needed;
-
- error = -EBADF;
-- file = fget(fd);
-+ file = fget_raw_light(fd, &fput_needed);
- if (!file)
- goto out;
-
-@@ -413,7 +413,7 @@ SYSCALL_DEFINE1(fchdir, unsigned int, fd)
- if (!error)
- set_fs_pwd(current->fs, &file->f_path);
- out_putf:
-- fput(file);
-+ fput_light(file, fput_needed);
- out:
- return error;
- }
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0049-Linux-3.2.23.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0049-Linux-3.2.23.patch
deleted file mode 100644
index 6fa83d1..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0049-Linux-3.2.23.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 70aac971ed12a5a23e0b10035df743f2ada81151 Mon Sep 17 00:00:00 2001
-From: Ben Hutchings <ben at decadent.org.uk>
-Date: Thu, 12 Jul 2012 04:32:21 +0100
-Subject: [PATCH 49/49] Linux 3.2.23
-
----
- Makefile | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Makefile b/Makefile
-index 9a7d921..40d1e3b 100644
---- a/Makefile
-+++ b/Makefile
-@@ -1,6 +1,6 @@
- VERSION = 3
- PATCHLEVEL = 2
--SUBLEVEL = 22
-+SUBLEVEL = 23
- EXTRAVERSION =
- NAME = Saber-toothed Squirrel
-
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0001-samsung-laptop-make-the-dmi-check-less-strict.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0001-samsung-laptop-make-the-dmi-check-less-strict.patch
deleted file mode 100644
index 613acd7..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0001-samsung-laptop-make-the-dmi-check-less-strict.patch
+++ /dev/null
@@ -1,306 +0,0 @@
-From fe36d7279bb09c09b2c07b1b8bfe786a3ab12486 Mon Sep 17 00:00:00 2001
-From: Corentin Chary <corentincj at iksaif.net>
-Date: Sat, 26 Nov 2011 11:00:10 +0100
-Subject: [PATCH 001/109] samsung-laptop: make the dmi check less strict
-
-commit 3be324a94df0c3f032178d04549dbfbf6cccb09a upstream.
-
-This enable the driver for everything that look like
-a laptop and is from vendor "SAMSUNG ELECTRONICS CO., LTD.".
-Note that laptop supported by samsung-q10 seem to have a different
-vendor strict.
-
-Also remove every log output until we know that we have a SABI interface
-(except if the driver is forced to load, or debug is enabled).
-
-Keeping a whitelist of laptop with a model granularity is something that can't
-work without close vendor cooperation (and we don't have that).
-
-Signed-off-by: Corentin Chary <corentincj at iksaif.net>
-Acked-by: Greg Kroah-Hartman <gregkh at suse.de>
-Signed-off-by: Matthew Garrett <mjg at redhat.com>
-[bwh: Backported to 3.2:
- - Adjust context
- - Drop changes relating to ACPI video]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/platform/x86/samsung-laptop.c | 225 ++-------------------------------
- 1 files changed, 8 insertions(+), 217 deletions(-)
-
-diff --git a/drivers/platform/x86/samsung-laptop.c b/drivers/platform/x86/samsung-laptop.c
-index 09e26bf..af1e296 100644
---- a/drivers/platform/x86/samsung-laptop.c
-+++ b/drivers/platform/x86/samsung-laptop.c
-@@ -540,245 +540,34 @@ static DEVICE_ATTR(performance_level, S_IWUSR | S_IRUGO,
- get_performance_level, set_performance_level);
-
-
--static int __init dmi_check_cb(const struct dmi_system_id *id)
--{
-- pr_info("found laptop model '%s'\n",
-- id->ident);
-- return 1;
--}
--
- static struct dmi_system_id __initdata samsung_dmi_table[] = {
- {
-- .ident = "N128",
-- .matches = {
-- DMI_MATCH(DMI_SYS_VENDOR,
-- "SAMSUNG ELECTRONICS CO., LTD."),
-- DMI_MATCH(DMI_PRODUCT_NAME, "N128"),
-- DMI_MATCH(DMI_BOARD_NAME, "N128"),
-- },
-- .callback = dmi_check_cb,
-- },
-- {
-- .ident = "N130",
- .matches = {
- DMI_MATCH(DMI_SYS_VENDOR,
- "SAMSUNG ELECTRONICS CO., LTD."),
-- DMI_MATCH(DMI_PRODUCT_NAME, "N130"),
-- DMI_MATCH(DMI_BOARD_NAME, "N130"),
-+ DMI_MATCH(DMI_CHASSIS_TYPE, "8"), /* Portable */
- },
-- .callback = dmi_check_cb,
- },
- {
-- .ident = "N510",
- .matches = {
- DMI_MATCH(DMI_SYS_VENDOR,
- "SAMSUNG ELECTRONICS CO., LTD."),
-- DMI_MATCH(DMI_PRODUCT_NAME, "N510"),
-- DMI_MATCH(DMI_BOARD_NAME, "N510"),
-+ DMI_MATCH(DMI_CHASSIS_TYPE, "9"), /* Laptop */
- },
-- .callback = dmi_check_cb,
- },
- {
-- .ident = "X125",
- .matches = {
- DMI_MATCH(DMI_SYS_VENDOR,
- "SAMSUNG ELECTRONICS CO., LTD."),
-- DMI_MATCH(DMI_PRODUCT_NAME, "X125"),
-- DMI_MATCH(DMI_BOARD_NAME, "X125"),
-+ DMI_MATCH(DMI_CHASSIS_TYPE, "10"), /* Notebook */
- },
-- .callback = dmi_check_cb,
- },
- {
-- .ident = "X120/X170",
- .matches = {
- DMI_MATCH(DMI_SYS_VENDOR,
- "SAMSUNG ELECTRONICS CO., LTD."),
-- DMI_MATCH(DMI_PRODUCT_NAME, "X120/X170"),
-- DMI_MATCH(DMI_BOARD_NAME, "X120/X170"),
-- },
-- .callback = dmi_check_cb,
-- },
-- {
-- .ident = "NC10",
-- .matches = {
-- DMI_MATCH(DMI_SYS_VENDOR,
-- "SAMSUNG ELECTRONICS CO., LTD."),
-- DMI_MATCH(DMI_PRODUCT_NAME, "NC10"),
-- DMI_MATCH(DMI_BOARD_NAME, "NC10"),
-- },
-- .callback = dmi_check_cb,
-- },
-- {
-- .ident = "NP-Q45",
-- .matches = {
-- DMI_MATCH(DMI_SYS_VENDOR,
-- "SAMSUNG ELECTRONICS CO., LTD."),
-- DMI_MATCH(DMI_PRODUCT_NAME, "SQ45S70S"),
-- DMI_MATCH(DMI_BOARD_NAME, "SQ45S70S"),
-- },
-- .callback = dmi_check_cb,
-- },
-- {
-- .ident = "X360",
-- .matches = {
-- DMI_MATCH(DMI_SYS_VENDOR,
-- "SAMSUNG ELECTRONICS CO., LTD."),
-- DMI_MATCH(DMI_PRODUCT_NAME, "X360"),
-- DMI_MATCH(DMI_BOARD_NAME, "X360"),
-- },
-- .callback = dmi_check_cb,
-- },
-- {
-- .ident = "R410 Plus",
-- .matches = {
-- DMI_MATCH(DMI_SYS_VENDOR,
-- "SAMSUNG ELECTRONICS CO., LTD."),
-- DMI_MATCH(DMI_PRODUCT_NAME, "R410P"),
-- DMI_MATCH(DMI_BOARD_NAME, "R460"),
-- },
-- .callback = dmi_check_cb,
-- },
-- {
-- .ident = "R518",
-- .matches = {
-- DMI_MATCH(DMI_SYS_VENDOR,
-- "SAMSUNG ELECTRONICS CO., LTD."),
-- DMI_MATCH(DMI_PRODUCT_NAME, "R518"),
-- DMI_MATCH(DMI_BOARD_NAME, "R518"),
-- },
-- .callback = dmi_check_cb,
-- },
-- {
-- .ident = "R519/R719",
-- .matches = {
-- DMI_MATCH(DMI_SYS_VENDOR,
-- "SAMSUNG ELECTRONICS CO., LTD."),
-- DMI_MATCH(DMI_PRODUCT_NAME, "R519/R719"),
-- DMI_MATCH(DMI_BOARD_NAME, "R519/R719"),
-- },
-- .callback = dmi_check_cb,
-- },
-- {
-- .ident = "N150/N210/N220",
-- .matches = {
-- DMI_MATCH(DMI_SYS_VENDOR,
-- "SAMSUNG ELECTRONICS CO., LTD."),
-- DMI_MATCH(DMI_PRODUCT_NAME, "N150/N210/N220"),
-- DMI_MATCH(DMI_BOARD_NAME, "N150/N210/N220"),
-- },
-- .callback = dmi_check_cb,
-- },
-- {
-- .ident = "N220",
-- .matches = {
-- DMI_MATCH(DMI_SYS_VENDOR,
-- "SAMSUNG ELECTRONICS CO., LTD."),
-- DMI_MATCH(DMI_PRODUCT_NAME, "N220"),
-- DMI_MATCH(DMI_BOARD_NAME, "N220"),
-- },
-- .callback = dmi_check_cb,
-- },
-- {
-- .ident = "N150/N210/N220/N230",
-- .matches = {
-- DMI_MATCH(DMI_SYS_VENDOR,
-- "SAMSUNG ELECTRONICS CO., LTD."),
-- DMI_MATCH(DMI_PRODUCT_NAME, "N150/N210/N220/N230"),
-- DMI_MATCH(DMI_BOARD_NAME, "N150/N210/N220/N230"),
-- },
-- .callback = dmi_check_cb,
-- },
-- {
-- .ident = "N150P/N210P/N220P",
-- .matches = {
-- DMI_MATCH(DMI_SYS_VENDOR,
-- "SAMSUNG ELECTRONICS CO., LTD."),
-- DMI_MATCH(DMI_PRODUCT_NAME, "N150P/N210P/N220P"),
-- DMI_MATCH(DMI_BOARD_NAME, "N150P/N210P/N220P"),
-- },
-- .callback = dmi_check_cb,
-- },
-- {
-- .ident = "R700",
-- .matches = {
-- DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."),
-- DMI_MATCH(DMI_PRODUCT_NAME, "SR700"),
-- DMI_MATCH(DMI_BOARD_NAME, "SR700"),
-- },
-- .callback = dmi_check_cb,
-- },
-- {
-- .ident = "R530/R730",
-- .matches = {
-- DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."),
-- DMI_MATCH(DMI_PRODUCT_NAME, "R530/R730"),
-- DMI_MATCH(DMI_BOARD_NAME, "R530/R730"),
-- },
-- .callback = dmi_check_cb,
-- },
-- {
-- .ident = "NF110/NF210/NF310",
-- .matches = {
-- DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."),
-- DMI_MATCH(DMI_PRODUCT_NAME, "NF110/NF210/NF310"),
-- DMI_MATCH(DMI_BOARD_NAME, "NF110/NF210/NF310"),
-- },
-- .callback = dmi_check_cb,
-- },
-- {
-- .ident = "N145P/N250P/N260P",
-- .matches = {
-- DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."),
-- DMI_MATCH(DMI_PRODUCT_NAME, "N145P/N250P/N260P"),
-- DMI_MATCH(DMI_BOARD_NAME, "N145P/N250P/N260P"),
-- },
-- .callback = dmi_check_cb,
-- },
-- {
-- .ident = "R70/R71",
-- .matches = {
-- DMI_MATCH(DMI_SYS_VENDOR,
-- "SAMSUNG ELECTRONICS CO., LTD."),
-- DMI_MATCH(DMI_PRODUCT_NAME, "R70/R71"),
-- DMI_MATCH(DMI_BOARD_NAME, "R70/R71"),
-- },
-- .callback = dmi_check_cb,
-- },
-- {
-- .ident = "P460",
-- .matches = {
-- DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."),
-- DMI_MATCH(DMI_PRODUCT_NAME, "P460"),
-- DMI_MATCH(DMI_BOARD_NAME, "P460"),
-- },
-- .callback = dmi_check_cb,
-- },
-- {
-- .ident = "R528/R728",
-- .matches = {
-- DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."),
-- DMI_MATCH(DMI_PRODUCT_NAME, "R528/R728"),
-- DMI_MATCH(DMI_BOARD_NAME, "R528/R728"),
-- },
-- .callback = dmi_check_cb,
-- },
-- {
-- .ident = "NC210/NC110",
-- .matches = {
-- DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."),
-- DMI_MATCH(DMI_PRODUCT_NAME, "NC210/NC110"),
-- DMI_MATCH(DMI_BOARD_NAME, "NC210/NC110"),
-- },
-- .callback = dmi_check_cb,
-- },
-- {
-- .ident = "X520",
-- .matches = {
-- DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."),
-- DMI_MATCH(DMI_PRODUCT_NAME, "X520"),
-- DMI_MATCH(DMI_BOARD_NAME, "X520"),
-+ DMI_MATCH(DMI_CHASSIS_TYPE, "14"), /* Sub-Notebook */
- },
-- .callback = dmi_check_cb,
- },
- { },
- };
-@@ -819,7 +608,8 @@ static int __init samsung_init(void)
-
- f0000_segment = ioremap_nocache(0xf0000, 0xffff);
- if (!f0000_segment) {
-- pr_err("Can't map the segment at 0xf0000\n");
-+ if (debug || force)
-+ pr_err("Can't map the segment at 0xf0000\n");
- return -EINVAL;
- }
-
-@@ -832,7 +622,8 @@ static int __init samsung_init(void)
- }
-
- if (loca == 0xffff) {
-- pr_err("This computer does not support SABI\n");
-+ if (debug || force)
-+ pr_err("This computer does not support SABI\n");
- goto error_no_signature;
- }
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0002-raid5-delayed-stripe-fix.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0002-raid5-delayed-stripe-fix.patch
deleted file mode 100644
index bb9ebfa..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0002-raid5-delayed-stripe-fix.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From c3041d04e675a5d38a1d57fee3c59d4f073f512e Mon Sep 17 00:00:00 2001
-From: Shaohua Li <shli at kernel.org>
-Date: Tue, 3 Jul 2012 15:57:19 +1000
-Subject: [PATCH 002/109] raid5: delayed stripe fix
-
-commit fab363b5ff502d1b39ddcfec04271f5858d9f26e upstream.
-
-There isn't locking setting STRIPE_DELAYED and STRIPE_PREREAD_ACTIVE bits, but
-the two bits have relationship. A delayed stripe can be moved to hold list only
-when preread active stripe count is below IO_THRESHOLD. If a stripe has both
-the bits set, such stripe will be in delayed list and preread count not 0,
-which will make such stripe never leave delayed list.
-
-Signed-off-by: Shaohua Li <shli at fusionio.com>
-Signed-off-by: NeilBrown <neilb at suse.de>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/md/raid5.c | 4 +++-
- 1 files changed, 3 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
-index 6ba4954..26ef63a 100644
---- a/drivers/md/raid5.c
-+++ b/drivers/md/raid5.c
-@@ -196,12 +196,14 @@ static void __release_stripe(struct r5conf *conf, struct stripe_head *sh)
- BUG_ON(!list_empty(&sh->lru));
- BUG_ON(atomic_read(&conf->active_stripes)==0);
- if (test_bit(STRIPE_HANDLE, &sh->state)) {
-- if (test_bit(STRIPE_DELAYED, &sh->state))
-+ if (test_bit(STRIPE_DELAYED, &sh->state) &&
-+ !test_bit(STRIPE_PREREAD_ACTIVE, &sh->state))
- list_add_tail(&sh->lru, &conf->delayed_list);
- else if (test_bit(STRIPE_BIT_DELAY, &sh->state) &&
- sh->bm_seq - conf->seq_write > 0)
- list_add_tail(&sh->lru, &conf->bitmap_list);
- else {
-+ clear_bit(STRIPE_DELAYED, &sh->state);
- clear_bit(STRIPE_BIT_DELAY, &sh->state);
- list_add_tail(&sh->lru, &conf->handle_list);
- }
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0003-tcp-drop-SYN-FIN-messages.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0003-tcp-drop-SYN-FIN-messages.patch
deleted file mode 100644
index 6eb3824..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0003-tcp-drop-SYN-FIN-messages.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From ebf148a0ca2e0c9fb824a069c0fd5311bb6ae297 Mon Sep 17 00:00:00 2001
-From: Eric Dumazet <eric.dumazet at gmail.com>
-Date: Fri, 2 Dec 2011 23:41:42 +0000
-Subject: [PATCH 003/109] tcp: drop SYN+FIN messages
-
-commit fdf5af0daf8019cec2396cdef8fb042d80fe71fa upstream.
-
-Denys Fedoryshchenko reported that SYN+FIN attacks were bringing his
-linux machines to their limits.
-
-Dont call conn_request() if the TCP flags includes SYN flag
-
-Reported-by: Denys Fedoryshchenko <denys at visp.net.lb>
-Signed-off-by: Eric Dumazet <eric.dumazet at gmail.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/ipv4/tcp_input.c | 2 ++
- 1 files changed, 2 insertions(+), 0 deletions(-)
-
-diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
-index 9726927..32e6ca2 100644
---- a/net/ipv4/tcp_input.c
-+++ b/net/ipv4/tcp_input.c
-@@ -5836,6 +5836,8 @@ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb,
- goto discard;
-
- if (th->syn) {
-+ if (th->fin)
-+ goto discard;
- if (icsk->icsk_af_ops->conn_request(sk, skb) < 0)
- return 1;
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0004-tg3-Apply-short-DMA-frag-workaround-to-5906.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0004-tg3-Apply-short-DMA-frag-workaround-to-5906.patch
deleted file mode 100644
index 15f5906..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0004-tg3-Apply-short-DMA-frag-workaround-to-5906.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 389c56a2dfc90eecb97841668a8d61fc3424f2c8 Mon Sep 17 00:00:00 2001
-From: Matt Carlson <mcarlson at broadcom.com>
-Date: Thu, 7 Jun 2012 12:56:54 +0000
-Subject: [PATCH 004/109] tg3: Apply short DMA frag workaround to 5906
-
-commit b7abee6ef888117f92db370620ebf116a38e3f4d upstream.
-
-5906 devices also need the short DMA fragment workaround. This patch
-makes the necessary change.
-
-Signed-off-by: Matt Carlson <mcarlson at broadcom.com>
-Tested-by: Christian Kujau <lists at nerdbynature.de>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/ethernet/broadcom/tg3.c | 3 ++-
- 1 files changed, 2 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/net/ethernet/broadcom/tg3.c b/drivers/net/ethernet/broadcom/tg3.c
-index 2dcac28..6b258d9 100644
---- a/drivers/net/ethernet/broadcom/tg3.c
-+++ b/drivers/net/ethernet/broadcom/tg3.c
-@@ -14046,7 +14046,8 @@ static int __devinit tg3_get_invariants(struct tg3 *tp)
- }
- }
-
-- if (tg3_flag(tp, 5755_PLUS))
-+ if (tg3_flag(tp, 5755_PLUS) ||
-+ GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5906)
- tg3_flag_set(tp, SHORT_DMA_BUG);
-
- if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5719)
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0005-rtl8187-brightness_set-can-not-sleep.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0005-rtl8187-brightness_set-can-not-sleep.patch
deleted file mode 100644
index 5a01a08..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0005-rtl8187-brightness_set-can-not-sleep.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From c8ad2074ce769ad8b16677e0a9bee9232be03acc Mon Sep 17 00:00:00 2001
-From: Stanislaw Gruszka <sgruszka at redhat.com>
-Date: Wed, 16 May 2012 11:06:21 +0200
-Subject: [PATCH 005/109] rtl8187: ->brightness_set can not sleep
-
-commit 0fde0a8cfd0ede7f310d6a681c8e5a7cb3e32406 upstream.
-
-Fix:
-
-BUG: sleeping function called from invalid context at kernel/workqueue.c:2547
-in_atomic(): 1, irqs_disabled(): 0, pid: 629, name: wpa_supplicant
-2 locks held by wpa_supplicant/629:
- #0: (rtnl_mutex){+.+.+.}, at: [<c08b2b84>] rtnl_lock+0x14/0x20
- #1: (&trigger->leddev_list_lock){.+.?..}, at: [<c0867f41>] led_trigger_event+0x21/0x80
-Pid: 629, comm: wpa_supplicant Not tainted 3.3.0-0.rc3.git5.1.fc17.i686
-Call Trace:
- [<c046a9f6>] __might_sleep+0x126/0x1d0
- [<c0457d6c>] wait_on_work+0x2c/0x1d0
- [<c045a09a>] __cancel_work_timer+0x6a/0x120
- [<c045a160>] cancel_delayed_work_sync+0x10/0x20
- [<f7dd3c22>] rtl8187_led_brightness_set+0x82/0xf0 [rtl8187]
- [<c0867f7c>] led_trigger_event+0x5c/0x80
- [<f7ff5e6d>] ieee80211_led_radio+0x1d/0x40 [mac80211]
- [<f7ff3583>] ieee80211_stop_device+0x13/0x230 [mac80211]
-
-Removing _sync is ok, because if led_on work is currently running
-it will be finished before led_off work start to perform, since
-they are always queued on the same mac80211 local->workqueue.
-
-Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=795176
-
-Signed-off-by: Stanislaw Gruszka <sgruszka at redhat.com>
-Acked-by: Larry Finger <Larry.Finger at lwfinger.net>
-Acked-by: Hin-Tak Leung <htl10 at users.sourceforge.net>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/wireless/rtl818x/rtl8187/leds.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/net/wireless/rtl818x/rtl8187/leds.c b/drivers/net/wireless/rtl818x/rtl8187/leds.c
-index 2e0de2f..c2d5b49 100644
---- a/drivers/net/wireless/rtl818x/rtl8187/leds.c
-+++ b/drivers/net/wireless/rtl818x/rtl8187/leds.c
-@@ -117,7 +117,7 @@ static void rtl8187_led_brightness_set(struct led_classdev *led_dev,
- radio_on = true;
- } else if (radio_on) {
- radio_on = false;
-- cancel_delayed_work_sync(&priv->led_on);
-+ cancel_delayed_work(&priv->led_on);
- ieee80211_queue_delayed_work(hw, &priv->led_off, 0);
- }
- } else if (radio_on) {
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0006-net-wireless-ipw2x00-add-supported-cipher-suites-to-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0006-net-wireless-ipw2x00-add-supported-cipher-suites-to-.patch
deleted file mode 100644
index 68fca84..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0006-net-wireless-ipw2x00-add-supported-cipher-suites-to-.patch
+++ /dev/null
@@ -1,102 +0,0 @@
-From 54490f32c07630f7c6bd6429bf73d7507b06e3db Mon Sep 17 00:00:00 2001
-From: Stanislav Yakovlev <stas.yakovlev at gmail.com>
-Date: Tue, 10 Apr 2012 21:44:47 -0400
-Subject: [PATCH 006/109] net/wireless: ipw2x00: add supported cipher suites
- to wiphy initialization
-
-commit a141e6a0097118bb35024485f1faffc0d9042f5c upstream.
-
-Driver doesn't report its supported cipher suites through cfg80211
-interface. It still uses wext interface and probably will not work
-through nl80211, but will at least correctly advertise supported
-features.
-
-Bug was reported by Omar Siam.
-https://bugzilla.kernel.org/show_bug.cgi?id=43049
-
-Signed-off-by: Stanislav Yakovlev <stas.yakovlev at gmail.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/wireless/ipw2x00/ipw.h | 23 +++++++++++++++++++++++
- drivers/net/wireless/ipw2x00/ipw2100.c | 4 ++++
- drivers/net/wireless/ipw2x00/ipw2200.c | 4 ++++
- 3 files changed, 31 insertions(+), 0 deletions(-)
- create mode 100644 drivers/net/wireless/ipw2x00/ipw.h
-
-diff --git a/drivers/net/wireless/ipw2x00/ipw.h b/drivers/net/wireless/ipw2x00/ipw.h
-new file mode 100644
-index 0000000..4007bf5
---- /dev/null
-+++ b/drivers/net/wireless/ipw2x00/ipw.h
-@@ -0,0 +1,23 @@
-+/*
-+ * Intel Pro/Wireless 2100, 2200BG, 2915ABG network connection driver
-+ *
-+ * Copyright 2012 Stanislav Yakovlev <stas.yakovlev at gmail.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ */
-+
-+#ifndef __IPW_H__
-+#define __IPW_H__
-+
-+#include <linux/ieee80211.h>
-+
-+static const u32 ipw_cipher_suites[] = {
-+ WLAN_CIPHER_SUITE_WEP40,
-+ WLAN_CIPHER_SUITE_WEP104,
-+ WLAN_CIPHER_SUITE_TKIP,
-+ WLAN_CIPHER_SUITE_CCMP,
-+};
-+
-+#endif
-diff --git a/drivers/net/wireless/ipw2x00/ipw2100.c b/drivers/net/wireless/ipw2x00/ipw2100.c
-index 127e9c6..10862d4 100644
---- a/drivers/net/wireless/ipw2x00/ipw2100.c
-+++ b/drivers/net/wireless/ipw2x00/ipw2100.c
-@@ -166,6 +166,7 @@ that only one external action is invoked at a time.
- #include <net/lib80211.h>
-
- #include "ipw2100.h"
-+#include "ipw.h"
-
- #define IPW2100_VERSION "git-1.2.2"
-
-@@ -1955,6 +1956,9 @@ static int ipw2100_wdev_init(struct net_device *dev)
- wdev->wiphy->bands[IEEE80211_BAND_2GHZ] = bg_band;
- }
-
-+ wdev->wiphy->cipher_suites = ipw_cipher_suites;
-+ wdev->wiphy->n_cipher_suites = ARRAY_SIZE(ipw_cipher_suites);
-+
- set_wiphy_dev(wdev->wiphy, &priv->pci_dev->dev);
- if (wiphy_register(wdev->wiphy)) {
- ipw2100_down(priv);
-diff --git a/drivers/net/wireless/ipw2x00/ipw2200.c b/drivers/net/wireless/ipw2x00/ipw2200.c
-index 827889b..56bd370 100644
---- a/drivers/net/wireless/ipw2x00/ipw2200.c
-+++ b/drivers/net/wireless/ipw2x00/ipw2200.c
-@@ -34,6 +34,7 @@
- #include <linux/slab.h>
- #include <net/cfg80211-wext.h>
- #include "ipw2200.h"
-+#include "ipw.h"
-
-
- #ifndef KBUILD_EXTMOD
-@@ -11535,6 +11536,9 @@ static int ipw_wdev_init(struct net_device *dev)
- wdev->wiphy->bands[IEEE80211_BAND_5GHZ] = a_band;
- }
-
-+ wdev->wiphy->cipher_suites = ipw_cipher_suites;
-+ wdev->wiphy->n_cipher_suites = ARRAY_SIZE(ipw_cipher_suites);
-+
- set_wiphy_dev(wdev->wiphy, &priv->pci_dev->dev);
-
- /* With that information in place, we can now register the wiphy... */
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0007-drm-i915-do-not-enable-RC6p-on-Sandy-Bridge.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0007-drm-i915-do-not-enable-RC6p-on-Sandy-Bridge.patch
deleted file mode 100644
index ac8f0c7..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0007-drm-i915-do-not-enable-RC6p-on-Sandy-Bridge.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From ae8e28c4c0aaba535e88908a7a2c560bb55061f9 Mon Sep 17 00:00:00 2001
-From: Eugeni Dodonov <eugeni.dodonov at intel.com>
-Date: Tue, 14 Feb 2012 11:44:48 -0200
-Subject: [PATCH 007/109] drm/i915: do not enable RC6p on Sandy Bridge
-
-commit 1c8ecf80fdee4e7b23a9e7da7ff9bd59ba2dcf96 upstream.
-
-With base on latest findings, RC6p seems to be respondible for RC6-related
-issues on Sandy Bridge platform. To work-around those issues, the previous
-solution was to completely disable RC6 on Sandy Bridge for the past few
-releases, even if plain RC6 was not giving any issues.
-
-What this patch does is preventing RC6p from being enabled on Sandy Bridge
-even if users enable RC6 via a kernel parameter. So it won't change the
-defaults in any way, but will ensure that if users do enable RC6 manually
-it won't break their machines by enabling this extra state.
-
-Proper fix for this (enabling specific RC6 states according to the GPU
-generation) were proposed for the -next kernel, but we are too late in the
-release process now to pick such changes.
-
-Acked-by: Keith Packard <keithp at keithp.com>
-Signed-off-by: Eugeni Dodonov <eugeni.dodonov at intel.com>
-Signed-off-by: Jesse Barnes <jbarnes at virtuousgeek.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpu/drm/i915/intel_display.c | 4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
-index 6aa7716..c63ca5f 100644
---- a/drivers/gpu/drm/i915/intel_display.c
-+++ b/drivers/gpu/drm/i915/intel_display.c
-@@ -8043,8 +8043,8 @@ void gen6_enable_rps(struct drm_i915_private *dev_priv)
- I915_WRITE(GEN6_RC6pp_THRESHOLD, 64000); /* unused */
-
- if (intel_enable_rc6(dev_priv->dev))
-- rc6_mask = GEN6_RC_CTL_RC6p_ENABLE |
-- GEN6_RC_CTL_RC6_ENABLE;
-+ rc6_mask = GEN6_RC_CTL_RC6_ENABLE |
-+ (IS_GEN7(dev_priv->dev)) ? GEN6_RC_CTL_RC6p_ENABLE : 0;
-
- I915_WRITE(GEN6_RC_CONTROL,
- rc6_mask |
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0008-drm-i915-fix-operator-precedence-when-enabling-RC6p.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0008-drm-i915-fix-operator-precedence-when-enabling-RC6p.patch
deleted file mode 100644
index 18b111f..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0008-drm-i915-fix-operator-precedence-when-enabling-RC6p.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 2c5df93ac56c5ec76f87a0daf418966abb25b03b Mon Sep 17 00:00:00 2001
-From: Eugeni Dodonov <eugeni.dodonov at intel.com>
-Date: Thu, 23 Feb 2012 23:57:06 -0200
-Subject: [PATCH 008/109] drm/i915: fix operator precedence when enabling RC6p
-
-commit c0e2ee1bc0cf82eec89e26b7afe7e4db0561b7d9 upstream.
-
-As noticed by Torsten Kaiser, the operator precedence can play tricks with
-us here.
-
-CC: Dave Airlie <airlied at redhat.com>
-Signed-off-by: Eugeni Dodonov <eugeni.dodonov at intel.com>
-Signed-off-by: Jesse Barnes <jbarnes at virtuousgeek.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpu/drm/i915/intel_display.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
-index c63ca5f..cc75c4b 100644
---- a/drivers/gpu/drm/i915/intel_display.c
-+++ b/drivers/gpu/drm/i915/intel_display.c
-@@ -8044,7 +8044,7 @@ void gen6_enable_rps(struct drm_i915_private *dev_priv)
-
- if (intel_enable_rc6(dev_priv->dev))
- rc6_mask = GEN6_RC_CTL_RC6_ENABLE |
-- (IS_GEN7(dev_priv->dev)) ? GEN6_RC_CTL_RC6p_ENABLE : 0;
-+ ((IS_GEN7(dev_priv->dev)) ? GEN6_RC_CTL_RC6p_ENABLE : 0);
-
- I915_WRITE(GEN6_RC_CONTROL,
- rc6_mask |
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0009-kbuild-do-not-check-for-ancient-modutils-tools.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0009-kbuild-do-not-check-for-ancient-modutils-tools.patch
deleted file mode 100644
index 281b4e9..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0009-kbuild-do-not-check-for-ancient-modutils-tools.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 6ad602fb1ad21f96e203b4525aa56c7e0cc6ac4f Mon Sep 17 00:00:00 2001
-From: Lucas De Marchi <lucas.demarchi at profusion.mobi>
-Date: Tue, 17 Jan 2012 14:50:51 -0200
-Subject: [PATCH 009/109] kbuild: do not check for ancient modutils tools
-
-commit 620c231c7a7f48745094727bb612f6321cfc8844 upstream.
-
-scripts/depmod.sh checks for the output of '-V' expecting that it has
-module-init-tools in it. It's a hack to prevent users from using
-modutils instead of module-init-tools, that only works with 2.4.x
-kernels. This however prints an annoying warning for kmod tool, that is
-currently replacing module-init-tools.
-
-Rather than putting another check for kmod's version, just remove it
-since users of 2.4.x kernel are unlikely to upgrade to 3.x, and if they
-do, let depmod fail in that case because they should know what they are
-doing.
-
-Signed-off-by: Lucas De Marchi <lucas.demarchi at profusion.mobi>
-Acked-by: WANG Cong <amwang at redhat.com>
-Acked-By: Kay Sievers <kay.sievers at vrfy.org>
-Signed-off-by: Michal Marek <mmarek at suse.cz>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- scripts/depmod.sh | 6 ------
- 1 files changed, 0 insertions(+), 6 deletions(-)
-
-diff --git a/scripts/depmod.sh b/scripts/depmod.sh
-index a272356..2ae4817 100755
---- a/scripts/depmod.sh
-+++ b/scripts/depmod.sh
-@@ -9,12 +9,6 @@ fi
- DEPMOD=$1
- KERNELRELEASE=$2
-
--if ! "$DEPMOD" -V 2>/dev/null | grep -q module-init-tools; then
-- echo "Warning: you may need to install module-init-tools" >&2
-- echo "See http://www.codemonkey.org.uk/docs/post-halloween-2.6.txt" >&2
-- sleep 1
--fi
--
- if ! test -r System.map -a -x "$DEPMOD"; then
- exit 0
- fi
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0010-brcmsmac-INTERMEDIATE-but-not-AMPDU-only-when-tracin.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0010-brcmsmac-INTERMEDIATE-but-not-AMPDU-only-when-tracin.patch
deleted file mode 100644
index a22e50d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0010-brcmsmac-INTERMEDIATE-but-not-AMPDU-only-when-tracin.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From bc3f81b80966fcd6e91b61c76408eed675a1b364 Mon Sep 17 00:00:00 2001
-From: Eldad Zack <eldad at fogrefinery.com>
-Date: Sun, 22 Apr 2012 00:48:04 +0200
-Subject: [PATCH 010/109] brcmsmac: "INTERMEDIATE but not AMPDU" only when
- tracing
-
-commit 6ead629b27269c553c9092c47cd8f5ab0309ee3b upstream.
-
-I keep getting the following messages on the log buffer:
-[ 2167.097507] ieee80211 phy0: brcms_c_dotxstatus: INTERMEDIATE but not AMPDU
-[ 2281.331305] ieee80211 phy0: brcms_c_dotxstatus: INTERMEDIATE but not AMPDU
-[ 2281.332539] ieee80211 phy0: brcms_c_dotxstatus: INTERMEDIATE but not AMPDU
-[ 2329.876605] ieee80211 phy0: brcms_c_dotxstatus: INTERMEDIATE but not AMPDU
-[ 2329.877354] ieee80211 phy0: brcms_c_dotxstatus: INTERMEDIATE but not AMPDU
-[ 2462.280756] ieee80211 phy0: brcms_c_dotxstatus: INTERMEDIATE but not AMPDU
-[ 2615.651689] ieee80211 phy0: brcms_c_dotxstatus: INTERMEDIATE but not AMPDU
-
-From the code comment I understand that this something that can -
-and does, quite frequently - happen.
-
-Signed-off-by: Eldad Zack <eldad at fogrefinery.com>
-Acked-by: Franky Lin<frankyl at broadcom.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/wireless/brcm80211/brcmsmac/main.c | 3 +--
- 1 files changed, 1 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/net/wireless/brcm80211/brcmsmac/main.c b/drivers/net/wireless/brcm80211/brcmsmac/main.c
-index 833cbef..8a40ff9 100644
---- a/drivers/net/wireless/brcm80211/brcmsmac/main.c
-+++ b/drivers/net/wireless/brcm80211/brcmsmac/main.c
-@@ -900,8 +900,7 @@ brcms_c_dotxstatus(struct brcms_c_info *wlc, struct tx_status *txs)
- */
- if (!(txs->status & TX_STATUS_AMPDU)
- && (txs->status & TX_STATUS_INTERMEDIATE)) {
-- wiphy_err(wlc->wiphy, "%s: INTERMEDIATE but not AMPDU\n",
-- __func__);
-+ BCMMSG(wlc->wiphy, "INTERMEDIATE but not AMPDU\n");
- return false;
- }
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0011-NFSv4-Rate-limit-the-state-manager-for-lock-reclaim-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0011-NFSv4-Rate-limit-the-state-manager-for-lock-reclaim-.patch
deleted file mode 100644
index 44b7c81..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0011-NFSv4-Rate-limit-the-state-manager-for-lock-reclaim-.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 9c6259f9486461da338a097ae1655d55b7bead3a Mon Sep 17 00:00:00 2001
-From: William Dauchy <wdauchy at gmail.com>
-Date: Wed, 14 Mar 2012 12:32:04 +0100
-Subject: [PATCH 011/109] NFSv4: Rate limit the state manager for lock reclaim
- warning messages
-
-commit 96dcadc2fdd111dca90d559f189a30c65394451a upstream.
-
-Adding rate limit on `Lock reclaim failed` messages since it could fill
-up system logs
-Signed-off-by: William Dauchy <wdauchy at gmail.com>
-Signed-off-by: Trond Myklebust <Trond.Myklebust at netapp.com>
-[bwh: Backported to 3.2: add the 'NFS:' prefix at the same time]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/nfs/nfs4state.c | 5 +++--
- 1 files changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/fs/nfs/nfs4state.c b/fs/nfs/nfs4state.c
-index 66020ac..07354b7 100644
---- a/fs/nfs/nfs4state.c
-+++ b/fs/nfs/nfs4state.c
-@@ -1186,8 +1186,9 @@ restart:
- spin_lock(&state->state_lock);
- list_for_each_entry(lock, &state->lock_states, ls_locks) {
- if (!(lock->ls_flags & NFS_LOCK_INITIALIZED))
-- printk("%s: Lock reclaim failed!\n",
-- __func__);
-+ pr_warn_ratelimited("NFS: "
-+ "%s: Lock reclaim "
-+ "failed!\n", __func__);
- }
- spin_unlock(&state->state_lock);
- nfs4_put_open_state(state);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0012-ext4-Report-max_batch_time-option-correctly.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0012-ext4-Report-max_batch_time-option-correctly.patch
deleted file mode 100644
index 5bd27b4..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0012-ext4-Report-max_batch_time-option-correctly.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 877ee75ef7f45fd1022c37f6a8a957e9d1b098b7 Mon Sep 17 00:00:00 2001
-From: Ben Hutchings <ben at decadent.org.uk>
-Date: Wed, 4 Jan 2012 21:22:51 -0500
-Subject: [PATCH 012/109] ext4: Report max_batch_time option correctly
-
-commit 1d526fc91bea04ee35b7599bf8b82f86c0aaf46c upstream.
-
-Currently the value reported for max_batch_time is really the
-value of min_batch_time.
-
-Reported-by: Russell Coker <russell at coker.com.au>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/ext4/super.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/fs/ext4/super.c b/fs/ext4/super.c
-index ab7aa3f..a93486e 100644
---- a/fs/ext4/super.c
-+++ b/fs/ext4/super.c
-@@ -1097,7 +1097,7 @@ static int ext4_show_options(struct seq_file *seq, struct vfsmount *vfs)
- }
- if (sbi->s_max_batch_time != EXT4_DEF_MAX_BATCH_TIME) {
- seq_printf(seq, ",max_batch_time=%u",
-- (unsigned) sbi->s_min_batch_time);
-+ (unsigned) sbi->s_max_batch_time);
- }
-
- /*
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0013-hugepages-fix-use-after-free-bug-in-quota-handling.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0013-hugepages-fix-use-after-free-bug-in-quota-handling.patch
deleted file mode 100644
index bdfa386..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0013-hugepages-fix-use-after-free-bug-in-quota-handling.patch
+++ /dev/null
@@ -1,464 +0,0 @@
-From 5babdc7487f6c78c06d8e085efe841d91a77ff48 Mon Sep 17 00:00:00 2001
-From: David Gibson <david at gibson.dropbear.id.au>
-Date: Wed, 21 Mar 2012 16:34:12 -0700
-Subject: [PATCH 013/109] hugepages: fix use after free bug in "quota"
- handling
-
-commit 90481622d75715bfcb68501280a917dbfe516029 upstream.
-
-hugetlbfs_{get,put}_quota() are badly named. They don't interact with the
-general quota handling code, and they don't much resemble its behaviour.
-Rather than being about maintaining limits on on-disk block usage by
-particular users, they are instead about maintaining limits on in-memory
-page usage (including anonymous MAP_PRIVATE copied-on-write pages)
-associated with a particular hugetlbfs filesystem instance.
-
-Worse, they work by having callbacks to the hugetlbfs filesystem code from
-the low-level page handling code, in particular from free_huge_page().
-This is a layering violation of itself, but more importantly, if the
-kernel does a get_user_pages() on hugepages (which can happen from KVM
-amongst others), then the free_huge_page() can be delayed until after the
-associated inode has already been freed. If an unmount occurs at the
-wrong time, even the hugetlbfs superblock where the "quota" limits are
-stored may have been freed.
-
-Andrew Barry proposed a patch to fix this by having hugepages, instead of
-storing a pointer to their address_space and reaching the superblock from
-there, had the hugepages store pointers directly to the superblock,
-bumping the reference count as appropriate to avoid it being freed.
-Andrew Morton rejected that version, however, on the grounds that it made
-the existing layering violation worse.
-
-This is a reworked version of Andrew's patch, which removes the extra, and
-some of the existing, layering violation. It works by introducing the
-concept of a hugepage "subpool" at the lower hugepage mm layer - that is a
-finite logical pool of hugepages to allocate from. hugetlbfs now creates
-a subpool for each filesystem instance with a page limit set, and a
-pointer to the subpool gets added to each allocated hugepage, instead of
-the address_space pointer used now. The subpool has its own lifetime and
-is only freed once all pages in it _and_ all other references to it (i.e.
-superblocks) are gone.
-
-subpools are optional - a NULL subpool pointer is taken by the code to
-mean that no subpool limits are in effect.
-
-Previous discussion of this bug found in: "Fix refcounting in hugetlbfs
-quota handling.". See: https://lkml.org/lkml/2011/8/11/28 or
-http://marc.info/?l=linux-mm&m=126928970510627&w=1
-
-v2: Fixed a bug spotted by Hillf Danton, and removed the extra parameter to
-alloc_huge_page() - since it already takes the vma, it is not necessary.
-
-Signed-off-by: Andrew Barry <abarry at cray.com>
-Signed-off-by: David Gibson <david at gibson.dropbear.id.au>
-Cc: Hugh Dickins <hughd at google.com>
-Cc: Mel Gorman <mgorman at suse.de>
-Cc: Minchan Kim <minchan.kim at gmail.com>
-Cc: Hillf Danton <dhillf at gmail.com>
-Cc: Paul Mackerras <paulus at samba.org>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-[bwh: Backported to 3.2: adjust context to apply after commit
- c50ac050811d6485616a193eb0f37bfbd191cc89 'hugetlb: fix resv_map leak in
- error path', backported in 3.2.20]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/hugetlbfs/inode.c | 54 +++++++-----------
- include/linux/hugetlb.h | 14 ++++--
- mm/hugetlb.c | 135 +++++++++++++++++++++++++++++++++++++---------
- 3 files changed, 139 insertions(+), 64 deletions(-)
-
-diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c
-index 2d0ca24..ebc2f4d 100644
---- a/fs/hugetlbfs/inode.c
-+++ b/fs/hugetlbfs/inode.c
-@@ -592,9 +592,15 @@ static int hugetlbfs_statfs(struct dentry *dentry, struct kstatfs *buf)
- spin_lock(&sbinfo->stat_lock);
- /* If no limits set, just report 0 for max/free/used
- * blocks, like simple_statfs() */
-- if (sbinfo->max_blocks >= 0) {
-- buf->f_blocks = sbinfo->max_blocks;
-- buf->f_bavail = buf->f_bfree = sbinfo->free_blocks;
-+ if (sbinfo->spool) {
-+ long free_pages;
-+
-+ spin_lock(&sbinfo->spool->lock);
-+ buf->f_blocks = sbinfo->spool->max_hpages;
-+ free_pages = sbinfo->spool->max_hpages
-+ - sbinfo->spool->used_hpages;
-+ buf->f_bavail = buf->f_bfree = free_pages;
-+ spin_unlock(&sbinfo->spool->lock);
- buf->f_files = sbinfo->max_inodes;
- buf->f_ffree = sbinfo->free_inodes;
- }
-@@ -610,6 +616,10 @@ static void hugetlbfs_put_super(struct super_block *sb)
-
- if (sbi) {
- sb->s_fs_info = NULL;
-+
-+ if (sbi->spool)
-+ hugepage_put_subpool(sbi->spool);
-+
- kfree(sbi);
- }
- }
-@@ -841,10 +851,14 @@ hugetlbfs_fill_super(struct super_block *sb, void *data, int silent)
- sb->s_fs_info = sbinfo;
- sbinfo->hstate = config.hstate;
- spin_lock_init(&sbinfo->stat_lock);
-- sbinfo->max_blocks = config.nr_blocks;
-- sbinfo->free_blocks = config.nr_blocks;
- sbinfo->max_inodes = config.nr_inodes;
- sbinfo->free_inodes = config.nr_inodes;
-+ sbinfo->spool = NULL;
-+ if (config.nr_blocks != -1) {
-+ sbinfo->spool = hugepage_new_subpool(config.nr_blocks);
-+ if (!sbinfo->spool)
-+ goto out_free;
-+ }
- sb->s_maxbytes = MAX_LFS_FILESIZE;
- sb->s_blocksize = huge_page_size(config.hstate);
- sb->s_blocksize_bits = huge_page_shift(config.hstate);
-@@ -864,38 +878,12 @@ hugetlbfs_fill_super(struct super_block *sb, void *data, int silent)
- sb->s_root = root;
- return 0;
- out_free:
-+ if (sbinfo->spool)
-+ kfree(sbinfo->spool);
- kfree(sbinfo);
- return -ENOMEM;
- }
-
--int hugetlb_get_quota(struct address_space *mapping, long delta)
--{
-- int ret = 0;
-- struct hugetlbfs_sb_info *sbinfo = HUGETLBFS_SB(mapping->host->i_sb);
--
-- if (sbinfo->free_blocks > -1) {
-- spin_lock(&sbinfo->stat_lock);
-- if (sbinfo->free_blocks - delta >= 0)
-- sbinfo->free_blocks -= delta;
-- else
-- ret = -ENOMEM;
-- spin_unlock(&sbinfo->stat_lock);
-- }
--
-- return ret;
--}
--
--void hugetlb_put_quota(struct address_space *mapping, long delta)
--{
-- struct hugetlbfs_sb_info *sbinfo = HUGETLBFS_SB(mapping->host->i_sb);
--
-- if (sbinfo->free_blocks > -1) {
-- spin_lock(&sbinfo->stat_lock);
-- sbinfo->free_blocks += delta;
-- spin_unlock(&sbinfo->stat_lock);
-- }
--}
--
- static struct dentry *hugetlbfs_mount(struct file_system_type *fs_type,
- int flags, const char *dev_name, void *data)
- {
-diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h
-index d9d6c86..c5ed2f1 100644
---- a/include/linux/hugetlb.h
-+++ b/include/linux/hugetlb.h
-@@ -14,6 +14,15 @@ struct user_struct;
- #include <linux/shm.h>
- #include <asm/tlbflush.h>
-
-+struct hugepage_subpool {
-+ spinlock_t lock;
-+ long count;
-+ long max_hpages, used_hpages;
-+};
-+
-+struct hugepage_subpool *hugepage_new_subpool(long nr_blocks);
-+void hugepage_put_subpool(struct hugepage_subpool *spool);
-+
- int PageHuge(struct page *page);
-
- void reset_vma_resv_huge_pages(struct vm_area_struct *vma);
-@@ -138,12 +147,11 @@ struct hugetlbfs_config {
- };
-
- struct hugetlbfs_sb_info {
-- long max_blocks; /* blocks allowed */
-- long free_blocks; /* blocks free */
- long max_inodes; /* inodes allowed */
- long free_inodes; /* inodes free */
- spinlock_t stat_lock;
- struct hstate *hstate;
-+ struct hugepage_subpool *spool;
- };
-
-
-@@ -166,8 +174,6 @@ extern const struct file_operations hugetlbfs_file_operations;
- extern const struct vm_operations_struct hugetlb_vm_ops;
- struct file *hugetlb_file_setup(const char *name, size_t size, vm_flags_t acct,
- struct user_struct **user, int creat_flags);
--int hugetlb_get_quota(struct address_space *mapping, long delta);
--void hugetlb_put_quota(struct address_space *mapping, long delta);
-
- static inline int is_file_hugepages(struct file *file)
- {
-diff --git a/mm/hugetlb.c b/mm/hugetlb.c
-index 5f5c545..7c535b0 100644
---- a/mm/hugetlb.c
-+++ b/mm/hugetlb.c
-@@ -53,6 +53,84 @@ static unsigned long __initdata default_hstate_size;
- */
- static DEFINE_SPINLOCK(hugetlb_lock);
-
-+static inline void unlock_or_release_subpool(struct hugepage_subpool *spool)
-+{
-+ bool free = (spool->count == 0) && (spool->used_hpages == 0);
-+
-+ spin_unlock(&spool->lock);
-+
-+ /* If no pages are used, and no other handles to the subpool
-+ * remain, free the subpool the subpool remain */
-+ if (free)
-+ kfree(spool);
-+}
-+
-+struct hugepage_subpool *hugepage_new_subpool(long nr_blocks)
-+{
-+ struct hugepage_subpool *spool;
-+
-+ spool = kmalloc(sizeof(*spool), GFP_KERNEL);
-+ if (!spool)
-+ return NULL;
-+
-+ spin_lock_init(&spool->lock);
-+ spool->count = 1;
-+ spool->max_hpages = nr_blocks;
-+ spool->used_hpages = 0;
-+
-+ return spool;
-+}
-+
-+void hugepage_put_subpool(struct hugepage_subpool *spool)
-+{
-+ spin_lock(&spool->lock);
-+ BUG_ON(!spool->count);
-+ spool->count--;
-+ unlock_or_release_subpool(spool);
-+}
-+
-+static int hugepage_subpool_get_pages(struct hugepage_subpool *spool,
-+ long delta)
-+{
-+ int ret = 0;
-+
-+ if (!spool)
-+ return 0;
-+
-+ spin_lock(&spool->lock);
-+ if ((spool->used_hpages + delta) <= spool->max_hpages) {
-+ spool->used_hpages += delta;
-+ } else {
-+ ret = -ENOMEM;
-+ }
-+ spin_unlock(&spool->lock);
-+
-+ return ret;
-+}
-+
-+static void hugepage_subpool_put_pages(struct hugepage_subpool *spool,
-+ long delta)
-+{
-+ if (!spool)
-+ return;
-+
-+ spin_lock(&spool->lock);
-+ spool->used_hpages -= delta;
-+ /* If hugetlbfs_put_super couldn't free spool due to
-+ * an outstanding quota reference, free it now. */
-+ unlock_or_release_subpool(spool);
-+}
-+
-+static inline struct hugepage_subpool *subpool_inode(struct inode *inode)
-+{
-+ return HUGETLBFS_SB(inode->i_sb)->spool;
-+}
-+
-+static inline struct hugepage_subpool *subpool_vma(struct vm_area_struct *vma)
-+{
-+ return subpool_inode(vma->vm_file->f_dentry->d_inode);
-+}
-+
- /*
- * Region tracking -- allows tracking of reservations and instantiated pages
- * across the pages in a mapping.
-@@ -533,9 +611,9 @@ static void free_huge_page(struct page *page)
- */
- struct hstate *h = page_hstate(page);
- int nid = page_to_nid(page);
-- struct address_space *mapping;
-+ struct hugepage_subpool *spool =
-+ (struct hugepage_subpool *)page_private(page);
-
-- mapping = (struct address_space *) page_private(page);
- set_page_private(page, 0);
- page->mapping = NULL;
- BUG_ON(page_count(page));
-@@ -551,8 +629,7 @@ static void free_huge_page(struct page *page)
- enqueue_huge_page(h, page);
- }
- spin_unlock(&hugetlb_lock);
-- if (mapping)
-- hugetlb_put_quota(mapping, 1);
-+ hugepage_subpool_put_pages(spool, 1);
- }
-
- static void prep_new_huge_page(struct hstate *h, struct page *page, int nid)
-@@ -966,11 +1043,12 @@ static void return_unused_surplus_pages(struct hstate *h,
- /*
- * Determine if the huge page at addr within the vma has an associated
- * reservation. Where it does not we will need to logically increase
-- * reservation and actually increase quota before an allocation can occur.
-- * Where any new reservation would be required the reservation change is
-- * prepared, but not committed. Once the page has been quota'd allocated
-- * an instantiated the change should be committed via vma_commit_reservation.
-- * No action is required on failure.
-+ * reservation and actually increase subpool usage before an allocation
-+ * can occur. Where any new reservation would be required the
-+ * reservation change is prepared, but not committed. Once the page
-+ * has been allocated from the subpool and instantiated the change should
-+ * be committed via vma_commit_reservation. No action is required on
-+ * failure.
- */
- static long vma_needs_reservation(struct hstate *h,
- struct vm_area_struct *vma, unsigned long addr)
-@@ -1019,24 +1097,24 @@ static void vma_commit_reservation(struct hstate *h,
- static struct page *alloc_huge_page(struct vm_area_struct *vma,
- unsigned long addr, int avoid_reserve)
- {
-+ struct hugepage_subpool *spool = subpool_vma(vma);
- struct hstate *h = hstate_vma(vma);
- struct page *page;
-- struct address_space *mapping = vma->vm_file->f_mapping;
-- struct inode *inode = mapping->host;
- long chg;
-
- /*
-- * Processes that did not create the mapping will have no reserves and
-- * will not have accounted against quota. Check that the quota can be
-- * made before satisfying the allocation
-- * MAP_NORESERVE mappings may also need pages and quota allocated
-- * if no reserve mapping overlaps.
-+ * Processes that did not create the mapping will have no
-+ * reserves and will not have accounted against subpool
-+ * limit. Check that the subpool limit can be made before
-+ * satisfying the allocation MAP_NORESERVE mappings may also
-+ * need pages and subpool limit allocated allocated if no reserve
-+ * mapping overlaps.
- */
- chg = vma_needs_reservation(h, vma, addr);
- if (chg < 0)
- return ERR_PTR(-VM_FAULT_OOM);
- if (chg)
-- if (hugetlb_get_quota(inode->i_mapping, chg))
-+ if (hugepage_subpool_get_pages(spool, chg))
- return ERR_PTR(-VM_FAULT_SIGBUS);
-
- spin_lock(&hugetlb_lock);
-@@ -1046,12 +1124,12 @@ static struct page *alloc_huge_page(struct vm_area_struct *vma,
- if (!page) {
- page = alloc_buddy_huge_page(h, NUMA_NO_NODE);
- if (!page) {
-- hugetlb_put_quota(inode->i_mapping, chg);
-+ hugepage_subpool_put_pages(spool, chg);
- return ERR_PTR(-VM_FAULT_SIGBUS);
- }
- }
-
-- set_page_private(page, (unsigned long) mapping);
-+ set_page_private(page, (unsigned long)spool);
-
- vma_commit_reservation(h, vma, addr);
-
-@@ -2081,6 +2159,7 @@ static void hugetlb_vm_op_close(struct vm_area_struct *vma)
- {
- struct hstate *h = hstate_vma(vma);
- struct resv_map *reservations = vma_resv_map(vma);
-+ struct hugepage_subpool *spool = subpool_vma(vma);
- unsigned long reserve;
- unsigned long start;
- unsigned long end;
-@@ -2096,7 +2175,7 @@ static void hugetlb_vm_op_close(struct vm_area_struct *vma)
-
- if (reserve) {
- hugetlb_acct_memory(h, -reserve);
-- hugetlb_put_quota(vma->vm_file->f_mapping, reserve);
-+ hugepage_subpool_put_pages(spool, reserve);
- }
- }
- }
-@@ -2326,7 +2405,7 @@ static int unmap_ref_private(struct mm_struct *mm, struct vm_area_struct *vma,
- address = address & huge_page_mask(h);
- pgoff = ((address - vma->vm_start) >> PAGE_SHIFT)
- + (vma->vm_pgoff >> PAGE_SHIFT);
-- mapping = (struct address_space *)page_private(page);
-+ mapping = vma->vm_file->f_dentry->d_inode->i_mapping;
-
- /*
- * Take the mapping lock for the duration of the table walk. As
-@@ -2865,11 +2944,12 @@ int hugetlb_reserve_pages(struct inode *inode,
- {
- long ret, chg;
- struct hstate *h = hstate_inode(inode);
-+ struct hugepage_subpool *spool = subpool_inode(inode);
-
- /*
- * Only apply hugepage reservation if asked. At fault time, an
- * attempt will be made for VM_NORESERVE to allocate a page
-- * and filesystem quota without using reserves
-+ * without using reserves
- */
- if (vm_flags & VM_NORESERVE)
- return 0;
-@@ -2898,19 +2978,19 @@ int hugetlb_reserve_pages(struct inode *inode,
- goto out_err;
- }
-
-- /* There must be enough filesystem quota for the mapping */
-- if (hugetlb_get_quota(inode->i_mapping, chg)) {
-+ /* There must be enough pages in the subpool for the mapping */
-+ if (hugepage_subpool_get_pages(spool, chg)) {
- ret = -ENOSPC;
- goto out_err;
- }
-
- /*
- * Check enough hugepages are available for the reservation.
-- * Hand back the quota if there are not
-+ * Hand the pages back to the subpool if there are not
- */
- ret = hugetlb_acct_memory(h, chg);
- if (ret < 0) {
-- hugetlb_put_quota(inode->i_mapping, chg);
-+ hugepage_subpool_put_pages(spool, chg);
- goto out_err;
- }
-
-@@ -2938,12 +3018,13 @@ void hugetlb_unreserve_pages(struct inode *inode, long offset, long freed)
- {
- struct hstate *h = hstate_inode(inode);
- long chg = region_truncate(&inode->i_mapping->private_list, offset);
-+ struct hugepage_subpool *spool = subpool_inode(inode);
-
- spin_lock(&inode->i_lock);
- inode->i_blocks -= (blocks_per_huge_page(h) * freed);
- spin_unlock(&inode->i_lock);
-
-- hugetlb_put_quota(inode->i_mapping, (chg - freed));
-+ hugepage_subpool_put_pages(spool, (chg - freed));
- hugetlb_acct_memory(h, -(chg - freed));
- }
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0014-NFSv4-Reduce-the-footprint-of-the-idmapper.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0014-NFSv4-Reduce-the-footprint-of-the-idmapper.patch
deleted file mode 100644
index 008fc3e..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0014-NFSv4-Reduce-the-footprint-of-the-idmapper.patch
+++ /dev/null
@@ -1,69 +0,0 @@
-From e45792228b6a4487d859334c757322554c960397 Mon Sep 17 00:00:00 2001
-From: Trond Myklebust <Trond.Myklebust at netapp.com>
-Date: Tue, 7 Feb 2012 14:59:05 -0500
-Subject: [PATCH 014/109] NFSv4: Reduce the footprint of the idmapper
-
-commit d073e9b541e1ac3f52d72c3a153855d9a9ee3278 upstream.
-
-Instead of pre-allocating the storage for all the strings, we can
-significantly reduce the size of that table by doing the allocation
-when we do the downcall.
-
-Signed-off-by: Trond Myklebust <Trond.Myklebust at netapp.com>
-Reviewed-by: Jeff Layton <jlayton at redhat.com>
-[bwh: Backported to 3.2: adjust context in nfs_idmap_delete()]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/nfs/idmap.c | 16 +++++++++++++---
- 1 files changed, 13 insertions(+), 3 deletions(-)
-
-diff --git a/fs/nfs/idmap.c b/fs/nfs/idmap.c
-index 47d1c6f..b8c41c3 100644
---- a/fs/nfs/idmap.c
-+++ b/fs/nfs/idmap.c
-@@ -318,7 +318,7 @@ struct idmap_hashent {
- unsigned long ih_expires;
- __u32 ih_id;
- size_t ih_namelen;
-- char ih_name[IDMAP_NAMESZ];
-+ const char *ih_name;
- };
-
- struct idmap_hashtable {
-@@ -382,11 +382,16 @@ void
- nfs_idmap_delete(struct nfs_client *clp)
- {
- struct idmap *idmap = clp->cl_idmap;
-+ int i;
-
- if (!idmap)
- return;
- rpc_unlink(idmap->idmap_dentry);
- clp->cl_idmap = NULL;
-+ for (i = 0; i < ARRAY_SIZE(idmap->idmap_user_hash.h_entries); i++)
-+ kfree(idmap->idmap_user_hash.h_entries[i].ih_name);
-+ for (i = 0; i < ARRAY_SIZE(idmap->idmap_group_hash.h_entries); i++)
-+ kfree(idmap->idmap_group_hash.h_entries[i].ih_name);
- kfree(idmap);
- }
-
-@@ -449,9 +454,14 @@ static void
- idmap_update_entry(struct idmap_hashent *he, const char *name,
- size_t namelen, __u32 id)
- {
-+ char *str = kmalloc(namelen + 1, GFP_KERNEL);
-+ if (str == NULL)
-+ return;
-+ kfree(he->ih_name);
- he->ih_id = id;
-- memcpy(he->ih_name, name, namelen);
-- he->ih_name[namelen] = '\0';
-+ memcpy(str, name, namelen);
-+ str[namelen] = '\0';
-+ he->ih_name = str;
- he->ih_namelen = namelen;
- he->ih_expires = jiffies + nfs_idmap_cache_timeout;
- }
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0015-NFSv4-Further-reduce-the-footprint-of-the-idmapper.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0015-NFSv4-Further-reduce-the-footprint-of-the-idmapper.patch
deleted file mode 100644
index 018a5ef..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0015-NFSv4-Further-reduce-the-footprint-of-the-idmapper.patch
+++ /dev/null
@@ -1,131 +0,0 @@
-From c297b1ec9340ec265bceeb8c1b8198ee476f0573 Mon Sep 17 00:00:00 2001
-From: Trond Myklebust <Trond.Myklebust at netapp.com>
-Date: Wed, 8 Feb 2012 13:39:15 -0500
-Subject: [PATCH 015/109] NFSv4: Further reduce the footprint of the idmapper
-
-commit 685f50f9188ac1e8244d0340a9d6ea36b6136cec upstream.
-
-Don't allocate the legacy idmapper tables until we actually need
-them.
-
-Signed-off-by: Trond Myklebust <Trond.Myklebust at netapp.com>
-Reviewed-by: Jeff Layton <jlayton at redhat.com>
-[bwh: Backported to 3.2: adjust context in nfs_idmap_delete()]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/nfs/idmap.c | 42 ++++++++++++++++++++++++++++++++++++------
- 1 files changed, 36 insertions(+), 6 deletions(-)
-
-diff --git a/fs/nfs/idmap.c b/fs/nfs/idmap.c
-index b8c41c3..b122af8 100644
---- a/fs/nfs/idmap.c
-+++ b/fs/nfs/idmap.c
-@@ -323,7 +323,7 @@ struct idmap_hashent {
-
- struct idmap_hashtable {
- __u8 h_type;
-- struct idmap_hashent h_entries[IDMAP_HASH_SZ];
-+ struct idmap_hashent *h_entries;
- };
-
- struct idmap {
-@@ -378,20 +378,39 @@ nfs_idmap_new(struct nfs_client *clp)
- return 0;
- }
-
-+static void
-+idmap_alloc_hashtable(struct idmap_hashtable *h)
-+{
-+ if (h->h_entries != NULL)
-+ return;
-+ h->h_entries = kcalloc(IDMAP_HASH_SZ,
-+ sizeof(*h->h_entries),
-+ GFP_KERNEL);
-+}
-+
-+static void
-+idmap_free_hashtable(struct idmap_hashtable *h)
-+{
-+ int i;
-+
-+ if (h->h_entries == NULL)
-+ return;
-+ for (i = 0; i < IDMAP_HASH_SZ; i++)
-+ kfree(h->h_entries[i].ih_name);
-+ kfree(h->h_entries);
-+}
-+
- void
- nfs_idmap_delete(struct nfs_client *clp)
- {
- struct idmap *idmap = clp->cl_idmap;
-- int i;
-
- if (!idmap)
- return;
- rpc_unlink(idmap->idmap_dentry);
- clp->cl_idmap = NULL;
-- for (i = 0; i < ARRAY_SIZE(idmap->idmap_user_hash.h_entries); i++)
-- kfree(idmap->idmap_user_hash.h_entries[i].ih_name);
-- for (i = 0; i < ARRAY_SIZE(idmap->idmap_group_hash.h_entries); i++)
-- kfree(idmap->idmap_group_hash.h_entries[i].ih_name);
-+ idmap_free_hashtable(&idmap->idmap_user_hash);
-+ idmap_free_hashtable(&idmap->idmap_group_hash);
- kfree(idmap);
- }
-
-@@ -401,6 +420,8 @@ nfs_idmap_delete(struct nfs_client *clp)
- static inline struct idmap_hashent *
- idmap_name_hash(struct idmap_hashtable* h, const char *name, size_t len)
- {
-+ if (h->h_entries == NULL)
-+ return NULL;
- return &h->h_entries[fnvhash32(name, len) % IDMAP_HASH_SZ];
- }
-
-@@ -409,6 +430,8 @@ idmap_lookup_name(struct idmap_hashtable *h, const char *name, size_t len)
- {
- struct idmap_hashent *he = idmap_name_hash(h, name, len);
-
-+ if (he == NULL)
-+ return NULL;
- if (he->ih_namelen != len || memcmp(he->ih_name, name, len) != 0)
- return NULL;
- if (time_after(jiffies, he->ih_expires))
-@@ -419,6 +442,8 @@ idmap_lookup_name(struct idmap_hashtable *h, const char *name, size_t len)
- static inline struct idmap_hashent *
- idmap_id_hash(struct idmap_hashtable* h, __u32 id)
- {
-+ if (h->h_entries == NULL)
-+ return NULL;
- return &h->h_entries[fnvhash32(&id, sizeof(id)) % IDMAP_HASH_SZ];
- }
-
-@@ -426,6 +451,9 @@ static struct idmap_hashent *
- idmap_lookup_id(struct idmap_hashtable *h, __u32 id)
- {
- struct idmap_hashent *he = idmap_id_hash(h, id);
-+
-+ if (he == NULL)
-+ return NULL;
- if (he->ih_id != id || he->ih_namelen == 0)
- return NULL;
- if (time_after(jiffies, he->ih_expires))
-@@ -441,12 +469,14 @@ idmap_lookup_id(struct idmap_hashtable *h, __u32 id)
- static inline struct idmap_hashent *
- idmap_alloc_name(struct idmap_hashtable *h, char *name, size_t len)
- {
-+ idmap_alloc_hashtable(h);
- return idmap_name_hash(h, name, len);
- }
-
- static inline struct idmap_hashent *
- idmap_alloc_id(struct idmap_hashtable *h, __u32 id)
- {
-+ idmap_alloc_hashtable(h);
- return idmap_id_hash(h, id);
- }
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0016-macvtap-zerocopy-fix-offset-calculation-when-buildin.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0016-macvtap-zerocopy-fix-offset-calculation-when-buildin.patch
deleted file mode 100644
index d19f672..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0016-macvtap-zerocopy-fix-offset-calculation-when-buildin.patch
+++ /dev/null
@@ -1,67 +0,0 @@
-From 6c4e2ff1b19d58c2a2f016d25b96eee0f733d7aa Mon Sep 17 00:00:00 2001
-From: Jason Wang <jasowang at redhat.com>
-Date: Wed, 2 May 2012 11:41:30 +0800
-Subject: [PATCH 016/109] macvtap: zerocopy: fix offset calculation when
- building skb
-
-commit 3afc9621f15701c557e60f61eba9242bac2771dd upstream.
-
-This patch fixes the offset calculation when building skb:
-
-- offset1 were used as skb data offset not vector offset
-- reset offset to zero only when we advance to next vector
-
-Signed-off-by: Jason Wang <jasowang at redhat.com>
-Signed-off-by: Michael S. Tsirkin <mst at redhat.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/macvtap.c | 13 +++++++------
- 1 files changed, 7 insertions(+), 6 deletions(-)
-
-diff --git a/drivers/net/macvtap.c b/drivers/net/macvtap.c
-index 1b7082d..4505008 100644
---- a/drivers/net/macvtap.c
-+++ b/drivers/net/macvtap.c
-@@ -504,10 +504,11 @@ static int zerocopy_sg_from_iovec(struct sk_buff *skb, const struct iovec *from,
- if (copy > size) {
- ++from;
- --count;
-- }
-+ offset = 0;
-+ } else
-+ offset += size;
- copy -= size;
- offset1 += size;
-- offset = 0;
- }
-
- if (len == offset1)
-@@ -518,13 +519,13 @@ static int zerocopy_sg_from_iovec(struct sk_buff *skb, const struct iovec *from,
- int num_pages;
- unsigned long base;
-
-- len = from->iov_len - offset1;
-+ len = from->iov_len - offset;
- if (!len) {
-- offset1 = 0;
-+ offset = 0;
- ++from;
- continue;
- }
-- base = (unsigned long)from->iov_base + offset1;
-+ base = (unsigned long)from->iov_base + offset;
- size = ((base & ~PAGE_MASK) + len + ~PAGE_MASK) >> PAGE_SHIFT;
- num_pages = get_user_pages_fast(base, size, 0, &page[i]);
- if ((num_pages != size) ||
-@@ -545,7 +546,7 @@ static int zerocopy_sg_from_iovec(struct sk_buff *skb, const struct iovec *from,
- len -= size;
- i++;
- }
-- offset1 = 0;
-+ offset = 0;
- ++from;
- }
- return 0;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0017-macvtap-zerocopy-fix-truesize-underestimation.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0017-macvtap-zerocopy-fix-truesize-underestimation.patch
deleted file mode 100644
index b00f0b9..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0017-macvtap-zerocopy-fix-truesize-underestimation.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From e2261c8945dd5af5a0627ac72f7a39f676f3b657 Mon Sep 17 00:00:00 2001
-From: Jason Wang <jasowang at redhat.com>
-Date: Wed, 2 May 2012 11:41:44 +0800
-Subject: [PATCH 017/109] macvtap: zerocopy: fix truesize underestimation
-
-commit 4ef67ebedffa44ed9939b34708ac2fee06d2f65f upstream.
-
-As the skb fragment were pinned/built from user pages, we should
-account the page instead of length for truesize.
-
-Signed-off-by: Jason Wang <jasowang at redhat.com>
-Signed-off-by: Michael S. Tsirkin <mst at redhat.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/macvtap.c | 6 ++++--
- 1 files changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/net/macvtap.c b/drivers/net/macvtap.c
-index 4505008..c7a84eb 100644
---- a/drivers/net/macvtap.c
-+++ b/drivers/net/macvtap.c
-@@ -518,6 +518,7 @@ static int zerocopy_sg_from_iovec(struct sk_buff *skb, const struct iovec *from,
- struct page *page[MAX_SKB_FRAGS];
- int num_pages;
- unsigned long base;
-+ unsigned long truesize;
-
- len = from->iov_len - offset;
- if (!len) {
-@@ -532,10 +533,11 @@ static int zerocopy_sg_from_iovec(struct sk_buff *skb, const struct iovec *from,
- (num_pages > MAX_SKB_FRAGS - skb_shinfo(skb)->nr_frags))
- /* put_page is in skb free */
- return -EFAULT;
-+ truesize = size * PAGE_SIZE;
- skb->data_len += len;
- skb->len += len;
-- skb->truesize += len;
-- atomic_add(len, &skb->sk->sk_wmem_alloc);
-+ skb->truesize += truesize;
-+ atomic_add(truesize, &skb->sk->sk_wmem_alloc);
- while (len) {
- int off = base & ~PAGE_MASK;
- int size = min_t(int, len, PAGE_SIZE - off);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0018-macvtap-zerocopy-put-page-when-fail-to-get-all-reque.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0018-macvtap-zerocopy-put-page-when-fail-to-get-all-reque.patch
deleted file mode 100644
index 55fc073..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0018-macvtap-zerocopy-put-page-when-fail-to-get-all-reque.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 13d71d7ee644607d525480330c8b6a4268c18c0e Mon Sep 17 00:00:00 2001
-From: Jason Wang <jasowang at redhat.com>
-Date: Wed, 2 May 2012 11:41:58 +0800
-Subject: [PATCH 018/109] macvtap: zerocopy: put page when fail to get all
- requested user pages
-
-commit 02ce04bb3d28c3333231f43bca677228dbc686fe upstream.
-
-When get_user_pages_fast() fails to get all requested pages, we could not use
-kfree_skb() to free it as it has not been put in the skb fragments. So we need
-to call put_page() instead.
-
-Signed-off-by: Jason Wang <jasowang at redhat.com>
-Signed-off-by: Michael S. Tsirkin <mst at redhat.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/macvtap.c | 6 ++++--
- 1 files changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/net/macvtap.c b/drivers/net/macvtap.c
-index c7a84eb..f217247 100644
---- a/drivers/net/macvtap.c
-+++ b/drivers/net/macvtap.c
-@@ -530,9 +530,11 @@ static int zerocopy_sg_from_iovec(struct sk_buff *skb, const struct iovec *from,
- size = ((base & ~PAGE_MASK) + len + ~PAGE_MASK) >> PAGE_SHIFT;
- num_pages = get_user_pages_fast(base, size, 0, &page[i]);
- if ((num_pages != size) ||
-- (num_pages > MAX_SKB_FRAGS - skb_shinfo(skb)->nr_frags))
-- /* put_page is in skb free */
-+ (num_pages > MAX_SKB_FRAGS - skb_shinfo(skb)->nr_frags)) {
-+ for (i = 0; i < num_pages; i++)
-+ put_page(page[i]);
- return -EFAULT;
-+ }
- truesize = size * PAGE_SIZE;
- skb->data_len += len;
- skb->len += len;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0019-macvtap-zerocopy-set-SKBTX_DEV_ZEROCOPY-only-when-sk.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0019-macvtap-zerocopy-set-SKBTX_DEV_ZEROCOPY-only-when-sk.patch
deleted file mode 100644
index 737ed5c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0019-macvtap-zerocopy-set-SKBTX_DEV_ZEROCOPY-only-when-sk.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From c57df8c118c4c11ef6023034aa454636dd8780db Mon Sep 17 00:00:00 2001
-From: Jason Wang <jasowang at redhat.com>
-Date: Wed, 2 May 2012 11:42:06 +0800
-Subject: [PATCH 019/109] macvtap: zerocopy: set SKBTX_DEV_ZEROCOPY only when
- skb is built successfully
-
-commit 01d6657b388438def19c8baaea28e742b6ed32ec upstream.
-
-Current the SKBTX_DEV_ZEROCOPY is set unconditionally after
-zerocopy_sg_from_iovec(), this would lead NULL pointer when macvtap
-fails to build zerocopy skb because destructor_arg was not
-initialized. Solve this by set this flag after the skb were built
-successfully.
-
-Signed-off-by: Jason Wang <jasowang at redhat.com>
-Signed-off-by: Michael S. Tsirkin <mst at redhat.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/macvtap.c | 9 +++++----
- 1 files changed, 5 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/net/macvtap.c b/drivers/net/macvtap.c
-index f217247..7fecd66 100644
---- a/drivers/net/macvtap.c
-+++ b/drivers/net/macvtap.c
-@@ -698,10 +698,9 @@ static ssize_t macvtap_get_user(struct macvtap_queue *q, struct msghdr *m,
- if (!skb)
- goto err;
-
-- if (zerocopy) {
-+ if (zerocopy)
- err = zerocopy_sg_from_iovec(skb, iv, vnet_hdr_len, count);
-- skb_shinfo(skb)->tx_flags |= SKBTX_DEV_ZEROCOPY;
-- } else
-+ else
- err = skb_copy_datagram_from_iovec(skb, 0, iv, vnet_hdr_len,
- len);
- if (err)
-@@ -720,8 +719,10 @@ static ssize_t macvtap_get_user(struct macvtap_queue *q, struct msghdr *m,
- rcu_read_lock_bh();
- vlan = rcu_dereference_bh(q->vlan);
- /* copy skb_ubuf_info for callback when skb has no error */
-- if (zerocopy)
-+ if (zerocopy) {
- skb_shinfo(skb)->destructor_arg = m->msg_control;
-+ skb_shinfo(skb)->tx_flags |= SKBTX_DEV_ZEROCOPY;
-+ }
- if (vlan)
- macvlan_start_xmit(skb, vlan->dev);
- else
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0020-macvtap-zerocopy-validate-vectors-before-building-sk.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0020-macvtap-zerocopy-validate-vectors-before-building-sk.patch
deleted file mode 100644
index a46ddcb..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0020-macvtap-zerocopy-validate-vectors-before-building-sk.patch
+++ /dev/null
@@ -1,84 +0,0 @@
-From c93ad33631e3efbb6f02f24c6b6817227b2c9252 Mon Sep 17 00:00:00 2001
-From: Jason Wang <jasowang at redhat.com>
-Date: Wed, 2 May 2012 11:42:15 +0800
-Subject: [PATCH 020/109] macvtap: zerocopy: validate vectors before building
- skb
-
-commit b92946e2919134ebe2a4083e4302236295ea2a73 upstream.
-
-There're several reasons that the vectors need to be validated:
-
-- Return error when caller provides vectors whose num is greater than UIO_MAXIOV.
-- Linearize part of skb when userspace provides vectors grater than MAX_SKB_FRAGS.
-- Return error when userspace provides vectors whose total length may exceed
-- MAX_SKB_FRAGS * PAGE_SIZE.
-
-Signed-off-by: Jason Wang <jasowang at redhat.com>
-Signed-off-by: Michael S. Tsirkin <mst at redhat.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/macvtap.c | 25 +++++++++++++++++++++----
- 1 files changed, 21 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/net/macvtap.c b/drivers/net/macvtap.c
-index 7fecd66..26106c0 100644
---- a/drivers/net/macvtap.c
-+++ b/drivers/net/macvtap.c
-@@ -528,9 +528,10 @@ static int zerocopy_sg_from_iovec(struct sk_buff *skb, const struct iovec *from,
- }
- base = (unsigned long)from->iov_base + offset;
- size = ((base & ~PAGE_MASK) + len + ~PAGE_MASK) >> PAGE_SHIFT;
-+ if (i + size > MAX_SKB_FRAGS)
-+ return -EMSGSIZE;
- num_pages = get_user_pages_fast(base, size, 0, &page[i]);
-- if ((num_pages != size) ||
-- (num_pages > MAX_SKB_FRAGS - skb_shinfo(skb)->nr_frags)) {
-+ if (num_pages != size) {
- for (i = 0; i < num_pages; i++)
- put_page(page[i]);
- return -EFAULT;
-@@ -650,7 +651,7 @@ static ssize_t macvtap_get_user(struct macvtap_queue *q, struct msghdr *m,
- int err;
- struct virtio_net_hdr vnet_hdr = { 0 };
- int vnet_hdr_len = 0;
-- int copylen;
-+ int copylen = 0;
- bool zerocopy = false;
-
- if (q->flags & IFF_VNET_HDR) {
-@@ -679,15 +680,31 @@ static ssize_t macvtap_get_user(struct macvtap_queue *q, struct msghdr *m,
- if (unlikely(len < ETH_HLEN))
- goto err;
-
-+ err = -EMSGSIZE;
-+ if (unlikely(count > UIO_MAXIOV))
-+ goto err;
-+
- if (m && m->msg_control && sock_flag(&q->sk, SOCK_ZEROCOPY))
- zerocopy = true;
-
- if (zerocopy) {
-+ /* Userspace may produce vectors with count greater than
-+ * MAX_SKB_FRAGS, so we need to linearize parts of the skb
-+ * to let the rest of data to be fit in the frags.
-+ */
-+ if (count > MAX_SKB_FRAGS) {
-+ copylen = iov_length(iv, count - MAX_SKB_FRAGS);
-+ if (copylen < vnet_hdr_len)
-+ copylen = 0;
-+ else
-+ copylen -= vnet_hdr_len;
-+ }
- /* There are 256 bytes to be copied in skb, so there is enough
- * room for skb expand head in case it is used.
- * The rest buffer is mapped from userspace.
- */
-- copylen = vnet_hdr.hdr_len;
-+ if (copylen < vnet_hdr.hdr_len)
-+ copylen = vnet_hdr.hdr_len;
- if (!copylen)
- copylen = GOODCOPY_LEN;
- } else
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0021-KVM-Fix-buffer-overflow-in-kvm_set_irq.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0021-KVM-Fix-buffer-overflow-in-kvm_set_irq.patch
deleted file mode 100644
index 45dfb2d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0021-KVM-Fix-buffer-overflow-in-kvm_set_irq.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 274c1b4b54a12df73eb5fc2763a294ff2a04669c Mon Sep 17 00:00:00 2001
-From: Avi Kivity <avi at redhat.com>
-Date: Sun, 22 Apr 2012 17:02:11 +0300
-Subject: [PATCH 021/109] KVM: Fix buffer overflow in kvm_set_irq()
-
-commit f2ebd422f71cda9c791f76f85d2ca102ae34a1ed upstream.
-
-kvm_set_irq() has an internal buffer of three irq routing entries, allowing
-connecting a GSI to three IRQ chips or on MSI. However setup_routing_entry()
-does not properly enforce this, allowing three irqchip routes followed by
-an MSI route to overflow the buffer.
-
-Fix by ensuring that an MSI entry is added to an empty list.
-
-Signed-off-by: Avi Kivity <avi at redhat.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- virt/kvm/irq_comm.c | 1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-diff --git a/virt/kvm/irq_comm.c b/virt/kvm/irq_comm.c
-index 9f614b4..272407c 100644
---- a/virt/kvm/irq_comm.c
-+++ b/virt/kvm/irq_comm.c
-@@ -318,6 +318,7 @@ static int setup_routing_entry(struct kvm_irq_routing_table *rt,
- */
- hlist_for_each_entry(ei, n, &rt->map[ue->gsi], link)
- if (ei->type == KVM_IRQ_ROUTING_MSI ||
-+ ue->type == KVM_IRQ_ROUTING_MSI ||
- ue->u.irqchip.irqchip == ei->irqchip.irqchip)
- return r;
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0022-scsi-Silence-unnecessary-warnings-about-ioctl-to-par.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0022-scsi-Silence-unnecessary-warnings-about-ioctl-to-par.patch
deleted file mode 100644
index 86b471c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0022-scsi-Silence-unnecessary-warnings-about-ioctl-to-par.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From d0ef0e99137f622218e0395ccc12210e4804b5ed Mon Sep 17 00:00:00 2001
-From: Jan Kara <jack at suse.cz>
-Date: Fri, 15 Jun 2012 12:52:46 +0200
-Subject: [PATCH 022/109] scsi: Silence unnecessary warnings about ioctl to
- partition
-
-commit 6d9359280753d2955f86d6411047516a9431eb51 upstream.
-
-Sometimes, warnings about ioctls to partition happen often enough that they
-form majority of the warnings in the kernel log and users complain. In some
-cases warnings are about ioctls such as SG_IO so it's not good to get rid of
-the warnings completely as they can ease debugging of userspace problems
-when ioctl is refused.
-
-Since I have seen warnings from lots of commands, including some proprietary
-userspace applications, I don't think disallowing the ioctls for processes
-with CAP_SYS_RAWIO will happen in the near future if ever. So lets just
-stop warning for processes with CAP_SYS_RAWIO for which ioctl is allowed.
-
-CC: Paolo Bonzini <pbonzini at redhat.com>
-CC: James Bottomley <JBottomley at parallels.com>
-CC: linux-scsi at vger.kernel.org
-Acked-by: Paolo Bonzini <pbonzini at redhat.com>
-Signed-off-by: Jan Kara <jack at suse.cz>
-Signed-off-by: Jens Axboe <axboe at kernel.dk>
-[bwh: Backported to 3.2: use ENOTTY, not ENOIOCTLCMD]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- block/scsi_ioctl.c | 5 ++++-
- 1 files changed, 4 insertions(+), 1 deletions(-)
-
-diff --git a/block/scsi_ioctl.c b/block/scsi_ioctl.c
-index 688be8a..9e76a32 100644
---- a/block/scsi_ioctl.c
-+++ b/block/scsi_ioctl.c
-@@ -721,11 +721,14 @@ int scsi_verify_blk_ioctl(struct block_device *bd, unsigned int cmd)
- break;
- }
-
-+ if (capable(CAP_SYS_RAWIO))
-+ return 0;
-+
- /* In particular, rule out all resets and host-specific ioctls. */
- printk_ratelimited(KERN_WARNING
- "%s: sending ioctl %x to a partition!\n", current->comm, cmd);
-
-- return capable(CAP_SYS_RAWIO) ? 0 : -ENOTTY;
-+ return -ENOTTY;
- }
- EXPORT_SYMBOL(scsi_verify_blk_ioctl);
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0023-epoll-clear-the-tfile_check_list-on-ELOOP.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0023-epoll-clear-the-tfile_check_list-on-ELOOP.patch
deleted file mode 100644
index 8dbe37d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0023-epoll-clear-the-tfile_check_list-on-ELOOP.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 4255dce0ae728fe63f19ded56b5dc2c324d6f18d Mon Sep 17 00:00:00 2001
-From: Jason Baron <jbaron at redhat.com>
-Date: Wed, 25 Apr 2012 16:01:47 -0700
-Subject: [PATCH 023/109] epoll: clear the tfile_check_list on -ELOOP
-
-commit 13d518074a952d33d47c428419693f63389547e9 upstream.
-
-An epoll_ctl(,EPOLL_CTL_ADD,,) operation can return '-ELOOP' to prevent
-circular epoll dependencies from being created. However, in that case we
-do not properly clear the 'tfile_check_list'. Thus, add a call to
-clear_tfile_check_list() for the -ELOOP case.
-
-Signed-off-by: Jason Baron <jbaron at redhat.com>
-Reported-by: Yurij M. Plotnikov <Yurij.Plotnikov at oktetlabs.ru>
-Cc: Nelson Elhage <nelhage at nelhage.com>
-Cc: Davide Libenzi <davidel at xmailserver.org>
-Tested-by: Alexandra N. Kossovsky <Alexandra.Kossovsky at oktetlabs.ru>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/eventpoll.c | 4 +++-
- 1 files changed, 3 insertions(+), 1 deletions(-)
-
-diff --git a/fs/eventpoll.c b/fs/eventpoll.c
-index 4d9d3a4..a6f3763 100644
---- a/fs/eventpoll.c
-+++ b/fs/eventpoll.c
-@@ -1629,8 +1629,10 @@ SYSCALL_DEFINE4(epoll_ctl, int, epfd, int, op, int, fd,
- if (op == EPOLL_CTL_ADD) {
- if (is_file_epoll(tfile)) {
- error = -ELOOP;
-- if (ep_loop_check(ep, tfile) != 0)
-+ if (ep_loop_check(ep, tfile) != 0) {
-+ clear_tfile_check_list();
- goto error_tgt_fput;
-+ }
- } else
- list_add(&tfile->f_tfile_llink, &tfile_check_list);
- }
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0024-iommu-amd-Fix-missing-iommu_shutdown-initialization-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0024-iommu-amd-Fix-missing-iommu_shutdown-initialization-.patch
deleted file mode 100644
index 4c75e8e..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0024-iommu-amd-Fix-missing-iommu_shutdown-initialization-.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From be1ab01a00ec19b273050ad8f3fbb9472238b026 Mon Sep 17 00:00:00 2001
-From: Shuah Khan <shuah.khan at hp.com>
-Date: Wed, 6 Jun 2012 10:50:06 -0600
-Subject: [PATCH 024/109] iommu/amd: Fix missing iommu_shutdown initialization
- in passthrough mode
-
-commit f2f12b6fc032c7b1419fd6db84e2868b5f05a878 upstream.
-
-The iommu_shutdown callback is not initialized when the AMD
-IOMMU driver runs in passthrough mode. Fix that by moving
-the callback initialization before the check for
-passthrough mode.
-
-Signed-off-by: Shuah Khan <shuah.khan at hp.com>
-Signed-off-by: Joerg Roedel <joerg.roedel at amd.com>
-[bwh: Backported to 3.2: adjust context]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/iommu/amd_iommu_init.c | 3 ++-
- 1 files changed, 2 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/iommu/amd_iommu_init.c b/drivers/iommu/amd_iommu_init.c
-index 6269eb0..ef2d493 100644
---- a/drivers/iommu/amd_iommu_init.c
-+++ b/drivers/iommu/amd_iommu_init.c
-@@ -1468,6 +1468,8 @@ static int __init amd_iommu_init(void)
-
- register_syscore_ops(&amd_iommu_syscore_ops);
-
-+ x86_platform.iommu_shutdown = disable_iommus;
-+
- if (iommu_pass_through)
- goto out;
-
-@@ -1476,7 +1478,6 @@ static int __init amd_iommu_init(void)
- else
- printk(KERN_INFO "AMD-Vi: Lazy IO/TLB flushing enabled\n");
-
-- x86_platform.iommu_shutdown = disable_iommus;
- out:
- return ret;
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0025-iommu-amd-Initialize-dma_ops-for-hotplug-and-sriov-d.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0025-iommu-amd-Initialize-dma_ops-for-hotplug-and-sriov-d.patch
deleted file mode 100644
index 053d5e7..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0025-iommu-amd-Initialize-dma_ops-for-hotplug-and-sriov-d.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From 60eec119060fbd35f569fd77fd448dbcd8d8f011 Mon Sep 17 00:00:00 2001
-From: Joerg Roedel <joerg.roedel at amd.com>
-Date: Thu, 21 Jun 2012 14:52:40 +0200
-Subject: [PATCH 025/109] iommu/amd: Initialize dma_ops for hotplug and sriov
- devices
-
-commit ac1534a55d1e87d59a21c09c570605933b551480 upstream.
-
-When a device is added to the system at runtime the AMD
-IOMMU driver initializes the necessary data structures to
-handle translation for it. But it forgets to change the
-per-device dma_ops to point to the AMD IOMMU driver. So
-mapping actually never happens and all DMA accesses end in
-an IO_PAGE_FAULT. Fix this.
-
-Reported-by: Stefan Assmann <sassmann at redhat.com>
-Signed-off-by: Joerg Roedel <joerg.roedel at amd.com>
-[bwh: Backported to 3.2:
- - Adjust context
- - Use global iommu_pass_through; there is no per-device pass_through]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/iommu/amd_iommu.c | 7 +++++++
- 1 files changed, 7 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c
-index f1d5408..a1b8caa 100644
---- a/drivers/iommu/amd_iommu.c
-+++ b/drivers/iommu/amd_iommu.c
-@@ -59,6 +59,8 @@ static struct protection_domain *pt_domain;
-
- static struct iommu_ops amd_iommu_ops;
-
-+static struct dma_map_ops amd_iommu_dma_ops;
-+
- /*
- * general struct to manage commands send to an IOMMU
- */
-@@ -1878,6 +1880,11 @@ static int device_change_notifier(struct notifier_block *nb,
- list_add_tail(&dma_domain->list, &iommu_pd_list);
- spin_unlock_irqrestore(&iommu_pd_list_lock, flags);
-
-+ if (!iommu_pass_through)
-+ dev->archdata.dma_ops = &amd_iommu_dma_ops;
-+ else
-+ dev->archdata.dma_ops = &nommu_dma_ops;
-+
- break;
- case BUS_NOTIFY_DEL_DEVICE:
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0026-usb-Add-support-for-root-hub-port-status-CAS.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0026-usb-Add-support-for-root-hub-port-status-CAS.patch
deleted file mode 100644
index 827fcec..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0026-usb-Add-support-for-root-hub-port-status-CAS.patch
+++ /dev/null
@@ -1,170 +0,0 @@
-From 6455e1a5be4eb27a1587322e0ed3a7ff6c3d8e4f Mon Sep 17 00:00:00 2001
-From: Stanislaw Ledwon <staszek.ledwon at linux.jf.intel.com>
-Date: Mon, 18 Jun 2012 15:20:00 +0200
-Subject: [PATCH 026/109] usb: Add support for root hub port status CAS
-
-commit 8bea2bd37df08aaa599aa361a9f8b836ba98e554 upstream.
-
-The host controller port status register supports CAS (Cold Attach
-Status) bit. This bit could be set when USB3.0 device is connected
-when system is in Sx state. When the system wakes to S0 this port
-status with CAS bit is reported and this port can't be used by any
-device.
-
-When CAS bit is set the port should be reset by warm reset. This
-was not supported by xhci driver.
-
-The issue was found when pendrive was connected to suspended
-platform. The link state of "Compliance Mode" was reported together
-with CAS bit. This link state was also not supported by xhci and
-core/hub.c.
-
-The CAS bit is defined only for xhci root hub port and it is
-not supported on regular hubs. The link status is used to force
-warm reset on port. Make the USB core issue a warm reset when port
-is in ether the 'inactive' or 'compliance mode'. Change the xHCI driver
-to report 'compliance mode' when the CAS is set. This force warm reset
-on the root hub port.
-
-This patch should be backported to stable kernels as old as 3.2, that
-contain the commit 10d674a82e553cb8a1f41027bb3c3e309b3f6804 "USB: When
-hot reset for USB3 fails, try warm reset."
-
-Signed-off-by: Stanislaw Ledwon <staszek.ledwon at linux.intel.com>
-Signed-off-by: Sarah Sharp <sarah.a.sharp at linux.intel.com>
-Acked-by: Andiry Xu <andiry.xu at amd.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/core/hub.c | 18 +++++++++-------
- drivers/usb/host/xhci-hub.c | 44 +++++++++++++++++++++++++++++++++++++-----
- drivers/usb/host/xhci.h | 6 ++++-
- 3 files changed, 53 insertions(+), 15 deletions(-)
-
-diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
-index 50cf41a..2bc736f 100644
---- a/drivers/usb/core/hub.c
-+++ b/drivers/usb/core/hub.c
-@@ -2039,12 +2039,16 @@ static unsigned hub_is_wusb(struct usb_hub *hub)
- static int hub_port_reset(struct usb_hub *hub, int port1,
- struct usb_device *udev, unsigned int delay, bool warm);
-
--/* Is a USB 3.0 port in the Inactive state? */
--static bool hub_port_inactive(struct usb_hub *hub, u16 portstatus)
-+/* Is a USB 3.0 port in the Inactive or Complinance Mode state?
-+ * Port worm reset is required to recover
-+ */
-+static bool hub_port_warm_reset_required(struct usb_hub *hub, u16 portstatus)
- {
- return hub_is_superspeed(hub->hdev) &&
-- (portstatus & USB_PORT_STAT_LINK_STATE) ==
-- USB_SS_PORT_LS_SS_INACTIVE;
-+ (((portstatus & USB_PORT_STAT_LINK_STATE) ==
-+ USB_SS_PORT_LS_SS_INACTIVE) ||
-+ ((portstatus & USB_PORT_STAT_LINK_STATE) ==
-+ USB_SS_PORT_LS_COMP_MOD)) ;
- }
-
- static int hub_port_wait_reset(struct usb_hub *hub, int port1,
-@@ -2080,7 +2084,7 @@ static int hub_port_wait_reset(struct usb_hub *hub, int port1,
- *
- * See https://bugzilla.kernel.org/show_bug.cgi?id=41752
- */
-- if (hub_port_inactive(hub, portstatus)) {
-+ if (hub_port_warm_reset_required(hub, portstatus)) {
- int ret;
-
- if ((portchange & USB_PORT_STAT_C_CONNECTION))
-@@ -3646,9 +3650,7 @@ static void hub_events(void)
- /* Warm reset a USB3 protocol port if it's in
- * SS.Inactive state.
- */
-- if (hub_is_superspeed(hub->hdev) &&
-- (portstatus & USB_PORT_STAT_LINK_STATE)
-- == USB_SS_PORT_LS_SS_INACTIVE) {
-+ if (hub_port_warm_reset_required(hub, portstatus)) {
- dev_dbg(hub_dev, "warm reset port %d\n", i);
- hub_port_reset(hub, i, NULL,
- HUB_BH_RESET_TIME, true);
-diff --git a/drivers/usb/host/xhci-hub.c b/drivers/usb/host/xhci-hub.c
-index a8b2980..fd8a2c2 100644
---- a/drivers/usb/host/xhci-hub.c
-+++ b/drivers/usb/host/xhci-hub.c
-@@ -438,6 +438,42 @@ void xhci_test_and_clear_bit(struct xhci_hcd *xhci, __le32 __iomem **port_array,
- }
- }
-
-+/* Updates Link Status for super Speed port */
-+static void xhci_hub_report_link_state(u32 *status, u32 status_reg)
-+{
-+ u32 pls = status_reg & PORT_PLS_MASK;
-+
-+ /* resume state is a xHCI internal state.
-+ * Do not report it to usb core.
-+ */
-+ if (pls == XDEV_RESUME)
-+ return;
-+
-+ /* When the CAS bit is set then warm reset
-+ * should be performed on port
-+ */
-+ if (status_reg & PORT_CAS) {
-+ /* The CAS bit can be set while the port is
-+ * in any link state.
-+ * Only roothubs have CAS bit, so we
-+ * pretend to be in compliance mode
-+ * unless we're already in compliance
-+ * or the inactive state.
-+ */
-+ if (pls != USB_SS_PORT_LS_COMP_MOD &&
-+ pls != USB_SS_PORT_LS_SS_INACTIVE) {
-+ pls = USB_SS_PORT_LS_COMP_MOD;
-+ }
-+ /* Return also connection bit -
-+ * hub state machine resets port
-+ * when this bit is set.
-+ */
-+ pls |= USB_PORT_STAT_CONNECTION;
-+ }
-+ /* update status field */
-+ *status |= pls;
-+}
-+
- int xhci_hub_control(struct usb_hcd *hcd, u16 typeReq, u16 wValue,
- u16 wIndex, char *buf, u16 wLength)
- {
-@@ -579,13 +615,9 @@ int xhci_hub_control(struct usb_hcd *hcd, u16 typeReq, u16 wValue,
- else
- status |= USB_PORT_STAT_POWER;
- }
-- /* Port Link State */
-+ /* Update Port Link State for super speed ports*/
- if (hcd->speed == HCD_USB3) {
-- /* resume state is a xHCI internal state.
-- * Do not report it to usb core.
-- */
-- if ((temp & PORT_PLS_MASK) != XDEV_RESUME)
-- status |= (temp & PORT_PLS_MASK);
-+ xhci_hub_report_link_state(&status, temp);
- }
- if (bus_state->port_c_suspend & (1 << wIndex))
- status |= 1 << USB_PORT_FEAT_C_SUSPEND;
-diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h
-index 363b141..7a56805 100644
---- a/drivers/usb/host/xhci.h
-+++ b/drivers/usb/host/xhci.h
-@@ -341,7 +341,11 @@ struct xhci_op_regs {
- #define PORT_PLC (1 << 22)
- /* port configure error change - port failed to configure its link partner */
- #define PORT_CEC (1 << 23)
--/* bit 24 reserved */
-+/* Cold Attach Status - xHC can set this bit to report device attached during
-+ * Sx state. Warm port reset should be perfomed to clear this bit and move port
-+ * to connected state.
-+ */
-+#define PORT_CAS (1 << 24)
- /* wake on connect (enable) */
- #define PORT_WKCONN_E (1 << 25)
- /* wake on disconnect (enable) */
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0027-gpiolib-wm8994-Pay-attention-to-the-value-set-when-e.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0027-gpiolib-wm8994-Pay-attention-to-the-value-set-when-e.patch
deleted file mode 100644
index 706d989..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0027-gpiolib-wm8994-Pay-attention-to-the-value-set-when-e.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 5cdc2897a0bb7b11585d5b14eb3f2faa1505348c Mon Sep 17 00:00:00 2001
-From: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Date: Sat, 9 Jun 2012 11:07:56 +0800
-Subject: [PATCH 027/109] gpiolib: wm8994: Pay attention to the value set when
- enabling as output
-
-commit 8cd578b6e28693f357867a77598a88ef3deb6b39 upstream.
-
-Not paying attention to the value being set is a bad thing because it
-means that we'll not set the hardware up to reflect what was requested.
-Not setting the hardware up to reflect what was requested means that the
-caller won't get the results they wanted.
-
-Signed-off-by: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Signed-off-by: Linus Walleij <linus.walleij at linaro.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpio/gpio-wm8994.c | 5 ++++-
- 1 files changed, 4 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/gpio/gpio-wm8994.c b/drivers/gpio/gpio-wm8994.c
-index 96198f3..a2da8f2 100644
---- a/drivers/gpio/gpio-wm8994.c
-+++ b/drivers/gpio/gpio-wm8994.c
-@@ -89,8 +89,11 @@ static int wm8994_gpio_direction_out(struct gpio_chip *chip,
- struct wm8994_gpio *wm8994_gpio = to_wm8994_gpio(chip);
- struct wm8994 *wm8994 = wm8994_gpio->wm8994;
-
-+ if (value)
-+ value = WM8994_GPN_LVL;
-+
- return wm8994_set_bits(wm8994, WM8994_GPIO_1 + offset,
-- WM8994_GPN_DIR, 0);
-+ WM8994_GPN_DIR | WM8994_GPN_LVL, value);
- }
-
- static void wm8994_gpio_set(struct gpio_chip *chip, unsigned offset, int value)
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0028-sched-nohz-Rewrite-and-fix-load-avg-computation-agai.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0028-sched-nohz-Rewrite-and-fix-load-avg-computation-agai.patch
deleted file mode 100644
index 5659ce7..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0028-sched-nohz-Rewrite-and-fix-load-avg-computation-agai.patch
+++ /dev/null
@@ -1,462 +0,0 @@
-From a7d3f237430003ca8d32d1703770f04d32a02b27 Mon Sep 17 00:00:00 2001
-From: Peter Zijlstra <a.p.zijlstra at chello.nl>
-Date: Fri, 22 Jun 2012 15:52:09 +0200
-Subject: [PATCH 028/109] sched/nohz: Rewrite and fix load-avg computation --
- again
-
-commit 5167e8d5417bf5c322a703d2927daec727ea40dd upstream.
-
-Thanks to Charles Wang for spotting the defects in the current code:
-
- - If we go idle during the sample window -- after sampling, we get a
- negative bias because we can negate our own sample.
-
- - If we wake up during the sample window we get a positive bias
- because we push the sample to a known active period.
-
-So rewrite the entire nohz load-avg muck once again, now adding
-copious documentation to the code.
-
-Reported-and-tested-by: Doug Smythies <dsmythies at telus.net>
-Reported-and-tested-by: Charles Wang <muming.wq at gmail.com>
-Signed-off-by: Peter Zijlstra <a.p.zijlstra at chello.nl>
-Cc: Linus Torvalds <torvalds at linux-foundation.org>
-Cc: Andrew Morton <akpm at linux-foundation.org>
-Link: http://lkml.kernel.org/r/1340373782.18025.74.camel@twins
-[ minor edits ]
-Signed-off-by: Ingo Molnar <mingo at kernel.org>
-[bwh: Backported to 3.2: adjust filenames, context]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- include/linux/sched.h | 8 ++
- kernel/sched.c | 276 ++++++++++++++++++++++++++++++++++------------
- kernel/sched_idletask.c | 1 -
- kernel/time/tick-sched.c | 2 +
- 4 files changed, 213 insertions(+), 74 deletions(-)
-
-diff --git a/include/linux/sched.h b/include/linux/sched.h
-index 1c4f3e9..5afa2a3 100644
---- a/include/linux/sched.h
-+++ b/include/linux/sched.h
-@@ -1892,6 +1892,14 @@ static inline int set_cpus_allowed_ptr(struct task_struct *p,
- }
- #endif
-
-+#ifdef CONFIG_NO_HZ
-+void calc_load_enter_idle(void);
-+void calc_load_exit_idle(void);
-+#else
-+static inline void calc_load_enter_idle(void) { }
-+static inline void calc_load_exit_idle(void) { }
-+#endif /* CONFIG_NO_HZ */
-+
- #ifndef CONFIG_CPUMASK_OFFSTACK
- static inline int set_cpus_allowed(struct task_struct *p, cpumask_t new_mask)
- {
-diff --git a/kernel/sched.c b/kernel/sched.c
-index 576a27f..52ac69b 100644
---- a/kernel/sched.c
-+++ b/kernel/sched.c
-@@ -1885,7 +1885,6 @@ static void double_rq_unlock(struct rq *rq1, struct rq *rq2)
-
- #endif
-
--static void calc_load_account_idle(struct rq *this_rq);
- static void update_sysctl(void);
- static int get_update_sysctl_factor(void);
- static void update_cpu_load(struct rq *this_rq);
-@@ -3401,11 +3400,73 @@ unsigned long this_cpu_load(void)
- }
-
-
-+/*
-+ * Global load-average calculations
-+ *
-+ * We take a distributed and async approach to calculating the global load-avg
-+ * in order to minimize overhead.
-+ *
-+ * The global load average is an exponentially decaying average of nr_running +
-+ * nr_uninterruptible.
-+ *
-+ * Once every LOAD_FREQ:
-+ *
-+ * nr_active = 0;
-+ * for_each_possible_cpu(cpu)
-+ * nr_active += cpu_of(cpu)->nr_running + cpu_of(cpu)->nr_uninterruptible;
-+ *
-+ * avenrun[n] = avenrun[0] * exp_n + nr_active * (1 - exp_n)
-+ *
-+ * Due to a number of reasons the above turns in the mess below:
-+ *
-+ * - for_each_possible_cpu() is prohibitively expensive on machines with
-+ * serious number of cpus, therefore we need to take a distributed approach
-+ * to calculating nr_active.
-+ *
-+ * \Sum_i x_i(t) = \Sum_i x_i(t) - x_i(t_0) | x_i(t_0) := 0
-+ * = \Sum_i { \Sum_j=1 x_i(t_j) - x_i(t_j-1) }
-+ *
-+ * So assuming nr_active := 0 when we start out -- true per definition, we
-+ * can simply take per-cpu deltas and fold those into a global accumulate
-+ * to obtain the same result. See calc_load_fold_active().
-+ *
-+ * Furthermore, in order to avoid synchronizing all per-cpu delta folding
-+ * across the machine, we assume 10 ticks is sufficient time for every
-+ * cpu to have completed this task.
-+ *
-+ * This places an upper-bound on the IRQ-off latency of the machine. Then
-+ * again, being late doesn't loose the delta, just wrecks the sample.
-+ *
-+ * - cpu_rq()->nr_uninterruptible isn't accurately tracked per-cpu because
-+ * this would add another cross-cpu cacheline miss and atomic operation
-+ * to the wakeup path. Instead we increment on whatever cpu the task ran
-+ * when it went into uninterruptible state and decrement on whatever cpu
-+ * did the wakeup. This means that only the sum of nr_uninterruptible over
-+ * all cpus yields the correct result.
-+ *
-+ * This covers the NO_HZ=n code, for extra head-aches, see the comment below.
-+ */
-+
- /* Variables and functions for calc_load */
- static atomic_long_t calc_load_tasks;
- static unsigned long calc_load_update;
- unsigned long avenrun[3];
--EXPORT_SYMBOL(avenrun);
-+EXPORT_SYMBOL(avenrun); /* should be removed */
-+
-+/**
-+ * get_avenrun - get the load average array
-+ * @loads: pointer to dest load array
-+ * @offset: offset to add
-+ * @shift: shift count to shift the result left
-+ *
-+ * These values are estimates at best, so no need for locking.
-+ */
-+void get_avenrun(unsigned long *loads, unsigned long offset, int shift)
-+{
-+ loads[0] = (avenrun[0] + offset) << shift;
-+ loads[1] = (avenrun[1] + offset) << shift;
-+ loads[2] = (avenrun[2] + offset) << shift;
-+}
-
- static long calc_load_fold_active(struct rq *this_rq)
- {
-@@ -3422,6 +3483,9 @@ static long calc_load_fold_active(struct rq *this_rq)
- return delta;
- }
-
-+/*
-+ * a1 = a0 * e + a * (1 - e)
-+ */
- static unsigned long
- calc_load(unsigned long load, unsigned long exp, unsigned long active)
- {
-@@ -3433,30 +3497,118 @@ calc_load(unsigned long load, unsigned long exp, unsigned long active)
-
- #ifdef CONFIG_NO_HZ
- /*
-- * For NO_HZ we delay the active fold to the next LOAD_FREQ update.
-+ * Handle NO_HZ for the global load-average.
-+ *
-+ * Since the above described distributed algorithm to compute the global
-+ * load-average relies on per-cpu sampling from the tick, it is affected by
-+ * NO_HZ.
-+ *
-+ * The basic idea is to fold the nr_active delta into a global idle-delta upon
-+ * entering NO_HZ state such that we can include this as an 'extra' cpu delta
-+ * when we read the global state.
-+ *
-+ * Obviously reality has to ruin such a delightfully simple scheme:
-+ *
-+ * - When we go NO_HZ idle during the window, we can negate our sample
-+ * contribution, causing under-accounting.
-+ *
-+ * We avoid this by keeping two idle-delta counters and flipping them
-+ * when the window starts, thus separating old and new NO_HZ load.
-+ *
-+ * The only trick is the slight shift in index flip for read vs write.
-+ *
-+ * 0s 5s 10s 15s
-+ * +10 +10 +10 +10
-+ * |-|-----------|-|-----------|-|-----------|-|
-+ * r:0 0 1 1 0 0 1 1 0
-+ * w:0 1 1 0 0 1 1 0 0
-+ *
-+ * This ensures we'll fold the old idle contribution in this window while
-+ * accumlating the new one.
-+ *
-+ * - When we wake up from NO_HZ idle during the window, we push up our
-+ * contribution, since we effectively move our sample point to a known
-+ * busy state.
-+ *
-+ * This is solved by pushing the window forward, and thus skipping the
-+ * sample, for this cpu (effectively using the idle-delta for this cpu which
-+ * was in effect at the time the window opened). This also solves the issue
-+ * of having to deal with a cpu having been in NOHZ idle for multiple
-+ * LOAD_FREQ intervals.
- *
- * When making the ILB scale, we should try to pull this in as well.
- */
--static atomic_long_t calc_load_tasks_idle;
-+static atomic_long_t calc_load_idle[2];
-+static int calc_load_idx;
-
--static void calc_load_account_idle(struct rq *this_rq)
-+static inline int calc_load_write_idx(void)
- {
-+ int idx = calc_load_idx;
-+
-+ /*
-+ * See calc_global_nohz(), if we observe the new index, we also
-+ * need to observe the new update time.
-+ */
-+ smp_rmb();
-+
-+ /*
-+ * If the folding window started, make sure we start writing in the
-+ * next idle-delta.
-+ */
-+ if (!time_before(jiffies, calc_load_update))
-+ idx++;
-+
-+ return idx & 1;
-+}
-+
-+static inline int calc_load_read_idx(void)
-+{
-+ return calc_load_idx & 1;
-+}
-+
-+void calc_load_enter_idle(void)
-+{
-+ struct rq *this_rq = this_rq();
- long delta;
-
-+ /*
-+ * We're going into NOHZ mode, if there's any pending delta, fold it
-+ * into the pending idle delta.
-+ */
- delta = calc_load_fold_active(this_rq);
-- if (delta)
-- atomic_long_add(delta, &calc_load_tasks_idle);
-+ if (delta) {
-+ int idx = calc_load_write_idx();
-+ atomic_long_add(delta, &calc_load_idle[idx]);
-+ }
- }
-
--static long calc_load_fold_idle(void)
-+void calc_load_exit_idle(void)
- {
-- long delta = 0;
-+ struct rq *this_rq = this_rq();
-+
-+ /*
-+ * If we're still before the sample window, we're done.
-+ */
-+ if (time_before(jiffies, this_rq->calc_load_update))
-+ return;
-
- /*
-- * Its got a race, we don't care...
-+ * We woke inside or after the sample window, this means we're already
-+ * accounted through the nohz accounting, so skip the entire deal and
-+ * sync up for the next window.
- */
-- if (atomic_long_read(&calc_load_tasks_idle))
-- delta = atomic_long_xchg(&calc_load_tasks_idle, 0);
-+ this_rq->calc_load_update = calc_load_update;
-+ if (time_before(jiffies, this_rq->calc_load_update + 10))
-+ this_rq->calc_load_update += LOAD_FREQ;
-+}
-+
-+static long calc_load_fold_idle(void)
-+{
-+ int idx = calc_load_read_idx();
-+ long delta = 0;
-+
-+ if (atomic_long_read(&calc_load_idle[idx]))
-+ delta = atomic_long_xchg(&calc_load_idle[idx], 0);
-
- return delta;
- }
-@@ -3542,66 +3694,39 @@ static void calc_global_nohz(void)
- {
- long delta, active, n;
-
-- /*
-- * If we crossed a calc_load_update boundary, make sure to fold
-- * any pending idle changes, the respective CPUs might have
-- * missed the tick driven calc_load_account_active() update
-- * due to NO_HZ.
-- */
-- delta = calc_load_fold_idle();
-- if (delta)
-- atomic_long_add(delta, &calc_load_tasks);
--
-- /*
-- * It could be the one fold was all it took, we done!
-- */
-- if (time_before(jiffies, calc_load_update + 10))
-- return;
--
-- /*
-- * Catch-up, fold however many we are behind still
-- */
-- delta = jiffies - calc_load_update - 10;
-- n = 1 + (delta / LOAD_FREQ);
-+ if (!time_before(jiffies, calc_load_update + 10)) {
-+ /*
-+ * Catch-up, fold however many we are behind still
-+ */
-+ delta = jiffies - calc_load_update - 10;
-+ n = 1 + (delta / LOAD_FREQ);
-
-- active = atomic_long_read(&calc_load_tasks);
-- active = active > 0 ? active * FIXED_1 : 0;
-+ active = atomic_long_read(&calc_load_tasks);
-+ active = active > 0 ? active * FIXED_1 : 0;
-
-- avenrun[0] = calc_load_n(avenrun[0], EXP_1, active, n);
-- avenrun[1] = calc_load_n(avenrun[1], EXP_5, active, n);
-- avenrun[2] = calc_load_n(avenrun[2], EXP_15, active, n);
-+ avenrun[0] = calc_load_n(avenrun[0], EXP_1, active, n);
-+ avenrun[1] = calc_load_n(avenrun[1], EXP_5, active, n);
-+ avenrun[2] = calc_load_n(avenrun[2], EXP_15, active, n);
-
-- calc_load_update += n * LOAD_FREQ;
--}
--#else
--static void calc_load_account_idle(struct rq *this_rq)
--{
--}
-+ calc_load_update += n * LOAD_FREQ;
-+ }
-
--static inline long calc_load_fold_idle(void)
--{
-- return 0;
-+ /*
-+ * Flip the idle index...
-+ *
-+ * Make sure we first write the new time then flip the index, so that
-+ * calc_load_write_idx() will see the new time when it reads the new
-+ * index, this avoids a double flip messing things up.
-+ */
-+ smp_wmb();
-+ calc_load_idx++;
- }
-+#else /* !CONFIG_NO_HZ */
-
--static void calc_global_nohz(void)
--{
--}
--#endif
-+static inline long calc_load_fold_idle(void) { return 0; }
-+static inline void calc_global_nohz(void) { }
-
--/**
-- * get_avenrun - get the load average array
-- * @loads: pointer to dest load array
-- * @offset: offset to add
-- * @shift: shift count to shift the result left
-- *
-- * These values are estimates at best, so no need for locking.
-- */
--void get_avenrun(unsigned long *loads, unsigned long offset, int shift)
--{
-- loads[0] = (avenrun[0] + offset) << shift;
-- loads[1] = (avenrun[1] + offset) << shift;
-- loads[2] = (avenrun[2] + offset) << shift;
--}
-+#endif /* CONFIG_NO_HZ */
-
- /*
- * calc_load - update the avenrun load estimates 10 ticks after the
-@@ -3609,11 +3734,18 @@ void get_avenrun(unsigned long *loads, unsigned long offset, int shift)
- */
- void calc_global_load(unsigned long ticks)
- {
-- long active;
-+ long active, delta;
-
- if (time_before(jiffies, calc_load_update + 10))
- return;
-
-+ /*
-+ * Fold the 'old' idle-delta to include all NO_HZ cpus.
-+ */
-+ delta = calc_load_fold_idle();
-+ if (delta)
-+ atomic_long_add(delta, &calc_load_tasks);
-+
- active = atomic_long_read(&calc_load_tasks);
- active = active > 0 ? active * FIXED_1 : 0;
-
-@@ -3624,12 +3756,7 @@ void calc_global_load(unsigned long ticks)
- calc_load_update += LOAD_FREQ;
-
- /*
-- * Account one period with whatever state we found before
-- * folding in the nohz state and ageing the entire idle period.
-- *
-- * This avoids loosing a sample when we go idle between
-- * calc_load_account_active() (10 ticks ago) and now and thus
-- * under-accounting.
-+ * In case we idled for multiple LOAD_FREQ intervals, catch up in bulk.
- */
- calc_global_nohz();
- }
-@@ -3646,7 +3773,6 @@ static void calc_load_account_active(struct rq *this_rq)
- return;
-
- delta = calc_load_fold_active(this_rq);
-- delta += calc_load_fold_idle();
- if (delta)
- atomic_long_add(delta, &calc_load_tasks);
-
-@@ -3654,6 +3780,10 @@ static void calc_load_account_active(struct rq *this_rq)
- }
-
- /*
-+ * End of global load-average stuff
-+ */
-+
-+/*
- * The exact cpuload at various idx values, calculated at every tick would be
- * load = (2^idx - 1) / 2^idx * load + 1 / 2^idx * cur_load
- *
-diff --git a/kernel/sched_idletask.c b/kernel/sched_idletask.c
-index 0a51882..be92bfe 100644
---- a/kernel/sched_idletask.c
-+++ b/kernel/sched_idletask.c
-@@ -23,7 +23,6 @@ static void check_preempt_curr_idle(struct rq *rq, struct task_struct *p, int fl
- static struct task_struct *pick_next_task_idle(struct rq *rq)
- {
- schedstat_inc(rq, sched_goidle);
-- calc_load_account_idle(rq);
- return rq->idle;
- }
-
-diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c
-index c923640..9955ebd 100644
---- a/kernel/time/tick-sched.c
-+++ b/kernel/time/tick-sched.c
-@@ -430,6 +430,7 @@ void tick_nohz_stop_sched_tick(int inidle)
- */
- if (!ts->tick_stopped) {
- select_nohz_load_balancer(1);
-+ calc_load_enter_idle();
-
- ts->idle_tick = hrtimer_get_expires(&ts->sched_timer);
- ts->tick_stopped = 1;
-@@ -563,6 +564,7 @@ void tick_nohz_restart_sched_tick(void)
- account_idle_ticks(ticks);
- #endif
-
-+ calc_load_exit_idle();
- touch_softlockup_watchdog();
- /*
- * Cancel the scheduled timer and restore the tick
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0029-USB-option-add-ZTE-MF60.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0029-USB-option-add-ZTE-MF60.patch
deleted file mode 100644
index 0c6d8be..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0029-USB-option-add-ZTE-MF60.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-From 4090ab847de2c528ae152e864a7ce604ef300837 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Bj=C3=B8rn=20Mork?= <bjorn at mork.no>
-Date: Mon, 2 Jul 2012 19:53:55 +0200
-Subject: [PATCH 029/109] USB: option: add ZTE MF60
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit 8e16e33c168a6efd0c9f7fa9dd4c1e1db9a74553 upstream.
-
-Switches into a composite device by ejecting the initial
-driver CD. The four interfaces are: QCDM, AT, QMI/wwan
-and mass storage. Let this driver manage the two serial
-interfaces:
-
-T: Bus=02 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 28 Spd=480 MxCh= 0
-D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
-P: Vendor=19d2 ProdID=1402 Rev= 0.00
-S: Manufacturer=ZTE,Incorporated
-S: Product=ZTE WCDMA Technologies MSM
-S: SerialNumber=xxxxx
-C:* #Ifs= 4 Cfg#= 1 Atr=c0 MxPwr=500mA
-I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
-E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
-E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
-I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
-E: Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
-E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
-I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=qmi_wwan
-E: Ad=83(I) Atr=03(Int.) MxPS= 64 Ivl=2ms
-E: Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
-E: Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
-I:* If#= 3 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
-E: Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
-E: Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
-
-Signed-off-by: Bjørn Mork <bjorn at mork.no>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/serial/option.c | 6 ++++++
- 1 files changed, 6 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
-index 21a4734..5960c7b 100644
---- a/drivers/usb/serial/option.c
-+++ b/drivers/usb/serial/option.c
-@@ -553,6 +553,10 @@ static const struct option_blacklist_info net_intf1_blacklist = {
- .reserved = BIT(1),
- };
-
-+static const struct option_blacklist_info net_intf2_blacklist = {
-+ .reserved = BIT(2),
-+};
-+
- static const struct option_blacklist_info net_intf3_blacklist = {
- .reserved = BIT(3),
- };
-@@ -1093,6 +1097,8 @@ static const struct usb_device_id option_ids[] = {
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1298, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1299, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1300, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1402, 0xff, 0xff, 0xff),
-+ .driver_info = (kernel_ulong_t)&net_intf2_blacklist },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x2002, 0xff,
- 0xff, 0xff), .driver_info = (kernel_ulong_t)&zte_k3765_z_blacklist },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x2003, 0xff, 0xff, 0xff) },
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0030-USB-option-Add-MEDIATEK-product-ids.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0030-USB-option-Add-MEDIATEK-product-ids.patch
deleted file mode 100644
index 0091085..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0030-USB-option-Add-MEDIATEK-product-ids.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From 26b05210d9f77b9b92fb12a73da5b9f6cb1b3f07 Mon Sep 17 00:00:00 2001
-From: Gaosen Zhang <gaosen.zhang at mediatek.com>
-Date: Thu, 5 Jul 2012 21:49:00 +0800
-Subject: [PATCH 030/109] USB: option: Add MEDIATEK product ids
-
-commit aacef9c561a693341566a6850c451ce3df68cb9a upstream.
-
-Signed-off-by: Gaosen Zhang <gaosen.zhang at mediatek.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/serial/option.c | 20 ++++++++++++++++++++
- 1 files changed, 20 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
-index 5960c7b..5971c95 100644
---- a/drivers/usb/serial/option.c
-+++ b/drivers/usb/serial/option.c
-@@ -496,6 +496,15 @@ static void option_instat_callback(struct urb *urb);
-
- /* MediaTek products */
- #define MEDIATEK_VENDOR_ID 0x0e8d
-+#define MEDIATEK_PRODUCT_DC_1COM 0x00a0
-+#define MEDIATEK_PRODUCT_DC_4COM 0x00a5
-+#define MEDIATEK_PRODUCT_DC_5COM 0x00a4
-+#define MEDIATEK_PRODUCT_7208_1COM 0x7101
-+#define MEDIATEK_PRODUCT_7208_2COM 0x7102
-+#define MEDIATEK_PRODUCT_FP_1COM 0x0003
-+#define MEDIATEK_PRODUCT_FP_2COM 0x0023
-+#define MEDIATEK_PRODUCT_FPDC_1COM 0x0043
-+#define MEDIATEK_PRODUCT_FPDC_2COM 0x0033
-
- /* Cellient products */
- #define CELLIENT_VENDOR_ID 0x2692
-@@ -1240,6 +1249,17 @@ static const struct usb_device_id option_ids[] = {
- { USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, 0x00a1, 0xff, 0x02, 0x01) },
- { USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, 0x00a2, 0xff, 0x00, 0x00) },
- { USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, 0x00a2, 0xff, 0x02, 0x01) }, /* MediaTek MT6276M modem & app port */
-+ { USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, MEDIATEK_PRODUCT_DC_1COM, 0x0a, 0x00, 0x00) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, MEDIATEK_PRODUCT_DC_5COM, 0xff, 0x02, 0x01) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, MEDIATEK_PRODUCT_DC_5COM, 0xff, 0x00, 0x00) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, MEDIATEK_PRODUCT_DC_4COM, 0xff, 0x02, 0x01) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, MEDIATEK_PRODUCT_DC_4COM, 0xff, 0x00, 0x00) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, MEDIATEK_PRODUCT_7208_1COM, 0x02, 0x00, 0x00) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, MEDIATEK_PRODUCT_7208_2COM, 0x02, 0x02, 0x01) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, MEDIATEK_PRODUCT_FP_1COM, 0x0a, 0x00, 0x00) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, MEDIATEK_PRODUCT_FP_2COM, 0x0a, 0x00, 0x00) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, MEDIATEK_PRODUCT_FPDC_1COM, 0x0a, 0x00, 0x00) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, MEDIATEK_PRODUCT_FPDC_2COM, 0x0a, 0x00, 0x00) },
- { USB_DEVICE(CELLIENT_VENDOR_ID, CELLIENT_PRODUCT_MEN200) },
- { } /* Terminating entry */
- };
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0031-USB-cdc-wdm-fix-lockup-on-error-in-wdm_read.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0031-USB-cdc-wdm-fix-lockup-on-error-in-wdm_read.patch
deleted file mode 100644
index 3fb9fae..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0031-USB-cdc-wdm-fix-lockup-on-error-in-wdm_read.patch
+++ /dev/null
@@ -1,78 +0,0 @@
-From 6fb488dec8482c866a2c7cd4d1da06b85b8b28c7 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Bj=C3=B8rn=20Mork?= <bjorn at mork.no>
-Date: Mon, 2 Jul 2012 10:33:14 +0200
-Subject: [PATCH 031/109] USB: cdc-wdm: fix lockup on error in wdm_read
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit b086b6b10d9f182cd8d2f0dcfd7fd11edba93fc9 upstream.
-
-Clear the WDM_READ flag on empty reads to avoid running
-forever in an infinite tight loop, causing lockups:
-
-Jul 1 21:58:11 nemi kernel: [ 3658.898647] qmi_wwan 2-1:1.2: Unexpected error -71
-Jul 1 21:58:36 nemi kernel: [ 3684.072021] BUG: soft lockup - CPU#0 stuck for 23s! [qmi.pl:12235]
-Jul 1 21:58:36 nemi kernel: [ 3684.072212] CPU 0
-Jul 1 21:58:36 nemi kernel: [ 3684.072355]
-Jul 1 21:58:36 nemi kernel: [ 3684.072367] Pid: 12235, comm: qmi.pl Tainted: P O 3.5.0-rc2+ #13 LENOVO 2776LEG/2776LEG
-Jul 1 21:58:36 nemi kernel: [ 3684.072383] RIP: 0010:[<ffffffffa0635008>] [<ffffffffa0635008>] spin_unlock_irq+0x8/0xc [cdc_wdm]
-Jul 1 21:58:36 nemi kernel: [ 3684.072388] RSP: 0018:ffff88022dca1e70 EFLAGS: 00000282
-Jul 1 21:58:36 nemi kernel: [ 3684.072393] RAX: ffff88022fc3f650 RBX: ffffffff811c56f7 RCX: 00000001000ce8c1
-Jul 1 21:58:36 nemi kernel: [ 3684.072398] RDX: 0000000000000010 RSI: 000000000267d810 RDI: ffff88022fc3f650
-Jul 1 21:58:36 nemi kernel: [ 3684.072403] RBP: ffff88022dca1eb0 R08: ffffffffa063578e R09: 0000000000000000
-Jul 1 21:58:36 nemi kernel: [ 3684.072407] R10: 0000000000000008 R11: 0000000000000246 R12: 0000000000000002
-Jul 1 21:58:36 nemi kernel: [ 3684.072412] R13: 0000000000000246 R14: ffffffff00000002 R15: ffff8802281d8c88
-Jul 1 21:58:36 nemi kernel: [ 3684.072418] FS: 00007f666a260700(0000) GS:ffff88023bc00000(0000) knlGS:0000000000000000
-Jul 1 21:58:36 nemi kernel: [ 3684.072423] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
-Jul 1 21:58:36 nemi kernel: [ 3684.072428] CR2: 000000000270d9d8 CR3: 000000022e865000 CR4: 00000000000007f0
-Jul 1 21:58:36 nemi kernel: [ 3684.072433] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
-Jul 1 21:58:36 nemi kernel: [ 3684.072438] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
-Jul 1 21:58:36 nemi kernel: [ 3684.072444] Process qmi.pl (pid: 12235, threadinfo ffff88022dca0000, task ffff88022ff76380)
-Jul 1 21:58:36 nemi kernel: [ 3684.072448] Stack:
-Jul 1 21:58:36 nemi kernel: [ 3684.072458] ffffffffa063592e 0000000100020000 ffff88022fc3f650 ffff88022fc3f6a8
-Jul 1 21:58:36 nemi kernel: [ 3684.072466] 0000000000000200 0000000100000000 000000000267d810 0000000000000000
-Jul 1 21:58:36 nemi kernel: [ 3684.072475] 0000000000000000 ffff880212cfb6d0 0000000000000200 ffff880212cfb6c0
-Jul 1 21:58:36 nemi kernel: [ 3684.072479] Call Trace:
-Jul 1 21:58:36 nemi kernel: [ 3684.072489] [<ffffffffa063592e>] ? wdm_read+0x1a0/0x263 [cdc_wdm]
-Jul 1 21:58:36 nemi kernel: [ 3684.072500] [<ffffffff8110adb7>] ? vfs_read+0xa1/0xfb
-Jul 1 21:58:36 nemi kernel: [ 3684.072509] [<ffffffff81040589>] ? alarm_setitimer+0x35/0x64
-Jul 1 21:58:36 nemi kernel: [ 3684.072517] [<ffffffff8110aec7>] ? sys_read+0x45/0x6e
-Jul 1 21:58:36 nemi kernel: [ 3684.072525] [<ffffffff813725f9>] ? system_call_fastpath+0x16/0x1b
-Jul 1 21:58:36 nemi kernel: [ 3684.072557] Code: <66> 66 90 c3 83 ff ed 89 f8 74 16 7f 06 83 ff a1 75 0a c3 83 ff f4
-
-The WDM_READ flag is normally cleared by wdm_int_callback
-before resubmitting the read urb, and set by wdm_in_callback
-when this urb returns with data or an error. But a crashing
-device may cause both a read error and cancelling all urbs.
-Make sure that the flag is cleared by wdm_read if the buffer
-is empty.
-
-We don't clear the flag on errors, as there may be pending
-data in the buffer which should be processed. The flag will
-instead be cleared on the next wdm_read call.
-
-Signed-off-by: Bjørn Mork <bjorn at mork.no>
-Acked-by: Oliver Neukum <oneukum at suse.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/class/cdc-wdm.c | 2 ++
- 1 files changed, 2 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/usb/class/cdc-wdm.c b/drivers/usb/class/cdc-wdm.c
-index 19fb5fa..9aaed0d 100644
---- a/drivers/usb/class/cdc-wdm.c
-+++ b/drivers/usb/class/cdc-wdm.c
-@@ -473,6 +473,8 @@ retry:
- goto retry;
- }
- if (!desc->reslength) { /* zero length read */
-+ dev_dbg(&desc->intf->dev, "%s: zero length - clearing WDM_READ\n", __func__);
-+ clear_bit(WDM_READ, &desc->flags);
- spin_unlock_irq(&desc->iuspin);
- goto retry;
- }
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0032-mtd-nandsim-don-t-open-code-a-do_div-helper.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0032-mtd-nandsim-don-t-open-code-a-do_div-helper.patch
deleted file mode 100644
index e96b5c5..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0032-mtd-nandsim-don-t-open-code-a-do_div-helper.patch
+++ /dev/null
@@ -1,94 +0,0 @@
-From bb5561cb838492a05e5dae25114d768828fe2dfe Mon Sep 17 00:00:00 2001
-From: Herton Ronaldo Krzesinski <herton.krzesinski at canonical.com>
-Date: Wed, 16 May 2012 16:21:52 -0300
-Subject: [PATCH 032/109] mtd: nandsim: don't open code a do_div helper
-
-commit 596fd46268634082314b3af1ded4612e1b7f3f03 upstream.
-
-We don't need to open code the divide function, just use div_u64 that
-already exists and do the same job. While this is a straightforward
-clean up, there is more to that, the real motivation for this.
-
-While building on a cross compiling environment in armel, using gcc
-4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5), I was getting the following build
-error:
-
-ERROR: "__aeabi_uldivmod" [drivers/mtd/nand/nandsim.ko] undefined!
-
-After investigating with objdump and hand built assembly version
-generated with the compiler, I narrowed __aeabi_uldivmod as being
-generated from the divide function. When nandsim.c is built with
--fno-inline-functions-called-once, that happens when
-CONFIG_DEBUG_SECTION_MISMATCH is enabled, the do_div optimization in
-arch/arm/include/asm/div64.h doesn't work as expected with the open
-coded divide function: even if the do_div we are using doesn't have a
-constant divisor, the compiler still includes the else parts of the
-optimized do_div macro, and translates the divisions there to use
-__aeabi_uldivmod, instead of only calling __do_div_asm -> __do_div64 and
-optimizing/removing everything else out.
-
-So to reproduce, gcc 4.6 plus CONFIG_DEBUG_SECTION_MISMATCH=y and
-CONFIG_MTD_NAND_NANDSIM=m should do it, building on armel.
-
-After this change, the compiler does the intended thing even with
--fno-inline-functions-called-once, and optimizes out as expected the
-constant handling in the optimized do_div on arm. As this also avoids a
-build issue, I'm marking for Stable, as I think is applicable for this
-case.
-
-Signed-off-by: Herton Ronaldo Krzesinski <herton.krzesinski at canonical.com>
-Acked-by: Nicolas Pitre <nico at linaro.org>
-Signed-off-by: Artem Bityutskiy <artem.bityutskiy at linux.intel.com>
-Signed-off-by: David Woodhouse <David.Woodhouse at intel.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/mtd/nand/nandsim.c | 12 +++---------
- 1 files changed, 3 insertions(+), 9 deletions(-)
-
-diff --git a/drivers/mtd/nand/nandsim.c b/drivers/mtd/nand/nandsim.c
-index 34c03be..83e8e1b 100644
---- a/drivers/mtd/nand/nandsim.c
-+++ b/drivers/mtd/nand/nandsim.c
-@@ -28,7 +28,7 @@
- #include <linux/module.h>
- #include <linux/moduleparam.h>
- #include <linux/vmalloc.h>
--#include <asm/div64.h>
-+#include <linux/math64.h>
- #include <linux/slab.h>
- #include <linux/errno.h>
- #include <linux/string.h>
-@@ -547,12 +547,6 @@ static char *get_partition_name(int i)
- return kstrdup(buf, GFP_KERNEL);
- }
-
--static uint64_t divide(uint64_t n, uint32_t d)
--{
-- do_div(n, d);
-- return n;
--}
--
- /*
- * Initialize the nandsim structure.
- *
-@@ -581,7 +575,7 @@ static int init_nandsim(struct mtd_info *mtd)
- ns->geom.oobsz = mtd->oobsize;
- ns->geom.secsz = mtd->erasesize;
- ns->geom.pgszoob = ns->geom.pgsz + ns->geom.oobsz;
-- ns->geom.pgnum = divide(ns->geom.totsz, ns->geom.pgsz);
-+ ns->geom.pgnum = div_u64(ns->geom.totsz, ns->geom.pgsz);
- ns->geom.totszoob = ns->geom.totsz + (uint64_t)ns->geom.pgnum * ns->geom.oobsz;
- ns->geom.secshift = ffs(ns->geom.secsz) - 1;
- ns->geom.pgshift = chip->page_shift;
-@@ -924,7 +918,7 @@ static int setup_wear_reporting(struct mtd_info *mtd)
-
- if (!rptwear)
- return 0;
-- wear_eb_count = divide(mtd->size, mtd->erasesize);
-+ wear_eb_count = div_u64(mtd->size, mtd->erasesize);
- mem = wear_eb_count * sizeof(unsigned long);
- if (mem / sizeof(unsigned long) != wear_eb_count) {
- NS_ERR("Too many erase blocks for wear reporting\n");
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0033-dvb-core-Release-semaphore-on-error-path-dvb_registe.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0033-dvb-core-Release-semaphore-on-error-path-dvb_registe.patch
deleted file mode 100644
index 4ad1726..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0033-dvb-core-Release-semaphore-on-error-path-dvb_registe.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 9b4b8dd705a1a7f9c4b7c2128663d2e31b1d0265 Mon Sep 17 00:00:00 2001
-From: Santosh Nayak <santoshprasadnayak at gmail.com>
-Date: Sat, 23 Jun 2012 07:59:54 -0300
-Subject: [PATCH 033/109] dvb-core: Release semaphore on error path
- dvb_register_device()
-
-commit 82163edcdfa4eb3d74516cc8e9f38dd3d039b67d upstream.
-
-There is a missing "up_write()" here. Semaphore should be released
-before returning error value.
-
-Signed-off-by: Santosh Nayak <santoshprasadnayak at gmail.com>
-Signed-off-by: Mauro Carvalho Chehab <mchehab at redhat.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/media/dvb/dvb-core/dvbdev.c | 1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/media/dvb/dvb-core/dvbdev.c b/drivers/media/dvb/dvb-core/dvbdev.c
-index f732877..d5cda35 100644
---- a/drivers/media/dvb/dvb-core/dvbdev.c
-+++ b/drivers/media/dvb/dvb-core/dvbdev.c
-@@ -243,6 +243,7 @@ int dvb_register_device(struct dvb_adapter *adap, struct dvb_device **pdvbdev,
- if (minor == MAX_DVB_MINORS) {
- kfree(dvbdevfops);
- kfree(dvbdev);
-+ up_write(&minor_rwsem);
- mutex_unlock(&dvbdev_register_lock);
- return -EINVAL;
- }
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0034-hwspinlock-core-use-global-ID-to-register-hwspinlock.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0034-hwspinlock-core-use-global-ID-to-register-hwspinlock.patch
deleted file mode 100644
index 11ba36d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0034-hwspinlock-core-use-global-ID-to-register-hwspinlock.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From 6c6190dbd1e0054c77445ed61dcbc70db441d4d2 Mon Sep 17 00:00:00 2001
-From: Shinya Kuribayashi <shinya.kuribayashi.px at renesas.com>
-Date: Sat, 7 Jul 2012 13:37:42 +0300
-Subject: [PATCH 034/109] hwspinlock/core: use global ID to register
- hwspinlocks on multiple devices
-
-commit 476a7eeb60e70ddab138e7cb4bc44ef5ac20782e upstream.
-
-Commit 300bab9770 (hwspinlock/core: register a bank of hwspinlocks in a
-single API call, 2011-09-06) introduced 'hwspin_lock_register_single()'
-to register numerous (a bank of) hwspinlock instances in a single API,
-'hwspin_lock_register()'.
-
-At which time, 'hwspin_lock_register()' accidentally passes 'local IDs'
-to 'hwspin_lock_register_single()', despite that ..._single() requires
-'global IDs' to register hwspinlocks.
-
-We have to convert into global IDs by supplying the missing 'base_id'.
-
-Signed-off-by: Shinya Kuribayashi <shinya.kuribayashi.px at renesas.com>
-[ohad: fix error path of hwspin_lock_register, too]
-Signed-off-by: Ohad Ben-Cohen <ohad at wizery.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/hwspinlock/hwspinlock_core.c | 4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/hwspinlock/hwspinlock_core.c b/drivers/hwspinlock/hwspinlock_core.c
-index 61c9cf1..1201a15 100644
---- a/drivers/hwspinlock/hwspinlock_core.c
-+++ b/drivers/hwspinlock/hwspinlock_core.c
-@@ -345,7 +345,7 @@ int hwspin_lock_register(struct hwspinlock_device *bank, struct device *dev,
- spin_lock_init(&hwlock->lock);
- hwlock->bank = bank;
-
-- ret = hwspin_lock_register_single(hwlock, i);
-+ ret = hwspin_lock_register_single(hwlock, base_id + i);
- if (ret)
- goto reg_failed;
- }
-@@ -354,7 +354,7 @@ int hwspin_lock_register(struct hwspinlock_device *bank, struct device *dev,
-
- reg_failed:
- while (--i >= 0)
-- hwspin_lock_unregister_single(i);
-+ hwspin_lock_unregister_single(base_id + i);
- return ret;
- }
- EXPORT_SYMBOL_GPL(hwspin_lock_register);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0035-libsas-fix-taskfile-corruption-in-sas_ata_qc_fill_rt.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0035-libsas-fix-taskfile-corruption-in-sas_ata_qc_fill_rt.patch
deleted file mode 100644
index 88c7627..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0035-libsas-fix-taskfile-corruption-in-sas_ata_qc_fill_rt.patch
+++ /dev/null
@@ -1,116 +0,0 @@
-From 65719aa5de077d1ccbfe535e9b934d6e91d11601 Mon Sep 17 00:00:00 2001
-From: Dan Williams <dan.j.williams at intel.com>
-Date: Fri, 22 Jun 2012 10:52:34 -0700
-Subject: [PATCH 035/109] libsas: fix taskfile corruption in
- sas_ata_qc_fill_rtf
-
-commit 6ef1b512f4e6f936d89aa20be3d97a7ec7c290ac upstream.
-
-fill_result_tf() grabs the taskfile flags from the originating qc which
-sas_ata_qc_fill_rtf() promptly overwrites. The presence of an
-ata_taskfile in the sata_device makes it tempting to just copy the full
-contents in sas_ata_qc_fill_rtf(). However, libata really only wants
-the fis contents and expects the other portions of the taskfile to not
-be touched by ->qc_fill_rtf. To that end store a fis buffer in the
-sata_device and use ata_tf_from_fis() like every other ->qc_fill_rtf()
-implementation.
-
-Reported-by: Praveen Murali <pmurali at logicube.com>
-Tested-by: Praveen Murali <pmurali at logicube.com>
-Signed-off-by: Dan Williams <dan.j.williams at intel.com>
-Signed-off-by: James Bottomley <JBottomley at Parallels.com>
-[bwh: Backported to 3.2: adjust context]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/scsi/aic94xx/aic94xx_task.c | 2 +-
- drivers/scsi/libsas/sas_ata.c | 12 ++++++------
- include/scsi/libsas.h | 6 ++++--
- 3 files changed, 11 insertions(+), 9 deletions(-)
-
-diff --git a/drivers/scsi/aic94xx/aic94xx_task.c b/drivers/scsi/aic94xx/aic94xx_task.c
-index 532d212..393e7ce 100644
---- a/drivers/scsi/aic94xx/aic94xx_task.c
-+++ b/drivers/scsi/aic94xx/aic94xx_task.c
-@@ -201,7 +201,7 @@ static void asd_get_response_tasklet(struct asd_ascb *ascb,
-
- if (SAS_STATUS_BUF_SIZE >= sizeof(*resp)) {
- resp->frame_len = le16_to_cpu(*(__le16 *)(r+6));
-- memcpy(&resp->ending_fis[0], r+16, 24);
-+ memcpy(&resp->ending_fis[0], r+16, ATA_RESP_FIS_SIZE);
- ts->buf_valid_size = sizeof(*resp);
- }
- }
-diff --git a/drivers/scsi/libsas/sas_ata.c b/drivers/scsi/libsas/sas_ata.c
-index db9238f..4868fc9 100644
---- a/drivers/scsi/libsas/sas_ata.c
-+++ b/drivers/scsi/libsas/sas_ata.c
-@@ -112,12 +112,12 @@ static void sas_ata_task_done(struct sas_task *task)
- if (stat->stat == SAS_PROTO_RESPONSE || stat->stat == SAM_STAT_GOOD ||
- ((stat->stat == SAM_STAT_CHECK_CONDITION &&
- dev->sata_dev.command_set == ATAPI_COMMAND_SET))) {
-- ata_tf_from_fis(resp->ending_fis, &dev->sata_dev.tf);
-+ memcpy(dev->sata_dev.fis, resp->ending_fis, ATA_RESP_FIS_SIZE);
-
- if (!link->sactive) {
-- qc->err_mask |= ac_err_mask(dev->sata_dev.tf.command);
-+ qc->err_mask |= ac_err_mask(dev->sata_dev.fis[2]);
- } else {
-- link->eh_info.err_mask |= ac_err_mask(dev->sata_dev.tf.command);
-+ link->eh_info.err_mask |= ac_err_mask(dev->sata_dev.fis[2]);
- if (unlikely(link->eh_info.err_mask))
- qc->flags |= ATA_QCFLAG_FAILED;
- }
-@@ -138,8 +138,8 @@ static void sas_ata_task_done(struct sas_task *task)
- qc->flags |= ATA_QCFLAG_FAILED;
- }
-
-- dev->sata_dev.tf.feature = 0x04; /* status err */
-- dev->sata_dev.tf.command = ATA_ERR;
-+ dev->sata_dev.fis[3] = 0x04; /* status err */
-+ dev->sata_dev.fis[2] = ATA_ERR;
- }
- }
-
-@@ -252,7 +252,7 @@ static bool sas_ata_qc_fill_rtf(struct ata_queued_cmd *qc)
- {
- struct domain_device *dev = qc->ap->private_data;
-
-- memcpy(&qc->result_tf, &dev->sata_dev.tf, sizeof(qc->result_tf));
-+ ata_tf_from_fis(dev->sata_dev.fis, &qc->result_tf);
- return true;
- }
-
-diff --git a/include/scsi/libsas.h b/include/scsi/libsas.h
-index 6a308d4..1e100c6 100644
---- a/include/scsi/libsas.h
-+++ b/include/scsi/libsas.h
-@@ -159,6 +159,8 @@ enum ata_command_set {
- ATAPI_COMMAND_SET = 1,
- };
-
-+#define ATA_RESP_FIS_SIZE 24
-+
- struct sata_device {
- enum ata_command_set command_set;
- struct smp_resp rps_resp; /* report_phy_sata_resp */
-@@ -170,7 +172,7 @@ struct sata_device {
-
- struct ata_port *ap;
- struct ata_host ata_host;
-- struct ata_taskfile tf;
-+ u8 fis[ATA_RESP_FIS_SIZE];
- u32 sstatus;
- u32 serror;
- u32 scontrol;
-@@ -486,7 +488,7 @@ enum exec_status {
- */
- struct ata_task_resp {
- u16 frame_len;
-- u8 ending_fis[24]; /* dev to host or data-in */
-+ u8 ending_fis[ATA_RESP_FIS_SIZE]; /* dev to host or data-in */
- u32 sstatus;
- u32 serror;
- u32 scontrol;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0036-md-raid1-fix-use-after-free-bug-in-RAID1-data-check-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0036-md-raid1-fix-use-after-free-bug-in-RAID1-data-check-.patch
deleted file mode 100644
index 442a6e2..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0036-md-raid1-fix-use-after-free-bug-in-RAID1-data-check-.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From 2710006f98cf587ce6b3108f543689de1bb6d60b Mon Sep 17 00:00:00 2001
-From: NeilBrown <neilb at suse.de>
-Date: Mon, 9 Jul 2012 11:34:13 +1000
-Subject: [PATCH 036/109] md/raid1: fix use-after-free bug in RAID1 data-check
- code.
-
-commit 2d4f4f3384d4ef4f7c571448e803a1ce721113d5 upstream.
-
-This bug has been present ever since data-check was introduce
-in 2.6.16. However it would only fire if a data-check were
-done on a degraded array, which was only possible if the array
-has 3 or more devices. This is certainly possible, but is quite
-uncommon.
-
-Since hot-replace was added in 3.3 it can happen more often as
-the same condition can arise if not all possible replacements are
-present.
-
-The problem is that as soon as we submit the last read request, the
-'r1_bio' structure could be freed at any time, so we really should
-stop looking at it. If the last device is being read from we will
-stop looking at it. However if the last device is not due to be read
-from, we will still check the bio pointer in the r1_bio, but the
-r1_bio might already be free.
-
-So use the read_targets counter to make sure we stop looking for bios
-to submit as soon as we have submitted them all.
-
-This fix is suitable for any -stable kernel since 2.6.16.
-
-Reported-by: Arnold Schulz <arnysch at gmx.net>
-Signed-off-by: NeilBrown <neilb at suse.de>
-[bwh: Backported to 3.2: no doubling of conf->raid_disks; we don't have
- hot-replace support]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/md/raid1.c | 3 ++-
- 1 files changed, 2 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c
-index 7af60ec..58f0055 100644
---- a/drivers/md/raid1.c
-+++ b/drivers/md/raid1.c
-@@ -2378,9 +2378,10 @@ static sector_t sync_request(struct mddev *mddev, sector_t sector_nr, int *skipp
- */
- if (test_bit(MD_RECOVERY_REQUESTED, &mddev->recovery)) {
- atomic_set(&r1_bio->remaining, read_targets);
-- for (i=0; i<conf->raid_disks; i++) {
-+ for (i = 0; i < conf->raid_disks && read_targets; i++) {
- bio = r1_bio->bios[i];
- if (bio->bi_end_io == end_sync_read) {
-+ read_targets--;
- md_sync_acct(bio->bi_bdev, nr_sectors);
- generic_make_request(bio);
- }
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0037-PCI-EHCI-fix-crash-during-suspend-on-ASUS-computers.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0037-PCI-EHCI-fix-crash-during-suspend-on-ASUS-computers.patch
deleted file mode 100644
index a5540c3..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0037-PCI-EHCI-fix-crash-during-suspend-on-ASUS-computers.patch
+++ /dev/null
@@ -1,166 +0,0 @@
-From 45cd1f6207fb66990e5f25e11fb4cd9486c31794 Mon Sep 17 00:00:00 2001
-From: Alan Stern <stern at rowland.harvard.edu>
-Date: Mon, 9 Jul 2012 11:09:21 -0400
-Subject: [PATCH 037/109] PCI: EHCI: fix crash during suspend on ASUS
- computers
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit dbf0e4c7257f8d684ec1a3c919853464293de66e upstream.
-
-Quite a few ASUS computers experience a nasty problem, related to the
-EHCI controllers, when going into system suspend. It was observed
-that the problem didn't occur if the controllers were not put into the
-D3 power state before starting the suspend, and commit
-151b61284776be2d6f02d48c23c3625678960b97 (USB: EHCI: fix crash during
-suspend on ASUS computers) was created to do this.
-
-It turned out this approach messed up other computers that didn't have
-the problem -- it prevented USB wakeup from working. Consequently
-commit c2fb8a3fa25513de8fedb38509b1f15a5bbee47b (USB: add
-NO_D3_DURING_SLEEP flag and revert 151b61284776be2) was merged; it
-reverted the earlier commit and added a whitelist of known good board
-names.
-
-Now we know the actual cause of the problem. Thanks to AceLan Kao for
-tracking it down.
-
-According to him, an engineer at ASUS explained that some of their
-BIOSes contain a bug that was added in an attempt to work around a
-problem in early versions of Windows. When the computer goes into S3
-suspend, the BIOS tries to verify that the EHCI controllers were first
-quiesced by the OS. Nothing's wrong with this, but the BIOS does it
-by checking that the PCI COMMAND registers contain 0 without checking
-the controllers' power state. If the register isn't 0, the BIOS
-assumes the controller needs to be quiesced and tries to do so. This
-involves making various MMIO accesses to the controller, which don't
-work very well if the controller is already in D3. The end result is
-a system hang or memory corruption.
-
-Since the value in the PCI COMMAND register doesn't matter once the
-controller has been suspended, and since the value will be restored
-anyway when the controller is resumed, we can work around the BIOS bug
-simply by setting the register to 0 during system suspend. This patch
-(as1590) does so and also reverts the second commit mentioned above,
-which is now unnecessary.
-
-In theory we could do this for every PCI device. However to avoid
-introducing new problems, the patch restricts itself to EHCI host
-controllers.
-
-Finally the affected systems can suspend with USB wakeup working
-properly.
-
-Reference: https://bugzilla.kernel.org/show_bug.cgi?id=37632
-Reference: https://bugzilla.kernel.org/show_bug.cgi?id=42728
-Based-on-patch-by: AceLan Kao <acelan.kao at canonical.com>
-Signed-off-by: Alan Stern <stern at rowland.harvard.edu>
-Tested-by: Dâniel Fraga <fragabr at gmail.com>
-Tested-by: Javier Marcet <jmarcet at gmail.com>
-Tested-by: Andrey Rahmatullin <wrar at wrar.name>
-Tested-by: Oleksij Rempel <bug-track at fisher-privat.net>
-Tested-by: Pavel Pisa <pisa at cmp.felk.cvut.cz>
-Acked-by: Bjorn Helgaas <bhelgaas at google.com>
-Acked-by: Rafael J. Wysocki <rjw at sisk.pl>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/pci/pci-driver.c | 12 ++++++++++++
- drivers/pci/pci.c | 5 -----
- drivers/pci/quirks.c | 26 --------------------------
- include/linux/pci.h | 2 --
- 4 files changed, 12 insertions(+), 33 deletions(-)
-
-diff --git a/drivers/pci/pci-driver.c b/drivers/pci/pci-driver.c
-index 12d1e81..d024f83 100644
---- a/drivers/pci/pci-driver.c
-+++ b/drivers/pci/pci-driver.c
-@@ -742,6 +742,18 @@ static int pci_pm_suspend_noirq(struct device *dev)
-
- pci_pm_set_unknown_state(pci_dev);
-
-+ /*
-+ * Some BIOSes from ASUS have a bug: If a USB EHCI host controller's
-+ * PCI COMMAND register isn't 0, the BIOS assumes that the controller
-+ * hasn't been quiesced and tries to turn it off. If the controller
-+ * is already in D3, this can hang or cause memory corruption.
-+ *
-+ * Since the value of the COMMAND register doesn't matter once the
-+ * device has been suspended, we can safely set it to 0 here.
-+ */
-+ if (pci_dev->class == PCI_CLASS_SERIAL_USB_EHCI)
-+ pci_write_config_word(pci_dev, PCI_COMMAND, 0);
-+
- return 0;
- }
-
-diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
-index e5b75eb..6d4a531 100644
---- a/drivers/pci/pci.c
-+++ b/drivers/pci/pci.c
-@@ -1689,11 +1689,6 @@ int pci_prepare_to_sleep(struct pci_dev *dev)
- if (target_state == PCI_POWER_ERROR)
- return -EIO;
-
-- /* Some devices mustn't be in D3 during system sleep */
-- if (target_state == PCI_D3hot &&
-- (dev->dev_flags & PCI_DEV_FLAGS_NO_D3_DURING_SLEEP))
-- return 0;
--
- pci_enable_wake(dev, target_state, device_may_wakeup(&dev->dev));
-
- error = pci_set_power_state(dev, target_state);
-diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
-index 3c56fec..78fda9c 100644
---- a/drivers/pci/quirks.c
-+++ b/drivers/pci/quirks.c
-@@ -2940,32 +2940,6 @@ static void __devinit disable_igfx_irq(struct pci_dev *dev)
- DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x0102, disable_igfx_irq);
- DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x010a, disable_igfx_irq);
-
--/*
-- * The Intel 6 Series/C200 Series chipset's EHCI controllers on many
-- * ASUS motherboards will cause memory corruption or a system crash
-- * if they are in D3 while the system is put into S3 sleep.
-- */
--static void __devinit asus_ehci_no_d3(struct pci_dev *dev)
--{
-- const char *sys_info;
-- static const char good_Asus_board[] = "P8Z68-V";
--
-- if (dev->dev_flags & PCI_DEV_FLAGS_NO_D3_DURING_SLEEP)
-- return;
-- if (dev->subsystem_vendor != PCI_VENDOR_ID_ASUSTEK)
-- return;
-- sys_info = dmi_get_system_info(DMI_BOARD_NAME);
-- if (sys_info && memcmp(sys_info, good_Asus_board,
-- sizeof(good_Asus_board) - 1) == 0)
-- return;
--
-- dev_info(&dev->dev, "broken D3 during system sleep on ASUS\n");
-- dev->dev_flags |= PCI_DEV_FLAGS_NO_D3_DURING_SLEEP;
-- device_set_wakeup_capable(&dev->dev, false);
--}
--DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x1c26, asus_ehci_no_d3);
--DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x1c2d, asus_ehci_no_d3);
--
- static void pci_do_fixups(struct pci_dev *dev, struct pci_fixup *f,
- struct pci_fixup *end)
- {
-diff --git a/include/linux/pci.h b/include/linux/pci.h
-index c0cfa0d..7cda65b 100644
---- a/include/linux/pci.h
-+++ b/include/linux/pci.h
-@@ -176,8 +176,6 @@ enum pci_dev_flags {
- PCI_DEV_FLAGS_NO_D3 = (__force pci_dev_flags_t) 2,
- /* Provide indication device is assigned by a Virtual Machine Manager */
- PCI_DEV_FLAGS_ASSIGNED = (__force pci_dev_flags_t) 4,
-- /* Device causes system crash if in D3 during S3 sleep */
-- PCI_DEV_FLAGS_NO_D3_DURING_SLEEP = (__force pci_dev_flags_t) 8,
- };
-
- enum pci_irq_reroute_variant {
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0038-memory-hotplug-fix-invalid-memory-access-caused-by-s.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0038-memory-hotplug-fix-invalid-memory-access-caused-by-s.patch
deleted file mode 100644
index 5d3cef2..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0038-memory-hotplug-fix-invalid-memory-access-caused-by-s.patch
+++ /dev/null
@@ -1,114 +0,0 @@
-From c9a4beeb70f62ec5976dcbb9086683fda56d6aec Mon Sep 17 00:00:00 2001
-From: Jiang Liu <jiang.liu at huawei.com>
-Date: Wed, 11 Jul 2012 14:01:52 -0700
-Subject: [PATCH 038/109] memory hotplug: fix invalid memory access caused by
- stale kswapd pointer
-
-commit d8adde17e5f858427504725218c56aef90e90fc7 upstream.
-
-kswapd_stop() is called to destroy the kswapd work thread when all memory
-of a NUMA node has been offlined. But kswapd_stop() only terminates the
-work thread without resetting NODE_DATA(nid)->kswapd to NULL. The stale
-pointer will prevent kswapd_run() from creating a new work thread when
-adding memory to the memory-less NUMA node again. Eventually the stale
-pointer may cause invalid memory access.
-
-An example stack dump as below. It's reproduced with 2.6.32, but latest
-kernel has the same issue.
-
- BUG: unable to handle kernel NULL pointer dereference at (null)
- IP: [<ffffffff81051a94>] exit_creds+0x12/0x78
- PGD 0
- Oops: 0000 [#1] SMP
- last sysfs file: /sys/devices/system/memory/memory391/state
- CPU 11
- Modules linked in: cpufreq_conservative cpufreq_userspace cpufreq_powersave acpi_cpufreq microcode fuse loop dm_mod tpm_tis rtc_cmos i2c_i801 rtc_core tpm serio_raw pcspkr sg tpm_bios igb i2c_core iTCO_wdt rtc_lib mptctl iTCO_vendor_support button dca bnx2 usbhid hid uhci_hcd ehci_hcd usbcore sd_mod crc_t10dif edd ext3 mbcache jbd fan ide_pci_generic ide_core ata_generic ata_piix libata thermal processor thermal_sys hwmon mptsas mptscsih mptbase scsi_transport_sas scsi_mod
- Pid: 7949, comm: sh Not tainted 2.6.32.12-qiuxishi-5-default #92 Tecal RH2285
- RIP: 0010:exit_creds+0x12/0x78
- RSP: 0018:ffff8806044f1d78 EFLAGS: 00010202
- RAX: 0000000000000000 RBX: ffff880604f22140 RCX: 0000000000019502
- RDX: 0000000000000000 RSI: 0000000000000202 RDI: 0000000000000000
- RBP: ffff880604f22150 R08: 0000000000000000 R09: ffffffff81a4dc10
- R10: 00000000000032a0 R11: ffff880006202500 R12: 0000000000000000
- R13: 0000000000c40000 R14: 0000000000008000 R15: 0000000000000001
- FS: 00007fbc03d066f0(0000) GS:ffff8800282e0000(0000) knlGS:0000000000000000
- CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
- CR2: 0000000000000000 CR3: 000000060f029000 CR4: 00000000000006e0
- DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
- DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
- Process sh (pid: 7949, threadinfo ffff8806044f0000, task ffff880603d7c600)
- Stack:
- ffff880604f22140 ffffffff8103aac5 ffff880604f22140 ffffffff8104d21e
- ffff880006202500 0000000000008000 0000000000c38000 ffffffff810bd5b1
- 0000000000000000 ffff880603d7c600 00000000ffffdd29 0000000000000003
- Call Trace:
- __put_task_struct+0x5d/0x97
- kthread_stop+0x50/0x58
- offline_pages+0x324/0x3da
- memory_block_change_state+0x179/0x1db
- store_mem_state+0x9e/0xbb
- sysfs_write_file+0xd0/0x107
- vfs_write+0xad/0x169
- sys_write+0x45/0x6e
- system_call_fastpath+0x16/0x1b
- Code: ff 4d 00 0f 94 c0 84 c0 74 08 48 89 ef e8 1f fd ff ff 5b 5d 31 c0 41 5c c3 53 48 8b 87 20 06 00 00 48 89 fb 48 8b bf 18 06 00 00 <8b> 00 48 c7 83 18 06 00 00 00 00 00 00 f0 ff 0f 0f 94 c0 84 c0
- RIP exit_creds+0x12/0x78
- RSP <ffff8806044f1d78>
- CR2: 0000000000000000
-
-[akpm at linux-foundation.org: add pglist_data.kswapd locking comments]
-Signed-off-by: Xishi Qiu <qiuxishi at huawei.com>
-Signed-off-by: Jiang Liu <jiang.liu at huawei.com>
-Acked-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu at jp.fujitsu.com>
-Acked-by: KOSAKI Motohiro <kosaki.motohiro at jp.fujitsu.com>
-Acked-by: Mel Gorman <mgorman at suse.de>
-Acked-by: David Rientjes <rientjes at google.com>
-Reviewed-by: Minchan Kim <minchan at kernel.org>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- include/linux/mmzone.h | 2 +-
- mm/vmscan.c | 7 +++++--
- 2 files changed, 6 insertions(+), 3 deletions(-)
-
-diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h
-index 188cb2f..905b1e1 100644
---- a/include/linux/mmzone.h
-+++ b/include/linux/mmzone.h
-@@ -652,7 +652,7 @@ typedef struct pglist_data {
- range, including holes */
- int node_id;
- wait_queue_head_t kswapd_wait;
-- struct task_struct *kswapd;
-+ struct task_struct *kswapd; /* Protected by lock_memory_hotplug() */
- int kswapd_max_order;
- enum zone_type classzone_idx;
- } pg_data_t;
-diff --git a/mm/vmscan.c b/mm/vmscan.c
-index fbe2d2c..72cf498 100644
---- a/mm/vmscan.c
-+++ b/mm/vmscan.c
-@@ -3090,14 +3090,17 @@ int kswapd_run(int nid)
- }
-
- /*
-- * Called by memory hotplug when all memory in a node is offlined.
-+ * Called by memory hotplug when all memory in a node is offlined. Caller must
-+ * hold lock_memory_hotplug().
- */
- void kswapd_stop(int nid)
- {
- struct task_struct *kswapd = NODE_DATA(nid)->kswapd;
-
-- if (kswapd)
-+ if (kswapd) {
- kthread_stop(kswapd);
-+ NODE_DATA(nid)->kswapd = NULL;
-+ }
- }
-
- static int __init kswapd_init(void)
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0039-ocfs2-fix-NULL-pointer-dereference-in-__ocfs2_change.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0039-ocfs2-fix-NULL-pointer-dereference-in-__ocfs2_change.patch
deleted file mode 100644
index 64d18e2..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0039-ocfs2-fix-NULL-pointer-dereference-in-__ocfs2_change.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 827be17f16d9325db1c05f012ceab345139f7cad Mon Sep 17 00:00:00 2001
-From: Luis Henriques <luis.henriques at canonical.com>
-Date: Wed, 11 Jul 2012 14:02:10 -0700
-Subject: [PATCH 039/109] ocfs2: fix NULL pointer dereference in
- __ocfs2_change_file_space()
-
-commit a4e08d001f2e50bb8b3c4eebadcf08e5535f02ee upstream.
-
-As ocfs2_fallocate() will invoke __ocfs2_change_file_space() with a NULL
-as the first parameter (file), it may trigger a NULL pointer dereferrence
-due to a missing check.
-
-Addresses http://bugs.launchpad.net/bugs/1006012
-
-Signed-off-by: Luis Henriques <luis.henriques at canonical.com>
-Reported-by: Bret Towe <magnade at gmail.com>
-Tested-by: Bret Towe <magnade at gmail.com>
-Cc: Sunil Mushran <sunil.mushran at oracle.com>
-Acked-by: Joel Becker <jlbec at evilplan.org>
-Acked-by: Mark Fasheh <mfasheh at suse.com>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/ocfs2/file.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/fs/ocfs2/file.c b/fs/ocfs2/file.c
-index 07ee5b4..1c7d45e 100644
---- a/fs/ocfs2/file.c
-+++ b/fs/ocfs2/file.c
-@@ -1950,7 +1950,7 @@ static int __ocfs2_change_file_space(struct file *file, struct inode *inode,
- if (ret < 0)
- mlog_errno(ret);
-
-- if (file->f_flags & O_SYNC)
-+ if (file && (file->f_flags & O_SYNC))
- handle->h_sync = 1;
-
- ocfs2_commit_trans(osb, handle);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0040-mm-thp-abort-compaction-if-migration-page-cannot-be-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0040-mm-thp-abort-compaction-if-migration-page-cannot-be-.patch
deleted file mode 100644
index 74ca9bf..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0040-mm-thp-abort-compaction-if-migration-page-cannot-be-.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From 6a918e81eb228757f20a244ee0d81c32ba7feedc Mon Sep 17 00:00:00 2001
-From: David Rientjes <rientjes at google.com>
-Date: Wed, 11 Jul 2012 14:02:13 -0700
-Subject: [PATCH 040/109] mm, thp: abort compaction if migration page cannot
- be charged to memcg
-
-commit 4bf2bba3750f10aa9e62e6949bc7e8329990f01b upstream.
-
-If page migration cannot charge the temporary page to the memcg,
-migrate_pages() will return -ENOMEM. This isn't considered in memory
-compaction however, and the loop continues to iterate over all
-pageblocks trying to isolate and migrate pages. If a small number of
-very large memcgs happen to be oom, however, these attempts will mostly
-be futile leading to an enormous amout of cpu consumption due to the
-page migration failures.
-
-This patch will short circuit and fail memory compaction if
-migrate_pages() returns -ENOMEM. COMPACT_PARTIAL is returned in case
-some migrations were successful so that the page allocator will retry.
-
-Signed-off-by: David Rientjes <rientjes at google.com>
-Acked-by: Mel Gorman <mgorman at suse.de>
-Cc: Minchan Kim <minchan at kernel.org>
-Cc: Kamezawa Hiroyuki <kamezawa.hiroyu at jp.fujitsu.com>
-Cc: Rik van Riel <riel at redhat.com>
-Cc: Andrea Arcangeli <aarcange at redhat.com>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- mm/compaction.c | 5 ++++-
- 1 files changed, 4 insertions(+), 1 deletions(-)
-
-diff --git a/mm/compaction.c b/mm/compaction.c
-index 8fb8a40..50f1c60 100644
---- a/mm/compaction.c
-+++ b/mm/compaction.c
-@@ -592,8 +592,11 @@ static int compact_zone(struct zone *zone, struct compact_control *cc)
- if (err) {
- putback_lru_pages(&cc->migratepages);
- cc->nr_migratepages = 0;
-+ if (err == -ENOMEM) {
-+ ret = COMPACT_PARTIAL;
-+ goto out;
-+ }
- }
--
- }
-
- out:
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0041-drivers-rtc-rtc-mxc.c-fix-irq-enabled-interrupts-war.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0041-drivers-rtc-rtc-mxc.c-fix-irq-enabled-interrupts-war.patch
deleted file mode 100644
index 0df7b6e..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0041-drivers-rtc-rtc-mxc.c-fix-irq-enabled-interrupts-war.patch
+++ /dev/null
@@ -1,74 +0,0 @@
-From 810c142eafb17318d32209a727060a756a57235d Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Beno=C3=AEt=20Th=C3=A9baudeau?=
- <benoit.thebaudeau at advansee.com>
-Date: Wed, 11 Jul 2012 14:02:32 -0700
-Subject: [PATCH 041/109] drivers/rtc/rtc-mxc.c: fix irq enabled interrupts
- warning
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit b59f6d1febd6cbe9fae4589bf72da0ed32bc69e0 upstream.
-
-Fixes
-
- WARNING: at irq/handle.c:146 handle_irq_event_percpu+0x19c/0x1b8()
- irq 25 handler mxc_rtc_interrupt+0x0/0xac enabled interrupts
- Modules linked in:
- (unwind_backtrace+0x0/0xf0) from (warn_slowpath_common+0x4c/0x64)
- (warn_slowpath_common+0x4c/0x64) from (warn_slowpath_fmt+0x30/0x40)
- (warn_slowpath_fmt+0x30/0x40) from (handle_irq_event_percpu+0x19c/0x1b8)
- (handle_irq_event_percpu+0x19c/0x1b8) from (handle_irq_event+0x28/0x38)
- (handle_irq_event+0x28/0x38) from (handle_level_irq+0x80/0xc4)
- (handle_level_irq+0x80/0xc4) from (generic_handle_irq+0x24/0x38)
- (generic_handle_irq+0x24/0x38) from (handle_IRQ+0x30/0x84)
- (handle_IRQ+0x30/0x84) from (avic_handle_irq+0x2c/0x4c)
- (avic_handle_irq+0x2c/0x4c) from (__irq_svc+0x40/0x60)
- Exception stack(0xc050bf60 to 0xc050bfa8)
- bf60: 00000001 00000000 003c4208 c0018e20 c050a000 c050a000 c054a4c8 c050a000
- bf80: c05157a8 4117b363 80503bb4 00000000 01000000 c050bfa8 c0018e2c c000e808
- bfa0: 60000013 ffffffff
- (__irq_svc+0x40/0x60) from (default_idle+0x1c/0x30)
- (default_idle+0x1c/0x30) from (cpu_idle+0x68/0xa8)
- (cpu_idle+0x68/0xa8) from (start_kernel+0x22c/0x26c)
-
-Signed-off-by: Benoît Thébaudeau <benoit.thebaudeau at advansee.com>
-Cc: Alessandro Zummo <a.zummo at towertech.it>
-Cc: Sascha Hauer <kernel at pengutronix.de>
-Acked-by: Uwe Kleine-König <u.kleine-koenig at pengutronix.de>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/rtc/rtc-mxc.c | 5 +++--
- 1 files changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/rtc/rtc-mxc.c b/drivers/rtc/rtc-mxc.c
-index 39e41fb..5160354 100644
---- a/drivers/rtc/rtc-mxc.c
-+++ b/drivers/rtc/rtc-mxc.c
-@@ -191,10 +191,11 @@ static irqreturn_t mxc_rtc_interrupt(int irq, void *dev_id)
- struct platform_device *pdev = dev_id;
- struct rtc_plat_data *pdata = platform_get_drvdata(pdev);
- void __iomem *ioaddr = pdata->ioaddr;
-+ unsigned long flags;
- u32 status;
- u32 events = 0;
-
-- spin_lock_irq(&pdata->rtc->irq_lock);
-+ spin_lock_irqsave(&pdata->rtc->irq_lock, flags);
- status = readw(ioaddr + RTC_RTCISR) & readw(ioaddr + RTC_RTCIENR);
- /* clear interrupt sources */
- writew(status, ioaddr + RTC_RTCISR);
-@@ -217,7 +218,7 @@ static irqreturn_t mxc_rtc_interrupt(int irq, void *dev_id)
- rtc_update_alarm(&pdev->dev, &pdata->g_rtc_alarm);
-
- rtc_update_irq(pdata->rtc, 1, events);
-- spin_unlock_irq(&pdata->rtc->irq_lock);
-+ spin_unlock_irqrestore(&pdata->rtc->irq_lock, flags);
-
- return IRQ_HANDLED;
- }
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0042-fs-ramfs-file-nommu-add-SetPageUptodate.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0042-fs-ramfs-file-nommu-add-SetPageUptodate.patch
deleted file mode 100644
index 89f0fea..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0042-fs-ramfs-file-nommu-add-SetPageUptodate.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From e3b50d463ce69af9fb5b2d4a54e6c37637c2ecef Mon Sep 17 00:00:00 2001
-From: Bob Liu <lliubbo at gmail.com>
-Date: Wed, 11 Jul 2012 14:02:35 -0700
-Subject: [PATCH 042/109] fs: ramfs: file-nommu: add SetPageUptodate()
-
-commit fea9f718b3d68147f162ed2d870183ce5e0ad8d8 upstream.
-
-There is a bug in the below scenario for !CONFIG_MMU:
-
- 1. create a new file
- 2. mmap the file and write to it
- 3. read the file can't get the correct value
-
-Because
-
- sys_read() -> generic_file_aio_read() -> simple_readpage() -> clear_page()
-
-which causes the page to be zeroed.
-
-Add SetPageUptodate() to ramfs_nommu_expand_for_mapping() so that
-generic_file_aio_read() do not call simple_readpage().
-
-Signed-off-by: Bob Liu <lliubbo at gmail.com>
-Cc: Hugh Dickins <hughd at google.com>
-Cc: David Howells <dhowells at redhat.com>
-Cc: Geert Uytterhoeven <geert at linux-m68k.org>
-Cc: Greg Ungerer <gerg at uclinux.org>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/ramfs/file-nommu.c | 1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-diff --git a/fs/ramfs/file-nommu.c b/fs/ramfs/file-nommu.c
-index fbb0b47..d5378d0 100644
---- a/fs/ramfs/file-nommu.c
-+++ b/fs/ramfs/file-nommu.c
-@@ -110,6 +110,7 @@ int ramfs_nommu_expand_for_mapping(struct inode *inode, size_t newsize)
-
- /* prevent the page from being discarded on memory pressure */
- SetPageDirty(page);
-+ SetPageUptodate(page);
-
- unlock_page(page);
- put_page(page);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0043-cpufreq-ACPI-Fix-not-loading-acpi-cpufreq-driver-reg.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0043-cpufreq-ACPI-Fix-not-loading-acpi-cpufreq-driver-reg.patch
deleted file mode 100644
index 21c973d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0043-cpufreq-ACPI-Fix-not-loading-acpi-cpufreq-driver-reg.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From 8d63c0484f5ed79f498c5bf3e5b90de29555bcb7 Mon Sep 17 00:00:00 2001
-From: Thomas Renninger <trenn at suse.de>
-Date: Thu, 12 Jul 2012 12:24:33 +0200
-Subject: [PATCH 043/109] cpufreq / ACPI: Fix not loading acpi-cpufreq driver
- regression
-
-commit c4686c71a9183f76e3ef59098da5c098748672f6 upstream.
-
-Commit d640113fe80e45ebd4a5b420b introduced a regression on SMP
-systems where the processor core with ACPI id zero is disabled
-(typically should be the case because of hyperthreading).
-The regression got spread through stable kernels.
-On 3.0.X it got introduced via 3.0.18.
-
-Such platforms may be rare, but do exist.
-Look out for a disabled processor with acpi_id 0 in dmesg:
-ACPI: LAPIC (acpi_id[0x00] lapic_id[0x10] disabled)
-
-This problem has been observed on a:
-HP Proliant BL280c G6 blade
-
-This patch restricts the introduced workaround to platforms
-with nr_cpu_ids <= 1.
-
-Signed-off-by: Thomas Renninger <trenn at suse.de>
-Signed-off-by: Rafael J. Wysocki <rjw at sisk.pl>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/acpi/processor_core.c | 6 ++++--
- 1 files changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/acpi/processor_core.c b/drivers/acpi/processor_core.c
-index c850de4..eff7222 100644
---- a/drivers/acpi/processor_core.c
-+++ b/drivers/acpi/processor_core.c
-@@ -189,10 +189,12 @@ int acpi_get_cpuid(acpi_handle handle, int type, u32 acpi_id)
- * Processor (CPU3, 0x03, 0x00000410, 0x06) {}
- * }
- *
-- * Ignores apic_id and always return 0 for CPU0's handle.
-+ * Ignores apic_id and always returns 0 for the processor
-+ * handle with acpi id 0 if nr_cpu_ids is 1.
-+ * This should be the case if SMP tables are not found.
- * Return -1 for other CPU's handle.
- */
-- if (acpi_id == 0)
-+ if (nr_cpu_ids <= 1 && acpi_id == 0)
- return acpi_id;
- else
- return apic_id;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0044-hwmon-it87-Preserve-configuration-register-bits-on-i.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0044-hwmon-it87-Preserve-configuration-register-bits-on-i.patch
deleted file mode 100644
index f7d45cc..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0044-hwmon-it87-Preserve-configuration-register-bits-on-i.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 9b12ab6f8a8a5859e0165b3510dbecae16ca98e3 Mon Sep 17 00:00:00 2001
-From: Jean Delvare <khali at linux-fr.org>
-Date: Thu, 12 Jul 2012 22:47:37 +0200
-Subject: [PATCH 044/109] hwmon: (it87) Preserve configuration register bits
- on init
-
-commit 41002f8dd5938d5ad1d008ce5bfdbfe47fa7b4e8 upstream.
-
-We were accidentally losing one bit in the configuration register on
-device initialization. It was reported to freeze one specific system
-right away. Properly preserve all bits we don't explicitly want to
-change in order to prevent that.
-
-Reported-by: Stevie Trujillo <stevie.trujillo at gmail.com>
-Signed-off-by: Jean Delvare <khali at linux-fr.org>
-Reviewed-by: Guenter Roeck <linux at roeck-us.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/hwmon/it87.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/hwmon/it87.c b/drivers/hwmon/it87.c
-index d912649..1ba7af2 100644
---- a/drivers/hwmon/it87.c
-+++ b/drivers/hwmon/it87.c
-@@ -2086,7 +2086,7 @@ static void __devinit it87_init_device(struct platform_device *pdev)
-
- /* Start monitoring */
- it87_write_value(data, IT87_REG_CONFIG,
-- (it87_read_value(data, IT87_REG_CONFIG) & 0x36)
-+ (it87_read_value(data, IT87_REG_CONFIG) & 0x3e)
- | (update_vbat ? 0x41 : 0x01));
- }
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0045-ARM-SAMSUNG-fix-race-in-s3c_adc_start-for-ADC.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0045-ARM-SAMSUNG-fix-race-in-s3c_adc_start-for-ADC.patch
deleted file mode 100644
index be44eb3..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0045-ARM-SAMSUNG-fix-race-in-s3c_adc_start-for-ADC.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 81b7824449f04aec76681f7723b0f7911ad66f11 Mon Sep 17 00:00:00 2001
-From: Todd Poynor <toddpoynor at google.com>
-Date: Fri, 13 Jul 2012 15:30:48 +0900
-Subject: [PATCH 045/109] ARM: SAMSUNG: fix race in s3c_adc_start for ADC
-
-commit 8265981bb439f3ecc5356fb877a6c2a6636ac88a upstream.
-
-Checking for adc->ts_pend already claimed should be done with the
-lock held.
-
-Signed-off-by: Todd Poynor <toddpoynor at google.com>
-Acked-by: Ben Dooks <ben-linux at fluff.org>
-Signed-off-by: Kukjin Kim <kgene.kim at samsung.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/arm/plat-samsung/adc.c | 8 +++++---
- 1 files changed, 5 insertions(+), 3 deletions(-)
-
-diff --git a/arch/arm/plat-samsung/adc.c b/arch/arm/plat-samsung/adc.c
-index 33ecd0c..b1e05cc 100644
---- a/arch/arm/plat-samsung/adc.c
-+++ b/arch/arm/plat-samsung/adc.c
-@@ -157,11 +157,13 @@ int s3c_adc_start(struct s3c_adc_client *client,
- return -EINVAL;
- }
-
-- if (client->is_ts && adc->ts_pend)
-- return -EAGAIN;
--
- spin_lock_irqsave(&adc->lock, flags);
-
-+ if (client->is_ts && adc->ts_pend) {
-+ spin_unlock_irqrestore(&adc->lock, flags);
-+ return -EAGAIN;
-+ }
-+
- client->channel = channel;
- client->nr_samples = nr_samples;
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0046-block-fix-infinite-loop-in-__getblk_slow.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0046-block-fix-infinite-loop-in-__getblk_slow.patch
deleted file mode 100644
index 6c5d9b8..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0046-block-fix-infinite-loop-in-__getblk_slow.patch
+++ /dev/null
@@ -1,116 +0,0 @@
-From 898f4d272514d19aafee8cd66b796c0553fca080 Mon Sep 17 00:00:00 2001
-From: Jeff Moyer <jmoyer at redhat.com>
-Date: Thu, 12 Jul 2012 09:43:14 -0400
-Subject: [PATCH 046/109] block: fix infinite loop in __getblk_slow
-
-commit 91f68c89d8f35fe98ea04159b9a3b42d0149478f upstream.
-
-Commit 080399aaaf35 ("block: don't mark buffers beyond end of disk as
-mapped") exposed a bug in __getblk_slow that causes mount to hang as it
-loops infinitely waiting for a buffer that lies beyond the end of the
-disk to become uptodate.
-
-The problem was initially reported by Torsten Hilbrich here:
-
- https://lkml.org/lkml/2012/6/18/54
-
-and also reported independently here:
-
- http://www.sysresccd.org/forums/viewtopic.php?f=13&t=4511
-
-and then Richard W.M. Jones and Marcos Mello noted a few separate
-bugzillas also associated with the same issue. This patch has been
-confirmed to fix:
-
- https://bugzilla.redhat.com/show_bug.cgi?id=835019
-
-The main problem is here, in __getblk_slow:
-
- for (;;) {
- struct buffer_head * bh;
- int ret;
-
- bh = __find_get_block(bdev, block, size);
- if (bh)
- return bh;
-
- ret = grow_buffers(bdev, block, size);
- if (ret < 0)
- return NULL;
- if (ret == 0)
- free_more_memory();
- }
-
-__find_get_block does not find the block, since it will not be marked as
-mapped, and so grow_buffers is called to fill in the buffers for the
-associated page. I believe the for (;;) loop is there primarily to
-retry in the case of memory pressure keeping grow_buffers from
-succeeding. However, we also continue to loop for other cases, like the
-block lying beond the end of the disk. So, the fix I came up with is to
-only loop when grow_buffers fails due to memory allocation issues
-(return value of 0).
-
-The attached patch was tested by myself, Torsten, and Rich, and was
-found to resolve the problem in call cases.
-
-Signed-off-by: Jeff Moyer <jmoyer at redhat.com>
-Reported-and-Tested-by: Torsten Hilbrich <torsten.hilbrich at secunet.com>
-Tested-by: Richard W.M. Jones <rjones at redhat.com>
-Reviewed-by: Josh Boyer <jwboyer at redhat.com>
-[ Jens is on vacation, taking this directly - Linus ]
---
-Stable Notes: this patch requires backport to 3.0, 3.2 and 3.3.
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/buffer.c | 22 +++++++++++++---------
- 1 files changed, 13 insertions(+), 9 deletions(-)
-
-diff --git a/fs/buffer.c b/fs/buffer.c
-index c807931..4115eca 100644
---- a/fs/buffer.c
-+++ b/fs/buffer.c
-@@ -1087,6 +1087,9 @@ grow_buffers(struct block_device *bdev, sector_t block, int size)
- static struct buffer_head *
- __getblk_slow(struct block_device *bdev, sector_t block, int size)
- {
-+ int ret;
-+ struct buffer_head *bh;
-+
- /* Size must be multiple of hard sectorsize */
- if (unlikely(size & (bdev_logical_block_size(bdev)-1) ||
- (size < 512 || size > PAGE_SIZE))) {
-@@ -1099,20 +1102,21 @@ __getblk_slow(struct block_device *bdev, sector_t block, int size)
- return NULL;
- }
-
-- for (;;) {
-- struct buffer_head * bh;
-- int ret;
-+retry:
-+ bh = __find_get_block(bdev, block, size);
-+ if (bh)
-+ return bh;
-
-+ ret = grow_buffers(bdev, block, size);
-+ if (ret == 0) {
-+ free_more_memory();
-+ goto retry;
-+ } else if (ret > 0) {
- bh = __find_get_block(bdev, block, size);
- if (bh)
- return bh;
--
-- ret = grow_buffers(bdev, block, size);
-- if (ret < 0)
-- return NULL;
-- if (ret == 0)
-- free_more_memory();
- }
-+ return NULL;
- }
-
- /*
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0047-Remove-easily-user-triggerable-BUG-from-generic_setl.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0047-Remove-easily-user-triggerable-BUG-from-generic_setl.patch
deleted file mode 100644
index 8747220..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0047-Remove-easily-user-triggerable-BUG-from-generic_setl.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 51b23c5c8a3aacf16acf8b723c35a23c07c37115 Mon Sep 17 00:00:00 2001
-From: Dave Jones <davej at redhat.com>
-Date: Fri, 13 Jul 2012 13:35:36 -0400
-Subject: [PATCH 047/109] Remove easily user-triggerable BUG from
- generic_setlease
-
-commit 8d657eb3b43861064d36241e88d9d61c709f33f0 upstream.
-
-This can be trivially triggered from userspace by passing in something unexpected.
-
- kernel BUG at fs/locks.c:1468!
- invalid opcode: 0000 [#1] SMP
- RIP: 0010:generic_setlease+0xc2/0x100
- Call Trace:
- __vfs_setlease+0x35/0x40
- fcntl_setlease+0x76/0x150
- sys_fcntl+0x1c6/0x810
- system_call_fastpath+0x1a/0x1f
-
-Signed-off-by: Dave Jones <davej at redhat.com>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/locks.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/fs/locks.c b/fs/locks.c
-index 0d68f1f..6a64f15 100644
---- a/fs/locks.c
-+++ b/fs/locks.c
-@@ -1465,7 +1465,7 @@ int generic_setlease(struct file *filp, long arg, struct file_lock **flp)
- case F_WRLCK:
- return generic_add_lease(filp, arg, flp);
- default:
-- BUG();
-+ return -EINVAL;
- }
- }
- EXPORT_SYMBOL(generic_setlease);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0048-NFC-Export-nfc.h-to-userland.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0048-NFC-Export-nfc.h-to-userland.patch
deleted file mode 100644
index 90d6d7b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0048-NFC-Export-nfc.h-to-userland.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 8750544d6522f38e7f5722ee263d0f95941c9bd8 Mon Sep 17 00:00:00 2001
-From: Samuel Ortiz <sameo at linux.intel.com>
-Date: Thu, 10 May 2012 19:45:51 +0200
-Subject: [PATCH 048/109] NFC: Export nfc.h to userland
-
-commit dbd4fcaf8d664fab4163b1f8682e41ad8bff3444 upstream.
-
-The netlink commands and attributes, along with the socket structure
-definitions need to be exported.
-
-Signed-off-by: Samuel Ortiz <sameo at linux.intel.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- include/linux/Kbuild | 1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-diff --git a/include/linux/Kbuild b/include/linux/Kbuild
-index bd21ecd..a3ce901 100644
---- a/include/linux/Kbuild
-+++ b/include/linux/Kbuild
-@@ -268,6 +268,7 @@ header-y += netfilter_ipv4.h
- header-y += netfilter_ipv6.h
- header-y += netlink.h
- header-y += netrom.h
-+header-y += nfc.h
- header-y += nfs.h
- header-y += nfs2.h
- header-y += nfs3.h
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0049-PM-Hibernate-Hibernate-thaw-fixes-improvements.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0049-PM-Hibernate-Hibernate-thaw-fixes-improvements.patch
deleted file mode 100644
index b0b708b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0049-PM-Hibernate-Hibernate-thaw-fixes-improvements.patch
+++ /dev/null
@@ -1,178 +0,0 @@
-From b6807062ada796cdfde2c0f5ca59390b0c916aae Mon Sep 17 00:00:00 2001
-From: Bojan Smojver <bojan at rexursive.com>
-Date: Sun, 29 Apr 2012 22:42:06 +0200
-Subject: [PATCH 049/109] PM / Hibernate: Hibernate/thaw fixes/improvements
-
-commit 5a21d489fd9541a4a66b9a500659abaca1b19a51 upstream.
-
- 1. Do not allocate memory for buffers from emergency pools, unless
- absolutely required. Do not warn about and do not retry non-essential
- failed allocations.
-
- 2. Do not check the amount of free pages left on every single page
- write, but wait until one map is completely populated and then check.
-
- 3. Set maximum number of pages for read buffering consistently, instead
- of inadvertently depending on the size of the sector type.
-
- 4. Fix copyright line, which I missed when I submitted the hibernation
- threading patch.
-
- 5. Dispense with bit shifting arithmetic to improve readability.
-
- 6. Really recalculate the number of pages required to be free after all
- allocations have been done.
-
- 7. Fix calculation of pages required for read buffering. Only count in
- pages that do not belong to high memory.
-
-Signed-off-by: Bojan Smojver <bojan at rexursive.com>
-Signed-off-by: Rafael J. Wysocki <rjw at sisk.pl>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- kernel/power/swap.c | 62 ++++++++++++++++++++++++++++++++-------------------
- 1 files changed, 39 insertions(+), 23 deletions(-)
-
-diff --git a/kernel/power/swap.c b/kernel/power/swap.c
-index b313086..64f8f97 100644
---- a/kernel/power/swap.c
-+++ b/kernel/power/swap.c
-@@ -6,7 +6,7 @@
- *
- * Copyright (C) 1998,2001-2005 Pavel Machek <pavel at ucw.cz>
- * Copyright (C) 2006 Rafael J. Wysocki <rjw at sisk.pl>
-- * Copyright (C) 2010 Bojan Smojver <bojan at rexursive.com>
-+ * Copyright (C) 2010-2012 Bojan Smojver <bojan at rexursive.com>
- *
- * This file is released under the GPLv2.
- *
-@@ -283,14 +283,17 @@ static int write_page(void *buf, sector_t offset, struct bio **bio_chain)
- return -ENOSPC;
-
- if (bio_chain) {
-- src = (void *)__get_free_page(__GFP_WAIT | __GFP_HIGH);
-+ src = (void *)__get_free_page(__GFP_WAIT | __GFP_NOWARN |
-+ __GFP_NORETRY);
- if (src) {
- copy_page(src, buf);
- } else {
- ret = hib_wait_on_bio_chain(bio_chain); /* Free pages */
- if (ret)
- return ret;
-- src = (void *)__get_free_page(__GFP_WAIT | __GFP_HIGH);
-+ src = (void *)__get_free_page(__GFP_WAIT |
-+ __GFP_NOWARN |
-+ __GFP_NORETRY);
- if (src) {
- copy_page(src, buf);
- } else {
-@@ -368,12 +371,17 @@ static int swap_write_page(struct swap_map_handle *handle, void *buf,
- clear_page(handle->cur);
- handle->cur_swap = offset;
- handle->k = 0;
-- }
-- if (bio_chain && low_free_pages() <= handle->reqd_free_pages) {
-- error = hib_wait_on_bio_chain(bio_chain);
-- if (error)
-- goto out;
-- handle->reqd_free_pages = reqd_free_pages();
-+
-+ if (bio_chain && low_free_pages() <= handle->reqd_free_pages) {
-+ error = hib_wait_on_bio_chain(bio_chain);
-+ if (error)
-+ goto out;
-+ /*
-+ * Recalculate the number of required free pages, to
-+ * make sure we never take more than half.
-+ */
-+ handle->reqd_free_pages = reqd_free_pages();
-+ }
- }
- out:
- return error;
-@@ -420,8 +428,9 @@ static int swap_writer_finish(struct swap_map_handle *handle,
- /* Maximum number of threads for compression/decompression. */
- #define LZO_THREADS 3
-
--/* Maximum number of pages for read buffering. */
--#define LZO_READ_PAGES (MAP_PAGE_ENTRIES * 8)
-+/* Minimum/maximum number of pages for read buffering. */
-+#define LZO_MIN_RD_PAGES 1024
-+#define LZO_MAX_RD_PAGES 8192
-
-
- /**
-@@ -632,12 +641,6 @@ static int save_image_lzo(struct swap_map_handle *handle,
- }
-
- /*
-- * Adjust number of free pages after all allocations have been done.
-- * We don't want to run out of pages when writing.
-- */
-- handle->reqd_free_pages = reqd_free_pages();
--
-- /*
- * Start the CRC32 thread.
- */
- init_waitqueue_head(&crc->go);
-@@ -658,6 +661,12 @@ static int save_image_lzo(struct swap_map_handle *handle,
- goto out_clean;
- }
-
-+ /*
-+ * Adjust the number of required free pages after all allocations have
-+ * been done. We don't want to run out of pages when writing.
-+ */
-+ handle->reqd_free_pages = reqd_free_pages();
-+
- printk(KERN_INFO
- "PM: Using %u thread(s) for compression.\n"
- "PM: Compressing and saving image data (%u pages) ... ",
-@@ -1067,7 +1076,7 @@ static int load_image_lzo(struct swap_map_handle *handle,
- unsigned i, thr, run_threads, nr_threads;
- unsigned ring = 0, pg = 0, ring_size = 0,
- have = 0, want, need, asked = 0;
-- unsigned long read_pages;
-+ unsigned long read_pages = 0;
- unsigned char **page = NULL;
- struct dec_data *data = NULL;
- struct crc_data *crc = NULL;
-@@ -1079,7 +1088,7 @@ static int load_image_lzo(struct swap_map_handle *handle,
- nr_threads = num_online_cpus() - 1;
- nr_threads = clamp_val(nr_threads, 1, LZO_THREADS);
-
-- page = vmalloc(sizeof(*page) * LZO_READ_PAGES);
-+ page = vmalloc(sizeof(*page) * LZO_MAX_RD_PAGES);
- if (!page) {
- printk(KERN_ERR "PM: Failed to allocate LZO page\n");
- ret = -ENOMEM;
-@@ -1144,15 +1153,22 @@ static int load_image_lzo(struct swap_map_handle *handle,
- }
-
- /*
-- * Adjust number of pages for read buffering, in case we are short.
-+ * Set the number of pages for read buffering.
-+ * This is complete guesswork, because we'll only know the real
-+ * picture once prepare_image() is called, which is much later on
-+ * during the image load phase. We'll assume the worst case and
-+ * say that none of the image pages are from high memory.
- */
-- read_pages = (nr_free_pages() - snapshot_get_image_size()) >> 1;
-- read_pages = clamp_val(read_pages, LZO_CMP_PAGES, LZO_READ_PAGES);
-+ if (low_free_pages() > snapshot_get_image_size())
-+ read_pages = (low_free_pages() - snapshot_get_image_size()) / 2;
-+ read_pages = clamp_val(read_pages, LZO_MIN_RD_PAGES, LZO_MAX_RD_PAGES);
-
- for (i = 0; i < read_pages; i++) {
- page[i] = (void *)__get_free_page(i < LZO_CMP_PAGES ?
- __GFP_WAIT | __GFP_HIGH :
-- __GFP_WAIT);
-+ __GFP_WAIT | __GFP_NOWARN |
-+ __GFP_NORETRY);
-+
- if (!page[i]) {
- if (i < LZO_CMP_PAGES) {
- ring_size = i;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0050-cfg80211-check-iface-combinations-only-when-iface-is.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0050-cfg80211-check-iface-combinations-only-when-iface-is.patch
deleted file mode 100644
index c9a9c98..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0050-cfg80211-check-iface-combinations-only-when-iface-is.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From c83354ed38bbb4ebfa25f954d825594453b160c1 Mon Sep 17 00:00:00 2001
-From: Michal Kazior <michal.kazior at tieto.com>
-Date: Fri, 8 Jun 2012 10:55:44 +0200
-Subject: [PATCH 050/109] cfg80211: check iface combinations only when iface
- is running
-
-commit f8cdddb8d61d16a156229f0910f7ecfc7a82c003 upstream.
-
-Don't validate interface combinations on a stopped
-interface. Otherwise we might end up being able to
-create a new interface with a certain type, but
-won't be able to change an existing interface
-into that type.
-
-This also skips some other functions when
-interface is stopped and changing interface type.
-
-Signed-off-by: Michal Kazior <michal.kazior at tieto.com>
-Signed-off-by: Johannes Berg <johannes.berg at intel.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/wireless/util.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/net/wireless/util.c b/net/wireless/util.c
-index d38815d..74d5292 100644
---- a/net/wireless/util.c
-+++ b/net/wireless/util.c
-@@ -813,7 +813,7 @@ int cfg80211_change_iface(struct cfg80211_registered_device *rdev,
- ntype == NL80211_IFTYPE_P2P_CLIENT))
- return -EBUSY;
-
-- if (ntype != otype) {
-+ if (ntype != otype && netif_running(dev)) {
- err = cfg80211_can_change_interface(rdev, dev->ieee80211_ptr,
- ntype);
- if (err)
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0051-intel_ips-blacklist-HP-ProBook-laptops.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0051-intel_ips-blacklist-HP-ProBook-laptops.patch
deleted file mode 100644
index d1c0f9b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0051-intel_ips-blacklist-HP-ProBook-laptops.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-From ea2ca0ebd427d4a745043e6e030619221fe9a55b Mon Sep 17 00:00:00 2001
-From: Takashi Iwai <tiwai at suse.de>
-Date: Mon, 25 Jun 2012 15:07:17 +0200
-Subject: [PATCH 051/109] intel_ips: blacklist HP ProBook laptops
-
-commit 88ca518b0bb4161e5f20f8a1d9cc477cae294e54 upstream.
-
-intel_ips driver spews the warning message
- "ME failed to update for more than 1s, likely hung"
-at each second endlessly on HP ProBook laptops with IronLake.
-
-As this has never worked, better to blacklist the driver for now.
-
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Signed-off-by: Matthew Garrett <mjg at redhat.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/platform/x86/intel_ips.c | 22 ++++++++++++++++++++++
- 1 files changed, 22 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/platform/x86/intel_ips.c b/drivers/platform/x86/intel_ips.c
-index 809a3ae..b46ec11 100644
---- a/drivers/platform/x86/intel_ips.c
-+++ b/drivers/platform/x86/intel_ips.c
-@@ -72,6 +72,7 @@
- #include <linux/string.h>
- #include <linux/tick.h>
- #include <linux/timer.h>
-+#include <linux/dmi.h>
- #include <drm/i915_drm.h>
- #include <asm/msr.h>
- #include <asm/processor.h>
-@@ -1505,6 +1506,24 @@ static DEFINE_PCI_DEVICE_TABLE(ips_id_table) = {
-
- MODULE_DEVICE_TABLE(pci, ips_id_table);
-
-+static int ips_blacklist_callback(const struct dmi_system_id *id)
-+{
-+ pr_info("Blacklisted intel_ips for %s\n", id->ident);
-+ return 1;
-+}
-+
-+static const struct dmi_system_id ips_blacklist[] = {
-+ {
-+ .callback = ips_blacklist_callback,
-+ .ident = "HP ProBook",
-+ .matches = {
-+ DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"),
-+ DMI_MATCH(DMI_PRODUCT_NAME, "HP ProBook"),
-+ },
-+ },
-+ { } /* terminating entry */
-+};
-+
- static int ips_probe(struct pci_dev *dev, const struct pci_device_id *id)
- {
- u64 platform_info;
-@@ -1514,6 +1533,9 @@ static int ips_probe(struct pci_dev *dev, const struct pci_device_id *id)
- u16 htshi, trc, trc_required_mask;
- u8 tse;
-
-+ if (dmi_check_system(ips_blacklist))
-+ return -ENODEV;
-+
- ips = kzalloc(sizeof(struct ips_driver), GFP_KERNEL);
- if (!ips)
- return -ENOMEM;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0052-atl1c-fix-issue-of-transmit-queue-0-timed-out.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0052-atl1c-fix-issue-of-transmit-queue-0-timed-out.patch
deleted file mode 100644
index 92f5a27..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0052-atl1c-fix-issue-of-transmit-queue-0-timed-out.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 0e6bee2eb164145946ea6ca49c4fd1e02c7177fa Mon Sep 17 00:00:00 2001
-From: Cloud Ren <cjren at qca.qualcomm.com>
-Date: Tue, 3 Jul 2012 16:51:48 +0000
-Subject: [PATCH 052/109] atl1c: fix issue of transmit queue 0 timed out
-
-commit b94e52f62683dc0b00c6d1b58b80929a078c0fd5 upstream.
-
-some people report atl1c could cause system hang with following
-kernel trace info:
----------------------------------------
-WARNING: at.../net/sched/sch_generic.c:258 dev_watchdog+0x1db/0x1d0()
-...
-NETDEV WATCHDOG: eth0 (atl1c): transmit queue 0 timed out
-...
----------------------------------------
-This is caused by netif_stop_queue calling when cable Link is down.
-So remove netif_stop_queue, because link_watch will take it over.
-
-Signed-off-by: xiong <xiong at qca.qualcomm.com>
-Signed-off-by: Cloud Ren <cjren at qca.qualcomm.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-[bwh: Backported to 3.2: adjust context]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/ethernet/atheros/atl1c/atl1c_main.c | 1 -
- 1 files changed, 0 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
-index eccdcff..5ae7df7 100644
---- a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
-+++ b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
-@@ -267,7 +267,6 @@ static void atl1c_check_link_status(struct atl1c_adapter *adapter)
- dev_warn(&pdev->dev, "stop mac failed\n");
- atl1c_set_aspm(hw, false);
- netif_carrier_off(netdev);
-- netif_stop_queue(netdev);
- atl1c_phy_reset(hw);
- atl1c_phy_init(&adapter->hw);
- } else {
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0053-rt2x00usb-fix-indexes-ordering-on-RX-queue-kick.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0053-rt2x00usb-fix-indexes-ordering-on-RX-queue-kick.patch
deleted file mode 100644
index 17d4e14..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0053-rt2x00usb-fix-indexes-ordering-on-RX-queue-kick.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From 6b52d1306665e9da06ac76126a97888849dbf290 Mon Sep 17 00:00:00 2001
-From: Stanislaw Gruszka <sgruszka at redhat.com>
-Date: Wed, 4 Jul 2012 13:10:02 +0200
-Subject: [PATCH 053/109] rt2x00usb: fix indexes ordering on RX queue kick
-
-commit efd821182cec8c92babef6e00a95066d3252fda4 upstream.
-
-On rt2x00_dmastart() we increase index specified by Q_INDEX and on
-rt2x00_dmadone() we increase index specified by Q_INDEX_DONE. So entries
-between Q_INDEX_DONE and Q_INDEX are those we currently process in the
-hardware. Entries between Q_INDEX and Q_INDEX_DONE are those we can
-submit to the hardware.
-
-According to that fix rt2x00usb_kick_queue(), as we need to submit RX
-entries that are not processed by the hardware. It worked before only
-for empty queue, otherwise was broken.
-
-Note that for TX queues indexes ordering are ok. We need to kick entries
-that have filled skb, but was not submitted to the hardware, i.e.
-started from Q_INDEX_DONE and have ENTRY_DATA_PENDING bit set.
-
-From practical standpoint this fixes RX queue stall, usually reproducible
-in AP mode, like for example reported here:
-https://bugzilla.redhat.com/show_bug.cgi?id=828824
-
-Reported-and-tested-by: Franco Miceli <fmiceli at plan.ceibal.edu.uy>
-Reported-and-tested-by: Tom Horsley <horsley1953 at gmail.com>
-Signed-off-by: Stanislaw Gruszka <sgruszka at redhat.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/wireless/rt2x00/rt2x00usb.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/net/wireless/rt2x00/rt2x00usb.c b/drivers/net/wireless/rt2x00/rt2x00usb.c
-index 1e31050..ba28807 100644
---- a/drivers/net/wireless/rt2x00/rt2x00usb.c
-+++ b/drivers/net/wireless/rt2x00/rt2x00usb.c
-@@ -426,8 +426,8 @@ void rt2x00usb_kick_queue(struct data_queue *queue)
- case QID_RX:
- if (!rt2x00queue_full(queue))
- rt2x00queue_for_each_entry(queue,
-- Q_INDEX_DONE,
- Q_INDEX,
-+ Q_INDEX_DONE,
- NULL,
- rt2x00usb_kick_rx_entry);
- break;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0054-iwlegacy-always-monitor-for-stuck-queues.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0054-iwlegacy-always-monitor-for-stuck-queues.patch
deleted file mode 100644
index 83172fb..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0054-iwlegacy-always-monitor-for-stuck-queues.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-From b7d2c1e70d2c94585ac5839e38b861bdc6d469d2 Mon Sep 17 00:00:00 2001
-From: Stanislaw Gruszka <sgruszka at redhat.com>
-Date: Wed, 4 Jul 2012 13:20:20 +0200
-Subject: [PATCH 054/109] iwlegacy: always monitor for stuck queues
-
-commit c2ca7d92ed4bbd779516beb6eb226e19f7f7ab0f upstream.
-
-This is iwlegacy version of:
-
-commit 342bbf3fee2fa9a18147e74b2e3c4229a4564912
-Author: Johannes Berg <johannes.berg at intel.com>
-Date: Sun Mar 4 08:50:46 2012 -0800
-
- iwlwifi: always monitor for stuck queues
-
- If we only monitor while associated, the following
- can happen:
- - we're associated, and the queue stuck check
- runs, setting the queue "touch" time to X
- - we disassociate, stopping the monitoring,
- which leaves the time set to X
- - almost 2s later, we associate, and enqueue
- a frame
- - before the frame is transmitted, we monitor
- for stuck queues, and find the time set to
- X, although it is now later than X + 2000ms,
- so we decide that the queue is stuck and
- erroneously restart the device
-
-Signed-off-by: Stanislaw Gruszka <sgruszka at redhat.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-[bwh: Backported to 3.2: adjust filename, function and variable names]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/wireless/iwlegacy/iwl-core.c | 14 ++++++--------
- 1 files changed, 6 insertions(+), 8 deletions(-)
-
-diff --git a/drivers/net/wireless/iwlegacy/iwl-core.c b/drivers/net/wireless/iwlegacy/iwl-core.c
-index 2bd5659..1bb64c9 100644
---- a/drivers/net/wireless/iwlegacy/iwl-core.c
-+++ b/drivers/net/wireless/iwlegacy/iwl-core.c
-@@ -1884,14 +1884,12 @@ void iwl_legacy_bg_watchdog(unsigned long data)
- return;
-
- /* monitor and check for other stuck queues */
-- if (iwl_legacy_is_any_associated(priv)) {
-- for (cnt = 0; cnt < priv->hw_params.max_txq_num; cnt++) {
-- /* skip as we already checked the command queue */
-- if (cnt == priv->cmd_queue)
-- continue;
-- if (iwl_legacy_check_stuck_queue(priv, cnt))
-- return;
-- }
-+ for (cnt = 0; cnt < priv->hw_params.max_txq_num; cnt++) {
-+ /* skip as we already checked the command queue */
-+ if (cnt == priv->cmd_queue)
-+ continue;
-+ if (iwl_legacy_check_stuck_queue(priv, cnt))
-+ return;
- }
-
- mod_timer(&priv->watchdog, jiffies +
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0055-iwlegacy-don-t-mess-up-the-SCD-when-removing-a-key.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0055-iwlegacy-don-t-mess-up-the-SCD-when-removing-a-key.patch
deleted file mode 100644
index f5bbca6..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0055-iwlegacy-don-t-mess-up-the-SCD-when-removing-a-key.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From 910c9012a7e02b93cc1f877aa8ef245dd1d99fbe Mon Sep 17 00:00:00 2001
-From: Emmanuel Grumbach <emmanuel.grumbach at intel.com>
-Date: Wed, 4 Jul 2012 13:59:08 +0200
-Subject: [PATCH 055/109] iwlegacy: don't mess up the SCD when removing a key
-
-commit b48d96652626b315229b1b82c6270eead6a77a6d upstream.
-
-When we remove a key, we put a key index which was supposed
-to tell the fw that we are actually removing the key. But
-instead the fw took that index as a valid index and messed
-up the SRAM of the device.
-
-This memory corruption on the device mangled the data of
-the SCD. The impact on the user is that SCD queue 2 got
-stuck after having removed keys.
-
-Reported-by: Paul Bolle <pebolle at tiscali.nl>
-Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach at intel.com>
-Signed-off-by: Stanislaw Gruszka <sgruszka at redhat.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-[bwh: Backported to 3.2: adjust filename, context and variable name]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/wireless/iwlegacy/iwl-4965-sta.c | 4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/net/wireless/iwlegacy/iwl-4965-sta.c b/drivers/net/wireless/iwlegacy/iwl-4965-sta.c
-index a262c23..0116ca8 100644
---- a/drivers/net/wireless/iwlegacy/iwl-4965-sta.c
-+++ b/drivers/net/wireless/iwlegacy/iwl-4965-sta.c
-@@ -466,7 +466,7 @@ int iwl4965_remove_dynamic_key(struct iwl_priv *priv,
- return 0;
- }
-
-- if (priv->stations[sta_id].sta.key.key_offset == WEP_INVALID_OFFSET) {
-+ if (priv->stations[sta_id].sta.key.key_flags & STA_KEY_FLG_INVALID) {
- IWL_WARN(priv, "Removing wrong key %d 0x%x\n",
- keyconf->keyidx, key_flags);
- spin_unlock_irqrestore(&priv->sta_lock, flags);
-@@ -483,7 +483,7 @@ int iwl4965_remove_dynamic_key(struct iwl_priv *priv,
- sizeof(struct iwl4965_keyinfo));
- priv->stations[sta_id].sta.key.key_flags =
- STA_KEY_FLG_NO_ENC | STA_KEY_FLG_INVALID;
-- priv->stations[sta_id].sta.key.key_offset = WEP_INVALID_OFFSET;
-+ priv->stations[sta_id].sta.key.key_offset = keyconf->hw_key_idx;
- priv->stations[sta_id].sta.sta.modify_mask = STA_MODIFY_KEY_MASK;
- priv->stations[sta_id].sta.mode = STA_CONTROL_MODIFY_MSK;
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0056-e1000e-Correct-link-check-logic-for-82571-serdes.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0056-e1000e-Correct-link-check-logic-for-82571-serdes.patch
deleted file mode 100644
index b7cf900..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0056-e1000e-Correct-link-check-logic-for-82571-serdes.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From c82dafb3ba87352cb605641f7d709ec76dc64168 Mon Sep 17 00:00:00 2001
-From: Tushar Dave <tushar.n.dave at intel.com>
-Date: Thu, 12 Jul 2012 08:56:56 +0000
-Subject: [PATCH 056/109] e1000e: Correct link check logic for 82571 serdes
-
-commit d0efa8f23a644f7cb7d1f8e78dd9a223efa412a3 upstream.
-
-SYNCH bit and IV bit of RXCW register are sticky. Before examining these bits,
-RXCW should be read twice to filter out one-time false events and have correct
-values for these bits. Incorrect values of these bits in link check logic can
-cause weird link stability issues if auto-negotiation fails.
-
-Reported-by: Dean Nelson <dnelson at redhat.com>
-Signed-off-by: Tushar Dave <tushar.n.dave at intel.com>
-Reviewed-by: Bruce Allan <bruce.w.allan at intel.com>
-Tested-by: Jeff Pieper <jeffrey.e.pieper at intel.com>
-Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher at intel.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/ethernet/intel/e1000e/82571.c | 3 +++
- 1 files changed, 3 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/net/ethernet/intel/e1000e/82571.c b/drivers/net/ethernet/intel/e1000e/82571.c
-index e556fc3..3072d35 100644
---- a/drivers/net/ethernet/intel/e1000e/82571.c
-+++ b/drivers/net/ethernet/intel/e1000e/82571.c
-@@ -1571,6 +1571,9 @@ static s32 e1000_check_for_serdes_link_82571(struct e1000_hw *hw)
- ctrl = er32(CTRL);
- status = er32(STATUS);
- rxcw = er32(RXCW);
-+ /* SYNCH bit and IV bit are sticky */
-+ udelay(10);
-+ rxcw = er32(RXCW);
-
- if ((rxcw & E1000_RXCW_SYNCH) && !(rxcw & E1000_RXCW_IV)) {
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0057-tcm_fc-Fix-crash-seen-with-aborts-and-large-reads.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0057-tcm_fc-Fix-crash-seen-with-aborts-and-large-reads.patch
deleted file mode 100644
index eb1e62d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0057-tcm_fc-Fix-crash-seen-with-aborts-and-large-reads.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From f846f3528f3dcd02646a919a50696d026e0864ae Mon Sep 17 00:00:00 2001
-From: Mark Rustad <mark.d.rustad at intel.com>
-Date: Fri, 13 Jul 2012 18:18:04 -0700
-Subject: [PATCH 057/109] tcm_fc: Fix crash seen with aborts and large reads
-
-commit 3cc5d2a6b9a2fd1bf024aa5e52dd22961eecaf13 upstream.
-
-This patch fixes a crash seen when large reads have their exchange
-aborted by either timing out or being reset. Because the exchange
-abort results in the seq pointer being set to NULL, because the
-sequence is no longer valid, it must not be dereferenced. This
-patch changes the function ft_get_task_tag to return ~0 if it is
-unable to get the tag for this reason. Because the get_task_tag
-interface provides no means of returning an error, this seems
-like the best way to fix this issue at the moment.
-
-Signed-off-by: Mark Rustad <mark.d.rustad at intel.com>
-Signed-off-by: Nicholas Bellinger <nab at linux-iscsi.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/target/tcm_fc/tfc_cmd.c | 2 ++
- 1 files changed, 2 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/target/tcm_fc/tfc_cmd.c b/drivers/target/tcm_fc/tfc_cmd.c
-index d95cfe2..278819c 100644
---- a/drivers/target/tcm_fc/tfc_cmd.c
-+++ b/drivers/target/tcm_fc/tfc_cmd.c
-@@ -249,6 +249,8 @@ u32 ft_get_task_tag(struct se_cmd *se_cmd)
- {
- struct ft_cmd *cmd = container_of(se_cmd, struct ft_cmd, se_cmd);
-
-+ if (cmd->aborted)
-+ return ~0;
- return fc_seq_exch(cmd->seq)->rxid;
- }
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0058-fifo-Do-not-restart-open-if-it-already-found-a-partn.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0058-fifo-Do-not-restart-open-if-it-already-found-a-partn.patch
deleted file mode 100644
index 99a8db5..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0058-fifo-Do-not-restart-open-if-it-already-found-a-partn.patch
+++ /dev/null
@@ -1,115 +0,0 @@
-From 13d0304203a528b1c1c76b5c9b6f5b8dc093f996 Mon Sep 17 00:00:00 2001
-From: Anders Kaseorg <andersk at MIT.EDU>
-Date: Sun, 15 Jul 2012 17:14:25 -0400
-Subject: [PATCH 058/109] fifo: Do not restart open() if it already found a
- partner
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit 05d290d66be6ef77a0b962ebecf01911bd984a78 upstream.
-
-If a parent and child process open the two ends of a fifo, and the
-child immediately exits, the parent may receive a SIGCHLD before its
-open() returns. In that case, we need to make sure that open() will
-return successfully after the SIGCHLD handler returns, instead of
-throwing EINTR or being restarted. Otherwise, the restarted open()
-would incorrectly wait for a second partner on the other end.
-
-The following test demonstrates the EINTR that was wrongly thrown from
-the parent’s open(). Change .sa_flags = 0 to .sa_flags = SA_RESTART
-to see a deadlock instead, in which the restarted open() waits for a
-second reader that will never come. (On my systems, this happens
-pretty reliably within about 5 to 500 iterations. Others report that
-it manages to loop ~forever sometimes; YMMV.)
-
- #include <sys/stat.h>
- #include <sys/types.h>
- #include <sys/wait.h>
- #include <fcntl.h>
- #include <signal.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <unistd.h>
-
- #define CHECK(x) do if ((x) == -1) {perror(#x); abort();} while(0)
-
- void handler(int signum) {}
-
- int main()
- {
- struct sigaction act = {.sa_handler = handler, .sa_flags = 0};
- CHECK(sigaction(SIGCHLD, &act, NULL));
- CHECK(mknod("fifo", S_IFIFO | S_IRWXU, 0));
- for (;;) {
- int fd;
- pid_t pid;
- putc('.', stderr);
- CHECK(pid = fork());
- if (pid == 0) {
- CHECK(fd = open("fifo", O_RDONLY));
- _exit(0);
- }
- CHECK(fd = open("fifo", O_WRONLY));
- CHECK(close(fd));
- CHECK(waitpid(pid, NULL, 0));
- }
- }
-
-This is what I suspect was causing the Git test suite to fail in
-t9010-svn-fe.sh:
-
- http://bugs.debian.org/678852
-
-Signed-off-by: Anders Kaseorg <andersk at mit.edu>
-Reviewed-by: Jonathan Nieder <jrnieder at gmail.com>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/fifo.c | 9 ++++-----
- 1 files changed, 4 insertions(+), 5 deletions(-)
-
-diff --git a/fs/fifo.c b/fs/fifo.c
-index b1a524d..cf6f434 100644
---- a/fs/fifo.c
-+++ b/fs/fifo.c
-@@ -14,7 +14,7 @@
- #include <linux/sched.h>
- #include <linux/pipe_fs_i.h>
-
--static void wait_for_partner(struct inode* inode, unsigned int *cnt)
-+static int wait_for_partner(struct inode* inode, unsigned int *cnt)
- {
- int cur = *cnt;
-
-@@ -23,6 +23,7 @@ static void wait_for_partner(struct inode* inode, unsigned int *cnt)
- if (signal_pending(current))
- break;
- }
-+ return cur == *cnt ? -ERESTARTSYS : 0;
- }
-
- static void wake_up_partner(struct inode* inode)
-@@ -67,8 +68,7 @@ static int fifo_open(struct inode *inode, struct file *filp)
- * seen a writer */
- filp->f_version = pipe->w_counter;
- } else {
-- wait_for_partner(inode, &pipe->w_counter);
-- if(signal_pending(current))
-+ if (wait_for_partner(inode, &pipe->w_counter))
- goto err_rd;
- }
- }
-@@ -90,8 +90,7 @@ static int fifo_open(struct inode *inode, struct file *filp)
- wake_up_partner(inode);
-
- if (!pipe->readers) {
-- wait_for_partner(inode, &pipe->r_counter);
-- if (signal_pending(current))
-+ if (wait_for_partner(inode, &pipe->r_counter))
- goto err_wr;
- }
- break;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0059-target-Clean-up-returning-errors-in-PR-handling-code.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0059-target-Clean-up-returning-errors-in-PR-handling-code.patch
deleted file mode 100644
index 273c119..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0059-target-Clean-up-returning-errors-in-PR-handling-code.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From ab68c7b575aff70124f83d2ec207d06c60eea003 Mon Sep 17 00:00:00 2001
-From: Roland Dreier <roland at purestorage.com>
-Date: Mon, 16 Jul 2012 15:17:10 -0700
-Subject: [PATCH 059/109] target: Clean up returning errors in PR handling
- code
-
-commit d35212f3ca3bf4fb49d15e37f530c9931e2d2183 upstream.
-
- - instead of (PTR_ERR(file) < 0) just use IS_ERR(file)
- - return -EINVAL instead of EINVAL
- - all other error returns in target_scsi3_emulate_pr_out() use
- "goto out" -- get rid of the one remaining straight "return."
-
-Signed-off-by: Roland Dreier <roland at purestorage.com>
-Signed-off-by: Nicholas Bellinger <nab at linux-iscsi.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/target/target_core_pr.c | 7 ++++---
- 1 files changed, 4 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/target/target_core_pr.c b/drivers/target/target_core_pr.c
-index b75bc92..9145141 100644
---- a/drivers/target/target_core_pr.c
-+++ b/drivers/target/target_core_pr.c
-@@ -2042,7 +2042,7 @@ static int __core_scsi3_write_aptpl_to_file(
- if (IS_ERR(file) || !file || !file->f_dentry) {
- pr_err("filp_open(%s) for APTPL metadata"
- " failed\n", path);
-- return (PTR_ERR(file) < 0 ? PTR_ERR(file) : -ENOENT);
-+ return IS_ERR(file) ? PTR_ERR(file) : -ENOENT;
- }
-
- iov[0].iov_base = &buf[0];
-@@ -3853,7 +3853,7 @@ int target_scsi3_emulate_pr_out(struct se_task *task)
- " SPC-2 reservation is held, returning"
- " RESERVATION_CONFLICT\n");
- cmd->scsi_sense_reason = TCM_RESERVATION_CONFLICT;
-- ret = EINVAL;
-+ ret = -EINVAL;
- goto out;
- }
-
-@@ -3863,7 +3863,8 @@ int target_scsi3_emulate_pr_out(struct se_task *task)
- */
- if (!cmd->se_sess) {
- cmd->scsi_sense_reason = TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE;
-- return -EINVAL;
-+ ret = -EINVAL;
-+ goto out;
- }
-
- if (cmd->data_length < 24) {
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0060-target-Fix-range-calculation-in-WRITE-SAME-emulation.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0060-target-Fix-range-calculation-in-WRITE-SAME-emulation.patch
deleted file mode 100644
index 264206d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0060-target-Fix-range-calculation-in-WRITE-SAME-emulation.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 63a96e329f2c66af145a93d6f42067e54ef932af Mon Sep 17 00:00:00 2001
-From: Roland Dreier <roland at purestorage.com>
-Date: Mon, 16 Jul 2012 17:10:17 -0700
-Subject: [PATCH 060/109] target: Fix range calculation in WRITE SAME
- emulation when num blocks == 0
-
-commit 1765fe5edcb83f53fc67edeb559fcf4bc82c6460 upstream.
-
-When NUMBER OF LOGICAL BLOCKS is 0, WRITE SAME is supposed to write
-all the blocks from the specified LBA through the end of the device.
-However, dev->transport->get_blocks(dev) (perhaps confusingly) returns
-the last valid LBA rather than the number of blocks, so the correct
-number of blocks to write starting with lba is
-
-dev->transport->get_blocks(dev) - lba + 1
-
-(nab: Backport roland's for-3.6 patch to for-3.5)
-
-Signed-off-by: Roland Dreier <roland at purestorage.com>
-Signed-off-by: Nicholas Bellinger <nab at linux-iscsi.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/target/target_core_cdb.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/target/target_core_cdb.c b/drivers/target/target_core_cdb.c
-index 65ea65a..93b9406 100644
---- a/drivers/target/target_core_cdb.c
-+++ b/drivers/target/target_core_cdb.c
-@@ -1199,7 +1199,7 @@ int target_emulate_write_same(struct se_task *task)
- if (num_blocks != 0)
- range = num_blocks;
- else
-- range = (dev->transport->get_blocks(dev) - lba);
-+ range = (dev->transport->get_blocks(dev) - lba) + 1;
-
- pr_debug("WRITE_SAME UNMAP: LBA: %llu Range: %llu\n",
- (unsigned long long)lba, (unsigned long long)range);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0061-cifs-on-CONFIG_HIGHMEM-machines-limit-the-rsize-wsiz.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0061-cifs-on-CONFIG_HIGHMEM-machines-limit-the-rsize-wsiz.patch
deleted file mode 100644
index e3fc6d0..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0061-cifs-on-CONFIG_HIGHMEM-machines-limit-the-rsize-wsiz.patch
+++ /dev/null
@@ -1,82 +0,0 @@
-From 0028855e0b717cadb5fc6b05934af9bd9d2cc4c1 Mon Sep 17 00:00:00 2001
-From: Jeff Layton <jlayton at redhat.com>
-Date: Wed, 11 Jul 2012 09:09:35 -0400
-Subject: [PATCH 061/109] cifs: on CONFIG_HIGHMEM machines, limit the
- rsize/wsize to the kmap space
-
-commit 3ae629d98bd5ed77585a878566f04f310adbc591 upstream.
-
-We currently rely on being able to kmap all of the pages in an async
-read or write request. If you're on a machine that has CONFIG_HIGHMEM
-set then that kmap space is limited, sometimes to as low as 512 slots.
-
-With 512 slots, we can only support up to a 2M r/wsize, and that's
-assuming that we can get our greedy little hands on all of them. There
-are other users however, so it's possible we'll end up stuck with a
-size that large.
-
-Since we can't handle a rsize or wsize larger than that currently, cap
-those options at the number of kmap slots we have. We could consider
-capping it even lower, but we currently default to a max of 1M. Might as
-well allow those luddites on 32 bit arches enough rope to hang
-themselves.
-
-A more robust fix would be to teach the send and receive routines how
-to contend with an array of pages so we don't need to marshal up a kvec
-array at all. That's a fairly significant overhaul though, so we'll need
-this limit in place until that's ready.
-
-Reported-by: Jian Li <jiali at redhat.com>
-Signed-off-by: Jeff Layton <jlayton at redhat.com>
-Signed-off-by: Steve French <smfrench at gmail.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/cifs/connect.c | 18 ++++++++++++++++++
- 1 files changed, 18 insertions(+), 0 deletions(-)
-
-diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c
-index b21670c..56c152d 100644
---- a/fs/cifs/connect.c
-+++ b/fs/cifs/connect.c
-@@ -2925,6 +2925,18 @@ void cifs_setup_cifs_sb(struct smb_vol *pvolume_info,
- #define CIFS_DEFAULT_NON_POSIX_RSIZE (60 * 1024)
- #define CIFS_DEFAULT_NON_POSIX_WSIZE (65536)
-
-+/*
-+ * On hosts with high memory, we can't currently support wsize/rsize that are
-+ * larger than we can kmap at once. Cap the rsize/wsize at
-+ * LAST_PKMAP * PAGE_SIZE. We'll never be able to fill a read or write request
-+ * larger than that anyway.
-+ */
-+#ifdef CONFIG_HIGHMEM
-+#define CIFS_KMAP_SIZE_LIMIT (LAST_PKMAP * PAGE_CACHE_SIZE)
-+#else /* CONFIG_HIGHMEM */
-+#define CIFS_KMAP_SIZE_LIMIT (1<<24)
-+#endif /* CONFIG_HIGHMEM */
-+
- static unsigned int
- cifs_negotiate_wsize(struct cifs_tcon *tcon, struct smb_vol *pvolume_info)
- {
-@@ -2955,6 +2967,9 @@ cifs_negotiate_wsize(struct cifs_tcon *tcon, struct smb_vol *pvolume_info)
- wsize = min_t(unsigned int, wsize,
- server->maxBuf - sizeof(WRITE_REQ) + 4);
-
-+ /* limit to the amount that we can kmap at once */
-+ wsize = min_t(unsigned int, wsize, CIFS_KMAP_SIZE_LIMIT);
-+
- /* hard limit of CIFS_MAX_WSIZE */
- wsize = min_t(unsigned int, wsize, CIFS_MAX_WSIZE);
-
-@@ -2996,6 +3011,9 @@ cifs_negotiate_rsize(struct cifs_tcon *tcon, struct smb_vol *pvolume_info)
- if (!(server->capabilities & CAP_LARGE_READ_X))
- rsize = min_t(unsigned int, CIFSMaxBufSize, rsize);
-
-+ /* limit to the amount that we can kmap at once */
-+ rsize = min_t(unsigned int, rsize, CIFS_KMAP_SIZE_LIMIT);
-+
- /* hard limit of CIFS_MAX_RSIZE */
- rsize = min_t(unsigned int, rsize, CIFS_MAX_RSIZE);
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0062-cifs-always-update-the-inode-cache-with-the-results-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0062-cifs-always-update-the-inode-cache-with-the-results-.patch
deleted file mode 100644
index 6e67cc9..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0062-cifs-always-update-the-inode-cache-with-the-results-.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 3d7e548a161a109e404e1068901f834c69eeb0ea Mon Sep 17 00:00:00 2001
-From: Jeff Layton <jlayton at redhat.com>
-Date: Fri, 6 Jul 2012 07:09:42 -0400
-Subject: [PATCH 062/109] cifs: always update the inode cache with the results
- from a FIND_*
-
-commit cd60042cc1392e79410dc8de9e9c1abb38a29e57 upstream.
-
-When we get back a FIND_FIRST/NEXT result, we have some info about the
-dentry that we use to instantiate a new inode. We were ignoring and
-discarding that info when we had an existing dentry in the cache.
-
-Fix this by updating the inode in place when we find an existing dentry
-and the uniqueid is the same.
-
-Reported-and-Tested-by: Andrew Bartlett <abartlet at samba.org>
-Reported-by: Bill Robertson <bill_robertson at debortoli.com.au>
-Reported-by: Dion Edwards <dion_edwards at debortoli.com.au>
-Signed-off-by: Jeff Layton <jlayton at redhat.com>
-Signed-off-by: Steve French <smfrench at gmail.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/cifs/readdir.c | 7 +++++--
- 1 files changed, 5 insertions(+), 2 deletions(-)
-
-diff --git a/fs/cifs/readdir.c b/fs/cifs/readdir.c
-index db4a138..4c37ed4 100644
---- a/fs/cifs/readdir.c
-+++ b/fs/cifs/readdir.c
-@@ -86,9 +86,12 @@ cifs_readdir_lookup(struct dentry *parent, struct qstr *name,
-
- dentry = d_lookup(parent, name);
- if (dentry) {
-- /* FIXME: check for inode number changes? */
-- if (dentry->d_inode != NULL)
-+ inode = dentry->d_inode;
-+ /* update inode in place if i_ino didn't change */
-+ if (inode && CIFS_I(inode)->uniqueid == fattr->cf_uniqueid) {
-+ cifs_fattr_to_inode(inode, fattr);
- return dentry;
-+ }
- d_drop(dentry);
- dput(dentry);
- }
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0063-mm-fix-lost-kswapd-wakeup-in-kswapd_stop.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0063-mm-fix-lost-kswapd-wakeup-in-kswapd_stop.patch
deleted file mode 100644
index 198dc15..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0063-mm-fix-lost-kswapd-wakeup-in-kswapd_stop.patch
+++ /dev/null
@@ -1,84 +0,0 @@
-From 6ece4e48bfa223f77eff8fc4d2fcc4808214f42e Mon Sep 17 00:00:00 2001
-From: Aaditya Kumar <aaditya.kumar.30 at gmail.com>
-Date: Tue, 17 Jul 2012 15:48:07 -0700
-Subject: [PATCH 063/109] mm: fix lost kswapd wakeup in kswapd_stop()
-
-commit 1c7e7f6c0703d03af6bcd5ccc11fc15d23e5ecbe upstream.
-
-Offlining memory may block forever, waiting for kswapd() to wake up
-because kswapd() does not check the event kthread->should_stop before
-sleeping.
-
-The proper pattern, from Documentation/memory-barriers.txt, is:
-
- --- waker ---
- event_indicated = 1;
- wake_up_process(event_daemon);
-
- --- sleeper ---
- for (;;) {
- set_current_state(TASK_UNINTERRUPTIBLE);
- if (event_indicated)
- break;
- schedule();
- }
-
- set_current_state() may be wrapped by:
- prepare_to_wait();
-
-In the kswapd() case, event_indicated is kthread->should_stop.
-
- === offlining memory (waker) ===
- kswapd_stop()
- kthread_stop()
- kthread->should_stop = 1
- wake_up_process()
- wait_for_completion()
-
- === kswapd_try_to_sleep (sleeper) ===
- kswapd_try_to_sleep()
- prepare_to_wait()
- .
- .
- schedule()
- .
- .
- finish_wait()
-
-The schedule() needs to be protected by a test of kthread->should_stop,
-which is wrapped by kthread_should_stop().
-
-Reproducer:
- Do heavy file I/O in background.
- Do a memory offline/online in a tight loop
-
-Signed-off-by: Aaditya Kumar <aaditya.kumar at ap.sony.com>
-Acked-by: KOSAKI Motohiro <kosaki.motohiro at jp.fujitsu.com>
-Reviewed-by: Minchan Kim <minchan at kernel.org>
-Acked-by: Mel Gorman <mel at csn.ul.ie>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- mm/vmscan.c | 5 ++++-
- 1 files changed, 4 insertions(+), 1 deletions(-)
-
-diff --git a/mm/vmscan.c b/mm/vmscan.c
-index 72cf498..8342119 100644
---- a/mm/vmscan.c
-+++ b/mm/vmscan.c
-@@ -2824,7 +2824,10 @@ static void kswapd_try_to_sleep(pg_data_t *pgdat, int order, int classzone_idx)
- * them before going back to sleep.
- */
- set_pgdat_percpu_threshold(pgdat, calculate_normal_threshold);
-- schedule();
-+
-+ if (!kthread_should_stop())
-+ schedule();
-+
- set_pgdat_percpu_threshold(pgdat, calculate_pressure_threshold);
- } else {
- if (remaining)
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0064-md-avoid-crash-when-stopping-md-array-races-with-clo.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0064-md-avoid-crash-when-stopping-md-array-races-with-clo.patch
deleted file mode 100644
index 3ef68e9..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0064-md-avoid-crash-when-stopping-md-array-races-with-clo.patch
+++ /dev/null
@@ -1,164 +0,0 @@
-From 22c2c30192d85ffa042433e89e929b4ea08ab528 Mon Sep 17 00:00:00 2001
-From: NeilBrown <neilb at suse.de>
-Date: Thu, 19 Jul 2012 15:59:18 +1000
-Subject: [PATCH 064/109] md: avoid crash when stopping md array races with
- closing other open fds.
-
-commit a05b7ea03d72f36edb0cec05e8893803335c61a0 upstream.
-
-md will refuse to stop an array if any other fd (or mounted fs) is
-using it.
-When any fs is unmounted of when the last open fd is closed all
-pending IO will be flushed (e.g. sync_blockdev call in __blkdev_put)
-so there will be no pending IO to worry about when the array is
-stopped.
-
-However in order to send the STOP_ARRAY ioctl to stop the array one
-must first get and open fd on the block device.
-If some fd is being used to write to the block device and it is closed
-after mdadm open the block device, but before mdadm issues the
-STOP_ARRAY ioctl, then there will be no last-close on the md device so
-__blkdev_put will not call sync_blockdev.
-
-If this happens, then IO can still be in-flight while md tears down
-the array and bad things can happen (use-after-free and subsequent
-havoc).
-
-So in the case where do_md_stop is being called from an open file
-descriptor, call sync_block after taking the mutex to ensure there
-will be no new openers.
-
-This is needed when setting a read-write device to read-only too.
-
-Reported-by: majianpeng <majianpeng at gmail.com>
-Signed-off-by: NeilBrown <neilb at suse.de>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/md/md.c | 36 +++++++++++++++++++++++-------------
- 1 files changed, 23 insertions(+), 13 deletions(-)
-
-diff --git a/drivers/md/md.c b/drivers/md/md.c
-index 700ecae..d8646d7 100644
---- a/drivers/md/md.c
-+++ b/drivers/md/md.c
-@@ -3700,8 +3700,8 @@ array_state_show(struct mddev *mddev, char *page)
- return sprintf(page, "%s\n", array_states[st]);
- }
-
--static int do_md_stop(struct mddev * mddev, int ro, int is_open);
--static int md_set_readonly(struct mddev * mddev, int is_open);
-+static int do_md_stop(struct mddev * mddev, int ro, struct block_device *bdev);
-+static int md_set_readonly(struct mddev * mddev, struct block_device *bdev);
- static int do_md_run(struct mddev * mddev);
- static int restart_array(struct mddev *mddev);
-
-@@ -3717,14 +3717,14 @@ array_state_store(struct mddev *mddev, const char *buf, size_t len)
- /* stopping an active array */
- if (atomic_read(&mddev->openers) > 0)
- return -EBUSY;
-- err = do_md_stop(mddev, 0, 0);
-+ err = do_md_stop(mddev, 0, NULL);
- break;
- case inactive:
- /* stopping an active array */
- if (mddev->pers) {
- if (atomic_read(&mddev->openers) > 0)
- return -EBUSY;
-- err = do_md_stop(mddev, 2, 0);
-+ err = do_md_stop(mddev, 2, NULL);
- } else
- err = 0; /* already inactive */
- break;
-@@ -3732,7 +3732,7 @@ array_state_store(struct mddev *mddev, const char *buf, size_t len)
- break; /* not supported yet */
- case readonly:
- if (mddev->pers)
-- err = md_set_readonly(mddev, 0);
-+ err = md_set_readonly(mddev, NULL);
- else {
- mddev->ro = 1;
- set_disk_ro(mddev->gendisk, 1);
-@@ -3742,7 +3742,7 @@ array_state_store(struct mddev *mddev, const char *buf, size_t len)
- case read_auto:
- if (mddev->pers) {
- if (mddev->ro == 0)
-- err = md_set_readonly(mddev, 0);
-+ err = md_set_readonly(mddev, NULL);
- else if (mddev->ro == 1)
- err = restart_array(mddev);
- if (err == 0) {
-@@ -5078,15 +5078,17 @@ void md_stop(struct mddev *mddev)
- }
- EXPORT_SYMBOL_GPL(md_stop);
-
--static int md_set_readonly(struct mddev *mddev, int is_open)
-+static int md_set_readonly(struct mddev *mddev, struct block_device *bdev)
- {
- int err = 0;
- mutex_lock(&mddev->open_mutex);
-- if (atomic_read(&mddev->openers) > is_open) {
-+ if (atomic_read(&mddev->openers) > !!bdev) {
- printk("md: %s still in use.\n",mdname(mddev));
- err = -EBUSY;
- goto out;
- }
-+ if (bdev)
-+ sync_blockdev(bdev);
- if (mddev->pers) {
- __md_stop_writes(mddev);
-
-@@ -5108,18 +5110,26 @@ out:
- * 0 - completely stop and dis-assemble array
- * 2 - stop but do not disassemble array
- */
--static int do_md_stop(struct mddev * mddev, int mode, int is_open)
-+static int do_md_stop(struct mddev * mddev, int mode,
-+ struct block_device *bdev)
- {
- struct gendisk *disk = mddev->gendisk;
- struct md_rdev *rdev;
-
- mutex_lock(&mddev->open_mutex);
-- if (atomic_read(&mddev->openers) > is_open ||
-+ if (atomic_read(&mddev->openers) > !!bdev ||
- mddev->sysfs_active) {
- printk("md: %s still in use.\n",mdname(mddev));
- mutex_unlock(&mddev->open_mutex);
- return -EBUSY;
- }
-+ if (bdev)
-+ /* It is possible IO was issued on some other
-+ * open file which was closed before we took ->open_mutex.
-+ * As that was not the last close __blkdev_put will not
-+ * have called sync_blockdev, so we must.
-+ */
-+ sync_blockdev(bdev);
-
- if (mddev->pers) {
- if (mddev->ro)
-@@ -5193,7 +5203,7 @@ static void autorun_array(struct mddev *mddev)
- err = do_md_run(mddev);
- if (err) {
- printk(KERN_WARNING "md: do_md_run() returned %d\n", err);
-- do_md_stop(mddev, 0, 0);
-+ do_md_stop(mddev, 0, NULL);
- }
- }
-
-@@ -6184,11 +6194,11 @@ static int md_ioctl(struct block_device *bdev, fmode_t mode,
- goto done_unlock;
-
- case STOP_ARRAY:
-- err = do_md_stop(mddev, 0, 1);
-+ err = do_md_stop(mddev, 0, bdev);
- goto done_unlock;
-
- case STOP_ARRAY_RO:
-- err = md_set_readonly(mddev, 1);
-+ err = md_set_readonly(mddev, bdev);
- goto done_unlock;
-
- case BLKROSET:
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0065-md-raid1-close-some-possible-races-on-write-errors-d.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0065-md-raid1-close-some-possible-races-on-write-errors-d.patch
deleted file mode 100644
index b3bd32c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0065-md-raid1-close-some-possible-races-on-write-errors-d.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From a5f676adf9ef247dd5363de5f0e26d0bdb6597bc Mon Sep 17 00:00:00 2001
-From: NeilBrown <neilb at suse.de>
-Date: Thu, 19 Jul 2012 15:59:18 +1000
-Subject: [PATCH 065/109] md/raid1: close some possible races on write errors
- during resync
-
-commit 58e94ae18478c08229626daece2fc108a4a23261 upstream.
-
-commit 4367af556133723d0f443e14ca8170d9447317cb
- md/raid1: clear bad-block record when write succeeds.
-
-Added a 'reschedule_retry' call possibility at the end of
-end_sync_write, but didn't add matching code at the end of
-sync_request_write. So if the writes complete very quickly, or
-scheduling makes it seem that way, then we can miss rescheduling
-the request and the resync could hang.
-
-Also commit 73d5c38a9536142e062c35997b044e89166e063b
- md: avoid races when stopping resync.
-
-Fix a race condition in this same code in end_sync_write but didn't
-make the change in sync_request_write.
-
-This patch updates sync_request_write to fix both of those.
-Patch is suitable for 3.1 and later kernels.
-
-Reported-by: Alexander Lyakas <alex.bolshoy at gmail.com>
-Original-version-by: Alexander Lyakas <alex.bolshoy at gmail.com>
-Signed-off-by: NeilBrown <neilb at suse.de>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/md/raid1.c | 10 ++++++++--
- 1 files changed, 8 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c
-index 58f0055..2d97bf0 100644
---- a/drivers/md/raid1.c
-+++ b/drivers/md/raid1.c
-@@ -1713,8 +1713,14 @@ static void sync_request_write(struct mddev *mddev, struct r1bio *r1_bio)
-
- if (atomic_dec_and_test(&r1_bio->remaining)) {
- /* if we're here, all write(s) have completed, so clean up */
-- md_done_sync(mddev, r1_bio->sectors, 1);
-- put_buf(r1_bio);
-+ int s = r1_bio->sectors;
-+ if (test_bit(R1BIO_MadeGood, &r1_bio->state) ||
-+ test_bit(R1BIO_WriteError, &r1_bio->state))
-+ reschedule_retry(r1_bio);
-+ else {
-+ put_buf(r1_bio);
-+ md_done_sync(mddev, s, 1);
-+ }
- }
- }
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0066-MIPS-Properly-align-the-.data.init_task-section.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0066-MIPS-Properly-align-the-.data.init_task-section.patch
deleted file mode 100644
index c9ab6f8..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0066-MIPS-Properly-align-the-.data.init_task-section.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-From 892d35f24ea2801daef7e48e41d8ec4e9bac34e8 Mon Sep 17 00:00:00 2001
-From: David Daney <david.daney at cavium.com>
-Date: Thu, 19 Jul 2012 09:11:14 +0200
-Subject: [PATCH 066/109] MIPS: Properly align the .data..init_task section.
-
-commit 7b1c0d26a8e272787f0f9fcc5f3e8531df3b3409 upstream.
-
-Improper alignment can lead to unbootable systems and/or random
-crashes.
-
-[ralf at linux-mips.org: This is a lond standing bug since
-6eb10bc9e2deab06630261cd05c4cb1e9a60e980 (kernel.org) rsp.
-c422a10917f75fd19fa7fe070aaaa23e384dae6f (lmo) [MIPS: Clean up linker script
-using new linker script macros.] so dates back to 2.6.32.]
-
-Signed-off-by: David Daney <david.daney at cavium.com>
-Cc: linux-mips at linux-mips.org
-Patchwork: https://patchwork.linux-mips.org/patch/3881/
-Signed-off-by: Ralf Baechle <ralf at linux-mips.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/mips/include/asm/thread_info.h | 4 ++--
- arch/mips/kernel/vmlinux.lds.S | 3 ++-
- 2 files changed, 4 insertions(+), 3 deletions(-)
-
-diff --git a/arch/mips/include/asm/thread_info.h b/arch/mips/include/asm/thread_info.h
-index 97f8bf6..adda036 100644
---- a/arch/mips/include/asm/thread_info.h
-+++ b/arch/mips/include/asm/thread_info.h
-@@ -60,6 +60,8 @@ struct thread_info {
- register struct thread_info *__current_thread_info __asm__("$28");
- #define current_thread_info() __current_thread_info
-
-+#endif /* !__ASSEMBLY__ */
-+
- /* thread information allocation */
- #if defined(CONFIG_PAGE_SIZE_4KB) && defined(CONFIG_32BIT)
- #define THREAD_SIZE_ORDER (1)
-@@ -97,8 +99,6 @@ register struct thread_info *__current_thread_info __asm__("$28");
-
- #define free_thread_info(info) kfree(info)
-
--#endif /* !__ASSEMBLY__ */
--
- #define PREEMPT_ACTIVE 0x10000000
-
- /*
-diff --git a/arch/mips/kernel/vmlinux.lds.S b/arch/mips/kernel/vmlinux.lds.S
-index a81176f..be281c6 100644
---- a/arch/mips/kernel/vmlinux.lds.S
-+++ b/arch/mips/kernel/vmlinux.lds.S
-@@ -1,5 +1,6 @@
- #include <asm/asm-offsets.h>
- #include <asm/page.h>
-+#include <asm/thread_info.h>
- #include <asm-generic/vmlinux.lds.h>
-
- #undef mips
-@@ -73,7 +74,7 @@ SECTIONS
- .data : { /* Data */
- . = . + DATAOFFSET; /* for CONFIG_MAPPED_KERNEL */
-
-- INIT_TASK_DATA(PAGE_SIZE)
-+ INIT_TASK_DATA(THREAD_SIZE)
- NOSAVE_DATA
- CACHELINE_ALIGNED_DATA(1 << CONFIG_MIPS_L1_CACHE_SHIFT)
- READ_MOSTLY_DATA(1 << CONFIG_MIPS_L1_CACHE_SHIFT)
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0067-UBIFS-fix-a-bug-in-empty-space-fix-up.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0067-UBIFS-fix-a-bug-in-empty-space-fix-up.patch
deleted file mode 100644
index c51b177..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0067-UBIFS-fix-a-bug-in-empty-space-fix-up.patch
+++ /dev/null
@@ -1,67 +0,0 @@
-From f6ba94c29333fa6df9b3b553415e93bafbd3c831 Mon Sep 17 00:00:00 2001
-From: Artem Bityutskiy <Artem.Bityutskiy at linux.intel.com>
-Date: Sat, 14 Jul 2012 14:33:09 +0300
-Subject: [PATCH 067/109] UBIFS: fix a bug in empty space fix-up
-
-commit c6727932cfdb13501108b16c38463c09d5ec7a74 upstream.
-
-UBIFS has a feature called "empty space fix-up" which is a quirk to work-around
-limitations of dumb flasher programs. Namely, of those flashers that are unable
-to skip NAND pages full of 0xFFs while flashing, resulting in empty space at
-the end of half-filled eraseblocks to be unusable for UBIFS. This feature is
-relatively new (introduced in v3.0).
-
-The fix-up routine (fixup_free_space()) is executed only once at the very first
-mount if the superblock has the 'space_fixup' flag set (can be done with -F
-option of mkfs.ubifs). It basically reads all the UBIFS data and metadata and
-writes it back to the same LEB. The routine assumes the image is pristine and
-does not have anything in the journal.
-
-There was a bug in 'fixup_free_space()' where it fixed up the log incorrectly.
-All but one LEB of the log of a pristine file-system are empty. And one
-contains just a commit start node. And 'fixup_free_space()' just unmapped this
-LEB, which resulted in wiping the commit start node. As a result, some users
-were unable to mount the file-system next time with the following symptom:
-
-UBIFS error (pid 1): replay_log_leb: first log node at LEB 3:0 is not CS node
-UBIFS error (pid 1): replay_log_leb: log error detected while replaying the log at LEB 3:0
-
-The root-cause of this bug was that 'fixup_free_space()' wrongly assumed
-that the beginning of empty space in the log head (c->lhead_offs) was known
-on mount. However, it is not the case - it was always 0. UBIFS does not store
-in it the master node and finds out by scanning the log on every mount.
-
-The fix is simple - just pass commit start node size instead of 0 to
-'fixup_leb()'.
-
-Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy at linux.intel.com>
-Reported-by: Iwo Mergler <Iwo.Mergler at netcommwireless.com>
-Tested-by: Iwo Mergler <Iwo.Mergler at netcommwireless.com>
-Reported-by: James Nute <newten82 at gmail.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/ubifs/sb.c | 8 ++++++--
- 1 files changed, 6 insertions(+), 2 deletions(-)
-
-diff --git a/fs/ubifs/sb.c b/fs/ubifs/sb.c
-index 6094c5a..b73ecd8 100644
---- a/fs/ubifs/sb.c
-+++ b/fs/ubifs/sb.c
-@@ -715,8 +715,12 @@ static int fixup_free_space(struct ubifs_info *c)
- lnum = ubifs_next_log_lnum(c, lnum);
- }
-
-- /* Fixup the current log head */
-- err = fixup_leb(c, c->lhead_lnum, c->lhead_offs);
-+ /*
-+ * Fixup the log head which contains the only a CS node at the
-+ * beginning.
-+ */
-+ err = fixup_leb(c, c->lhead_lnum,
-+ ALIGN(UBIFS_CS_NODE_SZ, c->min_io_size));
- if (err)
- goto out;
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0068-ore-Fix-NFS-crash-by-supporting-any-unaligned-RAID-I.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0068-ore-Fix-NFS-crash-by-supporting-any-unaligned-RAID-I.patch
deleted file mode 100644
index 0dabe3b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0068-ore-Fix-NFS-crash-by-supporting-any-unaligned-RAID-I.patch
+++ /dev/null
@@ -1,211 +0,0 @@
-From b4c39a3690fd0d723f50eba441fe567e8fee68f1 Mon Sep 17 00:00:00 2001
-From: Boaz Harrosh <bharrosh at panasas.com>
-Date: Fri, 8 Jun 2012 01:19:07 +0300
-Subject: [PATCH 068/109] ore: Fix NFS crash by supporting any unaligned RAID
- IO
-
-commit 9ff19309a9623f2963ac5a136782ea4d8b5d67fb upstream.
-
-In RAID_5/6 We used to not permit an IO that it's end
-byte is not stripe_size aligned and spans more than one stripe.
-.i.e the caller must check if after submission the actual
-transferred bytes is shorter, and would need to resubmit
-a new IO with the remainder.
-
-Exofs supports this, and NFS was supposed to support this
-as well with it's short write mechanism. But late testing has
-exposed a CRASH when this is used with none-RPC layout-drivers.
-
-The change at NFS is deep and risky, in it's place the fix
-at ORE to lift the limitation is actually clean and simple.
-So here it is below.
-
-The principal here is that in the case of unaligned IO on
-both ends, beginning and end, we will send two read requests
-one like old code, before the calculation of the first stripe,
-and also a new site, before the calculation of the last stripe.
-If any "boundary" is aligned or the complete IO is within a single
-stripe. we do a single read like before.
-
-The code is clean and simple by splitting the old _read_4_write
-into 3 even parts:
-1._read_4_write_first_stripe
-2. _read_4_write_last_stripe
-3. _read_4_write_execute
-
-And calling 1+3 at the same place as before. 2+3 before last
-stripe, and in the case of all in a single stripe then 1+2+3
-is preformed additively.
-
-Why did I not think of it before. Well I had a strike of
-genius because I have stared at this code for 2 years, and did
-not find this simple solution, til today. Not that I did not try.
-
-This solution is much better for NFS than the previous supposedly
-solution because the short write was dealt with out-of-band after
-IO_done, which would cause for a seeky IO pattern where as in here
-we execute in order. At both solutions we do 2 separate reads, only
-here we do it within a single IO request. (And actually combine two
-writes into a single submission)
-
-NFS/exofs code need not change since the ORE API communicates the new
-shorter length on return, what will happen is that this case would not
-occur anymore.
-
-hurray!!
-
-[Stable this is an NFS bug since 3.2 Kernel should apply cleanly]
-Signed-off-by: Boaz Harrosh <bharrosh at panasas.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/exofs/ore_raid.c | 67 +++++++++++++++++++++++++++-----------------------
- 1 files changed, 36 insertions(+), 31 deletions(-)
-
-diff --git a/fs/exofs/ore_raid.c b/fs/exofs/ore_raid.c
-index d222c77..fff2070 100644
---- a/fs/exofs/ore_raid.c
-+++ b/fs/exofs/ore_raid.c
-@@ -461,16 +461,12 @@ static void _mark_read4write_pages_uptodate(struct ore_io_state *ios, int ret)
- * ios->sp2d[p][*], xor is calculated the same way. These pages are
- * allocated/freed and don't go through cache
- */
--static int _read_4_write(struct ore_io_state *ios)
-+static int _read_4_write_first_stripe(struct ore_io_state *ios)
- {
-- struct ore_io_state *ios_read;
- struct ore_striping_info read_si;
- struct __stripe_pages_2d *sp2d = ios->sp2d;
- u64 offset = ios->si.first_stripe_start;
-- u64 last_stripe_end;
-- unsigned bytes_in_stripe = ios->si.bytes_in_stripe;
-- unsigned i, c, p, min_p = sp2d->pages_in_unit, max_p = -1;
-- int ret;
-+ unsigned c, p, min_p = sp2d->pages_in_unit, max_p = -1;
-
- if (offset == ios->offset) /* Go to start collect $200 */
- goto read_last_stripe;
-@@ -478,6 +474,9 @@ static int _read_4_write(struct ore_io_state *ios)
- min_p = _sp2d_min_pg(sp2d);
- max_p = _sp2d_max_pg(sp2d);
-
-+ ORE_DBGMSG("stripe_start=0x%llx ios->offset=0x%llx min_p=%d max_p=%d\n",
-+ offset, ios->offset, min_p, max_p);
-+
- for (c = 0; ; c++) {
- ore_calc_stripe_info(ios->layout, offset, 0, &read_si);
- read_si.obj_offset += min_p * PAGE_SIZE;
-@@ -512,6 +511,18 @@ static int _read_4_write(struct ore_io_state *ios)
- }
-
- read_last_stripe:
-+ return 0;
-+}
-+
-+static int _read_4_write_last_stripe(struct ore_io_state *ios)
-+{
-+ struct ore_striping_info read_si;
-+ struct __stripe_pages_2d *sp2d = ios->sp2d;
-+ u64 offset;
-+ u64 last_stripe_end;
-+ unsigned bytes_in_stripe = ios->si.bytes_in_stripe;
-+ unsigned c, p, min_p = sp2d->pages_in_unit, max_p = -1;
-+
- offset = ios->offset + ios->length;
- if (offset % PAGE_SIZE)
- _add_to_r4w_last_page(ios, &offset);
-@@ -527,15 +538,15 @@ read_last_stripe:
- c = _dev_order(ios->layout->group_width * ios->layout->mirrors_p1,
- ios->layout->mirrors_p1, read_si.par_dev, read_si.dev);
-
-- BUG_ON(ios->si.first_stripe_start + bytes_in_stripe != last_stripe_end);
-- /* unaligned IO must be within a single stripe */
--
- if (min_p == sp2d->pages_in_unit) {
- /* Didn't do it yet */
- min_p = _sp2d_min_pg(sp2d);
- max_p = _sp2d_max_pg(sp2d);
- }
-
-+ ORE_DBGMSG("offset=0x%llx stripe_end=0x%llx min_p=%d max_p=%d\n",
-+ offset, last_stripe_end, min_p, max_p);
-+
- while (offset < last_stripe_end) {
- struct __1_page_stripe *_1ps = &sp2d->_1p_stripes[p];
-
-@@ -568,6 +579,15 @@ read_last_stripe:
- }
-
- read_it:
-+ return 0;
-+}
-+
-+static int _read_4_write_execute(struct ore_io_state *ios)
-+{
-+ struct ore_io_state *ios_read;
-+ unsigned i;
-+ int ret;
-+
- ios_read = ios->ios_read_4_write;
- if (!ios_read)
- return 0;
-@@ -591,6 +611,8 @@ read_it:
- }
-
- _mark_read4write_pages_uptodate(ios_read, ret);
-+ ore_put_io_state(ios_read);
-+ ios->ios_read_4_write = NULL; /* Might need a reuse at last stripe */
- return 0;
- }
-
-@@ -626,8 +648,11 @@ int _ore_add_parity_unit(struct ore_io_state *ios,
- /* If first stripe, Read in all read4write pages
- * (if needed) before we calculate the first parity.
- */
-- _read_4_write(ios);
-+ _read_4_write_first_stripe(ios);
- }
-+ if (!cur_len) /* If last stripe r4w pages of last stripe */
-+ _read_4_write_last_stripe(ios);
-+ _read_4_write_execute(ios);
-
- for (i = 0; i < num_pages; i++) {
- pages[i] = _raid_page_alloc();
-@@ -654,34 +679,14 @@ int _ore_add_parity_unit(struct ore_io_state *ios,
-
- int _ore_post_alloc_raid_stuff(struct ore_io_state *ios)
- {
-- struct ore_layout *layout = ios->layout;
--
- if (ios->parity_pages) {
-+ struct ore_layout *layout = ios->layout;
- unsigned pages_in_unit = layout->stripe_unit / PAGE_SIZE;
-- unsigned stripe_size = ios->si.bytes_in_stripe;
-- u64 last_stripe, first_stripe;
-
- if (_sp2d_alloc(pages_in_unit, layout->group_width,
- layout->parity, &ios->sp2d)) {
- return -ENOMEM;
- }
--
-- /* Round io down to last full strip */
-- first_stripe = div_u64(ios->offset, stripe_size);
-- last_stripe = div_u64(ios->offset + ios->length, stripe_size);
--
-- /* If an IO spans more then a single stripe it must end at
-- * a stripe boundary. The reminder at the end is pushed into the
-- * next IO.
-- */
-- if (last_stripe != first_stripe) {
-- ios->length = last_stripe * stripe_size - ios->offset;
--
-- BUG_ON(!ios->length);
-- ios->nr_pages = (ios->length + PAGE_SIZE - 1) /
-- PAGE_SIZE;
-- ios->si.length = ios->length; /*make it consistent */
-- }
- }
- return 0;
- }
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0069-ore-Remove-support-of-partial-IO-request-NFS-crash.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0069-ore-Remove-support-of-partial-IO-request-NFS-crash.patch
deleted file mode 100644
index dade112..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0069-ore-Remove-support-of-partial-IO-request-NFS-crash.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From a2f43c94b074e0bf567ddc35e17504bbcd237ae1 Mon Sep 17 00:00:00 2001
-From: Boaz Harrosh <bharrosh at panasas.com>
-Date: Fri, 8 Jun 2012 04:30:40 +0300
-Subject: [PATCH 069/109] ore: Remove support of partial IO request (NFS
- crash)
-
-commit 62b62ad873f2accad9222a4d7ffbe1e93f6714c1 upstream.
-
-Do to OOM situations the ore might fail to allocate all resources
-needed for IO of the full request. If some progress was possible
-it would proceed with a partial/short request, for the sake of
-forward progress.
-
-Since this crashes NFS-core and exofs is just fine without it just
-remove this contraption, and fail.
-
-TODO:
- Support real forward progress with some reserved allocations
- of resources, such as mem pools and/or bio_sets
-
-[Bug since 3.2 Kernel]
-CC: Benny Halevy <bhalevy at tonian.com>
-Signed-off-by: Boaz Harrosh <bharrosh at panasas.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/exofs/ore.c | 8 +-------
- 1 files changed, 1 insertions(+), 7 deletions(-)
-
-diff --git a/fs/exofs/ore.c b/fs/exofs/ore.c
-index 49cf230..24a49d4 100644
---- a/fs/exofs/ore.c
-+++ b/fs/exofs/ore.c
-@@ -735,13 +735,7 @@ static int _prepare_for_striping(struct ore_io_state *ios)
- out:
- ios->numdevs = devs_in_group;
- ios->pages_consumed = cur_pg;
-- if (unlikely(ret)) {
-- if (length == ios->length)
-- return ret;
-- else
-- ios->length -= length;
-- }
-- return 0;
-+ return ret;
- }
-
- int ore_create(struct ore_io_state *ios)
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0070-pnfs-obj-don-t-leak-objio_state-if-ore_write-read-fa.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0070-pnfs-obj-don-t-leak-objio_state-if-ore_write-read-fa.patch
deleted file mode 100644
index c1659ca..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0070-pnfs-obj-don-t-leak-objio_state-if-ore_write-read-fa.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 7b47a0e2114e8530614a25d7ec998fd52d069853 Mon Sep 17 00:00:00 2001
-From: Boaz Harrosh <bharrosh at panasas.com>
-Date: Fri, 8 Jun 2012 05:29:40 +0300
-Subject: [PATCH 070/109] pnfs-obj: don't leak objio_state if ore_write/read
- fails
-
-commit 9909d45a8557455ca5f8ee7af0f253debc851f1a upstream.
-
-[Bug since 3.2 Kernel]
-Signed-off-by: Boaz Harrosh <bharrosh at panasas.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/nfs/objlayout/objio_osd.c | 9 +++++++--
- 1 files changed, 7 insertions(+), 2 deletions(-)
-
-diff --git a/fs/nfs/objlayout/objio_osd.c b/fs/nfs/objlayout/objio_osd.c
-index 55d0128..0e7b3fc 100644
---- a/fs/nfs/objlayout/objio_osd.c
-+++ b/fs/nfs/objlayout/objio_osd.c
-@@ -433,7 +433,10 @@ int objio_read_pagelist(struct nfs_read_data *rdata)
- objios->ios->done = _read_done;
- dprintk("%s: offset=0x%llx length=0x%x\n", __func__,
- rdata->args.offset, rdata->args.count);
-- return ore_read(objios->ios);
-+ ret = ore_read(objios->ios);
-+ if (unlikely(ret))
-+ objio_free_result(&objios->oir);
-+ return ret;
- }
-
- /*
-@@ -517,8 +520,10 @@ int objio_write_pagelist(struct nfs_write_data *wdata, int how)
- dprintk("%s: offset=0x%llx length=0x%x\n", __func__,
- wdata->args.offset, wdata->args.count);
- ret = ore_write(objios->ios);
-- if (unlikely(ret))
-+ if (unlikely(ret)) {
-+ objio_free_result(&objios->oir);
- return ret;
-+ }
-
- if (objios->sync)
- _write_done(objios->ios, objios);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0071-pnfs-obj-Fix-__r4w_get_page-when-offset-is-beyond-i_.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0071-pnfs-obj-Fix-__r4w_get_page-when-offset-is-beyond-i_.patch
deleted file mode 100644
index 95152cc..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0071-pnfs-obj-Fix-__r4w_get_page-when-offset-is-beyond-i_.patch
+++ /dev/null
@@ -1,71 +0,0 @@
-From e4750a0414e24bcd0106493a2f8f251dd02264bf Mon Sep 17 00:00:00 2001
-From: Boaz Harrosh <bharrosh at panasas.com>
-Date: Fri, 8 Jun 2012 02:02:30 +0300
-Subject: [PATCH 071/109] pnfs-obj: Fix __r4w_get_page when offset is beyond
- i_size
-
-commit c999ff68029ebd0f56ccae75444f640f6d5a27d2 upstream.
-
-It is very common for the end of the file to be unaligned on
-stripe size. But since we know it's beyond file's end then
-the XOR should be preformed with all zeros.
-
-Old code used to just read zeros out of the OSD devices, which is a great
-waist. But what scares me more about this situation is that, we now have
-pages attached to the file's mapping that are beyond i_size. I don't
-like the kind of bugs this calls for.
-
-Fix both birds, by returning a global zero_page, if offset is beyond
-i_size.
-
-TODO:
- Change the API to ->__r4w_get_page() so a NULL can be
- returned without being considered as error, since XOR API
- treats NULL entries as zero_pages.
-
-[Bug since 3.2. Should apply the same way to all Kernels since]
-Signed-off-by: Boaz Harrosh <bharrosh at panasas.com>
-[bwh: Backported to 3.2: adjust for lack of wdata->header]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/nfs/objlayout/objio_osd.c | 16 +++++++++++++---
- 1 files changed, 13 insertions(+), 3 deletions(-)
-
-diff --git a/fs/nfs/objlayout/objio_osd.c b/fs/nfs/objlayout/objio_osd.c
-index 0e7b3fc..a03ee52 100644
---- a/fs/nfs/objlayout/objio_osd.c
-+++ b/fs/nfs/objlayout/objio_osd.c
-@@ -467,8 +467,16 @@ static struct page *__r4w_get_page(void *priv, u64 offset, bool *uptodate)
- struct objio_state *objios = priv;
- struct nfs_write_data *wdata = objios->oir.rpcdata;
- pgoff_t index = offset / PAGE_SIZE;
-- struct page *page = find_get_page(wdata->inode->i_mapping, index);
-+ struct page *page;
-+ loff_t i_size = i_size_read(wdata->inode);
-
-+ if (offset >= i_size) {
-+ *uptodate = true;
-+ dprintk("%s: g_zero_page index=0x%lx\n", __func__, index);
-+ return ZERO_PAGE(0);
-+ }
-+
-+ page = find_get_page(wdata->inode->i_mapping, index);
- if (!page) {
- page = find_or_create_page(wdata->inode->i_mapping,
- index, GFP_NOFS);
-@@ -489,8 +497,10 @@ static struct page *__r4w_get_page(void *priv, u64 offset, bool *uptodate)
-
- static void __r4w_put_page(void *priv, struct page *page)
- {
-- dprintk("%s: index=0x%lx\n", __func__, page->index);
-- page_cache_release(page);
-+ dprintk("%s: index=0x%lx\n", __func__,
-+ (page == ZERO_PAGE(0)) ? -1UL : page->index);
-+ if (ZERO_PAGE(0) != page)
-+ page_cache_release(page);
- return;
- }
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0072-dm-raid1-fix-crash-with-mirror-recovery-and-discard.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0072-dm-raid1-fix-crash-with-mirror-recovery-and-discard.patch
deleted file mode 100644
index 60a39d3..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0072-dm-raid1-fix-crash-with-mirror-recovery-and-discard.patch
+++ /dev/null
@@ -1,114 +0,0 @@
-From 035afb0de8406d0f820abf43471d51a377add326 Mon Sep 17 00:00:00 2001
-From: Mikulas Patocka <mpatocka at redhat.com>
-Date: Fri, 20 Jul 2012 14:25:03 +0100
-Subject: [PATCH 072/109] dm raid1: fix crash with mirror recovery and discard
-
-commit 751f188dd5ab95b3f2b5f2f467c38aae5a2877eb upstream.
-
-This patch fixes a crash when a discard request is sent during mirror
-recovery.
-
-Firstly, some background. Generally, the following sequence happens during
-mirror synchronization:
-- function do_recovery is called
-- do_recovery calls dm_rh_recovery_prepare
-- dm_rh_recovery_prepare uses a semaphore to limit the number
- simultaneously recovered regions (by default the semaphore value is 1,
- so only one region at a time is recovered)
-- dm_rh_recovery_prepare calls __rh_recovery_prepare,
- __rh_recovery_prepare asks the log driver for the next region to
- recover. Then, it sets the region state to DM_RH_RECOVERING. If there
- are no pending I/Os on this region, the region is added to
- quiesced_regions list. If there are pending I/Os, the region is not
- added to any list. It is added to the quiesced_regions list later (by
- dm_rh_dec function) when all I/Os finish.
-- when the region is on quiesced_regions list, there are no I/Os in
- flight on this region. The region is popped from the list in
- dm_rh_recovery_start function. Then, a kcopyd job is started in the
- recover function.
-- when the kcopyd job finishes, recovery_complete is called. It calls
- dm_rh_recovery_end. dm_rh_recovery_end adds the region to
- recovered_regions or failed_recovered_regions list (depending on
- whether the copy operation was successful or not).
-
-The above mechanism assumes that if the region is in DM_RH_RECOVERING
-state, no new I/Os are started on this region. When I/O is started,
-dm_rh_inc_pending is called, which increases reg->pending count. When
-I/O is finished, dm_rh_dec is called. It decreases reg->pending count.
-If the count is zero and the region was in DM_RH_RECOVERING state,
-dm_rh_dec adds it to the quiesced_regions list.
-
-Consequently, if we call dm_rh_inc_pending/dm_rh_dec while the region is
-in DM_RH_RECOVERING state, it could be added to quiesced_regions list
-multiple times or it could be added to this list when kcopyd is copying
-data (it is assumed that the region is not on any list while kcopyd does
-its jobs). This results in memory corruption and crash.
-
-There already exist bypasses for REQ_FLUSH requests: REQ_FLUSH requests
-do not belong to any region, so they are always added to the sync list
-in do_writes. dm_rh_inc_pending does not increase count for REQ_FLUSH
-requests. In mirror_end_io, dm_rh_dec is never called for REQ_FLUSH
-requests. These bypasses avoid the crash possibility described above.
-
-These bypasses were improperly implemented for REQ_DISCARD when
-the mirror target gained discard support in commit
-5fc2ffeabb9ee0fc0e71ff16b49f34f0ed3d05b4 (dm raid1: support discard).
-
-In do_writes, REQ_DISCARD requests is always added to the sync queue and
-immediately dispatched (even if the region is in DM_RH_RECOVERING). However,
-dm_rh_inc and dm_rh_dec is called for REQ_DISCARD resusts. So it violates the
-rule that no I/Os are started on DM_RH_RECOVERING regions, and causes the list
-corruption described above.
-
-This patch changes it so that REQ_DISCARD requests follow the same path
-as REQ_FLUSH. This avoids the crash.
-
-Reference: https://bugzilla.redhat.com/837607
-
-Signed-off-by: Mikulas Patocka <mpatocka at redhat.com>
-Signed-off-by: Alasdair G Kergon <agk at redhat.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/md/dm-raid1.c | 2 +-
- drivers/md/dm-region-hash.c | 5 ++++-
- 2 files changed, 5 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/md/dm-raid1.c b/drivers/md/dm-raid1.c
-index 9bfd057..42ef54f 100644
---- a/drivers/md/dm-raid1.c
-+++ b/drivers/md/dm-raid1.c
-@@ -1210,7 +1210,7 @@ static int mirror_end_io(struct dm_target *ti, struct bio *bio,
- * We need to dec pending if this was a write.
- */
- if (rw == WRITE) {
-- if (!(bio->bi_rw & REQ_FLUSH))
-+ if (!(bio->bi_rw & (REQ_FLUSH | REQ_DISCARD)))
- dm_rh_dec(ms->rh, map_context->ll);
- return error;
- }
-diff --git a/drivers/md/dm-region-hash.c b/drivers/md/dm-region-hash.c
-index 7771ed2..69732e0 100644
---- a/drivers/md/dm-region-hash.c
-+++ b/drivers/md/dm-region-hash.c
-@@ -404,6 +404,9 @@ void dm_rh_mark_nosync(struct dm_region_hash *rh, struct bio *bio)
- return;
- }
-
-+ if (bio->bi_rw & REQ_DISCARD)
-+ return;
-+
- /* We must inform the log that the sync count has changed. */
- log->type->set_region_sync(log, region, 0);
-
-@@ -524,7 +527,7 @@ void dm_rh_inc_pending(struct dm_region_hash *rh, struct bio_list *bios)
- struct bio *bio;
-
- for (bio = bios->head; bio; bio = bio->bi_next) {
-- if (bio->bi_rw & REQ_FLUSH)
-+ if (bio->bi_rw & (REQ_FLUSH | REQ_DISCARD))
- continue;
- rh_inc(rh, dm_rh_bio_to_region(rh, bio));
- }
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0073-dm-raid1-set-discard_zeroes_data_unsupported.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0073-dm-raid1-set-discard_zeroes_data_unsupported.patch
deleted file mode 100644
index b5f81f2..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0073-dm-raid1-set-discard_zeroes_data_unsupported.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From e8cf7231ce4f6464f8962ae6ef0421da40ddad15 Mon Sep 17 00:00:00 2001
-From: Mikulas Patocka <mpatocka at redhat.com>
-Date: Fri, 20 Jul 2012 14:25:07 +0100
-Subject: [PATCH 073/109] dm raid1: set discard_zeroes_data_unsupported
-
-commit 7c8d3a42fe1c58a7e8fd3f6a013e7d7b474ff931 upstream.
-
-We can't guarantee that REQ_DISCARD on dm-mirror zeroes the data even if
-the underlying disks support zero on discard. So this patch sets
-ti->discard_zeroes_data_unsupported.
-
-For example, if the mirror is in the process of resynchronizing, it may
-happen that kcopyd reads a piece of data, then discard is sent on the
-same area and then kcopyd writes the piece of data to another leg.
-Consequently, the data is not zeroed.
-
-The flag was made available by commit 983c7db347db8ce2d8453fd1d89b7a4bb6920d56
-(dm crypt: always disable discard_zeroes_data).
-
-Signed-off-by: Mikulas Patocka <mpatocka at redhat.com>
-Signed-off-by: Alasdair G Kergon <agk at redhat.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/md/dm-raid1.c | 1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/md/dm-raid1.c b/drivers/md/dm-raid1.c
-index 42ef54f..dae2b7a 100644
---- a/drivers/md/dm-raid1.c
-+++ b/drivers/md/dm-raid1.c
-@@ -1080,6 +1080,7 @@ static int mirror_ctr(struct dm_target *ti, unsigned int argc, char **argv)
- ti->split_io = dm_rh_get_region_size(ms->rh);
- ti->num_flush_requests = 1;
- ti->num_discard_requests = 1;
-+ ti->discard_zeroes_data_unsupported = 1;
-
- ms->kmirrord_wq = alloc_workqueue("kmirrord",
- WQ_NON_REENTRANT | WQ_MEM_RECLAIM, 0);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0074-ntp-Fix-leap-second-hrtimer-livelock.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0074-ntp-Fix-leap-second-hrtimer-livelock.patch
deleted file mode 100644
index 5042065..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0074-ntp-Fix-leap-second-hrtimer-livelock.patch
+++ /dev/null
@@ -1,349 +0,0 @@
-From 19aeba1469884ed9a789b143cf73ce047663c095 Mon Sep 17 00:00:00 2001
-From: John Stultz <john.stultz at linaro.org>
-Date: Tue, 17 Jul 2012 03:05:14 -0400
-Subject: [PATCH 074/109] ntp: Fix leap-second hrtimer livelock
-
-This is a backport of 6b43ae8a619d17c4935c3320d2ef9e92bdeed05d
-
-This should have been backported when it was commited, but I
-mistook the problem as requiring the ntp_lock changes
-that landed in 3.4 in order for it to occur.
-
-Unfortunately the same issue can happen (with only one cpu)
-as follows:
-do_adjtimex()
- write_seqlock_irq(&xtime_lock);
- process_adjtimex_modes()
- process_adj_status()
- ntp_start_leap_timer()
- hrtimer_start()
- hrtimer_reprogram()
- tick_program_event()
- clockevents_program_event()
- ktime_get()
- seq = req_seqbegin(xtime_lock); [DEADLOCK]
-
-This deadlock will no always occur, as it requires the
-leap_timer to force a hrtimer_reprogram which only happens
-if its set and there's no sooner timer to expire.
-
-NOTE: This patch, being faithful to the original commit,
-introduces a bug (we don't update wall_to_monotonic),
-which will be resovled by backporting a following fix.
-
-Original commit message below:
-
-Since commit 7dffa3c673fbcf835cd7be80bb4aec8ad3f51168 the ntp
-subsystem has used an hrtimer for triggering the leapsecond
-adjustment. However, this can cause a potential livelock.
-
-Thomas diagnosed this as the following pattern:
-CPU 0 CPU 1
-do_adjtimex()
- spin_lock_irq(&ntp_lock);
- process_adjtimex_modes(); timer_interrupt()
- process_adj_status(); do_timer()
- ntp_start_leap_timer(); write_lock(&xtime_lock);
- hrtimer_start(); update_wall_time();
- hrtimer_reprogram(); ntp_tick_length()
- tick_program_event() spin_lock(&ntp_lock);
- clockevents_program_event()
- ktime_get()
- seq = req_seqbegin(xtime_lock);
-
-This patch tries to avoid the problem by reverting back to not using
-an hrtimer to inject leapseconds, and instead we handle the leapsecond
-processing in the second_overflow() function.
-
-The downside to this change is that on systems that support highres
-timers, the leap second processing will occur on a HZ tick boundary,
-(ie: ~1-10ms, depending on HZ) after the leap second instead of
-possibly sooner (~34us in my tests w/ x86_64 lapic).
-
-This patch applies on top of tip/timers/core.
-
-CC: Sasha Levin <levinsasha928 at gmail.com>
-CC: Thomas Gleixner <tglx at linutronix.de>
-Reported-by: Sasha Levin <levinsasha928 at gmail.com>
-Diagnoised-by: Thomas Gleixner <tglx at linutronix.de>
-Tested-by: Sasha Levin <levinsasha928 at gmail.com>
-Cc: Prarit Bhargava <prarit at redhat.com>
-Cc: Thomas Gleixner <tglx at linutronix.de>
-Cc: Linux Kernel <linux-kernel at vger.kernel.org>
-Signed-off-by: John Stultz <john.stultz at linaro.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- include/linux/timex.h | 2 +-
- kernel/time/ntp.c | 122 +++++++++++++++------------------------------
- kernel/time/timekeeping.c | 18 +++----
- 3 files changed, 48 insertions(+), 94 deletions(-)
-
-diff --git a/include/linux/timex.h b/include/linux/timex.h
-index aa60fe7..08e90fb 100644
---- a/include/linux/timex.h
-+++ b/include/linux/timex.h
-@@ -266,7 +266,7 @@ static inline int ntp_synced(void)
- /* Returns how long ticks are at present, in ns / 2^NTP_SCALE_SHIFT. */
- extern u64 tick_length;
-
--extern void second_overflow(void);
-+extern int second_overflow(unsigned long secs);
- extern void update_ntp_one_tick(void);
- extern int do_adjtimex(struct timex *);
- extern void hardpps(const struct timespec *, const struct timespec *);
-diff --git a/kernel/time/ntp.c b/kernel/time/ntp.c
-index 4b85a7a..4508f7f 100644
---- a/kernel/time/ntp.c
-+++ b/kernel/time/ntp.c
-@@ -31,8 +31,6 @@ unsigned long tick_nsec;
- u64 tick_length;
- static u64 tick_length_base;
-
--static struct hrtimer leap_timer;
--
- #define MAX_TICKADJ 500LL /* usecs */
- #define MAX_TICKADJ_SCALED \
- (((MAX_TICKADJ * NSEC_PER_USEC) << NTP_SCALE_SHIFT) / NTP_INTERVAL_FREQ)
-@@ -350,60 +348,60 @@ void ntp_clear(void)
- }
-
- /*
-- * Leap second processing. If in leap-insert state at the end of the
-- * day, the system clock is set back one second; if in leap-delete
-- * state, the system clock is set ahead one second.
-+ * this routine handles the overflow of the microsecond field
-+ *
-+ * The tricky bits of code to handle the accurate clock support
-+ * were provided by Dave Mills (Mills at UDEL.EDU) of NTP fame.
-+ * They were originally developed for SUN and DEC kernels.
-+ * All the kudos should go to Dave for this stuff.
-+ *
-+ * Also handles leap second processing, and returns leap offset
- */
--static enum hrtimer_restart ntp_leap_second(struct hrtimer *timer)
-+int second_overflow(unsigned long secs)
- {
-- enum hrtimer_restart res = HRTIMER_NORESTART;
--
-- write_seqlock(&xtime_lock);
-+ int leap = 0;
-+ s64 delta;
-
-+ /*
-+ * Leap second processing. If in leap-insert state at the end of the
-+ * day, the system clock is set back one second; if in leap-delete
-+ * state, the system clock is set ahead one second.
-+ */
- switch (time_state) {
- case TIME_OK:
-+ if (time_status & STA_INS)
-+ time_state = TIME_INS;
-+ else if (time_status & STA_DEL)
-+ time_state = TIME_DEL;
- break;
- case TIME_INS:
-- timekeeping_leap_insert(-1);
-- time_state = TIME_OOP;
-- printk(KERN_NOTICE
-- "Clock: inserting leap second 23:59:60 UTC\n");
-- hrtimer_add_expires_ns(&leap_timer, NSEC_PER_SEC);
-- res = HRTIMER_RESTART;
-+ if (secs % 86400 == 0) {
-+ leap = -1;
-+ time_state = TIME_OOP;
-+ printk(KERN_NOTICE
-+ "Clock: inserting leap second 23:59:60 UTC\n");
-+ }
- break;
- case TIME_DEL:
-- timekeeping_leap_insert(1);
-- time_tai--;
-- time_state = TIME_WAIT;
-- printk(KERN_NOTICE
-- "Clock: deleting leap second 23:59:59 UTC\n");
-+ if ((secs + 1) % 86400 == 0) {
-+ leap = 1;
-+ time_tai--;
-+ time_state = TIME_WAIT;
-+ printk(KERN_NOTICE
-+ "Clock: deleting leap second 23:59:59 UTC\n");
-+ }
- break;
- case TIME_OOP:
- time_tai++;
- time_state = TIME_WAIT;
-- /* fall through */
-+ break;
-+
- case TIME_WAIT:
- if (!(time_status & (STA_INS | STA_DEL)))
- time_state = TIME_OK;
- break;
- }
-
-- write_sequnlock(&xtime_lock);
--
-- return res;
--}
--
--/*
-- * this routine handles the overflow of the microsecond field
-- *
-- * The tricky bits of code to handle the accurate clock support
-- * were provided by Dave Mills (Mills at UDEL.EDU) of NTP fame.
-- * They were originally developed for SUN and DEC kernels.
-- * All the kudos should go to Dave for this stuff.
-- */
--void second_overflow(void)
--{
-- s64 delta;
-
- /* Bump the maxerror field */
- time_maxerror += MAXFREQ / NSEC_PER_USEC;
-@@ -423,23 +421,25 @@ void second_overflow(void)
- pps_dec_valid();
-
- if (!time_adjust)
-- return;
-+ goto out;
-
- if (time_adjust > MAX_TICKADJ) {
- time_adjust -= MAX_TICKADJ;
- tick_length += MAX_TICKADJ_SCALED;
-- return;
-+ goto out;
- }
-
- if (time_adjust < -MAX_TICKADJ) {
- time_adjust += MAX_TICKADJ;
- tick_length -= MAX_TICKADJ_SCALED;
-- return;
-+ goto out;
- }
-
- tick_length += (s64)(time_adjust * NSEC_PER_USEC / NTP_INTERVAL_FREQ)
- << NTP_SCALE_SHIFT;
- time_adjust = 0;
-+out:
-+ return leap;
- }
-
- #ifdef CONFIG_GENERIC_CMOS_UPDATE
-@@ -501,27 +501,6 @@ static void notify_cmos_timer(void)
- static inline void notify_cmos_timer(void) { }
- #endif
-
--/*
-- * Start the leap seconds timer:
-- */
--static inline void ntp_start_leap_timer(struct timespec *ts)
--{
-- long now = ts->tv_sec;
--
-- if (time_status & STA_INS) {
-- time_state = TIME_INS;
-- now += 86400 - now % 86400;
-- hrtimer_start(&leap_timer, ktime_set(now, 0), HRTIMER_MODE_ABS);
--
-- return;
-- }
--
-- if (time_status & STA_DEL) {
-- time_state = TIME_DEL;
-- now += 86400 - (now + 1) % 86400;
-- hrtimer_start(&leap_timer, ktime_set(now, 0), HRTIMER_MODE_ABS);
-- }
--}
-
- /*
- * Propagate a new txc->status value into the NTP state:
-@@ -546,22 +525,6 @@ static inline void process_adj_status(struct timex *txc, struct timespec *ts)
- time_status &= STA_RONLY;
- time_status |= txc->status & ~STA_RONLY;
-
-- switch (time_state) {
-- case TIME_OK:
-- ntp_start_leap_timer(ts);
-- break;
-- case TIME_INS:
-- case TIME_DEL:
-- time_state = TIME_OK;
-- ntp_start_leap_timer(ts);
-- case TIME_WAIT:
-- if (!(time_status & (STA_INS | STA_DEL)))
-- time_state = TIME_OK;
-- break;
-- case TIME_OOP:
-- hrtimer_restart(&leap_timer);
-- break;
-- }
- }
- /*
- * Called with the xtime lock held, so we can access and modify
-@@ -643,9 +606,6 @@ int do_adjtimex(struct timex *txc)
- (txc->tick < 900000/USER_HZ ||
- txc->tick > 1100000/USER_HZ))
- return -EINVAL;
--
-- if (txc->modes & ADJ_STATUS && time_state != TIME_OK)
-- hrtimer_cancel(&leap_timer);
- }
-
- if (txc->modes & ADJ_SETOFFSET) {
-@@ -967,6 +927,4 @@ __setup("ntp_tick_adj=", ntp_tick_adj_setup);
- void __init ntp_init(void)
- {
- ntp_clear();
-- hrtimer_init(&leap_timer, CLOCK_REALTIME, HRTIMER_MODE_ABS);
-- leap_timer.function = ntp_leap_second;
- }
-diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c
-index 2378413..4780a7d 100644
---- a/kernel/time/timekeeping.c
-+++ b/kernel/time/timekeeping.c
-@@ -169,15 +169,6 @@ static struct timespec raw_time;
- /* flag for if timekeeping is suspended */
- int __read_mostly timekeeping_suspended;
-
--/* must hold xtime_lock */
--void timekeeping_leap_insert(int leapsecond)
--{
-- xtime.tv_sec += leapsecond;
-- wall_to_monotonic.tv_sec -= leapsecond;
-- update_vsyscall(&xtime, &wall_to_monotonic, timekeeper.clock,
-- timekeeper.mult);
--}
--
- /**
- * timekeeping_forward_now - update clock to the current time
- *
-@@ -942,9 +933,11 @@ static cycle_t logarithmic_accumulation(cycle_t offset, int shift)
-
- timekeeper.xtime_nsec += timekeeper.xtime_interval << shift;
- while (timekeeper.xtime_nsec >= nsecps) {
-+ int leap;
- timekeeper.xtime_nsec -= nsecps;
- xtime.tv_sec++;
-- second_overflow();
-+ leap = second_overflow(xtime.tv_sec);
-+ xtime.tv_sec += leap;
- }
-
- /* Accumulate raw time */
-@@ -1050,9 +1043,12 @@ static void update_wall_time(void)
- * xtime.tv_nsec isn't larger then NSEC_PER_SEC
- */
- if (unlikely(xtime.tv_nsec >= NSEC_PER_SEC)) {
-+ int leap;
- xtime.tv_nsec -= NSEC_PER_SEC;
- xtime.tv_sec++;
-- second_overflow();
-+ leap = second_overflow(xtime.tv_sec);
-+ xtime.tv_sec += leap;
-+
- }
-
- /* check to see if there is a new clocksource to use */
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0075-ntp-Correct-TAI-offset-during-leap-second.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0075-ntp-Correct-TAI-offset-during-leap-second.patch
deleted file mode 100644
index ec72a79..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0075-ntp-Correct-TAI-offset-during-leap-second.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 106227da17ad8a279e7e104b8592ada4e81dbd8b Mon Sep 17 00:00:00 2001
-From: Richard Cochran <richardcochran at gmail.com>
-Date: Thu, 26 Apr 2012 14:11:32 +0200
-Subject: [PATCH 075/109] ntp: Correct TAI offset during leap second
-
-commit dd48d708ff3e917f6d6b6c2b696c3f18c019feed upstream.
-
-When repeating a UTC time value during a leap second (when the UTC
-time should be 23:59:60), the TAI timescale should not stop. The kernel
-NTP code increments the TAI offset one second too late. This patch fixes
-the issue by incrementing the offset during the leap second itself.
-
-Signed-off-by: Richard Cochran <richardcochran at gmail.com>
-Signed-off-by: John Stultz <john.stultz at linaro.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- kernel/time/ntp.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/kernel/time/ntp.c b/kernel/time/ntp.c
-index 4508f7f..f1eb182 100644
---- a/kernel/time/ntp.c
-+++ b/kernel/time/ntp.c
-@@ -378,6 +378,7 @@ int second_overflow(unsigned long secs)
- if (secs % 86400 == 0) {
- leap = -1;
- time_state = TIME_OOP;
-+ time_tai++;
- printk(KERN_NOTICE
- "Clock: inserting leap second 23:59:60 UTC\n");
- }
-@@ -392,7 +393,6 @@ int second_overflow(unsigned long secs)
- }
- break;
- case TIME_OOP:
-- time_tai++;
- time_state = TIME_WAIT;
- break;
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0076-timekeeping-Fix-CLOCK_MONOTONIC-inconsistency-during.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0076-timekeeping-Fix-CLOCK_MONOTONIC-inconsistency-during.patch
deleted file mode 100644
index cd6cd91..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0076-timekeeping-Fix-CLOCK_MONOTONIC-inconsistency-during.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From 7a063ddaad98f05f7976e0e8c9c1455cc9d0f5da Mon Sep 17 00:00:00 2001
-From: John Stultz <john.stultz at linaro.org>
-Date: Wed, 30 May 2012 10:54:57 -0700
-Subject: [PATCH 076/109] timekeeping: Fix CLOCK_MONOTONIC inconsistency
- during leapsecond
-
-This is a backport of fad0c66c4bb836d57a5f125ecd38bed653ca863a
-which resolves a bug the previous commit.
-
-Commit 6b43ae8a61 (ntp: Fix leap-second hrtimer livelock) broke the
-leapsecond update of CLOCK_MONOTONIC. The missing leapsecond update to
-wall_to_monotonic causes discontinuities in CLOCK_MONOTONIC.
-
-Adjust wall_to_monotonic when NTP inserted a leapsecond.
-
-Reported-by: Richard Cochran <richardcochran at gmail.com>
-Signed-off-by: John Stultz <john.stultz at linaro.org>
-Tested-by: Richard Cochran <richardcochran at gmail.com>
-Link: http://lkml.kernel.org/r/1338400497-12420-1-git-send-email-john.stultz@linaro.org
-Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
-Cc: Prarit Bhargava <prarit at redhat.com>
-Cc: Thomas Gleixner <tglx at linutronix.de>
-Cc: Linux Kernel <linux-kernel at vger.kernel.org>
-Signed-off-by: John Stultz <johnstul at us.ibm.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- kernel/time/timekeeping.c | 3 ++-
- 1 files changed, 2 insertions(+), 1 deletions(-)
-
-diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c
-index 4780a7d..5c9b67e 100644
---- a/kernel/time/timekeeping.c
-+++ b/kernel/time/timekeeping.c
-@@ -938,6 +938,7 @@ static cycle_t logarithmic_accumulation(cycle_t offset, int shift)
- xtime.tv_sec++;
- leap = second_overflow(xtime.tv_sec);
- xtime.tv_sec += leap;
-+ wall_to_monotonic.tv_sec -= leap;
- }
-
- /* Accumulate raw time */
-@@ -1048,7 +1049,7 @@ static void update_wall_time(void)
- xtime.tv_sec++;
- leap = second_overflow(xtime.tv_sec);
- xtime.tv_sec += leap;
--
-+ wall_to_monotonic.tv_sec -= leap;
- }
-
- /* check to see if there is a new clocksource to use */
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0077-time-Move-common-updates-to-a-function.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0077-time-Move-common-updates-to-a-function.patch
deleted file mode 100644
index 792fe39..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0077-time-Move-common-updates-to-a-function.patch
+++ /dev/null
@@ -1,99 +0,0 @@
-From 540e83f9da352839ff29ce5445fc499de8d54570 Mon Sep 17 00:00:00 2001
-From: Thomas Gleixner <tglx at linutronix.de>
-Date: Sun, 13 Nov 2011 23:19:49 +0000
-Subject: [PATCH 077/109] time: Move common updates to a function
-
-This is a backport of cc06268c6a87db156af2daed6e96a936b955cc82
-
-[John Stultz: While not a bugfix itself, it allows following fixes
- to backport in a more straightforward manner.]
-
-CC: Thomas Gleixner <tglx at linutronix.de>
-CC: Eric Dumazet <eric.dumazet at gmail.com>
-CC: Richard Cochran <richardcochran at gmail.com>
-Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
-Cc: Prarit Bhargava <prarit at redhat.com>
-Cc: Thomas Gleixner <tglx at linutronix.de>
-Cc: Linux Kernel <linux-kernel at vger.kernel.org>
-Signed-off-by: John Stultz <john.stultz at linaro.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- kernel/time/timekeeping.c | 34 +++++++++++++++++-----------------
- 1 files changed, 17 insertions(+), 17 deletions(-)
-
-diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c
-index 5c9b67e..5d55185 100644
---- a/kernel/time/timekeeping.c
-+++ b/kernel/time/timekeeping.c
-@@ -166,6 +166,19 @@ static struct timespec total_sleep_time;
- */
- static struct timespec raw_time;
-
-+/* must hold write on xtime_lock */
-+static void timekeeping_update(bool clearntp)
-+{
-+ if (clearntp) {
-+ timekeeper.ntp_error = 0;
-+ ntp_clear();
-+ }
-+ update_vsyscall(&xtime, &wall_to_monotonic,
-+ timekeeper.clock, timekeeper.mult);
-+}
-+
-+
-+
- /* flag for if timekeeping is suspended */
- int __read_mostly timekeeping_suspended;
-
-@@ -366,11 +379,7 @@ int do_settimeofday(const struct timespec *tv)
-
- xtime = *tv;
-
-- timekeeper.ntp_error = 0;
-- ntp_clear();
--
-- update_vsyscall(&xtime, &wall_to_monotonic, timekeeper.clock,
-- timekeeper.mult);
-+ timekeeping_update(true);
-
- write_sequnlock_irqrestore(&xtime_lock, flags);
-
-@@ -403,11 +412,7 @@ int timekeeping_inject_offset(struct timespec *ts)
- xtime = timespec_add(xtime, *ts);
- wall_to_monotonic = timespec_sub(wall_to_monotonic, *ts);
-
-- timekeeper.ntp_error = 0;
-- ntp_clear();
--
-- update_vsyscall(&xtime, &wall_to_monotonic, timekeeper.clock,
-- timekeeper.mult);
-+ timekeeping_update(true);
-
- write_sequnlock_irqrestore(&xtime_lock, flags);
-
-@@ -636,10 +641,7 @@ void timekeeping_inject_sleeptime(struct timespec *delta)
-
- __timekeeping_inject_sleeptime(delta);
-
-- timekeeper.ntp_error = 0;
-- ntp_clear();
-- update_vsyscall(&xtime, &wall_to_monotonic, timekeeper.clock,
-- timekeeper.mult);
-+ timekeeping_update(true);
-
- write_sequnlock_irqrestore(&xtime_lock, flags);
-
-@@ -1052,9 +1054,7 @@ static void update_wall_time(void)
- wall_to_monotonic.tv_sec -= leap;
- }
-
-- /* check to see if there is a new clocksource to use */
-- update_vsyscall(&xtime, &wall_to_monotonic, timekeeper.clock,
-- timekeeper.mult);
-+ timekeeping_update(false);
- }
-
- /**
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0078-hrtimer-Provide-clock_was_set_delayed.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0078-hrtimer-Provide-clock_was_set_delayed.patch
deleted file mode 100644
index 90b7639..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0078-hrtimer-Provide-clock_was_set_delayed.patch
+++ /dev/null
@@ -1,118 +0,0 @@
-From b6da5d5a3a7e128fd17b15dc64fda7c1aea694e6 Mon Sep 17 00:00:00 2001
-From: John Stultz <johnstul at us.ibm.com>
-Date: Tue, 10 Jul 2012 18:43:19 -0400
-Subject: [PATCH 078/109] hrtimer: Provide clock_was_set_delayed()
-
-commit f55a6faa384304c89cfef162768e88374d3312cb upstream.
-
-clock_was_set() cannot be called from hard interrupt context because
-it calls on_each_cpu().
-
-For fixing the widely reported leap seconds issue it is necessary to
-call it from hard interrupt context, i.e. the timer tick code, which
-does the timekeeping updates.
-
-Provide a new function which denotes it in the hrtimer cpu base
-structure of the cpu on which it is called and raise the hrtimer
-softirq. We then execute the clock_was_set() notificiation from
-softirq context in run_hrtimer_softirq(). The hrtimer softirq is
-rarely used, so polling the flag there is not a performance issue.
-
-[ tglx: Made it depend on CONFIG_HIGH_RES_TIMERS. We really should get
- rid of all this ifdeffery ASAP ]
-
-Signed-off-by: John Stultz <johnstul at us.ibm.com>
-Reported-by: Jan Engelhardt <jengelh at inai.de>
-Reviewed-by: Ingo Molnar <mingo at kernel.org>
-Acked-by: Peter Zijlstra <a.p.zijlstra at chello.nl>
-Acked-by: Prarit Bhargava <prarit at redhat.com>
-Link: http://lkml.kernel.org/r/1341960205-56738-2-git-send-email-johnstul@us.ibm.com
-Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- include/linux/hrtimer.h | 9 ++++++++-
- kernel/hrtimer.c | 20 ++++++++++++++++++++
- 2 files changed, 28 insertions(+), 1 deletions(-)
-
-diff --git a/include/linux/hrtimer.h b/include/linux/hrtimer.h
-index fd0dc30..c9ec940 100644
---- a/include/linux/hrtimer.h
-+++ b/include/linux/hrtimer.h
-@@ -165,6 +165,7 @@ enum hrtimer_base_type {
- * @lock: lock protecting the base and associated clock bases
- * and timers
- * @active_bases: Bitfield to mark bases with active timers
-+ * @clock_was_set: Indicates that clock was set from irq context.
- * @expires_next: absolute time of the next event which was scheduled
- * via clock_set_next_event()
- * @hres_active: State of high resolution mode
-@@ -177,7 +178,8 @@ enum hrtimer_base_type {
- */
- struct hrtimer_cpu_base {
- raw_spinlock_t lock;
-- unsigned long active_bases;
-+ unsigned int active_bases;
-+ unsigned int clock_was_set;
- #ifdef CONFIG_HIGH_RES_TIMERS
- ktime_t expires_next;
- int hres_active;
-@@ -286,6 +288,8 @@ extern void hrtimer_peek_ahead_timers(void);
- # define MONOTONIC_RES_NSEC HIGH_RES_NSEC
- # define KTIME_MONOTONIC_RES KTIME_HIGH_RES
-
-+extern void clock_was_set_delayed(void);
-+
- #else
-
- # define MONOTONIC_RES_NSEC LOW_RES_NSEC
-@@ -306,6 +310,9 @@ static inline int hrtimer_is_hres_active(struct hrtimer *timer)
- {
- return 0;
- }
-+
-+static inline void clock_was_set_delayed(void) { }
-+
- #endif
-
- extern void clock_was_set(void);
-diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c
-index ae34bf5..3c24fb2 100644
---- a/kernel/hrtimer.c
-+++ b/kernel/hrtimer.c
-@@ -717,6 +717,19 @@ static int hrtimer_switch_to_hres(void)
- return 1;
- }
-
-+/*
-+ * Called from timekeeping code to reprogramm the hrtimer interrupt
-+ * device. If called from the timer interrupt context we defer it to
-+ * softirq context.
-+ */
-+void clock_was_set_delayed(void)
-+{
-+ struct hrtimer_cpu_base *cpu_base = &__get_cpu_var(hrtimer_bases);
-+
-+ cpu_base->clock_was_set = 1;
-+ __raise_softirq_irqoff(HRTIMER_SOFTIRQ);
-+}
-+
- #else
-
- static inline int hrtimer_hres_active(void) { return 0; }
-@@ -1395,6 +1408,13 @@ void hrtimer_peek_ahead_timers(void)
-
- static void run_hrtimer_softirq(struct softirq_action *h)
- {
-+ struct hrtimer_cpu_base *cpu_base = &__get_cpu_var(hrtimer_bases);
-+
-+ if (cpu_base->clock_was_set) {
-+ cpu_base->clock_was_set = 0;
-+ clock_was_set();
-+ }
-+
- hrtimer_peek_ahead_timers();
- }
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0079-timekeeping-Fix-leapsecond-triggered-load-spike-issu.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0079-timekeeping-Fix-leapsecond-triggered-load-spike-issu.patch
deleted file mode 100644
index 8965a59..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0079-timekeeping-Fix-leapsecond-triggered-load-spike-issu.patch
+++ /dev/null
@@ -1,66 +0,0 @@
-From 61642041369832a7f8d29d27fcd9e88d523f3163 Mon Sep 17 00:00:00 2001
-From: John Stultz <johnstul at us.ibm.com>
-Date: Tue, 10 Jul 2012 18:43:20 -0400
-Subject: [PATCH 079/109] timekeeping: Fix leapsecond triggered load spike
- issue
-
-This is a backport of 4873fa070ae84a4115f0b3c9dfabc224f1bc7c51
-
-The timekeeping code misses an update of the hrtimer subsystem after a
-leap second happened. Due to that timers based on CLOCK_REALTIME are
-either expiring a second early or late depending on whether a leap
-second has been inserted or deleted until an operation is initiated
-which causes that update. Unless the update happens by some other
-means this discrepancy between the timekeeping and the hrtimer data
-stays forever and timers are expired either early or late.
-
-The reported immediate workaround - $ data -s "`date`" - is causing a
-call to clock_was_set() which updates the hrtimer data structures.
-See: http://www.sheeri.com/content/mysql-and-leap-second-high-cpu-and-fix
-
-Add the missing clock_was_set() call to update_wall_time() in case of
-a leap second event. The actual update is deferred to softirq context
-as the necessary smp function call cannot be invoked from hard
-interrupt context.
-
-Signed-off-by: John Stultz <johnstul at us.ibm.com>
-Reported-by: Jan Engelhardt <jengelh at inai.de>
-Reviewed-by: Ingo Molnar <mingo at kernel.org>
-Acked-by: Peter Zijlstra <a.p.zijlstra at chello.nl>
-Acked-by: Prarit Bhargava <prarit at redhat.com>
-Link: http://lkml.kernel.org/r/1341960205-56738-3-git-send-email-johnstul@us.ibm.com
-Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
-Cc: Prarit Bhargava <prarit at redhat.com>
-Cc: Thomas Gleixner <tglx at linutronix.de>
-Cc: Linux Kernel <linux-kernel at vger.kernel.org>
-Signed-off-by: John Stultz <johnstul at us.ibm.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- kernel/time/timekeeping.c | 4 ++++
- 1 files changed, 4 insertions(+), 0 deletions(-)
-
-diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c
-index 5d55185..8958ad7 100644
---- a/kernel/time/timekeeping.c
-+++ b/kernel/time/timekeeping.c
-@@ -941,6 +941,8 @@ static cycle_t logarithmic_accumulation(cycle_t offset, int shift)
- leap = second_overflow(xtime.tv_sec);
- xtime.tv_sec += leap;
- wall_to_monotonic.tv_sec -= leap;
-+ if (leap)
-+ clock_was_set_delayed();
- }
-
- /* Accumulate raw time */
-@@ -1052,6 +1054,8 @@ static void update_wall_time(void)
- leap = second_overflow(xtime.tv_sec);
- xtime.tv_sec += leap;
- wall_to_monotonic.tv_sec -= leap;
-+ if (leap)
-+ clock_was_set_delayed();
- }
-
- timekeeping_update(false);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0080-timekeeping-Maintain-ktime_t-based-offsets-for-hrtim.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0080-timekeeping-Maintain-ktime_t-based-offsets-for-hrtim.patch
deleted file mode 100644
index f00962d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0080-timekeeping-Maintain-ktime_t-based-offsets-for-hrtim.patch
+++ /dev/null
@@ -1,104 +0,0 @@
-From 711cebfd4050d5a41606f9f8ad56986d0377df08 Mon Sep 17 00:00:00 2001
-From: Thomas Gleixner <tglx at linutronix.de>
-Date: Tue, 10 Jul 2012 18:43:21 -0400
-Subject: [PATCH 080/109] timekeeping: Maintain ktime_t based offsets for
- hrtimers
-
-This is a backport of 5b9fe759a678e05be4937ddf03d50e950207c1c0
-
-We need to update the hrtimer clock offsets from the hrtimer interrupt
-context. To avoid conversions from timespec to ktime_t maintain a
-ktime_t based representation of those offsets in the timekeeper. This
-puts the conversion overhead into the code which updates the
-underlying offsets and provides fast accessible values in the hrtimer
-interrupt.
-
-Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
-Signed-off-by: John Stultz <johnstul at us.ibm.com>
-Reviewed-by: Ingo Molnar <mingo at kernel.org>
-Acked-by: Peter Zijlstra <a.p.zijlstra at chello.nl>
-Acked-by: Prarit Bhargava <prarit at redhat.com>
-Link: http://lkml.kernel.org/r/1341960205-56738-4-git-send-email-johnstul@us.ibm.com
-Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
-[John Stultz: Backported to 3.2]
-Cc: Prarit Bhargava <prarit at redhat.com>
-Cc: Thomas Gleixner <tglx at linutronix.de>
-Cc: Linux Kernel <linux-kernel at vger.kernel.org>
-Signed-off-by: John Stultz <johnstul at us.ibm.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- kernel/time/timekeeping.c | 25 ++++++++++++++++++++++++-
- 1 files changed, 24 insertions(+), 1 deletions(-)
-
-diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c
-index 8958ad7..d5d0e5d 100644
---- a/kernel/time/timekeeping.c
-+++ b/kernel/time/timekeeping.c
-@@ -161,18 +161,34 @@ static struct timespec xtime __attribute__ ((aligned (16)));
- static struct timespec wall_to_monotonic __attribute__ ((aligned (16)));
- static struct timespec total_sleep_time;
-
-+/* Offset clock monotonic -> clock realtime */
-+static ktime_t offs_real;
-+
-+/* Offset clock monotonic -> clock boottime */
-+static ktime_t offs_boot;
-+
- /*
- * The raw monotonic time for the CLOCK_MONOTONIC_RAW posix clock.
- */
- static struct timespec raw_time;
-
- /* must hold write on xtime_lock */
-+static void update_rt_offset(void)
-+{
-+ struct timespec tmp, *wtm = &wall_to_monotonic;
-+
-+ set_normalized_timespec(&tmp, -wtm->tv_sec, -wtm->tv_nsec);
-+ offs_real = timespec_to_ktime(tmp);
-+}
-+
-+/* must hold write on xtime_lock */
- static void timekeeping_update(bool clearntp)
- {
- if (clearntp) {
- timekeeper.ntp_error = 0;
- ntp_clear();
- }
-+ update_rt_offset();
- update_vsyscall(&xtime, &wall_to_monotonic,
- timekeeper.clock, timekeeper.mult);
- }
-@@ -587,6 +603,7 @@ void __init timekeeping_init(void)
- }
- set_normalized_timespec(&wall_to_monotonic,
- -boot.tv_sec, -boot.tv_nsec);
-+ update_rt_offset();
- total_sleep_time.tv_sec = 0;
- total_sleep_time.tv_nsec = 0;
- write_sequnlock_irqrestore(&xtime_lock, flags);
-@@ -595,6 +612,12 @@ void __init timekeeping_init(void)
- /* time in seconds when suspend began */
- static struct timespec timekeeping_suspend_time;
-
-+static void update_sleep_time(struct timespec t)
-+{
-+ total_sleep_time = t;
-+ offs_boot = timespec_to_ktime(t);
-+}
-+
- /**
- * __timekeeping_inject_sleeptime - Internal function to add sleep interval
- * @delta: pointer to a timespec delta value
-@@ -612,7 +635,7 @@ static void __timekeeping_inject_sleeptime(struct timespec *delta)
-
- xtime = timespec_add(xtime, *delta);
- wall_to_monotonic = timespec_sub(wall_to_monotonic, *delta);
-- total_sleep_time = timespec_add(total_sleep_time, *delta);
-+ update_sleep_time(timespec_add(total_sleep_time, *delta));
- }
-
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0081-hrtimers-Move-lock-held-region-in-hrtimer_interrupt.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0081-hrtimers-Move-lock-held-region-in-hrtimer_interrupt.patch
deleted file mode 100644
index 5444d54..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0081-hrtimers-Move-lock-held-region-in-hrtimer_interrupt.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From 6783d1f7e46f4450b489d970bbf4d62db9296c1f Mon Sep 17 00:00:00 2001
-From: Thomas Gleixner <tglx at linutronix.de>
-Date: Tue, 10 Jul 2012 18:43:23 -0400
-Subject: [PATCH 081/109] hrtimers: Move lock held region in
- hrtimer_interrupt()
-
-commit 196951e91262fccda81147d2bcf7fdab08668b40 upstream.
-
-We need to update the base offsets from this code and we need to do
-that under base->lock. Move the lock held region around the
-ktime_get() calls. The ktime_get() calls are going to be replaced with
-a function which gets the time and the offsets atomically.
-
-Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
-Reviewed-by: Ingo Molnar <mingo at kernel.org>
-Acked-by: Peter Zijlstra <a.p.zijlstra at chello.nl>
-Acked-by: Prarit Bhargava <prarit at redhat.com>
-Signed-off-by: John Stultz <johnstul at us.ibm.com>
-Link: http://lkml.kernel.org/r/1341960205-56738-6-git-send-email-johnstul@us.ibm.com
-Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- kernel/hrtimer.c | 5 +++--
- 1 files changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c
-index 3c24fb2..8f320af 100644
---- a/kernel/hrtimer.c
-+++ b/kernel/hrtimer.c
-@@ -1263,11 +1263,10 @@ void hrtimer_interrupt(struct clock_event_device *dev)
- cpu_base->nr_events++;
- dev->next_event.tv64 = KTIME_MAX;
-
-+ raw_spin_lock(&cpu_base->lock);
- entry_time = now = ktime_get();
- retry:
- expires_next.tv64 = KTIME_MAX;
--
-- raw_spin_lock(&cpu_base->lock);
- /*
- * We set expires_next to KTIME_MAX here with cpu_base->lock
- * held to prevent that a timer is enqueued in our queue via
-@@ -1344,6 +1343,7 @@ retry:
- * interrupt routine. We give it 3 attempts to avoid
- * overreacting on some spurious event.
- */
-+ raw_spin_lock(&cpu_base->lock);
- now = ktime_get();
- cpu_base->nr_retries++;
- if (++retries < 3)
-@@ -1356,6 +1356,7 @@ retry:
- */
- cpu_base->nr_hangs++;
- cpu_base->hang_detected = 1;
-+ raw_spin_unlock(&cpu_base->lock);
- delta = ktime_sub(now, entry_time);
- if (delta.tv64 > cpu_base->max_hang_time.tv64)
- cpu_base->max_hang_time = delta;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0082-timekeeping-Provide-hrtimer-update-function.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0082-timekeeping-Provide-hrtimer-update-function.patch
deleted file mode 100644
index a973540..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0082-timekeeping-Provide-hrtimer-update-function.patch
+++ /dev/null
@@ -1,94 +0,0 @@
-From d6cadfb2bf29a5913562d3f63c49a937bc98540d Mon Sep 17 00:00:00 2001
-From: Thomas Gleixner <tglx at linutronix.de>
-Date: Tue, 10 Jul 2012 18:43:24 -0400
-Subject: [PATCH 082/109] timekeeping: Provide hrtimer update function
-
-This is a backport of f6c06abfb3972ad4914cef57d8348fcb2932bc3b
-
-To finally fix the infamous leap second issue and other race windows
-caused by functions which change the offsets between the various time
-bases (CLOCK_MONOTONIC, CLOCK_REALTIME and CLOCK_BOOTTIME) we need a
-function which atomically gets the current monotonic time and updates
-the offsets of CLOCK_REALTIME and CLOCK_BOOTTIME with minimalistic
-overhead. The previous patch which provides ktime_t offsets allows us
-to make this function almost as cheap as ktime_get() which is going to
-be replaced in hrtimer_interrupt().
-
-Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
-Reviewed-by: Ingo Molnar <mingo at kernel.org>
-Acked-by: Peter Zijlstra <a.p.zijlstra at chello.nl>
-Acked-by: Prarit Bhargava <prarit at redhat.com>
-Signed-off-by: John Stultz <johnstul at us.ibm.com>
-Link: http://lkml.kernel.org/r/1341960205-56738-7-git-send-email-johnstul@us.ibm.com
-Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
-[John Stultz: Backported to 3.2]
-Cc: Prarit Bhargava <prarit at redhat.com>
-Cc: Thomas Gleixner <tglx at linutronix.de>
-Cc: Linux Kernel <linux-kernel at vger.kernel.org>
-Signed-off-by: John Stultz <johnstul at us.ibm.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- include/linux/hrtimer.h | 1 +
- kernel/time/timekeeping.c | 34 ++++++++++++++++++++++++++++++++++
- 2 files changed, 35 insertions(+), 0 deletions(-)
-
-diff --git a/include/linux/hrtimer.h b/include/linux/hrtimer.h
-index c9ec940..cc07d27 100644
---- a/include/linux/hrtimer.h
-+++ b/include/linux/hrtimer.h
-@@ -327,6 +327,7 @@ extern ktime_t ktime_get(void);
- extern ktime_t ktime_get_real(void);
- extern ktime_t ktime_get_boottime(void);
- extern ktime_t ktime_get_monotonic_offset(void);
-+extern ktime_t ktime_get_update_offsets(ktime_t *offs_real, ktime_t *offs_boot);
-
- DECLARE_PER_CPU(struct tick_device, tick_cpu_device);
-
-diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c
-index d5d0e5d..4938c5e 100644
---- a/kernel/time/timekeeping.c
-+++ b/kernel/time/timekeeping.c
-@@ -1240,6 +1240,40 @@ void get_xtime_and_monotonic_and_sleep_offset(struct timespec *xtim,
- } while (read_seqretry(&xtime_lock, seq));
- }
-
-+#ifdef CONFIG_HIGH_RES_TIMERS
-+/**
-+ * ktime_get_update_offsets - hrtimer helper
-+ * @real: pointer to storage for monotonic -> realtime offset
-+ * @_boot: pointer to storage for monotonic -> boottime offset
-+ *
-+ * Returns current monotonic time and updates the offsets
-+ * Called from hrtimer_interupt() or retrigger_next_event()
-+ */
-+ktime_t ktime_get_update_offsets(ktime_t *real, ktime_t *boot)
-+{
-+ ktime_t now;
-+ unsigned int seq;
-+ u64 secs, nsecs;
-+
-+ do {
-+ seq = read_seqbegin(&xtime_lock);
-+
-+ secs = xtime.tv_sec;
-+ nsecs = xtime.tv_nsec;
-+ nsecs += timekeeping_get_ns();
-+ /* If arch requires, add in gettimeoffset() */
-+ nsecs += arch_gettimeoffset();
-+
-+ *real = offs_real;
-+ *boot = offs_boot;
-+ } while (read_seqretry(&xtime_lock, seq));
-+
-+ now = ktime_add_ns(ktime_set(secs, 0), nsecs);
-+ now = ktime_sub(now, *real);
-+ return now;
-+}
-+#endif
-+
- /**
- * ktime_get_monotonic_offset() - get wall_to_monotonic in ktime_t format
- */
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0083-hrtimer-Update-hrtimer-base-offsets-each-hrtimer_int.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0083-hrtimer-Update-hrtimer-base-offsets-each-hrtimer_int.patch
deleted file mode 100644
index d047f31..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0083-hrtimer-Update-hrtimer-base-offsets-each-hrtimer_int.patch
+++ /dev/null
@@ -1,125 +0,0 @@
-From 532c526ac9349430b41f6a16f32fc808c4270647 Mon Sep 17 00:00:00 2001
-From: John Stultz <johnstul at us.ibm.com>
-Date: Tue, 10 Jul 2012 18:43:25 -0400
-Subject: [PATCH 083/109] hrtimer: Update hrtimer base offsets each
- hrtimer_interrupt
-
-commit 5baefd6d84163443215f4a99f6a20f054ef11236 upstream.
-
-The update of the hrtimer base offsets on all cpus cannot be made
-atomically from the timekeeper.lock held and interrupt disabled region
-as smp function calls are not allowed there.
-
-clock_was_set(), which enforces the update on all cpus, is called
-either from preemptible process context in case of do_settimeofday()
-or from the softirq context when the offset modification happened in
-the timer interrupt itself due to a leap second.
-
-In both cases there is a race window for an hrtimer interrupt between
-dropping timekeeper lock, enabling interrupts and clock_was_set()
-issuing the updates. Any interrupt which arrives in that window will
-see the new time but operate on stale offsets.
-
-So we need to make sure that an hrtimer interrupt always sees a
-consistent state of time and offsets.
-
-ktime_get_update_offsets() allows us to get the current monotonic time
-and update the per cpu hrtimer base offsets from hrtimer_interrupt()
-to capture a consistent state of monotonic time and the offsets. The
-function replaces the existing ktime_get() calls in hrtimer_interrupt().
-
-The overhead of the new function vs. ktime_get() is minimal as it just
-adds two store operations.
-
-This ensures that any changes to realtime or boottime offsets are
-noticed and stored into the per-cpu hrtimer base structures, prior to
-any hrtimer expiration and guarantees that timers are not expired early.
-
-Signed-off-by: John Stultz <johnstul at us.ibm.com>
-Reviewed-by: Ingo Molnar <mingo at kernel.org>
-Acked-by: Peter Zijlstra <a.p.zijlstra at chello.nl>
-Acked-by: Prarit Bhargava <prarit at redhat.com>
-Link: http://lkml.kernel.org/r/1341960205-56738-8-git-send-email-johnstul@us.ibm.com
-Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- kernel/hrtimer.c | 28 ++++++++++++++--------------
- 1 files changed, 14 insertions(+), 14 deletions(-)
-
-diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c
-index 8f320af..6db7a5e 100644
---- a/kernel/hrtimer.c
-+++ b/kernel/hrtimer.c
-@@ -657,6 +657,14 @@ static inline int hrtimer_enqueue_reprogram(struct hrtimer *timer,
- return 0;
- }
-
-+static inline ktime_t hrtimer_update_base(struct hrtimer_cpu_base *base)
-+{
-+ ktime_t *offs_real = &base->clock_base[HRTIMER_BASE_REALTIME].offset;
-+ ktime_t *offs_boot = &base->clock_base[HRTIMER_BASE_BOOTTIME].offset;
-+
-+ return ktime_get_update_offsets(offs_real, offs_boot);
-+}
-+
- /*
- * Retrigger next event is called after clock was set
- *
-@@ -665,22 +673,12 @@ static inline int hrtimer_enqueue_reprogram(struct hrtimer *timer,
- static void retrigger_next_event(void *arg)
- {
- struct hrtimer_cpu_base *base = &__get_cpu_var(hrtimer_bases);
-- struct timespec realtime_offset, xtim, wtm, sleep;
-
- if (!hrtimer_hres_active())
- return;
-
-- /* Optimized out for !HIGH_RES */
-- get_xtime_and_monotonic_and_sleep_offset(&xtim, &wtm, &sleep);
-- set_normalized_timespec(&realtime_offset, -wtm.tv_sec, -wtm.tv_nsec);
--
-- /* Adjust CLOCK_REALTIME offset */
- raw_spin_lock(&base->lock);
-- base->clock_base[HRTIMER_BASE_REALTIME].offset =
-- timespec_to_ktime(realtime_offset);
-- base->clock_base[HRTIMER_BASE_BOOTTIME].offset =
-- timespec_to_ktime(sleep);
--
-+ hrtimer_update_base(base);
- hrtimer_force_reprogram(base, 0);
- raw_spin_unlock(&base->lock);
- }
-@@ -710,7 +708,6 @@ static int hrtimer_switch_to_hres(void)
- base->clock_base[i].resolution = KTIME_HIGH_RES;
-
- tick_setup_sched_timer();
--
- /* "Retrigger" the interrupt to get things going */
- retrigger_next_event(NULL);
- local_irq_restore(flags);
-@@ -1264,7 +1261,7 @@ void hrtimer_interrupt(struct clock_event_device *dev)
- dev->next_event.tv64 = KTIME_MAX;
-
- raw_spin_lock(&cpu_base->lock);
-- entry_time = now = ktime_get();
-+ entry_time = now = hrtimer_update_base(cpu_base);
- retry:
- expires_next.tv64 = KTIME_MAX;
- /*
-@@ -1342,9 +1339,12 @@ retry:
- * We need to prevent that we loop forever in the hrtimer
- * interrupt routine. We give it 3 attempts to avoid
- * overreacting on some spurious event.
-+ *
-+ * Acquire base lock for updating the offsets and retrieving
-+ * the current time.
- */
- raw_spin_lock(&cpu_base->lock);
-- now = ktime_get();
-+ now = hrtimer_update_base(cpu_base);
- cpu_base->nr_retries++;
- if (++retries < 3)
- goto retry;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0084-timekeeping-Add-missing-update-call-in-timekeeping_r.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0084-timekeeping-Add-missing-update-call-in-timekeeping_r.patch
deleted file mode 100644
index 06445f0..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0084-timekeeping-Add-missing-update-call-in-timekeeping_r.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From 666e725f56fc4c9a6e4f0e00b5a180866863f724 Mon Sep 17 00:00:00 2001
-From: Thomas Gleixner <tglx at linutronix.de>
-Date: Mon, 16 Jul 2012 12:50:42 -0400
-Subject: [PATCH 084/109] timekeeping: Add missing update call in
- timekeeping_resume()
-
-This is a backport of 3e997130bd2e8c6f5aaa49d6e3161d4d29b43ab0
-
-The leap second rework unearthed another issue of inconsistent data.
-
-On timekeeping_resume() the timekeeper data is updated, but nothing
-calls timekeeping_update(), so now the update code in the timer
-interrupt sees stale values.
-
-This has been the case before those changes, but then the timer
-interrupt was using stale data as well so this went unnoticed for quite
-some time.
-
-Add the missing update call, so all the data is consistent everywhere.
-
-Reported-by: Andreas Schwab <schwab at linux-m68k.org>
-Reported-and-tested-by: "Rafael J. Wysocki" <rjw at sisk.pl>
-Reported-and-tested-by: Martin Steigerwald <Martin at lichtvoll.de>
-Cc: LKML <linux-kernel at vger.kernel.org>
-Cc: Linux PM list <linux-pm at vger.kernel.org>
-Cc: John Stultz <johnstul at us.ibm.com>
-Cc: Ingo Molnar <mingo at kernel.org>
-Cc: Peter Zijlstra <a.p.zijlstra at chello.nl>,
-Cc: Prarit Bhargava <prarit at redhat.com>
-Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
-Signed-off-by: John Stultz <johnstul at us.ibm.com>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-[John Stultz: Backported to 3.2]
-Cc: Prarit Bhargava <prarit at redhat.com>
-Cc: Thomas Gleixner <tglx at linutronix.de>
-Cc: Linux Kernel <linux-kernel at vger.kernel.org>
-Signed-off-by: John Stultz <johnstul at us.ibm.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- kernel/time/timekeeping.c | 1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c
-index 4938c5e..03e67d4 100644
---- a/kernel/time/timekeeping.c
-+++ b/kernel/time/timekeeping.c
-@@ -699,6 +699,7 @@ static void timekeeping_resume(void)
- timekeeper.clock->cycle_last = timekeeper.clock->read(timekeeper.clock);
- timekeeper.ntp_error = 0;
- timekeeping_suspended = 0;
-+ timekeeping_update(false);
- write_sequnlock_irqrestore(&xtime_lock, flags);
-
- touch_softlockup_watchdog();
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0085-powerpc-Fix-wrong-divisor-in-usecs_to_cputime.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0085-powerpc-Fix-wrong-divisor-in-usecs_to_cputime.patch
deleted file mode 100644
index eb4249f..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0085-powerpc-Fix-wrong-divisor-in-usecs_to_cputime.patch
+++ /dev/null
@@ -1,87 +0,0 @@
-From ec9436c865d11ebd0fd6909a9ef2a63e5536ff29 Mon Sep 17 00:00:00 2001
-From: Andreas Schwab <schwab at linux-m68k.org>
-Date: Fri, 9 Dec 2011 11:35:08 +0000
-Subject: [PATCH 085/109] powerpc: Fix wrong divisor in usecs_to_cputime
-
-commit 9f5072d4f63f28d30d343573830ac6c85fc0deff upstream.
-
-Commit d57af9b (taskstats: use real microsecond granularity for CPU times)
-renamed msecs_to_cputime to usecs_to_cputime, but failed to update all
-numbers on the way. This causes nonsensical cpu idle/iowait values to be
-displayed in /proc/stat (the only user of usecs_to_cputime so far).
-
-This also renames __cputime_msec_factor to __cputime_usec_factor, adapting
-its value and using it directly in cputime_to_usecs instead of doing two
-multiplications.
-
-Signed-off-by: Andreas Schwab <schwab at linux-m68k.org>
-Acked-by: Anton Blanchard <anton at samba.org>
-Signed-off-by: Benjamin Herrenschmidt <benh at kernel.crashing.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/powerpc/include/asm/cputime.h | 6 +++---
- arch/powerpc/kernel/time.c | 10 +++++-----
- 2 files changed, 8 insertions(+), 8 deletions(-)
-
-diff --git a/arch/powerpc/include/asm/cputime.h b/arch/powerpc/include/asm/cputime.h
-index 98b7c4b..fa3f921 100644
---- a/arch/powerpc/include/asm/cputime.h
-+++ b/arch/powerpc/include/asm/cputime.h
-@@ -126,11 +126,11 @@ static inline u64 cputime64_to_jiffies64(const cputime_t ct)
- /*
- * Convert cputime <-> microseconds
- */
--extern u64 __cputime_msec_factor;
-+extern u64 __cputime_usec_factor;
-
- static inline unsigned long cputime_to_usecs(const cputime_t ct)
- {
-- return mulhdu(ct, __cputime_msec_factor) * USEC_PER_MSEC;
-+ return mulhdu(ct, __cputime_usec_factor);
- }
-
- static inline cputime_t usecs_to_cputime(const unsigned long us)
-@@ -143,7 +143,7 @@ static inline cputime_t usecs_to_cputime(const unsigned long us)
- sec = us / 1000000;
- if (ct) {
- ct *= tb_ticks_per_sec;
-- do_div(ct, 1000);
-+ do_div(ct, 1000000);
- }
- if (sec)
- ct += (cputime_t) sec * tb_ticks_per_sec;
-diff --git a/arch/powerpc/kernel/time.c b/arch/powerpc/kernel/time.c
-index 5db163c..ec8affe 100644
---- a/arch/powerpc/kernel/time.c
-+++ b/arch/powerpc/kernel/time.c
-@@ -168,13 +168,13 @@ EXPORT_SYMBOL_GPL(ppc_tb_freq);
- #ifdef CONFIG_VIRT_CPU_ACCOUNTING
- /*
- * Factors for converting from cputime_t (timebase ticks) to
-- * jiffies, milliseconds, seconds, and clock_t (1/USER_HZ seconds).
-+ * jiffies, microseconds, seconds, and clock_t (1/USER_HZ seconds).
- * These are all stored as 0.64 fixed-point binary fractions.
- */
- u64 __cputime_jiffies_factor;
- EXPORT_SYMBOL(__cputime_jiffies_factor);
--u64 __cputime_msec_factor;
--EXPORT_SYMBOL(__cputime_msec_factor);
-+u64 __cputime_usec_factor;
-+EXPORT_SYMBOL(__cputime_usec_factor);
- u64 __cputime_sec_factor;
- EXPORT_SYMBOL(__cputime_sec_factor);
- u64 __cputime_clockt_factor;
-@@ -192,8 +192,8 @@ static void calc_cputime_factors(void)
-
- div128_by_32(HZ, 0, tb_ticks_per_sec, &res);
- __cputime_jiffies_factor = res.result_low;
-- div128_by_32(1000, 0, tb_ticks_per_sec, &res);
-- __cputime_msec_factor = res.result_low;
-+ div128_by_32(1000000, 0, tb_ticks_per_sec, &res);
-+ __cputime_usec_factor = res.result_low;
- div128_by_32(1, 0, tb_ticks_per_sec, &res);
- __cputime_sec_factor = res.result_low;
- div128_by_32(USER_HZ, 0, tb_ticks_per_sec, &res);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0086-vhost-don-t-forget-to-schedule.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0086-vhost-don-t-forget-to-schedule.patch
deleted file mode 100644
index fded3c6..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0086-vhost-don-t-forget-to-schedule.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From 164965e103d2cfc11c59b563aa95ce2e8c372b65 Mon Sep 17 00:00:00 2001
-From: Nadav Har'El <nyh at math.technion.ac.il>
-Date: Mon, 27 Feb 2012 15:07:29 +0200
-Subject: [PATCH 086/109] vhost: don't forget to schedule()
-
-commit d550dda192c1bd039afb774b99485e88b70d7cb8 upstream.
-
-This is a tiny, but important, patch to vhost.
-
-Vhost's worker thread only called schedule() when it had no work to do, and
-it wanted to go to sleep. But if there's always work to do, e.g., the guest
-is running a network-intensive program like netperf with small message sizes,
-schedule() was *never* called. This had several negative implications (on
-non-preemptive kernels):
-
- 1. Passing time was not properly accounted to the "vhost" process (ps and
- top would wrongly show it using zero CPU time).
-
- 2. Sometimes error messages about RCU timeouts would be printed, if the
- core running the vhost thread didn't schedule() for a very long time.
-
- 3. Worst of all, a vhost thread would "hog" the core. If several vhost
- threads need to share the same core, typically one would get most of the
- CPU time (and its associated guest most of the performance), while the
- others hardly get any work done.
-
-The trivial solution is to add
-
- if (need_resched())
- schedule();
-
-After doing every piece of work. This will not do the heavy schedule() all
-the time, just when the timer interrupt decided a reschedule is warranted
-(so need_resched returns true).
-
-Thanks to Abel Gordon for this patch.
-
-Signed-off-by: Nadav Har'El <nyh at il.ibm.com>
-Signed-off-by: Michael S. Tsirkin <mst at redhat.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/vhost/vhost.c | 2 ++
- 1 files changed, 2 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/vhost/vhost.c b/drivers/vhost/vhost.c
-index c14c42b..ae66278 100644
---- a/drivers/vhost/vhost.c
-+++ b/drivers/vhost/vhost.c
-@@ -222,6 +222,8 @@ static int vhost_worker(void *data)
- if (work) {
- __set_current_state(TASK_RUNNING);
- work->fn(work);
-+ if (need_resched())
-+ schedule();
- } else
- schedule();
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0087-r8169-call-netif_napi_del-at-errpaths-and-at-driver-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0087-r8169-call-netif_napi_del-at-errpaths-and-at-driver-.patch
deleted file mode 100644
index 8fd5527..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0087-r8169-call-netif_napi_del-at-errpaths-and-at-driver-.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 87b62a139d4385f3726820674127eaee29fc7cff Mon Sep 17 00:00:00 2001
-From: Devendra Naga <devendra.aaru at gmail.com>
-Date: Thu, 31 May 2012 01:51:20 +0000
-Subject: [PATCH 087/109] r8169: call netif_napi_del at errpaths and at driver
- unload
-
-commit ad1be8d345416a794dea39761a374032aa471a76 upstream.
-
-when register_netdev fails, the init'ed NAPIs by netif_napi_add must be
-deleted with netif_napi_del, and also when driver unloads, it should
-delete the NAPI before unregistering netdevice using unregister_netdev.
-
-Signed-off-by: Devendra Naga <devendra.aaru at gmail.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/ethernet/realtek/r8169.c | 3 +++
- 1 files changed, 3 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c
-index cc2565c..9e61d6b 100644
---- a/drivers/net/ethernet/realtek/r8169.c
-+++ b/drivers/net/ethernet/realtek/r8169.c
-@@ -4185,6 +4185,7 @@ out:
- return rc;
-
- err_out_msi_4:
-+ netif_napi_del(&tp->napi);
- rtl_disable_msi(pdev, tp);
- iounmap(ioaddr);
- err_out_free_res_3:
-@@ -4210,6 +4211,8 @@ static void __devexit rtl8169_remove_one(struct pci_dev *pdev)
-
- cancel_delayed_work_sync(&tp->task);
-
-+ netif_napi_del(&tp->napi);
-+
- unregister_netdev(dev);
-
- rtl_release_firmware(tp);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0088-bnx2x-fix-checksum-validation.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0088-bnx2x-fix-checksum-validation.patch
deleted file mode 100644
index 1a6bce5..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0088-bnx2x-fix-checksum-validation.patch
+++ /dev/null
@@ -1,112 +0,0 @@
-From 4ffefa650ebbe2ef8bc2babff2e5686c33a2dab3 Mon Sep 17 00:00:00 2001
-From: Eric Dumazet <edumazet at google.com>
-Date: Tue, 12 Jun 2012 23:50:04 +0000
-Subject: [PATCH 088/109] bnx2x: fix checksum validation
-
-commit d6cb3e41386f20fb0777d0b59a2def82c65d37f7 upstream.
-
-bnx2x driver incorrectly sets ip_summed to CHECKSUM_UNNECESSARY on
-encapsulated segments. TCP stack happily accepts frames with bad
-checksums, if they are inside a GRE or IPIP encapsulation.
-
-Our understanding is that if no IP or L4 csum validation was done by the
-hardware, we should leave ip_summed as is (CHECKSUM_NONE), since
-hardware doesn't provide CHECKSUM_COMPLETE support in its cqe.
-
-Then, if IP/L4 checksumming was done by the hardware, set
-CHECKSUM_UNNECESSARY if no error was flagged.
-
-Patch based on findings and analysis from Robert Evans
-
-Signed-off-by: Eric Dumazet <edumazet at google.com>
-Cc: Eilon Greenstein <eilong at broadcom.com>
-Cc: Yaniv Rosner <yanivr at broadcom.com>
-Cc: Merav Sicron <meravs at broadcom.com>
-Cc: Tom Herbert <therbert at google.com>
-Cc: Robert Evans <evansr at google.com>
-Cc: Willem de Bruijn <willemb at google.com>
-Acked-by: Eilon Greenstein <eilong at broadcom.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-[bwh: Backported to 3.2: adjust context, indentation]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/ethernet/broadcom/bnx2x/bnx2x.h | 15 ------------
- drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c | 28 ++++++++++++++++++-----
- 2 files changed, 22 insertions(+), 21 deletions(-)
-
-diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x.h b/drivers/net/ethernet/broadcom/bnx2x/bnx2x.h
-index aec7212..8dda46a 100644
---- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x.h
-+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x.h
-@@ -723,21 +723,6 @@ struct bnx2x_fastpath {
-
- #define ETH_RX_ERROR_FALGS ETH_FAST_PATH_RX_CQE_PHY_DECODE_ERR_FLG
-
--#define BNX2X_IP_CSUM_ERR(cqe) \
-- (!((cqe)->fast_path_cqe.status_flags & \
-- ETH_FAST_PATH_RX_CQE_IP_XSUM_NO_VALIDATION_FLG) && \
-- ((cqe)->fast_path_cqe.type_error_flags & \
-- ETH_FAST_PATH_RX_CQE_IP_BAD_XSUM_FLG))
--
--#define BNX2X_L4_CSUM_ERR(cqe) \
-- (!((cqe)->fast_path_cqe.status_flags & \
-- ETH_FAST_PATH_RX_CQE_L4_XSUM_NO_VALIDATION_FLG) && \
-- ((cqe)->fast_path_cqe.type_error_flags & \
-- ETH_FAST_PATH_RX_CQE_L4_BAD_XSUM_FLG))
--
--#define BNX2X_RX_CSUM_OK(cqe) \
-- (!(BNX2X_L4_CSUM_ERR(cqe) || BNX2X_IP_CSUM_ERR(cqe)))
--
- #define BNX2X_PRS_FLAG_OVERETH_IPV4(flags) \
- (((le16_to_cpu(flags) & \
- PARSING_FLAGS_OVER_ETHERNET_PROTOCOL) >> \
-diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
-index 580b44e..27d6d6c 100644
---- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
-+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
-@@ -551,6 +551,26 @@ static inline void bnx2x_set_skb_rxhash(struct bnx2x *bp, union eth_rx_cqe *cqe,
- le32_to_cpu(cqe->fast_path_cqe.rss_hash_result);
- }
-
-+static void bnx2x_csum_validate(struct sk_buff *skb, union eth_rx_cqe *cqe,
-+ struct bnx2x_fastpath *fp)
-+{
-+ /* Do nothing if no IP/L4 csum validation was done */
-+
-+ if (cqe->fast_path_cqe.status_flags &
-+ (ETH_FAST_PATH_RX_CQE_IP_XSUM_NO_VALIDATION_FLG |
-+ ETH_FAST_PATH_RX_CQE_L4_XSUM_NO_VALIDATION_FLG))
-+ return;
-+
-+ /* If both IP/L4 validation were done, check if an error was found. */
-+
-+ if (cqe->fast_path_cqe.type_error_flags &
-+ (ETH_FAST_PATH_RX_CQE_IP_BAD_XSUM_FLG |
-+ ETH_FAST_PATH_RX_CQE_L4_BAD_XSUM_FLG))
-+ fp->eth_q_stats.hw_csum_err++;
-+ else
-+ skb->ip_summed = CHECKSUM_UNNECESSARY;
-+}
-+
- int bnx2x_rx_int(struct bnx2x_fastpath *fp, int budget)
- {
- struct bnx2x *bp = fp->bp;
-@@ -746,13 +766,9 @@ reuse_rx:
-
- skb_checksum_none_assert(skb);
-
-- if (bp->dev->features & NETIF_F_RXCSUM) {
-+ if (bp->dev->features & NETIF_F_RXCSUM)
-+ bnx2x_csum_validate(skb, cqe, fp);
-
-- if (likely(BNX2X_RX_CSUM_OK(cqe)))
-- skb->ip_summed = CHECKSUM_UNNECESSARY;
-- else
-- fp->eth_q_stats.hw_csum_err++;
-- }
- }
-
- skb_record_rx_queue(skb, fp->index);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0089-bnx2x-fix-panic-when-TX-ring-is-full.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0089-bnx2x-fix-panic-when-TX-ring-is-full.patch
deleted file mode 100644
index d21ce22..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0089-bnx2x-fix-panic-when-TX-ring-is-full.patch
+++ /dev/null
@@ -1,75 +0,0 @@
-From 9a59f534e5f1d432bf63f0ed6cb184b1ce988063 Mon Sep 17 00:00:00 2001
-From: Eric Dumazet <edumazet at google.com>
-Date: Wed, 13 Jun 2012 09:45:16 +0000
-Subject: [PATCH 089/109] bnx2x: fix panic when TX ring is full
-
-commit bc14786a100cc6a81cd060e8031ec481241b418c upstream.
-
-There is a off by one error in the minimal number of BD in
-bnx2x_start_xmit() and bnx2x_tx_int() before stopping/resuming tx queue.
-
-A full size GSO packet, with data included in skb->head really needs
-(MAX_SKB_FRAGS + 4) BDs, because of bnx2x_tx_split()
-
-This error triggers if BQL is disabled and heavy TCP transmit traffic
-occurs.
-
-bnx2x_tx_split() definitely can be called, remove a wrong comment.
-
-Reported-by: Tomas Hruby <thruby at google.com>
-Signed-off-by: Eric Dumazet <edumazet at google.com>
-Cc: Eilon Greenstein <eilong at broadcom.com>
-Cc: Yaniv Rosner <yanivr at broadcom.com>
-Cc: Merav Sicron <meravs at broadcom.com>
-Cc: Tom Herbert <therbert at google.com>
-Cc: Robert Evans <evansr at google.com>
-Cc: Willem de Bruijn <willemb at google.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c | 8 +++-----
- 1 files changed, 3 insertions(+), 5 deletions(-)
-
-diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
-index 27d6d6c..2c1a5c0 100644
---- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
-+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
-@@ -220,7 +220,7 @@ int bnx2x_tx_int(struct bnx2x *bp, struct bnx2x_fp_txdata *txdata)
-
- if ((netif_tx_queue_stopped(txq)) &&
- (bp->state == BNX2X_STATE_OPEN) &&
-- (bnx2x_tx_avail(bp, txdata) >= MAX_SKB_FRAGS + 3))
-+ (bnx2x_tx_avail(bp, txdata) >= MAX_SKB_FRAGS + 4))
- netif_tx_wake_queue(txq);
-
- __netif_tx_unlock(txq);
-@@ -2254,8 +2254,6 @@ int bnx2x_poll(struct napi_struct *napi, int budget)
- /* we split the first BD into headers and data BDs
- * to ease the pain of our fellow microcode engineers
- * we use one mapping for both BDs
-- * So far this has only been observed to happen
-- * in Other Operating Systems(TM)
- */
- static noinline u16 bnx2x_tx_split(struct bnx2x *bp,
- struct bnx2x_fp_txdata *txdata,
-@@ -2906,7 +2904,7 @@ netdev_tx_t bnx2x_start_xmit(struct sk_buff *skb, struct net_device *dev)
-
- txdata->tx_bd_prod += nbd;
-
-- if (unlikely(bnx2x_tx_avail(bp, txdata) < MAX_SKB_FRAGS + 3)) {
-+ if (unlikely(bnx2x_tx_avail(bp, txdata) < MAX_SKB_FRAGS + 4)) {
- netif_tx_stop_queue(txq);
-
- /* paired memory barrier is in bnx2x_tx_int(), we have to keep
-@@ -2915,7 +2913,7 @@ netdev_tx_t bnx2x_start_xmit(struct sk_buff *skb, struct net_device *dev)
- smp_mb();
-
- fp->eth_q_stats.driver_xoff++;
-- if (bnx2x_tx_avail(bp, txdata) >= MAX_SKB_FRAGS + 3)
-+ if (bnx2x_tx_avail(bp, txdata) >= MAX_SKB_FRAGS + 4)
- netif_tx_wake_queue(txq);
- }
- txdata->tx_pkt++;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0090-net-remove-skb_orphan_try.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0090-net-remove-skb_orphan_try.patch
deleted file mode 100644
index 6072803..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0090-net-remove-skb_orphan_try.patch
+++ /dev/null
@@ -1,135 +0,0 @@
-From 401354ebe4d79d6edf536ad7b69e59afeec81308 Mon Sep 17 00:00:00 2001
-From: Eric Dumazet <edumazet at google.com>
-Date: Thu, 14 Jun 2012 06:42:44 +0000
-Subject: [PATCH 090/109] net: remove skb_orphan_try()
-
-commit 62b1a8ab9b3660bb820d8dfe23148ed6cda38574 upstream.
-
-Orphaning skb in dev_hard_start_xmit() makes bonding behavior
-unfriendly for applications sending big UDP bursts : Once packets
-pass the bonding device and come to real device, they might hit a full
-qdisc and be dropped. Without orphaning, the sender is automatically
-throttled because sk->sk_wmemalloc reaches sk->sk_sndbuf (assuming
-sk_sndbuf is not too big)
-
-We could try to defer the orphaning adding another test in
-dev_hard_start_xmit(), but all this seems of little gain,
-now that BQL tends to make packets more likely to be parked
-in Qdisc queues instead of NIC TX ring, in cases where performance
-matters.
-
-Reverts commits :
-fc6055a5ba31 net: Introduce skb_orphan_try()
-87fd308cfc6b net: skb_tx_hash() fix relative to skb_orphan_try()
-and removes SKBTX_DRV_NEEDS_SK_REF flag
-
-Reported-and-bisected-by: Jean-Michel Hautbois <jhautbois at gmail.com>
-Signed-off-by: Eric Dumazet <edumazet at google.com>
-Tested-by: Oliver Hartkopp <socketcan at hartkopp.net>
-Acked-by: Oliver Hartkopp <socketcan at hartkopp.net>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-[bwh: Backported to 3.2:
- - Adjust context
- - SKBTX_WIFI_STATUS is not defined]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- include/linux/skbuff.h | 5 +----
- net/can/raw.c | 3 ---
- net/core/dev.c | 23 +----------------------
- net/iucv/af_iucv.c | 1 -
- 4 files changed, 2 insertions(+), 30 deletions(-)
-
-diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
-index bdb4590..53dc7e7 100644
---- a/include/linux/skbuff.h
-+++ b/include/linux/skbuff.h
-@@ -213,11 +213,8 @@ enum {
- /* device driver is going to provide hardware time stamp */
- SKBTX_IN_PROGRESS = 1 << 2,
-
-- /* ensure the originating sk reference is available on driver level */
-- SKBTX_DRV_NEEDS_SK_REF = 1 << 3,
--
- /* device driver supports TX zero-copy buffers */
-- SKBTX_DEV_ZEROCOPY = 1 << 4,
-+ SKBTX_DEV_ZEROCOPY = 1 << 3,
- };
-
- /*
-diff --git a/net/can/raw.c b/net/can/raw.c
-index cde1b4a..46cca3a 100644
---- a/net/can/raw.c
-+++ b/net/can/raw.c
-@@ -681,9 +681,6 @@ static int raw_sendmsg(struct kiocb *iocb, struct socket *sock,
- if (err < 0)
- goto free_skb;
-
-- /* to be able to check the received tx sock reference in raw_rcv() */
-- skb_shinfo(skb)->tx_flags |= SKBTX_DRV_NEEDS_SK_REF;
--
- skb->dev = dev;
- skb->sk = sk;
-
-diff --git a/net/core/dev.c b/net/core/dev.c
-index 1cbddc9..5738654 100644
---- a/net/core/dev.c
-+++ b/net/core/dev.c
-@@ -2079,25 +2079,6 @@ static int dev_gso_segment(struct sk_buff *skb, int features)
- return 0;
- }
-
--/*
-- * Try to orphan skb early, right before transmission by the device.
-- * We cannot orphan skb if tx timestamp is requested or the sk-reference
-- * is needed on driver level for other reasons, e.g. see net/can/raw.c
-- */
--static inline void skb_orphan_try(struct sk_buff *skb)
--{
-- struct sock *sk = skb->sk;
--
-- if (sk && !skb_shinfo(skb)->tx_flags) {
-- /* skb_tx_hash() wont be able to get sk.
-- * We copy sk_hash into skb->rxhash
-- */
-- if (!skb->rxhash)
-- skb->rxhash = sk->sk_hash;
-- skb_orphan(skb);
-- }
--}
--
- static bool can_checksum_protocol(unsigned long features, __be16 protocol)
- {
- return ((features & NETIF_F_GEN_CSUM) ||
-@@ -2182,8 +2163,6 @@ int dev_hard_start_xmit(struct sk_buff *skb, struct net_device *dev,
- if (!list_empty(&ptype_all))
- dev_queue_xmit_nit(skb, dev);
-
-- skb_orphan_try(skb);
--
- features = netif_skb_features(skb);
-
- if (vlan_tx_tag_present(skb) &&
-@@ -2293,7 +2272,7 @@ u16 __skb_tx_hash(const struct net_device *dev, const struct sk_buff *skb,
- if (skb->sk && skb->sk->sk_hash)
- hash = skb->sk->sk_hash;
- else
-- hash = (__force u16) skb->protocol ^ skb->rxhash;
-+ hash = (__force u16) skb->protocol;
- hash = jhash_1word(hash, hashrnd);
-
- return (u16) (((u64) hash * qcount) >> 32) + qoffset;
-diff --git a/net/iucv/af_iucv.c b/net/iucv/af_iucv.c
-index 274d150..cf98d62 100644
---- a/net/iucv/af_iucv.c
-+++ b/net/iucv/af_iucv.c
-@@ -380,7 +380,6 @@ static int afiucv_hs_send(struct iucv_message *imsg, struct sock *sock,
- skb_trim(skb, skb->dev->mtu);
- }
- skb->protocol = ETH_P_AF_IUCV;
-- skb_shinfo(skb)->tx_flags |= SKBTX_DRV_NEEDS_SK_REF;
- nskb = skb_clone(skb, GFP_ATOMIC);
- if (!nskb)
- return -ENOMEM;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0091-ACPI-Make-acpi_skip_timer_override-cover-all-source_.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0091-ACPI-Make-acpi_skip_timer_override-cover-all-source_.patch
deleted file mode 100644
index 6db854d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0091-ACPI-Make-acpi_skip_timer_override-cover-all-source_.patch
+++ /dev/null
@@ -1,78 +0,0 @@
-From 16fe1810332abe3998fa2e0760af7f8ca5f701d6 Mon Sep 17 00:00:00 2001
-From: Feng Tang <feng.tang at intel.com>
-Date: Mon, 4 Jun 2012 15:00:04 +0800
-Subject: [PATCH 091/109] ACPI: Make acpi_skip_timer_override cover all
- source_irq==0 cases
-
-commit ae10ccdc3093486f8c2369d227583f9d79f628e5 upstream.
-
-Currently when acpi_skip_timer_override is set, it only cover the
-(source_irq == 0 && global_irq == 2) cases. While there is also
-platform which need use this option and its global_irq is not 2.
-This patch will extend acpi_skip_timer_override to cover all
-timer overriding cases as long as the source irq is 0.
-
-This is the first part of a fix to kernel bug bugzilla 40002:
- "IRQ 0 assigned to VGA"
-https://bugzilla.kernel.org/show_bug.cgi?id=40002
-
-Reported-and-tested-by: Szymon Kowalczyk <fazerxlo at o2.pl>
-Signed-off-by: Feng Tang <feng.tang at intel.com>
-Signed-off-by: Len Brown <len.brown at intel.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/x86/kernel/acpi/boot.c | 14 ++++++++------
- 1 files changed, 8 insertions(+), 6 deletions(-)
-
-diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c
-index 4558f0d..a94dc95 100644
---- a/arch/x86/kernel/acpi/boot.c
-+++ b/arch/x86/kernel/acpi/boot.c
-@@ -416,12 +416,14 @@ acpi_parse_int_src_ovr(struct acpi_subtable_header * header,
- return 0;
- }
-
-- if (intsrc->source_irq == 0 && intsrc->global_irq == 2) {
-+ if (intsrc->source_irq == 0) {
- if (acpi_skip_timer_override) {
-- printk(PREFIX "BIOS IRQ0 pin2 override ignored.\n");
-+ printk(PREFIX "BIOS IRQ0 override ignored.\n");
- return 0;
- }
-- if (acpi_fix_pin2_polarity && (intsrc->inti_flags & ACPI_MADT_POLARITY_MASK)) {
-+
-+ if ((intsrc->global_irq == 2) && acpi_fix_pin2_polarity
-+ && (intsrc->inti_flags & ACPI_MADT_POLARITY_MASK)) {
- intsrc->inti_flags &= ~ACPI_MADT_POLARITY_MASK;
- printk(PREFIX "BIOS IRQ0 pin2 override: forcing polarity to high active.\n");
- }
-@@ -1327,7 +1329,7 @@ static int __init dmi_disable_acpi(const struct dmi_system_id *d)
- }
-
- /*
-- * Force ignoring BIOS IRQ0 pin2 override
-+ * Force ignoring BIOS IRQ0 override
- */
- static int __init dmi_ignore_irq0_timer_override(const struct dmi_system_id *d)
- {
-@@ -1337,7 +1339,7 @@ static int __init dmi_ignore_irq0_timer_override(const struct dmi_system_id *d)
- */
- if (!acpi_skip_timer_override) {
- WARN(1, KERN_ERR "ati_ixp4x0 quirk not complete.\n");
-- pr_notice("%s detected: Ignoring BIOS IRQ0 pin2 override\n",
-+ pr_notice("%s detected: Ignoring BIOS IRQ0 override\n",
- d->ident);
- acpi_skip_timer_override = 1;
- }
-@@ -1431,7 +1433,7 @@ static struct dmi_system_id __initdata acpi_dmi_table_late[] = {
- * is enabled. This input is incorrectly designated the
- * ISA IRQ 0 via an interrupt source override even though
- * it is wired to the output of the master 8259A and INTIN0
-- * is not connected at all. Force ignoring BIOS IRQ0 pin2
-+ * is not connected at all. Force ignoring BIOS IRQ0
- * override in that cases.
- */
- {
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0092-ACPI-Remove-one-board-specific-WARN-when-ignoring-ti.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0092-ACPI-Remove-one-board-specific-WARN-when-ignoring-ti.patch
deleted file mode 100644
index b7b8f11..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0092-ACPI-Remove-one-board-specific-WARN-when-ignoring-ti.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From b9c36e346bdb1c7bd2edd7489561f94155195e6e Mon Sep 17 00:00:00 2001
-From: Feng Tang <feng.tang at intel.com>
-Date: Mon, 4 Jun 2012 15:00:05 +0800
-Subject: [PATCH 092/109] ACPI: Remove one board specific WARN when ignoring
- timer overriding
-
-commit 5752cdb805ff89942d99d12118e2844e7db34df8 upstream.
-
-commit 7f68b4c2e158019c2ec494b5cfbd9c83b4e5b253 upstream.
-
-Current WARN msg is only for the ati_ixp4x0 board, while this function
-is used by mulitple platforms. So this one board specific warning
-is not appropriate any more.
-
-Signed-off-by: Feng Tang <feng.tang at intel.com>
-Signed-off-by: Len Brown <len.brown at intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/x86/kernel/acpi/boot.c | 5 -----
- 1 files changed, 0 insertions(+), 5 deletions(-)
-
-diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c
-index a94dc95..882960e 100644
---- a/arch/x86/kernel/acpi/boot.c
-+++ b/arch/x86/kernel/acpi/boot.c
-@@ -1333,12 +1333,7 @@ static int __init dmi_disable_acpi(const struct dmi_system_id *d)
- */
- static int __init dmi_ignore_irq0_timer_override(const struct dmi_system_id *d)
- {
-- /*
-- * The ati_ixp4x0_rev() early PCI quirk should have set
-- * the acpi_skip_timer_override flag already:
-- */
- if (!acpi_skip_timer_override) {
-- WARN(1, KERN_ERR "ati_ixp4x0 quirk not complete.\n");
- pr_notice("%s detected: Ignoring BIOS IRQ0 override\n",
- d->ident);
- acpi_skip_timer_override = 1;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0093-ACPI-Add-a-quirk-for-AMILO-PRO-V2030-to-ignore-the-t.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0093-ACPI-Add-a-quirk-for-AMILO-PRO-V2030-to-ignore-the-t.patch
deleted file mode 100644
index b1b5ff5..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0093-ACPI-Add-a-quirk-for-AMILO-PRO-V2030-to-ignore-the-t.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From 0430a8402ee6125c909ae3f4c3a89696e9a24077 Mon Sep 17 00:00:00 2001
-From: Feng Tang <feng.tang at intel.com>
-Date: Mon, 4 Jun 2012 15:00:06 +0800
-Subject: [PATCH 093/109] ACPI: Add a quirk for "AMILO PRO V2030" to ignore
- the timer overriding
-
-commit b939c2acf1dc42b08407ef5174f2e8d6f43dd5ea upstream.
-
-commit f6b54f083cc66cf9b11d2120d8df3c2ad4e0836d upstream.
-
-This is the 2nd part of fix for kernel bugzilla 40002:
- "IRQ 0 assigned to VGA"
-https://bugzilla.kernel.org/show_bug.cgi?id=40002
-
-The root cause is the buggy FW, whose ACPI tables assign the GSI 16
-to 2 irqs 0 and 16(VGA), and the VGA is the right owner of GSI 16.
-So add a quirk to ignore the irq0 overriding GSI 16 for the
-FUJITSU SIEMENS AMILO PRO V2030 platform will solve this issue.
-
-Reported-and-tested-by: Szymon Kowalczyk <fazerxlo at o2.pl>
-Signed-off-by: Feng Tang <feng.tang at intel.com>
-Signed-off-by: Len Brown <len.brown at intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/x86/kernel/acpi/boot.c | 8 ++++++++
- 1 files changed, 8 insertions(+), 0 deletions(-)
-
-diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c
-index 882960e..479d03c 100644
---- a/arch/x86/kernel/acpi/boot.c
-+++ b/arch/x86/kernel/acpi/boot.c
-@@ -1463,6 +1463,14 @@ static struct dmi_system_id __initdata acpi_dmi_table_late[] = {
- DMI_MATCH(DMI_PRODUCT_NAME, "HP Compaq 6715b"),
- },
- },
-+ {
-+ .callback = dmi_ignore_irq0_timer_override,
-+ .ident = "FUJITSU SIEMENS",
-+ .matches = {
-+ DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"),
-+ DMI_MATCH(DMI_PRODUCT_NAME, "AMILO PRO V2030"),
-+ },
-+ },
- {}
- };
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0094-ACPI-x86-fix-Dell-M6600-ACPI-reboot-regression-via-D.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0094-ACPI-x86-fix-Dell-M6600-ACPI-reboot-regression-via-D.patch
deleted file mode 100644
index 8cdbeaa..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0094-ACPI-x86-fix-Dell-M6600-ACPI-reboot-regression-via-D.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 66b7502a0d37876e547c5440aa34bee18e3b0f1e Mon Sep 17 00:00:00 2001
-From: Zhang Rui <rui.zhang at intel.com>
-Date: Mon, 20 Feb 2012 14:20:06 +0800
-Subject: [PATCH 094/109] ACPI, x86: fix Dell M6600 ACPI reboot regression via
- DMI
-
-commit 76eb9a30db4bc8fd172f9155247264b5f2686d7b upstream.
-
-Dell Precision M6600 is known to require PCI reboot, so add it to
-the reboot blacklist in pci_reboot_dmi_table[].
-
-https://bugzilla.kernel.org/show_bug.cgi?id=42749
-
-cc: x86 at kernel.org
-Signed-off-by: Zhang Rui <rui.zhang at intel.com>
-Signed-off-by: Len Brown <len.brown at intel.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/x86/kernel/reboot.c | 8 ++++++++
- 1 files changed, 8 insertions(+), 0 deletions(-)
-
-diff --git a/arch/x86/kernel/reboot.c b/arch/x86/kernel/reboot.c
-index 37a458b..e61f79c 100644
---- a/arch/x86/kernel/reboot.c
-+++ b/arch/x86/kernel/reboot.c
-@@ -460,6 +460,14 @@ static struct dmi_system_id __initdata pci_reboot_dmi_table[] = {
- DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 990"),
- },
- },
-+ { /* Handle problems with rebooting on the Precision M6600. */
-+ .callback = set_pci_reboot,
-+ .ident = "Dell OptiPlex 990",
-+ .matches = {
-+ DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
-+ DMI_MATCH(DMI_PRODUCT_NAME, "Precision M6600"),
-+ },
-+ },
- { }
- };
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0095-ACPI-sysfs.c-strlen-fix.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0095-ACPI-sysfs.c-strlen-fix.patch
deleted file mode 100644
index 61a570b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0095-ACPI-sysfs.c-strlen-fix.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From b563da2fc80658815355acc804d1b8c21d1a88f9 Mon Sep 17 00:00:00 2001
-From: Pavel Vasilyev <pavel at pavlinux.ru>
-Date: Tue, 5 Jun 2012 00:02:05 -0400
-Subject: [PATCH 095/109] ACPI sysfs.c strlen fix
-
-commit 9f132652d94c96476b0b0a8caf0c10e96ab10fa8 upstream.
-
-Current code is ignoring the last character of "enable" and "disable"
-in comparisons.
-
-https://bugzilla.kernel.org/show_bug.cgi?id=33732
-
-Signed-off-by: Len Brown <len.brown at intel.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/acpi/sysfs.c | 4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/acpi/sysfs.c b/drivers/acpi/sysfs.c
-index 9f66181..240a244 100644
---- a/drivers/acpi/sysfs.c
-+++ b/drivers/acpi/sysfs.c
-@@ -173,7 +173,7 @@ static int param_set_trace_state(const char *val, struct kernel_param *kp)
- {
- int result = 0;
-
-- if (!strncmp(val, "enable", strlen("enable") - 1)) {
-+ if (!strncmp(val, "enable", strlen("enable"))) {
- result = acpi_debug_trace(trace_method_name, trace_debug_level,
- trace_debug_layer, 0);
- if (result)
-@@ -181,7 +181,7 @@ static int param_set_trace_state(const char *val, struct kernel_param *kp)
- goto exit;
- }
-
-- if (!strncmp(val, "disable", strlen("disable") - 1)) {
-+ if (!strncmp(val, "disable", strlen("disable"))) {
- int name = 0;
- result = acpi_debug_trace((char *)&name, trace_debug_level,
- trace_debug_layer, 0);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0096-eCryptfs-Gracefully-refuse-miscdev-file-ops-on-inher.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0096-eCryptfs-Gracefully-refuse-miscdev-file-ops-on-inher.patch
deleted file mode 100644
index ba3b558..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0096-eCryptfs-Gracefully-refuse-miscdev-file-ops-on-inher.patch
+++ /dev/null
@@ -1,98 +0,0 @@
-From 5daf178c74f17e523291b0c4eabbf3b3f3740b75 Mon Sep 17 00:00:00 2001
-From: Tyler Hicks <tyhicks at canonical.com>
-Date: Mon, 11 Jun 2012 09:24:11 -0700
-Subject: [PATCH 096/109] eCryptfs: Gracefully refuse miscdev file ops on
- inherited/passed files
-
-commit 8dc6780587c99286c0d3de747a2946a76989414a upstream.
-
-File operations on /dev/ecryptfs would BUG() when the operations were
-performed by processes other than the process that originally opened the
-file. This could happen with open files inherited after fork() or file
-descriptors passed through IPC mechanisms. Rather than calling BUG(), an
-error code can be safely returned in most situations.
-
-In ecryptfs_miscdev_release(), eCryptfs still needs to handle the
-release even if the last file reference is being held by a process that
-didn't originally open the file. ecryptfs_find_daemon_by_euid() will not
-be successful, so a pointer to the daemon is stored in the file's
-private_data. The private_data pointer is initialized when the miscdev
-file is opened and only used when the file is released.
-
-https://launchpad.net/bugs/994247
-
-Signed-off-by: Tyler Hicks <tyhicks at canonical.com>
-Reported-by: Sasha Levin <levinsasha928 at gmail.com>
-Tested-by: Sasha Levin <levinsasha928 at gmail.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/ecryptfs/miscdev.c | 23 ++++++++++++++++-------
- 1 files changed, 16 insertions(+), 7 deletions(-)
-
-diff --git a/fs/ecryptfs/miscdev.c b/fs/ecryptfs/miscdev.c
-index 0dc5a3d..a050e4b 100644
---- a/fs/ecryptfs/miscdev.c
-+++ b/fs/ecryptfs/miscdev.c
-@@ -49,7 +49,10 @@ ecryptfs_miscdev_poll(struct file *file, poll_table *pt)
- mutex_lock(&ecryptfs_daemon_hash_mux);
- /* TODO: Just use file->private_data? */
- rc = ecryptfs_find_daemon_by_euid(&daemon, euid, current_user_ns());
-- BUG_ON(rc || !daemon);
-+ if (rc || !daemon) {
-+ mutex_unlock(&ecryptfs_daemon_hash_mux);
-+ return -EINVAL;
-+ }
- mutex_lock(&daemon->mux);
- mutex_unlock(&ecryptfs_daemon_hash_mux);
- if (daemon->flags & ECRYPTFS_DAEMON_ZOMBIE) {
-@@ -122,6 +125,7 @@ ecryptfs_miscdev_open(struct inode *inode, struct file *file)
- goto out_unlock_daemon;
- }
- daemon->flags |= ECRYPTFS_DAEMON_MISCDEV_OPEN;
-+ file->private_data = daemon;
- atomic_inc(&ecryptfs_num_miscdev_opens);
- out_unlock_daemon:
- mutex_unlock(&daemon->mux);
-@@ -152,9 +156,9 @@ ecryptfs_miscdev_release(struct inode *inode, struct file *file)
-
- mutex_lock(&ecryptfs_daemon_hash_mux);
- rc = ecryptfs_find_daemon_by_euid(&daemon, euid, current_user_ns());
-- BUG_ON(rc || !daemon);
-+ if (rc || !daemon)
-+ daemon = file->private_data;
- mutex_lock(&daemon->mux);
-- BUG_ON(daemon->pid != task_pid(current));
- BUG_ON(!(daemon->flags & ECRYPTFS_DAEMON_MISCDEV_OPEN));
- daemon->flags &= ~ECRYPTFS_DAEMON_MISCDEV_OPEN;
- atomic_dec(&ecryptfs_num_miscdev_opens);
-@@ -246,8 +250,16 @@ ecryptfs_miscdev_read(struct file *file, char __user *buf, size_t count,
- mutex_lock(&ecryptfs_daemon_hash_mux);
- /* TODO: Just use file->private_data? */
- rc = ecryptfs_find_daemon_by_euid(&daemon, euid, current_user_ns());
-- BUG_ON(rc || !daemon);
-+ if (rc || !daemon) {
-+ mutex_unlock(&ecryptfs_daemon_hash_mux);
-+ return -EINVAL;
-+ }
- mutex_lock(&daemon->mux);
-+ if (task_pid(current) != daemon->pid) {
-+ mutex_unlock(&daemon->mux);
-+ mutex_unlock(&ecryptfs_daemon_hash_mux);
-+ return -EPERM;
-+ }
- if (daemon->flags & ECRYPTFS_DAEMON_ZOMBIE) {
- rc = 0;
- mutex_unlock(&ecryptfs_daemon_hash_mux);
-@@ -284,9 +296,6 @@ check_list:
- * message from the queue; try again */
- goto check_list;
- }
-- BUG_ON(euid != daemon->euid);
-- BUG_ON(current_user_ns() != daemon->user_ns);
-- BUG_ON(task_pid(current) != daemon->pid);
- msg_ctx = list_first_entry(&daemon->msg_ctx_out_queue,
- struct ecryptfs_msg_ctx, daemon_out_list);
- BUG_ON(!msg_ctx);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0097-eCryptfs-Fix-lockdep-warning-in-miscdev-operations.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0097-eCryptfs-Fix-lockdep-warning-in-miscdev-operations.patch
deleted file mode 100644
index d4e453e..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0097-eCryptfs-Fix-lockdep-warning-in-miscdev-operations.patch
+++ /dev/null
@@ -1,105 +0,0 @@
-From 3b0dfe936fb38efde98e2650ff18587c3285eb2a Mon Sep 17 00:00:00 2001
-From: Tyler Hicks <tyhicks at canonical.com>
-Date: Mon, 11 Jun 2012 10:21:34 -0700
-Subject: [PATCH 097/109] eCryptfs: Fix lockdep warning in miscdev operations
-
-commit 60d65f1f07a7d81d3eb3b91fc13fca80f2fdbb12 upstream.
-
-Don't grab the daemon mutex while holding the message context mutex.
-Addresses this lockdep warning:
-
- ecryptfsd/2141 is trying to acquire lock:
- (&ecryptfs_msg_ctx_arr[i].mux){+.+.+.}, at: [<ffffffffa029c213>] ecryptfs_miscdev_read+0x143/0x470 [ecryptfs]
-
- but task is already holding lock:
- (&(*daemon)->mux){+.+...}, at: [<ffffffffa029c2ec>] ecryptfs_miscdev_read+0x21c/0x470 [ecryptfs]
-
- which lock already depends on the new lock.
-
- the existing dependency chain (in reverse order) is:
-
- -> #1 (&(*daemon)->mux){+.+...}:
- [<ffffffff810a3b8d>] lock_acquire+0x9d/0x220
- [<ffffffff8151c6da>] __mutex_lock_common+0x5a/0x4b0
- [<ffffffff8151cc64>] mutex_lock_nested+0x44/0x50
- [<ffffffffa029c5d7>] ecryptfs_send_miscdev+0x97/0x120 [ecryptfs]
- [<ffffffffa029b744>] ecryptfs_send_message+0x134/0x1e0 [ecryptfs]
- [<ffffffffa029a24e>] ecryptfs_generate_key_packet_set+0x2fe/0xa80 [ecryptfs]
- [<ffffffffa02960f8>] ecryptfs_write_metadata+0x108/0x250 [ecryptfs]
- [<ffffffffa0290f80>] ecryptfs_create+0x130/0x250 [ecryptfs]
- [<ffffffff811963a4>] vfs_create+0xb4/0x120
- [<ffffffff81197865>] do_last+0x8c5/0xa10
- [<ffffffff811998f9>] path_openat+0xd9/0x460
- [<ffffffff81199da2>] do_filp_open+0x42/0xa0
- [<ffffffff81187998>] do_sys_open+0xf8/0x1d0
- [<ffffffff81187a91>] sys_open+0x21/0x30
- [<ffffffff81527d69>] system_call_fastpath+0x16/0x1b
-
- -> #0 (&ecryptfs_msg_ctx_arr[i].mux){+.+.+.}:
- [<ffffffff810a3418>] __lock_acquire+0x1bf8/0x1c50
- [<ffffffff810a3b8d>] lock_acquire+0x9d/0x220
- [<ffffffff8151c6da>] __mutex_lock_common+0x5a/0x4b0
- [<ffffffff8151cc64>] mutex_lock_nested+0x44/0x50
- [<ffffffffa029c213>] ecryptfs_miscdev_read+0x143/0x470 [ecryptfs]
- [<ffffffff811887d3>] vfs_read+0xb3/0x180
- [<ffffffff811888ed>] sys_read+0x4d/0x90
- [<ffffffff81527d69>] system_call_fastpath+0x16/0x1b
-
-Signed-off-by: Tyler Hicks <tyhicks at canonical.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/ecryptfs/miscdev.c | 25 +++++++++++++------------
- 1 files changed, 13 insertions(+), 12 deletions(-)
-
-diff --git a/fs/ecryptfs/miscdev.c b/fs/ecryptfs/miscdev.c
-index a050e4b..de42310 100644
---- a/fs/ecryptfs/miscdev.c
-+++ b/fs/ecryptfs/miscdev.c
-@@ -195,31 +195,32 @@ int ecryptfs_send_miscdev(char *data, size_t data_size,
- struct ecryptfs_msg_ctx *msg_ctx, u8 msg_type,
- u16 msg_flags, struct ecryptfs_daemon *daemon)
- {
-- int rc = 0;
-+ struct ecryptfs_message *msg;
-
-- mutex_lock(&msg_ctx->mux);
-- msg_ctx->msg = kmalloc((sizeof(*msg_ctx->msg) + data_size),
-- GFP_KERNEL);
-- if (!msg_ctx->msg) {
-- rc = -ENOMEM;
-+ msg = kmalloc((sizeof(*msg) + data_size), GFP_KERNEL);
-+ if (!msg) {
- printk(KERN_ERR "%s: Out of memory whilst attempting "
- "to kmalloc(%zd, GFP_KERNEL)\n", __func__,
-- (sizeof(*msg_ctx->msg) + data_size));
-- goto out_unlock;
-+ (sizeof(*msg) + data_size));
-+ return -ENOMEM;
- }
-+
-+ mutex_lock(&msg_ctx->mux);
-+ msg_ctx->msg = msg;
- msg_ctx->msg->index = msg_ctx->index;
- msg_ctx->msg->data_len = data_size;
- msg_ctx->type = msg_type;
- memcpy(msg_ctx->msg->data, data, data_size);
- msg_ctx->msg_size = (sizeof(*msg_ctx->msg) + data_size);
-- mutex_lock(&daemon->mux);
- list_add_tail(&msg_ctx->daemon_out_list, &daemon->msg_ctx_out_queue);
-+ mutex_unlock(&msg_ctx->mux);
-+
-+ mutex_lock(&daemon->mux);
- daemon->num_queued_msg_ctx++;
- wake_up_interruptible(&daemon->wait);
- mutex_unlock(&daemon->mux);
--out_unlock:
-- mutex_unlock(&msg_ctx->mux);
-- return rc;
-+
-+ return 0;
- }
-
- /**
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0098-eCryptfs-Properly-check-for-O_RDONLY-flag-before-doi.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0098-eCryptfs-Properly-check-for-O_RDONLY-flag-before-doi.patch
deleted file mode 100644
index 2758ec0..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0098-eCryptfs-Properly-check-for-O_RDONLY-flag-before-doi.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From 590d0b9de4bb4ef7a84bb0a8a13d85353556e7ae Mon Sep 17 00:00:00 2001
-From: Tyler Hicks <tyhicks at canonical.com>
-Date: Tue, 12 Jun 2012 11:17:01 -0700
-Subject: [PATCH 098/109] eCryptfs: Properly check for O_RDONLY flag before
- doing privileged open
-
-commit 9fe79d7600497ed8a95c3981cbe5b73ab98222f0 upstream.
-
-If the first attempt at opening the lower file read/write fails,
-eCryptfs will retry using a privileged kthread. However, the privileged
-retry should not happen if the lower file's inode is read-only because a
-read/write open will still be unsuccessful.
-
-The check for determining if the open should be retried was intended to
-be based on the access mode of the lower file's open flags being
-O_RDONLY, but the check was incorrectly performed. This would cause the
-open to be retried by the privileged kthread, resulting in a second
-failed open of the lower file. This patch corrects the check to
-determine if the open request should be handled by the privileged
-kthread.
-
-Signed-off-by: Tyler Hicks <tyhicks at canonical.com>
-Reported-by: Dan Carpenter <dan.carpenter at oracle.com>
-Acked-by: Dan Carpenter <dan.carpenter at oracle.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/ecryptfs/kthread.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/fs/ecryptfs/kthread.c b/fs/ecryptfs/kthread.c
-index 69f994a..0dbe58a 100644
---- a/fs/ecryptfs/kthread.c
-+++ b/fs/ecryptfs/kthread.c
-@@ -149,7 +149,7 @@ int ecryptfs_privileged_open(struct file **lower_file,
- (*lower_file) = dentry_open(lower_dentry, lower_mnt, flags, cred);
- if (!IS_ERR(*lower_file))
- goto out;
-- if (flags & O_RDONLY) {
-+ if ((flags & O_ACCMODE) == O_RDONLY) {
- rc = PTR_ERR((*lower_file));
- goto out;
- }
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0099-ACPI-PM-Make-acpi_pm_device_sleep_state-follow-the-s.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0099-ACPI-PM-Make-acpi_pm_device_sleep_state-follow-the-s.patch
deleted file mode 100644
index 2b7beda..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0099-ACPI-PM-Make-acpi_pm_device_sleep_state-follow-the-s.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From 074935f3d2b0e862c66af5032619659b070e1ebb Mon Sep 17 00:00:00 2001
-From: "Rafael J. Wysocki" <rjw at sisk.pl>
-Date: Tue, 29 May 2012 21:21:07 +0200
-Subject: [PATCH 099/109] ACPI / PM: Make acpi_pm_device_sleep_state() follow
- the specification
-
-commit dbe9a2edd17d843d80faf2b99f20a691c1853418 upstream.
-
-The comparison between the system sleep state being entered
-and the lowest system sleep state the given device may wake up
-from in acpi_pm_device_sleep_state() is reversed, because the
-specification (ACPI 5.0) says that for wakeup to work:
-
-"The sleeping state being entered must be less than or equal to the
- power state declared in element 1 of the _PRW object."
-
-In other words, the state returned by _PRW is the deepest
-(lowest-power) system sleep state the device is capable of waking up
-the system from.
-
-Moreover, acpi_pm_device_sleep_state() also should check if the
-wakeup capability is supported through ACPI, because in principle it
-may be done via native PCIe PME, for example, in which case _SxW
-should not be evaluated.
-
-Signed-off-by: Rafael J. Wysocki <rjw at sisk.pl>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/acpi/sleep.c | 4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/acpi/sleep.c b/drivers/acpi/sleep.c
-index ca191ff..ed6bc52 100644
---- a/drivers/acpi/sleep.c
-+++ b/drivers/acpi/sleep.c
-@@ -702,8 +702,8 @@ int acpi_pm_device_sleep_state(struct device *dev, int *d_min_p)
- * can wake the system. _S0W may be valid, too.
- */
- if (acpi_target_sleep_state == ACPI_STATE_S0 ||
-- (device_may_wakeup(dev) &&
-- adev->wakeup.sleep_state <= acpi_target_sleep_state)) {
-+ (device_may_wakeup(dev) && adev->wakeup.flags.valid &&
-+ adev->wakeup.sleep_state >= acpi_target_sleep_state)) {
- acpi_status status;
-
- acpi_method[3] = 'W';
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0100-ipheth-add-support-for-iPad.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0100-ipheth-add-support-for-iPad.patch
deleted file mode 100644
index 1eadc88..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0100-ipheth-add-support-for-iPad.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 0c6658ce9402f6e184fad5386d86a3a2bb2a2d67 Mon Sep 17 00:00:00 2001
-From: Davide Gerhard <rainbow at irh.it>
-Date: Mon, 25 Jun 2012 09:04:47 +0200
-Subject: [PATCH 100/109] ipheth: add support for iPad
-
-commit 6de0298ec9c1edaf330b71b57346241ece8f3346 upstream.
-
-This adds support for the iPad to the ipheth driver.
-(product id = 0x129a)
-
-Signed-off-by: Davide Gerhard <rainbow at irh.it>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/usb/ipheth.c | 5 +++++
- 1 files changed, 5 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/net/usb/ipheth.c b/drivers/net/usb/ipheth.c
-index ad96164..00ed9c1 100644
---- a/drivers/net/usb/ipheth.c
-+++ b/drivers/net/usb/ipheth.c
-@@ -59,6 +59,7 @@
- #define USB_PRODUCT_IPHONE_3G 0x1292
- #define USB_PRODUCT_IPHONE_3GS 0x1294
- #define USB_PRODUCT_IPHONE_4 0x1297
-+#define USB_PRODUCT_IPAD 0x129a
- #define USB_PRODUCT_IPHONE_4_VZW 0x129c
- #define USB_PRODUCT_IPHONE_4S 0x12a0
-
-@@ -101,6 +102,10 @@ static struct usb_device_id ipheth_table[] = {
- IPHETH_USBINTF_CLASS, IPHETH_USBINTF_SUBCLASS,
- IPHETH_USBINTF_PROTO) },
- { USB_DEVICE_AND_INTERFACE_INFO(
-+ USB_VENDOR_APPLE, USB_PRODUCT_IPAD,
-+ IPHETH_USBINTF_CLASS, IPHETH_USBINTF_SUBCLASS,
-+ IPHETH_USBINTF_PROTO) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(
- USB_VENDOR_APPLE, USB_PRODUCT_IPHONE_4_VZW,
- IPHETH_USBINTF_CLASS, IPHETH_USBINTF_SUBCLASS,
- IPHETH_USBINTF_PROTO) },
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0101-stmmac-Fix-for-nfs-hang-on-multiple-reboot.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0101-stmmac-Fix-for-nfs-hang-on-multiple-reboot.patch
deleted file mode 100644
index 76313ca..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0101-stmmac-Fix-for-nfs-hang-on-multiple-reboot.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From b50133363ad0f4fa9ca46317aaa7261a21f22305 Mon Sep 17 00:00:00 2001
-From: Deepak Sikri <deepak.sikri at st.com>
-Date: Sun, 8 Jul 2012 21:14:45 +0000
-Subject: [PATCH 101/109] stmmac: Fix for nfs hang on multiple reboot
-
-commit 8e83989106562326bfd6aaf92174fe138efd026b upstream.
-
-It was observed that during multiple reboots nfs hangs. The status of
-receive descriptors shows that all the descriptors were in control of
-CPU, and none were assigned to DMA.
-Also the DMA status register confirmed that the Rx buffer is
-unavailable.
-
-This patch adds the fix for the same by adding the memory barriers to
-ascertain that the all instructions before enabling the Rx or Tx DMA are
-completed which involves the proper setting of the ownership bit in DMA
-descriptors.
-
-Signed-off-by: Deepak Sikri <deepak.sikri at st.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 3 +++
- 1 files changed, 3 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
-index 72cd190..d4d2bc1 100644
---- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
-+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
-@@ -1174,6 +1174,7 @@ static netdev_tx_t stmmac_xmit(struct sk_buff *skb, struct net_device *dev)
- priv->hw->desc->prepare_tx_desc(desc, 0, len, csum_insertion);
- wmb();
- priv->hw->desc->set_tx_owner(desc);
-+ wmb();
- }
-
- /* Interrupt on completition only for the latest segment */
-@@ -1189,6 +1190,7 @@ static netdev_tx_t stmmac_xmit(struct sk_buff *skb, struct net_device *dev)
-
- /* To avoid raise condition */
- priv->hw->desc->set_tx_owner(first);
-+ wmb();
-
- priv->cur_tx++;
-
-@@ -1252,6 +1254,7 @@ static inline void stmmac_rx_refill(struct stmmac_priv *priv)
- }
- wmb();
- priv->hw->desc->set_rx_owner(p + entry);
-+ wmb();
- }
- }
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0102-bonding-debugfs-and-network-namespaces-are-incompati.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0102-bonding-debugfs-and-network-namespaces-are-incompati.patch
deleted file mode 100644
index 9449afb..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0102-bonding-debugfs-and-network-namespaces-are-incompati.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 4def3e67f9744a1010a27b55034269076ea6cffc Mon Sep 17 00:00:00 2001
-From: "Eric W. Biederman" <ebiederm at xmission.com>
-Date: Mon, 9 Jul 2012 10:52:43 +0000
-Subject: [PATCH 102/109] bonding: debugfs and network namespaces are
- incompatible
-
-commit 96ca7ffe748bf91f851e6aa4479aa11c8b1122ba upstream.
-
-The bonding debugfs support has been broken in the presence of network
-namespaces since it has been added. The debugfs support does not handle
-multiple bonding devices with the same name in different network
-namespaces.
-
-I haven't had any bug reports, and I'm not interested in getting any.
-Disable the debugfs support when network namespaces are enabled.
-
-Signed-off-by: "Eric W. Biederman" <ebiederm at xmission.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/bonding/bond_debugfs.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/net/bonding/bond_debugfs.c b/drivers/net/bonding/bond_debugfs.c
-index 3680aa2..2cf084e 100644
---- a/drivers/net/bonding/bond_debugfs.c
-+++ b/drivers/net/bonding/bond_debugfs.c
-@@ -6,7 +6,7 @@
- #include "bonding.h"
- #include "bond_alb.h"
-
--#ifdef CONFIG_DEBUG_FS
-+#if defined(CONFIG_DEBUG_FS) && !defined(CONFIG_NET_NS)
-
- #include <linux/debugfs.h>
- #include <linux/seq_file.h>
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0103-bonding-Manage-proc-net-bonding-entries-from-the-net.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0103-bonding-Manage-proc-net-bonding-entries-from-the-net.patch
deleted file mode 100644
index 4180a9d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0103-bonding-Manage-proc-net-bonding-entries-from-the-net.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From 9a6163ec597d5cd83bb9a4ea19b64236ea8499b6 Mon Sep 17 00:00:00 2001
-From: "Eric W. Biederman" <ebiederm at xmission.com>
-Date: Mon, 9 Jul 2012 10:51:45 +0000
-Subject: [PATCH 103/109] bonding: Manage /proc/net/bonding/ entries from the
- netdev events
-
-commit a64d49c3dd504b685f9742a2f3dcb11fb8e4345f upstream.
-
-It was recently reported that moving a bonding device between network
-namespaces causes warnings from /proc. It turns out after the move we
-were trying to add and to remove the /proc/net/bonding entries from the
-wrong network namespace.
-
-Move the bonding /proc registration code into the NETDEV_REGISTER and
-NETDEV_UNREGISTER events where the proc registration and unregistration
-will always happen at the right time.
-
-Signed-off-by: "Eric W. Biederman" <ebiederm at xmission.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/bonding/bond_main.c | 9 ++++++---
- 1 files changed, 6 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
-index 1a88e38..6c284d1 100644
---- a/drivers/net/bonding/bond_main.c
-+++ b/drivers/net/bonding/bond_main.c
-@@ -3184,6 +3184,12 @@ static int bond_master_netdev_event(unsigned long event,
- switch (event) {
- case NETDEV_CHANGENAME:
- return bond_event_changename(event_bond);
-+ case NETDEV_UNREGISTER:
-+ bond_remove_proc_entry(event_bond);
-+ break;
-+ case NETDEV_REGISTER:
-+ bond_create_proc_entry(event_bond);
-+ break;
- default:
- break;
- }
-@@ -4391,8 +4397,6 @@ static void bond_uninit(struct net_device *bond_dev)
-
- bond_work_cancel_all(bond);
-
-- bond_remove_proc_entry(bond);
--
- bond_debug_unregister(bond);
-
- __hw_addr_flush(&bond->mc_list);
-@@ -4794,7 +4798,6 @@ static int bond_init(struct net_device *bond_dev)
-
- bond_set_lockdep_class(bond_dev);
-
-- bond_create_proc_entry(bond);
- list_add_tail(&bond->bond_list, &bn->dev_list);
-
- bond_prepare_sysfs_group(bond);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0104-Input-bcm5974-Add-support-for-2012-MacBook-Pro-Retin.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0104-Input-bcm5974-Add-support-for-2012-MacBook-Pro-Retin.patch
deleted file mode 100644
index fb73f30..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0104-Input-bcm5974-Add-support-for-2012-MacBook-Pro-Retin.patch
+++ /dev/null
@@ -1,67 +0,0 @@
-From d622494f403ba2a79ac08f83e7b016d0687c4ce5 Mon Sep 17 00:00:00 2001
-From: Henrik Rydberg <rydberg at euromail.se>
-Date: Tue, 10 Jul 2012 09:43:57 -0700
-Subject: [PATCH 104/109] Input: bcm5974 - Add support for 2012 MacBook Pro
- Retina
-
-commit 3dde22a98e94eb18527f0ff0068fb2fb945e58d4 upstream.
-
-Add support for the 15'' MacBook Pro Retina model (MacBookPro10,1).
-
-Patch originally written by clipcarl (forums.opensuse.org).
-
-Signed-off-by: Henrik Rydberg <rydberg at euromail.se>
-Signed-off-by: Dmitry Torokhov <dmitry.torokhov at gmail.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/input/mouse/bcm5974.c | 20 ++++++++++++++++++++
- 1 files changed, 20 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/input/mouse/bcm5974.c b/drivers/input/mouse/bcm5974.c
-index 5ec617e..ec58f48 100644
---- a/drivers/input/mouse/bcm5974.c
-+++ b/drivers/input/mouse/bcm5974.c
-@@ -79,6 +79,10 @@
- #define USB_DEVICE_ID_APPLE_WELLSPRING5A_ANSI 0x0252
- #define USB_DEVICE_ID_APPLE_WELLSPRING5A_ISO 0x0253
- #define USB_DEVICE_ID_APPLE_WELLSPRING5A_JIS 0x0254
-+/* MacbookPro10,1 (unibody, June 2012) */
-+#define USB_DEVICE_ID_APPLE_WELLSPRING7_ANSI 0x0262
-+#define USB_DEVICE_ID_APPLE_WELLSPRING7_ISO 0x0263
-+#define USB_DEVICE_ID_APPLE_WELLSPRING7_JIS 0x0264
-
- #define BCM5974_DEVICE(prod) { \
- .match_flags = (USB_DEVICE_ID_MATCH_DEVICE | \
-@@ -128,6 +132,10 @@ static const struct usb_device_id bcm5974_table[] = {
- BCM5974_DEVICE(USB_DEVICE_ID_APPLE_WELLSPRING5A_ANSI),
- BCM5974_DEVICE(USB_DEVICE_ID_APPLE_WELLSPRING5A_ISO),
- BCM5974_DEVICE(USB_DEVICE_ID_APPLE_WELLSPRING5A_JIS),
-+ /* MacbookPro10,1 */
-+ BCM5974_DEVICE(USB_DEVICE_ID_APPLE_WELLSPRING7_ANSI),
-+ BCM5974_DEVICE(USB_DEVICE_ID_APPLE_WELLSPRING7_ISO),
-+ BCM5974_DEVICE(USB_DEVICE_ID_APPLE_WELLSPRING7_JIS),
- /* Terminating entry */
- {}
- };
-@@ -354,6 +362,18 @@ static const struct bcm5974_config bcm5974_config_table[] = {
- { DIM_X, DIM_X / SN_COORD, -4620, 5140 },
- { DIM_Y, DIM_Y / SN_COORD, -150, 6600 }
- },
-+ {
-+ USB_DEVICE_ID_APPLE_WELLSPRING7_ANSI,
-+ USB_DEVICE_ID_APPLE_WELLSPRING7_ISO,
-+ USB_DEVICE_ID_APPLE_WELLSPRING7_JIS,
-+ HAS_INTEGRATED_BUTTON,
-+ 0x84, sizeof(struct bt_data),
-+ 0x81, TYPE2, FINGER_TYPE2, FINGER_TYPE2 + SIZEOF_ALL_FINGERS,
-+ { DIM_PRESSURE, DIM_PRESSURE / SN_PRESSURE, 0, 300 },
-+ { DIM_WIDTH, DIM_WIDTH / SN_WIDTH, 0, 2048 },
-+ { DIM_X, DIM_X / SN_COORD, -4750, 5280 },
-+ { DIM_Y, DIM_Y / SN_COORD, -150, 6730 }
-+ },
- {}
- };
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0105-Input-xpad-handle-all-variations-of-Mad-Catz-Beat-Pa.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0105-Input-xpad-handle-all-variations-of-Mad-Catz-Beat-Pa.patch
deleted file mode 100644
index cf26e8f..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0105-Input-xpad-handle-all-variations-of-Mad-Catz-Beat-Pa.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From f8acffc53848df78a3d1683f4ab3f1236a20512d Mon Sep 17 00:00:00 2001
-From: Yuri Khan <yurivkhan at gmail.com>
-Date: Wed, 11 Jul 2012 00:49:18 -0700
-Subject: [PATCH 105/109] Input: xpad - handle all variations of Mad Catz Beat
- Pad
-
-commit 3ffb62cb9ac2430c2504c6ff9727d0f2476ef0bd upstream.
-
-The device should be handled by xpad driver instead of generic HID driver.
-
-Signed-off-by: Yuri Khan <yurivkhan at gmail.com>
-Acked-by: Jiri Kosina <jkosina at suse.cz>
-Signed-off-by: Dmitry Torokhov <dmitry.torokhov at gmail.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/hid/hid-core.c | 1 +
- drivers/hid/hid-ids.h | 3 +++
- drivers/input/joystick/xpad.c | 1 +
- 3 files changed, 5 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
-index c27b402..cfa053e 100644
---- a/drivers/hid/hid-core.c
-+++ b/drivers/hid/hid-core.c
-@@ -1884,6 +1884,7 @@ static const struct hid_device_id hid_ignore_list[] = {
- { HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_MCT) },
- { HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_HYBRID) },
- { HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_HEATCONTROL) },
-+ { HID_USB_DEVICE(USB_VENDOR_ID_MADCATZ, USB_DEVICE_ID_MADCATZ_BEATPAD) },
- { HID_USB_DEVICE(USB_VENDOR_ID_MCC, USB_DEVICE_ID_MCC_PMD1024LS) },
- { HID_USB_DEVICE(USB_VENDOR_ID_MCC, USB_DEVICE_ID_MCC_PMD1208LS) },
- { HID_USB_DEVICE(USB_VENDOR_ID_MICROCHIP, USB_DEVICE_ID_PICKIT1) },
-diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
-index fba3fc4..07a91a0 100644
---- a/drivers/hid/hid-ids.h
-+++ b/drivers/hid/hid-ids.h
-@@ -491,6 +491,9 @@
- #define USB_DEVICE_ID_CRYSTALTOUCH 0x0006
- #define USB_DEVICE_ID_CRYSTALTOUCH_DUAL 0x0007
-
-+#define USB_VENDOR_ID_MADCATZ 0x0738
-+#define USB_DEVICE_ID_MADCATZ_BEATPAD 0x4540
-+
- #define USB_VENDOR_ID_MCC 0x09db
- #define USB_DEVICE_ID_MCC_PMD1024LS 0x0076
- #define USB_DEVICE_ID_MCC_PMD1208LS 0x007a
-diff --git a/drivers/input/joystick/xpad.c b/drivers/input/joystick/xpad.c
-index d728875..a2daf38 100644
---- a/drivers/input/joystick/xpad.c
-+++ b/drivers/input/joystick/xpad.c
-@@ -238,6 +238,7 @@ static struct usb_device_id xpad_table [] = {
- XPAD_XBOX360_VENDOR(0x045e), /* Microsoft X-Box 360 controllers */
- XPAD_XBOX360_VENDOR(0x046d), /* Logitech X-Box 360 style controllers */
- XPAD_XBOX360_VENDOR(0x0738), /* Mad Catz X-Box 360 controllers */
-+ { USB_DEVICE(0x0738, 0x4540) }, /* Mad Catz Beat Pad */
- XPAD_XBOX360_VENDOR(0x0e6f), /* 0x0e6f X-Box 360 controllers */
- XPAD_XBOX360_VENDOR(0x12ab), /* X-Box 360 dance pads */
- XPAD_XBOX360_VENDOR(0x1430), /* RedOctane X-Box 360 controllers */
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0106-Input-xpad-add-signature-for-Razer-Onza-Tournament-E.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0106-Input-xpad-add-signature-for-Razer-Onza-Tournament-E.patch
deleted file mode 100644
index 4dff859..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0106-Input-xpad-add-signature-for-Razer-Onza-Tournament-E.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 08a3e81aa5cc67fd0ce0b2f9608aaec9f497ca11 Mon Sep 17 00:00:00 2001
-From: Ilia Katsnelson <k0009000 at gmail.com>
-Date: Wed, 11 Jul 2012 00:54:20 -0700
-Subject: [PATCH 106/109] Input: xpad - add signature for Razer Onza
- Tournament Edition
-
-commit cc71a7e899cc6b2ff41e1be48756782ed004d802 upstream.
-
-Signed-off-by: Ilia Katsnelson <k0009000 at gmail.com>
-Signed-off-by: Dmitry Torokhov <dmitry.torokhov at gmail.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/input/joystick/xpad.c | 4 +++-
- 1 files changed, 3 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/input/joystick/xpad.c b/drivers/input/joystick/xpad.c
-index a2daf38..ddfabc4 100644
---- a/drivers/input/joystick/xpad.c
-+++ b/drivers/input/joystick/xpad.c
-@@ -164,6 +164,7 @@ static const struct xpad_device {
- { 0x1bad, 0x0003, "Harmonix Rock Band Drumkit", MAP_DPAD_TO_BUTTONS, XTYPE_XBOX360 },
- { 0x0f0d, 0x0016, "Hori Real Arcade Pro.EX", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOX360 },
- { 0x0f0d, 0x000d, "Hori Fighting Stick EX2", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOX360 },
-+ { 0x1689, 0xfd00, "Razer Onza Tournament Edition", MAP_DPAD_TO_BUTTONS, XTYPE_XBOX360 },
- { 0xffff, 0xffff, "Chinese-made Xbox Controller", 0, XTYPE_XBOX },
- { 0x0000, 0x0000, "Generic X-Box pad", 0, XTYPE_UNKNOWN }
- };
-@@ -244,7 +245,8 @@ static struct usb_device_id xpad_table [] = {
- XPAD_XBOX360_VENDOR(0x1430), /* RedOctane X-Box 360 controllers */
- XPAD_XBOX360_VENDOR(0x146b), /* BigBen Interactive Controllers */
- XPAD_XBOX360_VENDOR(0x1bad), /* Harminix Rock Band Guitar and Drums */
-- XPAD_XBOX360_VENDOR(0x0f0d), /* Hori Controllers */
-+ XPAD_XBOX360_VENDOR(0x0f0d), /* Hori Controllers */
-+ XPAD_XBOX360_VENDOR(0x1689), /* Razer Onza */
- { }
- };
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0107-Input-xpad-add-Andamiro-Pump-It-Up-pad.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0107-Input-xpad-add-Andamiro-Pump-It-Up-pad.patch
deleted file mode 100644
index d591ad1..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0107-Input-xpad-add-Andamiro-Pump-It-Up-pad.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 5c62e66de78b65d8dd3f21df7d856eaefc694c8e Mon Sep 17 00:00:00 2001
-From: Yuri Khan <yurivkhan at gmail.com>
-Date: Wed, 11 Jul 2012 22:12:31 -0700
-Subject: [PATCH 107/109] Input: xpad - add Andamiro Pump It Up pad
-
-commit e76b8ee25e034ab601b525abb95cea14aa167ed3 upstream.
-
-I couldn't find the vendor ID in any of the online databases, but this
-mat has a Pump It Up logo on the top side of the controller compartment,
-and a disclaimer stating that Andamiro will not be liable on the bottom.
-
-Signed-off-by: Yuri Khan <yurivkhan at gmail.com>
-Signed-off-by: Dmitry Torokhov <dmitry.torokhov at gmail.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/input/joystick/xpad.c | 1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/input/joystick/xpad.c b/drivers/input/joystick/xpad.c
-index ddfabc4..2189cbf 100644
---- a/drivers/input/joystick/xpad.c
-+++ b/drivers/input/joystick/xpad.c
-@@ -142,6 +142,7 @@ static const struct xpad_device {
- { 0x0c12, 0x880a, "Pelican Eclipse PL-2023", 0, XTYPE_XBOX },
- { 0x0c12, 0x8810, "Zeroplus Xbox Controller", 0, XTYPE_XBOX },
- { 0x0c12, 0x9902, "HAMA VibraX - *FAULTY HARDWARE*", 0, XTYPE_XBOX },
-+ { 0x0d2f, 0x0002, "Andamiro Pump It Up pad", MAP_DPAD_TO_BUTTONS, XTYPE_XBOX },
- { 0x0e4c, 0x1097, "Radica Gamester Controller", 0, XTYPE_XBOX },
- { 0x0e4c, 0x2390, "Radica Games Jtech Controller", 0, XTYPE_XBOX },
- { 0x0e6f, 0x0003, "Logic3 Freebird wireless Controller", 0, XTYPE_XBOX },
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0108-HID-add-support-for-2012-MacBook-Pro-Retina.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0108-HID-add-support-for-2012-MacBook-Pro-Retina.patch
deleted file mode 100644
index fd76af3..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0108-HID-add-support-for-2012-MacBook-Pro-Retina.patch
+++ /dev/null
@@ -1,85 +0,0 @@
-From 4be420efc64c25fbe44fbc002e74c117d652a1d5 Mon Sep 17 00:00:00 2001
-From: Ryan Bourgeois <bluedragonx at gmail.com>
-Date: Tue, 10 Jul 2012 09:43:33 -0700
-Subject: [PATCH 108/109] HID: add support for 2012 MacBook Pro Retina
-
-commit b2e6ad7dfe26aac5bf136962d0b11d180b820d44 upstream.
-
-Add support for the 15'' MacBook Pro Retina. The keyboard is
-the same as recent models.
-
-The patch needs to be synchronized with the bcm5974 patch for
-the trackpad - as usual.
-
-Patch originally written by clipcarl (forums.opensuse.org).
-
-[rydberg at euromail.se: Amended mouse ignore lines]
-Signed-off-by: Ryan Bourgeois <bluedragonx at gmail.com>
-Signed-off-by: Henrik Rydberg <rydberg at euromail.se>
-Acked-by: Jiri Kosina <jkosina at suse.cz>
-Signed-off-by: Dmitry Torokhov <dmitry.torokhov at gmail.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/hid/hid-apple.c | 6 ++++++
- drivers/hid/hid-core.c | 6 ++++++
- drivers/hid/hid-ids.h | 3 +++
- 3 files changed, 15 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/hid/hid-apple.c b/drivers/hid/hid-apple.c
-index 299d238..899c712 100644
---- a/drivers/hid/hid-apple.c
-+++ b/drivers/hid/hid-apple.c
-@@ -514,6 +514,12 @@ static const struct hid_device_id apple_devices[] = {
- .driver_data = APPLE_HAS_FN | APPLE_ISO_KEYBOARD },
- { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING5A_JIS),
- .driver_data = APPLE_HAS_FN | APPLE_RDESC_JIS },
-+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING7_ANSI),
-+ .driver_data = APPLE_HAS_FN },
-+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING7_ISO),
-+ .driver_data = APPLE_HAS_FN | APPLE_ISO_KEYBOARD },
-+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING7_JIS),
-+ .driver_data = APPLE_HAS_FN | APPLE_RDESC_JIS },
- { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ANSI),
- .driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN },
- { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ISO),
-diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
-index cfa053e..95430a0 100644
---- a/drivers/hid/hid-core.c
-+++ b/drivers/hid/hid-core.c
-@@ -1374,6 +1374,9 @@ static const struct hid_device_id hid_have_special_driver[] = {
- { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING6A_ANSI) },
- { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING6A_ISO) },
- { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING6A_JIS) },
-+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING7_ANSI) },
-+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING7_ISO) },
-+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING7_JIS) },
- { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ANSI) },
- { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ISO) },
- { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_JIS) },
-@@ -1969,6 +1972,9 @@ static const struct hid_device_id hid_mouse_ignore_list[] = {
- { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING6A_ANSI) },
- { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING6A_ISO) },
- { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING6A_JIS) },
-+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING7_ANSI) },
-+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING7_ISO) },
-+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING7_JIS) },
- { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY) },
- { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY) },
- { }
-diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
-index 07a91a0..7db934d 100644
---- a/drivers/hid/hid-ids.h
-+++ b/drivers/hid/hid-ids.h
-@@ -125,6 +125,9 @@
- #define USB_DEVICE_ID_APPLE_WELLSPRING6_ANSI 0x024c
- #define USB_DEVICE_ID_APPLE_WELLSPRING6_ISO 0x024d
- #define USB_DEVICE_ID_APPLE_WELLSPRING6_JIS 0x024e
-+#define USB_DEVICE_ID_APPLE_WELLSPRING7_ANSI 0x0262
-+#define USB_DEVICE_ID_APPLE_WELLSPRING7_ISO 0x0263
-+#define USB_DEVICE_ID_APPLE_WELLSPRING7_JIS 0x0264
- #define USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ANSI 0x0239
- #define USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ISO 0x023a
- #define USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_JIS 0x023b
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0109-Linux-3.2.24.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0109-Linux-3.2.24.patch
deleted file mode 100644
index 7c4e2ac..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0109-Linux-3.2.24.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From b356d49fb84a5f890bd91feedf0d67078e27a3a9 Mon Sep 17 00:00:00 2001
-From: Ben Hutchings <ben at decadent.org.uk>
-Date: Wed, 25 Jul 2012 04:11:50 +0100
-Subject: [PATCH 109/109] Linux 3.2.24
-
----
- Makefile | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/Makefile b/Makefile
-index 40d1e3b..80bb4fd 100644
---- a/Makefile
-+++ b/Makefile
-@@ -1,6 +1,6 @@
- VERSION = 3
- PATCHLEVEL = 2
--SUBLEVEL = 23
-+SUBLEVEL = 24
- EXTRAVERSION =
- NAME = Saber-toothed Squirrel
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0001-mm-reduce-the-amount-of-work-done-when-updating-min_.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0001-mm-reduce-the-amount-of-work-done-when-updating-min_.patch
deleted file mode 100644
index d7cf581..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0001-mm-reduce-the-amount-of-work-done-when-updating-min_.patch
+++ /dev/null
@@ -1,88 +0,0 @@
-From ce43a5bb3c28d87f36ff91fcc2fc210db2b6fd4b Mon Sep 17 00:00:00 2001
-From: Mel Gorman <mgorman at suse.de>
-Date: Tue, 10 Jan 2012 15:07:14 -0800
-Subject: [PATCH 01/73] mm: reduce the amount of work done when updating
- min_free_kbytes
-
-commit 938929f14cb595f43cd1a4e63e22d36cab1e4a1f upstream.
-
-Stable note: Fixes https://bugzilla.novell.com/show_bug.cgi?id=726210 .
- Large machines with 1TB or more of RAM take a long time to boot
- without this patch and may spew out soft lockup warnings.
-
-When min_free_kbytes is updated, some pageblocks are marked
-MIGRATE_RESERVE. Ordinarily, this work is unnoticable as it happens early
-in boot but on large machines with 1TB of memory, this has been reported
-to delay boot times, probably due to the NUMA distances involved.
-
-The bulk of the work is due to calling calling pageblock_is_reserved() an
-unnecessary amount of times and accessing far more struct page metadata
-than is necessary. This patch significantly reduces the amount of work
-done by setup_zone_migrate_reserve() improving boot times on 1TB machines.
-
-[akpm at linux-foundation.org: coding-style fixes]
-Signed-off-by: Mel Gorman <mgorman at suse.de>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- mm/page_alloc.c | 40 ++++++++++++++++++++++++----------------
- 1 files changed, 24 insertions(+), 16 deletions(-)
-
-diff --git a/mm/page_alloc.c b/mm/page_alloc.c
-index 485be89..cb3460e 100644
---- a/mm/page_alloc.c
-+++ b/mm/page_alloc.c
-@@ -3407,25 +3407,33 @@ static void setup_zone_migrate_reserve(struct zone *zone)
- if (page_to_nid(page) != zone_to_nid(zone))
- continue;
-
-- /* Blocks with reserved pages will never free, skip them. */
-- block_end_pfn = min(pfn + pageblock_nr_pages, end_pfn);
-- if (pageblock_is_reserved(pfn, block_end_pfn))
-- continue;
--
- block_migratetype = get_pageblock_migratetype(page);
-
-- /* If this block is reserved, account for it */
-- if (reserve > 0 && block_migratetype == MIGRATE_RESERVE) {
-- reserve--;
-- continue;
-- }
-+ /* Only test what is necessary when the reserves are not met */
-+ if (reserve > 0) {
-+ /*
-+ * Blocks with reserved pages will never free, skip
-+ * them.
-+ */
-+ block_end_pfn = min(pfn + pageblock_nr_pages, end_pfn);
-+ if (pageblock_is_reserved(pfn, block_end_pfn))
-+ continue;
-
-- /* Suitable for reserving if this block is movable */
-- if (reserve > 0 && block_migratetype == MIGRATE_MOVABLE) {
-- set_pageblock_migratetype(page, MIGRATE_RESERVE);
-- move_freepages_block(zone, page, MIGRATE_RESERVE);
-- reserve--;
-- continue;
-+ /* If this block is reserved, account for it */
-+ if (block_migratetype == MIGRATE_RESERVE) {
-+ reserve--;
-+ continue;
-+ }
-+
-+ /* Suitable for reserving if this block is movable */
-+ if (block_migratetype == MIGRATE_MOVABLE) {
-+ set_pageblock_migratetype(page,
-+ MIGRATE_RESERVE);
-+ move_freepages_block(zone, page,
-+ MIGRATE_RESERVE);
-+ reserve--;
-+ continue;
-+ }
- }
-
- /*
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0002-mm-compaction-allow-compaction-to-isolate-dirty-page.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0002-mm-compaction-allow-compaction-to-isolate-dirty-page.patch
deleted file mode 100644
index cbcecd1..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0002-mm-compaction-allow-compaction-to-isolate-dirty-page.patch
+++ /dev/null
@@ -1,436 +0,0 @@
-From 50bec8b86d1ffdec691586e017499cb3f5e0b6a0 Mon Sep 17 00:00:00 2001
-From: Mel Gorman <mgorman at suse.de>
-Date: Thu, 12 Jan 2012 17:19:22 -0800
-Subject: [PATCH 02/73] mm: compaction: allow compaction to isolate dirty
- pages
-
-commit a77ebd333cd810d7b680d544be88c875131c2bd3 upstream.
-
-Stable note: Not tracked in Bugzilla. A fix aimed at preserving page aging
- information by reducing LRU list churning had the side-effect of
- reducing THP allocation success rates. This was part of a series
- to restore the success rates while preserving the reclaim fix.
-
-Short summary: There are severe stalls when a USB stick using VFAT is
-used with THP enabled that are reduced by this series. If you are
-experiencing this problem, please test and report back and considering I
-have seen complaints from openSUSE and Fedora users on this as well as a
-few private mails, I'm guessing it's a widespread issue. This is a new
-type of USB-related stall because it is due to synchronous compaction
-writing where as in the past the big problem was dirty pages reaching
-the end of the LRU and being written by reclaim.
-
-Am cc'ing Andrew this time and this series would replace
-mm-do-not-stall-in-synchronous-compaction-for-thp-allocations.patch.
-I'm also cc'ing Dave Jones as he might have merged that patch to Fedora
-for wider testing and ideally it would be reverted and replaced by this
-series.
-
-That said, the later patches could really do with some review. If this
-series is not the answer then a new direction needs to be discussed
-because as it is, the stalls are unacceptable as the results in this
-leader show.
-
-For testers that try backporting this to 3.1, it won't work because
-there is a non-obvious dependency on not writing back pages in direct
-reclaim so you need those patches too.
-
-Changelog since V5
-o Rebase to 3.2-rc5
-o Tidy up the changelogs a bit
-
-Changelog since V4
-o Added reviewed-bys, credited Andrea properly for sync-light
-o Allow dirty pages without mappings to be considered for migration
-o Bound the number of pages freed for compaction
-o Isolate PageReclaim pages on their own LRU list
-
-This is against 3.2-rc5 and follows on from discussions on "mm: Do
-not stall in synchronous compaction for THP allocations" and "[RFC
-PATCH 0/5] Reduce compaction-related stalls". Initially, the proposed
-patch eliminated stalls due to compaction which sometimes resulted in
-user-visible interactivity problems on browsers by simply never using
-sync compaction. The downside was that THP success allocation rates
-were lower because dirty pages were not being migrated as reported by
-Andrea. His approach at fixing this was nacked on the grounds that
-it reverted fixes from Rik merged that reduced the amount of pages
-reclaimed as it severely impacted his workloads performance.
-
-This series attempts to reconcile the requirements of maximising THP
-usage, without stalling in a user-visible fashion due to compaction
-or cheating by reclaiming an excessive number of pages.
-
-Patch 1 partially reverts commit 39deaf85 to allow migration to isolate
- dirty pages. This is because migration can move some dirty
- pages without blocking.
-
-Patch 2 notes that the /proc/sys/vm/compact_memory handler is not using
- synchronous compaction when it should be. This is unrelated
- to the reported stalls but is worth fixing.
-
-Patch 3 checks if we isolated a compound page during lumpy scan and
- account for it properly. For the most part, this affects
- tracing so it's unrelated to the stalls but worth fixing.
-
-Patch 4 notes that it is possible to abort reclaim early for compaction
- and return 0 to the page allocator potentially entering the
- "may oom" path. This has not been observed in practice but
- the rest of the series potentially makes it easier to happen.
-
-Patch 5 adds a sync parameter to the migratepage callback and gives
- the callback responsibility for migrating the page without
- blocking if sync==false. For example, fallback_migrate_page
- will not call writepage if sync==false. This increases the
- number of pages that can be handled by asynchronous compaction
- thereby reducing stalls.
-
-Patch 6 restores filter-awareness to isolate_lru_page for migration.
- In practice, it means that pages under writeback and pages
- without a ->migratepage callback will not be isolated
- for migration.
-
-Patch 7 avoids calling direct reclaim if compaction is deferred but
- makes sure that compaction is only deferred if sync
- compaction was used.
-
-Patch 8 introduces a sync-light migration mechanism that sync compaction
- uses. The objective is to allow some stalls but to not call
- ->writepage which can lead to significant user-visible stalls.
-
-Patch 9 notes that while we want to abort reclaim ASAP to allow
- compation to go ahead that we leave a very small window of
- opportunity for compaction to run. This patch allows more pages
- to be freed by reclaim but bounds the number to a reasonable
- level based on the high watermark on each zone.
-
-Patch 10 allows slabs to be shrunk even after compaction_ready() is
- true for one zone. This is to avoid a problem whereby a single
- small zone can abort reclaim even though no pages have been
- reclaimed and no suitably large zone is in a usable state.
-
-Patch 11 fixes a problem with the rate of page scanning. As reclaim is
- rarely stalling on pages under writeback it means that scan
- rates are very high. This is particularly true for direct
- reclaim which is not calling writepage. The vmstat figures
- implied that much of this was busy work with PageReclaim pages
- marked for immediate reclaim. This patch is a prototype that
- moves these pages to their own LRU list.
-
-This has been tested and other than 2 USB keys getting trashed,
-nothing horrible fell out. That said, I am a bit unhappy with the
-rescue logic in patch 11 but did not find a better way around it. It
-does significantly reduce scan rates and System CPU time indicating
-it is the right direction to take.
-
-What is of critical importance is that stalls due to compaction
-are massively reduced even though sync compaction was still
-allowed. Testing from people complaining about stalls copying to USBs
-with THP enabled are particularly welcome.
-
-The following tests all involve THP usage and USB keys in some
-way. Each test follows this type of pattern
-
-1. Read from some fast fast storage, be it raw device or file. Each time
- the copy finishes, start again until the test ends
-2. Write a large file to a filesystem on a USB stick. Each time the copy
- finishes, start again until the test ends
-3. When memory is low, start an alloc process that creates a mapping
- the size of physical memory to stress THP allocation. This is the
- "real" part of the test and the part that is meant to trigger
- stalls when THP is enabled. Copying continues in the background.
-4. Record the CPU usage and time to execute of the alloc process
-5. Record the number of THP allocs and fallbacks as well as the number of THP
- pages in use a the end of the test just before alloc exited
-6. Run the test 5 times to get an idea of variability
-7. Between each run, sync is run and caches dropped and the test
- waits until nr_dirty is a small number to avoid interference
- or caching between iterations that would skew the figures.
-
-The individual tests were then
-
-writebackCPDeviceBasevfat
- Disable THP, read from a raw device (sda), vfat on USB stick
-writebackCPDeviceBaseext4
- Disable THP, read from a raw device (sda), ext4 on USB stick
-writebackCPDevicevfat
- THP enabled, read from a raw device (sda), vfat on USB stick
-writebackCPDeviceext4
- THP enabled, read from a raw device (sda), ext4 on USB stick
-writebackCPFilevfat
- THP enabled, read from a file on fast storage and USB, both vfat
-writebackCPFileext4
- THP enabled, read from a file on fast storage and USB, both ext4
-
-The kernels tested were
-
-3.1 3.1
-vanilla 3.2-rc5
-freemore Patches 1-10
-immediate Patches 1-11
-andrea The 8 patches Andrea posted as a basis of comparison
-
-The results are very long unfortunately. I'll start with the case
-where we are not using THP at all
-
-writebackCPDeviceBasevfat
- 3.1.0-vanilla rc5-vanilla freemore-v6r1 isolate-v6r1 andrea-v2r1
-System Time 1.28 ( 0.00%) 54.49 (-4143.46%) 48.63 (-3687.69%) 4.69 ( -265.11%) 51.88 (-3940.81%)
-+/- 0.06 ( 0.00%) 2.45 (-4305.55%) 4.75 (-8430.57%) 7.46 (-13282.76%) 4.76 (-8440.70%)
-User Time 0.09 ( 0.00%) 0.05 ( 40.91%) 0.06 ( 29.55%) 0.07 ( 15.91%) 0.06 ( 27.27%)
-+/- 0.02 ( 0.00%) 0.01 ( 45.39%) 0.02 ( 25.07%) 0.00 ( 77.06%) 0.01 ( 52.24%)
-Elapsed Time 110.27 ( 0.00%) 56.38 ( 48.87%) 49.95 ( 54.70%) 11.77 ( 89.33%) 53.43 ( 51.54%)
-+/- 7.33 ( 0.00%) 3.77 ( 48.61%) 4.94 ( 32.63%) 6.71 ( 8.50%) 4.76 ( 35.03%)
-THP Active 0.00 ( 0.00%) 0.00 ( 0.00%) 0.00 ( 0.00%) 0.00 ( 0.00%) 0.00 ( 0.00%)
-+/- 0.00 ( 0.00%) 0.00 ( 0.00%) 0.00 ( 0.00%) 0.00 ( 0.00%) 0.00 ( 0.00%)
-Fault Alloc 0.00 ( 0.00%) 0.00 ( 0.00%) 0.00 ( 0.00%) 0.00 ( 0.00%) 0.00 ( 0.00%)
-+/- 0.00 ( 0.00%) 0.00 ( 0.00%) 0.00 ( 0.00%) 0.00 ( 0.00%) 0.00 ( 0.00%)
-Fault Fallback 0.00 ( 0.00%) 0.00 ( 0.00%) 0.00 ( 0.00%) 0.00 ( 0.00%) 0.00 ( 0.00%)
-+/- 0.00 ( 0.00%) 0.00 ( 0.00%) 0.00 ( 0.00%) 0.00 ( 0.00%) 0.00 ( 0.00%)
-
-The THP figures are obviously all 0 because THP was enabled. The
-main thing to watch is the elapsed times and how they compare to
-times when THP is enabled later. It's also important to note that
-elapsed time is improved by this series as System CPu time is much
-reduced.
-
-writebackCPDevicevfat
-
- 3.1.0-vanilla rc5-vanilla freemore-v6r1 isolate-v6r1 andrea-v2r1
-System Time 1.22 ( 0.00%) 13.89 (-1040.72%) 46.40 (-3709.20%) 4.44 ( -264.37%) 47.37 (-3789.33%)
-+/- 0.06 ( 0.00%) 22.82 (-37635.56%) 3.84 (-6249.44%) 6.48 (-10618.92%) 6.60
-(-10818.53%)
-User Time 0.06 ( 0.00%) 0.06 ( -6.90%) 0.05 ( 17.24%) 0.05 ( 13.79%) 0.04 ( 31.03%)
-+/- 0.01 ( 0.00%) 0.01 ( 33.33%) 0.01 ( 33.33%) 0.01 ( 39.14%) 0.01 ( 25.46%)
-Elapsed Time 10445.54 ( 0.00%) 2249.92 ( 78.46%) 70.06 ( 99.33%) 16.59 ( 99.84%) 472.43 (
-95.48%)
-+/- 643.98 ( 0.00%) 811.62 ( -26.03%) 10.02 ( 98.44%) 7.03 ( 98.91%) 59.99 ( 90.68%)
-THP Active 15.60 ( 0.00%) 35.20 ( 225.64%) 65.00 ( 416.67%) 70.80 ( 453.85%) 62.20 ( 398.72%)
-+/- 18.48 ( 0.00%) 51.29 ( 277.59%) 15.99 ( 86.52%) 37.91 ( 205.18%) 22.02 ( 119.18%)
-Fault Alloc 121.80 ( 0.00%) 76.60 ( 62.89%) 155.40 ( 127.59%) 181.20 ( 148.77%) 286.60 ( 235.30%)
-+/- 73.51 ( 0.00%) 61.11 ( 83.12%) 34.89 ( 47.46%) 31.88 ( 43.36%) 68.13 ( 92.68%)
-Fault Fallback 881.20 ( 0.00%) 926.60 ( -5.15%) 847.60 ( 3.81%) 822.00 ( 6.72%) 716.60 ( 18.68%)
-+/- 73.51 ( 0.00%) 61.26 ( 16.67%) 34.89 ( 52.54%) 31.65 ( 56.94%) 67.75 ( 7.84%)
-MMTests Statistics: duration
-User/Sys Time Running Test (seconds) 3540.88 1945.37 716.04 64.97 1937.03
-Total Elapsed Time (seconds) 52417.33 11425.90 501.02 230.95 2520.28
-
-The first thing to note is the "Elapsed Time" for the vanilla kernels
-of 2249 seconds versus 56 with THP disabled which might explain the
-reports of USB stalls with THP enabled. Applying the patches brings
-performance in line with THP-disabled performance while isolating
-pages for immediate reclaim from the LRU cuts down System CPU time.
-
-The "Fault Alloc" success rate figures are also improved. The vanilla
-kernel only managed to allocate 76.6 pages on average over the course
-of 5 iterations where as applying the series allocated 181.20 on
-average albeit it is well within variance. It's worth noting that
-applies the series at least descreases the amount of variance which
-implies an improvement.
-
-Andrea's series had a higher success rate for THP allocations but
-at a severe cost to elapsed time which is still better than vanilla
-but still much worse than disabling THP altogether. One can bring my
-series close to Andrea's by removing this check
-
- /*
- * If compaction is deferred for high-order allocations, it is because
- * sync compaction recently failed. In this is the case and the caller
- * has requested the system not be heavily disrupted, fail the
- * allocation now instead of entering direct reclaim
- */
- if (deferred_compaction && (gfp_mask & __GFP_NO_KSWAPD))
- goto nopage;
-
-I didn't include a patch that removed the above check because hurting
-overall performance to improve the THP figure is not what the average
-user wants. It's something to consider though if someone really wants
-to maximise THP usage no matter what it does to the workload initially.
-
-This is summary of vmstat figures from the same test.
-
- 3.1.0-vanilla rc5-vanilla freemore-v6r1 isolate-v6r1 andrea-v2r1
-Page Ins 3257266139 1111844061 17263623 10901575 161423219
-Page Outs 81054922 30364312 3626530 3657687 8753730
-Swap Ins 3294 2851 6560 4964 4592
-Swap Outs 390073 528094 620197 790912 698285
-Direct pages scanned 1077581700 3024951463 1764930052 115140570 5901188831
-Kswapd pages scanned 34826043 7112868 2131265 1686942 1893966
-Kswapd pages reclaimed 28950067 4911036 1246044 966475 1497726
-Direct pages reclaimed 805148398 280167837 3623473 2215044 40809360
-Kswapd efficiency 83% 69% 58% 57% 79%
-Kswapd velocity 664.399 622.521 4253.852 7304.360 751.490
-Direct efficiency 74% 9% 0% 1% 0%
-Direct velocity 20557.737 264745.137 3522673.849 498551.938 2341481.435
-Percentage direct scans 96% 99% 99% 98% 99%
-Page writes by reclaim 722646 529174 620319 791018 699198
-Page writes file 332573 1080 122 106 913
-Page writes anon 390073 528094 620197 790912 698285
-Page reclaim immediate 0 2552514720 1635858848 111281140 5478375032
-Page rescued immediate 0 0 0 87848 0
-Slabs scanned 23552 23552 9216 8192 9216
-Direct inode steals 231 0 0 0 0
-Kswapd inode steals 0 0 0 0 0
-Kswapd skipped wait 28076 786 0 61 6
-THP fault alloc 609 383 753 906 1433
-THP collapse alloc 12 6 0 0 6
-THP splits 536 211 456 593 1136
-THP fault fallback 4406 4633 4263 4110 3583
-THP collapse fail 120 127 0 0 4
-Compaction stalls 1810 728 623 779 3200
-Compaction success 196 53 60 80 123
-Compaction failures 1614 675 563 699 3077
-Compaction pages moved 193158 53545 243185 333457 226688
-Compaction move failure 9952 9396 16424 23676 45070
-
-The main things to look at are
-
-1. Page In/out figures are much reduced by the series.
-
-2. Direct page scanning is incredibly high (264745.137 pages scanned
- per second on the vanilla kernel) but isolating PageReclaim pages
- on their own list reduces the number of pages scanned significantly.
-
-3. The fact that "Page rescued immediate" is a positive number implies
- that we sometimes race removing pages from the LRU_IMMEDIATE list
- that need to be put back on a normal LRU but it happens only for
- 0.07% of the pages marked for immediate reclaim.
-
-writebackCPDeviceext4
- 3.1.0-vanilla rc5-vanilla freemore-v6r1 isolate-v6r1 andrea-v2r1
-System Time 1.51 ( 0.00%) 1.77 ( -17.66%) 1.46 ( 2.92%) 1.15 ( 23.77%) 1.89 ( -25.63%)
-+/- 0.27 ( 0.00%) 0.67 ( -148.52%) 0.33 ( -22.76%) 0.30 ( -11.15%) 0.19 ( 30.16%)
-User Time 0.03 ( 0.00%) 0.04 ( -37.50%) 0.05 ( -62.50%) 0.07 ( -112.50%) 0.04 ( -18.75%)
-+/- 0.01 ( 0.00%) 0.02 ( -146.64%) 0.02 ( -97.91%) 0.02 ( -75.59%) 0.02 ( -63.30%)
-Elapsed Time 124.93 ( 0.00%) 114.49 ( 8.36%) 96.77 ( 22.55%) 27.48 ( 78.00%) 205.70 ( -64.65%)
-+/- 20.20 ( 0.00%) 74.39 ( -268.34%) 59.88 ( -196.48%) 7.72 ( 61.79%) 25.03 ( -23.95%)
-THP Active 161.80 ( 0.00%) 83.60 ( 51.67%) 141.20 ( 87.27%) 84.60 ( 52.29%) 82.60 ( 51.05%)
-+/- 71.95 ( 0.00%) 43.80 ( 60.88%) 26.91 ( 37.40%) 59.02 ( 82.03%) 52.13 ( 72.45%)
-Fault Alloc 471.40 ( 0.00%) 228.60 ( 48.49%) 282.20 ( 59.86%) 225.20 ( 47.77%) 388.40 ( 82.39%)
-+/- 88.07 ( 0.00%) 87.42 ( 99.26%) 73.79 ( 83.78%) 109.62 ( 124.47%) 82.62 ( 93.81%)
-Fault Fallback 531.60 ( 0.00%) 774.60 ( -45.71%) 720.80 ( -35.59%) 777.80 ( -46.31%) 614.80 ( -15.65%)
-+/- 88.07 ( 0.00%) 87.26 ( 0.92%) 73.79 ( 16.22%) 109.62 ( -24.47%) 82.29 ( 6.56%)
-MMTests Statistics: duration
-User/Sys Time Running Test (seconds) 50.22 33.76 30.65 24.14 128.45
-Total Elapsed Time (seconds) 1113.73 1132.19 1029.45 759.49 1707.26
-
-Similar test but the USB stick is using ext4 instead of vfat. As
-ext4 does not use writepage for migration, the large stalls due to
-compaction when THP is enabled are not observed. Still, isolating
-PageReclaim pages on their own list helped completion time largely
-by reducing the number of pages scanned by direct reclaim although
-time spend in congestion_wait could also be a factor.
-
-Again, Andrea's series had far higher success rates for THP allocation
-at the cost of elapsed time. I didn't look too closely but a quick
-look at the vmstat figures tells me kswapd reclaimed 8 times more pages
-than the patch series and direct reclaim reclaimed roughly three times
-as many pages. It follows that if memory is aggressively reclaimed,
-there will be more available for THP.
-
-writebackCPFilevfat
- 3.1.0-vanilla rc5-vanilla freemore-v6r1 isolate-v6r1 andrea-v2r1
-System Time 1.76 ( 0.00%) 29.10 (-1555.52%) 46.01 (-2517.18%) 4.79 ( -172.35%) 54.89 (-3022.53%)
-+/- 0.14 ( 0.00%) 25.61 (-18185.17%) 2.15 (-1434.83%) 6.60 (-4610.03%) 9.75
-(-6863.76%)
-User Time 0.05 ( 0.00%) 0.07 ( -45.83%) 0.05 ( -4.17%) 0.06 ( -29.17%) 0.06 ( -16.67%)
-+/- 0.02 ( 0.00%) 0.02 ( 20.11%) 0.02 ( -3.14%) 0.01 ( 31.58%) 0.01 ( 47.41%)
-Elapsed Time 22520.79 ( 0.00%) 1082.85 ( 95.19%) 73.30 ( 99.67%) 32.43 ( 99.86%) 291.84 ( 98.70%)
-+/- 7277.23 ( 0.00%) 706.29 ( 90.29%) 19.05 ( 99.74%) 17.05 ( 99.77%) 125.55 ( 98.27%)
-THP Active 83.80 ( 0.00%) 12.80 ( 15.27%) 15.60 ( 18.62%) 13.00 ( 15.51%) 0.80 ( 0.95%)
-+/- 66.81 ( 0.00%) 20.19 ( 30.22%) 5.92 ( 8.86%) 15.06 ( 22.54%) 1.17 ( 1.75%)
-Fault Alloc 171.00 ( 0.00%) 67.80 ( 39.65%) 97.40 ( 56.96%) 125.60 ( 73.45%) 133.00 ( 77.78%)
-+/- 82.91 ( 0.00%) 30.69 ( 37.02%) 53.91 ( 65.02%) 55.05 ( 66.40%) 21.19 ( 25.56%)
-Fault Fallback 832.00 ( 0.00%) 935.20 ( -12.40%) 906.00 ( -8.89%) 877.40 ( -5.46%) 870.20 ( -4.59%)
-+/- 82.91 ( 0.00%) 30.69 ( 62.98%) 54.01 ( 34.86%) 55.05 ( 33.60%) 20.91 ( 74.78%)
-MMTests Statistics: duration
-User/Sys Time Running Test (seconds) 7229.81 928.42 704.52 80.68 1330.76
-Total Elapsed Time (seconds) 112849.04 5618.69 571.11 360.54 1664.28
-
-In this case, the test is reading/writing only from filesystems but as
-it's vfat, it's slow due to calling writepage during compaction. Little
-to observe really - the time to complete the test goes way down
-with the series applied and THP allocation success rates go up in
-comparison to 3.2-rc5. The success rates are lower than 3.1.0 but
-the elapsed time for that kernel is abysmal so it is not really a
-sensible comparison.
-
-As before, Andrea's series allocates more THPs at the cost of overall
-performance.
-
-writebackCPFileext4
- 3.1.0-vanilla rc5-vanilla freemore-v6r1 isolate-v6r1 andrea-v2r1
-System Time 1.51 ( 0.00%) 1.77 ( -17.66%) 1.46 ( 2.92%) 1.15 ( 23.77%) 1.89 ( -25.63%)
-+/- 0.27 ( 0.00%) 0.67 ( -148.52%) 0.33 ( -22.76%) 0.30 ( -11.15%) 0.19 ( 30.16%)
-User Time 0.03 ( 0.00%) 0.04 ( -37.50%) 0.05 ( -62.50%) 0.07 ( -112.50%) 0.04 ( -18.75%)
-+/- 0.01 ( 0.00%) 0.02 ( -146.64%) 0.02 ( -97.91%) 0.02 ( -75.59%) 0.02 ( -63.30%)
-Elapsed Time 124.93 ( 0.00%) 114.49 ( 8.36%) 96.77 ( 22.55%) 27.48 ( 78.00%) 205.70 ( -64.65%)
-+/- 20.20 ( 0.00%) 74.39 ( -268.34%) 59.88 ( -196.48%) 7.72 ( 61.79%) 25.03 ( -23.95%)
-THP Active 161.80 ( 0.00%) 83.60 ( 51.67%) 141.20 ( 87.27%) 84.60 ( 52.29%) 82.60 ( 51.05%)
-+/- 71.95 ( 0.00%) 43.80 ( 60.88%) 26.91 ( 37.40%) 59.02 ( 82.03%) 52.13 ( 72.45%)
-Fault Alloc 471.40 ( 0.00%) 228.60 ( 48.49%) 282.20 ( 59.86%) 225.20 ( 47.77%) 388.40 ( 82.39%)
-+/- 88.07 ( 0.00%) 87.42 ( 99.26%) 73.79 ( 83.78%) 109.62 ( 124.47%) 82.62 ( 93.81%)
-Fault Fallback 531.60 ( 0.00%) 774.60 ( -45.71%) 720.80 ( -35.59%) 777.80 ( -46.31%) 614.80 ( -15.65%)
-+/- 88.07 ( 0.00%) 87.26 ( 0.92%) 73.79 ( 16.22%) 109.62 ( -24.47%) 82.29 ( 6.56%)
-MMTests Statistics: duration
-User/Sys Time Running Test (seconds) 50.22 33.76 30.65 24.14 128.45
-Total Elapsed Time (seconds) 1113.73 1132.19 1029.45 759.49 1707.26
-
-Same type of story - elapsed times go down. In this case, allocation
-success rates are roughtly the same. As before, Andrea's has higher
-success rates but takes a lot longer.
-
-Overall the series does reduce latencies and while the tests are
-inherency racy as alloc competes with the cp processes, the variability
-was included. The THP allocation rates are not as high as they could
-be but that is because we would have to be more aggressive about
-reclaim and compaction impacting overall performance.
-
-This patch:
-
-Commit 39deaf85 ("mm: compaction: make isolate_lru_page() filter-aware")
-noted that compaction does not migrate dirty or writeback pages and that
-is was meaningless to pick the page and re-add it to the LRU list.
-
-What was missed during review is that asynchronous migration moves dirty
-pages if their ->migratepage callback is migrate_page() because these can
-be moved without blocking. This potentially impacted hugepage allocation
-success rates by a factor depending on how many dirty pages are in the
-system.
-
-This patch partially reverts 39deaf85 to allow migration to isolate dirty
-pages again. This increases how much compaction disrupts the LRU but that
-is addressed later in the series.
-
-Signed-off-by: Mel Gorman <mgorman at suse.de>
-Reviewed-by: Andrea Arcangeli <aarcange at redhat.com>
-Reviewed-by: Rik van Riel <riel at redhat.com>
-Reviewed-by: Minchan Kim <minchan.kim at gmail.com>
-Cc: Dave Jones <davej at redhat.com>
-Cc: Jan Kara <jack at suse.cz>
-Cc: Andy Isaacson <adi at hexapodia.org>
-Cc: Nai Xia <nai.xia at gmail.com>
-Cc: Johannes Weiner <jweiner at redhat.com>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- mm/compaction.c | 3 ---
- 1 files changed, 0 insertions(+), 3 deletions(-)
-
-diff --git a/mm/compaction.c b/mm/compaction.c
-index 50f1c60..b81625d 100644
---- a/mm/compaction.c
-+++ b/mm/compaction.c
-@@ -371,9 +371,6 @@ static isolate_migrate_t isolate_migratepages(struct zone *zone,
- continue;
- }
-
-- if (!cc->sync)
-- mode |= ISOLATE_CLEAN;
--
- /* Try isolate the page */
- if (__isolate_lru_page(page, mode, 0) != 0)
- continue;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0003-mm-compaction-determine-if-dirty-pages-can-be-migrat.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0003-mm-compaction-determine-if-dirty-pages-can-be-migrat.patch
deleted file mode 100644
index b6a461b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0003-mm-compaction-determine-if-dirty-pages-can-be-migrat.patch
+++ /dev/null
@@ -1,376 +0,0 @@
-From 45d9f4db29d9a2f44900c90ab81514c7e04cb1b9 Mon Sep 17 00:00:00 2001
-From: Mel Gorman <mgorman at suse.de>
-Date: Thu, 12 Jan 2012 17:19:34 -0800
-Subject: [PATCH 03/73] mm: compaction: determine if dirty pages can be
- migrated without blocking within ->migratepage
-
-commit b969c4ab9f182a6e1b2a0848be349f99714947b0 upstream.
-
-Stable note: Not tracked in Bugzilla. A fix aimed at preserving page
- aging information by reducing LRU list churning had the side-effect
- of reducing THP allocation success rates. This was part of a series
- to restore the success rates while preserving the reclaim fix.
-
-Asynchronous compaction is used when allocating transparent hugepages to
-avoid blocking for long periods of time. Due to reports of stalling,
-there was a debate on disabling synchronous compaction but this severely
-impacted allocation success rates. Part of the reason was that many dirty
-pages are skipped in asynchronous compaction by the following check;
-
- if (PageDirty(page) && !sync &&
- mapping->a_ops->migratepage != migrate_page)
- rc = -EBUSY;
-
-This skips over all mapping aops using buffer_migrate_page() even though
-it is possible to migrate some of these pages without blocking. This
-patch updates the ->migratepage callback with a "sync" parameter. It is
-the responsibility of the callback to fail gracefully if migration would
-block.
-
-Signed-off-by: Mel Gorman <mgorman at suse.de>
-Reviewed-by: Rik van Riel <riel at redhat.com>
-Cc: Andrea Arcangeli <aarcange at redhat.com>
-Cc: Minchan Kim <minchan.kim at gmail.com>
-Cc: Dave Jones <davej at redhat.com>
-Cc: Jan Kara <jack at suse.cz>
-Cc: Andy Isaacson <adi at hexapodia.org>
-Cc: Nai Xia <nai.xia at gmail.com>
-Cc: Johannes Weiner <jweiner at redhat.com>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/btrfs/disk-io.c | 4 +-
- fs/hugetlbfs/inode.c | 3 +-
- fs/nfs/internal.h | 2 +-
- fs/nfs/write.c | 4 +-
- include/linux/fs.h | 9 ++-
- include/linux/migrate.h | 2 +-
- mm/migrate.c | 129 +++++++++++++++++++++++++++++++++-------------
- 7 files changed, 106 insertions(+), 47 deletions(-)
-
-diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c
-index f44b392..fa7cddf 100644
---- a/fs/btrfs/disk-io.c
-+++ b/fs/btrfs/disk-io.c
-@@ -872,7 +872,7 @@ static int btree_submit_bio_hook(struct inode *inode, int rw, struct bio *bio,
-
- #ifdef CONFIG_MIGRATION
- static int btree_migratepage(struct address_space *mapping,
-- struct page *newpage, struct page *page)
-+ struct page *newpage, struct page *page, bool sync)
- {
- /*
- * we can't safely write a btree page from here,
-@@ -887,7 +887,7 @@ static int btree_migratepage(struct address_space *mapping,
- if (page_has_private(page) &&
- !try_to_release_page(page, GFP_KERNEL))
- return -EAGAIN;
-- return migrate_page(mapping, newpage, page);
-+ return migrate_page(mapping, newpage, page, sync);
- }
- #endif
-
-diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c
-index ebc2f4d..217b771 100644
---- a/fs/hugetlbfs/inode.c
-+++ b/fs/hugetlbfs/inode.c
-@@ -569,7 +569,8 @@ static int hugetlbfs_set_page_dirty(struct page *page)
- }
-
- static int hugetlbfs_migrate_page(struct address_space *mapping,
-- struct page *newpage, struct page *page)
-+ struct page *newpage, struct page *page,
-+ bool sync)
- {
- int rc;
-
-diff --git a/fs/nfs/internal.h b/fs/nfs/internal.h
-index 3f4d957..8d96ed6 100644
---- a/fs/nfs/internal.h
-+++ b/fs/nfs/internal.h
-@@ -330,7 +330,7 @@ void nfs_commit_release_pages(struct nfs_write_data *data);
-
- #ifdef CONFIG_MIGRATION
- extern int nfs_migrate_page(struct address_space *,
-- struct page *, struct page *);
-+ struct page *, struct page *, bool);
- #else
- #define nfs_migrate_page NULL
- #endif
-diff --git a/fs/nfs/write.c b/fs/nfs/write.c
-index 4efd421..31b2461 100644
---- a/fs/nfs/write.c
-+++ b/fs/nfs/write.c
-@@ -1711,7 +1711,7 @@ out_error:
-
- #ifdef CONFIG_MIGRATION
- int nfs_migrate_page(struct address_space *mapping, struct page *newpage,
-- struct page *page)
-+ struct page *page, bool sync)
- {
- /*
- * If PagePrivate is set, then the page is currently associated with
-@@ -1726,7 +1726,7 @@ int nfs_migrate_page(struct address_space *mapping, struct page *newpage,
-
- nfs_fscache_release_page(page, GFP_KERNEL);
-
-- return migrate_page(mapping, newpage, page);
-+ return migrate_page(mapping, newpage, page, sync);
- }
- #endif
-
-diff --git a/include/linux/fs.h b/include/linux/fs.h
-index 43d36b7..2ae90d3 100644
---- a/include/linux/fs.h
-+++ b/include/linux/fs.h
-@@ -609,9 +609,12 @@ struct address_space_operations {
- loff_t offset, unsigned long nr_segs);
- int (*get_xip_mem)(struct address_space *, pgoff_t, int,
- void **, unsigned long *);
-- /* migrate the contents of a page to the specified target */
-+ /*
-+ * migrate the contents of a page to the specified target. If sync
-+ * is false, it must not block.
-+ */
- int (*migratepage) (struct address_space *,
-- struct page *, struct page *);
-+ struct page *, struct page *, bool);
- int (*launder_page) (struct page *);
- int (*is_partially_uptodate) (struct page *, read_descriptor_t *,
- unsigned long);
-@@ -2586,7 +2589,7 @@ extern int generic_check_addressable(unsigned, u64);
-
- #ifdef CONFIG_MIGRATION
- extern int buffer_migrate_page(struct address_space *,
-- struct page *, struct page *);
-+ struct page *, struct page *, bool);
- #else
- #define buffer_migrate_page NULL
- #endif
-diff --git a/include/linux/migrate.h b/include/linux/migrate.h
-index e39aeec..14e6d2a 100644
---- a/include/linux/migrate.h
-+++ b/include/linux/migrate.h
-@@ -11,7 +11,7 @@ typedef struct page *new_page_t(struct page *, unsigned long private, int **);
-
- extern void putback_lru_pages(struct list_head *l);
- extern int migrate_page(struct address_space *,
-- struct page *, struct page *);
-+ struct page *, struct page *, bool);
- extern int migrate_pages(struct list_head *l, new_page_t x,
- unsigned long private, bool offlining,
- bool sync);
-diff --git a/mm/migrate.c b/mm/migrate.c
-index 177aca4..65c12d2 100644
---- a/mm/migrate.c
-+++ b/mm/migrate.c
-@@ -220,6 +220,55 @@ out:
- pte_unmap_unlock(ptep, ptl);
- }
-
-+#ifdef CONFIG_BLOCK
-+/* Returns true if all buffers are successfully locked */
-+static bool buffer_migrate_lock_buffers(struct buffer_head *head, bool sync)
-+{
-+ struct buffer_head *bh = head;
-+
-+ /* Simple case, sync compaction */
-+ if (sync) {
-+ do {
-+ get_bh(bh);
-+ lock_buffer(bh);
-+ bh = bh->b_this_page;
-+
-+ } while (bh != head);
-+
-+ return true;
-+ }
-+
-+ /* async case, we cannot block on lock_buffer so use trylock_buffer */
-+ do {
-+ get_bh(bh);
-+ if (!trylock_buffer(bh)) {
-+ /*
-+ * We failed to lock the buffer and cannot stall in
-+ * async migration. Release the taken locks
-+ */
-+ struct buffer_head *failed_bh = bh;
-+ put_bh(failed_bh);
-+ bh = head;
-+ while (bh != failed_bh) {
-+ unlock_buffer(bh);
-+ put_bh(bh);
-+ bh = bh->b_this_page;
-+ }
-+ return false;
-+ }
-+
-+ bh = bh->b_this_page;
-+ } while (bh != head);
-+ return true;
-+}
-+#else
-+static inline bool buffer_migrate_lock_buffers(struct buffer_head *head,
-+ bool sync)
-+{
-+ return true;
-+}
-+#endif /* CONFIG_BLOCK */
-+
- /*
- * Replace the page in the mapping.
- *
-@@ -229,7 +278,8 @@ out:
- * 3 for pages with a mapping and PagePrivate/PagePrivate2 set.
- */
- static int migrate_page_move_mapping(struct address_space *mapping,
-- struct page *newpage, struct page *page)
-+ struct page *newpage, struct page *page,
-+ struct buffer_head *head, bool sync)
- {
- int expected_count;
- void **pslot;
-@@ -259,6 +309,19 @@ static int migrate_page_move_mapping(struct address_space *mapping,
- }
-
- /*
-+ * In the async migration case of moving a page with buffers, lock the
-+ * buffers using trylock before the mapping is moved. If the mapping
-+ * was moved, we later failed to lock the buffers and could not move
-+ * the mapping back due to an elevated page count, we would have to
-+ * block waiting on other references to be dropped.
-+ */
-+ if (!sync && head && !buffer_migrate_lock_buffers(head, sync)) {
-+ page_unfreeze_refs(page, expected_count);
-+ spin_unlock_irq(&mapping->tree_lock);
-+ return -EAGAIN;
-+ }
-+
-+ /*
- * Now we know that no one else is looking at the page.
- */
- get_page(newpage); /* add cache reference */
-@@ -415,13 +478,13 @@ EXPORT_SYMBOL(fail_migrate_page);
- * Pages are locked upon entry and exit.
- */
- int migrate_page(struct address_space *mapping,
-- struct page *newpage, struct page *page)
-+ struct page *newpage, struct page *page, bool sync)
- {
- int rc;
-
- BUG_ON(PageWriteback(page)); /* Writeback must be complete */
-
-- rc = migrate_page_move_mapping(mapping, newpage, page);
-+ rc = migrate_page_move_mapping(mapping, newpage, page, NULL, sync);
-
- if (rc)
- return rc;
-@@ -438,28 +501,28 @@ EXPORT_SYMBOL(migrate_page);
- * exist.
- */
- int buffer_migrate_page(struct address_space *mapping,
-- struct page *newpage, struct page *page)
-+ struct page *newpage, struct page *page, bool sync)
- {
- struct buffer_head *bh, *head;
- int rc;
-
- if (!page_has_buffers(page))
-- return migrate_page(mapping, newpage, page);
-+ return migrate_page(mapping, newpage, page, sync);
-
- head = page_buffers(page);
-
-- rc = migrate_page_move_mapping(mapping, newpage, page);
-+ rc = migrate_page_move_mapping(mapping, newpage, page, head, sync);
-
- if (rc)
- return rc;
-
-- bh = head;
-- do {
-- get_bh(bh);
-- lock_buffer(bh);
-- bh = bh->b_this_page;
--
-- } while (bh != head);
-+ /*
-+ * In the async case, migrate_page_move_mapping locked the buffers
-+ * with an IRQ-safe spinlock held. In the sync case, the buffers
-+ * need to be locked now
-+ */
-+ if (sync)
-+ BUG_ON(!buffer_migrate_lock_buffers(head, sync));
-
- ClearPagePrivate(page);
- set_page_private(newpage, page_private(page));
-@@ -536,10 +599,13 @@ static int writeout(struct address_space *mapping, struct page *page)
- * Default handling if a filesystem does not provide a migration function.
- */
- static int fallback_migrate_page(struct address_space *mapping,
-- struct page *newpage, struct page *page)
-+ struct page *newpage, struct page *page, bool sync)
- {
-- if (PageDirty(page))
-+ if (PageDirty(page)) {
-+ if (!sync)
-+ return -EBUSY;
- return writeout(mapping, page);
-+ }
-
- /*
- * Buffers may be managed in a filesystem specific way.
-@@ -549,7 +615,7 @@ static int fallback_migrate_page(struct address_space *mapping,
- !try_to_release_page(page, GFP_KERNEL))
- return -EAGAIN;
-
-- return migrate_page(mapping, newpage, page);
-+ return migrate_page(mapping, newpage, page, sync);
- }
-
- /*
-@@ -585,29 +651,18 @@ static int move_to_new_page(struct page *newpage, struct page *page,
-
- mapping = page_mapping(page);
- if (!mapping)
-- rc = migrate_page(mapping, newpage, page);
-- else {
-+ rc = migrate_page(mapping, newpage, page, sync);
-+ else if (mapping->a_ops->migratepage)
- /*
-- * Do not writeback pages if !sync and migratepage is
-- * not pointing to migrate_page() which is nonblocking
-- * (swapcache/tmpfs uses migratepage = migrate_page).
-+ * Most pages have a mapping and most filesystems provide a
-+ * migratepage callback. Anonymous pages are part of swap
-+ * space which also has its own migratepage callback. This
-+ * is the most common path for page migration.
- */
-- if (PageDirty(page) && !sync &&
-- mapping->a_ops->migratepage != migrate_page)
-- rc = -EBUSY;
-- else if (mapping->a_ops->migratepage)
-- /*
-- * Most pages have a mapping and most filesystems
-- * should provide a migration function. Anonymous
-- * pages are part of swap space which also has its
-- * own migration function. This is the most common
-- * path for page migration.
-- */
-- rc = mapping->a_ops->migratepage(mapping,
-- newpage, page);
-- else
-- rc = fallback_migrate_page(mapping, newpage, page);
-- }
-+ rc = mapping->a_ops->migratepage(mapping,
-+ newpage, page, sync);
-+ else
-+ rc = fallback_migrate_page(mapping, newpage, page, sync);
-
- if (rc) {
- newpage->mapping = NULL;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0004-mm-page-allocator-do-not-call-direct-reclaim-for-THP.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0004-mm-page-allocator-do-not-call-direct-reclaim-for-THP.patch
deleted file mode 100644
index 7d71a05..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0004-mm-page-allocator-do-not-call-direct-reclaim-for-THP.patch
+++ /dev/null
@@ -1,143 +0,0 @@
-From 246126d86b5c74067beda5a972d4c0e1a03ec9ef Mon Sep 17 00:00:00 2001
-From: Mel Gorman <mgorman at suse.de>
-Date: Thu, 12 Jan 2012 17:19:41 -0800
-Subject: [PATCH 04/73] mm: page allocator: do not call direct reclaim for THP
- allocations while compaction is deferred
-
-commit 66199712e9eef5aede09dbcd9dfff87798a66917 upstream.
-
-Stable note: Not tracked in Buzilla. This was part of a series that
- reduced interactivity stalls experienced when THP was enabled.
-
-If compaction is deferred, direct reclaim is used to try to free enough
-pages for the allocation to succeed. For small high-orders, this has a
-reasonable chance of success. However, if the caller has specified
-__GFP_NO_KSWAPD to limit the disruption to the system, it makes more sense
-to fail the allocation rather than stall the caller in direct reclaim.
-This patch skips direct reclaim if compaction is deferred and the caller
-specifies __GFP_NO_KSWAPD.
-
-Async compaction only considers a subset of pages so it is possible for
-compaction to be deferred prematurely and not enter direct reclaim even in
-cases where it should. To compensate for this, this patch also defers
-compaction only if sync compaction failed.
-
-Signed-off-by: Mel Gorman <mgorman at suse.de>
-Acked-by: Minchan Kim <minchan.kim at gmail.com>
-Reviewed-by: Rik van Riel<riel at redhat.com>
-Cc: Andrea Arcangeli <aarcange at redhat.com>
-Cc: Dave Jones <davej at redhat.com>
-Cc: Jan Kara <jack at suse.cz>
-Cc: Andy Isaacson <adi at hexapodia.org>
-Cc: Nai Xia <nai.xia at gmail.com>
-Cc: Johannes Weiner <jweiner at redhat.com>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- mm/page_alloc.c | 45 +++++++++++++++++++++++++++++++++++----------
- 1 files changed, 35 insertions(+), 10 deletions(-)
-
-diff --git a/mm/page_alloc.c b/mm/page_alloc.c
-index cb3460e..ef6e1a1 100644
---- a/mm/page_alloc.c
-+++ b/mm/page_alloc.c
-@@ -1886,14 +1886,20 @@ static struct page *
- __alloc_pages_direct_compact(gfp_t gfp_mask, unsigned int order,
- struct zonelist *zonelist, enum zone_type high_zoneidx,
- nodemask_t *nodemask, int alloc_flags, struct zone *preferred_zone,
-- int migratetype, unsigned long *did_some_progress,
-- bool sync_migration)
-+ int migratetype, bool sync_migration,
-+ bool *deferred_compaction,
-+ unsigned long *did_some_progress)
- {
- struct page *page;
-
-- if (!order || compaction_deferred(preferred_zone))
-+ if (!order)
- return NULL;
-
-+ if (compaction_deferred(preferred_zone)) {
-+ *deferred_compaction = true;
-+ return NULL;
-+ }
-+
- current->flags |= PF_MEMALLOC;
- *did_some_progress = try_to_compact_pages(zonelist, order, gfp_mask,
- nodemask, sync_migration);
-@@ -1921,7 +1927,13 @@ __alloc_pages_direct_compact(gfp_t gfp_mask, unsigned int order,
- * but not enough to satisfy watermarks.
- */
- count_vm_event(COMPACTFAIL);
-- defer_compaction(preferred_zone);
-+
-+ /*
-+ * As async compaction considers a subset of pageblocks, only
-+ * defer if the failure was a sync compaction failure.
-+ */
-+ if (sync_migration)
-+ defer_compaction(preferred_zone);
-
- cond_resched();
- }
-@@ -1933,8 +1945,9 @@ static inline struct page *
- __alloc_pages_direct_compact(gfp_t gfp_mask, unsigned int order,
- struct zonelist *zonelist, enum zone_type high_zoneidx,
- nodemask_t *nodemask, int alloc_flags, struct zone *preferred_zone,
-- int migratetype, unsigned long *did_some_progress,
-- bool sync_migration)
-+ int migratetype, bool sync_migration,
-+ bool *deferred_compaction,
-+ unsigned long *did_some_progress)
- {
- return NULL;
- }
-@@ -2084,6 +2097,7 @@ __alloc_pages_slowpath(gfp_t gfp_mask, unsigned int order,
- unsigned long pages_reclaimed = 0;
- unsigned long did_some_progress;
- bool sync_migration = false;
-+ bool deferred_compaction = false;
-
- /*
- * In the slowpath, we sanity check order to avoid ever trying to
-@@ -2164,12 +2178,22 @@ rebalance:
- zonelist, high_zoneidx,
- nodemask,
- alloc_flags, preferred_zone,
-- migratetype, &did_some_progress,
-- sync_migration);
-+ migratetype, sync_migration,
-+ &deferred_compaction,
-+ &did_some_progress);
- if (page)
- goto got_pg;
- sync_migration = true;
-
-+ /*
-+ * If compaction is deferred for high-order allocations, it is because
-+ * sync compaction recently failed. In this is the case and the caller
-+ * has requested the system not be heavily disrupted, fail the
-+ * allocation now instead of entering direct reclaim
-+ */
-+ if (deferred_compaction && (gfp_mask & __GFP_NO_KSWAPD))
-+ goto nopage;
-+
- /* Try direct reclaim and then allocating */
- page = __alloc_pages_direct_reclaim(gfp_mask, order,
- zonelist, high_zoneidx,
-@@ -2232,8 +2256,9 @@ rebalance:
- zonelist, high_zoneidx,
- nodemask,
- alloc_flags, preferred_zone,
-- migratetype, &did_some_progress,
-- sync_migration);
-+ migratetype, sync_migration,
-+ &deferred_compaction,
-+ &did_some_progress);
- if (page)
- goto got_pg;
- }
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0005-mm-compaction-make-isolate_lru_page-filter-aware-aga.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0005-mm-compaction-make-isolate_lru_page-filter-aware-aga.patch
deleted file mode 100644
index 1cf5109..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0005-mm-compaction-make-isolate_lru_page-filter-aware-aga.patch
+++ /dev/null
@@ -1,117 +0,0 @@
-From 67c64d699499fd5b83ca0be6f66eaca18cc29601 Mon Sep 17 00:00:00 2001
-From: Mel Gorman <mgorman at suse.de>
-Date: Thu, 12 Jan 2012 17:19:38 -0800
-Subject: [PATCH 05/73] mm: compaction: make isolate_lru_page() filter-aware
- again
-
-commit c82449352854ff09e43062246af86bdeb628f0c3 upstream.
-
-Stable note: Not tracked in Bugzilla. A fix aimed at preserving page aging
- information by reducing LRU list churning had the side-effect of
- reducing THP allocation success rates. This was part of a series
- to restore the success rates while preserving the reclaim fix.
-
-Commit 39deaf85 ("mm: compaction: make isolate_lru_page() filter-aware")
-noted that compaction does not migrate dirty or writeback pages and that
-is was meaningless to pick the page and re-add it to the LRU list. This
-had to be partially reverted because some dirty pages can be migrated by
-compaction without blocking.
-
-This patch updates "mm: compaction: make isolate_lru_page" by skipping
-over pages that migration has no possibility of migrating to minimise LRU
-disruption.
-
-Signed-off-by: Mel Gorman <mgorman at suse.de>
-Reviewed-by: Rik van Riel<riel at redhat.com>
-Cc: Andrea Arcangeli <aarcange at redhat.com>
-Reviewed-by: Minchan Kim <minchan at kernel.org>
-Cc: Dave Jones <davej at redhat.com>
-Cc: Jan Kara <jack at suse.cz>
-Cc: Andy Isaacson <adi at hexapodia.org>
-Cc: Nai Xia <nai.xia at gmail.com>
-Cc: Johannes Weiner <jweiner at redhat.com>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- include/linux/mmzone.h | 2 ++
- mm/compaction.c | 3 +++
- mm/vmscan.c | 35 +++++++++++++++++++++++++++++++++--
- 3 files changed, 38 insertions(+), 2 deletions(-)
-
-diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h
-index 905b1e1..25842b6 100644
---- a/include/linux/mmzone.h
-+++ b/include/linux/mmzone.h
-@@ -173,6 +173,8 @@ static inline int is_unevictable_lru(enum lru_list l)
- #define ISOLATE_CLEAN ((__force isolate_mode_t)0x4)
- /* Isolate unmapped file */
- #define ISOLATE_UNMAPPED ((__force isolate_mode_t)0x8)
-+/* Isolate for asynchronous migration */
-+#define ISOLATE_ASYNC_MIGRATE ((__force isolate_mode_t)0x10)
-
- /* LRU Isolation modes. */
- typedef unsigned __bitwise__ isolate_mode_t;
-diff --git a/mm/compaction.c b/mm/compaction.c
-index b81625d..979a919 100644
---- a/mm/compaction.c
-+++ b/mm/compaction.c
-@@ -371,6 +371,9 @@ static isolate_migrate_t isolate_migratepages(struct zone *zone,
- continue;
- }
-
-+ if (!cc->sync)
-+ mode |= ISOLATE_ASYNC_MIGRATE;
-+
- /* Try isolate the page */
- if (__isolate_lru_page(page, mode, 0) != 0)
- continue;
-diff --git a/mm/vmscan.c b/mm/vmscan.c
-index 8342119..1b95e4c 100644
---- a/mm/vmscan.c
-+++ b/mm/vmscan.c
-@@ -1061,8 +1061,39 @@ int __isolate_lru_page(struct page *page, isolate_mode_t mode, int file)
-
- ret = -EBUSY;
-
-- if ((mode & ISOLATE_CLEAN) && (PageDirty(page) || PageWriteback(page)))
-- return ret;
-+ /*
-+ * To minimise LRU disruption, the caller can indicate that it only
-+ * wants to isolate pages it will be able to operate on without
-+ * blocking - clean pages for the most part.
-+ *
-+ * ISOLATE_CLEAN means that only clean pages should be isolated. This
-+ * is used by reclaim when it is cannot write to backing storage
-+ *
-+ * ISOLATE_ASYNC_MIGRATE is used to indicate that it only wants to pages
-+ * that it is possible to migrate without blocking
-+ */
-+ if (mode & (ISOLATE_CLEAN|ISOLATE_ASYNC_MIGRATE)) {
-+ /* All the caller can do on PageWriteback is block */
-+ if (PageWriteback(page))
-+ return ret;
-+
-+ if (PageDirty(page)) {
-+ struct address_space *mapping;
-+
-+ /* ISOLATE_CLEAN means only clean pages */
-+ if (mode & ISOLATE_CLEAN)
-+ return ret;
-+
-+ /*
-+ * Only pages without mappings or that have a
-+ * ->migratepage callback are possible to migrate
-+ * without blocking
-+ */
-+ mapping = page_mapping(page);
-+ if (mapping && !mapping->a_ops->migratepage)
-+ return ret;
-+ }
-+ }
-
- if ((mode & ISOLATE_UNMAPPED) && page_mapped(page))
- return ret;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0006-mm-compaction-introduce-sync-light-migration-for-use.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0006-mm-compaction-introduce-sync-light-migration-for-use.patch
deleted file mode 100644
index 25e33ab..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0006-mm-compaction-introduce-sync-light-migration-for-use.patch
+++ /dev/null
@@ -1,547 +0,0 @@
-From 0fe5ee08804cfadf02801cf6d82f0e2594cd04bd Mon Sep 17 00:00:00 2001
-From: Mel Gorman <mgorman at suse.de>
-Date: Thu, 12 Jan 2012 17:19:43 -0800
-Subject: [PATCH 06/73] mm: compaction: introduce sync-light migration for use
- by compaction
-
-commit a6bc32b899223a877f595ef9ddc1e89ead5072b8 upstream.
-
-Stable note: Not tracked in Buzilla. This was part of a series that
- reduced interactivity stalls experienced when THP was enabled.
- These stalls were particularly noticable when copying data
- to a USB stick but the experiences for users varied a lot.
-
-This patch adds a lightweight sync migrate operation MIGRATE_SYNC_LIGHT
-mode that avoids writing back pages to backing storage. Async compaction
-maps to MIGRATE_ASYNC while sync compaction maps to MIGRATE_SYNC_LIGHT.
-For other migrate_pages users such as memory hotplug, MIGRATE_SYNC is
-used.
-
-This avoids sync compaction stalling for an excessive length of time,
-particularly when copying files to a USB stick where there might be a
-large number of dirty pages backed by a filesystem that does not support
-->writepages.
-
-[aarcange at redhat.com: This patch is heavily based on Andrea's work]
-[akpm at linux-foundation.org: fix fs/nfs/write.c build]
-[akpm at linux-foundation.org: fix fs/btrfs/disk-io.c build]
-Signed-off-by: Mel Gorman <mgorman at suse.de>
-Reviewed-by: Rik van Riel <riel at redhat.com>
-Cc: Andrea Arcangeli <aarcange at redhat.com>
-Cc: Minchan Kim <minchan.kim at gmail.com>
-Cc: Dave Jones <davej at redhat.com>
-Cc: Jan Kara <jack at suse.cz>
-Cc: Andy Isaacson <adi at hexapodia.org>
-Cc: Nai Xia <nai.xia at gmail.com>
-Cc: Johannes Weiner <jweiner at redhat.com>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/btrfs/disk-io.c | 5 ++-
- fs/hugetlbfs/inode.c | 2 +-
- fs/nfs/internal.h | 2 +-
- fs/nfs/write.c | 4 +-
- include/linux/fs.h | 6 ++-
- include/linux/migrate.h | 23 +++++++++++---
- mm/compaction.c | 2 +-
- mm/memory-failure.c | 2 +-
- mm/memory_hotplug.c | 2 +-
- mm/mempolicy.c | 2 +-
- mm/migrate.c | 78 ++++++++++++++++++++++++++---------------------
- 11 files changed, 76 insertions(+), 52 deletions(-)
-
-diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c
-index fa7cddf..6b2a724 100644
---- a/fs/btrfs/disk-io.c
-+++ b/fs/btrfs/disk-io.c
-@@ -872,7 +872,8 @@ static int btree_submit_bio_hook(struct inode *inode, int rw, struct bio *bio,
-
- #ifdef CONFIG_MIGRATION
- static int btree_migratepage(struct address_space *mapping,
-- struct page *newpage, struct page *page, bool sync)
-+ struct page *newpage, struct page *page,
-+ enum migrate_mode mode)
- {
- /*
- * we can't safely write a btree page from here,
-@@ -887,7 +888,7 @@ static int btree_migratepage(struct address_space *mapping,
- if (page_has_private(page) &&
- !try_to_release_page(page, GFP_KERNEL))
- return -EAGAIN;
-- return migrate_page(mapping, newpage, page, sync);
-+ return migrate_page(mapping, newpage, page, mode);
- }
- #endif
-
-diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c
-index 217b771..0aa424a 100644
---- a/fs/hugetlbfs/inode.c
-+++ b/fs/hugetlbfs/inode.c
-@@ -570,7 +570,7 @@ static int hugetlbfs_set_page_dirty(struct page *page)
-
- static int hugetlbfs_migrate_page(struct address_space *mapping,
- struct page *newpage, struct page *page,
-- bool sync)
-+ enum migrate_mode mode)
- {
- int rc;
-
-diff --git a/fs/nfs/internal.h b/fs/nfs/internal.h
-index 8d96ed6..68b3f20 100644
---- a/fs/nfs/internal.h
-+++ b/fs/nfs/internal.h
-@@ -330,7 +330,7 @@ void nfs_commit_release_pages(struct nfs_write_data *data);
-
- #ifdef CONFIG_MIGRATION
- extern int nfs_migrate_page(struct address_space *,
-- struct page *, struct page *, bool);
-+ struct page *, struct page *, enum migrate_mode);
- #else
- #define nfs_migrate_page NULL
- #endif
-diff --git a/fs/nfs/write.c b/fs/nfs/write.c
-index 31b2461..c6e523a 100644
---- a/fs/nfs/write.c
-+++ b/fs/nfs/write.c
-@@ -1711,7 +1711,7 @@ out_error:
-
- #ifdef CONFIG_MIGRATION
- int nfs_migrate_page(struct address_space *mapping, struct page *newpage,
-- struct page *page, bool sync)
-+ struct page *page, enum migrate_mode mode)
- {
- /*
- * If PagePrivate is set, then the page is currently associated with
-@@ -1726,7 +1726,7 @@ int nfs_migrate_page(struct address_space *mapping, struct page *newpage,
-
- nfs_fscache_release_page(page, GFP_KERNEL);
-
-- return migrate_page(mapping, newpage, page, sync);
-+ return migrate_page(mapping, newpage, page, mode);
- }
- #endif
-
-diff --git a/include/linux/fs.h b/include/linux/fs.h
-index 2ae90d3..29b6353 100644
---- a/include/linux/fs.h
-+++ b/include/linux/fs.h
-@@ -525,6 +525,7 @@ enum positive_aop_returns {
- struct page;
- struct address_space;
- struct writeback_control;
-+enum migrate_mode;
-
- struct iov_iter {
- const struct iovec *iov;
-@@ -614,7 +615,7 @@ struct address_space_operations {
- * is false, it must not block.
- */
- int (*migratepage) (struct address_space *,
-- struct page *, struct page *, bool);
-+ struct page *, struct page *, enum migrate_mode);
- int (*launder_page) (struct page *);
- int (*is_partially_uptodate) (struct page *, read_descriptor_t *,
- unsigned long);
-@@ -2589,7 +2590,8 @@ extern int generic_check_addressable(unsigned, u64);
-
- #ifdef CONFIG_MIGRATION
- extern int buffer_migrate_page(struct address_space *,
-- struct page *, struct page *, bool);
-+ struct page *, struct page *,
-+ enum migrate_mode);
- #else
- #define buffer_migrate_page NULL
- #endif
-diff --git a/include/linux/migrate.h b/include/linux/migrate.h
-index 14e6d2a..eaf8674 100644
---- a/include/linux/migrate.h
-+++ b/include/linux/migrate.h
-@@ -6,18 +6,31 @@
-
- typedef struct page *new_page_t(struct page *, unsigned long private, int **);
-
-+/*
-+ * MIGRATE_ASYNC means never block
-+ * MIGRATE_SYNC_LIGHT in the current implementation means to allow blocking
-+ * on most operations but not ->writepage as the potential stall time
-+ * is too significant
-+ * MIGRATE_SYNC will block when migrating pages
-+ */
-+enum migrate_mode {
-+ MIGRATE_ASYNC,
-+ MIGRATE_SYNC_LIGHT,
-+ MIGRATE_SYNC,
-+};
-+
- #ifdef CONFIG_MIGRATION
- #define PAGE_MIGRATION 1
-
- extern void putback_lru_pages(struct list_head *l);
- extern int migrate_page(struct address_space *,
-- struct page *, struct page *, bool);
-+ struct page *, struct page *, enum migrate_mode);
- extern int migrate_pages(struct list_head *l, new_page_t x,
- unsigned long private, bool offlining,
-- bool sync);
-+ enum migrate_mode mode);
- extern int migrate_huge_pages(struct list_head *l, new_page_t x,
- unsigned long private, bool offlining,
-- bool sync);
-+ enum migrate_mode mode);
-
- extern int fail_migrate_page(struct address_space *,
- struct page *, struct page *);
-@@ -36,10 +49,10 @@ extern int migrate_huge_page_move_mapping(struct address_space *mapping,
- static inline void putback_lru_pages(struct list_head *l) {}
- static inline int migrate_pages(struct list_head *l, new_page_t x,
- unsigned long private, bool offlining,
-- bool sync) { return -ENOSYS; }
-+ enum migrate_mode mode) { return -ENOSYS; }
- static inline int migrate_huge_pages(struct list_head *l, new_page_t x,
- unsigned long private, bool offlining,
-- bool sync) { return -ENOSYS; }
-+ enum migrate_mode mode) { return -ENOSYS; }
-
- static inline int migrate_prep(void) { return -ENOSYS; }
- static inline int migrate_prep_local(void) { return -ENOSYS; }
-diff --git a/mm/compaction.c b/mm/compaction.c
-index 979a919..46973fb 100644
---- a/mm/compaction.c
-+++ b/mm/compaction.c
-@@ -577,7 +577,7 @@ static int compact_zone(struct zone *zone, struct compact_control *cc)
- nr_migrate = cc->nr_migratepages;
- err = migrate_pages(&cc->migratepages, compaction_alloc,
- (unsigned long)cc, false,
-- cc->sync);
-+ cc->sync ? MIGRATE_SYNC_LIGHT : MIGRATE_ASYNC);
- update_nr_listpages(cc);
- nr_remaining = cc->nr_migratepages;
-
-diff --git a/mm/memory-failure.c b/mm/memory-failure.c
-index 06d3479..56080ea 100644
---- a/mm/memory-failure.c
-+++ b/mm/memory-failure.c
-@@ -1557,7 +1557,7 @@ int soft_offline_page(struct page *page, int flags)
- page_is_file_cache(page));
- list_add(&page->lru, &pagelist);
- ret = migrate_pages(&pagelist, new_page, MPOL_MF_MOVE_ALL,
-- 0, true);
-+ 0, MIGRATE_SYNC);
- if (ret) {
- putback_lru_pages(&pagelist);
- pr_info("soft offline: %#lx: migration failed %d, type %lx\n",
-diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
-index 2168489..6629faf 100644
---- a/mm/memory_hotplug.c
-+++ b/mm/memory_hotplug.c
-@@ -809,7 +809,7 @@ do_migrate_range(unsigned long start_pfn, unsigned long end_pfn)
- }
- /* this function returns # of failed pages */
- ret = migrate_pages(&source, hotremove_migrate_alloc, 0,
-- true, true);
-+ true, MIGRATE_SYNC);
- if (ret)
- putback_lru_pages(&source);
- }
-diff --git a/mm/mempolicy.c b/mm/mempolicy.c
-index b26aae2..f2650bc 100644
---- a/mm/mempolicy.c
-+++ b/mm/mempolicy.c
-@@ -942,7 +942,7 @@ static int migrate_to_node(struct mm_struct *mm, int source, int dest,
-
- if (!list_empty(&pagelist)) {
- err = migrate_pages(&pagelist, new_node_page, dest,
-- false, true);
-+ false, MIGRATE_SYNC);
- if (err)
- putback_lru_pages(&pagelist);
- }
-diff --git a/mm/migrate.c b/mm/migrate.c
-index 65c12d2..180d97f 100644
---- a/mm/migrate.c
-+++ b/mm/migrate.c
-@@ -222,12 +222,13 @@ out:
-
- #ifdef CONFIG_BLOCK
- /* Returns true if all buffers are successfully locked */
--static bool buffer_migrate_lock_buffers(struct buffer_head *head, bool sync)
-+static bool buffer_migrate_lock_buffers(struct buffer_head *head,
-+ enum migrate_mode mode)
- {
- struct buffer_head *bh = head;
-
- /* Simple case, sync compaction */
-- if (sync) {
-+ if (mode != MIGRATE_ASYNC) {
- do {
- get_bh(bh);
- lock_buffer(bh);
-@@ -263,7 +264,7 @@ static bool buffer_migrate_lock_buffers(struct buffer_head *head, bool sync)
- }
- #else
- static inline bool buffer_migrate_lock_buffers(struct buffer_head *head,
-- bool sync)
-+ enum migrate_mode mode)
- {
- return true;
- }
-@@ -279,7 +280,7 @@ static inline bool buffer_migrate_lock_buffers(struct buffer_head *head,
- */
- static int migrate_page_move_mapping(struct address_space *mapping,
- struct page *newpage, struct page *page,
-- struct buffer_head *head, bool sync)
-+ struct buffer_head *head, enum migrate_mode mode)
- {
- int expected_count;
- void **pslot;
-@@ -315,7 +316,8 @@ static int migrate_page_move_mapping(struct address_space *mapping,
- * the mapping back due to an elevated page count, we would have to
- * block waiting on other references to be dropped.
- */
-- if (!sync && head && !buffer_migrate_lock_buffers(head, sync)) {
-+ if (mode == MIGRATE_ASYNC && head &&
-+ !buffer_migrate_lock_buffers(head, mode)) {
- page_unfreeze_refs(page, expected_count);
- spin_unlock_irq(&mapping->tree_lock);
- return -EAGAIN;
-@@ -478,13 +480,14 @@ EXPORT_SYMBOL(fail_migrate_page);
- * Pages are locked upon entry and exit.
- */
- int migrate_page(struct address_space *mapping,
-- struct page *newpage, struct page *page, bool sync)
-+ struct page *newpage, struct page *page,
-+ enum migrate_mode mode)
- {
- int rc;
-
- BUG_ON(PageWriteback(page)); /* Writeback must be complete */
-
-- rc = migrate_page_move_mapping(mapping, newpage, page, NULL, sync);
-+ rc = migrate_page_move_mapping(mapping, newpage, page, NULL, mode);
-
- if (rc)
- return rc;
-@@ -501,17 +504,17 @@ EXPORT_SYMBOL(migrate_page);
- * exist.
- */
- int buffer_migrate_page(struct address_space *mapping,
-- struct page *newpage, struct page *page, bool sync)
-+ struct page *newpage, struct page *page, enum migrate_mode mode)
- {
- struct buffer_head *bh, *head;
- int rc;
-
- if (!page_has_buffers(page))
-- return migrate_page(mapping, newpage, page, sync);
-+ return migrate_page(mapping, newpage, page, mode);
-
- head = page_buffers(page);
-
-- rc = migrate_page_move_mapping(mapping, newpage, page, head, sync);
-+ rc = migrate_page_move_mapping(mapping, newpage, page, head, mode);
-
- if (rc)
- return rc;
-@@ -521,8 +524,8 @@ int buffer_migrate_page(struct address_space *mapping,
- * with an IRQ-safe spinlock held. In the sync case, the buffers
- * need to be locked now
- */
-- if (sync)
-- BUG_ON(!buffer_migrate_lock_buffers(head, sync));
-+ if (mode != MIGRATE_ASYNC)
-+ BUG_ON(!buffer_migrate_lock_buffers(head, mode));
-
- ClearPagePrivate(page);
- set_page_private(newpage, page_private(page));
-@@ -599,10 +602,11 @@ static int writeout(struct address_space *mapping, struct page *page)
- * Default handling if a filesystem does not provide a migration function.
- */
- static int fallback_migrate_page(struct address_space *mapping,
-- struct page *newpage, struct page *page, bool sync)
-+ struct page *newpage, struct page *page, enum migrate_mode mode)
- {
- if (PageDirty(page)) {
-- if (!sync)
-+ /* Only writeback pages in full synchronous migration */
-+ if (mode != MIGRATE_SYNC)
- return -EBUSY;
- return writeout(mapping, page);
- }
-@@ -615,7 +619,7 @@ static int fallback_migrate_page(struct address_space *mapping,
- !try_to_release_page(page, GFP_KERNEL))
- return -EAGAIN;
-
-- return migrate_page(mapping, newpage, page, sync);
-+ return migrate_page(mapping, newpage, page, mode);
- }
-
- /*
-@@ -630,7 +634,7 @@ static int fallback_migrate_page(struct address_space *mapping,
- * == 0 - success
- */
- static int move_to_new_page(struct page *newpage, struct page *page,
-- int remap_swapcache, bool sync)
-+ int remap_swapcache, enum migrate_mode mode)
- {
- struct address_space *mapping;
- int rc;
-@@ -651,7 +655,7 @@ static int move_to_new_page(struct page *newpage, struct page *page,
-
- mapping = page_mapping(page);
- if (!mapping)
-- rc = migrate_page(mapping, newpage, page, sync);
-+ rc = migrate_page(mapping, newpage, page, mode);
- else if (mapping->a_ops->migratepage)
- /*
- * Most pages have a mapping and most filesystems provide a
-@@ -660,9 +664,9 @@ static int move_to_new_page(struct page *newpage, struct page *page,
- * is the most common path for page migration.
- */
- rc = mapping->a_ops->migratepage(mapping,
-- newpage, page, sync);
-+ newpage, page, mode);
- else
-- rc = fallback_migrate_page(mapping, newpage, page, sync);
-+ rc = fallback_migrate_page(mapping, newpage, page, mode);
-
- if (rc) {
- newpage->mapping = NULL;
-@@ -677,7 +681,7 @@ static int move_to_new_page(struct page *newpage, struct page *page,
- }
-
- static int __unmap_and_move(struct page *page, struct page *newpage,
-- int force, bool offlining, bool sync)
-+ int force, bool offlining, enum migrate_mode mode)
- {
- int rc = -EAGAIN;
- int remap_swapcache = 1;
-@@ -686,7 +690,7 @@ static int __unmap_and_move(struct page *page, struct page *newpage,
- struct anon_vma *anon_vma = NULL;
-
- if (!trylock_page(page)) {
-- if (!force || !sync)
-+ if (!force || mode == MIGRATE_ASYNC)
- goto out;
-
- /*
-@@ -732,10 +736,12 @@ static int __unmap_and_move(struct page *page, struct page *newpage,
-
- if (PageWriteback(page)) {
- /*
-- * For !sync, there is no point retrying as the retry loop
-- * is expected to be too short for PageWriteback to be cleared
-+ * Only in the case of a full syncronous migration is it
-+ * necessary to wait for PageWriteback. In the async case,
-+ * the retry loop is too short and in the sync-light case,
-+ * the overhead of stalling is too much
- */
-- if (!sync) {
-+ if (mode != MIGRATE_SYNC) {
- rc = -EBUSY;
- goto uncharge;
- }
-@@ -806,7 +812,7 @@ static int __unmap_and_move(struct page *page, struct page *newpage,
-
- skip_unmap:
- if (!page_mapped(page))
-- rc = move_to_new_page(newpage, page, remap_swapcache, sync);
-+ rc = move_to_new_page(newpage, page, remap_swapcache, mode);
-
- if (rc && remap_swapcache)
- remove_migration_ptes(page, page);
-@@ -829,7 +835,8 @@ out:
- * to the newly allocated page in newpage.
- */
- static int unmap_and_move(new_page_t get_new_page, unsigned long private,
-- struct page *page, int force, bool offlining, bool sync)
-+ struct page *page, int force, bool offlining,
-+ enum migrate_mode mode)
- {
- int rc = 0;
- int *result = NULL;
-@@ -847,7 +854,7 @@ static int unmap_and_move(new_page_t get_new_page, unsigned long private,
- if (unlikely(split_huge_page(page)))
- goto out;
-
-- rc = __unmap_and_move(page, newpage, force, offlining, sync);
-+ rc = __unmap_and_move(page, newpage, force, offlining, mode);
- out:
- if (rc != -EAGAIN) {
- /*
-@@ -895,7 +902,8 @@ out:
- */
- static int unmap_and_move_huge_page(new_page_t get_new_page,
- unsigned long private, struct page *hpage,
-- int force, bool offlining, bool sync)
-+ int force, bool offlining,
-+ enum migrate_mode mode)
- {
- int rc = 0;
- int *result = NULL;
-@@ -908,7 +916,7 @@ static int unmap_and_move_huge_page(new_page_t get_new_page,
- rc = -EAGAIN;
-
- if (!trylock_page(hpage)) {
-- if (!force || !sync)
-+ if (!force || mode != MIGRATE_SYNC)
- goto out;
- lock_page(hpage);
- }
-@@ -919,7 +927,7 @@ static int unmap_and_move_huge_page(new_page_t get_new_page,
- try_to_unmap(hpage, TTU_MIGRATION|TTU_IGNORE_MLOCK|TTU_IGNORE_ACCESS);
-
- if (!page_mapped(hpage))
-- rc = move_to_new_page(new_hpage, hpage, 1, sync);
-+ rc = move_to_new_page(new_hpage, hpage, 1, mode);
-
- if (rc)
- remove_migration_ptes(hpage, hpage);
-@@ -962,7 +970,7 @@ out:
- */
- int migrate_pages(struct list_head *from,
- new_page_t get_new_page, unsigned long private, bool offlining,
-- bool sync)
-+ enum migrate_mode mode)
- {
- int retry = 1;
- int nr_failed = 0;
-@@ -983,7 +991,7 @@ int migrate_pages(struct list_head *from,
-
- rc = unmap_and_move(get_new_page, private,
- page, pass > 2, offlining,
-- sync);
-+ mode);
-
- switch(rc) {
- case -ENOMEM:
-@@ -1013,7 +1021,7 @@ out:
-
- int migrate_huge_pages(struct list_head *from,
- new_page_t get_new_page, unsigned long private, bool offlining,
-- bool sync)
-+ enum migrate_mode mode)
- {
- int retry = 1;
- int nr_failed = 0;
-@@ -1030,7 +1038,7 @@ int migrate_huge_pages(struct list_head *from,
-
- rc = unmap_and_move_huge_page(get_new_page,
- private, page, pass > 2, offlining,
-- sync);
-+ mode);
-
- switch(rc) {
- case -ENOMEM:
-@@ -1159,7 +1167,7 @@ set_status:
- err = 0;
- if (!list_empty(&pagelist)) {
- err = migrate_pages(&pagelist, new_page_node,
-- (unsigned long)pm, 0, true);
-+ (unsigned long)pm, 0, MIGRATE_SYNC);
- if (err)
- putback_lru_pages(&pagelist);
- }
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0007-mm-vmscan-when-reclaiming-for-compaction-ensure-ther.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0007-mm-vmscan-when-reclaiming-for-compaction-ensure-ther.patch
deleted file mode 100644
index a3746f1..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0007-mm-vmscan-when-reclaiming-for-compaction-ensure-ther.patch
+++ /dev/null
@@ -1,120 +0,0 @@
-From 70bd5ad826ce15eedd0434f9926730716a1d5c53 Mon Sep 17 00:00:00 2001
-From: Mel Gorman <mgorman at suse.de>
-Date: Thu, 12 Jan 2012 17:19:45 -0800
-Subject: [PATCH 07/73] mm: vmscan: when reclaiming for compaction, ensure
- there are sufficient free pages available
-
-commit fe4b1b244bdb96136855f2c694071cb09d140766 upstream.
-
-Stable note: Not tracked on Bugzilla. THP and compaction was found to
- aggressively reclaim pages and stall systems under different
- situations that was addressed piecemeal over time. This patch
- addresses a problem where the fix regressed THP allocation
- success rates.
-
-In commit e0887c19 ("vmscan: limit direct reclaim for higher order
-allocations"), Rik noted that reclaim was too aggressive when THP was
-enabled. In his initial patch he used the number of free pages to decide
-if reclaim should abort for compaction. My feedback was that reclaim and
-compaction should be using the same logic when deciding if reclaim should
-be aborted.
-
-Unfortunately, this had the effect of reducing THP success rates when the
-workload included something like streaming reads that continually
-allocated pages. The window during which compaction could run and return
-a THP was too small.
-
-This patch combines Rik's two patches together. compaction_suitable() is
-still used to decide if reclaim should be aborted to allow compaction is
-used. However, it will also ensure that there is a reasonable buffer of
-free pages available. This improves upon the THP allocation success rates
-but bounds the number of pages that are freed for compaction.
-
-Signed-off-by: Mel Gorman <mgorman at suse.de>
-Reviewed-by: Rik van Riel<riel at redhat.com>
-Cc: Andrea Arcangeli <aarcange at redhat.com>
-Cc: Minchan Kim <minchan.kim at gmail.com>
-Cc: Dave Jones <davej at redhat.com>
-Cc: Jan Kara <jack at suse.cz>
-Cc: Andy Isaacson <adi at hexapodia.org>
-Cc: Nai Xia <nai.xia at gmail.com>
-Cc: Johannes Weiner <jweiner at redhat.com>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- mm/vmscan.c | 44 +++++++++++++++++++++++++++++++++++++++-----
- 1 files changed, 39 insertions(+), 5 deletions(-)
-
-diff --git a/mm/vmscan.c b/mm/vmscan.c
-index 1b95e4c..fd47744 100644
---- a/mm/vmscan.c
-+++ b/mm/vmscan.c
-@@ -2119,6 +2119,42 @@ restart:
- throttle_vm_writeout(sc->gfp_mask);
- }
-
-+/* Returns true if compaction should go ahead for a high-order request */
-+static inline bool compaction_ready(struct zone *zone, struct scan_control *sc)
-+{
-+ unsigned long balance_gap, watermark;
-+ bool watermark_ok;
-+
-+ /* Do not consider compaction for orders reclaim is meant to satisfy */
-+ if (sc->order <= PAGE_ALLOC_COSTLY_ORDER)
-+ return false;
-+
-+ /*
-+ * Compaction takes time to run and there are potentially other
-+ * callers using the pages just freed. Continue reclaiming until
-+ * there is a buffer of free pages available to give compaction
-+ * a reasonable chance of completing and allocating the page
-+ */
-+ balance_gap = min(low_wmark_pages(zone),
-+ (zone->present_pages + KSWAPD_ZONE_BALANCE_GAP_RATIO-1) /
-+ KSWAPD_ZONE_BALANCE_GAP_RATIO);
-+ watermark = high_wmark_pages(zone) + balance_gap + (2UL << sc->order);
-+ watermark_ok = zone_watermark_ok_safe(zone, 0, watermark, 0, 0);
-+
-+ /*
-+ * If compaction is deferred, reclaim up to a point where
-+ * compaction will have a chance of success when re-enabled
-+ */
-+ if (compaction_deferred(zone))
-+ return watermark_ok;
-+
-+ /* If compaction is not ready to start, keep reclaiming */
-+ if (!compaction_suitable(zone, sc->order))
-+ return false;
-+
-+ return watermark_ok;
-+}
-+
- /*
- * This is the direct reclaim path, for page-allocating processes. We only
- * try to reclaim pages from zones which will satisfy the caller's allocation
-@@ -2136,8 +2172,8 @@ restart:
- * scan then give up on it.
- *
- * This function returns true if a zone is being reclaimed for a costly
-- * high-order allocation and compaction is either ready to begin or deferred.
-- * This indicates to the caller that it should retry the allocation or fail.
-+ * high-order allocation and compaction is ready to begin. This indicates to
-+ * the caller that it should retry the allocation or fail.
- */
- static bool shrink_zones(int priority, struct zonelist *zonelist,
- struct scan_control *sc)
-@@ -2171,9 +2207,7 @@ static bool shrink_zones(int priority, struct zonelist *zonelist,
- * noticable problem, like transparent huge page
- * allocations.
- */
-- if (sc->order > PAGE_ALLOC_COSTLY_ORDER &&
-- (compaction_suitable(zone, sc->order) ||
-- compaction_deferred(zone))) {
-+ if (compaction_ready(zone, sc)) {
- should_abort_reclaim = true;
- continue;
- }
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0008-mm-vmscan-do-not-OOM-if-aborting-reclaim-to-start-co.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0008-mm-vmscan-do-not-OOM-if-aborting-reclaim-to-start-co.patch
deleted file mode 100644
index 3531d78..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0008-mm-vmscan-do-not-OOM-if-aborting-reclaim-to-start-co.patch
+++ /dev/null
@@ -1,71 +0,0 @@
-From c60330596c8497a94d53b80c5b96799b01846248 Mon Sep 17 00:00:00 2001
-From: Mel Gorman <mgorman at suse.de>
-Date: Thu, 12 Jan 2012 17:19:33 -0800
-Subject: [PATCH 08/73] mm: vmscan: do not OOM if aborting reclaim to start
- compaction
-
-commit 7335084d446b83cbcb15da80497d03f0c1dc9e21 upstream.
-
-Stable note: Not tracked in Bugzilla. This patch makes later patches
- easier to apply but otherwise has little to justify it. The
- problem it fixes was never observed but the source of the
- theoretical problem did not exist for very long.
-
-During direct reclaim it is possible that reclaim will be aborted so that
-compaction can be attempted to satisfy a high-order allocation. If this
-decision is made before any pages are reclaimed, it is possible that 0 is
-returned to the page allocator potentially triggering an OOM. This has
-not been observed but it is a possibility so this patch addresses it.
-
-Signed-off-by: Mel Gorman <mgorman at suse.de>
-Reviewed-by: Rik van Riel <riel at redhat.com>
-Cc: Andrea Arcangeli <aarcange at redhat.com>
-Cc: Minchan Kim <minchan.kim at gmail.com>
-Cc: Dave Jones <davej at redhat.com>
-Cc: Jan Kara <jack at suse.cz>
-Cc: Andy Isaacson <adi at hexapodia.org>
-Cc: Nai Xia <nai.xia at gmail.com>
-Cc: Johannes Weiner <jweiner at redhat.com>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- mm/vmscan.c | 8 +++++++-
- 1 files changed, 7 insertions(+), 1 deletions(-)
-
-diff --git a/mm/vmscan.c b/mm/vmscan.c
-index fd47744..662a5ea 100644
---- a/mm/vmscan.c
-+++ b/mm/vmscan.c
-@@ -2284,6 +2284,7 @@ static unsigned long do_try_to_free_pages(struct zonelist *zonelist,
- struct zoneref *z;
- struct zone *zone;
- unsigned long writeback_threshold;
-+ bool should_abort_reclaim;
-
- get_mems_allowed();
- delayacct_freepages_start();
-@@ -2295,7 +2296,8 @@ static unsigned long do_try_to_free_pages(struct zonelist *zonelist,
- sc->nr_scanned = 0;
- if (!priority)
- disable_swap_token(sc->mem_cgroup);
-- if (shrink_zones(priority, zonelist, sc))
-+ should_abort_reclaim = shrink_zones(priority, zonelist, sc);
-+ if (should_abort_reclaim)
- break;
-
- /*
-@@ -2363,6 +2365,10 @@ out:
- if (oom_killer_disabled)
- return 0;
-
-+ /* Aborting reclaim to try compaction? don't OOM, then */
-+ if (should_abort_reclaim)
-+ return 1;
-+
- /* top priority shrink_zones still had more to do? don't OOM, then */
- if (scanning_global_lru(sc) && !all_unreclaimable(zonelist, sc))
- return 1;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0009-mm-vmscan-check-if-reclaim-should-really-abort-even-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0009-mm-vmscan-check-if-reclaim-should-really-abort-even-.patch
deleted file mode 100644
index 76a434d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0009-mm-vmscan-check-if-reclaim-should-really-abort-even-.patch
+++ /dev/null
@@ -1,119 +0,0 @@
-From 0f7e2171b241704ee17ab27e4b8a7ef8c7f1dc32 Mon Sep 17 00:00:00 2001
-From: Mel Gorman <mgorman at suse.de>
-Date: Thu, 12 Jan 2012 17:19:49 -0800
-Subject: [PATCH 09/73] mm: vmscan: check if reclaim should really abort even
- if compaction_ready() is true for one zone
-
-commit 0cee34fd72c582b4f8ad8ce00645b75fb4168199 upstream.
-
-Stable note: Not tracked on Bugzilla. THP and compaction was found to
- aggressively reclaim pages and stall systems under different
- situations that was addressed piecemeal over time.
-
-If compaction can proceed for a given zone, shrink_zones() does not
-reclaim any more pages from it. After commit [e0c2327: vmscan: abort
-reclaim/compaction if compaction can proceed], do_try_to_free_pages()
-tries to finish as soon as possible once one zone can compact.
-
-This was intended to prevent slabs being shrunk unnecessarily but there
-are side-effects. One is that a small zone that is ready for compaction
-will abort reclaim even if the chances of successfully allocating a THP
-from that zone is small. It also means that reclaim can return too early
-even though sc->nr_to_reclaim pages were not reclaimed.
-
-This partially reverts the commit until it is proven that slabs are really
-being shrunk unnecessarily but preserves the check to return 1 to avoid
-OOM if reclaim was aborted prematurely.
-
-[aarcange at redhat.com: This patch replaces a revert from Andrea]
-Signed-off-by: Mel Gorman <mgorman at suse.de>
-Reviewed-by: Rik van Riel <riel at redhat.com>
-Cc: Andrea Arcangeli <aarcange at redhat.com>
-Cc: Minchan Kim <minchan.kim at gmail.com>
-Cc: Dave Jones <davej at redhat.com>
-Cc: Jan Kara <jack at suse.cz>
-Cc: Andy Isaacson <adi at hexapodia.org>
-Cc: Nai Xia <nai.xia at gmail.com>
-Cc: Johannes Weiner <jweiner at redhat.com>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- mm/vmscan.c | 19 +++++++++----------
- 1 files changed, 9 insertions(+), 10 deletions(-)
-
-diff --git a/mm/vmscan.c b/mm/vmscan.c
-index 662a5ea..9e89de6 100644
---- a/mm/vmscan.c
-+++ b/mm/vmscan.c
-@@ -2173,7 +2173,8 @@ static inline bool compaction_ready(struct zone *zone, struct scan_control *sc)
- *
- * This function returns true if a zone is being reclaimed for a costly
- * high-order allocation and compaction is ready to begin. This indicates to
-- * the caller that it should retry the allocation or fail.
-+ * the caller that it should consider retrying the allocation instead of
-+ * further reclaim.
- */
- static bool shrink_zones(int priority, struct zonelist *zonelist,
- struct scan_control *sc)
-@@ -2182,7 +2183,7 @@ static bool shrink_zones(int priority, struct zonelist *zonelist,
- struct zone *zone;
- unsigned long nr_soft_reclaimed;
- unsigned long nr_soft_scanned;
-- bool should_abort_reclaim = false;
-+ bool aborted_reclaim = false;
-
- for_each_zone_zonelist_nodemask(zone, z, zonelist,
- gfp_zone(sc->gfp_mask), sc->nodemask) {
-@@ -2208,7 +2209,7 @@ static bool shrink_zones(int priority, struct zonelist *zonelist,
- * allocations.
- */
- if (compaction_ready(zone, sc)) {
-- should_abort_reclaim = true;
-+ aborted_reclaim = true;
- continue;
- }
- }
-@@ -2230,7 +2231,7 @@ static bool shrink_zones(int priority, struct zonelist *zonelist,
- shrink_zone(priority, zone, sc);
- }
-
-- return should_abort_reclaim;
-+ return aborted_reclaim;
- }
-
- static bool zone_reclaimable(struct zone *zone)
-@@ -2284,7 +2285,7 @@ static unsigned long do_try_to_free_pages(struct zonelist *zonelist,
- struct zoneref *z;
- struct zone *zone;
- unsigned long writeback_threshold;
-- bool should_abort_reclaim;
-+ bool aborted_reclaim;
-
- get_mems_allowed();
- delayacct_freepages_start();
-@@ -2296,9 +2297,7 @@ static unsigned long do_try_to_free_pages(struct zonelist *zonelist,
- sc->nr_scanned = 0;
- if (!priority)
- disable_swap_token(sc->mem_cgroup);
-- should_abort_reclaim = shrink_zones(priority, zonelist, sc);
-- if (should_abort_reclaim)
-- break;
-+ aborted_reclaim = shrink_zones(priority, zonelist, sc);
-
- /*
- * Don't shrink slabs when reclaiming memory from
-@@ -2365,8 +2364,8 @@ out:
- if (oom_killer_disabled)
- return 0;
-
-- /* Aborting reclaim to try compaction? don't OOM, then */
-- if (should_abort_reclaim)
-+ /* Aborted reclaim to try compaction? don't OOM, then */
-+ if (aborted_reclaim)
- return 1;
-
- /* top priority shrink_zones still had more to do? don't OOM, then */
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0010-vmscan-promote-shared-file-mapped-pages.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0010-vmscan-promote-shared-file-mapped-pages.patch
deleted file mode 100644
index e1037d4..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0010-vmscan-promote-shared-file-mapped-pages.patch
+++ /dev/null
@@ -1,82 +0,0 @@
-From 2a487f6e48c8ee80432e512e3618a6837f6ff448 Mon Sep 17 00:00:00 2001
-From: Konstantin Khlebnikov <khlebnikov at openvz.org>
-Date: Tue, 10 Jan 2012 15:06:59 -0800
-Subject: [PATCH 10/73] vmscan: promote shared file mapped pages
-
-commit 34dbc67a644f11ab3475d822d72e25409911e760 upstream.
-
-Stable note: Not tracked in Bugzilla. There were reports of shared
- mapped pages being unfairly reclaimed in comparison to older kernels.
- This is being addressed over time. The specific workload being
- addressed here in described in paragraph four and while paragraph
- five says it did not help performance as such, it made a difference
- to major page faults. I'm aware of at least one bug for a large
- vendor that was due to increased major faults.
-
-Commit 645747462435 ("vmscan: detect mapped file pages used only once")
-greatly decreases lifetime of single-used mapped file pages.
-Unfortunately it also decreases life time of all shared mapped file
-pages. Because after commit bf3f3bc5e7347 ("mm: don't mark_page_accessed
-in fault path") page-fault handler does not mark page active or even
-referenced.
-
-Thus page_check_references() activates file page only if it was used twice
-while it stays in inactive list, meanwhile it activates anon pages after
-first access. Inactive list can be small enough, this way reclaimer can
-accidentally throw away any widely used page if it wasn't used twice in
-short period.
-
-After this patch page_check_references() also activate file mapped page at
-first inactive list scan if this page is already used multiple times via
-several ptes.
-
-I found this while trying to fix degragation in rhel6 (~2.6.32) from rhel5
-(~2.6.18). There a complete mess with >100 web/mail/spam/ftp containers,
-they share all their files but there a lot of anonymous pages: ~500mb
-shared file mapped memory and 15-20Gb non-shared anonymous memory. In
-this situation major-pagefaults are very costly, because all containers
-share the same page. In my load kernel created a disproportionate
-pressure on the file memory, compared with the anonymous, they equaled
-only if I raise swappiness up to 150 =)
-
-These patches actually wasn't helped a lot in my problem, but I saw
-noticable (10-20 times) reduce in count and average time of
-major-pagefault in file-mapped areas.
-
-Actually both patches are fixes for commit v2.6.33-5448-g6457474, because
-it was aimed at one scenario (singly used pages), but it breaks the logic
-in other scenarios (shared and/or executable pages)
-
-Signed-off-by: Konstantin Khlebnikov <khlebnikov at openvz.org>
-Acked-by: Pekka Enberg <penberg at kernel.org>
-Acked-by: Minchan Kim <minchan.kim at gmail.com>
-Reviewed-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu at jp.fujitsu.com>
-Cc: Wu Fengguang <fengguang.wu at intel.com>
-Cc: Johannes Weiner <hannes at cmpxchg.org>
-Cc: Nick Piggin <npiggin at kernel.dk>
-Cc: Mel Gorman <mel at csn.ul.ie>
-Cc: Shaohua Li <shaohua.li at intel.com>
-Cc: Rik van Riel <riel at redhat.com>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- mm/vmscan.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/mm/vmscan.c b/mm/vmscan.c
-index 9e89de6..cd27455 100644
---- a/mm/vmscan.c
-+++ b/mm/vmscan.c
-@@ -715,7 +715,7 @@ static enum page_references page_check_references(struct page *page,
- */
- SetPageReferenced(page);
-
-- if (referenced_page)
-+ if (referenced_page || referenced_ptes > 1)
- return PAGEREF_ACTIVATE;
-
- return PAGEREF_KEEP;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0011-vmscan-activate-executable-pages-after-first-usage.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0011-vmscan-activate-executable-pages-after-first-usage.patch
deleted file mode 100644
index 0f24208..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0011-vmscan-activate-executable-pages-after-first-usage.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From 7560f662e5e895619c356365f675715d7f4ea577 Mon Sep 17 00:00:00 2001
-From: Konstantin Khlebnikov <khlebnikov at openvz.org>
-Date: Tue, 10 Jan 2012 15:07:03 -0800
-Subject: [PATCH 11/73] vmscan: activate executable pages after first usage
-
-commit c909e99364c8b6ca07864d752950b6b4ecf6bef4 upstream.
-
-Stable note: Not tracked in Bugzilla. There were reports of shared
- mapped pages being unfairly reclaimed in comparison to older kernels.
- This is being addressed over time.
-
-Logic added in commit 8cab4754d24a0 ("vmscan: make mapped executable pages
-the first class citizen") was noticeably weakened in commit
-645747462435d84 ("vmscan: detect mapped file pages used only once").
-
-Currently these pages can become "first class citizens" only after second
-usage. After this patch page_check_references() will activate they after
-first usage, and executable code gets yet better chance to stay in memory.
-
-Signed-off-by: Konstantin Khlebnikov <khlebnikov at openvz.org>
-Cc: Pekka Enberg <penberg at kernel.org>
-Cc: Minchan Kim <minchan.kim at gmail.com>
-Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu at jp.fujitsu.com>
-Cc: Wu Fengguang <fengguang.wu at intel.com>
-Cc: Johannes Weiner <hannes at cmpxchg.org>
-Cc: Nick Piggin <npiggin at kernel.dk>
-Cc: Mel Gorman <mel at csn.ul.ie>
-Cc: Shaohua Li <shaohua.li at intel.com>
-Cc: Rik van Riel <riel at redhat.com>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- mm/vmscan.c | 6 ++++++
- 1 files changed, 6 insertions(+), 0 deletions(-)
-
-diff --git a/mm/vmscan.c b/mm/vmscan.c
-index cd27455..87de9c6 100644
---- a/mm/vmscan.c
-+++ b/mm/vmscan.c
-@@ -718,6 +718,12 @@ static enum page_references page_check_references(struct page *page,
- if (referenced_page || referenced_ptes > 1)
- return PAGEREF_ACTIVATE;
-
-+ /*
-+ * Activate file-backed executable pages after first usage.
-+ */
-+ if (vm_flags & VM_EXEC)
-+ return PAGEREF_ACTIVATE;
-+
- return PAGEREF_KEEP;
- }
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0012-mm-vmscan.c-consider-swap-space-when-deciding-whethe.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0012-mm-vmscan.c-consider-swap-space-when-deciding-whethe.patch
deleted file mode 100644
index 63186e3..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0012-mm-vmscan.c-consider-swap-space-when-deciding-whethe.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From 2f1cec6b7649ab76eb3b0f736028388e4a7e9047 Mon Sep 17 00:00:00 2001
-From: Minchan Kim <minchan at kernel.org>
-Date: Tue, 10 Jan 2012 15:08:18 -0800
-Subject: [PATCH 12/73] mm/vmscan.c: consider swap space when deciding whether
- to continue reclaim
-
-commit 86cfd3a45042ab242d47f3935a02811a402beab6 upstream.
-
-Stable note: Not tracked in Bugzilla. This patch reduces kswapd CPU
- usage on swapless systems with high anonymous memory usage.
-
-It's pointless to continue reclaiming when we have no swap space and lots
-of anon pages in the inactive list.
-
-Without this patch, it is possible when swap is disabled to continue
-trying to reclaim when there are only anonymous pages in the system even
-though that will not make any progress.
-
-Signed-off-by: Minchan Kim <minchan at kernel.org>
-Cc: KOSAKI Motohiro <kosaki.motohiro at jp.fujitsu.com>
-Acked-by: Mel Gorman <mgorman at suse.de>
-Reviewed-by: Rik van Riel <riel at redhat.com>
-Cc: Johannes Weiner <jweiner at redhat.com>
-Cc: Andrea Arcangeli <aarcange at redhat.com>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- mm/vmscan.c | 5 +++--
- 1 files changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/mm/vmscan.c b/mm/vmscan.c
-index 87de9c6..ba763be 100644
---- a/mm/vmscan.c
-+++ b/mm/vmscan.c
-@@ -2049,8 +2049,9 @@ static inline bool should_continue_reclaim(struct zone *zone,
- * inactive lists are large enough, continue reclaiming
- */
- pages_for_compaction = (2UL << sc->order);
-- inactive_lru_pages = zone_nr_lru_pages(zone, sc, LRU_INACTIVE_ANON) +
-- zone_nr_lru_pages(zone, sc, LRU_INACTIVE_FILE);
-+ inactive_lru_pages = zone_nr_lru_pages(zone, sc, LRU_INACTIVE_FILE);
-+ if (nr_swap_pages > 0)
-+ inactive_lru_pages += zone_nr_lru_pages(zone, sc, LRU_INACTIVE_ANON);
- if (sc->nr_reclaimed < pages_for_compaction &&
- inactive_lru_pages > pages_for_compaction)
- return true;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0013-mm-test-PageSwapBacked-in-lumpy-reclaim.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0013-mm-test-PageSwapBacked-in-lumpy-reclaim.patch
deleted file mode 100644
index fe39de9..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0013-mm-test-PageSwapBacked-in-lumpy-reclaim.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 0b642dde6e6cd5dc940498c7cdb676fc56e4cdf4 Mon Sep 17 00:00:00 2001
-From: Hugh Dickins <hughd at google.com>
-Date: Tue, 10 Jan 2012 15:08:33 -0800
-Subject: [PATCH 13/73] mm: test PageSwapBacked in lumpy reclaim
-
-commit 043bcbe5ec51e0478ef2b44acef17193e01d7f70 upstream.
-
-Stable note: Not tracked in Bugzilla. There were reports of shared
- mapped pages being unfairly reclaimed in comparison to older kernels.
- This is being addressed over time. Even though the subject
- refers to lumpy reclaim, it impacts compaction as well.
-
-Lumpy reclaim does well to stop at a PageAnon when there's no swap, but
-better is to stop at any PageSwapBacked, which includes shmem/tmpfs too.
-
-Signed-off-by: Hugh Dickins <hughd at google.com>
-Reviewed-by: KOSAKI Motohiro <kosaki.motohiro at jp.fujitsu.com>
-Reviewed-by: Minchan Kim <minchan at kernel.org>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Mel Gorman <mgorman at suse.de>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- mm/vmscan.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/mm/vmscan.c b/mm/vmscan.c
-index ba763be..b9eaa06 100644
---- a/mm/vmscan.c
-+++ b/mm/vmscan.c
-@@ -1215,7 +1215,7 @@ static unsigned long isolate_lru_pages(unsigned long nr_to_scan,
- * anon page which don't already have a swap slot is
- * pointless.
- */
-- if (nr_swap_pages <= 0 && PageAnon(cursor_page) &&
-+ if (nr_swap_pages <= 0 && PageSwapBacked(cursor_page) &&
- !PageSwapCache(cursor_page))
- break;
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0014-mm-vmscan-convert-global-reclaim-to-per-memcg-LRU-li.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0014-mm-vmscan-convert-global-reclaim-to-per-memcg-LRU-li.patch
deleted file mode 100644
index 0be1dd4..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0014-mm-vmscan-convert-global-reclaim-to-per-memcg-LRU-li.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From 2c44243518b5d2a8bb5cd67691efe747e4424cc1 Mon Sep 17 00:00:00 2001
-From: Johannes Weiner <jweiner at redhat.com>
-Date: Thu, 12 Jan 2012 17:18:06 -0800
-Subject: [PATCH 14/73] mm: vmscan: convert global reclaim to per-memcg LRU
- lists
-
-commit b95a2f2d486d0d768a92879c023a03757b9c7e58 upstream - WARNING: this is a substitute patch.
-
-Stable note: Not tracked in Bugzilla. This is a partial backport of an
- upstream commit addressing a completely different issue
- that accidentally contained an important fix. The workload
- this patch helps was memcached when IO is started in the
- background. memcached should stay resident but without this patch
- it gets swapped. Sometimes this manifests as a drop in throughput
- but mostly it was observed through /proc/vmstat.
-
-Commit [246e87a9: memcg: fix get_scan_count() for small targets] was meant
-to fix a problem whereby small scan targets on memcg were ignored causing
-priority to raise too sharply. It forced scanning to take place if the
-target was small, memcg or kswapd.
-
-From the time it was introduced it caused excessive reclaim by kswapd
-with workloads being pushed to swap that previously would have stayed
-resident. This was accidentally fixed in commit [b95a2f2d: mm: vmscan:
-convert global reclaim to per-memcg LRU lists] by making it harder for
-kswapd to force scan small targets but that patchset is not suitable for
-backporting. This was later changed again by commit [90126375: mm/vmscan:
-push lruvec pointer into get_scan_count()] into a format that looks
-like it would be a straight-forward backport but there is a subtle
-difference due to the use of lruvecs.
-
-The impact of the accidental fix is to make it harder for kswapd to force
-scan small targets by taking zone->all_unreclaimable into account. This
-patch is the closest equivalent available based on what is backported.
-
-Signed-off-by: Mel Gorman <mgorman at suse.de>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- mm/vmscan.c | 3 ++-
- 1 files changed, 2 insertions(+), 1 deletions(-)
-
-diff --git a/mm/vmscan.c b/mm/vmscan.c
-index b9eaa06..ded1857 100644
---- a/mm/vmscan.c
-+++ b/mm/vmscan.c
-@@ -1911,7 +1911,8 @@ static void get_scan_count(struct zone *zone, struct scan_control *sc,
- * latencies, so it's better to scan a minimum amount there as
- * well.
- */
-- if (scanning_global_lru(sc) && current_is_kswapd())
-+ if (scanning_global_lru(sc) && current_is_kswapd() &&
-+ zone->all_unreclaimable)
- force_scan = true;
- if (!scanning_global_lru(sc))
- force_scan = true;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0015-cpuset-mm-reduce-large-amounts-of-memory-barrier-rel.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0015-cpuset-mm-reduce-large-amounts-of-memory-barrier-rel.patch
deleted file mode 100644
index d834bc2..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0015-cpuset-mm-reduce-large-amounts-of-memory-barrier-rel.patch
+++ /dev/null
@@ -1,655 +0,0 @@
-From 8d847c6e95dab1977636cd9d3d5da5851f5c95aa Mon Sep 17 00:00:00 2001
-From: Mel Gorman <mgorman at suse.de>
-Date: Wed, 21 Mar 2012 16:34:11 -0700
-Subject: [PATCH 15/73] cpuset: mm: reduce large amounts of memory barrier
- related damage v3
-
-commit cc9a6c8776615f9c194ccf0b63a0aa5628235545 upstream.
-
-Stable note: Not tracked in Bugzilla. [get|put]_mems_allowed() is extremely
- expensive and severely impacted page allocator performance. This
- is part of a series of patches that reduce page allocator overhead.
-
-Commit c0ff7453bb5c ("cpuset,mm: fix no node to alloc memory when
-changing cpuset's mems") wins a super prize for the largest number of
-memory barriers entered into fast paths for one commit.
-
-[get|put]_mems_allowed is incredibly heavy with pairs of full memory
-barriers inserted into a number of hot paths. This was detected while
-investigating at large page allocator slowdown introduced some time
-after 2.6.32. The largest portion of this overhead was shown by
-oprofile to be at an mfence introduced by this commit into the page
-allocator hot path.
-
-For extra style points, the commit introduced the use of yield() in an
-implementation of what looks like a spinning mutex.
-
-This patch replaces the full memory barriers on both read and write
-sides with a sequence counter with just read barriers on the fast path
-side. This is much cheaper on some architectures, including x86. The
-main bulk of the patch is the retry logic if the nodemask changes in a
-manner that can cause a false failure.
-
-While updating the nodemask, a check is made to see if a false failure
-is a risk. If it is, the sequence number gets bumped and parallel
-allocators will briefly stall while the nodemask update takes place.
-
-In a page fault test microbenchmark, oprofile samples from
-__alloc_pages_nodemask went from 4.53% of all samples to 1.15%. The
-actual results were
-
- 3.3.0-rc3 3.3.0-rc3
- rc3-vanilla nobarrier-v2r1
- Clients 1 UserTime 0.07 ( 0.00%) 0.08 (-14.19%)
- Clients 2 UserTime 0.07 ( 0.00%) 0.07 ( 2.72%)
- Clients 4 UserTime 0.08 ( 0.00%) 0.07 ( 3.29%)
- Clients 1 SysTime 0.70 ( 0.00%) 0.65 ( 6.65%)
- Clients 2 SysTime 0.85 ( 0.00%) 0.82 ( 3.65%)
- Clients 4 SysTime 1.41 ( 0.00%) 1.41 ( 0.32%)
- Clients 1 WallTime 0.77 ( 0.00%) 0.74 ( 4.19%)
- Clients 2 WallTime 0.47 ( 0.00%) 0.45 ( 3.73%)
- Clients 4 WallTime 0.38 ( 0.00%) 0.37 ( 1.58%)
- Clients 1 Flt/sec/cpu 497620.28 ( 0.00%) 520294.53 ( 4.56%)
- Clients 2 Flt/sec/cpu 414639.05 ( 0.00%) 429882.01 ( 3.68%)
- Clients 4 Flt/sec/cpu 257959.16 ( 0.00%) 258761.48 ( 0.31%)
- Clients 1 Flt/sec 495161.39 ( 0.00%) 517292.87 ( 4.47%)
- Clients 2 Flt/sec 820325.95 ( 0.00%) 850289.77 ( 3.65%)
- Clients 4 Flt/sec 1020068.93 ( 0.00%) 1022674.06 ( 0.26%)
- MMTests Statistics: duration
- Sys Time Running Test (seconds) 135.68 132.17
- User+Sys Time Running Test (seconds) 164.2 160.13
- Total Elapsed Time (seconds) 123.46 120.87
-
-The overall improvement is small but the System CPU time is much
-improved and roughly in correlation to what oprofile reported (these
-performance figures are without profiling so skew is expected). The
-actual number of page faults is noticeably improved.
-
-For benchmarks like kernel builds, the overall benefit is marginal but
-the system CPU time is slightly reduced.
-
-To test the actual bug the commit fixed I opened two terminals. The
-first ran within a cpuset and continually ran a small program that
-faulted 100M of anonymous data. In a second window, the nodemask of the
-cpuset was continually randomised in a loop.
-
-Without the commit, the program would fail every so often (usually
-within 10 seconds) and obviously with the commit everything worked fine.
-With this patch applied, it also worked fine so the fix should be
-functionally equivalent.
-
-Signed-off-by: Mel Gorman <mgorman at suse.de>
-Cc: Miao Xie <miaox at cn.fujitsu.com>
-Cc: David Rientjes <rientjes at google.com>
-Cc: Peter Zijlstra <a.p.zijlstra at chello.nl>
-Cc: Christoph Lameter <cl at linux.com>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Mel Gorman <mgorman at suse.de>
-[bwh: Forward-ported from 3.0 to 3.2: apply the upstream changes
- to get_any_partial()]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- include/linux/cpuset.h | 47 +++++++++++++++++++-------------------------
- include/linux/init_task.h | 8 +++++++
- include/linux/sched.h | 2 +-
- kernel/cpuset.c | 43 +++++++---------------------------------
- kernel/fork.c | 3 ++
- mm/filemap.c | 11 ++++++---
- mm/hugetlb.c | 15 ++++++++++---
- mm/mempolicy.c | 28 ++++++++++++++++++++------
- mm/page_alloc.c | 33 ++++++++++++++++++++++---------
- mm/slab.c | 13 +++++++----
- mm/slub.c | 40 +++++++++++++++++++++++--------------
- mm/vmscan.c | 2 -
- 12 files changed, 135 insertions(+), 110 deletions(-)
-
-diff --git a/include/linux/cpuset.h b/include/linux/cpuset.h
-index e9eaec5..7a7e5fd 100644
---- a/include/linux/cpuset.h
-+++ b/include/linux/cpuset.h
-@@ -89,42 +89,33 @@ extern void rebuild_sched_domains(void);
- extern void cpuset_print_task_mems_allowed(struct task_struct *p);
-
- /*
-- * reading current mems_allowed and mempolicy in the fastpath must protected
-- * by get_mems_allowed()
-+ * get_mems_allowed is required when making decisions involving mems_allowed
-+ * such as during page allocation. mems_allowed can be updated in parallel
-+ * and depending on the new value an operation can fail potentially causing
-+ * process failure. A retry loop with get_mems_allowed and put_mems_allowed
-+ * prevents these artificial failures.
- */
--static inline void get_mems_allowed(void)
-+static inline unsigned int get_mems_allowed(void)
- {
-- current->mems_allowed_change_disable++;
--
-- /*
-- * ensure that reading mems_allowed and mempolicy happens after the
-- * update of ->mems_allowed_change_disable.
-- *
-- * the write-side task finds ->mems_allowed_change_disable is not 0,
-- * and knows the read-side task is reading mems_allowed or mempolicy,
-- * so it will clear old bits lazily.
-- */
-- smp_mb();
-+ return read_seqcount_begin(¤t->mems_allowed_seq);
- }
-
--static inline void put_mems_allowed(void)
-+/*
-+ * If this returns false, the operation that took place after get_mems_allowed
-+ * may have failed. It is up to the caller to retry the operation if
-+ * appropriate.
-+ */
-+static inline bool put_mems_allowed(unsigned int seq)
- {
-- /*
-- * ensure that reading mems_allowed and mempolicy before reducing
-- * mems_allowed_change_disable.
-- *
-- * the write-side task will know that the read-side task is still
-- * reading mems_allowed or mempolicy, don't clears old bits in the
-- * nodemask.
-- */
-- smp_mb();
-- --ACCESS_ONCE(current->mems_allowed_change_disable);
-+ return !read_seqcount_retry(¤t->mems_allowed_seq, seq);
- }
-
- static inline void set_mems_allowed(nodemask_t nodemask)
- {
- task_lock(current);
-+ write_seqcount_begin(¤t->mems_allowed_seq);
- current->mems_allowed = nodemask;
-+ write_seqcount_end(¤t->mems_allowed_seq);
- task_unlock(current);
- }
-
-@@ -234,12 +225,14 @@ static inline void set_mems_allowed(nodemask_t nodemask)
- {
- }
-
--static inline void get_mems_allowed(void)
-+static inline unsigned int get_mems_allowed(void)
- {
-+ return 0;
- }
-
--static inline void put_mems_allowed(void)
-+static inline bool put_mems_allowed(unsigned int seq)
- {
-+ return true;
- }
-
- #endif /* !CONFIG_CPUSETS */
-diff --git a/include/linux/init_task.h b/include/linux/init_task.h
-index 32574ee..df53fdf 100644
---- a/include/linux/init_task.h
-+++ b/include/linux/init_task.h
-@@ -30,6 +30,13 @@ extern struct fs_struct init_fs;
- #define INIT_THREADGROUP_FORK_LOCK(sig)
- #endif
-
-+#ifdef CONFIG_CPUSETS
-+#define INIT_CPUSET_SEQ \
-+ .mems_allowed_seq = SEQCNT_ZERO,
-+#else
-+#define INIT_CPUSET_SEQ
-+#endif
-+
- #define INIT_SIGNALS(sig) { \
- .nr_threads = 1, \
- .wait_chldexit = __WAIT_QUEUE_HEAD_INITIALIZER(sig.wait_chldexit),\
-@@ -193,6 +200,7 @@ extern struct cred init_cred;
- INIT_FTRACE_GRAPH \
- INIT_TRACE_RECURSION \
- INIT_TASK_RCU_PREEMPT(tsk) \
-+ INIT_CPUSET_SEQ \
- }
-
-
-diff --git a/include/linux/sched.h b/include/linux/sched.h
-index 5afa2a3..a96cb8c 100644
---- a/include/linux/sched.h
-+++ b/include/linux/sched.h
-@@ -1481,7 +1481,7 @@ struct task_struct {
- #endif
- #ifdef CONFIG_CPUSETS
- nodemask_t mems_allowed; /* Protected by alloc_lock */
-- int mems_allowed_change_disable;
-+ seqcount_t mems_allowed_seq; /* Seqence no to catch updates */
- int cpuset_mem_spread_rotor;
- int cpuset_slab_spread_rotor;
- #endif
-diff --git a/kernel/cpuset.c b/kernel/cpuset.c
-index 0b1712d..46a1d3c 100644
---- a/kernel/cpuset.c
-+++ b/kernel/cpuset.c
-@@ -964,7 +964,6 @@ static void cpuset_change_task_nodemask(struct task_struct *tsk,
- {
- bool need_loop;
-
--repeat:
- /*
- * Allow tasks that have access to memory reserves because they have
- * been OOM killed to get memory anywhere.
-@@ -983,45 +982,19 @@ repeat:
- */
- need_loop = task_has_mempolicy(tsk) ||
- !nodes_intersects(*newmems, tsk->mems_allowed);
-- nodes_or(tsk->mems_allowed, tsk->mems_allowed, *newmems);
-- mpol_rebind_task(tsk, newmems, MPOL_REBIND_STEP1);
-
-- /*
-- * ensure checking ->mems_allowed_change_disable after setting all new
-- * allowed nodes.
-- *
-- * the read-side task can see an nodemask with new allowed nodes and
-- * old allowed nodes. and if it allocates page when cpuset clears newly
-- * disallowed ones continuous, it can see the new allowed bits.
-- *
-- * And if setting all new allowed nodes is after the checking, setting
-- * all new allowed nodes and clearing newly disallowed ones will be done
-- * continuous, and the read-side task may find no node to alloc page.
-- */
-- smp_mb();
-+ if (need_loop)
-+ write_seqcount_begin(&tsk->mems_allowed_seq);
-
-- /*
-- * Allocation of memory is very fast, we needn't sleep when waiting
-- * for the read-side.
-- */
-- while (need_loop && ACCESS_ONCE(tsk->mems_allowed_change_disable)) {
-- task_unlock(tsk);
-- if (!task_curr(tsk))
-- yield();
-- goto repeat;
-- }
--
-- /*
-- * ensure checking ->mems_allowed_change_disable before clearing all new
-- * disallowed nodes.
-- *
-- * if clearing newly disallowed bits before the checking, the read-side
-- * task may find no node to alloc page.
-- */
-- smp_mb();
-+ nodes_or(tsk->mems_allowed, tsk->mems_allowed, *newmems);
-+ mpol_rebind_task(tsk, newmems, MPOL_REBIND_STEP1);
-
- mpol_rebind_task(tsk, newmems, MPOL_REBIND_STEP2);
- tsk->mems_allowed = *newmems;
-+
-+ if (need_loop)
-+ write_seqcount_end(&tsk->mems_allowed_seq);
-+
- task_unlock(tsk);
- }
-
-diff --git a/kernel/fork.c b/kernel/fork.c
-index 79ee71f..222457a 100644
---- a/kernel/fork.c
-+++ b/kernel/fork.c
-@@ -979,6 +979,9 @@ static int copy_signal(unsigned long clone_flags, struct task_struct *tsk)
- #ifdef CONFIG_CGROUPS
- init_rwsem(&sig->threadgroup_fork_lock);
- #endif
-+#ifdef CONFIG_CPUSETS
-+ seqcount_init(&tsk->mems_allowed_seq);
-+#endif
-
- sig->oom_adj = current->signal->oom_adj;
- sig->oom_score_adj = current->signal->oom_score_adj;
-diff --git a/mm/filemap.c b/mm/filemap.c
-index 03c5b0e..556858c 100644
---- a/mm/filemap.c
-+++ b/mm/filemap.c
-@@ -500,10 +500,13 @@ struct page *__page_cache_alloc(gfp_t gfp)
- struct page *page;
-
- if (cpuset_do_page_mem_spread()) {
-- get_mems_allowed();
-- n = cpuset_mem_spread_node();
-- page = alloc_pages_exact_node(n, gfp, 0);
-- put_mems_allowed();
-+ unsigned int cpuset_mems_cookie;
-+ do {
-+ cpuset_mems_cookie = get_mems_allowed();
-+ n = cpuset_mem_spread_node();
-+ page = alloc_pages_exact_node(n, gfp, 0);
-+ } while (!put_mems_allowed(cpuset_mems_cookie) && !page);
-+
- return page;
- }
- return alloc_pages(gfp, 0);
-diff --git a/mm/hugetlb.c b/mm/hugetlb.c
-index 7c535b0..1e747e4 100644
---- a/mm/hugetlb.c
-+++ b/mm/hugetlb.c
-@@ -532,14 +532,16 @@ static struct page *dequeue_huge_page_vma(struct hstate *h,
- struct vm_area_struct *vma,
- unsigned long address, int avoid_reserve)
- {
-- struct page *page = NULL;
-+ struct page *page;
- struct mempolicy *mpol;
- nodemask_t *nodemask;
- struct zonelist *zonelist;
- struct zone *zone;
- struct zoneref *z;
-+ unsigned int cpuset_mems_cookie;
-
-- get_mems_allowed();
-+retry_cpuset:
-+ cpuset_mems_cookie = get_mems_allowed();
- zonelist = huge_zonelist(vma, address,
- htlb_alloc_mask, &mpol, &nodemask);
- /*
-@@ -566,10 +568,15 @@ static struct page *dequeue_huge_page_vma(struct hstate *h,
- }
- }
- }
--err:
-+
- mpol_cond_put(mpol);
-- put_mems_allowed();
-+ if (unlikely(!put_mems_allowed(cpuset_mems_cookie) && !page))
-+ goto retry_cpuset;
- return page;
-+
-+err:
-+ mpol_cond_put(mpol);
-+ return NULL;
- }
-
- static void update_and_free_page(struct hstate *h, struct page *page)
-diff --git a/mm/mempolicy.c b/mm/mempolicy.c
-index f2650bc..c0007f9 100644
---- a/mm/mempolicy.c
-+++ b/mm/mempolicy.c
-@@ -1843,18 +1843,24 @@ struct page *
- alloc_pages_vma(gfp_t gfp, int order, struct vm_area_struct *vma,
- unsigned long addr, int node)
- {
-- struct mempolicy *pol = get_vma_policy(current, vma, addr);
-+ struct mempolicy *pol;
- struct zonelist *zl;
- struct page *page;
-+ unsigned int cpuset_mems_cookie;
-+
-+retry_cpuset:
-+ pol = get_vma_policy(current, vma, addr);
-+ cpuset_mems_cookie = get_mems_allowed();
-
-- get_mems_allowed();
- if (unlikely(pol->mode == MPOL_INTERLEAVE)) {
- unsigned nid;
-
- nid = interleave_nid(pol, vma, addr, PAGE_SHIFT + order);
- mpol_cond_put(pol);
- page = alloc_page_interleave(gfp, order, nid);
-- put_mems_allowed();
-+ if (unlikely(!put_mems_allowed(cpuset_mems_cookie) && !page))
-+ goto retry_cpuset;
-+
- return page;
- }
- zl = policy_zonelist(gfp, pol, node);
-@@ -1865,7 +1871,8 @@ alloc_pages_vma(gfp_t gfp, int order, struct vm_area_struct *vma,
- struct page *page = __alloc_pages_nodemask(gfp, order,
- zl, policy_nodemask(gfp, pol));
- __mpol_put(pol);
-- put_mems_allowed();
-+ if (unlikely(!put_mems_allowed(cpuset_mems_cookie) && !page))
-+ goto retry_cpuset;
- return page;
- }
- /*
-@@ -1873,7 +1880,8 @@ alloc_pages_vma(gfp_t gfp, int order, struct vm_area_struct *vma,
- */
- page = __alloc_pages_nodemask(gfp, order, zl,
- policy_nodemask(gfp, pol));
-- put_mems_allowed();
-+ if (unlikely(!put_mems_allowed(cpuset_mems_cookie) && !page))
-+ goto retry_cpuset;
- return page;
- }
-
-@@ -1900,11 +1908,14 @@ struct page *alloc_pages_current(gfp_t gfp, unsigned order)
- {
- struct mempolicy *pol = current->mempolicy;
- struct page *page;
-+ unsigned int cpuset_mems_cookie;
-
- if (!pol || in_interrupt() || (gfp & __GFP_THISNODE))
- pol = &default_policy;
-
-- get_mems_allowed();
-+retry_cpuset:
-+ cpuset_mems_cookie = get_mems_allowed();
-+
- /*
- * No reference counting needed for current->mempolicy
- * nor system default_policy
-@@ -1915,7 +1926,10 @@ struct page *alloc_pages_current(gfp_t gfp, unsigned order)
- page = __alloc_pages_nodemask(gfp, order,
- policy_zonelist(gfp, pol, numa_node_id()),
- policy_nodemask(gfp, pol));
-- put_mems_allowed();
-+
-+ if (unlikely(!put_mems_allowed(cpuset_mems_cookie) && !page))
-+ goto retry_cpuset;
-+
- return page;
- }
- EXPORT_SYMBOL(alloc_pages_current);
-diff --git a/mm/page_alloc.c b/mm/page_alloc.c
-index ef6e1a1..065dbe8 100644
---- a/mm/page_alloc.c
-+++ b/mm/page_alloc.c
-@@ -2282,8 +2282,9 @@ __alloc_pages_nodemask(gfp_t gfp_mask, unsigned int order,
- {
- enum zone_type high_zoneidx = gfp_zone(gfp_mask);
- struct zone *preferred_zone;
-- struct page *page;
-+ struct page *page = NULL;
- int migratetype = allocflags_to_migratetype(gfp_mask);
-+ unsigned int cpuset_mems_cookie;
-
- gfp_mask &= gfp_allowed_mask;
-
-@@ -2302,15 +2303,15 @@ __alloc_pages_nodemask(gfp_t gfp_mask, unsigned int order,
- if (unlikely(!zonelist->_zonerefs->zone))
- return NULL;
-
-- get_mems_allowed();
-+retry_cpuset:
-+ cpuset_mems_cookie = get_mems_allowed();
-+
- /* The preferred zone is used for statistics later */
- first_zones_zonelist(zonelist, high_zoneidx,
- nodemask ? : &cpuset_current_mems_allowed,
- &preferred_zone);
-- if (!preferred_zone) {
-- put_mems_allowed();
-- return NULL;
-- }
-+ if (!preferred_zone)
-+ goto out;
-
- /* First allocation attempt */
- page = get_page_from_freelist(gfp_mask|__GFP_HARDWALL, nodemask, order,
-@@ -2320,9 +2321,19 @@ __alloc_pages_nodemask(gfp_t gfp_mask, unsigned int order,
- page = __alloc_pages_slowpath(gfp_mask, order,
- zonelist, high_zoneidx, nodemask,
- preferred_zone, migratetype);
-- put_mems_allowed();
-
- trace_mm_page_alloc(page, order, gfp_mask, migratetype);
-+
-+out:
-+ /*
-+ * When updating a task's mems_allowed, it is possible to race with
-+ * parallel threads in such a way that an allocation can fail while
-+ * the mask is being updated. If a page allocation is about to fail,
-+ * check if the cpuset changed during allocation and if so, retry.
-+ */
-+ if (unlikely(!put_mems_allowed(cpuset_mems_cookie) && !page))
-+ goto retry_cpuset;
-+
- return page;
- }
- EXPORT_SYMBOL(__alloc_pages_nodemask);
-@@ -2546,13 +2557,15 @@ void si_meminfo_node(struct sysinfo *val, int nid)
- bool skip_free_areas_node(unsigned int flags, int nid)
- {
- bool ret = false;
-+ unsigned int cpuset_mems_cookie;
-
- if (!(flags & SHOW_MEM_FILTER_NODES))
- goto out;
-
-- get_mems_allowed();
-- ret = !node_isset(nid, cpuset_current_mems_allowed);
-- put_mems_allowed();
-+ do {
-+ cpuset_mems_cookie = get_mems_allowed();
-+ ret = !node_isset(nid, cpuset_current_mems_allowed);
-+ } while (!put_mems_allowed(cpuset_mems_cookie));
- out:
- return ret;
- }
-diff --git a/mm/slab.c b/mm/slab.c
-index 83311c9a..cd3ab93 100644
---- a/mm/slab.c
-+++ b/mm/slab.c
-@@ -3267,12 +3267,10 @@ static void *alternate_node_alloc(struct kmem_cache *cachep, gfp_t flags)
- if (in_interrupt() || (flags & __GFP_THISNODE))
- return NULL;
- nid_alloc = nid_here = numa_mem_id();
-- get_mems_allowed();
- if (cpuset_do_slab_mem_spread() && (cachep->flags & SLAB_MEM_SPREAD))
- nid_alloc = cpuset_slab_spread_node();
- else if (current->mempolicy)
- nid_alloc = slab_node(current->mempolicy);
-- put_mems_allowed();
- if (nid_alloc != nid_here)
- return ____cache_alloc_node(cachep, flags, nid_alloc);
- return NULL;
-@@ -3295,14 +3293,17 @@ static void *fallback_alloc(struct kmem_cache *cache, gfp_t flags)
- enum zone_type high_zoneidx = gfp_zone(flags);
- void *obj = NULL;
- int nid;
-+ unsigned int cpuset_mems_cookie;
-
- if (flags & __GFP_THISNODE)
- return NULL;
-
-- get_mems_allowed();
-- zonelist = node_zonelist(slab_node(current->mempolicy), flags);
- local_flags = flags & (GFP_CONSTRAINT_MASK|GFP_RECLAIM_MASK);
-
-+retry_cpuset:
-+ cpuset_mems_cookie = get_mems_allowed();
-+ zonelist = node_zonelist(slab_node(current->mempolicy), flags);
-+
- retry:
- /*
- * Look through allowed nodes for objects available
-@@ -3355,7 +3356,9 @@ retry:
- }
- }
- }
-- put_mems_allowed();
-+
-+ if (unlikely(!put_mems_allowed(cpuset_mems_cookie) && !obj))
-+ goto retry_cpuset;
- return obj;
- }
-
-diff --git a/mm/slub.c b/mm/slub.c
-index af47188..5710788 100644
---- a/mm/slub.c
-+++ b/mm/slub.c
-@@ -1582,6 +1582,7 @@ static struct page *get_any_partial(struct kmem_cache *s, gfp_t flags,
- struct zone *zone;
- enum zone_type high_zoneidx = gfp_zone(flags);
- void *object;
-+ unsigned int cpuset_mems_cookie;
-
- /*
- * The defrag ratio allows a configuration of the tradeoffs between
-@@ -1605,23 +1606,32 @@ static struct page *get_any_partial(struct kmem_cache *s, gfp_t flags,
- get_cycles() % 1024 > s->remote_node_defrag_ratio)
- return NULL;
-
-- get_mems_allowed();
-- zonelist = node_zonelist(slab_node(current->mempolicy), flags);
-- for_each_zone_zonelist(zone, z, zonelist, high_zoneidx) {
-- struct kmem_cache_node *n;
--
-- n = get_node(s, zone_to_nid(zone));
--
-- if (n && cpuset_zone_allowed_hardwall(zone, flags) &&
-- n->nr_partial > s->min_partial) {
-- object = get_partial_node(s, n, c);
-- if (object) {
-- put_mems_allowed();
-- return object;
-+ do {
-+ cpuset_mems_cookie = get_mems_allowed();
-+ zonelist = node_zonelist(slab_node(current->mempolicy), flags);
-+ for_each_zone_zonelist(zone, z, zonelist, high_zoneidx) {
-+ struct kmem_cache_node *n;
-+
-+ n = get_node(s, zone_to_nid(zone));
-+
-+ if (n && cpuset_zone_allowed_hardwall(zone, flags) &&
-+ n->nr_partial > s->min_partial) {
-+ object = get_partial_node(s, n, c);
-+ if (object) {
-+ /*
-+ * Return the object even if
-+ * put_mems_allowed indicated that
-+ * the cpuset mems_allowed was
-+ * updated in parallel. It's a
-+ * harmless race between the alloc
-+ * and the cpuset update.
-+ */
-+ put_mems_allowed(cpuset_mems_cookie);
-+ return object;
-+ }
- }
- }
-- }
-- put_mems_allowed();
-+ } while (!put_mems_allowed(cpuset_mems_cookie));
- #endif
- return NULL;
- }
-diff --git a/mm/vmscan.c b/mm/vmscan.c
-index ded1857..48febd7 100644
---- a/mm/vmscan.c
-+++ b/mm/vmscan.c
-@@ -2295,7 +2295,6 @@ static unsigned long do_try_to_free_pages(struct zonelist *zonelist,
- unsigned long writeback_threshold;
- bool aborted_reclaim;
-
-- get_mems_allowed();
- delayacct_freepages_start();
-
- if (scanning_global_lru(sc))
-@@ -2359,7 +2358,6 @@ static unsigned long do_try_to_free_pages(struct zonelist *zonelist,
-
- out:
- delayacct_freepages_end();
-- put_mems_allowed();
-
- if (sc->nr_reclaimed)
- return sc->nr_reclaimed;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0016-mm-hugetlb-fix-warning-in-alloc_huge_page-dequeue_hu.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0016-mm-hugetlb-fix-warning-in-alloc_huge_page-dequeue_hu.patch
deleted file mode 100644
index 9c4a09a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0016-mm-hugetlb-fix-warning-in-alloc_huge_page-dequeue_hu.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From f9871f8705a930f3c3c4588a8c990cf76db2b95e Mon Sep 17 00:00:00 2001
-From: Konstantin Khlebnikov <khlebnikov at openvz.org>
-Date: Wed, 25 Apr 2012 16:01:46 -0700
-Subject: [PATCH 16/73] mm/hugetlb: fix warning in
- alloc_huge_page/dequeue_huge_page_vma
-
-commit b1c12cbcd0a02527c180a862e8971e249d3b347d upstream.
-
-Stable note: Not tracked in Bugzilla. [get|put]_mems_allowed() is extremely
- expensive and severely impacted page allocator performance. This
- is part of a series of patches that reduce page allocator overhead.
-
-Fix a gcc warning (and bug?) introduced in cc9a6c877 ("cpuset: mm: reduce
-large amounts of memory barrier related damage v3")
-
-Local variable "page" can be uninitialized if the nodemask from vma policy
-does not intersects with nodemask from cpuset. Even if it doesn't happens
-it is better to initialize this variable explicitly than to introduce
-a kernel oops in a weird corner case.
-
-mm/hugetlb.c: In function `alloc_huge_page':
-mm/hugetlb.c:1135:5: warning: `page' may be used uninitialized in this function
-
-Signed-off-by: Konstantin Khlebnikov <khlebnikov at openvz.org>
-Acked-by: Mel Gorman <mgorman at suse.de>
-Acked-by: David Rientjes <rientjes at google.com>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Mel Gorman <mgorman at suse.de>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- mm/hugetlb.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/mm/hugetlb.c b/mm/hugetlb.c
-index 1e747e4..b1e1bad 100644
---- a/mm/hugetlb.c
-+++ b/mm/hugetlb.c
-@@ -532,7 +532,7 @@ static struct page *dequeue_huge_page_vma(struct hstate *h,
- struct vm_area_struct *vma,
- unsigned long address, int avoid_reserve)
- {
-- struct page *page;
-+ struct page *page = NULL;
- struct mempolicy *mpol;
- nodemask_t *nodemask;
- struct zonelist *zonelist;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0017-Fix-NULL-dereferences-in-scsi_cmd_to_driver.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0017-Fix-NULL-dereferences-in-scsi_cmd_to_driver.patch
deleted file mode 100644
index b56b57e..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0017-Fix-NULL-dereferences-in-scsi_cmd_to_driver.patch
+++ /dev/null
@@ -1,71 +0,0 @@
-From 67fed15f639763628507a2e704441acabcce4bdd Mon Sep 17 00:00:00 2001
-From: Mark Rustad <mark.d.rustad at intel.com>
-Date: Thu, 21 Jun 2012 12:23:42 -0700
-Subject: [PATCH 17/73] Fix NULL dereferences in scsi_cmd_to_driver
-
-commit 222a806af830fda34ad1f6bc991cd226916de060 upstream.
-
-Avoid crashing if the private_data pointer happens to be NULL. This has
-been seen sometimes when a host reset happens, notably when there are
-many LUNs:
-
-host3: Assigned Port ID 0c1601
-scsi host3: libfc: Host reset succeeded on port (0c1601)
-BUG: unable to handle kernel NULL pointer dereference at 0000000000000350
-IP: [<ffffffff81352bb8>] scsi_send_eh_cmnd+0x58/0x3a0
-<snip>
-Process scsi_eh_3 (pid: 4144, threadinfo ffff88030920c000, task ffff880326b160c0)
-Stack:
- 000000010372e6ba 0000000000000282 000027100920dca0 ffffffffa0038ee0
- 0000000000000000 0000000000030003 ffff88030920dc80 ffff88030920dc80
- 00000002000e0000 0000000a00004000 ffff8803242f7760 ffff88031326ed80
-Call Trace:
- [<ffffffff8105b590>] ? lock_timer_base+0x70/0x70
- [<ffffffff81352fbe>] scsi_eh_tur+0x3e/0xc0
- [<ffffffff81353a36>] scsi_eh_test_devices+0x76/0x170
- [<ffffffff81354125>] scsi_eh_host_reset+0x85/0x160
- [<ffffffff81354291>] scsi_eh_ready_devs+0x91/0x110
- [<ffffffff813543fd>] scsi_unjam_host+0xed/0x1f0
- [<ffffffff813546a8>] scsi_error_handler+0x1a8/0x200
- [<ffffffff81354500>] ? scsi_unjam_host+0x1f0/0x1f0
- [<ffffffff8106ec3e>] kthread+0x9e/0xb0
- [<ffffffff81509264>] kernel_thread_helper+0x4/0x10
- [<ffffffff8106eba0>] ? kthread_freezable_should_stop+0x70/0x70
- [<ffffffff81509260>] ? gs_change+0x13/0x13
-Code: 25 28 00 00 00 48 89 45 c8 31 c0 48 8b 87 80 00 00 00 48 8d b5 60 ff ff ff 89 d1 48 89 fb 41 89 d6 4c 89 fa 48 8b 80 b8 00 00 00
- <48> 8b 80 50 03 00 00 48 8b 00 48 89 85 38 ff ff ff 48 8b 07 4c
-RIP [<ffffffff81352bb8>] scsi_send_eh_cmnd+0x58/0x3a0
- RSP <ffff88030920dc50>
-CR2: 0000000000000350
-
-Signed-off-by: Mark Rustad <mark.d.rustad at intel.com>
-Tested-by: Marcus Dennis <marcusx.e.dennis at intel.com>
-Signed-off-by: James Bottomley <JBottomley at Parallels.com>
-[bwh: Backported to 3.2: adjust filename, context]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/scsi/scsi.c | 8 +++++++-
- 1 files changed, 7 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c
-index 2aeb2e9..831db24 100644
---- a/drivers/scsi/scsi.c
-+++ b/drivers/scsi/scsi.c
-@@ -785,7 +785,13 @@ static void scsi_done(struct scsi_cmnd *cmd)
- /* Move this to a header if it becomes more generally useful */
- static struct scsi_driver *scsi_cmd_to_driver(struct scsi_cmnd *cmd)
- {
-- return *(struct scsi_driver **)cmd->request->rq_disk->private_data;
-+ struct scsi_driver **sdp;
-+
-+ sdp = (struct scsi_driver **)cmd->request->rq_disk->private_data;
-+ if (!sdp)
-+ return NULL;
-+
-+ return *sdp;
- }
-
- /**
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0018-sched-nohz-Fix-rq-cpu_load-calculations.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0018-sched-nohz-Fix-rq-cpu_load-calculations.patch
deleted file mode 100644
index 6548d42..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0018-sched-nohz-Fix-rq-cpu_load-calculations.patch
+++ /dev/null
@@ -1,137 +0,0 @@
-From af56d9e56ec0729f6aa8c3a51b9bddbdcd8dfcf0 Mon Sep 17 00:00:00 2001
-From: Peter Zijlstra <a.p.zijlstra at chello.nl>
-Date: Fri, 11 May 2012 17:31:26 +0200
-Subject: [PATCH 18/73] sched/nohz: Fix rq->cpu_load[] calculations
-
-commit 556061b00c9f2fd6a5524b6bde823ef12f299ecf upstream.
-
-While investigating why the load-balancer did funny I found that the
-rq->cpu_load[] tables were completely screwy.. a bit more digging
-revealed that the updates that got through were missing ticks followed
-by a catchup of 2 ticks.
-
-The catchup assumes the cpu was idle during that time (since only nohz
-can cause missed ticks and the machine is idle etc..) this means that
-esp. the higher indices were significantly lower than they ought to
-be.
-
-The reason for this is that its not correct to compare against jiffies
-on every jiffy on any other cpu than the cpu that updates jiffies.
-
-This patch cludges around it by only doing the catch-up stuff from
-nohz_idle_balance() and doing the regular stuff unconditionally from
-the tick.
-
-Signed-off-by: Peter Zijlstra <a.p.zijlstra at chello.nl>
-Cc: pjt at google.com
-Cc: Venkatesh Pallipadi <venki at google.com>
-Link: http://lkml.kernel.org/n/tip-tp4kj18xdd5aj4vvj0qg55s2@git.kernel.org
-Signed-off-by: Ingo Molnar <mingo at kernel.org>
-[bwh: Backported to 3.2: adjust filenames and context; keep functions static]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- kernel/sched.c | 53 ++++++++++++++++++++++++++++++++++++++------------
- kernel/sched_fair.c | 2 +-
- 2 files changed, 41 insertions(+), 14 deletions(-)
-
-diff --git a/kernel/sched.c b/kernel/sched.c
-index 52ac69b..a409d81 100644
---- a/kernel/sched.c
-+++ b/kernel/sched.c
-@@ -1887,7 +1887,7 @@ static void double_rq_unlock(struct rq *rq1, struct rq *rq2)
-
- static void update_sysctl(void);
- static int get_update_sysctl_factor(void);
--static void update_cpu_load(struct rq *this_rq);
-+static void update_idle_cpu_load(struct rq *this_rq);
-
- static inline void __set_task_cpu(struct task_struct *p, unsigned int cpu)
- {
-@@ -3855,22 +3855,13 @@ decay_load_missed(unsigned long load, unsigned long missed_updates, int idx)
- * scheduler tick (TICK_NSEC). With tickless idle this will not be called
- * every tick. We fix it up based on jiffies.
- */
--static void update_cpu_load(struct rq *this_rq)
-+static void __update_cpu_load(struct rq *this_rq, unsigned long this_load,
-+ unsigned long pending_updates)
- {
-- unsigned long this_load = this_rq->load.weight;
-- unsigned long curr_jiffies = jiffies;
-- unsigned long pending_updates;
- int i, scale;
-
- this_rq->nr_load_updates++;
-
-- /* Avoid repeated calls on same jiffy, when moving in and out of idle */
-- if (curr_jiffies == this_rq->last_load_update_tick)
-- return;
--
-- pending_updates = curr_jiffies - this_rq->last_load_update_tick;
-- this_rq->last_load_update_tick = curr_jiffies;
--
- /* Update our load: */
- this_rq->cpu_load[0] = this_load; /* Fasttrack for idx 0 */
- for (i = 1, scale = 2; i < CPU_LOAD_IDX_MAX; i++, scale += scale) {
-@@ -3895,9 +3886,45 @@ static void update_cpu_load(struct rq *this_rq)
- sched_avg_update(this_rq);
- }
-
-+/*
-+ * Called from nohz_idle_balance() to update the load ratings before doing the
-+ * idle balance.
-+ */
-+static void update_idle_cpu_load(struct rq *this_rq)
-+{
-+ unsigned long curr_jiffies = jiffies;
-+ unsigned long load = this_rq->load.weight;
-+ unsigned long pending_updates;
-+
-+ /*
-+ * Bloody broken means of dealing with nohz, but better than nothing..
-+ * jiffies is updated by one cpu, another cpu can drift wrt the jiffy
-+ * update and see 0 difference the one time and 2 the next, even though
-+ * we ticked at roughtly the same rate.
-+ *
-+ * Hence we only use this from nohz_idle_balance() and skip this
-+ * nonsense when called from the scheduler_tick() since that's
-+ * guaranteed a stable rate.
-+ */
-+ if (load || curr_jiffies == this_rq->last_load_update_tick)
-+ return;
-+
-+ pending_updates = curr_jiffies - this_rq->last_load_update_tick;
-+ this_rq->last_load_update_tick = curr_jiffies;
-+
-+ __update_cpu_load(this_rq, load, pending_updates);
-+}
-+
-+/*
-+ * Called from scheduler_tick()
-+ */
- static void update_cpu_load_active(struct rq *this_rq)
- {
-- update_cpu_load(this_rq);
-+ /*
-+ * See the mess in update_idle_cpu_load().
-+ */
-+ this_rq->last_load_update_tick = jiffies;
-+ __update_cpu_load(this_rq, this_rq->load.weight, 1);
-
- calc_load_account_active(this_rq);
- }
-diff --git a/kernel/sched_fair.c b/kernel/sched_fair.c
-index 8a39fa3..66e4576 100644
---- a/kernel/sched_fair.c
-+++ b/kernel/sched_fair.c
-@@ -4735,7 +4735,7 @@ static void nohz_idle_balance(int this_cpu, enum cpu_idle_type idle)
-
- raw_spin_lock_irq(&this_rq->lock);
- update_rq_clock(this_rq);
-- update_cpu_load(this_rq);
-+ update_idle_cpu_load(this_rq);
- raw_spin_unlock_irq(&this_rq->lock);
-
- rebalance_domains(balance_cpu, CPU_IDLE);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0019-sched-nohz-Fix-rq-cpu_load-calculations-some-more.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0019-sched-nohz-Fix-rq-cpu_load-calculations-some-more.patch
deleted file mode 100644
index 130bbe6..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0019-sched-nohz-Fix-rq-cpu_load-calculations-some-more.patch
+++ /dev/null
@@ -1,147 +0,0 @@
-From 5886fe4d82654fa7b041fcc2dd81794d28e2f0a7 Mon Sep 17 00:00:00 2001
-From: Peter Zijlstra <a.p.zijlstra at chello.nl>
-Date: Thu, 17 May 2012 17:15:29 +0200
-Subject: [PATCH 19/73] sched/nohz: Fix rq->cpu_load calculations some more
-
-commit 5aaa0b7a2ed5b12692c9ffb5222182bd558d3146 upstream.
-
-Follow up on commit 556061b00 ("sched/nohz: Fix rq->cpu_load[]
-calculations") since while that fixed the busy case it regressed the
-mostly idle case.
-
-Add a callback from the nohz exit to also age the rq->cpu_load[]
-array. This closes the hole where either there was no nohz load
-balance pass during the nohz, or there was a 'significant' amount of
-idle time between the last nohz balance and the nohz exit.
-
-So we'll update unconditionally from the tick to not insert any
-accidental 0 load periods while busy, and we try and catch up from
-nohz idle balance and nohz exit. Both these are still prone to missing
-a jiffy, but that has always been the case.
-
-Signed-off-by: Peter Zijlstra <a.p.zijlstra at chello.nl>
-Cc: pjt at google.com
-Cc: Venkatesh Pallipadi <venki at google.com>
-Link: http://lkml.kernel.org/n/tip-kt0trz0apodbf84ucjfdbr1a@git.kernel.org
-Signed-off-by: Ingo Molnar <mingo at kernel.org>
-[bwh: Backported to 3.2: adjust filenames and context]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- include/linux/sched.h | 1 +
- kernel/sched.c | 53 +++++++++++++++++++++++++++++++++++++--------
- kernel/time/tick-sched.c | 1 +
- 3 files changed, 45 insertions(+), 10 deletions(-)
-
-diff --git a/include/linux/sched.h b/include/linux/sched.h
-index a96cb8c..d336c35 100644
---- a/include/linux/sched.h
-+++ b/include/linux/sched.h
-@@ -145,6 +145,7 @@ extern unsigned long this_cpu_load(void);
-
-
- extern void calc_global_load(unsigned long ticks);
-+extern void update_cpu_load_nohz(void);
-
- extern unsigned long get_parent_ip(unsigned long addr);
-
-diff --git a/kernel/sched.c b/kernel/sched.c
-index a409d81..9cd8ca7 100644
---- a/kernel/sched.c
-+++ b/kernel/sched.c
-@@ -3886,25 +3886,32 @@ static void __update_cpu_load(struct rq *this_rq, unsigned long this_load,
- sched_avg_update(this_rq);
- }
-
-+#ifdef CONFIG_NO_HZ
-+/*
-+ * There is no sane way to deal with nohz on smp when using jiffies because the
-+ * cpu doing the jiffies update might drift wrt the cpu doing the jiffy reading
-+ * causing off-by-one errors in observed deltas; {0,2} instead of {1,1}.
-+ *
-+ * Therefore we cannot use the delta approach from the regular tick since that
-+ * would seriously skew the load calculation. However we'll make do for those
-+ * updates happening while idle (nohz_idle_balance) or coming out of idle
-+ * (tick_nohz_idle_exit).
-+ *
-+ * This means we might still be one tick off for nohz periods.
-+ */
-+
- /*
- * Called from nohz_idle_balance() to update the load ratings before doing the
- * idle balance.
- */
- static void update_idle_cpu_load(struct rq *this_rq)
- {
-- unsigned long curr_jiffies = jiffies;
-+ unsigned long curr_jiffies = ACCESS_ONCE(jiffies);
- unsigned long load = this_rq->load.weight;
- unsigned long pending_updates;
-
- /*
-- * Bloody broken means of dealing with nohz, but better than nothing..
-- * jiffies is updated by one cpu, another cpu can drift wrt the jiffy
-- * update and see 0 difference the one time and 2 the next, even though
-- * we ticked at roughtly the same rate.
-- *
-- * Hence we only use this from nohz_idle_balance() and skip this
-- * nonsense when called from the scheduler_tick() since that's
-- * guaranteed a stable rate.
-+ * bail if there's load or we're actually up-to-date.
- */
- if (load || curr_jiffies == this_rq->last_load_update_tick)
- return;
-@@ -3916,12 +3923,38 @@ static void update_idle_cpu_load(struct rq *this_rq)
- }
-
- /*
-+ * Called from tick_nohz_idle_exit() -- try and fix up the ticks we missed.
-+ */
-+void update_cpu_load_nohz(void)
-+{
-+ struct rq *this_rq = this_rq();
-+ unsigned long curr_jiffies = ACCESS_ONCE(jiffies);
-+ unsigned long pending_updates;
-+
-+ if (curr_jiffies == this_rq->last_load_update_tick)
-+ return;
-+
-+ raw_spin_lock(&this_rq->lock);
-+ pending_updates = curr_jiffies - this_rq->last_load_update_tick;
-+ if (pending_updates) {
-+ this_rq->last_load_update_tick = curr_jiffies;
-+ /*
-+ * We were idle, this means load 0, the current load might be
-+ * !0 due to remote wakeups and the sort.
-+ */
-+ __update_cpu_load(this_rq, 0, pending_updates);
-+ }
-+ raw_spin_unlock(&this_rq->lock);
-+}
-+#endif /* CONFIG_NO_HZ */
-+
-+/*
- * Called from scheduler_tick()
- */
- static void update_cpu_load_active(struct rq *this_rq)
- {
- /*
-- * See the mess in update_idle_cpu_load().
-+ * See the mess around update_idle_cpu_load() / update_cpu_load_nohz().
- */
- this_rq->last_load_update_tick = jiffies;
- __update_cpu_load(this_rq, this_rq->load.weight, 1);
-diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c
-index 9955ebd..793548c 100644
---- a/kernel/time/tick-sched.c
-+++ b/kernel/time/tick-sched.c
-@@ -549,6 +549,7 @@ void tick_nohz_restart_sched_tick(void)
- /* Update jiffies first */
- select_nohz_load_balancer(0);
- tick_do_update_jiffies64(now);
-+ update_cpu_load_nohz();
-
- #ifndef CONFIG_VIRT_CPU_ACCOUNTING
- /*
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0020-powerpc-ftrace-Fix-assembly-trampoline-register-usag.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0020-powerpc-ftrace-Fix-assembly-trampoline-register-usag.patch
deleted file mode 100644
index f55431d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0020-powerpc-ftrace-Fix-assembly-trampoline-register-usag.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From 033f6d41630ea9916446d27526cad10233c43839 Mon Sep 17 00:00:00 2001
-From: roger blofeld <blofeldus at yahoo.com>
-Date: Thu, 21 Jun 2012 05:27:14 +0000
-Subject: [PATCH 20/73] powerpc/ftrace: Fix assembly trampoline register usage
-
-commit fd5a42980e1cf327b7240adf5e7b51ea41c23437 upstream.
-
-Just like the module loader, ftrace needs to be updated to use r12
-instead of r11 with newer gcc's.
-
-Signed-off-by: Roger Blofeld <blofeldus at yahoo.com>
-Signed-off-by: Benjamin Herrenschmidt <benh at kernel.crashing.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/powerpc/kernel/ftrace.c | 12 ++++++------
- 1 files changed, 6 insertions(+), 6 deletions(-)
-
-diff --git a/arch/powerpc/kernel/ftrace.c b/arch/powerpc/kernel/ftrace.c
-index bf99cfa..6324008 100644
---- a/arch/powerpc/kernel/ftrace.c
-+++ b/arch/powerpc/kernel/ftrace.c
-@@ -245,9 +245,9 @@ __ftrace_make_nop(struct module *mod,
-
- /*
- * On PPC32 the trampoline looks like:
-- * 0x3d, 0x60, 0x00, 0x00 lis r11,sym at ha
-- * 0x39, 0x6b, 0x00, 0x00 addi r11,r11,sym at l
-- * 0x7d, 0x69, 0x03, 0xa6 mtctr r11
-+ * 0x3d, 0x80, 0x00, 0x00 lis r12,sym at ha
-+ * 0x39, 0x8c, 0x00, 0x00 addi r12,r12,sym at l
-+ * 0x7d, 0x89, 0x03, 0xa6 mtctr r12
- * 0x4e, 0x80, 0x04, 0x20 bctr
- */
-
-@@ -262,9 +262,9 @@ __ftrace_make_nop(struct module *mod,
- pr_devel(" %08x %08x ", jmp[0], jmp[1]);
-
- /* verify that this is what we expect it to be */
-- if (((jmp[0] & 0xffff0000) != 0x3d600000) ||
-- ((jmp[1] & 0xffff0000) != 0x396b0000) ||
-- (jmp[2] != 0x7d6903a6) ||
-+ if (((jmp[0] & 0xffff0000) != 0x3d800000) ||
-+ ((jmp[1] & 0xffff0000) != 0x398c0000) ||
-+ (jmp[2] != 0x7d8903a6) ||
- (jmp[3] != 0x4e800420)) {
- printk(KERN_ERR "Not a trampoline\n");
- return -EINVAL;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0021-cx25821-Remove-bad-strcpy-to-read-only-char.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0021-cx25821-Remove-bad-strcpy-to-read-only-char.patch
deleted file mode 100644
index bc425dc..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0021-cx25821-Remove-bad-strcpy-to-read-only-char.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From 030eee1110a4bb7e4bce1cb32eb0f1a4fbd9923a Mon Sep 17 00:00:00 2001
-From: Ezequiel Garcia <elezegarcia at gmail.com>
-Date: Wed, 18 Jul 2012 10:05:26 -0300
-Subject: [PATCH 21/73] cx25821: Remove bad strcpy to read-only char*
-
-commit 380e99fc44d79bc35af9ff1d3316ef4027ce775e upstream.
-
-The strcpy was being used to set the name of the board. Since the
-destination char* was read-only and the name is set statically at
-compile time; this was both wrong and redundant.
-
-The type of char* is changed to const char* to prevent future errors.
-
-Reported-by: Radek Masin <radek at masin.eu>
-Signed-off-by: Ezequiel Garcia <elezegarcia at gmail.com>
-[ Taking directly due to vacations - Linus ]
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/media/video/cx25821/cx25821-core.c | 3 ---
- drivers/media/video/cx25821/cx25821.h | 2 +-
- 2 files changed, 1 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/media/video/cx25821/cx25821-core.c b/drivers/media/video/cx25821/cx25821-core.c
-index a7fa38f..e572ce5 100644
---- a/drivers/media/video/cx25821/cx25821-core.c
-+++ b/drivers/media/video/cx25821/cx25821-core.c
-@@ -914,9 +914,6 @@ static int cx25821_dev_setup(struct cx25821_dev *dev)
- list_add_tail(&dev->devlist, &cx25821_devlist);
- mutex_unlock(&cx25821_devlist_mutex);
-
-- strcpy(cx25821_boards[UNKNOWN_BOARD].name, "unknown");
-- strcpy(cx25821_boards[CX25821_BOARD].name, "cx25821");
--
- if (dev->pci->device != 0x8210) {
- pr_info("%s(): Exiting. Incorrect Hardware device = 0x%02x\n",
- __func__, dev->pci->device);
-diff --git a/drivers/media/video/cx25821/cx25821.h b/drivers/media/video/cx25821/cx25821.h
-index 2d2d009..bf54360 100644
---- a/drivers/media/video/cx25821/cx25821.h
-+++ b/drivers/media/video/cx25821/cx25821.h
-@@ -187,7 +187,7 @@ enum port {
- };
-
- struct cx25821_board {
-- char *name;
-+ const char *name;
- enum port porta;
- enum port portb;
- enum port portc;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0022-x86-Fix-boot-on-Twinhead-H12Y.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0022-x86-Fix-boot-on-Twinhead-H12Y.patch
deleted file mode 100644
index b5eccde..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0022-x86-Fix-boot-on-Twinhead-H12Y.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From 25b4c57c33b9972f3b03d5a74c827b27cd9babcf Mon Sep 17 00:00:00 2001
-From: Alan Cox <alan at linux.intel.com>
-Date: Tue, 15 May 2012 18:44:15 +0100
-Subject: [PATCH 22/73] x86: Fix boot on Twinhead H12Y
-
-commit 80b3e557371205566a71e569fbfcce5b11f92dbe upstream.
-
-Despite lots of investigation into why this is needed we don't
-know or have an elegant cure. The only answer found on this
-laptop is to mark a problem region as used so that Linux doesn't
-put anything there.
-
-Currently all the users add reserve= command lines and anyone
-not knowing this needs to find the magic page that documents it.
-Automate it instead.
-
-Signed-off-by: Alan Cox <alan at linux.intel.com>
-Tested-and-bugfixed-by: Arne Fitzenreiter <arne at fitzenreiter.de>
-Resolves-bug: https://bugzilla.kernel.org/show_bug.cgi?id=10231
-Link: http://lkml.kernel.org/r/20120515174347.5109.94551.stgit@bluebook
-Signed-off-by: Ingo Molnar <mingo at kernel.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/x86/pci/fixup.c | 17 +++++++++++++++++
- 1 files changed, 17 insertions(+), 0 deletions(-)
-
-diff --git a/arch/x86/pci/fixup.c b/arch/x86/pci/fixup.c
-index 6dd8955..0951b81 100644
---- a/arch/x86/pci/fixup.c
-+++ b/arch/x86/pci/fixup.c
-@@ -521,3 +521,20 @@ static void sb600_disable_hpet_bar(struct pci_dev *dev)
- }
- }
- DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_ATI, 0x4385, sb600_disable_hpet_bar);
-+
-+/*
-+ * Twinhead H12Y needs us to block out a region otherwise we map devices
-+ * there and any access kills the box.
-+ *
-+ * See: https://bugzilla.kernel.org/show_bug.cgi?id=10231
-+ *
-+ * Match off the LPC and svid/sdid (older kernels lose the bridge subvendor)
-+ */
-+static void __devinit twinhead_reserve_killing_zone(struct pci_dev *dev)
-+{
-+ if (dev->subsystem_vendor == 0x14FF && dev->subsystem_device == 0xA003) {
-+ pr_info("Reserving memory on Twinhead H12Y\n");
-+ request_mem_region(0xFFB00000, 0x100000, "twinhead");
-+ }
-+}
-+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x27B9, twinhead_reserve_killing_zone);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0023-r8169-RxConfig-hack-for-the-8168evl.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0023-r8169-RxConfig-hack-for-the-8168evl.patch
deleted file mode 100644
index 35d29c7..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0023-r8169-RxConfig-hack-for-the-8168evl.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 57961c5a47473e6a6aa03292828484bb2d293f04 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?fran=C3=A7ois=20romieu?= <romieu at fr.zoreil.com>
-Date: Wed, 20 Jun 2012 12:09:18 +0000
-Subject: [PATCH 23/73] r8169: RxConfig hack for the 8168evl.
-
-commit eb2dc35d99028b698cdedba4f5522bc43e576bd2 upstream.
-
-The 8168evl (RTL_GIGA_MAC_VER_34) based Gigabyte GA-990FXA motherboards
-are very prone to NETDEV watchdog problems without this change. See
-https://bugzilla.kernel.org/show_bug.cgi?id=42899 for instance.
-
-I don't know why it *works*. It's depressingly effective though.
-
-For the record:
-- the problem may go along IOMMU (AMD-Vi) errors but it really looks
- like a red herring.
-- the patch sets the RX_MULTI_EN bit. If the 8168c doc is any guide,
- the chipset now fetches several Rx descriptors at a time.
-- long ago the driver ignored the RX_MULTI_EN bit.
- e542a2269f232d61270ceddd42b73a4348dee2bb changed the RxConfig
- settings. Whatever the problem it's now labeled a regression.
-- Realtek's own driver can identify two different 8168evl devices
- (CFG_METHOD_16 and CFG_METHOD_17) where the r8169 driver only
- sees one. It sucks.
-
-Signed-off-by: Francois Romieu <romieu at fr.zoreil.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/ethernet/realtek/r8169.c | 1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c
-index 9e61d6b..ed1be8a 100644
---- a/drivers/net/ethernet/realtek/r8169.c
-+++ b/drivers/net/ethernet/realtek/r8169.c
-@@ -3770,6 +3770,7 @@ static void rtl_init_rxcfg(struct rtl8169_private *tp)
- case RTL_GIGA_MAC_VER_22:
- case RTL_GIGA_MAC_VER_23:
- case RTL_GIGA_MAC_VER_24:
-+ case RTL_GIGA_MAC_VER_34:
- RTL_W32(RxConfig, RX128_INT_EN | RX_MULTI_EN | RX_DMA_BURST);
- break;
- default:
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0024-cifs-when-CONFIG_HIGHMEM-is-set-serialize-the-read-w.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0024-cifs-when-CONFIG_HIGHMEM-is-set-serialize-the-read-w.patch
deleted file mode 100644
index 004839e..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0024-cifs-when-CONFIG_HIGHMEM-is-set-serialize-the-read-w.patch
+++ /dev/null
@@ -1,124 +0,0 @@
-From 3e3da899949f18869c6958a30a861d89f2d4b73c Mon Sep 17 00:00:00 2001
-From: Jeff Layton <jlayton at redhat.com>
-Date: Wed, 11 Jul 2012 09:09:36 -0400
-Subject: [PATCH 24/73] cifs: when CONFIG_HIGHMEM is set, serialize the
- read/write kmaps
-
-commit 3cf003c08be785af4bee9ac05891a15bcbff856a upstream.
-
-Jian found that when he ran fsx on a 32 bit arch with a large wsize the
-process and one of the bdi writeback kthreads would sometimes deadlock
-with a stack trace like this:
-
-crash> bt
-PID: 2789 TASK: f02edaa0 CPU: 3 COMMAND: "fsx"
- #0 [eed63cbc] schedule at c083c5b3
- #1 [eed63d80] kmap_high at c0500ec8
- #2 [eed63db0] cifs_async_writev at f7fabcd7 [cifs]
- #3 [eed63df0] cifs_writepages at f7fb7f5c [cifs]
- #4 [eed63e50] do_writepages at c04f3e32
- #5 [eed63e54] __filemap_fdatawrite_range at c04e152a
- #6 [eed63ea4] filemap_fdatawrite at c04e1b3e
- #7 [eed63eb4] cifs_file_aio_write at f7fa111a [cifs]
- #8 [eed63ecc] do_sync_write at c052d202
- #9 [eed63f74] vfs_write at c052d4ee
-#10 [eed63f94] sys_write at c052df4c
-#11 [eed63fb0] ia32_sysenter_target at c0409a98
- EAX: 00000004 EBX: 00000003 ECX: abd73b73 EDX: 012a65c6
- DS: 007b ESI: 012a65c6 ES: 007b EDI: 00000000
- SS: 007b ESP: bf8db178 EBP: bf8db1f8 GS: 0033
- CS: 0073 EIP: 40000424 ERR: 00000004 EFLAGS: 00000246
-
-Each task would kmap part of its address array before getting stuck, but
-not enough to actually issue the write.
-
-This patch fixes this by serializing the marshal_iov operations for
-async reads and writes. The idea here is to ensure that cifs
-aggressively tries to populate a request before attempting to fulfill
-another one. As soon as all of the pages are kmapped for a request, then
-we can unlock and allow another one to proceed.
-
-There's no need to do this serialization on non-CONFIG_HIGHMEM arches
-however, so optimize all of this out when CONFIG_HIGHMEM isn't set.
-
-Reported-by: Jian Li <jiali at redhat.com>
-Signed-off-by: Jeff Layton <jlayton at redhat.com>
-Signed-off-by: Steve French <smfrench at gmail.com>
-[bwh: Backported to 3.2: adjust context]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/cifs/cifssmb.c | 30 ++++++++++++++++++++++++++++++
- 1 files changed, 30 insertions(+), 0 deletions(-)
-
-diff --git a/fs/cifs/cifssmb.c b/fs/cifs/cifssmb.c
-index 6aa7457..c858a29 100644
---- a/fs/cifs/cifssmb.c
-+++ b/fs/cifs/cifssmb.c
-@@ -89,6 +89,32 @@ static struct {
- /* Forward declarations */
- static void cifs_readv_complete(struct work_struct *work);
-
-+#ifdef CONFIG_HIGHMEM
-+/*
-+ * On arches that have high memory, kmap address space is limited. By
-+ * serializing the kmap operations on those arches, we ensure that we don't
-+ * end up with a bunch of threads in writeback with partially mapped page
-+ * arrays, stuck waiting for kmap to come back. That situation prevents
-+ * progress and can deadlock.
-+ */
-+static DEFINE_MUTEX(cifs_kmap_mutex);
-+
-+static inline void
-+cifs_kmap_lock(void)
-+{
-+ mutex_lock(&cifs_kmap_mutex);
-+}
-+
-+static inline void
-+cifs_kmap_unlock(void)
-+{
-+ mutex_unlock(&cifs_kmap_mutex);
-+}
-+#else /* !CONFIG_HIGHMEM */
-+#define cifs_kmap_lock() do { ; } while(0)
-+#define cifs_kmap_unlock() do { ; } while(0)
-+#endif /* CONFIG_HIGHMEM */
-+
- /* Mark as invalid, all open files on tree connections since they
- were closed when session to server was lost */
- static void mark_open_files_invalid(struct cifs_tcon *pTcon)
-@@ -1540,6 +1566,7 @@ cifs_readv_receive(struct TCP_Server_Info *server, struct mid_q_entry *mid)
- eof_index = eof ? (eof - 1) >> PAGE_CACHE_SHIFT : 0;
- cFYI(1, "eof=%llu eof_index=%lu", eof, eof_index);
-
-+ cifs_kmap_lock();
- list_for_each_entry_safe(page, tpage, &rdata->pages, lru) {
- if (remaining >= PAGE_CACHE_SIZE) {
- /* enough data to fill the page */
-@@ -1589,6 +1616,7 @@ cifs_readv_receive(struct TCP_Server_Info *server, struct mid_q_entry *mid)
- page_cache_release(page);
- }
- }
-+ cifs_kmap_unlock();
-
- /* issue the read if we have any iovecs left to fill */
- if (rdata->nr_iov > 1) {
-@@ -2171,6 +2199,7 @@ cifs_async_writev(struct cifs_writedata *wdata)
- iov[0].iov_base = smb;
-
- /* marshal up the pages into iov array */
-+ cifs_kmap_lock();
- wdata->bytes = 0;
- for (i = 0; i < wdata->nr_pages; i++) {
- iov[i + 1].iov_len = min(inode->i_size -
-@@ -2179,6 +2208,7 @@ cifs_async_writev(struct cifs_writedata *wdata)
- iov[i + 1].iov_base = kmap(wdata->pages[i]);
- wdata->bytes += iov[i + 1].iov_len;
- }
-+ cifs_kmap_unlock();
-
- cFYI(1, "async write at %llu %u bytes", wdata->offset, wdata->bytes);
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0025-wireless-rt2x00-rt2800usb-add-more-devices-ids.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0025-wireless-rt2x00-rt2800usb-add-more-devices-ids.patch
deleted file mode 100644
index 71216d7..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0025-wireless-rt2x00-rt2800usb-add-more-devices-ids.patch
+++ /dev/null
@@ -1,89 +0,0 @@
-From 1b993bd614946837177ce94e29f3d6febec2d7dc Mon Sep 17 00:00:00 2001
-From: Xose Vazquez Perez <xose.vazquez at gmail.com>
-Date: Tue, 17 Apr 2012 01:50:32 +0200
-Subject: [PATCH 25/73] wireless: rt2x00: rt2800usb add more devices ids
-
-commit 63b376411173c343bbcb450f95539da91f079e0c upstream.
-
-They were taken from ralink drivers:
-2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO
-2012_03_22_RT5572_Linux_STA_v2.6.0.0_DPO
-
-0x1eda,0x2210 RT3070 Airties
-
-0x083a,0xb511 RT3370 Panasonic
-0x0471,0x20dd RT3370 Philips
-
-0x1690,0x0764 RT35xx Askey
-0x0df6,0x0065 RT35xx Sitecom
-0x0df6,0x0066 RT35xx Sitecom
-0x0df6,0x0068 RT35xx Sitecom
-
-0x2001,0x3c1c RT5370 DLink
-0x2001,0x3c1d RT5370 DLink
-
-2001 is D-Link not Alpha
-
-Signed-off-by: Xose Vazquez Perez <xose.vazquez at gmail.com>
-Acked-by: Gertjan van Wingerde <gwingerde at gmail.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-[bwh: Backported to 3.2: drop the 5372 devices]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/wireless/rt2x00/rt2800usb.c | 12 ++++++++++++
- 1 files changed, 12 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/net/wireless/rt2x00/rt2800usb.c b/drivers/net/wireless/rt2x00/rt2800usb.c
-index 0ffa111..f05a12d 100644
---- a/drivers/net/wireless/rt2x00/rt2800usb.c
-+++ b/drivers/net/wireless/rt2x00/rt2800usb.c
-@@ -876,6 +876,7 @@ static struct usb_device_id rt2800usb_device_table[] = {
- { USB_DEVICE(0x1482, 0x3c09) },
- /* AirTies */
- { USB_DEVICE(0x1eda, 0x2012) },
-+ { USB_DEVICE(0x1eda, 0x2210) },
- { USB_DEVICE(0x1eda, 0x2310) },
- /* Allwin */
- { USB_DEVICE(0x8516, 0x2070) },
-@@ -1088,6 +1089,10 @@ static struct usb_device_id rt2800usb_device_table[] = {
- #ifdef CONFIG_RT2800USB_RT33XX
- /* Belkin */
- { USB_DEVICE(0x050d, 0x945b) },
-+ /* Panasonic */
-+ { USB_DEVICE(0x083a, 0xb511) },
-+ /* Philips */
-+ { USB_DEVICE(0x0471, 0x20dd) },
- /* Ralink */
- { USB_DEVICE(0x148f, 0x3370) },
- { USB_DEVICE(0x148f, 0x8070) },
-@@ -1099,6 +1104,7 @@ static struct usb_device_id rt2800usb_device_table[] = {
- { USB_DEVICE(0x8516, 0x3572) },
- /* Askey */
- { USB_DEVICE(0x1690, 0x0744) },
-+ { USB_DEVICE(0x1690, 0x0764) },
- /* Cisco */
- { USB_DEVICE(0x167b, 0x4001) },
- /* EnGenius */
-@@ -1113,6 +1119,9 @@ static struct usb_device_id rt2800usb_device_table[] = {
- /* Sitecom */
- { USB_DEVICE(0x0df6, 0x0041) },
- { USB_DEVICE(0x0df6, 0x0062) },
-+ { USB_DEVICE(0x0df6, 0x0065) },
-+ { USB_DEVICE(0x0df6, 0x0066) },
-+ { USB_DEVICE(0x0df6, 0x0068) },
- /* Toshiba */
- { USB_DEVICE(0x0930, 0x0a07) },
- /* Zinwell */
-@@ -1122,6 +1131,9 @@ static struct usb_device_id rt2800usb_device_table[] = {
- /* Azurewave */
- { USB_DEVICE(0x13d3, 0x3329) },
- { USB_DEVICE(0x13d3, 0x3365) },
-+ /* D-Link */
-+ { USB_DEVICE(0x2001, 0x3c1c) },
-+ { USB_DEVICE(0x2001, 0x3c1d) },
- /* Ralink */
- { USB_DEVICE(0x148f, 0x5370) },
- { USB_DEVICE(0x148f, 0x5372) },
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0026-wireless-rt2x00-rt2800usb-more-devices-were-identifi.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0026-wireless-rt2x00-rt2800usb-more-devices-were-identifi.patch
deleted file mode 100644
index afed137..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0026-wireless-rt2x00-rt2800usb-more-devices-were-identifi.patch
+++ /dev/null
@@ -1,79 +0,0 @@
-From 53157c2a7eda6ba98def241f183a06a6f28f852f Mon Sep 17 00:00:00 2001
-From: Xose Vazquez Perez <xose.vazquez at gmail.com>
-Date: Tue, 17 Apr 2012 16:28:05 +0200
-Subject: [PATCH 26/73] wireless: rt2x00: rt2800usb more devices were
- identified
-
-commit e828b9fb4f6c3513950759d5fb902db5bd054048 upstream.
-
-found in 2012_03_22_RT5572_Linux_STA_v2.6.0.0_DPO
-
-RT3070:
-(0x2019,0x5201) Planex Communications, Inc. RT8070
-(0x7392,0x4085) 2L Central Europe BV 8070
-7392 is Edimax
-
-RT35xx:
-(0x1690,0x0761) Askey
-was Fujitsu Stylistic 550, but 1690 is Askey
-
-Signed-off-by: Xose Vazquez Perez <xose.vazquez at gmail.com>
-Acked-by: Gertjan van Wingerde <gwingerde at gmail.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/wireless/rt2x00/rt2800usb.c | 8 +++-----
- 1 files changed, 3 insertions(+), 5 deletions(-)
-
-diff --git a/drivers/net/wireless/rt2x00/rt2800usb.c b/drivers/net/wireless/rt2x00/rt2800usb.c
-index f05a12d..76ebba4 100644
---- a/drivers/net/wireless/rt2x00/rt2800usb.c
-+++ b/drivers/net/wireless/rt2x00/rt2800usb.c
-@@ -946,6 +946,7 @@ static struct usb_device_id rt2800usb_device_table[] = {
- /* DVICO */
- { USB_DEVICE(0x0fe9, 0xb307) },
- /* Edimax */
-+ { USB_DEVICE(0x7392, 0x4085) },
- { USB_DEVICE(0x7392, 0x7711) },
- { USB_DEVICE(0x7392, 0x7717) },
- { USB_DEVICE(0x7392, 0x7718) },
-@@ -1021,6 +1022,7 @@ static struct usb_device_id rt2800usb_device_table[] = {
- /* Philips */
- { USB_DEVICE(0x0471, 0x200f) },
- /* Planex */
-+ { USB_DEVICE(0x2019, 0x5201) },
- { USB_DEVICE(0x2019, 0xab25) },
- { USB_DEVICE(0x2019, 0xed06) },
- /* Quanta */
-@@ -1104,6 +1106,7 @@ static struct usb_device_id rt2800usb_device_table[] = {
- { USB_DEVICE(0x8516, 0x3572) },
- /* Askey */
- { USB_DEVICE(0x1690, 0x0744) },
-+ { USB_DEVICE(0x1690, 0x0761) },
- { USB_DEVICE(0x1690, 0x0764) },
- /* Cisco */
- { USB_DEVICE(0x167b, 0x4001) },
-@@ -1176,12 +1179,8 @@ static struct usb_device_id rt2800usb_device_table[] = {
- { USB_DEVICE(0x07d1, 0x3c0b) },
- { USB_DEVICE(0x07d1, 0x3c17) },
- { USB_DEVICE(0x2001, 0x3c17) },
-- /* Edimax */
-- { USB_DEVICE(0x7392, 0x4085) },
- /* Encore */
- { USB_DEVICE(0x203d, 0x14a1) },
-- /* Fujitsu Stylistic 550 */
-- { USB_DEVICE(0x1690, 0x0761) },
- /* Gemtek */
- { USB_DEVICE(0x15a9, 0x0010) },
- /* Gigabyte */
-@@ -1202,7 +1201,6 @@ static struct usb_device_id rt2800usb_device_table[] = {
- { USB_DEVICE(0x05a6, 0x0101) },
- { USB_DEVICE(0x1d4d, 0x0010) },
- /* Planex */
-- { USB_DEVICE(0x2019, 0x5201) },
- { USB_DEVICE(0x2019, 0xab24) },
- /* Qcom */
- { USB_DEVICE(0x18e8, 0x6259) },
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0027-rt2800usb-2001-3c17-is-an-RT3370-device.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0027-rt2800usb-2001-3c17-is-an-RT3370-device.patch
deleted file mode 100644
index fb65d15..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0027-rt2800usb-2001-3c17-is-an-RT3370-device.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From b35733e76251b308e5a65e60630261571c85f9f3 Mon Sep 17 00:00:00 2001
-From: Albert Pool <albertpool at solcon.nl>
-Date: Mon, 14 May 2012 18:08:32 +0200
-Subject: [PATCH 27/73] rt2800usb: 2001:3c17 is an RT3370 device
-
-commit 8fd9d059af12786341dec5a688e607bcdb372238 upstream.
-
-D-Link DWA-123 rev A1
-
-Signed-off-by: Albert Pool<albertpool at solcon.nl>
-Acked-by: Gertjan van Wingerde <gwingerde at gmail.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/wireless/rt2x00/rt2800usb.c | 3 ++-
- 1 files changed, 2 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/net/wireless/rt2x00/rt2800usb.c b/drivers/net/wireless/rt2x00/rt2800usb.c
-index 76ebba4..bdf960b 100644
---- a/drivers/net/wireless/rt2x00/rt2800usb.c
-+++ b/drivers/net/wireless/rt2x00/rt2800usb.c
-@@ -1091,6 +1091,8 @@ static struct usb_device_id rt2800usb_device_table[] = {
- #ifdef CONFIG_RT2800USB_RT33XX
- /* Belkin */
- { USB_DEVICE(0x050d, 0x945b) },
-+ /* D-Link */
-+ { USB_DEVICE(0x2001, 0x3c17) },
- /* Panasonic */
- { USB_DEVICE(0x083a, 0xb511) },
- /* Philips */
-@@ -1178,7 +1180,6 @@ static struct usb_device_id rt2800usb_device_table[] = {
- /* D-Link */
- { USB_DEVICE(0x07d1, 0x3c0b) },
- { USB_DEVICE(0x07d1, 0x3c17) },
-- { USB_DEVICE(0x2001, 0x3c17) },
- /* Encore */
- { USB_DEVICE(0x203d, 0x14a1) },
- /* Gemtek */
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0028-usb-gadget-Fix-g_ether-interface-link-status.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0028-usb-gadget-Fix-g_ether-interface-link-status.patch
deleted file mode 100644
index 2dcadb8..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0028-usb-gadget-Fix-g_ether-interface-link-status.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From f91bc4d604edd5b09021245b6643cfeebc707f2b Mon Sep 17 00:00:00 2001
-From: Kevin Cernekee <cernekee at gmail.com>
-Date: Sun, 24 Jun 2012 21:11:22 -0700
-Subject: [PATCH 28/73] usb: gadget: Fix g_ether interface link status
-
-commit 31bde1ceaa873bcaecd49e829bfabceacc4c512d upstream.
-
-A "usb0" interface that has never been connected to a host has an unknown
-operstate, and therefore the IFF_RUNNING flag is (incorrectly) asserted
-when queried by ifconfig, ifplugd, etc. This is a result of calling
-netif_carrier_off() too early in the probe function; it should be called
-after register_netdev().
-
-Similar problems have been fixed in many other drivers, e.g.:
-
- e826eafa6 (bonding: Call netif_carrier_off after register_netdevice)
- 0d672e9f8 (drivers/net: Call netif_carrier_off at the end of the probe)
- 6a3c869a6 (cxgb4: fix reported state of interfaces without link)
-
-Fix is to move netif_carrier_off() to the end of the function.
-
-Signed-off-by: Kevin Cernekee <cernekee at gmail.com>
-Signed-off-by: Felipe Balbi <balbi at ti.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/gadget/u_ether.c | 12 ++++++------
- 1 files changed, 6 insertions(+), 6 deletions(-)
-
-diff --git a/drivers/usb/gadget/u_ether.c b/drivers/usb/gadget/u_ether.c
-index 29c854b..4e1f0aa 100644
---- a/drivers/usb/gadget/u_ether.c
-+++ b/drivers/usb/gadget/u_ether.c
-@@ -796,12 +796,6 @@ int gether_setup(struct usb_gadget *g, u8 ethaddr[ETH_ALEN])
-
- SET_ETHTOOL_OPS(net, &ops);
-
-- /* two kinds of host-initiated state changes:
-- * - iff DATA transfer is active, carrier is "on"
-- * - tx queueing enabled if open *and* carrier is "on"
-- */
-- netif_carrier_off(net);
--
- dev->gadget = g;
- SET_NETDEV_DEV(net, &g->dev);
- SET_NETDEV_DEVTYPE(net, &gadget_type);
-@@ -815,6 +809,12 @@ int gether_setup(struct usb_gadget *g, u8 ethaddr[ETH_ALEN])
- INFO(dev, "HOST MAC %pM\n", dev->host_mac);
-
- the_dev = dev;
-+
-+ /* two kinds of host-initiated state changes:
-+ * - iff DATA transfer is active, carrier is "on"
-+ * - tx queueing enabled if open *and* carrier is "on"
-+ */
-+ netif_carrier_off(net);
- }
-
- return status;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0029-ext4-pass-a-char-to-ext4_count_free-instead-of-a-buf.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0029-ext4-pass-a-char-to-ext4_count_free-instead-of-a-buf.patch
deleted file mode 100644
index 9286436..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0029-ext4-pass-a-char-to-ext4_count_free-instead-of-a-buf.patch
+++ /dev/null
@@ -1,88 +0,0 @@
-From e872f4ac0de4e1898a669e2c8a7185ef76f266fb Mon Sep 17 00:00:00 2001
-From: Theodore Ts'o <tytso at mit.edu>
-Date: Sat, 30 Jun 2012 19:14:57 -0400
-Subject: [PATCH 29/73] ext4: pass a char * to ext4_count_free() instead of a
- buffer_head ptr
-
-commit f6fb99cadcd44660c68e13f6eab28333653621e6 upstream.
-
-Make it possible for ext4_count_free to operate on buffers and not
-just data in buffer_heads.
-
-Signed-off-by: "Theodore Ts'o" <tytso at mit.edu>
-[bwh: Backported to 3.2: adjust context]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/ext4/balloc.c | 3 ++-
- fs/ext4/bitmap.c | 8 +++-----
- fs/ext4/ext4.h | 2 +-
- fs/ext4/ialloc.c | 3 ++-
- 4 files changed, 8 insertions(+), 8 deletions(-)
-
-diff --git a/fs/ext4/balloc.c b/fs/ext4/balloc.c
-index 914bf9e..d6970f7 100644
---- a/fs/ext4/balloc.c
-+++ b/fs/ext4/balloc.c
-@@ -557,7 +557,8 @@ ext4_fsblk_t ext4_count_free_clusters(struct super_block *sb)
- if (bitmap_bh == NULL)
- continue;
-
-- x = ext4_count_free(bitmap_bh, sb->s_blocksize);
-+ x = ext4_count_free(bitmap_bh->b_data,
-+ EXT4_BLOCKS_PER_GROUP(sb) / 8);
- printk(KERN_DEBUG "group %u: stored = %d, counted = %u\n",
- i, ext4_free_group_clusters(sb, gdp), x);
- bitmap_count += x;
-diff --git a/fs/ext4/bitmap.c b/fs/ext4/bitmap.c
-index fa3af81..012faaa 100644
---- a/fs/ext4/bitmap.c
-+++ b/fs/ext4/bitmap.c
-@@ -15,15 +15,13 @@
-
- static const int nibblemap[] = {4, 3, 3, 2, 3, 2, 2, 1, 3, 2, 2, 1, 2, 1, 1, 0};
-
--unsigned int ext4_count_free(struct buffer_head *map, unsigned int numchars)
-+unsigned int ext4_count_free(char *bitmap, unsigned int numchars)
- {
- unsigned int i, sum = 0;
-
-- if (!map)
-- return 0;
- for (i = 0; i < numchars; i++)
-- sum += nibblemap[map->b_data[i] & 0xf] +
-- nibblemap[(map->b_data[i] >> 4) & 0xf];
-+ sum += nibblemap[bitmap[i] & 0xf] +
-+ nibblemap[(bitmap[i] >> 4) & 0xf];
- return sum;
- }
-
-diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h
-index 7b1cd5c..873897c 100644
---- a/fs/ext4/ext4.h
-+++ b/fs/ext4/ext4.h
-@@ -1757,7 +1757,7 @@ struct mmpd_data {
- # define NORET_AND noreturn,
-
- /* bitmap.c */
--extern unsigned int ext4_count_free(struct buffer_head *, unsigned);
-+extern unsigned int ext4_count_free(char *bitmap, unsigned numchars);
-
- /* balloc.c */
- extern unsigned int ext4_block_group(struct super_block *sb,
-diff --git a/fs/ext4/ialloc.c b/fs/ext4/ialloc.c
-index 8fb6844..6266799 100644
---- a/fs/ext4/ialloc.c
-+++ b/fs/ext4/ialloc.c
-@@ -1057,7 +1057,8 @@ unsigned long ext4_count_free_inodes(struct super_block *sb)
- if (!bitmap_bh)
- continue;
-
-- x = ext4_count_free(bitmap_bh, EXT4_INODES_PER_GROUP(sb) / 8);
-+ x = ext4_count_free(bitmap_bh->b_data,
-+ EXT4_INODES_PER_GROUP(sb) / 8);
- printk(KERN_DEBUG "group %lu: stored = %d, counted = %lu\n",
- (unsigned long) i, ext4_free_inodes_count(sb, gdp), x);
- bitmap_count += x;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0030-ftrace-Disable-function-tracing-during-suspend-resum.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0030-ftrace-Disable-function-tracing-during-suspend-resum.patch
deleted file mode 100644
index 3ec5202..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0030-ftrace-Disable-function-tracing-during-suspend-resum.patch
+++ /dev/null
@@ -1,113 +0,0 @@
-From 951ac5885b5a314d394ea0668dedccd7ed9216e5 Mon Sep 17 00:00:00 2001
-From: "Srivatsa S. Bhat" <srivatsa.bhat at linux.vnet.ibm.com>
-Date: Sat, 16 Jun 2012 15:30:45 +0200
-Subject: [PATCH 30/73] ftrace: Disable function tracing during suspend/resume
- and hibernation, again
-
-commit 443772d408a25af62498793f6f805ce3c559309a upstream.
-
-If function tracing is enabled for some of the low-level suspend/resume
-functions, it leads to triple fault during resume from suspend, ultimately
-ending up in a reboot instead of a resume (or a total refusal to come out
-of suspended state, on some machines).
-
-This issue was explained in more detail in commit f42ac38c59e0a03d (ftrace:
-disable tracing for suspend to ram). However, the changes made by that commit
-got reverted by commit cbe2f5a6e84eebb (tracing: allow tracing of
-suspend/resume & hibernation code again). So, unfortunately since things are
-not yet robust enough to allow tracing of low-level suspend/resume functions,
-suspend/resume is still broken when ftrace is enabled.
-
-So fix this by disabling function tracing during suspend/resume & hibernation.
-
-Signed-off-by: Srivatsa S. Bhat <srivatsa.bhat at linux.vnet.ibm.com>
-Signed-off-by: Rafael J. Wysocki <rjw at sisk.pl>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- kernel/power/hibernate.c | 6 ++++++
- kernel/power/suspend.c | 3 +++
- 2 files changed, 9 insertions(+), 0 deletions(-)
-
-diff --git a/kernel/power/hibernate.c b/kernel/power/hibernate.c
-index 7c0d578..013bd2e 100644
---- a/kernel/power/hibernate.c
-+++ b/kernel/power/hibernate.c
-@@ -367,6 +367,7 @@ int hibernation_snapshot(int platform_mode)
- }
-
- suspend_console();
-+ ftrace_stop();
- pm_restrict_gfp_mask();
- error = dpm_suspend(PMSG_FREEZE);
- if (error)
-@@ -392,6 +393,7 @@ int hibernation_snapshot(int platform_mode)
- if (error || !in_suspend)
- pm_restore_gfp_mask();
-
-+ ftrace_start();
- resume_console();
- dpm_complete(msg);
-
-@@ -496,6 +498,7 @@ int hibernation_restore(int platform_mode)
-
- pm_prepare_console();
- suspend_console();
-+ ftrace_stop();
- pm_restrict_gfp_mask();
- error = dpm_suspend_start(PMSG_QUIESCE);
- if (!error) {
-@@ -503,6 +506,7 @@ int hibernation_restore(int platform_mode)
- dpm_resume_end(PMSG_RECOVER);
- }
- pm_restore_gfp_mask();
-+ ftrace_start();
- resume_console();
- pm_restore_console();
- return error;
-@@ -529,6 +533,7 @@ int hibernation_platform_enter(void)
-
- entering_platform_hibernation = true;
- suspend_console();
-+ ftrace_stop();
- error = dpm_suspend_start(PMSG_HIBERNATE);
- if (error) {
- if (hibernation_ops->recover)
-@@ -572,6 +577,7 @@ int hibernation_platform_enter(void)
- Resume_devices:
- entering_platform_hibernation = false;
- dpm_resume_end(PMSG_RESTORE);
-+ ftrace_start();
- resume_console();
-
- Close:
-diff --git a/kernel/power/suspend.c b/kernel/power/suspend.c
-index 4953dc0..af48faa 100644
---- a/kernel/power/suspend.c
-+++ b/kernel/power/suspend.c
-@@ -25,6 +25,7 @@
- #include <linux/export.h>
- #include <linux/suspend.h>
- #include <linux/syscore_ops.h>
-+#include <linux/ftrace.h>
- #include <trace/events/power.h>
-
- #include "power.h"
-@@ -220,6 +221,7 @@ int suspend_devices_and_enter(suspend_state_t state)
- goto Close;
- }
- suspend_console();
-+ ftrace_stop();
- suspend_test_start();
- error = dpm_suspend_start(PMSG_SUSPEND);
- if (error) {
-@@ -239,6 +241,7 @@ int suspend_devices_and_enter(suspend_state_t state)
- suspend_test_start();
- dpm_resume_end(PMSG_RESUME);
- suspend_test_finish("resume devices");
-+ ftrace_start();
- resume_console();
- Close:
- if (suspend_ops->end)
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0031-x86-microcode-microcode_core.c-simple_strtoul-cleanu.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0031-x86-microcode-microcode_core.c-simple_strtoul-cleanu.patch
deleted file mode 100644
index abdc7b1..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0031-x86-microcode-microcode_core.c-simple_strtoul-cleanu.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From a0ac7c345c81631057085b53d0b5de53efb8d241 Mon Sep 17 00:00:00 2001
-From: Shuah Khan <shuahkhan at gmail.com>
-Date: Sun, 6 May 2012 11:11:04 -0600
-Subject: [PATCH 31/73] x86, microcode: microcode_core.c simple_strtoul
- cleanup
-
-commit e826abd523913f63eb03b59746ffb16153c53dc4 upstream.
-
-Change reload_for_cpu() in kernel/microcode_core.c to call kstrtoul()
-instead of calling obsoleted simple_strtoul().
-
-Signed-off-by: Shuah Khan <shuahkhan at gmail.com>
-Reviewed-by: Borislav Petkov <bp at alien8.de>
-Link: http://lkml.kernel.org/r/1336324264.2897.9.camel@lorien2
-Signed-off-by: H. Peter Anvin <hpa at linux.intel.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/x86/kernel/microcode_core.c | 9 ++++-----
- 1 files changed, 4 insertions(+), 5 deletions(-)
-
-diff --git a/arch/x86/kernel/microcode_core.c b/arch/x86/kernel/microcode_core.c
-index 563a09d..19c7af1 100644
---- a/arch/x86/kernel/microcode_core.c
-+++ b/arch/x86/kernel/microcode_core.c
-@@ -298,12 +298,11 @@ static ssize_t reload_store(struct sys_device *dev,
- {
- unsigned long val;
- int cpu = dev->id;
-- int ret = 0;
-- char *end;
-+ ssize_t ret = 0;
-
-- val = simple_strtoul(buf, &end, 0);
-- if (end == buf)
-- return -EINVAL;
-+ ret = kstrtoul(buf, 0, &val);
-+ if (ret)
-+ return ret;
-
- if (val == 1) {
- get_online_cpus();
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0032-x86-microcode-Sanitize-per-cpu-microcode-reloading-i.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0032-x86-microcode-Sanitize-per-cpu-microcode-reloading-i.patch
deleted file mode 100644
index 824c039..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0032-x86-microcode-Sanitize-per-cpu-microcode-reloading-i.patch
+++ /dev/null
@@ -1,92 +0,0 @@
-From 6a7d02f3957e572d5e35fc71df90a3a7311e383d Mon Sep 17 00:00:00 2001
-From: Borislav Petkov <borislav.petkov at amd.com>
-Date: Thu, 21 Jun 2012 14:07:16 +0200
-Subject: [PATCH 32/73] x86, microcode: Sanitize per-cpu microcode reloading
- interface
-
-commit c9fc3f778a6a215ace14ee556067c73982b6d40f upstream.
-
-Microcode reloading in a per-core manner is a very bad idea for both
-major x86 vendors. And the thing is, we have such interface with which
-we can end up with different microcode versions applied on different
-cores of an otherwise homogeneous wrt (family,model,stepping) system.
-
-So turn off the possibility of doing that per core and allow it only
-system-wide.
-
-This is a minimal fix which we'd like to see in stable too thus the
-more-or-less arbitrary decision to allow system-wide reloading only on
-the BSP:
-
-$ echo 1 > /sys/devices/system/cpu/cpu0/microcode/reload
-...
-
-and disable the interface on the other cores:
-
-$ echo 1 > /sys/devices/system/cpu/cpu23/microcode/reload
--bash: echo: write error: Invalid argument
-
-Also, allowing the reload only from one CPU (the BSP in
-that case) doesn't allow the reload procedure to degenerate
-into an O(n^2) deal when triggering reloads from all
-/sys/devices/system/cpu/cpuX/microcode/reload sysfs nodes
-simultaneously.
-
-A more generic fix will follow.
-
-Cc: Henrique de Moraes Holschuh <hmh at hmh.eng.br>
-Cc: Peter Zijlstra <peterz at infradead.org>
-Signed-off-by: Borislav Petkov <borislav.petkov at amd.com>
-Link: http://lkml.kernel.org/r/1340280437-7718-2-git-send-email-bp@amd64.org
-Signed-off-by: H. Peter Anvin <hpa at zytor.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/x86/kernel/microcode_core.c | 26 +++++++++++++++++++-------
- 1 files changed, 19 insertions(+), 7 deletions(-)
-
-diff --git a/arch/x86/kernel/microcode_core.c b/arch/x86/kernel/microcode_core.c
-index 19c7af1..29c95d7 100644
---- a/arch/x86/kernel/microcode_core.c
-+++ b/arch/x86/kernel/microcode_core.c
-@@ -297,19 +297,31 @@ static ssize_t reload_store(struct sys_device *dev,
- const char *buf, size_t size)
- {
- unsigned long val;
-- int cpu = dev->id;
-- ssize_t ret = 0;
-+ int cpu;
-+ ssize_t ret = 0, tmp_ret;
-+
-+ /* allow reload only from the BSP */
-+ if (boot_cpu_data.cpu_index != dev->id)
-+ return -EINVAL;
-
- ret = kstrtoul(buf, 0, &val);
- if (ret)
- return ret;
-
-- if (val == 1) {
-- get_online_cpus();
-- if (cpu_online(cpu))
-- ret = reload_for_cpu(cpu);
-- put_online_cpus();
-+ if (val != 1)
-+ return size;
-+
-+ get_online_cpus();
-+ for_each_online_cpu(cpu) {
-+ tmp_ret = reload_for_cpu(cpu);
-+ if (tmp_ret != 0)
-+ pr_warn("Error reloading microcode on CPU %d\n", cpu);
-+
-+ /* save retval of the first encountered reload error */
-+ if (!ret)
-+ ret = tmp_ret;
- }
-+ put_online_cpus();
-
- if (!ret)
- ret = size;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0033-usbdevfs-Correct-amount-of-data-copied-to-user-in-pr.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0033-usbdevfs-Correct-amount-of-data-copied-to-user-in-pr.patch
deleted file mode 100644
index 044c7d0..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0033-usbdevfs-Correct-amount-of-data-copied-to-user-in-pr.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From ab66ac59913202f29a32377f4e8bcfd730a8f31d Mon Sep 17 00:00:00 2001
-From: Hans de Goede <hdegoede at redhat.com>
-Date: Wed, 4 Jul 2012 09:18:01 +0200
-Subject: [PATCH 33/73] usbdevfs: Correct amount of data copied to user in
- processcompl_compat
-
-commit 2102e06a5f2e414694921f23591f072a5ba7db9f upstream.
-
-iso data buffers may have holes in them if some packets were short, so for
-iso urbs we should always copy the entire buffer, just like the regular
-processcompl does.
-
-Signed-off-by: Hans de Goede <hdegoede at redhat.com>
-Acked-by: Alan Stern <stern at rowland.harvard.edu>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/core/devio.c | 10 +++++++---
- 1 files changed, 7 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/usb/core/devio.c b/drivers/usb/core/devio.c
-index f6ff837..a9df218 100644
---- a/drivers/usb/core/devio.c
-+++ b/drivers/usb/core/devio.c
-@@ -1555,10 +1555,14 @@ static int processcompl_compat(struct async *as, void __user * __user *arg)
- void __user *addr = as->userurb;
- unsigned int i;
-
-- if (as->userbuffer && urb->actual_length)
-- if (copy_to_user(as->userbuffer, urb->transfer_buffer,
-- urb->actual_length))
-+ if (as->userbuffer && urb->actual_length) {
-+ if (urb->number_of_packets > 0) /* Isochronous */
-+ i = urb->transfer_buffer_length;
-+ else /* Non-Isoc */
-+ i = urb->actual_length;
-+ if (copy_to_user(as->userbuffer, urb->transfer_buffer, i))
- return -EFAULT;
-+ }
- if (put_user(as->status, &userurb->status))
- return -EFAULT;
- if (put_user(urb->actual_length, &userurb->actual_length))
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0034-ext4-fix-overhead-calculation-used-by-ext4_statfs.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0034-ext4-fix-overhead-calculation-used-by-ext4_statfs.patch
deleted file mode 100644
index 3fc3812..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0034-ext4-fix-overhead-calculation-used-by-ext4_statfs.patch
+++ /dev/null
@@ -1,294 +0,0 @@
-From 838475547b3c83537e291b997da546b518f591b3 Mon Sep 17 00:00:00 2001
-From: Theodore Ts'o <tytso at mit.edu>
-Date: Mon, 9 Jul 2012 16:27:05 -0400
-Subject: [PATCH 34/73] ext4: fix overhead calculation used by ext4_statfs()
-
-commit 952fc18ef9ec707ebdc16c0786ec360295e5ff15 upstream.
-
-Commit f975d6bcc7a introduced bug which caused ext4_statfs() to
-miscalculate the number of file system overhead blocks. This causes
-the f_blocks field in the statfs structure to be larger than it should
-be. This would in turn cause the "df" output to show the number of
-data blocks in the file system and the number of data blocks used to
-be larger than they should be.
-
-Signed-off-by: "Theodore Ts'o" <tytso at mit.edu>
-[bwh: Backported to 3.2: adjust context]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/ext4/bitmap.c | 4 -
- fs/ext4/ext4.h | 4 +-
- fs/ext4/resize.c | 5 ++
- fs/ext4/super.c | 174 ++++++++++++++++++++++++++++++++++++++----------------
- 4 files changed, 131 insertions(+), 56 deletions(-)
-
-diff --git a/fs/ext4/bitmap.c b/fs/ext4/bitmap.c
-index 012faaa..bbde5d5 100644
---- a/fs/ext4/bitmap.c
-+++ b/fs/ext4/bitmap.c
-@@ -11,8 +11,6 @@
- #include <linux/jbd2.h>
- #include "ext4.h"
-
--#ifdef EXT4FS_DEBUG
--
- static const int nibblemap[] = {4, 3, 3, 2, 3, 2, 2, 1, 3, 2, 2, 1, 2, 1, 1, 0};
-
- unsigned int ext4_count_free(char *bitmap, unsigned int numchars)
-@@ -25,5 +23,3 @@ unsigned int ext4_count_free(char *bitmap, unsigned int numchars)
- return sum;
- }
-
--#endif /* EXT4FS_DEBUG */
--
-diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h
-index 873897c..8cb184c 100644
---- a/fs/ext4/ext4.h
-+++ b/fs/ext4/ext4.h
-@@ -1123,8 +1123,7 @@ struct ext4_sb_info {
- unsigned long s_desc_per_block; /* Number of group descriptors per block */
- ext4_group_t s_groups_count; /* Number of groups in the fs */
- ext4_group_t s_blockfile_groups;/* Groups acceptable for non-extent files */
-- unsigned long s_overhead_last; /* Last calculated overhead */
-- unsigned long s_blocks_last; /* Last seen block count */
-+ unsigned long s_overhead; /* # of fs overhead clusters */
- unsigned int s_cluster_ratio; /* Number of blocks per cluster */
- unsigned int s_cluster_bits; /* log2 of s_cluster_ratio */
- loff_t s_bitmap_maxbytes; /* max bytes for bitmap files */
-@@ -1925,6 +1924,7 @@ extern int ext4_group_extend(struct super_block *sb,
- ext4_fsblk_t n_blocks_count);
-
- /* super.c */
-+extern int ext4_calculate_overhead(struct super_block *sb);
- extern void *ext4_kvmalloc(size_t size, gfp_t flags);
- extern void *ext4_kvzalloc(size_t size, gfp_t flags);
- extern void ext4_kvfree(void *ptr);
-diff --git a/fs/ext4/resize.c b/fs/ext4/resize.c
-index 996780a..4eac337 100644
---- a/fs/ext4/resize.c
-+++ b/fs/ext4/resize.c
-@@ -952,6 +952,11 @@ int ext4_group_add(struct super_block *sb, struct ext4_new_group_data *input)
- &sbi->s_flex_groups[flex_group].free_inodes);
- }
-
-+ /*
-+ * Update the fs overhead information
-+ */
-+ ext4_calculate_overhead(sb);
-+
- ext4_handle_dirty_super(handle, sb);
-
- exit_journal:
-diff --git a/fs/ext4/super.c b/fs/ext4/super.c
-index a93486e..a071348 100644
---- a/fs/ext4/super.c
-+++ b/fs/ext4/super.c
-@@ -3083,6 +3083,114 @@ static void ext4_destroy_lazyinit_thread(void)
- kthread_stop(ext4_lazyinit_task);
- }
-
-+/*
-+ * Note: calculating the overhead so we can be compatible with
-+ * historical BSD practice is quite difficult in the face of
-+ * clusters/bigalloc. This is because multiple metadata blocks from
-+ * different block group can end up in the same allocation cluster.
-+ * Calculating the exact overhead in the face of clustered allocation
-+ * requires either O(all block bitmaps) in memory or O(number of block
-+ * groups**2) in time. We will still calculate the superblock for
-+ * older file systems --- and if we come across with a bigalloc file
-+ * system with zero in s_overhead_clusters the estimate will be close to
-+ * correct especially for very large cluster sizes --- but for newer
-+ * file systems, it's better to calculate this figure once at mkfs
-+ * time, and store it in the superblock. If the superblock value is
-+ * present (even for non-bigalloc file systems), we will use it.
-+ */
-+static int count_overhead(struct super_block *sb, ext4_group_t grp,
-+ char *buf)
-+{
-+ struct ext4_sb_info *sbi = EXT4_SB(sb);
-+ struct ext4_group_desc *gdp;
-+ ext4_fsblk_t first_block, last_block, b;
-+ ext4_group_t i, ngroups = ext4_get_groups_count(sb);
-+ int s, j, count = 0;
-+
-+ first_block = le32_to_cpu(sbi->s_es->s_first_data_block) +
-+ (grp * EXT4_BLOCKS_PER_GROUP(sb));
-+ last_block = first_block + EXT4_BLOCKS_PER_GROUP(sb) - 1;
-+ for (i = 0; i < ngroups; i++) {
-+ gdp = ext4_get_group_desc(sb, i, NULL);
-+ b = ext4_block_bitmap(sb, gdp);
-+ if (b >= first_block && b <= last_block) {
-+ ext4_set_bit(EXT4_B2C(sbi, b - first_block), buf);
-+ count++;
-+ }
-+ b = ext4_inode_bitmap(sb, gdp);
-+ if (b >= first_block && b <= last_block) {
-+ ext4_set_bit(EXT4_B2C(sbi, b - first_block), buf);
-+ count++;
-+ }
-+ b = ext4_inode_table(sb, gdp);
-+ if (b >= first_block && b + sbi->s_itb_per_group <= last_block)
-+ for (j = 0; j < sbi->s_itb_per_group; j++, b++) {
-+ int c = EXT4_B2C(sbi, b - first_block);
-+ ext4_set_bit(c, buf);
-+ count++;
-+ }
-+ if (i != grp)
-+ continue;
-+ s = 0;
-+ if (ext4_bg_has_super(sb, grp)) {
-+ ext4_set_bit(s++, buf);
-+ count++;
-+ }
-+ for (j = ext4_bg_num_gdb(sb, grp); j > 0; j--) {
-+ ext4_set_bit(EXT4_B2C(sbi, s++), buf);
-+ count++;
-+ }
-+ }
-+ if (!count)
-+ return 0;
-+ return EXT4_CLUSTERS_PER_GROUP(sb) -
-+ ext4_count_free(buf, EXT4_CLUSTERS_PER_GROUP(sb) / 8);
-+}
-+
-+/*
-+ * Compute the overhead and stash it in sbi->s_overhead
-+ */
-+int ext4_calculate_overhead(struct super_block *sb)
-+{
-+ struct ext4_sb_info *sbi = EXT4_SB(sb);
-+ struct ext4_super_block *es = sbi->s_es;
-+ ext4_group_t i, ngroups = ext4_get_groups_count(sb);
-+ ext4_fsblk_t overhead = 0;
-+ char *buf = (char *) get_zeroed_page(GFP_KERNEL);
-+
-+ memset(buf, 0, PAGE_SIZE);
-+ if (!buf)
-+ return -ENOMEM;
-+
-+ /*
-+ * Compute the overhead (FS structures). This is constant
-+ * for a given filesystem unless the number of block groups
-+ * changes so we cache the previous value until it does.
-+ */
-+
-+ /*
-+ * All of the blocks before first_data_block are overhead
-+ */
-+ overhead = EXT4_B2C(sbi, le32_to_cpu(es->s_first_data_block));
-+
-+ /*
-+ * Add the overhead found in each block group
-+ */
-+ for (i = 0; i < ngroups; i++) {
-+ int blks;
-+
-+ blks = count_overhead(sb, i, buf);
-+ overhead += blks;
-+ if (blks)
-+ memset(buf, 0, PAGE_SIZE);
-+ cond_resched();
-+ }
-+ sbi->s_overhead = overhead;
-+ smp_wmb();
-+ free_page((unsigned long) buf);
-+ return 0;
-+}
-+
- static int ext4_fill_super(struct super_block *sb, void *data, int silent)
- {
- char *orig_data = kstrdup(data, GFP_KERNEL);
-@@ -3695,6 +3803,18 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent)
-
- no_journal:
- /*
-+ * Get the # of file system overhead blocks from the
-+ * superblock if present.
-+ */
-+ if (es->s_overhead_clusters)
-+ sbi->s_overhead = le32_to_cpu(es->s_overhead_clusters);
-+ else {
-+ ret = ext4_calculate_overhead(sb);
-+ if (ret)
-+ goto failed_mount_wq;
-+ }
-+
-+ /*
- * The maximum number of concurrent works can be high and
- * concurrency isn't really necessary. Limit it to 1.
- */
-@@ -4568,67 +4688,21 @@ restore_opts:
- return err;
- }
-
--/*
-- * Note: calculating the overhead so we can be compatible with
-- * historical BSD practice is quite difficult in the face of
-- * clusters/bigalloc. This is because multiple metadata blocks from
-- * different block group can end up in the same allocation cluster.
-- * Calculating the exact overhead in the face of clustered allocation
-- * requires either O(all block bitmaps) in memory or O(number of block
-- * groups**2) in time. We will still calculate the superblock for
-- * older file systems --- and if we come across with a bigalloc file
-- * system with zero in s_overhead_clusters the estimate will be close to
-- * correct especially for very large cluster sizes --- but for newer
-- * file systems, it's better to calculate this figure once at mkfs
-- * time, and store it in the superblock. If the superblock value is
-- * present (even for non-bigalloc file systems), we will use it.
-- */
- static int ext4_statfs(struct dentry *dentry, struct kstatfs *buf)
- {
- struct super_block *sb = dentry->d_sb;
- struct ext4_sb_info *sbi = EXT4_SB(sb);
- struct ext4_super_block *es = sbi->s_es;
-- struct ext4_group_desc *gdp;
-+ ext4_fsblk_t overhead = 0;
- u64 fsid;
- s64 bfree;
-
-- if (test_opt(sb, MINIX_DF)) {
-- sbi->s_overhead_last = 0;
-- } else if (es->s_overhead_clusters) {
-- sbi->s_overhead_last = le32_to_cpu(es->s_overhead_clusters);
-- } else if (sbi->s_blocks_last != ext4_blocks_count(es)) {
-- ext4_group_t i, ngroups = ext4_get_groups_count(sb);
-- ext4_fsblk_t overhead = 0;
--
-- /*
-- * Compute the overhead (FS structures). This is constant
-- * for a given filesystem unless the number of block groups
-- * changes so we cache the previous value until it does.
-- */
--
-- /*
-- * All of the blocks before first_data_block are
-- * overhead
-- */
-- overhead = EXT4_B2C(sbi, le32_to_cpu(es->s_first_data_block));
--
-- /*
-- * Add the overhead found in each block group
-- */
-- for (i = 0; i < ngroups; i++) {
-- gdp = ext4_get_group_desc(sb, i, NULL);
-- overhead += ext4_num_overhead_clusters(sb, i, gdp);
-- cond_resched();
-- }
-- sbi->s_overhead_last = overhead;
-- smp_wmb();
-- sbi->s_blocks_last = ext4_blocks_count(es);
-- }
-+ if (!test_opt(sb, MINIX_DF))
-+ overhead = sbi->s_overhead;
-
- buf->f_type = EXT4_SUPER_MAGIC;
- buf->f_bsize = sb->s_blocksize;
-- buf->f_blocks = (ext4_blocks_count(es) -
-- EXT4_C2B(sbi, sbi->s_overhead_last));
-+ buf->f_blocks = ext4_blocks_count(es) - EXT4_C2B(sbi, sbi->s_overhead);
- bfree = percpu_counter_sum_positive(&sbi->s_freeclusters_counter) -
- percpu_counter_sum_positive(&sbi->s_dirtyclusters_counter);
- /* prevent underflow in case that few free space is available */
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0035-udf-Improve-table-length-check-to-avoid-possible-ove.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0035-udf-Improve-table-length-check-to-avoid-possible-ove.patch
deleted file mode 100644
index 2548a59..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0035-udf-Improve-table-length-check-to-avoid-possible-ove.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 27f12e5bea3378be70c81b258660fcaa44496cb4 Mon Sep 17 00:00:00 2001
-From: Jan Kara <jack at suse.cz>
-Date: Tue, 10 Jul 2012 17:58:04 +0200
-Subject: [PATCH 35/73] udf: Improve table length check to avoid possible
- overflow
-
-commit 57b9655d01ef057a523e810d29c37ac09b80eead upstream.
-
-When a partition table length is corrupted to be close to 1 << 32, the
-check for its length may overflow on 32-bit systems and we will think
-the length is valid. Later on the kernel can crash trying to read beyond
-end of buffer. Fix the check to avoid possible overflow.
-
-Reported-by: Ben Hutchings <ben at decadent.org.uk>
-Signed-off-by: Jan Kara <jack at suse.cz>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/udf/super.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/fs/udf/super.c b/fs/udf/super.c
-index 270e135..516b7f0 100644
---- a/fs/udf/super.c
-+++ b/fs/udf/super.c
-@@ -1285,7 +1285,7 @@ static int udf_load_logicalvol(struct super_block *sb, sector_t block,
- BUG_ON(ident != TAG_IDENT_LVD);
- lvd = (struct logicalVolDesc *)bh->b_data;
- table_len = le32_to_cpu(lvd->mapTableLength);
-- if (sizeof(*lvd) + table_len > sb->s_blocksize) {
-+ if (table_len > sb->s_blocksize - sizeof(*lvd)) {
- udf_err(sb, "error loading logical volume descriptor: "
- "Partition table too long (%u > %lu)\n", table_len,
- sb->s_blocksize - sizeof(*lvd));
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0036-powerpc-Add-memory-attribute-for-mfmsr.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0036-powerpc-Add-memory-attribute-for-mfmsr.patch
deleted file mode 100644
index f631564..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0036-powerpc-Add-memory-attribute-for-mfmsr.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 3fed281f20c3b2cdfe1a1f087973b0c0e3b4cd05 Mon Sep 17 00:00:00 2001
-From: Tiejun Chen <tiejun.chen at windriver.com>
-Date: Wed, 11 Jul 2012 14:22:46 +1000
-Subject: [PATCH 36/73] powerpc: Add "memory" attribute for mfmsr()
-
-commit b416c9a10baae6a177b4f9ee858b8d309542fbef upstream.
-
-Add "memory" attribute in inline assembly language as a compiler
-barrier to make sure 4.6.x GCC don't reorder mfmsr().
-
-Signed-off-by: Tiejun Chen <tiejun.chen at windriver.com>
-Signed-off-by: Benjamin Herrenschmidt <benh at kernel.crashing.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/powerpc/include/asm/reg.h | 3 ++-
- 1 files changed, 2 insertions(+), 1 deletions(-)
-
-diff --git a/arch/powerpc/include/asm/reg.h b/arch/powerpc/include/asm/reg.h
-index 559da19..578e5a0 100644
---- a/arch/powerpc/include/asm/reg.h
-+++ b/arch/powerpc/include/asm/reg.h
-@@ -1016,7 +1016,8 @@
- /* Macros for setting and retrieving special purpose registers */
- #ifndef __ASSEMBLY__
- #define mfmsr() ({unsigned long rval; \
-- asm volatile("mfmsr %0" : "=r" (rval)); rval;})
-+ asm volatile("mfmsr %0" : "=r" (rval) : \
-+ : "memory"); rval;})
- #ifdef CONFIG_PPC_BOOK3S_64
- #define __mtmsrd(v, l) asm volatile("mtmsrd %0," __stringify(l) \
- : : "r" (v) : "memory")
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0037-mwifiex-correction-in-mcs-index-check.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0037-mwifiex-correction-in-mcs-index-check.patch
deleted file mode 100644
index 5934302..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0037-mwifiex-correction-in-mcs-index-check.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 10c6ca210b55595833c5b18def07f077947fa88d Mon Sep 17 00:00:00 2001
-From: Amitkumar Karwar <akarwar at marvell.com>
-Date: Wed, 11 Jul 2012 18:12:57 -0700
-Subject: [PATCH 37/73] mwifiex: correction in mcs index check
-
-commit fe020120cb863ba918c6d603345342a880272c4d upstream.
-
-mwifiex driver supports 2x2 chips as well. Hence valid mcs values
-are 0 to 15. The check for mcs index is corrected in this patch.
-
-For example: if 40MHz is enabled and mcs index is 11, "iw link"
-command would show "tx bitrate: 108.0 MBit/s" without this patch.
-Now it shows "tx bitrate: 108.0 MBit/s MCS 11 40Mhz" with the patch.
-
-Signed-off-by: Amitkumar Karwar <akarwar at marvell.com>
-Signed-off-by: Bing Zhao <bzhao at marvell.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/wireless/mwifiex/cfg80211.c | 4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/net/wireless/mwifiex/cfg80211.c b/drivers/net/wireless/mwifiex/cfg80211.c
-index 01dcb1a..727c129 100644
---- a/drivers/net/wireless/mwifiex/cfg80211.c
-+++ b/drivers/net/wireless/mwifiex/cfg80211.c
-@@ -545,9 +545,9 @@ mwifiex_dump_station_info(struct mwifiex_private *priv,
-
- /*
- * Bit 0 in tx_htinfo indicates that current Tx rate is 11n rate. Valid
-- * MCS index values for us are 0 to 7.
-+ * MCS index values for us are 0 to 15.
- */
-- if ((priv->tx_htinfo & BIT(0)) && (priv->tx_rate < 8)) {
-+ if ((priv->tx_htinfo & BIT(0)) && (priv->tx_rate < 16)) {
- sinfo->txrate.mcs = priv->tx_rate;
- sinfo->txrate.flags |= RATE_INFO_FLAGS_MCS;
- /* 40MHz rate */
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0038-USB-option-Ignore-ZTE-Vodafone-K3570-71-net-interfac.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0038-USB-option-Ignore-ZTE-Vodafone-K3570-71-net-interfac.patch
deleted file mode 100644
index 34b5fe5..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0038-USB-option-Ignore-ZTE-Vodafone-K3570-71-net-interfac.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 06c8b933f7ff30224a62e134cf8e5f19ee9f4975 Mon Sep 17 00:00:00 2001
-From: "Andrew Bird (Sphere Systems)" <ajb at spheresystems.co.uk>
-Date: Sun, 25 Mar 2012 00:10:28 +0000
-Subject: [PATCH 38/73] USB: option: Ignore ZTE (Vodafone) K3570/71 net
- interfaces
-
-commit f264ddea0109bf7ce8aab920d64a637e830ace5b upstream.
-
-These interfaces need to be handled by QMI/WWAN driver
-
-Signed-off-by: Andrew Bird <ajb at spheresystems.co.uk>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/serial/option.c | 6 ++++--
- 1 files changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
-index 5971c95..6d97d2f 100644
---- a/drivers/usb/serial/option.c
-+++ b/drivers/usb/serial/option.c
-@@ -932,8 +932,10 @@ static const struct usb_device_id option_ids[] = {
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0165, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0167, 0xff, 0xff, 0xff),
- .driver_info = (kernel_ulong_t)&net_intf4_blacklist },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1008, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1010, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1008, 0xff, 0xff, 0xff),
-+ .driver_info = (kernel_ulong_t)&net_intf4_blacklist },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1010, 0xff, 0xff, 0xff),
-+ .driver_info = (kernel_ulong_t)&net_intf4_blacklist },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1012, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1057, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1058, 0xff, 0xff, 0xff) },
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0039-USB-option-add-ZTE-MF821D.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0039-USB-option-add-ZTE-MF821D.patch
deleted file mode 100644
index a9a075d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0039-USB-option-add-ZTE-MF821D.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From da7998e23b2a112f2134db067ed2b1d5593113fb Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Bj=C3=B8rn=20Mork?= <bjorn at mork.no>
-Date: Thu, 12 Jul 2012 12:37:32 +0200
-Subject: [PATCH 39/73] USB: option: add ZTE MF821D
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit 09110529780890804b22e997ae6b4fe3f0b3b158 upstream.
-
-Sold by O2 (telefonica germany) under the name "LTE4G"
-
-Tested-by: Thomas Schäfer <tschaefer at t-online.de>
-Signed-off-by: Bjørn Mork <bjorn at mork.no>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/serial/option.c | 2 ++
- 1 files changed, 2 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
-index 6d97d2f..d89aac1 100644
---- a/drivers/usb/serial/option.c
-+++ b/drivers/usb/serial/option.c
-@@ -932,6 +932,8 @@ static const struct usb_device_id option_ids[] = {
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0165, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0167, 0xff, 0xff, 0xff),
- .driver_info = (kernel_ulong_t)&net_intf4_blacklist },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0326, 0xff, 0xff, 0xff),
-+ .driver_info = (kernel_ulong_t)&net_intf4_blacklist },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1008, 0xff, 0xff, 0xff),
- .driver_info = (kernel_ulong_t)&net_intf4_blacklist },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1010, 0xff, 0xff, 0xff),
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0040-target-Add-generation-of-LOGICAL-BLOCK-ADDRESS-OUT-O.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0040-target-Add-generation-of-LOGICAL-BLOCK-ADDRESS-OUT-O.patch
deleted file mode 100644
index 9d17084..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0040-target-Add-generation-of-LOGICAL-BLOCK-ADDRESS-OUT-O.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-From 5d43c09da407f76f1dae2ec3ca08cb62051dea6f Mon Sep 17 00:00:00 2001
-From: Roland Dreier <roland at purestorage.com>
-Date: Mon, 16 Jul 2012 15:34:21 -0700
-Subject: [PATCH 40/73] target: Add generation of LOGICAL BLOCK ADDRESS OUT OF
- RANGE
-
-commit e2397c704429025bc6b331a970f699e52f34283e upstream.
-
-Many SCSI commands are defined to return a CHECK CONDITION / ILLEGAL
-REQUEST with ASC set to LOGICAL BLOCK ADDRESS OUT OF RANGE if the
-initiator sends a command that accesses a too-big LBA. Add an enum
-value and case entries so that target code can return this status.
-
-Signed-off-by: Roland Dreier <roland at purestorage.com>
-Signed-off-by: Nicholas Bellinger <nab at linux-iscsi.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/target/target_core_transport.c | 10 ++++++++++
- include/target/target_core_base.h | 1 +
- 2 files changed, 11 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c
-index 5660916..94c03d2 100644
---- a/drivers/target/target_core_transport.c
-+++ b/drivers/target/target_core_transport.c
-@@ -1820,6 +1820,7 @@ static void transport_generic_request_failure(struct se_cmd *cmd)
- case TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE:
- case TCM_UNKNOWN_MODE_PAGE:
- case TCM_WRITE_PROTECTED:
-+ case TCM_ADDRESS_OUT_OF_RANGE:
- case TCM_CHECK_CONDITION_ABORT_CMD:
- case TCM_CHECK_CONDITION_UNIT_ATTENTION:
- case TCM_CHECK_CONDITION_NOT_READY:
-@@ -4496,6 +4497,15 @@ int transport_send_check_condition_and_sense(
- /* WRITE PROTECTED */
- buffer[offset+SPC_ASC_KEY_OFFSET] = 0x27;
- break;
-+ case TCM_ADDRESS_OUT_OF_RANGE:
-+ /* CURRENT ERROR */
-+ buffer[offset] = 0x70;
-+ buffer[offset+SPC_ADD_SENSE_LEN_OFFSET] = 10;
-+ /* ILLEGAL REQUEST */
-+ buffer[offset+SPC_SENSE_KEY_OFFSET] = ILLEGAL_REQUEST;
-+ /* LOGICAL BLOCK ADDRESS OUT OF RANGE */
-+ buffer[offset+SPC_ASC_KEY_OFFSET] = 0x21;
-+ break;
- case TCM_CHECK_CONDITION_UNIT_ATTENTION:
- /* CURRENT ERROR */
- buffer[offset] = 0x70;
-diff --git a/include/target/target_core_base.h b/include/target/target_core_base.h
-index 94bbec3..6ee550e 100644
---- a/include/target/target_core_base.h
-+++ b/include/target/target_core_base.h
-@@ -157,6 +157,7 @@ enum tcm_sense_reason_table {
- TCM_CHECK_CONDITION_UNIT_ATTENTION = 0x0e,
- TCM_CHECK_CONDITION_NOT_READY = 0x0f,
- TCM_RESERVATION_CONFLICT = 0x10,
-+ TCM_ADDRESS_OUT_OF_RANGE = 0x11,
- };
-
- struct se_obj {
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0041-target-Add-range-checking-to-UNMAP-emulation.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0041-target-Add-range-checking-to-UNMAP-emulation.patch
deleted file mode 100644
index 3240467..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0041-target-Add-range-checking-to-UNMAP-emulation.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 43b1ce67a53720ba82fbe5dbf0a323ae761368bb Mon Sep 17 00:00:00 2001
-From: Roland Dreier <roland at purestorage.com>
-Date: Mon, 16 Jul 2012 15:34:22 -0700
-Subject: [PATCH 41/73] target: Add range checking to UNMAP emulation
-
-commit 2594e29865c291db162313187612cd9f14538f33 upstream.
-
-When processing an UNMAP command, we need to make sure that the number
-of blocks we're asked to UNMAP does not exceed our reported maximum
-number of blocks per UNMAP, and that the range of blocks we're
-unmapping doesn't go past the end of the device.
-
-Signed-off-by: Roland Dreier <roland at purestorage.com>
-Signed-off-by: Nicholas Bellinger <nab at linux-iscsi.org>
-[bwh: Backported to 3.2: adjust filename, context]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/target/target_core_cdb.c | 12 ++++++++++++
- 1 files changed, 12 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/target/target_core_cdb.c b/drivers/target/target_core_cdb.c
-index 93b9406..45a3ed4 100644
---- a/drivers/target/target_core_cdb.c
-+++ b/drivers/target/target_core_cdb.c
-@@ -1145,6 +1145,18 @@ int target_emulate_unmap(struct se_task *task)
- pr_debug("UNMAP: Using lba: %llu and range: %u\n",
- (unsigned long long)lba, range);
-
-+ if (range > dev->se_sub_dev->se_dev_attrib.max_unmap_lba_count) {
-+ cmd->scsi_sense_reason = TCM_INVALID_PARAMETER_LIST;
-+ ret = -EINVAL;
-+ goto err;
-+ }
-+
-+ if (lba + range > dev->transport->get_blocks(dev) + 1) {
-+ cmd->scsi_sense_reason = TCM_ADDRESS_OUT_OF_RANGE;
-+ ret = -EINVAL;
-+ goto err;
-+ }
-+
- ret = dev->transport->do_discard(dev, lba, range);
- if (ret < 0) {
- pr_err("blkdev_issue_discard() failed: %d\n",
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0042-target-Fix-reading-of-data-length-fields-for-UNMAP-c.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0042-target-Fix-reading-of-data-length-fields-for-UNMAP-c.patch
deleted file mode 100644
index 0102742..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0042-target-Fix-reading-of-data-length-fields-for-UNMAP-c.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From b31df389ada54f5b2725826cd8d9a13ace960168 Mon Sep 17 00:00:00 2001
-From: Roland Dreier <roland at purestorage.com>
-Date: Mon, 16 Jul 2012 15:34:23 -0700
-Subject: [PATCH 42/73] target: Fix reading of data length fields for UNMAP
- commands
-
-commit 1a5fa4576ec8a462313c7516b31d7453481ddbe8 upstream.
-
-The UNMAP DATA LENGTH and UNMAP BLOCK DESCRIPTOR DATA LENGTH fields
-are in the unmap descriptor (the payload transferred to our data out
-buffer), not in the CDB itself. Read them from the correct place in
-target_emulated_unmap.
-
-Signed-off-by: Roland Dreier <roland at purestorage.com>
-Signed-off-by: Nicholas Bellinger <nab at linux-iscsi.org>
-[bwh: Backported to 3.2: adjust filename, context]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/target/target_core_cdb.c | 6 +++---
- 1 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/target/target_core_cdb.c b/drivers/target/target_core_cdb.c
-index 45a3ed4..b1f5cf0 100644
---- a/drivers/target/target_core_cdb.c
-+++ b/drivers/target/target_core_cdb.c
-@@ -1114,7 +1114,6 @@ int target_emulate_unmap(struct se_task *task)
- struct se_cmd *cmd = task->task_se_cmd;
- struct se_device *dev = cmd->se_dev;
- unsigned char *buf, *ptr = NULL;
-- unsigned char *cdb = &cmd->t_task_cdb[0];
- sector_t lba;
- unsigned int size = cmd->data_length, range;
- int ret = 0, offset;
-@@ -1130,11 +1129,12 @@ int target_emulate_unmap(struct se_task *task)
- /* First UNMAP block descriptor starts at 8 byte offset */
- offset = 8;
- size -= 8;
-- dl = get_unaligned_be16(&cdb[0]);
-- bd_dl = get_unaligned_be16(&cdb[2]);
-
- buf = transport_kmap_data_sg(cmd);
-
-+ dl = get_unaligned_be16(&buf[0]);
-+ bd_dl = get_unaligned_be16(&buf[2]);
-+
- ptr = &buf[offset];
- pr_debug("UNMAP: Sub: %s Using dl: %hu bd_dl: %hu size: %hu"
- " ptr: %p\n", dev->transport->name, dl, bd_dl, size, ptr);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0043-target-Fix-possible-integer-underflow-in-UNMAP-emula.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0043-target-Fix-possible-integer-underflow-in-UNMAP-emula.patch
deleted file mode 100644
index 345d149..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0043-target-Fix-possible-integer-underflow-in-UNMAP-emula.patch
+++ /dev/null
@@ -1,75 +0,0 @@
-From 8d14ccd4bd5dab58984030c13a71953d396e792d Mon Sep 17 00:00:00 2001
-From: Roland Dreier <roland at purestorage.com>
-Date: Mon, 16 Jul 2012 15:34:24 -0700
-Subject: [PATCH 43/73] target: Fix possible integer underflow in UNMAP
- emulation
-
-commit b7fc7f3777582dea85156a821d78a522a0c083aa upstream.
-
-It's possible for an initiator to send us an UNMAP command with a
-descriptor that is less than 8 bytes; in that case it's really bad for
-us to set an unsigned int to that value, subtract 8 from it, and then
-use that as a limit for our loop (since the value will wrap around to
-a huge positive value).
-
-Fix this by making size be signed and only looping if size >= 16 (ie
-if we have at least a full descriptor available).
-
-Also remove offset as an obfuscated name for the constant 8.
-
-Signed-off-by: Roland Dreier <roland at purestorage.com>
-Signed-off-by: Nicholas Bellinger <nab at linux-iscsi.org>
-[bwh: Backported to 3.2: adjust filename, context]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/target/target_core_cdb.c | 20 ++++++++++----------
- 1 files changed, 10 insertions(+), 10 deletions(-)
-
-diff --git a/drivers/target/target_core_cdb.c b/drivers/target/target_core_cdb.c
-index b1f5cf0..00f0f7d 100644
---- a/drivers/target/target_core_cdb.c
-+++ b/drivers/target/target_core_cdb.c
-@@ -1115,9 +1115,10 @@ int target_emulate_unmap(struct se_task *task)
- struct se_device *dev = cmd->se_dev;
- unsigned char *buf, *ptr = NULL;
- sector_t lba;
-- unsigned int size = cmd->data_length, range;
-- int ret = 0, offset;
-- unsigned short dl, bd_dl;
-+ int size = cmd->data_length;
-+ u32 range;
-+ int ret = 0;
-+ int dl, bd_dl;
-
- if (!dev->transport->do_discard) {
- pr_err("UNMAP emulation not supported for: %s\n",
-@@ -1126,20 +1127,19 @@ int target_emulate_unmap(struct se_task *task)
- return -ENOSYS;
- }
-
-- /* First UNMAP block descriptor starts at 8 byte offset */
-- offset = 8;
-- size -= 8;
--
- buf = transport_kmap_data_sg(cmd);
-
- dl = get_unaligned_be16(&buf[0]);
- bd_dl = get_unaligned_be16(&buf[2]);
-
-- ptr = &buf[offset];
-- pr_debug("UNMAP: Sub: %s Using dl: %hu bd_dl: %hu size: %hu"
-+ size = min(size - 8, bd_dl);
-+
-+ /* First UNMAP block descriptor starts at 8 byte offset */
-+ ptr = &buf[8];
-+ pr_debug("UNMAP: Sub: %s Using dl: %u bd_dl: %u size: %u"
- " ptr: %p\n", dev->transport->name, dl, bd_dl, size, ptr);
-
-- while (size) {
-+ while (size >= 16) {
- lba = get_unaligned_be64(&ptr[0]);
- range = get_unaligned_be32(&ptr[8]);
- pr_debug("UNMAP: Using lba: %llu and range: %u\n",
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0044-target-Check-number-of-unmap-descriptors-against-our.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0044-target-Check-number-of-unmap-descriptors-against-our.patch
deleted file mode 100644
index 64f87f3..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0044-target-Check-number-of-unmap-descriptors-against-our.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 9e2f53ebf9ec64a0999669060222a8cbfae313b2 Mon Sep 17 00:00:00 2001
-From: Roland Dreier <roland at purestorage.com>
-Date: Mon, 16 Jul 2012 15:34:25 -0700
-Subject: [PATCH 44/73] target: Check number of unmap descriptors against our
- limit
-
-commit 7409a6657aebf8be74c21d0eded80709b27275cb upstream.
-
-Fail UNMAP commands that have more than our reported limit on unmap
-descriptors.
-
-Signed-off-by: Roland Dreier <roland at purestorage.com>
-Signed-off-by: Nicholas Bellinger <nab at linux-iscsi.org>
-[bwh: Backported to 3.2: adjust filename]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/target/target_core_cdb.c | 5 +++++
- 1 files changed, 5 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/target/target_core_cdb.c b/drivers/target/target_core_cdb.c
-index 00f0f7d..717a8d4 100644
---- a/drivers/target/target_core_cdb.c
-+++ b/drivers/target/target_core_cdb.c
-@@ -1133,6 +1133,11 @@ int target_emulate_unmap(struct se_task *task)
- bd_dl = get_unaligned_be16(&buf[2]);
-
- size = min(size - 8, bd_dl);
-+ if (size / 16 > dev->se_sub_dev->se_dev_attrib.max_unmap_block_desc_count) {
-+ cmd->scsi_sense_reason = TCM_INVALID_PARAMETER_LIST;
-+ ret = -EINVAL;
-+ goto err;
-+ }
-
- /* First UNMAP block descriptor starts at 8 byte offset */
- ptr = &buf[8];
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0045-s390-idle-fix-sequence-handling-vs-cpu-hotplug.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0045-s390-idle-fix-sequence-handling-vs-cpu-hotplug.patch
deleted file mode 100644
index 445cbc5..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0045-s390-idle-fix-sequence-handling-vs-cpu-hotplug.patch
+++ /dev/null
@@ -1,80 +0,0 @@
-From 9385ba7e09e3360516f2b3c78c7d8f233dd1119f Mon Sep 17 00:00:00 2001
-From: Heiko Carstens <heiko.carstens at de.ibm.com>
-Date: Fri, 13 Jul 2012 15:45:33 +0200
-Subject: [PATCH 45/73] s390/idle: fix sequence handling vs cpu hotplug
-
-commit 0008204ffe85d23382d6fd0f971f3f0fbe70bae2 upstream.
-
-The s390 idle accounting code uses a sequence counter which gets used
-when the per cpu idle statistics get updated and read.
-
-One assumption on read access is that only when the sequence counter is
-even and did not change while reading all values the result is valid.
-On cpu hotplug however the per cpu data structure gets initialized via
-a cpu hotplug notifier on CPU_ONLINE.
-CPU_ONLINE however is too late, since the onlined cpu is already running
-and might access the per cpu data. Worst case is that the data structure
-gets initialized while an idle thread is updating its idle statistics.
-This will result in an uneven sequence counter after an update.
-
-As a result user space tools like top, which access /proc/stat in order
-to get idle stats, will busy loop waiting for the sequence counter to
-become even again, which will never happen until the queried cpu will
-update its idle statistics again. And even then the sequence counter
-will only have an even value for a couple of cpu cycles.
-
-Fix this by moving the initialization of the per cpu idle statistics
-to cpu_init(). I prefer that solution in favor of changing the
-notifier to CPU_UP_PREPARE, which would be a different solution to
-the problem.
-
-Signed-off-by: Heiko Carstens <heiko.carstens at de.ibm.com>
-Signed-off-by: Martin Schwidefsky <schwidefsky at de.ibm.com>
-[bwh: Backported to 3.2: adjust context]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/s390/kernel/processor.c | 2 ++
- arch/s390/kernel/smp.c | 3 ---
- 2 files changed, 2 insertions(+), 3 deletions(-)
-
-diff --git a/arch/s390/kernel/processor.c b/arch/s390/kernel/processor.c
-index 6e0073e..07c7bf4 100644
---- a/arch/s390/kernel/processor.c
-+++ b/arch/s390/kernel/processor.c
-@@ -26,12 +26,14 @@ static DEFINE_PER_CPU(struct cpuid, cpu_id);
- void __cpuinit cpu_init(void)
- {
- struct cpuid *id = &per_cpu(cpu_id, smp_processor_id());
-+ struct s390_idle_data *idle = &__get_cpu_var(s390_idle);
-
- get_cpu_id(id);
- atomic_inc(&init_mm.mm_count);
- current->active_mm = &init_mm;
- BUG_ON(current->mm);
- enter_lazy_tlb(&init_mm, current);
-+ memset(idle, 0, sizeof(*idle));
- }
-
- /*
-diff --git a/arch/s390/kernel/smp.c b/arch/s390/kernel/smp.c
-index 3ea8728..1df64a8 100644
---- a/arch/s390/kernel/smp.c
-+++ b/arch/s390/kernel/smp.c
-@@ -1020,14 +1020,11 @@ static int __cpuinit smp_cpu_notify(struct notifier_block *self,
- unsigned int cpu = (unsigned int)(long)hcpu;
- struct cpu *c = &per_cpu(cpu_devices, cpu);
- struct sys_device *s = &c->sysdev;
-- struct s390_idle_data *idle;
- int err = 0;
-
- switch (action) {
- case CPU_ONLINE:
- case CPU_ONLINE_FROZEN:
-- idle = &per_cpu(s390_idle, cpu);
-- memset(idle, 0, sizeof(struct s390_idle_data));
- err = sysfs_create_group(&s->kobj, &cpu_online_attr_group);
- break;
- case CPU_DEAD:
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0046-rtlwifi-rtl8192de-Fix-phy-based-version-calculation.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0046-rtlwifi-rtl8192de-Fix-phy-based-version-calculation.patch
deleted file mode 100644
index e52f4d7..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0046-rtlwifi-rtl8192de-Fix-phy-based-version-calculation.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From fccb712c5ec20bb379e0c57e6a8b286e117ee2db Mon Sep 17 00:00:00 2001
-From: Forest Bond <forest.bond at rapidrollout.com>
-Date: Fri, 13 Jul 2012 12:26:06 -0400
-Subject: [PATCH 46/73] rtlwifi: rtl8192de: Fix phy-based version calculation
-
-commit f1b00f4dab29b57bdf1bc03ef12020b280fd2a72 upstream.
-
-Commit d83579e2a50ac68389e6b4c58b845c702cf37516 incorporated some
-changes from the vendor driver that made it newly important that the
-calculated hardware version correctly include the CHIP_92D bit, as all
-of the IS_92D_* macros were changed to depend on it. However, this bit
-was being unset for dual-mac, dual-phy devices. The vendor driver
-behavior was modified to not do this, but unfortunately this change was
-not picked up along with the others. This caused scanning in the 2.4GHz
-band to be broken, and possibly other bugs as well.
-
-This patch brings the version calculation logic in parity with the
-vendor driver in this regard, and in doing so fixes the regression.
-However, the version calculation code in general continues to be largely
-incoherent and messy, and needs to be cleaned up.
-
-Signed-off-by: Forest Bond <forest.bond at rapidrollout.com>
-Signed-off-by: Larry Finger <Larry.Finger at lwfinger.net>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/wireless/rtlwifi/rtl8192de/phy.c | 6 +++---
- 1 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/net/wireless/rtlwifi/rtl8192de/phy.c b/drivers/net/wireless/rtlwifi/rtl8192de/phy.c
-index 2cf4c5f..de9faa9 100644
---- a/drivers/net/wireless/rtlwifi/rtl8192de/phy.c
-+++ b/drivers/net/wireless/rtlwifi/rtl8192de/phy.c
-@@ -3462,21 +3462,21 @@ void rtl92d_phy_config_macphymode_info(struct ieee80211_hw *hw)
- switch (rtlhal->macphymode) {
- case DUALMAC_SINGLEPHY:
- rtlphy->rf_type = RF_2T2R;
-- rtlhal->version |= CHIP_92D_SINGLEPHY;
-+ rtlhal->version |= RF_TYPE_2T2R;
- rtlhal->bandset = BAND_ON_BOTH;
- rtlhal->current_bandtype = BAND_ON_2_4G;
- break;
-
- case SINGLEMAC_SINGLEPHY:
- rtlphy->rf_type = RF_2T2R;
-- rtlhal->version |= CHIP_92D_SINGLEPHY;
-+ rtlhal->version |= RF_TYPE_2T2R;
- rtlhal->bandset = BAND_ON_BOTH;
- rtlhal->current_bandtype = BAND_ON_2_4G;
- break;
-
- case DUALMAC_DUALPHY:
- rtlphy->rf_type = RF_1T1R;
-- rtlhal->version &= (~CHIP_92D_SINGLEPHY);
-+ rtlhal->version &= RF_TYPE_1T1R;
- /* Now we let MAC0 run on 5G band. */
- if (rtlhal->interfaceindex == 0) {
- rtlhal->bandset = BAND_ON_5G;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0047-workqueue-perform-cpu-down-operations-from-low-prior.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0047-workqueue-perform-cpu-down-operations-from-low-prior.patch
deleted file mode 100644
index 772eafb..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0047-workqueue-perform-cpu-down-operations-from-low-prior.patch
+++ /dev/null
@@ -1,120 +0,0 @@
-From 47ba7731c120a3ed09336d18b85493bd85d926f2 Mon Sep 17 00:00:00 2001
-From: Tejun Heo <tj at kernel.org>
-Date: Tue, 17 Jul 2012 12:39:26 -0700
-Subject: [PATCH 47/73] workqueue: perform cpu down operations from low
- priority cpu_notifier()
-
-commit 6575820221f7a4dd6eadecf7bf83cdd154335eda upstream.
-
-Currently, all workqueue cpu hotplug operations run off
-CPU_PRI_WORKQUEUE which is higher than normal notifiers. This is to
-ensure that workqueue is up and running while bringing up a CPU before
-other notifiers try to use workqueue on the CPU.
-
-Per-cpu workqueues are supposed to remain working and bound to the CPU
-for normal CPU_DOWN_PREPARE notifiers. This holds mostly true even
-with workqueue offlining running with higher priority because
-workqueue CPU_DOWN_PREPARE only creates a bound trustee thread which
-runs the per-cpu workqueue without concurrency management without
-explicitly detaching the existing workers.
-
-However, if the trustee needs to create new workers, it creates
-unbound workers which may wander off to other CPUs while
-CPU_DOWN_PREPARE notifiers are in progress. Furthermore, if the CPU
-down is cancelled, the per-CPU workqueue may end up with workers which
-aren't bound to the CPU.
-
-While reliably reproducible with a convoluted artificial test-case
-involving scheduling and flushing CPU burning work items from CPU down
-notifiers, this isn't very likely to happen in the wild, and, even
-when it happens, the effects are likely to be hidden by the following
-successful CPU down.
-
-Fix it by using different priorities for up and down notifiers - high
-priority for up operations and low priority for down operations.
-
-Workqueue cpu hotplug operations will soon go through further cleanup.
-
-Signed-off-by: Tejun Heo <tj at kernel.org>
-Acked-by: "Rafael J. Wysocki" <rjw at sisk.pl>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- include/linux/cpu.h | 5 +++--
- kernel/workqueue.c | 38 +++++++++++++++++++++++++++++++++++++-
- 2 files changed, 40 insertions(+), 3 deletions(-)
-
-diff --git a/include/linux/cpu.h b/include/linux/cpu.h
-index 6cb60fd..c692acc 100644
---- a/include/linux/cpu.h
-+++ b/include/linux/cpu.h
-@@ -66,8 +66,9 @@ enum {
- /* migration should happen before other stuff but after perf */
- CPU_PRI_PERF = 20,
- CPU_PRI_MIGRATION = 10,
-- /* prepare workqueues for other notifiers */
-- CPU_PRI_WORKQUEUE = 5,
-+ /* bring up workqueues before normal notifiers and down after */
-+ CPU_PRI_WORKQUEUE_UP = 5,
-+ CPU_PRI_WORKQUEUE_DOWN = -5,
- };
-
- #define CPU_ONLINE 0x0002 /* CPU (unsigned)v is up */
-diff --git a/kernel/workqueue.c b/kernel/workqueue.c
-index 7947e16..a650bee 100644
---- a/kernel/workqueue.c
-+++ b/kernel/workqueue.c
-@@ -3586,6 +3586,41 @@ static int __devinit workqueue_cpu_callback(struct notifier_block *nfb,
- return notifier_from_errno(0);
- }
-
-+/*
-+ * Workqueues should be brought up before normal priority CPU notifiers.
-+ * This will be registered high priority CPU notifier.
-+ */
-+static int __devinit workqueue_cpu_up_callback(struct notifier_block *nfb,
-+ unsigned long action,
-+ void *hcpu)
-+{
-+ switch (action & ~CPU_TASKS_FROZEN) {
-+ case CPU_UP_PREPARE:
-+ case CPU_UP_CANCELED:
-+ case CPU_DOWN_FAILED:
-+ case CPU_ONLINE:
-+ return workqueue_cpu_callback(nfb, action, hcpu);
-+ }
-+ return NOTIFY_OK;
-+}
-+
-+/*
-+ * Workqueues should be brought down after normal priority CPU notifiers.
-+ * This will be registered as low priority CPU notifier.
-+ */
-+static int __devinit workqueue_cpu_down_callback(struct notifier_block *nfb,
-+ unsigned long action,
-+ void *hcpu)
-+{
-+ switch (action & ~CPU_TASKS_FROZEN) {
-+ case CPU_DOWN_PREPARE:
-+ case CPU_DYING:
-+ case CPU_POST_DEAD:
-+ return workqueue_cpu_callback(nfb, action, hcpu);
-+ }
-+ return NOTIFY_OK;
-+}
-+
- #ifdef CONFIG_SMP
-
- struct work_for_cpu {
-@@ -3779,7 +3814,8 @@ static int __init init_workqueues(void)
- unsigned int cpu;
- int i;
-
-- cpu_notifier(workqueue_cpu_callback, CPU_PRI_WORKQUEUE);
-+ cpu_notifier(workqueue_cpu_up_callback, CPU_PRI_WORKQUEUE_UP);
-+ cpu_notifier(workqueue_cpu_down_callback, CPU_PRI_WORKQUEUE_DOWN);
-
- /* initialize gcwqs */
- for_each_gcwq_cpu(cpu) {
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0048-ALSA-hda-Add-support-for-Realtek-ALC282.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0048-ALSA-hda-Add-support-for-Realtek-ALC282.patch
deleted file mode 100644
index cabf58f..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0048-ALSA-hda-Add-support-for-Realtek-ALC282.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 1438a7338f8ea623f9cfc21c6201ad48273caf12 Mon Sep 17 00:00:00 2001
-From: David Henningsson <david.henningsson at canonical.com>
-Date: Wed, 18 Jul 2012 07:38:46 +0200
-Subject: [PATCH 48/73] ALSA: hda - Add support for Realtek ALC282
-
-commit 4e01ec636e64707d202a1ca21a47bbc6d53085b7 upstream.
-
-This codec has a separate dmic path (separate dmic only ADC),
-and thus it looks mostly like ALC275.
-
-BugLink: https://bugs.launchpad.net/bugs/1025377
-Tested-by: Ray Chen <ray.chen at canonical.com>
-Signed-off-by: David Henningsson <david.henningsson at canonical.com>
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- sound/pci/hda/patch_realtek.c | 1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
-index 5f096a5..191fd78 100644
---- a/sound/pci/hda/patch_realtek.c
-+++ b/sound/pci/hda/patch_realtek.c
-@@ -5989,6 +5989,7 @@ static const struct hda_codec_preset snd_hda_preset_realtek[] = {
- { .id = 0x10ec0275, .name = "ALC275", .patch = patch_alc269 },
- { .id = 0x10ec0276, .name = "ALC276", .patch = patch_alc269 },
- { .id = 0x10ec0280, .name = "ALC280", .patch = patch_alc269 },
-+ { .id = 0x10ec0282, .name = "ALC282", .patch = patch_alc269 },
- { .id = 0x10ec0861, .rev = 0x100340, .name = "ALC660",
- .patch = patch_alc861 },
- { .id = 0x10ec0660, .name = "ALC660-VD", .patch = patch_alc861vd },
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0049-iommu-amd-Fix-hotplug-with-iommu-pt.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0049-iommu-amd-Fix-hotplug-with-iommu-pt.patch
deleted file mode 100644
index 879ea87..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0049-iommu-amd-Fix-hotplug-with-iommu-pt.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From 05f62dd05ef7d48fc3f9a778a5413ebcc8dc681f Mon Sep 17 00:00:00 2001
-From: Joerg Roedel <joerg.roedel at amd.com>
-Date: Thu, 19 Jul 2012 13:42:54 +0200
-Subject: [PATCH 49/73] iommu/amd: Fix hotplug with iommu=pt
-
-commit 2c9195e990297068d0f1f1bd8e2f1d09538009da upstream.
-
-This did not work because devices are not put into the
-pt_domain. Fix this.
-
-Signed-off-by: Joerg Roedel <joerg.roedel at amd.com>
-[bwh: Backported to 3.2: do not use iommu_dev_data::passthrough]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/iommu/amd_iommu.c | 10 ++++++----
- 1 files changed, 6 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c
-index a1b8caa..0f074e0 100644
---- a/drivers/iommu/amd_iommu.c
-+++ b/drivers/iommu/amd_iommu.c
-@@ -1865,6 +1865,11 @@ static int device_change_notifier(struct notifier_block *nb,
-
- iommu_init_device(dev);
-
-+ if (iommu_pass_through) {
-+ attach_device(dev, pt_domain);
-+ break;
-+ }
-+
- domain = domain_for_device(dev);
-
- /* allocate a protection domain if a device is added */
-@@ -1880,10 +1885,7 @@ static int device_change_notifier(struct notifier_block *nb,
- list_add_tail(&dma_domain->list, &iommu_pd_list);
- spin_unlock_irqrestore(&iommu_pd_list_lock, flags);
-
-- if (!iommu_pass_through)
-- dev->archdata.dma_ops = &amd_iommu_dma_ops;
-- else
-- dev->archdata.dma_ops = &nommu_dma_ops;
-+ dev->archdata.dma_ops = &amd_iommu_dma_ops;
-
- break;
- case BUS_NOTIFY_DEL_DEVICE:
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0050-drm-radeon-Try-harder-to-avoid-HW-cursor-ending-on-a.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0050-drm-radeon-Try-harder-to-avoid-HW-cursor-ending-on-a.patch
deleted file mode 100644
index 7b500ec..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0050-drm-radeon-Try-harder-to-avoid-HW-cursor-ending-on-a.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From c5666fb07de9499337e69ebde032d9cbcad7e418 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Michel=20D=C3=A4nzer?= <michel.daenzer at amd.com>
-Date: Tue, 17 Jul 2012 19:02:09 +0200
-Subject: [PATCH 50/73] drm/radeon: Try harder to avoid HW cursor ending on a
- multiple of 128 columns.
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit f60ec4c7df043df81e62891ac45383d012afe0da upstream.
-
-This could previously fail if either of the enabled displays was using a
-horizontal resolution that is a multiple of 128, and only the leftmost column
-of the cursor was (supposed to be) visible at the right edge of that display.
-
-The solution is to move the cursor one pixel to the left in that case.
-
-Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=33183
-
-Signed-off-by: Michel Dänzer <michel.daenzer at amd.com>
-Reviewed-by: Alex Deucher <alexander.deucher at amd.com>
-Signed-off-by: Dave Airlie <airlied at redhat.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpu/drm/radeon/radeon_cursor.c | 8 +++++++-
- 1 files changed, 7 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/gpu/drm/radeon/radeon_cursor.c b/drivers/gpu/drm/radeon/radeon_cursor.c
-index 986d608..2132109 100644
---- a/drivers/gpu/drm/radeon/radeon_cursor.c
-+++ b/drivers/gpu/drm/radeon/radeon_cursor.c
-@@ -257,8 +257,14 @@ int radeon_crtc_cursor_move(struct drm_crtc *crtc,
- if (!(cursor_end & 0x7f))
- w--;
- }
-- if (w <= 0)
-+ if (w <= 0) {
- w = 1;
-+ cursor_end = x - xorigin + w;
-+ if (!(cursor_end & 0x7f)) {
-+ x--;
-+ WARN_ON_ONCE(x < 0);
-+ }
-+ }
- }
- }
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0051-ALSA-hda-Turn-on-PIN_OUT-from-hdmi-playback-prepare.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0051-ALSA-hda-Turn-on-PIN_OUT-from-hdmi-playback-prepare.patch
deleted file mode 100644
index fce7514..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0051-ALSA-hda-Turn-on-PIN_OUT-from-hdmi-playback-prepare.patch
+++ /dev/null
@@ -1,66 +0,0 @@
-From d9c222f79d4fa6da0c113afe452968a2f0d226f4 Mon Sep 17 00:00:00 2001
-From: Dylan Reid <dgreid at chromium.org>
-Date: Thu, 19 Jul 2012 17:52:58 -0700
-Subject: [PATCH 51/73] ALSA: hda - Turn on PIN_OUT from hdmi playback
- prepare.
-
-commit 9e76e6d031482194a5b24d8e9ab88063fbd6b4b5 upstream.
-
-Turn on the pin widget's PIN_OUT bit from playback prepare. The pin is
-enabled in open, but is disabled in hdmi_init_pin which is called during
-system resume. This causes a system suspend/resume during playback to
-mute HDMI/DP. Enabling the pin in prepare instead of open allows calling
-snd_pcm_prepare after a system resume to restore audio.
-
-Signed-off-by: Dylan Reid <dgreid at chromium.org>
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- sound/pci/hda/patch_hdmi.c | 12 ++++++------
- 1 files changed, 6 insertions(+), 6 deletions(-)
-
-diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c
-index c505fd5..c119f33 100644
---- a/sound/pci/hda/patch_hdmi.c
-+++ b/sound/pci/hda/patch_hdmi.c
-@@ -868,7 +868,6 @@ static int hdmi_pcm_open(struct hda_pcm_stream *hinfo,
- struct hdmi_spec_per_pin *per_pin;
- struct hdmi_eld *eld;
- struct hdmi_spec_per_cvt *per_cvt = NULL;
-- int pinctl;
-
- /* Validate hinfo */
- pin_idx = hinfo_to_pin_index(spec, hinfo);
-@@ -904,11 +903,6 @@ static int hdmi_pcm_open(struct hda_pcm_stream *hinfo,
- snd_hda_codec_write(codec, per_pin->pin_nid, 0,
- AC_VERB_SET_CONNECT_SEL,
- mux_idx);
-- pinctl = snd_hda_codec_read(codec, per_pin->pin_nid, 0,
-- AC_VERB_GET_PIN_WIDGET_CONTROL, 0);
-- snd_hda_codec_write(codec, per_pin->pin_nid, 0,
-- AC_VERB_SET_PIN_WIDGET_CONTROL,
-- pinctl | PIN_OUT);
- snd_hda_spdif_ctls_assign(codec, pin_idx, per_cvt->cvt_nid);
-
- /* Initially set the converter's capabilities */
-@@ -1147,11 +1141,17 @@ static int generic_hdmi_playback_pcm_prepare(struct hda_pcm_stream *hinfo,
- struct hdmi_spec *spec = codec->spec;
- int pin_idx = hinfo_to_pin_index(spec, hinfo);
- hda_nid_t pin_nid = spec->pins[pin_idx].pin_nid;
-+ int pinctl;
-
- hdmi_set_channel_count(codec, cvt_nid, substream->runtime->channels);
-
- hdmi_setup_audio_infoframe(codec, pin_idx, substream);
-
-+ pinctl = snd_hda_codec_read(codec, pin_nid, 0,
-+ AC_VERB_GET_PIN_WIDGET_CONTROL, 0);
-+ snd_hda_codec_write(codec, pin_nid, 0,
-+ AC_VERB_SET_PIN_WIDGET_CONTROL, pinctl | PIN_OUT);
-+
- return hdmi_setup_stream(codec, cvt_nid, pin_nid, stream_tag, format);
- }
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0052-block-add-blk_queue_dead.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0052-block-add-blk_queue_dead.patch
deleted file mode 100644
index d9de19d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0052-block-add-blk_queue_dead.patch
+++ /dev/null
@@ -1,140 +0,0 @@
-From 964e5928138f09dc58d9d507ce51a6adccfdb7e0 Mon Sep 17 00:00:00 2001
-From: Tejun Heo <tj at kernel.org>
-Date: Wed, 14 Dec 2011 00:33:37 +0100
-Subject: [PATCH 52/73] block: add blk_queue_dead()
-
-commit 34f6055c80285e4efb3f602a9119db75239744dc upstream.
-
-There are a number of QUEUE_FLAG_DEAD tests. Add blk_queue_dead()
-macro and use it.
-
-This patch doesn't introduce any functional difference.
-
-Signed-off-by: Tejun Heo <tj at kernel.org>
-Signed-off-by: Jens Axboe <axboe at kernel.dk>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- block/blk-core.c | 6 +++---
- block/blk-exec.c | 2 +-
- block/blk-sysfs.c | 4 ++--
- block/blk-throttle.c | 4 ++--
- block/blk.h | 2 +-
- include/linux/blkdev.h | 1 +
- 6 files changed, 10 insertions(+), 9 deletions(-)
-
-diff --git a/block/blk-core.c b/block/blk-core.c
-index 15de223..49d9e91 100644
---- a/block/blk-core.c
-+++ b/block/blk-core.c
-@@ -607,7 +607,7 @@ EXPORT_SYMBOL(blk_init_allocated_queue);
-
- int blk_get_queue(struct request_queue *q)
- {
-- if (likely(!test_bit(QUEUE_FLAG_DEAD, &q->queue_flags))) {
-+ if (likely(!blk_queue_dead(q))) {
- kobject_get(&q->kobj);
- return 0;
- }
-@@ -754,7 +754,7 @@ static struct request *get_request(struct request_queue *q, int rw_flags,
- const bool is_sync = rw_is_sync(rw_flags) != 0;
- int may_queue;
-
-- if (unlikely(test_bit(QUEUE_FLAG_DEAD, &q->queue_flags)))
-+ if (unlikely(blk_queue_dead(q)))
- return NULL;
-
- may_queue = elv_may_queue(q, rw_flags);
-@@ -874,7 +874,7 @@ static struct request *get_request_wait(struct request_queue *q, int rw_flags,
- struct io_context *ioc;
- struct request_list *rl = &q->rq;
-
-- if (unlikely(test_bit(QUEUE_FLAG_DEAD, &q->queue_flags)))
-+ if (unlikely(blk_queue_dead(q)))
- return NULL;
-
- prepare_to_wait_exclusive(&rl->wait[is_sync], &wait,
-diff --git a/block/blk-exec.c b/block/blk-exec.c
-index a1ebceb..6053285 100644
---- a/block/blk-exec.c
-+++ b/block/blk-exec.c
-@@ -50,7 +50,7 @@ void blk_execute_rq_nowait(struct request_queue *q, struct gendisk *bd_disk,
- {
- int where = at_head ? ELEVATOR_INSERT_FRONT : ELEVATOR_INSERT_BACK;
-
-- if (unlikely(test_bit(QUEUE_FLAG_DEAD, &q->queue_flags))) {
-+ if (unlikely(blk_queue_dead(q))) {
- rq->errors = -ENXIO;
- if (rq->end_io)
- rq->end_io(rq, rq->errors);
-diff --git a/block/blk-sysfs.c b/block/blk-sysfs.c
-index e7f9f65..f0b2ca8 100644
---- a/block/blk-sysfs.c
-+++ b/block/blk-sysfs.c
-@@ -425,7 +425,7 @@ queue_attr_show(struct kobject *kobj, struct attribute *attr, char *page)
- if (!entry->show)
- return -EIO;
- mutex_lock(&q->sysfs_lock);
-- if (test_bit(QUEUE_FLAG_DEAD, &q->queue_flags)) {
-+ if (blk_queue_dead(q)) {
- mutex_unlock(&q->sysfs_lock);
- return -ENOENT;
- }
-@@ -447,7 +447,7 @@ queue_attr_store(struct kobject *kobj, struct attribute *attr,
-
- q = container_of(kobj, struct request_queue, kobj);
- mutex_lock(&q->sysfs_lock);
-- if (test_bit(QUEUE_FLAG_DEAD, &q->queue_flags)) {
-+ if (blk_queue_dead(q)) {
- mutex_unlock(&q->sysfs_lock);
- return -ENOENT;
- }
-diff --git a/block/blk-throttle.c b/block/blk-throttle.c
-index 4553245..5eed6a7 100644
---- a/block/blk-throttle.c
-+++ b/block/blk-throttle.c
-@@ -310,7 +310,7 @@ static struct throtl_grp * throtl_get_tg(struct throtl_data *td)
- struct request_queue *q = td->queue;
-
- /* no throttling for dead queue */
-- if (unlikely(test_bit(QUEUE_FLAG_DEAD, &q->queue_flags)))
-+ if (unlikely(blk_queue_dead(q)))
- return NULL;
-
- rcu_read_lock();
-@@ -335,7 +335,7 @@ static struct throtl_grp * throtl_get_tg(struct throtl_data *td)
- spin_lock_irq(q->queue_lock);
-
- /* Make sure @q is still alive */
-- if (unlikely(test_bit(QUEUE_FLAG_DEAD, &q->queue_flags))) {
-+ if (unlikely(blk_queue_dead(q))) {
- kfree(tg);
- return NULL;
- }
-diff --git a/block/blk.h b/block/blk.h
-index 3f6551b..e38691d 100644
---- a/block/blk.h
-+++ b/block/blk.h
-@@ -85,7 +85,7 @@ static inline struct request *__elv_next_request(struct request_queue *q)
- q->flush_queue_delayed = 1;
- return NULL;
- }
-- if (test_bit(QUEUE_FLAG_DEAD, &q->queue_flags) ||
-+ if (unlikely(blk_queue_dead(q)) ||
- !q->elevator->ops->elevator_dispatch_fn(q, 0))
- return NULL;
- }
-diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
-index 0ed1eb0..ff039f0 100644
---- a/include/linux/blkdev.h
-+++ b/include/linux/blkdev.h
-@@ -481,6 +481,7 @@ static inline void queue_flag_clear(unsigned int flag, struct request_queue *q)
-
- #define blk_queue_tagged(q) test_bit(QUEUE_FLAG_QUEUED, &(q)->queue_flags)
- #define blk_queue_stopped(q) test_bit(QUEUE_FLAG_STOPPED, &(q)->queue_flags)
-+#define blk_queue_dead(q) test_bit(QUEUE_FLAG_DEAD, &(q)->queue_flags)
- #define blk_queue_nomerges(q) test_bit(QUEUE_FLAG_NOMERGES, &(q)->queue_flags)
- #define blk_queue_noxmerges(q) \
- test_bit(QUEUE_FLAG_NOXMERGES, &(q)->queue_flags)
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0053-Fix-device-removal-NULL-pointer-dereference.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0053-Fix-device-removal-NULL-pointer-dereference.patch
deleted file mode 100644
index 6cf674e..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0053-Fix-device-removal-NULL-pointer-dereference.patch
+++ /dev/null
@@ -1,163 +0,0 @@
-From 494efb27e48c4689686b72d1490e9f44fcbd08e8 Mon Sep 17 00:00:00 2001
-From: Bart Van Assche <bvanassche at acm.org>
-Date: Fri, 29 Jun 2012 15:33:22 +0000
-Subject: [PATCH 53/73] Fix device removal NULL pointer dereference
-
-commit 67bd94130015c507011af37858989b199c52e1de upstream.
-
-Use blk_queue_dead() to test whether the queue is dead instead
-of !sdev. Since scsi_prep_fn() may be invoked concurrently with
-__scsi_remove_device(), keep the queuedata (sdev) pointer in
-__scsi_remove_device(). This patch fixes a kernel oops that
-can be triggered by USB device removal. See also
-http://www.spinics.net/lists/linux-scsi/msg56254.html.
-
-Other changes included in this patch:
-- Swap the blk_cleanup_queue() and kfree() calls in
- scsi_host_dev_release() to make that code easier to grasp.
-- Remove the queue dead check from scsi_run_queue() since the
- queue state can change anyway at any point in that function
- where the queue lock is not held.
-- Remove the queue dead check from the start of scsi_request_fn()
- since it is redundant with the scsi_device_online() check.
-
-Reported-by: Jun'ichi Nomura <j-nomura at ce.jp.nec.com>
-Signed-off-by: Bart Van Assche <bvanassche at acm.org>
-Reviewed-by: Mike Christie <michaelc at cs.wisc.edu>
-Reviewed-by: Tejun Heo <tj at kernel.org>
-Signed-off-by: James Bottomley <JBottomley at Parallels.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/scsi/hosts.c | 7 ++++---
- drivers/scsi/scsi_lib.c | 32 ++++----------------------------
- drivers/scsi/scsi_priv.h | 1 -
- drivers/scsi/scsi_sysfs.c | 5 +----
- 4 files changed, 9 insertions(+), 36 deletions(-)
-
-diff --git a/drivers/scsi/hosts.c b/drivers/scsi/hosts.c
-index 351dc0b..ee77a58 100644
---- a/drivers/scsi/hosts.c
-+++ b/drivers/scsi/hosts.c
-@@ -287,6 +287,7 @@ static void scsi_host_dev_release(struct device *dev)
- struct Scsi_Host *shost = dev_to_shost(dev);
- struct device *parent = dev->parent;
- struct request_queue *q;
-+ void *queuedata;
-
- scsi_proc_hostdir_rm(shost->hostt);
-
-@@ -296,9 +297,9 @@ static void scsi_host_dev_release(struct device *dev)
- destroy_workqueue(shost->work_q);
- q = shost->uspace_req_q;
- if (q) {
-- kfree(q->queuedata);
-- q->queuedata = NULL;
-- scsi_free_queue(q);
-+ queuedata = q->queuedata;
-+ blk_cleanup_queue(q);
-+ kfree(queuedata);
- }
-
- scsi_destroy_command_freelist(shost);
-diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
-index f0ab58e..4f68ba6 100644
---- a/drivers/scsi/scsi_lib.c
-+++ b/drivers/scsi/scsi_lib.c
-@@ -406,10 +406,6 @@ static void scsi_run_queue(struct request_queue *q)
- LIST_HEAD(starved_list);
- unsigned long flags;
-
-- /* if the device is dead, sdev will be NULL, so no queue to run */
-- if (!sdev)
-- return;
--
- shost = sdev->host;
- if (scsi_target(sdev)->single_lun)
- scsi_single_lun_run(sdev);
-@@ -1374,16 +1370,16 @@ static inline int scsi_host_queue_ready(struct request_queue *q,
- * may be changed after request stacking drivers call the function,
- * regardless of taking lock or not.
- *
-- * When scsi can't dispatch I/Os anymore and needs to kill I/Os
-- * (e.g. !sdev), scsi needs to return 'not busy'.
-- * Otherwise, request stacking drivers may hold requests forever.
-+ * When scsi can't dispatch I/Os anymore and needs to kill I/Os scsi
-+ * needs to return 'not busy'. Otherwise, request stacking drivers
-+ * may hold requests forever.
- */
- static int scsi_lld_busy(struct request_queue *q)
- {
- struct scsi_device *sdev = q->queuedata;
- struct Scsi_Host *shost;
-
-- if (!sdev)
-+ if (blk_queue_dead(q))
- return 0;
-
- shost = sdev->host;
-@@ -1494,12 +1490,6 @@ static void scsi_request_fn(struct request_queue *q)
- struct scsi_cmnd *cmd;
- struct request *req;
-
-- if (!sdev) {
-- while ((req = blk_peek_request(q)) != NULL)
-- scsi_kill_request(req, q);
-- return;
-- }
--
- if(!get_device(&sdev->sdev_gendev))
- /* We must be tearing the block queue down already */
- return;
-@@ -1701,20 +1691,6 @@ struct request_queue *scsi_alloc_queue(struct scsi_device *sdev)
- return q;
- }
-
--void scsi_free_queue(struct request_queue *q)
--{
-- unsigned long flags;
--
-- WARN_ON(q->queuedata);
--
-- /* cause scsi_request_fn() to kill all non-finished requests */
-- spin_lock_irqsave(q->queue_lock, flags);
-- q->request_fn(q);
-- spin_unlock_irqrestore(q->queue_lock, flags);
--
-- blk_cleanup_queue(q);
--}
--
- /*
- * Function: scsi_block_requests()
- *
-diff --git a/drivers/scsi/scsi_priv.h b/drivers/scsi/scsi_priv.h
-index 5b475d0..d58adca 100644
---- a/drivers/scsi/scsi_priv.h
-+++ b/drivers/scsi/scsi_priv.h
-@@ -85,7 +85,6 @@ extern void scsi_next_command(struct scsi_cmnd *cmd);
- extern void scsi_io_completion(struct scsi_cmnd *, unsigned int);
- extern void scsi_run_host_queues(struct Scsi_Host *shost);
- extern struct request_queue *scsi_alloc_queue(struct scsi_device *sdev);
--extern void scsi_free_queue(struct request_queue *q);
- extern int scsi_init_queue(void);
- extern void scsi_exit_queue(void);
- struct request_queue;
-diff --git a/drivers/scsi/scsi_sysfs.c b/drivers/scsi/scsi_sysfs.c
-index 04c2a27..42c35ff 100644
---- a/drivers/scsi/scsi_sysfs.c
-+++ b/drivers/scsi/scsi_sysfs.c
-@@ -971,11 +971,8 @@ void __scsi_remove_device(struct scsi_device *sdev)
- sdev->host->hostt->slave_destroy(sdev);
- transport_destroy_device(dev);
-
-- /* cause the request function to reject all I/O requests */
-- sdev->request_queue->queuedata = NULL;
--
- /* Freeing the queue signals to block that we're done */
-- scsi_free_queue(sdev->request_queue);
-+ blk_cleanup_queue(sdev->request_queue);
- put_device(dev);
- }
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0054-Avoid-dangling-pointer-in-scsi_requeue_command.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0054-Avoid-dangling-pointer-in-scsi_requeue_command.patch
deleted file mode 100644
index 98e6b5b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0054-Avoid-dangling-pointer-in-scsi_requeue_command.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From c24bb6a70695fb930fc0b976db55fad4334cd992 Mon Sep 17 00:00:00 2001
-From: Bart Van Assche <bvanassche at acm.org>
-Date: Fri, 29 Jun 2012 15:34:26 +0000
-Subject: [PATCH 54/73] Avoid dangling pointer in scsi_requeue_command()
-
-commit 940f5d47e2f2e1fa00443921a0abf4822335b54d upstream.
-
-When we call scsi_unprep_request() the command associated with the request
-gets destroyed and therefore drops its reference on the device. If this was
-the only reference, the device may get released and we end up with a NULL
-pointer deref when we call blk_requeue_request.
-
-Reported-by: Mike Christie <michaelc at cs.wisc.edu>
-Signed-off-by: Bart Van Assche <bvanassche at acm.org>
-Reviewed-by: Mike Christie <michaelc at cs.wisc.edu>
-Reviewed-by: Tejun Heo <tj at kernel.org>
-[jejb: enhance commend and add commit log for stable]
-Signed-off-by: James Bottomley <JBottomley at Parallels.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/scsi/scsi_lib.c | 11 +++++++++++
- 1 files changed, 11 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
-index 4f68ba6..6c4b620 100644
---- a/drivers/scsi/scsi_lib.c
-+++ b/drivers/scsi/scsi_lib.c
-@@ -479,15 +479,26 @@ void scsi_requeue_run_queue(struct work_struct *work)
- */
- static void scsi_requeue_command(struct request_queue *q, struct scsi_cmnd *cmd)
- {
-+ struct scsi_device *sdev = cmd->device;
- struct request *req = cmd->request;
- unsigned long flags;
-
-+ /*
-+ * We need to hold a reference on the device to avoid the queue being
-+ * killed after the unlock and before scsi_run_queue is invoked which
-+ * may happen because scsi_unprep_request() puts the command which
-+ * releases its reference on the device.
-+ */
-+ get_device(&sdev->sdev_gendev);
-+
- spin_lock_irqsave(q->queue_lock, flags);
- scsi_unprep_request(req);
- blk_requeue_request(q, req);
- spin_unlock_irqrestore(q->queue_lock, flags);
-
- scsi_run_queue(q);
-+
-+ put_device(&sdev->sdev_gendev);
- }
-
- void scsi_next_command(struct scsi_cmnd *cmd)
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0055-fix-hot-unplug-vs-async-scan-race.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0055-fix-hot-unplug-vs-async-scan-race.patch
deleted file mode 100644
index 9d7c97a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0055-fix-hot-unplug-vs-async-scan-race.patch
+++ /dev/null
@@ -1,122 +0,0 @@
-From 04ed7d216271c757e1f14ff369f5aa1908f04189 Mon Sep 17 00:00:00 2001
-From: Dan Williams <dan.j.williams at intel.com>
-Date: Thu, 21 Jun 2012 23:47:28 -0700
-Subject: [PATCH 55/73] fix hot unplug vs async scan race
-
-commit 3b661a92e869ebe2358de8f4b3230ad84f7fce51 upstream.
-
-The following crash results from cases where the end_device has been
-removed before scsi_sysfs_add_sdev has had a chance to run.
-
- BUG: unable to handle kernel NULL pointer dereference at 0000000000000098
- IP: [<ffffffff8115e100>] sysfs_create_dir+0x32/0xb6
- ...
- Call Trace:
- [<ffffffff8125e4a8>] kobject_add_internal+0x120/0x1e3
- [<ffffffff81075149>] ? trace_hardirqs_on+0xd/0xf
- [<ffffffff8125e641>] kobject_add_varg+0x41/0x50
- [<ffffffff8125e70b>] kobject_add+0x64/0x66
- [<ffffffff8131122b>] device_add+0x12d/0x63a
- [<ffffffff814b65ea>] ? _raw_spin_unlock_irqrestore+0x47/0x56
- [<ffffffff8107de15>] ? module_refcount+0x89/0xa0
- [<ffffffff8132f348>] scsi_sysfs_add_sdev+0x4e/0x28a
- [<ffffffff8132dcbb>] do_scan_async+0x9c/0x145
-
-...teach scsi_sysfs_add_devices() to check for deleted devices() before
-trying to add them, and teach scsi_remove_target() how to remove targets
-that have not been added via device_add().
-
-Reported-by: Dariusz Majchrzak <dariusz.majchrzak at intel.com>
-Signed-off-by: Dan Williams <dan.j.williams at intel.com>
-Signed-off-by: James Bottomley <JBottomley at Parallels.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/scsi/scsi_scan.c | 3 +++
- drivers/scsi/scsi_sysfs.c | 41 ++++++++++++++++++++++++++---------------
- 2 files changed, 29 insertions(+), 15 deletions(-)
-
-diff --git a/drivers/scsi/scsi_scan.c b/drivers/scsi/scsi_scan.c
-index 6e7ea4a..a48b59c 100644
---- a/drivers/scsi/scsi_scan.c
-+++ b/drivers/scsi/scsi_scan.c
-@@ -1710,6 +1710,9 @@ static void scsi_sysfs_add_devices(struct Scsi_Host *shost)
- {
- struct scsi_device *sdev;
- shost_for_each_device(sdev, shost) {
-+ /* target removed before the device could be added */
-+ if (sdev->sdev_state == SDEV_DEL)
-+ continue;
- if (!scsi_host_scan_allowed(shost) ||
- scsi_sysfs_add_sdev(sdev) != 0)
- __scsi_remove_device(sdev);
-diff --git a/drivers/scsi/scsi_sysfs.c b/drivers/scsi/scsi_sysfs.c
-index 42c35ff..bb7c482 100644
---- a/drivers/scsi/scsi_sysfs.c
-+++ b/drivers/scsi/scsi_sysfs.c
-@@ -997,7 +997,6 @@ static void __scsi_remove_target(struct scsi_target *starget)
- struct scsi_device *sdev;
-
- spin_lock_irqsave(shost->host_lock, flags);
-- starget->reap_ref++;
- restart:
- list_for_each_entry(sdev, &shost->__devices, siblings) {
- if (sdev->channel != starget->channel ||
-@@ -1011,14 +1010,6 @@ static void __scsi_remove_target(struct scsi_target *starget)
- goto restart;
- }
- spin_unlock_irqrestore(shost->host_lock, flags);
-- scsi_target_reap(starget);
--}
--
--static int __remove_child (struct device * dev, void * data)
--{
-- if (scsi_is_target_device(dev))
-- __scsi_remove_target(to_scsi_target(dev));
-- return 0;
- }
-
- /**
-@@ -1031,14 +1022,34 @@ static int __remove_child (struct device * dev, void * data)
- */
- void scsi_remove_target(struct device *dev)
- {
-- if (scsi_is_target_device(dev)) {
-- __scsi_remove_target(to_scsi_target(dev));
-- return;
-+ struct Scsi_Host *shost = dev_to_shost(dev->parent);
-+ struct scsi_target *starget, *found;
-+ unsigned long flags;
-+
-+ restart:
-+ found = NULL;
-+ spin_lock_irqsave(shost->host_lock, flags);
-+ list_for_each_entry(starget, &shost->__targets, siblings) {
-+ if (starget->state == STARGET_DEL)
-+ continue;
-+ if (starget->dev.parent == dev || &starget->dev == dev) {
-+ found = starget;
-+ found->reap_ref++;
-+ break;
-+ }
- }
-+ spin_unlock_irqrestore(shost->host_lock, flags);
-
-- get_device(dev);
-- device_for_each_child(dev, NULL, __remove_child);
-- put_device(dev);
-+ if (found) {
-+ __scsi_remove_target(found);
-+ scsi_target_reap(found);
-+ /* in the case where @dev has multiple starget children,
-+ * continue removing.
-+ *
-+ * FIXME: does such a case exist?
-+ */
-+ goto restart;
-+ }
- }
- EXPORT_SYMBOL(scsi_remove_target);
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0056-fix-eh-wakeup-scsi_schedule_eh-vs-scsi_restart_opera.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0056-fix-eh-wakeup-scsi_schedule_eh-vs-scsi_restart_opera.patch
deleted file mode 100644
index a202864..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0056-fix-eh-wakeup-scsi_schedule_eh-vs-scsi_restart_opera.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From 3936af31e073e2eb55d8d2eee05ec10999f0dacc Mon Sep 17 00:00:00 2001
-From: Dan Williams <dan.j.williams at intel.com>
-Date: Thu, 21 Jun 2012 23:25:32 -0700
-Subject: [PATCH 56/73] fix eh wakeup (scsi_schedule_eh vs
- scsi_restart_operations)
-
-commit 57fc2e335fd3c2f898ee73570dc81426c28dc7b4 upstream.
-
-Rapid ata hotplug on a libsas controller results in cases where libsas
-is waiting indefinitely on eh to perform an ata probe.
-
-A race exists between scsi_schedule_eh() and scsi_restart_operations()
-in the case when scsi_restart_operations() issues i/o to other devices
-in the sas domain. When this happens the host state transitions from
-SHOST_RECOVERY (set by scsi_schedule_eh) back to SHOST_RUNNING and
-->host_busy is non-zero so we put the eh thread to sleep even though
-->host_eh_scheduled is active.
-
-Before putting the error handler to sleep we need to check if the
-host_state needs to return to SHOST_RECOVERY for another trip through
-eh. Since i/o that is released by scsi_restart_operations has been
-blocked for at least one eh cycle, this implementation allows those
-i/o's to run before another eh cycle starts to discourage hung task
-timeouts.
-
-Reported-by: Tom Jackson <thomas.p.jackson at intel.com>
-Tested-by: Tom Jackson <thomas.p.jackson at intel.com>
-Signed-off-by: Dan Williams <dan.j.williams at intel.com>
-Signed-off-by: James Bottomley <JBottomley at Parallels.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/scsi/scsi_error.c | 14 ++++++++++++++
- 1 files changed, 14 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c
-index dc6131e..456b131 100644
---- a/drivers/scsi/scsi_error.c
-+++ b/drivers/scsi/scsi_error.c
-@@ -1673,6 +1673,20 @@ static void scsi_restart_operations(struct Scsi_Host *shost)
- * requests are started.
- */
- scsi_run_host_queues(shost);
-+
-+ /*
-+ * if eh is active and host_eh_scheduled is pending we need to re-run
-+ * recovery. we do this check after scsi_run_host_queues() to allow
-+ * everything pent up since the last eh run a chance to make forward
-+ * progress before we sync again. Either we'll immediately re-run
-+ * recovery or scsi_device_unbusy() will wake us again when these
-+ * pending commands complete.
-+ */
-+ spin_lock_irqsave(shost->host_lock, flags);
-+ if (shost->host_eh_scheduled)
-+ if (scsi_host_set_state(shost, SHOST_RECOVERY))
-+ WARN_ON(scsi_host_set_state(shost, SHOST_CANCEL_RECOVERY));
-+ spin_unlock_irqrestore(shost->host_lock, flags);
- }
-
- /**
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0057-libsas-continue-revalidation.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0057-libsas-continue-revalidation.patch
deleted file mode 100644
index 2a24209..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0057-libsas-continue-revalidation.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From 07925ac535d9c4f774b0ba817fece3557670013f Mon Sep 17 00:00:00 2001
-From: Dan Williams <dan.j.williams at intel.com>
-Date: Thu, 21 Jun 2012 23:36:15 -0700
-Subject: [PATCH 57/73] libsas: continue revalidation
-
-commit 26f2f199ff150d8876b2641c41e60d1c92d2fb81 upstream.
-
-Continue running revalidation until no more broadcast devices are
-discovered. Fixes cases where re-discovery completes too early in a
-domain with multiple expanders with pending re-discovery events.
-Servicing BCNs can get backed up behind error recovery.
-
-Signed-off-by: Dan Williams <dan.j.williams at intel.com>
-Signed-off-by: James Bottomley <JBottomley at Parallels.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/scsi/libsas/sas_expander.c | 8 ++++----
- 1 files changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/scsi/libsas/sas_expander.c b/drivers/scsi/libsas/sas_expander.c
-index e48ba4b..6330110 100644
---- a/drivers/scsi/libsas/sas_expander.c
-+++ b/drivers/scsi/libsas/sas_expander.c
-@@ -1983,9 +1983,7 @@ int sas_ex_revalidate_domain(struct domain_device *port_dev)
- struct domain_device *dev = NULL;
-
- res = sas_find_bcast_dev(port_dev, &dev);
-- if (res)
-- goto out;
-- if (dev) {
-+ while (res == 0 && dev) {
- struct expander_device *ex = &dev->ex_dev;
- int i = 0, phy_id;
-
-@@ -1997,8 +1995,10 @@ int sas_ex_revalidate_domain(struct domain_device *port_dev)
- res = sas_rediscover(dev, phy_id);
- i = phy_id + 1;
- } while (i < ex->num_phys);
-+
-+ dev = NULL;
-+ res = sas_find_bcast_dev(port_dev, &dev);
- }
--out:
- return res;
- }
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0058-libsas-fix-sas_discover_devices-return-code-handling.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0058-libsas-fix-sas_discover_devices-return-code-handling.patch
deleted file mode 100644
index 4542c15..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0058-libsas-fix-sas_discover_devices-return-code-handling.patch
+++ /dev/null
@@ -1,128 +0,0 @@
-From 61141b84f7a92caf6a6670396f9b2dec5345bc0e Mon Sep 17 00:00:00 2001
-From: Dan Williams <dan.j.williams at intel.com>
-Date: Thu, 21 Jun 2012 23:36:20 -0700
-Subject: [PATCH 58/73] libsas: fix sas_discover_devices return code handling
-
-commit b17caa174a7e1fd2e17b26e210d4ee91c4c28b37 upstream.
-
-commit 198439e4 [SCSI] libsas: do not set res = 0 in sas_ex_discover_dev()
-commit 19252de6 [SCSI] libsas: fix wide port hotplug issues
-
-The above commits seem to have confused the return value of
-sas_ex_discover_dev which is non-zero on failure and
-sas_ex_join_wide_port which just indicates short circuiting discovery on
-already established ports. The result is random discovery failures
-depending on configuration.
-
-Calls to sas_ex_join_wide_port are the source of the trouble as its
-return value is errantly assigned to 'res'. Convert it to bool and stop
-returning its result up the stack.
-
-Tested-by: Dan Melnic <dan.melnic at amd.com>
-Reported-by: Dan Melnic <dan.melnic at amd.com>
-Signed-off-by: Dan Williams <dan.j.williams at intel.com>
-Reviewed-by: Jack Wang <jack_wang at usish.com>
-Signed-off-by: James Bottomley <JBottomley at Parallels.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/scsi/libsas/sas_expander.c | 39 +++++++++++------------------------
- 1 files changed, 12 insertions(+), 27 deletions(-)
-
-diff --git a/drivers/scsi/libsas/sas_expander.c b/drivers/scsi/libsas/sas_expander.c
-index 6330110..dbe3568 100644
---- a/drivers/scsi/libsas/sas_expander.c
-+++ b/drivers/scsi/libsas/sas_expander.c
-@@ -774,7 +774,7 @@ static struct domain_device *sas_ex_discover_end_dev(
- }
-
- /* See if this phy is part of a wide port */
--static int sas_ex_join_wide_port(struct domain_device *parent, int phy_id)
-+static bool sas_ex_join_wide_port(struct domain_device *parent, int phy_id)
- {
- struct ex_phy *phy = &parent->ex_dev.ex_phy[phy_id];
- int i;
-@@ -790,11 +790,11 @@ static int sas_ex_join_wide_port(struct domain_device *parent, int phy_id)
- sas_port_add_phy(ephy->port, phy->phy);
- phy->port = ephy->port;
- phy->phy_state = PHY_DEVICE_DISCOVERED;
-- return 0;
-+ return true;
- }
- }
-
-- return -ENODEV;
-+ return false;
- }
-
- static struct domain_device *sas_ex_discover_expander(
-@@ -932,8 +932,7 @@ static int sas_ex_discover_dev(struct domain_device *dev, int phy_id)
- return res;
- }
-
-- res = sas_ex_join_wide_port(dev, phy_id);
-- if (!res) {
-+ if (sas_ex_join_wide_port(dev, phy_id)) {
- SAS_DPRINTK("Attaching ex phy%d to wide port %016llx\n",
- phy_id, SAS_ADDR(ex_phy->attached_sas_addr));
- return res;
-@@ -978,8 +977,7 @@ static int sas_ex_discover_dev(struct domain_device *dev, int phy_id)
- if (SAS_ADDR(ex->ex_phy[i].attached_sas_addr) ==
- SAS_ADDR(child->sas_addr)) {
- ex->ex_phy[i].phy_state= PHY_DEVICE_DISCOVERED;
-- res = sas_ex_join_wide_port(dev, i);
-- if (!res)
-+ if (sas_ex_join_wide_port(dev, i))
- SAS_DPRINTK("Attaching ex phy%d to wide port %016llx\n",
- i, SAS_ADDR(ex->ex_phy[i].attached_sas_addr));
-
-@@ -1849,32 +1847,20 @@ static int sas_discover_new(struct domain_device *dev, int phy_id)
- {
- struct ex_phy *ex_phy = &dev->ex_dev.ex_phy[phy_id];
- struct domain_device *child;
-- bool found = false;
-- int res, i;
-+ int res;
-
- SAS_DPRINTK("ex %016llx phy%d new device attached\n",
- SAS_ADDR(dev->sas_addr), phy_id);
- res = sas_ex_phy_discover(dev, phy_id);
- if (res)
-- goto out;
-- /* to support the wide port inserted */
-- for (i = 0; i < dev->ex_dev.num_phys; i++) {
-- struct ex_phy *ex_phy_temp = &dev->ex_dev.ex_phy[i];
-- if (i == phy_id)
-- continue;
-- if (SAS_ADDR(ex_phy_temp->attached_sas_addr) ==
-- SAS_ADDR(ex_phy->attached_sas_addr)) {
-- found = true;
-- break;
-- }
-- }
-- if (found) {
-- sas_ex_join_wide_port(dev, phy_id);
-+ return res;
-+
-+ if (sas_ex_join_wide_port(dev, phy_id))
- return 0;
-- }
-+
- res = sas_ex_discover_devices(dev, phy_id);
-- if (!res)
-- goto out;
-+ if (res)
-+ return res;
- list_for_each_entry(child, &dev->ex_dev.children, siblings) {
- if (SAS_ADDR(child->sas_addr) ==
- SAS_ADDR(ex_phy->attached_sas_addr)) {
-@@ -1884,7 +1870,6 @@ static int sas_discover_new(struct domain_device *dev, int phy_id)
- break;
- }
- }
--out:
- return res;
- }
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0059-iscsi-target-Drop-bogus-struct-file-usage-for-iSCSI-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0059-iscsi-target-Drop-bogus-struct-file-usage-for-iSCSI-.patch
deleted file mode 100644
index cfe9c56..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0059-iscsi-target-Drop-bogus-struct-file-usage-for-iSCSI-.patch
+++ /dev/null
@@ -1,230 +0,0 @@
-From ea954b6e038224e5946f09b1a359d19e672cde3a Mon Sep 17 00:00:00 2001
-From: Al Viro <viro at ZenIV.linux.org.uk>
-Date: Sat, 21 Jul 2012 08:55:18 +0100
-Subject: [PATCH 59/73] iscsi-target: Drop bogus struct file usage for
- iSCSI/SCTP
-
-commit bf6932f44a7b3fa7e2246a8b18a44670e5eab6c2 upstream.
-
-From Al Viro:
-
- BTW, speaking of struct file treatment related to sockets -
- there's this piece of code in iscsi:
- /*
- * The SCTP stack needs struct socket->file.
- */
- if ((np->np_network_transport == ISCSI_SCTP_TCP) ||
- (np->np_network_transport == ISCSI_SCTP_UDP)) {
- if (!new_sock->file) {
- new_sock->file = kzalloc(
- sizeof(struct file), GFP_KERNEL);
-
-For one thing, as far as I can see it'not true - sctp does *not* depend on
-socket->file being non-NULL; it does, in one place, check socket->file->f_flags
-for O_NONBLOCK, but there it treats NULL socket->file as "flag not set".
-Which is the case here anyway - the fake struct file created in
-__iscsi_target_login_thread() (and in iscsi_target_setup_login_socket(), with
-the same excuse) do *not* get that flag set.
-
-Moreover, it's a bloody serious violation of a bunch of asserts in VFS;
-all struct file instances should come from filp_cachep, via get_empty_filp()
-(or alloc_file(), which is a wrapper for it). FWIW, I'm very tempted to
-do this and be done with the entire mess:
-
-Signed-off-by: Al Viro <viro at zeniv.linux.org.uk>
-Cc: Andy Grover <agrover at redhat.com>
-Cc: Hannes Reinecke <hare at suse.de>
-Cc: Christoph Hellwig <hch at lst.de>
-Signed-off-by: Nicholas Bellinger <nab at linux-iscsi.org>
-[bwh: Backported to 3.2: adjust context]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/target/iscsi/iscsi_target.c | 22 +---------
- drivers/target/iscsi/iscsi_target_core.h | 2 -
- drivers/target/iscsi/iscsi_target_login.c | 60 +---------------------------
- 3 files changed, 6 insertions(+), 78 deletions(-)
-
-diff --git a/drivers/target/iscsi/iscsi_target.c b/drivers/target/iscsi/iscsi_target.c
-index 0842cc7..2ff1255 100644
---- a/drivers/target/iscsi/iscsi_target.c
-+++ b/drivers/target/iscsi/iscsi_target.c
-@@ -427,19 +427,8 @@ int iscsit_reset_np_thread(
-
- int iscsit_del_np_comm(struct iscsi_np *np)
- {
-- if (!np->np_socket)
-- return 0;
--
-- /*
-- * Some network transports allocate their own struct sock->file,
-- * see if we need to free any additional allocated resources.
-- */
-- if (np->np_flags & NPF_SCTP_STRUCT_FILE) {
-- kfree(np->np_socket->file);
-- np->np_socket->file = NULL;
-- }
--
-- sock_release(np->np_socket);
-+ if (np->np_socket)
-+ sock_release(np->np_socket);
- return 0;
- }
-
-@@ -4105,13 +4094,8 @@ int iscsit_close_connection(
- kfree(conn->conn_ops);
- conn->conn_ops = NULL;
-
-- if (conn->sock) {
-- if (conn->conn_flags & CONNFLAG_SCTP_STRUCT_FILE) {
-- kfree(conn->sock->file);
-- conn->sock->file = NULL;
-- }
-+ if (conn->sock)
- sock_release(conn->sock);
-- }
- conn->thread_set = NULL;
-
- pr_debug("Moving to TARG_CONN_STATE_FREE.\n");
-diff --git a/drivers/target/iscsi/iscsi_target_core.h b/drivers/target/iscsi/iscsi_target_core.h
-index 7da2d6a..0f68197 100644
---- a/drivers/target/iscsi/iscsi_target_core.h
-+++ b/drivers/target/iscsi/iscsi_target_core.h
-@@ -224,7 +224,6 @@ enum iscsi_timer_flags_table {
- /* Used for struct iscsi_np->np_flags */
- enum np_flags_table {
- NPF_IP_NETWORK = 0x00,
-- NPF_SCTP_STRUCT_FILE = 0x01 /* Bugfix */
- };
-
- /* Used for struct iscsi_np->np_thread_state */
-@@ -511,7 +510,6 @@ struct iscsi_conn {
- u16 local_port;
- int net_size;
- u32 auth_id;
--#define CONNFLAG_SCTP_STRUCT_FILE 0x01
- u32 conn_flags;
- /* Used for iscsi_tx_login_rsp() */
- u32 login_itt;
-diff --git a/drivers/target/iscsi/iscsi_target_login.c b/drivers/target/iscsi/iscsi_target_login.c
-index bd2adec..2ec5339 100644
---- a/drivers/target/iscsi/iscsi_target_login.c
-+++ b/drivers/target/iscsi/iscsi_target_login.c
-@@ -793,22 +793,6 @@ int iscsi_target_setup_login_socket(
- }
- np->np_socket = sock;
- /*
-- * The SCTP stack needs struct socket->file.
-- */
-- if ((np->np_network_transport == ISCSI_SCTP_TCP) ||
-- (np->np_network_transport == ISCSI_SCTP_UDP)) {
-- if (!sock->file) {
-- sock->file = kzalloc(sizeof(struct file), GFP_KERNEL);
-- if (!sock->file) {
-- pr_err("Unable to allocate struct"
-- " file for SCTP\n");
-- ret = -ENOMEM;
-- goto fail;
-- }
-- np->np_flags |= NPF_SCTP_STRUCT_FILE;
-- }
-- }
-- /*
- * Setup the np->np_sockaddr from the passed sockaddr setup
- * in iscsi_target_configfs.c code..
- */
-@@ -857,21 +841,15 @@ int iscsi_target_setup_login_socket(
-
- fail:
- np->np_socket = NULL;
-- if (sock) {
-- if (np->np_flags & NPF_SCTP_STRUCT_FILE) {
-- kfree(sock->file);
-- sock->file = NULL;
-- }
--
-+ if (sock)
- sock_release(sock);
-- }
- return ret;
- }
-
- static int __iscsi_target_login_thread(struct iscsi_np *np)
- {
- u8 buffer[ISCSI_HDR_LEN], iscsi_opcode, zero_tsih = 0;
-- int err, ret = 0, ip_proto, sock_type, set_sctp_conn_flag, stop;
-+ int err, ret = 0, ip_proto, sock_type, stop;
- struct iscsi_conn *conn = NULL;
- struct iscsi_login *login;
- struct iscsi_portal_group *tpg = NULL;
-@@ -882,7 +860,6 @@ static int __iscsi_target_login_thread(struct iscsi_np *np)
- struct sockaddr_in6 sock_in6;
-
- flush_signals(current);
-- set_sctp_conn_flag = 0;
- sock = np->np_socket;
- ip_proto = np->np_ip_proto;
- sock_type = np->np_sock_type;
-@@ -907,35 +884,12 @@ static int __iscsi_target_login_thread(struct iscsi_np *np)
- spin_unlock_bh(&np->np_thread_lock);
- goto out;
- }
-- /*
-- * The SCTP stack needs struct socket->file.
-- */
-- if ((np->np_network_transport == ISCSI_SCTP_TCP) ||
-- (np->np_network_transport == ISCSI_SCTP_UDP)) {
-- if (!new_sock->file) {
-- new_sock->file = kzalloc(
-- sizeof(struct file), GFP_KERNEL);
-- if (!new_sock->file) {
-- pr_err("Unable to allocate struct"
-- " file for SCTP\n");
-- sock_release(new_sock);
-- /* Get another socket */
-- return 1;
-- }
-- set_sctp_conn_flag = 1;
-- }
-- }
--
- iscsi_start_login_thread_timer(np);
-
- conn = kzalloc(sizeof(struct iscsi_conn), GFP_KERNEL);
- if (!conn) {
- pr_err("Could not allocate memory for"
- " new connection\n");
-- if (set_sctp_conn_flag) {
-- kfree(new_sock->file);
-- new_sock->file = NULL;
-- }
- sock_release(new_sock);
- /* Get another socket */
- return 1;
-@@ -945,9 +899,6 @@ static int __iscsi_target_login_thread(struct iscsi_np *np)
- conn->conn_state = TARG_CONN_STATE_FREE;
- conn->sock = new_sock;
-
-- if (set_sctp_conn_flag)
-- conn->conn_flags |= CONNFLAG_SCTP_STRUCT_FILE;
--
- pr_debug("Moving to TARG_CONN_STATE_XPT_UP.\n");
- conn->conn_state = TARG_CONN_STATE_XPT_UP;
-
-@@ -1195,13 +1146,8 @@ old_sess_out:
- iscsi_release_param_list(conn->param_list);
- conn->param_list = NULL;
- }
-- if (conn->sock) {
-- if (conn->conn_flags & CONNFLAG_SCTP_STRUCT_FILE) {
-- kfree(conn->sock->file);
-- conn->sock->file = NULL;
-- }
-+ if (conn->sock)
- sock_release(conn->sock);
-- }
- kfree(conn);
-
- if (tpg) {
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0060-mmc-sdhci-pci-CaFe-has-broken-card-detection.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0060-mmc-sdhci-pci-CaFe-has-broken-card-detection.patch
deleted file mode 100644
index 22812ab..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0060-mmc-sdhci-pci-CaFe-has-broken-card-detection.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From eb0aa45b9b49d8daeef285f1c5bb0be392caaddf Mon Sep 17 00:00:00 2001
-From: Daniel Drake <dsd at laptop.org>
-Date: Tue, 3 Jul 2012 23:13:39 +0100
-Subject: [PATCH 60/73] mmc: sdhci-pci: CaFe has broken card detection
-
-commit 55fc05b7414274f17795cd0e8a3b1546f3649d5e upstream.
-
-At http://dev.laptop.org/ticket/11980 we have determined that the
-Marvell CaFe SDHCI controller reports bad card presence during
-resume. It reports that no card is present even when it is.
-This is a regression -- resume worked back around 2.6.37.
-
-Around 400ms after resuming, a "card inserted" interrupt is
-generated, at which point it starts reporting presence.
-
-Work around this hardware oddity by setting the
-SDHCI_QUIRK_BROKEN_CARD_DETECTION flag.
-Thanks to Chris Ball for helping with diagnosis.
-
-Signed-off-by: Daniel Drake <dsd at laptop.org>
-[stable@: please apply to 3.0+]
-Signed-off-by: Chris Ball <cjb at laptop.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/mmc/host/sdhci-pci.c | 1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/mmc/host/sdhci-pci.c b/drivers/mmc/host/sdhci-pci.c
-index 6878a94..83b51b5 100644
---- a/drivers/mmc/host/sdhci-pci.c
-+++ b/drivers/mmc/host/sdhci-pci.c
-@@ -148,6 +148,7 @@ static const struct sdhci_pci_fixes sdhci_ene_714 = {
- static const struct sdhci_pci_fixes sdhci_cafe = {
- .quirks = SDHCI_QUIRK_NO_SIMULT_VDD_AND_POWER |
- SDHCI_QUIRK_NO_BUSY_IRQ |
-+ SDHCI_QUIRK_BROKEN_CARD_DETECTION |
- SDHCI_QUIRK_BROKEN_TIMEOUT_VAL,
- };
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0061-ext4-don-t-let-i_reserved_meta_blocks-go-negative.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0061-ext4-don-t-let-i_reserved_meta_blocks-go-negative.patch
deleted file mode 100644
index 428571d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0061-ext4-don-t-let-i_reserved_meta_blocks-go-negative.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From a09474d4d4bba3e468ff96d826b90b5551f98111 Mon Sep 17 00:00:00 2001
-From: Brian Foster <bfoster at redhat.com>
-Date: Sun, 22 Jul 2012 23:59:40 -0400
-Subject: [PATCH 61/73] ext4: don't let i_reserved_meta_blocks go negative
-
-commit 97795d2a5b8d3c8dc4365d4bd3404191840453ba upstream.
-
-If we hit a condition where we have allocated metadata blocks that
-were not appropriately reserved, we risk underflow of
-ei->i_reserved_meta_blocks. In turn, this can throw
-sbi->s_dirtyclusters_counter significantly out of whack and undermine
-the nondelalloc fallback logic in ext4_nonda_switch(). Warn if this
-occurs and set i_allocated_meta_blocks to avoid this problem.
-
-This condition is reproduced by xfstests 270 against ext2 with
-delalloc enabled:
-
-Mar 28 08:58:02 localhost kernel: [ 171.526344] EXT4-fs (loop1): delayed block allocation failed for inode 14 at logical offset 64486 with max blocks 64 with error -28
-Mar 28 08:58:02 localhost kernel: [ 171.526346] EXT4-fs (loop1): This should not happen!! Data will be lost
-
-270 ultimately fails with an inconsistent filesystem and requires an
-fsck to repair. The cause of the error is an underflow in
-ext4_da_update_reserve_space() due to an unreserved meta block
-allocation.
-
-Signed-off-by: Brian Foster <bfoster at redhat.com>
-Signed-off-by: "Theodore Ts'o" <tytso at mit.edu>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/ext4/inode.c | 9 +++++++++
- 1 files changed, 9 insertions(+), 0 deletions(-)
-
-diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
-index d0dc109..03373c3 100644
---- a/fs/ext4/inode.c
-+++ b/fs/ext4/inode.c
-@@ -277,6 +277,15 @@ void ext4_da_update_reserve_space(struct inode *inode,
- used = ei->i_reserved_data_blocks;
- }
-
-+ if (unlikely(ei->i_allocated_meta_blocks > ei->i_reserved_meta_blocks)) {
-+ ext4_msg(inode->i_sb, KERN_NOTICE, "%s: ino %lu, allocated %d "
-+ "with only %d reserved metadata blocks\n", __func__,
-+ inode->i_ino, ei->i_allocated_meta_blocks,
-+ ei->i_reserved_meta_blocks);
-+ WARN_ON(1);
-+ ei->i_allocated_meta_blocks = ei->i_reserved_meta_blocks;
-+ }
-+
- /* Update per-inode reservations */
- ei->i_reserved_data_blocks -= used;
- ei->i_reserved_meta_blocks -= ei->i_allocated_meta_blocks;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0062-ext4-undo-ext4_calc_metadata_amount-if-we-fail-to-cl.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0062-ext4-undo-ext4_calc_metadata_amount-if-we-fail-to-cl.patch
deleted file mode 100644
index dac384a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0062-ext4-undo-ext4_calc_metadata_amount-if-we-fail-to-cl.patch
+++ /dev/null
@@ -1,93 +0,0 @@
-From f7aa52ca54cad12194d0c48a95c2d4ccdf487c6c Mon Sep 17 00:00:00 2001
-From: Theodore Ts'o <tytso at mit.edu>
-Date: Mon, 23 Jul 2012 00:00:20 -0400
-Subject: [PATCH 62/73] ext4: undo ext4_calc_metadata_amount if we fail to
- claim space
-
-commit 03179fe92318e7934c180d96f12eff2cb36ef7b6 upstream.
-
-The function ext4_calc_metadata_amount() has side effects, although
-it's not obvious from its function name. So if we fail to claim
-space, regardless of whether we retry to claim the space again, or
-return an error, we need to undo these side effects.
-
-Otherwise we can end up incorrectly calculating the number of metadata
-blocks needed for the operation, which was responsible for an xfstests
-failure for test #271 when using an ext2 file system with delalloc
-enabled.
-
-Reported-by: Brian Foster <bfoster at redhat.com>
-Signed-off-by: "Theodore Ts'o" <tytso at mit.edu>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/ext4/inode.c | 32 +++++++++++++++++++++-----------
- 1 files changed, 21 insertions(+), 11 deletions(-)
-
-diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
-index 03373c3..b556994 100644
---- a/fs/ext4/inode.c
-+++ b/fs/ext4/inode.c
-@@ -1111,6 +1111,17 @@ static int ext4_da_reserve_space(struct inode *inode, ext4_lblk_t lblock)
- struct ext4_inode_info *ei = EXT4_I(inode);
- unsigned int md_needed;
- int ret;
-+ ext4_lblk_t save_last_lblock;
-+ int save_len;
-+
-+ /*
-+ * We will charge metadata quota at writeout time; this saves
-+ * us from metadata over-estimation, though we may go over by
-+ * a small amount in the end. Here we just reserve for data.
-+ */
-+ ret = dquot_reserve_block(inode, EXT4_C2B(sbi, 1));
-+ if (ret)
-+ return ret;
-
- /*
- * recalculate the amount of metadata blocks to reserve
-@@ -1119,32 +1130,31 @@ static int ext4_da_reserve_space(struct inode *inode, ext4_lblk_t lblock)
- */
- repeat:
- spin_lock(&ei->i_block_reservation_lock);
-+ /*
-+ * ext4_calc_metadata_amount() has side effects, which we have
-+ * to be prepared undo if we fail to claim space.
-+ */
-+ save_len = ei->i_da_metadata_calc_len;
-+ save_last_lblock = ei->i_da_metadata_calc_last_lblock;
- md_needed = EXT4_NUM_B2C(sbi,
- ext4_calc_metadata_amount(inode, lblock));
- trace_ext4_da_reserve_space(inode, md_needed);
-- spin_unlock(&ei->i_block_reservation_lock);
-
- /*
-- * We will charge metadata quota at writeout time; this saves
-- * us from metadata over-estimation, though we may go over by
-- * a small amount in the end. Here we just reserve for data.
-- */
-- ret = dquot_reserve_block(inode, EXT4_C2B(sbi, 1));
-- if (ret)
-- return ret;
-- /*
- * We do still charge estimated metadata to the sb though;
- * we cannot afford to run out of free blocks.
- */
- if (ext4_claim_free_clusters(sbi, md_needed + 1, 0)) {
-- dquot_release_reservation_block(inode, EXT4_C2B(sbi, 1));
-+ ei->i_da_metadata_calc_len = save_len;
-+ ei->i_da_metadata_calc_last_lblock = save_last_lblock;
-+ spin_unlock(&ei->i_block_reservation_lock);
- if (ext4_should_retry_alloc(inode->i_sb, &retries)) {
- yield();
- goto repeat;
- }
-+ dquot_release_reservation_block(inode, EXT4_C2B(sbi, 1));
- return -ENOSPC;
- }
-- spin_lock(&ei->i_block_reservation_lock);
- ei->i_reserved_data_blocks++;
- ei->i_reserved_meta_blocks += md_needed;
- spin_unlock(&ei->i_block_reservation_lock);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0063-ASoC-dapm-Fix-_PRE-and-_POST-events-for-DAPM-perform.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0063-ASoC-dapm-Fix-_PRE-and-_POST-events-for-DAPM-perform.patch
deleted file mode 100644
index a1fc463..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0063-ASoC-dapm-Fix-_PRE-and-_POST-events-for-DAPM-perform.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 8fbf76d6e7e81a95a44e627e0c6dbeef231700f2 Mon Sep 17 00:00:00 2001
-From: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Date: Fri, 20 Jul 2012 17:29:34 +0100
-Subject: [PATCH 63/73] ASoC: dapm: Fix _PRE and _POST events for DAPM
- performance improvements
-
-commit 0ff97ebf0804d2e519d578fcb4db03f104d2ca8c upstream.
-
-Ever since the DAPM performance improvements we've been marking all widgets
-as not dirty after each DAPM run. Since _PRE and _POST events aren't part
-of the DAPM graph this has rendered them non-functional, they will never be
-marked dirty again and thus will never be run again.
-
-Fix this by skipping them when marking widgets as not dirty.
-
-Signed-off-by: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Acked-by: Liam Girdwood <lrg at ti.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- sound/soc/soc-dapm.c | 10 +++++++++-
- 1 files changed, 9 insertions(+), 1 deletions(-)
-
-diff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c
-index 90e93bf..0dc441c 100644
---- a/sound/soc/soc-dapm.c
-+++ b/sound/soc/soc-dapm.c
-@@ -1381,7 +1381,15 @@ static int dapm_power_widgets(struct snd_soc_dapm_context *dapm, int event)
- }
-
- list_for_each_entry(w, &card->widgets, list) {
-- list_del_init(&w->dirty);
-+ switch (w->id) {
-+ case snd_soc_dapm_pre:
-+ case snd_soc_dapm_post:
-+ /* These widgets always need to be powered */
-+ break;
-+ default:
-+ list_del_init(&w->dirty);
-+ break;
-+ }
-
- if (w->power) {
- d = w->dapm;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0064-locks-fix-checking-of-fcntl_setlease-argument.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0064-locks-fix-checking-of-fcntl_setlease-argument.patch
deleted file mode 100644
index 7296221..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0064-locks-fix-checking-of-fcntl_setlease-argument.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From fb13198419fd31d8cbe249d285abd4f69d2c4f6d Mon Sep 17 00:00:00 2001
-From: "J. Bruce Fields" <bfields at fieldses.org>
-Date: Mon, 23 Jul 2012 15:17:17 -0400
-Subject: [PATCH 64/73] locks: fix checking of fcntl_setlease argument
-
-commit 0ec4f431eb56d633da3a55da67d5c4b88886ccc7 upstream.
-
-The only checks of the long argument passed to fcntl(fd,F_SETLEASE,.)
-are done after converting the long to an int. Thus some illegal values
-may be let through and cause problems in later code.
-
-[ They actually *don't* cause problems in mainline, as of Dave Jones's
- commit 8d657eb3b438 "Remove easily user-triggerable BUG from
- generic_setlease", but we should fix this anyway. And this patch will
- be necessary to fix real bugs on earlier kernels. ]
-
-Signed-off-by: J. Bruce Fields <bfields at redhat.com>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/locks.c | 6 +++---
- 1 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/fs/locks.c b/fs/locks.c
-index 6a64f15..fcc50ab 100644
---- a/fs/locks.c
-+++ b/fs/locks.c
-@@ -308,7 +308,7 @@ static int flock_make_lock(struct file *filp, struct file_lock **lock,
- return 0;
- }
-
--static int assign_type(struct file_lock *fl, int type)
-+static int assign_type(struct file_lock *fl, long type)
- {
- switch (type) {
- case F_RDLCK:
-@@ -445,7 +445,7 @@ static const struct lock_manager_operations lease_manager_ops = {
- /*
- * Initialize a lease, use the default lock manager operations
- */
--static int lease_init(struct file *filp, int type, struct file_lock *fl)
-+static int lease_init(struct file *filp, long type, struct file_lock *fl)
- {
- if (assign_type(fl, type) != 0)
- return -EINVAL;
-@@ -463,7 +463,7 @@ static int lease_init(struct file *filp, int type, struct file_lock *fl)
- }
-
- /* Allocate a file_lock initialised to this type of lease */
--static struct file_lock *lease_alloc(struct file *filp, int type)
-+static struct file_lock *lease_alloc(struct file *filp, long type)
- {
- struct file_lock *fl = locks_alloc_lock();
- int error = -ENOMEM;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0065-ACPI-AC-prevent-OOPS-on-some-boxes-due-to-missing-ch.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0065-ACPI-AC-prevent-OOPS-on-some-boxes-due-to-missing-ch.patch
deleted file mode 100644
index 5fa53fb..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0065-ACPI-AC-prevent-OOPS-on-some-boxes-due-to-missing-ch.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From 847ccb9086b1b76d8db67f37e36e909727c010cb Mon Sep 17 00:00:00 2001
-From: Lan Tianyu <tianyu.lan at intel.com>
-Date: Fri, 20 Jul 2012 13:29:16 +0800
-Subject: [PATCH 65/73] ACPI/AC: prevent OOPS on some boxes due to missing
- check power_supply_register() return value check
-
-commit f197ac13f6eeb351b31250b9ab7d0da17434ea36 upstream.
-
-In the ac.c, power_supply_register()'s return value is not checked.
-
-As a result, the driver's add() ops may return success
-even though the device failed to initialize.
-
-For example, some BIOS may describe two ACADs in the same DSDT.
-The second ACAD device will fail to register,
-but ACPI driver's add() ops returns sucessfully.
-The ACPI device will receive ACPI notification and cause OOPS.
-
-https://bugzilla.redhat.com/show_bug.cgi?id=772730
-
-Signed-off-by: Lan Tianyu <tianyu.lan at intel.com>
-Signed-off-by: Len Brown <len.brown at intel.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/acpi/ac.c | 4 +++-
- 1 files changed, 3 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/acpi/ac.c b/drivers/acpi/ac.c
-index 6512b20..d1fcbc0 100644
---- a/drivers/acpi/ac.c
-+++ b/drivers/acpi/ac.c
-@@ -292,7 +292,9 @@ static int acpi_ac_add(struct acpi_device *device)
- ac->charger.properties = ac_props;
- ac->charger.num_properties = ARRAY_SIZE(ac_props);
- ac->charger.get_property = get_ac_property;
-- power_supply_register(&ac->device->dev, &ac->charger);
-+ result = power_supply_register(&ac->device->dev, &ac->charger);
-+ if (result)
-+ goto end;
-
- printk(KERN_INFO PREFIX "%s [%s] (%s)\n",
- acpi_device_name(device), acpi_device_bid(device),
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0066-drm-radeon-fix-bo-creation-retry-path.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0066-drm-radeon-fix-bo-creation-retry-path.patch
deleted file mode 100644
index 065e87b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0066-drm-radeon-fix-bo-creation-retry-path.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 9fc722e4c6da369ecad425d55a4fe50c6dbd21d9 Mon Sep 17 00:00:00 2001
-From: Jerome Glisse <jglisse at redhat.com>
-Date: Thu, 12 Jul 2012 18:23:05 -0400
-Subject: [PATCH 66/73] drm/radeon: fix bo creation retry path
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit d1c7871ddb1f588b8eb35affd9ee1a3d5e11cd0c upstream.
-
-Retry label was at wrong place in function leading to memory
-leak.
-
-Signed-off-by: Jerome Glisse <jglisse at redhat.com>
-Reviewed-by: Michel Dänzer <michel.daenzer at amd.com>
-Reviewed-by: Christian König <christian.koenig at amd.com>
-Signed-off-by: Dave Airlie <airlied at redhat.com>
-[bwh: Backported to 3.2: adjust context]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpu/drm/radeon/radeon_object.c | 3 ++-
- 1 files changed, 2 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/gpu/drm/radeon/radeon_object.c b/drivers/gpu/drm/radeon/radeon_object.c
-index f3ae607..39497c7 100644
---- a/drivers/gpu/drm/radeon/radeon_object.c
-+++ b/drivers/gpu/drm/radeon/radeon_object.c
-@@ -117,7 +117,6 @@ int radeon_bo_create(struct radeon_device *rdev,
- return -ENOMEM;
- }
-
--retry:
- bo = kzalloc(sizeof(struct radeon_bo), GFP_KERNEL);
- if (bo == NULL)
- return -ENOMEM;
-@@ -130,6 +129,8 @@ retry:
- bo->gem_base.driver_private = NULL;
- bo->surface_reg = -1;
- INIT_LIST_HEAD(&bo->list);
-+
-+retry:
- radeon_ttm_placement_from_domain(bo, domain);
- /* Kernel allocation are uninterruptible */
- mutex_lock(&rdev->vram_mutex);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0067-drm-radeon-fix-non-revealent-error-message.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0067-drm-radeon-fix-non-revealent-error-message.patch
deleted file mode 100644
index 85e0cad..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0067-drm-radeon-fix-non-revealent-error-message.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-From 0521c32992bd885e150c17f413200d82fa83911c Mon Sep 17 00:00:00 2001
-From: Jerome Glisse <jglisse at redhat.com>
-Date: Tue, 17 Jul 2012 17:17:16 -0400
-Subject: [PATCH 67/73] drm/radeon: fix non revealent error message
-
-commit 8d1c702aa0b2c4b22b0742b72a1149d91690674b upstream.
-
-We want to print link status query failed only if it's
-an unexepected fail. If we query to see if we need
-link training it might be because there is nothing
-connected and thus link status query have the right
-to fail in that case.
-
-To avoid printing failure when it's expected, move the
-failure message to proper place.
-
-Signed-off-by: Jerome Glisse <jglisse at redhat.com>
-Signed-off-by: Dave Airlie <airlied at redhat.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpu/drm/radeon/atombios_dp.c | 10 +++++++---
- 1 files changed, 7 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/gpu/drm/radeon/atombios_dp.c b/drivers/gpu/drm/radeon/atombios_dp.c
-index 552b436..3254d51 100644
---- a/drivers/gpu/drm/radeon/atombios_dp.c
-+++ b/drivers/gpu/drm/radeon/atombios_dp.c
-@@ -22,6 +22,7 @@
- *
- * Authors: Dave Airlie
- * Alex Deucher
-+ * Jerome Glisse
- */
- #include "drmP.h"
- #include "radeon_drm.h"
-@@ -634,7 +635,6 @@ static bool radeon_dp_get_link_status(struct radeon_connector *radeon_connector,
- ret = radeon_dp_aux_native_read(radeon_connector, DP_LANE0_1_STATUS,
- link_status, DP_LINK_STATUS_SIZE, 100);
- if (ret <= 0) {
-- DRM_ERROR("displayport link status failed\n");
- return false;
- }
-
-@@ -812,8 +812,10 @@ static int radeon_dp_link_train_cr(struct radeon_dp_link_train_info *dp_info)
- else
- mdelay(dp_info->rd_interval * 4);
-
-- if (!radeon_dp_get_link_status(dp_info->radeon_connector, dp_info->link_status))
-+ if (!radeon_dp_get_link_status(dp_info->radeon_connector, dp_info->link_status)) {
-+ DRM_ERROR("displayport link status failed\n");
- break;
-+ }
-
- if (dp_clock_recovery_ok(dp_info->link_status, dp_info->dp_lane_count)) {
- clock_recovery = true;
-@@ -875,8 +877,10 @@ static int radeon_dp_link_train_ce(struct radeon_dp_link_train_info *dp_info)
- else
- mdelay(dp_info->rd_interval * 4);
-
-- if (!radeon_dp_get_link_status(dp_info->radeon_connector, dp_info->link_status))
-+ if (!radeon_dp_get_link_status(dp_info->radeon_connector, dp_info->link_status)) {
-+ DRM_ERROR("displayport link status failed\n");
- break;
-+ }
-
- if (dp_channel_eq_ok(dp_info->link_status, dp_info->dp_lane_count)) {
- channel_eq = true;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0068-drm-radeon-fix-hotplug-of-DP-to-DVI-HDMI-passive-ada.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0068-drm-radeon-fix-hotplug-of-DP-to-DVI-HDMI-passive-ada.patch
deleted file mode 100644
index 0872ed3..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0068-drm-radeon-fix-hotplug-of-DP-to-DVI-HDMI-passive-ada.patch
+++ /dev/null
@@ -1,69 +0,0 @@
-From 0de546b55811738998d83bb6e677306d65e90861 Mon Sep 17 00:00:00 2001
-From: Jerome Glisse <jglisse at redhat.com>
-Date: Thu, 19 Jul 2012 17:15:56 -0400
-Subject: [PATCH 68/73] drm/radeon: fix hotplug of DP to DVI|HDMI passive
- adapters (v2)
-
-commit 266dcba541a1ef7e5d82d9e67c67fde2910636e8 upstream.
-
-No need to retrain the link for passive adapters.
-
-v2: agd5f
-- no passive DP to VGA adapters, update comments
-- assign radeon_connector_atom_dig after we are sure
- we have a digital connector as analog connectors
- have different private data.
-- get new sink type before checking for retrain. No
- need to check if it's no longer a DP connection.
-
-Signed-off-by: Jerome Glisse <jglisse at redhat.com>
-Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
-Signed-off-by: Dave Airlie <airlied at redhat.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpu/drm/radeon/radeon_connectors.c | 29 ++++++++++++++++++++-------
- 1 files changed, 21 insertions(+), 8 deletions(-)
-
-diff --git a/drivers/gpu/drm/radeon/radeon_connectors.c b/drivers/gpu/drm/radeon/radeon_connectors.c
-index 4a4493f..fb8db7a 100644
---- a/drivers/gpu/drm/radeon/radeon_connectors.c
-+++ b/drivers/gpu/drm/radeon/radeon_connectors.c
-@@ -64,14 +64,27 @@ void radeon_connector_hotplug(struct drm_connector *connector)
-
- /* just deal with DP (not eDP) here. */
- if (connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort) {
-- int saved_dpms = connector->dpms;
--
-- /* Only turn off the display it it's physically disconnected */
-- if (!radeon_hpd_sense(rdev, radeon_connector->hpd.hpd))
-- drm_helper_connector_dpms(connector, DRM_MODE_DPMS_OFF);
-- else if (radeon_dp_needs_link_train(radeon_connector))
-- drm_helper_connector_dpms(connector, DRM_MODE_DPMS_ON);
-- connector->dpms = saved_dpms;
-+ struct radeon_connector_atom_dig *dig_connector =
-+ radeon_connector->con_priv;
-+
-+ /* if existing sink type was not DP no need to retrain */
-+ if (dig_connector->dp_sink_type != CONNECTOR_OBJECT_ID_DISPLAYPORT)
-+ return;
-+
-+ /* first get sink type as it may be reset after (un)plug */
-+ dig_connector->dp_sink_type = radeon_dp_getsinktype(radeon_connector);
-+ /* don't do anything if sink is not display port, i.e.,
-+ * passive dp->(dvi|hdmi) adaptor
-+ */
-+ if (dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT) {
-+ int saved_dpms = connector->dpms;
-+ /* Only turn off the display if it's physically disconnected */
-+ if (!radeon_hpd_sense(rdev, radeon_connector->hpd.hpd))
-+ drm_helper_connector_dpms(connector, DRM_MODE_DPMS_OFF);
-+ else if (radeon_dp_needs_link_train(radeon_connector))
-+ drm_helper_connector_dpms(connector, DRM_MODE_DPMS_ON);
-+ connector->dpms = saved_dpms;
-+ }
- }
- }
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0069-drm-radeon-on-hotplug-force-link-training-to-happen-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0069-drm-radeon-on-hotplug-force-link-training-to-happen-.patch
deleted file mode 100644
index 67959f9..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0069-drm-radeon-on-hotplug-force-link-training-to-happen-.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From 66ce98f9164b89ce8566d303265e209829f41c9f Mon Sep 17 00:00:00 2001
-From: Jerome Glisse <jglisse at redhat.com>
-Date: Thu, 19 Jul 2012 17:25:55 -0400
-Subject: [PATCH 69/73] drm/radeon: on hotplug force link training to happen
- (v2)
-
-commit ca2ccde5e2f24a792caa4cca919fc5c6f65d1887 upstream.
-
-To have DP behave like VGA/DVI we need to retrain the link
-on hotplug. For this to happen we need to force link
-training to happen by setting connector dpms to off
-before asking it turning it on again.
-
-v2: agd5f
-- drop the dp_get_link_status() change in atombios_dp.c
- for now. We still need the dpms OFF change.
-
-Signed-off-by: Jerome Glisse <jglisse at redhat.com>
-Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
-Signed-off-by: Dave Airlie <airlied at redhat.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpu/drm/radeon/radeon_connectors.c | 10 ++++++++--
- 1 files changed, 8 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/gpu/drm/radeon/radeon_connectors.c b/drivers/gpu/drm/radeon/radeon_connectors.c
-index fb8db7a..87d494d 100644
---- a/drivers/gpu/drm/radeon/radeon_connectors.c
-+++ b/drivers/gpu/drm/radeon/radeon_connectors.c
-@@ -79,10 +79,16 @@ void radeon_connector_hotplug(struct drm_connector *connector)
- if (dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT) {
- int saved_dpms = connector->dpms;
- /* Only turn off the display if it's physically disconnected */
-- if (!radeon_hpd_sense(rdev, radeon_connector->hpd.hpd))
-+ if (!radeon_hpd_sense(rdev, radeon_connector->hpd.hpd)) {
- drm_helper_connector_dpms(connector, DRM_MODE_DPMS_OFF);
-- else if (radeon_dp_needs_link_train(radeon_connector))
-+ } else if (radeon_dp_needs_link_train(radeon_connector)) {
-+ /* set it to OFF so that drm_helper_connector_dpms()
-+ * won't return immediately since the current state
-+ * is ON at this point.
-+ */
-+ connector->dpms = DRM_MODE_DPMS_OFF;
- drm_helper_connector_dpms(connector, DRM_MODE_DPMS_ON);
-+ }
- connector->dpms = saved_dpms;
- }
- }
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0070-Btrfs-call-the-ordered-free-operation-without-any-lo.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0070-Btrfs-call-the-ordered-free-operation-without-any-lo.patch
deleted file mode 100644
index 871e6c0..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0070-Btrfs-call-the-ordered-free-operation-without-any-lo.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From f9254351de93ec535792d9a66b462d835875a6d3 Mon Sep 17 00:00:00 2001
-From: Chris Mason <chris.mason at fusionio.com>
-Date: Wed, 25 Jul 2012 15:57:13 -0400
-Subject: [PATCH 70/73] Btrfs: call the ordered free operation without any
- locks held
-
-commit e9fbcb42201c862fd6ab45c48ead4f47bb2dea9d upstream.
-
-Each ordered operation has a free callback, and this was called with the
-worker spinlock held. Josef made the free callback also call iput,
-which we can't do with the spinlock.
-
-This drops the spinlock for the free operation and grabs it again before
-moving through the rest of the list. We'll circle back around to this
-and find a cleaner way that doesn't bounce the lock around so much.
-
-Signed-off-by: Chris Mason <chris.mason at fusionio.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/btrfs/async-thread.c | 9 ++++++++-
- 1 files changed, 8 insertions(+), 1 deletions(-)
-
-diff --git a/fs/btrfs/async-thread.c b/fs/btrfs/async-thread.c
-index 0b39458..03321e5 100644
---- a/fs/btrfs/async-thread.c
-+++ b/fs/btrfs/async-thread.c
-@@ -206,10 +206,17 @@ static noinline int run_ordered_completions(struct btrfs_workers *workers,
-
- work->ordered_func(work);
-
-- /* now take the lock again and call the freeing code */
-+ /* now take the lock again and drop our item from the list */
- spin_lock(&workers->order_lock);
- list_del(&work->order_list);
-+ spin_unlock(&workers->order_lock);
-+
-+ /*
-+ * we don't want to call the ordered free functions
-+ * with the lock held though
-+ */
- work->ordered_free(work);
-+ spin_lock(&workers->order_lock);
- }
-
- spin_unlock(&workers->order_lock);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0071-nouveau-Fix-alignment-requirements-on-src-and-dst-ad.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0071-nouveau-Fix-alignment-requirements-on-src-and-dst-ad.patch
deleted file mode 100644
index 96bdd5d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0071-nouveau-Fix-alignment-requirements-on-src-and-dst-ad.patch
+++ /dev/null
@@ -1,748 +0,0 @@
-From ea77473ebf8397a7462fd28ad93e01a50084b146 Mon Sep 17 00:00:00 2001
-From: Maarten Lankhorst <maarten.lankhorst at canonical.com>
-Date: Mon, 4 Jun 2012 12:00:31 +0200
-Subject: [PATCH 71/73] nouveau: Fix alignment requirements on src and dst
- addresses
-
-commit ce806a30470bcd846d148bf39d46de3ad7748228 upstream.
-
-Linear copy works by adding the offset to the buffer address,
-which may end up not being 16-byte aligned.
-
-Some tests I've written for prime_pcopy show that the engine
-allows this correctly, so the restriction on lowest 4 bits of
-address can be lifted safely.
-
-The comments added were by envyas, I think because I used
-a newer version.
-
-Signed-off-by: Maarten Lankhorst <maarten.lankhorst at canonical.com>
-[bwh: Backported to 3.2: no # prefixes in nva3_copy.fuc]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpu/drm/nouveau/nva3_copy.fuc | 4 +-
- drivers/gpu/drm/nouveau/nva3_copy.fuc.h | 94 +++++++++++++++++++++++++++++-
- drivers/gpu/drm/nouveau/nvc0_copy.fuc.h | 87 +++++++++++++++++++++++++++-
- 3 files changed, 175 insertions(+), 10 deletions(-)
-
-diff --git a/drivers/gpu/drm/nouveau/nva3_copy.fuc b/drivers/gpu/drm/nouveau/nva3_copy.fuc
-index eaf35f8..d894731 100644
---- a/drivers/gpu/drm/nouveau/nva3_copy.fuc
-+++ b/drivers/gpu/drm/nouveau/nva3_copy.fuc
-@@ -118,9 +118,9 @@ dispatch_dma:
- // mthd 0x030c-0x0340, various stuff
- .b16 0xc3 14
- .b32 ctx_src_address_high ~0x000000ff
--.b32 ctx_src_address_low ~0xfffffff0
-+.b32 ctx_src_address_low ~0xffffffff
- .b32 ctx_dst_address_high ~0x000000ff
--.b32 ctx_dst_address_low ~0xfffffff0
-+.b32 ctx_dst_address_low ~0xffffffff
- .b32 ctx_src_pitch ~0x0007ffff
- .b32 ctx_dst_pitch ~0x0007ffff
- .b32 ctx_xcnt ~0x0000ffff
-diff --git a/drivers/gpu/drm/nouveau/nva3_copy.fuc.h b/drivers/gpu/drm/nouveau/nva3_copy.fuc.h
-index 2731de2..e2a0e88 100644
---- a/drivers/gpu/drm/nouveau/nva3_copy.fuc.h
-+++ b/drivers/gpu/drm/nouveau/nva3_copy.fuc.h
-@@ -1,37 +1,72 @@
--uint32_t nva3_pcopy_data[] = {
-+u32 nva3_pcopy_data[] = {
-+/* 0x0000: ctx_object */
- 0x00000000,
-+/* 0x0004: ctx_dma */
-+/* 0x0004: ctx_dma_query */
- 0x00000000,
-+/* 0x0008: ctx_dma_src */
- 0x00000000,
-+/* 0x000c: ctx_dma_dst */
- 0x00000000,
-+/* 0x0010: ctx_query_address_high */
- 0x00000000,
-+/* 0x0014: ctx_query_address_low */
- 0x00000000,
-+/* 0x0018: ctx_query_counter */
- 0x00000000,
-+/* 0x001c: ctx_src_address_high */
- 0x00000000,
-+/* 0x0020: ctx_src_address_low */
- 0x00000000,
-+/* 0x0024: ctx_src_pitch */
- 0x00000000,
-+/* 0x0028: ctx_src_tile_mode */
- 0x00000000,
-+/* 0x002c: ctx_src_xsize */
- 0x00000000,
-+/* 0x0030: ctx_src_ysize */
- 0x00000000,
-+/* 0x0034: ctx_src_zsize */
- 0x00000000,
-+/* 0x0038: ctx_src_zoff */
- 0x00000000,
-+/* 0x003c: ctx_src_xoff */
- 0x00000000,
-+/* 0x0040: ctx_src_yoff */
- 0x00000000,
-+/* 0x0044: ctx_src_cpp */
- 0x00000000,
-+/* 0x0048: ctx_dst_address_high */
- 0x00000000,
-+/* 0x004c: ctx_dst_address_low */
- 0x00000000,
-+/* 0x0050: ctx_dst_pitch */
- 0x00000000,
-+/* 0x0054: ctx_dst_tile_mode */
- 0x00000000,
-+/* 0x0058: ctx_dst_xsize */
- 0x00000000,
-+/* 0x005c: ctx_dst_ysize */
- 0x00000000,
-+/* 0x0060: ctx_dst_zsize */
- 0x00000000,
-+/* 0x0064: ctx_dst_zoff */
- 0x00000000,
-+/* 0x0068: ctx_dst_xoff */
- 0x00000000,
-+/* 0x006c: ctx_dst_yoff */
- 0x00000000,
-+/* 0x0070: ctx_dst_cpp */
- 0x00000000,
-+/* 0x0074: ctx_format */
- 0x00000000,
-+/* 0x0078: ctx_swz_const0 */
- 0x00000000,
-+/* 0x007c: ctx_swz_const1 */
- 0x00000000,
-+/* 0x0080: ctx_xcnt */
- 0x00000000,
-+/* 0x0084: ctx_ycnt */
- 0x00000000,
- 0x00000000,
- 0x00000000,
-@@ -63,6 +98,7 @@ uint32_t nva3_pcopy_data[] = {
- 0x00000000,
- 0x00000000,
- 0x00000000,
-+/* 0x0100: dispatch_table */
- 0x00010000,
- 0x00000000,
- 0x00000000,
-@@ -73,6 +109,7 @@ uint32_t nva3_pcopy_data[] = {
- 0x00010162,
- 0x00000000,
- 0x00030060,
-+/* 0x0128: dispatch_dma */
- 0x00010170,
- 0x00000000,
- 0x00010170,
-@@ -118,11 +155,11 @@ uint32_t nva3_pcopy_data[] = {
- 0x0000001c,
- 0xffffff00,
- 0x00000020,
-- 0x0000000f,
-+ 0x00000000,
- 0x00000048,
- 0xffffff00,
- 0x0000004c,
-- 0x0000000f,
-+ 0x00000000,
- 0x00000024,
- 0xfff80000,
- 0x00000050,
-@@ -146,7 +183,8 @@ uint32_t nva3_pcopy_data[] = {
- 0x00000800,
- };
-
--uint32_t nva3_pcopy_code[] = {
-+u32 nva3_pcopy_code[] = {
-+/* 0x0000: main */
- 0x04fe04bd,
- 0x3517f000,
- 0xf10010fe,
-@@ -158,23 +196,31 @@ uint32_t nva3_pcopy_code[] = {
- 0x17f11031,
- 0x27f01200,
- 0x0012d003,
-+/* 0x002f: spin */
- 0xf40031f4,
- 0x0ef40028,
-+/* 0x0035: ih */
- 0x8001cffd,
- 0xf40812c4,
- 0x21f4060b,
-+/* 0x0041: ih_no_chsw */
- 0x0412c472,
- 0xf4060bf4,
-+/* 0x004a: ih_no_cmd */
- 0x11c4c321,
- 0x4001d00c,
-+/* 0x0052: swctx */
- 0x47f101f8,
- 0x4bfe7700,
- 0x0007fe00,
- 0xf00204b9,
- 0x01f40643,
- 0x0604fa09,
-+/* 0x006b: swctx_load */
- 0xfa060ef4,
-+/* 0x006e: swctx_done */
- 0x03f80504,
-+/* 0x0072: chsw */
- 0x27f100f8,
- 0x23cf1400,
- 0x1e3fc800,
-@@ -183,18 +229,22 @@ uint32_t nva3_pcopy_code[] = {
- 0x1e3af052,
- 0xf00023d0,
- 0x24d00147,
-+/* 0x0093: chsw_no_unload */
- 0xcf00f880,
- 0x3dc84023,
- 0x220bf41e,
- 0xf40131f4,
- 0x57f05221,
- 0x0367f004,
-+/* 0x00a8: chsw_load_ctx_dma */
- 0xa07856bc,
- 0xb6018068,
- 0x87d00884,
- 0x0162b600,
-+/* 0x00bb: chsw_finish_load */
- 0xf0f018f4,
- 0x23d00237,
-+/* 0x00c3: dispatch */
- 0xf100f880,
- 0xcf190037,
- 0x33cf4032,
-@@ -202,6 +252,7 @@ uint32_t nva3_pcopy_code[] = {
- 0x1024b607,
- 0x010057f1,
- 0x74bd64bd,
-+/* 0x00dc: dispatch_loop */
- 0x58005658,
- 0x50b60157,
- 0x0446b804,
-@@ -211,6 +262,7 @@ uint32_t nva3_pcopy_code[] = {
- 0xb60276bb,
- 0x57bb0374,
- 0xdf0ef400,
-+/* 0x0100: dispatch_valid_mthd */
- 0xb60246bb,
- 0x45bb0344,
- 0x01459800,
-@@ -220,31 +272,41 @@ uint32_t nva3_pcopy_code[] = {
- 0xb0014658,
- 0x1bf40064,
- 0x00538009,
-+/* 0x0127: dispatch_cmd */
- 0xf4300ef4,
- 0x55f90132,
- 0xf40c01f4,
-+/* 0x0132: dispatch_invalid_bitfield */
- 0x25f0250e,
-+/* 0x0135: dispatch_illegal_mthd */
- 0x0125f002,
-+/* 0x0138: dispatch_error */
- 0x100047f1,
- 0xd00042d0,
- 0x27f04043,
- 0x0002d040,
-+/* 0x0148: hostirq_wait */
- 0xf08002cf,
- 0x24b04024,
- 0xf71bf400,
-+/* 0x0154: dispatch_done */
- 0x1d0027f1,
- 0xd00137f0,
- 0x00f80023,
-+/* 0x0160: cmd_nop */
-+/* 0x0162: cmd_pm_trigger */
- 0x27f100f8,
- 0x34bd2200,
- 0xd00233f0,
- 0x00f80023,
-+/* 0x0170: cmd_dma */
- 0x012842b7,
- 0xf00145b6,
- 0x43801e39,
- 0x0040b701,
- 0x0644b606,
- 0xf80043d0,
-+/* 0x0189: cmd_exec_set_format */
- 0xf030f400,
- 0xb00001b0,
- 0x01b00101,
-@@ -256,20 +318,26 @@ uint32_t nva3_pcopy_code[] = {
- 0x70b63847,
- 0x0232f401,
- 0x94bd84bd,
-+/* 0x01b4: ncomp_loop */
- 0xb60f4ac4,
- 0xb4bd0445,
-+/* 0x01bc: bpc_loop */
- 0xf404a430,
- 0xa5ff0f18,
- 0x00cbbbc0,
- 0xf40231f4,
-+/* 0x01ce: cmp_c0 */
- 0x1bf4220e,
- 0x10c7f00c,
- 0xf400cbbb,
-+/* 0x01da: cmp_c1 */
- 0xa430160e,
- 0x0c18f406,
- 0xbb14c7f0,
- 0x0ef400cb,
-+/* 0x01e9: cmp_zero */
- 0x80c7f107,
-+/* 0x01ed: bpc_next */
- 0x01c83800,
- 0xb60180b6,
- 0xb5b801b0,
-@@ -280,6 +348,7 @@ uint32_t nva3_pcopy_code[] = {
- 0x98110680,
- 0x68fd2008,
- 0x0502f400,
-+/* 0x0216: dst_xcnt */
- 0x75fd64bd,
- 0x1c078000,
- 0xf10078fd,
-@@ -304,6 +373,7 @@ uint32_t nva3_pcopy_code[] = {
- 0x980056d0,
- 0x56d01f06,
- 0x1030f440,
-+/* 0x0276: cmd_exec_set_surface_tiled */
- 0x579800f8,
- 0x6879c70a,
- 0xb66478c7,
-@@ -311,9 +381,11 @@ uint32_t nva3_pcopy_code[] = {
- 0x0e76b060,
- 0xf0091bf4,
- 0x0ef40477,
-+/* 0x0291: xtile64 */
- 0x027cf00f,
- 0xfd1170b6,
- 0x77f00947,
-+/* 0x029d: xtileok */
- 0x0f5a9806,
- 0xfd115b98,
- 0xb7f000ab,
-@@ -371,6 +443,7 @@ uint32_t nva3_pcopy_code[] = {
- 0x67d00600,
- 0x0060b700,
- 0x0068d004,
-+/* 0x0382: cmd_exec_set_surface_linear */
- 0x6cf000f8,
- 0x0260b702,
- 0x0864b602,
-@@ -381,13 +454,16 @@ uint32_t nva3_pcopy_code[] = {
- 0xb70067d0,
- 0x98040060,
- 0x67d00957,
-+/* 0x03ab: cmd_exec_wait */
- 0xf900f800,
- 0xf110f900,
- 0xb6080007,
-+/* 0x03b6: loop */
- 0x01cf0604,
- 0x0114f000,
- 0xfcfa1bf4,
- 0xf800fc10,
-+/* 0x03c5: cmd_exec_query */
- 0x0d34c800,
- 0xf5701bf4,
- 0xf103ab21,
-@@ -417,6 +493,7 @@ uint32_t nva3_pcopy_code[] = {
- 0x47f10153,
- 0x44b60800,
- 0x0045d006,
-+/* 0x0438: query_counter */
- 0x03ab21f5,
- 0x080c47f1,
- 0x980644b6,
-@@ -439,11 +516,13 @@ uint32_t nva3_pcopy_code[] = {
- 0x47f10153,
- 0x44b60800,
- 0x0045d006,
-+/* 0x0492: cmd_exec */
- 0x21f500f8,
- 0x3fc803ab,
- 0x0e0bf400,
- 0x018921f5,
- 0x020047f1,
-+/* 0x04a7: cmd_exec_no_format */
- 0xf11e0ef4,
- 0xb6081067,
- 0x77f00664,
-@@ -451,19 +530,24 @@ uint32_t nva3_pcopy_code[] = {
- 0x981c0780,
- 0x67d02007,
- 0x4067d000,
-+/* 0x04c2: cmd_exec_init_src_surface */
- 0x32f444bd,
- 0xc854bd02,
- 0x0bf4043f,
- 0x8221f50a,
- 0x0a0ef403,
-+/* 0x04d4: src_tiled */
- 0x027621f5,
-+/* 0x04db: cmd_exec_init_dst_surface */
- 0xf40749f0,
- 0x57f00231,
- 0x083fc82c,
- 0xf50a0bf4,
- 0xf4038221,
-+/* 0x04ee: dst_tiled */
- 0x21f50a0e,
- 0x49f00276,
-+/* 0x04f5: cmd_exec_kick */
- 0x0057f108,
- 0x0654b608,
- 0xd0210698,
-@@ -473,6 +557,8 @@ uint32_t nva3_pcopy_code[] = {
- 0xc80054d0,
- 0x0bf40c3f,
- 0xc521f507,
-+/* 0x0519: cmd_exec_done */
-+/* 0x051b: cmd_wrcache_flush */
- 0xf100f803,
- 0xbd220027,
- 0x0133f034,
-diff --git a/drivers/gpu/drm/nouveau/nvc0_copy.fuc.h b/drivers/gpu/drm/nouveau/nvc0_copy.fuc.h
-index 4199038..9e87036 100644
---- a/drivers/gpu/drm/nouveau/nvc0_copy.fuc.h
-+++ b/drivers/gpu/drm/nouveau/nvc0_copy.fuc.h
-@@ -1,34 +1,65 @@
--uint32_t nvc0_pcopy_data[] = {
-+u32 nvc0_pcopy_data[] = {
-+/* 0x0000: ctx_object */
- 0x00000000,
-+/* 0x0004: ctx_query_address_high */
- 0x00000000,
-+/* 0x0008: ctx_query_address_low */
- 0x00000000,
-+/* 0x000c: ctx_query_counter */
- 0x00000000,
-+/* 0x0010: ctx_src_address_high */
- 0x00000000,
-+/* 0x0014: ctx_src_address_low */
- 0x00000000,
-+/* 0x0018: ctx_src_pitch */
- 0x00000000,
-+/* 0x001c: ctx_src_tile_mode */
- 0x00000000,
-+/* 0x0020: ctx_src_xsize */
- 0x00000000,
-+/* 0x0024: ctx_src_ysize */
- 0x00000000,
-+/* 0x0028: ctx_src_zsize */
- 0x00000000,
-+/* 0x002c: ctx_src_zoff */
- 0x00000000,
-+/* 0x0030: ctx_src_xoff */
- 0x00000000,
-+/* 0x0034: ctx_src_yoff */
- 0x00000000,
-+/* 0x0038: ctx_src_cpp */
- 0x00000000,
-+/* 0x003c: ctx_dst_address_high */
- 0x00000000,
-+/* 0x0040: ctx_dst_address_low */
- 0x00000000,
-+/* 0x0044: ctx_dst_pitch */
- 0x00000000,
-+/* 0x0048: ctx_dst_tile_mode */
- 0x00000000,
-+/* 0x004c: ctx_dst_xsize */
- 0x00000000,
-+/* 0x0050: ctx_dst_ysize */
- 0x00000000,
-+/* 0x0054: ctx_dst_zsize */
- 0x00000000,
-+/* 0x0058: ctx_dst_zoff */
- 0x00000000,
-+/* 0x005c: ctx_dst_xoff */
- 0x00000000,
-+/* 0x0060: ctx_dst_yoff */
- 0x00000000,
-+/* 0x0064: ctx_dst_cpp */
- 0x00000000,
-+/* 0x0068: ctx_format */
- 0x00000000,
-+/* 0x006c: ctx_swz_const0 */
- 0x00000000,
-+/* 0x0070: ctx_swz_const1 */
- 0x00000000,
-+/* 0x0074: ctx_xcnt */
- 0x00000000,
-+/* 0x0078: ctx_ycnt */
- 0x00000000,
- 0x00000000,
- 0x00000000,
-@@ -63,6 +94,7 @@ uint32_t nvc0_pcopy_data[] = {
- 0x00000000,
- 0x00000000,
- 0x00000000,
-+/* 0x0100: dispatch_table */
- 0x00010000,
- 0x00000000,
- 0x00000000,
-@@ -111,11 +143,11 @@ uint32_t nvc0_pcopy_data[] = {
- 0x00000010,
- 0xffffff00,
- 0x00000014,
-- 0x0000000f,
-+ 0x00000000,
- 0x0000003c,
- 0xffffff00,
- 0x00000040,
-- 0x0000000f,
-+ 0x00000000,
- 0x00000018,
- 0xfff80000,
- 0x00000044,
-@@ -139,7 +171,8 @@ uint32_t nvc0_pcopy_data[] = {
- 0x00000800,
- };
-
--uint32_t nvc0_pcopy_code[] = {
-+u32 nvc0_pcopy_code[] = {
-+/* 0x0000: main */
- 0x04fe04bd,
- 0x3517f000,
- 0xf10010fe,
-@@ -151,15 +184,20 @@ uint32_t nvc0_pcopy_code[] = {
- 0x17f11031,
- 0x27f01200,
- 0x0012d003,
-+/* 0x002f: spin */
- 0xf40031f4,
- 0x0ef40028,
-+/* 0x0035: ih */
- 0x8001cffd,
- 0xf40812c4,
- 0x21f4060b,
-+/* 0x0041: ih_no_chsw */
- 0x0412c4ca,
- 0xf5070bf4,
-+/* 0x004b: ih_no_cmd */
- 0xc4010221,
- 0x01d00c11,
-+/* 0x0053: swctx */
- 0xf101f840,
- 0xfe770047,
- 0x47f1004b,
-@@ -188,8 +226,11 @@ uint32_t nvc0_pcopy_code[] = {
- 0xf00204b9,
- 0x01f40643,
- 0x0604fa09,
-+/* 0x00c3: swctx_load */
- 0xfa060ef4,
-+/* 0x00c6: swctx_done */
- 0x03f80504,
-+/* 0x00ca: chsw */
- 0x27f100f8,
- 0x23cf1400,
- 0x1e3fc800,
-@@ -198,18 +239,22 @@ uint32_t nvc0_pcopy_code[] = {
- 0x1e3af053,
- 0xf00023d0,
- 0x24d00147,
-+/* 0x00eb: chsw_no_unload */
- 0xcf00f880,
- 0x3dc84023,
- 0x090bf41e,
- 0xf40131f4,
-+/* 0x00fa: chsw_finish_load */
- 0x37f05321,
- 0x8023d002,
-+/* 0x0102: dispatch */
- 0x37f100f8,
- 0x32cf1900,
- 0x0033cf40,
- 0x07ff24e4,
- 0xf11024b6,
- 0xbd010057,
-+/* 0x011b: dispatch_loop */
- 0x5874bd64,
- 0x57580056,
- 0x0450b601,
-@@ -219,6 +264,7 @@ uint32_t nvc0_pcopy_code[] = {
- 0xbb0f08f4,
- 0x74b60276,
- 0x0057bb03,
-+/* 0x013f: dispatch_valid_mthd */
- 0xbbdf0ef4,
- 0x44b60246,
- 0x0045bb03,
-@@ -229,24 +275,33 @@ uint32_t nvc0_pcopy_code[] = {
- 0x64b00146,
- 0x091bf400,
- 0xf4005380,
-+/* 0x0166: dispatch_cmd */
- 0x32f4300e,
- 0xf455f901,
- 0x0ef40c01,
-+/* 0x0171: dispatch_invalid_bitfield */
- 0x0225f025,
-+/* 0x0174: dispatch_illegal_mthd */
-+/* 0x0177: dispatch_error */
- 0xf10125f0,
- 0xd0100047,
- 0x43d00042,
- 0x4027f040,
-+/* 0x0187: hostirq_wait */
- 0xcf0002d0,
- 0x24f08002,
- 0x0024b040,
-+/* 0x0193: dispatch_done */
- 0xf1f71bf4,
- 0xf01d0027,
- 0x23d00137,
-+/* 0x019f: cmd_nop */
- 0xf800f800,
-+/* 0x01a1: cmd_pm_trigger */
- 0x0027f100,
- 0xf034bd22,
- 0x23d00233,
-+/* 0x01af: cmd_exec_set_format */
- 0xf400f800,
- 0x01b0f030,
- 0x0101b000,
-@@ -258,20 +313,26 @@ uint32_t nvc0_pcopy_code[] = {
- 0x3847c701,
- 0xf40170b6,
- 0x84bd0232,
-+/* 0x01da: ncomp_loop */
- 0x4ac494bd,
- 0x0445b60f,
-+/* 0x01e2: bpc_loop */
- 0xa430b4bd,
- 0x0f18f404,
- 0xbbc0a5ff,
- 0x31f400cb,
- 0x220ef402,
-+/* 0x01f4: cmp_c0 */
- 0xf00c1bf4,
- 0xcbbb10c7,
- 0x160ef400,
-+/* 0x0200: cmp_c1 */
- 0xf406a430,
- 0xc7f00c18,
- 0x00cbbb14,
-+/* 0x020f: cmp_zero */
- 0xf1070ef4,
-+/* 0x0213: bpc_next */
- 0x380080c7,
- 0x80b601c8,
- 0x01b0b601,
-@@ -283,6 +344,7 @@ uint32_t nvc0_pcopy_code[] = {
- 0x1d08980e,
- 0xf40068fd,
- 0x64bd0502,
-+/* 0x023c: dst_xcnt */
- 0x800075fd,
- 0x78fd1907,
- 0x1057f100,
-@@ -307,15 +369,18 @@ uint32_t nvc0_pcopy_code[] = {
- 0x1c069800,
- 0xf44056d0,
- 0x00f81030,
-+/* 0x029c: cmd_exec_set_surface_tiled */
- 0xc7075798,
- 0x78c76879,
- 0x0380b664,
- 0xb06077c7,
- 0x1bf40e76,
- 0x0477f009,
-+/* 0x02b7: xtile64 */
- 0xf00f0ef4,
- 0x70b6027c,
- 0x0947fd11,
-+/* 0x02c3: xtileok */
- 0x980677f0,
- 0x5b980c5a,
- 0x00abfd0e,
-@@ -374,6 +439,7 @@ uint32_t nvc0_pcopy_code[] = {
- 0xb70067d0,
- 0xd0040060,
- 0x00f80068,
-+/* 0x03a8: cmd_exec_set_surface_linear */
- 0xb7026cf0,
- 0xb6020260,
- 0x57980864,
-@@ -384,12 +450,15 @@ uint32_t nvc0_pcopy_code[] = {
- 0x0060b700,
- 0x06579804,
- 0xf80067d0,
-+/* 0x03d1: cmd_exec_wait */
- 0xf900f900,
- 0x0007f110,
- 0x0604b608,
-+/* 0x03dc: loop */
- 0xf00001cf,
- 0x1bf40114,
- 0xfc10fcfa,
-+/* 0x03eb: cmd_exec_query */
- 0xc800f800,
- 0x1bf40d34,
- 0xd121f570,
-@@ -419,6 +488,7 @@ uint32_t nvc0_pcopy_code[] = {
- 0x0153f026,
- 0x080047f1,
- 0xd00644b6,
-+/* 0x045e: query_counter */
- 0x21f50045,
- 0x47f103d1,
- 0x44b6080c,
-@@ -442,11 +512,13 @@ uint32_t nvc0_pcopy_code[] = {
- 0x080047f1,
- 0xd00644b6,
- 0x00f80045,
-+/* 0x04b8: cmd_exec */
- 0x03d121f5,
- 0xf4003fc8,
- 0x21f50e0b,
- 0x47f101af,
- 0x0ef40200,
-+/* 0x04cd: cmd_exec_no_format */
- 0x1067f11e,
- 0x0664b608,
- 0x800177f0,
-@@ -454,18 +526,23 @@ uint32_t nvc0_pcopy_code[] = {
- 0x1d079819,
- 0xd00067d0,
- 0x44bd4067,
-+/* 0x04e8: cmd_exec_init_src_surface */
- 0xbd0232f4,
- 0x043fc854,
- 0xf50a0bf4,
- 0xf403a821,
-+/* 0x04fa: src_tiled */
- 0x21f50a0e,
- 0x49f0029c,
-+/* 0x0501: cmd_exec_init_dst_surface */
- 0x0231f407,
- 0xc82c57f0,
- 0x0bf4083f,
- 0xa821f50a,
- 0x0a0ef403,
-+/* 0x0514: dst_tiled */
- 0x029c21f5,
-+/* 0x051b: cmd_exec_kick */
- 0xf10849f0,
- 0xb6080057,
- 0x06980654,
-@@ -475,7 +552,9 @@ uint32_t nvc0_pcopy_code[] = {
- 0x54d00546,
- 0x0c3fc800,
- 0xf5070bf4,
-+/* 0x053f: cmd_exec_done */
- 0xf803eb21,
-+/* 0x0541: cmd_wrcache_flush */
- 0x0027f100,
- 0xf034bd22,
- 0x23d00133,
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0072-mm-fix-wrong-argument-of-migrate_huge_pages-in-soft_.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0072-mm-fix-wrong-argument-of-migrate_huge_pages-in-soft_.patch
deleted file mode 100644
index 6d93dda..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0072-mm-fix-wrong-argument-of-migrate_huge_pages-in-soft_.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From 10d09034790926ded3c2ee655d72c48219d61122 Mon Sep 17 00:00:00 2001
-From: Joonsoo Kim <js1304 at gmail.com>
-Date: Mon, 30 Jul 2012 14:39:04 -0700
-Subject: [PATCH 72/73] mm: fix wrong argument of migrate_huge_pages() in
- soft_offline_huge_page()
-
-commit dc32f63453f56d07a1073a697dcd843dd3098c09 upstream.
-
-Commit a6bc32b89922 ("mm: compaction: introduce sync-light migration for
-use by compaction") changed the declaration of migrate_pages() and
-migrate_huge_pages().
-
-But it missed changing the argument of migrate_huge_pages() in
-soft_offline_huge_page(). In this case, we should call
-migrate_huge_pages() with MIGRATE_SYNC.
-
-Additionally, there is a mismatch between type the of argument and the
-function declaration for migrate_pages().
-
-Signed-off-by: Joonsoo Kim <js1304 at gmail.com>
-Cc: Christoph Lameter <cl at linux.com>
-Cc: Mel Gorman <mgorman at suse.de>
-Acked-by: David Rientjes <rientjes at google.com>
-Cc: "Aneesh Kumar K.V" <aneesh.kumar at linux.vnet.ibm.com>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- mm/memory-failure.c | 6 +++---
- 1 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/mm/memory-failure.c b/mm/memory-failure.c
-index 56080ea..5bd5bb1 100644
---- a/mm/memory-failure.c
-+++ b/mm/memory-failure.c
-@@ -1427,8 +1427,8 @@ static int soft_offline_huge_page(struct page *page, int flags)
- /* Keep page count to indicate a given hugepage is isolated. */
-
- list_add(&hpage->lru, &pagelist);
-- ret = migrate_huge_pages(&pagelist, new_page, MPOL_MF_MOVE_ALL, 0,
-- true);
-+ ret = migrate_huge_pages(&pagelist, new_page, MPOL_MF_MOVE_ALL, false,
-+ MIGRATE_SYNC);
- if (ret) {
- struct page *page1, *page2;
- list_for_each_entry_safe(page1, page2, &pagelist, lru)
-@@ -1557,7 +1557,7 @@ int soft_offline_page(struct page *page, int flags)
- page_is_file_cache(page));
- list_add(&page->lru, &pagelist);
- ret = migrate_pages(&pagelist, new_page, MPOL_MF_MOVE_ALL,
-- 0, MIGRATE_SYNC);
-+ false, MIGRATE_SYNC);
- if (ret) {
- putback_lru_pages(&pagelist);
- pr_info("soft offline: %#lx: migration failed %d, type %lx\n",
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0073-Linux-3.2.25.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0073-Linux-3.2.25.patch
deleted file mode 100644
index cb9db48..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0073-Linux-3.2.25.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From d5f196e5b0f7d3770840af22c9fbd4b8355fd792 Mon Sep 17 00:00:00 2001
-From: Ben Hutchings <ben at decadent.org.uk>
-Date: Thu, 2 Aug 2012 14:38:04 +0100
-Subject: [PATCH 73/73] Linux 3.2.25
-
----
- Makefile | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/Makefile b/Makefile
-index 80bb4fd..e13e4e7 100644
---- a/Makefile
-+++ b/Makefile
-@@ -1,6 +1,6 @@
- VERSION = 3
- PATCHLEVEL = 2
--SUBLEVEL = 24
-+SUBLEVEL = 25
- EXTRAVERSION =
- NAME = Saber-toothed Squirrel
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.26/0001-x86-Simplify-code-by-removing-a-SMP-ifdefs-from-stru.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.26/0001-x86-Simplify-code-by-removing-a-SMP-ifdefs-from-stru.patch
deleted file mode 100644
index e858ded..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.26/0001-x86-Simplify-code-by-removing-a-SMP-ifdefs-from-stru.patch
+++ /dev/null
@@ -1,273 +0,0 @@
-From 6b4860ef321fadc060ec7541cb5074980fd41a68 Mon Sep 17 00:00:00 2001
-From: Kevin Winchester <kjwinchester at gmail.com>
-Date: Tue, 20 Dec 2011 20:52:22 -0400
-Subject: [PATCH 1/2] x86: Simplify code by removing a !SMP #ifdefs from
- 'struct cpuinfo_x86'
-
-commit 141168c36cdee3ff23d9c7700b0edc47cb65479f and
-commit 3f806e50981825fa56a7f1938f24c0680816be45 upstream.
-
-Several fields in struct cpuinfo_x86 were not defined for the
-!SMP case, likely to save space. However, those fields still
-have some meaning for UP, and keeping them allows some #ifdef
-removal from other files. The additional size of the UP kernel
-from this change is not significant enough to worry about
-keeping up the distinction:
-
- text data bss dec hex filename
- 4737168 506459 972040 6215667 5ed7f3 vmlinux.o.before
- 4737444 506459 972040 6215943 5ed907 vmlinux.o.after
-
-for a difference of 276 bytes for an example UP config.
-
-If someone wants those 276 bytes back badly then it should
-be implemented in a cleaner way.
-
-Signed-off-by: Kevin Winchester <kjwinchester at gmail.com>
-Cc: Steffen Persvold <sp at numascale.com>
-Link: http://lkml.kernel.org/r/1324428742-12498-1-git-send-email-kjwinchester@gmail.com
-Signed-off-by: Ingo Molnar <mingo at elte.hu>
-Signed-off-by: Borislav Petkov <borislav.petkov at amd.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/x86/include/asm/processor.h | 2 --
- arch/x86/kernel/amd_nb.c | 8 ++------
- arch/x86/kernel/cpu/amd.c | 2 --
- arch/x86/kernel/cpu/common.c | 5 -----
- arch/x86/kernel/cpu/intel.c | 2 --
- arch/x86/kernel/cpu/mcheck/mce.c | 2 --
- arch/x86/kernel/cpu/mcheck/mce_amd.c | 5 +----
- arch/x86/kernel/cpu/proc.c | 4 +---
- drivers/edac/sb_edac.c | 2 --
- drivers/hwmon/coretemp.c | 7 +++----
- 10 files changed, 7 insertions(+), 32 deletions(-)
-
-diff --git a/arch/x86/include/asm/processor.h b/arch/x86/include/asm/processor.h
-index bb3ee36..f7c89e2 100644
---- a/arch/x86/include/asm/processor.h
-+++ b/arch/x86/include/asm/processor.h
-@@ -99,7 +99,6 @@ struct cpuinfo_x86 {
- u16 apicid;
- u16 initial_apicid;
- u16 x86_clflush_size;
--#ifdef CONFIG_SMP
- /* number of cores as seen by the OS: */
- u16 booted_cores;
- /* Physical processor id: */
-@@ -110,7 +109,6 @@ struct cpuinfo_x86 {
- u8 compute_unit_id;
- /* Index into per_cpu list: */
- u16 cpu_index;
--#endif
- u32 microcode;
- } __attribute__((__aligned__(SMP_CACHE_BYTES)));
-
-diff --git a/arch/x86/kernel/amd_nb.c b/arch/x86/kernel/amd_nb.c
-index bae1efe..be16854 100644
---- a/arch/x86/kernel/amd_nb.c
-+++ b/arch/x86/kernel/amd_nb.c
-@@ -154,16 +154,14 @@ int amd_get_subcaches(int cpu)
- {
- struct pci_dev *link = node_to_amd_nb(amd_get_nb_id(cpu))->link;
- unsigned int mask;
-- int cuid = 0;
-+ int cuid;
-
- if (!amd_nb_has_feature(AMD_NB_L3_PARTITIONING))
- return 0;
-
- pci_read_config_dword(link, 0x1d4, &mask);
-
--#ifdef CONFIG_SMP
- cuid = cpu_data(cpu).compute_unit_id;
--#endif
- return (mask >> (4 * cuid)) & 0xf;
- }
-
-@@ -172,7 +170,7 @@ int amd_set_subcaches(int cpu, int mask)
- static unsigned int reset, ban;
- struct amd_northbridge *nb = node_to_amd_nb(amd_get_nb_id(cpu));
- unsigned int reg;
-- int cuid = 0;
-+ int cuid;
-
- if (!amd_nb_has_feature(AMD_NB_L3_PARTITIONING) || mask > 0xf)
- return -EINVAL;
-@@ -190,9 +188,7 @@ int amd_set_subcaches(int cpu, int mask)
- pci_write_config_dword(nb->misc, 0x1b8, reg & ~0x180000);
- }
-
--#ifdef CONFIG_SMP
- cuid = cpu_data(cpu).compute_unit_id;
--#endif
- mask <<= 4 * cuid;
- mask |= (0xf ^ (1 << cuid)) << 26;
-
-diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c
-index 3524e1f..ff8557e 100644
---- a/arch/x86/kernel/cpu/amd.c
-+++ b/arch/x86/kernel/cpu/amd.c
-@@ -148,7 +148,6 @@ static void __cpuinit init_amd_k6(struct cpuinfo_x86 *c)
-
- static void __cpuinit amd_k7_smp_check(struct cpuinfo_x86 *c)
- {
--#ifdef CONFIG_SMP
- /* calling is from identify_secondary_cpu() ? */
- if (!c->cpu_index)
- return;
-@@ -192,7 +191,6 @@ static void __cpuinit amd_k7_smp_check(struct cpuinfo_x86 *c)
-
- valid_k7:
- ;
--#endif
- }
-
- static void __cpuinit init_amd_k7(struct cpuinfo_x86 *c)
-diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c
-index aa003b1..ca93cc7 100644
---- a/arch/x86/kernel/cpu/common.c
-+++ b/arch/x86/kernel/cpu/common.c
-@@ -676,9 +676,7 @@ static void __init early_identify_cpu(struct cpuinfo_x86 *c)
- if (this_cpu->c_early_init)
- this_cpu->c_early_init(c);
-
--#ifdef CONFIG_SMP
- c->cpu_index = 0;
--#endif
- filter_cpuid_features(c, false);
-
- setup_smep(c);
-@@ -764,10 +762,7 @@ static void __cpuinit generic_identify(struct cpuinfo_x86 *c)
- c->apicid = c->initial_apicid;
- # endif
- #endif
--
--#ifdef CONFIG_X86_HT
- c->phys_proc_id = c->initial_apicid;
--#endif
- }
-
- setup_smep(c);
-diff --git a/arch/x86/kernel/cpu/intel.c b/arch/x86/kernel/cpu/intel.c
-index 5231312..3e6ff6c 100644
---- a/arch/x86/kernel/cpu/intel.c
-+++ b/arch/x86/kernel/cpu/intel.c
-@@ -181,7 +181,6 @@ static void __cpuinit trap_init_f00f_bug(void)
-
- static void __cpuinit intel_smp_check(struct cpuinfo_x86 *c)
- {
--#ifdef CONFIG_SMP
- /* calling is from identify_secondary_cpu() ? */
- if (!c->cpu_index)
- return;
-@@ -198,7 +197,6 @@ static void __cpuinit intel_smp_check(struct cpuinfo_x86 *c)
- WARN_ONCE(1, "WARNING: SMP operation may be unreliable"
- "with B stepping processors.\n");
- }
--#endif
- }
-
- static void __cpuinit intel_workarounds(struct cpuinfo_x86 *c)
-diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c
-index b0f1271..3b67877 100644
---- a/arch/x86/kernel/cpu/mcheck/mce.c
-+++ b/arch/x86/kernel/cpu/mcheck/mce.c
-@@ -119,9 +119,7 @@ void mce_setup(struct mce *m)
- m->time = get_seconds();
- m->cpuvendor = boot_cpu_data.x86_vendor;
- m->cpuid = cpuid_eax(1);
--#ifdef CONFIG_SMP
- m->socketid = cpu_data(m->extcpu).phys_proc_id;
--#endif
- m->apicid = cpu_data(m->extcpu).initial_apicid;
- rdmsrl(MSR_IA32_MCG_CAP, m->mcgcap);
- }
-diff --git a/arch/x86/kernel/cpu/mcheck/mce_amd.c b/arch/x86/kernel/cpu/mcheck/mce_amd.c
-index 445a61c..d4444be 100644
---- a/arch/x86/kernel/cpu/mcheck/mce_amd.c
-+++ b/arch/x86/kernel/cpu/mcheck/mce_amd.c
-@@ -65,11 +65,9 @@ struct threshold_bank {
- };
- static DEFINE_PER_CPU(struct threshold_bank * [NR_BANKS], threshold_banks);
-
--#ifdef CONFIG_SMP
- static unsigned char shared_bank[NR_BANKS] = {
- 0, 0, 0, 0, 1
- };
--#endif
-
- static DEFINE_PER_CPU(unsigned char, bank_map); /* see which banks are on */
-
-@@ -227,10 +225,9 @@ void mce_amd_feature_init(struct cpuinfo_x86 *c)
-
- if (!block)
- per_cpu(bank_map, cpu) |= (1 << bank);
--#ifdef CONFIG_SMP
-+
- if (shared_bank[bank] && c->cpu_core_id)
- break;
--#endif
-
- memset(&b, 0, sizeof(b));
- b.cpu = cpu;
-diff --git a/arch/x86/kernel/cpu/proc.c b/arch/x86/kernel/cpu/proc.c
-index 14b2314..8022c66 100644
---- a/arch/x86/kernel/cpu/proc.c
-+++ b/arch/x86/kernel/cpu/proc.c
-@@ -64,12 +64,10 @@ static void show_cpuinfo_misc(struct seq_file *m, struct cpuinfo_x86 *c)
- static int show_cpuinfo(struct seq_file *m, void *v)
- {
- struct cpuinfo_x86 *c = v;
-- unsigned int cpu = 0;
-+ unsigned int cpu;
- int i;
-
--#ifdef CONFIG_SMP
- cpu = c->cpu_index;
--#endif
- seq_printf(m, "processor\t: %u\n"
- "vendor_id\t: %s\n"
- "cpu family\t: %d\n"
-diff --git a/drivers/edac/sb_edac.c b/drivers/edac/sb_edac.c
-index 18a1293..0db57b5 100644
---- a/drivers/edac/sb_edac.c
-+++ b/drivers/edac/sb_edac.c
-@@ -1609,11 +1609,9 @@ static int sbridge_mce_check_error(struct notifier_block *nb, unsigned long val,
- mce->cpuvendor, mce->cpuid, mce->time,
- mce->socketid, mce->apicid);
-
--#ifdef CONFIG_SMP
- /* Only handle if it is the right mc controller */
- if (cpu_data(mce->cpu).phys_proc_id != pvt->sbridge_dev->mc)
- return NOTIFY_DONE;
--#endif
-
- smp_rmb();
- if ((pvt->mce_out + 1) % MCE_LOG_LEN == pvt->mce_in) {
-diff --git a/drivers/hwmon/coretemp.c b/drivers/hwmon/coretemp.c
-index 0790c98..19b4412 100644
---- a/drivers/hwmon/coretemp.c
-+++ b/drivers/hwmon/coretemp.c
-@@ -57,16 +57,15 @@ MODULE_PARM_DESC(tjmax, "TjMax value in degrees Celsius");
- #define TOTAL_ATTRS (MAX_CORE_ATTRS + 1)
- #define MAX_CORE_DATA (NUM_REAL_CORES + BASE_SYSFS_ATTR_NO)
-
--#ifdef CONFIG_SMP
- #define TO_PHYS_ID(cpu) cpu_data(cpu).phys_proc_id
- #define TO_CORE_ID(cpu) cpu_data(cpu).cpu_core_id
-+#define TO_ATTR_NO(cpu) (TO_CORE_ID(cpu) + BASE_SYSFS_ATTR_NO)
-+
-+#ifdef CONFIG_SMP
- #define for_each_sibling(i, cpu) for_each_cpu(i, cpu_sibling_mask(cpu))
- #else
--#define TO_PHYS_ID(cpu) (cpu)
--#define TO_CORE_ID(cpu) (cpu)
- #define for_each_sibling(i, cpu) for (i = 0; false; )
- #endif
--#define TO_ATTR_NO(cpu) (TO_CORE_ID(cpu) + BASE_SYSFS_ATTR_NO)
-
- /*
- * Per-Core Temperature Data
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.26/0002-Linux-3.2.26.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.26/0002-Linux-3.2.26.patch
deleted file mode 100644
index 3015fd3..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.26/0002-Linux-3.2.26.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From c155c854372ebc05bac443b7d5285dd8d5834c62 Mon Sep 17 00:00:00 2001
-From: Ben Hutchings <ben at decadent.org.uk>
-Date: Sat, 4 Aug 2012 16:31:19 +0100
-Subject: [PATCH 2/2] Linux 3.2.26
-
----
- Makefile | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/Makefile b/Makefile
-index e13e4e7..fa5acc83 100644
---- a/Makefile
-+++ b/Makefile
-@@ -1,6 +1,6 @@
- VERSION = 3
- PATCHLEVEL = 2
--SUBLEVEL = 25
-+SUBLEVEL = 26
- EXTRAVERSION =
- NAME = Saber-toothed Squirrel
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0001-sched-Fix-race-in-task_group.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0001-sched-Fix-race-in-task_group.patch
deleted file mode 100644
index ea42ba5..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0001-sched-Fix-race-in-task_group.patch
+++ /dev/null
@@ -1,158 +0,0 @@
-From 7164208d7f019fd736a9b7411858b534b3b69bba Mon Sep 17 00:00:00 2001
-From: Peter Zijlstra <peterz at infradead.org>
-Date: Fri, 22 Jun 2012 13:36:05 +0200
-Subject: [PATCH 01/70] sched: Fix race in task_group()
-
-commit 8323f26ce3425460769605a6aece7a174edaa7d1 upstream
-
-Stefan reported a crash on a kernel before a3e5d1091c1 ("sched:
-Don't call task_group() too many times in set_task_rq()"), he
-found the reason to be that the multiple task_group()
-invocations in set_task_rq() returned different values.
-
-Looking at all that I found a lack of serialization and plain
-wrong comments.
-
-The below tries to fix it using an extra pointer which is
-updated under the appropriate scheduler locks. Its not pretty,
-but I can't really see another way given how all the cgroup
-stuff works.
-
-Reported-and-tested-by: Stefan Bader <stefan.bader at canonical.com>
-Signed-off-by: Peter Zijlstra <a.p.zijlstra at chello.nl>
-Link: http://lkml.kernel.org/r/1340364965.18025.71.camel@twins
-Signed-off-by: Ingo Molnar <mingo at kernel.org>
-
-(backported to previous file names and layout)
-Signed-off-by: Stefan Bader <stefan.bader at canonical.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- include/linux/init_task.h | 12 +++++++++++-
- include/linux/sched.h | 5 ++++-
- kernel/sched.c | 32 ++++++++++++++++++--------------
- 3 files changed, 33 insertions(+), 16 deletions(-)
-
-diff --git a/include/linux/init_task.h b/include/linux/init_task.h
-index df53fdf..cdde2b3 100644
---- a/include/linux/init_task.h
-+++ b/include/linux/init_task.h
-@@ -124,8 +124,17 @@ extern struct group_info init_groups;
-
- extern struct cred init_cred;
-
-+extern struct task_group root_task_group;
-+
-+#ifdef CONFIG_CGROUP_SCHED
-+# define INIT_CGROUP_SCHED(tsk) \
-+ .sched_task_group = &root_task_group,
-+#else
-+# define INIT_CGROUP_SCHED(tsk)
-+#endif
-+
- #ifdef CONFIG_PERF_EVENTS
--# define INIT_PERF_EVENTS(tsk) \
-+# define INIT_PERF_EVENTS(tsk) \
- .perf_event_mutex = \
- __MUTEX_INITIALIZER(tsk.perf_event_mutex), \
- .perf_event_list = LIST_HEAD_INIT(tsk.perf_event_list),
-@@ -162,6 +171,7 @@ extern struct cred init_cred;
- }, \
- .tasks = LIST_HEAD_INIT(tsk.tasks), \
- INIT_PUSHABLE_TASKS(tsk) \
-+ INIT_CGROUP_SCHED(tsk) \
- .ptraced = LIST_HEAD_INIT(tsk.ptraced), \
- .ptrace_entry = LIST_HEAD_INIT(tsk.ptrace_entry), \
- .real_parent = &tsk, \
-diff --git a/include/linux/sched.h b/include/linux/sched.h
-index d336c35..1e86bb4 100644
---- a/include/linux/sched.h
-+++ b/include/linux/sched.h
-@@ -1236,6 +1236,9 @@ struct task_struct {
- const struct sched_class *sched_class;
- struct sched_entity se;
- struct sched_rt_entity rt;
-+#ifdef CONFIG_CGROUP_SCHED
-+ struct task_group *sched_task_group;
-+#endif
-
- #ifdef CONFIG_PREEMPT_NOTIFIERS
- /* list of struct preempt_notifier: */
-@@ -2646,7 +2649,7 @@ extern int sched_group_set_rt_period(struct task_group *tg,
- extern long sched_group_rt_period(struct task_group *tg);
- extern int sched_rt_can_attach(struct task_group *tg, struct task_struct *tsk);
- #endif
--#endif
-+#endif /* CONFIG_CGROUP_SCHED */
-
- extern int task_can_switch_user(struct user_struct *up,
- struct task_struct *tsk);
-diff --git a/kernel/sched.c b/kernel/sched.c
-index 9cd8ca7..e0431c4 100644
---- a/kernel/sched.c
-+++ b/kernel/sched.c
-@@ -746,22 +746,19 @@ static inline int cpu_of(struct rq *rq)
- /*
- * Return the group to which this tasks belongs.
- *
-- * We use task_subsys_state_check() and extend the RCU verification with
-- * pi->lock and rq->lock because cpu_cgroup_attach() holds those locks for each
-- * task it moves into the cgroup. Therefore by holding either of those locks,
-- * we pin the task to the current cgroup.
-+ * We cannot use task_subsys_state() and friends because the cgroup
-+ * subsystem changes that value before the cgroup_subsys::attach() method
-+ * is called, therefore we cannot pin it and might observe the wrong value.
-+ *
-+ * The same is true for autogroup's p->signal->autogroup->tg, the autogroup
-+ * core changes this before calling sched_move_task().
-+ *
-+ * Instead we use a 'copy' which is updated from sched_move_task() while
-+ * holding both task_struct::pi_lock and rq::lock.
- */
- static inline struct task_group *task_group(struct task_struct *p)
- {
-- struct task_group *tg;
-- struct cgroup_subsys_state *css;
--
-- css = task_subsys_state_check(p, cpu_cgroup_subsys_id,
-- lockdep_is_held(&p->pi_lock) ||
-- lockdep_is_held(&task_rq(p)->lock));
-- tg = container_of(css, struct task_group, css);
--
-- return autogroup_task_group(p, tg);
-+ return p->sched_task_group;
- }
-
- /* Change a task's cfs_rq and parent entity if it moves across CPUs/groups */
-@@ -2372,7 +2369,7 @@ void set_task_cpu(struct task_struct *p, unsigned int new_cpu)
- * a task's CPU. ->pi_lock for waking tasks, rq->lock for runnable tasks.
- *
- * sched_move_task() holds both and thus holding either pins the cgroup,
-- * see set_task_rq().
-+ * see task_group().
- *
- * Furthermore, all task_rq users should acquire both locks, see
- * task_rq_lock().
-@@ -8952,6 +8949,7 @@ void sched_destroy_group(struct task_group *tg)
- */
- void sched_move_task(struct task_struct *tsk)
- {
-+ struct task_group *tg;
- int on_rq, running;
- unsigned long flags;
- struct rq *rq;
-@@ -8966,6 +8964,12 @@ void sched_move_task(struct task_struct *tsk)
- if (unlikely(running))
- tsk->sched_class->put_prev_task(rq, tsk);
-
-+ tg = container_of(task_subsys_state_check(tsk, cpu_cgroup_subsys_id,
-+ lockdep_is_held(&tsk->sighand->siglock)),
-+ struct task_group, css);
-+ tg = autogroup_task_group(tsk, tg);
-+ tsk->sched_task_group = tg;
-+
- #ifdef CONFIG_FAIR_GROUP_SCHED
- if (tsk->sched_class->task_move_group)
- tsk->sched_class->task_move_group(tsk, on_rq);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0002-floppy-Cleanup-disk-queue-before-caling-put_disk-if-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0002-floppy-Cleanup-disk-queue-before-caling-put_disk-if-.patch
deleted file mode 100644
index 5f258a3..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0002-floppy-Cleanup-disk-queue-before-caling-put_disk-if-.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From d51b64762e38f2ef1577ddc9f6399a7b56aaeb25 Mon Sep 17 00:00:00 2001
-From: Vivek Goyal <vgoyal at redhat.com>
-Date: Wed, 8 Feb 2012 20:03:38 +0100
-Subject: [PATCH 02/70] floppy: Cleanup disk->queue before caling put_disk()
- if add_disk() was never called
-
-commit 3f9a5aabd0a9fe0e0cd308506f48963d79169aa7 upstream.
-
-add_disk() takes gendisk reference on request queue. If driver failed during
-initialization and never called add_disk() then that extra reference is not
-taken. That reference is put in put_disk(). floppy driver allocates the
-disk, allocates queue, sets disk->queue and then relizes that floppy
-controller is not present. It tries to tear down everything and tries to
-put a reference down in put_disk() which was never taken.
-
-In such error cases cleanup disk->queue before calling put_disk() so that
-we never try to put down a reference which was never taken in first place.
-
-Reported-and-tested-by: Suresh Jayaraman <sjayaraman at suse.com>
-Tested-by: Dirk Gouders <gouders at et.bocholt.fh-gelsenkirchen.de>
-Signed-off-by: Vivek Goyal <vgoyal at redhat.com>
-Acked-by: Tejun Heo <tj at kernel.org>
-Signed-off-by: Jens Axboe <axboe at kernel.dk>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/block/floppy.c | 8 +++++++-
- 1 files changed, 7 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/block/floppy.c b/drivers/block/floppy.c
-index 9955a53..c864add 100644
---- a/drivers/block/floppy.c
-+++ b/drivers/block/floppy.c
-@@ -4369,8 +4369,14 @@ out_unreg_blkdev:
- out_put_disk:
- while (dr--) {
- del_timer_sync(&motor_off_timer[dr]);
-- if (disks[dr]->queue)
-+ if (disks[dr]->queue) {
- blk_cleanup_queue(disks[dr]->queue);
-+ /*
-+ * put_disk() is not paired with add_disk() and
-+ * will put queue reference one extra time. fix it.
-+ */
-+ disks[dr]->queue = NULL;
-+ }
- put_disk(disks[dr]);
- }
- return err;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0003-xen-mark-local-pages-as-FOREIGN-in-the-m2p_override.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0003-xen-mark-local-pages-as-FOREIGN-in-the-m2p_override.patch
deleted file mode 100644
index a111e55..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0003-xen-mark-local-pages-as-FOREIGN-in-the-m2p_override.patch
+++ /dev/null
@@ -1,156 +0,0 @@
-From 0619fd368e61287667b8e77ae17b332e196f6258 Mon Sep 17 00:00:00 2001
-From: Stefano Stabellini <stefano.stabellini at eu.citrix.com>
-Date: Wed, 23 May 2012 18:57:20 +0100
-Subject: [PATCH 03/70] xen: mark local pages as FOREIGN in the m2p_override
-
-commit b9e0d95c041ca2d7ad297ee37c2e9cfab67a188f upstream.
-
-When the frontend and the backend reside on the same domain, even if we
-add pages to the m2p_override, these pages will never be returned by
-mfn_to_pfn because the check "get_phys_to_machine(pfn) != mfn" will
-always fail, so the pfn of the frontend will be returned instead
-(resulting in a deadlock because the frontend pages are already locked).
-
-INFO: task qemu-system-i38:1085 blocked for more than 120 seconds.
-"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
-qemu-system-i38 D ffff8800cfc137c0 0 1085 1 0x00000000
- ffff8800c47ed898 0000000000000282 ffff8800be4596b0 00000000000137c0
- ffff8800c47edfd8 ffff8800c47ec010 00000000000137c0 00000000000137c0
- ffff8800c47edfd8 00000000000137c0 ffffffff82213020 ffff8800be4596b0
-Call Trace:
- [<ffffffff81101ee0>] ? __lock_page+0x70/0x70
- [<ffffffff81a0fdd9>] schedule+0x29/0x70
- [<ffffffff81a0fe80>] io_schedule+0x60/0x80
- [<ffffffff81101eee>] sleep_on_page+0xe/0x20
- [<ffffffff81a0e1ca>] __wait_on_bit_lock+0x5a/0xc0
- [<ffffffff81101ed7>] __lock_page+0x67/0x70
- [<ffffffff8106f750>] ? autoremove_wake_function+0x40/0x40
- [<ffffffff811867e6>] ? bio_add_page+0x36/0x40
- [<ffffffff8110b692>] set_page_dirty_lock+0x52/0x60
- [<ffffffff81186021>] bio_set_pages_dirty+0x51/0x70
- [<ffffffff8118c6b4>] do_blockdev_direct_IO+0xb24/0xeb0
- [<ffffffff811e71a0>] ? ext3_get_blocks_handle+0xe00/0xe00
- [<ffffffff8118ca95>] __blockdev_direct_IO+0x55/0x60
- [<ffffffff811e71a0>] ? ext3_get_blocks_handle+0xe00/0xe00
- [<ffffffff811e91c8>] ext3_direct_IO+0xf8/0x390
- [<ffffffff811e71a0>] ? ext3_get_blocks_handle+0xe00/0xe00
- [<ffffffff81004b60>] ? xen_mc_flush+0xb0/0x1b0
- [<ffffffff81104027>] generic_file_aio_read+0x737/0x780
- [<ffffffff813bedeb>] ? gnttab_map_refs+0x15b/0x1e0
- [<ffffffff811038f0>] ? find_get_pages+0x150/0x150
- [<ffffffff8119736c>] aio_rw_vect_retry+0x7c/0x1d0
- [<ffffffff811972f0>] ? lookup_ioctx+0x90/0x90
- [<ffffffff81198856>] aio_run_iocb+0x66/0x1a0
- [<ffffffff811998b8>] do_io_submit+0x708/0xb90
- [<ffffffff81199d50>] sys_io_submit+0x10/0x20
- [<ffffffff81a18d69>] system_call_fastpath+0x16/0x1b
-
-The explanation is in the comment within the code:
-
-We need to do this because the pages shared by the frontend
-(xen-blkfront) can be already locked (lock_page, called by
-do_read_cache_page); when the userspace backend tries to use them
-with direct_IO, mfn_to_pfn returns the pfn of the frontend, so
-do_blockdev_direct_IO is going to try to lock the same pages
-again resulting in a deadlock.
-
-A simplified call graph looks like this:
-
-pygrub QEMU
------------------------------------------------
-do_read_cache_page io_submit
- | |
-lock_page ext3_direct_IO
- |
- bio_add_page
- |
- lock_page
-
-Internally the xen-blkback uses m2p_add_override to swizzle (temporarily)
-a 'struct page' to have a different MFN (so that it can point to another
-guest). It also can easily find out whether another pfn corresponding
-to the mfn exists in the m2p, and can set the FOREIGN bit
-in the p2m, making sure that mfn_to_pfn returns the pfn of the backend.
-
-This allows the backend to perform direct_IO on these pages, but as a
-side effect prevents the frontend from using get_user_pages_fast on
-them while they are being shared with the backend.
-
-Signed-off-by: Stefano Stabellini <stefano.stabellini at eu.citrix.com>
-Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk at oracle.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/x86/xen/p2m.c | 36 ++++++++++++++++++++++++++++++++++++
- 1 files changed, 36 insertions(+), 0 deletions(-)
-
-diff --git a/arch/x86/xen/p2m.c b/arch/x86/xen/p2m.c
-index 1b267e7..00a03854 100644
---- a/arch/x86/xen/p2m.c
-+++ b/arch/x86/xen/p2m.c
-@@ -686,6 +686,7 @@ int m2p_add_override(unsigned long mfn, struct page *page,
- unsigned long uninitialized_var(address);
- unsigned level;
- pte_t *ptep = NULL;
-+ int ret = 0;
-
- pfn = page_to_pfn(page);
- if (!PageHighMem(page)) {
-@@ -721,6 +722,24 @@ int m2p_add_override(unsigned long mfn, struct page *page,
- list_add(&page->lru, &m2p_overrides[mfn_hash(mfn)]);
- spin_unlock_irqrestore(&m2p_override_lock, flags);
-
-+ /* p2m(m2p(mfn)) == mfn: the mfn is already present somewhere in
-+ * this domain. Set the FOREIGN_FRAME_BIT in the p2m for the other
-+ * pfn so that the following mfn_to_pfn(mfn) calls will return the
-+ * pfn from the m2p_override (the backend pfn) instead.
-+ * We need to do this because the pages shared by the frontend
-+ * (xen-blkfront) can be already locked (lock_page, called by
-+ * do_read_cache_page); when the userspace backend tries to use them
-+ * with direct_IO, mfn_to_pfn returns the pfn of the frontend, so
-+ * do_blockdev_direct_IO is going to try to lock the same pages
-+ * again resulting in a deadlock.
-+ * As a side effect get_user_pages_fast might not be safe on the
-+ * frontend pages while they are being shared with the backend,
-+ * because mfn_to_pfn (that ends up being called by GUPF) will
-+ * return the backend pfn rather than the frontend pfn. */
-+ ret = __get_user(pfn, &machine_to_phys_mapping[mfn]);
-+ if (ret == 0 && get_phys_to_machine(pfn) == mfn)
-+ set_phys_to_machine(pfn, FOREIGN_FRAME(mfn));
-+
- return 0;
- }
- EXPORT_SYMBOL_GPL(m2p_add_override);
-@@ -732,6 +751,7 @@ int m2p_remove_override(struct page *page, bool clear_pte)
- unsigned long uninitialized_var(address);
- unsigned level;
- pte_t *ptep = NULL;
-+ int ret = 0;
-
- pfn = page_to_pfn(page);
- mfn = get_phys_to_machine(pfn);
-@@ -801,6 +821,22 @@ int m2p_remove_override(struct page *page, bool clear_pte)
- } else
- set_phys_to_machine(pfn, page->index);
-
-+ /* p2m(m2p(mfn)) == FOREIGN_FRAME(mfn): the mfn is already present
-+ * somewhere in this domain, even before being added to the
-+ * m2p_override (see comment above in m2p_add_override).
-+ * If there are no other entries in the m2p_override corresponding
-+ * to this mfn, then remove the FOREIGN_FRAME_BIT from the p2m for
-+ * the original pfn (the one shared by the frontend): the backend
-+ * cannot do any IO on this page anymore because it has been
-+ * unshared. Removing the FOREIGN_FRAME_BIT from the p2m entry of
-+ * the original pfn causes mfn_to_pfn(mfn) to return the frontend
-+ * pfn again. */
-+ mfn &= ~FOREIGN_FRAME_BIT;
-+ ret = __get_user(pfn, &machine_to_phys_mapping[mfn]);
-+ if (ret == 0 && get_phys_to_machine(pfn) == FOREIGN_FRAME(mfn) &&
-+ m2p_find_override(mfn) == NULL)
-+ set_phys_to_machine(pfn, mfn);
-+
- return 0;
- }
- EXPORT_SYMBOL_GPL(m2p_remove_override);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0004-lirc_sir-make-device-registration-work.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0004-lirc_sir-make-device-registration-work.patch
deleted file mode 100644
index 9a3e2ad..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0004-lirc_sir-make-device-registration-work.patch
+++ /dev/null
@@ -1,131 +0,0 @@
-From 03d61a0ca7ab54f6fb1524f4313afd1811fde803 Mon Sep 17 00:00:00 2001
-From: Jarod Wilson <jarod at redhat.com>
-Date: Mon, 4 Jun 2012 13:05:24 -0300
-Subject: [PATCH 04/70] lirc_sir: make device registration work
-
-commit 4b71ca6bce8fab3d08c61bf330e781f957934ae1 upstream.
-
-For one, the driver device pointer needs to be filled in, or the lirc core
-will refuse to load the driver. And we really need to wire up all the
-platform_device bits. This has been tested via the lirc sourceforge tree
-and verified to work, been sitting there for months, finally getting
-around to sending it. :\
-
-CC: Josh Boyer <jwboyer at redhat.com>
-Signed-off-by: Jarod Wilson <jarod at redhat.com>
-Signed-off-by: Mauro Carvalho Chehab <mchehab at redhat.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/staging/media/lirc/lirc_sir.c | 60 +++++++++++++++++++++++++++++++-
- 1 files changed, 58 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/staging/media/lirc/lirc_sir.c b/drivers/staging/media/lirc/lirc_sir.c
-index 6903d39..90e9e32 100644
---- a/drivers/staging/media/lirc/lirc_sir.c
-+++ b/drivers/staging/media/lirc/lirc_sir.c
-@@ -53,6 +53,7 @@
- #include <linux/io.h>
- #include <asm/irq.h>
- #include <linux/fcntl.h>
-+#include <linux/platform_device.h>
- #ifdef LIRC_ON_SA1100
- #include <asm/hardware.h>
- #ifdef CONFIG_SA1100_COLLIE
-@@ -488,9 +489,11 @@ static struct lirc_driver driver = {
- .owner = THIS_MODULE,
- };
-
-+static struct platform_device *lirc_sir_dev;
-
- static int init_chrdev(void)
- {
-+ driver.dev = &lirc_sir_dev->dev;
- driver.minor = lirc_register_driver(&driver);
- if (driver.minor < 0) {
- printk(KERN_ERR LIRC_DRIVER_NAME ": init_chrdev() failed.\n");
-@@ -1216,20 +1219,71 @@ static int init_lirc_sir(void)
- return 0;
- }
-
-+static int __devinit lirc_sir_probe(struct platform_device *dev)
-+{
-+ return 0;
-+}
-+
-+static int __devexit lirc_sir_remove(struct platform_device *dev)
-+{
-+ return 0;
-+}
-+
-+static struct platform_driver lirc_sir_driver = {
-+ .probe = lirc_sir_probe,
-+ .remove = __devexit_p(lirc_sir_remove),
-+ .driver = {
-+ .name = "lirc_sir",
-+ .owner = THIS_MODULE,
-+ },
-+};
-
- static int __init lirc_sir_init(void)
- {
- int retval;
-
-+ retval = platform_driver_register(&lirc_sir_driver);
-+ if (retval) {
-+ printk(KERN_ERR LIRC_DRIVER_NAME ": Platform driver register "
-+ "failed!\n");
-+ return -ENODEV;
-+ }
-+
-+ lirc_sir_dev = platform_device_alloc("lirc_dev", 0);
-+ if (!lirc_sir_dev) {
-+ printk(KERN_ERR LIRC_DRIVER_NAME ": Platform device alloc "
-+ "failed!\n");
-+ retval = -ENOMEM;
-+ goto pdev_alloc_fail;
-+ }
-+
-+ retval = platform_device_add(lirc_sir_dev);
-+ if (retval) {
-+ printk(KERN_ERR LIRC_DRIVER_NAME ": Platform device add "
-+ "failed!\n");
-+ retval = -ENODEV;
-+ goto pdev_add_fail;
-+ }
-+
- retval = init_chrdev();
- if (retval < 0)
-- return retval;
-+ goto fail;
-+
- retval = init_lirc_sir();
- if (retval) {
- drop_chrdev();
-- return retval;
-+ goto fail;
- }
-+
- return 0;
-+
-+fail:
-+ platform_device_del(lirc_sir_dev);
-+pdev_add_fail:
-+ platform_device_put(lirc_sir_dev);
-+pdev_alloc_fail:
-+ platform_driver_unregister(&lirc_sir_driver);
-+ return retval;
- }
-
- static void __exit lirc_sir_exit(void)
-@@ -1237,6 +1291,8 @@ static void __exit lirc_sir_exit(void)
- drop_hardware();
- drop_chrdev();
- drop_port();
-+ platform_device_unregister(lirc_sir_dev);
-+ platform_driver_unregister(&lirc_sir_driver);
- printk(KERN_INFO LIRC_DRIVER_NAME ": Uninstalled.\n");
- }
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0005-stable-update-references-to-older-2.6-versions-for-3.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0005-stable-update-references-to-older-2.6-versions-for-3.patch
deleted file mode 100644
index 78b6729..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0005-stable-update-references-to-older-2.6-versions-for-3.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From ed3c699ad6609ac8df5b4cea1805b7c5b0235c1f Mon Sep 17 00:00:00 2001
-From: Paul Gortmaker <paul.gortmaker at windriver.com>
-Date: Tue, 5 Jun 2012 11:15:50 -0400
-Subject: [PATCH 05/70] stable: update references to older 2.6 versions for
- 3.x
-
-commit 2584f5212d97b664be250ad5700a2d0fee31a10d upstream.
-
-Also add information on where the respective trees are.
-
-Signed-off-by: Paul Gortmaker <paul.gortmaker at windriver.com>
-Acked-by: Rob Landley <rob at landley.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- Documentation/stable_kernel_rules.txt | 19 ++++++++++++++-----
- 1 files changed, 14 insertions(+), 5 deletions(-)
-
-diff --git a/Documentation/stable_kernel_rules.txt b/Documentation/stable_kernel_rules.txt
-index e1f856b..22bf11b 100644
---- a/Documentation/stable_kernel_rules.txt
-+++ b/Documentation/stable_kernel_rules.txt
-@@ -1,4 +1,4 @@
--Everything you ever wanted to know about Linux 2.6 -stable releases.
-+Everything you ever wanted to know about Linux -stable releases.
-
- Rules on what kind of patches are accepted, and which ones are not, into the
- "-stable" tree:
-@@ -41,10 +41,10 @@ Procedure for submitting patches to the -stable tree:
- cherry-picked than this can be specified in the following format in
- the sign-off area:
-
-- Cc: <stable at vger.kernel.org> # .32.x: a1f84a3: sched: Check for idle
-- Cc: <stable at vger.kernel.org> # .32.x: 1b9508f: sched: Rate-limit newidle
-- Cc: <stable at vger.kernel.org> # .32.x: fd21073: sched: Fix affinity logic
-- Cc: <stable at vger.kernel.org> # .32.x
-+ Cc: <stable at vger.kernel.org> # 3.3.x: a1f84a3: sched: Check for idle
-+ Cc: <stable at vger.kernel.org> # 3.3.x: 1b9508f: sched: Rate-limit newidle
-+ Cc: <stable at vger.kernel.org> # 3.3.x: fd21073: sched: Fix affinity logic
-+ Cc: <stable at vger.kernel.org> # 3.3.x
- Signed-off-by: Ingo Molnar <mingo at elte.hu>
-
- The tag sequence has the meaning of:
-@@ -78,6 +78,15 @@ Review cycle:
- security kernel team, and not go through the normal review cycle.
- Contact the kernel security team for more details on this procedure.
-
-+Trees:
-+
-+ - The queues of patches, for both completed versions and in progress
-+ versions can be found at:
-+ http://git.kernel.org/?p=linux/kernel/git/stable/stable-queue.git
-+ - The finalized and tagged releases of all stable kernels can be found
-+ in separate branches per version at:
-+ http://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git
-+
-
- Review committee:
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0006-ALSA-hda-add-dock-support-for-Thinkpad-X230-Tablet.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0006-ALSA-hda-add-dock-support-for-Thinkpad-X230-Tablet.patch
deleted file mode 100644
index d2a0bcd..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0006-ALSA-hda-add-dock-support-for-Thinkpad-X230-Tablet.patch
+++ /dev/null
@@ -1,107 +0,0 @@
-From bad9b02f55b18da07c00945ac46d33636331bfa0 Mon Sep 17 00:00:00 2001
-From: David Henningsson <david.henningsson at canonical.com>
-Date: Fri, 20 Jul 2012 10:37:25 +0200
-Subject: [PATCH 06/70] ALSA: hda - add dock support for Thinkpad X230 Tablet
-
-commit 108cc108a3bb42fe4705df1317ff98e1e29428a6 upstream.
-
-Also add a model/fixup string "lenovo-dock", so that other Thinkpad
-users will be able to test this fixup easily, to see if it enables
-dock I/O for them as well.
-
-BugLink: https://bugs.launchpad.net/bugs/1026953
-Tested-by: John McCarron <john.mccarron at canonical.com>
-Signed-off-by: David Henningsson <david.henningsson at canonical.com>
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- Documentation/sound/alsa/HD-Audio-Models.txt | 3 +-
- sound/pci/hda/patch_realtek.c | 27 ++++++++++++++++++++++++++
- 2 files changed, 29 insertions(+), 1 deletions(-)
-
-diff --git a/Documentation/sound/alsa/HD-Audio-Models.txt b/Documentation/sound/alsa/HD-Audio-Models.txt
-index edad99a..69820b2 100644
---- a/Documentation/sound/alsa/HD-Audio-Models.txt
-+++ b/Documentation/sound/alsa/HD-Audio-Models.txt
-@@ -60,10 +60,11 @@ ALC267/268
- ==========
- N/A
-
--ALC269
-+ALC269/270/275/276/280/282
- ======
- laptop-amic Laptops with analog-mic input
- laptop-dmic Laptops with digital-mic input
-+ lenovo-dock Enables docking station I/O for some Lenovos
-
- ALC662/663/272
- ==============
-diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
-index 191fd78..6ae58b2 100644
---- a/sound/pci/hda/patch_realtek.c
-+++ b/sound/pci/hda/patch_realtek.c
-@@ -4809,6 +4809,15 @@ static int alc269_resume(struct hda_codec *codec)
- }
- #endif /* CONFIG_PM */
-
-+static void alc269_fixup_pincfg_no_hp_to_lineout(struct hda_codec *codec,
-+ const struct alc_fixup *fix, int action)
-+{
-+ struct alc_spec *spec = codec->spec;
-+
-+ if (action == ALC_FIXUP_ACT_PRE_PROBE)
-+ spec->parse_flags = HDA_PINCFG_NO_HP_FIXUP;
-+}
-+
- static void alc269_fixup_hweq(struct hda_codec *codec,
- const struct alc_fixup *fix, int action)
- {
-@@ -4909,6 +4918,8 @@ enum {
- ALC269_FIXUP_DMIC,
- ALC269VB_FIXUP_AMIC,
- ALC269VB_FIXUP_DMIC,
-+ ALC269_FIXUP_LENOVO_DOCK,
-+ ALC269_FIXUP_PINCFG_NO_HP_TO_LINEOUT,
- };
-
- static const struct alc_fixup alc269_fixups[] = {
-@@ -5029,6 +5040,20 @@ static const struct alc_fixup alc269_fixups[] = {
- { }
- },
- },
-+ [ALC269_FIXUP_LENOVO_DOCK] = {
-+ .type = ALC_FIXUP_PINS,
-+ .v.pins = (const struct alc_pincfg[]) {
-+ { 0x19, 0x23a11040 }, /* dock mic */
-+ { 0x1b, 0x2121103f }, /* dock headphone */
-+ { }
-+ },
-+ .chained = true,
-+ .chain_id = ALC269_FIXUP_PINCFG_NO_HP_TO_LINEOUT
-+ },
-+ [ALC269_FIXUP_PINCFG_NO_HP_TO_LINEOUT] = {
-+ .type = ALC_FIXUP_FUNC,
-+ .v.func = alc269_fixup_pincfg_no_hp_to_lineout,
-+ },
- };
-
- static const struct snd_pci_quirk alc269_fixup_tbl[] = {
-@@ -5051,6 +5076,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
- SND_PCI_QUIRK(0x17aa, 0x21b8, "Thinkpad Edge 14", ALC269_FIXUP_SKU_IGNORE),
- SND_PCI_QUIRK(0x17aa, 0x21ca, "Thinkpad L412", ALC269_FIXUP_SKU_IGNORE),
- SND_PCI_QUIRK(0x17aa, 0x21e9, "Thinkpad Edge 15", ALC269_FIXUP_SKU_IGNORE),
-+ SND_PCI_QUIRK(0x17aa, 0x2203, "Thinkpad X230 Tablet", ALC269_FIXUP_LENOVO_DOCK),
- SND_PCI_QUIRK(0x17aa, 0x3bf8, "Quanta FL1", ALC269_FIXUP_QUANTA_MUTE),
- SND_PCI_QUIRK(0x17aa, 0x3bf8, "Lenovo Ideapd", ALC269_FIXUP_PCM_44K),
- SND_PCI_QUIRK(0x17aa, 0x9e54, "LENOVO NB", ALC269_FIXUP_LENOVO_EAPD),
-@@ -5109,6 +5135,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
- static const struct alc_model_fixup alc269_fixup_models[] = {
- {.id = ALC269_FIXUP_AMIC, .name = "laptop-amic"},
- {.id = ALC269_FIXUP_DMIC, .name = "laptop-dmic"},
-+ {.id = ALC269_FIXUP_LENOVO_DOCK, .name = "lenovo-dock"},
- {}
- };
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0007-cfg80211-fix-interface-combinations-check-for-ADHOC-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0007-cfg80211-fix-interface-combinations-check-for-ADHOC-.patch
deleted file mode 100644
index 3238c87..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0007-cfg80211-fix-interface-combinations-check-for-ADHOC-.patch
+++ /dev/null
@@ -1,67 +0,0 @@
-From 41cc15f973d21bd51d318e8f5d67512821561d89 Mon Sep 17 00:00:00 2001
-From: Liang Li <liang.li at windriver.com>
-Date: Thu, 2 Aug 2012 18:55:41 -0400
-Subject: [PATCH 07/70] cfg80211: fix interface combinations check for
- ADHOC(IBSS)
-
-partial of commit 8e8b41f9d8c8e63fc92f899ace8da91a490ac573 upstream.
-
-As part of commit 463454b5dbd8 ("cfg80211: fix interface
-combinations check"), this extra check was introduced:
-
- if ((all_iftypes & used_iftypes) != used_iftypes)
- goto cont;
-
-However, most wireless NIC drivers did not advertise ADHOC in
-wiphy.iface_combinations[i].limits[] and hence we'll get -EBUSY
-when we bring up a ADHOC wlan with commands similar to:
-
- # iwconfig wlan0 mode ad-hoc && ifconfig wlan0 up
-
-In commit 8e8b41f9d8c8e ("cfg80211: enforce lack of interface
-combinations"), the change below fixes the issue:
-
- if (total == 1)
- return 0;
-
-But it also introduces other dependencies for stable. For example,
-a full cherry pick of 8e8b41f9d8c8e would introduce additional
-regressions unless we also start cherry picking driver specific
-fixes like the following:
-
- 9b4760e ath5k: add possible wiphy interface combinations
- 1ae2fc2 mac80211_hwsim: advertise interface combinations
- 20c8e8d ath9k: add possible wiphy interface combinations
-
-And the purpose of the 'if (total == 1)' is to cover the specific
-use case (IBSS, adhoc) that was mentioned above. So we just pick
-the specific part out from 8e8b41f9d8c8e here.
-
-Doing so gives stable kernels a way to fix the change introduced
-by 463454b5dbd8, without having to make cherry picks specific to
-various NIC drivers.
-
-Signed-off-by: Liang Li <liang.li at windriver.com>
-Signed-off-by: Paul Gortmaker <paul.gortmaker at windriver.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/wireless/util.c | 3 +++
- 1 files changed, 3 insertions(+), 0 deletions(-)
-
-diff --git a/net/wireless/util.c b/net/wireless/util.c
-index 74d5292..b5e4c1c 100644
---- a/net/wireless/util.c
-+++ b/net/wireless/util.c
-@@ -981,6 +981,9 @@ int cfg80211_can_change_interface(struct cfg80211_registered_device *rdev,
- }
- mutex_unlock(&rdev->devlist_mtx);
-
-+ if (total == 1)
-+ return 0;
-+
- for (i = 0; i < rdev->wiphy.n_iface_combinations; i++) {
- const struct ieee80211_iface_combination *c;
- struct ieee80211_iface_limit *limits;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0008-m68k-Correct-the-Atari-ALLOWINT-definition.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0008-m68k-Correct-the-Atari-ALLOWINT-definition.patch
deleted file mode 100644
index a6dd032..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0008-m68k-Correct-the-Atari-ALLOWINT-definition.patch
+++ /dev/null
@@ -1,97 +0,0 @@
-From b7cced0ffff904b0803fad89348dec227ab3c79a Mon Sep 17 00:00:00 2001
-From: Mikael Pettersson <mikpe at it.uu.se>
-Date: Thu, 19 Apr 2012 00:53:36 +0200
-Subject: [PATCH 08/70] m68k: Correct the Atari ALLOWINT definition
-
-commit c663600584a596b5e66258cc10716fb781a5c2c9 upstream.
-
-Booting a 3.2, 3.3, or 3.4-rc4 kernel on an Atari using the
-`nfeth' ethernet device triggers a WARN_ONCE() in generic irq
-handling code on the first irq for that device:
-
-WARNING: at kernel/irq/handle.c:146 handle_irq_event_percpu+0x134/0x142()
-irq 3 handler nfeth_interrupt+0x0/0x194 enabled interrupts
-Modules linked in:
-Call Trace: [<000299b2>] warn_slowpath_common+0x48/0x6a
- [<000299c0>] warn_slowpath_common+0x56/0x6a
- [<00029a4c>] warn_slowpath_fmt+0x2a/0x32
- [<0005b34c>] handle_irq_event_percpu+0x134/0x142
- [<0005b34c>] handle_irq_event_percpu+0x134/0x142
- [<0000a584>] nfeth_interrupt+0x0/0x194
- [<001ba0a8>] schedule_preempt_disabled+0x0/0xc
- [<0005b37a>] handle_irq_event+0x20/0x2c
- [<0005add4>] generic_handle_irq+0x2c/0x3a
- [<00002ab6>] do_IRQ+0x20/0x32
- [<0000289e>] auto_irqhandler_fixup+0x4/0x6
- [<00003144>] cpu_idle+0x22/0x2e
- [<001b8a78>] printk+0x0/0x18
- [<0024d112>] start_kernel+0x37a/0x386
- [<0003021d>] __do_proc_dointvec+0xb1/0x366
- [<0003021d>] __do_proc_dointvec+0xb1/0x366
- [<0024c31e>] _sinittext+0x31e/0x9c0
-
-After invoking the irq's handler the kernel sees !irqs_disabled()
-and concludes that the handler erroneously enabled interrupts.
-
-However, debugging shows that !irqs_disabled() is true even before
-the handler is invoked, which indicates a problem in the platform
-code rather than the specific driver.
-
-The warning does not occur in 3.1 or older kernels.
-
-It turns out that the ALLOWINT definition for Atari is incorrect.
-
-The Atari definition of ALLOWINT is ~0x400, the stated purpose of
-that is to avoid taking HSYNC interrupts. irqs_disabled() returns
-true if the 3-bit ipl & 4 is non-zero. The nfeth interrupt runs at
-ipl 3 (it's autovector 3), but 3 & 4 is zero so irqs_disabled() is
-false, and the warning above is generated.
-
-When interrupts are explicitly disabled, ipl is set to 7. When they
-are enabled, ipl is masked with ALLOWINT. On Atari this will result
-in ipl = 3, which blocks interrupts at ipl 3 and below. So how come
-nfeth interrupts at ipl 3 are received at all? That's because ipl
-is reset to 2 by Atari-specific code in default_idle(), again with
-the stated purpose of blocking HSYNC interrupts. This discrepancy
-means that ipl 3 can remain blocked for longer than intended.
-
-Both default_idle() and falcon_hblhandler() identify HSYNC with
-ipl 2, and the "Atari ST/.../F030 Hardware Register Listing" agrees,
-but ALLOWINT is defined as if HSYNC was ipl 3.
-
-[As an experiment I modified default_idle() to reset ipl to 3, and
-as expected that resulted in all nfeth interrupts being blocked.]
-
-The fix is simple: define ALLOWINT as ~0x500 instead. This makes
-arch_local_irq_enable() consistent with default_idle(), and prevents
-the !irqs_disabled() problems for ipl 3 interrupts.
-
-Tested on Atari running in an Aranym VM.
-
-Signed-off-by: Mikael Pettersson <mikpe at it.uu.se>
-Tested-by: Michael Schmitz <schmitzmic at googlemail.com> (on Falcon/CT60)
-[Geert Uytterhoeven: This version applies to v3.2..v3.4.]
-Signed-off-by: Geert Uytterhoeven <geert at linux-m68k.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/m68k/include/asm/entry.h | 4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/arch/m68k/include/asm/entry.h b/arch/m68k/include/asm/entry.h
-index c3c5a86..8798ebc 100644
---- a/arch/m68k/include/asm/entry.h
-+++ b/arch/m68k/include/asm/entry.h
-@@ -33,8 +33,8 @@
-
- /* the following macro is used when enabling interrupts */
- #if defined(MACH_ATARI_ONLY)
-- /* block out HSYNC on the atari */
--#define ALLOWINT (~0x400)
-+ /* block out HSYNC = ipl 2 on the atari */
-+#define ALLOWINT (~0x500)
- #define MAX_NOINT_IPL 3
- #else
- /* portable version */
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0009-ene_ir-Fix-driver-initialisation.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0009-ene_ir-Fix-driver-initialisation.patch
deleted file mode 100644
index 472f534..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0009-ene_ir-Fix-driver-initialisation.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 07187b4a8471054cf6698ddc3d72ce6b45b8544e Mon Sep 17 00:00:00 2001
-From: Luis Henriques <luis.henriques at canonical.com>
-Date: Tue, 19 Jun 2012 11:29:49 -0300
-Subject: [PATCH 09/70] ene_ir: Fix driver initialisation
-
-commit b31b021988fed9e3741a46918f14ba9b063811db upstream.
-
-commit 9ef449c6b31bb6a8e6dedc24de475a3b8c79be20 ("[media] rc: Postpone ISR
-registration") fixed an early ISR registration on several drivers. It did
-however also introduced a bug by moving the invocation of pnp_port_start()
-to the end of the probe function.
-
-This patch fixes this issue by moving the invocation of pnp_port_start() to
-an earlier stage in the probe function.
-
-Cc: Jarod Wilson <jarod at redhat.com>
-Signed-off-by: Luis Henriques <luis.henriques at canonical.com>
-Signed-off-by: Mauro Carvalho Chehab <mchehab at redhat.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/media/rc/ene_ir.c | 3 ++-
- 1 files changed, 2 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/media/rc/ene_ir.c b/drivers/media/rc/ene_ir.c
-index bef5296..647dd95 100644
---- a/drivers/media/rc/ene_ir.c
-+++ b/drivers/media/rc/ene_ir.c
-@@ -1018,6 +1018,8 @@ static int ene_probe(struct pnp_dev *pnp_dev, const struct pnp_device_id *id)
-
- spin_lock_init(&dev->hw_lock);
-
-+ dev->hw_io = pnp_port_start(pnp_dev, 0);
-+
- pnp_set_drvdata(pnp_dev, dev);
- dev->pnp_dev = pnp_dev;
-
-@@ -1072,7 +1074,6 @@ static int ene_probe(struct pnp_dev *pnp_dev, const struct pnp_device_id *id)
-
- /* claim the resources */
- error = -EBUSY;
-- dev->hw_io = pnp_port_start(pnp_dev, 0);
- if (!request_region(dev->hw_io, ENE_IO_SIZE, ENE_DRIVER_NAME)) {
- dev->hw_io = -1;
- dev->irq = -1;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0010-nfsd4-our-filesystems-are-normally-case-sensitive.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0010-nfsd4-our-filesystems-are-normally-case-sensitive.patch
deleted file mode 100644
index de068e4..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0010-nfsd4-our-filesystems-are-normally-case-sensitive.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 6effad381853da1eb23ae2a04aac78009253ea74 Mon Sep 17 00:00:00 2001
-From: "J. Bruce Fields" <bfields at redhat.com>
-Date: Tue, 5 Jun 2012 16:52:06 -0400
-Subject: [PATCH 10/70] nfsd4: our filesystems are normally case sensitive
-
-commit 2930d381d22b9c56f40dd4c63a8fa59719ca2c3c upstream.
-
-Actually, xfs and jfs can optionally be case insensitive; we'll handle
-that case in later patches.
-
-Signed-off-by: J. Bruce Fields <bfields at redhat.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/nfsd/nfs4xdr.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c
-index 9cfa60a..87a1746 100644
---- a/fs/nfsd/nfs4xdr.c
-+++ b/fs/nfsd/nfs4xdr.c
-@@ -2236,7 +2236,7 @@ out_acl:
- if (bmval0 & FATTR4_WORD0_CASE_INSENSITIVE) {
- if ((buflen -= 4) < 0)
- goto out_resource;
-- WRITE32(1);
-+ WRITE32(0);
- }
- if (bmval0 & FATTR4_WORD0_CASE_PRESERVING) {
- if ((buflen -= 4) < 0)
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0011-random-Use-arch_get_random_int-instead-of-cycle-coun.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0011-random-Use-arch_get_random_int-instead-of-cycle-coun.patch
deleted file mode 100644
index 50e3091..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0011-random-Use-arch_get_random_int-instead-of-cycle-coun.patch
+++ /dev/null
@@ -1,69 +0,0 @@
-From 396b7a076c7496b8d98861bbebe701de9a3b795a Mon Sep 17 00:00:00 2001
-From: Linus Torvalds <torvalds at linux-foundation.org>
-Date: Thu, 22 Dec 2011 11:36:22 -0800
-Subject: [PATCH 11/70] random: Use arch_get_random_int instead of cycle
- counter if avail
-
-commit cf833d0b9937874b50ef2867c4e8badfd64948ce upstream.
-
-We still don't use rdrand in /dev/random, which just seems stupid. We
-accept the *cycle*counter* as a random input, but we don't accept
-rdrand? That's just broken.
-
-Sure, people can do things in user space (write to /dev/random, use
-rdrand in addition to /dev/random themselves etc etc), but that
-*still* seems to be a particularly stupid reason for saying "we
-shouldn't bother to try to do better in /dev/random".
-
-And even if somebody really doesn't trust rdrand as a source of random
-bytes, it seems singularly stupid to trust the cycle counter *more*.
-
-So I'd suggest the attached patch. I'm not going to even bother
-arguing that we should add more bits to the entropy estimate, because
-that's not the point - I don't care if /dev/random fills up slowly or
-not, I think it's just stupid to not use the bits we can get from
-rdrand and mix them into the strong randomness pool.
-
-Link: http://lkml.kernel.org/r/CA%2B55aFwn59N1=m651QAyTy-1gO1noGbK18zwKDwvwqnravA84A@mail.gmail.com
-Acked-by: "David S. Miller" <davem at davemloft.net>
-Acked-by: "Theodore Ts'o" <tytso at mit.edu>
-Acked-by: Herbert Xu <herbert at gondor.apana.org.au>
-Cc: Matt Mackall <mpm at selenic.com>
-Cc: Tony Luck <tony.luck at intel.com>
-Cc: Eric Dumazet <eric.dumazet at gmail.com>
-Signed-off-by: H. Peter Anvin <hpa at linux.intel.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/char/random.c | 8 ++++++--
- 1 files changed, 6 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/char/random.c b/drivers/char/random.c
-index 6035ab8..85da874 100644
---- a/drivers/char/random.c
-+++ b/drivers/char/random.c
-@@ -624,8 +624,8 @@ static struct timer_rand_state input_timer_state;
- static void add_timer_randomness(struct timer_rand_state *state, unsigned num)
- {
- struct {
-- cycles_t cycles;
- long jiffies;
-+ unsigned cycles;
- unsigned num;
- } sample;
- long delta, delta2, delta3;
-@@ -637,7 +637,11 @@ static void add_timer_randomness(struct timer_rand_state *state, unsigned num)
- goto out;
-
- sample.jiffies = jiffies;
-- sample.cycles = get_cycles();
-+
-+ /* Use arch random value, fall back to cycles */
-+ if (!arch_get_random_int(&sample.cycles))
-+ sample.cycles = get_cycles();
-+
- sample.num = num;
- mix_pool_bytes(&input_pool, &sample, sizeof(sample));
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0012-random-Use-arch-specific-RNG-to-initialize-the-entro.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0012-random-Use-arch-specific-RNG-to-initialize-the-entro.patch
deleted file mode 100644
index 623bc63..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0012-random-Use-arch-specific-RNG-to-initialize-the-entro.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From 5633ed2c64b766f280942d8c0906f7ae77cf2c20 Mon Sep 17 00:00:00 2001
-From: Theodore Ts'o <tytso at mit.edu>
-Date: Thu, 22 Dec 2011 16:28:01 -0500
-Subject: [PATCH 12/70] random: Use arch-specific RNG to initialize the
- entropy store
-
-commit 3e88bdff1c65145f7ba297ccec69c774afe4c785 upstream.
-
-If there is an architecture-specific random number generator (such as
-RDRAND for Intel architectures), use it to initialize /dev/random's
-entropy stores. Even in the worst case, if RDRAND is something like
-AES(NSA_KEY, counter++), it won't hurt, and it will definitely help
-against any other adversaries.
-
-Signed-off-by: "Theodore Ts'o" <tytso at mit.edu>
-Link: http://lkml.kernel.org/r/1324589281-31931-1-git-send-email-tytso@mit.edu
-Signed-off-by: H. Peter Anvin <hpa at linux.intel.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/char/random.c | 6 ++++++
- 1 files changed, 6 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/char/random.c b/drivers/char/random.c
-index 85da874..3079477 100644
---- a/drivers/char/random.c
-+++ b/drivers/char/random.c
-@@ -965,6 +965,7 @@ EXPORT_SYMBOL(get_random_bytes);
- */
- static void init_std_data(struct entropy_store *r)
- {
-+ int i;
- ktime_t now;
- unsigned long flags;
-
-@@ -974,6 +975,11 @@ static void init_std_data(struct entropy_store *r)
-
- now = ktime_get_real();
- mix_pool_bytes(r, &now, sizeof(now));
-+ for (i = r->poolinfo->poolwords; i; i--) {
-+ if (!arch_get_random_long(&flags))
-+ break;
-+ mix_pool_bytes(r, &flags, sizeof(flags));
-+ }
- mix_pool_bytes(r, utsname(), sizeof(*(utsname())));
- }
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0013-random-Adjust-the-number-of-loops-when-initializing.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0013-random-Adjust-the-number-of-loops-when-initializing.patch
deleted file mode 100644
index 03af3b2..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0013-random-Adjust-the-number-of-loops-when-initializing.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 451f20f81b1619b22ecd823bb962d76e05a4afa6 Mon Sep 17 00:00:00 2001
-From: "H. Peter Anvin" <hpa at linux.intel.com>
-Date: Mon, 16 Jan 2012 11:23:29 -0800
-Subject: [PATCH 13/70] random: Adjust the number of loops when initializing
-
-commit 2dac8e54f988ab58525505d7ef982493374433c3 upstream.
-
-When we are initializing using arch_get_random_long() we only need to
-loop enough times to touch all the bytes in the buffer; using
-poolwords for that does twice the number of operations necessary on a
-64-bit machine, since in the random number generator code "word" means
-32 bits.
-
-Signed-off-by: H. Peter Anvin <hpa at linux.intel.com>
-Cc: "Theodore Ts'o" <tytso at mit.edu>
-Link: http://lkml.kernel.org/r/1324589281-31931-1-git-send-email-tytso@mit.edu
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/char/random.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/char/random.c b/drivers/char/random.c
-index 3079477..9a2156d 100644
---- a/drivers/char/random.c
-+++ b/drivers/char/random.c
-@@ -975,7 +975,7 @@ static void init_std_data(struct entropy_store *r)
-
- now = ktime_get_real();
- mix_pool_bytes(r, &now, sizeof(now));
-- for (i = r->poolinfo->poolwords; i; i--) {
-+ for (i = r->poolinfo->POOLBYTES; i > 0; i -= sizeof flags) {
- if (!arch_get_random_long(&flags))
- break;
- mix_pool_bytes(r, &flags, sizeof(flags));
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0014-random-make-add_interrupt_randomness-do-something-sa.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0014-random-make-add_interrupt_randomness-do-something-sa.patch
deleted file mode 100644
index 70a2ed5..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0014-random-make-add_interrupt_randomness-do-something-sa.patch
+++ /dev/null
@@ -1,288 +0,0 @@
-From 7fdc8a8f6b3498487bee19b2f01969245f8ac85a Mon Sep 17 00:00:00 2001
-From: Theodore Ts'o <tytso at mit.edu>
-Date: Mon, 2 Jul 2012 07:52:16 -0400
-Subject: [PATCH 14/70] random: make 'add_interrupt_randomness()' do something
- sane
-
-commit 775f4b297b780601e61787b766f306ed3e1d23eb upstream.
-
-We've been moving away from add_interrupt_randomness() for various
-reasons: it's too expensive to do on every interrupt, and flooding the
-CPU with interrupts could theoretically cause bogus floods of entropy
-from a somewhat externally controllable source.
-
-This solves both problems by limiting the actual randomness addition
-to just once a second or after 64 interrupts, whicever comes first.
-During that time, the interrupt cycle data is buffered up in a per-cpu
-pool. Also, we make sure the the nonblocking pool used by urandom is
-initialized before we start feeding the normal input pool. This
-assures that /dev/urandom is returning unpredictable data as soon as
-possible.
-
-(Based on an original patch by Linus, but significantly modified by
-tytso.)
-
-Tested-by: Eric Wustrow <ewust at umich.edu>
-Reported-by: Eric Wustrow <ewust at umich.edu>
-Reported-by: Nadia Heninger <nadiah at cs.ucsd.edu>
-Reported-by: Zakir Durumeric <zakir at umich.edu>
-Reported-by: J. Alex Halderman <jhalderm at umich.edu>.
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: "Theodore Ts'o" <tytso at mit.edu>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/char/random.c | 103 +++++++++++++++++++++++++++++++++++++-------
- drivers/mfd/ab3100-core.c | 2 -
- include/linux/random.h | 2 +-
- kernel/irq/handle.c | 7 +--
- 4 files changed, 90 insertions(+), 24 deletions(-)
-
-diff --git a/drivers/char/random.c b/drivers/char/random.c
-index 9a2156d..a30df99 100644
---- a/drivers/char/random.c
-+++ b/drivers/char/random.c
-@@ -127,19 +127,15 @@
- *
- * void add_input_randomness(unsigned int type, unsigned int code,
- * unsigned int value);
-- * void add_interrupt_randomness(int irq);
-+ * void add_interrupt_randomness(int irq, int irq_flags);
- * void add_disk_randomness(struct gendisk *disk);
- *
- * add_input_randomness() uses the input layer interrupt timing, as well as
- * the event type information from the hardware.
- *
-- * add_interrupt_randomness() uses the inter-interrupt timing as random
-- * inputs to the entropy pool. Note that not all interrupts are good
-- * sources of randomness! For example, the timer interrupts is not a
-- * good choice, because the periodicity of the interrupts is too
-- * regular, and hence predictable to an attacker. Network Interface
-- * Controller interrupts are a better measure, since the timing of the
-- * NIC interrupts are more unpredictable.
-+ * add_interrupt_randomness() uses the interrupt timing as random
-+ * inputs to the entropy pool. Using the cycle counters and the irq source
-+ * as inputs, it feeds the randomness roughly once a second.
- *
- * add_disk_randomness() uses what amounts to the seek time of block
- * layer request events, on a per-disk_devt basis, as input to the
-@@ -248,6 +244,7 @@
- #include <linux/percpu.h>
- #include <linux/cryptohash.h>
- #include <linux/fips.h>
-+#include <linux/ptrace.h>
-
- #ifdef CONFIG_GENERIC_HARDIRQS
- # include <linux/irq.h>
-@@ -256,6 +253,7 @@
- #include <asm/processor.h>
- #include <asm/uaccess.h>
- #include <asm/irq.h>
-+#include <asm/irq_regs.h>
- #include <asm/io.h>
-
- /*
-@@ -421,7 +419,9 @@ struct entropy_store {
- spinlock_t lock;
- unsigned add_ptr;
- int entropy_count;
-+ int entropy_total;
- int input_rotate;
-+ unsigned int initialized:1;
- __u8 last_data[EXTRACT_SIZE];
- };
-
-@@ -454,6 +454,10 @@ static struct entropy_store nonblocking_pool = {
- .pool = nonblocking_pool_data
- };
-
-+static __u32 const twist_table[8] = {
-+ 0x00000000, 0x3b6e20c8, 0x76dc4190, 0x4db26158,
-+ 0xedb88320, 0xd6d6a3e8, 0x9b64c2b0, 0xa00ae278 };
-+
- /*
- * This function adds bytes into the entropy "pool". It does not
- * update the entropy estimate. The caller should call
-@@ -467,9 +471,6 @@ static struct entropy_store nonblocking_pool = {
- static void mix_pool_bytes_extract(struct entropy_store *r, const void *in,
- int nbytes, __u8 out[64])
- {
-- static __u32 const twist_table[8] = {
-- 0x00000000, 0x3b6e20c8, 0x76dc4190, 0x4db26158,
-- 0xedb88320, 0xd6d6a3e8, 0x9b64c2b0, 0xa00ae278 };
- unsigned long i, j, tap1, tap2, tap3, tap4, tap5;
- int input_rotate;
- int wordmask = r->poolinfo->poolwords - 1;
-@@ -528,6 +529,36 @@ static void mix_pool_bytes(struct entropy_store *r, const void *in, int bytes)
- mix_pool_bytes_extract(r, in, bytes, NULL);
- }
-
-+struct fast_pool {
-+ __u32 pool[4];
-+ unsigned long last;
-+ unsigned short count;
-+ unsigned char rotate;
-+ unsigned char last_timer_intr;
-+};
-+
-+/*
-+ * This is a fast mixing routine used by the interrupt randomness
-+ * collector. It's hardcoded for an 128 bit pool and assumes that any
-+ * locks that might be needed are taken by the caller.
-+ */
-+static void fast_mix(struct fast_pool *f, const void *in, int nbytes)
-+{
-+ const char *bytes = in;
-+ __u32 w;
-+ unsigned i = f->count;
-+ unsigned input_rotate = f->rotate;
-+
-+ while (nbytes--) {
-+ w = rol32(*bytes++, input_rotate & 31) ^ f->pool[i & 3] ^
-+ f->pool[(i + 1) & 3];
-+ f->pool[i & 3] = (w >> 3) ^ twist_table[w & 7];
-+ input_rotate += (i++ & 3) ? 7 : 14;
-+ }
-+ f->count = i;
-+ f->rotate = input_rotate;
-+}
-+
- /*
- * Credit (or debit) the entropy store with n bits of entropy
- */
-@@ -551,6 +582,12 @@ static void credit_entropy_bits(struct entropy_store *r, int nbits)
- entropy_count = r->poolinfo->POOLBITS;
- r->entropy_count = entropy_count;
-
-+ if (!r->initialized && nbits > 0) {
-+ r->entropy_total += nbits;
-+ if (r->entropy_total > 128)
-+ r->initialized = 1;
-+ }
-+
- /* should we wake readers? */
- if (r == &input_pool && entropy_count >= random_read_wakeup_thresh) {
- wake_up_interruptible(&random_read_wait);
-@@ -700,17 +737,48 @@ void add_input_randomness(unsigned int type, unsigned int code,
- }
- EXPORT_SYMBOL_GPL(add_input_randomness);
-
--void add_interrupt_randomness(int irq)
-+static DEFINE_PER_CPU(struct fast_pool, irq_randomness);
-+
-+void add_interrupt_randomness(int irq, int irq_flags)
- {
-- struct timer_rand_state *state;
-+ struct entropy_store *r;
-+ struct fast_pool *fast_pool = &__get_cpu_var(irq_randomness);
-+ struct pt_regs *regs = get_irq_regs();
-+ unsigned long now = jiffies;
-+ __u32 input[4], cycles = get_cycles();
-+
-+ input[0] = cycles ^ jiffies;
-+ input[1] = irq;
-+ if (regs) {
-+ __u64 ip = instruction_pointer(regs);
-+ input[2] = ip;
-+ input[3] = ip >> 32;
-+ }
-
-- state = get_timer_rand_state(irq);
-+ fast_mix(fast_pool, input, sizeof(input));
-
-- if (state == NULL)
-+ if ((fast_pool->count & 1023) &&
-+ !time_after(now, fast_pool->last + HZ))
- return;
-
-- DEBUG_ENT("irq event %d\n", irq);
-- add_timer_randomness(state, 0x100 + irq);
-+ fast_pool->last = now;
-+
-+ r = nonblocking_pool.initialized ? &input_pool : &nonblocking_pool;
-+ mix_pool_bytes(r, &fast_pool->pool, sizeof(fast_pool->pool));
-+ /*
-+ * If we don't have a valid cycle counter, and we see
-+ * back-to-back timer interrupts, then skip giving credit for
-+ * any entropy.
-+ */
-+ if (cycles == 0) {
-+ if (irq_flags & __IRQF_TIMER) {
-+ if (fast_pool->last_timer_intr)
-+ return;
-+ fast_pool->last_timer_intr = 1;
-+ } else
-+ fast_pool->last_timer_intr = 0;
-+ }
-+ credit_entropy_bits(r, 1);
- }
-
- #ifdef CONFIG_BLOCK
-@@ -971,6 +1039,7 @@ static void init_std_data(struct entropy_store *r)
-
- spin_lock_irqsave(&r->lock, flags);
- r->entropy_count = 0;
-+ r->entropy_total = 0;
- spin_unlock_irqrestore(&r->lock, flags);
-
- now = ktime_get_real();
-diff --git a/drivers/mfd/ab3100-core.c b/drivers/mfd/ab3100-core.c
-index 60107ee..4eec7b7 100644
---- a/drivers/mfd/ab3100-core.c
-+++ b/drivers/mfd/ab3100-core.c
-@@ -409,8 +409,6 @@ static irqreturn_t ab3100_irq_handler(int irq, void *data)
- u32 fatevent;
- int err;
-
-- add_interrupt_randomness(irq);
--
- err = ab3100_get_register_page_interruptible(ab3100, AB3100_EVENTA1,
- event_regs, 3);
- if (err)
-diff --git a/include/linux/random.h b/include/linux/random.h
-index 8f74538..6ef39d7 100644
---- a/include/linux/random.h
-+++ b/include/linux/random.h
-@@ -52,7 +52,7 @@ extern void rand_initialize_irq(int irq);
-
- extern void add_input_randomness(unsigned int type, unsigned int code,
- unsigned int value);
--extern void add_interrupt_randomness(int irq);
-+extern void add_interrupt_randomness(int irq, int irq_flags);
-
- extern void get_random_bytes(void *buf, int nbytes);
- void generate_random_uuid(unsigned char uuid_out[16]);
-diff --git a/kernel/irq/handle.c b/kernel/irq/handle.c
-index 470d08c..10e0772 100644
---- a/kernel/irq/handle.c
-+++ b/kernel/irq/handle.c
-@@ -117,7 +117,7 @@ irqreturn_t
- handle_irq_event_percpu(struct irq_desc *desc, struct irqaction *action)
- {
- irqreturn_t retval = IRQ_NONE;
-- unsigned int random = 0, irq = desc->irq_data.irq;
-+ unsigned int flags = 0, irq = desc->irq_data.irq;
-
- do {
- irqreturn_t res;
-@@ -145,7 +145,7 @@ handle_irq_event_percpu(struct irq_desc *desc, struct irqaction *action)
-
- /* Fall through to add to randomness */
- case IRQ_HANDLED:
-- random |= action->flags;
-+ flags |= action->flags;
- break;
-
- default:
-@@ -156,8 +156,7 @@ handle_irq_event_percpu(struct irq_desc *desc, struct irqaction *action)
- action = action->next;
- } while (action);
-
-- if (random & IRQF_SAMPLE_RANDOM)
-- add_interrupt_randomness(irq);
-+ add_interrupt_randomness(irq, flags);
-
- if (!noirqdebug)
- note_interrupt(irq, desc, retval);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0015-random-use-lockless-techniques-in-the-interrupt-path.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0015-random-use-lockless-techniques-in-the-interrupt-path.patch
deleted file mode 100644
index 7638e84..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0015-random-use-lockless-techniques-in-the-interrupt-path.patch
+++ /dev/null
@@ -1,245 +0,0 @@
-From 121c36f0542c9e8e3066652a19d4cfa838e28139 Mon Sep 17 00:00:00 2001
-From: Theodore Ts'o <tytso at mit.edu>
-Date: Wed, 4 Jul 2012 10:38:30 -0400
-Subject: [PATCH 15/70] random: use lockless techniques in the interrupt path
-
-commit 902c098a3663de3fa18639efbb71b6080f0bcd3c upstream.
-
-The real-time Linux folks don't like add_interrupt_randomness() taking
-a spinlock since it is called in the low-level interrupt routine.
-This also allows us to reduce the overhead in the fast path, for the
-random driver, which is the interrupt collection path.
-
-Signed-off-by: "Theodore Ts'o" <tytso at mit.edu>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/char/random.c | 78 ++++++++++++++++++++++++------------------------
- 1 files changed, 39 insertions(+), 39 deletions(-)
-
-diff --git a/drivers/char/random.c b/drivers/char/random.c
-index a30df99..8ac7e05 100644
---- a/drivers/char/random.c
-+++ b/drivers/char/random.c
-@@ -418,9 +418,9 @@ struct entropy_store {
- /* read-write data: */
- spinlock_t lock;
- unsigned add_ptr;
-+ unsigned input_rotate;
- int entropy_count;
- int entropy_total;
-- int input_rotate;
- unsigned int initialized:1;
- __u8 last_data[EXTRACT_SIZE];
- };
-@@ -468,26 +468,24 @@ static __u32 const twist_table[8] = {
- * it's cheap to do so and helps slightly in the expected case where
- * the entropy is concentrated in the low-order bits.
- */
--static void mix_pool_bytes_extract(struct entropy_store *r, const void *in,
-- int nbytes, __u8 out[64])
-+static void __mix_pool_bytes(struct entropy_store *r, const void *in,
-+ int nbytes, __u8 out[64])
- {
- unsigned long i, j, tap1, tap2, tap3, tap4, tap5;
- int input_rotate;
- int wordmask = r->poolinfo->poolwords - 1;
- const char *bytes = in;
- __u32 w;
-- unsigned long flags;
-
-- /* Taps are constant, so we can load them without holding r->lock. */
- tap1 = r->poolinfo->tap1;
- tap2 = r->poolinfo->tap2;
- tap3 = r->poolinfo->tap3;
- tap4 = r->poolinfo->tap4;
- tap5 = r->poolinfo->tap5;
-
-- spin_lock_irqsave(&r->lock, flags);
-- input_rotate = r->input_rotate;
-- i = r->add_ptr;
-+ smp_rmb();
-+ input_rotate = ACCESS_ONCE(r->input_rotate);
-+ i = ACCESS_ONCE(r->add_ptr);
-
- /* mix one byte at a time to simplify size handling and churn faster */
- while (nbytes--) {
-@@ -514,19 +512,23 @@ static void mix_pool_bytes_extract(struct entropy_store *r, const void *in,
- input_rotate += i ? 7 : 14;
- }
-
-- r->input_rotate = input_rotate;
-- r->add_ptr = i;
-+ ACCESS_ONCE(r->input_rotate) = input_rotate;
-+ ACCESS_ONCE(r->add_ptr) = i;
-+ smp_wmb();
-
- if (out)
- for (j = 0; j < 16; j++)
- ((__u32 *)out)[j] = r->pool[(i - j) & wordmask];
--
-- spin_unlock_irqrestore(&r->lock, flags);
- }
-
--static void mix_pool_bytes(struct entropy_store *r, const void *in, int bytes)
-+static void mix_pool_bytes(struct entropy_store *r, const void *in,
-+ int nbytes, __u8 out[64])
- {
-- mix_pool_bytes_extract(r, in, bytes, NULL);
-+ unsigned long flags;
-+
-+ spin_lock_irqsave(&r->lock, flags);
-+ __mix_pool_bytes(r, in, nbytes, out);
-+ spin_unlock_irqrestore(&r->lock, flags);
- }
-
- struct fast_pool {
-@@ -564,23 +566,22 @@ static void fast_mix(struct fast_pool *f, const void *in, int nbytes)
- */
- static void credit_entropy_bits(struct entropy_store *r, int nbits)
- {
-- unsigned long flags;
-- int entropy_count;
-+ int entropy_count, orig;
-
- if (!nbits)
- return;
-
-- spin_lock_irqsave(&r->lock, flags);
--
- DEBUG_ENT("added %d entropy credits to %s\n", nbits, r->name);
-- entropy_count = r->entropy_count;
-+retry:
-+ entropy_count = orig = ACCESS_ONCE(r->entropy_count);
- entropy_count += nbits;
- if (entropy_count < 0) {
- DEBUG_ENT("negative entropy/overflow\n");
- entropy_count = 0;
- } else if (entropy_count > r->poolinfo->POOLBITS)
- entropy_count = r->poolinfo->POOLBITS;
-- r->entropy_count = entropy_count;
-+ if (cmpxchg(&r->entropy_count, orig, entropy_count) != orig)
-+ goto retry;
-
- if (!r->initialized && nbits > 0) {
- r->entropy_total += nbits;
-@@ -593,7 +594,6 @@ static void credit_entropy_bits(struct entropy_store *r, int nbits)
- wake_up_interruptible(&random_read_wait);
- kill_fasync(&fasync, SIGIO, POLL_IN);
- }
-- spin_unlock_irqrestore(&r->lock, flags);
- }
-
- /*********************************************************************
-@@ -680,7 +680,7 @@ static void add_timer_randomness(struct timer_rand_state *state, unsigned num)
- sample.cycles = get_cycles();
-
- sample.num = num;
-- mix_pool_bytes(&input_pool, &sample, sizeof(sample));
-+ mix_pool_bytes(&input_pool, &sample, sizeof(sample), NULL);
-
- /*
- * Calculate number of bits of randomness we probably added.
-@@ -764,7 +764,7 @@ void add_interrupt_randomness(int irq, int irq_flags)
- fast_pool->last = now;
-
- r = nonblocking_pool.initialized ? &input_pool : &nonblocking_pool;
-- mix_pool_bytes(r, &fast_pool->pool, sizeof(fast_pool->pool));
-+ __mix_pool_bytes(r, &fast_pool->pool, sizeof(fast_pool->pool), NULL);
- /*
- * If we don't have a valid cycle counter, and we see
- * back-to-back timer interrupts, then skip giving credit for
-@@ -829,7 +829,7 @@ static void xfer_secondary_pool(struct entropy_store *r, size_t nbytes)
-
- bytes = extract_entropy(r->pull, tmp, bytes,
- random_read_wakeup_thresh / 8, rsvd);
-- mix_pool_bytes(r, tmp, bytes);
-+ mix_pool_bytes(r, tmp, bytes, NULL);
- credit_entropy_bits(r, bytes*8);
- }
- }
-@@ -890,9 +890,11 @@ static void extract_buf(struct entropy_store *r, __u8 *out)
- int i;
- __u32 hash[5], workspace[SHA_WORKSPACE_WORDS];
- __u8 extract[64];
-+ unsigned long flags;
-
- /* Generate a hash across the pool, 16 words (512 bits) at a time */
- sha_init(hash);
-+ spin_lock_irqsave(&r->lock, flags);
- for (i = 0; i < r->poolinfo->poolwords; i += 16)
- sha_transform(hash, (__u8 *)(r->pool + i), workspace);
-
-@@ -905,7 +907,8 @@ static void extract_buf(struct entropy_store *r, __u8 *out)
- * brute-forcing the feedback as hard as brute-forcing the
- * hash.
- */
-- mix_pool_bytes_extract(r, hash, sizeof(hash), extract);
-+ __mix_pool_bytes(r, hash, sizeof(hash), extract);
-+ spin_unlock_irqrestore(&r->lock, flags);
-
- /*
- * To avoid duplicates, we atomically extract a portion of the
-@@ -928,11 +931,10 @@ static void extract_buf(struct entropy_store *r, __u8 *out)
- }
-
- static ssize_t extract_entropy(struct entropy_store *r, void *buf,
-- size_t nbytes, int min, int reserved)
-+ size_t nbytes, int min, int reserved)
- {
- ssize_t ret = 0, i;
- __u8 tmp[EXTRACT_SIZE];
-- unsigned long flags;
-
- xfer_secondary_pool(r, nbytes);
- nbytes = account(r, nbytes, min, reserved);
-@@ -941,6 +943,8 @@ static ssize_t extract_entropy(struct entropy_store *r, void *buf,
- extract_buf(r, tmp);
-
- if (fips_enabled) {
-+ unsigned long flags;
-+
- spin_lock_irqsave(&r->lock, flags);
- if (!memcmp(tmp, r->last_data, EXTRACT_SIZE))
- panic("Hardware RNG duplicated output!\n");
-@@ -1034,22 +1038,18 @@ EXPORT_SYMBOL(get_random_bytes);
- static void init_std_data(struct entropy_store *r)
- {
- int i;
-- ktime_t now;
-- unsigned long flags;
-+ ktime_t now = ktime_get_real();
-+ unsigned long rv;
-
-- spin_lock_irqsave(&r->lock, flags);
- r->entropy_count = 0;
- r->entropy_total = 0;
-- spin_unlock_irqrestore(&r->lock, flags);
--
-- now = ktime_get_real();
-- mix_pool_bytes(r, &now, sizeof(now));
-- for (i = r->poolinfo->POOLBYTES; i > 0; i -= sizeof flags) {
-- if (!arch_get_random_long(&flags))
-+ mix_pool_bytes(r, &now, sizeof(now), NULL);
-+ for (i = r->poolinfo->POOLBYTES; i > 0; i -= sizeof(rv)) {
-+ if (!arch_get_random_long(&rv))
- break;
-- mix_pool_bytes(r, &flags, sizeof(flags));
-+ mix_pool_bytes(r, &rv, sizeof(rv), NULL);
- }
-- mix_pool_bytes(r, utsname(), sizeof(*(utsname())));
-+ mix_pool_bytes(r, utsname(), sizeof(*(utsname())), NULL);
- }
-
- static int rand_initialize(void)
-@@ -1186,7 +1186,7 @@ write_pool(struct entropy_store *r, const char __user *buffer, size_t count)
- count -= bytes;
- p += bytes;
-
-- mix_pool_bytes(r, buf, bytes);
-+ mix_pool_bytes(r, buf, bytes, NULL);
- cond_resched();
- }
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0016-random-create-add_device_randomness-interface.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0016-random-create-add_device_randomness-interface.patch
deleted file mode 100644
index 78b8dcb..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0016-random-create-add_device_randomness-interface.patch
+++ /dev/null
@@ -1,93 +0,0 @@
-From 683cefe6594a919e89ca7d7d076ca753ced67679 Mon Sep 17 00:00:00 2001
-From: Linus Torvalds <torvalds at linux-foundation.org>
-Date: Wed, 4 Jul 2012 11:16:01 -0400
-Subject: [PATCH 16/70] random: create add_device_randomness() interface
-
-commit a2080a67abe9e314f9e9c2cc3a4a176e8a8f8793 upstream.
-
-Add a new interface, add_device_randomness() for adding data to the
-random pool that is likely to differ between two devices (or possibly
-even per boot). This would be things like MAC addresses or serial
-numbers, or the read-out of the RTC. This does *not* add any actual
-entropy to the pool, but it initializes the pool to different values
-for devices that might otherwise be identical and have very little
-entropy available to them (particularly common in the embedded world).
-
-[ Modified by tytso to mix in a timestamp, since there may be some
- variability caused by the time needed to detect/configure the hardware
- in question. ]
-
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: "Theodore Ts'o" <tytso at mit.edu>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/char/random.c | 28 ++++++++++++++++++++++++++++
- include/linux/random.h | 1 +
- 2 files changed, 29 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/char/random.c b/drivers/char/random.c
-index 8ac7e05..4446a27 100644
---- a/drivers/char/random.c
-+++ b/drivers/char/random.c
-@@ -125,11 +125,20 @@
- * The current exported interfaces for gathering environmental noise
- * from the devices are:
- *
-+ * void add_device_randomness(const void *buf, unsigned int size);
- * void add_input_randomness(unsigned int type, unsigned int code,
- * unsigned int value);
- * void add_interrupt_randomness(int irq, int irq_flags);
- * void add_disk_randomness(struct gendisk *disk);
- *
-+ * add_device_randomness() is for adding data to the random pool that
-+ * is likely to differ between two devices (or possibly even per boot).
-+ * This would be things like MAC addresses or serial numbers, or the
-+ * read-out of the RTC. This does *not* add any actual entropy to the
-+ * pool, but it initializes the pool to different values for devices
-+ * that might otherwise be identical and have very little entropy
-+ * available to them (particularly common in the embedded world).
-+ *
- * add_input_randomness() uses the input layer interrupt timing, as well as
- * the event type information from the hardware.
- *
-@@ -646,6 +655,25 @@ static void set_timer_rand_state(unsigned int irq,
- }
- #endif
-
-+/*
-+ * Add device- or boot-specific data to the input and nonblocking
-+ * pools to help initialize them to unique values.
-+ *
-+ * None of this adds any entropy, it is meant to avoid the
-+ * problem of the nonblocking pool having similar initial state
-+ * across largely identical devices.
-+ */
-+void add_device_randomness(const void *buf, unsigned int size)
-+{
-+ unsigned long time = get_cycles() ^ jiffies;
-+
-+ mix_pool_bytes(&input_pool, buf, size, NULL);
-+ mix_pool_bytes(&input_pool, &time, sizeof(time), NULL);
-+ mix_pool_bytes(&nonblocking_pool, buf, size, NULL);
-+ mix_pool_bytes(&nonblocking_pool, &time, sizeof(time), NULL);
-+}
-+EXPORT_SYMBOL(add_device_randomness);
-+
- static struct timer_rand_state input_timer_state;
-
- /*
-diff --git a/include/linux/random.h b/include/linux/random.h
-index 6ef39d7..e14b438 100644
---- a/include/linux/random.h
-+++ b/include/linux/random.h
-@@ -50,6 +50,7 @@ struct rnd_state {
-
- extern void rand_initialize_irq(int irq);
-
-+extern void add_device_randomness(const void *, unsigned int);
- extern void add_input_randomness(unsigned int type, unsigned int code,
- unsigned int value);
- extern void add_interrupt_randomness(int irq, int irq_flags);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0017-usb-feed-USB-device-information-to-the-dev-random-dr.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0017-usb-feed-USB-device-information-to-the-dev-random-dr.patch
deleted file mode 100644
index a2e4aea..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0017-usb-feed-USB-device-information-to-the-dev-random-dr.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From 578a5228a14f84af6f10050b84e3da331b0c37eb Mon Sep 17 00:00:00 2001
-From: Theodore Ts'o <tytso at mit.edu>
-Date: Wed, 4 Jul 2012 11:22:20 -0400
-Subject: [PATCH 17/70] usb: feed USB device information to the /dev/random
- driver
-
-commit b04b3156a20d395a7faa8eed98698d1e17a36000 upstream.
-
-Send the USB device's serial, product, and manufacturer strings to the
-/dev/random driver to help seed its pools.
-
-Cc: Linus Torvalds <torvalds at linux-foundation.org>
-Acked-by: Greg KH <greg at kroah.com>
-Signed-off-by: "Theodore Ts'o" <tytso at mit.edu>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/core/hub.c | 9 +++++++++
- 1 files changed, 9 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
-index 2bc736f..6a4a8c9 100644
---- a/drivers/usb/core/hub.c
-+++ b/drivers/usb/core/hub.c
-@@ -24,6 +24,7 @@
- #include <linux/kthread.h>
- #include <linux/mutex.h>
- #include <linux/freezer.h>
-+#include <linux/random.h>
-
- #include <asm/uaccess.h>
- #include <asm/byteorder.h>
-@@ -1897,6 +1898,14 @@ int usb_new_device(struct usb_device *udev)
- /* Tell the world! */
- announce_device(udev);
-
-+ if (udev->serial)
-+ add_device_randomness(udev->serial, strlen(udev->serial));
-+ if (udev->product)
-+ add_device_randomness(udev->product, strlen(udev->product));
-+ if (udev->manufacturer)
-+ add_device_randomness(udev->manufacturer,
-+ strlen(udev->manufacturer));
-+
- device_enable_async_suspend(&udev->dev);
- /* Register the device. The device driver is responsible
- * for configuring the device and invoking the add-device
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0018-net-feed-dev-random-with-the-MAC-address-when-regist.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0018-net-feed-dev-random-with-the-MAC-address-when-regist.patch
deleted file mode 100644
index f2dd6aa..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0018-net-feed-dev-random-with-the-MAC-address-when-regist.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From c59aebeab04a154ab9b93a79303be44d5d382059 Mon Sep 17 00:00:00 2001
-From: Theodore Ts'o <tytso at mit.edu>
-Date: Wed, 4 Jul 2012 21:23:25 -0400
-Subject: [PATCH 18/70] net: feed /dev/random with the MAC address when
- registering a device
-
-commit 7bf2357524408b97fec58344caf7397f8140c3fd upstream.
-
-Cc: David Miller <davem at davemloft.net>
-Cc: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: "Theodore Ts'o" <tytso at mit.edu>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/core/dev.c | 3 +++
- net/core/rtnetlink.c | 1 +
- 2 files changed, 4 insertions(+), 0 deletions(-)
-
-diff --git a/net/core/dev.c b/net/core/dev.c
-index 5738654..4b18703 100644
---- a/net/core/dev.c
-+++ b/net/core/dev.c
-@@ -1177,6 +1177,7 @@ static int __dev_open(struct net_device *dev)
- net_dmaengine_get();
- dev_set_rx_mode(dev);
- dev_activate(dev);
-+ add_device_randomness(dev->dev_addr, dev->addr_len);
- }
-
- return ret;
-@@ -4841,6 +4842,7 @@ int dev_set_mac_address(struct net_device *dev, struct sockaddr *sa)
- err = ops->ndo_set_mac_address(dev, sa);
- if (!err)
- call_netdevice_notifiers(NETDEV_CHANGEADDR, dev);
-+ add_device_randomness(dev->dev_addr, dev->addr_len);
- return err;
- }
- EXPORT_SYMBOL(dev_set_mac_address);
-@@ -5621,6 +5623,7 @@ int register_netdevice(struct net_device *dev)
- dev_init_scheduler(dev);
- dev_hold(dev);
- list_netdevice(dev);
-+ add_device_randomness(dev->dev_addr, dev->addr_len);
-
- /* Notify protocols, that a new device appeared. */
- ret = call_netdevice_notifiers(NETDEV_REGISTER, dev);
-diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c
-index 2ef859a..05842ab 100644
---- a/net/core/rtnetlink.c
-+++ b/net/core/rtnetlink.c
-@@ -1354,6 +1354,7 @@ static int do_setlink(struct net_device *dev, struct ifinfomsg *ifm,
- goto errout;
- send_addr_notify = 1;
- modified = 1;
-+ add_device_randomness(dev->dev_addr, dev->addr_len);
- }
-
- if (tb[IFLA_MTU]) {
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0019-random-use-the-arch-specific-rng-in-xfer_secondary_p.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0019-random-use-the-arch-specific-rng-in-xfer_secondary_p.patch
deleted file mode 100644
index a69ffbe..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0019-random-use-the-arch-specific-rng-in-xfer_secondary_p.patch
+++ /dev/null
@@ -1,91 +0,0 @@
-From 8692924706ea929d1176354912971149133ab768 Mon Sep 17 00:00:00 2001
-From: Theodore Ts'o <tytso at mit.edu>
-Date: Thu, 5 Jul 2012 10:21:01 -0400
-Subject: [PATCH 19/70] random: use the arch-specific rng in
- xfer_secondary_pool
-
-commit e6d4947b12e8ad947add1032dd754803c6004824 upstream.
-
-If the CPU supports a hardware random number generator, use it in
-xfer_secondary_pool(), where it will significantly improve things and
-where we can afford it.
-
-Also, remove the use of the arch-specific rng in
-add_timer_randomness(), since the call is significantly slower than
-get_cycles(), and we're much better off using it in
-xfer_secondary_pool() anyway.
-
-Signed-off-by: "Theodore Ts'o" <tytso at mit.edu>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/char/random.c | 25 ++++++++++++++++---------
- 1 files changed, 16 insertions(+), 9 deletions(-)
-
-diff --git a/drivers/char/random.c b/drivers/char/random.c
-index 4446a27..4a83220 100644
---- a/drivers/char/random.c
-+++ b/drivers/char/random.c
-@@ -254,6 +254,7 @@
- #include <linux/cryptohash.h>
- #include <linux/fips.h>
- #include <linux/ptrace.h>
-+#include <linux/kmemcheck.h>
-
- #ifdef CONFIG_GENERIC_HARDIRQS
- # include <linux/irq.h>
-@@ -702,11 +703,7 @@ static void add_timer_randomness(struct timer_rand_state *state, unsigned num)
- goto out;
-
- sample.jiffies = jiffies;
--
-- /* Use arch random value, fall back to cycles */
-- if (!arch_get_random_int(&sample.cycles))
-- sample.cycles = get_cycles();
--
-+ sample.cycles = get_cycles();
- sample.num = num;
- mix_pool_bytes(&input_pool, &sample, sizeof(sample), NULL);
-
-@@ -838,7 +835,11 @@ static ssize_t extract_entropy(struct entropy_store *r, void *buf,
- */
- static void xfer_secondary_pool(struct entropy_store *r, size_t nbytes)
- {
-- __u32 tmp[OUTPUT_POOL_WORDS];
-+ union {
-+ __u32 tmp[OUTPUT_POOL_WORDS];
-+ long hwrand[4];
-+ } u;
-+ int i;
-
- if (r->pull && r->entropy_count < nbytes * 8 &&
- r->entropy_count < r->poolinfo->POOLBITS) {
-@@ -849,17 +850,23 @@ static void xfer_secondary_pool(struct entropy_store *r, size_t nbytes)
- /* pull at least as many as BYTES as wakeup BITS */
- bytes = max_t(int, bytes, random_read_wakeup_thresh / 8);
- /* but never more than the buffer size */
-- bytes = min_t(int, bytes, sizeof(tmp));
-+ bytes = min_t(int, bytes, sizeof(u.tmp));
-
- DEBUG_ENT("going to reseed %s with %d bits "
- "(%d of %d requested)\n",
- r->name, bytes * 8, nbytes * 8, r->entropy_count);
-
-- bytes = extract_entropy(r->pull, tmp, bytes,
-+ bytes = extract_entropy(r->pull, u.tmp, bytes,
- random_read_wakeup_thresh / 8, rsvd);
-- mix_pool_bytes(r, tmp, bytes, NULL);
-+ mix_pool_bytes(r, u.tmp, bytes, NULL);
- credit_entropy_bits(r, bytes*8);
- }
-+ kmemcheck_mark_initialized(&u.hwrand, sizeof(u.hwrand));
-+ for (i = 0; i < 4; i++)
-+ if (arch_get_random_long(&u.hwrand[i]))
-+ break;
-+ if (i)
-+ mix_pool_bytes(r, &u.hwrand, sizeof(u.hwrand), 0);
- }
-
- /*
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0020-random-add-new-get_random_bytes_arch-function.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0020-random-add-new-get_random_bytes_arch-function.patch
deleted file mode 100644
index 28ba75e..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0020-random-add-new-get_random_bytes_arch-function.patch
+++ /dev/null
@@ -1,95 +0,0 @@
-From 6ce374197d352474ff8514805efb43436c9cf87b Mon Sep 17 00:00:00 2001
-From: Theodore Ts'o <tytso at mit.edu>
-Date: Thu, 5 Jul 2012 10:35:23 -0400
-Subject: [PATCH 20/70] random: add new get_random_bytes_arch() function
-
-commit c2557a303ab6712bb6e09447df828c557c710ac9 upstream.
-
-Create a new function, get_random_bytes_arch() which will use the
-architecture-specific hardware random number generator if it is
-present. Change get_random_bytes() to not use the HW RNG, even if it
-is avaiable.
-
-The reason for this is that the hw random number generator is fast (if
-it is present), but it requires that we trust the hardware
-manufacturer to have not put in a back door. (For example, an
-increasing counter encrypted by an AES key known to the NSA.)
-
-It's unlikely that Intel (for example) was paid off by the US
-Government to do this, but it's impossible for them to prove otherwise
----
- drivers/char/random.c | 29 ++++++++++++++++++++++++-----
- include/linux/random.h | 1 +
- 2 files changed, 25 insertions(+), 5 deletions(-)
-
-diff --git a/drivers/char/random.c b/drivers/char/random.c
-index 4a83220..f3200bf 100644
---- a/drivers/char/random.c
-+++ b/drivers/char/random.c
-@@ -1038,17 +1038,34 @@ static ssize_t extract_entropy_user(struct entropy_store *r, void __user *buf,
-
- /*
- * This function is the exported kernel interface. It returns some
-- * number of good random numbers, suitable for seeding TCP sequence
-- * numbers, etc.
-+ * number of good random numbers, suitable for key generation, seeding
-+ * TCP sequence numbers, etc. It does not use the hw random number
-+ * generator, if available; use get_random_bytes_arch() for that.
- */
- void get_random_bytes(void *buf, int nbytes)
- {
-+ extract_entropy(&nonblocking_pool, buf, nbytes, 0, 0);
-+}
-+EXPORT_SYMBOL(get_random_bytes);
-+
-+/*
-+ * This function will use the architecture-specific hardware random
-+ * number generator if it is available. The arch-specific hw RNG will
-+ * almost certainly be faster than what we can do in software, but it
-+ * is impossible to verify that it is implemented securely (as
-+ * opposed, to, say, the AES encryption of a sequence number using a
-+ * key known by the NSA). So it's useful if we need the speed, but
-+ * only if we're willing to trust the hardware manufacturer not to
-+ * have put in a back door.
-+ */
-+void get_random_bytes_arch(void *buf, int nbytes)
-+{
- char *p = buf;
-
- while (nbytes) {
- unsigned long v;
- int chunk = min(nbytes, (int)sizeof(unsigned long));
--
-+
- if (!arch_get_random_long(&v))
- break;
-
-@@ -1057,9 +1074,11 @@ void get_random_bytes(void *buf, int nbytes)
- nbytes -= chunk;
- }
-
-- extract_entropy(&nonblocking_pool, p, nbytes, 0, 0);
-+ if (nbytes)
-+ extract_entropy(&nonblocking_pool, p, nbytes, 0, 0);
- }
--EXPORT_SYMBOL(get_random_bytes);
-+EXPORT_SYMBOL(get_random_bytes_arch);
-+
-
- /*
- * init_std_data - initialize pool with system data
-diff --git a/include/linux/random.h b/include/linux/random.h
-index e14b438..29e217a 100644
---- a/include/linux/random.h
-+++ b/include/linux/random.h
-@@ -56,6 +56,7 @@ extern void add_input_randomness(unsigned int type, unsigned int code,
- extern void add_interrupt_randomness(int irq, int irq_flags);
-
- extern void get_random_bytes(void *buf, int nbytes);
-+extern void get_random_bytes_arch(void *buf, int nbytes);
- void generate_random_uuid(unsigned char uuid_out[16]);
-
- #ifndef MODULE
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0021-rtc-wm831x-Feed-the-write-counter-into-device_add_ra.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0021-rtc-wm831x-Feed-the-write-counter-into-device_add_ra.patch
deleted file mode 100644
index 567d064..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0021-rtc-wm831x-Feed-the-write-counter-into-device_add_ra.patch
+++ /dev/null
@@ -1,75 +0,0 @@
-From 70392d9bb5b688d5e6ccb6052d1b6a953942aea8 Mon Sep 17 00:00:00 2001
-From: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Date: Thu, 5 Jul 2012 20:19:17 +0000
-Subject: [PATCH 21/70] rtc: wm831x: Feed the write counter into
- device_add_randomness()
-
-commit 9dccf55f4cb011a7552a8a2749a580662f5ed8ed upstream.
-
-The tamper evident features of the RTC include the "write counter" which
-is a pseudo-random number regenerated whenever we set the RTC. Since this
-value is unpredictable it should provide some useful seeding to the random
-number generator.
-
-Only do this on boot since the goal is to seed the pool rather than add
-useful entropy.
-
-Signed-off-by: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Signed-off-by: Theodore Ts'o <tytso at mit.edu>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/rtc/rtc-wm831x.c | 24 +++++++++++++++++++++++-
- 1 files changed, 23 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/rtc/rtc-wm831x.c b/drivers/rtc/rtc-wm831x.c
-index bdc909b..f3c2110 100644
---- a/drivers/rtc/rtc-wm831x.c
-+++ b/drivers/rtc/rtc-wm831x.c
-@@ -24,7 +24,7 @@
- #include <linux/mfd/wm831x/core.h>
- #include <linux/delay.h>
- #include <linux/platform_device.h>
--
-+#include <linux/random.h>
-
- /*
- * R16416 (0x4020) - RTC Write Counter
-@@ -96,6 +96,26 @@ struct wm831x_rtc {
- unsigned int alarm_enabled:1;
- };
-
-+static void wm831x_rtc_add_randomness(struct wm831x *wm831x)
-+{
-+ int ret;
-+ u16 reg;
-+
-+ /*
-+ * The write counter contains a pseudo-random number which is
-+ * regenerated every time we set the RTC so it should be a
-+ * useful per-system source of entropy.
-+ */
-+ ret = wm831x_reg_read(wm831x, WM831X_RTC_WRITE_COUNTER);
-+ if (ret >= 0) {
-+ reg = ret;
-+ add_device_randomness(®, sizeof(reg));
-+ } else {
-+ dev_warn(wm831x->dev, "Failed to read RTC write counter: %d\n",
-+ ret);
-+ }
-+}
-+
- /*
- * Read current time and date in RTC
- */
-@@ -449,6 +469,8 @@ static int wm831x_rtc_probe(struct platform_device *pdev)
- alm_irq, ret);
- }
-
-+ wm831x_rtc_add_randomness(wm831x);
-+
- return 0;
-
- err:
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0022-mfd-wm831x-Feed-the-device-UUID-into-device_add_rand.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0022-mfd-wm831x-Feed-the-device-UUID-into-device_add_rand.patch
deleted file mode 100644
index ea38b5a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0022-mfd-wm831x-Feed-the-device-UUID-into-device_add_rand.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From fb9ac5d5d77aaf09012931a54251629368050ee2 Mon Sep 17 00:00:00 2001
-From: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Date: Thu, 5 Jul 2012 20:23:21 +0000
-Subject: [PATCH 22/70] mfd: wm831x: Feed the device UUID into
- device_add_randomness()
-
-commit 27130f0cc3ab97560384da437e4621fc4e94f21c upstream.
-
-wm831x devices contain a unique ID value. Feed this into the newly added
-device_add_randomness() to add some per device seed data to the pool.
-
-Signed-off-by: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Signed-off-by: Theodore Ts'o <tytso at mit.edu>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/mfd/wm831x-otp.c | 8 ++++++++
- 1 files changed, 8 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/mfd/wm831x-otp.c b/drivers/mfd/wm831x-otp.c
-index f742745..b90f3e0 100644
---- a/drivers/mfd/wm831x-otp.c
-+++ b/drivers/mfd/wm831x-otp.c
-@@ -18,6 +18,7 @@
- #include <linux/bcd.h>
- #include <linux/delay.h>
- #include <linux/mfd/core.h>
-+#include <linux/random.h>
-
- #include <linux/mfd/wm831x/core.h>
- #include <linux/mfd/wm831x/otp.h>
-@@ -66,6 +67,7 @@ static DEVICE_ATTR(unique_id, 0444, wm831x_unique_id_show, NULL);
-
- int wm831x_otp_init(struct wm831x *wm831x)
- {
-+ char uuid[WM831X_UNIQUE_ID_LEN];
- int ret;
-
- ret = device_create_file(wm831x->dev, &dev_attr_unique_id);
-@@ -73,6 +75,12 @@ int wm831x_otp_init(struct wm831x *wm831x)
- dev_err(wm831x->dev, "Unique ID attribute not created: %d\n",
- ret);
-
-+ ret = wm831x_unique_id_read(wm831x, uuid);
-+ if (ret == 0)
-+ add_device_randomness(uuid, sizeof(uuid));
-+ else
-+ dev_err(wm831x->dev, "Failed to read UUID: %d\n", ret);
-+
- return ret;
- }
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0023-ASoC-wm8994-Ensure-there-are-enough-BCLKs-for-four-c.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0023-ASoC-wm8994-Ensure-there-are-enough-BCLKs-for-four-c.patch
deleted file mode 100644
index 0019f5e..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0023-ASoC-wm8994-Ensure-there-are-enough-BCLKs-for-four-c.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From f2173fb9a41cc0f7c114bb81fc0d138bc9649ccd Mon Sep 17 00:00:00 2001
-From: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Date: Fri, 22 Jun 2012 17:21:17 +0100
-Subject: [PATCH 23/70] ASoC: wm8994: Ensure there are enough BCLKs for four
- channels
-
-commit b8edf3e5522735c8ce78b81845f7a1a2d4a08626 upstream.
-
-Otherwise if someone tries to use all four channels on AIF1 with the
-device in master mode we won't be able to clock out all the data.
-
-Signed-off-by: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- sound/soc/codecs/wm8994.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/sound/soc/codecs/wm8994.c b/sound/soc/codecs/wm8994.c
-index de61b8a..98c5774 100644
---- a/sound/soc/codecs/wm8994.c
-+++ b/sound/soc/codecs/wm8994.c
-@@ -2508,7 +2508,7 @@ static int wm8994_hw_params(struct snd_pcm_substream *substream,
- return -EINVAL;
- }
-
-- bclk_rate = params_rate(params) * 2;
-+ bclk_rate = params_rate(params) * 4;
- switch (params_format(params)) {
- case SNDRV_PCM_FORMAT_S16_LE:
- bclk_rate *= 16;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0024-futex-Test-for-pi_mutex-on-fault-in-futex_wait_reque.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0024-futex-Test-for-pi_mutex-on-fault-in-futex_wait_reque.patch
deleted file mode 100644
index 5422494..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0024-futex-Test-for-pi_mutex-on-fault-in-futex_wait_reque.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From f36864057b59eec6a77bd9be1d04267fe3648b8f Mon Sep 17 00:00:00 2001
-From: Darren Hart <dvhart at linux.intel.com>
-Date: Fri, 20 Jul 2012 11:53:29 -0700
-Subject: [PATCH 24/70] futex: Test for pi_mutex on fault in
- futex_wait_requeue_pi()
-
-commit b6070a8d9853eda010a549fa9a09eb8d7269b929 upstream.
-
-If fixup_pi_state_owner() faults, pi_mutex may be NULL. Test
-for pi_mutex != NULL before testing the owner against current
-and possibly unlocking it.
-
-Signed-off-by: Darren Hart <dvhart at linux.intel.com>
-Cc: Dave Jones <davej at redhat.com>
-Cc: Dan Carpenter <dan.carpenter at oracle.com>
-Link: http://lkml.kernel.org/r/dc59890338fc413606f04e5c5b131530734dae3d.1342809673.git.dvhart@linux.intel.com
-Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- kernel/futex.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/kernel/futex.c b/kernel/futex.c
-index 866c9d5..ed96926 100644
---- a/kernel/futex.c
-+++ b/kernel/futex.c
-@@ -2370,7 +2370,7 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags,
- * fault, unlock the rt_mutex and return the fault to userspace.
- */
- if (ret == -EFAULT) {
-- if (rt_mutex_owner(pi_mutex) == current)
-+ if (pi_mutex && rt_mutex_owner(pi_mutex) == current)
- rt_mutex_unlock(pi_mutex);
- } else if (ret == -EINTR) {
- /*
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0025-futex-Fix-bug-in-WARN_ON-for-NULL-q.pi_state.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0025-futex-Fix-bug-in-WARN_ON-for-NULL-q.pi_state.patch
deleted file mode 100644
index ac9cdc0..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0025-futex-Fix-bug-in-WARN_ON-for-NULL-q.pi_state.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 5630485a96fdf29be75437e32eabccf5a2ac9fe7 Mon Sep 17 00:00:00 2001
-From: Darren Hart <dvhart at linux.intel.com>
-Date: Fri, 20 Jul 2012 11:53:30 -0700
-Subject: [PATCH 25/70] futex: Fix bug in WARN_ON for NULL q.pi_state
-
-commit f27071cb7fe3e1d37a9dbe6c0dfc5395cd40fa43 upstream.
-
-The WARN_ON in futex_wait_requeue_pi() for a NULL q.pi_state was testing
-the address (&q.pi_state) of the pointer instead of the value
-(q.pi_state) of the pointer. Correct it accordingly.
-
-Signed-off-by: Darren Hart <dvhart at linux.intel.com>
-Cc: Dave Jones <davej at redhat.com>
-Link: http://lkml.kernel.org/r/1c85d97f6e5f79ec389a4ead3e367363c74bd09a.1342809673.git.dvhart@linux.intel.com
-Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- kernel/futex.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/kernel/futex.c b/kernel/futex.c
-index ed96926..68e817a 100644
---- a/kernel/futex.c
-+++ b/kernel/futex.c
-@@ -2343,7 +2343,7 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags,
- * signal. futex_unlock_pi() will not destroy the lock_ptr nor
- * the pi_state.
- */
-- WARN_ON(!&q.pi_state);
-+ WARN_ON(!q.pi_state);
- pi_mutex = &q.pi_state->pi_mutex;
- ret = rt_mutex_finish_proxy_lock(pi_mutex, to, &rt_waiter, 1);
- debug_rt_mutex_free_waiter(&rt_waiter);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0026-futex-Forbid-uaddr-uaddr2-in-futex_wait_requeue_pi.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0026-futex-Forbid-uaddr-uaddr2-in-futex_wait_requeue_pi.patch
deleted file mode 100644
index 9f0ff30..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0026-futex-Forbid-uaddr-uaddr2-in-futex_wait_requeue_pi.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-From 6b32682a969a782f8a03b42f0cec593a923412fb Mon Sep 17 00:00:00 2001
-From: Darren Hart <dvhart at linux.intel.com>
-Date: Fri, 20 Jul 2012 11:53:31 -0700
-Subject: [PATCH 26/70] futex: Forbid uaddr == uaddr2 in
- futex_wait_requeue_pi()
-
-commit 6f7b0a2a5c0fb03be7c25bd1745baa50582348ef upstream.
-
-If uaddr == uaddr2, then we have broken the rule of only requeueing
-from a non-pi futex to a pi futex with this call. If we attempt this,
-as the trinity test suite manages to do, we miss early wakeups as
-q.key is equal to key2 (because they are the same uaddr). We will then
-attempt to dereference the pi_mutex (which would exist had the futex_q
-been properly requeued to a pi futex) and trigger a NULL pointer
-dereference.
-
-Signed-off-by: Darren Hart <dvhart at linux.intel.com>
-Cc: Dave Jones <davej at redhat.com>
-Link: http://lkml.kernel.org/r/ad82bfe7f7d130247fbe2b5b4275654807774227.1342809673.git.dvhart@linux.intel.com
-Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- kernel/futex.c | 13 ++++++++-----
- 1 files changed, 8 insertions(+), 5 deletions(-)
-
-diff --git a/kernel/futex.c b/kernel/futex.c
-index 68e817a..80fb1c6 100644
---- a/kernel/futex.c
-+++ b/kernel/futex.c
-@@ -2231,11 +2231,11 @@ int handle_early_requeue_pi_wakeup(struct futex_hash_bucket *hb,
- * @uaddr2: the pi futex we will take prior to returning to user-space
- *
- * The caller will wait on uaddr and will be requeued by futex_requeue() to
-- * uaddr2 which must be PI aware. Normal wakeup will wake on uaddr2 and
-- * complete the acquisition of the rt_mutex prior to returning to userspace.
-- * This ensures the rt_mutex maintains an owner when it has waiters; without
-- * one, the pi logic wouldn't know which task to boost/deboost, if there was a
-- * need to.
-+ * uaddr2 which must be PI aware and unique from uaddr. Normal wakeup will wake
-+ * on uaddr2 and complete the acquisition of the rt_mutex prior to returning to
-+ * userspace. This ensures the rt_mutex maintains an owner when it has waiters;
-+ * without one, the pi logic would not know which task to boost/deboost, if
-+ * there was a need to.
- *
- * We call schedule in futex_wait_queue_me() when we enqueue and return there
- * via the following:
-@@ -2272,6 +2272,9 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags,
- struct futex_q q = futex_q_init;
- int res, ret;
-
-+ if (uaddr == uaddr2)
-+ return -EINVAL;
-+
- if (!bitset)
- return -EINVAL;
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0027-video-smscufx-fix-line-counting-in-fb_write.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0027-video-smscufx-fix-line-counting-in-fb_write.patch
deleted file mode 100644
index 030c40e..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0027-video-smscufx-fix-line-counting-in-fb_write.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 3c9cd66c826a8517a56d6d6b102018f73a0a6371 Mon Sep 17 00:00:00 2001
-From: Alexander Holler <holler at ahsoftware.de>
-Date: Sat, 21 Apr 2012 00:11:07 +0200
-Subject: [PATCH 27/70] video/smscufx: fix line counting in fb_write
-
-commit 2fe2d9f47cfe1a3e66e7d087368b3d7155b04c15 upstream.
-
-Line 0 and 1 were both written to line 0 (on the display) and all subsequent
-lines had an offset of -1. The result was that the last line on the display
-was never overwritten by writes to /dev/fbN.
-
-The origin of this bug seems to have been udlfb.
-
-Signed-off-by: Alexander Holler <holler at ahsoftware.de>
-Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat at gmx.de>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/video/smscufx.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/video/smscufx.c b/drivers/video/smscufx.c
-index aaccffa..dd9533a 100644
---- a/drivers/video/smscufx.c
-+++ b/drivers/video/smscufx.c
-@@ -904,7 +904,7 @@ static ssize_t ufx_ops_write(struct fb_info *info, const char __user *buf,
- result = fb_sys_write(info, buf, count, ppos);
-
- if (result > 0) {
-- int start = max((int)(offset / info->fix.line_length) - 1, 0);
-+ int start = max((int)(offset / info->fix.line_length), 0);
- int lines = min((u32)((result / info->fix.line_length) + 1),
- (u32)info->var.yres);
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0028-Input-synaptics-handle-out-of-bounds-values-from-the.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0028-Input-synaptics-handle-out-of-bounds-values-from-the.patch
deleted file mode 100644
index f77c2c2..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0028-Input-synaptics-handle-out-of-bounds-values-from-the.patch
+++ /dev/null
@@ -1,89 +0,0 @@
-From 9bd55f644225e671f6c74cc89d9cf68b434385d1 Mon Sep 17 00:00:00 2001
-From: Seth Forshee <seth.forshee at canonical.com>
-Date: Tue, 24 Jul 2012 23:54:11 -0700
-Subject: [PATCH 28/70] Input: synaptics - handle out of bounds values from
- the hardware
-
-commit c0394506e69b37c47d391c2a7bbea3ea236d8ec8 upstream.
-
-The touchpad on the Acer Aspire One D250 will report out of range values
-in the extreme lower portion of the touchpad. These appear as abrupt
-changes in the values reported by the hardware from very low values to
-very high values, which can cause unexpected vertical jumps in the
-position of the mouse pointer.
-
-What seems to be happening is that the value is wrapping to a two's
-compliment negative value of higher resolution than the 13-bit value
-reported by the hardware, with the high-order bits being truncated. This
-patch adds handling for these values by converting them to the
-appropriate negative values.
-
-The only tricky part about this is deciding when to treat a number as
-negative. It stands to reason that if out of range values can be
-reported on the low end then it could also happen on the high end, so
-not all out of range values should be treated as negative. The approach
-taken here is to split the difference between the maximum legitimate
-value for the axis and the maximum possible value that the hardware can
-report, treating values greater than this number as negative and all
-other values as positive. This can be tweaked later if hardware is found
-that operates outside of these parameters.
-
-BugLink: http://bugs.launchpad.net/bugs/1001251
-Signed-off-by: Seth Forshee <seth.forshee at canonical.com>
-Reviewed-by: Daniel Kurtz <djkurtz at chromium.org>
-Signed-off-by: Dmitry Torokhov <dmitry.torokhov at gmail.com>
-[bwh: Backported to 3.2: adjust context]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/input/mouse/synaptics.c | 23 +++++++++++++++++++++++
- 1 files changed, 23 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c
-index a6dcd18..96532bc 100644
---- a/drivers/input/mouse/synaptics.c
-+++ b/drivers/input/mouse/synaptics.c
-@@ -40,11 +40,28 @@
- * Note that newer firmware allows querying device for maximum useable
- * coordinates.
- */
-+#define XMIN 0
-+#define XMAX 6143
-+#define YMIN 0
-+#define YMAX 6143
- #define XMIN_NOMINAL 1472
- #define XMAX_NOMINAL 5472
- #define YMIN_NOMINAL 1408
- #define YMAX_NOMINAL 4448
-
-+/* Size in bits of absolute position values reported by the hardware */
-+#define ABS_POS_BITS 13
-+
-+/*
-+ * Any position values from the hardware above the following limits are
-+ * treated as "wrapped around negative" values that have been truncated to
-+ * the 13-bit reporting range of the hardware. These are just reasonable
-+ * guesses and can be adjusted if hardware is found that operates outside
-+ * of these parameters.
-+ */
-+#define X_MAX_POSITIVE (((1 << ABS_POS_BITS) + XMAX) / 2)
-+#define Y_MAX_POSITIVE (((1 << ABS_POS_BITS) + YMAX) / 2)
-+
- /*
- * Synaptics touchpads report the y coordinate from bottom to top, which is
- * opposite from what userspace expects.
-@@ -544,6 +561,12 @@ static int synaptics_parse_hw_state(const unsigned char buf[],
- hw->right = (buf[0] & 0x02) ? 1 : 0;
- }
-
-+ /* Convert wrap-around values to negative */
-+ if (hw->x > X_MAX_POSITIVE)
-+ hw->x -= 1 << ABS_POS_BITS;
-+ if (hw->y > Y_MAX_POSITIVE)
-+ hw->y -= 1 << ABS_POS_BITS;
-+
- return 0;
- }
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0029-ALSA-hda-Fix-invalid-D3-of-headphone-DAC-on-VT202x-c.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0029-ALSA-hda-Fix-invalid-D3-of-headphone-DAC-on-VT202x-c.patch
deleted file mode 100644
index 963bda5..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0029-ALSA-hda-Fix-invalid-D3-of-headphone-DAC-on-VT202x-c.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From 82ed7ed6d4c89cbcaa138eb1fd0075357e8c06d3 Mon Sep 17 00:00:00 2001
-From: Takashi Iwai <tiwai at suse.de>
-Date: Wed, 25 Jul 2012 13:54:55 +0200
-Subject: [PATCH 29/70] ALSA: hda - Fix invalid D3 of headphone DAC on VT202x
- codecs
-
-commit 6162552b0de6ba80937c3dd53e084967851cd199 upstream.
-
-We've got a bug report about the silent output from the headphone on a
-mobo with VT2021, and spotted out that this was because of the wrong
-D3 state on the DAC for the headphone output. The bug is triggered by
-the incomplete check for this DAC in set_widgets_power_state_vt1718S().
-It checks only the connectivity of the primary output (0x27) but
-doesn't consider the path from the headphone pin (0x28).
-
-Now this patch fixes the problem by checking both pins for DAC 0x0b.
-
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-[bwh: Backported to 3.2: keep using snd_hda_codec_write() as
- update_power_state() is missing]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- sound/pci/hda/patch_via.c | 7 +++++--
- 1 files changed, 5 insertions(+), 2 deletions(-)
-
-diff --git a/sound/pci/hda/patch_via.c b/sound/pci/hda/patch_via.c
-index 1fe1308..7160ff2 100644
---- a/sound/pci/hda/patch_via.c
-+++ b/sound/pci/hda/patch_via.c
-@@ -3227,7 +3227,7 @@ static void set_widgets_power_state_vt1718S(struct hda_codec *codec)
- {
- struct via_spec *spec = codec->spec;
- int imux_is_smixer;
-- unsigned int parm;
-+ unsigned int parm, parm2;
- /* MUX6 (1eh) = stereo mixer */
- imux_is_smixer =
- snd_hda_codec_read(codec, 0x1e, 0, AC_VERB_GET_CONNECT_SEL, 0x00) == 5;
-@@ -3250,7 +3250,7 @@ static void set_widgets_power_state_vt1718S(struct hda_codec *codec)
- parm = AC_PWRST_D3;
- set_pin_power_state(codec, 0x27, &parm);
- snd_hda_codec_write(codec, 0x1a, 0, AC_VERB_SET_POWER_STATE, parm);
-- snd_hda_codec_write(codec, 0xb, 0, AC_VERB_SET_POWER_STATE, parm);
-+ parm2 = parm; /* for pin 0x0b */
-
- /* PW2 (26h), AOW2 (ah) */
- parm = AC_PWRST_D3;
-@@ -3265,6 +3265,9 @@ static void set_widgets_power_state_vt1718S(struct hda_codec *codec)
- if (!spec->hp_independent_mode) /* check for redirected HP */
- set_pin_power_state(codec, 0x28, &parm);
- snd_hda_codec_write(codec, 0x8, 0, AC_VERB_SET_POWER_STATE, parm);
-+ if (!spec->hp_independent_mode && parm2 != AC_PWRST_D3)
-+ parm = parm2;
-+ snd_hda_codec_write(codec, 0xb, 0, AC_VERB_SET_POWER_STATE, parm);
- /* MW9 (21h), Mw2 (1ah), AOW0 (8h) */
- snd_hda_codec_write(codec, 0x21, 0, AC_VERB_SET_POWER_STATE,
- imux_is_smixer ? AC_PWRST_D0 : parm);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0030-ALSA-mpu401-Fix-missing-initialization-of-irq-field.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0030-ALSA-mpu401-Fix-missing-initialization-of-irq-field.patch
deleted file mode 100644
index 5885b45..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0030-ALSA-mpu401-Fix-missing-initialization-of-irq-field.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 1b12abe45ddcd7a4f3d927195dd69b8e6e9acb4e Mon Sep 17 00:00:00 2001
-From: Takashi Iwai <tiwai at suse.de>
-Date: Mon, 23 Jul 2012 11:35:55 +0200
-Subject: [PATCH 30/70] ALSA: mpu401: Fix missing initialization of irq field
-
-commit bc733d495267a23ef8660220d696c6e549ce30b3 upstream.
-
-The irq field of struct snd_mpu401 is supposed to be initialized to -1.
-Since it's set to zero as of now, a probing error before the irq
-installation results in a kernel warning "Trying to free already-free
-IRQ 0".
-
-Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=44821
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- sound/drivers/mpu401/mpu401_uart.c | 1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-diff --git a/sound/drivers/mpu401/mpu401_uart.c b/sound/drivers/mpu401/mpu401_uart.c
-index 1cff331..4608c2c 100644
---- a/sound/drivers/mpu401/mpu401_uart.c
-+++ b/sound/drivers/mpu401/mpu401_uart.c
-@@ -554,6 +554,7 @@ int snd_mpu401_uart_new(struct snd_card *card, int device,
- spin_lock_init(&mpu->output_lock);
- spin_lock_init(&mpu->timer_lock);
- mpu->hardware = hardware;
-+ mpu->irq = -1;
- if (! (info_flags & MPU401_INFO_INTEGRATED)) {
- int res_size = hardware == MPU401_HW_PC98II ? 4 : 2;
- mpu->res = request_region(port, res_size, "MPU401 UART");
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0031-x86-nops-Missing-break-resulting-in-incorrect-select.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0031-x86-nops-Missing-break-resulting-in-incorrect-select.patch
deleted file mode 100644
index b99ccb2..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0031-x86-nops-Missing-break-resulting-in-incorrect-select.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 884a5eb458ec88aad066be1cd4486dba34488aad Mon Sep 17 00:00:00 2001
-From: Alan Cox <alan at linux.intel.com>
-Date: Wed, 25 Jul 2012 16:28:19 +0100
-Subject: [PATCH 31/70] x86, nops: Missing break resulting in incorrect
- selection on Intel
-
-commit d6250a3f12edb3a86db9598ffeca3de8b4a219e9 upstream.
-
-The Intel case falls through into the generic case which then changes
-the values. For cases like the P6 it doesn't do the right thing so
-this seems to be a screwup.
-
-Signed-off-by: Alan Cox <alan at linux.intel.com>
-Link: http://lkml.kernel.org/n/tip-lww2uirad4skzjlmrm0vru8o@git.kernel.org
-Signed-off-by: H. Peter Anvin <hpa at zytor.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/x86/kernel/alternative.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/arch/x86/kernel/alternative.c b/arch/x86/kernel/alternative.c
-index 1f84794..73ef56c 100644
---- a/arch/x86/kernel/alternative.c
-+++ b/arch/x86/kernel/alternative.c
-@@ -219,7 +219,7 @@ void __init arch_init_ideal_nops(void)
- ideal_nops = intel_nops;
- #endif
- }
--
-+ break;
- default:
- #ifdef CONFIG_X86_64
- ideal_nops = k8_nops;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0032-s390-mm-downgrade-page-table-after-fork-of-a-31-bit-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0032-s390-mm-downgrade-page-table-after-fork-of-a-31-bit-.patch
deleted file mode 100644
index d285d97..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0032-s390-mm-downgrade-page-table-after-fork-of-a-31-bit-.patch
+++ /dev/null
@@ -1,140 +0,0 @@
-From 7cd099a4bf8f6367aff3ef6f7b0409712925f42e Mon Sep 17 00:00:00 2001
-From: Martin Schwidefsky <schwidefsky at de.ibm.com>
-Date: Thu, 26 Jul 2012 08:53:06 +0200
-Subject: [PATCH 32/70] s390/mm: downgrade page table after fork of a 31 bit
- process
-
-commit 0f6f281b731d20bfe75c13f85d33f3f05b440222 upstream.
-
-The downgrade of the 4 level page table created by init_new_context is
-currently done only in start_thread31. If a 31 bit process forks the
-new mm uses a 4 level page table, including the task size of 2<<42
-that goes along with it. This is incorrect as now a 31 bit process
-can map memory beyond 2GB. Define arch_dup_mmap to do the downgrade
-after fork.
-
-Signed-off-by: Martin Schwidefsky <schwidefsky at de.ibm.com>
-[bwh: Backported to 3.2: adjust context]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/s390/include/asm/mmu_context.h | 14 +++++++++++++-
- arch/s390/include/asm/processor.h | 2 ++
- arch/s390/mm/mmap.c | 12 ++++++++++--
- arch/s390/mm/pgtable.c | 5 -----
- 4 files changed, 25 insertions(+), 8 deletions(-)
-
-diff --git a/arch/s390/include/asm/mmu_context.h b/arch/s390/include/asm/mmu_context.h
-index 5682f16..20f0e01 100644
---- a/arch/s390/include/asm/mmu_context.h
-+++ b/arch/s390/include/asm/mmu_context.h
-@@ -12,7 +12,6 @@
- #include <asm/pgalloc.h>
- #include <asm/uaccess.h>
- #include <asm/tlbflush.h>
--#include <asm-generic/mm_hooks.h>
-
- static inline int init_new_context(struct task_struct *tsk,
- struct mm_struct *mm)
-@@ -92,4 +91,17 @@ static inline void activate_mm(struct mm_struct *prev,
- switch_mm(prev, next, current);
- }
-
-+static inline void arch_dup_mmap(struct mm_struct *oldmm,
-+ struct mm_struct *mm)
-+{
-+#ifdef CONFIG_64BIT
-+ if (oldmm->context.asce_limit < mm->context.asce_limit)
-+ crst_table_downgrade(mm, oldmm->context.asce_limit);
-+#endif
-+}
-+
-+static inline void arch_exit_mmap(struct mm_struct *mm)
-+{
-+}
-+
- #endif /* __S390_MMU_CONTEXT_H */
-diff --git a/arch/s390/include/asm/processor.h b/arch/s390/include/asm/processor.h
-index 5f33d37..172550d 100644
---- a/arch/s390/include/asm/processor.h
-+++ b/arch/s390/include/asm/processor.h
-@@ -130,7 +130,9 @@ struct stack_frame {
- regs->psw.mask = psw_user_bits | PSW_MASK_BA; \
- regs->psw.addr = new_psw | PSW_ADDR_AMODE; \
- regs->gprs[15] = new_stackp; \
-+ __tlb_flush_mm(current->mm); \
- crst_table_downgrade(current->mm, 1UL << 31); \
-+ update_mm(current->mm, current); \
- } while (0)
-
- /* Forward declaration, a strange C thing */
-diff --git a/arch/s390/mm/mmap.c b/arch/s390/mm/mmap.c
-index a0155c0..c70b3d8 100644
---- a/arch/s390/mm/mmap.c
-+++ b/arch/s390/mm/mmap.c
-@@ -106,9 +106,15 @@ EXPORT_SYMBOL_GPL(arch_pick_mmap_layout);
-
- int s390_mmap_check(unsigned long addr, unsigned long len)
- {
-+ int rc;
-+
- if (!is_compat_task() &&
-- len >= TASK_SIZE && TASK_SIZE < (1UL << 53))
-- return crst_table_upgrade(current->mm, 1UL << 53);
-+ len >= TASK_SIZE && TASK_SIZE < (1UL << 53)) {
-+ rc = crst_table_upgrade(current->mm, 1UL << 53);
-+ if (rc)
-+ return rc;
-+ update_mm(current->mm, current);
-+ }
- return 0;
- }
-
-@@ -128,6 +134,7 @@ s390_get_unmapped_area(struct file *filp, unsigned long addr,
- rc = crst_table_upgrade(mm, 1UL << 53);
- if (rc)
- return (unsigned long) rc;
-+ update_mm(mm, current);
- area = arch_get_unmapped_area(filp, addr, len, pgoff, flags);
- }
- return area;
-@@ -150,6 +157,7 @@ s390_get_unmapped_area_topdown(struct file *filp, const unsigned long addr,
- rc = crst_table_upgrade(mm, 1UL << 53);
- if (rc)
- return (unsigned long) rc;
-+ update_mm(mm, current);
- area = arch_get_unmapped_area_topdown(filp, addr, len,
- pgoff, flags);
- }
-diff --git a/arch/s390/mm/pgtable.c b/arch/s390/mm/pgtable.c
-index f8ceac4..f8e92f8 100644
---- a/arch/s390/mm/pgtable.c
-+++ b/arch/s390/mm/pgtable.c
-@@ -97,7 +97,6 @@ repeat:
- crst_table_free(mm, table);
- if (mm->context.asce_limit < limit)
- goto repeat;
-- update_mm(mm, current);
- return 0;
- }
-
-@@ -105,9 +104,6 @@ void crst_table_downgrade(struct mm_struct *mm, unsigned long limit)
- {
- pgd_t *pgd;
-
-- if (mm->context.asce_limit <= limit)
-- return;
-- __tlb_flush_mm(mm);
- while (mm->context.asce_limit > limit) {
- pgd = mm->pgd;
- switch (pgd_val(*pgd) & _REGION_ENTRY_TYPE_MASK) {
-@@ -130,7 +126,6 @@ void crst_table_downgrade(struct mm_struct *mm, unsigned long limit)
- mm->task_size = mm->context.asce_limit;
- crst_table_free(mm, (unsigned long *) pgd);
- }
-- update_mm(mm, current);
- }
- #endif
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0033-Redefine-ATOMIC_INIT-and-ATOMIC64_INIT-to-drop-the-c.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0033-Redefine-ATOMIC_INIT-and-ATOMIC64_INIT-to-drop-the-c.patch
deleted file mode 100644
index 2a98f77..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0033-Redefine-ATOMIC_INIT-and-ATOMIC64_INIT-to-drop-the-c.patch
+++ /dev/null
@@ -1,73 +0,0 @@
-From f96e9f9d90fd6778b97a1a32c6769abcb302fbb0 Mon Sep 17 00:00:00 2001
-From: Tony Luck <tony.luck at intel.com>
-Date: Thu, 26 Jul 2012 10:55:26 -0700
-Subject: [PATCH 33/70] Redefine ATOMIC_INIT and ATOMIC64_INIT to drop the
- casts
-
-commit a119365586b0130dfea06457f584953e0ff6481d upstream.
-
-The following build error occured during a ia64 build with
-swap-over-NFS patches applied.
-
-net/core/sock.c:274:36: error: initializer element is not constant
-net/core/sock.c:274:36: error: (near initialization for 'memalloc_socks')
-net/core/sock.c:274:36: error: initializer element is not constant
-
-This is identical to a parisc build error. Fengguang Wu, Mel Gorman
-and James Bottomley did all the legwork to track the root cause of
-the problem. This fix and entire commit log is shamelessly copied
-from them with one extra detail to change a dubious runtime use of
-ATOMIC_INIT() to atomic_set() in drivers/char/mspec.c
-
-Dave Anglin says:
-> Here is the line in sock.i:
->
-> struct static_key memalloc_socks = ((struct static_key) { .enabled =
-> ((atomic_t) { (0) }) });
-
-The above line contains two compound literals. It also uses a designated
-initializer to initialize the field enabled. A compound literal is not a
-constant expression.
-
-The location of the above statement isn't fully clear, but if a compound
-literal occurs outside the body of a function, the initializer list must
-consist of constant expressions.
-
-Signed-off-by: Tony Luck <tony.luck at intel.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/ia64/include/asm/atomic.h | 4 ++--
- drivers/char/mspec.c | 2 +-
- 2 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/arch/ia64/include/asm/atomic.h b/arch/ia64/include/asm/atomic.h
-index 3fad89e..2fc214b 100644
---- a/arch/ia64/include/asm/atomic.h
-+++ b/arch/ia64/include/asm/atomic.h
-@@ -18,8 +18,8 @@
- #include <asm/system.h>
-
-
--#define ATOMIC_INIT(i) ((atomic_t) { (i) })
--#define ATOMIC64_INIT(i) ((atomic64_t) { (i) })
-+#define ATOMIC_INIT(i) { (i) }
-+#define ATOMIC64_INIT(i) { (i) }
-
- #define atomic_read(v) (*(volatile int *)&(v)->counter)
- #define atomic64_read(v) (*(volatile long *)&(v)->counter)
-diff --git a/drivers/char/mspec.c b/drivers/char/mspec.c
-index 5c0d96a..b12ffea 100644
---- a/drivers/char/mspec.c
-+++ b/drivers/char/mspec.c
-@@ -284,7 +284,7 @@ mspec_mmap(struct file *file, struct vm_area_struct *vma,
- vdata->flags = flags;
- vdata->type = type;
- spin_lock_init(&vdata->lock);
-- vdata->refcnt = ATOMIC_INIT(1);
-+ atomic_set(&vdata->refcnt, 1);
- vma->vm_private_data = vdata;
-
- vma->vm_flags |= (VM_IO | VM_RESERVED | VM_PFNMAP | VM_DONTEXPAND);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0034-dm-thin-reduce-endio_hook-pool-size.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0034-dm-thin-reduce-endio_hook-pool-size.patch
deleted file mode 100644
index c3c5f8b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0034-dm-thin-reduce-endio_hook-pool-size.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 1385bcac3fbce09731cb85a16a86952796a5dcbf Mon Sep 17 00:00:00 2001
-From: Alasdair G Kergon <agk at redhat.com>
-Date: Fri, 27 Jul 2012 15:07:57 +0100
-Subject: [PATCH 34/70] dm thin: reduce endio_hook pool size
-
-commit 7768ed33ccdc02801c4483fc5682dc66ace14aea upstream.
-
-Reduce the slab size used for the dm_thin_endio_hook mempool.
-
-Allocation has been seen to fail on machines with smaller amounts
-of memory due to fragmentation.
-
- lvm: page allocation failure. order:5, mode:0xd0
- device-mapper: table: 253:38: thin-pool: Error creating pool's endio_hook mempool
-
-Signed-off-by: Alasdair G Kergon <agk at redhat.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/md/dm-thin.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/md/dm-thin.c b/drivers/md/dm-thin.c
-index 532a902..f68290d 100644
---- a/drivers/md/dm-thin.c
-+++ b/drivers/md/dm-thin.c
-@@ -19,7 +19,7 @@
- /*
- * Tunable constants
- */
--#define ENDIO_HOOK_POOL_SIZE 10240
-+#define ENDIO_HOOK_POOL_SIZE 1024
- #define DEFERRED_SET_SIZE 64
- #define MAPPING_POOL_SIZE 1024
- #define PRISON_CELLS 1024
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0035-dm-thin-fix-memory-leak-in-process_prepared_mapping-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0035-dm-thin-fix-memory-leak-in-process_prepared_mapping-.patch
deleted file mode 100644
index 1a4dfb9..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0035-dm-thin-fix-memory-leak-in-process_prepared_mapping-.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From 0b46cbe86286a3688c4469a702b907d4f45f6b17 Mon Sep 17 00:00:00 2001
-From: Joe Thornber <ejt at redhat.com>
-Date: Fri, 27 Jul 2012 15:08:05 +0100
-Subject: [PATCH 35/70] dm thin: fix memory leak in process_prepared_mapping
- error paths
-
-commit 905386f82d08f66726912f303f3e6605248c60a3 upstream.
-
-Fix memory leak in process_prepared_mapping by always freeing
-the dm_thin_new_mapping structs from the mapping_pool mempool on
-the error paths.
-
-Signed-off-by: Joe Thornber <ejt at redhat.com>
-Signed-off-by: Mike Snitzer <snitzer at redhat.com>
-Signed-off-by: Alasdair G Kergon <agk at redhat.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/md/dm-thin.c | 5 +++--
- 1 files changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/md/dm-thin.c b/drivers/md/dm-thin.c
-index f68290d..d432032 100644
---- a/drivers/md/dm-thin.c
-+++ b/drivers/md/dm-thin.c
-@@ -857,7 +857,7 @@ static void process_prepared_mapping(struct new_mapping *m)
-
- if (m->err) {
- cell_error(m->cell);
-- return;
-+ goto out;
- }
-
- /*
-@@ -869,7 +869,7 @@ static void process_prepared_mapping(struct new_mapping *m)
- if (r) {
- DMERR("dm_thin_insert_block() failed");
- cell_error(m->cell);
-- return;
-+ goto out;
- }
-
- /*
-@@ -884,6 +884,7 @@ static void process_prepared_mapping(struct new_mapping *m)
- } else
- cell_defer(tc, m->cell, m->data_block);
-
-+out:
- list_del(&m->list);
- mempool_free(m, tc->pool->mapping_pool);
- }
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0036-random-mix-in-architectural-randomness-in-extract_bu.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0036-random-mix-in-architectural-randomness-in-extract_bu.patch
deleted file mode 100644
index 26586e6..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0036-random-mix-in-architectural-randomness-in-extract_bu.patch
+++ /dev/null
@@ -1,151 +0,0 @@
-From fe897421d28b4fce43ee643aa1e1bacecd6aacf2 Mon Sep 17 00:00:00 2001
-From: "H. Peter Anvin" <hpa at linux.intel.com>
-Date: Fri, 27 Jul 2012 22:26:08 -0400
-Subject: [PATCH 36/70] random: mix in architectural randomness in
- extract_buf()
-
-commit d2e7c96af1e54b507ae2a6a7dd2baf588417a7e5 upstream.
-
-Mix in any architectural randomness in extract_buf() instead of
-xfer_secondary_buf(). This allows us to mix in more architectural
-randomness, and it also makes xfer_secondary_buf() faster, moving a
-tiny bit of additional CPU overhead to process which is extracting the
-randomness.
-
-[ Commit description modified by tytso to remove an extended
- advertisement for the RDRAND instruction. ]
-
-Signed-off-by: H. Peter Anvin <hpa at linux.intel.com>
-Acked-by: Ingo Molnar <mingo at kernel.org>
-Cc: DJ Johnston <dj.johnston at intel.com>
-Signed-off-by: Theodore Ts'o <tytso at mit.edu>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/char/random.c | 56 ++++++++++++++++++++++++++++---------------------
- 1 files changed, 32 insertions(+), 24 deletions(-)
-
-diff --git a/drivers/char/random.c b/drivers/char/random.c
-index f3200bf..631d4f6 100644
---- a/drivers/char/random.c
-+++ b/drivers/char/random.c
-@@ -274,6 +274,8 @@
- #define SEC_XFER_SIZE 512
- #define EXTRACT_SIZE 10
-
-+#define LONGS(x) (((x) + sizeof(unsigned long) - 1)/sizeof(unsigned long))
-+
- /*
- * The minimum number of bits of entropy before we wake up a read on
- * /dev/random. Should be enough to do a significant reseed.
-@@ -835,11 +837,7 @@ static ssize_t extract_entropy(struct entropy_store *r, void *buf,
- */
- static void xfer_secondary_pool(struct entropy_store *r, size_t nbytes)
- {
-- union {
-- __u32 tmp[OUTPUT_POOL_WORDS];
-- long hwrand[4];
-- } u;
-- int i;
-+ __u32 tmp[OUTPUT_POOL_WORDS];
-
- if (r->pull && r->entropy_count < nbytes * 8 &&
- r->entropy_count < r->poolinfo->POOLBITS) {
-@@ -850,23 +848,17 @@ static void xfer_secondary_pool(struct entropy_store *r, size_t nbytes)
- /* pull at least as many as BYTES as wakeup BITS */
- bytes = max_t(int, bytes, random_read_wakeup_thresh / 8);
- /* but never more than the buffer size */
-- bytes = min_t(int, bytes, sizeof(u.tmp));
-+ bytes = min_t(int, bytes, sizeof(tmp));
-
- DEBUG_ENT("going to reseed %s with %d bits "
- "(%d of %d requested)\n",
- r->name, bytes * 8, nbytes * 8, r->entropy_count);
-
-- bytes = extract_entropy(r->pull, u.tmp, bytes,
-+ bytes = extract_entropy(r->pull, tmp, bytes,
- random_read_wakeup_thresh / 8, rsvd);
-- mix_pool_bytes(r, u.tmp, bytes, NULL);
-+ mix_pool_bytes(r, tmp, bytes, NULL);
- credit_entropy_bits(r, bytes*8);
- }
-- kmemcheck_mark_initialized(&u.hwrand, sizeof(u.hwrand));
-- for (i = 0; i < 4; i++)
-- if (arch_get_random_long(&u.hwrand[i]))
-- break;
-- if (i)
-- mix_pool_bytes(r, &u.hwrand, sizeof(u.hwrand), 0);
- }
-
- /*
-@@ -923,15 +915,19 @@ static size_t account(struct entropy_store *r, size_t nbytes, int min,
- static void extract_buf(struct entropy_store *r, __u8 *out)
- {
- int i;
-- __u32 hash[5], workspace[SHA_WORKSPACE_WORDS];
-+ union {
-+ __u32 w[5];
-+ unsigned long l[LONGS(EXTRACT_SIZE)];
-+ } hash;
-+ __u32 workspace[SHA_WORKSPACE_WORDS];
- __u8 extract[64];
- unsigned long flags;
-
- /* Generate a hash across the pool, 16 words (512 bits) at a time */
-- sha_init(hash);
-+ sha_init(hash.w);
- spin_lock_irqsave(&r->lock, flags);
- for (i = 0; i < r->poolinfo->poolwords; i += 16)
-- sha_transform(hash, (__u8 *)(r->pool + i), workspace);
-+ sha_transform(hash.w, (__u8 *)(r->pool + i), workspace);
-
- /*
- * We mix the hash back into the pool to prevent backtracking
-@@ -942,14 +938,14 @@ static void extract_buf(struct entropy_store *r, __u8 *out)
- * brute-forcing the feedback as hard as brute-forcing the
- * hash.
- */
-- __mix_pool_bytes(r, hash, sizeof(hash), extract);
-+ __mix_pool_bytes(r, hash.w, sizeof(hash.w), extract);
- spin_unlock_irqrestore(&r->lock, flags);
-
- /*
- * To avoid duplicates, we atomically extract a portion of the
- * pool while mixing, and hash one final time.
- */
-- sha_transform(hash, extract, workspace);
-+ sha_transform(hash.w, extract, workspace);
- memset(extract, 0, sizeof(extract));
- memset(workspace, 0, sizeof(workspace));
-
-@@ -958,11 +954,23 @@ static void extract_buf(struct entropy_store *r, __u8 *out)
- * pattern, we fold it in half. Thus, we always feed back
- * twice as much data as we output.
- */
-- hash[0] ^= hash[3];
-- hash[1] ^= hash[4];
-- hash[2] ^= rol32(hash[2], 16);
-- memcpy(out, hash, EXTRACT_SIZE);
-- memset(hash, 0, sizeof(hash));
-+ hash.w[0] ^= hash.w[3];
-+ hash.w[1] ^= hash.w[4];
-+ hash.w[2] ^= rol32(hash.w[2], 16);
-+
-+ /*
-+ * If we have a architectural hardware random number
-+ * generator, mix that in, too.
-+ */
-+ for (i = 0; i < LONGS(EXTRACT_SIZE); i++) {
-+ unsigned long v;
-+ if (!arch_get_random_long(&v))
-+ break;
-+ hash.l[i] ^= v;
-+ }
-+
-+ memcpy(out, &hash, EXTRACT_SIZE);
-+ memset(&hash, 0, sizeof(hash));
- }
-
- static ssize_t extract_entropy(struct entropy_store *r, void *buf,
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0037-asus-wmi-use-ASUS_WMI_METHODID_DSTS2-as-default-DSTS.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0037-asus-wmi-use-ASUS_WMI_METHODID_DSTS2-as-default-DSTS.patch
deleted file mode 100644
index 983ede2..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0037-asus-wmi-use-ASUS_WMI_METHODID_DSTS2-as-default-DSTS.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From b84b4b80d632292198b2281d2c76044b5bebadd3 Mon Sep 17 00:00:00 2001
-From: Alex Hung <alex.hung at canonical.com>
-Date: Wed, 20 Jun 2012 11:47:35 +0800
-Subject: [PATCH 37/70] asus-wmi: use ASUS_WMI_METHODID_DSTS2 as default DSTS
- ID.
-
-commit 63a78bb1051b240417daad3a3fa9c1bb10646dca upstream.
-
-According to responses from the BIOS team, ASUS_WMI_METHODID_DSTS2
-(0x53545344) will be used as future DSTS ID. In addition, calling
-asus_wmi_evaluate_method(ASUS_WMI_METHODID_DSTS2, 0, 0, NULL) returns
-ASUS_WMI_UNSUPPORTED_METHOD in new ASUS laptop PCs. This patch fixes
-no DSTS ID will be assigned in this case.
-
-Signed-off-by: Alex Hung <alex.hung at canonical.com>
-Signed-off-by: Matthew Garrett <mjg at redhat.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/platform/x86/asus-wmi.c | 7 +------
- 1 files changed, 1 insertions(+), 6 deletions(-)
-
-diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wmi.c
-index d1049ee..26fba2d 100644
---- a/drivers/platform/x86/asus-wmi.c
-+++ b/drivers/platform/x86/asus-wmi.c
-@@ -1431,14 +1431,9 @@ static int asus_wmi_platform_init(struct asus_wmi *asus)
- */
- if (!asus_wmi_evaluate_method(ASUS_WMI_METHODID_DSTS, 0, 0, NULL))
- asus->dsts_id = ASUS_WMI_METHODID_DSTS;
-- else if (!asus_wmi_evaluate_method(ASUS_WMI_METHODID_DSTS2, 0, 0, NULL))
-+ else
- asus->dsts_id = ASUS_WMI_METHODID_DSTS2;
-
-- if (!asus->dsts_id) {
-- pr_err("Can't find DSTS");
-- return -ENODEV;
-- }
--
- /* CWAP allow to define the behavior of the Fn+F2 key,
- * this method doesn't seems to be present on Eee PCs */
- if (asus->driver->wapf >= 0)
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0038-virtio-blk-Use-block-layer-provided-spinlock.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0038-virtio-blk-Use-block-layer-provided-spinlock.patch
deleted file mode 100644
index 8efee34..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0038-virtio-blk-Use-block-layer-provided-spinlock.patch
+++ /dev/null
@@ -1,103 +0,0 @@
-From b0b5f9284f3f86ce8c28aa112d267d261a5201e9 Mon Sep 17 00:00:00 2001
-From: Asias He <asias at redhat.com>
-Date: Fri, 25 May 2012 16:03:27 +0800
-Subject: [PATCH 38/70] virtio-blk: Use block layer provided spinlock
-
-commit 2c95a3290919541b846bee3e0fbaa75860929f53 upstream.
-
-Block layer will allocate a spinlock for the queue if the driver does
-not provide one in blk_init_queue().
-
-The reason to use the internal spinlock is that blk_cleanup_queue() will
-switch to use the internal spinlock in the cleanup code path.
-
- if (q->queue_lock != &q->__queue_lock)
- q->queue_lock = &q->__queue_lock;
-
-However, processes which are in D state might have taken the driver
-provided spinlock, when the processes wake up, they would release the
-block provided spinlock.
-
-=====================================
-[ BUG: bad unlock balance detected! ]
-3.4.0-rc7+ #238 Not tainted
--------------------------------------
-fio/3587 is trying to release lock (&(&q->__queue_lock)->rlock) at:
-[<ffffffff813274d2>] blk_queue_bio+0x2a2/0x380
-but there are no more locks to release!
-
-other info that might help us debug this:
-1 lock held by fio/3587:
- #0: (&(&vblk->lock)->rlock){......}, at:
-[<ffffffff8132661a>] get_request_wait+0x19a/0x250
-
-Other drivers use block layer provided spinlock as well, e.g. SCSI.
-
-Switching to the block layer provided spinlock saves a bit of memory and
-does not increase lock contention. Performance test shows no real
-difference is observed before and after this patch.
-
-Changes in v2: Improve commit log as Michael suggested.
-
-Cc: virtualization at lists.linux-foundation.org
-Cc: kvm at vger.kernel.org
-Signed-off-by: Asias He <asias at redhat.com>
-Acked-by: Michael S. Tsirkin <mst at redhat.com>
-Signed-off-by: Rusty Russell <rusty at rustcorp.com.au>
-[bwh: Backported to 3.2: adjust context]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/block/virtio_blk.c | 9 +++------
- 1 files changed, 3 insertions(+), 6 deletions(-)
-
-diff --git a/drivers/block/virtio_blk.c b/drivers/block/virtio_blk.c
-index e46f2f7..650a308 100644
---- a/drivers/block/virtio_blk.c
-+++ b/drivers/block/virtio_blk.c
-@@ -20,8 +20,6 @@ struct workqueue_struct *virtblk_wq;
-
- struct virtio_blk
- {
-- spinlock_t lock;
--
- struct virtio_device *vdev;
- struct virtqueue *vq;
-
-@@ -62,7 +60,7 @@ static void blk_done(struct virtqueue *vq)
- unsigned int len;
- unsigned long flags;
-
-- spin_lock_irqsave(&vblk->lock, flags);
-+ spin_lock_irqsave(vblk->disk->queue->queue_lock, flags);
- while ((vbr = virtqueue_get_buf(vblk->vq, &len)) != NULL) {
- int error;
-
-@@ -97,7 +95,7 @@ static void blk_done(struct virtqueue *vq)
- }
- /* In case queue is stopped waiting for more buffers. */
- blk_start_queue(vblk->disk->queue);
-- spin_unlock_irqrestore(&vblk->lock, flags);
-+ spin_unlock_irqrestore(vblk->disk->queue->queue_lock, flags);
- }
-
- static bool do_req(struct request_queue *q, struct virtio_blk *vblk,
-@@ -384,7 +382,6 @@ static int __devinit virtblk_probe(struct virtio_device *vdev)
- }
-
- INIT_LIST_HEAD(&vblk->reqs);
-- spin_lock_init(&vblk->lock);
- vblk->vdev = vdev;
- vblk->sg_elems = sg_elems;
- sg_init_table(vblk->sg, vblk->sg_elems);
-@@ -410,7 +407,7 @@ static int __devinit virtblk_probe(struct virtio_device *vdev)
- goto out_mempool;
- }
-
-- q = vblk->disk->queue = blk_init_queue(do_virtblk_request, &vblk->lock);
-+ q = vblk->disk->queue = blk_init_queue(do_virtblk_request, NULL);
- if (!q) {
- err = -ENOMEM;
- goto out_put_disk;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0039-s390-mm-fix-fault-handling-for-page-table-walk-case.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0039-s390-mm-fix-fault-handling-for-page-table-walk-case.patch
deleted file mode 100644
index 51b2063..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0039-s390-mm-fix-fault-handling-for-page-table-walk-case.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-From 3f3c533087d18cd75fbd23caa35032b3cec80ea8 Mon Sep 17 00:00:00 2001
-From: Heiko Carstens <heiko.carstens at de.ibm.com>
-Date: Fri, 27 Jul 2012 09:45:39 +0200
-Subject: [PATCH 39/70] s390/mm: fix fault handling for page table walk case
-
-commit 008c2e8f247f0a8db1e8e26139da12f3a3abcda0 upstream.
-
-Make sure the kernel does not incorrectly create a SIGBUS signal during
-user space accesses:
-
-For user space accesses in the switched addressing mode case the kernel
-may walk page tables and access user address space via the kernel
-mapping. If a page table entry is invalid the function __handle_fault()
-gets called in order to emulate a page fault and trigger all the usual
-actions like paging in a missing page etc. by calling handle_mm_fault().
-
-If handle_mm_fault() returns with an error fixup handling is necessary.
-For the switched addressing mode case all errors need to be mapped to
--EFAULT, so that the calling uaccess function can return -EFAULT to
-user space.
-
-Unfortunately the __handle_fault() incorrectly calls do_sigbus() if
-VM_FAULT_SIGBUS is set. This however should only happen if a page fault
-was triggered by a user space instruction. For kernel mode uaccesses
-the correct action is to only return -EFAULT.
-So user space may incorrectly see SIGBUS signals because of this bug.
-
-For current machines this would only be possible for the switched
-addressing mode case in conjunction with futex operations.
-
-Signed-off-by: Heiko Carstens <heiko.carstens at de.ibm.com>
-Signed-off-by: Martin Schwidefsky <schwidefsky at de.ibm.com>
-[bwh: Backported to 3.2: do_exception() and do_sigbus() parameters differ]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/s390/mm/fault.c | 13 +++++++------
- 1 files changed, 7 insertions(+), 6 deletions(-)
-
-diff --git a/arch/s390/mm/fault.c b/arch/s390/mm/fault.c
-index b28aaa4..0fc0a7e 100644
---- a/arch/s390/mm/fault.c
-+++ b/arch/s390/mm/fault.c
-@@ -453,6 +453,7 @@ int __handle_fault(unsigned long uaddr, unsigned long pgm_int_code, int write)
- struct pt_regs regs;
- int access, fault;
-
-+ /* Emulate a uaccess fault from kernel mode. */
- regs.psw.mask = psw_kernel_bits | PSW_MASK_DAT | PSW_MASK_MCHECK;
- if (!irqs_disabled())
- regs.psw.mask |= PSW_MASK_IO | PSW_MASK_EXT;
-@@ -461,12 +462,12 @@ int __handle_fault(unsigned long uaddr, unsigned long pgm_int_code, int write)
- uaddr &= PAGE_MASK;
- access = write ? VM_WRITE : VM_READ;
- fault = do_exception(®s, access, uaddr | 2);
-- if (unlikely(fault)) {
-- if (fault & VM_FAULT_OOM)
-- return -EFAULT;
-- else if (fault & VM_FAULT_SIGBUS)
-- do_sigbus(®s, pgm_int_code, uaddr);
-- }
-+ /*
-+ * Since the fault happened in kernel mode while performing a uaccess
-+ * all we need to do now is emulating a fixup in case "fault" is not
-+ * zero.
-+ * For the calling uaccess functions this results always in -EFAULT.
-+ */
- return fault ? -EFAULT : 0;
- }
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0040-nfs-skip-commit-in-releasepage-if-we-re-freeing-memo.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0040-nfs-skip-commit-in-releasepage-if-we-re-freeing-memo.patch
deleted file mode 100644
index 1063bad..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0040-nfs-skip-commit-in-releasepage-if-we-re-freeing-memo.patch
+++ /dev/null
@@ -1,182 +0,0 @@
-From 264ef5a0ef781e5e2212558fe56f17f6cc2b7308 Mon Sep 17 00:00:00 2001
-From: Jeff Layton <jlayton at redhat.com>
-Date: Mon, 23 Jul 2012 13:58:51 -0400
-Subject: [PATCH 40/70] nfs: skip commit in releasepage if we're freeing
- memory for fs-related reasons
-
-commit 5cf02d09b50b1ee1c2d536c9cf64af5a7d433f56 upstream.
-
-We've had some reports of a deadlock where rpciod ends up with a stack
-trace like this:
-
- PID: 2507 TASK: ffff88103691ab40 CPU: 14 COMMAND: "rpciod/14"
- #0 [ffff8810343bf2f0] schedule at ffffffff814dabd9
- #1 [ffff8810343bf3b8] nfs_wait_bit_killable at ffffffffa038fc04 [nfs]
- #2 [ffff8810343bf3c8] __wait_on_bit at ffffffff814dbc2f
- #3 [ffff8810343bf418] out_of_line_wait_on_bit at ffffffff814dbcd8
- #4 [ffff8810343bf488] nfs_commit_inode at ffffffffa039e0c1 [nfs]
- #5 [ffff8810343bf4f8] nfs_release_page at ffffffffa038bef6 [nfs]
- #6 [ffff8810343bf528] try_to_release_page at ffffffff8110c670
- #7 [ffff8810343bf538] shrink_page_list.clone.0 at ffffffff81126271
- #8 [ffff8810343bf668] shrink_inactive_list at ffffffff81126638
- #9 [ffff8810343bf818] shrink_zone at ffffffff8112788f
- #10 [ffff8810343bf8c8] do_try_to_free_pages at ffffffff81127b1e
- #11 [ffff8810343bf958] try_to_free_pages at ffffffff8112812f
- #12 [ffff8810343bfa08] __alloc_pages_nodemask at ffffffff8111fdad
- #13 [ffff8810343bfb28] kmem_getpages at ffffffff81159942
- #14 [ffff8810343bfb58] fallback_alloc at ffffffff8115a55a
- #15 [ffff8810343bfbd8] ____cache_alloc_node at ffffffff8115a2d9
- #16 [ffff8810343bfc38] kmem_cache_alloc at ffffffff8115b09b
- #17 [ffff8810343bfc78] sk_prot_alloc at ffffffff81411808
- #18 [ffff8810343bfcb8] sk_alloc at ffffffff8141197c
- #19 [ffff8810343bfce8] inet_create at ffffffff81483ba6
- #20 [ffff8810343bfd38] __sock_create at ffffffff8140b4a7
- #21 [ffff8810343bfd98] xs_create_sock at ffffffffa01f649b [sunrpc]
- #22 [ffff8810343bfdd8] xs_tcp_setup_socket at ffffffffa01f6965 [sunrpc]
- #23 [ffff8810343bfe38] worker_thread at ffffffff810887d0
- #24 [ffff8810343bfee8] kthread at ffffffff8108dd96
- #25 [ffff8810343bff48] kernel_thread at ffffffff8100c1ca
-
-rpciod is trying to allocate memory for a new socket to talk to the
-server. The VM ends up calling ->releasepage to get more memory, and it
-tries to do a blocking commit. That commit can't succeed however without
-a connected socket, so we deadlock.
-
-Fix this by setting PF_FSTRANS on the workqueue task prior to doing the
-socket allocation, and having nfs_release_page check for that flag when
-deciding whether to do a commit call. Also, set PF_FSTRANS
-unconditionally in rpc_async_schedule since that function can also do
-allocations sometimes.
-
-Signed-off-by: Jeff Layton <jlayton at redhat.com>
-Signed-off-by: Trond Myklebust <Trond.Myklebust at netapp.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/nfs/file.c | 7 +++++--
- net/sunrpc/sched.c | 2 ++
- net/sunrpc/xprtrdma/transport.c | 3 ++-
- net/sunrpc/xprtsock.c | 10 ++++++++++
- 4 files changed, 19 insertions(+), 3 deletions(-)
-
-diff --git a/fs/nfs/file.c b/fs/nfs/file.c
-index c43a452..961e562 100644
---- a/fs/nfs/file.c
-+++ b/fs/nfs/file.c
-@@ -452,8 +452,11 @@ static int nfs_release_page(struct page *page, gfp_t gfp)
-
- dfprintk(PAGECACHE, "NFS: release_page(%p)\n", page);
-
-- /* Only do I/O if gfp is a superset of GFP_KERNEL */
-- if (mapping && (gfp & GFP_KERNEL) == GFP_KERNEL) {
-+ /* Only do I/O if gfp is a superset of GFP_KERNEL, and we're not
-+ * doing this memory reclaim for a fs-related allocation.
-+ */
-+ if (mapping && (gfp & GFP_KERNEL) == GFP_KERNEL &&
-+ !(current->flags & PF_FSTRANS)) {
- int how = FLUSH_SYNC;
-
- /* Don't let kswapd deadlock waiting for OOM RPC calls */
-diff --git a/net/sunrpc/sched.c b/net/sunrpc/sched.c
-index 4e2b3b4..c90b832 100644
---- a/net/sunrpc/sched.c
-+++ b/net/sunrpc/sched.c
-@@ -755,7 +755,9 @@ void rpc_execute(struct rpc_task *task)
-
- static void rpc_async_schedule(struct work_struct *work)
- {
-+ current->flags |= PF_FSTRANS;
- __rpc_execute(container_of(work, struct rpc_task, u.tk_work));
-+ current->flags &= ~PF_FSTRANS;
- }
-
- /**
-diff --git a/net/sunrpc/xprtrdma/transport.c b/net/sunrpc/xprtrdma/transport.c
-index b446e10..06cdbff 100644
---- a/net/sunrpc/xprtrdma/transport.c
-+++ b/net/sunrpc/xprtrdma/transport.c
-@@ -200,6 +200,7 @@ xprt_rdma_connect_worker(struct work_struct *work)
- int rc = 0;
-
- if (!xprt->shutdown) {
-+ current->flags |= PF_FSTRANS;
- xprt_clear_connected(xprt);
-
- dprintk("RPC: %s: %sconnect\n", __func__,
-@@ -212,10 +213,10 @@ xprt_rdma_connect_worker(struct work_struct *work)
-
- out:
- xprt_wake_pending_tasks(xprt, rc);
--
- out_clear:
- dprintk("RPC: %s: exit\n", __func__);
- xprt_clear_connecting(xprt);
-+ current->flags &= ~PF_FSTRANS;
- }
-
- /*
-diff --git a/net/sunrpc/xprtsock.c b/net/sunrpc/xprtsock.c
-index 55472c4..1a6edc7 100644
---- a/net/sunrpc/xprtsock.c
-+++ b/net/sunrpc/xprtsock.c
-@@ -1895,6 +1895,8 @@ static void xs_local_setup_socket(struct work_struct *work)
- if (xprt->shutdown)
- goto out;
-
-+ current->flags |= PF_FSTRANS;
-+
- clear_bit(XPRT_CONNECTION_ABORT, &xprt->state);
- status = __sock_create(xprt->xprt_net, AF_LOCAL,
- SOCK_STREAM, 0, &sock, 1);
-@@ -1928,6 +1930,7 @@ static void xs_local_setup_socket(struct work_struct *work)
- out:
- xprt_clear_connecting(xprt);
- xprt_wake_pending_tasks(xprt, status);
-+ current->flags &= ~PF_FSTRANS;
- }
-
- static void xs_udp_finish_connecting(struct rpc_xprt *xprt, struct socket *sock)
-@@ -1970,6 +1973,8 @@ static void xs_udp_setup_socket(struct work_struct *work)
- if (xprt->shutdown)
- goto out;
-
-+ current->flags |= PF_FSTRANS;
-+
- /* Start by resetting any existing state */
- xs_reset_transport(transport);
- sock = xs_create_sock(xprt, transport,
-@@ -1988,6 +1993,7 @@ static void xs_udp_setup_socket(struct work_struct *work)
- out:
- xprt_clear_connecting(xprt);
- xprt_wake_pending_tasks(xprt, status);
-+ current->flags &= ~PF_FSTRANS;
- }
-
- /*
-@@ -2113,6 +2119,8 @@ static void xs_tcp_setup_socket(struct work_struct *work)
- if (xprt->shutdown)
- goto out;
-
-+ current->flags |= PF_FSTRANS;
-+
- if (!sock) {
- clear_bit(XPRT_CONNECTION_ABORT, &xprt->state);
- sock = xs_create_sock(xprt, transport,
-@@ -2162,6 +2170,7 @@ static void xs_tcp_setup_socket(struct work_struct *work)
- case -EINPROGRESS:
- case -EALREADY:
- xprt_clear_connecting(xprt);
-+ current->flags &= ~PF_FSTRANS;
- return;
- case -EINVAL:
- /* Happens, for instance, if the user specified a link
-@@ -2174,6 +2183,7 @@ out_eagain:
- out:
- xprt_clear_connecting(xprt);
- xprt_wake_pending_tasks(xprt, status);
-+ current->flags &= ~PF_FSTRANS;
- }
-
- /**
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0041-md-raid1-don-t-abort-a-resync-on-the-first-badblock.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0041-md-raid1-don-t-abort-a-resync-on-the-first-badblock.patch
deleted file mode 100644
index 5cbbca6..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0041-md-raid1-don-t-abort-a-resync-on-the-first-badblock.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From 30dede5f9785f15bda14b54146afa5d3bd8ebcef Mon Sep 17 00:00:00 2001
-From: NeilBrown <neilb at suse.de>
-Date: Tue, 31 Jul 2012 10:05:34 +1000
-Subject: [PATCH 41/70] md/raid1: don't abort a resync on the first badblock.
-
-commit b7219ccb33aa0df9949a60c68b5e9f712615e56f upstream.
-
-If a resync of a RAID1 array with 2 devices finds a known bad block
-one device it will neither read from, or write to, that device for
-this block offset.
-So there will be one read_target (The other device) and zero write
-targets.
-This condition causes md/raid1 to abort the resync assuming that it
-has finished - without known bad blocks this would be true.
-
-When there are no write targets because of the presence of bad blocks
-we should only skip over the area covered by the bad block.
-RAID10 already gets this right, raid1 doesn't. Or didn't.
-
-As this can cause a 'sync' to abort early and appear to have succeeded
-it could lead to some data corruption, so it suitable for -stable.
-
-Reported-by: Alexander Lyakas <alex.bolshoy at gmail.com>
-Signed-off-by: NeilBrown <neilb at suse.de>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/md/raid1.c | 5 ++++-
- 1 files changed, 4 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c
-index 2d97bf0..62306e5 100644
---- a/drivers/md/raid1.c
-+++ b/drivers/md/raid1.c
-@@ -2321,7 +2321,10 @@ static sector_t sync_request(struct mddev *mddev, sector_t sector_nr, int *skipp
- /* There is nowhere to write, so all non-sync
- * drives must be failed - so we are finished
- */
-- sector_t rv = max_sector - sector_nr;
-+ sector_t rv;
-+ if (min_bad > 0)
-+ max_sector = sector_nr + min_bad;
-+ rv = max_sector - sector_nr;
- *skipped = 1;
- put_buf(r1_bio);
- return rv;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0042-pcdp-use-early_ioremap-early_iounmap-to-access-pcdp-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0042-pcdp-use-early_ioremap-early_iounmap-to-access-pcdp-.patch
deleted file mode 100644
index 5d73f17..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0042-pcdp-use-early_ioremap-early_iounmap-to-access-pcdp-.patch
+++ /dev/null
@@ -1,73 +0,0 @@
-From d95d761e05255b4aadcc2978c41cbabb0fba5069 Mon Sep 17 00:00:00 2001
-From: Greg Pearson <greg.pearson at hp.com>
-Date: Mon, 30 Jul 2012 14:39:05 -0700
-Subject: [PATCH 42/70] pcdp: use early_ioremap/early_iounmap to access pcdp
- table
-
-commit 6c4088ac3a4d82779903433bcd5f048c58fb1aca upstream.
-
-efi_setup_pcdp_console() is called during boot to parse the HCDP/PCDP
-EFI system table and setup an early console for printk output. The
-routine uses ioremap/iounmap to setup access to the HCDP/PCDP table
-information.
-
-The call to ioremap is happening early in the boot process which leads
-to a panic on x86_64 systems:
-
- panic+0x01ca
- do_exit+0x043c
- oops_end+0x00a7
- no_context+0x0119
- __bad_area_nosemaphore+0x0138
- bad_area_nosemaphore+0x000e
- do_page_fault+0x0321
- page_fault+0x0020
- reserve_memtype+0x02a1
- __ioremap_caller+0x0123
- ioremap_nocache+0x0012
- efi_setup_pcdp_console+0x002b
- setup_arch+0x03a9
- start_kernel+0x00d4
- x86_64_start_reservations+0x012c
- x86_64_start_kernel+0x00fe
-
-This replaces the calls to ioremap/iounmap in efi_setup_pcdp_console()
-with calls to early_ioremap/early_iounmap which can be called during
-early boot.
-
-This patch was tested on an x86_64 prototype system which uses the
-HCDP/PCDP table for early console setup.
-
-Signed-off-by: Greg Pearson <greg.pearson at hp.com>
-Acked-by: Khalid Aziz <khalid.aziz at hp.com>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/firmware/pcdp.c | 4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/firmware/pcdp.c b/drivers/firmware/pcdp.c
-index 51e0e2d..a330492 100644
---- a/drivers/firmware/pcdp.c
-+++ b/drivers/firmware/pcdp.c
-@@ -95,7 +95,7 @@ efi_setup_pcdp_console(char *cmdline)
- if (efi.hcdp == EFI_INVALID_TABLE_ADDR)
- return -ENODEV;
-
-- pcdp = ioremap(efi.hcdp, 4096);
-+ pcdp = early_ioremap(efi.hcdp, 4096);
- printk(KERN_INFO "PCDP: v%d at 0x%lx\n", pcdp->rev, efi.hcdp);
-
- if (strstr(cmdline, "console=hcdp")) {
-@@ -131,6 +131,6 @@ efi_setup_pcdp_console(char *cmdline)
- }
-
- out:
-- iounmap(pcdp);
-+ early_iounmap(pcdp, 4096);
- return rc;
- }
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0043-lib-vsprintf.c-kptr_restrict-fix-pK-error-in-SysRq-s.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0043-lib-vsprintf.c-kptr_restrict-fix-pK-error-in-SysRq-s.patch
deleted file mode 100644
index 791a80e..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0043-lib-vsprintf.c-kptr_restrict-fix-pK-error-in-SysRq-s.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From a0a91da6c89df972be571c3b3cc7288dcab8b501 Mon Sep 17 00:00:00 2001
-From: Dan Rosenberg <drosenberg at vsecurity.com>
-Date: Mon, 30 Jul 2012 14:40:26 -0700
-Subject: [PATCH 43/70] lib/vsprintf.c: kptr_restrict: fix pK-error in SysRq
- show-all-timers(Q)
-
-commit 3715c5309f6d175c3053672b73fd4f73be16fd07 upstream.
-
-When using ALT+SysRq+Q all the pointers are replaced with "pK-error" like
-this:
-
- [23153.208033] .base: pK-error
-
-with echo h > /proc/sysrq-trigger it works:
-
- [23107.776363] .base: ffff88023e60d540
-
-The intent behind this behavior was to return "pK-error" in cases where
-the %pK format specifier was used in interrupt context, because the
-CAP_SYSLOG check wouldn't be meaningful. Clearly this should only apply
-when kptr_restrict is actually enabled though.
-
-Reported-by: Stevie Trujillo <stevie.trujillo at gmail.com>
-Signed-off-by: Dan Rosenberg <dan.j.rosenberg at gmail.com>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- lib/vsprintf.c | 3 ++-
- 1 files changed, 2 insertions(+), 1 deletions(-)
-
-diff --git a/lib/vsprintf.c b/lib/vsprintf.c
-index 993599e..d74c317 100644
---- a/lib/vsprintf.c
-+++ b/lib/vsprintf.c
-@@ -886,7 +886,8 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr,
- * %pK cannot be used in IRQ context because its test
- * for CAP_SYSLOG would be meaningless.
- */
-- if (in_irq() || in_serving_softirq() || in_nmi()) {
-+ if (kptr_restrict && (in_irq() || in_serving_softirq() ||
-+ in_nmi())) {
- if (spec.field_width == -1)
- spec.field_width = 2 * sizeof(void *);
- return string(buf, end, "pK-error", spec);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0044-nilfs2-fix-deadlock-issue-between-chcp-and-thaw-ioct.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0044-nilfs2-fix-deadlock-issue-between-chcp-and-thaw-ioct.patch
deleted file mode 100644
index 081eb4b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0044-nilfs2-fix-deadlock-issue-between-chcp-and-thaw-ioct.patch
+++ /dev/null
@@ -1,144 +0,0 @@
-From 9cdd3090a527c3174e3db476d1e86db6e9b2333e Mon Sep 17 00:00:00 2001
-From: Ryusuke Konishi <konishi.ryusuke at lab.ntt.co.jp>
-Date: Mon, 30 Jul 2012 14:42:07 -0700
-Subject: [PATCH 44/70] nilfs2: fix deadlock issue between chcp and thaw
- ioctls
-
-commit 572d8b3945a31bee7c40d21556803e4807fd9141 upstream.
-
-An fs-thaw ioctl causes deadlock with a chcp or mkcp -s command:
-
- chcp D ffff88013870f3d0 0 1325 1324 0x00000004
- ...
- Call Trace:
- nilfs_transaction_begin+0x11c/0x1a0 [nilfs2]
- wake_up_bit+0x20/0x20
- copy_from_user+0x18/0x30 [nilfs2]
- nilfs_ioctl_change_cpmode+0x7d/0xcf [nilfs2]
- nilfs_ioctl+0x252/0x61a [nilfs2]
- do_page_fault+0x311/0x34c
- get_unmapped_area+0x132/0x14e
- do_vfs_ioctl+0x44b/0x490
- __set_task_blocked+0x5a/0x61
- vm_mmap_pgoff+0x76/0x87
- __set_current_blocked+0x30/0x4a
- sys_ioctl+0x4b/0x6f
- system_call_fastpath+0x16/0x1b
- thaw D ffff88013870d890 0 1352 1351 0x00000004
- ...
- Call Trace:
- rwsem_down_failed_common+0xdb/0x10f
- call_rwsem_down_write_failed+0x13/0x20
- down_write+0x25/0x27
- thaw_super+0x13/0x9e
- do_vfs_ioctl+0x1f5/0x490
- vm_mmap_pgoff+0x76/0x87
- sys_ioctl+0x4b/0x6f
- filp_close+0x64/0x6c
- system_call_fastpath+0x16/0x1b
-
-where the thaw ioctl deadlocked at thaw_super() when called while chcp was
-waiting at nilfs_transaction_begin() called from
-nilfs_ioctl_change_cpmode(). This deadlock is 100% reproducible.
-
-This is because nilfs_ioctl_change_cpmode() first locks sb->s_umount in
-read mode and then waits for unfreezing in nilfs_transaction_begin(),
-whereas thaw_super() locks sb->s_umount in write mode. The locking of
-sb->s_umount here was intended to make snapshot mounts and the downgrade
-of snapshots to checkpoints exclusive.
-
-This fixes the deadlock issue by replacing the sb->s_umount usage in
-nilfs_ioctl_change_cpmode() with a dedicated mutex which protects snapshot
-mounts.
-
-Signed-off-by: Ryusuke Konishi <konishi.ryusuke at lab.ntt.co.jp>
-Cc: Fernando Luis Vazquez Cao <fernando at oss.ntt.co.jp>
-Tested-by: Ryusuke Konishi <konishi.ryusuke at lab.ntt.co.jp>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/nilfs2/ioctl.c | 4 ++--
- fs/nilfs2/super.c | 3 +++
- fs/nilfs2/the_nilfs.c | 1 +
- fs/nilfs2/the_nilfs.h | 2 ++
- 4 files changed, 8 insertions(+), 2 deletions(-)
-
-diff --git a/fs/nilfs2/ioctl.c b/fs/nilfs2/ioctl.c
-index ac258be..c598cfb 100644
---- a/fs/nilfs2/ioctl.c
-+++ b/fs/nilfs2/ioctl.c
-@@ -182,7 +182,7 @@ static int nilfs_ioctl_change_cpmode(struct inode *inode, struct file *filp,
- if (copy_from_user(&cpmode, argp, sizeof(cpmode)))
- goto out;
-
-- down_read(&inode->i_sb->s_umount);
-+ mutex_lock(&nilfs->ns_snapshot_mount_mutex);
-
- nilfs_transaction_begin(inode->i_sb, &ti, 0);
- ret = nilfs_cpfile_change_cpmode(
-@@ -192,7 +192,7 @@ static int nilfs_ioctl_change_cpmode(struct inode *inode, struct file *filp,
- else
- nilfs_transaction_commit(inode->i_sb); /* never fails */
-
-- up_read(&inode->i_sb->s_umount);
-+ mutex_unlock(&nilfs->ns_snapshot_mount_mutex);
- out:
- mnt_drop_write(filp->f_path.mnt);
- return ret;
-diff --git a/fs/nilfs2/super.c b/fs/nilfs2/super.c
-index 8351c44..97bfbdd 100644
---- a/fs/nilfs2/super.c
-+++ b/fs/nilfs2/super.c
-@@ -951,6 +951,8 @@ static int nilfs_attach_snapshot(struct super_block *s, __u64 cno,
- struct nilfs_root *root;
- int ret;
-
-+ mutex_lock(&nilfs->ns_snapshot_mount_mutex);
-+
- down_read(&nilfs->ns_segctor_sem);
- ret = nilfs_cpfile_is_snapshot(nilfs->ns_cpfile, cno);
- up_read(&nilfs->ns_segctor_sem);
-@@ -975,6 +977,7 @@ static int nilfs_attach_snapshot(struct super_block *s, __u64 cno,
- ret = nilfs_get_root_dentry(s, root, root_dentry);
- nilfs_put_root(root);
- out:
-+ mutex_unlock(&nilfs->ns_snapshot_mount_mutex);
- return ret;
- }
-
-diff --git a/fs/nilfs2/the_nilfs.c b/fs/nilfs2/the_nilfs.c
-index 35a8970..1c98f53 100644
---- a/fs/nilfs2/the_nilfs.c
-+++ b/fs/nilfs2/the_nilfs.c
-@@ -76,6 +76,7 @@ struct the_nilfs *alloc_nilfs(struct block_device *bdev)
- nilfs->ns_bdev = bdev;
- atomic_set(&nilfs->ns_ndirtyblks, 0);
- init_rwsem(&nilfs->ns_sem);
-+ mutex_init(&nilfs->ns_snapshot_mount_mutex);
- INIT_LIST_HEAD(&nilfs->ns_dirty_files);
- INIT_LIST_HEAD(&nilfs->ns_gc_inodes);
- spin_lock_init(&nilfs->ns_inode_lock);
-diff --git a/fs/nilfs2/the_nilfs.h b/fs/nilfs2/the_nilfs.h
-index 9992b11..de7435f 100644
---- a/fs/nilfs2/the_nilfs.h
-+++ b/fs/nilfs2/the_nilfs.h
-@@ -47,6 +47,7 @@ enum {
- * @ns_flags: flags
- * @ns_bdev: block device
- * @ns_sem: semaphore for shared states
-+ * @ns_snapshot_mount_mutex: mutex to protect snapshot mounts
- * @ns_sbh: buffer heads of on-disk super blocks
- * @ns_sbp: pointers to super block data
- * @ns_sbwtime: previous write time of super block
-@@ -99,6 +100,7 @@ struct the_nilfs {
-
- struct block_device *ns_bdev;
- struct rw_semaphore ns_sem;
-+ struct mutex ns_snapshot_mount_mutex;
-
- /*
- * used for
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0045-SUNRPC-return-negative-value-in-case-rpcbind-client-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0045-SUNRPC-return-negative-value-in-case-rpcbind-client-.patch
deleted file mode 100644
index 78d6dc3..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0045-SUNRPC-return-negative-value-in-case-rpcbind-client-.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From 2bf260f82454f5f3809e8bb31cf158abdc7259a3 Mon Sep 17 00:00:00 2001
-From: Stanislav Kinsbursky <skinsbursky at parallels.com>
-Date: Fri, 20 Jul 2012 15:57:48 +0400
-Subject: [PATCH 45/70] SUNRPC: return negative value in case rpcbind client
- creation error
-
-commit caea33da898e4e14f0ba58173e3b7689981d2c0b upstream.
-
-Without this patch kernel will panic on LockD start, because lockd_up() checks
-lockd_up_net() result for negative value.
-From my pow it's better to return negative value from rpcbind routines instead
-of replacing all such checks like in lockd_up().
-
-Signed-off-by: Stanislav Kinsbursky <skinsbursky at parallels.com>
-Signed-off-by: Trond Myklebust <Trond.Myklebust at netapp.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/sunrpc/rpcb_clnt.c | 4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/net/sunrpc/rpcb_clnt.c b/net/sunrpc/rpcb_clnt.c
-index 8761bf8..337c68b 100644
---- a/net/sunrpc/rpcb_clnt.c
-+++ b/net/sunrpc/rpcb_clnt.c
-@@ -246,7 +246,7 @@ static int rpcb_create_local_unix(void)
- if (IS_ERR(clnt)) {
- dprintk("RPC: failed to create AF_LOCAL rpcbind "
- "client (errno %ld).\n", PTR_ERR(clnt));
-- result = -PTR_ERR(clnt);
-+ result = PTR_ERR(clnt);
- goto out;
- }
-
-@@ -293,7 +293,7 @@ static int rpcb_create_local_net(void)
- if (IS_ERR(clnt)) {
- dprintk("RPC: failed to create local rpcbind "
- "client (errno %ld).\n", PTR_ERR(clnt));
-- result = -PTR_ERR(clnt);
-+ result = PTR_ERR(clnt);
- goto out;
- }
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0046-ARM-7467-1-mutex-use-generic-xchg-based-implementati.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0046-ARM-7467-1-mutex-use-generic-xchg-based-implementati.patch
deleted file mode 100644
index 0808024..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0046-ARM-7467-1-mutex-use-generic-xchg-based-implementati.patch
+++ /dev/null
@@ -1,165 +0,0 @@
-From 28c5c473fd1dffcd9dacfc1b4ea643181398f149 Mon Sep 17 00:00:00 2001
-From: Will Deacon <will.deacon at arm.com>
-Date: Fri, 13 Jul 2012 19:15:40 +0100
-Subject: [PATCH 46/70] ARM: 7467/1: mutex: use generic xchg-based
- implementation for ARMv6+
-
-commit a76d7bd96d65fa5119adba97e1b58d95f2e78829 upstream.
-
-The open-coded mutex implementation for ARMv6+ cores suffers from a
-severe lack of barriers, so in the uncontended case we don't actually
-protect any accesses performed during the critical section.
-
-Furthermore, the code is largely a duplication of the ARMv6+ atomic_dec
-code but optimised to remove a branch instruction, as the mutex fastpath
-was previously inlined. Now that this is executed out-of-line, we can
-reuse the atomic access code for the locking (in fact, we use the xchg
-code as this produces shorter critical sections).
-
-This patch uses the generic xchg based implementation for mutexes on
-ARMv6+, which introduces barriers to the lock/unlock operations and also
-has the benefit of removing a fair amount of inline assembly code.
-
-Acked-by: Arnd Bergmann <arnd at arndb.de>
-Acked-by: Nicolas Pitre <nico at linaro.org>
-Reported-by: Shan Kang <kangshan0910 at gmail.com>
-Signed-off-by: Will Deacon <will.deacon at arm.com>
-Signed-off-by: Russell King <rmk+kernel at arm.linux.org.uk>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/arm/include/asm/mutex.h | 119 ++----------------------------------------
- 1 files changed, 4 insertions(+), 115 deletions(-)
-
-diff --git a/arch/arm/include/asm/mutex.h b/arch/arm/include/asm/mutex.h
-index 93226cf..b1479fd 100644
---- a/arch/arm/include/asm/mutex.h
-+++ b/arch/arm/include/asm/mutex.h
-@@ -7,121 +7,10 @@
- */
- #ifndef _ASM_MUTEX_H
- #define _ASM_MUTEX_H
--
--#if __LINUX_ARM_ARCH__ < 6
--/* On pre-ARMv6 hardware the swp based implementation is the most efficient. */
--# include <asm-generic/mutex-xchg.h>
--#else
--
- /*
-- * Attempting to lock a mutex on ARMv6+ can be done with a bastardized
-- * atomic decrement (it is not a reliable atomic decrement but it satisfies
-- * the defined semantics for our purpose, while being smaller and faster
-- * than a real atomic decrement or atomic swap. The idea is to attempt
-- * decrementing the lock value only once. If once decremented it isn't zero,
-- * or if its store-back fails due to a dispute on the exclusive store, we
-- * simply bail out immediately through the slow path where the lock will be
-- * reattempted until it succeeds.
-+ * On pre-ARMv6 hardware this results in a swp-based implementation,
-+ * which is the most efficient. For ARMv6+, we emit a pair of exclusive
-+ * accesses instead.
- */
--static inline void
--__mutex_fastpath_lock(atomic_t *count, void (*fail_fn)(atomic_t *))
--{
-- int __ex_flag, __res;
--
-- __asm__ (
--
-- "ldrex %0, [%2] \n\t"
-- "sub %0, %0, #1 \n\t"
-- "strex %1, %0, [%2] "
--
-- : "=&r" (__res), "=&r" (__ex_flag)
-- : "r" (&(count)->counter)
-- : "cc","memory" );
--
-- __res |= __ex_flag;
-- if (unlikely(__res != 0))
-- fail_fn(count);
--}
--
--static inline int
--__mutex_fastpath_lock_retval(atomic_t *count, int (*fail_fn)(atomic_t *))
--{
-- int __ex_flag, __res;
--
-- __asm__ (
--
-- "ldrex %0, [%2] \n\t"
-- "sub %0, %0, #1 \n\t"
-- "strex %1, %0, [%2] "
--
-- : "=&r" (__res), "=&r" (__ex_flag)
-- : "r" (&(count)->counter)
-- : "cc","memory" );
--
-- __res |= __ex_flag;
-- if (unlikely(__res != 0))
-- __res = fail_fn(count);
-- return __res;
--}
--
--/*
-- * Same trick is used for the unlock fast path. However the original value,
-- * rather than the result, is used to test for success in order to have
-- * better generated assembly.
-- */
--static inline void
--__mutex_fastpath_unlock(atomic_t *count, void (*fail_fn)(atomic_t *))
--{
-- int __ex_flag, __res, __orig;
--
-- __asm__ (
--
-- "ldrex %0, [%3] \n\t"
-- "add %1, %0, #1 \n\t"
-- "strex %2, %1, [%3] "
--
-- : "=&r" (__orig), "=&r" (__res), "=&r" (__ex_flag)
-- : "r" (&(count)->counter)
-- : "cc","memory" );
--
-- __orig |= __ex_flag;
-- if (unlikely(__orig != 0))
-- fail_fn(count);
--}
--
--/*
-- * If the unlock was done on a contended lock, or if the unlock simply fails
-- * then the mutex remains locked.
-- */
--#define __mutex_slowpath_needs_to_unlock() 1
--
--/*
-- * For __mutex_fastpath_trylock we use another construct which could be
-- * described as a "single value cmpxchg".
-- *
-- * This provides the needed trylock semantics like cmpxchg would, but it is
-- * lighter and less generic than a true cmpxchg implementation.
-- */
--static inline int
--__mutex_fastpath_trylock(atomic_t *count, int (*fail_fn)(atomic_t *))
--{
-- int __ex_flag, __res, __orig;
--
-- __asm__ (
--
-- "1: ldrex %0, [%3] \n\t"
-- "subs %1, %0, #1 \n\t"
-- "strexeq %2, %1, [%3] \n\t"
-- "movlt %0, #0 \n\t"
-- "cmpeq %2, #0 \n\t"
-- "bgt 1b "
--
-- : "=&r" (__orig), "=&r" (__res), "=&r" (__ex_flag)
-- : "r" (&count->counter)
-- : "cc", "memory" );
--
-- return __orig;
--}
--
--#endif
-+#include <asm-generic/mutex-xchg.h>
- #endif
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0047-ARM-7476-1-vfp-only-clear-vfp-state-for-current-cpu-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0047-ARM-7476-1-vfp-only-clear-vfp-state-for-current-cpu-.patch
deleted file mode 100644
index d7aaf22..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0047-ARM-7476-1-vfp-only-clear-vfp-state-for-current-cpu-.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 57a8207d3a9a4df2ed7a736afa04cdff4b1eae03 Mon Sep 17 00:00:00 2001
-From: Colin Cross <ccross at android.com>
-Date: Fri, 20 Jul 2012 02:03:43 +0100
-Subject: [PATCH 47/70] ARM: 7476/1: vfp: only clear vfp state for current cpu
- in vfp_pm_suspend
-
-commit a84b895a2348f0dbff31b71ddf954f70a6cde368 upstream.
-
-vfp_pm_suspend runs on each cpu, only clear the hardware state
-pointer for the current cpu. Prevents a possible crash if one
-cpu clears the hw state pointer when another cpu has already
-checked if it is valid.
-
-Signed-off-by: Colin Cross <ccross at android.com>
-Signed-off-by: Russell King <rmk+kernel at arm.linux.org.uk>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/arm/vfp/vfpmodule.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/arch/arm/vfp/vfpmodule.c b/arch/arm/vfp/vfpmodule.c
-index 8ea07e4..61e11ce 100644
---- a/arch/arm/vfp/vfpmodule.c
-+++ b/arch/arm/vfp/vfpmodule.c
-@@ -456,7 +456,7 @@ static int vfp_pm_suspend(void)
- }
-
- /* clear any information we had about last context state */
-- memset(vfp_current_hw_state, 0, sizeof(vfp_current_hw_state));
-+ vfp_current_hw_state[ti->cpu] = NULL;
-
- return 0;
- }
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0048-ARM-7477-1-vfp-Always-save-VFP-state-in-vfp_pm_suspe.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0048-ARM-7477-1-vfp-Always-save-VFP-state-in-vfp_pm_suspe.patch
deleted file mode 100644
index aa5978e..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0048-ARM-7477-1-vfp-Always-save-VFP-state-in-vfp_pm_suspe.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From 670bc10621ecb0750e22b72dc873b4ade756fd73 Mon Sep 17 00:00:00 2001
-From: Colin Cross <ccross at android.com>
-Date: Fri, 20 Jul 2012 02:03:42 +0100
-Subject: [PATCH 48/70] ARM: 7477/1: vfp: Always save VFP state in
- vfp_pm_suspend on UP
-
-commit 24b35521b8ddf088531258f06f681bb7b227bf47 upstream.
-
-vfp_pm_suspend should save the VFP state in suspend after
-any lazy context switch. If it only saves when the VFP is enabled,
-the state can get lost when, on a UP system:
- Thread 1 uses the VFP
- Context switch occurs to thread 2, VFP is disabled but the
- VFP context is not saved
- Thread 2 initiates suspend
- vfp_pm_suspend is called with the VFP disabled, and the unsaved
- VFP context of Thread 1 in the registers
-
-Modify vfp_pm_suspend to save the VFP context whenever
-vfp_current_hw_state is not NULL.
-
-Includes a fix from Ido Yariv <ido at wizery.com>, who pointed out that on
-SMP systems, the state pointer can be pointing to a freed task struct if
-a task exited on another cpu, fixed by using #ifndef CONFIG_SMP in the
-new if clause.
-
-Cc: Barry Song <bs14 at csr.com>
-Cc: Catalin Marinas <catalin.marinas at arm.com>
-Cc: Ido Yariv <ido at wizery.com>
-Cc: Daniel Drake <dsd at laptop.org>
-Cc: Will Deacon <will.deacon at arm.com>
-Signed-off-by: Colin Cross <ccross at android.com>
-Signed-off-by: Russell King <rmk+kernel at arm.linux.org.uk>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/arm/vfp/vfpmodule.c | 6 ++++++
- 1 files changed, 6 insertions(+), 0 deletions(-)
-
-diff --git a/arch/arm/vfp/vfpmodule.c b/arch/arm/vfp/vfpmodule.c
-index 61e11ce..ad83dad 100644
---- a/arch/arm/vfp/vfpmodule.c
-+++ b/arch/arm/vfp/vfpmodule.c
-@@ -453,6 +453,12 @@ static int vfp_pm_suspend(void)
-
- /* disable, just in case */
- fmxr(FPEXC, fmrx(FPEXC) & ~FPEXC_EN);
-+ } else if (vfp_current_hw_state[ti->cpu]) {
-+#ifndef CONFIG_SMP
-+ fmxr(FPEXC, fpexc | FPEXC_EN);
-+ vfp_save_state(vfp_current_hw_state[ti->cpu], fpexc);
-+ fmxr(FPEXC, fpexc);
-+#endif
- }
-
- /* clear any information we had about last context state */
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0049-ARM-7478-1-errata-extend-workaround-for-erratum-7207.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0049-ARM-7478-1-errata-extend-workaround-for-erratum-7207.patch
deleted file mode 100644
index 0940ef0..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0049-ARM-7478-1-errata-extend-workaround-for-erratum-7207.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From 98922b7089b3ef806a0c3bae3c7e10e5618e4859 Mon Sep 17 00:00:00 2001
-From: Will Deacon <will.deacon at arm.com>
-Date: Fri, 20 Jul 2012 18:24:55 +0100
-Subject: [PATCH 49/70] ARM: 7478/1: errata: extend workaround for erratum
- #720789
-
-commit 5a783cbc48367cfc7b65afc75430953dfe60098f upstream.
-
-Commit cdf357f1 ("ARM: 6299/1: errata: TLBIASIDIS and TLBIMVAIS
-operations can broadcast a faulty ASID") replaced by-ASID TLB flushing
-operations with all-ASID variants to workaround A9 erratum #720789.
-
-This patch extends the workaround to include the tlb_range operations,
-which were overlooked by the original patch.
-
-Tested-by: Steve Capper <steve.capper at arm.com>
-Signed-off-by: Will Deacon <will.deacon at arm.com>
-Signed-off-by: Russell King <rmk+kernel at arm.linux.org.uk>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/arm/mm/tlb-v7.S | 12 ++++++++++++
- 1 files changed, 12 insertions(+), 0 deletions(-)
-
-diff --git a/arch/arm/mm/tlb-v7.S b/arch/arm/mm/tlb-v7.S
-index 845f461..c202113 100644
---- a/arch/arm/mm/tlb-v7.S
-+++ b/arch/arm/mm/tlb-v7.S
-@@ -38,11 +38,19 @@ ENTRY(v7wbi_flush_user_tlb_range)
- dsb
- mov r0, r0, lsr #PAGE_SHIFT @ align address
- mov r1, r1, lsr #PAGE_SHIFT
-+#ifdef CONFIG_ARM_ERRATA_720789
-+ mov r3, #0
-+#else
- asid r3, r3 @ mask ASID
-+#endif
- orr r0, r3, r0, lsl #PAGE_SHIFT @ Create initial MVA
- mov r1, r1, lsl #PAGE_SHIFT
- 1:
-+#ifdef CONFIG_ARM_ERRATA_720789
-+ ALT_SMP(mcr p15, 0, r0, c8, c3, 3) @ TLB invalidate U MVA all ASID (shareable)
-+#else
- ALT_SMP(mcr p15, 0, r0, c8, c3, 1) @ TLB invalidate U MVA (shareable)
-+#endif
- ALT_UP(mcr p15, 0, r0, c8, c7, 1) @ TLB invalidate U MVA
-
- add r0, r0, #PAGE_SZ
-@@ -67,7 +75,11 @@ ENTRY(v7wbi_flush_kern_tlb_range)
- mov r0, r0, lsl #PAGE_SHIFT
- mov r1, r1, lsl #PAGE_SHIFT
- 1:
-+#ifdef CONFIG_ARM_ERRATA_720789
-+ ALT_SMP(mcr p15, 0, r0, c8, c3, 3) @ TLB invalidate U MVA all ASID (shareable)
-+#else
- ALT_SMP(mcr p15, 0, r0, c8, c3, 1) @ TLB invalidate U MVA (shareable)
-+#endif
- ALT_UP(mcr p15, 0, r0, c8, c7, 1) @ TLB invalidate U MVA
- add r0, r0, #PAGE_SZ
- cmp r0, r1
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0050-ARM-Fix-undefined-instruction-exception-handling.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0050-ARM-Fix-undefined-instruction-exception-handling.patch
deleted file mode 100644
index 0b98409..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0050-ARM-Fix-undefined-instruction-exception-handling.patch
+++ /dev/null
@@ -1,335 +0,0 @@
-From 6b090d4fbcfaaa71f311f47019e622a794b0fca4 Mon Sep 17 00:00:00 2001
-From: Russell King <rmk+kernel at arm.linux.org.uk>
-Date: Mon, 30 Jul 2012 19:42:10 +0100
-Subject: [PATCH 50/70] ARM: Fix undefined instruction exception handling
-
-commit 15ac49b65024f55c4371a53214879a9c77c4fbf9 upstream.
-
-While trying to get a v3.5 kernel booted on the cubox, I noticed that
-VFP does not work correctly with VFP bounce handling. This is because
-of the confusion over 16-bit vs 32-bit instructions, and where PC is
-supposed to point to.
-
-The rule is that FP handlers are entered with regs->ARM_pc pointing at
-the _next_ instruction to be executed. However, if the exception is
-not handled, regs->ARM_pc points at the faulting instruction.
-
-This is easy for ARM mode, because we know that the next instruction and
-previous instructions are separated by four bytes. This is not true of
-Thumb2 though.
-
-Since all FP instructions are 32-bit in Thumb2, it makes things easy.
-We just need to select the appropriate adjustment. Do this by moving
-the adjustment out of do_undefinstr() into the assembly code, as only
-the assembly code knows whether it's dealing with a 32-bit or 16-bit
-instruction.
-
-Acked-by: Will Deacon <will.deacon at arm.com>
-Signed-off-by: Russell King <rmk+kernel at arm.linux.org.uk>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/arm/kernel/entry-armv.S | 111 +++++++++++++++++++++++++++---------------
- arch/arm/kernel/traps.c | 8 ---
- arch/arm/vfp/entry.S | 16 +++---
- arch/arm/vfp/vfphw.S | 19 ++++---
- 4 files changed, 92 insertions(+), 62 deletions(-)
-
-diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S
-index 3a456c6..bc084a1 100644
---- a/arch/arm/kernel/entry-armv.S
-+++ b/arch/arm/kernel/entry-armv.S
-@@ -241,6 +241,19 @@ svc_preempt:
- b 1b
- #endif
-
-+__und_fault:
-+ @ Correct the PC such that it is pointing at the instruction
-+ @ which caused the fault. If the faulting instruction was ARM
-+ @ the PC will be pointing at the next instruction, and have to
-+ @ subtract 4. Otherwise, it is Thumb, and the PC will be
-+ @ pointing at the second half of the Thumb instruction. We
-+ @ have to subtract 2.
-+ ldr r2, [r0, #S_PC]
-+ sub r2, r2, r1
-+ str r2, [r0, #S_PC]
-+ b do_undefinstr
-+ENDPROC(__und_fault)
-+
- .align 5
- __und_svc:
- #ifdef CONFIG_KPROBES
-@@ -258,25 +271,32 @@ __und_svc:
- @
- @ r0 - instruction
- @
--#ifndef CONFIG_THUMB2_KERNEL
-+#ifndef CONFIG_THUMB2_KERNEL
- ldr r0, [r4, #-4]
- #else
-+ mov r1, #2
- ldrh r0, [r4, #-2] @ Thumb instruction at LR - 2
- cmp r0, #0xe800 @ 32-bit instruction if xx >= 0
-- ldrhhs r9, [r4] @ bottom 16 bits
-- orrhs r0, r9, r0, lsl #16
-+ blo __und_svc_fault
-+ ldrh r9, [r4] @ bottom 16 bits
-+ add r4, r4, #2
-+ str r4, [sp, #S_PC]
-+ orr r0, r9, r0, lsl #16
- #endif
-- adr r9, BSYM(1f)
-+ adr r9, BSYM(__und_svc_finish)
- mov r2, r4
- bl call_fpe
-
-+ mov r1, #4 @ PC correction to apply
-+__und_svc_fault:
- mov r0, sp @ struct pt_regs *regs
-- bl do_undefinstr
-+ bl __und_fault
-
- @
- @ IRQs off again before pulling preserved data off the stack
- @
--1: disable_irq_notrace
-+__und_svc_finish:
-+ disable_irq_notrace
-
- @
- @ restore SPSR and restart the instruction
-@@ -420,25 +440,33 @@ __und_usr:
- mov r2, r4
- mov r3, r5
-
-+ @ r2 = regs->ARM_pc, which is either 2 or 4 bytes ahead of the
-+ @ faulting instruction depending on Thumb mode.
-+ @ r3 = regs->ARM_cpsr
- @
-- @ fall through to the emulation code, which returns using r9 if
-- @ it has emulated the instruction, or the more conventional lr
-- @ if we are to treat this as a real undefined instruction
-- @
-- @ r0 - instruction
-+ @ The emulation code returns using r9 if it has emulated the
-+ @ instruction, or the more conventional lr if we are to treat
-+ @ this as a real undefined instruction
- @
- adr r9, BSYM(ret_from_exception)
-- adr lr, BSYM(__und_usr_unknown)
-+
- tst r3, #PSR_T_BIT @ Thumb mode?
-- itet eq @ explicit IT needed for the 1f label
-- subeq r4, r2, #4 @ ARM instr at LR - 4
-- subne r4, r2, #2 @ Thumb instr at LR - 2
--1: ldreqt r0, [r4]
-+ bne __und_usr_thumb
-+ sub r4, r2, #4 @ ARM instr at LR - 4
-+1: ldrt r0, [r4]
- #ifdef CONFIG_CPU_ENDIAN_BE8
-- reveq r0, r0 @ little endian instruction
-+ rev r0, r0 @ little endian instruction
- #endif
-- beq call_fpe
-+ @ r0 = 32-bit ARM instruction which caused the exception
-+ @ r2 = PC value for the following instruction (:= regs->ARM_pc)
-+ @ r4 = PC value for the faulting instruction
-+ @ lr = 32-bit undefined instruction function
-+ adr lr, BSYM(__und_usr_fault_32)
-+ b call_fpe
-+
-+__und_usr_thumb:
- @ Thumb instruction
-+ sub r4, r2, #2 @ First half of thumb instr at LR - 2
- #if CONFIG_ARM_THUMB && __LINUX_ARM_ARCH__ >= 6 && CONFIG_CPU_V7
- /*
- * Thumb-2 instruction handling. Note that because pre-v6 and >= v6 platforms
-@@ -452,7 +480,7 @@ __und_usr:
- ldr r5, .LCcpu_architecture
- ldr r5, [r5]
- cmp r5, #CPU_ARCH_ARMv7
-- blo __und_usr_unknown
-+ blo __und_usr_fault_16 @ 16bit undefined instruction
- /*
- * The following code won't get run unless the running CPU really is v7, so
- * coding round the lack of ldrht on older arches is pointless. Temporarily
-@@ -460,15 +488,18 @@ __und_usr:
- */
- .arch armv6t2
- #endif
--2:
-- ARM( ldrht r5, [r4], #2 )
-- THUMB( ldrht r5, [r4] )
-- THUMB( add r4, r4, #2 )
-+2: ldrht r5, [r4]
- cmp r5, #0xe800 @ 32bit instruction if xx != 0
-- blo __und_usr_unknown
--3: ldrht r0, [r4]
-+ blo __und_usr_fault_16 @ 16bit undefined instruction
-+3: ldrht r0, [r2]
- add r2, r2, #2 @ r2 is PC + 2, make it PC + 4
-+ str r2, [sp, #S_PC] @ it's a 2x16bit instr, update
- orr r0, r0, r5, lsl #16
-+ adr lr, BSYM(__und_usr_fault_32)
-+ @ r0 = the two 16-bit Thumb instructions which caused the exception
-+ @ r2 = PC value for the following Thumb instruction (:= regs->ARM_pc)
-+ @ r4 = PC value for the first 16-bit Thumb instruction
-+ @ lr = 32bit undefined instruction function
-
- #if __LINUX_ARM_ARCH__ < 7
- /* If the target arch was overridden, change it back: */
-@@ -479,17 +510,13 @@ __und_usr:
- #endif
- #endif /* __LINUX_ARM_ARCH__ < 7 */
- #else /* !(CONFIG_ARM_THUMB && __LINUX_ARM_ARCH__ >= 6 && CONFIG_CPU_V7) */
-- b __und_usr_unknown
-+ b __und_usr_fault_16
- #endif
-- UNWIND(.fnend )
-+ UNWIND(.fnend)
- ENDPROC(__und_usr)
-
-- @
-- @ fallthrough to call_fpe
-- @
--
- /*
-- * The out of line fixup for the ldrt above.
-+ * The out of line fixup for the ldrt instructions above.
- */
- .pushsection .fixup, "ax"
- 4: mov pc, r9
-@@ -520,11 +547,12 @@ ENDPROC(__und_usr)
- * NEON handler code.
- *
- * Emulators may wish to make use of the following registers:
-- * r0 = instruction opcode.
-- * r2 = PC+4
-+ * r0 = instruction opcode (32-bit ARM or two 16-bit Thumb)
-+ * r2 = PC value to resume execution after successful emulation
- * r9 = normal "successful" return address
-- * r10 = this threads thread_info structure.
-+ * r10 = this threads thread_info structure
- * lr = unrecognised instruction return address
-+ * IRQs disabled, FIQs enabled.
- */
- @
- @ Fall-through from Thumb-2 __und_usr
-@@ -659,12 +687,17 @@ ENTRY(no_fp)
- mov pc, lr
- ENDPROC(no_fp)
-
--__und_usr_unknown:
-- enable_irq
-+__und_usr_fault_32:
-+ mov r1, #4
-+ b 1f
-+__und_usr_fault_16:
-+ mov r1, #2
-+1: enable_irq
- mov r0, sp
- adr lr, BSYM(ret_from_exception)
-- b do_undefinstr
--ENDPROC(__und_usr_unknown)
-+ b __und_fault
-+ENDPROC(__und_usr_fault_32)
-+ENDPROC(__und_usr_fault_16)
-
- .align 5
- __pabt_usr:
-diff --git a/arch/arm/kernel/traps.c b/arch/arm/kernel/traps.c
-index 160cb16..8380bd1 100644
---- a/arch/arm/kernel/traps.c
-+++ b/arch/arm/kernel/traps.c
-@@ -362,18 +362,10 @@ static int call_undef_hook(struct pt_regs *regs, unsigned int instr)
-
- asmlinkage void __exception do_undefinstr(struct pt_regs *regs)
- {
-- unsigned int correction = thumb_mode(regs) ? 2 : 4;
- unsigned int instr;
- siginfo_t info;
- void __user *pc;
-
-- /*
-- * According to the ARM ARM, PC is 2 or 4 bytes ahead,
-- * depending whether we're in Thumb mode or not.
-- * Correct this offset.
-- */
-- regs->ARM_pc -= correction;
--
- pc = (void __user *)instruction_pointer(regs);
-
- if (processor_mode(regs) == SVC_MODE) {
-diff --git a/arch/arm/vfp/entry.S b/arch/arm/vfp/entry.S
-index 4fa9903..cc926c9 100644
---- a/arch/arm/vfp/entry.S
-+++ b/arch/arm/vfp/entry.S
-@@ -7,18 +7,20 @@
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
-- *
-- * Basic entry code, called from the kernel's undefined instruction trap.
-- * r0 = faulted instruction
-- * r5 = faulted PC+4
-- * r9 = successful return
-- * r10 = thread_info structure
-- * lr = failure return
- */
- #include <asm/thread_info.h>
- #include <asm/vfpmacros.h>
- #include "../kernel/entry-header.S"
-
-+@ VFP entry point.
-+@
-+@ r0 = instruction opcode (32-bit ARM or two 16-bit Thumb)
-+@ r2 = PC value to resume execution after successful emulation
-+@ r9 = normal "successful" return address
-+@ r10 = this threads thread_info structure
-+@ lr = unrecognised instruction return address
-+@ IRQs disabled.
-+@
- ENTRY(do_vfp)
- #ifdef CONFIG_PREEMPT
- ldr r4, [r10, #TI_PREEMPT] @ get preempt count
-diff --git a/arch/arm/vfp/vfphw.S b/arch/arm/vfp/vfphw.S
-index 2d30c7f..3a0efaa 100644
---- a/arch/arm/vfp/vfphw.S
-+++ b/arch/arm/vfp/vfphw.S
-@@ -61,13 +61,13 @@
-
- @ VFP hardware support entry point.
- @
--@ r0 = faulted instruction
--@ r2 = faulted PC+4
--@ r9 = successful return
-+@ r0 = instruction opcode (32-bit ARM or two 16-bit Thumb)
-+@ r2 = PC value to resume execution after successful emulation
-+@ r9 = normal "successful" return address
- @ r10 = vfp_state union
- @ r11 = CPU number
--@ lr = failure return
--
-+@ lr = unrecognised instruction return address
-+@ IRQs enabled.
- ENTRY(vfp_support_entry)
- DBGSTR3 "instr %08x pc %08x state %p", r0, r2, r10
-
-@@ -161,9 +161,12 @@ vfp_hw_state_valid:
- @ exception before retrying branch
- @ out before setting an FPEXC that
- @ stops us reading stuff
-- VFPFMXR FPEXC, r1 @ restore FPEXC last
-- sub r2, r2, #4
-- str r2, [sp, #S_PC] @ retry the instruction
-+ VFPFMXR FPEXC, r1 @ Restore FPEXC last
-+ sub r2, r2, #4 @ Retry current instruction - if Thumb
-+ str r2, [sp, #S_PC] @ mode it's two 16-bit instructions,
-+ @ else it's one 32-bit instruction, so
-+ @ always subtract 4 from the following
-+ @ instruction address.
- #ifdef CONFIG_PREEMPT
- get_thread_info r10
- ldr r4, [r10, #TI_PREEMPT] @ get preempt count
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0051-USB-echi-dbgp-increase-the-controller-wait-time-to-c.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0051-USB-echi-dbgp-increase-the-controller-wait-time-to-c.patch
deleted file mode 100644
index 39c9f4c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0051-USB-echi-dbgp-increase-the-controller-wait-time-to-c.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From d8b93bb6a3ec7a8092ad0ea2a3fa78746aba6471 Mon Sep 17 00:00:00 2001
-From: Colin Ian King <colin.king at canonical.com>
-Date: Mon, 30 Jul 2012 16:06:42 +0100
-Subject: [PATCH 51/70] USB: echi-dbgp: increase the controller wait time to
- come out of halt.
-
-commit f96a4216e85050c0a9d41a41ecb0ae9d8e39b509 upstream.
-
-The default 10 microsecond delay for the controller to come out of
-halt in dbgp_ehci_startup is too short, so increase it to 1 millisecond.
-
-This is based on emperical testing on various USB debug ports on
-modern machines such as a Lenovo X220i and an Ivybridge development
-platform that needed to wait ~450-950 microseconds.
-
-Signed-off-by: Colin Ian King <colin.king at canonical.com>
-Signed-off-by: Jason Wessel <jason.wessel at windriver.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/usb/early/ehci-dbgp.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/usb/early/ehci-dbgp.c b/drivers/usb/early/ehci-dbgp.c
-index 1fc8f12..347bb05 100644
---- a/drivers/usb/early/ehci-dbgp.c
-+++ b/drivers/usb/early/ehci-dbgp.c
-@@ -450,7 +450,7 @@ static int dbgp_ehci_startup(void)
- writel(FLAG_CF, &ehci_regs->configured_flag);
-
- /* Wait until the controller is no longer halted */
-- loop = 10;
-+ loop = 1000;
- do {
- status = readl(&ehci_regs->status);
- if (!(status & STS_HALT))
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0052-ASoC-wm8962-Allow-VMID-time-to-fully-ramp.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0052-ASoC-wm8962-Allow-VMID-time-to-fully-ramp.patch
deleted file mode 100644
index b9c1a03..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0052-ASoC-wm8962-Allow-VMID-time-to-fully-ramp.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 83c2f7e55e6b8ecd96bf3222c8176824c643d562 Mon Sep 17 00:00:00 2001
-From: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Date: Mon, 30 Jul 2012 18:24:19 +0100
-Subject: [PATCH 52/70] ASoC: wm8962: Allow VMID time to fully ramp
-
-commit 9d40e5582c9c4cfb6977ba2a0ca9c2ed82c56f21 upstream.
-
-Required for reliable power up from cold.
-
-Signed-off-by: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- sound/soc/codecs/wm8962.c | 3 +++
- 1 files changed, 3 insertions(+), 0 deletions(-)
-
-diff --git a/sound/soc/codecs/wm8962.c b/sound/soc/codecs/wm8962.c
-index 07dd7eb..e97df24 100644
---- a/sound/soc/codecs/wm8962.c
-+++ b/sound/soc/codecs/wm8962.c
-@@ -3105,6 +3105,9 @@ static int wm8962_set_bias_level(struct snd_soc_codec *codec,
- /* VMID 2*250k */
- snd_soc_update_bits(codec, WM8962_PWR_MGMT_1,
- WM8962_VMID_SEL_MASK, 0x100);
-+
-+ if (codec->dapm.bias_level == SND_SOC_BIAS_OFF)
-+ msleep(100);
- break;
-
- case SND_SOC_BIAS_OFF:
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0053-mm-page_alloc.c-remove-pageblock_default_order.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0053-mm-page_alloc.c-remove-pageblock_default_order.patch
deleted file mode 100644
index 0143cbd..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0053-mm-page_alloc.c-remove-pageblock_default_order.patch
+++ /dev/null
@@ -1,98 +0,0 @@
-From 9159bdebda7f6210dfe791c22f4a1f6c04826b0d Mon Sep 17 00:00:00 2001
-From: Andrew Morton <akpm at linux-foundation.org>
-Date: Tue, 29 May 2012 15:06:31 -0700
-Subject: [PATCH 53/70] mm/page_alloc.c: remove pageblock_default_order()
-
-commit 955c1cd7401565671b064e499115344ec8067dfd upstream.
-
-This has always been broken: one version takes an unsigned int and the
-other version takes no arguments. This bug was hidden because one
-version of set_pageblock_order() was a macro which doesn't evaluate its
-argument.
-
-Simplify it all and remove pageblock_default_order() altogether.
-
-Reported-by: rajman mekaco <rajman.mekaco at gmail.com>
-Cc: Mel Gorman <mel at csn.ul.ie>
-Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu at jp.fujitsu.com>
-Cc: Tejun Heo <tj at kernel.org>
-Cc: Minchan Kim <minchan.kim at gmail.com>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- mm/page_alloc.c | 33 +++++++++++++++------------------
- 1 files changed, 15 insertions(+), 18 deletions(-)
-
-diff --git a/mm/page_alloc.c b/mm/page_alloc.c
-index 065dbe8..63a4e1d 100644
---- a/mm/page_alloc.c
-+++ b/mm/page_alloc.c
-@@ -4281,25 +4281,24 @@ static inline void setup_usemap(struct pglist_data *pgdat,
-
- #ifdef CONFIG_HUGETLB_PAGE_SIZE_VARIABLE
-
--/* Return a sensible default order for the pageblock size. */
--static inline int pageblock_default_order(void)
--{
-- if (HPAGE_SHIFT > PAGE_SHIFT)
-- return HUGETLB_PAGE_ORDER;
--
-- return MAX_ORDER-1;
--}
--
- /* Initialise the number of pages represented by NR_PAGEBLOCK_BITS */
--static inline void __init set_pageblock_order(unsigned int order)
-+static inline void __init set_pageblock_order(void)
- {
-+ unsigned int order;
-+
- /* Check that pageblock_nr_pages has not already been setup */
- if (pageblock_order)
- return;
-
-+ if (HPAGE_SHIFT > PAGE_SHIFT)
-+ order = HUGETLB_PAGE_ORDER;
-+ else
-+ order = MAX_ORDER - 1;
-+
- /*
- * Assume the largest contiguous order of interest is a huge page.
-- * This value may be variable depending on boot parameters on IA64
-+ * This value may be variable depending on boot parameters on IA64 and
-+ * powerpc.
- */
- pageblock_order = order;
- }
-@@ -4307,15 +4306,13 @@ static inline void __init set_pageblock_order(unsigned int order)
-
- /*
- * When CONFIG_HUGETLB_PAGE_SIZE_VARIABLE is not set, set_pageblock_order()
-- * and pageblock_default_order() are unused as pageblock_order is set
-- * at compile-time. See include/linux/pageblock-flags.h for the values of
-- * pageblock_order based on the kernel config
-+ * is unused as pageblock_order is set at compile-time. See
-+ * include/linux/pageblock-flags.h for the values of pageblock_order based on
-+ * the kernel config
- */
--static inline int pageblock_default_order(unsigned int order)
-+static inline void set_pageblock_order(void)
- {
-- return MAX_ORDER-1;
- }
--#define set_pageblock_order(x) do {} while (0)
-
- #endif /* CONFIG_HUGETLB_PAGE_SIZE_VARIABLE */
-
-@@ -4403,7 +4400,7 @@ static void __paginginit free_area_init_core(struct pglist_data *pgdat,
- if (!size)
- continue;
-
-- set_pageblock_order(pageblock_default_order());
-+ set_pageblock_order();
- setup_usemap(pgdat, zone, size);
- ret = init_currently_empty_zone(zone, zone_start_pfn,
- size, MEMMAP_EARLY);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0054-mm-setup-pageblock_order-before-it-s-used-by-sparsem.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0054-mm-setup-pageblock_order-before-it-s-used-by-sparsem.patch
deleted file mode 100644
index 540cd1c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0054-mm-setup-pageblock_order-before-it-s-used-by-sparsem.patch
+++ /dev/null
@@ -1,101 +0,0 @@
-From 4cf34c29c3362f55fe4ca807f2b01984c36fe1b2 Mon Sep 17 00:00:00 2001
-From: Xishi Qiu <qiuxishi at huawei.com>
-Date: Tue, 31 Jul 2012 16:43:19 -0700
-Subject: [PATCH 54/70] mm: setup pageblock_order before it's used by
- sparsemem
-
-commit ca57df79d4f64e1a4886606af4289d40636189c5 upstream.
-
-On architectures with CONFIG_HUGETLB_PAGE_SIZE_VARIABLE set, such as
-Itanium, pageblock_order is a variable with default value of 0. It's set
-to the right value by set_pageblock_order() in function
-free_area_init_core().
-
-But pageblock_order may be used by sparse_init() before free_area_init_core()
-is called along path:
-sparse_init()
- ->sparse_early_usemaps_alloc_node()
- ->usemap_size()
- ->SECTION_BLOCKFLAGS_BITS
- ->((1UL << (PFN_SECTION_SHIFT - pageblock_order)) *
-NR_PAGEBLOCK_BITS)
-
-The uninitialized pageblock_size will cause memory wasting because
-usemap_size() returns a much bigger value then it's really needed.
-
-For example, on an Itanium platform,
-sparse_init() pageblock_order=0 usemap_size=24576
-free_area_init_core() before pageblock_order=0, usemap_size=24576
-free_area_init_core() after pageblock_order=12, usemap_size=8
-
-That means 24K memory has been wasted for each section, so fix it by calling
-set_pageblock_order() from sparse_init().
-
-Signed-off-by: Xishi Qiu <qiuxishi at huawei.com>
-Signed-off-by: Jiang Liu <liuj97 at gmail.com>
-Cc: Tony Luck <tony.luck at intel.com>
-Cc: Yinghai Lu <yinghai at kernel.org>
-Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu at jp.fujitsu.com>
-Cc: Benjamin Herrenschmidt <benh at kernel.crashing.org>
-Cc: KOSAKI Motohiro <kosaki.motohiro at jp.fujitsu.com>
-Cc: David Rientjes <rientjes at google.com>
-Cc: Keping Chen <chenkeping at huawei.com>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-[bwh: Backported to 3.2: adjust context]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- mm/internal.h | 2 ++
- mm/page_alloc.c | 4 ++--
- mm/sparse.c | 3 +++
- 3 files changed, 7 insertions(+), 2 deletions(-)
-
-diff --git a/mm/internal.h b/mm/internal.h
-index 2189af4..0c26b5e 100644
---- a/mm/internal.h
-+++ b/mm/internal.h
-@@ -309,3 +309,5 @@ extern u64 hwpoison_filter_flags_mask;
- extern u64 hwpoison_filter_flags_value;
- extern u64 hwpoison_filter_memcg;
- extern u32 hwpoison_filter_enable;
-+
-+extern void set_pageblock_order(void);
-diff --git a/mm/page_alloc.c b/mm/page_alloc.c
-index 63a4e1d..6e51bf0 100644
---- a/mm/page_alloc.c
-+++ b/mm/page_alloc.c
-@@ -4282,7 +4282,7 @@ static inline void setup_usemap(struct pglist_data *pgdat,
- #ifdef CONFIG_HUGETLB_PAGE_SIZE_VARIABLE
-
- /* Initialise the number of pages represented by NR_PAGEBLOCK_BITS */
--static inline void __init set_pageblock_order(void)
-+void __init set_pageblock_order(void)
- {
- unsigned int order;
-
-@@ -4310,7 +4310,7 @@ static inline void __init set_pageblock_order(void)
- * include/linux/pageblock-flags.h for the values of pageblock_order based on
- * the kernel config
- */
--static inline void set_pageblock_order(void)
-+void __init set_pageblock_order(void)
- {
- }
-
-diff --git a/mm/sparse.c b/mm/sparse.c
-index a8bc7d3..bf7d3cc 100644
---- a/mm/sparse.c
-+++ b/mm/sparse.c
-@@ -486,6 +486,9 @@ void __init sparse_init(void)
- struct page **map_map;
- #endif
-
-+ /* Setup pageblock_order for HUGETLB_PAGE_SIZE_VARIABLE */
-+ set_pageblock_order();
-+
- /*
- * map is using big page (aka 2M in x86 64 bit)
- * usemap is less one page (aka 24 bytes)
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0055-mm-mmu_notifier-fix-freed-page-still-mapped-in-secon.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0055-mm-mmu_notifier-fix-freed-page-still-mapped-in-secon.patch
deleted file mode 100644
index 78c9f97..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0055-mm-mmu_notifier-fix-freed-page-still-mapped-in-secon.patch
+++ /dev/null
@@ -1,137 +0,0 @@
-From 4bc62f55f275bd09fa00023c52414a4c08784919 Mon Sep 17 00:00:00 2001
-From: Xiao Guangrong <xiaoguangrong at linux.vnet.ibm.com>
-Date: Tue, 31 Jul 2012 16:45:52 -0700
-Subject: [PATCH 55/70] mm: mmu_notifier: fix freed page still mapped in
- secondary MMU
-
-commit 3ad3d901bbcfb15a5e4690e55350db0899095a68 upstream.
-
-mmu_notifier_release() is called when the process is exiting. It will
-delete all the mmu notifiers. But at this time the page belonging to the
-process is still present in page tables and is present on the LRU list, so
-this race will happen:
-
- CPU 0 CPU 1
-mmu_notifier_release: try_to_unmap:
- hlist_del_init_rcu(&mn->hlist);
- ptep_clear_flush_notify:
- mmu nofifler not found
- free page !!!!!!
- /*
- * At the point, the page has been
- * freed, but it is still mapped in
- * the secondary MMU.
- */
-
- mn->ops->release(mn, mm);
-
-Then the box is not stable and sometimes we can get this bug:
-
-[ 738.075923] BUG: Bad page state in process migrate-perf pfn:03bec
-[ 738.075931] page:ffffea00000efb00 count:0 mapcount:0 mapping: (null) index:0x8076
-[ 738.075936] page flags: 0x20000000000014(referenced|dirty)
-
-The same issue is present in mmu_notifier_unregister().
-
-We can call ->release before deleting the notifier to ensure the page has
-been unmapped from the secondary MMU before it is freed.
-
-Signed-off-by: Xiao Guangrong <xiaoguangrong at linux.vnet.ibm.com>
-Cc: Avi Kivity <avi at redhat.com>
-Cc: Marcelo Tosatti <mtosatti at redhat.com>
-Cc: Paul Gortmaker <paul.gortmaker at windriver.com>
-Cc: Andrea Arcangeli <aarcange at redhat.com>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- mm/mmu_notifier.c | 45 +++++++++++++++++++++++----------------------
- 1 files changed, 23 insertions(+), 22 deletions(-)
-
-diff --git a/mm/mmu_notifier.c b/mm/mmu_notifier.c
-index 9a611d3..862b608 100644
---- a/mm/mmu_notifier.c
-+++ b/mm/mmu_notifier.c
-@@ -33,6 +33,24 @@
- void __mmu_notifier_release(struct mm_struct *mm)
- {
- struct mmu_notifier *mn;
-+ struct hlist_node *n;
-+
-+ /*
-+ * RCU here will block mmu_notifier_unregister until
-+ * ->release returns.
-+ */
-+ rcu_read_lock();
-+ hlist_for_each_entry_rcu(mn, n, &mm->mmu_notifier_mm->list, hlist)
-+ /*
-+ * if ->release runs before mmu_notifier_unregister it
-+ * must be handled as it's the only way for the driver
-+ * to flush all existing sptes and stop the driver
-+ * from establishing any more sptes before all the
-+ * pages in the mm are freed.
-+ */
-+ if (mn->ops->release)
-+ mn->ops->release(mn, mm);
-+ rcu_read_unlock();
-
- spin_lock(&mm->mmu_notifier_mm->lock);
- while (unlikely(!hlist_empty(&mm->mmu_notifier_mm->list))) {
-@@ -46,23 +64,6 @@ void __mmu_notifier_release(struct mm_struct *mm)
- * mmu_notifier_unregister to return.
- */
- hlist_del_init_rcu(&mn->hlist);
-- /*
-- * RCU here will block mmu_notifier_unregister until
-- * ->release returns.
-- */
-- rcu_read_lock();
-- spin_unlock(&mm->mmu_notifier_mm->lock);
-- /*
-- * if ->release runs before mmu_notifier_unregister it
-- * must be handled as it's the only way for the driver
-- * to flush all existing sptes and stop the driver
-- * from establishing any more sptes before all the
-- * pages in the mm are freed.
-- */
-- if (mn->ops->release)
-- mn->ops->release(mn, mm);
-- rcu_read_unlock();
-- spin_lock(&mm->mmu_notifier_mm->lock);
- }
- spin_unlock(&mm->mmu_notifier_mm->lock);
-
-@@ -284,16 +285,13 @@ void mmu_notifier_unregister(struct mmu_notifier *mn, struct mm_struct *mm)
- {
- BUG_ON(atomic_read(&mm->mm_count) <= 0);
-
-- spin_lock(&mm->mmu_notifier_mm->lock);
- if (!hlist_unhashed(&mn->hlist)) {
-- hlist_del_rcu(&mn->hlist);
--
- /*
- * RCU here will force exit_mmap to wait ->release to finish
- * before freeing the pages.
- */
- rcu_read_lock();
-- spin_unlock(&mm->mmu_notifier_mm->lock);
-+
- /*
- * exit_mmap will block in mmu_notifier_release to
- * guarantee ->release is called before freeing the
-@@ -302,8 +300,11 @@ void mmu_notifier_unregister(struct mmu_notifier *mn, struct mm_struct *mm)
- if (mn->ops->release)
- mn->ops->release(mn, mm);
- rcu_read_unlock();
-- } else
-+
-+ spin_lock(&mm->mmu_notifier_mm->lock);
-+ hlist_del_rcu(&mn->hlist);
- spin_unlock(&mm->mmu_notifier_mm->lock);
-+ }
-
- /*
- * Wait any running method to finish, of course including
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0056-mm-hugetlbfs-close-race-during-teardown-of-hugetlbfs.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0056-mm-hugetlbfs-close-race-during-teardown-of-hugetlbfs.patch
deleted file mode 100644
index 653bd0c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0056-mm-hugetlbfs-close-race-during-teardown-of-hugetlbfs.patch
+++ /dev/null
@@ -1,340 +0,0 @@
-From 677941da036e27de0418fa601b49f8c8c6ccf594 Mon Sep 17 00:00:00 2001
-From: Mel Gorman <mgorman at suse.de>
-Date: Tue, 31 Jul 2012 16:46:20 -0700
-Subject: [PATCH 56/70] mm: hugetlbfs: close race during teardown of hugetlbfs
- shared page tables
-
-commit d833352a4338dc31295ed832a30c9ccff5c7a183 upstream.
-
-If a process creates a large hugetlbfs mapping that is eligible for page
-table sharing and forks heavily with children some of whom fault and
-others which destroy the mapping then it is possible for page tables to
-get corrupted. Some teardowns of the mapping encounter a "bad pmd" and
-output a message to the kernel log. The final teardown will trigger a
-BUG_ON in mm/filemap.c.
-
-This was reproduced in 3.4 but is known to have existed for a long time
-and goes back at least as far as 2.6.37. It was probably was introduced
-in 2.6.20 by [39dde65c: shared page table for hugetlb page]. The messages
-look like this;
-
-[ ..........] Lots of bad pmd messages followed by this
-[ 127.164256] mm/memory.c:391: bad pmd ffff880412e04fe8(80000003de4000e7).
-[ 127.164257] mm/memory.c:391: bad pmd ffff880412e04ff0(80000003de6000e7).
-[ 127.164258] mm/memory.c:391: bad pmd ffff880412e04ff8(80000003de0000e7).
-[ 127.186778] ------------[ cut here ]------------
-[ 127.186781] kernel BUG at mm/filemap.c:134!
-[ 127.186782] invalid opcode: 0000 [#1] SMP
-[ 127.186783] CPU 7
-[ 127.186784] Modules linked in: af_packet cpufreq_conservative cpufreq_userspace cpufreq_powersave acpi_cpufreq mperf ext3 jbd dm_mod coretemp crc32c_intel usb_storage ghash_clmulni_intel aesni_intel i2c_i801 r8169 mii uas sr_mod cdrom sg iTCO_wdt iTCO_vendor_support shpchp serio_raw cryptd aes_x86_64 e1000e pci_hotplug dcdbas aes_generic container microcode ext4 mbcache jbd2 crc16 sd_mod crc_t10dif i915 drm_kms_helper drm i2c_algo_bit ehci_hcd ahci libahci usbcore rtc_cmos usb_common button i2c_core intel_agp video intel_gtt fan processor thermal thermal_sys hwmon ata_generic pata_atiixp libata scsi_mod
-[ 127.186801]
-[ 127.186802] Pid: 9017, comm: hugetlbfs-test Not tainted 3.4.0-autobuild #53 Dell Inc. OptiPlex 990/06D7TR
-[ 127.186804] RIP: 0010:[<ffffffff810ed6ce>] [<ffffffff810ed6ce>] __delete_from_page_cache+0x15e/0x160
-[ 127.186809] RSP: 0000:ffff8804144b5c08 EFLAGS: 00010002
-[ 127.186810] RAX: 0000000000000001 RBX: ffffea000a5c9000 RCX: 00000000ffffffc0
-[ 127.186811] RDX: 0000000000000000 RSI: 0000000000000009 RDI: ffff88042dfdad00
-[ 127.186812] RBP: ffff8804144b5c18 R08: 0000000000000009 R09: 0000000000000003
-[ 127.186813] R10: 0000000000000000 R11: 000000000000002d R12: ffff880412ff83d8
-[ 127.186814] R13: ffff880412ff83d8 R14: 0000000000000000 R15: ffff880412ff83d8
-[ 127.186815] FS: 00007fe18ed2c700(0000) GS:ffff88042dce0000(0000) knlGS:0000000000000000
-[ 127.186816] CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
-[ 127.186817] CR2: 00007fe340000503 CR3: 0000000417a14000 CR4: 00000000000407e0
-[ 127.186818] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
-[ 127.186819] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
-[ 127.186820] Process hugetlbfs-test (pid: 9017, threadinfo ffff8804144b4000, task ffff880417f803c0)
-[ 127.186821] Stack:
-[ 127.186822] ffffea000a5c9000 0000000000000000 ffff8804144b5c48 ffffffff810ed83b
-[ 127.186824] ffff8804144b5c48 000000000000138a 0000000000001387 ffff8804144b5c98
-[ 127.186825] ffff8804144b5d48 ffffffff811bc925 ffff8804144b5cb8 0000000000000000
-[ 127.186827] Call Trace:
-[ 127.186829] [<ffffffff810ed83b>] delete_from_page_cache+0x3b/0x80
-[ 127.186832] [<ffffffff811bc925>] truncate_hugepages+0x115/0x220
-[ 127.186834] [<ffffffff811bca43>] hugetlbfs_evict_inode+0x13/0x30
-[ 127.186837] [<ffffffff811655c7>] evict+0xa7/0x1b0
-[ 127.186839] [<ffffffff811657a3>] iput_final+0xd3/0x1f0
-[ 127.186840] [<ffffffff811658f9>] iput+0x39/0x50
-[ 127.186842] [<ffffffff81162708>] d_kill+0xf8/0x130
-[ 127.186843] [<ffffffff81162812>] dput+0xd2/0x1a0
-[ 127.186845] [<ffffffff8114e2d0>] __fput+0x170/0x230
-[ 127.186848] [<ffffffff81236e0e>] ? rb_erase+0xce/0x150
-[ 127.186849] [<ffffffff8114e3ad>] fput+0x1d/0x30
-[ 127.186851] [<ffffffff81117db7>] remove_vma+0x37/0x80
-[ 127.186853] [<ffffffff81119182>] do_munmap+0x2d2/0x360
-[ 127.186855] [<ffffffff811cc639>] sys_shmdt+0xc9/0x170
-[ 127.186857] [<ffffffff81410a39>] system_call_fastpath+0x16/0x1b
-[ 127.186858] Code: 0f 1f 44 00 00 48 8b 43 08 48 8b 00 48 8b 40 28 8b b0 40 03 00 00 85 f6 0f 88 df fe ff ff 48 89 df e8 e7 cb 05 00 e9 d2 fe ff ff <0f> 0b 55 83 e2 fd 48 89 e5 48 83 ec 30 48 89 5d d8 4c 89 65 e0
-[ 127.186868] RIP [<ffffffff810ed6ce>] __delete_from_page_cache+0x15e/0x160
-[ 127.186870] RSP <ffff8804144b5c08>
-[ 127.186871] ---[ end trace 7cbac5d1db69f426 ]---
-
-The bug is a race and not always easy to reproduce. To reproduce it I was
-doing the following on a single socket I7-based machine with 16G of RAM.
-
-$ hugeadm --pool-pages-max DEFAULT:13G
-$ echo $((18*1048576*1024)) > /proc/sys/kernel/shmmax
-$ echo $((18*1048576*1024)) > /proc/sys/kernel/shmall
-$ for i in `seq 1 9000`; do ./hugetlbfs-test; done
-
-On my particular machine, it usually triggers within 10 minutes but
-enabling debug options can change the timing such that it never hits.
-Once the bug is triggered, the machine is in trouble and needs to be
-rebooted. The machine will respond but processes accessing proc like "ps
-aux" will hang due to the BUG_ON. shutdown will also hang and needs a
-hard reset or a sysrq-b.
-
-The basic problem is a race between page table sharing and teardown. For
-the most part page table sharing depends on i_mmap_mutex. In some cases,
-it is also taking the mm->page_table_lock for the PTE updates but with
-shared page tables, it is the i_mmap_mutex that is more important.
-
-Unfortunately it appears to be also insufficient. Consider the following
-situation
-
-Process A Process B
---------- ---------
-hugetlb_fault shmdt
- LockWrite(mmap_sem)
- do_munmap
- unmap_region
- unmap_vmas
- unmap_single_vma
- unmap_hugepage_range
- Lock(i_mmap_mutex)
- Lock(mm->page_table_lock)
- huge_pmd_unshare/unmap tables <--- (1)
- Unlock(mm->page_table_lock)
- Unlock(i_mmap_mutex)
- huge_pte_alloc ...
- Lock(i_mmap_mutex) ...
- vma_prio_walk, find svma, spte ...
- Lock(mm->page_table_lock) ...
- share spte ...
- Unlock(mm->page_table_lock) ...
- Unlock(i_mmap_mutex) ...
- hugetlb_no_page <--- (2)
- free_pgtables
- unlink_file_vma
- hugetlb_free_pgd_range
- remove_vma_list
-
-In this scenario, it is possible for Process A to share page tables with
-Process B that is trying to tear them down. The i_mmap_mutex on its own
-does not prevent Process A walking Process B's page tables. At (1) above,
-the page tables are not shared yet so it unmaps the PMDs. Process A sets
-up page table sharing and at (2) faults a new entry. Process B then trips
-up on it in free_pgtables.
-
-This patch fixes the problem by adding a new function
-__unmap_hugepage_range_final that is only called when the VMA is about to
-be destroyed. This function clears VM_MAYSHARE during
-unmap_hugepage_range() under the i_mmap_mutex. This makes the VMA
-ineligible for sharing and avoids the race. Superficially this looks like
-it would then be vunerable to truncate and madvise issues but hugetlbfs
-has its own truncate handlers so does not use unmap_mapping_range() and
-does not support madvise(DONTNEED).
-
-This should be treated as a -stable candidate if it is merged.
-
-Test program is as follows. The test case was mostly written by Michal
-Hocko with a few minor changes to reproduce this bug.
-
-==== CUT HERE ====
-
-static size_t huge_page_size = (2UL << 20);
-static size_t nr_huge_page_A = 512;
-static size_t nr_huge_page_B = 5632;
-
-unsigned int get_random(unsigned int max)
-{
- struct timeval tv;
-
- gettimeofday(&tv, NULL);
- srandom(tv.tv_usec);
- return random() % max;
-}
-
-static void play(void *addr, size_t size)
-{
- unsigned char *start = addr,
- *end = start + size,
- *a;
- start += get_random(size/2);
-
- /* we could itterate on huge pages but let's give it more time. */
- for (a = start; a < end; a += 4096)
- *a = 0;
-}
-
-int main(int argc, char **argv)
-{
- key_t key = IPC_PRIVATE;
- size_t sizeA = nr_huge_page_A * huge_page_size;
- size_t sizeB = nr_huge_page_B * huge_page_size;
- int shmidA, shmidB;
- void *addrA = NULL, *addrB = NULL;
- int nr_children = 300, n = 0;
-
- if ((shmidA = shmget(key, sizeA, IPC_CREAT|SHM_HUGETLB|0660)) == -1) {
- perror("shmget:");
- return 1;
- }
-
- if ((addrA = shmat(shmidA, addrA, SHM_R|SHM_W)) == (void *)-1UL) {
- perror("shmat");
- return 1;
- }
- if ((shmidB = shmget(key, sizeB, IPC_CREAT|SHM_HUGETLB|0660)) == -1) {
- perror("shmget:");
- return 1;
- }
-
- if ((addrB = shmat(shmidB, addrB, SHM_R|SHM_W)) == (void *)-1UL) {
- perror("shmat");
- return 1;
- }
-
-fork_child:
- switch(fork()) {
- case 0:
- switch (n%3) {
- case 0:
- play(addrA, sizeA);
- break;
- case 1:
- play(addrB, sizeB);
- break;
- case 2:
- break;
- }
- break;
- case -1:
- perror("fork:");
- break;
- default:
- if (++n < nr_children)
- goto fork_child;
- play(addrA, sizeA);
- break;
- }
- shmdt(addrA);
- shmdt(addrB);
- do {
- wait(NULL);
- } while (--n > 0);
- shmctl(shmidA, IPC_RMID, NULL);
- shmctl(shmidB, IPC_RMID, NULL);
- return 0;
-}
-
-[akpm at linux-foundation.org: name the declaration's args, fix CONFIG_HUGETLBFS=n build]
-Signed-off-by: Hugh Dickins <hughd at google.com>
-Reviewed-by: Michal Hocko <mhocko at suse.cz>
-Signed-off-by: Mel Gorman <mgorman at suse.de>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-[bwh: Backported to 3.2:
- - Adjust context
- - Drop the mmu_gather * parameters]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- include/linux/hugetlb.h | 10 ++++++++++
- mm/hugetlb.c | 28 ++++++++++++++++++++++++++--
- mm/memory.c | 7 +++++--
- 3 files changed, 41 insertions(+), 4 deletions(-)
-
-diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h
-index c5ed2f1..a2227f7 100644
---- a/include/linux/hugetlb.h
-+++ b/include/linux/hugetlb.h
-@@ -41,6 +41,9 @@ int follow_hugetlb_page(struct mm_struct *, struct vm_area_struct *,
- unsigned long *, int *, int, unsigned int flags);
- void unmap_hugepage_range(struct vm_area_struct *,
- unsigned long, unsigned long, struct page *);
-+void __unmap_hugepage_range_final(struct vm_area_struct *vma,
-+ unsigned long start, unsigned long end,
-+ struct page *ref_page);
- void __unmap_hugepage_range(struct vm_area_struct *,
- unsigned long, unsigned long, struct page *);
- int hugetlb_prefault(struct address_space *, struct vm_area_struct *);
-@@ -99,6 +102,13 @@ static inline unsigned long hugetlb_total_pages(void)
- #define copy_hugetlb_page_range(src, dst, vma) ({ BUG(); 0; })
- #define hugetlb_prefault(mapping, vma) ({ BUG(); 0; })
- #define unmap_hugepage_range(vma, start, end, page) BUG()
-+static inline void __unmap_hugepage_range_final(struct vm_area_struct *vma,
-+ unsigned long start, unsigned long end,
-+ struct page *ref_page)
-+{
-+ BUG();
-+}
-+
- static inline void hugetlb_report_meminfo(struct seq_file *m)
- {
- }
-diff --git a/mm/hugetlb.c b/mm/hugetlb.c
-index b1e1bad..0f897b8 100644
---- a/mm/hugetlb.c
-+++ b/mm/hugetlb.c
-@@ -2382,6 +2382,25 @@ void __unmap_hugepage_range(struct vm_area_struct *vma, unsigned long start,
- }
- }
-
-+void __unmap_hugepage_range_final(struct vm_area_struct *vma,
-+ unsigned long start, unsigned long end,
-+ struct page *ref_page)
-+{
-+ __unmap_hugepage_range(vma, start, end, ref_page);
-+
-+ /*
-+ * Clear this flag so that x86's huge_pmd_share page_table_shareable
-+ * test will fail on a vma being torn down, and not grab a page table
-+ * on its way out. We're lucky that the flag has such an appropriate
-+ * name, and can in fact be safely cleared here. We could clear it
-+ * before the __unmap_hugepage_range above, but all that's necessary
-+ * is to clear it before releasing the i_mmap_mutex. This works
-+ * because in the context this is called, the VMA is about to be
-+ * destroyed and the i_mmap_mutex is held.
-+ */
-+ vma->vm_flags &= ~VM_MAYSHARE;
-+}
-+
- void unmap_hugepage_range(struct vm_area_struct *vma, unsigned long start,
- unsigned long end, struct page *ref_page)
- {
-@@ -2939,9 +2958,14 @@ void hugetlb_change_protection(struct vm_area_struct *vma,
- }
- }
- spin_unlock(&mm->page_table_lock);
-- mutex_unlock(&vma->vm_file->f_mapping->i_mmap_mutex);
--
-+ /*
-+ * Must flush TLB before releasing i_mmap_mutex: x86's huge_pmd_unshare
-+ * may have cleared our pud entry and done put_page on the page table:
-+ * once we release i_mmap_mutex, another task can do the final put_page
-+ * and that page table be reused and filled with junk.
-+ */
- flush_tlb_range(vma, start, end);
-+ mutex_unlock(&vma->vm_file->f_mapping->i_mmap_mutex);
- }
-
- int hugetlb_reserve_pages(struct inode *inode,
-diff --git a/mm/memory.c b/mm/memory.c
-index 1b1ca17..70f5daf 100644
---- a/mm/memory.c
-+++ b/mm/memory.c
-@@ -1358,8 +1358,11 @@ unsigned long unmap_vmas(struct mmu_gather *tlb,
- * Since no pte has actually been setup, it is
- * safe to do nothing in this case.
- */
-- if (vma->vm_file)
-- unmap_hugepage_range(vma, start, end, NULL);
-+ if (vma->vm_file) {
-+ mutex_lock(&vma->vm_file->f_mapping->i_mmap_mutex);
-+ __unmap_hugepage_range_final(vma, start, end, NULL);
-+ mutex_unlock(&vma->vm_file->f_mapping->i_mmap_mutex);
-+ }
-
- start = end;
- } else
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0057-ALSA-snd-usb-fix-clock-source-validity-index.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0057-ALSA-snd-usb-fix-clock-source-validity-index.patch
deleted file mode 100644
index 007e393..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0057-ALSA-snd-usb-fix-clock-source-validity-index.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 25ad0cb4cfe9597474d8cda839d5adedc9412201 Mon Sep 17 00:00:00 2001
-From: Daniel Mack <zonque at gmail.com>
-Date: Wed, 1 Aug 2012 10:16:53 +0200
-Subject: [PATCH 57/70] ALSA: snd-usb: fix clock source validity index
-
-commit aff252a848ce21b431ba822de3dab9c4c94571cb upstream.
-
-uac_clock_source_is_valid() uses the control selector value to access
-the bmControls bitmap of the clock source unit. This is wrong, as
-control selector values start from 1, while the bitmap uses all
-available bits.
-
-In other words, "Clock Validity Control" is stored in D3..2, not D5..4
-of the clock selector unit's bmControls.
-
-Signed-off-by: Daniel Mack <zonque at gmail.com>
-Reported-by: Andreas Koch <andreas at akdesigninc.com>
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- sound/usb/clock.c | 3 ++-
- 1 files changed, 2 insertions(+), 1 deletions(-)
-
-diff --git a/sound/usb/clock.c b/sound/usb/clock.c
-index 379baad..5e634a2 100644
---- a/sound/usb/clock.c
-+++ b/sound/usb/clock.c
-@@ -111,7 +111,8 @@ static bool uac_clock_source_is_valid(struct snd_usb_audio *chip, int source_id)
- return 0;
-
- /* If a clock source can't tell us whether it's valid, we assume it is */
-- if (!uac2_control_is_readable(cs_desc->bmControls, UAC2_CS_CONTROL_CLOCK_VALID))
-+ if (!uac2_control_is_readable(cs_desc->bmControls,
-+ UAC2_CS_CONTROL_CLOCK_VALID - 1))
- return 1;
-
- err = snd_usb_ctl_msg(dev, usb_rcvctrlpipe(dev, 0), UAC2_CS_CUR,
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0058-ALSA-hda-Support-dock-on-Lenovo-Thinkpad-T530-with-A.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0058-ALSA-hda-Support-dock-on-Lenovo-Thinkpad-T530-with-A.patch
deleted file mode 100644
index 9ffbd4c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0058-ALSA-hda-Support-dock-on-Lenovo-Thinkpad-T530-with-A.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 49cbaa1b1111f838004b74390214575cc82ae5ff Mon Sep 17 00:00:00 2001
-From: Takashi Iwai <tiwai at suse.de>
-Date: Thu, 2 Aug 2012 09:04:39 +0200
-Subject: [PATCH 58/70] ALSA: hda - Support dock on Lenovo Thinkpad T530 with
- ALC269VC
-
-commit 707fba3fa76a4c8855552f5d4c1a12430c09bce8 upstream.
-
-Lenovo Thinkpad T530 with ALC269VC codec has a dock port but BIOS
-doesn't set up the pins properly. Enable the pins as well as on
-Thinkpad X230 Tablet.
-
-Reported-and-tested-by: Mario <anyc at hadiko.de>
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- sound/pci/hda/patch_realtek.c | 1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
-index 6ae58b2..2e2eb93 100644
---- a/sound/pci/hda/patch_realtek.c
-+++ b/sound/pci/hda/patch_realtek.c
-@@ -5076,6 +5076,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
- SND_PCI_QUIRK(0x17aa, 0x21b8, "Thinkpad Edge 14", ALC269_FIXUP_SKU_IGNORE),
- SND_PCI_QUIRK(0x17aa, 0x21ca, "Thinkpad L412", ALC269_FIXUP_SKU_IGNORE),
- SND_PCI_QUIRK(0x17aa, 0x21e9, "Thinkpad Edge 15", ALC269_FIXUP_SKU_IGNORE),
-+ SND_PCI_QUIRK(0x17aa, 0x21f6, "Thinkpad T530", ALC269_FIXUP_LENOVO_DOCK),
- SND_PCI_QUIRK(0x17aa, 0x2203, "Thinkpad X230 Tablet", ALC269_FIXUP_LENOVO_DOCK),
- SND_PCI_QUIRK(0x17aa, 0x3bf8, "Quanta FL1", ALC269_FIXUP_QUANTA_MUTE),
- SND_PCI_QUIRK(0x17aa, 0x3bf8, "Lenovo Ideapd", ALC269_FIXUP_PCM_44K),
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0059-ore-Fix-out-of-bounds-access-in-_ios_obj.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0059-ore-Fix-out-of-bounds-access-in-_ios_obj.patch
deleted file mode 100644
index 42b27e5..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0059-ore-Fix-out-of-bounds-access-in-_ios_obj.patch
+++ /dev/null
@@ -1,75 +0,0 @@
-From e9c69241e1b7a169690d8b16393d712d7613706d Mon Sep 17 00:00:00 2001
-From: Boaz Harrosh <bharrosh at panasas.com>
-Date: Wed, 1 Aug 2012 17:48:36 +0300
-Subject: [PATCH 59/70] ore: Fix out-of-bounds access in _ios_obj()
-
-commit 9e62bb4458ad2cf28bd701aa5fab380b846db326 upstream.
-
-_ios_obj() is accessed by group_index not device_table index.
-
-The oc->comps array is only a group_full of devices at a time
-it is not like ore_comp_dev() which is indexed by a global
-device_table index.
-
-This did not BUG until now because exofs only uses a single
-COMP for all devices. But with other FSs like PanFS this is
-not true.
-
-This bug was only in the write_path, all other users were
-using it correctly
-
-[This is a bug since 3.2 Kernel]
-
-Signed-off-by: Boaz Harrosh <bharrosh at panasas.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/exofs/ore.c | 14 +++++++-------
- 1 files changed, 7 insertions(+), 7 deletions(-)
-
-diff --git a/fs/exofs/ore.c b/fs/exofs/ore.c
-index 24a49d4..1585db1 100644
---- a/fs/exofs/ore.c
-+++ b/fs/exofs/ore.c
-@@ -837,11 +837,11 @@ static int _write_mirror(struct ore_io_state *ios, int cur_comp)
- bio->bi_rw |= REQ_WRITE;
- }
-
-- osd_req_write(or, _ios_obj(ios, dev), per_dev->offset,
-- bio, per_dev->length);
-+ osd_req_write(or, _ios_obj(ios, cur_comp),
-+ per_dev->offset, bio, per_dev->length);
- ORE_DBGMSG("write(0x%llx) offset=0x%llx "
- "length=0x%llx dev=%d\n",
-- _LLU(_ios_obj(ios, dev)->id),
-+ _LLU(_ios_obj(ios, cur_comp)->id),
- _LLU(per_dev->offset),
- _LLU(per_dev->length), dev);
- } else if (ios->kern_buff) {
-@@ -853,20 +853,20 @@ static int _write_mirror(struct ore_io_state *ios, int cur_comp)
- (ios->si.unit_off + ios->length >
- ios->layout->stripe_unit));
-
-- ret = osd_req_write_kern(or, _ios_obj(ios, per_dev->dev),
-+ ret = osd_req_write_kern(or, _ios_obj(ios, cur_comp),
- per_dev->offset,
- ios->kern_buff, ios->length);
- if (unlikely(ret))
- goto out;
- ORE_DBGMSG2("write_kern(0x%llx) offset=0x%llx "
- "length=0x%llx dev=%d\n",
-- _LLU(_ios_obj(ios, dev)->id),
-+ _LLU(_ios_obj(ios, cur_comp)->id),
- _LLU(per_dev->offset),
- _LLU(ios->length), per_dev->dev);
- } else {
-- osd_req_set_attributes(or, _ios_obj(ios, dev));
-+ osd_req_set_attributes(or, _ios_obj(ios, cur_comp));
- ORE_DBGMSG2("obj(0x%llx) set_attributes=%d dev=%d\n",
-- _LLU(_ios_obj(ios, dev)->id),
-+ _LLU(_ios_obj(ios, cur_comp)->id),
- ios->out_attr_len, dev);
- }
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0060-m68k-Make-sys_atomic_cmpxchg_32-work-on-classic-m68k.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0060-m68k-Make-sys_atomic_cmpxchg_32-work-on-classic-m68k.patch
deleted file mode 100644
index b955501..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0060-m68k-Make-sys_atomic_cmpxchg_32-work-on-classic-m68k.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 83e7a3bd925b3f8886f4a116a3d6581c89fcb87e Mon Sep 17 00:00:00 2001
-From: Andreas Schwab <schwab at linux-m68k.org>
-Date: Sat, 28 Jul 2012 00:20:34 +0200
-Subject: [PATCH 60/70] m68k: Make sys_atomic_cmpxchg_32 work on classic m68k
-
-commit 9e2760d18b3cf179534bbc27692c84879c61b97c upstream.
-
-User space access must always go through uaccess accessors, since on
-classic m68k user space and kernel space are completely separate.
-
-Signed-off-by: Andreas Schwab <schwab at linux-m68k.org>
-Tested-by: Thorsten Glaser <tg at debian.org>
-Signed-off-by: Geert Uytterhoeven <geert at linux-m68k.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/m68k/kernel/sys_m68k.c | 8 ++++++--
- 1 files changed, 6 insertions(+), 2 deletions(-)
-
-diff --git a/arch/m68k/kernel/sys_m68k.c b/arch/m68k/kernel/sys_m68k.c
-index 8623f8d..9a5932e 100644
---- a/arch/m68k/kernel/sys_m68k.c
-+++ b/arch/m68k/kernel/sys_m68k.c
-@@ -479,9 +479,13 @@ sys_atomic_cmpxchg_32(unsigned long newval, int oldval, int d3, int d4, int d5,
- goto bad_access;
- }
-
-- mem_value = *mem;
-+ /*
-+ * No need to check for EFAULT; we know that the page is
-+ * present and writable.
-+ */
-+ __get_user(mem_value, mem);
- if (mem_value == oldval)
-- *mem = newval;
-+ __put_user(newval, mem);
-
- pte_unmap_unlock(pte, ptl);
- up_read(&mm->mmap_sem);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0061-drm-i915-prefer-wide-slow-to-fast-narrow-in-DP-confi.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0061-drm-i915-prefer-wide-slow-to-fast-narrow-in-DP-confi.patch
deleted file mode 100644
index 5d55fb5..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0061-drm-i915-prefer-wide-slow-to-fast-narrow-in-DP-confi.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From dc2062a19f602bfb44928a95bdeb21165a17e27c Mon Sep 17 00:00:00 2001
-From: Jesse Barnes <jbarnes at virtuousgeek.org>
-Date: Thu, 21 Jun 2012 15:13:50 -0700
-Subject: [PATCH 61/70] drm/i915: prefer wide & slow to fast & narrow in DP
- configs
-
-commit 2514bc510d0c3aadcc5204056bb440fa36845147 upstream.
-
-High frequency link configurations have the potential to cause trouble
-with long and/or cheap cables, so prefer slow and wide configurations
-instead. This patch has the potential to cause trouble for eDP
-configurations that lie about available lanes, so if we run into that we
-can make it conditional on eDP.
-
-Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=45801
-Tested-by: peter at colberg.org
-Signed-off-by: Jesse Barnes <jbarnes at virtuousgeek.org>
-Signed-off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpu/drm/i915/intel_dp.c | 4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
-index d4c4937..fae2050 100644
---- a/drivers/gpu/drm/i915/intel_dp.c
-+++ b/drivers/gpu/drm/i915/intel_dp.c
-@@ -708,8 +708,8 @@ intel_dp_mode_fixup(struct drm_encoder *encoder, struct drm_display_mode *mode,
-
- bpp = adjusted_mode->private_flags & INTEL_MODE_DP_FORCE_6BPC ? 18 : 24;
-
-- for (lane_count = 1; lane_count <= max_lane_count; lane_count <<= 1) {
-- for (clock = 0; clock <= max_clock; clock++) {
-+ for (clock = 0; clock <= max_clock; clock++) {
-+ for (lane_count = 1; lane_count <= max_lane_count; lane_count <<= 1) {
- int link_avail = intel_dp_max_data_rate(intel_dp_link_clock(bws[clock]), lane_count);
-
- if (intel_dp_link_required(mode->clock, bpp)
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0062-rt2x00-Add-support-for-BUFFALO-WLI-UC-GNM2-to-rt2800.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0062-rt2x00-Add-support-for-BUFFALO-WLI-UC-GNM2-to-rt2800.patch
deleted file mode 100644
index a55d013..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0062-rt2x00-Add-support-for-BUFFALO-WLI-UC-GNM2-to-rt2800.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 1daebd9ade24166c1212e0dc8383a54558c77476 Mon Sep 17 00:00:00 2001
-From: Jeongdo Son <sohn9086 at gmail.com>
-Date: Fri, 15 Jun 2012 02:28:01 +0900
-Subject: [PATCH 62/70] rt2x00: Add support for BUFFALO WLI-UC-GNM2 to
- rt2800usb.
-
-commit a769f9577232afe2c754606a83aad85127e7052a upstream.
-
-This is a RT3070 based device.
-
-Signed-off-by: Jeongdo Son <sohn9086 at gmail.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/wireless/rt2x00/rt2800usb.c | 1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/net/wireless/rt2x00/rt2800usb.c b/drivers/net/wireless/rt2x00/rt2800usb.c
-index bdf960b..ae7528b 100644
---- a/drivers/net/wireless/rt2x00/rt2800usb.c
-+++ b/drivers/net/wireless/rt2x00/rt2800usb.c
-@@ -925,6 +925,7 @@ static struct usb_device_id rt2800usb_device_table[] = {
- { USB_DEVICE(0x0411, 0x015d) },
- { USB_DEVICE(0x0411, 0x016f) },
- { USB_DEVICE(0x0411, 0x01a2) },
-+ { USB_DEVICE(0x0411, 0x01ee) },
- /* Corega */
- { USB_DEVICE(0x07aa, 0x002f) },
- { USB_DEVICE(0x07aa, 0x003c) },
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0063-drop_monitor-fix-sleeping-in-invalid-context-warning.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0063-drop_monitor-fix-sleeping-in-invalid-context-warning.patch
deleted file mode 100644
index 66b0cf5..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0063-drop_monitor-fix-sleeping-in-invalid-context-warning.patch
+++ /dev/null
@@ -1,115 +0,0 @@
-From f525976c33830cfe23b1a73eb9ae853820c5c085 Mon Sep 17 00:00:00 2001
-From: Neil Horman <nhorman at tuxdriver.com>
-Date: Fri, 27 Apr 2012 10:11:48 +0000
-Subject: [PATCH 63/70] drop_monitor: fix sleeping in invalid context warning
-
-commit cde2e9a651b76d8db36ae94cd0febc82b637e5dd upstream.
-
-Eric Dumazet pointed out this warning in the drop_monitor protocol to me:
-
-[ 38.352571] BUG: sleeping function called from invalid context at kernel/mutex.c:85
-[ 38.352576] in_atomic(): 1, irqs_disabled(): 0, pid: 4415, name: dropwatch
-[ 38.352580] Pid: 4415, comm: dropwatch Not tainted 3.4.0-rc2+ #71
-[ 38.352582] Call Trace:
-[ 38.352592] [<ffffffff8153aaf0>] ? trace_napi_poll_hit+0xd0/0xd0
-[ 38.352599] [<ffffffff81063f2a>] __might_sleep+0xca/0xf0
-[ 38.352606] [<ffffffff81655b16>] mutex_lock+0x26/0x50
-[ 38.352610] [<ffffffff8153aaf0>] ? trace_napi_poll_hit+0xd0/0xd0
-[ 38.352616] [<ffffffff810b72d9>] tracepoint_probe_register+0x29/0x90
-[ 38.352621] [<ffffffff8153a585>] set_all_monitor_traces+0x105/0x170
-[ 38.352625] [<ffffffff8153a8ca>] net_dm_cmd_trace+0x2a/0x40
-[ 38.352630] [<ffffffff8154a81a>] genl_rcv_msg+0x21a/0x2b0
-[ 38.352636] [<ffffffff810f8029>] ? zone_statistics+0x99/0xc0
-[ 38.352640] [<ffffffff8154a600>] ? genl_rcv+0x30/0x30
-[ 38.352645] [<ffffffff8154a059>] netlink_rcv_skb+0xa9/0xd0
-[ 38.352649] [<ffffffff8154a5f0>] genl_rcv+0x20/0x30
-[ 38.352653] [<ffffffff81549a7e>] netlink_unicast+0x1ae/0x1f0
-[ 38.352658] [<ffffffff81549d76>] netlink_sendmsg+0x2b6/0x310
-[ 38.352663] [<ffffffff8150824f>] sock_sendmsg+0x10f/0x130
-[ 38.352668] [<ffffffff8150abe0>] ? move_addr_to_kernel+0x60/0xb0
-[ 38.352673] [<ffffffff81515f04>] ? verify_iovec+0x64/0xe0
-[ 38.352677] [<ffffffff81509c46>] __sys_sendmsg+0x386/0x390
-[ 38.352682] [<ffffffff810ffaf9>] ? handle_mm_fault+0x139/0x210
-[ 38.352687] [<ffffffff8165b5bc>] ? do_page_fault+0x1ec/0x4f0
-[ 38.352693] [<ffffffff8106ba4d>] ? set_next_entity+0x9d/0xb0
-[ 38.352699] [<ffffffff81310b49>] ? tty_ldisc_deref+0x9/0x10
-[ 38.352703] [<ffffffff8106d363>] ? pick_next_task_fair+0x63/0x140
-[ 38.352708] [<ffffffff8150b8d4>] sys_sendmsg+0x44/0x80
-[ 38.352713] [<ffffffff8165f8e2>] system_call_fastpath+0x16/0x1b
-
-It stems from holding a spinlock (trace_state_lock) while attempting to register
-or unregister tracepoint hooks, making in_atomic() true in this context, leading
-to the warning when the tracepoint calls might_sleep() while its taking a mutex.
-Since we only use the trace_state_lock to prevent trace protocol state races, as
-well as hardware stat list updates on an rcu write side, we can just convert the
-spinlock to a mutex to avoid this problem.
-
-Signed-off-by: Neil Horman <nhorman at tuxdriver.com>
-Reported-by: Eric Dumazet <eric.dumazet at gmail.com>
-CC: David Miller <davem at davemloft.net>
-Acked-by: Eric Dumazet <edumazet at google.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/core/drop_monitor.c | 14 +++++++-------
- 1 files changed, 7 insertions(+), 7 deletions(-)
-
-diff --git a/net/core/drop_monitor.c b/net/core/drop_monitor.c
-index 7f36b38..f74d7d7 100644
---- a/net/core/drop_monitor.c
-+++ b/net/core/drop_monitor.c
-@@ -42,7 +42,7 @@ static void send_dm_alert(struct work_struct *unused);
- * netlink alerts
- */
- static int trace_state = TRACE_OFF;
--static DEFINE_SPINLOCK(trace_state_lock);
-+static DEFINE_MUTEX(trace_state_mutex);
-
- struct per_cpu_dm_data {
- struct work_struct dm_alert_work;
-@@ -213,7 +213,7 @@ static int set_all_monitor_traces(int state)
- struct dm_hw_stat_delta *new_stat = NULL;
- struct dm_hw_stat_delta *temp;
-
-- spin_lock(&trace_state_lock);
-+ mutex_lock(&trace_state_mutex);
-
- if (state == trace_state) {
- rc = -EAGAIN;
-@@ -252,7 +252,7 @@ static int set_all_monitor_traces(int state)
- rc = -EINPROGRESS;
-
- out_unlock:
-- spin_unlock(&trace_state_lock);
-+ mutex_unlock(&trace_state_mutex);
-
- return rc;
- }
-@@ -295,12 +295,12 @@ static int dropmon_net_event(struct notifier_block *ev_block,
-
- new_stat->dev = dev;
- new_stat->last_rx = jiffies;
-- spin_lock(&trace_state_lock);
-+ mutex_lock(&trace_state_mutex);
- list_add_rcu(&new_stat->list, &hw_stats_list);
-- spin_unlock(&trace_state_lock);
-+ mutex_unlock(&trace_state_mutex);
- break;
- case NETDEV_UNREGISTER:
-- spin_lock(&trace_state_lock);
-+ mutex_lock(&trace_state_mutex);
- list_for_each_entry_safe(new_stat, tmp, &hw_stats_list, list) {
- if (new_stat->dev == dev) {
- new_stat->dev = NULL;
-@@ -311,7 +311,7 @@ static int dropmon_net_event(struct notifier_block *ev_block,
- }
- }
- }
-- spin_unlock(&trace_state_lock);
-+ mutex_unlock(&trace_state_mutex);
- break;
- }
- out:
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0064-drop_monitor-Make-updating-data-skb-smp-safe.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0064-drop_monitor-Make-updating-data-skb-smp-safe.patch
deleted file mode 100644
index 437f06c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0064-drop_monitor-Make-updating-data-skb-smp-safe.patch
+++ /dev/null
@@ -1,187 +0,0 @@
-From 89f73073f155006eaacd5709739fb83e07f3caa8 Mon Sep 17 00:00:00 2001
-From: Neil Horman <nhorman at tuxdriver.com>
-Date: Fri, 27 Apr 2012 10:11:49 +0000
-Subject: [PATCH 64/70] drop_monitor: Make updating data->skb smp safe
-
-commit 3885ca785a3618593226687ced84f3f336dc3860 upstream.
-
-Eric Dumazet pointed out to me that the drop_monitor protocol has some holes in
-its smp protections. Specifically, its possible to replace data->skb while its
-being written. This patch corrects that by making data->skb an rcu protected
-variable. That will prevent it from being overwritten while a tracepoint is
-modifying it.
-
-Signed-off-by: Neil Horman <nhorman at tuxdriver.com>
-Reported-by: Eric Dumazet <eric.dumazet at gmail.com>
-CC: David Miller <davem at davemloft.net>
-Acked-by: Eric Dumazet <edumazet at google.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/core/drop_monitor.c | 70 ++++++++++++++++++++++++++++++++++++-----------
- 1 files changed, 54 insertions(+), 16 deletions(-)
-
-diff --git a/net/core/drop_monitor.c b/net/core/drop_monitor.c
-index f74d7d7..d75cbfc 100644
---- a/net/core/drop_monitor.c
-+++ b/net/core/drop_monitor.c
-@@ -46,7 +46,7 @@ static DEFINE_MUTEX(trace_state_mutex);
-
- struct per_cpu_dm_data {
- struct work_struct dm_alert_work;
-- struct sk_buff *skb;
-+ struct sk_buff __rcu *skb;
- atomic_t dm_hit_count;
- struct timer_list send_timer;
- };
-@@ -73,35 +73,58 @@ static int dm_hit_limit = 64;
- static int dm_delay = 1;
- static unsigned long dm_hw_check_delta = 2*HZ;
- static LIST_HEAD(hw_stats_list);
-+static int initialized = 0;
-
- static void reset_per_cpu_data(struct per_cpu_dm_data *data)
- {
- size_t al;
- struct net_dm_alert_msg *msg;
- struct nlattr *nla;
-+ struct sk_buff *skb;
-+ struct sk_buff *oskb = rcu_dereference_protected(data->skb, 1);
-
- al = sizeof(struct net_dm_alert_msg);
- al += dm_hit_limit * sizeof(struct net_dm_drop_point);
- al += sizeof(struct nlattr);
-
-- data->skb = genlmsg_new(al, GFP_KERNEL);
-- genlmsg_put(data->skb, 0, 0, &net_drop_monitor_family,
-- 0, NET_DM_CMD_ALERT);
-- nla = nla_reserve(data->skb, NLA_UNSPEC, sizeof(struct net_dm_alert_msg));
-- msg = nla_data(nla);
-- memset(msg, 0, al);
-- atomic_set(&data->dm_hit_count, dm_hit_limit);
-+ skb = genlmsg_new(al, GFP_KERNEL);
-+
-+ if (skb) {
-+ genlmsg_put(skb, 0, 0, &net_drop_monitor_family,
-+ 0, NET_DM_CMD_ALERT);
-+ nla = nla_reserve(skb, NLA_UNSPEC,
-+ sizeof(struct net_dm_alert_msg));
-+ msg = nla_data(nla);
-+ memset(msg, 0, al);
-+ } else if (initialized)
-+ schedule_work_on(smp_processor_id(), &data->dm_alert_work);
-+
-+ /*
-+ * Don't need to lock this, since we are guaranteed to only
-+ * run this on a single cpu at a time.
-+ * Note also that we only update data->skb if the old and new skb
-+ * pointers don't match. This ensures that we don't continually call
-+ * synchornize_rcu if we repeatedly fail to alloc a new netlink message.
-+ */
-+ if (skb != oskb) {
-+ rcu_assign_pointer(data->skb, skb);
-+
-+ synchronize_rcu();
-+
-+ atomic_set(&data->dm_hit_count, dm_hit_limit);
-+ }
-+
- }
-
- static void send_dm_alert(struct work_struct *unused)
- {
- struct sk_buff *skb;
-- struct per_cpu_dm_data *data = &__get_cpu_var(dm_cpu_data);
-+ struct per_cpu_dm_data *data = &get_cpu_var(dm_cpu_data);
-
- /*
- * Grab the skb we're about to send
- */
-- skb = data->skb;
-+ skb = rcu_dereference_protected(data->skb, 1);
-
- /*
- * Replace it with a new one
-@@ -111,8 +134,10 @@ static void send_dm_alert(struct work_struct *unused)
- /*
- * Ship it!
- */
-- genlmsg_multicast(skb, 0, NET_DM_GRP_ALERT, GFP_KERNEL);
-+ if (skb)
-+ genlmsg_multicast(skb, 0, NET_DM_GRP_ALERT, GFP_KERNEL);
-
-+ put_cpu_var(dm_cpu_data);
- }
-
- /*
-@@ -123,9 +148,11 @@ static void send_dm_alert(struct work_struct *unused)
- */
- static void sched_send_work(unsigned long unused)
- {
-- struct per_cpu_dm_data *data = &__get_cpu_var(dm_cpu_data);
-+ struct per_cpu_dm_data *data = &get_cpu_var(dm_cpu_data);
-+
-+ schedule_work_on(smp_processor_id(), &data->dm_alert_work);
-
-- schedule_work(&data->dm_alert_work);
-+ put_cpu_var(dm_cpu_data);
- }
-
- static void trace_drop_common(struct sk_buff *skb, void *location)
-@@ -134,9 +161,16 @@ static void trace_drop_common(struct sk_buff *skb, void *location)
- struct nlmsghdr *nlh;
- struct nlattr *nla;
- int i;
-- struct per_cpu_dm_data *data = &__get_cpu_var(dm_cpu_data);
-+ struct sk_buff *dskb;
-+ struct per_cpu_dm_data *data = &get_cpu_var(dm_cpu_data);
-
-
-+ rcu_read_lock();
-+ dskb = rcu_dereference(data->skb);
-+
-+ if (!dskb)
-+ goto out;
-+
- if (!atomic_add_unless(&data->dm_hit_count, -1, 0)) {
- /*
- * we're already at zero, discard this hit
-@@ -144,7 +178,7 @@ static void trace_drop_common(struct sk_buff *skb, void *location)
- goto out;
- }
-
-- nlh = (struct nlmsghdr *)data->skb->data;
-+ nlh = (struct nlmsghdr *)dskb->data;
- nla = genlmsg_data(nlmsg_data(nlh));
- msg = nla_data(nla);
- for (i = 0; i < msg->entries; i++) {
-@@ -157,7 +191,7 @@ static void trace_drop_common(struct sk_buff *skb, void *location)
- /*
- * We need to create a new entry
- */
-- __nla_reserve_nohdr(data->skb, sizeof(struct net_dm_drop_point));
-+ __nla_reserve_nohdr(dskb, sizeof(struct net_dm_drop_point));
- nla->nla_len += NLA_ALIGN(sizeof(struct net_dm_drop_point));
- memcpy(msg->points[msg->entries].pc, &location, sizeof(void *));
- msg->points[msg->entries].count = 1;
-@@ -169,6 +203,8 @@ static void trace_drop_common(struct sk_buff *skb, void *location)
- }
-
- out:
-+ rcu_read_unlock();
-+ put_cpu_var(dm_cpu_data);
- return;
- }
-
-@@ -374,6 +410,8 @@ static int __init init_net_drop_monitor(void)
- data->send_timer.function = sched_send_work;
- }
-
-+ initialized = 1;
-+
- goto out;
-
- out_unreg:
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0065-drop_monitor-prevent-init-path-from-scheduling-on-th.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0065-drop_monitor-prevent-init-path-from-scheduling-on-th.patch
deleted file mode 100644
index 08c7a7c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0065-drop_monitor-prevent-init-path-from-scheduling-on-th.patch
+++ /dev/null
@@ -1,93 +0,0 @@
-From e056f9e8a25db637798455e701c2a42f9cdeb5b8 Mon Sep 17 00:00:00 2001
-From: Neil Horman <nhorman at tuxdriver.com>
-Date: Tue, 1 May 2012 08:18:02 +0000
-Subject: [PATCH 65/70] drop_monitor: prevent init path from scheduling on the
- wrong cpu
-
-commit 4fdcfa12843bca38d0c9deff70c8720e4e8f515f upstream.
-
-I just noticed after some recent updates, that the init path for the drop
-monitor protocol has a minor error. drop monitor maintains a per cpu structure,
-that gets initalized from a single cpu. Normally this is fine, as the protocol
-isn't in use yet, but I recently made a change that causes a failed skb
-allocation to reschedule itself . Given the current code, the implication is
-that this workqueue reschedule will take place on the wrong cpu. If drop
-monitor is used early during the boot process, its possible that two cpus will
-access a single per-cpu structure in parallel, possibly leading to data
-corruption.
-
-This patch fixes the situation, by storing the cpu number that a given instance
-of this per-cpu data should be accessed from. In the case of a need for a
-reschedule, the cpu stored in the struct is assigned the rescheule, rather than
-the currently executing cpu
-
-Tested successfully by myself.
-
-Signed-off-by: Neil Horman <nhorman at tuxdriver.com>
-CC: David Miller <davem at davemloft.net>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/core/drop_monitor.c | 12 +++++++-----
- 1 files changed, 7 insertions(+), 5 deletions(-)
-
-diff --git a/net/core/drop_monitor.c b/net/core/drop_monitor.c
-index d75cbfc..e836592 100644
---- a/net/core/drop_monitor.c
-+++ b/net/core/drop_monitor.c
-@@ -49,6 +49,7 @@ struct per_cpu_dm_data {
- struct sk_buff __rcu *skb;
- atomic_t dm_hit_count;
- struct timer_list send_timer;
-+ int cpu;
- };
-
- struct dm_hw_stat_delta {
-@@ -73,7 +74,6 @@ static int dm_hit_limit = 64;
- static int dm_delay = 1;
- static unsigned long dm_hw_check_delta = 2*HZ;
- static LIST_HEAD(hw_stats_list);
--static int initialized = 0;
-
- static void reset_per_cpu_data(struct per_cpu_dm_data *data)
- {
-@@ -96,8 +96,8 @@ static void reset_per_cpu_data(struct per_cpu_dm_data *data)
- sizeof(struct net_dm_alert_msg));
- msg = nla_data(nla);
- memset(msg, 0, al);
-- } else if (initialized)
-- schedule_work_on(smp_processor_id(), &data->dm_alert_work);
-+ } else
-+ schedule_work_on(data->cpu, &data->dm_alert_work);
-
- /*
- * Don't need to lock this, since we are guaranteed to only
-@@ -121,6 +121,8 @@ static void send_dm_alert(struct work_struct *unused)
- struct sk_buff *skb;
- struct per_cpu_dm_data *data = &get_cpu_var(dm_cpu_data);
-
-+ WARN_ON_ONCE(data->cpu != smp_processor_id());
-+
- /*
- * Grab the skb we're about to send
- */
-@@ -403,14 +405,14 @@ static int __init init_net_drop_monitor(void)
-
- for_each_present_cpu(cpu) {
- data = &per_cpu(dm_cpu_data, cpu);
-- reset_per_cpu_data(data);
-+ data->cpu = cpu;
- INIT_WORK(&data->dm_alert_work, send_dm_alert);
- init_timer(&data->send_timer);
- data->send_timer.data = cpu;
- data->send_timer.function = sched_send_work;
-+ reset_per_cpu_data(data);
- }
-
-- initialized = 1;
-
- goto out;
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0066-drop_monitor-dont-sleep-in-atomic-context.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0066-drop_monitor-dont-sleep-in-atomic-context.patch
deleted file mode 100644
index dff38d2..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0066-drop_monitor-dont-sleep-in-atomic-context.patch
+++ /dev/null
@@ -1,244 +0,0 @@
-From af61f8503b1c3a3d2e034a79abc0368ab3fd2aa4 Mon Sep 17 00:00:00 2001
-From: Eric Dumazet <edumazet at google.com>
-Date: Mon, 4 Jun 2012 00:18:19 +0000
-Subject: [PATCH 66/70] drop_monitor: dont sleep in atomic context
-
-commit bec4596b4e6770c7037f21f6bd27567b152dc0d6 upstream.
-
-drop_monitor calls several sleeping functions while in atomic context.
-
- BUG: sleeping function called from invalid context at mm/slub.c:943
- in_atomic(): 1, irqs_disabled(): 0, pid: 2103, name: kworker/0:2
- Pid: 2103, comm: kworker/0:2 Not tainted 3.5.0-rc1+ #55
- Call Trace:
- [<ffffffff810697ca>] __might_sleep+0xca/0xf0
- [<ffffffff811345a3>] kmem_cache_alloc_node+0x1b3/0x1c0
- [<ffffffff8105578c>] ? queue_delayed_work_on+0x11c/0x130
- [<ffffffff815343fb>] __alloc_skb+0x4b/0x230
- [<ffffffffa00b0360>] ? reset_per_cpu_data+0x160/0x160 [drop_monitor]
- [<ffffffffa00b022f>] reset_per_cpu_data+0x2f/0x160 [drop_monitor]
- [<ffffffffa00b03ab>] send_dm_alert+0x4b/0xb0 [drop_monitor]
- [<ffffffff810568e0>] process_one_work+0x130/0x4c0
- [<ffffffff81058249>] worker_thread+0x159/0x360
- [<ffffffff810580f0>] ? manage_workers.isra.27+0x240/0x240
- [<ffffffff8105d403>] kthread+0x93/0xa0
- [<ffffffff816be6d4>] kernel_thread_helper+0x4/0x10
- [<ffffffff8105d370>] ? kthread_freezable_should_stop+0x80/0x80
- [<ffffffff816be6d0>] ? gs_change+0xb/0xb
-
-Rework the logic to call the sleeping functions in right context.
-
-Use standard timer/workqueue api to let system chose any cpu to perform
-the allocation and netlink send.
-
-Also avoid a loop if reset_per_cpu_data() cannot allocate memory :
-use mod_timer() to wait 1/10 second before next try.
-
-Signed-off-by: Eric Dumazet <edumazet at google.com>
-Cc: Neil Horman <nhorman at tuxdriver.com>
-Reviewed-by: Neil Horman <nhorman at tuxdriver.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/core/drop_monitor.c | 101 +++++++++++++++-------------------------------
- 1 files changed, 33 insertions(+), 68 deletions(-)
-
-diff --git a/net/core/drop_monitor.c b/net/core/drop_monitor.c
-index e836592..b856f87 100644
---- a/net/core/drop_monitor.c
-+++ b/net/core/drop_monitor.c
-@@ -33,9 +33,6 @@
- #define TRACE_ON 1
- #define TRACE_OFF 0
-
--static void send_dm_alert(struct work_struct *unused);
--
--
- /*
- * Globals, our netlink socket pointer
- * and the work handle that will send up
-@@ -45,11 +42,10 @@ static int trace_state = TRACE_OFF;
- static DEFINE_MUTEX(trace_state_mutex);
-
- struct per_cpu_dm_data {
-- struct work_struct dm_alert_work;
-- struct sk_buff __rcu *skb;
-- atomic_t dm_hit_count;
-- struct timer_list send_timer;
-- int cpu;
-+ spinlock_t lock;
-+ struct sk_buff *skb;
-+ struct work_struct dm_alert_work;
-+ struct timer_list send_timer;
- };
-
- struct dm_hw_stat_delta {
-@@ -75,13 +71,13 @@ static int dm_delay = 1;
- static unsigned long dm_hw_check_delta = 2*HZ;
- static LIST_HEAD(hw_stats_list);
-
--static void reset_per_cpu_data(struct per_cpu_dm_data *data)
-+static struct sk_buff *reset_per_cpu_data(struct per_cpu_dm_data *data)
- {
- size_t al;
- struct net_dm_alert_msg *msg;
- struct nlattr *nla;
- struct sk_buff *skb;
-- struct sk_buff *oskb = rcu_dereference_protected(data->skb, 1);
-+ unsigned long flags;
-
- al = sizeof(struct net_dm_alert_msg);
- al += dm_hit_limit * sizeof(struct net_dm_drop_point);
-@@ -96,65 +92,40 @@ static void reset_per_cpu_data(struct per_cpu_dm_data *data)
- sizeof(struct net_dm_alert_msg));
- msg = nla_data(nla);
- memset(msg, 0, al);
-- } else
-- schedule_work_on(data->cpu, &data->dm_alert_work);
--
-- /*
-- * Don't need to lock this, since we are guaranteed to only
-- * run this on a single cpu at a time.
-- * Note also that we only update data->skb if the old and new skb
-- * pointers don't match. This ensures that we don't continually call
-- * synchornize_rcu if we repeatedly fail to alloc a new netlink message.
-- */
-- if (skb != oskb) {
-- rcu_assign_pointer(data->skb, skb);
--
-- synchronize_rcu();
--
-- atomic_set(&data->dm_hit_count, dm_hit_limit);
-+ } else {
-+ mod_timer(&data->send_timer, jiffies + HZ / 10);
- }
-
-+ spin_lock_irqsave(&data->lock, flags);
-+ swap(data->skb, skb);
-+ spin_unlock_irqrestore(&data->lock, flags);
-+
-+ return skb;
- }
-
--static void send_dm_alert(struct work_struct *unused)
-+static void send_dm_alert(struct work_struct *work)
- {
- struct sk_buff *skb;
-- struct per_cpu_dm_data *data = &get_cpu_var(dm_cpu_data);
-+ struct per_cpu_dm_data *data;
-
-- WARN_ON_ONCE(data->cpu != smp_processor_id());
-+ data = container_of(work, struct per_cpu_dm_data, dm_alert_work);
-
-- /*
-- * Grab the skb we're about to send
-- */
-- skb = rcu_dereference_protected(data->skb, 1);
-+ skb = reset_per_cpu_data(data);
-
-- /*
-- * Replace it with a new one
-- */
-- reset_per_cpu_data(data);
--
-- /*
-- * Ship it!
-- */
- if (skb)
- genlmsg_multicast(skb, 0, NET_DM_GRP_ALERT, GFP_KERNEL);
--
-- put_cpu_var(dm_cpu_data);
- }
-
- /*
- * This is the timer function to delay the sending of an alert
- * in the event that more drops will arrive during the
-- * hysteresis period. Note that it operates under the timer interrupt
-- * so we don't need to disable preemption here
-+ * hysteresis period.
- */
--static void sched_send_work(unsigned long unused)
-+static void sched_send_work(unsigned long _data)
- {
-- struct per_cpu_dm_data *data = &get_cpu_var(dm_cpu_data);
-+ struct per_cpu_dm_data *data = (struct per_cpu_dm_data *)_data;
-
-- schedule_work_on(smp_processor_id(), &data->dm_alert_work);
--
-- put_cpu_var(dm_cpu_data);
-+ schedule_work(&data->dm_alert_work);
- }
-
- static void trace_drop_common(struct sk_buff *skb, void *location)
-@@ -164,22 +135,17 @@ static void trace_drop_common(struct sk_buff *skb, void *location)
- struct nlattr *nla;
- int i;
- struct sk_buff *dskb;
-- struct per_cpu_dm_data *data = &get_cpu_var(dm_cpu_data);
--
-+ struct per_cpu_dm_data *data;
-+ unsigned long flags;
-
-- rcu_read_lock();
-- dskb = rcu_dereference(data->skb);
-+ local_irq_save(flags);
-+ data = &__get_cpu_var(dm_cpu_data);
-+ spin_lock(&data->lock);
-+ dskb = data->skb;
-
- if (!dskb)
- goto out;
-
-- if (!atomic_add_unless(&data->dm_hit_count, -1, 0)) {
-- /*
-- * we're already at zero, discard this hit
-- */
-- goto out;
-- }
--
- nlh = (struct nlmsghdr *)dskb->data;
- nla = genlmsg_data(nlmsg_data(nlh));
- msg = nla_data(nla);
-@@ -189,7 +155,8 @@ static void trace_drop_common(struct sk_buff *skb, void *location)
- goto out;
- }
- }
--
-+ if (msg->entries == dm_hit_limit)
-+ goto out;
- /*
- * We need to create a new entry
- */
-@@ -201,13 +168,11 @@ static void trace_drop_common(struct sk_buff *skb, void *location)
-
- if (!timer_pending(&data->send_timer)) {
- data->send_timer.expires = jiffies + dm_delay * HZ;
-- add_timer_on(&data->send_timer, smp_processor_id());
-+ add_timer(&data->send_timer);
- }
-
- out:
-- rcu_read_unlock();
-- put_cpu_var(dm_cpu_data);
-- return;
-+ spin_unlock_irqrestore(&data->lock, flags);
- }
-
- static void trace_kfree_skb_hit(void *ignore, struct sk_buff *skb, void *location)
-@@ -405,11 +370,11 @@ static int __init init_net_drop_monitor(void)
-
- for_each_present_cpu(cpu) {
- data = &per_cpu(dm_cpu_data, cpu);
-- data->cpu = cpu;
- INIT_WORK(&data->dm_alert_work, send_dm_alert);
- init_timer(&data->send_timer);
-- data->send_timer.data = cpu;
-+ data->send_timer.data = (unsigned long)data;
- data->send_timer.function = sched_send_work;
-+ spin_lock_init(&data->lock);
- reset_per_cpu_data(data);
- }
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0067-pch_uart-Fix-missing-break-for-16-byte-fifo.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0067-pch_uart-Fix-missing-break-for-16-byte-fifo.patch
deleted file mode 100644
index 54f82b5..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0067-pch_uart-Fix-missing-break-for-16-byte-fifo.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 3cae39d521ecb047ef935280fff8eac467b2b8ce Mon Sep 17 00:00:00 2001
-From: Alan Cox <alan at linux.intel.com>
-Date: Mon, 2 Jul 2012 18:51:38 +0100
-Subject: [PATCH 67/70] pch_uart: Fix missing break for 16 byte fifo
-
-commit 9bc03743fff0770dc5a5324ba92e67cc377f16ca upstream.
-
-Otherwise we fall back to the wrong value.
-
-Reported-by: <dcb314 at hotmail.com>
-Resolves-bug: https://bugzilla.kernel.org/show_bug.cgi?id=44091
-Signed-off-by: Alan Cox <alan at linux.intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/tty/serial/pch_uart.c | 1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/tty/serial/pch_uart.c b/drivers/tty/serial/pch_uart.c
-index a4b192d..5ad5040 100644
---- a/drivers/tty/serial/pch_uart.c
-+++ b/drivers/tty/serial/pch_uart.c
-@@ -1163,6 +1163,7 @@ static int pch_uart_startup(struct uart_port *port)
- break;
- case 16:
- fifo_size = PCH_UART_HAL_FIFO16;
-+ break;
- case 1:
- default:
- fifo_size = PCH_UART_HAL_FIFO_DIS;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0068-pch_uart-Fix-rx-error-interrupt-setting-issue.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0068-pch_uart-Fix-rx-error-interrupt-setting-issue.patch
deleted file mode 100644
index 010bf8c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0068-pch_uart-Fix-rx-error-interrupt-setting-issue.patch
+++ /dev/null
@@ -1,85 +0,0 @@
-From 5e59a1ea39747dfffd111ac418cb27de4047363a Mon Sep 17 00:00:00 2001
-From: Tomoya MORINAGA <tomoya.rohm at gmail.com>
-Date: Fri, 6 Jul 2012 17:19:42 +0900
-Subject: [PATCH 68/70] pch_uart: Fix rx error interrupt setting issue
-
-commit 9539dfb7ac1c84522fe1f79bb7dac2990f3de44a upstream.
-
-Rx Error interrupt(E.G. parity error) is not enabled.
-So, when parity error occurs, error interrupt is not occurred.
-As a result, the received data is not dropped.
-
-This patch adds enable/disable rx error interrupt code.
-
-Signed-off-by: Tomoya MORINAGA <tomoya.rohm at gmail.com>
-Acked-by: Alan Cox <alan at linux.intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-[Backported by Tomoya MORINGA: adjusted context]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/tty/serial/pch_uart.c | 18 ++++++++++++------
- 1 files changed, 12 insertions(+), 6 deletions(-)
-
-diff --git a/drivers/tty/serial/pch_uart.c b/drivers/tty/serial/pch_uart.c
-index 5ad5040..82f5760 100644
---- a/drivers/tty/serial/pch_uart.c
-+++ b/drivers/tty/serial/pch_uart.c
-@@ -660,7 +660,8 @@ static void pch_dma_rx_complete(void *arg)
- tty_flip_buffer_push(tty);
- tty_kref_put(tty);
- async_tx_ack(priv->desc_rx);
-- pch_uart_hal_enable_interrupt(priv, PCH_UART_HAL_RX_INT);
-+ pch_uart_hal_enable_interrupt(priv, PCH_UART_HAL_RX_INT |
-+ PCH_UART_HAL_RX_ERR_INT);
- }
-
- static void pch_dma_tx_complete(void *arg)
-@@ -715,7 +716,8 @@ static int handle_rx_to(struct eg20t_port *priv)
- int rx_size;
- int ret;
- if (!priv->start_rx) {
-- pch_uart_hal_disable_interrupt(priv, PCH_UART_HAL_RX_INT);
-+ pch_uart_hal_disable_interrupt(priv, PCH_UART_HAL_RX_INT |
-+ PCH_UART_HAL_RX_ERR_INT);
- return 0;
- }
- buf = &priv->rxbuf;
-@@ -977,11 +979,13 @@ static irqreturn_t pch_uart_interrupt(int irq, void *dev_id)
- case PCH_UART_IID_RDR: /* Received Data Ready */
- if (priv->use_dma) {
- pch_uart_hal_disable_interrupt(priv,
-- PCH_UART_HAL_RX_INT);
-+ PCH_UART_HAL_RX_INT |
-+ PCH_UART_HAL_RX_ERR_INT);
- ret = dma_handle_rx(priv);
- if (!ret)
- pch_uart_hal_enable_interrupt(priv,
-- PCH_UART_HAL_RX_INT);
-+ PCH_UART_HAL_RX_INT |
-+ PCH_UART_HAL_RX_ERR_INT);
- } else {
- ret = handle_rx(priv);
- }
-@@ -1107,7 +1111,8 @@ static void pch_uart_stop_rx(struct uart_port *port)
- struct eg20t_port *priv;
- priv = container_of(port, struct eg20t_port, port);
- priv->start_rx = 0;
-- pch_uart_hal_disable_interrupt(priv, PCH_UART_HAL_RX_INT);
-+ pch_uart_hal_disable_interrupt(priv, PCH_UART_HAL_RX_INT |
-+ PCH_UART_HAL_RX_ERR_INT);
- priv->int_dis_flag = 1;
- }
-
-@@ -1201,7 +1206,8 @@ static int pch_uart_startup(struct uart_port *port)
- pch_request_dma(port);
-
- priv->start_rx = 1;
-- pch_uart_hal_enable_interrupt(priv, PCH_UART_HAL_RX_INT);
-+ pch_uart_hal_enable_interrupt(priv, PCH_UART_HAL_RX_INT |
-+ PCH_UART_HAL_RX_ERR_INT);
- uart_update_timeout(port, CS8, default_baud);
-
- return 0;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0069-pch_uart-Fix-parity-setting-issue.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0069-pch_uart-Fix-parity-setting-issue.patch
deleted file mode 100644
index 345038c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0069-pch_uart-Fix-parity-setting-issue.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 60811100a88284132fb0d48f99305e87f8c74d0f Mon Sep 17 00:00:00 2001
-From: Tomoya MORINAGA <tomoya.rohm at gmail.com>
-Date: Fri, 6 Jul 2012 17:19:43 +0900
-Subject: [PATCH 69/70] pch_uart: Fix parity setting issue
-
-commit 38bd2a1ac736901d1cf4971c78ef952ba92ef78b upstream.
-
-Parity Setting value is reverse.
-E.G. In case of setting ODD parity, EVEN value is set.
-This patch inverts "if" condition.
-
-Signed-off-by: Tomoya MORINAGA <tomoya.rohm at gmail.com>
-Acked-by: Alan Cox <alan at linux.intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/tty/serial/pch_uart.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/tty/serial/pch_uart.c b/drivers/tty/serial/pch_uart.c
-index 82f5760..08b92a6 100644
---- a/drivers/tty/serial/pch_uart.c
-+++ b/drivers/tty/serial/pch_uart.c
-@@ -1265,7 +1265,7 @@ static void pch_uart_set_termios(struct uart_port *port,
- stb = PCH_UART_HAL_STB1;
-
- if (termios->c_cflag & PARENB) {
-- if (!(termios->c_cflag & PARODD))
-+ if (termios->c_cflag & PARODD)
- parity = PCH_UART_HAL_PARITY_ODD;
- else
- parity = PCH_UART_HAL_PARITY_EVEN;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0070-Linux-3.2.27.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0070-Linux-3.2.27.patch
deleted file mode 100644
index 6d3fce0..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.27/0070-Linux-3.2.27.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 1ff662dfc66fa1db58460d0cf92c1900095f7f0c Mon Sep 17 00:00:00 2001
-From: Ben Hutchings <ben at decadent.org.uk>
-Date: Fri, 10 Aug 2012 00:25:22 +0100
-Subject: [PATCH 70/70] Linux 3.2.27
-
----
- Makefile | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/Makefile b/Makefile
-index fa5acc83..bdf851f 100644
---- a/Makefile
-+++ b/Makefile
-@@ -1,6 +1,6 @@
- VERSION = 3
- PATCHLEVEL = 2
--SUBLEVEL = 26
-+SUBLEVEL = 27
- EXTRAVERSION =
- NAME = Saber-toothed Squirrel
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0001-bnx2-Fix-bug-in-bnx2_free_tx_skbs.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0001-bnx2-Fix-bug-in-bnx2_free_tx_skbs.patch
deleted file mode 100644
index 83af235..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0001-bnx2-Fix-bug-in-bnx2_free_tx_skbs.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From ac01c6d147d4570eba977bd3d0632732231bcf8b Mon Sep 17 00:00:00 2001
-From: Michael Chan <mchan at broadcom.com>
-Date: Tue, 10 Jul 2012 10:04:40 +0000
-Subject: [PATCH 01/38] bnx2: Fix bug in bnx2_free_tx_skbs().
-
-[ Upstream commit c1f5163de417dab01fa9daaf09a74bbb19303f3c ]
-
-In rare cases, bnx2x_free_tx_skbs() can unmap the wrong DMA address
-when it gets to the last entry of the tx ring. We were not using
-the proper macro to skip the last entry when advancing the tx index.
-
-Reported-by: Zongyun Lai <zlai at vmware.com>
-Reviewed-by: Jeffrey Huang <huangjw at broadcom.com>
-Signed-off-by: Michael Chan <mchan at broadcom.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/ethernet/broadcom/bnx2.c | 6 +++---
- 1 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/net/ethernet/broadcom/bnx2.c b/drivers/net/ethernet/broadcom/bnx2.c
-index 965c723..721adfd 100644
---- a/drivers/net/ethernet/broadcom/bnx2.c
-+++ b/drivers/net/ethernet/broadcom/bnx2.c
-@@ -5378,7 +5378,7 @@ bnx2_free_tx_skbs(struct bnx2 *bp)
- int k, last;
-
- if (skb == NULL) {
-- j++;
-+ j = NEXT_TX_BD(j);
- continue;
- }
-
-@@ -5390,8 +5390,8 @@ bnx2_free_tx_skbs(struct bnx2 *bp)
- tx_buf->skb = NULL;
-
- last = tx_buf->nr_frags;
-- j++;
-- for (k = 0; k < last; k++, j++) {
-+ j = NEXT_TX_BD(j);
-+ for (k = 0; k < last; k++, j = NEXT_TX_BD(j)) {
- tx_buf = &txr->tx_buf_ring[TX_RING_IDX(j)];
- dma_unmap_page(&bp->pdev->dev,
- dma_unmap_addr(tx_buf, mapping),
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0002-sch_sfb-Fix-missing-NULL-check.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0002-sch_sfb-Fix-missing-NULL-check.patch
deleted file mode 100644
index 480f1b8..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0002-sch_sfb-Fix-missing-NULL-check.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 9404ab928af493a8793024335d18ad8151f114c3 Mon Sep 17 00:00:00 2001
-From: Alan Cox <alan at linux.intel.com>
-Date: Thu, 12 Jul 2012 03:39:11 +0000
-Subject: [PATCH 02/38] sch_sfb: Fix missing NULL check
-
-[ Upstream commit 7ac2908e4b2edaec60e9090ddb4d9ceb76c05e7d ]
-
-Resolves-bug: https://bugzilla.kernel.org/show_bug.cgi?id=44461
-
-Signed-off-by: Alan Cox <alan at linux.intel.com>
-Acked-by: Eric Dumazet <edumazet at google.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/sched/sch_sfb.c | 2 ++
- 1 files changed, 2 insertions(+), 0 deletions(-)
-
-diff --git a/net/sched/sch_sfb.c b/net/sched/sch_sfb.c
-index 17859ea..351a69b 100644
---- a/net/sched/sch_sfb.c
-+++ b/net/sched/sch_sfb.c
-@@ -559,6 +559,8 @@ static int sfb_dump(struct Qdisc *sch, struct sk_buff *skb)
-
- sch->qstats.backlog = q->qdisc->qstats.backlog;
- opts = nla_nest_start(skb, TCA_OPTIONS);
-+ if (opts == NULL)
-+ goto nla_put_failure;
- NLA_PUT(skb, TCA_SFB_PARMS, sizeof(opt), &opt);
- return nla_nest_end(skb, opts);
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0003-sctp-Fix-list-corruption-resulting-from-freeing-an-a.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0003-sctp-Fix-list-corruption-resulting-from-freeing-an-a.patch
deleted file mode 100644
index f1291c0..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0003-sctp-Fix-list-corruption-resulting-from-freeing-an-a.patch
+++ /dev/null
@@ -1,188 +0,0 @@
-From e7ccb3dde4457e701c4ec1a77e7728e180c57526 Mon Sep 17 00:00:00 2001
-From: Neil Horman <nhorman at tuxdriver.com>
-Date: Mon, 16 Jul 2012 09:13:51 +0000
-Subject: [PATCH 03/38] sctp: Fix list corruption resulting from freeing an
- association on a list
-
-[ Upstream commit 2eebc1e188e9e45886ee00662519849339884d6d ]
-
-A few days ago Dave Jones reported this oops:
-
-[22766.294255] general protection fault: 0000 [#1] PREEMPT SMP
-[22766.295376] CPU 0
-[22766.295384] Modules linked in:
-[22766.387137] ffffffffa169f292 6b6b6b6b6b6b6b6b ffff880147c03a90
-ffff880147c03a74
-[22766.387135] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 00000000000
-[22766.387136] Process trinity-watchdo (pid: 10896, threadinfo ffff88013e7d2000,
-[22766.387137] Stack:
-[22766.387140] ffff880147c03a10
-[22766.387140] ffffffffa169f2b6
-[22766.387140] ffff88013ed95728
-[22766.387143] 0000000000000002
-[22766.387143] 0000000000000000
-[22766.387143] ffff880003fad062
-[22766.387144] ffff88013c120000
-[22766.387144]
-[22766.387145] Call Trace:
-[22766.387145] <IRQ>
-[22766.387150] [<ffffffffa169f292>] ? __sctp_lookup_association+0x62/0xd0
-[sctp]
-[22766.387154] [<ffffffffa169f2b6>] __sctp_lookup_association+0x86/0xd0 [sctp]
-[22766.387157] [<ffffffffa169f597>] sctp_rcv+0x207/0xbb0 [sctp]
-[22766.387161] [<ffffffff810d4da8>] ? trace_hardirqs_off_caller+0x28/0xd0
-[22766.387163] [<ffffffff815827e3>] ? nf_hook_slow+0x133/0x210
-[22766.387166] [<ffffffff815902fc>] ? ip_local_deliver_finish+0x4c/0x4c0
-[22766.387168] [<ffffffff8159043d>] ip_local_deliver_finish+0x18d/0x4c0
-[22766.387169] [<ffffffff815902fc>] ? ip_local_deliver_finish+0x4c/0x4c0
-[22766.387171] [<ffffffff81590a07>] ip_local_deliver+0x47/0x80
-[22766.387172] [<ffffffff8158fd80>] ip_rcv_finish+0x150/0x680
-[22766.387174] [<ffffffff81590c54>] ip_rcv+0x214/0x320
-[22766.387176] [<ffffffff81558c07>] __netif_receive_skb+0x7b7/0x910
-[22766.387178] [<ffffffff8155856c>] ? __netif_receive_skb+0x11c/0x910
-[22766.387180] [<ffffffff810d423e>] ? put_lock_stats.isra.25+0xe/0x40
-[22766.387182] [<ffffffff81558f83>] netif_receive_skb+0x23/0x1f0
-[22766.387183] [<ffffffff815596a9>] ? dev_gro_receive+0x139/0x440
-[22766.387185] [<ffffffff81559280>] napi_skb_finish+0x70/0xa0
-[22766.387187] [<ffffffff81559cb5>] napi_gro_receive+0xf5/0x130
-[22766.387218] [<ffffffffa01c4679>] e1000_receive_skb+0x59/0x70 [e1000e]
-[22766.387242] [<ffffffffa01c5aab>] e1000_clean_rx_irq+0x28b/0x460 [e1000e]
-[22766.387266] [<ffffffffa01c9c18>] e1000e_poll+0x78/0x430 [e1000e]
-[22766.387268] [<ffffffff81559fea>] net_rx_action+0x1aa/0x3d0
-[22766.387270] [<ffffffff810a495f>] ? account_system_vtime+0x10f/0x130
-[22766.387273] [<ffffffff810734d0>] __do_softirq+0xe0/0x420
-[22766.387275] [<ffffffff8169826c>] call_softirq+0x1c/0x30
-[22766.387278] [<ffffffff8101db15>] do_softirq+0xd5/0x110
-[22766.387279] [<ffffffff81073bc5>] irq_exit+0xd5/0xe0
-[22766.387281] [<ffffffff81698b03>] do_IRQ+0x63/0xd0
-[22766.387283] [<ffffffff8168ee2f>] common_interrupt+0x6f/0x6f
-[22766.387283] <EOI>
-[22766.387284]
-[22766.387285] [<ffffffff8168eed9>] ? retint_swapgs+0x13/0x1b
-[22766.387285] Code: c0 90 5d c3 66 0f 1f 44 00 00 4c 89 c8 5d c3 0f 1f 00 55 48
-89 e5 48 83
-ec 20 48 89 5d e8 4c 89 65 f0 4c 89 6d f8 66 66 66 66 90 <0f> b7 87 98 00 00 00
-48 89 fb
-49 89 f5 66 c1 c0 08 66 39 46 02
-[22766.387307]
-[22766.387307] RIP
-[22766.387311] [<ffffffffa168a2c9>] sctp_assoc_is_match+0x19/0x90 [sctp]
-[22766.387311] RSP <ffff880147c039b0>
-[22766.387142] ffffffffa16ab120
-[22766.599537] ---[ end trace 3f6dae82e37b17f5 ]---
-[22766.601221] Kernel panic - not syncing: Fatal exception in interrupt
-
-It appears from his analysis and some staring at the code that this is likely
-occuring because an association is getting freed while still on the
-sctp_assoc_hashtable. As a result, we get a gpf when traversing the hashtable
-while a freed node corrupts part of the list.
-
-Nominally I would think that an mibalanced refcount was responsible for this,
-but I can't seem to find any obvious imbalance. What I did note however was
-that the two places where we create an association using
-sctp_primitive_ASSOCIATE (__sctp_connect and sctp_sendmsg), have failure paths
-which free a newly created association after calling sctp_primitive_ASSOCIATE.
-sctp_primitive_ASSOCIATE brings us into the sctp_sf_do_prm_asoc path, which
-issues a SCTP_CMD_NEW_ASOC side effect, which in turn adds a new association to
-the aforementioned hash table. the sctp command interpreter that process side
-effects has not way to unwind previously processed commands, so freeing the
-association from the __sctp_connect or sctp_sendmsg error path would lead to a
-freed association remaining on this hash table.
-
-I've fixed this but modifying sctp_[un]hash_established to use hlist_del_init,
-which allows us to proerly use hlist_unhashed to check if the node is on a
-hashlist safely during a delete. That in turn alows us to safely call
-sctp_unhash_established in the __sctp_connect and sctp_sendmsg error paths
-before freeing them, regardles of what the associations state is on the hash
-list.
-
-I noted, while I was doing this, that the __sctp_unhash_endpoint was using
-hlist_unhsashed in a simmilar fashion, but never nullified any removed nodes
-pointers to make that function work properly, so I fixed that up in a simmilar
-fashion.
-
-I attempted to test this using a virtual guest running the SCTP_RR test from
-netperf in a loop while running the trinity fuzzer, both in a loop. I wasn't
-able to recreate the problem prior to this fix, nor was I able to trigger the
-failure after (neither of which I suppose is suprising). Given the trace above
-however, I think its likely that this is what we hit.
-
-Signed-off-by: Neil Horman <nhorman at tuxdriver.com>
-Reported-by: davej at redhat.com
-CC: davej at redhat.com
-CC: "David S. Miller" <davem at davemloft.net>
-CC: Vlad Yasevich <vyasevich at gmail.com>
-CC: Sridhar Samudrala <sri at us.ibm.com>
-CC: linux-sctp at vger.kernel.org
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/sctp/input.c | 7 ++-----
- net/sctp/socket.c | 12 ++++++++++--
- 2 files changed, 12 insertions(+), 7 deletions(-)
-
-diff --git a/net/sctp/input.c b/net/sctp/input.c
-index b7692aa..0fc18c7 100644
---- a/net/sctp/input.c
-+++ b/net/sctp/input.c
-@@ -736,15 +736,12 @@ static void __sctp_unhash_endpoint(struct sctp_endpoint *ep)
-
- epb = &ep->base;
-
-- if (hlist_unhashed(&epb->node))
-- return;
--
- epb->hashent = sctp_ep_hashfn(epb->bind_addr.port);
-
- head = &sctp_ep_hashtable[epb->hashent];
-
- sctp_write_lock(&head->lock);
-- __hlist_del(&epb->node);
-+ hlist_del_init(&epb->node);
- sctp_write_unlock(&head->lock);
- }
-
-@@ -825,7 +822,7 @@ static void __sctp_unhash_established(struct sctp_association *asoc)
- head = &sctp_assoc_hashtable[epb->hashent];
-
- sctp_write_lock(&head->lock);
-- __hlist_del(&epb->node);
-+ hlist_del_init(&epb->node);
- sctp_write_unlock(&head->lock);
- }
-
-diff --git a/net/sctp/socket.c b/net/sctp/socket.c
-index 0075554..8e49d76 100644
---- a/net/sctp/socket.c
-+++ b/net/sctp/socket.c
-@@ -1231,8 +1231,14 @@ out_free:
- SCTP_DEBUG_PRINTK("About to exit __sctp_connect() free asoc: %p"
- " kaddrs: %p err: %d\n",
- asoc, kaddrs, err);
-- if (asoc)
-+ if (asoc) {
-+ /* sctp_primitive_ASSOCIATE may have added this association
-+ * To the hash table, try to unhash it, just in case, its a noop
-+ * if it wasn't hashed so we're safe
-+ */
-+ sctp_unhash_established(asoc);
- sctp_association_free(asoc);
-+ }
- return err;
- }
-
-@@ -1942,8 +1948,10 @@ SCTP_STATIC int sctp_sendmsg(struct kiocb *iocb, struct sock *sk,
- goto out_unlock;
-
- out_free:
-- if (new_asoc)
-+ if (new_asoc) {
-+ sctp_unhash_established(asoc);
- sctp_association_free(asoc);
-+ }
- out_unlock:
- sctp_release_sock(sk);
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0004-caif-Fix-access-to-freed-pernet-memory.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0004-caif-Fix-access-to-freed-pernet-memory.patch
deleted file mode 100644
index d974620..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0004-caif-Fix-access-to-freed-pernet-memory.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From b86789c525a7fc1e9cae59eb21bc0138f89ba8c3 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Sjur=20Br=C3=A6ndeland?= <sjur.brandeland at stericsson.com>
-Date: Sun, 15 Jul 2012 10:10:14 +0000
-Subject: [PATCH 04/38] caif: Fix access to freed pernet memory
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-[ Upstream commit 96f80d123eff05c3cd4701463786b87952a6c3ac ]
-
-unregister_netdevice_notifier() must be called before
-unregister_pernet_subsys() to avoid accessing already freed
-pernet memory. This fixes the following oops when doing rmmod:
-
-Call Trace:
- [<ffffffffa0f802bd>] caif_device_notify+0x4d/0x5a0 [caif]
- [<ffffffff81552ba9>] unregister_netdevice_notifier+0xb9/0x100
- [<ffffffffa0f86dcc>] caif_device_exit+0x1c/0x250 [caif]
- [<ffffffff810e7734>] sys_delete_module+0x1a4/0x300
- [<ffffffff810da82d>] ? trace_hardirqs_on_caller+0x15d/0x1e0
- [<ffffffff813517de>] ? trace_hardirqs_on_thunk+0x3a/0x3
- [<ffffffff81696bad>] system_call_fastpath+0x1a/0x1f
-
-RIP
- [<ffffffffa0f7f561>] caif_get+0x51/0xb0 [caif]
-
-Signed-off-by: Sjur Brændeland <sjur.brandeland at stericsson.com>
-Acked-by: "Eric W. Biederman" <ebiederm at xmission.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/caif/caif_dev.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/net/caif/caif_dev.c b/net/caif/caif_dev.c
-index 68223e4..4e9115d 100644
---- a/net/caif/caif_dev.c
-+++ b/net/caif/caif_dev.c
-@@ -428,9 +428,9 @@ static int __init caif_device_init(void)
-
- static void __exit caif_device_exit(void)
- {
-- unregister_pernet_subsys(&caif_net_ops);
- unregister_netdevice_notifier(&caif_device_notifier);
- dev_remove_pack(&caif_packet_type);
-+ unregister_pernet_subsys(&caif_net_ops);
- }
-
- module_init(caif_device_init);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0005-cipso-don-t-follow-a-NULL-pointer-when-setsockopt-is.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0005-cipso-don-t-follow-a-NULL-pointer-when-setsockopt-is.patch
deleted file mode 100644
index ee4d3cc..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0005-cipso-don-t-follow-a-NULL-pointer-when-setsockopt-is.patch
+++ /dev/null
@@ -1,95 +0,0 @@
-From 6037d0b798b22b0b0be2a95c65e629b5532884a2 Mon Sep 17 00:00:00 2001
-From: Paul Moore <pmoore at redhat.com>
-Date: Tue, 17 Jul 2012 11:07:47 +0000
-Subject: [PATCH 05/38] cipso: don't follow a NULL pointer when setsockopt()
- is called
-
-[ Upstream commit 89d7ae34cdda4195809a5a987f697a517a2a3177 ]
-
-As reported by Alan Cox, and verified by Lin Ming, when a user
-attempts to add a CIPSO option to a socket using the CIPSO_V4_TAG_LOCAL
-tag the kernel dies a terrible death when it attempts to follow a NULL
-pointer (the skb argument to cipso_v4_validate() is NULL when called via
-the setsockopt() syscall).
-
-This patch fixes this by first checking to ensure that the skb is
-non-NULL before using it to find the incoming network interface. In
-the unlikely case where the skb is NULL and the user attempts to add
-a CIPSO option with the _TAG_LOCAL tag we return an error as this is
-not something we want to allow.
-
-A simple reproducer, kindly supplied by Lin Ming, although you must
-have the CIPSO DOI #3 configure on the system first or you will be
-caught early in cipso_v4_validate():
-
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <linux/ip.h>
- #include <linux/in.h>
- #include <string.h>
-
- struct local_tag {
- char type;
- char length;
- char info[4];
- };
-
- struct cipso {
- char type;
- char length;
- char doi[4];
- struct local_tag local;
- };
-
- int main(int argc, char **argv)
- {
- int sockfd;
- struct cipso cipso = {
- .type = IPOPT_CIPSO,
- .length = sizeof(struct cipso),
- .local = {
- .type = 128,
- .length = sizeof(struct local_tag),
- },
- };
-
- memset(cipso.doi, 0, 4);
- cipso.doi[3] = 3;
-
- sockfd = socket(AF_INET, SOCK_DGRAM, 0);
- #define SOL_IP 0
- setsockopt(sockfd, SOL_IP, IP_OPTIONS,
- &cipso, sizeof(struct cipso));
-
- return 0;
- }
-
-CC: Lin Ming <mlin at ss.pku.edu.cn>
-Reported-by: Alan Cox <alan at lxorguk.ukuu.org.uk>
-Signed-off-by: Paul Moore <pmoore at redhat.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/ipv4/cipso_ipv4.c | 6 ++++--
- 1 files changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/net/ipv4/cipso_ipv4.c b/net/ipv4/cipso_ipv4.c
-index 86f3b88..afaa735 100644
---- a/net/ipv4/cipso_ipv4.c
-+++ b/net/ipv4/cipso_ipv4.c
-@@ -1725,8 +1725,10 @@ int cipso_v4_validate(const struct sk_buff *skb, unsigned char **option)
- case CIPSO_V4_TAG_LOCAL:
- /* This is a non-standard tag that we only allow for
- * local connections, so if the incoming interface is
-- * not the loopback device drop the packet. */
-- if (!(skb->dev->flags & IFF_LOOPBACK)) {
-+ * not the loopback device drop the packet. Further,
-+ * there is no legitimate reason for setting this from
-+ * userspace so reject it if skb is NULL. */
-+ if (skb == NULL || !(skb->dev->flags & IFF_LOOPBACK)) {
- err_offset = opt_iter;
- goto validate_return_locked;
- }
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0006-caif-fix-NULL-pointer-check.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0006-caif-fix-NULL-pointer-check.patch
deleted file mode 100644
index b83525e..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0006-caif-fix-NULL-pointer-check.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 074a6a80582984a2cf5fb8f62225bbd9cd314434 Mon Sep 17 00:00:00 2001
-From: Alan Cox <alan at linux.intel.com>
-Date: Tue, 24 Jul 2012 02:42:14 +0000
-Subject: [PATCH 06/38] caif: fix NULL pointer check
-
-[ Upstream commit c66b9b7d365444b433307ebb18734757cb668a02 ]
-
-Reported-by: <rucsoftsec at gmail.com>
-Resolves-bug: http://bugzilla.kernel.org/show_bug?44441
-Signed-off-by: Alan Cox <alan at linux.intel.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/caif/caif_serial.c | 3 +++
- 1 files changed, 3 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/net/caif/caif_serial.c b/drivers/net/caif/caif_serial.c
-index 23406e6..ae286a9 100644
---- a/drivers/net/caif/caif_serial.c
-+++ b/drivers/net/caif/caif_serial.c
-@@ -325,6 +325,9 @@ static int ldisc_open(struct tty_struct *tty)
-
- sprintf(name, "cf%s", tty->name);
- dev = alloc_netdev(sizeof(*ser), name, caifdev_setup);
-+ if (!dev)
-+ return -ENOMEM;
-+
- ser = netdev_priv(dev);
- ser->tty = tty_kref_get(tty);
- ser->dev = dev;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0007-wanmain-comparing-array-with-NULL.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0007-wanmain-comparing-array-with-NULL.patch
deleted file mode 100644
index 1534803..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0007-wanmain-comparing-array-with-NULL.patch
+++ /dev/null
@@ -1,83 +0,0 @@
-From ed8467f422e2d17a05fbe02b149780199a683d11 Mon Sep 17 00:00:00 2001
-From: Alan Cox <alan at linux.intel.com>
-Date: Tue, 24 Jul 2012 08:16:25 +0000
-Subject: [PATCH 07/38] wanmain: comparing array with NULL
-
-[ Upstream commit 8b72ff6484fe303e01498b58621810a114f3cf09 ]
-
-gcc really should warn about these !
-
-Signed-off-by: Alan Cox <alan at linux.intel.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/wanrouter/wanmain.c | 51 +++++++++++++++++++++-------------------------
- 1 files changed, 23 insertions(+), 28 deletions(-)
-
-diff --git a/net/wanrouter/wanmain.c b/net/wanrouter/wanmain.c
-index 788a12c..2ab7850 100644
---- a/net/wanrouter/wanmain.c
-+++ b/net/wanrouter/wanmain.c
-@@ -602,36 +602,31 @@ static int wanrouter_device_new_if(struct wan_device *wandev,
- * successfully, add it to the interface list.
- */
-
-- if (dev->name == NULL) {
-- err = -EINVAL;
-- } else {
-+#ifdef WANDEBUG
-+ printk(KERN_INFO "%s: registering interface %s...\n",
-+ wanrouter_modname, dev->name);
-+#endif
-
-- #ifdef WANDEBUG
-- printk(KERN_INFO "%s: registering interface %s...\n",
-- wanrouter_modname, dev->name);
-- #endif
--
-- err = register_netdev(dev);
-- if (!err) {
-- struct net_device *slave = NULL;
-- unsigned long smp_flags=0;
--
-- lock_adapter_irq(&wandev->lock, &smp_flags);
--
-- if (wandev->dev == NULL) {
-- wandev->dev = dev;
-- } else {
-- for (slave=wandev->dev;
-- DEV_TO_SLAVE(slave);
-- slave = DEV_TO_SLAVE(slave))
-- DEV_TO_SLAVE(slave) = dev;
-- }
-- ++wandev->ndev;
--
-- unlock_adapter_irq(&wandev->lock, &smp_flags);
-- err = 0; /* done !!! */
-- goto out;
-+ err = register_netdev(dev);
-+ if (!err) {
-+ struct net_device *slave = NULL;
-+ unsigned long smp_flags=0;
-+
-+ lock_adapter_irq(&wandev->lock, &smp_flags);
-+
-+ if (wandev->dev == NULL) {
-+ wandev->dev = dev;
-+ } else {
-+ for (slave=wandev->dev;
-+ DEV_TO_SLAVE(slave);
-+ slave = DEV_TO_SLAVE(slave))
-+ DEV_TO_SLAVE(slave) = dev;
- }
-+ ++wandev->ndev;
-+
-+ unlock_adapter_irq(&wandev->lock, &smp_flags);
-+ err = 0; /* done !!! */
-+ goto out;
- }
- if (wandev->del_if)
- wandev->del_if(wandev, dev);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0008-tcp-Add-TCP_USER_TIMEOUT-negative-value-check.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0008-tcp-Add-TCP_USER_TIMEOUT-negative-value-check.patch
deleted file mode 100644
index c2a2ae2..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0008-tcp-Add-TCP_USER_TIMEOUT-negative-value-check.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 24be4ad08d43124b8146baeaf2e0ea04beaeedc4 Mon Sep 17 00:00:00 2001
-From: Hangbin Liu <liuhangbin at gmail.com>
-Date: Thu, 26 Jul 2012 22:52:21 +0000
-Subject: [PATCH 08/38] tcp: Add TCP_USER_TIMEOUT negative value check
-
-[ Upstream commit 42493570100b91ef663c4c6f0c0fdab238f9d3c2 ]
-
-TCP_USER_TIMEOUT is a TCP level socket option that takes an unsigned int. But
-patch "tcp: Add TCP_USER_TIMEOUT socket option"(dca43c75) didn't check the negative
-values. If a user assign -1 to it, the socket will set successfully and wait
-for 4294967295 miliseconds. This patch add a negative value check to avoid
-this issue.
-
-Signed-off-by: Hangbin Liu <liuhangbin at gmail.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/ipv4/tcp.c | 5 ++++-
- 1 files changed, 4 insertions(+), 1 deletions(-)
-
-diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
-index 11ba922..ad466a7 100644
---- a/net/ipv4/tcp.c
-+++ b/net/ipv4/tcp.c
-@@ -2391,7 +2391,10 @@ static int do_tcp_setsockopt(struct sock *sk, int level,
- /* Cap the max timeout in ms TCP will retry/retrans
- * before giving up and aborting (ETIMEDOUT) a connection.
- */
-- icsk->icsk_user_timeout = msecs_to_jiffies(val);
-+ if (val < 0)
-+ err = -EINVAL;
-+ else
-+ icsk->icsk_user_timeout = msecs_to_jiffies(val);
- break;
- default:
- err = -ENOPROTOOPT;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0009-USB-kaweth.c-use-GFP_ATOMIC-under-spin_lock.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0009-USB-kaweth.c-use-GFP_ATOMIC-under-spin_lock.patch
deleted file mode 100644
index aa27cd5..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0009-USB-kaweth.c-use-GFP_ATOMIC-under-spin_lock.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 0ffa373b3d400c24d958e623a99a276c4a5e25db Mon Sep 17 00:00:00 2001
-From: Dan Carpenter <dan.carpenter at oracle.com>
-Date: Fri, 27 Jul 2012 01:46:51 +0000
-Subject: [PATCH 09/38] USB: kaweth.c: use GFP_ATOMIC under spin_lock
-
-[ Upstream commit e4c7f259c5be99dcfc3d98f913590663b0305bf8 ]
-
-The problem is that we call this with a spin lock held. The call tree
-is:
- kaweth_start_xmit() holds kaweth->device_lock.
- -> kaweth_async_set_rx_mode()
- -> kaweth_control()
- -> kaweth_internal_control_msg()
-
-The kaweth_internal_control_msg() function is only called from
-kaweth_control() which used GFP_ATOMIC for its allocations.
-
-Signed-off-by: Dan Carpenter <dan.carpenter at oracle.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/usb/kaweth.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/net/usb/kaweth.c b/drivers/net/usb/kaweth.c
-index 582ca2d..c4c6a73 100644
---- a/drivers/net/usb/kaweth.c
-+++ b/drivers/net/usb/kaweth.c
-@@ -1308,7 +1308,7 @@ static int kaweth_internal_control_msg(struct usb_device *usb_dev,
- int retv;
- int length = 0; /* shut up GCC */
-
-- urb = usb_alloc_urb(0, GFP_NOIO);
-+ urb = usb_alloc_urb(0, GFP_ATOMIC);
- if (!urb)
- return -ENOMEM;
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0010-net-fix-rtnetlink-IFF_PROMISC-and-IFF_ALLMULTI-handl.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0010-net-fix-rtnetlink-IFF_PROMISC-and-IFF_ALLMULTI-handl.patch
deleted file mode 100644
index b662f1a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0010-net-fix-rtnetlink-IFF_PROMISC-and-IFF_ALLMULTI-handl.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From 10bd72dd5d3631b8058ef86bfbb64d5176477dc7 Mon Sep 17 00:00:00 2001
-From: Jiri Benc <jbenc at redhat.com>
-Date: Fri, 27 Jul 2012 02:58:22 +0000
-Subject: [PATCH 10/38] net: fix rtnetlink IFF_PROMISC and IFF_ALLMULTI
- handling
-
-[ Upstream commit b1beb681cba5358f62e6187340660ade226a5fcc ]
-
-When device flags are set using rtnetlink, IFF_PROMISC and IFF_ALLMULTI
-flags are handled specially. Function dev_change_flags sets IFF_PROMISC and
-IFF_ALLMULTI bits in dev->gflags according to the passed value but
-do_setlink passes a result of rtnl_dev_combine_flags which takes those bits
-from dev->flags.
-
-This can be easily trigerred by doing:
-
-tcpdump -i eth0 &
-ip l s up eth0
-
-ip sets IFF_UP flag in ifi_flags and ifi_change, which is combined with
-IFF_PROMISC by rtnl_dev_combine_flags, causing __dev_change_flags to set
-IFF_PROMISC in gflags.
-
-Reported-by: Max Matveev <makc at redhat.com>
-Signed-off-by: Jiri Benc <jbenc at redhat.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/core/rtnetlink.c | 8 +++++++-
- 1 files changed, 7 insertions(+), 1 deletions(-)
-
-diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c
-index 05842ab..0cf604b 100644
---- a/net/core/rtnetlink.c
-+++ b/net/core/rtnetlink.c
-@@ -670,6 +670,12 @@ static void set_operstate(struct net_device *dev, unsigned char transition)
- }
- }
-
-+static unsigned int rtnl_dev_get_flags(const struct net_device *dev)
-+{
-+ return (dev->flags & ~(IFF_PROMISC | IFF_ALLMULTI)) |
-+ (dev->gflags & (IFF_PROMISC | IFF_ALLMULTI));
-+}
-+
- static unsigned int rtnl_dev_combine_flags(const struct net_device *dev,
- const struct ifinfomsg *ifm)
- {
-@@ -678,7 +684,7 @@ static unsigned int rtnl_dev_combine_flags(const struct net_device *dev,
- /* bugwards compatibility: ifi_change == 0 is treated as ~0 */
- if (ifm->ifi_change)
- flags = (flags & ifm->ifi_change) |
-- (dev->flags & ~ifm->ifi_change);
-+ (rtnl_dev_get_flags(dev) & ~ifm->ifi_change);
-
- return flags;
- }
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0011-tcp-perform-DMA-to-userspace-only-if-there-is-a-task.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0011-tcp-perform-DMA-to-userspace-only-if-there-is-a-task.patch
deleted file mode 100644
index 86f8026..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0011-tcp-perform-DMA-to-userspace-only-if-there-is-a-task.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From 0d41914945b1a1d6b6aa1c9ec95af25a5d7d06e6 Mon Sep 17 00:00:00 2001
-From: Jiri Kosina <jkosina at suse.cz>
-Date: Fri, 27 Jul 2012 10:38:50 +0000
-Subject: [PATCH 11/38] tcp: perform DMA to userspace only if there is a task
- waiting for it
-
-[ Upstream commit 59ea33a68a9083ac98515e4861c00e71efdc49a1 ]
-
-Back in 2006, commit 1a2449a87b ("[I/OAT]: TCP recv offload to I/OAT")
-added support for receive offloading to IOAT dma engine if available.
-
-The code in tcp_rcv_established() tries to perform early DMA copy if
-applicable. It however does so without checking whether the userspace
-task is actually expecting the data in the buffer.
-
-This is not a problem under normal circumstances, but there is a corner
-case where this doesn't work -- and that's when MSG_TRUNC flag to
-recvmsg() is used.
-
-If the IOAT dma engine is not used, the code properly checks whether
-there is a valid ucopy.task and the socket is owned by userspace, but
-misses the check in the dmaengine case.
-
-This problem can be observed in real trivially -- for example 'tbench' is a
-good reproducer, as it makes a heavy use of MSG_TRUNC. On systems utilizing
-IOAT, you will soon find tbench waiting indefinitely in sk_wait_data(), as they
-have been already early-copied in tcp_rcv_established() using dma engine.
-
-This patch introduces the same check we are performing in the simple
-iovec copy case to the IOAT case as well. It fixes the indefinite
-recvmsg(MSG_TRUNC) hangs.
-
-Signed-off-by: Jiri Kosina <jkosina at suse.cz>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/ipv4/tcp_input.c | 4 +++-
- 1 files changed, 3 insertions(+), 1 deletions(-)
-
-diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
-index 32e6ca2..a08a621 100644
---- a/net/ipv4/tcp_input.c
-+++ b/net/ipv4/tcp_input.c
-@@ -5415,7 +5415,9 @@ int tcp_rcv_established(struct sock *sk, struct sk_buff *skb,
- if (tp->copied_seq == tp->rcv_nxt &&
- len - tcp_header_len <= tp->ucopy.len) {
- #ifdef CONFIG_NET_DMA
-- if (tcp_dma_try_early_copy(sk, skb, tcp_header_len)) {
-+ if (tp->ucopy.task == current &&
-+ sock_owned_by_user(sk) &&
-+ tcp_dma_try_early_copy(sk, skb, tcp_header_len)) {
- copied_early = 1;
- eaten = 1;
- }
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0012-net-tun-fix-ioctl-based-info-leaks.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0012-net-tun-fix-ioctl-based-info-leaks.patch
deleted file mode 100644
index efd8310..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0012-net-tun-fix-ioctl-based-info-leaks.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From c45f3d3d8ea33347baec087b5f05f561bbb7e994 Mon Sep 17 00:00:00 2001
-From: Mathias Krause <minipli at googlemail.com>
-Date: Sun, 29 Jul 2012 19:45:14 +0000
-Subject: [PATCH 12/38] net/tun: fix ioctl() based info leaks
-
-[ Upstream commits a117dacde0288f3ec60b6e5bcedae8fa37ee0dfc
- and 8bbb181308bc348e02bfdbebdedd4e4ec9d452ce ]
-
-The tun module leaks up to 36 bytes of memory by not fully initializing
-a structure located on the stack that gets copied to user memory by the
-TUNGETIFF and SIOCGIFHWADDR ioctl()s.
-
-Signed-off-by: Mathias Krause <minipli at googlemail.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/tun.c | 6 ++++--
- 1 files changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/net/tun.c b/drivers/net/tun.c
-index 7bea9c6..a12c9bf 100644
---- a/drivers/net/tun.c
-+++ b/drivers/net/tun.c
-@@ -1243,10 +1243,12 @@ static long __tun_chr_ioctl(struct file *file, unsigned int cmd,
- int vnet_hdr_sz;
- int ret;
-
-- if (cmd == TUNSETIFF || _IOC_TYPE(cmd) == 0x89)
-+ if (cmd == TUNSETIFF || _IOC_TYPE(cmd) == 0x89) {
- if (copy_from_user(&ifr, argp, ifreq_len))
- return -EFAULT;
--
-+ } else {
-+ memset(&ifr, 0, sizeof(ifr));
-+ }
- if (cmd == TUNGETFEATURES) {
- /* Currently this just means: "what IFF flags are valid?".
- * This is needed because we never checked for invalid flags on
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0013-e1000-add-dropped-DMA-receive-enable-back-in-for-WoL.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0013-e1000-add-dropped-DMA-receive-enable-back-in-for-WoL.patch
deleted file mode 100644
index 6011417..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0013-e1000-add-dropped-DMA-receive-enable-back-in-for-WoL.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From a434024fe4e85366698b867be432dfd3dc2f70c1 Mon Sep 17 00:00:00 2001
-From: Dean Nelson <dnelson at redhat.com>
-Date: Thu, 19 Jan 2012 17:47:24 +0000
-Subject: [PATCH 13/38] e1000: add dropped DMA receive enable back in for WoL
-
-commit b868179c47e9e8eadcd04c1f3105998e528988a3 upstream.
-
-Commit d5bc77a223b0e9b9dfb002048d2b34a79e7d0b48 broke Wake-on-LAN by
-inadvertently dropping the enabling of DMA receives.
-
-Restore the enabling of DMA receives for WoL.
-
-This is applicable to 3.1+ stable trees.
-
-Reported-by: Tobias Klausmann <klausman at schwarzvogel.de>
-Signed-off-by: Dean Nelson <dnelson at redhat.com>
-Tested-by: Tobias Klausmann <klausman at schwarzvogel.de>
-Tested-by: Aaron Brown <aaron.f.brown at intel.com>
-Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher at intel.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/ethernet/intel/e1000/e1000_main.c | 10 ++++++----
- 1 files changed, 6 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/net/ethernet/intel/e1000/e1000_main.c b/drivers/net/ethernet/intel/e1000/e1000_main.c
-index de00805..0549261 100644
---- a/drivers/net/ethernet/intel/e1000/e1000_main.c
-+++ b/drivers/net/ethernet/intel/e1000/e1000_main.c
-@@ -4743,12 +4743,14 @@ static int __e1000_shutdown(struct pci_dev *pdev, bool *enable_wake)
- e1000_setup_rctl(adapter);
- e1000_set_rx_mode(netdev);
-
-+ rctl = er32(RCTL);
-+
- /* turn on all-multi mode if wake on multicast is enabled */
-- if (wufc & E1000_WUFC_MC) {
-- rctl = er32(RCTL);
-+ if (wufc & E1000_WUFC_MC)
- rctl |= E1000_RCTL_MPE;
-- ew32(RCTL, rctl);
-- }
-+
-+ /* enable receives in the hardware */
-+ ew32(RCTL, rctl | E1000_RCTL_EN);
-
- if (hw->mac_type >= e1000_82540) {
- ctrl = er32(CTRL);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0014-rtlwifi-rtl8192cu-Change-buffer-allocation-for-synch.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0014-rtlwifi-rtl8192cu-Change-buffer-allocation-for-synch.patch
deleted file mode 100644
index 40ef189..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0014-rtlwifi-rtl8192cu-Change-buffer-allocation-for-synch.patch
+++ /dev/null
@@ -1,77 +0,0 @@
-From 9f32412e06d7c657dc0db00f1990196da0edc7b5 Mon Sep 17 00:00:00 2001
-From: Larry Finger <Larry.Finger at lwfinger.net>
-Date: Wed, 11 Jul 2012 14:37:28 -0500
-Subject: [PATCH 14/38] rtlwifi: rtl8192cu: Change buffer allocation for
- synchronous reads
-
-commit 3ce4d85b76010525adedcc2555fa164bf706a2f3 upstream.
-
-In commit a7959c1, the USB part of rtlwifi was switched to convert
-_usb_read_sync() to using a preallocated buffer rather than one
-that has been acquired using kmalloc. Although this routine is named
-as though it were synchronous, there seem to be simultaneous users,
-and the selection of the index to the data buffer is not multi-user
-safe. This situation is addressed by adding a new spinlock. The routine
-cannot sleep, thus a mutex is not allowed.
-
-Signed-off-by: Larry Finger <Larry.Finger at lwfinger.net>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/wireless/rtlwifi/usb.c | 14 +++++++++++---
- drivers/net/wireless/rtlwifi/wifi.h | 1 +
- 2 files changed, 12 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/net/wireless/rtlwifi/usb.c b/drivers/net/wireless/rtlwifi/usb.c
-index db34db6..a49e848 100644
---- a/drivers/net/wireless/rtlwifi/usb.c
-+++ b/drivers/net/wireless/rtlwifi/usb.c
-@@ -120,15 +120,19 @@ static u32 _usb_read_sync(struct rtl_priv *rtlpriv, u32 addr, u16 len)
- u8 request;
- u16 wvalue;
- u16 index;
-- __le32 *data = &rtlpriv->usb_data[rtlpriv->usb_data_index];
-+ __le32 *data;
-+ unsigned long flags;
-
-+ spin_lock_irqsave(&rtlpriv->locks.usb_lock, flags);
-+ if (++rtlpriv->usb_data_index >= RTL_USB_MAX_RX_COUNT)
-+ rtlpriv->usb_data_index = 0;
-+ data = &rtlpriv->usb_data[rtlpriv->usb_data_index];
-+ spin_unlock_irqrestore(&rtlpriv->locks.usb_lock, flags);
- request = REALTEK_USB_VENQT_CMD_REQ;
- index = REALTEK_USB_VENQT_CMD_IDX; /* n/a */
-
- wvalue = (u16)addr;
- _usbctrl_vendorreq_sync_read(udev, request, wvalue, index, data, len);
-- if (++rtlpriv->usb_data_index >= RTL_USB_MAX_RX_COUNT)
-- rtlpriv->usb_data_index = 0;
- return le32_to_cpu(*data);
- }
-
-@@ -909,6 +913,10 @@ int __devinit rtl_usb_probe(struct usb_interface *intf,
- GFP_KERNEL);
- if (!rtlpriv->usb_data)
- return -ENOMEM;
-+
-+ /* this spin lock must be initialized early */
-+ spin_lock_init(&rtlpriv->locks.usb_lock);
-+
- rtlpriv->usb_data_index = 0;
- SET_IEEE80211_DEV(hw, &intf->dev);
- udev = interface_to_usbdev(intf);
-diff --git a/drivers/net/wireless/rtlwifi/wifi.h b/drivers/net/wireless/rtlwifi/wifi.h
-index b1e9deb..deb87e9 100644
---- a/drivers/net/wireless/rtlwifi/wifi.h
-+++ b/drivers/net/wireless/rtlwifi/wifi.h
-@@ -1550,6 +1550,7 @@ struct rtl_locks {
- spinlock_t rf_lock;
- spinlock_t lps_lock;
- spinlock_t waitq_lock;
-+ spinlock_t usb_lock;
-
- /*Dual mac*/
- spinlock_t cck_and_rw_pagea_lock;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0015-hfsplus-fix-overflow-in-sector-calculations-in-hfspl.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0015-hfsplus-fix-overflow-in-sector-calculations-in-hfspl.patch
deleted file mode 100644
index 471e568..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0015-hfsplus-fix-overflow-in-sector-calculations-in-hfspl.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 2a5405901ea07bfd5de0ab32cd08149f70b29e0b Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Janne=20Kalliom=C3=A4ki?= <janne at tuxera.com>
-Date: Sun, 17 Jun 2012 17:05:24 -0400
-Subject: [PATCH 15/38] hfsplus: fix overflow in sector calculations in
- hfsplus_submit_bio
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit a6dc8c04218eb752ff79cdc24a995cf51866caed upstream.
-
-The variable io_size was unsigned int, which caused the wrong sector number
-to be calculated after aligning it. This then caused mount to fail with big
-volumes, as backup volume header information was searched from a
-wrong sector.
-
-Signed-off-by: Janne Kalliomäki <janne at tuxera.com>
-Signed-off-by: Christoph Hellwig <hch at lst.de>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/hfsplus/wrapper.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/fs/hfsplus/wrapper.c b/fs/hfsplus/wrapper.c
-index 7daf4b8..90effcc 100644
---- a/fs/hfsplus/wrapper.c
-+++ b/fs/hfsplus/wrapper.c
-@@ -56,7 +56,7 @@ int hfsplus_submit_bio(struct super_block *sb, sector_t sector,
- DECLARE_COMPLETION_ONSTACK(wait);
- struct bio *bio;
- int ret = 0;
-- unsigned int io_size;
-+ u64 io_size;
- loff_t start;
- int offset;
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0016-drm-i915-fixup-seqno-allocation-logic-for-lazy_reque.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0016-drm-i915-fixup-seqno-allocation-logic-for-lazy_reque.patch
deleted file mode 100644
index dab607f..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0016-drm-i915-fixup-seqno-allocation-logic-for-lazy_reque.patch
+++ /dev/null
@@ -1,182 +0,0 @@
-From fb7b884cf3c3ea0ff01bade0bff2d6338559e870 Mon Sep 17 00:00:00 2001
-From: Daniel Vetter <daniel.vetter at ffwll.ch>
-Date: Wed, 25 Jan 2012 16:32:49 +0100
-Subject: [PATCH 16/38] drm/i915: fixup seqno allocation logic for
- lazy_request
-
-commit 53d227f282eb9fa4c7cdbfd691fa372b7ca8c4c3 upstream.
-
-Currently we reserve seqnos only when we emit the request to the ring
-(by bumping dev_priv->next_seqno), but start using it much earlier for
-ring->oustanding_lazy_request. When 2 threads compete for the gpu and
-run on two different rings (e.g. ddx on blitter vs. compositor)
-hilarity ensued, especially when we get constantly interrupted while
-reserving buffers.
-
-Breakage seems to have been introduced in
-
-commit 6f392d548658a17600da7faaf8a5df25ee5f01f6
-Author: Chris Wilson <chris at chris-wilson.co.uk>
-Date: Sat Aug 7 11:01:22 2010 +0100
-
- drm/i915: Use a common seqno for all rings.
-
-This patch fixes up the seqno reservation logic by moving it into
-i915_gem_next_request_seqno. The ring->add_request functions now
-superflously still return the new seqno through a pointer, that will
-be refactored in the next patch.
-
-Note that with this change we now unconditionally allocate a seqno,
-even when ->add_request might fail because the rings are full and the
-gpu died. But this does not open up a new can of worms because we can
-already leave behind an outstanding_request_seqno if e.g. the caller
-gets interrupted with a signal while stalling for the gpu in the
-eviciton paths. And with the bugfix we only ever have one seqno
-allocated per ring (and only that ring), so there are no ordering
-issues with multiple outstanding seqnos on the same ring.
-
-v2: Keep i915_gem_get_seqno (but move it to i915_gem.c) to make it
-clear that we only have one seqno counter for all rings. Suggested by
-Chris Wilson.
-
-v3: As suggested by Chris Wilson use i915_gem_next_request_seqno
-instead of ring->oustanding_lazy_request to make the follow-up
-refactoring more clearly correct. Also improve the commit message
-with issues discussed on irc.
-
-Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=45181
-Tested-by: Nicolas Kalkhof nkalkhof()at()web.de
-Reviewed-by: Chris Wilson <chris at chris-wilson.co.uk>
-Signed-Off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpu/drm/i915/i915_drv.h | 7 +------
- drivers/gpu/drm/i915/i915_gem.c | 23 +++++++++++++++++++++++
- drivers/gpu/drm/i915/intel_ringbuffer.c | 24 ++++--------------------
- 3 files changed, 28 insertions(+), 26 deletions(-)
-
-diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
-index d62c731..c364358 100644
---- a/drivers/gpu/drm/i915/i915_drv.h
-+++ b/drivers/gpu/drm/i915/i915_drv.h
-@@ -1170,12 +1170,7 @@ i915_seqno_passed(uint32_t seq1, uint32_t seq2)
- return (int32_t)(seq1 - seq2) >= 0;
- }
-
--static inline u32
--i915_gem_next_request_seqno(struct intel_ring_buffer *ring)
--{
-- drm_i915_private_t *dev_priv = ring->dev->dev_private;
-- return ring->outstanding_lazy_request = dev_priv->next_seqno;
--}
-+u32 i915_gem_next_request_seqno(struct intel_ring_buffer *ring);
-
- int __must_check i915_gem_object_get_fence(struct drm_i915_gem_object *obj,
- struct intel_ring_buffer *pipelined);
-diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
-index 3e2edc6..548a400 100644
---- a/drivers/gpu/drm/i915/i915_gem.c
-+++ b/drivers/gpu/drm/i915/i915_gem.c
-@@ -1647,6 +1647,28 @@ i915_gem_process_flushing_list(struct intel_ring_buffer *ring,
- }
- }
-
-+static u32
-+i915_gem_get_seqno(struct drm_device *dev)
-+{
-+ drm_i915_private_t *dev_priv = dev->dev_private;
-+ u32 seqno = dev_priv->next_seqno;
-+
-+ /* reserve 0 for non-seqno */
-+ if (++dev_priv->next_seqno == 0)
-+ dev_priv->next_seqno = 1;
-+
-+ return seqno;
-+}
-+
-+u32
-+i915_gem_next_request_seqno(struct intel_ring_buffer *ring)
-+{
-+ if (ring->outstanding_lazy_request == 0)
-+ ring->outstanding_lazy_request = i915_gem_get_seqno(ring->dev);
-+
-+ return ring->outstanding_lazy_request;
-+}
-+
- int
- i915_add_request(struct intel_ring_buffer *ring,
- struct drm_file *file,
-@@ -1658,6 +1680,7 @@ i915_add_request(struct intel_ring_buffer *ring,
- int ret;
-
- BUG_ON(request == NULL);
-+ seqno = i915_gem_next_request_seqno(ring);
-
- ret = ring->add_request(ring, &seqno);
- if (ret)
-diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
-index f6613dc..d2cbe5d 100644
---- a/drivers/gpu/drm/i915/intel_ringbuffer.c
-+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
-@@ -52,20 +52,6 @@ static inline int ring_space(struct intel_ring_buffer *ring)
- return space;
- }
-
--static u32 i915_gem_get_seqno(struct drm_device *dev)
--{
-- drm_i915_private_t *dev_priv = dev->dev_private;
-- u32 seqno;
--
-- seqno = dev_priv->next_seqno;
--
-- /* reserve 0 for non-seqno */
-- if (++dev_priv->next_seqno == 0)
-- dev_priv->next_seqno = 1;
--
-- return seqno;
--}
--
- static int
- render_ring_flush(struct intel_ring_buffer *ring,
- u32 invalidate_domains,
-@@ -488,7 +474,7 @@ gen6_add_request(struct intel_ring_buffer *ring,
- mbox1_reg = ring->signal_mbox[0];
- mbox2_reg = ring->signal_mbox[1];
-
-- *seqno = i915_gem_get_seqno(ring->dev);
-+ *seqno = i915_gem_next_request_seqno(ring);
-
- update_mboxes(ring, *seqno, mbox1_reg);
- update_mboxes(ring, *seqno, mbox2_reg);
-@@ -586,8 +572,7 @@ static int
- pc_render_add_request(struct intel_ring_buffer *ring,
- u32 *result)
- {
-- struct drm_device *dev = ring->dev;
-- u32 seqno = i915_gem_get_seqno(dev);
-+ u32 seqno = i915_gem_next_request_seqno(ring);
- struct pipe_control *pc = ring->private;
- u32 scratch_addr = pc->gtt_offset + 128;
- int ret;
-@@ -638,8 +623,7 @@ static int
- render_ring_add_request(struct intel_ring_buffer *ring,
- u32 *result)
- {
-- struct drm_device *dev = ring->dev;
-- u32 seqno = i915_gem_get_seqno(dev);
-+ u32 seqno = i915_gem_next_request_seqno(ring);
- int ret;
-
- ret = intel_ring_begin(ring, 4);
-@@ -813,7 +797,7 @@ ring_add_request(struct intel_ring_buffer *ring,
- if (ret)
- return ret;
-
-- seqno = i915_gem_get_seqno(ring->dev);
-+ seqno = i915_gem_next_request_seqno(ring);
-
- intel_ring_emit(ring, MI_STORE_DWORD_INDEX);
- intel_ring_emit(ring, I915_GEM_HWS_INDEX << MI_STORE_DWORD_INDEX_SHIFT);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0017-KVM-VMX-Advertise-CPU_BASED_RDPMC_EXITING-for-nested.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0017-KVM-VMX-Advertise-CPU_BASED_RDPMC_EXITING-for-nested.patch
deleted file mode 100644
index ce5de76..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0017-KVM-VMX-Advertise-CPU_BASED_RDPMC_EXITING-for-nested.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 3a120a56ad2a35167da519fb81f66027f6b8b8bc Mon Sep 17 00:00:00 2001
-From: Stefan Bader <stefan.bader at canonical.com>
-Date: Thu, 9 Aug 2012 12:33:12 +0300
-Subject: [PATCH 17/38] KVM: VMX: Advertise CPU_BASED_RDPMC_EXITING for nested
- guests
-
-Based on commit fee84b079d5ddee2247b5c1f53162c330c622902 upstream.
-
- Intercept RDPMC and forward it to the PMU emulation code.
-
-Newer vmx support will only allow to load the kvm_intel module
-if RDPMC_EXITING is supported. Even without the actual support
-this part of the change is required on 3.2 hosts.
-
-BugLink: http://bugs.launchpad.net/bugs/1031090
-Signed-off-by: Stefan Bader <stefan.bader at canonical.com>
-Signed-off-by: Avi Kivity <avi at redhat.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/x86/kvm/vmx.c | 1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
-index 7315488..407789b 100644
---- a/arch/x86/kvm/vmx.c
-+++ b/arch/x86/kvm/vmx.c
-@@ -1956,6 +1956,7 @@ static __init void nested_vmx_setup_ctls_msrs(void)
- #endif
- CPU_BASED_MOV_DR_EXITING | CPU_BASED_UNCOND_IO_EXITING |
- CPU_BASED_USE_IO_BITMAPS | CPU_BASED_MONITOR_EXITING |
-+ CPU_BASED_RDPMC_EXITING |
- CPU_BASED_ACTIVATE_SECONDARY_CONTROLS;
- /*
- * We can allow some features even when not supported by the
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0018-mac80211-cancel-mesh-path-timer.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0018-mac80211-cancel-mesh-path-timer.patch
deleted file mode 100644
index ce103a3..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0018-mac80211-cancel-mesh-path-timer.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 6232af882bb87e23d74aad3351552b267c99e952 Mon Sep 17 00:00:00 2001
-From: Johannes Berg <johannes.berg at intel.com>
-Date: Wed, 1 Aug 2012 21:03:21 +0200
-Subject: [PATCH 18/38] mac80211: cancel mesh path timer
-
-commit dd4c9260e7f23f2e951cbfb2726e468c6d30306c upstream.
-
-The mesh path timer needs to be canceled when
-leaving the mesh as otherwise it could fire
-after the interface has been removed already.
-
-Signed-off-by: Johannes Berg <johannes.berg at intel.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/mac80211/mesh.c | 1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-diff --git a/net/mac80211/mesh.c b/net/mac80211/mesh.c
-index a7078fd..f85de8e 100644
---- a/net/mac80211/mesh.c
-+++ b/net/mac80211/mesh.c
-@@ -543,6 +543,7 @@ void ieee80211_stop_mesh(struct ieee80211_sub_if_data *sdata)
-
- del_timer_sync(&sdata->u.mesh.housekeeping_timer);
- del_timer_sync(&sdata->u.mesh.mesh_path_root_timer);
-+ del_timer_sync(&sdata->u.mesh.mesh_path_timer);
- /*
- * If the timer fired while we waited for it, it will have
- * requeued the work. Now the work will be running again
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0019-ath9k-Add-PID-VID-support-for-AR1111.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0019-ath9k-Add-PID-VID-support-for-AR1111.patch
deleted file mode 100644
index 4c77dce..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0019-ath9k-Add-PID-VID-support-for-AR1111.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-From 79e8531b00817a47eaadccc39250dbe05d4f141f Mon Sep 17 00:00:00 2001
-From: Mohammed Shafi Shajakhan <mohammed at qca.qualcomm.com>
-Date: Thu, 2 Aug 2012 11:58:50 +0530
-Subject: [PATCH 19/38] ath9k: Add PID/VID support for AR1111
-
-commit d4e5979c0da95791aa717c18e162540c7a596360 upstream.
-
-AR1111 is same as AR9485. The h/w
-difference between them is quite insignificant,
-Felix suggests only very few baseband features
-may not be available in AR1111. The h/w code for
-AR9485 is already present, so AR1111 should
-work fine with the addition of its PID/VID.
-
-Cc: Felix Bitterli <felixb at qca.qualcomm.com>
-Reported-by: Tim Bentley <Tim.Bentley at Gmail.com>
-Signed-off-by: Mohammed Shafi Shajakhan <mohammed at qca.qualcomm.com>
-Tested-by: Tim Bentley <Tim.Bentley at Gmail.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/wireless/ath/ath9k/hw.c | 1 +
- drivers/net/wireless/ath/ath9k/hw.h | 1 +
- drivers/net/wireless/ath/ath9k/pci.c | 1 +
- 3 files changed, 3 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/net/wireless/ath/ath9k/hw.c b/drivers/net/wireless/ath/ath9k/hw.c
-index 7f97164..2b8e957 100644
---- a/drivers/net/wireless/ath/ath9k/hw.c
-+++ b/drivers/net/wireless/ath/ath9k/hw.c
-@@ -674,6 +674,7 @@ int ath9k_hw_init(struct ath_hw *ah)
- case AR9300_DEVID_AR9340:
- case AR9300_DEVID_AR9580:
- case AR9300_DEVID_AR9462:
-+ case AR9485_DEVID_AR1111:
- break;
- default:
- if (common->bus_ops->ath_bus_type == ATH_USB)
-diff --git a/drivers/net/wireless/ath/ath9k/hw.h b/drivers/net/wireless/ath/ath9k/hw.h
-index 1bd8edf..a5c4ba8 100644
---- a/drivers/net/wireless/ath/ath9k/hw.h
-+++ b/drivers/net/wireless/ath/ath9k/hw.h
-@@ -48,6 +48,7 @@
- #define AR9300_DEVID_AR9580 0x0033
- #define AR9300_DEVID_AR9462 0x0034
- #define AR9300_DEVID_AR9330 0x0035
-+#define AR9485_DEVID_AR1111 0x0037
-
- #define AR5416_AR9100_DEVID 0x000b
-
-diff --git a/drivers/net/wireless/ath/ath9k/pci.c b/drivers/net/wireless/ath/ath9k/pci.c
-index 2dcdf63..1883d39 100644
---- a/drivers/net/wireless/ath/ath9k/pci.c
-+++ b/drivers/net/wireless/ath/ath9k/pci.c
-@@ -35,6 +35,7 @@ static DEFINE_PCI_DEVICE_TABLE(ath_pci_id_table) = {
- { PCI_VDEVICE(ATHEROS, 0x0032) }, /* PCI-E AR9485 */
- { PCI_VDEVICE(ATHEROS, 0x0033) }, /* PCI-E AR9580 */
- { PCI_VDEVICE(ATHEROS, 0x0034) }, /* PCI-E AR9462 */
-+ { PCI_VDEVICE(ATHEROS, 0x0037) }, /* PCI-E AR1111/AR9485 */
- { 0 }
- };
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0020-ARM-mxs-Remove-MMAP_MIN_ADDR-setting-from-mxs_defcon.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0020-ARM-mxs-Remove-MMAP_MIN_ADDR-setting-from-mxs_defcon.patch
deleted file mode 100644
index 08c6777..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0020-ARM-mxs-Remove-MMAP_MIN_ADDR-setting-from-mxs_defcon.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From 72e131402c22fe7df4bff17249c4b5a513118b8b Mon Sep 17 00:00:00 2001
-From: Marek Vasut <marex at denx.de>
-Date: Fri, 3 Aug 2012 20:54:48 +0200
-Subject: [PATCH 20/38] ARM: mxs: Remove MMAP_MIN_ADDR setting from
- mxs_defconfig
-
-commit 3bed491c8d28329e34f8a31e3fe64d03f3a350f1 upstream.
-
-The CONFIG_DEFAULT_MMAP_MIN_ADDR was set to 65536 in mxs_defconfig,
-this caused severe breakage of userland applications since the upper
-limit for ARM is 32768. By default CONFIG_DEFAULT_MMAP_MIN_ADDR is
-set to 4096 and can also be changed via /proc/sys/vm/mmap_min_addr
-if needed.
-
-Quoting Russell King [1]:
-
-"4096 is also fine for ARM too. There's not much point in having
-defconfigs change it - that would just be pure noise in the config
-files."
-
-the CONFIG_DEFAULT_MMAP_MIN_ADDR can be removed from the defconfig
-altogether.
-
-This problem was introduced by commit cde7c41 (ARM: configs: add
-defconfig for mach-mxs).
-
-[1] http://marc.info/?l=linux-arm-kernel&m=134401593807820&w=2
-
-Signed-off-by: Marek Vasut <marex at denx.de>
-Cc: Russell King <linux at arm.linux.org.uk>
-Cc: Wolfgang Denk <wd at denx.de>
-Signed-off-by: Shawn Guo <shawn.guo at linaro.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/arm/configs/mxs_defconfig | 1 -
- 1 files changed, 0 insertions(+), 1 deletions(-)
-
-diff --git a/arch/arm/configs/mxs_defconfig b/arch/arm/configs/mxs_defconfig
-index 6ee781b..3ee3e84 100644
---- a/arch/arm/configs/mxs_defconfig
-+++ b/arch/arm/configs/mxs_defconfig
-@@ -32,7 +32,6 @@ CONFIG_NO_HZ=y
- CONFIG_HIGH_RES_TIMERS=y
- CONFIG_PREEMPT_VOLUNTARY=y
- CONFIG_AEABI=y
--CONFIG_DEFAULT_MMAP_MIN_ADDR=65536
- CONFIG_AUTO_ZRELADDR=y
- CONFIG_FPE_NWFPE=y
- CONFIG_NET=y
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0021-ALSA-hda-add-dock-support-for-Thinkpad-T430s.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0021-ALSA-hda-add-dock-support-for-Thinkpad-T430s.patch
deleted file mode 100644
index 087bd23..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0021-ALSA-hda-add-dock-support-for-Thinkpad-T430s.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From e7af387d6087031280b03362bbfdeaefa97cecfa Mon Sep 17 00:00:00 2001
-From: "Philipp A. Mohrenweiser" <phiamo at googlemail.com>
-Date: Mon, 6 Aug 2012 13:14:18 +0200
-Subject: [PATCH 21/38] ALSA: hda - add dock support for Thinkpad T430s
-
-commit 4407be6ba217514b1bc01488f8b56467d309e416 upstream.
-
-Add a model/fixup string "lenovo-dock", for Thinkpad T430s, to allow
-sound in docking station.
-
-Tested on Lenovo T430s with ThinkPad Mini Dock Plus Series 3
-
-Signed-off-by: Philipp A. Mohrenweiser <phiamo at googlemail.com>
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- sound/pci/hda/patch_realtek.c | 1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
-index 2e2eb93..36cef6f 100644
---- a/sound/pci/hda/patch_realtek.c
-+++ b/sound/pci/hda/patch_realtek.c
-@@ -5077,6 +5077,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
- SND_PCI_QUIRK(0x17aa, 0x21ca, "Thinkpad L412", ALC269_FIXUP_SKU_IGNORE),
- SND_PCI_QUIRK(0x17aa, 0x21e9, "Thinkpad Edge 15", ALC269_FIXUP_SKU_IGNORE),
- SND_PCI_QUIRK(0x17aa, 0x21f6, "Thinkpad T530", ALC269_FIXUP_LENOVO_DOCK),
-+ SND_PCI_QUIRK(0x17aa, 0x21fb, "Thinkpad T430s", ALC269_FIXUP_LENOVO_DOCK),
- SND_PCI_QUIRK(0x17aa, 0x2203, "Thinkpad X230 Tablet", ALC269_FIXUP_LENOVO_DOCK),
- SND_PCI_QUIRK(0x17aa, 0x3bf8, "Quanta FL1", ALC269_FIXUP_QUANTA_MUTE),
- SND_PCI_QUIRK(0x17aa, 0x3bf8, "Lenovo Ideapd", ALC269_FIXUP_PCM_44K),
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0022-cfg80211-process-pending-events-when-unregistering-n.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0022-cfg80211-process-pending-events-when-unregistering-n.patch
deleted file mode 100644
index 0b3cd87..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0022-cfg80211-process-pending-events-when-unregistering-n.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-From 494c6e65c2040893d8d7bb7a5c34eeb5355a1255 Mon Sep 17 00:00:00 2001
-From: Daniel Drake <dsd at laptop.org>
-Date: Thu, 2 Aug 2012 18:41:48 +0100
-Subject: [PATCH 22/38] cfg80211: process pending events when unregistering
- net device
-
-commit 1f6fc43e621167492ed4b7f3b4269c584c3d6ccc upstream.
-
-libertas currently calls cfg80211_disconnected() when it is being
-brought down. This causes an event to be allocated, but since the
-wdev is already removed from the rdev by the time that the event
-processing work executes, the event is never processed or freed.
-http://article.gmane.org/gmane.linux.kernel.wireless.general/95666
-
-Fix this leak, and other possible situations, by processing the event
-queue when a device is being unregistered. Thanks to Johannes Berg for
-the suggestion.
-
-Signed-off-by: Daniel Drake <dsd at laptop.org>
-Reviewed-by: Johannes Berg <johannes at sipsolutions.net>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- net/wireless/core.c | 5 +++++
- net/wireless/core.h | 1 +
- net/wireless/util.c | 2 +-
- 3 files changed, 7 insertions(+), 1 deletions(-)
-
-diff --git a/net/wireless/core.c b/net/wireless/core.c
-index 220f3bd..8f5042d 100644
---- a/net/wireless/core.c
-+++ b/net/wireless/core.c
-@@ -971,6 +971,11 @@ static int cfg80211_netdev_notifier_call(struct notifier_block * nb,
- */
- synchronize_rcu();
- INIT_LIST_HEAD(&wdev->list);
-+ /*
-+ * Ensure that all events have been processed and
-+ * freed.
-+ */
-+ cfg80211_process_wdev_events(wdev);
- break;
- case NETDEV_PRE_UP:
- if (!(wdev->wiphy->interface_modes & BIT(wdev->iftype)))
-diff --git a/net/wireless/core.h b/net/wireless/core.h
-index b9ec306..02c3be3 100644
---- a/net/wireless/core.h
-+++ b/net/wireless/core.h
-@@ -426,6 +426,7 @@ int cfg80211_change_iface(struct cfg80211_registered_device *rdev,
- struct net_device *dev, enum nl80211_iftype ntype,
- u32 *flags, struct vif_params *params);
- void cfg80211_process_rdev_events(struct cfg80211_registered_device *rdev);
-+void cfg80211_process_wdev_events(struct wireless_dev *wdev);
-
- int cfg80211_can_change_interface(struct cfg80211_registered_device *rdev,
- struct wireless_dev *wdev,
-diff --git a/net/wireless/util.c b/net/wireless/util.c
-index b5e4c1c..22fb802 100644
---- a/net/wireless/util.c
-+++ b/net/wireless/util.c
-@@ -725,7 +725,7 @@ void cfg80211_upload_connect_keys(struct wireless_dev *wdev)
- wdev->connect_keys = NULL;
- }
-
--static void cfg80211_process_wdev_events(struct wireless_dev *wdev)
-+void cfg80211_process_wdev_events(struct wireless_dev *wdev)
- {
- struct cfg80211_event *ev;
- unsigned long flags;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0023-rt61pci-fix-NULL-pointer-dereference-in-config_lna_g.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0023-rt61pci-fix-NULL-pointer-dereference-in-config_lna_g.patch
deleted file mode 100644
index 7ada863..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0023-rt61pci-fix-NULL-pointer-dereference-in-config_lna_g.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 6eeecbf1bfca2b6453a4708a0e0392ba10db91b4 Mon Sep 17 00:00:00 2001
-From: Stanislaw Gruszka <sgruszka at redhat.com>
-Date: Fri, 3 Aug 2012 12:49:14 +0200
-Subject: [PATCH 23/38] rt61pci: fix NULL pointer dereference in
- config_lna_gain
-
-commit deee0214def5d8a32b8112f11d9c2b1696e9c0cb upstream.
-
-We can not pass NULL libconf->conf->channel to rt61pci_config() as it
-is dereferenced unconditionally in rt61pci_config_lna_gain() subroutine.
-
-Resolves:
-https://bugzilla.kernel.org/show_bug.cgi?id=44361
-
-Reported-and-tested-by: <dolohow at gmail.com>
-Signed-off-by: Stanislaw Gruszka <sgruszka at redhat.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/wireless/rt2x00/rt61pci.c | 3 +--
- 1 files changed, 1 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/net/wireless/rt2x00/rt61pci.c b/drivers/net/wireless/rt2x00/rt61pci.c
-index bf55b4a..d69f88c 100644
---- a/drivers/net/wireless/rt2x00/rt61pci.c
-+++ b/drivers/net/wireless/rt2x00/rt61pci.c
-@@ -2243,8 +2243,7 @@ static void rt61pci_txdone(struct rt2x00_dev *rt2x00dev)
-
- static void rt61pci_wakeup(struct rt2x00_dev *rt2x00dev)
- {
-- struct ieee80211_conf conf = { .flags = 0 };
-- struct rt2x00lib_conf libconf = { .conf = &conf };
-+ struct rt2x00lib_conf libconf = { .conf = &rt2x00dev->hw->conf };
-
- rt61pci_config(rt2x00dev, &libconf, IEEE80211_CONF_CHANGE_PS);
- }
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0024-iwlwifi-disable-greenfield-transmissions-as-a-workar.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0024-iwlwifi-disable-greenfield-transmissions-as-a-workar.patch
deleted file mode 100644
index 4a14054..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0024-iwlwifi-disable-greenfield-transmissions-as-a-workar.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From a05a0b85c314feeebcbf3491dd6ed98e4ffb0958 Mon Sep 17 00:00:00 2001
-From: Johannes Berg <johannes.berg at intel.com>
-Date: Sun, 5 Aug 2012 18:31:46 +0200
-Subject: [PATCH 24/38] iwlwifi: disable greenfield transmissions as a
- workaround
-
-commit 50e2a30cf6fcaeb2d27360ba614dd169a10041c5 upstream.
-
-There's a bug that causes the rate scaling to get stuck
-when it has to use single-stream rates with a peer that
-can do GF and SGI; the two are incompatible so we can't
-use them together, but that causes the algorithm to not
-work at all, it always rejects updates.
-
-Disable greenfield for now to prevent that problem.
-
-Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach at intel.com>
-Tested-by: Cesar Eduardo Barros <cesarb at cesarb.net>
-Signed-off-by: Johannes Berg <johannes.berg at intel.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-[bwh: Backported to 3.2: adjust filename]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/wireless/iwlwifi/iwl-agn-rs.c | 13 ++++++++-----
- 1 files changed, 8 insertions(+), 5 deletions(-)
-
-diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-rs.c b/drivers/net/wireless/iwlwifi/iwl-agn-rs.c
-index 9ba2c1b..3395025 100644
---- a/drivers/net/wireless/iwlwifi/iwl-agn-rs.c
-+++ b/drivers/net/wireless/iwlwifi/iwl-agn-rs.c
-@@ -708,11 +708,14 @@ static int rs_toggle_antenna(u32 valid_ant, u32 *rate_n_flags,
- */
- static bool rs_use_green(struct ieee80211_sta *sta)
- {
-- struct iwl_station_priv *sta_priv = (void *)sta->drv_priv;
-- struct iwl_rxon_context *ctx = sta_priv->ctx;
--
-- return (sta->ht_cap.cap & IEEE80211_HT_CAP_GRN_FLD) &&
-- !(ctx->ht.non_gf_sta_present);
-+ /*
-+ * There's a bug somewhere in this code that causes the
-+ * scaling to get stuck because GF+SGI can't be combined
-+ * in SISO rates. Until we find that bug, disable GF, it
-+ * has only limited benefit and we still interoperate with
-+ * GF APs since we can always receive GF transmissions.
-+ */
-+ return false;
- }
-
- /**
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0025-ALSA-hda-add-dock-support-for-Thinkpad-X230.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0025-ALSA-hda-add-dock-support-for-Thinkpad-X230.patch
deleted file mode 100644
index 9ffee7b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0025-ALSA-hda-add-dock-support-for-Thinkpad-X230.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From d1d4e5b872501c6b9a04a50d656a517fdbb3d7b1 Mon Sep 17 00:00:00 2001
-From: Felix Kaechele <felix at fetzig.org>
-Date: Mon, 6 Aug 2012 23:02:01 +0200
-Subject: [PATCH 25/38] ALSA: hda - add dock support for Thinkpad X230
-
-commit c8415a48fcb7a29889f4405d38c57db351e4b50a upstream.
-
-As with the ThinkPad Models X230 Tablet and T530 the X230 needs a qurik to
-correctly set up the pins for the dock port.
-
-Signed-off-by: Felix Kaechele <felix at fetzig.org>
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- sound/pci/hda/patch_realtek.c | 1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
-index 36cef6f..2bf8cbb 100644
---- a/sound/pci/hda/patch_realtek.c
-+++ b/sound/pci/hda/patch_realtek.c
-@@ -5077,6 +5077,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
- SND_PCI_QUIRK(0x17aa, 0x21ca, "Thinkpad L412", ALC269_FIXUP_SKU_IGNORE),
- SND_PCI_QUIRK(0x17aa, 0x21e9, "Thinkpad Edge 15", ALC269_FIXUP_SKU_IGNORE),
- SND_PCI_QUIRK(0x17aa, 0x21f6, "Thinkpad T530", ALC269_FIXUP_LENOVO_DOCK),
-+ SND_PCI_QUIRK(0x17aa, 0x21fa, "Thinkpad X230", ALC269_FIXUP_LENOVO_DOCK),
- SND_PCI_QUIRK(0x17aa, 0x21fb, "Thinkpad T430s", ALC269_FIXUP_LENOVO_DOCK),
- SND_PCI_QUIRK(0x17aa, 0x2203, "Thinkpad X230 Tablet", ALC269_FIXUP_LENOVO_DOCK),
- SND_PCI_QUIRK(0x17aa, 0x3bf8, "Quanta FL1", ALC269_FIXUP_QUANTA_MUTE),
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0026-e1000e-NIC-goes-up-and-immediately-goes-down.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0026-e1000e-NIC-goes-up-and-immediately-goes-down.patch
deleted file mode 100644
index d5eec9f..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0026-e1000e-NIC-goes-up-and-immediately-goes-down.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 4391276e45606802564174334f4a43ce57b9601c Mon Sep 17 00:00:00 2001
-From: Tushar Dave <tushar.n.dave at intel.com>
-Date: Tue, 31 Jul 2012 02:02:43 +0000
-Subject: [PATCH 26/38] e1000e: NIC goes up and immediately goes down
-
-commit b7ec70be01a87f2c85df3ae11046e74f9b67e323 upstream.
-
-Found that commit d478eb44 was a bad commit.
-If the link partner is transmitting codeword (even if NULL codeword),
-then the RXCW.C bit will be set so check for RXCW.CW is unnecessary.
-Ref: RH BZ 840642
-
-Reported-by: Fabio Futigami <ffutigam at redhat.com>
-Signed-off-by: Tushar Dave <tushar.n.dave at intel.com>
-CC: Marcelo Ricardo Leitner <mleitner at redhat.com>
-Tested-by: Aaron Brown <aaron.f.brown at intel.com>
-Signed-off-by: Peter P Waskiewicz Jr <peter.p.waskiewicz.jr at intel.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/net/ethernet/intel/e1000e/82571.c | 4 +---
- 1 files changed, 1 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/net/ethernet/intel/e1000e/82571.c b/drivers/net/ethernet/intel/e1000e/82571.c
-index 3072d35..4f4d52a 100644
---- a/drivers/net/ethernet/intel/e1000e/82571.c
-+++ b/drivers/net/ethernet/intel/e1000e/82571.c
-@@ -1600,10 +1600,8 @@ static s32 e1000_check_for_serdes_link_82571(struct e1000_hw *hw)
- * auto-negotiation in the TXCW register and disable
- * forced link in the Device Control register in an
- * attempt to auto-negotiate with our link partner.
-- * If the partner code word is null, stop forcing
-- * and restart auto negotiation.
- */
-- if ((rxcw & E1000_RXCW_C) || !(rxcw & E1000_RXCW_CW)) {
-+ if (rxcw & E1000_RXCW_C) {
- /* Enable autoneg, and unforce link up */
- ew32(TXCW, mac->txcw);
- ew32(CTRL, (ctrl & ~E1000_CTRL_SLU));
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0027-ALSA-hda-remove-quirk-for-Dell-Vostro-1015.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0027-ALSA-hda-remove-quirk-for-Dell-Vostro-1015.patch
deleted file mode 100644
index 0f76ad6..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0027-ALSA-hda-remove-quirk-for-Dell-Vostro-1015.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From e812f3553b54d0a821ba55198f31d898cf57a6b0 Mon Sep 17 00:00:00 2001
-From: David Henningsson <david.henningsson at canonical.com>
-Date: Tue, 7 Aug 2012 14:03:29 +0200
-Subject: [PATCH 27/38] ALSA: hda - remove quirk for Dell Vostro 1015
-
-commit e9fc83cb2e5877801a255a37ddbc5be996ea8046 upstream.
-
-This computer is confirmed working with model=auto on kernel 3.2.
-Also, parsing fails with hda-emu with the current model.
-
-Signed-off-by: David Henningsson <david.henningsson at canonical.com>
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- sound/pci/hda/patch_conexant.c | 1 -
- 1 files changed, 0 insertions(+), 1 deletions(-)
-
-diff --git a/sound/pci/hda/patch_conexant.c b/sound/pci/hda/patch_conexant.c
-index 51a1afc..402f330 100644
---- a/sound/pci/hda/patch_conexant.c
-+++ b/sound/pci/hda/patch_conexant.c
-@@ -3059,7 +3059,6 @@ static const struct snd_pci_quirk cxt5066_cfg_tbl[] = {
- SND_PCI_QUIRK(0x1028, 0x02d8, "Dell Vostro", CXT5066_DELL_VOSTRO),
- SND_PCI_QUIRK(0x1028, 0x02f5, "Dell Vostro 320", CXT5066_IDEAPAD),
- SND_PCI_QUIRK(0x1028, 0x0401, "Dell Vostro 1014", CXT5066_DELL_VOSTRO),
-- SND_PCI_QUIRK(0x1028, 0x0402, "Dell Vostro", CXT5066_DELL_VOSTRO),
- SND_PCI_QUIRK(0x1028, 0x0408, "Dell Inspiron One 19T", CXT5066_IDEAPAD),
- SND_PCI_QUIRK(0x1028, 0x050f, "Dell Inspiron", CXT5066_IDEAPAD),
- SND_PCI_QUIRK(0x1028, 0x0510, "Dell Vostro", CXT5066_IDEAPAD),
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0028-ALSA-hda-Fix-double-quirk-for-Quanta-FL1-Lenovo-Idea.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0028-ALSA-hda-Fix-double-quirk-for-Quanta-FL1-Lenovo-Idea.patch
deleted file mode 100644
index 8bd1291..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0028-ALSA-hda-Fix-double-quirk-for-Quanta-FL1-Lenovo-Idea.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 48c0a41688550241188e24029bfbc89b431f39be Mon Sep 17 00:00:00 2001
-From: David Henningsson <david.henningsson at canonical.com>
-Date: Wed, 8 Aug 2012 08:43:37 +0200
-Subject: [PATCH 28/38] ALSA: hda - Fix double quirk for Quanta FL1 / Lenovo
- Ideapad
-
-commit 012e7eb1e501d0120e0383b81477f63091f5e365 upstream.
-
-The same ID is twice in the quirk table, so the second one is not used.
-
-Signed-off-by: David Henningsson <david.henningsson at canonical.com>
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- sound/pci/hda/patch_realtek.c | 5 +++--
- 1 files changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
-index 2bf8cbb..32c8169 100644
---- a/sound/pci/hda/patch_realtek.c
-+++ b/sound/pci/hda/patch_realtek.c
-@@ -4981,6 +4981,8 @@ static const struct alc_fixup alc269_fixups[] = {
- [ALC269_FIXUP_PCM_44K] = {
- .type = ALC_FIXUP_FUNC,
- .v.func = alc269_fixup_pcm_44k,
-+ .chained = true,
-+ .chain_id = ALC269_FIXUP_QUANTA_MUTE
- },
- [ALC269_FIXUP_STEREO_DMIC] = {
- .type = ALC_FIXUP_FUNC,
-@@ -5080,8 +5082,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
- SND_PCI_QUIRK(0x17aa, 0x21fa, "Thinkpad X230", ALC269_FIXUP_LENOVO_DOCK),
- SND_PCI_QUIRK(0x17aa, 0x21fb, "Thinkpad T430s", ALC269_FIXUP_LENOVO_DOCK),
- SND_PCI_QUIRK(0x17aa, 0x2203, "Thinkpad X230 Tablet", ALC269_FIXUP_LENOVO_DOCK),
-- SND_PCI_QUIRK(0x17aa, 0x3bf8, "Quanta FL1", ALC269_FIXUP_QUANTA_MUTE),
-- SND_PCI_QUIRK(0x17aa, 0x3bf8, "Lenovo Ideapd", ALC269_FIXUP_PCM_44K),
-+ SND_PCI_QUIRK(0x17aa, 0x3bf8, "Quanta FL1", ALC269_FIXUP_PCM_44K),
- SND_PCI_QUIRK(0x17aa, 0x9e54, "LENOVO NB", ALC269_FIXUP_LENOVO_EAPD),
-
- #if 1
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0029-ARM-pxa-remove-irq_to_gpio-from-ezx-pcap-driver.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0029-ARM-pxa-remove-irq_to_gpio-from-ezx-pcap-driver.patch
deleted file mode 100644
index 74e4c99..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0029-ARM-pxa-remove-irq_to_gpio-from-ezx-pcap-driver.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From d1a256509df27e34f01e3c36017f21fd94b9d40f Mon Sep 17 00:00:00 2001
-From: Arnd Bergmann <arnd at arndb.de>
-Date: Sun, 5 Aug 2012 14:58:37 +0000
-Subject: [PATCH 29/38] ARM: pxa: remove irq_to_gpio from ezx-pcap driver
-
-commit 59ee93a528b94ef4e81a08db252b0326feff171f upstream.
-
-The irq_to_gpio function was removed from the pxa platform
-in linux-3.2, and this driver has been broken since.
-
-There is actually no in-tree user of this driver that adds
-this platform device, but the driver can and does get enabled
-on some platforms.
-
-Without this patch, building ezx_defconfig results in:
-
-drivers/mfd/ezx-pcap.c: In function 'pcap_isr_work':
-drivers/mfd/ezx-pcap.c:205:2: error: implicit declaration of function 'irq_to_gpio' [-Werror=implicit-function-declaration]
-
-Signed-off-by: Arnd Bergmann <arnd at arndb.de>
-Acked-by: Haojian Zhuang <haojian.zhuang at gmail.com>
-Cc: Samuel Ortiz <sameo at linux.intel.com>
-Cc: Daniel Ribeiro <drwyrm at gmail.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/mfd/ezx-pcap.c | 2 +-
- include/linux/mfd/ezx-pcap.h | 1 +
- 2 files changed, 2 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/mfd/ezx-pcap.c b/drivers/mfd/ezx-pcap.c
-index 43a76c4..db662e2 100644
---- a/drivers/mfd/ezx-pcap.c
-+++ b/drivers/mfd/ezx-pcap.c
-@@ -202,7 +202,7 @@ static void pcap_isr_work(struct work_struct *work)
- }
- local_irq_enable();
- ezx_pcap_write(pcap, PCAP_REG_MSR, pcap->msr);
-- } while (gpio_get_value(irq_to_gpio(pcap->spi->irq)));
-+ } while (gpio_get_value(pdata->gpio));
- }
-
- static void pcap_irq_handler(unsigned int irq, struct irq_desc *desc)
-diff --git a/include/linux/mfd/ezx-pcap.h b/include/linux/mfd/ezx-pcap.h
-index 40c37216..32a1b5c 100644
---- a/include/linux/mfd/ezx-pcap.h
-+++ b/include/linux/mfd/ezx-pcap.h
-@@ -16,6 +16,7 @@ struct pcap_subdev {
- struct pcap_platform_data {
- unsigned int irq_base;
- unsigned int config;
-+ int gpio;
- void (*init) (void *); /* board specific init */
- int num_subdevs;
- struct pcap_subdev *subdevs;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0030-Input-eeti_ts-pass-gpio-value-instead-of-IRQ.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0030-Input-eeti_ts-pass-gpio-value-instead-of-IRQ.patch
deleted file mode 100644
index ba341a4..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0030-Input-eeti_ts-pass-gpio-value-instead-of-IRQ.patch
+++ /dev/null
@@ -1,150 +0,0 @@
-From 2cc9ed812de17dc47de5a66405766895cc02c729 Mon Sep 17 00:00:00 2001
-From: Arnd Bergmann <arnd at arndb.de>
-Date: Mon, 30 Apr 2012 16:21:37 +0000
-Subject: [PATCH 30/38] Input: eeti_ts: pass gpio value instead of IRQ
-
-commit 4eef6cbfcc03b294d9d334368a851b35b496ce53 upstream.
-
-The EETI touchscreen asserts its IRQ line as soon as it has data in its
-internal buffers. The line is automatically deasserted once all data has
-been read via I2C. Hence, the driver has to monitor the GPIO line and
-cannot simply rely on the interrupt handler reception.
-
-In the current implementation of the driver, irq_to_gpio() is used to
-determine the GPIO number from the i2c_client's IRQ value.
-
-As irq_to_gpio() is not available on all platforms, this patch changes
-this and makes the driver ignore the passed in IRQ. Instead, a GPIO is
-added to the platform_data struct and gpio_to_irq is used to derive the
-IRQ from that GPIO. If this fails, bail out. The driver is only able to
-work in environments where the touchscreen GPIO can be mapped to an
-IRQ.
-
-Without this patch, building raumfeld_defconfig results in:
-
-drivers/input/touchscreen/eeti_ts.c: In function 'eeti_ts_irq_active':
-drivers/input/touchscreen/eeti_ts.c:65:2: error: implicit declaration of function 'irq_to_gpio' [-Werror=implicit-function-declaration]
-
-Signed-off-by: Daniel Mack <zonque at gmail.com>
-Signed-off-by: Arnd Bergmann <arnd at arndb.de>
-Cc: Dmitry Torokhov <dmitry.torokhov at gmail.com>
-Cc: Sven Neumann <s.neumann at raumfeld.com>
-Cc: linux-input at vger.kernel.org
-Cc: Haojian Zhuang <haojian.zhuang at gmail.com>
-[bwh: Backported to 3.2: raumfeld_controller_i2c_board_info.irq was
- initialised using gpio_to_irq(), but this doesn't seem to matter]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/arm/mach-pxa/raumfeld.c | 2 +-
- drivers/input/touchscreen/eeti_ts.c | 21 +++++++++++++--------
- include/linux/input/eeti_ts.h | 1 +
- 3 files changed, 15 insertions(+), 9 deletions(-)
-
-diff --git a/arch/arm/mach-pxa/raumfeld.c b/arch/arm/mach-pxa/raumfeld.c
-index f0c05f4..ae7786d 100644
---- a/arch/arm/mach-pxa/raumfeld.c
-+++ b/arch/arm/mach-pxa/raumfeld.c
-@@ -951,12 +951,12 @@ static struct i2c_board_info raumfeld_connector_i2c_board_info __initdata = {
-
- static struct eeti_ts_platform_data eeti_ts_pdata = {
- .irq_active_high = 1,
-+ .irq_gpio = GPIO_TOUCH_IRQ,
- };
-
- static struct i2c_board_info raumfeld_controller_i2c_board_info __initdata = {
- .type = "eeti_ts",
- .addr = 0x0a,
-- .irq = gpio_to_irq(GPIO_TOUCH_IRQ),
- .platform_data = &eeti_ts_pdata,
- };
-
-diff --git a/drivers/input/touchscreen/eeti_ts.c b/drivers/input/touchscreen/eeti_ts.c
-index 7f8f538..4f938bb 100644
---- a/drivers/input/touchscreen/eeti_ts.c
-+++ b/drivers/input/touchscreen/eeti_ts.c
-@@ -48,7 +48,7 @@ struct eeti_ts_priv {
- struct input_dev *input;
- struct work_struct work;
- struct mutex mutex;
-- int irq, irq_active_high;
-+ int irq_gpio, irq, irq_active_high;
- };
-
- #define EETI_TS_BITDEPTH (11)
-@@ -62,7 +62,7 @@ struct eeti_ts_priv {
-
- static inline int eeti_ts_irq_active(struct eeti_ts_priv *priv)
- {
-- return gpio_get_value(irq_to_gpio(priv->irq)) == priv->irq_active_high;
-+ return gpio_get_value(priv->irq_gpio) == priv->irq_active_high;
- }
-
- static void eeti_ts_read(struct work_struct *work)
-@@ -157,7 +157,7 @@ static void eeti_ts_close(struct input_dev *dev)
- static int __devinit eeti_ts_probe(struct i2c_client *client,
- const struct i2c_device_id *idp)
- {
-- struct eeti_ts_platform_data *pdata;
-+ struct eeti_ts_platform_data *pdata = client->dev.platform_data;
- struct eeti_ts_priv *priv;
- struct input_dev *input;
- unsigned int irq_flags;
-@@ -199,9 +199,12 @@ static int __devinit eeti_ts_probe(struct i2c_client *client,
-
- priv->client = client;
- priv->input = input;
-- priv->irq = client->irq;
-+ priv->irq_gpio = pdata->irq_gpio;
-+ priv->irq = gpio_to_irq(pdata->irq_gpio);
-
-- pdata = client->dev.platform_data;
-+ err = gpio_request_one(pdata->irq_gpio, GPIOF_IN, client->name);
-+ if (err < 0)
-+ goto err1;
-
- if (pdata)
- priv->irq_active_high = pdata->irq_active_high;
-@@ -215,13 +218,13 @@ static int __devinit eeti_ts_probe(struct i2c_client *client,
-
- err = input_register_device(input);
- if (err)
-- goto err1;
-+ goto err2;
-
- err = request_irq(priv->irq, eeti_ts_isr, irq_flags,
- client->name, priv);
- if (err) {
- dev_err(&client->dev, "Unable to request touchscreen IRQ.\n");
-- goto err2;
-+ goto err3;
- }
-
- /*
-@@ -233,9 +236,11 @@ static int __devinit eeti_ts_probe(struct i2c_client *client,
- device_init_wakeup(&client->dev, 0);
- return 0;
-
--err2:
-+err3:
- input_unregister_device(input);
- input = NULL; /* so we dont try to free it below */
-+err2:
-+ gpio_free(pdata->irq_gpio);
- err1:
- input_free_device(input);
- kfree(priv);
-diff --git a/include/linux/input/eeti_ts.h b/include/linux/input/eeti_ts.h
-index f875b31..16625d7 100644
---- a/include/linux/input/eeti_ts.h
-+++ b/include/linux/input/eeti_ts.h
-@@ -2,6 +2,7 @@
- #define LINUX_INPUT_EETI_TS_H
-
- struct eeti_ts_platform_data {
-+ int irq_gpio;
- unsigned int irq_active_high;
- };
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0031-drm-i915-Add-wait_for-in-init_ring_common.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0031-drm-i915-Add-wait_for-in-init_ring_common.patch
deleted file mode 100644
index e45866d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0031-drm-i915-Add-wait_for-in-init_ring_common.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From d23b1ce378587bb69517adb584a891ae632e6796 Mon Sep 17 00:00:00 2001
-From: Sean Paul <seanpaul at chromium.org>
-Date: Fri, 16 Mar 2012 12:43:22 -0400
-Subject: [PATCH 31/38] drm/i915: Add wait_for in init_ring_common
-
-commit f01db988ef6f6c70a6cc36ee71e4a98a68901229 upstream.
-
-I have seen a number of "blt ring initialization failed" messages
-where the ctl or start registers are not the correct value. Upon further
-inspection, if the code just waited a little bit, it would read the
-correct value. Adding the wait_for to these reads should eliminate the
-issue.
-
-Signed-off-by: Sean Paul <seanpaul at chromium.org>
-Reviewed-by: Ben Widawsky <ben at bwidawsk.net>
-Signed-off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpu/drm/i915/intel_ringbuffer.c | 6 +++---
- 1 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
-index d2cbe5d..4983e59 100644
---- a/drivers/gpu/drm/i915/intel_ringbuffer.c
-+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
-@@ -295,9 +295,9 @@ static int init_ring_common(struct intel_ring_buffer *ring)
- | RING_VALID);
-
- /* If the head is still not zero, the ring is dead */
-- if ((I915_READ_CTL(ring) & RING_VALID) == 0 ||
-- I915_READ_START(ring) != obj->gtt_offset ||
-- (I915_READ_HEAD(ring) & HEAD_ADDR) != 0) {
-+ if (wait_for((I915_READ_CTL(ring) & RING_VALID) != 0 &&
-+ I915_READ_START(ring) == obj->gtt_offset &&
-+ (I915_READ_HEAD(ring) & HEAD_ADDR) == 0, 50)) {
- DRM_ERROR("%s initialization failed "
- "ctl %08x head %08x tail %08x start %08x\n",
- ring->name,
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0032-drm-i915-correctly-order-the-ring-init-sequence.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0032-drm-i915-correctly-order-the-ring-init-sequence.patch
deleted file mode 100644
index dffe4de..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0032-drm-i915-correctly-order-the-ring-init-sequence.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From 0985ae7d2afe20b2e54416d1985672a37aea9f0a Mon Sep 17 00:00:00 2001
-From: Daniel Vetter <daniel.vetter at ffwll.ch>
-Date: Tue, 7 Aug 2012 09:54:14 +0200
-Subject: [PATCH 32/38] drm/i915: correctly order the ring init sequence
-
-commit 0d8957c8a90bbb5d34fab9a304459448a5131e06 upstream.
-
-We may only start to set up the new register values after having
-confirmed that the ring is truely off. Otherwise the hw might lose the
-newly written register values. This is caught later on in the init
-sequence, when we check whether the register writes have stuck.
-
-Reviewed-by: Jani Nikula <jani.nikula at intel.com>
-Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=50522
-Tested-by: Yang Guang <guang.a.yang at intel.com>
-Signed-off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpu/drm/i915/intel_ringbuffer.c | 7 +++++--
- 1 files changed, 5 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
-index 4983e59..19085c0 100644
---- a/drivers/gpu/drm/i915/intel_ringbuffer.c
-+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
-@@ -263,8 +263,6 @@ static int init_ring_common(struct intel_ring_buffer *ring)
- I915_WRITE_HEAD(ring, 0);
- ring->write_tail(ring, 0);
-
-- /* Initialize the ring. */
-- I915_WRITE_START(ring, obj->gtt_offset);
- head = I915_READ_HEAD(ring) & HEAD_ADDR;
-
- /* G45 ring initialization fails to reset head to zero */
-@@ -290,6 +288,11 @@ static int init_ring_common(struct intel_ring_buffer *ring)
- }
- }
-
-+ /* Initialize the ring. This must happen _after_ we've cleared the ring
-+ * registers with the above sequence (the readback of the HEAD registers
-+ * also enforces ordering), otherwise the hw might lose the new ring
-+ * register values. */
-+ I915_WRITE_START(ring, obj->gtt_offset);
- I915_WRITE_CTL(ring,
- ((ring->size - PAGE_SIZE) & RING_NR_PAGES)
- | RING_VALID);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0033-s390-compat-fix-compat-wrappers-for-process_vm-syste.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0033-s390-compat-fix-compat-wrappers-for-process_vm-syste.patch
deleted file mode 100644
index b004b58..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0033-s390-compat-fix-compat-wrappers-for-process_vm-syste.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 664f500626e5151a1b9350bb7e6fc68618d7769c Mon Sep 17 00:00:00 2001
-From: Heiko Carstens <heiko.carstens at de.ibm.com>
-Date: Tue, 7 Aug 2012 09:48:13 +0200
-Subject: [PATCH 33/38] s390/compat: fix compat wrappers for process_vm system
- calls
-
-commit 82aabdb6f1eb61e0034ec23901480f5dd23db7c4 upstream.
-
-The compat wrappers incorrectly called the non compat versions of
-the system process_vm system calls.
-
-Signed-off-by: Heiko Carstens <heiko.carstens at de.ibm.com>
-Signed-off-by: Martin Schwidefsky <schwidefsky at de.ibm.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/s390/kernel/compat_wrapper.S | 4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/arch/s390/kernel/compat_wrapper.S b/arch/s390/kernel/compat_wrapper.S
-index 18c51df..25408d3 100644
---- a/arch/s390/kernel/compat_wrapper.S
-+++ b/arch/s390/kernel/compat_wrapper.S
-@@ -1636,7 +1636,7 @@ ENTRY(compat_sys_process_vm_readv_wrapper)
- llgfr %r6,%r6 # unsigned long
- llgf %r0,164(%r15) # unsigned long
- stg %r0,160(%r15)
-- jg sys_process_vm_readv
-+ jg compat_sys_process_vm_readv
-
- ENTRY(compat_sys_process_vm_writev_wrapper)
- lgfr %r2,%r2 # compat_pid_t
-@@ -1646,4 +1646,4 @@ ENTRY(compat_sys_process_vm_writev_wrapper)
- llgfr %r6,%r6 # unsigned long
- llgf %r0,164(%r15) # unsigned long
- stg %r0,160(%r15)
-- jg sys_process_vm_writev
-+ jg compat_sys_process_vm_writev
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0034-s390-compat-fix-mmap-compat-system-calls.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0034-s390-compat-fix-mmap-compat-system-calls.patch
deleted file mode 100644
index 043e7cc..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0034-s390-compat-fix-mmap-compat-system-calls.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From 406540dcb821843e6807203e7530a00909d42bf0 Mon Sep 17 00:00:00 2001
-From: Heiko Carstens <heiko.carstens at de.ibm.com>
-Date: Wed, 8 Aug 2012 09:32:20 +0200
-Subject: [PATCH 34/38] s390/compat: fix mmap compat system calls
-
-commit e85871218513c54f7dfdb6009043cb638f2fecbe upstream.
-
-The native 31 bit and the compat behaviour for the mmap system calls differ:
-
-In native 31 bit mode the passed in address for the mmap system call will be
-unmodified passed to sys_mmap_pgoff().
-In compat mode however the passed in address will be modified with
-compat_ptr() which masks out the most significant bit.
-
-The result is that in native 31 bit mode each mmap request (with MAP_FIXED)
-will fail where the most significat bit is set, while in compat mode it
-may succeed.
-
-This odd behaviour was introduced with d3815898 "[S390] mmap: add missing
-compat_ptr conversion to both mmap compat syscalls".
-
-To restore a consistent behaviour accross native and compat mode this
-patch functionally reverts the above mentioned commit.
-
-Signed-off-by: Heiko Carstens <heiko.carstens at de.ibm.com>
-Signed-off-by: Martin Schwidefsky <schwidefsky at de.ibm.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/s390/kernel/compat_linux.c | 2 --
- 1 files changed, 0 insertions(+), 2 deletions(-)
-
-diff --git a/arch/s390/kernel/compat_linux.c b/arch/s390/kernel/compat_linux.c
-index 84a9828..38c6645 100644
---- a/arch/s390/kernel/compat_linux.c
-+++ b/arch/s390/kernel/compat_linux.c
-@@ -615,7 +615,6 @@ asmlinkage unsigned long old32_mmap(struct mmap_arg_struct_emu31 __user *arg)
- return -EFAULT;
- if (a.offset & ~PAGE_MASK)
- return -EINVAL;
-- a.addr = (unsigned long) compat_ptr(a.addr);
- return sys_mmap_pgoff(a.addr, a.len, a.prot, a.flags, a.fd,
- a.offset >> PAGE_SHIFT);
- }
-@@ -626,7 +625,6 @@ asmlinkage long sys32_mmap2(struct mmap_arg_struct_emu31 __user *arg)
-
- if (copy_from_user(&a, arg, sizeof(a)))
- return -EFAULT;
-- a.addr = (unsigned long) compat_ptr(a.addr);
- return sys_mmap_pgoff(a.addr, a.len, a.prot, a.flags, a.fd, a.offset);
- }
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0035-drm-radeon-fix-bank-tiling-parameters-on-evergreen.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0035-drm-radeon-fix-bank-tiling-parameters-on-evergreen.patch
deleted file mode 100644
index e95ddc7..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0035-drm-radeon-fix-bank-tiling-parameters-on-evergreen.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From 15678bda8906e4eef89b8b2f9661a765f86aced6 Mon Sep 17 00:00:00 2001
-From: Alex Deucher <alexander.deucher at amd.com>
-Date: Tue, 31 Jul 2012 11:01:10 -0400
-Subject: [PATCH 35/38] drm/radeon: fix bank tiling parameters on evergreen
-
-commit c8d15edc17d836686d1f071e564800e1a2724fa6 upstream.
-
-Handle the 16 bank case.
-
-Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpu/drm/radeon/evergreen.c | 14 +++++++++++---
- 1 files changed, 11 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/gpu/drm/radeon/evergreen.c b/drivers/gpu/drm/radeon/evergreen.c
-index 931f4df..3fdbdd1 100644
---- a/drivers/gpu/drm/radeon/evergreen.c
-+++ b/drivers/gpu/drm/radeon/evergreen.c
-@@ -2080,10 +2080,18 @@ static void evergreen_gpu_init(struct radeon_device *rdev)
- if (rdev->flags & RADEON_IS_IGP)
- rdev->config.evergreen.tile_config |= 1 << 4;
- else {
-- if ((mc_arb_ramcfg & NOOFBANK_MASK) >> NOOFBANK_SHIFT)
-- rdev->config.evergreen.tile_config |= 1 << 4;
-- else
-+ switch ((mc_arb_ramcfg & NOOFBANK_MASK) >> NOOFBANK_SHIFT) {
-+ case 0: /* four banks */
- rdev->config.evergreen.tile_config |= 0 << 4;
-+ break;
-+ case 1: /* eight banks */
-+ rdev->config.evergreen.tile_config |= 1 << 4;
-+ break;
-+ case 2: /* sixteen banks */
-+ default:
-+ rdev->config.evergreen.tile_config |= 2 << 4;
-+ break;
-+ }
- }
- rdev->config.evergreen.tile_config |=
- ((mc_arb_ramcfg & BURSTLENGTH_MASK) >> BURSTLENGTH_SHIFT) << 8;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0036-drm-radeon-fix-bank-tiling-parameters-on-cayman.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0036-drm-radeon-fix-bank-tiling-parameters-on-cayman.patch
deleted file mode 100644
index e001c22..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0036-drm-radeon-fix-bank-tiling-parameters-on-cayman.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From 175620c56b4907a68fd11f7bfbea559739394915 Mon Sep 17 00:00:00 2001
-From: Alex Deucher <alexander.deucher at amd.com>
-Date: Tue, 31 Jul 2012 11:05:11 -0400
-Subject: [PATCH 36/38] drm/radeon: fix bank tiling parameters on cayman
-
-commit 5b23c9045a8b61352986270b2d109edf5085e113 upstream.
-
-Handle the 16 bank case.
-
-Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
-[bwh: Backported to 3.2: adjust context, indentation]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpu/drm/radeon/ni.c | 14 +++++++++++---
- 1 files changed, 11 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/gpu/drm/radeon/ni.c b/drivers/gpu/drm/radeon/ni.c
-index 9e50814..636255b 100644
---- a/drivers/gpu/drm/radeon/ni.c
-+++ b/drivers/gpu/drm/radeon/ni.c
-@@ -804,10 +804,18 @@ static void cayman_gpu_init(struct radeon_device *rdev)
- rdev->config.cayman.tile_config |= (3 << 0);
- break;
- }
-- if ((mc_arb_ramcfg & NOOFBANK_MASK) >> NOOFBANK_SHIFT)
-- rdev->config.cayman.tile_config |= 1 << 4;
-- else
-+ switch ((mc_arb_ramcfg & NOOFBANK_MASK) >> NOOFBANK_SHIFT) {
-+ case 0: /* four banks */
- rdev->config.cayman.tile_config |= 0 << 4;
-+ break;
-+ case 1: /* eight banks */
-+ rdev->config.cayman.tile_config |= 1 << 4;
-+ break;
-+ case 2: /* sixteen banks */
-+ default:
-+ rdev->config.cayman.tile_config |= 2 << 4;
-+ break;
-+ }
- rdev->config.cayman.tile_config |=
- ((gb_addr_config & PIPE_INTERLEAVE_SIZE_MASK) >> PIPE_INTERLEAVE_SIZE_SHIFT) << 8;
- rdev->config.cayman.tile_config |=
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0037-drm-radeon-do-not-reenable-crtc-after-moving-vram-st.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0037-drm-radeon-do-not-reenable-crtc-after-moving-vram-st.patch
deleted file mode 100644
index 435ae16..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0037-drm-radeon-do-not-reenable-crtc-after-moving-vram-st.patch
+++ /dev/null
@@ -1,178 +0,0 @@
-From 5c84fba575f5b4915184ba74d2f3be21ffb231b9 Mon Sep 17 00:00:00 2001
-From: Jerome Glisse <jglisse at redhat.com>
-Date: Fri, 27 Jul 2012 16:32:24 -0400
-Subject: [PATCH 37/38] drm/radeon: do not reenable crtc after moving vram
- start address
-
-commit 81ee8fb6b52ec69eeed37fe7943446af1dccecc5 upstream.
-
-It seems we can not update the crtc scanout address. After disabling
-crtc, update to base address do not take effect after crtc being
-reenable leading to at least frame being scanout from the old crtc
-base address. Disabling crtc display request lead to same behavior.
-
-So after changing the vram address if we don't keep crtc disabled
-we will have the GPU trying to read some random system memory address
-with some iommu this will broke the crtc engine and will lead to
-broken display and iommu error message.
-
-So to avoid this, disable crtc. For flicker less boot we will need
-to avoid moving the vram start address.
-
-This patch should also fix :
-
-https://bugs.freedesktop.org/show_bug.cgi?id=42373
-
-Signed-off-by: Jerome Glisse <jglisse at redhat.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/gpu/drm/radeon/evergreen.c | 57 ----------------------------------
- drivers/gpu/drm/radeon/radeon_asic.h | 8 +---
- drivers/gpu/drm/radeon/rv515.c | 13 --------
- 3 files changed, 2 insertions(+), 76 deletions(-)
-
-diff --git a/drivers/gpu/drm/radeon/evergreen.c b/drivers/gpu/drm/radeon/evergreen.c
-index 3fdbdd1..fc0633c 100644
---- a/drivers/gpu/drm/radeon/evergreen.c
-+++ b/drivers/gpu/drm/radeon/evergreen.c
-@@ -1065,24 +1065,8 @@ void evergreen_agp_enable(struct radeon_device *rdev)
-
- void evergreen_mc_stop(struct radeon_device *rdev, struct evergreen_mc_save *save)
- {
-- save->vga_control[0] = RREG32(D1VGA_CONTROL);
-- save->vga_control[1] = RREG32(D2VGA_CONTROL);
- save->vga_render_control = RREG32(VGA_RENDER_CONTROL);
- save->vga_hdp_control = RREG32(VGA_HDP_CONTROL);
-- save->crtc_control[0] = RREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC0_REGISTER_OFFSET);
-- save->crtc_control[1] = RREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC1_REGISTER_OFFSET);
-- if (rdev->num_crtc >= 4) {
-- save->vga_control[2] = RREG32(EVERGREEN_D3VGA_CONTROL);
-- save->vga_control[3] = RREG32(EVERGREEN_D4VGA_CONTROL);
-- save->crtc_control[2] = RREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC2_REGISTER_OFFSET);
-- save->crtc_control[3] = RREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC3_REGISTER_OFFSET);
-- }
-- if (rdev->num_crtc >= 6) {
-- save->vga_control[4] = RREG32(EVERGREEN_D5VGA_CONTROL);
-- save->vga_control[5] = RREG32(EVERGREEN_D6VGA_CONTROL);
-- save->crtc_control[4] = RREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC4_REGISTER_OFFSET);
-- save->crtc_control[5] = RREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC5_REGISTER_OFFSET);
-- }
-
- /* Stop all video */
- WREG32(VGA_RENDER_CONTROL, 0);
-@@ -1193,47 +1177,6 @@ void evergreen_mc_resume(struct radeon_device *rdev, struct evergreen_mc_save *s
- /* Unlock host access */
- WREG32(VGA_HDP_CONTROL, save->vga_hdp_control);
- mdelay(1);
-- /* Restore video state */
-- WREG32(D1VGA_CONTROL, save->vga_control[0]);
-- WREG32(D2VGA_CONTROL, save->vga_control[1]);
-- if (rdev->num_crtc >= 4) {
-- WREG32(EVERGREEN_D3VGA_CONTROL, save->vga_control[2]);
-- WREG32(EVERGREEN_D4VGA_CONTROL, save->vga_control[3]);
-- }
-- if (rdev->num_crtc >= 6) {
-- WREG32(EVERGREEN_D5VGA_CONTROL, save->vga_control[4]);
-- WREG32(EVERGREEN_D6VGA_CONTROL, save->vga_control[5]);
-- }
-- WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC0_REGISTER_OFFSET, 1);
-- WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC1_REGISTER_OFFSET, 1);
-- if (rdev->num_crtc >= 4) {
-- WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC2_REGISTER_OFFSET, 1);
-- WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC3_REGISTER_OFFSET, 1);
-- }
-- if (rdev->num_crtc >= 6) {
-- WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC4_REGISTER_OFFSET, 1);
-- WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC5_REGISTER_OFFSET, 1);
-- }
-- WREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC0_REGISTER_OFFSET, save->crtc_control[0]);
-- WREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC1_REGISTER_OFFSET, save->crtc_control[1]);
-- if (rdev->num_crtc >= 4) {
-- WREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC2_REGISTER_OFFSET, save->crtc_control[2]);
-- WREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC3_REGISTER_OFFSET, save->crtc_control[3]);
-- }
-- if (rdev->num_crtc >= 6) {
-- WREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC4_REGISTER_OFFSET, save->crtc_control[4]);
-- WREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC5_REGISTER_OFFSET, save->crtc_control[5]);
-- }
-- WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC0_REGISTER_OFFSET, 0);
-- WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC1_REGISTER_OFFSET, 0);
-- if (rdev->num_crtc >= 4) {
-- WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC2_REGISTER_OFFSET, 0);
-- WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC3_REGISTER_OFFSET, 0);
-- }
-- if (rdev->num_crtc >= 6) {
-- WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC4_REGISTER_OFFSET, 0);
-- WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC5_REGISTER_OFFSET, 0);
-- }
- WREG32(VGA_RENDER_CONTROL, save->vga_render_control);
- }
-
-diff --git a/drivers/gpu/drm/radeon/radeon_asic.h b/drivers/gpu/drm/radeon/radeon_asic.h
-index 5991484..5ce9402 100644
---- a/drivers/gpu/drm/radeon/radeon_asic.h
-+++ b/drivers/gpu/drm/radeon/radeon_asic.h
-@@ -253,13 +253,10 @@ void rs690_line_buffer_adjust(struct radeon_device *rdev,
- * rv515
- */
- struct rv515_mc_save {
-- u32 d1vga_control;
-- u32 d2vga_control;
- u32 vga_render_control;
- u32 vga_hdp_control;
-- u32 d1crtc_control;
-- u32 d2crtc_control;
- };
-+
- int rv515_init(struct radeon_device *rdev);
- void rv515_fini(struct radeon_device *rdev);
- uint32_t rv515_mc_rreg(struct radeon_device *rdev, uint32_t reg);
-@@ -387,11 +384,10 @@ void r700_cp_fini(struct radeon_device *rdev);
- * evergreen
- */
- struct evergreen_mc_save {
-- u32 vga_control[6];
- u32 vga_render_control;
- u32 vga_hdp_control;
-- u32 crtc_control[6];
- };
-+
- void evergreen_pcie_gart_tlb_flush(struct radeon_device *rdev);
- int evergreen_init(struct radeon_device *rdev);
- void evergreen_fini(struct radeon_device *rdev);
-diff --git a/drivers/gpu/drm/radeon/rv515.c b/drivers/gpu/drm/radeon/rv515.c
-index 6613ee9..d5f45b4 100644
---- a/drivers/gpu/drm/radeon/rv515.c
-+++ b/drivers/gpu/drm/radeon/rv515.c
-@@ -281,12 +281,8 @@ int rv515_debugfs_ga_info_init(struct radeon_device *rdev)
-
- void rv515_mc_stop(struct radeon_device *rdev, struct rv515_mc_save *save)
- {
-- save->d1vga_control = RREG32(R_000330_D1VGA_CONTROL);
-- save->d2vga_control = RREG32(R_000338_D2VGA_CONTROL);
- save->vga_render_control = RREG32(R_000300_VGA_RENDER_CONTROL);
- save->vga_hdp_control = RREG32(R_000328_VGA_HDP_CONTROL);
-- save->d1crtc_control = RREG32(R_006080_D1CRTC_CONTROL);
-- save->d2crtc_control = RREG32(R_006880_D2CRTC_CONTROL);
-
- /* Stop all video */
- WREG32(R_0068E8_D2CRTC_UPDATE_LOCK, 0);
-@@ -311,15 +307,6 @@ void rv515_mc_resume(struct radeon_device *rdev, struct rv515_mc_save *save)
- /* Unlock host access */
- WREG32(R_000328_VGA_HDP_CONTROL, save->vga_hdp_control);
- mdelay(1);
-- /* Restore video state */
-- WREG32(R_000330_D1VGA_CONTROL, save->d1vga_control);
-- WREG32(R_000338_D2VGA_CONTROL, save->d2vga_control);
-- WREG32(R_0060E8_D1CRTC_UPDATE_LOCK, 1);
-- WREG32(R_0068E8_D2CRTC_UPDATE_LOCK, 1);
-- WREG32(R_006080_D1CRTC_CONTROL, save->d1crtc_control);
-- WREG32(R_006880_D2CRTC_CONTROL, save->d2crtc_control);
-- WREG32(R_0060E8_D1CRTC_UPDATE_LOCK, 0);
-- WREG32(R_0068E8_D2CRTC_UPDATE_LOCK, 0);
- WREG32(R_000300_VGA_RENDER_CONTROL, save->vga_render_control);
- }
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0038-Linux-3.2.28.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0038-Linux-3.2.28.patch
deleted file mode 100644
index 54aab40..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.28/0038-Linux-3.2.28.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 07d458defd356c96a7d4edaeae46b5b17f37fd2b Mon Sep 17 00:00:00 2001
-From: Ben Hutchings <ben at decadent.org.uk>
-Date: Sun, 19 Aug 2012 18:15:38 +0100
-Subject: [PATCH 38/38] Linux 3.2.28
-
----
- Makefile | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/Makefile b/Makefile
-index bdf851f..5368961 100644
---- a/Makefile
-+++ b/Makefile
-@@ -1,6 +1,6 @@
- VERSION = 3
- PATCHLEVEL = 2
--SUBLEVEL = 27
-+SUBLEVEL = 28
- EXTRAVERSION =
- NAME = Saber-toothed Squirrel
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0001-ALSA-hda-Fix-buffer-alignment-regression-with-Nvidia.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0001-ALSA-hda-Fix-buffer-alignment-regression-with-Nvidia.patch
deleted file mode 100644
index b6b8613..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0001-ALSA-hda-Fix-buffer-alignment-regression-with-Nvidia.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From 1ed5e98ecefcb8abd70088d0d51688e82c3fd432 Mon Sep 17 00:00:00 2001
-From: Takashi Iwai <tiwai at suse.de>
-Date: Mon, 23 Jan 2012 17:10:24 +0100
-Subject: [PATCH 01/90] ALSA: hda - Fix buffer-alignment regression with
- Nvidia HDMI
-
-commit 52409aa6a0e96337da137c069856298f4dd825a0 upstream.
-
-The commit 2ae66c26550cd94b0e2606a9275eb0ab7070ad0e
- ALSA: hda: option to enable arbitrary buffer/period sizes
-introduced a regression on machines with Intel controller and Nvidia
-HDMI. The reason is that the driver modifies the global variable
-align_buffer_size when an Intel controller is found, and the Nvidia
-HDMI controller is probed after Intel although Nvidia chips require
-the aligned buffers.
-
-This patch fixes the problem by moving the flag into the local struct
-so that it's not affected by other controllers.
-
-Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=42567
-
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- sound/pci/hda/hda_intel.c | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
-index 5b2b75b..192e6c0 100644
---- a/sound/pci/hda/hda_intel.c
-+++ b/sound/pci/hda/hda_intel.c
-@@ -461,6 +461,7 @@ struct azx {
- unsigned int irq_pending_warned :1;
- unsigned int probing :1; /* codec probing phase */
- unsigned int snoop:1;
-+ unsigned int align_buffer_size:1;
-
- /* for debugging */
- unsigned int last_cmd[AZX_MAX_CODECS];
-@@ -1697,7 +1698,7 @@ static int azx_pcm_open(struct snd_pcm_substream *substream)
- runtime->hw.rates = hinfo->rates;
- snd_pcm_limit_hw_rates(runtime);
- snd_pcm_hw_constraint_integer(runtime, SNDRV_PCM_HW_PARAM_PERIODS);
-- if (align_buffer_size)
-+ if (chip->align_buffer_size)
- /* constrain buffer sizes to be multiple of 128
- bytes. This is more efficient in terms of memory
- access but isn't required by the HDA spec and
-@@ -2753,8 +2754,9 @@ static int __devinit azx_create(struct snd_card *card, struct pci_dev *pci,
- }
-
- /* disable buffer size rounding to 128-byte multiples if supported */
-+ chip->align_buffer_size = align_buffer_size;
- if (chip->driver_caps & AZX_DCAPS_BUFSIZE)
-- align_buffer_size = 0;
-+ chip->align_buffer_size = 0;
-
- /* allow 64bit DMA address if supported by H/W */
- if ((gcap & ICH6_GCAP_64OK) && !pci_set_dma_mask(pci, DMA_BIT_MASK(64)))
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0002-ALSA-hda-Fix-silent-outputs-from-docking-station-jac.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0002-ALSA-hda-Fix-silent-outputs-from-docking-station-jac.patch
deleted file mode 100644
index e4e00dd..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0002-ALSA-hda-Fix-silent-outputs-from-docking-station-jac.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-From 9a70f2b5f4dbd354260036f53e4de261a3c127cf Mon Sep 17 00:00:00 2001
-From: Takashi Iwai <tiwai at suse.de>
-Date: Mon, 23 Jan 2012 18:23:36 +0100
-Subject: [PATCH 02/90] ALSA: hda - Fix silent outputs from docking-station
- jacks of Dell laptops
-
-commit b4ead019afc201f71c39cd0dfcaafed4a97b3dd2 upstream.
-
-The recent change of the power-widget handling for IDT codecs caused
-the silent output from the docking-station line-out jack. This was
-partially fixed by the commit f2cbba7602383cd9cdd21f0a5d0b8bd1aad47b33
-"ALSA: hda - Fix the lost power-setup of seconary pins after PM resume".
-But the line-out on the docking-station is still silent when booted
-with the jack plugged even by this fix.
-
-The remainig bug is that the power-widget is set off in stac92xx_init()
-because the pins in cfg->line_out_pins[] aren't checked there properly
-but only hp_pins[] are checked in is_nid_hp_pin().
-
-This patch fixes the problem by checking both HP and line-out pins
-and leaving the power-map correctly.
-
-Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=42637
-
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- sound/pci/hda/patch_sigmatel.c | 8 +++++---
- 1 file changed, 5 insertions(+), 3 deletions(-)
-
-diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c
-index f3c73a9..2141cab 100644
---- a/sound/pci/hda/patch_sigmatel.c
-+++ b/sound/pci/hda/patch_sigmatel.c
-@@ -4253,13 +4253,15 @@ static int enable_pin_detect(struct hda_codec *codec, hda_nid_t nid,
- return 1;
- }
-
--static int is_nid_hp_pin(struct auto_pin_cfg *cfg, hda_nid_t nid)
-+static int is_nid_out_jack_pin(struct auto_pin_cfg *cfg, hda_nid_t nid)
- {
- int i;
- for (i = 0; i < cfg->hp_outs; i++)
- if (cfg->hp_pins[i] == nid)
- return 1; /* nid is a HP-Out */
--
-+ for (i = 0; i < cfg->line_outs; i++)
-+ if (cfg->line_out_pins[i] == nid)
-+ return 1; /* nid is a line-Out */
- return 0; /* nid is not a HP-Out */
- };
-
-@@ -4465,7 +4467,7 @@ static int stac92xx_init(struct hda_codec *codec)
- continue;
- }
-
-- if (is_nid_hp_pin(cfg, nid))
-+ if (is_nid_out_jack_pin(cfg, nid))
- continue; /* already has an unsol event */
-
- pinctl = snd_hda_codec_read(codec, nid, 0,
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0003-eCryptfs-Sanitize-write-counts-of-dev-ecryptfs.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0003-eCryptfs-Sanitize-write-counts-of-dev-ecryptfs.patch
deleted file mode 100644
index 98eeb93..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0003-eCryptfs-Sanitize-write-counts-of-dev-ecryptfs.patch
+++ /dev/null
@@ -1,103 +0,0 @@
-From 108360a578c8ac2c9571cbe3f17746476f51fefb Mon Sep 17 00:00:00 2001
-From: Tyler Hicks <tyhicks at canonical.com>
-Date: Thu, 12 Jan 2012 11:30:44 +0100
-Subject: [PATCH 03/90] eCryptfs: Sanitize write counts of /dev/ecryptfs
-
-commit db10e556518eb9d21ee92ff944530d84349684f4 upstream.
-
-A malicious count value specified when writing to /dev/ecryptfs may
-result in a a very large kernel memory allocation.
-
-This patch peeks at the specified packet payload size, adds that to the
-size of the packet headers and compares the result with the write count
-value. The resulting maximum memory allocation size is approximately 532
-bytes.
-
-Signed-off-by: Tyler Hicks <tyhicks at canonical.com>
-Reported-by: Sasha Levin <levinsasha928 at gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/ecryptfs/miscdev.c | 56 +++++++++++++++++++++++++++++++++----------------
- 1 file changed, 38 insertions(+), 18 deletions(-)
-
-diff --git a/fs/ecryptfs/miscdev.c b/fs/ecryptfs/miscdev.c
-index 940a82e..0dc5a3d 100644
---- a/fs/ecryptfs/miscdev.c
-+++ b/fs/ecryptfs/miscdev.c
-@@ -409,11 +409,47 @@ ecryptfs_miscdev_write(struct file *file, const char __user *buf,
- ssize_t sz = 0;
- char *data;
- uid_t euid = current_euid();
-+ unsigned char packet_size_peek[3];
- int rc;
-
-- if (count == 0)
-+ if (count == 0) {
- goto out;
-+ } else if (count == (1 + 4)) {
-+ /* Likely a harmless MSG_HELO or MSG_QUIT - no packet length */
-+ goto memdup;
-+ } else if (count < (1 + 4 + 1)
-+ || count > (1 + 4 + 2 + sizeof(struct ecryptfs_message) + 4
-+ + ECRYPTFS_MAX_ENCRYPTED_KEY_BYTES)) {
-+ printk(KERN_WARNING "%s: Acceptable packet size range is "
-+ "[%d-%lu], but amount of data written is [%zu].",
-+ __func__, (1 + 4 + 1),
-+ (1 + 4 + 2 + sizeof(struct ecryptfs_message) + 4
-+ + ECRYPTFS_MAX_ENCRYPTED_KEY_BYTES), count);
-+ return -EINVAL;
-+ }
-+
-+ if (copy_from_user(packet_size_peek, (buf + 1 + 4),
-+ sizeof(packet_size_peek))) {
-+ printk(KERN_WARNING "%s: Error while inspecting packet size\n",
-+ __func__);
-+ return -EFAULT;
-+ }
-+
-+ rc = ecryptfs_parse_packet_length(packet_size_peek, &packet_size,
-+ &packet_size_length);
-+ if (rc) {
-+ printk(KERN_WARNING "%s: Error parsing packet length; "
-+ "rc = [%d]\n", __func__, rc);
-+ return rc;
-+ }
-+
-+ if ((1 + 4 + packet_size_length + packet_size) != count) {
-+ printk(KERN_WARNING "%s: Invalid packet size [%zu]\n", __func__,
-+ packet_size);
-+ return -EINVAL;
-+ }
-
-+memdup:
- data = memdup_user(buf, count);
- if (IS_ERR(data)) {
- printk(KERN_ERR "%s: memdup_user returned error [%ld]\n",
-@@ -435,23 +471,7 @@ ecryptfs_miscdev_write(struct file *file, const char __user *buf,
- }
- memcpy(&counter_nbo, &data[i], 4);
- seq = be32_to_cpu(counter_nbo);
-- i += 4;
-- rc = ecryptfs_parse_packet_length(&data[i], &packet_size,
-- &packet_size_length);
-- if (rc) {
-- printk(KERN_WARNING "%s: Error parsing packet length; "
-- "rc = [%d]\n", __func__, rc);
-- goto out_free;
-- }
-- i += packet_size_length;
-- if ((1 + 4 + packet_size_length + packet_size) != count) {
-- printk(KERN_WARNING "%s: (1 + packet_size_length([%zd])"
-- " + packet_size([%zd]))([%zd]) != "
-- "count([%zd]). Invalid packet format.\n",
-- __func__, packet_size_length, packet_size,
-- (1 + packet_size_length + packet_size), count);
-- goto out_free;
-- }
-+ i += 4 + packet_size_length;
- rc = ecryptfs_miscdev_response(&data[i], packet_size,
- euid, current_user_ns(),
- task_pid(current), seq);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0004-ecryptfs-Improve-metadata-read-failure-logging.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0004-ecryptfs-Improve-metadata-read-failure-logging.patch
deleted file mode 100644
index ce28730..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0004-ecryptfs-Improve-metadata-read-failure-logging.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From 0ce49bba7ef708a2a8673e20a23fa174556ef3bb Mon Sep 17 00:00:00 2001
-From: Tim Gardner <tim.gardner at canonical.com>
-Date: Thu, 12 Jan 2012 16:31:55 +0100
-Subject: [PATCH 04/90] ecryptfs: Improve metadata read failure logging
-
-commit 30373dc0c87ffef68d5628e77d56ffb1fa22e1ee upstream.
-
-Print inode on metadata read failure. The only real
-way of dealing with metadata read failures is to delete
-the underlying file system file. Having the inode
-allows one to 'find . -inum INODE`.
-
-[tyhicks at canonical.com: Removed some minor not-for-stable parts]
-Signed-off-by: Tim Gardner <tim.gardner at canonical.com>
-Reviewed-by: Kees Cook <keescook at chromium.org>
-Signed-off-by: Tyler Hicks <tyhicks at canonical.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/ecryptfs/crypto.c | 9 ++++++---
- 1 file changed, 6 insertions(+), 3 deletions(-)
-
-diff --git a/fs/ecryptfs/crypto.c b/fs/ecryptfs/crypto.c
-index 2a83425..2bf5203 100644
---- a/fs/ecryptfs/crypto.c
-+++ b/fs/ecryptfs/crypto.c
-@@ -1620,7 +1620,8 @@ int ecryptfs_read_metadata(struct dentry *ecryptfs_dentry)
- rc = ecryptfs_read_xattr_region(page_virt, ecryptfs_inode);
- if (rc) {
- printk(KERN_DEBUG "Valid eCryptfs headers not found in "
-- "file header region or xattr region\n");
-+ "file header region or xattr region, inode %lu\n",
-+ ecryptfs_inode->i_ino);
- rc = -EINVAL;
- goto out;
- }
-@@ -1629,7 +1630,8 @@ int ecryptfs_read_metadata(struct dentry *ecryptfs_dentry)
- ECRYPTFS_DONT_VALIDATE_HEADER_SIZE);
- if (rc) {
- printk(KERN_DEBUG "Valid eCryptfs headers not found in "
-- "file xattr region either\n");
-+ "file xattr region either, inode %lu\n",
-+ ecryptfs_inode->i_ino);
- rc = -EINVAL;
- }
- if (crypt_stat->mount_crypt_stat->flags
-@@ -1640,7 +1642,8 @@ int ecryptfs_read_metadata(struct dentry *ecryptfs_dentry)
- "crypto metadata only in the extended attribute "
- "region, but eCryptfs was mounted without "
- "xattr support enabled. eCryptfs will not treat "
-- "this like an encrypted file.\n");
-+ "this like an encrypted file, inode %lu\n",
-+ ecryptfs_inode->i_ino);
- rc = -EINVAL;
- }
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0005-eCryptfs-Make-truncate-path-killable.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0005-eCryptfs-Make-truncate-path-killable.patch
deleted file mode 100644
index b76eab4..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0005-eCryptfs-Make-truncate-path-killable.patch
+++ /dev/null
@@ -1,71 +0,0 @@
-From a093f99cc6e708ede0b0aa3096cb1f9b34b6a36c Mon Sep 17 00:00:00 2001
-From: Tyler Hicks <tyhicks at canonical.com>
-Date: Wed, 18 Jan 2012 18:30:04 -0600
-Subject: [PATCH 05/90] eCryptfs: Make truncate path killable
-
-commit 5e6f0d769017cc49207ef56996e42363ec26c1f0 upstream.
-
-ecryptfs_write() handles the truncation of eCryptfs inodes. It grabs a
-page, zeroes out the appropriate portions, and then encrypts the page
-before writing it to the lower filesystem. It was unkillable and due to
-the lack of sparse file support could result in tying up a large portion
-of system resources, while encrypting pages of zeros, with no way for
-the truncate operation to be stopped from userspace.
-
-This patch adds the ability for ecryptfs_write() to detect a pending
-fatal signal and return as gracefully as possible. The intent is to
-leave the lower file in a useable state, while still allowing a user to
-break out of the encryption loop. If a pending fatal signal is detected,
-the eCryptfs inode size is updated to reflect the modified inode size
-and then -EINTR is returned.
-
-Signed-off-by: Tyler Hicks <tyhicks at canonical.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/ecryptfs/read_write.c | 19 ++++++++++++++-----
- 1 file changed, 14 insertions(+), 5 deletions(-)
-
-diff --git a/fs/ecryptfs/read_write.c b/fs/ecryptfs/read_write.c
-index 3745f7c..54eb14c 100644
---- a/fs/ecryptfs/read_write.c
-+++ b/fs/ecryptfs/read_write.c
-@@ -132,6 +132,11 @@ int ecryptfs_write(struct inode *ecryptfs_inode, char *data, loff_t offset,
- size_t num_bytes = (PAGE_CACHE_SIZE - start_offset_in_page);
- size_t total_remaining_bytes = ((offset + size) - pos);
-
-+ if (fatal_signal_pending(current)) {
-+ rc = -EINTR;
-+ break;
-+ }
-+
- if (num_bytes > total_remaining_bytes)
- num_bytes = total_remaining_bytes;
- if (pos < offset) {
-@@ -193,15 +198,19 @@ int ecryptfs_write(struct inode *ecryptfs_inode, char *data, loff_t offset,
- }
- pos += num_bytes;
- }
-- if ((offset + size) > ecryptfs_file_size) {
-- i_size_write(ecryptfs_inode, (offset + size));
-+ if (pos > ecryptfs_file_size) {
-+ i_size_write(ecryptfs_inode, pos);
- if (crypt_stat->flags & ECRYPTFS_ENCRYPTED) {
-- rc = ecryptfs_write_inode_size_to_metadata(
-+ int rc2;
-+
-+ rc2 = ecryptfs_write_inode_size_to_metadata(
- ecryptfs_inode);
-- if (rc) {
-+ if (rc2) {
- printk(KERN_ERR "Problem with "
- "ecryptfs_write_inode_size_to_metadata; "
-- "rc = [%d]\n", rc);
-+ "rc = [%d]\n", rc2);
-+ if (!rc)
-+ rc = rc2;
- goto out;
- }
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0006-eCryptfs-Check-inode-changes-in-setattr.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0006-eCryptfs-Check-inode-changes-in-setattr.patch
deleted file mode 100644
index 48c3ca6..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0006-eCryptfs-Check-inode-changes-in-setattr.patch
+++ /dev/null
@@ -1,122 +0,0 @@
-From e901f21292b75d5eec1f2f979590c6413ebf18a0 Mon Sep 17 00:00:00 2001
-From: Tyler Hicks <tyhicks at canonical.com>
-Date: Thu, 19 Jan 2012 20:33:44 -0600
-Subject: [PATCH 06/90] eCryptfs: Check inode changes in setattr
-
-commit a261a03904849c3df50bd0300efb7fb3f865137d upstream.
-
-Most filesystems call inode_change_ok() very early in ->setattr(), but
-eCryptfs didn't call it at all. It allowed the lower filesystem to make
-the call in its ->setattr() function. Then, eCryptfs would copy the
-appropriate inode attributes from the lower inode to the eCryptfs inode.
-
-This patch changes that and actually calls inode_change_ok() on the
-eCryptfs inode, fairly early in ecryptfs_setattr(). Ideally, the call
-would happen earlier in ecryptfs_setattr(), but there are some possible
-inode initialization steps that must happen first.
-
-Since the call was already being made on the lower inode, the change in
-functionality should be minimal, except for the case of a file extending
-truncate call. In that case, inode_newsize_ok() was never being
-called on the eCryptfs inode. Rather than inode_newsize_ok() catching
-maximum file size errors early on, eCryptfs would encrypt zeroed pages
-and write them to the lower filesystem until the lower filesystem's
-write path caught the error in generic_write_checks(). This patch
-introduces a new function, called ecryptfs_inode_newsize_ok(), which
-checks if the new lower file size is within the appropriate limits when
-the truncate operation will be growing the lower file.
-
-In summary this change prevents eCryptfs truncate operations (and the
-resulting page encryptions), which would exceed the lower filesystem
-limits or FSIZE rlimits, from ever starting.
-
-Signed-off-by: Tyler Hicks <tyhicks at canonical.com>
-Reviewed-by: Li Wang <liwang at nudt.edu.cn>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/ecryptfs/inode.c | 48 ++++++++++++++++++++++++++++++++++++------------
- 1 file changed, 36 insertions(+), 12 deletions(-)
-
-diff --git a/fs/ecryptfs/inode.c b/fs/ecryptfs/inode.c
-index 32f90a3..d2039ca 100644
---- a/fs/ecryptfs/inode.c
-+++ b/fs/ecryptfs/inode.c
-@@ -841,18 +841,6 @@ static int truncate_upper(struct dentry *dentry, struct iattr *ia,
- size_t num_zeros = (PAGE_CACHE_SIZE
- - (ia->ia_size & ~PAGE_CACHE_MASK));
-
--
-- /*
-- * XXX(truncate) this should really happen at the begginning
-- * of ->setattr. But the code is too messy to that as part
-- * of a larger patch. ecryptfs is also totally missing out
-- * on the inode_change_ok check at the beginning of
-- * ->setattr while would include this.
-- */
-- rc = inode_newsize_ok(inode, ia->ia_size);
-- if (rc)
-- goto out;
--
- if (!(crypt_stat->flags & ECRYPTFS_ENCRYPTED)) {
- truncate_setsize(inode, ia->ia_size);
- lower_ia->ia_size = ia->ia_size;
-@@ -902,6 +890,28 @@ out:
- return rc;
- }
-
-+static int ecryptfs_inode_newsize_ok(struct inode *inode, loff_t offset)
-+{
-+ struct ecryptfs_crypt_stat *crypt_stat;
-+ loff_t lower_oldsize, lower_newsize;
-+
-+ crypt_stat = &ecryptfs_inode_to_private(inode)->crypt_stat;
-+ lower_oldsize = upper_size_to_lower_size(crypt_stat,
-+ i_size_read(inode));
-+ lower_newsize = upper_size_to_lower_size(crypt_stat, offset);
-+ if (lower_newsize > lower_oldsize) {
-+ /*
-+ * The eCryptfs inode and the new *lower* size are mixed here
-+ * because we may not have the lower i_mutex held and/or it may
-+ * not be appropriate to call inode_newsize_ok() with inodes
-+ * from other filesystems.
-+ */
-+ return inode_newsize_ok(inode, lower_newsize);
-+ }
-+
-+ return 0;
-+}
-+
- /**
- * ecryptfs_truncate
- * @dentry: The ecryptfs layer dentry
-@@ -918,6 +928,10 @@ int ecryptfs_truncate(struct dentry *dentry, loff_t new_length)
- struct iattr lower_ia = { .ia_valid = 0 };
- int rc;
-
-+ rc = ecryptfs_inode_newsize_ok(dentry->d_inode, new_length);
-+ if (rc)
-+ return rc;
-+
- rc = truncate_upper(dentry, &ia, &lower_ia);
- if (!rc && lower_ia.ia_valid & ATTR_SIZE) {
- struct dentry *lower_dentry = ecryptfs_dentry_to_lower(dentry);
-@@ -997,6 +1011,16 @@ static int ecryptfs_setattr(struct dentry *dentry, struct iattr *ia)
- }
- }
- mutex_unlock(&crypt_stat->cs_mutex);
-+
-+ rc = inode_change_ok(inode, ia);
-+ if (rc)
-+ goto out;
-+ if (ia->ia_valid & ATTR_SIZE) {
-+ rc = ecryptfs_inode_newsize_ok(inode, ia->ia_size);
-+ if (rc)
-+ goto out;
-+ }
-+
- if (S_ISREG(inode->i_mode)) {
- rc = filemap_write_and_wait(inode->i_mapping);
- if (rc)
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0007-eCryptfs-Fix-oops-when-printing-debug-info-in-extent.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0007-eCryptfs-Fix-oops-when-printing-debug-info-in-extent.patch
deleted file mode 100644
index ff2b468..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0007-eCryptfs-Fix-oops-when-printing-debug-info-in-extent.patch
+++ /dev/null
@@ -1,103 +0,0 @@
-From e59d3b46da925bd4b53d761bd7cf34aea4c7c01d Mon Sep 17 00:00:00 2001
-From: Tyler Hicks <tyhicks at canonical.com>
-Date: Tue, 24 Jan 2012 10:02:22 -0600
-Subject: [PATCH 07/90] eCryptfs: Fix oops when printing debug info in extent
- crypto functions
-
-commit 58ded24f0fcb85bddb665baba75892f6ad0f4b8a upstream.
-
-If pages passed to the eCryptfs extent-based crypto functions are not
-mapped and the module parameter ecryptfs_verbosity=1 was specified at
-loading time, a NULL pointer dereference will occur.
-
-Note that this wouldn't happen on a production system, as you wouldn't
-pass ecryptfs_verbosity=1 on a production system. It leaks private
-information to the system logs and is for debugging only.
-
-The debugging info printed in these messages is no longer very useful
-and rather than doing a kmap() in these debugging paths, it will be
-better to simply remove the debugging paths completely.
-
-https://launchpad.net/bugs/913651
-
-Signed-off-by: Tyler Hicks <tyhicks at canonical.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/ecryptfs/crypto.c | 40 ----------------------------------------
- 1 file changed, 40 deletions(-)
-
-diff --git a/fs/ecryptfs/crypto.c b/fs/ecryptfs/crypto.c
-index 2bf5203..68b19ab 100644
---- a/fs/ecryptfs/crypto.c
-+++ b/fs/ecryptfs/crypto.c
-@@ -417,17 +417,6 @@ static int ecryptfs_encrypt_extent(struct page *enc_extent_page,
- (unsigned long long)(extent_base + extent_offset), rc);
- goto out;
- }
-- if (unlikely(ecryptfs_verbosity > 0)) {
-- ecryptfs_printk(KERN_DEBUG, "Encrypting extent "
-- "with iv:\n");
-- ecryptfs_dump_hex(extent_iv, crypt_stat->iv_bytes);
-- ecryptfs_printk(KERN_DEBUG, "First 8 bytes before "
-- "encryption:\n");
-- ecryptfs_dump_hex((char *)
-- (page_address(page)
-- + (extent_offset * crypt_stat->extent_size)),
-- 8);
-- }
- rc = ecryptfs_encrypt_page_offset(crypt_stat, enc_extent_page, 0,
- page, (extent_offset
- * crypt_stat->extent_size),
-@@ -440,14 +429,6 @@ static int ecryptfs_encrypt_extent(struct page *enc_extent_page,
- goto out;
- }
- rc = 0;
-- if (unlikely(ecryptfs_verbosity > 0)) {
-- ecryptfs_printk(KERN_DEBUG, "Encrypt extent [0x%.16llx]; "
-- "rc = [%d]\n",
-- (unsigned long long)(extent_base + extent_offset), rc);
-- ecryptfs_printk(KERN_DEBUG, "First 8 bytes after "
-- "encryption:\n");
-- ecryptfs_dump_hex((char *)(page_address(enc_extent_page)), 8);
-- }
- out:
- return rc;
- }
-@@ -543,17 +524,6 @@ static int ecryptfs_decrypt_extent(struct page *page,
- (unsigned long long)(extent_base + extent_offset), rc);
- goto out;
- }
-- if (unlikely(ecryptfs_verbosity > 0)) {
-- ecryptfs_printk(KERN_DEBUG, "Decrypting extent "
-- "with iv:\n");
-- ecryptfs_dump_hex(extent_iv, crypt_stat->iv_bytes);
-- ecryptfs_printk(KERN_DEBUG, "First 8 bytes before "
-- "decryption:\n");
-- ecryptfs_dump_hex((char *)
-- (page_address(enc_extent_page)
-- + (extent_offset * crypt_stat->extent_size)),
-- 8);
-- }
- rc = ecryptfs_decrypt_page_offset(crypt_stat, page,
- (extent_offset
- * crypt_stat->extent_size),
-@@ -567,16 +537,6 @@ static int ecryptfs_decrypt_extent(struct page *page,
- goto out;
- }
- rc = 0;
-- if (unlikely(ecryptfs_verbosity > 0)) {
-- ecryptfs_printk(KERN_DEBUG, "Decrypt extent [0x%.16llx]; "
-- "rc = [%d]\n",
-- (unsigned long long)(extent_base + extent_offset), rc);
-- ecryptfs_printk(KERN_DEBUG, "First 8 bytes after "
-- "decryption:\n");
-- ecryptfs_dump_hex((char *)(page_address(page)
-- + (extent_offset
-- * crypt_stat->extent_size)), 8);
-- }
- out:
- return rc;
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0008-drm-radeon-kms-Add-an-MSI-quirk-for-Dell-RS690.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0008-drm-radeon-kms-Add-an-MSI-quirk-for-Dell-RS690.patch
deleted file mode 100644
index 36efbf5..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0008-drm-radeon-kms-Add-an-MSI-quirk-for-Dell-RS690.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 0d9bece9bc0c0aa1b42a235131921d9760857094 Mon Sep 17 00:00:00 2001
-From: Alex Deucher <alexander.deucher at amd.com>
-Date: Sun, 15 Jan 2012 08:51:12 -0500
-Subject: [PATCH 08/90] drm/radeon/kms: Add an MSI quirk for Dell RS690
-
-commit 44517c44496062180a6376cc704b33129441ce60 upstream.
-
-Interrupts only work with MSIs.
-https://bugs.freedesktop.org/show_bug.cgi?id=37679
-
-Reported-by: Dmitry Podgorny <pasis.uax at gmail.com>
-Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
-Signed-off-by: Dave Airlie <airlied at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/gpu/drm/radeon/radeon_irq_kms.c | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-diff --git a/drivers/gpu/drm/radeon/radeon_irq_kms.c b/drivers/gpu/drm/radeon/radeon_irq_kms.c
-index 8f86aeb..e7ddb49 100644
---- a/drivers/gpu/drm/radeon/radeon_irq_kms.c
-+++ b/drivers/gpu/drm/radeon/radeon_irq_kms.c
-@@ -134,6 +134,12 @@ static bool radeon_msi_ok(struct radeon_device *rdev)
- /* Dell RS690 only seems to work with MSIs. */
- if ((rdev->pdev->device == 0x791f) &&
- (rdev->pdev->subsystem_vendor == 0x1028) &&
-+ (rdev->pdev->subsystem_device == 0x01fc))
-+ return true;
-+
-+ /* Dell RS690 only seems to work with MSIs. */
-+ if ((rdev->pdev->device == 0x791f) &&
-+ (rdev->pdev->subsystem_vendor == 0x1028) &&
- (rdev->pdev->subsystem_device == 0x01fd))
- return true;
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0009-drm-radeon-kms-move-panel-mode-setup-into-encoder-mo.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0009-drm-radeon-kms-move-panel-mode-setup-into-encoder-mo.patch
deleted file mode 100644
index 1344e99..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0009-drm-radeon-kms-move-panel-mode-setup-into-encoder-mo.patch
+++ /dev/null
@@ -1,130 +0,0 @@
-From 23e60071b7982d745994f5d77128e6187a76b9b9 Mon Sep 17 00:00:00 2001
-From: Alex Deucher <alexander.deucher at amd.com>
-Date: Fri, 20 Jan 2012 15:01:29 -0500
-Subject: [PATCH 09/90] drm/radeon/kms: move panel mode setup into encoder
- mode set
-
-commit 386d4d751e8e0b4b693bb724f09aae064ee5297d upstream.
-
-Needs to happen earlier in the mode set.
-
-Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
-Signed-off-by: Dave Airlie <airlied at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/gpu/drm/radeon/atombios_dp.c | 22 ++++++++++------------
- drivers/gpu/drm/radeon/atombios_encoders.c | 11 +++++++++++
- drivers/gpu/drm/radeon/radeon_mode.h | 3 +++
- 3 files changed, 24 insertions(+), 12 deletions(-)
-
-diff --git a/drivers/gpu/drm/radeon/atombios_dp.c b/drivers/gpu/drm/radeon/atombios_dp.c
-index 6fb335a..a71557c 100644
---- a/drivers/gpu/drm/radeon/atombios_dp.c
-+++ b/drivers/gpu/drm/radeon/atombios_dp.c
-@@ -549,8 +549,8 @@ bool radeon_dp_getdpcd(struct radeon_connector *radeon_connector)
- return false;
- }
-
--static void radeon_dp_set_panel_mode(struct drm_encoder *encoder,
-- struct drm_connector *connector)
-+int radeon_dp_get_panel_mode(struct drm_encoder *encoder,
-+ struct drm_connector *connector)
- {
- struct drm_device *dev = encoder->dev;
- struct radeon_device *rdev = dev->dev_private;
-@@ -558,7 +558,7 @@ static void radeon_dp_set_panel_mode(struct drm_encoder *encoder,
- int panel_mode = DP_PANEL_MODE_EXTERNAL_DP_MODE;
-
- if (!ASIC_IS_DCE4(rdev))
-- return;
-+ return panel_mode;
-
- if (radeon_connector_encoder_get_dp_bridge_encoder_id(connector) ==
- ENCODER_OBJECT_ID_NUTMEG)
-@@ -572,14 +572,7 @@ static void radeon_dp_set_panel_mode(struct drm_encoder *encoder,
- panel_mode = DP_PANEL_MODE_INTERNAL_DP2_MODE;
- }
-
-- atombios_dig_encoder_setup(encoder,
-- ATOM_ENCODER_CMD_SETUP_PANEL_MODE,
-- panel_mode);
--
-- if ((connector->connector_type == DRM_MODE_CONNECTOR_eDP) &&
-- (panel_mode == DP_PANEL_MODE_INTERNAL_DP2_MODE)) {
-- radeon_write_dpcd_reg(radeon_connector, DP_EDP_CONFIGURATION_SET, 1);
-- }
-+ return panel_mode;
- }
-
- void radeon_dp_set_link_config(struct drm_connector *connector,
-@@ -717,6 +710,8 @@ static void radeon_dp_set_tp(struct radeon_dp_link_train_info *dp_info, int tp)
-
- static int radeon_dp_link_train_init(struct radeon_dp_link_train_info *dp_info)
- {
-+ struct radeon_encoder *radeon_encoder = to_radeon_encoder(dp_info->encoder);
-+ struct radeon_encoder_atom_dig *dig = radeon_encoder->enc_priv;
- u8 tmp;
-
- /* power up the sink */
-@@ -732,7 +727,10 @@ static int radeon_dp_link_train_init(struct radeon_dp_link_train_info *dp_info)
- radeon_write_dpcd_reg(dp_info->radeon_connector,
- DP_DOWNSPREAD_CTRL, 0);
-
-- radeon_dp_set_panel_mode(dp_info->encoder, dp_info->connector);
-+ if ((dp_info->connector->connector_type == DRM_MODE_CONNECTOR_eDP) &&
-+ (dig->panel_mode == DP_PANEL_MODE_INTERNAL_DP2_MODE)) {
-+ radeon_write_dpcd_reg(dp_info->radeon_connector, DP_EDP_CONFIGURATION_SET, 1);
-+ }
-
- /* set the lane count on the sink */
- tmp = dp_info->dp_lane_count;
-diff --git a/drivers/gpu/drm/radeon/atombios_encoders.c b/drivers/gpu/drm/radeon/atombios_encoders.c
-index 39c04c1..9dcfba0 100644
---- a/drivers/gpu/drm/radeon/atombios_encoders.c
-+++ b/drivers/gpu/drm/radeon/atombios_encoders.c
-@@ -1822,10 +1822,21 @@ radeon_atom_encoder_mode_set(struct drm_encoder *encoder,
- case ENCODER_OBJECT_ID_INTERNAL_UNIPHY2:
- case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_LVTMA:
- if (ASIC_IS_DCE4(rdev)) {
-+ struct drm_connector *connector = radeon_get_connector_for_encoder(encoder);
-+ struct radeon_encoder_atom_dig *dig = radeon_encoder->enc_priv;
-+
-+ if (!connector)
-+ dig->panel_mode = DP_PANEL_MODE_EXTERNAL_DP_MODE;
-+ else
-+ dig->panel_mode = radeon_dp_get_panel_mode(encoder, connector);
-+
- /* disable the transmitter */
- atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_DISABLE, 0, 0);
- /* setup and enable the encoder */
- atombios_dig_encoder_setup(encoder, ATOM_ENCODER_CMD_SETUP, 0);
-+ atombios_dig_encoder_setup(encoder,
-+ ATOM_ENCODER_CMD_SETUP_PANEL_MODE,
-+ dig->panel_mode);
-
- /* enable the transmitter */
- atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_ENABLE, 0, 0);
-diff --git a/drivers/gpu/drm/radeon/radeon_mode.h b/drivers/gpu/drm/radeon/radeon_mode.h
-index 2c2e75e..8254d5a 100644
---- a/drivers/gpu/drm/radeon/radeon_mode.h
-+++ b/drivers/gpu/drm/radeon/radeon_mode.h
-@@ -362,6 +362,7 @@ struct radeon_encoder_atom_dig {
- struct backlight_device *bl_dev;
- int dpms_mode;
- uint8_t backlight_level;
-+ int panel_mode;
- };
-
- struct radeon_encoder_atom_dac {
-@@ -482,6 +483,8 @@ extern void radeon_dp_link_train(struct drm_encoder *encoder,
- extern bool radeon_dp_needs_link_train(struct radeon_connector *radeon_connector);
- extern u8 radeon_dp_getsinktype(struct radeon_connector *radeon_connector);
- extern bool radeon_dp_getdpcd(struct radeon_connector *radeon_connector);
-+extern int radeon_dp_get_panel_mode(struct drm_encoder *encoder,
-+ struct drm_connector *connector);
- extern void atombios_dig_encoder_setup(struct drm_encoder *encoder, int action, int panel_mode);
- extern void radeon_atom_encoder_init(struct radeon_device *rdev);
- extern void atombios_dig_transmitter_setup(struct drm_encoder *encoder,
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0010-drm-radeon-kms-rework-modeset-sequence-for-DCE41-and.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0010-drm-radeon-kms-rework-modeset-sequence-for-DCE41-and.patch
deleted file mode 100644
index 15004b7..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0010-drm-radeon-kms-rework-modeset-sequence-for-DCE41-and.patch
+++ /dev/null
@@ -1,87 +0,0 @@
-From ac3f187119e6ce6f38675649486240029279bf08 Mon Sep 17 00:00:00 2001
-From: Alex Deucher <alexander.deucher at amd.com>
-Date: Fri, 20 Jan 2012 15:01:30 -0500
-Subject: [PATCH 10/90] drm/radeon/kms: rework modeset sequence for DCE41 and
- DCE5
-
-commit 3a47824d85eeca122895646f027dc63480994199 upstream.
-
-dig transmitter control table only has ENABLE/DISABLE actions
-on DCE4.1/DCE5.
-
-Fixes:
-https://bugs.freedesktop.org/show_bug.cgi?id=44955
-
-Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
-Signed-off-by: Dave Airlie <airlied at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/gpu/drm/radeon/atombios_encoders.c | 19 ++++++++++++-------
- 1 file changed, 12 insertions(+), 7 deletions(-)
-
-diff --git a/drivers/gpu/drm/radeon/atombios_encoders.c b/drivers/gpu/drm/radeon/atombios_encoders.c
-index 9dcfba0..0f8eb48 100644
---- a/drivers/gpu/drm/radeon/atombios_encoders.c
-+++ b/drivers/gpu/drm/radeon/atombios_encoders.c
-@@ -1352,7 +1352,8 @@ radeon_atom_encoder_dpms_dig(struct drm_encoder *encoder, int mode)
- switch (mode) {
- case DRM_MODE_DPMS_ON:
- /* some early dce3.2 boards have a bug in their transmitter control table */
-- if ((rdev->family == CHIP_RV710) || (rdev->family == CHIP_RV730))
-+ if ((rdev->family == CHIP_RV710) || (rdev->family == CHIP_RV730) ||
-+ ASIC_IS_DCE41(rdev) || ASIC_IS_DCE5(rdev))
- atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_ENABLE, 0, 0);
- else
- atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_ENABLE_OUTPUT, 0, 0);
-@@ -1362,8 +1363,6 @@ radeon_atom_encoder_dpms_dig(struct drm_encoder *encoder, int mode)
- ATOM_TRANSMITTER_ACTION_POWER_ON);
- radeon_dig_connector->edp_on = true;
- }
-- if (ASIC_IS_DCE4(rdev))
-- atombios_dig_encoder_setup(encoder, ATOM_ENCODER_CMD_DP_VIDEO_OFF, 0);
- radeon_dp_link_train(encoder, connector);
- if (ASIC_IS_DCE4(rdev))
- atombios_dig_encoder_setup(encoder, ATOM_ENCODER_CMD_DP_VIDEO_ON, 0);
-@@ -1374,7 +1373,10 @@ radeon_atom_encoder_dpms_dig(struct drm_encoder *encoder, int mode)
- case DRM_MODE_DPMS_STANDBY:
- case DRM_MODE_DPMS_SUSPEND:
- case DRM_MODE_DPMS_OFF:
-- atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_DISABLE_OUTPUT, 0, 0);
-+ if (ASIC_IS_DCE41(rdev) || ASIC_IS_DCE5(rdev))
-+ atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_DISABLE, 0, 0);
-+ else
-+ atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_DISABLE_OUTPUT, 0, 0);
- if (ENCODER_MODE_IS_DP(atombios_get_encoder_mode(encoder)) && connector) {
- if (ASIC_IS_DCE4(rdev))
- atombios_dig_encoder_setup(encoder, ATOM_ENCODER_CMD_DP_VIDEO_OFF, 0);
-@@ -1821,7 +1823,7 @@ radeon_atom_encoder_mode_set(struct drm_encoder *encoder,
- case ENCODER_OBJECT_ID_INTERNAL_UNIPHY1:
- case ENCODER_OBJECT_ID_INTERNAL_UNIPHY2:
- case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_LVTMA:
-- if (ASIC_IS_DCE4(rdev)) {
-+ if (ASIC_IS_DCE41(rdev) || ASIC_IS_DCE5(rdev)) {
- struct drm_connector *connector = radeon_get_connector_for_encoder(encoder);
- struct radeon_encoder_atom_dig *dig = radeon_encoder->enc_priv;
-
-@@ -1830,13 +1832,16 @@ radeon_atom_encoder_mode_set(struct drm_encoder *encoder,
- else
- dig->panel_mode = radeon_dp_get_panel_mode(encoder, connector);
-
-- /* disable the transmitter */
-- atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_DISABLE, 0, 0);
- /* setup and enable the encoder */
- atombios_dig_encoder_setup(encoder, ATOM_ENCODER_CMD_SETUP, 0);
- atombios_dig_encoder_setup(encoder,
- ATOM_ENCODER_CMD_SETUP_PANEL_MODE,
- dig->panel_mode);
-+ } else if (ASIC_IS_DCE4(rdev)) {
-+ /* disable the transmitter */
-+ atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_DISABLE, 0, 0);
-+ /* setup and enable the encoder */
-+ atombios_dig_encoder_setup(encoder, ATOM_ENCODER_CMD_SETUP, 0);
-
- /* enable the transmitter */
- atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_ENABLE, 0, 0);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0011-drm-Fix-authentication-kernel-crash.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0011-drm-Fix-authentication-kernel-crash.patch
deleted file mode 100644
index 4d9d4fe..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0011-drm-Fix-authentication-kernel-crash.patch
+++ /dev/null
@@ -1,91 +0,0 @@
-From 37983212fe7c26155958f760ff006dfe8ce14d0c Mon Sep 17 00:00:00 2001
-From: Thomas Hellstrom <thellstrom at vmware.com>
-Date: Tue, 24 Jan 2012 18:54:21 +0100
-Subject: [PATCH 11/90] drm: Fix authentication kernel crash
-
-commit 598781d71119827b454fd75d46f84755bca6f0c6 upstream.
-
-If the master tries to authenticate a client using drm_authmagic and
-that client has already closed its drm file descriptor,
-either wilfully or because it was terminated, the
-call to drm_authmagic will dereference a stale pointer into kmalloc'ed memory
-and corrupt it.
-
-Typically this results in a hard system hang.
-
-This patch fixes that problem by removing any authentication tokens
-(struct drm_magic_entry) open for a file descriptor when that file
-descriptor is closed.
-
-Signed-off-by: Thomas Hellstrom <thellstrom at vmware.com>
-Reviewed-by: Daniel Vetter <daniel.vetter at ffwll.ch>
-Signed-off-by: Dave Airlie <airlied at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/gpu/drm/drm_auth.c | 6 +++++-
- drivers/gpu/drm/drm_fops.c | 5 +++++
- include/drm/drmP.h | 1 +
- 3 files changed, 11 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/gpu/drm/drm_auth.c b/drivers/gpu/drm/drm_auth.c
-index 3f46772..ba23790 100644
---- a/drivers/gpu/drm/drm_auth.c
-+++ b/drivers/gpu/drm/drm_auth.c
-@@ -101,7 +101,7 @@ static int drm_add_magic(struct drm_master *master, struct drm_file *priv,
- * Searches and unlinks the entry in drm_device::magiclist with the magic
- * number hash key, while holding the drm_device::struct_mutex lock.
- */
--static int drm_remove_magic(struct drm_master *master, drm_magic_t magic)
-+int drm_remove_magic(struct drm_master *master, drm_magic_t magic)
- {
- struct drm_magic_entry *pt;
- struct drm_hash_item *hash;
-@@ -136,6 +136,8 @@ static int drm_remove_magic(struct drm_master *master, drm_magic_t magic)
- * If there is a magic number in drm_file::magic then use it, otherwise
- * searches an unique non-zero magic number and add it associating it with \p
- * file_priv.
-+ * This ioctl needs protection by the drm_global_mutex, which protects
-+ * struct drm_file::magic and struct drm_magic_entry::priv.
- */
- int drm_getmagic(struct drm_device *dev, void *data, struct drm_file *file_priv)
- {
-@@ -173,6 +175,8 @@ int drm_getmagic(struct drm_device *dev, void *data, struct drm_file *file_priv)
- * \return zero if authentication successed, or a negative number otherwise.
- *
- * Checks if \p file_priv is associated with the magic number passed in \arg.
-+ * This ioctl needs protection by the drm_global_mutex, which protects
-+ * struct drm_file::magic and struct drm_magic_entry::priv.
- */
- int drm_authmagic(struct drm_device *dev, void *data,
- struct drm_file *file_priv)
-diff --git a/drivers/gpu/drm/drm_fops.c b/drivers/gpu/drm/drm_fops.c
-index 4911e1d..828bf65 100644
---- a/drivers/gpu/drm/drm_fops.c
-+++ b/drivers/gpu/drm/drm_fops.c
-@@ -487,6 +487,11 @@ int drm_release(struct inode *inode, struct file *filp)
- (long)old_encode_dev(file_priv->minor->device),
- dev->open_count);
-
-+ /* Release any auth tokens that might point to this file_priv,
-+ (do that under the drm_global_mutex) */
-+ if (file_priv->magic)
-+ (void) drm_remove_magic(file_priv->master, file_priv->magic);
-+
- /* if the master has gone away we can't do anything with the lock */
- if (file_priv->minor->master)
- drm_master_release(dev, filp);
-diff --git a/include/drm/drmP.h b/include/drm/drmP.h
-index 1f9e951..bf4b2dc 100644
---- a/include/drm/drmP.h
-+++ b/include/drm/drmP.h
-@@ -1328,6 +1328,7 @@ extern int drm_getmagic(struct drm_device *dev, void *data,
- struct drm_file *file_priv);
- extern int drm_authmagic(struct drm_device *dev, void *data,
- struct drm_file *file_priv);
-+extern int drm_remove_magic(struct drm_master *master, drm_magic_t magic);
-
- /* Cache management (drm_cache.c) */
- void drm_clflush_pages(struct page *pages[], unsigned long num_pages);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0012-xfs-Fix-missing-xfs_iunlock-on-error-recovery-path-i.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0012-xfs-Fix-missing-xfs_iunlock-on-error-recovery-path-i.patch
deleted file mode 100644
index d7fda92..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0012-xfs-Fix-missing-xfs_iunlock-on-error-recovery-path-i.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From e312b80f6b940d2ed0097fb49c831f69c4e0b530 Mon Sep 17 00:00:00 2001
-From: Jan Kara <jack at suse.cz>
-Date: Wed, 11 Jan 2012 18:52:10 +0000
-Subject: [PATCH 12/90] xfs: Fix missing xfs_iunlock() on error recovery path
- in xfs_readlink()
-
-commit 9b025eb3a89e041bab6698e3858706be2385d692 upstream.
-
-Commit b52a360b forgot to call xfs_iunlock() when it detected corrupted
-symplink and bailed out. Fix it by jumping to 'out' instead of doing return.
-
-CC: Carlos Maiolino <cmaiolino at redhat.com>
-Signed-off-by: Jan Kara <jack at suse.cz>
-Reviewed-by: Alex Elder <elder at kernel.org>
-Reviewed-by: Dave Chinner <dchinner at redhat.com>
-Signed-off-by: Ben Myers <bpm at sgi.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/xfs/xfs_vnodeops.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/fs/xfs/xfs_vnodeops.c b/fs/xfs/xfs_vnodeops.c
-index ce9268a..ee98d0b 100644
---- a/fs/xfs/xfs_vnodeops.c
-+++ b/fs/xfs/xfs_vnodeops.c
-@@ -131,7 +131,8 @@ xfs_readlink(
- __func__, (unsigned long long) ip->i_ino,
- (long long) pathlen);
- ASSERT(0);
-- return XFS_ERROR(EFSCORRUPTED);
-+ error = XFS_ERROR(EFSCORRUPTED);
-+ goto out;
- }
-
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0013-ASoC-Mark-WM5100-register-map-cache-only-when-going-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0013-ASoC-Mark-WM5100-register-map-cache-only-when-going-.patch
deleted file mode 100644
index bec56bb..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0013-ASoC-Mark-WM5100-register-map-cache-only-when-going-.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 14978edef346a4da6f65f808c1b0ee631f209248 Mon Sep 17 00:00:00 2001
-From: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Date: Wed, 18 Jan 2012 20:02:38 +0000
-Subject: [PATCH 13/90] ASoC: Mark WM5100 register map cache only when going
- into BIAS_OFF
-
-commit e53e417331c57b9b97e3f8be870214a02c99265c upstream.
-
-Writing to the registers won't work if we do actually manage to hit a fully
-powered off state.
-
-Signed-off-by: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- sound/soc/codecs/wm5100.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/sound/soc/codecs/wm5100.c b/sound/soc/codecs/wm5100.c
-index 42d9039..19c26d2 100644
---- a/sound/soc/codecs/wm5100.c
-+++ b/sound/soc/codecs/wm5100.c
-@@ -1404,6 +1404,7 @@ static int wm5100_set_bias_level(struct snd_soc_codec *codec,
- break;
-
- case SND_SOC_BIAS_OFF:
-+ regcache_cache_only(wm5100->regmap, true);
- if (wm5100->pdata.ldo_ena)
- gpio_set_value_cansleep(wm5100->pdata.ldo_ena, 0);
- regulator_bulk_disable(ARRAY_SIZE(wm5100->core_supplies),
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0014-ASoC-Disable-register-synchronisation-for-low-freque.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0014-ASoC-Disable-register-synchronisation-for-low-freque.patch
deleted file mode 100644
index 418b725..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0014-ASoC-Disable-register-synchronisation-for-low-freque.patch
+++ /dev/null
@@ -1,66 +0,0 @@
-From 066b0d442cb2c0bf72d3cf1ab85079ebf9f42973 Mon Sep 17 00:00:00 2001
-From: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Date: Wed, 18 Jan 2012 19:17:06 +0000
-Subject: [PATCH 14/90] ASoC: Disable register synchronisation for low
- frequency WM8996 SYSCLK
-
-commit fed22007113cb857e917913ce016d9b539dc3a80 upstream.
-
-With a low frequency SYSCLK and a fast I2C clock register synchronisation
-may occasionally take too long to take effect, causing I/O issues. Disable
-synchronisation in order to avoid any issues.
-
-Signed-off-by: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- sound/soc/codecs/wm8996.c | 4 ++++
- sound/soc/codecs/wm8996.h | 4 ++++
- 2 files changed, 8 insertions(+)
-
-diff --git a/sound/soc/codecs/wm8996.c b/sound/soc/codecs/wm8996.c
-index a33b04d..e2afc05 100644
---- a/sound/soc/codecs/wm8996.c
-+++ b/sound/soc/codecs/wm8996.c
-@@ -1932,6 +1932,7 @@ static int wm8996_set_sysclk(struct snd_soc_dai *dai,
- struct wm8996_priv *wm8996 = snd_soc_codec_get_drvdata(codec);
- int lfclk = 0;
- int ratediv = 0;
-+ int sync = WM8996_REG_SYNC;
- int src;
- int old;
-
-@@ -1976,6 +1977,7 @@ static int wm8996_set_sysclk(struct snd_soc_dai *dai,
- case 32000:
- case 32768:
- lfclk = WM8996_LFCLK_ENA;
-+ sync = 0;
- break;
- default:
- dev_warn(codec->dev, "Unsupported clock rate %dHz\n",
-@@ -1989,6 +1991,8 @@ static int wm8996_set_sysclk(struct snd_soc_dai *dai,
- WM8996_SYSCLK_SRC_MASK | WM8996_SYSCLK_DIV_MASK,
- src << WM8996_SYSCLK_SRC_SHIFT | ratediv);
- snd_soc_update_bits(codec, WM8996_CLOCKING_1, WM8996_LFCLK_ENA, lfclk);
-+ snd_soc_update_bits(codec, WM8996_CONTROL_INTERFACE_1,
-+ WM8996_REG_SYNC, sync);
- snd_soc_update_bits(codec, WM8996_AIF_CLOCKING_1,
- WM8996_SYSCLK_ENA, old);
-
-diff --git a/sound/soc/codecs/wm8996.h b/sound/soc/codecs/wm8996.h
-index 0fde643..de9ac3e 100644
---- a/sound/soc/codecs/wm8996.h
-+++ b/sound/soc/codecs/wm8996.h
-@@ -1567,6 +1567,10 @@ int wm8996_detect(struct snd_soc_codec *codec, struct snd_soc_jack *jack,
- /*
- * R257 (0x101) - Control Interface (1)
- */
-+#define WM8996_REG_SYNC 0x8000 /* REG_SYNC */
-+#define WM8996_REG_SYNC_MASK 0x8000 /* REG_SYNC */
-+#define WM8996_REG_SYNC_SHIFT 15 /* REG_SYNC */
-+#define WM8996_REG_SYNC_WIDTH 1 /* REG_SYNC */
- #define WM8996_AUTO_INC 0x0004 /* AUTO_INC */
- #define WM8996_AUTO_INC_MASK 0x0004 /* AUTO_INC */
- #define WM8996_AUTO_INC_SHIFT 2 /* AUTO_INC */
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0015-ASoC-Don-t-go-through-cache-when-applying-WM5100-rev.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0015-ASoC-Don-t-go-through-cache-when-applying-WM5100-rev.patch
deleted file mode 100644
index 77599ac..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0015-ASoC-Don-t-go-through-cache-when-applying-WM5100-rev.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 2c59f1802fdef197bb6e01d9675a1354e76b6ce7 Mon Sep 17 00:00:00 2001
-From: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Date: Thu, 19 Jan 2012 11:16:37 +0000
-Subject: [PATCH 15/90] ASoC: Don't go through cache when applying WM5100 rev
- A updates
-
-commit 495174a8ffbaa0d15153d855cf206cdc46d51cf4 upstream.
-
-These are all to either uncached registers or fixes to register defaults,
-in the former case the cache won't do anything and in the latter case
-we're fixing things so the cache sync will do the right thing.
-
-Signed-off-by: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- sound/soc/codecs/wm5100.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/sound/soc/codecs/wm5100.c b/sound/soc/codecs/wm5100.c
-index 19c26d2..d0beeec 100644
---- a/sound/soc/codecs/wm5100.c
-+++ b/sound/soc/codecs/wm5100.c
-@@ -1379,6 +1379,7 @@ static int wm5100_set_bias_level(struct snd_soc_codec *codec,
-
- switch (wm5100->rev) {
- case 0:
-+ regcache_cache_bypass(wm5100->regmap, true);
- snd_soc_write(codec, 0x11, 0x3);
- snd_soc_write(codec, 0x203, 0xc);
- snd_soc_write(codec, 0x206, 0);
-@@ -1394,6 +1395,7 @@ static int wm5100_set_bias_level(struct snd_soc_codec *codec,
- snd_soc_write(codec,
- wm5100_reva_patches[i].reg,
- wm5100_reva_patches[i].val);
-+ regcache_cache_bypass(wm5100->regmap, false);
- break;
- default:
- break;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0016-ASoC-wm8996-Call-_POST_PMU-callback-for-CPVDD.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0016-ASoC-wm8996-Call-_POST_PMU-callback-for-CPVDD.patch
deleted file mode 100644
index 9ad0f29..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0016-ASoC-wm8996-Call-_POST_PMU-callback-for-CPVDD.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From b76642c53d6bad73ed8e4a8e7634ff7f7c366e43 Mon Sep 17 00:00:00 2001
-From: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Date: Sat, 21 Jan 2012 21:48:53 +0000
-Subject: [PATCH 16/90] ASoC: wm8996: Call _POST_PMU callback for CPVDD
-
-commit a14304edcd5e8323205db34b08f709feb5357e64 upstream.
-
-We should be allowing a 5ms delay after the charge pump is started in
-order to ensure it has finished ramping.
-
-Signed-off-by: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- sound/soc/codecs/wm8996.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/sound/soc/codecs/wm8996.c b/sound/soc/codecs/wm8996.c
-index e2afc05..6d98a57 100644
---- a/sound/soc/codecs/wm8996.c
-+++ b/sound/soc/codecs/wm8996.c
-@@ -1049,7 +1049,8 @@ SND_SOC_DAPM_SUPPLY_S("SYSCLK", 1, WM8996_AIF_CLOCKING_1, 0, 0, NULL, 0),
- SND_SOC_DAPM_SUPPLY_S("SYSDSPCLK", 2, WM8996_CLOCKING_1, 1, 0, NULL, 0),
- SND_SOC_DAPM_SUPPLY_S("AIFCLK", 2, WM8996_CLOCKING_1, 2, 0, NULL, 0),
- SND_SOC_DAPM_SUPPLY_S("Charge Pump", 2, WM8996_CHARGE_PUMP_1, 15, 0, cp_event,
-- SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD),
-+ SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMU |
-+ SND_SOC_DAPM_POST_PMD),
- SND_SOC_DAPM_SUPPLY("Bandgap", SND_SOC_NOPM, 0, 0, bg_event,
- SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD),
- SND_SOC_DAPM_SUPPLY("LDO2", WM8996_POWER_MANAGEMENT_2, 1, 0, NULL, 0),
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0017-brcmsmac-fix-tx-queue-flush-infinite-loop.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0017-brcmsmac-fix-tx-queue-flush-infinite-loop.patch
deleted file mode 100644
index f6055be..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0017-brcmsmac-fix-tx-queue-flush-infinite-loop.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From 1e48fb52d84ac159da93ea80f54c02cef5464f12 Mon Sep 17 00:00:00 2001
-From: Stanislaw Gruszka <sgruszka at redhat.com>
-Date: Tue, 17 Jan 2012 12:38:50 +0100
-Subject: [PATCH 17/90] brcmsmac: fix tx queue flush infinite loop
-
-commit f96b08a7e6f69c0f0a576554df3df5b1b519c479 upstream.
-
-This patch workaround live deadlock problem caused by infinite loop
-in brcms_c_wait_for_tx_completion(). I do not consider the patch as
-the proper fix, which should fix the real reason of tx queue flush
-failure, but patch helps with system lockup.
-
-Reference:
-https://bugzilla.kernel.org/show_bug.cgi?id=42576
-
-Reported-and-tested-by: Patrick <ragamuffin at datacomm.ch>
-Signed-off-by: Stanislaw Gruszka <sgruszka at redhat.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/net/wireless/brcm80211/brcmsmac/main.c | 10 +++++++++-
- 1 file changed, 9 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/net/wireless/brcm80211/brcmsmac/main.c b/drivers/net/wireless/brcm80211/brcmsmac/main.c
-index 510e9bb..453f58e 100644
---- a/drivers/net/wireless/brcm80211/brcmsmac/main.c
-+++ b/drivers/net/wireless/brcm80211/brcmsmac/main.c
-@@ -8217,13 +8217,21 @@ int brcms_c_get_curband(struct brcms_c_info *wlc)
-
- void brcms_c_wait_for_tx_completion(struct brcms_c_info *wlc, bool drop)
- {
-+ int timeout = 20;
-+
- /* flush packet queue when requested */
- if (drop)
- brcmu_pktq_flush(&wlc->pkt_queue->q, false, NULL, NULL);
-
- /* wait for queue and DMA fifos to run dry */
-- while (!pktq_empty(&wlc->pkt_queue->q) || brcms_txpktpendtot(wlc) > 0)
-+ while (!pktq_empty(&wlc->pkt_queue->q) || brcms_txpktpendtot(wlc) > 0) {
- brcms_msleep(wlc->wl, 1);
-+
-+ if (--timeout == 0)
-+ break;
-+ }
-+
-+ WARN_ON_ONCE(timeout == 0);
- }
-
- void brcms_c_set_beacon_listen_interval(struct brcms_c_info *wlc, u8 interval)
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0018-mac80211-fix-work-removal-on-deauth-request.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0018-mac80211-fix-work-removal-on-deauth-request.patch
deleted file mode 100644
index b8479b2..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0018-mac80211-fix-work-removal-on-deauth-request.patch
+++ /dev/null
@@ -1,111 +0,0 @@
-From a4dc17d578486fb19207d32f2beb5d6526089777 Mon Sep 17 00:00:00 2001
-From: Johannes Berg <johannes.berg at intel.com>
-Date: Wed, 18 Jan 2012 14:10:25 +0100
-Subject: [PATCH 18/90] mac80211: fix work removal on deauth request
-
-commit bc4934bc61d0a11fd62c5187ff83645628f8be8b upstream.
-
-When deauth is requested while an auth or assoc
-work item is in progress, we currently delete it
-without regard for any state it might need to
-clean up. Fix it by cleaning up for those items.
-
-In the case Pontus found, the problem manifested
-itself as such:
-
-authenticate with 00:23:69:aa:dd:7b (try 1)
-authenticated
-failed to insert Dummy STA entry for the AP (error -17)
-deauthenticating from 00:23:69:aa:dd:7b by local choice (reason=2)
-
-It could also happen differently if the driver
-uses the tx_sync callback.
-
-We can't just call the ->done() method of the work
-items because that will lock up due to the locking
-in cfg80211. This fix isn't very clean, but that
-seems acceptable since I have patches pending to
-remove this code completely.
-
-Reported-by: Pontus Fuchs <pontus.fuchs at gmail.com>
-Tested-by: Pontus Fuchs <pontus.fuchs at gmail.com>
-Signed-off-by: Johannes Berg <johannes.berg at intel.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- net/mac80211/mlme.c | 38 +++++++++++++++++++++++++++-----------
- 1 file changed, 27 insertions(+), 11 deletions(-)
-
-diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
-index b1b1bb3..9da8626 100644
---- a/net/mac80211/mlme.c
-+++ b/net/mac80211/mlme.c
-@@ -2719,7 +2719,6 @@ int ieee80211_mgd_deauth(struct ieee80211_sub_if_data *sdata,
- {
- struct ieee80211_local *local = sdata->local;
- struct ieee80211_if_managed *ifmgd = &sdata->u.mgd;
-- struct ieee80211_work *wk;
- u8 bssid[ETH_ALEN];
- bool assoc_bss = false;
-
-@@ -2732,30 +2731,47 @@ int ieee80211_mgd_deauth(struct ieee80211_sub_if_data *sdata,
- assoc_bss = true;
- } else {
- bool not_auth_yet = false;
-+ struct ieee80211_work *tmp, *wk = NULL;
-
- mutex_unlock(&ifmgd->mtx);
-
- mutex_lock(&local->mtx);
-- list_for_each_entry(wk, &local->work_list, list) {
-- if (wk->sdata != sdata)
-+ list_for_each_entry(tmp, &local->work_list, list) {
-+ if (tmp->sdata != sdata)
- continue;
-
-- if (wk->type != IEEE80211_WORK_DIRECT_PROBE &&
-- wk->type != IEEE80211_WORK_AUTH &&
-- wk->type != IEEE80211_WORK_ASSOC &&
-- wk->type != IEEE80211_WORK_ASSOC_BEACON_WAIT)
-+ if (tmp->type != IEEE80211_WORK_DIRECT_PROBE &&
-+ tmp->type != IEEE80211_WORK_AUTH &&
-+ tmp->type != IEEE80211_WORK_ASSOC &&
-+ tmp->type != IEEE80211_WORK_ASSOC_BEACON_WAIT)
- continue;
-
-- if (memcmp(req->bss->bssid, wk->filter_ta, ETH_ALEN))
-+ if (memcmp(req->bss->bssid, tmp->filter_ta, ETH_ALEN))
- continue;
-
-- not_auth_yet = wk->type == IEEE80211_WORK_DIRECT_PROBE;
-- list_del_rcu(&wk->list);
-- free_work(wk);
-+ not_auth_yet = tmp->type == IEEE80211_WORK_DIRECT_PROBE;
-+ list_del_rcu(&tmp->list);
-+ synchronize_rcu();
-+ wk = tmp;
- break;
- }
- mutex_unlock(&local->mtx);
-
-+ if (wk && wk->type == IEEE80211_WORK_ASSOC) {
-+ /* clean up dummy sta & TX sync */
-+ sta_info_destroy_addr(wk->sdata, wk->filter_ta);
-+ if (wk->assoc.synced)
-+ drv_finish_tx_sync(local, wk->sdata,
-+ wk->filter_ta,
-+ IEEE80211_TX_SYNC_ASSOC);
-+ } else if (wk && wk->type == IEEE80211_WORK_AUTH) {
-+ if (wk->probe_auth.synced)
-+ drv_finish_tx_sync(local, wk->sdata,
-+ wk->filter_ta,
-+ IEEE80211_TX_SYNC_AUTH);
-+ }
-+ kfree(wk);
-+
- /*
- * If somebody requests authentication and we haven't
- * sent out an auth frame yet there's no need to send
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0019-jbd-Issue-cache-flush-after-checkpointing.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0019-jbd-Issue-cache-flush-after-checkpointing.patch
deleted file mode 100644
index 1aa88e3..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0019-jbd-Issue-cache-flush-after-checkpointing.patch
+++ /dev/null
@@ -1,118 +0,0 @@
-From ccefed38352627d9136c3010878cfce33a2e009d Mon Sep 17 00:00:00 2001
-From: Jan Kara <jack at suse.cz>
-Date: Sat, 26 Nov 2011 00:35:39 +0100
-Subject: [PATCH 19/90] jbd: Issue cache flush after checkpointing
-
-commit 353b67d8ced4dc53281c88150ad295e24bc4b4c5 upstream.
-
-When we reach cleanup_journal_tail(), there is no guarantee that
-checkpointed buffers are on a stable storage - especially if buffers were
-written out by log_do_checkpoint(), they are likely to be only in disk's
-caches. Thus when we update journal superblock, effectively removing old
-transaction from journal, this write of superblock can get to stable storage
-before those checkpointed buffers which can result in filesystem corruption
-after a crash.
-
-A similar problem can happen if we replay the journal and wipe it before
-flushing disk's caches.
-
-Thus we must unconditionally issue a cache flush before we update journal
-superblock in these cases. The fix is slightly complicated by the fact that we
-have to get log tail before we issue cache flush but we can store it in the
-journal superblock only after the cache flush. Otherwise we risk races where
-new tail is written before appropriate cache flush is finished.
-
-I managed to reproduce the corruption using somewhat tweaked Chris Mason's
-barrier-test scheduler. Also this should fix occasional reports of 'Bit already
-freed' filesystem errors which are totally unreproducible but inspection of
-several fs images I've gathered over time points to a problem like this.
-
-Signed-off-by: Jan Kara <jack at suse.cz>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/jbd/checkpoint.c | 27 ++++++++++++++++++++++-----
- fs/jbd/recovery.c | 4 ++++
- 2 files changed, 26 insertions(+), 5 deletions(-)
-
-diff --git a/fs/jbd/checkpoint.c b/fs/jbd/checkpoint.c
-index 5d1a00a..05f0754 100644
---- a/fs/jbd/checkpoint.c
-+++ b/fs/jbd/checkpoint.c
-@@ -453,8 +453,6 @@ out:
- *
- * Return <0 on error, 0 on success, 1 if there was nothing to clean up.
- *
-- * Called with the journal lock held.
-- *
- * This is the only part of the journaling code which really needs to be
- * aware of transaction aborts. Checkpointing involves writing to the
- * main filesystem area rather than to the journal, so it can proceed
-@@ -472,13 +470,14 @@ int cleanup_journal_tail(journal_t *journal)
- if (is_journal_aborted(journal))
- return 1;
-
-- /* OK, work out the oldest transaction remaining in the log, and
-+ /*
-+ * OK, work out the oldest transaction remaining in the log, and
- * the log block it starts at.
- *
- * If the log is now empty, we need to work out which is the
- * next transaction ID we will write, and where it will
-- * start. */
--
-+ * start.
-+ */
- spin_lock(&journal->j_state_lock);
- spin_lock(&journal->j_list_lock);
- transaction = journal->j_checkpoint_transactions;
-@@ -504,7 +503,25 @@ int cleanup_journal_tail(journal_t *journal)
- spin_unlock(&journal->j_state_lock);
- return 1;
- }
-+ spin_unlock(&journal->j_state_lock);
-+
-+ /*
-+ * We need to make sure that any blocks that were recently written out
-+ * --- perhaps by log_do_checkpoint() --- are flushed out before we
-+ * drop the transactions from the journal. It's unlikely this will be
-+ * necessary, especially with an appropriately sized journal, but we
-+ * need this to guarantee correctness. Fortunately
-+ * cleanup_journal_tail() doesn't get called all that often.
-+ */
-+ if (journal->j_flags & JFS_BARRIER)
-+ blkdev_issue_flush(journal->j_fs_dev, GFP_KERNEL, NULL);
-
-+ spin_lock(&journal->j_state_lock);
-+ if (!tid_gt(first_tid, journal->j_tail_sequence)) {
-+ spin_unlock(&journal->j_state_lock);
-+ /* Someone else cleaned up journal so return 0 */
-+ return 0;
-+ }
- /* OK, update the superblock to recover the freed space.
- * Physical blocks come first: have we wrapped beyond the end of
- * the log? */
-diff --git a/fs/jbd/recovery.c b/fs/jbd/recovery.c
-index 5b43e96..008bf06 100644
---- a/fs/jbd/recovery.c
-+++ b/fs/jbd/recovery.c
-@@ -20,6 +20,7 @@
- #include <linux/fs.h>
- #include <linux/jbd.h>
- #include <linux/errno.h>
-+#include <linux/blkdev.h>
- #endif
-
- /*
-@@ -263,6 +264,9 @@ int journal_recover(journal_t *journal)
- err2 = sync_blockdev(journal->j_fs_dev);
- if (!err)
- err = err2;
-+ /* Flush disk caches to get replayed data on the permanent storage */
-+ if (journal->j_flags & JFS_BARRIER)
-+ blkdev_issue_flush(journal->j_fs_dev, GFP_KERNEL, NULL);
-
- return err;
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0020-crypto-sha512-make-it-work-undo-percpu-message-sched.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0020-crypto-sha512-make-it-work-undo-percpu-message-sched.patch
deleted file mode 100644
index f7f5607..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0020-crypto-sha512-make-it-work-undo-percpu-message-sched.patch
+++ /dev/null
@@ -1,78 +0,0 @@
-From 00aa91c49e1d8278061eee9e1a7592fbe1ea8fa1 Mon Sep 17 00:00:00 2001
-From: Alexey Dobriyan <adobriyan at gmail.com>
-Date: Sat, 14 Jan 2012 21:27:37 +0300
-Subject: [PATCH 20/90] crypto: sha512 - make it work, undo percpu message
- schedule
-
-commit 84e31fdb7c797a7303e0cc295cb9bc8b73fb872d upstream.
-
-commit f9e2bca6c22d75a289a349f869701214d63b5060
-aka "crypto: sha512 - Move message schedule W[80] to static percpu area"
-created global message schedule area.
-
-If sha512_update will ever be entered twice, hash will be silently
-calculated incorrectly.
-
-Probably the easiest way to notice incorrect hashes being calculated is
-to run 2 ping floods over AH with hmac(sha512):
-
- #!/usr/sbin/setkey -f
- flush;
- spdflush;
- add IP1 IP2 ah 25 -A hmac-sha512 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000025;
- add IP2 IP1 ah 52 -A hmac-sha512 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000052;
- spdadd IP1 IP2 any -P out ipsec ah/transport//require;
- spdadd IP2 IP1 any -P in ipsec ah/transport//require;
-
-XfrmInStateProtoError will start ticking with -EBADMSG being returned
-from ah_input(). This never happens with, say, hmac(sha1).
-
-With patch applied (on BOTH sides), XfrmInStateProtoError does not tick
-with multiple bidirectional ping flood streams like it doesn't tick
-with SHA-1.
-
-After this patch sha512_transform() will start using ~750 bytes of stack on x86_64.
-This is OK for simple loads, for something more heavy, stack reduction will be done
-separatedly.
-
-Signed-off-by: Alexey Dobriyan <adobriyan at gmail.com>
-Signed-off-by: Herbert Xu <herbert at gondor.apana.org.au>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- crypto/sha512_generic.c | 6 +-----
- 1 file changed, 1 insertion(+), 5 deletions(-)
-
-diff --git a/crypto/sha512_generic.c b/crypto/sha512_generic.c
-index 9ed9f60..8b9035b 100644
---- a/crypto/sha512_generic.c
-+++ b/crypto/sha512_generic.c
-@@ -21,8 +21,6 @@
- #include <linux/percpu.h>
- #include <asm/byteorder.h>
-
--static DEFINE_PER_CPU(u64[80], msg_schedule);
--
- static inline u64 Ch(u64 x, u64 y, u64 z)
- {
- return z ^ (x & (y ^ z));
-@@ -89,7 +87,7 @@ sha512_transform(u64 *state, const u8 *input)
- u64 a, b, c, d, e, f, g, h, t1, t2;
-
- int i;
-- u64 *W = get_cpu_var(msg_schedule);
-+ u64 W[80];
-
- /* load the input */
- for (i = 0; i < 16; i++)
-@@ -128,8 +126,6 @@ sha512_transform(u64 *state, const u8 *input)
-
- /* erase our data */
- a = b = c = d = e = f = g = h = t1 = t2 = 0;
-- memset(W, 0, sizeof(__get_cpu_var(msg_schedule)));
-- put_cpu_var(msg_schedule);
- }
-
- static int
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0021-crypto-sha512-reduce-stack-usage-to-safe-number.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0021-crypto-sha512-reduce-stack-usage-to-safe-number.patch
deleted file mode 100644
index f9cd9be..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0021-crypto-sha512-reduce-stack-usage-to-safe-number.patch
+++ /dev/null
@@ -1,129 +0,0 @@
-From 3c9d63758798b951767cd63682532a4e60386c63 Mon Sep 17 00:00:00 2001
-From: Alexey Dobriyan <adobriyan at gmail.com>
-Date: Sat, 14 Jan 2012 21:40:57 +0300
-Subject: [PATCH 21/90] crypto: sha512 - reduce stack usage to safe number
-
-commit 51fc6dc8f948047364f7d42a4ed89b416c6cc0a3 upstream.
-
-For rounds 16--79, W[i] only depends on W[i - 2], W[i - 7], W[i - 15] and W[i - 16].
-Consequently, keeping all W[80] array on stack is unnecessary,
-only 16 values are really needed.
-
-Using W[16] instead of W[80] greatly reduces stack usage
-(~750 bytes to ~340 bytes on x86_64).
-
-Line by line explanation:
-* BLEND_OP
- array is "circular" now, all indexes have to be modulo 16.
- Round number is positive, so remainder operation should be
- without surprises.
-
-* initial full message scheduling is trimmed to first 16 values which
- come from data block, the rest is calculated before it's needed.
-
-* original loop body is unrolled version of new SHA512_0_15 and
- SHA512_16_79 macros, unrolling was done to not do explicit variable
- renaming. Otherwise it's the very same code after preprocessing.
- See sha1_transform() code which does the same trick.
-
-Patch survives in-tree crypto test and original bugreport test
-(ping flood with hmac(sha512).
-
-See FIPS 180-2 for SHA-512 definition
-http://csrc.nist.gov/publications/fips/fips180-2/fips180-2withchangenotice.pdf
-
-Signed-off-by: Alexey Dobriyan <adobriyan at gmail.com>
-Signed-off-by: Herbert Xu <herbert at gondor.apana.org.au>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- crypto/sha512_generic.c | 58 +++++++++++++++++++++++++++--------------------
- 1 file changed, 34 insertions(+), 24 deletions(-)
-
-diff --git a/crypto/sha512_generic.c b/crypto/sha512_generic.c
-index 8b9035b..88f160b 100644
---- a/crypto/sha512_generic.c
-+++ b/crypto/sha512_generic.c
-@@ -78,7 +78,7 @@ static inline void LOAD_OP(int I, u64 *W, const u8 *input)
-
- static inline void BLEND_OP(int I, u64 *W)
- {
-- W[I] = s1(W[I-2]) + W[I-7] + s0(W[I-15]) + W[I-16];
-+ W[I % 16] += s1(W[(I-2) % 16]) + W[(I-7) % 16] + s0(W[(I-15) % 16]);
- }
-
- static void
-@@ -87,38 +87,48 @@ sha512_transform(u64 *state, const u8 *input)
- u64 a, b, c, d, e, f, g, h, t1, t2;
-
- int i;
-- u64 W[80];
-+ u64 W[16];
-
- /* load the input */
- for (i = 0; i < 16; i++)
- LOAD_OP(i, W, input);
-
-- for (i = 16; i < 80; i++) {
-- BLEND_OP(i, W);
-- }
--
- /* load the state into our registers */
- a=state[0]; b=state[1]; c=state[2]; d=state[3];
- e=state[4]; f=state[5]; g=state[6]; h=state[7];
-
-- /* now iterate */
-- for (i=0; i<80; i+=8) {
-- t1 = h + e1(e) + Ch(e,f,g) + sha512_K[i ] + W[i ];
-- t2 = e0(a) + Maj(a,b,c); d+=t1; h=t1+t2;
-- t1 = g + e1(d) + Ch(d,e,f) + sha512_K[i+1] + W[i+1];
-- t2 = e0(h) + Maj(h,a,b); c+=t1; g=t1+t2;
-- t1 = f + e1(c) + Ch(c,d,e) + sha512_K[i+2] + W[i+2];
-- t2 = e0(g) + Maj(g,h,a); b+=t1; f=t1+t2;
-- t1 = e + e1(b) + Ch(b,c,d) + sha512_K[i+3] + W[i+3];
-- t2 = e0(f) + Maj(f,g,h); a+=t1; e=t1+t2;
-- t1 = d + e1(a) + Ch(a,b,c) + sha512_K[i+4] + W[i+4];
-- t2 = e0(e) + Maj(e,f,g); h+=t1; d=t1+t2;
-- t1 = c + e1(h) + Ch(h,a,b) + sha512_K[i+5] + W[i+5];
-- t2 = e0(d) + Maj(d,e,f); g+=t1; c=t1+t2;
-- t1 = b + e1(g) + Ch(g,h,a) + sha512_K[i+6] + W[i+6];
-- t2 = e0(c) + Maj(c,d,e); f+=t1; b=t1+t2;
-- t1 = a + e1(f) + Ch(f,g,h) + sha512_K[i+7] + W[i+7];
-- t2 = e0(b) + Maj(b,c,d); e+=t1; a=t1+t2;
-+#define SHA512_0_15(i, a, b, c, d, e, f, g, h) \
-+ t1 = h + e1(e) + Ch(e, f, g) + sha512_K[i] + W[i]; \
-+ t2 = e0(a) + Maj(a, b, c); \
-+ d += t1; \
-+ h = t1 + t2
-+
-+#define SHA512_16_79(i, a, b, c, d, e, f, g, h) \
-+ BLEND_OP(i, W); \
-+ t1 = h + e1(e) + Ch(e, f, g) + sha512_K[i] + W[(i)%16]; \
-+ t2 = e0(a) + Maj(a, b, c); \
-+ d += t1; \
-+ h = t1 + t2
-+
-+ for (i = 0; i < 16; i += 8) {
-+ SHA512_0_15(i, a, b, c, d, e, f, g, h);
-+ SHA512_0_15(i + 1, h, a, b, c, d, e, f, g);
-+ SHA512_0_15(i + 2, g, h, a, b, c, d, e, f);
-+ SHA512_0_15(i + 3, f, g, h, a, b, c, d, e);
-+ SHA512_0_15(i + 4, e, f, g, h, a, b, c, d);
-+ SHA512_0_15(i + 5, d, e, f, g, h, a, b, c);
-+ SHA512_0_15(i + 6, c, d, e, f, g, h, a, b);
-+ SHA512_0_15(i + 7, b, c, d, e, f, g, h, a);
-+ }
-+ for (i = 16; i < 80; i += 8) {
-+ SHA512_16_79(i, a, b, c, d, e, f, g, h);
-+ SHA512_16_79(i + 1, h, a, b, c, d, e, f, g);
-+ SHA512_16_79(i + 2, g, h, a, b, c, d, e, f);
-+ SHA512_16_79(i + 3, f, g, h, a, b, c, d, e);
-+ SHA512_16_79(i + 4, e, f, g, h, a, b, c, d);
-+ SHA512_16_79(i + 5, d, e, f, g, h, a, b, c);
-+ SHA512_16_79(i + 6, c, d, e, f, g, h, a, b);
-+ SHA512_16_79(i + 7, b, c, d, e, f, g, h, a);
- }
-
- state[0] += a; state[1] += b; state[2] += c; state[3] += d;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0022-tpm_tis-add-delay-after-aborting-command.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0022-tpm_tis-add-delay-after-aborting-command.patch
deleted file mode 100644
index 67cc971..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0022-tpm_tis-add-delay-after-aborting-command.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From caa437611de9fbff82c56157c92863f07b3d39db Mon Sep 17 00:00:00 2001
-From: Stefan Berger <stefanb at linux.vnet.ibm.com>
-Date: Fri, 11 Nov 2011 12:57:06 -0500
-Subject: [PATCH 22/90] tpm_tis: add delay after aborting command
-
-commit a927b8131794ee449b7f6666e7ab61301949b20f upstream.
-
-This patch adds a delay after aborting a command. Some TPMs need
-this and will not process the subsequent command correctly otherwise.
-
-It's worth noting that a TPM randomly failing to process a command,
-maps to randomly failing suspend/resume operations.
-
-Signed-off-by: Stefan Berger <stefanb at linux.vnet.ibm.com>
-Signed-off-by: Rajiv Andrade <srajiv at linux.vnet.ibm.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/char/tpm/tpm_tis.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/drivers/char/tpm/tpm_tis.c b/drivers/char/tpm/tpm_tis.c
-index 3f4051a..c7e5282 100644
---- a/drivers/char/tpm/tpm_tis.c
-+++ b/drivers/char/tpm/tpm_tis.c
-@@ -432,6 +432,9 @@ static int probe_itpm(struct tpm_chip *chip)
- out:
- itpm = rem_itpm;
- tpm_tis_ready(chip);
-+ /* some TPMs need a break here otherwise they will not work
-+ * correctly on the immediately subsequent command */
-+ msleep(chip->vendor.timeout_b);
- release_locality(chip, chip->vendor.locality, 0);
-
- return rc;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0023-x86-uv-Fix-uninitialized-spinlocks.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0023-x86-uv-Fix-uninitialized-spinlocks.patch
deleted file mode 100644
index 1b4a1e2..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0023-x86-uv-Fix-uninitialized-spinlocks.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From 9879a44c57c58034844a11551c81fd05b3341c1a Mon Sep 17 00:00:00 2001
-From: Cliff Wickman <cpw at sgi.com>
-Date: Wed, 18 Jan 2012 09:40:47 -0600
-Subject: [PATCH 23/90] x86/uv: Fix uninitialized spinlocks
-
-commit d2ebc71d472020bc30e29afe8c4d2a85a5b41f56 upstream.
-
-Initialize two spinlocks in tlb_uv.c and also properly define/initialize
-the uv_irq_lock.
-
-The lack of explicit initialization seems to be functionally
-harmless, but it is diagnosed when these are turned on:
-
- CONFIG_DEBUG_SPINLOCK=y
- CONFIG_DEBUG_MUTEXES=y
- CONFIG_DEBUG_LOCK_ALLOC=y
- CONFIG_LOCKDEP=y
-
-Signed-off-by: Cliff Wickman <cpw at sgi.com>
-Cc: Dimitri Sivanich <sivanich at sgi.com>
-Link: http://lkml.kernel.org/r/E1RnXd1-0003wU-PM@eag09.americas.sgi.com
-[ Added the uv_irq_lock initialization fix by Dimitri Sivanich ]
-Signed-off-by: Ingo Molnar <mingo at elte.hu>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/x86/platform/uv/tlb_uv.c | 2 ++
- arch/x86/platform/uv/uv_irq.c | 2 +-
- 2 files changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/arch/x86/platform/uv/tlb_uv.c b/arch/x86/platform/uv/tlb_uv.c
-index 9010ca7..81aee5a 100644
---- a/arch/x86/platform/uv/tlb_uv.c
-+++ b/arch/x86/platform/uv/tlb_uv.c
-@@ -1860,6 +1860,8 @@ static void __init init_per_cpu_tunables(void)
- bcp->cong_reps = congested_reps;
- bcp->cong_period = congested_period;
- bcp->clocks_per_100_usec = usec_2_cycles(100);
-+ spin_lock_init(&bcp->queue_lock);
-+ spin_lock_init(&bcp->uvhub_lock);
- }
- }
-
-diff --git a/arch/x86/platform/uv/uv_irq.c b/arch/x86/platform/uv/uv_irq.c
-index 374a05d..f25c276 100644
---- a/arch/x86/platform/uv/uv_irq.c
-+++ b/arch/x86/platform/uv/uv_irq.c
-@@ -25,7 +25,7 @@ struct uv_irq_2_mmr_pnode{
- int irq;
- };
-
--static spinlock_t uv_irq_lock;
-+static DEFINE_SPINLOCK(uv_irq_lock);
- static struct rb_root uv_irq_root;
-
- static int uv_set_irq_affinity(struct irq_data *, const struct cpumask *, bool);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0024-x86-uv-Fix-uv_gpa_to_soc_phys_ram-shift.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0024-x86-uv-Fix-uv_gpa_to_soc_phys_ram-shift.patch
deleted file mode 100644
index e26066b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0024-x86-uv-Fix-uv_gpa_to_soc_phys_ram-shift.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 9788a66a2053d7548aca11af50ea2730ffb9db91 Mon Sep 17 00:00:00 2001
-From: Russ Anderson <rja at sgi.com>
-Date: Wed, 18 Jan 2012 20:07:54 -0600
-Subject: [PATCH 24/90] x86/uv: Fix uv_gpa_to_soc_phys_ram() shift
-
-commit 5a51467b146ab7948d2f6812892eac120a30529c upstream.
-
-uv_gpa_to_soc_phys_ram() was inadvertently ignoring the
-shift values. This fix takes the shift into account.
-
-Signed-off-by: Russ Anderson <rja at sgi.com>
-Link: http://lkml.kernel.org/r/20120119020753.GA7228@sgi.com
-Signed-off-by: Ingo Molnar <mingo at elte.hu>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/x86/include/asm/uv/uv_hub.h | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/arch/x86/include/asm/uv/uv_hub.h b/arch/x86/include/asm/uv/uv_hub.h
-index 54a13aa..21f7385 100644
---- a/arch/x86/include/asm/uv/uv_hub.h
-+++ b/arch/x86/include/asm/uv/uv_hub.h
-@@ -318,13 +318,13 @@ uv_gpa_in_mmr_space(unsigned long gpa)
- /* UV global physical address --> socket phys RAM */
- static inline unsigned long uv_gpa_to_soc_phys_ram(unsigned long gpa)
- {
-- unsigned long paddr = gpa & uv_hub_info->gpa_mask;
-+ unsigned long paddr;
- unsigned long remap_base = uv_hub_info->lowmem_remap_base;
- unsigned long remap_top = uv_hub_info->lowmem_remap_top;
-
- gpa = ((gpa << uv_hub_info->m_shift) >> uv_hub_info->m_shift) |
- ((gpa >> uv_hub_info->n_lshift) << uv_hub_info->m_val);
-- gpa = gpa & uv_hub_info->gpa_mask;
-+ paddr = gpa & uv_hub_info->gpa_mask;
- if (paddr >= remap_base && paddr < remap_base + remap_top)
- paddr -= remap_base;
- return paddr;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0025-x86-microcode_amd-Add-support-for-CPU-family-specifi.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0025-x86-microcode_amd-Add-support-for-CPU-family-specifi.patch
deleted file mode 100644
index c87c424..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0025-x86-microcode_amd-Add-support-for-CPU-family-specifi.patch
+++ /dev/null
@@ -1,75 +0,0 @@
-From cb0e26dce7e9a5384c7dec3550647faf56207108 Mon Sep 17 00:00:00 2001
-From: Andreas Herrmann <andreas.herrmann3 at amd.com>
-Date: Fri, 20 Jan 2012 17:44:12 +0100
-Subject: [PATCH 25/90] x86/microcode_amd: Add support for CPU family specific
- container files
-
-commit 5b68edc91cdc972c46f76f85eded7ffddc3ff5c2 upstream.
-
-We've decided to provide CPU family specific container files
-(starting with CPU family 15h). E.g. for family 15h we have to
-load microcode_amd_fam15h.bin instead of microcode_amd.bin
-
-Rationale is that starting with family 15h patch size is larger
-than 2KB which was hard coded as maximum patch size in various
-microcode loaders (not just Linux).
-
-Container files which include patches larger than 2KB cause
-different kinds of trouble with such old patch loaders. Thus we
-have to ensure that the default container file provides only
-patches with size less than 2KB.
-
-Signed-off-by: Andreas Herrmann <andreas.herrmann3 at amd.com>
-Cc: Borislav Petkov <borislav.petkov at amd.com>
-Cc: <stable at kernel.org>
-Link: http://lkml.kernel.org/r/20120120164412.GD24508@alberich.amd.com
-[ documented the naming convention and tidied the code a bit. ]
-Signed-off-by: Ingo Molnar <mingo at elte.hu>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/x86/kernel/microcode_amd.c | 24 ++++++++++++++++++++++--
- 1 file changed, 22 insertions(+), 2 deletions(-)
-
-diff --git a/arch/x86/kernel/microcode_amd.c b/arch/x86/kernel/microcode_amd.c
-index d494799..ac52c15 100644
---- a/arch/x86/kernel/microcode_amd.c
-+++ b/arch/x86/kernel/microcode_amd.c
-@@ -300,13 +300,33 @@ free_table:
- return state;
- }
-
-+/*
-+ * AMD microcode firmware naming convention, up to family 15h they are in
-+ * the legacy file:
-+ *
-+ * amd-ucode/microcode_amd.bin
-+ *
-+ * This legacy file is always smaller than 2K in size.
-+ *
-+ * Starting at family 15h they are in family specific firmware files:
-+ *
-+ * amd-ucode/microcode_amd_fam15h.bin
-+ * amd-ucode/microcode_amd_fam16h.bin
-+ * ...
-+ *
-+ * These might be larger than 2K.
-+ */
- static enum ucode_state request_microcode_amd(int cpu, struct device *device)
- {
-- const char *fw_name = "amd-ucode/microcode_amd.bin";
-+ char fw_name[36] = "amd-ucode/microcode_amd.bin";
- const struct firmware *fw;
- enum ucode_state ret = UCODE_NFOUND;
-+ struct cpuinfo_x86 *c = &cpu_data(cpu);
-+
-+ if (c->x86 >= 0x15)
-+ snprintf(fw_name, sizeof(fw_name), "amd-ucode/microcode_amd_fam%.2xh.bin", c->x86);
-
-- if (request_firmware(&fw, fw_name, device)) {
-+ if (request_firmware(&fw, (const char *)fw_name, device)) {
- pr_err("failed to load file %s\n", fw_name);
- goto out;
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0026-m68k-Fix-assembler-constraint-to-prevent-overeager-g.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0026-m68k-Fix-assembler-constraint-to-prevent-overeager-g.patch
deleted file mode 100644
index 1e1762d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0026-m68k-Fix-assembler-constraint-to-prevent-overeager-g.patch
+++ /dev/null
@@ -1,172 +0,0 @@
-From fc1407525a7f1db7e288fddede6111d9c31d61cc Mon Sep 17 00:00:00 2001
-From: Andreas Schwab <schwab at linux-m68k.org>
-Date: Mon, 9 Jan 2012 15:10:15 +0100
-Subject: [PATCH 26/90] m68k: Fix assembler constraint to prevent overeager
- gcc optimisation
-
-commit 2a3535069e33d8b416f406c159ce924427315303 upstream.
-
-Passing the address of a variable as an operand to an asm statement
-doesn't mark the value of this variable as used, so gcc may optimize its
-initialisation away. Fix this by using the "m" constraint instead.
-
-Signed-off-by: Andreas Schwab <schwab at linux-m68k.org>
-Signed-off-by: Geert Uytterhoeven <geert at linux-m68k.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/m68k/atari/config.c | 8 ++++----
- arch/m68k/kernel/process_mm.c | 4 ++--
- arch/m68k/kernel/process_no.c | 4 ++--
- arch/m68k/kernel/traps.c | 36 +++++++++++++++++-------------------
- arch/m68k/mm/cache.c | 6 +++---
- 5 files changed, 28 insertions(+), 30 deletions(-)
-
-diff --git a/arch/m68k/atari/config.c b/arch/m68k/atari/config.c
-index 4203d10..c4ac15c 100644
---- a/arch/m68k/atari/config.c
-+++ b/arch/m68k/atari/config.c
-@@ -414,9 +414,9 @@ void __init config_atari(void)
- * FDC val = 4 -> Supervisor only */
- asm volatile ("\n"
- " .chip 68030\n"
-- " pmove %0@,%/tt1\n"
-+ " pmove %0,%/tt1\n"
- " .chip 68k"
-- : : "a" (&tt1_val));
-+ : : "m" (tt1_val));
- } else {
- asm volatile ("\n"
- " .chip 68040\n"
-@@ -569,10 +569,10 @@ static void atari_reset(void)
- : "d0");
- } else
- asm volatile ("\n"
-- " pmove %0@,%%tc\n"
-+ " pmove %0,%%tc\n"
- " jmp %1@"
- : /* no outputs */
-- : "a" (&tc_val), "a" (reset_addr));
-+ : "m" (tc_val), "a" (reset_addr));
- }
-
-
-diff --git a/arch/m68k/kernel/process_mm.c b/arch/m68k/kernel/process_mm.c
-index 1bc223a..aa4ffb8 100644
---- a/arch/m68k/kernel/process_mm.c
-+++ b/arch/m68k/kernel/process_mm.c
-@@ -189,8 +189,8 @@ void flush_thread(void)
- current->thread.fs = __USER_DS;
- if (!FPU_IS_EMU)
- asm volatile (".chip 68k/68881\n\t"
-- "frestore %0@\n\t"
-- ".chip 68k" : : "a" (&zero));
-+ "frestore %0\n\t"
-+ ".chip 68k" : : "m" (zero));
- }
-
- /*
-diff --git a/arch/m68k/kernel/process_no.c b/arch/m68k/kernel/process_no.c
-index 69c1803..5e1078c 100644
---- a/arch/m68k/kernel/process_no.c
-+++ b/arch/m68k/kernel/process_no.c
-@@ -163,8 +163,8 @@ void flush_thread(void)
- #ifdef CONFIG_FPU
- if (!FPU_IS_EMU)
- asm volatile (".chip 68k/68881\n\t"
-- "frestore %0@\n\t"
-- ".chip 68k" : : "a" (&zero));
-+ "frestore %0\n\t"
-+ ".chip 68k" : : "m" (zero));
- #endif
- }
-
-diff --git a/arch/m68k/kernel/traps.c b/arch/m68k/kernel/traps.c
-index 89362f2..eb67469 100644
---- a/arch/m68k/kernel/traps.c
-+++ b/arch/m68k/kernel/traps.c
-@@ -552,13 +552,13 @@ static inline void bus_error030 (struct frame *fp)
-
- #ifdef DEBUG
- asm volatile ("ptestr %3,%2@,#7,%0\n\t"
-- "pmove %%psr,%1@"
-- : "=a&" (desc)
-- : "a" (&temp), "a" (addr), "d" (ssw));
-+ "pmove %%psr,%1"
-+ : "=a&" (desc), "=m" (temp)
-+ : "a" (addr), "d" (ssw));
- #else
- asm volatile ("ptestr %2,%1@,#7\n\t"
-- "pmove %%psr,%0@"
-- : : "a" (&temp), "a" (addr), "d" (ssw));
-+ "pmove %%psr,%0"
-+ : "=m" (temp) : "a" (addr), "d" (ssw));
- #endif
- mmusr = temp;
-
-@@ -605,20 +605,18 @@ static inline void bus_error030 (struct frame *fp)
- !(ssw & RW) ? "write" : "read", addr,
- fp->ptregs.pc, ssw);
- asm volatile ("ptestr #1,%1@,#0\n\t"
-- "pmove %%psr,%0@"
-- : /* no outputs */
-- : "a" (&temp), "a" (addr));
-+ "pmove %%psr,%0"
-+ : "=m" (temp)
-+ : "a" (addr));
- mmusr = temp;
-
- printk ("level 0 mmusr is %#x\n", mmusr);
- #if 0
-- asm volatile ("pmove %%tt0,%0@"
-- : /* no outputs */
-- : "a" (&tlong));
-+ asm volatile ("pmove %%tt0,%0"
-+ : "=m" (tlong));
- printk("tt0 is %#lx, ", tlong);
-- asm volatile ("pmove %%tt1,%0@"
-- : /* no outputs */
-- : "a" (&tlong));
-+ asm volatile ("pmove %%tt1,%0"
-+ : "=m" (tlong));
- printk("tt1 is %#lx\n", tlong);
- #endif
- #ifdef DEBUG
-@@ -668,13 +666,13 @@ static inline void bus_error030 (struct frame *fp)
-
- #ifdef DEBUG
- asm volatile ("ptestr #1,%2@,#7,%0\n\t"
-- "pmove %%psr,%1@"
-- : "=a&" (desc)
-- : "a" (&temp), "a" (addr));
-+ "pmove %%psr,%1"
-+ : "=a&" (desc), "=m" (temp)
-+ : "a" (addr));
- #else
- asm volatile ("ptestr #1,%1@,#7\n\t"
-- "pmove %%psr,%0@"
-- : : "a" (&temp), "a" (addr));
-+ "pmove %%psr,%0"
-+ : "=m" (temp) : "a" (addr));
- #endif
- mmusr = temp;
-
-diff --git a/arch/m68k/mm/cache.c b/arch/m68k/mm/cache.c
-index 5437fff..5550aa4 100644
---- a/arch/m68k/mm/cache.c
-+++ b/arch/m68k/mm/cache.c
-@@ -52,9 +52,9 @@ static unsigned long virt_to_phys_slow(unsigned long vaddr)
- unsigned long *descaddr;
-
- asm volatile ("ptestr %3,%2@,#7,%0\n\t"
-- "pmove %%psr,%1@"
-- : "=a&" (descaddr)
-- : "a" (&mmusr), "a" (vaddr), "d" (get_fs().seg));
-+ "pmove %%psr,%1"
-+ : "=a&" (descaddr), "=m" (mmusr)
-+ : "a" (vaddr), "d" (get_fs().seg));
- if (mmusr & (MMU_I|MMU_B|MMU_L))
- return 0;
- descaddr = phys_to_virt((unsigned long)descaddr);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0027-ALSA-hda-set-mute-led-polarity-for-laptops-with-bugg.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0027-ALSA-hda-set-mute-led-polarity-for-laptops-with-bugg.patch
deleted file mode 100644
index f4f1801..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0027-ALSA-hda-set-mute-led-polarity-for-laptops-with-bugg.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 22619b056f526f74b1e59fb17acdfb6c011e2917 Mon Sep 17 00:00:00 2001
-From: Gustavo Maciel Dias Vieira <gustavo at sagui.org>
-Date: Tue, 24 Jan 2012 13:27:56 -0200
-Subject: [PATCH 27/90] ALSA: hda: set mute led polarity for laptops with
- buggy BIOS based on SSID
-
-commit a6a600d10aaddf1da38053c4c6b64f50f56176e6 upstream.
-
-HP laptop models with buggy BIOS are apparently frequent, including
-machines with different codecs. Set the polarity of the mute led based
-on the SSID and include an entry for the HP Mini 110-3100.
-
-Signed-off-by: Gustavo Maciel Dias Vieira <gustavo at sagui.org>
-Tested-by: Predrag Ivanovic <predivan at open.telekom.rs>
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- sound/pci/hda/patch_sigmatel.c | 9 ++++++++-
- 1 file changed, 8 insertions(+), 1 deletion(-)
-
-diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c
-index 2141cab..ccdac27 100644
---- a/sound/pci/hda/patch_sigmatel.c
-+++ b/sound/pci/hda/patch_sigmatel.c
-@@ -4952,7 +4952,14 @@ static int find_mute_led_gpio(struct hda_codec *codec, int default_polarity)
- /* BIOS bug: unfilled OEM string */
- if (strstr(dev->name, "HP_Mute_LED_P_G")) {
- set_hp_led_gpio(codec);
-- spec->gpio_led_polarity = 1;
-+ switch (codec->subsystem_id) {
-+ case 0x103c148a:
-+ spec->gpio_led_polarity = 0;
-+ break;
-+ default:
-+ spec->gpio_led_polarity = 1;
-+ break;
-+ }
- return 1;
- }
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0028-ALSA-hda-Fix-silent-output-on-ASUS-A6Rp.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0028-ALSA-hda-Fix-silent-output-on-ASUS-A6Rp.patch
deleted file mode 100644
index 6bbaf4c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0028-ALSA-hda-Fix-silent-output-on-ASUS-A6Rp.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From 549e4501b20d12eabef8f35cc2846091566d71a0 Mon Sep 17 00:00:00 2001
-From: Takashi Iwai <tiwai at suse.de>
-Date: Wed, 25 Jan 2012 09:55:46 +0100
-Subject: [PATCH 28/90] ALSA: hda - Fix silent output on ASUS A6Rp
-
-commit 3b25eb690e8c7424eecffe1458c02b87b32aa001 upstream.
-
-The refactoring of Realtek codec driver in 3.2 kernel caused a
-regression for ASUS A6Rp laptop; it doesn't give any output.
-The reason was that this machine has a secret master mute (or EAPD)
-control via NID 0x0f VREF. Setting VREF50 on this node makes the
-sound working again.
-
-Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=42588
-
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- sound/pci/hda/patch_realtek.c | 10 ++++++++++
- 1 file changed, 10 insertions(+)
-
-diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
-index 1d07e8f..9a63a19 100644
---- a/sound/pci/hda/patch_realtek.c
-+++ b/sound/pci/hda/patch_realtek.c
-@@ -5223,6 +5223,7 @@ static const struct hda_amp_list alc861_loopbacks[] = {
- /* Pin config fixes */
- enum {
- PINFIX_FSC_AMILO_PI1505,
-+ PINFIX_ASUS_A6RP,
- };
-
- static const struct alc_fixup alc861_fixups[] = {
-@@ -5234,9 +5235,18 @@ static const struct alc_fixup alc861_fixups[] = {
- { }
- }
- },
-+ [PINFIX_ASUS_A6RP] = {
-+ .type = ALC_FIXUP_VERBS,
-+ .v.verbs = (const struct hda_verb[]) {
-+ /* node 0x0f VREF seems controlling the master output */
-+ { 0x0f, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_VREF50 },
-+ { }
-+ },
-+ },
- };
-
- static const struct snd_pci_quirk alc861_fixup_tbl[] = {
-+ SND_PCI_QUIRK(0x1043, 0x1393, "ASUS A6Rp", PINFIX_ASUS_A6RP),
- SND_PCI_QUIRK(0x1734, 0x10c7, "FSC Amilo Pi1505", PINFIX_FSC_AMILO_PI1505),
- {}
- };
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0029-ALSA-hda-Fix-silent-output-on-Haier-W18-laptop.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0029-ALSA-hda-Fix-silent-output-on-Haier-W18-laptop.patch
deleted file mode 100644
index f25bd6c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0029-ALSA-hda-Fix-silent-output-on-Haier-W18-laptop.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 7e5aab3ce9f6ddf8e33efb988160d61011857f64 Mon Sep 17 00:00:00 2001
-From: Takashi Iwai <tiwai at suse.de>
-Date: Thu, 26 Jan 2012 15:56:16 +0100
-Subject: [PATCH 29/90] ALSA: hda - Fix silent output on Haier W18 laptop
-
-commit b3a81520bd37a28f77cb0f7002086fb14061824d upstream.
-
-The very same problem is seen on Haier W18 laptop with ALC861 as seen
-on ASUS A6Rp, which was fixed by the commit 3b25eb69.
-Now we just need to add a new SSID entry pointing to the same fixup.
-
-Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=42656
-
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- sound/pci/hda/patch_realtek.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
-index 9a63a19..5f03c40 100644
---- a/sound/pci/hda/patch_realtek.c
-+++ b/sound/pci/hda/patch_realtek.c
-@@ -5247,6 +5247,7 @@ static const struct alc_fixup alc861_fixups[] = {
-
- static const struct snd_pci_quirk alc861_fixup_tbl[] = {
- SND_PCI_QUIRK(0x1043, 0x1393, "ASUS A6Rp", PINFIX_ASUS_A6RP),
-+ SND_PCI_QUIRK(0x1584, 0x2b01, "Haier W18", PINFIX_ASUS_A6RP),
- SND_PCI_QUIRK(0x1734, 0x10c7, "FSC Amilo Pi1505", PINFIX_FSC_AMILO_PI1505),
- {}
- };
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0030-drm-i915-paper-over-missed-irq-issues-with-force-wak.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0030-drm-i915-paper-over-missed-irq-issues-with-force-wak.patch
deleted file mode 100644
index 10fbb57..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0030-drm-i915-paper-over-missed-irq-issues-with-force-wak.patch
+++ /dev/null
@@ -1,126 +0,0 @@
-From cfd65d7a489fbc3594ce751173d3c46089ab41d5 Mon Sep 17 00:00:00 2001
-From: Daniel Vetter <daniel.vetter at ffwll.ch>
-Date: Fri, 14 Dec 2012 16:01:25 +0100
-Subject: [PATCH 30/90] drm/i915: paper over missed irq issues with force wake
- voodoo
-
-commit 4cd53c0c8b01fc05c3ad5b2acdad02e37d3c2f55 upstream.
-
-Two things seem to do the trick on my ivb machine here:
-- prevent the gt from powering down while waiting for seqno
- notification interrupts by grabbing the force_wake in get_irq (and
- dropping it in put_irq again).
-- ordering writes from the ring's CS by reading a CS register, ACTHD
- seems to work.
-
-Only the blt&bsd ring on ivb seem to be massively affected by this,
-but for paranoia do this dance also on the render ring and on snb
-(i.e. all gpus with forcewake).
-
-Tested with Eric's glCopyPixels loop which without this patch scores a
-missed irq every few seconds.
-
-This patch needs my forcewake rework to use a spinlock instead of
-dev->struct_mutex.
-
-After crawling through docs a lot I've found the following nugget:
-
-Internal doc "SNB GT PM Programming Guide", Section 4.3.1:
-
-"GT does not generate interrupts while in RC6 (by design)"
-
-So it looks like rc6 and irq generation are indeed related.
-
-v2: Improve the comment per Eugeni Dodonov's suggestion.
-
-v3: Add the documentation snipped. Also restrict the w/a to ivb only
-for -fixes, as suggested by Keith Packard.
-
-Cc: Eric Anholt <eric at anholt.net>
-Cc: Kenneth Graunke <kenneth at whitecape.org>
-Cc: Eugeni Dodonov <eugeni.dodonov at intel.com>
-Tested-by: Eugeni Dodonov <eugeni.dodonov at intel.com>
-Reviewed-by: Eugeni Dodonov <eugeni.dodonov at intel.com>
-Signed-Off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
-Signed-off-by: Keith Packard <keithp at keithp.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/gpu/drm/i915/intel_ringbuffer.c | 27 +++++++++++++++++++++++++--
- 1 file changed, 25 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
-index ca70e2f..30a9af9 100644
---- a/drivers/gpu/drm/i915/intel_ringbuffer.c
-+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
-@@ -631,6 +631,19 @@ render_ring_add_request(struct intel_ring_buffer *ring,
- }
-
- static u32
-+gen6_ring_get_seqno(struct intel_ring_buffer *ring)
-+{
-+ struct drm_device *dev = ring->dev;
-+
-+ /* Workaround to force correct ordering between irq and seqno writes on
-+ * ivb (and maybe also on snb) by reading from a CS register (like
-+ * ACTHD) before reading the status page. */
-+ if (IS_GEN7(dev))
-+ intel_ring_get_active_head(ring);
-+ return intel_read_status_page(ring, I915_GEM_HWS_INDEX);
-+}
-+
-+static u32
- ring_get_seqno(struct intel_ring_buffer *ring)
- {
- return intel_read_status_page(ring, I915_GEM_HWS_INDEX);
-@@ -795,6 +808,12 @@ gen6_ring_get_irq(struct intel_ring_buffer *ring, u32 gflag, u32 rflag)
- if (!dev->irq_enabled)
- return false;
-
-+ /* It looks like we need to prevent the gt from suspending while waiting
-+ * for an notifiy irq, otherwise irqs seem to get lost on at least the
-+ * blt/bsd rings on ivb. */
-+ if (IS_GEN7(dev))
-+ gen6_gt_force_wake_get(dev_priv);
-+
- spin_lock(&ring->irq_lock);
- if (ring->irq_refcount++ == 0) {
- ring->irq_mask &= ~rflag;
-@@ -819,6 +838,9 @@ gen6_ring_put_irq(struct intel_ring_buffer *ring, u32 gflag, u32 rflag)
- ironlake_disable_irq(dev_priv, gflag);
- }
- spin_unlock(&ring->irq_lock);
-+
-+ if (IS_GEN7(dev))
-+ gen6_gt_force_wake_put(dev_priv);
- }
-
- static bool
-@@ -1316,7 +1338,7 @@ static const struct intel_ring_buffer gen6_bsd_ring = {
- .write_tail = gen6_bsd_ring_write_tail,
- .flush = gen6_ring_flush,
- .add_request = gen6_add_request,
-- .get_seqno = ring_get_seqno,
-+ .get_seqno = gen6_ring_get_seqno,
- .irq_get = gen6_bsd_ring_get_irq,
- .irq_put = gen6_bsd_ring_put_irq,
- .dispatch_execbuffer = gen6_ring_dispatch_execbuffer,
-@@ -1451,7 +1473,7 @@ static const struct intel_ring_buffer gen6_blt_ring = {
- .write_tail = ring_write_tail,
- .flush = blt_ring_flush,
- .add_request = gen6_add_request,
-- .get_seqno = ring_get_seqno,
-+ .get_seqno = gen6_ring_get_seqno,
- .irq_get = blt_ring_get_irq,
- .irq_put = blt_ring_put_irq,
- .dispatch_execbuffer = gen6_ring_dispatch_execbuffer,
-@@ -1474,6 +1496,7 @@ int intel_init_render_ring_buffer(struct drm_device *dev)
- ring->flush = gen6_render_ring_flush;
- ring->irq_get = gen6_render_ring_get_irq;
- ring->irq_put = gen6_render_ring_put_irq;
-+ ring->get_seqno = gen6_ring_get_seqno;
- } else if (IS_GEN5(dev)) {
- ring->add_request = pc_render_add_request;
- ring->get_seqno = pc_render_get_seqno;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0031-drm-i915-sdvo-always-set-positive-sync-polarity.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0031-drm-i915-sdvo-always-set-positive-sync-polarity.patch
deleted file mode 100644
index b71fe18..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0031-drm-i915-sdvo-always-set-positive-sync-polarity.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From 6a131dd582a8c782e0d2d9fdef0bfb4f53cec306 Mon Sep 17 00:00:00 2001
-From: Paulo Zanoni <paulo.r.zanoni at intel.com>
-Date: Fri, 6 Jan 2012 19:45:34 -0200
-Subject: [PATCH 31/90] drm/i915/sdvo: always set positive sync polarity
-
-commit ba68e086223a5f149f37bf8692c8cdbf1b0ba3ef upstream.
-
-This is a revert of 81a14b46846fea0741902e8d8dfcc6c6c78154c8.
-
-We already set the mode polarity using the SDVO commands with struct
-intel_sdvo_dtd. We have at least 3 bugs that get fixed with this patch.
-The documentation, despite not clear, can also be interpreted in a way
-that suggests this patch is needed.
-
-Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=15766
-Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=42174
-Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=43333
-Reviewed-by: Eric Anholt <eric at anholt.net>
-Reviewed-by: Jesse Barnes <jbarnes at virtuousgeek.org>
-Signed-off-by: Paulo Zanoni <paulo.r.zanoni at intel.com>
-Signed-off-by: Keith Packard <keithp at keithp.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/gpu/drm/i915/intel_sdvo.c | 8 +++-----
- 1 file changed, 3 insertions(+), 5 deletions(-)
-
-diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c
-index f7b9268..e334ec3 100644
---- a/drivers/gpu/drm/i915/intel_sdvo.c
-+++ b/drivers/gpu/drm/i915/intel_sdvo.c
-@@ -1066,15 +1066,13 @@ static void intel_sdvo_mode_set(struct drm_encoder *encoder,
-
- /* Set the SDVO control regs. */
- if (INTEL_INFO(dev)->gen >= 4) {
-- sdvox = 0;
-+ /* The real mode polarity is set by the SDVO commands, using
-+ * struct intel_sdvo_dtd. */
-+ sdvox = SDVO_VSYNC_ACTIVE_HIGH | SDVO_HSYNC_ACTIVE_HIGH;
- if (intel_sdvo->is_hdmi)
- sdvox |= intel_sdvo->color_range;
- if (INTEL_INFO(dev)->gen < 5)
- sdvox |= SDVO_BORDER_ENABLE;
-- if (adjusted_mode->flags & DRM_MODE_FLAG_PVSYNC)
-- sdvox |= SDVO_VSYNC_ACTIVE_HIGH;
-- if (adjusted_mode->flags & DRM_MODE_FLAG_PHSYNC)
-- sdvox |= SDVO_HSYNC_ACTIVE_HIGH;
- } else {
- sdvox = I915_READ(intel_sdvo->sdvo_reg);
- switch (intel_sdvo->sdvo_reg) {
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0032-drm-i915-Re-enable-gen7-RC6-and-GPU-turbo-after-resu.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0032-drm-i915-Re-enable-gen7-RC6-and-GPU-turbo-after-resu.patch
deleted file mode 100644
index a7b02e2..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0032-drm-i915-Re-enable-gen7-RC6-and-GPU-turbo-after-resu.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From a2c65b5c20cfa95ba4a36afcfa6dc285244b74eb Mon Sep 17 00:00:00 2001
-From: Eric Anholt <eric at anholt.net>
-Date: Mon, 23 Jan 2012 16:14:06 -0800
-Subject: [PATCH 32/90] drm/i915: Re-enable gen7 RC6 and GPU turbo after
- resume.
-
-commit 04115a9dee110b52a8eaa556c574022fa3bf4704 upstream.
-
-Signed-off-by: Eric Anholt <eric at anholt.net>
-Reviewed-by: Keith Packard <keithp at keithp.com>
-Reviewed-by: Eugeni Dodonov <eugeni.dodonov at intel.com>
-Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
-Signed-off-by: Keith Packard <keithp at keithp.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/gpu/drm/i915/i915_suspend.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/gpu/drm/i915/i915_suspend.c b/drivers/gpu/drm/i915/i915_suspend.c
-index 7886e4f..43cbafe 100644
---- a/drivers/gpu/drm/i915/i915_suspend.c
-+++ b/drivers/gpu/drm/i915/i915_suspend.c
-@@ -822,7 +822,7 @@ int i915_save_state(struct drm_device *dev)
-
- if (IS_IRONLAKE_M(dev))
- ironlake_disable_drps(dev);
-- if (IS_GEN6(dev))
-+ if (INTEL_INFO(dev)->gen >= 6)
- gen6_disable_rps(dev);
-
- /* Cache mode state */
-@@ -881,7 +881,7 @@ int i915_restore_state(struct drm_device *dev)
- intel_init_emon(dev);
- }
-
-- if (IS_GEN6(dev)) {
-+ if (INTEL_INFO(dev)->gen >= 6) {
- gen6_enable_rps(dev_priv);
- gen6_update_ring_freq(dev_priv);
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0033-ARM-at91-fix-at91rm9200-soc-subtype-handling.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0033-ARM-at91-fix-at91rm9200-soc-subtype-handling.patch
deleted file mode 100644
index 7acb37b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0033-ARM-at91-fix-at91rm9200-soc-subtype-handling.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 77a2fa4c4e8b988b6b31c89ba6cd72e1c8beee4b Mon Sep 17 00:00:00 2001
-From: Nicolas Ferre <nicolas.ferre at atmel.com>
-Date: Wed, 28 Dec 2011 13:10:04 +0200
-Subject: [PATCH 33/90] ARM: at91: fix at91rm9200 soc subtype handling
-
-commit 3e90772f76010c315474bde59eaca7cc4c94d645 upstream.
-
-Currently setting it to PQFP changes subtype to BGA as subtypes are
-swapped in at91rm9200_set_type().
-
-Wrong subtype causes GPIO bank D not to work at all.
-
-After this fix, subtype is still set as unknown. But board code should
-fill it in with proper value. Another information is thus printed.
-
-Bug discovery and first implementation made by Veli-Pekka Peltola.
-
-Signed-off-by: Nicolas Ferre <nicolas.ferre at atmel.com>
-Acked-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj at jcrosoft.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/arm/mach-at91/setup.c | 7 +++++--
- 1 file changed, 5 insertions(+), 2 deletions(-)
-
-diff --git a/arch/arm/mach-at91/setup.c b/arch/arm/mach-at91/setup.c
-index cf98a8f..39d8ea0 100644
---- a/arch/arm/mach-at91/setup.c
-+++ b/arch/arm/mach-at91/setup.c
-@@ -27,9 +27,12 @@ EXPORT_SYMBOL(at91_soc_initdata);
- void __init at91rm9200_set_type(int type)
- {
- if (type == ARCH_REVISON_9200_PQFP)
-- at91_soc_initdata.subtype = AT91_SOC_RM9200_BGA;
-- else
- at91_soc_initdata.subtype = AT91_SOC_RM9200_PQFP;
-+ else
-+ at91_soc_initdata.subtype = AT91_SOC_RM9200_BGA;
-+
-+ pr_info("AT91: filled in soc subtype: %s\n",
-+ at91_get_soc_subtype(&at91_soc_initdata));
- }
-
- void __init at91_init_irq_default(void)
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0034-mach-ux500-enable-ARM-errata-764369.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0034-mach-ux500-enable-ARM-errata-764369.patch
deleted file mode 100644
index b867eda..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0034-mach-ux500-enable-ARM-errata-764369.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 26df6080d3107e6fe26a10eb8d37977d38482caf Mon Sep 17 00:00:00 2001
-From: Srinidhi KASAGAR <srinidhi.kasagar at stericsson.com>
-Date: Thu, 12 Jan 2012 11:07:43 +0530
-Subject: [PATCH 34/90] mach-ux500: enable ARM errata 764369
-
-commit d65015f7c5c5be9fd3f5e567889c844ba81bdc9c upstream.
-
-This applies ARM errata 764369 for all ux500 platforms.
-
-Signed-off-by: Srinidhi Kasagar <srinidhi.kasagar at stericsson.com>
-Signed-off-by: Linus Walleij <linus.walleij at linaro.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/arm/mach-ux500/Kconfig | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/arch/arm/mach-ux500/Kconfig b/arch/arm/mach-ux500/Kconfig
-index a3e0c86..52af004 100644
---- a/arch/arm/mach-ux500/Kconfig
-+++ b/arch/arm/mach-ux500/Kconfig
-@@ -7,6 +7,7 @@ config UX500_SOC_COMMON
- select HAS_MTU
- select ARM_ERRATA_753970
- select ARM_ERRATA_754322
-+ select ARM_ERRATA_764369
-
- menu "Ux500 SoC"
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0035-ARM-7296-1-proc-v7.S-remove-HARVARD_CACHE-preprocess.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0035-ARM-7296-1-proc-v7.S-remove-HARVARD_CACHE-preprocess.patch
deleted file mode 100644
index f4273b7..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0035-ARM-7296-1-proc-v7.S-remove-HARVARD_CACHE-preprocess.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From 475e3d3f7c14f475067e25f2687595f87c297036 Mon Sep 17 00:00:00 2001
-From: Will Deacon <will.deacon at arm.com>
-Date: Fri, 20 Jan 2012 12:10:18 +0100
-Subject: [PATCH 35/90] ARM: 7296/1: proc-v7.S: remove HARVARD_CACHE
- preprocessor guards
-
-commit 612539e81f655f6ac73c7af1da8701c1ee618aee upstream.
-
-On v7, we use the same cache maintenance instructions for data lines
-as for unified lines. This was not the case for v6, where HARVARD_CACHE
-was defined to indicate the L1 cache topology.
-
-This patch removes the erroneous compile-time check for HARVARD_CACHE in
-proc-v7.S, ensuring that we perform I-side invalidation at boot.
-
-Reported-and-Acked-by: Shawn Guo <shawn.guo at linaro.org>
-
-Acked-by: Catalin Marinas <Catalin.Marinas at arm.com>
-Signed-off-by: Will Deacon <will.deacon at arm.com>
-Signed-off-by: Russell King <rmk+kernel at arm.linux.org.uk>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/arm/mm/proc-v7.S | 6 ------
- 1 file changed, 6 deletions(-)
-
-diff --git a/arch/arm/mm/proc-v7.S b/arch/arm/mm/proc-v7.S
-index e70a737..40cc7aa 100644
---- a/arch/arm/mm/proc-v7.S
-+++ b/arch/arm/mm/proc-v7.S
-@@ -271,10 +271,6 @@ ENDPROC(cpu_v7_do_resume)
- * Initialise TLB, Caches, and MMU state ready to switch the MMU
- * on. Return in r0 the new CP15 C1 control register setting.
- *
-- * We automatically detect if we have a Harvard cache, and use the
-- * Harvard cache control instructions insead of the unified cache
-- * control instructions.
-- *
- * This should be able to cover all ARMv7 cores.
- *
- * It is assumed that:
-@@ -373,9 +369,7 @@ __v7_setup:
- #endif
-
- 3: mov r10, #0
--#ifdef HARVARD_CACHE
- mcr p15, 0, r10, c7, c5, 0 @ I+BTB cache invalidate
--#endif
- dsb
- #ifdef CONFIG_MMU
- mcr p15, 0, r10, c8, c7, 0 @ invalidate I + D TLBs
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0036-sysfs-Complain-bitterly-about-attempts-to-remove-fil.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0036-sysfs-Complain-bitterly-about-attempts-to-remove-fil.patch
deleted file mode 100644
index c61dedd..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0036-sysfs-Complain-bitterly-about-attempts-to-remove-fil.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-From 775cf93ed95772f96ae94452358171c6d93fbadf Mon Sep 17 00:00:00 2001
-From: "Eric W. Biederman" <ebiederm at xmission.com>
-Date: Fri, 13 Jan 2012 21:32:59 -0800
-Subject: [PATCH 36/90] sysfs: Complain bitterly about attempts to remove
- files from nonexistent directories.
-
-commit ce597919361dcec97341151690e780eade2a9cf4 upstream.
-
-Recently an OOPS was observed from the usb serial io_ti driver when it tried to remove
-sysfs directories. Upon investigation it turns out this driver was always buggy
-and that a recent sysfs change had stopped guarding itself against removing attributes
-from sysfs directories that had already been removed. :(
-
-Historically we have been silent about attempting to files from nonexistent sysfs
-directories and have politely returned error codes. That has resulted in people writing
-broken code that ignores the error codes.
-
-Issue a kernel WARNING and a stack backtrace to make it clear in no uncertain
-terms that abusing sysfs is not ok, and the callers need to fix their code.
-
-This change transforms the io_ti OOPS into a more comprehensible error message
-and stack backtrace.
-
-Signed-off-by: Eric W. Biederman <ebiederm at xmission.com>
-Reported-by: Wolfgang Frisch <wfpub at roembden.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/sysfs/file.c | 6 ++++++
- fs/sysfs/inode.c | 5 ++++-
- 2 files changed, 10 insertions(+), 1 deletion(-)
-
-diff --git a/fs/sysfs/file.c b/fs/sysfs/file.c
-index d4e6080b..779789a 100644
---- a/fs/sysfs/file.c
-+++ b/fs/sysfs/file.c
-@@ -493,6 +493,12 @@ int sysfs_attr_ns(struct kobject *kobj, const struct attribute *attr,
- const void *ns = NULL;
- int err;
-
-+ if (!dir_sd) {
-+ WARN(1, KERN_ERR "sysfs: kobject %s without dirent\n",
-+ kobject_name(kobj));
-+ return -ENOENT;
-+ }
-+
- err = 0;
- if (!sysfs_ns_type(dir_sd))
- goto out;
-diff --git a/fs/sysfs/inode.c b/fs/sysfs/inode.c
-index c81b22f..deb804b 100644
---- a/fs/sysfs/inode.c
-+++ b/fs/sysfs/inode.c
-@@ -318,8 +318,11 @@ int sysfs_hash_and_remove(struct sysfs_dirent *dir_sd, const void *ns, const cha
- struct sysfs_addrm_cxt acxt;
- struct sysfs_dirent *sd;
-
-- if (!dir_sd)
-+ if (!dir_sd) {
-+ WARN(1, KERN_WARNING "sysfs: can not remove '%s', no directory\n",
-+ name);
- return -ENOENT;
-+ }
-
- sysfs_addrm_start(&acxt, dir_sd);
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0037-x86-xen-size-struct-xen_spinlock-to-always-fit-in-ar.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0037-x86-xen-size-struct-xen_spinlock-to-always-fit-in-ar.patch
deleted file mode 100644
index 8466a2c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0037-x86-xen-size-struct-xen_spinlock-to-always-fit-in-ar.patch
+++ /dev/null
@@ -1,103 +0,0 @@
-From 3d7cdc4f00c37f18820e0cc0918d09c63c02d676 Mon Sep 17 00:00:00 2001
-From: David Vrabel <david.vrabel at citrix.com>
-Date: Mon, 23 Jan 2012 19:32:25 +0000
-Subject: [PATCH 37/90] x86: xen: size struct xen_spinlock to always fit in
- arch_spinlock_t
-
-commit 7a7546b377bdaa25ac77f33d9433c59f259b9688 upstream.
-
-If NR_CPUS < 256 then arch_spinlock_t is only 16 bits wide but struct
-xen_spinlock is 32 bits. When a spin lock is contended and
-xl->spinners is modified the two bytes immediately after the spin lock
-would be corrupted.
-
-This is a regression caused by 84eb950db13ca40a0572ce9957e14723500943d6
-(x86, ticketlock: Clean up types and accessors) which reduced the size
-of arch_spinlock_t.
-
-Fix this by making xl->spinners a u8 if NR_CPUS < 256. A
-BUILD_BUG_ON() is also added to check the sizes of the two structures
-are compatible.
-
-In many cases this was not noticable as there would often be padding
-bytes after the lock (e.g., if any of CONFIG_GENERIC_LOCKBREAK,
-CONFIG_DEBUG_SPINLOCK, or CONFIG_DEBUG_LOCK_ALLOC were enabled).
-
-The bnx2 driver is affected. In struct bnx2, phy_lock and
-indirect_lock may have no padding after them. Contention on phy_lock
-would corrupt indirect_lock making it appear locked and the driver
-would deadlock.
-
-Signed-off-by: David Vrabel <david.vrabel at citrix.com>
-Signed-off-by: Jeremy Fitzhardinge <jeremy at goop.org>
-Acked-by: Ian Campbell <ian.campbell at citrix.com>
-Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk at oracle.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/x86/xen/spinlock.c | 27 ++++++++++++++++++++++-----
- 1 file changed, 22 insertions(+), 5 deletions(-)
-
-diff --git a/arch/x86/xen/spinlock.c b/arch/x86/xen/spinlock.c
-index cc9b1e1..d69cc6c 100644
---- a/arch/x86/xen/spinlock.c
-+++ b/arch/x86/xen/spinlock.c
-@@ -116,9 +116,26 @@ static inline void spin_time_accum_blocked(u64 start)
- }
- #endif /* CONFIG_XEN_DEBUG_FS */
-
-+/*
-+ * Size struct xen_spinlock so it's the same as arch_spinlock_t.
-+ */
-+#if NR_CPUS < 256
-+typedef u8 xen_spinners_t;
-+# define inc_spinners(xl) \
-+ asm(LOCK_PREFIX " incb %0" : "+m" ((xl)->spinners) : : "memory");
-+# define dec_spinners(xl) \
-+ asm(LOCK_PREFIX " decb %0" : "+m" ((xl)->spinners) : : "memory");
-+#else
-+typedef u16 xen_spinners_t;
-+# define inc_spinners(xl) \
-+ asm(LOCK_PREFIX " incw %0" : "+m" ((xl)->spinners) : : "memory");
-+# define dec_spinners(xl) \
-+ asm(LOCK_PREFIX " decw %0" : "+m" ((xl)->spinners) : : "memory");
-+#endif
-+
- struct xen_spinlock {
- unsigned char lock; /* 0 -> free; 1 -> locked */
-- unsigned short spinners; /* count of waiting cpus */
-+ xen_spinners_t spinners; /* count of waiting cpus */
- };
-
- static int xen_spin_is_locked(struct arch_spinlock *lock)
-@@ -164,8 +181,7 @@ static inline struct xen_spinlock *spinning_lock(struct xen_spinlock *xl)
-
- wmb(); /* set lock of interest before count */
-
-- asm(LOCK_PREFIX " incw %0"
-- : "+m" (xl->spinners) : : "memory");
-+ inc_spinners(xl);
-
- return prev;
- }
-@@ -176,8 +192,7 @@ static inline struct xen_spinlock *spinning_lock(struct xen_spinlock *xl)
- */
- static inline void unspinning_lock(struct xen_spinlock *xl, struct xen_spinlock *prev)
- {
-- asm(LOCK_PREFIX " decw %0"
-- : "+m" (xl->spinners) : : "memory");
-+ dec_spinners(xl);
- wmb(); /* decrement count before restoring lock */
- __this_cpu_write(lock_spinners, prev);
- }
-@@ -373,6 +388,8 @@ void xen_uninit_lock_cpu(int cpu)
-
- void __init xen_init_spinlocks(void)
- {
-+ BUILD_BUG_ON(sizeof(struct xen_spinlock) > sizeof(arch_spinlock_t));
-+
- pv_lock_ops.spin_is_locked = xen_spin_is_locked;
- pv_lock_ops.spin_is_contended = xen_spin_is_contended;
- pv_lock_ops.spin_lock = xen_spin_lock;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0038-mpt2sas-Removed-redundant-calling-of-_scsih_probe_de.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0038-mpt2sas-Removed-redundant-calling-of-_scsih_probe_de.patch
deleted file mode 100644
index 63948d2..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0038-mpt2sas-Removed-redundant-calling-of-_scsih_probe_de.patch
+++ /dev/null
@@ -1,96 +0,0 @@
-From 9531483cafcb025ce819407f5e2a9942a19c0a2c Mon Sep 17 00:00:00 2001
-From: "nagalakshmi.nandigama at lsi.com" <nagalakshmi.nandigama at lsi.com>
-Date: Tue, 13 Dec 2011 09:29:15 +0530
-Subject: [PATCH 38/90] mpt2sas: Removed redundant calling of
- _scsih_probe_devices() from _scsih_probe
-
-commit 2cb6fc8c014b9b00c4487a79b8f6ed0da4121f45 upstream.
-
-Removed redundant calling of _scsih_probe_devices() from _scsih_probe as
-it is getting called from _scsih_scan_finished.
-
-Also moved the function scsi_scan_host(shost) to get called after the
-volumes on warp drive are reported to the OS. Otherwise by the time
-the (ioc->hide_drives) flags is set, the volumes on warp drive
-are reported to the OS already.
-
-Also modified the initialization of reply queues only in case of driver load
-time in the function _base_make_ioc_operational().
-
-Signed-off-by: Nagalakshmi Nandigama <nagalakshmi.nandigama at lsi.com>
-Signed-off-by: James Bottomley <JBottomley at Parallels.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/scsi/mpt2sas/mpt2sas_base.c | 20 +++++++-------------
- drivers/scsi/mpt2sas/mpt2sas_scsih.c | 3 +--
- 2 files changed, 8 insertions(+), 15 deletions(-)
-
-diff --git a/drivers/scsi/mpt2sas/mpt2sas_base.c b/drivers/scsi/mpt2sas/mpt2sas_base.c
-index 0794c72..b1ddfef 100644
---- a/drivers/scsi/mpt2sas/mpt2sas_base.c
-+++ b/drivers/scsi/mpt2sas/mpt2sas_base.c
-@@ -4033,7 +4033,8 @@ _base_make_ioc_operational(struct MPT2SAS_ADAPTER *ioc, int sleep_flag)
- ioc->reply_free[i] = cpu_to_le32(reply_address);
-
- /* initialize reply queues */
-- _base_assign_reply_queues(ioc);
-+ if (ioc->is_driver_loading)
-+ _base_assign_reply_queues(ioc);
-
- /* initialize Reply Post Free Queue */
- reply_post_free = (long)ioc->reply_post_free;
-@@ -4081,24 +4082,17 @@ _base_make_ioc_operational(struct MPT2SAS_ADAPTER *ioc, int sleep_flag)
-
-
- if (ioc->is_driver_loading) {
--
--
--
-- ioc->wait_for_discovery_to_complete =
-- _base_determine_wait_on_discovery(ioc);
-- return r; /* scan_start and scan_finished support */
-- }
--
--
-- if (ioc->wait_for_discovery_to_complete && ioc->is_warpdrive) {
-- if (ioc->manu_pg10.OEMIdentifier == 0x80) {
-+ if (ioc->is_warpdrive && ioc->manu_pg10.OEMIdentifier
-+ == 0x80) {
- hide_flag = (u8) (ioc->manu_pg10.OEMSpecificFlags0 &
- MFG_PAGE10_HIDE_SSDS_MASK);
- if (hide_flag != MFG_PAGE10_HIDE_SSDS_MASK)
- ioc->mfg_pg10_hide_flag = hide_flag;
- }
-+ ioc->wait_for_discovery_to_complete =
-+ _base_determine_wait_on_discovery(ioc);
-+ return r; /* scan_start and scan_finished support */
- }
--
- r = _base_send_port_enable(ioc, sleep_flag);
- if (r)
- return r;
-diff --git a/drivers/scsi/mpt2sas/mpt2sas_scsih.c b/drivers/scsi/mpt2sas/mpt2sas_scsih.c
-index 9bc6fb2..2824a90 100644
---- a/drivers/scsi/mpt2sas/mpt2sas_scsih.c
-+++ b/drivers/scsi/mpt2sas/mpt2sas_scsih.c
-@@ -8001,7 +8001,6 @@ _scsih_probe(struct pci_dev *pdev, const struct pci_device_id *id)
- goto out_attach_fail;
- }
-
-- scsi_scan_host(shost);
- if (ioc->is_warpdrive) {
- if (ioc->mfg_pg10_hide_flag == MFG_PAGE10_EXPOSE_ALL_DISKS)
- ioc->hide_drives = 0;
-@@ -8015,8 +8014,8 @@ _scsih_probe(struct pci_dev *pdev, const struct pci_device_id *id)
- }
- } else
- ioc->hide_drives = 0;
-+ scsi_scan_host(shost);
-
-- _scsih_probe_devices(ioc);
- return 0;
-
- out_attach_fail:
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0039-USB-option-Add-LG-docomo-L-02C.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0039-USB-option-Add-LG-docomo-L-02C.patch
deleted file mode 100644
index ca4f8a5..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0039-USB-option-Add-LG-docomo-L-02C.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From ef04da68e67fb96790367edd47602664fe897feb Mon Sep 17 00:00:00 2001
-From: Kentaro Matsuyama <kentaro.matsuyama at gmail.com>
-Date: Thu, 12 Jan 2012 23:07:51 +0900
-Subject: [PATCH 39/90] USB: option: Add LG docomo L-02C
-
-commit e423d7401fd0717cb56a6cf51dd8341cc3e800d2 upstream.
-
-Add vendor and product ID for USB 3G/LTE modem of docomo L-02C
-
-Signed-off-by: Kentaro Matsuyama <kentaro.matsuyama at gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/serial/option.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
-index c96b6b6..2a9ed6e 100644
---- a/drivers/usb/serial/option.c
-+++ b/drivers/usb/serial/option.c
-@@ -480,6 +480,10 @@ static void option_instat_callback(struct urb *urb);
- #define ZD_VENDOR_ID 0x0685
- #define ZD_PRODUCT_7000 0x7000
-
-+/* LG products */
-+#define LG_VENDOR_ID 0x1004
-+#define LG_PRODUCT_L02C 0x618f
-+
- /* some devices interfaces need special handling due to a number of reasons */
- enum option_blacklist_reason {
- OPTION_BLACKLIST_NONE = 0,
-@@ -1183,6 +1187,7 @@ static const struct usb_device_id option_ids[] = {
- { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CLU526) },
- { USB_DEVICE_AND_INTERFACE_INFO(VIETTEL_VENDOR_ID, VIETTEL_PRODUCT_VT1000, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZD_VENDOR_ID, ZD_PRODUCT_7000, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE(LG_VENDOR_ID, LG_PRODUCT_L02C) }, /* docomo L-02C modem */
- { } /* Terminating entry */
- };
- MODULE_DEVICE_TABLE(usb, option_ids);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0040-USB-ftdi_sio-fix-TIOCSSERIAL-baud_base-handling.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0040-USB-ftdi_sio-fix-TIOCSSERIAL-baud_base-handling.patch
deleted file mode 100644
index f6d5ad6..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0040-USB-ftdi_sio-fix-TIOCSSERIAL-baud_base-handling.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 71649769f1ae79da3343c0472388f13ffb8b9a3a Mon Sep 17 00:00:00 2001
-From: Johan Hovold <jhovold at gmail.com>
-Date: Tue, 10 Jan 2012 23:33:37 +0100
-Subject: [PATCH 40/90] USB: ftdi_sio: fix TIOCSSERIAL baud_base handling
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit eb833a9e0972f60beb4ab8104ad7ef6bf30f02fc upstream.
-
-Return EINVAL if new baud_base does not match the current one.
-
-The baud_base is device specific and can not be changed. This restores
-the old (pre-2005) behaviour which was changed due to a
-misunderstanding regarding this fact (see
-https://lkml.org/lkml/2005/1/20/84).
-
-Reported-by: Torbjörn Lofterud <torbjorn at pi.nxs.se>
-Signed-off-by: Johan Hovold <jhovold at gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/serial/ftdi_sio.c | 3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
-
-diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
-index ff3db5d..6a034b3 100644
---- a/drivers/usb/serial/ftdi_sio.c
-+++ b/drivers/usb/serial/ftdi_sio.c
-@@ -1333,8 +1333,7 @@ static int set_serial_info(struct tty_struct *tty,
- goto check_and_exit;
- }
-
-- if ((new_serial.baud_base != priv->baud_base) &&
-- (new_serial.baud_base < 9600)) {
-+ if (new_serial.baud_base != priv->baud_base) {
- mutex_unlock(&priv->cfg_lock);
- return -EINVAL;
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0041-USB-ftdi_sio-fix-initial-baud-rate.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0041-USB-ftdi_sio-fix-initial-baud-rate.patch
deleted file mode 100644
index bb49c7b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0041-USB-ftdi_sio-fix-initial-baud-rate.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From 99e22d6f848ffdc4e62916e92a41a4208b16a561 Mon Sep 17 00:00:00 2001
-From: Johan Hovold <jhovold at gmail.com>
-Date: Wed, 18 Jan 2012 01:46:00 +0100
-Subject: [PATCH 41/90] USB: ftdi_sio: fix initial baud rate
-
-commit 108e02b12921078a59dcacd048079ece48a4a983 upstream.
-
-Fix regression introduced by commit b1ffb4c851f1 ("USB: Fix Corruption
-issue in USB ftdi driver ftdi_sio.c") which caused the termios settings
-to no longer be initialised at open. Consequently it was no longer
-possible to set the port to the default speed of 9600 baud without first
-changing to another baud rate and back again.
-
-Reported-by: Roland Ramthun <mail at roland-ramthun.de>
-Signed-off-by: Johan Hovold <jhovold at gmail.com>
-Tested-by: Roland Ramthun <mail at roland-ramthun.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/serial/ftdi_sio.c | 7 +++++--
- 1 file changed, 5 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
-index 6a034b3..6a40b41 100644
---- a/drivers/usb/serial/ftdi_sio.c
-+++ b/drivers/usb/serial/ftdi_sio.c
-@@ -1823,6 +1823,7 @@ static int ftdi_sio_port_remove(struct usb_serial_port *port)
-
- static int ftdi_open(struct tty_struct *tty, struct usb_serial_port *port)
- {
-+ struct ktermios dummy;
- struct usb_device *dev = port->serial->dev;
- struct ftdi_private *priv = usb_get_serial_port_data(port);
- int result;
-@@ -1841,8 +1842,10 @@ static int ftdi_open(struct tty_struct *tty, struct usb_serial_port *port)
- This is same behaviour as serial.c/rs_open() - Kuba */
-
- /* ftdi_set_termios will send usb control messages */
-- if (tty)
-- ftdi_set_termios(tty, port, tty->termios);
-+ if (tty) {
-+ memset(&dummy, 0, sizeof(dummy));
-+ ftdi_set_termios(tty, port, &dummy);
-+ }
-
- /* Start reading from the device */
- result = usb_serial_generic_open(tty, port);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0042-USB-ftdi_sio-add-PID-for-TI-XDS100v2-BeagleBone-A3.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0042-USB-ftdi_sio-add-PID-for-TI-XDS100v2-BeagleBone-A3.patch
deleted file mode 100644
index 923fb39..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0042-USB-ftdi_sio-add-PID-for-TI-XDS100v2-BeagleBone-A3.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From 5eda7cbb711ceb779c1bb38d5dedf3f2203efd99 Mon Sep 17 00:00:00 2001
-From: Peter Korsgaard <jacmet at sunsite.dk>
-Date: Wed, 18 Jan 2012 23:43:45 +0100
-Subject: [PATCH 42/90] USB: ftdi_sio: add PID for TI XDS100v2 / BeagleBone A3
-
-commit 55f13aeae0346f0c89bfface91ad9a97653dc433 upstream.
-
-Port A for JTAG, port B for serial.
-
-Signed-off-by: Peter Korsgaard <jacmet at sunsite.dk>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/serial/ftdi_sio.c | 2 ++
- drivers/usb/serial/ftdi_sio_ids.h | 7 +++++++
- 2 files changed, 9 insertions(+)
-
-diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
-index 6a40b41..952570f 100644
---- a/drivers/usb/serial/ftdi_sio.c
-+++ b/drivers/usb/serial/ftdi_sio.c
-@@ -805,6 +805,8 @@ static struct usb_device_id id_table_combined [] = {
- { USB_DEVICE(BAYER_VID, BAYER_CONTOUR_CABLE_PID) },
- { USB_DEVICE(FTDI_VID, MARVELL_OPENRD_PID),
- .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
-+ { USB_DEVICE(FTDI_VID, TI_XDS100V2_PID),
-+ .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
- { USB_DEVICE(FTDI_VID, HAMEG_HO820_PID) },
- { USB_DEVICE(FTDI_VID, HAMEG_HO720_PID) },
- { USB_DEVICE(FTDI_VID, HAMEG_HO730_PID) },
-diff --git a/drivers/usb/serial/ftdi_sio_ids.h b/drivers/usb/serial/ftdi_sio_ids.h
-index 055b64e..b67bee2 100644
---- a/drivers/usb/serial/ftdi_sio_ids.h
-+++ b/drivers/usb/serial/ftdi_sio_ids.h
-@@ -39,6 +39,13 @@
- /* www.candapter.com Ewert Energy Systems CANdapter device */
- #define FTDI_CANDAPTER_PID 0x9F80 /* Product Id */
-
-+/*
-+ * Texas Instruments XDS100v2 JTAG / BeagleBone A3
-+ * http://processors.wiki.ti.com/index.php/XDS100
-+ * http://beagleboard.org/bone
-+ */
-+#define TI_XDS100V2_PID 0xa6d0
-+
- #define FTDI_NXTCAM_PID 0xABB8 /* NXTCam for Mindstorms NXT */
-
- /* US Interface Navigator (http://www.usinterface.com/) */
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0043-USB-serial-ftdi-additional-IDs.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0043-USB-serial-ftdi-additional-IDs.patch
deleted file mode 100644
index 9f94218..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0043-USB-serial-ftdi-additional-IDs.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From c099b47c24fd187dc18f80b7906f71ea27f5ff32 Mon Sep 17 00:00:00 2001
-From: Peter Naulls <peter at chocky.org>
-Date: Tue, 17 Jan 2012 18:27:09 -0800
-Subject: [PATCH 43/90] USB: serial: ftdi additional IDs
-
-commit fc216ec363f4d174932df90bbf35c77d0540e561 upstream.
-
-I tested this against 2.6.39 in the Ubuntu kernel, however I see the IDs
-are not in latest 3.2 git.
-
-This adds IDs for the FTDI controller in the Rainforest Automation
-Zigbee dongle.
-
-Signed-off-by: Peter Naulls <peter at chocky.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/serial/ftdi_sio.c | 1 +
- drivers/usb/serial/ftdi_sio_ids.h | 6 ++++++
- 2 files changed, 7 insertions(+)
-
-diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
-index 952570f..abd5bd7 100644
---- a/drivers/usb/serial/ftdi_sio.c
-+++ b/drivers/usb/serial/ftdi_sio.c
-@@ -843,6 +843,7 @@ static struct usb_device_id id_table_combined [] = {
- .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
- { USB_DEVICE(ST_VID, ST_STMCLT1030_PID),
- .driver_info = (kernel_ulong_t)&ftdi_stmclite_quirk },
-+ { USB_DEVICE(FTDI_VID, FTDI_RF_R106) },
- { }, /* Optional parameter entry */
- { } /* Terminating entry */
- };
-diff --git a/drivers/usb/serial/ftdi_sio_ids.h b/drivers/usb/serial/ftdi_sio_ids.h
-index b67bee2..79c5967 100644
---- a/drivers/usb/serial/ftdi_sio_ids.h
-+++ b/drivers/usb/serial/ftdi_sio_ids.h
-@@ -1175,3 +1175,9 @@
- */
- /* TagTracer MIFARE*/
- #define FTDI_ZEITCONTROL_TAGTRACE_MIFARE_PID 0xF7C0
-+
-+/*
-+ * Rainforest Automation
-+ */
-+/* ZigBee controller */
-+#define FTDI_RF_R106 0x8A28
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0044-USB-ftdi_sio-Add-more-identifiers.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0044-USB-ftdi_sio-Add-more-identifiers.patch
deleted file mode 100644
index 3a20f58..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0044-USB-ftdi_sio-Add-more-identifiers.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From ab65ae9e2bd7d28ae9af25f34190355f3456a872 Mon Sep 17 00:00:00 2001
-From: Alan Cox <alan at linux.intel.com>
-Date: Thu, 26 Jan 2012 17:41:34 +0000
-Subject: [PATCH 44/90] USB: ftdi_sio: Add more identifiers
-
-commit 2353f806c97020d4c7709f15eebb49b591f7306d upstream.
-
-0x04d8, 0x000a: Hornby Elite
-
-Signed-off-by: Alan Cox <alan at linux.intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/serial/ftdi_sio.c | 1 +
- drivers/usb/serial/ftdi_sio_ids.h | 6 ++++++
- 2 files changed, 7 insertions(+)
-
-diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
-index abd5bd7..058b92c 100644
---- a/drivers/usb/serial/ftdi_sio.c
-+++ b/drivers/usb/serial/ftdi_sio.c
-@@ -797,6 +797,7 @@ static struct usb_device_id id_table_combined [] = {
- .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
- { USB_DEVICE(ADI_VID, ADI_GNICEPLUS_PID),
- .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
-+ { USB_DEVICE(HORNBY_VID, HORNBY_ELITE_PID) },
- { USB_DEVICE(JETI_VID, JETI_SPC1201_PID) },
- { USB_DEVICE(MARVELL_VID, MARVELL_SHEEVAPLUG_PID),
- .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
-diff --git a/drivers/usb/serial/ftdi_sio_ids.h b/drivers/usb/serial/ftdi_sio_ids.h
-index 79c5967..76d4f31 100644
---- a/drivers/usb/serial/ftdi_sio_ids.h
-+++ b/drivers/usb/serial/ftdi_sio_ids.h
-@@ -532,6 +532,12 @@
- #define ADI_GNICEPLUS_PID 0xF001
-
- /*
-+ * Hornby Elite
-+ */
-+#define HORNBY_VID 0x04D8
-+#define HORNBY_ELITE_PID 0x000A
-+
-+/*
- * RATOC REX-USB60F
- */
- #define RATOC_VENDOR_ID 0x0584
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0045-USB-cdc-wdm-updating-desc-length-must-be-protected-b.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0045-USB-cdc-wdm-updating-desc-length-must-be-protected-b.patch
deleted file mode 100644
index 1b2dcb4..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0045-USB-cdc-wdm-updating-desc-length-must-be-protected-b.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 2e3ea48f17c5cc49469344377d1902054a11c759 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Bj=C3=B8rn=20Mork?= <bjorn at mork.no>
-Date: Mon, 16 Jan 2012 12:41:47 +0100
-Subject: [PATCH 45/90] USB: cdc-wdm: updating desc->length must be protected
- by spin_lock
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit c428b70c1e115c5649707a602742e34130d19428 upstream.
-
-wdm_in_callback() will also touch this field, so we cannot change it without locking
-
-Signed-off-by: Bjørn Mork <bjorn at mork.no>
-Acked-by: Oliver Neukum <oneukum at suse.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/class/cdc-wdm.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/drivers/usb/class/cdc-wdm.c b/drivers/usb/class/cdc-wdm.c
-index efe6849..7e5e822 100644
---- a/drivers/usb/class/cdc-wdm.c
-+++ b/drivers/usb/class/cdc-wdm.c
-@@ -467,7 +467,9 @@ retry:
- for (i = 0; i < desc->length - cntr; i++)
- desc->ubuf[i] = desc->ubuf[i + cntr];
-
-+ spin_lock_irq(&desc->iuspin);
- desc->length -= cntr;
-+ spin_unlock_irq(&desc->iuspin);
- /* in case we had outstanding data */
- if (!desc->length)
- clear_bit(WDM_READ, &desc->flags);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0046-USB-cdc-wdm-use-two-mutexes-to-allow-simultaneous-re.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0046-USB-cdc-wdm-use-two-mutexes-to-allow-simultaneous-re.patch
deleted file mode 100644
index d39a97c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0046-USB-cdc-wdm-use-two-mutexes-to-allow-simultaneous-re.patch
+++ /dev/null
@@ -1,178 +0,0 @@
-From 4fa7700c9a0aaa37a3071ae7debbc6ba9a30488b Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Bj=C3=B8rn=20Mork?= <bjorn at mork.no>
-Date: Mon, 16 Jan 2012 12:41:48 +0100
-Subject: [PATCH 46/90] USB: cdc-wdm: use two mutexes to allow simultaneous
- read and write
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit e8537bd2c4f325a4796da33564ddcef9489b7feb upstream.
-
-using a separate read and write mutex for locking is sufficient to make the
-driver accept simultaneous read and write. This improves useability a lot.
-
-Signed-off-by: Bjørn Mork <bjorn at mork.no>
-Cc: Oliver Neukum <oneukum at suse.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/class/cdc-wdm.c | 49 +++++++++++++++++++++++++++----------------
- 1 file changed, 31 insertions(+), 18 deletions(-)
-
-diff --git a/drivers/usb/class/cdc-wdm.c b/drivers/usb/class/cdc-wdm.c
-index 7e5e822..4a29a80 100644
---- a/drivers/usb/class/cdc-wdm.c
-+++ b/drivers/usb/class/cdc-wdm.c
-@@ -88,7 +88,8 @@ struct wdm_device {
- int count;
- dma_addr_t shandle;
- dma_addr_t ihandle;
-- struct mutex lock;
-+ struct mutex wlock;
-+ struct mutex rlock;
- wait_queue_head_t wait;
- struct work_struct rxwork;
- int werr;
-@@ -323,7 +324,7 @@ static ssize_t wdm_write
- }
-
- /* concurrent writes and disconnect */
-- r = mutex_lock_interruptible(&desc->lock);
-+ r = mutex_lock_interruptible(&desc->wlock);
- rv = -ERESTARTSYS;
- if (r) {
- kfree(buf);
-@@ -386,7 +387,7 @@ static ssize_t wdm_write
- out:
- usb_autopm_put_interface(desc->intf);
- outnp:
-- mutex_unlock(&desc->lock);
-+ mutex_unlock(&desc->wlock);
- outnl:
- return rv < 0 ? rv : count;
- }
-@@ -399,7 +400,7 @@ static ssize_t wdm_read
- struct wdm_device *desc = file->private_data;
-
-
-- rv = mutex_lock_interruptible(&desc->lock); /*concurrent reads */
-+ rv = mutex_lock_interruptible(&desc->rlock); /*concurrent reads */
- if (rv < 0)
- return -ERESTARTSYS;
-
-@@ -476,7 +477,7 @@ retry:
- rv = cntr;
-
- err:
-- mutex_unlock(&desc->lock);
-+ mutex_unlock(&desc->rlock);
- return rv;
- }
-
-@@ -542,7 +543,8 @@ static int wdm_open(struct inode *inode, struct file *file)
- }
- intf->needs_remote_wakeup = 1;
-
-- mutex_lock(&desc->lock);
-+ /* using write lock to protect desc->count */
-+ mutex_lock(&desc->wlock);
- if (!desc->count++) {
- desc->werr = 0;
- desc->rerr = 0;
-@@ -555,7 +557,7 @@ static int wdm_open(struct inode *inode, struct file *file)
- } else {
- rv = 0;
- }
-- mutex_unlock(&desc->lock);
-+ mutex_unlock(&desc->wlock);
- usb_autopm_put_interface(desc->intf);
- out:
- mutex_unlock(&wdm_mutex);
-@@ -567,9 +569,11 @@ static int wdm_release(struct inode *inode, struct file *file)
- struct wdm_device *desc = file->private_data;
-
- mutex_lock(&wdm_mutex);
-- mutex_lock(&desc->lock);
-+
-+ /* using write lock to protect desc->count */
-+ mutex_lock(&desc->wlock);
- desc->count--;
-- mutex_unlock(&desc->lock);
-+ mutex_unlock(&desc->wlock);
-
- if (!desc->count) {
- dev_dbg(&desc->intf->dev, "wdm_release: cleanup");
-@@ -667,7 +671,8 @@ next_desc:
- desc = kzalloc(sizeof(struct wdm_device), GFP_KERNEL);
- if (!desc)
- goto out;
-- mutex_init(&desc->lock);
-+ mutex_init(&desc->rlock);
-+ mutex_init(&desc->wlock);
- spin_lock_init(&desc->iuspin);
- init_waitqueue_head(&desc->wait);
- desc->wMaxCommand = maxcom;
-@@ -781,10 +786,12 @@ static void wdm_disconnect(struct usb_interface *intf)
- /* to terminate pending flushes */
- clear_bit(WDM_IN_USE, &desc->flags);
- spin_unlock_irqrestore(&desc->iuspin, flags);
-- mutex_lock(&desc->lock);
-+ mutex_lock(&desc->rlock);
-+ mutex_lock(&desc->wlock);
- kill_urbs(desc);
- cancel_work_sync(&desc->rxwork);
-- mutex_unlock(&desc->lock);
-+ mutex_unlock(&desc->wlock);
-+ mutex_unlock(&desc->rlock);
- wake_up_all(&desc->wait);
- if (!desc->count)
- cleanup(desc);
-@@ -800,8 +807,10 @@ static int wdm_suspend(struct usb_interface *intf, pm_message_t message)
- dev_dbg(&desc->intf->dev, "wdm%d_suspend\n", intf->minor);
-
- /* if this is an autosuspend the caller does the locking */
-- if (!PMSG_IS_AUTO(message))
-- mutex_lock(&desc->lock);
-+ if (!PMSG_IS_AUTO(message)) {
-+ mutex_lock(&desc->rlock);
-+ mutex_lock(&desc->wlock);
-+ }
- spin_lock_irq(&desc->iuspin);
-
- if (PMSG_IS_AUTO(message) &&
-@@ -817,8 +826,10 @@ static int wdm_suspend(struct usb_interface *intf, pm_message_t message)
- kill_urbs(desc);
- cancel_work_sync(&desc->rxwork);
- }
-- if (!PMSG_IS_AUTO(message))
-- mutex_unlock(&desc->lock);
-+ if (!PMSG_IS_AUTO(message)) {
-+ mutex_unlock(&desc->wlock);
-+ mutex_unlock(&desc->rlock);
-+ }
-
- return rv;
- }
-@@ -856,7 +867,8 @@ static int wdm_pre_reset(struct usb_interface *intf)
- {
- struct wdm_device *desc = usb_get_intfdata(intf);
-
-- mutex_lock(&desc->lock);
-+ mutex_lock(&desc->rlock);
-+ mutex_lock(&desc->wlock);
- kill_urbs(desc);
-
- /*
-@@ -878,7 +890,8 @@ static int wdm_post_reset(struct usb_interface *intf)
- int rv;
-
- rv = recover_from_urb_loss(desc);
-- mutex_unlock(&desc->lock);
-+ mutex_unlock(&desc->wlock);
-+ mutex_unlock(&desc->rlock);
- return 0;
- }
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0047-qcaux-add-more-Pantech-UML190-and-UML290-ports.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0047-qcaux-add-more-Pantech-UML190-and-UML290-ports.patch
deleted file mode 100644
index 14803ec..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0047-qcaux-add-more-Pantech-UML190-and-UML290-ports.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 174b386a16563b183073b5edd7d50f35ffacacdb Mon Sep 17 00:00:00 2001
-From: Dan Williams <dcbw at redhat.com>
-Date: Tue, 24 Jan 2012 17:16:54 -0600
-Subject: [PATCH 47/90] qcaux: add more Pantech UML190 and UML290 ports
-
-commit 074cc73506f529f39fef32ad1c9e1d4cdd8acf6c upstream.
-
-More ports we now know how to talk to.
-
-Signed-off-by: Dan Williams <dcbw at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/serial/qcaux.c | 7 ++++++-
- 1 file changed, 6 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/usb/serial/qcaux.c b/drivers/usb/serial/qcaux.c
-index 30b73e6..a348198 100644
---- a/drivers/usb/serial/qcaux.c
-+++ b/drivers/usb/serial/qcaux.c
-@@ -36,6 +36,7 @@
- #define UTSTARCOM_PRODUCT_UM175_V1 0x3712
- #define UTSTARCOM_PRODUCT_UM175_V2 0x3714
- #define UTSTARCOM_PRODUCT_UM175_ALLTEL 0x3715
-+#define PANTECH_PRODUCT_UML190_VZW 0x3716
- #define PANTECH_PRODUCT_UML290_VZW 0x3718
-
- /* CMOTECH devices */
-@@ -67,7 +68,11 @@ static struct usb_device_id id_table[] = {
- { USB_DEVICE_AND_INTERFACE_INFO(LG_VENDOR_ID, LG_PRODUCT_VX4400_6000, 0xff, 0xff, 0x00) },
- { USB_DEVICE_AND_INTERFACE_INFO(SANYO_VENDOR_ID, SANYO_PRODUCT_KATANA_LX, 0xff, 0xff, 0x00) },
- { USB_DEVICE_AND_INTERFACE_INFO(SAMSUNG_VENDOR_ID, SAMSUNG_PRODUCT_U520, 0xff, 0x00, 0x00) },
-- { USB_DEVICE_AND_INTERFACE_INFO(UTSTARCOM_VENDOR_ID, PANTECH_PRODUCT_UML290_VZW, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(UTSTARCOM_VENDOR_ID, PANTECH_PRODUCT_UML190_VZW, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(UTSTARCOM_VENDOR_ID, PANTECH_PRODUCT_UML190_VZW, 0xff, 0xfe, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(UTSTARCOM_VENDOR_ID, PANTECH_PRODUCT_UML290_VZW, 0xff, 0xfd, 0xff) }, /* NMEA */
-+ { USB_DEVICE_AND_INTERFACE_INFO(UTSTARCOM_VENDOR_ID, PANTECH_PRODUCT_UML290_VZW, 0xff, 0xfe, 0xff) }, /* WMC */
-+ { USB_DEVICE_AND_INTERFACE_INFO(UTSTARCOM_VENDOR_ID, PANTECH_PRODUCT_UML290_VZW, 0xff, 0xff, 0xff) }, /* DIAG */
- { },
- };
- MODULE_DEVICE_TABLE(usb, id_table);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0048-usb-dwc3-ep0-tidy-up-Pending-Request-handling.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0048-usb-dwc3-ep0-tidy-up-Pending-Request-handling.patch
deleted file mode 100644
index 0e826d0..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0048-usb-dwc3-ep0-tidy-up-Pending-Request-handling.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From c58c127a99dd9114926d3a9bd55f172b948f6ac0 Mon Sep 17 00:00:00 2001
-From: Felipe Balbi <balbi at ti.com>
-Date: Thu, 29 Dec 2011 06:32:29 +0200
-Subject: [PATCH 48/90] usb: dwc3: ep0: tidy up Pending Request handling
-
-commit 68d8a781575d7be490f97eb2c403fb13b083da6a upstream.
-
-The way our code was written, we should never have
-a DWC3_EP_PENDING_REQUEST flag set out of a Data Phase
-and the code in __dwc3_gadget_ep0_queue() did not
-reflect that situation properly.
-
-Tidy up that case to avoid any possible mistakes
-when starting requests for IRQs which are long
-gone.
-
-Signed-off-by: Felipe Balbi <balbi at ti.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/dwc3/ep0.c | 14 ++++----------
- 1 file changed, 4 insertions(+), 10 deletions(-)
-
-diff --git a/drivers/usb/dwc3/ep0.c b/drivers/usb/dwc3/ep0.c
-index 69a4e43..27bd50a 100644
---- a/drivers/usb/dwc3/ep0.c
-+++ b/drivers/usb/dwc3/ep0.c
-@@ -149,20 +149,14 @@ static int __dwc3_gadget_ep0_queue(struct dwc3_ep *dep,
-
- direction = !!(dep->flags & DWC3_EP0_DIR_IN);
-
-- if (dwc->ep0state == EP0_STATUS_PHASE) {
-- type = dwc->three_stage_setup
-- ? DWC3_TRBCTL_CONTROL_STATUS3
-- : DWC3_TRBCTL_CONTROL_STATUS2;
-- } else if (dwc->ep0state == EP0_DATA_PHASE) {
-- type = DWC3_TRBCTL_CONTROL_DATA;
-- } else {
-- /* should never happen */
-- WARN_ON(1);
-+ if (dwc->ep0state != EP0_DATA_PHASE) {
-+ dev_WARN(dwc->dev, "Unexpected pending request\n");
- return 0;
- }
-
- ret = dwc3_ep0_start_trans(dwc, direction,
-- req->request.dma, req->request.length, type);
-+ req->request.dma, req->request.length,
-+ DWC3_TRBCTL_CONTROL_DATA);
- dep->flags &= ~(DWC3_EP_PENDING_REQUEST |
- DWC3_EP0_DIR_IN);
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0049-usb-io_ti-Make-edge_remove_sysfs_attrs-the-port_remo.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0049-usb-io_ti-Make-edge_remove_sysfs_attrs-the-port_remo.patch
deleted file mode 100644
index ba583ae..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0049-usb-io_ti-Make-edge_remove_sysfs_attrs-the-port_remo.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From 879351c7f439390f233f0069f2f6111d6c5362da Mon Sep 17 00:00:00 2001
-From: "Eric W. Biederman" <ebiederm at xmission.com>
-Date: Fri, 13 Jan 2012 21:32:06 -0800
-Subject: [PATCH 49/90] usb: io_ti: Make edge_remove_sysfs_attrs the
- port_remove method.
-
-commit 6d443d8499e4e59ffb949759cdded32730f8d2f6 upstream.
-
-Calling edge_remove_sysfs_attrs from edge_disconnect is too late
-as the device has already been removed from sysfs.
-
-Do the simple and obvious thing and make edge_remove_sysfs_attrs
-the port_remove method.
-
-Signed-off-by: Eric W. Biederman <ebiederm at xmission.com>
-Reported-by: Wolfgang Frisch <wfpub at roembden.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/serial/io_ti.c | 10 ++--------
- 1 file changed, 2 insertions(+), 8 deletions(-)
-
-diff --git a/drivers/usb/serial/io_ti.c b/drivers/usb/serial/io_ti.c
-index 0aac00a..8a90d58 100644
---- a/drivers/usb/serial/io_ti.c
-+++ b/drivers/usb/serial/io_ti.c
-@@ -2677,15 +2677,7 @@ cleanup:
-
- static void edge_disconnect(struct usb_serial *serial)
- {
-- int i;
-- struct edgeport_port *edge_port;
--
- dbg("%s", __func__);
--
-- for (i = 0; i < serial->num_ports; ++i) {
-- edge_port = usb_get_serial_port_data(serial->port[i]);
-- edge_remove_sysfs_attrs(edge_port->port);
-- }
- }
-
- static void edge_release(struct usb_serial *serial)
-@@ -2764,6 +2756,7 @@ static struct usb_serial_driver edgeport_1port_device = {
- .disconnect = edge_disconnect,
- .release = edge_release,
- .port_probe = edge_create_sysfs_attrs,
-+ .port_remove = edge_remove_sysfs_attrs,
- .ioctl = edge_ioctl,
- .set_termios = edge_set_termios,
- .tiocmget = edge_tiocmget,
-@@ -2795,6 +2788,7 @@ static struct usb_serial_driver edgeport_2port_device = {
- .disconnect = edge_disconnect,
- .release = edge_release,
- .port_probe = edge_create_sysfs_attrs,
-+ .port_remove = edge_remove_sysfs_attrs,
- .ioctl = edge_ioctl,
- .set_termios = edge_set_termios,
- .tiocmget = edge_tiocmget,
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0050-TTY-fix-UV-serial-console-regression.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0050-TTY-fix-UV-serial-console-regression.patch
deleted file mode 100644
index 8f74aa7..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0050-TTY-fix-UV-serial-console-regression.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-From 0946969a44d5f9dec1506431e88e942ce924ab82 Mon Sep 17 00:00:00 2001
-From: Jiri Slaby <jslaby at suse.cz>
-Date: Thu, 12 Jan 2012 22:55:15 +0100
-Subject: [PATCH 50/90] TTY: fix UV serial console regression
-
-commit 0eee50af5b13e00b3fb7a5fe8480419a71b8235d upstream.
-
-Commit 74c2107759d (serial: Use block_til_ready helper) and its fixup
-3f582b8c110 (serial: fix termios settings in open) introduced a
-regression on UV systems. The serial eventually freezes while being
-used. It's completely unpredictable and sometimes needs a heap of
-traffic to happen first.
-
-To reproduce this, yast installation was used as it turned out to be
-pretty reliable in reproducing. Especially during installation process
-where one doesn't have an SSH daemon running. And no monitor as the HW
-is completely headless. So this was fun to find. Given the machine
-doesn't boot on vanilla before 2.6.36 final. (And the commits above
-are older.)
-
-Unless there is some bad race in the code, the hardware seems to be
-pretty broken. Otherwise pure MSR read should not cause such a bug,
-or?
-
-So to prevent the bug, revert to the old behavior. I.e. read modem
-status only if we really have to -- for non-CLOCAL set serials.
-Non-CLOCAL works on this hardware OK, I tried. See? I don't.
-
-And document that shit.
-
-Signed-off-by: Jiri Slaby <jslaby at suse.cz>
-References: https://lkml.org/lkml/2011/12/6/573
-References: https://bugzilla.novell.com/show_bug.cgi?id=718518
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/tty/tty_port.c | 12 +++++++-----
- 1 file changed, 7 insertions(+), 5 deletions(-)
-
-diff --git a/drivers/tty/tty_port.c b/drivers/tty/tty_port.c
-index ef9dd62..bf6e238 100644
---- a/drivers/tty/tty_port.c
-+++ b/drivers/tty/tty_port.c
-@@ -227,7 +227,6 @@ int tty_port_block_til_ready(struct tty_port *port,
- int do_clocal = 0, retval;
- unsigned long flags;
- DEFINE_WAIT(wait);
-- int cd;
-
- /* block if port is in the process of being closed */
- if (tty_hung_up_p(filp) || port->flags & ASYNC_CLOSING) {
-@@ -284,11 +283,14 @@ int tty_port_block_til_ready(struct tty_port *port,
- retval = -ERESTARTSYS;
- break;
- }
-- /* Probe the carrier. For devices with no carrier detect this
-- will always return true */
-- cd = tty_port_carrier_raised(port);
-+ /*
-+ * Probe the carrier. For devices with no carrier detect
-+ * tty_port_carrier_raised will always return true.
-+ * Never ask drivers if CLOCAL is set, this causes troubles
-+ * on some hardware.
-+ */
- if (!(port->flags & ASYNC_CLOSING) &&
-- (do_clocal || cd))
-+ (do_clocal || tty_port_carrier_raised(port)))
- break;
- if (signal_pending(current)) {
- retval = -ERESTARTSYS;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0051-serial-amba-pl011-lock-console-writes-against-interr.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0051-serial-amba-pl011-lock-console-writes-against-interr.patch
deleted file mode 100644
index 6d3d5b6..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0051-serial-amba-pl011-lock-console-writes-against-interr.patch
+++ /dev/null
@@ -1,67 +0,0 @@
-From b1778d0692279883367f4e51fef4a851910689b4 Mon Sep 17 00:00:00 2001
-From: Rabin Vincent <rabin.vincent at stericsson.com>
-Date: Tue, 17 Jan 2012 11:52:28 +0100
-Subject: [PATCH 51/90] serial: amba-pl011: lock console writes against
- interrupts
-
-commit ef605fdb33883d687cff5ba75095a91b313b4966 upstream.
-
-Protect against pl011_console_write() and the interrupt for
-the console UART running concurrently on different CPUs.
-
-Otherwise the console_write could spin for a long time
-waiting for the UART to become not busy, while the other
-CPU continuously services UART interrupts and keeps the
-UART busy.
-
-The checks for sysrq and oops_in_progress are taken
-from 8250.c.
-
-Signed-off-by: Rabin Vincent <rabin.vincent at stericsson.com>
-Reviewed-by: Srinidhi Kasagar <srinidhi.kasagar at stericsson.com>
-Reviewed-by: Bibek Basu <bibek.basu at stericsson.com>
-Reviewed-by: Shreshtha Kumar Sahu <shreshthakumar.sahu at stericsson.com>
-Signed-off-by: Linus Walleij <linus.walleij at linaro.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/tty/serial/amba-pl011.c | 14 ++++++++++++++
- 1 file changed, 14 insertions(+)
-
-diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c
-index 00233af..8e00926 100644
---- a/drivers/tty/serial/amba-pl011.c
-+++ b/drivers/tty/serial/amba-pl011.c
-@@ -1740,9 +1740,19 @@ pl011_console_write(struct console *co, const char *s, unsigned int count)
- {
- struct uart_amba_port *uap = amba_ports[co->index];
- unsigned int status, old_cr, new_cr;
-+ unsigned long flags;
-+ int locked = 1;
-
- clk_enable(uap->clk);
-
-+ local_irq_save(flags);
-+ if (uap->port.sysrq)
-+ locked = 0;
-+ else if (oops_in_progress)
-+ locked = spin_trylock(&uap->port.lock);
-+ else
-+ spin_lock(&uap->port.lock);
-+
- /*
- * First save the CR then disable the interrupts
- */
-@@ -1762,6 +1772,10 @@ pl011_console_write(struct console *co, const char *s, unsigned int count)
- } while (status & UART01x_FR_BUSY);
- writew(old_cr, uap->port.membase + UART011_CR);
-
-+ if (locked)
-+ spin_unlock(&uap->port.lock);
-+ local_irq_restore(flags);
-+
- clk_disable(uap->clk);
- }
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0052-jsm-Fixed-EEH-recovery-error.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0052-jsm-Fixed-EEH-recovery-error.patch
deleted file mode 100644
index d23d725..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0052-jsm-Fixed-EEH-recovery-error.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From e039921254b3e40b6a3ace33bac45c20b197fd0e Mon Sep 17 00:00:00 2001
-From: Lucas Kannebley Tavares <lucaskt at linux.vnet.ibm.com>
-Date: Mon, 9 Jan 2012 10:58:06 -0200
-Subject: [PATCH 52/90] jsm: Fixed EEH recovery error
-
-commit 26aa38cafae0dbef3b2fe75ea487c83313c36d45 upstream.
-
-There was an error on the jsm driver that would cause it to be unable to
-recover after a second error is detected.
-
-At the first error, the device recovers properly:
-
-[72521.485691] EEH: Detected PCI bus error on device 0003:02:00.0
-[72521.485695] EEH: This PCI device has failed 1 times in the last hour:
-...
-[72532.035693] ttyn3 at MMIO 0x0 (irq = 49) is a jsm
-[72532.105689] jsm: Port 3 added
-
-However, at the second error, it cascades until EEH disables the device:
-
-[72631.229549] Call Trace:
-...
-[72641.725687] jsm: Port 3 added
-[72641.725695] EEH: Detected PCI bus error on device 0003:02:00.0
-[72641.725698] EEH: This PCI device has failed 3 times in the last hour:
-
-It was caused because the PCI state was not being saved after the first
-restore. Therefore, at the second recovery the PCI state would not be
-restored.
-
-Signed-off-by: Lucas Kannebley Tavares <lucaskt at linux.vnet.ibm.com>
-Signed-off-by: Breno Leitao <brenohl at br.ibm.com>
-Acked-by: Thadeu Lima de Souza Cascardo <cascardo at linux.vnet.ibm.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/tty/serial/jsm/jsm_driver.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/tty/serial/jsm/jsm_driver.c b/drivers/tty/serial/jsm/jsm_driver.c
-index 7c867a0..7545fe1 100644
---- a/drivers/tty/serial/jsm/jsm_driver.c
-+++ b/drivers/tty/serial/jsm/jsm_driver.c
-@@ -251,6 +251,7 @@ static void jsm_io_resume(struct pci_dev *pdev)
- struct jsm_board *brd = pci_get_drvdata(pdev);
-
- pci_restore_state(pdev);
-+ pci_save_state(pdev);
-
- jsm_uart_port_init(brd);
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0053-iwlwifi-fix-PCI-E-transport-inta-race.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0053-iwlwifi-fix-PCI-E-transport-inta-race.patch
deleted file mode 100644
index c2182d8..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0053-iwlwifi-fix-PCI-E-transport-inta-race.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From 0f74abb5d9cf907fcce94d69514faeaa2d774378 Mon Sep 17 00:00:00 2001
-From: Johannes Berg <johannes.berg at intel.com>
-Date: Thu, 19 Jan 2012 08:20:57 -0800
-Subject: [PATCH 53/90] iwlwifi: fix PCI-E transport "inta" race
-
-commit b49ba04a3a0382e7314d990707c21094c410425a upstream.
-
-When an interrupt comes in, we read the reason
-bits and collect them into "trans_pcie->inta".
-This happens with the spinlock held. However,
-there's a bug resetting this variable -- that
-happens after the spinlock has been released.
-This means that it is possible for interrupts
-to be missed if the reset happens after some
-other interrupt reasons were already added to
-the variable.
-
-I found this by code inspection, looking for a
-reason that we sometimes see random commands
-time out. It seems possible that this causes
-such behaviour, but I can't say for sure right
-now since it happens extremely infrequently on
-my test systems.
-
-Signed-off-by: Johannes Berg <johannes.berg at intel.com>
-Signed-off-by: Wey-Yi Guy <wey-yi.w.guy at intel.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/net/wireless/iwlwifi/iwl-trans-pcie-rx.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/net/wireless/iwlwifi/iwl-trans-pcie-rx.c b/drivers/net/wireless/iwlwifi/iwl-trans-pcie-rx.c
-index 1920237..1daf01e 100644
---- a/drivers/net/wireless/iwlwifi/iwl-trans-pcie-rx.c
-+++ b/drivers/net/wireless/iwlwifi/iwl-trans-pcie-rx.c
-@@ -957,11 +957,11 @@ void iwl_irq_tasklet(struct iwl_trans *trans)
- }
- #endif
-
-- spin_unlock_irqrestore(&trans->shrd->lock, flags);
--
- /* saved interrupt in inta variable now we can reset trans_pcie->inta */
- trans_pcie->inta = 0;
-
-+ spin_unlock_irqrestore(&trans->shrd->lock, flags);
-+
- /* Now service all interrupt bits discovered above. */
- if (inta & CSR_INT_BIT_HW_ERR) {
- IWL_ERR(trans, "Hardware error detected. Restarting.\n");
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0054-vmwgfx-Fix-assignment-in-vmw_framebuffer_create_hand.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0054-vmwgfx-Fix-assignment-in-vmw_framebuffer_create_hand.patch
deleted file mode 100644
index 9c5014d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0054-vmwgfx-Fix-assignment-in-vmw_framebuffer_create_hand.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 24ac9d40092ac989e425100ff65c7781cb786077 Mon Sep 17 00:00:00 2001
-From: Ryan Mallon <rmallon at gmail.com>
-Date: Sat, 28 Jan 2012 08:51:40 +1100
-Subject: [PATCH 54/90] vmwgfx: Fix assignment in
- vmw_framebuffer_create_handle
-
-commit bf9c05d5b6d19b3e4c9fe21047694e94f48db89b upstream.
-
-The assignment of handle in vmw_framebuffer_create_handle doesn't actually do anything useful and is incorrectly assigning an integer value to a pointer argument. It appears that this is a typo and should be dereferencing handle rather than assigning to it directly. This fixes a bug where an undefined handle value is potentially returned to user-space.
-
-Signed-off-by: Ryan Mallon <rmallon at gmail.com>
-Reviewed-by: Jakob Bornecrantz<jakob at vmware.com>
-Signed-off-by: Dave Airlie <airlied at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/gpu/drm/vmwgfx/vmwgfx_kms.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
-index f94b33a..7c88f1f 100644
---- a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
-+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
-@@ -378,7 +378,7 @@ int vmw_framebuffer_create_handle(struct drm_framebuffer *fb,
- unsigned int *handle)
- {
- if (handle)
-- handle = 0;
-+ *handle = 0;
-
- return 0;
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0055-USB-Realtek-cr-fix-autopm-scheduling-while-atomic.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0055-USB-Realtek-cr-fix-autopm-scheduling-while-atomic.patch
deleted file mode 100644
index 9bf30b9..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0055-USB-Realtek-cr-fix-autopm-scheduling-while-atomic.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 389082531ace8ae430c318b99d3311bec2856914 Mon Sep 17 00:00:00 2001
-From: Stanislaw Gruszka <sgruszka at redhat.com>
-Date: Thu, 26 Jan 2012 12:29:42 +0100
-Subject: [PATCH 55/90] USB: Realtek cr: fix autopm scheduling while atomic
-
-commit b3ef051db763b640d1ff724b616ffba940896b44 upstream.
-
-Resolves:
-https://bugzilla.redhat.com/show_bug.cgi?id=784345
-
-Reported-by: Francis Moreau <francis.moro at gmail.com>
-Reported-and-tested-by: Christian D <chrisudeussen at gmail.com>
-Reported-and-tested-by: Jimmy Dorff <jdorff at phy.duke.edu>
-Reported-and-tested-by: collura at ieee.org
-Signed-off-by: Stanislaw Gruszka <sgruszka at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/storage/realtek_cr.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/usb/storage/realtek_cr.c b/drivers/usb/storage/realtek_cr.c
-index 0ce5f79..32c93d7 100644
---- a/drivers/usb/storage/realtek_cr.c
-+++ b/drivers/usb/storage/realtek_cr.c
-@@ -791,7 +791,7 @@ static void rts51x_suspend_timer_fn(unsigned long data)
- rts51x_set_stat(chip, RTS51X_STAT_SS);
- /* ignore mass storage interface's children */
- pm_suspend_ignore_children(&us->pusb_intf->dev, true);
-- usb_autopm_put_interface(us->pusb_intf);
-+ usb_autopm_put_interface_async(us->pusb_intf);
- US_DEBUGP("%s: RTS51X_STAT_SS 01,"
- "intf->pm_usage_cnt:%d, power.usage:%d\n",
- __func__,
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0056-USB-usbsevseg-fix-max-length.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0056-USB-usbsevseg-fix-max-length.patch
deleted file mode 100644
index b94f621..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0056-USB-usbsevseg-fix-max-length.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From d7ff9d198072099925dcc2bb81d17f1f08b0eba6 Mon Sep 17 00:00:00 2001
-From: Harrison Metzger <harrisonmetz at gmail.com>
-Date: Sun, 15 Jan 2012 08:43:24 -0600
-Subject: [PATCH 56/90] USB: usbsevseg: fix max length
-
-commit 1097ccebe630170080c41df0edcf88e0626e9c75 upstream.
-
-This changes the max length for the usb seven segment delcom device to 8
-from 6. Delcom has both 6 and 8 variants and having 8 works fine with
-devices which are only 6.
-
-Signed-off-by: Harrison Metzger <harrisonmetz at gmail.com>
-Signed-off-by: Stuart Pook <stuart at acm.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/misc/usbsevseg.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/usb/misc/usbsevseg.c b/drivers/usb/misc/usbsevseg.c
-index 417b8f2..59689fa 100644
---- a/drivers/usb/misc/usbsevseg.c
-+++ b/drivers/usb/misc/usbsevseg.c
-@@ -24,7 +24,7 @@
-
- #define VENDOR_ID 0x0fc5
- #define PRODUCT_ID 0x1227
--#define MAXLEN 6
-+#define MAXLEN 8
-
- /* table of devices that work with this driver */
- static const struct usb_device_id id_table[] = {
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0057-usb-gadget-langwell-don-t-call-gadget-s-disconnect.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0057-usb-gadget-langwell-don-t-call-gadget-s-disconnect.patch
deleted file mode 100644
index 90f87ba..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0057-usb-gadget-langwell-don-t-call-gadget-s-disconnect.patch
+++ /dev/null
@@ -1,94 +0,0 @@
-From ff10feffa49fc6a81438d1f66384754e77b7dd3c Mon Sep 17 00:00:00 2001
-From: Alexander Shishkin <alexander.shishkin at linux.intel.com>
-Date: Wed, 21 Dec 2011 10:19:40 +0200
-Subject: [PATCH 57/90] usb: gadget: langwell: don't call gadget's
- disconnect()
-
-commit 37fd37108449d574da11aa9055c5c8afb39ff226 upstream.
-
-UDC core will call disconnect() and unbind() for us upon the gadget
-removal, so we should not do it ourselves. Otherwise, a composite
-gadget will explode, for example. Others might too.
-
-This was introduced during conversion to new style gadget in 2c7f0989
-(usb: gadget: langwell: convert to new style).
-
-Signed-off-by: Alexander Shishkin <alexander.shishkin at linux.intel.com>
-Cc: Heikki Krogerus <heikki.krogerus at linux.intel.com>
-Cc: linux-usb at vger.kernel.org
-Signed-off-by: Felipe Balbi <balbi at ti.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/gadget/langwell_udc.c | 18 ++++++++----------
- 1 file changed, 8 insertions(+), 10 deletions(-)
-
-diff --git a/drivers/usb/gadget/langwell_udc.c b/drivers/usb/gadget/langwell_udc.c
-index fa0fcc1..b0c5b6d 100644
---- a/drivers/usb/gadget/langwell_udc.c
-+++ b/drivers/usb/gadget/langwell_udc.c
-@@ -1522,8 +1522,7 @@ static void langwell_udc_stop(struct langwell_udc *dev)
-
-
- /* stop all USB activities */
--static void stop_activity(struct langwell_udc *dev,
-- struct usb_gadget_driver *driver)
-+static void stop_activity(struct langwell_udc *dev)
- {
- struct langwell_ep *ep;
- dev_dbg(&dev->pdev->dev, "---> %s()\n", __func__);
-@@ -1535,9 +1534,9 @@ static void stop_activity(struct langwell_udc *dev,
- }
-
- /* report disconnect; the driver is already quiesced */
-- if (driver) {
-+ if (dev->driver) {
- spin_unlock(&dev->lock);
-- driver->disconnect(&dev->gadget);
-+ dev->driver->disconnect(&dev->gadget);
- spin_lock(&dev->lock);
- }
-
-@@ -1925,11 +1924,10 @@ static int langwell_stop(struct usb_gadget *g,
-
- /* stop all usb activities */
- dev->gadget.speed = USB_SPEED_UNKNOWN;
-- stop_activity(dev, driver);
-- spin_unlock_irqrestore(&dev->lock, flags);
--
- dev->gadget.dev.driver = NULL;
- dev->driver = NULL;
-+ stop_activity(dev);
-+ spin_unlock_irqrestore(&dev->lock, flags);
-
- device_remove_file(&dev->pdev->dev, &dev_attr_function);
-
-@@ -2733,7 +2731,7 @@ static void handle_usb_reset(struct langwell_udc *dev)
- dev->bus_reset = 1;
-
- /* reset all the queues, stop all USB activities */
-- stop_activity(dev, dev->driver);
-+ stop_activity(dev);
- dev->usb_state = USB_STATE_DEFAULT;
- } else {
- dev_vdbg(&dev->pdev->dev, "device controller reset\n");
-@@ -2741,7 +2739,7 @@ static void handle_usb_reset(struct langwell_udc *dev)
- langwell_udc_reset(dev);
-
- /* reset all the queues, stop all USB activities */
-- stop_activity(dev, dev->driver);
-+ stop_activity(dev);
-
- /* reset ep0 dQH and endptctrl */
- ep0_reset(dev);
-@@ -3367,7 +3365,7 @@ static int langwell_udc_suspend(struct pci_dev *pdev, pm_message_t state)
-
- spin_lock_irq(&dev->lock);
- /* stop all usb activities */
-- stop_activity(dev, dev->driver);
-+ stop_activity(dev);
- spin_unlock_irq(&dev->lock);
-
- /* free dTD dma_pool and dQH */
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0058-usb-gadget-storage-endian-fix.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0058-usb-gadget-storage-endian-fix.patch
deleted file mode 100644
index d5c7fec..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0058-usb-gadget-storage-endian-fix.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 40fe12a7ee76b320a7662d8da492c80743deaa1b Mon Sep 17 00:00:00 2001
-From: Andiry Xu <andiry.xu at amd.com>
-Date: Wed, 4 Jan 2012 15:18:27 +0800
-Subject: [PATCH 58/90] usb: gadget: storage: endian fix
-
-commit a85016390135d577c457876d0e905095600751de upstream.
-
-Fix some endian issues for storage gadgets.
-
-Signed-off-by: Andiry Xu <andiry.xu at amd.com>
-Signed-off-by: Felipe Balbi <balbi at ti.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/gadget/storage_common.c | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/usb/gadget/storage_common.c b/drivers/usb/gadget/storage_common.c
-index c7f291a..85ea14e 100644
---- a/drivers/usb/gadget/storage_common.c
-+++ b/drivers/usb/gadget/storage_common.c
-@@ -598,16 +598,16 @@ static __maybe_unused struct usb_ss_cap_descriptor fsg_ss_cap_desc = {
- | USB_5GBPS_OPERATION),
- .bFunctionalitySupport = USB_LOW_SPEED_OPERATION,
- .bU1devExitLat = USB_DEFAULT_U1_DEV_EXIT_LAT,
-- .bU2DevExitLat = USB_DEFAULT_U2_DEV_EXIT_LAT,
-+ .bU2DevExitLat = cpu_to_le16(USB_DEFAULT_U2_DEV_EXIT_LAT),
- };
-
- static __maybe_unused struct usb_bos_descriptor fsg_bos_desc = {
- .bLength = USB_DT_BOS_SIZE,
- .bDescriptorType = USB_DT_BOS,
-
-- .wTotalLength = USB_DT_BOS_SIZE
-+ .wTotalLength = cpu_to_le16(USB_DT_BOS_SIZE
- + USB_DT_USB_EXT_CAP_SIZE
-- + USB_DT_USB_SS_CAP_SIZE,
-+ + USB_DT_USB_SS_CAP_SIZE),
-
- .bNumDeviceCaps = 2,
- };
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0059-drivers-usb-host-ehci-fsl.c-add-missing-iounmap.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0059-drivers-usb-host-ehci-fsl.c-add-missing-iounmap.patch
deleted file mode 100644
index c45e2ac..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0059-drivers-usb-host-ehci-fsl.c-add-missing-iounmap.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From e548ad84a8c8bb04cb2b87b339d244a2335a6ede Mon Sep 17 00:00:00 2001
-From: Julia Lawall <Julia.Lawall at lip6.fr>
-Date: Thu, 12 Jan 2012 10:55:13 +0100
-Subject: [PATCH 59/90] drivers/usb/host/ehci-fsl.c: add missing iounmap
-
-commit 2492c6e6454ff3edb11e273b071a6ea80a199c71 upstream.
-
-Add missing iounmap in error handling code, in a case where the function
-already preforms iounmap on some other execution path.
-
-A simplified version of the semantic match that finds this problem is as
-follows: (http://coccinelle.lip6.fr/)
-
-// <smpl>
-@@
-expression e;
-statement S,S1;
-int ret;
-@@
-e = \(ioremap\|ioremap_nocache\)(...)
-... when != iounmap(e)
-if (<+...e...+>) S
-... when any
- when != iounmap(e)
-*if (...)
- { ... when != iounmap(e)
- return ...; }
-... when any
-iounmap(e);
-// </smpl>
-
-Signed-off-by: Julia Lawall <Julia.Lawall at lip6.fr>
-Acked-by: Alan Stern <stern at rowland.harvard.edu>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/host/ehci-fsl.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/usb/host/ehci-fsl.c b/drivers/usb/host/ehci-fsl.c
-index e90344a..b556a72 100644
---- a/drivers/usb/host/ehci-fsl.c
-+++ b/drivers/usb/host/ehci-fsl.c
-@@ -125,7 +125,7 @@ static int usb_hcd_fsl_probe(const struct hc_driver *driver,
- */
- if (pdata->init && pdata->init(pdev)) {
- retval = -ENODEV;
-- goto err3;
-+ goto err4;
- }
-
- /* Enable USB controller, 83xx or 8536 */
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0060-xhci-Fix-USB-3.0-device-restart-on-resume.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0060-xhci-Fix-USB-3.0-device-restart-on-resume.patch
deleted file mode 100644
index 568bdf7..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0060-xhci-Fix-USB-3.0-device-restart-on-resume.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From 3f5d6421aca0bcbeb9f0b234e716c0c82b4f04bc Mon Sep 17 00:00:00 2001
-From: Sarah Sharp <sarah.a.sharp at linux.intel.com>
-Date: Mon, 14 Nov 2011 17:51:39 -0800
-Subject: [PATCH 60/90] xhci: Fix USB 3.0 device restart on resume.
-
-commit d0cd5d482b8a6dc92c6c69a5387baf72ea84f23a upstream.
-
-The xHCI hub port code gets passed a zero-based port number by the USB
-core. It then adds one to in order to find a device slot by port number
-and device speed by calling xhci_find_slot_id_by_port. That function
-clearly states it requires a one-based port number. The xHCI port
-status change event handler was using a zero-based port number that it
-got from find_faked_portnum_from_hw_portnum, not a one-based port
-number. This lead to the doorbells never being rung for a device after
-a resume, or worse, a different device with the same speed having its
-doorbell rung (which could lead to bad power management in the xHCI host
-controller).
-
-This patch should be backported to kernels as old as 2.6.39.
-
-Signed-off-by: Sarah Sharp <sarah.a.sharp at linux.intel.com>
-Acked-by: Andiry Xu <andiry.xu at amd.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/host/xhci-ring.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c
-index d28c586..ee0b4d7 100644
---- a/drivers/usb/host/xhci-ring.c
-+++ b/drivers/usb/host/xhci-ring.c
-@@ -1215,6 +1215,7 @@ static void handle_vendor_event(struct xhci_hcd *xhci,
- *
- * Returns a zero-based port number, which is suitable for indexing into each of
- * the split roothubs' port arrays and bus state arrays.
-+ * Add one to it in order to call xhci_find_slot_id_by_port.
- */
- static unsigned int find_faked_portnum_from_hw_portnum(struct usb_hcd *hcd,
- struct xhci_hcd *xhci, u32 port_id)
-@@ -1335,7 +1336,7 @@ static void handle_port_status(struct xhci_hcd *xhci,
- xhci_set_link_state(xhci, port_array, faked_port_index,
- XDEV_U0);
- slot_id = xhci_find_slot_id_by_port(hcd, xhci,
-- faked_port_index);
-+ faked_port_index + 1);
- if (!slot_id) {
- xhci_dbg(xhci, "slot_id is zero\n");
- goto cleanup;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0061-xHCI-Cleanup-isoc-transfer-ring-when-TD-length-misma.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0061-xHCI-Cleanup-isoc-transfer-ring-when-TD-length-misma.patch
deleted file mode 100644
index ab37395..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0061-xHCI-Cleanup-isoc-transfer-ring-when-TD-length-misma.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From cd06fccbc411c12ce1f1c20cebacc3684ba6e957 Mon Sep 17 00:00:00 2001
-From: Andiry Xu <andiry.xu at amd.com>
-Date: Wed, 18 Jan 2012 17:47:12 +0800
-Subject: [PATCH 61/90] xHCI: Cleanup isoc transfer ring when TD length
- mismatch found
-
-commit cf840551a884360841bd3d3ce1ad0868ff0b759a upstream.
-
-When a TD length mismatch is found during isoc TRB enqueue, it directly
-returns -EINVAL. However, isoc transfer is partially enqueued at this time,
-and the ring should be cleared.
-
-This should be backported to kernels as old as 2.6.36, which contain the
-commit 522989a27c7badb608155b1f1dea3487ed431f74 "xhci: Fix failed
-enqueue in the middle of isoch TD."
-
-Signed-off-by: Andiry Xu <andiry.xu at amd.com>
-Signed-off-by: Sarah Sharp <sarah.a.sharp at linux.intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/host/xhci-ring.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c
-index ee0b4d7..ae92dc4 100644
---- a/drivers/usb/host/xhci-ring.c
-+++ b/drivers/usb/host/xhci-ring.c
-@@ -3373,7 +3373,8 @@ static int xhci_queue_isoc_tx(struct xhci_hcd *xhci, gfp_t mem_flags,
- /* Check TD length */
- if (running_total != td_len) {
- xhci_err(xhci, "ISOC TD length unmatch\n");
-- return -EINVAL;
-+ ret = -EINVAL;
-+ goto cleanup;
- }
- }
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0062-usb-musb-davinci-fix-build-breakage.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0062-usb-musb-davinci-fix-build-breakage.patch
deleted file mode 100644
index 68bde2d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0062-usb-musb-davinci-fix-build-breakage.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From f8c07cb92ea86609586270f60474814fc09da890 Mon Sep 17 00:00:00 2001
-From: Sekhar Nori <nsekhar at ti.com>
-Date: Wed, 28 Dec 2011 12:02:57 +0530
-Subject: [PATCH 62/90] usb: musb: davinci: fix build breakage
-
-commit 006896fc612f11bf0624db7814a75d0d5410855f upstream.
-
-Commit 0020afb369859472a461ef4af6410732e929d402 (ARM: mach-davinci:
-remove mach/memory.h) removed mach/memory.h for DaVinci which broke
-DaVinci MUSB build.
-
-mach/memory.h is not actually needed in davinci.c, so remove it.
-While at it, also remove some more machine specific inclulde
-files which are not needed for build.
-
-Tested on DM644x EVM using USB card reader.
-
-Signed-off-by: Sekhar Nori <nsekhar at ti.com>
-Signed-off-by: Felipe Balbi <balbi at ti.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/musb/davinci.c | 3 ---
- 1 file changed, 3 deletions(-)
-
-diff --git a/drivers/usb/musb/davinci.c b/drivers/usb/musb/davinci.c
-index 4d365d5..3911d9a 100644
---- a/drivers/usb/musb/davinci.c
-+++ b/drivers/usb/musb/davinci.c
-@@ -33,9 +33,6 @@
- #include <linux/platform_device.h>
- #include <linux/dma-mapping.h>
-
--#include <mach/hardware.h>
--#include <mach/memory.h>
--#include <asm/gpio.h>
- #include <mach/cputype.h>
-
- #include <asm/mach-types.h>
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0063-hwmon-f71805f-Fix-clamping-of-temperature-limits.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0063-hwmon-f71805f-Fix-clamping-of-temperature-limits.patch
deleted file mode 100644
index fa783e7..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0063-hwmon-f71805f-Fix-clamping-of-temperature-limits.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From bdf8cb4ebb0c6f8e60c3900cdc34289b4e3ca924 Mon Sep 17 00:00:00 2001
-From: Jean Delvare <khali at linux-fr.org>
-Date: Fri, 20 Jan 2012 10:09:23 -0500
-Subject: [PATCH 63/90] hwmon: (f71805f) Fix clamping of temperature limits
-
-commit 86b2bbfdbd1fcc4a3aa62ccd3f245c40c5ad5b85 upstream.
-
-Properly clamp temperature limits set by the user. Without this fix,
-attempts to write temperature limits above the maximum supported by
-the chip (255 degrees Celsius) would arbitrarily and unexpectedly
-result in the limit being set to 0 degree Celsius.
-
-Signed-off-by: Jean Delvare <khali at linux-fr.org>
-Signed-off-by: Guenter Roeck <guenter.roeck at ericsson.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/hwmon/f71805f.c | 10 +++++-----
- 1 file changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/drivers/hwmon/f71805f.c b/drivers/hwmon/f71805f.c
-index 92f9497..6dbfd3e 100644
---- a/drivers/hwmon/f71805f.c
-+++ b/drivers/hwmon/f71805f.c
-@@ -283,11 +283,11 @@ static inline long temp_from_reg(u8 reg)
-
- static inline u8 temp_to_reg(long val)
- {
-- if (val < 0)
-- val = 0;
-- else if (val > 1000 * 0xff)
-- val = 0xff;
-- return ((val + 500) / 1000);
-+ if (val <= 0)
-+ return 0;
-+ if (val >= 1000 * 0xff)
-+ return 0xff;
-+ return (val + 500) / 1000;
- }
-
- /*
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0064-hwmon-w83627ehf-Disable-setting-DC-mode-for-pwm2-pwm.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0064-hwmon-w83627ehf-Disable-setting-DC-mode-for-pwm2-pwm.patch
deleted file mode 100644
index 95d3ea7..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0064-hwmon-w83627ehf-Disable-setting-DC-mode-for-pwm2-pwm.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From f3e66dfb3db5b8aab5d05ef44a1f2ec9490d9eea Mon Sep 17 00:00:00 2001
-From: Guenter Roeck <linux at roeck-us.net>
-Date: Fri, 27 Jan 2012 17:56:06 -0800
-Subject: [PATCH 64/90] hwmon: (w83627ehf) Disable setting DC mode for pwm2,
- pwm3 on NCT6776F
-
-commit ad77c3e1808f07fa70f707b1c92a683b7c7d3f85 upstream.
-
-NCT6776F only supports pwm mode for pwm2 and pwm3. Return error if an attempt
-is made to set those pwm channels to DC mode.
-
-Signed-off-by: Guenter Roeck <linux at roeck-us.net>
-Acked-by: Jean Delvare <khali at linux-fr.org>
-Signed-off-by: Guenter Roeck <guenter.roeck at ericsson.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/hwmon/w83627ehf.c | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-diff --git a/drivers/hwmon/w83627ehf.c b/drivers/hwmon/w83627ehf.c
-index 93f5fc7..4b57ab6 100644
---- a/drivers/hwmon/w83627ehf.c
-+++ b/drivers/hwmon/w83627ehf.c
-@@ -1319,6 +1319,7 @@ store_pwm_mode(struct device *dev, struct device_attribute *attr,
- {
- struct w83627ehf_data *data = dev_get_drvdata(dev);
- struct sensor_device_attribute *sensor_attr = to_sensor_dev_attr(attr);
-+ struct w83627ehf_sio_data *sio_data = dev->platform_data;
- int nr = sensor_attr->index;
- unsigned long val;
- int err;
-@@ -1330,6 +1331,11 @@ store_pwm_mode(struct device *dev, struct device_attribute *attr,
-
- if (val > 1)
- return -EINVAL;
-+
-+ /* On NCT67766F, DC mode is only supported for pwm1 */
-+ if (sio_data->kind == nct6776 && nr && val != 1)
-+ return -EINVAL;
-+
- mutex_lock(&data->update_lock);
- reg = w83627ehf_read_value(data, W83627EHF_REG_PWM_ENABLE[nr]);
- data->pwm_mode[nr] = val;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0065-hwmon-sht15-fix-bad-error-code.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0065-hwmon-sht15-fix-bad-error-code.patch
deleted file mode 100644
index 70a3809..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0065-hwmon-sht15-fix-bad-error-code.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From fdc0431bfce635348e459fb3d3a27972a348cacc Mon Sep 17 00:00:00 2001
-From: Vivien Didelot <vivien.didelot at savoirfairelinux.com>
-Date: Thu, 26 Jan 2012 15:59:00 -0500
-Subject: [PATCH 65/90] hwmon: (sht15) fix bad error code
-
-commit 6edf3c30af01854c416f8654d3d5d2652470afd4 upstream.
-
-When no platform data was supplied, returned error code was 0.
-
-Signed-off-by: Vivien Didelot <vivien.didelot at savoirfairelinux.com>
-Signed-off-by: Guenter Roeck <guenter.roeck at ericsson.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/hwmon/sht15.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/hwmon/sht15.c b/drivers/hwmon/sht15.c
-index fe4104c..5357925 100644
---- a/drivers/hwmon/sht15.c
-+++ b/drivers/hwmon/sht15.c
-@@ -883,7 +883,7 @@ static int sht15_invalidate_voltage(struct notifier_block *nb,
-
- static int __devinit sht15_probe(struct platform_device *pdev)
- {
-- int ret = 0;
-+ int ret;
- struct sht15_data *data = kzalloc(sizeof(*data), GFP_KERNEL);
- u8 status = 0;
-
-@@ -901,6 +901,7 @@ static int __devinit sht15_probe(struct platform_device *pdev)
- init_waitqueue_head(&data->wait_queue);
-
- if (pdev->dev.platform_data == NULL) {
-+ ret = -EINVAL;
- dev_err(&pdev->dev, "no platform data supplied\n");
- goto err_free_data;
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0066-USB-cdc-wdm-call-wake_up_all-to-allow-driver-to-shut.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0066-USB-cdc-wdm-call-wake_up_all-to-allow-driver-to-shut.patch
deleted file mode 100644
index 177d22f..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0066-USB-cdc-wdm-call-wake_up_all-to-allow-driver-to-shut.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From 206106e0b0fad394ef57aa6cd7b5d2c59bccde6e Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Bj=C3=B8rn=20Mork?= <bjorn at mork.no>
-Date: Mon, 16 Jan 2012 15:11:57 +0100
-Subject: [PATCH 66/90] USB: cdc-wdm: call wake_up_all to allow driver to
- shutdown on device removal
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit 62aaf24dc125d7c55c93e313d15611f152b030c7 upstream.
-
-wdm_disconnect() waits for the mutex held by wdm_read() before
-calling wake_up_all(). This causes a deadlock, preventing device removal
-to complete. Do the wake_up_all() before we start waiting for the locks.
-
-Signed-off-by: Bjørn Mork <bjorn at mork.no>
-Cc: Oliver Neukum <oliver at neukum.org>
-Cc: stable <stable at vger.kernel.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/class/cdc-wdm.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/usb/class/cdc-wdm.c b/drivers/usb/class/cdc-wdm.c
-index 4a29a80..d2cda26 100644
---- a/drivers/usb/class/cdc-wdm.c
-+++ b/drivers/usb/class/cdc-wdm.c
-@@ -786,13 +786,13 @@ static void wdm_disconnect(struct usb_interface *intf)
- /* to terminate pending flushes */
- clear_bit(WDM_IN_USE, &desc->flags);
- spin_unlock_irqrestore(&desc->iuspin, flags);
-+ wake_up_all(&desc->wait);
- mutex_lock(&desc->rlock);
- mutex_lock(&desc->wlock);
- kill_urbs(desc);
- cancel_work_sync(&desc->rxwork);
- mutex_unlock(&desc->wlock);
- mutex_unlock(&desc->rlock);
-- wake_up_all(&desc->wait);
- if (!desc->count)
- cleanup(desc);
- mutex_unlock(&wdm_mutex);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0067-USB-cdc-wdm-better-allocate-a-buffer-that-is-at-leas.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0067-USB-cdc-wdm-better-allocate-a-buffer-that-is-at-leas.patch
deleted file mode 100644
index 5b0e643..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0067-USB-cdc-wdm-better-allocate-a-buffer-that-is-at-leas.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From d4b71a388aa58d6d1e46a6207c0acc756c9c0cf0 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Bj=C3=B8rn=20Mork?= <bjorn at mork.no>
-Date: Mon, 16 Jan 2012 15:11:59 +0100
-Subject: [PATCH 67/90] USB: cdc-wdm: better allocate a buffer that is at
- least as big as we tell the USB core
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit 655e247daf52b202a6c2d0f8a06dd2051e756ce4 upstream.
-
-As it turns out, there was a mismatch between the allocated inbuf size
-(desc->bMaxPacketSize0, typically something like 64) and the length we
-specified in the URB (desc->wMaxCommand, typically something like 2048)
-
-Signed-off-by: Bjørn Mork <bjorn at mork.no>
-Cc: Oliver Neukum <oliver at neukum.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/class/cdc-wdm.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/usb/class/cdc-wdm.c b/drivers/usb/class/cdc-wdm.c
-index d2cda26..f0deb9e 100644
---- a/drivers/usb/class/cdc-wdm.c
-+++ b/drivers/usb/class/cdc-wdm.c
-@@ -723,7 +723,7 @@ next_desc:
- goto err;
-
- desc->inbuf = usb_alloc_coherent(interface_to_usbdev(intf),
-- desc->bMaxPacketSize0,
-+ desc->wMaxCommand,
- GFP_KERNEL,
- &desc->response->transfer_dma);
- if (!desc->inbuf)
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0068-USB-cdc-wdm-Avoid-hanging-on-interface-with-no-USB_C.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0068-USB-cdc-wdm-Avoid-hanging-on-interface-with-no-USB_C.patch
deleted file mode 100644
index d404d31..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0068-USB-cdc-wdm-Avoid-hanging-on-interface-with-no-USB_C.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From 99e5fa08e85ab983d67197fd08a88e9e46536dba Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Bj=C3=B8rn=20Mork?= <bjorn at mork.no>
-Date: Fri, 20 Jan 2012 01:49:57 +0100
-Subject: [PATCH 68/90] USB: cdc-wdm: Avoid hanging on interface with no
- USB_CDC_DMM_TYPE
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit 15699e6fafc3a90e5fdc2ef30555a04dee62286f upstream.
-
-The probe does not strictly require the USB_CDC_DMM_TYPE
-descriptor, which is a good thing as it makes the driver
-usable on non-conforming interfaces. A user could e.g.
-bind to it to a CDC ECM interface by using the new_id and
-bind sysfs files. But this would fail with a 0 buffer length
-due to the missing descriptor.
-
-Fix by defining a reasonable fallback size: The minimum
-device receive buffer size required by the CDC WMC standard,
-revision 1.1
-
-Signed-off-by: Bjørn Mork <bjorn at mork.no>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/class/cdc-wdm.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/usb/class/cdc-wdm.c b/drivers/usb/class/cdc-wdm.c
-index f0deb9e..fd4aee1 100644
---- a/drivers/usb/class/cdc-wdm.c
-+++ b/drivers/usb/class/cdc-wdm.c
-@@ -57,6 +57,8 @@ MODULE_DEVICE_TABLE (usb, wdm_ids);
-
- #define WDM_MAX 16
-
-+/* CDC-WMC r1.1 requires wMaxCommand to be "at least 256 decimal (0x100)" */
-+#define WDM_DEFAULT_BUFSIZE 256
-
- static DEFINE_MUTEX(wdm_mutex);
-
-@@ -636,7 +638,7 @@ static int wdm_probe(struct usb_interface *intf, const struct usb_device_id *id)
- struct usb_cdc_dmm_desc *dmhd;
- u8 *buffer = intf->altsetting->extra;
- int buflen = intf->altsetting->extralen;
-- u16 maxcom = 0;
-+ u16 maxcom = WDM_DEFAULT_BUFSIZE;
-
- if (!buffer)
- goto out;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0069-netns-fix-net_alloc_generic.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0069-netns-fix-net_alloc_generic.patch
deleted file mode 100644
index 1e69738..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0069-netns-fix-net_alloc_generic.patch
+++ /dev/null
@@ -1,120 +0,0 @@
-From a1294ecfc001aebbd064325e37a341c552de29e7 Mon Sep 17 00:00:00 2001
-From: Eric Dumazet <eric.dumazet at gmail.com>
-Date: Thu, 26 Jan 2012 00:41:38 +0000
-Subject: [PATCH 69/90] netns: fix net_alloc_generic()
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-[ Upstream commit 073862ba5d249c20bd5c49fc6d904ff0e1f6a672 ]
-
-When a new net namespace is created, we should attach to it a "struct
-net_generic" with enough slots (even empty), or we can hit the following
-BUG_ON() :
-
-[ 200.752016] kernel BUG at include/net/netns/generic.h:40!
-...
-[ 200.752016] [<ffffffff825c3cea>] ? get_cfcnfg+0x3a/0x180
-[ 200.752016] [<ffffffff821cf0b0>] ? lockdep_rtnl_is_held+0x10/0x20
-[ 200.752016] [<ffffffff825c41be>] caif_device_notify+0x2e/0x530
-[ 200.752016] [<ffffffff810d61b7>] notifier_call_chain+0x67/0x110
-[ 200.752016] [<ffffffff810d67c1>] raw_notifier_call_chain+0x11/0x20
-[ 200.752016] [<ffffffff821bae82>] call_netdevice_notifiers+0x32/0x60
-[ 200.752016] [<ffffffff821c2b26>] register_netdevice+0x196/0x300
-[ 200.752016] [<ffffffff821c2ca9>] register_netdev+0x19/0x30
-[ 200.752016] [<ffffffff81c1c67a>] loopback_net_init+0x4a/0xa0
-[ 200.752016] [<ffffffff821b5e62>] ops_init+0x42/0x180
-[ 200.752016] [<ffffffff821b600b>] setup_net+0x6b/0x100
-[ 200.752016] [<ffffffff821b6466>] copy_net_ns+0x86/0x110
-[ 200.752016] [<ffffffff810d5789>] create_new_namespaces+0xd9/0x190
-
-net_alloc_generic() should take into account the maximum index into the
-ptr array, as a subsystem might use net_generic() anytime.
-
-This also reduces number of reallocations in net_assign_generic()
-
-Reported-by: Sasha Levin <levinsasha928 at gmail.com>
-Tested-by: Sasha Levin <levinsasha928 at gmail.com>
-Signed-off-by: Eric Dumazet <eric.dumazet at gmail.com>
-Cc: Sjur Brændeland <sjur.brandeland at stericsson.com>
-Cc: Eric W. Biederman <ebiederm at xmission.com>
-Cc: Pavel Emelyanov <xemul at openvz.org>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- net/core/net_namespace.c | 31 ++++++++++++++++---------------
- 1 file changed, 16 insertions(+), 15 deletions(-)
-
-diff --git a/net/core/net_namespace.c b/net/core/net_namespace.c
-index aefcd7a..0e950fd 100644
---- a/net/core/net_namespace.c
-+++ b/net/core/net_namespace.c
-@@ -30,6 +30,20 @@ EXPORT_SYMBOL(init_net);
-
- #define INITIAL_NET_GEN_PTRS 13 /* +1 for len +2 for rcu_head */
-
-+static unsigned int max_gen_ptrs = INITIAL_NET_GEN_PTRS;
-+
-+static struct net_generic *net_alloc_generic(void)
-+{
-+ struct net_generic *ng;
-+ size_t generic_size = offsetof(struct net_generic, ptr[max_gen_ptrs]);
-+
-+ ng = kzalloc(generic_size, GFP_KERNEL);
-+ if (ng)
-+ ng->len = max_gen_ptrs;
-+
-+ return ng;
-+}
-+
- static int net_assign_generic(struct net *net, int id, void *data)
- {
- struct net_generic *ng, *old_ng;
-@@ -43,8 +57,7 @@ static int net_assign_generic(struct net *net, int id, void *data)
- if (old_ng->len >= id)
- goto assign;
-
-- ng = kzalloc(sizeof(struct net_generic) +
-- id * sizeof(void *), GFP_KERNEL);
-+ ng = net_alloc_generic();
- if (ng == NULL)
- return -ENOMEM;
-
-@@ -59,7 +72,6 @@ static int net_assign_generic(struct net *net, int id, void *data)
- * the old copy for kfree after a grace period.
- */
-
-- ng->len = id;
- memcpy(&ng->ptr, &old_ng->ptr, old_ng->len * sizeof(void*));
-
- rcu_assign_pointer(net->gen, ng);
-@@ -161,18 +173,6 @@ out_undo:
- goto out;
- }
-
--static struct net_generic *net_alloc_generic(void)
--{
-- struct net_generic *ng;
-- size_t generic_size = sizeof(struct net_generic) +
-- INITIAL_NET_GEN_PTRS * sizeof(void *);
--
-- ng = kzalloc(generic_size, GFP_KERNEL);
-- if (ng)
-- ng->len = INITIAL_NET_GEN_PTRS;
--
-- return ng;
--}
-
- #ifdef CONFIG_NET_NS
- static struct kmem_cache *net_cachep;
-@@ -483,6 +483,7 @@ again:
- }
- return error;
- }
-+ max_gen_ptrs = max_t(unsigned int, max_gen_ptrs, *ops->id);
- }
- error = __register_pernet_operations(list, ops);
- if (error) {
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0070-netns-Fail-conspicously-if-someone-uses-net_generic-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0070-netns-Fail-conspicously-if-someone-uses-net_generic-.patch
deleted file mode 100644
index c48b37d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0070-netns-Fail-conspicously-if-someone-uses-net_generic-.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From d47f7836f0e0061a67c5c8fc39d4a23de52fab9f Mon Sep 17 00:00:00 2001
-From: "Eric W. Biederman" <ebiederm at xmission.com>
-Date: Thu, 26 Jan 2012 14:02:55 +0000
-Subject: [PATCH 70/90] netns: Fail conspicously if someone uses net_generic
- at an inappropriate time.
-
-[ Upstream commit 5ee4433efe99b9f39f6eff5052a177bbcfe72cea ]
-
-By definition net_generic should never be called when it can return
-NULL. Fail conspicously with a BUG_ON to make it clear when people mess
-up that a NULL return should never happen.
-
-Recently there was a bug in the CAIF subsystem where it was registered
-with register_pernet_device instead of register_pernet_subsys. It was
-erroneously concluded that net_generic could validly return NULL and
-that net_assign_generic was buggy (when it was just inefficient).
-Hopefully this BUG_ON will prevent people to coming to similar erroneous
-conclusions in the futrue.
-
-Signed-off-by: Eric W. Biederman <ebiederm at xmission.com>
-Tested-by: Sasha Levin <levinsasha928 at gmail.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- include/net/netns/generic.h | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/include/net/netns/generic.h b/include/net/netns/generic.h
-index 3419bf5..d55f434 100644
---- a/include/net/netns/generic.h
-+++ b/include/net/netns/generic.h
-@@ -41,6 +41,7 @@ static inline void *net_generic(const struct net *net, int id)
- ptr = ng->ptr[id - 1];
- rcu_read_unlock();
-
-+ BUG_ON(!ptr);
- return ptr;
- }
- #endif
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0071-net-caif-Register-properly-as-a-pernet-subsystem.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0071-net-caif-Register-properly-as-a-pernet-subsystem.patch
deleted file mode 100644
index 7ecbbf0..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0071-net-caif-Register-properly-as-a-pernet-subsystem.patch
+++ /dev/null
@@ -1,117 +0,0 @@
-From 94f76501f610e1baf20fbcdd4c4fd01c5d7936cd Mon Sep 17 00:00:00 2001
-From: "Eric W. Biederman" <ebiederm at xmission.com>
-Date: Thu, 26 Jan 2012 14:04:53 +0000
-Subject: [PATCH 71/90] net caif: Register properly as a pernet subsystem.
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-[ Upstream commit 8a8ee9aff6c3077dd9c2c7a77478e8ed362b96c6 ]
-
-caif is a subsystem and as such it needs to register with
-register_pernet_subsys instead of register_pernet_device.
-
-Among other problems using register_pernet_device was resulting in
-net_generic being called before the caif_net structure was allocated.
-Which has been causing net_generic to fail with either BUG_ON's or by
-return NULL pointers.
-
-A more ugly problem that could be caused is packets in flight why the
-subsystem is shutting down.
-
-To remove confusion also remove the cruft cause by inappropriately
-trying to fix this bug.
-
-With the aid of the previous patch I have tested this patch and
-confirmed that using register_pernet_subsys makes the failure go away as
-it should.
-
-Signed-off-by: Eric W. Biederman <ebiederm at xmission.com>
-Acked-by: Sjur Brændeland <sjur.brandeland at stericsson.com>
-Tested-by: Sasha Levin <levinsasha928 at gmail.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- net/caif/caif_dev.c | 11 ++++-------
- net/caif/cfcnfg.c | 1 -
- 2 files changed, 4 insertions(+), 8 deletions(-)
-
-diff --git a/net/caif/caif_dev.c b/net/caif/caif_dev.c
-index f1fa1f6..68223e4 100644
---- a/net/caif/caif_dev.c
-+++ b/net/caif/caif_dev.c
-@@ -53,7 +53,6 @@ struct cfcnfg *get_cfcnfg(struct net *net)
- struct caif_net *caifn;
- BUG_ON(!net);
- caifn = net_generic(net, caif_net_id);
-- BUG_ON(!caifn);
- return caifn->cfg;
- }
- EXPORT_SYMBOL(get_cfcnfg);
-@@ -63,7 +62,6 @@ static struct caif_device_entry_list *caif_device_list(struct net *net)
- struct caif_net *caifn;
- BUG_ON(!net);
- caifn = net_generic(net, caif_net_id);
-- BUG_ON(!caifn);
- return &caifn->caifdevs;
- }
-
-@@ -92,7 +90,6 @@ static struct caif_device_entry *caif_device_alloc(struct net_device *dev)
- struct caif_device_entry *caifd;
-
- caifdevs = caif_device_list(dev_net(dev));
-- BUG_ON(!caifdevs);
-
- caifd = kzalloc(sizeof(*caifd), GFP_KERNEL);
- if (!caifd)
-@@ -112,7 +109,7 @@ static struct caif_device_entry *caif_get(struct net_device *dev)
- struct caif_device_entry_list *caifdevs =
- caif_device_list(dev_net(dev));
- struct caif_device_entry *caifd;
-- BUG_ON(!caifdevs);
-+
- list_for_each_entry_rcu(caifd, &caifdevs->list, list) {
- if (caifd->netdev == dev)
- return caifd;
-@@ -353,7 +350,7 @@ static struct notifier_block caif_device_notifier = {
- static int caif_init_net(struct net *net)
- {
- struct caif_net *caifn = net_generic(net, caif_net_id);
-- BUG_ON(!caifn);
-+
- INIT_LIST_HEAD(&caifn->caifdevs.list);
- mutex_init(&caifn->caifdevs.lock);
-
-@@ -418,7 +415,7 @@ static int __init caif_device_init(void)
- {
- int result;
-
-- result = register_pernet_device(&caif_net_ops);
-+ result = register_pernet_subsys(&caif_net_ops);
-
- if (result)
- return result;
-@@ -431,7 +428,7 @@ static int __init caif_device_init(void)
-
- static void __exit caif_device_exit(void)
- {
-- unregister_pernet_device(&caif_net_ops);
-+ unregister_pernet_subsys(&caif_net_ops);
- unregister_netdevice_notifier(&caif_device_notifier);
- dev_remove_pack(&caif_packet_type);
- }
-diff --git a/net/caif/cfcnfg.c b/net/caif/cfcnfg.c
-index 00523ec..86ff37c 100644
---- a/net/caif/cfcnfg.c
-+++ b/net/caif/cfcnfg.c
-@@ -309,7 +309,6 @@ int caif_connect_client(struct net *net, struct caif_connect_request *conn_req,
- int err;
- struct cfctrl_link_param param;
- struct cfcnfg *cfg = get_cfcnfg(net);
-- caif_assert(cfg != NULL);
-
- rcu_read_lock();
- err = caif_connect_req_to_link_param(cfg, conn_req, ¶m);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0072-af_unix-fix-EPOLLET-regression-for-stream-sockets.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0072-af_unix-fix-EPOLLET-regression-for-stream-sockets.patch
deleted file mode 100644
index 6f0d313..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0072-af_unix-fix-EPOLLET-regression-for-stream-sockets.patch
+++ /dev/null
@@ -1,96 +0,0 @@
-From 6e647cfa06847144087b67d0f64a79a624a80276 Mon Sep 17 00:00:00 2001
-From: Eric Dumazet <eric.dumazet at gmail.com>
-Date: Sat, 28 Jan 2012 16:11:03 +0000
-Subject: [PATCH 72/90] af_unix: fix EPOLLET regression for stream sockets
-
-[ Upstream commit 6f01fd6e6f6809061b56e78f1e8d143099716d70 ]
-
-Commit 0884d7aa24 (AF_UNIX: Fix poll blocking problem when reading from
-a stream socket) added a regression for epoll() in Edge Triggered mode
-(EPOLLET)
-
-Appropriate fix is to use skb_peek()/skb_unlink() instead of
-skb_dequeue(), and only call skb_unlink() when skb is fully consumed.
-
-This remove the need to requeue a partial skb into sk_receive_queue head
-and the extra sk->sk_data_ready() calls that added the regression.
-
-This is safe because once skb is given to sk_receive_queue, it is not
-modified by a writer, and readers are serialized by u->readlock mutex.
-
-This also reduce number of spinlock acquisition for small reads or
-MSG_PEEK users so should improve overall performance.
-
-Reported-by: Nick Mathewson <nickm at freehaven.net>
-Signed-off-by: Eric Dumazet <eric.dumazet at gmail.com>
-Cc: Alexey Moiseytsev <himeraster at gmail.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- net/unix/af_unix.c | 19 ++++---------------
- 1 file changed, 4 insertions(+), 15 deletions(-)
-
-diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c
-index b595a3d..d99678a 100644
---- a/net/unix/af_unix.c
-+++ b/net/unix/af_unix.c
-@@ -1915,7 +1915,7 @@ static int unix_stream_recvmsg(struct kiocb *iocb, struct socket *sock,
- struct sk_buff *skb;
-
- unix_state_lock(sk);
-- skb = skb_dequeue(&sk->sk_receive_queue);
-+ skb = skb_peek(&sk->sk_receive_queue);
- if (skb == NULL) {
- unix_sk(sk)->recursion_level = 0;
- if (copied >= target)
-@@ -1955,11 +1955,8 @@ static int unix_stream_recvmsg(struct kiocb *iocb, struct socket *sock,
- if (check_creds) {
- /* Never glue messages from different writers */
- if ((UNIXCB(skb).pid != siocb->scm->pid) ||
-- (UNIXCB(skb).cred != siocb->scm->cred)) {
-- skb_queue_head(&sk->sk_receive_queue, skb);
-- sk->sk_data_ready(sk, skb->len);
-+ (UNIXCB(skb).cred != siocb->scm->cred))
- break;
-- }
- } else {
- /* Copy credentials */
- scm_set_cred(siocb->scm, UNIXCB(skb).pid, UNIXCB(skb).cred);
-@@ -1974,8 +1971,6 @@ static int unix_stream_recvmsg(struct kiocb *iocb, struct socket *sock,
-
- chunk = min_t(unsigned int, skb->len, size);
- if (memcpy_toiovec(msg->msg_iov, skb->data, chunk)) {
-- skb_queue_head(&sk->sk_receive_queue, skb);
-- sk->sk_data_ready(sk, skb->len);
- if (copied == 0)
- copied = -EFAULT;
- break;
-@@ -1990,13 +1985,10 @@ static int unix_stream_recvmsg(struct kiocb *iocb, struct socket *sock,
- if (UNIXCB(skb).fp)
- unix_detach_fds(siocb->scm, skb);
-
-- /* put the skb back if we didn't use it up.. */
-- if (skb->len) {
-- skb_queue_head(&sk->sk_receive_queue, skb);
-- sk->sk_data_ready(sk, skb->len);
-+ if (skb->len)
- break;
-- }
-
-+ skb_unlink(skb, &sk->sk_receive_queue);
- consume_skb(skb);
-
- if (siocb->scm->fp)
-@@ -2007,9 +1999,6 @@ static int unix_stream_recvmsg(struct kiocb *iocb, struct socket *sock,
- if (UNIXCB(skb).fp)
- siocb->scm->fp = scm_fp_dup(UNIXCB(skb).fp);
-
-- /* put message back and return */
-- skb_queue_head(&sk->sk_receive_queue, skb);
-- sk->sk_data_ready(sk, skb->len);
- break;
- }
- } while (size);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0073-bonding-fix-enslaving-in-alb-mode-when-link-down.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0073-bonding-fix-enslaving-in-alb-mode-when-link-down.patch
deleted file mode 100644
index 515b20e..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0073-bonding-fix-enslaving-in-alb-mode-when-link-down.patch
+++ /dev/null
@@ -1,116 +0,0 @@
-From 427c99e97dad5ee1eca57e371d59ab875ca0d5fd Mon Sep 17 00:00:00 2001
-From: Jiri Bohac <jbohac at suse.cz>
-Date: Wed, 18 Jan 2012 12:24:54 +0000
-Subject: [PATCH 73/90] bonding: fix enslaving in alb mode when link down
-
-[ Upstream commit b924551bed09f61b64f21bffe241afc5526b091a ]
-
-bond_alb_init_slave() is called from bond_enslave() and sets the slave's MAC
-address. This is done differently for TLB and ALB modes.
-bond->alb_info.rlb_enabled is used to discriminate between the two modes but
-this flag may be uninitialized if the slave is being enslaved prior to calling
-bond_open() -> bond_alb_initialize() on the master.
-
-It turns out all the callers of alb_set_slave_mac_addr() pass
-bond->alb_info.rlb_enabled as the hw parameter.
-
-This patch cleans up the unnecessary parameter of alb_set_slave_mac_addr() and
-makes the function decide based on the bonding mode instead, which fixes the
-above problem.
-
-Reported-by: Narendra K <Narendra_K at Dell.com>
-Signed-off-by: Jiri Bohac <jbohac at suse.cz>
-Signed-off-by: Jay Vosburgh <fubar at us.ibm.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/net/bonding/bond_alb.c | 27 +++++++++------------------
- 1 file changed, 9 insertions(+), 18 deletions(-)
-
-diff --git a/drivers/net/bonding/bond_alb.c b/drivers/net/bonding/bond_alb.c
-index 106b88a..30431d8 100644
---- a/drivers/net/bonding/bond_alb.c
-+++ b/drivers/net/bonding/bond_alb.c
-@@ -871,16 +871,12 @@ static void alb_send_learning_packets(struct slave *slave, u8 mac_addr[])
- }
- }
-
--/* hw is a boolean parameter that determines whether we should try and
-- * set the hw address of the device as well as the hw address of the
-- * net_device
-- */
--static int alb_set_slave_mac_addr(struct slave *slave, u8 addr[], int hw)
-+static int alb_set_slave_mac_addr(struct slave *slave, u8 addr[])
- {
- struct net_device *dev = slave->dev;
- struct sockaddr s_addr;
-
-- if (!hw) {
-+ if (slave->bond->params.mode == BOND_MODE_TLB) {
- memcpy(dev->dev_addr, addr, dev->addr_len);
- return 0;
- }
-@@ -910,8 +906,8 @@ static void alb_swap_mac_addr(struct bonding *bond, struct slave *slave1, struct
- u8 tmp_mac_addr[ETH_ALEN];
-
- memcpy(tmp_mac_addr, slave1->dev->dev_addr, ETH_ALEN);
-- alb_set_slave_mac_addr(slave1, slave2->dev->dev_addr, bond->alb_info.rlb_enabled);
-- alb_set_slave_mac_addr(slave2, tmp_mac_addr, bond->alb_info.rlb_enabled);
-+ alb_set_slave_mac_addr(slave1, slave2->dev->dev_addr);
-+ alb_set_slave_mac_addr(slave2, tmp_mac_addr);
-
- }
-
-@@ -1058,8 +1054,7 @@ static int alb_handle_addr_collision_on_attach(struct bonding *bond, struct slav
-
- /* Try setting slave mac to bond address and fall-through
- to code handling that situation below... */
-- alb_set_slave_mac_addr(slave, bond->dev->dev_addr,
-- bond->alb_info.rlb_enabled);
-+ alb_set_slave_mac_addr(slave, bond->dev->dev_addr);
- }
-
- /* The slave's address is equal to the address of the bond.
-@@ -1095,8 +1090,7 @@ static int alb_handle_addr_collision_on_attach(struct bonding *bond, struct slav
- }
-
- if (free_mac_slave) {
-- alb_set_slave_mac_addr(slave, free_mac_slave->perm_hwaddr,
-- bond->alb_info.rlb_enabled);
-+ alb_set_slave_mac_addr(slave, free_mac_slave->perm_hwaddr);
-
- pr_warning("%s: Warning: the hw address of slave %s is in use by the bond; giving it the hw address of %s\n",
- bond->dev->name, slave->dev->name,
-@@ -1451,8 +1445,7 @@ int bond_alb_init_slave(struct bonding *bond, struct slave *slave)
- {
- int res;
-
-- res = alb_set_slave_mac_addr(slave, slave->perm_hwaddr,
-- bond->alb_info.rlb_enabled);
-+ res = alb_set_slave_mac_addr(slave, slave->perm_hwaddr);
- if (res) {
- return res;
- }
-@@ -1603,8 +1596,7 @@ void bond_alb_handle_active_change(struct bonding *bond, struct slave *new_slave
- alb_swap_mac_addr(bond, swap_slave, new_slave);
- } else {
- /* set the new_slave to the bond mac address */
-- alb_set_slave_mac_addr(new_slave, bond->dev->dev_addr,
-- bond->alb_info.rlb_enabled);
-+ alb_set_slave_mac_addr(new_slave, bond->dev->dev_addr);
- }
-
- if (swap_slave) {
-@@ -1664,8 +1656,7 @@ int bond_alb_set_mac_address(struct net_device *bond_dev, void *addr)
- alb_swap_mac_addr(bond, swap_slave, bond->curr_active_slave);
- alb_fasten_mac_swap(bond, swap_slave, bond->curr_active_slave);
- } else {
-- alb_set_slave_mac_addr(bond->curr_active_slave, bond_dev->dev_addr,
-- bond->alb_info.rlb_enabled);
-+ alb_set_slave_mac_addr(bond->curr_active_slave, bond_dev->dev_addr);
-
- read_lock(&bond->lock);
- alb_send_learning_packets(bond->curr_active_slave, bond_dev->dev_addr);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0074-l2tp-l2tp_ip-fix-possible-oops-on-packet-receive.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0074-l2tp-l2tp_ip-fix-possible-oops-on-packet-receive.patch
deleted file mode 100644
index c21dba2..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0074-l2tp-l2tp_ip-fix-possible-oops-on-packet-receive.patch
+++ /dev/null
@@ -1,73 +0,0 @@
-From 2b3e48834b8686d2ac56f2557e7f98b39d05a205 Mon Sep 17 00:00:00 2001
-From: James Chapman <jchapman at katalix.com>
-Date: Wed, 25 Jan 2012 02:39:05 +0000
-Subject: [PATCH 74/90] l2tp: l2tp_ip - fix possible oops on packet receive
-
-[ Upstream commit 68315801dbf3ab2001679fd2074c9dc5dcf87dfa ]
-
-When a packet is received on an L2TP IP socket (L2TPv3 IP link
-encapsulation), the l2tpip socket's backlog_rcv function calls
-xfrm4_policy_check(). This is not necessary, since it was called
-before the skb was added to the backlog. With CONFIG_NET_NS enabled,
-xfrm4_policy_check() will oops if skb->dev is null, so this trivial
-patch removes the call.
-
-This bug has always been present, but only when CONFIG_NET_NS is
-enabled does it cause problems. Most users are probably using UDP
-encapsulation for L2TP, hence the problem has only recently
-surfaced.
-
-EIP: 0060:[<c12bb62b>] EFLAGS: 00210246 CPU: 0
-EIP is at l2tp_ip_recvmsg+0xd4/0x2a7
-EAX: 00000001 EBX: d77b5180 ECX: 00000000 EDX: 00200246
-ESI: 00000000 EDI: d63cbd30 EBP: d63cbd18 ESP: d63cbcf4
- DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068
-Call Trace:
- [<c1218568>] sock_common_recvmsg+0x31/0x46
- [<c1215c92>] __sock_recvmsg_nosec+0x45/0x4d
- [<c12163a1>] __sock_recvmsg+0x31/0x3b
- [<c1216828>] sock_recvmsg+0x96/0xab
- [<c10b2693>] ? might_fault+0x47/0x81
- [<c10b2693>] ? might_fault+0x47/0x81
- [<c1167fd0>] ? _copy_from_user+0x31/0x115
- [<c121e8c8>] ? copy_from_user+0x8/0xa
- [<c121ebd6>] ? verify_iovec+0x3e/0x78
- [<c1216604>] __sys_recvmsg+0x10a/0x1aa
- [<c1216792>] ? sock_recvmsg+0x0/0xab
- [<c105a99b>] ? __lock_acquire+0xbdf/0xbee
- [<c12d5a99>] ? do_page_fault+0x193/0x375
- [<c10d1200>] ? fcheck_files+0x9b/0xca
- [<c10d1259>] ? fget_light+0x2a/0x9c
- [<c1216bbb>] sys_recvmsg+0x2b/0x43
- [<c1218145>] sys_socketcall+0x16d/0x1a5
- [<c11679f0>] ? trace_hardirqs_on_thunk+0xc/0x10
- [<c100305f>] sysenter_do_call+0x12/0x38
-Code: c6 05 8c ea a8 c1 01 e8 0c d4 d9 ff 85 f6 74 07 3e ff 86 80 00 00 00 b9 17 b6 2b c1 ba 01 00 00 00 b8 78 ed 48 c1 e8 23 f6 d9 ff <ff> 76 0c 68 28 e3 30 c1 68 2d 44 41 c1 e8 89 57 01 00 83 c4 0c
-
-Signed-off-by: James Chapman <jchapman at katalix.com>
-Acked-by: Eric Dumazet <eric.dumazet at gmail.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- net/l2tp/l2tp_ip.c | 5 -----
- 1 file changed, 5 deletions(-)
-
-diff --git a/net/l2tp/l2tp_ip.c b/net/l2tp/l2tp_ip.c
-index d21e7eb..55670ec 100644
---- a/net/l2tp/l2tp_ip.c
-+++ b/net/l2tp/l2tp_ip.c
-@@ -393,11 +393,6 @@ static int l2tp_ip_backlog_recv(struct sock *sk, struct sk_buff *skb)
- {
- int rc;
-
-- if (!xfrm4_policy_check(sk, XFRM_POLICY_IN, skb))
-- goto drop;
--
-- nf_reset(skb);
--
- /* Charge it to the socket, dropping if the queue is full. */
- rc = sock_queue_rcv_skb(sk, skb);
- if (rc < 0)
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0075-macvlan-fix-a-possible-use-after-free.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0075-macvlan-fix-a-possible-use-after-free.patch
deleted file mode 100644
index 6aa4637..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0075-macvlan-fix-a-possible-use-after-free.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 892744cc06067dc7d8f2ebfc84e12c907973ffa9 Mon Sep 17 00:00:00 2001
-From: Eric Dumazet <eric.dumazet at gmail.com>
-Date: Mon, 23 Jan 2012 05:38:59 +0000
-Subject: [PATCH 75/90] macvlan: fix a possible use after free
-
-[ Upstream commit 4ec7ac1203bcf21f5e3d977c9818b1a56c9ef40d ]
-
-Commit bc416d9768 (macvlan: handle fragmented multicast frames) added a
-possible use after free in macvlan_handle_frame(), since
-ip_check_defrag() uses pskb_may_pull() : skb header can be reallocated.
-
-Signed-off-by: Eric Dumazet <eric.dumazet at gmail.com>
-Cc: Ben Greear <greearb at candelatech.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/net/macvlan.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c
-index 7413497..959d448 100644
---- a/drivers/net/macvlan.c
-+++ b/drivers/net/macvlan.c
-@@ -172,6 +172,7 @@ static rx_handler_result_t macvlan_handle_frame(struct sk_buff **pskb)
- skb = ip_check_defrag(skb, IP_DEFRAG_MACVLAN);
- if (!skb)
- return RX_HANDLER_CONSUMED;
-+ eth = eth_hdr(skb);
- src = macvlan_hash_lookup(port, eth->h_source);
- if (!src)
- /* frame comes from an external address */
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0076-net-bpf_jit-fix-divide-by-0-generation.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0076-net-bpf_jit-fix-divide-by-0-generation.patch
deleted file mode 100644
index 1080715..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0076-net-bpf_jit-fix-divide-by-0-generation.patch
+++ /dev/null
@@ -1,129 +0,0 @@
-From 2f2b39355ba0c612927fbf28328480f0b3cef853 Mon Sep 17 00:00:00 2001
-From: Eric Dumazet <eric.dumazet at gmail.com>
-Date: Wed, 18 Jan 2012 07:21:42 +0000
-Subject: [PATCH 76/90] net: bpf_jit: fix divide by 0 generation
-
-[ Upstream commit d00a9dd21bdf7908b70866794c8313ee8a5abd5c ]
-
-Several problems fixed in this patch :
-
-1) Target of the conditional jump in case a divide by 0 is performed
- by a bpf is wrong.
-
-2) Must 'generate' the full function prologue/epilogue at pass=0,
- or else we can stop too early in pass=1 if the proglen doesnt change.
- (if the increase of prologue/epilogue equals decrease of all
- instructions length because some jumps are converted to near jumps)
-
-3) Change the wrong length detection at the end of code generation to
- issue a more explicit message, no need for a full stack trace.
-
-Reported-by: Phil Oester <kernel at linuxace.com>
-Signed-off-by: Eric Dumazet <eric.dumazet at gmail.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/x86/net/bpf_jit_comp.c | 36 ++++++++++++++++++++++--------------
- 1 file changed, 22 insertions(+), 14 deletions(-)
-
-diff --git a/arch/x86/net/bpf_jit_comp.c b/arch/x86/net/bpf_jit_comp.c
-index 7b65f75..7c1b765 100644
---- a/arch/x86/net/bpf_jit_comp.c
-+++ b/arch/x86/net/bpf_jit_comp.c
-@@ -151,17 +151,18 @@ void bpf_jit_compile(struct sk_filter *fp)
- cleanup_addr = proglen; /* epilogue address */
-
- for (pass = 0; pass < 10; pass++) {
-+ u8 seen_or_pass0 = (pass == 0) ? (SEEN_XREG | SEEN_DATAREF | SEEN_MEM) : seen;
- /* no prologue/epilogue for trivial filters (RET something) */
- proglen = 0;
- prog = temp;
-
-- if (seen) {
-+ if (seen_or_pass0) {
- EMIT4(0x55, 0x48, 0x89, 0xe5); /* push %rbp; mov %rsp,%rbp */
- EMIT4(0x48, 0x83, 0xec, 96); /* subq $96,%rsp */
- /* note : must save %rbx in case bpf_error is hit */
-- if (seen & (SEEN_XREG | SEEN_DATAREF))
-+ if (seen_or_pass0 & (SEEN_XREG | SEEN_DATAREF))
- EMIT4(0x48, 0x89, 0x5d, 0xf8); /* mov %rbx, -8(%rbp) */
-- if (seen & SEEN_XREG)
-+ if (seen_or_pass0 & SEEN_XREG)
- CLEAR_X(); /* make sure we dont leek kernel memory */
-
- /*
-@@ -170,7 +171,7 @@ void bpf_jit_compile(struct sk_filter *fp)
- * r9 = skb->len - skb->data_len
- * r8 = skb->data
- */
-- if (seen & SEEN_DATAREF) {
-+ if (seen_or_pass0 & SEEN_DATAREF) {
- if (offsetof(struct sk_buff, len) <= 127)
- /* mov off8(%rdi),%r9d */
- EMIT4(0x44, 0x8b, 0x4f, offsetof(struct sk_buff, len));
-@@ -260,9 +261,14 @@ void bpf_jit_compile(struct sk_filter *fp)
- case BPF_S_ALU_DIV_X: /* A /= X; */
- seen |= SEEN_XREG;
- EMIT2(0x85, 0xdb); /* test %ebx,%ebx */
-- if (pc_ret0 != -1)
-- EMIT_COND_JMP(X86_JE, addrs[pc_ret0] - (addrs[i] - 4));
-- else {
-+ if (pc_ret0 > 0) {
-+ /* addrs[pc_ret0 - 1] is start address of target
-+ * (addrs[i] - 4) is the address following this jmp
-+ * ("xor %edx,%edx; div %ebx" being 4 bytes long)
-+ */
-+ EMIT_COND_JMP(X86_JE, addrs[pc_ret0 - 1] -
-+ (addrs[i] - 4));
-+ } else {
- EMIT_COND_JMP(X86_JNE, 2 + 5);
- CLEAR_A();
- EMIT1_off32(0xe9, cleanup_addr - (addrs[i] - 4)); /* jmp .+off32 */
-@@ -335,12 +341,12 @@ void bpf_jit_compile(struct sk_filter *fp)
- }
- /* fallinto */
- case BPF_S_RET_A:
-- if (seen) {
-+ if (seen_or_pass0) {
- if (i != flen - 1) {
- EMIT_JMP(cleanup_addr - addrs[i]);
- break;
- }
-- if (seen & SEEN_XREG)
-+ if (seen_or_pass0 & SEEN_XREG)
- EMIT4(0x48, 0x8b, 0x5d, 0xf8); /* mov -8(%rbp),%rbx */
- EMIT1(0xc9); /* leaveq */
- }
-@@ -483,8 +489,9 @@ common_load: seen |= SEEN_DATAREF;
- goto common_load;
- case BPF_S_LDX_B_MSH:
- if ((int)K < 0) {
-- if (pc_ret0 != -1) {
-- EMIT_JMP(addrs[pc_ret0] - addrs[i]);
-+ if (pc_ret0 > 0) {
-+ /* addrs[pc_ret0 - 1] is the start address */
-+ EMIT_JMP(addrs[pc_ret0 - 1] - addrs[i]);
- break;
- }
- CLEAR_A();
-@@ -599,13 +606,14 @@ cond_branch: f_offset = addrs[i + filter[i].jf] - addrs[i];
- * use it to give the cleanup instruction(s) addr
- */
- cleanup_addr = proglen - 1; /* ret */
-- if (seen)
-+ if (seen_or_pass0)
- cleanup_addr -= 1; /* leaveq */
-- if (seen & SEEN_XREG)
-+ if (seen_or_pass0 & SEEN_XREG)
- cleanup_addr -= 4; /* mov -8(%rbp),%rbx */
-
- if (image) {
-- WARN_ON(proglen != oldproglen);
-+ if (proglen != oldproglen)
-+ pr_err("bpb_jit_compile proglen=%u != oldproglen=%u\n", proglen, oldproglen);
- break;
- }
- if (proglen == oldproglen) {
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0077-net-reintroduce-missing-rcu_assign_pointer-calls.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0077-net-reintroduce-missing-rcu_assign_pointer-calls.patch
deleted file mode 100644
index b6c614b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0077-net-reintroduce-missing-rcu_assign_pointer-calls.patch
+++ /dev/null
@@ -1,703 +0,0 @@
-From 81a5e4309ff6da37314319509f11110649d9446e Mon Sep 17 00:00:00 2001
-From: Eric Dumazet <eric.dumazet at gmail.com>
-Date: Thu, 12 Jan 2012 04:41:32 +0000
-Subject: [PATCH 77/90] net: reintroduce missing rcu_assign_pointer() calls
-
-[ Upstream commit cf778b00e96df6d64f8e21b8395d1f8a859ecdc7 ]
-
-commit a9b3cd7f32 (rcu: convert uses of rcu_assign_pointer(x, NULL) to
-RCU_INIT_POINTER) did a lot of incorrect changes, since it did a
-complete conversion of rcu_assign_pointer(x, y) to RCU_INIT_POINTER(x,
-y).
-
-We miss needed barriers, even on x86, when y is not NULL.
-
-Signed-off-by: Eric Dumazet <eric.dumazet at gmail.com>
-CC: Stephen Hemminger <shemminger at vyatta.com>
-CC: Paul E. McKenney <paulmck at linux.vnet.ibm.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- net/core/net-sysfs.c | 6 +++---
- net/core/netpoll.c | 2 +-
- net/decnet/dn_dev.c | 4 ++--
- net/ipv4/devinet.c | 2 +-
- net/ipv4/fib_trie.c | 10 +++++-----
- net/ipv4/igmp.c | 8 ++++----
- net/ipv4/ipip.c | 8 ++++----
- net/ipv4/ipmr.c | 2 +-
- net/ipv6/addrconf.c | 2 +-
- net/ipv6/ip6_tunnel.c | 8 ++++----
- net/ipv6/raw.c | 2 +-
- net/ipv6/sit.c | 10 +++++-----
- net/mac80211/agg-rx.c | 2 +-
- net/mac80211/cfg.c | 4 ++--
- net/mac80211/ibss.c | 2 +-
- net/mac80211/sta_info.c | 6 +++---
- net/netfilter/nf_conntrack_core.c | 2 +-
- net/netfilter/nf_conntrack_ecache.c | 4 ++--
- net/netfilter/nf_conntrack_extend.c | 2 +-
- net/netfilter/nf_conntrack_helper.c | 2 +-
- net/netfilter/nf_conntrack_netlink.c | 2 +-
- net/netfilter/nf_log.c | 6 +++---
- net/netfilter/nf_queue.c | 2 +-
- net/netfilter/nfnetlink.c | 4 ++--
- net/netlabel/netlabel_domainhash.c | 4 ++--
- net/netlabel/netlabel_unlabeled.c | 6 ++----
- net/phonet/af_phonet.c | 2 +-
- net/phonet/pn_dev.c | 2 +-
- net/phonet/socket.c | 2 +-
- net/socket.c | 2 +-
- net/sunrpc/auth_gss/auth_gss.c | 2 +-
- net/xfrm/xfrm_user.c | 2 +-
- 32 files changed, 61 insertions(+), 63 deletions(-)
-
-diff --git a/net/core/net-sysfs.c b/net/core/net-sysfs.c
-index 385aefe..0329404 100644
---- a/net/core/net-sysfs.c
-+++ b/net/core/net-sysfs.c
-@@ -990,9 +990,9 @@ static ssize_t store_xps_map(struct netdev_queue *queue,
- nonempty = 1;
- }
-
-- if (nonempty)
-- RCU_INIT_POINTER(dev->xps_maps, new_dev_maps);
-- else {
-+ if (nonempty) {
-+ rcu_assign_pointer(dev->xps_maps, new_dev_maps);
-+ } else {
- kfree(new_dev_maps);
- RCU_INIT_POINTER(dev->xps_maps, NULL);
- }
-diff --git a/net/core/netpoll.c b/net/core/netpoll.c
-index cf64c1f..5d4d896 100644
---- a/net/core/netpoll.c
-+++ b/net/core/netpoll.c
-@@ -763,7 +763,7 @@ int __netpoll_setup(struct netpoll *np)
- }
-
- /* last thing to do is link it to the net device structure */
-- RCU_INIT_POINTER(ndev->npinfo, npinfo);
-+ rcu_assign_pointer(ndev->npinfo, npinfo);
-
- return 0;
-
-diff --git a/net/decnet/dn_dev.c b/net/decnet/dn_dev.c
-index 2ab16e1..74d321a 100644
---- a/net/decnet/dn_dev.c
-+++ b/net/decnet/dn_dev.c
-@@ -388,7 +388,7 @@ static int dn_dev_insert_ifa(struct dn_dev *dn_db, struct dn_ifaddr *ifa)
- }
-
- ifa->ifa_next = dn_db->ifa_list;
-- RCU_INIT_POINTER(dn_db->ifa_list, ifa);
-+ rcu_assign_pointer(dn_db->ifa_list, ifa);
-
- dn_ifaddr_notify(RTM_NEWADDR, ifa);
- blocking_notifier_call_chain(&dnaddr_chain, NETDEV_UP, ifa);
-@@ -1093,7 +1093,7 @@ static struct dn_dev *dn_dev_create(struct net_device *dev, int *err)
-
- memcpy(&dn_db->parms, p, sizeof(struct dn_dev_parms));
-
-- RCU_INIT_POINTER(dev->dn_ptr, dn_db);
-+ rcu_assign_pointer(dev->dn_ptr, dn_db);
- dn_db->dev = dev;
- init_timer(&dn_db->timer);
-
-diff --git a/net/ipv4/devinet.c b/net/ipv4/devinet.c
-index 65f01dc..e41c40f 100644
---- a/net/ipv4/devinet.c
-+++ b/net/ipv4/devinet.c
-@@ -258,7 +258,7 @@ static struct in_device *inetdev_init(struct net_device *dev)
- ip_mc_up(in_dev);
-
- /* we can receive as soon as ip_ptr is set -- do this last */
-- RCU_INIT_POINTER(dev->ip_ptr, in_dev);
-+ rcu_assign_pointer(dev->ip_ptr, in_dev);
- out:
- return in_dev;
- out_kfree:
-diff --git a/net/ipv4/fib_trie.c b/net/ipv4/fib_trie.c
-index 37b6711..3ce23f9 100644
---- a/net/ipv4/fib_trie.c
-+++ b/net/ipv4/fib_trie.c
-@@ -205,7 +205,7 @@ static inline struct tnode *node_parent_rcu(const struct rt_trie_node *node)
- return (struct tnode *)(parent & ~NODE_TYPE_MASK);
- }
-
--/* Same as RCU_INIT_POINTER
-+/* Same as rcu_assign_pointer
- * but that macro() assumes that value is a pointer.
- */
- static inline void node_set_parent(struct rt_trie_node *node, struct tnode *ptr)
-@@ -529,7 +529,7 @@ static void tnode_put_child_reorg(struct tnode *tn, int i, struct rt_trie_node *
- if (n)
- node_set_parent(n, tn);
-
-- RCU_INIT_POINTER(tn->child[i], n);
-+ rcu_assign_pointer(tn->child[i], n);
- }
-
- #define MAX_WORK 10
-@@ -1015,7 +1015,7 @@ static void trie_rebalance(struct trie *t, struct tnode *tn)
-
- tp = node_parent((struct rt_trie_node *) tn);
- if (!tp)
-- RCU_INIT_POINTER(t->trie, (struct rt_trie_node *)tn);
-+ rcu_assign_pointer(t->trie, (struct rt_trie_node *)tn);
-
- tnode_free_flush();
- if (!tp)
-@@ -1027,7 +1027,7 @@ static void trie_rebalance(struct trie *t, struct tnode *tn)
- if (IS_TNODE(tn))
- tn = (struct tnode *)resize(t, (struct tnode *)tn);
-
-- RCU_INIT_POINTER(t->trie, (struct rt_trie_node *)tn);
-+ rcu_assign_pointer(t->trie, (struct rt_trie_node *)tn);
- tnode_free_flush();
- }
-
-@@ -1164,7 +1164,7 @@ static struct list_head *fib_insert_node(struct trie *t, u32 key, int plen)
- put_child(t, (struct tnode *)tp, cindex,
- (struct rt_trie_node *)tn);
- } else {
-- RCU_INIT_POINTER(t->trie, (struct rt_trie_node *)tn);
-+ rcu_assign_pointer(t->trie, (struct rt_trie_node *)tn);
- tp = tn;
- }
- }
-diff --git a/net/ipv4/igmp.c b/net/ipv4/igmp.c
-index c3cc64c..c8989a7 100644
---- a/net/ipv4/igmp.c
-+++ b/net/ipv4/igmp.c
-@@ -1244,7 +1244,7 @@ void ip_mc_inc_group(struct in_device *in_dev, __be32 addr)
-
- im->next_rcu = in_dev->mc_list;
- in_dev->mc_count++;
-- RCU_INIT_POINTER(in_dev->mc_list, im);
-+ rcu_assign_pointer(in_dev->mc_list, im);
-
- #ifdef CONFIG_IP_MULTICAST
- igmpv3_del_delrec(in_dev, im->multiaddr);
-@@ -1816,7 +1816,7 @@ int ip_mc_join_group(struct sock *sk , struct ip_mreqn *imr)
- iml->next_rcu = inet->mc_list;
- iml->sflist = NULL;
- iml->sfmode = MCAST_EXCLUDE;
-- RCU_INIT_POINTER(inet->mc_list, iml);
-+ rcu_assign_pointer(inet->mc_list, iml);
- ip_mc_inc_group(in_dev, addr);
- err = 0;
- done:
-@@ -2003,7 +2003,7 @@ int ip_mc_source(int add, int omode, struct sock *sk, struct
- atomic_sub(IP_SFLSIZE(psl->sl_max), &sk->sk_omem_alloc);
- kfree_rcu(psl, rcu);
- }
-- RCU_INIT_POINTER(pmc->sflist, newpsl);
-+ rcu_assign_pointer(pmc->sflist, newpsl);
- psl = newpsl;
- }
- rv = 1; /* > 0 for insert logic below if sl_count is 0 */
-@@ -2106,7 +2106,7 @@ int ip_mc_msfilter(struct sock *sk, struct ip_msfilter *msf, int ifindex)
- } else
- (void) ip_mc_del_src(in_dev, &msf->imsf_multiaddr, pmc->sfmode,
- 0, NULL, 0);
-- RCU_INIT_POINTER(pmc->sflist, newpsl);
-+ rcu_assign_pointer(pmc->sflist, newpsl);
- pmc->sfmode = msf->imsf_fmode;
- err = 0;
- done:
-diff --git a/net/ipv4/ipip.c b/net/ipv4/ipip.c
-index 0b2e732..17ad951 100644
---- a/net/ipv4/ipip.c
-+++ b/net/ipv4/ipip.c
-@@ -231,7 +231,7 @@ static void ipip_tunnel_unlink(struct ipip_net *ipn, struct ip_tunnel *t)
- (iter = rtnl_dereference(*tp)) != NULL;
- tp = &iter->next) {
- if (t == iter) {
-- RCU_INIT_POINTER(*tp, t->next);
-+ rcu_assign_pointer(*tp, t->next);
- break;
- }
- }
-@@ -241,8 +241,8 @@ static void ipip_tunnel_link(struct ipip_net *ipn, struct ip_tunnel *t)
- {
- struct ip_tunnel __rcu **tp = ipip_bucket(ipn, t);
-
-- RCU_INIT_POINTER(t->next, rtnl_dereference(*tp));
-- RCU_INIT_POINTER(*tp, t);
-+ rcu_assign_pointer(t->next, rtnl_dereference(*tp));
-+ rcu_assign_pointer(*tp, t);
- }
-
- static struct ip_tunnel * ipip_tunnel_locate(struct net *net,
-@@ -792,7 +792,7 @@ static int __net_init ipip_fb_tunnel_init(struct net_device *dev)
- return -ENOMEM;
-
- dev_hold(dev);
-- RCU_INIT_POINTER(ipn->tunnels_wc[0], tunnel);
-+ rcu_assign_pointer(ipn->tunnels_wc[0], tunnel);
- return 0;
- }
-
-diff --git a/net/ipv4/ipmr.c b/net/ipv4/ipmr.c
-index 76a7f07..d2aae27 100644
---- a/net/ipv4/ipmr.c
-+++ b/net/ipv4/ipmr.c
-@@ -1225,7 +1225,7 @@ int ip_mroute_setsockopt(struct sock *sk, int optname, char __user *optval, unsi
-
- ret = ip_ra_control(sk, 1, mrtsock_destruct);
- if (ret == 0) {
-- RCU_INIT_POINTER(mrt->mroute_sk, sk);
-+ rcu_assign_pointer(mrt->mroute_sk, sk);
- IPV4_DEVCONF_ALL(net, MC_FORWARDING)++;
- }
- rtnl_unlock();
-diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
-index 36806de..836c4ea 100644
---- a/net/ipv6/addrconf.c
-+++ b/net/ipv6/addrconf.c
-@@ -429,7 +429,7 @@ static struct inet6_dev * ipv6_add_dev(struct net_device *dev)
- ndev->tstamp = jiffies;
- addrconf_sysctl_register(ndev);
- /* protected by rtnl_lock */
-- RCU_INIT_POINTER(dev->ip6_ptr, ndev);
-+ rcu_assign_pointer(dev->ip6_ptr, ndev);
-
- /* Join all-node multicast group */
- ipv6_dev_mc_inc(dev, &in6addr_linklocal_allnodes);
-diff --git a/net/ipv6/ip6_tunnel.c b/net/ipv6/ip6_tunnel.c
-index 4e2e9ff..d19f499 100644
---- a/net/ipv6/ip6_tunnel.c
-+++ b/net/ipv6/ip6_tunnel.c
-@@ -218,8 +218,8 @@ ip6_tnl_link(struct ip6_tnl_net *ip6n, struct ip6_tnl *t)
- {
- struct ip6_tnl __rcu **tp = ip6_tnl_bucket(ip6n, &t->parms);
-
-- RCU_INIT_POINTER(t->next , rtnl_dereference(*tp));
-- RCU_INIT_POINTER(*tp, t);
-+ rcu_assign_pointer(t->next , rtnl_dereference(*tp));
-+ rcu_assign_pointer(*tp, t);
- }
-
- /**
-@@ -237,7 +237,7 @@ ip6_tnl_unlink(struct ip6_tnl_net *ip6n, struct ip6_tnl *t)
- (iter = rtnl_dereference(*tp)) != NULL;
- tp = &iter->next) {
- if (t == iter) {
-- RCU_INIT_POINTER(*tp, t->next);
-+ rcu_assign_pointer(*tp, t->next);
- break;
- }
- }
-@@ -1450,7 +1450,7 @@ static int __net_init ip6_fb_tnl_dev_init(struct net_device *dev)
-
- t->parms.proto = IPPROTO_IPV6;
- dev_hold(dev);
-- RCU_INIT_POINTER(ip6n->tnls_wc[0], t);
-+ rcu_assign_pointer(ip6n->tnls_wc[0], t);
- return 0;
- }
-
-diff --git a/net/ipv6/raw.c b/net/ipv6/raw.c
-index 331af3b..361ebf3 100644
---- a/net/ipv6/raw.c
-+++ b/net/ipv6/raw.c
-@@ -131,7 +131,7 @@ static mh_filter_t __rcu *mh_filter __read_mostly;
-
- int rawv6_mh_filter_register(mh_filter_t filter)
- {
-- RCU_INIT_POINTER(mh_filter, filter);
-+ rcu_assign_pointer(mh_filter, filter);
- return 0;
- }
- EXPORT_SYMBOL(rawv6_mh_filter_register);
-diff --git a/net/ipv6/sit.c b/net/ipv6/sit.c
-index 96f3623..72a939d 100644
---- a/net/ipv6/sit.c
-+++ b/net/ipv6/sit.c
-@@ -182,7 +182,7 @@ static void ipip6_tunnel_unlink(struct sit_net *sitn, struct ip_tunnel *t)
- (iter = rtnl_dereference(*tp)) != NULL;
- tp = &iter->next) {
- if (t == iter) {
-- RCU_INIT_POINTER(*tp, t->next);
-+ rcu_assign_pointer(*tp, t->next);
- break;
- }
- }
-@@ -192,8 +192,8 @@ static void ipip6_tunnel_link(struct sit_net *sitn, struct ip_tunnel *t)
- {
- struct ip_tunnel __rcu **tp = ipip6_bucket(sitn, t);
-
-- RCU_INIT_POINTER(t->next, rtnl_dereference(*tp));
-- RCU_INIT_POINTER(*tp, t);
-+ rcu_assign_pointer(t->next, rtnl_dereference(*tp));
-+ rcu_assign_pointer(*tp, t);
- }
-
- static void ipip6_tunnel_clone_6rd(struct net_device *dev, struct sit_net *sitn)
-@@ -393,7 +393,7 @@ ipip6_tunnel_add_prl(struct ip_tunnel *t, struct ip_tunnel_prl *a, int chg)
- p->addr = a->addr;
- p->flags = a->flags;
- t->prl_count++;
-- RCU_INIT_POINTER(t->prl, p);
-+ rcu_assign_pointer(t->prl, p);
- out:
- return err;
- }
-@@ -1177,7 +1177,7 @@ static int __net_init ipip6_fb_tunnel_init(struct net_device *dev)
- if (!dev->tstats)
- return -ENOMEM;
- dev_hold(dev);
-- RCU_INIT_POINTER(sitn->tunnels_wc[0], tunnel);
-+ rcu_assign_pointer(sitn->tunnels_wc[0], tunnel);
- return 0;
- }
-
-diff --git a/net/mac80211/agg-rx.c b/net/mac80211/agg-rx.c
-index 93b2434..41c2310 100644
---- a/net/mac80211/agg-rx.c
-+++ b/net/mac80211/agg-rx.c
-@@ -326,7 +326,7 @@ void ieee80211_process_addba_request(struct ieee80211_local *local,
- status = WLAN_STATUS_SUCCESS;
-
- /* activate it for RX */
-- RCU_INIT_POINTER(sta->ampdu_mlme.tid_rx[tid], tid_agg_rx);
-+ rcu_assign_pointer(sta->ampdu_mlme.tid_rx[tid], tid_agg_rx);
-
- if (timeout)
- mod_timer(&tid_agg_rx->session_timer, TU_TO_EXP_TIME(timeout));
-diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c
-index d06c65f..11cee76 100644
---- a/net/mac80211/cfg.c
-+++ b/net/mac80211/cfg.c
-@@ -575,7 +575,7 @@ static int ieee80211_config_beacon(struct ieee80211_sub_if_data *sdata,
-
- sdata->vif.bss_conf.dtim_period = new->dtim_period;
-
-- RCU_INIT_POINTER(sdata->u.ap.beacon, new);
-+ rcu_assign_pointer(sdata->u.ap.beacon, new);
-
- synchronize_rcu();
-
-@@ -922,7 +922,7 @@ static int ieee80211_change_station(struct wiphy *wiphy,
- return -EBUSY;
- }
-
-- RCU_INIT_POINTER(vlansdata->u.vlan.sta, sta);
-+ rcu_assign_pointer(vlansdata->u.vlan.sta, sta);
- }
-
- sta->sdata = vlansdata;
-diff --git a/net/mac80211/ibss.c b/net/mac80211/ibss.c
-index ede9a8b..3ece106 100644
---- a/net/mac80211/ibss.c
-+++ b/net/mac80211/ibss.c
-@@ -184,7 +184,7 @@ static void __ieee80211_sta_join_ibss(struct ieee80211_sub_if_data *sdata,
- *pos++ = 0; /* U-APSD no in use */
- }
-
-- RCU_INIT_POINTER(ifibss->presp, skb);
-+ rcu_assign_pointer(ifibss->presp, skb);
-
- sdata->vif.bss_conf.beacon_int = beacon_int;
- sdata->vif.bss_conf.basic_rates = basic_rates;
-diff --git a/net/mac80211/sta_info.c b/net/mac80211/sta_info.c
-index 8eaa746..1fdd8ff 100644
---- a/net/mac80211/sta_info.c
-+++ b/net/mac80211/sta_info.c
-@@ -73,7 +73,7 @@ static int sta_info_hash_del(struct ieee80211_local *local,
- if (!s)
- return -ENOENT;
- if (s == sta) {
-- RCU_INIT_POINTER(local->sta_hash[STA_HASH(sta->sta.addr)],
-+ rcu_assign_pointer(local->sta_hash[STA_HASH(sta->sta.addr)],
- s->hnext);
- return 0;
- }
-@@ -83,7 +83,7 @@ static int sta_info_hash_del(struct ieee80211_local *local,
- s = rcu_dereference_protected(s->hnext,
- lockdep_is_held(&local->sta_lock));
- if (rcu_access_pointer(s->hnext)) {
-- RCU_INIT_POINTER(s->hnext, sta->hnext);
-+ rcu_assign_pointer(s->hnext, sta->hnext);
- return 0;
- }
-
-@@ -232,7 +232,7 @@ static void sta_info_hash_add(struct ieee80211_local *local,
- struct sta_info *sta)
- {
- sta->hnext = local->sta_hash[STA_HASH(sta->sta.addr)];
-- RCU_INIT_POINTER(local->sta_hash[STA_HASH(sta->sta.addr)], sta);
-+ rcu_assign_pointer(local->sta_hash[STA_HASH(sta->sta.addr)], sta);
- }
-
- static void sta_unblock(struct work_struct *wk)
-diff --git a/net/netfilter/nf_conntrack_core.c b/net/netfilter/nf_conntrack_core.c
-index 7202b06..1d15193 100644
---- a/net/netfilter/nf_conntrack_core.c
-+++ b/net/netfilter/nf_conntrack_core.c
-@@ -776,7 +776,7 @@ init_conntrack(struct net *net, struct nf_conn *tmpl,
- if (exp->helper) {
- help = nf_ct_helper_ext_add(ct, GFP_ATOMIC);
- if (help)
-- RCU_INIT_POINTER(help->helper, exp->helper);
-+ rcu_assign_pointer(help->helper, exp->helper);
- }
-
- #ifdef CONFIG_NF_CONNTRACK_MARK
-diff --git a/net/netfilter/nf_conntrack_ecache.c b/net/netfilter/nf_conntrack_ecache.c
-index b62c414..14af632 100644
---- a/net/netfilter/nf_conntrack_ecache.c
-+++ b/net/netfilter/nf_conntrack_ecache.c
-@@ -91,7 +91,7 @@ int nf_conntrack_register_notifier(struct net *net,
- ret = -EBUSY;
- goto out_unlock;
- }
-- RCU_INIT_POINTER(net->ct.nf_conntrack_event_cb, new);
-+ rcu_assign_pointer(net->ct.nf_conntrack_event_cb, new);
- mutex_unlock(&nf_ct_ecache_mutex);
- return ret;
-
-@@ -128,7 +128,7 @@ int nf_ct_expect_register_notifier(struct net *net,
- ret = -EBUSY;
- goto out_unlock;
- }
-- RCU_INIT_POINTER(net->ct.nf_expect_event_cb, new);
-+ rcu_assign_pointer(net->ct.nf_expect_event_cb, new);
- mutex_unlock(&nf_ct_ecache_mutex);
- return ret;
-
-diff --git a/net/netfilter/nf_conntrack_extend.c b/net/netfilter/nf_conntrack_extend.c
-index 4605c94..641ff5f 100644
---- a/net/netfilter/nf_conntrack_extend.c
-+++ b/net/netfilter/nf_conntrack_extend.c
-@@ -169,7 +169,7 @@ int nf_ct_extend_register(struct nf_ct_ext_type *type)
- before updating alloc_size */
- type->alloc_size = ALIGN(sizeof(struct nf_ct_ext), type->align)
- + type->len;
-- RCU_INIT_POINTER(nf_ct_ext_types[type->id], type);
-+ rcu_assign_pointer(nf_ct_ext_types[type->id], type);
- update_alloc_size(type);
- out:
- mutex_unlock(&nf_ct_ext_type_mutex);
-diff --git a/net/netfilter/nf_conntrack_helper.c b/net/netfilter/nf_conntrack_helper.c
-index 93c4bdb..bbe23ba 100644
---- a/net/netfilter/nf_conntrack_helper.c
-+++ b/net/netfilter/nf_conntrack_helper.c
-@@ -145,7 +145,7 @@ int __nf_ct_try_assign_helper(struct nf_conn *ct, struct nf_conn *tmpl,
- memset(&help->help, 0, sizeof(help->help));
- }
-
-- RCU_INIT_POINTER(help->helper, helper);
-+ rcu_assign_pointer(help->helper, helper);
- out:
- return ret;
- }
-diff --git a/net/netfilter/nf_conntrack_netlink.c b/net/netfilter/nf_conntrack_netlink.c
-index 257e772..782cdcd 100644
---- a/net/netfilter/nf_conntrack_netlink.c
-+++ b/net/netfilter/nf_conntrack_netlink.c
-@@ -1163,7 +1163,7 @@ ctnetlink_change_helper(struct nf_conn *ct, const struct nlattr * const cda[])
- return -EOPNOTSUPP;
- }
-
-- RCU_INIT_POINTER(help->helper, helper);
-+ rcu_assign_pointer(help->helper, helper);
-
- return 0;
- }
-diff --git a/net/netfilter/nf_log.c b/net/netfilter/nf_log.c
-index ce0c406..957374a 100644
---- a/net/netfilter/nf_log.c
-+++ b/net/netfilter/nf_log.c
-@@ -55,7 +55,7 @@ int nf_log_register(u_int8_t pf, struct nf_logger *logger)
- llog = rcu_dereference_protected(nf_loggers[pf],
- lockdep_is_held(&nf_log_mutex));
- if (llog == NULL)
-- RCU_INIT_POINTER(nf_loggers[pf], logger);
-+ rcu_assign_pointer(nf_loggers[pf], logger);
- }
-
- mutex_unlock(&nf_log_mutex);
-@@ -92,7 +92,7 @@ int nf_log_bind_pf(u_int8_t pf, const struct nf_logger *logger)
- mutex_unlock(&nf_log_mutex);
- return -ENOENT;
- }
-- RCU_INIT_POINTER(nf_loggers[pf], logger);
-+ rcu_assign_pointer(nf_loggers[pf], logger);
- mutex_unlock(&nf_log_mutex);
- return 0;
- }
-@@ -250,7 +250,7 @@ static int nf_log_proc_dostring(ctl_table *table, int write,
- mutex_unlock(&nf_log_mutex);
- return -ENOENT;
- }
-- RCU_INIT_POINTER(nf_loggers[tindex], logger);
-+ rcu_assign_pointer(nf_loggers[tindex], logger);
- mutex_unlock(&nf_log_mutex);
- } else {
- mutex_lock(&nf_log_mutex);
-diff --git a/net/netfilter/nf_queue.c b/net/netfilter/nf_queue.c
-index 99ffd28..b3a7db6 100644
---- a/net/netfilter/nf_queue.c
-+++ b/net/netfilter/nf_queue.c
-@@ -40,7 +40,7 @@ int nf_register_queue_handler(u_int8_t pf, const struct nf_queue_handler *qh)
- else if (old)
- ret = -EBUSY;
- else {
-- RCU_INIT_POINTER(queue_handler[pf], qh);
-+ rcu_assign_pointer(queue_handler[pf], qh);
- ret = 0;
- }
- mutex_unlock(&queue_handler_mutex);
-diff --git a/net/netfilter/nfnetlink.c b/net/netfilter/nfnetlink.c
-index c879c1a..b4f8d84 100644
---- a/net/netfilter/nfnetlink.c
-+++ b/net/netfilter/nfnetlink.c
-@@ -59,7 +59,7 @@ int nfnetlink_subsys_register(const struct nfnetlink_subsystem *n)
- nfnl_unlock();
- return -EBUSY;
- }
-- RCU_INIT_POINTER(subsys_table[n->subsys_id], n);
-+ rcu_assign_pointer(subsys_table[n->subsys_id], n);
- nfnl_unlock();
-
- return 0;
-@@ -210,7 +210,7 @@ static int __net_init nfnetlink_net_init(struct net *net)
- if (!nfnl)
- return -ENOMEM;
- net->nfnl_stash = nfnl;
-- RCU_INIT_POINTER(net->nfnl, nfnl);
-+ rcu_assign_pointer(net->nfnl, nfnl);
- return 0;
- }
-
-diff --git a/net/netlabel/netlabel_domainhash.c b/net/netlabel/netlabel_domainhash.c
-index 3f905e5..e5330ed 100644
---- a/net/netlabel/netlabel_domainhash.c
-+++ b/net/netlabel/netlabel_domainhash.c
-@@ -282,7 +282,7 @@ int __init netlbl_domhsh_init(u32 size)
- INIT_LIST_HEAD(&hsh_tbl->tbl[iter]);
-
- spin_lock(&netlbl_domhsh_lock);
-- RCU_INIT_POINTER(netlbl_domhsh, hsh_tbl);
-+ rcu_assign_pointer(netlbl_domhsh, hsh_tbl);
- spin_unlock(&netlbl_domhsh_lock);
-
- return 0;
-@@ -330,7 +330,7 @@ int netlbl_domhsh_add(struct netlbl_dom_map *entry,
- &rcu_dereference(netlbl_domhsh)->tbl[bkt]);
- } else {
- INIT_LIST_HEAD(&entry->list);
-- RCU_INIT_POINTER(netlbl_domhsh_def, entry);
-+ rcu_assign_pointer(netlbl_domhsh_def, entry);
- }
-
- if (entry->type == NETLBL_NLTYPE_ADDRSELECT) {
-diff --git a/net/netlabel/netlabel_unlabeled.c b/net/netlabel/netlabel_unlabeled.c
-index e251c2c..d463f5a 100644
---- a/net/netlabel/netlabel_unlabeled.c
-+++ b/net/netlabel/netlabel_unlabeled.c
-@@ -354,7 +354,7 @@ static struct netlbl_unlhsh_iface *netlbl_unlhsh_add_iface(int ifindex)
- INIT_LIST_HEAD(&iface->list);
- if (netlbl_unlhsh_rcu_deref(netlbl_unlhsh_def) != NULL)
- goto add_iface_failure;
-- RCU_INIT_POINTER(netlbl_unlhsh_def, iface);
-+ rcu_assign_pointer(netlbl_unlhsh_def, iface);
- }
- spin_unlock(&netlbl_unlhsh_lock);
-
-@@ -1447,11 +1447,9 @@ int __init netlbl_unlabel_init(u32 size)
- for (iter = 0; iter < hsh_tbl->size; iter++)
- INIT_LIST_HEAD(&hsh_tbl->tbl[iter]);
-
-- rcu_read_lock();
- spin_lock(&netlbl_unlhsh_lock);
-- RCU_INIT_POINTER(netlbl_unlhsh, hsh_tbl);
-+ rcu_assign_pointer(netlbl_unlhsh, hsh_tbl);
- spin_unlock(&netlbl_unlhsh_lock);
-- rcu_read_unlock();
-
- register_netdevice_notifier(&netlbl_unlhsh_netdev_notifier);
-
-diff --git a/net/phonet/af_phonet.c b/net/phonet/af_phonet.c
-index bf10ea8..d65f699 100644
---- a/net/phonet/af_phonet.c
-+++ b/net/phonet/af_phonet.c
-@@ -480,7 +480,7 @@ int __init_or_module phonet_proto_register(unsigned int protocol,
- if (proto_tab[protocol])
- err = -EBUSY;
- else
-- RCU_INIT_POINTER(proto_tab[protocol], pp);
-+ rcu_assign_pointer(proto_tab[protocol], pp);
- mutex_unlock(&proto_tab_lock);
-
- return err;
-diff --git a/net/phonet/pn_dev.c b/net/phonet/pn_dev.c
-index c582761..9b9a85e 100644
---- a/net/phonet/pn_dev.c
-+++ b/net/phonet/pn_dev.c
-@@ -390,7 +390,7 @@ int phonet_route_add(struct net_device *dev, u8 daddr)
- daddr = daddr >> 2;
- mutex_lock(&routes->lock);
- if (routes->table[daddr] == NULL) {
-- RCU_INIT_POINTER(routes->table[daddr], dev);
-+ rcu_assign_pointer(routes->table[daddr], dev);
- dev_hold(dev);
- err = 0;
- }
-diff --git a/net/phonet/socket.c b/net/phonet/socket.c
-index 3f8d0b1..4c7eff3 100644
---- a/net/phonet/socket.c
-+++ b/net/phonet/socket.c
-@@ -680,7 +680,7 @@ int pn_sock_bind_res(struct sock *sk, u8 res)
- mutex_lock(&resource_mutex);
- if (pnres.sk[res] == NULL) {
- sock_hold(sk);
-- RCU_INIT_POINTER(pnres.sk[res], sk);
-+ rcu_assign_pointer(pnres.sk[res], sk);
- ret = 0;
- }
- mutex_unlock(&resource_mutex);
-diff --git a/net/socket.c b/net/socket.c
-index 2877647..2dce67a 100644
---- a/net/socket.c
-+++ b/net/socket.c
-@@ -2472,7 +2472,7 @@ int sock_register(const struct net_proto_family *ops)
- lockdep_is_held(&net_family_lock)))
- err = -EEXIST;
- else {
-- RCU_INIT_POINTER(net_families[ops->family], ops);
-+ rcu_assign_pointer(net_families[ops->family], ops);
- err = 0;
- }
- spin_unlock(&net_family_lock);
-diff --git a/net/sunrpc/auth_gss/auth_gss.c b/net/sunrpc/auth_gss/auth_gss.c
-index afb5655..db0efde 100644
---- a/net/sunrpc/auth_gss/auth_gss.c
-+++ b/net/sunrpc/auth_gss/auth_gss.c
-@@ -122,7 +122,7 @@ gss_cred_set_ctx(struct rpc_cred *cred, struct gss_cl_ctx *ctx)
- if (!test_bit(RPCAUTH_CRED_NEW, &cred->cr_flags))
- return;
- gss_get_ctx(ctx);
-- RCU_INIT_POINTER(gss_cred->gc_ctx, ctx);
-+ rcu_assign_pointer(gss_cred->gc_ctx, ctx);
- set_bit(RPCAUTH_CRED_UPTODATE, &cred->cr_flags);
- smp_mb__before_clear_bit();
- clear_bit(RPCAUTH_CRED_NEW, &cred->cr_flags);
-diff --git a/net/xfrm/xfrm_user.c b/net/xfrm/xfrm_user.c
-index d0a42df..7cae73e 100644
---- a/net/xfrm/xfrm_user.c
-+++ b/net/xfrm/xfrm_user.c
-@@ -2927,7 +2927,7 @@ static int __net_init xfrm_user_net_init(struct net *net)
- if (nlsk == NULL)
- return -ENOMEM;
- net->xfrm.nlsk_stash = nlsk; /* Don't set to NULL */
-- RCU_INIT_POINTER(net->xfrm.nlsk, nlsk);
-+ rcu_assign_pointer(net->xfrm.nlsk, nlsk);
- return 0;
- }
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0078-rds-Make-rds_sock_lock-BH-rather-than-IRQ-safe.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0078-rds-Make-rds_sock_lock-BH-rather-than-IRQ-safe.patch
deleted file mode 100644
index c95ae64..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0078-rds-Make-rds_sock_lock-BH-rather-than-IRQ-safe.patch
+++ /dev/null
@@ -1,119 +0,0 @@
-From af4ce0cb61137477b811f90fa81cc442bddbaa09 Mon Sep 17 00:00:00 2001
-From: "David S. Miller" <davem at davemloft.net>
-Date: Tue, 24 Jan 2012 17:03:44 -0500
-Subject: [PATCH 78/90] rds: Make rds_sock_lock BH rather than IRQ safe.
-
-[ Upstream commit efc3dbc37412c027e363736b4f4c74ee5e8ecffc ]
-
-rds_sock_info() triggers locking warnings because we try to perform a
-local_bh_enable() (via sock_i_ino()) while hardware interrupts are
-disabled (via taking rds_sock_lock).
-
-There is no reason for rds_sock_lock to be a hardware IRQ disabling
-lock, none of these access paths run in hardware interrupt context.
-
-Therefore making it a BH disabling lock is safe and sufficient to
-fix this bug.
-
-Reported-by: Kumar Sanghvi <kumaras at chelsio.com>
-Reported-by: Josh Boyer <jwboyer at gmail.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- net/rds/af_rds.c | 20 ++++++++------------
- 1 file changed, 8 insertions(+), 12 deletions(-)
-
-diff --git a/net/rds/af_rds.c b/net/rds/af_rds.c
-index bb6ad81..424ff62 100644
---- a/net/rds/af_rds.c
-+++ b/net/rds/af_rds.c
-@@ -68,7 +68,6 @@ static int rds_release(struct socket *sock)
- {
- struct sock *sk = sock->sk;
- struct rds_sock *rs;
-- unsigned long flags;
-
- if (!sk)
- goto out;
-@@ -94,10 +93,10 @@ static int rds_release(struct socket *sock)
- rds_rdma_drop_keys(rs);
- rds_notify_queue_get(rs, NULL);
-
-- spin_lock_irqsave(&rds_sock_lock, flags);
-+ spin_lock_bh(&rds_sock_lock);
- list_del_init(&rs->rs_item);
- rds_sock_count--;
-- spin_unlock_irqrestore(&rds_sock_lock, flags);
-+ spin_unlock_bh(&rds_sock_lock);
-
- rds_trans_put(rs->rs_transport);
-
-@@ -409,7 +408,6 @@ static const struct proto_ops rds_proto_ops = {
-
- static int __rds_create(struct socket *sock, struct sock *sk, int protocol)
- {
-- unsigned long flags;
- struct rds_sock *rs;
-
- sock_init_data(sock, sk);
-@@ -426,10 +424,10 @@ static int __rds_create(struct socket *sock, struct sock *sk, int protocol)
- spin_lock_init(&rs->rs_rdma_lock);
- rs->rs_rdma_keys = RB_ROOT;
-
-- spin_lock_irqsave(&rds_sock_lock, flags);
-+ spin_lock_bh(&rds_sock_lock);
- list_add_tail(&rs->rs_item, &rds_sock_list);
- rds_sock_count++;
-- spin_unlock_irqrestore(&rds_sock_lock, flags);
-+ spin_unlock_bh(&rds_sock_lock);
-
- return 0;
- }
-@@ -471,12 +469,11 @@ static void rds_sock_inc_info(struct socket *sock, unsigned int len,
- {
- struct rds_sock *rs;
- struct rds_incoming *inc;
-- unsigned long flags;
- unsigned int total = 0;
-
- len /= sizeof(struct rds_info_message);
-
-- spin_lock_irqsave(&rds_sock_lock, flags);
-+ spin_lock_bh(&rds_sock_lock);
-
- list_for_each_entry(rs, &rds_sock_list, rs_item) {
- read_lock(&rs->rs_recv_lock);
-@@ -492,7 +489,7 @@ static void rds_sock_inc_info(struct socket *sock, unsigned int len,
- read_unlock(&rs->rs_recv_lock);
- }
-
-- spin_unlock_irqrestore(&rds_sock_lock, flags);
-+ spin_unlock_bh(&rds_sock_lock);
-
- lens->nr = total;
- lens->each = sizeof(struct rds_info_message);
-@@ -504,11 +501,10 @@ static void rds_sock_info(struct socket *sock, unsigned int len,
- {
- struct rds_info_socket sinfo;
- struct rds_sock *rs;
-- unsigned long flags;
-
- len /= sizeof(struct rds_info_socket);
-
-- spin_lock_irqsave(&rds_sock_lock, flags);
-+ spin_lock_bh(&rds_sock_lock);
-
- if (len < rds_sock_count)
- goto out;
-@@ -529,7 +525,7 @@ out:
- lens->nr = rds_sock_count;
- lens->each = sizeof(struct rds_info_socket);
-
-- spin_unlock_irqrestore(&rds_sock_lock, flags);
-+ spin_unlock_bh(&rds_sock_lock);
- }
-
- static void rds_exit(void)
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0079-tcp-fix-tcp_trim_head-to-adjust-segment-count-with-s.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0079-tcp-fix-tcp_trim_head-to-adjust-segment-count-with-s.patch
deleted file mode 100644
index 01497b0..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0079-tcp-fix-tcp_trim_head-to-adjust-segment-count-with-s.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From 05393b2465021a009c72267f654027b556b5c85d Mon Sep 17 00:00:00 2001
-From: Neal Cardwell <ncardwell at google.com>
-Date: Sat, 28 Jan 2012 17:29:46 +0000
-Subject: [PATCH 79/90] tcp: fix tcp_trim_head() to adjust segment count with
- skb MSS
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-[ Upstream commit 5b35e1e6e9ca651e6b291c96d1106043c9af314a ]
-
-This commit fixes tcp_trim_head() to recalculate the number of
-segments in the skb with the skb's existing MSS, so trimming the head
-causes the skb segment count to be monotonically non-increasing - it
-should stay the same or go down, but not increase.
-
-Previously tcp_trim_head() used the current MSS of the connection. But
-if there was a decrease in MSS between original transmission and ACK
-(e.g. due to PMTUD), this could cause tcp_trim_head() to
-counter-intuitively increase the segment count when trimming bytes off
-the head of an skb. This violated assumptions in tcp_tso_acked() that
-tcp_trim_head() only decreases the packet count, so that packets_acked
-in tcp_tso_acked() could underflow, leading tcp_clean_rtx_queue() to
-pass u32 pkts_acked values as large as 0xffffffff to
-ca_ops->pkts_acked().
-
-As an aside, if tcp_trim_head() had really wanted the skb to reflect
-the current MSS, it should have called tcp_set_skb_tso_segs()
-unconditionally, since a decrease in MSS would mean that a
-single-packet skb should now be sliced into multiple segments.
-
-Signed-off-by: Neal Cardwell <ncardwell at google.com>
-Acked-by: Nandita Dukkipati <nanditad at google.com>
-Acked-by: Ilpo Järvinen <ilpo.jarvinen at helsinki.fi>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- net/ipv4/tcp_output.c | 6 ++----
- 1 file changed, 2 insertions(+), 4 deletions(-)
-
-diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c
-index 63170e2..097e0c7 100644
---- a/net/ipv4/tcp_output.c
-+++ b/net/ipv4/tcp_output.c
-@@ -1138,11 +1138,9 @@ int tcp_trim_head(struct sock *sk, struct sk_buff *skb, u32 len)
- sk_mem_uncharge(sk, len);
- sock_set_flag(sk, SOCK_QUEUE_SHRUNK);
-
-- /* Any change of skb->len requires recalculation of tso
-- * factor and mss.
-- */
-+ /* Any change of skb->len requires recalculation of tso factor. */
- if (tcp_skb_pcount(skb) > 1)
-- tcp_set_skb_tso_segs(sk, skb, tcp_current_mss(sk));
-+ tcp_set_skb_tso_segs(sk, skb, tcp_skb_mss(skb));
-
- return 0;
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0080-tcp-md5-using-remote-adress-for-md5-lookup-in-rst-pa.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0080-tcp-md5-using-remote-adress-for-md5-lookup-in-rst-pa.patch
deleted file mode 100644
index 8e63e9d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0080-tcp-md5-using-remote-adress-for-md5-lookup-in-rst-pa.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From 0d432284eab9df44414bfa75eff573001c879991 Mon Sep 17 00:00:00 2001
-From: shawnlu <shawn.lu at ericsson.com>
-Date: Fri, 20 Jan 2012 12:22:04 +0000
-Subject: [PATCH 80/90] tcp: md5: using remote adress for md5 lookup in rst
- packet
-
-[ Upstream commit 8a622e71f58ec9f092fc99eacae0e6cf14f6e742 ]
-
-md5 key is added in socket through remote address.
-remote address should be used in finding md5 key when
-sending out reset packet.
-
-Signed-off-by: shawnlu <shawn.lu at ericsson.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- net/ipv4/tcp_ipv4.c | 2 +-
- net/ipv6/tcp_ipv6.c | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
-index a9db4b1..c89e354 100644
---- a/net/ipv4/tcp_ipv4.c
-+++ b/net/ipv4/tcp_ipv4.c
-@@ -630,7 +630,7 @@ static void tcp_v4_send_reset(struct sock *sk, struct sk_buff *skb)
- arg.iov[0].iov_len = sizeof(rep.th);
-
- #ifdef CONFIG_TCP_MD5SIG
-- key = sk ? tcp_v4_md5_do_lookup(sk, ip_hdr(skb)->daddr) : NULL;
-+ key = sk ? tcp_v4_md5_do_lookup(sk, ip_hdr(skb)->saddr) : NULL;
- if (key) {
- rep.opt[0] = htonl((TCPOPT_NOP << 24) |
- (TCPOPT_NOP << 16) |
-diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c
-index 2dea4bb..b859e4a 100644
---- a/net/ipv6/tcp_ipv6.c
-+++ b/net/ipv6/tcp_ipv6.c
-@@ -1084,7 +1084,7 @@ static void tcp_v6_send_reset(struct sock *sk, struct sk_buff *skb)
-
- #ifdef CONFIG_TCP_MD5SIG
- if (sk)
-- key = tcp_v6_md5_do_lookup(sk, &ipv6_hdr(skb)->daddr);
-+ key = tcp_v6_md5_do_lookup(sk, &ipv6_hdr(skb)->saddr);
- #endif
-
- if (th->ack)
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0081-USB-serial-CP210x-Added-USB-ID-for-the-Link-Instrume.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0081-USB-serial-CP210x-Added-USB-ID-for-the-Link-Instrume.patch
deleted file mode 100644
index 47a4089..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0081-USB-serial-CP210x-Added-USB-ID-for-the-Link-Instrume.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 48278b64b7025c308655d780a5cd6295c3906d0f Mon Sep 17 00:00:00 2001
-From: Renato Caldas <rmsc at fe.up.pt>
-Date: Fri, 6 Jan 2012 15:20:51 +0000
-Subject: [PATCH 81/90] USB: serial: CP210x: Added USB-ID for the Link
- Instruments MSO-19
-
-commit 791b7d7cf69de11275e4dccec2f538eec02cbff6 upstream.
-
-This device is a Oscilloscope/Logic Analizer/Pattern Generator/TDR,
-using a Silabs CP2103 USB to UART Bridge.
-
-Signed-off-by: Renato Caldas <rmsc at fe.up.pt>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/serial/cp210x.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/usb/serial/cp210x.c b/drivers/usb/serial/cp210x.c
-index a1a324b..3b43d9b 100644
---- a/drivers/usb/serial/cp210x.c
-+++ b/drivers/usb/serial/cp210x.c
-@@ -138,6 +138,7 @@ static const struct usb_device_id id_table[] = {
- { USB_DEVICE(0x1843, 0x0200) }, /* Vaisala USB Instrument Cable */
- { USB_DEVICE(0x18EF, 0xE00F) }, /* ELV USB-I2C-Interface */
- { USB_DEVICE(0x1BE3, 0x07A6) }, /* WAGO 750-923 USB Service Cable */
-+ { USB_DEVICE(0x3195, 0xF190) }, /* Link Instruments MSO-19 */
- { USB_DEVICE(0x413C, 0x9500) }, /* DW700 GPS USB interface */
- { } /* Terminating Entry */
- };
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0082-USB-cp210x-call-generic-open-last-in-open.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0082-USB-cp210x-call-generic-open-last-in-open.patch
deleted file mode 100644
index bb1f241..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0082-USB-cp210x-call-generic-open-last-in-open.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 0dad95a1e262593ce3bdad0ce16605dd9fae0352 Mon Sep 17 00:00:00 2001
-From: Johan Hovold <jhovold at gmail.com>
-Date: Mon, 16 Jan 2012 00:36:48 +0100
-Subject: [PATCH 82/90] USB: cp210x: call generic open last in open
-
-commit 55b2afbb92ad92e9f6b0aa4354eb1c94589280c3 upstream.
-
-Make sure port is fully initialised before calling generic open.
-
-Signed-off-by: Johan Hovold <jhovold at gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/serial/cp210x.c | 9 ++-------
- 1 file changed, 2 insertions(+), 7 deletions(-)
-
-diff --git a/drivers/usb/serial/cp210x.c b/drivers/usb/serial/cp210x.c
-index 3b43d9b..cbcaddb 100644
---- a/drivers/usb/serial/cp210x.c
-+++ b/drivers/usb/serial/cp210x.c
-@@ -393,8 +393,6 @@ static unsigned int cp210x_quantise_baudrate(unsigned int baud) {
-
- static int cp210x_open(struct tty_struct *tty, struct usb_serial_port *port)
- {
-- int result;
--
- dbg("%s - port %d", __func__, port->number);
-
- if (cp210x_set_config_single(port, CP210X_IFC_ENABLE, UART_ENABLE)) {
-@@ -403,13 +401,10 @@ static int cp210x_open(struct tty_struct *tty, struct usb_serial_port *port)
- return -EPROTO;
- }
-
-- result = usb_serial_generic_open(tty, port);
-- if (result)
-- return result;
--
- /* Configure the termios structure */
- cp210x_get_termios(tty, port);
-- return 0;
-+
-+ return usb_serial_generic_open(tty, port);
- }
-
- static void cp210x_close(struct usb_serial_port *port)
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0083-USB-cp210x-fix-CP2104-baudrate-usage.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0083-USB-cp210x-fix-CP2104-baudrate-usage.patch
deleted file mode 100644
index df9d792..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0083-USB-cp210x-fix-CP2104-baudrate-usage.patch
+++ /dev/null
@@ -1,78 +0,0 @@
-From 15cbe972586b6a980e1ec5e5ea1f6335a58a801c Mon Sep 17 00:00:00 2001
-From: Preston Fick <preston.fick at silabs.com>
-Date: Mon, 16 Jan 2012 18:14:09 -0600
-Subject: [PATCH 83/90] USB: cp210x: fix CP2104 baudrate usage
-
-commit 7f482fc88ac47662228d6b1f05759797c8936a30 upstream.
-
-This fix changes the way baudrates are set on the CP210x devices from
-Silicon Labs. The CP2101/2/3 will respond to both a GET/SET_BAUDDIV
-command, and GET/SET_BAUDRATE command, while CP2104 and higher devices
-only respond to GET/SET_BAUDRATE. The current cp210x.ko driver in
-kernel version 3.2.0 only implements the GET/SET_BAUDDIV command.
-
-This patch implements the two new codes for the GET/SET_BAUDRATE
-commands. Then there is a change in the way that the baudrate is
-assigned or retrieved. This is done according to the CP210x USB
-specification in AN571. This document can be found here:
-http://www.silabs.com/pages/DownloadDoc.aspx?FILEURL=Support%20Documents/TechnicalDocs/AN571.pdf&src=DocumentationWebPart
-
-Sections 5.3/5.4 describe the USB packets for the old baudrate method.
-Sections 5.5/5.6 describe the USB packets for the new method. This
-patch also implements the new request scheme, and eliminates the
-unnecessary baudrate calculations since it uses the "actual baudrate"
-method.
-
-This patch solves the problem reported for the CP2104 in bug 42586,
-and also keeps support for all other devices (CP2101/2/3).
-
-This patchfile is also attached to the bug report on
-bugzilla.kernel.org. This patch has been developed and test on the
-3.2.0 mainline kernel version under Ubuntu 10.11.
-
-Signed-off-by: Preston Fick <preston.fick at silabs.com>
-[duplicate patch also sent by Johan - gregkh]
-Signed-off-by: Johan Hovold <jhovold at gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/serial/cp210x.c | 10 ++++------
- 1 file changed, 4 insertions(+), 6 deletions(-)
-
-diff --git a/drivers/usb/serial/cp210x.c b/drivers/usb/serial/cp210x.c
-index cbcaddb..60993dc 100644
---- a/drivers/usb/serial/cp210x.c
-+++ b/drivers/usb/serial/cp210x.c
-@@ -202,6 +202,8 @@ static struct usb_serial_driver cp210x_device = {
- #define CP210X_EMBED_EVENTS 0x15
- #define CP210X_GET_EVENTSTATE 0x16
- #define CP210X_SET_CHARS 0x19
-+#define CP210X_GET_BAUDRATE 0x1D
-+#define CP210X_SET_BAUDRATE 0x1E
-
- /* CP210X_IFC_ENABLE */
- #define UART_ENABLE 0x0001
-@@ -456,10 +458,7 @@ static void cp210x_get_termios_port(struct usb_serial_port *port,
-
- dbg("%s - port %d", __func__, port->number);
-
-- cp210x_get_config(port, CP210X_GET_BAUDDIV, &baud, 2);
-- /* Convert to baudrate */
-- if (baud)
-- baud = cp210x_quantise_baudrate((BAUD_RATE_GEN_FREQ + baud/2)/ baud);
-+ cp210x_get_config(port, CP210X_GET_BAUDRATE, &baud, 4);
-
- dbg("%s - baud rate = %d", __func__, baud);
- *baudp = baud;
-@@ -594,8 +593,7 @@ static void cp210x_set_termios(struct tty_struct *tty,
- if (baud != tty_termios_baud_rate(old_termios) && baud != 0) {
- dbg("%s - Setting baud rate to %d baud", __func__,
- baud);
-- if (cp210x_set_config_single(port, CP210X_SET_BAUDDIV,
-- ((BAUD_RATE_GEN_FREQ + baud/2) / baud))) {
-+ if (cp210x_set_config(port, CP210X_SET_BAUDRATE, &baud, 4)) {
- dbg("Baud rate requested not supported by device");
- baud = tty_termios_baud_rate(old_termios);
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0084-USB-cp210x-do-not-map-baud-rates-to-B0.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0084-USB-cp210x-do-not-map-baud-rates-to-B0.patch
deleted file mode 100644
index 7d24148..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0084-USB-cp210x-do-not-map-baud-rates-to-B0.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From c78c606e43e1852bd496a343e8a72d6422d1e2c2 Mon Sep 17 00:00:00 2001
-From: Johan Hovold <jhovold at gmail.com>
-Date: Mon, 16 Jan 2012 00:36:50 +0100
-Subject: [PATCH 84/90] USB: cp210x: do not map baud rates to B0
-
-commit be125d9c8d59560e7cc2d6e2b65c8fd233498ab7 upstream.
-
-We do not implement B0 hangup yet so map low baudrates to 300bps.
-
-Signed-off-by: Johan Hovold <jhovold at gmail.com>
-Cc: Preston Fick <preston.fick at silabs.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/serial/cp210x.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/usb/serial/cp210x.c b/drivers/usb/serial/cp210x.c
-index 60993dc..1bac7b9 100644
---- a/drivers/usb/serial/cp210x.c
-+++ b/drivers/usb/serial/cp210x.c
-@@ -357,8 +357,8 @@ static inline int cp210x_set_config_single(struct usb_serial_port *port,
- * Quantises the baud rate as per AN205 Table 1
- */
- static unsigned int cp210x_quantise_baudrate(unsigned int baud) {
-- if (baud <= 56) baud = 0;
-- else if (baud <= 300) baud = 300;
-+ if (baud <= 300)
-+ baud = 300;
- else if (baud <= 600) baud = 600;
- else if (baud <= 1200) baud = 1200;
- else if (baud <= 1800) baud = 1800;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0085-USB-cp210x-fix-up-set_termios-variables.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0085-USB-cp210x-fix-up-set_termios-variables.patch
deleted file mode 100644
index 28d9d2a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0085-USB-cp210x-fix-up-set_termios-variables.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From cc138871b9d3ad7d03c5ebf0fd2fe5915bbd292c Mon Sep 17 00:00:00 2001
-From: Johan Hovold <jhovold at gmail.com>
-Date: Mon, 16 Jan 2012 00:36:49 +0100
-Subject: [PATCH 85/90] USB: cp210x: fix up set_termios variables
-
-commit 34b76fcaee574017862ea3fa0efdcd77a9d0e57d upstream.
-
-[Based on a patch from Johan, mangled by gregkh to keep things in line]
-
-Fix up the variable usage in the set_termios call.
-
-Signed-off-by: Johan Hovold <jhovold at gmail.com>
-Cc: Preston Fick <preston.fick at silabs.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/serial/cp210x.c | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/usb/serial/cp210x.c b/drivers/usb/serial/cp210x.c
-index 1bac7b9..5c3b7d1 100644
---- a/drivers/usb/serial/cp210x.c
-+++ b/drivers/usb/serial/cp210x.c
-@@ -576,7 +576,8 @@ static void cp210x_set_termios(struct tty_struct *tty,
- struct usb_serial_port *port, struct ktermios *old_termios)
- {
- unsigned int cflag, old_cflag;
-- unsigned int baud = 0, bits;
-+ u32 baud;
-+ unsigned int bits;
- unsigned int modem_ctl[4];
-
- dbg("%s - port %d", __func__, port->number);
-@@ -593,7 +594,7 @@ static void cp210x_set_termios(struct tty_struct *tty,
- if (baud != tty_termios_baud_rate(old_termios) && baud != 0) {
- dbg("%s - Setting baud rate to %d baud", __func__,
- baud);
-- if (cp210x_set_config(port, CP210X_SET_BAUDRATE, &baud, 4)) {
-+ if (cp210x_set_config(port, CP210X_SET_BAUDRATE, &baud, sizeof(baud))) {
- dbg("Baud rate requested not supported by device");
- baud = tty_termios_baud_rate(old_termios);
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0086-USB-cp210x-clean-up-refactor-and-document-speed-hand.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0086-USB-cp210x-clean-up-refactor-and-document-speed-hand.patch
deleted file mode 100644
index 548470e..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0086-USB-cp210x-clean-up-refactor-and-document-speed-hand.patch
+++ /dev/null
@@ -1,121 +0,0 @@
-From 2cfb09b2282a9cf46547260f897064b24b04b4bb Mon Sep 17 00:00:00 2001
-From: Johan Hovold <jhovold at gmail.com>
-Date: Mon, 16 Jan 2012 00:36:51 +0100
-Subject: [PATCH 86/90] USB: cp210x: clean up, refactor and document speed
- handling
-
-commit e5990874e511d5bbca23b3396419480cb2ca0ee7 upstream.
-
-Clean up and refactor speed handling.
-Document baud rate handling for CP210{1,2,4,5,10}.
-
-Signed-off-by: Johan Hovold <jhovold at gmail.com>
-Cc: Preston Fick <preston.fick at silabs.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/serial/cp210x.c | 71 ++++++++++++++++++++++++++++++++++---------
- 1 file changed, 57 insertions(+), 14 deletions(-)
-
-diff --git a/drivers/usb/serial/cp210x.c b/drivers/usb/serial/cp210x.c
-index 5c3b7d1..d2c4080 100644
---- a/drivers/usb/serial/cp210x.c
-+++ b/drivers/usb/serial/cp210x.c
-@@ -39,6 +39,8 @@ static void cp210x_get_termios(struct tty_struct *,
- struct usb_serial_port *port);
- static void cp210x_get_termios_port(struct usb_serial_port *port,
- unsigned int *cflagp, unsigned int *baudp);
-+static void cp210x_change_speed(struct tty_struct *, struct usb_serial_port *,
-+ struct ktermios *);
- static void cp210x_set_termios(struct tty_struct *, struct usb_serial_port *,
- struct ktermios*);
- static int cp210x_tiocmget(struct tty_struct *);
-@@ -572,11 +574,62 @@ static void cp210x_get_termios_port(struct usb_serial_port *port,
- *cflagp = cflag;
- }
-
-+/*
-+ * CP2101 supports the following baud rates:
-+ *
-+ * 300, 600, 1200, 1800, 2400, 4800, 7200, 9600, 14400, 19200, 28800,
-+ * 38400, 56000, 57600, 115200, 128000, 230400, 460800, 921600
-+ *
-+ * CP2102 and CP2103 support the following additional rates:
-+ *
-+ * 4000, 16000, 51200, 64000, 76800, 153600, 250000, 256000, 500000,
-+ * 576000
-+ *
-+ * The device will map a requested rate to a supported one, but the result
-+ * of requests for rates greater than 1053257 is undefined (see AN205).
-+ *
-+ * CP2104, CP2105 and CP2110 support most rates up to 2M, 921k and 1M baud,
-+ * respectively, with an error less than 1%. The actual rates are determined
-+ * by
-+ *
-+ * div = round(freq / (2 x prescale x request))
-+ * actual = freq / (2 x prescale x div)
-+ *
-+ * For CP2104 and CP2105 freq is 48Mhz and prescale is 4 for request <= 365bps
-+ * or 1 otherwise.
-+ * For CP2110 freq is 24Mhz and prescale is 4 for request <= 300bps or 1
-+ * otherwise.
-+ */
-+static void cp210x_change_speed(struct tty_struct *tty,
-+ struct usb_serial_port *port, struct ktermios *old_termios)
-+{
-+ u32 baud;
-+
-+ baud = tty->termios->c_ospeed;
-+
-+ /* This maps the requested rate to a rate valid on cp2102 or cp2103.
-+ *
-+ * NOTE: B0 is not implemented.
-+ */
-+ baud = cp210x_quantise_baudrate(baud);
-+
-+ dbg("%s - setting baud rate to %u", __func__, baud);
-+ if (cp210x_set_config(port, CP210X_SET_BAUDRATE, &baud,
-+ sizeof(baud))) {
-+ dev_warn(&port->dev, "failed to set baud rate to %u\n", baud);
-+ if (old_termios)
-+ baud = old_termios->c_ospeed;
-+ else
-+ baud = 9600;
-+ }
-+
-+ tty_encode_baud_rate(tty, baud, baud);
-+}
-+
- static void cp210x_set_termios(struct tty_struct *tty,
- struct usb_serial_port *port, struct ktermios *old_termios)
- {
- unsigned int cflag, old_cflag;
-- u32 baud;
- unsigned int bits;
- unsigned int modem_ctl[4];
-
-@@ -588,19 +641,9 @@ static void cp210x_set_termios(struct tty_struct *tty,
- tty->termios->c_cflag &= ~CMSPAR;
- cflag = tty->termios->c_cflag;
- old_cflag = old_termios->c_cflag;
-- baud = cp210x_quantise_baudrate(tty_get_baud_rate(tty));
--
-- /* If the baud rate is to be updated*/
-- if (baud != tty_termios_baud_rate(old_termios) && baud != 0) {
-- dbg("%s - Setting baud rate to %d baud", __func__,
-- baud);
-- if (cp210x_set_config(port, CP210X_SET_BAUDRATE, &baud, sizeof(baud))) {
-- dbg("Baud rate requested not supported by device");
-- baud = tty_termios_baud_rate(old_termios);
-- }
-- }
-- /* Report back the resulting baud rate */
-- tty_encode_baud_rate(tty, baud, baud);
-+
-+ if (tty->termios->c_ospeed != old_termios->c_ospeed)
-+ cp210x_change_speed(tty, port, old_termios);
-
- /* If the number of data bits is to be updated */
- if ((cflag & CSIZE) != (old_cflag & CSIZE)) {
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0087-USB-cp210x-initialise-baud-rate-at-open.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0087-USB-cp210x-initialise-baud-rate-at-open.patch
deleted file mode 100644
index 9c7abde..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0087-USB-cp210x-initialise-baud-rate-at-open.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 548b55d00abf0882c6d35b30d0d973ece1d8509b Mon Sep 17 00:00:00 2001
-From: Johan Hovold <jhovold at gmail.com>
-Date: Mon, 16 Jan 2012 00:36:52 +0100
-Subject: [PATCH 87/90] USB: cp210x: initialise baud rate at open
-
-commit cdc32fd6f7b2b2580d7f1b74563f888e4dd9eb8a upstream.
-
-The newer cp2104 devices require the baud rate to be initialised after
-power on. Make sure it is set when port is opened.
-
-Signed-off-by: Johan Hovold <jhovold at gmail.com>
-Cc: Preston Fick <preston.fick at silabs.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/serial/cp210x.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/drivers/usb/serial/cp210x.c b/drivers/usb/serial/cp210x.c
-index d2c4080..07d297f 100644
---- a/drivers/usb/serial/cp210x.c
-+++ b/drivers/usb/serial/cp210x.c
-@@ -408,6 +408,10 @@ static int cp210x_open(struct tty_struct *tty, struct usb_serial_port *port)
- /* Configure the termios structure */
- cp210x_get_termios(tty, port);
-
-+ /* The baud rate must be initialised on cp2104 */
-+ if (tty)
-+ cp210x_change_speed(tty, port, NULL);
-+
- return usb_serial_generic_open(tty, port);
- }
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0088-USB-cp210x-allow-more-baud-rates-above-1Mbaud.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0088-USB-cp210x-allow-more-baud-rates-above-1Mbaud.patch
deleted file mode 100644
index e1fba99..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0088-USB-cp210x-allow-more-baud-rates-above-1Mbaud.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From b4ca737a511b10e086f1c0a9a540a46be508890d Mon Sep 17 00:00:00 2001
-From: Johan Hovold <jhovold at gmail.com>
-Date: Mon, 16 Jan 2012 00:36:53 +0100
-Subject: [PATCH 88/90] USB: cp210x: allow more baud rates above 1Mbaud
-
-commit d1620ca9e7bb0030068c3b45b653defde8839dac upstream.
-
-Allow more baud rates to be set in [1M,2M] baud.
-
-Signed-off-by: Johan Hovold <jhovold at gmail.com>
-Cc: Preston Fick <preston.fick at silabs.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/serial/cp210x.c | 11 ++++++-----
- 1 file changed, 6 insertions(+), 5 deletions(-)
-
-diff --git a/drivers/usb/serial/cp210x.c b/drivers/usb/serial/cp210x.c
-index 07d297f..a515237 100644
---- a/drivers/usb/serial/cp210x.c
-+++ b/drivers/usb/serial/cp210x.c
-@@ -388,10 +388,10 @@ static unsigned int cp210x_quantise_baudrate(unsigned int baud) {
- else if (baud <= 491520) baud = 460800;
- else if (baud <= 567138) baud = 500000;
- else if (baud <= 670254) baud = 576000;
-- else if (baud <= 1053257) baud = 921600;
-- else if (baud <= 1474560) baud = 1228800;
-- else if (baud <= 2457600) baud = 1843200;
-- else baud = 3686400;
-+ else if (baud < 1000000)
-+ baud = 921600;
-+ else if (baud > 2000000)
-+ baud = 2000000;
- return baud;
- }
-
-@@ -611,7 +611,8 @@ static void cp210x_change_speed(struct tty_struct *tty,
-
- baud = tty->termios->c_ospeed;
-
-- /* This maps the requested rate to a rate valid on cp2102 or cp2103.
-+ /* This maps the requested rate to a rate valid on cp2102 or cp2103,
-+ * or to an arbitrary rate in [1M,2M].
- *
- * NOTE: B0 is not implemented.
- */
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0089-mach-ux500-no-MMC_CAP_SD_HIGHSPEED-on-Snowball.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0089-mach-ux500-no-MMC_CAP_SD_HIGHSPEED-on-Snowball.patch
deleted file mode 100644
index 25ae94c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0089-mach-ux500-no-MMC_CAP_SD_HIGHSPEED-on-Snowball.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 6d81b4862ba4c5299d32a670a59aead344604bc6 Mon Sep 17 00:00:00 2001
-From: Philippe Langlais <philippe.langlais at linaro.org>
-Date: Fri, 20 Jan 2012 09:20:40 +0100
-Subject: [PATCH 89/90] mach-ux500: no MMC_CAP_SD_HIGHSPEED on Snowball
-
-commit 2ab1159e80e8f416071e9f51e4f77b9173948296 upstream.
-
-MMC_CAP_SD_HIGHSPEED is not supported on Snowball board resulting on
-initialization errors.
-
-Signed-off-by: Mathieu Poirier <mathieu.poirier at linaro.org>
-Signed-off-by: Fredrik Soderstedt <fredrik.soderstedt at stericsson.com>
-Signed-off-by: Philippe Langlais <philippe.langlais at linaro.org>
-Signed-off-by: Linus Walleij <linus.walleij at linaro.org>
----
- arch/arm/mach-ux500/board-mop500-sdi.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/arch/arm/mach-ux500/board-mop500-sdi.c b/arch/arm/mach-ux500/board-mop500-sdi.c
-index 6826fae..306cff0 100644
---- a/arch/arm/mach-ux500/board-mop500-sdi.c
-+++ b/arch/arm/mach-ux500/board-mop500-sdi.c
-@@ -233,6 +233,8 @@ void __init snowball_sdi_init(void)
- {
- u32 periphid = 0x10480180;
-
-+ /* On Snowball MMC_CAP_SD_HIGHSPEED isn't supported on sdi0 */
-+ mop500_sdi0_data.capabilities &= ~MMC_CAP_SD_HIGHSPEED;
- mop500_sdi2_data.capabilities |= MMC_CAP_MMC_HIGHSPEED;
-
- /* On-board eMMC */
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0090-Linux-3.2.3.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0090-Linux-3.2.3.patch
deleted file mode 100644
index 588146d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0090-Linux-3.2.3.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From f120b51c48ec46f52f5c592e64ad38520244a692 Mon Sep 17 00:00:00 2001
-From: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Date: Fri, 3 Feb 2012 09:23:33 -0800
-Subject: [PATCH 90/90] Linux 3.2.3
-
----
- Makefile | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Makefile b/Makefile
-index 2f684da..d45e887 100644
---- a/Makefile
-+++ b/Makefile
-@@ -1,6 +1,6 @@
- VERSION = 3
- PATCHLEVEL = 2
--SUBLEVEL = 2
-+SUBLEVEL = 3
- EXTRAVERSION =
- NAME = Saber-toothed Squirrel
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.4/0001-Revert-ASoC-Mark-WM5100-register-map-cache-only-when.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.4/0001-Revert-ASoC-Mark-WM5100-register-map-cache-only-when.patch
deleted file mode 100644
index c44c23e..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.4/0001-Revert-ASoC-Mark-WM5100-register-map-cache-only-when.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From e314c200c12a27d279a47356686e170bf449996d Mon Sep 17 00:00:00 2001
-From: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Date: Fri, 3 Feb 2012 12:26:40 -0800
-Subject: [PATCH 1/3] Revert "ASoC: Mark WM5100 register map cache only when
- going into BIAS_OFF"
-
-This reverts commit 11a17e56ac9c607c6eaecf64b618cd17c828ade0
-(e53e417331c57b9b97e3f8be870214a02c99265c upstream) as it breaks the
-build.
-
-Reported-by: Tim Gardner <rtg.canonical at gmail.com>
-Cc: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- sound/soc/codecs/wm5100.c | 1 -
- 1 file changed, 1 deletion(-)
-
-diff --git a/sound/soc/codecs/wm5100.c b/sound/soc/codecs/wm5100.c
-index d0beeec..c745ce8 100644
---- a/sound/soc/codecs/wm5100.c
-+++ b/sound/soc/codecs/wm5100.c
-@@ -1406,7 +1406,6 @@ static int wm5100_set_bias_level(struct snd_soc_codec *codec,
- break;
-
- case SND_SOC_BIAS_OFF:
-- regcache_cache_only(wm5100->regmap, true);
- if (wm5100->pdata.ldo_ena)
- gpio_set_value_cansleep(wm5100->pdata.ldo_ena, 0);
- regulator_bulk_disable(ARRAY_SIZE(wm5100->core_supplies),
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.4/0002-Revert-ASoC-Don-t-go-through-cache-when-applying-WM5.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.4/0002-Revert-ASoC-Don-t-go-through-cache-when-applying-WM5.patch
deleted file mode 100644
index 60b9644..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.4/0002-Revert-ASoC-Don-t-go-through-cache-when-applying-WM5.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From d13a4fd86bf532c59bffe359199e4fbd95dff821 Mon Sep 17 00:00:00 2001
-From: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Date: Fri, 3 Feb 2012 12:27:49 -0800
-Subject: [PATCH 2/3] Revert "ASoC: Don't go through cache when applying
- WM5100 rev A updates"
-
-This reverts commit 78fd75340768980ce6ca646106762a6928289e0c (upstream
-commit 495174a8ffbaa0d15153d855cf206cdc46d51cf4) as it breaks the build.
-
-Reported-by: Tim Gardner <rtg.canonical at gmail.com>
-Cc: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- sound/soc/codecs/wm5100.c | 2 --
- 1 file changed, 2 deletions(-)
-
-diff --git a/sound/soc/codecs/wm5100.c b/sound/soc/codecs/wm5100.c
-index c745ce8..42d9039 100644
---- a/sound/soc/codecs/wm5100.c
-+++ b/sound/soc/codecs/wm5100.c
-@@ -1379,7 +1379,6 @@ static int wm5100_set_bias_level(struct snd_soc_codec *codec,
-
- switch (wm5100->rev) {
- case 0:
-- regcache_cache_bypass(wm5100->regmap, true);
- snd_soc_write(codec, 0x11, 0x3);
- snd_soc_write(codec, 0x203, 0xc);
- snd_soc_write(codec, 0x206, 0);
-@@ -1395,7 +1394,6 @@ static int wm5100_set_bias_level(struct snd_soc_codec *codec,
- snd_soc_write(codec,
- wm5100_reva_patches[i].reg,
- wm5100_reva_patches[i].val);
-- regcache_cache_bypass(wm5100->regmap, false);
- break;
- default:
- break;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.4/0003-Linux-3.2.4.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.4/0003-Linux-3.2.4.patch
deleted file mode 100644
index af959c8..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.4/0003-Linux-3.2.4.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 4b30599fc71a6186fc5aa78d78de0314a1dc4a28 Mon Sep 17 00:00:00 2001
-From: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Date: Fri, 3 Feb 2012 12:39:51 -0800
-Subject: [PATCH 3/3] Linux 3.2.4
-
----
- Makefile | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Makefile b/Makefile
-index d45e887..c8e187e 100644
---- a/Makefile
-+++ b/Makefile
-@@ -1,6 +1,6 @@
- VERSION = 3
- PATCHLEVEL = 2
--SUBLEVEL = 3
-+SUBLEVEL = 4
- EXTRAVERSION =
- NAME = Saber-toothed Squirrel
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.5/0001-PCI-Rework-ASPM-disable-code.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.5/0001-PCI-Rework-ASPM-disable-code.patch
deleted file mode 100644
index ed9e743..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.5/0001-PCI-Rework-ASPM-disable-code.patch
+++ /dev/null
@@ -1,236 +0,0 @@
-From 01216f2d0e79e2d1a255e38141c9204bc6a5bae7 Mon Sep 17 00:00:00 2001
-From: Matthew Garrett <mjg at redhat.com>
-Date: Thu, 10 Nov 2011 16:38:33 -0500
-Subject: [PATCH 1/2] PCI: Rework ASPM disable code
-
-commit 3c076351c4027a56d5005a39a0b518a4ba393ce2 upstream.
-
-Right now we forcibly clear ASPM state on all devices if the BIOS indicates
-that the feature isn't supported. Based on the Microsoft presentation
-"PCI Express In Depth for Windows Vista and Beyond", I'm starting to think
-that this may be an error. The implication is that unless the platform
-grants full control via _OSC, Windows will not touch any PCIe features -
-including ASPM. In that case clearing ASPM state would be an error unless
-the platform has granted us that control.
-
-This patch reworks the ASPM disabling code such that the actual clearing
-of state is triggered by a successful handoff of PCIe control to the OS.
-The general ASPM code undergoes some changes in order to ensure that the
-ability to clear the bits isn't overridden by ASPM having already been
-disabled. Further, this theoretically now allows for situations where
-only a subset of PCIe roots hand over control, leaving the others in the
-BIOS state.
-
-It's difficult to know for sure that this is the right thing to do -
-there's zero public documentation on the interaction between all of these
-components. But enough vendors enable ASPM on platforms and then set this
-bit that it seems likely that they're expecting the OS to leave them alone.
-
-Measured to save around 5W on an idle Thinkpad X220.
-
-Signed-off-by: Matthew Garrett <mjg at redhat.com>
-Signed-off-by: Jesse Barnes <jbarnes at virtuousgeek.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/acpi/pci_root.c | 7 ++++++
- drivers/pci/pci-acpi.c | 1 -
- drivers/pci/pcie/aspm.c | 58 +++++++++++++++++++++++++++++-----------------
- include/linux/pci-aspm.h | 4 ++--
- 4 files changed, 46 insertions(+), 24 deletions(-)
-
-diff --git a/drivers/acpi/pci_root.c b/drivers/acpi/pci_root.c
-index 2672c79..7aff631 100644
---- a/drivers/acpi/pci_root.c
-+++ b/drivers/acpi/pci_root.c
-@@ -596,6 +596,13 @@ static int __devinit acpi_pci_root_add(struct acpi_device *device)
- if (ACPI_SUCCESS(status)) {
- dev_info(root->bus->bridge,
- "ACPI _OSC control (0x%02x) granted\n", flags);
-+ if (acpi_gbl_FADT.boot_flags & ACPI_FADT_NO_ASPM) {
-+ /*
-+ * We have ASPM control, but the FADT indicates
-+ * that it's unsupported. Clear it.
-+ */
-+ pcie_clear_aspm(root->bus);
-+ }
- } else {
- dev_info(root->bus->bridge,
- "ACPI _OSC request failed (%s), "
-diff --git a/drivers/pci/pci-acpi.c b/drivers/pci/pci-acpi.c
-index 4ecb640..c8e7585 100644
---- a/drivers/pci/pci-acpi.c
-+++ b/drivers/pci/pci-acpi.c
-@@ -395,7 +395,6 @@ static int __init acpi_pci_init(void)
-
- if (acpi_gbl_FADT.boot_flags & ACPI_FADT_NO_ASPM) {
- printk(KERN_INFO"ACPI FADT declares the system doesn't support PCIe ASPM, so disable it\n");
-- pcie_clear_aspm();
- pcie_no_aspm();
- }
-
-diff --git a/drivers/pci/pcie/aspm.c b/drivers/pci/pcie/aspm.c
-index cbfbab1..1cfbf22 100644
---- a/drivers/pci/pcie/aspm.c
-+++ b/drivers/pci/pcie/aspm.c
-@@ -68,7 +68,7 @@ struct pcie_link_state {
- struct aspm_latency acceptable[8];
- };
-
--static int aspm_disabled, aspm_force, aspm_clear_state;
-+static int aspm_disabled, aspm_force;
- static bool aspm_support_enabled = true;
- static DEFINE_MUTEX(aspm_lock);
- static LIST_HEAD(link_list);
-@@ -500,9 +500,6 @@ static int pcie_aspm_sanity_check(struct pci_dev *pdev)
- int pos;
- u32 reg32;
-
-- if (aspm_clear_state)
-- return -EINVAL;
--
- /*
- * Some functions in a slot might not all be PCIe functions,
- * very strange. Disable ASPM for the whole slot
-@@ -574,9 +571,6 @@ void pcie_aspm_init_link_state(struct pci_dev *pdev)
- pdev->pcie_type != PCI_EXP_TYPE_DOWNSTREAM)
- return;
-
-- if (aspm_disabled && !aspm_clear_state)
-- return;
--
- /* VIA has a strange chipset, root port is under a bridge */
- if (pdev->pcie_type == PCI_EXP_TYPE_ROOT_PORT &&
- pdev->bus->self)
-@@ -608,7 +602,7 @@ void pcie_aspm_init_link_state(struct pci_dev *pdev)
- * the BIOS's expectation, we'll do so once pci_enable_device() is
- * called.
- */
-- if (aspm_policy != POLICY_POWERSAVE || aspm_clear_state) {
-+ if (aspm_policy != POLICY_POWERSAVE) {
- pcie_config_aspm_path(link);
- pcie_set_clkpm(link, policy_to_clkpm_state(link));
- }
-@@ -649,8 +643,7 @@ void pcie_aspm_exit_link_state(struct pci_dev *pdev)
- struct pci_dev *parent = pdev->bus->self;
- struct pcie_link_state *link, *root, *parent_link;
-
-- if ((aspm_disabled && !aspm_clear_state) || !pci_is_pcie(pdev) ||
-- !parent || !parent->link_state)
-+ if (!pci_is_pcie(pdev) || !parent || !parent->link_state)
- return;
- if ((parent->pcie_type != PCI_EXP_TYPE_ROOT_PORT) &&
- (parent->pcie_type != PCI_EXP_TYPE_DOWNSTREAM))
-@@ -734,13 +727,18 @@ void pcie_aspm_powersave_config_link(struct pci_dev *pdev)
- * pci_disable_link_state - disable pci device's link state, so the link will
- * never enter specific states
- */
--static void __pci_disable_link_state(struct pci_dev *pdev, int state, bool sem)
-+static void __pci_disable_link_state(struct pci_dev *pdev, int state, bool sem,
-+ bool force)
- {
- struct pci_dev *parent = pdev->bus->self;
- struct pcie_link_state *link;
-
-- if (aspm_disabled || !pci_is_pcie(pdev))
-+ if (aspm_disabled && !force)
-+ return;
-+
-+ if (!pci_is_pcie(pdev))
- return;
-+
- if (pdev->pcie_type == PCI_EXP_TYPE_ROOT_PORT ||
- pdev->pcie_type == PCI_EXP_TYPE_DOWNSTREAM)
- parent = pdev;
-@@ -768,16 +766,31 @@ static void __pci_disable_link_state(struct pci_dev *pdev, int state, bool sem)
-
- void pci_disable_link_state_locked(struct pci_dev *pdev, int state)
- {
-- __pci_disable_link_state(pdev, state, false);
-+ __pci_disable_link_state(pdev, state, false, false);
- }
- EXPORT_SYMBOL(pci_disable_link_state_locked);
-
- void pci_disable_link_state(struct pci_dev *pdev, int state)
- {
-- __pci_disable_link_state(pdev, state, true);
-+ __pci_disable_link_state(pdev, state, true, false);
- }
- EXPORT_SYMBOL(pci_disable_link_state);
-
-+void pcie_clear_aspm(struct pci_bus *bus)
-+{
-+ struct pci_dev *child;
-+
-+ /*
-+ * Clear any ASPM setup that the firmware has carried out on this bus
-+ */
-+ list_for_each_entry(child, &bus->devices, bus_list) {
-+ __pci_disable_link_state(child, PCIE_LINK_STATE_L0S |
-+ PCIE_LINK_STATE_L1 |
-+ PCIE_LINK_STATE_CLKPM,
-+ false, true);
-+ }
-+}
-+
- static int pcie_aspm_set_policy(const char *val, struct kernel_param *kp)
- {
- int i;
-@@ -935,6 +948,7 @@ void pcie_aspm_remove_sysfs_dev_files(struct pci_dev *pdev)
- static int __init pcie_aspm_disable(char *str)
- {
- if (!strcmp(str, "off")) {
-+ aspm_policy = POLICY_DEFAULT;
- aspm_disabled = 1;
- aspm_support_enabled = false;
- printk(KERN_INFO "PCIe ASPM is disabled\n");
-@@ -947,16 +961,18 @@ static int __init pcie_aspm_disable(char *str)
-
- __setup("pcie_aspm=", pcie_aspm_disable);
-
--void pcie_clear_aspm(void)
--{
-- if (!aspm_force)
-- aspm_clear_state = 1;
--}
--
- void pcie_no_aspm(void)
- {
-- if (!aspm_force)
-+ /*
-+ * Disabling ASPM is intended to prevent the kernel from modifying
-+ * existing hardware state, not to clear existing state. To that end:
-+ * (a) set policy to POLICY_DEFAULT in order to avoid changing state
-+ * (b) prevent userspace from changing policy
-+ */
-+ if (!aspm_force) {
-+ aspm_policy = POLICY_DEFAULT;
- aspm_disabled = 1;
-+ }
- }
-
- /**
-diff --git a/include/linux/pci-aspm.h b/include/linux/pci-aspm.h
-index 7cea7b6..c832014 100644
---- a/include/linux/pci-aspm.h
-+++ b/include/linux/pci-aspm.h
-@@ -29,7 +29,7 @@ extern void pcie_aspm_pm_state_change(struct pci_dev *pdev);
- extern void pcie_aspm_powersave_config_link(struct pci_dev *pdev);
- extern void pci_disable_link_state(struct pci_dev *pdev, int state);
- extern void pci_disable_link_state_locked(struct pci_dev *pdev, int state);
--extern void pcie_clear_aspm(void);
-+extern void pcie_clear_aspm(struct pci_bus *bus);
- extern void pcie_no_aspm(void);
- #else
- static inline void pcie_aspm_init_link_state(struct pci_dev *pdev)
-@@ -47,7 +47,7 @@ static inline void pcie_aspm_powersave_config_link(struct pci_dev *pdev)
- static inline void pci_disable_link_state(struct pci_dev *pdev, int state)
- {
- }
--static inline void pcie_clear_aspm(void)
-+static inline void pcie_clear_aspm(struct pci_bus *bus)
- {
- }
- static inline void pcie_no_aspm(void)
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.5/0002-Linux-3.2.5.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.5/0002-Linux-3.2.5.patch
deleted file mode 100644
index d257ce2..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.5/0002-Linux-3.2.5.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 6973b318ea01a9a190e9605dc90b11e2d2694fc2 Mon Sep 17 00:00:00 2001
-From: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Date: Mon, 6 Feb 2012 09:47:00 -0800
-Subject: [PATCH 2/2] Linux 3.2.5
-
----
- Makefile | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Makefile b/Makefile
-index c8e187e..e9dd0ff 100644
---- a/Makefile
-+++ b/Makefile
-@@ -1,6 +1,6 @@
- VERSION = 3
- PATCHLEVEL = 2
--SUBLEVEL = 4
-+SUBLEVEL = 5
- EXTRAVERSION =
- NAME = Saber-toothed Squirrel
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0001-readahead-fix-pipeline-break-caused-by-block-plug.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0001-readahead-fix-pipeline-break-caused-by-block-plug.patch
deleted file mode 100644
index a82d5ef..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0001-readahead-fix-pipeline-break-caused-by-block-plug.patch
+++ /dev/null
@@ -1,99 +0,0 @@
-From 13ed979676b49ea07cbf4ee5cc3de07c1025abe6 Mon Sep 17 00:00:00 2001
-From: Shaohua Li <shaohua.li at intel.com>
-Date: Fri, 3 Feb 2012 15:37:17 -0800
-Subject: [PATCH 01/87] readahead: fix pipeline break caused by block plug
-
-commit 3deaa7190a8da38453c4fabd9dec7f66d17fff67 upstream.
-
-Herbert Poetzl reported a performance regression since 2.6.39. The test
-is a simple dd read, but with big block size. The reason is:
-
-T1: ra (A, A+128k), (A+128k, A+256k)
-T2: lock_page for page A, submit the 256k
-T3: hit page A+128K, ra (A+256k, A+384). the range isn't submitted
-because of plug and there isn't any lock_page till we hit page A+256k
-because all pages from A to A+256k is in memory
-T4: hit page A+256k, ra (A+384, A+ 512). Because of plug, the range isn't
-submitted again.
-T5: lock_page A+256k, so (A+256k, A+512k) will be submitted. The task is
-waitting for (A+256k, A+512k) finish.
-
-There is no request to disk in T3 and T4, so readahead pipeline breaks.
-
-We really don't need block plug for generic_file_aio_read() for buffered
-I/O. The readahead already has plug and has fine grained control when I/O
-should be submitted. Deleting plug for buffered I/O fixes the regression.
-
-One side effect is plug makes the request size 256k, the size is 128k
-without it. This is because default ra size is 128k and not a reason we
-need plug here.
-
-Vivek said:
-
-: We submit some readahead IO to device request queue but because of nested
-: plug, queue never gets unplugged. When read logic reaches a page which is
-: not in page cache, it waits for page to be read from the disk
-: (lock_page_killable()) and that time we flush the plug list.
-:
-: So effectively read ahead logic is kind of broken in parts because of
-: nested plugging. Removing top level plug (generic_file_aio_read()) for
-: buffered reads, will allow unplugging queue earlier for readahead.
-
-Signed-off-by: Shaohua Li <shaohua.li at intel.com>
-Signed-off-by: Wu Fengguang <fengguang.wu at intel.com>
-Reported-by: Herbert Poetzl <herbert at 13thfloor.at>
-Tested-by: Eric Dumazet <eric.dumazet at gmail.com>
-Cc: Christoph Hellwig <hch at infradead.org>
-Cc: Jens Axboe <axboe at kernel.dk>
-Cc: Vivek Goyal <vgoyal at redhat.com>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- mm/filemap.c | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/mm/filemap.c b/mm/filemap.c
-index 90286a4..03c5b0e 100644
---- a/mm/filemap.c
-+++ b/mm/filemap.c
-@@ -1400,15 +1400,12 @@ generic_file_aio_read(struct kiocb *iocb, const struct iovec *iov,
- unsigned long seg = 0;
- size_t count;
- loff_t *ppos = &iocb->ki_pos;
-- struct blk_plug plug;
-
- count = 0;
- retval = generic_segment_checks(iov, &nr_segs, &count, VERIFY_WRITE);
- if (retval)
- return retval;
-
-- blk_start_plug(&plug);
--
- /* coalesce the iovecs and go direct-to-BIO for O_DIRECT */
- if (filp->f_flags & O_DIRECT) {
- loff_t size;
-@@ -1424,8 +1421,12 @@ generic_file_aio_read(struct kiocb *iocb, const struct iovec *iov,
- retval = filemap_write_and_wait_range(mapping, pos,
- pos + iov_length(iov, nr_segs) - 1);
- if (!retval) {
-+ struct blk_plug plug;
-+
-+ blk_start_plug(&plug);
- retval = mapping->a_ops->direct_IO(READ, iocb,
- iov, pos, nr_segs);
-+ blk_finish_plug(&plug);
- }
- if (retval > 0) {
- *ppos = pos + retval;
-@@ -1481,7 +1482,6 @@ generic_file_aio_read(struct kiocb *iocb, const struct iovec *iov,
- break;
- }
- out:
-- blk_finish_plug(&plug);
- return retval;
- }
- EXPORT_SYMBOL(generic_file_aio_read);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0002-ALSA-hda-Fix-the-logic-to-detect-VIA-analog-low-curr.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0002-ALSA-hda-Fix-the-logic-to-detect-VIA-analog-low-curr.patch
deleted file mode 100644
index d0509af..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0002-ALSA-hda-Fix-the-logic-to-detect-VIA-analog-low-curr.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From b140872c2b68584d6222963186857872b0b4aad8 Mon Sep 17 00:00:00 2001
-From: Takashi Iwai <tiwai at suse.de>
-Date: Tue, 24 Jan 2012 13:58:36 +0100
-Subject: [PATCH 02/87] ALSA: hda - Fix the logic to detect VIA analog
- low-current mode
-
-commit 924339239fd5ba3e505f9420d41f0939196f3530 upstream.
-
-The analog low-current mode must be enabled when the no stream is
-running but the current detection checks it in a wrong way.
-
-Bugzilla: https://bugzilla.novell.com/show_bug.cgi?id=741128
-
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- sound/pci/hda/patch_via.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/sound/pci/hda/patch_via.c b/sound/pci/hda/patch_via.c
-index 8d69e59..0684542 100644
---- a/sound/pci/hda/patch_via.c
-+++ b/sound/pci/hda/patch_via.c
-@@ -1041,7 +1041,7 @@ static void analog_low_current_mode(struct hda_codec *codec)
- bool enable;
- unsigned int verb, parm;
-
-- enable = is_aa_path_mute(codec) && (spec->opened_streams != 0);
-+ enable = is_aa_path_mute(codec) && !spec->opened_streams;
-
- /* decide low current mode's verb & parameter */
- switch (spec->codec_type) {
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0003-ALSA-HDA-Remove-quirk-for-Asus-N53Jq.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0003-ALSA-HDA-Remove-quirk-for-Asus-N53Jq.patch
deleted file mode 100644
index f8ef47d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0003-ALSA-HDA-Remove-quirk-for-Asus-N53Jq.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From ff421d27adebc855838a34bfad1c228f3ba7125c Mon Sep 17 00:00:00 2001
-From: David Henningsson <david.henningsson at canonical.com>
-Date: Fri, 27 Jan 2012 14:31:19 +0100
-Subject: [PATCH 03/87] ALSA: HDA: Remove quirk for Asus N53Jq
-
-commit a389d67cf9849aff1722ed73186a584e2196a873 upstream.
-
-The user reports that he needs to add model=auto for audio to
-work properly. In fact, since node 0x15 is not even a pin node,
-the existing fixup is definitely wrong. Relevant information can
-be found in the buglink below.
-
-BugLink: https://bugs.launchpad.net/bugs/918254
-Signed-off-by: David Henningsson <david.henningsson at canonical.com>
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- sound/pci/hda/patch_realtek.c | 1 -
- 1 file changed, 1 deletion(-)
-
-diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
-index 5f03c40..d02e8e0 100644
---- a/sound/pci/hda/patch_realtek.c
-+++ b/sound/pci/hda/patch_realtek.c
-@@ -5011,7 +5011,6 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
- SND_PCI_QUIRK(0x1043, 0x8330, "ASUS Eeepc P703 P900A",
- ALC269_FIXUP_AMIC),
- SND_PCI_QUIRK(0x1043, 0x1013, "ASUS N61Da", ALC269_FIXUP_AMIC),
-- SND_PCI_QUIRK(0x1043, 0x1113, "ASUS N63Jn", ALC269_FIXUP_AMIC),
- SND_PCI_QUIRK(0x1043, 0x1143, "ASUS B53f", ALC269_FIXUP_AMIC),
- SND_PCI_QUIRK(0x1043, 0x1133, "ASUS UJ20ft", ALC269_FIXUP_AMIC),
- SND_PCI_QUIRK(0x1043, 0x1183, "ASUS K72DR", ALC269_FIXUP_AMIC),
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0004-ALSA-hda-Apply-0x0f-VREF-fix-to-all-ASUS-laptops-wit.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0004-ALSA-hda-Apply-0x0f-VREF-fix-to-all-ASUS-laptops-wit.patch
deleted file mode 100644
index 7d76e70..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0004-ALSA-hda-Apply-0x0f-VREF-fix-to-all-ASUS-laptops-wit.patch
+++ /dev/null
@@ -1,117 +0,0 @@
-From db42530b124394fc5dc5d8377d7d9c0798c4e0fa Mon Sep 17 00:00:00 2001
-From: Takashi Iwai <tiwai at suse.de>
-Date: Mon, 30 Jan 2012 10:54:08 +0100
-Subject: [PATCH 04/87] ALSA: hda - Apply 0x0f-VREF fix to all ASUS laptops
- with ALC861/660
-
-commit 31150f2327cbb66363f38e13ca1be973d2f9203a upstream.
-
-It turned out that other ASUS laptops require the similar fix to
-enable the VREF on the pin 0x0f for the secret output amp, not only
-ASUS A6Rp. Moreover, it's required even when the pin is being used
-as the output. Thus, writing a fixed value doesn't work always.
-
-This patch applies the VREF-fix for all ASUS laptops with ALC861/660
-in a fixup function that checks the current value and turns on only
-the VREF value no matter whether input or output direction is set.
-
-The automute function is modified as well to keep the pin VREF upon
-muting/unmuting via pin-control; otherwise the pin VREF is reset at
-plugging/unplugging a jack.
-
-Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=42588
-
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- sound/pci/hda/patch_realtek.c | 43 +++++++++++++++++++++++++++++++++--------
- 1 file changed, 35 insertions(+), 8 deletions(-)
-
-diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
-index d02e8e0..34e5fcc 100644
---- a/sound/pci/hda/patch_realtek.c
-+++ b/sound/pci/hda/patch_realtek.c
-@@ -176,6 +176,7 @@ struct alc_spec {
- unsigned int detect_lo:1; /* Line-out detection enabled */
- unsigned int automute_speaker_possible:1; /* there are speakers and either LO or HP */
- unsigned int automute_lo_possible:1; /* there are line outs and HP */
-+ unsigned int keep_vref_in_automute:1; /* Don't clear VREF in automute */
-
- /* other flags */
- unsigned int no_analog :1; /* digital I/O only */
-@@ -519,13 +520,24 @@ static void do_automute(struct hda_codec *codec, int num_pins, hda_nid_t *pins,
-
- for (i = 0; i < num_pins; i++) {
- hda_nid_t nid = pins[i];
-+ unsigned int val;
- if (!nid)
- break;
- switch (spec->automute_mode) {
- case ALC_AUTOMUTE_PIN:
-+ /* don't reset VREF value in case it's controlling
-+ * the amp (see alc861_fixup_asus_amp_vref_0f())
-+ */
-+ if (spec->keep_vref_in_automute) {
-+ val = snd_hda_codec_read(codec, nid, 0,
-+ AC_VERB_GET_PIN_WIDGET_CONTROL, 0);
-+ val &= ~PIN_HP;
-+ } else
-+ val = 0;
-+ val |= pin_bits;
- snd_hda_codec_write(codec, nid, 0,
- AC_VERB_SET_PIN_WIDGET_CONTROL,
-- pin_bits);
-+ val);
- break;
- case ALC_AUTOMUTE_AMP:
- snd_hda_codec_amp_stereo(codec, nid, HDA_OUTPUT, 0,
-@@ -5225,6 +5237,25 @@ enum {
- PINFIX_ASUS_A6RP,
- };
-
-+/* On some laptops, VREF of pin 0x0f is abused for controlling the main amp */
-+static void alc861_fixup_asus_amp_vref_0f(struct hda_codec *codec,
-+ const struct alc_fixup *fix, int action)
-+{
-+ struct alc_spec *spec = codec->spec;
-+ unsigned int val;
-+
-+ if (action != ALC_FIXUP_ACT_INIT)
-+ return;
-+ val = snd_hda_codec_read(codec, 0x0f, 0,
-+ AC_VERB_GET_PIN_WIDGET_CONTROL, 0);
-+ if (!(val & (AC_PINCTL_IN_EN | AC_PINCTL_OUT_EN)))
-+ val |= AC_PINCTL_IN_EN;
-+ val |= AC_PINCTL_VREF_50;
-+ snd_hda_codec_write(codec, 0x0f, 0,
-+ AC_VERB_SET_PIN_WIDGET_CONTROL, val);
-+ spec->keep_vref_in_automute = 1;
-+}
-+
- static const struct alc_fixup alc861_fixups[] = {
- [PINFIX_FSC_AMILO_PI1505] = {
- .type = ALC_FIXUP_PINS,
-@@ -5235,17 +5266,13 @@ static const struct alc_fixup alc861_fixups[] = {
- }
- },
- [PINFIX_ASUS_A6RP] = {
-- .type = ALC_FIXUP_VERBS,
-- .v.verbs = (const struct hda_verb[]) {
-- /* node 0x0f VREF seems controlling the master output */
-- { 0x0f, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_VREF50 },
-- { }
-- },
-+ .type = ALC_FIXUP_FUNC,
-+ .v.func = alc861_fixup_asus_amp_vref_0f,
- },
- };
-
- static const struct snd_pci_quirk alc861_fixup_tbl[] = {
-- SND_PCI_QUIRK(0x1043, 0x1393, "ASUS A6Rp", PINFIX_ASUS_A6RP),
-+ SND_PCI_QUIRK_VENDOR(0x1043, "ASUS laptop", PINFIX_ASUS_A6RP),
- SND_PCI_QUIRK(0x1584, 0x2b01, "Haier W18", PINFIX_ASUS_A6RP),
- SND_PCI_QUIRK(0x1734, 0x10c7, "FSC Amilo Pi1505", PINFIX_FSC_AMILO_PI1505),
- {}
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0005-ALSA-hda-Fix-calling-cs_automic-twice-for-Cirrus-cod.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0005-ALSA-hda-Fix-calling-cs_automic-twice-for-Cirrus-cod.patch
deleted file mode 100644
index 3483956..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0005-ALSA-hda-Fix-calling-cs_automic-twice-for-Cirrus-cod.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From 8857f50ec84c8206c56754e7440064b3e382df23 Mon Sep 17 00:00:00 2001
-From: Dylan Reid <dgreid at chromium.org>
-Date: Tue, 31 Jan 2012 13:04:41 -0800
-Subject: [PATCH 05/87] ALSA: hda - Fix calling cs_automic twice for Cirrus
- codecs.
-
-commit f70eecde3bca92630d3886496e73316ff353f185 upstream.
-
-If cs_automic is called twice (like it is during init) while the mic
-is present, it will over-write the last_input with the new one,
-causing it to switch back to the automic input when the mic is
-unplugged. This leaves the driver in a state (cur_input, last_input,
-and automix_idx the same) where the internal mic can not be selected
-until it is rebooted without the mic attached.
-
-Check that the mic hasn't already been switched to before setting
-last_input.
-
-Signed-off-by: Dylan Reid <dgreid at chromium.org>
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- sound/pci/hda/patch_cirrus.c | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/sound/pci/hda/patch_cirrus.c b/sound/pci/hda/patch_cirrus.c
-index 5b0a9bb..ec0518e 100644
---- a/sound/pci/hda/patch_cirrus.c
-+++ b/sound/pci/hda/patch_cirrus.c
-@@ -976,8 +976,10 @@ static void cs_automic(struct hda_codec *codec)
- /* specific to CS421x, single ADC */
- if (spec->vendor_nid == CS421X_VENDOR_NID) {
- if (present) {
-- spec->last_input = spec->cur_input;
-- spec->cur_input = spec->automic_idx;
-+ if (spec->cur_input != spec->automic_idx) {
-+ spec->last_input = spec->cur_input;
-+ spec->cur_input = spec->automic_idx;
-+ }
- } else {
- spec->cur_input = spec->last_input;
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0006-ALSA-hda-Allow-analog-low-current-mode-when-dynamic-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0006-ALSA-hda-Allow-analog-low-current-mode-when-dynamic-.patch
deleted file mode 100644
index c52709a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0006-ALSA-hda-Allow-analog-low-current-mode-when-dynamic-.patch
+++ /dev/null
@@ -1,105 +0,0 @@
-From 65cbea9482aee087726b832dd6eacbf98f32e063 Mon Sep 17 00:00:00 2001
-From: Takashi Iwai <tiwai at suse.de>
-Date: Wed, 1 Feb 2012 10:33:23 +0100
-Subject: [PATCH 06/87] ALSA: hda - Allow analog low-current mode when dynamic
- power-control is on
-
-commit e9d010c2e8f03952e67a6fd8aed0f0dc92084ccc upstream.
-
-VIA codecs have several different power-saving features, and one of
-them is the analog low-current mode. But it turned out that the ALC
-mode causes pop-noises at each on/off time on some machines. As a
-quick workaround, disable the ALC when another power-saving feature,
-the dynamic pin power-control, is turned off, too, since the dynamic
-power-control is already exposed as a mixer enum element so that user
-can turn it on/off freely.
-
-Bugzilla: https://bugzilla.novell.com/show_bug.cgi?id=741128
-
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- sound/pci/hda/patch_via.c | 27 +++++++++++++++++++++------
- 1 file changed, 21 insertions(+), 6 deletions(-)
-
-diff --git a/sound/pci/hda/patch_via.c b/sound/pci/hda/patch_via.c
-index 0684542..d2a477d 100644
---- a/sound/pci/hda/patch_via.c
-+++ b/sound/pci/hda/patch_via.c
-@@ -198,6 +198,9 @@ struct via_spec {
- unsigned int no_pin_power_ctl;
- enum VIA_HDA_CODEC codec_type;
-
-+ /* analog low-power control */
-+ bool alc_mode;
-+
- /* smart51 setup */
- unsigned int smart51_nums;
- hda_nid_t smart51_pins[2];
-@@ -748,6 +751,7 @@ static int via_pin_power_ctl_put(struct snd_kcontrol *kcontrol,
- return 0;
- spec->no_pin_power_ctl = val;
- set_widgets_power_state(codec);
-+ analog_low_current_mode(codec);
- return 1;
- }
-
-@@ -1035,13 +1039,19 @@ static bool is_aa_path_mute(struct hda_codec *codec)
- }
-
- /* enter/exit analog low-current mode */
--static void analog_low_current_mode(struct hda_codec *codec)
-+static void __analog_low_current_mode(struct hda_codec *codec, bool force)
- {
- struct via_spec *spec = codec->spec;
- bool enable;
- unsigned int verb, parm;
-
-- enable = is_aa_path_mute(codec) && !spec->opened_streams;
-+ if (spec->no_pin_power_ctl)
-+ enable = false;
-+ else
-+ enable = is_aa_path_mute(codec) && !spec->opened_streams;
-+ if (enable == spec->alc_mode && !force)
-+ return;
-+ spec->alc_mode = enable;
-
- /* decide low current mode's verb & parameter */
- switch (spec->codec_type) {
-@@ -1073,6 +1083,11 @@ static void analog_low_current_mode(struct hda_codec *codec)
- snd_hda_codec_write(codec, codec->afg, 0, verb, parm);
- }
-
-+static void analog_low_current_mode(struct hda_codec *codec)
-+{
-+ return __analog_low_current_mode(codec, false);
-+}
-+
- /*
- * generic initialization of ADC, input mixers and output mixers
- */
-@@ -1498,10 +1513,6 @@ static int via_build_controls(struct hda_codec *codec)
- return err;
- }
-
-- /* init power states */
-- set_widgets_power_state(codec);
-- analog_low_current_mode(codec);
--
- via_free_kctls(codec); /* no longer needed */
- return 0;
- }
-@@ -2771,6 +2782,10 @@ static int via_init(struct hda_codec *codec)
- for (i = 0; i < spec->num_iverbs; i++)
- snd_hda_sequence_write(codec, spec->init_verbs[i]);
-
-+ /* init power states */
-+ set_widgets_power_state(codec);
-+ __analog_low_current_mode(codec, true);
-+
- via_auto_init_multi_out(codec);
- via_auto_init_hp_out(codec);
- via_auto_init_speaker_out(codec);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0007-ALSA-HDA-Fix-duplicated-output-to-more-than-one-code.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0007-ALSA-HDA-Fix-duplicated-output-to-more-than-one-code.patch
deleted file mode 100644
index e70d054..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0007-ALSA-HDA-Fix-duplicated-output-to-more-than-one-code.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 826f0a2fa02e818856fec7ec2ee612975c1fe415 Mon Sep 17 00:00:00 2001
-From: David Henningsson <david.henningsson at canonical.com>
-Date: Wed, 1 Feb 2012 12:05:41 +0100
-Subject: [PATCH 07/87] ALSA: HDA: Fix duplicated output to more than one
- codec
-
-commit 54c2a89f60fd71b924d0f848ac892442951401a6 upstream.
-
-This typo caused the wrong codec's nid to be checked for wcaps type.
-As a result, sometimes speakers would duplicate the output sent to
-HDMI output.
-
-BugLink: https://bugs.launchpad.net/bugs/924320
-Signed-off-by: David Henningsson <david.henningsson at canonical.com>
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- sound/pci/hda/hda_codec.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c
-index 4562e9d..05c8768 100644
---- a/sound/pci/hda/hda_codec.c
-+++ b/sound/pci/hda/hda_codec.c
-@@ -1446,7 +1446,7 @@ void snd_hda_codec_setup_stream(struct hda_codec *codec, hda_nid_t nid,
- for (i = 0; i < c->cvt_setups.used; i++) {
- p = snd_array_elem(&c->cvt_setups, i);
- if (!p->active && p->stream_tag == stream_tag &&
-- get_wcaps_type(get_wcaps(codec, p->nid)) == type)
-+ get_wcaps_type(get_wcaps(c, p->nid)) == type)
- p->dirty = 1;
- }
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0008-ALSA-hda-Disable-dynamic-power-control-for-VIA-as-de.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0008-ALSA-hda-Disable-dynamic-power-control-for-VIA-as-de.patch
deleted file mode 100644
index 48c5f44..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0008-ALSA-hda-Disable-dynamic-power-control-for-VIA-as-de.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 7a3c6e67be916c3ca24b5ef0acdc5e32ab4e3559 Mon Sep 17 00:00:00 2001
-From: Takashi Iwai <tiwai at suse.de>
-Date: Thu, 2 Feb 2012 10:30:17 +0100
-Subject: [PATCH 08/87] ALSA: hda - Disable dynamic-power control for VIA as
- default
-
-commit b5bcc189401c815988b7dd37611fc56f40c9139d upstream.
-
-Since the dynamic pin power-control and the analog low-current mode
-may lead to pop-noise, it's safer to set it off as default.
-
-Bugzilla: https://bugzilla.novell.com/show_bug.cgi?id=741128
-
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- sound/pci/hda/patch_via.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/sound/pci/hda/patch_via.c b/sound/pci/hda/patch_via.c
-index d2a477d..a0a3f50 100644
---- a/sound/pci/hda/patch_via.c
-+++ b/sound/pci/hda/patch_via.c
-@@ -1460,6 +1460,7 @@ static int via_build_controls(struct hda_codec *codec)
- struct snd_kcontrol *kctl;
- int err, i;
-
-+ spec->no_pin_power_ctl = 1;
- if (spec->set_widgets_power_state)
- if (!via_clone_control(spec, &via_pin_power_ctl_enum))
- return -ENOMEM;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0009-ASoC-wm_hubs-Enable-line-out-VMID-buffer-for-single-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0009-ASoC-wm_hubs-Enable-line-out-VMID-buffer-for-single-.patch
deleted file mode 100644
index a27b975..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0009-ASoC-wm_hubs-Enable-line-out-VMID-buffer-for-single-.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From 83421691fca33f4cc4c93666a48f76cfb4c4f580 Mon Sep 17 00:00:00 2001
-From: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Date: Fri, 20 Jan 2012 12:19:43 +0000
-Subject: [PATCH 09/87] ASoC: wm_hubs: Enable line out VMID buffer for single
- ended line outputs
-
-commit 77231abe55433aa17eca712718745275853fa66d upstream.
-
-For optimal performance the single ended line outputs require that the
-line output VMID buffer be enabled.
-
-Signed-off-by: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- sound/soc/codecs/wm_hubs.c | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-diff --git a/sound/soc/codecs/wm_hubs.c b/sound/soc/codecs/wm_hubs.c
-index 48e61e9..8c26c6d 100644
---- a/sound/soc/codecs/wm_hubs.c
-+++ b/sound/soc/codecs/wm_hubs.c
-@@ -614,6 +614,8 @@ SND_SOC_DAPM_INPUT("IN2RP:VXRP"),
- SND_SOC_DAPM_MICBIAS("MICBIAS2", WM8993_POWER_MANAGEMENT_1, 5, 0),
- SND_SOC_DAPM_MICBIAS("MICBIAS1", WM8993_POWER_MANAGEMENT_1, 4, 0),
-
-+SND_SOC_DAPM_SUPPLY("LINEOUT_VMID_BUF", WM8993_ANTIPOP1, 7, 0, NULL, 0),
-+
- SND_SOC_DAPM_MIXER("IN1L PGA", WM8993_POWER_MANAGEMENT_2, 6, 0,
- in1l_pga, ARRAY_SIZE(in1l_pga)),
- SND_SOC_DAPM_MIXER("IN1R PGA", WM8993_POWER_MANAGEMENT_2, 4, 0,
-@@ -832,9 +834,11 @@ static const struct snd_soc_dapm_route lineout1_diff_routes[] = {
- };
-
- static const struct snd_soc_dapm_route lineout1_se_routes[] = {
-+ { "LINEOUT1N Mixer", NULL, "LINEOUT_VMID_BUF" },
- { "LINEOUT1N Mixer", "Left Output Switch", "Left Output PGA" },
- { "LINEOUT1N Mixer", "Right Output Switch", "Right Output PGA" },
-
-+ { "LINEOUT1P Mixer", NULL, "LINEOUT_VMID_BUF" },
- { "LINEOUT1P Mixer", "Left Output Switch", "Left Output PGA" },
-
- { "LINEOUT1N Driver", NULL, "LINEOUT1N Mixer" },
-@@ -851,9 +855,11 @@ static const struct snd_soc_dapm_route lineout2_diff_routes[] = {
- };
-
- static const struct snd_soc_dapm_route lineout2_se_routes[] = {
-+ { "LINEOUT2N Mixer", NULL, "LINEOUT_VMID_BUF" },
- { "LINEOUT2N Mixer", "Left Output Switch", "Left Output PGA" },
- { "LINEOUT2N Mixer", "Right Output Switch", "Right Output PGA" },
-
-+ { "LINEOUT2P Mixer", NULL, "LINEOUT_VMID_BUF" },
- { "LINEOUT2P Mixer", "Right Output Switch", "Right Output PGA" },
-
- { "LINEOUT2N Driver", NULL, "LINEOUT2N Mixer" },
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0010-ASoC-wm_hubs-fix-wrong-bits-for-LINEOUT2-N-P-mixer.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0010-ASoC-wm_hubs-fix-wrong-bits-for-LINEOUT2-N-P-mixer.patch
deleted file mode 100644
index 17e30a7..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0010-ASoC-wm_hubs-fix-wrong-bits-for-LINEOUT2-N-P-mixer.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From e2c53a1bd85306f4f0c92a00062df81ee4f6f0e2 Mon Sep 17 00:00:00 2001
-From: UK KIM <w0806.kim at samsung.com>
-Date: Sat, 28 Jan 2012 01:52:22 +0900
-Subject: [PATCH 10/87] ASoC: wm_hubs: fix wrong bits for LINEOUT2 N/P mixer
-
-commit 114395c61ad2eb5a7a5cd163fcadb2414e48245a upstream.
-
-Signed-off-by: UK KIM <w0806.kim at samsung.com>
-Signed-off-by: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- sound/soc/codecs/wm_hubs.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/sound/soc/codecs/wm_hubs.c b/sound/soc/codecs/wm_hubs.c
-index 8c26c6d..8547191 100644
---- a/sound/soc/codecs/wm_hubs.c
-+++ b/sound/soc/codecs/wm_hubs.c
-@@ -593,8 +593,8 @@ SOC_DAPM_SINGLE("Output Switch", WM8993_LINE_MIXER2, 0, 1, 0),
- };
-
- static const struct snd_kcontrol_new line2n_mix[] = {
--SOC_DAPM_SINGLE("Left Output Switch", WM8993_LINE_MIXER2, 6, 1, 0),
--SOC_DAPM_SINGLE("Right Output Switch", WM8993_LINE_MIXER2, 5, 1, 0),
-+SOC_DAPM_SINGLE("Left Output Switch", WM8993_LINE_MIXER2, 5, 1, 0),
-+SOC_DAPM_SINGLE("Right Output Switch", WM8993_LINE_MIXER2, 6, 1, 0),
- };
-
- static const struct snd_kcontrol_new line2p_mix[] = {
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0011-ARM-7306-1-vfp-flush-thread-hwstate-before-restoring.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0011-ARM-7306-1-vfp-flush-thread-hwstate-before-restoring.patch
deleted file mode 100644
index db64277..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0011-ARM-7306-1-vfp-flush-thread-hwstate-before-restoring.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From 68fcfb203bfa59a51cbe8b5828b0e61b3a75e751 Mon Sep 17 00:00:00 2001
-From: Will Deacon <will.deacon at arm.com>
-Date: Mon, 30 Jan 2012 20:21:42 +0100
-Subject: [PATCH 11/87] ARM: 7306/1: vfp: flush thread hwstate before
- restoring context from sigframe
-
-commit 2af276dfb1722e97b190bd2e646b079a2aa674db upstream.
-
-Following execution of a signal handler, we currently restore the VFP
-context from the ucontext in the signal frame. This involves copying
-from the user stack into the current thread's vfp_hard_struct and then
-flushing the new data out to the hardware registers.
-
-This is problematic when using a preemptible kernel because we could be
-context switched whilst updating the vfp_hard_struct. If the current
-thread has made use of VFP since the last context switch, the VFP
-notifier will copy from the hardware registers into the vfp_hard_struct,
-overwriting any data that had been partially copied by the signal code.
-
-Disabling preemption across copy_from_user calls is a terrible idea, so
-instead we move the VFP thread flush *before* we update the
-vfp_hard_struct. Since the flushing is performed lazily, this has the
-effect of disabling VFP and clearing the CPU's VFP state pointer,
-therefore preventing the thread from being updated with stale data on
-the next context switch.
-
-Tested-by: Peter Maydell <peter.maydell at linaro.org>
-Signed-off-by: Will Deacon <will.deacon at arm.com>
-Signed-off-by: Russell King <rmk+kernel at arm.linux.org.uk>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/arm/kernel/signal.c | 5 ++---
- 1 file changed, 2 insertions(+), 3 deletions(-)
-
-diff --git a/arch/arm/kernel/signal.c b/arch/arm/kernel/signal.c
-index 0340224..9e617bd 100644
---- a/arch/arm/kernel/signal.c
-+++ b/arch/arm/kernel/signal.c
-@@ -227,6 +227,8 @@ static int restore_vfp_context(struct vfp_sigframe __user *frame)
- if (magic != VFP_MAGIC || size != VFP_STORAGE_SIZE)
- return -EINVAL;
-
-+ vfp_flush_hwstate(thread);
-+
- /*
- * Copy the floating point registers. There can be unused
- * registers see asm/hwcap.h for details.
-@@ -251,9 +253,6 @@ static int restore_vfp_context(struct vfp_sigframe __user *frame)
- __get_user_error(h->fpinst, &frame->ufp_exc.fpinst, err);
- __get_user_error(h->fpinst2, &frame->ufp_exc.fpinst2, err);
-
-- if (!err)
-- vfp_flush_hwstate(thread);
--
- return err ? -EFAULT : 0;
- }
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0012-ARM-7307-1-vfp-fix-ptrace-regset-modification-race.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0012-ARM-7307-1-vfp-fix-ptrace-regset-modification-race.patch
deleted file mode 100644
index bba5115..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0012-ARM-7307-1-vfp-fix-ptrace-regset-modification-race.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-From 20fe4af03ac8d07995107e8686d62a3e9b2b267c Mon Sep 17 00:00:00 2001
-From: Dave Martin <dave.martin at linaro.org>
-Date: Mon, 30 Jan 2012 20:22:28 +0100
-Subject: [PATCH 12/87] ARM: 7307/1: vfp: fix ptrace regset modification race
-
-commit 247f4993a5974e6759606c4d380748eecfd273ff upstream.
-
-In a preemptible kernel, vfp_set() can be preempted, causing the
-hardware VFP context to be switched while the thread vfp state is
-being read and modified. This leads to a race condition which can
-cause the thread vfp state to become corrupted if lazy VFP context
-save occurs due to preemption in between the time thread->vfpstate
-is read and the time the modified state is written back.
-
-This may occur if preemption occurs during the execution of a
-ptrace() call which modifies the VFP register state of a thread.
-Such instances should be very rare in most realistic scenarios --
-none has been reported, so far as I am aware. Only uniprocessor
-systems should be affected, since VFP context save is not currently
-lazy in SMP kernels.
-
-The problem was introduced by my earlier patch migrating to use
-regsets to implement ptrace.
-
-This patch does a vfp_sync_hwstate() before reading
-thread->vfpstate, to make sure that the thread's VFP state is not
-live in the hardware registers while the registers are modified.
-
-Thanks to Will Deacon for spotting this.
-
-Signed-off-by: Dave Martin <dave.martin at linaro.org>
-Signed-off-by: Will Deacon <will.deacon at arm.com>
-Signed-off-by: Russell King <rmk+kernel at arm.linux.org.uk>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/arm/kernel/ptrace.c | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/arch/arm/kernel/ptrace.c b/arch/arm/kernel/ptrace.c
-index 483727a..8b17fb4 100644
---- a/arch/arm/kernel/ptrace.c
-+++ b/arch/arm/kernel/ptrace.c
-@@ -699,10 +699,13 @@ static int vfp_set(struct task_struct *target,
- {
- int ret;
- struct thread_info *thread = task_thread_info(target);
-- struct vfp_hard_struct new_vfp = thread->vfpstate.hard;
-+ struct vfp_hard_struct new_vfp;
- const size_t user_fpregs_offset = offsetof(struct user_vfp, fpregs);
- const size_t user_fpscr_offset = offsetof(struct user_vfp, fpscr);
-
-+ vfp_sync_hwstate(thread);
-+ new_vfp = thread->vfpstate.hard;
-+
- ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf,
- &new_vfp.fpregs,
- user_fpregs_offset,
-@@ -723,7 +726,6 @@ static int vfp_set(struct task_struct *target,
- if (ret)
- return ret;
-
-- vfp_sync_hwstate(thread);
- thread->vfpstate.hard = new_vfp;
- vfp_flush_hwstate(thread);
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0013-ARM-7308-1-vfp-flush-thread-hwstate-before-copying-p.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0013-ARM-7308-1-vfp-flush-thread-hwstate-before-copying-p.patch
deleted file mode 100644
index 580f2b6..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0013-ARM-7308-1-vfp-flush-thread-hwstate-before-copying-p.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 607dfed817aeab143bc5d9533fbcba4660216ce7 Mon Sep 17 00:00:00 2001
-From: Will Deacon <will.deacon at arm.com>
-Date: Mon, 30 Jan 2012 20:23:29 +0100
-Subject: [PATCH 13/87] ARM: 7308/1: vfp: flush thread hwstate before copying
- ptrace registers
-
-commit 8130b9d7b9d858aa04ce67805e8951e3cb6e9b2f upstream.
-
-If we are context switched whilst copying into a thread's
-vfp_hard_struct then the partial copy may be corrupted by the VFP
-context switching code (see "ARM: vfp: flush thread hwstate before
-restoring context from sigframe").
-
-This patch updates the ptrace VFP set code so that the thread state is
-flushed before the copy, therefore disabling VFP and preventing
-corruption from occurring.
-
-Signed-off-by: Will Deacon <will.deacon at arm.com>
-Signed-off-by: Russell King <rmk+kernel at arm.linux.org.uk>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/arm/kernel/ptrace.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/arch/arm/kernel/ptrace.c b/arch/arm/kernel/ptrace.c
-index 8b17fb4..90fa8b3 100644
---- a/arch/arm/kernel/ptrace.c
-+++ b/arch/arm/kernel/ptrace.c
-@@ -726,8 +726,8 @@ static int vfp_set(struct task_struct *target,
- if (ret)
- return ret;
-
-- thread->vfpstate.hard = new_vfp;
- vfp_flush_hwstate(thread);
-+ thread->vfpstate.hard = new_vfp;
-
- return 0;
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0014-ARM-OMAP2-GPMC-fix-device-size-setup.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0014-ARM-OMAP2-GPMC-fix-device-size-setup.patch
deleted file mode 100644
index d669b97..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0014-ARM-OMAP2-GPMC-fix-device-size-setup.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From d32f43943a473899c4ac53710148f066ebc0d227 Mon Sep 17 00:00:00 2001
-From: Yegor Yefremov <yegor_sub1 at visionsystems.de>
-Date: Mon, 23 Jan 2012 08:32:23 +0100
-Subject: [PATCH 14/87] ARM: OMAP2+: GPMC: fix device size setup
-
-commit 8ef5d844cc3a644ea6f7665932a4307e9fad01fa upstream.
-
-following statement can only change device size from 8-bit(0) to 16-bit(1),
-but not vice versa:
-
-regval |= GPMC_CONFIG1_DEVICESIZE(wval);
-
-so as this field has 1 reserved bit, that could be used in future,
-just clear both bits and then OR with the desired value
-
-Signed-off-by: Yegor Yefremov <yegorslists at googlemail.com>
-Signed-off-by: Tony Lindgren <tony at atomide.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/arm/mach-omap2/gpmc.c | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-diff --git a/arch/arm/mach-omap2/gpmc.c b/arch/arm/mach-omap2/gpmc.c
-index a78f79d..9876c63 100644
---- a/arch/arm/mach-omap2/gpmc.c
-+++ b/arch/arm/mach-omap2/gpmc.c
-@@ -533,7 +533,13 @@ int gpmc_cs_configure(int cs, int cmd, int wval)
-
- case GPMC_CONFIG_DEV_SIZE:
- regval = gpmc_cs_read_reg(cs, GPMC_CS_CONFIG1);
-+
-+ /* clear 2 target bits */
-+ regval &= ~GPMC_CONFIG1_DEVICESIZE(3);
-+
-+ /* set the proper value */
- regval |= GPMC_CONFIG1_DEVICESIZE(wval);
-+
- gpmc_cs_write_reg(cs, GPMC_CS_CONFIG1, regval);
- break;
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0015-drivers-tty-vt-vt_ioctl.c-fix-KDFONTOP-32bit-compati.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0015-drivers-tty-vt-vt_ioctl.c-fix-KDFONTOP-32bit-compati.patch
deleted file mode 100644
index cd5f3c0..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0015-drivers-tty-vt-vt_ioctl.c-fix-KDFONTOP-32bit-compati.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From 5a972bf1cceb0d20c374e37656d26f1f304a38e6 Mon Sep 17 00:00:00 2001
-From: Samuel Thibault <samuel.thibault at ens-lyon.org>
-Date: Fri, 3 Feb 2012 15:37:15 -0800
-Subject: [PATCH 15/87] drivers/tty/vt/vt_ioctl.c: fix KDFONTOP 32bit
- compatibility layer
-
-commit cbcb8346054073d000ecac324763372d6abd44ac upstream.
-
-KDFONTOP(GET) currently fails with EIO when being run in a 32bit userland
-with a 64bit kernel if the font width is not 8.
-
-This is because of the setting of the KD_FONT_FLAG_OLD flag, which makes
-con_font_get return EIO in such case.
-
-This flag should *not* be set for KDFONTOP, since it's actually the whole
-point of this flag (see comment in con_font_set for instance).
-
-Signed-off-by: Samuel Thibault <samuel.thibault at ens-lyon.org>
-Reviewed-by: Arnd Bergmann <arnd at arndb.de>
-Cc: Arthur Taylor <art at ified.ca>
-Cc: Jiri Slaby <jslaby at suse.cz>
-Cc: Jiri Olsa <jolsa at redhat.com>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/tty/vt/vt_ioctl.c | 1 -
- 1 file changed, 1 deletion(-)
-
-diff --git a/drivers/tty/vt/vt_ioctl.c b/drivers/tty/vt/vt_ioctl.c
-index 5e096f4..65447c5 100644
---- a/drivers/tty/vt/vt_ioctl.c
-+++ b/drivers/tty/vt/vt_ioctl.c
-@@ -1463,7 +1463,6 @@ compat_kdfontop_ioctl(struct compat_console_font_op __user *fontop,
- if (!perm && op->op != KD_FONT_OP_GET)
- return -EPERM;
- op->data = compat_ptr(((struct compat_console_font_op *)op)->data);
-- op->flags |= KD_FONT_FLAG_OLD;
- i = con_font_op(vc, op);
- if (i)
- return i;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0016-proc-mem_release-should-check-mm-NULL.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0016-proc-mem_release-should-check-mm-NULL.patch
deleted file mode 100644
index 7ee6467..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0016-proc-mem_release-should-check-mm-NULL.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From d3e6dd07d5d36411c631bfeca9b736aff6632f6a Mon Sep 17 00:00:00 2001
-From: Oleg Nesterov <oleg at redhat.com>
-Date: Tue, 31 Jan 2012 17:14:38 +0100
-Subject: [PATCH 16/87] proc: mem_release() should check mm != NULL
-
-commit 71879d3cb3dd8f2dfdefb252775c1b3ea04a3dd4 upstream.
-
-mem_release() can hit mm == NULL, add the necessary check.
-
-Signed-off-by: Oleg Nesterov <oleg at redhat.com>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/proc/base.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/fs/proc/base.c b/fs/proc/base.c
-index 1fc1dca..a43c70a 100644
---- a/fs/proc/base.c
-+++ b/fs/proc/base.c
-@@ -886,8 +886,8 @@ loff_t mem_lseek(struct file *file, loff_t offset, int orig)
- static int mem_release(struct inode *inode, struct file *file)
- {
- struct mm_struct *mm = file->private_data;
--
-- mmput(mm);
-+ if (mm)
-+ mmput(mm);
- return 0;
- }
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0017-proc-unify-mem_read-and-mem_write.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0017-proc-unify-mem_read-and-mem_write.patch
deleted file mode 100644
index 6ae11fc..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0017-proc-unify-mem_read-and-mem_write.patch
+++ /dev/null
@@ -1,148 +0,0 @@
-From 19ec05d824043ce28abee73023cfa8c1938d7094 Mon Sep 17 00:00:00 2001
-From: Oleg Nesterov <oleg at redhat.com>
-Date: Tue, 31 Jan 2012 17:14:54 +0100
-Subject: [PATCH 17/87] proc: unify mem_read() and mem_write()
-
-commit 572d34b946bae070debd42db1143034d9687e13f upstream.
-
-No functional changes, cleanup and preparation.
-
-mem_read() and mem_write() are very similar. Move this code into the
-new common helper, mem_rw(), which takes the additional "int write"
-argument.
-
-Signed-off-by: Oleg Nesterov <oleg at redhat.com>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/proc/base.c | 90 ++++++++++++++++++++------------------------------------
- 1 file changed, 32 insertions(+), 58 deletions(-)
-
-diff --git a/fs/proc/base.c b/fs/proc/base.c
-index a43c70a..0d3a4d1 100644
---- a/fs/proc/base.c
-+++ b/fs/proc/base.c
-@@ -782,57 +782,13 @@ static int mem_open(struct inode* inode, struct file* file)
- return 0;
- }
-
--static ssize_t mem_read(struct file * file, char __user * buf,
-- size_t count, loff_t *ppos)
-+static ssize_t mem_rw(struct file *file, char __user *buf,
-+ size_t count, loff_t *ppos, int write)
- {
-- int ret;
-- char *page;
-- unsigned long src = *ppos;
- struct mm_struct *mm = file->private_data;
--
-- if (!mm)
-- return 0;
--
-- page = (char *)__get_free_page(GFP_TEMPORARY);
-- if (!page)
-- return -ENOMEM;
--
-- ret = 0;
--
-- while (count > 0) {
-- int this_len, retval;
--
-- this_len = (count > PAGE_SIZE) ? PAGE_SIZE : count;
-- retval = access_remote_vm(mm, src, page, this_len, 0);
-- if (!retval) {
-- if (!ret)
-- ret = -EIO;
-- break;
-- }
--
-- if (copy_to_user(buf, page, retval)) {
-- ret = -EFAULT;
-- break;
-- }
--
-- ret += retval;
-- src += retval;
-- buf += retval;
-- count -= retval;
-- }
-- *ppos = src;
--
-- free_page((unsigned long) page);
-- return ret;
--}
--
--static ssize_t mem_write(struct file * file, const char __user *buf,
-- size_t count, loff_t *ppos)
--{
-- int copied;
-+ unsigned long addr = *ppos;
-+ ssize_t copied;
- char *page;
-- unsigned long dst = *ppos;
-- struct mm_struct *mm = file->private_data;
-
- if (!mm)
- return 0;
-@@ -843,30 +799,48 @@ static ssize_t mem_write(struct file * file, const char __user *buf,
-
- copied = 0;
- while (count > 0) {
-- int this_len, retval;
-+ int this_len = min_t(int, count, PAGE_SIZE);
-
-- this_len = (count > PAGE_SIZE) ? PAGE_SIZE : count;
-- if (copy_from_user(page, buf, this_len)) {
-+ if (write && copy_from_user(page, buf, this_len)) {
- copied = -EFAULT;
- break;
- }
-- retval = access_remote_vm(mm, dst, page, this_len, 1);
-- if (!retval) {
-+
-+ this_len = access_remote_vm(mm, addr, page, this_len, write);
-+ if (!this_len) {
- if (!copied)
- copied = -EIO;
- break;
- }
-- copied += retval;
-- buf += retval;
-- dst += retval;
-- count -= retval;
-+
-+ if (!write && copy_to_user(buf, page, this_len)) {
-+ copied = -EFAULT;
-+ break;
-+ }
-+
-+ buf += this_len;
-+ addr += this_len;
-+ copied += this_len;
-+ count -= this_len;
- }
-- *ppos = dst;
-+ *ppos = addr;
-
- free_page((unsigned long) page);
- return copied;
- }
-
-+static ssize_t mem_read(struct file *file, char __user *buf,
-+ size_t count, loff_t *ppos)
-+{
-+ return mem_rw(file, buf, count, ppos, 0);
-+}
-+
-+static ssize_t mem_write(struct file *file, const char __user *buf,
-+ size_t count, loff_t *ppos)
-+{
-+ return mem_rw(file, (char __user*)buf, count, ppos, 1);
-+}
-+
- loff_t mem_lseek(struct file *file, loff_t offset, int orig)
- {
- switch (orig) {
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0018-proc-make-sure-mem_open-doesn-t-pin-the-target-s-mem.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0018-proc-make-sure-mem_open-doesn-t-pin-the-target-s-mem.patch
deleted file mode 100644
index 0da05f8..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0018-proc-make-sure-mem_open-doesn-t-pin-the-target-s-mem.patch
+++ /dev/null
@@ -1,79 +0,0 @@
-From ccd98cceae110edd9447fc878523f2a2ac427978 Mon Sep 17 00:00:00 2001
-From: Oleg Nesterov <oleg at redhat.com>
-Date: Tue, 31 Jan 2012 17:15:11 +0100
-Subject: [PATCH 18/87] proc: make sure mem_open() doesn't pin the target's
- memory
-
-commit 6d08f2c7139790c268820a2e590795cb8333181a upstream.
-
-Once /proc/pid/mem is opened, the memory can't be released until
-mem_release() even if its owner exits.
-
-Change mem_open() to do atomic_inc(mm_count) + mmput(), this only
-pins mm_struct. Change mem_rw() to do atomic_inc_not_zero(mm_count)
-before access_remote_vm(), this verifies that this mm is still alive.
-
-I am not sure what should mem_rw() return if atomic_inc_not_zero()
-fails. With this patch it returns zero to match the "mm == NULL" case,
-may be it should return -EINVAL like it did before e268337d.
-
-Perhaps it makes sense to add the additional fatal_signal_pending()
-check into the main loop, to ensure we do not hold this memory if
-the target task was oom-killed.
-
-Signed-off-by: Oleg Nesterov <oleg at redhat.com>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/proc/base.c | 14 +++++++++++++-
- 1 file changed, 13 insertions(+), 1 deletion(-)
-
-diff --git a/fs/proc/base.c b/fs/proc/base.c
-index 0d3a4d1..1ace83d 100644
---- a/fs/proc/base.c
-+++ b/fs/proc/base.c
-@@ -775,6 +775,13 @@ static int mem_open(struct inode* inode, struct file* file)
- if (IS_ERR(mm))
- return PTR_ERR(mm);
-
-+ if (mm) {
-+ /* ensure this mm_struct can't be freed */
-+ atomic_inc(&mm->mm_count);
-+ /* but do not pin its memory */
-+ mmput(mm);
-+ }
-+
- /* OK to pass negative loff_t, we can catch out-of-range */
- file->f_mode |= FMODE_UNSIGNED_OFFSET;
- file->private_data = mm;
-@@ -798,6 +805,9 @@ static ssize_t mem_rw(struct file *file, char __user *buf,
- return -ENOMEM;
-
- copied = 0;
-+ if (!atomic_inc_not_zero(&mm->mm_users))
-+ goto free;
-+
- while (count > 0) {
- int this_len = min_t(int, count, PAGE_SIZE);
-
-@@ -825,6 +835,8 @@ static ssize_t mem_rw(struct file *file, char __user *buf,
- }
- *ppos = addr;
-
-+ mmput(mm);
-+free:
- free_page((unsigned long) page);
- return copied;
- }
-@@ -861,7 +873,7 @@ static int mem_release(struct inode *inode, struct file *file)
- {
- struct mm_struct *mm = file->private_data;
- if (mm)
-- mmput(mm);
-+ mmdrop(mm);
- return 0;
- }
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0019-firewire-ohci-add-reset-packet-quirk-for-SB-Audigy.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0019-firewire-ohci-add-reset-packet-quirk-for-SB-Audigy.patch
deleted file mode 100644
index d4a57cb..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0019-firewire-ohci-add-reset-packet-quirk-for-SB-Audigy.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 59aff516b4bc260d4663af0d664eb08b54559e1d Mon Sep 17 00:00:00 2001
-From: Clemens Ladisch <clemens at ladisch.de>
-Date: Thu, 26 Jan 2012 22:05:58 +0100
-Subject: [PATCH 19/87] firewire: ohci: add reset packet quirk for SB Audigy
-
-commit d1bb399ad03c11e792f6dea198d3b1e23061f094 upstream.
-
-The Audigy's SB1394 controller is actually from Texas Instruments
-and has the same bus reset packet generation bug, so it needs the
-same quirk entry.
-
-Signed-off-by: Clemens Ladisch <clemens at ladisch.de>
-Signed-off-by: Stefan Richter <stefanr at s5r6.in-berlin.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/firewire/ohci.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/drivers/firewire/ohci.c b/drivers/firewire/ohci.c
-index 6628fea..21250ec 100644
---- a/drivers/firewire/ohci.c
-+++ b/drivers/firewire/ohci.c
-@@ -263,6 +263,7 @@ static inline struct fw_ohci *fw_ohci(struct fw_card *card)
- static char ohci_driver_name[] = KBUILD_MODNAME;
-
- #define PCI_DEVICE_ID_AGERE_FW643 0x5901
-+#define PCI_DEVICE_ID_CREATIVE_SB1394 0x4001
- #define PCI_DEVICE_ID_JMICRON_JMB38X_FW 0x2380
- #define PCI_DEVICE_ID_TI_TSB12LV22 0x8009
- #define PCI_DEVICE_ID_TI_TSB12LV26 0x8020
-@@ -289,6 +290,9 @@ static const struct {
- {PCI_VENDOR_ID_ATT, PCI_DEVICE_ID_AGERE_FW643, 6,
- QUIRK_NO_MSI},
-
-+ {PCI_VENDOR_ID_CREATIVE, PCI_DEVICE_ID_CREATIVE_SB1394, PCI_ANY_ID,
-+ QUIRK_RESET_PACKET},
-+
- {PCI_VENDOR_ID_JMICRON, PCI_DEVICE_ID_JMICRON_JMB38X_FW, PCI_ANY_ID,
- QUIRK_NO_MSI},
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0020-firewire-ohci-disable-MSI-on-Ricoh-controllers.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0020-firewire-ohci-disable-MSI-on-Ricoh-controllers.patch
deleted file mode 100644
index 8e1ee16..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0020-firewire-ohci-disable-MSI-on-Ricoh-controllers.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 0e565652857c8f01d2fe7061ec7bb82cb6ee3460 Mon Sep 17 00:00:00 2001
-From: Stefan Richter <stefanr at s5r6.in-berlin.de>
-Date: Sun, 29 Jan 2012 12:41:15 +0100
-Subject: [PATCH 20/87] firewire: ohci: disable MSI on Ricoh controllers
-
-commit 320cfa6ce0b3dc794fedfa4bae54c0f65077234d upstream.
-
-The PCIe device
-
- FireWire (IEEE 1394) [0c00]: Ricoh Co Ltd FireWire Host Controller
- [1180:e832] (prog-if 10 [OHCI])
-
-is unable to access attached FireWire devices when MSI is enabled but
-works if MSI is disabled.
-http://www.mail-archive.com/alsa-user@lists.sourceforge.net/msg28251.html
-
-Hence add the "disable MSI" quirks flag for this device, or in fact for
-safety and simplicity for all current (R5U230, R5U231, R5U240) and
-future Ricoh PCIe 1394 controllers.
-
-Reported-by: Stefan Thomas <kontrapunktstefan at googlemail.com>
-Signed-off-by: Stefan Richter <stefanr at s5r6.in-berlin.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/firewire/ohci.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/firewire/ohci.c b/drivers/firewire/ohci.c
-index 21250ec..7f5f0da 100644
---- a/drivers/firewire/ohci.c
-+++ b/drivers/firewire/ohci.c
-@@ -303,7 +303,7 @@ static const struct {
- QUIRK_NO_MSI},
-
- {PCI_VENDOR_ID_RICOH, PCI_ANY_ID, PCI_ANY_ID,
-- QUIRK_CYCLE_TIMER},
-+ QUIRK_CYCLE_TIMER | QUIRK_NO_MSI},
-
- {PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_TSB12LV22, PCI_ANY_ID,
- QUIRK_CYCLE_TIMER | QUIRK_RESET_PACKET | QUIRK_NO_1394A},
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0021-IB-mlx4-pass-SMP-vendor-specific-attribute-MADs-to-f.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0021-IB-mlx4-pass-SMP-vendor-specific-attribute-MADs-to-f.patch
deleted file mode 100644
index bf61305..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0021-IB-mlx4-pass-SMP-vendor-specific-attribute-MADs-to-f.patch
+++ /dev/null
@@ -1,90 +0,0 @@
-From f915ece79ba2a9b640ae7f728cef3b54c31ffd18 Mon Sep 17 00:00:00 2001
-From: Jack Morgenstein <jackm at mellanox.com>
-Date: Thu, 26 Jan 2012 16:41:33 +0200
-Subject: [PATCH 21/87] IB/mlx4: pass SMP vendor-specific attribute MADs to
- firmware
-
-commit a6f7feae6d19e84253918d88b04153af09d3a243 upstream.
-
-In the current code, vendor-specific MADs (e.g with the FDR-10
-attribute) are silently dropped by the driver, resulting in timeouts
-at the sending side and inability to query/configure the relevant
-feature. However, the ConnectX firmware is able to handle such MADs.
-For unsupported attributes, the firmware returns a GET_RESPONSE MAD
-containing an error status.
-
-For example, for a FDR-10 node with LID 11:
-
- # ibstat mlx4_0 1
-
- CA: 'mlx4_0'
- Port 1:
- State: Active
- Physical state: LinkUp
- Rate: 40 (FDR10)
- Base lid: 11
- LMC: 0
- SM lid: 24
- Capability mask: 0x02514868
- Port GUID: 0x0002c903002e65d1
- Link layer: InfiniBand
-
-Extended Port Query (EPI) vendor mad timeouts before the patch:
-
- # smpquery MEPI 11 -d
-
- ibwarn: [4196] smp_query_via: attr 0xff90 mod 0x0 route Lid 11
- ibwarn: [4196] _do_madrpc: retry 1 (timeout 1000 ms)
- ibwarn: [4196] _do_madrpc: retry 2 (timeout 1000 ms)
- ibwarn: [4196] _do_madrpc: timeout after 3 retries, 3000 ms
- ibwarn: [4196] mad_rpc: _do_madrpc failed; dport (Lid 11)
- smpquery: iberror: [pid 4196] main: failed: operation EPI: ext port info query failed
-
-EPI query works OK with the patch:
-
- # smpquery MEPI 11 -d
-
- ibwarn: [6548] smp_query_via: attr 0xff90 mod 0x0 route Lid 11
- ibwarn: [6548] mad_rpc: data offs 64 sz 64
- mad data
- 0000 0000 0000 0001 0000 0001 0000 0001
- 0000 0000 0000 0000 0000 0000 0000 0000
- 0000 0000 0000 0000 0000 0000 0000 0000
- 0000 0000 0000 0000 0000 0000 0000 0000
- # Ext Port info: Lid 11 port 0
- StateChangeEnable:...............0x00
- LinkSpeedSupported:..............0x01
- LinkSpeedEnabled:................0x01
- LinkSpeedActive:.................0x01
-
-Signed-off-by: Jack Morgenstein <jackm at mellanox.com>
-Signed-off-by: Or Gerlitz <ogerlitz at mellanox.com>
-Acked-by: Ira Weiny <weiny2 at llnl.gov>
-Signed-off-by: Roland Dreier <roland at purestorage.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/infiniband/hw/mlx4/mad.c | 7 ++-----
- 1 file changed, 2 insertions(+), 5 deletions(-)
-
-diff --git a/drivers/infiniband/hw/mlx4/mad.c b/drivers/infiniband/hw/mlx4/mad.c
-index f36da99..77702c0 100644
---- a/drivers/infiniband/hw/mlx4/mad.c
-+++ b/drivers/infiniband/hw/mlx4/mad.c
-@@ -256,12 +256,9 @@ static int ib_process_mad(struct ib_device *ibdev, int mad_flags, u8 port_num,
- return IB_MAD_RESULT_SUCCESS;
-
- /*
-- * Don't process SMInfo queries or vendor-specific
-- * MADs -- the SMA can't handle them.
-+ * Don't process SMInfo queries -- the SMA can't handle them.
- */
-- if (in_mad->mad_hdr.attr_id == IB_SMP_ATTR_SM_INFO ||
-- ((in_mad->mad_hdr.attr_id & IB_SMP_ATTR_VENDOR_MASK) ==
-- IB_SMP_ATTR_VENDOR_MASK))
-+ if (in_mad->mad_hdr.attr_id == IB_SMP_ATTR_SM_INFO)
- return IB_MAD_RESULT_SUCCESS;
- } else if (in_mad->mad_hdr.mgmt_class == IB_MGMT_CLASS_PERF_MGMT ||
- in_mad->mad_hdr.mgmt_class == MLX4_IB_VENDOR_CLASS1 ||
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0022-RDMA-core-Fix-kernel-panic-by-always-initializing-qp.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0022-RDMA-core-Fix-kernel-panic-by-always-initializing-qp.patch
deleted file mode 100644
index 50a5546..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0022-RDMA-core-Fix-kernel-panic-by-always-initializing-qp.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-From 884b3f02d181a5f61f684fc7ac4af55fd4730575 Mon Sep 17 00:00:00 2001
-From: Bernd Schubert <bernd.schubert at itwm.fraunhofer.de>
-Date: Fri, 20 Jan 2012 18:43:54 +0000
-Subject: [PATCH 22/87] RDMA/core: Fix kernel panic by always initializing
- qp->usecnt
-
-commit e47e321a35c741ee41b67976f8c6a3a7a42bc5c0 upstream.
-
-We have just been investigating kernel panics related to
-cq->ibcq.event_handler() completion calls. The problem is that
-ib_destroy_qp() fails with -EBUSY.
-
-Further investigation revealed qp->usecnt is not initialized. This
-counter was introduced in linux-3.2 by commit 0e0ec7e0638e
-("RDMA/core: Export ib_open_qp() to share XRC TGT QPs") but it only
-gets initialized for IB_QPT_XRC_TGT, but it is checked in
-ib_destroy_qp() for any QP type.
-
-Fix this by initializing qp->usecnt for every QP we create.
-
-Signed-off-by: Bernd Schubert <bernd.schubert at itwm.fraunhofer.de>
-Signed-off-by: Sven Breuner <sven.breuner at itwm.fraunhofer.de>
-
-[ Initialize qp->usecnt in uverbs too. - Sean ]
-
-Signed-off-by: Sean Hefty <sean.hefty at intel.com>
-Signed-off-by: Roland Dreier <roland at purestorage.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/infiniband/core/uverbs_cmd.c | 1 +
- drivers/infiniband/core/verbs.c | 2 +-
- 2 files changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/infiniband/core/uverbs_cmd.c b/drivers/infiniband/core/uverbs_cmd.c
-index e3db8ef..a8445b8 100644
---- a/drivers/infiniband/core/uverbs_cmd.c
-+++ b/drivers/infiniband/core/uverbs_cmd.c
-@@ -1485,6 +1485,7 @@ ssize_t ib_uverbs_create_qp(struct ib_uverbs_file *file,
- qp->event_handler = attr.event_handler;
- qp->qp_context = attr.qp_context;
- qp->qp_type = attr.qp_type;
-+ atomic_set(&qp->usecnt, 0);
- atomic_inc(&pd->usecnt);
- atomic_inc(&attr.send_cq->usecnt);
- if (attr.recv_cq)
-diff --git a/drivers/infiniband/core/verbs.c b/drivers/infiniband/core/verbs.c
-index 602b1bd..575b780 100644
---- a/drivers/infiniband/core/verbs.c
-+++ b/drivers/infiniband/core/verbs.c
-@@ -421,6 +421,7 @@ struct ib_qp *ib_create_qp(struct ib_pd *pd,
- qp->uobject = NULL;
- qp->qp_type = qp_init_attr->qp_type;
-
-+ atomic_set(&qp->usecnt, 0);
- if (qp_init_attr->qp_type == IB_QPT_XRC_TGT) {
- qp->event_handler = __ib_shared_qp_event_handler;
- qp->qp_context = qp;
-@@ -430,7 +431,6 @@ struct ib_qp *ib_create_qp(struct ib_pd *pd,
- qp->xrcd = qp_init_attr->xrcd;
- atomic_inc(&qp_init_attr->xrcd->usecnt);
- INIT_LIST_HEAD(&qp->open_list);
-- atomic_set(&qp->usecnt, 0);
-
- real_qp = qp;
- qp = __ib_open_qp(real_qp, qp_init_attr->event_handler,
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0023-kprobes-fix-a-memory-leak-in-function-pre_handler_kr.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0023-kprobes-fix-a-memory-leak-in-function-pre_handler_kr.patch
deleted file mode 100644
index 7ce975f..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0023-kprobes-fix-a-memory-leak-in-function-pre_handler_kr.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From 1a3341ff80be39daad523f56898e5dbba8a89452 Mon Sep 17 00:00:00 2001
-From: Jiang Liu <liuj97 at gmail.com>
-Date: Fri, 3 Feb 2012 15:37:16 -0800
-Subject: [PATCH 23/87] kprobes: fix a memory leak in function
- pre_handler_kretprobe()
-
-commit 55ca6140e9bb307efc97a9301a4f501de02a6fd6 upstream.
-
-In function pre_handler_kretprobe(), the allocated kretprobe_instance
-object will get leaked if the entry_handler callback returns non-zero.
-This may cause all the preallocated kretprobe_instance objects exhausted.
-
-This issue can be reproduced by changing
-samples/kprobes/kretprobe_example.c to probe "mutex_unlock". And the fix
-is straightforward: just put the allocated kretprobe_instance object back
-onto the free_instances list.
-
-[akpm at linux-foundation.org: use raw_spin_lock/unlock]
-Signed-off-by: Jiang Liu <jiang.liu at huawei.com>
-Acked-by: Jim Keniston <jkenisto at us.ibm.com>
-Acked-by: Ananth N Mavinakayanahalli <ananth at in.ibm.com>
-Cc: Masami Hiramatsu <masami.hiramatsu.pt at hitachi.com>
-Cc: Anil S Keshavamurthy <anil.s.keshavamurthy at intel.com>
-Cc: "David S. Miller" <davem at davemloft.net>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- kernel/kprobes.c | 6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
-
-diff --git a/kernel/kprobes.c b/kernel/kprobes.c
-index 52fd049..faa39d1 100644
---- a/kernel/kprobes.c
-+++ b/kernel/kprobes.c
-@@ -1673,8 +1673,12 @@ static int __kprobes pre_handler_kretprobe(struct kprobe *p,
- ri->rp = rp;
- ri->task = current;
-
-- if (rp->entry_handler && rp->entry_handler(ri, regs))
-+ if (rp->entry_handler && rp->entry_handler(ri, regs)) {
-+ raw_spin_lock_irqsave(&rp->lock, flags);
-+ hlist_add_head(&ri->hlist, &rp->free_instances);
-+ raw_spin_unlock_irqrestore(&rp->lock, flags);
- return 0;
-+ }
-
- arch_prepare_kretprobe(ri, regs);
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0024-mtd-gpmi-nand-bugfix-reset-the-BCH-module-when-it-is.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0024-mtd-gpmi-nand-bugfix-reset-the-BCH-module-when-it-is.patch
deleted file mode 100644
index 99b074b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0024-mtd-gpmi-nand-bugfix-reset-the-BCH-module-when-it-is.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-From 009d4c47bfb955c34de51bba777578451cd3aeb5 Mon Sep 17 00:00:00 2001
-From: Huang Shijie <b32955 at freescale.com>
-Date: Wed, 4 Jan 2012 11:18:46 +0800
-Subject: [PATCH 24/87] mtd: gpmi-nand bugfix: reset the BCH module when it is
- not MX23
-
-commit 9398d1ce09b9009996f7d2468e1d3c785fa6feda upstream.
-
-In MX28, if we do not reset the BCH module. The BCH module may
-becomes unstable when the board reboots for several thousands times.
-This bug has been catched in customer's production.
-
-The patch adds some comments (some from Wolfram Sang), and fixes it now.
-
-Also change gpmi_reset_block() to static.
-
-Signed-off-by: Huang Shijie <b32955 at freescale.com>
-Acked-by: Marek Vasut <marek.vasut at gmail.com>
-Signed-off-by: Artem Bityutskiy <artem.bityutskiy at linux.intel.com>
-Signed-off-by: David Woodhouse <David.Woodhouse at intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/mtd/nand/gpmi-nand/gpmi-lib.c | 18 ++++++++++++++----
- 1 file changed, 14 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/mtd/nand/gpmi-nand/gpmi-lib.c b/drivers/mtd/nand/gpmi-nand/gpmi-lib.c
-index de4db76..bb2fe60 100644
---- a/drivers/mtd/nand/gpmi-nand/gpmi-lib.c
-+++ b/drivers/mtd/nand/gpmi-nand/gpmi-lib.c
-@@ -69,17 +69,19 @@ static int clear_poll_bit(void __iomem *addr, u32 mask)
- * [1] enable the module.
- * [2] reset the module.
- *
-- * In most of the cases, it's ok. But there is a hardware bug in the BCH block.
-+ * In most of the cases, it's ok.
-+ * But in MX23, there is a hardware bug in the BCH block (see erratum #2847).
- * If you try to soft reset the BCH block, it becomes unusable until
- * the next hard reset. This case occurs in the NAND boot mode. When the board
- * boots by NAND, the ROM of the chip will initialize the BCH blocks itself.
- * So If the driver tries to reset the BCH again, the BCH will not work anymore.
-- * You will see a DMA timeout in this case.
-+ * You will see a DMA timeout in this case. The bug has been fixed
-+ * in the following chips, such as MX28.
- *
- * To avoid this bug, just add a new parameter `just_enable` for
- * the mxs_reset_block(), and rewrite it here.
- */
--int gpmi_reset_block(void __iomem *reset_addr, bool just_enable)
-+static int gpmi_reset_block(void __iomem *reset_addr, bool just_enable)
- {
- int ret;
- int timeout = 0x400;
-@@ -206,7 +208,15 @@ int bch_set_geometry(struct gpmi_nand_data *this)
- if (ret)
- goto err_out;
-
-- ret = gpmi_reset_block(r->bch_regs, true);
-+ /*
-+ * Due to erratum #2847 of the MX23, the BCH cannot be soft reset on this
-+ * chip, otherwise it will lock up. So we skip resetting BCH on the MX23.
-+ * On the other hand, the MX28 needs the reset, because one case has been
-+ * seen where the BCH produced ECC errors constantly after 10000
-+ * consecutive reboots. The latter case has not been seen on the MX23 yet,
-+ * still we don't know if it could happen there as well.
-+ */
-+ ret = gpmi_reset_block(r->bch_regs, GPMI_IS_MX23(this));
- if (ret)
- goto err_out;
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0025-Revert-mtd-atmel_nand-optimize-read-write-buffer-fun.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0025-Revert-mtd-atmel_nand-optimize-read-write-buffer-fun.patch
deleted file mode 100644
index a354bc4..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0025-Revert-mtd-atmel_nand-optimize-read-write-buffer-fun.patch
+++ /dev/null
@@ -1,113 +0,0 @@
-From 583f7f13a6059282e43a820ef5d36c28bc7d4e32 Mon Sep 17 00:00:00 2001
-From: Artem Bityutskiy <artem.bityutskiy at linux.intel.com>
-Date: Thu, 2 Feb 2012 13:54:25 +0200
-Subject: [PATCH 25/87] Revert "mtd: atmel_nand: optimize read/write buffer
- functions"
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit 500823195d0c9eec2a4637484f30cc93ec633d4a upstream.
-
-This reverts commit fb5427508abbd635e877fabdf55795488119c2d6.
-
-The reason is that it breaks 16 bits NAND flash as it was reported by
-Nikolaus Voss and confirmed by Eric Bénard.
-
-Nicolas Ferre <nicolas.ferre at atmel.com> alco confirmed:
-"After double checking with designers, I must admit that I misunderstood
-the way of optimizing accesses to SMC. 16 bit nand is not so common
-those days..."
-
-Reported-by: Nikolaus Voss <n.voss at weinmann.de>
-Acked-by: Nicolas Ferre <nicolas.ferre at atmel.com>
-Signed-off-by: Artem Bityutskiy <artem.bityutskiy at linux.intel.com>
-Signed-off-by: David Woodhouse <David.Woodhouse at intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/mtd/nand/atmel_nand.c | 45 +++++++++++++++++++++++++++++++++++++----
- 1 file changed, 41 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/mtd/nand/atmel_nand.c b/drivers/mtd/nand/atmel_nand.c
-index 23e5d77..ee6e26e 100644
---- a/drivers/mtd/nand/atmel_nand.c
-+++ b/drivers/mtd/nand/atmel_nand.c
-@@ -161,6 +161,37 @@ static int atmel_nand_device_ready(struct mtd_info *mtd)
- !!host->board->rdy_pin_active_low;
- }
-
-+/*
-+ * Minimal-overhead PIO for data access.
-+ */
-+static void atmel_read_buf8(struct mtd_info *mtd, u8 *buf, int len)
-+{
-+ struct nand_chip *nand_chip = mtd->priv;
-+
-+ __raw_readsb(nand_chip->IO_ADDR_R, buf, len);
-+}
-+
-+static void atmel_read_buf16(struct mtd_info *mtd, u8 *buf, int len)
-+{
-+ struct nand_chip *nand_chip = mtd->priv;
-+
-+ __raw_readsw(nand_chip->IO_ADDR_R, buf, len / 2);
-+}
-+
-+static void atmel_write_buf8(struct mtd_info *mtd, const u8 *buf, int len)
-+{
-+ struct nand_chip *nand_chip = mtd->priv;
-+
-+ __raw_writesb(nand_chip->IO_ADDR_W, buf, len);
-+}
-+
-+static void atmel_write_buf16(struct mtd_info *mtd, const u8 *buf, int len)
-+{
-+ struct nand_chip *nand_chip = mtd->priv;
-+
-+ __raw_writesw(nand_chip->IO_ADDR_W, buf, len / 2);
-+}
-+
- static void dma_complete_func(void *completion)
- {
- complete(completion);
-@@ -235,27 +266,33 @@ err_buf:
- static void atmel_read_buf(struct mtd_info *mtd, u8 *buf, int len)
- {
- struct nand_chip *chip = mtd->priv;
-+ struct atmel_nand_host *host = chip->priv;
-
- if (use_dma && len > mtd->oobsize)
- /* only use DMA for bigger than oob size: better performances */
- if (atmel_nand_dma_op(mtd, buf, len, 1) == 0)
- return;
-
-- /* if no DMA operation possible, use PIO */
-- memcpy_fromio(buf, chip->IO_ADDR_R, len);
-+ if (host->board->bus_width_16)
-+ atmel_read_buf16(mtd, buf, len);
-+ else
-+ atmel_read_buf8(mtd, buf, len);
- }
-
- static void atmel_write_buf(struct mtd_info *mtd, const u8 *buf, int len)
- {
- struct nand_chip *chip = mtd->priv;
-+ struct atmel_nand_host *host = chip->priv;
-
- if (use_dma && len > mtd->oobsize)
- /* only use DMA for bigger than oob size: better performances */
- if (atmel_nand_dma_op(mtd, (void *)buf, len, 0) == 0)
- return;
-
-- /* if no DMA operation possible, use PIO */
-- memcpy_toio(chip->IO_ADDR_W, buf, len);
-+ if (host->board->bus_width_16)
-+ atmel_write_buf16(mtd, buf, len);
-+ else
-+ atmel_write_buf8(mtd, buf, len);
- }
-
- /*
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0026-at_hdmac-bugfix-for-enabling-channel-irq.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0026-at_hdmac-bugfix-for-enabling-channel-irq.patch
deleted file mode 100644
index f2acc86..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0026-at_hdmac-bugfix-for-enabling-channel-irq.patch
+++ /dev/null
@@ -1,92 +0,0 @@
-From 694b43b07358d32bfee3b2d32e79e0c73e342dd4 Mon Sep 17 00:00:00 2001
-From: Nikolaus Voss <n.voss at weinmann.de>
-Date: Tue, 17 Jan 2012 10:28:33 +0100
-Subject: [PATCH 26/87] at_hdmac: bugfix for enabling channel irq
-
-commit bda3a47c886664e86ee14eb79e9072b9e341f575 upstream.
-
-commit 463894705e4089d0ff69e7d877312d496ac70e5b deleted redundant
-chan_id and chancnt initialization in dma drivers as this is done
-in dma_async_device_register().
-
-However, atc_enable_irq() relied on chan_id set before registering
-the device, what left only channel 0 functional for this driver.
-
-This patch introduces atc_enable/disable_chan_irq() as a variant
-of atc_enable/disable_irq() with the channel as explicit argument.
-
-Signed-off-by: Nikolaus Voss <n.voss at weinmann.de>
-Signed-off-by: Nicolas Ferre <nicolas.ferre at atmel.com>
-Signed-off-by: Vinod Koul <vinod.koul at linux.intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/dma/at_hdmac.c | 4 ++--
- drivers/dma/at_hdmac_regs.h | 17 ++++++++---------
- 2 files changed, 10 insertions(+), 11 deletions(-)
-
-diff --git a/drivers/dma/at_hdmac.c b/drivers/dma/at_hdmac.c
-index fcfa0a8..a60adbf 100644
---- a/drivers/dma/at_hdmac.c
-+++ b/drivers/dma/at_hdmac.c
-@@ -1286,7 +1286,7 @@ static int __init at_dma_probe(struct platform_device *pdev)
-
- tasklet_init(&atchan->tasklet, atc_tasklet,
- (unsigned long)atchan);
-- atc_enable_irq(atchan);
-+ atc_enable_chan_irq(atdma, i);
- }
-
- /* set base routines */
-@@ -1353,7 +1353,7 @@ static int __exit at_dma_remove(struct platform_device *pdev)
- struct at_dma_chan *atchan = to_at_dma_chan(chan);
-
- /* Disable interrupts */
-- atc_disable_irq(atchan);
-+ atc_disable_chan_irq(atdma, chan->chan_id);
- tasklet_disable(&atchan->tasklet);
-
- tasklet_kill(&atchan->tasklet);
-diff --git a/drivers/dma/at_hdmac_regs.h b/drivers/dma/at_hdmac_regs.h
-index aa4c9ae..5aa82b4 100644
---- a/drivers/dma/at_hdmac_regs.h
-+++ b/drivers/dma/at_hdmac_regs.h
-@@ -326,28 +326,27 @@ static void atc_dump_lli(struct at_dma_chan *atchan, struct at_lli *lli)
- }
-
-
--static void atc_setup_irq(struct at_dma_chan *atchan, int on)
-+static void atc_setup_irq(struct at_dma *atdma, int chan_id, int on)
- {
-- struct at_dma *atdma = to_at_dma(atchan->chan_common.device);
-- u32 ebci;
-+ u32 ebci;
-
- /* enable interrupts on buffer transfer completion & error */
-- ebci = AT_DMA_BTC(atchan->chan_common.chan_id)
-- | AT_DMA_ERR(atchan->chan_common.chan_id);
-+ ebci = AT_DMA_BTC(chan_id)
-+ | AT_DMA_ERR(chan_id);
- if (on)
- dma_writel(atdma, EBCIER, ebci);
- else
- dma_writel(atdma, EBCIDR, ebci);
- }
-
--static inline void atc_enable_irq(struct at_dma_chan *atchan)
-+static void atc_enable_chan_irq(struct at_dma *atdma, int chan_id)
- {
-- atc_setup_irq(atchan, 1);
-+ atc_setup_irq(atdma, chan_id, 1);
- }
-
--static inline void atc_disable_irq(struct at_dma_chan *atchan)
-+static void atc_disable_chan_irq(struct at_dma *atdma, int chan_id)
- {
-- atc_setup_irq(atchan, 0);
-+ atc_setup_irq(atdma, chan_id, 0);
- }
-
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0027-mm-filemap_xip.c-fix-race-condition-in-xip_file_faul.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0027-mm-filemap_xip.c-fix-race-condition-in-xip_file_faul.patch
deleted file mode 100644
index 2832716..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0027-mm-filemap_xip.c-fix-race-condition-in-xip_file_faul.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From 822964b632652a6c6f2d7a286e3719b5359c736c Mon Sep 17 00:00:00 2001
-From: Carsten Otte <carsteno at de.ibm.com>
-Date: Fri, 3 Feb 2012 15:37:14 -0800
-Subject: [PATCH 27/87] mm/filemap_xip.c: fix race condition in
- xip_file_fault()
-
-commit 99f02ef1f18631eb0a4e0ea0a3d56878dbcb4b90 upstream.
-
-Fix a race condition that shows in conjunction with xip_file_fault() when
-two threads of the same user process fault on the same memory page.
-
-In this case, the race winner will install the page table entry and the
-unlucky loser will cause an oops: xip_file_fault calls vm_insert_pfn (via
-vm_insert_mixed) which drops out at this check:
-
- retval = -EBUSY;
- if (!pte_none(*pte))
- goto out_unlock;
-
-The resulting -EBUSY return value will trigger a BUG_ON() in
-xip_file_fault.
-
-This fix simply considers the fault as fixed in this case, because the
-race winner has successfully installed the pte.
-
-[akpm at linux-foundation.org: use conventional (and consistent) comment layout]
-Reported-by: David Sadler <dsadler at us.ibm.com>
-Signed-off-by: Carsten Otte <cotte at de.ibm.com>
-Reported-by: Louis Alex Eisner <leisner at cs.ucsd.edu>
-Cc: Hugh Dickins <hughd at google.com>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- mm/filemap_xip.c | 7 ++++++-
- 1 file changed, 6 insertions(+), 1 deletion(-)
-
-diff --git a/mm/filemap_xip.c b/mm/filemap_xip.c
-index f91b2f6..a4eb311 100644
---- a/mm/filemap_xip.c
-+++ b/mm/filemap_xip.c
-@@ -263,7 +263,12 @@ found:
- xip_pfn);
- if (err == -ENOMEM)
- return VM_FAULT_OOM;
-- BUG_ON(err);
-+ /*
-+ * err == -EBUSY is fine, we've raced against another thread
-+ * that faulted-in the same page
-+ */
-+ if (err != -EBUSY)
-+ BUG_ON(err);
- return VM_FAULT_NOPAGE;
- } else {
- int err, ret = VM_FAULT_OOM;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0028-mm-compaction-check-pfn_valid-when-entering-a-new-MA.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0028-mm-compaction-check-pfn_valid-when-entering-a-new-MA.patch
deleted file mode 100644
index b90a994..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0028-mm-compaction-check-pfn_valid-when-entering-a-new-MA.patch
+++ /dev/null
@@ -1,112 +0,0 @@
-From 7129533bc15954a0f2badb0092f701540409c7a5 Mon Sep 17 00:00:00 2001
-From: Mel Gorman <mgorman at suse.de>
-Date: Fri, 3 Feb 2012 15:37:18 -0800
-Subject: [PATCH 28/87] mm: compaction: check pfn_valid when entering a new
- MAX_ORDER_NR_PAGES block during isolation for
- migration
-
-commit 0bf380bc70ecba68cb4d74dc656cc2fa8c4d801a upstream.
-
-When isolating for migration, migration starts at the start of a zone
-which is not necessarily pageblock aligned. Further, it stops isolating
-when COMPACT_CLUSTER_MAX pages are isolated so migrate_pfn is generally
-not aligned. This allows isolate_migratepages() to call pfn_to_page() on
-an invalid PFN which can result in a crash. This was originally reported
-against a 3.0-based kernel with the following trace in a crash dump.
-
-PID: 9902 TASK: d47aecd0 CPU: 0 COMMAND: "memcg_process_s"
- #0 [d72d3ad0] crash_kexec at c028cfdb
- #1 [d72d3b24] oops_end at c05c5322
- #2 [d72d3b38] __bad_area_nosemaphore at c0227e60
- #3 [d72d3bec] bad_area at c0227fb6
- #4 [d72d3c00] do_page_fault at c05c72ec
- #5 [d72d3c80] error_code (via page_fault) at c05c47a4
- EAX: 00000000 EBX: 000c0000 ECX: 00000001 EDX: 00000807 EBP: 000c0000
- DS: 007b ESI: 00000001 ES: 007b EDI: f3000a80 GS: 6f50
- CS: 0060 EIP: c030b15a ERR: ffffffff EFLAGS: 00010002
- #6 [d72d3cb4] isolate_migratepages at c030b15a
- #7 [d72d3d14] zone_watermark_ok at c02d26cb
- #8 [d72d3d2c] compact_zone at c030b8de
- #9 [d72d3d68] compact_zone_order at c030bba1
-#10 [d72d3db4] try_to_compact_pages at c030bc84
-#11 [d72d3ddc] __alloc_pages_direct_compact at c02d61e7
-#12 [d72d3e08] __alloc_pages_slowpath at c02d66c7
-#13 [d72d3e78] __alloc_pages_nodemask at c02d6a97
-#14 [d72d3eb8] alloc_pages_vma at c030a845
-#15 [d72d3ed4] do_huge_pmd_anonymous_page at c03178eb
-#16 [d72d3f00] handle_mm_fault at c02f36c6
-#17 [d72d3f30] do_page_fault at c05c70ed
-#18 [d72d3fb0] error_code (via page_fault) at c05c47a4
- EAX: b71ff000 EBX: 00000001 ECX: 00001600 EDX: 00000431
- DS: 007b ESI: 08048950 ES: 007b EDI: bfaa3788
- SS: 007b ESP: bfaa36e0 EBP: bfaa3828 GS: 6f50
- CS: 0073 EIP: 080487c8 ERR: ffffffff EFLAGS: 00010202
-
-It was also reported by Herbert van den Bergh against 3.1-based kernel
-with the following snippet from the console log.
-
-BUG: unable to handle kernel paging request at 01c00008
-IP: [<c0522399>] isolate_migratepages+0x119/0x390
-*pdpt = 000000002f7ce001 *pde = 0000000000000000
-
-It is expected that it also affects 3.2.x and current mainline.
-
-The problem is that pfn_valid is only called on the first PFN being
-checked and that PFN is not necessarily aligned. Lets say we have a case
-like this
-
-H = MAX_ORDER_NR_PAGES boundary
-| = pageblock boundary
-m = cc->migrate_pfn
-f = cc->free_pfn
-o = memory hole
-
-H------|------H------|----m-Hoooooo|ooooooH-f----|------H
-
-The migrate_pfn is just below a memory hole and the free scanner is beyond
-the hole. When isolate_migratepages started, it scans from migrate_pfn to
-migrate_pfn+pageblock_nr_pages which is now in a memory hole. It checks
-pfn_valid() on the first PFN but then scans into the hole where there are
-not necessarily valid struct pages.
-
-This patch ensures that isolate_migratepages calls pfn_valid when
-necessary.
-
-Reported-by: Herbert van den Bergh <herbert.van.den.bergh at oracle.com>
-Tested-by: Herbert van den Bergh <herbert.van.den.bergh at oracle.com>
-Signed-off-by: Mel Gorman <mgorman at suse.de>
-Acked-by: Michal Nazarewicz <mina86 at mina86.com>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- mm/compaction.c | 13 +++++++++++++
- 1 file changed, 13 insertions(+)
-
-diff --git a/mm/compaction.c b/mm/compaction.c
-index 899d956..edc1e26 100644
---- a/mm/compaction.c
-+++ b/mm/compaction.c
-@@ -313,6 +313,19 @@ static isolate_migrate_t isolate_migratepages(struct zone *zone,
- } else if (!locked)
- spin_lock_irq(&zone->lru_lock);
-
-+ /*
-+ * migrate_pfn does not necessarily start aligned to a
-+ * pageblock. Ensure that pfn_valid is called when moving
-+ * into a new MAX_ORDER_NR_PAGES range in case of large
-+ * memory holes within the zone
-+ */
-+ if ((low_pfn & (MAX_ORDER_NR_PAGES - 1)) == 0) {
-+ if (!pfn_valid(low_pfn)) {
-+ low_pfn += MAX_ORDER_NR_PAGES - 1;
-+ continue;
-+ }
-+ }
-+
- if (!pfn_valid_within(low_pfn))
- continue;
- nr_scanned++;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0029-PM-Hibernate-Fix-s2disk-regression-related-to-freezi.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0029-PM-Hibernate-Fix-s2disk-regression-related-to-freezi.patch
deleted file mode 100644
index 55bb225..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0029-PM-Hibernate-Fix-s2disk-regression-related-to-freezi.patch
+++ /dev/null
@@ -1,100 +0,0 @@
-From 527712d71f75c7e14ac825073f8b8b21bb6f7ca6 Mon Sep 17 00:00:00 2001
-From: "Rafael J. Wysocki" <rjw at sisk.pl>
-Date: Sun, 29 Jan 2012 20:35:52 +0100
-Subject: [PATCH 29/87] PM / Hibernate: Fix s2disk regression related to
- freezing workqueues
-
-commit 181e9bdef37bfcaa41f3ab6c948a2a0d60a268b5 upstream.
-
-Commit 2aede851ddf08666f68ffc17be446420e9d2a056
-
- PM / Hibernate: Freeze kernel threads after preallocating memory
-
-introduced a mechanism by which kernel threads were frozen after
-the preallocation of hibernate image memory to avoid problems with
-frozen kernel threads not responding to memory freeing requests.
-However, it overlooked the s2disk code path in which the
-SNAPSHOT_CREATE_IMAGE ioctl was run directly after SNAPSHOT_FREE,
-which caused freeze_workqueues_begin() to BUG(), because it saw
-that worqueues had been already frozen.
-
-Although in principle this issue might be addressed by removing
-the relevant BUG_ON() from freeze_workqueues_begin(), that would
-reintroduce the very problem that commit 2aede851ddf08666f68ffc17be4
-attempted to avoid into that particular code path. For this reason,
-to fix the issue at hand, introduce thaw_kernel_threads() and make
-the SNAPSHOT_FREE ioctl execute it.
-
-Special thanks to Srivatsa S. Bhat for detailed analysis of the
-problem.
-
-Reported-and-tested-by: Jiri Slaby <jslaby at suse.cz>
-Signed-off-by: Rafael J. Wysocki <rjw at sisk.pl>
-Acked-by: Srivatsa S. Bhat <srivatsa.bhat at linux.vnet.ibm.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- include/linux/freezer.h | 2 ++
- kernel/power/process.c | 9 +++++++++
- kernel/power/user.c | 9 +++++++++
- 3 files changed, 20 insertions(+)
-
-diff --git a/include/linux/freezer.h b/include/linux/freezer.h
-index a5386e3..b5d6b6a 100644
---- a/include/linux/freezer.h
-+++ b/include/linux/freezer.h
-@@ -51,6 +51,7 @@ extern void refrigerator(void);
- extern int freeze_processes(void);
- extern int freeze_kernel_threads(void);
- extern void thaw_processes(void);
-+extern void thaw_kernel_threads(void);
-
- static inline int try_to_freeze(void)
- {
-@@ -185,6 +186,7 @@ static inline void refrigerator(void) {}
- static inline int freeze_processes(void) { return -ENOSYS; }
- static inline int freeze_kernel_threads(void) { return -ENOSYS; }
- static inline void thaw_processes(void) {}
-+static inline void thaw_kernel_threads(void) {}
-
- static inline int try_to_freeze(void) { return 0; }
-
-diff --git a/kernel/power/process.c b/kernel/power/process.c
-index addbbe5..3d4b954 100644
---- a/kernel/power/process.c
-+++ b/kernel/power/process.c
-@@ -203,3 +203,12 @@ void thaw_processes(void)
- printk("done.\n");
- }
-
-+void thaw_kernel_threads(void)
-+{
-+ printk("Restarting kernel threads ... ");
-+ thaw_workqueues();
-+ thaw_tasks(true);
-+ schedule();
-+ printk("done.\n");
-+}
-+
-diff --git a/kernel/power/user.c b/kernel/power/user.c
-index 6d8f535..3565b15 100644
---- a/kernel/power/user.c
-+++ b/kernel/power/user.c
-@@ -303,6 +303,15 @@ static long snapshot_ioctl(struct file *filp, unsigned int cmd,
- swsusp_free();
- memset(&data->handle, 0, sizeof(struct snapshot_handle));
- data->ready = 0;
-+ /*
-+ * It is necessary to thaw kernel threads here, because
-+ * SNAPSHOT_CREATE_IMAGE may be invoked directly after
-+ * SNAPSHOT_FREE. In that case, if kernel threads were not
-+ * thawed, the preallocation of memory carried out by
-+ * hibernation_snapshot() might run into problems (i.e. it
-+ * might fail or even deadlock).
-+ */
-+ thaw_kernel_threads();
- break;
-
- case SNAPSHOT_SET_IMAGE_SIZE:
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0030-PM-QoS-CPU-C-state-breakage-with-PM-Qos-change.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0030-PM-QoS-CPU-C-state-breakage-with-PM-Qos-change.patch
deleted file mode 100644
index 7725c2a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0030-PM-QoS-CPU-C-state-breakage-with-PM-Qos-change.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From eb166d6e71fbf51ddf49a366ee78e25ef698ef10 Mon Sep 17 00:00:00 2001
-From: Venkatesh Pallipadi <venki at google.com>
-Date: Fri, 3 Feb 2012 22:22:25 +0100
-Subject: [PATCH 30/87] PM / QoS: CPU C-state breakage with PM Qos change
-
-commit d020283dc694c9ec31b410f522252f7a8397e67d upstream.
-
-Looks like change "PM QoS: Move and rename the implementation files"
-merged during the 3.2 development cycle made PM QoS depend on
-CONFIG_PM which depends on (PM_SLEEP || PM_RUNTIME).
-
-That breaks CPU C-states with kernels not having these CONFIGs, causing CPUs
-to spend time in Polling loop idle instead of going into deep C-states,
-consuming way way more power. This is with either acpi idle or intel idle
-enabled.
-
-Either CONFIG_PM should be enabled with any pm_qos users or
-the !CONFIG_PM pm_qos_request() should return sane defaults not to break
-the existing users. Here's is the patch for the latter option.
-
-[rjw: Modified the changelog slightly.]
-
-Signed-off-by: Venkatesh Pallipadi <venki at google.com>
-Signed-off-by: Rafael J. Wysocki <rjw at sisk.pl>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- include/linux/pm_qos.h | 14 +++++++++++++-
- 1 file changed, 13 insertions(+), 1 deletion(-)
-
-diff --git a/include/linux/pm_qos.h b/include/linux/pm_qos.h
-index 83b0ea3..8a0ede4 100644
---- a/include/linux/pm_qos.h
-+++ b/include/linux/pm_qos.h
-@@ -107,7 +107,19 @@ static inline void pm_qos_remove_request(struct pm_qos_request *req)
- { return; }
-
- static inline int pm_qos_request(int pm_qos_class)
-- { return 0; }
-+{
-+ switch (pm_qos_class) {
-+ case PM_QOS_CPU_DMA_LATENCY:
-+ return PM_QOS_CPU_DMA_LAT_DEFAULT_VALUE;
-+ case PM_QOS_NETWORK_LATENCY:
-+ return PM_QOS_NETWORK_LAT_DEFAULT_VALUE;
-+ case PM_QOS_NETWORK_THROUGHPUT:
-+ return PM_QOS_NETWORK_THROUGHPUT_DEFAULT_VALUE;
-+ default:
-+ return PM_QOS_DEFAULT_VALUE;
-+ }
-+}
-+
- static inline int pm_qos_add_notifier(int pm_qos_class,
- struct notifier_block *notifier)
- { return 0; }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0031-drm-radeon-Set-DESKTOP_HEIGHT-register-to-the-frameb.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0031-drm-radeon-Set-DESKTOP_HEIGHT-register-to-the-frameb.patch
deleted file mode 100644
index 364cea9..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0031-drm-radeon-Set-DESKTOP_HEIGHT-register-to-the-frameb.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From 361eb614723b6019e061c8d343dcbc5a26ceb3b0 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Michel=20D=C3=A4nzer?= <michel.daenzer at amd.com>
-Date: Wed, 1 Feb 2012 12:09:55 +0100
-Subject: [PATCH 31/87] drm/radeon: Set DESKTOP_HEIGHT register to the
- framebuffer (not mode) height.
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit 1b61925061660009f5b8047f93c5297e04541273 upstream.
-
-The value of this register is transferred to the V_COUNTER register at the
-beginning of vertical blank. V_COUNTER is the reference for VLINE waits and
-goes from VIEWPORT_Y_START to VIEWPORT_Y_START+VIEWPORT_HEIGHT during scanout,
-so if VIEWPORT_Y_START is not 0, V_COUNTER actually went backwards at the
-beginning of vertical blank, and VLINE waits excluding the whole scanout area
-could never finish (possibly only if VIEWPORT_Y_START is larger than the length
-of vertical blank in scanlines). Setting DESKTOP_HEIGHT to the framebuffer
-height should prevent this for any kind of VLINE wait.
-
-Fixes https://bugs.freedesktop.org/show_bug.cgi?id=45329 .
-
-Signed-off-by: Michel Dänzer <michel.daenzer at amd.com>
-Reviewed-by: Alex Deucher <alexander.deucher at amd.com>
-Signed-off-by: Dave Airlie <airlied at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/gpu/drm/radeon/atombios_crtc.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/gpu/drm/radeon/atombios_crtc.c b/drivers/gpu/drm/radeon/atombios_crtc.c
-index 2b97262..b30081f 100644
---- a/drivers/gpu/drm/radeon/atombios_crtc.c
-+++ b/drivers/gpu/drm/radeon/atombios_crtc.c
-@@ -1189,7 +1189,7 @@ static int dce4_crtc_do_set_base(struct drm_crtc *crtc,
- WREG32(EVERGREEN_GRPH_ENABLE + radeon_crtc->crtc_offset, 1);
-
- WREG32(EVERGREEN_DESKTOP_HEIGHT + radeon_crtc->crtc_offset,
-- crtc->mode.vdisplay);
-+ target_fb->height);
- x &= ~3;
- y &= ~1;
- WREG32(EVERGREEN_VIEWPORT_START + radeon_crtc->crtc_offset,
-@@ -1358,7 +1358,7 @@ static int avivo_crtc_do_set_base(struct drm_crtc *crtc,
- WREG32(AVIVO_D1GRPH_ENABLE + radeon_crtc->crtc_offset, 1);
-
- WREG32(AVIVO_D1MODE_DESKTOP_HEIGHT + radeon_crtc->crtc_offset,
-- crtc->mode.vdisplay);
-+ target_fb->height);
- x &= ~3;
- y &= ~1;
- WREG32(AVIVO_D1MODE_VIEWPORT_START + radeon_crtc->crtc_offset,
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0032-drm-nouveau-gem-fix-fence_sync-race-oops.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0032-drm-nouveau-gem-fix-fence_sync-race-oops.patch
deleted file mode 100644
index 0d78411..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0032-drm-nouveau-gem-fix-fence_sync-race-oops.patch
+++ /dev/null
@@ -1,108 +0,0 @@
-From d793d1df7fec3e24758cdd985d58cde0d1f40fb2 Mon Sep 17 00:00:00 2001
-From: Ben Skeggs <bskeggs at redhat.com>
-Date: Tue, 10 Jan 2012 10:18:28 +1000
-Subject: [PATCH 32/87] drm/nouveau/gem: fix fence_sync race / oops
-
-commit 525895ba388c949aa906f26e3ec5cb1ab041f56b upstream.
-
-Due to a race it was possible for a fence to be destroyed while another
-thread was trying to synchronise with it. If this happened in the fallback
-non-semaphore path, it lead to the following oops due to fence->channel
-being NULL.
-
-BUG: unable to handle kernel NULL pointer dereference at (null)
-IP: [<fa9632ce>] nouveau_fence_update+0xe/0xe0 [nouveau]
-*pde = a649c067
-SMP
-Modules linked in: fuse nouveau(O) ttm(O) drm_kms_helper(O) drm(O) mxm_wmi video wmi netconsole configfs lockd bnep bluetooth rfkill ip6t_REJECT nf_conntrack_ipv6 nf_defrag_ipv6 nf_conntrack_ipv4 nf_defrag_ipv4 xt_state nf_conntrack ip6table_filter ip6_tables snd_hda_codec_realtek snd_hda_intel snd_hda_cobinfmt_misc uinput ata_generic pata_acpi pata_aet2c_algo_bit i2c_core [last unloaded: wmi]
-
-Pid: 2255, comm: gnome-shell Tainted: G O 3.2.0-0.rc5.git0.1.fc17.i686 #1 System manufacturer System Product Name/M2A-VM
-EIP: 0060:[<fa9632ce>] EFLAGS: 00010296 CPU: 1
-EIP is at nouveau_fence_update+0xe/0xe0 [nouveau]
-EAX: 00000000 EBX: ddfc6dd0 ECX: dd111580 EDX: 00000000
-ESI: 00003e80 EDI: dd111580 EBP: dd121d00 ESP: dd121ce8
- DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068
-Process gnome-shell (pid: 2255, ti=dd120000 task=dd111580 task.ti=dd120000)
-Stack:
- 7dc86c76 00000000 00003e80 ddfc6dd0 00003e80 dd111580 dd121d0c fa96371f
- 00000000 dd121d3c fa963773 dd111580 01000246 000ec53d 00000000 ddfc6dd0
- 00001f40 00000000 ddfc6dd0 00000010 dc7df840 dd121d6c fa9639a0 00000000
-Call Trace:
- [<fa96371f>] __nouveau_fence_signalled+0x1f/0x30 [nouveau]
- [<fa963773>] __nouveau_fence_wait+0x43/0xd0 [nouveau]
- [<fa9639a0>] nouveau_fence_sync+0x1a0/0x1c0 [nouveau]
- [<fa964046>] validate_list+0x176/0x300 [nouveau]
- [<f7d9c9c0>] ? ttm_bo_mem_put+0x30/0x30 [ttm]
- [<fa964b8a>] nouveau_gem_ioctl_pushbuf+0x48a/0xfd0 [nouveau]
- [<c0406481>] ? die+0x31/0x80
- [<f7c93d98>] drm_ioctl+0x388/0x490 [drm]
- [<c0406481>] ? die+0x31/0x80
- [<fa964700>] ? nouveau_gem_ioctl_new+0x150/0x150 [nouveau]
- [<c0635c7b>] ? file_has_perm+0xcb/0xe0
- [<f7c93a10>] ? drm_copy_field+0x80/0x80 [drm]
- [<c0564f56>] do_vfs_ioctl+0x86/0x5b0
- [<c0406481>] ? die+0x31/0x80
- [<c0635f22>] ? selinux_file_ioctl+0x62/0x130
- [<c0554f30>] ? fget_light+0x30/0x340
- [<c05654ef>] sys_ioctl+0x6f/0x80
- [<c099e3a4>] syscall_call+0x7/0xb
- [<c0406481>] ? die+0x31/0x80
- [<c0406481>] ? die+0x31/0x80
-
-Signed-off-by: Ben Skeggs <bskeggs at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/gpu/drm/nouveau/nouveau_gem.c | 23 +++++++++++++++++++++--
- 1 file changed, 21 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/gpu/drm/nouveau/nouveau_gem.c b/drivers/gpu/drm/nouveau/nouveau_gem.c
-index 5f0bc57..7ce3fde 100644
---- a/drivers/gpu/drm/nouveau/nouveau_gem.c
-+++ b/drivers/gpu/drm/nouveau/nouveau_gem.c
-@@ -380,6 +380,25 @@ retry:
- }
-
- static int
-+validate_sync(struct nouveau_channel *chan, struct nouveau_bo *nvbo)
-+{
-+ struct nouveau_fence *fence = NULL;
-+ int ret = 0;
-+
-+ spin_lock(&nvbo->bo.bdev->fence_lock);
-+ if (nvbo->bo.sync_obj)
-+ fence = nouveau_fence_ref(nvbo->bo.sync_obj);
-+ spin_unlock(&nvbo->bo.bdev->fence_lock);
-+
-+ if (fence) {
-+ ret = nouveau_fence_sync(fence, chan);
-+ nouveau_fence_unref(&fence);
-+ }
-+
-+ return ret;
-+}
-+
-+static int
- validate_list(struct nouveau_channel *chan, struct list_head *list,
- struct drm_nouveau_gem_pushbuf_bo *pbbo, uint64_t user_pbbo_ptr)
- {
-@@ -393,7 +412,7 @@ validate_list(struct nouveau_channel *chan, struct list_head *list,
- list_for_each_entry(nvbo, list, entry) {
- struct drm_nouveau_gem_pushbuf_bo *b = &pbbo[nvbo->pbbo_index];
-
-- ret = nouveau_fence_sync(nvbo->bo.sync_obj, chan);
-+ ret = validate_sync(chan, nvbo);
- if (unlikely(ret)) {
- NV_ERROR(dev, "fail pre-validate sync\n");
- return ret;
-@@ -416,7 +435,7 @@ validate_list(struct nouveau_channel *chan, struct list_head *list,
- return ret;
- }
-
-- ret = nouveau_fence_sync(nvbo->bo.sync_obj, chan);
-+ ret = validate_sync(chan, nvbo);
- if (unlikely(ret)) {
- NV_ERROR(dev, "fail post-validate sync\n");
- return ret;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0033-drm-radeon-kms-disable-output-polling-when-suspended.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0033-drm-radeon-kms-disable-output-polling-when-suspended.patch
deleted file mode 100644
index 7f43c18..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0033-drm-radeon-kms-disable-output-polling-when-suspended.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From c41b706268ea62bdb811078da756cf3ba13045ac Mon Sep 17 00:00:00 2001
-From: Seth Forshee <seth.forshee at canonical.com>
-Date: Tue, 31 Jan 2012 19:06:25 -0600
-Subject: [PATCH 33/87] drm/radeon/kms: disable output polling when suspended
-
-commit 86698c20f71d488b32c49ed4687fb3cf8a88a5ca upstream.
-
-Polling the outputs when the device is suspended can result in erroneous
-status updates. Disable output polling during suspend to prevent this
-from happening.
-
-Signed-off-by: Seth Forshee <seth.forshee at canonical.com>
-Reviewed-by: Alex Deucher <alexander.deucher at amd.com>
-Signed-off-by: Dave Airlie <airlied at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/gpu/drm/radeon/radeon_device.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c
-index 9b39145..9231564 100644
---- a/drivers/gpu/drm/radeon/radeon_device.c
-+++ b/drivers/gpu/drm/radeon/radeon_device.c
-@@ -864,6 +864,8 @@ int radeon_suspend_kms(struct drm_device *dev, pm_message_t state)
- if (dev->switch_power_state == DRM_SWITCH_POWER_OFF)
- return 0;
-
-+ drm_kms_helper_poll_disable(dev);
-+
- /* turn off display hw */
- list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
- drm_helper_connector_dpms(connector, DRM_MODE_DPMS_OFF);
-@@ -950,6 +952,8 @@ int radeon_resume_kms(struct drm_device *dev)
- list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
- drm_helper_connector_dpms(connector, DRM_MODE_DPMS_ON);
- }
-+
-+ drm_kms_helper_poll_enable(dev);
- return 0;
- }
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0034-drm-radeon-kms-fix-TRAVIS-panel-setup.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0034-drm-radeon-kms-fix-TRAVIS-panel-setup.patch
deleted file mode 100644
index 6d0a4d7..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0034-drm-radeon-kms-fix-TRAVIS-panel-setup.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From c8abbcccc11f3d24609ff127fe3245061ae1b98b Mon Sep 17 00:00:00 2001
-From: Alex Deucher <alexander.deucher at amd.com>
-Date: Thu, 2 Feb 2012 10:18:00 -0500
-Subject: [PATCH 34/87] drm/radeon/kms: fix TRAVIS panel setup
-
-commit 304a48400d9718f74ec35ae46f30868a5f4c4516 upstream.
-
-Different versions of the DP to LVDS bridge chip
-need different panel mode settings depending on
-the chip version used.
-
-Fixes:
-https://bugs.freedesktop.org/show_bug.cgi?id=41569
-
-Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
-Signed-off-by: Dave Airlie <airlied at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/gpu/drm/radeon/atombios_dp.c | 18 +++++++++++++++---
- 1 file changed, 15 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/gpu/drm/radeon/atombios_dp.c b/drivers/gpu/drm/radeon/atombios_dp.c
-index a71557c..552b436 100644
---- a/drivers/gpu/drm/radeon/atombios_dp.c
-+++ b/drivers/gpu/drm/radeon/atombios_dp.c
-@@ -564,9 +564,21 @@ int radeon_dp_get_panel_mode(struct drm_encoder *encoder,
- ENCODER_OBJECT_ID_NUTMEG)
- panel_mode = DP_PANEL_MODE_INTERNAL_DP1_MODE;
- else if (radeon_connector_encoder_get_dp_bridge_encoder_id(connector) ==
-- ENCODER_OBJECT_ID_TRAVIS)
-- panel_mode = DP_PANEL_MODE_INTERNAL_DP2_MODE;
-- else if (connector->connector_type == DRM_MODE_CONNECTOR_eDP) {
-+ ENCODER_OBJECT_ID_TRAVIS) {
-+ u8 id[6];
-+ int i;
-+ for (i = 0; i < 6; i++)
-+ id[i] = radeon_read_dpcd_reg(radeon_connector, 0x503 + i);
-+ if (id[0] == 0x73 &&
-+ id[1] == 0x69 &&
-+ id[2] == 0x76 &&
-+ id[3] == 0x61 &&
-+ id[4] == 0x72 &&
-+ id[5] == 0x54)
-+ panel_mode = DP_PANEL_MODE_INTERNAL_DP1_MODE;
-+ else
-+ panel_mode = DP_PANEL_MODE_INTERNAL_DP2_MODE;
-+ } else if (connector->connector_type == DRM_MODE_CONNECTOR_eDP) {
- u8 tmp = radeon_read_dpcd_reg(radeon_connector, DP_EDP_CONFIGURATION_CAP);
- if (tmp & 1)
- panel_mode = DP_PANEL_MODE_INTERNAL_DP2_MODE;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0035-sched-rt-Fix-task-stack-corruption-under-__ARCH_WANT.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0035-sched-rt-Fix-task-stack-corruption-under-__ARCH_WANT.patch
deleted file mode 100644
index 0dcf2f8..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0035-sched-rt-Fix-task-stack-corruption-under-__ARCH_WANT.patch
+++ /dev/null
@@ -1,94 +0,0 @@
-From e7ccb073d5d2b9913e74d288a09fe1141258dc65 Mon Sep 17 00:00:00 2001
-From: Chanho Min <chanho0207 at gmail.com>
-Date: Thu, 5 Jan 2012 20:00:19 +0900
-Subject: [PATCH 35/87] sched/rt: Fix task stack corruption under
- __ARCH_WANT_INTERRUPTS_ON_CTXSW
-
-commit cb297a3e433dbdcf7ad81e0564e7b804c941ff0d upstream.
-
-This issue happens under the following conditions:
-
- 1. preemption is off
- 2. __ARCH_WANT_INTERRUPTS_ON_CTXSW is defined
- 3. RT scheduling class
- 4. SMP system
-
-Sequence is as follows:
-
- 1.suppose current task is A. start schedule()
- 2.task A is enqueued pushable task at the entry of schedule()
- __schedule
- prev = rq->curr;
- ...
- put_prev_task
- put_prev_task_rt
- enqueue_pushable_task
- 4.pick the task B as next task.
- next = pick_next_task(rq);
- 3.rq->curr set to task B and context_switch is started.
- rq->curr = next;
- 4.At the entry of context_swtich, release this cpu's rq->lock.
- context_switch
- prepare_task_switch
- prepare_lock_switch
- raw_spin_unlock_irq(&rq->lock);
- 5.Shortly after rq->lock is released, interrupt is occurred and start IRQ context
- 6.try_to_wake_up() which called by ISR acquires rq->lock
- try_to_wake_up
- ttwu_remote
- rq = __task_rq_lock(p)
- ttwu_do_wakeup(rq, p, wake_flags);
- task_woken_rt
- 7.push_rt_task picks the task A which is enqueued before.
- task_woken_rt
- push_rt_tasks(rq)
- next_task = pick_next_pushable_task(rq)
- 8.At find_lock_lowest_rq(), If double_lock_balance() returns 0,
- lowest_rq can be the remote rq.
- (But,If preemption is on, double_lock_balance always return 1 and it
- does't happen.)
- push_rt_task
- find_lock_lowest_rq
- if (double_lock_balance(rq, lowest_rq))..
- 9.find_lock_lowest_rq return the available rq. task A is migrated to
- the remote cpu/rq.
- push_rt_task
- ...
- deactivate_task(rq, next_task, 0);
- set_task_cpu(next_task, lowest_rq->cpu);
- activate_task(lowest_rq, next_task, 0);
- 10. But, task A is on irq context at this cpu.
- So, task A is scheduled by two cpus at the same time until restore from IRQ.
- Task A's stack is corrupted.
-
-To fix it, don't migrate an RT task if it's still running.
-
-Signed-off-by: Chanho Min <chanho.min at lge.com>
-Signed-off-by: Peter Zijlstra <a.p.zijlstra at chello.nl>
-Acked-by: Steven Rostedt <rostedt at goodmis.org>
-Link: http://lkml.kernel.org/r/CAOAMb1BHA=5fm7KTewYyke6u-8DP0iUuJMpgQw54vNeXFsGpoQ@mail.gmail.com
-Signed-off-by: Ingo Molnar <mingo at elte.hu>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- kernel/sched_rt.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/kernel/sched_rt.c b/kernel/sched_rt.c
-index 583a136..78fcacf 100644
---- a/kernel/sched_rt.c
-+++ b/kernel/sched_rt.c
-@@ -1388,6 +1388,11 @@ static int push_rt_task(struct rq *rq)
- if (!next_task)
- return 0;
-
-+#ifdef __ARCH_WANT_INTERRUPTS_ON_CTXSW
-+ if (unlikely(task_running(rq, next_task)))
-+ return 0;
-+#endif
-+
- retry:
- if (unlikely(next_task == rq->curr)) {
- WARN_ON(1);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0036-PM-Hibernate-Thaw-processes-in-SNAPSHOT_CREATE_IMAGE.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0036-PM-Hibernate-Thaw-processes-in-SNAPSHOT_CREATE_IMAGE.patch
deleted file mode 100644
index 711635c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0036-PM-Hibernate-Thaw-processes-in-SNAPSHOT_CREATE_IMAGE.patch
+++ /dev/null
@@ -1,83 +0,0 @@
-From acedd2d4a628503e05c4c6e8d344399738d6f4bc Mon Sep 17 00:00:00 2001
-From: "Srivatsa S. Bhat" <srivatsa.bhat at linux.vnet.ibm.com>
-Date: Thu, 1 Dec 2011 22:33:10 +0100
-Subject: [PATCH 36/87] PM / Hibernate: Thaw processes in
- SNAPSHOT_CREATE_IMAGE ioctl test path
-
-commit 97819a26224f019e73d88bb2fd4eb5a614860461 upstream.
-
-Commit 2aede851ddf08666f68ffc17be446420e9d2a056 (PM / Hibernate: Freeze
-kernel threads after preallocating memory) moved the freezing of kernel
-threads to hibernation_snapshot() function.
-
-So now, if the call to hibernation_snapshot() returns early due to a
-successful hibernation test, the caller has to thaw processes to ensure
-that the system gets back to its original state.
-
-But in SNAPSHOT_CREATE_IMAGE hibernation ioctl, the caller does not thaw
-processes in case hibernation_snapshot() returned due to a successful
-freezer test. Fix this issue. But note we still send the value of 'in_suspend'
-(which is now 0) to userspace, because we are not in an error path per-se,
-and moreover, the value of in_suspend correctly depicts the situation here.
-
-Signed-off-by: Srivatsa S. Bhat <srivatsa.bhat at linux.vnet.ibm.com>
-Signed-off-by: Rafael J. Wysocki <rjw at sisk.pl>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- kernel/power/hibernate.c | 2 +-
- kernel/power/power.h | 2 ++
- kernel/power/user.c | 11 ++++++++---
- 3 files changed, 11 insertions(+), 4 deletions(-)
-
-diff --git a/kernel/power/hibernate.c b/kernel/power/hibernate.c
-index a6b0503..624538a 100644
---- a/kernel/power/hibernate.c
-+++ b/kernel/power/hibernate.c
-@@ -55,7 +55,7 @@ enum {
-
- static int hibernation_mode = HIBERNATION_SHUTDOWN;
-
--static bool freezer_test_done;
-+bool freezer_test_done;
-
- static const struct platform_hibernation_ops *hibernation_ops;
-
-diff --git a/kernel/power/power.h b/kernel/power/power.h
-index 23a2db1..0c4defe 100644
---- a/kernel/power/power.h
-+++ b/kernel/power/power.h
-@@ -50,6 +50,8 @@ static inline char *check_image_kernel(struct swsusp_info *info)
- #define SPARE_PAGES ((1024 * 1024) >> PAGE_SHIFT)
-
- /* kernel/power/hibernate.c */
-+extern bool freezer_test_done;
-+
- extern int hibernation_snapshot(int platform_mode);
- extern int hibernation_restore(int platform_mode);
- extern int hibernation_platform_enter(void);
-diff --git a/kernel/power/user.c b/kernel/power/user.c
-index 3565b15..f08bbfb 100644
---- a/kernel/power/user.c
-+++ b/kernel/power/user.c
-@@ -283,10 +283,15 @@ static long snapshot_ioctl(struct file *filp, unsigned int cmd,
- }
- pm_restore_gfp_mask();
- error = hibernation_snapshot(data->platform_support);
-- if (!error)
-+ if (!error) {
- error = put_user(in_suspend, (int __user *)arg);
-- if (!error)
-- data->ready = 1;
-+ if (!error && !freezer_test_done)
-+ data->ready = 1;
-+ if (freezer_test_done) {
-+ freezer_test_done = false;
-+ thaw_processes();
-+ }
-+ }
- break;
-
- case SNAPSHOT_ATOMIC_RESTORE:
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0037-PM-Hibernate-Thaw-kernel-threads-in-SNAPSHOT_CREATE_.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0037-PM-Hibernate-Thaw-kernel-threads-in-SNAPSHOT_CREATE_.patch
deleted file mode 100644
index 44ab36d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0037-PM-Hibernate-Thaw-kernel-threads-in-SNAPSHOT_CREATE_.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From 276000691962e55d2de86793f10e7b8637c0bc91 Mon Sep 17 00:00:00 2001
-From: "Srivatsa S. Bhat" <srivatsa.bhat at linux.vnet.ibm.com>
-Date: Wed, 1 Feb 2012 22:16:36 +0100
-Subject: [PATCH 37/87] PM / Hibernate: Thaw kernel threads in
- SNAPSHOT_CREATE_IMAGE ioctl path
-
-commit fe9161db2e6053da21e4649d77bbefaf3030b11d upstream.
-
-In the SNAPSHOT_CREATE_IMAGE ioctl, if the call to hibernation_snapshot()
-fails, the frozen tasks are not thawed.
-
-And in the case of success, if we happen to exit due to a successful freezer
-test, all tasks (including those of userspace) are thawed, whereas actually
-we should have thawed only the kernel threads at that point. Fix both these
-issues.
-
-Signed-off-by: Srivatsa S. Bhat <srivatsa.bhat at linux.vnet.ibm.com>
-Signed-off-by: Rafael J. Wysocki <rjw at sisk.pl>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- kernel/power/user.c | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/kernel/power/user.c b/kernel/power/user.c
-index f08bbfb..f08d227 100644
---- a/kernel/power/user.c
-+++ b/kernel/power/user.c
-@@ -283,13 +283,15 @@ static long snapshot_ioctl(struct file *filp, unsigned int cmd,
- }
- pm_restore_gfp_mask();
- error = hibernation_snapshot(data->platform_support);
-- if (!error) {
-+ if (error) {
-+ thaw_kernel_threads();
-+ } else {
- error = put_user(in_suspend, (int __user *)arg);
- if (!error && !freezer_test_done)
- data->ready = 1;
- if (freezer_test_done) {
- freezer_test_done = false;
-- thaw_processes();
-+ thaw_kernel_threads();
- }
- }
- break;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0038-8139cp-fix-missing-napi_gro_flush.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0038-8139cp-fix-missing-napi_gro_flush.patch
deleted file mode 100644
index 50716f4..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0038-8139cp-fix-missing-napi_gro_flush.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From c006cccface5a8f4d48c66465d6ebb69abb2b729 Mon Sep 17 00:00:00 2001
-From: Francois Romieu <romieu at fr.zoreil.com>
-Date: Sun, 8 Jan 2012 13:41:33 +0000
-Subject: [PATCH 38/87] 8139cp: fix missing napi_gro_flush.
-
-commit b189e810619a676e6b931a942a3e8387f3d39c21 upstream.
-
-The driver uses __napi_complete and napi_gro_receive. Without it, the
-driver hits the BUG_ON(n->gro_list) assertion hard in __napi_complete.
-
-Signed-off-by: Francois Romieu <romieu at fr.zoreil.com>
-Tested-by: Marin Glibic <zhilla2 at gmail.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/net/ethernet/realtek/8139cp.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/net/ethernet/realtek/8139cp.c b/drivers/net/ethernet/realtek/8139cp.c
-index ee5da92..aba4f67 100644
---- a/drivers/net/ethernet/realtek/8139cp.c
-+++ b/drivers/net/ethernet/realtek/8139cp.c
-@@ -563,6 +563,7 @@ rx_next:
- if (cpr16(IntrStatus) & cp_rx_intr_mask)
- goto rx_status_loop;
-
-+ napi_gro_flush(napi);
- spin_lock_irqsave(&cp->lock, flags);
- __napi_complete(napi);
- cpw16_f(IntrMask, cp_intr_mask);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0039-udf-Mark-LVID-buffer-as-uptodate-before-marking-it-d.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0039-udf-Mark-LVID-buffer-as-uptodate-before-marking-it-d.patch
deleted file mode 100644
index 8035960..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0039-udf-Mark-LVID-buffer-as-uptodate-before-marking-it-d.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 7099b6fe8b35ed6d9f2a0799248904ed8b8a136b Mon Sep 17 00:00:00 2001
-From: Jan Kara <jack at suse.cz>
-Date: Fri, 23 Dec 2011 11:53:07 +0100
-Subject: [PATCH 39/87] udf: Mark LVID buffer as uptodate before marking it
- dirty
-
-commit 853a0c25baf96b028de1654bea1e0c8857eadf3d upstream.
-
-When we hit EIO while writing LVID, the buffer uptodate bit is cleared.
-This then results in an anoying warning from mark_buffer_dirty() when we
-write the buffer again. So just set uptodate flag unconditionally.
-
-Reviewed-by: Namjae Jeon <linkinjeon at gmail.com>
-Signed-off-by: Jan Kara <jack at suse.cz>
-Cc: Dave Jones <davej at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/udf/super.c | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-diff --git a/fs/udf/super.c b/fs/udf/super.c
-index e185253..87cb24a 100644
---- a/fs/udf/super.c
-+++ b/fs/udf/super.c
-@@ -1799,6 +1799,12 @@ static void udf_close_lvid(struct super_block *sb)
- le16_to_cpu(lvid->descTag.descCRCLength)));
-
- lvid->descTag.tagChecksum = udf_tag_checksum(&lvid->descTag);
-+ /*
-+ * We set buffer uptodate unconditionally here to avoid spurious
-+ * warnings from mark_buffer_dirty() when previous EIO has marked
-+ * the buffer as !uptodate
-+ */
-+ set_buffer_uptodate(bh);
- mark_buffer_dirty(bh);
- sbi->s_lvid_dirty = 0;
- mutex_unlock(&sbi->s_alloc_mutex);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0040-drm-i915-HDMI-hot-remove-notification-to-audio-drive.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0040-drm-i915-HDMI-hot-remove-notification-to-audio-drive.patch
deleted file mode 100644
index e68a9be..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0040-drm-i915-HDMI-hot-remove-notification-to-audio-drive.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From 0836f8461a5868c15ea1884b3a3d6d2b2c03a5e2 Mon Sep 17 00:00:00 2001
-From: Wu Fengguang <fengguang.wu at intel.com>
-Date: Fri, 9 Dec 2011 20:42:20 +0800
-Subject: [PATCH 40/87] drm/i915: HDMI hot remove notification to audio driver
-
-commit 2deed761188d7480eb5f7efbfe7aa77f09322ed8 upstream.
-
-On HDMI monitor hot remove, clear SDVO_AUDIO_ENABLE accordingly, so that
-the audio driver will receive hot plug events and take action to refresh
-its device state and ELD contents.
-
-The cleared SDVO_AUDIO_ENABLE bit needs to be restored to prevent losing
-HDMI audio after DPMS on.
-
-CC: Wang Zhenyu <zhenyu.z.wang at intel.com>
-Signed-off-by: Wu Fengguang <fengguang.wu at intel.com>
-Signed-off-by: Keith Packard <keithp at keithp.com>
-Signed-off-by: Eugeni Dodonov <eugeni.dodonov at intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/gpu/drm/i915/intel_hdmi.c | 8 ++++++--
- 1 file changed, 6 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
-index d4f5a0b..64541f7 100644
---- a/drivers/gpu/drm/i915/intel_hdmi.c
-+++ b/drivers/gpu/drm/i915/intel_hdmi.c
-@@ -269,6 +269,10 @@ static void intel_hdmi_dpms(struct drm_encoder *encoder, int mode)
- struct drm_i915_private *dev_priv = dev->dev_private;
- struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(encoder);
- u32 temp;
-+ u32 enable_bits = SDVO_ENABLE;
-+
-+ if (intel_hdmi->has_audio)
-+ enable_bits |= SDVO_AUDIO_ENABLE;
-
- temp = I915_READ(intel_hdmi->sdvox_reg);
-
-@@ -281,9 +285,9 @@ static void intel_hdmi_dpms(struct drm_encoder *encoder, int mode)
- }
-
- if (mode != DRM_MODE_DPMS_ON) {
-- temp &= ~SDVO_ENABLE;
-+ temp &= ~enable_bits;
- } else {
-- temp |= SDVO_ENABLE;
-+ temp |= enable_bits;
- }
-
- I915_WRITE(intel_hdmi->sdvox_reg, temp);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0041-drm-i915-DisplayPort-hot-remove-notification-to-audi.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0041-drm-i915-DisplayPort-hot-remove-notification-to-audi.patch
deleted file mode 100644
index c8aae72..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0041-drm-i915-DisplayPort-hot-remove-notification-to-audi.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From bdeaff1ee3a787d87037e14f40486e9e97c7b355 Mon Sep 17 00:00:00 2001
-From: Wu Fengguang <fengguang.wu at intel.com>
-Date: Fri, 9 Dec 2011 20:42:21 +0800
-Subject: [PATCH 41/87] drm/i915: DisplayPort hot remove notification to audio
- driver
-
-commit 832afda6a7d7235ef0e09f4ec46736861540da6d upstream.
-
-On DP monitor hot remove, clear DP_AUDIO_OUTPUT_ENABLE accordingly,
-so that the audio driver will receive hot plug events and take action
-to refresh its device state and ELD contents.
-
-Note that the DP_AUDIO_OUTPUT_ENABLE bit may be enabled or disabled
-only when the link training is complete and set to "Normal".
-
-Tested OK for both hot plug/remove and DPMS on/off.
-
-Signed-off-by: Wu Fengguang <fengguang.wu at intel.com>
-Signed-off-by: Keith Packard <keithp at keithp.com>
-Signed-off-by: Eugeni Dodonov <eugeni.dodonov at intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/gpu/drm/i915/intel_dp.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
-index 92b041b..db3b461 100644
---- a/drivers/gpu/drm/i915/intel_dp.c
-+++ b/drivers/gpu/drm/i915/intel_dp.c
-@@ -1926,6 +1926,7 @@ intel_dp_link_down(struct intel_dp *intel_dp)
- intel_wait_for_vblank(dev, to_intel_crtc(crtc)->pipe);
- }
-
-+ DP &= ~DP_AUDIO_OUTPUT_ENABLE;
- I915_WRITE(intel_dp->output_reg, DP & ~DP_PORT_EN);
- POSTING_READ(intel_dp->output_reg);
- msleep(intel_dp->panel_power_down_delay);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0042-drm-i915-check-ACTHD-of-all-rings.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0042-drm-i915-check-ACTHD-of-all-rings.patch
deleted file mode 100644
index aac771e..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0042-drm-i915-check-ACTHD-of-all-rings.patch
+++ /dev/null
@@ -1,92 +0,0 @@
-From 441951ed509c6c0f8b619490b199fb57eb62e652 Mon Sep 17 00:00:00 2001
-From: Daniel Vetter <daniel.vetter at ffwll.ch>
-Date: Sun, 27 Nov 2011 18:58:17 +0100
-Subject: [PATCH 42/87] drm/i915: check ACTHD of all rings
-
-commit 097354eb14fa94d31a09c64d640643f58e4a5a9a upstream.
-
-Otherwise hangcheck spuriously fires when running blitter/bsd-only
-workloads.
-
-Contrary to a similar patch by Ben Widawsky this does not check
-INSTDONE of the other rings. Chris Wilson implied that in a failure to
-detect a hang, most likely because INSTDONE was fluctuating. Thus only
-check ACTHD, which as far as I know is rather reliable. Also, blitter
-and bsd rings can't launch complex tasks from a single instruction
-(like 3D_PRIM on the render with complex or even infinite shaders).
-
-This fixes spurious gpu hang detection when running
-tests/gem_hangcheck_forcewake on snb/ivb.
-
-Signed-Off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
-Reviewed-by: Chris Wilson <chris at chris-wilson.co.uk>
-Signed-off-by: Keith Packard <keithp at keithp.com>
-Signed-off-by: Eugeni Dodonov <eugeni.dodonov at intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/gpu/drm/i915/i915_drv.h | 2 ++
- drivers/gpu/drm/i915/i915_irq.c | 13 ++++++++++---
- 2 files changed, 12 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
-index 554bef7..505af3f 100644
---- a/drivers/gpu/drm/i915/i915_drv.h
-+++ b/drivers/gpu/drm/i915/i915_drv.h
-@@ -337,6 +337,8 @@ typedef struct drm_i915_private {
- struct timer_list hangcheck_timer;
- int hangcheck_count;
- uint32_t last_acthd;
-+ uint32_t last_acthd_bsd;
-+ uint32_t last_acthd_blt;
- uint32_t last_instdone;
- uint32_t last_instdone1;
-
-diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
-index b40004b..d47a53b 100644
---- a/drivers/gpu/drm/i915/i915_irq.c
-+++ b/drivers/gpu/drm/i915/i915_irq.c
-@@ -1669,7 +1669,7 @@ void i915_hangcheck_elapsed(unsigned long data)
- {
- struct drm_device *dev = (struct drm_device *)data;
- drm_i915_private_t *dev_priv = dev->dev_private;
-- uint32_t acthd, instdone, instdone1;
-+ uint32_t acthd, instdone, instdone1, acthd_bsd, acthd_blt;
- bool err = false;
-
- if (!i915_enable_hangcheck)
-@@ -1686,16 +1686,21 @@ void i915_hangcheck_elapsed(unsigned long data)
- }
-
- if (INTEL_INFO(dev)->gen < 4) {
-- acthd = I915_READ(ACTHD);
- instdone = I915_READ(INSTDONE);
- instdone1 = 0;
- } else {
-- acthd = I915_READ(ACTHD_I965);
- instdone = I915_READ(INSTDONE_I965);
- instdone1 = I915_READ(INSTDONE1);
- }
-+ acthd = intel_ring_get_active_head(&dev_priv->ring[RCS]);
-+ acthd_bsd = HAS_BSD(dev) ?
-+ intel_ring_get_active_head(&dev_priv->ring[VCS]) : 0;
-+ acthd_blt = HAS_BLT(dev) ?
-+ intel_ring_get_active_head(&dev_priv->ring[BCS]) : 0;
-
- if (dev_priv->last_acthd == acthd &&
-+ dev_priv->last_acthd_bsd == acthd_bsd &&
-+ dev_priv->last_acthd_blt == acthd_blt &&
- dev_priv->last_instdone == instdone &&
- dev_priv->last_instdone1 == instdone1) {
- if (dev_priv->hangcheck_count++ > 1) {
-@@ -1727,6 +1732,8 @@ void i915_hangcheck_elapsed(unsigned long data)
- dev_priv->hangcheck_count = 0;
-
- dev_priv->last_acthd = acthd;
-+ dev_priv->last_acthd_bsd = acthd_bsd;
-+ dev_priv->last_acthd_blt = acthd_blt;
- dev_priv->last_instdone = instdone;
- dev_priv->last_instdone1 = instdone1;
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0043-drm-i915-Fix-TV-Out-refresh-rate.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0043-drm-i915-Fix-TV-Out-refresh-rate.patch
deleted file mode 100644
index 0a33d99..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0043-drm-i915-Fix-TV-Out-refresh-rate.patch
+++ /dev/null
@@ -1,98 +0,0 @@
-From e3c15719dc2c5af905549e56dc33cf13850cc206 Mon Sep 17 00:00:00 2001
-From: Rodrigo Vivi <rodrigo.vivi at gmail.com>
-Date: Wed, 14 Dec 2011 21:10:06 -0200
-Subject: [PATCH 43/87] drm/i915: Fix TV Out refresh rate.
-
-commit 23bd15ec662344dc10e9918fdd0dbc58bc71526d upstream.
-
-TV Out refresh rate was half of the specification for almost all modes.
-Due to this reason pixel clock was so low for some modes causing flickering screen.
-
-Signed-off-by: Rodrigo Vivi <rodrigo.vivi at gmail.com>
-Reviewed-by: Jesse Barnes <jbarnes at virtuousgeek.org>
-Signed-off-by: Keith Packard <keithp at keithp.com>
-Signed-off-by: Eugeni Dodonov <eugeni.dodonov at intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/gpu/drm/i915/intel_tv.c | 16 ++++++++--------
- 1 file changed, 8 insertions(+), 8 deletions(-)
-
-diff --git a/drivers/gpu/drm/i915/intel_tv.c b/drivers/gpu/drm/i915/intel_tv.c
-index f3c6a9a..2b1fcad 100644
---- a/drivers/gpu/drm/i915/intel_tv.c
-+++ b/drivers/gpu/drm/i915/intel_tv.c
-@@ -417,7 +417,7 @@ static const struct tv_mode tv_modes[] = {
- {
- .name = "NTSC-M",
- .clock = 108000,
-- .refresh = 29970,
-+ .refresh = 59940,
- .oversample = TV_OVERSAMPLE_8X,
- .component_only = 0,
- /* 525 Lines, 60 Fields, 15.734KHz line, Sub-Carrier 3.580MHz */
-@@ -460,7 +460,7 @@ static const struct tv_mode tv_modes[] = {
- {
- .name = "NTSC-443",
- .clock = 108000,
-- .refresh = 29970,
-+ .refresh = 59940,
- .oversample = TV_OVERSAMPLE_8X,
- .component_only = 0,
- /* 525 Lines, 60 Fields, 15.734KHz line, Sub-Carrier 4.43MHz */
-@@ -502,7 +502,7 @@ static const struct tv_mode tv_modes[] = {
- {
- .name = "NTSC-J",
- .clock = 108000,
-- .refresh = 29970,
-+ .refresh = 59940,
- .oversample = TV_OVERSAMPLE_8X,
- .component_only = 0,
-
-@@ -545,7 +545,7 @@ static const struct tv_mode tv_modes[] = {
- {
- .name = "PAL-M",
- .clock = 108000,
-- .refresh = 29970,
-+ .refresh = 59940,
- .oversample = TV_OVERSAMPLE_8X,
- .component_only = 0,
-
-@@ -589,7 +589,7 @@ static const struct tv_mode tv_modes[] = {
- /* 625 Lines, 50 Fields, 15.625KHz line, Sub-Carrier 4.434MHz */
- .name = "PAL-N",
- .clock = 108000,
-- .refresh = 25000,
-+ .refresh = 50000,
- .oversample = TV_OVERSAMPLE_8X,
- .component_only = 0,
-
-@@ -634,7 +634,7 @@ static const struct tv_mode tv_modes[] = {
- /* 625 Lines, 50 Fields, 15.625KHz line, Sub-Carrier 4.434MHz */
- .name = "PAL",
- .clock = 108000,
-- .refresh = 25000,
-+ .refresh = 50000,
- .oversample = TV_OVERSAMPLE_8X,
- .component_only = 0,
-
-@@ -821,7 +821,7 @@ static const struct tv_mode tv_modes[] = {
- {
- .name = "1080i at 50Hz",
- .clock = 148800,
-- .refresh = 25000,
-+ .refresh = 50000,
- .oversample = TV_OVERSAMPLE_2X,
- .component_only = 1,
-
-@@ -847,7 +847,7 @@ static const struct tv_mode tv_modes[] = {
- {
- .name = "1080i at 60Hz",
- .clock = 148800,
-- .refresh = 30000,
-+ .refresh = 60000,
- .oversample = TV_OVERSAMPLE_2X,
- .component_only = 1,
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0044-drm-i915-handle-3rd-pipe.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0044-drm-i915-handle-3rd-pipe.patch
deleted file mode 100644
index f771077..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0044-drm-i915-handle-3rd-pipe.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 73334272468cdb3f59deb61126b720eed982fab0 Mon Sep 17 00:00:00 2001
-From: Eugeni Dodonov <eugeni.dodonov at intel.com>
-Date: Sat, 7 Jan 2012 23:40:35 -0200
-Subject: [PATCH 44/87] drm/i915: handle 3rd pipe
-
-commit 07c1e8c1462fa7324de4c36ae9e55da2abd79cee upstream.
-
-We don't need to check 3rd pipe specifically, as it shares PLL with some
-other one.
-
-Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=41977
-Signed-off-by: Eugeni Dodonov <eugeni.dodonov at intel.com>
-Reviewed-by: Jesse Barnes <jbarnes at virtuousgeek.org>
-Signed-off-by: Keith Packard <keithp at keithp.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/gpu/drm/i915/i915_suspend.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/drivers/gpu/drm/i915/i915_suspend.c b/drivers/gpu/drm/i915/i915_suspend.c
-index 43cbafe..a1eb83d 100644
---- a/drivers/gpu/drm/i915/i915_suspend.c
-+++ b/drivers/gpu/drm/i915/i915_suspend.c
-@@ -34,6 +34,10 @@ static bool i915_pipe_enabled(struct drm_device *dev, enum pipe pipe)
- struct drm_i915_private *dev_priv = dev->dev_private;
- u32 dpll_reg;
-
-+ /* On IVB, 3rd pipe shares PLL with another one */
-+ if (pipe > 1)
-+ return false;
-+
- if (HAS_PCH_SPLIT(dev))
- dpll_reg = (pipe == PIPE_A) ? _PCH_DPLL_A : _PCH_DPLL_B;
- else
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0045-drm-i915-convert-force_wake_get-to-func-pointer-in-t.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0045-drm-i915-convert-force_wake_get-to-func-pointer-in-t.patch
deleted file mode 100644
index 01925d3..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0045-drm-i915-convert-force_wake_get-to-func-pointer-in-t.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 2b36d478a92ee0e3108f6cf50316c6122c471da7 Mon Sep 17 00:00:00 2001
-From: Daniel Vetter <daniel at ffwll.ch>
-Date: Fri, 13 Jan 2012 16:20:06 -0800
-Subject: [PATCH 45/87] drm/i915: convert force_wake_get to func pointer in
- the gpu reset code
-
-commit 8109021313c7a3d8947677391ce6ab9cd0bb1d28 upstream.
-
-This was forgotten in the original multi-threaded forcewake
-conversion:
-
-commit 8d715f0024f64ad1b1be85d8c081cf577944c847
-Author: Keith Packard <keithp at keithp.com>
-Date: Fri Nov 18 20:39:01 2011 -0800
-
- drm/i915: add multi-threaded forcewake support
-
-Signed-off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
-Reviewed-by: Eugeni Dodonov <eugeni.dodonov at intel.com>
-Signed-off-by: Keith Packard <keithp at keithp.com>
-Signed-off-by: Eugeni Dodonov <eugeni.dodonov at intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/gpu/drm/i915/i915_drv.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
-index a1103fc..d7c9d99 100644
---- a/drivers/gpu/drm/i915/i915_drv.c
-+++ b/drivers/gpu/drm/i915/i915_drv.c
-@@ -645,7 +645,7 @@ int i915_reset(struct drm_device *dev, u8 flags)
- ret = gen6_do_reset(dev, flags);
- /* If reset with a user forcewake, try to restore */
- if (atomic_read(&dev_priv->forcewake_count))
-- __gen6_gt_force_wake_get(dev_priv);
-+ dev_priv->display.force_wake_get(dev_priv);
- break;
- case 5:
- ret = ironlake_do_reset(dev, flags);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0046-drm-i915-protect-force_wake_-get-put-with-the-gt_loc.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0046-drm-i915-protect-force_wake_-get-put-with-the-gt_loc.patch
deleted file mode 100644
index d26b2d2..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0046-drm-i915-protect-force_wake_-get-put-with-the-gt_loc.patch
+++ /dev/null
@@ -1,163 +0,0 @@
-From 929430116c4a6355aafbce7cef4bbea15a8bdd9e Mon Sep 17 00:00:00 2001
-From: Daniel Vetter <daniel.vetter at ffwll.ch>
-Date: Wed, 14 Dec 2011 13:57:03 +0100
-Subject: [PATCH 46/87] drm/i915: protect force_wake_(get|put) with the
- gt_lock
-
-commit 9f1f46a45a681d357d1ceedecec3671a5ae957f4 upstream.
-
-The problem this patch solves is that the forcewake accounting
-necessary for register reads is protected by dev->struct_mutex. But the
-hangcheck and error_capture code need to access registers without
-grabbing this mutex because we hold it while waiting for the gpu.
-So a new lock is required. Because currently the error_state capture
-is called from the error irq handler and the hangcheck code runs from
-a timer, it needs to be an irqsafe spinlock (note that the registers
-used by the irq handler (neglecting the error handling part) only uses
-registers that don't need the forcewake dance).
-
-We could tune this down to a normal spinlock when we rework the
-error_state capture and hangcheck code to run from a workqueue. But
-we don't have any read in a fastpath that needs forcewake, so I've
-decided to not care much about overhead.
-
-This prevents tests/gem_hangcheck_forcewake from i-g-t from killing my
-snb on recent kernels - something must have slightly changed the
-timings. On previous kernels it only trigger a WARN about the broken
-locking.
-
-v2: Drop the previous patch for the register writes.
-
-v3: Improve the commit message per Chris Wilson's suggestions.
-
-Signed-Off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
-Reviewed-by: Chris Wilson <chris at chris-wilson.co.uk>
-Reviewed-by: Eugeni Dodonov <eugeni.dodonov at intel.com>
-Signed-off-by: Keith Packard <keithp at keithp.com>
-Signed-off-by: Eugeni Dodonov <eugeni.dodonov at intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/gpu/drm/i915/i915_debugfs.c | 8 ++++++--
- drivers/gpu/drm/i915/i915_dma.c | 1 +
- drivers/gpu/drm/i915/i915_drv.c | 18 ++++++++++++------
- drivers/gpu/drm/i915/i915_drv.h | 10 +++++++---
- 4 files changed, 26 insertions(+), 11 deletions(-)
-
-diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
-index 004b048..b2e3c97 100644
---- a/drivers/gpu/drm/i915/i915_debugfs.c
-+++ b/drivers/gpu/drm/i915/i915_debugfs.c
-@@ -1314,9 +1314,13 @@ static int i915_gen6_forcewake_count_info(struct seq_file *m, void *data)
- struct drm_info_node *node = (struct drm_info_node *) m->private;
- struct drm_device *dev = node->minor->dev;
- struct drm_i915_private *dev_priv = dev->dev_private;
-+ unsigned forcewake_count;
-
-- seq_printf(m, "forcewake count = %d\n",
-- atomic_read(&dev_priv->forcewake_count));
-+ spin_lock_irq(&dev_priv->gt_lock);
-+ forcewake_count = dev_priv->forcewake_count;
-+ spin_unlock_irq(&dev_priv->gt_lock);
-+
-+ seq_printf(m, "forcewake count = %u\n", forcewake_count);
-
- return 0;
- }
-diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c
-index a9ae374..c4da951 100644
---- a/drivers/gpu/drm/i915/i915_dma.c
-+++ b/drivers/gpu/drm/i915/i915_dma.c
-@@ -2042,6 +2042,7 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags)
- if (!IS_I945G(dev) && !IS_I945GM(dev))
- pci_enable_msi(dev->pdev);
-
-+ spin_lock_init(&dev_priv->gt_lock);
- spin_lock_init(&dev_priv->irq_lock);
- spin_lock_init(&dev_priv->error_lock);
- spin_lock_init(&dev_priv->rps_lock);
-diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
-index d7c9d99..e2d85a9 100644
---- a/drivers/gpu/drm/i915/i915_drv.c
-+++ b/drivers/gpu/drm/i915/i915_drv.c
-@@ -368,11 +368,12 @@ void __gen6_gt_force_wake_mt_get(struct drm_i915_private *dev_priv)
- */
- void gen6_gt_force_wake_get(struct drm_i915_private *dev_priv)
- {
-- WARN_ON(!mutex_is_locked(&dev_priv->dev->struct_mutex));
-+ unsigned long irqflags;
-
-- /* Forcewake is atomic in case we get in here without the lock */
-- if (atomic_add_return(1, &dev_priv->forcewake_count) == 1)
-+ spin_lock_irqsave(&dev_priv->gt_lock, irqflags);
-+ if (dev_priv->forcewake_count++ == 0)
- dev_priv->display.force_wake_get(dev_priv);
-+ spin_unlock_irqrestore(&dev_priv->gt_lock, irqflags);
- }
-
- void __gen6_gt_force_wake_put(struct drm_i915_private *dev_priv)
-@@ -392,10 +393,12 @@ void __gen6_gt_force_wake_mt_put(struct drm_i915_private *dev_priv)
- */
- void gen6_gt_force_wake_put(struct drm_i915_private *dev_priv)
- {
-- WARN_ON(!mutex_is_locked(&dev_priv->dev->struct_mutex));
-+ unsigned long irqflags;
-
-- if (atomic_dec_and_test(&dev_priv->forcewake_count))
-+ spin_lock_irqsave(&dev_priv->gt_lock, irqflags);
-+ if (--dev_priv->forcewake_count == 0)
- dev_priv->display.force_wake_put(dev_priv);
-+ spin_unlock_irqrestore(&dev_priv->gt_lock, irqflags);
- }
-
- void __gen6_gt_wait_for_fifo(struct drm_i915_private *dev_priv)
-@@ -626,6 +629,7 @@ int i915_reset(struct drm_device *dev, u8 flags)
- * need to
- */
- bool need_display = true;
-+ unsigned long irqflags;
- int ret;
-
- if (!i915_try_reset)
-@@ -644,8 +648,10 @@ int i915_reset(struct drm_device *dev, u8 flags)
- case 6:
- ret = gen6_do_reset(dev, flags);
- /* If reset with a user forcewake, try to restore */
-- if (atomic_read(&dev_priv->forcewake_count))
-+ spin_lock_irqsave(&dev_priv->gt_lock, irqflags);
-+ if (dev_priv->forcewake_count)
- dev_priv->display.force_wake_get(dev_priv);
-+ spin_unlock_irqrestore(&dev_priv->gt_lock, irqflags);
- break;
- case 5:
- ret = ironlake_do_reset(dev, flags);
-diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
-index 505af3f..ae294a0 100644
---- a/drivers/gpu/drm/i915/i915_drv.h
-+++ b/drivers/gpu/drm/i915/i915_drv.h
-@@ -286,7 +286,13 @@ typedef struct drm_i915_private {
- int relative_constants_mode;
-
- void __iomem *regs;
-- u32 gt_fifo_count;
-+ /** gt_fifo_count and the subsequent register write are synchronized
-+ * with dev->struct_mutex. */
-+ unsigned gt_fifo_count;
-+ /** forcewake_count is protected by gt_lock */
-+ unsigned forcewake_count;
-+ /** gt_lock is also taken in irq contexts. */
-+ struct spinlock gt_lock;
-
- struct intel_gmbus {
- struct i2c_adapter adapter;
-@@ -738,8 +744,6 @@ typedef struct drm_i915_private {
-
- struct drm_property *broadcast_rgb_property;
- struct drm_property *force_audio_property;
--
-- atomic_t forcewake_count;
- } drm_i915_private_t;
-
- enum i915_cache_level {
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0047-eCryptfs-Infinite-loop-due-to-overflow-in-ecryptfs_w.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0047-eCryptfs-Infinite-loop-due-to-overflow-in-ecryptfs_w.patch
deleted file mode 100644
index 9f4e173..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0047-eCryptfs-Infinite-loop-due-to-overflow-in-ecryptfs_w.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From 66d791bcaed9fa50738794abf5b46abcf2b28656 Mon Sep 17 00:00:00 2001
-From: Li Wang <liwang at nudt.edu.cn>
-Date: Thu, 19 Jan 2012 09:44:36 +0800
-Subject: [PATCH 47/87] eCryptfs: Infinite loop due to overflow in
- ecryptfs_write()
-
-commit 684a3ff7e69acc7c678d1a1394fe9e757993fd34 upstream.
-
-ecryptfs_write() can enter an infinite loop when truncating a file to a
-size larger than 4G. This only happens on architectures where size_t is
-represented by 32 bits.
-
-This was caused by a size_t overflow due to it incorrectly being used to
-store the result of a calculation which uses potentially large values of
-type loff_t.
-
-[tyhicks at canonical.com: rewrite subject and commit message]
-Signed-off-by: Li Wang <liwang at nudt.edu.cn>
-Signed-off-by: Yunchuan Wen <wenyunchuan at kylinos.com.cn>
-Reviewed-by: Cong Wang <xiyou.wangcong at gmail.com>
-Signed-off-by: Tyler Hicks <tyhicks at canonical.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/ecryptfs/read_write.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/fs/ecryptfs/read_write.c b/fs/ecryptfs/read_write.c
-index 54eb14c..608c1c3 100644
---- a/fs/ecryptfs/read_write.c
-+++ b/fs/ecryptfs/read_write.c
-@@ -130,7 +130,7 @@ int ecryptfs_write(struct inode *ecryptfs_inode, char *data, loff_t offset,
- pgoff_t ecryptfs_page_idx = (pos >> PAGE_CACHE_SHIFT);
- size_t start_offset_in_page = (pos & ~PAGE_CACHE_MASK);
- size_t num_bytes = (PAGE_CACHE_SIZE - start_offset_in_page);
-- size_t total_remaining_bytes = ((offset + size) - pos);
-+ loff_t total_remaining_bytes = ((offset + size) - pos);
-
- if (fatal_signal_pending(current)) {
- rc = -EINTR;
-@@ -141,7 +141,7 @@ int ecryptfs_write(struct inode *ecryptfs_inode, char *data, loff_t offset,
- num_bytes = total_remaining_bytes;
- if (pos < offset) {
- /* remaining zeros to write, up to destination offset */
-- size_t total_remaining_zeros = (offset - pos);
-+ loff_t total_remaining_zeros = (offset - pos);
-
- if (num_bytes > total_remaining_zeros)
- num_bytes = total_remaining_zeros;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0048-hwmon-w83627ehf-Fix-number-of-fans-for-NCT6776F.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0048-hwmon-w83627ehf-Fix-number-of-fans-for-NCT6776F.patch
deleted file mode 100644
index bdceeb4..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0048-hwmon-w83627ehf-Fix-number-of-fans-for-NCT6776F.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From e108118265e60d28d2aec2f4110c34cba5dfc86f Mon Sep 17 00:00:00 2001
-From: Guenter Roeck <linux at roeck-us.net>
-Date: Fri, 27 Jan 2012 05:43:59 -0800
-Subject: [PATCH 48/87] hwmon: (w83627ehf) Fix number of fans for NCT6776F
-
-commit 585c0fd8216e0c9f98e2434092af7ec0f999522d upstream.
-
-NCT6776F can select fan input pins for fans 3 to 5 with a secondary set of
-chip register bits. Check that second set of bits in addition to the first set
-to detect if fans 3..5 are monitored.
-
-Signed-off-by: Guenter Roeck <linux at roeck-us.net>
-Acked-by: Jean Delvare <khali at linux-fr.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/hwmon/w83627ehf.c | 23 ++++++++++++++++++++---
- 1 file changed, 20 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/hwmon/w83627ehf.c b/drivers/hwmon/w83627ehf.c
-index 4b57ab6..c25387d 100644
---- a/drivers/hwmon/w83627ehf.c
-+++ b/drivers/hwmon/w83627ehf.c
-@@ -1920,9 +1920,26 @@ w83627ehf_check_fan_inputs(const struct w83627ehf_sio_data *sio_data,
- fan4min = 0;
- fan5pin = 0;
- } else if (sio_data->kind == nct6776) {
-- fan3pin = !(superio_inb(sio_data->sioreg, 0x24) & 0x40);
-- fan4pin = !!(superio_inb(sio_data->sioreg, 0x1C) & 0x01);
-- fan5pin = !!(superio_inb(sio_data->sioreg, 0x1C) & 0x02);
-+ bool gpok = superio_inb(sio_data->sioreg, 0x27) & 0x80;
-+
-+ superio_select(sio_data->sioreg, W83627EHF_LD_HWM);
-+ regval = superio_inb(sio_data->sioreg, SIO_REG_ENABLE);
-+
-+ if (regval & 0x80)
-+ fan3pin = gpok;
-+ else
-+ fan3pin = !(superio_inb(sio_data->sioreg, 0x24) & 0x40);
-+
-+ if (regval & 0x40)
-+ fan4pin = gpok;
-+ else
-+ fan4pin = !!(superio_inb(sio_data->sioreg, 0x1C) & 0x01);
-+
-+ if (regval & 0x20)
-+ fan5pin = gpok;
-+ else
-+ fan5pin = !!(superio_inb(sio_data->sioreg, 0x1C) & 0x02);
-+
- fan4min = fan4pin;
- } else if (sio_data->kind == w83667hg || sio_data->kind == w83667hg_b) {
- fan3pin = 1;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0049-cifs-Fix-oops-in-session-setup-code-for-null-user-mo.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0049-cifs-Fix-oops-in-session-setup-code-for-null-user-mo.patch
deleted file mode 100644
index 942ec0e..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0049-cifs-Fix-oops-in-session-setup-code-for-null-user-mo.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From e0a7f0f91350c70df6f6525ebf80859c4536e10d Mon Sep 17 00:00:00 2001
-From: Shirish Pargaonkar <shirishpargaonkar at gmail.com>
-Date: Thu, 2 Feb 2012 15:28:28 -0600
-Subject: [PATCH 49/87] cifs: Fix oops in session setup code for null user
- mounts
-
-commit de47a4176c532ef5961b8a46a2d541a3517412d3 upstream.
-
-For null user mounts, do not invoke string length function
-during session setup.
-
-Reported-and-Tested-by: Chris Clayton <chris2553 at googlemail.com>
-Acked-by: Jeff Layton <jlayton at redhat.com>
-Signed-off-by: Shirish Pargaonkar <shirishpargaonkar at gmail.com>
-Signed-off-by: Steve French <smfrench at gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/cifs/sess.c | 7 +++----
- 1 file changed, 3 insertions(+), 4 deletions(-)
-
-diff --git a/fs/cifs/sess.c b/fs/cifs/sess.c
-index 4ec3ee9..2504809 100644
---- a/fs/cifs/sess.c
-+++ b/fs/cifs/sess.c
-@@ -246,16 +246,15 @@ static void ascii_ssetup_strings(char **pbcc_area, struct cifs_ses *ses,
- /* copy user */
- /* BB what about null user mounts - check that we do this BB */
- /* copy user */
-- if (ses->user_name != NULL)
-+ if (ses->user_name != NULL) {
- strncpy(bcc_ptr, ses->user_name, MAX_USERNAME_SIZE);
-+ bcc_ptr += strnlen(ses->user_name, MAX_USERNAME_SIZE);
-+ }
- /* else null user mount */
--
-- bcc_ptr += strnlen(ses->user_name, MAX_USERNAME_SIZE);
- *bcc_ptr = 0;
- bcc_ptr++; /* account for null termination */
-
- /* copy domain */
--
- if (ses->domainName != NULL) {
- strncpy(bcc_ptr, ses->domainName, 256);
- bcc_ptr += strnlen(ses->domainName, 256);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0050-atmel_lcdfb-fix-usage-of-CONTRAST_CTR-in-suspend-res.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0050-atmel_lcdfb-fix-usage-of-CONTRAST_CTR-in-suspend-res.patch
deleted file mode 100644
index fcc5b86..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0050-atmel_lcdfb-fix-usage-of-CONTRAST_CTR-in-suspend-res.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 3db2f07be3accfb079a7e4114e8705464e25e6ae Mon Sep 17 00:00:00 2001
-From: Hubert Feurstein <h.feurstein at gmail.com>
-Date: Mon, 9 Jan 2012 17:23:57 +0100
-Subject: [PATCH 50/87] atmel_lcdfb: fix usage of CONTRAST_CTR in
- suspend/resume
-
-commit 9f1065032ceb7e86c7c9f16bb86518857e88a172 upstream.
-
-An error was existing in the saving of CONTRAST_CTR register
-across suspend/resume.
-
-Signed-off-by: Hubert Feurstein <h.feurstein at gmail.com>
-Signed-off-by: Nicolas Ferre <nicolas.ferre at atmel.com>
-Acked-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj at jcrosoft.com>
-Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat at gmx.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/video/atmel_lcdfb.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/video/atmel_lcdfb.c b/drivers/video/atmel_lcdfb.c
-index 63409c1..e919c70 100644
---- a/drivers/video/atmel_lcdfb.c
-+++ b/drivers/video/atmel_lcdfb.c
-@@ -1089,7 +1089,7 @@ static int atmel_lcdfb_suspend(struct platform_device *pdev, pm_message_t mesg)
- */
- lcdc_writel(sinfo, ATMEL_LCDC_IDR, ~0UL);
-
-- sinfo->saved_lcdcon = lcdc_readl(sinfo, ATMEL_LCDC_CONTRAST_VAL);
-+ sinfo->saved_lcdcon = lcdc_readl(sinfo, ATMEL_LCDC_CONTRAST_CTR);
- lcdc_writel(sinfo, ATMEL_LCDC_CONTRAST_CTR, 0);
- if (sinfo->atmel_lcdfb_power_control)
- sinfo->atmel_lcdfb_power_control(0);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0051-lockdep-bug-Exclude-TAINT_FIRMWARE_WORKAROUND-from-d.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0051-lockdep-bug-Exclude-TAINT_FIRMWARE_WORKAROUND-from-d.patch
deleted file mode 100644
index 5aa7c5e..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0051-lockdep-bug-Exclude-TAINT_FIRMWARE_WORKAROUND-from-d.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From acfe5989cec237c5a567009424a300f16690d07e Mon Sep 17 00:00:00 2001
-From: Peter Zijlstra <a.p.zijlstra at chello.nl>
-Date: Mon, 14 Nov 2011 13:13:49 +0100
-Subject: [PATCH 51/87] lockdep, bug: Exclude TAINT_FIRMWARE_WORKAROUND from
- disabling lockdep
-
-commit df754e6af2f237a6c020c0daff55a1a609338e31 upstream.
-
-It's unlikely that TAINT_FIRMWARE_WORKAROUND causes false
-lockdep messages, so do not disable lockdep in that case.
-We still want to keep lockdep disabled in the
-TAINT_OOT_MODULE case:
-
- - bin-only modules can cause various instabilities in
- their and in unrelated kernel code
-
- - they are impossible to debug for kernel developers
-
- - they also typically do not have the copyright license
- permission to link to the GPL-ed lockdep code.
-
-Suggested-by: Ben Hutchings <ben at decadent.org.uk>
-Signed-off-by: Peter Zijlstra <a.p.zijlstra at chello.nl>
-Link: http://lkml.kernel.org/n/tip-xopopjjens57r0i13qnyh2yo@git.kernel.org
-Signed-off-by: Ingo Molnar <mingo at elte.hu>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- kernel/panic.c | 12 ++++++++++--
- 1 file changed, 10 insertions(+), 2 deletions(-)
-
-diff --git a/kernel/panic.c b/kernel/panic.c
-index b2659360..1b83fd8 100644
---- a/kernel/panic.c
-+++ b/kernel/panic.c
-@@ -240,8 +240,16 @@ void add_taint(unsigned flag)
- * Also we want to keep up lockdep for staging development and
- * post-warning case.
- */
-- if (flag != TAINT_CRAP && flag != TAINT_WARN && __debug_locks_off())
-- printk(KERN_WARNING "Disabling lock debugging due to kernel taint\n");
-+ switch (flag) {
-+ case TAINT_CRAP:
-+ case TAINT_WARN:
-+ case TAINT_FIRMWARE_WORKAROUND:
-+ break;
-+
-+ default:
-+ if (__debug_locks_off())
-+ printk(KERN_WARNING "Disabling lock debugging due to kernel taint\n");
-+ }
-
- set_bit(flag, &tainted_mask);
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0052-lockdep-bug-Exclude-TAINT_OOT_MODULE-from-disabling-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0052-lockdep-bug-Exclude-TAINT_OOT_MODULE-from-disabling-.patch
deleted file mode 100644
index e915769..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0052-lockdep-bug-Exclude-TAINT_OOT_MODULE-from-disabling-.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From 21cfca7c702dbbb3560b35493aa1a620dae338ee Mon Sep 17 00:00:00 2001
-From: Ben Hutchings <ben at decadent.org.uk>
-Date: Wed, 7 Dec 2011 14:30:58 +0000
-Subject: [PATCH 52/87] lockdep, bug: Exclude TAINT_OOT_MODULE from disabling
- lock debugging
-
-commit 9ec84acee1e221d99dc33237bff5e82839d10cc0 upstream.
-
-We do want to allow lock debugging for GPL-compatible modules
-that are not (yet) built in-tree. This was disabled as a
-side-effect of commit 2449b8ba0745327c5fa49a8d9acffe03b2eded69
-('module,bug: Add TAINT_OOT_MODULE flag for modules not built
-in-tree'). Lock debug warnings now include taint flags, so
-kernel developers should still be able to deflect warnings
-caused by out-of-tree modules.
-
-The TAINT_PROPRIETARY_MODULE flag for non-GPL-compatible modules
-will still disable lock debugging.
-
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
-Cc: Nick Bowler <nbowler at elliptictech.com>
-Cc: Dave Jones <davej at redhat.com>
-Cc: Rusty Russell <rusty at rustcorp.com.au>
-Cc: Randy Dunlap <rdunlap at xenotime.net>
-Cc: Debian kernel maintainers <debian-kernel at lists.debian.org>
-Cc: Peter Zijlstra <peterz at infradead.org>
-Cc: Alan Cox <alan at linux.intel.com>
-Link: http://lkml.kernel.org/r/1323268258.18450.11.camel@deadeye
-Signed-off-by: Ingo Molnar <mingo at elte.hu>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- kernel/panic.c | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/kernel/panic.c b/kernel/panic.c
-index 1b83fd8..3458469 100644
---- a/kernel/panic.c
-+++ b/kernel/panic.c
-@@ -237,11 +237,12 @@ void add_taint(unsigned flag)
- * Can't trust the integrity of the kernel anymore.
- * We don't call directly debug_locks_off() because the issue
- * is not necessarily serious enough to set oops_in_progress to 1
-- * Also we want to keep up lockdep for staging development and
-- * post-warning case.
-+ * Also we want to keep up lockdep for staging/out-of-tree
-+ * development and post-warning case.
- */
- switch (flag) {
- case TAINT_CRAP:
-+ case TAINT_OOT_MODULE:
- case TAINT_WARN:
- case TAINT_FIRMWARE_WORKAROUND:
- break;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0053-iscsi-target-Fix-reject-release-handling-in-iscsit_f.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0053-iscsi-target-Fix-reject-release-handling-in-iscsit_f.patch
deleted file mode 100644
index 0954ea0..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0053-iscsi-target-Fix-reject-release-handling-in-iscsit_f.patch
+++ /dev/null
@@ -1,79 +0,0 @@
-From a6f3badb8bb91c6f6f732855a0bb79138fc52301 Mon Sep 17 00:00:00 2001
-From: Nicholas Bellinger <nab at linux-iscsi.org>
-Date: Mon, 16 Jan 2012 16:04:15 -0800
-Subject: [PATCH 53/87] iscsi-target: Fix reject release handling in
- iscsit_free_cmd()
-
-commit c1ce4bd56f2846de55043374598fd929ad3b711b upstream.
-
-This patch addresses a bug where iscsit_free_cmd() was incorrectly calling
-iscsit_release_cmd() for ISCSI_OP_REJECT because iscsi_add_reject*() will
-overwrite the original iscsi_cmd->iscsi_opcode assignment. This bug was
-introduced with the following commit:
-
-commit 0be67f2ed8f577d2c72d917928394c5885fa9134
-Author: Nicholas Bellinger <nab at linux-iscsi.org>
-Date: Sun Oct 9 01:48:14 2011 -0700
-
- iscsi-target: Remove SCF_SE_LUN_CMD flag abuses
-
-and was manifesting itself as list corruption with the following:
-
-[ 131.191092] ------------[ cut here ]------------
-[ 131.191092] WARNING: at lib/list_debug.c:53 __list_del_entry+0x8d/0x98()
-[ 131.191092] Hardware name: VMware Virtual Platform
-[ 131.191092] list_del corruption. prev->next should be ffff880022d3c100, but was 6b6b6b6b6b6b6b6b
-[ 131.191092] Modules linked in: tcm_vhost ib_srpt ib_cm ib_sa ib_mad ib_core tcm_qla2xxx qla2xxx tcm_loop tcm_fc libfc scsi_transport_fc crc32c iscsi_target_mod target_core_stgt scsi_tgt target_core_pscsi target_core_file target_core_iblock target_core_mod configfs ipv6 iscsi_tcp libiscsi_tcp libiscsi scsi_transport_iscsi sr_mod cdrom sd_mod e1000 ata_piix libata mptspi mptscsih mptbase [last unloaded: scsi_wait_scan]
-[ 131.191092] Pid: 2250, comm: iscsi_ttx Tainted: G W 3.2.0-rc4+ #42
-[ 131.191092] Call Trace:
-[ 131.191092] [<ffffffff8103b553>] warn_slowpath_common+0x80/0x98
-[ 131.191092] [<ffffffff8103b5ff>] warn_slowpath_fmt+0x41/0x43
-[ 131.191092] [<ffffffff811d0279>] __list_del_entry+0x8d/0x98
-[ 131.191092] [<ffffffffa01395c9>] transport_lun_remove_cmd+0x9b/0xb7 [target_core_mod]
-[ 131.191092] [<ffffffffa013a55c>] transport_generic_free_cmd+0x5d/0x71 [target_core_mod]
-[ 131.191092] [<ffffffffa01a012b>] iscsit_free_cmd+0x1e/0x27 [iscsi_target_mod]
-[ 131.191092] [<ffffffffa01a13be>] iscsit_close_connection+0x14d/0x5b2 [iscsi_target_mod]
-[ 131.191092] [<ffffffffa0196a0c>] iscsit_take_action_for_connection_exit+0xdb/0xe0 [iscsi_target_mod]
-[ 131.191092] [<ffffffffa01a55d4>] iscsi_target_tx_thread+0x15cb/0x1608 [iscsi_target_mod]
-[ 131.191092] [<ffffffff8103609a>] ? check_preempt_wakeup+0x121/0x185
-[ 131.191092] [<ffffffff81030801>] ? __dequeue_entity+0x2e/0x33
-[ 131.191092] [<ffffffffa01a4009>] ? iscsit_send_text_rsp+0x25f/0x25f [iscsi_target_mod]
-[ 131.191092] [<ffffffffa01a4009>] ? iscsit_send_text_rsp+0x25f/0x25f [iscsi_target_mod]
-[ 131.191092] [<ffffffff8138f706>] ? schedule+0x55/0x57
-[ 131.191092] [<ffffffff81056c7d>] kthread+0x7d/0x85
-[ 131.191092] [<ffffffff81399534>] kernel_thread_helper+0x4/0x10
-[ 131.191092] [<ffffffff81056c00>] ? kthread_worker_fn+0x16d/0x16d
-[ 131.191092] [<ffffffff81399530>] ? gs_change+0x13/0x13
-
-Reported-by: <jrepac at yahoo.com>
-Signed-off-by: Nicholas Bellinger <nab at linux-iscsi.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/target/iscsi/iscsi_target_util.c | 11 +++++++++++
- 1 file changed, 11 insertions(+)
-
-diff --git a/drivers/target/iscsi/iscsi_target_util.c b/drivers/target/iscsi/iscsi_target_util.c
-index 02348f7..99f2af3 100644
---- a/drivers/target/iscsi/iscsi_target_util.c
-+++ b/drivers/target/iscsi/iscsi_target_util.c
-@@ -851,6 +851,17 @@ void iscsit_free_cmd(struct iscsi_cmd *cmd)
- case ISCSI_OP_SCSI_TMFUNC:
- transport_generic_free_cmd(&cmd->se_cmd, 1);
- break;
-+ case ISCSI_OP_REJECT:
-+ /*
-+ * Handle special case for REJECT when iscsi_add_reject*() has
-+ * overwritten the original iscsi_opcode assignment, and the
-+ * associated cmd->se_cmd needs to be released.
-+ */
-+ if (cmd->se_cmd.se_tfo != NULL) {
-+ transport_generic_free_cmd(&cmd->se_cmd, 1);
-+ break;
-+ }
-+ /* Fall-through */
- default:
- iscsit_release_cmd(cmd);
- break;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0054-iscsi-target-Fix-double-list_add-with-iscsit_alloc_b.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0054-iscsi-target-Fix-double-list_add-with-iscsit_alloc_b.patch
deleted file mode 100644
index 44f4652..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0054-iscsi-target-Fix-double-list_add-with-iscsit_alloc_b.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From e356b89ef6403b6c82722d01efdab03f0e751dba Mon Sep 17 00:00:00 2001
-From: Nicholas Bellinger <nab at linux-iscsi.org>
-Date: Mon, 16 Jan 2012 17:11:54 -0800
-Subject: [PATCH 54/87] iscsi-target: Fix double list_add with
- iscsit_alloc_buffs reject
-
-commit cd931ee62fd0258fc85c76a7c5499fe85e0f3436 upstream.
-
-This patch fixes a bug where the iscsit_add_reject_from_cmd() call
-from a failure to iscsit_alloc_buffs() was incorrectly passing
-add_to_conn=1 and causing a double list_add after iscsi_cmd->i_list
-had already been added in iscsit_handle_scsi_cmd().
-
-Signed-off-by: Nicholas Bellinger <nab at linux-iscsi.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/target/iscsi/iscsi_target.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/target/iscsi/iscsi_target.c b/drivers/target/iscsi/iscsi_target.c
-index 8599545..3b46e3a 100644
---- a/drivers/target/iscsi/iscsi_target.c
-+++ b/drivers/target/iscsi/iscsi_target.c
-@@ -1062,7 +1062,7 @@ attach_cmd:
- if (ret < 0)
- return iscsit_add_reject_from_cmd(
- ISCSI_REASON_BOOKMARK_NO_RESOURCES,
-- 1, 1, buf, cmd);
-+ 1, 0, buf, cmd);
- /*
- * Check the CmdSN against ExpCmdSN/MaxCmdSN here if
- * the Immediate Bit is not set, and no Immediate
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0055-iscsi-target-Fix-discovery-with-INADDR_ANY-and-IN6AD.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0055-iscsi-target-Fix-discovery-with-INADDR_ANY-and-IN6AD.patch
deleted file mode 100644
index 1d7499c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0055-iscsi-target-Fix-discovery-with-INADDR_ANY-and-IN6AD.patch
+++ /dev/null
@@ -1,176 +0,0 @@
-From 758300f8f6a9d7df69151cb4b6c076ce2abe3a33 Mon Sep 17 00:00:00 2001
-From: Nicholas Bellinger <nab at linux-iscsi.org>
-Date: Mon, 16 Jan 2012 23:33:48 -0800
-Subject: [PATCH 55/87] iscsi-target: Fix discovery with INADDR_ANY and
- IN6ADDR_ANY_INIT
-
-commit 2f9bc894c67dbacae5a6a9875818d2a18a918d18 upstream.
-
-This patch addresses a bug with sendtargets discovery where INADDR_ANY (0.0.0.0)
-+ IN6ADDR_ANY_INIT ([0:0:0:0:0:0:0:0]) network portals where incorrectly being
-reported back to initiators instead of the address of the connecting interface.
-To address this, save local socket ->getname() output during iscsi login setup,
-and makes iscsit_build_sendtargets_response() return these TargetAddress keys
-when INADDR_ANY or IN6ADDR_ANY_INIT portals are in use.
-
-Reported-by: Dax Kelson <dkelson at gurulabs.com>
-Reported-by: Andy Grover <agrover at redhat.com>
-Cc: David S. Miller <davem at davemloft.net>
-Signed-off-by: Nicholas Bellinger <nab at linux-iscsi.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/target/iscsi/iscsi_target.c | 37 +++++++++++++++++++++++++----
- drivers/target/iscsi/iscsi_target_core.h | 2 ++
- drivers/target/iscsi/iscsi_target_login.c | 31 ++++++++++++++++++++----
- 3 files changed, 62 insertions(+), 8 deletions(-)
-
-diff --git a/drivers/target/iscsi/iscsi_target.c b/drivers/target/iscsi/iscsi_target.c
-index 3b46e3a..0c1d5c73 100644
---- a/drivers/target/iscsi/iscsi_target.c
-+++ b/drivers/target/iscsi/iscsi_target.c
-@@ -3165,6 +3165,30 @@ static int iscsit_send_task_mgt_rsp(
- return 0;
- }
-
-+static bool iscsit_check_inaddr_any(struct iscsi_np *np)
-+{
-+ bool ret = false;
-+
-+ if (np->np_sockaddr.ss_family == AF_INET6) {
-+ const struct sockaddr_in6 sin6 = {
-+ .sin6_addr = IN6ADDR_ANY_INIT };
-+ struct sockaddr_in6 *sock_in6 =
-+ (struct sockaddr_in6 *)&np->np_sockaddr;
-+
-+ if (!memcmp(sock_in6->sin6_addr.s6_addr,
-+ sin6.sin6_addr.s6_addr, 16))
-+ ret = true;
-+ } else {
-+ struct sockaddr_in * sock_in =
-+ (struct sockaddr_in *)&np->np_sockaddr;
-+
-+ if (sock_in->sin_addr.s_addr == INADDR_ANY)
-+ ret = true;
-+ }
-+
-+ return ret;
-+}
-+
- static int iscsit_build_sendtargets_response(struct iscsi_cmd *cmd)
- {
- char *payload = NULL;
-@@ -3214,12 +3238,17 @@ static int iscsit_build_sendtargets_response(struct iscsi_cmd *cmd)
- spin_lock(&tpg->tpg_np_lock);
- list_for_each_entry(tpg_np, &tpg->tpg_gnp_list,
- tpg_np_list) {
-+ struct iscsi_np *np = tpg_np->tpg_np;
-+ bool inaddr_any = iscsit_check_inaddr_any(np);
-+
- len = sprintf(buf, "TargetAddress="
- "%s%s%s:%hu,%hu",
-- (tpg_np->tpg_np->np_sockaddr.ss_family == AF_INET6) ?
-- "[" : "", tpg_np->tpg_np->np_ip,
-- (tpg_np->tpg_np->np_sockaddr.ss_family == AF_INET6) ?
-- "]" : "", tpg_np->tpg_np->np_port,
-+ (np->np_sockaddr.ss_family == AF_INET6) ?
-+ "[" : "", (inaddr_any == false) ?
-+ np->np_ip : conn->local_ip,
-+ (np->np_sockaddr.ss_family == AF_INET6) ?
-+ "]" : "", (inaddr_any == false) ?
-+ np->np_port : conn->local_port,
- tpg->tpgt);
- len += 1;
-
-diff --git a/drivers/target/iscsi/iscsi_target_core.h b/drivers/target/iscsi/iscsi_target_core.h
-index f1a02da..7da2d6a 100644
---- a/drivers/target/iscsi/iscsi_target_core.h
-+++ b/drivers/target/iscsi/iscsi_target_core.h
-@@ -508,6 +508,7 @@ struct iscsi_conn {
- u16 cid;
- /* Remote TCP Port */
- u16 login_port;
-+ u16 local_port;
- int net_size;
- u32 auth_id;
- #define CONNFLAG_SCTP_STRUCT_FILE 0x01
-@@ -527,6 +528,7 @@ struct iscsi_conn {
- unsigned char bad_hdr[ISCSI_HDR_LEN];
- #define IPV6_ADDRESS_SPACE 48
- unsigned char login_ip[IPV6_ADDRESS_SPACE];
-+ unsigned char local_ip[IPV6_ADDRESS_SPACE];
- int conn_usage_count;
- int conn_waiting_on_uc;
- atomic_t check_immediate_queue;
-diff --git a/drivers/target/iscsi/iscsi_target_login.c b/drivers/target/iscsi/iscsi_target_login.c
-index d734bde..bd2adec 100644
---- a/drivers/target/iscsi/iscsi_target_login.c
-+++ b/drivers/target/iscsi/iscsi_target_login.c
-@@ -616,8 +616,8 @@ static int iscsi_post_login_handler(
- }
-
- pr_debug("iSCSI Login successful on CID: %hu from %s to"
-- " %s:%hu,%hu\n", conn->cid, conn->login_ip, np->np_ip,
-- np->np_port, tpg->tpgt);
-+ " %s:%hu,%hu\n", conn->cid, conn->login_ip,
-+ conn->local_ip, conn->local_port, tpg->tpgt);
-
- list_add_tail(&conn->conn_list, &sess->sess_conn_list);
- atomic_inc(&sess->nconn);
-@@ -659,7 +659,8 @@ static int iscsi_post_login_handler(
- sess->session_state = TARG_SESS_STATE_LOGGED_IN;
-
- pr_debug("iSCSI Login successful on CID: %hu from %s to %s:%hu,%hu\n",
-- conn->cid, conn->login_ip, np->np_ip, np->np_port, tpg->tpgt);
-+ conn->cid, conn->login_ip, conn->local_ip, conn->local_port,
-+ tpg->tpgt);
-
- spin_lock_bh(&sess->conn_lock);
- list_add_tail(&conn->conn_list, &sess->sess_conn_list);
-@@ -1019,6 +1020,18 @@ static int __iscsi_target_login_thread(struct iscsi_np *np)
- snprintf(conn->login_ip, sizeof(conn->login_ip), "%pI6c",
- &sock_in6.sin6_addr.in6_u);
- conn->login_port = ntohs(sock_in6.sin6_port);
-+
-+ if (conn->sock->ops->getname(conn->sock,
-+ (struct sockaddr *)&sock_in6, &err, 0) < 0) {
-+ pr_err("sock_ops->getname() failed.\n");
-+ iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR,
-+ ISCSI_LOGIN_STATUS_TARGET_ERROR);
-+ goto new_sess_out;
-+ }
-+ snprintf(conn->local_ip, sizeof(conn->local_ip), "%pI6c",
-+ &sock_in6.sin6_addr.in6_u);
-+ conn->local_port = ntohs(sock_in6.sin6_port);
-+
- } else {
- memset(&sock_in, 0, sizeof(struct sockaddr_in));
-
-@@ -1031,6 +1044,16 @@ static int __iscsi_target_login_thread(struct iscsi_np *np)
- }
- sprintf(conn->login_ip, "%pI4", &sock_in.sin_addr.s_addr);
- conn->login_port = ntohs(sock_in.sin_port);
-+
-+ if (conn->sock->ops->getname(conn->sock,
-+ (struct sockaddr *)&sock_in, &err, 0) < 0) {
-+ pr_err("sock_ops->getname() failed.\n");
-+ iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR,
-+ ISCSI_LOGIN_STATUS_TARGET_ERROR);
-+ goto new_sess_out;
-+ }
-+ sprintf(conn->local_ip, "%pI4", &sock_in.sin_addr.s_addr);
-+ conn->local_port = ntohs(sock_in.sin_port);
- }
-
- conn->network_transport = np->np_network_transport;
-@@ -1038,7 +1061,7 @@ static int __iscsi_target_login_thread(struct iscsi_np *np)
- pr_debug("Received iSCSI login request from %s on %s Network"
- " Portal %s:%hu\n", conn->login_ip,
- (conn->network_transport == ISCSI_TCP) ? "TCP" : "SCTP",
-- np->np_ip, np->np_port);
-+ conn->local_ip, conn->local_port);
-
- pr_debug("Moving to TARG_CONN_STATE_IN_LOGIN.\n");
- conn->conn_state = TARG_CONN_STATE_IN_LOGIN;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0056-ASoC-wm_hubs-Fix-routing-of-input-PGAs-to-line-outpu.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0056-ASoC-wm_hubs-Fix-routing-of-input-PGAs-to-line-outpu.patch
deleted file mode 100644
index 00ec0c7..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0056-ASoC-wm_hubs-Fix-routing-of-input-PGAs-to-line-outpu.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 163c472309f266e32c7c31e32c7dc3b59522f316 Mon Sep 17 00:00:00 2001
-From: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Date: Tue, 31 Jan 2012 11:55:32 +0000
-Subject: [PATCH 56/87] ASoC: wm_hubs: Fix routing of input PGAs to line
- output mixer
-
-commit ee76744c51ec342df9822b4a85dbbfc3887b6d60 upstream.
-
-IN1L/R is routed to both line output mixers, we don't route IN1 to LINEOUT1
-and IN2 to LINEOUT2.
-
-Signed-off-by: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- sound/soc/codecs/wm_hubs.c | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/sound/soc/codecs/wm_hubs.c b/sound/soc/codecs/wm_hubs.c
-index 8547191..6ef2283 100644
---- a/sound/soc/codecs/wm_hubs.c
-+++ b/sound/soc/codecs/wm_hubs.c
-@@ -587,8 +587,8 @@ SOC_DAPM_SINGLE("Left Output Switch", WM8993_LINE_MIXER1, 0, 1, 0),
- };
-
- static const struct snd_kcontrol_new line2_mix[] = {
--SOC_DAPM_SINGLE("IN2R Switch", WM8993_LINE_MIXER2, 2, 1, 0),
--SOC_DAPM_SINGLE("IN2L Switch", WM8993_LINE_MIXER2, 1, 1, 0),
-+SOC_DAPM_SINGLE("IN1R Switch", WM8993_LINE_MIXER2, 2, 1, 0),
-+SOC_DAPM_SINGLE("IN1L Switch", WM8993_LINE_MIXER2, 1, 1, 0),
- SOC_DAPM_SINGLE("Output Switch", WM8993_LINE_MIXER2, 0, 1, 0),
- };
-
-@@ -846,8 +846,8 @@ static const struct snd_soc_dapm_route lineout1_se_routes[] = {
- };
-
- static const struct snd_soc_dapm_route lineout2_diff_routes[] = {
-- { "LINEOUT2 Mixer", "IN2L Switch", "IN2L PGA" },
-- { "LINEOUT2 Mixer", "IN2R Switch", "IN2R PGA" },
-+ { "LINEOUT2 Mixer", "IN1L Switch", "IN1L PGA" },
-+ { "LINEOUT2 Mixer", "IN1R Switch", "IN1R PGA" },
- { "LINEOUT2 Mixer", "Output Switch", "Right Output PGA" },
-
- { "LINEOUT2N Driver", NULL, "LINEOUT2 Mixer" },
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0057-ASoC-wm_hubs-Correct-line-input-to-line-output-2-pat.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0057-ASoC-wm_hubs-Correct-line-input-to-line-output-2-pat.patch
deleted file mode 100644
index c5ab696..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0057-ASoC-wm_hubs-Correct-line-input-to-line-output-2-pat.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 113eac61d50555abefdb20ce9cebc839a2bc1968 Mon Sep 17 00:00:00 2001
-From: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Date: Wed, 1 Feb 2012 23:46:58 +0000
-Subject: [PATCH 57/87] ASoC: wm_hubs: Correct line input to line output 2
- paths
-
-commit 43b6cec27e1e50a1de3eff47e66e502f3fe7e66e upstream.
-
-The second line output mixer has the controls for the line input bypasses
-in the opposite order.
-
-Signed-off-by: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- sound/soc/codecs/wm_hubs.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/sound/soc/codecs/wm_hubs.c b/sound/soc/codecs/wm_hubs.c
-index 6ef2283..3642e06 100644
---- a/sound/soc/codecs/wm_hubs.c
-+++ b/sound/soc/codecs/wm_hubs.c
-@@ -587,8 +587,8 @@ SOC_DAPM_SINGLE("Left Output Switch", WM8993_LINE_MIXER1, 0, 1, 0),
- };
-
- static const struct snd_kcontrol_new line2_mix[] = {
--SOC_DAPM_SINGLE("IN1R Switch", WM8993_LINE_MIXER2, 2, 1, 0),
--SOC_DAPM_SINGLE("IN1L Switch", WM8993_LINE_MIXER2, 1, 1, 0),
-+SOC_DAPM_SINGLE("IN1L Switch", WM8993_LINE_MIXER2, 2, 1, 0),
-+SOC_DAPM_SINGLE("IN1R Switch", WM8993_LINE_MIXER2, 1, 1, 0),
- SOC_DAPM_SINGLE("Output Switch", WM8993_LINE_MIXER2, 0, 1, 0),
- };
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0058-ASoC-wm8962-Fix-word-length-configuration.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0058-ASoC-wm8962-Fix-word-length-configuration.patch
deleted file mode 100644
index 3995a73..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0058-ASoC-wm8962-Fix-word-length-configuration.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From ec5cca9dff81fc233e23c860c0eb3bc31a0d8591 Mon Sep 17 00:00:00 2001
-From: Susan Gao <sgao at opensource.wolfsonmicro.com>
-Date: Mon, 30 Jan 2012 13:57:04 -0800
-Subject: [PATCH 58/87] ASoC: wm8962: Fix word length configuration
-
-commit 2b6712b19531e22455e7fa18371c5ba9eec76699 upstream.
-
-Signed-off-by: Susan Gao <sgao at opensource.wolfsonmicro.com>
-Signed-off-by: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- sound/soc/codecs/wm8962.c | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/sound/soc/codecs/wm8962.c b/sound/soc/codecs/wm8962.c
-index 53edd9a..d795294 100644
---- a/sound/soc/codecs/wm8962.c
-+++ b/sound/soc/codecs/wm8962.c
-@@ -3172,13 +3172,13 @@ static int wm8962_hw_params(struct snd_pcm_substream *substream,
- case SNDRV_PCM_FORMAT_S16_LE:
- break;
- case SNDRV_PCM_FORMAT_S20_3LE:
-- aif0 |= 0x40;
-+ aif0 |= 0x4;
- break;
- case SNDRV_PCM_FORMAT_S24_LE:
-- aif0 |= 0x80;
-+ aif0 |= 0x8;
- break;
- case SNDRV_PCM_FORMAT_S32_LE:
-- aif0 |= 0xc0;
-+ aif0 |= 0xc;
- break;
- default:
- return -EINVAL;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0059-ASoC-wm8994-Enabling-VMID-should-take-a-runtime-PM-r.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0059-ASoC-wm8994-Enabling-VMID-should-take-a-runtime-PM-r.patch
deleted file mode 100644
index 4a092ff..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0059-ASoC-wm8994-Enabling-VMID-should-take-a-runtime-PM-r.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 9efc915e73a43b160fd97350c98c3be1bdf4e25d Mon Sep 17 00:00:00 2001
-From: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Date: Mon, 6 Feb 2012 12:07:08 +0000
-Subject: [PATCH 59/87] ASoC: wm8994: Enabling VMID should take a runtime PM
- reference
-
-commit db966f8abb9ba74f7d5a7230f51572f52c31c4e5 upstream.
-
-We can enable VMID independently of the bias in some use cases so we need
-to ensure that the core device is powered up.
-
-Signed-off-by: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- sound/soc/codecs/wm8994.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/sound/soc/codecs/wm8994.c b/sound/soc/codecs/wm8994.c
-index d0c545b..a3d6bd8 100644
---- a/sound/soc/codecs/wm8994.c
-+++ b/sound/soc/codecs/wm8994.c
-@@ -729,6 +729,8 @@ static void vmid_reference(struct snd_soc_codec *codec)
- {
- struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
-
-+ pm_runtime_get_sync(codec->dev);
-+
- wm8994->vmid_refcount++;
-
- dev_dbg(codec->dev, "Referencing VMID, refcount is now %d\n",
-@@ -796,6 +798,8 @@ static void vmid_dereference(struct snd_soc_codec *codec)
- WM8994_VMID_BUF_ENA |
- WM8994_VMID_RAMP_MASK, 0);
- }
-+
-+ pm_runtime_put(codec->dev);
- }
-
- static int vmid_event(struct snd_soc_dapm_widget *w,
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0060-ASoC-wm8994-Fix-typo-in-VMID-ramp-setting.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0060-ASoC-wm8994-Fix-typo-in-VMID-ramp-setting.patch
deleted file mode 100644
index 625bd28..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0060-ASoC-wm8994-Fix-typo-in-VMID-ramp-setting.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From e0781c37a52ef08a49e613ef22de8d28fa9cde4f Mon Sep 17 00:00:00 2001
-From: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Date: Tue, 7 Feb 2012 17:24:19 +0000
-Subject: [PATCH 60/87] ASoC: wm8994: Fix typo in VMID ramp setting
-
-commit f647e1526fd6c7c8ab720781c40d11e11f930e93 upstream.
-
-The VMID ramp rate is supposed to be 0x3, not 11b. Fix that.
-
-Signed-off-by: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- sound/soc/codecs/wm8994.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/sound/soc/codecs/wm8994.c b/sound/soc/codecs/wm8994.c
-index a3d6bd8..6e502af 100644
---- a/sound/soc/codecs/wm8994.c
-+++ b/sound/soc/codecs/wm8994.c
-@@ -744,7 +744,7 @@ static void vmid_reference(struct snd_soc_codec *codec)
- WM8994_VMID_RAMP_MASK,
- WM8994_STARTUP_BIAS_ENA |
- WM8994_VMID_BUF_ENA |
-- (0x11 << WM8994_VMID_RAMP_SHIFT));
-+ (0x3 << WM8994_VMID_RAMP_SHIFT));
-
- /* Main bias enable, VMID=2x40k */
- snd_soc_update_bits(codec, WM8994_POWER_MANAGEMENT_1,
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0061-pcmcia-fix-socket-refcount-decrementing-on-each-resu.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0061-pcmcia-fix-socket-refcount-decrementing-on-each-resu.patch
deleted file mode 100644
index 161c76b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0061-pcmcia-fix-socket-refcount-decrementing-on-each-resu.patch
+++ /dev/null
@@ -1,179 +0,0 @@
-From 1c26182f30bdb305865cd6de1ccf6c4a7d32c074 Mon Sep 17 00:00:00 2001
-From: Russell King <rmk+kernel at arm.linux.org.uk>
-Date: Wed, 8 Feb 2012 17:13:41 -0800
-Subject: [PATCH 61/87] pcmcia: fix socket refcount decrementing on each
- resume
-
-commit 025e4ab3db07fcbf62c01e4f30d1012234beb980 upstream.
-
-This fixes a memory-corrupting bug: not only does it cause the warning,
-but as a result of dropping the refcount to zero, it causes the
-pcmcia_socket0 device structure to be freed while it still has
-references, causing slab caches corruption. A fatal oops quickly
-follows this warning - often even just a 'dmesg' following the warning
-causes the kernel to oops.
-
-While testing suspend/resume on an ARM device with PCMCIA support, and a
-CF card inserted, I found that after five suspend and resumes, the
-kernel would complain, and shortly die after with slab corruption.
-
- WARNING: at include/linux/kref.h:41 kobject_get+0x28/0x50()
-
-As the message doesn't give a clue about which kobject, and the built-in
-debugging in drivers/base/power/main.c happens too late, this was added
-right before each get_device():
-
- printk("%s: %p [%s] %u\n", __func__, dev, kobject_name(&dev->kobj), atomic_read(&dev->kobj.kref.refcount));
-
-and on the 3rd s2ram cycle, the following behaviour observed:
-
-On the 3rd suspend/resume cycle:
-
- dpm_prepare: c1a0d998 [pcmcia_socket0] 3
- dpm_suspend: c1a0d998 [pcmcia_socket0] 3
- dpm_suspend_noirq: c1a0d998 [pcmcia_socket0] 3
- dpm_resume_noirq: c1a0d998 [pcmcia_socket0] 3
- dpm_resume: c1a0d998 [pcmcia_socket0] 3
- dpm_complete: c1a0d998 [pcmcia_socket0] 2
-
-4th:
-
- dpm_prepare: c1a0d998 [pcmcia_socket0] 2
- dpm_suspend: c1a0d998 [pcmcia_socket0] 2
- dpm_suspend_noirq: c1a0d998 [pcmcia_socket0] 2
- dpm_resume_noirq: c1a0d998 [pcmcia_socket0] 2
- dpm_resume: c1a0d998 [pcmcia_socket0] 2
- dpm_complete: c1a0d998 [pcmcia_socket0] 1
-
-5th:
-
- dpm_prepare: c1a0d998 [pcmcia_socket0] 1
- dpm_suspend: c1a0d998 [pcmcia_socket0] 1
- dpm_suspend_noirq: c1a0d998 [pcmcia_socket0] 1
- dpm_resume_noirq: c1a0d998 [pcmcia_socket0] 1
- dpm_resume: c1a0d998 [pcmcia_socket0] 1
- dpm_complete: c1a0d998 [pcmcia_socket0] 0
- ------------[ cut here ]------------
- WARNING: at include/linux/kref.h:41 kobject_get+0x28/0x50()
- Modules linked in: ucb1x00_core
- Backtrace:
- [<c0212090>] (dump_backtrace+0x0/0x110) from [<c04799dc>] (dump_stack+0x18/0x1c)
- [<c04799c4>] (dump_stack+0x0/0x1c) from [<c021cba0>] (warn_slowpath_common+0x50/0x68)
- [<c021cb50>] (warn_slowpath_common+0x0/0x68) from [<c021cbdc>] (warn_slowpath_null+0x24/0x28)
- [<c021cbb8>] (warn_slowpath_null+0x0/0x28) from [<c0335374>] (kobject_get+0x28/0x50)
- [<c033534c>] (kobject_get+0x0/0x50) from [<c03804f4>] (get_device+0x1c/0x24)
- [<c0388c90>] (dpm_complete+0x0/0x1a0) from [<c0389cc0>] (dpm_resume_end+0x1c/0x20)
- ...
-
-Looking at commit 7b24e7988263 ("pcmcia: split up central event handler"),
-the following change was made to cs.c:
-
- return 0;
- }
- #endif
--
-- send_event(skt, CS_EVENT_PM_RESUME, CS_EVENT_PRI_LOW);
-+ if (!(skt->state & SOCKET_CARDBUS) && (skt->callback))
-+ skt->callback->early_resume(skt);
- return 0;
- }
-
-And the corresponding change in ds.c is from:
-
--static int ds_event(struct pcmcia_socket *skt, event_t event, int priority)
--{
-- struct pcmcia_socket *s = pcmcia_get_socket(skt);
-...
-- switch (event) {
-...
-- case CS_EVENT_PM_RESUME:
-- if (verify_cis_cache(skt) != 0) {
-- dev_dbg(&skt->dev, "cis mismatch - different card\n");
-- /* first, remove the card */
-- ds_event(skt, CS_EVENT_CARD_REMOVAL, CS_EVENT_PRI_HIGH);
-- mutex_lock(&s->ops_mutex);
-- destroy_cis_cache(skt);
-- kfree(skt->fake_cis);
-- skt->fake_cis = NULL;
-- s->functions = 0;
-- mutex_unlock(&s->ops_mutex);
-- /* now, add the new card */
-- ds_event(skt, CS_EVENT_CARD_INSERTION,
-- CS_EVENT_PRI_LOW);
-- }
-- break;
-...
-- }
-
-- pcmcia_put_socket(s);
-
-- return 0;
--} /* ds_event */
-
-to:
-
-+static int pcmcia_bus_early_resume(struct pcmcia_socket *skt)
-+{
-+ if (!verify_cis_cache(skt)) {
-+ pcmcia_put_socket(skt);
-+ return 0;
-+ }
-
-+ dev_dbg(&skt->dev, "cis mismatch - different card\n");
-
-+ /* first, remove the card */
-+ pcmcia_bus_remove(skt);
-+ mutex_lock(&skt->ops_mutex);
-+ destroy_cis_cache(skt);
-+ kfree(skt->fake_cis);
-+ skt->fake_cis = NULL;
-+ skt->functions = 0;
-+ mutex_unlock(&skt->ops_mutex);
-
-+ /* now, add the new card */
-+ pcmcia_bus_add(skt);
-+ return 0;
-+}
-
-As can be seen, the original function called pcmcia_get_socket() and
-pcmcia_put_socket() around the guts, whereas the replacement code
-calls pcmcia_put_socket() only in one path. This creates an imbalance
-in the refcounting.
-
-Testing with pcmcia_put_socket() put removed shows that the bug is gone:
-
- dpm_suspend: c1a10998 [pcmcia_socket0] 5
- dpm_suspend_noirq: c1a10998 [pcmcia_socket0] 5
- dpm_resume_noirq: c1a10998 [pcmcia_socket0] 5
- dpm_resume: c1a10998 [pcmcia_socket0] 5
- dpm_complete: c1a10998 [pcmcia_socket0] 5
-
-Tested-by: Russell King <rmk+kernel at arm.linux.org.uk>
-Signed-off-by: Russell King <rmk+kernel at arm.linux.org.uk>
-Cc: Dominik Brodowski <linux at dominikbrodowski.net>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/pcmcia/ds.c | 4 +---
- 1 file changed, 1 insertion(+), 3 deletions(-)
-
-diff --git a/drivers/pcmcia/ds.c b/drivers/pcmcia/ds.c
-index 749c2a1..1932029 100644
---- a/drivers/pcmcia/ds.c
-+++ b/drivers/pcmcia/ds.c
-@@ -1269,10 +1269,8 @@ static int pcmcia_bus_add(struct pcmcia_socket *skt)
-
- static int pcmcia_bus_early_resume(struct pcmcia_socket *skt)
- {
-- if (!verify_cis_cache(skt)) {
-- pcmcia_put_socket(skt);
-+ if (!verify_cis_cache(skt))
- return 0;
-- }
-
- dev_dbg(&skt->dev, "cis mismatch - different card\n");
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0062-ALSA-oxygen-virtuoso-fix-exchanged-L-R-volumes-of-au.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0062-ALSA-oxygen-virtuoso-fix-exchanged-L-R-volumes-of-au.patch
deleted file mode 100644
index cbe173b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0062-ALSA-oxygen-virtuoso-fix-exchanged-L-R-volumes-of-au.patch
+++ /dev/null
@@ -1,67 +0,0 @@
-From 5c7ae045a077d4c9c8bf3ca735d48c319c70f18e Mon Sep 17 00:00:00 2001
-From: Clemens Ladisch <clemens at ladisch.de>
-Date: Sat, 4 Feb 2012 20:56:47 +0100
-Subject: [PATCH 62/87] ALSA: oxygen, virtuoso: fix exchanged L/R volumes of
- aux and CD inputs
-
-commit 2492250e4412c6411324c14ab289629360640b0a upstream.
-
-The driver accidentally exchanged the left/right fields for stereo AC'97
-mixer registers. This affected only the aux and CD inputs because the
-line input bypasses the AC'97 codec and the mic input is mono; cards
-without AC'97 (Xonar DS/DG/HDAV Slim, HG2PCI, HiFier) were not affected.
-
-Reported-and-tested-by: Abby Cedar <abbycedar at yahoo.com.au>
-Signed-off-by: Clemens Ladisch <clemens at ladisch.de>
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- sound/pci/oxygen/oxygen_mixer.c | 25 ++++++++++++++-----------
- 1 file changed, 14 insertions(+), 11 deletions(-)
-
-diff --git a/sound/pci/oxygen/oxygen_mixer.c b/sound/pci/oxygen/oxygen_mixer.c
-index 26c7e8b..c0dbb52 100644
---- a/sound/pci/oxygen/oxygen_mixer.c
-+++ b/sound/pci/oxygen/oxygen_mixer.c
-@@ -618,9 +618,12 @@ static int ac97_volume_get(struct snd_kcontrol *ctl,
- mutex_lock(&chip->mutex);
- reg = oxygen_read_ac97(chip, codec, index);
- mutex_unlock(&chip->mutex);
-- value->value.integer.value[0] = 31 - (reg & 0x1f);
-- if (stereo)
-- value->value.integer.value[1] = 31 - ((reg >> 8) & 0x1f);
-+ if (!stereo) {
-+ value->value.integer.value[0] = 31 - (reg & 0x1f);
-+ } else {
-+ value->value.integer.value[0] = 31 - ((reg >> 8) & 0x1f);
-+ value->value.integer.value[1] = 31 - (reg & 0x1f);
-+ }
- return 0;
- }
-
-@@ -636,14 +639,14 @@ static int ac97_volume_put(struct snd_kcontrol *ctl,
-
- mutex_lock(&chip->mutex);
- oldreg = oxygen_read_ac97(chip, codec, index);
-- newreg = oldreg;
-- newreg = (newreg & ~0x1f) |
-- (31 - (value->value.integer.value[0] & 0x1f));
-- if (stereo)
-- newreg = (newreg & ~0x1f00) |
-- ((31 - (value->value.integer.value[1] & 0x1f)) << 8);
-- else
-- newreg = (newreg & ~0x1f00) | ((newreg & 0x1f) << 8);
-+ if (!stereo) {
-+ newreg = oldreg & ~0x1f;
-+ newreg |= 31 - (value->value.integer.value[0] & 0x1f);
-+ } else {
-+ newreg = oldreg & ~0x1f1f;
-+ newreg |= (31 - (value->value.integer.value[0] & 0x1f)) << 8;
-+ newreg |= 31 - (value->value.integer.value[1] & 0x1f);
-+ }
- change = newreg != oldreg;
- if (change)
- oxygen_write_ac97(chip, codec, index, newreg);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0063-iommu-amd-Work-around-broken-IVRS-tables.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0063-iommu-amd-Work-around-broken-IVRS-tables.patch
deleted file mode 100644
index b85f1a4..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0063-iommu-amd-Work-around-broken-IVRS-tables.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From db8ef9e089221419a0fcccaf6f88c4d3a0750a96 Mon Sep 17 00:00:00 2001
-From: Joerg Roedel <joerg.roedel at amd.com>
-Date: Wed, 18 Jan 2012 14:03:11 +0100
-Subject: [PATCH 63/87] iommu/amd: Work around broken IVRS tables
-
-commit af1be04901e27ce669b4ecde1c953d5c939498f5 upstream.
-
-On some systems the IVRS table does not contain all PCI
-devices present in the system. In case a device not present
-in the IVRS table is translated by the IOMMU no DMA is
-possible from that device by default.
-This patch fixes this by removing the DTE entry for every
-PCI device present in the system and not covered by IVRS.
-
-Signed-off-by: Joerg Roedel <joerg.roedel at amd.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/iommu/amd_iommu.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c
-index 4ee277a..e0b3e33 100644
---- a/drivers/iommu/amd_iommu.c
-+++ b/drivers/iommu/amd_iommu.c
-@@ -2479,6 +2479,9 @@ static unsigned device_dma_ops_init(void)
-
- for_each_pci_dev(pdev) {
- if (!check_device(&pdev->dev)) {
-+
-+ iommu_ignore_device(&pdev->dev);
-+
- unhandled += 1;
- continue;
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0064-iommu-msm-Fix-error-handling-in-msm_iommu_unmap.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0064-iommu-msm-Fix-error-handling-in-msm_iommu_unmap.patch
deleted file mode 100644
index ebcd3c3..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0064-iommu-msm-Fix-error-handling-in-msm_iommu_unmap.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From 667de79718d03db9abc68a2a999fd4e072e3ad5e Mon Sep 17 00:00:00 2001
-From: Joerg Roedel <joerg.roedel at amd.com>
-Date: Thu, 26 Jan 2012 18:25:37 +0100
-Subject: [PATCH 64/87] iommu/msm: Fix error handling in msm_iommu_unmap()
-
-commit 05df1f3c2afaef5672627f2b7095f0d4c4dbc3a0 upstream.
-
-Error handling in msm_iommu_unmap() is broken. On some error
-conditions retval is set to a non-zero value which causes
-the function to return 'len' at the end. This hides the
-error from the user. Zero should be returned in those error
-cases.
-
-Cc: David Brown <davidb at codeaurora.org>
-Cc: Stepan Moskovchenko <stepanm at codeaurora.org>
-Signed-off-by: Joerg Roedel <joerg.roedel at amd.com>
-Acked-by: David Brown <davidb at codeaurora.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/iommu/msm_iommu.c | 7 +------
- 1 file changed, 1 insertion(+), 6 deletions(-)
-
-diff --git a/drivers/iommu/msm_iommu.c b/drivers/iommu/msm_iommu.c
-index 5865dd2..a4d134d 100644
---- a/drivers/iommu/msm_iommu.c
-+++ b/drivers/iommu/msm_iommu.c
-@@ -481,23 +481,19 @@ static int msm_iommu_unmap(struct iommu_domain *domain, unsigned long va,
-
- priv = domain->priv;
-
-- if (!priv) {
-- ret = -ENODEV;
-+ if (!priv)
- goto fail;
-- }
-
- fl_table = priv->pgtable;
-
- if (len != SZ_16M && len != SZ_1M &&
- len != SZ_64K && len != SZ_4K) {
- pr_debug("Bad length: %d\n", len);
-- ret = -EINVAL;
- goto fail;
- }
-
- if (!fl_table) {
- pr_debug("Null page table\n");
-- ret = -EINVAL;
- goto fail;
- }
-
-@@ -506,7 +502,6 @@ static int msm_iommu_unmap(struct iommu_domain *domain, unsigned long va,
-
- if (*fl_pte == 0) {
- pr_debug("First level PTE is 0\n");
-- ret = -ENODEV;
- goto fail;
- }
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0065-mm-compaction-check-for-overlapping-nodes-during-iso.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0065-mm-compaction-check-for-overlapping-nodes-during-iso.patch
deleted file mode 100644
index 617552e..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0065-mm-compaction-check-for-overlapping-nodes-during-iso.patch
+++ /dev/null
@@ -1,111 +0,0 @@
-From eac6f36f1d2ec20ad69b5aef85b6b9ba5490eaf1 Mon Sep 17 00:00:00 2001
-From: Mel Gorman <mgorman at suse.de>
-Date: Wed, 8 Feb 2012 17:13:38 -0800
-Subject: [PATCH 65/87] mm: compaction: check for overlapping nodes during
- isolation for migration
-
-commit dc9086004b3d5db75997a645b3fe08d9138b7ad0 upstream.
-
-When isolating pages for migration, migration starts at the start of a
-zone while the free scanner starts at the end of the zone. Migration
-avoids entering a new zone by never going beyond the free scanned.
-
-Unfortunately, in very rare cases nodes can overlap. When this happens,
-migration isolates pages without the LRU lock held, corrupting lists
-which will trigger errors in reclaim or during page free such as in the
-following oops
-
- BUG: unable to handle kernel NULL pointer dereference at 0000000000000008
- IP: [<ffffffff810f795c>] free_pcppages_bulk+0xcc/0x450
- PGD 1dda554067 PUD 1e1cb58067 PMD 0
- Oops: 0000 [#1] SMP
- CPU 37
- Pid: 17088, comm: memcg_process_s Tainted: G X
- RIP: free_pcppages_bulk+0xcc/0x450
- Process memcg_process_s (pid: 17088, threadinfo ffff881c2926e000, task ffff881c2926c0c0)
- Call Trace:
- free_hot_cold_page+0x17e/0x1f0
- __pagevec_free+0x90/0xb0
- release_pages+0x22a/0x260
- pagevec_lru_move_fn+0xf3/0x110
- putback_lru_page+0x66/0xe0
- unmap_and_move+0x156/0x180
- migrate_pages+0x9e/0x1b0
- compact_zone+0x1f3/0x2f0
- compact_zone_order+0xa2/0xe0
- try_to_compact_pages+0xdf/0x110
- __alloc_pages_direct_compact+0xee/0x1c0
- __alloc_pages_slowpath+0x370/0x830
- __alloc_pages_nodemask+0x1b1/0x1c0
- alloc_pages_vma+0x9b/0x160
- do_huge_pmd_anonymous_page+0x160/0x270
- do_page_fault+0x207/0x4c0
- page_fault+0x25/0x30
-
-The "X" in the taint flag means that external modules were loaded but but
-is unrelated to the bug triggering. The real problem was because the PFN
-layout looks like this
-
- Zone PFN ranges:
- DMA 0x00000010 -> 0x00001000
- DMA32 0x00001000 -> 0x00100000
- Normal 0x00100000 -> 0x01e80000
- Movable zone start PFN for each node
- early_node_map[14] active PFN ranges
- 0: 0x00000010 -> 0x0000009b
- 0: 0x00000100 -> 0x0007a1ec
- 0: 0x0007a354 -> 0x0007a379
- 0: 0x0007f7ff -> 0x0007f800
- 0: 0x00100000 -> 0x00680000
- 1: 0x00680000 -> 0x00e80000
- 0: 0x00e80000 -> 0x01080000
- 1: 0x01080000 -> 0x01280000
- 0: 0x01280000 -> 0x01480000
- 1: 0x01480000 -> 0x01680000
- 0: 0x01680000 -> 0x01880000
- 1: 0x01880000 -> 0x01a80000
- 0: 0x01a80000 -> 0x01c80000
- 1: 0x01c80000 -> 0x01e80000
-
-The fix is straight-forward. isolate_migratepages() has to make a
-similar check to isolate_freepage to ensure that it never isolates pages
-from a zone it does not hold the LRU lock for.
-
-This was discovered in a 3.0-based kernel but it affects 3.1.x, 3.2.x
-and current mainline.
-
-Signed-off-by: Mel Gorman <mgorman at suse.de>
-Acked-by: Michal Nazarewicz <mina86 at mina86.com>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- mm/compaction.c | 11 ++++++++++-
- 1 file changed, 10 insertions(+), 1 deletion(-)
-
-diff --git a/mm/compaction.c b/mm/compaction.c
-index edc1e26..8fb8a40 100644
---- a/mm/compaction.c
-+++ b/mm/compaction.c
-@@ -330,8 +330,17 @@ static isolate_migrate_t isolate_migratepages(struct zone *zone,
- continue;
- nr_scanned++;
-
-- /* Get the page and skip if free */
-+ /*
-+ * Get the page and ensure the page is within the same zone.
-+ * See the comment in isolate_freepages about overlapping
-+ * nodes. It is deliberate that the new zone lock is not taken
-+ * as memory compaction should not move pages between nodes.
-+ */
- page = pfn_to_page(low_pfn);
-+ if (page_zone(page) != zone)
-+ continue;
-+
-+ /* Skip if free */
- if (PageBuddy(page))
- continue;
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0066-mm-fix-UP-THP-spin_is_locked-BUGs.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0066-mm-fix-UP-THP-spin_is_locked-BUGs.patch
deleted file mode 100644
index 303f75c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0066-mm-fix-UP-THP-spin_is_locked-BUGs.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From 25a6cd70476e3d2a0314a4295a0514a4448dbac2 Mon Sep 17 00:00:00 2001
-From: Hugh Dickins <hughd at google.com>
-Date: Wed, 8 Feb 2012 17:13:40 -0800
-Subject: [PATCH 66/87] mm: fix UP THP spin_is_locked BUGs
-
-commit b9980cdcf2524c5fe15d8cbae9c97b3ed6385563 upstream.
-
-Fix CONFIG_TRANSPARENT_HUGEPAGE=y CONFIG_SMP=n CONFIG_DEBUG_VM=y
-CONFIG_DEBUG_SPINLOCK=n kernel: spin_is_locked() is then always false,
-and so triggers some BUGs in Transparent HugePage codepaths.
-
-asm-generic/bug.h mentions this problem, and provides a WARN_ON_SMP(x);
-but being too lazy to add VM_BUG_ON_SMP, BUG_ON_SMP, WARN_ON_SMP_ONCE,
-VM_WARN_ON_SMP_ONCE, just test NR_CPUS != 1 in the existing VM_BUG_ONs.
-
-Signed-off-by: Hugh Dickins <hughd at google.com>
-Cc: Andrea Arcangeli <aarcange at redhat.com>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- mm/huge_memory.c | 4 ++--
- mm/swap.c | 2 +-
- 2 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/mm/huge_memory.c b/mm/huge_memory.c
-index 36b3d98..33141f5 100644
---- a/mm/huge_memory.c
-+++ b/mm/huge_memory.c
-@@ -2064,7 +2064,7 @@ static void collect_mm_slot(struct mm_slot *mm_slot)
- {
- struct mm_struct *mm = mm_slot->mm;
-
-- VM_BUG_ON(!spin_is_locked(&khugepaged_mm_lock));
-+ VM_BUG_ON(NR_CPUS != 1 && !spin_is_locked(&khugepaged_mm_lock));
-
- if (khugepaged_test_exit(mm)) {
- /* free mm_slot */
-@@ -2094,7 +2094,7 @@ static unsigned int khugepaged_scan_mm_slot(unsigned int pages,
- int progress = 0;
-
- VM_BUG_ON(!pages);
-- VM_BUG_ON(!spin_is_locked(&khugepaged_mm_lock));
-+ VM_BUG_ON(NR_CPUS != 1 && !spin_is_locked(&khugepaged_mm_lock));
-
- if (khugepaged_scan.mm_slot)
- mm_slot = khugepaged_scan.mm_slot;
-diff --git a/mm/swap.c b/mm/swap.c
-index a91caf7..55b266d 100644
---- a/mm/swap.c
-+++ b/mm/swap.c
-@@ -667,7 +667,7 @@ void lru_add_page_tail(struct zone* zone,
- VM_BUG_ON(!PageHead(page));
- VM_BUG_ON(PageCompound(page_tail));
- VM_BUG_ON(PageLRU(page_tail));
-- VM_BUG_ON(!spin_is_locked(&zone->lru_lock));
-+ VM_BUG_ON(NR_CPUS != 1 && !spin_is_locked(&zone->lru_lock));
-
- SetPageLRU(page_tail);
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0067-target-Use-correct-preempted-registration-sense-code.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0067-target-Use-correct-preempted-registration-sense-code.patch
deleted file mode 100644
index 4431e23..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0067-target-Use-correct-preempted-registration-sense-code.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-From e984745acea6568eb41ce680ed321d04f17b3f70 Mon Sep 17 00:00:00 2001
-From: Marco Sanvido <marco at purestorage.com>
-Date: Tue, 3 Jan 2012 17:12:57 -0800
-Subject: [PATCH 67/87] target: Use correct preempted registration sense code
-
-commit 9e08e34e3735ae057eb3834da3570995811b7eb9 upstream.
-
-The comments quote the right parts of the spec:
-
- * d) Establish a unit attention condition for the
- * initiator port associated with every I_T nexus
- * that lost its registration other than the I_T
- * nexus on which the PERSISTENT RESERVE OUT command
- * was received, with the additional sense code set
- * to REGISTRATIONS PREEMPTED.
-
-and
-
- * e) Establish a unit attention condition for the initiator
- * port associated with every I_T nexus that lost its
- * persistent reservation and/or registration, with the
- * additional sense code set to REGISTRATIONS PREEMPTED;
-
-but the actual code accidentally uses ASCQ_2AH_RESERVATIONS_PREEMPTED
-instead of ASCQ_2AH_REGISTRATIONS_PREEMPTED. Fix this.
-
-Signed-off-by: Marco Sanvido <marco at purestorage.com>
-Signed-off-by: Roland Dreier <roland at purestorage.com>
-Signed-off-by: Nicholas Bellinger <nab at linux-iscsi.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/target/target_core_pr.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/target/target_core_pr.c b/drivers/target/target_core_pr.c
-index 95dee70..4911fe9 100644
---- a/drivers/target/target_core_pr.c
-+++ b/drivers/target/target_core_pr.c
-@@ -3138,7 +3138,7 @@ static int core_scsi3_pro_preempt(
- if (!calling_it_nexus)
- core_scsi3_ua_allocate(pr_reg_nacl,
- pr_res_mapped_lun, 0x2A,
-- ASCQ_2AH_RESERVATIONS_PREEMPTED);
-+ ASCQ_2AH_REGISTRATIONS_PREEMPTED);
- }
- spin_unlock(&pr_tmpl->registration_lock);
- /*
-@@ -3251,7 +3251,7 @@ static int core_scsi3_pro_preempt(
- * additional sense code set to REGISTRATIONS PREEMPTED;
- */
- core_scsi3_ua_allocate(pr_reg_nacl, pr_res_mapped_lun, 0x2A,
-- ASCQ_2AH_RESERVATIONS_PREEMPTED);
-+ ASCQ_2AH_REGISTRATIONS_PREEMPTED);
- }
- spin_unlock(&pr_tmpl->registration_lock);
- /*
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0068-target-Allow-PERSISTENT-RESERVE-IN-for-non-reservati.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0068-target-Allow-PERSISTENT-RESERVE-IN-for-non-reservati.patch
deleted file mode 100644
index b39f046..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0068-target-Allow-PERSISTENT-RESERVE-IN-for-non-reservati.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 1605e4e1ccfd2335053437a5b26b060d13f3ea76 Mon Sep 17 00:00:00 2001
-From: Marco Sanvido <marco at purestorage.com>
-Date: Tue, 3 Jan 2012 17:12:58 -0800
-Subject: [PATCH 68/87] target: Allow PERSISTENT RESERVE IN for
- non-reservation holder
-
-commit 6816966a8418b980481b4dced7eddd1796b145e8 upstream.
-
-Initiators that aren't the active reservation holder should be able to
-do a PERSISTENT RESERVE IN command in all cases, so add it to the list
-of allowed CDBs in core_scsi3_pr_seq_non_holder().
-
-Signed-off-by: Marco Sanvido <marco at purestorage.com>
-Signed-off-by: Roland Dreier <roland at purestorage.com>
-Signed-off-by: Nicholas Bellinger <nab at linux-iscsi.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/target/target_core_pr.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/target/target_core_pr.c b/drivers/target/target_core_pr.c
-index 4911fe9..9119d92 100644
---- a/drivers/target/target_core_pr.c
-+++ b/drivers/target/target_core_pr.c
-@@ -481,6 +481,7 @@ static int core_scsi3_pr_seq_non_holder(
- case READ_MEDIA_SERIAL_NUMBER:
- case REPORT_LUNS:
- case REQUEST_SENSE:
-+ case PERSISTENT_RESERVE_IN:
- ret = 0; /*/ Allowed CDBs */
- break;
- default:
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0069-target-Correct-sense-key-for-INVALID-FIELD-IN-PARAME.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0069-target-Correct-sense-key-for-INVALID-FIELD-IN-PARAME.patch
deleted file mode 100644
index 6795689..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0069-target-Correct-sense-key-for-INVALID-FIELD-IN-PARAME.patch
+++ /dev/null
@@ -1,69 +0,0 @@
-From ac30c6102b46b25c5fb93c200501f2d913c89129 Mon Sep 17 00:00:00 2001
-From: Roland Dreier <roland at purestorage.com>
-Date: Mon, 9 Jan 2012 17:54:00 -0800
-Subject: [PATCH 69/87] target: Correct sense key for INVALID FIELD IN
- {PARAMETER LIST,CDB}
-
-commit 9fbc8909876a2160044e71d376848973b9bfdc3f upstream.
-
-According to SPC-4, the sense key for commands that are failed with
-INVALID FIELD IN PARAMETER LIST and INVALID FIELD IN CDB should be
-ILLEGAL REQUEST (5h) rather than ABORTED COMMAND (Bh). Without this
-patch, a tcm_loop LUN incorrectly gives:
-
- # sg_raw -r 1 -v /dev/sda 3 1 0 0 ff 0
- Sense Information:
- Fixed format, current; Sense key: Aborted Command
- Additional sense: Invalid field in cdb
- Raw sense data (in hex):
- 70 00 0b 00 00 00 00 0a 00 00 00 00 24 00 00 00
- 00 00
-
-While a real SCSI disk gives:
-
- Sense Information:
- Fixed format, current; Sense key: Illegal Request
- Additional sense: Invalid field in cdb
- Raw sense data (in hex):
- 70 00 05 00 00 00 00 18 00 00 00 00 24 00 00 00
- 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-
-with the main point being that the real disk gives a sense key of
-ILLEGAL REQUEST (5h).
-
-Signed-off-by: Roland Dreier <roland at purestorage.com>
-Signed-off-by: Nicholas Bellinger <nab at linux-iscsi.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/target/target_core_transport.c | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c
-index e87d0eb..4f99d4c 100644
---- a/drivers/target/target_core_transport.c
-+++ b/drivers/target/target_core_transport.c
-@@ -4403,8 +4403,8 @@ int transport_send_check_condition_and_sense(
- /* CURRENT ERROR */
- buffer[offset] = 0x70;
- buffer[offset+SPC_ADD_SENSE_LEN_OFFSET] = 10;
-- /* ABORTED COMMAND */
-- buffer[offset+SPC_SENSE_KEY_OFFSET] = ABORTED_COMMAND;
-+ /* ILLEGAL REQUEST */
-+ buffer[offset+SPC_SENSE_KEY_OFFSET] = ILLEGAL_REQUEST;
- /* INVALID FIELD IN CDB */
- buffer[offset+SPC_ASC_KEY_OFFSET] = 0x24;
- break;
-@@ -4412,8 +4412,8 @@ int transport_send_check_condition_and_sense(
- /* CURRENT ERROR */
- buffer[offset] = 0x70;
- buffer[offset+SPC_ADD_SENSE_LEN_OFFSET] = 10;
-- /* ABORTED COMMAND */
-- buffer[offset+SPC_SENSE_KEY_OFFSET] = ABORTED_COMMAND;
-+ /* ILLEGAL REQUEST */
-+ buffer[offset+SPC_SENSE_KEY_OFFSET] = ILLEGAL_REQUEST;
- /* INVALID FIELD IN PARAMETER LIST */
- buffer[offset+SPC_ASC_KEY_OFFSET] = 0x26;
- break;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0070-target-Add-workaround-for-zero-length-control-CDB-ha.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0070-target-Add-workaround-for-zero-length-control-CDB-ha.patch
deleted file mode 100644
index 3d9616e..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0070-target-Add-workaround-for-zero-length-control-CDB-ha.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From e5fda224c4241fbbf09ef46396e4688d09bd03d6 Mon Sep 17 00:00:00 2001
-From: Nicholas Bellinger <nab at linux-iscsi.org>
-Date: Fri, 13 Jan 2012 12:01:34 -0800
-Subject: [PATCH 70/87] target: Add workaround for zero-length control CDB
- handling
-
-commit 91ec1d3535b2acf12c599045cc19ad9be3c6a47b upstream.
-
-This patch adds a work-around for handling zero allocation length
-control CDBs (type SCF_SCSI_CONTROL_SG_IO_CDB) that was causing an
-OOPs with the following raw calls:
-
- # sg_raw -v /dev/sdd 3 0 0 0 0 0
- # sg_raw -v /dev/sdd 0x1a 0 1 0 0 0
-
-This patch will follow existing zero-length handling for data I/O
-and silently return with GOOD status. This addresses the zero length
-issue, but the proper long-term resolution for handling arbitary
-allocation lengths will be to refactor out data-phase handling in
-individual CDB emulation logic within target_core_cdb.c
-
-Reported-by: Roland Dreier <roland at purestorage.com>
-Signed-off-by: Nicholas Bellinger <nab at linux-iscsi.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/target/target_core_transport.c | 13 +++++++++++++
- 1 file changed, 13 insertions(+)
-
-diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c
-index 4f99d4c..861628e 100644
---- a/drivers/target/target_core_transport.c
-+++ b/drivers/target/target_core_transport.c
-@@ -3701,6 +3701,11 @@ transport_allocate_control_task(struct se_cmd *cmd)
- struct se_task *task;
- unsigned long flags;
-
-+ /* Workaround for handling zero-length control CDBs */
-+ if ((cmd->se_cmd_flags & SCF_SCSI_CONTROL_SG_IO_CDB) &&
-+ !cmd->data_length)
-+ return 0;
-+
- task = transport_generic_get_task(cmd, cmd->data_direction);
- if (!task)
- return -ENOMEM;
-@@ -3772,6 +3777,14 @@ int transport_generic_new_cmd(struct se_cmd *cmd)
- else if (!task_cdbs && (cmd->se_cmd_flags & SCF_SCSI_DATA_SG_IO_CDB)) {
- cmd->t_state = TRANSPORT_COMPLETE;
- atomic_set(&cmd->t_transport_active, 1);
-+
-+ if (cmd->t_task_cdb[0] == REQUEST_SENSE) {
-+ u8 ua_asc = 0, ua_ascq = 0;
-+
-+ core_scsi3_ua_clear_for_request_sense(cmd,
-+ &ua_asc, &ua_ascq);
-+ }
-+
- INIT_WORK(&cmd->work, target_complete_ok_work);
- queue_work(target_completion_wq, &cmd->work);
- return 0;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0071-target-Return-correct-ASC-for-unimplemented-VPD-page.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0071-target-Return-correct-ASC-for-unimplemented-VPD-page.patch
deleted file mode 100644
index 074b7dc..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0071-target-Return-correct-ASC-for-unimplemented-VPD-page.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 46dee097dea0df225b58d525ca0a667f4f83677a Mon Sep 17 00:00:00 2001
-From: Roland Dreier <roland at purestorage.com>
-Date: Tue, 17 Jan 2012 18:00:56 -0800
-Subject: [PATCH 71/87] target: Return correct ASC for unimplemented VPD pages
-
-commit bb1acb2ee038a6c13ee99e0b9fb44dacb4a9de84 upstream.
-
-My draft of SPC-4 says:
-
- If the device server does not implement the requested vital product
- data page, then the command shall be terminated with CHECK CONDITION
- status, with the sense key set to ILLEGAL REQUEST, and the
- additional sense code set to INVALID FIELD IN CDB.
-
-Signed-off-by: Roland Dreier <roland at purestorage.com>
-Signed-off-by: Nicholas Bellinger <nab at linux-iscsi.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/target/target_core_cdb.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/target/target_core_cdb.c b/drivers/target/target_core_cdb.c
-index 2e8c1be..24991f3 100644
---- a/drivers/target/target_core_cdb.c
-+++ b/drivers/target/target_core_cdb.c
-@@ -732,7 +732,7 @@ int target_emulate_inquiry(struct se_task *task)
- }
-
- pr_err("Unknown VPD Code: 0x%02x\n", cdb[2]);
-- cmd->scsi_sense_reason = TCM_UNSUPPORTED_SCSI_OPCODE;
-+ cmd->scsi_sense_reason = TCM_INVALID_CDB_FIELD;
- ret = -EINVAL;
-
- out_unmap:
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0072-target-Fail-INQUIRY-commands-with-EVPD-0-but-PAGE-CO.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0072-target-Fail-INQUIRY-commands-with-EVPD-0-but-PAGE-CO.patch
deleted file mode 100644
index 295b2ad..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0072-target-Fail-INQUIRY-commands-with-EVPD-0-but-PAGE-CO.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 4abb846e9c2c7bb5951f7b90700b20d063005bec Mon Sep 17 00:00:00 2001
-From: Roland Dreier <roland at purestorage.com>
-Date: Tue, 17 Jan 2012 18:00:57 -0800
-Subject: [PATCH 72/87] target: Fail INQUIRY commands with EVPD==0 but PAGE
- CODE!=0
-
-commit bf0053550aebe56f3bb5dd793e9de69238b5b945 upstream.
-
-My draft of SPC-4 says:
-
- If the PAGE CODE field is not set to zero when the EVPD bit is set
- to zero, the command shall be terminated with CHECK CONDITION
- status, with the sense key set to ILLEGAL REQUEST, and the
- additional sense code set to INVALID FIELD IN CDB.
-
-Signed-off-by: Roland Dreier <roland at purestorage.com>
-Signed-off-by: Nicholas Bellinger <nab at linux-iscsi.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/target/target_core_cdb.c | 7 +++++++
- 1 file changed, 7 insertions(+)
-
-diff --git a/drivers/target/target_core_cdb.c b/drivers/target/target_core_cdb.c
-index 24991f3..251e48f 100644
---- a/drivers/target/target_core_cdb.c
-+++ b/drivers/target/target_core_cdb.c
-@@ -701,6 +701,13 @@ int target_emulate_inquiry(struct se_task *task)
- int p, ret;
-
- if (!(cdb[1] & 0x1)) {
-+ if (cdb[2]) {
-+ pr_err("INQUIRY with EVPD==0 but PAGE CODE=%02x\n",
-+ cdb[2]);
-+ cmd->scsi_sense_reason = TCM_INVALID_CDB_FIELD;
-+ return -EINVAL;
-+ }
-+
- ret = target_emulate_inquiry_std(cmd);
- goto out;
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0073-Staging-asus_oled-fix-image-processing.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0073-Staging-asus_oled-fix-image-processing.patch
deleted file mode 100644
index 73cadcd..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0073-Staging-asus_oled-fix-image-processing.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-From ba22cf8591fcdf24760b2e1d413b421025862e19 Mon Sep 17 00:00:00 2001
-From: Pekka Paalanen <pq at iki.fi>
-Date: Sun, 22 Jan 2012 16:33:46 +0200
-Subject: [PATCH 73/87] Staging: asus_oled: fix image processing
-
-commit 635032cb397b396241372fa0ff36ae758e658b23 upstream.
-
-Programming an image was broken, because odev->buf_offs was not advanced
-for val == 0 in append_values(). This regression was introduced in:
-
- commit 1ff12a4aa354bed093a0240d5e6347b1e27601bc
- Author: Kevin A. Granade <kevin.granade at gmail.com>
- Date: Sat Sep 5 01:03:39 2009 -0500
-
- Staging: asus_oled: Cleaned up checkpatch issues.
-
-Fix the image processing by special-casing val == 0.
-
-I have tested this change on an Asus G50V laptop only.
-
-Cc: Jakub Schmidtke <sjakub at gmail.com>
-Cc: Kevin A. Granade <kevin.granade at gmail.com>
-Signed-off-by: Pekka Paalanen <pq at iki.fi>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/staging/asus_oled/asus_oled.c | 10 ++++++++--
- 1 file changed, 8 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/staging/asus_oled/asus_oled.c b/drivers/staging/asus_oled/asus_oled.c
-index 7bb7da7..8894bd5 100644
---- a/drivers/staging/asus_oled/asus_oled.c
-+++ b/drivers/staging/asus_oled/asus_oled.c
-@@ -355,7 +355,14 @@ static void send_data(struct asus_oled_dev *odev)
-
- static int append_values(struct asus_oled_dev *odev, uint8_t val, size_t count)
- {
-- while (count-- > 0 && val) {
-+ odev->last_val = val;
-+
-+ if (val == 0) {
-+ odev->buf_offs += count;
-+ return 0;
-+ }
-+
-+ while (count-- > 0) {
- size_t x = odev->buf_offs % odev->width;
- size_t y = odev->buf_offs / odev->width;
- size_t i;
-@@ -406,7 +413,6 @@ static int append_values(struct asus_oled_dev *odev, uint8_t val, size_t count)
- ;
- }
-
-- odev->last_val = val;
- odev->buf_offs++;
- }
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0074-Staging-asus_oled-fix-NULL-ptr-crash-on-unloading.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0074-Staging-asus_oled-fix-NULL-ptr-crash-on-unloading.patch
deleted file mode 100644
index 0c9dc7d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0074-Staging-asus_oled-fix-NULL-ptr-crash-on-unloading.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-From 03f2f07d9918f0a0c7b91bee69a5c2e22b0c07de Mon Sep 17 00:00:00 2001
-From: Pekka Paalanen <pq at iki.fi>
-Date: Sun, 22 Jan 2012 16:33:47 +0200
-Subject: [PATCH 74/87] Staging: asus_oled: fix NULL-ptr crash on unloading
-
-commit 3589e74595a4332ebf77b5ed006f3c6686071ecd upstream.
-
-Asus_oled triggers the following bug on module unloading:
-
- usbcore: deregistering interface driver asus-oled
- BUG: unable to handle kernel NULL pointer dereference at 0000000000000038
- IP: [<ffffffff8111292b>] sysfs_delete_link+0x30/0x66
-
- Call Trace:
- [<ffffffff81225373>] device_remove_class_symlinks+0x6b/0x70
- [<ffffffff812256a8>] device_del+0x9f/0x1ab
- [<ffffffff812257c5>] device_unregister+0x11/0x1e
- [<ffffffffa000cb82>] asus_oled_disconnect+0x4f/0x9e [asus_oled]
- [<ffffffff81277430>] usb_unbind_interface+0x54/0x103
- [<ffffffff812276c4>] __device_release_driver+0xa2/0xeb
- [<ffffffff81227794>] driver_detach+0x87/0xad
- [<ffffffff812269e9>] bus_remove_driver+0x91/0xc1
- [<ffffffff81227fb4>] driver_unregister+0x66/0x6e
- [<ffffffff812771ed>] usb_deregister+0xbb/0xc4
- [<ffffffffa000ce87>] asus_oled_exit+0x2f/0x31 [asus_oled]
- [<ffffffff81068365>] sys_delete_module+0x1b8/0x21b
- [<ffffffff810ae3de>] ? do_munmap+0x2ef/0x313
- [<ffffffff813699bb>] system_call_fastpath+0x16/0x1b
-
-This is due to an incorrect destruction sequence in asus_oled_exit().
-
-Fix the order, fixes the bug. Tested on an Asus G50V laptop only.
-
-Cc: Jakub Schmidtke <sjakub at gmail.com>
-Signed-off-by: Pekka Paalanen <pq at iki.fi>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/staging/asus_oled/asus_oled.c | 3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
-
-diff --git a/drivers/staging/asus_oled/asus_oled.c b/drivers/staging/asus_oled/asus_oled.c
-index 8894bd5..63bafbb 100644
---- a/drivers/staging/asus_oled/asus_oled.c
-+++ b/drivers/staging/asus_oled/asus_oled.c
-@@ -811,10 +811,9 @@ error:
-
- static void __exit asus_oled_exit(void)
- {
-+ usb_deregister(&oled_driver);
- class_remove_file(oled_class, &class_attr_version.attr);
- class_destroy(oled_class);
--
-- usb_deregister(&oled_driver);
- }
-
- module_init(asus_oled_init);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0075-staging-r8712u-Add-new-Sitecom-UsB-ID.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0075-staging-r8712u-Add-new-Sitecom-UsB-ID.patch
deleted file mode 100644
index bd3df9a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0075-staging-r8712u-Add-new-Sitecom-UsB-ID.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 1ef65b2bca9a70b4f1d149f5c51dbeb0f39b50b8 Mon Sep 17 00:00:00 2001
-From: Larry Finger <Larry.Finger at lwfinger.net>
-Date: Sat, 7 Jan 2012 10:07:03 -0600
-Subject: [PATCH 75/87] staging: r8712u: Add new Sitecom UsB ID
-
-commit 1793bf1deddc8ce25dc41925d5dbe64536c841b6 upstream.
-
-Add USB ID for SITECOM WLA-1000 V1 001 WLAN
-
-Reported-and-tested-by: Roland Gruber <post at rolandgruber.de>
-Reported-and-tested-by: Dario Lucia <dario.lucia at gmail.com>
-Signed-off-by: Larry Finger <Larry.Finger at lwfinger.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/staging/rtl8712/usb_intf.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/staging/rtl8712/usb_intf.c b/drivers/staging/rtl8712/usb_intf.c
-index 5385da2..8de0c80 100644
---- a/drivers/staging/rtl8712/usb_intf.c
-+++ b/drivers/staging/rtl8712/usb_intf.c
-@@ -89,6 +89,7 @@ static struct usb_device_id rtl871x_usb_id_tbl[] = {
- {USB_DEVICE(0x0DF6, 0x0045)},
- {USB_DEVICE(0x0DF6, 0x0059)}, /* 11n mode disable */
- {USB_DEVICE(0x0DF6, 0x004B)},
-+ {USB_DEVICE(0x0DF6, 0x005B)},
- {USB_DEVICE(0x0DF6, 0x005D)},
- {USB_DEVICE(0x0DF6, 0x0063)},
- /* Sweex */
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0076-staging-r8712u-Use-asynchronous-firmware-loading.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0076-staging-r8712u-Use-asynchronous-firmware-loading.patch
deleted file mode 100644
index ae66b2c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0076-staging-r8712u-Use-asynchronous-firmware-loading.patch
+++ /dev/null
@@ -1,285 +0,0 @@
-From b4473ac7f39d094ae718360d87872faa2a1662cb Mon Sep 17 00:00:00 2001
-From: Larry Finger <Larry.Finger at lwfinger.net>
-Date: Sun, 5 Feb 2012 21:12:26 -0600
-Subject: [PATCH 76/87] staging: r8712u: Use asynchronous firmware loading
-
-commit 8c213fa59199f9673d66970d6940fa093186642f upstream.
-
-In https://bugs.archlinux.org/task/27996, failure of driver r8712u is
-reported, with a timeout during module loading due to synchronous loading
-of the firmware. The code now uses request_firmware_nowait().
-
-Signed-off-by: Larry Finger <Larry.Finger at lwfinger.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/staging/rtl8712/drv_types.h | 7 ++++
- drivers/staging/rtl8712/hal_init.c | 62 +++++++++++++++++++++++----------
- drivers/staging/rtl8712/os_intfs.c | 14 ++++++--
- drivers/staging/rtl8712/rtl8712_hal.h | 1 +
- drivers/staging/rtl8712/usb_intf.c | 9 +++--
- 5 files changed, 68 insertions(+), 25 deletions(-)
-
-diff --git a/drivers/staging/rtl8712/drv_types.h b/drivers/staging/rtl8712/drv_types.h
-index 9b5d771..ed85b44 100644
---- a/drivers/staging/rtl8712/drv_types.h
-+++ b/drivers/staging/rtl8712/drv_types.h
-@@ -37,6 +37,8 @@ struct _adapter;
- #include "wlan_bssdef.h"
- #include "rtl8712_spec.h"
- #include "rtl8712_hal.h"
-+#include <linux/mutex.h>
-+#include <linux/completion.h>
-
- enum _NIC_VERSION {
- RTL8711_NIC,
-@@ -168,6 +170,7 @@ struct _adapter {
- s32 bSurpriseRemoved;
- u32 IsrContent;
- u32 ImrContent;
-+ bool fw_found;
- u8 EepromAddressSize;
- u8 hw_init_completed;
- struct task_struct *cmdThread;
-@@ -184,6 +187,10 @@ struct _adapter {
- _workitem wkFilterRxFF0;
- u8 blnEnableRxFF0Filter;
- spinlock_t lockRxFF0Filter;
-+ const struct firmware *fw;
-+ struct usb_interface *pusb_intf;
-+ struct mutex mutex_start;
-+ struct completion rtl8712_fw_ready;
- };
-
- static inline u8 *myid(struct eeprom_priv *peepriv)
-diff --git a/drivers/staging/rtl8712/hal_init.c b/drivers/staging/rtl8712/hal_init.c
-index d0029aa..cc893c0 100644
---- a/drivers/staging/rtl8712/hal_init.c
-+++ b/drivers/staging/rtl8712/hal_init.c
-@@ -42,29 +42,56 @@
- #define FWBUFF_ALIGN_SZ 512
- #define MAX_DUMP_FWSZ 49152 /*default = 49152 (48k)*/
-
--static u32 rtl871x_open_fw(struct _adapter *padapter, void **pphfwfile_hdl,
-- const u8 **ppmappedfw)
-+static void rtl871x_load_fw_cb(const struct firmware *firmware, void *context)
- {
-+ struct _adapter *padapter = context;
-+
-+ complete(&padapter->rtl8712_fw_ready);
-+ if (!firmware) {
-+ struct usb_device *udev = padapter->dvobjpriv.pusbdev;
-+ struct usb_interface *pusb_intf = padapter->pusb_intf;
-+ printk(KERN_ERR "r8712u: Firmware request failed\n");
-+ padapter->fw_found = false;
-+ usb_put_dev(udev);
-+ usb_set_intfdata(pusb_intf, NULL);
-+ return;
-+ }
-+ padapter->fw = firmware;
-+ padapter->fw_found = true;
-+ /* firmware available - start netdev */
-+ register_netdev(padapter->pnetdev);
-+}
-+
-+static const char firmware_file[] = "rtlwifi/rtl8712u.bin";
-+
-+int rtl871x_load_fw(struct _adapter *padapter)
-+{
-+ struct device *dev = &padapter->dvobjpriv.pusbdev->dev;
- int rc;
-- const char firmware_file[] = "rtlwifi/rtl8712u.bin";
-- const struct firmware **praw = (const struct firmware **)
-- (pphfwfile_hdl);
-- struct dvobj_priv *pdvobjpriv = (struct dvobj_priv *)
-- (&padapter->dvobjpriv);
-- struct usb_device *pusbdev = pdvobjpriv->pusbdev;
-
-+ init_completion(&padapter->rtl8712_fw_ready);
- printk(KERN_INFO "r8712u: Loading firmware from \"%s\"\n",
- firmware_file);
-- rc = request_firmware(praw, firmware_file, &pusbdev->dev);
-- if (rc < 0) {
-- printk(KERN_ERR "r8712u: Unable to load firmware\n");
-- printk(KERN_ERR "r8712u: Install latest linux-firmware\n");
-+ rc = request_firmware_nowait(THIS_MODULE, 1, firmware_file, dev,
-+ GFP_KERNEL, padapter, rtl871x_load_fw_cb);
-+ if (rc)
-+ printk(KERN_ERR "r8712u: Firmware request error %d\n", rc);
-+ return rc;
-+}
-+MODULE_FIRMWARE("rtlwifi/rtl8712u.bin");
-+
-+static u32 rtl871x_open_fw(struct _adapter *padapter, const u8 **ppmappedfw)
-+{
-+ const struct firmware **praw = &padapter->fw;
-+
-+ if (padapter->fw->size > 200000) {
-+ printk(KERN_ERR "r8172u: Badfw->size of %d\n",
-+ (int)padapter->fw->size);
- return 0;
- }
- *ppmappedfw = (u8 *)((*praw)->data);
- return (*praw)->size;
- }
--MODULE_FIRMWARE("rtlwifi/rtl8712u.bin");
-
- static void fill_fwpriv(struct _adapter *padapter, struct fw_priv *pfwpriv)
- {
-@@ -142,18 +169,17 @@ static u8 rtl8712_dl_fw(struct _adapter *padapter)
- uint dump_imem_sz, imem_sz, dump_emem_sz, emem_sz; /* max = 49152; */
- struct fw_hdr fwhdr;
- u32 ulfilelength; /* FW file size */
-- void *phfwfile_hdl = NULL;
- const u8 *pmappedfw = NULL;
- u8 *ptmpchar = NULL, *ppayload, *ptr;
- struct tx_desc *ptx_desc;
- u32 txdscp_sz = sizeof(struct tx_desc);
- u8 ret = _FAIL;
-
-- ulfilelength = rtl871x_open_fw(padapter, &phfwfile_hdl, &pmappedfw);
-+ ulfilelength = rtl871x_open_fw(padapter, &pmappedfw);
- if (pmappedfw && (ulfilelength > 0)) {
- update_fwhdr(&fwhdr, pmappedfw);
- if (chk_fwhdr(&fwhdr, ulfilelength) == _FAIL)
-- goto firmware_rel;
-+ return ret;
- fill_fwpriv(padapter, &fwhdr.fwpriv);
- /* firmware check ok */
- maxlen = (fwhdr.img_IMEM_size > fwhdr.img_SRAM_size) ?
-@@ -161,7 +187,7 @@ static u8 rtl8712_dl_fw(struct _adapter *padapter)
- maxlen += txdscp_sz;
- ptmpchar = _malloc(maxlen + FWBUFF_ALIGN_SZ);
- if (ptmpchar == NULL)
-- goto firmware_rel;
-+ return ret;
-
- ptx_desc = (struct tx_desc *)(ptmpchar + FWBUFF_ALIGN_SZ -
- ((addr_t)(ptmpchar) & (FWBUFF_ALIGN_SZ - 1)));
-@@ -297,8 +323,6 @@ static u8 rtl8712_dl_fw(struct _adapter *padapter)
-
- exit_fail:
- kfree(ptmpchar);
--firmware_rel:
-- release_firmware((struct firmware *)phfwfile_hdl);
- return ret;
- }
-
-diff --git a/drivers/staging/rtl8712/os_intfs.c b/drivers/staging/rtl8712/os_intfs.c
-index 9a75c6d..98a3d68 100644
---- a/drivers/staging/rtl8712/os_intfs.c
-+++ b/drivers/staging/rtl8712/os_intfs.c
-@@ -31,6 +31,7 @@
- #include <linux/module.h>
- #include <linux/init.h>
- #include <linux/kthread.h>
-+#include <linux/firmware.h>
- #include "osdep_service.h"
- #include "drv_types.h"
- #include "xmit_osdep.h"
-@@ -264,12 +265,12 @@ static void start_drv_timers(struct _adapter *padapter)
- void r8712_stop_drv_timers(struct _adapter *padapter)
- {
- _cancel_timer_ex(&padapter->mlmepriv.assoc_timer);
-- _cancel_timer_ex(&padapter->mlmepriv.sitesurveyctrl.
-- sitesurvey_ctrl_timer);
- _cancel_timer_ex(&padapter->securitypriv.tkip_timer);
- _cancel_timer_ex(&padapter->mlmepriv.scan_to_timer);
- _cancel_timer_ex(&padapter->mlmepriv.dhcp_timer);
- _cancel_timer_ex(&padapter->mlmepriv.wdg_timer);
-+ _cancel_timer_ex(&padapter->mlmepriv.sitesurveyctrl.
-+ sitesurvey_ctrl_timer);
- }
-
- static u8 init_default_value(struct _adapter *padapter)
-@@ -347,7 +348,8 @@ u8 r8712_free_drv_sw(struct _adapter *padapter)
- r8712_free_mlme_priv(&padapter->mlmepriv);
- r8712_free_io_queue(padapter);
- _free_xmit_priv(&padapter->xmitpriv);
-- _r8712_free_sta_priv(&padapter->stapriv);
-+ if (padapter->fw_found)
-+ _r8712_free_sta_priv(&padapter->stapriv);
- _r8712_free_recv_priv(&padapter->recvpriv);
- mp871xdeinit(padapter);
- if (pnetdev)
-@@ -388,6 +390,7 @@ static int netdev_open(struct net_device *pnetdev)
- {
- struct _adapter *padapter = (struct _adapter *)netdev_priv(pnetdev);
-
-+ mutex_lock(&padapter->mutex_start);
- if (padapter->bup == false) {
- padapter->bDriverStopped = false;
- padapter->bSurpriseRemoved = false;
-@@ -435,11 +438,13 @@ static int netdev_open(struct net_device *pnetdev)
- /* start driver mlme relation timer */
- start_drv_timers(padapter);
- padapter->ledpriv.LedControlHandler(padapter, LED_CTL_NO_LINK);
-+ mutex_unlock(&padapter->mutex_start);
- return 0;
- netdev_open_error:
- padapter->bup = false;
- netif_carrier_off(pnetdev);
- netif_stop_queue(pnetdev);
-+ mutex_unlock(&padapter->mutex_start);
- return -1;
- }
-
-@@ -473,6 +478,9 @@ static int netdev_close(struct net_device *pnetdev)
- r8712_free_network_queue(padapter);
- /* The interface is no longer Up: */
- padapter->bup = false;
-+ release_firmware(padapter->fw);
-+ /* never exit with a firmware callback pending */
-+ wait_for_completion(&padapter->rtl8712_fw_ready);
- return 0;
- }
-
-diff --git a/drivers/staging/rtl8712/rtl8712_hal.h b/drivers/staging/rtl8712/rtl8712_hal.h
-index 665e718..d19865a 100644
---- a/drivers/staging/rtl8712/rtl8712_hal.h
-+++ b/drivers/staging/rtl8712/rtl8712_hal.h
-@@ -145,5 +145,6 @@ struct hal_priv {
- };
-
- uint rtl8712_hal_init(struct _adapter *padapter);
-+int rtl871x_load_fw(struct _adapter *padapter);
-
- #endif
-diff --git a/drivers/staging/rtl8712/usb_intf.c b/drivers/staging/rtl8712/usb_intf.c
-index 8de0c80..9bade18 100644
---- a/drivers/staging/rtl8712/usb_intf.c
-+++ b/drivers/staging/rtl8712/usb_intf.c
-@@ -390,6 +390,7 @@ static int r871xu_drv_init(struct usb_interface *pusb_intf,
- pdvobjpriv = &padapter->dvobjpriv;
- pdvobjpriv->padapter = padapter;
- padapter->dvobjpriv.pusbdev = udev;
-+ padapter->pusb_intf = pusb_intf;
- usb_set_intfdata(pusb_intf, pnetdev);
- SET_NETDEV_DEV(pnetdev, &pusb_intf->dev);
- /* step 2. */
-@@ -596,10 +597,11 @@ static int r871xu_drv_init(struct usb_interface *pusb_intf,
- "%pM\n", mac);
- memcpy(pnetdev->dev_addr, mac, ETH_ALEN);
- }
-- /* step 6. Tell the network stack we exist */
-- if (register_netdev(pnetdev) != 0)
-+ /* step 6. Load the firmware asynchronously */
-+ if (rtl871x_load_fw(padapter))
- goto error;
- spin_lock_init(&padapter->lockRxFF0Filter);
-+ mutex_init(&padapter->mutex_start);
- return 0;
- error:
- usb_put_dev(udev);
-@@ -630,7 +632,8 @@ static void r871xu_dev_remove(struct usb_interface *pusb_intf)
- flush_scheduled_work();
- udelay(1);
- /*Stop driver mlme relation timer */
-- r8712_stop_drv_timers(padapter);
-+ if (padapter->fw_found)
-+ r8712_stop_drv_timers(padapter);
- r871x_dev_unload(padapter);
- r8712_free_drv_sw(padapter);
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0077-usb-ch9.h-usb_endpoint_maxp-uses-__le16_to_cpu.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0077-usb-ch9.h-usb_endpoint_maxp-uses-__le16_to_cpu.patch
deleted file mode 100644
index 2d6e9bc..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0077-usb-ch9.h-usb_endpoint_maxp-uses-__le16_to_cpu.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 230ad2431790484aa5b315e3b86bf22106f4fffc Mon Sep 17 00:00:00 2001
-From: Kuninori Morimoto <kuninori.morimoto.gx at renesas.com>
-Date: Tue, 31 Jan 2012 16:43:50 -0800
-Subject: [PATCH 77/87] usb: ch9.h: usb_endpoint_maxp() uses __le16_to_cpu()
-
-commit 9c0a835a9d9aed41bcf9c287f5069133a6e2a87b upstream.
-
-The usb/ch9.h will be installed to /usr/include/linux,
-and be used from user space.
-But le16_to_cpu() is only defined for kernel code.
-Without this patch, user space compile will be broken.
-Special thanks to Stefan Becker
-
-Reported-by: Stefan Becker <chemobejk at gmail.com>
-Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx at renesas.com>
-Signed-off-by: Felipe Balbi <balbi at ti.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- include/linux/usb/ch9.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/include/linux/usb/ch9.h b/include/linux/usb/ch9.h
-index 61b2905..3b6f628 100644
---- a/include/linux/usb/ch9.h
-+++ b/include/linux/usb/ch9.h
-@@ -589,7 +589,7 @@ static inline int usb_endpoint_is_isoc_out(
- */
- static inline int usb_endpoint_maxp(const struct usb_endpoint_descriptor *epd)
- {
-- return le16_to_cpu(epd->wMaxPacketSize);
-+ return __le16_to_cpu(epd->wMaxPacketSize);
- }
-
- /*-------------------------------------------------------------------------*/
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0078-usb-gadget-zero-fix-bug-in-loopback-autoresume-handl.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0078-usb-gadget-zero-fix-bug-in-loopback-autoresume-handl.patch
deleted file mode 100644
index 084163d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0078-usb-gadget-zero-fix-bug-in-loopback-autoresume-handl.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From aae47336ab9dd1a63912f136052ed664b3dd5a5f Mon Sep 17 00:00:00 2001
-From: Timo Juhani Lindfors <timo.lindfors at iki.fi>
-Date: Sun, 29 Jan 2012 16:12:13 +0200
-Subject: [PATCH 78/87] usb: gadget: zero: fix bug in loopback autoresume
- handling
-
-commit 683da59d7b8ae04891636d4b59893cd4e9b0b7e5 upstream.
-
-ab943a2e125b (USB: gadget: gadget zero uses new suspend/resume hooks)
-introduced a copy-paste error where f_loopback.c writes to a variable
-declared in f_sourcesink.c. This prevents one from creating gadgets
-that only have a loopback function.
-
-Signed-off-by: Timo Juhani Lindfors <timo.lindfors at iki.fi>
-Signed-off-by: Felipe Balbi <balbi at ti.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/gadget/f_loopback.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/usb/gadget/f_loopback.c b/drivers/usb/gadget/f_loopback.c
-index 6d87f28..2c0cd82 100644
---- a/drivers/usb/gadget/f_loopback.c
-+++ b/drivers/usb/gadget/f_loopback.c
-@@ -418,7 +418,7 @@ int __init loopback_add(struct usb_composite_dev *cdev, bool autoresume)
-
- /* support autoresume for remote wakeup testing */
- if (autoresume)
-- sourcesink_driver.bmAttributes |= USB_CONFIG_ATT_WAKEUP;
-+ loopback_driver.bmAttributes |= USB_CONFIG_ATT_WAKEUP;
-
- /* support OTG systems */
- if (gadget_is_otg(cdev->gadget)) {
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0079-usb-Skip-PCI-USB-quirk-handling-for-Netlogic-XLP.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0079-usb-Skip-PCI-USB-quirk-handling-for-Netlogic-XLP.patch
deleted file mode 100644
index a38c8c9..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0079-usb-Skip-PCI-USB-quirk-handling-for-Netlogic-XLP.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From 295bd0424c6399e39755a153cabc6a273f384bbb Mon Sep 17 00:00:00 2001
-From: Jayachandran C <jayachandranc at netlogicmicro.com>
-Date: Fri, 27 Jan 2012 20:27:32 +0530
-Subject: [PATCH 79/87] usb: Skip PCI USB quirk handling for Netlogic XLP
-
-commit e4436a7c17ac2b5e138f93f83a541cba9b311685 upstream.
-
-The Netlogic XLP SoC's on-chip USB controller appears as a PCI
-USB device, but does not need the EHCI/OHCI handoff done in
-usb/host/pci-quirks.c.
-
-The pci-quirks.c is enabled for all vendors and devices, and is
-enabled if USB and PCI are configured.
-
-If we do not skip the qurik handling on XLP, the readb() call in
-ehci_bios_handoff() will cause a crash since byte access is not
-supported for EHCI registers in XLP.
-
-Signed-off-by: Jayachandran C <jayachandranc at netlogicmicro.com>
-Acked-by: Alan Stern <stern at rowland.harvard.edu>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/host/pci-quirks.c | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-diff --git a/drivers/usb/host/pci-quirks.c b/drivers/usb/host/pci-quirks.c
-index caf8742..ac53a66 100644
---- a/drivers/usb/host/pci-quirks.c
-+++ b/drivers/usb/host/pci-quirks.c
-@@ -867,6 +867,12 @@ hc_init:
-
- static void __devinit quirk_usb_early_handoff(struct pci_dev *pdev)
- {
-+ /* Skip Netlogic mips SoC's internal PCI USB controller.
-+ * This device does not need/support EHCI/OHCI handoff
-+ */
-+ if (pdev->vendor == 0x184e) /* vendor Netlogic */
-+ return;
-+
- if (pdev->class == PCI_CLASS_SERIAL_USB_UHCI)
- quirk_usb_handoff_uhci(pdev);
- else if (pdev->class == PCI_CLASS_SERIAL_USB_OHCI)
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0080-USB-usbserial-add-new-PID-number-0xa951-to-the-ftdi-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0080-USB-usbserial-add-new-PID-number-0xa951-to-the-ftdi-.patch
deleted file mode 100644
index 8ea6be5..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0080-USB-usbserial-add-new-PID-number-0xa951-to-the-ftdi-.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From c3c9a3de412eeb394594b3a3394c01f24e59614b Mon Sep 17 00:00:00 2001
-From: Milan Kocian <milon at wq.cz>
-Date: Fri, 3 Feb 2012 14:28:00 +0100
-Subject: [PATCH 80/87] USB: usbserial: add new PID number (0xa951) to the
- ftdi driver
-
-commit 90451e6973a5da155c6f315a409ca0a8d3ce6b76 upstream.
-
-Signed-off-by: Milan Kocian <milon at wq.cz>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/serial/ftdi_sio.c | 1 +
- drivers/usb/serial/ftdi_sio_ids.h | 7 +++++++
- 2 files changed, 8 insertions(+)
-
-diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
-index 058b92c..f030471 100644
---- a/drivers/usb/serial/ftdi_sio.c
-+++ b/drivers/usb/serial/ftdi_sio.c
-@@ -839,6 +839,7 @@ static struct usb_device_id id_table_combined [] = {
- { USB_DEVICE(FTDI_VID, FTDI_SCIENCESCOPE_LOGBOOKML_PID) },
- { USB_DEVICE(FTDI_VID, FTDI_SCIENCESCOPE_LS_LOGBOOK_PID) },
- { USB_DEVICE(FTDI_VID, FTDI_SCIENCESCOPE_HS_LOGBOOK_PID) },
-+ { USB_DEVICE(FTDI_VID, FTDI_CINTERION_MC55I_PID) },
- { USB_DEVICE(FTDI_VID, FTDI_DOTEC_PID) },
- { USB_DEVICE(QIHARDWARE_VID, MILKYMISTONE_JTAGSERIAL_PID),
- .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
-diff --git a/drivers/usb/serial/ftdi_sio_ids.h b/drivers/usb/serial/ftdi_sio_ids.h
-index 76d4f31..4eb7715 100644
---- a/drivers/usb/serial/ftdi_sio_ids.h
-+++ b/drivers/usb/serial/ftdi_sio_ids.h
-@@ -1187,3 +1187,10 @@
- */
- /* ZigBee controller */
- #define FTDI_RF_R106 0x8A28
-+
-+/*
-+ * Product: HCP HIT GPRS modem
-+ * Manufacturer: HCP d.o.o.
-+ * ATI command output: Cinterion MC55i
-+ */
-+#define FTDI_CINTERION_MC55I_PID 0xA951
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0081-USB-add-new-zte-3g-dongle-s-pid-to-option.c.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0081-USB-add-new-zte-3g-dongle-s-pid-to-option.c.patch
deleted file mode 100644
index e93ecf5..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0081-USB-add-new-zte-3g-dongle-s-pid-to-option.c.patch
+++ /dev/null
@@ -1,181 +0,0 @@
-From 49c80982027de2eabd50b86747d4350b17576d2f Mon Sep 17 00:00:00 2001
-From: Rui li <li.rui27 at zte.com.cn>
-Date: Tue, 31 Jan 2012 15:27:33 +0800
-Subject: [PATCH 81/87] USB: add new zte 3g-dongle's pid to option.c
-
-commit 1608ea5f4b5d6262cd6e808839491cfb2a67405a upstream.
-
-As ZTE have and will use more pid for new products this year,
-so we need to add some new zte 3g-dongle's pid on option.c ,
-and delete one pid 0x0154 because it use for mass-storage port.
-
-Signed-off-by: Rui li <li.rui27 at zte.com.cn>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/serial/option.c | 129 ++++++++++++++++++++++++++++++++++++++++++-
- 1 file changed, 128 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
-index 2a9ed6e..338d082 100644
---- a/drivers/usb/serial/option.c
-+++ b/drivers/usb/serial/option.c
-@@ -855,6 +855,18 @@ static const struct usb_device_id option_ids[] = {
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0083, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0086, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0087, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0088, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0089, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0090, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0091, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0092, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0093, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0094, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0095, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0096, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0097, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0098, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0099, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0104, 0xff, 0xff, 0xff),
- .driver_info = (kernel_ulong_t)&net_intf4_blacklist },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0105, 0xff, 0xff, 0xff) },
-@@ -883,7 +895,6 @@ static const struct usb_device_id option_ids[] = {
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0151, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0152, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0153, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0154, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0155, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0156, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0157, 0xff, 0xff, 0xff) },
-@@ -892,6 +903,12 @@ static const struct usb_device_id option_ids[] = {
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0160, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0161, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0162, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0164, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0165, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0168, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0170, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0176, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0178, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1008, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1010, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1012, 0xff, 0xff, 0xff) },
-@@ -1066,6 +1083,116 @@ static const struct usb_device_id option_ids[] = {
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1298, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1299, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1300, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1401, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1402, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1403, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1404, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1405, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1406, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1407, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1408, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1409, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1410, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1411, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1412, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1413, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1414, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1415, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1416, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1417, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1418, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1419, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1420, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1421, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1422, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1423, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1424, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1425, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1426, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1427, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1428, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1429, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1430, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1431, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1432, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1433, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1434, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1435, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1436, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1437, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1438, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1439, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1440, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1441, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1442, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1443, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1444, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1445, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1446, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1447, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1448, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1449, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1450, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1451, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1452, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1453, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1454, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1455, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1456, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1457, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1458, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1459, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1460, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1461, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1462, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1463, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1464, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1465, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1466, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1467, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1468, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1469, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1470, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1471, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1472, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1473, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1474, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1475, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1476, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1477, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1478, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1479, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1480, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1481, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1482, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1483, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1484, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1485, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1486, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1487, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1488, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1489, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1490, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1491, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1492, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1493, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1494, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1495, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1496, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1497, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1498, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1499, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1500, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1501, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1502, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1503, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1504, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1505, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1506, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1507, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1508, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1509, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1510, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0014, 0xff, 0xff, 0xff) }, /* ZTE CDMA products */
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0027, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0059, 0xff, 0xff, 0xff) },
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0082-zcache-Set-SWIZ_BITS-to-8-to-reduce-tmem-bucket-lock.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0082-zcache-Set-SWIZ_BITS-to-8-to-reduce-tmem-bucket-lock.patch
deleted file mode 100644
index 398a7e7..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0082-zcache-Set-SWIZ_BITS-to-8-to-reduce-tmem-bucket-lock.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From c69c01371c7d6002afb733f458955943c5a1bb6a Mon Sep 17 00:00:00 2001
-From: Dan Magenheimer <dan.magenheimer at oracle.com>
-Date: Mon, 23 Jan 2012 16:52:20 -0500
-Subject: [PATCH 82/87] zcache: Set SWIZ_BITS to 8 to reduce tmem bucket lock
- contention.
-
-commit e8b4553457e78bcff90f70a31212a40a8fd4f0db upstream.
-
-SWIZ_BITS > 8 results in a much larger number of "tmem_obj"
-allocations, likely one per page-placed-in-frontswap. The
-tmem_obj is not huge (roughly 100 bytes), but it is large
-enough to add a not-insignificant memory overhead to zcache.
-
-The SWIZ_BITS=8 will get roughly the same lock contention
-without the space wastage.
-
-The effect of SWIZ_BITS can be thought of as "2^SWIZ_BITS is
-the number of unique oids that be generated" (This concept is
-limited to frontswap's use of tmem).
-
-Acked-by: Seth Jennings <sjenning at linux.vnet.ibm.com>
-Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk at oracle.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/staging/zcache/zcache-main.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/staging/zcache/zcache-main.c b/drivers/staging/zcache/zcache-main.c
-index 56c1f9c..d3a8e67 100644
---- a/drivers/staging/zcache/zcache-main.c
-+++ b/drivers/staging/zcache/zcache-main.c
-@@ -1782,9 +1782,9 @@ static int zcache_frontswap_poolid = -1;
- * Swizzling increases objects per swaptype, increasing tmem concurrency
- * for heavy swaploads. Later, larger nr_cpus -> larger SWIZ_BITS
- * Setting SWIZ_BITS to 27 basically reconstructs the swap entry from
-- * frontswap_get_page()
-+ * frontswap_get_page(), but has side-effects. Hence using 8.
- */
--#define SWIZ_BITS 27
-+#define SWIZ_BITS 8
- #define SWIZ_MASK ((1 << SWIZ_BITS) - 1)
- #define _oswiz(_type, _ind) ((_type << SWIZ_BITS) | (_ind & SWIZ_MASK))
- #define iswiz(_ind) (_ind >> SWIZ_BITS)
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0083-zcache-fix-deadlock-condition.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0083-zcache-fix-deadlock-condition.patch
deleted file mode 100644
index 35a9e26..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0083-zcache-fix-deadlock-condition.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From 99725fe4821eb426b92b7c0bbdedeb30efc9f4f0 Mon Sep 17 00:00:00 2001
-From: Dan Magenheimer <dan.magenheimer at oracle.com>
-Date: Wed, 25 Jan 2012 14:32:51 -0800
-Subject: [PATCH 83/87] zcache: fix deadlock condition
-
-commit 9256a4789be3dae37d00924c03546ba7958ea5a3 upstream.
-
-I discovered this deadlock condition awhile ago working on RAMster
-but it affects zcache as well. The list spinlock must be
-locked prior to the page spinlock and released after. As
-a result, the page copy must also be done while the locks are held.
-
-Applies to 3.2. Konrad, please push (via GregKH?)...
-this is definitely a bug fix so need not be pushed during
-a -rc0 window.
-
-Signed-off-by: Dan Magenheimer <dan.magenheimer at oracle.com>
-Acked-by: Konrad Rzeszutek Wilk <konrad.wilk at oracle.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/staging/zcache/zcache-main.c | 7 +++----
- 1 file changed, 3 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/staging/zcache/zcache-main.c b/drivers/staging/zcache/zcache-main.c
-index d3a8e67..f5e469d 100644
---- a/drivers/staging/zcache/zcache-main.c
-+++ b/drivers/staging/zcache/zcache-main.c
-@@ -358,8 +358,8 @@ static struct zbud_hdr *zbud_create(uint16_t client_id, uint16_t pool_id,
- if (unlikely(zbpg == NULL))
- goto out;
- /* ok, have a page, now compress the data before taking locks */
-- spin_lock(&zbpg->lock);
- spin_lock(&zbud_budlists_spinlock);
-+ spin_lock(&zbpg->lock);
- list_add_tail(&zbpg->bud_list, &zbud_unbuddied[nchunks].list);
- zbud_unbuddied[nchunks].count++;
- zh = &zbpg->buddy[0];
-@@ -389,12 +389,11 @@ init_zh:
- zh->oid = *oid;
- zh->pool_id = pool_id;
- zh->client_id = client_id;
-- /* can wait to copy the data until the list locks are dropped */
-- spin_unlock(&zbud_budlists_spinlock);
--
- to = zbud_data(zh, size);
- memcpy(to, cdata, size);
- spin_unlock(&zbpg->lock);
-+ spin_unlock(&zbud_budlists_spinlock);
-+
- zbud_cumul_chunk_counts[nchunks]++;
- atomic_inc(&zcache_zbud_curr_zpages);
- zcache_zbud_cumul_zpages++;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0084-mmc-cb710-core-Add-missing-spin_lock_init-for-irq_lo.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0084-mmc-cb710-core-Add-missing-spin_lock_init-for-irq_lo.patch
deleted file mode 100644
index 6561769..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0084-mmc-cb710-core-Add-missing-spin_lock_init-for-irq_lo.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From ef3744aa0e9e51a6d484d56336fba11e8c52ca76 Mon Sep 17 00:00:00 2001
-From: Axel Lin <axel.lin at gmail.com>
-Date: Wed, 1 Feb 2012 12:31:47 +0800
-Subject: [PATCH 84/87] mmc: cb710 core: Add missing spin_lock_init for
- irq_lock of struct cb710_chip
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit b5266ea675c5a041e2852c7ccec4cf2d4f5e0cf4 upstream.
-
-Signed-off-by: Axel Lin <axel.lin at gmail.com>
-Acked-by: Michał Mirosław <mirq-linux at rere.qmqm.pl>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/misc/cb710/core.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/misc/cb710/core.c b/drivers/misc/cb710/core.c
-index 68cd05b..85cc771 100644
---- a/drivers/misc/cb710/core.c
-+++ b/drivers/misc/cb710/core.c
-@@ -245,6 +245,7 @@ static int __devinit cb710_probe(struct pci_dev *pdev,
- if (err)
- return err;
-
-+ spin_lock_init(&chip->irq_lock);
- chip->pdev = pdev;
- chip->iobase = pcim_iomap_table(pdev)[0];
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0085-powernow-k8-Avoid-Pstate-MSR-accesses-on-systems-sup.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0085-powernow-k8-Avoid-Pstate-MSR-accesses-on-systems-sup.patch
deleted file mode 100644
index f1b40fb..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0085-powernow-k8-Avoid-Pstate-MSR-accesses-on-systems-sup.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From 525694bfdb207144d8c8789ea1b689817b465e26 Mon Sep 17 00:00:00 2001
-From: Andreas Herrmann <andreas.herrmann3 at amd.com>
-Date: Fri, 6 Jan 2012 15:56:31 +0100
-Subject: [PATCH 85/87] powernow-k8: Avoid Pstate MSR accesses on systems
- supporting CPB
-
-commit 201bf0f129e1715a33568d1563d9a75b840ab4d3 upstream.
-
-Due to CPB we can't directly map SW Pstates to Pstate MSRs. Get rid of
-the paranoia check. (assuming that the ACPI Pstate information is
-correct.)
-
-Signed-off-by: Andreas Herrmann <andreas.herrmann3 at amd.com>
-Signed-off-by: Dave Jones <davej at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/cpufreq/powernow-k8.c | 19 ++++++++++---------
- 1 file changed, 10 insertions(+), 9 deletions(-)
-
-diff --git a/drivers/cpufreq/powernow-k8.c b/drivers/cpufreq/powernow-k8.c
-index bce576d..e0329f9 100644
---- a/drivers/cpufreq/powernow-k8.c
-+++ b/drivers/cpufreq/powernow-k8.c
-@@ -926,23 +926,24 @@ static int fill_powernow_table_pstate(struct powernow_k8_data *data,
- invalidate_entry(powernow_table, i);
- continue;
- }
-- rdmsr(MSR_PSTATE_DEF_BASE + index, lo, hi);
-- if (!(hi & HW_PSTATE_VALID_MASK)) {
-- pr_debug("invalid pstate %d, ignoring\n", index);
-- invalidate_entry(powernow_table, i);
-- continue;
-- }
--
-- powernow_table[i].index = index;
--
- /* Frequency may be rounded for these */
- if ((boot_cpu_data.x86 == 0x10 && boot_cpu_data.x86_model < 10)
- || boot_cpu_data.x86 == 0x11) {
-+
-+ rdmsr(MSR_PSTATE_DEF_BASE + index, lo, hi);
-+ if (!(hi & HW_PSTATE_VALID_MASK)) {
-+ pr_debug("invalid pstate %d, ignoring\n", index);
-+ invalidate_entry(powernow_table, i);
-+ continue;
-+ }
-+
- powernow_table[i].frequency =
- freq_from_fid_did(lo & 0x3f, (lo >> 6) & 7);
- } else
- powernow_table[i].frequency =
- data->acpi_data.states[i].core_frequency * 1000;
-+
-+ powernow_table[i].index = index;
- }
- return 0;
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0086-powernow-k8-Fix-indexing-issue.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0086-powernow-k8-Fix-indexing-issue.patch
deleted file mode 100644
index 76a5ba1..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0086-powernow-k8-Fix-indexing-issue.patch
+++ /dev/null
@@ -1,86 +0,0 @@
-From 8277118fee6c96e85f62a048ef2fb2bf45aa2a9d Mon Sep 17 00:00:00 2001
-From: Andreas Herrmann <andreas.herrmann3 at amd.com>
-Date: Fri, 6 Jan 2012 15:57:55 +0100
-Subject: [PATCH 86/87] powernow-k8: Fix indexing issue
-
-commit a8eb28480e9b637cc78b9aa5e08612ba97e1317a upstream.
-
-The driver uses the pstate number from the status register as index in
-its table of ACPI pstates (powernow_table). This is wrong as this is
-not a 1-to-1 mapping.
-
-For example we can have _PSS information to just utilize Pstate 0 and
-Pstate 4, ie.
-
- powernow-k8: Core Performance Boosting: on.
- powernow-k8: 0 : pstate 0 (2200 MHz)
- powernow-k8: 1 : pstate 4 (1400 MHz)
-
-In this example the driver's powernow_table has just 2 entries. Using
-the pstate number (4) as index into this table is just plain wrong.
-
-Signed-off-by: Andreas Herrmann <andreas.herrmann3 at amd.com>
-Signed-off-by: Dave Jones <davej at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/cpufreq/powernow-k8.c | 15 +++++++++++----
- 1 file changed, 11 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/cpufreq/powernow-k8.c b/drivers/cpufreq/powernow-k8.c
-index e0329f9..ad683ec 100644
---- a/drivers/cpufreq/powernow-k8.c
-+++ b/drivers/cpufreq/powernow-k8.c
-@@ -54,6 +54,9 @@ static DEFINE_PER_CPU(struct powernow_k8_data *, powernow_data);
-
- static int cpu_family = CPU_OPTERON;
-
-+/* array to map SW pstate number to acpi state */
-+static u32 ps_to_as[8];
-+
- /* core performance boost */
- static bool cpb_capable, cpb_enabled;
- static struct msr __percpu *msrs;
-@@ -80,9 +83,9 @@ static u32 find_khz_freq_from_fid(u32 fid)
- }
-
- static u32 find_khz_freq_from_pstate(struct cpufreq_frequency_table *data,
-- u32 pstate)
-+ u32 pstate)
- {
-- return data[pstate].frequency;
-+ return data[ps_to_as[pstate]].frequency;
- }
-
- /* Return the vco fid for an input fid
-@@ -926,6 +929,9 @@ static int fill_powernow_table_pstate(struct powernow_k8_data *data,
- invalidate_entry(powernow_table, i);
- continue;
- }
-+
-+ ps_to_as[index] = i;
-+
- /* Frequency may be rounded for these */
- if ((boot_cpu_data.x86 == 0x10 && boot_cpu_data.x86_model < 10)
- || boot_cpu_data.x86 == 0x11) {
-@@ -1190,7 +1196,8 @@ static int powernowk8_target(struct cpufreq_policy *pol,
- powernow_k8_acpi_pst_values(data, newstate);
-
- if (cpu_family == CPU_HW_PSTATE)
-- ret = transition_frequency_pstate(data, newstate);
-+ ret = transition_frequency_pstate(data,
-+ data->powernow_table[newstate].index);
- else
- ret = transition_frequency_fidvid(data, newstate);
- if (ret) {
-@@ -1203,7 +1210,7 @@ static int powernowk8_target(struct cpufreq_policy *pol,
-
- if (cpu_family == CPU_HW_PSTATE)
- pol->cur = find_khz_freq_from_pstate(data->powernow_table,
-- newstate);
-+ data->powernow_table[newstate].index);
- else
- pol->cur = find_khz_freq_from_fid(data->currfid);
- ret = 0;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0087-Linux-3.2.6.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0087-Linux-3.2.6.patch
deleted file mode 100644
index f556732..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0087-Linux-3.2.6.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 156d62cca61fb5e1773ebb727f1c5a346d23c4ce Mon Sep 17 00:00:00 2001
-From: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Date: Mon, 13 Feb 2012 11:17:29 -0800
-Subject: [PATCH 87/87] Linux 3.2.6
-
----
- Makefile | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Makefile b/Makefile
-index e9dd0ff..47fe496 100644
---- a/Makefile
-+++ b/Makefile
-@@ -1,6 +1,6 @@
- VERSION = 3
- PATCHLEVEL = 2
--SUBLEVEL = 5
-+SUBLEVEL = 6
- EXTRAVERSION =
- NAME = Saber-toothed Squirrel
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0001-ixgbe-fix-vf-lookup.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0001-ixgbe-fix-vf-lookup.patch
deleted file mode 100644
index 2a9d364..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0001-ixgbe-fix-vf-lookup.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From f9bd794600e41085bf9d479ad084c333ecf067b3 Mon Sep 17 00:00:00 2001
-From: Greg Rose <gregory.v.rose at intel.com>
-Date: Fri, 3 Feb 2012 00:54:13 +0000
-Subject: [PATCH 01/30] ixgbe: fix vf lookup
-
-commit a4b08329c74985e5cc3a44b6d2b2c59444ed8079 upstream.
-
-Recent addition of code to find already allocated VFs failed to take
-account that systems with 2 or more multi-port SR-IOV capable controllers
-might have already enabled VFs. Make sure that the VFs the function is
-finding are actually subordinate to the particular instance of the adapter
-that is looking for them and not subordinate to some device that has
-previously enabled SR-IOV.
-
-This bug exists in 3.2 stable as well as 3.3 release candidates.
-
-Reported-by: David Ahern <daahern at cisco.com>
-Signed-off-by: Greg Rose <gregory.v.rose at intel.com>
-Tested-by: Robert E Garrett <robertX.e.garrett at intel.com>
-Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher at intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c
-index 00fcd39..e571356 100644
---- a/drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c
-+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c
-@@ -67,7 +67,8 @@ static int ixgbe_find_enabled_vfs(struct ixgbe_adapter *adapter)
- vf_devfn = pdev->devfn + 0x80;
- pvfdev = pci_get_device(IXGBE_INTEL_VENDOR_ID, device_id, NULL);
- while (pvfdev) {
-- if (pvfdev->devfn == vf_devfn)
-+ if (pvfdev->devfn == vf_devfn &&
-+ (pvfdev->bus->number >= pdev->bus->number))
- vfs_found++;
- vf_devfn += 2;
- pvfdev = pci_get_device(IXGBE_INTEL_VENDOR_ID,
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0002-igb-fix-vf-lookup.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0002-igb-fix-vf-lookup.patch
deleted file mode 100644
index a0bee8e..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0002-igb-fix-vf-lookup.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From a7dfae97cea4c23e2fd73ce22da4e50438dd9b99 Mon Sep 17 00:00:00 2001
-From: Greg Rose <gregory.v.rose at intel.com>
-Date: Thu, 2 Feb 2012 23:51:43 +0000
-Subject: [PATCH 02/30] igb: fix vf lookup
-
-commit 0629292117572a60465f38cdedde2f8164c3df0b upstream.
-
-Recent addition of code to find already allocated VFs failed to take
-account that systems with 2 or more multi-port SR-IOV capable controllers
-might have already enabled VFs. Make sure that the VFs the function is
-finding are actually subordinate to the particular instance of the adapter
-that is looking for them and not subordinate to some device that has
-previously enabled SR-IOV.
-
-This is applicable to 3.2+ kernels.
-
-Reported-by: David Ahern <daahern at cisco.com>
-Signed-off-by: Greg Rose <gregory.v.rose at intel.com>
-Tested-by: Robert E Garrett <robertX.e.garrett at intel.com>
-Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher at intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/net/ethernet/intel/igb/igb_main.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c
-index ced5444..222954d 100644
---- a/drivers/net/ethernet/intel/igb/igb_main.c
-+++ b/drivers/net/ethernet/intel/igb/igb_main.c
-@@ -4965,7 +4965,8 @@ static int igb_find_enabled_vfs(struct igb_adapter *adapter)
- vf_devfn = pdev->devfn + 0x80;
- pvfdev = pci_get_device(hw->vendor_id, device_id, NULL);
- while (pvfdev) {
-- if (pvfdev->devfn == vf_devfn)
-+ if (pvfdev->devfn == vf_devfn &&
-+ (pvfdev->bus->number >= pdev->bus->number))
- vfs_found++;
- vf_devfn += vf_stride;
- pvfdev = pci_get_device(hw->vendor_id,
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0003-perf-evsel-Fix-an-issue-where-perf-report-fails-to-s.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0003-perf-evsel-Fix-an-issue-where-perf-report-fails-to-s.patch
deleted file mode 100644
index 3957851..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0003-perf-evsel-Fix-an-issue-where-perf-report-fails-to-s.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-From a6777e17a8286e9d1c7b60d4664a1b325d96948d Mon Sep 17 00:00:00 2001
-From: "Naveen N. Rao" <naveen.n.rao at linux.vnet.ibm.com>
-Date: Fri, 3 Feb 2012 22:31:13 +0530
-Subject: [PATCH 03/30] perf evsel: Fix an issue where perf report fails to
- show the proper percentage
-
-commit a4a03fc7ef89020baca4f19174e6a43767c6d78a upstream.
-
-This patch fixes an issue where perf report shows nan% for certain
-perf.data files. The below is from a report for a do_fork probe:
-
- -nan% sshd [kernel.kallsyms] [k] do_fork
- -nan% packagekitd [kernel.kallsyms] [k] do_fork
- -nan% dbus-daemon [kernel.kallsyms] [k] do_fork
- -nan% bash [kernel.kallsyms] [k] do_fork
-
-A git bisect shows commit f3bda2c as the cause. However, looking back
-through the git history, I saw commit 640c03c which seems to have
-removed the required initialization for perf_sample->period. The problem
-only started showing after commit f3bda2c. The below patch re-introduces
-the initialization and it fixes the problem for me.
-
-With the below patch, for the same perf.data:
-
- 73.08% bash [kernel.kallsyms] [k] do_fork
- 8.97% 11-dhclient [kernel.kallsyms] [k] do_fork
- 6.41% sshd [kernel.kallsyms] [k] do_fork
- 3.85% 20-chrony [kernel.kallsyms] [k] do_fork
- 2.56% sendmail [kernel.kallsyms] [k] do_fork
-
-This patch applies over current linux-tip commit 9949284.
-
-Problem introduced in:
-
-$ git describe 640c03c
-v2.6.37-rc3-83-g640c03c
-
-Cc: Ananth N Mavinakayanahalli <ananth at in.ibm.com>
-Cc: Ingo Molnar <mingo at elte.hu>
-Cc: Robert Richter <robert.richter at amd.com>
-Cc: Srikar Dronamraju <srikar at linux.vnet.ibm.com>
-Link: http://lkml.kernel.org/r/20120203170113.5190.25558.stgit@localhost6.localdomain6
-Signed-off-by: Naveen N. Rao <naveen.n.rao at linux.vnet.ibm.com>
-Signed-off-by: Arnaldo Carvalho de Melo <acme at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- tools/perf/util/evsel.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c
-index d7915d4..efca198 100644
---- a/tools/perf/util/evsel.c
-+++ b/tools/perf/util/evsel.c
-@@ -390,6 +390,7 @@ int perf_event__parse_sample(const union perf_event *event, u64 type,
-
- data->cpu = data->pid = data->tid = -1;
- data->stream_id = data->id = data->time = -1ULL;
-+ data->period = 1;
-
- if (event->header.type != PERF_RECORD_SAMPLE) {
- if (!sample_id_all)
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0004-perf-tools-Fix-perf-stack-to-non-executable-on-x86_6.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0004-perf-tools-Fix-perf-stack-to-non-executable-on-x86_6.patch
deleted file mode 100644
index ec548dd..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0004-perf-tools-Fix-perf-stack-to-non-executable-on-x86_6.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From f510b59b5a609d4b0512806b6d87c40db7917378 Mon Sep 17 00:00:00 2001
-From: Jiri Olsa <jolsa at redhat.com>
-Date: Mon, 6 Feb 2012 18:54:06 -0200
-Subject: [PATCH 04/30] perf tools: Fix perf stack to non executable on x86_64
-
-commit 7a0153ee15575a4d07b5da8c96b79e0b0fd41a12 upstream.
-
-By adding following objects:
- bench/mem-memcpy-x86-64-asm.o
-the x86_64 perf binary ended up with executable stack.
-
-The reason was that above object are assembler sourced and is missing the
-GNU-stack note section. In such case the linker assumes that the final binary
-should not be restricted at all and mark the stack as RWX.
-
-Adding section ".note.GNU-stack" definition to mentioned object, with all
-flags disabled, thus omiting this object from linker stack flags decision.
-
-Problem introduced in:
-
- $ git describe ea7872b
- v2.6.37-rc2-19-gea7872b
-
-Reported-at: https://bugzilla.redhat.com/show_bug.cgi?id=783570
-Reported-by: Clark Williams <williams at redhat.com>
-Acked-by: Eric Dumazet <eric.dumazet at gmail.com>
-Cc: Corey Ashford <cjashfor at linux.vnet.ibm.com>
-Cc: Ingo Molnar <mingo at elte.hu>
-Cc: Paul Mackerras <paulus at samba.org>
-Cc: Peter Zijlstra <a.p.zijlstra at chello.nl>
-Link: http://lkml.kernel.org/r/1328100848-5630-1-git-send-email-jolsa@redhat.com
-Signed-off-by: Jiri Olsa <jolsa at redhat.com>
-[ committer note: Backported fix to perf/urgent (3.3-rc2+) ]
-Signed-off-by: Arnaldo Carvalho de Melo <acme at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- tools/perf/bench/mem-memcpy-x86-64-asm.S | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-diff --git a/tools/perf/bench/mem-memcpy-x86-64-asm.S b/tools/perf/bench/mem-memcpy-x86-64-asm.S
-index a57b66e..185a96d 100644
---- a/tools/perf/bench/mem-memcpy-x86-64-asm.S
-+++ b/tools/perf/bench/mem-memcpy-x86-64-asm.S
-@@ -1,2 +1,8 @@
-
- #include "../../../arch/x86/lib/memcpy_64.S"
-+/*
-+ * We need to provide note.GNU-stack section, saying that we want
-+ * NOT executable stack. Otherwise the final linking will assume that
-+ * the ELF stack should not be restricted at all and set it RWX.
-+ */
-+.section .note.GNU-stack,"", at progbits
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0005-drm-i915-Force-explicit-bpp-selection-for-intel_dp_l.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0005-drm-i915-Force-explicit-bpp-selection-for-intel_dp_l.patch
deleted file mode 100644
index 8be2b73..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0005-drm-i915-Force-explicit-bpp-selection-for-intel_dp_l.patch
+++ /dev/null
@@ -1,99 +0,0 @@
-From fba4d4871d18221b452b0fd8a772a8973eb19d40 Mon Sep 17 00:00:00 2001
-From: Keith Packard <keithp at keithp.com>
-Date: Wed, 25 Jan 2012 08:16:25 -0800
-Subject: [PATCH 05/30] drm/i915: Force explicit bpp selection for
- intel_dp_link_required
-
-commit c898261c0dad617f0f1080bedc02d507a2fcfb92 upstream.
-
-It is never correct to use intel_crtc->bpp in intel_dp_link_required,
-so instead pass an explicit bpp in to this function. This patch
-only supports 18bpp and 24bpp modes, which means that 10bpc modes will
-be computed incorrectly. Fixing that will require more extensive
-changes, and so must be addressed separately from this bugfix.
-
-intel_dp_link_required is called from intel_dp_mode_valid and
-intel_dp_mode_fixup.
-
-* intel_dp_mode_valid is called to list supported modes; in this case,
- the current crtc values cannot be relevant as the modes in question
- may never be selected. Thus, using intel_crtc->bpp is never right.
-
-* intel_dp_mode_fixup is called during mode setting, but it is run
- well before ironlake_crtc_mode_set is called to set intel_crtc->bpp,
- so using intel_crtc-bpp in this path can only ever get a stale
- value.
-
-Cc: Lubos Kolouch <lubos.kolouch at gmail.com>
-Cc: Adam Jackson <ajax at redhat.com>
-Reviewed-by: Daniel Vetter <daniel.vetter at ffwll.ch>
-Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=42263
-Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=44881
-Tested-by: Dave Airlie <airlied at redhat.com>
-Tested-by: camalot at picnicpark.org (Dell Latitude 6510)
-Tested-by: Roland Dreier <roland at digitalvampire.org>
-Signed-off-by: Keith Packard <keithp at keithp.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/gpu/drm/i915/intel_dp.c | 20 +++++---------------
- 1 file changed, 5 insertions(+), 15 deletions(-)
-
-diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
-index db3b461..94f860c 100644
---- a/drivers/gpu/drm/i915/intel_dp.c
-+++ b/drivers/gpu/drm/i915/intel_dp.c
-@@ -208,17 +208,8 @@ intel_dp_link_clock(uint8_t link_bw)
- */
-
- static int
--intel_dp_link_required(struct intel_dp *intel_dp, int pixel_clock, int check_bpp)
-+intel_dp_link_required(int pixel_clock, int bpp)
- {
-- struct drm_crtc *crtc = intel_dp->base.base.crtc;
-- struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
-- int bpp = 24;
--
-- if (check_bpp)
-- bpp = check_bpp;
-- else if (intel_crtc)
-- bpp = intel_crtc->bpp;
--
- return (pixel_clock * bpp + 9) / 10;
- }
-
-@@ -245,12 +236,11 @@ intel_dp_mode_valid(struct drm_connector *connector,
- return MODE_PANEL;
- }
-
-- mode_rate = intel_dp_link_required(intel_dp, mode->clock, 0);
-+ mode_rate = intel_dp_link_required(mode->clock, 24);
- max_rate = intel_dp_max_data_rate(max_link_clock, max_lanes);
-
- if (mode_rate > max_rate) {
-- mode_rate = intel_dp_link_required(intel_dp,
-- mode->clock, 18);
-+ mode_rate = intel_dp_link_required(mode->clock, 18);
- if (mode_rate > max_rate)
- return MODE_CLOCK_HIGH;
- else
-@@ -683,7 +673,7 @@ intel_dp_mode_fixup(struct drm_encoder *encoder, struct drm_display_mode *mode,
- int lane_count, clock;
- int max_lane_count = intel_dp_max_lane_count(intel_dp);
- int max_clock = intel_dp_max_link_bw(intel_dp) == DP_LINK_BW_2_7 ? 1 : 0;
-- int bpp = mode->private_flags & INTEL_MODE_DP_FORCE_6BPC ? 18 : 0;
-+ int bpp = mode->private_flags & INTEL_MODE_DP_FORCE_6BPC ? 18 : 24;
- static int bws[2] = { DP_LINK_BW_1_62, DP_LINK_BW_2_7 };
-
- if (is_edp(intel_dp) && intel_dp->panel_fixed_mode) {
-@@ -701,7 +691,7 @@ intel_dp_mode_fixup(struct drm_encoder *encoder, struct drm_display_mode *mode,
- for (clock = 0; clock <= max_clock; clock++) {
- int link_avail = intel_dp_max_data_rate(intel_dp_link_clock(bws[clock]), lane_count);
-
-- if (intel_dp_link_required(intel_dp, mode->clock, bpp)
-+ if (intel_dp_link_required(mode->clock, bpp)
- <= link_avail) {
- intel_dp->link_bw = bws[clock];
- intel_dp->lane_count = lane_count;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0006-drm-i915-no-lvds-quirk-for-AOpen-MP45.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0006-drm-i915-no-lvds-quirk-for-AOpen-MP45.patch
deleted file mode 100644
index 92753fc..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0006-drm-i915-no-lvds-quirk-for-AOpen-MP45.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 9cacfb00d741b68404612ba454125c99e1c28382 Mon Sep 17 00:00:00 2001
-From: Daniel Vetter <daniel.vetter at ffwll.ch>
-Date: Wed, 8 Feb 2012 16:42:52 +0100
-Subject: [PATCH 06/30] drm/i915: no lvds quirk for AOpen MP45
-
-commit e57b6886f555ab57f40a01713304e2053efe51ec upstream.
-
-According to a bug report, it doesn't have one.
-
-Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=44263
-Acked-by: Chris Wilson <chris at chris-wilson.co.uk>
-Signed-Off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
-Signed-off-by: Keith Packard <keithp at keithp.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/gpu/drm/i915/intel_lvds.c | 8 ++++++++
- 1 file changed, 8 insertions(+)
-
-diff --git a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c
-index e441911..b83f745 100644
---- a/drivers/gpu/drm/i915/intel_lvds.c
-+++ b/drivers/gpu/drm/i915/intel_lvds.c
-@@ -694,6 +694,14 @@ static const struct dmi_system_id intel_no_lvds[] = {
- },
- {
- .callback = intel_no_lvds_dmi_callback,
-+ .ident = "AOpen i45GMx-I",
-+ .matches = {
-+ DMI_MATCH(DMI_BOARD_VENDOR, "AOpen"),
-+ DMI_MATCH(DMI_BOARD_NAME, "i45GMx-I"),
-+ },
-+ },
-+ {
-+ .callback = intel_no_lvds_dmi_callback,
- .ident = "Aopen i945GTt-VFA",
- .matches = {
- DMI_MATCH(DMI_PRODUCT_VERSION, "AO00001JW"),
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0007-ath9k-Fix-kernel-panic-during-driver-initilization.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0007-ath9k-Fix-kernel-panic-during-driver-initilization.patch
deleted file mode 100644
index 6b70b6b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0007-ath9k-Fix-kernel-panic-during-driver-initilization.patch
+++ /dev/null
@@ -1,96 +0,0 @@
-From e7ddf4ecf94f15e2788808f1b2530c0bff6312bb Mon Sep 17 00:00:00 2001
-From: Mohammed Shafi Shajakhan <mohammed at qca.qualcomm.com>
-Date: Thu, 2 Feb 2012 16:29:05 +0530
-Subject: [PATCH 07/30] ath9k: Fix kernel panic during driver initilization
-
-commit 07445f688218a48bde72316aed9de4fdcc173131 upstream.
-
-all works need to be initialized before ieee80211_register_hw
-to prevent mac80211 call backs such as drv_start, drv_config
-getting started. otherwise we would queue/cancel works before
-initializing them and it leads to kernel panic.
-this issue can be recreated with the following script
-in Chrome laptops with AR928X cards, with background scan
-running (or) Network manager is running
-
-while true
-do
-sudo modprobe -v ath9k
-sleep 3
-sudo modprobe -r ath9k
-sleep 3
-done
-
- EIP: [<81040a47>] __cancel_work_timer+0xb8/0xe1 SS:ESP 0068:f6be9d70
- ---[ end trace 4f86d6139a9900ef ]---
- Registered led device: ath9k-phy0
- ieee80211 phy0: Atheros AR9280 Rev:2 mem=0xf88a0000,
- irq=16
- Kernel panic - not syncing: Fatal exception
- Pid: 456, comm: wpa_supplicant Tainted: G D
- 3.0.13 #1
- Call Trace:
- [<81379e21>] panic+0x53/0x14a
- [<81004a30>] oops_end+0x73/0x81
- [<81004b53>] die+0x4c/0x55
- [<81002710>] do_trap+0x7c/0x83
- [<81002855>] ? do_bounds+0x58/0x58
- [<810028cc>] do_invalid_op+0x77/0x81
- [<81040a47>] ? __cancel_work_timer+0xb8/0xe1
- [<810489ec>] ? sched_clock_cpu+0x81/0x11f
- [<8103f809>] ? wait_on_work+0xe2/0xf7
- [<8137f807>] error_code+0x67/0x6c
- [<810300d8>] ? wait_consider_task+0x4ba/0x84c
- [<81040a47>] ? __cancel_work_timer+0xb8/0xe1
- [<810380c9>] ? try_to_del_timer_sync+0x5f/0x67
- [<81040a91>] cancel_work_sync+0xf/0x11
- [<f88d7b7c>] ath_set_channel+0x62/0x25c [ath9k]
- [<f88d67d1>] ? ath9k_tx_last_beacon+0x26a/0x85c [ath9k]
- [<f88d8899>] ath_radio_disable+0x3f1/0x68e [ath9k]
- [<f90d0edb>] ieee80211_hw_config+0x111/0x116 [mac80211]
- [<f90dd95c>] __ieee80211_recalc_idle+0x919/0xa37 [mac80211]
- [<f90dda76>] __ieee80211_recalc_idle+0xa33/0xa37 [mac80211]
- [<812dbed8>] __dev_open+0x82/0xab
-
-Cc: Gary Morain <gmorain at google.com>
-Cc: Paul Stewart <pstew at google.com>
-Cc: Vasanthakumar Thiagarajan <vthiagar at qca.qualcomm.com>
-Tested-by: Mohammed Shafi Shajakhan <mohammed at qca.qualcomm.com>
-Signed-off-by: Rajkumar Manoharan <rmanohar at qca.qualcomm.com>
-Signed-off-by: Mohammed Shafi Shajakhan <mohammed at qca.qualcomm.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/net/wireless/ath/ath9k/init.c | 9 +++++----
- 1 file changed, 5 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/net/wireless/ath/ath9k/init.c b/drivers/net/wireless/ath/ath9k/init.c
-index d4c909f..57622e0 100644
---- a/drivers/net/wireless/ath/ath9k/init.c
-+++ b/drivers/net/wireless/ath/ath9k/init.c
-@@ -775,6 +775,11 @@ int ath9k_init_device(u16 devid, struct ath_softc *sc,
- ARRAY_SIZE(ath9k_tpt_blink));
- #endif
-
-+ INIT_WORK(&sc->hw_reset_work, ath_reset_work);
-+ INIT_WORK(&sc->hw_check_work, ath_hw_check);
-+ INIT_WORK(&sc->paprd_work, ath_paprd_calibrate);
-+ INIT_DELAYED_WORK(&sc->hw_pll_work, ath_hw_pll_work);
-+
- /* Register with mac80211 */
- error = ieee80211_register_hw(hw);
- if (error)
-@@ -793,10 +798,6 @@ int ath9k_init_device(u16 devid, struct ath_softc *sc,
- goto error_world;
- }
-
-- INIT_WORK(&sc->hw_reset_work, ath_reset_work);
-- INIT_WORK(&sc->hw_check_work, ath_hw_check);
-- INIT_WORK(&sc->paprd_work, ath_paprd_calibrate);
-- INIT_DELAYED_WORK(&sc->hw_pll_work, ath_hw_pll_work);
- sc->last_rssi = ATH_RSSI_DUMMY_MARKER;
-
- ath_init_leds(sc);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0008-ath9k-fix-a-WEP-crypto-related-regression.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0008-ath9k-fix-a-WEP-crypto-related-regression.patch
deleted file mode 100644
index 461b9cd..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0008-ath9k-fix-a-WEP-crypto-related-regression.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From 654335b847a1e00eccc0c9b43bf41151fa868c7d Mon Sep 17 00:00:00 2001
-From: Felix Fietkau <nbd at openwrt.org>
-Date: Sun, 5 Feb 2012 21:15:17 +0100
-Subject: [PATCH 08/30] ath9k: fix a WEP crypto related regression
-
-commit f88373fa47f3ce6590fdfaa742d0ddacc2ae017f upstream.
-
-commit b4a82a0 "ath9k_hw: fix interpretation of the rx KeyMiss flag"
-fixed the interpretation of the KeyMiss flag for keycache based lookups,
-however WEP encryption uses a static index, so KeyMiss is always asserted
-for it, even though frames are decrypted properly.
-Fix this by clearing the ATH9K_RXERR_KEYMISS flag if no keycache based
-lookup was performed.
-
-Signed-off-by: Felix Fietkau <nbd at openwrt.org>
-Reported-by: Laurent Bonnans <bonnans.l at gmail.com>
-Reported-by: Jurica Vukadin <u.ra604 at googlemail.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/net/wireless/ath/ath9k/recv.c | 8 ++++++++
- 1 file changed, 8 insertions(+)
-
-diff --git a/drivers/net/wireless/ath/ath9k/recv.c b/drivers/net/wireless/ath/ath9k/recv.c
-index 67b862c..2f3aeac 100644
---- a/drivers/net/wireless/ath/ath9k/recv.c
-+++ b/drivers/net/wireless/ath/ath9k/recv.c
-@@ -824,6 +824,14 @@ static bool ath9k_rx_accept(struct ath_common *common,
- (ATH9K_RXERR_DECRYPT | ATH9K_RXERR_CRC | ATH9K_RXERR_MIC |
- ATH9K_RXERR_KEYMISS));
-
-+ /*
-+ * Key miss events are only relevant for pairwise keys where the
-+ * descriptor does contain a valid key index. This has been observed
-+ * mostly with CCMP encryption.
-+ */
-+ if (rx_stats->rs_keyix == ATH9K_RXKEYIX_INVALID)
-+ rx_stats->rs_status &= ~ATH9K_RXERR_KEYMISS;
-+
- if (!rx_stats->rs_datalen)
- return false;
- /*
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0009-ath9k_hw-fix-a-RTS-CTS-timeout-regression.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0009-ath9k_hw-fix-a-RTS-CTS-timeout-regression.patch
deleted file mode 100644
index 0d0a4cb..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0009-ath9k_hw-fix-a-RTS-CTS-timeout-regression.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From 4b1e1d777781b292e28f272a7ec433f2b8eac1d9 Mon Sep 17 00:00:00 2001
-From: Felix Fietkau <nbd at openwrt.org>
-Date: Sun, 5 Feb 2012 21:15:18 +0100
-Subject: [PATCH 09/30] ath9k_hw: fix a RTS/CTS timeout regression
-
-commit 55a2bb4a6d5e8c7b324d003e130fd9aaf33be4e6 upstream.
-
-commit adb5066 "ath9k_hw: do not apply the 2.4 ghz ack timeout
-workaround to cts" reduced the hardware CTS timeout to the normal
-values specified by the standard, but it turns out while it doesn't
-need the same extra time that it needs for the ACK timeout, it
-does need more than the value specified in the standard, but only
-for 2.4 GHz.
-
-This patch brings the CTS timeout value in sync with the initialization
-values, while still allowing adjustment for bigger distances.
-
-Signed-off-by: Felix Fietkau <nbd at openwrt.org>
-Reported-by: Seth Forshee <seth.forshee at canonical.com>
-Reported-by: Marek Lindner <lindner_marek at yahoo.de>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/net/wireless/ath/ath9k/hw.c | 7 +++++--
- 1 file changed, 5 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/net/wireless/ath/ath9k/hw.c b/drivers/net/wireless/ath/ath9k/hw.c
-index 8873c6e..8b0c2ca 100644
---- a/drivers/net/wireless/ath/ath9k/hw.c
-+++ b/drivers/net/wireless/ath/ath9k/hw.c
-@@ -1034,13 +1034,16 @@ void ath9k_hw_init_global_settings(struct ath_hw *ah)
-
- /*
- * Workaround for early ACK timeouts, add an offset to match the
-- * initval's 64us ack timeout value.
-+ * initval's 64us ack timeout value. Use 48us for the CTS timeout.
- * This was initially only meant to work around an issue with delayed
- * BA frames in some implementations, but it has been found to fix ACK
- * timeout issues in other cases as well.
- */
-- if (conf->channel && conf->channel->band == IEEE80211_BAND_2GHZ)
-+ if (conf->channel && conf->channel->band == IEEE80211_BAND_2GHZ) {
- acktimeout += 64 - sifstime - ah->slottime;
-+ ctstimeout += 48 - sifstime - ah->slottime;
-+ }
-+
-
- ath9k_hw_set_sifs_time(ah, sifstime);
- ath9k_hw_setslottime(ah, slottime);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0010-hwmon-f75375s-Fix-bit-shifting-in-f75375_write16.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0010-hwmon-f75375s-Fix-bit-shifting-in-f75375_write16.patch
deleted file mode 100644
index 8bdd5e5..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0010-hwmon-f75375s-Fix-bit-shifting-in-f75375_write16.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From c121226b76f327e056431476a41d94d6e19d0d6d Mon Sep 17 00:00:00 2001
-From: Nikolaus Schulz <schulz at macnetix.de>
-Date: Wed, 8 Feb 2012 18:56:10 +0100
-Subject: [PATCH 10/30] hwmon: (f75375s) Fix bit shifting in f75375_write16
-
-commit eb2f255b2d360df3f500042a2258dcf2fcbe89a2 upstream.
-
-In order to extract the high byte of the 16-bit word, shift the word to
-the right, not to the left.
-
-Signed-off-by: Nikolaus Schulz <mail at microschulz.de>
-Signed-off-by: Guenter Roeck <guenter.roeck at ericsson.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/hwmon/f75375s.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/hwmon/f75375s.c b/drivers/hwmon/f75375s.c
-index 95cbfb3..dcfd9e1 100644
---- a/drivers/hwmon/f75375s.c
-+++ b/drivers/hwmon/f75375s.c
-@@ -159,7 +159,7 @@ static inline void f75375_write8(struct i2c_client *client, u8 reg,
- static inline void f75375_write16(struct i2c_client *client, u8 reg,
- u16 value)
- {
-- int err = i2c_smbus_write_byte_data(client, reg, (value << 8));
-+ int err = i2c_smbus_write_byte_data(client, reg, (value >> 8));
- if (err)
- return;
- i2c_smbus_write_byte_data(client, reg + 1, (value & 0xFF));
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0011-net-enable-TC35815-for-MIPS-again.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0011-net-enable-TC35815-for-MIPS-again.patch
deleted file mode 100644
index b483159..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0011-net-enable-TC35815-for-MIPS-again.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 73e76b36382b211cefbab43e73e53608daf07452 Mon Sep 17 00:00:00 2001
-From: Atsushi Nemoto <anemo at mba.ocn.ne.jp>
-Date: Mon, 6 Feb 2012 14:51:03 +0000
-Subject: [PATCH 11/30] net: enable TC35815 for MIPS again
-
-commit a1728800bed3b93b231d99e97c756f622b9991c2 upstream.
-
-8<----------------------------------------------------------------------
-From: Ralf Roesch <ralf.roesch at rw-gmbh.de>
-Date: Wed, 16 Nov 2011 09:33:50 +0100
-Subject: net: enable TC35815 for MIPS again
-
-TX493[8,9] MIPS SoCs support 2 Ethernet channels of type TC35815
-which are connected to the internal PCI controller.
-And JMR3927 MIPS board has a TC35815 chip on board.
-These dependencies were lost on movement to drivers/net/ethernet/toshiba.
-
-Signed-off-by: Ralf Roesch <ralf.roesch at rw-gmbh.de>
-Signed-off-by: Atsushi Nemoto <anemo at mba.ocn.ne.jp>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/net/ethernet/toshiba/Kconfig | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/net/ethernet/toshiba/Kconfig b/drivers/net/ethernet/toshiba/Kconfig
-index 0517647..74acb5c 100644
---- a/drivers/net/ethernet/toshiba/Kconfig
-+++ b/drivers/net/ethernet/toshiba/Kconfig
-@@ -5,7 +5,7 @@
- config NET_VENDOR_TOSHIBA
- bool "Toshiba devices"
- default y
-- depends on PCI && (PPC_IBM_CELL_BLADE || PPC_CELLEB) || PPC_PS3
-+ depends on PCI && (PPC_IBM_CELL_BLADE || PPC_CELLEB || MIPS) || PPC_PS3
- ---help---
- If you have a network (Ethernet) card belonging to this class, say Y
- and read the Ethernet-HOWTO, available from
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0012-lib-proportion-lower-PROP_MAX_SHIFT-to-32-on-64-bit-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0012-lib-proportion-lower-PROP_MAX_SHIFT-to-32-on-64-bit-.patch
deleted file mode 100644
index eff26a3..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0012-lib-proportion-lower-PROP_MAX_SHIFT-to-32-on-64-bit-.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From d5438321087a6e5fb24d0797224ae63411cfe7c5 Mon Sep 17 00:00:00 2001
-From: Wu Fengguang <fengguang.wu at intel.com>
-Date: Mon, 9 Jan 2012 11:53:50 -0600
-Subject: [PATCH 12/30] lib: proportion: lower PROP_MAX_SHIFT to 32 on 64-bit
- kernel
-
-commit 3310225dfc71a35a2cc9340c15c0e08b14b3c754 upstream.
-
-PROP_MAX_SHIFT should be set to <=32 on 64-bit box. This fixes two bugs
-in the below lines of bdi_dirty_limit():
-
- bdi_dirty *= numerator;
- do_div(bdi_dirty, denominator);
-
-1) divide error: do_div() only uses the lower 32 bit of the denominator,
- which may trimmed to be 0 when PROP_MAX_SHIFT > 32.
-
-2) overflow: (bdi_dirty * numerator) could easily overflow if numerator
- used up to 48 bits, leaving only 16 bits to bdi_dirty
-
-Cc: Peter Zijlstra <a.p.zijlstra at chello.nl>
-Reported-by: Ilya Tumaykin <librarian_rus at yahoo.com>
-Tested-by: Ilya Tumaykin <librarian_rus at yahoo.com>
-Signed-off-by: Wu Fengguang <fengguang.wu at intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- include/linux/proportions.h | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/include/linux/proportions.h b/include/linux/proportions.h
-index ef35bb7..26a8a4e 100644
---- a/include/linux/proportions.h
-+++ b/include/linux/proportions.h
-@@ -81,7 +81,11 @@ void prop_inc_percpu(struct prop_descriptor *pd, struct prop_local_percpu *pl)
- * Limit the time part in order to ensure there are some bits left for the
- * cycle counter and fraction multiply.
- */
-+#if BITS_PER_LONG == 32
- #define PROP_MAX_SHIFT (3*BITS_PER_LONG/4)
-+#else
-+#define PROP_MAX_SHIFT (BITS_PER_LONG/2)
-+#endif
-
- #define PROP_FRAC_SHIFT (BITS_PER_LONG - PROP_MAX_SHIFT - 1)
- #define PROP_FRAC_BASE (1UL << PROP_FRAC_SHIFT)
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0013-relay-prevent-integer-overflow-in-relay_open.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0013-relay-prevent-integer-overflow-in-relay_open.patch
deleted file mode 100644
index f00e7bd..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0013-relay-prevent-integer-overflow-in-relay_open.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From 161d5e5d75409a789dce0fce2efde84af0d39a2c Mon Sep 17 00:00:00 2001
-From: Dan Carpenter <dan.carpenter at oracle.com>
-Date: Fri, 10 Feb 2012 09:03:58 +0100
-Subject: [PATCH 13/30] relay: prevent integer overflow in relay_open()
-
-commit f6302f1bcd75a042df69866d98b8d775a668f8f1 upstream.
-
-"subbuf_size" and "n_subbufs" come from the user and they need to be
-capped to prevent an integer overflow.
-
-Signed-off-by: Dan Carpenter <dan.carpenter at oracle.com>
-Signed-off-by: Jens Axboe <axboe at kernel.dk>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- kernel/relay.c | 10 ++++++++--
- 1 file changed, 8 insertions(+), 2 deletions(-)
-
-diff --git a/kernel/relay.c b/kernel/relay.c
-index 226fade..b6f803a 100644
---- a/kernel/relay.c
-+++ b/kernel/relay.c
-@@ -164,10 +164,14 @@ depopulate:
- */
- static struct rchan_buf *relay_create_buf(struct rchan *chan)
- {
-- struct rchan_buf *buf = kzalloc(sizeof(struct rchan_buf), GFP_KERNEL);
-- if (!buf)
-+ struct rchan_buf *buf;
-+
-+ if (chan->n_subbufs > UINT_MAX / sizeof(size_t *))
- return NULL;
-
-+ buf = kzalloc(sizeof(struct rchan_buf), GFP_KERNEL);
-+ if (!buf)
-+ return NULL;
- buf->padding = kmalloc(chan->n_subbufs * sizeof(size_t *), GFP_KERNEL);
- if (!buf->padding)
- goto free_buf;
-@@ -574,6 +578,8 @@ struct rchan *relay_open(const char *base_filename,
-
- if (!(subbuf_size && n_subbufs))
- return NULL;
-+ if (subbuf_size > UINT_MAX / n_subbufs)
-+ return NULL;
-
- chan = kzalloc(sizeof(struct rchan), GFP_KERNEL);
- if (!chan)
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0014-mac80211-timeout-a-single-frame-in-the-rx-reorder-bu.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0014-mac80211-timeout-a-single-frame-in-the-rx-reorder-bu.patch
deleted file mode 100644
index 45e100a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0014-mac80211-timeout-a-single-frame-in-the-rx-reorder-bu.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 218b7080585d83e1fae540929d6da410396ba0d7 Mon Sep 17 00:00:00 2001
-From: Eliad Peller <eliad at wizery.com>
-Date: Wed, 1 Feb 2012 18:48:09 +0200
-Subject: [PATCH 14/30] mac80211: timeout a single frame in the rx reorder
- buffer
-
-commit 07ae2dfcf4f7143ce191c6436da1c33f179af0d6 upstream.
-
-The current code checks for stored_mpdu_num > 1, causing
-the reorder_timer to be triggered indefinitely, but the
-frame is never timed-out (until the next packet is received)
-
-Signed-off-by: Eliad Peller <eliad at wizery.com>
-Acked-by: Johannes Berg <johannes at sipsolutions.net>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- net/mac80211/rx.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
-index 5c51607..064d20f 100644
---- a/net/mac80211/rx.c
-+++ b/net/mac80211/rx.c
-@@ -616,7 +616,7 @@ static void ieee80211_sta_reorder_release(struct ieee80211_hw *hw,
- index = seq_sub(tid_agg_rx->head_seq_num, tid_agg_rx->ssn) %
- tid_agg_rx->buf_size;
- if (!tid_agg_rx->reorder_buf[index] &&
-- tid_agg_rx->stored_mpdu_num > 1) {
-+ tid_agg_rx->stored_mpdu_num) {
- /*
- * No buffers ready to be released, but check whether any
- * frames in the reorder buffer have timed out.
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0015-writeback-fix-NULL-bdi-dev-in-trace-writeback_single.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0015-writeback-fix-NULL-bdi-dev-in-trace-writeback_single.patch
deleted file mode 100644
index a48ee34..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0015-writeback-fix-NULL-bdi-dev-in-trace-writeback_single.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-From e127104e313afb198838b239fff3289408711db5 Mon Sep 17 00:00:00 2001
-From: Wu Fengguang <fengguang.wu at intel.com>
-Date: Tue, 17 Jan 2012 11:18:56 -0600
-Subject: [PATCH 15/30] writeback: fix NULL bdi->dev in trace
- writeback_single_inode
-
-commit 15eb77a07c714ac80201abd0a9568888bcee6276 upstream.
-
-bdi_prune_sb() resets sb->s_bdi to default_backing_dev_info when the
-tearing down the original bdi. Fix trace_writeback_single_inode to
-use sb->s_bdi=default_backing_dev_info rather than bdi->dev=NULL for a
-teared down bdi.
-
-Reported-by: Rabin Vincent <rabin at rab.in>
-Tested-by: Rabin Vincent <rabin at rab.in>
-Signed-off-by: Wu Fengguang <fengguang.wu at intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/fs-writeback.c | 16 ++++++++--------
- include/trace/events/writeback.h | 2 +-
- 2 files changed, 9 insertions(+), 9 deletions(-)
-
-diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c
-index 517f211..54f5786 100644
---- a/fs/fs-writeback.c
-+++ b/fs/fs-writeback.c
-@@ -48,14 +48,6 @@ struct wb_writeback_work {
- };
-
- /*
-- * Include the creation of the trace points after defining the
-- * wb_writeback_work structure so that the definition remains local to this
-- * file.
-- */
--#define CREATE_TRACE_POINTS
--#include <trace/events/writeback.h>
--
--/*
- * We don't actually have pdflush, but this one is exported though /proc...
- */
- int nr_pdflush_threads;
-@@ -87,6 +79,14 @@ static inline struct inode *wb_inode(struct list_head *head)
- return list_entry(head, struct inode, i_wb_list);
- }
-
-+/*
-+ * Include the creation of the trace points after defining the
-+ * wb_writeback_work structure and inline functions so that the definition
-+ * remains local to this file.
-+ */
-+#define CREATE_TRACE_POINTS
-+#include <trace/events/writeback.h>
-+
- /* Wakeup flusher thread or forker thread to fork it. Requires bdi->wb_lock. */
- static void bdi_wakeup_flusher(struct backing_dev_info *bdi)
- {
-diff --git a/include/trace/events/writeback.h b/include/trace/events/writeback.h
-index 99d1d0d..46e389c 100644
---- a/include/trace/events/writeback.h
-+++ b/include/trace/events/writeback.h
-@@ -418,7 +418,7 @@ DECLARE_EVENT_CLASS(writeback_single_inode_template,
-
- TP_fast_assign(
- strncpy(__entry->name,
-- dev_name(inode->i_mapping->backing_dev_info->dev), 32);
-+ dev_name(inode_to_bdi(inode)->dev), 32);
- __entry->ino = inode->i_ino;
- __entry->state = inode->i_state;
- __entry->dirtied_when = inode->dirtied_when;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0016-writeback-fix-dereferencing-NULL-bdi-dev-on-trace_wr.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0016-writeback-fix-dereferencing-NULL-bdi-dev-on-trace_wr.patch
deleted file mode 100644
index 8cfe0b0..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0016-writeback-fix-dereferencing-NULL-bdi-dev-on-trace_wr.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From a8007086ee166819c511c09b122c46c807377fe1 Mon Sep 17 00:00:00 2001
-From: Wu Fengguang <fengguang.wu at intel.com>
-Date: Sat, 4 Feb 2012 20:54:03 -0600
-Subject: [PATCH 16/30] writeback: fix dereferencing NULL bdi->dev on
- trace_writeback_queue
-
-commit 977b7e3a52a7421ad33a393a38ece59f3d41c2fa upstream.
-
-When a SD card is hot removed without umount, del_gendisk() will call
-bdi_unregister() without destroying/freeing it. This leaves the bdi in
-the bdi->dev = NULL, bdi->wb.task = NULL, bdi->bdi_list removed state.
-
-When sync(2) gets the bdi before bdi_unregister() and calls
-bdi_queue_work() after the unregister, trace_writeback_queue will be
-dereferencing the NULL bdi->dev. Fix it with a simple test for NULL.
-
-LKML-reference: http://lkml.org/lkml/2012/1/18/346
-Reported-by: Rabin Vincent <rabin at rab.in>
-Tested-by: Namjae Jeon <linkinjeon at gmail.com>
-Signed-off-by: Wu Fengguang <fengguang.wu at intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- include/trace/events/writeback.h | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/include/trace/events/writeback.h b/include/trace/events/writeback.h
-index 46e389c..1f48f14 100644
---- a/include/trace/events/writeback.h
-+++ b/include/trace/events/writeback.h
-@@ -47,7 +47,10 @@ DECLARE_EVENT_CLASS(writeback_work_class,
- __field(int, reason)
- ),
- TP_fast_assign(
-- strncpy(__entry->name, dev_name(bdi->dev), 32);
-+ struct device *dev = bdi->dev;
-+ if (!dev)
-+ dev = default_backing_dev_info.dev;
-+ strncpy(__entry->name, dev_name(dev), 32);
- __entry->nr_pages = work->nr_pages;
- __entry->sb_dev = work->sb ? work->sb->s_dev : 0;
- __entry->sync_mode = work->sync_mode;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0017-hwmon-f75375s-Fix-automatic-pwm-mode-setting-for-F75.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0017-hwmon-f75375s-Fix-automatic-pwm-mode-setting-for-F75.patch
deleted file mode 100644
index f2f7a9a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0017-hwmon-f75375s-Fix-automatic-pwm-mode-setting-for-F75.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 350b194286649caa5d4581abe53cf0467aabbbd7 Mon Sep 17 00:00:00 2001
-From: Nikolaus Schulz <schulz at macnetix.de>
-Date: Wed, 8 Feb 2012 18:56:08 +0100
-Subject: [PATCH 17/30] hwmon: (f75375s) Fix automatic pwm mode setting for
- F75373 & F75375
-
-commit 09e87e5c4f9af656af2a8a3afc03487c5d9287c3 upstream.
-
-In order to enable temperature mode aka automatic mode for the F75373 and
-F75375 chips, the two FANx_MODE bits in the fan configuration register
-need be set to 01, not 10.
-
-Signed-off-by: Nikolaus Schulz <mail at microschulz.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/hwmon/f75375s.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/hwmon/f75375s.c b/drivers/hwmon/f75375s.c
-index dcfd9e1..e4ab491 100644
---- a/drivers/hwmon/f75375s.c
-+++ b/drivers/hwmon/f75375s.c
-@@ -311,7 +311,7 @@ static int set_pwm_enable_direct(struct i2c_client *client, int nr, int val)
- fanmode |= (3 << FAN_CTRL_MODE(nr));
- break;
- case 2: /* AUTOMATIC*/
-- fanmode |= (2 << FAN_CTRL_MODE(nr));
-+ fanmode |= (1 << FAN_CTRL_MODE(nr));
- break;
- case 3: /* fan speed */
- break;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0018-cifs-request-oplock-when-doing-open-on-lookup.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0018-cifs-request-oplock-when-doing-open-on-lookup.patch
deleted file mode 100644
index e44468c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0018-cifs-request-oplock-when-doing-open-on-lookup.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From e25d9a36e8069d9927e1595bf742d7d2d3890933 Mon Sep 17 00:00:00 2001
-From: Jeff Layton <jlayton at redhat.com>
-Date: Tue, 7 Feb 2012 06:30:52 -0500
-Subject: [PATCH 18/30] cifs: request oplock when doing open on lookup
-
-commit 8b0192a5f478da1c1ae906bf3ffff53f26204f56 upstream.
-
-Currently, it's always set to 0 (no oplock requested).
-
-Signed-off-by: Jeff Layton <jlayton at redhat.com>
-Signed-off-by: Steve French <smfrench at gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/cifs/dir.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/fs/cifs/dir.c b/fs/cifs/dir.c
-index d7eeb9d..e4c3334 100644
---- a/fs/cifs/dir.c
-+++ b/fs/cifs/dir.c
-@@ -492,7 +492,7 @@ cifs_lookup(struct inode *parent_dir_inode, struct dentry *direntry,
- {
- int xid;
- int rc = 0; /* to get around spurious gcc warning, set to zero here */
-- __u32 oplock = 0;
-+ __u32 oplock = enable_oplocks ? REQ_OPLOCK : 0;
- __u16 fileHandle = 0;
- bool posix_open = false;
- struct cifs_sb_info *cifs_sb;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0019-cifs-don-t-return-error-from-standard_receive3-after.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0019-cifs-don-t-return-error-from-standard_receive3-after.patch
deleted file mode 100644
index d602004..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0019-cifs-don-t-return-error-from-standard_receive3-after.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From f7977a33691742dcb281241b9b4b9a43b309453d Mon Sep 17 00:00:00 2001
-From: Jeff Layton <jlayton at redhat.com>
-Date: Tue, 7 Feb 2012 06:31:05 -0500
-Subject: [PATCH 19/30] cifs: don't return error from standard_receive3 after
- marking response malformed
-
-commit ff4fa4a25a33f92b5653bb43add0c63bea98d464 upstream.
-
-standard_receive3 will check the validity of the response from the
-server (via checkSMB). It'll pass the result of that check to handle_mid
-which will dequeue it and mark it with a status of
-MID_RESPONSE_MALFORMED if checkSMB returned an error. At that point,
-standard_receive3 will also return an error, which will make the
-demultiplex thread skip doing the callback for the mid.
-
-This is wrong -- if we were able to identify the request and the
-response is marked malformed, then we want the demultiplex thread to do
-the callback. Fix this by making standard_receive3 return 0 in this
-situation.
-
-Reported-and-Tested-by: Mark Moseley <moseleymark at gmail.com>
-Signed-off-by: Jeff Layton <jlayton at redhat.com>
-Signed-off-by: Steve French <smfrench at gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/cifs/connect.c | 7 ++++---
- 1 file changed, 4 insertions(+), 3 deletions(-)
-
-diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c
-index 63e4be4..720edf5 100644
---- a/fs/cifs/connect.c
-+++ b/fs/cifs/connect.c
-@@ -756,10 +756,11 @@ standard_receive3(struct TCP_Server_Info *server, struct mid_q_entry *mid)
- cifs_dump_mem("Bad SMB: ", buf,
- min_t(unsigned int, server->total_read, 48));
-
-- if (mid)
-- handle_mid(mid, server, smb_buffer, length);
-+ if (!mid)
-+ return length;
-
-- return length;
-+ handle_mid(mid, server, smb_buffer, length);
-+ return 0;
- }
-
- static int
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0020-crypto-sha512-Use-binary-and-instead-of-modulus.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0020-crypto-sha512-Use-binary-and-instead-of-modulus.patch
deleted file mode 100644
index 3453e9f..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0020-crypto-sha512-Use-binary-and-instead-of-modulus.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 1671634439eee95d8d54c7cd18e6ff1db20fc87c Mon Sep 17 00:00:00 2001
-From: Herbert Xu <herbert at gondor.apana.org.au>
-Date: Thu, 26 Jan 2012 15:03:16 +1100
-Subject: [PATCH 20/30] crypto: sha512 - Use binary and instead of modulus
-
-commit 58d7d18b5268febb8b1391c6dffc8e2aaa751fcd upstream.
-
-The previous patch used the modulus operator over a power of 2
-unnecessarily which may produce suboptimal binary code. This
-patch changes changes them to binary ands instead.
-
-Signed-off-by: Herbert Xu <herbert at gondor.apana.org.au>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- crypto/sha512_generic.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/crypto/sha512_generic.c b/crypto/sha512_generic.c
-index 88f160b..3edebfd 100644
---- a/crypto/sha512_generic.c
-+++ b/crypto/sha512_generic.c
-@@ -78,7 +78,7 @@ static inline void LOAD_OP(int I, u64 *W, const u8 *input)
-
- static inline void BLEND_OP(int I, u64 *W)
- {
-- W[I % 16] += s1(W[(I-2) % 16]) + W[(I-7) % 16] + s0(W[(I-15) % 16]);
-+ W[I & 15] += s1(W[(I-2) & 15]) + W[(I-7) & 15] + s0(W[(I-15) & 15]);
- }
-
- static void
-@@ -105,7 +105,7 @@ sha512_transform(u64 *state, const u8 *input)
-
- #define SHA512_16_79(i, a, b, c, d, e, f, g, h) \
- BLEND_OP(i, W); \
-- t1 = h + e1(e) + Ch(e, f, g) + sha512_K[i] + W[(i)%16]; \
-+ t1 = h + e1(e) + Ch(e, f, g) + sha512_K[i] + W[(i)&15]; \
- t2 = e0(a) + Maj(a, b, c); \
- d += t1; \
- h = t1 + t2
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0021-crypto-sha512-Avoid-stack-bloat-on-i386.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0021-crypto-sha512-Avoid-stack-bloat-on-i386.patch
deleted file mode 100644
index 2dcc063..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0021-crypto-sha512-Avoid-stack-bloat-on-i386.patch
+++ /dev/null
@@ -1,113 +0,0 @@
-From 16d9af6f04790a3847ebaa777cb1efa116a93b6e Mon Sep 17 00:00:00 2001
-From: Herbert Xu <herbert at gondor.apana.org.au>
-Date: Sun, 5 Feb 2012 15:09:28 +1100
-Subject: [PATCH 21/30] crypto: sha512 - Avoid stack bloat on i386
-
-commit 3a92d687c8015860a19213e3c102cad6b722f83c upstream.
-
-Unfortunately in reducing W from 80 to 16 we ended up unrolling
-the loop twice. As gcc has issues dealing with 64-bit ops on
-i386 this means that we end up using even more stack space (>1K).
-
-This patch solves the W reduction by moving LOAD_OP/BLEND_OP
-into the loop itself, thus avoiding the need to duplicate it.
-
-While the stack space still isn't great (>0.5K) it is at least
-in the same ball park as the amount of stack used for our C sha1
-implementation.
-
-Note that this patch basically reverts to the original code so
-the diff looks bigger than it really is.
-
-Signed-off-by: Herbert Xu <herbert at gondor.apana.org.au>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- crypto/sha512_generic.c | 68 ++++++++++++++++++++++-------------------------
- 1 file changed, 32 insertions(+), 36 deletions(-)
-
-diff --git a/crypto/sha512_generic.c b/crypto/sha512_generic.c
-index 3edebfd..f04af93 100644
---- a/crypto/sha512_generic.c
-+++ b/crypto/sha512_generic.c
-@@ -89,46 +89,42 @@ sha512_transform(u64 *state, const u8 *input)
- int i;
- u64 W[16];
-
-- /* load the input */
-- for (i = 0; i < 16; i++)
-- LOAD_OP(i, W, input);
--
- /* load the state into our registers */
- a=state[0]; b=state[1]; c=state[2]; d=state[3];
- e=state[4]; f=state[5]; g=state[6]; h=state[7];
-
--#define SHA512_0_15(i, a, b, c, d, e, f, g, h) \
-- t1 = h + e1(e) + Ch(e, f, g) + sha512_K[i] + W[i]; \
-- t2 = e0(a) + Maj(a, b, c); \
-- d += t1; \
-- h = t1 + t2
--
--#define SHA512_16_79(i, a, b, c, d, e, f, g, h) \
-- BLEND_OP(i, W); \
-- t1 = h + e1(e) + Ch(e, f, g) + sha512_K[i] + W[(i)&15]; \
-- t2 = e0(a) + Maj(a, b, c); \
-- d += t1; \
-- h = t1 + t2
--
-- for (i = 0; i < 16; i += 8) {
-- SHA512_0_15(i, a, b, c, d, e, f, g, h);
-- SHA512_0_15(i + 1, h, a, b, c, d, e, f, g);
-- SHA512_0_15(i + 2, g, h, a, b, c, d, e, f);
-- SHA512_0_15(i + 3, f, g, h, a, b, c, d, e);
-- SHA512_0_15(i + 4, e, f, g, h, a, b, c, d);
-- SHA512_0_15(i + 5, d, e, f, g, h, a, b, c);
-- SHA512_0_15(i + 6, c, d, e, f, g, h, a, b);
-- SHA512_0_15(i + 7, b, c, d, e, f, g, h, a);
-- }
-- for (i = 16; i < 80; i += 8) {
-- SHA512_16_79(i, a, b, c, d, e, f, g, h);
-- SHA512_16_79(i + 1, h, a, b, c, d, e, f, g);
-- SHA512_16_79(i + 2, g, h, a, b, c, d, e, f);
-- SHA512_16_79(i + 3, f, g, h, a, b, c, d, e);
-- SHA512_16_79(i + 4, e, f, g, h, a, b, c, d);
-- SHA512_16_79(i + 5, d, e, f, g, h, a, b, c);
-- SHA512_16_79(i + 6, c, d, e, f, g, h, a, b);
-- SHA512_16_79(i + 7, b, c, d, e, f, g, h, a);
-+ /* now iterate */
-+ for (i=0; i<80; i+=8) {
-+ if (!(i & 8)) {
-+ int j;
-+
-+ if (i < 16) {
-+ /* load the input */
-+ for (j = 0; j < 16; j++)
-+ LOAD_OP(i + j, W, input);
-+ } else {
-+ for (j = 0; j < 16; j++) {
-+ BLEND_OP(i + j, W);
-+ }
-+ }
-+ }
-+
-+ t1 = h + e1(e) + Ch(e,f,g) + sha512_K[i ] + W[(i & 15)];
-+ t2 = e0(a) + Maj(a,b,c); d+=t1; h=t1+t2;
-+ t1 = g + e1(d) + Ch(d,e,f) + sha512_K[i+1] + W[(i & 15) + 1];
-+ t2 = e0(h) + Maj(h,a,b); c+=t1; g=t1+t2;
-+ t1 = f + e1(c) + Ch(c,d,e) + sha512_K[i+2] + W[(i & 15) + 2];
-+ t2 = e0(g) + Maj(g,h,a); b+=t1; f=t1+t2;
-+ t1 = e + e1(b) + Ch(b,c,d) + sha512_K[i+3] + W[(i & 15) + 3];
-+ t2 = e0(f) + Maj(f,g,h); a+=t1; e=t1+t2;
-+ t1 = d + e1(a) + Ch(a,b,c) + sha512_K[i+4] + W[(i & 15) + 4];
-+ t2 = e0(e) + Maj(e,f,g); h+=t1; d=t1+t2;
-+ t1 = c + e1(h) + Ch(h,a,b) + sha512_K[i+5] + W[(i & 15) + 5];
-+ t2 = e0(d) + Maj(d,e,f); g+=t1; c=t1+t2;
-+ t1 = b + e1(g) + Ch(g,h,a) + sha512_K[i+6] + W[(i & 15) + 6];
-+ t2 = e0(c) + Maj(c,d,e); f+=t1; b=t1+t2;
-+ t1 = a + e1(f) + Ch(f,g,h) + sha512_K[i+7] + W[(i & 15) + 7];
-+ t2 = e0(b) + Maj(b,c,d); e+=t1; a=t1+t2;
- }
-
- state[0] += a; state[1] += b; state[2] += c; state[3] += d;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0022-backing-dev-fix-wakeup-timer-races-with-bdi_unregist.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0022-backing-dev-fix-wakeup-timer-races-with-bdi_unregist.patch
deleted file mode 100644
index c8cab32..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0022-backing-dev-fix-wakeup-timer-races-with-bdi_unregist.patch
+++ /dev/null
@@ -1,95 +0,0 @@
-From 9384e0438d5b84afda5d6478bc509681e1ea3777 Mon Sep 17 00:00:00 2001
-From: Rabin Vincent <rabin at rab.in>
-Date: Sun, 29 Jan 2012 12:17:33 -0600
-Subject: [PATCH 22/30] backing-dev: fix wakeup timer races with
- bdi_unregister()
-
-commit 2673b4cf5d59c3ee5e0c12f6d734d38770324dc4 upstream.
-
-While 7a401a972df8e18 ("backing-dev: ensure wakeup_timer is deleted")
-addressed the problem of the bdi being freed with a queued wakeup
-timer, there are other races that could happen if the wakeup timer
-expires after/during bdi_unregister(), before bdi_destroy() is called.
-
-wakeup_timer_fn() could attempt to wakeup a task which has already has
-been freed, or could access a NULL bdi->dev via the wake_forker_thread
-tracepoint.
-
-Cc: Jens Axboe <axboe at kernel.dk>
-Reported-by: Chanho Min <chanho.min at lge.com>
-Reviewed-by: Namjae Jeon <linkinjeon at gmail.com>
-Signed-off-by: Rabin Vincent <rabin at rab.in>
-Signed-off-by: Wu Fengguang <fengguang.wu at intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- mm/backing-dev.c | 25 +++++++++++++++++++------
- 1 file changed, 19 insertions(+), 6 deletions(-)
-
-diff --git a/mm/backing-dev.c b/mm/backing-dev.c
-index 71034f4..2b49dd2 100644
---- a/mm/backing-dev.c
-+++ b/mm/backing-dev.c
-@@ -318,7 +318,7 @@ static void wakeup_timer_fn(unsigned long data)
- if (bdi->wb.task) {
- trace_writeback_wake_thread(bdi);
- wake_up_process(bdi->wb.task);
-- } else {
-+ } else if (bdi->dev) {
- /*
- * When bdi tasks are inactive for long time, they are killed.
- * In this case we have to wake-up the forker thread which
-@@ -584,6 +584,8 @@ EXPORT_SYMBOL(bdi_register_dev);
- */
- static void bdi_wb_shutdown(struct backing_dev_info *bdi)
- {
-+ struct task_struct *task;
-+
- if (!bdi_cap_writeback_dirty(bdi))
- return;
-
-@@ -604,9 +606,14 @@ static void bdi_wb_shutdown(struct backing_dev_info *bdi)
- * unfreeze of the thread before calling kthread_stop(), otherwise
- * it would never exet if it is currently stuck in the refrigerator.
- */
-- if (bdi->wb.task) {
-- thaw_process(bdi->wb.task);
-- kthread_stop(bdi->wb.task);
-+ spin_lock_bh(&bdi->wb_lock);
-+ task = bdi->wb.task;
-+ bdi->wb.task = NULL;
-+ spin_unlock_bh(&bdi->wb_lock);
-+
-+ if (task) {
-+ thaw_process(task);
-+ kthread_stop(task);
- }
- }
-
-@@ -627,7 +634,9 @@ static void bdi_prune_sb(struct backing_dev_info *bdi)
-
- void bdi_unregister(struct backing_dev_info *bdi)
- {
-- if (bdi->dev) {
-+ struct device *dev = bdi->dev;
-+
-+ if (dev) {
- bdi_set_min_ratio(bdi, 0);
- trace_writeback_bdi_unregister(bdi);
- bdi_prune_sb(bdi);
-@@ -636,8 +645,12 @@ void bdi_unregister(struct backing_dev_info *bdi)
- if (!bdi_cap_flush_forker(bdi))
- bdi_wb_shutdown(bdi);
- bdi_debug_unregister(bdi);
-- device_unregister(bdi->dev);
-+
-+ spin_lock_bh(&bdi->wb_lock);
- bdi->dev = NULL;
-+ spin_unlock_bh(&bdi->wb_lock);
-+
-+ device_unregister(dev);
- }
- }
- EXPORT_SYMBOL(bdi_unregister);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0023-ALSA-intel8x0-Fix-default-inaudible-sound-on-Gateway.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0023-ALSA-intel8x0-Fix-default-inaudible-sound-on-Gateway.patch
deleted file mode 100644
index f13c3d8..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0023-ALSA-intel8x0-Fix-default-inaudible-sound-on-Gateway.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 4f8193db51b017330a91a36773a410f6aad015cb Mon Sep 17 00:00:00 2001
-From: Daniel T Chen <crimsun at ubuntu.com>
-Date: Mon, 13 Feb 2012 23:44:22 -0500
-Subject: [PATCH 23/30] ALSA: intel8x0: Fix default inaudible sound on Gateway
- M520
-
-commit 27c3afe6e1cf129faac90405121203962da08ff4 upstream.
-
-BugLink: https://bugs.launchpad.net/bugs/930842
-
-The reporter states that audio is inaudible by default without muting
-'External Amplifier'. Add a quirk to handle his SSID so that changing
-the control is not necessary.
-
-Reported-and-tested-by: Benjamin Carlson <elderbubba0810 at gmail.com>
-Signed-off-by: Daniel T Chen <crimsun at ubuntu.com>
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- sound/pci/intel8x0.c | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-diff --git a/sound/pci/intel8x0.c b/sound/pci/intel8x0.c
-index 11718b49..55f48fb 100644
---- a/sound/pci/intel8x0.c
-+++ b/sound/pci/intel8x0.c
-@@ -2102,6 +2102,12 @@ static struct ac97_quirk ac97_quirks[] __devinitdata = {
- },
- {
- .subvendor = 0x161f,
-+ .subdevice = 0x202f,
-+ .name = "Gateway M520",
-+ .type = AC97_TUNE_INV_EAPD
-+ },
-+ {
-+ .subvendor = 0x161f,
- .subdevice = 0x203a,
- .name = "Gateway 4525GZ", /* AD1981B */
- .type = AC97_TUNE_INV_EAPD
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0024-ALSA-hda-Fix-initialization-of-secondary-capture-sou.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0024-ALSA-hda-Fix-initialization-of-secondary-capture-sou.patch
deleted file mode 100644
index 13d9692..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0024-ALSA-hda-Fix-initialization-of-secondary-capture-sou.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 9384e994688b811eca5195e5dffd6b0e44dbe113 Mon Sep 17 00:00:00 2001
-From: Takashi Iwai <tiwai at suse.de>
-Date: Mon, 13 Feb 2012 15:04:06 +0100
-Subject: [PATCH 24/30] ALSA: hda - Fix initialization of secondary capture
- source on VT1705
-
-commit fc1156c0b0f7ad45ec03d919866349eeca2bf18c upstream.
-
-VT1705 codec has two ADCs where the secondary ADC has no MUX but only
-a fixed connection to the mic pin. This confused the driver and it
-tries always overriding the input-source selection by assumption of
-the existing MUX for the secondary ADC, resulted in resetting the
-input-source at each time PM (including power-saving) occurs.
-
-The fix is simply to check the existence of MUX for secondary ADCs in
-the initialization code.
-
-Tested-by: Anisse Astier <anisse at astier.eu>
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- sound/pci/hda/patch_via.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/sound/pci/hda/patch_via.c b/sound/pci/hda/patch_via.c
-index a0a3f50..1fe1308 100644
---- a/sound/pci/hda/patch_via.c
-+++ b/sound/pci/hda/patch_via.c
-@@ -665,6 +665,9 @@ static void via_auto_init_analog_input(struct hda_codec *codec)
- /* init input-src */
- for (i = 0; i < spec->num_adc_nids; i++) {
- int adc_idx = spec->inputs[spec->cur_mux[i]].adc_idx;
-+ /* secondary ADCs must have the unique MUX */
-+ if (i > 0 && !spec->mux_nids[i])
-+ break;
- if (spec->mux_nids[adc_idx]) {
- int mux_idx = spec->inputs[spec->cur_mux[i]].mux_idx;
- snd_hda_codec_write(codec, spec->mux_nids[adc_idx], 0,
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0025-ALSA-hda-Fix-silent-speaker-output-on-Acer-Aspire-69.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0025-ALSA-hda-Fix-silent-speaker-output-on-Acer-Aspire-69.patch
deleted file mode 100644
index 2f354b1..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0025-ALSA-hda-Fix-silent-speaker-output-on-Acer-Aspire-69.patch
+++ /dev/null
@@ -1,78 +0,0 @@
-From b307b548a38af9067b055ac797271a49b4838700 Mon Sep 17 00:00:00 2001
-From: Takashi Iwai <tiwai at suse.de>
-Date: Mon, 13 Feb 2012 15:25:07 +0100
-Subject: [PATCH 25/30] ALSA: hda - Fix silent speaker output on Acer Aspire
- 6935
-
-commit 02a237b24d57e2e2d5402c92549e9e792aa24359 upstream.
-
-Since 3.2 kernel, the driver starts trying to assign the multi-io DACs
-before the speaker, thus it assigns DAC2/3 for multi-io and DAC4 for
-the speaker for a standard laptop setup like a HP, a speaker, a mic-in
-and a line-in. However, on Acer Aspire 6935, it seems that the
-speaker pin 0x14 must be connected with either DAC1 or 2; otherwise it
-results in silence by some reason, although the codec itself allows
-the routing to DAC3/4.
-
-As a workaround, the connection list of each pin is reduced to be
-mapped to either only DAC1/2 or DAC3/4, so that the compatible
-assignment as in kernel 3.1 is achieved.
-
-Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=42740
-
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- sound/pci/hda/patch_realtek.c | 23 +++++++++++++++++++++++
- 1 file changed, 23 insertions(+)
-
-diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
-index 34e5fcc..9c197d4 100644
---- a/sound/pci/hda/patch_realtek.c
-+++ b/sound/pci/hda/patch_realtek.c
-@@ -4213,8 +4213,26 @@ enum {
- PINFIX_PB_M5210,
- PINFIX_ACER_ASPIRE_7736,
- PINFIX_ASUS_W90V,
-+ ALC889_FIXUP_DAC_ROUTE,
- };
-
-+/* Fix the connection of some pins for ALC889:
-+ * At least, Acer Aspire 5935 shows the connections to DAC3/4 don't
-+ * work correctly (bko#42740)
-+ */
-+static void alc889_fixup_dac_route(struct hda_codec *codec,
-+ const struct alc_fixup *fix, int action)
-+{
-+ if (action == ALC_FIXUP_ACT_PRE_PROBE) {
-+ hda_nid_t conn1[2] = { 0x0c, 0x0d };
-+ hda_nid_t conn2[2] = { 0x0e, 0x0f };
-+ snd_hda_override_conn_list(codec, 0x14, 2, conn1);
-+ snd_hda_override_conn_list(codec, 0x15, 2, conn1);
-+ snd_hda_override_conn_list(codec, 0x18, 2, conn2);
-+ snd_hda_override_conn_list(codec, 0x1a, 2, conn2);
-+ }
-+}
-+
- static const struct alc_fixup alc882_fixups[] = {
- [PINFIX_ABIT_AW9D_MAX] = {
- .type = ALC_FIXUP_PINS,
-@@ -4251,10 +4269,15 @@ static const struct alc_fixup alc882_fixups[] = {
- { }
- }
- },
-+ [ALC889_FIXUP_DAC_ROUTE] = {
-+ .type = ALC_FIXUP_FUNC,
-+ .v.func = alc889_fixup_dac_route,
-+ },
- };
-
- static const struct snd_pci_quirk alc882_fixup_tbl[] = {
- SND_PCI_QUIRK(0x1025, 0x0155, "Packard-Bell M5120", PINFIX_PB_M5210),
-+ SND_PCI_QUIRK(0x1025, 0x0259, "Acer Aspire 5935", ALC889_FIXUP_DAC_ROUTE),
- SND_PCI_QUIRK(0x1043, 0x1873, "ASUS W90V", PINFIX_ASUS_W90V),
- SND_PCI_QUIRK(0x17aa, 0x3a0d, "Lenovo Y530", PINFIX_LENOVO_Y530),
- SND_PCI_QUIRK(0x147b, 0x107a, "Abit AW9D-MAX", PINFIX_ABIT_AW9D_MAX),
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0026-mmc-atmel-mci-save-and-restore-sdioirq-when-soft-res.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0026-mmc-atmel-mci-save-and-restore-sdioirq-when-soft-res.patch
deleted file mode 100644
index b4454c6..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0026-mmc-atmel-mci-save-and-restore-sdioirq-when-soft-res.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From cd8248c03006fbaf7cc1546d9cabd33799bdd66e Mon Sep 17 00:00:00 2001
-From: Ludovic Desroches <ludovic.desroches at atmel.com>
-Date: Thu, 9 Feb 2012 11:55:29 +0100
-Subject: [PATCH 26/30] mmc: atmel-mci: save and restore sdioirq when soft
- reset is performed
-
-commit 18ee684b8ab666329e0a0a72d8b70f16fb0e2243 upstream.
-
-Sometimes a software reset is needed. Then some registers are saved and
-restored but the interrupt mask register is missing. It causes issues
-with sdio devices whose interrupts are masked after reset.
-
-Signed-off-by: Ludovic Desroches <ludovic.desroches at atmel.com>
-Signed-off-by: Nicolas Ferre <nicolas.ferre at atmel.com>
-Signed-off-by: Chris Ball <cjb at laptop.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/mmc/host/atmel-mci.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/drivers/mmc/host/atmel-mci.c b/drivers/mmc/host/atmel-mci.c
-index a7ee502..72bc756 100644
---- a/drivers/mmc/host/atmel-mci.c
-+++ b/drivers/mmc/host/atmel-mci.c
-@@ -965,11 +965,14 @@ static void atmci_start_request(struct atmel_mci *host,
- host->data_status = 0;
-
- if (host->need_reset) {
-+ iflags = atmci_readl(host, ATMCI_IMR);
-+ iflags &= (ATMCI_SDIOIRQA | ATMCI_SDIOIRQB);
- atmci_writel(host, ATMCI_CR, ATMCI_CR_SWRST);
- atmci_writel(host, ATMCI_CR, ATMCI_CR_MCIEN);
- atmci_writel(host, ATMCI_MR, host->mode_reg);
- if (host->caps.has_cfg_reg)
- atmci_writel(host, ATMCI_CFG, host->cfg_reg);
-+ atmci_writel(host, ATMCI_IER, iflags);
- host->need_reset = false;
- }
- atmci_writel(host, ATMCI_SDCR, slot->sdc_reg);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0027-mmc-dw_mmc-Fix-PIO-mode-with-support-of-highmem.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0027-mmc-dw_mmc-Fix-PIO-mode-with-support-of-highmem.patch
deleted file mode 100644
index 5b5ed33..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0027-mmc-dw_mmc-Fix-PIO-mode-with-support-of-highmem.patch
+++ /dev/null
@@ -1,353 +0,0 @@
-From 639e92e01ab0ae188751ea83327e4720d37909c4 Mon Sep 17 00:00:00 2001
-From: Seungwon Jeon <tgih.jun at samsung.com>
-Date: Thu, 9 Feb 2012 14:32:43 +0900
-Subject: [PATCH 27/30] mmc: dw_mmc: Fix PIO mode with support of highmem
-
-commit f9c2a0dc42a6938ff2a80e55ca2bbd1d5581c72e upstream.
-
-Current PIO mode makes a kernel crash with CONFIG_HIGHMEM.
-Highmem pages have a NULL from sg_virt(sg).
-This patch fixes the following problem.
-
-Unable to handle kernel NULL pointer dereference at virtual address 00000000
-pgd = c0004000
-[00000000] *pgd=00000000
-Internal error: Oops: 817 [#1] PREEMPT SMP
-Modules linked in:
-CPU: 0 Not tainted (3.0.15-01423-gdbf465f #589)
-PC is at dw_mci_pull_data32+0x4c/0x9c
-LR is at dw_mci_read_data_pio+0x54/0x1f0
-pc : [<c0358824>] lr : [<c035988c>] psr: 20000193
-sp : c0619d48 ip : c0619d70 fp : c0619d6c
-r10: 00000000 r9 : 00000002 r8 : 00001000
-r7 : 00000200 r6 : 00000000 r5 : e1dd3100 r4 : 00000000
-r3 : 65622023 r2 : 0000007f r1 : eeb96000 r0 : e1dd3100
-Flags: nzCv IRQs off FIQs on Mode SVC_32 ISA ARM Segment
-xkernel
-Control: 10c5387d Table: 61e2004a DAC: 00000015
-Process swapper (pid: 0, stack limit = 0xc06182f0)
-Stack: (0xc0619d48 to 0xc061a000)
-9d40: e1dd3100 e1a4f000 00000000 e1dd3100 e1a4f000 00000200
-9d60: c0619da4 c0619d70 c035988c c03587e4 c0619d9c e18158f4 e1dd3100 e1dd3100
-9d80: 00000020 00000000 00000000 00000020 c06e8a84 00000000 c0619e04 c0619da8
-9da0: c0359b24 c0359844 e18158f4 e1dd3164 e1dd3168 e1dd3150 3d02fc79 e1dd3154
-9dc0: e1dd3178 00000000 00000020 00000000 e1dd3150 00000000 c10dd7e8 e1a84900
-9de0: c061e7cc 00000000 00000000 0000008d c06e8a84 c061e780 c0619e4c c0619e08
-9e00: c00c4738 c0359a34 3d02fc79 00000000 c0619e4c c05a1698 c05a1670 c05a165c
-9e20: c04de8b0 c061e780 c061e7cc e1a84900 ffffed68 0000008d c0618000 00000000
-9e40: c0619e6c c0619e50 c00c48b4 c00c46c8 c061e780 c00423ac c061e7cc ffffed68
-9e60: c0619e8c c0619e70 c00c7358 c00c487c 0000008d ffffee38 c0618000 ffffed68
-9e80: c0619ea4 c0619e90 c00c4258 c00c72b0 c00423ac ffffee38 c0619ecc c0619ea8
-9ea0: c004241c c00c4234 ffffffff f8810000 0000006d 00000002 00000001 7fffffff
-9ec0: c0619f44 c0619ed0 c0048bc0 c00423c4 220ae7a9 00000000 386f0d30 0005d3a4
-9ee0: c00423ac c10dd0b8 c06f2cd8 c0618000 c0594778 c003a674 7fffffff c0619f44
-9f00: 386f0d30 c0619f18 c00a6f94 c005be3c 80000013 ffffffff 386f0d30 0005d3a4
-9f20: 386f0d30 0005d2d1 c10dd0a8 c10dd0b8 c06f2cd8 c0618000 c0619f74 c0619f48
-9f40: c0345858 c005be00 c00a2440 c0618000 c0618000 c00410d8 c06c1944 c00410fc
-9f60: c0594778 c003a674 c0619f9c c0619f78 c004a7e8 c03457b4 c0618000 c06c18f8
-9f80: 00000000 c0039c70 c06c18d4 c003a674 c0619fb4 c0619fa0 c04ceafc c004a714
-9fa0: c06287b4 c06c18f8 c0619ff4 c0619fb8 c0008b68 c04cea68 c0008578 00000000
-9fc0: 00000000 c003a674 00000000 10c5387d c0628658 c003aa78 c062f1c4 4000406a
-9fe0: 413fc090 00000000 00000000 c0619ff8 40008044 c0008858 00000000 00000000
-Backtrace:
-[<c03587d8>] (dw_mci_pull_data32+0x0/0x9c) from [<c035988c>] (dw_mci_read_data_pio+0x54/0x1f0)
- r6:00000200 r5:e1a4f000 r4:e1dd3100
- [<c0359838>] (dw_mci_read_data_pio+0x0/0x1f0) from [<c0359b24>] (dw_mci_interrupt+0xfc/0x4a4)
-[<c0359a28>] (dw_mci_interrupt+0x0/0x4a4) from [<c00c4738>] (handle_irq_event_percpu+0x7c/0x1b4)
-[<c00c46bc>] (handle_irq_event_percpu+0x0/0x1b4) from [<c00c48b4>] (handle_irq_event+0x44/0x64)
-[<c00c4870>] (handle_irq_event+0x0/0x64) from [<c00c7358>] (handle_fasteoi_irq+0xb4/0x124)
- r7:ffffed68 r6:c061e7cc r5:c00423ac r4:c061e780
- [<c00c72a4>] (handle_fasteoi_irq+0x0/0x124) from [<c00c4258>] (generic_handle_irq+0x30/0x38)
- r7:ffffed68 r6:c0618000 r5:ffffee38 r4:0000008d
- [<c00c4228>] (generic_handle_irq+0x0/0x38) from [<c004241c>] (asm_do_IRQ+0x64/0xe0)
- r5:ffffee38 r4:c00423ac
- [<c00423b8>] (asm_do_IRQ+0x0/0xe0) from [<c0048bc0>] (__irq_svc+0x80/0x14c)
-Exception stack(0xc0619ed0 to 0xc0619f18)
-
-Signed-off-by: Seungwon Jeon <tgih.jun at samsung.com>
-Acked-by: Will Newton <will.newton at imgtec.com>
-Signed-off-by: Chris Ball <cjb at laptop.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/mmc/host/dw_mmc.c | 144 +++++++++++++++++++++++---------------------
- include/linux/mmc/dw_mmc.h | 6 +-
- 2 files changed, 79 insertions(+), 71 deletions(-)
-
-diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
-index 3aaeb08..baf3d42 100644
---- a/drivers/mmc/host/dw_mmc.c
-+++ b/drivers/mmc/host/dw_mmc.c
-@@ -22,7 +22,6 @@
- #include <linux/ioport.h>
- #include <linux/module.h>
- #include <linux/platform_device.h>
--#include <linux/scatterlist.h>
- #include <linux/seq_file.h>
- #include <linux/slab.h>
- #include <linux/stat.h>
-@@ -502,8 +501,14 @@ static void dw_mci_submit_data(struct dw_mci *host, struct mmc_data *data)
- host->dir_status = DW_MCI_SEND_STATUS;
-
- if (dw_mci_submit_data_dma(host, data)) {
-+ int flags = SG_MITER_ATOMIC;
-+ if (host->data->flags & MMC_DATA_READ)
-+ flags |= SG_MITER_TO_SG;
-+ else
-+ flags |= SG_MITER_FROM_SG;
-+
-+ sg_miter_start(&host->sg_miter, data->sg, data->sg_len, flags);
- host->sg = data->sg;
-- host->pio_offset = 0;
- host->part_buf_start = 0;
- host->part_buf_count = 0;
-
-@@ -953,6 +958,7 @@ static void dw_mci_tasklet_func(unsigned long priv)
- * generates a block interrupt, hence setting
- * the scatter-gather pointer to NULL.
- */
-+ sg_miter_stop(&host->sg_miter);
- host->sg = NULL;
- ctrl = mci_readl(host, CTRL);
- ctrl |= SDMMC_CTRL_FIFO_RESET;
-@@ -1286,54 +1292,44 @@ static void dw_mci_pull_data(struct dw_mci *host, void *buf, int cnt)
-
- static void dw_mci_read_data_pio(struct dw_mci *host)
- {
-- struct scatterlist *sg = host->sg;
-- void *buf = sg_virt(sg);
-- unsigned int offset = host->pio_offset;
-+ struct sg_mapping_iter *sg_miter = &host->sg_miter;
-+ void *buf;
-+ unsigned int offset;
- struct mmc_data *data = host->data;
- int shift = host->data_shift;
- u32 status;
- unsigned int nbytes = 0, len;
-+ unsigned int remain, fcnt;
-
- do {
-- len = host->part_buf_count +
-- (SDMMC_GET_FCNT(mci_readl(host, STATUS)) << shift);
-- if (offset + len <= sg->length) {
-+ if (!sg_miter_next(sg_miter))
-+ goto done;
-+
-+ host->sg = sg_miter->__sg;
-+ buf = sg_miter->addr;
-+ remain = sg_miter->length;
-+ offset = 0;
-+
-+ do {
-+ fcnt = (SDMMC_GET_FCNT(mci_readl(host, STATUS))
-+ << shift) + host->part_buf_count;
-+ len = min(remain, fcnt);
-+ if (!len)
-+ break;
- dw_mci_pull_data(host, (void *)(buf + offset), len);
--
- offset += len;
- nbytes += len;
--
-- if (offset == sg->length) {
-- flush_dcache_page(sg_page(sg));
-- host->sg = sg = sg_next(sg);
-- if (!sg)
-- goto done;
--
-- offset = 0;
-- buf = sg_virt(sg);
-- }
-- } else {
-- unsigned int remaining = sg->length - offset;
-- dw_mci_pull_data(host, (void *)(buf + offset),
-- remaining);
-- nbytes += remaining;
--
-- flush_dcache_page(sg_page(sg));
-- host->sg = sg = sg_next(sg);
-- if (!sg)
-- goto done;
--
-- offset = len - remaining;
-- buf = sg_virt(sg);
-- dw_mci_pull_data(host, buf, offset);
-- nbytes += offset;
-- }
-+ remain -= len;
-+ } while (remain);
-+ sg_miter->consumed = offset;
-
- status = mci_readl(host, MINTSTS);
- mci_writel(host, RINTSTS, SDMMC_INT_RXDR);
- if (status & DW_MCI_DATA_ERROR_FLAGS) {
- host->data_status = status;
- data->bytes_xfered += nbytes;
-+ sg_miter_stop(sg_miter);
-+ host->sg = NULL;
- smp_wmb();
-
- set_bit(EVENT_DATA_ERROR, &host->pending_events);
-@@ -1342,65 +1338,66 @@ static void dw_mci_read_data_pio(struct dw_mci *host)
- return;
- }
- } while (status & SDMMC_INT_RXDR); /*if the RXDR is ready read again*/
-- host->pio_offset = offset;
- data->bytes_xfered += nbytes;
-+
-+ if (!remain) {
-+ if (!sg_miter_next(sg_miter))
-+ goto done;
-+ sg_miter->consumed = 0;
-+ }
-+ sg_miter_stop(sg_miter);
- return;
-
- done:
- data->bytes_xfered += nbytes;
-+ sg_miter_stop(sg_miter);
-+ host->sg = NULL;
- smp_wmb();
- set_bit(EVENT_XFER_COMPLETE, &host->pending_events);
- }
-
- static void dw_mci_write_data_pio(struct dw_mci *host)
- {
-- struct scatterlist *sg = host->sg;
-- void *buf = sg_virt(sg);
-- unsigned int offset = host->pio_offset;
-+ struct sg_mapping_iter *sg_miter = &host->sg_miter;
-+ void *buf;
-+ unsigned int offset;
- struct mmc_data *data = host->data;
- int shift = host->data_shift;
- u32 status;
- unsigned int nbytes = 0, len;
-+ unsigned int fifo_depth = host->fifo_depth;
-+ unsigned int remain, fcnt;
-
- do {
-- len = ((host->fifo_depth -
-- SDMMC_GET_FCNT(mci_readl(host, STATUS))) << shift)
-- - host->part_buf_count;
-- if (offset + len <= sg->length) {
-+ if (!sg_miter_next(sg_miter))
-+ goto done;
-+
-+ host->sg = sg_miter->__sg;
-+ buf = sg_miter->addr;
-+ remain = sg_miter->length;
-+ offset = 0;
-+
-+ do {
-+ fcnt = ((fifo_depth -
-+ SDMMC_GET_FCNT(mci_readl(host, STATUS)))
-+ << shift) - host->part_buf_count;
-+ len = min(remain, fcnt);
-+ if (!len)
-+ break;
- host->push_data(host, (void *)(buf + offset), len);
--
- offset += len;
- nbytes += len;
-- if (offset == sg->length) {
-- host->sg = sg = sg_next(sg);
-- if (!sg)
-- goto done;
--
-- offset = 0;
-- buf = sg_virt(sg);
-- }
-- } else {
-- unsigned int remaining = sg->length - offset;
--
-- host->push_data(host, (void *)(buf + offset),
-- remaining);
-- nbytes += remaining;
--
-- host->sg = sg = sg_next(sg);
-- if (!sg)
-- goto done;
--
-- offset = len - remaining;
-- buf = sg_virt(sg);
-- host->push_data(host, (void *)buf, offset);
-- nbytes += offset;
-- }
-+ remain -= len;
-+ } while (remain);
-+ sg_miter->consumed = offset;
-
- status = mci_readl(host, MINTSTS);
- mci_writel(host, RINTSTS, SDMMC_INT_TXDR);
- if (status & DW_MCI_DATA_ERROR_FLAGS) {
- host->data_status = status;
- data->bytes_xfered += nbytes;
-+ sg_miter_stop(sg_miter);
-+ host->sg = NULL;
-
- smp_wmb();
-
-@@ -1410,12 +1407,20 @@ static void dw_mci_write_data_pio(struct dw_mci *host)
- return;
- }
- } while (status & SDMMC_INT_TXDR); /* if TXDR write again */
-- host->pio_offset = offset;
- data->bytes_xfered += nbytes;
-+
-+ if (!remain) {
-+ if (!sg_miter_next(sg_miter))
-+ goto done;
-+ sg_miter->consumed = 0;
-+ }
-+ sg_miter_stop(sg_miter);
- return;
-
- done:
- data->bytes_xfered += nbytes;
-+ sg_miter_stop(sg_miter);
-+ host->sg = NULL;
- smp_wmb();
- set_bit(EVENT_XFER_COMPLETE, &host->pending_events);
- }
-@@ -1618,6 +1623,7 @@ static void dw_mci_work_routine_card(struct work_struct *work)
- * block interrupt, hence setting the
- * scatter-gather pointer to NULL.
- */
-+ sg_miter_stop(&host->sg_miter);
- host->sg = NULL;
-
- ctrl = mci_readl(host, CTRL);
-diff --git a/include/linux/mmc/dw_mmc.h b/include/linux/mmc/dw_mmc.h
-index 6dc9b80..107fcb3 100644
---- a/include/linux/mmc/dw_mmc.h
-+++ b/include/linux/mmc/dw_mmc.h
-@@ -14,6 +14,8 @@
- #ifndef LINUX_MMC_DW_MMC_H
- #define LINUX_MMC_DW_MMC_H
-
-+#include <linux/scatterlist.h>
-+
- #define MAX_MCI_SLOTS 2
-
- enum dw_mci_state {
-@@ -40,7 +42,7 @@ struct mmc_data;
- * @lock: Spinlock protecting the queue and associated data.
- * @regs: Pointer to MMIO registers.
- * @sg: Scatterlist entry currently being processed by PIO code, if any.
-- * @pio_offset: Offset into the current scatterlist entry.
-+ * @sg_miter: PIO mapping scatterlist iterator.
- * @cur_slot: The slot which is currently using the controller.
- * @mrq: The request currently being processed on @cur_slot,
- * or NULL if the controller is idle.
-@@ -115,7 +117,7 @@ struct dw_mci {
- void __iomem *regs;
-
- struct scatterlist *sg;
-- unsigned int pio_offset;
-+ struct sg_mapping_iter sg_miter;
-
- struct dw_mci_slot *cur_slot;
- struct mmc_request *mrq;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0028-xen-pvhvm-do-not-remap-pirqs-onto-evtchns-if-xen_hav.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0028-xen-pvhvm-do-not-remap-pirqs-onto-evtchns-if-xen_hav.patch
deleted file mode 100644
index 47efd20..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0028-xen-pvhvm-do-not-remap-pirqs-onto-evtchns-if-xen_hav.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 229e968f6dab9e07fcc5ffa6c22f4b754ab24018 Mon Sep 17 00:00:00 2001
-From: Stefano Stabellini <stefano.stabellini at eu.citrix.com>
-Date: Mon, 30 Jan 2012 14:31:46 +0000
-Subject: [PATCH 28/30] xen pvhvm: do not remap pirqs onto evtchns if
- !xen_have_vector_callback
-
-commit 207d543f472c1ac9552df79838dc807cbcaa9740 upstream.
-
-Signed-off-by: Stefano Stabellini <stefano.stabellini at eu.citrix.com>
-Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk at oracle.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/x86/pci/xen.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/arch/x86/pci/xen.c b/arch/x86/pci/xen.c
-index 492ade8..d99346e 100644
---- a/arch/x86/pci/xen.c
-+++ b/arch/x86/pci/xen.c
-@@ -374,7 +374,7 @@ int __init pci_xen_init(void)
-
- int __init pci_xen_hvm_init(void)
- {
-- if (!xen_feature(XENFEAT_hvm_pirqs))
-+ if (!xen_have_vector_callback || !xen_feature(XENFEAT_hvm_pirqs))
- return 0;
-
- #ifdef CONFIG_ACPI
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0029-crypto-sha512-use-standard-ror64.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0029-crypto-sha512-use-standard-ror64.patch
deleted file mode 100644
index 32006a5..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0029-crypto-sha512-use-standard-ror64.patch
+++ /dev/null
@@ -1,90 +0,0 @@
-From 60957c889523f4f214ea43608020c33b049bc675 Mon Sep 17 00:00:00 2001
-From: Alexey Dobriyan <adobriyan at gmail.com>
-Date: Sat, 14 Jan 2012 21:44:49 +0300
-Subject: [PATCH 29/30] crypto: sha512 - use standard ror64()
-
-commit f2ea0f5f04c97b48c88edccba52b0682fbe45087 upstream.
-
-Use standard ror64() instead of hand-written.
-There is no standard ror64, so create it.
-
-The difference is shift value being "unsigned int" instead of uint64_t
-(for which there is no reason). gcc starts to emit native ROR instructions
-which it doesn't do for some reason currently. This should make the code
-faster.
-
-Patch survives in-tree crypto test and ping flood with hmac(sha512) on.
-
-Signed-off-by: Alexey Dobriyan <adobriyan at gmail.com>
-Signed-off-by: Herbert Xu <herbert at gondor.apana.org.au>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- crypto/sha512_generic.c | 13 ++++---------
- include/linux/bitops.h | 20 ++++++++++++++++++++
- 2 files changed, 24 insertions(+), 9 deletions(-)
-
-diff --git a/crypto/sha512_generic.c b/crypto/sha512_generic.c
-index f04af93..107f6f7 100644
---- a/crypto/sha512_generic.c
-+++ b/crypto/sha512_generic.c
-@@ -31,11 +31,6 @@ static inline u64 Maj(u64 x, u64 y, u64 z)
- return (x & y) | (z & (x | y));
- }
-
--static inline u64 RORu64(u64 x, u64 y)
--{
-- return (x >> y) | (x << (64 - y));
--}
--
- static const u64 sha512_K[80] = {
- 0x428a2f98d728ae22ULL, 0x7137449123ef65cdULL, 0xb5c0fbcfec4d3b2fULL,
- 0xe9b5dba58189dbbcULL, 0x3956c25bf348b538ULL, 0x59f111f1b605d019ULL,
-@@ -66,10 +61,10 @@ static const u64 sha512_K[80] = {
- 0x5fcb6fab3ad6faecULL, 0x6c44198c4a475817ULL,
- };
-
--#define e0(x) (RORu64(x,28) ^ RORu64(x,34) ^ RORu64(x,39))
--#define e1(x) (RORu64(x,14) ^ RORu64(x,18) ^ RORu64(x,41))
--#define s0(x) (RORu64(x, 1) ^ RORu64(x, 8) ^ (x >> 7))
--#define s1(x) (RORu64(x,19) ^ RORu64(x,61) ^ (x >> 6))
-+#define e0(x) (ror64(x,28) ^ ror64(x,34) ^ ror64(x,39))
-+#define e1(x) (ror64(x,14) ^ ror64(x,18) ^ ror64(x,41))
-+#define s0(x) (ror64(x, 1) ^ ror64(x, 8) ^ (x >> 7))
-+#define s1(x) (ror64(x,19) ^ ror64(x,61) ^ (x >> 6))
-
- static inline void LOAD_OP(int I, u64 *W, const u8 *input)
- {
-diff --git a/include/linux/bitops.h b/include/linux/bitops.h
-index a3ef66a..fc8a3ff 100644
---- a/include/linux/bitops.h
-+++ b/include/linux/bitops.h
-@@ -50,6 +50,26 @@ static inline unsigned long hweight_long(unsigned long w)
- }
-
- /**
-+ * rol64 - rotate a 64-bit value left
-+ * @word: value to rotate
-+ * @shift: bits to roll
-+ */
-+static inline __u64 rol64(__u64 word, unsigned int shift)
-+{
-+ return (word << shift) | (word >> (64 - shift));
-+}
-+
-+/**
-+ * ror64 - rotate a 64-bit value right
-+ * @word: value to rotate
-+ * @shift: bits to roll
-+ */
-+static inline __u64 ror64(__u64 word, unsigned int shift)
-+{
-+ return (word >> shift) | (word << (64 - shift));
-+}
-+
-+/**
- * rol32 - rotate a 32-bit value left
- * @word: value to rotate
- * @shift: bits to roll
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0030-Linux-3.2.7.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0030-Linux-3.2.7.patch
deleted file mode 100644
index d70804d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.7/0030-Linux-3.2.7.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 0d5f4ea4143fac3598a2b56fd4630a8d482e7cee Mon Sep 17 00:00:00 2001
-From: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Date: Mon, 20 Feb 2012 13:42:16 -0800
-Subject: [PATCH 30/30] Linux 3.2.7
-
----
- Makefile | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Makefile b/Makefile
-index 47fe496..d1bdc90 100644
---- a/Makefile
-+++ b/Makefile
-@@ -1,6 +1,6 @@
- VERSION = 3
- PATCHLEVEL = 2
--SUBLEVEL = 6
-+SUBLEVEL = 7
- EXTRAVERSION =
- NAME = Saber-toothed Squirrel
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.8/0001-i387-math_state_restore-isn-t-called-from-asm.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.8/0001-i387-math_state_restore-isn-t-called-from-asm.patch
deleted file mode 100644
index 4c9f3de..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.8/0001-i387-math_state_restore-isn-t-called-from-asm.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From bd87aeb823d3559bf824d0446e70f5e2fb2f218e Mon Sep 17 00:00:00 2001
-From: Linus Torvalds <torvalds at linux-foundation.org>
-Date: Mon, 13 Feb 2012 13:47:25 -0800
-Subject: [PATCH 01/11] i387: math_state_restore() isn't called from asm
-
-commit be98c2cdb15ba26148cd2bd58a857d4f7759ed38 upstream.
-
-It was marked asmlinkage for some really old and stale legacy reasons.
-Fix that and the equally stale comment.
-
-Noticed when debugging the irq_fpu_usable() bugs.
-
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/x86/include/asm/i387.h | 2 +-
- arch/x86/kernel/traps.c | 6 +++---
- 2 files changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/arch/x86/include/asm/i387.h b/arch/x86/include/asm/i387.h
-index c9e09ea..cba1432 100644
---- a/arch/x86/include/asm/i387.h
-+++ b/arch/x86/include/asm/i387.h
-@@ -29,7 +29,7 @@ extern unsigned int sig_xstate_size;
- extern void fpu_init(void);
- extern void mxcsr_feature_mask_init(void);
- extern int init_fpu(struct task_struct *child);
--extern asmlinkage void math_state_restore(void);
-+extern void math_state_restore(void);
- extern void __math_state_restore(void);
- extern int dump_fpu(struct pt_regs *, struct user_i387_struct *);
-
-diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c
-index a8e3eb8..727e6c1 100644
---- a/arch/x86/kernel/traps.c
-+++ b/arch/x86/kernel/traps.c
-@@ -590,10 +590,10 @@ void __math_state_restore(void)
- * Careful.. There are problems with IBM-designed IRQ13 behaviour.
- * Don't touch unless you *really* know how it works.
- *
-- * Must be called with kernel preemption disabled (in this case,
-- * local interrupts are disabled at the call-site in entry.S).
-+ * Must be called with kernel preemption disabled (eg with local
-+ * local interrupts as in the case of do_device_not_available).
- */
--asmlinkage void math_state_restore(void)
-+void math_state_restore(void)
- {
- struct thread_info *thread = current_thread_info();
- struct task_struct *tsk = thread->task;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.8/0002-i387-make-irq_fpu_usable-tests-more-robust.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.8/0002-i387-make-irq_fpu_usable-tests-more-robust.patch
deleted file mode 100644
index ae42298..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.8/0002-i387-make-irq_fpu_usable-tests-more-robust.patch
+++ /dev/null
@@ -1,131 +0,0 @@
-From b55aa0fd65bf5076507e1380ec3ee1431ff5bb16 Mon Sep 17 00:00:00 2001
-From: Linus Torvalds <torvalds at linux-foundation.org>
-Date: Mon, 13 Feb 2012 13:56:14 -0800
-Subject: [PATCH 02/11] i387: make irq_fpu_usable() tests more robust
-
-commit 5b1cbac37798805c1fee18c8cebe5c0a13975b17 upstream.
-
-Some code - especially the crypto layer - wants to use the x86
-FP/MMX/AVX register set in what may be interrupt (typically softirq)
-context.
-
-That *can* be ok, but the tests for when it was ok were somewhat
-suspect. We cannot touch the thread-specific status bits either, so
-we'd better check that we're not going to try to save FP state or
-anything like that.
-
-Now, it may be that the TS bit is always cleared *before* we set the
-USEDFPU bit (and only set when we had already cleared the USEDFP
-before), so the TS bit test may actually have been sufficient, but it
-certainly was not obviously so.
-
-So this explicitly verifies that we will not touch the TS_USEDFPU bit,
-and adds a few related sanity-checks. Because it seems that somehow
-AES-NI is corrupting user FP state. The cause is not clear, and this
-patch doesn't fix it, but while debugging it I really wanted the code to
-be more obviously correct and robust.
-
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/x86/include/asm/i387.h | 54 ++++++++++++++++++++++++++++++++++++-------
- arch/x86/kernel/traps.c | 1 +
- 2 files changed, 47 insertions(+), 8 deletions(-)
-
-diff --git a/arch/x86/include/asm/i387.h b/arch/x86/include/asm/i387.h
-index cba1432..a436582 100644
---- a/arch/x86/include/asm/i387.h
-+++ b/arch/x86/include/asm/i387.h
-@@ -307,9 +307,54 @@ static inline void __clear_fpu(struct task_struct *tsk)
- }
- }
-
-+/*
-+ * Were we in an interrupt that interrupted kernel mode?
-+ *
-+ * We can do a kernel_fpu_begin/end() pair *ONLY* if that
-+ * pair does nothing at all: TS_USEDFPU must be clear (so
-+ * that we don't try to save the FPU state), and TS must
-+ * be set (so that the clts/stts pair does nothing that is
-+ * visible in the interrupted kernel thread).
-+ */
-+static inline bool interrupted_kernel_fpu_idle(void)
-+{
-+ return !(current_thread_info()->status & TS_USEDFPU) &&
-+ (read_cr0() & X86_CR0_TS);
-+}
-+
-+/*
-+ * Were we in user mode (or vm86 mode) when we were
-+ * interrupted?
-+ *
-+ * Doing kernel_fpu_begin/end() is ok if we are running
-+ * in an interrupt context from user mode - we'll just
-+ * save the FPU state as required.
-+ */
-+static inline bool interrupted_user_mode(void)
-+{
-+ struct pt_regs *regs = get_irq_regs();
-+ return regs && user_mode_vm(regs);
-+}
-+
-+/*
-+ * Can we use the FPU in kernel mode with the
-+ * whole "kernel_fpu_begin/end()" sequence?
-+ *
-+ * It's always ok in process context (ie "not interrupt")
-+ * but it is sometimes ok even from an irq.
-+ */
-+static inline bool irq_fpu_usable(void)
-+{
-+ return !in_interrupt() ||
-+ interrupted_user_mode() ||
-+ interrupted_kernel_fpu_idle();
-+}
-+
- static inline void kernel_fpu_begin(void)
- {
- struct thread_info *me = current_thread_info();
-+
-+ WARN_ON_ONCE(!irq_fpu_usable());
- preempt_disable();
- if (me->status & TS_USEDFPU)
- __save_init_fpu(me->task);
-@@ -323,14 +368,6 @@ static inline void kernel_fpu_end(void)
- preempt_enable();
- }
-
--static inline bool irq_fpu_usable(void)
--{
-- struct pt_regs *regs;
--
-- return !in_interrupt() || !(regs = get_irq_regs()) || \
-- user_mode(regs) || (read_cr0() & X86_CR0_TS);
--}
--
- /*
- * Some instructions like VIA's padlock instructions generate a spurious
- * DNA fault but don't modify SSE registers. And these instructions
-@@ -367,6 +404,7 @@ static inline void irq_ts_restore(int TS_state)
- */
- static inline void save_init_fpu(struct task_struct *tsk)
- {
-+ WARN_ON_ONCE(task_thread_info(tsk)->status & TS_USEDFPU);
- preempt_disable();
- __save_init_fpu(tsk);
- stts();
-diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c
-index 727e6c1..41e0b8c 100644
---- a/arch/x86/kernel/traps.c
-+++ b/arch/x86/kernel/traps.c
-@@ -622,6 +622,7 @@ EXPORT_SYMBOL_GPL(math_state_restore);
- dotraplinkage void __kprobes
- do_device_not_available(struct pt_regs *regs, long error_code)
- {
-+ WARN_ON_ONCE(!user_mode_vm(regs));
- #ifdef CONFIG_MATH_EMULATION
- if (read_cr0() & X86_CR0_EM) {
- struct math_emu_info info = { };
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.8/0003-i387-fix-sense-of-sanity-check.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.8/0003-i387-fix-sense-of-sanity-check.patch
deleted file mode 100644
index 6e5ce1d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.8/0003-i387-fix-sense-of-sanity-check.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 3bb2981d91d2cf06584bc91c07ed07e6bde9e1df Mon Sep 17 00:00:00 2001
-From: Linus Torvalds <torvalds at linux-foundation.org>
-Date: Wed, 15 Feb 2012 08:05:18 -0800
-Subject: [PATCH 03/11] i387: fix sense of sanity check
-
-commit c38e23456278e967f094b08247ffc3711b1029b2 upstream.
-
-The check for save_init_fpu() (introduced in commit 5b1cbac37798: "i387:
-make irq_fpu_usable() tests more robust") was the wrong way around, but
-I hadn't noticed, because my "tests" were bogus: the FPU exceptions are
-disabled by default, so even doing a divide by zero never actually
-triggers this code at all unless you do extra work to enable them.
-
-So if anybody did enable them, they'd get one spurious warning.
-
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/x86/include/asm/i387.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/arch/x86/include/asm/i387.h b/arch/x86/include/asm/i387.h
-index a436582..262bea9 100644
---- a/arch/x86/include/asm/i387.h
-+++ b/arch/x86/include/asm/i387.h
-@@ -404,7 +404,7 @@ static inline void irq_ts_restore(int TS_state)
- */
- static inline void save_init_fpu(struct task_struct *tsk)
- {
-- WARN_ON_ONCE(task_thread_info(tsk)->status & TS_USEDFPU);
-+ WARN_ON_ONCE(!(task_thread_info(tsk)->status & TS_USEDFPU));
- preempt_disable();
- __save_init_fpu(tsk);
- stts();
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.8/0004-i387-fix-x86-64-preemption-unsafe-user-stack-save-re.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.8/0004-i387-fix-x86-64-preemption-unsafe-user-stack-save-re.patch
deleted file mode 100644
index 2420aaf..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.8/0004-i387-fix-x86-64-preemption-unsafe-user-stack-save-re.patch
+++ /dev/null
@@ -1,163 +0,0 @@
-From 7210b32988217b6b9dac74789ec4d349a1a191fc Mon Sep 17 00:00:00 2001
-From: Linus Torvalds <torvalds at linux-foundation.org>
-Date: Thu, 16 Feb 2012 09:15:04 -0800
-Subject: [PATCH 04/11] i387: fix x86-64 preemption-unsafe user stack
- save/restore
-
-commit 15d8791cae75dca27bfda8ecfe87dca9379d6bb0 upstream.
-
-Commit 5b1cbac37798 ("i387: make irq_fpu_usable() tests more robust")
-added a sanity check to the #NM handler to verify that we never cause
-the "Device Not Available" exception in kernel mode.
-
-However, that check actually pinpointed a (fundamental) race where we do
-cause that exception as part of the signal stack FPU state save/restore
-code.
-
-Because we use the floating point instructions themselves to save and
-restore state directly from user mode, we cannot do that atomically with
-testing the TS_USEDFPU bit: the user mode access itself may cause a page
-fault, which causes a task switch, which saves and restores the FP/MMX
-state from the kernel buffers.
-
-This kind of "recursive" FP state save is fine per se, but it means that
-when the signal stack save/restore gets restarted, it will now take the
-'#NM' exception we originally tried to avoid. With preemption this can
-happen even without the page fault - but because of the user access, we
-cannot just disable preemption around the save/restore instruction.
-
-There are various ways to solve this, including using the
-"enable/disable_page_fault()" helpers to not allow page faults at all
-during the sequence, and fall back to copying things by hand without the
-use of the native FP state save/restore instructions.
-
-However, the simplest thing to do is to just allow the #NM from kernel
-space, but fix the race in setting and clearing CR0.TS that this all
-exposed: the TS bit changes and the TS_USEDFPU bit absolutely have to be
-atomic wrt scheduling, so while the actual state save/restore can be
-interrupted and restarted, the act of actually clearing/setting CR0.TS
-and the TS_USEDFPU bit together must not.
-
-Instead of just adding random "preempt_disable/enable()" calls to what
-is already excessively ugly code, this introduces some helper functions
-that mostly mirror the "kernel_fpu_begin/end()" functionality, just for
-the user state instead.
-
-Those helper functions should probably eventually replace the other
-ad-hoc CR0.TS and TS_USEDFPU tests too, but I'll need to think about it
-some more: the task switching functionality in particular needs to
-expose the difference between the 'prev' and 'next' threads, while the
-new helper functions intentionally were written to only work with
-'current'.
-
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/x86/include/asm/i387.h | 42 ++++++++++++++++++++++++++++++++++++++++++
- arch/x86/kernel/traps.c | 1 -
- arch/x86/kernel/xsave.c | 10 +++-------
- 3 files changed, 45 insertions(+), 8 deletions(-)
-
-diff --git a/arch/x86/include/asm/i387.h b/arch/x86/include/asm/i387.h
-index 262bea9..6e87fa4 100644
---- a/arch/x86/include/asm/i387.h
-+++ b/arch/x86/include/asm/i387.h
-@@ -400,6 +400,48 @@ static inline void irq_ts_restore(int TS_state)
- }
-
- /*
-+ * The question "does this thread have fpu access?"
-+ * is slightly racy, since preemption could come in
-+ * and revoke it immediately after the test.
-+ *
-+ * However, even in that very unlikely scenario,
-+ * we can just assume we have FPU access - typically
-+ * to save the FP state - we'll just take a #NM
-+ * fault and get the FPU access back.
-+ *
-+ * The actual user_fpu_begin/end() functions
-+ * need to be preemption-safe, though.
-+ *
-+ * NOTE! user_fpu_end() must be used only after you
-+ * have saved the FP state, and user_fpu_begin() must
-+ * be used only immediately before restoring it.
-+ * These functions do not do any save/restore on
-+ * their own.
-+ */
-+static inline int user_has_fpu(void)
-+{
-+ return current_thread_info()->status & TS_USEDFPU;
-+}
-+
-+static inline void user_fpu_end(void)
-+{
-+ preempt_disable();
-+ current_thread_info()->status &= ~TS_USEDFPU;
-+ stts();
-+ preempt_enable();
-+}
-+
-+static inline void user_fpu_begin(void)
-+{
-+ preempt_disable();
-+ if (!user_has_fpu()) {
-+ clts();
-+ current_thread_info()->status |= TS_USEDFPU;
-+ }
-+ preempt_enable();
-+}
-+
-+/*
- * These disable preemption on their own and are safe
- */
- static inline void save_init_fpu(struct task_struct *tsk)
-diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c
-index 41e0b8c..727e6c1 100644
---- a/arch/x86/kernel/traps.c
-+++ b/arch/x86/kernel/traps.c
-@@ -622,7 +622,6 @@ EXPORT_SYMBOL_GPL(math_state_restore);
- dotraplinkage void __kprobes
- do_device_not_available(struct pt_regs *regs, long error_code)
- {
-- WARN_ON_ONCE(!user_mode_vm(regs));
- #ifdef CONFIG_MATH_EMULATION
- if (read_cr0() & X86_CR0_EM) {
- struct math_emu_info info = { };
-diff --git a/arch/x86/kernel/xsave.c b/arch/x86/kernel/xsave.c
-index a391134..86f1f09 100644
---- a/arch/x86/kernel/xsave.c
-+++ b/arch/x86/kernel/xsave.c
-@@ -168,7 +168,7 @@ int save_i387_xstate(void __user *buf)
- if (!used_math())
- return 0;
-
-- if (task_thread_info(tsk)->status & TS_USEDFPU) {
-+ if (user_has_fpu()) {
- if (use_xsave())
- err = xsave_user(buf);
- else
-@@ -176,8 +176,7 @@ int save_i387_xstate(void __user *buf)
-
- if (err)
- return err;
-- task_thread_info(tsk)->status &= ~TS_USEDFPU;
-- stts();
-+ user_fpu_end();
- } else {
- sanitize_i387_state(tsk);
- if (__copy_to_user(buf, &tsk->thread.fpu.state->fxsave,
-@@ -292,10 +291,7 @@ int restore_i387_xstate(void __user *buf)
- return err;
- }
-
-- if (!(task_thread_info(current)->status & TS_USEDFPU)) {
-- clts();
-- task_thread_info(current)->status |= TS_USEDFPU;
-- }
-+ user_fpu_begin();
- if (use_xsave())
- err = restore_user_xstate(buf);
- else
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.8/0005-i387-move-TS_USEDFPU-clearing-out-of-__save_init_fpu.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.8/0005-i387-move-TS_USEDFPU-clearing-out-of-__save_init_fpu.patch
deleted file mode 100644
index 997da19..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.8/0005-i387-move-TS_USEDFPU-clearing-out-of-__save_init_fpu.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-From 58e2cbb5f7134c9e45f35fe1befd2237b46afdc1 Mon Sep 17 00:00:00 2001
-From: Linus Torvalds <torvalds at linux-foundation.org>
-Date: Thu, 16 Feb 2012 12:22:48 -0800
-Subject: [PATCH 05/11] i387: move TS_USEDFPU clearing out of __save_init_fpu
- and into callers
-
-commit b6c66418dcad0fcf83cd1d0a39482db37bf4fc41 upstream.
-
-Touching TS_USEDFPU without touching CR0.TS is confusing, so don't do
-it. By moving it into the callers, we always do the TS_USEDFPU next to
-the CR0.TS accesses in the source code, and it's much easier to see how
-the two go hand in hand.
-
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/x86/include/asm/i387.h | 9 ++++++---
- 1 file changed, 6 insertions(+), 3 deletions(-)
-
-diff --git a/arch/x86/include/asm/i387.h b/arch/x86/include/asm/i387.h
-index 6e87fa4..55fb3aa 100644
---- a/arch/x86/include/asm/i387.h
-+++ b/arch/x86/include/asm/i387.h
-@@ -259,7 +259,6 @@ static inline void fpu_save_init(struct fpu *fpu)
- static inline void __save_init_fpu(struct task_struct *tsk)
- {
- fpu_save_init(&tsk->thread.fpu);
-- task_thread_info(tsk)->status &= ~TS_USEDFPU;
- }
-
- static inline int fpu_fxrstor_checking(struct fpu *fpu)
-@@ -290,6 +289,7 @@ static inline void __unlazy_fpu(struct task_struct *tsk)
- {
- if (task_thread_info(tsk)->status & TS_USEDFPU) {
- __save_init_fpu(tsk);
-+ task_thread_info(tsk)->status &= ~TS_USEDFPU;
- stts();
- } else
- tsk->fpu_counter = 0;
-@@ -356,9 +356,11 @@ static inline void kernel_fpu_begin(void)
-
- WARN_ON_ONCE(!irq_fpu_usable());
- preempt_disable();
-- if (me->status & TS_USEDFPU)
-+ if (me->status & TS_USEDFPU) {
- __save_init_fpu(me->task);
-- else
-+ me->status &= ~TS_USEDFPU;
-+ /* We do 'stts()' in kernel_fpu_end() */
-+ } else
- clts();
- }
-
-@@ -449,6 +451,7 @@ static inline void save_init_fpu(struct task_struct *tsk)
- WARN_ON_ONCE(!(task_thread_info(tsk)->status & TS_USEDFPU));
- preempt_disable();
- __save_init_fpu(tsk);
-+ task_thread_info(tsk)->status &= ~TS_USEDFPU;
- stts();
- preempt_enable();
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.8/0006-i387-don-t-ever-touch-TS_USEDFPU-directly-use-helper.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.8/0006-i387-don-t-ever-touch-TS_USEDFPU-directly-use-helper.patch
deleted file mode 100644
index 63b8edf..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.8/0006-i387-don-t-ever-touch-TS_USEDFPU-directly-use-helper.patch
+++ /dev/null
@@ -1,228 +0,0 @@
-From 57932125545ab13bfbe240e480e150e35286da9a Mon Sep 17 00:00:00 2001
-From: Linus Torvalds <torvalds at linux-foundation.org>
-Date: Thu, 16 Feb 2012 13:33:12 -0800
-Subject: [PATCH 06/11] i387: don't ever touch TS_USEDFPU directly, use helper
- functions
-
-commit 6d59d7a9f5b723a7ac1925c136e93ec83c0c3043 upstream.
-
-This creates three helper functions that do the TS_USEDFPU accesses, and
-makes everybody that used to do it by hand use those helpers instead.
-
-In addition, there's a couple of helper functions for the "change both
-CR0.TS and TS_USEDFPU at the same time" case, and the places that do
-that together have been changed to use those. That means that we have
-fewer random places that open-code this situation.
-
-The intent is partly to clarify the code without actually changing any
-semantics yet (since we clearly still have some hard to reproduce bug in
-this area), but also to make it much easier to use another approach
-entirely to caching the CR0.TS bit for software accesses.
-
-Right now we use a bit in the thread-info 'status' variable (this patch
-does not change that), but we might want to make it a full field of its
-own or even make it a per-cpu variable.
-
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/x86/include/asm/i387.h | 75 +++++++++++++++++++++++++++++++------------
- arch/x86/kernel/traps.c | 2 +-
- arch/x86/kernel/xsave.c | 2 +-
- arch/x86/kvm/vmx.c | 2 +-
- 4 files changed, 58 insertions(+), 23 deletions(-)
-
-diff --git a/arch/x86/include/asm/i387.h b/arch/x86/include/asm/i387.h
-index 55fb3aa..730d7be 100644
---- a/arch/x86/include/asm/i387.h
-+++ b/arch/x86/include/asm/i387.h
-@@ -280,6 +280,47 @@ static inline int restore_fpu_checking(struct task_struct *tsk)
- }
-
- /*
-+ * Software FPU state helpers. Careful: these need to
-+ * be preemption protection *and* they need to be
-+ * properly paired with the CR0.TS changes!
-+ */
-+static inline int __thread_has_fpu(struct thread_info *ti)
-+{
-+ return ti->status & TS_USEDFPU;
-+}
-+
-+/* Must be paired with an 'stts' after! */
-+static inline void __thread_clear_has_fpu(struct thread_info *ti)
-+{
-+ ti->status &= ~TS_USEDFPU;
-+}
-+
-+/* Must be paired with a 'clts' before! */
-+static inline void __thread_set_has_fpu(struct thread_info *ti)
-+{
-+ ti->status |= TS_USEDFPU;
-+}
-+
-+/*
-+ * Encapsulate the CR0.TS handling together with the
-+ * software flag.
-+ *
-+ * These generally need preemption protection to work,
-+ * do try to avoid using these on their own.
-+ */
-+static inline void __thread_fpu_end(struct thread_info *ti)
-+{
-+ __thread_clear_has_fpu(ti);
-+ stts();
-+}
-+
-+static inline void __thread_fpu_begin(struct thread_info *ti)
-+{
-+ clts();
-+ __thread_set_has_fpu(ti);
-+}
-+
-+/*
- * Signal frame handlers...
- */
- extern int save_i387_xstate(void __user *buf);
-@@ -287,23 +328,21 @@ extern int restore_i387_xstate(void __user *buf);
-
- static inline void __unlazy_fpu(struct task_struct *tsk)
- {
-- if (task_thread_info(tsk)->status & TS_USEDFPU) {
-+ if (__thread_has_fpu(task_thread_info(tsk))) {
- __save_init_fpu(tsk);
-- task_thread_info(tsk)->status &= ~TS_USEDFPU;
-- stts();
-+ __thread_fpu_end(task_thread_info(tsk));
- } else
- tsk->fpu_counter = 0;
- }
-
- static inline void __clear_fpu(struct task_struct *tsk)
- {
-- if (task_thread_info(tsk)->status & TS_USEDFPU) {
-+ if (__thread_has_fpu(task_thread_info(tsk))) {
- /* Ignore delayed exceptions from user space */
- asm volatile("1: fwait\n"
- "2:\n"
- _ASM_EXTABLE(1b, 2b));
-- task_thread_info(tsk)->status &= ~TS_USEDFPU;
-- stts();
-+ __thread_fpu_end(task_thread_info(tsk));
- }
- }
-
-@@ -311,14 +350,14 @@ static inline void __clear_fpu(struct task_struct *tsk)
- * Were we in an interrupt that interrupted kernel mode?
- *
- * We can do a kernel_fpu_begin/end() pair *ONLY* if that
-- * pair does nothing at all: TS_USEDFPU must be clear (so
-+ * pair does nothing at all: the thread must not have fpu (so
- * that we don't try to save the FPU state), and TS must
- * be set (so that the clts/stts pair does nothing that is
- * visible in the interrupted kernel thread).
- */
- static inline bool interrupted_kernel_fpu_idle(void)
- {
-- return !(current_thread_info()->status & TS_USEDFPU) &&
-+ return !__thread_has_fpu(current_thread_info()) &&
- (read_cr0() & X86_CR0_TS);
- }
-
-@@ -356,9 +395,9 @@ static inline void kernel_fpu_begin(void)
-
- WARN_ON_ONCE(!irq_fpu_usable());
- preempt_disable();
-- if (me->status & TS_USEDFPU) {
-+ if (__thread_has_fpu(me)) {
- __save_init_fpu(me->task);
-- me->status &= ~TS_USEDFPU;
-+ __thread_clear_has_fpu(me);
- /* We do 'stts()' in kernel_fpu_end() */
- } else
- clts();
-@@ -422,24 +461,21 @@ static inline void irq_ts_restore(int TS_state)
- */
- static inline int user_has_fpu(void)
- {
-- return current_thread_info()->status & TS_USEDFPU;
-+ return __thread_has_fpu(current_thread_info());
- }
-
- static inline void user_fpu_end(void)
- {
- preempt_disable();
-- current_thread_info()->status &= ~TS_USEDFPU;
-- stts();
-+ __thread_fpu_end(current_thread_info());
- preempt_enable();
- }
-
- static inline void user_fpu_begin(void)
- {
- preempt_disable();
-- if (!user_has_fpu()) {
-- clts();
-- current_thread_info()->status |= TS_USEDFPU;
-- }
-+ if (!user_has_fpu())
-+ __thread_fpu_begin(current_thread_info());
- preempt_enable();
- }
-
-@@ -448,11 +484,10 @@ static inline void user_fpu_begin(void)
- */
- static inline void save_init_fpu(struct task_struct *tsk)
- {
-- WARN_ON_ONCE(!(task_thread_info(tsk)->status & TS_USEDFPU));
-+ WARN_ON_ONCE(!__thread_has_fpu(task_thread_info(tsk)));
- preempt_disable();
- __save_init_fpu(tsk);
-- task_thread_info(tsk)->status &= ~TS_USEDFPU;
-- stts();
-+ __thread_fpu_end(task_thread_info(tsk));
- preempt_enable();
- }
-
-diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c
-index 727e6c1..bb5445c 100644
---- a/arch/x86/kernel/traps.c
-+++ b/arch/x86/kernel/traps.c
-@@ -579,7 +579,7 @@ void __math_state_restore(void)
- return;
- }
-
-- thread->status |= TS_USEDFPU; /* So we fnsave on switch_to() */
-+ __thread_set_has_fpu(thread); /* clts in caller! */
- tsk->fpu_counter++;
- }
-
-diff --git a/arch/x86/kernel/xsave.c b/arch/x86/kernel/xsave.c
-index 86f1f09..a0bcd0d 100644
---- a/arch/x86/kernel/xsave.c
-+++ b/arch/x86/kernel/xsave.c
-@@ -47,7 +47,7 @@ void __sanitize_i387_state(struct task_struct *tsk)
- if (!fx)
- return;
-
-- BUG_ON(task_thread_info(tsk)->status & TS_USEDFPU);
-+ BUG_ON(__thread_has_fpu(task_thread_info(tsk)));
-
- xstate_bv = tsk->thread.fpu.state->xsave.xsave_hdr.xstate_bv;
-
-diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
-index 579a0b5..b2c612d 100644
---- a/arch/x86/kvm/vmx.c
-+++ b/arch/x86/kvm/vmx.c
-@@ -1456,7 +1456,7 @@ static void __vmx_load_host_state(struct vcpu_vmx *vmx)
- #ifdef CONFIG_X86_64
- wrmsrl(MSR_KERNEL_GS_BASE, vmx->msr_host_kernel_gs_base);
- #endif
-- if (current_thread_info()->status & TS_USEDFPU)
-+ if (__thread_has_fpu(current_thread_info()))
- clts();
- load_gdt(&__get_cpu_var(host_gdt));
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.8/0007-i387-do-not-preload-FPU-state-at-task-switch-time.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.8/0007-i387-do-not-preload-FPU-state-at-task-switch-time.patch
deleted file mode 100644
index 7a6ecb7..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.8/0007-i387-do-not-preload-FPU-state-at-task-switch-time.patch
+++ /dev/null
@@ -1,202 +0,0 @@
-From e6f8e029532e23549d273f12a536d4a40f403f8a Mon Sep 17 00:00:00 2001
-From: Linus Torvalds <torvalds at linux-foundation.org>
-Date: Thu, 16 Feb 2012 15:45:23 -0800
-Subject: [PATCH 07/11] i387: do not preload FPU state at task switch time
-
-commit b3b0870ef3ffed72b92415423da864f440f57ad6 upstream.
-
-Yes, taking the trap to re-load the FPU/MMX state is expensive, but so
-is spending several days looking for a bug in the state save/restore
-code. And the preload code has some rather subtle interactions with
-both paravirtualization support and segment state restore, so it's not
-nearly as simple as it should be.
-
-Also, now that we no longer necessarily depend on a single bit (ie
-TS_USEDFPU) for keeping track of the state of the FPU, we migth be able
-to do better. If we are really switching between two processes that
-keep touching the FP state, save/restore is inevitable, but in the case
-of having one process that does most of the FPU usage, we may actually
-be able to do much better than the preloading.
-
-In particular, we may be able to keep track of which CPU the process ran
-on last, and also per CPU keep track of which process' FP state that CPU
-has. For modern CPU's that don't destroy the FPU contents on save time,
-that would allow us to do a lazy restore by just re-enabling the
-existing FPU state - with no restore cost at all!
-
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/x86/include/asm/i387.h | 1 -
- arch/x86/kernel/process_32.c | 20 --------------------
- arch/x86/kernel/process_64.c | 23 -----------------------
- arch/x86/kernel/traps.c | 35 +++++++++++------------------------
- 4 files changed, 11 insertions(+), 68 deletions(-)
-
-diff --git a/arch/x86/include/asm/i387.h b/arch/x86/include/asm/i387.h
-index 730d7be..3521c24 100644
---- a/arch/x86/include/asm/i387.h
-+++ b/arch/x86/include/asm/i387.h
-@@ -30,7 +30,6 @@ extern void fpu_init(void);
- extern void mxcsr_feature_mask_init(void);
- extern int init_fpu(struct task_struct *child);
- extern void math_state_restore(void);
--extern void __math_state_restore(void);
- extern int dump_fpu(struct pt_regs *, struct user_i387_struct *);
-
- extern user_regset_active_fn fpregs_active, xfpregs_active;
-diff --git a/arch/x86/kernel/process_32.c b/arch/x86/kernel/process_32.c
-index 795b79f..0cdb4fa 100644
---- a/arch/x86/kernel/process_32.c
-+++ b/arch/x86/kernel/process_32.c
-@@ -297,23 +297,11 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
- *next = &next_p->thread;
- int cpu = smp_processor_id();
- struct tss_struct *tss = &per_cpu(init_tss, cpu);
-- bool preload_fpu;
-
- /* never put a printk in __switch_to... printk() calls wake_up*() indirectly */
-
-- /*
-- * If the task has used fpu the last 5 timeslices, just do a full
-- * restore of the math state immediately to avoid the trap; the
-- * chances of needing FPU soon are obviously high now
-- */
-- preload_fpu = tsk_used_math(next_p) && next_p->fpu_counter > 5;
--
- __unlazy_fpu(prev_p);
-
-- /* we're going to use this soon, after a few expensive things */
-- if (preload_fpu)
-- prefetch(next->fpu.state);
--
- /*
- * Reload esp0.
- */
-@@ -352,11 +340,6 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
- task_thread_info(next_p)->flags & _TIF_WORK_CTXSW_NEXT))
- __switch_to_xtra(prev_p, next_p, tss);
-
-- /* If we're going to preload the fpu context, make sure clts
-- is run while we're batching the cpu state updates. */
-- if (preload_fpu)
-- clts();
--
- /*
- * Leave lazy mode, flushing any hypercalls made here.
- * This must be done before restoring TLS segments so
-@@ -366,9 +349,6 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
- */
- arch_end_context_switch(next_p);
-
-- if (preload_fpu)
-- __math_state_restore();
--
- /*
- * Restore %gs if needed (which is common)
- */
-diff --git a/arch/x86/kernel/process_64.c b/arch/x86/kernel/process_64.c
-index 3bd7e6e..370801e 100644
---- a/arch/x86/kernel/process_64.c
-+++ b/arch/x86/kernel/process_64.c
-@@ -381,18 +381,6 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
- int cpu = smp_processor_id();
- struct tss_struct *tss = &per_cpu(init_tss, cpu);
- unsigned fsindex, gsindex;
-- bool preload_fpu;
--
-- /*
-- * If the task has used fpu the last 5 timeslices, just do a full
-- * restore of the math state immediately to avoid the trap; the
-- * chances of needing FPU soon are obviously high now
-- */
-- preload_fpu = tsk_used_math(next_p) && next_p->fpu_counter > 5;
--
-- /* we're going to use this soon, after a few expensive things */
-- if (preload_fpu)
-- prefetch(next->fpu.state);
-
- /*
- * Reload esp0, LDT and the page table pointer:
-@@ -425,10 +413,6 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
- /* Must be after DS reload */
- __unlazy_fpu(prev_p);
-
-- /* Make sure cpu is ready for new context */
-- if (preload_fpu)
-- clts();
--
- /*
- * Leave lazy mode, flushing any hypercalls made here.
- * This must be done before restoring TLS segments so
-@@ -487,13 +471,6 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
- task_thread_info(prev_p)->flags & _TIF_WORK_CTXSW_PREV))
- __switch_to_xtra(prev_p, next_p, tss);
-
-- /*
-- * Preload the FPU context, now that we've determined that the
-- * task is likely to be using it.
-- */
-- if (preload_fpu)
-- __math_state_restore();
--
- return prev_p;
- }
-
-diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c
-index bb5445c..7767ed2 100644
---- a/arch/x86/kernel/traps.c
-+++ b/arch/x86/kernel/traps.c
-@@ -562,28 +562,6 @@ asmlinkage void __attribute__((weak)) smp_threshold_interrupt(void)
- }
-
- /*
-- * __math_state_restore assumes that cr0.TS is already clear and the
-- * fpu state is all ready for use. Used during context switch.
-- */
--void __math_state_restore(void)
--{
-- struct thread_info *thread = current_thread_info();
-- struct task_struct *tsk = thread->task;
--
-- /*
-- * Paranoid restore. send a SIGSEGV if we fail to restore the state.
-- */
-- if (unlikely(restore_fpu_checking(tsk))) {
-- stts();
-- force_sig(SIGSEGV, tsk);
-- return;
-- }
--
-- __thread_set_has_fpu(thread); /* clts in caller! */
-- tsk->fpu_counter++;
--}
--
--/*
- * 'math_state_restore()' saves the current math information in the
- * old math state array, and gets the new ones from the current task
- *
-@@ -613,9 +591,18 @@ void math_state_restore(void)
- local_irq_disable();
- }
-
-- clts(); /* Allow maths ops (or we recurse) */
-+ __thread_fpu_begin(thread);
-
-- __math_state_restore();
-+ /*
-+ * Paranoid restore. send a SIGSEGV if we fail to restore the state.
-+ */
-+ if (unlikely(restore_fpu_checking(tsk))) {
-+ __thread_fpu_end(thread);
-+ force_sig(SIGSEGV, tsk);
-+ return;
-+ }
-+
-+ tsk->fpu_counter++;
- }
- EXPORT_SYMBOL_GPL(math_state_restore);
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.8/0008-i387-move-AMD-K7-K8-fpu-fxsave-fxrstor-workaround-fr.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.8/0008-i387-move-AMD-K7-K8-fpu-fxsave-fxrstor-workaround-fr.patch
deleted file mode 100644
index d0f17a0..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.8/0008-i387-move-AMD-K7-K8-fpu-fxsave-fxrstor-workaround-fr.patch
+++ /dev/null
@@ -1,133 +0,0 @@
-From daf98dd94475b7f64de086f5949e4e5b17f529bb Mon Sep 17 00:00:00 2001
-From: Linus Torvalds <torvalds at linux-foundation.org>
-Date: Thu, 16 Feb 2012 19:11:15 -0800
-Subject: [PATCH 08/11] i387: move AMD K7/K8 fpu fxsave/fxrstor workaround
- from save to restore
-
-commit 4903062b5485f0e2c286a23b44c9b59d9b017d53 upstream.
-
-The AMD K7/K8 CPUs don't save/restore FDP/FIP/FOP unless an exception is
-pending. In order to not leak FIP state from one process to another, we
-need to do a floating point load after the fxsave of the old process,
-and before the fxrstor of the new FPU state. That resets the state to
-the (uninteresting) kernel load, rather than some potentially sensitive
-user information.
-
-We used to do this directly after the FPU state save, but that is
-actually very inconvenient, since it
-
- (a) corrupts what is potentially perfectly good FPU state that we might
- want to lazy avoid restoring later and
-
- (b) on x86-64 it resulted in a very annoying ordering constraint, where
- "__unlazy_fpu()" in the task switch needs to be delayed until after
- the DS segment has been reloaded just to get the new DS value.
-
-Coupling it to the fxrstor instead of the fxsave automatically avoids
-both of these issues, and also ensures that we only do it when actually
-necessary (the FP state after a save may never actually get used). It's
-simply a much more natural place for the leaked state cleanup.
-
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/x86/include/asm/i387.h | 19 -------------------
- arch/x86/kernel/process_64.c | 5 ++---
- arch/x86/kernel/traps.c | 14 ++++++++++++++
- 3 files changed, 16 insertions(+), 22 deletions(-)
-
-diff --git a/arch/x86/include/asm/i387.h b/arch/x86/include/asm/i387.h
-index 3521c24..01b115d 100644
---- a/arch/x86/include/asm/i387.h
-+++ b/arch/x86/include/asm/i387.h
-@@ -211,15 +211,6 @@ static inline void fpu_fxsave(struct fpu *fpu)
-
- #endif /* CONFIG_X86_64 */
-
--/* We need a safe address that is cheap to find and that is already
-- in L1 during context switch. The best choices are unfortunately
-- different for UP and SMP */
--#ifdef CONFIG_SMP
--#define safe_address (__per_cpu_offset[0])
--#else
--#define safe_address (kstat_cpu(0).cpustat.user)
--#endif
--
- /*
- * These must be called with preempt disabled
- */
-@@ -243,16 +234,6 @@ static inline void fpu_save_init(struct fpu *fpu)
-
- if (unlikely(fpu->state->fxsave.swd & X87_FSW_ES))
- asm volatile("fnclex");
--
-- /* AMD K7/K8 CPUs don't save/restore FDP/FIP/FOP unless an exception
-- is pending. Clear the x87 state here by setting it to fixed
-- values. safe_address is a random variable that should be in L1 */
-- alternative_input(
-- ASM_NOP8 ASM_NOP2,
-- "emms\n\t" /* clear stack tags */
-- "fildl %P[addr]", /* set F?P to defined value */
-- X86_FEATURE_FXSAVE_LEAK,
-- [addr] "m" (safe_address));
- }
-
- static inline void __save_init_fpu(struct task_struct *tsk)
-diff --git a/arch/x86/kernel/process_64.c b/arch/x86/kernel/process_64.c
-index 370801e..042b18f 100644
---- a/arch/x86/kernel/process_64.c
-+++ b/arch/x86/kernel/process_64.c
-@@ -382,6 +382,8 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
- struct tss_struct *tss = &per_cpu(init_tss, cpu);
- unsigned fsindex, gsindex;
-
-+ __unlazy_fpu(prev_p);
-+
- /*
- * Reload esp0, LDT and the page table pointer:
- */
-@@ -410,9 +412,6 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
-
- load_TLS(next, cpu);
-
-- /* Must be after DS reload */
-- __unlazy_fpu(prev_p);
--
- /*
- * Leave lazy mode, flushing any hypercalls made here.
- * This must be done before restoring TLS segments so
-diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c
-index 7767ed2..c24bb75 100644
---- a/arch/x86/kernel/traps.c
-+++ b/arch/x86/kernel/traps.c
-@@ -576,6 +576,10 @@ void math_state_restore(void)
- struct thread_info *thread = current_thread_info();
- struct task_struct *tsk = thread->task;
-
-+ /* We need a safe address that is cheap to find and that is already
-+ in L1. We just brought in "thread->task", so use that */
-+#define safe_address (thread->task)
-+
- if (!tsk_used_math(tsk)) {
- local_irq_enable();
- /*
-@@ -593,6 +597,16 @@ void math_state_restore(void)
-
- __thread_fpu_begin(thread);
-
-+ /* AMD K7/K8 CPUs don't save/restore FDP/FIP/FOP unless an exception
-+ is pending. Clear the x87 state here by setting it to fixed
-+ values. safe_address is a random variable that should be in L1 */
-+ alternative_input(
-+ ASM_NOP8 ASM_NOP2,
-+ "emms\n\t" /* clear stack tags */
-+ "fildl %P[addr]", /* set F?P to defined value */
-+ X86_FEATURE_FXSAVE_LEAK,
-+ [addr] "m" (safe_address));
-+
- /*
- * Paranoid restore. send a SIGSEGV if we fail to restore the state.
- */
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.8/0009-i387-move-TS_USEDFPU-flag-from-thread_info-to-task_s.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.8/0009-i387-move-TS_USEDFPU-flag-from-thread_info-to-task_s.patch
deleted file mode 100644
index 1d67f1f..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.8/0009-i387-move-TS_USEDFPU-flag-from-thread_info-to-task_s.patch
+++ /dev/null
@@ -1,305 +0,0 @@
-From fae96c11ba3ff99d1475cf2e750ee6b36bbac43c Mon Sep 17 00:00:00 2001
-From: Linus Torvalds <torvalds at linux-foundation.org>
-Date: Fri, 17 Feb 2012 21:48:54 -0800
-Subject: [PATCH 09/11] i387: move TS_USEDFPU flag from thread_info to
- task_struct
-
-commit f94edacf998516ac9d849f7bc6949a703977a7f3 upstream.
-
-This moves the bit that indicates whether a thread has ownership of the
-FPU from the TS_USEDFPU bit in thread_info->status to a word of its own
-(called 'has_fpu') in task_struct->thread.has_fpu.
-
-This fixes two independent bugs at the same time:
-
- - changing 'thread_info->status' from the scheduler causes nasty
- problems for the other users of that variable, since it is defined to
- be thread-synchronous (that's what the "TS_" part of the naming was
- supposed to indicate).
-
- So perfectly valid code could (and did) do
-
- ti->status |= TS_RESTORE_SIGMASK;
-
- and the compiler was free to do that as separate load, or and store
- instructions. Which can cause problems with preemption, since a task
- switch could happen in between, and change the TS_USEDFPU bit. The
- change to TS_USEDFPU would be overwritten by the final store.
-
- In practice, this seldom happened, though, because the 'status' field
- was seldom used more than once, so gcc would generally tend to
- generate code that used a read-modify-write instruction and thus
- happened to avoid this problem - RMW instructions are naturally low
- fat and preemption-safe.
-
- - On x86-32, the current_thread_info() pointer would, during interrupts
- and softirqs, point to a *copy* of the real thread_info, because
- x86-32 uses %esp to calculate the thread_info address, and thus the
- separate irq (and softirq) stacks would cause these kinds of odd
- thread_info copy aliases.
-
- This is normally not a problem, since interrupts aren't supposed to
- look at thread information anyway (what thread is running at
- interrupt time really isn't very well-defined), but it confused the
- heck out of irq_fpu_usable() and the code that tried to squirrel
- away the FPU state.
-
- (It also caused untold confusion for us poor kernel developers).
-
-It also turns out that using 'task_struct' is actually much more natural
-for most of the call sites that care about the FPU state, since they
-tend to work with the task struct for other reasons anyway (ie
-scheduling). And the FPU data that we are going to save/restore is
-found there too.
-
-Thanks to Arjan Van De Ven <arjan at linux.intel.com> for pointing us to
-the %esp issue.
-
-Cc: Arjan van de Ven <arjan at linux.intel.com>
-Reported-and-tested-by: Raphael Prevost <raphael at buro.asia>
-Acked-and-tested-by: Suresh Siddha <suresh.b.siddha at intel.com>
-Tested-by: Peter Anvin <hpa at zytor.com>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/x86/include/asm/i387.h | 44 ++++++++++++++++++------------------
- arch/x86/include/asm/processor.h | 1 +
- arch/x86/include/asm/thread_info.h | 2 --
- arch/x86/kernel/traps.c | 11 ++++-----
- arch/x86/kernel/xsave.c | 2 +-
- arch/x86/kvm/vmx.c | 2 +-
- 6 files changed, 30 insertions(+), 32 deletions(-)
-
-diff --git a/arch/x86/include/asm/i387.h b/arch/x86/include/asm/i387.h
-index 01b115d..f537667 100644
---- a/arch/x86/include/asm/i387.h
-+++ b/arch/x86/include/asm/i387.h
-@@ -264,21 +264,21 @@ static inline int restore_fpu_checking(struct task_struct *tsk)
- * be preemption protection *and* they need to be
- * properly paired with the CR0.TS changes!
- */
--static inline int __thread_has_fpu(struct thread_info *ti)
-+static inline int __thread_has_fpu(struct task_struct *tsk)
- {
-- return ti->status & TS_USEDFPU;
-+ return tsk->thread.has_fpu;
- }
-
- /* Must be paired with an 'stts' after! */
--static inline void __thread_clear_has_fpu(struct thread_info *ti)
-+static inline void __thread_clear_has_fpu(struct task_struct *tsk)
- {
-- ti->status &= ~TS_USEDFPU;
-+ tsk->thread.has_fpu = 0;
- }
-
- /* Must be paired with a 'clts' before! */
--static inline void __thread_set_has_fpu(struct thread_info *ti)
-+static inline void __thread_set_has_fpu(struct task_struct *tsk)
- {
-- ti->status |= TS_USEDFPU;
-+ tsk->thread.has_fpu = 1;
- }
-
- /*
-@@ -288,16 +288,16 @@ static inline void __thread_set_has_fpu(struct thread_info *ti)
- * These generally need preemption protection to work,
- * do try to avoid using these on their own.
- */
--static inline void __thread_fpu_end(struct thread_info *ti)
-+static inline void __thread_fpu_end(struct task_struct *tsk)
- {
-- __thread_clear_has_fpu(ti);
-+ __thread_clear_has_fpu(tsk);
- stts();
- }
-
--static inline void __thread_fpu_begin(struct thread_info *ti)
-+static inline void __thread_fpu_begin(struct task_struct *tsk)
- {
- clts();
-- __thread_set_has_fpu(ti);
-+ __thread_set_has_fpu(tsk);
- }
-
- /*
-@@ -308,21 +308,21 @@ extern int restore_i387_xstate(void __user *buf);
-
- static inline void __unlazy_fpu(struct task_struct *tsk)
- {
-- if (__thread_has_fpu(task_thread_info(tsk))) {
-+ if (__thread_has_fpu(tsk)) {
- __save_init_fpu(tsk);
-- __thread_fpu_end(task_thread_info(tsk));
-+ __thread_fpu_end(tsk);
- } else
- tsk->fpu_counter = 0;
- }
-
- static inline void __clear_fpu(struct task_struct *tsk)
- {
-- if (__thread_has_fpu(task_thread_info(tsk))) {
-+ if (__thread_has_fpu(tsk)) {
- /* Ignore delayed exceptions from user space */
- asm volatile("1: fwait\n"
- "2:\n"
- _ASM_EXTABLE(1b, 2b));
-- __thread_fpu_end(task_thread_info(tsk));
-+ __thread_fpu_end(tsk);
- }
- }
-
-@@ -337,7 +337,7 @@ static inline void __clear_fpu(struct task_struct *tsk)
- */
- static inline bool interrupted_kernel_fpu_idle(void)
- {
-- return !__thread_has_fpu(current_thread_info()) &&
-+ return !__thread_has_fpu(current) &&
- (read_cr0() & X86_CR0_TS);
- }
-
-@@ -371,12 +371,12 @@ static inline bool irq_fpu_usable(void)
-
- static inline void kernel_fpu_begin(void)
- {
-- struct thread_info *me = current_thread_info();
-+ struct task_struct *me = current;
-
- WARN_ON_ONCE(!irq_fpu_usable());
- preempt_disable();
- if (__thread_has_fpu(me)) {
-- __save_init_fpu(me->task);
-+ __save_init_fpu(me);
- __thread_clear_has_fpu(me);
- /* We do 'stts()' in kernel_fpu_end() */
- } else
-@@ -441,13 +441,13 @@ static inline void irq_ts_restore(int TS_state)
- */
- static inline int user_has_fpu(void)
- {
-- return __thread_has_fpu(current_thread_info());
-+ return __thread_has_fpu(current);
- }
-
- static inline void user_fpu_end(void)
- {
- preempt_disable();
-- __thread_fpu_end(current_thread_info());
-+ __thread_fpu_end(current);
- preempt_enable();
- }
-
-@@ -455,7 +455,7 @@ static inline void user_fpu_begin(void)
- {
- preempt_disable();
- if (!user_has_fpu())
-- __thread_fpu_begin(current_thread_info());
-+ __thread_fpu_begin(current);
- preempt_enable();
- }
-
-@@ -464,10 +464,10 @@ static inline void user_fpu_begin(void)
- */
- static inline void save_init_fpu(struct task_struct *tsk)
- {
-- WARN_ON_ONCE(!__thread_has_fpu(task_thread_info(tsk)));
-+ WARN_ON_ONCE(!__thread_has_fpu(tsk));
- preempt_disable();
- __save_init_fpu(tsk);
-- __thread_fpu_end(task_thread_info(tsk));
-+ __thread_fpu_end(tsk);
- preempt_enable();
- }
-
-diff --git a/arch/x86/include/asm/processor.h b/arch/x86/include/asm/processor.h
-index b650435..bb3ee36 100644
---- a/arch/x86/include/asm/processor.h
-+++ b/arch/x86/include/asm/processor.h
-@@ -456,6 +456,7 @@ struct thread_struct {
- unsigned long trap_no;
- unsigned long error_code;
- /* floating point and extended processor state */
-+ unsigned long has_fpu;
- struct fpu fpu;
- #ifdef CONFIG_X86_32
- /* Virtual 86 mode info */
-diff --git a/arch/x86/include/asm/thread_info.h b/arch/x86/include/asm/thread_info.h
-index a1fe5c1..d7ef849 100644
---- a/arch/x86/include/asm/thread_info.h
-+++ b/arch/x86/include/asm/thread_info.h
-@@ -242,8 +242,6 @@ static inline struct thread_info *current_thread_info(void)
- * ever touches our thread-synchronous status, so we don't
- * have to worry about atomic accesses.
- */
--#define TS_USEDFPU 0x0001 /* FPU was used by this task
-- this quantum (SMP) */
- #define TS_COMPAT 0x0002 /* 32bit syscall active (64BIT)*/
- #define TS_POLLING 0x0004 /* idle task polling need_resched,
- skip sending interrupt */
-diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c
-index c24bb75..a99badf 100644
---- a/arch/x86/kernel/traps.c
-+++ b/arch/x86/kernel/traps.c
-@@ -573,12 +573,11 @@ asmlinkage void __attribute__((weak)) smp_threshold_interrupt(void)
- */
- void math_state_restore(void)
- {
-- struct thread_info *thread = current_thread_info();
-- struct task_struct *tsk = thread->task;
-+ struct task_struct *tsk = current;
-
- /* We need a safe address that is cheap to find and that is already
-- in L1. We just brought in "thread->task", so use that */
--#define safe_address (thread->task)
-+ in L1. We're just bringing in "tsk->thread.has_fpu", so use that */
-+#define safe_address (tsk->thread.has_fpu)
-
- if (!tsk_used_math(tsk)) {
- local_irq_enable();
-@@ -595,7 +594,7 @@ void math_state_restore(void)
- local_irq_disable();
- }
-
-- __thread_fpu_begin(thread);
-+ __thread_fpu_begin(tsk);
-
- /* AMD K7/K8 CPUs don't save/restore FDP/FIP/FOP unless an exception
- is pending. Clear the x87 state here by setting it to fixed
-@@ -611,7 +610,7 @@ void math_state_restore(void)
- * Paranoid restore. send a SIGSEGV if we fail to restore the state.
- */
- if (unlikely(restore_fpu_checking(tsk))) {
-- __thread_fpu_end(thread);
-+ __thread_fpu_end(tsk);
- force_sig(SIGSEGV, tsk);
- return;
- }
-diff --git a/arch/x86/kernel/xsave.c b/arch/x86/kernel/xsave.c
-index a0bcd0d..7110911 100644
---- a/arch/x86/kernel/xsave.c
-+++ b/arch/x86/kernel/xsave.c
-@@ -47,7 +47,7 @@ void __sanitize_i387_state(struct task_struct *tsk)
- if (!fx)
- return;
-
-- BUG_ON(__thread_has_fpu(task_thread_info(tsk)));
-+ BUG_ON(__thread_has_fpu(tsk));
-
- xstate_bv = tsk->thread.fpu.state->xsave.xsave_hdr.xstate_bv;
-
-diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
-index b2c612d..4ea7678 100644
---- a/arch/x86/kvm/vmx.c
-+++ b/arch/x86/kvm/vmx.c
-@@ -1456,7 +1456,7 @@ static void __vmx_load_host_state(struct vcpu_vmx *vmx)
- #ifdef CONFIG_X86_64
- wrmsrl(MSR_KERNEL_GS_BASE, vmx->msr_host_kernel_gs_base);
- #endif
-- if (__thread_has_fpu(current_thread_info()))
-+ if (__thread_has_fpu(current))
- clts();
- load_gdt(&__get_cpu_var(host_gdt));
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.8/0010-i387-re-introduce-FPU-state-preloading-at-context-sw.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.8/0010-i387-re-introduce-FPU-state-preloading-at-context-sw.patch
deleted file mode 100644
index 63bd1fd..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.8/0010-i387-re-introduce-FPU-state-preloading-at-context-sw.patch
+++ /dev/null
@@ -1,353 +0,0 @@
-From a3c1c72b3f2de7d8d0cece6a515404cd01c03bf0 Mon Sep 17 00:00:00 2001
-From: Linus Torvalds <torvalds at linux-foundation.org>
-Date: Sat, 18 Feb 2012 12:56:35 -0800
-Subject: [PATCH 10/11] i387: re-introduce FPU state preloading at context
- switch time
-
-commit 34ddc81a230b15c0e345b6b253049db731499f7e upstream.
-
-After all the FPU state cleanups and finally finding the problem that
-caused all our FPU save/restore problems, this re-introduces the
-preloading of FPU state that was removed in commit b3b0870ef3ff ("i387:
-do not preload FPU state at task switch time").
-
-However, instead of simply reverting the removal, this reimplements
-preloading with several fixes, most notably
-
- - properly abstracted as a true FPU state switch, rather than as
- open-coded save and restore with various hacks.
-
- In particular, implementing it as a proper FPU state switch allows us
- to optimize the CR0.TS flag accesses: there is no reason to set the
- TS bit only to then almost immediately clear it again. CR0 accesses
- are quite slow and expensive, don't flip the bit back and forth for
- no good reason.
-
- - Make sure that the same model works for both x86-32 and x86-64, so
- that there are no gratuitous differences between the two due to the
- way they save and restore segment state differently due to
- architectural differences that really don't matter to the FPU state.
-
- - Avoid exposing the "preload" state to the context switch routines,
- and in particular allow the concept of lazy state restore: if nothing
- else has used the FPU in the meantime, and the process is still on
- the same CPU, we can avoid restoring state from memory entirely, just
- re-expose the state that is still in the FPU unit.
-
- That optimized lazy restore isn't actually implemented here, but the
- infrastructure is set up for it. Of course, older CPU's that use
- 'fnsave' to save the state cannot take advantage of this, since the
- state saving also trashes the state.
-
-In other words, there is now an actual _design_ to the FPU state saving,
-rather than just random historical baggage. Hopefully it's easier to
-follow as a result.
-
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/x86/include/asm/i387.h | 110 +++++++++++++++++++++++++++++++++++-------
- arch/x86/kernel/process_32.c | 5 +-
- arch/x86/kernel/process_64.c | 5 +-
- arch/x86/kernel/traps.c | 55 ++++++++++++---------
- 4 files changed, 133 insertions(+), 42 deletions(-)
-
-diff --git a/arch/x86/include/asm/i387.h b/arch/x86/include/asm/i387.h
-index f537667..a850b4d 100644
---- a/arch/x86/include/asm/i387.h
-+++ b/arch/x86/include/asm/i387.h
-@@ -29,6 +29,7 @@ extern unsigned int sig_xstate_size;
- extern void fpu_init(void);
- extern void mxcsr_feature_mask_init(void);
- extern int init_fpu(struct task_struct *child);
-+extern void __math_state_restore(struct task_struct *);
- extern void math_state_restore(void);
- extern int dump_fpu(struct pt_regs *, struct user_i387_struct *);
-
-@@ -212,9 +213,10 @@ static inline void fpu_fxsave(struct fpu *fpu)
- #endif /* CONFIG_X86_64 */
-
- /*
-- * These must be called with preempt disabled
-+ * These must be called with preempt disabled. Returns
-+ * 'true' if the FPU state is still intact.
- */
--static inline void fpu_save_init(struct fpu *fpu)
-+static inline int fpu_save_init(struct fpu *fpu)
- {
- if (use_xsave()) {
- fpu_xsave(fpu);
-@@ -223,22 +225,33 @@ static inline void fpu_save_init(struct fpu *fpu)
- * xsave header may indicate the init state of the FP.
- */
- if (!(fpu->state->xsave.xsave_hdr.xstate_bv & XSTATE_FP))
-- return;
-+ return 1;
- } else if (use_fxsr()) {
- fpu_fxsave(fpu);
- } else {
- asm volatile("fnsave %[fx]; fwait"
- : [fx] "=m" (fpu->state->fsave));
-- return;
-+ return 0;
- }
-
-- if (unlikely(fpu->state->fxsave.swd & X87_FSW_ES))
-+ /*
-+ * If exceptions are pending, we need to clear them so
-+ * that we don't randomly get exceptions later.
-+ *
-+ * FIXME! Is this perhaps only true for the old-style
-+ * irq13 case? Maybe we could leave the x87 state
-+ * intact otherwise?
-+ */
-+ if (unlikely(fpu->state->fxsave.swd & X87_FSW_ES)) {
- asm volatile("fnclex");
-+ return 0;
-+ }
-+ return 1;
- }
-
--static inline void __save_init_fpu(struct task_struct *tsk)
-+static inline int __save_init_fpu(struct task_struct *tsk)
- {
-- fpu_save_init(&tsk->thread.fpu);
-+ return fpu_save_init(&tsk->thread.fpu);
- }
-
- static inline int fpu_fxrstor_checking(struct fpu *fpu)
-@@ -301,20 +314,79 @@ static inline void __thread_fpu_begin(struct task_struct *tsk)
- }
-
- /*
-- * Signal frame handlers...
-+ * FPU state switching for scheduling.
-+ *
-+ * This is a two-stage process:
-+ *
-+ * - switch_fpu_prepare() saves the old state and
-+ * sets the new state of the CR0.TS bit. This is
-+ * done within the context of the old process.
-+ *
-+ * - switch_fpu_finish() restores the new state as
-+ * necessary.
- */
--extern int save_i387_xstate(void __user *buf);
--extern int restore_i387_xstate(void __user *buf);
-+typedef struct { int preload; } fpu_switch_t;
-+
-+/*
-+ * FIXME! We could do a totally lazy restore, but we need to
-+ * add a per-cpu "this was the task that last touched the FPU
-+ * on this CPU" variable, and the task needs to have a "I last
-+ * touched the FPU on this CPU" and check them.
-+ *
-+ * We don't do that yet, so "fpu_lazy_restore()" always returns
-+ * false, but some day..
-+ */
-+#define fpu_lazy_restore(tsk) (0)
-+#define fpu_lazy_state_intact(tsk) do { } while (0)
-+
-+static inline fpu_switch_t switch_fpu_prepare(struct task_struct *old, struct task_struct *new)
-+{
-+ fpu_switch_t fpu;
-+
-+ fpu.preload = tsk_used_math(new) && new->fpu_counter > 5;
-+ if (__thread_has_fpu(old)) {
-+ if (__save_init_fpu(old))
-+ fpu_lazy_state_intact(old);
-+ __thread_clear_has_fpu(old);
-+ old->fpu_counter++;
-+
-+ /* Don't change CR0.TS if we just switch! */
-+ if (fpu.preload) {
-+ __thread_set_has_fpu(new);
-+ prefetch(new->thread.fpu.state);
-+ } else
-+ stts();
-+ } else {
-+ old->fpu_counter = 0;
-+ if (fpu.preload) {
-+ if (fpu_lazy_restore(new))
-+ fpu.preload = 0;
-+ else
-+ prefetch(new->thread.fpu.state);
-+ __thread_fpu_begin(new);
-+ }
-+ }
-+ return fpu;
-+}
-
--static inline void __unlazy_fpu(struct task_struct *tsk)
-+/*
-+ * By the time this gets called, we've already cleared CR0.TS and
-+ * given the process the FPU if we are going to preload the FPU
-+ * state - all we need to do is to conditionally restore the register
-+ * state itself.
-+ */
-+static inline void switch_fpu_finish(struct task_struct *new, fpu_switch_t fpu)
- {
-- if (__thread_has_fpu(tsk)) {
-- __save_init_fpu(tsk);
-- __thread_fpu_end(tsk);
-- } else
-- tsk->fpu_counter = 0;
-+ if (fpu.preload)
-+ __math_state_restore(new);
- }
-
-+/*
-+ * Signal frame handlers...
-+ */
-+extern int save_i387_xstate(void __user *buf);
-+extern int restore_i387_xstate(void __user *buf);
-+
- static inline void __clear_fpu(struct task_struct *tsk)
- {
- if (__thread_has_fpu(tsk)) {
-@@ -474,7 +546,11 @@ static inline void save_init_fpu(struct task_struct *tsk)
- static inline void unlazy_fpu(struct task_struct *tsk)
- {
- preempt_disable();
-- __unlazy_fpu(tsk);
-+ if (__thread_has_fpu(tsk)) {
-+ __save_init_fpu(tsk);
-+ __thread_fpu_end(tsk);
-+ } else
-+ tsk->fpu_counter = 0;
- preempt_enable();
- }
-
-diff --git a/arch/x86/kernel/process_32.c b/arch/x86/kernel/process_32.c
-index 0cdb4fa..8598296 100644
---- a/arch/x86/kernel/process_32.c
-+++ b/arch/x86/kernel/process_32.c
-@@ -297,10 +297,11 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
- *next = &next_p->thread;
- int cpu = smp_processor_id();
- struct tss_struct *tss = &per_cpu(init_tss, cpu);
-+ fpu_switch_t fpu;
-
- /* never put a printk in __switch_to... printk() calls wake_up*() indirectly */
-
-- __unlazy_fpu(prev_p);
-+ fpu = switch_fpu_prepare(prev_p, next_p);
-
- /*
- * Reload esp0.
-@@ -355,6 +356,8 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
- if (prev->gs | next->gs)
- lazy_load_gs(next->gs);
-
-+ switch_fpu_finish(next_p, fpu);
-+
- percpu_write(current_task, next_p);
-
- return prev_p;
-diff --git a/arch/x86/kernel/process_64.c b/arch/x86/kernel/process_64.c
-index 042b18f..6a364a6 100644
---- a/arch/x86/kernel/process_64.c
-+++ b/arch/x86/kernel/process_64.c
-@@ -381,8 +381,9 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
- int cpu = smp_processor_id();
- struct tss_struct *tss = &per_cpu(init_tss, cpu);
- unsigned fsindex, gsindex;
-+ fpu_switch_t fpu;
-
-- __unlazy_fpu(prev_p);
-+ fpu = switch_fpu_prepare(prev_p, next_p);
-
- /*
- * Reload esp0, LDT and the page table pointer:
-@@ -452,6 +453,8 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
- wrmsrl(MSR_KERNEL_GS_BASE, next->gs);
- prev->gsindex = gsindex;
-
-+ switch_fpu_finish(next_p, fpu);
-+
- /*
- * Switch the PDA and FPU contexts.
- */
-diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c
-index a99badf..31d9d0f 100644
---- a/arch/x86/kernel/traps.c
-+++ b/arch/x86/kernel/traps.c
-@@ -562,6 +562,37 @@ asmlinkage void __attribute__((weak)) smp_threshold_interrupt(void)
- }
-
- /*
-+ * This gets called with the process already owning the
-+ * FPU state, and with CR0.TS cleared. It just needs to
-+ * restore the FPU register state.
-+ */
-+void __math_state_restore(struct task_struct *tsk)
-+{
-+ /* We need a safe address that is cheap to find and that is already
-+ in L1. We've just brought in "tsk->thread.has_fpu", so use that */
-+#define safe_address (tsk->thread.has_fpu)
-+
-+ /* AMD K7/K8 CPUs don't save/restore FDP/FIP/FOP unless an exception
-+ is pending. Clear the x87 state here by setting it to fixed
-+ values. safe_address is a random variable that should be in L1 */
-+ alternative_input(
-+ ASM_NOP8 ASM_NOP2,
-+ "emms\n\t" /* clear stack tags */
-+ "fildl %P[addr]", /* set F?P to defined value */
-+ X86_FEATURE_FXSAVE_LEAK,
-+ [addr] "m" (safe_address));
-+
-+ /*
-+ * Paranoid restore. send a SIGSEGV if we fail to restore the state.
-+ */
-+ if (unlikely(restore_fpu_checking(tsk))) {
-+ __thread_fpu_end(tsk);
-+ force_sig(SIGSEGV, tsk);
-+ return;
-+ }
-+}
-+
-+/*
- * 'math_state_restore()' saves the current math information in the
- * old math state array, and gets the new ones from the current task
- *
-@@ -575,10 +606,6 @@ void math_state_restore(void)
- {
- struct task_struct *tsk = current;
-
-- /* We need a safe address that is cheap to find and that is already
-- in L1. We're just bringing in "tsk->thread.has_fpu", so use that */
--#define safe_address (tsk->thread.has_fpu)
--
- if (!tsk_used_math(tsk)) {
- local_irq_enable();
- /*
-@@ -595,25 +622,7 @@ void math_state_restore(void)
- }
-
- __thread_fpu_begin(tsk);
--
-- /* AMD K7/K8 CPUs don't save/restore FDP/FIP/FOP unless an exception
-- is pending. Clear the x87 state here by setting it to fixed
-- values. safe_address is a random variable that should be in L1 */
-- alternative_input(
-- ASM_NOP8 ASM_NOP2,
-- "emms\n\t" /* clear stack tags */
-- "fildl %P[addr]", /* set F?P to defined value */
-- X86_FEATURE_FXSAVE_LEAK,
-- [addr] "m" (safe_address));
--
-- /*
-- * Paranoid restore. send a SIGSEGV if we fail to restore the state.
-- */
-- if (unlikely(restore_fpu_checking(tsk))) {
-- __thread_fpu_end(tsk);
-- force_sig(SIGSEGV, tsk);
-- return;
-- }
-+ __math_state_restore(tsk);
-
- tsk->fpu_counter++;
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.8/0011-Linux-3.2.8.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.8/0011-Linux-3.2.8.patch
deleted file mode 100644
index 5b411db..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.8/0011-Linux-3.2.8.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 9b92e468f1fb095f3d25d7c846d692c327323f01 Mon Sep 17 00:00:00 2001
-From: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Date: Mon, 27 Feb 2012 10:26:22 -0800
-Subject: [PATCH 11/11] Linux 3.2.8
-
----
- Makefile | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Makefile b/Makefile
-index d1bdc90..7df8a84 100644
---- a/Makefile
-+++ b/Makefile
-@@ -1,6 +1,6 @@
- VERSION = 3
- PATCHLEVEL = 2
--SUBLEVEL = 7
-+SUBLEVEL = 8
- EXTRAVERSION =
- NAME = Saber-toothed Squirrel
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0001-Security-tomoyo-add-.gitignore-file.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0001-Security-tomoyo-add-.gitignore-file.patch
deleted file mode 100644
index af59da4..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0001-Security-tomoyo-add-.gitignore-file.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 8745993283e67a6ee9a50553a53c1262ab069704 Mon Sep 17 00:00:00 2001
-From: Greg Kroah-Hartman <gregkh at suse.de>
-Date: Fri, 9 Dec 2011 11:23:46 -0800
-Subject: [PATCH 01/72] Security: tomoyo: add .gitignore file
-
-commit 735e93c70434614bffac4a914ca1da72e37d43c0 upstream.
-
-This adds the .gitignore file for the autogenerated TOMOYO files to keep
-git from complaining after building things.
-
-Cc: Kentaro Takeda <takedakn at nttdata.co.jp>
-Cc: Tetsuo Handa <penguin-kernel at I-love.SAKURA.ne.jp>
-Cc: James Morris <jmorris at namei.org>
-Acked-by: Tetsuo Handa <penguin-kernel at I-love.SAKURA.ne.jp>
-Signed-off-by: James Morris <jmorris at namei.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- security/tomoyo/.gitignore | 2 ++
- 1 file changed, 2 insertions(+)
- create mode 100644 security/tomoyo/.gitignore
-
-diff --git a/security/tomoyo/.gitignore b/security/tomoyo/.gitignore
-new file mode 100644
-index 0000000..5caf1a6
---- /dev/null
-+++ b/security/tomoyo/.gitignore
-@@ -0,0 +1,2 @@
-+builtin-policy.h
-+policy/
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0002-powerpc-perf-power_pmu_start-restores-incorrect-valu.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0002-powerpc-perf-power_pmu_start-restores-incorrect-valu.patch
deleted file mode 100644
index c30aca3..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0002-powerpc-perf-power_pmu_start-restores-incorrect-valu.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From a5e7847241035f1293439ae2422c9e19271c0c24 Mon Sep 17 00:00:00 2001
-From: Anton Blanchard <anton at samba.org>
-Date: Wed, 15 Feb 2012 18:48:22 +0000
-Subject: [PATCH 02/72] powerpc/perf: power_pmu_start restores incorrect
- values, breaking frequency events
-
-commit 9a45a9407c69d068500923480884661e2b9cc421 upstream.
-
-perf on POWER stopped working after commit e050e3f0a71b (perf: Fix
-broken interrupt rate throttling). That patch exposed a bug in
-the POWER perf_events code.
-
-Since the PMCs count upwards and take an exception when the top bit
-is set, we want to write 0x80000000 - left in power_pmu_start. We were
-instead programming in left which effectively disables the counter
-until we eventually hit 0x80000000. This could take seconds or longer.
-
-With the patch applied I get the expected number of samples:
-
- SAMPLE events: 9948
-
-Signed-off-by: Anton Blanchard <anton at samba.org>
-Acked-by: Paul Mackerras <paulus at samba.org>
-Signed-off-by: Benjamin Herrenschmidt <benh at kernel.crashing.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/powerpc/kernel/perf_event.c | 8 +++++++-
- 1 file changed, 7 insertions(+), 1 deletion(-)
-
-diff --git a/arch/powerpc/kernel/perf_event.c b/arch/powerpc/kernel/perf_event.c
-index 10a140f..64483fd 100644
---- a/arch/powerpc/kernel/perf_event.c
-+++ b/arch/powerpc/kernel/perf_event.c
-@@ -865,6 +865,7 @@ static void power_pmu_start(struct perf_event *event, int ef_flags)
- {
- unsigned long flags;
- s64 left;
-+ unsigned long val;
-
- if (!event->hw.idx || !event->hw.sample_period)
- return;
-@@ -880,7 +881,12 @@ static void power_pmu_start(struct perf_event *event, int ef_flags)
-
- event->hw.state = 0;
- left = local64_read(&event->hw.period_left);
-- write_pmc(event->hw.idx, left);
-+
-+ val = 0;
-+ if (left < 0x80000000L)
-+ val = 0x80000000L - left;
-+
-+ write_pmc(event->hw.idx, val);
-
- perf_event_update_userpage(event);
- perf_pmu_enable(event->pmu);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0003-ARM-at91-USB-AT91-gadget-registration-for-module.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0003-ARM-at91-USB-AT91-gadget-registration-for-module.patch
deleted file mode 100644
index 81d1097..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0003-ARM-at91-USB-AT91-gadget-registration-for-module.patch
+++ /dev/null
@@ -1,78 +0,0 @@
-From a6ee86920e1888c173cabbc4e6dabfd12e68270b Mon Sep 17 00:00:00 2001
-From: Nicolas Ferre <nicolas.ferre at atmel.com>
-Date: Fri, 27 Jan 2012 11:14:44 +0100
-Subject: [PATCH 03/72] ARM: at91: USB AT91 gadget registration for module
-
-commit e8c9dc93e27d891636defbc269f182a83e6abba8 upstream.
-
-Registration of at91_udc as a module will enable SoC
-related code.
-
-Fix following an idea from Karel Znamenacek.
-
-Signed-off-by: Nicolas Ferre <nicolas.ferre at atmel.com>
-Acked-by: Karel Znamenacek <karel at ryston.cz>
-Acked-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj at jcrosoft.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/arm/mach-at91/at91rm9200_devices.c | 2 +-
- arch/arm/mach-at91/at91sam9260_devices.c | 2 +-
- arch/arm/mach-at91/at91sam9261_devices.c | 2 +-
- arch/arm/mach-at91/at91sam9263_devices.c | 2 +-
- 4 files changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/arch/arm/mach-at91/at91rm9200_devices.c b/arch/arm/mach-at91/at91rm9200_devices.c
-index ad93068..143eebb 100644
---- a/arch/arm/mach-at91/at91rm9200_devices.c
-+++ b/arch/arm/mach-at91/at91rm9200_devices.c
-@@ -83,7 +83,7 @@ void __init at91_add_device_usbh(struct at91_usbh_data *data) {}
- * USB Device (Gadget)
- * -------------------------------------------------------------------- */
-
--#ifdef CONFIG_USB_AT91
-+#if defined(CONFIG_USB_AT91) || defined(CONFIG_USB_AT91_MODULE)
- static struct at91_udc_data udc_data;
-
- static struct resource udc_resources[] = {
-diff --git a/arch/arm/mach-at91/at91sam9260_devices.c b/arch/arm/mach-at91/at91sam9260_devices.c
-index 629fa97..2590988 100644
---- a/arch/arm/mach-at91/at91sam9260_devices.c
-+++ b/arch/arm/mach-at91/at91sam9260_devices.c
-@@ -84,7 +84,7 @@ void __init at91_add_device_usbh(struct at91_usbh_data *data) {}
- * USB Device (Gadget)
- * -------------------------------------------------------------------- */
-
--#ifdef CONFIG_USB_AT91
-+#if defined(CONFIG_USB_AT91) || defined(CONFIG_USB_AT91_MODULE)
- static struct at91_udc_data udc_data;
-
- static struct resource udc_resources[] = {
-diff --git a/arch/arm/mach-at91/at91sam9261_devices.c b/arch/arm/mach-at91/at91sam9261_devices.c
-index a178b58..daf3e66 100644
---- a/arch/arm/mach-at91/at91sam9261_devices.c
-+++ b/arch/arm/mach-at91/at91sam9261_devices.c
-@@ -87,7 +87,7 @@ void __init at91_add_device_usbh(struct at91_usbh_data *data) {}
- * USB Device (Gadget)
- * -------------------------------------------------------------------- */
-
--#ifdef CONFIG_USB_AT91
-+#if defined(CONFIG_USB_AT91) || defined(CONFIG_USB_AT91_MODULE)
- static struct at91_udc_data udc_data;
-
- static struct resource udc_resources[] = {
-diff --git a/arch/arm/mach-at91/at91sam9263_devices.c b/arch/arm/mach-at91/at91sam9263_devices.c
-index d5fbac9..32a7e43 100644
---- a/arch/arm/mach-at91/at91sam9263_devices.c
-+++ b/arch/arm/mach-at91/at91sam9263_devices.c
-@@ -92,7 +92,7 @@ void __init at91_add_device_usbh(struct at91_usbh_data *data) {}
- * USB Device (Gadget)
- * -------------------------------------------------------------------- */
-
--#ifdef CONFIG_USB_AT91
-+#if defined(CONFIG_USB_AT91) || defined(CONFIG_USB_AT91_MODULE)
- static struct at91_udc_data udc_data;
-
- static struct resource udc_resources[] = {
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0004-drm-radeon-kms-fix-MSI-re-arm-on-rv370.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0004-drm-radeon-kms-fix-MSI-re-arm-on-rv370.patch
deleted file mode 100644
index 35e5454..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0004-drm-radeon-kms-fix-MSI-re-arm-on-rv370.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From d8981763b4d9a3eb23de25d46f474ed4c880179e Mon Sep 17 00:00:00 2001
-From: Alex Deucher <alexander.deucher at amd.com>
-Date: Mon, 13 Feb 2012 16:36:34 -0500
-Subject: [PATCH 04/72] drm/radeon/kms: fix MSI re-arm on rv370+
-
-commit b7f5b7dec3d539a84734f2bcb7e53fbb1532a40b upstream.
-
-MSI_REARM_EN register is a write only trigger register.
-There is no need RMW when re-arming.
-
-May fix:
-https://bugs.freedesktop.org/show_bug.cgi?id=41668
-
-Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
-Signed-off-by: Dave Airlie <airlied at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/gpu/drm/radeon/r100.c | 4 +---
- drivers/gpu/drm/radeon/rs600.c | 4 +---
- 2 files changed, 2 insertions(+), 6 deletions(-)
-
-diff --git a/drivers/gpu/drm/radeon/r100.c b/drivers/gpu/drm/radeon/r100.c
-index 31b0d1a..fad7cd1 100644
---- a/drivers/gpu/drm/radeon/r100.c
-+++ b/drivers/gpu/drm/radeon/r100.c
-@@ -789,9 +789,7 @@ int r100_irq_process(struct radeon_device *rdev)
- WREG32(RADEON_AIC_CNTL, msi_rearm | RS400_MSI_REARM);
- break;
- default:
-- msi_rearm = RREG32(RADEON_MSI_REARM_EN) & ~RV370_MSI_REARM_EN;
-- WREG32(RADEON_MSI_REARM_EN, msi_rearm);
-- WREG32(RADEON_MSI_REARM_EN, msi_rearm | RV370_MSI_REARM_EN);
-+ WREG32(RADEON_MSI_REARM_EN, RV370_MSI_REARM_EN);
- break;
- }
- }
-diff --git a/drivers/gpu/drm/radeon/rs600.c b/drivers/gpu/drm/radeon/rs600.c
-index c259e21..ee898e9 100644
---- a/drivers/gpu/drm/radeon/rs600.c
-+++ b/drivers/gpu/drm/radeon/rs600.c
-@@ -693,9 +693,7 @@ int rs600_irq_process(struct radeon_device *rdev)
- WREG32(RADEON_BUS_CNTL, msi_rearm | RS600_MSI_REARM);
- break;
- default:
-- msi_rearm = RREG32(RADEON_MSI_REARM_EN) & ~RV370_MSI_REARM_EN;
-- WREG32(RADEON_MSI_REARM_EN, msi_rearm);
-- WREG32(RADEON_MSI_REARM_EN, msi_rearm | RV370_MSI_REARM_EN);
-+ WREG32(RADEON_MSI_REARM_EN, RV370_MSI_REARM_EN);
- break;
- }
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0005-PCI-workaround-hard-wired-bus-number-V2.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0005-PCI-workaround-hard-wired-bus-number-V2.patch
deleted file mode 100644
index f1bb13d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0005-PCI-workaround-hard-wired-bus-number-V2.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From 107b4c2d038911dd42e9450fc6abd42a9b5c0d7f Mon Sep 17 00:00:00 2001
-From: Yinghai Lu <yinghai.lu at oracle.com>
-Date: Mon, 30 Jan 2012 12:25:24 +0100
-Subject: [PATCH 05/72] PCI: workaround hard-wired bus number V2
-
-commit 71f6bd4a23130cd2f4b036010c5790b1295290b9 upstream.
-
-Fixes PCI device detection on IBM xSeries IBM 3850 M2 / x3950 M2
-when using ACPI resources (_CRS).
-This is default, a manual workaround (without this patch)
-would be pci=nocrs boot param.
-
-V2: Add dev_warn if the workaround is hit. This should reveal
-how common such setups are (via google) and point to possible
-problems if things are still not working as expected.
--> Suggested by Jan Beulich.
-
-Tested-by: garyhade at us.ibm.com
-Signed-off-by: Yinghai Lu <yinghai.lu at oracle.com>
-Signed-off-by: Jesse Barnes <jbarnes at virtuousgeek.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/pci/probe.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
-index 04e74f4..dfee1b3 100644
---- a/drivers/pci/probe.c
-+++ b/drivers/pci/probe.c
-@@ -651,6 +651,11 @@ int __devinit pci_scan_bridge(struct pci_bus *bus, struct pci_dev *dev, int max,
- dev_dbg(&dev->dev, "scanning [bus %02x-%02x] behind bridge, pass %d\n",
- secondary, subordinate, pass);
-
-+ if (!primary && (primary != bus->number) && secondary && subordinate) {
-+ dev_warn(&dev->dev, "Primary bus is hard wired to 0\n");
-+ primary = bus->number;
-+ }
-+
- /* Check if setup is sensible at all */
- if (!pass &&
- (primary != bus->number || secondary <= bus->number)) {
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0006-mac80211-Fix-a-rwlock-bad-magic-bug.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0006-mac80211-Fix-a-rwlock-bad-magic-bug.patch
deleted file mode 100644
index 28c7073..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0006-mac80211-Fix-a-rwlock-bad-magic-bug.patch
+++ /dev/null
@@ -1,91 +0,0 @@
-From 248cd0d28b536448969faa6151c7865d29801453 Mon Sep 17 00:00:00 2001
-From: Mohammed Shafi Shajakhan <mohammed at qca.qualcomm.com>
-Date: Thu, 9 Feb 2012 19:59:43 +0530
-Subject: [PATCH 06/72] mac80211: Fix a rwlock bad magic bug
-
-commit b57e6b560fc2a2742910ac5ca0eb2c46e45aeac2 upstream.
-
-read_lock(&tpt_trig->trig.leddev_list_lock) is accessed via the path
-ieee80211_open (->) ieee80211_do_open (->) ieee80211_mod_tpt_led_trig
-(->) ieee80211_start_tpt_led_trig (->) tpt_trig_timer before initializing
-it.
-the intilization of this read/write lock happens via the path
-ieee80211_led_init (->) led_trigger_register, but we are doing
-'ieee80211_led_init' after 'ieeee80211_if_add' where we
-register netdev_ops.
-so we access leddev_list_lock before initializing it and causes the
-following bug in chrome laptops with AR928X cards with the following
-script
-
-while true
-do
-sudo modprobe -v ath9k
-sleep 3
-sudo modprobe -r ath9k
-sleep 3
-done
-
- BUG: rwlock bad magic on CPU#1, wpa_supplicant/358, f5b9eccc
- Pid: 358, comm: wpa_supplicant Not tainted 3.0.13 #1
- Call Trace:
-
- [<8137b9df>] rwlock_bug+0x3d/0x47
- [<81179830>] do_raw_read_lock+0x19/0x29
- [<8137f063>] _raw_read_lock+0xd/0xf
- [<f9081957>] tpt_trig_timer+0xc3/0x145 [mac80211]
- [<f9081f3a>] ieee80211_mod_tpt_led_trig+0x152/0x174 [mac80211]
- [<f9076a3f>] ieee80211_do_open+0x11e/0x42e [mac80211]
- [<f9075390>] ? ieee80211_check_concurrent_iface+0x26/0x13c [mac80211]
- [<f9076d97>] ieee80211_open+0x48/0x4c [mac80211]
- [<812dbed8>] __dev_open+0x82/0xab
- [<812dc0c9>] __dev_change_flags+0x9c/0x113
- [<812dc1ae>] dev_change_flags+0x18/0x44
- [<8132144f>] devinet_ioctl+0x243/0x51a
- [<81321ba9>] inet_ioctl+0x93/0xac
- [<812cc951>] sock_ioctl+0x1c6/0x1ea
- [<812cc78b>] ? might_fault+0x20/0x20
- [<810b1ebb>] do_vfs_ioctl+0x46e/0x4a2
- [<810a6ebb>] ? fget_light+0x2f/0x70
- [<812ce549>] ? sys_recvmsg+0x3e/0x48
- [<810b1f35>] sys_ioctl+0x46/0x69
- [<8137fa77>] sysenter_do_call+0x12/0x2
-
-Cc: Gary Morain <gmorain at google.com>
-Cc: Paul Stewart <pstew at google.com>
-Cc: Abhijit Pradhan <abhijit at qca.qualcomm.com>
-Cc: Vasanthakumar Thiagarajan <vthiagar at qca.qualcomm.com>
-Cc: Rajkumar Manoharan <rmanohar at qca.qualcomm.com>
-Acked-by: Johannes Berg <johannes.berg at intel.com>
-Tested-by: Mohammed Shafi Shajakhan <mohammed at qca.qualcomm.com>
-Signed-off-by: Mohammed Shafi Shajakhan <mohammed at qca.qualcomm.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- net/mac80211/main.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/net/mac80211/main.c b/net/mac80211/main.c
-index a7536fd..7d9b21d 100644
---- a/net/mac80211/main.c
-+++ b/net/mac80211/main.c
-@@ -885,6 +885,8 @@ int ieee80211_register_hw(struct ieee80211_hw *hw)
- wiphy_debug(local->hw.wiphy, "Failed to initialize wep: %d\n",
- result);
-
-+ ieee80211_led_init(local);
-+
- rtnl_lock();
-
- result = ieee80211_init_rate_ctrl_alg(local,
-@@ -906,8 +908,6 @@ int ieee80211_register_hw(struct ieee80211_hw *hw)
-
- rtnl_unlock();
-
-- ieee80211_led_init(local);
--
- local->network_latency_notifier.notifier_call =
- ieee80211_max_network_latency;
- result = pm_qos_add_notifier(PM_QOS_NETWORK_LATENCY,
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0007-ipheth-Add-iPhone-4S.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0007-ipheth-Add-iPhone-4S.patch
deleted file mode 100644
index 1c9728d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0007-ipheth-Add-iPhone-4S.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 5a7941eecab396dc077c20e70e8ac3711ce59d8b Mon Sep 17 00:00:00 2001
-From: Tim Gardner <tim.gardner at canonical.com>
-Date: Wed, 15 Feb 2012 07:50:15 +0000
-Subject: [PATCH 07/72] ipheth: Add iPhone 4S
-
-commit 72ba009b8a159e995e40d3b4e5d7d265acead983 upstream.
-
-BugLink: http://bugs.launchpad.net/bugs/900802
-
-Signed-off-by: Till Kamppeter <till.kamppeter at gmail.com>
-Signed-off-by: Tim Gardner <tim.gardner at canonical.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/net/usb/ipheth.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/drivers/net/usb/ipheth.c b/drivers/net/usb/ipheth.c
-index 13c1f04..ad96164 100644
---- a/drivers/net/usb/ipheth.c
-+++ b/drivers/net/usb/ipheth.c
-@@ -60,6 +60,7 @@
- #define USB_PRODUCT_IPHONE_3GS 0x1294
- #define USB_PRODUCT_IPHONE_4 0x1297
- #define USB_PRODUCT_IPHONE_4_VZW 0x129c
-+#define USB_PRODUCT_IPHONE_4S 0x12a0
-
- #define IPHETH_USBINTF_CLASS 255
- #define IPHETH_USBINTF_SUBCLASS 253
-@@ -103,6 +104,10 @@ static struct usb_device_id ipheth_table[] = {
- USB_VENDOR_APPLE, USB_PRODUCT_IPHONE_4_VZW,
- IPHETH_USBINTF_CLASS, IPHETH_USBINTF_SUBCLASS,
- IPHETH_USBINTF_PROTO) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(
-+ USB_VENDOR_APPLE, USB_PRODUCT_IPHONE_4S,
-+ IPHETH_USBINTF_CLASS, IPHETH_USBINTF_SUBCLASS,
-+ IPHETH_USBINTF_PROTO) },
- { }
- };
- MODULE_DEVICE_TABLE(usb, ipheth_table);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0008-regmap-Fix-cache-defaults-initialization-from-raw-ca.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0008-regmap-Fix-cache-defaults-initialization-from-raw-ca.patch
deleted file mode 100644
index 75a8dfe..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0008-regmap-Fix-cache-defaults-initialization-from-raw-ca.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From 8aff5c7aa69b29b924063b4424cf5ff5823b3fd1 Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars at metafoo.de>
-Date: Wed, 15 Feb 2012 10:23:25 +0100
-Subject: [PATCH 08/72] regmap: Fix cache defaults initialization from raw
- cache defaults
-
-commit 61cddc57dc14a5dffa0921d9a24fd68edbb374ac upstream.
-
-Currently registers with a value of 0 are ignored when initializing the register
-defaults from raw defaults. This worked in the past, because registers without a
-explicit default were assumed to have a default value of 0. This was changed in
-commit b03622a8 ("regmap: Ensure rbtree syncs registers set to zero properly").
-As a result registers, which have a raw default value of 0 are now assumed to
-have no default. This again can result in unnecessary writes when syncing the
-cache. It will also result in unnecessary reads for e.g. the first update
-operation. In the case where readback is not possible this will even let the
-update operation fail, if the register has not been written to before.
-
-So this patch removes the check. Instead it adds a check to ignore raw defaults
-for registers which are volatile, since those registers are not cached.
-
-Signed-off-by: Lars-Peter Clausen <lars at metafoo.de>
-Signed-off-by: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/base/regmap/regcache.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/base/regmap/regcache.c b/drivers/base/regmap/regcache.c
-index 666f6f5..64004b0 100644
---- a/drivers/base/regmap/regcache.c
-+++ b/drivers/base/regmap/regcache.c
-@@ -54,7 +54,7 @@ static int regcache_hw_init(struct regmap *map)
- for (count = 0, i = 0; i < map->num_reg_defaults_raw; i++) {
- val = regcache_get_val(map->reg_defaults_raw,
- i, map->cache_word_size);
-- if (!val)
-+ if (regmap_volatile(map, i))
- continue;
- count++;
- }
-@@ -69,7 +69,7 @@ static int regcache_hw_init(struct regmap *map)
- for (i = 0, j = 0; i < map->num_reg_defaults_raw; i++) {
- val = regcache_get_val(map->reg_defaults_raw,
- i, map->cache_word_size);
-- if (!val)
-+ if (regmap_volatile(map, i))
- continue;
- map->reg_defaults[j].reg = i;
- map->reg_defaults[j].def = val;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0009-eCryptfs-Copy-up-lower-inode-attrs-after-setting-low.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0009-eCryptfs-Copy-up-lower-inode-attrs-after-setting-low.patch
deleted file mode 100644
index 194f537..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0009-eCryptfs-Copy-up-lower-inode-attrs-after-setting-low.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From e23009bd78429d8f3fec32720859e754031eab38 Mon Sep 17 00:00:00 2001
-From: Tyler Hicks <tyhicks at canonical.com>
-Date: Tue, 7 Feb 2012 17:55:40 -0600
-Subject: [PATCH 09/72] eCryptfs: Copy up lower inode attrs after setting
- lower xattr
-
-commit 545d680938be1e86a6c5250701ce9abaf360c495 upstream.
-
-After passing through a ->setxattr() call, eCryptfs needs to copy the
-inode attributes from the lower inode to the eCryptfs inode, as they
-may have changed in the lower filesystem's ->setxattr() path.
-
-One example is if an extended attribute containing a POSIX Access
-Control List is being set. The new ACL may cause the lower filesystem to
-modify the mode of the lower inode and the eCryptfs inode would need to
-be updated to reflect the new mode.
-
-https://launchpad.net/bugs/926292
-
-Signed-off-by: Tyler Hicks <tyhicks at canonical.com>
-Reported-by: Sebastien Bacher <seb128 at ubuntu.com>
-Cc: John Johansen <john.johansen at canonical.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/ecryptfs/inode.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/fs/ecryptfs/inode.c b/fs/ecryptfs/inode.c
-index d2039ca..af11098 100644
---- a/fs/ecryptfs/inode.c
-+++ b/fs/ecryptfs/inode.c
-@@ -1104,6 +1104,8 @@ ecryptfs_setxattr(struct dentry *dentry, const char *name, const void *value,
- }
-
- rc = vfs_setxattr(lower_dentry, name, value, size, flags);
-+ if (!rc)
-+ fsstack_copy_attr_all(dentry->d_inode, lower_dentry->d_inode);
- out:
- return rc;
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0010-S390-correct-ktime-to-tod-clock-comparator-conversio.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0010-S390-correct-ktime-to-tod-clock-comparator-conversio.patch
deleted file mode 100644
index 5189f49..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0010-S390-correct-ktime-to-tod-clock-comparator-conversio.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From d31df13c699dad5e500737b6e298614a760286ad Mon Sep 17 00:00:00 2001
-From: Martin Schwidefsky <schwidefsky at de.ibm.com>
-Date: Fri, 17 Feb 2012 10:29:23 +0100
-Subject: [PATCH 10/72] S390: correct ktime to tod clock comparator conversion
-
-commit cf1eb40f8f5ea12c9e569e7282161fc7f194fd62 upstream.
-
-The conversion of the ktime to a value suitable for the clock comparator
-does not take changes to wall_to_monotonic into account. In fact the
-conversion just needs the boot clock (sched_clock_base_cc) and the
-total_sleep_time.
-
-This is applicable to 3.2+ kernels.
-
-Signed-off-by: Martin Schwidefsky <schwidefsky at de.ibm.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/s390/kernel/time.c | 7 +++++--
- 1 file changed, 5 insertions(+), 2 deletions(-)
-
-diff --git a/arch/s390/kernel/time.c b/arch/s390/kernel/time.c
-index ebbfab3..e03c555 100644
---- a/arch/s390/kernel/time.c
-+++ b/arch/s390/kernel/time.c
-@@ -113,11 +113,14 @@ static void fixup_clock_comparator(unsigned long long delta)
- static int s390_next_ktime(ktime_t expires,
- struct clock_event_device *evt)
- {
-+ struct timespec ts;
- u64 nsecs;
-
-- nsecs = ktime_to_ns(ktime_sub(expires, ktime_get_monotonic_offset()));
-+ ts.tv_sec = ts.tv_nsec = 0;
-+ monotonic_to_bootbased(&ts);
-+ nsecs = ktime_to_ns(ktime_add(timespec_to_ktime(ts), expires));
- do_div(nsecs, 125);
-- S390_lowcore.clock_comparator = TOD_UNIX_EPOCH + (nsecs << 9);
-+ S390_lowcore.clock_comparator = sched_clock_base_cc + (nsecs << 9);
- set_clock_comparator(S390_lowcore.clock_comparator);
- return 0;
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0011-vfs-fix-d_inode_lookup-dentry-ref-leak.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0011-vfs-fix-d_inode_lookup-dentry-ref-leak.patch
deleted file mode 100644
index 3c9c7f3..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0011-vfs-fix-d_inode_lookup-dentry-ref-leak.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From e221415cd0f639fc061e48a8edcfd2658fa6c440 Mon Sep 17 00:00:00 2001
-From: Miklos Szeredi <mszeredi at suse.cz>
-Date: Fri, 3 Feb 2012 14:25:18 +0100
-Subject: [PATCH 11/72] vfs: fix d_inode_lookup() dentry ref leak
-
-commit e188dc02d3a9c911be56eca5aa114fe7e9822d53 upstream.
-
-d_inode_lookup() leaks a dentry reference on IS_DEADDIR().
-
-Signed-off-by: Miklos Szeredi <mszeredi at suse.cz>
-Signed-off-by: Al Viro <viro at zeniv.linux.org.uk>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/namei.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/fs/namei.c b/fs/namei.c
-index 5008f01..744e942 100644
---- a/fs/namei.c
-+++ b/fs/namei.c
-@@ -1094,8 +1094,10 @@ static struct dentry *d_inode_lookup(struct dentry *parent, struct dentry *dentr
- struct dentry *old;
-
- /* Don't create child dentry for a dead directory. */
-- if (unlikely(IS_DEADDIR(inode)))
-+ if (unlikely(IS_DEADDIR(inode))) {
-+ dput(dentry);
- return ERR_PTR(-ENOENT);
-+ }
-
- old = inode->i_op->lookup(inode, dentry, nd);
- if (unlikely(old)) {
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0012-ARM-7326-2-PL330-fix-null-pointer-dereference-in-pl3.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0012-ARM-7326-2-PL330-fix-null-pointer-dereference-in-pl3.patch
deleted file mode 100644
index 9915387..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0012-ARM-7326-2-PL330-fix-null-pointer-dereference-in-pl3.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From 4dba080e4a963820e5b9a810bdbec72c2e33a5cb Mon Sep 17 00:00:00 2001
-From: Javi Merino <javi.merino at arm.com>
-Date: Wed, 15 Feb 2012 17:36:39 +0100
-Subject: [PATCH 12/72] ARM: 7326/2: PL330: fix null pointer dereference in
- pl330_chan_ctrl()
-
-commit 46e33c606af8e0caeeca374103189663d877c0d6 upstream.
-
-This fixes the thrd->req_running field being accessed before thrd
-is checked for null. The error was introduced in
-
- abb959f: ARM: 7237/1: PL330: Fix driver freeze
-
-Reference: <1326458191-23492-1-git-send-email-mans.rullgard at linaro.org>
-
-Signed-off-by: Mans Rullgard <mans.rullgard at linaro.org>
-Acked-by: Javi Merino <javi.merino at arm.com>
-Signed-off-by: Russell King <rmk+kernel at arm.linux.org.uk>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/arm/common/pl330.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/arch/arm/common/pl330.c b/arch/arm/common/pl330.c
-index 8d8df74..67abef5 100644
---- a/arch/arm/common/pl330.c
-+++ b/arch/arm/common/pl330.c
-@@ -1496,12 +1496,13 @@ int pl330_chan_ctrl(void *ch_id, enum pl330_chan_op op)
- struct pl330_thread *thrd = ch_id;
- struct pl330_dmac *pl330;
- unsigned long flags;
-- int ret = 0, active = thrd->req_running;
-+ int ret = 0, active;
-
- if (!thrd || thrd->free || thrd->dmac->state == DYING)
- return -EINVAL;
-
- pl330 = thrd->dmac;
-+ active = thrd->req_running;
-
- spin_lock_irqsave(&pl330->lock, flags);
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0013-ALSA-hda-Fix-redundant-jack-creations-for-cx5051.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0013-ALSA-hda-Fix-redundant-jack-creations-for-cx5051.patch
deleted file mode 100644
index 9ebde0e..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0013-ALSA-hda-Fix-redundant-jack-creations-for-cx5051.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-From 9db1b1f07b5ebad591e145671313720d4728d2d1 Mon Sep 17 00:00:00 2001
-From: Takashi Iwai <tiwai at suse.de>
-Date: Wed, 22 Feb 2012 17:02:38 +0100
-Subject: [PATCH 13/72] ALSA: hda - Fix redundant jack creations for cx5051
-
-[Note that since the patch isn't applicable (and unnecessary) to
-3.3-rc, there is no corresponding upstream fix.]
-
-The cx5051 parser calls snd_hda_input_jack_add() in the init callback
-to create and initialize the jack detection instances. Since the init
-callback is called at each time when the device gets woken up after
-suspend or power-saving mode, the duplicated instances are accumulated
-at each call. This ends up with the kernel warnings with the too
-large array size.
-
-The fix is simply to move the calls of snd_hda_input_jack_add() into
-the parser section instead of the init callback.
-
-The fix is needed only up to 3.2 kernel, since the HD-audio jack layer
-was redesigned in the 3.3 kernel.
-
-Reported-by: Russell King <rmk+kernel at arm.linux.org.uk>
-Tested-by: Russell King <rmk+kernel at arm.linux.org.uk>
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- sound/pci/hda/patch_conexant.c | 11 ++++++++++-
- 1 file changed, 10 insertions(+), 1 deletion(-)
-
-diff --git a/sound/pci/hda/patch_conexant.c b/sound/pci/hda/patch_conexant.c
-index 7072251..08bad5b 100644
---- a/sound/pci/hda/patch_conexant.c
-+++ b/sound/pci/hda/patch_conexant.c
-@@ -1899,6 +1899,10 @@ static void cxt5051_init_mic_port(struct hda_codec *codec, hda_nid_t nid,
- snd_hda_codec_write(codec, nid, 0,
- AC_VERB_SET_UNSOLICITED_ENABLE,
- AC_USRSP_EN | event);
-+}
-+
-+static void cxt5051_init_mic_jack(struct hda_codec *codec, hda_nid_t nid)
-+{
- snd_hda_input_jack_add(codec, nid, SND_JACK_MICROPHONE, NULL);
- snd_hda_input_jack_report(codec, nid);
- }
-@@ -1916,7 +1920,6 @@ static int cxt5051_init(struct hda_codec *codec)
- struct conexant_spec *spec = codec->spec;
-
- conexant_init(codec);
-- conexant_init_jacks(codec);
-
- if (spec->auto_mic & AUTO_MIC_PORTB)
- cxt5051_init_mic_port(codec, 0x17, CXT5051_PORTB_EVENT);
-@@ -2037,6 +2040,12 @@ static int patch_cxt5051(struct hda_codec *codec)
- if (spec->beep_amp)
- snd_hda_attach_beep_device(codec, spec->beep_amp);
-
-+ conexant_init_jacks(codec);
-+ if (spec->auto_mic & AUTO_MIC_PORTB)
-+ cxt5051_init_mic_jack(codec, 0x17);
-+ if (spec->auto_mic & AUTO_MIC_PORTC)
-+ cxt5051_init_mic_jack(codec, 0x18);
-+
- return 0;
- }
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0014-mmc-core-check-for-zero-length-ioctl-data.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0014-mmc-core-check-for-zero-length-ioctl-data.patch
deleted file mode 100644
index 7f51991..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0014-mmc-core-check-for-zero-length-ioctl-data.patch
+++ /dev/null
@@ -1,137 +0,0 @@
-From 221b6bff35a1b7ae84b83a8ac4ebeaa1ceed8dea Mon Sep 17 00:00:00 2001
-From: Johan Rudholm <johan.rudholm at stericsson.com>
-Date: Wed, 23 Nov 2011 09:05:58 +0100
-Subject: [PATCH 14/72] mmc: core: check for zero length ioctl data
-
-commit 4d6144de8ba263eb3691a737c547e5b2fdc45287 upstream.
-
-If the read or write buffer size associated with the command sent
-through the mmc_blk_ioctl is zero, do not prepare data buffer.
-
-This enables a ioctl(2) call to for instance send a MMC_SWITCH to set
-a byte in the ext_csd.
-
-Signed-off-by: Johan Rudholm <johan.rudholm at stericsson.com>
-Signed-off-by: Chris Ball <cjb at laptop.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/mmc/card/block.c | 82 +++++++++++++++++++++++++---------------------
- 1 file changed, 45 insertions(+), 37 deletions(-)
-
-diff --git a/drivers/mmc/card/block.c b/drivers/mmc/card/block.c
-index 1e0e27c..e15e47d 100644
---- a/drivers/mmc/card/block.c
-+++ b/drivers/mmc/card/block.c
-@@ -266,6 +266,9 @@ static struct mmc_blk_ioc_data *mmc_blk_ioctl_copy_from_user(
- goto idata_err;
- }
-
-+ if (!idata->buf_bytes)
-+ return idata;
-+
- idata->buf = kzalloc(idata->buf_bytes, GFP_KERNEL);
- if (!idata->buf) {
- err = -ENOMEM;
-@@ -312,25 +315,6 @@ static int mmc_blk_ioctl_cmd(struct block_device *bdev,
- if (IS_ERR(idata))
- return PTR_ERR(idata);
-
-- cmd.opcode = idata->ic.opcode;
-- cmd.arg = idata->ic.arg;
-- cmd.flags = idata->ic.flags;
--
-- data.sg = &sg;
-- data.sg_len = 1;
-- data.blksz = idata->ic.blksz;
-- data.blocks = idata->ic.blocks;
--
-- sg_init_one(data.sg, idata->buf, idata->buf_bytes);
--
-- if (idata->ic.write_flag)
-- data.flags = MMC_DATA_WRITE;
-- else
-- data.flags = MMC_DATA_READ;
--
-- mrq.cmd = &cmd;
-- mrq.data = &data;
--
- md = mmc_blk_get(bdev->bd_disk);
- if (!md) {
- err = -EINVAL;
-@@ -343,6 +327,48 @@ static int mmc_blk_ioctl_cmd(struct block_device *bdev,
- goto cmd_done;
- }
-
-+ cmd.opcode = idata->ic.opcode;
-+ cmd.arg = idata->ic.arg;
-+ cmd.flags = idata->ic.flags;
-+
-+ if (idata->buf_bytes) {
-+ data.sg = &sg;
-+ data.sg_len = 1;
-+ data.blksz = idata->ic.blksz;
-+ data.blocks = idata->ic.blocks;
-+
-+ sg_init_one(data.sg, idata->buf, idata->buf_bytes);
-+
-+ if (idata->ic.write_flag)
-+ data.flags = MMC_DATA_WRITE;
-+ else
-+ data.flags = MMC_DATA_READ;
-+
-+ /* data.flags must already be set before doing this. */
-+ mmc_set_data_timeout(&data, card);
-+
-+ /* Allow overriding the timeout_ns for empirical tuning. */
-+ if (idata->ic.data_timeout_ns)
-+ data.timeout_ns = idata->ic.data_timeout_ns;
-+
-+ if ((cmd.flags & MMC_RSP_R1B) == MMC_RSP_R1B) {
-+ /*
-+ * Pretend this is a data transfer and rely on the
-+ * host driver to compute timeout. When all host
-+ * drivers support cmd.cmd_timeout for R1B, this
-+ * can be changed to:
-+ *
-+ * mrq.data = NULL;
-+ * cmd.cmd_timeout = idata->ic.cmd_timeout_ms;
-+ */
-+ data.timeout_ns = idata->ic.cmd_timeout_ms * 1000000;
-+ }
-+
-+ mrq.data = &data;
-+ }
-+
-+ mrq.cmd = &cmd;
-+
- mmc_claim_host(card->host);
-
- if (idata->ic.is_acmd) {
-@@ -351,24 +377,6 @@ static int mmc_blk_ioctl_cmd(struct block_device *bdev,
- goto cmd_rel_host;
- }
-
-- /* data.flags must already be set before doing this. */
-- mmc_set_data_timeout(&data, card);
-- /* Allow overriding the timeout_ns for empirical tuning. */
-- if (idata->ic.data_timeout_ns)
-- data.timeout_ns = idata->ic.data_timeout_ns;
--
-- if ((cmd.flags & MMC_RSP_R1B) == MMC_RSP_R1B) {
-- /*
-- * Pretend this is a data transfer and rely on the host driver
-- * to compute timeout. When all host drivers support
-- * cmd.cmd_timeout for R1B, this can be changed to:
-- *
-- * mrq.data = NULL;
-- * cmd.cmd_timeout = idata->ic.cmd_timeout_ms;
-- */
-- data.timeout_ns = idata->ic.cmd_timeout_ms * 1000000;
-- }
--
- mmc_wait_for_req(card->host, &mrq);
-
- if (cmd.error) {
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0015-NFSv4-Fix-an-Oops-in-the-NFSv4-getacl-code.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0015-NFSv4-Fix-an-Oops-in-the-NFSv4-getacl-code.patch
deleted file mode 100644
index 94e5b07..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0015-NFSv4-Fix-an-Oops-in-the-NFSv4-getacl-code.patch
+++ /dev/null
@@ -1,98 +0,0 @@
-From 7e71440b37ca5b516f37051cd2af18153d795a12 Mon Sep 17 00:00:00 2001
-From: Trond Myklebust <Trond.Myklebust at netapp.com>
-Date: Fri, 3 Feb 2012 18:30:53 -0500
-Subject: [PATCH 15/72] NFSv4: Fix an Oops in the NFSv4 getacl code
-
-commit 331818f1c468a24e581aedcbe52af799366a9dfe upstream.
-
-Commit bf118a342f10dafe44b14451a1392c3254629a1f (NFSv4: include bitmap
-in nfsv4 get acl data) introduces the 'acl_scratch' page for the case
-where we may need to decode multi-page data. However it fails to take
-into account the fact that the variable may be NULL (for the case where
-we're not doing multi-page decode), and it also attaches it to the
-encoding xdr_stream rather than the decoding one.
-
-The immediate result is an Oops in nfs4_xdr_enc_getacl due to the
-call to page_address() with a NULL page pointer.
-
-Signed-off-by: Trond Myklebust <Trond.Myklebust at netapp.com>
-Cc: Andy Adamson <andros at netapp.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/nfs/nfs4proc.c | 8 ++++----
- fs/nfs/nfs4xdr.c | 5 ++++-
- include/linux/nfs_xdr.h | 2 +-
- 3 files changed, 9 insertions(+), 6 deletions(-)
-
-diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
-index 055d702..2ee398a 100644
---- a/fs/nfs/nfs4proc.c
-+++ b/fs/nfs/nfs4proc.c
-@@ -3568,8 +3568,8 @@ static ssize_t __nfs4_get_acl_uncached(struct inode *inode, void *buf, size_t bu
- }
- if (npages > 1) {
- /* for decoding across pages */
-- args.acl_scratch = alloc_page(GFP_KERNEL);
-- if (!args.acl_scratch)
-+ res.acl_scratch = alloc_page(GFP_KERNEL);
-+ if (!res.acl_scratch)
- goto out_free;
- }
- args.acl_len = npages * PAGE_SIZE;
-@@ -3605,8 +3605,8 @@ out_free:
- for (i = 0; i < npages; i++)
- if (pages[i])
- __free_page(pages[i]);
-- if (args.acl_scratch)
-- __free_page(args.acl_scratch);
-+ if (res.acl_scratch)
-+ __free_page(res.acl_scratch);
- return ret;
- }
-
-diff --git a/fs/nfs/nfs4xdr.c b/fs/nfs/nfs4xdr.c
-index dcaf693..68adab4 100644
---- a/fs/nfs/nfs4xdr.c
-+++ b/fs/nfs/nfs4xdr.c
-@@ -2522,7 +2522,6 @@ static void nfs4_xdr_enc_getacl(struct rpc_rqst *req, struct xdr_stream *xdr,
-
- xdr_inline_pages(&req->rq_rcv_buf, replen << 2,
- args->acl_pages, args->acl_pgbase, args->acl_len);
-- xdr_set_scratch_buffer(xdr, page_address(args->acl_scratch), PAGE_SIZE);
-
- encode_nops(&hdr);
- }
-@@ -6034,6 +6033,10 @@ nfs4_xdr_dec_getacl(struct rpc_rqst *rqstp, struct xdr_stream *xdr,
- struct compound_hdr hdr;
- int status;
-
-+ if (res->acl_scratch != NULL) {
-+ void *p = page_address(res->acl_scratch);
-+ xdr_set_scratch_buffer(xdr, p, PAGE_SIZE);
-+ }
- status = decode_compound_hdr(xdr, &hdr);
- if (status)
- goto out;
-diff --git a/include/linux/nfs_xdr.h b/include/linux/nfs_xdr.h
-index 6c898af..41116ab 100644
---- a/include/linux/nfs_xdr.h
-+++ b/include/linux/nfs_xdr.h
-@@ -602,7 +602,6 @@ struct nfs_getaclargs {
- size_t acl_len;
- unsigned int acl_pgbase;
- struct page ** acl_pages;
-- struct page * acl_scratch;
- struct nfs4_sequence_args seq_args;
- };
-
-@@ -612,6 +611,7 @@ struct nfs_getaclres {
- size_t acl_len;
- size_t acl_data_offset;
- int acl_flags;
-+ struct page * acl_scratch;
- struct nfs4_sequence_res seq_res;
- };
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0016-NFSv4-Ensure-we-throw-out-bad-delegation-stateids-on.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0016-NFSv4-Ensure-we-throw-out-bad-delegation-stateids-on.patch
deleted file mode 100644
index 6d887c5..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0016-NFSv4-Ensure-we-throw-out-bad-delegation-stateids-on.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From c6d894c8625abd1e4d3ff2912d31eb77bc456495 Mon Sep 17 00:00:00 2001
-From: Trond Myklebust <Trond.Myklebust at netapp.com>
-Date: Thu, 9 Feb 2012 15:31:36 -0500
-Subject: [PATCH 16/72] NFSv4: Ensure we throw out bad delegation stateids on
- NFS4ERR_BAD_STATEID
-
-commit b9f9a03150969e4bd9967c20bce67c4de769058f upstream.
-
-To ensure that we don't just reuse the bad delegation when we attempt to
-recover the nfs4_state that received the bad stateid error.
-
-Signed-off-by: Trond Myklebust <Trond.Myklebust at netapp.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/nfs/nfs4state.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/fs/nfs/nfs4state.c b/fs/nfs/nfs4state.c
-index 6a7107a..a58eed7 100644
---- a/fs/nfs/nfs4state.c
-+++ b/fs/nfs/nfs4state.c
-@@ -1071,6 +1071,8 @@ void nfs4_schedule_stateid_recovery(const struct nfs_server *server, struct nfs4
- {
- struct nfs_client *clp = server->nfs_client;
-
-+ if (test_and_clear_bit(NFS_DELEGATED_STATE, &state->flags))
-+ nfs_async_inode_return_delegation(state->inode, &state->stateid);
- nfs4_state_mark_reclaim_nograce(clp, state);
- nfs4_schedule_state_manager(clp);
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0017-NFSv4-fix-server_scope-memory-leak.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0017-NFSv4-fix-server_scope-memory-leak.patch
deleted file mode 100644
index de4635c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0017-NFSv4-fix-server_scope-memory-leak.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From 57e4348929a3bc5c2cc6a49a92941fe96f23aeec Mon Sep 17 00:00:00 2001
-From: Weston Andros Adamson <dros at netapp.com>
-Date: Thu, 16 Feb 2012 11:17:05 -0500
-Subject: [PATCH 17/72] NFSv4: fix server_scope memory leak
-
-commit abe9a6d57b4544ac208401f9c0a4262814db2be4 upstream.
-
-server_scope would never be freed if nfs4_check_cl_exchange_flags() returned
-non-zero
-
-Signed-off-by: Weston Andros Adamson <dros at netapp.com>
-Signed-off-by: Trond Myklebust <Trond.Myklebust at netapp.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/nfs/nfs4proc.c | 15 +++++++++------
- 1 file changed, 9 insertions(+), 6 deletions(-)
-
-diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
-index 2ee398a..e527030 100644
---- a/fs/nfs/nfs4proc.c
-+++ b/fs/nfs/nfs4proc.c
-@@ -4876,8 +4876,10 @@ int nfs4_proc_exchange_id(struct nfs_client *clp, struct rpc_cred *cred)
- clp->cl_rpcclient->cl_auth->au_flavor);
-
- res.server_scope = kzalloc(sizeof(struct server_scope), GFP_KERNEL);
-- if (unlikely(!res.server_scope))
-- return -ENOMEM;
-+ if (unlikely(!res.server_scope)) {
-+ status = -ENOMEM;
-+ goto out;
-+ }
-
- status = rpc_call_sync(clp->cl_rpcclient, &msg, RPC_TASK_TIMEOUT);
- if (!status)
-@@ -4894,12 +4896,13 @@ int nfs4_proc_exchange_id(struct nfs_client *clp, struct rpc_cred *cred)
- clp->server_scope = NULL;
- }
-
-- if (!clp->server_scope)
-+ if (!clp->server_scope) {
- clp->server_scope = res.server_scope;
-- else
-- kfree(res.server_scope);
-+ goto out;
-+ }
- }
--
-+ kfree(res.server_scope);
-+out:
- dprintk("<-- %s status= %d\n", __func__, status);
- return status;
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0018-ARM-7321-1-cache-v7-Disable-preemption-when-reading-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0018-ARM-7321-1-cache-v7-Disable-preemption-when-reading-.patch
deleted file mode 100644
index c9f56a5..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0018-ARM-7321-1-cache-v7-Disable-preemption-when-reading-.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From f086eff650732d3431582859050fdf8b50267163 Mon Sep 17 00:00:00 2001
-From: Stephen Boyd <sboyd at codeaurora.org>
-Date: Tue, 7 Feb 2012 19:42:07 +0100
-Subject: [PATCH 18/72] ARM: 7321/1: cache-v7: Disable preemption when reading
- CCSIDR
-
-commit b46c0f74657d1fe1c1b0c1452631cc38a9e6987f upstream.
-
-armv7's flush_cache_all() flushes caches via set/way. To
-determine the cache attributes (line size, number of sets,
-etc.) the assembly first writes the CSSELR register to select a
-cache level and then reads the CCSIDR register. The CSSELR register
-is banked per-cpu and is used to determine which cache level CCSIDR
-reads. If the task is migrated between when the CSSELR is written and
-the CCSIDR is read the CCSIDR value may be for an unexpected cache
-level (for example L1 instead of L2) and incorrect cache flushing
-could occur.
-
-Disable interrupts across the write and read so that the correct
-cache attributes are read and used for the cache flushing
-routine. We disable interrupts instead of disabling preemption
-because the critical section is only 3 instructions and we want
-to call v7_dcache_flush_all from __v7_setup which doesn't have a
-full kernel stack with a struct thread_info.
-
-This fixes a problem we see in scm_call() when flush_cache_all()
-is called from preemptible context and sometimes the L2 cache is
-not properly flushed out.
-
-Signed-off-by: Stephen Boyd <sboyd at codeaurora.org>
-Acked-by: Catalin Marinas <catalin.marinas at arm.com>
-Reviewed-by: Nicolas Pitre <nico at linaro.org>
-Signed-off-by: Russell King <rmk+kernel at arm.linux.org.uk>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/arm/mm/cache-v7.S | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-diff --git a/arch/arm/mm/cache-v7.S b/arch/arm/mm/cache-v7.S
-index 07c4bc8..7a24d39 100644
---- a/arch/arm/mm/cache-v7.S
-+++ b/arch/arm/mm/cache-v7.S
-@@ -54,9 +54,15 @@ loop1:
- and r1, r1, #7 @ mask of the bits for current cache only
- cmp r1, #2 @ see what cache we have at this level
- blt skip @ skip if no cache, or just i-cache
-+#ifdef CONFIG_PREEMPT
-+ save_and_disable_irqs r9 @ make cssr&csidr read atomic
-+#endif
- mcr p15, 2, r10, c0, c0, 0 @ select current cache level in cssr
- isb @ isb to sych the new cssr&csidr
- mrc p15, 1, r1, c0, c0, 0 @ read the new csidr
-+#ifdef CONFIG_PREEMPT
-+ restore_irqs_notrace r9
-+#endif
- and r2, r1, #7 @ extract the length of the cache lines
- add r2, r2, #4 @ add 4 (line length offset)
- ldr r4, =0x3ff
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0019-ARM-7325-1-fix-v7-boot-with-lockdep-enabled.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0019-ARM-7325-1-fix-v7-boot-with-lockdep-enabled.patch
deleted file mode 100644
index 4d53c09..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0019-ARM-7325-1-fix-v7-boot-with-lockdep-enabled.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From 7e7c42f798163e04171f7d0ea97cb9f759236191 Mon Sep 17 00:00:00 2001
-From: Rabin Vincent <rabin at rab.in>
-Date: Wed, 15 Feb 2012 16:01:42 +0100
-Subject: [PATCH 19/72] ARM: 7325/1: fix v7 boot with lockdep enabled
-
-commit 8e43a905dd574f54c5715d978318290ceafbe275 upstream.
-
-Bootup with lockdep enabled has been broken on v7 since b46c0f74657d
-("ARM: 7321/1: cache-v7: Disable preemption when reading CCSIDR").
-
-This is because v7_setup (which is called very early during boot) calls
-v7_flush_dcache_all, and the save_and_disable_irqs added by that patch
-ends up attempting to call into lockdep C code (trace_hardirqs_off())
-when we are in no position to execute it (no stack, MMU off).
-
-Fix this by using a notrace variant of save_and_disable_irqs. The code
-already uses the notrace variant of restore_irqs.
-
-Reviewed-by: Nicolas Pitre <nico at linaro.org>
-Acked-by: Stephen Boyd <sboyd at codeaurora.org>
-Cc: Catalin Marinas <catalin.marinas at arm.com>
-Signed-off-by: Rabin Vincent <rabin at rab.in>
-Signed-off-by: Russell King <rmk+kernel at arm.linux.org.uk>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/arm/include/asm/assembler.h | 5 +++++
- arch/arm/mm/cache-v7.S | 2 +-
- 2 files changed, 6 insertions(+), 1 deletion(-)
-
-diff --git a/arch/arm/include/asm/assembler.h b/arch/arm/include/asm/assembler.h
-index 29035e8..7bb8bf9 100644
---- a/arch/arm/include/asm/assembler.h
-+++ b/arch/arm/include/asm/assembler.h
-@@ -137,6 +137,11 @@
- disable_irq
- .endm
-
-+ .macro save_and_disable_irqs_notrace, oldcpsr
-+ mrs \oldcpsr, cpsr
-+ disable_irq_notrace
-+ .endm
-+
- /*
- * Restore interrupt state previously stored in a register. We don't
- * guarantee that this will preserve the flags.
-diff --git a/arch/arm/mm/cache-v7.S b/arch/arm/mm/cache-v7.S
-index 7a24d39..a655d3d 100644
---- a/arch/arm/mm/cache-v7.S
-+++ b/arch/arm/mm/cache-v7.S
-@@ -55,7 +55,7 @@ loop1:
- cmp r1, #2 @ see what cache we have at this level
- blt skip @ skip if no cache, or just i-cache
- #ifdef CONFIG_PREEMPT
-- save_and_disable_irqs r9 @ make cssr&csidr read atomic
-+ save_and_disable_irqs_notrace r9 @ make cssr&csidr read atomic
- #endif
- mcr p15, 2, r10, c0, c0, 0 @ select current cache level in cssr
- isb @ isb to sych the new cssr&csidr
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0020-3c59x-shorten-timer-period-for-slave-devices.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0020-3c59x-shorten-timer-period-for-slave-devices.patch
deleted file mode 100644
index 5c78e5e..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0020-3c59x-shorten-timer-period-for-slave-devices.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 5d1faee3629742c8526b2b27c5066a90e1b3f45c Mon Sep 17 00:00:00 2001
-From: Eric Dumazet <eric.dumazet at gmail.com>
-Date: Tue, 14 Feb 2012 10:27:09 +0000
-Subject: [PATCH 20/72] 3c59x: shorten timer period for slave devices
-
-[ Upstream commit 3013dc0cceb9baaf25d5624034eeaa259bf99004 ]
-
-Jean Delvare reported bonding on top of 3c59x adapters was not detecting
-network cable removal fast enough.
-
-3c59x indeed uses a 60 seconds timer to check link status if carrier is
-on, and 5 seconds if carrier is off.
-
-This patch reduces timer period to 5 seconds if device is a bonding
-slave.
-
-Reported-by: Jean Delvare <jdelvare at suse.de>
-Acked-by: Jean Delvare <jdelvare at suse.de>
-Acked-by: Steffen Klassert <steffen.klassert at secunet.com>
-Signed-off-by: Eric Dumazet <eric.dumazet at gmail.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/net/ethernet/3com/3c59x.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/net/ethernet/3com/3c59x.c b/drivers/net/ethernet/3com/3c59x.c
-index b42c06b..e0c5529 100644
---- a/drivers/net/ethernet/3com/3c59x.c
-+++ b/drivers/net/ethernet/3com/3c59x.c
-@@ -1842,7 +1842,7 @@ vortex_timer(unsigned long data)
- ok = 1;
- }
-
-- if (!netif_carrier_ok(dev))
-+ if (dev->flags & IFF_SLAVE || !netif_carrier_ok(dev))
- next_tick = 5*HZ;
-
- if (vp->medialock)
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0021-net-Don-t-proxy-arp-respond-if-iif-rt-dst.dev-if-pri.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0021-net-Don-t-proxy-arp-respond-if-iif-rt-dst.dev-if-pri.patch
deleted file mode 100644
index 7675b02..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0021-net-Don-t-proxy-arp-respond-if-iif-rt-dst.dev-if-pri.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 0a931ee27fd34630d00daa779ce846e9f2e26ec8 Mon Sep 17 00:00:00 2001
-From: Thomas Graf <tgraf at suug.ch>
-Date: Fri, 10 Feb 2012 04:07:11 +0000
-Subject: [PATCH 21/72] net: Don't proxy arp respond if iif == rt->dst.dev if
- private VLAN is disabled
-
-[ Upstream commit 70620c46ac2b45c24b0f22002fdf5ddd1f7daf81 ]
-
-Commit 653241 (net: RFC3069, private VLAN proxy arp support) changed
-the behavior of arp proxy to send arp replies back out on the interface
-the request came in even if the private VLAN feature is disabled.
-
-Previously we checked rt->dst.dev != skb->dev for in scenarios, when
-proxy arp is enabled on for the netdevice and also when individual proxy
-neighbour entries have been added.
-
-This patch adds the check back for the pneigh_lookup() scenario.
-
-Signed-off-by: Thomas Graf <tgraf at suug.ch>
-Acked-by: Jesper Dangaard Brouer <hawk at comx.dk>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- net/ipv4/arp.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/net/ipv4/arp.c b/net/ipv4/arp.c
-index 96a164a..59a7041 100644
---- a/net/ipv4/arp.c
-+++ b/net/ipv4/arp.c
-@@ -867,7 +867,8 @@ static int arp_process(struct sk_buff *skb)
- if (addr_type == RTN_UNICAST &&
- (arp_fwd_proxy(in_dev, dev, rt) ||
- arp_fwd_pvlan(in_dev, dev, rt, sip, tip) ||
-- pneigh_lookup(&arp_tbl, net, &tip, dev, 0))) {
-+ (rt->dst.dev != dev &&
-+ pneigh_lookup(&arp_tbl, net, &tip, dev, 0)))) {
- n = neigh_event_ns(&arp_tbl, sha, &sip, dev);
- if (n)
- neigh_release(n);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0022-netpoll-netpoll_poll_dev-should-access-dev-flags.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0022-netpoll-netpoll_poll_dev-should-access-dev-flags.patch
deleted file mode 100644
index 41e613d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0022-netpoll-netpoll_poll_dev-should-access-dev-flags.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 005c48bb39dcfbaf47ce8f433af59c8b47976fd7 Mon Sep 17 00:00:00 2001
-From: Eric Dumazet <eric.dumazet at gmail.com>
-Date: Tue, 14 Feb 2012 10:11:59 +0000
-Subject: [PATCH 22/72] netpoll: netpoll_poll_dev() should access dev->flags
-
-[ Upstream commit 58e05f357a039a94aa36475f8c110256f693a239 ]
-
-commit 5a698af53f (bond: service netpoll arp queue on master device)
-tested IFF_SLAVE flag against dev->priv_flags instead of dev->flags
-
-Signed-off-by: Eric Dumazet <eric.dumazet at gmail.com>
-Cc: WANG Cong <amwang at redhat.com>
-Acked-by: Neil Horman <nhorman at tuxdriver.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- net/core/netpoll.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/net/core/netpoll.c b/net/core/netpoll.c
-index 5d4d896..ab0633f 100644
---- a/net/core/netpoll.c
-+++ b/net/core/netpoll.c
-@@ -194,7 +194,7 @@ static void netpoll_poll_dev(struct net_device *dev)
-
- poll_napi(dev);
-
-- if (dev->priv_flags & IFF_SLAVE) {
-+ if (dev->flags & IFF_SLAVE) {
- if (dev->npinfo) {
- struct net_device *bond_dev = dev->master;
- struct sk_buff *skb;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0023-net_sched-Bug-in-netem-reordering.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0023-net_sched-Bug-in-netem-reordering.patch
deleted file mode 100644
index 85666ce..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0023-net_sched-Bug-in-netem-reordering.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 1f28da1577ca5490acce9f710ec9bc1c73e74ce9 Mon Sep 17 00:00:00 2001
-From: Hagen Paul Pfeifer <hagen at jauu.net>
-Date: Wed, 4 Jan 2012 17:35:26 +0000
-Subject: [PATCH 23/72] net_sched: Bug in netem reordering
-
-[ Upstream commit eb10192447370f19a215a8c2749332afa1199d46 ]
-
-Not now, but it looks you are correct. q->qdisc is NULL until another
-additional qdisc is attached (beside tfifo). See 50612537e9ab2969312.
-The following patch should work.
-
-From: Hagen Paul Pfeifer <hagen at jauu.net>
-
-netem: catch NULL pointer by updating the real qdisc statistic
-
-Reported-by: Vijay Subramanian <subramanian.vijay at gmail.com>
-Signed-off-by: Hagen Paul Pfeifer <hagen at jauu.net>
-Acked-by: Eric Dumazet <eric.dumazet at gmail.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- net/sched/sch_netem.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/net/sched/sch_netem.c b/net/sched/sch_netem.c
-index a4ab207..fd34012 100644
---- a/net/sched/sch_netem.c
-+++ b/net/sched/sch_netem.c
-@@ -383,8 +383,8 @@ static int netem_enqueue(struct sk_buff *skb, struct Qdisc *sch)
- q->counter = 0;
-
- __skb_queue_head(&q->qdisc->q, skb);
-- q->qdisc->qstats.backlog += qdisc_pkt_len(skb);
-- q->qdisc->qstats.requeues++;
-+ sch->qstats.backlog += qdisc_pkt_len(skb);
-+ sch->qstats.requeues++;
- ret = NET_XMIT_SUCCESS;
- }
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0024-veth-Enforce-minimum-size-of-VETH_INFO_PEER.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0024-veth-Enforce-minimum-size-of-VETH_INFO_PEER.patch
deleted file mode 100644
index 25f4252..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0024-veth-Enforce-minimum-size-of-VETH_INFO_PEER.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 29c5e80570c2f6a8715e9a0ecb45346433c1b364 Mon Sep 17 00:00:00 2001
-From: Hagen Paul Pfeifer <hagen at jauu.net>
-Date: Wed, 15 Feb 2012 04:09:46 +0000
-Subject: [PATCH 24/72] veth: Enforce minimum size of VETH_INFO_PEER
-
-[ Upstream commit 237114384ab22c174ec4641e809f8e6cbcfce774 ]
-
-VETH_INFO_PEER carries struct ifinfomsg plus optional IFLA
-attributes. A minimal size of sizeof(struct ifinfomsg) must be
-enforced or we may risk accessing that struct beyond the limits
-of the netlink message.
-
-Signed-off-by: Thomas Graf <tgraf at suug.ch>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/net/veth.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/net/veth.c b/drivers/net/veth.c
-index ef883e9..b907398 100644
---- a/drivers/net/veth.c
-+++ b/drivers/net/veth.c
-@@ -423,7 +423,9 @@ static void veth_dellink(struct net_device *dev, struct list_head *head)
- unregister_netdevice_queue(peer, head);
- }
-
--static const struct nla_policy veth_policy[VETH_INFO_MAX + 1];
-+static const struct nla_policy veth_policy[VETH_INFO_MAX + 1] = {
-+ [VETH_INFO_PEER] = { .len = sizeof(struct ifinfomsg) },
-+};
-
- static struct rtnl_link_ops veth_link_ops = {
- .kind = DRV_NAME,
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0025-via-velocity-S3-resume-fix.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0025-via-velocity-S3-resume-fix.patch
deleted file mode 100644
index bda0299..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0025-via-velocity-S3-resume-fix.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From aed7404a082cb23adaabc26efce659523e03ca42 Mon Sep 17 00:00:00 2001
-From: David Lv <DavidLv at viatech.com.cn>
-Date: Sat, 4 Feb 2012 23:22:26 +0000
-Subject: [PATCH 25/72] via-velocity: S3 resume fix.
-
-[ Upstream commit b530b1930bbd9d005345133f0ff0c556d2a52b19 ]
-
-Initially diagnosed on Ubuntu 11.04 with kernel 2.6.38.
-
-velocity_close is not called during a suspend / resume cycle in this
-driver and it has no business playing directly with power states.
-
-Signed-off-by: David Lv <DavidLv at viatech.com.cn>
-Acked-by: Francois Romieu <romieu at fr.zoreil.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/net/ethernet/via/via-velocity.c | 3 ---
- 1 file changed, 3 deletions(-)
-
-diff --git a/drivers/net/ethernet/via/via-velocity.c b/drivers/net/ethernet/via/via-velocity.c
-index 4535d7c..e015a57 100644
---- a/drivers/net/ethernet/via/via-velocity.c
-+++ b/drivers/net/ethernet/via/via-velocity.c
-@@ -2489,9 +2489,6 @@ static int velocity_close(struct net_device *dev)
- if (dev->irq != 0)
- free_irq(dev->irq, dev);
-
-- /* Power down the chip */
-- pci_set_power_state(vptr->pdev, PCI_D3hot);
--
- velocity_free_rings(vptr);
-
- vptr->flags &= (~VELOCITY_FLAGS_OPENED);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0026-ipv4-reset-flowi-parameters-on-route-connect.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0026-ipv4-reset-flowi-parameters-on-route-connect.patch
deleted file mode 100644
index cdb544b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0026-ipv4-reset-flowi-parameters-on-route-connect.patch
+++ /dev/null
@@ -1,90 +0,0 @@
-From 1540d4bf4ba46cb59904011104f2bb4c35164433 Mon Sep 17 00:00:00 2001
-From: Julian Anastasov <ja at ssi.bg>
-Date: Sat, 4 Feb 2012 13:04:46 +0000
-Subject: [PATCH 26/72] ipv4: reset flowi parameters on route connect
-
-[ Upstream commit e6b45241c57a83197e5de9166b3b0d32ac562609 ]
-
-Eric Dumazet found that commit 813b3b5db83
-(ipv4: Use caller's on-stack flowi as-is in output
-route lookups.) that comes in 3.0 added a regression.
-The problem appears to be that resulting flowi4_oif is
-used incorrectly as input parameter to some routing lookups.
-The result is that when connecting to local port without
-listener if the IP address that is used is not on a loopback
-interface we incorrectly assign RTN_UNICAST to the output
-route because no route is matched by oif=lo. The RST packet
-can not be sent immediately by tcp_v4_send_reset because
-it expects RTN_LOCAL.
-
- So, change ip_route_connect and ip_route_newports to
-update the flowi4 fields that are input parameters because
-we do not want unnecessary binding to oif.
-
- To make it clear what are the input parameters that
-can be modified during lookup and to show which fields of
-floiw4 are reused add a new function to update the flowi4
-structure: flowi4_update_output.
-
-Thanks to Yurij M. Plotnikov for providing a bug report including a
-program to reproduce the problem.
-
-Thanks to Eric Dumazet for tracking the problem down to
-tcp_v4_send_reset and providing initial fix.
-
-Reported-by: Yurij M. Plotnikov <Yurij.Plotnikov at oktetlabs.ru>
-Signed-off-by: Julian Anastasov <ja at ssi.bg>
-Acked-by: Eric Dumazet <eric.dumazet at gmail.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- include/net/flow.h | 10 ++++++++++
- include/net/route.h | 4 ++++
- 2 files changed, 14 insertions(+)
-
-diff --git a/include/net/flow.h b/include/net/flow.h
-index 57f15a7..2a7eefd 100644
---- a/include/net/flow.h
-+++ b/include/net/flow.h
-@@ -90,6 +90,16 @@ static inline void flowi4_init_output(struct flowi4 *fl4, int oif,
- fl4->fl4_dport = dport;
- fl4->fl4_sport = sport;
- }
-+
-+/* Reset some input parameters after previous lookup */
-+static inline void flowi4_update_output(struct flowi4 *fl4, int oif, __u8 tos,
-+ __be32 daddr, __be32 saddr)
-+{
-+ fl4->flowi4_oif = oif;
-+ fl4->flowi4_tos = tos;
-+ fl4->daddr = daddr;
-+ fl4->saddr = saddr;
-+}
-
-
- struct flowi6 {
-diff --git a/include/net/route.h b/include/net/route.h
-index 91855d1..b1c0d5b 100644
---- a/include/net/route.h
-+++ b/include/net/route.h
-@@ -270,6 +270,7 @@ static inline struct rtable *ip_route_connect(struct flowi4 *fl4,
- if (IS_ERR(rt))
- return rt;
- ip_rt_put(rt);
-+ flowi4_update_output(fl4, oif, tos, fl4->daddr, fl4->saddr);
- }
- security_sk_classify_flow(sk, flowi4_to_flowi(fl4));
- return ip_route_output_flow(net, fl4, sk);
-@@ -284,6 +285,9 @@ static inline struct rtable *ip_route_newports(struct flowi4 *fl4, struct rtable
- fl4->fl4_dport = dport;
- fl4->fl4_sport = sport;
- ip_rt_put(rt);
-+ flowi4_update_output(fl4, sk->sk_bound_dev_if,
-+ RT_CONN_FLAGS(sk), fl4->daddr,
-+ fl4->saddr);
- security_sk_classify_flow(sk, flowi4_to_flowi(fl4));
- return ip_route_output_flow(sock_net(sk), fl4, sk);
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0027-tcp_v4_send_reset-binding-oif-to-iif-in-no-sock-case.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0027-tcp_v4_send_reset-binding-oif-to-iif-in-no-sock-case.patch
deleted file mode 100644
index ea6e69a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0027-tcp_v4_send_reset-binding-oif-to-iif-in-no-sock-case.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 6843bf164d1de749e2998cfc5c2291dc86523e77 Mon Sep 17 00:00:00 2001
-From: Shawn Lu <shawn.lu at ericsson.com>
-Date: Sat, 4 Feb 2012 12:38:09 +0000
-Subject: [PATCH 27/72] tcp_v4_send_reset: binding oif to iif in no sock case
-
-[ Upstream commit e2446eaab5585555a38ea0df4e01ff313dbb4ac9 ]
-
-Binding RST packet outgoing interface to incoming interface
-for tcp v4 when there is no socket associate with it.
-when sk is not NULL, using sk->sk_bound_dev_if instead.
-(suggested by Eric Dumazet).
-
-This has few benefits:
-1. tcp_v6_send_reset already did that.
-2. This helps tcp connect with SO_BINDTODEVICE set. When
-connection is lost, we still able to sending out RST using
-same interface.
-3. we are sending reply, it is most likely to be succeed
-if iif is used
-
-Signed-off-by: Shawn Lu <shawn.lu at ericsson.com>
-Acked-by: Eric Dumazet <eric.dumazet at gmail.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- net/ipv4/tcp_ipv4.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
-index c89e354..eb90aa8 100644
---- a/net/ipv4/tcp_ipv4.c
-+++ b/net/ipv4/tcp_ipv4.c
-@@ -650,6 +650,11 @@ static void tcp_v4_send_reset(struct sock *sk, struct sk_buff *skb)
- arg.iov[0].iov_len, IPPROTO_TCP, 0);
- arg.csumoffset = offsetof(struct tcphdr, check) / 2;
- arg.flags = (sk && inet_sk(sk)->transparent) ? IP_REPLY_ARG_NOSRCCHECK : 0;
-+ /* When socket is gone, all binding information is lost.
-+ * routing might fail in this case. using iif for oif to
-+ * make sure we can deliver it
-+ */
-+ arg.bound_dev_if = sk ? sk->sk_bound_dev_if : inet_iif(skb);
-
- net = dev_net(skb_dst(skb)->dev);
- arg.tos = ip_hdr(skb)->tos;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0028-ipv4-Fix-wrong-order-of-ip_rt_get_source-and-update-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0028-ipv4-Fix-wrong-order-of-ip_rt_get_source-and-update-.patch
deleted file mode 100644
index 2a75ee2..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0028-ipv4-Fix-wrong-order-of-ip_rt_get_source-and-update-.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 3ffbc3ee4b041567cb24e98f9eb7590baaa1b39f Mon Sep 17 00:00:00 2001
-From: Li Wei <lw at cn.fujitsu.com>
-Date: Thu, 9 Feb 2012 21:15:25 +0000
-Subject: [PATCH 28/72] ipv4: Fix wrong order of ip_rt_get_source() and update
- iph->daddr.
-
-[ Upstream commit 5dc7883f2a7c25f8df40d7479687153558cd531b ]
-
-This patch fix a bug which introduced by commit ac8a4810 (ipv4: Save
-nexthop address of LSRR/SSRR option to IPCB.).In that patch, we saved
-the nexthop of SRR in ip_option->nexthop and update iph->daddr until
-we get to ip_forward_options(), but we need to update it before
-ip_rt_get_source(), otherwise we may get a wrong src.
-
-Signed-off-by: Li Wei <lw at cn.fujitsu.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- net/ipv4/ip_options.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/net/ipv4/ip_options.c b/net/ipv4/ip_options.c
-index 1e60f76..42dd1a9 100644
---- a/net/ipv4/ip_options.c
-+++ b/net/ipv4/ip_options.c
-@@ -573,8 +573,8 @@ void ip_forward_options(struct sk_buff *skb)
- }
- if (srrptr + 3 <= srrspace) {
- opt->is_changed = 1;
-- ip_rt_get_source(&optptr[srrptr-1], skb, rt);
- ip_hdr(skb)->daddr = opt->nexthop;
-+ ip_rt_get_source(&optptr[srrptr-1], skb, rt);
- optptr[2] = srrptr+4;
- } else if (net_ratelimit())
- printk(KERN_CRIT "ip_forward(): Argh! Destination lost!\n");
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0029-net-Make-qdisc_skb_cb-upper-size-bound-explicit.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0029-net-Make-qdisc_skb_cb-upper-size-bound-explicit.patch
deleted file mode 100644
index 9e36a0b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0029-net-Make-qdisc_skb_cb-upper-size-bound-explicit.patch
+++ /dev/null
@@ -1,90 +0,0 @@
-From b17cba61819b25694b3179e250aa442ecb191d83 Mon Sep 17 00:00:00 2001
-From: "David S. Miller" <davem at davemloft.net>
-Date: Mon, 6 Feb 2012 15:14:37 -0500
-Subject: [PATCH 29/72] net: Make qdisc_skb_cb upper size bound explicit.
-
-[ Upstream commit 16bda13d90c8d5da243e2cfa1677e62ecce26860 ]
-
-Just like skb->cb[], so that qdisc_skb_cb can be encapsulated inside
-of other data structures.
-
-This is intended to be used by IPoIB so that it can remember
-addressing information stored at hard_header_ops->create() time that
-it can fetch when the packet gets to the transmit routine.
-
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- include/net/sch_generic.h | 9 ++++++++-
- net/sched/sch_choke.c | 3 +--
- net/sched/sch_netem.c | 3 +--
- net/sched/sch_sfb.c | 3 +--
- 4 files changed, 11 insertions(+), 7 deletions(-)
-
-diff --git a/include/net/sch_generic.h b/include/net/sch_generic.h
-index f6bb08b..55ce96b 100644
---- a/include/net/sch_generic.h
-+++ b/include/net/sch_generic.h
-@@ -220,9 +220,16 @@ struct tcf_proto {
-
- struct qdisc_skb_cb {
- unsigned int pkt_len;
-- long data[];
-+ unsigned char data[24];
- };
-
-+static inline void qdisc_cb_private_validate(const struct sk_buff *skb, int sz)
-+{
-+ struct qdisc_skb_cb *qcb;
-+ BUILD_BUG_ON(sizeof(skb->cb) < sizeof(unsigned int) + sz);
-+ BUILD_BUG_ON(sizeof(qcb->data) < sz);
-+}
-+
- static inline int qdisc_qlen(const struct Qdisc *q)
- {
- return q->q.qlen;
-diff --git a/net/sched/sch_choke.c b/net/sched/sch_choke.c
-index 3422b25..081ffb9 100644
---- a/net/sched/sch_choke.c
-+++ b/net/sched/sch_choke.c
-@@ -225,8 +225,7 @@ struct choke_skb_cb {
-
- static inline struct choke_skb_cb *choke_skb_cb(const struct sk_buff *skb)
- {
-- BUILD_BUG_ON(sizeof(skb->cb) <
-- sizeof(struct qdisc_skb_cb) + sizeof(struct choke_skb_cb));
-+ qdisc_cb_private_validate(skb, sizeof(struct choke_skb_cb));
- return (struct choke_skb_cb *)qdisc_skb_cb(skb)->data;
- }
-
-diff --git a/net/sched/sch_netem.c b/net/sched/sch_netem.c
-index fd34012..7801b15 100644
---- a/net/sched/sch_netem.c
-+++ b/net/sched/sch_netem.c
-@@ -118,8 +118,7 @@ struct netem_skb_cb {
-
- static inline struct netem_skb_cb *netem_skb_cb(struct sk_buff *skb)
- {
-- BUILD_BUG_ON(sizeof(skb->cb) <
-- sizeof(struct qdisc_skb_cb) + sizeof(struct netem_skb_cb));
-+ qdisc_cb_private_validate(skb, sizeof(struct netem_skb_cb));
- return (struct netem_skb_cb *)qdisc_skb_cb(skb)->data;
- }
-
-diff --git a/net/sched/sch_sfb.c b/net/sched/sch_sfb.c
-index e83c272..17859ea 100644
---- a/net/sched/sch_sfb.c
-+++ b/net/sched/sch_sfb.c
-@@ -93,8 +93,7 @@ struct sfb_skb_cb {
-
- static inline struct sfb_skb_cb *sfb_skb_cb(const struct sk_buff *skb)
- {
-- BUILD_BUG_ON(sizeof(skb->cb) <
-- sizeof(struct qdisc_skb_cb) + sizeof(struct sfb_skb_cb));
-+ qdisc_cb_private_validate(skb, sizeof(struct sfb_skb_cb));
- return (struct sfb_skb_cb *)qdisc_skb_cb(skb)->data;
- }
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0030-IPoIB-Stop-lying-about-hard_header_len-and-use-skb-c.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0030-IPoIB-Stop-lying-about-hard_header_len-and-use-skb-c.patch
deleted file mode 100644
index 813fe53..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0030-IPoIB-Stop-lying-about-hard_header_len-and-use-skb-c.patch
+++ /dev/null
@@ -1,213 +0,0 @@
-From a37d6fc330e71aba8579662b09722796306cd846 Mon Sep 17 00:00:00 2001
-From: Roland Dreier <roland at purestorage.com>
-Date: Tue, 7 Feb 2012 14:51:21 +0000
-Subject: [PATCH 30/72] IPoIB: Stop lying about hard_header_len and use
- skb->cb to stash LL addresses
-
-[ Upstream commit 936d7de3d736e0737542641269436f4b5968e9ef ]
-
-Commit a0417fa3a18a ("net: Make qdisc_skb_cb upper size bound
-explicit.") made it possible for a netdev driver to use skb->cb
-between its header_ops.create method and its .ndo_start_xmit
-method. Use this in ipoib_hard_header() to stash away the LL address
-(GID + QPN), instead of the "ipoib_pseudoheader" hack. This allows
-IPoIB to stop lying about its hard_header_len, which will let us fix
-the L2 check for GRO.
-
-Signed-off-by: Roland Dreier <roland at purestorage.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/infiniband/ulp/ipoib/ipoib.h | 6 ++-
- drivers/infiniband/ulp/ipoib/ipoib_main.c | 55 ++++++++----------------
- drivers/infiniband/ulp/ipoib/ipoib_multicast.c | 9 +---
- 3 files changed, 24 insertions(+), 46 deletions(-)
-
-diff --git a/drivers/infiniband/ulp/ipoib/ipoib.h b/drivers/infiniband/ulp/ipoib/ipoib.h
-index b3cc1e0..86df632 100644
---- a/drivers/infiniband/ulp/ipoib/ipoib.h
-+++ b/drivers/infiniband/ulp/ipoib/ipoib.h
-@@ -44,6 +44,7 @@
- #include <linux/mutex.h>
-
- #include <net/neighbour.h>
-+#include <net/sch_generic.h>
-
- #include <linux/atomic.h>
-
-@@ -117,8 +118,9 @@ struct ipoib_header {
- u16 reserved;
- };
-
--struct ipoib_pseudoheader {
-- u8 hwaddr[INFINIBAND_ALEN];
-+struct ipoib_cb {
-+ struct qdisc_skb_cb qdisc_cb;
-+ u8 hwaddr[INFINIBAND_ALEN];
- };
-
- /* Used for all multicast joins (broadcast, IPv4 mcast and IPv6 mcast) */
-diff --git a/drivers/infiniband/ulp/ipoib/ipoib_main.c b/drivers/infiniband/ulp/ipoib/ipoib_main.c
-index 83695b4..fe2fdbb 100644
---- a/drivers/infiniband/ulp/ipoib/ipoib_main.c
-+++ b/drivers/infiniband/ulp/ipoib/ipoib_main.c
-@@ -658,7 +658,7 @@ static void ipoib_path_lookup(struct sk_buff *skb, struct net_device *dev)
- }
-
- static void unicast_arp_send(struct sk_buff *skb, struct net_device *dev,
-- struct ipoib_pseudoheader *phdr)
-+ struct ipoib_cb *cb)
- {
- struct ipoib_dev_priv *priv = netdev_priv(dev);
- struct ipoib_path *path;
-@@ -666,17 +666,15 @@ static void unicast_arp_send(struct sk_buff *skb, struct net_device *dev,
-
- spin_lock_irqsave(&priv->lock, flags);
-
-- path = __path_find(dev, phdr->hwaddr + 4);
-+ path = __path_find(dev, cb->hwaddr + 4);
- if (!path || !path->valid) {
- int new_path = 0;
-
- if (!path) {
-- path = path_rec_create(dev, phdr->hwaddr + 4);
-+ path = path_rec_create(dev, cb->hwaddr + 4);
- new_path = 1;
- }
- if (path) {
-- /* put pseudoheader back on for next time */
-- skb_push(skb, sizeof *phdr);
- __skb_queue_tail(&path->queue, skb);
-
- if (!path->query && path_rec_start(dev, path)) {
-@@ -700,12 +698,10 @@ static void unicast_arp_send(struct sk_buff *skb, struct net_device *dev,
- be16_to_cpu(path->pathrec.dlid));
-
- spin_unlock_irqrestore(&priv->lock, flags);
-- ipoib_send(dev, skb, path->ah, IPOIB_QPN(phdr->hwaddr));
-+ ipoib_send(dev, skb, path->ah, IPOIB_QPN(cb->hwaddr));
- return;
- } else if ((path->query || !path_rec_start(dev, path)) &&
- skb_queue_len(&path->queue) < IPOIB_MAX_PATH_REC_QUEUE) {
-- /* put pseudoheader back on for next time */
-- skb_push(skb, sizeof *phdr);
- __skb_queue_tail(&path->queue, skb);
- } else {
- ++dev->stats.tx_dropped;
-@@ -774,16 +770,14 @@ static int ipoib_start_xmit(struct sk_buff *skb, struct net_device *dev)
- dev_kfree_skb_any(skb);
- }
- } else {
-- struct ipoib_pseudoheader *phdr =
-- (struct ipoib_pseudoheader *) skb->data;
-- skb_pull(skb, sizeof *phdr);
-+ struct ipoib_cb *cb = (struct ipoib_cb *) skb->cb;
-
-- if (phdr->hwaddr[4] == 0xff) {
-+ if (cb->hwaddr[4] == 0xff) {
- /* Add in the P_Key for multicast*/
-- phdr->hwaddr[8] = (priv->pkey >> 8) & 0xff;
-- phdr->hwaddr[9] = priv->pkey & 0xff;
-+ cb->hwaddr[8] = (priv->pkey >> 8) & 0xff;
-+ cb->hwaddr[9] = priv->pkey & 0xff;
-
-- ipoib_mcast_send(dev, phdr->hwaddr + 4, skb);
-+ ipoib_mcast_send(dev, cb->hwaddr + 4, skb);
- } else {
- /* unicast GID -- should be ARP or RARP reply */
-
-@@ -792,14 +786,14 @@ static int ipoib_start_xmit(struct sk_buff *skb, struct net_device *dev)
- ipoib_warn(priv, "Unicast, no %s: type %04x, QPN %06x %pI6\n",
- skb_dst(skb) ? "neigh" : "dst",
- be16_to_cpup((__be16 *) skb->data),
-- IPOIB_QPN(phdr->hwaddr),
-- phdr->hwaddr + 4);
-+ IPOIB_QPN(cb->hwaddr),
-+ cb->hwaddr + 4);
- dev_kfree_skb_any(skb);
- ++dev->stats.tx_dropped;
- goto unlock;
- }
-
-- unicast_arp_send(skb, dev, phdr);
-+ unicast_arp_send(skb, dev, cb);
- }
- }
- unlock:
-@@ -825,8 +819,6 @@ static int ipoib_hard_header(struct sk_buff *skb,
- const void *daddr, const void *saddr, unsigned len)
- {
- struct ipoib_header *header;
-- struct dst_entry *dst;
-- struct neighbour *n;
-
- header = (struct ipoib_header *) skb_push(skb, sizeof *header);
-
-@@ -834,18 +826,13 @@ static int ipoib_hard_header(struct sk_buff *skb,
- header->reserved = 0;
-
- /*
-- * If we don't have a neighbour structure, stuff the
-- * destination address onto the front of the skb so we can
-- * figure out where to send the packet later.
-+ * If we don't have a dst_entry structure, stuff the
-+ * destination address into skb->cb so we can figure out where
-+ * to send the packet later.
- */
-- dst = skb_dst(skb);
-- n = NULL;
-- if (dst)
-- n = dst_get_neighbour_raw(dst);
-- if ((!dst || !n) && daddr) {
-- struct ipoib_pseudoheader *phdr =
-- (struct ipoib_pseudoheader *) skb_push(skb, sizeof *phdr);
-- memcpy(phdr->hwaddr, daddr, INFINIBAND_ALEN);
-+ if (!skb_dst(skb)) {
-+ struct ipoib_cb *cb = (struct ipoib_cb *) skb->cb;
-+ memcpy(cb->hwaddr, daddr, INFINIBAND_ALEN);
- }
-
- return 0;
-@@ -1021,11 +1008,7 @@ static void ipoib_setup(struct net_device *dev)
-
- dev->flags |= IFF_BROADCAST | IFF_MULTICAST;
-
-- /*
-- * We add in INFINIBAND_ALEN to allow for the destination
-- * address "pseudoheader" for skbs without neighbour struct.
-- */
-- dev->hard_header_len = IPOIB_ENCAP_LEN + INFINIBAND_ALEN;
-+ dev->hard_header_len = IPOIB_ENCAP_LEN;
- dev->addr_len = INFINIBAND_ALEN;
- dev->type = ARPHRD_INFINIBAND;
- dev->tx_queue_len = ipoib_sendq_size * 2;
-diff --git a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
-index 873bff9..e5069b4 100644
---- a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
-+++ b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
-@@ -262,21 +262,14 @@ static int ipoib_mcast_join_finish(struct ipoib_mcast *mcast,
- netif_tx_lock_bh(dev);
- while (!skb_queue_empty(&mcast->pkt_queue)) {
- struct sk_buff *skb = skb_dequeue(&mcast->pkt_queue);
-- struct dst_entry *dst = skb_dst(skb);
-- struct neighbour *n = NULL;
-
- netif_tx_unlock_bh(dev);
-
- skb->dev = dev;
-- if (dst)
-- n = dst_get_neighbour_raw(dst);
-- if (!dst || !n) {
-- /* put pseudoheader back on for next time */
-- skb_push(skb, sizeof (struct ipoib_pseudoheader));
-- }
-
- if (dev_queue_xmit(skb))
- ipoib_warn(priv, "dev_queue_xmit failed to requeue packet\n");
-+
- netif_tx_lock_bh(dev);
- }
- netif_tx_unlock_bh(dev);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0031-gro-more-generic-L2-header-check.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0031-gro-more-generic-L2-header-check.patch
deleted file mode 100644
index 0b65969..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0031-gro-more-generic-L2-header-check.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From 53118dfc961c0cf24e72b59d3cfccd128506740f Mon Sep 17 00:00:00 2001
-From: Eric Dumazet <eric.dumazet at gmail.com>
-Date: Wed, 8 Feb 2012 08:51:50 +0000
-Subject: [PATCH 31/72] gro: more generic L2 header check
-
-[ Upstream commit 5ca3b72c5da47d95b83857b768def6172fbc080a ]
-
-Shlomo Pongratz reported GRO L2 header check was suited for Ethernet
-only, and failed on IB/ipoib traffic.
-
-He provided a patch faking a zeroed header to let GRO aggregates frames.
-
-Roland Dreier, Herbert Xu, and others suggested we change GRO L2 header
-check to be more generic, ie not assuming L2 header is 14 bytes, but
-taking into account hard_header_len.
-
-__napi_gro_receive() has special handling for the common case (Ethernet)
-to avoid a memcmp() call and use an inline optimized function instead.
-
-Signed-off-by: Eric Dumazet <eric.dumazet at gmail.com>
-Reported-by: Shlomo Pongratz <shlomop at mellanox.com>
-Cc: Roland Dreier <roland at kernel.org>
-Cc: Or Gerlitz <ogerlitz at mellanox.com>
-Cc: Herbert Xu <herbert at gondor.apana.org.au>
-Tested-by: Sean Hefty <sean.hefty at intel.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- net/core/dev.c | 10 ++++++++--
- 1 file changed, 8 insertions(+), 2 deletions(-)
-
-diff --git a/net/core/dev.c b/net/core/dev.c
-index 5a13edf..c56cacf 100644
---- a/net/core/dev.c
-+++ b/net/core/dev.c
-@@ -3565,14 +3565,20 @@ static inline gro_result_t
- __napi_gro_receive(struct napi_struct *napi, struct sk_buff *skb)
- {
- struct sk_buff *p;
-+ unsigned int maclen = skb->dev->hard_header_len;
-
- for (p = napi->gro_list; p; p = p->next) {
- unsigned long diffs;
-
- diffs = (unsigned long)p->dev ^ (unsigned long)skb->dev;
- diffs |= p->vlan_tci ^ skb->vlan_tci;
-- diffs |= compare_ether_header(skb_mac_header(p),
-- skb_gro_mac_header(skb));
-+ if (maclen == ETH_HLEN)
-+ diffs |= compare_ether_header(skb_mac_header(p),
-+ skb_gro_mac_header(skb));
-+ else if (!diffs)
-+ diffs = memcmp(skb_mac_header(p),
-+ skb_gro_mac_header(skb),
-+ maclen);
- NAPI_GRO_CB(p)->same_flow = !diffs;
- NAPI_GRO_CB(p)->flush = 0;
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0032-tcp-allow-tcp_sacktag_one-to-tag-ranges-not-aligned-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0032-tcp-allow-tcp_sacktag_one-to-tag-ranges-not-aligned-.patch
deleted file mode 100644
index 943bde4..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0032-tcp-allow-tcp_sacktag_one-to-tag-ranges-not-aligned-.patch
+++ /dev/null
@@ -1,119 +0,0 @@
-From 4387753e32179f5e4ef62572b7f06f77d8c37330 Mon Sep 17 00:00:00 2001
-From: Neal Cardwell <ncardwell at google.com>
-Date: Sun, 12 Feb 2012 18:37:09 +0000
-Subject: [PATCH 32/72] tcp: allow tcp_sacktag_one() to tag ranges not aligned
- with skbs
-
-[ Upstream commit cc9a672ee522d4805495b98680f4a3db5d0a0af9 ]
-
-This commit allows callers of tcp_sacktag_one() to pass in sequence
-ranges that do not align with skb boundaries, as tcp_shifted_skb()
-needs to do in an upcoming fix in this patch series.
-
-In fact, now tcp_sacktag_one() does not need to depend on an input skb
-at all, which makes its semantics and dependencies more clear.
-
-Signed-off-by: Neal Cardwell <ncardwell at google.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- net/ipv4/tcp_input.c | 36 ++++++++++++++++++++++--------------
- 1 file changed, 22 insertions(+), 14 deletions(-)
-
-diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
-index 52b5c2d..41440f1 100644
---- a/net/ipv4/tcp_input.c
-+++ b/net/ipv4/tcp_input.c
-@@ -1310,25 +1310,26 @@ static int tcp_match_skb_to_sack(struct sock *sk, struct sk_buff *skb,
- return in_sack;
- }
-
--static u8 tcp_sacktag_one(const struct sk_buff *skb, struct sock *sk,
-- struct tcp_sacktag_state *state,
-+/* Mark the given newly-SACKed range as such, adjusting counters and hints. */
-+static u8 tcp_sacktag_one(struct sock *sk,
-+ struct tcp_sacktag_state *state, u8 sacked,
-+ u32 start_seq, u32 end_seq,
- int dup_sack, int pcount)
- {
- struct tcp_sock *tp = tcp_sk(sk);
-- u8 sacked = TCP_SKB_CB(skb)->sacked;
- int fack_count = state->fack_count;
-
- /* Account D-SACK for retransmitted packet. */
- if (dup_sack && (sacked & TCPCB_RETRANS)) {
- if (tp->undo_marker && tp->undo_retrans &&
-- after(TCP_SKB_CB(skb)->end_seq, tp->undo_marker))
-+ after(end_seq, tp->undo_marker))
- tp->undo_retrans--;
- if (sacked & TCPCB_SACKED_ACKED)
- state->reord = min(fack_count, state->reord);
- }
-
- /* Nothing to do; acked frame is about to be dropped (was ACKed). */
-- if (!after(TCP_SKB_CB(skb)->end_seq, tp->snd_una))
-+ if (!after(end_seq, tp->snd_una))
- return sacked;
-
- if (!(sacked & TCPCB_SACKED_ACKED)) {
-@@ -1347,13 +1348,13 @@ static u8 tcp_sacktag_one(const struct sk_buff *skb, struct sock *sk,
- /* New sack for not retransmitted frame,
- * which was in hole. It is reordering.
- */
-- if (before(TCP_SKB_CB(skb)->seq,
-+ if (before(start_seq,
- tcp_highest_sack_seq(tp)))
- state->reord = min(fack_count,
- state->reord);
-
- /* SACK enhanced F-RTO (RFC4138; Appendix B) */
-- if (!after(TCP_SKB_CB(skb)->end_seq, tp->frto_highmark))
-+ if (!after(end_seq, tp->frto_highmark))
- state->flag |= FLAG_ONLY_ORIG_SACKED;
- }
-
-@@ -1371,8 +1372,7 @@ static u8 tcp_sacktag_one(const struct sk_buff *skb, struct sock *sk,
-
- /* Lost marker hint past SACKed? Tweak RFC3517 cnt */
- if (!tcp_is_fack(tp) && (tp->lost_skb_hint != NULL) &&
-- before(TCP_SKB_CB(skb)->seq,
-- TCP_SKB_CB(tp->lost_skb_hint)->seq))
-+ before(start_seq, TCP_SKB_CB(tp->lost_skb_hint)->seq))
- tp->lost_cnt_hint += pcount;
-
- if (fack_count > tp->fackets_out)
-@@ -1428,7 +1428,11 @@ static int tcp_shifted_skb(struct sock *sk, struct sk_buff *skb,
- }
-
- /* We discard results */
-- tcp_sacktag_one(skb, sk, state, dup_sack, pcount);
-+ tcp_sacktag_one(sk, state,
-+ TCP_SKB_CB(skb)->sacked,
-+ TCP_SKB_CB(skb)->seq,
-+ TCP_SKB_CB(skb)->end_seq,
-+ dup_sack, pcount);
-
- /* Difference in this won't matter, both ACKed by the same cumul. ACK */
- TCP_SKB_CB(prev)->sacked |= (TCP_SKB_CB(skb)->sacked & TCPCB_EVER_RETRANS);
-@@ -1667,10 +1671,14 @@ static struct sk_buff *tcp_sacktag_walk(struct sk_buff *skb, struct sock *sk,
- break;
-
- if (in_sack) {
-- TCP_SKB_CB(skb)->sacked = tcp_sacktag_one(skb, sk,
-- state,
-- dup_sack,
-- tcp_skb_pcount(skb));
-+ TCP_SKB_CB(skb)->sacked =
-+ tcp_sacktag_one(sk,
-+ state,
-+ TCP_SKB_CB(skb)->sacked,
-+ TCP_SKB_CB(skb)->seq,
-+ TCP_SKB_CB(skb)->end_seq,
-+ dup_sack,
-+ tcp_skb_pcount(skb));
-
- if (!before(TCP_SKB_CB(skb)->seq,
- tcp_highest_sack_seq(tp)))
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0033-tcp-fix-range-tcp_shifted_skb-passes-to-tcp_sacktag_.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0033-tcp-fix-range-tcp_shifted_skb-passes-to-tcp_sacktag_.patch
deleted file mode 100644
index 908cc07..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0033-tcp-fix-range-tcp_shifted_skb-passes-to-tcp_sacktag_.patch
+++ /dev/null
@@ -1,77 +0,0 @@
-From a0dc910279975b33ce3ee4e2aea7d0666db39cb5 Mon Sep 17 00:00:00 2001
-From: Neal Cardwell <ncardwell at google.com>
-Date: Sun, 12 Feb 2012 18:37:10 +0000
-Subject: [PATCH 33/72] tcp: fix range tcp_shifted_skb() passes to
- tcp_sacktag_one()
-
-[ Upstream commit daef52bab1fd26e24e8e9578f8fb33ba1d0cb412 ]
-
-Fix the newly-SACKed range to be the range of newly-shifted bytes.
-
-Previously - since 832d11c5cd076abc0aa1eaf7be96c81d1a59ce41 -
-tcp_shifted_skb() incorrectly called tcp_sacktag_one() with the start
-and end sequence numbers of the skb it passes in set to the range just
-beyond the range that is newly-SACKed.
-
-This commit also removes a special-case adjustment to lost_cnt_hint in
-tcp_shifted_skb() since the pre-existing adjustment of lost_cnt_hint
-in tcp_sacktag_one() now properly handles this things now that the
-correct start sequence number is passed in.
-
-Signed-off-by: Neal Cardwell <ncardwell at google.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- net/ipv4/tcp_input.c | 19 ++++++++++---------
- 1 file changed, 10 insertions(+), 9 deletions(-)
-
-diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
-index 41440f1..b16fbf3 100644
---- a/net/ipv4/tcp_input.c
-+++ b/net/ipv4/tcp_input.c
-@@ -1391,6 +1391,9 @@ static u8 tcp_sacktag_one(struct sock *sk,
- return sacked;
- }
-
-+/* Shift newly-SACKed bytes from this skb to the immediately previous
-+ * already-SACKed sk_buff. Mark the newly-SACKed bytes as such.
-+ */
- static int tcp_shifted_skb(struct sock *sk, struct sk_buff *skb,
- struct tcp_sacktag_state *state,
- unsigned int pcount, int shifted, int mss,
-@@ -1398,12 +1401,11 @@ static int tcp_shifted_skb(struct sock *sk, struct sk_buff *skb,
- {
- struct tcp_sock *tp = tcp_sk(sk);
- struct sk_buff *prev = tcp_write_queue_prev(sk, skb);
-+ u32 start_seq = TCP_SKB_CB(skb)->seq; /* start of newly-SACKed */
-+ u32 end_seq = start_seq + shifted; /* end of newly-SACKed */
-
- BUG_ON(!pcount);
-
-- if (skb == tp->lost_skb_hint)
-- tp->lost_cnt_hint += pcount;
--
- TCP_SKB_CB(prev)->end_seq += shifted;
- TCP_SKB_CB(skb)->seq += shifted;
-
-@@ -1427,12 +1429,11 @@ static int tcp_shifted_skb(struct sock *sk, struct sk_buff *skb,
- skb_shinfo(skb)->gso_type = 0;
- }
-
-- /* We discard results */
-- tcp_sacktag_one(sk, state,
-- TCP_SKB_CB(skb)->sacked,
-- TCP_SKB_CB(skb)->seq,
-- TCP_SKB_CB(skb)->end_seq,
-- dup_sack, pcount);
-+ /* Adjust counters and hints for the newly sacked sequence range but
-+ * discard the return value since prev is already marked.
-+ */
-+ tcp_sacktag_one(sk, state, TCP_SKB_CB(skb)->sacked,
-+ start_seq, end_seq, dup_sack, pcount);
-
- /* Difference in this won't matter, both ACKed by the same cumul. ACK */
- TCP_SKB_CB(prev)->sacked |= (TCP_SKB_CB(skb)->sacked & TCPCB_EVER_RETRANS);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0034-tcp-fix-tcp_shifted_skb-adjustment-of-lost_cnt_hint-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0034-tcp-fix-tcp_shifted_skb-adjustment-of-lost_cnt_hint-.patch
deleted file mode 100644
index ae42cf7..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0034-tcp-fix-tcp_shifted_skb-adjustment-of-lost_cnt_hint-.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From f43ec4cc9f41d4280832766418ef5c43ef9bfeb7 Mon Sep 17 00:00:00 2001
-From: Neal Cardwell <ncardwell at google.com>
-Date: Mon, 13 Feb 2012 20:22:08 +0000
-Subject: [PATCH 34/72] tcp: fix tcp_shifted_skb() adjustment of lost_cnt_hint
- for FACK
-
-[ Upstream commit 0af2a0d0576205dda778d25c6c344fc6508fc81d ]
-
-This commit ensures that lost_cnt_hint is correctly updated in
-tcp_shifted_skb() for FACK TCP senders. The lost_cnt_hint adjustment
-in tcp_sacktag_one() only applies to non-FACK senders, so FACK senders
-need their own adjustment.
-
-This applies the spirit of 1e5289e121372a3494402b1b131b41bfe1cf9b7f -
-except now that the sequence range passed into tcp_sacktag_one() is
-correct we need only have a special case adjustment for FACK.
-
-Signed-off-by: Neal Cardwell <ncardwell at google.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- net/ipv4/tcp_input.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
-index b16fbf3..53113b9 100644
---- a/net/ipv4/tcp_input.c
-+++ b/net/ipv4/tcp_input.c
-@@ -1406,6 +1406,10 @@ static int tcp_shifted_skb(struct sock *sk, struct sk_buff *skb,
-
- BUG_ON(!pcount);
-
-+ /* Adjust hint for FACK. Non-FACK is handled in tcp_sacktag_one(). */
-+ if (tcp_is_fack(tp) && (skb == tp->lost_skb_hint))
-+ tp->lost_cnt_hint += pcount;
-+
- TCP_SKB_CB(prev)->end_seq += shifted;
- TCP_SKB_CB(skb)->seq += shifted;
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0035-USB-Added-Kamstrup-VID-PIDs-to-cp210x-serial-driver.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0035-USB-Added-Kamstrup-VID-PIDs-to-cp210x-serial-driver.patch
deleted file mode 100644
index 39ca9d4..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0035-USB-Added-Kamstrup-VID-PIDs-to-cp210x-serial-driver.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 6abf95d178a8d02b3cea69d913a415143d8c1ba2 Mon Sep 17 00:00:00 2001
-From: Bruno Thomsen <bruno.thomsen at gmail.com>
-Date: Tue, 21 Feb 2012 23:41:37 +0100
-Subject: [PATCH 35/72] USB: Added Kamstrup VID/PIDs to cp210x serial driver.
-
-commit c6c1e4491dc8d1ed2509fa6aacffa7f34614fc38 upstream.
-
-Signed-off-by: Bruno Thomsen <bruno.thomsen at gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/serial/cp210x.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/drivers/usb/serial/cp210x.c b/drivers/usb/serial/cp210x.c
-index a515237..33d25d4 100644
---- a/drivers/usb/serial/cp210x.c
-+++ b/drivers/usb/serial/cp210x.c
-@@ -136,6 +136,8 @@ static const struct usb_device_id id_table[] = {
- { USB_DEVICE(0x16DC, 0x0011) }, /* W-IE-NE-R Plein & Baus GmbH RCM Remote Control for MARATON Power Supply */
- { USB_DEVICE(0x16DC, 0x0012) }, /* W-IE-NE-R Plein & Baus GmbH MPOD Multi Channel Power Supply */
- { USB_DEVICE(0x16DC, 0x0015) }, /* W-IE-NE-R Plein & Baus GmbH CML Control, Monitoring and Data Logger */
-+ { USB_DEVICE(0x17A8, 0x0001) }, /* Kamstrup Optical Eye/3-wire */
-+ { USB_DEVICE(0x17A8, 0x0005) }, /* Kamstrup M-Bus Master MultiPort 250D */
- { USB_DEVICE(0x17F4, 0xAAAA) }, /* Wavesense Jazz blood glucose meter */
- { USB_DEVICE(0x1843, 0x0200) }, /* Vaisala USB Instrument Cable */
- { USB_DEVICE(0x18EF, 0xE00F) }, /* ELV USB-I2C-Interface */
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0036-USB-option-cleanup-zte-3g-dongle-s-pid-in-option.c.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0036-USB-option-cleanup-zte-3g-dongle-s-pid-in-option.c.patch
deleted file mode 100644
index 1ea49c5..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0036-USB-option-cleanup-zte-3g-dongle-s-pid-in-option.c.patch
+++ /dev/null
@@ -1,246 +0,0 @@
-From 24fa6dd629ca1890e2ed7db7e8f0361dc95e8c8c Mon Sep 17 00:00:00 2001
-From: Rui li <li.rui27 at zte.com.cn>
-Date: Tue, 14 Feb 2012 10:35:01 +0800
-Subject: [PATCH 36/72] USB: option: cleanup zte 3g-dongle's pid in option.c
-
-commit b9e44fe5ecda4158c22bc1ea4bffa378a4f83f65 upstream.
-
- 1. Remove all old mass-storage ids's pid:
- 0x0026,0x0053,0x0098,0x0099,0x0149,0x0150,0x0160;
- 2. As the pid from 0x1401 to 0x1510 which have not surely assigned to
- use for serial-port or mass-storage port,so i think it should be
- removed now, and will re-add after it have assigned in future;
- 3. sort the pid to WCDMA and CDMA.
-
-Signed-off-by: Rui li <li.rui27 at zte.com.cn>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/serial/option.c | 143 ++++---------------------------------------
- 1 file changed, 13 insertions(+), 130 deletions(-)
-
-diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
-index 338d082..68fa8c7 100644
---- a/drivers/usb/serial/option.c
-+++ b/drivers/usb/serial/option.c
-@@ -788,7 +788,6 @@ static const struct usb_device_id option_ids[] = {
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0012, 0xff, 0xff, 0xff),
- .driver_info = (kernel_ulong_t)&net_intf1_blacklist },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0013, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0014, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_MF628, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0016, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0017, 0xff, 0xff, 0xff),
-@@ -803,7 +802,6 @@ static const struct usb_device_id option_ids[] = {
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0024, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0025, 0xff, 0xff, 0xff),
- .driver_info = (kernel_ulong_t)&net_intf1_blacklist },
-- /* { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0026, 0xff, 0xff, 0xff) }, */
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0028, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0029, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0030, 0xff, 0xff, 0xff) },
-@@ -828,7 +826,6 @@ static const struct usb_device_id option_ids[] = {
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0051, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0052, 0xff, 0xff, 0xff),
- .driver_info = (kernel_ulong_t)&net_intf4_blacklist },
-- /* { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0053, 0xff, 0xff, 0xff) }, */
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0054, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0055, 0xff, 0xff, 0xff),
- .driver_info = (kernel_ulong_t)&net_intf1_blacklist },
-@@ -836,7 +833,6 @@ static const struct usb_device_id option_ids[] = {
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0057, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0058, 0xff, 0xff, 0xff),
- .driver_info = (kernel_ulong_t)&net_intf4_blacklist },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0059, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0061, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0062, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0063, 0xff, 0xff, 0xff),
-@@ -846,7 +842,6 @@ static const struct usb_device_id option_ids[] = {
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0066, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0067, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0069, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0070, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0076, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0077, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0078, 0xff, 0xff, 0xff) },
-@@ -865,8 +860,6 @@ static const struct usb_device_id option_ids[] = {
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0095, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0096, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0097, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0098, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0099, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0104, 0xff, 0xff, 0xff),
- .driver_info = (kernel_ulong_t)&net_intf4_blacklist },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0105, 0xff, 0xff, 0xff) },
-@@ -887,28 +880,18 @@ static const struct usb_device_id option_ids[] = {
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0143, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0144, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0145, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0146, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0147, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0148, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0149, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0150, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0151, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0152, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0153, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0155, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0156, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0157, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0158, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0159, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0160, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0161, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0162, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0164, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0165, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0168, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0170, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0176, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0178, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1008, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1010, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1012, 0xff, 0xff, 0xff) },
-@@ -1083,127 +1066,27 @@ static const struct usb_device_id option_ids[] = {
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1298, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1299, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1300, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1401, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1402, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1403, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1404, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1405, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1406, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1407, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1408, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1409, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1410, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1411, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1412, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1413, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1414, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1415, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1416, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1417, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1418, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1419, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1420, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1421, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1422, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1423, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1424, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1425, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1426, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1427, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1428, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1429, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1430, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1431, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1432, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1433, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1434, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1435, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1436, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1437, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1438, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1439, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1440, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1441, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1442, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1443, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1444, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1445, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1446, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1447, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1448, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1449, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1450, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1451, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1452, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1453, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1454, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1455, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1456, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1457, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1458, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1459, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1460, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1461, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1462, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1463, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1464, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1465, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1466, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1467, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1468, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1469, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1470, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1471, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1472, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1473, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1474, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1475, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1476, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1477, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1478, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1479, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1480, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1481, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1482, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1483, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1484, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1485, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1486, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1487, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1488, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1489, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1490, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1491, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1492, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1493, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1494, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1495, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1496, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1497, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1498, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1499, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1500, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1501, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1502, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1503, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1504, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1505, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1506, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1507, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1508, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1509, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1510, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x2002, 0xff,
-+ 0xff, 0xff), .driver_info = (kernel_ulong_t)&zte_k3765_z_blacklist },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x2003, 0xff, 0xff, 0xff) },
-+
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0014, 0xff, 0xff, 0xff) }, /* ZTE CDMA products */
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0027, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0059, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0060, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0070, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0073, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0094, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0130, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0133, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0141, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x2002, 0xff,
-- 0xff, 0xff), .driver_info = (kernel_ulong_t)&zte_k3765_z_blacklist },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x2003, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0147, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0152, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0168, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0170, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0176, 0xff, 0xff, 0xff) },
-+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0178, 0xff, 0xff, 0xff) },
-+
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_CDMA_TECH, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_AC8710, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_AC2726, 0xff, 0xff, 0xff) },
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0037-USB-Serial-ti_usb_3410_5052-Add-Abbot-Diabetes-Care-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0037-USB-Serial-ti_usb_3410_5052-Add-Abbot-Diabetes-Care-.patch
deleted file mode 100644
index 8cd3849..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0037-USB-Serial-ti_usb_3410_5052-Add-Abbot-Diabetes-Care-.patch
+++ /dev/null
@@ -1,76 +0,0 @@
-From 84a3b2d1fb95be76ec543d381ec14af2a252c1b8 Mon Sep 17 00:00:00 2001
-From: Andrew Lunn <andrew at lunn.ch>
-Date: Mon, 20 Feb 2012 09:31:57 +0100
-Subject: [PATCH 37/72] USB: Serial: ti_usb_3410_5052: Add Abbot Diabetes Care
- cable id
-
-commit 7fd25702ba616d9ba56e2a625472f29e5aff25ee upstream.
-
-This USB-serial cable with mini stereo jack enumerates as:
-Bus 001 Device 004: ID 1a61:3410 Abbott Diabetes Care
-
-It is a TI3410 inside.
-
-Signed-off-by: Andrew Lunn <andrew at lunn.ch>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/serial/ti_usb_3410_5052.c | 6 ++++--
- drivers/usb/serial/ti_usb_3410_5052.h | 4 ++++
- 2 files changed, 8 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/usb/serial/ti_usb_3410_5052.c b/drivers/usb/serial/ti_usb_3410_5052.c
-index ea84456..21c82b0 100644
---- a/drivers/usb/serial/ti_usb_3410_5052.c
-+++ b/drivers/usb/serial/ti_usb_3410_5052.c
-@@ -165,7 +165,7 @@ static unsigned int product_5052_count;
- /* the array dimension is the number of default entries plus */
- /* TI_EXTRA_VID_PID_COUNT user defined entries plus 1 terminating */
- /* null entry */
--static struct usb_device_id ti_id_table_3410[13+TI_EXTRA_VID_PID_COUNT+1] = {
-+static struct usb_device_id ti_id_table_3410[14+TI_EXTRA_VID_PID_COUNT+1] = {
- { USB_DEVICE(TI_VENDOR_ID, TI_3410_PRODUCT_ID) },
- { USB_DEVICE(TI_VENDOR_ID, TI_3410_EZ430_ID) },
- { USB_DEVICE(MTS_VENDOR_ID, MTS_GSM_NO_FW_PRODUCT_ID) },
-@@ -179,6 +179,7 @@ static struct usb_device_id ti_id_table_3410[13+TI_EXTRA_VID_PID_COUNT+1] = {
- { USB_DEVICE(IBM_VENDOR_ID, IBM_4543_PRODUCT_ID) },
- { USB_DEVICE(IBM_VENDOR_ID, IBM_454B_PRODUCT_ID) },
- { USB_DEVICE(IBM_VENDOR_ID, IBM_454C_PRODUCT_ID) },
-+ { USB_DEVICE(ABBOTT_VENDOR_ID, ABBOTT_PRODUCT_ID) },
- };
-
- static struct usb_device_id ti_id_table_5052[5+TI_EXTRA_VID_PID_COUNT+1] = {
-@@ -188,7 +189,7 @@ static struct usb_device_id ti_id_table_5052[5+TI_EXTRA_VID_PID_COUNT+1] = {
- { USB_DEVICE(TI_VENDOR_ID, TI_5052_FIRMWARE_PRODUCT_ID) },
- };
-
--static struct usb_device_id ti_id_table_combined[17+2*TI_EXTRA_VID_PID_COUNT+1] = {
-+static struct usb_device_id ti_id_table_combined[18+2*TI_EXTRA_VID_PID_COUNT+1] = {
- { USB_DEVICE(TI_VENDOR_ID, TI_3410_PRODUCT_ID) },
- { USB_DEVICE(TI_VENDOR_ID, TI_3410_EZ430_ID) },
- { USB_DEVICE(MTS_VENDOR_ID, MTS_GSM_NO_FW_PRODUCT_ID) },
-@@ -206,6 +207,7 @@ static struct usb_device_id ti_id_table_combined[17+2*TI_EXTRA_VID_PID_COUNT+1]
- { USB_DEVICE(IBM_VENDOR_ID, IBM_4543_PRODUCT_ID) },
- { USB_DEVICE(IBM_VENDOR_ID, IBM_454B_PRODUCT_ID) },
- { USB_DEVICE(IBM_VENDOR_ID, IBM_454C_PRODUCT_ID) },
-+ { USB_DEVICE(ABBOTT_VENDOR_ID, ABBOTT_PRODUCT_ID) },
- { }
- };
-
-diff --git a/drivers/usb/serial/ti_usb_3410_5052.h b/drivers/usb/serial/ti_usb_3410_5052.h
-index 2aac195..f140f1b 100644
---- a/drivers/usb/serial/ti_usb_3410_5052.h
-+++ b/drivers/usb/serial/ti_usb_3410_5052.h
-@@ -49,6 +49,10 @@
- #define MTS_MT9234ZBA_PRODUCT_ID 0xF115
- #define MTS_MT9234ZBAOLD_PRODUCT_ID 0x0319
-
-+/* Abbott Diabetics vendor and product ids */
-+#define ABBOTT_VENDOR_ID 0x1a61
-+#define ABBOTT_PRODUCT_ID 0x3410
-+
- /* Commands */
- #define TI_GET_VERSION 0x01
- #define TI_GET_PORT_STATUS 0x02
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0038-USB-Remove-duplicate-USB-3.0-hub-feature-defines.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0038-USB-Remove-duplicate-USB-3.0-hub-feature-defines.patch
deleted file mode 100644
index ded5ece..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0038-USB-Remove-duplicate-USB-3.0-hub-feature-defines.patch
+++ /dev/null
@@ -1,74 +0,0 @@
-From 4c64933ec58a84dbda536345d8ff36cdd503cebe Mon Sep 17 00:00:00 2001
-From: Sarah Sharp <sarah.a.sharp at linux.intel.com>
-Date: Thu, 5 Jan 2012 16:28:54 -0800
-Subject: [PATCH 38/72] USB: Remove duplicate USB 3.0 hub feature #defines.
-
-commit d9f5343e35d9138432657202afa8e3ddb2ade360 upstream.
-
-Somehow we ended up with duplicate hub feature #defines in ch11.h.
-Tatyana Brokhman first created the USB 3.0 hub feature macros in 2.6.38
-with commit 0eadcc09203349b11ca477ec367079b23d32ab91 "usb: USB3.0 ch11
-definitions". In 2.6.39, I modified a patch from John Youn that added
-similar macros in a different place in the same file, and committed
-dbe79bbe9dcb22cb3651c46f18943477141ca452 "USB 3.0 Hub Changes".
-
-Some of the #defines used different names for the same values. Others
-used exactly the same names with the same values, like these gems:
-
- #define USB_PORT_FEAT_BH_PORT_RESET 28
-...
- #define USB_PORT_FEAT_BH_PORT_RESET 28
-
-According to my very geeky husband (who looked it up in the C99 spec),
-it is allowed to have object-like macros with duplicate names as long as
-the replacement list is exactly the same. However, he recalled that
-some compilers will give warnings when they find duplicate macros. It's
-probably best to remove the duplicates in the stable tree, so that the
-code compiles for everyone.
-
-The macros are now fixed to move the feature requests that are specific
-to USB 3.0 hubs into a new section (out of the USB 2.0 hub feature
-section), and use the most common macro name.
-
-This patch should be backported to 2.6.39.
-
-Signed-off-by: Sarah Sharp <sarah.a.sharp at linux.intel.com>
-Cc: Tatyana Brokhman <tlinder at codeaurora.org>
-Cc: John Youn <johnyoun at synopsys.com>
-Cc: Jamey Sharp <jamey at minilop.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- include/linux/usb/ch11.h | 10 ++--------
- 1 file changed, 2 insertions(+), 8 deletions(-)
-
-diff --git a/include/linux/usb/ch11.h b/include/linux/usb/ch11.h
-index 4ebaf08..1eb735b 100644
---- a/include/linux/usb/ch11.h
-+++ b/include/linux/usb/ch11.h
-@@ -62,12 +62,6 @@
- #define USB_PORT_FEAT_TEST 21
- #define USB_PORT_FEAT_INDICATOR 22
- #define USB_PORT_FEAT_C_PORT_L1 23
--#define USB_PORT_FEAT_C_PORT_LINK_STATE 25
--#define USB_PORT_FEAT_C_PORT_CONFIG_ERROR 26
--#define USB_PORT_FEAT_PORT_REMOTE_WAKE_MASK 27
--#define USB_PORT_FEAT_BH_PORT_RESET 28
--#define USB_PORT_FEAT_C_BH_PORT_RESET 29
--#define USB_PORT_FEAT_FORCE_LINKPM_ACCEPT 30
-
- /*
- * Port feature selectors added by USB 3.0 spec.
-@@ -76,8 +70,8 @@
- #define USB_PORT_FEAT_LINK_STATE 5
- #define USB_PORT_FEAT_U1_TIMEOUT 23
- #define USB_PORT_FEAT_U2_TIMEOUT 24
--#define USB_PORT_FEAT_C_LINK_STATE 25
--#define USB_PORT_FEAT_C_CONFIG_ERR 26
-+#define USB_PORT_FEAT_C_PORT_LINK_STATE 25
-+#define USB_PORT_FEAT_C_PORT_CONFIG_ERROR 26
- #define USB_PORT_FEAT_REMOTE_WAKE_MASK 27
- #define USB_PORT_FEAT_BH_PORT_RESET 28
- #define USB_PORT_FEAT_C_BH_PORT_RESET 29
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0039-USB-Fix-handoff-when-BIOS-disables-host-PCI-device.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0039-USB-Fix-handoff-when-BIOS-disables-host-PCI-device.patch
deleted file mode 100644
index f0ccc44..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0039-USB-Fix-handoff-when-BIOS-disables-host-PCI-device.patch
+++ /dev/null
@@ -1,69 +0,0 @@
-From 786db31181c37b0d6935fe6ac775413071cac13a Mon Sep 17 00:00:00 2001
-From: Sarah Sharp <sarah.a.sharp at linux.intel.com>
-Date: Tue, 7 Feb 2012 15:11:46 -0800
-Subject: [PATCH 39/72] USB: Fix handoff when BIOS disables host PCI device.
-
-commit cab928ee1f221c9cc48d6615070fefe2e444384a upstream.
-
-On some systems with an Intel Panther Point xHCI host controller, the
-BIOS disables the xHCI PCI device during boot, and switches the xHCI
-ports over to EHCI. This allows the BIOS to access USB devices without
-having xHCI support.
-
-The downside is that the xHCI BIOS handoff mechanism will fail because
-memory mapped I/O is not enabled for the disabled PCI device.
-Jesse Barnes says this is expected behavior. The PCI core will enable
-BARs before quirks run, but it will leave it in an undefined state, and
-it may not have memory mapped I/O enabled.
-
-Make the generic USB quirk handler call pci_enable_device() to re-enable
-MMIO, and call pci_disable_device() once the host-specific BIOS handoff
-is finished. This will balance the ref counts in the PCI core. When
-the PCI probe function is called, usb_hcd_pci_probe() will call
-pci_enable_device() again.
-
-This should be back ported to kernels as old as 2.6.31. That was the
-first kernel with xHCI support, and no one has complained about BIOS
-handoffs failing due to memory mapped I/O being disabled on other hosts
-(EHCI, UHCI, or OHCI).
-
-Signed-off-by: Sarah Sharp <sarah.a.sharp at linux.intel.com>
-Acked-by: Oliver Neukum <oneukum at suse.de>
-Cc: Jesse Barnes <jbarnes at virtuousgeek.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/host/pci-quirks.c | 11 +++++++++++
- 1 file changed, 11 insertions(+)
-
-diff --git a/drivers/usb/host/pci-quirks.c b/drivers/usb/host/pci-quirks.c
-index ac53a66..7732d69 100644
---- a/drivers/usb/host/pci-quirks.c
-+++ b/drivers/usb/host/pci-quirks.c
-@@ -872,7 +872,17 @@ static void __devinit quirk_usb_early_handoff(struct pci_dev *pdev)
- */
- if (pdev->vendor == 0x184e) /* vendor Netlogic */
- return;
-+ if (pdev->class != PCI_CLASS_SERIAL_USB_UHCI &&
-+ pdev->class != PCI_CLASS_SERIAL_USB_OHCI &&
-+ pdev->class != PCI_CLASS_SERIAL_USB_EHCI &&
-+ pdev->class != PCI_CLASS_SERIAL_USB_XHCI)
-+ return;
-
-+ if (pci_enable_device(pdev) < 0) {
-+ dev_warn(&pdev->dev, "Can't enable PCI device, "
-+ "BIOS handoff failed.\n");
-+ return;
-+ }
- if (pdev->class == PCI_CLASS_SERIAL_USB_UHCI)
- quirk_usb_handoff_uhci(pdev);
- else if (pdev->class == PCI_CLASS_SERIAL_USB_OHCI)
-@@ -881,5 +891,6 @@ static void __devinit quirk_usb_early_handoff(struct pci_dev *pdev)
- quirk_usb_disable_ehci(pdev);
- else if (pdev->class == PCI_CLASS_SERIAL_USB_XHCI)
- quirk_usb_handoff_xhci(pdev);
-+ pci_disable_device(pdev);
- }
- DECLARE_PCI_FIXUP_FINAL(PCI_ANY_ID, PCI_ANY_ID, quirk_usb_early_handoff);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0040-xhci-Fix-oops-caused-by-more-USB2-ports-than-USB3-po.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0040-xhci-Fix-oops-caused-by-more-USB2-ports-than-USB3-po.patch
deleted file mode 100644
index 0df953a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0040-xhci-Fix-oops-caused-by-more-USB2-ports-than-USB3-po.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 84f1532950e62e2578f5dfd7ad2a206f15f380ea Mon Sep 17 00:00:00 2001
-From: Sarah Sharp <sarah.a.sharp at linux.intel.com>
-Date: Thu, 9 Feb 2012 14:43:44 -0800
-Subject: [PATCH 40/72] xhci: Fix oops caused by more USB2 ports than USB3
- ports.
-
-commit 3278a55a1aebe2bbd47fbb5196209e5326a88b56 upstream.
-
-The code to set the device removable bits in the USB 2.0 roothub
-descriptor was accidentally looking at the USB 3.0 port registers
-instead of the USB 2.0 registers. This can cause an oops if there are
-more USB 2.0 registers than USB 3.0 registers.
-
-This should be backported to kernels as old as 2.6.39, that contain the
-commit 4bbb0ace9a3de8392527e3c87926309d541d3b00 "xhci: Return a USB 3.0
-hub descriptor for USB3 roothub."
-
-Signed-off-by: Sarah Sharp <sarah.a.sharp at linux.intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/host/xhci-hub.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/usb/host/xhci-hub.c b/drivers/usb/host/xhci-hub.c
-index 430e88f..a8b2980 100644
---- a/drivers/usb/host/xhci-hub.c
-+++ b/drivers/usb/host/xhci-hub.c
-@@ -95,7 +95,7 @@ static void xhci_usb2_hub_descriptor(struct usb_hcd *hcd, struct xhci_hcd *xhci,
- */
- memset(port_removable, 0, sizeof(port_removable));
- for (i = 0; i < ports; i++) {
-- portsc = xhci_readl(xhci, xhci->usb3_ports[i]);
-+ portsc = xhci_readl(xhci, xhci->usb2_ports[i]);
- /* If a device is removable, PORTSC reports a 0, same as in the
- * hub descriptor DeviceRemovable bits.
- */
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0041-xhci-Fix-encoding-for-HS-bulk-control-NAK-rate.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0041-xhci-Fix-encoding-for-HS-bulk-control-NAK-rate.patch
deleted file mode 100644
index bd9f4ea..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0041-xhci-Fix-encoding-for-HS-bulk-control-NAK-rate.patch
+++ /dev/null
@@ -1,98 +0,0 @@
-From d32148ecb8f71e584a880ef74f1cfb590bcead55 Mon Sep 17 00:00:00 2001
-From: Sarah Sharp <sarah.a.sharp at linux.intel.com>
-Date: Mon, 13 Feb 2012 14:42:11 -0800
-Subject: [PATCH 41/72] xhci: Fix encoding for HS bulk/control NAK rate.
-
-commit 340a3504fd39dad753ba908fb6f894ee81fc3ae2 upstream.
-
-The xHCI 0.96 spec says that HS bulk and control endpoint NAK rate must
-be encoded as an exponent of two number of microframes. The endpoint
-descriptor has the NAK rate encoded in number of microframes. We were
-just copying the value from the endpoint descriptor into the endpoint
-context interval field, which was not correct. This lead to the VIA
-host rejecting the add of a bulk OUT endpoint from any USB 2.0 mass
-storage device.
-
-The fix is to use the correct encoding. Refactor the code to convert
-number of frames to an exponential number of microframes, and make sure
-we convert the number of microframes in HS bulk and control endpoints to
-an exponent.
-
-This should be back ported to kernels as old as 2.6.31, that contain the
-commit dfa49c4ad120a784ef1ff0717168aa79f55a483a "USB: xhci - fix math
-in xhci_get_endpoint_interval"
-
-Signed-off-by: Sarah Sharp <sarah.a.sharp at linux.intel.com>
-Tested-by: Felipe Contreras <felipe.contreras at gmail.com>
-Suggested-by: Andiry Xu <andiry.xu at amd.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/host/xhci-mem.c | 32 ++++++++++++++++++++++++--------
- 1 file changed, 24 insertions(+), 8 deletions(-)
-
-diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c
-index 0e4b25f..c69cf54 100644
---- a/drivers/usb/host/xhci-mem.c
-+++ b/drivers/usb/host/xhci-mem.c
-@@ -1140,26 +1140,42 @@ static unsigned int xhci_parse_exponent_interval(struct usb_device *udev,
- }
-
- /*
-- * Convert bInterval expressed in frames (in 1-255 range) to exponent of
-+ * Convert bInterval expressed in microframes (in 1-255 range) to exponent of
- * microframes, rounded down to nearest power of 2.
- */
--static unsigned int xhci_parse_frame_interval(struct usb_device *udev,
-- struct usb_host_endpoint *ep)
-+static unsigned int xhci_microframes_to_exponent(struct usb_device *udev,
-+ struct usb_host_endpoint *ep, unsigned int desc_interval,
-+ unsigned int min_exponent, unsigned int max_exponent)
- {
- unsigned int interval;
-
-- interval = fls(8 * ep->desc.bInterval) - 1;
-- interval = clamp_val(interval, 3, 10);
-- if ((1 << interval) != 8 * ep->desc.bInterval)
-+ interval = fls(desc_interval) - 1;
-+ interval = clamp_val(interval, min_exponent, max_exponent);
-+ if ((1 << interval) != desc_interval)
- dev_warn(&udev->dev,
- "ep %#x - rounding interval to %d microframes, ep desc says %d microframes\n",
- ep->desc.bEndpointAddress,
- 1 << interval,
-- 8 * ep->desc.bInterval);
-+ desc_interval);
-
- return interval;
- }
-
-+static unsigned int xhci_parse_microframe_interval(struct usb_device *udev,
-+ struct usb_host_endpoint *ep)
-+{
-+ return xhci_microframes_to_exponent(udev, ep,
-+ ep->desc.bInterval, 0, 15);
-+}
-+
-+
-+static unsigned int xhci_parse_frame_interval(struct usb_device *udev,
-+ struct usb_host_endpoint *ep)
-+{
-+ return xhci_microframes_to_exponent(udev, ep,
-+ ep->desc.bInterval * 8, 3, 10);
-+}
-+
- /* Return the polling or NAK interval.
- *
- * The polling interval is expressed in "microframes". If xHCI's Interval field
-@@ -1178,7 +1194,7 @@ static unsigned int xhci_get_endpoint_interval(struct usb_device *udev,
- /* Max NAK rate */
- if (usb_endpoint_xfer_control(&ep->desc) ||
- usb_endpoint_xfer_bulk(&ep->desc)) {
-- interval = ep->desc.bInterval;
-+ interval = xhci_parse_microframe_interval(udev, ep);
- break;
- }
- /* Fall through - SS and HS isoc/int have same decoding */
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0042-USB-Don-t-fail-USB3-probe-on-missing-legacy-PCI-IRQ.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0042-USB-Don-t-fail-USB3-probe-on-missing-legacy-PCI-IRQ.patch
deleted file mode 100644
index 63cf5fb..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0042-USB-Don-t-fail-USB3-probe-on-missing-legacy-PCI-IRQ.patch
+++ /dev/null
@@ -1,80 +0,0 @@
-From d0e10baf6b8ed0dfd3e1e4aeae7167f64c25fe9f Mon Sep 17 00:00:00 2001
-From: Sarah Sharp <sarah.a.sharp at linux.intel.com>
-Date: Mon, 13 Feb 2012 16:25:57 -0800
-Subject: [PATCH 42/72] USB: Don't fail USB3 probe on missing legacy PCI IRQ.
-
-commit 68d07f64b8a11a852d48d1b05b724c3e20c0d94b upstream.
-
-Intel has a PCI USB xhci host controller on a new platform. It doesn't
-have a line IRQ definition in BIOS. The Linux driver refuses to
-initialize this controller, but Windows works well because it only depends
-on MSI.
-
-Actually, Linux also can work for MSI. This patch avoids the line IRQ
-checking for USB3 HCDs in usb core PCI probe. It allows the xHCI driver
-to try to enable MSI or MSI-X first. It will fail the probe if MSI
-enabling failed and there's no legacy PCI IRQ.
-
-This patch should be backported to kernels as old as 2.6.32.
-
-Signed-off-by: Alex Shi <alex.shi at intel.com>
-Signed-off-by: Sarah Sharp <sarah.a.sharp at linux.intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/core/hcd-pci.c | 5 ++++-
- drivers/usb/core/hcd.c | 6 ++++--
- drivers/usb/host/xhci.c | 5 +++++
- 3 files changed, 13 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/usb/core/hcd-pci.c b/drivers/usb/core/hcd-pci.c
-index a004db3..61d08dd 100644
---- a/drivers/usb/core/hcd-pci.c
-+++ b/drivers/usb/core/hcd-pci.c
-@@ -187,7 +187,10 @@ int usb_hcd_pci_probe(struct pci_dev *dev, const struct pci_device_id *id)
- return -ENODEV;
- dev->current_state = PCI_D0;
-
-- if (!dev->irq) {
-+ /* The xHCI driver supports MSI and MSI-X,
-+ * so don't fail if the BIOS doesn't provide a legacy IRQ.
-+ */
-+ if (!dev->irq && (driver->flags & HCD_MASK) != HCD_USB3) {
- dev_err(&dev->dev,
- "Found HC with no IRQ. Check BIOS/PCI %s setup!\n",
- pci_name(dev));
-diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c
-index 179e364..8cb9304 100644
---- a/drivers/usb/core/hcd.c
-+++ b/drivers/usb/core/hcd.c
-@@ -2465,8 +2465,10 @@ int usb_add_hcd(struct usb_hcd *hcd,
- && device_can_wakeup(&hcd->self.root_hub->dev))
- dev_dbg(hcd->self.controller, "supports USB remote wakeup\n");
-
-- /* enable irqs just before we start the controller */
-- if (usb_hcd_is_primary_hcd(hcd)) {
-+ /* enable irqs just before we start the controller,
-+ * if the BIOS provides legacy PCI irqs.
-+ */
-+ if (usb_hcd_is_primary_hcd(hcd) && irqnum) {
- retval = usb_hcd_request_irqs(hcd, irqnum, irqflags);
- if (retval)
- goto err_request_irq;
-diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
-index b33f059..034f554 100644
---- a/drivers/usb/host/xhci.c
-+++ b/drivers/usb/host/xhci.c
-@@ -352,6 +352,11 @@ static int xhci_try_enable_msi(struct usb_hcd *hcd)
- /* hcd->irq is -1, we have MSI */
- return 0;
-
-+ if (!pdev->irq) {
-+ xhci_err(xhci, "No msi-x/msi found and no IRQ in BIOS\n");
-+ return -EINVAL;
-+ }
-+
- /* fall back to legacy interrupt*/
- ret = request_irq(pdev->irq, &usb_hcd_irq, IRQF_SHARED,
- hcd->irq_descr, hcd);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0043-USB-Set-hub-depth-after-USB3-hub-reset.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0043-USB-Set-hub-depth-after-USB3-hub-reset.patch
deleted file mode 100644
index 14db8a7..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0043-USB-Set-hub-depth-after-USB3-hub-reset.patch
+++ /dev/null
@@ -1,86 +0,0 @@
-From e72d2e79696c9f2c9f5d2a3ad0b09b124c493950 Mon Sep 17 00:00:00 2001
-From: Elric Fu <elricfu1 at gmail.com>
-Date: Sat, 18 Feb 2012 13:32:27 +0800
-Subject: [PATCH 43/72] USB: Set hub depth after USB3 hub reset
-
-commit a45aa3b30583e7d54e7cf4fbcd0aa699348a6e5c upstream.
-
-The superspeed device attached to a USB 3.0 hub(such as VIA's)
-doesn't respond the address device command after resume. The
-root cause is the superspeed hub will miss the Hub Depth value
-that is used as an offset into the route string to locate the
-bits it uses to determine the downstream port number after
-reset, and all packets can't be routed to the device attached
-to the superspeed hub.
-
-Hub driver sends a Set Hub Depth request to the superspeed hub
-except for USB 3.0 root hub when the hub is initialized and
-doesn't send the request again after reset due to the resume
-process. So moving the code that sends the Set Hub Depth request
-to the superspeed hub from hub_configure() to hub_activate()
-is to cover those situations include initialization and reset.
-
-The patch should be backported to kernels as old as 2.6.39.
-
-Signed-off-by: Elric Fu <elricfu1 at gmail.com>
-Signed-off-by: Sarah Sharp <sarah.a.sharp at linux.intel.com>
-Acked-by: Alan Stern <stern at rowland.harvard.edu>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/core/hub.c | 30 +++++++++++++++++-------------
- 1 file changed, 17 insertions(+), 13 deletions(-)
-
-diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
-index 5b4da30..f982eeb 100644
---- a/drivers/usb/core/hub.c
-+++ b/drivers/usb/core/hub.c
-@@ -705,10 +705,26 @@ static void hub_activate(struct usb_hub *hub, enum hub_activation_type type)
- if (type == HUB_INIT3)
- goto init3;
-
-- /* After a resume, port power should still be on.
-+ /* The superspeed hub except for root hub has to use Hub Depth
-+ * value as an offset into the route string to locate the bits
-+ * it uses to determine the downstream port number. So hub driver
-+ * should send a set hub depth request to superspeed hub after
-+ * the superspeed hub is set configuration in initialization or
-+ * reset procedure.
-+ *
-+ * After a resume, port power should still be on.
- * For any other type of activation, turn it on.
- */
- if (type != HUB_RESUME) {
-+ if (hdev->parent && hub_is_superspeed(hdev)) {
-+ ret = usb_control_msg(hdev, usb_sndctrlpipe(hdev, 0),
-+ HUB_SET_DEPTH, USB_RT_HUB,
-+ hdev->level - 1, 0, NULL, 0,
-+ USB_CTRL_SET_TIMEOUT);
-+ if (ret < 0)
-+ dev_err(hub->intfdev,
-+ "set hub depth failed\n");
-+ }
-
- /* Speed up system boot by using a delayed_work for the
- * hub's initial power-up delays. This is pretty awkward
-@@ -987,18 +1003,6 @@ static int hub_configure(struct usb_hub *hub,
- goto fail;
- }
-
-- if (hub_is_superspeed(hdev) && (hdev->parent != NULL)) {
-- ret = usb_control_msg(hdev, usb_sndctrlpipe(hdev, 0),
-- HUB_SET_DEPTH, USB_RT_HUB,
-- hdev->level - 1, 0, NULL, 0,
-- USB_CTRL_SET_TIMEOUT);
--
-- if (ret < 0) {
-- message = "can't set hub depth";
-- goto fail;
-- }
-- }
--
- /* Request the entire hub descriptor.
- * hub->descriptor can handle USB_MAXCHILDREN ports,
- * but the hub can/will return fewer bytes here.
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0044-usb-storage-fix-freezing-of-the-scanning-thread.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0044-usb-storage-fix-freezing-of-the-scanning-thread.patch
deleted file mode 100644
index b2c37a2..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0044-usb-storage-fix-freezing-of-the-scanning-thread.patch
+++ /dev/null
@@ -1,213 +0,0 @@
-From dcc7fca10922a9b707bbc8ea3138a8df665f8e55 Mon Sep 17 00:00:00 2001
-From: Alan Stern <stern at rowland.harvard.edu>
-Date: Tue, 21 Feb 2012 13:16:32 -0500
-Subject: [PATCH 44/72] usb-storage: fix freezing of the scanning thread
-
-commit bb94a406682770a35305daaa241ccdb7cab399de upstream.
-
-This patch (as1521b) fixes the interaction between usb-storage's
-scanning thread and the freezer. The current implementation has a
-race: If the device is unplugged shortly after being plugged in and
-just as a system sleep begins, the scanning thread may get frozen
-before the khubd task. Khubd won't be able to freeze until the
-disconnect processing is complete, and the disconnect processing can't
-proceed until the scanning thread finishes, so the sleep transition
-will fail.
-
-The implementation in the 3.2 kernel suffers from an additional
-problem. There the scanning thread calls set_freezable_with_signal(),
-and the signals sent by the freezer will mess up the thread's I/O
-delays, which are all interruptible.
-
-The solution to both problems is the same: Replace the kernel thread
-used for scanning with a delayed-work routine on the system freezable
-work queue. Freezable work queues have the nice property that you can
-cancel a work item even while the work queue is frozen, and no signals
-are needed.
-
-The 3.2 version of this patch solves the problem in Bugzilla #42730.
-
-Signed-off-by: Alan Stern <stern at rowland.harvard.edu>
-Acked-by: Seth Forshee <seth.forshee at canonical.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/usb/storage/usb.c | 89 ++++++++++++++++-----------------------------
- drivers/usb/storage/usb.h | 7 ++--
- 2 files changed, 35 insertions(+), 61 deletions(-)
-
-diff --git a/drivers/usb/storage/usb.c b/drivers/usb/storage/usb.c
-index 9e069ef..db51ba1 100644
---- a/drivers/usb/storage/usb.c
-+++ b/drivers/usb/storage/usb.c
-@@ -788,15 +788,19 @@ static void quiesce_and_remove_host(struct us_data *us)
- struct Scsi_Host *host = us_to_host(us);
-
- /* If the device is really gone, cut short reset delays */
-- if (us->pusb_dev->state == USB_STATE_NOTATTACHED)
-+ if (us->pusb_dev->state == USB_STATE_NOTATTACHED) {
- set_bit(US_FLIDX_DISCONNECTING, &us->dflags);
-+ wake_up(&us->delay_wait);
-+ }
-
-- /* Prevent SCSI-scanning (if it hasn't started yet)
-- * and wait for the SCSI-scanning thread to stop.
-+ /* Prevent SCSI scanning (if it hasn't started yet)
-+ * or wait for the SCSI-scanning routine to stop.
- */
-- set_bit(US_FLIDX_DONT_SCAN, &us->dflags);
-- wake_up(&us->delay_wait);
-- wait_for_completion(&us->scanning_done);
-+ cancel_delayed_work_sync(&us->scan_dwork);
-+
-+ /* Balance autopm calls if scanning was cancelled */
-+ if (test_bit(US_FLIDX_SCAN_PENDING, &us->dflags))
-+ usb_autopm_put_interface_no_suspend(us->pusb_intf);
-
- /* Removing the host will perform an orderly shutdown: caches
- * synchronized, disks spun down, etc.
-@@ -823,52 +827,28 @@ static void release_everything(struct us_data *us)
- scsi_host_put(us_to_host(us));
- }
-
--/* Thread to carry out delayed SCSI-device scanning */
--static int usb_stor_scan_thread(void * __us)
-+/* Delayed-work routine to carry out SCSI-device scanning */
-+static void usb_stor_scan_dwork(struct work_struct *work)
- {
-- struct us_data *us = (struct us_data *)__us;
-+ struct us_data *us = container_of(work, struct us_data,
-+ scan_dwork.work);
- struct device *dev = &us->pusb_intf->dev;
-
-- dev_dbg(dev, "device found\n");
-+ dev_dbg(dev, "starting scan\n");
-
-- set_freezable_with_signal();
-- /*
-- * Wait for the timeout to expire or for a disconnect
-- *
-- * We can't freeze in this thread or we risk causing khubd to
-- * fail to freeze, but we can't be non-freezable either. Nor can
-- * khubd freeze while waiting for scanning to complete as it may
-- * hold the device lock, causing a hang when suspending devices.
-- * So we request a fake signal when freezing and use
-- * interruptible sleep to kick us out of our wait early when
-- * freezing happens.
-- */
-- if (delay_use > 0) {
-- dev_dbg(dev, "waiting for device to settle "
-- "before scanning\n");
-- wait_event_interruptible_timeout(us->delay_wait,
-- test_bit(US_FLIDX_DONT_SCAN, &us->dflags),
-- delay_use * HZ);
-+ /* For bulk-only devices, determine the max LUN value */
-+ if (us->protocol == USB_PR_BULK && !(us->fflags & US_FL_SINGLE_LUN)) {
-+ mutex_lock(&us->dev_mutex);
-+ us->max_lun = usb_stor_Bulk_max_lun(us);
-+ mutex_unlock(&us->dev_mutex);
- }
-+ scsi_scan_host(us_to_host(us));
-+ dev_dbg(dev, "scan complete\n");
-
-- /* If the device is still connected, perform the scanning */
-- if (!test_bit(US_FLIDX_DONT_SCAN, &us->dflags)) {
--
-- /* For bulk-only devices, determine the max LUN value */
-- if (us->protocol == USB_PR_BULK &&
-- !(us->fflags & US_FL_SINGLE_LUN)) {
-- mutex_lock(&us->dev_mutex);
-- us->max_lun = usb_stor_Bulk_max_lun(us);
-- mutex_unlock(&us->dev_mutex);
-- }
-- scsi_scan_host(us_to_host(us));
-- dev_dbg(dev, "scan complete\n");
--
-- /* Should we unbind if no devices were detected? */
-- }
-+ /* Should we unbind if no devices were detected? */
-
- usb_autopm_put_interface(us->pusb_intf);
-- complete_and_exit(&us->scanning_done, 0);
-+ clear_bit(US_FLIDX_SCAN_PENDING, &us->dflags);
- }
-
- static unsigned int usb_stor_sg_tablesize(struct usb_interface *intf)
-@@ -915,7 +895,7 @@ int usb_stor_probe1(struct us_data **pus,
- init_completion(&us->cmnd_ready);
- init_completion(&(us->notify));
- init_waitqueue_head(&us->delay_wait);
-- init_completion(&us->scanning_done);
-+ INIT_DELAYED_WORK(&us->scan_dwork, usb_stor_scan_dwork);
-
- /* Associate the us_data structure with the USB device */
- result = associate_dev(us, intf);
-@@ -946,7 +926,6 @@ EXPORT_SYMBOL_GPL(usb_stor_probe1);
- /* Second part of general USB mass-storage probing */
- int usb_stor_probe2(struct us_data *us)
- {
-- struct task_struct *th;
- int result;
- struct device *dev = &us->pusb_intf->dev;
-
-@@ -987,20 +966,14 @@ int usb_stor_probe2(struct us_data *us)
- goto BadDevice;
- }
-
-- /* Start up the thread for delayed SCSI-device scanning */
-- th = kthread_create(usb_stor_scan_thread, us, "usb-stor-scan");
-- if (IS_ERR(th)) {
-- dev_warn(dev,
-- "Unable to start the device-scanning thread\n");
-- complete(&us->scanning_done);
-- quiesce_and_remove_host(us);
-- result = PTR_ERR(th);
-- goto BadDevice;
-- }
--
-+ /* Submit the delayed_work for SCSI-device scanning */
- usb_autopm_get_interface_no_resume(us->pusb_intf);
-- wake_up_process(th);
-+ set_bit(US_FLIDX_SCAN_PENDING, &us->dflags);
-
-+ if (delay_use > 0)
-+ dev_dbg(dev, "waiting for device to settle before scanning\n");
-+ queue_delayed_work(system_freezable_wq, &us->scan_dwork,
-+ delay_use * HZ);
- return 0;
-
- /* We come here if there are any problems */
-diff --git a/drivers/usb/storage/usb.h b/drivers/usb/storage/usb.h
-index 7b0f211..75f70f0 100644
---- a/drivers/usb/storage/usb.h
-+++ b/drivers/usb/storage/usb.h
-@@ -47,6 +47,7 @@
- #include <linux/blkdev.h>
- #include <linux/completion.h>
- #include <linux/mutex.h>
-+#include <linux/workqueue.h>
- #include <scsi/scsi_host.h>
-
- struct us_data;
-@@ -72,7 +73,7 @@ struct us_unusual_dev {
- #define US_FLIDX_DISCONNECTING 3 /* disconnect in progress */
- #define US_FLIDX_RESETTING 4 /* device reset in progress */
- #define US_FLIDX_TIMED_OUT 5 /* SCSI midlayer timed out */
--#define US_FLIDX_DONT_SCAN 6 /* don't scan (disconnect) */
-+#define US_FLIDX_SCAN_PENDING 6 /* scanning not yet done */
- #define US_FLIDX_REDO_READ10 7 /* redo READ(10) command */
- #define US_FLIDX_READ10_WORKED 8 /* previous READ(10) succeeded */
-
-@@ -147,8 +148,8 @@ struct us_data {
- /* mutual exclusion and synchronization structures */
- struct completion cmnd_ready; /* to sleep thread on */
- struct completion notify; /* thread begin/end */
-- wait_queue_head_t delay_wait; /* wait during scan, reset */
-- struct completion scanning_done; /* wait for scan thread */
-+ wait_queue_head_t delay_wait; /* wait during reset */
-+ struct delayed_work scan_dwork; /* for async scanning */
-
- /* subdriver information */
- void *extra; /* Any extra data */
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0045-target-Allow-control-CDBs-with-data-1-page.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0045-target-Allow-control-CDBs-with-data-1-page.patch
deleted file mode 100644
index a9c90b5..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0045-target-Allow-control-CDBs-with-data-1-page.patch
+++ /dev/null
@@ -1,513 +0,0 @@
-From b4b86dd5611cd8f8c7d743c98862b5873b085135 Mon Sep 17 00:00:00 2001
-From: Andy Grover <agrover at redhat.com>
-Date: Mon, 16 Jan 2012 16:57:08 -0800
-Subject: [PATCH 45/72] target: Allow control CDBs with data > 1 page
-
-commit 4949314c7283ea4f9ade182ca599583b89f7edd6 upstream.
-
-We need to handle >1 page control cdbs, so extend the code to do a vmap
-if bigger than 1 page. It seems like kmap() is still preferable if just
-a page, fewer TLB shootdowns(?), so keep using that when possible.
-
-Rename function pair for their new scope.
-
-Signed-off-by: Andy Grover <agrover at redhat.com>
-Signed-off-by: Nicholas Bellinger <nab at linux-iscsi.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/target/target_core_alua.c | 8 +++---
- drivers/target/target_core_cdb.c | 28 ++++++++++----------
- drivers/target/target_core_device.c | 4 +--
- drivers/target/target_core_pr.c | 38 +++++++++++++--------------
- drivers/target/target_core_pscsi.c | 4 +--
- drivers/target/target_core_transport.c | 45 ++++++++++++++++++++++++--------
- include/target/target_core_base.h | 1 +
- include/target/target_core_transport.h | 4 +--
- 8 files changed, 78 insertions(+), 54 deletions(-)
-
-diff --git a/drivers/target/target_core_alua.c b/drivers/target/target_core_alua.c
-index 1dcbef4..1d24512 100644
---- a/drivers/target/target_core_alua.c
-+++ b/drivers/target/target_core_alua.c
-@@ -79,7 +79,7 @@ int target_emulate_report_target_port_groups(struct se_task *task)
- return -EINVAL;
- }
-
-- buf = transport_kmap_first_data_page(cmd);
-+ buf = transport_kmap_data_sg(cmd);
-
- spin_lock(&su_dev->t10_alua.tg_pt_gps_lock);
- list_for_each_entry(tg_pt_gp, &su_dev->t10_alua.tg_pt_gps_list,
-@@ -164,7 +164,7 @@ int target_emulate_report_target_port_groups(struct se_task *task)
- buf[2] = ((rd_len >> 8) & 0xff);
- buf[3] = (rd_len & 0xff);
-
-- transport_kunmap_first_data_page(cmd);
-+ transport_kunmap_data_sg(cmd);
-
- task->task_scsi_status = GOOD;
- transport_complete_task(task, 1);
-@@ -195,7 +195,7 @@ int target_emulate_set_target_port_groups(struct se_task *task)
- cmd->scsi_sense_reason = TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE;
- return -EINVAL;
- }
-- buf = transport_kmap_first_data_page(cmd);
-+ buf = transport_kmap_data_sg(cmd);
-
- /*
- * Determine if explict ALUA via SET_TARGET_PORT_GROUPS is allowed
-@@ -352,7 +352,7 @@ int target_emulate_set_target_port_groups(struct se_task *task)
- }
-
- out:
-- transport_kunmap_first_data_page(cmd);
-+ transport_kunmap_data_sg(cmd);
- task->task_scsi_status = GOOD;
- transport_complete_task(task, 1);
- return 0;
-diff --git a/drivers/target/target_core_cdb.c b/drivers/target/target_core_cdb.c
-index 251e48f..8facd33 100644
---- a/drivers/target/target_core_cdb.c
-+++ b/drivers/target/target_core_cdb.c
-@@ -82,7 +82,7 @@ target_emulate_inquiry_std(struct se_cmd *cmd)
- return -EINVAL;
- }
-
-- buf = transport_kmap_first_data_page(cmd);
-+ buf = transport_kmap_data_sg(cmd);
-
- if (dev == tpg->tpg_virt_lun0.lun_se_dev) {
- buf[0] = 0x3f; /* Not connected */
-@@ -135,7 +135,7 @@ target_emulate_inquiry_std(struct se_cmd *cmd)
- buf[4] = 31; /* Set additional length to 31 */
-
- out:
-- transport_kunmap_first_data_page(cmd);
-+ transport_kunmap_data_sg(cmd);
- return 0;
- }
-
-@@ -726,7 +726,7 @@ int target_emulate_inquiry(struct se_task *task)
- return -EINVAL;
- }
-
-- buf = transport_kmap_first_data_page(cmd);
-+ buf = transport_kmap_data_sg(cmd);
-
- buf[0] = dev->transport->get_device_type(dev);
-
-@@ -743,7 +743,7 @@ int target_emulate_inquiry(struct se_task *task)
- ret = -EINVAL;
-
- out_unmap:
-- transport_kunmap_first_data_page(cmd);
-+ transport_kunmap_data_sg(cmd);
- out:
- if (!ret) {
- task->task_scsi_status = GOOD;
-@@ -765,7 +765,7 @@ int target_emulate_readcapacity(struct se_task *task)
- else
- blocks = (u32)blocks_long;
-
-- buf = transport_kmap_first_data_page(cmd);
-+ buf = transport_kmap_data_sg(cmd);
-
- buf[0] = (blocks >> 24) & 0xff;
- buf[1] = (blocks >> 16) & 0xff;
-@@ -781,7 +781,7 @@ int target_emulate_readcapacity(struct se_task *task)
- if (dev->se_sub_dev->se_dev_attrib.emulate_tpu || dev->se_sub_dev->se_dev_attrib.emulate_tpws)
- put_unaligned_be32(0xFFFFFFFF, &buf[0]);
-
-- transport_kunmap_first_data_page(cmd);
-+ transport_kunmap_data_sg(cmd);
-
- task->task_scsi_status = GOOD;
- transport_complete_task(task, 1);
-@@ -795,7 +795,7 @@ int target_emulate_readcapacity_16(struct se_task *task)
- unsigned char *buf;
- unsigned long long blocks = dev->transport->get_blocks(dev);
-
-- buf = transport_kmap_first_data_page(cmd);
-+ buf = transport_kmap_data_sg(cmd);
-
- buf[0] = (blocks >> 56) & 0xff;
- buf[1] = (blocks >> 48) & 0xff;
-@@ -816,7 +816,7 @@ int target_emulate_readcapacity_16(struct se_task *task)
- if (dev->se_sub_dev->se_dev_attrib.emulate_tpu || dev->se_sub_dev->se_dev_attrib.emulate_tpws)
- buf[14] = 0x80;
-
-- transport_kunmap_first_data_page(cmd);
-+ transport_kunmap_data_sg(cmd);
-
- task->task_scsi_status = GOOD;
- transport_complete_task(task, 1);
-@@ -1029,9 +1029,9 @@ int target_emulate_modesense(struct se_task *task)
- offset = cmd->data_length;
- }
-
-- rbuf = transport_kmap_first_data_page(cmd);
-+ rbuf = transport_kmap_data_sg(cmd);
- memcpy(rbuf, buf, offset);
-- transport_kunmap_first_data_page(cmd);
-+ transport_kunmap_data_sg(cmd);
-
- task->task_scsi_status = GOOD;
- transport_complete_task(task, 1);
-@@ -1053,7 +1053,7 @@ int target_emulate_request_sense(struct se_task *task)
- return -ENOSYS;
- }
-
-- buf = transport_kmap_first_data_page(cmd);
-+ buf = transport_kmap_data_sg(cmd);
-
- if (!core_scsi3_ua_clear_for_request_sense(cmd, &ua_asc, &ua_ascq)) {
- /*
-@@ -1099,7 +1099,7 @@ int target_emulate_request_sense(struct se_task *task)
- }
-
- end:
-- transport_kunmap_first_data_page(cmd);
-+ transport_kunmap_data_sg(cmd);
- task->task_scsi_status = GOOD;
- transport_complete_task(task, 1);
- return 0;
-@@ -1133,7 +1133,7 @@ int target_emulate_unmap(struct se_task *task)
- dl = get_unaligned_be16(&cdb[0]);
- bd_dl = get_unaligned_be16(&cdb[2]);
-
-- buf = transport_kmap_first_data_page(cmd);
-+ buf = transport_kmap_data_sg(cmd);
-
- ptr = &buf[offset];
- pr_debug("UNMAP: Sub: %s Using dl: %hu bd_dl: %hu size: %hu"
-@@ -1157,7 +1157,7 @@ int target_emulate_unmap(struct se_task *task)
- }
-
- err:
-- transport_kunmap_first_data_page(cmd);
-+ transport_kunmap_data_sg(cmd);
- if (!ret) {
- task->task_scsi_status = GOOD;
- transport_complete_task(task, 1);
-diff --git a/drivers/target/target_core_device.c b/drivers/target/target_core_device.c
-index 9b86394..19f8aca 100644
---- a/drivers/target/target_core_device.c
-+++ b/drivers/target/target_core_device.c
-@@ -658,7 +658,7 @@ int target_report_luns(struct se_task *se_task)
- unsigned char *buf;
- u32 cdb_offset = 0, lun_count = 0, offset = 8, i;
-
-- buf = transport_kmap_first_data_page(se_cmd);
-+ buf = (unsigned char *) transport_kmap_data_sg(se_cmd);
-
- /*
- * If no struct se_session pointer is present, this struct se_cmd is
-@@ -696,7 +696,7 @@ int target_report_luns(struct se_task *se_task)
- * See SPC3 r07, page 159.
- */
- done:
-- transport_kunmap_first_data_page(se_cmd);
-+ transport_kunmap_data_sg(se_cmd);
- lun_count *= 8;
- buf[0] = ((lun_count >> 24) & 0xff);
- buf[1] = ((lun_count >> 16) & 0xff);
-diff --git a/drivers/target/target_core_pr.c b/drivers/target/target_core_pr.c
-index 9119d92..778c1a6 100644
---- a/drivers/target/target_core_pr.c
-+++ b/drivers/target/target_core_pr.c
-@@ -1538,7 +1538,7 @@ static int core_scsi3_decode_spec_i_port(
- tidh_new->dest_local_nexus = 1;
- list_add_tail(&tidh_new->dest_list, &tid_dest_list);
-
-- buf = transport_kmap_first_data_page(cmd);
-+ buf = transport_kmap_data_sg(cmd);
- /*
- * For a PERSISTENT RESERVE OUT specify initiator ports payload,
- * first extract TransportID Parameter Data Length, and make sure
-@@ -1789,7 +1789,7 @@ static int core_scsi3_decode_spec_i_port(
-
- }
-
-- transport_kunmap_first_data_page(cmd);
-+ transport_kunmap_data_sg(cmd);
-
- /*
- * Go ahead and create a registrations from tid_dest_list for the
-@@ -1837,7 +1837,7 @@ static int core_scsi3_decode_spec_i_port(
-
- return 0;
- out:
-- transport_kunmap_first_data_page(cmd);
-+ transport_kunmap_data_sg(cmd);
- /*
- * For the failure case, release everything from tid_dest_list
- * including *dest_pr_reg and the configfs dependances..
-@@ -3429,14 +3429,14 @@ static int core_scsi3_emulate_pro_register_and_move(
- * will be moved to for the TransportID containing SCSI initiator WWN
- * information.
- */
-- buf = transport_kmap_first_data_page(cmd);
-+ buf = transport_kmap_data_sg(cmd);
- rtpi = (buf[18] & 0xff) << 8;
- rtpi |= buf[19] & 0xff;
- tid_len = (buf[20] & 0xff) << 24;
- tid_len |= (buf[21] & 0xff) << 16;
- tid_len |= (buf[22] & 0xff) << 8;
- tid_len |= buf[23] & 0xff;
-- transport_kunmap_first_data_page(cmd);
-+ transport_kunmap_data_sg(cmd);
- buf = NULL;
-
- if ((tid_len + 24) != cmd->data_length) {
-@@ -3488,7 +3488,7 @@ static int core_scsi3_emulate_pro_register_and_move(
- return -EINVAL;
- }
-
-- buf = transport_kmap_first_data_page(cmd);
-+ buf = transport_kmap_data_sg(cmd);
- proto_ident = (buf[24] & 0x0f);
- #if 0
- pr_debug("SPC-3 PR REGISTER_AND_MOVE: Extracted Protocol Identifier:"
-@@ -3522,7 +3522,7 @@ static int core_scsi3_emulate_pro_register_and_move(
- goto out;
- }
-
-- transport_kunmap_first_data_page(cmd);
-+ transport_kunmap_data_sg(cmd);
- buf = NULL;
-
- pr_debug("SPC-3 PR [%s] Extracted initiator %s identifier: %s"
-@@ -3787,13 +3787,13 @@ after_iport_check:
- " REGISTER_AND_MOVE\n");
- }
-
-- transport_kunmap_first_data_page(cmd);
-+ transport_kunmap_data_sg(cmd);
-
- core_scsi3_put_pr_reg(dest_pr_reg);
- return 0;
- out:
- if (buf)
-- transport_kunmap_first_data_page(cmd);
-+ transport_kunmap_data_sg(cmd);
- if (dest_se_deve)
- core_scsi3_lunacl_undepend_item(dest_se_deve);
- if (dest_node_acl)
-@@ -3867,7 +3867,7 @@ int target_scsi3_emulate_pr_out(struct se_task *task)
- scope = (cdb[2] & 0xf0);
- type = (cdb[2] & 0x0f);
-
-- buf = transport_kmap_first_data_page(cmd);
-+ buf = transport_kmap_data_sg(cmd);
- /*
- * From PERSISTENT_RESERVE_OUT parameter list (payload)
- */
-@@ -3885,7 +3885,7 @@ int target_scsi3_emulate_pr_out(struct se_task *task)
- aptpl = (buf[17] & 0x01);
- unreg = (buf[17] & 0x02);
- }
-- transport_kunmap_first_data_page(cmd);
-+ transport_kunmap_data_sg(cmd);
- buf = NULL;
-
- /*
-@@ -3985,7 +3985,7 @@ static int core_scsi3_pri_read_keys(struct se_cmd *cmd)
- return -EINVAL;
- }
-
-- buf = transport_kmap_first_data_page(cmd);
-+ buf = transport_kmap_data_sg(cmd);
- buf[0] = ((su_dev->t10_pr.pr_generation >> 24) & 0xff);
- buf[1] = ((su_dev->t10_pr.pr_generation >> 16) & 0xff);
- buf[2] = ((su_dev->t10_pr.pr_generation >> 8) & 0xff);
-@@ -4019,7 +4019,7 @@ static int core_scsi3_pri_read_keys(struct se_cmd *cmd)
- buf[6] = ((add_len >> 8) & 0xff);
- buf[7] = (add_len & 0xff);
-
-- transport_kunmap_first_data_page(cmd);
-+ transport_kunmap_data_sg(cmd);
-
- return 0;
- }
-@@ -4045,7 +4045,7 @@ static int core_scsi3_pri_read_reservation(struct se_cmd *cmd)
- return -EINVAL;
- }
-
-- buf = transport_kmap_first_data_page(cmd);
-+ buf = transport_kmap_data_sg(cmd);
- buf[0] = ((su_dev->t10_pr.pr_generation >> 24) & 0xff);
- buf[1] = ((su_dev->t10_pr.pr_generation >> 16) & 0xff);
- buf[2] = ((su_dev->t10_pr.pr_generation >> 8) & 0xff);
-@@ -4104,7 +4104,7 @@ static int core_scsi3_pri_read_reservation(struct se_cmd *cmd)
-
- err:
- spin_unlock(&se_dev->dev_reservation_lock);
-- transport_kunmap_first_data_page(cmd);
-+ transport_kunmap_data_sg(cmd);
-
- return 0;
- }
-@@ -4128,7 +4128,7 @@ static int core_scsi3_pri_report_capabilities(struct se_cmd *cmd)
- return -EINVAL;
- }
-
-- buf = transport_kmap_first_data_page(cmd);
-+ buf = transport_kmap_data_sg(cmd);
-
- buf[0] = ((add_len << 8) & 0xff);
- buf[1] = (add_len & 0xff);
-@@ -4160,7 +4160,7 @@ static int core_scsi3_pri_report_capabilities(struct se_cmd *cmd)
- buf[4] |= 0x02; /* PR_TYPE_WRITE_EXCLUSIVE */
- buf[5] |= 0x01; /* PR_TYPE_EXCLUSIVE_ACCESS_ALLREG */
-
-- transport_kunmap_first_data_page(cmd);
-+ transport_kunmap_data_sg(cmd);
-
- return 0;
- }
-@@ -4190,7 +4190,7 @@ static int core_scsi3_pri_read_full_status(struct se_cmd *cmd)
- return -EINVAL;
- }
-
-- buf = transport_kmap_first_data_page(cmd);
-+ buf = transport_kmap_data_sg(cmd);
-
- buf[0] = ((su_dev->t10_pr.pr_generation >> 24) & 0xff);
- buf[1] = ((su_dev->t10_pr.pr_generation >> 16) & 0xff);
-@@ -4311,7 +4311,7 @@ static int core_scsi3_pri_read_full_status(struct se_cmd *cmd)
- buf[6] = ((add_len >> 8) & 0xff);
- buf[7] = (add_len & 0xff);
-
-- transport_kunmap_first_data_page(cmd);
-+ transport_kunmap_data_sg(cmd);
-
- return 0;
- }
-diff --git a/drivers/target/target_core_pscsi.c b/drivers/target/target_core_pscsi.c
-index 8b15e56..5c12137 100644
---- a/drivers/target/target_core_pscsi.c
-+++ b/drivers/target/target_core_pscsi.c
-@@ -695,7 +695,7 @@ static int pscsi_transport_complete(struct se_task *task)
-
- if (task->task_se_cmd->se_deve->lun_flags &
- TRANSPORT_LUNFLAGS_READ_ONLY) {
-- unsigned char *buf = transport_kmap_first_data_page(task->task_se_cmd);
-+ unsigned char *buf = transport_kmap_data_sg(task->task_se_cmd);
-
- if (cdb[0] == MODE_SENSE_10) {
- if (!(buf[3] & 0x80))
-@@ -705,7 +705,7 @@ static int pscsi_transport_complete(struct se_task *task)
- buf[2] |= 0x80;
- }
-
-- transport_kunmap_first_data_page(task->task_se_cmd);
-+ transport_kunmap_data_sg(task->task_se_cmd);
- }
- }
- after_mode_sense:
-diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c
-index 861628e..e4ddb93 100644
---- a/drivers/target/target_core_transport.c
-+++ b/drivers/target/target_core_transport.c
-@@ -3053,11 +3053,6 @@ static int transport_generic_cmd_sequencer(
- (cmd->se_cmd_flags & SCF_SCSI_DATA_SG_IO_CDB)))
- goto out_unsupported_cdb;
-
-- /* Let's limit control cdbs to a page, for simplicity's sake. */
-- if ((cmd->se_cmd_flags & SCF_SCSI_CONTROL_SG_IO_CDB) &&
-- size > PAGE_SIZE)
-- goto out_invalid_cdb_field;
--
- transport_set_supported_SAM_opcode(cmd);
- return ret;
-
-@@ -3435,9 +3430,11 @@ int transport_generic_map_mem_to_cmd(
- }
- EXPORT_SYMBOL(transport_generic_map_mem_to_cmd);
-
--void *transport_kmap_first_data_page(struct se_cmd *cmd)
-+void *transport_kmap_data_sg(struct se_cmd *cmd)
- {
- struct scatterlist *sg = cmd->t_data_sg;
-+ struct page **pages;
-+ int i;
-
- BUG_ON(!sg);
- /*
-@@ -3445,15 +3442,41 @@ void *transport_kmap_first_data_page(struct se_cmd *cmd)
- * tcm_loop who may be using a contig buffer from the SCSI midlayer for
- * control CDBs passed as SGLs via transport_generic_map_mem_to_cmd()
- */
-- return kmap(sg_page(sg)) + sg->offset;
-+ if (!cmd->t_data_nents)
-+ return NULL;
-+ else if (cmd->t_data_nents == 1)
-+ return kmap(sg_page(sg)) + sg->offset;
-+
-+ /* >1 page. use vmap */
-+ pages = kmalloc(sizeof(*pages) * cmd->t_data_nents, GFP_KERNEL);
-+ if (!pages)
-+ return NULL;
-+
-+ /* convert sg[] to pages[] */
-+ for_each_sg(cmd->t_data_sg, sg, cmd->t_data_nents, i) {
-+ pages[i] = sg_page(sg);
-+ }
-+
-+ cmd->t_data_vmap = vmap(pages, cmd->t_data_nents, VM_MAP, PAGE_KERNEL);
-+ kfree(pages);
-+ if (!cmd->t_data_vmap)
-+ return NULL;
-+
-+ return cmd->t_data_vmap + cmd->t_data_sg[0].offset;
- }
--EXPORT_SYMBOL(transport_kmap_first_data_page);
-+EXPORT_SYMBOL(transport_kmap_data_sg);
-
--void transport_kunmap_first_data_page(struct se_cmd *cmd)
-+void transport_kunmap_data_sg(struct se_cmd *cmd)
- {
-- kunmap(sg_page(cmd->t_data_sg));
-+ if (!cmd->t_data_nents)
-+ return;
-+ else if (cmd->t_data_nents == 1)
-+ kunmap(sg_page(cmd->t_data_sg));
-+
-+ vunmap(cmd->t_data_vmap);
-+ cmd->t_data_vmap = NULL;
- }
--EXPORT_SYMBOL(transport_kunmap_first_data_page);
-+EXPORT_SYMBOL(transport_kunmap_data_sg);
-
- static int
- transport_generic_get_mem(struct se_cmd *cmd)
-diff --git a/include/target/target_core_base.h b/include/target/target_core_base.h
-index a79886c..94bbec3 100644
---- a/include/target/target_core_base.h
-+++ b/include/target/target_core_base.h
-@@ -486,6 +486,7 @@ struct se_cmd {
-
- struct scatterlist *t_data_sg;
- unsigned int t_data_nents;
-+ void *t_data_vmap;
- struct scatterlist *t_bidi_data_sg;
- unsigned int t_bidi_data_nents;
-
-diff --git a/include/target/target_core_transport.h b/include/target/target_core_transport.h
-index dac4f2d..72751e8 100644
---- a/include/target/target_core_transport.h
-+++ b/include/target/target_core_transport.h
-@@ -129,8 +129,8 @@ extern void transport_init_se_cmd(struct se_cmd *,
- struct target_core_fabric_ops *,
- struct se_session *, u32, int, int,
- unsigned char *);
--void *transport_kmap_first_data_page(struct se_cmd *cmd);
--void transport_kunmap_first_data_page(struct se_cmd *cmd);
-+void *transport_kmap_data_sg(struct se_cmd *);
-+void transport_kunmap_data_sg(struct se_cmd *);
- extern int transport_generic_allocate_tasks(struct se_cmd *, unsigned char *);
- extern int transport_handle_cdb_direct(struct se_cmd *);
- extern int transport_generic_handle_cdb_map(struct se_cmd *);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0046-ASoC-wm8962-Fix-sidetone-enumeration-texts.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0046-ASoC-wm8962-Fix-sidetone-enumeration-texts.patch
deleted file mode 100644
index 2f340cc..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0046-ASoC-wm8962-Fix-sidetone-enumeration-texts.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 5e37abd88b778975e31615fb27be99b0de88b9c9 Mon Sep 17 00:00:00 2001
-From: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Date: Mon, 13 Feb 2012 22:00:47 -0800
-Subject: [PATCH 46/72] ASoC: wm8962: Fix sidetone enumeration texts
-
-commit 31794bc37bf2db84f085da52b72bfba65739b2d2 upstream.
-
-The sidetone enumeration texts have left and right swapped.
-
-Signed-off-by: Mark Brown <broonie at opensource.wolfsonmicro.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- sound/soc/codecs/wm8962.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/sound/soc/codecs/wm8962.c b/sound/soc/codecs/wm8962.c
-index d795294..07dd7eb 100644
---- a/sound/soc/codecs/wm8962.c
-+++ b/sound/soc/codecs/wm8962.c
-@@ -2559,7 +2559,7 @@ static int dsp2_event(struct snd_soc_dapm_widget *w,
- return 0;
- }
-
--static const char *st_text[] = { "None", "Right", "Left" };
-+static const char *st_text[] = { "None", "Left", "Right" };
-
- static const struct soc_enum str_enum =
- SOC_ENUM_SINGLE(WM8962_DAC_DSP_MIXING_1, 2, 3, st_text);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0047-ALSA-hda-realtek-Fix-overflow-of-vol-sw-check-bitmap.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0047-ALSA-hda-realtek-Fix-overflow-of-vol-sw-check-bitmap.patch
deleted file mode 100644
index bdca6d6..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0047-ALSA-hda-realtek-Fix-overflow-of-vol-sw-check-bitmap.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From 9cb30168f9d3a57f148f342b0baa0de775b38862 Mon Sep 17 00:00:00 2001
-From: Takashi Iwai <tiwai at suse.de>
-Date: Thu, 16 Feb 2012 16:38:07 +0100
-Subject: [PATCH 47/72] ALSA: hda/realtek - Fix overflow of vol/sw check
- bitmap
-
-commit c14c95f62ecb8710af14ae0d48e01991b70bb6f4 upstream.
-
-The bitmap introduced in the commit [527e4d73: ALSA: hda/realtek - Fix
-missing volume controls with ALC260] is too narrow for some codecs,
-which may have more NIDs than 0x20, thus it may overflow the bitmap
-array on them.
-
-Just double the number to cover all and also add a sanity-check code
-to be safer.
-
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- sound/pci/hda/patch_realtek.c | 11 ++++++++---
- 1 file changed, 8 insertions(+), 3 deletions(-)
-
-diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
-index 9c197d4..ceda0ac 100644
---- a/sound/pci/hda/patch_realtek.c
-+++ b/sound/pci/hda/patch_realtek.c
-@@ -79,6 +79,8 @@ enum {
- ALC_AUTOMUTE_MIXER, /* mute/unmute mixer widget AMP */
- };
-
-+#define MAX_VOL_NIDS 0x40
-+
- struct alc_spec {
- /* codec parameterization */
- const struct snd_kcontrol_new *mixers[5]; /* mixer arrays */
-@@ -117,8 +119,8 @@ struct alc_spec {
- const hda_nid_t *capsrc_nids;
- hda_nid_t dig_in_nid; /* digital-in NID; optional */
- hda_nid_t mixer_nid; /* analog-mixer NID */
-- DECLARE_BITMAP(vol_ctls, 0x20 << 1);
-- DECLARE_BITMAP(sw_ctls, 0x20 << 1);
-+ DECLARE_BITMAP(vol_ctls, MAX_VOL_NIDS << 1);
-+ DECLARE_BITMAP(sw_ctls, MAX_VOL_NIDS << 1);
-
- /* capture setup for dynamic dual-adc switch */
- hda_nid_t cur_adc;
-@@ -3068,7 +3070,10 @@ static int alc_auto_fill_dac_nids(struct hda_codec *codec)
- static inline unsigned int get_ctl_pos(unsigned int data)
- {
- hda_nid_t nid = get_amp_nid_(data);
-- unsigned int dir = get_amp_direction_(data);
-+ unsigned int dir;
-+ if (snd_BUG_ON(nid >= MAX_VOL_NIDS))
-+ return 0;
-+ dir = get_amp_direction_(data);
- return (nid << 1) | dir;
- }
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0048-ALSA-hda-realtek-Fix-surround-output-regression-on-A.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0048-ALSA-hda-realtek-Fix-surround-output-regression-on-A.patch
deleted file mode 100644
index 45ba5e9..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0048-ALSA-hda-realtek-Fix-surround-output-regression-on-A.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From a11dc0be919ff4e94f9c6198ab6c9c5162f3d5fd Mon Sep 17 00:00:00 2001
-From: Takashi Iwai <tiwai at suse.de>
-Date: Fri, 17 Feb 2012 10:12:38 +0100
-Subject: [PATCH 48/72] ALSA: hda/realtek - Fix surround output regression on
- Acer Aspire 5935
-
-commit ef8d60fb79614a86a82720dc2402631dbcafb315 upstream.
-
-The previous fix for the speaker on Acer Aspire 59135 introduced
-another problem for surround outputs. It changed the connections on
-the line-in/mic pins for limiting the routes, but it left the modified
-connections. Thus wrong connection indices were written when set to
-4ch or 6ch mode.
-
-This patch fixes it by restoring the right connections just after
-parsing the tree but before the initialization.
-
-Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=42740
-
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- sound/pci/hda/patch_realtek.c | 8 ++++++++
- 1 file changed, 8 insertions(+)
-
-diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
-index ceda0ac..c4c8d78 100644
---- a/sound/pci/hda/patch_realtek.c
-+++ b/sound/pci/hda/patch_realtek.c
-@@ -4229,12 +4229,20 @@ static void alc889_fixup_dac_route(struct hda_codec *codec,
- const struct alc_fixup *fix, int action)
- {
- if (action == ALC_FIXUP_ACT_PRE_PROBE) {
-+ /* fake the connections during parsing the tree */
- hda_nid_t conn1[2] = { 0x0c, 0x0d };
- hda_nid_t conn2[2] = { 0x0e, 0x0f };
- snd_hda_override_conn_list(codec, 0x14, 2, conn1);
- snd_hda_override_conn_list(codec, 0x15, 2, conn1);
- snd_hda_override_conn_list(codec, 0x18, 2, conn2);
- snd_hda_override_conn_list(codec, 0x1a, 2, conn2);
-+ } else if (action == ALC_FIXUP_ACT_PROBE) {
-+ /* restore the connections */
-+ hda_nid_t conn[5] = { 0x0c, 0x0d, 0x0e, 0x0f, 0x26 };
-+ snd_hda_override_conn_list(codec, 0x14, 5, conn);
-+ snd_hda_override_conn_list(codec, 0x15, 5, conn);
-+ snd_hda_override_conn_list(codec, 0x18, 5, conn);
-+ snd_hda_override_conn_list(codec, 0x1a, 5, conn);
- }
- }
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0049-NOMMU-Lock-i_mmap_mutex-for-access-to-the-VMA-prio-l.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0049-NOMMU-Lock-i_mmap_mutex-for-access-to-the-VMA-prio-l.patch
deleted file mode 100644
index a818525..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0049-NOMMU-Lock-i_mmap_mutex-for-access-to-the-VMA-prio-l.patch
+++ /dev/null
@@ -1,76 +0,0 @@
-From 79d644deb3492752ab226ff7c652fecbf89120b0 Mon Sep 17 00:00:00 2001
-From: David Howells <dhowells at redhat.com>
-Date: Thu, 23 Feb 2012 13:50:35 +0000
-Subject: [PATCH 49/72] NOMMU: Lock i_mmap_mutex for access to the VMA prio
- list
-
-commit 918e556ec214ed2f584e4cac56d7b29e4bb6bf27 upstream.
-
-Lock i_mmap_mutex for access to the VMA prio list to prevent concurrent
-access. Currently, certain parts of the mmap handling are protected by
-the region mutex, but not all.
-
-Reported-by: Al Viro <viro at zeniv.linux.org.uk>
-Signed-off-by: David Howells <dhowells at redhat.com>
-Acked-by: Al Viro <viro at zeniv.linux.org.uk>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- mm/nommu.c | 7 +++++++
- 1 file changed, 7 insertions(+)
-
-diff --git a/mm/nommu.c b/mm/nommu.c
-index b982290..ee7e57e 100644
---- a/mm/nommu.c
-+++ b/mm/nommu.c
-@@ -696,9 +696,11 @@ static void add_vma_to_mm(struct mm_struct *mm, struct vm_area_struct *vma)
- if (vma->vm_file) {
- mapping = vma->vm_file->f_mapping;
-
-+ mutex_lock(&mapping->i_mmap_mutex);
- flush_dcache_mmap_lock(mapping);
- vma_prio_tree_insert(vma, &mapping->i_mmap);
- flush_dcache_mmap_unlock(mapping);
-+ mutex_unlock(&mapping->i_mmap_mutex);
- }
-
- /* add the VMA to the tree */
-@@ -760,9 +762,11 @@ static void delete_vma_from_mm(struct vm_area_struct *vma)
- if (vma->vm_file) {
- mapping = vma->vm_file->f_mapping;
-
-+ mutex_lock(&mapping->i_mmap_mutex);
- flush_dcache_mmap_lock(mapping);
- vma_prio_tree_remove(vma, &mapping->i_mmap);
- flush_dcache_mmap_unlock(mapping);
-+ mutex_unlock(&mapping->i_mmap_mutex);
- }
-
- /* remove from the MM's tree and list */
-@@ -2052,6 +2056,7 @@ int nommu_shrink_inode_mappings(struct inode *inode, size_t size,
- high = (size + PAGE_SIZE - 1) >> PAGE_SHIFT;
-
- down_write(&nommu_region_sem);
-+ mutex_lock(&inode->i_mapping->i_mmap_mutex);
-
- /* search for VMAs that fall within the dead zone */
- vma_prio_tree_foreach(vma, &iter, &inode->i_mapping->i_mmap,
-@@ -2059,6 +2064,7 @@ int nommu_shrink_inode_mappings(struct inode *inode, size_t size,
- /* found one - only interested if it's shared out of the page
- * cache */
- if (vma->vm_flags & VM_SHARED) {
-+ mutex_unlock(&inode->i_mapping->i_mmap_mutex);
- up_write(&nommu_region_sem);
- return -ETXTBSY; /* not quite true, but near enough */
- }
-@@ -2086,6 +2092,7 @@ int nommu_shrink_inode_mappings(struct inode *inode, size_t size,
- }
- }
-
-+ mutex_unlock(&inode->i_mapping->i_mmap_mutex);
- up_write(&nommu_region_sem);
- return 0;
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0050-hwmon-max6639-Fix-FAN_FROM_REG-calculation.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0050-hwmon-max6639-Fix-FAN_FROM_REG-calculation.patch
deleted file mode 100644
index 99b36d6..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0050-hwmon-max6639-Fix-FAN_FROM_REG-calculation.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 9d871239abc5c0611964bb4f14223399e43e2a21 Mon Sep 17 00:00:00 2001
-From: Chris D Schimp <silverchris at gmail.com>
-Date: Mon, 20 Feb 2012 16:59:24 -0500
-Subject: [PATCH 50/72] hwmon: (max6639) Fix FAN_FROM_REG calculation
-
-commit b63d97a36edb1aecf8c13e5f5783feff4d64c24b upstream.
-
-RPM calculation from tachometer value does not depend on PPR.
-Also, do not report negative RPM values.
-
-Signed-off-by: Chris D Schimp <silverchris at gmail.com>
-[guenter.roeck at ericsson.com: do not report negative RPM values]
-Signed-off-by: Guenter Roeck <guenter.roeck at ericsson.com>
-Acked-by: Roland Stigge <stigge at antcom.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/hwmon/max6639.c | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/hwmon/max6639.c b/drivers/hwmon/max6639.c
-index f20d997..1b844db 100644
---- a/drivers/hwmon/max6639.c
-+++ b/drivers/hwmon/max6639.c
-@@ -72,8 +72,8 @@ static unsigned short normal_i2c[] = { 0x2c, 0x2e, 0x2f, I2C_CLIENT_END };
-
- static const int rpm_ranges[] = { 2000, 4000, 8000, 16000 };
-
--#define FAN_FROM_REG(val, div, rpm_range) ((val) == 0 ? -1 : \
-- (val) == 255 ? 0 : (rpm_ranges[rpm_range] * 30) / ((div + 1) * (val)))
-+#define FAN_FROM_REG(val, rpm_range) ((val) == 0 || (val) == 255 ? \
-+ 0 : (rpm_ranges[rpm_range] * 30) / (val))
- #define TEMP_LIMIT_TO_REG(val) SENSORS_LIMIT((val) / 1000, 0, 255)
-
- /*
-@@ -333,7 +333,7 @@ static ssize_t show_fan_input(struct device *dev,
- return PTR_ERR(data);
-
- return sprintf(buf, "%d\n", FAN_FROM_REG(data->fan[attr->index],
-- data->ppr, data->rpm_range));
-+ data->rpm_range));
- }
-
- static ssize_t show_alarm(struct device *dev,
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0051-hwmon-max6639-Fix-PPR-register-initialization-to-set.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0051-hwmon-max6639-Fix-PPR-register-initialization-to-set.patch
deleted file mode 100644
index ebd9733..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0051-hwmon-max6639-Fix-PPR-register-initialization-to-set.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-From b3876ec027bbbab2cf2b384c12ca6ec1b86c371b Mon Sep 17 00:00:00 2001
-From: Chris D Schimp <silverchris at gmail.com>
-Date: Mon, 20 Feb 2012 17:44:59 -0500
-Subject: [PATCH 51/72] hwmon: (max6639) Fix PPR register initialization to
- set both channels
-
-commit 2f2da1ac0ba5b6cc6e1957c4da5ff20e67d8442b upstream.
-
-Initialize PPR register for both channels, and set correct PPR register bits.
-Also remove unnecessary variable initializations.
-
-Signed-off-by: Chris D Schimp <silverchris at gmail.com>
-[guenter.roeck at ericsson.com: Merged two patches into one]
-Signed-off-by: Guenter Roeck <guenter.roeck at ericsson.com>
-Acked-by: Roland Stigge <stigge at antcom.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/hwmon/max6639.c | 16 +++++++++-------
- 1 file changed, 9 insertions(+), 7 deletions(-)
-
-diff --git a/drivers/hwmon/max6639.c b/drivers/hwmon/max6639.c
-index 1b844db..8c3df04 100644
---- a/drivers/hwmon/max6639.c
-+++ b/drivers/hwmon/max6639.c
-@@ -429,9 +429,9 @@ static int max6639_init_client(struct i2c_client *client)
- struct max6639_data *data = i2c_get_clientdata(client);
- struct max6639_platform_data *max6639_info =
- client->dev.platform_data;
-- int i = 0;
-+ int i;
- int rpm_range = 1; /* default: 4000 RPM */
-- int err = 0;
-+ int err;
-
- /* Reset chip to default values, see below for GCONFIG setup */
- err = i2c_smbus_write_byte_data(client, MAX6639_REG_GCONFIG,
-@@ -446,11 +446,6 @@ static int max6639_init_client(struct i2c_client *client)
- else
- data->ppr = 2;
- data->ppr -= 1;
-- err = i2c_smbus_write_byte_data(client,
-- MAX6639_REG_FAN_PPR(i),
-- data->ppr << 5);
-- if (err)
-- goto exit;
-
- if (max6639_info)
- rpm_range = rpm_range_to_reg(max6639_info->rpm_range);
-@@ -458,6 +453,13 @@ static int max6639_init_client(struct i2c_client *client)
-
- for (i = 0; i < 2; i++) {
-
-+ /* Set Fan pulse per revolution */
-+ err = i2c_smbus_write_byte_data(client,
-+ MAX6639_REG_FAN_PPR(i),
-+ data->ppr << 6);
-+ if (err)
-+ goto exit;
-+
- /* Fans config PWM, RPM */
- err = i2c_smbus_write_byte_data(client,
- MAX6639_REG_FAN_CONFIG1(i),
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0052-hwmon-ads1015-Fix-file-leak-in-probe-function.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0052-hwmon-ads1015-Fix-file-leak-in-probe-function.patch
deleted file mode 100644
index 8f77778..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0052-hwmon-ads1015-Fix-file-leak-in-probe-function.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 02a1b3c427ee77fbfb9f7444d9d6bf26b6147f38 Mon Sep 17 00:00:00 2001
-From: Guenter Roeck <guenter.roeck at ericsson.com>
-Date: Wed, 22 Feb 2012 08:13:52 -0800
-Subject: [PATCH 52/72] hwmon: (ads1015) Fix file leak in probe function
-
-commit 363434b5dc352464ac7601547891e5fc9105f124 upstream.
-
-An error while creating sysfs attribute files in the driver's probe function
-results in an error abort, but already created files are not removed. This patch
-fixes the problem.
-
-Signed-off-by: Guenter Roeck <guenter.roeck at ericsson.com>
-Cc: Dirk Eibach <eibach at gdsys.de>
-Acked-by: Jean Delvare <khali at linux-fr.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/hwmon/ads1015.c | 3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
-
-diff --git a/drivers/hwmon/ads1015.c b/drivers/hwmon/ads1015.c
-index eedca3c..dd87ae9 100644
---- a/drivers/hwmon/ads1015.c
-+++ b/drivers/hwmon/ads1015.c
-@@ -271,7 +271,7 @@ static int ads1015_probe(struct i2c_client *client,
- continue;
- err = device_create_file(&client->dev, &ads1015_in[k].dev_attr);
- if (err)
-- goto exit_free;
-+ goto exit_remove;
- }
-
- data->hwmon_dev = hwmon_device_register(&client->dev);
-@@ -285,7 +285,6 @@ static int ads1015_probe(struct i2c_client *client,
- exit_remove:
- for (k = 0; k < ADS1015_CHANNELS; ++k)
- device_remove_file(&client->dev, &ads1015_in[k].dev_attr);
--exit_free:
- kfree(data);
- exit:
- return err;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0053-ARM-omap-fix-oops-in-drivers-video-omap2-dss-dpi.c.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0053-ARM-omap-fix-oops-in-drivers-video-omap2-dss-dpi.c.patch
deleted file mode 100644
index a9d01c6..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0053-ARM-omap-fix-oops-in-drivers-video-omap2-dss-dpi.c.patch
+++ /dev/null
@@ -1,113 +0,0 @@
-From 854088243adf50e5af954545b6eb26185db987dc Mon Sep 17 00:00:00 2001
-From: Russell King <rmk+kernel at arm.linux.org.uk>
-Date: Tue, 7 Feb 2012 09:44:55 +0000
-Subject: [PATCH 53/72] ARM: omap: fix oops in drivers/video/omap2/dss/dpi.c
-
-commit 40410715715178ec196314dd0c19150c06901f80 upstream.
-
-When a PMIC is not found, this driver is unable to obtain its
-'vdds_dsi_reg' regulator. Even through its initialization function
-fails, other code still calls its enable function, which fails to
-check whether it has this regulator before asking for it to be enabled.
-
-This fixes the oops, however a better fix would be to sort out the
-upper layers to prevent them calling into a module which failed to
-initialize.
-
-Unable to handle kernel NULL pointer dereference at virtual address 00000038
-pgd = c0004000
-[00000038] *pgd=00000000
-Internal error: Oops: 5 [#1] PREEMPT
-Modules linked in:
-CPU: 0 Not tainted (3.3.0-rc2+ #228)
-PC is at regulator_enable+0x10/0x70
-LR is at omapdss_dpi_display_enable+0x54/0x15c
-pc : [<c01b9a08>] lr : [<c01af994>] psr: 60000013
-sp : c181fd90 ip : c181fdb0 fp : c181fdac
-r10: c042eff0 r9 : 00000060 r8 : c044a164
-r7 : c042c0e4 r6 : c042bd60 r5 : 00000000 r4 : c042bd60
-r3 : c084de48 r2 : c181e000 r1 : c042bd60 r0 : 00000000
-Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment kernel
-Control: 10c5387d Table: 80004019 DAC: 00000015
-Process swapper (pid: 1, stack limit = 0xc181e2e8)
-Stack: (0xc181fd90 to 0xc1820000)
-fd80: c001754c c042bd60 00000000 c042bd60
-fda0: c181fdcc c181fdb0 c01af994 c01b9a04 c0016104 c042bd60 c042bd60 c044a338
-fdc0: c181fdec c181fdd0 c01b5ed0 c01af94c c042bd60 c042bd60 c1aa8000 c1aa8a0c
-fde0: c181fe04 c181fdf0 c01b5f54 c01b5ea8 c02fc18c c042bd60 c181fe3c c181fe08
-fe00: c01b2a18 c01b5f48 c01aed14 c02fc160 c01df8ec 00000002 c042bd60 00000003
-fe20: c042bd60 c1aa8000 c1aa8a0c c042eff8 c181fe84 c181fe40 c01b3874 c01b29fc
-fe40: c042eff8 00000000 c042f000 c0449db8 c044ed78 00000000 c181fe74 c042eff8
-fe60: c042eff8 c0449db8 c0449db8 c044ed78 00000000 00000000 c181fe94 c181fe88
-fe80: c01e452c c01b35e8 c181feb4 c181fe98 c01e2fdc c01e4518 c042eff8 c0449db8
-fea0: c0449db8 c181fef0 c181fecc c181feb8 c01e3104 c01e2f48 c042eff8 c042f02c
-fec0: c181feec c181fed0 c01e3190 c01e30c0 c01e311c 00000000 c01e311c c0449db8
-fee0: c181ff14 c181fef0 c01e1998 c01e3128 c18330a8 c1892290 c04165e8 c0449db8
-ff00: c0449db8 c1ab60c0 c181ff24 c181ff18 c01e2e28 c01e194c c181ff54 c181ff28
-ff20: c01e2218 c01e2e14 c039afed c181ff38 c04165e8 c041660c c0449db8 00000013
-ff40: 00000000 c03ffdb8 c181ff7c c181ff58 c01e384c c01e217c c181ff7c c04165e8
-ff60: c041660c c003a37c 00000013 00000000 c181ff8c c181ff80 c01e488c c01e3790
-ff80: c181ff9c c181ff90 c03ffdcc c01e484c c181ffdc c181ffa0 c0008798 c03ffdc4
-ffa0: c181ffc4 c181ffb0 c0056440 c0187810 c003a37c c04165e8 c041660c c003a37c
-ffc0: 00000013 00000000 00000000 00000000 c181fff4 c181ffe0 c03ea284 c0008708
-ffe0: 00000000 c03ea208 00000000 c181fff8 c003a37c c03ea214 1073cec0 01f7ee08
-Backtrace:
-[<c01b99f8>] (regulator_enable+0x0/0x70) from [<c01af994>] (omapdss_dpi_display_enable+0x54/0x15c)
- r6:c042bd60 r5:00000000 r4:c042bd60
-[<c01af940>] (omapdss_dpi_display_enable+0x0/0x15c) from [<c01b5ed0>] (generic_dpi_panel_power_on+0x34/0x78)
- r6:c044a338 r5:c042bd60 r4:c042bd60
-[<c01b5e9c>] (generic_dpi_panel_power_on+0x0/0x78) from [<c01b5f54>] (generic_dpi_panel_enable+0x18/0x28)
- r7:c1aa8a0c r6:c1aa8000 r5:c042bd60 r4:c042bd60
-[<c01b5f3c>] (generic_dpi_panel_enable+0x0/0x28) from [<c01b2a18>] (omapfb_init_display+0x28/0x150)
- r4:c042bd60
-[<c01b29f0>] (omapfb_init_display+0x0/0x150) from [<c01b3874>] (omapfb_probe+0x298/0x318)
- r8:c042eff8 r7:c1aa8a0c r6:c1aa8000 r5:c042bd60 r4:00000003
-[<c01b35dc>] (omapfb_probe+0x0/0x318) from [<c01e452c>] (platform_drv_probe+0x20/0x24)
-[<c01e450c>] (platform_drv_probe+0x0/0x24) from [<c01e2fdc>] (really_probe+0xa0/0x178)
-[<c01e2f3c>] (really_probe+0x0/0x178) from [<c01e3104>] (driver_probe_device+0x50/0x68)
- r7:c181fef0 r6:c0449db8 r5:c0449db8 r4:c042eff8
-[<c01e30b4>] (driver_probe_device+0x0/0x68) from [<c01e3190>] (__driver_attach+0x74/0x98)
- r5:c042f02c r4:c042eff8
-[<c01e311c>] (__driver_attach+0x0/0x98) from [<c01e1998>] (bus_for_each_dev+0x58/0x98)
- r6:c0449db8 r5:c01e311c r4:00000000
-[<c01e1940>] (bus_for_each_dev+0x0/0x98) from [<c01e2e28>] (driver_attach+0x20/0x28)
- r7:c1ab60c0 r6:c0449db8 r5:c0449db8 r4:c04165e8
-[<c01e2e08>] (driver_attach+0x0/0x28) from [<c01e2218>] (bus_add_driver+0xa8/0x22c)
-[<c01e2170>] (bus_add_driver+0x0/0x22c) from [<c01e384c>] (driver_register+0xc8/0x154)
-[<c01e3784>] (driver_register+0x0/0x154) from [<c01e488c>] (platform_driver_register+0x4c/0x60)
- r8:00000000 r7:00000013 r6:c003a37c r5:c041660c r4:c04165e8
-[<c01e4840>] (platform_driver_register+0x0/0x60) from [<c03ffdcc>] (omapfb_init+0x14/0x34)
-[<c03ffdb8>] (omapfb_init+0x0/0x34) from [<c0008798>] (do_one_initcall+0x9c/0x164)
-[<c00086fc>] (do_one_initcall+0x0/0x164) from [<c03ea284>] (kernel_init+0x7c/0x120)
-[<c03ea208>] (kernel_init+0x0/0x120) from [<c003a37c>] (do_exit+0x0/0x2d8)
- r5:c03ea208 r4:00000000
-Code: e1a0c00d e92dd870 e24cb004 e24dd004 (e5906038)
----[ end trace 9e2474c2e193b223 ]---
-
-Acked-by: Tony Lindgren <tony at atomide.com>
-Signed-off-by: Russell King <rmk+kernel at arm.linux.org.uk>
-Cc: Igor Grinberg <grinberg at compulab.co.il>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/video/omap2/dss/dpi.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/drivers/video/omap2/dss/dpi.c b/drivers/video/omap2/dss/dpi.c
-index 976ac23..c04205c 100644
---- a/drivers/video/omap2/dss/dpi.c
-+++ b/drivers/video/omap2/dss/dpi.c
-@@ -180,6 +180,11 @@ int omapdss_dpi_display_enable(struct omap_dss_device *dssdev)
- {
- int r;
-
-+ if (cpu_is_omap34xx() && !dpi.vdds_dsi_reg) {
-+ DSSERR("no VDSS_DSI regulator\n");
-+ return -ENODEV;
-+ }
-+
- if (dssdev->manager == NULL) {
- DSSERR("failed to enable display: no manager\n");
- return -ENODEV;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0054-x86-amd-Fix-L1i-and-L2-cache-sharing-information-for.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0054-x86-amd-Fix-L1i-and-L2-cache-sharing-information-for.patch
deleted file mode 100644
index 2deb483..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0054-x86-amd-Fix-L1i-and-L2-cache-sharing-information-for.patch
+++ /dev/null
@@ -1,100 +0,0 @@
-From 4b28bc6793780be8553a9b92da9aa2288e112fd2 Mon Sep 17 00:00:00 2001
-From: Andreas Herrmann <andreas.herrmann3 at amd.com>
-Date: Wed, 8 Feb 2012 20:52:29 +0100
-Subject: [PATCH 54/72] x86/amd: Fix L1i and L2 cache sharing information for
- AMD family 15h processors
-
-commit 32c3233885eb10ac9cb9410f2f8cd64b8df2b2a1 upstream.
-
-For L1 instruction cache and L2 cache the shared CPU information
-is wrong. On current AMD family 15h CPUs those caches are shared
-between both cores of a compute unit.
-
-This fixes https://bugzilla.kernel.org/show_bug.cgi?id=42607
-
-Signed-off-by: Andreas Herrmann <andreas.herrmann3 at amd.com>
-Cc: Petkov Borislav <Borislav.Petkov at amd.com>
-Cc: Dave Jones <davej at redhat.com>
-Link: http://lkml.kernel.org/r/20120208195229.GA17523@alberich.amd.com
-Signed-off-by: Ingo Molnar <mingo at elte.hu>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- arch/x86/kernel/cpu/intel_cacheinfo.c | 44 +++++++++++++++++++++++++++------
- 1 file changed, 36 insertions(+), 8 deletions(-)
-
-diff --git a/arch/x86/kernel/cpu/intel_cacheinfo.c b/arch/x86/kernel/cpu/intel_cacheinfo.c
-index a3b0811..0e89635 100644
---- a/arch/x86/kernel/cpu/intel_cacheinfo.c
-+++ b/arch/x86/kernel/cpu/intel_cacheinfo.c
-@@ -326,8 +326,7 @@ static void __cpuinit amd_calc_l3_indices(struct amd_northbridge *nb)
- l3->indices = (max(max3(sc0, sc1, sc2), sc3) << 10) - 1;
- }
-
--static void __cpuinit amd_init_l3_cache(struct _cpuid4_info_regs *this_leaf,
-- int index)
-+static void __cpuinit amd_init_l3_cache(struct _cpuid4_info_regs *this_leaf, int index)
- {
- int node;
-
-@@ -725,14 +724,16 @@ static DEFINE_PER_CPU(struct _cpuid4_info *, ici_cpuid4_info);
- #define CPUID4_INFO_IDX(x, y) (&((per_cpu(ici_cpuid4_info, x))[y]))
-
- #ifdef CONFIG_SMP
--static void __cpuinit cache_shared_cpu_map_setup(unsigned int cpu, int index)
-+
-+static int __cpuinit cache_shared_amd_cpu_map_setup(unsigned int cpu, int index)
- {
-- struct _cpuid4_info *this_leaf, *sibling_leaf;
-- unsigned long num_threads_sharing;
-- int index_msb, i, sibling;
-+ struct _cpuid4_info *this_leaf;
-+ int ret, i, sibling;
- struct cpuinfo_x86 *c = &cpu_data(cpu);
-
-- if ((index == 3) && (c->x86_vendor == X86_VENDOR_AMD)) {
-+ ret = 0;
-+ if (index == 3) {
-+ ret = 1;
- for_each_cpu(i, cpu_llc_shared_mask(cpu)) {
- if (!per_cpu(ici_cpuid4_info, i))
- continue;
-@@ -743,8 +744,35 @@ static void __cpuinit cache_shared_cpu_map_setup(unsigned int cpu, int index)
- set_bit(sibling, this_leaf->shared_cpu_map);
- }
- }
-- return;
-+ } else if ((c->x86 == 0x15) && ((index == 1) || (index == 2))) {
-+ ret = 1;
-+ for_each_cpu(i, cpu_sibling_mask(cpu)) {
-+ if (!per_cpu(ici_cpuid4_info, i))
-+ continue;
-+ this_leaf = CPUID4_INFO_IDX(i, index);
-+ for_each_cpu(sibling, cpu_sibling_mask(cpu)) {
-+ if (!cpu_online(sibling))
-+ continue;
-+ set_bit(sibling, this_leaf->shared_cpu_map);
-+ }
-+ }
- }
-+
-+ return ret;
-+}
-+
-+static void __cpuinit cache_shared_cpu_map_setup(unsigned int cpu, int index)
-+{
-+ struct _cpuid4_info *this_leaf, *sibling_leaf;
-+ unsigned long num_threads_sharing;
-+ int index_msb, i;
-+ struct cpuinfo_x86 *c = &cpu_data(cpu);
-+
-+ if (c->x86_vendor == X86_VENDOR_AMD) {
-+ if (cache_shared_amd_cpu_map_setup(cpu, index))
-+ return;
-+ }
-+
- this_leaf = CPUID4_INFO_IDX(cpu, index);
- num_threads_sharing = 1 + this_leaf->base.eax.split.num_threads_sharing;
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0055-ath9k-stop-on-rates-with-idx-1-in-ath9k-rate-control.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0055-ath9k-stop-on-rates-with-idx-1-in-ath9k-rate-control.patch
deleted file mode 100644
index b4d875c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0055-ath9k-stop-on-rates-with-idx-1-in-ath9k-rate-control.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 97abf76510415811cd7d628e9fd74e008c69f871 Mon Sep 17 00:00:00 2001
-From: Pavel Roskin <proski at gnu.org>
-Date: Sat, 11 Feb 2012 10:01:53 -0500
-Subject: [PATCH 55/72] ath9k: stop on rates with idx -1 in ath9k rate
- control's .tx_status
-
-commit 2504a6423b9ab4c36df78227055995644de19edb upstream.
-
-Rate control algorithms are supposed to stop processing when they
-encounter a rate with the index -1. Checking for rate->count not being
-zero is not enough.
-
-Allowing a rate with negative index leads to memory corruption in
-ath_debug_stat_rc().
-
-One consequence of the bug is discussed at
-https://bugzilla.redhat.com/show_bug.cgi?id=768639
-
-Signed-off-by: Pavel Roskin <proski at gnu.org>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/net/wireless/ath/ath9k/rc.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/net/wireless/ath/ath9k/rc.c b/drivers/net/wireless/ath/ath9k/rc.c
-index 528d5f3..64af11f 100644
---- a/drivers/net/wireless/ath/ath9k/rc.c
-+++ b/drivers/net/wireless/ath/ath9k/rc.c
-@@ -1347,7 +1347,7 @@ static void ath_tx_status(void *priv, struct ieee80211_supported_band *sband,
- fc = hdr->frame_control;
- for (i = 0; i < sc->hw->max_rates; i++) {
- struct ieee80211_tx_rate *rate = &tx_info->status.rates[i];
-- if (!rate->count)
-+ if (rate->idx < 0 || !rate->count)
- break;
-
- final_ts_idx = i;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0056-genirq-Unmask-oneshot-irqs-when-thread-was-not-woken.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0056-genirq-Unmask-oneshot-irqs-when-thread-was-not-woken.patch
deleted file mode 100644
index 1dc0bbb..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0056-genirq-Unmask-oneshot-irqs-when-thread-was-not-woken.patch
+++ /dev/null
@@ -1,81 +0,0 @@
-From fb8f89c9c078476af3cda9f2373b5dc72cfc3ead Mon Sep 17 00:00:00 2001
-From: Thomas Gleixner <tglx at linutronix.de>
-Date: Tue, 7 Feb 2012 17:58:03 +0100
-Subject: [PATCH 56/72] genirq: Unmask oneshot irqs when thread was not woken
-
-commit ac5637611150281f398bb7a47e3fcb69a09e7803 upstream.
-
-When the primary handler of an interrupt which is marked IRQ_ONESHOT
-returns IRQ_HANDLED or IRQ_NONE, then the interrupt thread is not
-woken and the unmask logic of the interrupt line is never
-invoked. This keeps the interrupt masked forever.
-
-This was not noticed as most IRQ_ONESHOT users wake the thread
-unconditionally (usually because they cannot access the underlying
-device from hard interrupt context). Though this behaviour was nowhere
-documented and not necessarily intentional. Some drivers can avoid the
-thread wakeup in certain cases and run into the situation where the
-interrupt line s kept masked.
-
-Handle it gracefully.
-
-Reported-and-tested-by: Lothar Wassmann <lw at karo-electronics.de>
-Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- kernel/irq/chip.c | 25 +++++++++++++++++++++++--
- 1 file changed, 23 insertions(+), 2 deletions(-)
-
-diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c
-index f7c543a..b742edc 100644
---- a/kernel/irq/chip.c
-+++ b/kernel/irq/chip.c
-@@ -330,6 +330,24 @@ out_unlock:
- }
- EXPORT_SYMBOL_GPL(handle_simple_irq);
-
-+/*
-+ * Called unconditionally from handle_level_irq() and only for oneshot
-+ * interrupts from handle_fasteoi_irq()
-+ */
-+static void cond_unmask_irq(struct irq_desc *desc)
-+{
-+ /*
-+ * We need to unmask in the following cases:
-+ * - Standard level irq (IRQF_ONESHOT is not set)
-+ * - Oneshot irq which did not wake the thread (caused by a
-+ * spurious interrupt or a primary handler handling it
-+ * completely).
-+ */
-+ if (!irqd_irq_disabled(&desc->irq_data) &&
-+ irqd_irq_masked(&desc->irq_data) && !desc->threads_oneshot)
-+ unmask_irq(desc);
-+}
-+
- /**
- * handle_level_irq - Level type irq handler
- * @irq: the interrupt number
-@@ -362,8 +380,8 @@ handle_level_irq(unsigned int irq, struct irq_desc *desc)
-
- handle_irq_event(desc);
-
-- if (!irqd_irq_disabled(&desc->irq_data) && !(desc->istate & IRQS_ONESHOT))
-- unmask_irq(desc);
-+ cond_unmask_irq(desc);
-+
- out_unlock:
- raw_spin_unlock(&desc->lock);
- }
-@@ -417,6 +435,9 @@ handle_fasteoi_irq(unsigned int irq, struct irq_desc *desc)
- preflow_handler(desc);
- handle_irq_event(desc);
-
-+ if (desc->istate & IRQS_ONESHOT)
-+ cond_unmask_irq(desc);
-+
- out_eoi:
- desc->irq_data.chip->irq_eoi(&desc->irq_data);
- out_unlock:
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0057-genirq-Handle-pending-irqs-in-irq_startup.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0057-genirq-Handle-pending-irqs-in-irq_startup.patch
deleted file mode 100644
index b52cb6a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0057-genirq-Handle-pending-irqs-in-irq_startup.patch
+++ /dev/null
@@ -1,117 +0,0 @@
-From cde7a1b79f95c783def648bff541ee319148e611 Mon Sep 17 00:00:00 2001
-From: Thomas Gleixner <tglx at linutronix.de>
-Date: Wed, 8 Feb 2012 11:57:52 +0100
-Subject: [PATCH 57/72] genirq: Handle pending irqs in irq_startup()
-
-commit b4bc724e82e80478cba5fe9825b62e71ddf78757 upstream.
-
-An interrupt might be pending when irq_startup() is called, but the
-startup code does not invoke the resend logic. In some cases this
-prevents the device from issuing another interrupt which renders the
-device non functional.
-
-Call the resend function in irq_startup() to keep things going.
-
-Reported-and-tested-by: Russell King <rmk+kernel at arm.linux.org.uk>
-Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- kernel/irq/autoprobe.c | 4 ++--
- kernel/irq/chip.c | 17 ++++++++++-------
- kernel/irq/internals.h | 2 +-
- kernel/irq/manage.c | 2 +-
- 4 files changed, 14 insertions(+), 11 deletions(-)
-
-diff --git a/kernel/irq/autoprobe.c b/kernel/irq/autoprobe.c
-index 342d8f4..0119b9d 100644
---- a/kernel/irq/autoprobe.c
-+++ b/kernel/irq/autoprobe.c
-@@ -53,7 +53,7 @@ unsigned long probe_irq_on(void)
- if (desc->irq_data.chip->irq_set_type)
- desc->irq_data.chip->irq_set_type(&desc->irq_data,
- IRQ_TYPE_PROBE);
-- irq_startup(desc);
-+ irq_startup(desc, false);
- }
- raw_spin_unlock_irq(&desc->lock);
- }
-@@ -70,7 +70,7 @@ unsigned long probe_irq_on(void)
- raw_spin_lock_irq(&desc->lock);
- if (!desc->action && irq_settings_can_probe(desc)) {
- desc->istate |= IRQS_AUTODETECT | IRQS_WAITING;
-- if (irq_startup(desc))
-+ if (irq_startup(desc, false))
- desc->istate |= IRQS_PENDING;
- }
- raw_spin_unlock_irq(&desc->lock);
-diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c
-index b742edc..fb7db75 100644
---- a/kernel/irq/chip.c
-+++ b/kernel/irq/chip.c
-@@ -157,19 +157,22 @@ static void irq_state_set_masked(struct irq_desc *desc)
- irqd_set(&desc->irq_data, IRQD_IRQ_MASKED);
- }
-
--int irq_startup(struct irq_desc *desc)
-+int irq_startup(struct irq_desc *desc, bool resend)
- {
-+ int ret = 0;
-+
- irq_state_clr_disabled(desc);
- desc->depth = 0;
-
- if (desc->irq_data.chip->irq_startup) {
-- int ret = desc->irq_data.chip->irq_startup(&desc->irq_data);
-+ ret = desc->irq_data.chip->irq_startup(&desc->irq_data);
- irq_state_clr_masked(desc);
-- return ret;
-+ } else {
-+ irq_enable(desc);
- }
--
-- irq_enable(desc);
-- return 0;
-+ if (resend)
-+ check_irq_resend(desc, desc->irq_data.irq);
-+ return ret;
- }
-
- void irq_shutdown(struct irq_desc *desc)
-@@ -646,7 +649,7 @@ __irq_set_handler(unsigned int irq, irq_flow_handler_t handle, int is_chained,
- irq_settings_set_noprobe(desc);
- irq_settings_set_norequest(desc);
- irq_settings_set_nothread(desc);
-- irq_startup(desc);
-+ irq_startup(desc, true);
- }
- out:
- irq_put_desc_busunlock(desc, flags);
-diff --git a/kernel/irq/internals.h b/kernel/irq/internals.h
-index a73dd6c..e1a8b64 100644
---- a/kernel/irq/internals.h
-+++ b/kernel/irq/internals.h
-@@ -67,7 +67,7 @@ extern int __irq_set_trigger(struct irq_desc *desc, unsigned int irq,
- extern void __disable_irq(struct irq_desc *desc, unsigned int irq, bool susp);
- extern void __enable_irq(struct irq_desc *desc, unsigned int irq, bool resume);
-
--extern int irq_startup(struct irq_desc *desc);
-+extern int irq_startup(struct irq_desc *desc, bool resend);
- extern void irq_shutdown(struct irq_desc *desc);
- extern void irq_enable(struct irq_desc *desc);
- extern void irq_disable(struct irq_desc *desc);
-diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c
-index 1da999f..cf2d7ae 100644
---- a/kernel/irq/manage.c
-+++ b/kernel/irq/manage.c
-@@ -1027,7 +1027,7 @@ __setup_irq(unsigned int irq, struct irq_desc *desc, struct irqaction *new)
- desc->istate |= IRQS_ONESHOT;
-
- if (irq_settings_can_autoenable(desc))
-- irq_startup(desc);
-+ irq_startup(desc, true);
- else
- /* Undo nested disables: */
- desc->depth = 1;
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0058-scsi_scan-Fix-Poison-overwritten-warning-caused-by-u.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0058-scsi_scan-Fix-Poison-overwritten-warning-caused-by-u.patch
deleted file mode 100644
index 2e68455..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0058-scsi_scan-Fix-Poison-overwritten-warning-caused-by-u.patch
+++ /dev/null
@@ -1,104 +0,0 @@
-From 5e3c2a71ff9a67f31760547f4af7d0d28d6fee6d Mon Sep 17 00:00:00 2001
-From: Huajun Li <huajun.li.lee at gmail.com>
-Date: Sun, 12 Feb 2012 19:59:14 +0800
-Subject: [PATCH 58/72] scsi_scan: Fix 'Poison overwritten' warning caused by
- using freed 'shost'
-
-commit 267a6ad4aefaafbde607804c60945bcf97f91c1b upstream.
-
-In do_scan_async(), calling scsi_autopm_put_host(shost) may reference
-freed shost, and cause Posison overwitten warning.
-Yes, this case can happen, for example, an USB is disconnected just
-when do_scan_async() thread starts to run, then scsi_host_put() called
-in scsi_finish_async_scan() will lead to shost be freed(because the
-refcount of shost->shost_gendev decreases to 1 after USB disconnects),
-at this point, if references shost again, system will show following
-warning msg.
-
-To make scsi_autopm_put_host(shost) always reference a valid shost,
-put it just before scsi_host_put() in function
-scsi_finish_async_scan().
-
-[ 299.281565] =============================================================================
-[ 299.281634] BUG kmalloc-4096 (Tainted: G I ): Poison overwritten
-[ 299.281682] -----------------------------------------------------------------------------
-[ 299.281684]
-[ 299.281752] INFO: 0xffff880056c305d0-0xffff880056c305d0. First byte
-0x6a instead of 0x6b
-[ 299.281816] INFO: Allocated in scsi_host_alloc+0x4a/0x490 age=1688
-cpu=1 pid=2004
-[ 299.281870] __slab_alloc+0x617/0x6c1
-[ 299.281901] __kmalloc+0x28c/0x2e0
-[ 299.281931] scsi_host_alloc+0x4a/0x490
-[ 299.281966] usb_stor_probe1+0x5b/0xc40 [usb_storage]
-[ 299.282010] storage_probe+0xa4/0xe0 [usb_storage]
-[ 299.282062] usb_probe_interface+0x172/0x330 [usbcore]
-[ 299.282105] driver_probe_device+0x257/0x3b0
-[ 299.282138] __driver_attach+0x103/0x110
-[ 299.282171] bus_for_each_dev+0x8e/0xe0
-[ 299.282201] driver_attach+0x26/0x30
-[ 299.282230] bus_add_driver+0x1c4/0x430
-[ 299.282260] driver_register+0xb6/0x230
-[ 299.282298] usb_register_driver+0xe5/0x270 [usbcore]
-[ 299.282337] 0xffffffffa04ab03d
-[ 299.282364] do_one_initcall+0x47/0x230
-[ 299.282396] sys_init_module+0xa0f/0x1fe0
-[ 299.282429] INFO: Freed in scsi_host_dev_release+0x18a/0x1d0 age=85
-cpu=0 pid=2008
-[ 299.282482] __slab_free+0x3c/0x2a1
-[ 299.282510] kfree+0x296/0x310
-[ 299.282536] scsi_host_dev_release+0x18a/0x1d0
-[ 299.282574] device_release+0x74/0x100
-[ 299.282606] kobject_release+0xc7/0x2a0
-[ 299.282637] kobject_put+0x54/0xa0
-[ 299.282668] put_device+0x27/0x40
-[ 299.282694] scsi_host_put+0x1d/0x30
-[ 299.282723] do_scan_async+0x1fc/0x2b0
-[ 299.282753] kthread+0xdf/0xf0
-[ 299.282782] kernel_thread_helper+0x4/0x10
-[ 299.282817] INFO: Slab 0xffffea00015b0c00 objects=7 used=7 fp=0x
- (null) flags=0x100000000004080
-[ 299.282882] INFO: Object 0xffff880056c30000 @offset=0 fp=0x (null)
-[ 299.282884]
-...
-
-Signed-off-by: Huajun Li <huajun.li.lee at gmail.com>
-Acked-by: Alan Stern <stern at rowland.harvard.edu>
-Signed-off-by: James Bottomley <JBottomley at Parallels.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/scsi/scsi_scan.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/scsi/scsi_scan.c b/drivers/scsi/scsi_scan.c
-index b3c6d95..6e7ea4a 100644
---- a/drivers/scsi/scsi_scan.c
-+++ b/drivers/scsi/scsi_scan.c
-@@ -1815,6 +1815,7 @@ static void scsi_finish_async_scan(struct async_scan_data *data)
- }
- spin_unlock(&async_scan_lock);
-
-+ scsi_autopm_put_host(shost);
- scsi_host_put(shost);
- kfree(data);
- }
-@@ -1841,7 +1842,6 @@ static int do_scan_async(void *_data)
-
- do_scsi_scan_host(shost);
- scsi_finish_async_scan(data);
-- scsi_autopm_put_host(shost);
- return 0;
- }
-
-@@ -1869,7 +1869,7 @@ void scsi_scan_host(struct Scsi_Host *shost)
- p = kthread_run(do_scan_async, data, "scsi_scan_%d", shost->host_no);
- if (IS_ERR(p))
- do_scan_async(data);
-- /* scsi_autopm_put_host(shost) is called in do_scan_async() */
-+ /* scsi_autopm_put_host(shost) is called in scsi_finish_async_scan() */
- }
- EXPORT_SYMBOL(scsi_scan_host);
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0059-scsi_pm-Fix-bug-in-the-SCSI-power-management-handler.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0059-scsi_pm-Fix-bug-in-the-SCSI-power-management-handler.patch
deleted file mode 100644
index d3ad7e2..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0059-scsi_pm-Fix-bug-in-the-SCSI-power-management-handler.patch
+++ /dev/null
@@ -1,106 +0,0 @@
-From 453ef702b63d26220caa0d25117919216b832f75 Mon Sep 17 00:00:00 2001
-From: Alan Stern <stern at rowland.harvard.edu>
-Date: Fri, 17 Feb 2012 16:25:08 -0500
-Subject: [PATCH 59/72] scsi_pm: Fix bug in the SCSI power management handler
-
-commit fea6d607e154cf96ab22254ccb48addfd43d4cb5 upstream.
-
-This patch (as1520) fixes a bug in the SCSI layer's power management
-implementation.
-
-LUN scanning can be carried out asynchronously in do_scan_async(), and
-sd uses an asynchronous thread for the time-consuming parts of disk
-probing in sd_probe_async(). Currently nothing coordinates these
-async threads with system sleep transitions; they can and do attempt
-to continue scanning/probing SCSI devices even after the host adapter
-has been suspended. As one might expect, the outcome is not ideal.
-
-This is what the "prepare" stage of system suspend was created for.
-After the prepare callback has been called for a host, target, or
-device, drivers are not allowed to register any children underneath
-them. Currently the SCSI prepare callback is not implemented; this
-patch rectifies that omission.
-
-For SCSI hosts, the prepare routine calls scsi_complete_async_scans()
-to wait until async scanning is finished. It might be slightly more
-efficient to wait only until the host in question has been scanned,
-but there's currently no way to do that. Besides, during a sleep
-transition we will ultimately have to wait until all the host scanning
-has finished anyway.
-
-For SCSI devices, the prepare routine calls async_synchronize_full()
-to wait until sd probing is finished. The routine does nothing for
-SCSI targets, because asynchronous target scanning is done only as
-part of host scanning.
-
-Signed-off-by: Alan Stern <stern at rowland.harvard.edu>
-Signed-off-by: James Bottomley <JBottomley at Parallels.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/scsi/scsi_pm.c | 16 ++++++++++++++++
- drivers/scsi/scsi_priv.h | 1 +
- 2 files changed, 17 insertions(+)
-
-diff --git a/drivers/scsi/scsi_pm.c b/drivers/scsi/scsi_pm.c
-index d329f8b..2aeaf5c 100644
---- a/drivers/scsi/scsi_pm.c
-+++ b/drivers/scsi/scsi_pm.c
-@@ -7,6 +7,7 @@
-
- #include <linux/pm_runtime.h>
- #include <linux/export.h>
-+#include <linux/async.h>
-
- #include <scsi/scsi.h>
- #include <scsi/scsi_device.h>
-@@ -69,6 +70,19 @@ static int scsi_bus_resume_common(struct device *dev)
- return err;
- }
-
-+static int scsi_bus_prepare(struct device *dev)
-+{
-+ if (scsi_is_sdev_device(dev)) {
-+ /* sd probing uses async_schedule. Wait until it finishes. */
-+ async_synchronize_full();
-+
-+ } else if (scsi_is_host_device(dev)) {
-+ /* Wait until async scanning is finished */
-+ scsi_complete_async_scans();
-+ }
-+ return 0;
-+}
-+
- static int scsi_bus_suspend(struct device *dev)
- {
- return scsi_bus_suspend_common(dev, PMSG_SUSPEND);
-@@ -87,6 +101,7 @@ static int scsi_bus_poweroff(struct device *dev)
- #else /* CONFIG_PM_SLEEP */
-
- #define scsi_bus_resume_common NULL
-+#define scsi_bus_prepare NULL
- #define scsi_bus_suspend NULL
- #define scsi_bus_freeze NULL
- #define scsi_bus_poweroff NULL
-@@ -195,6 +210,7 @@ void scsi_autopm_put_host(struct Scsi_Host *shost)
- #endif /* CONFIG_PM_RUNTIME */
-
- const struct dev_pm_ops scsi_bus_pm_ops = {
-+ .prepare = scsi_bus_prepare,
- .suspend = scsi_bus_suspend,
- .resume = scsi_bus_resume_common,
- .freeze = scsi_bus_freeze,
-diff --git a/drivers/scsi/scsi_priv.h b/drivers/scsi/scsi_priv.h
-index 2a58895..5b475d0 100644
---- a/drivers/scsi/scsi_priv.h
-+++ b/drivers/scsi/scsi_priv.h
-@@ -110,6 +110,7 @@ extern void scsi_exit_procfs(void);
- #endif /* CONFIG_PROC_FS */
-
- /* scsi_scan.c */
-+extern int scsi_complete_async_scans(void);
- extern int scsi_scan_host_selected(struct Scsi_Host *, unsigned int,
- unsigned int, unsigned int, int);
- extern void scsi_forget_host(struct Scsi_Host *);
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0060-ipvs-fix-matching-of-fwmark-templates-during-schedul.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0060-ipvs-fix-matching-of-fwmark-templates-during-schedul.patch
deleted file mode 100644
index fc68ad5..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0060-ipvs-fix-matching-of-fwmark-templates-during-schedul.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 84e58f4e3a7fd6a1445e5fe4c734c077f4fd414e Mon Sep 17 00:00:00 2001
-From: Simon Horman <horms at verge.net.au>
-Date: Fri, 27 Jan 2012 10:45:27 +0900
-Subject: [PATCH 60/72] ipvs: fix matching of fwmark templates during
- scheduling
-
-commit e0aac52e17a3db68fe2ceae281780a70fc69957f upstream.
-
- Commit f11017ec2d1859c661f4e2b12c4a8d250e1f47cf (2.6.37)
-moved the fwmark variable in subcontext that is invalidated before
-reaching the ip_vs_ct_in_get call. As vaddr is provided as pointer
-in the param structure make sure the fwmark variable is in
-same context. As the fwmark templates can not be matched,
-more and more template connections are created and the
-controlled connections can not go to single real server.
-
-Signed-off-by: Julian Anastasov <ja at ssi.bg>
-Signed-off-by: Simon Horman <horms at verge.net.au>
-Signed-off-by: Pablo Neira Ayuso <pablo at netfilter.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- net/netfilter/ipvs/ip_vs_core.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/net/netfilter/ipvs/ip_vs_core.c b/net/netfilter/ipvs/ip_vs_core.c
-index 093cc32..6dc7d7d 100644
---- a/net/netfilter/ipvs/ip_vs_core.c
-+++ b/net/netfilter/ipvs/ip_vs_core.c
-@@ -232,6 +232,7 @@ ip_vs_sched_persist(struct ip_vs_service *svc,
- __be16 dport = 0; /* destination port to forward */
- unsigned int flags;
- struct ip_vs_conn_param param;
-+ const union nf_inet_addr fwmark = { .ip = htonl(svc->fwmark) };
- union nf_inet_addr snet; /* source network of the client,
- after masking */
-
-@@ -267,7 +268,6 @@ ip_vs_sched_persist(struct ip_vs_service *svc,
- {
- int protocol = iph.protocol;
- const union nf_inet_addr *vaddr = &iph.daddr;
-- const union nf_inet_addr fwmark = { .ip = htonl(svc->fwmark) };
- __be16 vport = 0;
-
- if (dst_port == svc->port) {
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0061-jme-Fix-FIFO-flush-issue.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0061-jme-Fix-FIFO-flush-issue.patch
deleted file mode 100644
index c0b20b0..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0061-jme-Fix-FIFO-flush-issue.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From 2efff30affaca157065760093761604afacd3567 Mon Sep 17 00:00:00 2001
-From: Guo-Fu Tseng <cooldavid at cooldavid.org>
-Date: Wed, 22 Feb 2012 08:58:10 +0000
-Subject: [PATCH 61/72] jme: Fix FIFO flush issue
-
-commit ba9adbe67e288823ac1deb7f11576ab5653f833e upstream.
-
-Set the RX FIFO flush watermark lower.
-According to Federico and JMicron's reply,
-setting it to 16QW would be stable on most platforms.
-Otherwise, user might experience packet drop issue.
-
-Reported-by: Federico Quagliata <federico at quagliata.org>
-Fixed-by: Federico Quagliata <federico at quagliata.org>
-Signed-off-by: Guo-Fu Tseng <cooldavid at cooldavid.org>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/net/ethernet/jme.c | 10 +---------
- drivers/net/ethernet/jme.h | 2 +-
- 2 files changed, 2 insertions(+), 10 deletions(-)
-
-diff --git a/drivers/net/ethernet/jme.c b/drivers/net/ethernet/jme.c
-index 76b8457..ab784e0 100644
---- a/drivers/net/ethernet/jme.c
-+++ b/drivers/net/ethernet/jme.c
-@@ -2328,19 +2328,11 @@ jme_change_mtu(struct net_device *netdev, int new_mtu)
- ((new_mtu) < IPV6_MIN_MTU))
- return -EINVAL;
-
-- if (new_mtu > 4000) {
-- jme->reg_rxcs &= ~RXCS_FIFOTHNP;
-- jme->reg_rxcs |= RXCS_FIFOTHNP_64QW;
-- jme_restart_rx_engine(jme);
-- } else {
-- jme->reg_rxcs &= ~RXCS_FIFOTHNP;
-- jme->reg_rxcs |= RXCS_FIFOTHNP_128QW;
-- jme_restart_rx_engine(jme);
-- }
-
- netdev->mtu = new_mtu;
- netdev_update_features(netdev);
-
-+ jme_restart_rx_engine(jme);
- jme_reset_link(jme);
-
- return 0;
-diff --git a/drivers/net/ethernet/jme.h b/drivers/net/ethernet/jme.h
-index 4304072..3efc897 100644
---- a/drivers/net/ethernet/jme.h
-+++ b/drivers/net/ethernet/jme.h
-@@ -730,7 +730,7 @@ enum jme_rxcs_values {
- RXCS_RETRYCNT_60 = 0x00000F00,
-
- RXCS_DEFAULT = RXCS_FIFOTHTP_128T |
-- RXCS_FIFOTHNP_128QW |
-+ RXCS_FIFOTHNP_16QW |
- RXCS_DMAREQSZ_128B |
- RXCS_RETRYGAP_256ns |
- RXCS_RETRYCNT_32,
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0062-davinci_emac-Do-not-free-all-rx-dma-descriptors-duri.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0062-davinci_emac-Do-not-free-all-rx-dma-descriptors-duri.patch
deleted file mode 100644
index 51197fc..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0062-davinci_emac-Do-not-free-all-rx-dma-descriptors-duri.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-From d0a93cc14174387dc5a6416d741a83fad831eae9 Mon Sep 17 00:00:00 2001
-From: Christian Riesch <christian.riesch at omicron.at>
-Date: Thu, 23 Feb 2012 01:14:17 +0000
-Subject: [PATCH 62/72] davinci_emac: Do not free all rx dma descriptors
- during init
-
-commit 5d69703263d588dbb03f4e57091afd8942d96e6d upstream.
-
-This patch fixes a regression that was introduced by
-
-commit 0a5f38467765ee15478db90d81e40c269c8dda20
-davinci_emac: Add Carrier Link OK check in Davinci RX Handler
-
-Said commit adds a check whether the carrier link is ok. If the link is
-not ok, the skb is freed and no new dma descriptor added to the rx dma
-channel. This causes trouble during initialization when the carrier
-status has not yet been updated. If a lot of packets are received while
-netif_carrier_ok returns false, all dma descriptors are freed and the
-rx dma transfer is stopped.
-
-The bug occurs when the board is connected to a network with lots of
-traffic and the ifconfig down/up is done, e.g., when reconfiguring
-the interface with DHCP.
-
-The bug can be reproduced by flood pinging the davinci board while doing
-ifconfig eth0 down
-ifconfig eth0 up
-on the board.
-
-After that, the rx path stops working and the overrun value reported
-by ifconfig is counting up.
-
-This patch reverts commit 0a5f38467765ee15478db90d81e40c269c8dda20
-and instead issues warnings only if cpdma_chan_submit returns -ENOMEM.
-
-Signed-off-by: Christian Riesch <christian.riesch at omicron.at>
-Cc: Cyril Chemparathy <cyril at ti.com>
-Cc: Sascha Hauer <s.hauer at pengutronix.de>
-Tested-by: Rajashekhara, Sudhakar <sudhakar.raj at ti.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/net/ethernet/ti/davinci_emac.c | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/net/ethernet/ti/davinci_emac.c b/drivers/net/ethernet/ti/davinci_emac.c
-index 815c797..22f2788 100644
---- a/drivers/net/ethernet/ti/davinci_emac.c
-+++ b/drivers/net/ethernet/ti/davinci_emac.c
-@@ -1007,7 +1007,7 @@ static void emac_rx_handler(void *token, int len, int status)
- int ret;
-
- /* free and bail if we are shutting down */
-- if (unlikely(!netif_running(ndev) || !netif_carrier_ok(ndev))) {
-+ if (unlikely(!netif_running(ndev))) {
- dev_kfree_skb_any(skb);
- return;
- }
-@@ -1036,7 +1036,9 @@ static void emac_rx_handler(void *token, int len, int status)
- recycle:
- ret = cpdma_chan_submit(priv->rxchan, skb, skb->data,
- skb_tailroom(skb), GFP_KERNEL);
-- if (WARN_ON(ret < 0))
-+
-+ WARN_ON(ret == -ENOMEM);
-+ if (unlikely(ret < 0))
- dev_kfree_skb_any(skb);
- }
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0063-builddeb-Don-t-create-files-in-tmp-with-predictable-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0063-builddeb-Don-t-create-files-in-tmp-with-predictable-.patch
deleted file mode 100644
index ef1b766..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0063-builddeb-Don-t-create-files-in-tmp-with-predictable-.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From e26e1cfc560e9d5803c22fc5e98114f264be3ca3 Mon Sep 17 00:00:00 2001
-From: Ben Hutchings <ben at decadent.org.uk>
-Date: Wed, 15 Feb 2012 14:17:29 +0000
-Subject: [PATCH 63/72] builddeb: Don't create files in /tmp with predictable
- names
-
-commit 6c635224602d760c1208ada337562f40d8ae93a5 upstream.
-
-The current use of /tmp for file lists is insecure. Put them under
-$objtree/debian instead.
-
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
-Acked-by: maximilian attems <max at stro.at>
-Signed-off-by: Michal Marek <mmarek at suse.cz>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- scripts/package/builddeb | 12 ++++++------
- 1 file changed, 6 insertions(+), 6 deletions(-)
-
-diff --git a/scripts/package/builddeb b/scripts/package/builddeb
-index f6cbc3d..3c6c0b1 100644
---- a/scripts/package/builddeb
-+++ b/scripts/package/builddeb
-@@ -238,14 +238,14 @@ EOF
- fi
-
- # Build header package
--(cd $srctree; find . -name Makefile -o -name Kconfig\* -o -name \*.pl > /tmp/files$$)
--(cd $srctree; find arch/$SRCARCH/include include scripts -type f >> /tmp/files$$)
--(cd $objtree; find .config Module.symvers include scripts -type f >> /tmp/objfiles$$)
-+(cd $srctree; find . -name Makefile -o -name Kconfig\* -o -name \*.pl > "$objtree/debian/hdrsrcfiles")
-+(cd $srctree; find arch/$SRCARCH/include include scripts -type f >> "$objtree/debian/hdrsrcfiles")
-+(cd $objtree; find .config Module.symvers include scripts -type f >> "$objtree/debian/hdrobjfiles")
- destdir=$kernel_headers_dir/usr/src/linux-headers-$version
- mkdir -p "$destdir"
--(cd $srctree; tar -c -f - -T /tmp/files$$) | (cd $destdir; tar -xf -)
--(cd $objtree; tar -c -f - -T /tmp/objfiles$$) | (cd $destdir; tar -xf -)
--rm -f /tmp/files$$ /tmp/objfiles$$
-+(cd $srctree; tar -c -f - -T "$objtree/debian/hdrsrcfiles") | (cd $destdir; tar -xf -)
-+(cd $objtree; tar -c -f - -T "$objtree/debian/hdrobjfiles") | (cd $destdir; tar -xf -)
-+rm -f "$objtree/debian/hdrsrcfiles" "$objtree/debian/hdrobjfiles"
- arch=$(dpkg --print-architecture)
-
- cat <<EOF >> debian/control
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0064-can-sja1000-fix-isr-hang-when-hw-is-unplugged-under-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0064-can-sja1000-fix-isr-hang-when-hw-is-unplugged-under-.patch
deleted file mode 100644
index fc67762..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0064-can-sja1000-fix-isr-hang-when-hw-is-unplugged-under-.patch
+++ /dev/null
@@ -1,67 +0,0 @@
-From 21c2e3679f5a2068edaf3ae26a8081897f7da66a Mon Sep 17 00:00:00 2001
-From: Oliver Hartkopp <socketcan at hartkopp.net>
-Date: Wed, 15 Feb 2012 17:51:56 +0100
-Subject: [PATCH 64/72] can: sja1000: fix isr hang when hw is unplugged under
- load
-
-commit a7762b10c12a70c5dbf2253142764b728ac88c3a upstream.
-
-In the case of hotplug enabled devices (PCMCIA/PCIeC) the removal of the
-hardware can cause an infinite loop in the common sja1000 isr.
-
-Use the already retrieved status register to indicate a possible hardware
-removal and double check by reading the mode register in sja1000_is_absent.
-
-Signed-off-by: Oliver Hartkopp <socketcan at hartkopp.net>
-Acked-by: Wolfgang Grandegger <wg at grandegger.com>
-Signed-off-by: Marc Kleine-Budde <mkl at pengutronix.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/net/can/sja1000/sja1000.c | 13 ++++++++++++-
- 1 file changed, 12 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/net/can/sja1000/sja1000.c b/drivers/net/can/sja1000/sja1000.c
-index 04a3f1b..192b0d1 100644
---- a/drivers/net/can/sja1000/sja1000.c
-+++ b/drivers/net/can/sja1000/sja1000.c
-@@ -95,11 +95,16 @@ static void sja1000_write_cmdreg(struct sja1000_priv *priv, u8 val)
- spin_unlock_irqrestore(&priv->cmdreg_lock, flags);
- }
-
-+static int sja1000_is_absent(struct sja1000_priv *priv)
-+{
-+ return (priv->read_reg(priv, REG_MOD) == 0xFF);
-+}
-+
- static int sja1000_probe_chip(struct net_device *dev)
- {
- struct sja1000_priv *priv = netdev_priv(dev);
-
-- if (priv->reg_base && (priv->read_reg(priv, 0) == 0xFF)) {
-+ if (priv->reg_base && sja1000_is_absent(priv)) {
- printk(KERN_INFO "%s: probing @0x%lX failed\n",
- DRV_NAME, dev->base_addr);
- return 0;
-@@ -493,6 +498,9 @@ irqreturn_t sja1000_interrupt(int irq, void *dev_id)
- while ((isrc = priv->read_reg(priv, REG_IR)) && (n < SJA1000_MAX_IRQ)) {
- n++;
- status = priv->read_reg(priv, REG_SR);
-+ /* check for absent controller due to hw unplug */
-+ if (status == 0xFF && sja1000_is_absent(priv))
-+ return IRQ_NONE;
-
- if (isrc & IRQ_WUI)
- dev_warn(dev->dev.parent, "wakeup interrupt\n");
-@@ -509,6 +517,9 @@ irqreturn_t sja1000_interrupt(int irq, void *dev_id)
- while (status & SR_RBS) {
- sja1000_rx(dev);
- status = priv->read_reg(priv, REG_SR);
-+ /* check for absent controller */
-+ if (status == 0xFF && sja1000_is_absent(priv))
-+ return IRQ_NONE;
- }
- }
- if (isrc & (IRQ_DOI | IRQ_EI | IRQ_BEI | IRQ_EPI | IRQ_ALI)) {
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0065-hdpvr-fix-race-conditon-during-start-of-streaming.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0065-hdpvr-fix-race-conditon-during-start-of-streaming.patch
deleted file mode 100644
index ef66b72..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0065-hdpvr-fix-race-conditon-during-start-of-streaming.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 0ce7de9f53e83fe5348741518ecb3ffe7b2959b3 Mon Sep 17 00:00:00 2001
-From: Janne Grunau <j at jannau.net>
-Date: Thu, 2 Feb 2012 13:35:21 -0300
-Subject: [PATCH 65/72] hdpvr: fix race conditon during start of streaming
-
-commit afa159538af61f1a65d48927f4e949fe514fb4fc upstream.
-
-status has to be set to STREAMING before the streaming worker is
-queued. hdpvr_transmit_buffers() will exit immediately otherwise.
-
-Reported-by: Joerg Desch <vvd.joede at googlemail.com>
-Signed-off-by: Mauro Carvalho Chehab <mchehab at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/media/video/hdpvr/hdpvr-video.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/media/video/hdpvr/hdpvr-video.c b/drivers/media/video/hdpvr/hdpvr-video.c
-index 087f7c0..41fd57b 100644
---- a/drivers/media/video/hdpvr/hdpvr-video.c
-+++ b/drivers/media/video/hdpvr/hdpvr-video.c
-@@ -283,12 +283,13 @@ static int hdpvr_start_streaming(struct hdpvr_device *dev)
-
- hdpvr_config_call(dev, CTRL_START_STREAMING_VALUE, 0x00);
-
-+ dev->status = STATUS_STREAMING;
-+
- INIT_WORK(&dev->worker, hdpvr_transmit_buffers);
- queue_work(dev->workqueue, &dev->worker);
-
- v4l2_dbg(MSG_BUFFER, hdpvr_debug, &dev->v4l2_dev,
- "streaming started\n");
-- dev->status = STATUS_STREAMING;
-
- return 0;
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0066-imon-don-t-wedge-hardware-after-early-callbacks.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0066-imon-don-t-wedge-hardware-after-early-callbacks.patch
deleted file mode 100644
index 5206269..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0066-imon-don-t-wedge-hardware-after-early-callbacks.patch
+++ /dev/null
@@ -1,107 +0,0 @@
-From 4b807f5efead10508cd7631455a29647b0edd6bf Mon Sep 17 00:00:00 2001
-From: Jarod Wilson <jarod at redhat.com>
-Date: Thu, 26 Jan 2012 12:04:11 -0300
-Subject: [PATCH 66/72] imon: don't wedge hardware after early callbacks
-
-commit 8791d63af0cf113725ae4cb8cba9492814c59a93 upstream.
-
-This patch is just a minor update to one titled "imon: Input from ffdc
-device type ignored" from Corinna Vinschen. An earlier patch to prevent
-an oops when we got early callbacks also has the nasty side-effect of
-wedging imon hardware, as we don't acknowledge the urb. Rework the check
-slightly here to bypass processing the packet, as the driver isn't yet
-fully initialized, but still acknowlege the urb and submit a new rx_urb.
-Do this for both interfaces -- irrelevant for ffdc hardware, but
-relevant for newer hardware, though newer hardware doesn't spew the
-constant stream of data as soon as the hardware is initialized like the
-older ffdc devices, so they'd be less likely to trigger this anyway...
-
-Tested with both an ffdc device and an 0042 device.
-
-Reported-by: Corinna Vinschen <vinschen at redhat.com>
-Signed-off-by: Jarod Wilson <jarod at redhat.com>
-Signed-off-by: Mauro Carvalho Chehab <mchehab at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/media/rc/imon.c | 26 ++++++++++++++++++++++----
- 1 file changed, 22 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/media/rc/imon.c b/drivers/media/rc/imon.c
-index 6ed9646..3f175eb 100644
---- a/drivers/media/rc/imon.c
-+++ b/drivers/media/rc/imon.c
-@@ -47,7 +47,7 @@
- #define MOD_AUTHOR "Jarod Wilson <jarod at wilsonet.com>"
- #define MOD_DESC "Driver for SoundGraph iMON MultiMedia IR/Display"
- #define MOD_NAME "imon"
--#define MOD_VERSION "0.9.3"
-+#define MOD_VERSION "0.9.4"
-
- #define DISPLAY_MINOR_BASE 144
- #define DEVICE_NAME "lcd%d"
-@@ -1658,9 +1658,17 @@ static void usb_rx_callback_intf0(struct urb *urb)
- return;
-
- ictx = (struct imon_context *)urb->context;
-- if (!ictx || !ictx->dev_present_intf0)
-+ if (!ictx)
- return;
-
-+ /*
-+ * if we get a callback before we're done configuring the hardware, we
-+ * can't yet process the data, as there's nowhere to send it, but we
-+ * still need to submit a new rx URB to avoid wedging the hardware
-+ */
-+ if (!ictx->dev_present_intf0)
-+ goto out;
-+
- switch (urb->status) {
- case -ENOENT: /* usbcore unlink successful! */
- return;
-@@ -1678,6 +1686,7 @@ static void usb_rx_callback_intf0(struct urb *urb)
- break;
- }
-
-+out:
- usb_submit_urb(ictx->rx_urb_intf0, GFP_ATOMIC);
- }
-
-@@ -1690,9 +1699,17 @@ static void usb_rx_callback_intf1(struct urb *urb)
- return;
-
- ictx = (struct imon_context *)urb->context;
-- if (!ictx || !ictx->dev_present_intf1)
-+ if (!ictx)
- return;
-
-+ /*
-+ * if we get a callback before we're done configuring the hardware, we
-+ * can't yet process the data, as there's nowhere to send it, but we
-+ * still need to submit a new rx URB to avoid wedging the hardware
-+ */
-+ if (!ictx->dev_present_intf1)
-+ goto out;
-+
- switch (urb->status) {
- case -ENOENT: /* usbcore unlink successful! */
- return;
-@@ -1710,6 +1727,7 @@ static void usb_rx_callback_intf1(struct urb *urb)
- break;
- }
-
-+out:
- usb_submit_urb(ictx->rx_urb_intf1, GFP_ATOMIC);
- }
-
-@@ -2242,7 +2260,7 @@ find_endpoint_failed:
- mutex_unlock(&ictx->lock);
- usb_free_urb(rx_urb);
- rx_urb_alloc_failed:
-- dev_err(ictx->dev, "unable to initialize intf0, err %d\n", ret);
-+ dev_err(ictx->dev, "unable to initialize intf1, err %d\n", ret);
-
- return NULL;
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0067-hwmon-f75375s-Fix-register-write-order-when-setting-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0067-hwmon-f75375s-Fix-register-write-order-when-setting-.patch
deleted file mode 100644
index dc88dd5..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0067-hwmon-f75375s-Fix-register-write-order-when-setting-.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From f56666e0feb0b3d05b22b8a6ff82e19ea27ae72f Mon Sep 17 00:00:00 2001
-From: Nikolaus Schulz <schulz at macnetix.de>
-Date: Wed, 22 Feb 2012 23:18:44 +0100
-Subject: [PATCH 67/72] hwmon: (f75375s) Fix register write order when setting
- fans to full speed
-
-commit c1c1a3d012fe5e82a9a025fb4b5a4f8ee67a53f6 upstream.
-
-By hwmon sysfs interface convention, setting pwm_enable to zero sets a fan
-to full speed. In the f75375s driver, this need be done by enabling
-manual fan control, plus duty mode for the F875387 chip, and then setting
-the maximum duty cycle. Fix a bug where the two necessary register writes
-were swapped, effectively discarding the setting to full-speed.
-
-Signed-off-by: Nikolaus Schulz <mail at microschulz.de>
-Cc: Riku Voipio <riku.voipio at iki.fi>
-Signed-off-by: Guenter Roeck <guenter.roeck at ericsson.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/hwmon/f75375s.c | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/hwmon/f75375s.c b/drivers/hwmon/f75375s.c
-index e4ab491..040a820 100644
---- a/drivers/hwmon/f75375s.c
-+++ b/drivers/hwmon/f75375s.c
-@@ -304,8 +304,6 @@ static int set_pwm_enable_direct(struct i2c_client *client, int nr, int val)
- case 0: /* Full speed */
- fanmode |= (3 << FAN_CTRL_MODE(nr));
- data->pwm[nr] = 255;
-- f75375_write8(client, F75375_REG_FAN_PWM_DUTY(nr),
-- data->pwm[nr]);
- break;
- case 1: /* PWM */
- fanmode |= (3 << FAN_CTRL_MODE(nr));
-@@ -318,6 +316,9 @@ static int set_pwm_enable_direct(struct i2c_client *client, int nr, int val)
- }
- f75375_write8(client, F75375_REG_FAN_TIMER, fanmode);
- data->pwm_enable[nr] = val;
-+ if (val == 0)
-+ f75375_write8(client, F75375_REG_FAN_PWM_DUTY(nr),
-+ data->pwm[nr]);
- return 0;
- }
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0068-epoll-introduce-POLLFREE-to-flush-signalfd_wqh-befor.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0068-epoll-introduce-POLLFREE-to-flush-signalfd_wqh-befor.patch
deleted file mode 100644
index a1ed8d1..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0068-epoll-introduce-POLLFREE-to-flush-signalfd_wqh-befor.patch
+++ /dev/null
@@ -1,164 +0,0 @@
-From 967aa5fe959f1110ace296ef2d2f90fd6a5c431b Mon Sep 17 00:00:00 2001
-From: Oleg Nesterov <oleg at redhat.com>
-Date: Fri, 24 Feb 2012 20:07:11 +0100
-Subject: [PATCH 68/72] epoll: introduce POLLFREE to flush ->signalfd_wqh
- before kfree()
-
-commit d80e731ecab420ddcb79ee9d0ac427acbc187b4b upstream.
-
-This patch is intentionally incomplete to simplify the review.
-It ignores ep_unregister_pollwait() which plays with the same wqh.
-See the next change.
-
-epoll assumes that the EPOLL_CTL_ADD'ed file controls everything
-f_op->poll() needs. In particular it assumes that the wait queue
-can't go away until eventpoll_release(). This is not true in case
-of signalfd, the task which does EPOLL_CTL_ADD uses its ->sighand
-which is not connected to the file.
-
-This patch adds the special event, POLLFREE, currently only for
-epoll. It expects that init_poll_funcptr()'ed hook should do the
-necessary cleanup. Perhaps it should be defined as EPOLLFREE in
-eventpoll.
-
-__cleanup_sighand() is changed to do wake_up_poll(POLLFREE) if
-->signalfd_wqh is not empty, we add the new signalfd_cleanup()
-helper.
-
-ep_poll_callback(POLLFREE) simply does list_del_init(task_list).
-This make this poll entry inconsistent, but we don't care. If you
-share epoll fd which contains our sigfd with another process you
-should blame yourself. signalfd is "really special". I simply do
-not know how we can define the "right" semantics if it used with
-epoll.
-
-The main problem is, epoll calls signalfd_poll() once to establish
-the connection with the wait queue, after that signalfd_poll(NULL)
-returns the different/inconsistent results depending on who does
-EPOLL_CTL_MOD/signalfd_read/etc. IOW: apart from sigmask, signalfd
-has nothing to do with the file, it works with the current thread.
-
-In short: this patch is the hack which tries to fix the symptoms.
-It also assumes that nobody can take tasklist_lock under epoll
-locks, this seems to be true.
-
-Note:
-
- - we do not have wake_up_all_poll() but wake_up_poll()
- is fine, poll/epoll doesn't use WQ_FLAG_EXCLUSIVE.
-
- - signalfd_cleanup() uses POLLHUP along with POLLFREE,
- we need a couple of simple changes in eventpoll.c to
- make sure it can't be "lost".
-
-Reported-by: Maxime Bizon <mbizon at freebox.fr>
-Signed-off-by: Oleg Nesterov <oleg at redhat.com>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/eventpoll.c | 4 ++++
- fs/signalfd.c | 11 +++++++++++
- include/asm-generic/poll.h | 2 ++
- include/linux/signalfd.h | 5 ++++-
- kernel/fork.c | 5 ++++-
- 5 files changed, 25 insertions(+), 2 deletions(-)
-
-diff --git a/fs/eventpoll.c b/fs/eventpoll.c
-index 828e750..ede66ad 100644
---- a/fs/eventpoll.c
-+++ b/fs/eventpoll.c
-@@ -827,6 +827,10 @@ static int ep_poll_callback(wait_queue_t *wait, unsigned mode, int sync, void *k
- struct epitem *epi = ep_item_from_wait(wait);
- struct eventpoll *ep = epi->ep;
-
-+ /* the caller holds eppoll_entry->whead->lock */
-+ if ((unsigned long)key & POLLFREE)
-+ list_del_init(&wait->task_list);
-+
- spin_lock_irqsave(&ep->lock, flags);
-
- /*
-diff --git a/fs/signalfd.c b/fs/signalfd.c
-index 492465b..79c1eea 100644
---- a/fs/signalfd.c
-+++ b/fs/signalfd.c
-@@ -30,6 +30,17 @@
- #include <linux/signalfd.h>
- #include <linux/syscalls.h>
-
-+void signalfd_cleanup(struct sighand_struct *sighand)
-+{
-+ wait_queue_head_t *wqh = &sighand->signalfd_wqh;
-+
-+ if (likely(!waitqueue_active(wqh)))
-+ return;
-+
-+ /* wait_queue_t->func(POLLFREE) should do remove_wait_queue() */
-+ wake_up_poll(wqh, POLLHUP | POLLFREE);
-+}
-+
- struct signalfd_ctx {
- sigset_t sigmask;
- };
-diff --git a/include/asm-generic/poll.h b/include/asm-generic/poll.h
-index 44bce83..9ce7f44 100644
---- a/include/asm-generic/poll.h
-+++ b/include/asm-generic/poll.h
-@@ -28,6 +28,8 @@
- #define POLLRDHUP 0x2000
- #endif
-
-+#define POLLFREE 0x4000 /* currently only for epoll */
-+
- struct pollfd {
- int fd;
- short events;
-diff --git a/include/linux/signalfd.h b/include/linux/signalfd.h
-index 3ff4961..247399b 100644
---- a/include/linux/signalfd.h
-+++ b/include/linux/signalfd.h
-@@ -61,13 +61,16 @@ static inline void signalfd_notify(struct task_struct *tsk, int sig)
- wake_up(&tsk->sighand->signalfd_wqh);
- }
-
-+extern void signalfd_cleanup(struct sighand_struct *sighand);
-+
- #else /* CONFIG_SIGNALFD */
-
- static inline void signalfd_notify(struct task_struct *tsk, int sig) { }
-
-+static inline void signalfd_cleanup(struct sighand_struct *sighand) { }
-+
- #endif /* CONFIG_SIGNALFD */
-
- #endif /* __KERNEL__ */
-
- #endif /* _LINUX_SIGNALFD_H */
--
-diff --git a/kernel/fork.c b/kernel/fork.c
-index da4a6a1..0acf42c0 100644
---- a/kernel/fork.c
-+++ b/kernel/fork.c
-@@ -66,6 +66,7 @@
- #include <linux/user-return-notifier.h>
- #include <linux/oom.h>
- #include <linux/khugepaged.h>
-+#include <linux/signalfd.h>
-
- #include <asm/pgtable.h>
- #include <asm/pgalloc.h>
-@@ -910,8 +911,10 @@ static int copy_sighand(unsigned long clone_flags, struct task_struct *tsk)
-
- void __cleanup_sighand(struct sighand_struct *sighand)
- {
-- if (atomic_dec_and_test(&sighand->count))
-+ if (atomic_dec_and_test(&sighand->count)) {
-+ signalfd_cleanup(sighand);
- kmem_cache_free(sighand_cachep, sighand);
-+ }
- }
-
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0069-epoll-ep_unregister_pollwait-can-use-the-freed-pwq-w.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0069-epoll-ep_unregister_pollwait-can-use-the-freed-pwq-w.patch
deleted file mode 100644
index 76320d6..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0069-epoll-ep_unregister_pollwait-can-use-the-freed-pwq-w.patch
+++ /dev/null
@@ -1,116 +0,0 @@
-From 79e9524d07258634c0683840b760d2ab682a23be Mon Sep 17 00:00:00 2001
-From: Oleg Nesterov <oleg at redhat.com>
-Date: Fri, 24 Feb 2012 20:07:29 +0100
-Subject: [PATCH 69/72] epoll: ep_unregister_pollwait() can use the freed
- pwq->whead
-
-commit 971316f0503a5c50633d07b83b6db2f15a3a5b00 upstream.
-
-signalfd_cleanup() ensures that ->signalfd_wqh is not used, but
-this is not enough. eppoll_entry->whead still points to the memory
-we are going to free, ep_unregister_pollwait()->remove_wait_queue()
-is obviously unsafe.
-
-Change ep_poll_callback(POLLFREE) to set eppoll_entry->whead = NULL,
-change ep_unregister_pollwait() to check pwq->whead != NULL under
-rcu_read_lock() before remove_wait_queue(). We add the new helper,
-ep_remove_wait_queue(), for this.
-
-This works because sighand_cachep is SLAB_DESTROY_BY_RCU and because
-->signalfd_wqh is initialized in sighand_ctor(), not in copy_sighand.
-ep_unregister_pollwait()->remove_wait_queue() can play with already
-freed and potentially reused ->sighand, but this is fine. This memory
-must have the valid ->signalfd_wqh until rcu_read_unlock().
-
-Reported-by: Maxime Bizon <mbizon at freebox.fr>
-Signed-off-by: Oleg Nesterov <oleg at redhat.com>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/eventpoll.c | 30 +++++++++++++++++++++++++++---
- fs/signalfd.c | 6 +++++-
- 2 files changed, 32 insertions(+), 4 deletions(-)
-
-diff --git a/fs/eventpoll.c b/fs/eventpoll.c
-index ede66ad..12a772b 100644
---- a/fs/eventpoll.c
-+++ b/fs/eventpoll.c
-@@ -299,6 +299,11 @@ static inline int ep_is_linked(struct list_head *p)
- return !list_empty(p);
- }
-
-+static inline struct eppoll_entry *ep_pwq_from_wait(wait_queue_t *p)
-+{
-+ return container_of(p, struct eppoll_entry, wait);
-+}
-+
- /* Get the "struct epitem" from a wait queue pointer */
- static inline struct epitem *ep_item_from_wait(wait_queue_t *p)
- {
-@@ -446,6 +451,18 @@ static void ep_poll_safewake(wait_queue_head_t *wq)
- put_cpu();
- }
-
-+static void ep_remove_wait_queue(struct eppoll_entry *pwq)
-+{
-+ wait_queue_head_t *whead;
-+
-+ rcu_read_lock();
-+ /* If it is cleared by POLLFREE, it should be rcu-safe */
-+ whead = rcu_dereference(pwq->whead);
-+ if (whead)
-+ remove_wait_queue(whead, &pwq->wait);
-+ rcu_read_unlock();
-+}
-+
- /*
- * This function unregisters poll callbacks from the associated file
- * descriptor. Must be called with "mtx" held (or "epmutex" if called from
-@@ -460,7 +477,7 @@ static void ep_unregister_pollwait(struct eventpoll *ep, struct epitem *epi)
- pwq = list_first_entry(lsthead, struct eppoll_entry, llink);
-
- list_del(&pwq->llink);
-- remove_wait_queue(pwq->whead, &pwq->wait);
-+ ep_remove_wait_queue(pwq);
- kmem_cache_free(pwq_cache, pwq);
- }
- }
-@@ -827,9 +844,16 @@ static int ep_poll_callback(wait_queue_t *wait, unsigned mode, int sync, void *k
- struct epitem *epi = ep_item_from_wait(wait);
- struct eventpoll *ep = epi->ep;
-
-- /* the caller holds eppoll_entry->whead->lock */
-- if ((unsigned long)key & POLLFREE)
-+ if ((unsigned long)key & POLLFREE) {
-+ ep_pwq_from_wait(wait)->whead = NULL;
-+ /*
-+ * whead = NULL above can race with ep_remove_wait_queue()
-+ * which can do another remove_wait_queue() after us, so we
-+ * can't use __remove_wait_queue(). whead->lock is held by
-+ * the caller.
-+ */
- list_del_init(&wait->task_list);
-+ }
-
- spin_lock_irqsave(&ep->lock, flags);
-
-diff --git a/fs/signalfd.c b/fs/signalfd.c
-index 79c1eea..7ae2a57 100644
---- a/fs/signalfd.c
-+++ b/fs/signalfd.c
-@@ -33,7 +33,11 @@
- void signalfd_cleanup(struct sighand_struct *sighand)
- {
- wait_queue_head_t *wqh = &sighand->signalfd_wqh;
--
-+ /*
-+ * The lockless check can race with remove_wait_queue() in progress,
-+ * but in this case its caller should run under rcu_read_lock() and
-+ * sighand_cachep is SLAB_DESTROY_BY_RCU, we can safely return.
-+ */
- if (likely(!waitqueue_active(wqh)))
- return;
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0070-epoll-limit-paths.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0070-epoll-limit-paths.patch
deleted file mode 100644
index 434e2eb..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0070-epoll-limit-paths.patch
+++ /dev/null
@@ -1,475 +0,0 @@
-From 025c3f2ad21385eddb5bec1f742c1cdb6164ca30 Mon Sep 17 00:00:00 2001
-From: Jason Baron <jbaron at redhat.com>
-Date: Thu, 12 Jan 2012 17:17:43 -0800
-Subject: [PATCH 70/72] epoll: limit paths
-
-commit 28d82dc1c4edbc352129f97f4ca22624d1fe61de upstream.
-
-The current epoll code can be tickled to run basically indefinitely in
-both loop detection path check (on ep_insert()), and in the wakeup paths.
-The programs that tickle this behavior set up deeply linked networks of
-epoll file descriptors that cause the epoll algorithms to traverse them
-indefinitely. A couple of these sample programs have been previously
-posted in this thread: https://lkml.org/lkml/2011/2/25/297.
-
-To fix the loop detection path check algorithms, I simply keep track of
-the epoll nodes that have been already visited. Thus, the loop detection
-becomes proportional to the number of epoll file descriptor and links.
-This dramatically decreases the run-time of the loop check algorithm. In
-one diabolical case I tried it reduced the run-time from 15 mintues (all
-in kernel time) to .3 seconds.
-
-Fixing the wakeup paths could be done at wakeup time in a similar manner
-by keeping track of nodes that have already been visited, but the
-complexity is harder, since there can be multiple wakeups on different
-cpus...Thus, I've opted to limit the number of possible wakeup paths when
-the paths are created.
-
-This is accomplished, by noting that the end file descriptor points that
-are found during the loop detection pass (from the newly added link), are
-actually the sources for wakeup events. I keep a list of these file
-descriptors and limit the number and length of these paths that emanate
-from these 'source file descriptors'. In the current implemetation I
-allow 1000 paths of length 1, 500 of length 2, 100 of length 3, 50 of
-length 4 and 10 of length 5. Note that it is sufficient to check the
-'source file descriptors' reachable from the newly added link, since no
-other 'source file descriptors' will have newly added links. This allows
-us to check only the wakeup paths that may have gotten too long, and not
-re-check all possible wakeup paths on the system.
-
-In terms of the path limit selection, I think its first worth noting that
-the most common case for epoll, is probably the model where you have 1
-epoll file descriptor that is monitoring n number of 'source file
-descriptors'. In this case, each 'source file descriptor' has a 1 path of
-length 1. Thus, I believe that the limits I'm proposing are quite
-reasonable and in fact may be too generous. Thus, I'm hoping that the
-proposed limits will not prevent any workloads that currently work to
-fail.
-
-In terms of locking, I have extended the use of the 'epmutex' to all
-epoll_ctl add and remove operations. Currently its only used in a subset
-of the add paths. I need to hold the epmutex, so that we can correctly
-traverse a coherent graph, to check the number of paths. I believe that
-this additional locking is probably ok, since its in the setup/teardown
-paths, and doesn't affect the running paths, but it certainly is going to
-add some extra overhead. Also, worth noting is that the epmuex was
-recently added to the ep_ctl add operations in the initial path loop
-detection code using the argument that it was not on a critical path.
-
-Another thing to note here, is the length of epoll chains that is allowed.
-Currently, eventpoll.c defines:
-
-/* Maximum number of nesting allowed inside epoll sets */
-#define EP_MAX_NESTS 4
-
-This basically means that I am limited to a graph depth of 5 (EP_MAX_NESTS
-+ 1). However, this limit is currently only enforced during the loop
-check detection code, and only when the epoll file descriptors are added
-in a certain order. Thus, this limit is currently easily bypassed. The
-newly added check for wakeup paths, stricly limits the wakeup paths to a
-length of 5, regardless of the order in which ep's are linked together.
-Thus, a side-effect of the new code is a more consistent enforcement of
-the graph depth.
-
-Thus far, I've tested this, using the sample programs previously
-mentioned, which now either return quickly or return -EINVAL. I've also
-testing using the piptest.c epoll tester, which showed no difference in
-performance. I've also created a number of different epoll networks and
-tested that they behave as expectded.
-
-I believe this solves the original diabolical test cases, while still
-preserving the sane epoll nesting.
-
-Signed-off-by: Jason Baron <jbaron at redhat.com>
-Cc: Nelson Elhage <nelhage at ksplice.com>
-Cc: Davide Libenzi <davidel at xmailserver.org>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- fs/eventpoll.c | 234 ++++++++++++++++++++++++++++++++++++++++-----
- include/linux/eventpoll.h | 1 +
- include/linux/fs.h | 1 +
- 3 files changed, 211 insertions(+), 25 deletions(-)
-
-diff --git a/fs/eventpoll.c b/fs/eventpoll.c
-index 12a772b..ea54cde 100644
---- a/fs/eventpoll.c
-+++ b/fs/eventpoll.c
-@@ -197,6 +197,12 @@ struct eventpoll {
-
- /* The user that created the eventpoll descriptor */
- struct user_struct *user;
-+
-+ struct file *file;
-+
-+ /* used to optimize loop detection check */
-+ int visited;
-+ struct list_head visited_list_link;
- };
-
- /* Wait structure used by the poll hooks */
-@@ -255,6 +261,15 @@ static struct kmem_cache *epi_cache __read_mostly;
- /* Slab cache used to allocate "struct eppoll_entry" */
- static struct kmem_cache *pwq_cache __read_mostly;
-
-+/* Visited nodes during ep_loop_check(), so we can unset them when we finish */
-+static LIST_HEAD(visited_list);
-+
-+/*
-+ * List of files with newly added links, where we may need to limit the number
-+ * of emanating paths. Protected by the epmutex.
-+ */
-+static LIST_HEAD(tfile_check_list);
-+
- #ifdef CONFIG_SYSCTL
-
- #include <linux/sysctl.h>
-@@ -276,6 +291,12 @@ ctl_table epoll_table[] = {
- };
- #endif /* CONFIG_SYSCTL */
-
-+static const struct file_operations eventpoll_fops;
-+
-+static inline int is_file_epoll(struct file *f)
-+{
-+ return f->f_op == &eventpoll_fops;
-+}
-
- /* Setup the structure that is used as key for the RB tree */
- static inline void ep_set_ffd(struct epoll_filefd *ffd,
-@@ -728,12 +749,6 @@ static const struct file_operations eventpoll_fops = {
- .llseek = noop_llseek,
- };
-
--/* Fast test to see if the file is an eventpoll file */
--static inline int is_file_epoll(struct file *f)
--{
-- return f->f_op == &eventpoll_fops;
--}
--
- /*
- * This is called from eventpoll_release() to unlink files from the eventpoll
- * interface. We need to have this facility to cleanup correctly files that are
-@@ -954,6 +969,99 @@ static void ep_rbtree_insert(struct eventpoll *ep, struct epitem *epi)
- rb_insert_color(&epi->rbn, &ep->rbr);
- }
-
-+
-+
-+#define PATH_ARR_SIZE 5
-+/*
-+ * These are the number paths of length 1 to 5, that we are allowing to emanate
-+ * from a single file of interest. For example, we allow 1000 paths of length
-+ * 1, to emanate from each file of interest. This essentially represents the
-+ * potential wakeup paths, which need to be limited in order to avoid massive
-+ * uncontrolled wakeup storms. The common use case should be a single ep which
-+ * is connected to n file sources. In this case each file source has 1 path
-+ * of length 1. Thus, the numbers below should be more than sufficient. These
-+ * path limits are enforced during an EPOLL_CTL_ADD operation, since a modify
-+ * and delete can't add additional paths. Protected by the epmutex.
-+ */
-+static const int path_limits[PATH_ARR_SIZE] = { 1000, 500, 100, 50, 10 };
-+static int path_count[PATH_ARR_SIZE];
-+
-+static int path_count_inc(int nests)
-+{
-+ if (++path_count[nests] > path_limits[nests])
-+ return -1;
-+ return 0;
-+}
-+
-+static void path_count_init(void)
-+{
-+ int i;
-+
-+ for (i = 0; i < PATH_ARR_SIZE; i++)
-+ path_count[i] = 0;
-+}
-+
-+static int reverse_path_check_proc(void *priv, void *cookie, int call_nests)
-+{
-+ int error = 0;
-+ struct file *file = priv;
-+ struct file *child_file;
-+ struct epitem *epi;
-+
-+ list_for_each_entry(epi, &file->f_ep_links, fllink) {
-+ child_file = epi->ep->file;
-+ if (is_file_epoll(child_file)) {
-+ if (list_empty(&child_file->f_ep_links)) {
-+ if (path_count_inc(call_nests)) {
-+ error = -1;
-+ break;
-+ }
-+ } else {
-+ error = ep_call_nested(&poll_loop_ncalls,
-+ EP_MAX_NESTS,
-+ reverse_path_check_proc,
-+ child_file, child_file,
-+ current);
-+ }
-+ if (error != 0)
-+ break;
-+ } else {
-+ printk(KERN_ERR "reverse_path_check_proc: "
-+ "file is not an ep!\n");
-+ }
-+ }
-+ return error;
-+}
-+
-+/**
-+ * reverse_path_check - The tfile_check_list is list of file *, which have
-+ * links that are proposed to be newly added. We need to
-+ * make sure that those added links don't add too many
-+ * paths such that we will spend all our time waking up
-+ * eventpoll objects.
-+ *
-+ * Returns: Returns zero if the proposed links don't create too many paths,
-+ * -1 otherwise.
-+ */
-+static int reverse_path_check(void)
-+{
-+ int length = 0;
-+ int error = 0;
-+ struct file *current_file;
-+
-+ /* let's call this for all tfiles */
-+ list_for_each_entry(current_file, &tfile_check_list, f_tfile_llink) {
-+ length++;
-+ path_count_init();
-+ error = ep_call_nested(&poll_loop_ncalls, EP_MAX_NESTS,
-+ reverse_path_check_proc, current_file,
-+ current_file, current);
-+ if (error)
-+ break;
-+ }
-+ return error;
-+}
-+
- /*
- * Must be called with "mtx" held.
- */
-@@ -1015,6 +1123,11 @@ static int ep_insert(struct eventpoll *ep, struct epoll_event *event,
- */
- ep_rbtree_insert(ep, epi);
-
-+ /* now check if we've created too many backpaths */
-+ error = -EINVAL;
-+ if (reverse_path_check())
-+ goto error_remove_epi;
-+
- /* We have to drop the new item inside our item list to keep track of it */
- spin_lock_irqsave(&ep->lock, flags);
-
-@@ -1039,6 +1152,14 @@ static int ep_insert(struct eventpoll *ep, struct epoll_event *event,
-
- return 0;
-
-+error_remove_epi:
-+ spin_lock(&tfile->f_lock);
-+ if (ep_is_linked(&epi->fllink))
-+ list_del_init(&epi->fllink);
-+ spin_unlock(&tfile->f_lock);
-+
-+ rb_erase(&epi->rbn, &ep->rbr);
-+
- error_unregister:
- ep_unregister_pollwait(ep, epi);
-
-@@ -1303,18 +1424,36 @@ static int ep_loop_check_proc(void *priv, void *cookie, int call_nests)
- int error = 0;
- struct file *file = priv;
- struct eventpoll *ep = file->private_data;
-+ struct eventpoll *ep_tovisit;
- struct rb_node *rbp;
- struct epitem *epi;
-
- mutex_lock_nested(&ep->mtx, call_nests + 1);
-+ ep->visited = 1;
-+ list_add(&ep->visited_list_link, &visited_list);
- for (rbp = rb_first(&ep->rbr); rbp; rbp = rb_next(rbp)) {
- epi = rb_entry(rbp, struct epitem, rbn);
- if (unlikely(is_file_epoll(epi->ffd.file))) {
-+ ep_tovisit = epi->ffd.file->private_data;
-+ if (ep_tovisit->visited)
-+ continue;
- error = ep_call_nested(&poll_loop_ncalls, EP_MAX_NESTS,
-- ep_loop_check_proc, epi->ffd.file,
-- epi->ffd.file->private_data, current);
-+ ep_loop_check_proc, epi->ffd.file,
-+ ep_tovisit, current);
- if (error != 0)
- break;
-+ } else {
-+ /*
-+ * If we've reached a file that is not associated with
-+ * an ep, then we need to check if the newly added
-+ * links are going to add too many wakeup paths. We do
-+ * this by adding it to the tfile_check_list, if it's
-+ * not already there, and calling reverse_path_check()
-+ * during ep_insert().
-+ */
-+ if (list_empty(&epi->ffd.file->f_tfile_llink))
-+ list_add(&epi->ffd.file->f_tfile_llink,
-+ &tfile_check_list);
- }
- }
- mutex_unlock(&ep->mtx);
-@@ -1335,8 +1474,31 @@ static int ep_loop_check_proc(void *priv, void *cookie, int call_nests)
- */
- static int ep_loop_check(struct eventpoll *ep, struct file *file)
- {
-- return ep_call_nested(&poll_loop_ncalls, EP_MAX_NESTS,
-+ int ret;
-+ struct eventpoll *ep_cur, *ep_next;
-+
-+ ret = ep_call_nested(&poll_loop_ncalls, EP_MAX_NESTS,
- ep_loop_check_proc, file, ep, current);
-+ /* clear visited list */
-+ list_for_each_entry_safe(ep_cur, ep_next, &visited_list,
-+ visited_list_link) {
-+ ep_cur->visited = 0;
-+ list_del(&ep_cur->visited_list_link);
-+ }
-+ return ret;
-+}
-+
-+static void clear_tfile_check_list(void)
-+{
-+ struct file *file;
-+
-+ /* first clear the tfile_check_list */
-+ while (!list_empty(&tfile_check_list)) {
-+ file = list_first_entry(&tfile_check_list, struct file,
-+ f_tfile_llink);
-+ list_del_init(&file->f_tfile_llink);
-+ }
-+ INIT_LIST_HEAD(&tfile_check_list);
- }
-
- /*
-@@ -1344,8 +1506,9 @@ static int ep_loop_check(struct eventpoll *ep, struct file *file)
- */
- SYSCALL_DEFINE1(epoll_create1, int, flags)
- {
-- int error;
-+ int error, fd;
- struct eventpoll *ep = NULL;
-+ struct file *file;
-
- /* Check the EPOLL_* constant for consistency. */
- BUILD_BUG_ON(EPOLL_CLOEXEC != O_CLOEXEC);
-@@ -1362,11 +1525,25 @@ SYSCALL_DEFINE1(epoll_create1, int, flags)
- * Creates all the items needed to setup an eventpoll file. That is,
- * a file structure and a free file descriptor.
- */
-- error = anon_inode_getfd("[eventpoll]", &eventpoll_fops, ep,
-+ fd = get_unused_fd_flags(O_RDWR | (flags & O_CLOEXEC));
-+ if (fd < 0) {
-+ error = fd;
-+ goto out_free_ep;
-+ }
-+ file = anon_inode_getfile("[eventpoll]", &eventpoll_fops, ep,
- O_RDWR | (flags & O_CLOEXEC));
-- if (error < 0)
-- ep_free(ep);
--
-+ if (IS_ERR(file)) {
-+ error = PTR_ERR(file);
-+ goto out_free_fd;
-+ }
-+ fd_install(fd, file);
-+ ep->file = file;
-+ return fd;
-+
-+out_free_fd:
-+ put_unused_fd(fd);
-+out_free_ep:
-+ ep_free(ep);
- return error;
- }
-
-@@ -1432,21 +1609,27 @@ SYSCALL_DEFINE4(epoll_ctl, int, epfd, int, op, int, fd,
- /*
- * When we insert an epoll file descriptor, inside another epoll file
- * descriptor, there is the change of creating closed loops, which are
-- * better be handled here, than in more critical paths.
-+ * better be handled here, than in more critical paths. While we are
-+ * checking for loops we also determine the list of files reachable
-+ * and hang them on the tfile_check_list, so we can check that we
-+ * haven't created too many possible wakeup paths.
- *
-- * We hold epmutex across the loop check and the insert in this case, in
-- * order to prevent two separate inserts from racing and each doing the
-- * insert "at the same time" such that ep_loop_check passes on both
-- * before either one does the insert, thereby creating a cycle.
-+ * We need to hold the epmutex across both ep_insert and ep_remove
-+ * b/c we want to make sure we are looking at a coherent view of
-+ * epoll network.
- */
-- if (unlikely(is_file_epoll(tfile) && op == EPOLL_CTL_ADD)) {
-+ if (op == EPOLL_CTL_ADD || op == EPOLL_CTL_DEL) {
- mutex_lock(&epmutex);
- did_lock_epmutex = 1;
-- error = -ELOOP;
-- if (ep_loop_check(ep, tfile) != 0)
-- goto error_tgt_fput;
- }
--
-+ if (op == EPOLL_CTL_ADD) {
-+ if (is_file_epoll(tfile)) {
-+ error = -ELOOP;
-+ if (ep_loop_check(ep, tfile) != 0)
-+ goto error_tgt_fput;
-+ } else
-+ list_add(&tfile->f_tfile_llink, &tfile_check_list);
-+ }
-
- mutex_lock_nested(&ep->mtx, 0);
-
-@@ -1465,6 +1648,7 @@ SYSCALL_DEFINE4(epoll_ctl, int, epfd, int, op, int, fd,
- error = ep_insert(ep, &epds, tfile, fd);
- } else
- error = -EEXIST;
-+ clear_tfile_check_list();
- break;
- case EPOLL_CTL_DEL:
- if (epi)
-@@ -1483,7 +1667,7 @@ SYSCALL_DEFINE4(epoll_ctl, int, epfd, int, op, int, fd,
- mutex_unlock(&ep->mtx);
-
- error_tgt_fput:
-- if (unlikely(did_lock_epmutex))
-+ if (did_lock_epmutex)
- mutex_unlock(&epmutex);
-
- fput(tfile);
-diff --git a/include/linux/eventpoll.h b/include/linux/eventpoll.h
-index f362733..657ab55 100644
---- a/include/linux/eventpoll.h
-+++ b/include/linux/eventpoll.h
-@@ -61,6 +61,7 @@ struct file;
- static inline void eventpoll_init_file(struct file *file)
- {
- INIT_LIST_HEAD(&file->f_ep_links);
-+ INIT_LIST_HEAD(&file->f_tfile_llink);
- }
-
-
-diff --git a/include/linux/fs.h b/include/linux/fs.h
-index e0bc4ff..10b2288 100644
---- a/include/linux/fs.h
-+++ b/include/linux/fs.h
-@@ -1001,6 +1001,7 @@ struct file {
- #ifdef CONFIG_EPOLL
- /* Used by fs/eventpoll.c to link all the hooks to this file */
- struct list_head f_ep_links;
-+ struct list_head f_tfile_llink;
- #endif /* #ifdef CONFIG_EPOLL */
- struct address_space *f_mapping;
- #ifdef CONFIG_DEBUG_WRITECOUNT
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0071-cdrom-use-copy_to_user-without-the-underscores.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0071-cdrom-use-copy_to_user-without-the-underscores.patch
deleted file mode 100644
index 5b37620..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0071-cdrom-use-copy_to_user-without-the-underscores.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From 8f731c0fd9c3c25f2044585b41cf5930f86575a5 Mon Sep 17 00:00:00 2001
-From: Dan Carpenter <dan.carpenter at oracle.com>
-Date: Mon, 6 Feb 2012 10:20:45 +0100
-Subject: [PATCH 71/72] cdrom: use copy_to_user() without the underscores
-
-commit 822bfa51ce44f2c63c300fdb76dc99c4d5a5ca9f upstream.
-
-"nframes" comes from the user and "nframes * CD_FRAMESIZE_RAW" can wrap
-on 32 bit systems. That would have been ok if we used the same wrapped
-value for the copy, but we use a shifted value. We should just use the
-checked version of copy_to_user() because it's not going to make a
-difference to the speed.
-
-Signed-off-by: Dan Carpenter <dan.carpenter at oracle.com>
-Signed-off-by: Jens Axboe <axboe at kernel.dk>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
----
- drivers/cdrom/cdrom.c | 8 +-------
- 1 file changed, 1 insertion(+), 7 deletions(-)
-
-diff --git a/drivers/cdrom/cdrom.c b/drivers/cdrom/cdrom.c
-index cedb231..2678b6f 100644
---- a/drivers/cdrom/cdrom.c
-+++ b/drivers/cdrom/cdrom.c
-@@ -2120,11 +2120,6 @@ static int cdrom_read_cdda_old(struct cdrom_device_info *cdi, __u8 __user *ubuf,
- if (!nr)
- return -ENOMEM;
-
-- if (!access_ok(VERIFY_WRITE, ubuf, nframes * CD_FRAMESIZE_RAW)) {
-- ret = -EFAULT;
-- goto out;
-- }
--
- cgc.data_direction = CGC_DATA_READ;
- while (nframes > 0) {
- if (nr > nframes)
-@@ -2133,7 +2128,7 @@ static int cdrom_read_cdda_old(struct cdrom_device_info *cdi, __u8 __user *ubuf,
- ret = cdrom_read_block(cdi, &cgc, lba, nr, 1, CD_FRAMESIZE_RAW);
- if (ret)
- break;
-- if (__copy_to_user(ubuf, cgc.buffer, CD_FRAMESIZE_RAW * nr)) {
-+ if (copy_to_user(ubuf, cgc.buffer, CD_FRAMESIZE_RAW * nr)) {
- ret = -EFAULT;
- break;
- }
-@@ -2141,7 +2136,6 @@ static int cdrom_read_cdda_old(struct cdrom_device_info *cdi, __u8 __user *ubuf,
- nframes -= nr;
- lba += nr;
- }
--out:
- kfree(cgc.buffer);
- return ret;
- }
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0072-Linux-3.2.9.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0072-Linux-3.2.9.patch
deleted file mode 100644
index cfd96ea..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0072-Linux-3.2.9.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From f9e8b39d6e660288a820703eadc8107b1db47022 Mon Sep 17 00:00:00 2001
-From: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Date: Wed, 29 Feb 2012 16:32:49 -0800
-Subject: [PATCH 72/72] Linux 3.2.9
-
----
- Makefile | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Makefile b/Makefile
-index 7df8a84..5f1739b 100644
---- a/Makefile
-+++ b/Makefile
-@@ -1,6 +1,6 @@
- VERSION = 3
- PATCHLEVEL = 2
--SUBLEVEL = 8
-+SUBLEVEL = 9
- EXTRAVERSION =
- NAME = Saber-toothed Squirrel
-
---
-1.7.9.4
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/am335x-evm/defconfig b/recipes-kernel/linux/linux-ti33x-psp-3.2/am335x-evm/defconfig
deleted file mode 100644
index 39db9ab..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/am335x-evm/defconfig
+++ /dev/null
@@ -1,2640 +0,0 @@
-#
-# Automatically generated file; DO NOT EDIT.
-# Linux/arm 3.2.6 Kernel Configuration
-#
-CONFIG_ARM=y
-CONFIG_HAVE_PWM=y
-CONFIG_SYS_SUPPORTS_APM_EMULATION=y
-CONFIG_HAVE_SCHED_CLOCK=y
-CONFIG_GENERIC_GPIO=y
-# CONFIG_ARCH_USES_GETTIMEOFFSET is not set
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_KTIME_SCALAR=y
-CONFIG_HAVE_PROC_CPU=y
-CONFIG_STACKTRACE_SUPPORT=y
-CONFIG_HAVE_LATENCYTOP_SUPPORT=y
-CONFIG_LOCKDEP_SUPPORT=y
-CONFIG_TRACE_IRQFLAGS_SUPPORT=y
-CONFIG_HARDIRQS_SW_RESEND=y
-CONFIG_GENERIC_IRQ_PROBE=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_ARCH_HAS_CPUFREQ=y
-CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_NEED_DMA_MAP_STATE=y
-CONFIG_VECTORS_BASE=0xffff0000
-CONFIG_ARM_PATCH_PHYS_VIRT=y
-CONFIG_GENERIC_BUG=y
-CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-CONFIG_HAVE_IRQ_WORK=y
-
-#
-# General setup
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-CONFIG_CROSS_COMPILE=""
-CONFIG_LOCALVERSION=""
-CONFIG_LOCALVERSION_AUTO=y
-CONFIG_HAVE_KERNEL_GZIP=y
-CONFIG_HAVE_KERNEL_LZMA=y
-CONFIG_HAVE_KERNEL_LZO=y
-CONFIG_KERNEL_GZIP=y
-# CONFIG_KERNEL_LZMA is not set
-# CONFIG_KERNEL_LZO is not set
-CONFIG_DEFAULT_HOSTNAME="(none)"
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-CONFIG_SYSVIPC_SYSCTL=y
-CONFIG_POSIX_MQUEUE=y
-CONFIG_POSIX_MQUEUE_SYSCTL=y
-CONFIG_BSD_PROCESS_ACCT=y
-# CONFIG_BSD_PROCESS_ACCT_V3 is not set
-# CONFIG_FHANDLE is not set
-# CONFIG_TASKSTATS is not set
-# CONFIG_AUDIT is not set
-CONFIG_HAVE_GENERIC_HARDIRQS=y
-
-#
-# IRQ subsystem
-#
-CONFIG_GENERIC_HARDIRQS=y
-CONFIG_HAVE_SPARSE_IRQ=y
-CONFIG_GENERIC_IRQ_SHOW=y
-CONFIG_GENERIC_IRQ_CHIP=y
-CONFIG_IRQ_DOMAIN=y
-# CONFIG_SPARSE_IRQ is not set
-
-#
-# RCU Subsystem
-#
-CONFIG_TINY_RCU=y
-# CONFIG_PREEMPT_RCU is not set
-# CONFIG_RCU_TRACE is not set
-# CONFIG_TREE_RCU_TRACE is not set
-CONFIG_IKCONFIG=y
-CONFIG_IKCONFIG_PROC=y
-CONFIG_LOG_BUF_SHIFT=16
-# CONFIG_CGROUPS is not set
-CONFIG_NAMESPACES=y
-CONFIG_UTS_NS=y
-CONFIG_IPC_NS=y
-CONFIG_USER_NS=y
-CONFIG_PID_NS=y
-CONFIG_NET_NS=y
-# CONFIG_SCHED_AUTOGROUP is not set
-# CONFIG_SYSFS_DEPRECATED is not set
-# CONFIG_RELAY is not set
-CONFIG_BLK_DEV_INITRD=y
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_RD_GZIP=y
-CONFIG_RD_BZIP2=y
-CONFIG_RD_LZMA=y
-CONFIG_RD_XZ=y
-CONFIG_RD_LZO=y
-# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
-CONFIG_SYSCTL=y
-CONFIG_ANON_INODES=y
-# CONFIG_EXPERT is not set
-CONFIG_UID16=y
-# CONFIG_SYSCTL_SYSCALL is not set
-CONFIG_KALLSYMS=y
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_EPOLL=y
-CONFIG_SIGNALFD=y
-CONFIG_TIMERFD=y
-CONFIG_EVENTFD=y
-CONFIG_SHMEM=y
-CONFIG_AIO=y
-# CONFIG_EMBEDDED is not set
-CONFIG_HAVE_PERF_EVENTS=y
-CONFIG_PERF_USE_VMALLOC=y
-
-#
-# Kernel Performance Events And Counters
-#
-# CONFIG_PERF_EVENTS is not set
-# CONFIG_PERF_COUNTERS is not set
-CONFIG_VM_EVENT_COUNTERS=y
-CONFIG_COMPAT_BRK=y
-CONFIG_SLAB=y
-# CONFIG_SLUB is not set
-CONFIG_PROFILING=y
-CONFIG_OPROFILE=y
-CONFIG_HAVE_OPROFILE=y
-# CONFIG_KPROBES is not set
-CONFIG_HAVE_KPROBES=y
-CONFIG_HAVE_KRETPROBES=y
-CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
-CONFIG_HAVE_CLK=y
-CONFIG_HAVE_DMA_API_DEBUG=y
-
-#
-# GCOV-based kernel profiling
-#
-# CONFIG_GCOV_KERNEL is not set
-CONFIG_HAVE_GENERIC_DMA_COHERENT=y
-CONFIG_SLABINFO=y
-CONFIG_RT_MUTEXES=y
-CONFIG_BASE_SMALL=0
-CONFIG_MODULES=y
-CONFIG_MODULE_FORCE_LOAD=y
-CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-CONFIG_MODVERSIONS=y
-CONFIG_MODULE_SRCVERSION_ALL=y
-CONFIG_BLOCK=y
-CONFIG_LBDAF=y
-# CONFIG_BLK_DEV_BSG is not set
-# CONFIG_BLK_DEV_BSGLIB is not set
-# CONFIG_BLK_DEV_INTEGRITY is not set
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_DEADLINE=y
-CONFIG_IOSCHED_CFQ=y
-# CONFIG_DEFAULT_DEADLINE is not set
-CONFIG_DEFAULT_CFQ=y
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="cfq"
-# CONFIG_INLINE_SPIN_TRYLOCK is not set
-# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
-# CONFIG_INLINE_SPIN_LOCK is not set
-# CONFIG_INLINE_SPIN_LOCK_BH is not set
-# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
-# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
-CONFIG_INLINE_SPIN_UNLOCK=y
-# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
-CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
-# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
-# CONFIG_INLINE_READ_TRYLOCK is not set
-# CONFIG_INLINE_READ_LOCK is not set
-# CONFIG_INLINE_READ_LOCK_BH is not set
-# CONFIG_INLINE_READ_LOCK_IRQ is not set
-# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
-CONFIG_INLINE_READ_UNLOCK=y
-# CONFIG_INLINE_READ_UNLOCK_BH is not set
-CONFIG_INLINE_READ_UNLOCK_IRQ=y
-# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
-# CONFIG_INLINE_WRITE_TRYLOCK is not set
-# CONFIG_INLINE_WRITE_LOCK is not set
-# CONFIG_INLINE_WRITE_LOCK_BH is not set
-# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
-# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
-CONFIG_INLINE_WRITE_UNLOCK=y
-# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
-CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
-# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
-# CONFIG_MUTEX_SPIN_ON_OWNER is not set
-# CONFIG_FREEZER is not set
-
-#
-# System Type
-#
-CONFIG_MMU=y
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_VEXPRESS is not set
-# CONFIG_ARCH_AT91 is not set
-# CONFIG_ARCH_BCMRING is not set
-# CONFIG_ARCH_HIGHBANK is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CNS3XXX is not set
-# CONFIG_ARCH_GEMINI is not set
-# CONFIG_ARCH_PRIMA2 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_EP93XX is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_MXC is not set
-# CONFIG_ARCH_MXS is not set
-# CONFIG_ARCH_NETX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_IOP13XX is not set
-# CONFIG_ARCH_IOP32X is not set
-# CONFIG_ARCH_IOP33X is not set
-# CONFIG_ARCH_IXP23XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_DOVE is not set
-# CONFIG_ARCH_KIRKWOOD is not set
-# CONFIG_ARCH_LPC32XX is not set
-# CONFIG_ARCH_MV78XX0 is not set
-# CONFIG_ARCH_ORION5X is not set
-# CONFIG_ARCH_MMP is not set
-# CONFIG_ARCH_KS8695 is not set
-# CONFIG_ARCH_W90X900 is not set
-# CONFIG_ARCH_TEGRA is not set
-# CONFIG_ARCH_PICOXCELL is not set
-# CONFIG_ARCH_PNX4008 is not set
-# CONFIG_ARCH_PXA is not set
-# CONFIG_ARCH_MSM is not set
-# CONFIG_ARCH_SHMOBILE is not set
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_S3C2410 is not set
-# CONFIG_ARCH_S3C64XX is not set
-# CONFIG_ARCH_S5P64X0 is not set
-# CONFIG_ARCH_S5PC100 is not set
-# CONFIG_ARCH_S5PV210 is not set
-# CONFIG_ARCH_EXYNOS is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_TCC_926 is not set
-# CONFIG_ARCH_U300 is not set
-# CONFIG_ARCH_U8500 is not set
-# CONFIG_ARCH_NOMADIK is not set
-# CONFIG_ARCH_DAVINCI is not set
-CONFIG_ARCH_OMAP=y
-# CONFIG_PLAT_SPEAR is not set
-# CONFIG_ARCH_VT8500 is not set
-# CONFIG_ARCH_ZYNQ is not set
-# CONFIG_GPIO_PCA953X is not set
-# CONFIG_KEYBOARD_GPIO_POLLED is not set
-
-#
-# TI OMAP Common Features
-#
-# CONFIG_ARCH_OMAP1 is not set
-CONFIG_ARCH_OMAP2PLUS=y
-
-#
-# OMAP Feature Selections
-#
-# CONFIG_OMAP_SMARTREFLEX is not set
-# CONFIG_OMAP_RESET_CLOCKS is not set
-CONFIG_OMAP_MUX=y
-CONFIG_OMAP_MUX_DEBUG=y
-CONFIG_OMAP_MUX_WARNINGS=y
-# CONFIG_OMAP_MCBSP is not set
-CONFIG_OMAP_MBOX_FWK=y
-CONFIG_OMAP_MBOX_KFIFO_SIZE=256
-# CONFIG_OMAP_32K_TIMER is not set
-# CONFIG_OMAP3_L2_AUX_SECURE_SAVE_RESTORE is not set
-CONFIG_OMAP_DM_TIMER=y
-CONFIG_OMAP_PM_NOOP=y
-CONFIG_MACH_OMAP_GENERIC=y
-
-#
-# TI OMAP2/3/4 Specific Features
-#
-CONFIG_ARCH_OMAP2PLUS_TYPICAL=y
-# CONFIG_ARCH_OMAP2 is not set
-CONFIG_ARCH_OMAP3=y
-# CONFIG_ARCH_OMAP4 is not set
-# CONFIG_SOC_OMAP3430 is not set
-CONFIG_SOC_OMAPTI81XX=y
-CONFIG_SOC_OMAPAM33XX=y
-CONFIG_OMAP_PACKAGE_CBB=y
-
-#
-# OMAP Board Type
-#
-CONFIG_MACH_OMAP3_BEAGLE=y
-# CONFIG_MACH_DEVKIT8000 is not set
-# CONFIG_MACH_OMAP_LDP is not set
-# CONFIG_MACH_OMAP3530_LV_SOM is not set
-# CONFIG_MACH_OMAP3_TORPEDO is not set
-# CONFIG_MACH_ENCORE is not set
-# CONFIG_MACH_OVERO is not set
-# CONFIG_MACH_OMAP3EVM is not set
-# CONFIG_MACH_OMAP3517EVM is not set
-# CONFIG_MACH_CRANEBOARD is not set
-# CONFIG_MACH_OMAP3_PANDORA is not set
-# CONFIG_MACH_OMAP3_TOUCHBOOK is not set
-# CONFIG_MACH_OMAP_3430SDP is not set
-# CONFIG_MACH_NOKIA_RM680 is not set
-# CONFIG_MACH_NOKIA_RX51 is not set
-# CONFIG_MACH_OMAP_ZOOM2 is not set
-# CONFIG_MACH_OMAP_ZOOM3 is not set
-# CONFIG_MACH_CM_T35 is not set
-# CONFIG_MACH_CM_T3517 is not set
-# CONFIG_MACH_IGEP0020 is not set
-# CONFIG_MACH_IGEP0030 is not set
-# CONFIG_MACH_SBC3530 is not set
-# CONFIG_MACH_OMAP_3630SDP is not set
-CONFIG_MACH_TI8168EVM=y
-CONFIG_MACH_TI8148EVM=y
-CONFIG_MACH_AM335XEVM=y
-CONFIG_MACH_AM335XIAEVM=y
-# CONFIG_OMAP3_EMU is not set
-# CONFIG_OMAP3_SDRC_AC_TIMING is not set
-CONFIG_OMAP3_EDMA=y
-
-#
-# System MMU
-#
-
-#
-# Processor Type
-#
-CONFIG_CPU_V7=y
-CONFIG_CPU_32v6K=y
-CONFIG_CPU_32v7=y
-CONFIG_CPU_ABRT_EV7=y
-CONFIG_CPU_PABRT_V7=y
-CONFIG_CPU_CACHE_V7=y
-CONFIG_CPU_CACHE_VIPT=y
-CONFIG_CPU_COPY_V6=y
-CONFIG_CPU_TLB_V7=y
-CONFIG_CPU_HAS_ASID=y
-CONFIG_CPU_CP15=y
-CONFIG_CPU_CP15_MMU=y
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-CONFIG_ARM_THUMBEE=y
-# CONFIG_SWP_EMULATE is not set
-# CONFIG_CPU_ICACHE_DISABLE is not set
-# CONFIG_CPU_DCACHE_DISABLE is not set
-# CONFIG_CPU_BPREDICT_DISABLE is not set
-CONFIG_ARM_L1_CACHE_SHIFT_6=y
-CONFIG_ARM_L1_CACHE_SHIFT=6
-CONFIG_ARM_DMA_MEM_BUFFERABLE=y
-CONFIG_MULTI_IRQ_HANDLER=y
-# CONFIG_ARM_ERRATA_430973 is not set
-# CONFIG_ARM_ERRATA_458693 is not set
-# CONFIG_ARM_ERRATA_460075 is not set
-# CONFIG_ARM_ERRATA_720789 is not set
-# CONFIG_ARM_ERRATA_743622 is not set
-# CONFIG_ARM_ERRATA_751472 is not set
-# CONFIG_ARM_ERRATA_754322 is not set
-
-#
-# Bus support
-#
-# CONFIG_PCI_SYSCALL is not set
-# CONFIG_ARCH_SUPPORTS_MSI is not set
-# CONFIG_PCCARD is not set
-
-#
-# Kernel Features
-#
-CONFIG_TICK_ONESHOT=y
-CONFIG_NO_HZ=y
-CONFIG_HIGH_RES_TIMERS=y
-CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
-CONFIG_VMSPLIT_3G=y
-# CONFIG_VMSPLIT_2G is not set
-# CONFIG_VMSPLIT_1G is not set
-CONFIG_PAGE_OFFSET=0xC0000000
-CONFIG_PREEMPT_NONE=y
-# CONFIG_PREEMPT_VOLUNTARY is not set
-# CONFIG_PREEMPT is not set
-CONFIG_HZ=100
-# CONFIG_THUMB2_KERNEL is not set
-CONFIG_AEABI=y
-CONFIG_OABI_COMPAT=y
-CONFIG_ARCH_HAS_HOLES_MEMORYMODEL=y
-# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
-# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
-CONFIG_HAVE_ARCH_PFN_VALID=y
-# CONFIG_HIGHMEM is not set
-CONFIG_SELECT_MEMORY_MODEL=y
-CONFIG_FLATMEM_MANUAL=y
-CONFIG_FLATMEM=y
-CONFIG_FLAT_NODE_MEM_MAP=y
-CONFIG_HAVE_MEMBLOCK=y
-CONFIG_PAGEFLAGS_EXTENDED=y
-CONFIG_SPLIT_PTLOCK_CPUS=4
-# CONFIG_COMPACTION is not set
-# CONFIG_PHYS_ADDR_T_64BIT is not set
-CONFIG_ZONE_DMA_FLAG=0
-CONFIG_VIRT_TO_BUS=y
-# CONFIG_KSM is not set
-CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
-CONFIG_NEED_PER_CPU_KM=y
-# CONFIG_CLEANCACHE is not set
-CONFIG_FORCE_MAX_ZONEORDER=11
-# CONFIG_LEDS is not set
-CONFIG_ALIGNMENT_TRAP=y
-# CONFIG_UACCESS_WITH_MEMCPY is not set
-# CONFIG_SECCOMP is not set
-# CONFIG_CC_STACKPROTECTOR is not set
-# CONFIG_DEPRECATED_PARAM_STRUCT is not set
-
-#
-# Boot options
-#
-CONFIG_USE_OF=y
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-# CONFIG_ARM_APPENDED_DTB is not set
-CONFIG_CMDLINE="root=/dev/mmcblk0p2 rootwait console=ttyO0,115200"
-CONFIG_CMDLINE_FROM_BOOTLOADER=y
-# CONFIG_CMDLINE_EXTEND is not set
-# CONFIG_CMDLINE_FORCE is not set
-# CONFIG_XIP_KERNEL is not set
-# CONFIG_KEXEC is not set
-# CONFIG_CRASH_DUMP is not set
-# CONFIG_AUTO_ZRELADDR is not set
-
-#
-# CPU Power Management
-#
-
-#
-# CPU Frequency scaling
-#
-CONFIG_CPU_FREQ=y
-CONFIG_CPU_FREQ_TABLE=y
-CONFIG_CPU_FREQ_STAT=y
-# CONFIG_CPU_FREQ_STAT_DETAILS is not set
-# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
-CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
-# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
-# CONFIG_CPU_FREQ_GOV_PERFORMANCE is not set
-# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
-CONFIG_CPU_FREQ_GOV_USERSPACE=y
-CONFIG_CPU_FREQ_GOV_ONDEMAND=y
-# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set
-
-#
-# ARM CPU frequency scaling drivers
-#
-CONFIG_CPU_IDLE=y
-CONFIG_CPU_IDLE_GOV_LADDER=y
-CONFIG_CPU_IDLE_GOV_MENU=y
-
-#
-# Floating point emulation
-#
-
-#
-# At least one emulation must be selected
-#
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_NWFPE_XP is not set
-# CONFIG_FPE_FASTFPE is not set
-CONFIG_VFP=y
-CONFIG_VFPv3=y
-CONFIG_NEON=y
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
-CONFIG_HAVE_AOUT=y
-# CONFIG_BINFMT_AOUT is not set
-CONFIG_BINFMT_MISC=y
-
-#
-# Power management options
-#
-# CONFIG_SUSPEND is not set
-CONFIG_PM_RUNTIME=y
-CONFIG_PM=y
-# CONFIG_PM_DEBUG is not set
-# CONFIG_APM_EMULATION is not set
-CONFIG_ARCH_HAS_OPP=y
-CONFIG_PM_OPP=y
-CONFIG_PM_CLK=y
-CONFIG_CPU_PM=y
-CONFIG_ARCH_SUSPEND_POSSIBLE=y
-CONFIG_ARM_CPU_SUSPEND=y
-CONFIG_NET=y
-
-#
-# Networking options
-#
-CONFIG_PACKET=y
-CONFIG_UNIX=y
-# CONFIG_NET_KEY is not set
-CONFIG_INET=y
-CONFIG_IP_MULTICAST=y
-# CONFIG_IP_ADVANCED_ROUTER is not set
-CONFIG_IP_PNP=y
-CONFIG_IP_PNP_DHCP=y
-CONFIG_IP_PNP_BOOTP=y
-CONFIG_IP_PNP_RARP=y
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE_DEMUX is not set
-# CONFIG_IP_MROUTE is not set
-# CONFIG_ARPD is not set
-# CONFIG_SYN_COOKIES is not set
-# CONFIG_INET_AH is not set
-# CONFIG_INET_ESP is not set
-# CONFIG_INET_IPCOMP is not set
-# CONFIG_INET_XFRM_TUNNEL is not set
-# CONFIG_INET_TUNNEL is not set
-# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
-# CONFIG_INET_XFRM_MODE_TUNNEL is not set
-# CONFIG_INET_XFRM_MODE_BEET is not set
-# CONFIG_INET_LRO is not set
-# CONFIG_INET_DIAG is not set
-# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_CUBIC=y
-CONFIG_DEFAULT_TCP_CONG="cubic"
-# CONFIG_TCP_MD5SIG is not set
-# CONFIG_IPV6 is not set
-# CONFIG_NETLABEL is not set
-# CONFIG_NETWORK_SECMARK is not set
-# CONFIG_NETWORK_PHY_TIMESTAMPING is not set
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-CONFIG_NETFILTER_ADVANCED=y
-
-#
-# Core Netfilter Configuration
-#
-# CONFIG_NETFILTER_NETLINK_QUEUE is not set
-# CONFIG_NETFILTER_NETLINK_LOG is not set
-CONFIG_NF_CONNTRACK=y
-# CONFIG_NF_CONNTRACK_MARK is not set
-# CONFIG_NF_CONNTRACK_EVENTS is not set
-# CONFIG_NF_CONNTRACK_TIMESTAMP is not set
-# CONFIG_NF_CT_PROTO_DCCP is not set
-# CONFIG_NF_CT_PROTO_SCTP is not set
-# CONFIG_NF_CT_PROTO_UDPLITE is not set
-# CONFIG_NF_CONNTRACK_AMANDA is not set
-# CONFIG_NF_CONNTRACK_FTP is not set
-# CONFIG_NF_CONNTRACK_H323 is not set
-# CONFIG_NF_CONNTRACK_IRC is not set
-# CONFIG_NF_CONNTRACK_NETBIOS_NS is not set
-# CONFIG_NF_CONNTRACK_SNMP is not set
-# CONFIG_NF_CONNTRACK_PPTP is not set
-# CONFIG_NF_CONNTRACK_SANE is not set
-# CONFIG_NF_CONNTRACK_SIP is not set
-# CONFIG_NF_CONNTRACK_TFTP is not set
-# CONFIG_NF_CT_NETLINK is not set
-CONFIG_NETFILTER_XTABLES=y
-
-#
-# Xtables combined modules
-#
-# CONFIG_NETFILTER_XT_MARK is not set
-# CONFIG_NETFILTER_XT_CONNMARK is not set
-
-#
-# Xtables targets
-#
-# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
-# CONFIG_NETFILTER_XT_TARGET_CONNMARK is not set
-# CONFIG_NETFILTER_XT_TARGET_IDLETIMER is not set
-# CONFIG_NETFILTER_XT_TARGET_MARK is not set
-# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
-# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
-# CONFIG_NETFILTER_XT_TARGET_RATEEST is not set
-# CONFIG_NETFILTER_XT_TARGET_TEE is not set
-# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
-
-#
-# Xtables matches
-#
-# CONFIG_NETFILTER_XT_MATCH_ADDRTYPE is not set
-# CONFIG_NETFILTER_XT_MATCH_CLUSTER is not set
-# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
-# CONFIG_NETFILTER_XT_MATCH_CONNBYTES is not set
-# CONFIG_NETFILTER_XT_MATCH_CONNLIMIT is not set
-# CONFIG_NETFILTER_XT_MATCH_CONNMARK is not set
-# CONFIG_NETFILTER_XT_MATCH_CONNTRACK is not set
-# CONFIG_NETFILTER_XT_MATCH_CPU is not set
-# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
-# CONFIG_NETFILTER_XT_MATCH_DEVGROUP is not set
-# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
-# CONFIG_NETFILTER_XT_MATCH_ESP is not set
-# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
-# CONFIG_NETFILTER_XT_MATCH_HELPER is not set
-# CONFIG_NETFILTER_XT_MATCH_HL is not set
-# CONFIG_NETFILTER_XT_MATCH_IPRANGE is not set
-# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
-# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
-# CONFIG_NETFILTER_XT_MATCH_MAC is not set
-# CONFIG_NETFILTER_XT_MATCH_MARK is not set
-# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
-# CONFIG_NETFILTER_XT_MATCH_OWNER is not set
-# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
-# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
-# CONFIG_NETFILTER_XT_MATCH_RATEEST is not set
-# CONFIG_NETFILTER_XT_MATCH_REALM is not set
-# CONFIG_NETFILTER_XT_MATCH_RECENT is not set
-# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
-# CONFIG_NETFILTER_XT_MATCH_STATE is not set
-# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
-# CONFIG_NETFILTER_XT_MATCH_STRING is not set
-# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
-# CONFIG_NETFILTER_XT_MATCH_TIME is not set
-# CONFIG_NETFILTER_XT_MATCH_U32 is not set
-# CONFIG_IP_VS is not set
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_NF_DEFRAG_IPV4=y
-CONFIG_NF_CONNTRACK_IPV4=y
-CONFIG_NF_CONNTRACK_PROC_COMPAT=y
-# CONFIG_IP_NF_QUEUE is not set
-CONFIG_IP_NF_IPTABLES=y
-# CONFIG_IP_NF_MATCH_AH is not set
-# CONFIG_IP_NF_MATCH_ECN is not set
-# CONFIG_IP_NF_MATCH_TTL is not set
-CONFIG_IP_NF_FILTER=y
-# CONFIG_IP_NF_TARGET_REJECT is not set
-CONFIG_IP_NF_TARGET_LOG=y
-# CONFIG_IP_NF_TARGET_ULOG is not set
-CONFIG_NF_NAT=y
-CONFIG_NF_NAT_NEEDED=y
-CONFIG_IP_NF_TARGET_MASQUERADE=y
-# CONFIG_IP_NF_TARGET_NETMAP is not set
-# CONFIG_IP_NF_TARGET_REDIRECT is not set
-# CONFIG_NF_NAT_FTP is not set
-# CONFIG_NF_NAT_IRC is not set
-# CONFIG_NF_NAT_TFTP is not set
-# CONFIG_NF_NAT_AMANDA is not set
-# CONFIG_NF_NAT_PPTP is not set
-# CONFIG_NF_NAT_H323 is not set
-# CONFIG_NF_NAT_SIP is not set
-# CONFIG_IP_NF_MANGLE is not set
-# CONFIG_IP_NF_RAW is not set
-# CONFIG_IP_NF_SECURITY is not set
-# CONFIG_IP_NF_ARPTABLES is not set
-# CONFIG_IP_DCCP is not set
-# CONFIG_IP_SCTP is not set
-# CONFIG_RDS is not set
-# CONFIG_TIPC is not set
-# CONFIG_ATM is not set
-# CONFIG_L2TP is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_NET_DSA is not set
-# CONFIG_VLAN_8021Q is not set
-# CONFIG_DECNET is not set
-# CONFIG_LLC2 is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-# CONFIG_PHONET is not set
-# CONFIG_IEEE802154 is not set
-# CONFIG_NET_SCHED is not set
-# CONFIG_DCB is not set
-CONFIG_DNS_RESOLVER=y
-# CONFIG_BATMAN_ADV is not set
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_HAMRADIO is not set
-CONFIG_CAN=y
-CONFIG_CAN_RAW=y
-CONFIG_CAN_BCM=y
-# CONFIG_CAN_GW is not set
-
-#
-# CAN Device Drivers
-#
-# CONFIG_CAN_VCAN is not set
-# CONFIG_CAN_SLCAN is not set
-CONFIG_CAN_DEV=y
-CONFIG_CAN_CALC_BITTIMING=y
-# CONFIG_CAN_TI_HECC is not set
-# CONFIG_CAN_MCP251X is not set
-# CONFIG_CAN_SJA1000 is not set
-# CONFIG_CAN_C_CAN is not set
-CONFIG_CAN_D_CAN=y
-CONFIG_CAN_D_CAN_PLATFORM=y
-
-#
-# CAN USB interfaces
-#
-# CONFIG_CAN_EMS_USB is not set
-# CONFIG_CAN_ESD_USB2 is not set
-# CONFIG_CAN_SOFTING is not set
-# CONFIG_CAN_DEBUG_DEVICES is not set
-# CONFIG_IRDA is not set
-# CONFIG_BT is not set
-# CONFIG_AF_RXRPC is not set
-CONFIG_WIRELESS=y
-CONFIG_WIRELESS_EXT=y
-CONFIG_WEXT_CORE=y
-CONFIG_WEXT_PROC=y
-# CONFIG_CFG80211 is not set
-CONFIG_WIRELESS_EXT_SYSFS=y
-# CONFIG_LIB80211 is not set
-
-#
-# CFG80211 needs to be enabled for MAC80211
-#
-# CONFIG_WIMAX is not set
-CONFIG_RFKILL=y
-CONFIG_RFKILL_INPUT=y
-# CONFIG_RFKILL_REGULATOR is not set
-# CONFIG_RFKILL_GPIO is not set
-# CONFIG_NET_9P is not set
-# CONFIG_CAIF is not set
-# CONFIG_CEPH_LIB is not set
-# CONFIG_NFC is not set
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
-# CONFIG_DEVTMPFS is not set
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
-CONFIG_FIRMWARE_IN_KERNEL=y
-CONFIG_EXTRA_FIRMWARE=""
-# CONFIG_SYS_HYPERVISOR is not set
-CONFIG_REGMAP=y
-CONFIG_REGMAP_I2C=y
-CONFIG_REGMAP_SPI=y
-
-#
-# CBUS support
-#
-# CONFIG_CBUS is not set
-# CONFIG_CONNECTOR is not set
-CONFIG_MTD=y
-# CONFIG_MTD_TESTS is not set
-# CONFIG_MTD_REDBOOT_PARTS is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-# CONFIG_MTD_AFS_PARTS is not set
-# CONFIG_MTD_OF_PARTS is not set
-# CONFIG_MTD_AR7_PARTS is not set
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=y
-CONFIG_MTD_BLKDEVS=y
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL is not set
-# CONFIG_RFD_FTL is not set
-# CONFIG_SSFDC is not set
-# CONFIG_SM_FTL is not set
-CONFIG_MTD_OOPS=y
-# CONFIG_MTD_SWAP is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-CONFIG_MTD_CFI=y
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_GEN_PROBE=y
-# CONFIG_MTD_CFI_ADV_OPTIONS is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-CONFIG_MTD_CFI_INTELEXT=y
-# CONFIG_MTD_CFI_AMDSTD is not set
-# CONFIG_MTD_CFI_STAA is not set
-CONFIG_MTD_CFI_UTIL=y
-# CONFIG_MTD_RAM is not set
-# CONFIG_MTD_ROM is not set
-# CONFIG_MTD_ABSENT is not set
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-# CONFIG_MTD_PHYSMAP is not set
-# CONFIG_MTD_PHYSMAP_OF is not set
-# CONFIG_MTD_PLATRAM is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_DATAFLASH is not set
-CONFIG_MTD_M25P80=y
-CONFIG_M25PXX_USE_FAST_READ=y
-# CONFIG_MTD_SST25L is not set
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_PHRAM is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_BLOCK2MTD is not set
-
-#
-# Disk-On-Chip Device Drivers
-#
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOC2001PLUS is not set
-# CONFIG_MTD_DOCG3 is not set
-CONFIG_MTD_NAND_ECC=y
-# CONFIG_MTD_NAND_ECC_SMC is not set
-CONFIG_MTD_NAND=y
-# CONFIG_MTD_NAND_VERIFY_WRITE is not set
-# CONFIG_MTD_NAND_ECC_BCH is not set
-# CONFIG_MTD_SM_COMMON is not set
-# CONFIG_MTD_NAND_MUSEUM_IDS is not set
-# CONFIG_MTD_NAND_GPIO is not set
-CONFIG_MTD_NAND_OMAP2=y
-CONFIG_MTD_NAND_IDS=y
-# CONFIG_MTD_NAND_DISKONCHIP is not set
-# CONFIG_MTD_NAND_NANDSIM is not set
-# CONFIG_MTD_NAND_PLATFORM is not set
-# CONFIG_MTD_ALAUDA is not set
-CONFIG_MTD_ONENAND=y
-CONFIG_MTD_ONENAND_VERIFY_WRITE=y
-# CONFIG_MTD_ONENAND_GENERIC is not set
-CONFIG_MTD_ONENAND_OMAP2=y
-# CONFIG_MTD_ONENAND_OTP is not set
-# CONFIG_MTD_ONENAND_2X_PROGRAM is not set
-# CONFIG_MTD_ONENAND_SIM is not set
-
-#
-# LPDDR flash memory drivers
-#
-# CONFIG_MTD_LPDDR is not set
-CONFIG_MTD_UBI=y
-CONFIG_MTD_UBI_WL_THRESHOLD=4096
-CONFIG_MTD_UBI_BEB_RESERVE=1
-# CONFIG_MTD_UBI_GLUEBI is not set
-# CONFIG_MTD_UBI_DEBUG is not set
-CONFIG_DTC=y
-CONFIG_OF=y
-
-#
-# Device Tree and Open Firmware support
-#
-CONFIG_PROC_DEVICETREE=y
-CONFIG_OF_FLATTREE=y
-CONFIG_OF_EARLY_FLATTREE=y
-CONFIG_OF_ADDRESS=y
-CONFIG_OF_IRQ=y
-CONFIG_OF_DEVICE=y
-CONFIG_OF_GPIO=y
-CONFIG_OF_I2C=y
-CONFIG_OF_NET=y
-CONFIG_OF_SPI=y
-CONFIG_OF_MDIO=y
-# CONFIG_PARPORT is not set
-CONFIG_BLK_DEV=y
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=y
-CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-
-#
-# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
-#
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_UB is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_BLK_DEV_RAM_SIZE=16384
-# CONFIG_BLK_DEV_XIP is not set
-# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_ATA_OVER_ETH is not set
-# CONFIG_MG_DISK is not set
-# CONFIG_BLK_DEV_RBD is not set
-CONFIG_SENSORS_LIS3LV02D=y
-CONFIG_MISC_DEVICES=y
-# CONFIG_AD525X_DPOT is not set
-# CONFIG_ATMEL_PWM is not set
-# CONFIG_ICS932S401 is not set
-# CONFIG_ENCLOSURE_SERVICES is not set
-# CONFIG_APDS9802ALS is not set
-# CONFIG_ISL29003 is not set
-# CONFIG_ISL29020 is not set
-CONFIG_SENSORS_TSL2550=y
-# CONFIG_SENSORS_BH1780 is not set
-# CONFIG_SENSORS_BH1770 is not set
-# CONFIG_SENSORS_APDS990X is not set
-# CONFIG_HMC6352 is not set
-# CONFIG_DS1682 is not set
-# CONFIG_TI_DAC7512 is not set
-# CONFIG_BMP085 is not set
-# CONFIG_USB_SWITCH_FSA9480 is not set
-# CONFIG_C2PORT is not set
-
-#
-# EEPROM support
-#
-CONFIG_EEPROM_AT24=y
-# CONFIG_EEPROM_AT25 is not set
-# CONFIG_EEPROM_LEGACY is not set
-# CONFIG_EEPROM_MAX6875 is not set
-# CONFIG_EEPROM_93CX6 is not set
-# CONFIG_EEPROM_93XX46 is not set
-# CONFIG_IWMC3200TOP is not set
-
-#
-# Texas Instruments shared transport line discipline
-#
-# CONFIG_TI_ST is not set
-# CONFIG_SENSORS_LIS3_SPI is not set
-CONFIG_SENSORS_LIS3_I2C=y
-
-#
-# Altera FPGA firmware download module
-#
-# CONFIG_ALTERA_STAPL is not set
-
-#
-# SCSI device support
-#
-CONFIG_SCSI_MOD=y
-# CONFIG_RAID_ATTRS is not set
-CONFIG_SCSI=y
-CONFIG_SCSI_DMA=y
-# CONFIG_SCSI_TGT is not set
-# CONFIG_SCSI_NETLINK is not set
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=y
-# CONFIG_CHR_DEV_ST is not set
-# CONFIG_CHR_DEV_OSST is not set
-# CONFIG_BLK_DEV_SR is not set
-# CONFIG_CHR_DEV_SG is not set
-# CONFIG_CHR_DEV_SCH is not set
-CONFIG_SCSI_MULTI_LUN=y
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-CONFIG_SCSI_SCAN_ASYNC=y
-CONFIG_SCSI_WAIT_SCAN=m
-
-#
-# SCSI Transports
-#
-# CONFIG_SCSI_SPI_ATTRS is not set
-# CONFIG_SCSI_FC_ATTRS is not set
-# CONFIG_SCSI_ISCSI_ATTRS is not set
-# CONFIG_SCSI_SAS_ATTRS is not set
-# CONFIG_SCSI_SAS_LIBSAS is not set
-# CONFIG_SCSI_SRP_ATTRS is not set
-CONFIG_SCSI_LOWLEVEL=y
-# CONFIG_ISCSI_TCP is not set
-# CONFIG_ISCSI_BOOT_SYSFS is not set
-# CONFIG_LIBFC is not set
-# CONFIG_LIBFCOE is not set
-# CONFIG_SCSI_DEBUG is not set
-# CONFIG_SCSI_DH is not set
-# CONFIG_SCSI_OSD_INITIATOR is not set
-# CONFIG_ATA is not set
-# CONFIG_MD is not set
-# CONFIG_TARGET_CORE is not set
-CONFIG_NETDEVICES=y
-CONFIG_NET_CORE=y
-# CONFIG_BONDING is not set
-# CONFIG_DUMMY is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_MII=y
-# CONFIG_MACVLAN is not set
-# CONFIG_NETCONSOLE is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
-# CONFIG_TUN is not set
-# CONFIG_VETH is not set
-
-#
-# CAIF transport drivers
-#
-CONFIG_ETHERNET=y
-CONFIG_NET_VENDOR_BROADCOM=y
-# CONFIG_B44 is not set
-CONFIG_NET_VENDOR_CHELSIO=y
-# CONFIG_DM9000 is not set
-# CONFIG_DNET is not set
-CONFIG_NET_VENDOR_FARADAY=y
-# CONFIG_FTMAC100 is not set
-# CONFIG_FTGMAC100 is not set
-CONFIG_NET_VENDOR_INTEL=y
-CONFIG_NET_VENDOR_I825XX=y
-CONFIG_NET_VENDOR_MARVELL=y
-CONFIG_NET_VENDOR_MICREL=y
-# CONFIG_KS8851 is not set
-# CONFIG_KS8851_MLL is not set
-CONFIG_NET_VENDOR_MICROCHIP=y
-# CONFIG_ENC28J60 is not set
-CONFIG_NET_VENDOR_NATSEMI=y
-CONFIG_NET_VENDOR_8390=y
-# CONFIG_AX88796 is not set
-# CONFIG_ETHOC is not set
-CONFIG_NET_VENDOR_SEEQ=y
-# CONFIG_SEEQ8005 is not set
-CONFIG_NET_VENDOR_SMSC=y
-CONFIG_SMC91X=y
-# CONFIG_SMC911X is not set
-CONFIG_SMSC911X=y
-# CONFIG_SMSC911X_ARCH_HOOKS is not set
-CONFIG_NET_VENDOR_STMICRO=y
-# CONFIG_STMMAC_ETH is not set
-CONFIG_NET_VENDOR_TI=y
-# CONFIG_TI_DAVINCI_EMAC is not set
-CONFIG_TI_DAVINCI_MDIO=y
-CONFIG_TI_DAVINCI_CPDMA=y
-CONFIG_TI_CPSW=y
-CONFIG_TLK110_WORKAROUND=y
-CONFIG_PHYLIB=y
-
-#
-# MII PHY device drivers
-#
-# CONFIG_MARVELL_PHY is not set
-# CONFIG_DAVICOM_PHY is not set
-# CONFIG_QSEMI_PHY is not set
-# CONFIG_LXT_PHY is not set
-# CONFIG_CICADA_PHY is not set
-# CONFIG_VITESSE_PHY is not set
-CONFIG_SMSC_PHY=y
-# CONFIG_BROADCOM_PHY is not set
-# CONFIG_ICPLUS_PHY is not set
-# CONFIG_REALTEK_PHY is not set
-# CONFIG_NATIONAL_PHY is not set
-# CONFIG_STE10XP is not set
-# CONFIG_LSI_ET1011C_PHY is not set
-# CONFIG_MICREL_PHY is not set
-# CONFIG_FIXED_PHY is not set
-# CONFIG_MDIO_BITBANG is not set
-# CONFIG_PPP is not set
-# CONFIG_SLIP is not set
-
-#
-# USB Network Adapters
-#
-# CONFIG_USB_CATC is not set
-# CONFIG_USB_KAWETH is not set
-# CONFIG_USB_PEGASUS is not set
-# CONFIG_USB_RTL8150 is not set
-CONFIG_USB_USBNET=y
-# CONFIG_USB_NET_AX8817X is not set
-CONFIG_USB_NET_CDCETHER=y
-# CONFIG_USB_NET_CDC_EEM is not set
-# CONFIG_USB_NET_CDC_NCM is not set
-# CONFIG_USB_NET_DM9601 is not set
-# CONFIG_USB_NET_SMSC75XX is not set
-# CONFIG_USB_NET_SMSC95XX is not set
-# CONFIG_USB_NET_GL620A is not set
-# CONFIG_USB_NET_NET1080 is not set
-# CONFIG_USB_NET_PLUSB is not set
-# CONFIG_USB_NET_MCS7830 is not set
-# CONFIG_USB_NET_RNDIS_HOST is not set
-CONFIG_USB_NET_CDC_SUBSET=y
-# CONFIG_USB_ALI_M5632 is not set
-# CONFIG_USB_AN2720 is not set
-# CONFIG_USB_BELKIN is not set
-# CONFIG_USB_ARMLINUX is not set
-# CONFIG_USB_EPSON2888 is not set
-# CONFIG_USB_KC2190 is not set
-# CONFIG_USB_NET_ZAURUS is not set
-# CONFIG_USB_NET_CX82310_ETH is not set
-# CONFIG_USB_NET_KALMIA is not set
-# CONFIG_USB_HSO is not set
-# CONFIG_USB_NET_INT51X1 is not set
-# CONFIG_USB_IPHETH is not set
-# CONFIG_USB_SIERRA_NET is not set
-# CONFIG_USB_VL600 is not set
-CONFIG_WLAN=y
-# CONFIG_USB_ZD1201 is not set
-# CONFIG_HOSTAP is not set
-CONFIG_WL12XX_PLATFORM_DATA=y
-
-#
-# Enable WiMAX (Networking options) to see the WiMAX drivers
-#
-# CONFIG_WAN is not set
-# CONFIG_ISDN is not set
-# CONFIG_PHONE is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-# CONFIG_INPUT_FF_MEMLESS is not set
-CONFIG_INPUT_POLLDEV=y
-# CONFIG_INPUT_SPARSEKMAP is not set
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=y
-CONFIG_INPUT_MOUSEDEV_PSAUX=y
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
-# CONFIG_INPUT_JOYDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-# CONFIG_KEYBOARD_ADP5588 is not set
-# CONFIG_KEYBOARD_ADP5589 is not set
-# CONFIG_KEYBOARD_ATKBD is not set
-# CONFIG_KEYBOARD_QT1070 is not set
-# CONFIG_KEYBOARD_QT2160 is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-CONFIG_KEYBOARD_GPIO=y
-# CONFIG_KEYBOARD_TCA6416 is not set
-CONFIG_KEYBOARD_MATRIX=y
-# CONFIG_KEYBOARD_MAX7359 is not set
-# CONFIG_KEYBOARD_MCS is not set
-# CONFIG_KEYBOARD_MPR121 is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-# CONFIG_KEYBOARD_OPENCORES is not set
-# CONFIG_KEYBOARD_STOWAWAY is not set
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_TWL4030 is not set
-# CONFIG_KEYBOARD_XTKBD is not set
-CONFIG_INPUT_MOUSE=y
-CONFIG_MOUSE_PS2=y
-CONFIG_MOUSE_PS2_ALPS=y
-CONFIG_MOUSE_PS2_LOGIPS2PP=y
-CONFIG_MOUSE_PS2_SYNAPTICS=y
-CONFIG_MOUSE_PS2_TRACKPOINT=y
-# CONFIG_MOUSE_PS2_ELANTECH is not set
-# CONFIG_MOUSE_PS2_SENTELIC is not set
-# CONFIG_MOUSE_PS2_TOUCHKIT is not set
-# CONFIG_MOUSE_SERIAL is not set
-# CONFIG_MOUSE_APPLETOUCH is not set
-# CONFIG_MOUSE_BCM5974 is not set
-# CONFIG_MOUSE_VSXXXAA is not set
-# CONFIG_MOUSE_GPIO is not set
-# CONFIG_MOUSE_SYNAPTICS_I2C is not set
-# CONFIG_INPUT_JOYSTICK is not set
-# CONFIG_INPUT_TABLET is not set
-CONFIG_INPUT_TOUCHSCREEN=y
-# CONFIG_TOUCHSCREEN_ADS7846 is not set
-# CONFIG_TOUCHSCREEN_AD7877 is not set
-# CONFIG_TOUCHSCREEN_AD7879 is not set
-# CONFIG_TOUCHSCREEN_ATMEL_MXT is not set
-# CONFIG_TOUCHSCREEN_BU21013 is not set
-# CONFIG_TOUCHSCREEN_CY8CTMG110 is not set
-# CONFIG_TOUCHSCREEN_DYNAPRO is not set
-# CONFIG_TOUCHSCREEN_HAMPSHIRE is not set
-# CONFIG_TOUCHSCREEN_EETI is not set
-# CONFIG_TOUCHSCREEN_FUJITSU is not set
-# CONFIG_TOUCHSCREEN_GUNZE is not set
-# CONFIG_TOUCHSCREEN_ELO is not set
-# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set
-# CONFIG_TOUCHSCREEN_MAX11801 is not set
-# CONFIG_TOUCHSCREEN_MCS5000 is not set
-# CONFIG_TOUCHSCREEN_MTOUCH is not set
-# CONFIG_TOUCHSCREEN_INEXIO is not set
-# CONFIG_TOUCHSCREEN_MK712 is not set
-# CONFIG_TOUCHSCREEN_PENMOUNT is not set
-# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
-# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
-CONFIG_TOUCHSCREEN_TI_TSCADC=y
-# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
-# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
-# CONFIG_TOUCHSCREEN_TSC_SERIO is not set
-# CONFIG_TOUCHSCREEN_TSC2005 is not set
-# CONFIG_TOUCHSCREEN_TSC2007 is not set
-# CONFIG_TOUCHSCREEN_W90X900 is not set
-# CONFIG_TOUCHSCREEN_ST1232 is not set
-# CONFIG_TOUCHSCREEN_TPS6507X is not set
-CONFIG_INPUT_MISC=y
-# CONFIG_INPUT_AD714X is not set
-# CONFIG_INPUT_BMA150 is not set
-# CONFIG_INPUT_MMA8450 is not set
-# CONFIG_INPUT_MPU3050 is not set
-# CONFIG_INPUT_ATI_REMOTE2 is not set
-# CONFIG_INPUT_KEYSPAN_REMOTE is not set
-# CONFIG_INPUT_KXTJ9 is not set
-# CONFIG_INPUT_POWERMATE is not set
-# CONFIG_INPUT_YEALINK is not set
-# CONFIG_INPUT_CM109 is not set
-# CONFIG_INPUT_TWL4030_PWRBUTTON is not set
-# CONFIG_INPUT_TWL4030_VIBRA is not set
-# CONFIG_INPUT_TWL6040_VIBRA is not set
-# CONFIG_INPUT_UINPUT is not set
-# CONFIG_INPUT_PCF8574 is not set
-# CONFIG_INPUT_PWM_BEEPER is not set
-# CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set
-# CONFIG_INPUT_ADXL34X is not set
-# CONFIG_INPUT_CMA3000 is not set
-
-#
-# Hardware I/O ports
-#
-CONFIG_SERIO=y
-# CONFIG_SERIO_SERPORT is not set
-CONFIG_SERIO_LIBPS2=y
-# CONFIG_SERIO_RAW is not set
-# CONFIG_SERIO_ALTERA_PS2 is not set
-# CONFIG_SERIO_PS2MULT is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_CONSOLE_TRANSLATIONS=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-CONFIG_VT_HW_CONSOLE_BINDING=y
-CONFIG_UNIX98_PTYS=y
-# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
-# CONFIG_LEGACY_PTYS is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-# CONFIG_N_GSM is not set
-# CONFIG_TRACE_SINK is not set
-CONFIG_DEVKMEM=y
-
-#
-# Serial drivers
-#
-# CONFIG_SERIAL_8250 is not set
-
-#
-# Non-8250 serial port support
-#
-# CONFIG_SERIAL_MAX3100 is not set
-# CONFIG_SERIAL_MAX3107 is not set
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_SERIAL_OMAP=y
-CONFIG_SERIAL_OMAP_CONSOLE=y
-# CONFIG_SERIAL_TIMBERDALE is not set
-# CONFIG_SERIAL_ALTERA_JTAGUART is not set
-# CONFIG_SERIAL_ALTERA_UART is not set
-# CONFIG_SERIAL_IFX6X60 is not set
-# CONFIG_SERIAL_XILINX_PS_UART is not set
-# CONFIG_HVC_DCC is not set
-# CONFIG_IPMI_HANDLER is not set
-# CONFIG_HW_RANDOM is not set
-# CONFIG_R3964 is not set
-# CONFIG_RAW_DRIVER is not set
-# CONFIG_TCG_TPM is not set
-# CONFIG_RAMOOPS is not set
-CONFIG_I2C=y
-CONFIG_I2C_BOARDINFO=y
-CONFIG_I2C_COMPAT=y
-CONFIG_I2C_CHARDEV=y
-# CONFIG_I2C_MUX is not set
-CONFIG_I2C_HELPER_AUTO=y
-
-#
-# I2C Hardware Bus support
-#
-
-#
-# I2C system bus drivers (mostly embedded / system-on-chip)
-#
-# CONFIG_I2C_DESIGNWARE_PLATFORM is not set
-# CONFIG_I2C_GPIO is not set
-# CONFIG_I2C_OCORES is not set
-CONFIG_I2C_OMAP=y
-# CONFIG_I2C_PCA_PLATFORM is not set
-# CONFIG_I2C_PXA_PCI is not set
-# CONFIG_I2C_SIMTEC is not set
-# CONFIG_I2C_XILINX is not set
-
-#
-# External I2C/SMBus adapter drivers
-#
-# CONFIG_I2C_DIOLAN_U2C is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_TAOS_EVM is not set
-# CONFIG_I2C_TINY_USB is not set
-
-#
-# Other I2C/SMBus bus drivers
-#
-# CONFIG_I2C_STUB is not set
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-CONFIG_SPI=y
-CONFIG_SPI_MASTER=y
-
-#
-# SPI Master Controller Drivers
-#
-# CONFIG_SPI_ALTERA is not set
-# CONFIG_SPI_BITBANG is not set
-# CONFIG_SPI_GPIO is not set
-# CONFIG_SPI_OC_TINY is not set
-CONFIG_SPI_OMAP24XX=y
-# CONFIG_SPI_PXA2XX_PCI is not set
-# CONFIG_SPI_XILINX is not set
-# CONFIG_SPI_DESIGNWARE is not set
-
-#
-# SPI Protocol Masters
-#
-# CONFIG_SPI_SPIDEV is not set
-# CONFIG_SPI_TLE62X0 is not set
-
-#
-# PPS support
-#
-# CONFIG_PPS is not set
-
-#
-# PPS generators support
-#
-
-#
-# PTP clock support
-#
-
-#
-# Enable Device Drivers -> PPS to see the PTP clock options.
-#
-CONFIG_ARCH_REQUIRE_GPIOLIB=y
-CONFIG_GPIOLIB=y
-CONFIG_GPIO_SYSFS=y
-
-#
-# Memory mapped GPIO drivers:
-#
-# CONFIG_GPIO_GENERIC_PLATFORM is not set
-# CONFIG_GPIO_IT8761E is not set
-
-#
-# I2C GPIO expanders:
-#
-# CONFIG_GPIO_MAX7300 is not set
-# CONFIG_GPIO_MAX732X is not set
-# CONFIG_GPIO_PCF857X is not set
-# CONFIG_GPIO_SX150X is not set
-# CONFIG_GPIO_TWL4030 is not set
-# CONFIG_GPIO_ADP5588 is not set
-
-#
-# PCI GPIO expanders:
-#
-
-#
-# SPI GPIO expanders:
-#
-# CONFIG_GPIO_MAX7301 is not set
-# CONFIG_GPIO_MCP23S08 is not set
-# CONFIG_GPIO_MC33880 is not set
-# CONFIG_GPIO_74X164 is not set
-
-#
-# AC97 GPIO expanders:
-#
-
-#
-# MODULbus GPIO expanders:
-#
-CONFIG_GPIO_TPS65910=y
-CONFIG_GENERIC_PWM=y
-CONFIG_DAVINCI_EHRPWM=y
-CONFIG_ECAP_PWM=y
-# CONFIG_W1 is not set
-# CONFIG_POWER_SUPPLY is not set
-CONFIG_HWMON=y
-# CONFIG_HWMON_VID is not set
-# CONFIG_HWMON_DEBUG_CHIP is not set
-
-#
-# Native drivers
-#
-# CONFIG_SENSORS_AD7314 is not set
-# CONFIG_SENSORS_AD7414 is not set
-# CONFIG_SENSORS_AD7418 is not set
-# CONFIG_SENSORS_ADCXX is not set
-# CONFIG_SENSORS_ADM1021 is not set
-# CONFIG_SENSORS_ADM1025 is not set
-# CONFIG_SENSORS_ADM1026 is not set
-# CONFIG_SENSORS_ADM1029 is not set
-# CONFIG_SENSORS_ADM1031 is not set
-# CONFIG_SENSORS_ADM9240 is not set
-# CONFIG_SENSORS_ADT7411 is not set
-# CONFIG_SENSORS_ADT7462 is not set
-# CONFIG_SENSORS_ADT7470 is not set
-# CONFIG_SENSORS_ADT7475 is not set
-# CONFIG_SENSORS_ASC7621 is not set
-# CONFIG_SENSORS_ATXP1 is not set
-# CONFIG_SENSORS_DS620 is not set
-# CONFIG_SENSORS_DS1621 is not set
-# CONFIG_SENSORS_F71805F is not set
-# CONFIG_SENSORS_F71882FG is not set
-# CONFIG_SENSORS_F75375S is not set
-# CONFIG_SENSORS_G760A is not set
-# CONFIG_SENSORS_GL518SM is not set
-# CONFIG_SENSORS_GL520SM is not set
-# CONFIG_SENSORS_GPIO_FAN is not set
-# CONFIG_SENSORS_IT87 is not set
-# CONFIG_SENSORS_JC42 is not set
-# CONFIG_SENSORS_LINEAGE is not set
-# CONFIG_SENSORS_LM63 is not set
-# CONFIG_SENSORS_LM70 is not set
-# CONFIG_SENSORS_LM73 is not set
-CONFIG_SENSORS_LM75=y
-# CONFIG_SENSORS_LM77 is not set
-# CONFIG_SENSORS_LM78 is not set
-# CONFIG_SENSORS_LM80 is not set
-# CONFIG_SENSORS_LM83 is not set
-# CONFIG_SENSORS_LM85 is not set
-# CONFIG_SENSORS_LM87 is not set
-# CONFIG_SENSORS_LM90 is not set
-# CONFIG_SENSORS_LM92 is not set
-# CONFIG_SENSORS_LM93 is not set
-# CONFIG_SENSORS_LTC4151 is not set
-# CONFIG_SENSORS_LTC4215 is not set
-# CONFIG_SENSORS_LTC4245 is not set
-# CONFIG_SENSORS_LTC4261 is not set
-# CONFIG_SENSORS_LM95241 is not set
-# CONFIG_SENSORS_LM95245 is not set
-# CONFIG_SENSORS_MAX1111 is not set
-# CONFIG_SENSORS_MAX16065 is not set
-# CONFIG_SENSORS_MAX1619 is not set
-# CONFIG_SENSORS_MAX1668 is not set
-# CONFIG_SENSORS_MAX6639 is not set
-# CONFIG_SENSORS_MAX6642 is not set
-# CONFIG_SENSORS_MAX6650 is not set
-# CONFIG_SENSORS_NTC_THERMISTOR is not set
-# CONFIG_SENSORS_PC87360 is not set
-# CONFIG_SENSORS_PC87427 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_PMBUS is not set
-# CONFIG_SENSORS_SHT15 is not set
-# CONFIG_SENSORS_SHT21 is not set
-# CONFIG_SENSORS_SMM665 is not set
-# CONFIG_SENSORS_DME1737 is not set
-# CONFIG_SENSORS_EMC1403 is not set
-# CONFIG_SENSORS_EMC2103 is not set
-# CONFIG_SENSORS_EMC6W201 is not set
-# CONFIG_SENSORS_SMSC47M1 is not set
-# CONFIG_SENSORS_SMSC47M192 is not set
-# CONFIG_SENSORS_SMSC47B397 is not set
-# CONFIG_SENSORS_SCH56XX_COMMON is not set
-# CONFIG_SENSORS_SCH5627 is not set
-# CONFIG_SENSORS_SCH5636 is not set
-# CONFIG_SENSORS_ADS1015 is not set
-# CONFIG_SENSORS_ADS7828 is not set
-# CONFIG_SENSORS_ADS7871 is not set
-# CONFIG_SENSORS_AMC6821 is not set
-# CONFIG_SENSORS_THMC50 is not set
-# CONFIG_SENSORS_TMP102 is not set
-# CONFIG_SENSORS_TMP401 is not set
-# CONFIG_SENSORS_TMP421 is not set
-# CONFIG_SENSORS_VT1211 is not set
-# CONFIG_SENSORS_W83781D is not set
-# CONFIG_SENSORS_W83791D is not set
-# CONFIG_SENSORS_W83792D is not set
-# CONFIG_SENSORS_W83793 is not set
-# CONFIG_SENSORS_W83795 is not set
-# CONFIG_SENSORS_W83L785TS is not set
-# CONFIG_SENSORS_W83L786NG is not set
-# CONFIG_SENSORS_W83627HF is not set
-# CONFIG_SENSORS_W83627EHF is not set
-# CONFIG_THERMAL is not set
-CONFIG_WATCHDOG=y
-# CONFIG_WATCHDOG_CORE is not set
-# CONFIG_WATCHDOG_NOWAYOUT is not set
-
-#
-# Watchdog Device Drivers
-#
-# CONFIG_SOFT_WATCHDOG is not set
-# CONFIG_DW_WATCHDOG is not set
-CONFIG_OMAP_WATCHDOG=y
-# CONFIG_TWL4030_WATCHDOG is not set
-# CONFIG_MAX63XX_WATCHDOG is not set
-
-#
-# USB-based Watchdog Cards
-#
-# CONFIG_USBPCWATCHDOG is not set
-CONFIG_SSB_POSSIBLE=y
-
-#
-# Sonics Silicon Backplane
-#
-# CONFIG_SSB is not set
-CONFIG_BCMA_POSSIBLE=y
-
-#
-# Broadcom specific AMBA
-#
-# CONFIG_BCMA is not set
-
-#
-# Multifunction device drivers
-#
-CONFIG_MFD_CORE=y
-# CONFIG_MFD_88PM860X is not set
-# CONFIG_MFD_SM501 is not set
-# CONFIG_MFD_ASIC3 is not set
-# CONFIG_HTC_EGPIO is not set
-# CONFIG_HTC_PASIC3 is not set
-# CONFIG_HTC_I2CPLD is not set
-# CONFIG_TPS6105X is not set
-# CONFIG_TPS65010 is not set
-# CONFIG_TPS6507X is not set
-CONFIG_MFD_TPS65217=y
-# CONFIG_MFD_TPS6586X is not set
-CONFIG_MFD_TPS65910=y
-# CONFIG_MFD_TPS65912_I2C is not set
-# CONFIG_MFD_TPS65912_SPI is not set
-CONFIG_TWL4030_CORE=y
-# CONFIG_TWL4030_MADC is not set
-CONFIG_TWL4030_POWER=y
-# CONFIG_MFD_TWL4030_AUDIO is not set
-# CONFIG_TWL6030_PWM is not set
-# CONFIG_TWL6040_CORE is not set
-# CONFIG_MFD_STMPE is not set
-# CONFIG_MFD_TC3589X is not set
-# CONFIG_MFD_TMIO is not set
-# CONFIG_MFD_T7L66XB is not set
-# CONFIG_MFD_TC6387XB is not set
-# CONFIG_MFD_TC6393XB is not set
-# CONFIG_PMIC_DA903X is not set
-# CONFIG_PMIC_ADP5520 is not set
-# CONFIG_MFD_MAX8925 is not set
-# CONFIG_MFD_MAX8997 is not set
-# CONFIG_MFD_MAX8998 is not set
-# CONFIG_MFD_WM8400 is not set
-# CONFIG_MFD_WM831X_I2C is not set
-# CONFIG_MFD_WM831X_SPI is not set
-# CONFIG_MFD_WM8350_I2C is not set
-# CONFIG_MFD_WM8994 is not set
-# CONFIG_MFD_PCF50633 is not set
-# CONFIG_MFD_MC13XXX is not set
-# CONFIG_ABX500_CORE is not set
-# CONFIG_EZX_PCAP is not set
-# CONFIG_MFD_WL1273_CORE is not set
-# CONFIG_MFD_AAT2870_CORE is not set
-CONFIG_REGULATOR=y
-# CONFIG_REGULATOR_DEBUG is not set
-CONFIG_REGULATOR_DUMMY=y
-CONFIG_REGULATOR_FIXED_VOLTAGE=y
-# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set
-# CONFIG_REGULATOR_USERSPACE_CONSUMER is not set
-# CONFIG_REGULATOR_GPIO is not set
-# CONFIG_REGULATOR_BQ24022 is not set
-# CONFIG_REGULATOR_MAX1586 is not set
-# CONFIG_REGULATOR_MAX8649 is not set
-# CONFIG_REGULATOR_MAX8660 is not set
-# CONFIG_REGULATOR_MAX8952 is not set
-# CONFIG_REGULATOR_TWL4030 is not set
-# CONFIG_REGULATOR_LP3971 is not set
-# CONFIG_REGULATOR_LP3972 is not set
-# CONFIG_REGULATOR_TPS65023 is not set
-# CONFIG_REGULATOR_TPS6507X is not set
-CONFIG_REGULATOR_TPS65217=y
-# CONFIG_REGULATOR_ISL6271A is not set
-# CONFIG_REGULATOR_AD5398 is not set
-# CONFIG_REGULATOR_TPS6524X is not set
-CONFIG_REGULATOR_TPS65910=y
-CONFIG_MEDIA_SUPPORT=y
-
-#
-# Multimedia core support
-#
-# CONFIG_MEDIA_CONTROLLER is not set
-CONFIG_VIDEO_DEV=y
-CONFIG_VIDEO_V4L2_COMMON=y
-# CONFIG_DVB_CORE is not set
-CONFIG_VIDEO_MEDIA=y
-
-#
-# Multimedia drivers
-#
-CONFIG_RC_CORE=y
-CONFIG_LIRC=y
-CONFIG_RC_MAP=y
-CONFIG_IR_NEC_DECODER=y
-CONFIG_IR_RC5_DECODER=y
-CONFIG_IR_RC6_DECODER=y
-CONFIG_IR_JVC_DECODER=y
-CONFIG_IR_SONY_DECODER=y
-CONFIG_IR_RC5_SZ_DECODER=y
-CONFIG_IR_MCE_KBD_DECODER=y
-CONFIG_IR_LIRC_CODEC=y
-# CONFIG_RC_ATI_REMOTE is not set
-# CONFIG_IR_IMON is not set
-# CONFIG_IR_MCEUSB is not set
-# CONFIG_IR_REDRAT3 is not set
-# CONFIG_IR_STREAMZAP is not set
-# CONFIG_RC_LOOPBACK is not set
-# CONFIG_MEDIA_ATTACH is not set
-CONFIG_MEDIA_TUNER=y
-# CONFIG_MEDIA_TUNER_CUSTOMISE is not set
-CONFIG_MEDIA_TUNER_SIMPLE=y
-CONFIG_MEDIA_TUNER_TDA8290=y
-CONFIG_MEDIA_TUNER_TDA827X=y
-CONFIG_MEDIA_TUNER_TDA18271=y
-CONFIG_MEDIA_TUNER_TDA9887=y
-CONFIG_MEDIA_TUNER_TEA5761=y
-CONFIG_MEDIA_TUNER_TEA5767=y
-CONFIG_MEDIA_TUNER_MT20XX=y
-CONFIG_MEDIA_TUNER_XC2028=y
-CONFIG_MEDIA_TUNER_XC5000=y
-CONFIG_MEDIA_TUNER_XC4000=y
-CONFIG_MEDIA_TUNER_MC44S803=y
-CONFIG_VIDEO_V4L2=y
-CONFIG_VIDEO_CAPTURE_DRIVERS=y
-# CONFIG_VIDEO_ADV_DEBUG is not set
-# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
-CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
-CONFIG_VIDEO_IR_I2C=y
-
-#
-# Audio decoders, processors and mixers
-#
-
-#
-# RDS decoders
-#
-
-#
-# Video decoders
-#
-
-#
-# Video and audio decoders
-#
-
-#
-# MPEG video encoders
-#
-
-#
-# Video encoders
-#
-
-#
-# Camera sensor devices
-#
-
-#
-# Flash devices
-#
-
-#
-# Video improvement chips
-#
-
-#
-# Miscelaneous helper chips
-#
-# CONFIG_VIDEO_VIVI is not set
-# CONFIG_VIDEO_VPFE_CAPTURE is not set
-# CONFIG_VIDEO_OMAP2_VOUT is not set
-# CONFIG_VIDEO_CPIA2 is not set
-# CONFIG_SOC_CAMERA is not set
-CONFIG_V4L_USB_DRIVERS=y
-CONFIG_USB_VIDEO_CLASS=y
-CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
-CONFIG_USB_GSPCA=m
-# CONFIG_USB_M5602 is not set
-# CONFIG_USB_STV06XX is not set
-# CONFIG_USB_GL860 is not set
-# CONFIG_USB_GSPCA_BENQ is not set
-# CONFIG_USB_GSPCA_CONEX is not set
-# CONFIG_USB_GSPCA_CPIA1 is not set
-# CONFIG_USB_GSPCA_ETOMS is not set
-# CONFIG_USB_GSPCA_FINEPIX is not set
-# CONFIG_USB_GSPCA_JEILINJ is not set
-# CONFIG_USB_GSPCA_KINECT is not set
-# CONFIG_USB_GSPCA_KONICA is not set
-# CONFIG_USB_GSPCA_MARS is not set
-# CONFIG_USB_GSPCA_MR97310A is not set
-# CONFIG_USB_GSPCA_NW80X is not set
-# CONFIG_USB_GSPCA_OV519 is not set
-# CONFIG_USB_GSPCA_OV534 is not set
-# CONFIG_USB_GSPCA_OV534_9 is not set
-# CONFIG_USB_GSPCA_PAC207 is not set
-# CONFIG_USB_GSPCA_PAC7302 is not set
-# CONFIG_USB_GSPCA_PAC7311 is not set
-# CONFIG_USB_GSPCA_SE401 is not set
-# CONFIG_USB_GSPCA_SN9C2028 is not set
-# CONFIG_USB_GSPCA_SN9C20X is not set
-# CONFIG_USB_GSPCA_SONIXB is not set
-# CONFIG_USB_GSPCA_SONIXJ is not set
-# CONFIG_USB_GSPCA_SPCA500 is not set
-# CONFIG_USB_GSPCA_SPCA501 is not set
-# CONFIG_USB_GSPCA_SPCA505 is not set
-# CONFIG_USB_GSPCA_SPCA506 is not set
-# CONFIG_USB_GSPCA_SPCA508 is not set
-# CONFIG_USB_GSPCA_SPCA561 is not set
-# CONFIG_USB_GSPCA_SPCA1528 is not set
-# CONFIG_USB_GSPCA_SQ905 is not set
-# CONFIG_USB_GSPCA_SQ905C is not set
-# CONFIG_USB_GSPCA_SQ930X is not set
-# CONFIG_USB_GSPCA_STK014 is not set
-# CONFIG_USB_GSPCA_STV0680 is not set
-# CONFIG_USB_GSPCA_SUNPLUS is not set
-# CONFIG_USB_GSPCA_T613 is not set
-# CONFIG_USB_GSPCA_TOPRO is not set
-# CONFIG_USB_GSPCA_TV8532 is not set
-# CONFIG_USB_GSPCA_VC032X is not set
-# CONFIG_USB_GSPCA_VICAM is not set
-# CONFIG_USB_GSPCA_XIRLINK_CIT is not set
-# CONFIG_USB_GSPCA_ZC3XX is not set
-# CONFIG_VIDEO_PVRUSB2 is not set
-# CONFIG_VIDEO_HDPVR is not set
-# CONFIG_VIDEO_EM28XX is not set
-# CONFIG_VIDEO_CX231XX is not set
-# CONFIG_VIDEO_TM6000 is not set
-# CONFIG_VIDEO_USBVISION is not set
-# CONFIG_USB_ET61X251 is not set
-# CONFIG_USB_SN9C102 is not set
-# CONFIG_USB_PWC is not set
-# CONFIG_USB_ZR364XX is not set
-# CONFIG_USB_STKWEBCAM is not set
-# CONFIG_USB_S2255 is not set
-# CONFIG_V4L_MEM2MEM_DRIVERS is not set
-CONFIG_RADIO_ADAPTERS=y
-# CONFIG_I2C_SI4713 is not set
-# CONFIG_RADIO_SI4713 is not set
-# CONFIG_USB_DSBR is not set
-# CONFIG_RADIO_SI470X is not set
-# CONFIG_USB_MR800 is not set
-# CONFIG_RADIO_TEA5764 is not set
-# CONFIG_RADIO_SAA7706H is not set
-# CONFIG_RADIO_TEF6862 is not set
-# CONFIG_RADIO_WL1273 is not set
-
-#
-# Texas Instruments WL128x FM driver (ST based)
-#
-# CONFIG_RADIO_WL128X is not set
-
-#
-# Graphics support
-#
-# CONFIG_DRM is not set
-# CONFIG_VGASTATE is not set
-# CONFIG_VIDEO_OUTPUT_CONTROL is not set
-CONFIG_FB=y
-# CONFIG_FIRMWARE_EDID is not set
-# CONFIG_FB_DDC is not set
-# CONFIG_FB_BOOT_VESA_SUPPORT is not set
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
-# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
-# CONFIG_FB_SYS_FILLRECT is not set
-# CONFIG_FB_SYS_COPYAREA is not set
-# CONFIG_FB_SYS_IMAGEBLIT is not set
-# CONFIG_FB_FOREIGN_ENDIAN is not set
-# CONFIG_FB_SYS_FOPS is not set
-# CONFIG_FB_WMT_GE_ROPS is not set
-# CONFIG_FB_SVGALIB is not set
-# CONFIG_FB_MACMODES is not set
-# CONFIG_FB_BACKLIGHT is not set
-CONFIG_FB_MODE_HELPERS=y
-CONFIG_FB_TILEBLITTING=y
-
-#
-# Frame buffer hardware drivers
-#
-# CONFIG_FB_S1D13XXX is not set
-# CONFIG_FB_TMIO is not set
-# CONFIG_FB_SMSCUFX is not set
-# CONFIG_FB_UDL is not set
-CONFIG_FB_DA8XX=y
-CONFIG_FB_DA8XX_CONSISTENT_DMA_SIZE=4
-# CONFIG_FB_VIRTUAL is not set
-# CONFIG_FB_METRONOME is not set
-# CONFIG_FB_BROADSHEET is not set
-# CONFIG_FB_ST7735 is not set
-# CONFIG_FB_OMAP is not set
-# CONFIG_OMAP2_DSS is not set
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_LCD_CLASS_DEVICE=y
-# CONFIG_LCD_L4F00242T03 is not set
-# CONFIG_LCD_LMS283GF05 is not set
-# CONFIG_LCD_LTV350QV is not set
-# CONFIG_LCD_TDO24M is not set
-# CONFIG_LCD_VGG2432A4 is not set
-CONFIG_LCD_PLATFORM=y
-# CONFIG_LCD_S6E63M0 is not set
-# CONFIG_LCD_LD9040 is not set
-# CONFIG_LCD_AMS369FG06 is not set
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-# CONFIG_BACKLIGHT_GENERIC is not set
-CONFIG_BACKLIGHT_PWM=y
-# CONFIG_BACKLIGHT_ADP8860 is not set
-# CONFIG_BACKLIGHT_ADP8870 is not set
-CONFIG_BACKLIGHT_TLC59108=y
-
-#
-# Display device support
-#
-CONFIG_DISPLAY_SUPPORT=y
-
-#
-# Display hardware drivers
-#
-
-#
-# Console display driver support
-#
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
-CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
-CONFIG_FONTS=y
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_7x14 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-# CONFIG_FONT_MINI_4x6 is not set
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_10x18 is not set
-CONFIG_LOGO=y
-CONFIG_LOGO_LINUX_MONO=y
-CONFIG_LOGO_LINUX_VGA16=y
-CONFIG_LOGO_LINUX_CLUT224=y
-CONFIG_SOUND=y
-# CONFIG_SOUND_OSS_CORE is not set
-CONFIG_SND=y
-CONFIG_SND_TIMER=y
-CONFIG_SND_PCM=y
-CONFIG_SND_HWDEP=y
-CONFIG_SND_RAWMIDI=y
-CONFIG_SND_JACK=y
-# CONFIG_SND_SEQUENCER is not set
-# CONFIG_SND_MIXER_OSS is not set
-# CONFIG_SND_PCM_OSS is not set
-# CONFIG_SND_HRTIMER is not set
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PROCFS=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-# CONFIG_SND_RAWMIDI_SEQ is not set
-# CONFIG_SND_OPL3_LIB_SEQ is not set
-# CONFIG_SND_OPL4_LIB_SEQ is not set
-# CONFIG_SND_SBAWE_SEQ is not set
-# CONFIG_SND_EMU10K1_SEQ is not set
-# CONFIG_SND_DRIVERS is not set
-# CONFIG_SND_ARM is not set
-# CONFIG_SND_SPI is not set
-CONFIG_SND_USB=y
-CONFIG_SND_USB_AUDIO=y
-# CONFIG_SND_USB_UA101 is not set
-# CONFIG_SND_USB_CAIAQ is not set
-# CONFIG_SND_USB_6FIRE is not set
-CONFIG_SND_SOC=y
-# CONFIG_SND_SOC_CACHE_LZO is not set
-CONFIG_SND_AM33XX_SOC=y
-CONFIG_SND_DAVINCI_SOC_MCASP=y
-CONFIG_SND_AM335X_SOC_EVM=y
-# CONFIG_SND_OMAP_SOC is not set
-CONFIG_SND_SOC_I2C_AND_SPI=y
-# CONFIG_SND_SOC_ALL_CODECS is not set
-CONFIG_SND_SOC_TLV320AIC3X=y
-# CONFIG_SOUND_PRIME is not set
-CONFIG_HID_SUPPORT=y
-CONFIG_HID=y
-# CONFIG_HIDRAW is not set
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=y
-# CONFIG_HID_PID is not set
-# CONFIG_USB_HIDDEV is not set
-
-#
-# Special HID drivers
-#
-CONFIG_HID_A4TECH=y
-# CONFIG_HID_ACRUX is not set
-CONFIG_HID_APPLE=y
-CONFIG_HID_BELKIN=y
-CONFIG_HID_CHERRY=y
-CONFIG_HID_CHICONY=y
-# CONFIG_HID_PRODIKEYS is not set
-CONFIG_HID_CYPRESS=y
-# CONFIG_HID_DRAGONRISE is not set
-# CONFIG_HID_EMS_FF is not set
-CONFIG_HID_EZKEY=y
-# CONFIG_HID_HOLTEK is not set
-# CONFIG_HID_KEYTOUCH is not set
-CONFIG_HID_KYE=y
-# CONFIG_HID_UCLOGIC is not set
-# CONFIG_HID_WALTOP is not set
-# CONFIG_HID_GYRATION is not set
-# CONFIG_HID_TWINHAN is not set
-CONFIG_HID_KENSINGTON=y
-# CONFIG_HID_LCPOWER is not set
-CONFIG_HID_LOGITECH=y
-CONFIG_HID_LOGITECH_DJ=m
-# CONFIG_LOGITECH_FF is not set
-# CONFIG_LOGIRUMBLEPAD2_FF is not set
-# CONFIG_LOGIG940_FF is not set
-# CONFIG_LOGIWHEELS_FF is not set
-CONFIG_HID_MICROSOFT=y
-CONFIG_HID_MONTEREY=y
-# CONFIG_HID_MULTITOUCH is not set
-# CONFIG_HID_NTRIG is not set
-# CONFIG_HID_ORTEK is not set
-# CONFIG_HID_PANTHERLORD is not set
-# CONFIG_HID_PETALYNX is not set
-# CONFIG_HID_PICOLCD is not set
-# CONFIG_HID_PRIMAX is not set
-# CONFIG_HID_QUANTA is not set
-# CONFIG_HID_ROCCAT is not set
-# CONFIG_HID_SAMSUNG is not set
-# CONFIG_HID_SONY is not set
-# CONFIG_HID_SPEEDLINK is not set
-# CONFIG_HID_SUNPLUS is not set
-# CONFIG_HID_GREENASIA is not set
-# CONFIG_HID_SMARTJOYPLUS is not set
-# CONFIG_HID_TOPSEED is not set
-# CONFIG_HID_THRUSTMASTER is not set
-# CONFIG_HID_ZEROPLUS is not set
-# CONFIG_HID_ZYDACRON is not set
-CONFIG_USB_SUPPORT=y
-CONFIG_USB_COMMON=y
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-CONFIG_USB_ARCH_HAS_EHCI=y
-# CONFIG_USB_ARCH_HAS_XHCI is not set
-CONFIG_USB=y
-# CONFIG_USB_DEBUG is not set
-CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-CONFIG_USB_DEVICE_CLASS=y
-# CONFIG_USB_DYNAMIC_MINORS is not set
-CONFIG_USB_SUSPEND=y
-CONFIG_USB_OTG=y
-# CONFIG_USB_OTG_WHITELIST is not set
-# CONFIG_USB_OTG_BLACKLIST_HUB is not set
-# CONFIG_USB_DWC3 is not set
-# CONFIG_USB_MON is not set
-# CONFIG_USB_WUSB is not set
-# CONFIG_USB_WUSB_CBAF is not set
-
-#
-# USB Host Controller Drivers
-#
-# CONFIG_USB_C67X00_HCD is not set
-# CONFIG_USB_EHCI_HCD is not set
-# CONFIG_USB_OXU210HP_HCD is not set
-# CONFIG_USB_ISP116X_HCD is not set
-# CONFIG_USB_ISP1760_HCD is not set
-# CONFIG_USB_ISP1362_HCD is not set
-# CONFIG_USB_OHCI_HCD is not set
-# CONFIG_USB_SL811_HCD is not set
-# CONFIG_USB_R8A66597_HCD is not set
-# CONFIG_USB_HWA_HCD is not set
-CONFIG_USB_MUSB_HDRC=y
-
-#
-# Platform Glue Layer
-#
-# CONFIG_USB_MUSB_TUSB6010_GLUE is not set
-# CONFIG_USB_MUSB_OMAP2PLUS_GLUE is not set
-# CONFIG_USB_MUSB_AM35X_GLUE is not set
-CONFIG_USB_MUSB_TI81XX_GLUE=y
-# CONFIG_USB_MUSB_DAVINCI is not set
-# CONFIG_USB_MUSB_DA8XX is not set
-# CONFIG_USB_MUSB_TUSB6010 is not set
-# CONFIG_USB_MUSB_OMAP2PLUS is not set
-# CONFIG_USB_MUSB_AM35X is not set
-CONFIG_USB_MUSB_TI81XX=y
-# CONFIG_USB_MUSB_BLACKFIN is not set
-# CONFIG_USB_MUSB_UX500 is not set
-# CONFIG_USB_TI_CPPI41_DMA_HW is not set
-CONFIG_MUSB_PIO_ONLY=y
-# CONFIG_USB_INVENTRA_DMA is not set
-# CONFIG_USB_TI_CPPI_DMA is not set
-# CONFIG_USB_TI_CPPI41_DMA is not set
-# CONFIG_USB_TUSB_OMAP_DMA is not set
-# CONFIG_USB_UX500_DMA is not set
-# CONFIG_USB_RENESAS_USBHS is not set
-
-#
-# USB Device Class drivers
-#
-# CONFIG_USB_ACM is not set
-# CONFIG_USB_PRINTER is not set
-# CONFIG_USB_WDM is not set
-# CONFIG_USB_TMC is not set
-
-#
-# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
-#
-
-#
-# also be needed; see USB_STORAGE Help for more info
-#
-CONFIG_USB_STORAGE=y
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_REALTEK is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_ISD200 is not set
-# CONFIG_USB_STORAGE_USBAT is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_SDDR55 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-# CONFIG_USB_STORAGE_ALAUDA is not set
-# CONFIG_USB_STORAGE_ONETOUCH is not set
-# CONFIG_USB_STORAGE_KARMA is not set
-# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
-# CONFIG_USB_STORAGE_ENE_UB6250 is not set
-# CONFIG_USB_UAS is not set
-# CONFIG_USB_LIBUSUAL is not set
-
-#
-# USB Imaging devices
-#
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_MICROTEK is not set
-
-#
-# USB port drivers
-#
-# CONFIG_USB_SERIAL is not set
-
-#
-# USB Miscellaneous drivers
-#
-# CONFIG_USB_EMI62 is not set
-# CONFIG_USB_EMI26 is not set
-# CONFIG_USB_ADUTUX is not set
-# CONFIG_USB_SEVSEG is not set
-# CONFIG_USB_RIO500 is not set
-# CONFIG_USB_LEGOTOWER is not set
-# CONFIG_USB_LCD is not set
-# CONFIG_USB_LED is not set
-# CONFIG_USB_CYPRESS_CY7C63 is not set
-# CONFIG_USB_CYTHERM is not set
-# CONFIG_USB_IDMOUSE is not set
-# CONFIG_USB_FTDI_ELAN is not set
-# CONFIG_USB_APPLEDISPLAY is not set
-# CONFIG_USB_SISUSBVGA is not set
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TRANCEVIBRATOR is not set
-# CONFIG_USB_IOWARRIOR is not set
-# CONFIG_USB_TEST is not set
-# CONFIG_USB_ISIGHTFW is not set
-# CONFIG_USB_YUREX is not set
-CONFIG_USB_GADGET=y
-# CONFIG_USB_GADGET_DEBUG_FILES is not set
-# CONFIG_USB_GADGET_DEBUG_FS is not set
-CONFIG_USB_GADGET_VBUS_DRAW=2
-CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2
-# CONFIG_USB_FUSB300 is not set
-# CONFIG_USB_OMAP is not set
-# CONFIG_USB_R8A66597 is not set
-CONFIG_USB_GADGET_MUSB_HDRC=y
-# CONFIG_USB_M66592 is not set
-# CONFIG_USB_NET2272 is not set
-# CONFIG_USB_DUMMY_HCD is not set
-CONFIG_USB_GADGET_DUALSPEED=y
-# CONFIG_USB_ZERO is not set
-# CONFIG_USB_AUDIO is not set
-CONFIG_USB_ETH=m
-CONFIG_USB_ETH_RNDIS=y
-# CONFIG_USB_ETH_EEM is not set
-# CONFIG_USB_G_NCM is not set
-# CONFIG_USB_GADGETFS is not set
-# CONFIG_USB_FUNCTIONFS is not set
-CONFIG_USB_FILE_STORAGE=m
-# CONFIG_USB_FILE_STORAGE_TEST is not set
-CONFIG_USB_MASS_STORAGE=m
-# CONFIG_USB_G_SERIAL is not set
-# CONFIG_USB_MIDI_GADGET is not set
-# CONFIG_USB_G_PRINTER is not set
-# CONFIG_USB_CDC_COMPOSITE is not set
-# CONFIG_USB_G_ACM_MS is not set
-# CONFIG_USB_G_MULTI is not set
-# CONFIG_USB_G_HID is not set
-# CONFIG_USB_G_DBGP is not set
-# CONFIG_USB_G_WEBCAM is not set
-
-#
-# OTG and related infrastructure
-#
-CONFIG_USB_OTG_UTILS=y
-# CONFIG_USB_GPIO_VBUS is not set
-# CONFIG_USB_ULPI is not set
-# CONFIG_TWL6030_USB is not set
-CONFIG_NOP_USB_XCEIV=y
-CONFIG_MMC=y
-# CONFIG_MMC_DEBUG is not set
-CONFIG_MMC_UNSAFE_RESUME=y
-# CONFIG_MMC_CLKGATE is not set
-
-#
-# MMC/SD/SDIO Card Drivers
-#
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_BLOCK_MINORS=8
-CONFIG_MMC_BLOCK_BOUNCE=y
-CONFIG_SDIO_UART=y
-# CONFIG_MMC_TEST is not set
-
-#
-# MMC/SD/SDIO Host Controller Drivers
-#
-# CONFIG_MMC_SDHCI is not set
-# CONFIG_MMC_SDHCI_PXAV3 is not set
-# CONFIG_MMC_SDHCI_PXAV2 is not set
-# CONFIG_MMC_OMAP is not set
-CONFIG_MMC_OMAP_HS=y
-# CONFIG_MMC_SPI is not set
-# CONFIG_MMC_DW is not set
-# CONFIG_MMC_VUB300 is not set
-# CONFIG_MMC_USHC is not set
-# CONFIG_MEMSTICK is not set
-# CONFIG_NEW_LEDS is not set
-# CONFIG_ACCESSIBILITY is not set
-CONFIG_RTC_LIB=y
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
-# CONFIG_RTC_DEBUG is not set
-
-#
-# RTC interfaces
-#
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
-# CONFIG_RTC_DRV_TEST is not set
-
-#
-# I2C RTC drivers
-#
-# CONFIG_RTC_DRV_DS1307 is not set
-# CONFIG_RTC_DRV_DS1374 is not set
-# CONFIG_RTC_DRV_DS1672 is not set
-# CONFIG_RTC_DRV_DS3232 is not set
-# CONFIG_RTC_DRV_MAX6900 is not set
-# CONFIG_RTC_DRV_RS5C372 is not set
-# CONFIG_RTC_DRV_ISL1208 is not set
-# CONFIG_RTC_DRV_ISL12022 is not set
-# CONFIG_RTC_DRV_X1205 is not set
-# CONFIG_RTC_DRV_PCF8563 is not set
-# CONFIG_RTC_DRV_PCF8583 is not set
-# CONFIG_RTC_DRV_M41T80 is not set
-# CONFIG_RTC_DRV_BQ32K is not set
-# CONFIG_RTC_DRV_TWL4030 is not set
-# CONFIG_RTC_DRV_S35390A is not set
-# CONFIG_RTC_DRV_FM3130 is not set
-# CONFIG_RTC_DRV_RX8581 is not set
-# CONFIG_RTC_DRV_RX8025 is not set
-# CONFIG_RTC_DRV_EM3027 is not set
-# CONFIG_RTC_DRV_RV3029C2 is not set
-
-#
-# SPI RTC drivers
-#
-# CONFIG_RTC_DRV_M41T93 is not set
-# CONFIG_RTC_DRV_M41T94 is not set
-# CONFIG_RTC_DRV_DS1305 is not set
-# CONFIG_RTC_DRV_DS1390 is not set
-# CONFIG_RTC_DRV_MAX6902 is not set
-# CONFIG_RTC_DRV_R9701 is not set
-# CONFIG_RTC_DRV_RS5C348 is not set
-# CONFIG_RTC_DRV_DS3234 is not set
-# CONFIG_RTC_DRV_PCF2123 is not set
-
-#
-# Platform RTC drivers
-#
-# CONFIG_RTC_DRV_CMOS is not set
-# CONFIG_RTC_DRV_DS1286 is not set
-# CONFIG_RTC_DRV_DS1511 is not set
-# CONFIG_RTC_DRV_DS1553 is not set
-# CONFIG_RTC_DRV_DS1742 is not set
-# CONFIG_RTC_DRV_STK17TA8 is not set
-# CONFIG_RTC_DRV_M48T86 is not set
-# CONFIG_RTC_DRV_M48T35 is not set
-# CONFIG_RTC_DRV_M48T59 is not set
-# CONFIG_RTC_DRV_MSM6242 is not set
-# CONFIG_RTC_DRV_BQ4802 is not set
-# CONFIG_RTC_DRV_RP5C01 is not set
-# CONFIG_RTC_DRV_V3020 is not set
-
-#
-# on-CPU RTC drivers
-#
-CONFIG_RTC_DRV_OMAP=y
-# CONFIG_DMADEVICES is not set
-# CONFIG_AUXDISPLAY is not set
-# CONFIG_UIO is not set
-
-#
-# Virtio drivers
-#
-# CONFIG_VIRTIO_BALLOON is not set
-# CONFIG_VIRTIO_MMIO is not set
-# CONFIG_STAGING is not set
-CONFIG_CLKDEV_LOOKUP=y
-
-#
-# Hardware Spinlock drivers
-#
-CONFIG_CLKSRC_MMIO=y
-# CONFIG_IOMMU_SUPPORT is not set
-# CONFIG_VIRT_DRIVERS is not set
-# CONFIG_PM_DEVFREQ is not set
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=y
-# CONFIG_EXT2_FS_XATTR is not set
-# CONFIG_EXT2_FS_XIP is not set
-CONFIG_EXT3_FS=y
-CONFIG_EXT3_DEFAULTS_TO_ORDERED=y
-# CONFIG_EXT3_FS_XATTR is not set
-# CONFIG_EXT4_FS is not set
-CONFIG_JBD=y
-# CONFIG_JBD_DEBUG is not set
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-# CONFIG_XFS_FS is not set
-# CONFIG_GFS2_FS is not set
-# CONFIG_BTRFS_FS is not set
-# CONFIG_NILFS2_FS is not set
-CONFIG_FS_POSIX_ACL=y
-CONFIG_FILE_LOCKING=y
-CONFIG_FSNOTIFY=y
-CONFIG_DNOTIFY=y
-CONFIG_INOTIFY_USER=y
-# CONFIG_FANOTIFY is not set
-CONFIG_QUOTA=y
-# CONFIG_QUOTA_NETLINK_INTERFACE is not set
-CONFIG_PRINT_QUOTA_WARNING=y
-# CONFIG_QUOTA_DEBUG is not set
-CONFIG_QUOTA_TREE=y
-# CONFIG_QFMT_V1 is not set
-CONFIG_QFMT_V2=y
-CONFIG_QUOTACTL=y
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FUSE_FS is not set
-
-#
-# Caches
-#
-# CONFIG_FSCACHE is not set
-
-#
-# CD-ROM/DVD Filesystems
-#
-# CONFIG_ISO9660_FS is not set
-# CONFIG_UDF_FS is not set
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=y
-CONFIG_MSDOS_FS=y
-CONFIG_VFAT_FS=y
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_PROC_SYSCTL=y
-CONFIG_PROC_PAGE_MONITOR=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_TMPFS_POSIX_ACL is not set
-# CONFIG_TMPFS_XATTR is not set
-# CONFIG_HUGETLB_PAGE is not set
-# CONFIG_CONFIGFS_FS is not set
-CONFIG_MISC_FILESYSTEMS=y
-# CONFIG_ADFS_FS is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_ECRYPT_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_HFSPLUS_FS is not set
-# CONFIG_BEFS_FS is not set
-# CONFIG_BFS_FS is not set
-# CONFIG_EFS_FS is not set
-# CONFIG_JFFS2_FS is not set
-CONFIG_UBIFS_FS=y
-# CONFIG_UBIFS_FS_XATTR is not set
-# CONFIG_UBIFS_FS_ADVANCED_COMPR is not set
-CONFIG_UBIFS_FS_LZO=y
-CONFIG_UBIFS_FS_ZLIB=y
-# CONFIG_UBIFS_FS_DEBUG is not set
-# CONFIG_LOGFS is not set
-CONFIG_CRAMFS=y
-# CONFIG_SQUASHFS is not set
-# CONFIG_VXFS_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_OMFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_ROMFS_FS is not set
-# CONFIG_PSTORE is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-CONFIG_NETWORK_FILESYSTEMS=y
-CONFIG_NFS_FS=y
-CONFIG_NFS_V3=y
-CONFIG_NFS_V3_ACL=y
-CONFIG_NFS_V4=y
-# CONFIG_NFS_V4_1 is not set
-CONFIG_ROOT_NFS=y
-# CONFIG_NFS_USE_LEGACY_DNS is not set
-CONFIG_NFS_USE_KERNEL_DNS=y
-# CONFIG_NFS_USE_NEW_IDMAPPER is not set
-# CONFIG_NFSD is not set
-CONFIG_LOCKD=y
-CONFIG_LOCKD_V4=y
-CONFIG_NFS_ACL_SUPPORT=y
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
-CONFIG_SUNRPC_GSS=y
-# CONFIG_CEPH_FS is not set
-# CONFIG_CIFS is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_CODA_FS is not set
-# CONFIG_AFS_FS is not set
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_KARMA_PARTITION is not set
-# CONFIG_EFI_PARTITION is not set
-# CONFIG_SYSV68_PARTITION is not set
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="iso8859-1"
-CONFIG_NLS_CODEPAGE_437=y
-# CONFIG_NLS_CODEPAGE_737 is not set
-# CONFIG_NLS_CODEPAGE_775 is not set
-# CONFIG_NLS_CODEPAGE_850 is not set
-# CONFIG_NLS_CODEPAGE_852 is not set
-# CONFIG_NLS_CODEPAGE_855 is not set
-# CONFIG_NLS_CODEPAGE_857 is not set
-# CONFIG_NLS_CODEPAGE_860 is not set
-# CONFIG_NLS_CODEPAGE_861 is not set
-# CONFIG_NLS_CODEPAGE_862 is not set
-# CONFIG_NLS_CODEPAGE_863 is not set
-# CONFIG_NLS_CODEPAGE_864 is not set
-# CONFIG_NLS_CODEPAGE_865 is not set
-# CONFIG_NLS_CODEPAGE_866 is not set
-# CONFIG_NLS_CODEPAGE_869 is not set
-# CONFIG_NLS_CODEPAGE_936 is not set
-# CONFIG_NLS_CODEPAGE_950 is not set
-# CONFIG_NLS_CODEPAGE_932 is not set
-# CONFIG_NLS_CODEPAGE_949 is not set
-# CONFIG_NLS_CODEPAGE_874 is not set
-# CONFIG_NLS_ISO8859_8 is not set
-# CONFIG_NLS_CODEPAGE_1250 is not set
-# CONFIG_NLS_CODEPAGE_1251 is not set
-# CONFIG_NLS_ASCII is not set
-CONFIG_NLS_ISO8859_1=y
-# CONFIG_NLS_ISO8859_2 is not set
-# CONFIG_NLS_ISO8859_3 is not set
-# CONFIG_NLS_ISO8859_4 is not set
-# CONFIG_NLS_ISO8859_5 is not set
-# CONFIG_NLS_ISO8859_6 is not set
-# CONFIG_NLS_ISO8859_7 is not set
-# CONFIG_NLS_ISO8859_9 is not set
-# CONFIG_NLS_ISO8859_13 is not set
-# CONFIG_NLS_ISO8859_14 is not set
-# CONFIG_NLS_ISO8859_15 is not set
-# CONFIG_NLS_KOI8_R is not set
-# CONFIG_NLS_KOI8_U is not set
-# CONFIG_NLS_UTF8 is not set
-
-#
-# Kernel hacking
-#
-CONFIG_PRINTK_TIME=y
-CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4
-CONFIG_ENABLE_WARN_DEPRECATED=y
-CONFIG_ENABLE_MUST_CHECK=y
-CONFIG_FRAME_WARN=1024
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_STRIP_ASM_SYMS is not set
-# CONFIG_UNUSED_SYMBOLS is not set
-CONFIG_DEBUG_FS=y
-# CONFIG_HEADERS_CHECK is not set
-# CONFIG_DEBUG_SECTION_MISMATCH is not set
-# CONFIG_DEBUG_KERNEL is not set
-# CONFIG_HARDLOCKUP_DETECTOR is not set
-# CONFIG_SPARSE_RCU_POINTER is not set
-CONFIG_DEBUG_BUGVERBOSE=y
-CONFIG_DEBUG_MEMORY_INIT=y
-CONFIG_FRAME_POINTER=y
-# CONFIG_LKDTM is not set
-# CONFIG_SYSCTL_SYSCALL_CHECK is not set
-CONFIG_HAVE_FUNCTION_TRACER=y
-CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
-CONFIG_HAVE_DYNAMIC_FTRACE=y
-CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
-CONFIG_HAVE_C_RECORDMCOUNT=y
-CONFIG_RING_BUFFER=y
-CONFIG_RING_BUFFER_ALLOW_SWAP=y
-CONFIG_TRACING_SUPPORT=y
-# CONFIG_FTRACE is not set
-# CONFIG_DYNAMIC_DEBUG is not set
-# CONFIG_DMA_API_DEBUG is not set
-# CONFIG_ATOMIC64_SELFTEST is not set
-# CONFIG_SAMPLES is not set
-CONFIG_HAVE_ARCH_KGDB=y
-# CONFIG_TEST_KSTRTOX is not set
-# CONFIG_STRICT_DEVMEM is not set
-# CONFIG_ARM_UNWIND is not set
-# CONFIG_DEBUG_USER is not set
-CONFIG_DEBUG_JTAG_ENABLE=y
-
-#
-# Security options
-#
-CONFIG_KEYS=y
-# CONFIG_ENCRYPTED_KEYS is not set
-# CONFIG_KEYS_DEBUG_PROC_KEYS is not set
-# CONFIG_SECURITY_DMESG_RESTRICT is not set
-CONFIG_SECURITY=y
-# CONFIG_SECURITYFS is not set
-# CONFIG_SECURITY_NETWORK is not set
-# CONFIG_SECURITY_PATH is not set
-# CONFIG_SECURITY_TOMOYO is not set
-# CONFIG_SECURITY_APPARMOR is not set
-# CONFIG_IMA is not set
-# CONFIG_EVM is not set
-CONFIG_DEFAULT_SECURITY_DAC=y
-CONFIG_DEFAULT_SECURITY=""
-CONFIG_CRYPTO=y
-
-#
-# Crypto core or helper
-#
-CONFIG_CRYPTO_ALGAPI=y
-CONFIG_CRYPTO_ALGAPI2=y
-CONFIG_CRYPTO_AEAD2=y
-CONFIG_CRYPTO_BLKCIPHER=y
-CONFIG_CRYPTO_BLKCIPHER2=y
-CONFIG_CRYPTO_HASH=y
-CONFIG_CRYPTO_HASH2=y
-CONFIG_CRYPTO_RNG2=y
-CONFIG_CRYPTO_PCOMP2=y
-CONFIG_CRYPTO_MANAGER=y
-CONFIG_CRYPTO_MANAGER2=y
-# CONFIG_CRYPTO_USER is not set
-CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y
-# CONFIG_CRYPTO_GF128MUL is not set
-# CONFIG_CRYPTO_NULL is not set
-CONFIG_CRYPTO_WORKQUEUE=y
-# CONFIG_CRYPTO_CRYPTD is not set
-# CONFIG_CRYPTO_AUTHENC is not set
-# CONFIG_CRYPTO_TEST is not set
-
-#
-# Authenticated Encryption with Associated Data
-#
-# CONFIG_CRYPTO_CCM is not set
-# CONFIG_CRYPTO_GCM is not set
-# CONFIG_CRYPTO_SEQIV is not set
-
-#
-# Block modes
-#
-# CONFIG_CRYPTO_CBC is not set
-# CONFIG_CRYPTO_CTR is not set
-# CONFIG_CRYPTO_CTS is not set
-CONFIG_CRYPTO_ECB=y
-# CONFIG_CRYPTO_LRW is not set
-# CONFIG_CRYPTO_PCBC is not set
-# CONFIG_CRYPTO_XTS is not set
-
-#
-# Hash modes
-#
-# CONFIG_CRYPTO_HMAC is not set
-# CONFIG_CRYPTO_XCBC is not set
-# CONFIG_CRYPTO_VMAC is not set
-
-#
-# Digest
-#
-CONFIG_CRYPTO_CRC32C=y
-# CONFIG_CRYPTO_GHASH is not set
-# CONFIG_CRYPTO_MD4 is not set
-# CONFIG_CRYPTO_MD5 is not set
-CONFIG_CRYPTO_MICHAEL_MIC=y
-# CONFIG_CRYPTO_RMD128 is not set
-# CONFIG_CRYPTO_RMD160 is not set
-# CONFIG_CRYPTO_RMD256 is not set
-# CONFIG_CRYPTO_RMD320 is not set
-# CONFIG_CRYPTO_SHA1 is not set
-# CONFIG_CRYPTO_SHA256 is not set
-# CONFIG_CRYPTO_SHA512 is not set
-# CONFIG_CRYPTO_TGR192 is not set
-# CONFIG_CRYPTO_WP512 is not set
-
-#
-# Ciphers
-#
-CONFIG_CRYPTO_AES=y
-# CONFIG_CRYPTO_ANUBIS is not set
-CONFIG_CRYPTO_ARC4=y
-# CONFIG_CRYPTO_BLOWFISH is not set
-# CONFIG_CRYPTO_CAMELLIA is not set
-# CONFIG_CRYPTO_CAST5 is not set
-# CONFIG_CRYPTO_CAST6 is not set
-# CONFIG_CRYPTO_DES is not set
-# CONFIG_CRYPTO_FCRYPT is not set
-# CONFIG_CRYPTO_KHAZAD is not set
-# CONFIG_CRYPTO_SALSA20 is not set
-# CONFIG_CRYPTO_SEED is not set
-# CONFIG_CRYPTO_SERPENT is not set
-# CONFIG_CRYPTO_TEA is not set
-# CONFIG_CRYPTO_TWOFISH is not set
-
-#
-# Compression
-#
-CONFIG_CRYPTO_DEFLATE=y
-# CONFIG_CRYPTO_ZLIB is not set
-CONFIG_CRYPTO_LZO=y
-
-#
-# Random Number Generation
-#
-# CONFIG_CRYPTO_ANSI_CPRNG is not set
-# CONFIG_CRYPTO_USER_API_HASH is not set
-# CONFIG_CRYPTO_USER_API_SKCIPHER is not set
-# CONFIG_CRYPTO_HW is not set
-# CONFIG_BINARY_PRINTF is not set
-
-#
-# Library routines
-#
-CONFIG_BITREVERSE=y
-CONFIG_CRC_CCITT=y
-CONFIG_CRC16=y
-CONFIG_CRC_T10DIF=y
-CONFIG_CRC_ITU_T=y
-CONFIG_CRC32=y
-CONFIG_CRC7=y
-CONFIG_LIBCRC32C=y
-# CONFIG_CRC8 is not set
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
-CONFIG_LZO_COMPRESS=y
-CONFIG_LZO_DECOMPRESS=y
-CONFIG_XZ_DEC=y
-CONFIG_XZ_DEC_X86=y
-CONFIG_XZ_DEC_POWERPC=y
-CONFIG_XZ_DEC_IA64=y
-CONFIG_XZ_DEC_ARM=y
-CONFIG_XZ_DEC_ARMTHUMB=y
-CONFIG_XZ_DEC_SPARC=y
-CONFIG_XZ_DEC_BCJ=y
-# CONFIG_XZ_DEC_TEST is not set
-CONFIG_DECOMPRESS_GZIP=y
-CONFIG_DECOMPRESS_BZIP2=y
-CONFIG_DECOMPRESS_LZMA=y
-CONFIG_DECOMPRESS_XZ=y
-CONFIG_DECOMPRESS_LZO=y
-CONFIG_GENERIC_ALLOCATOR=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
-CONFIG_HAS_DMA=y
-CONFIG_NLATTR=y
-CONFIG_AVERAGE=y
-# CONFIG_CORDIC is not set
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/am335x-pm-firmware.bin b/recipes-kernel/linux/linux-ti33x-psp-3.2/am335x-pm-firmware.bin
deleted file mode 100644
index 571d377dc50cc7bb8258facec8948b86b8025248..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 10732
zcmbta4RBo5b-r((^<yk-#WJqE@*gGz!OFi%LAGhKl9(-!#Ov4&Z4E<LH6c$lLlLBA
z at iJs>T%%-CkHb(xWQMpj!#ISgK`|X-LoBdq%g<2Dq8YGBv&1dVC?tJaZ}e7LX<xr{
z at 45TlTP-#Q%{<-x&N=s-bI-l+-gEDLqP|vq#t>q=Da5z&d=JkL at ca{=^1mO0_8ilH
zhVqZE6ru-pKh5(p^nB9#uW{W=rok6HmGpFjz8%jG at H~g-H9YU*8N>6LDj}}Kvl7n@
zc)IYUpWpGUIM6YAtYIK4%v2(Z{{z`tb8TWqCS`@KwN^N>)-p$?fs&GCDzV0jW}Br{
zU&n_-)32X?L);dj-i{ZJMDx=k<EKLQ%!!(j+M1VQ>6g+6#ew1(A(}<4cm_}U;NQbu
zQtDb15|I~<G{oY=TN(<9aVwtd+IVzSm_v>6;Rnqo>u_S56(9cfJ at Mh8Ehid7_M*^G
zIBpxE(71W_kkv74nun*<Is|`fM&^+17w`HrapYX~I!6=ch1(0(x-fhDK9N0tt*Q1N
zL_F7x)^B_ZJ=bKV5ZO+98hTRGw#kUpaYWJwE6In>AukS~ccEECs*cmI#+Zt2 at r=@y
zOss~@H32IWcd|qM++;PzYDPT!ay)?lDa+@{uSLRjX1XE!`Y|&mBDI4U9U^4kFs?YS
z6=!8a_MPLB2j4@&uzOs^J6trtyKOA}5`2}qE)~KaA6J;(32JL9q5e<LBrVr at w@CkI
zy7V3x;H9kANcNX;dkMUFqZqRPbWD$Wt+N at NpBLkHGjzYnx=Hhup!b803B?}p(XRsi
zDbTM1{h*H?0lg3O2<ZEL^cK)}gWdxA<39RQ(072o6!bkl`ZCbBg1!v&oj&?<(C+|!
zIp|46*Zm`7vl9Hx;I9PV^3_`f`Z~~8fqsjR-U at mL=&hiyXZlV#9%jS}ccrYG at orOO
z3klbGt9aOIN}Bd8^Hjfx)Eo!0I?tLwH}@A3p$z&Ba_h2>iDTK*(RePs(sf=buFIw+
zcAeLYW^CLVY9tv&8$&NWR}}W8c#h!tnk(#-TQgEGXC&&I%Dx2r7_96E#Sgxi at TC*J
ztO}D=iJGjE7ZQ)lH^Q^IE71N_7qx$_{9i~Ek|I()nChlD7%~pVpkbTisqRy~ooBym
z?(Glv7n1d{c`?JDD3Ejmq{CKxw0O at z)-Xeu3q at r5acDs7;*f9ZZ-nf^aWfMe{kz46
zJrD1M!1%8kYa^TZ_2O7w+FeU_ at 9R99mJx4^jakCJ)>X6tAMJXki3aK!CASH*n^8B)
za;v+AonV^QN3?G+P3t3C(#>0VUkzcuT5Rh^FXPt$dh6*4VP7{X?C;=r2IUjQnvq7e
zmOOvqG3*+v6vNFI5X1Y&bPVquqxr?Kx8x~?^ecRh81 at yX#_%bo`D54*8pY7yxKeED
zI9}U*v_{bOlAJHrpDo4kvQi8eB5ofdZlO;Vw^#F(;`a0Lk3aS at c^$V?d768L{qHWt
zjb`Bo@@ni|!DFx8H>P$}h{sN*`Qxz%wDNd7Uesf1 at 1!16k0KWLPnO0IuS?#FMDu|+
z-$%2L$jqjxx2fM8aa*e+i{CMx+>pP_7DxW_A|d_?&)4wWi|22+>_I8)Rr$J%u>T}K
z9sk?%)%d>=5fJtrd66leG3+&n0<9=&E%|AI){@^8f@=xJ)`Vf-i}~v7kfzn`>jhzd
zrIby<SIo;^ZsYsyYXjcxLNa04KSbRbX#Mx_M*RxEzX+R#eW+;In}9wjY4x|?u%D21
zw?pE0sJBwq*@rr7KzZ{c>g<$t$k(9>ve66q;k;olF6b4J{ElW5GPa0AD4dRFzZ*a*
z?waSJ&B#eNd6Gcu1E at EE_5{!^0raH++8IFmeaMUNLzuJkiJv95B??xm>#+5=m}j?j
z(`=jS+SZ+tIcTaY)lC`Bd|%F~b03WMP&gruq_C!$xoB&A__9tBaR$B7=jBPV<z=#F
zP*(P_%C|(s9Bjh~`juOiNm-#tNTOGe-B5<6qwcMBL@&r}tdO90#56F2g<R(!+&rk|
zYn56bE7b|1&OH_D&^x4jGuXG61HQdI)i;a@<*$mk%EN?++jER#*-X3Z?4mlrjf@{)
zJfHDa#-C+;C*x+uw=-^Gd at JJ>jBjH6ImYW4w=s?}zLxRl8Almk&G<UT%NSqJ_;SWy
zV!V*?dd71ZTa0Hi{s!Y}#&<C;BB!Ewe3S7g<0RwXGrphk2aMB<|C{kn#=l_P%lIwE
zdl>&4<3|`%E=%_JG5%M^KVtkZjGtjlxh%;)%lHY#2N^%g_(jIM84obt#rPQG2N=J}
zcq`-MjPGRpHsjkB&OO$n#?!6Le~0-uG5#OM>lpurag6bYj6cuVW_&f{9OGq-^NcTN
zJi&OO!nrj2Gner$#xoiBGOlL)FyrE+jA!l<#-ogvbgB0Jp7B%6|9~*&1MI_P9*@4r
zY2G_Z*4Ax5&RECtKNzoI-v=1CFn)n?Gvj9!&S~HGOB~G}Y*)VRV|hImA0zDZE#&j<
zJKzDAeA~fT`?ig-_U&%Q+P6CxYv2A_;gWBgCH8#V!1CI+8-YFFT<7UY+CyH0{UwcN
zt at Rp`0 at hwFXPn@OT%mAo5BJ6*=HJHrKVtkI<5`R|jB5zX2+=$)4!F+kB|j)STJG$G
zik8;%TgKYXX at yIEoMOKAbBM8S#~X}wJC6eU{h(Gyv(vg%zaE_M_Rt|8eZP-xpl=`L
zC=5dz;eCvM&G<>iCmH{U at d?KJ8NaTuEjUWAFn>4m4>7-%`TdNiF at BnH9pfi`eo|C5
z{ZYsf*7bHX)_Qj-oYQt6V7~TiEAzGAcQV%Px}C9Z_pOX|TyA2l<F?M{C&h1|OU1v#
zM~A;9`qe%<$){QVDj%KXHGQF?bAG%Ur+!9c?x4=S=oBeBI&BMVc7}2Or?RJTBA!b~
z8u1%5Ymtduf;uWgQ*~-Pbsd#sk)Aq9Bfc70zI at 1+<HU!}Ep5nE(mmmr>$DZx;8QTS
z at p2BF7;c1YE^UzPlJm$Om9j$0)}2qbLHZzNN5{|YL+3ptE51TLWX>adRJKiYk?iYJ
zWqth+I6n)-r&IctkiPAosv{^X?F~qK51&W&LD`OIJNb71Ib^A|rm+oqXm^>E+EY+I
z=*j%~6q#V2DI#qcJL>#-FU~z)F6|0k=T+pKn&&@pptGJU%6R(Zfq2Wyc=`l_c-Mfp
z71^^P?bga2K)Ky-%leAv-=$Oi)nz=rJ0)JbkLTZ|67L4^*2t{=8nm~*qTMgc`ifU>
zcd|&a at OXZ^Rla)Vb}t66Am1Q$Dy92KzmN1 at t36UULA%rCt{DryZy()XO}>)}YNIQC
zRDDT2f1g}j#`E{dC1pJCq{MX=fVa7<zsl_%mGxDBmD?Shq_}xJzukAscz(O at gSSxj
zS5v9K%I!WR?W#T at Ub}DX&I7Mf-1Xc^aaTK4756VriMu?X$nC~V`+g^#@h36UiIsR(
zxz02BBxYg7^UtV!|03rA&G*&C9vo-K=c&v6U9v3qj-zf5z43S93`gr751w`M9S_az
zwC6NO>dht#r<|5)&oSpjYL6>gJXdu$tpJ8;Wb`_qZ*KIxO(h-k&H0`Vdp>s97p|ku
ztn=x3^8$2iDz(M)W0M*GgnoEB>Mu}7vgC(pn%tHobeI>=7O!6#%|>558b4YG^3Z7Z
zFXWtMj`ZSguCsyehHB*f3Zfvhs-p8_w_J+u5Pg!l at 5_9o=sXgTq??tX&S>_<cFJ^$
z&bI=RB&9}{wyyK}qH{+D$vFY*+u8b8D at Zn0l#Eu8tPMyC))}cFS?80CW{+`;=2noL
zACP>TB at LJMaO!<rEwd(ivjon4*5ZFP<|Wl9Gy_y;G- at Ap<r{{Z2F!d at du;~Y=n1da
z-ok$KQc-kT#>%C2?=3h^_U5YIF7+YqvT`e;=%pxfFU)pQYl-{M(Ao^GMnJ2-r~O*J
z{(cBr*RxidLrJU0O+srcwEiML)mIwVA`;Z9_Mt`R7HF+!t at S0Xn)_vFT?(x~si0Mj
zAivglPLHFN(3)YbHKhn>?h<HS2CeA|TGeQ)tQGtJlGgXI3aPkitq%5w%c1qF6|}06
zd5P?;ncQ1?e4d)b$^&0dqql~n)~ldpRRt|-)cUn}V;B4XTzb9IQZ2Q#K+CKOTGWUR
zYSH8RAE9L*`*J{PStTZ&4@<XowC~mZi`L6|iAHDx&c|s?%|dx4${8rB6*VX$C{2_t
z(B$F-Z7IqE%4H}Wl*>_`MY#gy|Djxo^0z3-@)?w^C{NS-MrYQ%S3zbJ!gmp&*|cZj
zJr7px63sg^rtcfH1g&~n1AWh+cTltrM at QApsL5K3uNYF+4xB2RHr?Z0G<XQ#U3fS|
z=MHj>H00TCX^rIkK8YK<{~V7V(WkyTucI99cWBQNw5JmhRT)9>zJoNYJBdlB+f7=N
z&J$(#+rplg7xvOZ(OG~U=_2S_;JPx-0{0Uy`Sq6FO+>RTzEgESqBDJu*B3x111Q|(
zm)smceF1b5=(d1850O0&kv$KQJr9vR50O0&kv$KQz2<<u$9>2f58^<3wz-uuH_G!=
ztHX)*Y)ct!GiWQyXnml4u8ejPw6-!@xT`&TZ5eHIS3K9ZF=)3Ba at Uo~o$T^_rF#oA
zR_GbO at 4D>koiAtG8q~Kq<hg2VI8nF{d+m^J$xvfBrg=?P1HQe{UwWv!D&2NOuJo?x
zwrko3yi>aEn)a}yskUp{2}x6J*R<K)R9CfK(>8#n+pcL3OF7kcO*;YF$7nm+r+Sv!
zr(3Vafoi?S^;+-0Q={`P*IAFXUd6D<>g(5cVd3=LOf=glN6t2 at H9vc?<}~%r#w~td
z2fh7<S(~ApS$%a<6ZzkF>Ael^&Ga2+p~rQO6?OmYwSGF{e&HhI2WsS<l33|1^k`}y
z`gfo7A&j>{NuDgx=<QMWagdU|NECIK7w*+Oy3tcKeRq0s<fhWy>2p^IaTL#g;aP;w
zVa{+l#^nsqi0*&p0T=Freu0 at +%!^Gr?-iG4f|Pmg<z<u`-34Wo)9#!ArRZ$U&&X)K
zMduIsX&Kk~=A?n!+N!*No}~LJ>btuUPu+JomFkEO&+gC^ikRkg=F+qEXpy at T)ICx3
zz9~v#1t)zso>N~6U%i<n{Y_T5vs~wX-0kcAo%V4tbb9fhg^b*fXChOiF+)2oT1BK!
zW%IT7E|lLZPdaZ*Ogisl{- at QV8ec<AIvXau5!o8~!!KQ at 3U|%(@<nGlzLTJJVmisA
zwLg*dywR%8vInq=9Cue7nZ$QwK6 at YI_wd{JZn1XaTe2K+WqBGUzWoxWs1h||x|k_u
GiT?)_RKvai
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0001-arm-boot-compressed-default-asm-arch-to-armv7-a.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0001-arm-boot-compressed-default-asm-arch-to-armv7-a.patch
deleted file mode 100644
index 5037880..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0001-arm-boot-compressed-default-asm-arch-to-armv7-a.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 6b87752bd00d12ac7c8db994480c077857e23bf0 Mon Sep 17 00:00:00 2001
-From: Denys Dmytriyenko <denys at ti.com>
-Date: Thu, 3 May 2012 16:04:16 -0400
-Subject: [PATCH] arch/arm/boot/compressed: set default Asm architecture to armv7-a
-
-This enables building compressed kernel with newer binutils-2.22 when kernel is
-built in Thumb2 mode. Otherwise it fails with the following Assembler error:
-
-| arch/arm/boot/compressed/head.S: Assembler messages:
-| arch/arm/boot/compressed/head.S:127: Error: selected processor does not support requested special purpose register -- `mrs r2,cpsr'
-| arch/arm/boot/compressed/head.S:134: Error: selected processor does not support requested special purpose register -- `mrs r2,cpsr'
-| arch/arm/boot/compressed/head.S:136: Error: selected processor does not support requested special purpose register -- `msr cpsr_c,r2'
-| make[2]: *** [arch/arm/boot/compressed/head.o] Error 1
-| make[1]: *** [arch/arm/boot/compressed/vmlinux] Error 2
-
-Signed-off-by: Denys Dmytriyenko <denys at ti.com>
----
- arch/arm/boot/compressed/Makefile | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/arch/arm/boot/compressed/Makefile b/arch/arm/boot/compressed/Makefile
-index 21f56ff..e01d370 100644
---- a/arch/arm/boot/compressed/Makefile
-+++ b/arch/arm/boot/compressed/Makefile
-@@ -123,7 +123,7 @@ KBUILD_CFLAGS = $(subst -pg, , $(ORIG_CFLAGS))
- endif
-
- ccflags-y := -fpic -fno-builtin -I$(obj)
--asflags-y := -Wa,-march=all
-+asflags-y := -Wa,-march=armv7-a
-
- # Supply kernel BSS size to the decompressor via a linker symbol.
- KBSS_SZ = $(shell size $(obj)/../../../../vmlinux | awk 'END{print $$3}')
---
-1.7.8.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0001-f_rndis-HACK-around-undefined-variables.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0001-f_rndis-HACK-around-undefined-variables.patch
deleted file mode 100644
index ce72ebd..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0001-f_rndis-HACK-around-undefined-variables.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 87fae6477f8987244e2331dc60001c79e5421e80 Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen at dominion.thruhere.net>
-Date: Fri, 7 Oct 2011 15:29:28 +0200
-Subject: [PATCH 01/79] f_rndis: HACK around undefined variables
-
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- drivers/usb/gadget/f_rndis.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/usb/gadget/f_rndis.c b/drivers/usb/gadget/f_rndis.c
-index 6614490..d2f1b6f 100644
---- a/drivers/usb/gadget/f_rndis.c
-+++ b/drivers/usb/gadget/f_rndis.c
-@@ -767,11 +767,11 @@ rndis_bind(struct usb_configuration *c, struct usb_function *f)
-
- rndis_set_param_medium(rndis->config, NDIS_MEDIUM_802_3, 0);
- rndis_set_host_mac(rndis->config, rndis->ethaddr);
--
-+/*
- if (rndis_set_param_vendor(rndis->config, vendorID,
- manufacturer))
- goto fail;
--
-+*/
- /* NOTE: all that is done without knowing or caring about
- * the network link ... which is unavailable to this code
- * until we're activated via set_alt().
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0002-da8xx-fb-add-DVI-support-for-beaglebone.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0002-da8xx-fb-add-DVI-support-for-beaglebone.patch
deleted file mode 100644
index 158ed0c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0002-da8xx-fb-add-DVI-support-for-beaglebone.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 30dcf1f8efb223e5b6fc3c049bc8ce3236ec17a0 Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen at dominion.thruhere.net>
-Date: Thu, 3 Nov 2011 17:35:50 +0100
-Subject: [PATCH 02/79] da8xx-fb: add DVI support for beaglebone
-
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- drivers/video/da8xx-fb.c | 14 ++++++++++++++
- 1 file changed, 14 insertions(+)
-
-diff --git a/drivers/video/da8xx-fb.c b/drivers/video/da8xx-fb.c
-index 2e69278..b01f15b 100644
---- a/drivers/video/da8xx-fb.c
-+++ b/drivers/video/da8xx-fb.c
-@@ -272,6 +272,20 @@ static struct da8xx_panel known_lcd_panels[] = {
- .pxl_clk = 30000000,
- .invert_pxl_clk = 0,
- },
-+ [3] = {
-+ /* 1024 x 768 @ 60 Hz Reduced blanking VESA CVT 0.79M3-R */
-+ .name = "1024x768 at 60",
-+ .width = 1024,
-+ .height = 768,
-+ .hfp = 48,
-+ .hbp = 80,
-+ .hsw = 32,
-+ .vfp = 3,
-+ .vbp = 15,
-+ .vsw = 4,
-+ .pxl_clk = 56000000,
-+ .invert_pxl_clk = 0,
-+ },
- };
-
- /* Enable the Raster Engine of the LCD Controller */
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0003-beaglebone-rebase-everything-onto-3.2-WARNING-MEGAPA.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0003-beaglebone-rebase-everything-onto-3.2-WARNING-MEGAPA.patch
deleted file mode 100644
index 53f7355..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0003-beaglebone-rebase-everything-onto-3.2-WARNING-MEGAPA.patch
+++ /dev/null
@@ -1,563 +0,0 @@
-From 482ed8f98b87299bf77298b86871b4af74334751 Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen at dominion.thruhere.net>
-Date: Mon, 30 Jan 2012 21:30:09 +0100
-Subject: [PATCH 03/79] beaglebone: rebase everything onto 3.2 - WARNING
- MEGAPATCH
-
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- arch/arm/mach-omap2/board-am335xevm.c | 426 ++++++++++++++++++++++++++++++++-
- 1 file changed, 415 insertions(+), 11 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index 563bdf1..2741431 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -19,6 +19,7 @@
- #include <linux/i2c/at24.h>
- #include <linux/phy.h>
- #include <linux/gpio.h>
-+#include <linux/leds.h>
- #include <linux/spi/spi.h>
- #include <linux/spi/flash.h>
- #include <linux/gpio_keys.h>
-@@ -35,7 +36,6 @@
- #include <linux/mfd/tps65910.h>
- #include <linux/mfd/tps65217.h>
- #include <linux/pwm_backlight.h>
--#include <linux/input/ti_tscadc.h>
- #include <linux/reboot.h>
- #include <linux/pwm/pwm.h>
- #include <linux/opp.h>
-@@ -174,6 +174,68 @@ struct da8xx_lcdc_platform_data TFC_S9700RTWV35TR_01B_pdata = {
-
- #include "common.h"
-
-+static const struct display_panel bbtoys7_panel = {
-+ WVGA,
-+ 16,
-+ 16,
-+ COLOR_ACTIVE,
-+};
-+
-+static struct lcd_ctrl_config bbtoys7_cfg = {
-+ &bbtoys7_panel,
-+ .ac_bias = 255,
-+ .ac_bias_intrpt = 0,
-+ .dma_burst_sz = 16,
-+ .bpp = 16,
-+ .fdd = 0x80,
-+ .tft_alt_mode = 0,
-+ .stn_565_mode = 0,
-+ .mono_8bit_mode = 0,
-+ .invert_line_clock = 1,
-+ .invert_frm_clock = 1,
-+ .sync_edge = 0,
-+ .sync_ctrl = 1,
-+ .raster_order = 0,
-+};
-+
-+struct da8xx_lcdc_platform_data bbtoys7_pdata = {
-+ .manu_name = "ThreeFive",
-+ .controller_data = &bbtoys7_cfg,
-+ .type = "TFC_S9700RTWV35TR_01B",
-+};
-+
-+static const struct display_panel dvi_panel = {
-+ WVGA,
-+ 16,
-+ 16,
-+ COLOR_ACTIVE,
-+};
-+
-+static struct lcd_ctrl_config dvi_cfg = {
-+ &dvi_panel,
-+ .ac_bias = 255,
-+ .ac_bias_intrpt = 0,
-+ .dma_burst_sz = 16,
-+ .bpp = 16,
-+ .fdd = 0x80,
-+ .tft_alt_mode = 0,
-+ .stn_565_mode = 0,
-+ .mono_8bit_mode = 0,
-+ .invert_line_clock = 1,
-+ .invert_frm_clock = 1,
-+ .sync_edge = 0,
-+ .sync_ctrl = 1,
-+ .raster_order = 0,
-+};
-+
-+struct da8xx_lcdc_platform_data dvi_pdata = {
-+ .manu_name = "BBToys",
-+ .controller_data = &dvi_cfg,
-+ .type = "1024x768 at 60",
-+};
-+
-+/* TSc controller */
-+#include <linux/input/ti_tscadc.h>
- #include <linux/lis3lv02d.h>
-
- /* TSc controller */
-@@ -342,9 +404,34 @@ static struct am335x_evm_eeprom_config config;
- static struct am335x_eeprom_config1 config1;
- static bool daughter_brd_detected;
-
-+struct beaglebone_cape_eeprom_config {
-+ u32 header;
-+ char format_revision[2];
-+ char name[32];
-+ char version[4];
-+ char manufacturer[16];
-+ char partnumber[16];
-+ u16 numpins;
-+ char serial[12];
-+ u8 muxdata[170];
-+ u16 current_3v3;
-+ u16 current_vdd5v;
-+ u16 current_sys5v;
-+ u16 dc;
-+};
-+
-+static struct beaglebone_cape_eeprom_config cape_config;
-+static bool beaglebone_cape_detected;
-+
-+/* keep track of ADC pin usage */
-+static int capecount = 0;
-+static bool beaglebone_tsadcpins_free = 1;
-+
-+
- #define GP_EVM_REV_IS_1_0 0x1
- #define GP_EVM_REV_IS_1_1A 0x2
- #define GP_EVM_REV_IS_UNKNOWN 0xFF
-+#define GP_EVM_ACTUALLY_BEAGLEBONE 0xBB
- static unsigned int gp_evm_revision = GP_EVM_REV_IS_UNKNOWN;
-
- unsigned int gigabit_enable = 1;
-@@ -427,11 +514,102 @@ static struct pinmux_config lcdc_pin_mux[] = {
- {NULL, 0},
- };
-
-+/* Module pin mux for Beagleboardtoys DVI cape */
-+static struct pinmux_config dvi_pin_mux[] = {
-+ {"lcd_data0.lcd_data0", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-+ | AM33XX_PULL_DISA},
-+ {"lcd_data1.lcd_data1", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-+ | AM33XX_PULL_DISA},
-+ {"lcd_data2.lcd_data2", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-+ | AM33XX_PULL_DISA},
-+ {"lcd_data3.lcd_data3", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-+ | AM33XX_PULL_DISA},
-+ {"lcd_data4.lcd_data4", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-+ | AM33XX_PULL_DISA},
-+ {"lcd_data5.lcd_data5", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-+ | AM33XX_PULL_DISA},
-+ {"lcd_data6.lcd_data6", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-+ | AM33XX_PULL_DISA},
-+ {"lcd_data7.lcd_data7", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-+ | AM33XX_PULL_DISA},
-+ {"lcd_data8.lcd_data8", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-+ | AM33XX_PULL_DISA},
-+ {"lcd_data9.lcd_data9", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-+ | AM33XX_PULL_DISA},
-+ {"lcd_data10.lcd_data10", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-+ | AM33XX_PULL_DISA},
-+ {"lcd_data11.lcd_data11", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-+ | AM33XX_PULL_DISA},
-+ {"lcd_data12.lcd_data12", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-+ | AM33XX_PULL_DISA},
-+ {"lcd_data13.lcd_data13", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-+ | AM33XX_PULL_DISA},
-+ {"lcd_data14.lcd_data14", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-+ | AM33XX_PULL_DISA},
-+ {"lcd_data15.lcd_data15", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-+ | AM33XX_PULL_DISA},
-+ {"lcd_vsync.lcd_vsync", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
-+ {"lcd_hsync.lcd_hsync", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
-+ {"lcd_pclk.lcd_pclk", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
-+ {"lcd_ac_bias_en.lcd_ac_bias_en", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
-+ {"gpmc_a2.rgmii2_td3", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, // USR0 LED
-+ {"gpmc_a3.rgmii2_td2", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, // USR1 LED
-+ {"gpmc_ad7.gpmc_ad7", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, // DVI PDn
-+ {NULL, 0},
-+};
-+
-+/* Module pin mux for Beagleboardtoys 7" LCD cape */
-+static struct pinmux_config bbtoys7_pin_mux[] = {
-+ {"lcd_data0.lcd_data0", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-+ | AM33XX_PULL_DISA},
-+ {"lcd_data1.lcd_data1", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-+ | AM33XX_PULL_DISA},
-+ {"lcd_data2.lcd_data2", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-+ | AM33XX_PULL_DISA},
-+ {"lcd_data3.lcd_data3", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-+ | AM33XX_PULL_DISA},
-+ {"lcd_data4.lcd_data4", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-+ | AM33XX_PULL_DISA},
-+ {"lcd_data5.lcd_data5", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-+ | AM33XX_PULL_DISA},
-+ {"lcd_data6.lcd_data6", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-+ | AM33XX_PULL_DISA},
-+ {"lcd_data7.lcd_data7", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-+ | AM33XX_PULL_DISA},
-+ {"lcd_data8.lcd_data8", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-+ | AM33XX_PULL_DISA},
-+ {"lcd_data9.lcd_data9", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-+ | AM33XX_PULL_DISA},
-+ {"lcd_data10.lcd_data10", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-+ | AM33XX_PULL_DISA},
-+ {"lcd_data11.lcd_data11", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-+ | AM33XX_PULL_DISA},
-+ {"lcd_data12.lcd_data12", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-+ | AM33XX_PULL_DISA},
-+ {"lcd_data13.lcd_data13", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-+ | AM33XX_PULL_DISA},
-+ {"lcd_data14.lcd_data14", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-+ | AM33XX_PULL_DISA},
-+ {"lcd_data15.lcd_data15", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-+ | AM33XX_PULL_DISA},
-+ {"lcd_vsync.lcd_vsync", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
-+ {"lcd_hsync.lcd_hsync", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
-+ {"lcd_pclk.lcd_pclk", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
-+ {"lcd_ac_bias_en.lcd_ac_bias_en", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
-+ {"gpmc_a2.gpio1_18", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, // Backlight
-+ {"ecap0_in_pwm0_out.gpio0_7", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, // AVDD_EN
-+ {NULL, 0},
-+};
-+
- static struct pinmux_config tsc_pin_mux[] = {
- {"ain0.ain0", OMAP_MUX_MODE0 | AM33XX_INPUT_EN},
- {"ain1.ain1", OMAP_MUX_MODE0 | AM33XX_INPUT_EN},
- {"ain2.ain2", OMAP_MUX_MODE0 | AM33XX_INPUT_EN},
- {"ain3.ain3", OMAP_MUX_MODE0 | AM33XX_INPUT_EN},
-+ {"ain4.ain4", OMAP_MUX_MODE0 | AM33XX_INPUT_EN},
-+ {"ain5.ain5", OMAP_MUX_MODE0 | AM33XX_INPUT_EN},
-+ {"ain6.ain6", OMAP_MUX_MODE0 | AM33XX_INPUT_EN},
-+ {"ain7.ain7", OMAP_MUX_MODE0 | AM33XX_INPUT_EN},
- {"vrefp.vrefp", OMAP_MUX_MODE0 | AM33XX_INPUT_EN},
- {"vrefn.vrefn", OMAP_MUX_MODE0 | AM33XX_INPUT_EN},
- {NULL, 0},
-@@ -566,9 +744,9 @@ static struct pinmux_config i2c1_pin_mux[] = {
-
- static struct pinmux_config i2c2_pin_mux[] = {
- {"uart1_ctsn.i2c2_sda", OMAP_MUX_MODE3 | AM33XX_SLEWCTRL_SLOW |
-- AM33XX_PULL_UP | AM33XX_INPUT_EN},
-+ AM33XX_PIN_INPUT_PULLUP},
- {"uart1_rtsn.i2c2_scl", OMAP_MUX_MODE3 | AM33XX_SLEWCTRL_SLOW |
-- AM33XX_PULL_UP | AM33XX_INPUT_EN},
-+ AM33XX_PIN_INPUT_PULLUP},
- {NULL, 0},
- };
-
-@@ -846,6 +1024,64 @@ static struct pinmux_config profibus_pin_mux[] = {
- {NULL, 0},
- };
-
-+
-+#define BEAGLEBONEDVI_USR0_LED GPIO_TO_PIN(1, 18)
-+#define BEAGLEBONEDVI_USR1_LED GPIO_TO_PIN(1, 19)
-+
-+static struct gpio_led dvi_gpio_leds[] = {
-+ {
-+ .name = "beaglebone::usr0",
-+ .default_trigger = "heartbeat",
-+ .gpio = BEAGLEBONE_USR1_LED,
-+ },
-+ {
-+ .name = "beaglebone::usr1",
-+ .default_trigger = "mmc0",
-+ .gpio = BEAGLEBONE_USR2_LED,
-+ },
-+ {
-+ .name = "beaglebone::usr2",
-+ .gpio = BEAGLEBONE_USR3_LED,
-+ },
-+ {
-+ .name = "beaglebone::usr3",
-+ .gpio = BEAGLEBONE_USR4_LED,
-+ },
-+ {
-+ .name = "dvi::usr0",
-+ .default_trigger = "heartbeat",
-+ .gpio = BEAGLEBONEDVI_USR0_LED,
-+ },
-+ {
-+ .name = "dvi::usr1",
-+ .default_trigger = "mmc0",
-+ .gpio = BEAGLEBONEDVI_USR1_LED,
-+ },
-+};
-+
-+static struct gpio_led_platform_data dvi_gpio_led_info = {
-+ .leds = dvi_gpio_leds,
-+ .num_leds = ARRAY_SIZE(dvi_gpio_leds),
-+};
-+
-+static struct platform_device dvi_leds_gpio = {
-+ .name = "leds-gpio",
-+ .id = -1,
-+ .dev = {
-+ .platform_data = &dvi_gpio_led_info,
-+ },
-+};
-+
-+static struct pinmux_config bone_pin_mux[] = {
-+ /* User LED gpios (gpio1_21 to gpio1_24) */
-+ {"gpmc_a5.rgmii2_td0", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT},
-+ {"gpmc_a6.rgmii2_tclk", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT},
-+ {"gpmc_a7.rgmii2_rclk", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT},
-+ {"gpmc_a8.rgmii2_rd3", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT},
-+ /* Grounding gpio1_6 (pin 3 Conn A) signals bone tester to start diag tests */
-+ {"gpmc_ad6.gpio1_6", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT_PULLUP},
-+};
-+
- /* Module pin mux for eCAP0 */
- static struct pinmux_config ecap0_pin_mux[] = {
- {"ecap0_in_pwm0_out.ecap0_in_pwm0_out",
-@@ -968,6 +1204,51 @@ static void lcdc_init(int evm_id, int profile)
- return;
- }
-
-+#define BEAGLEBONE_LCD_AVDD_EN GPIO_TO_PIN(0, 7)
-+#define BEAGLEBONE_LCD_BL GPIO_TO_PIN(1, 18)
-+
-+static void bbtoys7lcd_init(int evm_id, int profile)
-+{
-+ setup_pin_mux(bbtoys7_pin_mux);
-+
-+ // we are being stupid and setting pixclock from here instead of da8xx-fb.c
-+ if (conf_disp_pll(300000000)) {
-+ pr_info("Failed to set pixclock to 300000000, not attempting to"
-+ "register LCD cape\n");
-+ return;
-+ }
-+
-+ if (am33xx_register_lcdc(&bbtoys7_pdata))
-+ pr_info("Failed to register Beagleboardtoys 7\" LCD cape device\n");
-+
-+ gpio_request(BEAGLEBONE_LCD_BL, "BONE_LCD_BL");
-+ gpio_direction_output(BEAGLEBONE_LCD_BL, 1);
-+ gpio_request(BEAGLEBONE_LCD_AVDD_EN, "BONE_LCD_AVDD_EN");
-+ gpio_direction_output(BEAGLEBONE_LCD_AVDD_EN, 1);
-+
-+ return;
-+}
-+
-+#define BEAGLEBONEDVI_PDn GPIO_TO_PIN(1, 7)
-+
-+static void dvi_init(int evm_id, int profile)
-+{
-+ setup_pin_mux(dvi_pin_mux);
-+ gpio_request(BEAGLEBONEDVI_PDn, "DVI_PDn");
-+ gpio_direction_output(BEAGLEBONEDVI_PDn, 1);
-+
-+ // we are being stupid and setting pixclock from here instead of da8xx-fb.c
-+ if (conf_disp_pll(560000000)) {
-+ pr_info("Failed to set pixclock to 56000000, not attempting to"
-+ "register DVI adapter\n");
-+ return;
-+ }
-+
-+ if (am33xx_register_lcdc(&dvi_pdata))
-+ pr_info("Failed to register BeagleBoardToys DVI cape\n");
-+ return;
-+}
-+
- static void tsc_init(int evm_id, int profile)
- {
- int err;
-@@ -975,10 +1256,15 @@ static void tsc_init(int evm_id, int profile)
- if (gp_evm_revision == GP_EVM_REV_IS_1_1A) {
- am335x_touchscreen_data.analog_input = 1;
- pr_info("TSC connected to beta GP EVM\n");
-- } else {
-+ }
-+ if (gp_evm_revision == GP_EVM_REV_IS_1_1A) {
- am335x_touchscreen_data.analog_input = 0;
- pr_info("TSC connected to alpha GP EVM\n");
- }
-+ if( gp_evm_revision == GP_EVM_ACTUALLY_BEAGLEBONE) {
-+ am335x_touchscreen_data.analog_input = 1;
-+ pr_info("TSC connected to BeagleBone\n");;
-+ }
- setup_pin_mux(tsc_pin_mux);
-
- err = am33xx_register_tsc(&am335x_touchscreen_data);
-@@ -986,6 +1272,33 @@ static void tsc_init(int evm_id, int profile)
- pr_err("failed to register touchscreen device\n");
- }
-
-+static void bone_tsc_init(int evm_id, int profile)
-+{
-+ int err;
-+ setup_pin_mux(tsc_pin_mux);
-+ err = am33xx_register_tsc(&bone_touchscreen_data);
-+ if (err)
-+ pr_err("failed to register touchscreen device\n");
-+}
-+
-+
-+static void boneleds_init(int evm_id, int profile )
-+{
-+ int err;
-+ setup_pin_mux(bone_pin_mux);
-+ err = platform_device_register(&bone_leds_gpio);
-+ if (err)
-+ pr_err("failed to register BeagleBone LEDS\n");
-+}
-+
-+static void dvileds_init(int evm_id, int profile )
-+{
-+ int err;
-+ err = platform_device_register(&dvi_leds_gpio);
-+ if (err)
-+ pr_err("failed to register BeagleBone DVI cape LEDS\n");
-+}
-+
- static void rgmii1_init(int evm_id, int profile)
- {
- setup_pin_mux(rgmii1_pin_mux);
-@@ -1431,18 +1744,106 @@ static void i2c1_init(int evm_id, int profile)
- return;
- }
-
-+static void beaglebone_cape_setup(struct memory_accessor *mem_acc, void *context)
-+{
-+ capecount++;
-+ int ret;
-+ char tmp[32];
-+ char name[32];
-+ char manufacturer[32];
-+
-+ /* get cape specific data */
-+ ret = mem_acc->read(mem_acc, (char *)&cape_config, 0, sizeof(cape_config));
-+ if (ret != sizeof(cape_config)) {
-+ pr_warning("BeagleBone cape EEPROM: could not read eeprom at address 0x%x\n", capecount + 0x53);
-+ if ((capecount > 3) && (beaglebone_tsadcpins_free == 1)) {
-+ pr_info("BeagleBone cape: exporting ADC pins to sysfs\n");
-+ bone_tsc_init(0,0);
-+ beaglebone_tsadcpins_free = 0;
-+ }
-+ return;
-+ }
-+
-+ if (cape_config.header != AM335X_EEPROM_HEADER) {
-+ pr_warning("BeagleBone Cape EEPROM: wrong header 0x%x, expected 0x%x\n",
-+ cape_config.header, AM335X_EEPROM_HEADER);
-+ goto out;
-+ }
-+
-+ pr_info("BeagleBone cape EEPROM: found eeprom at address 0x%x\n", capecount + 0x53);
-+ snprintf(name, sizeof(cape_config.name) + 1, "%s", cape_config.name);
-+ snprintf(manufacturer, sizeof(cape_config.manufacturer) + 1, "%s", cape_config.manufacturer);
-+ pr_info("BeagleBone cape: %s %s\n", manufacturer, name);
-+ snprintf(tmp, sizeof(cape_config.partnumber) + 1, "%s", cape_config.partnumber);
-+ pr_info("BeagleBone cape partnumber: %s\n", tmp);
-
--static struct i2c_board_info am335x_i2c_boardinfo2[] = {
-+ if (!strncmp("BB-BONE-DVID-01", cape_config.partnumber, 5)) {
-+ pr_info("BeagleBone cape: initializing DVI cape\n");
-+ dvi_init(0,0);
-+ }
-+ if (!strncmp("LCD01", cape_config.partnumber, 5)) {
-+ pr_info("BeagleBone cape: initializing LCD cape\n");
-+ bbtoys7lcd_init(0,0);
-+ pr_info("BeagleBone cape: initializing LCD cape touchscreen\n");
-+ tsc_init(0,0);
-+ beaglebone_tsadcpins_free = 0;
-+ }
-+
-+
-+ if ((capecount > 3) && (beaglebone_tsadcpins_free == 1)) {
-+ pr_info("BeagleBone cape: exporting ADC pins to sysfs\n");
-+ bone_tsc_init(0,0);
-+ beaglebone_tsadcpins_free = 0;
-+ }
-+
-+ return;
-+out:
-+ /*
-+ * If the EEPROM hasn't been programed or an incorrect header
-+ * or board name are read, assume this is an old beaglebone board
-+ * (< Rev A3)
-+ */
-+ pr_err("Could not detect BeagleBone cape properly\n");
-+ beaglebone_cape_detected = false;
-+
-+}
-+
-+static struct at24_platform_data cape_eeprom_info = {
-+ .byte_len = (256*1024) / 8,
-+ .page_size = 64,
-+ .flags = AT24_FLAG_ADDR16,
-+ .context = (void *)NULL,
-+ .setup = beaglebone_cape_setup,
-+};
-+
-+static struct i2c_board_info __initdata cape_i2c_boardinfo[] = {
-+ {
-+ I2C_BOARD_INFO("24c256", 0x54),
-+ .platform_data = &cape_eeprom_info,
-+ },
-+ {
-+ I2C_BOARD_INFO("24c256", 0x55),
-+ .platform_data = &cape_eeprom_info,
-+ },
-+ {
-+ I2C_BOARD_INFO("24c256", 0x56),
-+ .platform_data = &cape_eeprom_info,
-+ },
-+ {
-+ I2C_BOARD_INFO("24c256", 0x57),
-+ .platform_data = &cape_eeprom_info,
-+ },
- };
-
- static void i2c2_init(int evm_id, int profile)
- {
-- setup_pin_mux(i2c2_pin_mux);
-- omap_register_i2c_bus(3, 100, am335x_i2c_boardinfo2,
-- ARRAY_SIZE(am335x_i2c_boardinfo2));
-- return;
-+ setup_pin_mux(i2c2_pin_mux);
-+ omap_register_i2c_bus(3, 100, cape_i2c_boardinfo,
-+ ARRAY_SIZE(cape_i2c_boardinfo));
-+ return;
- }
-
-+
- /* Setup McASP 1 */
- static void mcasp1_init(int evm_id, int profile)
- {
-@@ -1826,8 +2227,9 @@ static struct evm_dev_cfg beaglebone_old_dev_cfg[] = {
- {rmii1_init, DEV_ON_BASEBOARD, PROFILE_NONE},
- {usb0_init, DEV_ON_BASEBOARD, PROFILE_NONE},
- {usb1_init, DEV_ON_BASEBOARD, PROFILE_NONE},
-- {mmc0_init, DEV_ON_BASEBOARD, PROFILE_NONE},
- {i2c2_init, DEV_ON_BASEBOARD, PROFILE_NONE},
-+ {mmc0_init, DEV_ON_BASEBOARD, PROFILE_NONE},
-+ {boneleds_init, DEV_ON_BASEBOARD, PROFILE_ALL},
- {NULL, 0, 0},
- };
-
-@@ -1837,8 +2239,9 @@ static struct evm_dev_cfg beaglebone_dev_cfg[] = {
- {mii1_init, DEV_ON_BASEBOARD, PROFILE_NONE},
- {usb0_init, DEV_ON_BASEBOARD, PROFILE_NONE},
- {usb1_init, DEV_ON_BASEBOARD, PROFILE_NONE},
-- {mmc0_init, DEV_ON_BASEBOARD, PROFILE_NONE},
- {i2c2_init, DEV_ON_BASEBOARD, PROFILE_NONE},
-+ {mmc0_init, DEV_ON_BASEBOARD, PROFILE_NONE},
-+ {boneleds_init, DEV_ON_BASEBOARD, PROFILE_ALL},
- {NULL, 0, 0},
- };
-
-@@ -1925,6 +2328,7 @@ static void setup_beaglebone_old(void)
- static void setup_beaglebone(void)
- {
- pr_info("The board is a AM335x Beaglebone.\n");
-+ gp_evm_revision = GP_EVM_ACTUALLY_BEAGLEBONE;
-
- /* Beagle Bone has Micro-SD slot which doesn't have Write Protect pin */
- am335x_mmc[0].gpio_wp = -EINVAL;
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0004-more-beaglebone-merges.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0004-more-beaglebone-merges.patch
deleted file mode 100644
index 9e3186d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0004-more-beaglebone-merges.patch
+++ /dev/null
@@ -1,107 +0,0 @@
-From e495bd4f47ad3b8f48916582b12ec0bf0a7e7134 Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen at dominion.thruhere.net>
-Date: Tue, 31 Jan 2012 10:04:03 +0100
-Subject: [PATCH 04/79] more beaglebone merges
-
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- arch/arm/mach-omap2/board-am335xevm.c | 52 +++++++++++++++++++++++++++++++--
- 1 file changed, 50 insertions(+), 2 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index 2741431..ffbecae 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -242,6 +242,11 @@ struct da8xx_lcdc_platform_data dvi_pdata = {
- static struct tsc_data am335x_touchscreen_data = {
- .wires = 4,
- .x_plate_resistance = 200,
-+ .mode = TI_TSCADC_TSCMODE,
-+};
-+
-+static struct tsc_data bone_touchscreen_data = {
-+ .mode = TI_TSCADC_GENMODE,
- };
-
- static u8 am335x_iis_serializer_direction1[] = {
-@@ -429,6 +434,7 @@ static bool beaglebone_tsadcpins_free = 1;
-
-
- #define GP_EVM_REV_IS_1_0 0x1
-+#define GP_EVM_REV_IS_1_0A 0x1
- #define GP_EVM_REV_IS_1_1A 0x2
- #define GP_EVM_REV_IS_UNKNOWN 0xFF
- #define GP_EVM_ACTUALLY_BEAGLEBONE 0xBB
-@@ -1024,6 +1030,47 @@ static struct pinmux_config profibus_pin_mux[] = {
- {NULL, 0},
- };
-
-+/* LEDS - gpio1_21 -> gpio1_24 */
-+
-+#define BEAGLEBONE_USR1_LED GPIO_TO_PIN(1, 21)
-+#define BEAGLEBONE_USR2_LED GPIO_TO_PIN(1, 22)
-+#define BEAGLEBONE_USR3_LED GPIO_TO_PIN(1, 23)
-+#define BEAGLEBONE_USR4_LED GPIO_TO_PIN(1, 24)
-+
-+static struct gpio_led bone_gpio_leds[] = {
-+ {
-+ .name = "beaglebone::usr0",
-+ .default_trigger = "heartbeat",
-+ .gpio = BEAGLEBONE_USR1_LED,
-+ },
-+ {
-+ .name = "beaglebone::usr1",
-+ .default_trigger = "mmc0",
-+ .gpio = BEAGLEBONE_USR2_LED,
-+ },
-+ {
-+ .name = "beaglebone::usr2",
-+ .gpio = BEAGLEBONE_USR3_LED,
-+ },
-+ {
-+ .name = "beaglebone::usr3",
-+ .gpio = BEAGLEBONE_USR4_LED,
-+ },
-+};
-+
-+static struct gpio_led_platform_data bone_gpio_led_info = {
-+ .leds = bone_gpio_leds,
-+ .num_leds = ARRAY_SIZE(bone_gpio_leds),
-+};
-+
-+static struct platform_device bone_leds_gpio = {
-+ .name = "leds-gpio",
-+ .id = -1,
-+ .dev = {
-+ .platform_data = &bone_gpio_led_info,
-+ },
-+};
-+
-
- #define BEAGLEBONEDVI_USR0_LED GPIO_TO_PIN(1, 18)
- #define BEAGLEBONEDVI_USR1_LED GPIO_TO_PIN(1, 19)
-@@ -1777,11 +1824,11 @@ static void beaglebone_cape_setup(struct memory_accessor *mem_acc, void *context
- snprintf(tmp, sizeof(cape_config.partnumber) + 1, "%s", cape_config.partnumber);
- pr_info("BeagleBone cape partnumber: %s\n", tmp);
-
-- if (!strncmp("BB-BONE-DVID-01", cape_config.partnumber, 5)) {
-+ if (!strncmp("BB-BONE-DVID-01", cape_config.partnumber, 15)) {
- pr_info("BeagleBone cape: initializing DVI cape\n");
- dvi_init(0,0);
- }
-- if (!strncmp("LCD01", cape_config.partnumber, 5)) {
-+ if (!strncmp("BB-BONE-LCD7-01", cape_config.partnumber, 15)) {
- pr_info("BeagleBone cape: initializing LCD cape\n");
- bbtoys7lcd_init(0,0);
- pr_info("BeagleBone cape: initializing LCD cape touchscreen\n");
-@@ -2258,6 +2305,7 @@ static void setup_general_purpose_evm(void)
- pr_info("The board is general purpose EVM in profile %d\n", prof_sel);
-
- if (!strncmp("1.1A", config.version, 4)) {
-+ pr_info("EVM version is %s\n", config.version);
- gp_evm_revision = GP_EVM_REV_IS_1_1A;
- } else if (!strncmp("1.0", config.version, 3)) {
- gp_evm_revision = GP_EVM_REV_IS_1_0;
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0005-beaglebone-disable-tsadc.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0005-beaglebone-disable-tsadc.patch
deleted file mode 100644
index 5cd6f46..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0005-beaglebone-disable-tsadc.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From fd6ae50df7aee160e23cce68bf5c0fd223f2700a Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen at dominion.thruhere.net>
-Date: Tue, 31 Jan 2012 10:09:06 +0100
-Subject: [PATCH 05/79] beaglebone: disable tsadc
-
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- arch/arm/mach-omap2/board-am335xevm.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index ffbecae..ba611c0 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -242,11 +242,11 @@ struct da8xx_lcdc_platform_data dvi_pdata = {
- static struct tsc_data am335x_touchscreen_data = {
- .wires = 4,
- .x_plate_resistance = 200,
-- .mode = TI_TSCADC_TSCMODE,
-+// .mode = TI_TSCADC_TSCMODE,
- };
-
- static struct tsc_data bone_touchscreen_data = {
-- .mode = TI_TSCADC_GENMODE,
-+// .mode = TI_TSCADC_GENMODE,
- };
-
- static u8 am335x_iis_serializer_direction1[] = {
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0006-tscadc-Add-general-purpose-mode-untested-with-touchs.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0006-tscadc-Add-general-purpose-mode-untested-with-touchs.patch
deleted file mode 100644
index d0f7194..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0006-tscadc-Add-general-purpose-mode-untested-with-touchs.patch
+++ /dev/null
@@ -1,406 +0,0 @@
-From d434e8f8c1fec1f10d2475a014ed26d4e5bc8579 Mon Sep 17 00:00:00 2001
-From: Joel A Fernandes <joelagnel at ti.com>
-Date: Wed, 30 Nov 2011 15:00:40 +0100
-Subject: [PATCH 06/79] tscadc: Add general purpose mode, untested with
- touchscreen functionality
-
-Signed-off-by: Joel A Fernandes <joelagnel at ti.com>
-
-Conflicts:
-
- drivers/input/touchscreen/ti_tscadc.c
- [Fixed by Koen - needs review]
----
- arch/arm/mach-omap2/board-am335xevm.c | 2 +
- arch/arm/mach-omap2/mux33xx.c | 12 ++
- arch/arm/mach-omap2/mux33xx.h | 4 +
- drivers/input/touchscreen/ti_tscadc.c | 205 +++++++++++++++++++++++++--------
- include/linux/input/ti_tscadc.h | 4 +
- 5 files changed, 178 insertions(+), 49 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index ba611c0..8f7ee0b 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -2277,6 +2277,7 @@ static struct evm_dev_cfg beaglebone_old_dev_cfg[] = {
- {i2c2_init, DEV_ON_BASEBOARD, PROFILE_NONE},
- {mmc0_init, DEV_ON_BASEBOARD, PROFILE_NONE},
- {boneleds_init, DEV_ON_BASEBOARD, PROFILE_ALL},
-+ {tsc_init, DEV_ON_BASEBOARD, PROFILE_ALL},
- {NULL, 0, 0},
- };
-
-@@ -2289,6 +2290,7 @@ static struct evm_dev_cfg beaglebone_dev_cfg[] = {
- {i2c2_init, DEV_ON_BASEBOARD, PROFILE_NONE},
- {mmc0_init, DEV_ON_BASEBOARD, PROFILE_NONE},
- {boneleds_init, DEV_ON_BASEBOARD, PROFILE_ALL},
-+ {tsc_init, DEV_ON_BASEBOARD, PROFILE_ALL},
- {NULL, 0, 0},
- };
-
-diff --git a/arch/arm/mach-omap2/mux33xx.c b/arch/arm/mach-omap2/mux33xx.c
-index 59e51e0..572ed16 100644
---- a/arch/arm/mach-omap2/mux33xx.c
-+++ b/arch/arm/mach-omap2/mux33xx.c
-@@ -584,6 +584,18 @@ static struct omap_mux __initdata am33xx_muxmodes[] = {
- _AM33XX_MUXENTRY(AIN3, 0,
- "ain3", NULL, NULL, NULL,
- NULL, NULL, NULL, NULL),
-+ _AM33XX_MUXENTRY(AIN4, 0,
-+ "ain4", NULL, NULL, NULL,
-+ NULL, NULL, NULL, NULL),
-+ _AM33XX_MUXENTRY(AIN5, 0,
-+ "ain5", NULL, NULL, NULL,
-+ NULL, NULL, NULL, NULL),
-+ _AM33XX_MUXENTRY(AIN6, 0,
-+ "ain6", NULL, NULL, NULL,
-+ NULL, NULL, NULL, NULL),
-+ _AM33XX_MUXENTRY(AIN7, 0,
-+ "ain7", NULL, NULL, NULL,
-+ NULL, NULL, NULL, NULL),
- _AM33XX_MUXENTRY(VREFP, 0,
- "vrefp", NULL, NULL, NULL,
- NULL, NULL, NULL, NULL),
-diff --git a/arch/arm/mach-omap2/mux33xx.h b/arch/arm/mach-omap2/mux33xx.h
-index 70a3012..348c8e5 100644
---- a/arch/arm/mach-omap2/mux33xx.h
-+++ b/arch/arm/mach-omap2/mux33xx.h
-@@ -228,6 +228,10 @@
- #define AM33XX_CONTROL_PADCONF_DDR_DQSN1_OFFSET 0x0AFC
- #define AM33XX_CONTROL_PADCONF_DDR_VREF_OFFSET 0x0B00
- #define AM33XX_CONTROL_PADCONF_DDR_VTP_OFFSET 0x0B04
-+#define AM33XX_CONTROL_PADCONF_AIN7_OFFSET 0x0B10
-+#define AM33XX_CONTROL_PADCONF_AIN6_OFFSET 0x0B14
-+#define AM33XX_CONTROL_PADCONF_AIN5_OFFSET 0x0B18
-+#define AM33XX_CONTROL_PADCONF_AIN4_OFFSET 0x0B1C
- #define AM33XX_CONTROL_PADCONF_AIN3_OFFSET 0x0B20
- #define AM33XX_CONTROL_PADCONF_AIN2_OFFSET 0x0B24
- #define AM33XX_CONTROL_PADCONF_AIN1_OFFSET 0x0B28
-diff --git a/drivers/input/touchscreen/ti_tscadc.c b/drivers/input/touchscreen/ti_tscadc.c
-index 835a0ba..c6dc6f0 100644
---- a/drivers/input/touchscreen/ti_tscadc.c
-+++ b/drivers/input/touchscreen/ti_tscadc.c
-@@ -28,6 +28,8 @@
- #include <linux/delay.h>
- #include <linux/pm_runtime.h>
-
-+/* Memory mapped registers here have incorrect offsets!
-+ * Correct after referring TRM */
- #define TSCADC_REG_IRQEOI 0x020
- #define TSCADC_REG_RAWIRQSTATUS 0x024
- #define TSCADC_REG_IRQSTATUS 0x028
-@@ -58,12 +60,19 @@
- #define TSCADC_IRQWKUP_ENB BIT(0)
- #define TSCADC_IRQWKUP_DISABLE 0x00
- #define TSCADC_STPENB_STEPENB 0x7FFF
-+#define TSCADC_STPENB_STEPENB_TOUCHSCREEN 0x7FFF
-+#define TSCADC_STPENB_STEPENB_GENERAL 0x0400
- #define TSCADC_IRQENB_FIFO0THRES BIT(2)
-+#define TSCADC_IRQENB_FIFO0OVERRUN BIT(3)
- #define TSCADC_IRQENB_FIFO1THRES BIT(5)
-+#define TSCADC_IRQENB_EOS BIT(1)
- #define TSCADC_IRQENB_PENUP BIT(9)
- #define TSCADC_IRQENB_HW_PEN BIT(0)
- #define TSCADC_STEPCONFIG_MODE_HWSYNC 0x2
-+#define TSCADC_STEPCONFIG_MODE_SWCONT 0x1
-+#define TSCADC_STEPCONFIG_MODE_SWONESHOT 0x0
- #define TSCADC_STEPCONFIG_2SAMPLES_AVG (1 << 4)
-+#define TSCADC_STEPCONFIG_NO_AVG 0
- #define TSCADC_STEPCONFIG_XPP BIT(5)
- #define TSCADC_STEPCONFIG_XNN BIT(6)
- #define TSCADC_STEPCONFIG_YPP BIT(7)
-@@ -109,6 +118,7 @@ struct tscadc {
- int wires;
- int analog_input;
- int x_plate_resistance;
-+ int mode;
- int irq;
- void __iomem *tsc_base;
- unsigned int ctrl;
-@@ -125,6 +135,86 @@ static void tscadc_writel(struct tscadc *tsc, unsigned int reg,
- writel(val, tsc->tsc_base + reg);
- }
-
-+static void tsc_adc_step_config(struct tscadc *ts_dev)
-+{
-+ unsigned int stepconfig = 0, delay = 0, chargeconfig = 0;
-+
-+ /*
-+ * Step Configuration
-+ * software-enabled continous mode
-+ * 2 sample averaging
-+ * sample channel 1 (SEL_INP mux bits = 0)
-+ */
-+ stepconfig = TSCADC_STEPCONFIG_MODE_SWONESHOT |
-+ TSCADC_STEPCONFIG_2SAMPLES_AVG |
-+ (0x7 << 19);
-+
-+ delay = TSCADC_STEPCONFIG_SAMPLEDLY | TSCADC_STEPCONFIG_OPENDLY;
-+
-+ tscadc_writel(ts_dev, TSCADC_REG_STEPCONFIG(10), stepconfig);
-+ tscadc_writel(ts_dev, TSCADC_REG_STEPDELAY(10), delay);
-+
-+ /* Get the ball rolling, this will trigger the FSM to step through
-+ * as soon as TSC_ADC_SS is turned on */
-+ tscadc_writel(ts_dev, TSCADC_REG_SE, TSCADC_STPENB_STEPENB_GENERAL);
-+}
-+
-+static irqreturn_t tsc_adc_interrupt(int irq, void *dev)
-+{
-+ struct tscadc *ts_dev = (struct tscadc *)dev;
-+ struct input_dev *input_dev = ts_dev->input;
-+ unsigned int status, irqclr = 0;
-+ int i;
-+ int fsm = 0, fifo0count = 0, fifo1count = 0;
-+ unsigned int read_sample = 0, ready1 = 0;
-+ unsigned int prev_val_x = ~0, prev_val_y = ~0;
-+ unsigned int prev_diff_x = ~0, prev_diff_y = ~0;
-+ unsigned int cur_diff_x = 0, cur_diff_y = 0;
-+ unsigned int val_x = 0, val_y = 0, diffx = 0, diffy = 0;
-+
-+ status = tscadc_readl(ts_dev, TSCADC_REG_IRQSTATUS);
-+
-+ printk("interrupt! status=%x\n", status);
-+ // if (status & TSCADC_IRQENB_EOS) {
-+ // irqclr |= TSCADC_IRQENB_EOS;
-+ // }
-+
-+ if (status & TSCADC_IRQENB_FIFO0THRES) {
-+ fifo1count = tscadc_readl(ts_dev, TSCADC_REG_FIFO0CNT);
-+ printk("fifo 0 count = %d\n", fifo1count);
-+
-+ for (i = 0; i < fifo1count; i++) {
-+ read_sample = tscadc_readl(ts_dev, TSCADC_REG_FIFO0);
-+ printk("sample: %d: %x\n", i, read_sample);
-+ }
-+ irqclr |= TSCADC_IRQENB_FIFO0THRES;
-+ }
-+
-+
-+ if (status & TSCADC_IRQENB_FIFO1THRES) {
-+ fifo1count = tscadc_readl(ts_dev, TSCADC_REG_FIFO1CNT);
-+
-+ for (i = 0; i < fifo1count; i++) {
-+ read_sample = tscadc_readl(ts_dev, TSCADC_REG_FIFO1);
-+ // read_sample = read_sample & 0xfff;
-+ printk("sample: %d: %d\n", i, read_sample);
-+ panic("sample read from fifo1!");
-+ }
-+ irqclr |= TSCADC_IRQENB_FIFO1THRES;
-+ }
-+
-+ mdelay(500);
-+
-+ tscadc_writel(ts_dev, TSCADC_REG_IRQSTATUS, irqclr);
-+
-+ /* check pending interrupts */
-+ tscadc_writel(ts_dev, TSCADC_REG_IRQEOI, 0x0);
-+
-+ /* Turn on Step 1 again */
-+ tscadc_writel(ts_dev, TSCADC_REG_SE, TSCADC_STPENB_STEPENB_GENERAL);
-+ return IRQ_HANDLED;
-+}
-+
- static void tsc_step_config(struct tscadc *ts_dev)
- {
- unsigned int stepconfigx = 0, stepconfigy = 0;
-@@ -229,7 +319,7 @@ static void tsc_step_config(struct tscadc *ts_dev)
- tscadc_writel(ts_dev, TSCADC_REG_STEPCONFIG14, stepconfigz2);
- tscadc_writel(ts_dev, TSCADC_REG_STEPDELAY14, delay);
-
-- tscadc_writel(ts_dev, TSCADC_REG_SE, TSCADC_STPENB_STEPENB);
-+ tscadc_writel(ts_dev, TSCADC_REG_SE, TSCADC_STPENB_STEPENB_TOUCHSCREEN);
- }
-
- static void tsc_idle_config(struct tscadc *ts_config)
-@@ -247,7 +337,7 @@ static void tsc_idle_config(struct tscadc *ts_config)
- tscadc_writel(ts_config, TSCADC_REG_IDLECONFIG, idleconfig);
- }
-
--static irqreturn_t tscadc_interrupt(int irq, void *dev)
-+static irqreturn_t tsc_interrupt(int irq, void *dev)
- {
- struct tscadc *ts_dev = (struct tscadc *)dev;
- struct input_dev *input_dev = ts_dev->input;
-@@ -368,7 +458,7 @@ static irqreturn_t tscadc_interrupt(int irq, void *dev)
- /* check pending interrupts */
- tscadc_writel(ts_dev, TSCADC_REG_IRQEOI, 0x0);
-
-- tscadc_writel(ts_dev, TSCADC_REG_SE, TSCADC_STPENB_STEPENB);
-+ tscadc_writel(ts_dev, TSCADC_REG_SE, TSCADC_STPENB_STEPENB_TOUCHSCREEN);
- return IRQ_HANDLED;
- }
-
-@@ -406,13 +496,15 @@ static int __devinit tscadc_probe(struct platform_device *pdev)
- return -ENODEV;
- }
-
-- input_dev = input_allocate_device();
-- if (!input_dev) {
-- dev_err(&pdev->dev, "failed to allocate input device.\n");
-- err = -ENOMEM;
-- goto err_free_mem;
-+ if(pdata->mode == TI_TSCADC_TSCMODE) {
-+ input_dev = input_allocate_device();
-+ if (!input_dev) {
-+ dev_err(&pdev->dev, "failed to allocate input device.\n");
-+ err = -ENOMEM;
-+ goto err_free_mem;
-+ }
-+ ts_dev->input = input_dev;
- }
-- ts_dev->input = input_dev;
-
- res = request_mem_region(res->start, resource_size(res), pdev->name);
- if (!res) {
-@@ -428,8 +520,15 @@ static int __devinit tscadc_probe(struct platform_device *pdev)
- goto err_release_mem;
- }
-
-- err = request_irq(ts_dev->irq, tscadc_interrupt, IRQF_DISABLED,
-- pdev->dev.driver->name, ts_dev);
-+ if(pdata->mode == TI_TSCADC_TSCMODE) {
-+ err = request_irq(ts_dev->irq, tsc_interrupt, IRQF_DISABLED,
-+ pdev->dev.driver->name, ts_dev);
-+ }
-+ else {
-+ err = request_irq(ts_dev->irq, tsc_adc_interrupt, IRQF_DISABLED,
-+ pdev->dev.driver->name, ts_dev);
-+ }
-+
- if (err) {
- dev_err(&pdev->dev, "failed to allocate irq.\n");
- goto err_unmap_regs;
-@@ -445,12 +544,18 @@ static int __devinit tscadc_probe(struct platform_device *pdev)
- goto err_free_irq;
- }
- clock_rate = clk_get_rate(clk);
-+
-+ /* clk_value of atleast 21MHz required
-+ * Clock verified on BeagleBone to be 24MHz */
-+
-+
- clk_value = clock_rate / ADC_CLK;
- if (clk_value < 7) {
- dev_err(&pdev->dev, "clock input less than min clock requirement\n");
- err = -EINVAL;
- goto err_fail;
- }
-+
- /* TSCADC_CLKDIV needs to be configured to the value minus 1 */
- clk_value = clk_value - 1;
- tscadc_writel(ts_dev, TSCADC_REG_CLKDIV, clk_value);
-@@ -458,53 +563,55 @@ static int __devinit tscadc_probe(struct platform_device *pdev)
- ts_dev->wires = pdata->wires;
- ts_dev->analog_input = pdata->analog_input;
- ts_dev->x_plate_resistance = pdata->x_plate_resistance;
-+ ts_dev->mode = pdata->mode;
-
-- /* Set the control register bits */
-+ /* Set the control register bits - 12.5.44 TRM */
- ctrl = TSCADC_CNTRLREG_STEPCONFIGWRT |
-- TSCADC_CNTRLREG_TSCENB |
-- TSCADC_CNTRLREG_STEPID;
-- switch (ts_dev->wires) {
-- case 4:
-- ctrl |= TSCADC_CNTRLREG_4WIRE;
-- break;
-- case 5:
-- ctrl |= TSCADC_CNTRLREG_5WIRE;
-- break;
-- case 8:
-- ctrl |= TSCADC_CNTRLREG_8WIRE;
-- break;
-+ TSCADC_CNTRLREG_STEPID;
-+ if(pdata->mode == TI_TSCADC_TSCMODE) {
-+ ctrl |= TSCADC_CNTRLREG_TSCENB;
-+ switch (ts_dev->wires) {
-+ case 4:
-+ ctrl |= TSCADC_CNTRLREG_4WIRE;
-+ break;
-+ case 5:
-+ ctrl |= TSCADC_CNTRLREG_5WIRE;
-+ break;
-+ case 8:
-+ ctrl |= TSCADC_CNTRLREG_8WIRE;
-+ break;
-+ }
- }
- tscadc_writel(ts_dev, TSCADC_REG_CTRL, ctrl);
- ts_dev->ctrl = ctrl;
-
-- /* Set register bits for Idel Config Mode */
-- tsc_idle_config(ts_dev);
--
-- /* IRQ Enable */
-- irqenable = TSCADC_IRQENB_FIFO1THRES;
-+ /* Touch screen / ADC configuration */
-+ if(pdata->mode == TI_TSCADC_TSCMODE) {
-+ tsc_idle_config(ts_dev);
-+ tsc_step_config(ts_dev);
-+ tscadc_writel(ts_dev, TSCADC_REG_FIFO1THR, 6);
-+ irqenable = TSCADC_IRQENB_FIFO1THRES;
-+ /* Touch screen also needs an input_dev */
-+ input_dev->name = "ti-tsc-adcc";
-+ input_dev->dev.parent = &pdev->dev;
-+ input_dev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS);
-+ input_dev->keybit[BIT_WORD(BTN_TOUCH)] = BIT_MASK(BTN_TOUCH);
-+ input_set_abs_params(input_dev, ABS_X, 0, MAX_12BIT, 0, 0);
-+ input_set_abs_params(input_dev, ABS_Y, 0, MAX_12BIT, 0, 0);
-+ /* register to the input system */
-+ err = input_register_device(input_dev);
-+ if (err)
-+ goto err_fail;
-+ }
-+ else {
-+ tsc_adc_step_config(ts_dev);
-+ tscadc_writel(ts_dev, TSCADC_REG_FIFO0THR, 0);
-+ irqenable = TSCADC_IRQENB_FIFO0THRES;
-+ }
- tscadc_writel(ts_dev, TSCADC_REG_IRQENABLE, irqenable);
-
-- tsc_step_config(ts_dev);
--
-- tscadc_writel(ts_dev, TSCADC_REG_FIFO1THR, 6);
--
- ctrl |= TSCADC_CNTRLREG_TSCSSENB;
-- tscadc_writel(ts_dev, TSCADC_REG_CTRL, ctrl);
--
-- input_dev->name = "ti-tsc-adcc";
-- input_dev->dev.parent = &pdev->dev;
--
-- input_dev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS);
-- input_dev->keybit[BIT_WORD(BTN_TOUCH)] = BIT_MASK(BTN_TOUCH);
--
-- input_set_abs_params(input_dev, ABS_X, 0, MAX_12BIT, 0, 0);
-- input_set_abs_params(input_dev, ABS_Y, 0, MAX_12BIT, 0, 0);
-- input_set_abs_params(input_dev, ABS_PRESSURE, 0, MAX_12BIT, 0, 0);
--
-- /* register to the input system */
-- err = input_register_device(input_dev);
-- if (err)
-- goto err_fail;
-+ tscadc_writel(ts_dev, TSCADC_REG_CTRL, ctrl); /* Turn on TSC_ADC */
-
- device_init_wakeup(&pdev->dev, true);
- platform_set_drvdata(pdev, ts_dev);
-diff --git a/include/linux/input/ti_tscadc.h b/include/linux/input/ti_tscadc.h
-index 2c547bb..850cd4b 100644
---- a/include/linux/input/ti_tscadc.h
-+++ b/include/linux/input/ti_tscadc.h
-@@ -14,8 +14,12 @@
- * @x_plate_resistance: X plate resistance.
- */
-
-+#define TI_TSCADC_TSCMODE 0
-+#define TI_TSCADC_GENMODE 1
-+
- struct tsc_data {
- int wires;
- int analog_input;
- int x_plate_resistance;
-+ int mode;
- };
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0007-tscadc-Add-board-file-mfd-support-fix-warning.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0007-tscadc-Add-board-file-mfd-support-fix-warning.patch
deleted file mode 100644
index 787d426..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0007-tscadc-Add-board-file-mfd-support-fix-warning.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From dc7ef10b1e755f188cfc92f4e1d8a43c8e661392 Mon Sep 17 00:00:00 2001
-From: Joel A Fernandes <joelagnel at ti.com>
-Date: Wed, 30 Nov 2011 15:02:17 +0100
-Subject: [PATCH 07/79] tscadc: Add board file mfd support, fix warning
-
-Signed-off-by: Joel A Fernandes <joelagnel at ti.com>
-
-Conflicts:
-
- arch/arm/mach-omap2/board-am335xevm.c
----
- arch/arm/mach-omap2/board-am335xevm.c | 2 +-
- drivers/input/touchscreen/ti_tscadc.c | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index 8f7ee0b..64a0c0a 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -2277,7 +2277,7 @@ static struct evm_dev_cfg beaglebone_old_dev_cfg[] = {
- {i2c2_init, DEV_ON_BASEBOARD, PROFILE_NONE},
- {mmc0_init, DEV_ON_BASEBOARD, PROFILE_NONE},
- {boneleds_init, DEV_ON_BASEBOARD, PROFILE_ALL},
-- {tsc_init, DEV_ON_BASEBOARD, PROFILE_ALL},
-+ {bone_tsc_init, DEV_ON_BASEBOARD, PROFILE_ALL},
- {NULL, 0, 0},
- };
-
-diff --git a/drivers/input/touchscreen/ti_tscadc.c b/drivers/input/touchscreen/ti_tscadc.c
-index c6dc6f0..b50a08c 100644
---- a/drivers/input/touchscreen/ti_tscadc.c
-+++ b/drivers/input/touchscreen/ti_tscadc.c
-@@ -469,7 +469,7 @@ static irqreturn_t tsc_interrupt(int irq, void *dev)
- static int __devinit tscadc_probe(struct platform_device *pdev)
- {
- struct tscadc *ts_dev;
-- struct input_dev *input_dev;
-+ struct input_dev *input_dev = NULL;
- int err;
- int clk_value;
- int clock_rate, irqenable, ctrl;
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0008-AM335X-init-tsc-bone-style-for-new-boards.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0008-AM335X-init-tsc-bone-style-for-new-boards.patch
deleted file mode 100644
index 9434c57..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0008-AM335X-init-tsc-bone-style-for-new-boards.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From b67913c3de1b8789c9d1881391b9bfb0beaa00ee Mon Sep 17 00:00:00 2001
-From: Joel A Fernandes <joelagnel at ti.com>
-Date: Wed, 30 Nov 2011 15:03:59 +0100
-Subject: [PATCH 08/79] AM335X: init tsc bone style for new boards
-
-Signed-off-by: Joel A Fernandes <joelagnel at ti.com>
----
- arch/arm/mach-omap2/board-am335xevm.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index 64a0c0a..6b78ae6 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -2290,7 +2290,7 @@ static struct evm_dev_cfg beaglebone_dev_cfg[] = {
- {i2c2_init, DEV_ON_BASEBOARD, PROFILE_NONE},
- {mmc0_init, DEV_ON_BASEBOARD, PROFILE_NONE},
- {boneleds_init, DEV_ON_BASEBOARD, PROFILE_ALL},
-- {tsc_init, DEV_ON_BASEBOARD, PROFILE_ALL},
-+ {bone_tsc_init, DEV_ON_BASEBOARD, PROFILE_ALL},
- {NULL, 0, 0},
- };
-
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0009-tscadc-make-stepconfig-channel-configurable.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0009-tscadc-make-stepconfig-channel-configurable.patch
deleted file mode 100644
index 5f43ac4..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0009-tscadc-make-stepconfig-channel-configurable.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 3b70f6dd0dd6f6c1fbd71b7090a3340382b3c77e Mon Sep 17 00:00:00 2001
-From: Joel A Fernandes <joelagnel at ti.com>
-Date: Mon, 28 Nov 2011 18:18:04 -0600
-Subject: [PATCH 09/79] tscadc: make stepconfig channel-configurable
-
-Signed-off-by: Joel A Fernandes <joelagnel at ti.com>
----
- drivers/input/touchscreen/ti_tscadc.c | 8 +++++---
- 1 file changed, 5 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/input/touchscreen/ti_tscadc.c b/drivers/input/touchscreen/ti_tscadc.c
-index b50a08c..6083de7 100644
---- a/drivers/input/touchscreen/ti_tscadc.c
-+++ b/drivers/input/touchscreen/ti_tscadc.c
-@@ -135,7 +135,9 @@ static void tscadc_writel(struct tscadc *tsc, unsigned int reg,
- writel(val, tsc->tsc_base + reg);
- }
-
--static void tsc_adc_step_config(struct tscadc *ts_dev)
-+/* Configure ADC to sample on channel (1-8) */
-+
-+static void tsc_adc_step_config(struct tscadc *ts_dev, int channel)
- {
- unsigned int stepconfig = 0, delay = 0, chargeconfig = 0;
-
-@@ -147,7 +149,7 @@ static void tsc_adc_step_config(struct tscadc *ts_dev)
- */
- stepconfig = TSCADC_STEPCONFIG_MODE_SWONESHOT |
- TSCADC_STEPCONFIG_2SAMPLES_AVG |
-- (0x7 << 19);
-+ ((channel-1) << 19);
-
- delay = TSCADC_STEPCONFIG_SAMPLEDLY | TSCADC_STEPCONFIG_OPENDLY;
-
-@@ -604,7 +606,7 @@ static int __devinit tscadc_probe(struct platform_device *pdev)
- goto err_fail;
- }
- else {
-- tsc_adc_step_config(ts_dev);
-+ tsc_adc_step_config(ts_dev, 8);
- tscadc_writel(ts_dev, TSCADC_REG_FIFO0THR, 0);
- irqenable = TSCADC_IRQENB_FIFO0THRES;
- }
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0010-tscadc-Trigger-through-sysfs.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0010-tscadc-Trigger-through-sysfs.patch
deleted file mode 100644
index 6afca79..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0010-tscadc-Trigger-through-sysfs.patch
+++ /dev/null
@@ -1,149 +0,0 @@
-From 19415df67c6e3802c007832e356933d33435558b Mon Sep 17 00:00:00 2001
-From: Joel A Fernandes <joelagnel at ti.com>
-Date: Mon, 28 Nov 2011 20:55:25 -0600
-Subject: [PATCH 10/79] tscadc: Trigger through sysfs
-
-Signed-off-by: Joel A Fernandes <joelagnel at ti.com>
-
-Conflicts:
-
- drivers/input/touchscreen/ti_tscadc.c
----
- drivers/input/touchscreen/ti_tscadc.c | 60 ++++++++++++++++++++++++++++++---
- include/linux/input/ti_tscadc.h | 1 +
- 2 files changed, 56 insertions(+), 5 deletions(-)
-
-diff --git a/drivers/input/touchscreen/ti_tscadc.c b/drivers/input/touchscreen/ti_tscadc.c
-index 6083de7..d6aec8c 100644
---- a/drivers/input/touchscreen/ti_tscadc.c
-+++ b/drivers/input/touchscreen/ti_tscadc.c
-@@ -26,8 +26,19 @@
- #include <linux/io.h>
- #include <linux/input/ti_tscadc.h>
- #include <linux/delay.h>
-+#include <linux/device.h>
- #include <linux/pm_runtime.h>
-
-+size_t do_adc_sample(struct kobject *, struct attribute *, char *);
-+static DEVICE_ATTR(ain1, S_IRUGO, do_adc_sample, NULL);
-+static DEVICE_ATTR(ain2, S_IRUGO, do_adc_sample, NULL);
-+static DEVICE_ATTR(ain3, S_IRUGO, do_adc_sample, NULL);
-+static DEVICE_ATTR(ain4, S_IRUGO, do_adc_sample, NULL);
-+static DEVICE_ATTR(ain5, S_IRUGO, do_adc_sample, NULL);
-+static DEVICE_ATTR(ain6, S_IRUGO, do_adc_sample, NULL);
-+static DEVICE_ATTR(ain7, S_IRUGO, do_adc_sample, NULL);
-+static DEVICE_ATTR(ain8, S_IRUGO, do_adc_sample, NULL);
-+
- /* Memory mapped registers here have incorrect offsets!
- * Correct after referring TRM */
- #define TSCADC_REG_IRQEOI 0x020
-@@ -150,12 +161,12 @@ static void tsc_adc_step_config(struct tscadc *ts_dev, int channel)
- stepconfig = TSCADC_STEPCONFIG_MODE_SWONESHOT |
- TSCADC_STEPCONFIG_2SAMPLES_AVG |
- ((channel-1) << 19);
--
-+
- delay = TSCADC_STEPCONFIG_SAMPLEDLY | TSCADC_STEPCONFIG_OPENDLY;
-
- tscadc_writel(ts_dev, TSCADC_REG_STEPCONFIG(10), stepconfig);
- tscadc_writel(ts_dev, TSCADC_REG_STEPDELAY(10), delay);
--
-+
- /* Get the ball rolling, this will trigger the FSM to step through
- * as soon as TSC_ADC_SS is turned on */
- tscadc_writel(ts_dev, TSCADC_REG_SE, TSCADC_STPENB_STEPENB_GENERAL);
-@@ -205,7 +216,7 @@ static irqreturn_t tsc_adc_interrupt(int irq, void *dev)
- irqclr |= TSCADC_IRQENB_FIFO1THRES;
- }
-
-- mdelay(500);
-+ // mdelay(500);
-
- tscadc_writel(ts_dev, TSCADC_REG_IRQSTATUS, irqclr);
-
-@@ -213,7 +224,7 @@ static irqreturn_t tsc_adc_interrupt(int irq, void *dev)
- tscadc_writel(ts_dev, TSCADC_REG_IRQEOI, 0x0);
-
- /* Turn on Step 1 again */
-- tscadc_writel(ts_dev, TSCADC_REG_SE, TSCADC_STPENB_STEPENB_GENERAL);
-+ // tscadc_writel(ts_dev, TSCADC_REG_SE, TSCADC_STPENB_STEPENB_GENERAL);
- return IRQ_HANDLED;
- }
-
-@@ -468,6 +479,34 @@ static irqreturn_t tsc_interrupt(int irq, void *dev)
- * The functions for inserting/removing driver as a module.
- */
-
-+size_t do_adc_sample(struct kobject *kobj, struct attribute *attr, char *buf) {
-+ struct platform_device *pdev;
-+ struct device *dev;
-+ struct tscadc *ts_dev;
-+ int channel_num;
-+
-+ pdev = (struct platform_device *)container_of(kobj, struct device, kobj);
-+ dev = &pdev->dev;
-+
-+ ts_dev = dev_get_drvdata(dev);
-+
-+ if(strncmp(attr->name, "ain", 3)) {
-+ printk("Invalid ain num\n");
-+ return -EINVAL;
-+ }
-+
-+ channel_num = attr->name[3] - 0x30;
-+ if(channel_num > 8 || channel_num < 1) {
-+ printk("Invalid channel_num=%d\n", channel_num);
-+ return -EINVAL;
-+ }
-+
-+ tsc_adc_step_config(ts_dev, channel_num);
-+
-+ memcpy(buf, attr->name, strlen(attr->name)+1);
-+ return strlen(attr->name);
-+}
-+
- static int __devinit tscadc_probe(struct platform_device *pdev)
- {
- struct tscadc *ts_dev;
-@@ -479,6 +518,18 @@ static int __devinit tscadc_probe(struct platform_device *pdev)
- struct resource *res;
- struct clk *clk;
-
-+ printk("dev addr = %p\n", &pdev->dev);
-+ printk("pdev addr = %p\n", pdev);
-+
-+ device_create_file(&pdev->dev, &dev_attr_ain1);
-+ device_create_file(&pdev->dev, &dev_attr_ain2);
-+ device_create_file(&pdev->dev, &dev_attr_ain3);
-+ device_create_file(&pdev->dev, &dev_attr_ain4);
-+ device_create_file(&pdev->dev, &dev_attr_ain5);
-+ device_create_file(&pdev->dev, &dev_attr_ain6);
-+ device_create_file(&pdev->dev, &dev_attr_ain7);
-+ device_create_file(&pdev->dev, &dev_attr_ain8);
-+
- res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
- if (!res) {
- dev_err(&pdev->dev, "no memory resource defined.\n");
-@@ -606,7 +657,6 @@ static int __devinit tscadc_probe(struct platform_device *pdev)
- goto err_fail;
- }
- else {
-- tsc_adc_step_config(ts_dev, 8);
- tscadc_writel(ts_dev, TSCADC_REG_FIFO0THR, 0);
- irqenable = TSCADC_IRQENB_FIFO0THRES;
- }
-diff --git a/include/linux/input/ti_tscadc.h b/include/linux/input/ti_tscadc.h
-index 850cd4b..fc239c6 100644
---- a/include/linux/input/ti_tscadc.h
-+++ b/include/linux/input/ti_tscadc.h
-@@ -13,6 +13,7 @@
- * 0.
- * @x_plate_resistance: X plate resistance.
- */
-+#include <linux/device.h>
-
- #define TI_TSCADC_TSCMODE 0
- #define TI_TSCADC_GENMODE 1
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0011-meta-ti-Remove-debug-messages-for-meta-ti.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0011-meta-ti-Remove-debug-messages-for-meta-ti.patch
deleted file mode 100644
index 1bd64b4..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0011-meta-ti-Remove-debug-messages-for-meta-ti.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 956815a5ce5d2708ad3f14bdd0c6aaee056febbb Mon Sep 17 00:00:00 2001
-From: Joel A Fernandes <joelagnel at ti.com>
-Date: Mon, 28 Nov 2011 20:56:48 -0600
-Subject: [PATCH 11/79] meta-ti: Remove debug messages for meta-ti
-
-Signed-off-by: Joel A Fernandes <joelagnel at ti.com>
----
- drivers/input/touchscreen/ti_tscadc.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/input/touchscreen/ti_tscadc.c b/drivers/input/touchscreen/ti_tscadc.c
-index d6aec8c..da48bcd 100644
---- a/drivers/input/touchscreen/ti_tscadc.c
-+++ b/drivers/input/touchscreen/ti_tscadc.c
-@@ -187,14 +187,14 @@ static irqreturn_t tsc_adc_interrupt(int irq, void *dev)
-
- status = tscadc_readl(ts_dev, TSCADC_REG_IRQSTATUS);
-
-- printk("interrupt! status=%x\n", status);
-+ // printk("interrupt! status=%x\n", status);
- // if (status & TSCADC_IRQENB_EOS) {
- // irqclr |= TSCADC_IRQENB_EOS;
- // }
-
- if (status & TSCADC_IRQENB_FIFO0THRES) {
- fifo1count = tscadc_readl(ts_dev, TSCADC_REG_FIFO0CNT);
-- printk("fifo 0 count = %d\n", fifo1count);
-+ // printk("fifo 0 count = %d\n", fifo1count);
-
- for (i = 0; i < fifo1count; i++) {
- read_sample = tscadc_readl(ts_dev, TSCADC_REG_FIFO0);
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0012-tscadc-switch-to-polling-instead-of-interrupts.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0012-tscadc-switch-to-polling-instead-of-interrupts.patch
deleted file mode 100644
index d9fd2a7..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0012-tscadc-switch-to-polling-instead-of-interrupts.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From 393a7b11a2819b5149c909a801b1f8be4d781771 Mon Sep 17 00:00:00 2001
-From: Joel A Fernandes <joelagnel at ti.com>
-Date: Tue, 29 Nov 2011 09:44:22 -0600
-Subject: [PATCH 12/79] tscadc: switch to polling instead of interrupts
-
-Signed-off-by: Joel A Fernandes <joelagnel at ti.com>
----
- drivers/input/touchscreen/ti_tscadc.c | 16 ++++++++++++++--
- 1 file changed, 14 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/input/touchscreen/ti_tscadc.c b/drivers/input/touchscreen/ti_tscadc.c
-index da48bcd..4fd2e18 100644
---- a/drivers/input/touchscreen/ti_tscadc.c
-+++ b/drivers/input/touchscreen/ti_tscadc.c
-@@ -484,6 +484,8 @@ size_t do_adc_sample(struct kobject *kobj, struct attribute *attr, char *buf) {
- struct device *dev;
- struct tscadc *ts_dev;
- int channel_num;
-+ int fifo0count = 0;
-+ int read_sample = 0;
-
- pdev = (struct platform_device *)container_of(kobj, struct device, kobj);
- dev = &pdev->dev;
-@@ -503,7 +505,17 @@ size_t do_adc_sample(struct kobject *kobj, struct attribute *attr, char *buf) {
-
- tsc_adc_step_config(ts_dev, channel_num);
-
-- memcpy(buf, attr->name, strlen(attr->name)+1);
-+ do {
-+ fifo0count = tscadc_readl(ts_dev, TSCADC_REG_FIFO0CNT);
-+ }
-+ while (!fifo0count);
-+
-+ while (fifo0count--) {
-+ read_sample = tscadc_readl(ts_dev, TSCADC_REG_FIFO0) & 0xfff;
-+ // printk("polling sample: %d: %x\n", fifo0count, read_sample);
-+ }
-+ sprintf(buf, "%d", read_sample);
-+
- return strlen(attr->name);
- }
-
-@@ -658,7 +670,7 @@ static int __devinit tscadc_probe(struct platform_device *pdev)
- }
- else {
- tscadc_writel(ts_dev, TSCADC_REG_FIFO0THR, 0);
-- irqenable = TSCADC_IRQENB_FIFO0THRES;
-+ irqenable = 0; // TSCADC_IRQENB_FIFO0THRES;
- }
- tscadc_writel(ts_dev, TSCADC_REG_IRQENABLE, irqenable);
-
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0013-beaglebone-fix-ADC-init.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0013-beaglebone-fix-ADC-init.patch
deleted file mode 100644
index 3db4f7d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0013-beaglebone-fix-ADC-init.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 33bbdc8dfb22170f7be9286c653fbac9d9c8f196 Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen at dominion.thruhere.net>
-Date: Tue, 31 Jan 2012 14:50:55 +0100
-Subject: [PATCH 13/79] beaglebone: fix ADC init
-
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- arch/arm/mach-omap2/board-am335xevm.c | 6 ++----
- 1 file changed, 2 insertions(+), 4 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index 6b78ae6..ffbecae 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -242,11 +242,11 @@ struct da8xx_lcdc_platform_data dvi_pdata = {
- static struct tsc_data am335x_touchscreen_data = {
- .wires = 4,
- .x_plate_resistance = 200,
--// .mode = TI_TSCADC_TSCMODE,
-+ .mode = TI_TSCADC_TSCMODE,
- };
-
- static struct tsc_data bone_touchscreen_data = {
--// .mode = TI_TSCADC_GENMODE,
-+ .mode = TI_TSCADC_GENMODE,
- };
-
- static u8 am335x_iis_serializer_direction1[] = {
-@@ -2277,7 +2277,6 @@ static struct evm_dev_cfg beaglebone_old_dev_cfg[] = {
- {i2c2_init, DEV_ON_BASEBOARD, PROFILE_NONE},
- {mmc0_init, DEV_ON_BASEBOARD, PROFILE_NONE},
- {boneleds_init, DEV_ON_BASEBOARD, PROFILE_ALL},
-- {bone_tsc_init, DEV_ON_BASEBOARD, PROFILE_ALL},
- {NULL, 0, 0},
- };
-
-@@ -2290,7 +2289,6 @@ static struct evm_dev_cfg beaglebone_dev_cfg[] = {
- {i2c2_init, DEV_ON_BASEBOARD, PROFILE_NONE},
- {mmc0_init, DEV_ON_BASEBOARD, PROFILE_NONE},
- {boneleds_init, DEV_ON_BASEBOARD, PROFILE_ALL},
-- {bone_tsc_init, DEV_ON_BASEBOARD, PROFILE_ALL},
- {NULL, 0, 0},
- };
-
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0014-AM335x-MUX-add-ehrpwm1A.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0014-AM335x-MUX-add-ehrpwm1A.patch
deleted file mode 100644
index 489c64e..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0014-AM335x-MUX-add-ehrpwm1A.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 10099d6354fc3c61306788e4070cfbd20722fb80 Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen at dominion.thruhere.net>
-Date: Tue, 31 Jan 2012 16:49:52 +0100
-Subject: [PATCH 14/79] AM335x: MUX: add ehrpwm1A
-
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- arch/arm/mach-omap2/mux33xx.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/arch/arm/mach-omap2/mux33xx.c b/arch/arm/mach-omap2/mux33xx.c
-index 572ed16..0f71646 100644
---- a/arch/arm/mach-omap2/mux33xx.c
-+++ b/arch/arm/mach-omap2/mux33xx.c
-@@ -85,7 +85,7 @@ static struct omap_mux __initdata am33xx_muxmodes[] = {
- NULL, NULL, NULL, "gpio1_17"),
- _AM33XX_MUXENTRY(GPMC_A2, 0,
- "gpmc_a2", "mii2_txd3", "rgmii2_td3", "mmc2_dat1",
-- NULL, NULL, NULL, "gpio1_18"),
-+ NULL, NULL, "ehrpwm1A", "gpio1_18"),
- _AM33XX_MUXENTRY(GPMC_A3, 0,
- "gpmc_a3", "mii2_txd2", "rgmii2_td2", "mmc2_dat2",
- NULL, NULL, NULL, "gpio1_19"),
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0015-beaglebone-enable-PWM-for-lcd-backlight-backlight-is.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0015-beaglebone-enable-PWM-for-lcd-backlight-backlight-is.patch
deleted file mode 100644
index 0d645ff..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0015-beaglebone-enable-PWM-for-lcd-backlight-backlight-is.patch
+++ /dev/null
@@ -1,123 +0,0 @@
-From 33182602bad8a5aec644e69d800f5bc5c6604419 Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen at dominion.thruhere.net>
-Date: Tue, 31 Jan 2012 17:02:10 +0100
-Subject: [PATCH 15/79] beaglebone: enable PWM for lcd backlight <- backlight
- is inverted
-
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- arch/arm/mach-omap2/board-am335xevm.c | 51 +++++++++++++++++++++++++++------
- 1 file changed, 42 insertions(+), 9 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index ffbecae..43a83ca 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -181,6 +181,16 @@ static const struct display_panel bbtoys7_panel = {
- COLOR_ACTIVE,
- };
-
-+#define BBTOYS7LCD_PWM_DEVICE_ID "ehrpwm.1:0"
-+
-+static struct platform_pwm_backlight_data bbtoys7lcd_backlight_data = {
-+ .pwm_id = BBTOYS7LCD_PWM_DEVICE_ID,
-+ .ch = -1,
-+ .max_brightness = AM335X_BACKLIGHT_MAX_BRIGHTNESS,
-+ .dft_brightness = AM335X_BACKLIGHT_DEFAULT_BRIGHTNESS,
-+ .pwm_period_ns = AM335X_PWM_PERIOD_NANO_SECONDS,
-+};
-+
- static struct lcd_ctrl_config bbtoys7_cfg = {
- &bbtoys7_panel,
- .ac_bias = 255,
-@@ -601,9 +611,9 @@ static struct pinmux_config bbtoys7_pin_mux[] = {
- {"lcd_vsync.lcd_vsync", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
- {"lcd_hsync.lcd_hsync", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
- {"lcd_pclk.lcd_pclk", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
-- {"lcd_ac_bias_en.lcd_ac_bias_en", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
-- {"gpmc_a2.gpio1_18", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, // Backlight
-+ {"lcd_ac_bias_en.lcd_ac_bias_en", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
- {"ecap0_in_pwm0_out.gpio0_7", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, // AVDD_EN
-+ {"gpmc_a2.ehrpwm1A", OMAP_MUX_MODE6 | AM33XX_PIN_OUTPUT}, // Backlight
- {NULL, 0},
- };
-
-@@ -1136,6 +1146,7 @@ static struct pinmux_config ecap0_pin_mux[] = {
- {NULL, 0},
- };
-
-+static int ehrpwm_backlight_enable;
- static int backlight_enable;
-
- #define AM335XEVM_WLAN_PMENA_GPIO GPIO_TO_PIN(1, 30)
-@@ -1218,6 +1229,30 @@ static int __init ecap0_init(void)
- }
- late_initcall(ecap0_init);
-
-+static void enable_ehrpwm1(int evm_id, int profile)
-+{
-+ ehrpwm_backlight_enable = true;
-+}
-+
-+/* Setup pwm-backlight for bbtoys7lcd */
-+static struct platform_device bbtoys7lcd_backlight = {
-+ .name = "pwm-backlight",
-+ .id = -1,
-+ .dev = {
-+ .platform_data = &bbtoys7lcd_backlight_data,
-+ }
-+};
-+
-+static int __init ehrpwm1_init(void)
-+{
-+ int status = 0;
-+ if (ehrpwm_backlight_enable) {
-+ platform_device_register(&bbtoys7lcd_backlight);
-+ }
-+ return status;
-+}
-+late_initcall(ehrpwm1_init);
-+
- static int __init conf_disp_pll(int rate)
- {
- struct clk *disp_pll;
-@@ -1252,11 +1287,12 @@ static void lcdc_init(int evm_id, int profile)
- }
-
- #define BEAGLEBONE_LCD_AVDD_EN GPIO_TO_PIN(0, 7)
--#define BEAGLEBONE_LCD_BL GPIO_TO_PIN(1, 18)
-
- static void bbtoys7lcd_init(int evm_id, int profile)
- {
- setup_pin_mux(bbtoys7_pin_mux);
-+ gpio_request(BEAGLEBONE_LCD_AVDD_EN, "BONE_LCD_AVDD_EN");
-+ gpio_direction_output(BEAGLEBONE_LCD_AVDD_EN, 1);
-
- // we are being stupid and setting pixclock from here instead of da8xx-fb.c
- if (conf_disp_pll(300000000)) {
-@@ -1267,12 +1303,7 @@ static void bbtoys7lcd_init(int evm_id, int profile)
-
- if (am33xx_register_lcdc(&bbtoys7_pdata))
- pr_info("Failed to register Beagleboardtoys 7\" LCD cape device\n");
--
-- gpio_request(BEAGLEBONE_LCD_BL, "BONE_LCD_BL");
-- gpio_direction_output(BEAGLEBONE_LCD_BL, 1);
-- gpio_request(BEAGLEBONE_LCD_AVDD_EN, "BONE_LCD_AVDD_EN");
-- gpio_direction_output(BEAGLEBONE_LCD_AVDD_EN, 1);
--
-+
- return;
- }
-
-@@ -1833,6 +1864,8 @@ static void beaglebone_cape_setup(struct memory_accessor *mem_acc, void *context
- bbtoys7lcd_init(0,0);
- pr_info("BeagleBone cape: initializing LCD cape touchscreen\n");
- tsc_init(0,0);
-+ pr_info("BeagleBone cape: Registering PWM backlight for LCD cape\n");
-+ enable_ehrpwm1(0,0);
- beaglebone_tsadcpins_free = 0;
- }
-
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0016-omap_hsmmc-Set-dto-to-max-value-of-14-to-avoid-SD-Ca.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0016-omap_hsmmc-Set-dto-to-max-value-of-14-to-avoid-SD-Ca.patch
deleted file mode 100644
index 120f59f..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0016-omap_hsmmc-Set-dto-to-max-value-of-14-to-avoid-SD-Ca.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From ec0ef23dd64de808f7e9d827ee82ac4734d8a003 Mon Sep 17 00:00:00 2001
-From: Steve Sakoman <steve at sakoman.com>
-Date: Mon, 18 Jul 2011 23:13:41 -0500
-Subject: [PATCH 16/79] omap_hsmmc: Set dto to max value of 14 to avoid SD
- Card timeouts
-
-This fixes MMC errors due to timeouts on certain SD Cards following suggestions
-to set dto to 14 by Jason Kridner and Steven Kipisz
-
-Details of the issue:
-http://talk.maemo.org/showthread.php?p=1000707#post1000707
-
-This fix was originally proposed by Sukumar Ghoral of TI.
----
- drivers/mmc/host/omap_hsmmc.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c
-index 22da8f2..adbc4d1 100644
---- a/drivers/mmc/host/omap_hsmmc.c
-+++ b/drivers/mmc/host/omap_hsmmc.c
-@@ -1554,6 +1554,9 @@ static void set_data_timeout(struct omap_hsmmc_host *host)
- /* Use the maximum timeout value allowed in the standard of 14 or 0xE */
- dto = 14;
-
-+ /* Set dto to max value of 14 to avoid SD Card timeouts */
-+ dto = 14;
-+
- reg &= ~DTO_MASK;
- reg |= dto << DTO_SHIFT;
- OMAP_HSMMC_WRITE(host->base, SYSCTL, reg);
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0017-beaglebone-set-default-brightness-to-50-for-pwm-back.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0017-beaglebone-set-default-brightness-to-50-for-pwm-back.patch
deleted file mode 100644
index ed19d76..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0017-beaglebone-set-default-brightness-to-50-for-pwm-back.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 5ef54fcdbb6f2cee36b88ed04ea7c3d604702659 Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen at dominion.thruhere.net>
-Date: Wed, 1 Feb 2012 14:10:38 +0100
-Subject: [PATCH 17/79] beaglebone: set default brightness to 50% for pwm
- backlights
-
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- arch/arm/mach-omap2/board-am335xevm.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index 43a83ca..97b069f 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -135,7 +135,7 @@ static const struct display_panel disp_panel = {
-
- /* LCD backlight platform Data */
- #define AM335X_BACKLIGHT_MAX_BRIGHTNESS 100
--#define AM335X_BACKLIGHT_DEFAULT_BRIGHTNESS 100
-+#define AM335X_BACKLIGHT_DEFAULT_BRIGHTNESS 50
- #define AM335X_PWM_PERIOD_NANO_SECONDS (5000 * 10)
-
- #define PWM_DEVICE_ID "ecap.0"
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0018-st7735fb-WIP-framebuffer-driver-supporting-Adafruit-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0018-st7735fb-WIP-framebuffer-driver-supporting-Adafruit-.patch
deleted file mode 100644
index de1854b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0018-st7735fb-WIP-framebuffer-driver-supporting-Adafruit-.patch
+++ /dev/null
@@ -1,668 +0,0 @@
-From b54647b2f6825845e678995cf9a9824f763b6eb1 Mon Sep 17 00:00:00 2001
-From: Matt Porter <mporter at ti.com>
-Date: Mon, 21 Nov 2011 12:55:23 -0500
-Subject: [PATCH 18/79] st7735fb: WIP framebuffer driver supporting Adafruit
- 1.8" SPI LCD
-
-Signed-off-by: Matt Porter <mporter at ti.com>
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- drivers/video/Kconfig | 11 +
- drivers/video/Makefile | 1 +
- drivers/video/st7735fb.c | 516 ++++++++++++++++++++++++++++++++++++++++++++++
- include/video/st7735fb.h | 86 ++++++++
- 4 files changed, 614 insertions(+)
- create mode 100644 drivers/video/st7735fb.c
- create mode 100644 include/video/st7735fb.h
-
-diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig
-index f66bf0e..64754de 100644
---- a/drivers/video/Kconfig
-+++ b/drivers/video/Kconfig
-@@ -2420,6 +2420,17 @@ config FB_PUV3_UNIGFX
- Choose this option if you want to use the Unigfx device as a
- framebuffer device. Without the support of PCI & AGP.
-
-+config FB_ST7735
-+ tristate "ST7735 framebuffer support"
-+ depends on FB && SPI
-+ select FB_SYS_FILLRECT
-+ select FB_SYS_COPYAREA
-+ select FB_SYS_IMAGEBLIT
-+ select FB_SYS_FOPS
-+ select FB_DEFERRED_IO
-+ help
-+ Framebuffer support for the ST7735 display controller in SPI mode.
-+
- source "drivers/video/omap/Kconfig"
- source "drivers/video/omap2/Kconfig"
-
-diff --git a/drivers/video/Makefile b/drivers/video/Makefile
-index 9b9d8ff..c6d9851 100644
---- a/drivers/video/Makefile
-+++ b/drivers/video/Makefile
-@@ -143,6 +143,7 @@ obj-$(CONFIG_FB_MSM) += msm/
- obj-$(CONFIG_FB_NUC900) += nuc900fb.o
- obj-$(CONFIG_FB_JZ4740) += jz4740_fb.o
- obj-$(CONFIG_FB_PUV3_UNIGFX) += fb-puv3.o
-+obj-$(CONFIG_FB_ST7735) += st7735fb.o
-
- # Platform or fallback drivers go here
- obj-$(CONFIG_FB_UVESA) += uvesafb.o
-diff --git a/drivers/video/st7735fb.c b/drivers/video/st7735fb.c
-new file mode 100644
-index 0000000..500cc88
---- /dev/null
-+++ b/drivers/video/st7735fb.c
-@@ -0,0 +1,516 @@
-+/*
-+ * linux/drivers/video/st7735fb.c -- FB driver for ST7735 LCD controller
-+ * Layout is based on skeletonfb.c by James Simmons and Geert Uytterhoeven.
-+ *
-+ * Copyright (C) 2011, Matt Porter
-+ *
-+ * This file is subject to the terms and conditions of the GNU General Public
-+ * License. See the file COPYING in the main directory of this archive for
-+ * more details.
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/kernel.h>
-+#include <linux/errno.h>
-+#include <linux/string.h>
-+#include <linux/mm.h>
-+#include <linux/vmalloc.h>
-+#include <linux/slab.h>
-+#include <linux/init.h>
-+#include <linux/fb.h>
-+#include <linux/gpio.h>
-+#include <linux/spi/spi.h>
-+#include <linux/delay.h>
-+#include <linux/uaccess.h>
-+
-+#include <video/st7735fb.h>
-+
-+static struct st7735_function st7735_cfg_script[] = {
-+ { ST7735_START, ST7735_START},
-+ { ST7735_CMD, ST7735_SWRESET},
-+ { ST7735_DELAY, 150},
-+ { ST7735_CMD, ST7735_SLPOUT},
-+ { ST7735_DELAY, 500},
-+ { ST7735_CMD, ST7735_FRMCTR1},
-+ { ST7735_DATA, 0x01},
-+ { ST7735_DATA, 0x2c},
-+ { ST7735_DATA, 0x2d},
-+ { ST7735_CMD, ST7735_FRMCTR2},
-+ { ST7735_DATA, 0x01},
-+ { ST7735_DATA, 0x2c},
-+ { ST7735_DATA, 0x2d},
-+ { ST7735_CMD, ST7735_FRMCTR3},
-+ { ST7735_DATA, 0x01},
-+ { ST7735_DATA, 0x2c},
-+ { ST7735_DATA, 0x2d},
-+ { ST7735_DATA, 0x01},
-+ { ST7735_DATA, 0x2c},
-+ { ST7735_DATA, 0x2d},
-+ { ST7735_CMD, ST7735_INVCTR},
-+ { ST7735_DATA, 0x07},
-+ { ST7735_CMD, ST7735_PWCTR1},
-+ { ST7735_DATA, 0xa2},
-+ { ST7735_DATA, 0x02},
-+ { ST7735_DATA, 0x84},
-+ { ST7735_CMD, ST7735_PWCTR2},
-+ { ST7735_DATA, 0xc5},
-+ { ST7735_CMD, ST7735_PWCTR3},
-+ { ST7735_DATA, 0x0a},
-+ { ST7735_DATA, 0x00},
-+ { ST7735_CMD, ST7735_PWCTR4},
-+ { ST7735_DATA, 0x8a},
-+ { ST7735_DATA, 0x2a},
-+ { ST7735_CMD, ST7735_PWCTR5},
-+ { ST7735_DATA, 0x8a},
-+ { ST7735_DATA, 0xee},
-+ { ST7735_CMD, ST7735_VMCTR1},
-+ { ST7735_DATA, 0x0e},
-+ { ST7735_CMD, ST7735_INVOFF},
-+ { ST7735_CMD, ST7735_MADCTL},
-+ { ST7735_DATA, 0xc8},
-+ { ST7735_CMD, ST7735_COLMOD},
-+ { ST7735_DATA, 0x05},
-+ { ST7735_CMD, ST7735_CASET},
-+ { ST7735_DATA, 0x00},
-+ { ST7735_DATA, 0x00},
-+ { ST7735_DATA, 0x00},
-+ { ST7735_DATA, 0x00},
-+ { ST7735_DATA, 0x7f},
-+ { ST7735_CMD, ST7735_RASET},
-+ { ST7735_DATA, 0x00},
-+ { ST7735_DATA, 0x00},
-+ { ST7735_DATA, 0x00},
-+ { ST7735_DATA, 0x00},
-+ { ST7735_DATA, 0x9f},
-+ { ST7735_CMD, ST7735_GMCTRP1},
-+ { ST7735_DATA, 0x02},
-+ { ST7735_DATA, 0x1c},
-+ { ST7735_DATA, 0x07},
-+ { ST7735_DATA, 0x12},
-+ { ST7735_DATA, 0x37},
-+ { ST7735_DATA, 0x32},
-+ { ST7735_DATA, 0x29},
-+ { ST7735_DATA, 0x2d},
-+ { ST7735_DATA, 0x29},
-+ { ST7735_DATA, 0x25},
-+ { ST7735_DATA, 0x2b},
-+ { ST7735_DATA, 0x39},
-+ { ST7735_DATA, 0x00},
-+ { ST7735_DATA, 0x01},
-+ { ST7735_DATA, 0x03},
-+ { ST7735_DATA, 0x10},
-+ { ST7735_CMD, ST7735_GMCTRN1},
-+ { ST7735_DATA, 0x03},
-+ { ST7735_DATA, 0x1d},
-+ { ST7735_DATA, 0x07},
-+ { ST7735_DATA, 0x06},
-+ { ST7735_DATA, 0x2e},
-+ { ST7735_DATA, 0x2c},
-+ { ST7735_DATA, 0x29},
-+ { ST7735_DATA, 0x2d},
-+ { ST7735_DATA, 0x2e},
-+ { ST7735_DATA, 0x2e},
-+ { ST7735_DATA, 0x37},
-+ { ST7735_DATA, 0x3f},
-+ { ST7735_DATA, 0x00},
-+ { ST7735_DATA, 0x00},
-+ { ST7735_DATA, 0x02},
-+ { ST7735_DATA, 0x10},
-+ { ST7735_CMD, ST7735_DISPON},
-+ { ST7735_DELAY, 100},
-+ { ST7735_CMD, ST7735_NORON},
-+ { ST7735_DELAY, 10},
-+ { ST7735_END, ST7735_END},
-+};
-+
-+static struct fb_fix_screeninfo st7735fb_fix __devinitdata = {
-+ .id = "ST7735",
-+ .type = FB_TYPE_PACKED_PIXELS,
-+ .visual = FB_VISUAL_PSEUDOCOLOR,
-+ .xpanstep = 0,
-+ .ypanstep = 0,
-+ .ywrapstep = 0,
-+ .line_length = WIDTH*BPP/8,
-+ .accel = FB_ACCEL_NONE,
-+};
-+
-+static struct fb_var_screeninfo st7735fb_var __devinitdata = {
-+ .xres = WIDTH,
-+ .yres = HEIGHT,
-+ .xres_virtual = WIDTH,
-+ .yres_virtual = HEIGHT,
-+ .bits_per_pixel = BPP,
-+ .nonstd = 1,
-+};
-+
-+static int st7735_write(struct st7735fb_par *par, u8 data)
-+{
-+ u8 txbuf[2]; /* allocation from stack must go */
-+
-+ txbuf[0] = data;
-+
-+ return spi_write(par->spi, &txbuf[0], 1);
-+}
-+
-+static void st7735_write_data(struct st7735fb_par *par, u8 data)
-+{
-+ int ret = 0;
-+
-+ /* Set data mode */
-+ gpio_set_value(par->dc, 1);
-+
-+ ret = st7735_write(par, data);
-+ if (ret < 0)
-+ pr_err("%s: write data %02x failed with status %d\n",
-+ par->info->fix.id, data, ret);
-+}
-+
-+static int st7735_write_data_buf(struct st7735fb_par *par,
-+ u8 *txbuf, int size)
-+{
-+ /* Set data mode */
-+ gpio_set_value(par->dc, 1);
-+
-+ /* Write entire buffer */
-+ return spi_write(par->spi, txbuf, size);
-+}
-+
-+static void st7735_write_cmd(struct st7735fb_par *par, u8 data)
-+{
-+ int ret = 0;
-+
-+ /* Set command mode */
-+ gpio_set_value(par->dc, 0);
-+
-+ ret = st7735_write(par, data);
-+ if (ret < 0)
-+ pr_err("%s: write command %02x failed with status %d\n",
-+ par->info->fix.id, data, ret);
-+}
-+
-+static void st7735_run_cfg_script(struct st7735fb_par *par)
-+{
-+ int i = 0;
-+ int end_script = 0;
-+
-+ do {
-+ switch (st7735_cfg_script[i].cmd)
-+ {
-+ case ST7735_START:
-+ break;
-+ case ST7735_CMD:
-+ st7735_write_cmd(par,
-+ st7735_cfg_script[i].data & 0xff);
-+ break;
-+ case ST7735_DATA:
-+ st7735_write_data(par,
-+ st7735_cfg_script[i].data & 0xff);
-+ break;
-+ case ST7735_DELAY:
-+ mdelay(st7735_cfg_script[i].data);
-+ break;
-+ case ST7735_END:
-+ end_script = 1;
-+ }
-+ i++;
-+ } while (!end_script);
-+}
-+
-+static void st7735_set_addr_win(struct st7735fb_par *par,
-+ int xs, int ys, int xe, int ye)
-+{
-+ st7735_write_cmd(par, ST7735_CASET);
-+ st7735_write_data(par, 0x00);
-+ st7735_write_data(par, xs+2);
-+ st7735_write_data(par, 0x00);
-+ st7735_write_data(par, xe+2);
-+ st7735_write_cmd(par, ST7735_RASET);
-+ st7735_write_data(par, 0x00);
-+ st7735_write_data(par, ys+1);
-+ st7735_write_data(par, 0x00);
-+ st7735_write_data(par, ye+1);
-+}
-+
-+static void st7735_reset(struct st7735fb_par *par)
-+{
-+ /* Reset controller */
-+ gpio_set_value(par->rst, 0);
-+ udelay(10);
-+ gpio_set_value(par->rst, 1);
-+ mdelay(120);
-+}
-+
-+static void st7735fb_update_display(struct st7735fb_par *par)
-+{
-+ int ret = 0;
-+ u8 *vmem = par->info->screen_base;
-+
-+ /*
-+ TODO:
-+ Allow a subset of pages to be passed in
-+ (for deferred I/O). Check pages against
-+ pan display settings to see if they
-+ should be updated.
-+ */
-+ /* For now, just write the full 40KiB on each update */
-+
-+ /* Set row/column data window */
-+ st7735_set_addr_win(par, 0, 0, WIDTH-1, HEIGHT-1);
-+
-+ /* Internal RAM write command */
-+ st7735_write_cmd(par, ST7735_RAMWR);
-+
-+ /* Blast framebuffer to ST7735 internal display RAM */
-+ ret = st7735_write_data_buf(par, vmem, WIDTH*HEIGHT*BPP/8);
-+ if (ret < 0)
-+ pr_err("%s: spi_write failed to update display buffer\n",
-+ par->info->fix.id);
-+}
-+
-+static void st7735fb_deferred_io(struct fb_info *info,
-+ struct list_head *pagelist)
-+{
-+ st7735fb_update_display(info->par);
-+}
-+
-+static int st7735fb_init_display(struct st7735fb_par *par)
-+{
-+ /* TODO: Need some error checking on gpios */
-+
-+ /* Request GPIOs and initialize to default values */
-+ gpio_request_one(par->rst, GPIOF_OUT_INIT_HIGH,
-+ "ST7735 Reset Pin");
-+ gpio_request_one(par->dc, GPIOF_OUT_INIT_LOW,
-+ "ST7735 Data/Command Pin");
-+
-+ st7735_reset(par);
-+
-+ st7735_run_cfg_script(par);
-+
-+ return 0;
-+}
-+
-+void st7735fb_fillrect(struct fb_info *info, const struct fb_fillrect *rect)
-+{
-+ struct st7735fb_par *par = info->par;
-+
-+ sys_fillrect(info, rect);
-+
-+ st7735fb_update_display(par);
-+}
-+
-+void st7735fb_copyarea(struct fb_info *info, const struct fb_copyarea *area)
-+{
-+ struct st7735fb_par *par = info->par;
-+
-+ sys_copyarea(info, area);
-+
-+ st7735fb_update_display(par);
-+}
-+
-+void st7735fb_imageblit(struct fb_info *info, const struct fb_image *image)
-+{
-+ struct st7735fb_par *par = info->par;
-+
-+ sys_imageblit(info, image);
-+
-+ st7735fb_update_display(par);
-+}
-+
-+static ssize_t st7735fb_write(struct fb_info *info, const char __user *buf,
-+ size_t count, loff_t *ppos)
-+{
-+ struct st7735fb_par *par = info->par;
-+ unsigned long p = *ppos;
-+ void *dst;
-+ int err = 0;
-+ unsigned long total_size;
-+
-+ if (info->state != FBINFO_STATE_RUNNING)
-+ return -EPERM;
-+
-+ total_size = info->fix.smem_len;
-+
-+ if (p > total_size)
-+ return -EFBIG;
-+
-+ if (count > total_size) {
-+ err = -EFBIG;
-+ count = total_size;
-+ }
-+
-+ if (count + p > total_size) {
-+ if (!err)
-+ err = -ENOSPC;
-+
-+ count = total_size - p;
-+ }
-+
-+ dst = (void __force *) (info->screen_base + p);
-+
-+ if (copy_from_user(dst, buf, count))
-+ err = -EFAULT;
-+
-+ if (!err)
-+ *ppos += count;
-+
-+ st7735fb_update_display(par);
-+
-+ return (err) ? err : count;
-+}
-+
-+static struct fb_ops st7735fb_ops = {
-+ .owner = THIS_MODULE,
-+ .fb_read = fb_sys_read,
-+ .fb_write = st7735fb_write,
-+ .fb_fillrect = st7735fb_fillrect,
-+ .fb_copyarea = st7735fb_copyarea,
-+ .fb_imageblit = st7735fb_imageblit,
-+};
-+
-+static struct fb_deferred_io st7735fb_defio = {
-+ .delay = HZ,
-+ .deferred_io = st7735fb_deferred_io,
-+};
-+
-+static int __devinit st7735fb_probe (struct spi_device *spi)
-+{
-+ int chip = spi_get_device_id(spi)->driver_data;
-+ struct st7735fb_platform_data *pdata = spi->dev.platform_data;
-+ int vmem_size = WIDTH*HEIGHT*BPP/8;
-+ u8 *vmem;
-+ struct fb_info *info;
-+ struct st7735fb_par *par;
-+ int retval = -ENOMEM;
-+
-+ if (chip != ST7735_DISPLAY_AF_TFT18) {
-+ pr_err("%s: only the %s device is supported\n", DRVNAME,
-+ to_spi_driver(spi->dev.driver)->id_table->name);
-+ return -EINVAL;
-+ }
-+
-+ if (!pdata) {
-+ pr_err("%s: platform data required for rst and dc info\n",
-+ DRVNAME);
-+ return -EINVAL;
-+ }
-+
-+ vmem = vzalloc(vmem_size);
-+ if (!vmem)
-+ return retval;
-+
-+ info = framebuffer_alloc(sizeof(struct st7735fb_par), &spi->dev);
-+ if (!info)
-+ goto fballoc_fail;
-+
-+ info->screen_base = (u8 __force __iomem *)vmem;
-+ info->fbops = &st7735fb_ops;
-+ info->fix = st7735fb_fix;
-+ info->fix.smem_len = vmem_size;
-+ info->var = st7735fb_var;
-+ /* Choose any packed pixel format as long as it's RGB565 */
-+ info->var.red.offset = 11;
-+ info->var.red.length = 5;
-+ info->var.green.offset = 5;
-+ info->var.green.length = 6;
-+ info->var.blue.offset = 0;
-+ info->var.blue.length = 5;
-+ info->var.transp.offset = 0;
-+ info->var.transp.length = 0;
-+ info->flags = FBINFO_FLAG_DEFAULT |
-+#ifdef __LITTLE_ENDIAN
-+ FBINFO_FOREIGN_ENDIAN |
-+#endif
-+ FBINFO_VIRTFB;
-+
-+ info->fbdefio = &st7735fb_defio;
-+ fb_deferred_io_init(info);
-+
-+ par = info->par;
-+ par->info = info;
-+ par->spi = spi;
-+ par->rst = pdata->rst_gpio;
-+ par->dc = pdata->dc_gpio;
-+
-+ retval = register_framebuffer(info);
-+ if (retval < 0)
-+ goto fbreg_fail;
-+
-+ spi_set_drvdata(spi, info);
-+
-+ retval = st7735fb_init_display(par);
-+ if (retval < 0)
-+ goto init_fail;
-+
-+ printk(KERN_INFO
-+ "fb%d: %s frame buffer device,\n\tusing %d KiB of video memory\n",
-+ info->node, info->fix.id, vmem_size);
-+
-+ return 0;
-+
-+
-+ /* TODO: release gpios on fail */
-+init_fail:
-+ spi_set_drvdata(spi, NULL);
-+
-+fbreg_fail:
-+ framebuffer_release(info);
-+
-+fballoc_fail:
-+ vfree(vmem);
-+
-+ return retval;
-+}
-+
-+static int __devexit st7735fb_remove(struct spi_device *spi)
-+{
-+ struct fb_info *info = spi_get_drvdata(spi);
-+
-+ spi_set_drvdata(spi, NULL);
-+
-+ if (info) {
-+ unregister_framebuffer(info);
-+ vfree(info->screen_base);
-+ framebuffer_release(info);
-+ }
-+
-+ /* TODO: release gpios */
-+
-+ return 0;
-+}
-+
-+static const struct spi_device_id st7735fb_ids[] = {
-+ { "adafruit_tft18", ST7735_DISPLAY_AF_TFT18 },
-+ { },
-+};
-+
-+MODULE_DEVICE_TABLE(spi, st7735fb_ids);
-+
-+static struct spi_driver st7735fb_driver = {
-+ .driver = {
-+ .name = "st7735fb",
-+ .owner = THIS_MODULE,
-+ },
-+ .id_table = st7735fb_ids,
-+ .probe = st7735fb_probe,
-+ .remove = __devexit_p(st7735fb_remove),
-+};
-+
-+static int __init st7735fb_init(void)
-+{
-+ return spi_register_driver(&st7735fb_driver);
-+}
-+
-+static void __exit st7735fb_exit(void)
-+{
-+ spi_unregister_driver(&st7735fb_driver);
-+}
-+
-+/* ------------------------------------------------------------------------- */
-+
-+module_init(st7735fb_init);
-+module_exit(st7735fb_exit);
-+
-+MODULE_DESCRIPTION("FB driver for ST7735 display controller");
-+MODULE_AUTHOR("Matt Porter");
-+MODULE_LICENSE("GPL");
-diff --git a/include/video/st7735fb.h b/include/video/st7735fb.h
-new file mode 100644
-index 0000000..250f036
---- /dev/null
-+++ b/include/video/st7735fb.h
-@@ -0,0 +1,86 @@
-+/*
-+ * linux/include/video/st7735fb.h -- FB driver for ST7735 LCD controller
-+ *
-+ * Copyright (C) 2011, Matt Porter
-+ *
-+ * This file is subject to the terms and conditions of the GNU General Public
-+ * License. See the file COPYING in the main directory of this archive for
-+ * more details.
-+ */
-+
-+#define DRVNAME "st7735fb"
-+#define WIDTH 128
-+#define HEIGHT 160
-+#define BPP 16
-+
-+/* Supported display modules */
-+#define ST7735_DISPLAY_AF_TFT18 0 /* Adafruit SPI TFT 1.8" */
-+
-+/* Init script function */
-+struct st7735_function {
-+ u16 cmd;
-+ u16 data;
-+};
-+
-+/* Init script commands */
-+enum st7735_cmd {
-+ ST7735_START,
-+ ST7735_END,
-+ ST7735_CMD,
-+ ST7735_DATA,
-+ ST7735_DELAY
-+};
-+
-+struct st7735fb_par {
-+ struct spi_device *spi;
-+ struct fb_info *info;
-+ int rst;
-+ int dc;
-+};
-+
-+struct st7735fb_platform_data {
-+ int rst_gpio;
-+ int dc_gpio;
-+};
-+
-+/* ST7735 Commands */
-+#define ST7735_NOP 0x0
-+#define ST7735_SWRESET 0x01
-+#define ST7735_RDDID 0x04
-+#define ST7735_RDDST 0x09
-+#define ST7735_SLPIN 0x10
-+#define ST7735_SLPOUT 0x11
-+#define ST7735_PTLON 0x12
-+#define ST7735_NORON 0x13
-+#define ST7735_INVOFF 0x20
-+#define ST7735_INVON 0x21
-+#define ST7735_DISPOFF 0x28
-+#define ST7735_DISPON 0x29
-+#define ST7735_CASET 0x2A
-+#define ST7735_RASET 0x2B
-+#define ST7735_RAMWR 0x2C
-+#define ST7735_RAMRD 0x2E
-+#define ST7735_COLMOD 0x3A
-+#define ST7735_MADCTL 0x36
-+#define ST7735_FRMCTR1 0xB1
-+#define ST7735_FRMCTR2 0xB2
-+#define ST7735_FRMCTR3 0xB3
-+#define ST7735_INVCTR 0xB4
-+#define ST7735_DISSET5 0xB6
-+#define ST7735_PWCTR1 0xC0
-+#define ST7735_PWCTR2 0xC1
-+#define ST7735_PWCTR3 0xC2
-+#define ST7735_PWCTR4 0xC3
-+#define ST7735_PWCTR5 0xC4
-+#define ST7735_VMCTR1 0xC5
-+#define ST7735_RDID1 0xDA
-+#define ST7735_RDID2 0xDB
-+#define ST7735_RDID3 0xDC
-+#define ST7735_RDID4 0xDD
-+#define ST7735_GMCTRP1 0xE0
-+#define ST7735_GMCTRN1 0xE1
-+#define ST7735_PWCTR6 0xFC
-+
-+
-+
-+
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0019-beaglebone-use-P8_6-gpio1_3-as-w1-bus.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0019-beaglebone-use-P8_6-gpio1_3-as-w1-bus.patch
deleted file mode 100644
index 6751e96..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0019-beaglebone-use-P8_6-gpio1_3-as-w1-bus.patch
+++ /dev/null
@@ -1,83 +0,0 @@
-From 1fcc4aabf4fa4ffe4ebfbfe4adbce3913389a0a0 Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen at dominion.thruhere.net>
-Date: Tue, 7 Feb 2012 11:01:13 +0100
-Subject: [PATCH 19/79] beaglebone: use P8_6 (gpio1_3) as w1 bus
-
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- arch/arm/mach-omap2/board-am335xevm.c | 31 +++++++++++++++++++++++++++++++
- 1 file changed, 31 insertions(+)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index 97b069f..3ba4bbc 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -39,6 +39,7 @@
- #include <linux/reboot.h>
- #include <linux/pwm/pwm.h>
- #include <linux/opp.h>
-+#include <linux/w1-gpio.h>
-
- /* LCD controller is similar to DA850 */
- #include <video/da8xx-fb.h>
-@@ -617,6 +618,11 @@ static struct pinmux_config bbtoys7_pin_mux[] = {
- {NULL, 0},
- };
-
-+static struct pinmux_config w1_gpio_pin_mux[] = {
-+ {"gpmc_ad3.gpio1_3", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT_PULLUP},
-+ {NULL, 0},
-+};
-+
- static struct pinmux_config tsc_pin_mux[] = {
- {"ain0.ain0", OMAP_MUX_MODE0 | AM33XX_INPUT_EN},
- {"ain1.ain1", OMAP_MUX_MODE0 | AM33XX_INPUT_EN},
-@@ -1040,6 +1046,19 @@ static struct pinmux_config profibus_pin_mux[] = {
- {NULL, 0},
- };
-
-+#define BEAGLEBONE_W1_GPIO GPIO_TO_PIN(1, 3)
-+
-+static struct w1_gpio_platform_data bone_w1_gpio_pdata = {
-+ .pin = BEAGLEBONE_W1_GPIO,
-+ .is_open_drain = 0,
-+};
-+
-+static struct platform_device bone_w1_device = {
-+ .name = "w1-gpio",
-+ .id = -1,
-+ .dev.platform_data = &bone_w1_gpio_pdata,
-+};
-+
- /* LEDS - gpio1_21 -> gpio1_24 */
-
- #define BEAGLEBONE_USR1_LED GPIO_TO_PIN(1, 21)
-@@ -1377,6 +1396,17 @@ static void dvileds_init(int evm_id, int profile )
- pr_err("failed to register BeagleBone DVI cape LEDS\n");
- }
-
-+static void bonew1_gpio_init(int evm_id, int profile )
-+{
-+ int err;
-+ setup_pin_mux(w1_gpio_pin_mux);
-+ err = platform_device_register(&bone_w1_device);
-+ if (err)
-+ pr_err("failed to register w1-gpio\n");
-+ else
-+ pr_info("w1-gpio connected to P8_6\n");
-+}
-+
- static void rgmii1_init(int evm_id, int profile)
- {
- setup_pin_mux(rgmii1_pin_mux);
-@@ -2322,6 +2352,7 @@ static struct evm_dev_cfg beaglebone_dev_cfg[] = {
- {i2c2_init, DEV_ON_BASEBOARD, PROFILE_NONE},
- {mmc0_init, DEV_ON_BASEBOARD, PROFILE_NONE},
- {boneleds_init, DEV_ON_BASEBOARD, PROFILE_ALL},
-+ {bonew1_gpio_init, DEV_ON_BASEBOARD, PROFILE_ALL},
- {NULL, 0, 0},
- };
-
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0020-beaglebone-add-support-for-Towertech-TT3201-CAN-cape.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0020-beaglebone-add-support-for-Towertech-TT3201-CAN-cape.patch
deleted file mode 100644
index 1a63942..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0020-beaglebone-add-support-for-Towertech-TT3201-CAN-cape.patch
+++ /dev/null
@@ -1,320 +0,0 @@
-From c57ec6cbf0fc195c3253b9db23dab08554377cd5 Mon Sep 17 00:00:00 2001
-From: Alessandro Zummo <a.zummo at towertech.it>
-Date: Thu, 9 Feb 2012 12:46:52 +0100
-Subject: [PATCH 20/79] beaglebone: add support for Towertech TT3201 CAN cape
-
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- arch/arm/mach-omap2/board-am335xevm.c | 54 ++++++++++++++++++++++++++++++++-
- arch/arm/mach-omap2/mux33xx.c | 8 ++---
- drivers/net/can/dev.c | 8 ++---
- drivers/net/can/mcp251x.c | 47 ++++++++++++++++++++++------
- 4 files changed, 98 insertions(+), 19 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index 3ba4bbc..a8dfcdf 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -40,6 +40,7 @@
- #include <linux/pwm/pwm.h>
- #include <linux/opp.h>
- #include <linux/w1-gpio.h>
-+#include <linux/can/platform/mcp251x.h>
-
- /* LCD controller is similar to DA850 */
- #include <video/da8xx-fb.h>
-@@ -843,6 +844,15 @@ static struct pinmux_config d_can_ia_pin_mux[] = {
- {NULL, 0},
- };
-
-+static struct pinmux_config tt3201_pin_mux[] = {
-+ {"uart1_rxd.d_can1_tx", OMAP_MUX_MODE2 | AM33XX_PIN_OUTPUT },
-+ {"uart1_txd.d_can1_rx", OMAP_MUX_MODE2 | AM33XX_PIN_INPUT_PULLUP },
-+ {"mcasp0_fsr.gpio3_19", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT_PULLUP },
-+ {"mcasp0_ahclkx.gpio3_21", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT_PULLUP },
-+ {"ecap0_in_pwm0_out.spi1_cs1", OMAP_MUX_MODE2 | AM33XX_PIN_OUTPUT_PULLUP },
-+ {NULL, 0},
-+};
-+
- /* Module pin mux for uart2 */
- static struct pinmux_config uart2_pin_mux[] = {
- {"spi0_sclk.uart2_rxd", OMAP_MUX_MODE1 | AM33XX_SLEWCTRL_SLOW |
-@@ -1852,6 +1862,44 @@ static void i2c1_init(int evm_id, int profile)
- return;
- }
-
-+static struct mcp251x_platform_data mcp251x_info = {
-+ .oscillator_frequency = 16000000,
-+};
-+
-+static struct spi_board_info tt3201_spi_info[] = {
-+ {
-+ .modalias = "mcp2515",
-+ .max_speed_hz = 10000000,
-+ .bus_num = 2,
-+ .chip_select = 0,
-+ .mode = SPI_MODE_0,
-+ .platform_data = &mcp251x_info,
-+ },
-+ {
-+ .modalias = "mcp2515",
-+ .max_speed_hz = 10000000,
-+ .bus_num = 2,
-+ .chip_select = 1,
-+ .mode = SPI_MODE_0,
-+ .platform_data = &mcp251x_info,
-+ },
-+};
-+
-+static void tt3201_init(int evm_id, int profile)
-+{
-+ pr_info("TowerTech TT3201 CAN Cape\n");
-+
-+ setup_pin_mux(spi1_pin_mux);
-+ setup_pin_mux(tt3201_pin_mux);
-+
-+ tt3201_spi_info[0].irq = gpio_to_irq(GPIO_TO_PIN(3, 19));
-+ tt3201_spi_info[1].irq = gpio_to_irq(GPIO_TO_PIN(3, 21));
-+
-+ spi_register_board_info(tt3201_spi_info,
-+ ARRAY_SIZE(tt3201_spi_info));
-+
-+ am33xx_d_can_init(1);
-+}
- static void beaglebone_cape_setup(struct memory_accessor *mem_acc, void *context)
- {
- capecount++;
-@@ -1899,7 +1947,11 @@ static void beaglebone_cape_setup(struct memory_accessor *mem_acc, void *context
- beaglebone_tsadcpins_free = 0;
- }
-
--
-+ if (!strncmp("TT3201-001", cape_config.partnumber, 10)) {
-+ pr_info("BeagleBone cape: initializing CAN cape\n");
-+ tt3201_init(0,0);
-+ }
-+
- if ((capecount > 3) && (beaglebone_tsadcpins_free == 1)) {
- pr_info("BeagleBone cape: exporting ADC pins to sysfs\n");
- bone_tsc_init(0,0);
-diff --git a/arch/arm/mach-omap2/mux33xx.c b/arch/arm/mach-omap2/mux33xx.c
-index 0f71646..25dcedb 100644
---- a/arch/arm/mach-omap2/mux33xx.c
-+++ b/arch/arm/mach-omap2/mux33xx.c
-@@ -312,16 +312,16 @@ static struct omap_mux __initdata am33xx_muxmodes[] = {
- "uart0_txd", "spi1_cs1", "d_can0_rx", "i2c2_scl",
- NULL, NULL, NULL, "gpio1_11"),
- _AM33XX_MUXENTRY(UART1_CTSN, 0,
-- "uart1_ctsn", NULL, NULL, "i2c2_sda",
-+ "uart1_ctsn", NULL, "d_can0_tx", "i2c2_sda",
- "spi1_cs0", NULL, NULL, "gpio0_12"),
- _AM33XX_MUXENTRY(UART1_RTSN, 0,
-- "uart1_rtsn", NULL, NULL, "i2c2_scl",
-+ "uart1_rtsn", NULL, "d_can0_rx", "i2c2_scl",
- "spi1_cs1", NULL, NULL, "gpio0_13"),
- _AM33XX_MUXENTRY(UART1_RXD, 0,
-- "uart1_rxd", "mmc1_sdwp", NULL, "i2c1_sda",
-+ "uart1_rxd", "mmc1_sdwp", "d_can1_tx", "i2c1_sda",
- NULL, "pr1_uart0_rxd_mux1", NULL, "gpio0_14"),
- _AM33XX_MUXENTRY(UART1_TXD, 0,
-- "uart1_txd", "mmc2_sdwp", NULL, "i2c1_scl",
-+ "uart1_txd", "mmc2_sdwp", "d_can1_rx", "i2c1_scl",
- NULL, "pr1_uart0_txd_mux1", NULL, "gpio0_15"),
- _AM33XX_MUXENTRY(I2C0_SDA, 0,
- "i2c0_sda", NULL, NULL, NULL,
-diff --git a/drivers/net/can/dev.c b/drivers/net/can/dev.c
-index 25695bd..bc1e87e 100644
---- a/drivers/net/can/dev.c
-+++ b/drivers/net/can/dev.c
-@@ -392,7 +392,7 @@ void can_restart(unsigned long data)
- stats->rx_bytes += cf->can_dlc;
-
- restart:
-- dev_dbg(dev->dev.parent, "restarted\n");
-+ netdev_dbg(dev, "restarted\n");
- priv->can_stats.restarts++;
-
- /* Now restart the device */
-@@ -400,7 +400,7 @@ restart:
-
- netif_carrier_on(dev);
- if (err)
-- dev_err(dev->dev.parent, "Error %d during restart", err);
-+ netdev_err(dev, "error %d during restart", err);
- }
-
- int can_restart_now(struct net_device *dev)
-@@ -433,7 +433,7 @@ void can_bus_off(struct net_device *dev)
- {
- struct can_priv *priv = netdev_priv(dev);
-
-- dev_dbg(dev->dev.parent, "bus-off\n");
-+ netdev_dbg(dev, "bus-off\n");
-
- netif_carrier_off(dev);
- priv->can_stats.bus_off++;
-@@ -545,7 +545,7 @@ int open_candev(struct net_device *dev)
- struct can_priv *priv = netdev_priv(dev);
-
- if (!priv->bittiming.tq && !priv->bittiming.bitrate) {
-- dev_err(dev->dev.parent, "bit-timing not yet defined\n");
-+ netdev_err(dev, "bit-timing not yet defined\n");
- return -EINVAL;
- }
-
-diff --git a/drivers/net/can/mcp251x.c b/drivers/net/can/mcp251x.c
-index 330140e..b3e231c 100644
---- a/drivers/net/can/mcp251x.c
-+++ b/drivers/net/can/mcp251x.c
-@@ -93,8 +93,9 @@
- # define CANCTRL_REQOP_LOOPBACK 0x40
- # define CANCTRL_REQOP_SLEEP 0x20
- # define CANCTRL_REQOP_NORMAL 0x00
--# define CANCTRL_OSM 0x08
- # define CANCTRL_ABAT 0x10
-+# define CANCTRL_OSM 0x08
-+# define CANCTRL_CLKEN 0x04
- #define TEC 0x1c
- #define REC 0x1d
- #define CNF1 0x2a
-@@ -287,7 +288,7 @@ static void mcp251x_clean(struct net_device *net)
- /*
- * Note about handling of error return of mcp251x_spi_trans: accessing
- * registers via SPI is not really different conceptually than using
-- * normal I/O assembler instructions, although it's much more
-+ * normal I/O assembly instructions, although it's much more
- * complicated from a practical POV. So it's not advisable to always
- * check the return value of this function. Imagine that every
- * read{b,l}, write{b,l} and friends would be bracketed in "if ( < 0)
-@@ -490,7 +491,7 @@ static void mcp251x_hw_rx(struct spi_device *spi, int buf_idx)
-
- static void mcp251x_hw_sleep(struct spi_device *spi)
- {
-- mcp251x_write_reg(spi, CANCTRL, CANCTRL_REQOP_SLEEP);
-+// mcp251x_write_reg(spi, CANCTRL, CANCTRL_REQOP_SLEEP);
- }
-
- static netdev_tx_t mcp251x_hard_start_xmit(struct sk_buff *skb,
-@@ -547,13 +548,16 @@ static int mcp251x_set_normal_mode(struct spi_device *spi)
-
- if (priv->can.ctrlmode & CAN_CTRLMODE_LOOPBACK) {
- /* Put device into loopback mode */
-- mcp251x_write_reg(spi, CANCTRL, CANCTRL_REQOP_LOOPBACK);
-+ mcp251x_write_reg(spi, CANCTRL, CANCTRL_REQOP_LOOPBACK | CANCTRL_CLKEN);
- } else if (priv->can.ctrlmode & CAN_CTRLMODE_LISTENONLY) {
- /* Put device into listen-only mode */
-- mcp251x_write_reg(spi, CANCTRL, CANCTRL_REQOP_LISTEN_ONLY);
-+ mcp251x_write_reg(spi, CANCTRL, CANCTRL_REQOP_LISTEN_ONLY | CANCTRL_CLKEN);
- } else {
- /* Put device into normal mode */
-- mcp251x_write_reg(spi, CANCTRL, CANCTRL_REQOP_NORMAL);
-+ mcp251x_write_reg(spi, CANCTRL, CANCTRL_REQOP_NORMAL | CANCTRL_CLKEN);
-+
-+ netdev_info(priv->net, "CANCTRL: 0x%02x\n",
-+ mcp251x_read_reg(spi, CANCTRL));
-
- /* Wait for the device to enter normal mode */
- timeout = jiffies + HZ;
-@@ -585,11 +589,15 @@ static int mcp251x_do_set_bittiming(struct net_device *net)
- (bt->prop_seg - 1));
- mcp251x_write_bits(spi, CNF3, CNF3_PHSEG2_MASK,
- (bt->phase_seg2 - 1));
-- dev_info(&spi->dev, "CNF: 0x%02x 0x%02x 0x%02x\n",
-+
-+ netdev_info(net, "CNF: 0x%02x 0x%02x 0x%02x\n",
- mcp251x_read_reg(spi, CNF1),
- mcp251x_read_reg(spi, CNF2),
- mcp251x_read_reg(spi, CNF3));
-
-+ netdev_info(net, "CANCTRL: 0x%02x\n",
-+ mcp251x_read_reg(spi, CANCTRL));
-+
- return 0;
- }
-
-@@ -600,6 +608,7 @@ static int mcp251x_setup(struct net_device *net, struct mcp251x_priv *priv,
-
- mcp251x_write_reg(spi, RXBCTRL(0),
- RXBCTRL_BUKT | RXBCTRL_RXM0 | RXBCTRL_RXM1);
-+
- mcp251x_write_reg(spi, RXBCTRL(1),
- RXBCTRL_RXM0 | RXBCTRL_RXM1);
- return 0;
-@@ -728,7 +737,9 @@ static void mcp251x_tx_work_handler(struct work_struct *ws)
- mutex_lock(&priv->mcp_lock);
- if (priv->tx_skb) {
- if (priv->can.state == CAN_STATE_BUS_OFF) {
-+
- mcp251x_clean(net);
-+
- } else {
- frame = (struct can_frame *)priv->tx_skb->data;
-
-@@ -827,21 +838,37 @@ static irqreturn_t mcp251x_can_ist(int irq, void *dev_id)
-
- /* Update can state */
- if (eflag & EFLG_TXBO) {
-+
-+ netdev_err(net, "err: bus off\n");
-+
- new_state = CAN_STATE_BUS_OFF;
- can_id |= CAN_ERR_BUSOFF;
- } else if (eflag & EFLG_TXEP) {
-+
-+ netdev_err(net, "err: txep\n");
-+
- new_state = CAN_STATE_ERROR_PASSIVE;
- can_id |= CAN_ERR_CRTL;
- data1 |= CAN_ERR_CRTL_TX_PASSIVE;
-+
- } else if (eflag & EFLG_RXEP) {
-+
-+ netdev_err(net, "err: rxep\n");
-+
- new_state = CAN_STATE_ERROR_PASSIVE;
- can_id |= CAN_ERR_CRTL;
- data1 |= CAN_ERR_CRTL_RX_PASSIVE;
- } else if (eflag & EFLG_TXWAR) {
-+
-+ netdev_err(net, "err: txwar\n");
-+
- new_state = CAN_STATE_ERROR_WARNING;
- can_id |= CAN_ERR_CRTL;
- data1 |= CAN_ERR_CRTL_TX_WARNING;
- } else if (eflag & EFLG_RXWAR) {
-+
-+ netdev_err(net, "err: rxwar\n");
-+
- new_state = CAN_STATE_ERROR_WARNING;
- can_id |= CAN_ERR_CRTL;
- data1 |= CAN_ERR_CRTL_RX_WARNING;
-@@ -918,7 +945,7 @@ static int mcp251x_open(struct net_device *net)
-
- ret = open_candev(net);
- if (ret) {
-- dev_err(&spi->dev, "unable to set initial baudrate!\n");
-+ netdev_err(net, "failed to open can device\n");
- return ret;
- }
-
-@@ -934,7 +961,7 @@ static int mcp251x_open(struct net_device *net)
- pdata->irq_flags ? pdata->irq_flags : IRQF_TRIGGER_FALLING,
- DEVICE_NAME, priv);
- if (ret) {
-- dev_err(&spi->dev, "failed to acquire irq %d\n", spi->irq);
-+ netdev_err(net, "failed to acquire irq %d\n", spi->irq);
- if (pdata->transceiver_enable)
- pdata->transceiver_enable(0);
- close_candev(net);
-@@ -1071,7 +1098,7 @@ static int __devinit mcp251x_can_probe(struct spi_device *spi)
-
- ret = register_candev(net);
- if (!ret) {
-- dev_info(&spi->dev, "probed\n");
-+ netdev_info(priv->net, "probed\n");
- return ret;
- }
- error_probe:
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0021-beaglebone-add-more-beagleboardtoys-cape-partnumbers.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0021-beaglebone-add-more-beagleboardtoys-cape-partnumbers.patch
deleted file mode 100644
index 607d3c8..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0021-beaglebone-add-more-beagleboardtoys-cape-partnumbers.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From 3d11cccc72d7ec50c8da319e45cafb4f02431211 Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen at dominion.thruhere.net>
-Date: Mon, 19 Mar 2012 12:01:35 +0100
-Subject: [PATCH 21/79] beaglebone: add more beagleboardtoys cape partnumbers
-
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- arch/arm/mach-omap2/board-am335xevm.c | 25 ++++++++++++++++++++++++-
- 1 file changed, 24 insertions(+), 1 deletion(-)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index a8dfcdf..f854329 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -1947,11 +1947,34 @@ static void beaglebone_cape_setup(struct memory_accessor *mem_acc, void *context
- beaglebone_tsadcpins_free = 0;
- }
-
-+ if (!strncmp("BB-BONE-LCD3-01", cape_config.partnumber, 15)) {
-+ pr_info("BeagleBone cape: initializing LCD cape\n");
-+ bbtoys7lcd_init(0,0);
-+ pr_info("BeagleBone cape: initializing LCD cape touchscreen\n");
-+ tsc_init(0,0);
-+ beaglebone_tsadcpins_free = 0;
-+ }
-+
-+ if (!strncmp("BB-BONE-VGA-01", cape_config.partnumber, 15)) {
-+ pr_info("BeagleBone cape: initializing VGA cape\n");
-+ dvi_init(0,0);
-+ }
-+
-+ if (!strncmp("BB-BONE-BATT-01", cape_config.partnumber, 15)) {
-+ pr_info("BeagleBone cape: initializing battery cape\n");
-+ //foo_init(0,0);
-+ }
-+
-+ if (!strncmp("BB-BONE-SERL", cape_config.partnumber, 12)) {
-+ pr_info("BeagleBone cape: initializing serial cape\n");
-+ //foo_init(0,0);
-+ }
-+
- if (!strncmp("TT3201-001", cape_config.partnumber, 10)) {
- pr_info("BeagleBone cape: initializing CAN cape\n");
- tt3201_init(0,0);
- }
--
-+
- if ((capecount > 3) && (beaglebone_tsadcpins_free == 1)) {
- pr_info("BeagleBone cape: exporting ADC pins to sysfs\n");
- bone_tsc_init(0,0);
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0022-beaglebone-add-gpio-keys-for-lcd7-add-notes-for-miss.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0022-beaglebone-add-gpio-keys-for-lcd7-add-notes-for-miss.patch
deleted file mode 100644
index 4eaefff..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0022-beaglebone-add-gpio-keys-for-lcd7-add-notes-for-miss.patch
+++ /dev/null
@@ -1,130 +0,0 @@
-From bc8957c4a563945781b0e3c41f5a8068d88122f9 Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen at dominion.thruhere.net>
-Date: Mon, 19 Mar 2012 13:32:43 +0100
-Subject: [PATCH 22/79] beaglebone: add gpio-keys for lcd7, add notes for
- missing functionality for other capes
-
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- arch/arm/mach-omap2/board-am335xevm.c | 79 +++++++++++++++++++++++++++++++++
- 1 file changed, 79 insertions(+)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index f854329..9e9cf5b 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -994,6 +994,73 @@ static void volume_keys_init(int evm_id, int profile)
- pr_err("failed to register matrix keypad (2x3) device\n");
- }
-
-+/* pinmux for lcd7 keys */
-+static struct pinmux_config lcd7_keys_pin_mux[] = {
-+ {"gpmc_a0.gpio1_16", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT},
-+ {"gpmc_a1.gpio1_17", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT},
-+ {"gpmc_a3.gpio1_19", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT},
-+ {"mcasp0_axr0.gpio3_16", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT},
-+ {NULL, 0},
-+};
-+
-+/* Configure GPIOs for lcd7 keys */
-+static struct gpio_keys_button beaglebone_lcd7_gpio_keys[] = {
-+ {
-+ .code = KEY_LEFT,
-+ .gpio = GPIO_TO_PIN(1, 16),
-+ .active_low = false,
-+ .desc = "left",
-+ .type = EV_KEY,
-+ .wakeup = 1,
-+ },
-+ {
-+ .code = KEY_RIGHT,
-+ .gpio = GPIO_TO_PIN(1, 17),
-+ .active_low = false,
-+ .desc = "right",
-+ .type = EV_KEY,
-+ .wakeup = 1,
-+ },
-+ {
-+ .code = KEY_UP,
-+ .gpio = GPIO_TO_PIN(1, 19),
-+ .active_low = false,
-+ .desc = "up",
-+ .type = EV_KEY,
-+ .wakeup = 1,
-+ },
-+ {
-+ .code = KEY_DOWN,
-+ .gpio = GPIO_TO_PIN(3, 16),
-+ .active_low = false,
-+ .desc = "down",
-+ .type = EV_KEY,
-+ .wakeup = 1,
-+ },
-+};
-+
-+static struct gpio_keys_platform_data beaglebone_lcd7_gpio_key_info = {
-+ .buttons = beaglebone_lcd7_gpio_keys,
-+ .nbuttons = ARRAY_SIZE(beaglebone_lcd7_gpio_keys),
-+};
-+
-+static struct platform_device beaglebone_lcd7_keys = {
-+ .name = "gpio-keys",
-+ .id = -1,
-+ .dev = {
-+ .platform_data = &beaglebone_lcd7_gpio_key_info,
-+ },
-+};
-+
-+static void beaglebone_lcd7_keys_init(int evm_id, int profile)
-+{
-+ int err;
-+ setup_pin_mux(lcd7_keys_pin_mux);
-+ err = platform_device_register(&beaglebone_lcd7_keys);
-+ if (err)
-+ pr_err("failed to register gpio keys for LCD7 cape\n");
-+}
-+
- /*
- * @evm_id - evm id which needs to be configured
- * @dev_cfg - single evm structure which includes
-@@ -1945,6 +2012,8 @@ static void beaglebone_cape_setup(struct memory_accessor *mem_acc, void *context
- pr_info("BeagleBone cape: Registering PWM backlight for LCD cape\n");
- enable_ehrpwm1(0,0);
- beaglebone_tsadcpins_free = 0;
-+ pr_info("BeagleBone cape: Registering gpio-keys for LCD cape\n");
-+ beaglebone_lcd7_keys_init(0,0);
- }
-
- if (!strncmp("BB-BONE-LCD3-01", cape_config.partnumber, 15)) {
-@@ -1953,6 +2022,10 @@ static void beaglebone_cape_setup(struct memory_accessor *mem_acc, void *context
- pr_info("BeagleBone cape: initializing LCD cape touchscreen\n");
- tsc_init(0,0);
- beaglebone_tsadcpins_free = 0;
-+ // gpio1_16 -> button
-+ // gpio1_17 -> button
-+ // gpio3_19 -> button
-+ // gpio1_28 -> button
- }
-
- if (!strncmp("BB-BONE-VGA-01", cape_config.partnumber, 15)) {
-@@ -1962,11 +2035,17 @@ static void beaglebone_cape_setup(struct memory_accessor *mem_acc, void *context
-
- if (!strncmp("BB-BONE-BATT-01", cape_config.partnumber, 15)) {
- pr_info("BeagleBone cape: initializing battery cape\n");
-+ // gpio1_6, P9_15 lowbat output
-+ // AIN4, P9_33 vbat
- //foo_init(0,0);
- }
-
- if (!strncmp("BB-BONE-SERL", cape_config.partnumber, 12)) {
- pr_info("BeagleBone cape: initializing serial cape\n");
-+ // 01 -> CAN
-+ // 02 -> Profibus
-+ // 03 -> RS232
-+ // 04 -> RS485
- //foo_init(0,0);
- }
-
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0023-beaglebone-add-enter-key-for-lcd7-cape.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0023-beaglebone-add-enter-key-for-lcd7-cape.patch
deleted file mode 100644
index 25a73d4..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0023-beaglebone-add-enter-key-for-lcd7-cape.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 1fb7daa57c2079ec42cff0d26336e430fad7946f Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen at dominion.thruhere.net>
-Date: Mon, 19 Mar 2012 14:26:37 +0100
-Subject: [PATCH 23/79] beaglebone: add enter key for lcd7 cape
-
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- arch/arm/mach-omap2/board-am335xevm.c | 9 +++++++++
- 1 file changed, 9 insertions(+)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index 9e9cf5b..8c78eb5 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -1000,6 +1000,7 @@ static struct pinmux_config lcd7_keys_pin_mux[] = {
- {"gpmc_a1.gpio1_17", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT},
- {"gpmc_a3.gpio1_19", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT},
- {"mcasp0_axr0.gpio3_16", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT},
-+ {"mcasp0_fsr.gpio3_19", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT},
- {NULL, 0},
- };
-
-@@ -1037,6 +1038,14 @@ static struct gpio_keys_button beaglebone_lcd7_gpio_keys[] = {
- .type = EV_KEY,
- .wakeup = 1,
- },
-+ {
-+ .code = KEY_ENTER,
-+ .gpio = GPIO_TO_PIN(3, 19),
-+ .active_low = false,
-+ .desc = "enter",
-+ .type = EV_KEY,
-+ .wakeup = 1,
-+ },
- };
-
- static struct gpio_keys_platform_data beaglebone_lcd7_gpio_key_info = {
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0024-beaglebone-add-gpio-keys-for-lcd.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0024-beaglebone-add-gpio-keys-for-lcd.patch
deleted file mode 100644
index 49ef146..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0024-beaglebone-add-gpio-keys-for-lcd.patch
+++ /dev/null
@@ -1,113 +0,0 @@
-From 5bc55512fb72b331c09769036da6b754430fd399 Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen at dominion.thruhere.net>
-Date: Mon, 19 Mar 2012 15:15:06 +0100
-Subject: [PATCH 24/79] beaglebone: add gpio-keys for lcd
-
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- arch/arm/mach-omap2/board-am335xevm.c | 82 +++++++++++++++++++++++++++++++--
- 1 file changed, 78 insertions(+), 4 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index 8c78eb5..5266f78 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -1070,6 +1070,82 @@ static void beaglebone_lcd7_keys_init(int evm_id, int profile)
- pr_err("failed to register gpio keys for LCD7 cape\n");
- }
-
-+/* pinmux for lcd3 keys */
-+static struct pinmux_config lcd3_keys_pin_mux[] = {
-+ {"gpmc_a0.gpio1_16", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT},
-+ {"gpmc_a1.gpio1_17", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT},
-+ {"mcasp0_fsr.gpio3_19", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT},
-+ {"gpmc_ben1.gpio1_28", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT},
-+ {"ecap0_in_pwm0_out.gpio0_7", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT},
-+ {NULL, 0},
-+};
-+
-+/* Configure GPIOs for lcd3 keys */
-+static struct gpio_keys_button beaglebone_lcd3_gpio_keys[] = {
-+ {
-+ .code = KEY_LEFT,
-+ .gpio = GPIO_TO_PIN(1, 16),
-+ .active_low = false,
-+ .desc = "left",
-+ .type = EV_KEY,
-+ .wakeup = 1,
-+ },
-+ {
-+ .code = KEY_RIGHT,
-+ .gpio = GPIO_TO_PIN(1, 17),
-+ .active_low = false,
-+ .desc = "right",
-+ .type = EV_KEY,
-+ .wakeup = 1,
-+ },
-+ {
-+ .code = KEY_UP,
-+ .gpio = GPIO_TO_PIN(3, 19),
-+ .active_low = false,
-+ .desc = "up",
-+ .type = EV_KEY,
-+ .wakeup = 1,
-+ },
-+ {
-+ .code = KEY_DOWN,
-+ .gpio = GPIO_TO_PIN(1, 28),
-+ .active_low = false,
-+ .desc = "down",
-+ .type = EV_KEY,
-+ .wakeup = 1,
-+ },
-+ {
-+ .code = KEY_ENTER,
-+ .gpio = GPIO_TO_PIN(0, 7),
-+ .active_low = false,
-+ .desc = "down",
-+ .type = EV_KEY,
-+ .wakeup = 1,
-+ },
-+};
-+
-+static struct gpio_keys_platform_data beaglebone_lcd3_gpio_key_info = {
-+ .buttons = beaglebone_lcd3_gpio_keys,
-+ .nbuttons = ARRAY_SIZE(beaglebone_lcd3_gpio_keys),
-+};
-+
-+static struct platform_device beaglebone_lcd3_keys = {
-+ .name = "gpio-keys",
-+ .id = -1,
-+ .dev = {
-+ .platform_data = &beaglebone_lcd3_gpio_key_info,
-+ },
-+};
-+
-+static void beaglebone_lcd3_keys_init(int evm_id, int profile)
-+{
-+ int err;
-+ setup_pin_mux(lcd3_keys_pin_mux);
-+ err = platform_device_register(&beaglebone_lcd3_keys);
-+ if (err)
-+ pr_err("failed to register gpio keys for LCD3 cape\n");
-+}
-+
- /*
- * @evm_id - evm id which needs to be configured
- * @dev_cfg - single evm structure which includes
-@@ -2031,10 +2107,8 @@ static void beaglebone_cape_setup(struct memory_accessor *mem_acc, void *context
- pr_info("BeagleBone cape: initializing LCD cape touchscreen\n");
- tsc_init(0,0);
- beaglebone_tsadcpins_free = 0;
-- // gpio1_16 -> button
-- // gpio1_17 -> button
-- // gpio3_19 -> button
-- // gpio1_28 -> button
-+ pr_info("BeagleBone cape: Registering gpio-keys for LCD cape\n");
-+ beaglebone_lcd3_keys_init(0,0);
- }
-
- if (!strncmp("BB-BONE-VGA-01", cape_config.partnumber, 15)) {
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0025-beaglebone-fix-direction-of-gpio-keys.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0025-beaglebone-fix-direction-of-gpio-keys.patch
deleted file mode 100644
index e0d5c0c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0025-beaglebone-fix-direction-of-gpio-keys.patch
+++ /dev/null
@@ -1,107 +0,0 @@
-From a9f029372abbaef2e9f55e2be728ae8bbc54bdaa Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen at dominion.thruhere.net>
-Date: Mon, 26 Mar 2012 20:28:56 +0200
-Subject: [PATCH 25/79] beaglebone: fix direction of gpio-keys
-
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- arch/arm/mach-omap2/board-am335xevm.c | 20 ++++++++++----------
- 1 file changed, 10 insertions(+), 10 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index 5266f78..36b0c85 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -1009,7 +1009,7 @@ static struct gpio_keys_button beaglebone_lcd7_gpio_keys[] = {
- {
- .code = KEY_LEFT,
- .gpio = GPIO_TO_PIN(1, 16),
-- .active_low = false,
-+ .active_low = true,
- .desc = "left",
- .type = EV_KEY,
- .wakeup = 1,
-@@ -1017,7 +1017,7 @@ static struct gpio_keys_button beaglebone_lcd7_gpio_keys[] = {
- {
- .code = KEY_RIGHT,
- .gpio = GPIO_TO_PIN(1, 17),
-- .active_low = false,
-+ .active_low = true,
- .desc = "right",
- .type = EV_KEY,
- .wakeup = 1,
-@@ -1025,7 +1025,7 @@ static struct gpio_keys_button beaglebone_lcd7_gpio_keys[] = {
- {
- .code = KEY_UP,
- .gpio = GPIO_TO_PIN(1, 19),
-- .active_low = false,
-+ .active_low = true,
- .desc = "up",
- .type = EV_KEY,
- .wakeup = 1,
-@@ -1033,7 +1033,7 @@ static struct gpio_keys_button beaglebone_lcd7_gpio_keys[] = {
- {
- .code = KEY_DOWN,
- .gpio = GPIO_TO_PIN(3, 16),
-- .active_low = false,
-+ .active_low = true,
- .desc = "down",
- .type = EV_KEY,
- .wakeup = 1,
-@@ -1041,7 +1041,7 @@ static struct gpio_keys_button beaglebone_lcd7_gpio_keys[] = {
- {
- .code = KEY_ENTER,
- .gpio = GPIO_TO_PIN(3, 19),
-- .active_low = false,
-+ .active_low = true,
- .desc = "enter",
- .type = EV_KEY,
- .wakeup = 1,
-@@ -1085,7 +1085,7 @@ static struct gpio_keys_button beaglebone_lcd3_gpio_keys[] = {
- {
- .code = KEY_LEFT,
- .gpio = GPIO_TO_PIN(1, 16),
-- .active_low = false,
-+ .active_low = true,
- .desc = "left",
- .type = EV_KEY,
- .wakeup = 1,
-@@ -1093,7 +1093,7 @@ static struct gpio_keys_button beaglebone_lcd3_gpio_keys[] = {
- {
- .code = KEY_RIGHT,
- .gpio = GPIO_TO_PIN(1, 17),
-- .active_low = false,
-+ .active_low = true,
- .desc = "right",
- .type = EV_KEY,
- .wakeup = 1,
-@@ -1101,7 +1101,7 @@ static struct gpio_keys_button beaglebone_lcd3_gpio_keys[] = {
- {
- .code = KEY_UP,
- .gpio = GPIO_TO_PIN(3, 19),
-- .active_low = false,
-+ .active_low = true,
- .desc = "up",
- .type = EV_KEY,
- .wakeup = 1,
-@@ -1109,7 +1109,7 @@ static struct gpio_keys_button beaglebone_lcd3_gpio_keys[] = {
- {
- .code = KEY_DOWN,
- .gpio = GPIO_TO_PIN(1, 28),
-- .active_low = false,
-+ .active_low = true,
- .desc = "down",
- .type = EV_KEY,
- .wakeup = 1,
-@@ -1117,7 +1117,7 @@ static struct gpio_keys_button beaglebone_lcd3_gpio_keys[] = {
- {
- .code = KEY_ENTER,
- .gpio = GPIO_TO_PIN(0, 7),
-- .active_low = false,
-+ .active_low = true,
- .desc = "down",
- .type = EV_KEY,
- .wakeup = 1,
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0026-beaglebone-fix-3.5-lcd-cape-support.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0026-beaglebone-fix-3.5-lcd-cape-support.patch
deleted file mode 100644
index bb2f002..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0026-beaglebone-fix-3.5-lcd-cape-support.patch
+++ /dev/null
@@ -1,109 +0,0 @@
-From 6f82ce8b4cd239aa7b262e0a0b62d42545b9d21b Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen at dominion.thruhere.net>
-Date: Wed, 29 Feb 2012 17:25:22 +0100
-Subject: [PATCH 26/79] beaglebone: fix 3.5" lcd cape support
-
-* proper timings
-* fix gpio conflict
-
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- arch/arm/mach-omap2/board-am335xevm.c | 42 ++++++++++++++++++++++++++++++++-
- drivers/video/da8xx-fb.c | 14 +++++++++++
- 2 files changed, 55 insertions(+), 1 deletion(-)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index 36b0c85..127516f 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -216,6 +216,29 @@ struct da8xx_lcdc_platform_data bbtoys7_pdata = {
- .type = "TFC_S9700RTWV35TR_01B",
- };
-
-+static struct lcd_ctrl_config bbtoys35_cfg = {
-+ &bbtoys7_panel,
-+ .ac_bias = 255,
-+ .ac_bias_intrpt = 0,
-+ .dma_burst_sz = 16,
-+ .bpp = 16,
-+ .fdd = 0x80,
-+ .tft_alt_mode = 0,
-+ .stn_565_mode = 0,
-+ .mono_8bit_mode = 0,
-+ .invert_line_clock = 1,
-+ .invert_frm_clock = 1,
-+ .sync_edge = 0,
-+ .sync_ctrl = 1,
-+ .raster_order = 0,
-+};
-+
-+struct da8xx_lcdc_platform_data bbtoys35_pdata = {
-+ .manu_name = "BBToys",
-+ .controller_data = &bbtoys35_cfg,
-+ .type = "CDTech_S035Q01",
-+};
-+
- static const struct display_panel dvi_panel = {
- WVGA,
- 16,
-@@ -1488,6 +1511,23 @@ static void bbtoys7lcd_init(int evm_id, int profile)
- return;
- }
-
-+static void bbtoys35lcd_init(int evm_id, int profile)
-+{
-+ setup_pin_mux(bbtoys7_pin_mux);
-+
-+ // we are being stupid and setting pixclock from here instead of da8xx-fb.c
-+ if (conf_disp_pll(16000000)) {
-+ pr_info("Failed to set pixclock to 16000000, not attempting to"
-+ "register LCD cape\n");
-+ return;
-+ }
-+
-+ if (am33xx_register_lcdc(&bbtoys35_pdata))
-+ pr_info("Failed to register Beagleboardtoys 3.5\" LCD cape device\n");
-+
-+ return;
-+}
-+
- #define BEAGLEBONEDVI_PDn GPIO_TO_PIN(1, 7)
-
- static void dvi_init(int evm_id, int profile)
-@@ -2103,7 +2143,7 @@ static void beaglebone_cape_setup(struct memory_accessor *mem_acc, void *context
-
- if (!strncmp("BB-BONE-LCD3-01", cape_config.partnumber, 15)) {
- pr_info("BeagleBone cape: initializing LCD cape\n");
-- bbtoys7lcd_init(0,0);
-+ bbtoys35lcd_init(0,0);
- pr_info("BeagleBone cape: initializing LCD cape touchscreen\n");
- tsc_init(0,0);
- beaglebone_tsadcpins_free = 0;
-diff --git a/drivers/video/da8xx-fb.c b/drivers/video/da8xx-fb.c
-index b01f15b..86b19ac 100644
---- a/drivers/video/da8xx-fb.c
-+++ b/drivers/video/da8xx-fb.c
-@@ -286,6 +286,20 @@ static struct da8xx_panel known_lcd_panels[] = {
- .pxl_clk = 56000000,
- .invert_pxl_clk = 0,
- },
-+ [4] = {
-+ /* CDTech S035Q01 */
-+ .name = "CDTech_S035Q01",
-+ .width = 320,
-+ .height = 240,
-+ .hfp = 58,
-+ .hbp = 21,
-+ .hsw = 47,
-+ .vfp = 23,
-+ .vbp = 11,
-+ .vsw = 2,
-+ .pxl_clk = 8000000,
-+ .invert_pxl_clk = 0,
-+ },
- };
-
- /* Enable the Raster Engine of the LCD Controller */
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0027-beaglebone-decrease-PWM-frequency-to-old-value-LCD7-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0027-beaglebone-decrease-PWM-frequency-to-old-value-LCD7-.patch
deleted file mode 100644
index 05439e6..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0027-beaglebone-decrease-PWM-frequency-to-old-value-LCD7-.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From b199c282abaee2188141c0885198466e8028f181 Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen at dominion.thruhere.net>
-Date: Tue, 17 Apr 2012 11:25:00 +0200
-Subject: [PATCH 27/79] beaglebone: decrease PWM frequency to old value, LCD7
- doesn't like it
-
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- arch/arm/mach-omap2/board-am335xevm.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index 127516f..4d5238d 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -138,7 +138,7 @@ static const struct display_panel disp_panel = {
- /* LCD backlight platform Data */
- #define AM335X_BACKLIGHT_MAX_BRIGHTNESS 100
- #define AM335X_BACKLIGHT_DEFAULT_BRIGHTNESS 50
--#define AM335X_PWM_PERIOD_NANO_SECONDS (5000 * 10)
-+#define AM335X_PWM_PERIOD_NANO_SECONDS (1000000 * 5)
-
- #define PWM_DEVICE_ID "ecap.0"
-
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0028-beaglebone-fix-ehrpwm-backlight.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0028-beaglebone-fix-ehrpwm-backlight.patch
deleted file mode 100644
index 066d499..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0028-beaglebone-fix-ehrpwm-backlight.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 4456663edfc37d478da19c13683b9e58833ca997 Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen at dominion.thruhere.net>
-Date: Tue, 17 Apr 2012 12:35:01 +0200
-Subject: [PATCH 28/79] beaglebone: fix ehrpwm backlight
-
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- arch/arm/mach-omap2/board-am335xevm.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index 4d5238d..24ed0b6 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -1436,6 +1436,7 @@ late_initcall(ecap0_init);
- static void enable_ehrpwm1(int evm_id, int profile)
- {
- ehrpwm_backlight_enable = true;
-+ am33xx_register_ehrpwm(1, &pwm_pdata[1]);
- }
-
- /* Setup pwm-backlight for bbtoys7lcd */
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0029-beaglebone-also-report-cape-revision.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0029-beaglebone-also-report-cape-revision.patch
deleted file mode 100644
index 03676a6..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0029-beaglebone-also-report-cape-revision.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From d79d7b027fa6f411a64d65d56d0421cde619f43c Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen at dominion.thruhere.net>
-Date: Tue, 17 Apr 2012 12:57:38 +0200
-Subject: [PATCH 29/79] beaglebone: also report cape revision
-
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- arch/arm/mach-omap2/board-am335xevm.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index 24ed0b6..a4e113c 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -2099,6 +2099,7 @@ static void beaglebone_cape_setup(struct memory_accessor *mem_acc, void *context
- int ret;
- char tmp[32];
- char name[32];
-+ char version[4];
- char manufacturer[32];
-
- /* get cape specific data */
-@@ -2121,8 +2122,9 @@ static void beaglebone_cape_setup(struct memory_accessor *mem_acc, void *context
-
- pr_info("BeagleBone cape EEPROM: found eeprom at address 0x%x\n", capecount + 0x53);
- snprintf(name, sizeof(cape_config.name) + 1, "%s", cape_config.name);
-+ snprintf(version, sizeof(cape_config.version) + 1, "%s", cape_config.version);
- snprintf(manufacturer, sizeof(cape_config.manufacturer) + 1, "%s", cape_config.manufacturer);
-- pr_info("BeagleBone cape: %s %s\n", manufacturer, name);
-+ pr_info("BeagleBone cape: %s %s, revision %s\n", manufacturer, name, version);
- snprintf(tmp, sizeof(cape_config.partnumber) + 1, "%s", cape_config.partnumber);
- pr_info("BeagleBone cape partnumber: %s\n", tmp);
-
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0030-beaglebone-don-t-compare-undefined-characters-it-mak.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0030-beaglebone-don-t-compare-undefined-characters-it-mak.patch
deleted file mode 100644
index a4409d1..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0030-beaglebone-don-t-compare-undefined-characters-it-mak.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From bb7bebd5eb51467ff920773cc8dd321102b8d528 Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen at dominion.thruhere.net>
-Date: Thu, 19 Apr 2012 07:55:55 +0200
-Subject: [PATCH 30/79] beaglebone: don't compare undefined characters, it
- makes strncomp fail
-
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- arch/arm/mach-omap2/board-am335xevm.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index a4e113c..f2f03b6 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -2154,7 +2154,7 @@ static void beaglebone_cape_setup(struct memory_accessor *mem_acc, void *context
- beaglebone_lcd3_keys_init(0,0);
- }
-
-- if (!strncmp("BB-BONE-VGA-01", cape_config.partnumber, 15)) {
-+ if (!strncmp("BB-BONE-VGA-01", cape_config.partnumber, 14)) {
- pr_info("BeagleBone cape: initializing VGA cape\n");
- dvi_init(0,0);
- }
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0031-beaglebone-fix-3.5-cape-support.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0031-beaglebone-fix-3.5-cape-support.patch
deleted file mode 100644
index 4a91e71..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0031-beaglebone-fix-3.5-cape-support.patch
+++ /dev/null
@@ -1,73 +0,0 @@
-From 46f31bc6d2e3c44f0591216db3151408a0d97133 Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen at dominion.thruhere.net>
-Date: Thu, 19 Apr 2012 14:33:53 +0200
-Subject: [PATCH 31/79] beaglebone: fix 3.5" cape support
-
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- arch/arm/mach-omap2/board-am335xevm.c | 42 ++++++++++++++++++++++++++++++++-
- 1 file changed, 41 insertions(+), 1 deletion(-)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index f2f03b6..3adc4ac 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -599,6 +599,46 @@ static struct pinmux_config dvi_pin_mux[] = {
- {NULL, 0},
- };
-
-+/* Module pin mux for Beagleboardtoys 3.5" LCD cape */
-+static struct pinmux_config bbtoys35_pin_mux[] = {
-+ {"lcd_data0.lcd_data0", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-+ | AM33XX_PULL_DISA},
-+ {"lcd_data1.lcd_data1", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-+ | AM33XX_PULL_DISA},
-+ {"lcd_data2.lcd_data2", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-+ | AM33XX_PULL_DISA},
-+ {"lcd_data3.lcd_data3", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-+ | AM33XX_PULL_DISA},
-+ {"lcd_data4.lcd_data4", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-+ | AM33XX_PULL_DISA},
-+ {"lcd_data5.lcd_data5", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-+ | AM33XX_PULL_DISA},
-+ {"lcd_data6.lcd_data6", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-+ | AM33XX_PULL_DISA},
-+ {"lcd_data7.lcd_data7", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-+ | AM33XX_PULL_DISA},
-+ {"lcd_data8.lcd_data8", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-+ | AM33XX_PULL_DISA},
-+ {"lcd_data9.lcd_data9", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-+ | AM33XX_PULL_DISA},
-+ {"lcd_data10.lcd_data10", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-+ | AM33XX_PULL_DISA},
-+ {"lcd_data11.lcd_data11", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-+ | AM33XX_PULL_DISA},
-+ {"lcd_data12.lcd_data12", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-+ | AM33XX_PULL_DISA},
-+ {"lcd_data13.lcd_data13", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-+ | AM33XX_PULL_DISA},
-+ {"lcd_data14.lcd_data14", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-+ | AM33XX_PULL_DISA},
-+ {"lcd_data15.lcd_data15", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-+ | AM33XX_PULL_DISA},
-+ {"lcd_vsync.lcd_vsync", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
-+ {"lcd_hsync.lcd_hsync", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
-+ {"lcd_pclk.lcd_pclk", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
-+ {"lcd_ac_bias_en.lcd_ac_bias_en", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
-+ {NULL, 0},
-+};
- /* Module pin mux for Beagleboardtoys 7" LCD cape */
- static struct pinmux_config bbtoys7_pin_mux[] = {
- {"lcd_data0.lcd_data0", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-@@ -1514,7 +1554,7 @@ static void bbtoys7lcd_init(int evm_id, int profile)
-
- static void bbtoys35lcd_init(int evm_id, int profile)
- {
-- setup_pin_mux(bbtoys7_pin_mux);
-+ setup_pin_mux(bbtoys35_pin_mux);
-
- // we are being stupid and setting pixclock from here instead of da8xx-fb.c
- if (conf_disp_pll(16000000)) {
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0032-beaglebone-connect-batterycape-GPIO-to-gpio-charger.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0032-beaglebone-connect-batterycape-GPIO-to-gpio-charger.patch
deleted file mode 100644
index 6fe7c89..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0032-beaglebone-connect-batterycape-GPIO-to-gpio-charger.patch
+++ /dev/null
@@ -1,84 +0,0 @@
-From d8f8e88b0ea9cf4e94a601d5ee2601ee8f1b6d52 Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen at dominion.thruhere.net>
-Date: Wed, 25 Apr 2012 12:35:07 +0200
-Subject: [PATCH 32/79] beaglebone: connect batterycape GPIO to gpio-charger
-
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- arch/arm/mach-omap2/board-am335xevm.c | 46 ++++++++++++++++++++++++++++++++-
- 1 file changed, 45 insertions(+), 1 deletion(-)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index 3adc4ac..717bb8c 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -135,6 +135,36 @@ static const struct display_panel disp_panel = {
- COLOR_ACTIVE,
- };
-
-+
-+#if defined(CONFIG_CHARGER_GPIO)
-+
-+#include <linux/power_supply.h>
-+#include <linux/power/gpio-charger.h>
-+
-+/* charger */
-+static char *beaglebone_batteries[] = {
-+ "battery",
-+};
-+
-+static struct gpio_charger_platform_data beaglebone_charger_pdata = {
-+ .name = "battery-cape",
-+ .type = POWER_SUPPLY_TYPE_BATTERY,
-+ .gpio = GPIO_TO_PIN(1,16),
-+ .gpio_active_low = 0,
-+ .supplied_to = beaglebone_batteries,
-+ .num_supplicants = ARRAY_SIZE(beaglebone_batteries),
-+};
-+
-+static struct platform_device beaglebone_charger_device = {
-+ .name = "gpio-charger",
-+ .dev = {
-+ .platform_data = &beaglebone_charger_pdata,
-+ },
-+};
-+
-+#endif /* gpio-charger */
-+
-+
- /* LCD backlight platform Data */
- #define AM335X_BACKLIGHT_MAX_BRIGHTNESS 100
- #define AM335X_BACKLIGHT_DEFAULT_BRIGHTNESS 50
-@@ -506,6 +536,13 @@ static struct pinmux_config haptics_pin_mux[] = {
- {NULL, 0},
- };
-
-+/* Module pin mux for battery cape */
-+static struct pinmux_config batterycape_pin_mux[] = {
-+ {"gpmc_a0.gpio1_16", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT},
-+ {NULL, 0},
-+};
-+
-+
- /* Module pin mux for LCDC */
- static struct pinmux_config lcdc_pin_mux[] = {
- {"lcd_data0.lcd_data0", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-@@ -2203,7 +2240,14 @@ static void beaglebone_cape_setup(struct memory_accessor *mem_acc, void *context
- pr_info("BeagleBone cape: initializing battery cape\n");
- // gpio1_6, P9_15 lowbat output
- // AIN4, P9_33 vbat
-- //foo_init(0,0);
-+ setup_pin_mux(batterycape_pin_mux);
-+ #if defined(CONFIG_CHARGER_GPIO)
-+ int err;
-+ err = platform_device_register(&beaglebone_charger_device);
-+ if (err)
-+ pr_err("failed to register BeagleBone battery cape gpio\n");
-+
-+ #endif
- }
-
- if (!strncmp("BB-BONE-SERL", cape_config.partnumber, 12)) {
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0033-beaglebone-add-support-for-CAN-and-RS232-cape.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0033-beaglebone-add-support-for-CAN-and-RS232-cape.patch
deleted file mode 100644
index a4eaf50..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0033-beaglebone-add-support-for-CAN-and-RS232-cape.patch
+++ /dev/null
@@ -1,67 +0,0 @@
-From f9b6989bb732e354c174da80052abbba49f238dd Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen at dominion.thruhere.net>
-Date: Fri, 4 May 2012 13:19:45 +0200
-Subject: [PATCH 33/79] beaglebone: add support for CAN and RS232 cape
-
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- arch/arm/mach-omap2/board-am335xevm.c | 36 +++++++++++++++++++++++++++------
- 1 file changed, 30 insertions(+), 6 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index 717bb8c..6e7b203 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -953,6 +953,18 @@ static struct pinmux_config tt3201_pin_mux[] = {
- {NULL, 0},
- };
-
-+static struct pinmux_config uart1dcan1_pin_mux[] = {
-+ {"uart1_rxd.d_can1_tx", OMAP_MUX_MODE2 | AM33XX_PIN_OUTPUT },
-+ {"uart1_txd.d_can1_rx", OMAP_MUX_MODE2 | AM33XX_PIN_INPUT_PULLUP },
-+ {NULL, 0},
-+};
-+
-+static struct pinmux_config uart1_pin_mux[] = {
-+ {"uart1_txd.uart1_txd", OMAP_MUX_MODE0 | AM33XX_PULL_ENBL},
-+ {"uart1_rxd.uart1_rxd", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
-+ {NULL, 0},
-+};
-+
- /* Module pin mux for uart2 */
- static struct pinmux_config uart2_pin_mux[] = {
- {"spi0_sclk.uart2_rxd", OMAP_MUX_MODE1 | AM33XX_SLEWCTRL_SLOW |
-@@ -2250,12 +2262,24 @@ static void beaglebone_cape_setup(struct memory_accessor *mem_acc, void *context
- #endif
- }
-
-- if (!strncmp("BB-BONE-SERL", cape_config.partnumber, 12)) {
-- pr_info("BeagleBone cape: initializing serial cape\n");
-- // 01 -> CAN
-- // 02 -> Profibus
-- // 03 -> RS232
-- // 04 -> RS485
-+ if (!strncmp("BB-BONE-SERL-01", cape_config.partnumber, 15)) {
-+ pr_info("BeagleBone cape: initializing CAN cape\n");
-+ setup_pin_mux(uart1dcan1_pin_mux);
-+ am33xx_d_can_init(1);
-+ }
-+ if (!strncmp("BB-BONE-SERL-02", cape_config.partnumber, 15)) {
-+ pr_info("BeagleBone cape: not initializing Profibus cape\n");
-+ // gpio1_0
-+ // gpio1_4
-+ //foo_init(0,0);
-+ }
-+ if (!strncmp("BB-BONE-SERL-03", cape_config.partnumber, 15)) {
-+ pr_info("BeagleBone cape: initializing RS232 cape\n");
-+ pr_info("BeagleBone cape: only uart1 is supported!\n");
-+ setup_pin_mux(uart1_pin_mux);
-+ }
-+ if (!strncmp("BB-BONE-SERL-04", cape_config.partnumber, 15)) {
-+ pr_info("BeagleBone cape: not initializing RS485 cape\n");
- //foo_init(0,0);
- }
-
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0034-beaglebone-add-support-for-DVI-rev.-A2-capes.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0034-beaglebone-add-support-for-DVI-rev.-A2-capes.patch
deleted file mode 100644
index 6eceb51..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0034-beaglebone-add-support-for-DVI-rev.-A2-capes.patch
+++ /dev/null
@@ -1,242 +0,0 @@
-From 79504e3e113ac68335eb899322a56f3a72462b08 Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen at dominion.thruhere.net>
-Date: Thu, 19 Apr 2012 14:23:06 +0200
-Subject: [PATCH 34/79] beaglebone: add support for DVI rev. A2 capes
-
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- arch/arm/mach-omap2/board-am335xevm.c | 150 ++++++++-------------------------
- 1 file changed, 35 insertions(+), 115 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index 6e7b203..e02c0b6 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -545,38 +545,6 @@ static struct pinmux_config batterycape_pin_mux[] = {
-
- /* Module pin mux for LCDC */
- static struct pinmux_config lcdc_pin_mux[] = {
-- {"lcd_data0.lcd_data0", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-- | AM33XX_PULL_DISA},
-- {"lcd_data1.lcd_data1", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-- | AM33XX_PULL_DISA},
-- {"lcd_data2.lcd_data2", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-- | AM33XX_PULL_DISA},
-- {"lcd_data3.lcd_data3", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-- | AM33XX_PULL_DISA},
-- {"lcd_data4.lcd_data4", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-- | AM33XX_PULL_DISA},
-- {"lcd_data5.lcd_data5", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-- | AM33XX_PULL_DISA},
-- {"lcd_data6.lcd_data6", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-- | AM33XX_PULL_DISA},
-- {"lcd_data7.lcd_data7", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-- | AM33XX_PULL_DISA},
-- {"lcd_data8.lcd_data8", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-- | AM33XX_PULL_DISA},
-- {"lcd_data9.lcd_data9", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-- | AM33XX_PULL_DISA},
-- {"lcd_data10.lcd_data10", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-- | AM33XX_PULL_DISA},
-- {"lcd_data11.lcd_data11", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-- | AM33XX_PULL_DISA},
-- {"lcd_data12.lcd_data12", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-- | AM33XX_PULL_DISA},
-- {"lcd_data13.lcd_data13", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-- | AM33XX_PULL_DISA},
-- {"lcd_data14.lcd_data14", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-- | AM33XX_PULL_DISA},
-- {"lcd_data15.lcd_data15", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-- | AM33XX_PULL_DISA},
- {"gpmc_ad8.lcd_data16", OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT},
- {"gpmc_ad9.lcd_data17", OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT},
- {"gpmc_ad10.lcd_data18", OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT},
-@@ -585,15 +553,11 @@ static struct pinmux_config lcdc_pin_mux[] = {
- {"gpmc_ad13.lcd_data21", OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT},
- {"gpmc_ad14.lcd_data22", OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT},
- {"gpmc_ad15.lcd_data23", OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT},
-- {"lcd_vsync.lcd_vsync", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
-- {"lcd_hsync.lcd_hsync", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
-- {"lcd_pclk.lcd_pclk", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
-- {"lcd_ac_bias_en.lcd_ac_bias_en", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
- {NULL, 0},
- };
-
--/* Module pin mux for Beagleboardtoys DVI cape */
--static struct pinmux_config dvi_pin_mux[] = {
-+
-+static struct pinmux_config lcdc16_pin_mux[] = {
- {"lcd_data0.lcd_data0", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
- | AM33XX_PULL_DISA},
- {"lcd_data1.lcd_data1", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-@@ -630,90 +594,31 @@ static struct pinmux_config dvi_pin_mux[] = {
- {"lcd_hsync.lcd_hsync", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
- {"lcd_pclk.lcd_pclk", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
- {"lcd_ac_bias_en.lcd_ac_bias_en", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
-+ {NULL, 0},
-+};
-+
-+
-+/* Module pin mux for Beagleboardtoys DVI cape */
-+static struct pinmux_config dvia1_pin_mux[] = {
- {"gpmc_a2.rgmii2_td3", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, // USR0 LED
- {"gpmc_a3.rgmii2_td2", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, // USR1 LED
- {"gpmc_ad7.gpmc_ad7", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, // DVI PDn
- {NULL, 0},
- };
-
-+static struct pinmux_config dvia2_pin_mux[] = {
-+ {"gpmc_a2.rgmii2_td3", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, // USR0 LED
-+ {"gpmc_a3.rgmii2_td2", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, // USR1 LED
-+ {"gpmc_csn2.gpio1_31", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, // DVI PDn
-+ {NULL, 0},
-+};
-+
- /* Module pin mux for Beagleboardtoys 3.5" LCD cape */
- static struct pinmux_config bbtoys35_pin_mux[] = {
-- {"lcd_data0.lcd_data0", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-- | AM33XX_PULL_DISA},
-- {"lcd_data1.lcd_data1", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-- | AM33XX_PULL_DISA},
-- {"lcd_data2.lcd_data2", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-- | AM33XX_PULL_DISA},
-- {"lcd_data3.lcd_data3", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-- | AM33XX_PULL_DISA},
-- {"lcd_data4.lcd_data4", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-- | AM33XX_PULL_DISA},
-- {"lcd_data5.lcd_data5", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-- | AM33XX_PULL_DISA},
-- {"lcd_data6.lcd_data6", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-- | AM33XX_PULL_DISA},
-- {"lcd_data7.lcd_data7", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-- | AM33XX_PULL_DISA},
-- {"lcd_data8.lcd_data8", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-- | AM33XX_PULL_DISA},
-- {"lcd_data9.lcd_data9", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-- | AM33XX_PULL_DISA},
-- {"lcd_data10.lcd_data10", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-- | AM33XX_PULL_DISA},
-- {"lcd_data11.lcd_data11", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-- | AM33XX_PULL_DISA},
-- {"lcd_data12.lcd_data12", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-- | AM33XX_PULL_DISA},
-- {"lcd_data13.lcd_data13", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-- | AM33XX_PULL_DISA},
-- {"lcd_data14.lcd_data14", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-- | AM33XX_PULL_DISA},
-- {"lcd_data15.lcd_data15", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-- | AM33XX_PULL_DISA},
-- {"lcd_vsync.lcd_vsync", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
-- {"lcd_hsync.lcd_hsync", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
-- {"lcd_pclk.lcd_pclk", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
-- {"lcd_ac_bias_en.lcd_ac_bias_en", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
- {NULL, 0},
- };
- /* Module pin mux for Beagleboardtoys 7" LCD cape */
- static struct pinmux_config bbtoys7_pin_mux[] = {
-- {"lcd_data0.lcd_data0", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-- | AM33XX_PULL_DISA},
-- {"lcd_data1.lcd_data1", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-- | AM33XX_PULL_DISA},
-- {"lcd_data2.lcd_data2", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-- | AM33XX_PULL_DISA},
-- {"lcd_data3.lcd_data3", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-- | AM33XX_PULL_DISA},
-- {"lcd_data4.lcd_data4", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-- | AM33XX_PULL_DISA},
-- {"lcd_data5.lcd_data5", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-- | AM33XX_PULL_DISA},
-- {"lcd_data6.lcd_data6", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-- | AM33XX_PULL_DISA},
-- {"lcd_data7.lcd_data7", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-- | AM33XX_PULL_DISA},
-- {"lcd_data8.lcd_data8", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-- | AM33XX_PULL_DISA},
-- {"lcd_data9.lcd_data9", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-- | AM33XX_PULL_DISA},
-- {"lcd_data10.lcd_data10", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-- | AM33XX_PULL_DISA},
-- {"lcd_data11.lcd_data11", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-- | AM33XX_PULL_DISA},
-- {"lcd_data12.lcd_data12", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-- | AM33XX_PULL_DISA},
-- {"lcd_data13.lcd_data13", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-- | AM33XX_PULL_DISA},
-- {"lcd_data14.lcd_data14", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-- | AM33XX_PULL_DISA},
-- {"lcd_data15.lcd_data15", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
-- | AM33XX_PULL_DISA},
-- {"lcd_vsync.lcd_vsync", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
-- {"lcd_hsync.lcd_hsync", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
-- {"lcd_pclk.lcd_pclk", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
-- {"lcd_ac_bias_en.lcd_ac_bias_en", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
- {"ecap0_in_pwm0_out.gpio0_7", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, // AVDD_EN
- {"gpmc_a2.ehrpwm1A", OMAP_MUX_MODE6 | AM33XX_PIN_OUTPUT}, // Backlight
- {NULL, 0},
-@@ -1567,6 +1472,7 @@ out:
- static void lcdc_init(int evm_id, int profile)
- {
-
-+ setup_pin_mux(lcdc16_pin_mux);
- setup_pin_mux(lcdc_pin_mux);
-
- if (conf_disp_pll(300000000)) {
-@@ -1584,6 +1490,7 @@ static void lcdc_init(int evm_id, int profile)
-
- static void bbtoys7lcd_init(int evm_id, int profile)
- {
-+ setup_pin_mux(lcdc16_pin_mux);
- setup_pin_mux(bbtoys7_pin_mux);
- gpio_request(BEAGLEBONE_LCD_AVDD_EN, "BONE_LCD_AVDD_EN");
- gpio_direction_output(BEAGLEBONE_LCD_AVDD_EN, 1);
-@@ -1603,6 +1510,7 @@ static void bbtoys7lcd_init(int evm_id, int profile)
-
- static void bbtoys35lcd_init(int evm_id, int profile)
- {
-+ setup_pin_mux(lcdc16_pin_mux);
- setup_pin_mux(bbtoys35_pin_mux);
-
- // we are being stupid and setting pixclock from here instead of da8xx-fb.c
-@@ -1618,13 +1526,12 @@ static void bbtoys35lcd_init(int evm_id, int profile)
- return;
- }
-
--#define BEAGLEBONEDVI_PDn GPIO_TO_PIN(1, 7)
-+#define BEAGLEBONEDVI_PDn_A1 GPIO_TO_PIN(1, 7)
-+#define BEAGLEBONEDVI_PDn_A2 GPIO_TO_PIN(1, 31)
-
- static void dvi_init(int evm_id, int profile)
- {
-- setup_pin_mux(dvi_pin_mux);
-- gpio_request(BEAGLEBONEDVI_PDn, "DVI_PDn");
-- gpio_direction_output(BEAGLEBONEDVI_PDn, 1);
-+ setup_pin_mux(lcdc16_pin_mux);
-
- // we are being stupid and setting pixclock from here instead of da8xx-fb.c
- if (conf_disp_pll(560000000)) {
-@@ -2218,8 +2125,21 @@ static void beaglebone_cape_setup(struct memory_accessor *mem_acc, void *context
- pr_info("BeagleBone cape partnumber: %s\n", tmp);
-
- if (!strncmp("BB-BONE-DVID-01", cape_config.partnumber, 15)) {
-- pr_info("BeagleBone cape: initializing DVI cape\n");
-+ pr_info("BeagleBone cape: initializing DVI cape\n");
-+
-+ if (!strncmp("00A1", cape_config.version, 4) || !strncmp("000A", cape_config.version, 4)) {
-+ pr_info("BeagleBone cape: DVI init for revision A1 or older\n");
-+ setup_pin_mux(dvia1_pin_mux);
-+ gpio_request(BEAGLEBONEDVI_PDn_A1, "DVI_PDn");
-+ gpio_direction_output(BEAGLEBONEDVI_PDn_A1, 1);
- dvi_init(0,0);
-+ } else {
-+ pr_info("BeagleBone cape: DVI init for revision A2 or newer\n");
-+ setup_pin_mux(dvia2_pin_mux);
-+ gpio_request(BEAGLEBONEDVI_PDn_A2, "DVI_PDn");
-+ gpio_direction_output(BEAGLEBONEDVI_PDn_A2, 1);
-+ dvi_init(0,0);
-+ }
- }
- if (!strncmp("BB-BONE-LCD7-01", cape_config.partnumber, 15)) {
- pr_info("BeagleBone cape: initializing LCD cape\n");
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0035-beaglebone-enable-LEDs-for-DVI-LCD3-and-LCD7-capes.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0035-beaglebone-enable-LEDs-for-DVI-LCD3-and-LCD7-capes.patch
deleted file mode 100644
index 622d76b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0035-beaglebone-enable-LEDs-for-DVI-LCD3-and-LCD7-capes.patch
+++ /dev/null
@@ -1,240 +0,0 @@
-From d54dc11ed06da5b83c2c99b404483eefd13d2074 Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen at dominion.thruhere.net>
-Date: Fri, 11 May 2012 13:08:24 +0200
-Subject: [PATCH 35/79] beaglebone: enable LEDs for DVI, LCD3 and LCD7 capes
-
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- arch/arm/mach-omap2/board-am335xevm.c | 140 ++++++++++++++++++++++++++++++---
- 1 file changed, 131 insertions(+), 9 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index e02c0b6..8db33b9 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -496,6 +496,7 @@ static bool beaglebone_cape_detected;
- /* keep track of ADC pin usage */
- static int capecount = 0;
- static bool beaglebone_tsadcpins_free = 1;
-+static bool beaglebone_leds_free = 1;
-
-
- #define GP_EVM_REV_IS_1_0 0x1
-@@ -600,23 +601,26 @@ static struct pinmux_config lcdc16_pin_mux[] = {
-
- /* Module pin mux for Beagleboardtoys DVI cape */
- static struct pinmux_config dvia1_pin_mux[] = {
-- {"gpmc_a2.rgmii2_td3", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, // USR0 LED
-- {"gpmc_a3.rgmii2_td2", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, // USR1 LED
-+ {"gpmc_a2.gpio1_18", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, // USR0 LED
-+ {"gpmc_a3.gpio1_19", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, // USR1 LED
- {"gpmc_ad7.gpmc_ad7", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, // DVI PDn
- {NULL, 0},
- };
-
- static struct pinmux_config dvia2_pin_mux[] = {
-- {"gpmc_a2.rgmii2_td3", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, // USR0 LED
-- {"gpmc_a3.rgmii2_td2", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, // USR1 LED
-+ {"gpmc_a2.gpio1_18", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, // USR0 LED
-+ {"gpmc_a3.gpio1_19", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, // USR1 LED
- {"gpmc_csn2.gpio1_31", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, // DVI PDn
- {NULL, 0},
- };
-
- /* Module pin mux for Beagleboardtoys 3.5" LCD cape */
- static struct pinmux_config bbtoys35_pin_mux[] = {
-+ {"gpmc_a2.gpio1_18", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, // USR0 LED
-+ {"gpmc_a3.gpio1_19", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, // USR1 LED
- {NULL, 0},
- };
-+
- /* Module pin mux for Beagleboardtoys 7" LCD cape */
- static struct pinmux_config bbtoys7_pin_mux[] = {
- {"ecap0_in_pwm0_out.gpio0_7", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, // AVDD_EN
-@@ -1018,6 +1022,7 @@ static struct pinmux_config lcd7_keys_pin_mux[] = {
- {"gpmc_a3.gpio1_19", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT},
- {"mcasp0_axr0.gpio3_16", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT},
- {"mcasp0_fsr.gpio3_19", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT},
-+ {"gpmc_ben1.gpio1_28", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT},
- {NULL, 0},
- };
-
-@@ -1327,6 +1332,94 @@ static struct platform_device dvi_leds_gpio = {
- },
- };
-
-+#define BEAGLEBONELCD3_USR0_LED GPIO_TO_PIN(1, 18)
-+#define BEAGLEBONELCD3_USR1_LED GPIO_TO_PIN(1, 19)
-+
-+static struct gpio_led lcd3_gpio_leds[] = {
-+ {
-+ .name = "beaglebone::usr0",
-+ .default_trigger = "heartbeat",
-+ .gpio = BEAGLEBONE_USR1_LED,
-+ },
-+ {
-+ .name = "beaglebone::usr1",
-+ .default_trigger = "mmc0",
-+ .gpio = BEAGLEBONE_USR2_LED,
-+ },
-+ {
-+ .name = "beaglebone::usr2",
-+ .gpio = BEAGLEBONE_USR3_LED,
-+ },
-+ {
-+ .name = "beaglebone::usr3",
-+ .gpio = BEAGLEBONE_USR4_LED,
-+ },
-+ {
-+ .name = "lcd3::usr0",
-+ .default_trigger = "heartbeat",
-+ .gpio = BEAGLEBONELCD3_USR0_LED,
-+ },
-+ {
-+ .name = "lcd3::usr1",
-+ .default_trigger = "mmc0",
-+ .gpio = BEAGLEBONELCD3_USR1_LED,
-+ },
-+};
-+
-+static struct gpio_led_platform_data lcd3_gpio_led_info = {
-+ .leds = lcd3_gpio_leds,
-+ .num_leds = ARRAY_SIZE(lcd3_gpio_leds),
-+};
-+
-+static struct platform_device lcd3_leds_gpio = {
-+ .name = "leds-gpio",
-+ .id = -1,
-+ .dev = {
-+ .platform_data = &lcd3_gpio_led_info,
-+ },
-+};
-+
-+#define BEAGLEBONELCD7_USR_LED GPIO_TO_PIN(1, 28)
-+
-+static struct gpio_led lcd7_gpio_leds[] = {
-+ {
-+ .name = "beaglebone::usr0",
-+ .default_trigger = "heartbeat",
-+ .gpio = BEAGLEBONE_USR1_LED,
-+ },
-+ {
-+ .name = "beaglebone::usr1",
-+ .default_trigger = "mmc0",
-+ .gpio = BEAGLEBONE_USR2_LED,
-+ },
-+ {
-+ .name = "beaglebone::usr2",
-+ .gpio = BEAGLEBONE_USR3_LED,
-+ },
-+ {
-+ .name = "beaglebone::usr3",
-+ .gpio = BEAGLEBONE_USR4_LED,
-+ },
-+ {
-+ .name = "lcd7::usr",
-+ .default_trigger = "heartbeat",
-+ .gpio = BEAGLEBONELCD7_USR_LED,
-+ },
-+};
-+
-+static struct gpio_led_platform_data lcd7_gpio_led_info = {
-+ .leds = lcd7_gpio_leds,
-+ .num_leds = ARRAY_SIZE(lcd7_gpio_leds),
-+};
-+
-+static struct platform_device lcd7_leds_gpio = {
-+ .name = "leds-gpio",
-+ .id = -1,
-+ .dev = {
-+ .platform_data = &lcd7_gpio_led_info,
-+ },
-+};
-+
- static struct pinmux_config bone_pin_mux[] = {
- /* User LED gpios (gpio1_21 to gpio1_24) */
- {"gpmc_a5.rgmii2_td0", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT},
-@@ -1595,6 +1688,22 @@ static void dvileds_init(int evm_id, int profile )
- pr_err("failed to register BeagleBone DVI cape LEDS\n");
- }
-
-+static void lcd3leds_init(int evm_id, int profile )
-+{
-+ int err;
-+ err = platform_device_register(&lcd3_leds_gpio);
-+ if (err)
-+ pr_err("failed to register BeagleBone LCD cape LEDs\n");
-+}
-+
-+static void lcd7leds_init(int evm_id, int profile )
-+{
-+ int err;
-+ err = platform_device_register(&lcd7_leds_gpio);
-+ if (err)
-+ pr_err("failed to register BeagleBone LCD cape LED\n");
-+}
-+
- static void bonew1_gpio_init(int evm_id, int profile )
- {
- int err;
-@@ -2102,10 +2211,15 @@ static void beaglebone_cape_setup(struct memory_accessor *mem_acc, void *context
- ret = mem_acc->read(mem_acc, (char *)&cape_config, 0, sizeof(cape_config));
- if (ret != sizeof(cape_config)) {
- pr_warning("BeagleBone cape EEPROM: could not read eeprom at address 0x%x\n", capecount + 0x53);
-- if ((capecount > 3) && (beaglebone_tsadcpins_free == 1)) {
-- pr_info("BeagleBone cape: exporting ADC pins to sysfs\n");
-- bone_tsc_init(0,0);
-- beaglebone_tsadcpins_free = 0;
-+ if (capecount > 3) {
-+ if (beaglebone_tsadcpins_free == 1) {
-+ pr_info("BeagleBone cape: exporting ADC pins to sysfs\n");
-+ bone_tsc_init(0,0);
-+ beaglebone_tsadcpins_free = 0;
-+ }
-+ if (beaglebone_leds_free == 1) {
-+ boneleds_init(0,0);
-+ }
- }
- return;
- }
-@@ -2127,6 +2241,9 @@ static void beaglebone_cape_setup(struct memory_accessor *mem_acc, void *context
- if (!strncmp("BB-BONE-DVID-01", cape_config.partnumber, 15)) {
- pr_info("BeagleBone cape: initializing DVI cape\n");
-
-+ beaglebone_leds_free = 0;
-+ dvileds_init(0,0);
-+
- if (!strncmp("00A1", cape_config.version, 4) || !strncmp("000A", cape_config.version, 4)) {
- pr_info("BeagleBone cape: DVI init for revision A1 or older\n");
- setup_pin_mux(dvia1_pin_mux);
-@@ -2151,6 +2268,10 @@ static void beaglebone_cape_setup(struct memory_accessor *mem_acc, void *context
- beaglebone_tsadcpins_free = 0;
- pr_info("BeagleBone cape: Registering gpio-keys for LCD cape\n");
- beaglebone_lcd7_keys_init(0,0);
-+
-+ // A1 or newer
-+ beaglebone_leds_free = 0;
-+ lcd7leds_init(0,0);
- }
-
- if (!strncmp("BB-BONE-LCD3-01", cape_config.partnumber, 15)) {
-@@ -2161,6 +2282,8 @@ static void beaglebone_cape_setup(struct memory_accessor *mem_acc, void *context
- beaglebone_tsadcpins_free = 0;
- pr_info("BeagleBone cape: Registering gpio-keys for LCD cape\n");
- beaglebone_lcd3_keys_init(0,0);
-+ beaglebone_leds_free = 0;
-+ lcd3leds_init(0,0);
- }
-
- if (!strncmp("BB-BONE-VGA-01", cape_config.partnumber, 14)) {
-@@ -2659,7 +2782,6 @@ static struct evm_dev_cfg beaglebone_dev_cfg[] = {
- {usb1_init, DEV_ON_BASEBOARD, PROFILE_NONE},
- {i2c2_init, DEV_ON_BASEBOARD, PROFILE_NONE},
- {mmc0_init, DEV_ON_BASEBOARD, PROFILE_NONE},
-- {boneleds_init, DEV_ON_BASEBOARD, PROFILE_ALL},
- {bonew1_gpio_init, DEV_ON_BASEBOARD, PROFILE_ALL},
- {NULL, 0, 0},
- };
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0036-Beaglebone-Fixed-compiletime-warnings.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0036-Beaglebone-Fixed-compiletime-warnings.patch
deleted file mode 100644
index e4bc851..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0036-Beaglebone-Fixed-compiletime-warnings.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From 402cc5ad4f97373171cd7e1cfe17ad5165a8c42c Mon Sep 17 00:00:00 2001
-From: Bas Laarhoven <sjml at xs4all.nl>
-Date: Sun, 13 May 2012 18:06:24 +0200
-Subject: [PATCH 36/79] Beaglebone: Fixed compiletime warnings.
-
-Signed-off-by: Bas Laarhoven <sjml at xs4all.nl>
----
- arch/arm/mach-omap2/board-am335xevm.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index 8db33b9..b48e0fd 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -41,6 +41,7 @@
- #include <linux/opp.h>
- #include <linux/w1-gpio.h>
- #include <linux/can/platform/mcp251x.h>
-+#include <linux/input/ti_tscadc.h>
-
- /* LCD controller is similar to DA850 */
- #include <video/da8xx-fb.h>
-@@ -300,7 +301,6 @@ struct da8xx_lcdc_platform_data dvi_pdata = {
- };
-
- /* TSc controller */
--#include <linux/input/ti_tscadc.h>
- #include <linux/lis3lv02d.h>
-
- /* TSc controller */
-@@ -2200,13 +2200,13 @@ static void tt3201_init(int evm_id, int profile)
- }
- static void beaglebone_cape_setup(struct memory_accessor *mem_acc, void *context)
- {
-- capecount++;
- int ret;
- char tmp[32];
- char name[32];
- char version[4];
- char manufacturer[32];
-
-+ capecount++;
- /* get cape specific data */
- ret = mem_acc->read(mem_acc, (char *)&cape_config, 0, sizeof(cape_config));
- if (ret != sizeof(cape_config)) {
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0037-Beaglebone-Added-missing-termination-record-to-bone_.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0037-Beaglebone-Added-missing-termination-record-to-bone_.patch
deleted file mode 100644
index a042216..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0037-Beaglebone-Added-missing-termination-record-to-bone_.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From ae194fe34a83ae3198010fe20b60308e03e46c61 Mon Sep 17 00:00:00 2001
-From: Bas Laarhoven <sjml at xs4all.nl>
-Date: Sun, 13 May 2012 18:18:52 +0200
-Subject: [PATCH 37/79] Beaglebone: Added missing termination record to
- bone_pin_mux data.
-
-Signed-off-by: Bas Laarhoven <sjml at xs4all.nl>
----
- arch/arm/mach-omap2/board-am335xevm.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index b48e0fd..7dbeac6 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -1428,6 +1428,7 @@ static struct pinmux_config bone_pin_mux[] = {
- {"gpmc_a8.rgmii2_rd3", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT},
- /* Grounding gpio1_6 (pin 3 Conn A) signals bone tester to start diag tests */
- {"gpmc_ad6.gpio1_6", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT_PULLUP},
-+ {NULL, 0},
- };
-
- /* Module pin mux for eCAP0 */
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0038-board-am335xevm.c-Beaglebone-expose-all-pwms-through.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0038-board-am335xevm.c-Beaglebone-expose-all-pwms-through.patch
deleted file mode 100644
index 3615878..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0038-board-am335xevm.c-Beaglebone-expose-all-pwms-through.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From 3bfb8f832b4fb3685755ba893a464865ba1cb824 Mon Sep 17 00:00:00 2001
-From: Rob Kellett <r-kellett at ti.com>
-Date: Mon, 14 May 2012 09:35:35 +0100
-Subject: [PATCH 38/79] board-am335xevm.c: Beaglebone - expose all pwms
- through sysfs
-
----
- arch/arm/mach-omap2/board-am335xevm.c | 20 +++++++++++++++++++-
- 1 file changed, 19 insertions(+), 1 deletion(-)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index 7dbeac6..c9ee0a2 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -1509,6 +1509,16 @@ static struct pwmss_platform_data pwm_pdata[3] = {
- },
- };
-
-+static void register_all_pwms(void)
-+{
-+ am33xx_register_ehrpwm(0, &pwm_pdata[0]);
-+ am33xx_register_ehrpwm(1, &pwm_pdata[1]);
-+ am33xx_register_ehrpwm(2, &pwm_pdata[2]);
-+ am33xx_register_ecap(0, &pwm_pdata[0]);
-+ am33xx_register_ecap(1, &pwm_pdata[1]);
-+ am33xx_register_ecap(2, &pwm_pdata[2]);
-+}
-+
- static int __init ecap0_init(void)
- {
- int status = 0;
-@@ -1524,7 +1534,10 @@ late_initcall(ecap0_init);
- static void enable_ehrpwm1(int evm_id, int profile)
- {
- ehrpwm_backlight_enable = true;
-- am33xx_register_ehrpwm(1, &pwm_pdata[1]);
-+ /*am33xx_register_ehrpwm(1, &pwm_pdata[1]);
-+ *TODO:no longer required as we are registering
-+ *all pwms for the beaglebone
-+ */
- }
-
- /* Setup pwm-backlight for bbtoys7lcd */
-@@ -2883,6 +2896,11 @@ static void setup_beaglebone(void)
-
- /* Fill up global evmid */
- am33xx_evmid_fillup(BEAGLE_BONE_A3);
-+
-+ /*TODO:We are registering all pwms for the beaglebone here
-+ *this may effect power management in the future
-+ */
-+ register_all_pwms();
- }
-
-
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0039-ARM-OMAP-Mux-Fixed-debugfs-mux-output-always-reporti.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0039-ARM-OMAP-Mux-Fixed-debugfs-mux-output-always-reporti.patch
deleted file mode 100644
index 4ba9cf8..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0039-ARM-OMAP-Mux-Fixed-debugfs-mux-output-always-reporti.patch
+++ /dev/null
@@ -1,99 +0,0 @@
-From e8f558360cca470b15e95e0620aa0eb6e4cc7980 Mon Sep 17 00:00:00 2001
-From: Bas Laarhoven <sjml at xs4all.nl>
-Date: Sun, 13 May 2012 18:09:57 +0200
-Subject: [PATCH 39/79] ARM: OMAP: Mux: Fixed debugfs mux output (always
- reporting pins as output)
-
-Signed-off-by: Bas Laarhoven <sjml at xs4all.nl>
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- arch/arm/mach-omap2/mux.c | 62 +++++++++++++++++++++++++++------------------
- 1 file changed, 38 insertions(+), 24 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/mux.c b/arch/arm/mach-omap2/mux.c
-index e1cc75d..5899266 100644
---- a/arch/arm/mach-omap2/mux.c
-+++ b/arch/arm/mach-omap2/mux.c
-@@ -522,41 +522,55 @@ static inline void omap_mux_decode(struct seq_file *s, u16 val)
- i++;
- flags[i] = mode;
-
-- OMAP_MUX_TEST_FLAG(val, OMAP_PIN_OFF_WAKEUPENABLE);
-- if (val & OMAP_OFF_EN) {
-- if (!(val & OMAP_OFFOUT_EN)) {
-- if (!(val & OMAP_OFF_PULL_UP)) {
-- OMAP_MUX_TEST_FLAG(val,
-- OMAP_PIN_OFF_INPUT_PULLDOWN);
-+ if (cpu_is_am33xx()) {
-+ if (val & AM33XX_INPUT_EN) {
-+ if (val & AM33XX_PULL_DISA) {
-+ flags[ ++i] = "OMAP_PIN_INPUT";
-+ } else if (val & AM33XX_PULL_UP) {
-+ flags[ ++i] = "OMAP_PIN_INPUT_PULLUP";
- } else {
-- OMAP_MUX_TEST_FLAG(val,
-- OMAP_PIN_OFF_INPUT_PULLUP);
-+ flags[ ++i] = "OMAP_PIN_INPUT_PULLDOWN";
- }
- } else {
-- if (!(val & OMAP_OFFOUT_VAL)) {
-- OMAP_MUX_TEST_FLAG(val,
-- OMAP_PIN_OFF_OUTPUT_LOW);
-+ flags[ ++i] = "OMAP_PIN_OUTPUT";
-+ }
-+ } else {
-+ OMAP_MUX_TEST_FLAG(val, OMAP_PIN_OFF_WAKEUPENABLE);
-+ if (val & OMAP_OFF_EN) {
-+ if (!(val & OMAP_OFFOUT_EN)) {
-+ if (!(val & OMAP_OFF_PULL_UP)) {
-+ OMAP_MUX_TEST_FLAG(val,
-+ OMAP_PIN_OFF_INPUT_PULLDOWN);
-+ } else {
-+ OMAP_MUX_TEST_FLAG(val,
-+ OMAP_PIN_OFF_INPUT_PULLUP);
-+ }
- } else {
-- OMAP_MUX_TEST_FLAG(val,
-- OMAP_PIN_OFF_OUTPUT_HIGH);
-+ if (!(val & OMAP_OFFOUT_VAL)) {
-+ OMAP_MUX_TEST_FLAG(val,
-+ OMAP_PIN_OFF_OUTPUT_LOW);
-+ } else {
-+ OMAP_MUX_TEST_FLAG(val,
-+ OMAP_PIN_OFF_OUTPUT_HIGH);
-+ }
- }
- }
-- }
-
-- if (val & OMAP_INPUT_EN) {
-- if (val & OMAP_PULL_ENA) {
-- if (!(val & OMAP_PULL_UP)) {
-- OMAP_MUX_TEST_FLAG(val,
-- OMAP_PIN_INPUT_PULLDOWN);
-+ if (val & OMAP_INPUT_EN) {
-+ if (val & OMAP_PULL_ENA) {
-+ if (!(val & OMAP_PULL_UP)) {
-+ OMAP_MUX_TEST_FLAG(val,
-+ OMAP_PIN_INPUT_PULLDOWN);
-+ } else {
-+ OMAP_MUX_TEST_FLAG(val, OMAP_PIN_INPUT_PULLUP);
-+ }
- } else {
-- OMAP_MUX_TEST_FLAG(val, OMAP_PIN_INPUT_PULLUP);
-+ OMAP_MUX_TEST_FLAG(val, OMAP_PIN_INPUT);
- }
- } else {
-- OMAP_MUX_TEST_FLAG(val, OMAP_PIN_INPUT);
-+ i++;
-+ flags[i] = "OMAP_PIN_OUTPUT";
- }
-- } else {
-- i++;
-- flags[i] = "OMAP_PIN_OUTPUT";
- }
-
- do {
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0040-beaglebone-export-SPI2-as-spidev-when-no-capes-are-u.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0040-beaglebone-export-SPI2-as-spidev-when-no-capes-are-u.patch
deleted file mode 100644
index f44ac53..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0040-beaglebone-export-SPI2-as-spidev-when-no-capes-are-u.patch
+++ /dev/null
@@ -1,83 +0,0 @@
-From 0bbf782ac6c97d57990886959838a6f7ed296b3a Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen at dominion.thruhere.net>
-Date: Mon, 14 May 2012 14:23:45 +0200
-Subject: [PATCH 40/79] beaglebone: export SPI2 as spidev when no capes are
- using SPI
-
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- arch/arm/mach-omap2/board-am335xevm.c | 25 +++++++++++++++++++++----
- 1 file changed, 21 insertions(+), 4 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index c9ee0a2..a0fa53a 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -497,6 +497,7 @@ static bool beaglebone_cape_detected;
- static int capecount = 0;
- static bool beaglebone_tsadcpins_free = 1;
- static bool beaglebone_leds_free = 1;
-+static bool beaglebone_spi1_free = 1;
-
-
- #define GP_EVM_REV_IS_1_0 0x1
-@@ -1897,6 +1898,16 @@ static struct spi_board_info am335x_spi1_slave_info[] = {
- },
- };
-
-+static struct spi_board_info bone_spidev2_info[] = {
-+ {
-+ .modalias = "spidev",
-+ .irq = -1,
-+ .max_speed_hz = 12000000,
-+ .bus_num = 2,
-+ .chip_select = 0,
-+ },
-+};
-+
- static struct gpmc_timings am335x_nand_timings = {
- .sync_clk = 0,
-
-@@ -2199,8 +2210,9 @@ static struct spi_board_info tt3201_spi_info[] = {
-
- static void tt3201_init(int evm_id, int profile)
- {
-- pr_info("TowerTech TT3201 CAN Cape\n");
--
-+ pr_info("TowerTech TT3201 CAN cape\n");
-+
-+ beaglebone_spi1_free = 0;
- setup_pin_mux(spi1_pin_mux);
- setup_pin_mux(tt3201_pin_mux);
-
-@@ -2234,12 +2246,18 @@ static void beaglebone_cape_setup(struct memory_accessor *mem_acc, void *context
- if (beaglebone_leds_free == 1) {
- boneleds_init(0,0);
- }
-+ if(beaglebone_spi1_free == 1) {
-+ beaglebone_spi1_free = 0;
-+ pr_info("BeagleBone cape: exporting SPI pins as spidev\n");
-+ setup_pin_mux(spi1_pin_mux);
-+ spi_register_board_info(bone_spidev2_info, ARRAY_SIZE(bone_spidev2_info));
-+ }
- }
- return;
- }
-
- if (cape_config.header != AM335X_EEPROM_HEADER) {
-- pr_warning("BeagleBone Cape EEPROM: wrong header 0x%x, expected 0x%x\n",
-+ pr_warning("BeagleBone cape EEPROM: wrong header 0x%x, expected 0x%x\n",
- cape_config.header, AM335X_EEPROM_HEADER);
- goto out;
- }
-@@ -2630,7 +2648,6 @@ static void spi1_init(int evm_id, int profile)
- return;
- }
-
--
- static int beaglebone_phy_fixup(struct phy_device *phydev)
- {
- phydev->supported &= ~(SUPPORTED_100baseT_Half |
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0041-st7735fb-Working-WIP-changes-to-make-DMA-safe-and-ad.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0041-st7735fb-Working-WIP-changes-to-make-DMA-safe-and-ad.patch
deleted file mode 100644
index ffbcb6f..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0041-st7735fb-Working-WIP-changes-to-make-DMA-safe-and-ad.patch
+++ /dev/null
@@ -1,143 +0,0 @@
-From 7f97d002d17f8de8cde7f248bb1c194172360efe Mon Sep 17 00:00:00 2001
-From: Matt Porter <mporter at ti.com>
-Date: Wed, 28 Mar 2012 23:35:44 -0400
-Subject: [PATCH 41/79] st7735fb: Working WIP changes to make DMA safe and add
- endian fix
-
-This removes the "from the stack" allocation of 1 byte buffers
-that was a temporary thing and isn't dma safe. Now vmallocs the
-user buffer to be deferred I/O safe and kmallocs a swapped
-shadow buffer to support the byte swabbing hack to fix userspace
-limitations.
-
-The buffer allocation and endian hack code needs some serious
-cleanup as on big endian systems if would fail miserably atm.
-However, the LE path works for the moment so people can do something
-with the driver.
-
-Signed-off-by: Matt Porter <mporter at ti.com>
----
- drivers/video/st7735fb.c | 49 ++++++++++++++++++++++++++++++----------------
- include/video/st7735fb.h | 2 ++
- 2 files changed, 34 insertions(+), 17 deletions(-)
-
-diff --git a/drivers/video/st7735fb.c b/drivers/video/st7735fb.c
-index 500cc88..0931ca2 100644
---- a/drivers/video/st7735fb.c
-+++ b/drivers/video/st7735fb.c
-@@ -145,11 +145,9 @@ static struct fb_var_screeninfo st7735fb_var __devinitdata = {
-
- static int st7735_write(struct st7735fb_par *par, u8 data)
- {
-- u8 txbuf[2]; /* allocation from stack must go */
-+ par->buf[0] = data;
-
-- txbuf[0] = data;
--
-- return spi_write(par->spi, &txbuf[0], 1);
-+ return spi_write(par->spi, par->buf, 1);
- }
-
- static void st7735_write_data(struct st7735fb_par *par, u8 data)
-@@ -243,16 +241,17 @@ static void st7735_reset(struct st7735fb_par *par)
- static void st7735fb_update_display(struct st7735fb_par *par)
- {
- int ret = 0;
-- u8 *vmem = par->info->screen_base;
--
-- /*
-- TODO:
-- Allow a subset of pages to be passed in
-- (for deferred I/O). Check pages against
-- pan display settings to see if they
-- should be updated.
-- */
-- /* For now, just write the full 40KiB on each update */
-+ u16 *vmem;
-+#ifdef __LITTLE_ENDIAN
-+ int i;
-+ u16 *vmem16 = (u16 *)par->info->screen_base;
-+ vmem = par->ssbuf;
-+
-+ for (i=0; i<WIDTH*HEIGHT*BPP/8/2; i++)
-+ vmem[i] = swab16(vmem16[i]);
-+#else
-+ vmem = (u16 *)par->info->screen_base;
-+#endif
-
- /* Set row/column data window */
- st7735_set_addr_win(par, 0, 0, WIDTH-1, HEIGHT-1);
-@@ -261,7 +260,7 @@ static void st7735fb_update_display(struct st7735fb_par *par)
- st7735_write_cmd(par, ST7735_RAMWR);
-
- /* Blast framebuffer to ST7735 internal display RAM */
-- ret = st7735_write_data_buf(par, vmem, WIDTH*HEIGHT*BPP/8);
-+ ret = st7735_write_data_buf(par, (u8 *)vmem, WIDTH*HEIGHT*BPP/8);
- if (ret < 0)
- pr_err("%s: spi_write failed to update display buffer\n",
- par->info->fix.id);
-@@ -369,7 +368,7 @@ static struct fb_ops st7735fb_ops = {
- };
-
- static struct fb_deferred_io st7735fb_defio = {
-- .delay = HZ,
-+ .delay = HZ/20,
- .deferred_io = st7735fb_deferred_io,
- };
-
-@@ -395,7 +394,11 @@ static int __devinit st7735fb_probe (struct spi_device *spi)
- return -EINVAL;
- }
-
-- vmem = vzalloc(vmem_size);
-+#ifdef __LITTLE_ENDIAN
-+ vmem = (u8 *)vmalloc(vmem_size);
-+#else
-+ vmem = (u8 *)kmalloc(vmem_size, GFP_KERNEL);
-+#endif
- if (!vmem)
- return retval;
-
-@@ -431,6 +434,14 @@ static int __devinit st7735fb_probe (struct spi_device *spi)
- par->spi = spi;
- par->rst = pdata->rst_gpio;
- par->dc = pdata->dc_gpio;
-+ par->buf = kmalloc(1, GFP_KERNEL);
-+
-+#ifdef __LITTLE_ENDIAN
-+ /* Allocated swapped shadow buffer */
-+ par->ssbuf = kmalloc(vmem_size, GFP_KERNEL);
-+ if (!par->ssbuf)
-+ return retval;
-+#endif
-
- retval = register_framebuffer(info);
- if (retval < 0)
-@@ -457,7 +468,11 @@ fbreg_fail:
- framebuffer_release(info);
-
- fballoc_fail:
-+#ifdef __LITTLE_ENDIAN
- vfree(vmem);
-+#else
-+ kfree(vmem);
-+#endif
-
- return retval;
- }
-diff --git a/include/video/st7735fb.h b/include/video/st7735fb.h
-index 250f036..e99cd05 100644
---- a/include/video/st7735fb.h
-+++ b/include/video/st7735fb.h
-@@ -36,6 +36,8 @@ struct st7735fb_par {
- struct fb_info *info;
- int rst;
- int dc;
-+ u16 *ssbuf;
-+ u8 *buf;
- };
-
- struct st7735fb_platform_data {
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0042-omap-hwmod-silence-st_shift-error.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0042-omap-hwmod-silence-st_shift-error.patch
deleted file mode 100644
index 0f2477d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0042-omap-hwmod-silence-st_shift-error.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From e2542efb1a4a61334eace382a2a4c6d5874cc078 Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen at dominion.thruhere.net>
-Date: Wed, 16 May 2012 17:57:31 +0200
-Subject: [PATCH 42/79] omap hwmod: silence st_shift error
-
-During boot the following error is shown:
-
- [ 0.545227] omap_hwmod: wkup_m3: wkup_m3: hwmod data error: OMAP4 does not support st_shift
-
-Since this PSP tree will never run on omap4 remove the print so people will stop getting scared by it.
-
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- arch/arm/mach-omap2/omap_hwmod.c | 3 ---
- 1 file changed, 3 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c
-index bc14f9f..a050699 100644
---- a/arch/arm/mach-omap2/omap_hwmod.c
-+++ b/arch/arm/mach-omap2/omap_hwmod.c
-@@ -1343,9 +1343,6 @@ static int _deassert_hardreset(struct omap_hwmod *oh, const char *name)
- * Note: cpu_is_omap34xx is true for am33xx device as well.
- */
- if (cpu_is_omap44xx() || cpu_is_am33xx()) {
-- if (ohri.st_shift)
-- pr_err("omap_hwmod: %s: %s: hwmod data error: OMAP4 does not support st_shift\n",
-- oh->name, name);
- ret = omap4_prminst_deassert_hardreset(ohri.rst_shift,
- oh->clkdm->pwrdm.ptr->prcm_partition,
- oh->clkdm->pwrdm.ptr->prcm_offs,
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0043-cpsw-phy_device-demote-PHY-message-to-INFO.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0043-cpsw-phy_device-demote-PHY-message-to-INFO.patch
deleted file mode 100644
index b9fb74d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0043-cpsw-phy_device-demote-PHY-message-to-INFO.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From f37fa162020846da5950eba704e58e41889b9d3a Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen at dominion.thruhere.net>
-Date: Thu, 17 May 2012 10:59:18 +0200
-Subject: [PATCH 43/79] cpsw,phy_device: demote PHY message to INFO
-
-This keeps them from appearing on the screen when booting with 'quiet'
-
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- drivers/net/ethernet/ti/cpsw.c | 2 +-
- drivers/net/phy/phy_device.c | 4 ++--
- 2 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/net/ethernet/ti/cpsw.c b/drivers/net/ethernet/ti/cpsw.c
-index 86fe57d..d10996d 100644
---- a/drivers/net/ethernet/ti/cpsw.c
-+++ b/drivers/net/ethernet/ti/cpsw.c
-@@ -638,7 +638,7 @@ static void cpsw_slave_open(struct cpsw_slave *slave, struct cpsw_priv *priv)
- slave->data->phy_id, slave->slave_num);
- slave->phy = NULL;
- } else {
-- printk(KERN_ERR"\nCPSW phy found : id is : 0x%x\n",
-+ printk(KERN_INFO"\nCPSW phy found : id is : 0x%x\n",
- slave->phy->phy_id);
- cpsw_set_phy_config(priv, slave->phy);
- phy_start(slave->phy);
-diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c
-index 83a5a5a..8b84789 100644
---- a/drivers/net/phy/phy_device.c
-+++ b/drivers/net/phy/phy_device.c
-@@ -380,7 +380,7 @@ struct phy_device * phy_connect(struct net_device *dev, const char *bus_id,
- * PHY with the requested name */
- d = bus_find_device_by_name(&mdio_bus_type, NULL, bus_id);
- if (!d) {
-- pr_err("PHY %s not found\n", bus_id);
-+ pr_info("PHY %s not found\n", bus_id);
- return ERR_PTR(-ENODEV);
- }
- phydev = to_phy_device(d);
-@@ -503,7 +503,7 @@ struct phy_device *phy_attach(struct net_device *dev,
- * PHY with the requested name */
- d = bus_find_device_by_name(bus, NULL, bus_id);
- if (!d) {
-- pr_err("PHY %s not found\n", bus_id);
-+ pr_info("PHY %s not found\n", bus_id);
- return ERR_PTR(-ENODEV);
- }
- phydev = to_phy_device(d);
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0044-beaglebone-add-support-for-7-LCD-cape-revision-A2.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0044-beaglebone-add-support-for-7-LCD-cape-revision-A2.patch
deleted file mode 100644
index 749df75..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0044-beaglebone-add-support-for-7-LCD-cape-revision-A2.patch
+++ /dev/null
@@ -1,66 +0,0 @@
-From ff466659529efbbc2d01f1461fe461dc0fdea135 Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen at dominion.thruhere.net>
-Date: Fri, 18 May 2012 12:17:12 +0200
-Subject: [PATCH 44/79] beaglebone: add support for 7" LCD cape revision A2
-
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- arch/arm/mach-omap2/board-am335xevm.c | 24 +++++++++++++++++++++---
- 1 file changed, 21 insertions(+), 3 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index a0fa53a..5bb71b1 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -629,6 +629,14 @@ static struct pinmux_config bbtoys7_pin_mux[] = {
- {NULL, 0},
- };
-
-+/* Module pin mux for Beagleboardtoys 7" LCD cape */
-+static struct pinmux_config bbtoys7a2_pin_mux[] = {
-+ {"gpmc_csn2.gpio1_31", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, // AVDD_EN
-+ {"gpmc_a2.ehrpwm1A", OMAP_MUX_MODE6 | AM33XX_PIN_OUTPUT}, // Backlight
-+ {NULL, 0},
-+};
-+
-+
- static struct pinmux_config w1_gpio_pin_mux[] = {
- {"gpmc_ad3.gpio1_3", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT_PULLUP},
- {NULL, 0},
-@@ -1595,13 +1603,11 @@ static void lcdc_init(int evm_id, int profile)
- }
-
- #define BEAGLEBONE_LCD_AVDD_EN GPIO_TO_PIN(0, 7)
-+#define BEAGLEBONE_LCD7A2_AVDD_EN GPIO_TO_PIN(1, 31)
-
- static void bbtoys7lcd_init(int evm_id, int profile)
- {
- setup_pin_mux(lcdc16_pin_mux);
-- setup_pin_mux(bbtoys7_pin_mux);
-- gpio_request(BEAGLEBONE_LCD_AVDD_EN, "BONE_LCD_AVDD_EN");
-- gpio_direction_output(BEAGLEBONE_LCD_AVDD_EN, 1);
-
- // we are being stupid and setting pixclock from here instead of da8xx-fb.c
- if (conf_disp_pll(300000000)) {
-@@ -2292,6 +2298,18 @@ static void beaglebone_cape_setup(struct memory_accessor *mem_acc, void *context
- }
- if (!strncmp("BB-BONE-LCD7-01", cape_config.partnumber, 15)) {
- pr_info("BeagleBone cape: initializing LCD cape\n");
-+
-+ if (!strncmp("00A2", cape_config.version, 4)) {
-+ setup_pin_mux(bbtoys7a2_pin_mux);
-+ gpio_request(BEAGLEBONE_LCD7A2_AVDD_EN, "BONE_LCD_AVDD_EN");
-+ gpio_direction_output(BEAGLEBONE_LCD7A2_AVDD_EN, 1);
-+ } else {
-+ setup_pin_mux(bbtoys7_pin_mux);
-+ gpio_request(BEAGLEBONE_LCD_AVDD_EN, "BONE_LCD_AVDD_EN");
-+ gpio_direction_output(BEAGLEBONE_LCD_AVDD_EN, 1);
-+ bbtoys7lcd_init(0,0);
-+ }
-+
- bbtoys7lcd_init(0,0);
- pr_info("BeagleBone cape: initializing LCD cape touchscreen\n");
- tsc_init(0,0);
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0045-beaglebone-allow-capes-to-disable-w1-gpio.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0045-beaglebone-allow-capes-to-disable-w1-gpio.patch
deleted file mode 100644
index 165a68a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0045-beaglebone-allow-capes-to-disable-w1-gpio.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From 1b32708444a02b6e42cdd76272a2f09768a3474a Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen at dominion.thruhere.net>
-Date: Fri, 18 May 2012 12:39:25 +0200
-Subject: [PATCH 45/79] beaglebone: allow capes to disable w1-gpio
-
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- arch/arm/mach-omap2/board-am335xevm.c | 7 +++++--
- 1 file changed, 5 insertions(+), 2 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index 5bb71b1..5c89494 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -498,7 +498,7 @@ static int capecount = 0;
- static bool beaglebone_tsadcpins_free = 1;
- static bool beaglebone_leds_free = 1;
- static bool beaglebone_spi1_free = 1;
--
-+static bool beaglebone_w1gpio_free = 1;
-
- #define GP_EVM_REV_IS_1_0 0x1
- #define GP_EVM_REV_IS_1_0A 0x1
-@@ -1727,6 +1727,7 @@ static void lcd7leds_init(int evm_id, int profile )
-
- static void bonew1_gpio_init(int evm_id, int profile )
- {
-+ beaglebone_w1gpio_free = 0;
- int err;
- setup_pin_mux(w1_gpio_pin_mux);
- err = platform_device_register(&bone_w1_device);
-@@ -2258,6 +2259,9 @@ static void beaglebone_cape_setup(struct memory_accessor *mem_acc, void *context
- setup_pin_mux(spi1_pin_mux);
- spi_register_board_info(bone_spidev2_info, ARRAY_SIZE(bone_spidev2_info));
- }
-+ if(beaglebone_w1gpio_free == 1) {
-+ bonew1_gpio_init(0,0);
-+ }
- }
- return;
- }
-@@ -2831,7 +2835,6 @@ static struct evm_dev_cfg beaglebone_dev_cfg[] = {
- {usb1_init, DEV_ON_BASEBOARD, PROFILE_NONE},
- {i2c2_init, DEV_ON_BASEBOARD, PROFILE_NONE},
- {mmc0_init, DEV_ON_BASEBOARD, PROFILE_NONE},
-- {bonew1_gpio_init, DEV_ON_BASEBOARD, PROFILE_ALL},
- {NULL, 0, 0},
- };
-
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0046-beaglebone-add-stub-for-the-camera-cape-to-disable-w.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0046-beaglebone-add-stub-for-the-camera-cape-to-disable-w.patch
deleted file mode 100644
index 91d86a3..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0046-beaglebone-add-stub-for-the-camera-cape-to-disable-w.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From b1a945344e6abd9bb9f33e9a8dadb8ac22ed2422 Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen at dominion.thruhere.net>
-Date: Fri, 18 May 2012 12:58:16 +0200
-Subject: [PATCH 46/79] beaglebone: add stub for the camera cape to disable
- w1-gpio
-
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- arch/arm/mach-omap2/board-am335xevm.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index 5c89494..ece4e46 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -2384,6 +2384,11 @@ static void beaglebone_cape_setup(struct memory_accessor *mem_acc, void *context
- pr_info("BeagleBone cape: initializing CAN cape\n");
- tt3201_init(0,0);
- }
-+
-+ if (!strncmp("BB-BONE-CAM-01", cape_config.partnumber, 14)) {
-+ pr_info("BeagleBone cape: recognized Camera cape\n");
-+ beaglebone_w1gpio_free = 0;
-+ }
-
- if ((capecount > 3) && (beaglebone_tsadcpins_free == 1)) {
- pr_info("BeagleBone cape: exporting ADC pins to sysfs\n");
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0047-Adding-many-of-the-missing-signals-to-the-mux-table.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0047-Adding-many-of-the-missing-signals-to-the-mux-table.patch
deleted file mode 100644
index 6a13c13..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0047-Adding-many-of-the-missing-signals-to-the-mux-table.patch
+++ /dev/null
@@ -1,310 +0,0 @@
-From 023eed8b578f4b3ccc992ade8344277f9f9e08d6 Mon Sep 17 00:00:00 2001
-From: Bas Laarhoven <sjml at xs4all.nl>
-Date: Sun, 13 May 2012 18:16:34 +0200
-Subject: [PATCH 47/79] Adding many of the missing signals to the mux table.
-
-Signed-off-by: Bas Laarhoven <sjml at xs4all.nl>
----
- arch/arm/mach-omap2/mux33xx.c | 197 +++++++++++++++++++++--------------------
- 1 file changed, 101 insertions(+), 96 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/mux33xx.c b/arch/arm/mach-omap2/mux33xx.c
-index 25dcedb..26ecd66 100644
---- a/arch/arm/mach-omap2/mux33xx.c
-+++ b/arch/arm/mach-omap2/mux33xx.c
-@@ -28,6 +28,11 @@
- }
-
- /* AM33XX pin mux super set */
-+/* 20120513 - SJL added a lot of missing signals using datasheet rev. C.
-+ * Converted all names to lower case, except for the A and B
-+ * channel suffixes, as that seems to be the rule.
-+ * Marked lines with completed spec by leading empty comment.
-+ */
- static struct omap_mux __initdata am33xx_muxmodes[] = {
- _AM33XX_MUXENTRY(GPMC_AD0, 0,
- "gpmc_ad0", "mmc1_dat0", NULL, NULL,
-@@ -53,21 +58,21 @@ static struct omap_mux __initdata am33xx_muxmodes[] = {
- _AM33XX_MUXENTRY(GPMC_AD7, 0,
- "gpmc_ad7", "mmc1_dat7", NULL, NULL,
- NULL, NULL, NULL, "gpio1_7"),
-- _AM33XX_MUXENTRY(GPMC_AD8, 0,
-+/**/ _AM33XX_MUXENTRY(GPMC_AD8, 0,
- "gpmc_ad8", "lcd_data16", "mmc1_dat0", "mmc2_dat4",
-- NULL, NULL, NULL, "gpio0_22"),
-- _AM33XX_MUXENTRY(GPMC_AD9, 0,
-+ "ehrpwm2A", "pr1_mii_mt0_clk", NULL, "gpio0_22"),
-+/**/ _AM33XX_MUXENTRY(GPMC_AD9, 0,
- "gpmc_ad9", "lcd_data17", "mmc1_dat1", "mmc2_dat5",
-- "ehrpwm2B", NULL, NULL, "gpio0_23"),
-- _AM33XX_MUXENTRY(GPMC_AD10, 0,
-+ "ehrpwm2B", "pr1_mii0_col", NULL, "gpio0_23"),
-+/**/ _AM33XX_MUXENTRY(GPMC_AD10, 0,
- "gpmc_ad10", "lcd_data18", "mmc1_dat2", "mmc2_dat6",
-- NULL, NULL, NULL, "gpio0_26"),
-- _AM33XX_MUXENTRY(GPMC_AD11, 0,
-+ "ehrpwm2_tripzone_input", "pr1_mii0_txen", NULL, "gpio0_26"),
-+/**/ _AM33XX_MUXENTRY(GPMC_AD11, 0,
- "gpmc_ad11", "lcd_data19", "mmc1_dat3", "mmc2_dat7",
-- NULL, NULL, NULL, "gpio0_27"),
-- _AM33XX_MUXENTRY(GPMC_AD12, 0,
-+ "ehrpwm0_synco", "pr1_mii0_txd3", NULL, "gpio0_27"),
-+/**/ _AM33XX_MUXENTRY(GPMC_AD12, 0,
- "gpmc_ad12", "lcd_data20", "mmc1_dat4", "mmc2_dat0",
-- NULL, NULL, NULL, "gpio1_12"),
-+ "eqep2a_in", "pr1_mii0_txd2", "pr1_pru0_pru_r30_14", "gpio1_12"),
- _AM33XX_MUXENTRY(GPMC_AD13, 0,
- "gpmc_ad13", "lcd_data21", "mmc1_dat5", "mmc2_dat1",
- NULL, NULL, NULL, "gpio1_13"),
-@@ -77,33 +82,33 @@ static struct omap_mux __initdata am33xx_muxmodes[] = {
- _AM33XX_MUXENTRY(GPMC_AD15, 0,
- "gpmc_ad15", "lcd_data23", "mmc1_dat7", "mmc2_dat3",
- NULL, NULL, NULL, "gpio1_15"),
-- _AM33XX_MUXENTRY(GPMC_A0, 0,
-- "gpmc_a0", "mii2_txen", "rgmii2_tctl", "rmii2_txen",
-- NULL, NULL, NULL, "gpio1_16"),
-- _AM33XX_MUXENTRY(GPMC_A1, 0,
-- "gpmc_a1", "mii2_rxdv", "rgmii2_rctl", "mmc2_dat0",
-- NULL, NULL, NULL, "gpio1_17"),
-- _AM33XX_MUXENTRY(GPMC_A2, 0,
-- "gpmc_a2", "mii2_txd3", "rgmii2_td3", "mmc2_dat1",
-- NULL, NULL, "ehrpwm1A", "gpio1_18"),
-- _AM33XX_MUXENTRY(GPMC_A3, 0,
-- "gpmc_a3", "mii2_txd2", "rgmii2_td2", "mmc2_dat2",
-- NULL, NULL, NULL, "gpio1_19"),
-- _AM33XX_MUXENTRY(GPMC_A4, 0,
-- "gpmc_a4", "mii2_txd1", "rgmii2_td1", "rmii2_txd1",
-- "gpmc_a20", NULL, NULL, "gpio1_20"),
-- _AM33XX_MUXENTRY(GPMC_A5, 0,
-- "gpmc_a5", "mii2_txd0", "rgmii2_td0", "rmii2_txd0",
-- "gpmc_a21", NULL, NULL, "gpio1_21"),
-- _AM33XX_MUXENTRY(GPMC_A6, 0,
-- "gpmc_a6", "mii2_txclk", "rgmii2_tclk", "mmc2_dat4",
-- "gpmc_a22", NULL, NULL, "gpio1_22"),
-- _AM33XX_MUXENTRY(GPMC_A7, 0,
-- "gpmc_a7", "mii2_rxclk", "rgmii2_rclk", "mmc2_dat5",
-- NULL, NULL, NULL, "gpio1_23"),
-- _AM33XX_MUXENTRY(GPMC_A8, 0,
-- "gpmc_a8", "mii2_rxd3", "rgmii2_rd3", "mmc2_dat6",
-- NULL, NULL, "mcasp0_aclkx", "gpio1_24"),
-+/**/ _AM33XX_MUXENTRY(GPMC_A0, 0,
-+ "gpmc_a0", "gmii2_txen", "rgmii2_tctl", "rmii2_txen",
-+ "gpmc_a16", "pr1_mii_mt1_clk", "ehrpwm1_tripzone_input", "gpio1_16"),
-+/**/ _AM33XX_MUXENTRY(GPMC_A1, 0,
-+ "gpmc_a1", "gmii2_rxdv", "rgmii2_rctl", "mmc2_dat0",
-+ "gpmc_a17", "pr1_mii1_txd3", "ehrpwm0_synco", "gpio1_17"),
-+/**/ _AM33XX_MUXENTRY(GPMC_A2, 0,
-+ "gpmc_a2", "gmii2_txd3", "rgmii2_td3", "mmc2_dat1",
-+ "gpmc_a18", "pr1_mii1_txd2", "ehrpwm1A", "gpio1_18"),
-+/**/ _AM33XX_MUXENTRY(GPMC_A3, 0,
-+ "gpmc_a3", "gmii2_txd2", "rgmii2_td2", "mmc2_dat2",
-+ "gpmc_a19", "pr1_mii1_txd1", "ehrpwm1B", "gpio1_19"),
-+/**/ _AM33XX_MUXENTRY(GPMC_A4, 0,
-+ "gpmc_a4", "gmii2_txd1", "rgmii2_td1", "rmii2_txd1",
-+ "gpmc_a20", "pr1_mii1_txd0", "eqep1a_in", "gpio1_20"),
-+/**/ _AM33XX_MUXENTRY(GPMC_A5, 0,
-+ "gpmc_a5", "gmii2_txd0", "rgmii2_td0", "rmii2_txd0",
-+ "gpmc_a21", "pr1_mii1_rxd3", "eqep1b_in", "gpio1_21"),
-+/**/ _AM33XX_MUXENTRY(GPMC_A6, 0,
-+ "gpmc_a6", "gmii2_txclk", "rgmii2_tclk", "mmc2_dat4",
-+ "gpmc_a22", "pr1_mii1_rxd2", "eqep1_index", "gpio1_22"),
-+/**/ _AM33XX_MUXENTRY(GPMC_A7, 0,
-+ "gpmc_a7", "gmii2_rxclk", "rgmii2_rclk", "mmc2_dat5",
-+ "gpmc_a23", "pr1_mii1_rxd1", "eqep1_strobe", "gpio1_23"),
-+/**/ _AM33XX_MUXENTRY(GPMC_A8, 0,
-+ "gpmc_a8", "gmii2_rxd3", "rgmii2_rd3", "mmc2_dat6",
-+ "gpmc_a24", "pr1_mii1_rxd0", "mcasp0_aclkx", "gpio1_24"),
- _AM33XX_MUXENTRY(GPMC_A9, 0,
- "gpmc_a9", "mii2_rxd2", "rgmii2_rd2", "mmc2_dat7",
- NULL, NULL, "mcasp0_fsx", "gpio1_25"),
-@@ -122,18 +127,18 @@ static struct omap_mux __initdata am33xx_muxmodes[] = {
- _AM33XX_MUXENTRY(GPMC_BEN1, 0,
- "gpmc_ben1", "mii2_col", NULL, "mmc2_dat3",
- NULL, NULL, "mcasp0_aclkr", "gpio1_28"),
-- _AM33XX_MUXENTRY(GPMC_CSN0, 0,
-+/**/ _AM33XX_MUXENTRY(GPMC_CSN0, 0,
- "gpmc_csn0", NULL, NULL, NULL,
- NULL, NULL, NULL, "gpio1_29"),
-- _AM33XX_MUXENTRY(GPMC_CSN1, 0,
-- "gpmc_csn1", NULL, "mmc1_clk", NULL,
-- NULL, NULL, NULL, "gpio1_30"),
-- _AM33XX_MUXENTRY(GPMC_CSN2, 0,
-- "gpmc_csn2", NULL, "mmc1_cmd", NULL,
-- NULL, NULL, NULL, "gpio1_31"),
-- _AM33XX_MUXENTRY(GPMC_CSN3, 0,
-+/**/ _AM33XX_MUXENTRY(GPMC_CSN1, 0,
-+ "gpmc_csn1", "gpmc_clk", "mmc1_clk", "pr1_edio_data_in6",
-+ "pr1_edio_data_out6", "pr1_pru1_pru_r30_12", "pr1_pru1_pru_r31_12", "gpio1_30"),
-+/**/ _AM33XX_MUXENTRY(GPMC_CSN2, 0,
-+ "gpmc_csn2", "gpmc_be1n", "mmc1_cmd", "pr1_edio_data_in7",
-+ "pr1_edio_data_out7", "pr1_pru1_pru_r30_13", "pr1_pru1_pru_r31_13", "gpio1_31"),
-+/**/ _AM33XX_MUXENTRY(GPMC_CSN3, 0,
- "gpmc_csn3", NULL, NULL, "mmc2_cmd",
-- NULL, NULL, NULL, "gpio2_0"),
-+ "pr1_mii0_crs", "pr1_mdio_data", "EMU4", "gpio2_0"),
- _AM33XX_MUXENTRY(GPMC_CLK, 0,
- "gpmc_clk", "lcd_memory_clk_mux", NULL, "mmc2_clk",
- NULL, NULL, "mcasp0_fsr", "gpio2_1"),
-@@ -155,33 +160,33 @@ static struct omap_mux __initdata am33xx_muxmodes[] = {
- _AM33XX_MUXENTRY(LCD_DATA1, 0,
- "lcd_data1", "gpmc_a1", NULL, NULL,
- NULL, NULL, NULL, "gpio2_7"),
-- _AM33XX_MUXENTRY(LCD_DATA2, 0,
-- "lcd_data2", "gpmc_a2", NULL, NULL,
-- NULL, NULL, NULL, "gpio2_8"),
-- _AM33XX_MUXENTRY(LCD_DATA3, 0,
-- "lcd_data3", "gpmc_a3", NULL, NULL,
-- NULL, NULL, NULL, "gpio2_9"),
-- _AM33XX_MUXENTRY(LCD_DATA4, 0,
-- "lcd_data4", "gpmc_a4", NULL, NULL,
-- NULL, NULL, NULL, "gpio2_10"),
-- _AM33XX_MUXENTRY(LCD_DATA5, 0,
-- "lcd_data5", "gpmc_a5", NULL, NULL,
-- NULL, NULL, NULL, "gpio2_11"),
-- _AM33XX_MUXENTRY(LCD_DATA6, 0,
-- "lcd_data6", "gpmc_a6", NULL, NULL,
-- NULL, NULL, NULL, "gpio2_12"),
-- _AM33XX_MUXENTRY(LCD_DATA7, 0,
-- "lcd_data7", "gpmc_a7", NULL, NULL,
-- NULL, NULL, NULL, "gpio2_13"),
-+/**/ _AM33XX_MUXENTRY(LCD_DATA2, 0,
-+ "lcd_data2", "gpmc_a2", "pr1_mii0_txd3", "ehrpwm2_tripzone_input",
-+ NULL, "pr1_pru1_pru_r30_2", "pr1_pru1_pru_r31_2", "gpio2_8"),
-+/**/ _AM33XX_MUXENTRY(LCD_DATA3, 0,
-+ "lcd_data3", "gpmc_a3", "pr1_mii0_txd2","ehrpwm0_synco",
-+ NULL, "pr1_pru1_pru_r30_3", "pr1_pru1_pru_r31_3", "gpio2_9"),
-+/**/ _AM33XX_MUXENTRY(LCD_DATA4, 0,
-+ "lcd_data4", "gpmc_a4", "pr1_mii0_txd1", "eQEP2A_in",
-+ NULL, "pr1_pru1_pru_r30_4", "pr1_pru1_pru_r31_4", "gpio2_10"),
-+/**/ _AM33XX_MUXENTRY(LCD_DATA5, 0,
-+ "lcd_data5", "gpmc_a5", "pr1_mii0_txd0", "eqep2b_in",
-+ NULL, "pr1_pru1_pru_r30_5", "pr1_pru1_pru_r31_5", "gpio2_11"),
-+/**/ _AM33XX_MUXENTRY(LCD_DATA6, 0,
-+ "lcd_data6", "gpmc_a6", "pr1_edio_data_in6", "eqep2_index",
-+ "pr1_edio_data_out6", "pr1_pru1_pru_r30_6", "pr1_pru1_pru_r31_6", "gpio2_12"),
-+/**/ _AM33XX_MUXENTRY(LCD_DATA7, 0,
-+ "lcd_data7", "gpmc_a7", "pr1_edio_data_in7", "eqep2_strobe",
-+ "pr1_pru1_pru_r30_7", "pr1_pru_pru1_r30_7", "pr1_pru1_pru_r31_7", "gpio2_13"),
- _AM33XX_MUXENTRY(LCD_DATA8, 0,
- "lcd_data8", "gpmc_a12", NULL, "mcasp0_aclkx",
- NULL, NULL, "uart2_ctsn", "gpio2_14"),
- _AM33XX_MUXENTRY(LCD_DATA9, 0,
- "lcd_data9", "gpmc_a13", NULL, "mcasp0_fsx",
- NULL, NULL, "uart2_rtsn", "gpio2_15"),
-- _AM33XX_MUXENTRY(LCD_DATA10, 0,
-- "lcd_data10", "gpmc_a14", NULL, "mcasp0_axr0",
-- NULL, NULL, NULL, "gpio2_16"),
-+/**/ _AM33XX_MUXENTRY(LCD_DATA10, 0,
-+ "lcd_data10", "gpmc_a14", "ehrpwm1A", "mcasp0_axr0",
-+ "mcasp0_axr0", "pr1_mii0_rxd1", "uart3_ctsn", "gpio2_16"),
- _AM33XX_MUXENTRY(LCD_DATA11, 0,
- "lcd_data11", "gpmc_a15", NULL, "mcasp0_ahclkr",
- "mcasp0_axr2", NULL, NULL, "gpio2_17"),
-@@ -197,18 +202,18 @@ static struct omap_mux __initdata am33xx_muxmodes[] = {
- _AM33XX_MUXENTRY(LCD_DATA15, 0,
- "lcd_data15", "gpmc_a19", NULL, "mcasp0_ahclkx",
- "mcasp0_axr3", NULL, NULL, "gpio0_11"),
-- _AM33XX_MUXENTRY(LCD_VSYNC, 0,
-- "lcd_vsync", NULL, NULL, NULL,
-- NULL, NULL, NULL, "gpio2_22"),
-- _AM33XX_MUXENTRY(LCD_HSYNC, 0,
-- "lcd_hsync", NULL, NULL, NULL,
-- NULL, NULL, NULL, "gpio2_23"),
-- _AM33XX_MUXENTRY(LCD_PCLK, 0,
-- "lcd_pclk", NULL, NULL, NULL,
-- NULL, NULL, NULL, "gpio2_24"),
-- _AM33XX_MUXENTRY(LCD_AC_BIAS_EN, 0,
-- "lcd_ac_bias_en", NULL, NULL, NULL,
-- NULL, NULL, NULL, "gpio2_25"),
-+/**/ _AM33XX_MUXENTRY(LCD_VSYNC, 0,
-+ "lcd_vsync", "gpmc_a8", NULL, "pr1_edio_data_in2",
-+ "pr1_edio_data_out2", "pr1_pru1_pru_r30_8", "pr1_pru1_pru_r31_8", "gpio2_22"),
-+/**/ _AM33XX_MUXENTRY(LCD_HSYNC, 0,
-+ "lcd_hsync", "gpmc_a9", NULL, "pr1_edio_data_in3",
-+ "pr1_edio_data_out3", "pr1_pru1_pru_r30_9", "pr1_pru1_pru_r31_9", "gpio2_23"),
-+/**/ _AM33XX_MUXENTRY(LCD_PCLK, 0,
-+ "lcd_pclk", "gpmc_a10", "pr1_mii0_crs", "pr1_edio_data_in4",
-+ "pr1_edio_data_out4", "pr1_pru1_pru_r30_10", "pr1_pru1_pru_r31_10", "gpio2_24"),
-+/**/ _AM33XX_MUXENTRY(LCD_AC_BIAS_EN, 0,
-+ "lcd_ac_bias_en", "gpmc_a11", "pr1_mii1_crs", "pr1_edio_data_in5",
-+ "pr1_edio_data_out5", "pr1_pru1_pru_r30_11", "pr1_pru1_pru_r31_11", "gpio2_25"),
- _AM33XX_MUXENTRY(MMC0_DAT3, 0,
- "mmc0_dat3", NULL, NULL, NULL,
- NULL, NULL, NULL, "gpio2_26"),
-@@ -296,9 +301,9 @@ static struct omap_mux __initdata am33xx_muxmodes[] = {
- _AM33XX_MUXENTRY(SPI0_CS1, 0,
- "spi0_cs1", "uart3_rxd", NULL, "mmc0_pow",
- NULL, "mmc0_sdcd", NULL, "gpio0_6"),
-- _AM33XX_MUXENTRY(ECAP0_IN_PWM0_OUT, 0,
-- "ecap0_in_pwm0_out", "uart3_txd", "spi1_cs1", NULL,
-- "spi1_sclk", "mmc0_sdwp", NULL, "gpio0_7"),
-+/**/ _AM33XX_MUXENTRY(ECAP0_IN_PWM0_OUT, 0,
-+ "ecap0_in_pwm0_out", "uart3_txd", "spi1_cs1", "pr1_ecap0_ecap_capin_apwm_o",
-+ "spi1_sclk", "mmc0_sdwp", "xdma_event_intr2", "gpio0_7"),
- _AM33XX_MUXENTRY(UART0_CTSN, 0,
- "uart0_ctsn", NULL, "d_can1_tx", "i2c1_sda",
- "spi1_d0", NULL, NULL, "gpio1_8"),
-@@ -389,11 +394,11 @@ static struct omap_mux __initdata am33xx_muxmodes[] = {
- _AM33XX_MUXENTRY(TRSTN, 0,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL),
-- _AM33XX_MUXENTRY(EMU0, 0,
-- NULL, NULL, NULL, NULL,
-+/**/ _AM33XX_MUXENTRY(EMU0, 0,
-+ "emu0", NULL, NULL, NULL,
- NULL, NULL, NULL, "gpio3_7"),
-- _AM33XX_MUXENTRY(EMU1, 0,
-- NULL, NULL, NULL, NULL,
-+/**/ _AM33XX_MUXENTRY(EMU1, 0,
-+ "emu1", NULL, NULL, NULL,
- NULL, NULL, NULL, "gpio3_8"),
- _AM33XX_MUXENTRY(RTC_XTALIN, 0,
- NULL, NULL, NULL, NULL,
-@@ -572,34 +577,34 @@ static struct omap_mux __initdata am33xx_muxmodes[] = {
- _AM33XX_MUXENTRY(DDR_VTP, 0,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL),
-- _AM33XX_MUXENTRY(AIN0, 0,
-+/**/ _AM33XX_MUXENTRY(AIN0, 0,
- "ain0", NULL, NULL, NULL,
- NULL, NULL, NULL, NULL),
-- _AM33XX_MUXENTRY(AIN1, 0,
-+/**/ _AM33XX_MUXENTRY(AIN1, 0,
- "ain1", NULL, NULL, NULL,
- NULL, NULL, NULL, NULL),
-- _AM33XX_MUXENTRY(AIN2, 0,
-+/**/ _AM33XX_MUXENTRY(AIN2, 0,
- "ain2", NULL, NULL, NULL,
- NULL, NULL, NULL, NULL),
-- _AM33XX_MUXENTRY(AIN3, 0,
-+/**/ _AM33XX_MUXENTRY(AIN3, 0,
- "ain3", NULL, NULL, NULL,
- NULL, NULL, NULL, NULL),
-- _AM33XX_MUXENTRY(AIN4, 0,
-+/**/ _AM33XX_MUXENTRY(AIN4, 0,
- "ain4", NULL, NULL, NULL,
- NULL, NULL, NULL, NULL),
-- _AM33XX_MUXENTRY(AIN5, 0,
-+/**/ _AM33XX_MUXENTRY(AIN5, 0,
- "ain5", NULL, NULL, NULL,
- NULL, NULL, NULL, NULL),
-- _AM33XX_MUXENTRY(AIN6, 0,
-+/**/ _AM33XX_MUXENTRY(AIN6, 0,
- "ain6", NULL, NULL, NULL,
- NULL, NULL, NULL, NULL),
-- _AM33XX_MUXENTRY(AIN7, 0,
-+/**/ _AM33XX_MUXENTRY(AIN7, 0,
- "ain7", NULL, NULL, NULL,
- NULL, NULL, NULL, NULL),
-- _AM33XX_MUXENTRY(VREFP, 0,
-+/**/ _AM33XX_MUXENTRY(VREFP, 0,
- "vrefp", NULL, NULL, NULL,
- NULL, NULL, NULL, NULL),
-- _AM33XX_MUXENTRY(VREFN, 0,
-+/**/ _AM33XX_MUXENTRY(VREFN, 0,
- "vrefn", NULL, NULL, NULL,
- NULL, NULL, NULL, NULL),
- { .reg_offset = OMAP_MUX_TERMINATOR },
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0048-Fixed-reversed-part-of-LCD-bus.-Added-even-more-miss.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0048-Fixed-reversed-part-of-LCD-bus.-Added-even-more-miss.patch
deleted file mode 100644
index 50f1dd3..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0048-Fixed-reversed-part-of-LCD-bus.-Added-even-more-miss.patch
+++ /dev/null
@@ -1,113 +0,0 @@
-From 3813937b8337eb49978dfe8e4b938f937b11db37 Mon Sep 17 00:00:00 2001
-From: Bas Laarhoven <sjml at xs4all.nl>
-Date: Mon, 14 May 2012 18:26:12 +0200
-Subject: [PATCH 48/79] Fixed reversed part of LCD bus. Added even more
- missing entries (TBC).
-
----
- arch/arm/mach-omap2/mux33xx.c | 56 ++++++++++++++++++++---------------------
- 1 file changed, 28 insertions(+), 28 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/mux33xx.c b/arch/arm/mach-omap2/mux33xx.c
-index 26ecd66..72ac899 100644
---- a/arch/arm/mach-omap2/mux33xx.c
-+++ b/arch/arm/mach-omap2/mux33xx.c
-@@ -34,54 +34,54 @@
- * Marked lines with completed spec by leading empty comment.
- */
- static struct omap_mux __initdata am33xx_muxmodes[] = {
-- _AM33XX_MUXENTRY(GPMC_AD0, 0,
-+/**/ _AM33XX_MUXENTRY(GPMC_AD0, 0,
- "gpmc_ad0", "mmc1_dat0", NULL, NULL,
- NULL, NULL, NULL, "gpio1_0"),
-- _AM33XX_MUXENTRY(GPMC_AD1, 0,
-+/**/ _AM33XX_MUXENTRY(GPMC_AD1, 0,
- "gpmc_ad1", "mmc1_dat1", NULL, NULL,
- NULL, NULL, NULL, "gpio1_1"),
-- _AM33XX_MUXENTRY(GPMC_AD2, 0,
-+/**/ _AM33XX_MUXENTRY(GPMC_AD2, 0,
- "gpmc_ad2", "mmc1_dat2", NULL, NULL,
- NULL, NULL, NULL, "gpio1_2"),
-- _AM33XX_MUXENTRY(GPMC_AD3, 0,
-+/**/ _AM33XX_MUXENTRY(GPMC_AD3, 0,
- "gpmc_ad3", "mmc1_dat3", NULL, NULL,
- NULL, NULL, NULL, "gpio1_3"),
-- _AM33XX_MUXENTRY(GPMC_AD4, 0,
-+/**/ _AM33XX_MUXENTRY(GPMC_AD4, 0,
- "gpmc_ad4", "mmc1_dat4", NULL, NULL,
- NULL, NULL, NULL, "gpio1_4"),
-- _AM33XX_MUXENTRY(GPMC_AD5, 0,
-+/**/ _AM33XX_MUXENTRY(GPMC_AD5, 0,
- "gpmc_ad5", "mmc1_dat5", NULL, NULL,
- NULL, NULL, NULL, "gpio1_5"),
-- _AM33XX_MUXENTRY(GPMC_AD6, 0,
-+/**/ _AM33XX_MUXENTRY(GPMC_AD6, 0,
- "gpmc_ad6", "mmc1_dat6", NULL, NULL,
- NULL, NULL, NULL, "gpio1_6"),
-- _AM33XX_MUXENTRY(GPMC_AD7, 0,
-+/**/ _AM33XX_MUXENTRY(GPMC_AD7, 0,
- "gpmc_ad7", "mmc1_dat7", NULL, NULL,
- NULL, NULL, NULL, "gpio1_7"),
- /**/ _AM33XX_MUXENTRY(GPMC_AD8, 0,
-- "gpmc_ad8", "lcd_data16", "mmc1_dat0", "mmc2_dat4",
-+ "gpmc_ad8", "lcd_data23", "mmc1_dat0", "mmc2_dat4",
- "ehrpwm2A", "pr1_mii_mt0_clk", NULL, "gpio0_22"),
- /**/ _AM33XX_MUXENTRY(GPMC_AD9, 0,
-- "gpmc_ad9", "lcd_data17", "mmc1_dat1", "mmc2_dat5",
-+ "gpmc_ad9", "lcd_data22", "mmc1_dat1", "mmc2_dat5",
- "ehrpwm2B", "pr1_mii0_col", NULL, "gpio0_23"),
- /**/ _AM33XX_MUXENTRY(GPMC_AD10, 0,
-- "gpmc_ad10", "lcd_data18", "mmc1_dat2", "mmc2_dat6",
-+ "gpmc_ad10", "lcd_data21", "mmc1_dat2", "mmc2_dat6",
- "ehrpwm2_tripzone_input", "pr1_mii0_txen", NULL, "gpio0_26"),
- /**/ _AM33XX_MUXENTRY(GPMC_AD11, 0,
-- "gpmc_ad11", "lcd_data19", "mmc1_dat3", "mmc2_dat7",
-+ "gpmc_ad11", "lcd_data20", "mmc1_dat3", "mmc2_dat7",
- "ehrpwm0_synco", "pr1_mii0_txd3", NULL, "gpio0_27"),
- /**/ _AM33XX_MUXENTRY(GPMC_AD12, 0,
-- "gpmc_ad12", "lcd_data20", "mmc1_dat4", "mmc2_dat0",
-+ "gpmc_ad12", "lcd_data19", "mmc1_dat4", "mmc2_dat0",
- "eqep2a_in", "pr1_mii0_txd2", "pr1_pru0_pru_r30_14", "gpio1_12"),
-- _AM33XX_MUXENTRY(GPMC_AD13, 0,
-- "gpmc_ad13", "lcd_data21", "mmc1_dat5", "mmc2_dat1",
-- NULL, NULL, NULL, "gpio1_13"),
-- _AM33XX_MUXENTRY(GPMC_AD14, 0,
-- "gpmc_ad14", "lcd_data22", "mmc1_dat6", "mmc2_dat2",
-- NULL, NULL, NULL, "gpio1_14"),
-- _AM33XX_MUXENTRY(GPMC_AD15, 0,
-- "gpmc_ad15", "lcd_data23", "mmc1_dat7", "mmc2_dat3",
-- NULL, NULL, NULL, "gpio1_15"),
-+/**/ _AM33XX_MUXENTRY(GPMC_AD13, 0,
-+ "gpmc_ad13", "lcd_data18", "mmc1_dat5", "mmc2_dat1",
-+ "eqep2B_in", "pr1_mii0_txd", "pr1_pru0_pru_r30_15", "gpio1_13"),
-+/**/ _AM33XX_MUXENTRY(GPMC_AD14, 0,
-+ "gpmc_ad14", "lcd_data17", "mmc1_dat6", "mmc2_dat2",
-+ "eqep2_index", "pr1_mii0_txd0", "pr1_pru0_pru_r31_14", "gpio1_14"),
-+/**/ _AM33XX_MUXENTRY(GPMC_AD15, 0,
-+ "gpmc_ad15", "lcd_data16", "mmc1_dat7", "mmc2_dat3",
-+ "eqep2_strobe", "pr1_ecap0_ecap_capin_apwm_o", "pr1_pru0_pru_r31_15", "gpio1_15"),
- /**/ _AM33XX_MUXENTRY(GPMC_A0, 0,
- "gpmc_a0", "gmii2_txen", "rgmii2_tctl", "rmii2_txen",
- "gpmc_a16", "pr1_mii_mt1_clk", "ehrpwm1_tripzone_input", "gpio1_16"),
-@@ -154,12 +154,12 @@ static struct omap_mux __initdata am33xx_muxmodes[] = {
- _AM33XX_MUXENTRY(GPMC_BEN0_CLE, 0,
- "gpmc_ben0_cle", NULL, NULL, NULL,
- NULL, NULL, NULL, "gpio2_5"),
-- _AM33XX_MUXENTRY(LCD_DATA0, 0,
-- "lcd_data0", "gpmc_a0", NULL, NULL,
-- NULL, NULL, NULL, "gpio2_6"),
-- _AM33XX_MUXENTRY(LCD_DATA1, 0,
-- "lcd_data1", "gpmc_a1", NULL, NULL,
-- NULL, NULL, NULL, "gpio2_7"),
-+/**/ _AM33XX_MUXENTRY(LCD_DATA0, 0,
-+ "lcd_data0", "gpmc_a0", "pr1_mii_mt0_clk", "ehrpwm2A",
-+ NULL, "pr1_pru1_pru_r30_0", "pr1_pru1_pru_r31_0", "gpio2_6"),
-+/**/ _AM33XX_MUXENTRY(LCD_DATA1, 0,
-+ "lcd_data1", "gpmc_a1", "pr1_mii0_txen", "ehrpwm2B",
-+ NULL, "pr1_pru1_pru_r30_1", "pr1_pru1_pru_r31_1", "gpio2_7"),
- /**/ _AM33XX_MUXENTRY(LCD_DATA2, 0,
- "lcd_data2", "gpmc_a2", "pr1_mii0_txd3", "ehrpwm2_tripzone_input",
- NULL, "pr1_pru1_pru_r30_2", "pr1_pru1_pru_r31_2", "gpio2_8"),
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0049-ts_tscadc-add-defines-for-4x-and-16x-oversampling.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0049-ts_tscadc-add-defines-for-4x-and-16x-oversampling.patch
deleted file mode 100644
index ad1ad73..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0049-ts_tscadc-add-defines-for-4x-and-16x-oversampling.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From e55b5da533e82e6f61c7ccd947623bce7a45ebf9 Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen at dominion.thruhere.net>
-Date: Sat, 19 May 2012 11:29:14 +0200
-Subject: [PATCH 49/79] ts_tscadc: add defines for 4x and 16x oversampling
-
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- drivers/input/touchscreen/ti_tscadc.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/drivers/input/touchscreen/ti_tscadc.c b/drivers/input/touchscreen/ti_tscadc.c
-index 4fd2e18..acb62d1 100644
---- a/drivers/input/touchscreen/ti_tscadc.c
-+++ b/drivers/input/touchscreen/ti_tscadc.c
-@@ -83,6 +83,8 @@ static DEVICE_ATTR(ain8, S_IRUGO, do_adc_sample, NULL);
- #define TSCADC_STEPCONFIG_MODE_SWCONT 0x1
- #define TSCADC_STEPCONFIG_MODE_SWONESHOT 0x0
- #define TSCADC_STEPCONFIG_2SAMPLES_AVG (1 << 4)
-+#define TSCADC_STEPCONFIG_4SAMPLES_AVG (1 << 3)
-+#define TSCADC_STEPCONFIG_16SAMPLES_AVG (1 << 2)
- #define TSCADC_STEPCONFIG_NO_AVG 0
- #define TSCADC_STEPCONFIG_XPP BIT(5)
- #define TSCADC_STEPCONFIG_XNN BIT(6)
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0050-ts_tscadc-switch-to-4x-oversampling.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0050-ts_tscadc-switch-to-4x-oversampling.patch
deleted file mode 100644
index 60c527a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0050-ts_tscadc-switch-to-4x-oversampling.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From 4ec4eca3d419986b16b226d1ebdd2c103077ae07 Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen at dominion.thruhere.net>
-Date: Sat, 19 May 2012 11:37:21 +0200
-Subject: [PATCH 50/79] ts_tscadc: switch to 4x oversampling
-
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- drivers/input/touchscreen/ti_tscadc.c | 10 +++++-----
- 1 file changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/drivers/input/touchscreen/ti_tscadc.c b/drivers/input/touchscreen/ti_tscadc.c
-index acb62d1..7df7bb2 100644
---- a/drivers/input/touchscreen/ti_tscadc.c
-+++ b/drivers/input/touchscreen/ti_tscadc.c
-@@ -157,11 +157,11 @@ static void tsc_adc_step_config(struct tscadc *ts_dev, int channel)
- /*
- * Step Configuration
- * software-enabled continous mode
-- * 2 sample averaging
-+ * 4 sample averaging
- * sample channel 1 (SEL_INP mux bits = 0)
- */
- stepconfig = TSCADC_STEPCONFIG_MODE_SWONESHOT |
-- TSCADC_STEPCONFIG_2SAMPLES_AVG |
-+ TSCADC_STEPCONFIG_4SAMPLES_AVG |
- ((channel-1) << 19);
-
- delay = TSCADC_STEPCONFIG_SAMPLEDLY | TSCADC_STEPCONFIG_OPENDLY;
-@@ -242,7 +242,7 @@ static void tsc_step_config(struct tscadc *ts_dev)
- delay = TSCADC_STEPCONFIG_SAMPLEDLY | TSCADC_STEPCONFIG_OPENDLY;
-
- stepconfigx = TSCADC_STEPCONFIG_MODE_HWSYNC |
-- TSCADC_STEPCONFIG_2SAMPLES_AVG | TSCADC_STEPCONFIG_XPP;
-+ TSCADC_STEPCONFIG_4SAMPLES_AVG | TSCADC_STEPCONFIG_XPP;
-
- switch (ts_dev->wires) {
- case 4:
-@@ -279,7 +279,7 @@ static void tsc_step_config(struct tscadc *ts_dev)
- }
-
- stepconfigy = TSCADC_STEPCONFIG_MODE_HWSYNC |
-- TSCADC_STEPCONFIG_2SAMPLES_AVG | TSCADC_STEPCONFIG_YNN |
-+ TSCADC_STEPCONFIG_4SAMPLES_AVG | TSCADC_STEPCONFIG_YNN |
- TSCADC_STEPCONFIG_INM | TSCADC_STEPCONFIG_FIFO1;
- switch (ts_dev->wires) {
- case 4:
-@@ -324,7 +324,7 @@ static void tsc_step_config(struct tscadc *ts_dev)
-
- /* Configure to calculate pressure */
- stepconfigz1 = TSCADC_STEPCONFIG_MODE_HWSYNC |
-- TSCADC_STEPCONFIG_2SAMPLES_AVG |
-+ TSCADC_STEPCONFIG_4SAMPLES_AVG |
- TSCADC_STEPCONFIG_XNP |
- TSCADC_STEPCONFIG_YPN | TSCADC_STEPCONFIG_INM;
- stepconfigz2 = stepconfigz1 | TSCADC_STEPCONFIG_Z1 |
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0051-Fixed-size-of-pinmux-data-array-in-EEPROM-data-struc.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0051-Fixed-size-of-pinmux-data-array-in-EEPROM-data-struc.patch
deleted file mode 100644
index 711c663..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0051-Fixed-size-of-pinmux-data-array-in-EEPROM-data-struc.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From a765d50c30374795b0d421a25a65516d6a66e990 Mon Sep 17 00:00:00 2001
-From: Bas Laarhoven <sjml at xs4all.nl>
-Date: Sun, 13 May 2012 18:07:59 +0200
-Subject: [PATCH 51/79] Fixed size of pinmux data array in EEPROM data struct.
-
-Signed-off-by: Bas Laarhoven <sjml at xs4all.nl>
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- arch/arm/mach-omap2/board-am335xevm.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index ece4e46..c6ec997 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -483,7 +483,7 @@ struct beaglebone_cape_eeprom_config {
- char partnumber[16];
- u16 numpins;
- char serial[12];
-- u8 muxdata[170];
-+ u16 muxdata[74];
- u16 current_3v3;
- u16 current_vdd5v;
- u16 current_sys5v;
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0052-Implemented-Bone-Cape-configuration-from-EEPROM.-Onl.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0052-Implemented-Bone-Cape-configuration-from-EEPROM.-Onl.patch
deleted file mode 100644
index 15b428e..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0052-Implemented-Bone-Cape-configuration-from-EEPROM.-Onl.patch
+++ /dev/null
@@ -1,363 +0,0 @@
-From 2ab55bf6a97122999e0cd6cbe18869fb89b59c0a Mon Sep 17 00:00:00 2001
-From: Bas Laarhoven <sjml at xs4all.nl>
-Date: Sun, 13 May 2012 18:14:22 +0200
-Subject: [PATCH 52/79] Implemented Bone Cape configuration from EEPROM. Only
- used for BEBOPR cape for now.
-
-Signed-off-by: Bas Laarhoven <sjml at xs4all.nl>
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- arch/arm/mach-omap2/board-am335xevm.c | 304 +++++++++++++++++++++++++++++++++
- arch/arm/mach-omap2/mux33xx.c | 14 ++
- 2 files changed, 318 insertions(+)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index c6ec997..7fb8295 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -2231,6 +2231,304 @@ static void tt3201_init(int evm_id, int profile)
-
- am33xx_d_can_init(1);
- }
-+
-+static const char* cape_pins[] = {
-+/*
-+ From SRM RevA5.0.1:
-+*/
-+ /* offset 88 - P9-22 */ "uart2_rxd",
-+ /* offset 90 - P9-21 */ "uart2_txd",
-+ /* offset 92 - P9-18 */ "spi0_d1",
-+ /* offset 94 - P9-17 */ "spi0_cs0",
-+ /* offset 96 - P9-42 */ "ecap0_in_pwm0_out",
-+ /* offset 98 - P8-35 */ "lcd_data12",
-+ /* offset 100 - P8-33 */ "lcd_data13",
-+ /* offset 102 - P8-31 */ "lcd_data14",
-+ /* offset 104 - P8-32 */ "lcd_data15",
-+ /* offset 106 - P9-19 */ "uart1_rtsn",
-+ /* offset 108 - P9-20 */ "uart1_ctsn",
-+ /* offset 110 - P9-26 */ "uart1_rxd",
-+ /* offset 112 - P9-24 */ "uart1_txd",
-+ /* offset 114 - P9-41 */ "xdma_event_intr1",
-+ /* offset 116 - P8-19 */ "gpmc_ad8",
-+ /* offset 118 - P8-13 */ "gpmc_ad9",
-+ /* offset 120 - P8-14 */ "gpmc_ad10",
-+ /* offset 122 - P8-17 */ "gpmc_ad12",
-+ /* offset 124 - P9-11 */ "gpmc_wait0",
-+ /* offset 126 - P9-13 */ "gpmc_wpn",
-+ /* offset 128 - P8-25 */ "gpmc_ad0",
-+ /* offset 130 - P8-24 */ "gpmc_ad1",
-+ /* offset 132 - P8- 5 */ "gpmc_ad2",
-+ /* offset 134 - P8- 6 */ "gpmc_ad3",
-+ /* offset 136 - P8-23 */ "gpmc_ad4",
-+ /* offset 138 - P8-22 */ "gpmc_ad5",
-+ /* offset 140 - P8- 3 */ "gpmc_ad6",
-+ /* offset 142 - P8- 4 */ "gpmc_ad7",
-+ /* offset 144 - P8-12 */ "gpmc_ad12",
-+ /* offset 146 - P8-11 */ "gpmc_ad13",
-+ /* offset 148 - P8-16 */ "gpmc_ad14",
-+ /* offset 150 - P8-15 */ "gpmc_ad15",
-+ /* offset 152 - P9-15 */ "gpmc_a0",
-+ /* offset 154 - P9-23 */ "gpmc_a1",
-+ /* offset 156 - P9-14 */ "gpmc_a2",
-+ /* offset 158 - P9-16 */ "gpmc_a3",
-+ /* offset 160 - P9-12 */ "gpmc_be1n",
-+ /* offset 162 - P8-26 */ "gpmc_csn0",
-+ /* offset 164 - P8-21 */ "gpmc_csn1",
-+ /* offset 166 - P8-20 */ "gpmc_csn2",
-+ /* offset 168 - P8-18 */ "gpmc_clk",
-+ /* offset 170 - P8-7 */ "gpmc_advn_ale",
-+ /* offset 172 - P8-9 */ "gpmc_ben0_cle",
-+ /* offset 174 - P8-10 */ "gpmc_wen",
-+ /* offset 176 - P8-8 */ "gpmc_csn3",
-+ /* offset 178 - P8-45 */ "lcd_data0",
-+ /* offset 180 - P8-46 */ "lcd_data1",
-+ /* offset 182 - P8-43 */ "lcd_data2",
-+ /* offset 184 - P8-44 */ "lcd_data3",
-+ /* offset 186 - P8-41 */ "lcd_data4",
-+ /* offset 188 - P8-42 */ "lcd_data5",
-+ /* offset 190 - P8-39 */ "lcd_data6",
-+ /* offset 192 - P8-40 */ "lcd_data7",
-+ /* offset 194 - P8-37 */ "lcd_data8",
-+ /* offset 196 - P8-38 */ "lcd_data9",
-+ /* offset 198 - P8-36 */ "lcd_data10",
-+ /* offset 200 - P8-34 */ "lcd_data11",
-+ /* offset 202 - P8-27 */ "lcd_vsync",
-+ /* offset 204 - P8-29 */ "lcd_hsync",
-+ /* offset 206 - P8-28 */ "lcd_pclk",
-+ /* offset 208 - P8-30 */ "lcd_ac_bias_en",
-+ /* offset 210 - P9-29 */ "mcasp0_fsx",
-+ /* offset 212 - P9-30 */ "mcasp0_axr0",
-+ /* offset 214 - P9-28 */ "mcasp0_ahclkr",
-+ /* offset 216 - P9-27 */ "mcasp0_fsr",
-+ /* offset 218 - P9-31 */ "mcasp0_aclkx",
-+ /* offset 220 - P9-25 */ "mcasp0_ahclkx",
-+ /* offset 222 - P9-39 */ "ain0",
-+ /* offset 224 - P9-40 */ "ain1",
-+ /* offset 226 - P9-37 */ "ain2",
-+ /* offset 228 - P9-38 */ "ain3",
-+ /* offset 230 - P9-33 */ "ain4",
-+ /* offset 232 - P9-36 */ "ain5",
-+ /* offset 234 - P9-35 */ "ain6",
-+};
-+
-+#define BIG_ENDIAN_16( i) ( ((i & 255) << 8) | ((i >> 8) & 255) )
-+#define NR_ITEMS( x) (sizeof( (x)) / sizeof( *(x)))
-+
-+extern int am33xx_mux_get_entry( int index, struct omap_mux** mux);
-+
-+typedef union {
-+/*
-+ From SRM RevA5.0.1:
-+ Bit 15 Pin is used or not: 0=Unused by Cape 1=Used by Cape
-+ Bit 14-13 Pin Direction: 10=Output 01=Input 11=BDIR
-+ Bit 12-7 Reserved
-+ Bit 6 Slew Rate: 0=Fast 1=Slow
-+ Bit 5 Rx Enable: 0=Disabled 1=Enabled
-+ Bit 4 Pull Up/Dn Select: 0=Pulldown 1=PullUp
-+ Bit 3 Pull Up/DN enabled: 0=Enabled 1=Disabled
-+ Bit 2-0 Mux Mode Selection: Mode 0-7
-+*/
-+ struct {
-+ uint16_t mux : 3;
-+ uint16_t pull_enable : 1;
-+ uint16_t pull_up : 1;
-+ uint16_t rx_enable : 1;
-+ uint16_t slew_rate : 1;
-+ uint16_t reserved : 6;
-+ uint16_t direction : 2;
-+ uint16_t used : 1;
-+ };
-+ uint16_t value;
-+} pin_def;
-+
-+#define DEBUG_EEPROM_CONFIG 0
-+
-+static int bone_io_get_mux_setting( pin_def setting)
-+{
-+ int pin_setting;
-+
-+ switch (setting.direction) {
-+ case 1:
-+ /* input */
-+ if (setting.pull_enable) {
-+ if (setting.pull_up) {
-+ pin_setting = AM33XX_PIN_INPUT_PULLUP;
-+ } else {
-+ pin_setting = AM33XX_PIN_INPUT_PULLDOWN;
-+ }
-+ } else {
-+ pin_setting = AM33XX_PIN_INPUT;
-+ }
-+ if (!setting.rx_enable) {
-+#if DEBUG_EEPROM_CONFIG
-+ pr_warning( " pin is set as input but the receiver is not enabled!\n");
-+#endif
-+ }
-+ break;
-+ case 2:
-+ /* output */
-+ pin_setting = AM33XX_PIN_OUTPUT;
-+ break;
-+ case 3:
-+ /* bi-dir */
-+ default:
-+ /* reserved */
-+#if DEBUG_EEPROM_CONFIG
-+ pr_warning( " pin ignored because it uses an unsupported mode: 0x%04x\n",
-+ setting.direction);
-+#endif
-+ return -1;
-+ }
-+#if DEBUG_EEPROM_CONFIG
-+ pr_info(" pin is configured as %s\n",
-+ (pin_setting & AM33XX_PIN_INPUT) ? "input" : "output");
-+#endif
-+ switch (setting.mux) {
-+ case 0: pin_setting |= OMAP_MUX_MODE0; break;
-+ case 1: pin_setting |= OMAP_MUX_MODE1; break;
-+ case 2: pin_setting |= OMAP_MUX_MODE2; break;
-+ case 3: pin_setting |= OMAP_MUX_MODE3; break;
-+ case 4: pin_setting |= OMAP_MUX_MODE4; break;
-+ case 5: pin_setting |= OMAP_MUX_MODE5; break;
-+ case 6: pin_setting |= OMAP_MUX_MODE6; break;
-+ case 7: pin_setting |= OMAP_MUX_MODE7; break;
-+ }
-+ return pin_setting;
-+}
-+
-+static struct omap_mux* bone_io_pin_lookup( const char* pin_name)
-+{
-+ int index = 0;
-+ struct omap_mux* mux;
-+
-+ for (;;) {
-+ if (am33xx_mux_get_entry( index, &mux) < 0) {
-+ /* no more entries */
-+#if DEBUG_EEPROM_CONFIG
-+ pr_warning( " configuration error, pin '%s' not found in mux database\n",
-+ pin_name);
-+#endif
-+ return NULL;
-+ }
-+ if (mux != NULL &&
-+ mux->muxnames[ 0] != NULL &&
-+ strcmp( mux->muxnames[ 0], pin_name) == 0)
-+ {
-+ /* entry found */
-+#if DEBUG_EEPROM_CONFIG
-+ pr_info( " found pin '%s' at index %d in mux database'\n",
-+ pin_name, index);
-+#endif
-+ return mux;
-+ }
-+ ++index;
-+ }
-+}
-+
-+static int bone_io_config_pin( const char* pin_name, pin_def eeprom_setting)
-+{
-+ struct omap_mux* mux;
-+ char* signal_name;
-+ int pin_setting = bone_io_get_mux_setting( eeprom_setting);
-+ int l1, l2;
-+ char full_name[ 50];
-+
-+ if (pin_setting < 0) {
-+ return -1;
-+ }
-+
-+ mux = bone_io_pin_lookup( pin_name);
-+
-+ if (mux == NULL) {
-+ return -1;
-+ }
-+
-+ signal_name = mux->muxnames[ eeprom_setting.mux];
-+
-+ if (signal_name == NULL) {
-+#if DEBUG_EEPROM_CONFIG
-+ pr_warning( " Configuration error, no signal found for pin '%s' in mode %d\n",
-+ pin_name, eeprom_setting.mux);
-+#endif
-+ return -1;
-+ }
-+
-+#if DEBUG_EEPROM_CONFIG
-+ pr_info( " setting pin '%s' to signal '%s'\n",
-+ pin_name, signal_name);
-+#endif
-+ l1 = strlen( pin_name);
-+ l2 = strlen( signal_name);
-+
-+ if (l1 + 1 + l2 + 1 > sizeof( full_name)) {
-+#if DEBUG_EEPROM_CONFIG
-+ pr_warning( " Internal error, combined signal name too long\n");
-+#endif
-+ return -1;
-+ } else {
-+ memcpy( full_name, pin_name, l1);
-+ full_name[ l1] = '.';
-+ memcpy( full_name + l1 + 1, signal_name, l2);
-+ full_name[ l1 + 1 + l2] = '\0';
-+ if (omap_mux_init_signal( full_name, pin_setting) < 0) {
-+ return -1;
-+ }
-+#if DEBUG_EEPROM_CONFIG
-+ pr_info( " mux '%s' was set to mode 0x%04x\n",
-+ full_name, pin_setting);
-+#endif
-+ }
-+ // return 0 for input, 1 for output
-+ return (pin_setting & AM33XX_PIN_INPUT) ? 0 : 1;
-+}
-+
-+#define RULER( x) \
-+ do { \
-+ char* p = status; \
-+ int i = 0; \
-+ int cnt = x; \
-+ status[ cnt] = '\0'; \
-+ while (cnt--) { \
-+ if (++i == 10) { \
-+ *p++ = '+'; \
-+ i = 0; \
-+ } else { \
-+ *p++ = '-'; \
-+ } \
-+ } \
-+ pr_info( "+%s+\n", status); \
-+ } while (0)
-+
-+static void bone_io_config_from_cape_eeprom( void)
-+{
-+ int i;
-+ int cnt = BIG_ENDIAN_16( cape_config.numpins);
-+ u16* pmuxdata;
-+ char status[ NR_ITEMS( cape_config.muxdata) + 1];
-+
-+ pr_info( "BeagleBone cape: configuring %2d out of %2d signals:\n",
-+ cnt, NR_ITEMS( cape_config.muxdata));
-+ RULER( NR_ITEMS( cape_config.muxdata));
-+ for (i = 0, pmuxdata = cape_config.muxdata ; i < NR_ITEMS( cape_config.muxdata) ; ++i, ++pmuxdata) {
-+ const char* pin_name = cape_pins[ i];
-+ pin_def pin_setting = { .value = BIG_ENDIAN_16( *pmuxdata) };
-+
-+ if (pin_setting.used) {
-+ switch (bone_io_config_pin( pin_name, pin_setting)) {
-+ case 0: status[ i] = 'i'; break;
-+ case 1: status[ i] = 'o'; break;
-+ default: status[ i] = '#'; break;
-+ }
-+ } else {
-+ status[ i] = ' ';
-+ }
-+ }
-+ status[ NR_ITEMS( cape_config.muxdata)] = '\0';
-+ pr_info( "|%s|\n", status);
-+ RULER( NR_ITEMS( cape_config.muxdata));
-+}
-+
- static void beaglebone_cape_setup(struct memory_accessor *mem_acc, void *context)
- {
- int ret;
-@@ -2280,6 +2578,12 @@ static void beaglebone_cape_setup(struct memory_accessor *mem_acc, void *context
- snprintf(tmp, sizeof(cape_config.partnumber) + 1, "%s", cape_config.partnumber);
- pr_info("BeagleBone cape partnumber: %s\n", tmp);
-
-+ if (!strncmp( "BEBOPR", cape_config.name, 6)) {
-+ pr_info( "BeagleBone cape: initializing BEBOPR cape\n");
-+ bone_io_config_from_cape_eeprom();
-+ return; // if configured from eeprom, skip all other initialization
-+ }
-+
- if (!strncmp("BB-BONE-DVID-01", cape_config.partnumber, 15)) {
- pr_info("BeagleBone cape: initializing DVI cape\n");
-
-diff --git a/arch/arm/mach-omap2/mux33xx.c b/arch/arm/mach-omap2/mux33xx.c
-index 72ac899..43c8989 100644
---- a/arch/arm/mach-omap2/mux33xx.c
-+++ b/arch/arm/mach-omap2/mux33xx.c
-@@ -616,6 +616,20 @@ int __init am33xx_mux_init(struct omap_board_mux *board_subset)
- AM33XX_CONTROL_PADCONF_MUX_SIZE, am33xx_muxmodes,
- NULL, board_subset, NULL);
- }
-+
-+#define NR_ITEMS( x) (sizeof( (x)) / sizeof( *(x)))
-+
-+int am33xx_mux_get_entry( int index, struct omap_mux** mux)
-+{
-+ if (index >= 0 && index < NR_ITEMS( am33xx_muxmodes)) {
-+ *mux = &am33xx_muxmodes[ index];
-+ return 0;
-+ } else {
-+ *mux = NULL;
-+ return -1;
-+ }
-+}
-+
- #else
- int __init am33xx_mux_init(struct omap_board_mux *board_subset)
- {
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0053-Replaced-conditional-debug-code-by-pr_debug-statemen.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0053-Replaced-conditional-debug-code-by-pr_debug-statemen.patch
deleted file mode 100644
index 28024ee..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0053-Replaced-conditional-debug-code-by-pr_debug-statemen.patch
+++ /dev/null
@@ -1,188 +0,0 @@
-From 15a5705cf271c9571719d6e5e09e33efba9576b4 Mon Sep 17 00:00:00 2001
-From: Bas Laarhoven <sjml at xs4all.nl>
-Date: Mon, 14 May 2012 14:31:37 +0200
-Subject: [PATCH 53/79] Replaced conditional debug code by pr_debug statements
- for cleaner code.
-
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- arch/arm/mach-omap2/board-am335xevm.c | 91 +++++++++++++--------------------
- 1 file changed, 36 insertions(+), 55 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index 7fb8295..d6a607a 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -2323,23 +2323,23 @@ typedef union {
- Bit 15 Pin is used or not: 0=Unused by Cape 1=Used by Cape
- Bit 14-13 Pin Direction: 10=Output 01=Input 11=BDIR
- Bit 12-7 Reserved
-- Bit 6 Slew Rate: 0=Fast 1=Slow
-- Bit 5 Rx Enable: 0=Disabled 1=Enabled
-- Bit 4 Pull Up/Dn Select: 0=Pulldown 1=PullUp
-- Bit 3 Pull Up/DN enabled: 0=Enabled 1=Disabled
-+ Bit 6 Slew Rate: 0=Fast 1=Slow
-+ Bit 5 Rx Enable: 0=Disabled 1=Enabled
-+ Bit 4 Pull Up/Dn Select: 0=Pulldown 1=PullUp
-+ Bit 3 Pull Up/DN enabled: 0=Enabled 1=Disabled
- Bit 2-0 Mux Mode Selection: Mode 0-7
- */
- struct {
-- uint16_t mux : 3;
-- uint16_t pull_enable : 1;
-- uint16_t pull_up : 1;
-- uint16_t rx_enable : 1;
-- uint16_t slew_rate : 1;
-- uint16_t reserved : 6;
-- uint16_t direction : 2;
-- uint16_t used : 1;
-+ uint16_t mux : 3;
-+ uint16_t pull_enable : 1;
-+ uint16_t pull_up : 1;
-+ uint16_t rx_enable : 1;
-+ uint16_t slew_rate : 1;
-+ uint16_t reserved : 6;
-+ uint16_t direction : 2;
-+ uint16_t used : 1;
- };
-- uint16_t value;
-+ uint16_t value;
- } pin_def;
-
- #define DEBUG_EEPROM_CONFIG 0
-@@ -2351,39 +2351,33 @@ static int bone_io_get_mux_setting( pin_def setting)
- switch (setting.direction) {
- case 1:
- /* input */
-- if (setting.pull_enable) {
-+ if (setting.pull_enable) {
- if (setting.pull_up) {
-- pin_setting = AM33XX_PIN_INPUT_PULLUP;
-+ pin_setting = AM33XX_PIN_INPUT_PULLUP;
- } else {
-- pin_setting = AM33XX_PIN_INPUT_PULLDOWN;
-+ pin_setting = AM33XX_PIN_INPUT_PULLDOWN;
- }
- } else {
-- pin_setting = AM33XX_PIN_INPUT;
-+ pin_setting = AM33XX_PIN_INPUT;
- }
- if (!setting.rx_enable) {
--#if DEBUG_EEPROM_CONFIG
-- pr_warning( " pin is set as input but the receiver is not enabled!\n");
--#endif
-+ pr_debug( " pin is set as input but the receiver is not enabled!\n");
- }
- break;
- case 2:
- /* output */
-- pin_setting = AM33XX_PIN_OUTPUT;
-+ pin_setting = AM33XX_PIN_OUTPUT;
- break;
- case 3:
- /* bi-dir */
- default:
- /* reserved */
--#if DEBUG_EEPROM_CONFIG
-- pr_warning( " pin ignored because it uses an unsupported mode: 0x%04x\n",
-- setting.direction);
--#endif
-+ pr_debug( " pin ignored because it uses an unsupported mode: 0x%04x\n",
-+ setting.direction);
- return -1;
- }
--#if DEBUG_EEPROM_CONFIG
-- pr_info(" pin is configured as %s\n",
-+ pr_debug(" pin is configured as %s\n",
- (pin_setting & AM33XX_PIN_INPUT) ? "input" : "output");
--#endif
- switch (setting.mux) {
- case 0: pin_setting |= OMAP_MUX_MODE0; break;
- case 1: pin_setting |= OMAP_MUX_MODE1; break;
-@@ -2404,11 +2398,9 @@ static struct omap_mux* bone_io_pin_lookup( const char* pin_name)
-
- for (;;) {
- if (am33xx_mux_get_entry( index, &mux) < 0) {
-- /* no more entries */
--#if DEBUG_EEPROM_CONFIG
-- pr_warning( " configuration error, pin '%s' not found in mux database\n",
-- pin_name);
--#endif
-+ /* no more entries */
-+ pr_debug( " configuration error, pin '%s' not found in mux database\n",
-+ pin_name);
- return NULL;
- }
- if (mux != NULL &&
-@@ -2416,10 +2408,8 @@ static struct omap_mux* bone_io_pin_lookup( const char* pin_name)
- strcmp( mux->muxnames[ 0], pin_name) == 0)
- {
- /* entry found */
--#if DEBUG_EEPROM_CONFIG
-- pr_info( " found pin '%s' at index %d in mux database'\n",
-- pin_name, index);
--#endif
-+ pr_debug( " found pin '%s' at index %d in mux database'\n",
-+ pin_name, index);
- return mux;
- }
- ++index;
-@@ -2447,37 +2437,28 @@ static int bone_io_config_pin( const char* pin_name, pin_def eeprom_setting)
- signal_name = mux->muxnames[ eeprom_setting.mux];
-
- if (signal_name == NULL) {
--#if DEBUG_EEPROM_CONFIG
-- pr_warning( " Configuration error, no signal found for pin '%s' in mode %d\n",
-- pin_name, eeprom_setting.mux);
--#endif
-+ pr_debug( " Configuration error, no signal found for pin '%s' in mode %d\n",
-+ pin_name, eeprom_setting.mux);
- return -1;
- }
--
--#if DEBUG_EEPROM_CONFIG
-- pr_info( " setting pin '%s' to signal '%s'\n",
-+ pr_debug( " setting pin '%s' to signal '%s'\n",
- pin_name, signal_name);
--#endif
-- l1 = strlen( pin_name);
-+ l1 = strlen( pin_name);
- l2 = strlen( signal_name);
-
- if (l1 + 1 + l2 + 1 > sizeof( full_name)) {
--#if DEBUG_EEPROM_CONFIG
-- pr_warning( " Internal error, combined signal name too long\n");
--#endif
-+ pr_debug( " Internal error, combined signal name too long\n");
- return -1;
- } else {
-- memcpy( full_name, pin_name, l1);
-+ memcpy( full_name, pin_name, l1);
- full_name[ l1] = '.';
- memcpy( full_name + l1 + 1, signal_name, l2);
- full_name[ l1 + 1 + l2] = '\0';
- if (omap_mux_init_signal( full_name, pin_setting) < 0) {
- return -1;
- }
--#if DEBUG_EEPROM_CONFIG
-- pr_info( " mux '%s' was set to mode 0x%04x\n",
-+ pr_debug( " mux '%s' was set to mode 0x%04x\n",
- full_name, pin_setting);
--#endif
- }
- // return 0 for input, 1 for output
- return (pin_setting & AM33XX_PIN_INPUT) ? 0 : 1;
-@@ -2516,8 +2497,8 @@ static void bone_io_config_from_cape_eeprom( void)
-
- if (pin_setting.used) {
- switch (bone_io_config_pin( pin_name, pin_setting)) {
-- case 0: status[ i] = 'i'; break;
-- case 1: status[ i] = 'o'; break;
-+ case 0: status[ i] = 'i'; break;
-+ case 1: status[ i] = 'o'; break;
- default: status[ i] = '#'; break;
- }
- } else {
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0054-Workaround-for-boards-with-mistaken-ASCII-interpreta.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0054-Workaround-for-boards-with-mistaken-ASCII-interpreta.patch
deleted file mode 100644
index 8957bbe..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0054-Workaround-for-boards-with-mistaken-ASCII-interpreta.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 0d56e585afe2e1cf32a55e93e6a4aa8d659bccf4 Mon Sep 17 00:00:00 2001
-From: Bas Laarhoven <sjml at xs4all.nl>
-Date: Mon, 14 May 2012 14:36:23 +0200
-Subject: [PATCH 54/79] Workaround for boards with (mistaken) ASCII
- interpretation for the numpins field.
-
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- arch/arm/mach-omap2/board-am335xevm.c | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index d6a607a..0a1738a 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -2488,6 +2488,12 @@ static void bone_io_config_from_cape_eeprom( void)
- u16* pmuxdata;
- char status[ NR_ITEMS( cape_config.muxdata) + 1];
-
-+ // Workaround for capes that have encoded this as ASCII
-+ if (cnt > 256) {
-+ pr_info( "BeagleBone cape: workaround for bad 'numpins' setting\n");
-+ cnt = (cape_config.numpins & 255) - '0';
-+ cnt = 10 * cnt + ((cape_config.numpins >> 8) & 255) - '0';
-+ }
- pr_info( "BeagleBone cape: configuring %2d out of %2d signals:\n",
- cnt, NR_ITEMS( cape_config.muxdata));
- RULER( NR_ITEMS( cape_config.muxdata));
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0055-Workaround-for-EEPROM-contents-blocking-further-I2C-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0055-Workaround-for-EEPROM-contents-blocking-further-I2C-.patch
deleted file mode 100644
index 1275fa5..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0055-Workaround-for-EEPROM-contents-blocking-further-I2C-.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 8d8ad2973b9d062763f51f1bee0652a6647033a5 Mon Sep 17 00:00:00 2001
-From: Bas Laarhoven <sjml at xs4all.nl>
-Date: Mon, 14 May 2012 15:07:43 +0200
-Subject: [PATCH 55/79] Workaround for EEPROM contents blocking further I2C
- bus access.
-
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- arch/arm/mach-omap2/board-am335xevm.c | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index 0a1738a..0fa8a32 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -2501,7 +2501,10 @@ static void bone_io_config_from_cape_eeprom( void)
- const char* pin_name = cape_pins[ i];
- pin_def pin_setting = { .value = BIG_ENDIAN_16( *pmuxdata) };
-
-- if (pin_setting.used) {
-+ // Detect broken I2C configuration to prevent bus hangup!
-+ if (i >= 9 && i <= 10) {
-+ status[ i] = '-';
-+ } else if (pin_setting.used) {
- switch (bone_io_config_pin( pin_name, pin_setting)) {
- case 0: status[ i] = 'i'; break;
- case 1: status[ i] = 'o'; break;
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0056-Added-check-on-EEPROM-revision-to-prevent-interpreti.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0056-Added-check-on-EEPROM-revision-to-prevent-interpreti.patch
deleted file mode 100644
index abdaabe..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0056-Added-check-on-EEPROM-revision-to-prevent-interpreti.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From ae7ecbfa459730344eeb559ce0352662c540289c Mon Sep 17 00:00:00 2001
-From: Bas Laarhoven <sjml at xs4all.nl>
-Date: Tue, 15 May 2012 10:00:47 +0200
-Subject: [PATCH 56/79] Added check on EEPROM revision to prevent interpreting
- unknown formats.
-
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- arch/arm/mach-omap2/board-am335xevm.c | 16 +++++++++++++---
- 1 file changed, 13 insertions(+), 3 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index 0fa8a32..68ddfe2 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -2481,12 +2481,21 @@ static int bone_io_config_pin( const char* pin_name, pin_def eeprom_setting)
- pr_info( "+%s+\n", status); \
- } while (0)
-
--static void bone_io_config_from_cape_eeprom( void)
-+static int bone_io_config_from_cape_eeprom( void)
- {
- int i;
- int cnt = BIG_ENDIAN_16( cape_config.numpins);
- u16* pmuxdata;
- char status[ NR_ITEMS( cape_config.muxdata) + 1];
-+ char revision[ NR_ITEMS( cape_config.format_revision) + 1];
-+
-+ strncpy( revision, cape_config.format_revision, NR_ITEMS( revision) - 1);
-+ revision[ NR_ITEMS( revision) - 1] = '\0';
-+ if (strcmp( revision, "A0") != 0) {
-+ pr_warn( "BeagleBone cape: configuration revision '%s' is not supported\n",
-+ revision);
-+ return -1;
-+ }
-
- // Workaround for capes that have encoded this as ASCII
- if (cnt > 256) {
-@@ -2494,8 +2503,8 @@ static void bone_io_config_from_cape_eeprom( void)
- cnt = (cape_config.numpins & 255) - '0';
- cnt = 10 * cnt + ((cape_config.numpins >> 8) & 255) - '0';
- }
-- pr_info( "BeagleBone cape: configuring %2d out of %2d signals:\n",
-- cnt, NR_ITEMS( cape_config.muxdata));
-+ pr_info( "BeagleBone cape: revision %s format, configuring %2d out of %2d signals:\n",
-+ revision, cnt, NR_ITEMS( cape_config.muxdata));
- RULER( NR_ITEMS( cape_config.muxdata));
- for (i = 0, pmuxdata = cape_config.muxdata ; i < NR_ITEMS( cape_config.muxdata) ; ++i, ++pmuxdata) {
- const char* pin_name = cape_pins[ i];
-@@ -2517,6 +2526,7 @@ static void bone_io_config_from_cape_eeprom( void)
- status[ NR_ITEMS( cape_config.muxdata)] = '\0';
- pr_info( "|%s|\n", status);
- RULER( NR_ITEMS( cape_config.muxdata));
-+ return 0;
- }
-
- static void beaglebone_cape_setup(struct memory_accessor *mem_acc, void *context)
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0057-i2c-prescalar-fix-i2c-fixed-prescalar-setting-issue.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0057-i2c-prescalar-fix-i2c-fixed-prescalar-setting-issue.patch
deleted file mode 100644
index feb27c5..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0057-i2c-prescalar-fix-i2c-fixed-prescalar-setting-issue.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From 3c530584c31f8e61a47a931dedca2f9e75165b9f Mon Sep 17 00:00:00 2001
-From: Al Pacifico <adpacifico at users.sourceforge.net>
-Date: Mon, 21 May 2012 11:50:32 -0700
-Subject: [PATCH 57/79] i2c-prescalar-fix: i2c: fixed prescalar setting issue
-
-Applied Steve's i2c prescalar fix patches.
-See https://groups.google.com/d/msg/beagleboard/Q1pDr1lT7Gk/jvxOxgg8_2MJ
-
-Signed-off-by: Al Pacifico <adpacifico at users.sourceforge.net>
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- arch/arm/mach-omap2/omap_hwmod_33xx_data.c | 3 ++-
- drivers/i2c/busses/i2c-omap.c | 2 ++
- include/linux/i2c-omap.h | 1 +
- 3 files changed, 5 insertions(+), 1 deletion(-)
-
-diff --git a/arch/arm/mach-omap2/omap_hwmod_33xx_data.c b/arch/arm/mach-omap2/omap_hwmod_33xx_data.c
-index 9d3c9a5..946e6b5 100644
---- a/arch/arm/mach-omap2/omap_hwmod_33xx_data.c
-+++ b/arch/arm/mach-omap2/omap_hwmod_33xx_data.c
-@@ -1243,7 +1243,8 @@ static struct omap_hwmod_class_sysconfig am33xx_i2c_sysc = {
-
- static struct omap_i2c_dev_attr i2c_dev_attr = {
- .flags = OMAP_I2C_FLAG_BUS_SHIFT_NONE |
-- OMAP_I2C_FLAG_RESET_REGS_POSTIDLE,
-+ OMAP_I2C_FLAG_RESET_REGS_POSTIDLE |
-+ OMAP_I2C_FLAG_FORCE_12000_INT_CLK,
- };
-
- static struct omap_hwmod_class i2c_class = {
-diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c
-index e0733b7..0ca6960 100644
---- a/drivers/i2c/busses/i2c-omap.c
-+++ b/drivers/i2c/busses/i2c-omap.c
-@@ -408,6 +408,8 @@ static int omap_i2c_init(struct omap_i2c_dev *dev)
- if (dev->speed > 400 ||
- pdata->flags & OMAP_I2C_FLAG_FORCE_19200_INT_CLK)
- internal_clk = 19200;
-+ else if (pdata->flags & OMAP_I2C_FLAG_FORCE_12000_INT_CLK)
-+ internal_clk = 12000;
- else if (dev->speed > 100)
- internal_clk = 9600;
- else
-diff --git a/include/linux/i2c-omap.h b/include/linux/i2c-omap.h
-index fd38249..818f5bf 100644
---- a/include/linux/i2c-omap.h
-+++ b/include/linux/i2c-omap.h
-@@ -24,6 +24,7 @@
- #define OMAP_I2C_FLAG_APPLY_ERRATA_I207 BIT(4)
- #define OMAP_I2C_FLAG_ALWAYS_ARMXOR_CLK BIT(5)
- #define OMAP_I2C_FLAG_FORCE_19200_INT_CLK BIT(6)
-+#define OMAP_I2C_FLAG_FORCE_12000_INT_CLK BIT(9)
- /* how the CPU address bus must be translated for I2C unit access */
- #define OMAP_I2C_FLAG_BUS_SHIFT_NONE 0
- #define OMAP_I2C_FLAG_BUS_SHIFT_1 BIT(7)
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0058-beaglebone-annotate-default-beaglebone-pinmux.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0058-beaglebone-annotate-default-beaglebone-pinmux.patch
deleted file mode 100644
index 92b6d48..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0058-beaglebone-annotate-default-beaglebone-pinmux.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From fe280a351fe71d5f1ade1aa3b8f9edc08e201ec1 Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen at dominion.thruhere.net>
-Date: Tue, 22 May 2012 10:58:53 +0200
-Subject: [PATCH 58/79] beaglebone: annotate default beaglebone pinmux
-
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- arch/arm/mach-omap2/board-am335xevm.c | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index 68ddfe2..b079279 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -1431,10 +1431,10 @@ static struct platform_device lcd7_leds_gpio = {
-
- static struct pinmux_config bone_pin_mux[] = {
- /* User LED gpios (gpio1_21 to gpio1_24) */
-- {"gpmc_a5.rgmii2_td0", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT},
-- {"gpmc_a6.rgmii2_tclk", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT},
-- {"gpmc_a7.rgmii2_rclk", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT},
-- {"gpmc_a8.rgmii2_rd3", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT},
-+ {"gpmc_a5.rgmii2_td0", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, // USR0
-+ {"gpmc_a6.rgmii2_tclk", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, // USR1
-+ {"gpmc_a7.rgmii2_rclk", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, // USR2
-+ {"gpmc_a8.rgmii2_rd3", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, // USR3
- /* Grounding gpio1_6 (pin 3 Conn A) signals bone tester to start diag tests */
- {"gpmc_ad6.gpio1_6", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT_PULLUP},
- {NULL, 0},
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0059-beaglebone-fix-pin-free-thinko-this-method-doesn-t-g.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0059-beaglebone-fix-pin-free-thinko-this-method-doesn-t-g.patch
deleted file mode 100644
index 32d9b25..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0059-beaglebone-fix-pin-free-thinko-this-method-doesn-t-g.patch
+++ /dev/null
@@ -1,78 +0,0 @@
-From 1b74058d12afa7d51ef84316ec4ede88c565161f Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen at dominion.thruhere.net>
-Date: Tue, 22 May 2012 11:00:00 +0200
-Subject: [PATCH 59/79] beaglebone: fix pin-free thinko, this method doesn't
- get called when there's a cape at 0x57
-
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- arch/arm/mach-omap2/board-am335xevm.c | 46 +++++++++++++++------------------
- 1 file changed, 21 insertions(+), 25 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index b079279..dfe8df5 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -2542,25 +2542,6 @@ static void beaglebone_cape_setup(struct memory_accessor *mem_acc, void *context
- ret = mem_acc->read(mem_acc, (char *)&cape_config, 0, sizeof(cape_config));
- if (ret != sizeof(cape_config)) {
- pr_warning("BeagleBone cape EEPROM: could not read eeprom at address 0x%x\n", capecount + 0x53);
-- if (capecount > 3) {
-- if (beaglebone_tsadcpins_free == 1) {
-- pr_info("BeagleBone cape: exporting ADC pins to sysfs\n");
-- bone_tsc_init(0,0);
-- beaglebone_tsadcpins_free = 0;
-- }
-- if (beaglebone_leds_free == 1) {
-- boneleds_init(0,0);
-- }
-- if(beaglebone_spi1_free == 1) {
-- beaglebone_spi1_free = 0;
-- pr_info("BeagleBone cape: exporting SPI pins as spidev\n");
-- setup_pin_mux(spi1_pin_mux);
-- spi_register_board_info(bone_spidev2_info, ARRAY_SIZE(bone_spidev2_info));
-- }
-- if(beaglebone_w1gpio_free == 1) {
-- bonew1_gpio_init(0,0);
-- }
-- }
- return;
- }
-
-@@ -2693,12 +2674,27 @@ static void beaglebone_cape_setup(struct memory_accessor *mem_acc, void *context
- pr_info("BeagleBone cape: recognized Camera cape\n");
- beaglebone_w1gpio_free = 0;
- }
--
-- if ((capecount > 3) && (beaglebone_tsadcpins_free == 1)) {
-- pr_info("BeagleBone cape: exporting ADC pins to sysfs\n");
-- bone_tsc_init(0,0);
-- beaglebone_tsadcpins_free = 0;
-- }
-+
-+ if (capecount > 3) {
-+ if (beaglebone_tsadcpins_free == 1) {
-+ pr_info("BeagleBone cape: exporting ADC pins to sysfs\n");
-+ bone_tsc_init(0,0);
-+ beaglebone_tsadcpins_free = 0;
-+ }
-+ if (beaglebone_leds_free == 1) {
-+ pr_info("Beaglebone: initializing onboard LEDs");
-+ boneleds_init(0,0);
-+ }
-+ if(beaglebone_spi1_free == 1) {
-+ beaglebone_spi1_free = 0;
-+ pr_info("BeagleBone cape: exporting SPI pins as spidev\n");
-+ setup_pin_mux(spi1_pin_mux);
-+ spi_register_board_info(bone_spidev2_info, ARRAY_SIZE(bone_spidev2_info));
-+ }
-+ if(beaglebone_w1gpio_free == 1) {
-+ bonew1_gpio_init(0,0);
-+ }
-+ }
-
- return;
- out:
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0060-beaglebone-switch-RS232-cape-to-ttyO2.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0060-beaglebone-switch-RS232-cape-to-ttyO2.patch
deleted file mode 100644
index abe82a3..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0060-beaglebone-switch-RS232-cape-to-ttyO2.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 77f8e93f7baf85dfab7cdf8b04c320f460a119cd Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen at dominion.thruhere.net>
-Date: Tue, 22 May 2012 11:00:35 +0200
-Subject: [PATCH 60/79] beaglebone: switch RS232 cape to ttyO2
-
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- arch/arm/mach-omap2/board-am335xevm.c | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index dfe8df5..5902df0 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -2657,8 +2657,9 @@ static void beaglebone_cape_setup(struct memory_accessor *mem_acc, void *context
- }
- if (!strncmp("BB-BONE-SERL-03", cape_config.partnumber, 15)) {
- pr_info("BeagleBone cape: initializing RS232 cape\n");
-- pr_info("BeagleBone cape: only uart1 is supported!\n");
-- setup_pin_mux(uart1_pin_mux);
-+ pr_info("BeagleBone RS232 cape: only uart2/ttyO2 is supported.\n");
-+ pr_info("BeagleBone RS232 cape: Jumper J27 and J23.\n");
-+ setup_pin_mux(uart2_pin_mux);
- }
- if (!strncmp("BB-BONE-SERL-04", cape_config.partnumber, 15)) {
- pr_info("BeagleBone cape: not initializing RS485 cape\n");
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0061-beaglebone-make-uart2-pinmux-match-the-uart0-pinmux.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0061-beaglebone-make-uart2-pinmux-match-the-uart0-pinmux.patch
deleted file mode 100644
index 84c5545..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0061-beaglebone-make-uart2-pinmux-match-the-uart0-pinmux.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From f138b1ab42cb36c13926e1cee6ed3cd429d1c91b Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen at dominion.thruhere.net>
-Date: Tue, 22 May 2012 12:25:33 +0200
-Subject: [PATCH 61/79] beaglebone: make uart2 pinmux match the uart0 pinmux
-
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- arch/arm/mach-omap2/board-am335xevm.c | 7 ++-----
- 1 file changed, 2 insertions(+), 5 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index 5902df0..e8ce381 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -885,11 +885,8 @@ static struct pinmux_config uart1_pin_mux[] = {
-
- /* Module pin mux for uart2 */
- static struct pinmux_config uart2_pin_mux[] = {
-- {"spi0_sclk.uart2_rxd", OMAP_MUX_MODE1 | AM33XX_SLEWCTRL_SLOW |
-- AM33XX_PIN_INPUT_PULLUP},
-- {"spi0_d0.uart2_txd", OMAP_MUX_MODE1 | AM33XX_PULL_UP |
-- AM33XX_PULL_DISA |
-- AM33XX_SLEWCTRL_SLOW},
-+ {"spi0_d0.uart2_txd", OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT},
-+ {"spi0_sclk.uart2_rxd", OMAP_MUX_MODE1 | AM33XX_PIN_INPUT_PULLUP},
- {NULL, 0},
- };
-
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0062-da8xx-fb-Rounding-FB-size-to-satisfy-SGX-buffer-requ.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0062-da8xx-fb-Rounding-FB-size-to-satisfy-SGX-buffer-requ.patch
deleted file mode 100644
index c3cd8e1..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0062-da8xx-fb-Rounding-FB-size-to-satisfy-SGX-buffer-requ.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-From c9201ef3a2d12a49b5070620a204f66eef5017e0 Mon Sep 17 00:00:00 2001
-From: Aditya Nellutla <aditya.n at ti.com>
-Date: Thu, 29 Mar 2012 15:45:39 +0530
-Subject: [PATCH 62/79] da8xx-fb: Rounding FB size to satisfy SGX buffer
- requirements
-
-In the real time use-case when SGX is used for rendering to FB buffers it has been
-observed that, the available memory from framebuffer driver is not sufficient for
-SGX under certain cases (like 16-bit WVGA resolution). SGX requires 2 swap buffers
-with each of the buffers aligned to lcm(line_length, PAGE_SIZE).
-
-Inorder to satisfy this requirement, we have two options,
-
- - Increase number of FB buffers (LCD_NUM_BUFFERS) to 3. This is not
- recommended as we end up wasting huge memory in most of the cases.
-
- - Align FB buffers to lcm(line_length, PAGE_SIZE).This ensures framebuffer
- size is increased to satisfy SGX requirements keeping alignment intact.
-
-This patch makes sure that FB allocates buffers aligned to above formula.
-
-Signed-off-by: Aditya Nellutla <aditya.n at ti.com>
----
- drivers/video/da8xx-fb.c | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/video/da8xx-fb.c b/drivers/video/da8xx-fb.c
-index 86b19ac..9aaca5d 100644
---- a/drivers/video/da8xx-fb.c
-+++ b/drivers/video/da8xx-fb.c
-@@ -34,6 +34,7 @@
- #include <linux/slab.h>
- #include <linux/delay.h>
- #include <linux/pm_runtime.h>
-+#include <linux/lcm.h>
- #include <video/da8xx-fb.h>
- #include <asm/mach-types.h>
-
-@@ -1263,6 +1264,7 @@ static int __devinit fb_probe(struct platform_device *device)
- struct da8xx_fb_par *par;
- resource_size_t len;
- int ret, i;
-+ unsigned long ulcm;
-
- if (fb_pdata == NULL) {
- dev_err(&device->dev, "Can not get platform data\n");
-@@ -1362,7 +1364,8 @@ static int __devinit fb_probe(struct platform_device *device)
-
- /* allocate frame buffer */
- par->vram_size = lcdc_info->width * lcdc_info->height * lcd_cfg->bpp;
-- par->vram_size = PAGE_ALIGN(par->vram_size/8);
-+ ulcm = lcm((lcdc_info->width * lcd_cfg->bpp)/8, PAGE_SIZE);
-+ par->vram_size = roundup(par->vram_size/8, ulcm);
- par->vram_size = par->vram_size * LCD_NUM_BUFFERS;
-
- par->vram_virt = dma_alloc_coherent(NULL,
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0063-beaglebone-dvi-cape-audio-hacks.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0063-beaglebone-dvi-cape-audio-hacks.patch
deleted file mode 100644
index f429e74..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0063-beaglebone-dvi-cape-audio-hacks.patch
+++ /dev/null
@@ -1,217 +0,0 @@
-From 81ca4844089a80e1b1a285ce661f662a04312e81 Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen at dominion.thruhere.net>
-Date: Wed, 23 May 2012 15:51:12 +0200
-Subject: [PATCH 63/79] beaglebone: dvi cape audio hacks
-
----
- arch/arm/mach-omap2/board-am335xevm.c | 72 ++++++++++++++++++++++++++-------
- arch/arm/mach-omap2/devices.c | 2 +-
- sound/soc/codecs/tlv320aic3x.c | 2 +-
- sound/soc/davinci/davinci-evm.c | 7 ++--
- 4 files changed, 64 insertions(+), 19 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index e8ce381..1f2d1fd 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -43,6 +43,8 @@
- #include <linux/can/platform/mcp251x.h>
- #include <linux/input/ti_tscadc.h>
-
-+#include <sound/tlv320aic3x.h>
-+
- /* LCD controller is similar to DA850 */
- #include <video/da8xx-fb.h>
-
-@@ -315,7 +317,7 @@ static struct tsc_data bone_touchscreen_data = {
- };
-
- static u8 am335x_iis_serializer_direction1[] = {
-- INACTIVE_MODE, INACTIVE_MODE, TX_MODE, RX_MODE,
-+ INACTIVE_MODE, INACTIVE_MODE, RX_MODE, TX_MODE,
- INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE,
- INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE,
- INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE,
-@@ -334,6 +336,19 @@ static struct snd_platform_data am335x_evm_snd_data1 = {
- .rxnumevt = 1,
- };
-
-+static struct snd_platform_data bone_snd_data1 = {
-+ .tx_dma_offset = 0x46000000, /* McASP0*/
-+ .rx_dma_offset = 0x46000000,
-+ .op_mode = DAVINCI_MCASP_IIS_MODE,
-+ .num_serializer = ARRAY_SIZE(am335x_iis_serializer_direction1),
-+ .tdm_slots = 2,
-+ .serial_dir = am335x_iis_serializer_direction1,
-+ .asp_chan_q = EVENTQ_2,
-+ .version = MCASP_VERSION_3,
-+ .txnumevt = 1,
-+ .rxnumevt = 1,
-+};
-+
- static struct omap2_hsmmc_info am335x_mmc[] __initdata = {
- {
- .mmc = 1,
-@@ -796,11 +811,18 @@ static struct pinmux_config mcasp1_pin_mux[] = {
- {"mii1_crs.mcasp1_aclkx", OMAP_MUX_MODE4 | AM33XX_PIN_INPUT_PULLDOWN},
- {"mii1_rxerr.mcasp1_fsx", OMAP_MUX_MODE4 | AM33XX_PIN_INPUT_PULLDOWN},
- {"mii1_col.mcasp1_axr2", OMAP_MUX_MODE4 | AM33XX_PIN_INPUT_PULLDOWN},
-- {"rmii1_refclk.mcasp1_axr3", OMAP_MUX_MODE4 |
-- AM33XX_PIN_INPUT_PULLDOWN},
-+ {"rmii1_refclk.mcasp1_axr3", OMAP_MUX_MODE4 | AM33XX_PIN_INPUT_PULLDOWN},
- {NULL, 0},
- };
-
-+/* Module pin mux for mcasp0 */
-+static struct pinmux_config mcasp0_pin_mux[] = {
-+ {"mcasp0_aclkx.mcasp0_aclkx", OMAP_MUX_MODE0 |AM33XX_PIN_INPUT_PULLDOWN},
-+ {"mcasp0_fsx.mcasp0_fsx", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLDOWN},
-+ {"mcasp0_ahclkr.mcasp0_axr2", OMAP_MUX_MODE2 | AM33XX_PIN_INPUT_PULLDOWN},
-+ {"mcasp0_ahclkx.mcasp0_axr3", OMAP_MUX_MODE2 | AM33XX_PIN_INPUT_PULLDOWN},
-+ {NULL, 0},
-+};
-
- /* Module pin mux for mmc0 */
- static struct pinmux_config mmc0_pin_mux[] = {
-@@ -1956,6 +1978,15 @@ static void evm_nand_init(int evm_id, int profile)
- omap_init_elm();
- }
-
-+static struct regulator_consumer_supply bone_audio_supplies[] = {
-+ /* tlv320aic3x analog supplies */
-+ REGULATOR_SUPPLY("AVDD", "3-001b"),
-+ REGULATOR_SUPPLY("DRVDD", "3-001b"),
-+ /* tlv320aic3x digital supplies */
-+ REGULATOR_SUPPLY("IOVDD", "3-001b"),
-+ REGULATOR_SUPPLY("DVDD", "3-001b"),
-+};
-+
- /* TPS65217 voltage regulator support */
-
- /* 1.8V */
-@@ -2229,6 +2260,25 @@ static void tt3201_init(int evm_id, int profile)
- am33xx_d_can_init(1);
- }
-
-+/* Setup McASP 1 */
-+static void mcasp1_init(int evm_id, int profile)
-+{
-+ /* Configure McASP */
-+ setup_pin_mux(mcasp1_pin_mux);
-+ am335x_register_mcasp(&am335x_evm_snd_data1, 1);
-+ return;
-+}
-+
-+/* Setup McASP 0 */
-+static void mcasp0_init(int evm_id, int profile)
-+{
-+ printk("Beaglebone cape: mcasp0 init\n");
-+ /* Configure McASP */
-+ setup_pin_mux(mcasp0_pin_mux);
-+ am335x_register_mcasp(&bone_snd_data1, 0);
-+ return;
-+}
-+
- static const char* cape_pins[] = {
- /*
- From SRM RevA5.0.1:
-@@ -2567,7 +2617,8 @@ static void beaglebone_cape_setup(struct memory_accessor *mem_acc, void *context
-
- beaglebone_leds_free = 0;
- dvileds_init(0,0);
--
-+ mcasp0_init(0,0);
-+
- if (!strncmp("00A1", cape_config.version, 4) || !strncmp("000A", cape_config.version, 4)) {
- pr_info("BeagleBone cape: DVI init for revision A1 or older\n");
- setup_pin_mux(dvia1_pin_mux);
-@@ -2715,6 +2766,9 @@ static struct at24_platform_data cape_eeprom_info = {
- };
-
- static struct i2c_board_info __initdata cape_i2c_boardinfo[] = {
-+ {
-+ I2C_BOARD_INFO("tlv320aic3x", 0x1b),
-+ },
- {
- I2C_BOARD_INFO("24c256", 0x54),
- .platform_data = &cape_eeprom_info,
-@@ -2741,16 +2795,6 @@ static void i2c2_init(int evm_id, int profile)
- return;
- }
-
--
--/* Setup McASP 1 */
--static void mcasp1_init(int evm_id, int profile)
--{
-- /* Configure McASP */
-- setup_pin_mux(mcasp1_pin_mux);
-- am335x_register_mcasp(&am335x_evm_snd_data1, 1);
-- return;
--}
--
- static void mmc1_init(int evm_id, int profile)
- {
- setup_pin_mux(mmc1_pin_mux);
-diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c
-index 9e029da..41c9b0f 100644
---- a/arch/arm/mach-omap2/devices.c
-+++ b/arch/arm/mach-omap2/devices.c
-@@ -218,7 +218,6 @@ int __init am335x_register_mcasp(struct snd_platform_data *pdata, int ctrl_nr)
- dev_name, oh->name);
- return IS_ERR(pdev) ? PTR_ERR(pdev) : 0;
- }
--
- #else
- int __init am335x_register_mcasp(struct snd_platform_data *pdata, int ctrl_nr)
- {
-@@ -234,6 +233,7 @@ struct platform_device am33xx_pcm_device = {
-
- static void am33xx_init_pcm(void)
- {
-+ printk("cape: pcm register");
- platform_device_register(&am33xx_pcm_device);
- }
-
-diff --git a/sound/soc/codecs/tlv320aic3x.c b/sound/soc/codecs/tlv320aic3x.c
-index cdb473c..5567756 100644
---- a/sound/soc/codecs/tlv320aic3x.c
-+++ b/sound/soc/codecs/tlv320aic3x.c
-@@ -52,7 +52,7 @@
-
- #include "tlv320aic3x.h"
-
--#define AIC3X_NUM_SUPPLIES 4
-+#define AIC3X_NUM_SUPPLIES 0
- static const char *aic3x_supply_names[AIC3X_NUM_SUPPLIES] = {
- "IOVDD", /* I/O Voltage */
- "DVDD", /* Digital Core Voltage */
-diff --git a/sound/soc/davinci/davinci-evm.c b/sound/soc/davinci/davinci-evm.c
-index f6a62c3..7ad7b37 100644
---- a/sound/soc/davinci/davinci-evm.c
-+++ b/sound/soc/davinci/davinci-evm.c
-@@ -244,9 +244,9 @@ static struct snd_soc_dai_link da850_evm_dai = {
- static struct snd_soc_dai_link am335x_evm_dai = {
- .name = "TLV320AIC3X",
- .stream_name = "AIC3X",
-- .cpu_dai_name = "davinci-mcasp.1",
-+ .cpu_dai_name = "davinci-mcasp.0",
- .codec_dai_name = "tlv320aic3x-hifi",
-- .codec_name = "tlv320aic3x-codec.2-001b",
-+ .codec_name = "tlv320aic3x-codec.3-001b",
- .platform_name = "davinci-pcm-audio",
- .init = evm_aic3x_init,
- .ops = &evm_ops,
-@@ -331,8 +331,9 @@ static int __init evm_init(void)
- return -EINVAL;
-
- evm_snd_device = platform_device_alloc("soc-audio", index);
-- if (!evm_snd_device)
-+ if (!evm_snd_device) {
- return -ENOMEM;
-+ }
-
- platform_set_drvdata(evm_snd_device, evm_snd_dev_data);
- ret = platform_device_add(evm_snd_device);
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0064-beaglebone-always-execute-the-pin-free-checks.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0064-beaglebone-always-execute-the-pin-free-checks.patch
deleted file mode 100644
index 2c2b12c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0064-beaglebone-always-execute-the-pin-free-checks.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-From b7349f4b517f8736efcc1a2c1469b07d7361ee5f Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen at dominion.thruhere.net>
-Date: Wed, 23 May 2012 17:39:12 +0200
-Subject: [PATCH 64/79] beaglebone: always execute the pin free checks
-
-This code needs to run when there are no capes and when there are capes present.
-
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- arch/arm/mach-omap2/board-am335xevm.c | 26 +++++++++++++-------------
- 1 file changed, 13 insertions(+), 13 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index 1f2d1fd..da6020b 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -2589,7 +2589,7 @@ static void beaglebone_cape_setup(struct memory_accessor *mem_acc, void *context
- ret = mem_acc->read(mem_acc, (char *)&cape_config, 0, sizeof(cape_config));
- if (ret != sizeof(cape_config)) {
- pr_warning("BeagleBone cape EEPROM: could not read eeprom at address 0x%x\n", capecount + 0x53);
-- return;
-+ goto out2;
- }
-
- if (cape_config.header != AM335X_EEPROM_HEADER) {
-@@ -2724,6 +2724,16 @@ static void beaglebone_cape_setup(struct memory_accessor *mem_acc, void *context
- beaglebone_w1gpio_free = 0;
- }
-
-+ goto out2;
-+out:
-+ /*
-+ * If the EEPROM hasn't been programed or an incorrect header
-+ * or board name are read, assume this is an old beaglebone board
-+ * (< Rev A3)
-+ */
-+ pr_err("Could not detect BeagleBone cape properly\n");
-+ beaglebone_cape_detected = false;
-+out2:
- if (capecount > 3) {
- if (beaglebone_tsadcpins_free == 1) {
- pr_info("BeagleBone cape: exporting ADC pins to sysfs\n");
-@@ -2741,20 +2751,10 @@ static void beaglebone_cape_setup(struct memory_accessor *mem_acc, void *context
- spi_register_board_info(bone_spidev2_info, ARRAY_SIZE(bone_spidev2_info));
- }
- if(beaglebone_w1gpio_free == 1) {
-+ pr_info("BeagleBone cape: initializing w1-gpio\n");
- bonew1_gpio_init(0,0);
- }
-- }
--
-- return;
--out:
-- /*
-- * If the EEPROM hasn't been programed or an incorrect header
-- * or board name are read, assume this is an old beaglebone board
-- * (< Rev A3)
-- */
-- pr_err("Could not detect BeagleBone cape properly\n");
-- beaglebone_cape_detected = false;
--
-+ }
- }
-
- static struct at24_platform_data cape_eeprom_info = {
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0065-ti_tscadc-switch-to-16x-averaging.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0065-ti_tscadc-switch-to-16x-averaging.patch
deleted file mode 100644
index 5bdf161..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0065-ti_tscadc-switch-to-16x-averaging.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From bd18b67644c8107920db6911aa16be680af23cf1 Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen at dominion.thruhere.net>
-Date: Mon, 28 May 2012 09:56:45 +0200
-Subject: [PATCH 65/79] ti_tscadc: switch to 16x averaging
-
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- drivers/input/touchscreen/ti_tscadc.c | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/input/touchscreen/ti_tscadc.c b/drivers/input/touchscreen/ti_tscadc.c
-index 7df7bb2..ae6c4c4 100644
---- a/drivers/input/touchscreen/ti_tscadc.c
-+++ b/drivers/input/touchscreen/ti_tscadc.c
-@@ -161,7 +161,7 @@ static void tsc_adc_step_config(struct tscadc *ts_dev, int channel)
- * sample channel 1 (SEL_INP mux bits = 0)
- */
- stepconfig = TSCADC_STEPCONFIG_MODE_SWONESHOT |
-- TSCADC_STEPCONFIG_4SAMPLES_AVG |
-+ TSCADC_STEPCONFIG_16SAMPLES_AVG |
- ((channel-1) << 19);
-
- delay = TSCADC_STEPCONFIG_SAMPLEDLY | TSCADC_STEPCONFIG_OPENDLY;
-@@ -242,7 +242,7 @@ static void tsc_step_config(struct tscadc *ts_dev)
- delay = TSCADC_STEPCONFIG_SAMPLEDLY | TSCADC_STEPCONFIG_OPENDLY;
-
- stepconfigx = TSCADC_STEPCONFIG_MODE_HWSYNC |
-- TSCADC_STEPCONFIG_4SAMPLES_AVG | TSCADC_STEPCONFIG_XPP;
-+ TSCADC_STEPCONFIG_16SAMPLES_AVG | TSCADC_STEPCONFIG_XPP;
-
- switch (ts_dev->wires) {
- case 4:
-@@ -279,7 +279,7 @@ static void tsc_step_config(struct tscadc *ts_dev)
- }
-
- stepconfigy = TSCADC_STEPCONFIG_MODE_HWSYNC |
-- TSCADC_STEPCONFIG_4SAMPLES_AVG | TSCADC_STEPCONFIG_YNN |
-+ TSCADC_STEPCONFIG_16SAMPLES_AVG | TSCADC_STEPCONFIG_YNN |
- TSCADC_STEPCONFIG_INM | TSCADC_STEPCONFIG_FIFO1;
- switch (ts_dev->wires) {
- case 4:
-@@ -324,7 +324,7 @@ static void tsc_step_config(struct tscadc *ts_dev)
-
- /* Configure to calculate pressure */
- stepconfigz1 = TSCADC_STEPCONFIG_MODE_HWSYNC |
-- TSCADC_STEPCONFIG_4SAMPLES_AVG |
-+ TSCADC_STEPCONFIG_16SAMPLES_AVG |
- TSCADC_STEPCONFIG_XNP |
- TSCADC_STEPCONFIG_YPN | TSCADC_STEPCONFIG_INM;
- stepconfigz2 = stepconfigz1 | TSCADC_STEPCONFIG_Z1 |
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0066-video-da8xx-fb-Add-Newhaven-LCD-Panel-details.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0066-video-da8xx-fb-Add-Newhaven-LCD-Panel-details.patch
deleted file mode 100644
index ed494ec..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0066-video-da8xx-fb-Add-Newhaven-LCD-Panel-details.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From b3830f85231a530a9a83a5f8f6ff893aa0be2d60 Mon Sep 17 00:00:00 2001
-From: "Patil, Rachna" <rachna at ti.com>
-Date: Thu, 26 Apr 2012 15:20:20 +0530
-Subject: [PATCH 66/79] video: da8xx-fb: Add Newhaven LCD Panel details
-
-This patch adds details for Newhaven display Panel.
-This panel is used on AM335x EVM-SK An upcoming TI EVM.
-
-Signed-off-by: Patil, Rachna <rachna at ti.com>
-
-Conflicts:
-
- drivers/video/da8xx-fb.c
----
- drivers/video/da8xx-fb.c | 14 ++++++++++++++
- 1 file changed, 14 insertions(+)
-
-diff --git a/drivers/video/da8xx-fb.c b/drivers/video/da8xx-fb.c
-index 9aaca5d..010a8bc 100644
---- a/drivers/video/da8xx-fb.c
-+++ b/drivers/video/da8xx-fb.c
-@@ -301,6 +301,20 @@ static struct da8xx_panel known_lcd_panels[] = {
- .pxl_clk = 8000000,
- .invert_pxl_clk = 0,
- },
-+ /* Newhaven Display */
-+ [5] = {
-+ .name = "NHD-4.3-ATXI#-T-1",
-+ .width = 480,
-+ .height = 272,
-+ .hfp = 8,
-+ .hbp = 43,
-+ .hsw = 4,
-+ .vfp = 4,
-+ .vbp = 12,
-+ .vsw = 10,
-+ .pxl_clk = 9000000,
-+ .invert_pxl_clk = 0,
-+ },
- };
-
- /* Enable the Raster Engine of the LCD Controller */
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0067-beaglebone-add-support-for-the-4.3-lcd-cape-with-res.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0067-beaglebone-add-support-for-the-4.3-lcd-cape-with-res.patch
deleted file mode 100644
index cf39615..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0067-beaglebone-add-support-for-the-4.3-lcd-cape-with-res.patch
+++ /dev/null
@@ -1,94 +0,0 @@
-From 8652d1a5b1a191a460de6b7214168dc77b6ceeb1 Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen at dominion.thruhere.net>
-Date: Tue, 29 May 2012 14:12:44 +0200
-Subject: [PATCH 67/79] beaglebone: add support for the 4.3" lcd cape with
- resistive touchscreen
-
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- arch/arm/mach-omap2/board-am335xevm.c | 48 +++++++++++++++++++++++++++------
- 1 file changed, 40 insertions(+), 8 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index da6020b..e360b22 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -272,6 +272,12 @@ struct da8xx_lcdc_platform_data bbtoys35_pdata = {
- .type = "CDTech_S035Q01",
- };
-
-+struct da8xx_lcdc_platform_data bbtoys43_pdata = {
-+ .manu_name = "BBToys",
-+ .controller_data = &lcd_cfg,
-+ .type = "NHD-4.3-ATXI#-T-1",
-+};
-+
- static const struct display_panel dvi_panel = {
- WVGA,
- 16,
-@@ -562,14 +568,14 @@ static struct pinmux_config batterycape_pin_mux[] = {
-
- /* Module pin mux for LCDC */
- static struct pinmux_config lcdc_pin_mux[] = {
-- {"gpmc_ad8.lcd_data16", OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT},
-- {"gpmc_ad9.lcd_data17", OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT},
-- {"gpmc_ad10.lcd_data18", OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT},
-- {"gpmc_ad11.lcd_data19", OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT},
-- {"gpmc_ad12.lcd_data20", OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT},
-- {"gpmc_ad13.lcd_data21", OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT},
-- {"gpmc_ad14.lcd_data22", OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT},
-- {"gpmc_ad15.lcd_data23", OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT},
-+ {"gpmc_ad8.lcd_data23", OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT},
-+ {"gpmc_ad9.lcd_data22", OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT},
-+ {"gpmc_ad10.lcd_data21", OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT},
-+ {"gpmc_ad11.lcd_data20", OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT},
-+ {"gpmc_ad12.lcd_data19", OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT},
-+ {"gpmc_ad13.lcd_data18", OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT},
-+ {"gpmc_ad14.lcd_data17", OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT},
-+ {"gpmc_ad15.lcd_data16", OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT},
- {NULL, 0},
- };
-
-@@ -1659,6 +1665,24 @@ static void bbtoys35lcd_init(int evm_id, int profile)
- return;
- }
-
-+static void bbtoys43lcd_init(int evm_id, int profile)
-+{
-+ setup_pin_mux(lcdc16_pin_mux);
-+ setup_pin_mux(lcdc_pin_mux);
-+
-+ // we are being stupid and setting pixclock from here instead of da8xx-fb.c
-+ if (conf_disp_pll(18000000)) {
-+ pr_info("Failed to set pixclock to 18000000, not attempting to"
-+ "register LCD cape\n");
-+ return;
-+ }
-+
-+ if (am33xx_register_lcdc(&bbtoys43_pdata))
-+ pr_info("Failed to register Beagleboardtoys 4.3\" LCD cape device\n");
-+
-+ return;
-+}
-+
- #define BEAGLEBONEDVI_PDn_A1 GPIO_TO_PIN(1, 7)
- #define BEAGLEBONEDVI_PDn_A2 GPIO_TO_PIN(1, 31)
-
-@@ -2672,6 +2696,14 @@ static void beaglebone_cape_setup(struct memory_accessor *mem_acc, void *context
- beaglebone_leds_free = 0;
- lcd3leds_init(0,0);
- }
-+
-+ if (!strncmp("BB-BONE-LCD4-01", cape_config.partnumber, 15)) {
-+ pr_info("BeagleBone cape: initializing LCD cape\n");
-+ bbtoys43lcd_init(0,0);
-+ pr_info("BeagleBone cape: initializing LCD cape touchscreen\n");
-+ tsc_init(0,0);
-+ beaglebone_tsadcpins_free = 0;
-+ }
-
- if (!strncmp("BB-BONE-VGA-01", cape_config.partnumber, 14)) {
- pr_info("BeagleBone cape: initializing VGA cape\n");
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0068-beaglebone-add-support-for-LCD3-rev-A1.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0068-beaglebone-add-support-for-LCD3-rev-A1.patch
deleted file mode 100644
index 1f22cd7..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0068-beaglebone-add-support-for-LCD3-rev-A1.patch
+++ /dev/null
@@ -1,132 +0,0 @@
-From 590a240f4bb7c6eeda5d11c9040821a71edefc53 Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen at dominion.thruhere.net>
-Date: Mon, 4 Jun 2012 14:38:02 +0200
-Subject: [PATCH 68/79] beaglebone: add support for LCD3 rev A1
-
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- arch/arm/mach-omap2/board-am335xevm.c | 94 +++++++++++++++++++++++++++++----
- 1 file changed, 83 insertions(+), 11 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index e360b22..d83431a 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -1136,7 +1136,7 @@ static struct pinmux_config lcd3_keys_pin_mux[] = {
- {NULL, 0},
- };
-
--/* Configure GPIOs for lcd3 keys */
-+/* Configure GPIOs for lcd3 rev A or earlier keys */
- static struct gpio_keys_button beaglebone_lcd3_gpio_keys[] = {
- {
- .code = KEY_LEFT,
-@@ -1193,14 +1193,72 @@ static struct platform_device beaglebone_lcd3_keys = {
- },
- };
-
--static void beaglebone_lcd3_keys_init(int evm_id, int profile)
--{
-- int err;
-- setup_pin_mux(lcd3_keys_pin_mux);
-- err = platform_device_register(&beaglebone_lcd3_keys);
-- if (err)
-- pr_err("failed to register gpio keys for LCD3 cape\n");
--}
-+/* pinmux for lcd3 A1 or newer keys */
-+static struct pinmux_config lcd3a1_keys_pin_mux[] = {
-+ {"gpmc_a0.gpio1_16", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT}, // Left
-+ {"gpmc_a1.gpio1_17", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT}, //Right
-+ {"gpmc_a3.gpio1_19", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, // Up
-+ {"mcasp0_axr0.gpio3_16", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT}, //Down
-+ {"mcasp0_fsr.gpio3_19", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT}, // Enter
-+ {NULL, 0},
-+};
-+
-+/* Configure GPIOs for lcd3 rev A1 or newer keys */
-+static struct gpio_keys_button lcd3a1_gpio_keys[] = {
-+ {
-+ .code = KEY_LEFT,
-+ .gpio = GPIO_TO_PIN(1, 16),
-+ .active_low = true,
-+ .desc = "left",
-+ .type = EV_KEY,
-+ .wakeup = 1,
-+ },
-+ {
-+ .code = KEY_RIGHT,
-+ .gpio = GPIO_TO_PIN(1, 17),
-+ .active_low = true,
-+ .desc = "right",
-+ .type = EV_KEY,
-+ .wakeup = 1,
-+ },
-+ {
-+ .code = KEY_UP,
-+ .gpio = GPIO_TO_PIN(1, 19),
-+ .active_low = true,
-+ .desc = "up",
-+ .type = EV_KEY,
-+ .wakeup = 1,
-+ },
-+ {
-+ .code = KEY_DOWN,
-+ .gpio = GPIO_TO_PIN(3, 16),
-+ .active_low = true,
-+ .desc = "down",
-+ .type = EV_KEY,
-+ .wakeup = 1,
-+ },
-+ {
-+ .code = KEY_ENTER,
-+ .gpio = GPIO_TO_PIN(3, 19),
-+ .active_low = true,
-+ .desc = "enter",
-+ .type = EV_KEY,
-+ .wakeup = 1,
-+ },
-+};
-+
-+static struct gpio_keys_platform_data lcd3a1_gpio_key_info = {
-+ .buttons = lcd3a1_gpio_keys,
-+ .nbuttons = ARRAY_SIZE(lcd3a1_gpio_keys),
-+};
-+
-+static struct platform_device lcd3a1_keys = {
-+ .name = "gpio-keys",
-+ .id = -1,
-+ .dev = {
-+ .platform_data = &lcd3a1_gpio_key_info,
-+ },
-+};
-
- /*
- * @evm_id - evm id which needs to be configured
-@@ -2691,8 +2749,22 @@ static void beaglebone_cape_setup(struct memory_accessor *mem_acc, void *context
- pr_info("BeagleBone cape: initializing LCD cape touchscreen\n");
- tsc_init(0,0);
- beaglebone_tsadcpins_free = 0;
-- pr_info("BeagleBone cape: Registering gpio-keys for LCD cape\n");
-- beaglebone_lcd3_keys_init(0,0);
-+
-+ if (!strncmp("00A0", cape_config.version, 4)) {
-+ pr_info("BeagleBone cape: Registering gpio-keys for LCD3 rev A or earlier cape\n");
-+ int err;
-+ setup_pin_mux(lcd3_keys_pin_mux);
-+ err = platform_device_register(&beaglebone_lcd3_keys);
-+ if (err)
-+ pr_err("failed to register gpio keys for LCD3 rev A or earlier cape\n");
-+ } else {
-+ pr_info("BeagleBone cape: Registering gpio-keys for LCD rev A1 or later cape\n");
-+ int err;
-+ setup_pin_mux(lcd3a1_keys_pin_mux);
-+ err = platform_device_register(&lcd3a1_keys);
-+ if (err)
-+ pr_err("failed to register gpio keys for LCD3 rev A1 or later cape\n");
-+ }
- beaglebone_leds_free = 0;
- lcd3leds_init(0,0);
- }
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0069-beaglebone-fix-buttons-spidev-clash-when-using-mcasp.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0069-beaglebone-fix-buttons-spidev-clash-when-using-mcasp.patch
deleted file mode 100644
index 08330a0..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0069-beaglebone-fix-buttons-spidev-clash-when-using-mcasp.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From dbe62e3346ee4423a2d3c83e6390ef39c2a0a0bf Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen at dominion.thruhere.net>
-Date: Wed, 6 Jun 2012 11:20:21 +0200
-Subject: [PATCH 69/79] beaglebone: fix buttons/spidev clash when using
- mcasp0_axr0.gpio3_16
-
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- arch/arm/mach-omap2/board-am335xevm.c | 13 +++++++------
- 1 file changed, 7 insertions(+), 6 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index d83431a..15ee8af 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -1051,12 +1051,11 @@ static void volume_keys_init(int evm_id, int profile)
-
- /* pinmux for lcd7 keys */
- static struct pinmux_config lcd7_keys_pin_mux[] = {
-- {"gpmc_a0.gpio1_16", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT},
-- {"gpmc_a1.gpio1_17", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT},
-- {"gpmc_a3.gpio1_19", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT},
-- {"mcasp0_axr0.gpio3_16", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT},
-- {"mcasp0_fsr.gpio3_19", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT},
-- {"gpmc_ben1.gpio1_28", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT},
-+ {"gpmc_a0.gpio1_16", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT}, //left
-+ {"gpmc_a1.gpio1_17", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT}, //right
-+ {"gpmc_a3.gpio1_19", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT}, //up
-+ {"mcasp0_axr0.gpio3_16", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT}, //down
-+ {"mcasp0_fsr.gpio3_19", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT}, //enter
- {NULL, 0},
- };
-
-@@ -2738,6 +2737,7 @@ static void beaglebone_cape_setup(struct memory_accessor *mem_acc, void *context
- pr_info("BeagleBone cape: Registering gpio-keys for LCD cape\n");
- beaglebone_lcd7_keys_init(0,0);
-
-+ beaglebone_spi1_free = 0;
- // A1 or newer
- beaglebone_leds_free = 0;
- lcd7leds_init(0,0);
-@@ -2765,6 +2765,7 @@ static void beaglebone_cape_setup(struct memory_accessor *mem_acc, void *context
- if (err)
- pr_err("failed to register gpio keys for LCD3 rev A1 or later cape\n");
- }
-+ beaglebone_spi1_free = 0;
- beaglebone_leds_free = 0;
- lcd3leds_init(0,0);
- }
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0070-beaglebone-fix-LCD3-led-key-overlap.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0070-beaglebone-fix-LCD3-led-key-overlap.patch
deleted file mode 100644
index 942ab61..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0070-beaglebone-fix-LCD3-led-key-overlap.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From 2a148ebd4606ed6a5d24287aa7e5701de3259057 Mon Sep 17 00:00:00 2001
-From: Damian <damian.eppel at teleca.com>
-Date: Tue, 5 Jun 2012 23:14:58 +0200
-Subject: [PATCH 70/79] beaglebone: fix LCD3 led/key overlap
-
-Signed-off-by: Koen Kooi <koen at circuitco.com>
----
- arch/arm/mach-omap2/board-am335xevm.c | 9 +--------
- 1 file changed, 1 insertion(+), 8 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index 15ee8af..9a56a769 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -639,7 +639,6 @@ static struct pinmux_config dvia2_pin_mux[] = {
- /* Module pin mux for Beagleboardtoys 3.5" LCD cape */
- static struct pinmux_config bbtoys35_pin_mux[] = {
- {"gpmc_a2.gpio1_18", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, // USR0 LED
-- {"gpmc_a3.gpio1_19", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, // USR1 LED
- {NULL, 0},
- };
-
-@@ -1196,7 +1195,7 @@ static struct platform_device beaglebone_lcd3_keys = {
- static struct pinmux_config lcd3a1_keys_pin_mux[] = {
- {"gpmc_a0.gpio1_16", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT}, // Left
- {"gpmc_a1.gpio1_17", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT}, //Right
-- {"gpmc_a3.gpio1_19", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, // Up
-+ {"gpmc_a3.gpio1_19", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT}, // Up
- {"mcasp0_axr0.gpio3_16", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT}, //Down
- {"mcasp0_fsr.gpio3_19", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT}, // Enter
- {NULL, 0},
-@@ -1424,7 +1423,6 @@ static struct platform_device dvi_leds_gpio = {
- };
-
- #define BEAGLEBONELCD3_USR0_LED GPIO_TO_PIN(1, 18)
--#define BEAGLEBONELCD3_USR1_LED GPIO_TO_PIN(1, 19)
-
- static struct gpio_led lcd3_gpio_leds[] = {
- {
-@@ -1450,11 +1448,6 @@ static struct gpio_led lcd3_gpio_leds[] = {
- .default_trigger = "heartbeat",
- .gpio = BEAGLEBONELCD3_USR0_LED,
- },
-- {
-- .name = "lcd3::usr1",
-- .default_trigger = "mmc0",
-- .gpio = BEAGLEBONELCD3_USR1_LED,
-- },
- };
-
- static struct gpio_led_platform_data lcd3_gpio_led_info = {
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0071-beaglebone-fix-audio-spi-clash.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0071-beaglebone-fix-audio-spi-clash.patch
deleted file mode 100644
index 02bf495..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0071-beaglebone-fix-audio-spi-clash.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 1ec20c05453acf20b9d5d385ac9574e9ab64347d Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen at dominion.thruhere.net>
-Date: Tue, 26 Jun 2012 08:39:04 +0200
-Subject: [PATCH 71/79] beaglebone: fix audio/spi clash
-
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- arch/arm/mach-omap2/board-am335xevm.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index 9a56a769..d2481af 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -2691,6 +2691,7 @@ static void beaglebone_cape_setup(struct memory_accessor *mem_acc, void *context
-
- beaglebone_leds_free = 0;
- dvileds_init(0,0);
-+ beaglebone_spi1_free = 0;
- mcasp0_init(0,0);
-
- if (!strncmp("00A1", cape_config.version, 4) || !strncmp("000A", cape_config.version, 4)) {
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0072-beaglebone-add-support-for-QuickLogic-Camera-interfa.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0072-beaglebone-add-support-for-QuickLogic-Camera-interfa.patch
deleted file mode 100644
index 724c3dd..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0072-beaglebone-add-support-for-QuickLogic-Camera-interfa.patch
+++ /dev/null
@@ -1,1612 +0,0 @@
-From e3a4f83627a111ae21ea8c6521ad98201f55eacc Mon Sep 17 00:00:00 2001
-From: Dan Aizenstros <daizenstros at quicklogic.com>
-Date: Fri, 29 Jun 2012 13:57:49 -0400
-Subject: [PATCH 72/79] beaglebone: add support for QuickLogic Camera
- interface on camera cape
-
-Signed-off-by: Dan Aizenstros <daizenstros at quicklogic.com>
----
- arch/arm/mach-omap2/board-am335xevm.c | 205 ++++-
- arch/arm/mach-omap2/devices.c | 2 +-
- arch/arm/plat-omap/include/plat/dma-33xx.h | 1 +
- drivers/media/video/Kconfig | 7 +
- drivers/media/video/Makefile | 2 +
- drivers/media/video/cssp_camera/Makefile | 3 +
- drivers/media/video/cssp_camera/cssp_camera.c | 1119 +++++++++++++++++++++++++
- drivers/media/video/cssp_camera/cssp_camera.h | 148 ++++
- 8 files changed, 1478 insertions(+), 9 deletions(-)
- create mode 100644 drivers/media/video/cssp_camera/Makefile
- create mode 100644 drivers/media/video/cssp_camera/cssp_camera.c
- create mode 100644 drivers/media/video/cssp_camera/cssp_camera.h
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index d2481af..22a740f 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -65,6 +65,10 @@
- #include <plat/mmc.h>
- #include <plat/emif.h>
- #include <plat/nand.h>
-+#include <plat/dma-33xx.h>
-+
-+#include <media/soc_camera.h>
-+#include <media/mt9t112.h>
-
- #include "board-flash.h"
- #include "cpuidle33xx.h"
-@@ -803,6 +807,42 @@ static struct pinmux_config i2c1_pin_mux[] = {
- {NULL, 0},
- };
-
-+/* Pin mux for GPMC bus */
-+static struct pinmux_config gpmc_pin_mux[] = {
-+ {"gpmc_ad0.gpmc_ad0", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
-+ {"gpmc_ad1.gpmc_ad1", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
-+ {"gpmc_ad2.gpmc_ad2", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
-+ {"gpmc_ad3.gpmc_ad3", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
-+ {"gpmc_ad4.gpmc_ad4", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
-+ {"gpmc_ad5.gpmc_ad5", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
-+ {"gpmc_ad6.gpmc_ad6", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
-+ {"gpmc_ad7.gpmc_ad7", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
-+ {"gpmc_ad8.gpmc_ad8", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
-+ {"gpmc_ad9.gpmc_ad9", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
-+ {"gpmc_ad10.gpmc_ad10", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
-+ {"gpmc_ad11.gpmc_ad11", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
-+ {"gpmc_ad12.gpmc_ad12", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
-+ {"gpmc_ad13.gpmc_ad13", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
-+ {"gpmc_ad14.gpmc_ad14", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
-+ {"gpmc_ad15.gpmc_ad15", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
-+ {"gpmc_wait0.gpmc_wait0", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
-+ {"gpmc_wpn.gpmc_wpn", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT_PULLUP},
-+ {"gpmc_csn1.gpmc_csn1", OMAP_MUX_MODE0 | AM33XX_PULL_DISA},
-+ {"gpmc_advn_ale.gpmc_advn_ale", OMAP_MUX_MODE0 | AM33XX_PULL_DISA},
-+ {"gpmc_oen_ren.gpmc_oen_ren", OMAP_MUX_MODE0 | AM33XX_PULL_DISA},
-+ {"gpmc_wen.gpmc_wen", OMAP_MUX_MODE0 | AM33XX_PULL_DISA},
-+ {"gpmc_ben0_cle.gpmc_ben0_cle", OMAP_MUX_MODE0 | AM33XX_PULL_DISA},
-+ {"gpmc_clk.gpmc_clk", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT},
-+ {"ecap0_in_pwm0_out.xdma_event_intr2", OMAP_MUX_MODE6 | AM33XX_PIN_INPUT}, // DMAREQ
-+ {NULL, 0},
-+};
-+
-+static struct pinmux_config camera_cape_pin_mux[] = {
-+ {"spi0_d1.gpio0_4", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT }, // QL CSSP and Camera Sensor Reset
-+ {"spi0_cs0.gpio0_5", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT_PULLUP }, // 1V8 and 2V8 Power Enable
-+ {NULL, 0},
-+};
-+
- static struct pinmux_config i2c2_pin_mux[] = {
- {"uart1_ctsn.i2c2_sda", OMAP_MUX_MODE3 | AM33XX_SLEWCTRL_SLOW |
- AM33XX_PIN_INPUT_PULLUP},
-@@ -1802,6 +1842,156 @@ static void dvileds_init(int evm_id, int profile )
- pr_err("failed to register BeagleBone DVI cape LEDS\n");
- }
-
-+static struct resource cssp_camera_resources[] = {
-+ {
-+ .name = "gpmc_phys_mem_slot",
-+ .flags = IORESOURCE_MEM,
-+ },
-+};
-+
-+static struct mt9t112_camera_info mt9t111_cam_info = {
-+ /* divider calculated for 32Mhz CAM_MCLK */
-+ .divider = {
-+ .m = 24, .n = 1,
-+ .p1 = 0, .p2 = 7, .p3 = 0, .p4 = 11, .p5 = 15, .p6 = 7, .p7 = 0,
-+ },
-+};
-+
-+static struct soc_camera_link mt9t111_camera_link = {
-+ .priv = &mt9t111_cam_info,
-+ .i2c_adapter_id = 3,
-+};
-+
-+static struct i2c_board_info i2c_camera = {
-+ I2C_BOARD_INFO("mt9t112", 0x3c),
-+ .platform_data = &mt9t111_camera_link,
-+};
-+
-+struct cssp_cam_platform_data {
-+ struct i2c_board_info *cam_i2c_board_info;
-+ const char *cam_clk_name;
-+ int dma_ch;
-+ int cssp_reset_pin;
-+};
-+
-+static struct cssp_cam_platform_data cssp_cam_platform_data = {
-+ .cam_i2c_board_info = &i2c_camera,
-+ .cam_clk_name = "clkout2_ck",
-+ .dma_ch = AM33XX_DMA_XDMA_EVENT_INTR2,
-+ .cssp_reset_pin = GPIO_TO_PIN(0, 4),
-+};
-+
-+static struct platform_device cssp_camera = {
-+ .name = "cssp-camera",
-+ .id = -1,
-+ .dev = {
-+ .platform_data = &cssp_cam_platform_data,
-+ },
-+ .num_resources = sizeof(cssp_camera_resources) / sizeof(cssp_camera_resources[0]),
-+ .resource = cssp_camera_resources,
-+};
-+
-+static struct gpmc_timings cssp_timings = {
-+ /* Minimum clock period for synchronous mode (in picoseconds) */
-+ .sync_clk = 10000,
-+
-+ .cs_on = 0,
-+ .cs_rd_off = 23 * 10, /* Read deassertion time */
-+ .cs_wr_off = 23 * 10, /* Write deassertion time */
-+
-+ /* ADV signal timings corresponding to GPMC_CONFIG3 */
-+ .adv_on = 0, /* Assertion time */
-+ .adv_rd_off = 2 * 10, /* Read deassertion time */
-+ .adv_wr_off = 2 * 10, /* Write deassertion time */
-+
-+ /* WE signals timings corresponding to GPMC_CONFIG4 */
-+ .we_on = 3 * 10, /* WE assertion time */
-+ .we_off = 23 * 10, /* WE deassertion time */
-+
-+ /* OE signals timings corresponding to GPMC_CONFIG4 */
-+ .oe_on = 3 * 10, /* OE assertion time */
-+ .oe_off = 23 * 10, /* OE deassertion time */
-+
-+ /* Access time and cycle time timings corresponding to GPMC_CONFIG5 */
-+ .page_burst_access = 1 * 10, /* Multiple access word delay */
-+ .access = 7 * 10, /* Start-cycle to first data valid delay */
-+ .rd_cycle = 23 * 10, /* Total read cycle time */
-+ .wr_cycle = 23 * 10, /* Total write cycle time */
-+
-+ /* The following are only on OMAP3430 */
-+ .wr_access = 7 * 10, /* WRACCESSTIME */
-+ .wr_data_mux_bus = 3 * 10, /* WRDATAONADMUXBUS */
-+};
-+
-+static int gpmc_cssp_init(void)
-+{
-+ int cs = 1; /* Chip Select on GPMC bus */
-+ int val;
-+ long unsigned int cssp_gpmc_mem_base_phys;
-+
-+ if (gpmc_cs_request(cs, SZ_16M, &cssp_gpmc_mem_base_phys) < 0) {
-+ printk(KERN_ERR "[cssp_cam platform init]: gpmc_cs_request failed\n");
-+ return -1;
-+ }
-+
-+ cssp_camera_resources[0].start = cssp_gpmc_mem_base_phys;
-+ cssp_camera_resources[0].end = cssp_gpmc_mem_base_phys + 0x1ffff;
-+
-+ if (gpmc_cs_configure(cs, GPMC_CONFIG_DEV_TYPE, GPMC_DEVICETYPE_NOR) < 0) {
-+ printk(KERN_ERR "[cssp_cam platform init]: gpmc_cs_configure failed\n");
-+ return -1;
-+ }
-+
-+ val = GPMC_CONFIG1_READMULTIPLE_SUPP;
-+ val |= GPMC_CONFIG1_READTYPE_SYNC;
-+ val |= GPMC_CONFIG1_WRITETYPE_SYNC;
-+ val |= GPMC_CONFIG1_CLKACTIVATIONTIME(1);
-+ val |= GPMC_CONFIG1_PAGE_LEN(2);
-+ val |= GPMC_CONFIG1_DEVICESIZE_16;
-+ val |= GPMC_CONFIG1_DEVICETYPE_NOR;
-+ val |= GPMC_CONFIG1_MUXADDDATA;
-+ gpmc_cs_write_reg(cs, GPMC_CS_CONFIG1, val);
-+
-+ if (gpmc_cs_set_timings(cs, &cssp_timings) < 0) {
-+ printk(KERN_ERR "Failed gpmc_cs_set_timings for QuickLogic CAMIF device\n");
-+ goto free;
-+ }
-+
-+ val = gpmc_cs_read_reg(cs, GPMC_CS_CONFIG6);
-+ val &= 0xe0f0f030;
-+ val |= 0x07030481;
-+ gpmc_cs_write_reg(cs, GPMC_CS_CONFIG6, val);
-+
-+ printk(KERN_INFO "gpmc_cssp_init for QuickLogic CAMIF device succeeded\n");
-+
-+ return 0;
-+
-+free:
-+ gpmc_cs_free(cs);
-+
-+ printk(KERN_ERR "Could not initialize QuickLogic CAMIF device\n");
-+
-+ return -1;
-+}
-+
-+static void cssp_gpmc_init(void)
-+{
-+ struct gpmc_devices_info gpmc_device[2] = {
-+ { NULL, GPMC_DEVICE_NOR },
-+ };
-+
-+ setup_pin_mux(camera_cape_pin_mux);
-+ setup_pin_mux(gpmc_pin_mux);
-+
-+ omap_init_gpmc(gpmc_device, sizeof(gpmc_device));
-+ gpmc_cssp_init();
-+
-+ platform_device_register(&cssp_camera);
-+
-+ printk(KERN_INFO "[cssp_cam platform init]: cssp_gpmc_init: DONE\n");
-+}
-+
-+
- static void lcd3leds_init(int evm_id, int profile )
- {
- int err;
-@@ -2821,6 +3011,7 @@ static void beaglebone_cape_setup(struct memory_accessor *mem_acc, void *context
- if (!strncmp("BB-BONE-CAM-01", cape_config.partnumber, 14)) {
- pr_info("BeagleBone cape: recognized Camera cape\n");
- beaglebone_w1gpio_free = 0;
-+ cssp_gpmc_init();
- }
-
- goto out2;
-@@ -3729,15 +3920,13 @@ static struct pinmux_config clkout2_pin_mux[] = {
-
- static void __init clkout2_enable(void)
- {
-- struct clk *ck_32;
--
-- ck_32 = clk_get(NULL, "clkout2_ck");
-- if (IS_ERR(ck_32)) {
-- pr_err("Cannot clk_get ck_32\n");
-- return;
-- }
-+ void __iomem *base;
-+ unsigned int val;
-
-- clk_enable(ck_32);
-+ base = ioremap(0x44E00700, SZ_4K);
-+ val = (5 << 3) | (3 << 0); //32 MHz
-+ writel(val, base);
-+ iounmap(base);
-
- setup_pin_mux(clkout2_pin_mux);
- }
-diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c
-index 41c9b0f..3ef045e 100644
---- a/arch/arm/mach-omap2/devices.c
-+++ b/arch/arm/mach-omap2/devices.c
-@@ -968,7 +968,7 @@ static struct event_to_channel_map am33xx_xbar_event_mapping[] = {
- {27, -1},
- {28, -1},
- {29, -1},
-- {30, -1},
-+ {30, 20}, /* XDMA_EVENT_INTR2 */
- {31, -1},
- {-1, -1}
- };
-diff --git a/arch/arm/plat-omap/include/plat/dma-33xx.h b/arch/arm/plat-omap/include/plat/dma-33xx.h
-index bebdaa7..ded00aa 100644
---- a/arch/arm/plat-omap/include/plat/dma-33xx.h
-+++ b/arch/arm/plat-omap/include/plat/dma-33xx.h
-@@ -83,5 +83,6 @@
- #define AM33XX_DMA_PWMSS2_EPW 63
- #define AM33XX_DMA_MMCHS2_W 64 /* xBar */
- #define AM33XX_DMA_MMCHS2_R 65 /* xBar */
-+#define AM33XX_DMA_XDMA_EVENT_INTR2 93 /* xBar */
-
- #endif
-diff --git a/drivers/media/video/Kconfig b/drivers/media/video/Kconfig
-index b303a3f..a31723f 100644
---- a/drivers/media/video/Kconfig
-+++ b/drivers/media/video/Kconfig
-@@ -1002,6 +1002,13 @@ config VIDEO_S5P_MIPI_CSIS
-
- source "drivers/media/video/s5p-tv/Kconfig"
-
-+config VIDEO_QL_CAMIF
-+ tristate "QuickLogic Camera Interface support (EXPERIMENTAL)"
-+ depends on VIDEO_DEV && SOC_CAMERA && SOC_OMAPAM33XX && EXPERIMENTAL
-+ select VIDEOBUF2_DMA_CONTIG
-+ ---help---
-+ This is a v4l2 driver for the QuickLogic CAMIF controller.
-+
- #
- # USB Multimedia device configuration
- #
-diff --git a/drivers/media/video/Makefile b/drivers/media/video/Makefile
-index 117f9c4..af7af692 100644
---- a/drivers/media/video/Makefile
-+++ b/drivers/media/video/Makefile
-@@ -195,6 +195,8 @@ obj-y += davinci/
-
- obj-$(CONFIG_ARCH_OMAP) += omap/
-
-+obj-$(CONFIG_VIDEO_QL_CAMIF) += cssp_camera/
-+
- ccflags-y += -Idrivers/media/dvb/dvb-core
- ccflags-y += -Idrivers/media/dvb/frontends
- ccflags-y += -Idrivers/media/common/tuners
-diff --git a/drivers/media/video/cssp_camera/Makefile b/drivers/media/video/cssp_camera/Makefile
-new file mode 100644
-index 0000000..d85a84e
---- /dev/null
-+++ b/drivers/media/video/cssp_camera/Makefile
-@@ -0,0 +1,3 @@
-+# cssp_camera
-+
-+obj-$(CONFIG_VIDEO_QL_CAMIF) += cssp_camera.o
-diff --git a/drivers/media/video/cssp_camera/cssp_camera.c b/drivers/media/video/cssp_camera/cssp_camera.c
-new file mode 100644
-index 0000000..39aa003
---- /dev/null
-+++ b/drivers/media/video/cssp_camera/cssp_camera.c
-@@ -0,0 +1,1119 @@
-+/*
-+ * cssp-camera driver
-+ *
-+ * Based on Vivi driver
-+ *
-+ * Copyright (C) 2012 QuickLogic Corp.
-+ *
-+ * Developed for QuickLogic by:
-+ * Damian Eppel <damian.eppel at teleca.com>
-+ * Przemek Szewczyk <przemek.szewczyk at teleca.com>
-+ * Dan Aizenstros <daizenstros at quicklogic.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ *
-+ */
-+
-+
-+#include <linux/init.h>
-+#include <linux/module.h>
-+#include <linux/gpio.h>
-+#include <linux/i2c.h>
-+#include <linux/delay.h>
-+#include <linux/spinlock.h>
-+#include <linux/dma-mapping.h>
-+#include <linux/interrupt.h>
-+#include <mach/edma.h>
-+#include <linux/clk.h>
-+// V4L2 Interface *********************
-+#include <media/soc_camera.h>
-+#include <media/v4l2-mediabus.h>
-+#include <media/videobuf2-dma-contig.h>
-+#include <media/v4l2-ioctl.h>
-+#include <media/v4l2-event.h>
-+//*************************************
-+#include "cssp_camera.h"
-+
-+
-+/*
-+ * ---------------------------------------------------------------------------
-+ * QuickLoigc Camera Interface registers
-+ * ---------------------------------------------------------------------------
-+ */
-+
-+#define REG_MODE 0x00000
-+#define REG_DATA 0x10000
-+
-+/* MODE bit shifts */
-+#define FMT_2X8_EN BIT(15) /* Enable 2 byte format on CAMIF bus (0 - 10 bit, 1 - 16 bit 2x8) */
-+#define PCLK_POL BIT(14) /* PCLK polarity (0 - rising edge, 1 - falling edge */
-+#define HS_EN BIT(13) /* High speed bus (0 =< 50 MHz, 1 > 50 MHz) */
-+#define ENABLE BIT(12)
-+
-+
-+static struct cssp_cam_fmt formats[] = {
-+ {
-+ .name = "4:2:2, packed, YUYV",
-+ .fourcc = V4L2_PIX_FMT_YUYV,
-+ .depth = 16,
-+ .code = V4L2_MBUS_FMT_YUYV8_2X8,
-+ },
-+ {
-+ .name = "4:2:2, packed, UYVY",
-+ .fourcc = V4L2_PIX_FMT_UYVY,
-+ .depth = 16,
-+ .code = V4L2_MBUS_FMT_UYVY8_2X8,
-+ },
-+ {
-+ .name = "4:2:2, packed, VYUY",
-+ .fourcc = V4L2_PIX_FMT_VYUY,
-+ .depth = 16,
-+ .code = V4L2_MBUS_FMT_VYUY8_2X8,
-+ },
-+ {
-+ .name = "4:2:2, packed, YVYU",
-+ .fourcc = V4L2_PIX_FMT_YVYU,
-+ .depth = 16,
-+ .code = V4L2_MBUS_FMT_YVYU8_2X8,
-+ },
-+ {
-+ .name = "RGB565 (LE)",
-+ .fourcc = V4L2_PIX_FMT_RGB565,
-+ .depth = 16,
-+ .code = V4L2_MBUS_FMT_RGB565_2X8_LE,
-+ },
-+ {
-+ .name = "RGB555 (LE)",
-+ .fourcc = V4L2_PIX_FMT_RGB555,
-+ .depth = 16,
-+ .code = V4L2_MBUS_FMT_RGB555_2X8_PADHI_LE,
-+ },
-+};
-+
-+
-+/***************************************************************************/
-+
-+
-+static int configure_gpio(int nr, int val, const char *name)
-+{
-+ unsigned long flags = val ? GPIOF_OUT_INIT_HIGH : GPIOF_OUT_INIT_LOW;
-+ int ret;
-+ if (!gpio_is_valid(nr))
-+ return 0;
-+ ret = gpio_request_one(nr, flags, name);
-+ if (!ret)
-+ gpio_export(nr, 0);
-+ return ret;
-+}
-+
-+static int reset_cssp(struct cssp_cam_dev *cam)
-+{
-+ struct platform_device *pdev = cam->pdev;
-+ int err;
-+
-+ cam->reset_pin = ((struct cssp_cam_platform_data *)pdev->dev.platform_data)->gpio_reset_pin;
-+
-+ err = configure_gpio(cam->reset_pin, 0, "cssp_reset");
-+ if (err) {
-+ printk(KERN_ERR "[%s]: failed to configure cssp reset pin\n", pdev->name);
-+ return -1;
-+ }
-+
-+ mdelay(1);
-+
-+ gpio_direction_output(cam->reset_pin, 1);
-+
-+ return err;
-+}
-+
-+static int trigger_dma_transfer_to_buf(struct cssp_cam_dev *dev, struct vb2_buffer *vb)
-+{
-+ dma_addr_t dma_buf = vb2_dma_contig_plane_dma_addr(vb, 0);
-+
-+ if (!dma_buf) {
-+ /* Is this possible? Release the vb2_buffer with an error here, */
-+ vb2_buffer_done(vb, VB2_BUF_STATE_ERROR);
-+ dev->current_vb = NULL;
-+ return -ENOMEM;
-+ }
-+
-+ dev->dma_tr_params.dst = dma_buf;
-+
-+ // Enable DMA
-+ edma_write_slot(dev->dma_ch, &dev->dma_tr_params);
-+
-+ // Enable data capture
-+ dev->mode |= ENABLE;
-+ writew(dev->mode, dev->reg_base_virt + REG_MODE);
-+ readw(dev->reg_base_virt + REG_MODE);
-+
-+ dev->current_vb = vb;
-+
-+ return 0;
-+}
-+
-+static void dequeue_buffer_for_dma(struct cssp_cam_dev *dev)
-+{
-+ struct cssp_cam_dmaqueue *dma_q = &dev->vidq;
-+ unsigned long flags = 0;
-+
-+ spin_lock_irqsave(&dev->slock, flags);
-+ if (!list_empty(&dma_q->active)) {
-+ struct cssp_cam_buffer *buf;
-+
-+ buf = list_entry(dma_q->active.next, struct cssp_cam_buffer, list);
-+ list_del(&buf->list);
-+ spin_unlock_irqrestore(&dev->slock, flags);
-+
-+ buf->fmt = dev->fmt;
-+
-+ trigger_dma_transfer_to_buf(dev, &buf->vb);
-+ } else {
-+ spin_unlock_irqrestore(&dev->slock, flags);
-+ }
-+}
-+
-+static void dma_callback(unsigned lch, u16 ch_status, void *data)
-+{
-+ struct cssp_cam_dev *dev = (struct cssp_cam_dev *)data;
-+
-+ // Disable data capture
-+ dev->mode &= ~ENABLE;
-+ writew(dev->mode, dev->reg_base_virt + REG_MODE);
-+ readw(dev->reg_base_virt + REG_MODE);
-+
-+ if (ch_status == DMA_COMPLETE) {
-+ struct vb2_buffer *vb = dev->current_vb;
-+ struct timeval ts;
-+
-+ vb->v4l2_buf.field = dev->field;
-+ dev->field_count++;
-+ vb->v4l2_buf.sequence = dev->field_count >> 1;
-+ do_gettimeofday(&ts);
-+ vb->v4l2_buf.timestamp = ts;
-+ vb2_buffer_done(vb, VB2_BUF_STATE_DONE);
-+ dev->current_vb = NULL;
-+ dev->frame_cnt++;
-+
-+ /* check if we have new buffer queued */
-+ dequeue_buffer_for_dma(dev);
-+ } else {
-+ printk(KERN_ERR "[cssp_camera]: EDMA error (ch_status = %d)\n", ch_status);
-+ /* we got a missed interrupt so just start a new DMA with the existing buffer */
-+ if (dev->current_vb != NULL)
-+ trigger_dma_transfer_to_buf(dev, dev->current_vb);
-+ }
-+}
-+
-+static int configure_edma(struct cssp_cam_dev *cam)
-+{
-+ struct platform_device *pdev = cam->pdev;
-+ int dma_channel;
-+
-+ dma_channel = ((struct cssp_cam_platform_data *)pdev->dev.platform_data)->dma_ch;
-+
-+ pdev->dev.dma_mask = &cam->dma_mask;
-+
-+ pdev->dev.coherent_dma_mask = (u32)~0;
-+
-+ if (dma_set_mask(&pdev->dev, (u32)~0)) {
-+ printk(KERN_ERR "[%s]: failed setting mask for DMA\n", pdev->name);
-+ return -1;
-+ }
-+
-+ cam->dma_ch = edma_alloc_channel(dma_channel, dma_callback, cam, EVENTQ_1);
-+ if (cam->dma_ch < 0) {
-+ printk(KERN_ERR "[%s]: allocating channel for DMA failed\n", pdev->name);
-+ return -EBUSY;
-+ } else {
-+ printk(KERN_ERR "[%s]: allocating channel for DMA succeeded, chan=%d\n", pdev->name, cam->dma_ch);
-+ }
-+
-+ cam->dma_tr_params.opt = TCINTEN | TCC(cam->dma_ch);
-+ cam->dma_tr_params.src = cam->reg_base_phys + REG_DATA;
-+ cam->dma_tr_params.a_b_cnt = ACNT(BYTES_PER_DMA_EVT) | BCNT((VGA_WIDTH * BYTES_PER_PIXEL) / BYTES_PER_DMA_EVT);
-+ cam->dma_tr_params.src_dst_bidx = SRCBIDX(0) | DSTBIDX(BYTES_PER_DMA_EVT);
-+ cam->dma_tr_params.link_bcntrld = BCNTRLD((VGA_WIDTH * BYTES_PER_PIXEL) / BYTES_PER_DMA_EVT) | LINK(0xffff);
-+ cam->dma_tr_params.src_dst_cidx = SRCCIDX(0) | DSTCIDX(BYTES_PER_DMA_EVT);
-+ cam->dma_tr_params.ccnt = CCNT(VGA_HEIGHT);
-+
-+ return 0;
-+}
-+
-+static int configure_cssp(struct cssp_cam_dev *cam)
-+{
-+ struct platform_device *pdev = cam->pdev;
-+ int ret = 0;
-+ unsigned int val;
-+ struct resource *res;
-+
-+ ret = reset_cssp(cam);
-+ if (ret)
-+ return ret;
-+
-+ res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "gpmc_phys_mem_slot");
-+ if (res == NULL) {
-+ printk(KERN_ERR "[%s]: failed to get gpmc_phys_mem_slot resource\n", pdev->name);
-+ return -ENODEV;
-+ }
-+
-+ /*
-+ * Request the region.
-+ */
-+ if (!request_mem_region(res->start, resource_size(res), pdev->name)) {
-+ return -EBUSY;
-+ }
-+
-+ cam->reg_base_phys = res->start;
-+ cam->reg_size = resource_size(res);
-+
-+ cam->reg_base_virt = (unsigned int)ioremap(cam->reg_base_phys, cam->reg_size);
-+ if (cam->reg_base_virt == 0) {
-+ printk(KERN_ERR "[%s]: ioremap of registers region failed\n", pdev->name);
-+ release_mem_region(cam->reg_base_phys, cam->reg_size);
-+ return -ENOMEM;
-+ }
-+
-+ printk(KERN_INFO "[%s]: reg_base_virt = 0x%x\n", pdev->name, cam->reg_base_virt);
-+
-+ val = readw(cam->reg_base_virt + REG_MODE);
-+ printk(KERN_INFO "[%s]: reading register address=0x0 returns 0x%x\n", pdev->name, val);
-+
-+ return 0;
-+}
-+
-+static int configure_camera_sensor(struct cssp_cam_dev *cam)
-+{
-+ struct i2c_board_info *info = cam->camera_board_info;
-+ struct i2c_client *client;
-+ struct i2c_adapter *adapter;
-+ struct v4l2_subdev *subdev;
-+ struct v4l2_mbus_framefmt f_format = {
-+ .width = VGA_WIDTH,
-+ .height = VGA_HEIGHT,
-+ .code = V4L2_MBUS_FMT_YUYV8_2X8,
-+ .colorspace = V4L2_COLORSPACE_JPEG,
-+ };
-+
-+ /* Enable the clock just for the time of loading the camera driver and disable after that */
-+ /* It is going to be be re-enabled later, when camera will be in use */
-+ clk_enable(cam->camera_clk);
-+ udelay(5); // let the clock stabilize
-+
-+ adapter = i2c_get_adapter(((struct soc_camera_link *)(info->platform_data))->i2c_adapter_id);
-+ if (!adapter) {
-+ printk(KERN_INFO "[%s]: failed to get adapter...\n", __func__);
-+ return -ENODEV;
-+ }
-+
-+ client = i2c_new_device(adapter, info);
-+ i2c_put_adapter(adapter);
-+
-+ if (client == NULL) {
-+ return -ENODEV;
-+ }
-+
-+ printk(KERN_INFO "[%s]: client's name is: %s\n", __func__, client->name);
-+
-+ subdev = (struct v4l2_subdev *)i2c_get_clientdata(client);
-+ if (subdev == NULL) {
-+ i2c_unregister_device(client);
-+ return -ENODEV;
-+ }
-+
-+ cam->subdev = subdev;
-+
-+ v4l2_subdev_call(subdev, video, s_mbus_fmt, &f_format);
-+
-+ clk_disable(cam->camera_clk);
-+
-+ return 0;
-+}
-+
-+static int start_camera_sensor(struct cssp_cam_dev *cam)
-+{
-+ clk_enable(cam->camera_clk);
-+ udelay(5); /* let the clock stabilize */
-+
-+ v4l2_subdev_call(cam->subdev, video, s_stream, 1);
-+
-+ return 0;
-+}
-+
-+static void stop_camera_sensor(struct cssp_cam_dev *cam)
-+{
-+ v4l2_subdev_call(cam->subdev, video, s_stream, 0);
-+
-+ clk_disable(cam->camera_clk);
-+
-+ return;
-+}
-+
-+
-+/************************************************
-+ * Video4Linux2
-+ */
-+
-+static struct cssp_cam_fmt *get_format(struct v4l2_format *f)
-+{
-+ struct cssp_cam_fmt *fmt;
-+ unsigned int k;
-+
-+ for (k = 0; k < ARRAY_SIZE(formats); k++) {
-+ fmt = &formats[k];
-+ if (fmt->fourcc == f->fmt.pix.pixelformat)
-+ break;
-+ }
-+
-+ if (k == ARRAY_SIZE(formats))
-+ return NULL;
-+
-+ return &formats[k];
-+}
-+
-+
-+/* ------------------------------------------------------------------
-+ Videobuf operations
-+ ------------------------------------------------------------------*/
-+
-+static int queue_setup(struct vb2_queue *vq, const struct v4l2_format *fmt,
-+ unsigned int *nbuffers, unsigned int *nplanes,
-+ unsigned int sizes[], void *alloc_ctxs[])
-+{
-+ struct cssp_cam_dev *dev = vb2_get_drv_priv(vq);
-+ unsigned long size;
-+
-+ size = dev->sizeimage;
-+
-+ if (0 == *nbuffers)
-+ *nbuffers = 32;
-+
-+ while (size * *nbuffers > vid_limit * 1024 * 1024)
-+ (*nbuffers)--;
-+
-+ *nplanes = 1;
-+
-+ sizes[0] = size;
-+
-+ alloc_ctxs[0] = dev->dma_cont_ctx;
-+
-+ dprintk(dev, 1, "%s, count=%d, size=%ld\n", __func__, *nbuffers, size);
-+
-+ return 0;
-+}
-+
-+static int buffer_init(struct vb2_buffer *vb)
-+{
-+ struct cssp_cam_dev *dev = vb2_get_drv_priv(vb->vb2_queue);
-+
-+ BUG_ON(NULL == dev->fmt);
-+
-+ /*
-+ * This callback is called once per buffer, after its allocation.
-+ *
-+ * Vivi does not allow changing format during streaming, but it is
-+ * possible to do so when streaming is paused (i.e. in streamoff state).
-+ * Buffers however are not freed when going into streamoff and so
-+ * buffer size verification has to be done in buffer_prepare, on each
-+ * qbuf.
-+ * It would be best to move verification code here to buf_init and
-+ * s_fmt though.
-+ */
-+
-+ return 0;
-+}
-+
-+static int buffer_prepare(struct vb2_buffer *vb)
-+{
-+ struct cssp_cam_dev *dev = vb2_get_drv_priv(vb->vb2_queue);
-+ struct cssp_cam_buffer *buf = container_of(vb, struct cssp_cam_buffer, vb);
-+ unsigned long size;
-+
-+ dprintk(dev, 1, "%s, field=%d\n", __func__, vb->v4l2_buf.field);
-+
-+ BUG_ON(NULL == dev->fmt);
-+
-+ /*
-+ * Theses properties only change when queue is idle, see s_fmt.
-+ * The below checks should not be performed here, on each
-+ * buffer_prepare (i.e. on each qbuf). Most of the code in this function
-+ * should thus be moved to buffer_init and s_fmt.
-+ */
-+ if (dev->width < 48 || dev->width > MAX_WIDTH ||
-+ dev->height < 32 || dev->height > MAX_HEIGHT)
-+ return -EINVAL;
-+
-+ size = dev->sizeimage;
-+ if (vb2_plane_size(vb, 0) < size) {
-+ dprintk(dev, 1, "%s data will not fit into plane (%lu < %lu)\n",
-+ __func__, vb2_plane_size(vb, 0), size);
-+ return -EINVAL;
-+ }
-+
-+ vb2_set_plane_payload(&buf->vb, 0, size);
-+
-+ buf->fmt = dev->fmt;
-+
-+ return 0;
-+}
-+
-+static int buffer_finish(struct vb2_buffer *vb)
-+{
-+ struct cssp_cam_dev *dev = vb2_get_drv_priv(vb->vb2_queue);
-+ dprintk(dev, 1, "%s\n", __func__);
-+ return 0;
-+}
-+
-+static void buffer_cleanup(struct vb2_buffer *vb)
-+{
-+ struct cssp_cam_dev *dev = vb2_get_drv_priv(vb->vb2_queue);
-+ dprintk(dev, 1, "%s\n", __func__);
-+}
-+
-+static void buffer_queue(struct vb2_buffer *vb)
-+{
-+ struct cssp_cam_dev *dev = vb2_get_drv_priv(vb->vb2_queue);
-+ struct cssp_cam_buffer *buf = container_of(vb, struct cssp_cam_buffer, vb);
-+ struct cssp_cam_dmaqueue *vidq = &dev->vidq;
-+ unsigned long flags = 0;
-+
-+ dprintk(dev, 1, "%s\n", __func__);
-+
-+ if (dev->streaming_started && !dev->current_vb) {
-+ trigger_dma_transfer_to_buf(dev, &buf->vb);
-+ } else {
-+ spin_lock_irqsave(&dev->slock, flags);
-+ list_add_tail(&buf->list, &vidq->active);
-+ spin_unlock_irqrestore(&dev->slock, flags);
-+ }
-+}
-+
-+static int start_streaming(struct vb2_queue *vq, unsigned int count)
-+{
-+ struct cssp_cam_dev *dev = vb2_get_drv_priv(vq);
-+ int ret;
-+
-+ dprintk(dev, 1, "%s\n", __func__);
-+
-+ ret = start_camera_sensor(dev);
-+ if (ret != 0)
-+ return ret;
-+
-+ // Enable DMA
-+ edma_start(dev->dma_ch);
-+
-+ dev->streaming_started = 1;
-+
-+ /* check if we have new buffer queued */
-+ dequeue_buffer_for_dma(dev);
-+
-+ return 0;
-+}
-+
-+/* abort streaming and wait for last buffer */
-+static int stop_streaming(struct vb2_queue *vq)
-+{
-+ struct cssp_cam_dev *dev = vb2_get_drv_priv(vq);
-+ struct cssp_cam_dmaqueue *dma_q = &dev->vidq;
-+
-+ dprintk(dev, 1, "%s\n", __func__);
-+
-+ // Disable DMA
-+ edma_stop(dev->dma_ch);
-+
-+ // Disable data capture
-+ dev->mode &= ~ENABLE;
-+ writew(dev->mode, dev->reg_base_virt + REG_MODE);
-+ readw(dev->reg_base_virt + REG_MODE);
-+
-+ stop_camera_sensor(dev);
-+
-+ dev->streaming_started = 0;
-+
-+ /* Release all active buffers */
-+ while (!list_empty(&dma_q->active)) {
-+ struct cssp_cam_buffer *buf;
-+
-+ buf = list_entry(dma_q->active.next, struct cssp_cam_buffer, list);
-+ list_del(&buf->list);
-+ vb2_buffer_done(&buf->vb, VB2_BUF_STATE_ERROR);
-+ dprintk(dev, 2, "[%p/%d] done\n", buf, buf->vb.v4l2_buf.index);
-+ }
-+
-+ dev->current_vb = NULL;
-+
-+ return 0;
-+}
-+
-+static void cssp_cam_lock(struct vb2_queue *vq)
-+{
-+ struct cssp_cam_dev *dev = vb2_get_drv_priv(vq);
-+ mutex_lock(&dev->mutex);
-+}
-+
-+static void cssp_cam_unlock(struct vb2_queue *vq)
-+{
-+ struct cssp_cam_dev *dev = vb2_get_drv_priv(vq);
-+ mutex_unlock(&dev->mutex);
-+}
-+
-+static struct vb2_ops cssp_cam_video_qops = {
-+ .queue_setup = queue_setup,
-+ .buf_init = buffer_init,
-+ .buf_prepare = buffer_prepare,
-+ .buf_finish = buffer_finish,
-+ .buf_cleanup = buffer_cleanup,
-+ .buf_queue = buffer_queue,
-+ .start_streaming = start_streaming,
-+ .stop_streaming = stop_streaming,
-+ .wait_prepare = cssp_cam_unlock,
-+ .wait_finish = cssp_cam_lock,
-+};
-+
-+
-+/* ------------------------------------------------------------------
-+ IOCTL vidioc handling
-+ ------------------------------------------------------------------*/
-+
-+static int vidioc_querycap(struct file *file, void *priv,
-+ struct v4l2_capability *cap)
-+{
-+ struct cssp_cam_dev *dev = video_drvdata(file);
-+
-+ strcpy(cap->driver, "cssp_camera");
-+ strcpy(cap->card, "cssp_camera");
-+ strlcpy(cap->bus_info, dev->v4l2_dev.name, sizeof(cap->bus_info));
-+ cap->capabilities = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING |
-+ V4L2_CAP_READWRITE;
-+ return 0;
-+}
-+
-+static int vidioc_enum_fmt_vid_cap(struct file *file, void *priv,
-+ struct v4l2_fmtdesc *f)
-+{
-+ struct cssp_cam_fmt *fmt;
-+
-+ if (f->index >= ARRAY_SIZE(formats))
-+ return -EINVAL;
-+
-+ fmt = &formats[f->index];
-+
-+ strlcpy(f->description, fmt->name, sizeof(f->description));
-+ f->pixelformat = fmt->fourcc;
-+ return 0;
-+}
-+
-+static int vidioc_g_fmt_vid_cap(struct file *file, void *priv,
-+ struct v4l2_format *f)
-+{
-+ struct cssp_cam_dev *dev = video_drvdata(file);
-+
-+ f->fmt.pix.width = dev->width;
-+ f->fmt.pix.height = dev->height;
-+ f->fmt.pix.field = dev->field;
-+ f->fmt.pix.pixelformat = dev->fmt->fourcc;
-+ f->fmt.pix.bytesperline = dev->bytesperline;
-+ f->fmt.pix.sizeimage = dev->sizeimage;
-+ f->fmt.pix.colorspace = dev->colorspace;
-+
-+ return 0;
-+}
-+
-+static int vidioc_try_fmt_vid_cap(struct file *file, void *priv,
-+ struct v4l2_format *f)
-+{
-+ struct cssp_cam_dev *dev = video_drvdata(file);
-+ struct cssp_cam_fmt *fmt;
-+ struct v4l2_mbus_framefmt mbus_fmt;
-+ struct v4l2_pix_format *pix = &f->fmt.pix;
-+
-+ fmt = get_format(f);
-+ if (!fmt) {
-+ dprintk(dev, 1, "Fourcc format (0x%08x) invalid.\n",
-+ f->fmt.pix.pixelformat);
-+ return -EINVAL;
-+ }
-+
-+ v4l2_fill_mbus_format(&mbus_fmt, pix, fmt->code);
-+ v4l2_subdev_call(dev->subdev, video, try_mbus_fmt, &mbus_fmt);
-+ v4l2_fill_pix_format(pix, &mbus_fmt);
-+ pix->bytesperline = (pix->width * fmt->depth) >> 3;
-+ pix->sizeimage = pix->height * pix->bytesperline;
-+
-+ return 0;
-+}
-+
-+static int vidioc_s_fmt_vid_cap(struct file *file, void *priv,
-+ struct v4l2_format *f)
-+{
-+ struct cssp_cam_dev *dev = video_drvdata(file);
-+ struct vb2_queue *q = &dev->vb_vidq;
-+ struct v4l2_pix_format *pix = &f->fmt.pix;
-+ struct v4l2_mbus_framefmt mbus_fmt;
-+
-+ int ret = vidioc_try_fmt_vid_cap(file, priv, f);
-+ if (ret < 0)
-+ return ret;
-+
-+ if (vb2_is_streaming(q)) {
-+ dprintk(dev, 1, "%s device busy\n", __func__);
-+ return -EBUSY;
-+ }
-+
-+ dev->fmt = get_format(f);
-+ dev->width = f->fmt.pix.width;
-+ dev->height = f->fmt.pix.height;
-+ dev->field = f->fmt.pix.field;
-+ dev->colorspace = f->fmt.pix.colorspace;
-+ dev->bytesperline = f->fmt.pix.bytesperline;
-+ dev->sizeimage = f->fmt.pix.sizeimage;
-+
-+ /* Set the sensor into the new format */
-+ v4l2_fill_mbus_format(&mbus_fmt, pix, dev->fmt->code);
-+ v4l2_subdev_call(dev->subdev, video, s_mbus_fmt, &mbus_fmt);
-+
-+ /* Set the EDMA for the new resolution */
-+ dev->dma_tr_params.a_b_cnt = ACNT(BYTES_PER_DMA_EVT) | BCNT(dev->bytesperline / BYTES_PER_DMA_EVT);
-+ dev->dma_tr_params.link_bcntrld = BCNTRLD(dev->bytesperline / BYTES_PER_DMA_EVT) | LINK(0xffff);
-+ dev->dma_tr_params.ccnt = CCNT(dev->height);
-+
-+ return 0;
-+}
-+
-+static int vidioc_reqbufs(struct file *file, void *priv,
-+ struct v4l2_requestbuffers *p)
-+{
-+ struct cssp_cam_dev *dev = video_drvdata(file);
-+ return vb2_reqbufs(&dev->vb_vidq, p);
-+}
-+
-+static int vidioc_querybuf(struct file *file, void *priv, struct v4l2_buffer *p)
-+{
-+ struct cssp_cam_dev *dev = video_drvdata(file);
-+ return vb2_querybuf(&dev->vb_vidq, p);
-+}
-+
-+static int vidioc_qbuf(struct file *file, void *priv, struct v4l2_buffer *p)
-+{
-+ struct cssp_cam_dev *dev = video_drvdata(file);
-+ return vb2_qbuf(&dev->vb_vidq, p);
-+}
-+
-+static int vidioc_dqbuf(struct file *file, void *priv, struct v4l2_buffer *p)
-+{
-+ struct cssp_cam_dev *dev = video_drvdata(file);
-+ return vb2_dqbuf(&dev->vb_vidq, p, file->f_flags & O_NONBLOCK);
-+}
-+
-+static int vidioc_streamon(struct file *file, void *priv, enum v4l2_buf_type i)
-+{
-+ struct cssp_cam_dev *dev = video_drvdata(file);
-+ return vb2_streamon(&dev->vb_vidq, i);
-+}
-+
-+static int vidioc_streamoff(struct file *file, void *priv, enum v4l2_buf_type i)
-+{
-+ struct cssp_cam_dev *dev = video_drvdata(file);
-+ return vb2_streamoff(&dev->vb_vidq, i);
-+}
-+
-+static int vidioc_log_status(struct file *file, void *priv)
-+{
-+ struct cssp_cam_dev *dev = video_drvdata(file);
-+
-+ v4l2_ctrl_handler_log_status(&dev->ctrl_handler, dev->v4l2_dev.name);
-+ return 0;
-+}
-+
-+static int vidioc_s_std(struct file *file, void *priv, v4l2_std_id *i)
-+{
-+ return 0;
-+}
-+
-+/* only one input in this sample driver */
-+static int vidioc_enum_input(struct file *file, void *priv,
-+ struct v4l2_input *inp)
-+{
-+ return -EINVAL;
-+
-+ inp->type = V4L2_INPUT_TYPE_CAMERA;
-+ inp->std = V4L2_STD_525_60;
-+ sprintf(inp->name, "Camera %u", inp->index);
-+ return 0;
-+}
-+
-+static int vidioc_g_input(struct file *file, void *priv, unsigned int *i)
-+{
-+ struct cssp_cam_dev *dev = video_drvdata(file);
-+
-+ *i = dev->input;
-+
-+ return 0;
-+}
-+
-+static int vidioc_s_input(struct file *file, void *priv, unsigned int i)
-+{
-+ struct cssp_cam_dev *dev = video_drvdata(file);
-+
-+ return -EINVAL;
-+
-+ if (i == dev->input)
-+ return 0;
-+
-+ dev->input = i;
-+
-+ return 0;
-+}
-+
-+static int vidioc_subscribe_event(struct v4l2_fh *fh,
-+ struct v4l2_event_subscription *sub)
-+{
-+ switch (sub->type) {
-+ case V4L2_EVENT_CTRL:
-+ return v4l2_event_subscribe(fh, sub, 0);
-+ default:
-+ return -EINVAL;
-+ }
-+}
-+
-+static const struct v4l2_ioctl_ops cssp_cam_ioctl_ops = {
-+ .vidioc_querycap = vidioc_querycap,
-+ .vidioc_enum_fmt_vid_cap = vidioc_enum_fmt_vid_cap,
-+ .vidioc_g_fmt_vid_cap = vidioc_g_fmt_vid_cap,
-+ .vidioc_try_fmt_vid_cap = vidioc_try_fmt_vid_cap,
-+ .vidioc_s_fmt_vid_cap = vidioc_s_fmt_vid_cap,
-+ .vidioc_reqbufs = vidioc_reqbufs,
-+ .vidioc_querybuf = vidioc_querybuf,
-+ .vidioc_qbuf = vidioc_qbuf,
-+ .vidioc_dqbuf = vidioc_dqbuf,
-+ .vidioc_s_std = vidioc_s_std,
-+ .vidioc_enum_input = vidioc_enum_input,
-+ .vidioc_g_input = vidioc_g_input,
-+ .vidioc_s_input = vidioc_s_input,
-+ .vidioc_streamon = vidioc_streamon,
-+ .vidioc_streamoff = vidioc_streamoff,
-+ .vidioc_log_status = vidioc_log_status,
-+ .vidioc_subscribe_event = vidioc_subscribe_event,
-+ .vidioc_unsubscribe_event = v4l2_event_unsubscribe,
-+};
-+
-+
-+/* ------------------------------------------------------------------
-+ File operations
-+ ------------------------------------------------------------------*/
-+
-+static unsigned int video_poll(struct file *file, struct poll_table_struct *wait)
-+{
-+ struct cssp_cam_dev *dev = video_drvdata(file);
-+ struct v4l2_fh *fh = file->private_data;
-+ struct vb2_queue *q = &dev->vb_vidq;
-+ unsigned int res;
-+
-+ dprintk(dev, 1, "%s\n", __func__);
-+ res = vb2_poll(q, file, wait);
-+ if (v4l2_event_pending(fh))
-+ res |= POLLPRI;
-+ else
-+ poll_wait(file, &fh->wait, wait);
-+ return res;
-+}
-+
-+static int video_mmap(struct file *file, struct vm_area_struct *vma)
-+{
-+ struct cssp_cam_dev *dev = video_drvdata(file);
-+ int ret;
-+
-+ dprintk(dev, 1, "mmap called, vma=0x%08lx\n", (unsigned long)vma);
-+
-+ ret = vb2_mmap(&dev->vb_vidq, vma);
-+ dprintk(dev, 1, "vma start=0x%08lx, size=%ld, ret=%d\n",
-+ (unsigned long)vma->vm_start,
-+ (unsigned long)vma->vm_end - (unsigned long)vma->vm_start,
-+ ret);
-+ return ret;
-+}
-+
-+static ssize_t video_read(struct file *file, char __user *buf, size_t size, loff_t *offset)
-+{
-+ struct cssp_cam_dev *cam_dev = video_drvdata(file);
-+
-+ dprintk(cam_dev, 1, "read called\n");
-+ return vb2_read(&cam_dev->vb_vidq, buf, size, offset, file->f_flags & O_NONBLOCK);
-+}
-+
-+static int video_close(struct file *file)
-+{
-+ struct video_device *vdev = video_devdata(file);
-+ struct cssp_cam_dev *cam_dev = video_drvdata(file);
-+
-+ dprintk(cam_dev, 1, "close called (dev=%s), file %p\n",
-+ video_device_node_name(vdev), file);
-+
-+ if (v4l2_fh_is_singular_file(file))
-+ vb2_queue_release(&cam_dev->vb_vidq);
-+ return v4l2_fh_release(file);
-+}
-+
-+static const struct v4l2_file_operations cssp_cam_fops = {
-+ .owner = THIS_MODULE,
-+ .open = v4l2_fh_open,
-+ .release = video_close,
-+ .read = video_read,
-+ .poll = video_poll,
-+ .unlocked_ioctl = video_ioctl2,
-+ .mmap = video_mmap,
-+};
-+
-+
-+/* ------------------------------------------------------------------
-+ Driver initialization
-+ ------------------------------------------------------------------*/
-+
-+static struct video_device cssp_cam_template = {
-+ .name = "cssp_camera",
-+ .fops = &cssp_cam_fops,
-+ .ioctl_ops = &cssp_cam_ioctl_ops,
-+ .minor = -1,
-+ .release = video_device_release,
-+ .tvnorms = V4L2_STD_525_60,
-+ .current_norm = V4L2_STD_NTSC_M,
-+};
-+
-+static int __init video_probe(struct cssp_cam_dev *cam_dev)
-+{
-+ struct video_device *vfd;
-+ struct v4l2_ctrl_handler *hdl;
-+ struct vb2_queue *q;
-+ int ret = 0;
-+
-+ snprintf(cam_dev->v4l2_dev.name, sizeof(cam_dev->v4l2_dev.name),
-+ "%s-%03d", "cssp_camera", 0);
-+ ret = v4l2_device_register(NULL, &cam_dev->v4l2_dev);
-+ if (ret)
-+ goto free_dev;
-+
-+ cam_dev->fmt = &formats[0];
-+ cam_dev->width = VGA_WIDTH;
-+ cam_dev->height = VGA_HEIGHT;
-+ cam_dev->sizeimage = VGA_WIDTH * VGA_HEIGHT * BYTES_PER_PIXEL;
-+ hdl = &cam_dev->ctrl_handler;
-+ v4l2_ctrl_handler_init(hdl, 0);
-+
-+ if (hdl->error) {
-+ ret = hdl->error;
-+ goto unreg_dev;
-+ }
-+ cam_dev->v4l2_dev.ctrl_handler = hdl;
-+
-+ /* initialize locks */
-+ spin_lock_init(&cam_dev->slock);
-+
-+ /* initialize queue */
-+ q = &cam_dev->vb_vidq;
-+ memset(q, 0, sizeof(cam_dev->vb_vidq));
-+ q->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
-+ q->io_modes = VB2_MMAP | VB2_USERPTR | VB2_READ;
-+ q->drv_priv = cam_dev;
-+ q->buf_struct_size = sizeof(struct cssp_cam_buffer);
-+ q->ops = &cssp_cam_video_qops;
-+ q->mem_ops = &vb2_dma_contig_memops;
-+
-+ vb2_queue_init(q);
-+
-+ mutex_init(&cam_dev->mutex);
-+
-+ /* init video dma queues */
-+ INIT_LIST_HEAD(&cam_dev->vidq.active);
-+
-+ ret = -ENOMEM;
-+ vfd = video_device_alloc();
-+ if (!vfd)
-+ goto unreg_dev;
-+
-+ *vfd = cssp_cam_template;
-+ vfd->debug = debug;
-+ vfd->v4l2_dev = &cam_dev->v4l2_dev;
-+ set_bit(V4L2_FL_USE_FH_PRIO, &vfd->flags);
-+
-+ /*
-+ * Provide a mutex to v4l2 core. It will be used to protect
-+ * all fops and v4l2 ioctls.
-+ */
-+ vfd->lock = &cam_dev->mutex;
-+
-+ ret = video_register_device(vfd, VFL_TYPE_GRABBER, video_nr);
-+ if (ret < 0)
-+ goto rel_vdev;
-+
-+ video_set_drvdata(vfd, cam_dev);
-+
-+ if (video_nr != -1)
-+ video_nr++;
-+
-+ cam_dev->vdev = vfd;
-+ v4l2_info(&cam_dev->v4l2_dev, "V4L2 device registered as %s\n",
-+ video_device_node_name(vfd));
-+
-+ return 0;
-+
-+rel_vdev:
-+ video_device_release(vfd);
-+unreg_dev:
-+ v4l2_ctrl_handler_free(hdl);
-+ v4l2_device_unregister(&cam_dev->v4l2_dev);
-+free_dev:
-+ return ret;
-+}
-+
-+static int video_remove(struct cssp_cam_dev *cam_dev)
-+{
-+ if (cam_dev->dma_cont_ctx != NULL)
-+ vb2_dma_contig_cleanup_ctx(cam_dev->dma_cont_ctx);
-+
-+ v4l2_info(&cam_dev->v4l2_dev, "unregistering %s\n",
-+ video_device_node_name(cam_dev->vdev));
-+ video_unregister_device(cam_dev->vdev);
-+ v4l2_device_unregister(&cam_dev->v4l2_dev);
-+ v4l2_ctrl_handler_free(&cam_dev->ctrl_handler);
-+
-+ return 0;
-+}
-+
-+static int __init cssp_cam_probe(struct platform_device *pdev)
-+{
-+ struct cssp_cam_dev *cam_dev;
-+ int ret = 0;
-+ struct cssp_cam_platform_data *cssp_cam_platform_data;
-+
-+ cssp_cam_platform_data = (struct cssp_cam_platform_data *) pdev->dev.platform_data;
-+ if (cssp_cam_platform_data == NULL) {
-+ printk(KERN_ERR "[%s]: missing platform data\n", pdev->name);
-+ return -ENODEV;
-+ }
-+
-+ if (cssp_cam_platform_data->cam_i2c_board_info == NULL) {
-+ printk(KERN_ERR "[%s]: missing camera i2c board info\n", pdev->name);
-+ return -ENODEV;
-+ }
-+
-+ cam_dev = kzalloc(sizeof(*cam_dev), GFP_KERNEL);
-+ if (!cam_dev)
-+ return -ENOMEM;
-+
-+ cam_dev->pdev = pdev;
-+ platform_set_drvdata(pdev, cam_dev);
-+
-+ cam_dev->camera_board_info = cssp_cam_platform_data->cam_i2c_board_info;
-+
-+ cam_dev->camera_clk = clk_get(&pdev->dev, cssp_cam_platform_data->cam_clk_name);
-+ if (IS_ERR(cam_dev->camera_clk)) {
-+ ret = PTR_ERR(cam_dev->camera_clk);
-+ printk(KERN_ERR "[%s]: cannot clk_get %s\n", pdev->name, cssp_cam_platform_data->cam_clk_name);
-+ goto fail0;
-+ }
-+
-+ ret = configure_cssp(cam_dev);
-+ if (ret)
-+ goto fail1;
-+
-+ ret = configure_edma(cam_dev);
-+ if (ret)
-+ goto fail2;
-+
-+ cam_dev->mode = FMT_2X8_EN | PCLK_POL | HS_EN;
-+
-+ ret = configure_camera_sensor(cam_dev);
-+ if (ret) {
-+ printk(KERN_ERR "[%s]: camera sensor configuration failed\n", pdev->name);
-+ goto fail3;
-+ }
-+
-+ cam_dev->dma_cont_ctx = vb2_dma_contig_init_ctx(&pdev->dev);
-+ if (IS_ERR(cam_dev->dma_cont_ctx)) {
-+ ret = PTR_ERR(cam_dev->dma_cont_ctx);
-+ goto fail3;
-+ }
-+
-+ ret = video_probe(cam_dev);
-+ if (ret)
-+ goto fail4;
-+
-+ return ret;
-+
-+fail4:
-+ vb2_dma_contig_cleanup_ctx(cam_dev->dma_cont_ctx);
-+
-+fail3:
-+ edma_free_channel(cam_dev->dma_ch);
-+
-+fail2:
-+ gpio_free(cam_dev->reset_pin);
-+ iounmap((void *)cam_dev->reg_base_virt);
-+ release_mem_region(cam_dev->reg_base_phys, cam_dev->reg_size);
-+
-+fail1:
-+ clk_put(cam_dev->camera_clk);
-+
-+fail0:
-+ kfree(cam_dev);
-+
-+ return ret;
-+}
-+
-+static int cssp_cam_remove(struct platform_device *pdev)
-+{
-+ struct cssp_cam_dev *cam = platform_get_drvdata(pdev);
-+
-+ iounmap((void *)cam->reg_base_virt);
-+
-+ release_mem_region(cam->reg_base_phys, cam->reg_size);
-+
-+ gpio_free(cam->reset_pin);
-+
-+ edma_free_channel(cam->dma_ch);
-+
-+ video_remove(cam);
-+
-+ clk_put(cam->camera_clk);
-+
-+ kfree(cam);
-+
-+ printk(KERN_INFO "[%s]: removed\n", pdev->name);
-+
-+ return 0;
-+}
-+
-+
-+static struct platform_driver cssp_cam_driver = {
-+ .probe = cssp_cam_probe,
-+ .remove = __devexit_p(cssp_cam_remove),
-+ .driver = {
-+ .name = "cssp-camera",
-+ .owner = THIS_MODULE,
-+ },
-+};
-+
-+
-+static int __init cssp_cam_init(void)
-+{
-+ return platform_driver_register(&cssp_cam_driver);
-+}
-+
-+static void __exit cssp_cam_exit(void)
-+{
-+ platform_driver_unregister(&cssp_cam_driver);
-+}
-+
-+
-+module_init(cssp_cam_init);
-+module_exit(cssp_cam_exit);
-+
-+/*
-+ * Macros sets license, author and description
-+ */
-+MODULE_LICENSE("GPLv2");
-+MODULE_AUTHOR("Dan Aizenstros, Damian Eppel, Przemek Szewczyk");
-+MODULE_DESCRIPTION("QuickLogic Camera Interface driver");
-+
-diff --git a/drivers/media/video/cssp_camera/cssp_camera.h b/drivers/media/video/cssp_camera/cssp_camera.h
-new file mode 100644
-index 0000000..d018ca1
---- /dev/null
-+++ b/drivers/media/video/cssp_camera/cssp_camera.h
-@@ -0,0 +1,148 @@
-+/*
-+ * cssp-camera driver
-+ *
-+ * Based on Vivi driver
-+ *
-+ * Copyright (C) 2012 QuickLogic Corp.
-+ *
-+ * Developed for QuickLogic by:
-+ * Damian Eppel <damian.eppel at teleca.com>
-+ * Przemek Szewczyk <przemek.szewczyk at teleca.com>
-+ * Dan Aizenstros <daizenstros at quicklogic.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ *
-+ */
-+
-+#ifndef CSSP_CAMERA_H
-+#define CSSP_CAMERA_H
-+
-+
-+static unsigned video_nr = -1;
-+module_param(video_nr, uint, 0644);
-+MODULE_PARM_DESC(video_nr, "videoX start number, -1 is autodetect");
-+
-+static unsigned debug;
-+module_param(debug, uint, 0644);
-+MODULE_PARM_DESC(debug, "activates debug info");
-+
-+static unsigned int vid_limit = 1;
-+module_param(vid_limit, uint, 0644);
-+MODULE_PARM_DESC(vid_limit, "capture memory limit in megabytes");
-+
-+#define dprintk(dev, level, fmt, arg...) \
-+ v4l2_dbg(level, debug, &dev->v4l2_dev, fmt, ## arg)
-+
-+#define VGA_WIDTH 640
-+#define VGA_HEIGHT 480
-+
-+#define MAX_WIDTH 2048
-+#define MAX_HEIGHT 1536
-+
-+#define VGA_RES (VGA_WIDTH * VGA_HEIGHT)
-+#define BYTES_PER_PIXEL 2
-+#define BYTES_PER_DMA_EVT 32
-+
-+/* PaRAM.opt: */
-+#define TCC(v) (((v) & 0x3f) << 12)
-+/* PaRAM.a_b_cnt: */
-+#define ACNT(v) ((v) & 0xffff)
-+#define BCNT(v) (((v) & 0xffff) << 16)
-+/* PaRAM.src_dst_bidx: */
-+#define SRCBIDX(v) ((v) & 0xffff)
-+#define DSTBIDX(v) (((v) & 0xffff) << 16)
-+/* PaRAM.link_bcntrld: */
-+#define LINK(v) ((v) & 0xffff)
-+#define BCNTRLD(v) (((v) & 0xffff) << 16)
-+/* PaRAM.src_dst_cidx: */
-+#define SRCCIDX(v) ((v) & 0xffff)
-+#define DSTCIDX(v) (((v) & 0xffff) << 16)
-+/* PaRAM.ccnt: */
-+#define CCNT(v) ((v) & 0xffff)
-+
-+
-+struct cssp_cam_platform_data {
-+ struct i2c_board_info *cam_i2c_board_info;
-+ const char *cam_clk_name;
-+ int dma_ch;
-+ int gpio_reset_pin;
-+};
-+
-+
-+/* ------------------------------------------------------------------
-+ video Basic structures
-+ ------------------------------------------------------------------*/
-+
-+struct cssp_cam_fmt {
-+ char *name;
-+ u32 fourcc; /* v4l2 format id */
-+ int depth;
-+ enum v4l2_mbus_pixelcode code;
-+};
-+
-+/* buffer for one video frame */
-+struct cssp_cam_buffer {
-+ /* common v4l buffer stuff -- must be first */
-+ struct vb2_buffer vb;
-+ struct list_head list;
-+ struct cssp_cam_fmt *fmt;
-+};
-+
-+struct cssp_cam_dmaqueue {
-+ struct list_head active;
-+};
-+
-+struct cssp_cam_dev {
-+ struct v4l2_device v4l2_dev;
-+ struct v4l2_ctrl_handler ctrl_handler;
-+ struct v4l2_subdev *subdev;
-+
-+ spinlock_t slock;
-+ struct mutex mutex;
-+
-+ /* various device info */
-+ struct video_device *vdev;
-+ struct platform_device *pdev;
-+
-+ struct cssp_cam_dmaqueue vidq;
-+ void *dma_cont_ctx;
-+ int streaming_started;
-+ struct vb2_buffer *current_vb;
-+
-+ /* Input Number */
-+ int input;
-+
-+ /* video capture */
-+ struct cssp_cam_fmt *fmt;
-+ u32 width;
-+ u32 height;
-+ u32 bytesperline;
-+ u32 sizeimage;
-+ enum v4l2_colorspace colorspace;
-+ struct vb2_queue vb_vidq;
-+ enum v4l2_field field;
-+ unsigned int field_count;
-+
-+
-+ /* Camera Sensor */
-+ struct i2c_board_info *camera_board_info;
-+ struct clk *camera_clk;
-+
-+ unsigned int reg_base_virt;
-+ unsigned int reg_base_phys;
-+ resource_size_t reg_size;
-+ u16 mode;
-+
-+ struct edmacc_param dma_tr_params;
-+ int dma_ch;
-+ u64 dma_mask;
-+
-+ int frame_cnt;
-+
-+ int reset_pin;
-+};
-+
-+
-+#endif /* CSSP_CAMERA_H */
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0073-beaglebone-add-support-for-DVI-audio-and-audio-only-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0073-beaglebone-add-support-for-DVI-audio-and-audio-only-.patch
deleted file mode 100644
index 051a727..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0073-beaglebone-add-support-for-DVI-audio-and-audio-only-.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-From 040c37e89e6a7a7311a470bda281e1163559173c Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen at dominion.thruhere.net>
-Date: Tue, 3 Jul 2012 08:45:47 +0200
-Subject: [PATCH 73/79] beaglebone: add support for DVI+audio and audio-only
- capes
-
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- arch/arm/mach-omap2/board-am335xevm.c | 32 ++++++++++++++++++++++++++++++--
- 1 file changed, 30 insertions(+), 2 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index 22a740f..bf40ac9 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -2881,8 +2881,10 @@ static void beaglebone_cape_setup(struct memory_accessor *mem_acc, void *context
-
- beaglebone_leds_free = 0;
- dvileds_init(0,0);
-- beaglebone_spi1_free = 0;
-- mcasp0_init(0,0);
-+
-+ // Uncomment these for custom DVI capes with audio populated
-+ //beaglebone_spi1_free = 0;
-+ //mcasp0_init(0,0);
-
- if (!strncmp("00A1", cape_config.version, 4) || !strncmp("000A", cape_config.version, 4)) {
- pr_info("BeagleBone cape: DVI init for revision A1 or older\n");
-@@ -2898,6 +2900,32 @@ static void beaglebone_cape_setup(struct memory_accessor *mem_acc, void *context
- dvi_init(0,0);
- }
- }
-+
-+ if (!strncmp("BB-BONE-DVID-02", cape_config.partnumber, 15)) {
-+ pr_info("BeagleBone cape: initializing DVI+audio cape\n");
-+
-+ beaglebone_leds_free = 0;
-+ dvileds_init(0,0);
-+
-+ beaglebone_spi1_free = 0;
-+ mcasp0_init(0,0);
-+
-+ setup_pin_mux(dvia2_pin_mux);
-+ gpio_request(BEAGLEBONEDVI_PDn_A2, "DVI_PDn");
-+ gpio_direction_output(BEAGLEBONEDVI_PDn_A2, 1);
-+ dvi_init(0,0);
-+ }
-+
-+ if (!strncmp("BB-BONE-AUDI-01", cape_config.partnumber, 15)) {
-+ pr_info("BeagleBone cape: initializing audio cape\n");
-+
-+ beaglebone_leds_free = 0;
-+ dvileds_init(0,0);
-+
-+ beaglebone_spi1_free = 0;
-+ mcasp0_init(0,0);
-+ }
-+
- if (!strncmp("BB-BONE-LCD7-01", cape_config.partnumber, 15)) {
- pr_info("BeagleBone cape: initializing LCD cape\n");
-
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0074-beaglebone-disable-LBO-GPIO-for-battery-cape.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0074-beaglebone-disable-LBO-GPIO-for-battery-cape.patch
deleted file mode 100644
index 02485c3..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0074-beaglebone-disable-LBO-GPIO-for-battery-cape.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From f723bdf574163ced9a685783a475b254f6a981d5 Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen at dominion.thruhere.net>
-Date: Tue, 3 Jul 2012 21:28:44 +0200
-Subject: [PATCH 74/79] beaglebone: disable LBO GPIO for battery cape
-
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- arch/arm/mach-omap2/board-am335xevm.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index bf40ac9..6b4539e 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -2999,7 +2999,8 @@ static void beaglebone_cape_setup(struct memory_accessor *mem_acc, void *context
- pr_info("BeagleBone cape: initializing battery cape\n");
- // gpio1_6, P9_15 lowbat output
- // AIN4, P9_33 vbat
-- setup_pin_mux(batterycape_pin_mux);
-+ /* LBO doesn't work, so disable it for now
-+ setup_pin_mux(batterycape_pin_mux);
- #if defined(CONFIG_CHARGER_GPIO)
- int err;
- err = platform_device_register(&beaglebone_charger_device);
-@@ -3007,6 +3008,7 @@ static void beaglebone_cape_setup(struct memory_accessor *mem_acc, void *context
- pr_err("failed to register BeagleBone battery cape gpio\n");
-
- #endif
-+ */
- }
-
- if (!strncmp("BB-BONE-SERL-01", cape_config.partnumber, 15)) {
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0075-video-da8xx-fb-calculate-pixel-clock-period-for-the-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0075-video-da8xx-fb-calculate-pixel-clock-period-for-the-.patch
deleted file mode 100644
index face34b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0075-video-da8xx-fb-calculate-pixel-clock-period-for-the-.patch
+++ /dev/null
@@ -1,73 +0,0 @@
-From e12d15eadf15f8119729a65ecca79529b4fe3863 Mon Sep 17 00:00:00 2001
-From: "Manjunathappa, Prakash" <prakash.pm at ti.com>
-Date: Wed, 4 Jul 2012 17:10:16 +0530
-Subject: [PATCH 75/79] video:da8xx-fb: calculate pixel clock period for the
- panel
-
-Patch calculates pixel clock period in pico seconds and updates
-the same in variable screen information structure. fbset utility
-uses this information.
-This patch is from upstream backport, bearing commit id
-12fa8350244d73b6111ec9bc6c2fd5d49fa601b5.
-
-Signed-off-by: Manjunathappa, Prakash <prakash.pm at ti.com>
-Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat at gmx.de>
-Signed-off-by: Patil, Rachna <rachna at ti.com>
----
- drivers/video/da8xx-fb.c | 19 ++++++++++++++++++-
- 1 file changed, 18 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/video/da8xx-fb.c b/drivers/video/da8xx-fb.c
-index 010a8bc..ddc251e 100644
---- a/drivers/video/da8xx-fb.c
-+++ b/drivers/video/da8xx-fb.c
-@@ -37,6 +37,7 @@
- #include <linux/lcm.h>
- #include <video/da8xx-fb.h>
- #include <asm/mach-types.h>
-+#include <asm/div64.h>
-
- #define DRIVER_NAME "da8xx_lcdc"
-
-@@ -192,7 +193,6 @@ static struct fb_var_screeninfo da8xx_fb_var __devinitdata = {
- .activate = 0,
- .height = -1,
- .width = -1,
-- .pixclock = 33333,/*Pico Sec*/
- .accel_flags = 0,
- .left_margin = LEFT_MARGIN,
- .right_margin = RIGHT_MARGIN,
-@@ -1267,6 +1267,22 @@ static struct fb_ops da8xx_fb_ops = {
- .fb_blank = cfb_blank,
- };
-
-+/* Calculate and return pixel clock period in pico seconds */
-+static unsigned int da8xxfb_pixel_clk_period(struct da8xx_fb_par *par)
-+{
-+ unsigned int lcd_clk, div;
-+ unsigned int configured_pix_clk;
-+ unsigned long long pix_clk_period_picosec = 1000000000000ULL;
-+
-+ lcd_clk = clk_get_rate(par->lcdc_clk);
-+ div = lcd_clk / par->pxl_clk;
-+ configured_pix_clk = (lcd_clk / div);
-+
-+ do_div(pix_clk_period_picosec, configured_pix_clk);
-+
-+ return pix_clk_period_picosec;
-+}
-+
- static int __devinit fb_probe(struct platform_device *device)
- {
- struct da8xx_lcdc_platform_data *fb_pdata =
-@@ -1437,6 +1453,7 @@ static int __devinit fb_probe(struct platform_device *device)
-
- da8xx_fb_var.hsync_len = lcdc_info->hsw;
- da8xx_fb_var.vsync_len = lcdc_info->vsw;
-+ da8xx_fb_var.pixclock = da8xxfb_pixel_clk_period(par);
-
- da8xx_fb_var.right_margin = lcdc_info->hfp;
- da8xx_fb_var.left_margin = lcdc_info->hbp;
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0076-beaglebone-improve-GPMC-bus-timings-for-camera-cape.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0076-beaglebone-improve-GPMC-bus-timings-for-camera-cape.patch
deleted file mode 100644
index 5997367..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0076-beaglebone-improve-GPMC-bus-timings-for-camera-cape.patch
+++ /dev/null
@@ -1,105 +0,0 @@
-From e81c7627c3d90209271a0f1e7486d0f779f05289 Mon Sep 17 00:00:00 2001
-From: Dan Aizenstros <daizenstros at quicklogic.com>
-Date: Thu, 12 Jul 2012 12:31:08 -0400
-Subject: [PATCH 76/79] beaglebone: improve GPMC bus timings for camera cape
-
-Signed-off-by: Dan Aizenstros <daizenstros at quicklogic.com>
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- arch/arm/mach-omap2/board-am335xevm.c | 13 +++++++------
- drivers/media/video/cssp_camera/cssp_camera.c | 5 +----
- drivers/media/video/cssp_camera/cssp_camera.h | 2 +-
- 3 files changed, 9 insertions(+), 11 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index 6b4539e..82020fc 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -1895,9 +1895,10 @@ static struct gpmc_timings cssp_timings = {
- /* Minimum clock period for synchronous mode (in picoseconds) */
- .sync_clk = 10000,
-
-+ /* CS signal timings corresponding to GPMC_CONFIG2 */
- .cs_on = 0,
-- .cs_rd_off = 23 * 10, /* Read deassertion time */
-- .cs_wr_off = 23 * 10, /* Write deassertion time */
-+ .cs_rd_off = 8 * 10, /* Read deassertion time */
-+ .cs_wr_off = 20 * 10, /* Write deassertion time */
-
- /* ADV signal timings corresponding to GPMC_CONFIG3 */
- .adv_on = 0, /* Assertion time */
-@@ -1906,17 +1907,17 @@ static struct gpmc_timings cssp_timings = {
-
- /* WE signals timings corresponding to GPMC_CONFIG4 */
- .we_on = 3 * 10, /* WE assertion time */
-- .we_off = 23 * 10, /* WE deassertion time */
-+ .we_off = 8 * 10, /* WE deassertion time */
-
- /* OE signals timings corresponding to GPMC_CONFIG4 */
- .oe_on = 3 * 10, /* OE assertion time */
-- .oe_off = 23 * 10, /* OE deassertion time */
-+ .oe_off = 8 * 10, /* OE deassertion time */
-
- /* Access time and cycle time timings corresponding to GPMC_CONFIG5 */
- .page_burst_access = 1 * 10, /* Multiple access word delay */
- .access = 7 * 10, /* Start-cycle to first data valid delay */
-- .rd_cycle = 23 * 10, /* Total read cycle time */
-- .wr_cycle = 23 * 10, /* Total write cycle time */
-+ .rd_cycle = 8 * 10, /* Total read cycle time */
-+ .wr_cycle = 20 * 10, /* Total write cycle time */
-
- /* The following are only on OMAP3430 */
- .wr_access = 7 * 10, /* WRACCESSTIME */
-diff --git a/drivers/media/video/cssp_camera/cssp_camera.c b/drivers/media/video/cssp_camera/cssp_camera.c
-index 39aa003..34a36d7 100644
---- a/drivers/media/video/cssp_camera/cssp_camera.c
-+++ b/drivers/media/video/cssp_camera/cssp_camera.c
-@@ -147,7 +147,6 @@ static int trigger_dma_transfer_to_buf(struct cssp_cam_dev *dev, struct vb2_buff
- // Enable data capture
- dev->mode |= ENABLE;
- writew(dev->mode, dev->reg_base_virt + REG_MODE);
-- readw(dev->reg_base_virt + REG_MODE);
-
- dev->current_vb = vb;
-
-@@ -182,7 +181,6 @@ static void dma_callback(unsigned lch, u16 ch_status, void *data)
- // Disable data capture
- dev->mode &= ~ENABLE;
- writew(dev->mode, dev->reg_base_virt + REG_MODE);
-- readw(dev->reg_base_virt + REG_MODE);
-
- if (ch_status == DMA_COMPLETE) {
- struct vb2_buffer *vb = dev->current_vb;
-@@ -223,7 +221,7 @@ static int configure_edma(struct cssp_cam_dev *cam)
- return -1;
- }
-
-- cam->dma_ch = edma_alloc_channel(dma_channel, dma_callback, cam, EVENTQ_1);
-+ cam->dma_ch = edma_alloc_channel(dma_channel, dma_callback, cam, EVENTQ_0);
- if (cam->dma_ch < 0) {
- printk(KERN_ERR "[%s]: allocating channel for DMA failed\n", pdev->name);
- return -EBUSY;
-@@ -526,7 +524,6 @@ static int stop_streaming(struct vb2_queue *vq)
- // Disable data capture
- dev->mode &= ~ENABLE;
- writew(dev->mode, dev->reg_base_virt + REG_MODE);
-- readw(dev->reg_base_virt + REG_MODE);
-
- stop_camera_sensor(dev);
-
-diff --git a/drivers/media/video/cssp_camera/cssp_camera.h b/drivers/media/video/cssp_camera/cssp_camera.h
-index d018ca1..8eb5f83 100644
---- a/drivers/media/video/cssp_camera/cssp_camera.h
-+++ b/drivers/media/video/cssp_camera/cssp_camera.h
-@@ -28,7 +28,7 @@ static unsigned debug;
- module_param(debug, uint, 0644);
- MODULE_PARM_DESC(debug, "activates debug info");
-
--static unsigned int vid_limit = 1;
-+static unsigned int vid_limit = 6;
- module_param(vid_limit, uint, 0644);
- MODULE_PARM_DESC(vid_limit, "capture memory limit in megabytes");
-
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0077-beaglebone-disable-UYVY-VYUY-and-YVYU-modes-in-camer.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0077-beaglebone-disable-UYVY-VYUY-and-YVYU-modes-in-camer.patch
deleted file mode 100644
index cc82416..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0077-beaglebone-disable-UYVY-VYUY-and-YVYU-modes-in-camer.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 850bc72301ae8eae6e9d11a9ec4d64bc683410fe Mon Sep 17 00:00:00 2001
-From: Dan Aizenstros <daizenstros at quicklogic.com>
-Date: Wed, 11 Jul 2012 12:29:29 -0400
-Subject: [PATCH 77/79] beaglebone: disable UYVY, VYUY and YVYU modes in
- camera_cssp.c
-
-Signed-off-by: Dan Aizenstros <daizenstros at quicklogic.com>
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- drivers/media/video/cssp_camera/cssp_camera.c | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-diff --git a/drivers/media/video/cssp_camera/cssp_camera.c b/drivers/media/video/cssp_camera/cssp_camera.c
-index 34a36d7..acd38ee 100644
---- a/drivers/media/video/cssp_camera/cssp_camera.c
-+++ b/drivers/media/video/cssp_camera/cssp_camera.c
-@@ -60,6 +60,11 @@ static struct cssp_cam_fmt formats[] = {
- .depth = 16,
- .code = V4L2_MBUS_FMT_YUYV8_2X8,
- },
-+/*
-+ * UYVY doesn't work properly. VYUY and YVYU are not tested.
-+ * So disable the UYVY, VYUY and YVYU modes for now
-+ */
-+#if 0
- {
- .name = "4:2:2, packed, UYVY",
- .fourcc = V4L2_PIX_FMT_UYVY,
-@@ -78,6 +83,7 @@ static struct cssp_cam_fmt formats[] = {
- .depth = 16,
- .code = V4L2_MBUS_FMT_YVYU8_2X8,
- },
-+#endif
- {
- .name = "RGB565 (LE)",
- .fourcc = V4L2_PIX_FMT_RGB565,
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0078-beaglebone-error-handling-for-DMA-completion-in-cssp.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0078-beaglebone-error-handling-for-DMA-completion-in-cssp.patch
deleted file mode 100644
index cc678ba..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0078-beaglebone-error-handling-for-DMA-completion-in-cssp.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From 823d8b7b4a1dcfefc7260110a3acada0d1f45695 Mon Sep 17 00:00:00 2001
-From: Dan Aizenstros <daizenstros at quicklogic.com>
-Date: Thu, 12 Jul 2012 16:52:21 -0400
-Subject: [PATCH 78/79] beaglebone: error handling for DMA completion in
- cssp_camera.c
-
-Signed-off-by: Dan Aizenstros <daizenstros at quicklogic.com>
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- drivers/media/video/cssp_camera/cssp_camera.c | 16 +++++++++++++++-
- 1 file changed, 15 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/media/video/cssp_camera/cssp_camera.c b/drivers/media/video/cssp_camera/cssp_camera.c
-index acd38ee..fca199b 100644
---- a/drivers/media/video/cssp_camera/cssp_camera.c
-+++ b/drivers/media/video/cssp_camera/cssp_camera.c
-@@ -191,6 +191,21 @@ static void dma_callback(unsigned lch, u16 ch_status, void *data)
- if (ch_status == DMA_COMPLETE) {
- struct vb2_buffer *vb = dev->current_vb;
- struct timeval ts;
-+ struct edmacc_param dma_tr_params;
-+
-+ edma_read_slot(dev->dma_ch, &dma_tr_params);
-+ if ((dma_tr_params.opt != 0) ||
-+ (dma_tr_params.src != 0) ||
-+ (dma_tr_params.a_b_cnt != 0) ||
-+ (dma_tr_params.dst != 0) ||
-+ (dma_tr_params.src_dst_bidx != 0) ||
-+ (dma_tr_params.link_bcntrld != 0xffff) ||
-+ (dma_tr_params.src_dst_cidx != 0) ||
-+ (dma_tr_params.ccnt != 0)) {
-+
-+ trigger_dma_transfer_to_buf(dev, dev->current_vb);
-+ return;
-+ }
-
- vb->v4l2_buf.field = dev->field;
- dev->field_count++;
-@@ -204,7 +219,6 @@ static void dma_callback(unsigned lch, u16 ch_status, void *data)
- /* check if we have new buffer queued */
- dequeue_buffer_for_dma(dev);
- } else {
-- printk(KERN_ERR "[cssp_camera]: EDMA error (ch_status = %d)\n", ch_status);
- /* we got a missed interrupt so just start a new DMA with the existing buffer */
- if (dev->current_vb != NULL)
- trigger_dma_transfer_to_buf(dev, dev->current_vb);
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0079-AM335X-errata-OPP50-on-MPU-domain-is-not-supported.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0079-AM335X-errata-OPP50-on-MPU-domain-is-not-supported.patch
deleted file mode 100644
index c50abbf..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0079-AM335X-errata-OPP50-on-MPU-domain-is-not-supported.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From 662134c1007cc275193737dd11ea4b77f47256a7 Mon Sep 17 00:00:00 2001
-From: AnilKumar Ch <anilkumar at ti.com>
-Date: Tue, 26 Jun 2012 15:41:51 +0530
-Subject: [PATCH 79/79] AM335X: errata: OPP50 on MPU domain is not supported
-
-This patch implements a workaround for OPP50 erratum, Advisory
-1.0.15 at http://www.ti.com/lit/er/sprz360b/sprz360b.pdf
-
-OPP50 Operation on MPU Domain is Not Supported. This issue seen with
-reliability tests running on MPU. To minimize power consumption, the
-ARM Cortex-A8 may be operated at the lower frequency defined by OPP50,
-but the respective power terminal VDD_MPU must be operated as defined
-by OPP100. So MPU OPP50 modified to <275MHz, 1.1V>.
-
-Power consumption as seen on AM335x EVM:
-OPP50 <275MHz, 0.95> - 40.5 mW
-OPP50 <275MHz, 1.10> - 55.5 mW
-OPP100 <500MHz, 1.10> - 98.5 mW
-
-Based on the above data we can see 43mW power savings compared to
-OPP100. This is the reason for keeping OPP50 alive instead of
-shutting down completely.
-
-Signed-off-by: AnilKumar Ch <anilkumar at ti.com>
----
- arch/arm/mach-omap2/opp3xxx_data.c | 10 +++++++++-
- 1 file changed, 9 insertions(+), 1 deletion(-)
-
-diff --git a/arch/arm/mach-omap2/opp3xxx_data.c b/arch/arm/mach-omap2/opp3xxx_data.c
-index 0e540c8..9fbcfc3 100644
---- a/arch/arm/mach-omap2/opp3xxx_data.c
-+++ b/arch/arm/mach-omap2/opp3xxx_data.c
-@@ -154,7 +154,15 @@ static struct omap_opp_def __initdata omap36xx_opp_def_list[] = {
-
- /* VDD1 */
-
--#define AM33XX_VDD_MPU_OPP50_UV 950000
-+/*
-+ * Errata 1.0.15: OPP50 Operation on MPU Domain is Not Supported.
-+ *
-+ * To minimize power consumption, the ARM Cortex-A8 may be operated at
-+ * the lower frequency defined by OPP50, but the respective voltage
-+ * domain VDD_MPU must be operated as defined by OPP100. So MPU OPP50
-+ * definition is modified to 275MHz, 1.1V.
-+ */
-+#define AM33XX_VDD_MPU_OPP50_UV 1100000
- #define AM33XX_VDD_MPU_OPP100_UV 1100000
- #define AM33XX_VDD_MPU_OPP120_UV 1200000
- #define AM33XX_VDD_MPU_OPPTURBO_UV 1260000
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0080-vfs-Add-a-trace-point-in-the-mark_inode_dirty-functi.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0080-vfs-Add-a-trace-point-in-the-mark_inode_dirty-functi.patch
deleted file mode 100644
index f45178c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0080-vfs-Add-a-trace-point-in-the-mark_inode_dirty-functi.patch
+++ /dev/null
@@ -1,103 +0,0 @@
-From a0a3563affbbebd9c7385586e1d6031de82c2a83 Mon Sep 17 00:00:00 2001
-From: Arjan van de Ven <arjan at linux.intel.com>
-Date: Fri, 26 Nov 2010 12:18:03 -0800
-Subject: [PATCH] vfs: Add a trace point in the mark_inode_dirty function
-
-PowerTOP would like to be able to show who is keeping the disk
-busy by dirtying data. The most logical spot for this is in the vfs
-in the mark_inode_dirty() function, doing this on the block level
-is not possible because by the time the IO hits the block layer the
-guilty party can no longer be found ("kjournald" and "pdflush" are not
-useful answers to "who caused this file to be dirty).
-
-The trace point follows the same logic/style as the block_dump code
-and pretty much dumps the same data, just not to dmesg (and thus to
-/var/log/messages) but via the trace events streams.
-
-Eventually we should be able to phase out the block dump code, but that's
-for later on after a transition time.
----
- fs/fs-writeback.c | 3 +++
- include/linux/fs.h | 12 ++++++++++++
- include/trace/events/writeback.h | 28 ++++++++++++++++++++++++++++
- 3 files changed, 43 insertions(+)
-
-diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c
-index 54f5786..981ec8c 100644
---- a/fs/fs-writeback.c
-+++ b/fs/fs-writeback.c
-@@ -1072,6 +1072,9 @@ void __mark_inode_dirty(struct inode *inode, int flags)
- if ((inode->i_state & flags) == flags)
- return;
-
-+ if (flags & (I_DIRTY_SYNC | I_DIRTY_DATASYNC | I_DIRTY_PAGES))
-+ trace_writeback_inode_dirty(inode, flags);
-+
- if (unlikely(block_dump))
- block_dump___mark_inode_dirty(inode);
-
-diff --git a/include/linux/fs.h b/include/linux/fs.h
-index 43d36b7..a3e46ee 100644
---- a/include/linux/fs.h
-+++ b/include/linux/fs.h
-@@ -1759,6 +1759,18 @@ struct super_operations {
-
- #define I_DIRTY (I_DIRTY_SYNC | I_DIRTY_DATASYNC | I_DIRTY_PAGES)
-
-+#define INODE_DIRTY_FLAGS \
-+ { I_DIRTY_SYNC, "DIRTY-SYNC" }, \
-+ { I_DIRTY_DATASYNC, "DIRTY-DATASYNC" }, \
-+ { I_DIRTY_PAGES, "DIRTY-PAGES" }, \
-+ { I_NEW, "NEW" }, \
-+ { I_WILL_FREE, "WILL-FREE" }, \
-+ { I_FREEING, "FREEING" }, \
-+ { I_CLEAR, "CLEAR" }, \
-+ { I_SYNC, "SYNC" }, \
-+ { I_REFERENCED, "REFERENCED" }
-+
-+
- extern void __mark_inode_dirty(struct inode *, int);
- static inline void mark_inode_dirty(struct inode *inode)
- {
-diff --git a/include/trace/events/writeback.h b/include/trace/events/writeback.h
-index 1f48f14..8053e75 100644
---- a/include/trace/events/writeback.h
-+++ b/include/trace/events/writeback.h
-@@ -400,6 +400,34 @@ DEFINE_EVENT(writeback_congest_waited_template, writeback_wait_iff_congested,
- TP_ARGS(usec_timeout, usec_delayed)
- );
-
-+/*
-+ * Tracepoint for dirtying an inode; used by PowerTOP
-+ */
-+TRACE_EVENT(writeback_inode_dirty,
-+
-+ TP_PROTO(struct inode *inode, int flags),
-+
-+ TP_ARGS(inode, flags),
-+
-+ TP_STRUCT__entry(
-+ __field( __kernel_dev_t, dev )
-+ __field( ino_t, ino )
-+ __field( u32, flags )
-+ ),
-+
-+ TP_fast_assign(
-+ __entry->dev = inode->i_sb->s_dev;
-+ __entry->ino = inode->i_ino;
-+ __entry->flags = flags;
-+ ),
-+
-+ TP_printk("dev %d:%d ino %lu flags %d %s", MAJOR(__entry->dev), MINOR(__entry->dev),
-+ (unsigned long) __entry->ino,
-+ __entry->flags,
-+ __print_flags(__entry->flags, "|", INODE_DIRTY_FLAGS)
-+ )
-+);
-+
- DECLARE_EVENT_CLASS(writeback_single_inode_template,
-
- TP_PROTO(struct inode *inode,
---
-1.7.10
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0081-beaglebone-add-support-for-LCD7-A3.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0081-beaglebone-add-support-for-LCD7-A3.patch
deleted file mode 100644
index 07f7afc..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0081-beaglebone-add-support-for-LCD7-A3.patch
+++ /dev/null
@@ -1,144 +0,0 @@
-From 44bfbc3cbd6ddc95db9a886744582ffddb79fe47 Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen at dominion.thruhere.net>
-Date: Tue, 24 Jul 2012 13:23:28 +0200
-Subject: [PATCH 81/84] beaglebone: add support for LCD7 A3
-
----
- arch/arm/mach-omap2/board-am335xevm.c | 93 ++++++++++++++++++++++++++++++++-
- 1 files changed, 92 insertions(+), 1 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index 82020fc..0c305b6 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -660,6 +660,12 @@ static struct pinmux_config bbtoys7a2_pin_mux[] = {
- {NULL, 0},
- };
-
-+/* Module pin mux for Beagleboardtoys 7" LCD cape */
-+static struct pinmux_config bbtoys7a3_pin_mux[] = {
-+ {"spi0_sclk.gpio0_2", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, // AVDD_EN
-+ {"gpmc_a2.ehrpwm1A", OMAP_MUX_MODE6 | AM33XX_PIN_OUTPUT}, // Backlight
-+ {NULL, 0},
-+};
-
- static struct pinmux_config w1_gpio_pin_mux[] = {
- {"gpmc_ad3.gpio1_3", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT_PULLUP},
-@@ -1164,6 +1170,82 @@ static void beaglebone_lcd7_keys_init(int evm_id, int profile)
- pr_err("failed to register gpio keys for LCD7 cape\n");
- }
-
-+/* pinmux for lcd7 keys */
-+static struct pinmux_config lcd7a3_keys_pin_mux[] = {
-+ {"gpmc_a0.gpio1_16", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT}, //left
-+ {"gpmc_a1.gpio1_17", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT}, //right
-+ {"gpmc_a3.gpio1_19", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT}, //up
-+ {"mcasp0_axr0.gpio3_16", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT}, //down
-+ {"sdpi0_d0.gpio0_3", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT}, //enter
-+ {NULL, 0},
-+};
-+
-+/* Configure GPIOs for lcd7 keys */
-+static struct gpio_keys_button beaglebone_lcd7a3_gpio_keys[] = {
-+ {
-+ .code = KEY_LEFT,
-+ .gpio = GPIO_TO_PIN(1, 16),
-+ .active_low = true,
-+ .desc = "left",
-+ .type = EV_KEY,
-+ .wakeup = 1,
-+ },
-+ {
-+ .code = KEY_RIGHT,
-+ .gpio = GPIO_TO_PIN(1, 17),
-+ .active_low = true,
-+ .desc = "right",
-+ .type = EV_KEY,
-+ .wakeup = 1,
-+ },
-+ {
-+ .code = KEY_UP,
-+ .gpio = GPIO_TO_PIN(1, 19),
-+ .active_low = true,
-+ .desc = "up",
-+ .type = EV_KEY,
-+ .wakeup = 1,
-+ },
-+ {
-+ .code = KEY_DOWN,
-+ .gpio = GPIO_TO_PIN(3, 16),
-+ .active_low = true,
-+ .desc = "down",
-+ .type = EV_KEY,
-+ .wakeup = 1,
-+ },
-+ {
-+ .code = KEY_ENTER,
-+ .gpio = GPIO_TO_PIN(0, 3),
-+ .active_low = true,
-+ .desc = "enter",
-+ .type = EV_KEY,
-+ .wakeup = 1,
-+ },
-+};
-+
-+static struct gpio_keys_platform_data beaglebone_lcd7a3_gpio_key_info = {
-+ .buttons = beaglebone_lcd7a3_gpio_keys,
-+ .nbuttons = ARRAY_SIZE(beaglebone_lcd7a3_gpio_keys),
-+};
-+
-+static struct platform_device beaglebone_lcd7a3_keys = {
-+ .name = "gpio-keys",
-+ .id = -1,
-+ .dev = {
-+ .platform_data = &beaglebone_lcd7a3_gpio_key_info,
-+ },
-+};
-+
-+static void beaglebone_lcd7a3_keys_init(int evm_id, int profile)
-+{
-+ int err;
-+ setup_pin_mux(lcd7a3_keys_pin_mux);
-+ err = platform_device_register(&beaglebone_lcd7a3_keys);
-+ if (err)
-+ pr_err("failed to register gpio keys for LCD7 cape\n");
-+}
-+
- /* pinmux for lcd3 keys */
- static struct pinmux_config lcd3_keys_pin_mux[] = {
- {"gpmc_a0.gpio1_16", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT},
-@@ -1719,6 +1801,7 @@ static void lcdc_init(int evm_id, int profile)
-
- #define BEAGLEBONE_LCD_AVDD_EN GPIO_TO_PIN(0, 7)
- #define BEAGLEBONE_LCD7A2_AVDD_EN GPIO_TO_PIN(1, 31)
-+#define BEAGLEBONE_LCD7A3_AVDD_EN GPIO_TO_PIN(0, 2)
-
- static void bbtoys7lcd_init(int evm_id, int profile)
- {
-@@ -2934,6 +3017,10 @@ static void beaglebone_cape_setup(struct memory_accessor *mem_acc, void *context
- setup_pin_mux(bbtoys7a2_pin_mux);
- gpio_request(BEAGLEBONE_LCD7A2_AVDD_EN, "BONE_LCD_AVDD_EN");
- gpio_direction_output(BEAGLEBONE_LCD7A2_AVDD_EN, 1);
-+ } else if(!strncmp("00A3", cape_config.version, 4)) {
-+ setup_pin_mux(bbtoys7a3_pin_mux);
-+ gpio_request(BEAGLEBONE_LCD7A3_AVDD_EN, "BONE_LCD_AVDD_EN");
-+ gpio_direction_output(BEAGLEBONE_LCD7A3_AVDD_EN, 1);
- } else {
- setup_pin_mux(bbtoys7_pin_mux);
- gpio_request(BEAGLEBONE_LCD_AVDD_EN, "BONE_LCD_AVDD_EN");
-@@ -2948,7 +3035,11 @@ static void beaglebone_cape_setup(struct memory_accessor *mem_acc, void *context
- enable_ehrpwm1(0,0);
- beaglebone_tsadcpins_free = 0;
- pr_info("BeagleBone cape: Registering gpio-keys for LCD cape\n");
-- beaglebone_lcd7_keys_init(0,0);
-+ if (!strncmp("00A3", cape_config.version, 4)) {
-+ beaglebone_lcd7a3_keys_init(0,0);
-+ } else {
-+ beaglebone_lcd7_keys_init(0,0);
-+ }
-
- beaglebone_spi1_free = 0;
- // A1 or newer
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0082-beaglebone-add-rudimentary-support-for-eMMC-cape.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0082-beaglebone-add-rudimentary-support-for-eMMC-cape.patch
deleted file mode 100644
index 737705c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0082-beaglebone-add-rudimentary-support-for-eMMC-cape.patch
+++ /dev/null
@@ -1,111 +0,0 @@
-From 9fd45d5967c0e09c57e2cf41e4bf26dadf31eb16 Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen at dominion.thruhere.net>
-Date: Thu, 26 Jul 2012 22:30:34 +0200
-Subject: [PATCH 82/84] beaglebone: add rudimentary support for eMMC cape
-
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- arch/arm/mach-omap2/board-am335xevm.c | 42 ++++++++++++++++++++++++--------
- 1 files changed, 31 insertions(+), 11 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index 0c305b6..579df6c 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -913,6 +913,7 @@ static struct pinmux_config mmc1_pin_mux[] = {
- {"gpmc_csn2.mmc1_cmd", OMAP_MUX_MODE2 | AM33XX_PIN_INPUT_PULLUP},
- {"gpmc_csn0.gpio1_29", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT_PULLUP},
- {"gpmc_advn_ale.mmc1_sdcd", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT_PULLUP},
-+ {"uart1_rxd.mmc1_sdwp", OMAP_MUX_MODE1 | AM33XX_PIN_INPUT_PULLDOWN},
- {NULL, 0},
- };
-
-@@ -2627,6 +2628,28 @@ static void mcasp0_init(int evm_id, int profile)
- return;
- }
-
-+static void mmc0_init(int evm_id, int profile)
-+{
-+ setup_pin_mux(mmc0_pin_mux);
-+
-+ omap2_hsmmc_init(am335x_mmc);
-+ return;
-+}
-+
-+static void emmc_bone_init(int evm_id, int profile)
-+{
-+ printk("cape: emmc_bone_init\n");
-+ setup_pin_mux(mmc1_pin_mux);
-+ am335x_mmc[1].mmc = 2;
-+ am335x_mmc[1].caps = MMC_CAP_4_BIT_DATA;
-+ am335x_mmc[1].nonremovable = true;
-+ am335x_mmc[1].gpio_cd = -EINVAL;
-+ am335x_mmc[1].gpio_wp = -EINVAL;
-+ am335x_mmc[1].ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34; /* 3V3 */
-+ /* mmc will be initialized when mmc0_init is called */
-+ return;
-+}
-+
- static const char* cape_pins[] = {
- /*
- From SRM RevA5.0.1:
-@@ -2923,7 +2946,6 @@ static int bone_io_config_from_cape_eeprom( void)
- RULER( NR_ITEMS( cape_config.muxdata));
- return 0;
- }
--
- static void beaglebone_cape_setup(struct memory_accessor *mem_acc, void *context)
- {
- int ret;
-@@ -3102,6 +3124,12 @@ static void beaglebone_cape_setup(struct memory_accessor *mem_acc, void *context
- #endif
- */
- }
-+
-+ if (!strncmp("BB-BONE-eMMC1-01", cape_config.partnumber, 15)) {
-+ pr_info("BeagleBone cape: initializing eMMC cape\n");
-+ beaglebone_w1gpio_free = 0;
-+ emmc_bone_init(0,0);
-+ }
-
- if (!strncmp("BB-BONE-SERL-01", cape_config.partnumber, 15)) {
- pr_info("BeagleBone cape: initializing CAN cape\n");
-@@ -3147,6 +3175,7 @@ out:
- beaglebone_cape_detected = false;
- out2:
- if (capecount > 3) {
-+ mmc0_init(0,0);
- if (beaglebone_tsadcpins_free == 1) {
- pr_info("BeagleBone cape: exporting ADC pins to sysfs\n");
- bone_tsc_init(0,0);
-@@ -3338,14 +3367,6 @@ static void d_can_init(int evm_id, int profile)
- }
- }
-
--static void mmc0_init(int evm_id, int profile)
--{
-- setup_pin_mux(mmc0_pin_mux);
--
-- omap2_hsmmc_init(am335x_mmc);
-- return;
--}
--
- static struct i2c_board_info tps65217_i2c_boardinfo[] = {
- {
- I2C_BOARD_INFO("tps65217", TPS65217_I2C_ID),
-@@ -3589,11 +3610,10 @@ static struct evm_dev_cfg beaglebone_old_dev_cfg[] = {
- /* Beaglebone Rev A3 and after */
- static struct evm_dev_cfg beaglebone_dev_cfg[] = {
- {tps65217_init, DEV_ON_BASEBOARD, PROFILE_NONE},
-+ {i2c2_init, DEV_ON_BASEBOARD, PROFILE_NONE},
- {mii1_init, DEV_ON_BASEBOARD, PROFILE_NONE},
- {usb0_init, DEV_ON_BASEBOARD, PROFILE_NONE},
- {usb1_init, DEV_ON_BASEBOARD, PROFILE_NONE},
-- {i2c2_init, DEV_ON_BASEBOARD, PROFILE_NONE},
-- {mmc0_init, DEV_ON_BASEBOARD, PROFILE_NONE},
- {NULL, 0, 0},
- };
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0083-beaglebone-add-extra-partnumber-for-camera-cape.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0083-beaglebone-add-extra-partnumber-for-camera-cape.patch
deleted file mode 100644
index 152ac22..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0083-beaglebone-add-extra-partnumber-for-camera-cape.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From b9d6ae7ba8604c3c8ce64c53073990a831611414 Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen at dominion.thruhere.net>
-Date: Thu, 26 Jul 2012 22:31:30 +0200
-Subject: [PATCH 83/84] beaglebone: add extra partnumber for camera cape
-
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- arch/arm/mach-omap2/board-am335xevm.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index 579df6c..3b6f354 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -3158,7 +3158,7 @@ static void beaglebone_cape_setup(struct memory_accessor *mem_acc, void *context
- tt3201_init(0,0);
- }
-
-- if (!strncmp("BB-BONE-CAM-01", cape_config.partnumber, 14)) {
-+ if (!strncmp("BB-BONE-CAM-01", cape_config.partnumber, 14) || !strncmp("BB-BONE-CAM3-01", cape_config.partnumber, 15)) {
- pr_info("BeagleBone cape: recognized Camera cape\n");
- beaglebone_w1gpio_free = 0;
- cssp_gpmc_init();
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0084-beaglebone-cssp_camera-driver-cleanup.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0084-beaglebone-cssp_camera-driver-cleanup.patch
deleted file mode 100644
index 5dc325d..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0084-beaglebone-cssp_camera-driver-cleanup.patch
+++ /dev/null
@@ -1,324 +0,0 @@
-From b9f772af6c2b9116bad19371e4547af86b4ac18d Mon Sep 17 00:00:00 2001
-From: Dan Aizenstros <daizenstros at quicklogic.com>
-Date: Thu, 26 Jul 2012 21:57:12 -0400
-Subject: [PATCH 84/84] beaglebone: cssp_camera driver cleanup
-
-fix v4l2_buf.sequence to use frame count
-fix enum/g/s_input functions
-remove pointless g/s_std support
-change the driver to use dev_err and dev_info instead of printk
-
-Signed-off-by: Dan Aizenstros <daizenstros at quicklogic.com>
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- drivers/media/video/cssp_camera/cssp_camera.c | 98 +++++++++++--------------
- drivers/media/video/cssp_camera/cssp_camera.h | 7 +-
- 2 files changed, 44 insertions(+), 61 deletions(-)
-
-diff --git a/drivers/media/video/cssp_camera/cssp_camera.c b/drivers/media/video/cssp_camera/cssp_camera.c
-index fca199b..4d86bf4 100644
---- a/drivers/media/video/cssp_camera/cssp_camera.c
-+++ b/drivers/media/video/cssp_camera/cssp_camera.c
-@@ -51,6 +51,7 @@
- #define PCLK_POL BIT(14) /* PCLK polarity (0 - rising edge, 1 - falling edge */
- #define HS_EN BIT(13) /* High speed bus (0 =< 50 MHz, 1 > 50 MHz) */
- #define ENABLE BIT(12)
-+#define REV 0xFF /* Chip Revision mask */
-
-
- static struct cssp_cam_fmt formats[] = {
-@@ -123,7 +124,7 @@ static int reset_cssp(struct cssp_cam_dev *cam)
-
- err = configure_gpio(cam->reset_pin, 0, "cssp_reset");
- if (err) {
-- printk(KERN_ERR "[%s]: failed to configure cssp reset pin\n", pdev->name);
-+ dev_err(&pdev->dev, "failed to configure cssp reset pin\n");
- return -1;
- }
-
-@@ -190,7 +191,6 @@ static void dma_callback(unsigned lch, u16 ch_status, void *data)
-
- if (ch_status == DMA_COMPLETE) {
- struct vb2_buffer *vb = dev->current_vb;
-- struct timeval ts;
- struct edmacc_param dma_tr_params;
-
- edma_read_slot(dev->dma_ch, &dma_tr_params);
-@@ -208,13 +208,10 @@ static void dma_callback(unsigned lch, u16 ch_status, void *data)
- }
-
- vb->v4l2_buf.field = dev->field;
-- dev->field_count++;
-- vb->v4l2_buf.sequence = dev->field_count >> 1;
-- do_gettimeofday(&ts);
-- vb->v4l2_buf.timestamp = ts;
-+ vb->v4l2_buf.sequence = dev->frame_cnt++;
-+ do_gettimeofday(&vb->v4l2_buf.timestamp);
- vb2_buffer_done(vb, VB2_BUF_STATE_DONE);
- dev->current_vb = NULL;
-- dev->frame_cnt++;
-
- /* check if we have new buffer queued */
- dequeue_buffer_for_dma(dev);
-@@ -237,16 +234,16 @@ static int configure_edma(struct cssp_cam_dev *cam)
- pdev->dev.coherent_dma_mask = (u32)~0;
-
- if (dma_set_mask(&pdev->dev, (u32)~0)) {
-- printk(KERN_ERR "[%s]: failed setting mask for DMA\n", pdev->name);
-+ dev_err(&pdev->dev, "failed setting mask for DMA\n");
- return -1;
- }
-
- cam->dma_ch = edma_alloc_channel(dma_channel, dma_callback, cam, EVENTQ_0);
- if (cam->dma_ch < 0) {
-- printk(KERN_ERR "[%s]: allocating channel for DMA failed\n", pdev->name);
-+ dev_err(&pdev->dev, "allocating channel for DMA failed\n");
- return -EBUSY;
- } else {
-- printk(KERN_ERR "[%s]: allocating channel for DMA succeeded, chan=%d\n", pdev->name, cam->dma_ch);
-+ dev_info(&pdev->dev, "allocating channel for DMA succeeded, chan=%d\n", cam->dma_ch);
- }
-
- cam->dma_tr_params.opt = TCINTEN | TCC(cam->dma_ch);
-@@ -273,7 +270,7 @@ static int configure_cssp(struct cssp_cam_dev *cam)
-
- res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "gpmc_phys_mem_slot");
- if (res == NULL) {
-- printk(KERN_ERR "[%s]: failed to get gpmc_phys_mem_slot resource\n", pdev->name);
-+ dev_err(&pdev->dev, "failed to get gpmc_phys_mem_slot resource\n");
- return -ENODEV;
- }
-
-@@ -289,15 +286,16 @@ static int configure_cssp(struct cssp_cam_dev *cam)
-
- cam->reg_base_virt = (unsigned int)ioremap(cam->reg_base_phys, cam->reg_size);
- if (cam->reg_base_virt == 0) {
-- printk(KERN_ERR "[%s]: ioremap of registers region failed\n", pdev->name);
-+ dev_err(&pdev->dev, "ioremap of registers region failed\n");
- release_mem_region(cam->reg_base_phys, cam->reg_size);
- return -ENOMEM;
- }
-
-- printk(KERN_INFO "[%s]: reg_base_virt = 0x%x\n", pdev->name, cam->reg_base_virt);
-+ dev_info(&pdev->dev, "reg_base_virt = 0x%x\n", cam->reg_base_virt);
-
- val = readw(cam->reg_base_virt + REG_MODE);
-- printk(KERN_INFO "[%s]: reading register address=0x0 returns 0x%x\n", pdev->name, val);
-+ cam->rev = val & REV;
-+ dev_info(&pdev->dev, "CSSP Revision %c%d\n", 'A' + ((cam->rev & 0xf0) >> 4), cam->rev & 0x0f);
-
- return 0;
- }
-@@ -322,7 +320,7 @@ static int configure_camera_sensor(struct cssp_cam_dev *cam)
-
- adapter = i2c_get_adapter(((struct soc_camera_link *)(info->platform_data))->i2c_adapter_id);
- if (!adapter) {
-- printk(KERN_INFO "[%s]: failed to get adapter...\n", __func__);
-+ dev_err(&cam->pdev->dev, "failed to get i2c adapter...\n");
- return -ENODEV;
- }
-
-@@ -333,7 +331,7 @@ static int configure_camera_sensor(struct cssp_cam_dev *cam)
- return -ENODEV;
- }
-
-- printk(KERN_INFO "[%s]: client's name is: %s\n", __func__, client->name);
-+ dev_info(&cam->pdev->dev, "client's name is: %s\n", client->name);
-
- subdev = (struct v4l2_subdev *)i2c_get_clientdata(client);
- if (subdev == NULL) {
-@@ -417,6 +415,8 @@ static int queue_setup(struct vb2_queue *vq, const struct v4l2_format *fmt,
-
- alloc_ctxs[0] = dev->dma_cont_ctx;
-
-+ dev->frame_cnt = 0;
-+
- dprintk(dev, 1, "%s, count=%d, size=%ld\n", __func__, *nbuffers, size);
-
- return 0;
-@@ -659,6 +659,20 @@ static int vidioc_try_fmt_vid_cap(struct file *file, void *priv,
- pix->bytesperline = (pix->width * fmt->depth) >> 3;
- pix->sizeimage = pix->height * pix->bytesperline;
-
-+ if ((pix->sizeimage % BYTES_PER_DMA_EVT) != 0)
-+ return -EINVAL;
-+
-+ switch (mbus_fmt.field) {
-+ case V4L2_FIELD_ANY:
-+ pix->field = V4L2_FIELD_NONE;
-+ break;
-+ case V4L2_FIELD_NONE:
-+ break;
-+ default:
-+ dev_err(&dev->pdev->dev, "Field type %d unsupported.\n", mbus_fmt.field);
-+ return -EINVAL;
-+ }
-+
- return 0;
- }
-
-@@ -744,42 +758,29 @@ static int vidioc_log_status(struct file *file, void *priv)
- return 0;
- }
-
--static int vidioc_s_std(struct file *file, void *priv, v4l2_std_id *i)
--{
-- return 0;
--}
--
--/* only one input in this sample driver */
- static int vidioc_enum_input(struct file *file, void *priv,
- struct v4l2_input *inp)
- {
-- return -EINVAL;
-+ if (inp->index > 0)
-+ return -EINVAL;
-
- inp->type = V4L2_INPUT_TYPE_CAMERA;
-- inp->std = V4L2_STD_525_60;
- sprintf(inp->name, "Camera %u", inp->index);
-+
- return 0;
- }
-
- static int vidioc_g_input(struct file *file, void *priv, unsigned int *i)
- {
-- struct cssp_cam_dev *dev = video_drvdata(file);
--
-- *i = dev->input;
-+ *i = 0;
-
- return 0;
- }
-
- static int vidioc_s_input(struct file *file, void *priv, unsigned int i)
- {
-- struct cssp_cam_dev *dev = video_drvdata(file);
--
-- return -EINVAL;
--
-- if (i == dev->input)
-- return 0;
--
-- dev->input = i;
-+ if (i > 0)
-+ return -EINVAL;
-
- return 0;
- }
-@@ -805,7 +806,6 @@ static const struct v4l2_ioctl_ops cssp_cam_ioctl_ops = {
- .vidioc_querybuf = vidioc_querybuf,
- .vidioc_qbuf = vidioc_qbuf,
- .vidioc_dqbuf = vidioc_dqbuf,
-- .vidioc_s_std = vidioc_s_std,
- .vidioc_enum_input = vidioc_enum_input,
- .vidioc_g_input = vidioc_g_input,
- .vidioc_s_input = vidioc_s_input,
-@@ -894,8 +894,6 @@ static struct video_device cssp_cam_template = {
- .ioctl_ops = &cssp_cam_ioctl_ops,
- .minor = -1,
- .release = video_device_release,
-- .tvnorms = V4L2_STD_525_60,
-- .current_norm = V4L2_STD_NTSC_M,
- };
-
- static int __init video_probe(struct cssp_cam_dev *cam_dev)
-@@ -1006,12 +1004,12 @@ static int __init cssp_cam_probe(struct platform_device *pdev)
-
- cssp_cam_platform_data = (struct cssp_cam_platform_data *) pdev->dev.platform_data;
- if (cssp_cam_platform_data == NULL) {
-- printk(KERN_ERR "[%s]: missing platform data\n", pdev->name);
-+ dev_err(&pdev->dev, "missing platform data\n");
- return -ENODEV;
- }
-
- if (cssp_cam_platform_data->cam_i2c_board_info == NULL) {
-- printk(KERN_ERR "[%s]: missing camera i2c board info\n", pdev->name);
-+ dev_err(&pdev->dev, "missing camera i2c board info\n");
- return -ENODEV;
- }
-
-@@ -1027,7 +1025,7 @@ static int __init cssp_cam_probe(struct platform_device *pdev)
- cam_dev->camera_clk = clk_get(&pdev->dev, cssp_cam_platform_data->cam_clk_name);
- if (IS_ERR(cam_dev->camera_clk)) {
- ret = PTR_ERR(cam_dev->camera_clk);
-- printk(KERN_ERR "[%s]: cannot clk_get %s\n", pdev->name, cssp_cam_platform_data->cam_clk_name);
-+ dev_err(&pdev->dev, "cannot clk_get %s\n", cssp_cam_platform_data->cam_clk_name);
- goto fail0;
- }
-
-@@ -1043,7 +1041,7 @@ static int __init cssp_cam_probe(struct platform_device *pdev)
-
- ret = configure_camera_sensor(cam_dev);
- if (ret) {
-- printk(KERN_ERR "[%s]: camera sensor configuration failed\n", pdev->name);
-+ dev_err(&pdev->dev, "camera sensor configuration failed\n");
- goto fail3;
- }
-
-@@ -1097,7 +1095,7 @@ static int cssp_cam_remove(struct platform_device *pdev)
-
- kfree(cam);
-
-- printk(KERN_INFO "[%s]: removed\n", pdev->name);
-+ dev_info(&pdev->dev, "removed\n");
-
- return 0;
- }
-@@ -1112,20 +1110,8 @@ static struct platform_driver cssp_cam_driver = {
- },
- };
-
-+module_platform_driver(cssp_cam_driver);
-
--static int __init cssp_cam_init(void)
--{
-- return platform_driver_register(&cssp_cam_driver);
--}
--
--static void __exit cssp_cam_exit(void)
--{
-- platform_driver_unregister(&cssp_cam_driver);
--}
--
--
--module_init(cssp_cam_init);
--module_exit(cssp_cam_exit);
-
- /*
- * Macros sets license, author and description
-diff --git a/drivers/media/video/cssp_camera/cssp_camera.h b/drivers/media/video/cssp_camera/cssp_camera.h
-index 8eb5f83..3bb6ea4 100644
---- a/drivers/media/video/cssp_camera/cssp_camera.h
-+++ b/drivers/media/video/cssp_camera/cssp_camera.h
-@@ -111,9 +111,6 @@ struct cssp_cam_dev {
- int streaming_started;
- struct vb2_buffer *current_vb;
-
-- /* Input Number */
-- int input;
--
- /* video capture */
- struct cssp_cam_fmt *fmt;
- u32 width;
-@@ -123,8 +120,6 @@ struct cssp_cam_dev {
- enum v4l2_colorspace colorspace;
- struct vb2_queue vb_vidq;
- enum v4l2_field field;
-- unsigned int field_count;
--
-
- /* Camera Sensor */
- struct i2c_board_info *camera_board_info;
-@@ -142,6 +137,8 @@ struct cssp_cam_dev {
- int frame_cnt;
-
- int reset_pin;
-+
-+ int rev;
- };
-
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0085-beaglebone-mux-camera-cape-orientation-pin-to-gpio.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0085-beaglebone-mux-camera-cape-orientation-pin-to-gpio.patch
deleted file mode 100644
index 396b2d1..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0085-beaglebone-mux-camera-cape-orientation-pin-to-gpio.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From cfef44a953b640d592133ed553c1c4ba72953837 Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen at dominion.thruhere.net>
-Date: Wed, 15 Aug 2012 14:33:37 +0200
-Subject: [PATCH] beaglebone: mux camera cape orientation pin to gpio
-
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- arch/arm/mach-omap2/board-am335xevm.c | 3 ++-
- 1 files changed, 2 insertions(+), 1 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index d30c5a2..78c4bf9 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -846,6 +846,7 @@ static struct pinmux_config gpmc_pin_mux[] = {
- static struct pinmux_config camera_cape_pin_mux[] = {
- {"spi0_d1.gpio0_4", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT }, // QL CSSP and Camera Sensor Reset
- {"spi0_cs0.gpio0_5", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT_PULLUP }, // 1V8 and 2V8 Power Enable
-+ {"gpmc_csn1.gpio0_30", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT}, // Sensor orientation detect: low -> frontfacing, high -> backfacing
- {NULL, 0},
- };
-
-@@ -2065,8 +2066,8 @@ static void cssp_gpmc_init(void)
- { NULL, GPMC_DEVICE_NOR },
- };
-
-- setup_pin_mux(camera_cape_pin_mux);
- setup_pin_mux(gpmc_pin_mux);
-+ setup_pin_mux(camera_cape_pin_mux);
-
- omap_init_gpmc(gpmc_device, sizeof(gpmc_device));
- gpmc_cssp_init();
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0086-board-am335xevm-Add-Beaglebone-Motor-Cape-Support.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0086-board-am335xevm-Add-Beaglebone-Motor-Cape-Support.patch
deleted file mode 100644
index 78055d0..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0086-board-am335xevm-Add-Beaglebone-Motor-Cape-Support.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 4184217cda11245823527d7b3b65fcb9eeb88c6a Mon Sep 17 00:00:00 2001
-From: Roger Monk <r-monk at ti.com>
-Date: Mon, 13 Aug 2012 21:44:49 +0100
-Subject: [PATCH 86/87] board-am335xevm: Add Beaglebone Motor Cape Support
-
- * Beaglebone Motor Cape adds 4 DRV8833 devices connected to
- the 8 PWM outputs on the beaglebone allowing 8 DC Motors or
- 4 Stepper Motors to be controlled
- * If PWM channels are not available some of these channels can be
- remapped to GPIO pins via jumpers
-
- * GPIOs are used for Direction control of each motor channel (1 per channel)
- * GPIOs are also used for Sense Feedback from each motor (2 per channel)
- * Channel 1 sense pins are mapped to QEP0 for use with quadrature encoders
-
- * Initial Patch recognises the Motor Cape and makes all necessary
- pins available by ensuring w1 and spi1 are marked as in-use
-
-Signed-off-by: Roger Monk <r-monk at ti.com>
----
- arch/arm/mach-omap2/board-am335xevm.c | 6 ++++++
- 1 files changed, 6 insertions(+), 0 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
-index 699fab3..f2d4a69 100644
---- a/arch/arm/mach-omap2/board-am335xevm.c
-+++ b/arch/arm/mach-omap2/board-am335xevm.c
-@@ -3165,6 +3165,12 @@ static void beaglebone_cape_setup(struct memory_accessor *mem_acc, void *context
- cssp_gpmc_init();
- }
-
-+ if (!strncmp("BB-BONE-MOTOR-01", cape_config.partnumber, 16)) {
-+ pr_info("BeagleBone cape: initializing Motor cape\n");
-+ beaglebone_w1gpio_free = 0;
-+ beaglebone_spi1_free = 0;
-+ }
-+
- goto out2;
- out:
- /*
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0087-mux33xx-Fix-MUXENTRYs-for-MCASP0_ACLKX-FSX-to-add-eh.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0087-mux33xx-Fix-MUXENTRYs-for-MCASP0_ACLKX-FSX-to-add-eh.patch
deleted file mode 100644
index d361e16..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0087-mux33xx-Fix-MUXENTRYs-for-MCASP0_ACLKX-FSX-to-add-eh.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 2bb4fd4b7a1eb2a29de53ca66c67ca92ae52351e Mon Sep 17 00:00:00 2001
-From: Roger Monk <r-monk at ti.com>
-Date: Tue, 14 Aug 2012 18:06:13 +0100
-Subject: [PATCH 87/87] mux33xx: Fix MUXENTRYs for MCASP0_ACLKX/FSX to add
- ehrpwm0 and pru pins
-
- * Add Mux Entries for ehrpwm0 to MCASP0_CLKX/FSX pins
- * Also add modes 5/6 to the same pins for completeness (pru pins)
-
-Signed-off-by: Roger Monk <r-monk at ti.com>
----
- arch/arm/mach-omap2/mux33xx.c | 8 ++++----
- 1 files changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/mux33xx.c b/arch/arm/mach-omap2/mux33xx.c
-index 852f7f0..c0d14b3 100644
---- a/arch/arm/mach-omap2/mux33xx.c
-+++ b/arch/arm/mach-omap2/mux33xx.c
-@@ -335,11 +335,11 @@ static struct omap_mux __initdata am33xx_muxmodes[] = {
- "i2c0_scl", NULL, NULL, NULL,
- NULL, NULL, NULL, "gpio3_6"),
- _AM33XX_MUXENTRY(MCASP0_ACLKX, 0,
-- "mcasp0_aclkx", NULL, NULL, "spi1_sclk",
-- "mmc0_sdcd", NULL, NULL, "gpio3_14"),
-+ "mcasp0_aclkx", "ehrpwm0A", NULL, "spi1_sclk",
-+ "mmc0_sdcd", "pr1_pru0_pru_r30_0", "pr1_pru0_pru_r31_0", "gpio3_14"),
- _AM33XX_MUXENTRY(MCASP0_FSX, 0,
-- "mcasp0_fsx", NULL, NULL, "spi1_d0",
-- "mmc1_sdcd", NULL, NULL, "gpio3_15"),
-+ "mcasp0_fsx", "ehrpwm0B", NULL, "spi1_d0",
-+ "mmc1_sdcd", "pr1_pru0_pru_r30_1", "pr1_pru0_pru_r31_1", "gpio3_15"),
- _AM33XX_MUXENTRY(MCASP0_AXR0, 0,
- "mcasp0_axr0", NULL, NULL, "spi1_d1",
- "mmc2_sdcd", NULL, NULL, "gpio3_16"),
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/defconfig b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/defconfig
deleted file mode 100644
index 74b0051..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/defconfig
+++ /dev/null
@@ -1,3639 +0,0 @@
-#
-# Automatically generated file; DO NOT EDIT.
-# Linux/arm 3.2.28 Kernel Configuration
-#
-CONFIG_ARM=y
-CONFIG_HAVE_PWM=y
-CONFIG_SYS_SUPPORTS_APM_EMULATION=y
-CONFIG_HAVE_SCHED_CLOCK=y
-CONFIG_GENERIC_GPIO=y
-# CONFIG_ARCH_USES_GETTIMEOFFSET is not set
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_KTIME_SCALAR=y
-CONFIG_HAVE_PROC_CPU=y
-CONFIG_STACKTRACE_SUPPORT=y
-CONFIG_HAVE_LATENCYTOP_SUPPORT=y
-CONFIG_LOCKDEP_SUPPORT=y
-CONFIG_TRACE_IRQFLAGS_SUPPORT=y
-CONFIG_HARDIRQS_SW_RESEND=y
-CONFIG_GENERIC_IRQ_PROBE=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_ARCH_HAS_CPUFREQ=y
-CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_NEED_DMA_MAP_STATE=y
-CONFIG_VECTORS_BASE=0xffff0000
-CONFIG_ARM_PATCH_PHYS_VIRT=y
-CONFIG_GENERIC_BUG=y
-CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-CONFIG_HAVE_IRQ_WORK=y
-CONFIG_IRQ_WORK=y
-
-#
-# General setup
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-CONFIG_CROSS_COMPILE=""
-CONFIG_LOCALVERSION=""
-# CONFIG_LOCALVERSION_AUTO is not set
-CONFIG_HAVE_KERNEL_GZIP=y
-CONFIG_HAVE_KERNEL_LZMA=y
-CONFIG_HAVE_KERNEL_LZO=y
-# CONFIG_KERNEL_GZIP is not set
-# CONFIG_KERNEL_LZMA is not set
-CONFIG_KERNEL_LZO=y
-CONFIG_DEFAULT_HOSTNAME="BeagleBone"
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-CONFIG_SYSVIPC_SYSCTL=y
-CONFIG_POSIX_MQUEUE=y
-CONFIG_POSIX_MQUEUE_SYSCTL=y
-CONFIG_BSD_PROCESS_ACCT=y
-CONFIG_BSD_PROCESS_ACCT_V3=y
-CONFIG_FHANDLE=y
-CONFIG_TASKSTATS=y
-CONFIG_TASK_DELAY_ACCT=y
-CONFIG_TASK_XACCT=y
-CONFIG_TASK_IO_ACCOUNTING=y
-CONFIG_AUDIT=y
-CONFIG_HAVE_GENERIC_HARDIRQS=y
-
-#
-# IRQ subsystem
-#
-CONFIG_GENERIC_HARDIRQS=y
-CONFIG_HAVE_SPARSE_IRQ=y
-CONFIG_GENERIC_IRQ_SHOW=y
-CONFIG_GENERIC_IRQ_CHIP=y
-CONFIG_IRQ_DOMAIN=y
-CONFIG_SPARSE_IRQ=y
-
-#
-# RCU Subsystem
-#
-CONFIG_TINY_RCU=y
-# CONFIG_PREEMPT_RCU is not set
-# CONFIG_RCU_TRACE is not set
-# CONFIG_TREE_RCU_TRACE is not set
-CONFIG_IKCONFIG=y
-CONFIG_IKCONFIG_PROC=y
-CONFIG_LOG_BUF_SHIFT=17
-CONFIG_CGROUPS=y
-# CONFIG_CGROUP_DEBUG is not set
-CONFIG_CGROUP_FREEZER=y
-CONFIG_CGROUP_DEVICE=y
-# CONFIG_CPUSETS is not set
-CONFIG_CGROUP_CPUACCT=y
-CONFIG_RESOURCE_COUNTERS=y
-# CONFIG_CGROUP_MEM_RES_CTLR is not set
-# CONFIG_CGROUP_PERF is not set
-CONFIG_CGROUP_SCHED=y
-CONFIG_FAIR_GROUP_SCHED=y
-CONFIG_CFS_BANDWIDTH=y
-CONFIG_RT_GROUP_SCHED=y
-# CONFIG_BLK_CGROUP is not set
-CONFIG_NAMESPACES=y
-CONFIG_UTS_NS=y
-CONFIG_IPC_NS=y
-CONFIG_USER_NS=y
-CONFIG_PID_NS=y
-CONFIG_NET_NS=y
-CONFIG_SCHED_AUTOGROUP=y
-# CONFIG_SYSFS_DEPRECATED is not set
-CONFIG_RELAY=y
-CONFIG_BLK_DEV_INITRD=y
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_RD_GZIP=y
-CONFIG_RD_BZIP2=y
-CONFIG_RD_LZMA=y
-CONFIG_RD_XZ=y
-CONFIG_RD_LZO=y
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_SYSCTL=y
-CONFIG_ANON_INODES=y
-CONFIG_EXPERT=y
-CONFIG_UID16=y
-CONFIG_SYSCTL_SYSCALL=y
-CONFIG_KALLSYMS=y
-CONFIG_KALLSYMS_ALL=y
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_EPOLL=y
-CONFIG_SIGNALFD=y
-CONFIG_TIMERFD=y
-CONFIG_EVENTFD=y
-CONFIG_SHMEM=y
-CONFIG_AIO=y
-CONFIG_EMBEDDED=y
-CONFIG_HAVE_PERF_EVENTS=y
-CONFIG_PERF_USE_VMALLOC=y
-
-#
-# Kernel Performance Events And Counters
-#
-CONFIG_PERF_EVENTS=y
-CONFIG_PERF_COUNTERS=y
-# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
-CONFIG_VM_EVENT_COUNTERS=y
-CONFIG_COMPAT_BRK=y
-CONFIG_SLAB=y
-# CONFIG_SLUB is not set
-# CONFIG_SLOB is not set
-CONFIG_PROFILING=y
-CONFIG_TRACEPOINTS=y
-CONFIG_OPROFILE=m
-CONFIG_HAVE_OPROFILE=y
-# CONFIG_KPROBES is not set
-CONFIG_HAVE_KPROBES=y
-CONFIG_HAVE_KRETPROBES=y
-CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
-CONFIG_HAVE_CLK=y
-CONFIG_HAVE_DMA_API_DEBUG=y
-CONFIG_HAVE_HW_BREAKPOINT=y
-
-#
-# GCOV-based kernel profiling
-#
-# CONFIG_GCOV_KERNEL is not set
-CONFIG_HAVE_GENERIC_DMA_COHERENT=y
-CONFIG_SLABINFO=y
-CONFIG_RT_MUTEXES=y
-CONFIG_BASE_SMALL=0
-CONFIG_MODULES=y
-CONFIG_MODULE_FORCE_LOAD=y
-CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-CONFIG_MODVERSIONS=y
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_BLOCK=y
-CONFIG_LBDAF=y
-CONFIG_BLK_DEV_BSG=y
-# CONFIG_BLK_DEV_BSGLIB is not set
-CONFIG_BLK_DEV_INTEGRITY=y
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_DEADLINE=y
-CONFIG_IOSCHED_CFQ=y
-# CONFIG_DEFAULT_DEADLINE is not set
-CONFIG_DEFAULT_CFQ=y
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="cfq"
-# CONFIG_INLINE_SPIN_TRYLOCK is not set
-# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
-# CONFIG_INLINE_SPIN_LOCK is not set
-# CONFIG_INLINE_SPIN_LOCK_BH is not set
-# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
-# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
-CONFIG_INLINE_SPIN_UNLOCK=y
-# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
-CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
-# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
-# CONFIG_INLINE_READ_TRYLOCK is not set
-# CONFIG_INLINE_READ_LOCK is not set
-# CONFIG_INLINE_READ_LOCK_BH is not set
-# CONFIG_INLINE_READ_LOCK_IRQ is not set
-# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
-CONFIG_INLINE_READ_UNLOCK=y
-# CONFIG_INLINE_READ_UNLOCK_BH is not set
-CONFIG_INLINE_READ_UNLOCK_IRQ=y
-# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
-# CONFIG_INLINE_WRITE_TRYLOCK is not set
-# CONFIG_INLINE_WRITE_LOCK is not set
-# CONFIG_INLINE_WRITE_LOCK_BH is not set
-# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
-# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
-CONFIG_INLINE_WRITE_UNLOCK=y
-# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
-CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
-# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
-# CONFIG_MUTEX_SPIN_ON_OWNER is not set
-CONFIG_FREEZER=y
-
-#
-# System Type
-#
-CONFIG_MMU=y
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_VEXPRESS is not set
-# CONFIG_ARCH_AT91 is not set
-# CONFIG_ARCH_BCMRING is not set
-# CONFIG_ARCH_HIGHBANK is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CNS3XXX is not set
-# CONFIG_ARCH_GEMINI is not set
-# CONFIG_ARCH_PRIMA2 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_EP93XX is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_MXC is not set
-# CONFIG_ARCH_MXS is not set
-# CONFIG_ARCH_NETX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_IOP13XX is not set
-# CONFIG_ARCH_IOP32X is not set
-# CONFIG_ARCH_IOP33X is not set
-# CONFIG_ARCH_IXP23XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_DOVE is not set
-# CONFIG_ARCH_KIRKWOOD is not set
-# CONFIG_ARCH_LPC32XX is not set
-# CONFIG_ARCH_MV78XX0 is not set
-# CONFIG_ARCH_ORION5X is not set
-# CONFIG_ARCH_MMP is not set
-# CONFIG_ARCH_KS8695 is not set
-# CONFIG_ARCH_W90X900 is not set
-# CONFIG_ARCH_TEGRA is not set
-# CONFIG_ARCH_PICOXCELL is not set
-# CONFIG_ARCH_PNX4008 is not set
-# CONFIG_ARCH_PXA is not set
-# CONFIG_ARCH_MSM is not set
-# CONFIG_ARCH_SHMOBILE is not set
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_S3C2410 is not set
-# CONFIG_ARCH_S3C64XX is not set
-# CONFIG_ARCH_S5P64X0 is not set
-# CONFIG_ARCH_S5PC100 is not set
-# CONFIG_ARCH_S5PV210 is not set
-# CONFIG_ARCH_EXYNOS is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_TCC_926 is not set
-# CONFIG_ARCH_U300 is not set
-# CONFIG_ARCH_U8500 is not set
-# CONFIG_ARCH_NOMADIK is not set
-# CONFIG_ARCH_DAVINCI is not set
-CONFIG_ARCH_OMAP=y
-# CONFIG_PLAT_SPEAR is not set
-# CONFIG_ARCH_VT8500 is not set
-# CONFIG_ARCH_ZYNQ is not set
-# CONFIG_GPIO_PCA953X is not set
-# CONFIG_KEYBOARD_GPIO_POLLED is not set
-
-#
-# TI OMAP Common Features
-#
-# CONFIG_ARCH_OMAP1 is not set
-CONFIG_ARCH_OMAP2PLUS=y
-
-#
-# OMAP Feature Selections
-#
-# CONFIG_OMAP_SMARTREFLEX is not set
-# CONFIG_OMAP_RESET_CLOCKS is not set
-CONFIG_OMAP_MUX=y
-CONFIG_OMAP_MUX_DEBUG=y
-CONFIG_OMAP_MUX_WARNINGS=y
-CONFIG_OMAP_MCBSP=y
-CONFIG_OMAP_MBOX_FWK=y
-CONFIG_OMAP_MBOX_KFIFO_SIZE=256
-# CONFIG_OMAP_32K_TIMER is not set
-# CONFIG_OMAP3_L2_AUX_SECURE_SAVE_RESTORE is not set
-CONFIG_OMAP_DM_TIMER=y
-CONFIG_OMAP_PM_NOOP=y
-CONFIG_MACH_OMAP_GENERIC=y
-
-#
-# TI OMAP2/3/4 Specific Features
-#
-CONFIG_ARCH_OMAP2PLUS_TYPICAL=y
-# CONFIG_ARCH_OMAP2 is not set
-CONFIG_ARCH_OMAP3=y
-# CONFIG_ARCH_OMAP4 is not set
-# CONFIG_SOC_OMAP3430 is not set
-CONFIG_SOC_OMAPTI81XX=y
-CONFIG_SOC_OMAPAM33XX=y
-CONFIG_OMAP_PACKAGE_CBB=y
-
-#
-# OMAP Board Type
-#
-CONFIG_MACH_OMAP3_BEAGLE=y
-# CONFIG_MACH_DEVKIT8000 is not set
-# CONFIG_MACH_OMAP_LDP is not set
-# CONFIG_MACH_OMAP3530_LV_SOM is not set
-# CONFIG_MACH_OMAP3_TORPEDO is not set
-# CONFIG_MACH_ENCORE is not set
-# CONFIG_MACH_OVERO is not set
-# CONFIG_MACH_OMAP3EVM is not set
-# CONFIG_MACH_OMAP3517EVM is not set
-# CONFIG_MACH_CRANEBOARD is not set
-# CONFIG_MACH_OMAP3_PANDORA is not set
-# CONFIG_MACH_OMAP3_TOUCHBOOK is not set
-# CONFIG_MACH_OMAP_3430SDP is not set
-# CONFIG_MACH_NOKIA_RM680 is not set
-# CONFIG_MACH_NOKIA_RX51 is not set
-# CONFIG_MACH_OMAP_ZOOM2 is not set
-# CONFIG_MACH_OMAP_ZOOM3 is not set
-# CONFIG_MACH_CM_T35 is not set
-# CONFIG_MACH_CM_T3517 is not set
-# CONFIG_MACH_IGEP0020 is not set
-# CONFIG_MACH_IGEP0030 is not set
-# CONFIG_MACH_SBC3530 is not set
-# CONFIG_MACH_OMAP_3630SDP is not set
-CONFIG_MACH_TI8168EVM=y
-CONFIG_MACH_TI8148EVM=y
-CONFIG_MACH_AM335XEVM=y
-CONFIG_MACH_AM335XIAEVM=y
-# CONFIG_OMAP3_EMU is not set
-# CONFIG_OMAP3_SDRC_AC_TIMING is not set
-CONFIG_OMAP3_EDMA=y
-
-#
-# System MMU
-#
-
-#
-# Processor Type
-#
-CONFIG_CPU_V7=y
-CONFIG_CPU_32v6K=y
-CONFIG_CPU_32v7=y
-CONFIG_CPU_ABRT_EV7=y
-CONFIG_CPU_PABRT_V7=y
-CONFIG_CPU_CACHE_V7=y
-CONFIG_CPU_CACHE_VIPT=y
-CONFIG_CPU_COPY_V6=y
-CONFIG_CPU_TLB_V7=y
-CONFIG_CPU_HAS_ASID=y
-CONFIG_CPU_CP15=y
-CONFIG_CPU_CP15_MMU=y
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-CONFIG_ARM_THUMBEE=y
-# CONFIG_SWP_EMULATE is not set
-# CONFIG_CPU_ICACHE_DISABLE is not set
-# CONFIG_CPU_DCACHE_DISABLE is not set
-# CONFIG_CPU_BPREDICT_DISABLE is not set
-CONFIG_ARM_L1_CACHE_SHIFT_6=y
-CONFIG_ARM_L1_CACHE_SHIFT=6
-CONFIG_ARM_DMA_MEM_BUFFERABLE=y
-CONFIG_MULTI_IRQ_HANDLER=y
-CONFIG_ARM_ERRATA_430973=y
-# CONFIG_ARM_ERRATA_458693 is not set
-# CONFIG_ARM_ERRATA_460075 is not set
-# CONFIG_ARM_ERRATA_720789 is not set
-# CONFIG_ARM_ERRATA_743622 is not set
-# CONFIG_ARM_ERRATA_751472 is not set
-# CONFIG_ARM_ERRATA_754322 is not set
-
-#
-# Bus support
-#
-# CONFIG_PCI_SYSCALL is not set
-# CONFIG_ARCH_SUPPORTS_MSI is not set
-# CONFIG_PCCARD is not set
-
-#
-# Kernel Features
-#
-CONFIG_TICK_ONESHOT=y
-CONFIG_NO_HZ=y
-CONFIG_HIGH_RES_TIMERS=y
-CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
-CONFIG_VMSPLIT_3G=y
-# CONFIG_VMSPLIT_2G is not set
-# CONFIG_VMSPLIT_1G is not set
-CONFIG_PAGE_OFFSET=0xC0000000
-CONFIG_PREEMPT_NONE=y
-# CONFIG_PREEMPT_VOLUNTARY is not set
-# CONFIG_PREEMPT is not set
-CONFIG_HZ=100
-CONFIG_THUMB2_KERNEL=y
-CONFIG_THUMB2_AVOID_R_ARM_THM_JUMP11=y
-CONFIG_ARM_ASM_UNIFIED=y
-CONFIG_AEABI=y
-CONFIG_ARCH_HAS_HOLES_MEMORYMODEL=y
-# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
-# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
-CONFIG_HAVE_ARCH_PFN_VALID=y
-# CONFIG_HIGHMEM is not set
-CONFIG_SELECT_MEMORY_MODEL=y
-CONFIG_FLATMEM_MANUAL=y
-CONFIG_FLATMEM=y
-CONFIG_FLAT_NODE_MEM_MAP=y
-CONFIG_HAVE_MEMBLOCK=y
-CONFIG_PAGEFLAGS_EXTENDED=y
-CONFIG_SPLIT_PTLOCK_CPUS=4
-# CONFIG_COMPACTION is not set
-# CONFIG_PHYS_ADDR_T_64BIT is not set
-CONFIG_ZONE_DMA_FLAG=0
-CONFIG_VIRT_TO_BUS=y
-# CONFIG_KSM is not set
-CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
-CONFIG_NEED_PER_CPU_KM=y
-# CONFIG_CLEANCACHE is not set
-CONFIG_FORCE_MAX_ZONEORDER=11
-CONFIG_ALIGNMENT_TRAP=y
-# CONFIG_UACCESS_WITH_MEMCPY is not set
-# CONFIG_SECCOMP is not set
-# CONFIG_CC_STACKPROTECTOR is not set
-# CONFIG_DEPRECATED_PARAM_STRUCT is not set
-
-#
-# Boot options
-#
-CONFIG_USE_OF=y
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-# CONFIG_ARM_APPENDED_DTB is not set
-CONFIG_CMDLINE=" debug "
-CONFIG_CMDLINE_FROM_BOOTLOADER=y
-# CONFIG_CMDLINE_EXTEND is not set
-# CONFIG_CMDLINE_FORCE is not set
-# CONFIG_XIP_KERNEL is not set
-# CONFIG_KEXEC is not set
-# CONFIG_CRASH_DUMP is not set
-CONFIG_AUTO_ZRELADDR=y
-
-#
-# CPU Power Management
-#
-
-#
-# CPU Frequency scaling
-#
-CONFIG_CPU_FREQ=y
-CONFIG_CPU_FREQ_TABLE=y
-CONFIG_CPU_FREQ_STAT=y
-CONFIG_CPU_FREQ_STAT_DETAILS=y
-CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
-# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
-# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
-# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
-CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-CONFIG_CPU_FREQ_GOV_POWERSAVE=y
-CONFIG_CPU_FREQ_GOV_USERSPACE=y
-CONFIG_CPU_FREQ_GOV_ONDEMAND=y
-CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
-
-#
-# ARM CPU frequency scaling drivers
-#
-CONFIG_CPU_IDLE=y
-CONFIG_CPU_IDLE_GOV_LADDER=y
-CONFIG_CPU_IDLE_GOV_MENU=y
-
-#
-# Floating point emulation
-#
-
-#
-# At least one emulation must be selected
-#
-CONFIG_VFP=y
-CONFIG_VFPv3=y
-CONFIG_NEON=y
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
-CONFIG_HAVE_AOUT=y
-# CONFIG_BINFMT_AOUT is not set
-CONFIG_BINFMT_MISC=y
-
-#
-# Power management options
-#
-CONFIG_SUSPEND=y
-CONFIG_SUSPEND_FREEZER=y
-CONFIG_PM_SLEEP=y
-CONFIG_PM_RUNTIME=y
-CONFIG_PM=y
-CONFIG_PM_DEBUG=y
-# CONFIG_PM_ADVANCED_DEBUG is not set
-# CONFIG_PM_TEST_SUSPEND is not set
-CONFIG_CAN_PM_TRACE=y
-# CONFIG_APM_EMULATION is not set
-CONFIG_ARCH_HAS_OPP=y
-CONFIG_PM_OPP=y
-CONFIG_PM_CLK=y
-CONFIG_CPU_PM=y
-CONFIG_ARCH_SUSPEND_POSSIBLE=y
-CONFIG_ARM_CPU_SUSPEND=y
-CONFIG_NET=y
-
-#
-# Networking options
-#
-CONFIG_PACKET=y
-CONFIG_UNIX=y
-CONFIG_XFRM=y
-CONFIG_XFRM_USER=y
-CONFIG_XFRM_SUB_POLICY=y
-CONFIG_XFRM_MIGRATE=y
-CONFIG_XFRM_STATISTICS=y
-CONFIG_XFRM_IPCOMP=m
-CONFIG_NET_KEY=y
-CONFIG_NET_KEY_MIGRATE=y
-CONFIG_INET=y
-CONFIG_IP_MULTICAST=y
-# CONFIG_IP_ADVANCED_ROUTER is not set
-CONFIG_IP_PNP=y
-CONFIG_IP_PNP_DHCP=y
-CONFIG_IP_PNP_BOOTP=y
-CONFIG_IP_PNP_RARP=y
-CONFIG_NET_IPIP=m
-CONFIG_NET_IPGRE_DEMUX=m
-CONFIG_NET_IPGRE=m
-# CONFIG_NET_IPGRE_BROADCAST is not set
-CONFIG_IP_MROUTE=y
-# CONFIG_IP_PIMSM_V1 is not set
-# CONFIG_IP_PIMSM_V2 is not set
-CONFIG_ARPD=y
-CONFIG_SYN_COOKIES=y
-CONFIG_INET_AH=m
-CONFIG_INET_ESP=m
-CONFIG_INET_IPCOMP=m
-CONFIG_INET_XFRM_TUNNEL=m
-CONFIG_INET_TUNNEL=m
-CONFIG_INET_XFRM_MODE_TRANSPORT=y
-CONFIG_INET_XFRM_MODE_TUNNEL=y
-CONFIG_INET_XFRM_MODE_BEET=y
-CONFIG_INET_LRO=m
-CONFIG_INET_DIAG=y
-CONFIG_INET_TCP_DIAG=y
-CONFIG_TCP_CONG_ADVANCED=y
-CONFIG_TCP_CONG_BIC=m
-CONFIG_TCP_CONG_CUBIC=y
-CONFIG_TCP_CONG_WESTWOOD=m
-CONFIG_TCP_CONG_HTCP=m
-CONFIG_TCP_CONG_HSTCP=m
-CONFIG_TCP_CONG_HYBLA=m
-CONFIG_TCP_CONG_VEGAS=m
-CONFIG_TCP_CONG_SCALABLE=m
-CONFIG_TCP_CONG_LP=m
-CONFIG_TCP_CONG_VENO=m
-CONFIG_TCP_CONG_YEAH=m
-CONFIG_TCP_CONG_ILLINOIS=m
-CONFIG_DEFAULT_CUBIC=y
-# CONFIG_DEFAULT_RENO is not set
-CONFIG_DEFAULT_TCP_CONG="cubic"
-# CONFIG_TCP_MD5SIG is not set
-CONFIG_IPV6=m
-CONFIG_IPV6_PRIVACY=y
-CONFIG_IPV6_ROUTER_PREF=y
-CONFIG_IPV6_ROUTE_INFO=y
-CONFIG_IPV6_OPTIMISTIC_DAD=y
-CONFIG_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-CONFIG_IPV6_MIP6=m
-CONFIG_INET6_XFRM_TUNNEL=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_TRANSPORT=m
-CONFIG_INET6_XFRM_MODE_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_BEET=m
-CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m
-CONFIG_IPV6_SIT=m
-CONFIG_IPV6_SIT_6RD=y
-CONFIG_IPV6_NDISC_NODETYPE=y
-CONFIG_IPV6_TUNNEL=m
-CONFIG_IPV6_MULTIPLE_TABLES=y
-CONFIG_IPV6_SUBTREES=y
-CONFIG_IPV6_MROUTE=y
-CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y
-CONFIG_IPV6_PIMSM_V2=y
-# CONFIG_NETLABEL is not set
-# CONFIG_NETWORK_SECMARK is not set
-# CONFIG_NETWORK_PHY_TIMESTAMPING is not set
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-CONFIG_NETFILTER_ADVANCED=y
-CONFIG_BRIDGE_NETFILTER=y
-
-#
-# Core Netfilter Configuration
-#
-# CONFIG_NETFILTER_NETLINK_QUEUE is not set
-# CONFIG_NETFILTER_NETLINK_LOG is not set
-# CONFIG_NF_CONNTRACK is not set
-CONFIG_NETFILTER_XTABLES=m
-
-#
-# Xtables combined modules
-#
-# CONFIG_NETFILTER_XT_MARK is not set
-
-#
-# Xtables targets
-#
-CONFIG_NETFILTER_XT_TARGET_AUDIT=m
-# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
-# CONFIG_NETFILTER_XT_TARGET_IDLETIMER is not set
-# CONFIG_NETFILTER_XT_TARGET_LED is not set
-# CONFIG_NETFILTER_XT_TARGET_MARK is not set
-# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
-# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
-# CONFIG_NETFILTER_XT_TARGET_RATEEST is not set
-# CONFIG_NETFILTER_XT_TARGET_TEE is not set
-# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
-
-#
-# Xtables matches
-#
-# CONFIG_NETFILTER_XT_MATCH_ADDRTYPE is not set
-# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
-# CONFIG_NETFILTER_XT_MATCH_CPU is not set
-# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
-# CONFIG_NETFILTER_XT_MATCH_DEVGROUP is not set
-# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
-# CONFIG_NETFILTER_XT_MATCH_ESP is not set
-# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
-# CONFIG_NETFILTER_XT_MATCH_HL is not set
-# CONFIG_NETFILTER_XT_MATCH_IPRANGE is not set
-# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
-# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
-# CONFIG_NETFILTER_XT_MATCH_MAC is not set
-# CONFIG_NETFILTER_XT_MATCH_MARK is not set
-# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
-# CONFIG_NETFILTER_XT_MATCH_OWNER is not set
-# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
-# CONFIG_NETFILTER_XT_MATCH_PHYSDEV is not set
-# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
-# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
-# CONFIG_NETFILTER_XT_MATCH_RATEEST is not set
-# CONFIG_NETFILTER_XT_MATCH_REALM is not set
-# CONFIG_NETFILTER_XT_MATCH_RECENT is not set
-# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
-# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
-# CONFIG_NETFILTER_XT_MATCH_STRING is not set
-# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
-# CONFIG_NETFILTER_XT_MATCH_TIME is not set
-# CONFIG_NETFILTER_XT_MATCH_U32 is not set
-# CONFIG_IP_VS is not set
-
-#
-# IP: Netfilter Configuration
-#
-# CONFIG_NF_DEFRAG_IPV4 is not set
-# CONFIG_IP_NF_QUEUE is not set
-CONFIG_IP_NF_IPTABLES=m
-# CONFIG_IP_NF_MATCH_AH is not set
-# CONFIG_IP_NF_MATCH_ECN is not set
-# CONFIG_IP_NF_MATCH_TTL is not set
-# CONFIG_IP_NF_FILTER is not set
-# CONFIG_IP_NF_TARGET_LOG is not set
-# CONFIG_IP_NF_TARGET_ULOG is not set
-# CONFIG_IP_NF_MANGLE is not set
-# CONFIG_IP_NF_RAW is not set
-# CONFIG_IP_NF_SECURITY is not set
-CONFIG_IP_NF_ARPTABLES=m
-# CONFIG_IP_NF_ARPFILTER is not set
-# CONFIG_IP_NF_ARP_MANGLE is not set
-
-#
-# IPv6: Netfilter Configuration
-#
-# CONFIG_NF_DEFRAG_IPV6 is not set
-# CONFIG_IP6_NF_QUEUE is not set
-# CONFIG_IP6_NF_IPTABLES is not set
-# CONFIG_BRIDGE_NF_EBTABLES is not set
-# CONFIG_IP_DCCP is not set
-# CONFIG_IP_SCTP is not set
-# CONFIG_RDS is not set
-# CONFIG_TIPC is not set
-# CONFIG_ATM is not set
-# CONFIG_L2TP is not set
-CONFIG_STP=m
-CONFIG_GARP=m
-CONFIG_BRIDGE=m
-CONFIG_BRIDGE_IGMP_SNOOPING=y
-# CONFIG_NET_DSA is not set
-CONFIG_VLAN_8021Q=m
-CONFIG_VLAN_8021Q_GVRP=y
-# CONFIG_DECNET is not set
-CONFIG_LLC=m
-# CONFIG_LLC2 is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-# CONFIG_PHONET is not set
-# CONFIG_IEEE802154 is not set
-CONFIG_NET_SCHED=y
-
-#
-# Queueing/Scheduling
-#
-CONFIG_NET_SCH_CBQ=m
-CONFIG_NET_SCH_HTB=m
-CONFIG_NET_SCH_HFSC=m
-CONFIG_NET_SCH_PRIO=m
-CONFIG_NET_SCH_MULTIQ=m
-CONFIG_NET_SCH_RED=m
-# CONFIG_NET_SCH_SFB is not set
-# CONFIG_NET_SCH_SFQ is not set
-# CONFIG_NET_SCH_TEQL is not set
-# CONFIG_NET_SCH_TBF is not set
-# CONFIG_NET_SCH_GRED is not set
-# CONFIG_NET_SCH_DSMARK is not set
-# CONFIG_NET_SCH_NETEM is not set
-# CONFIG_NET_SCH_DRR is not set
-# CONFIG_NET_SCH_MQPRIO is not set
-# CONFIG_NET_SCH_CHOKE is not set
-# CONFIG_NET_SCH_QFQ is not set
-
-#
-# Classification
-#
-# CONFIG_NET_CLS_BASIC is not set
-# CONFIG_NET_CLS_TCINDEX is not set
-# CONFIG_NET_CLS_ROUTE4 is not set
-# CONFIG_NET_CLS_FW is not set
-# CONFIG_NET_CLS_U32 is not set
-# CONFIG_NET_CLS_RSVP is not set
-# CONFIG_NET_CLS_RSVP6 is not set
-# CONFIG_NET_CLS_FLOW is not set
-# CONFIG_NET_CLS_CGROUP is not set
-# CONFIG_NET_EMATCH is not set
-# CONFIG_NET_CLS_ACT is not set
-CONFIG_NET_SCH_FIFO=y
-# CONFIG_DCB is not set
-CONFIG_DNS_RESOLVER=y
-# CONFIG_BATMAN_ADV is not set
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_NET_DROP_MONITOR is not set
-# CONFIG_HAMRADIO is not set
-CONFIG_CAN=y
-CONFIG_CAN_RAW=y
-CONFIG_CAN_BCM=m
-CONFIG_CAN_GW=m
-
-#
-# CAN Device Drivers
-#
-CONFIG_CAN_VCAN=m
-CONFIG_CAN_SLCAN=m
-CONFIG_CAN_DEV=y
-CONFIG_CAN_CALC_BITTIMING=y
-CONFIG_CAN_TI_HECC=m
-CONFIG_CAN_MCP251X=y
-# CONFIG_CAN_SJA1000 is not set
-# CONFIG_CAN_C_CAN is not set
-CONFIG_CAN_D_CAN=y
-CONFIG_CAN_D_CAN_PLATFORM=y
-
-#
-# CAN USB interfaces
-#
-CONFIG_CAN_EMS_USB=m
-CONFIG_CAN_ESD_USB2=m
-# CONFIG_CAN_SOFTING is not set
-CONFIG_CAN_DEBUG_DEVICES=y
-CONFIG_IRDA=m
-
-#
-# IrDA protocols
-#
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-# CONFIG_IRDA_ULTRA is not set
-
-#
-# IrDA options
-#
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-# CONFIG_IRDA_FAST_RR is not set
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-CONFIG_IRTTY_SIR=m
-
-#
-# Dongle support
-#
-# CONFIG_DONGLE is not set
-CONFIG_KINGSUN_DONGLE=m
-CONFIG_KSDAZZLE_DONGLE=m
-CONFIG_KS959_DONGLE=m
-
-#
-# FIR device drivers
-#
-CONFIG_USB_IRDA=m
-CONFIG_SIGMATEL_FIR=m
-CONFIG_MCS_FIR=m
-CONFIG_BT=m
-CONFIG_BT_L2CAP=y
-CONFIG_BT_SCO=y
-CONFIG_BT_RFCOMM=m
-CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=m
-CONFIG_BT_BNEP_MC_FILTER=y
-CONFIG_BT_BNEP_PROTO_FILTER=y
-CONFIG_BT_HIDP=m
-
-#
-# Bluetooth device drivers
-#
-CONFIG_BT_HCIBTUSB=m
-CONFIG_BT_HCIBTSDIO=m
-CONFIG_BT_HCIUART=m
-CONFIG_BT_HCIUART_H4=y
-CONFIG_BT_HCIUART_BCSP=y
-CONFIG_BT_HCIUART_ATH3K=y
-CONFIG_BT_HCIUART_LL=y
-CONFIG_BT_HCIBCM203X=m
-CONFIG_BT_HCIBPA10X=m
-CONFIG_BT_HCIBFUSB=m
-# CONFIG_BT_HCIVHCI is not set
-# CONFIG_BT_MRVL is not set
-# CONFIG_BT_ATH3K is not set
-# CONFIG_AF_RXRPC is not set
-CONFIG_FIB_RULES=y
-CONFIG_WIRELESS=y
-CONFIG_WIRELESS_EXT=y
-CONFIG_WEXT_CORE=y
-CONFIG_WEXT_PROC=y
-CONFIG_WEXT_SPY=y
-CONFIG_WEXT_PRIV=y
-CONFIG_CFG80211=m
-# CONFIG_NL80211_TESTMODE is not set
-# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set
-# CONFIG_CFG80211_REG_DEBUG is not set
-CONFIG_CFG80211_DEFAULT_PS=y
-# CONFIG_CFG80211_DEBUGFS is not set
-# CONFIG_CFG80211_INTERNAL_REGDB is not set
-CONFIG_CFG80211_WEXT=y
-CONFIG_WIRELESS_EXT_SYSFS=y
-CONFIG_LIB80211=m
-CONFIG_LIB80211_CRYPT_WEP=m
-CONFIG_LIB80211_CRYPT_CCMP=m
-CONFIG_LIB80211_CRYPT_TKIP=m
-# CONFIG_LIB80211_DEBUG is not set
-CONFIG_MAC80211=m
-CONFIG_MAC80211_HAS_RC=y
-CONFIG_MAC80211_RC_PID=y
-CONFIG_MAC80211_RC_MINSTREL=y
-CONFIG_MAC80211_RC_MINSTREL_HT=y
-CONFIG_MAC80211_RC_DEFAULT_PID=y
-# CONFIG_MAC80211_RC_DEFAULT_MINSTREL is not set
-CONFIG_MAC80211_RC_DEFAULT="pid"
-# CONFIG_MAC80211_MESH is not set
-CONFIG_MAC80211_LEDS=y
-# CONFIG_MAC80211_DEBUGFS is not set
-# CONFIG_MAC80211_DEBUG_MENU is not set
-CONFIG_WIMAX=m
-CONFIG_WIMAX_DEBUG_LEVEL=8
-CONFIG_RFKILL=m
-CONFIG_RFKILL_LEDS=y
-CONFIG_RFKILL_INPUT=y
-CONFIG_RFKILL_REGULATOR=m
-CONFIG_RFKILL_GPIO=m
-# CONFIG_NET_9P is not set
-# CONFIG_CAIF is not set
-CONFIG_CEPH_LIB=m
-# CONFIG_CEPH_LIB_PRETTYDEBUG is not set
-CONFIG_CEPH_LIB_USE_DNS_RESOLVER=y
-CONFIG_NFC=m
-CONFIG_NFC_NCI=m
-
-#
-# Near Field Communication (NFC) devices
-#
-CONFIG_PN544_NFC=m
-CONFIG_NFC_PN533=m
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_UEVENT_HELPER_PATH=""
-CONFIG_DEVTMPFS=y
-CONFIG_DEVTMPFS_MOUNT=y
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
-CONFIG_FIRMWARE_IN_KERNEL=y
-CONFIG_EXTRA_FIRMWARE="am335x-pm-firmware.bin"
-CONFIG_EXTRA_FIRMWARE_DIR="firmware"
-# CONFIG_DEBUG_DRIVER is not set
-# CONFIG_DEBUG_DEVRES is not set
-# CONFIG_SYS_HYPERVISOR is not set
-CONFIG_REGMAP=y
-CONFIG_REGMAP_I2C=y
-CONFIG_REGMAP_SPI=y
-
-#
-# CBUS support
-#
-# CONFIG_CBUS is not set
-CONFIG_CONNECTOR=y
-CONFIG_PROC_EVENTS=y
-# CONFIG_MTD is not set
-CONFIG_DTC=y
-CONFIG_OF=y
-
-#
-# Device Tree and Open Firmware support
-#
-CONFIG_PROC_DEVICETREE=y
-CONFIG_OF_FLATTREE=y
-CONFIG_OF_EARLY_FLATTREE=y
-CONFIG_OF_ADDRESS=y
-CONFIG_OF_IRQ=y
-CONFIG_OF_DEVICE=y
-CONFIG_OF_GPIO=y
-CONFIG_OF_I2C=y
-CONFIG_OF_NET=y
-CONFIG_OF_SPI=y
-CONFIG_OF_MDIO=y
-CONFIG_PARPORT=m
-# CONFIG_PARPORT_PC is not set
-# CONFIG_PARPORT_GSC is not set
-# CONFIG_PARPORT_AX88796 is not set
-CONFIG_PARPORT_1284=y
-CONFIG_BLK_DEV=y
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=y
-CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
-CONFIG_BLK_DEV_CRYPTOLOOP=m
-# CONFIG_BLK_DEV_DRBD is not set
-CONFIG_BLK_DEV_NBD=m
-# CONFIG_BLK_DEV_UB is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=2
-CONFIG_BLK_DEV_RAM_SIZE=65536
-# CONFIG_BLK_DEV_XIP is not set
-CONFIG_CDROM_PKTCDVD=m
-CONFIG_CDROM_PKTCDVD_BUFFERS=8
-CONFIG_CDROM_PKTCDVD_WCACHE=y
-CONFIG_ATA_OVER_ETH=m
-# CONFIG_MG_DISK is not set
-# CONFIG_VIRTIO_BLK is not set
-# CONFIG_BLK_DEV_RBD is not set
-# CONFIG_SENSORS_LIS3LV02D is not set
-CONFIG_MISC_DEVICES=y
-# CONFIG_AD525X_DPOT is not set
-# CONFIG_ATMEL_PWM is not set
-# CONFIG_ICS932S401 is not set
-# CONFIG_ENCLOSURE_SERVICES is not set
-# CONFIG_APDS9802ALS is not set
-# CONFIG_ISL29003 is not set
-# CONFIG_ISL29020 is not set
-CONFIG_SENSORS_TSL2550=m
-# CONFIG_SENSORS_BH1780 is not set
-# CONFIG_SENSORS_BH1770 is not set
-# CONFIG_SENSORS_APDS990X is not set
-# CONFIG_HMC6352 is not set
-# CONFIG_DS1682 is not set
-# CONFIG_TI_DAC7512 is not set
-CONFIG_BMP085=m
-# CONFIG_USB_SWITCH_FSA9480 is not set
-# CONFIG_C2PORT is not set
-
-#
-# EEPROM support
-#
-CONFIG_EEPROM_AT24=y
-# CONFIG_EEPROM_AT25 is not set
-# CONFIG_EEPROM_LEGACY is not set
-# CONFIG_EEPROM_MAX6875 is not set
-CONFIG_EEPROM_93CX6=m
-# CONFIG_EEPROM_93XX46 is not set
-CONFIG_IWMC3200TOP=m
-# CONFIG_IWMC3200TOP_DEBUG is not set
-# CONFIG_IWMC3200TOP_DEBUGFS is not set
-
-#
-# Texas Instruments shared transport line discipline
-#
-# CONFIG_TI_ST is not set
-# CONFIG_SENSORS_LIS3_SPI is not set
-# CONFIG_SENSORS_LIS3_I2C is not set
-
-#
-# Altera FPGA firmware download module
-#
-# CONFIG_ALTERA_STAPL is not set
-
-#
-# SCSI device support
-#
-CONFIG_SCSI_MOD=y
-# CONFIG_RAID_ATTRS is not set
-CONFIG_SCSI=y
-CONFIG_SCSI_DMA=y
-# CONFIG_SCSI_TGT is not set
-# CONFIG_SCSI_NETLINK is not set
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=y
-# CONFIG_CHR_DEV_ST is not set
-# CONFIG_CHR_DEV_OSST is not set
-CONFIG_BLK_DEV_SR=y
-CONFIG_BLK_DEV_SR_VENDOR=y
-CONFIG_CHR_DEV_SG=y
-CONFIG_CHR_DEV_SCH=y
-CONFIG_SCSI_MULTI_LUN=y
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-CONFIG_SCSI_SCAN_ASYNC=y
-CONFIG_SCSI_WAIT_SCAN=m
-
-#
-# SCSI Transports
-#
-# CONFIG_SCSI_SPI_ATTRS is not set
-# CONFIG_SCSI_FC_ATTRS is not set
-# CONFIG_SCSI_ISCSI_ATTRS is not set
-# CONFIG_SCSI_SAS_ATTRS is not set
-# CONFIG_SCSI_SAS_LIBSAS is not set
-# CONFIG_SCSI_SRP_ATTRS is not set
-CONFIG_SCSI_LOWLEVEL=y
-# CONFIG_ISCSI_TCP is not set
-# CONFIG_ISCSI_BOOT_SYSFS is not set
-# CONFIG_LIBFC is not set
-# CONFIG_LIBFCOE is not set
-# CONFIG_SCSI_DEBUG is not set
-# CONFIG_SCSI_DH is not set
-# CONFIG_SCSI_OSD_INITIATOR is not set
-# CONFIG_ATA is not set
-CONFIG_MD=y
-CONFIG_BLK_DEV_MD=m
-CONFIG_MD_LINEAR=m
-CONFIG_MD_RAID0=m
-CONFIG_MD_RAID1=m
-CONFIG_MD_RAID10=m
-CONFIG_MD_RAID456=m
-CONFIG_MD_MULTIPATH=m
-CONFIG_MD_FAULTY=m
-CONFIG_BLK_DEV_DM=m
-# CONFIG_DM_DEBUG is not set
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-# CONFIG_DM_THIN_PROVISIONING is not set
-CONFIG_DM_MIRROR=m
-CONFIG_DM_RAID=m
-CONFIG_DM_LOG_USERSPACE=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_QL=m
-CONFIG_DM_MULTIPATH_ST=m
-# CONFIG_DM_DELAY is not set
-CONFIG_DM_UEVENT=y
-CONFIG_DM_FLAKEY=m
-# CONFIG_TARGET_CORE is not set
-CONFIG_NETDEVICES=y
-CONFIG_NET_CORE=y
-CONFIG_BONDING=m
-CONFIG_DUMMY=m
-CONFIG_EQUALIZER=m
-CONFIG_MII=y
-CONFIG_MACVLAN=m
-CONFIG_MACVTAP=m
-CONFIG_NETCONSOLE=m
-CONFIG_NETPOLL=y
-# CONFIG_NETPOLL_TRAP is not set
-CONFIG_NET_POLL_CONTROLLER=y
-CONFIG_TUN=m
-# CONFIG_VETH is not set
-# CONFIG_VIRTIO_NET is not set
-
-#
-# CAIF transport drivers
-#
-CONFIG_ETHERNET=y
-CONFIG_NET_VENDOR_BROADCOM=y
-# CONFIG_B44 is not set
-CONFIG_NET_VENDOR_CHELSIO=y
-# CONFIG_DM9000 is not set
-# CONFIG_DNET is not set
-CONFIG_NET_VENDOR_DLINK=y
-# CONFIG_DE600 is not set
-# CONFIG_DE620 is not set
-# CONFIG_NET_VENDOR_FARADAY is not set
-# CONFIG_NET_VENDOR_INTEL is not set
-# CONFIG_NET_VENDOR_MARVELL is not set
-# CONFIG_NET_VENDOR_MICREL is not set
-# CONFIG_NET_VENDOR_MICROCHIP is not set
-CONFIG_NET_VENDOR_NATSEMI=y
-CONFIG_NET_VENDOR_8390=y
-# CONFIG_AX88796 is not set
-# CONFIG_ETHOC is not set
-# CONFIG_NET_VENDOR_SEEQ is not set
-CONFIG_NET_VENDOR_SMSC=y
-CONFIG_SMC91X=y
-# CONFIG_SMC911X is not set
-CONFIG_SMSC911X=y
-# CONFIG_SMSC911X_ARCH_HOOKS is not set
-# CONFIG_NET_VENDOR_STMICRO is not set
-CONFIG_NET_VENDOR_TI=y
-# CONFIG_TI_DAVINCI_EMAC is not set
-CONFIG_TI_DAVINCI_MDIO=y
-CONFIG_TI_DAVINCI_CPDMA=y
-CONFIG_TI_CPSW=y
-# CONFIG_TLK110_WORKAROUND is not set
-CONFIG_PHYLIB=y
-
-#
-# MII PHY device drivers
-#
-# CONFIG_MARVELL_PHY is not set
-# CONFIG_DAVICOM_PHY is not set
-# CONFIG_QSEMI_PHY is not set
-# CONFIG_LXT_PHY is not set
-# CONFIG_CICADA_PHY is not set
-# CONFIG_VITESSE_PHY is not set
-CONFIG_SMSC_PHY=y
-# CONFIG_BROADCOM_PHY is not set
-# CONFIG_ICPLUS_PHY is not set
-# CONFIG_REALTEK_PHY is not set
-# CONFIG_NATIONAL_PHY is not set
-# CONFIG_STE10XP is not set
-# CONFIG_LSI_ET1011C_PHY is not set
-# CONFIG_MICREL_PHY is not set
-# CONFIG_FIXED_PHY is not set
-# CONFIG_MDIO_BITBANG is not set
-# CONFIG_PLIP is not set
-CONFIG_PPP=m
-CONFIG_PPP_BSDCOMP=m
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_FILTER=y
-CONFIG_PPP_MPPE=m
-CONFIG_PPP_MULTILINK=y
-CONFIG_PPPOE=m
-CONFIG_PPTP=m
-CONFIG_PPP_ASYNC=m
-CONFIG_PPP_SYNC_TTY=m
-CONFIG_SLIP=m
-CONFIG_SLHC=m
-# CONFIG_SLIP_COMPRESSED is not set
-CONFIG_SLIP_SMART=y
-# CONFIG_SLIP_MODE_SLIP6 is not set
-
-#
-# USB Network Adapters
-#
-CONFIG_USB_CATC=m
-CONFIG_USB_KAWETH=m
-CONFIG_USB_PEGASUS=m
-CONFIG_USB_RTL8150=m
-CONFIG_USB_USBNET=m
-CONFIG_USB_NET_AX8817X=m
-CONFIG_USB_NET_CDCETHER=m
-# CONFIG_USB_NET_CDC_EEM is not set
-CONFIG_USB_NET_CDC_NCM=m
-CONFIG_USB_NET_DM9601=m
-CONFIG_USB_NET_SMSC75XX=m
-CONFIG_USB_NET_SMSC95XX=m
-CONFIG_USB_NET_GL620A=m
-CONFIG_USB_NET_NET1080=m
-CONFIG_USB_NET_PLUSB=m
-CONFIG_USB_NET_MCS7830=m
-CONFIG_USB_NET_RNDIS_HOST=m
-CONFIG_USB_NET_CDC_SUBSET=m
-CONFIG_USB_ALI_M5632=y
-CONFIG_USB_AN2720=y
-CONFIG_USB_BELKIN=y
-CONFIG_USB_ARMLINUX=y
-CONFIG_USB_EPSON2888=y
-CONFIG_USB_KC2190=y
-CONFIG_USB_NET_ZAURUS=m
-CONFIG_USB_NET_CX82310_ETH=m
-CONFIG_USB_NET_KALMIA=m
-CONFIG_USB_HSO=m
-CONFIG_USB_NET_INT51X1=m
-CONFIG_USB_IPHETH=m
-CONFIG_USB_SIERRA_NET=m
-CONFIG_USB_VL600=m
-CONFIG_WLAN=y
-# CONFIG_LIBERTAS_THINFIRM is not set
-CONFIG_AT76C50X_USB=m
-CONFIG_USB_ZD1201=m
-CONFIG_USB_NET_RNDIS_WLAN=m
-CONFIG_RTL8187=m
-CONFIG_RTL8187_LEDS=y
-# CONFIG_MAC80211_HWSIM is not set
-CONFIG_ATH_COMMON=m
-# CONFIG_ATH_DEBUG is not set
-# CONFIG_ATH9K is not set
-# CONFIG_ATH9K_HTC is not set
-CONFIG_CARL9170=m
-CONFIG_CARL9170_LEDS=y
-CONFIG_CARL9170_WPC=y
-# CONFIG_CARL9170_HWRNG is not set
-CONFIG_ATH6KL=m
-# CONFIG_ATH6KL_DEBUG is not set
-CONFIG_B43=m
-CONFIG_B43_SSB=y
-# CONFIG_B43_SDIO is not set
-CONFIG_B43_PIO=y
-CONFIG_B43_PHY_N=y
-CONFIG_B43_PHY_LP=y
-CONFIG_B43_PHY_HT=y
-CONFIG_B43_LEDS=y
-CONFIG_B43_HWRNG=y
-# CONFIG_B43_DEBUG is not set
-# CONFIG_B43LEGACY is not set
-CONFIG_BRCMUTIL=m
-CONFIG_BRCMFMAC=m
-# CONFIG_BRCMDBG is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
-# CONFIG_IWM is not set
-CONFIG_LIBERTAS=m
-CONFIG_LIBERTAS_USB=m
-CONFIG_LIBERTAS_SDIO=m
-# CONFIG_LIBERTAS_SPI is not set
-CONFIG_LIBERTAS_DEBUG=y
-# CONFIG_LIBERTAS_MESH is not set
-CONFIG_P54_COMMON=m
-CONFIG_P54_USB=m
-CONFIG_P54_SPI=m
-CONFIG_P54_SPI_DEFAULT_EEPROM=y
-CONFIG_P54_LEDS=y
-CONFIG_RT2X00=m
-CONFIG_RT2500USB=m
-CONFIG_RT73USB=m
-CONFIG_RT2800USB=m
-CONFIG_RT2800USB_RT33XX=y
-CONFIG_RT2800USB_RT35XX=y
-CONFIG_RT2800USB_RT53XX=y
-CONFIG_RT2800USB_UNKNOWN=y
-CONFIG_RT2800_LIB=m
-CONFIG_RT2X00_LIB_USB=m
-CONFIG_RT2X00_LIB=m
-CONFIG_RT2X00_LIB_FIRMWARE=y
-CONFIG_RT2X00_LIB_CRYPTO=y
-CONFIG_RT2X00_LIB_LEDS=y
-# CONFIG_RT2X00_DEBUG is not set
-CONFIG_RTL8192CU=m
-CONFIG_RTLWIFI=m
-CONFIG_RTL8192C_COMMON=m
-# CONFIG_WL1251 is not set
-CONFIG_WL12XX_MENU=m
-CONFIG_WL12XX=m
-CONFIG_WL12XX_SPI=m
-CONFIG_WL12XX_SDIO=m
-# CONFIG_WL12XX_SDIO_TEST is not set
-CONFIG_WL12XX_PLATFORM_DATA=y
-CONFIG_ZD1211RW=m
-# CONFIG_ZD1211RW_DEBUG is not set
-# CONFIG_MWIFIEX is not set
-
-#
-# WiMAX Wireless Broadband devices
-#
-CONFIG_WIMAX_I2400M=m
-CONFIG_WIMAX_I2400M_USB=m
-CONFIG_WIMAX_I2400M_SDIO=m
-CONFIG_WIMAX_IWMC3200_SDIO=y
-CONFIG_WIMAX_I2400M_DEBUG_LEVEL=8
-# CONFIG_WAN is not set
-# CONFIG_ISDN is not set
-# CONFIG_PHONE is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-CONFIG_INPUT_FF_MEMLESS=m
-CONFIG_INPUT_POLLDEV=m
-# CONFIG_INPUT_SPARSEKMAP is not set
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=y
-CONFIG_INPUT_MOUSEDEV_PSAUX=y
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
-CONFIG_INPUT_JOYDEV=m
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-# CONFIG_KEYBOARD_ADP5588 is not set
-# CONFIG_KEYBOARD_ADP5589 is not set
-CONFIG_KEYBOARD_ATKBD=y
-# CONFIG_KEYBOARD_QT1070 is not set
-# CONFIG_KEYBOARD_QT2160 is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-CONFIG_KEYBOARD_GPIO=y
-# CONFIG_KEYBOARD_TCA6416 is not set
-# CONFIG_KEYBOARD_MATRIX is not set
-# CONFIG_KEYBOARD_LM8323 is not set
-# CONFIG_KEYBOARD_MAX7359 is not set
-# CONFIG_KEYBOARD_MCS is not set
-# CONFIG_KEYBOARD_MPR121 is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-# CONFIG_KEYBOARD_OPENCORES is not set
-# CONFIG_KEYBOARD_STOWAWAY is not set
-# CONFIG_KEYBOARD_SUNKBD is not set
-CONFIG_KEYBOARD_TWL4030=y
-# CONFIG_KEYBOARD_XTKBD is not set
-CONFIG_INPUT_MOUSE=y
-CONFIG_MOUSE_PS2=y
-CONFIG_MOUSE_PS2_ALPS=y
-CONFIG_MOUSE_PS2_LOGIPS2PP=y
-CONFIG_MOUSE_PS2_SYNAPTICS=y
-CONFIG_MOUSE_PS2_TRACKPOINT=y
-# CONFIG_MOUSE_PS2_ELANTECH is not set
-# CONFIG_MOUSE_PS2_SENTELIC is not set
-# CONFIG_MOUSE_PS2_TOUCHKIT is not set
-# CONFIG_MOUSE_SERIAL is not set
-# CONFIG_MOUSE_APPLETOUCH is not set
-# CONFIG_MOUSE_BCM5974 is not set
-# CONFIG_MOUSE_VSXXXAA is not set
-# CONFIG_MOUSE_GPIO is not set
-# CONFIG_MOUSE_SYNAPTICS_I2C is not set
-# CONFIG_INPUT_JOYSTICK is not set
-# CONFIG_INPUT_TABLET is not set
-CONFIG_INPUT_TOUCHSCREEN=y
-CONFIG_TOUCHSCREEN_ADS7846=y
-# CONFIG_TOUCHSCREEN_AD7877 is not set
-# CONFIG_TOUCHSCREEN_AD7879 is not set
-# CONFIG_TOUCHSCREEN_ATMEL_MXT is not set
-# CONFIG_TOUCHSCREEN_BU21013 is not set
-# CONFIG_TOUCHSCREEN_CY8CTMG110 is not set
-# CONFIG_TOUCHSCREEN_DYNAPRO is not set
-# CONFIG_TOUCHSCREEN_HAMPSHIRE is not set
-# CONFIG_TOUCHSCREEN_EETI is not set
-# CONFIG_TOUCHSCREEN_FUJITSU is not set
-# CONFIG_TOUCHSCREEN_GUNZE is not set
-# CONFIG_TOUCHSCREEN_ELO is not set
-# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set
-# CONFIG_TOUCHSCREEN_MAX11801 is not set
-# CONFIG_TOUCHSCREEN_MCS5000 is not set
-# CONFIG_TOUCHSCREEN_MTOUCH is not set
-# CONFIG_TOUCHSCREEN_INEXIO is not set
-# CONFIG_TOUCHSCREEN_MK712 is not set
-# CONFIG_TOUCHSCREEN_PENMOUNT is not set
-# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
-# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
-CONFIG_TOUCHSCREEN_TI_TSCADC=y
-CONFIG_TOUCHSCREEN_USB_COMPOSITE=m
-CONFIG_TOUCHSCREEN_USB_EGALAX=y
-CONFIG_TOUCHSCREEN_USB_PANJIT=y
-CONFIG_TOUCHSCREEN_USB_3M=y
-CONFIG_TOUCHSCREEN_USB_ITM=y
-CONFIG_TOUCHSCREEN_USB_ETURBO=y
-CONFIG_TOUCHSCREEN_USB_GUNZE=y
-CONFIG_TOUCHSCREEN_USB_DMC_TSC10=y
-CONFIG_TOUCHSCREEN_USB_IRTOUCH=y
-CONFIG_TOUCHSCREEN_USB_IDEALTEK=y
-CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH=y
-CONFIG_TOUCHSCREEN_USB_GOTOP=y
-CONFIG_TOUCHSCREEN_USB_JASTEC=y
-CONFIG_TOUCHSCREEN_USB_E2I=y
-CONFIG_TOUCHSCREEN_USB_ZYTRONIC=y
-CONFIG_TOUCHSCREEN_USB_ETT_TC45USB=y
-CONFIG_TOUCHSCREEN_USB_NEXIO=y
-# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
-CONFIG_TOUCHSCREEN_TSC_SERIO=m
-CONFIG_TOUCHSCREEN_TSC2005=m
-CONFIG_TOUCHSCREEN_TSC2007=m
-# CONFIG_TOUCHSCREEN_W90X900 is not set
-# CONFIG_TOUCHSCREEN_ST1232 is not set
-# CONFIG_TOUCHSCREEN_TPS6507X is not set
-CONFIG_INPUT_MISC=y
-CONFIG_INPUT_AD714X=m
-CONFIG_INPUT_AD714X_I2C=m
-CONFIG_INPUT_AD714X_SPI=m
-CONFIG_INPUT_BMA150=m
-CONFIG_INPUT_MMA8450=m
-CONFIG_INPUT_MPU3050=m
-CONFIG_INPUT_ATI_REMOTE2=m
-CONFIG_INPUT_KEYSPAN_REMOTE=m
-CONFIG_INPUT_KXTJ9=m
-# CONFIG_INPUT_KXTJ9_POLLED_MODE is not set
-CONFIG_INPUT_POWERMATE=m
-CONFIG_INPUT_YEALINK=m
-CONFIG_INPUT_CM109=m
-CONFIG_INPUT_TWL4030_PWRBUTTON=y
-CONFIG_INPUT_TWL4030_VIBRA=m
-CONFIG_INPUT_TWL6040_VIBRA=m
-CONFIG_INPUT_UINPUT=m
-CONFIG_INPUT_PCF8574=m
-# CONFIG_INPUT_PWM_BEEPER is not set
-CONFIG_INPUT_GPIO_ROTARY_ENCODER=m
-CONFIG_INPUT_ADXL34X=m
-CONFIG_INPUT_ADXL34X_I2C=m
-CONFIG_INPUT_ADXL34X_SPI=m
-CONFIG_INPUT_CMA3000=m
-CONFIG_INPUT_CMA3000_I2C=m
-
-#
-# Hardware I/O ports
-#
-CONFIG_SERIO=y
-CONFIG_SERIO_SERPORT=y
-# CONFIG_SERIO_PARKBD is not set
-CONFIG_SERIO_LIBPS2=y
-# CONFIG_SERIO_RAW is not set
-# CONFIG_SERIO_ALTERA_PS2 is not set
-# CONFIG_SERIO_PS2MULT is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_CONSOLE_TRANSLATIONS=y
-CONFIG_VT_CONSOLE=y
-CONFIG_VT_CONSOLE_SLEEP=y
-CONFIG_HW_CONSOLE=y
-CONFIG_VT_HW_CONSOLE_BINDING=y
-CONFIG_UNIX98_PTYS=y
-# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
-# CONFIG_LEGACY_PTYS is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-# CONFIG_N_GSM is not set
-# CONFIG_TRACE_SINK is not set
-CONFIG_DEVKMEM=y
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=y
-CONFIG_SERIAL_8250_CONSOLE=y
-CONFIG_SERIAL_8250_NR_UARTS=32
-CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-CONFIG_SERIAL_8250_EXTENDED=y
-CONFIG_SERIAL_8250_MANY_PORTS=y
-CONFIG_SERIAL_8250_SHARE_IRQ=y
-CONFIG_SERIAL_8250_DETECT_IRQ=y
-CONFIG_SERIAL_8250_RSA=y
-# CONFIG_SERIAL_8250_DW is not set
-
-#
-# Non-8250 serial port support
-#
-# CONFIG_SERIAL_MAX3100 is not set
-# CONFIG_SERIAL_MAX3107 is not set
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-# CONFIG_SERIAL_OF_PLATFORM is not set
-CONFIG_SERIAL_OMAP=y
-CONFIG_SERIAL_OMAP_CONSOLE=y
-# CONFIG_SERIAL_TIMBERDALE is not set
-# CONFIG_SERIAL_ALTERA_JTAGUART is not set
-# CONFIG_SERIAL_ALTERA_UART is not set
-# CONFIG_SERIAL_IFX6X60 is not set
-# CONFIG_SERIAL_XILINX_PS_UART is not set
-# CONFIG_TTY_PRINTK is not set
-CONFIG_PRINTER=m
-# CONFIG_LP_CONSOLE is not set
-# CONFIG_PPDEV is not set
-# CONFIG_HVC_DCC is not set
-# CONFIG_VIRTIO_CONSOLE is not set
-# CONFIG_IPMI_HANDLER is not set
-CONFIG_HW_RANDOM=y
-# CONFIG_HW_RANDOM_TIMERIOMEM is not set
-# CONFIG_HW_RANDOM_VIRTIO is not set
-# CONFIG_NVRAM is not set
-# CONFIG_R3964 is not set
-CONFIG_RAW_DRIVER=m
-CONFIG_MAX_RAW_DEVS=256
-# CONFIG_TCG_TPM is not set
-# CONFIG_RAMOOPS is not set
-CONFIG_I2C=y
-CONFIG_I2C_BOARDINFO=y
-CONFIG_I2C_COMPAT=y
-CONFIG_I2C_CHARDEV=y
-# CONFIG_I2C_MUX is not set
-CONFIG_I2C_HELPER_AUTO=y
-CONFIG_I2C_ALGOBIT=m
-
-#
-# I2C Hardware Bus support
-#
-
-#
-# I2C system bus drivers (mostly embedded / system-on-chip)
-#
-# CONFIG_I2C_DESIGNWARE_PLATFORM is not set
-# CONFIG_I2C_GPIO is not set
-# CONFIG_I2C_OCORES is not set
-CONFIG_I2C_OMAP=y
-# CONFIG_I2C_PCA_PLATFORM is not set
-# CONFIG_I2C_PXA_PCI is not set
-# CONFIG_I2C_SIMTEC is not set
-# CONFIG_I2C_XILINX is not set
-
-#
-# External I2C/SMBus adapter drivers
-#
-# CONFIG_I2C_DIOLAN_U2C is not set
-# CONFIG_I2C_PARPORT is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_TAOS_EVM is not set
-# CONFIG_I2C_TINY_USB is not set
-
-#
-# Other I2C/SMBus bus drivers
-#
-# CONFIG_I2C_STUB is not set
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-CONFIG_SPI=y
-# CONFIG_SPI_DEBUG is not set
-CONFIG_SPI_MASTER=y
-
-#
-# SPI Master Controller Drivers
-#
-# CONFIG_SPI_ALTERA is not set
-CONFIG_SPI_BITBANG=m
-# CONFIG_SPI_BUTTERFLY is not set
-CONFIG_SPI_GPIO=m
-# CONFIG_SPI_LM70_LLP is not set
-# CONFIG_SPI_OC_TINY is not set
-CONFIG_SPI_OMAP24XX=y
-# CONFIG_SPI_PXA2XX_PCI is not set
-# CONFIG_SPI_XILINX is not set
-# CONFIG_SPI_DESIGNWARE is not set
-
-#
-# SPI Protocol Masters
-#
-CONFIG_SPI_SPIDEV=m
-# CONFIG_SPI_TLE62X0 is not set
-
-#
-# PPS support
-#
-# CONFIG_PPS is not set
-
-#
-# PPS generators support
-#
-
-#
-# PTP clock support
-#
-
-#
-# Enable Device Drivers -> PPS to see the PTP clock options.
-#
-CONFIG_ARCH_REQUIRE_GPIOLIB=y
-CONFIG_GPIOLIB=y
-CONFIG_DEBUG_GPIO=y
-CONFIG_GPIO_SYSFS=y
-
-#
-# Memory mapped GPIO drivers:
-#
-# CONFIG_GPIO_GENERIC_PLATFORM is not set
-# CONFIG_GPIO_IT8761E is not set
-
-#
-# I2C GPIO expanders:
-#
-# CONFIG_GPIO_MAX7300 is not set
-# CONFIG_GPIO_MAX732X is not set
-# CONFIG_GPIO_PCF857X is not set
-# CONFIG_GPIO_SX150X is not set
-CONFIG_GPIO_TWL4030=y
-# CONFIG_GPIO_ADP5588 is not set
-
-#
-# PCI GPIO expanders:
-#
-
-#
-# SPI GPIO expanders:
-#
-# CONFIG_GPIO_MAX7301 is not set
-# CONFIG_GPIO_MCP23S08 is not set
-# CONFIG_GPIO_MC33880 is not set
-# CONFIG_GPIO_74X164 is not set
-
-#
-# AC97 GPIO expanders:
-#
-
-#
-# MODULbus GPIO expanders:
-#
-CONFIG_GENERIC_PWM=y
-CONFIG_DAVINCI_EHRPWM=y
-CONFIG_ECAP_PWM=y
-CONFIG_W1=y
-CONFIG_W1_CON=y
-
-#
-# 1-wire Bus Masters
-#
-CONFIG_W1_MASTER_DS2490=m
-CONFIG_W1_MASTER_DS2482=m
-CONFIG_W1_MASTER_DS1WM=m
-CONFIG_W1_MASTER_GPIO=y
-# CONFIG_HDQ_MASTER_OMAP is not set
-
-#
-# 1-wire Slaves
-#
-CONFIG_W1_SLAVE_THERM=y
-CONFIG_W1_SLAVE_SMEM=m
-CONFIG_W1_SLAVE_DS2408=m
-CONFIG_W1_SLAVE_DS2423=m
-CONFIG_W1_SLAVE_DS2431=m
-CONFIG_W1_SLAVE_DS2433=m
-CONFIG_W1_SLAVE_DS2433_CRC=y
-CONFIG_W1_SLAVE_DS2760=m
-CONFIG_W1_SLAVE_DS2780=m
-CONFIG_W1_SLAVE_BQ27000=m
-CONFIG_POWER_SUPPLY=y
-# CONFIG_POWER_SUPPLY_DEBUG is not set
-# CONFIG_PDA_POWER is not set
-CONFIG_TEST_POWER=m
-# CONFIG_BATTERY_DS2760 is not set
-# CONFIG_BATTERY_DS2780 is not set
-# CONFIG_BATTERY_DS2782 is not set
-# CONFIG_BATTERY_BQ20Z75 is not set
-# CONFIG_BATTERY_BQ27x00 is not set
-# CONFIG_BATTERY_MAX17040 is not set
-# CONFIG_BATTERY_MAX17042 is not set
-# CONFIG_CHARGER_ISP1704 is not set
-# CONFIG_CHARGER_MAX8903 is not set
-# CONFIG_CHARGER_TWL4030 is not set
-CONFIG_CHARGER_GPIO=y
-CONFIG_HWMON=y
-CONFIG_HWMON_VID=m
-# CONFIG_HWMON_DEBUG_CHIP is not set
-
-#
-# Native drivers
-#
-CONFIG_SENSORS_AD7314=m
-CONFIG_SENSORS_AD7414=m
-CONFIG_SENSORS_AD7418=m
-CONFIG_SENSORS_ADCXX=m
-CONFIG_SENSORS_ADM1021=m
-CONFIG_SENSORS_ADM1025=m
-CONFIG_SENSORS_ADM1026=m
-CONFIG_SENSORS_ADM1029=m
-CONFIG_SENSORS_ADM1031=m
-CONFIG_SENSORS_ADM9240=m
-CONFIG_SENSORS_ADT7411=m
-CONFIG_SENSORS_ADT7462=m
-CONFIG_SENSORS_ADT7470=m
-CONFIG_SENSORS_ADT7475=m
-CONFIG_SENSORS_ASC7621=m
-CONFIG_SENSORS_ATXP1=m
-CONFIG_SENSORS_DS620=m
-CONFIG_SENSORS_DS1621=m
-CONFIG_SENSORS_F71805F=m
-CONFIG_SENSORS_F71882FG=m
-CONFIG_SENSORS_F75375S=m
-CONFIG_SENSORS_G760A=m
-CONFIG_SENSORS_GL518SM=m
-CONFIG_SENSORS_GL520SM=m
-CONFIG_SENSORS_GPIO_FAN=m
-CONFIG_SENSORS_IT87=m
-CONFIG_SENSORS_JC42=m
-CONFIG_SENSORS_LINEAGE=m
-CONFIG_SENSORS_LM63=m
-CONFIG_SENSORS_LM70=m
-CONFIG_SENSORS_LM73=m
-CONFIG_SENSORS_LM75=m
-CONFIG_SENSORS_LM77=m
-CONFIG_SENSORS_LM78=m
-CONFIG_SENSORS_LM80=m
-CONFIG_SENSORS_LM83=m
-CONFIG_SENSORS_LM85=m
-CONFIG_SENSORS_LM87=m
-CONFIG_SENSORS_LM90=m
-CONFIG_SENSORS_LM92=m
-CONFIG_SENSORS_LM93=m
-CONFIG_SENSORS_LTC4151=m
-CONFIG_SENSORS_LTC4215=m
-CONFIG_SENSORS_LTC4245=m
-CONFIG_SENSORS_LTC4261=m
-CONFIG_SENSORS_LM95241=m
-CONFIG_SENSORS_LM95245=m
-CONFIG_SENSORS_MAX1111=m
-CONFIG_SENSORS_MAX16065=m
-CONFIG_SENSORS_MAX1619=m
-CONFIG_SENSORS_MAX1668=m
-CONFIG_SENSORS_MAX6639=m
-CONFIG_SENSORS_MAX6642=m
-CONFIG_SENSORS_MAX6650=m
-CONFIG_SENSORS_NTC_THERMISTOR=m
-CONFIG_SENSORS_PC87360=m
-CONFIG_SENSORS_PC87427=m
-CONFIG_SENSORS_PCF8591=m
-CONFIG_PMBUS=m
-CONFIG_SENSORS_PMBUS=m
-# CONFIG_SENSORS_ADM1275 is not set
-# CONFIG_SENSORS_LM25066 is not set
-CONFIG_SENSORS_LTC2978=m
-# CONFIG_SENSORS_MAX16064 is not set
-# CONFIG_SENSORS_MAX34440 is not set
-# CONFIG_SENSORS_MAX8688 is not set
-# CONFIG_SENSORS_UCD9000 is not set
-# CONFIG_SENSORS_UCD9200 is not set
-CONFIG_SENSORS_ZL6100=m
-CONFIG_SENSORS_SHT15=m
-CONFIG_SENSORS_SHT21=m
-CONFIG_SENSORS_SMM665=m
-CONFIG_SENSORS_DME1737=m
-CONFIG_SENSORS_EMC1403=m
-CONFIG_SENSORS_EMC2103=m
-CONFIG_SENSORS_EMC6W201=m
-CONFIG_SENSORS_SMSC47M1=m
-CONFIG_SENSORS_SMSC47M192=m
-CONFIG_SENSORS_SMSC47B397=m
-CONFIG_SENSORS_SCH56XX_COMMON=m
-CONFIG_SENSORS_SCH5627=m
-CONFIG_SENSORS_SCH5636=m
-CONFIG_SENSORS_ADS1015=m
-CONFIG_SENSORS_ADS7828=m
-CONFIG_SENSORS_ADS7871=m
-CONFIG_SENSORS_AMC6821=m
-CONFIG_SENSORS_THMC50=m
-CONFIG_SENSORS_TMP102=m
-CONFIG_SENSORS_TMP401=m
-CONFIG_SENSORS_TMP421=m
-CONFIG_SENSORS_VT1211=m
-CONFIG_SENSORS_W83781D=m
-CONFIG_SENSORS_W83791D=m
-CONFIG_SENSORS_W83792D=m
-CONFIG_SENSORS_W83793=m
-CONFIG_SENSORS_W83795=m
-# CONFIG_SENSORS_W83795_FANCTRL is not set
-CONFIG_SENSORS_W83L785TS=m
-CONFIG_SENSORS_W83L786NG=m
-CONFIG_SENSORS_W83627HF=m
-CONFIG_SENSORS_W83627EHF=m
-# CONFIG_THERMAL is not set
-CONFIG_WATCHDOG=y
-CONFIG_WATCHDOG_CORE=y
-CONFIG_WATCHDOG_NOWAYOUT=y
-
-#
-# Watchdog Device Drivers
-#
-# CONFIG_SOFT_WATCHDOG is not set
-# CONFIG_DW_WATCHDOG is not set
-CONFIG_OMAP_WATCHDOG=y
-CONFIG_TWL4030_WATCHDOG=y
-# CONFIG_MAX63XX_WATCHDOG is not set
-
-#
-# USB-based Watchdog Cards
-#
-# CONFIG_USBPCWATCHDOG is not set
-CONFIG_SSB_POSSIBLE=y
-
-#
-# Sonics Silicon Backplane
-#
-CONFIG_SSB=m
-CONFIG_SSB_BLOCKIO=y
-CONFIG_SSB_SDIOHOST_POSSIBLE=y
-# CONFIG_SSB_SDIOHOST is not set
-# CONFIG_SSB_SILENT is not set
-# CONFIG_SSB_DEBUG is not set
-CONFIG_BCMA_POSSIBLE=y
-
-#
-# Broadcom specific AMBA
-#
-# CONFIG_BCMA is not set
-
-#
-# Multifunction device drivers
-#
-CONFIG_MFD_CORE=y
-# CONFIG_MFD_88PM860X is not set
-# CONFIG_MFD_SM501 is not set
-# CONFIG_MFD_ASIC3 is not set
-# CONFIG_HTC_EGPIO is not set
-# CONFIG_HTC_PASIC3 is not set
-# CONFIG_HTC_I2CPLD is not set
-# CONFIG_TPS6105X is not set
-# CONFIG_TPS65010 is not set
-# CONFIG_TPS6507X is not set
-CONFIG_MFD_TPS65217=y
-# CONFIG_MFD_TPS6586X is not set
-# CONFIG_MFD_TPS65910 is not set
-# CONFIG_MFD_TPS65912_I2C is not set
-# CONFIG_MFD_TPS65912_SPI is not set
-CONFIG_TWL4030_CORE=y
-# CONFIG_TWL4030_MADC is not set
-CONFIG_TWL4030_POWER=y
-CONFIG_MFD_TWL4030_AUDIO=y
-# CONFIG_TWL6030_PWM is not set
-CONFIG_TWL6040_CORE=y
-# CONFIG_MFD_STMPE is not set
-# CONFIG_MFD_TC3589X is not set
-# CONFIG_MFD_TMIO is not set
-# CONFIG_MFD_T7L66XB is not set
-# CONFIG_MFD_TC6387XB is not set
-# CONFIG_MFD_TC6393XB is not set
-# CONFIG_PMIC_DA903X is not set
-# CONFIG_PMIC_ADP5520 is not set
-# CONFIG_MFD_MAX8925 is not set
-# CONFIG_MFD_MAX8997 is not set
-# CONFIG_MFD_MAX8998 is not set
-# CONFIG_MFD_WM8400 is not set
-# CONFIG_MFD_WM831X_I2C is not set
-# CONFIG_MFD_WM831X_SPI is not set
-# CONFIG_MFD_WM8350_I2C is not set
-# CONFIG_MFD_WM8994 is not set
-# CONFIG_MFD_PCF50633 is not set
-# CONFIG_MFD_MC13XXX is not set
-# CONFIG_ABX500_CORE is not set
-# CONFIG_EZX_PCAP is not set
-# CONFIG_MFD_WL1273_CORE is not set
-# CONFIG_MFD_AAT2870_CORE is not set
-CONFIG_REGULATOR=y
-# CONFIG_REGULATOR_DEBUG is not set
-CONFIG_REGULATOR_DUMMY=y
-CONFIG_REGULATOR_FIXED_VOLTAGE=y
-# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set
-# CONFIG_REGULATOR_USERSPACE_CONSUMER is not set
-CONFIG_REGULATOR_GPIO=y
-# CONFIG_REGULATOR_BQ24022 is not set
-# CONFIG_REGULATOR_MAX1586 is not set
-# CONFIG_REGULATOR_MAX8649 is not set
-# CONFIG_REGULATOR_MAX8660 is not set
-# CONFIG_REGULATOR_MAX8952 is not set
-# CONFIG_REGULATOR_TWL4030 is not set
-# CONFIG_REGULATOR_LP3971 is not set
-# CONFIG_REGULATOR_LP3972 is not set
-# CONFIG_REGULATOR_TPS65023 is not set
-# CONFIG_REGULATOR_TPS6507X is not set
-CONFIG_REGULATOR_TPS65217=y
-# CONFIG_REGULATOR_ISL6271A is not set
-# CONFIG_REGULATOR_AD5398 is not set
-# CONFIG_REGULATOR_TPS6524X is not set
-CONFIG_MEDIA_SUPPORT=y
-
-#
-# Multimedia core support
-#
-CONFIG_MEDIA_CONTROLLER=y
-CONFIG_VIDEO_DEV=y
-CONFIG_VIDEO_V4L2_COMMON=y
-# CONFIG_VIDEO_V4L2_SUBDEV_API is not set
-CONFIG_DVB_CORE=m
-CONFIG_DVB_NET=y
-CONFIG_VIDEO_MEDIA=m
-
-#
-# Multimedia drivers
-#
-CONFIG_RC_CORE=m
-CONFIG_LIRC=m
-CONFIG_RC_MAP=m
-CONFIG_IR_NEC_DECODER=m
-CONFIG_IR_RC5_DECODER=m
-CONFIG_IR_RC6_DECODER=m
-CONFIG_IR_JVC_DECODER=m
-CONFIG_IR_SONY_DECODER=m
-CONFIG_IR_RC5_SZ_DECODER=m
-CONFIG_IR_MCE_KBD_DECODER=m
-CONFIG_IR_LIRC_CODEC=m
-CONFIG_RC_ATI_REMOTE=m
-CONFIG_IR_IMON=m
-CONFIG_IR_MCEUSB=m
-CONFIG_IR_REDRAT3=m
-CONFIG_IR_STREAMZAP=m
-CONFIG_RC_LOOPBACK=m
-CONFIG_MEDIA_ATTACH=y
-CONFIG_MEDIA_TUNER=m
-CONFIG_MEDIA_TUNER_CUSTOMISE=y
-
-#
-# Customize TV tuners
-#
-CONFIG_MEDIA_TUNER_SIMPLE=m
-CONFIG_MEDIA_TUNER_TDA8290=m
-CONFIG_MEDIA_TUNER_TDA827X=m
-CONFIG_MEDIA_TUNER_TDA18271=m
-CONFIG_MEDIA_TUNER_TDA9887=m
-CONFIG_MEDIA_TUNER_TEA5761=m
-CONFIG_MEDIA_TUNER_TEA5767=m
-CONFIG_MEDIA_TUNER_MT20XX=m
-CONFIG_MEDIA_TUNER_MT2060=m
-CONFIG_MEDIA_TUNER_MT2266=m
-CONFIG_MEDIA_TUNER_MT2131=m
-CONFIG_MEDIA_TUNER_QT1010=m
-CONFIG_MEDIA_TUNER_XC2028=m
-CONFIG_MEDIA_TUNER_XC5000=m
-CONFIG_MEDIA_TUNER_XC4000=m
-CONFIG_MEDIA_TUNER_MXL5005S=m
-CONFIG_MEDIA_TUNER_MXL5007T=m
-CONFIG_MEDIA_TUNER_MC44S803=m
-CONFIG_MEDIA_TUNER_MAX2165=m
-CONFIG_MEDIA_TUNER_TDA18218=m
-CONFIG_MEDIA_TUNER_TDA18212=m
-CONFIG_VIDEO_V4L2=y
-CONFIG_VIDEOBUF_GEN=y
-CONFIG_VIDEOBUF_VMALLOC=m
-CONFIG_VIDEOBUF_DVB=m
-CONFIG_VIDEO_TVEEPROM=m
-CONFIG_VIDEO_TUNER=m
-CONFIG_VIDEOBUF2_CORE=y
-CONFIG_VIDEOBUF2_MEMOPS=y
-CONFIG_VIDEOBUF2_DMA_CONTIG=y
-CONFIG_VIDEOBUF2_VMALLOC=m
-CONFIG_VIDEO_CAPTURE_DRIVERS=y
-# CONFIG_VIDEO_ADV_DEBUG is not set
-# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
-# CONFIG_VIDEO_HELPER_CHIPS_AUTO is not set
-CONFIG_VIDEO_IR_I2C=m
-
-#
-# Encoders, decoders, sensors and other helper chips
-#
-
-#
-# Audio decoders, processors and mixers
-#
-# CONFIG_VIDEO_TVAUDIO is not set
-# CONFIG_VIDEO_TDA7432 is not set
-# CONFIG_VIDEO_TDA9840 is not set
-# CONFIG_VIDEO_TEA6415C is not set
-# CONFIG_VIDEO_TEA6420 is not set
-CONFIG_VIDEO_MSP3400=m
-# CONFIG_VIDEO_CS5345 is not set
-CONFIG_VIDEO_CS53L32A=m
-# CONFIG_VIDEO_TLV320AIC23B is not set
-CONFIG_VIDEO_WM8775=m
-# CONFIG_VIDEO_WM8739 is not set
-# CONFIG_VIDEO_VP27SMPX is not set
-
-#
-# RDS decoders
-#
-# CONFIG_VIDEO_SAA6588 is not set
-
-#
-# Video decoders
-#
-# CONFIG_VIDEO_ADV7180 is not set
-# CONFIG_VIDEO_BT819 is not set
-# CONFIG_VIDEO_BT856 is not set
-# CONFIG_VIDEO_BT866 is not set
-# CONFIG_VIDEO_KS0127 is not set
-# CONFIG_VIDEO_SAA7110 is not set
-CONFIG_VIDEO_SAA711X=m
-# CONFIG_VIDEO_SAA7191 is not set
-# CONFIG_VIDEO_TVP514X is not set
-# CONFIG_VIDEO_TVP5150 is not set
-# CONFIG_VIDEO_TVP7002 is not set
-# CONFIG_VIDEO_VPX3220 is not set
-
-#
-# Video and audio decoders
-#
-# CONFIG_VIDEO_SAA717X is not set
-CONFIG_VIDEO_CX25840=m
-
-#
-# MPEG video encoders
-#
-CONFIG_VIDEO_CX2341X=m
-
-#
-# Video encoders
-#
-# CONFIG_VIDEO_SAA7127 is not set
-# CONFIG_VIDEO_SAA7185 is not set
-# CONFIG_VIDEO_ADV7170 is not set
-# CONFIG_VIDEO_ADV7175 is not set
-# CONFIG_VIDEO_ADV7343 is not set
-# CONFIG_VIDEO_AK881X is not set
-
-#
-# Camera sensor devices
-#
-# CONFIG_VIDEO_OV7670 is not set
-# CONFIG_VIDEO_MT9V011 is not set
-# CONFIG_VIDEO_TCM825X is not set
-# CONFIG_VIDEO_SR030PC30 is not set
-
-#
-# Flash devices
-#
-# CONFIG_VIDEO_ADP1653 is not set
-
-#
-# Video improvement chips
-#
-# CONFIG_VIDEO_UPD64031A is not set
-# CONFIG_VIDEO_UPD64083 is not set
-
-#
-# Miscelaneous helper chips
-#
-# CONFIG_VIDEO_THS7303 is not set
-# CONFIG_VIDEO_M52790 is not set
-CONFIG_VIDEO_VIVI=m
-# CONFIG_VIDEO_VPFE_CAPTURE is not set
-# CONFIG_VIDEO_OMAP2_VOUT is not set
-# CONFIG_VIDEO_BWQCAM is not set
-# CONFIG_VIDEO_CQCAM is not set
-# CONFIG_VIDEO_W9966 is not set
-# CONFIG_VIDEO_CPIA2 is not set
-# CONFIG_VIDEO_AU0828 is not set
-CONFIG_SOC_CAMERA=y
-# CONFIG_SOC_CAMERA_IMX074 is not set
-# CONFIG_SOC_CAMERA_MT9M001 is not set
-# CONFIG_SOC_CAMERA_MT9M111 is not set
-# CONFIG_SOC_CAMERA_MT9T031 is not set
-CONFIG_SOC_CAMERA_MT9T112=y
-# CONFIG_SOC_CAMERA_MT9V022 is not set
-# CONFIG_SOC_CAMERA_RJ54N1 is not set
-# CONFIG_SOC_CAMERA_TW9910 is not set
-# CONFIG_SOC_CAMERA_PLATFORM is not set
-# CONFIG_SOC_CAMERA_OV2640 is not set
-# CONFIG_SOC_CAMERA_OV5642 is not set
-# CONFIG_SOC_CAMERA_OV6650 is not set
-# CONFIG_SOC_CAMERA_OV772X is not set
-# CONFIG_SOC_CAMERA_OV9640 is not set
-# CONFIG_SOC_CAMERA_OV9740 is not set
-# CONFIG_VIDEO_SH_MOBILE_CSI2 is not set
-# CONFIG_VIDEO_SH_MOBILE_CEU is not set
-CONFIG_VIDEO_QL_CAMIF=y
-CONFIG_V4L_USB_DRIVERS=y
-CONFIG_USB_VIDEO_CLASS=m
-CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
-CONFIG_USB_GSPCA=m
-CONFIG_USB_M5602=m
-CONFIG_USB_STV06XX=m
-CONFIG_USB_GL860=m
-CONFIG_USB_GSPCA_BENQ=m
-CONFIG_USB_GSPCA_CONEX=m
-CONFIG_USB_GSPCA_CPIA1=m
-CONFIG_USB_GSPCA_ETOMS=m
-CONFIG_USB_GSPCA_FINEPIX=m
-CONFIG_USB_GSPCA_JEILINJ=m
-CONFIG_USB_GSPCA_KINECT=m
-CONFIG_USB_GSPCA_KONICA=m
-CONFIG_USB_GSPCA_MARS=m
-CONFIG_USB_GSPCA_MR97310A=m
-CONFIG_USB_GSPCA_NW80X=m
-CONFIG_USB_GSPCA_OV519=m
-CONFIG_USB_GSPCA_OV534=m
-CONFIG_USB_GSPCA_OV534_9=m
-CONFIG_USB_GSPCA_PAC207=m
-CONFIG_USB_GSPCA_PAC7302=m
-CONFIG_USB_GSPCA_PAC7311=m
-CONFIG_USB_GSPCA_SE401=m
-CONFIG_USB_GSPCA_SN9C2028=m
-CONFIG_USB_GSPCA_SN9C20X=m
-CONFIG_USB_GSPCA_SONIXB=m
-CONFIG_USB_GSPCA_SONIXJ=m
-CONFIG_USB_GSPCA_SPCA500=m
-CONFIG_USB_GSPCA_SPCA501=m
-CONFIG_USB_GSPCA_SPCA505=m
-CONFIG_USB_GSPCA_SPCA506=m
-CONFIG_USB_GSPCA_SPCA508=m
-CONFIG_USB_GSPCA_SPCA561=m
-CONFIG_USB_GSPCA_SPCA1528=m
-CONFIG_USB_GSPCA_SQ905=m
-CONFIG_USB_GSPCA_SQ905C=m
-CONFIG_USB_GSPCA_SQ930X=m
-CONFIG_USB_GSPCA_STK014=m
-CONFIG_USB_GSPCA_STV0680=m
-CONFIG_USB_GSPCA_SUNPLUS=m
-CONFIG_USB_GSPCA_T613=m
-CONFIG_USB_GSPCA_TOPRO=m
-CONFIG_USB_GSPCA_TV8532=m
-CONFIG_USB_GSPCA_VC032X=m
-CONFIG_USB_GSPCA_VICAM=m
-CONFIG_USB_GSPCA_XIRLINK_CIT=m
-CONFIG_USB_GSPCA_ZC3XX=m
-CONFIG_VIDEO_PVRUSB2=m
-CONFIG_VIDEO_PVRUSB2_SYSFS=y
-CONFIG_VIDEO_PVRUSB2_DVB=y
-# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set
-CONFIG_VIDEO_HDPVR=m
-CONFIG_VIDEO_EM28XX=m
-CONFIG_VIDEO_EM28XX_ALSA=m
-CONFIG_VIDEO_EM28XX_DVB=m
-CONFIG_VIDEO_EM28XX_RC=y
-CONFIG_VIDEO_TLG2300=m
-CONFIG_VIDEO_CX231XX=m
-CONFIG_VIDEO_CX231XX_RC=y
-CONFIG_VIDEO_CX231XX_ALSA=m
-CONFIG_VIDEO_CX231XX_DVB=m
-# CONFIG_VIDEO_TM6000 is not set
-CONFIG_VIDEO_USBVISION=m
-CONFIG_USB_ET61X251=m
-CONFIG_USB_SN9C102=m
-CONFIG_USB_PWC=m
-# CONFIG_USB_PWC_DEBUG is not set
-CONFIG_USB_PWC_INPUT_EVDEV=y
-CONFIG_USB_ZR364XX=m
-CONFIG_USB_STKWEBCAM=m
-CONFIG_USB_S2255=m
-# CONFIG_V4L_MEM2MEM_DRIVERS is not set
-CONFIG_RADIO_ADAPTERS=y
-# CONFIG_I2C_SI4713 is not set
-# CONFIG_RADIO_SI4713 is not set
-# CONFIG_USB_DSBR is not set
-# CONFIG_RADIO_SI470X is not set
-# CONFIG_USB_MR800 is not set
-# CONFIG_RADIO_TEA5764 is not set
-# CONFIG_RADIO_SAA7706H is not set
-# CONFIG_RADIO_TEF6862 is not set
-# CONFIG_RADIO_WL1273 is not set
-
-#
-# Texas Instruments WL128x FM driver (ST based)
-#
-# CONFIG_RADIO_WL128X is not set
-CONFIG_DVB_MAX_ADAPTERS=8
-# CONFIG_DVB_DYNAMIC_MINORS is not set
-CONFIG_DVB_CAPTURE_DRIVERS=y
-# CONFIG_TTPCI_EEPROM is not set
-
-#
-# Supported USB Adapters
-#
-# CONFIG_DVB_USB is not set
-# CONFIG_SMS_SIANO_MDTV is not set
-
-#
-# Supported FlexCopII (B2C2) Adapters
-#
-# CONFIG_DVB_B2C2_FLEXCOP is not set
-
-#
-# Supported DVB Frontends
-#
-CONFIG_DVB_FE_CUSTOMISE=y
-
-#
-# Customise DVB Frontends
-#
-
-#
-# Multistandard (satellite) frontends
-#
-CONFIG_DVB_STB0899=m
-CONFIG_DVB_STB6100=m
-CONFIG_DVB_STV090x=m
-CONFIG_DVB_STV6110x=m
-
-#
-# Multistandard (cable + terrestrial) frontends
-#
-CONFIG_DVB_DRXK=m
-CONFIG_DVB_TDA18271C2DD=m
-
-#
-# DVB-S (satellite) frontends
-#
-CONFIG_DVB_CX24110=m
-CONFIG_DVB_CX24123=m
-CONFIG_DVB_MT312=m
-CONFIG_DVB_ZL10036=m
-CONFIG_DVB_ZL10039=m
-CONFIG_DVB_S5H1420=m
-CONFIG_DVB_STV0288=m
-CONFIG_DVB_STB6000=m
-CONFIG_DVB_STV0299=m
-CONFIG_DVB_STV6110=m
-CONFIG_DVB_STV0900=m
-CONFIG_DVB_TDA8083=m
-CONFIG_DVB_TDA10086=m
-CONFIG_DVB_TDA8261=m
-CONFIG_DVB_VES1X93=m
-CONFIG_DVB_TUNER_ITD1000=m
-CONFIG_DVB_TUNER_CX24113=m
-CONFIG_DVB_TDA826X=m
-CONFIG_DVB_TUA6100=m
-CONFIG_DVB_CX24116=m
-CONFIG_DVB_SI21XX=m
-CONFIG_DVB_DS3000=m
-CONFIG_DVB_MB86A16=m
-CONFIG_DVB_TDA10071=m
-
-#
-# DVB-T (terrestrial) frontends
-#
-CONFIG_DVB_SP8870=m
-CONFIG_DVB_SP887X=m
-CONFIG_DVB_CX22700=m
-CONFIG_DVB_CX22702=m
-CONFIG_DVB_S5H1432=m
-CONFIG_DVB_DRXD=m
-CONFIG_DVB_L64781=m
-CONFIG_DVB_TDA1004X=m
-CONFIG_DVB_NXT6000=m
-CONFIG_DVB_MT352=m
-CONFIG_DVB_ZL10353=m
-CONFIG_DVB_DIB3000MB=m
-CONFIG_DVB_DIB3000MC=m
-CONFIG_DVB_DIB7000M=m
-CONFIG_DVB_DIB7000P=m
-CONFIG_DVB_DIB9000=m
-CONFIG_DVB_TDA10048=m
-CONFIG_DVB_AF9013=m
-CONFIG_DVB_EC100=m
-CONFIG_DVB_STV0367=m
-CONFIG_DVB_CXD2820R=m
-
-#
-# DVB-C (cable) frontends
-#
-CONFIG_DVB_VES1820=m
-CONFIG_DVB_TDA10021=m
-CONFIG_DVB_TDA10023=m
-CONFIG_DVB_STV0297=m
-
-#
-# ATSC (North American/Korean Terrestrial/Cable DTV) frontends
-#
-CONFIG_DVB_NXT200X=m
-CONFIG_DVB_OR51211=m
-CONFIG_DVB_OR51132=m
-CONFIG_DVB_BCM3510=m
-CONFIG_DVB_LGDT330X=m
-CONFIG_DVB_LGDT3305=m
-CONFIG_DVB_S5H1409=m
-CONFIG_DVB_AU8522=m
-CONFIG_DVB_S5H1411=m
-
-#
-# ISDB-T (terrestrial) frontends
-#
-CONFIG_DVB_S921=m
-CONFIG_DVB_DIB8000=m
-CONFIG_DVB_MB86A20S=m
-
-#
-# Digital terrestrial only tuners/PLL
-#
-CONFIG_DVB_PLL=m
-CONFIG_DVB_TUNER_DIB0070=m
-CONFIG_DVB_TUNER_DIB0090=m
-
-#
-# SEC control devices for DVB-S
-#
-CONFIG_DVB_LNBP21=m
-CONFIG_DVB_LNBP22=m
-CONFIG_DVB_ISL6405=m
-CONFIG_DVB_ISL6421=m
-CONFIG_DVB_ISL6423=m
-CONFIG_DVB_A8293=m
-CONFIG_DVB_LGS8GL5=m
-CONFIG_DVB_LGS8GXX=m
-CONFIG_DVB_ATBM8830=m
-CONFIG_DVB_TDA665x=m
-CONFIG_DVB_IX2505V=m
-CONFIG_DVB_IT913X_FE=m
-
-#
-# Tools to develop new frontends
-#
-# CONFIG_DVB_DUMMY_FE is not set
-
-#
-# Graphics support
-#
-CONFIG_DRM=m
-# CONFIG_VGASTATE is not set
-# CONFIG_VIDEO_OUTPUT_CONTROL is not set
-CONFIG_FB=y
-CONFIG_FIRMWARE_EDID=y
-# CONFIG_FB_DDC is not set
-# CONFIG_FB_BOOT_VESA_SUPPORT is not set
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
-# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
-CONFIG_FB_SYS_FILLRECT=y
-CONFIG_FB_SYS_COPYAREA=y
-CONFIG_FB_SYS_IMAGEBLIT=y
-CONFIG_FB_FOREIGN_ENDIAN=y
-CONFIG_FB_BOTH_ENDIAN=y
-# CONFIG_FB_BIG_ENDIAN is not set
-# CONFIG_FB_LITTLE_ENDIAN is not set
-CONFIG_FB_SYS_FOPS=y
-# CONFIG_FB_WMT_GE_ROPS is not set
-CONFIG_FB_DEFERRED_IO=y
-# CONFIG_FB_SVGALIB is not set
-# CONFIG_FB_MACMODES is not set
-# CONFIG_FB_BACKLIGHT is not set
-CONFIG_FB_MODE_HELPERS=y
-CONFIG_FB_TILEBLITTING=y
-
-#
-# Frame buffer hardware drivers
-#
-# CONFIG_FB_UVESA is not set
-# CONFIG_FB_S1D13XXX is not set
-# CONFIG_FB_TMIO is not set
-CONFIG_FB_SMSCUFX=m
-CONFIG_FB_UDL=m
-CONFIG_FB_DA8XX=y
-CONFIG_FB_DA8XX_CONSISTENT_DMA_SIZE=5
-# CONFIG_FB_VIRTUAL is not set
-# CONFIG_FB_METRONOME is not set
-# CONFIG_FB_BROADSHEET is not set
-CONFIG_FB_ST7735=y
-# CONFIG_FB_OMAP_BOOTLOADER_INIT is not set
-CONFIG_OMAP2_VRAM=y
-CONFIG_OMAP2_VRFB=y
-CONFIG_OMAP2_DSS=m
-CONFIG_OMAP2_VRAM_SIZE=0
-CONFIG_OMAP2_DSS_DEBUG_SUPPORT=y
-# CONFIG_OMAP2_DSS_COLLECT_IRQ_STATS is not set
-CONFIG_OMAP2_DSS_DPI=y
-CONFIG_OMAP2_DSS_RFBI=y
-CONFIG_OMAP2_DSS_VENC=y
-CONFIG_OMAP2_DSS_SDI=y
-CONFIG_OMAP2_DSS_DSI=y
-# CONFIG_OMAP2_DSS_FAKE_VSYNC is not set
-CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK=0
-CONFIG_OMAP2_DSS_SLEEP_AFTER_VENC_RESET=y
-CONFIG_FB_OMAP2=m
-CONFIG_FB_OMAP2_DEBUG_SUPPORT=y
-CONFIG_FB_OMAP2_NUM_FBS=3
-
-#
-# OMAP2/3 Display Device Drivers
-#
-CONFIG_PANEL_GENERIC_DPI=m
-CONFIG_PANEL_DVI=m
-# CONFIG_PANEL_LGPHILIPS_LB035Q02 is not set
-CONFIG_PANEL_SHARP_LS037V7DW01=m
-CONFIG_PANEL_NEC_NL8048HL11_01B=m
-CONFIG_PANEL_PICODLP=m
-CONFIG_PANEL_TAAL=m
-CONFIG_PANEL_TPO_TD043MTEA1=m
-CONFIG_PANEL_ACX565AKM=m
-CONFIG_PANEL_N8X0=m
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_LCD_CLASS_DEVICE=y
-# CONFIG_LCD_L4F00242T03 is not set
-# CONFIG_LCD_LMS283GF05 is not set
-# CONFIG_LCD_LTV350QV is not set
-# CONFIG_LCD_TDO24M is not set
-# CONFIG_LCD_VGG2432A4 is not set
-CONFIG_LCD_PLATFORM=y
-# CONFIG_LCD_S6E63M0 is not set
-# CONFIG_LCD_LD9040 is not set
-# CONFIG_LCD_AMS369FG06 is not set
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_GENERIC=y
-CONFIG_BACKLIGHT_PWM=y
-# CONFIG_BACKLIGHT_ADP8860 is not set
-# CONFIG_BACKLIGHT_ADP8870 is not set
-# CONFIG_BACKLIGHT_TLC59108 is not set
-CONFIG_BACKLIGHT_TPS65217=y
-
-#
-# Display device support
-#
-CONFIG_DISPLAY_SUPPORT=y
-
-#
-# Display hardware drivers
-#
-
-#
-# Console display driver support
-#
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
-CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
-# CONFIG_FONTS is not set
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
-CONFIG_LOGO=y
-# CONFIG_LOGO_LINUX_MONO is not set
-# CONFIG_LOGO_LINUX_VGA16 is not set
-CONFIG_LOGO_LINUX_CLUT224=y
-CONFIG_SOUND=y
-# CONFIG_SOUND_OSS_CORE is not set
-CONFIG_SND=y
-CONFIG_SND_TIMER=y
-CONFIG_SND_PCM=y
-CONFIG_SND_HWDEP=y
-CONFIG_SND_RAWMIDI=y
-CONFIG_SND_JACK=y
-CONFIG_SND_SEQUENCER=m
-CONFIG_SND_SEQ_DUMMY=m
-# CONFIG_SND_MIXER_OSS is not set
-# CONFIG_SND_PCM_OSS is not set
-# CONFIG_SND_SEQUENCER_OSS is not set
-CONFIG_SND_HRTIMER=m
-CONFIG_SND_SEQ_HRTIMER_DEFAULT=y
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PROCFS=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-CONFIG_SND_RAWMIDI_SEQ=m
-# CONFIG_SND_OPL3_LIB_SEQ is not set
-# CONFIG_SND_OPL4_LIB_SEQ is not set
-# CONFIG_SND_SBAWE_SEQ is not set
-# CONFIG_SND_EMU10K1_SEQ is not set
-CONFIG_SND_DRIVERS=y
-# CONFIG_SND_DUMMY is not set
-# CONFIG_SND_ALOOP is not set
-# CONFIG_SND_VIRMIDI is not set
-# CONFIG_SND_MTPAV is not set
-# CONFIG_SND_MTS64 is not set
-# CONFIG_SND_SERIAL_U16550 is not set
-# CONFIG_SND_MPU401 is not set
-# CONFIG_SND_PORTMAN2X4 is not set
-CONFIG_SND_ARM=y
-CONFIG_SND_SPI=y
-CONFIG_SND_USB=y
-CONFIG_SND_USB_AUDIO=y
-# CONFIG_SND_USB_UA101 is not set
-# CONFIG_SND_USB_CAIAQ is not set
-# CONFIG_SND_USB_6FIRE is not set
-CONFIG_SND_SOC=y
-# CONFIG_SND_SOC_CACHE_LZO is not set
-CONFIG_SND_AM33XX_SOC=y
-CONFIG_SND_DAVINCI_SOC_MCASP=y
-CONFIG_SND_AM335X_SOC_EVM=y
-# CONFIG_SND_OMAP_SOC is not set
-CONFIG_SND_SOC_I2C_AND_SPI=y
-# CONFIG_SND_SOC_ALL_CODECS is not set
-CONFIG_SND_SOC_TLV320AIC3X=y
-# CONFIG_SOUND_PRIME is not set
-CONFIG_HID_SUPPORT=y
-CONFIG_HID=y
-# CONFIG_HIDRAW is not set
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=y
-# CONFIG_HID_PID is not set
-# CONFIG_USB_HIDDEV is not set
-
-#
-# Special HID drivers
-#
-# CONFIG_HID_A4TECH is not set
-# CONFIG_HID_ACRUX is not set
-# CONFIG_HID_APPLE is not set
-# CONFIG_HID_BELKIN is not set
-# CONFIG_HID_CHERRY is not set
-# CONFIG_HID_CHICONY is not set
-# CONFIG_HID_PRODIKEYS is not set
-# CONFIG_HID_CYPRESS is not set
-# CONFIG_HID_DRAGONRISE is not set
-# CONFIG_HID_EMS_FF is not set
-# CONFIG_HID_ELECOM is not set
-# CONFIG_HID_EZKEY is not set
-# CONFIG_HID_HOLTEK is not set
-# CONFIG_HID_KEYTOUCH is not set
-# CONFIG_HID_KYE is not set
-# CONFIG_HID_UCLOGIC is not set
-# CONFIG_HID_WALTOP is not set
-# CONFIG_HID_GYRATION is not set
-# CONFIG_HID_TWINHAN is not set
-# CONFIG_HID_KENSINGTON is not set
-# CONFIG_HID_LCPOWER is not set
-# CONFIG_HID_LOGITECH is not set
-# CONFIG_HID_MAGICMOUSE is not set
-# CONFIG_HID_MICROSOFT is not set
-# CONFIG_HID_MONTEREY is not set
-# CONFIG_HID_MULTITOUCH is not set
-# CONFIG_HID_NTRIG is not set
-# CONFIG_HID_ORTEK is not set
-# CONFIG_HID_PANTHERLORD is not set
-# CONFIG_HID_PETALYNX is not set
-# CONFIG_HID_PICOLCD is not set
-# CONFIG_HID_PRIMAX is not set
-# CONFIG_HID_QUANTA is not set
-# CONFIG_HID_ROCCAT is not set
-# CONFIG_HID_SAMSUNG is not set
-# CONFIG_HID_SONY is not set
-# CONFIG_HID_SPEEDLINK is not set
-# CONFIG_HID_SUNPLUS is not set
-# CONFIG_HID_GREENASIA is not set
-# CONFIG_HID_SMARTJOYPLUS is not set
-# CONFIG_HID_TOPSEED is not set
-# CONFIG_HID_THRUSTMASTER is not set
-# CONFIG_HID_WACOM is not set
-# CONFIG_HID_WIIMOTE is not set
-# CONFIG_HID_ZEROPLUS is not set
-# CONFIG_HID_ZYDACRON is not set
-CONFIG_USB_SUPPORT=y
-CONFIG_USB_COMMON=y
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-CONFIG_USB_ARCH_HAS_EHCI=y
-# CONFIG_USB_ARCH_HAS_XHCI is not set
-CONFIG_USB=y
-# CONFIG_USB_DEBUG is not set
-CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-CONFIG_USB_DEVICE_CLASS=y
-# CONFIG_USB_DYNAMIC_MINORS is not set
-CONFIG_USB_SUSPEND=y
-# CONFIG_USB_OTG is not set
-# CONFIG_USB_OTG_WHITELIST is not set
-# CONFIG_USB_OTG_BLACKLIST_HUB is not set
-# CONFIG_USB_DWC3 is not set
-# CONFIG_USB_MON is not set
-# CONFIG_USB_WUSB is not set
-# CONFIG_USB_WUSB_CBAF is not set
-
-#
-# USB Host Controller Drivers
-#
-# CONFIG_USB_C67X00_HCD is not set
-# CONFIG_USB_EHCI_HCD is not set
-# CONFIG_USB_OXU210HP_HCD is not set
-# CONFIG_USB_ISP116X_HCD is not set
-# CONFIG_USB_ISP1760_HCD is not set
-# CONFIG_USB_ISP1362_HCD is not set
-# CONFIG_USB_OHCI_HCD is not set
-# CONFIG_USB_U132_HCD is not set
-# CONFIG_USB_SL811_HCD is not set
-# CONFIG_USB_R8A66597_HCD is not set
-# CONFIG_USB_HWA_HCD is not set
-CONFIG_USB_MUSB_HDRC=y
-
-#
-# Platform Glue Layer
-#
-# CONFIG_USB_MUSB_TUSB6010_GLUE is not set
-# CONFIG_USB_MUSB_OMAP2PLUS_GLUE is not set
-# CONFIG_USB_MUSB_AM35X_GLUE is not set
-CONFIG_USB_MUSB_TI81XX_GLUE=y
-# CONFIG_USB_MUSB_DAVINCI is not set
-# CONFIG_USB_MUSB_DA8XX is not set
-# CONFIG_USB_MUSB_TUSB6010 is not set
-# CONFIG_USB_MUSB_OMAP2PLUS is not set
-# CONFIG_USB_MUSB_AM35X is not set
-CONFIG_USB_MUSB_TI81XX=y
-# CONFIG_USB_MUSB_BLACKFIN is not set
-# CONFIG_USB_MUSB_UX500 is not set
-CONFIG_MUSB_PIO_ONLY=y
-# CONFIG_USB_INVENTRA_DMA is not set
-# CONFIG_USB_TI_CPPI_DMA is not set
-# CONFIG_USB_TI_CPPI41_DMA is not set
-# CONFIG_USB_TUSB_OMAP_DMA is not set
-# CONFIG_USB_UX500_DMA is not set
-# CONFIG_USB_RENESAS_USBHS is not set
-
-#
-# USB Device Class drivers
-#
-CONFIG_USB_ACM=y
-CONFIG_USB_PRINTER=y
-CONFIG_USB_WDM=y
-CONFIG_USB_TMC=m
-
-#
-# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
-#
-
-#
-# also be needed; see USB_STORAGE Help for more info
-#
-CONFIG_USB_STORAGE=y
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_REALTEK is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_ISD200 is not set
-# CONFIG_USB_STORAGE_USBAT is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_SDDR55 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-# CONFIG_USB_STORAGE_ALAUDA is not set
-# CONFIG_USB_STORAGE_ONETOUCH is not set
-# CONFIG_USB_STORAGE_KARMA is not set
-# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
-# CONFIG_USB_STORAGE_ENE_UB6250 is not set
-CONFIG_USB_UAS=y
-CONFIG_USB_LIBUSUAL=y
-
-#
-# USB Imaging devices
-#
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_MICROTEK is not set
-
-#
-# USB port drivers
-#
-# CONFIG_USB_USS720 is not set
-CONFIG_USB_SERIAL=m
-CONFIG_USB_EZUSB=y
-# CONFIG_USB_SERIAL_GENERIC is not set
-CONFIG_USB_SERIAL_AIRCABLE=m
-CONFIG_USB_SERIAL_ARK3116=m
-CONFIG_USB_SERIAL_BELKIN=m
-CONFIG_USB_SERIAL_CH341=m
-# CONFIG_USB_SERIAL_WHITEHEAT is not set
-CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-CONFIG_USB_SERIAL_CP210X=m
-CONFIG_USB_SERIAL_CYPRESS_M8=m
-CONFIG_USB_SERIAL_EMPEG=m
-CONFIG_USB_SERIAL_FTDI_SIO=m
-CONFIG_USB_SERIAL_FUNSOFT=m
-CONFIG_USB_SERIAL_VISOR=m
-CONFIG_USB_SERIAL_IPAQ=m
-CONFIG_USB_SERIAL_IR=m
-CONFIG_USB_SERIAL_EDGEPORT=m
-CONFIG_USB_SERIAL_EDGEPORT_TI=m
-CONFIG_USB_SERIAL_GARMIN=m
-CONFIG_USB_SERIAL_IPW=m
-CONFIG_USB_SERIAL_IUU=m
-CONFIG_USB_SERIAL_KEYSPAN_PDA=m
-CONFIG_USB_SERIAL_KEYSPAN=m
-# CONFIG_USB_SERIAL_KEYSPAN_MPR is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
-CONFIG_USB_SERIAL_KLSI=m
-CONFIG_USB_SERIAL_KOBIL_SCT=m
-CONFIG_USB_SERIAL_MCT_U232=m
-CONFIG_USB_SERIAL_MOS7720=m
-# CONFIG_USB_SERIAL_MOS7715_PARPORT is not set
-CONFIG_USB_SERIAL_MOS7840=m
-CONFIG_USB_SERIAL_MOTOROLA=m
-CONFIG_USB_SERIAL_NAVMAN=m
-CONFIG_USB_SERIAL_PL2303=m
-CONFIG_USB_SERIAL_OTI6858=m
-CONFIG_USB_SERIAL_QCAUX=m
-CONFIG_USB_SERIAL_QUALCOMM=m
-CONFIG_USB_SERIAL_SPCP8X5=m
-CONFIG_USB_SERIAL_HP4X=m
-CONFIG_USB_SERIAL_SAFE=m
-# CONFIG_USB_SERIAL_SAFE_PADDED is not set
-CONFIG_USB_SERIAL_SIEMENS_MPI=m
-CONFIG_USB_SERIAL_SIERRAWIRELESS=m
-# CONFIG_USB_SERIAL_SYMBOL is not set
-# CONFIG_USB_SERIAL_TI is not set
-# CONFIG_USB_SERIAL_CYBERJACK is not set
-# CONFIG_USB_SERIAL_XIRCOM is not set
-CONFIG_USB_SERIAL_WWAN=m
-# CONFIG_USB_SERIAL_OPTION is not set
-# CONFIG_USB_SERIAL_OMNINET is not set
-CONFIG_USB_SERIAL_OPTICON=m
-CONFIG_USB_SERIAL_VIVOPAY_SERIAL=m
-CONFIG_USB_SERIAL_ZIO=m
-CONFIG_USB_SERIAL_SSU100=m
-CONFIG_USB_SERIAL_DEBUG=m
-
-#
-# USB Miscellaneous drivers
-#
-# CONFIG_USB_EMI62 is not set
-# CONFIG_USB_EMI26 is not set
-# CONFIG_USB_ADUTUX is not set
-# CONFIG_USB_SEVSEG is not set
-# CONFIG_USB_RIO500 is not set
-CONFIG_USB_LEGOTOWER=m
-CONFIG_USB_LCD=m
-CONFIG_USB_LED=m
-CONFIG_USB_CYPRESS_CY7C63=m
-CONFIG_USB_CYTHERM=m
-CONFIG_USB_IDMOUSE=m
-CONFIG_USB_FTDI_ELAN=m
-CONFIG_USB_APPLEDISPLAY=m
-CONFIG_USB_SISUSBVGA=m
-CONFIG_USB_SISUSBVGA_CON=y
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TRANCEVIBRATOR is not set
-# CONFIG_USB_IOWARRIOR is not set
-CONFIG_USB_TEST=m
-# CONFIG_USB_ISIGHTFW is not set
-# CONFIG_USB_YUREX is not set
-CONFIG_USB_GADGET=y
-# CONFIG_USB_GADGET_DEBUG is not set
-# CONFIG_USB_GADGET_DEBUG_FILES is not set
-# CONFIG_USB_GADGET_DEBUG_FS is not set
-CONFIG_USB_GADGET_VBUS_DRAW=2
-CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2
-# CONFIG_USB_FUSB300 is not set
-# CONFIG_USB_OMAP is not set
-# CONFIG_USB_R8A66597 is not set
-CONFIG_USB_GADGET_MUSB_HDRC=y
-# CONFIG_USB_M66592 is not set
-# CONFIG_USB_NET2272 is not set
-# CONFIG_USB_DUMMY_HCD is not set
-CONFIG_USB_GADGET_DUALSPEED=y
-CONFIG_USB_ZERO=m
-CONFIG_USB_AUDIO=m
-CONFIG_USB_ETH=m
-CONFIG_USB_ETH_RNDIS=y
-# CONFIG_USB_ETH_EEM is not set
-CONFIG_USB_G_NCM=m
-CONFIG_USB_GADGETFS=m
-CONFIG_USB_FUNCTIONFS=m
-# CONFIG_USB_FUNCTIONFS_ETH is not set
-CONFIG_USB_FUNCTIONFS_RNDIS=y
-# CONFIG_USB_FUNCTIONFS_GENERIC is not set
-CONFIG_USB_FILE_STORAGE=m
-# CONFIG_USB_FILE_STORAGE_TEST is not set
-CONFIG_USB_MASS_STORAGE=m
-CONFIG_USB_G_SERIAL=m
-CONFIG_USB_MIDI_GADGET=m
-CONFIG_USB_G_PRINTER=m
-CONFIG_USB_CDC_COMPOSITE=m
-# CONFIG_USB_G_ACM_MS is not set
-CONFIG_USB_G_MULTI=m
-CONFIG_USB_G_MULTI_RNDIS=y
-# CONFIG_USB_G_MULTI_CDC is not set
-CONFIG_USB_G_HID=m
-CONFIG_USB_G_DBGP=m
-CONFIG_USB_G_DBGP_PRINTK=y
-# CONFIG_USB_G_DBGP_SERIAL is not set
-CONFIG_USB_G_WEBCAM=m
-
-#
-# OTG and related infrastructure
-#
-CONFIG_USB_OTG_UTILS=y
-# CONFIG_USB_GPIO_VBUS is not set
-# CONFIG_USB_ULPI is not set
-# CONFIG_TWL6030_USB is not set
-CONFIG_NOP_USB_XCEIV=y
-CONFIG_MMC=y
-# CONFIG_MMC_DEBUG is not set
-CONFIG_MMC_UNSAFE_RESUME=y
-# CONFIG_MMC_CLKGATE is not set
-
-#
-# MMC/SD/SDIO Card Drivers
-#
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_BLOCK_MINORS=8
-CONFIG_MMC_BLOCK_BOUNCE=y
-CONFIG_SDIO_UART=y
-# CONFIG_MMC_TEST is not set
-
-#
-# MMC/SD/SDIO Host Controller Drivers
-#
-# CONFIG_MMC_SDHCI is not set
-# CONFIG_MMC_SDHCI_PXAV3 is not set
-# CONFIG_MMC_SDHCI_PXAV2 is not set
-# CONFIG_MMC_OMAP is not set
-CONFIG_MMC_OMAP_HS=y
-# CONFIG_MMC_SPI is not set
-# CONFIG_MMC_DW is not set
-# CONFIG_MMC_VUB300 is not set
-# CONFIG_MMC_USHC is not set
-# CONFIG_MEMSTICK is not set
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-
-#
-# LED drivers
-#
-# CONFIG_LEDS_LM3530 is not set
-# CONFIG_LEDS_PCA9532 is not set
-CONFIG_LEDS_GPIO=y
-# CONFIG_LEDS_LP3944 is not set
-# CONFIG_LEDS_LP5521 is not set
-# CONFIG_LEDS_LP5523 is not set
-# CONFIG_LEDS_PCA955X is not set
-# CONFIG_LEDS_DAC124S085 is not set
-# CONFIG_LEDS_PWM is not set
-CONFIG_LEDS_REGULATOR=y
-# CONFIG_LEDS_BD2802 is not set
-# CONFIG_LEDS_LT3593 is not set
-# CONFIG_LEDS_RENESAS_TPU is not set
-CONFIG_LEDS_TRIGGERS=y
-
-#
-# LED Triggers
-#
-CONFIG_LEDS_TRIGGER_TIMER=y
-CONFIG_LEDS_TRIGGER_HEARTBEAT=y
-CONFIG_LEDS_TRIGGER_BACKLIGHT=y
-# CONFIG_LEDS_TRIGGER_CPU is not set
-CONFIG_LEDS_TRIGGER_GPIO=y
-CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
-
-#
-# iptables trigger is under Netfilter config (LED target)
-#
-# CONFIG_ACCESSIBILITY is not set
-CONFIG_RTC_LIB=y
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
-# CONFIG_RTC_DEBUG is not set
-
-#
-# RTC interfaces
-#
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
-# CONFIG_RTC_DRV_TEST is not set
-
-#
-# I2C RTC drivers
-#
-CONFIG_RTC_DRV_DS1307=m
-CONFIG_RTC_DRV_DS1374=m
-CONFIG_RTC_DRV_DS1672=m
-CONFIG_RTC_DRV_DS3232=m
-CONFIG_RTC_DRV_MAX6900=m
-CONFIG_RTC_DRV_RS5C372=m
-CONFIG_RTC_DRV_ISL1208=m
-CONFIG_RTC_DRV_ISL12022=m
-CONFIG_RTC_DRV_X1205=m
-CONFIG_RTC_DRV_PCF8563=m
-CONFIG_RTC_DRV_PCF8583=m
-CONFIG_RTC_DRV_M41T80=m
-CONFIG_RTC_DRV_M41T80_WDT=y
-CONFIG_RTC_DRV_BQ32K=m
-CONFIG_RTC_DRV_TWL4030=m
-CONFIG_RTC_DRV_S35390A=m
-CONFIG_RTC_DRV_FM3130=m
-CONFIG_RTC_DRV_RX8581=m
-CONFIG_RTC_DRV_RX8025=m
-CONFIG_RTC_DRV_EM3027=m
-CONFIG_RTC_DRV_RV3029C2=m
-
-#
-# SPI RTC drivers
-#
-CONFIG_RTC_DRV_M41T93=m
-CONFIG_RTC_DRV_M41T94=m
-CONFIG_RTC_DRV_DS1305=m
-CONFIG_RTC_DRV_DS1390=m
-CONFIG_RTC_DRV_MAX6902=m
-CONFIG_RTC_DRV_R9701=m
-CONFIG_RTC_DRV_RS5C348=m
-CONFIG_RTC_DRV_DS3234=m
-CONFIG_RTC_DRV_PCF2123=m
-
-#
-# Platform RTC drivers
-#
-CONFIG_RTC_DRV_CMOS=m
-CONFIG_RTC_DRV_DS1286=m
-CONFIG_RTC_DRV_DS1511=m
-CONFIG_RTC_DRV_DS1553=m
-CONFIG_RTC_DRV_DS1742=m
-CONFIG_RTC_DRV_STK17TA8=m
-CONFIG_RTC_DRV_M48T86=m
-CONFIG_RTC_DRV_M48T35=m
-CONFIG_RTC_DRV_M48T59=m
-CONFIG_RTC_DRV_MSM6242=m
-CONFIG_RTC_DRV_BQ4802=m
-CONFIG_RTC_DRV_RP5C01=m
-CONFIG_RTC_DRV_V3020=m
-
-#
-# on-CPU RTC drivers
-#
-CONFIG_RTC_DRV_OMAP=y
-# CONFIG_DMADEVICES is not set
-# CONFIG_AUXDISPLAY is not set
-CONFIG_UIO=m
-CONFIG_UIO_PDRV=m
-CONFIG_UIO_PDRV_GENIRQ=m
-CONFIG_UIO_PRUSS=m
-CONFIG_VIRTIO=m
-CONFIG_VIRTIO_RING=m
-
-#
-# Virtio drivers
-#
-# CONFIG_VIRTIO_BALLOON is not set
-CONFIG_VIRTIO_MMIO=m
-CONFIG_STAGING=y
-CONFIG_USBIP_CORE=m
-CONFIG_USBIP_VHCI_HCD=m
-CONFIG_USBIP_HOST=m
-# CONFIG_USBIP_DEBUG is not set
-CONFIG_W35UND=m
-CONFIG_PRISM2_USB=m
-# CONFIG_ECHO is not set
-CONFIG_ASUS_OLED=m
-# CONFIG_PANEL is not set
-CONFIG_R8712U=m
-CONFIG_RTS5139=m
-# CONFIG_RTS5139_DEBUG is not set
-# CONFIG_TRANZPORT is not set
-# CONFIG_POHMELFS is not set
-# CONFIG_LINE6_USB is not set
-CONFIG_USB_SERIAL_QUATECH2=m
-CONFIG_USB_SERIAL_QUATECH_USB2=m
-# CONFIG_VT6656 is not set
-CONFIG_IIO=y
-CONFIG_IIO_BUFFER=y
-CONFIG_IIO_SW_RING=y
-CONFIG_IIO_KFIFO_BUF=y
-CONFIG_IIO_TRIGGER=y
-CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
-
-#
-# Accelerometers
-#
-# CONFIG_ADIS16201 is not set
-# CONFIG_ADIS16203 is not set
-# CONFIG_ADIS16204 is not set
-# CONFIG_ADIS16209 is not set
-# CONFIG_ADIS16220 is not set
-# CONFIG_ADIS16240 is not set
-# CONFIG_KXSD9 is not set
-# CONFIG_LIS3L02DQ is not set
-# CONFIG_SCA3000 is not set
-
-#
-# Analog to digital converters
-#
-# CONFIG_AD7291 is not set
-# CONFIG_AD7298 is not set
-# CONFIG_AD7606 is not set
-# CONFIG_AD799X is not set
-# CONFIG_AD7476 is not set
-# CONFIG_AD7887 is not set
-# CONFIG_AD7780 is not set
-# CONFIG_AD7793 is not set
-# CONFIG_AD7816 is not set
-CONFIG_AD7192=m
-# CONFIG_ADT7310 is not set
-# CONFIG_ADT7410 is not set
-CONFIG_AD7280=m
-# CONFIG_MAX1363 is not set
-
-#
-# Analog digital bi-direction converters
-#
-# CONFIG_ADT7316 is not set
-
-#
-# Capacitance to digital converters
-#
-# CONFIG_AD7150 is not set
-# CONFIG_AD7152 is not set
-CONFIG_AD7746=m
-
-#
-# Digital to analog converters
-#
-CONFIG_AD5064=m
-CONFIG_AD5360=m
-# CONFIG_AD5624R_SPI is not set
-# CONFIG_AD5446 is not set
-# CONFIG_AD5504 is not set
-# CONFIG_AD5791 is not set
-# CONFIG_AD5686 is not set
-# CONFIG_MAX517 is not set
-
-#
-# Direct Digital Synthesis
-#
-# CONFIG_AD5930 is not set
-# CONFIG_AD9832 is not set
-# CONFIG_AD9834 is not set
-# CONFIG_AD9850 is not set
-# CONFIG_AD9852 is not set
-# CONFIG_AD9910 is not set
-# CONFIG_AD9951 is not set
-
-#
-# Digital gyroscope sensors
-#
-# CONFIG_ADIS16060 is not set
-# CONFIG_ADIS16080 is not set
-# CONFIG_ADIS16130 is not set
-# CONFIG_ADIS16260 is not set
-# CONFIG_ADXRS450 is not set
-
-#
-# Network Analyzer, Impedance Converters
-#
-CONFIG_AD5933=m
-
-#
-# Inertial measurement units
-#
-# CONFIG_ADIS16400 is not set
-
-#
-# Light sensors
-#
-# CONFIG_SENSORS_ISL29018 is not set
-# CONFIG_SENSORS_TSL2563 is not set
-# CONFIG_TSL2583 is not set
-
-#
-# Magnetometer sensors
-#
-# CONFIG_SENSORS_AK8975 is not set
-# CONFIG_SENSORS_HMC5843 is not set
-
-#
-# Active energy metering IC
-#
-# CONFIG_ADE7753 is not set
-# CONFIG_ADE7754 is not set
-# CONFIG_ADE7758 is not set
-# CONFIG_ADE7759 is not set
-# CONFIG_ADE7854 is not set
-
-#
-# Resolver to digital converters
-#
-# CONFIG_AD2S90 is not set
-CONFIG_AD2S1200=m
-# CONFIG_AD2S1210 is not set
-
-#
-# Triggers - standalone
-#
-CONFIG_IIO_PERIODIC_RTC_TRIGGER=m
-CONFIG_IIO_GPIO_TRIGGER=m
-CONFIG_IIO_SYSFS_TRIGGER=m
-CONFIG_IIO_DUMMY_EVGEN=m
-CONFIG_IIO_SIMPLE_DUMMY=m
-CONFIG_IIO_SIMPLE_DUMMY_EVENTS=y
-CONFIG_IIO_SIMPLE_DUMMY_BUFFER=y
-CONFIG_XVMALLOC=y
-CONFIG_ZRAM=m
-# CONFIG_ZRAM_DEBUG is not set
-# CONFIG_FB_SM7XX is not set
-# CONFIG_TIDSPBRIDGE is not set
-CONFIG_USB_ENESTORAGE=m
-# CONFIG_BCM_WIMAX is not set
-# CONFIG_FT1000 is not set
-
-#
-# Speakup console speech
-#
-# CONFIG_SPEAKUP is not set
-# CONFIG_TOUCHSCREEN_CLEARPAD_TM1217 is not set
-CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4=m
-CONFIG_STAGING_MEDIA=y
-CONFIG_DVB_AS102=m
-CONFIG_EASYCAP=m
-# CONFIG_EASYCAP_DEBUG is not set
-# CONFIG_LIRC_STAGING is not set
-CONFIG_CLKDEV_LOOKUP=y
-
-#
-# Hardware Spinlock drivers
-#
-CONFIG_CLKSRC_MMIO=y
-CONFIG_IOMMU_API=y
-CONFIG_IOMMU_SUPPORT=y
-CONFIG_OMAP_IOMMU=y
-CONFIG_OMAP_IOVMM=y
-CONFIG_OMAP_IOMMU_DEBUG=y
-# CONFIG_VIRT_DRIVERS is not set
-CONFIG_PM_DEVFREQ=y
-
-#
-# DEVFREQ Governors
-#
-# CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND is not set
-# CONFIG_DEVFREQ_GOV_PERFORMANCE is not set
-# CONFIG_DEVFREQ_GOV_POWERSAVE is not set
-CONFIG_DEVFREQ_GOV_USERSPACE=y
-
-#
-# DEVFREQ Drivers
-#
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=m
-# CONFIG_EXT2_FS_XATTR is not set
-# CONFIG_EXT2_FS_XIP is not set
-CONFIG_EXT3_FS=y
-CONFIG_EXT3_DEFAULTS_TO_ORDERED=y
-# CONFIG_EXT3_FS_XATTR is not set
-CONFIG_EXT4_FS=y
-CONFIG_EXT4_FS_XATTR=y
-CONFIG_EXT4_FS_POSIX_ACL=y
-# CONFIG_EXT4_FS_SECURITY is not set
-# CONFIG_EXT4_DEBUG is not set
-CONFIG_JBD=y
-# CONFIG_JBD_DEBUG is not set
-CONFIG_JBD2=y
-# CONFIG_JBD2_DEBUG is not set
-CONFIG_FS_MBCACHE=y
-CONFIG_REISERFS_FS=m
-# CONFIG_REISERFS_CHECK is not set
-# CONFIG_REISERFS_PROC_INFO is not set
-# CONFIG_REISERFS_FS_XATTR is not set
-CONFIG_JFS_FS=m
-# CONFIG_JFS_POSIX_ACL is not set
-# CONFIG_JFS_SECURITY is not set
-# CONFIG_JFS_DEBUG is not set
-# CONFIG_JFS_STATISTICS is not set
-CONFIG_XFS_FS=m
-# CONFIG_XFS_QUOTA is not set
-# CONFIG_XFS_POSIX_ACL is not set
-# CONFIG_XFS_RT is not set
-# CONFIG_XFS_DEBUG is not set
-CONFIG_GFS2_FS=m
-# CONFIG_GFS2_FS_LOCKING_DLM is not set
-CONFIG_BTRFS_FS=m
-# CONFIG_BTRFS_FS_POSIX_ACL is not set
-CONFIG_NILFS2_FS=m
-CONFIG_FS_POSIX_ACL=y
-CONFIG_EXPORTFS=y
-CONFIG_FILE_LOCKING=y
-CONFIG_FSNOTIFY=y
-CONFIG_DNOTIFY=y
-CONFIG_INOTIFY_USER=y
-CONFIG_FANOTIFY=y
-CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y
-CONFIG_QUOTA=y
-# CONFIG_QUOTA_NETLINK_INTERFACE is not set
-CONFIG_PRINT_QUOTA_WARNING=y
-# CONFIG_QUOTA_DEBUG is not set
-CONFIG_QUOTA_TREE=m
-# CONFIG_QFMT_V1 is not set
-CONFIG_QFMT_V2=m
-CONFIG_QUOTACTL=y
-CONFIG_AUTOFS4_FS=y
-CONFIG_FUSE_FS=m
-CONFIG_CUSE=m
-CONFIG_GENERIC_ACL=y
-
-#
-# Caches
-#
-# CONFIG_FSCACHE is not set
-
-#
-# CD-ROM/DVD Filesystems
-#
-CONFIG_ISO9660_FS=m
-CONFIG_JOLIET=y
-CONFIG_ZISOFS=y
-CONFIG_UDF_FS=m
-CONFIG_UDF_NLS=y
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=y
-CONFIG_MSDOS_FS=y
-CONFIG_VFAT_FS=y
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_PROC_SYSCTL=y
-CONFIG_PROC_PAGE_MONITOR=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-CONFIG_TMPFS_POSIX_ACL=y
-CONFIG_TMPFS_XATTR=y
-# CONFIG_HUGETLB_PAGE is not set
-# CONFIG_CONFIGFS_FS is not set
-CONFIG_MISC_FILESYSTEMS=y
-# CONFIG_ADFS_FS is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_ECRYPT_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_HFSPLUS_FS is not set
-# CONFIG_BEFS_FS is not set
-# CONFIG_BFS_FS is not set
-# CONFIG_EFS_FS is not set
-# CONFIG_LOGFS is not set
-CONFIG_CRAMFS=m
-# CONFIG_SQUASHFS is not set
-# CONFIG_VXFS_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_OMFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_ROMFS_FS is not set
-# CONFIG_PSTORE is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-CONFIG_NETWORK_FILESYSTEMS=y
-CONFIG_NFS_FS=y
-CONFIG_NFS_V3=y
-CONFIG_NFS_V3_ACL=y
-CONFIG_NFS_V4=y
-# CONFIG_NFS_V4_1 is not set
-CONFIG_ROOT_NFS=y
-# CONFIG_NFS_USE_LEGACY_DNS is not set
-CONFIG_NFS_USE_KERNEL_DNS=y
-# CONFIG_NFS_USE_NEW_IDMAPPER is not set
-CONFIG_NFSD=m
-CONFIG_NFSD_V3=y
-# CONFIG_NFSD_V3_ACL is not set
-CONFIG_NFSD_V4=y
-CONFIG_LOCKD=y
-CONFIG_LOCKD_V4=y
-CONFIG_NFS_ACL_SUPPORT=y
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
-CONFIG_SUNRPC_GSS=y
-# CONFIG_CEPH_FS is not set
-CONFIG_CIFS=m
-CONFIG_CIFS_STATS=y
-# CONFIG_CIFS_STATS2 is not set
-CONFIG_CIFS_WEAK_PW_HASH=y
-# CONFIG_CIFS_UPCALL is not set
-CONFIG_CIFS_XATTR=y
-CONFIG_CIFS_POSIX=y
-# CONFIG_CIFS_DEBUG2 is not set
-# CONFIG_CIFS_DFS_UPCALL is not set
-# CONFIG_CIFS_ACL is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_CODA_FS is not set
-# CONFIG_AFS_FS is not set
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-CONFIG_MAC_PARTITION=y
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_KARMA_PARTITION is not set
-# CONFIG_EFI_PARTITION is not set
-# CONFIG_SYSV68_PARTITION is not set
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="iso8859-1"
-CONFIG_NLS_CODEPAGE_437=y
-# CONFIG_NLS_CODEPAGE_737 is not set
-# CONFIG_NLS_CODEPAGE_775 is not set
-# CONFIG_NLS_CODEPAGE_850 is not set
-# CONFIG_NLS_CODEPAGE_852 is not set
-# CONFIG_NLS_CODEPAGE_855 is not set
-# CONFIG_NLS_CODEPAGE_857 is not set
-# CONFIG_NLS_CODEPAGE_860 is not set
-# CONFIG_NLS_CODEPAGE_861 is not set
-# CONFIG_NLS_CODEPAGE_862 is not set
-# CONFIG_NLS_CODEPAGE_863 is not set
-# CONFIG_NLS_CODEPAGE_864 is not set
-# CONFIG_NLS_CODEPAGE_865 is not set
-# CONFIG_NLS_CODEPAGE_866 is not set
-# CONFIG_NLS_CODEPAGE_869 is not set
-# CONFIG_NLS_CODEPAGE_936 is not set
-# CONFIG_NLS_CODEPAGE_950 is not set
-# CONFIG_NLS_CODEPAGE_932 is not set
-# CONFIG_NLS_CODEPAGE_949 is not set
-# CONFIG_NLS_CODEPAGE_874 is not set
-# CONFIG_NLS_ISO8859_8 is not set
-# CONFIG_NLS_CODEPAGE_1250 is not set
-# CONFIG_NLS_CODEPAGE_1251 is not set
-# CONFIG_NLS_ASCII is not set
-CONFIG_NLS_ISO8859_1=y
-# CONFIG_NLS_ISO8859_2 is not set
-# CONFIG_NLS_ISO8859_3 is not set
-# CONFIG_NLS_ISO8859_4 is not set
-# CONFIG_NLS_ISO8859_5 is not set
-# CONFIG_NLS_ISO8859_6 is not set
-# CONFIG_NLS_ISO8859_7 is not set
-# CONFIG_NLS_ISO8859_9 is not set
-# CONFIG_NLS_ISO8859_13 is not set
-# CONFIG_NLS_ISO8859_14 is not set
-# CONFIG_NLS_ISO8859_15 is not set
-# CONFIG_NLS_KOI8_R is not set
-# CONFIG_NLS_KOI8_U is not set
-CONFIG_NLS_UTF8=y
-
-#
-# Kernel hacking
-#
-CONFIG_PRINTK_TIME=y
-CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4
-CONFIG_ENABLE_WARN_DEPRECATED=y
-CONFIG_ENABLE_MUST_CHECK=y
-CONFIG_FRAME_WARN=1024
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_STRIP_ASM_SYMS is not set
-# CONFIG_UNUSED_SYMBOLS is not set
-CONFIG_DEBUG_FS=y
-# CONFIG_HEADERS_CHECK is not set
-# CONFIG_DEBUG_SECTION_MISMATCH is not set
-CONFIG_DEBUG_KERNEL=y
-# CONFIG_DEBUG_SHIRQ is not set
-# CONFIG_LOCKUP_DETECTOR is not set
-# CONFIG_HARDLOCKUP_DETECTOR is not set
-CONFIG_DETECT_HUNG_TASK=y
-CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120
-# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
-CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
-CONFIG_SCHED_DEBUG=y
-CONFIG_SCHEDSTATS=y
-CONFIG_TIMER_STATS=y
-# CONFIG_DEBUG_OBJECTS is not set
-# CONFIG_DEBUG_SLAB is not set
-# CONFIG_DEBUG_KMEMLEAK is not set
-# CONFIG_DEBUG_RT_MUTEXES is not set
-# CONFIG_RT_MUTEX_TESTER is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_MUTEXES is not set
-# CONFIG_DEBUG_LOCK_ALLOC is not set
-# CONFIG_PROVE_LOCKING is not set
-# CONFIG_SPARSE_RCU_POINTER is not set
-# CONFIG_LOCK_STAT is not set
-# CONFIG_DEBUG_ATOMIC_SLEEP is not set
-# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
-CONFIG_STACKTRACE=y
-# CONFIG_DEBUG_STACK_USAGE is not set
-# CONFIG_DEBUG_KOBJECT is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_VM is not set
-# CONFIG_DEBUG_WRITECOUNT is not set
-# CONFIG_DEBUG_MEMORY_INIT is not set
-# CONFIG_DEBUG_LIST is not set
-# CONFIG_TEST_LIST_SORT is not set
-# CONFIG_DEBUG_SG is not set
-# CONFIG_DEBUG_NOTIFIERS is not set
-# CONFIG_DEBUG_CREDENTIALS is not set
-# CONFIG_BOOT_PRINTK_DELAY is not set
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_BACKTRACE_SELF_TEST is not set
-# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
-# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
-# CONFIG_LKDTM is not set
-# CONFIG_FAULT_INJECTION is not set
-# CONFIG_LATENCYTOP is not set
-# CONFIG_SYSCTL_SYSCALL_CHECK is not set
-# CONFIG_DEBUG_PAGEALLOC is not set
-CONFIG_NOP_TRACER=y
-CONFIG_HAVE_FUNCTION_TRACER=y
-CONFIG_HAVE_DYNAMIC_FTRACE=y
-CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
-CONFIG_HAVE_C_RECORDMCOUNT=y
-CONFIG_RING_BUFFER=y
-CONFIG_EVENT_TRACING=y
-CONFIG_EVENT_POWER_TRACING_DEPRECATED=y
-CONFIG_CONTEXT_SWITCH_TRACER=y
-CONFIG_RING_BUFFER_ALLOW_SWAP=y
-CONFIG_TRACING=y
-CONFIG_GENERIC_TRACER=y
-CONFIG_TRACING_SUPPORT=y
-CONFIG_FTRACE=y
-# CONFIG_FUNCTION_TRACER is not set
-# CONFIG_IRQSOFF_TRACER is not set
-# CONFIG_SCHED_TRACER is not set
-CONFIG_BRANCH_PROFILE_NONE=y
-# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
-# CONFIG_PROFILE_ALL_BRANCHES is not set
-# CONFIG_STACK_TRACER is not set
-CONFIG_BLK_DEV_IO_TRACE=y
-# CONFIG_FTRACE_STARTUP_TEST is not set
-# CONFIG_RING_BUFFER_BENCHMARK is not set
-# CONFIG_DYNAMIC_DEBUG is not set
-# CONFIG_DMA_API_DEBUG is not set
-# CONFIG_ATOMIC64_SELFTEST is not set
-# CONFIG_ASYNC_RAID6_TEST is not set
-# CONFIG_SAMPLES is not set
-CONFIG_HAVE_ARCH_KGDB=y
-# CONFIG_KGDB is not set
-# CONFIG_TEST_KSTRTOX is not set
-# CONFIG_STRICT_DEVMEM is not set
-CONFIG_ARM_UNWIND=y
-# CONFIG_DEBUG_USER is not set
-CONFIG_DEBUG_LL=y
-CONFIG_DEBUG_LL_UART_NONE=y
-# CONFIG_DEBUG_ICEDCC is not set
-CONFIG_EARLY_PRINTK=y
-CONFIG_DEBUG_JTAG_ENABLE=y
-
-#
-# Security options
-#
-CONFIG_KEYS=y
-# CONFIG_ENCRYPTED_KEYS is not set
-# CONFIG_KEYS_DEBUG_PROC_KEYS is not set
-# CONFIG_SECURITY_DMESG_RESTRICT is not set
-CONFIG_SECURITY=y
-CONFIG_SECURITYFS=y
-# CONFIG_SECURITY_NETWORK is not set
-# CONFIG_SECURITY_PATH is not set
-# CONFIG_SECURITY_TOMOYO is not set
-# CONFIG_SECURITY_APPARMOR is not set
-# CONFIG_IMA is not set
-# CONFIG_EVM is not set
-CONFIG_DEFAULT_SECURITY_DAC=y
-CONFIG_DEFAULT_SECURITY=""
-CONFIG_XOR_BLOCKS=m
-CONFIG_ASYNC_CORE=m
-CONFIG_ASYNC_MEMCPY=m
-CONFIG_ASYNC_XOR=m
-CONFIG_ASYNC_PQ=m
-CONFIG_ASYNC_RAID6_RECOV=m
-CONFIG_CRYPTO=y
-
-#
-# Crypto core or helper
-#
-CONFIG_CRYPTO_ALGAPI=y
-CONFIG_CRYPTO_ALGAPI2=y
-CONFIG_CRYPTO_AEAD=m
-CONFIG_CRYPTO_AEAD2=y
-CONFIG_CRYPTO_BLKCIPHER=m
-CONFIG_CRYPTO_BLKCIPHER2=y
-CONFIG_CRYPTO_HASH=y
-CONFIG_CRYPTO_HASH2=y
-CONFIG_CRYPTO_RNG2=y
-CONFIG_CRYPTO_PCOMP2=y
-CONFIG_CRYPTO_MANAGER=m
-CONFIG_CRYPTO_MANAGER2=y
-# CONFIG_CRYPTO_USER is not set
-CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y
-# CONFIG_CRYPTO_GF128MUL is not set
-# CONFIG_CRYPTO_NULL is not set
-CONFIG_CRYPTO_WORKQUEUE=y
-# CONFIG_CRYPTO_CRYPTD is not set
-CONFIG_CRYPTO_AUTHENC=m
-# CONFIG_CRYPTO_TEST is not set
-
-#
-# Authenticated Encryption with Associated Data
-#
-# CONFIG_CRYPTO_CCM is not set
-# CONFIG_CRYPTO_GCM is not set
-# CONFIG_CRYPTO_SEQIV is not set
-
-#
-# Block modes
-#
-CONFIG_CRYPTO_CBC=m
-# CONFIG_CRYPTO_CTR is not set
-# CONFIG_CRYPTO_CTS is not set
-CONFIG_CRYPTO_ECB=m
-# CONFIG_CRYPTO_LRW is not set
-# CONFIG_CRYPTO_PCBC is not set
-# CONFIG_CRYPTO_XTS is not set
-
-#
-# Hash modes
-#
-CONFIG_CRYPTO_HMAC=m
-# CONFIG_CRYPTO_XCBC is not set
-# CONFIG_CRYPTO_VMAC is not set
-
-#
-# Digest
-#
-CONFIG_CRYPTO_CRC32C=y
-# CONFIG_CRYPTO_GHASH is not set
-CONFIG_CRYPTO_MD4=m
-CONFIG_CRYPTO_MD5=m
-CONFIG_CRYPTO_MICHAEL_MIC=y
-# CONFIG_CRYPTO_RMD128 is not set
-# CONFIG_CRYPTO_RMD160 is not set
-# CONFIG_CRYPTO_RMD256 is not set
-# CONFIG_CRYPTO_RMD320 is not set
-CONFIG_CRYPTO_SHA1=m
-# CONFIG_CRYPTO_SHA256 is not set
-# CONFIG_CRYPTO_SHA512 is not set
-# CONFIG_CRYPTO_TGR192 is not set
-# CONFIG_CRYPTO_WP512 is not set
-
-#
-# Ciphers
-#
-CONFIG_CRYPTO_AES=y
-# CONFIG_CRYPTO_ANUBIS is not set
-CONFIG_CRYPTO_ARC4=y
-# CONFIG_CRYPTO_BLOWFISH is not set
-# CONFIG_CRYPTO_CAMELLIA is not set
-# CONFIG_CRYPTO_CAST5 is not set
-# CONFIG_CRYPTO_CAST6 is not set
-CONFIG_CRYPTO_DES=m
-# CONFIG_CRYPTO_FCRYPT is not set
-# CONFIG_CRYPTO_KHAZAD is not set
-# CONFIG_CRYPTO_SALSA20 is not set
-# CONFIG_CRYPTO_SEED is not set
-# CONFIG_CRYPTO_SERPENT is not set
-# CONFIG_CRYPTO_TEA is not set
-# CONFIG_CRYPTO_TWOFISH is not set
-
-#
-# Compression
-#
-CONFIG_CRYPTO_DEFLATE=y
-# CONFIG_CRYPTO_ZLIB is not set
-CONFIG_CRYPTO_LZO=y
-
-#
-# Random Number Generation
-#
-# CONFIG_CRYPTO_ANSI_CPRNG is not set
-# CONFIG_CRYPTO_USER_API_HASH is not set
-# CONFIG_CRYPTO_USER_API_SKCIPHER is not set
-CONFIG_CRYPTO_HW=y
-# CONFIG_CRYPTO_DEV_OMAP_SHAM is not set
-# CONFIG_CRYPTO_DEV_OMAP_AES is not set
-CONFIG_BINARY_PRINTF=y
-
-#
-# Library routines
-#
-CONFIG_RAID6_PQ=m
-CONFIG_BITREVERSE=y
-CONFIG_CRC_CCITT=y
-CONFIG_CRC16=y
-CONFIG_CRC_T10DIF=y
-CONFIG_CRC_ITU_T=y
-CONFIG_CRC32=y
-CONFIG_CRC7=y
-CONFIG_LIBCRC32C=y
-# CONFIG_CRC8 is not set
-CONFIG_AUDIT_GENERIC=y
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
-CONFIG_LZO_COMPRESS=y
-CONFIG_LZO_DECOMPRESS=y
-CONFIG_XZ_DEC=y
-CONFIG_XZ_DEC_X86=y
-CONFIG_XZ_DEC_POWERPC=y
-CONFIG_XZ_DEC_IA64=y
-CONFIG_XZ_DEC_ARM=y
-CONFIG_XZ_DEC_ARMTHUMB=y
-CONFIG_XZ_DEC_SPARC=y
-CONFIG_XZ_DEC_BCJ=y
-# CONFIG_XZ_DEC_TEST is not set
-CONFIG_DECOMPRESS_GZIP=y
-CONFIG_DECOMPRESS_BZIP2=y
-CONFIG_DECOMPRESS_LZMA=y
-CONFIG_DECOMPRESS_XZ=y
-CONFIG_DECOMPRESS_LZO=y
-CONFIG_GENERIC_ALLOCATOR=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
-CONFIG_HAS_DMA=y
-CONFIG_NLATTR=y
-CONFIG_AVERAGE=y
-# CONFIG_CORDIC is not set
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/logo_linux_clut224.ppm b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/logo_linux_clut224.ppm
deleted file mode 100644
index 404cc6c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/logo_linux_clut224.ppm
+++ /dev/null
@@ -1,7053 +0,0 @@
-P3
-597 94
-255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 253 254 255 255 255 254 254 255 254 250 255 254 250 255 255 254 255 255 255 253 254 255 251
-255 254 255 255 254 255 254 251 249 254 252 250 254 255 251 254 252 250 254 254 254 255 253 254
-254 255 251 224 220 212 187 189 188 187 189 188 187 189 188 187 189 188 187 189 188 187 189 188
-253 252 247 253 253 255 254 255 251 255 255 255 253 253 255 254 255 251 249 252 246 255 255 253
-253 255 254 255 254 255 254 252 251 253 252 247 253 255 254 253 255 254 251 251 251 254 255 251
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 253 254 254 254 254 255 255 254 255 255 255 255 253 254 254 253 254 254 253 255 255 253
-253 255 254 187 189 188 113 113 120 97 100 105 53 60 64 97 100 105 113 113 120 172 178 183
-255 255 255 253 252 247 255 254 255 255 255 255 253 253 253 254 254 254 255 255 253 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 253 253 253 255 255 255 253 253 253 255 255 255 255 255 255 255 255 255 255 255 255
-254 251 249 254 255 255 249 254 246 254 255 255 172 178 183 140 141 138 110 110 107 59 64 62
-81 77 81 104 112 110 178 172 162 241 240 247 254 255 251 253 255 254 248 251 253 254 251 249
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 255 255 254 254 254 255 255 255 254 254 254 255 255 255 251 251 251 255 255 255 255 255 255
-253 255 254 230 230 230 178 172 162 110 110 107 88 95 83 60 64 65 104 112 110 125 131 132
-202 204 206 255 255 255 254 255 251 255 253 254 254 250 255 248 254 252 255 255 255 255 255 253
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-253 252 247 254 255 251 249 254 246 254 255 251 254 255 251 254 254 253 254 254 254 254 251 252
-254 255 251 253 252 247 255 255 253 253 253 255 219 227 224 145 151 154 97 100 105 48 49 51
-0 1 1 4 2 1 0 1 1 4 1 5 0 3 1 4 1 5 4 1 5 4 2 1
-0 3 1 21 19 24 59 60 62 104 112 110 172 178 183 253 253 255 255 255 255 254 255 251
-254 251 252 253 252 247 249 252 251 253 253 255 255 255 253 251 251 251 253 253 255 253 255 254
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 253 253 253 254 255 255 255 255 253 255 255 253 254 255 255 202 204 206
-71 81 83 57 60 56 59 59 56 59 64 62 54 64 59 56 64 62 56 64 62 54 67 66
-81 77 81 202 204 206 251 251 251 252 252 252 253 253 253 255 255 253 254 252 251 254 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 253 253 253 255 255 255 255 255 255 255 255 255 254 254 254 255 255 255 255 255 255
-254 255 251 254 255 255 224 220 212 88 95 83 62 65 65 56 64 62 53 63 60 58 65 69
-58 67 65 53 60 64 57 60 56 71 72 69 187 189 188 252 252 252 254 255 251 253 253 253
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 252 252 252 252 252 252 255 255 255 253 253 253 254 254 254 254 255 255 249 252 251
-156 160 157 60 60 63 62 61 67 58 59 68 57 60 56 53 64 53 58 62 65 58 62 65
-58 59 68 110 110 107 242 238 229 254 255 255 253 255 254 251 251 251 254 251 252 253 255 254
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 254 255 255 255 255 254 255 255 250 250 247 249 252 246 254 255 251 254 255 251 254 254 254
-254 255 255 219 227 224 110 110 107 21 19 24 0 0 0 0 0 0 0 3 1 0 3 1
-6 9 5 4 1 5 4 2 1 4 1 5 0 3 1 48 49 51 97 100 105 21 19 24
-4 1 5 0 1 1 0 0 0 0 3 1 0 3 1 0 0 0 81 77 81 178 172 162
-255 254 255 251 251 251 253 252 247 253 253 253 254 250 255 255 253 254 254 255 251 249 252 251
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 252 252 252 255 255 255 255 255 255 252 252 252 254 255 255 187 189 188 58 64 64
-58 65 69 57 58 61 62 65 65 58 62 65 58 62 63 62 66 62 62 65 65 58 62 65
-58 65 69 57 63 63 187 189 188 254 255 255 255 254 255 254 255 251 254 255 251 254 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 254 254 254 254 254 254 255 255 255 255 255 255 254 254 254 255 255 255 253 253 253
-249 254 254 224 220 212 71 72 69 58 62 63 58 65 69 58 64 64 59 64 62 62 61 67
-59 59 56 62 61 67 58 64 64 56 66 64 57 58 61 172 178 183 254 255 251 250 252 254
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 254 254 255 255 255 255 255 255 252 252 252 254 254 254 252 252 252 254 255 255 140 141 138
-60 61 69 62 61 67 58 66 61 53 63 60 56 66 64 54 67 66 62 61 67 59 60 62
-51 61 71 59 60 64 97 100 105 241 240 247 248 254 252 255 253 254 255 255 253 248 254 252
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 254 253 254 251 252 254 251 254 253 253 255 255 255 253 254 252 251 255 255 253 178 172 162
-62 70 69 0 0 0 4 2 1 0 1 1 0 1 1 71 72 69 109 102 83 142 120 69
-148 133 63 165 143 59 169 141 58 166 134 56 169 138 59 182 158 106 254 252 244 249 254 254
-168 136 64 142 120 69 109 102 83 102 79 82 0 1 1 0 3 1 0 3 1 4 2 1
-21 19 24 125 131 132 241 240 247 255 254 255 254 255 251 254 252 244 253 252 247 255 255 253
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-253 253 255 255 255 255 254 252 250 254 254 253 254 255 255 230 230 230 68 69 75 60 64 65
-58 62 65 71 68 65 94 90 61 113 104 59 147 124 59 128 113 57 97 78 60 62 66 62
-58 62 65 58 62 65 62 70 69 230 230 230 253 253 255 254 255 251 253 252 247 254 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 254 254 255 255 255 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254
-241 240 247 81 77 81 59 64 62 58 65 69 59 59 56 97 78 60 128 113 57 147 124 59
-128 99 63 101 91 62 71 68 65 54 64 59 54 67 66 60 64 65 202 206 211 255 255 253
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 254 254 254 253 253 253 252 252 252 255 255 255 254 255 255 160 163 161 57 63 61
-58 62 63 57 60 56 62 70 69 142 101 66 174 105 47 185 105 60 155 104 59 85 80 60
-62 66 56 54 67 66 59 64 62 110 110 107 249 254 246 254 250 255 254 251 249 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-249 254 254 248 254 252 255 255 253 255 255 253 250 250 247 172 178 183 21 19 24 0 0 0
-0 1 1 4 1 5 21 19 24 109 102 83 148 133 63 164 144 50 166 144 56 169 141 58
-169 138 59 173 138 52 169 144 61 168 136 64 173 142 59 169 141 58 178 172 162 250 252 254
-169 144 61 166 144 56 169 141 58 173 145 52 165 143 59 142 120 69 94 90 61 4 1 5
-0 3 1 4 2 1 21 19 24 172 178 183 249 254 254 253 255 254 250 252 254 255 254 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 255 255 252 252 252 255 255 253 255 255 253 254 255 255 125 131 132 60 64 65 57 63 63
-62 66 62 128 113 57 161 125 43 162 125 53 156 125 56 150 128 52 158 134 59 142 101 66
-71 65 56 58 65 69 54 64 59 125 131 132 255 254 255 253 252 247 254 255 255 254 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 254 254 255 255 255 255 255 255 253 253 253 255 255 255 254 254 254 254 254 254 255 255 255
-160 163 161 57 63 63 51 61 71 62 66 62 128 113 57 148 133 63 161 124 50 161 124 50
-155 128 52 155 126 57 147 124 59 72 76 65 53 64 53 58 65 69 81 77 81 254 250 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 253 253 253 254 254 254 255 255 255 255 255 255 241 240 247 68 69 75 60 64 65
-53 67 71 112 79 60 200 101 40 210 105 40 213 100 46 212 104 43 211 99 45 208 103 45
-128 93 57 59 64 62 58 62 63 62 65 65 172 178 183 255 255 255 255 255 255 255 253 254
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-249 252 254 254 255 255 254 255 251 202 204 206 62 70 69 4 1 5 0 1 1 0 3 1
-62 66 56 137 137 94 158 134 59 173 142 59 166 134 56 169 144 61 169 141 58 169 141 58
-173 145 52 169 138 59 165 143 59 166 144 56 173 138 52 173 142 59 169 144 61 242 238 229
-214 206 175 165 143 59 173 142 59 169 144 61 169 144 61 168 131 61 169 141 58 158 134 59
-109 102 83 4 2 1 4 1 5 0 0 0 88 95 83 241 240 247 255 255 253 253 253 253
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-253 253 255 255 255 253 255 255 253 255 255 255 241 240 247 57 63 63 59 64 62 59 59 56
-128 99 63 157 124 59 161 124 50 158 127 55 152 124 51 154 129 46 157 126 52 158 124 54
-113 104 59 66 60 61 56 64 62 58 64 64 241 240 247 254 255 251 253 253 255 254 254 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 253 253 253 255 255 255 251 251 251
-81 77 81 54 64 59 58 66 61 110 92 61 152 127 56 157 124 59 157 124 59 155 127 54
-152 124 51 161 124 50 156 124 53 142 120 69 69 60 69 54 64 59 58 68 63 224 220 212
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 253 253 253 255 255 255 172 178 183 60 64 65 57 63 61
-62 66 62 198 102 49 213 105 50 213 100 46 213 105 50 208 103 45 217 98 38 213 100 46
-210 105 51 112 79 60 56 64 62 53 63 60 125 131 132 253 255 254 253 255 254 254 254 254
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 252 250 254 255 251 125 131 132 0 0 0 4 1 5 0 1 1 21 19 24 109 102 83
-169 138 59 169 138 59 169 144 61 169 138 59 169 138 59 173 142 59 169 141 58 166 144 56
-173 142 59 169 141 58 165 143 59 165 143 59 166 144 56 169 141 58 169 144 61 182 158 106
-255 253 254 182 158 106 166 134 56 169 144 61 173 142 59 173 138 52 173 145 52 165 143 59
-166 144 56 148 133 63 101 91 62 4 1 5 4 2 1 48 49 51 219 227 224 253 255 254
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 255 255 254 252 251 255 255 253 255 255 255 187 189 188 58 64 64 59 59 56 72 73 56
-155 127 54 152 124 51 162 125 53 152 124 51 158 127 55 156 124 53 156 124 53 158 132 49
-148 133 63 71 65 56 56 66 64 57 58 61 202 204 206 254 255 251 250 252 254 255 255 253
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 254 254 255 255 255 255 255 255 255 255 255 255 255 255 253 253 253 255 255 255 219 227 224
-60 61 69 58 67 65 59 59 56 147 124 59 161 125 43 157 126 52 150 128 52 155 126 57
-157 124 59 158 124 56 166 129 59 152 124 51 85 80 60 59 64 62 56 66 64 156 160 157
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 255 255 252 252 252 251 251 251 255 255 255 255 255 255 125 131 132 58 62 63 62 65 65
-112 79 60 213 105 46 208 103 45 207 105 48 209 99 39 210 105 40 217 104 40 210 102 46
-216 99 44 185 105 60 56 64 62 54 64 59 58 65 69 253 255 254 249 254 254 255 255 253
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-202 206 211 48 49 51 0 3 1 0 3 1 0 0 0 109 102 83 148 133 63 173 138 52
-169 141 58 169 141 58 173 142 59 169 141 58 169 141 58 169 141 58 169 138 59 173 142 59
-166 144 56 169 138 59 173 138 52 169 141 58 168 136 64 173 138 52 168 136 64 166 144 56
-224 220 212 242 238 229 165 143 59 173 145 52 168 136 64 166 144 56 165 143 59 169 138 59
-169 138 59 166 144 56 165 143 59 142 120 69 21 19 24 0 1 1 21 19 24 202 204 206
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-253 255 254 255 255 253 255 255 253 254 255 255 152 161 158 60 64 65 59 59 56 88 95 83
-155 127 54 159 126 56 156 124 53 155 128 52 155 127 54 157 124 59 158 124 54 157 126 52
-152 124 44 101 91 62 57 63 63 59 64 62 154 157 157 254 255 251 254 255 255 254 255 251
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 254 254 255 255 255 253 253 253 254 254 254 255 255 255 255 255 255 255 255 255 187 189 188
-59 64 62 53 63 60 81 77 81 155 128 52 162 124 55 157 127 54 152 124 51 162 125 53
-158 126 53 158 127 55 154 129 46 150 126 55 110 92 61 59 64 62 58 62 65 125 131 132
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 255 251 254 255 255 254 254 254 255 255 255 254 254 254 110 110 107 58 62 63 57 63 63
-155 104 59 211 104 39 210 99 44 207 105 48 217 104 40 207 99 38 207 105 48 210 105 51
-209 105 45 211 99 45 71 68 65 59 60 62 53 60 64 219 227 224 254 255 251 254 252 251
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 252 252 252 255 255 255 255 255 255 253 253 253 255 255 255 254 254 254 255 255 255
-254 255 251 254 255 255 254 255 251 254 252 250 254 255 251 254 255 251 254 255 251 172 178 183
-6 9 5 0 0 0 4 1 5 4 2 1 137 137 94 165 143 59 169 141 58 169 141 58
-168 136 64 165 143 59 169 141 58 169 141 58 169 141 58 169 141 58 166 144 56 169 138 59
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-182 158 106 254 255 255 178 172 162 166 144 56 166 144 56 173 138 52 166 144 56 169 138 59
-169 141 58 165 143 59 169 138 59 173 142 59 158 134 59 85 80 60 4 1 5 6 9 5
-202 206 211 252 252 252 255 255 255 249 254 246 253 255 254 254 255 251 251 251 251 254 252 251
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 253 152 161 158 60 64 65 57 63 61 101 91 62
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-158 125 54 101 91 62 58 64 64 58 62 65 156 160 157 254 255 255 255 253 254 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 254 255 255 156 160 157
-58 64 64 57 58 61 101 91 62 158 124 54 158 127 55 158 127 55 156 126 54 158 125 54
-158 125 54 156 126 54 156 125 56 155 127 54 128 113 57 58 62 65 58 62 65 104 112 110
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 254 255 255 253 255 254 255 253 254 255 255 255 57 63 63 58 64 64 60 60 63
-198 102 49 198 102 49 210 102 46 212 101 45 211 99 45 210 102 46 210 102 46 208 103 45
-211 102 45 212 101 45 85 80 60 58 62 63 53 60 64 202 204 206 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 254 254 253 253 253 255 255 255 255 255 255 253 253 253 254 254 254 255 255 255 253 253 253
-250 252 254 254 255 251 250 252 246 255 254 255 219 227 224 125 131 132 21 19 24 0 3 1
-0 0 0 4 1 5 0 1 1 4 2 1 48 49 51 109 102 83 164 144 50 173 142 59
-173 145 52 173 142 59 166 144 56 169 138 59 169 141 58 169 141 58 169 138 59 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-166 144 56 214 206 175 253 252 247 169 144 61 173 142 59 169 138 59 166 144 56 169 141 58
-169 138 59 169 141 58 169 141 58 165 143 59 165 143 59 166 144 56 109 102 83 0 1 1
-21 19 24 230 230 230 250 252 246 255 255 253 253 253 255 253 253 255 254 255 251 252 252 252
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 253 152 161 158 60 64 65 57 63 61 101 91 62
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-158 125 54 101 91 62 58 64 64 58 62 65 156 160 157 254 255 255 255 253 254 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 254 255 255 156 160 157
-58 64 64 58 62 63 101 91 62 158 124 56 156 126 54 158 127 55 156 126 54 159 126 56
-158 125 54 156 126 54 156 125 56 155 127 54 128 113 57 58 62 65 58 62 65 104 112 110
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 254 255 255 253 255 254 255 253 254 255 255 255 57 63 63 58 64 64 60 60 63
-207 105 48 207 105 48 211 102 45 212 104 43 211 99 45 211 102 45 211 102 45 211 102 45
-211 102 45 212 101 45 85 80 60 58 62 63 53 60 64 202 204 206 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-253 253 253 255 255 255 254 254 254 252 252 252 255 255 255 255 255 255 252 252 252 252 252 252
-252 252 252 254 252 244 219 227 224 97 100 105 0 3 1 4 1 5 4 2 1 4 1 5
-48 49 51 81 77 81 48 49 51 4 1 5 0 3 1 0 0 0 62 66 56 142 120 69
-166 134 56 173 142 59 173 142 59 173 138 52 168 136 64 169 141 58 173 142 59 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 138 59 169 144 61 253 255 254 214 206 175 169 138 59 169 144 61 166 134 56 166 144 56
-173 142 59 169 138 59 166 144 56 165 143 59 173 142 59 173 138 52 164 144 50 109 102 83
-4 1 5 48 49 51 241 240 247 255 255 253 252 252 252 254 255 255 255 255 253 249 252 251
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 253 152 161 158 60 64 65 57 63 61 101 91 62
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-158 125 54 101 91 62 58 64 64 58 62 65 156 160 157 254 255 255 255 253 254 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 254 255 255 156 160 157
-58 64 64 58 62 63 101 91 62 159 126 56 156 126 54 158 126 53 156 126 54 159 126 56
-158 125 54 156 126 54 156 125 56 155 127 54 128 113 57 58 62 65 58 62 65 104 112 110
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 254 255 255 253 255 254 255 253 254 255 255 255 57 63 63 58 64 64 60 60 63
-210 102 46 211 102 45 212 104 43 210 99 44 211 99 45 211 102 45 212 104 43 212 104 43
-211 102 45 212 101 45 85 80 60 58 62 63 53 60 64 202 204 206 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 251 251 251 255 255 255 254 254 254 253 253 253 253 253 253 252 252 252 255 255 255
-255 254 255 110 110 107 0 0 0 4 1 5 0 0 0 62 66 62 128 100 96 159 134 56
-173 138 52 169 144 61 164 144 50 166 134 56 142 120 69 62 61 67 4 1 5 0 3 1
-109 102 83 165 143 59 173 142 59 169 138 59 166 144 56 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-173 138 52 169 141 58 214 206 175 255 255 253 182 158 106 169 141 58 169 141 58 169 144 61
-166 134 56 169 141 58 173 145 52 169 138 59 173 142 59 173 142 59 169 141 58 165 143 59
-94 90 61 0 1 1 97 100 105 253 253 255 255 255 253 255 254 255 249 254 246 254 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 253 152 161 158 60 64 65 57 63 61 101 91 62
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-158 125 54 101 91 62 58 64 64 58 62 65 156 160 157 254 255 255 255 253 254 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 254 255 255 156 160 157
-58 64 64 58 62 63 101 91 62 159 126 56 156 126 54 158 126 53 156 126 54 159 126 56
-158 125 54 156 126 54 156 125 56 155 127 54 128 113 57 58 62 65 58 62 65 104 112 110
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 254 255 255 253 255 254 255 253 254 255 255 255 57 63 63 58 64 64 60 60 63
-212 101 45 211 99 45 210 99 44 212 101 45 211 102 45 211 102 45 211 102 45 209 99 39
-211 102 45 212 101 45 85 80 60 58 62 63 53 60 64 202 204 206 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 254 254 255 255 255 255 255 255 254 254 254 255 255 255 254 254 254 255 255 255 230 230 230
-48 49 51 4 1 5 4 2 1 4 1 5 109 102 83 165 143 59 164 144 50 165 143 59
-169 144 61 168 136 64 173 142 59 166 144 56 169 141 58 169 144 61 109 102 83 4 2 1
-0 0 0 109 102 83 165 143 59 173 142 59 169 141 58 169 144 61 164 144 50 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-168 136 64 169 141 58 169 144 61 242 238 229 242 238 229 168 136 64 169 144 61 166 134 56
-169 144 61 169 144 61 169 141 58 173 145 52 169 138 59 165 143 59 169 144 61 173 138 52
-168 136 64 71 65 56 0 3 1 172 178 183 254 251 252 253 252 247 254 255 251 248 251 253
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 253 152 161 158 60 64 65 57 63 61 101 91 62
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-158 125 54 101 91 62 58 64 64 58 62 65 156 160 157 254 255 255 255 253 254 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 254 255 255 156 160 157
-58 64 64 58 62 63 101 91 62 158 124 56 156 126 54 158 126 53 156 126 54 158 125 54
-158 125 54 156 126 54 156 125 56 155 127 54 128 113 57 58 62 65 58 62 65 104 112 110
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 254 255 255 253 255 254 255 253 254 255 255 255 57 63 63 58 64 64 60 60 63
-212 101 45 211 99 45 212 101 45 210 102 46 210 102 46 210 102 46 211 102 45 212 104 43
-211 102 45 212 101 45 85 80 60 58 62 63 53 60 64 202 204 206 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 251 251 251 255 255 255 255 255 255 255 255 255 255 255 255 253 253 253 62 65 65
-0 0 0 0 1 1 0 0 0 142 120 69 169 144 61 173 138 52 169 144 61 168 136 64
-173 145 52 169 141 58 169 138 59 169 138 59 173 138 52 169 138 59 169 138 59 142 120 69
-0 0 0 4 1 5 142 120 69 164 144 50 173 142 59 169 144 61 165 143 59 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 166 134 56 169 144 61 178 172 162 254 251 249 178 172 162 169 144 61 166 144 56
-169 138 59 169 141 58 166 144 56 169 138 59 166 144 56 169 144 61 169 141 58 169 141 58
-173 142 59 148 133 63 0 3 1 21 19 24 242 238 229 254 252 244 254 254 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 253 152 161 158 60 64 65 57 63 61 101 91 62
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-158 125 54 101 91 62 58 64 64 58 62 65 156 160 157 254 255 255 255 253 254 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 254 255 255 156 160 157
-58 64 64 58 62 63 101 91 62 158 124 56 156 126 54 158 126 53 156 126 54 158 125 54
-158 125 54 156 126 54 156 125 56 155 127 54 128 113 57 58 62 65 58 62 65 104 112 110
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 254 255 255 253 255 254 255 253 254 255 255 255 57 63 63 58 64 64 60 60 63
-210 102 46 210 102 46 211 102 45 210 102 46 210 102 46 207 105 48 210 102 46 211 102 45
-211 102 45 212 101 45 85 80 60 58 62 63 53 60 64 202 204 206 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 254 254 255 255 255 254 254 254 254 254 254 254 254 254 254 254 254 125 131 132 0 1 1
-4 1 5 4 2 1 128 100 96 165 143 59 173 142 59 168 136 64 173 145 52 166 144 56
-168 136 64 169 141 58 168 136 64 169 144 61 173 142 59 169 138 59 168 136 64 169 141 58
-142 120 69 4 2 1 48 49 51 165 143 59 169 138 59 169 138 59 169 144 61 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 173 142 59 169 141 58 169 144 61 250 247 249 254 255 251 158 134 59 173 142 59
-169 144 61 173 138 52 173 142 59 169 144 61 169 141 58 169 138 59 169 141 58 166 144 56
-169 138 59 164 144 50 109 102 83 4 2 1 110 110 107 253 252 247 255 253 254 254 255 251
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 253 152 161 158 60 64 65 57 63 61 101 91 62
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-158 125 54 101 91 62 58 64 64 58 62 65 156 160 157 254 255 255 255 253 254 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 254 255 255 156 160 157
-58 64 64 58 64 64 101 91 62 158 124 56 156 126 54 158 126 53 156 126 54 158 125 54
-158 125 54 156 126 54 156 125 56 155 127 54 128 113 57 58 62 65 58 62 65 104 112 110
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 254 255 255 253 255 254 255 253 254 255 255 255 57 63 63 58 64 64 60 60 63
-210 102 46 210 102 46 212 101 45 211 102 45 210 102 46 210 102 46 211 102 45 212 101 45
-211 102 45 212 101 45 85 80 60 58 62 63 53 60 64 202 204 206 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-253 253 253 255 255 255 255 255 255 254 254 254 255 255 255 219 227 224 21 19 24 0 0 0
-0 1 1 101 91 62 165 143 59 173 145 52 168 136 64 166 144 56 173 145 52 169 138 59
-173 142 59 165 143 59 166 144 56 169 141 58 166 134 56 164 144 50 173 145 52 169 141 58
-169 144 61 88 95 83 0 3 1 128 100 96 173 138 52 169 138 59 169 144 61 166 144 56
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 138 59 169 144 61 173 138 52 168 136 64 178 172 162 253 255 254 224 220 212 173 142 59
-173 138 52 173 142 59 169 138 59 169 141 58 169 141 58 169 141 58 169 138 59 166 144 56
-169 141 58 169 144 61 168 136 64 4 2 1 4 1 5 230 230 230 253 252 247 253 255 254
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 253 152 161 158 60 64 65 57 63 61 101 91 62
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-158 125 54 101 91 62 58 64 64 58 62 65 156 160 157 254 255 255 255 253 254 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 254 255 255 156 160 157
-58 64 64 58 64 64 101 91 62 158 124 56 156 124 53 158 126 53 156 126 54 158 125 54
-158 125 54 156 126 54 156 125 56 155 127 54 128 113 57 58 62 65 58 62 65 104 112 110
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 254 255 255 253 255 254 255 253 254 255 255 255 57 63 63 58 64 64 60 60 63
-210 102 46 210 102 46 212 104 43 212 104 43 212 101 45 211 102 45 212 101 45 211 99 45
-211 102 45 212 101 45 85 80 60 58 62 63 53 60 64 202 204 206 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-253 252 247 249 254 254 254 255 251 255 254 255 254 255 255 97 100 105 4 2 1 4 1 5
-4 1 5 148 133 63 169 141 58 169 138 59 166 144 56 165 143 59 166 134 56 173 142 59
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 138 59 169 138 59 48 49 51 81 77 81 169 141 58 169 141 58 173 138 52 169 141 58
-169 144 61 164 144 50 169 141 58 165 143 59 165 143 59 169 144 61 169 138 59 169 141 58
-173 142 59 169 138 59 166 144 56 164 144 50 169 144 61 242 238 229 254 255 255 182 158 106
-168 136 64 173 138 52 169 144 61 169 144 61 168 136 64 166 144 56 169 144 61 169 141 58
-169 141 58 164 144 50 165 143 59 109 102 83 4 1 5 88 95 83 253 255 254 255 253 254
-255 255 255 255 255 255 252 252 252 254 254 254 255 255 255 252 252 252 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 253 152 161 158 60 64 65 57 63 61 101 91 62
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-158 125 54 101 91 62 58 62 65 58 62 65 152 161 158 253 253 253 254 252 251 254 255 255
-255 255 255 252 252 252 254 254 254 255 255 255 253 255 254 254 255 255 253 255 254 253 255 254
-254 254 254 255 255 255 252 252 252 254 254 254 252 252 252 255 255 255 254 255 255 253 253 253
-254 254 254 255 255 255 254 254 254 252 252 252 255 255 255 255 255 255 252 252 252 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 254 254 254 252 252 252 255 255 255 254 254 254
-255 255 255 255 255 255 252 252 252 255 255 255 255 255 255 255 255 255 253 253 255 254 254 255
-254 254 253 255 255 253 255 255 255 252 252 252 254 254 254 255 255 255 251 251 251 255 255 253
-252 252 252 255 255 255 253 253 253 255 255 255 255 255 255 254 254 254 252 252 252 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 253 253 253 254 254 254 255 255 255 254 254 254 254 254 254 255 255 255 254 255 255
-254 254 254 255 255 255 255 255 255 255 255 255 253 253 253 253 255 254 253 255 254 249 254 254
-255 255 253 255 255 253 254 254 253 252 252 252 253 253 253 255 255 255 255 255 255 253 253 255
-255 255 255 255 255 255 255 255 255 253 253 253 255 255 255 255 255 255 252 252 252 255 255 255
-254 254 254 254 254 254 254 254 254 254 255 255 254 254 254 255 255 255 253 253 253 254 254 254
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 254 254 254
-253 253 253 255 255 255 252 252 252 253 253 253 255 255 255 254 254 254 254 254 254 254 254 254
-254 255 255 254 255 255 255 255 255 255 255 255 254 254 254 255 255 255 255 255 255 255 255 255
-255 253 254 255 255 253 254 255 251 255 255 253 255 255 253 251 251 251 255 255 253 254 255 251
-255 255 255 255 255 255 252 252 252 255 255 255 255 255 255 255 255 255 252 252 252 255 255 255
-255 255 255 253 253 253 255 255 255 253 253 253 254 254 254 255 255 255 253 253 253 254 254 254
-253 255 254 254 255 255 255 255 255 252 252 252 255 255 255 253 253 253 253 253 253 156 160 157
-58 62 63 58 64 64 101 91 62 155 126 57 158 125 54 156 126 54 156 124 53 156 126 54
-158 125 54 156 126 54 156 125 56 155 127 54 128 113 57 58 62 65 58 62 65 104 112 110
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 253 253 253 255 255 255 255 255 255 252 252 252 254 254 254 255 255 255
-255 255 255 254 254 254 254 254 254 254 254 254 255 255 255 255 255 255 253 253 253 255 255 255
-254 252 251 255 255 253 255 255 253 251 251 251 255 255 253 255 255 253 253 252 247 254 255 251
-255 255 255 255 255 255 253 253 253 255 255 255 255 255 255 252 252 252 253 253 253 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 254 255 255 253 255 254 255 253 254 255 255 255 57 63 63 58 64 64 60 60 63
-211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45
-209 105 45 210 102 46 85 80 60 58 62 63 57 63 63 202 204 206 254 254 254 253 255 254
-254 252 250 255 255 253 255 255 255 253 255 254 250 252 254 254 255 255 253 253 253 255 255 255
-253 253 253 254 255 255 253 253 255 250 252 254 254 255 255 255 255 255 254 252 251 255 255 253
-255 255 255 255 255 255 254 254 254 255 255 255 255 255 255 255 255 255 252 252 252 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 254 254 254 255 255 255 253 253 253 255 255 255 254 254 254 255 255 255 255 255 255
-254 252 251 254 252 250 255 255 253 255 255 255 254 255 255 253 253 253 255 255 255 255 254 255
-255 254 255 254 251 252 254 251 249 255 255 253 251 251 251 255 255 253 249 252 251 255 255 253
-254 255 255 254 255 255 254 254 254 255 255 255 255 255 255 255 255 255 253 253 253 254 254 254
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 253 253 253 255 255 255 254 254 254 255 255 255 255 255 255 251 251 251 255 255 255
-253 253 253 255 255 255 254 254 254 253 253 253 255 255 255 254 254 254 255 255 255 254 254 254
-255 255 255 255 255 255 251 251 251 255 255 255 252 252 252 252 252 252 255 255 255 255 255 255
-253 253 253 255 255 255 253 253 255 253 253 253 255 255 253 255 255 253 252 252 252 253 255 254
-254 255 255 255 255 255 254 254 254 255 255 255 254 254 254 255 255 255 253 255 254 254 255 255
-255 255 255 253 253 253 253 253 253 255 255 255 254 254 254 254 254 254 255 255 255 254 254 254
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 254 254 255 255 255 254 254 254 254 254 254 255 255 255 253 253 253 253 253 253 255 255 255
-255 255 255 251 251 251 255 255 255 253 253 253 255 255 255 255 255 255 253 253 253 254 254 254
-255 253 254 255 255 253 254 255 251 254 255 251 248 254 252 249 252 251 254 255 255 254 251 252
-252 252 252 254 255 255 254 254 254 255 255 255 255 255 255 255 255 255 255 255 255 253 253 253
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 253 253 253 255 254 255 251 253 253 255 219 227 224 0 3 1 4 1 5 0 1 1
-101 91 62 165 143 59 169 138 59 169 138 59 166 144 56 169 141 58 173 142 59 169 138 59
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 138 59 169 141 58 109 102 83 4 2 1 158 134 59 169 141 58 169 141 58 169 141 58
-168 136 64 173 142 59 173 142 59 169 141 58 169 138 59 169 138 59 173 138 52 169 138 59
-165 143 59 173 142 59 168 136 64 173 142 59 169 138 59 178 172 162 253 253 255 255 255 255
-169 144 61 169 144 61 169 138 59 169 138 59 166 144 56 166 144 56 169 138 59 166 144 56
-166 144 56 148 133 63 128 113 57 109 102 83 4 1 5 4 2 1 224 220 212 255 255 255
-255 255 255 254 254 254 255 255 255 253 253 253 254 254 254 255 255 255 255 255 255 253 253 253
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 253 152 161 158 60 64 65 57 63 61 101 91 62
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-158 125 54 101 91 62 58 65 69 58 62 65 152 161 158 255 255 255 255 255 253 252 252 252
-255 255 255 255 255 255 255 255 255 255 255 255 252 252 252 255 255 253 255 255 253 251 251 251
-255 255 253 251 251 251 255 255 253 255 255 253 254 254 253 255 255 255 253 253 253 252 252 252
-255 255 255 255 255 255 255 255 255 254 254 254 255 255 255 255 255 255 254 254 254 254 254 254
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 253 253 253 252 252 252 255 255 255 254 254 254 255 255 255 252 252 252 255 255 255
-253 255 254 253 253 253 254 255 255 252 252 252 252 252 252 253 255 254 253 255 254 255 255 253
-255 255 253 254 254 254 254 254 254 255 255 255 255 255 255 254 254 254 251 251 251 255 255 253
-255 255 255 255 255 255 255 255 255 255 255 255 254 254 254 255 255 255 254 254 254 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-251 251 251 255 255 255 255 255 255 255 255 255 254 254 254 254 254 254 255 255 255 251 251 251
-255 255 255 251 251 251 255 255 255 255 255 255 254 254 253 255 255 253 250 250 247 251 251 251
-253 253 253 255 255 255 252 252 252 255 255 255 255 255 255 251 251 251 251 251 251 255 255 255
-255 255 255 254 254 254 254 254 254 253 253 253 255 255 255 253 253 253 255 255 255 254 254 254
-255 255 255 255 255 255 252 252 252 255 255 255 254 254 254 251 251 251 255 255 255 255 253 254
-254 254 254 255 255 255 255 255 255 254 254 254 254 254 254 255 255 255 255 255 255 255 255 255
-255 255 255 251 251 251 255 255 255 255 255 255 251 251 251 253 253 253 255 255 255 255 255 255
-252 252 252 255 255 255 255 255 255 254 254 254 255 255 255 255 255 255 252 252 252 253 253 253
-253 255 254 253 253 253 252 252 252 253 255 254 254 255 255 253 253 255 253 253 255 253 253 253
-255 255 255 253 253 253 255 255 255 255 255 255 252 252 252 253 253 253 255 255 255 253 253 253
-253 253 253 255 255 255 254 254 254 255 255 255 255 255 255 254 254 254 253 253 253 255 255 255
-253 253 253 254 254 254 253 253 253 255 255 255 253 253 253 255 255 255 255 255 255 154 157 157
-58 62 63 58 64 64 101 91 62 155 126 57 158 125 54 156 126 54 156 124 53 156 126 54
-158 125 54 156 126 54 156 125 56 155 127 54 128 113 57 58 62 65 58 62 65 104 112 110
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 254 254 252 252 252 252 252 252 254 254 254 255 255 255 255 255 255 255 255 255 254 254 254
-252 252 252 253 253 253 255 255 255 255 255 255 254 254 254 253 253 253 255 255 255 253 253 253
-254 254 254 253 253 253 253 255 254 254 255 255 253 253 255 253 253 255 253 255 254 253 255 254
-254 254 254 253 253 253 254 254 254 255 255 255 253 253 253 255 255 255 255 255 255 254 254 254
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 254 255 255 253 255 254 255 253 254 255 255 255 57 63 63 58 64 64 60 60 63
-211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45
-209 105 45 210 99 44 85 80 60 58 64 64 53 60 64 202 204 206 255 255 255 253 255 254
-254 255 255 254 255 255 253 253 253 253 255 254 254 255 255 253 255 254 255 255 253 252 252 252
-255 255 253 251 251 251 255 255 253 255 255 255 255 255 255 253 253 253 255 255 255 255 255 255
-251 251 251 255 255 255 255 255 255 253 253 253 255 255 255 255 255 255 255 255 255 254 254 254
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 254 254 255 255 255 253 253 253 255 255 255 255 255 255 253 253 253 253 253 253 253 253 253
-253 255 254 254 255 255 253 255 254 253 255 254 249 252 251 253 255 254 249 252 251 254 254 254
-253 255 254 253 255 254 254 255 255 254 255 255 253 255 254 253 253 255 255 255 255 253 253 255
-253 255 254 253 253 253 255 255 255 255 255 255 252 252 252 253 253 253 255 255 255 253 253 253
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-252 252 252 255 255 255 254 254 254 255 255 255 253 253 253 253 253 253 255 255 255 252 252 252
-255 255 255 253 253 253 254 254 254 255 255 255 251 251 251 254 254 254 254 254 254 255 254 255
-254 254 254 253 253 253 254 254 254 251 251 251 255 255 255 255 255 255 255 255 255 255 255 255
-255 254 255 252 252 252 255 254 255 254 251 254 255 254 255 251 251 251 255 254 255 255 254 255
-253 253 253 254 254 254 254 254 254 255 255 255 254 254 254 253 253 253 255 255 255 252 252 252
-254 254 254 255 255 255 255 255 255 254 254 254 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 254 254 254 255 255 255 255 255 255 254 254 254
-251 251 251 255 255 255 255 255 255 255 255 255 254 254 254 254 254 254 254 254 254 252 252 252
-255 255 255 255 253 254 255 254 255 255 254 255 253 253 255 255 255 255 254 254 255 255 253 254
-254 255 255 254 254 254 255 255 255 255 255 255 253 253 253 254 254 254 252 252 252 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 253 251 251 251 255 255 255 254 255 251 88 95 83 0 3 1 0 3 1 4 2 1
-168 136 64 164 144 50 173 142 59 173 142 59 169 141 58 169 141 58 166 144 56 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 138 59 169 141 58 142 120 69 0 0 0 142 120 69 173 138 52 173 142 59 169 141 58
-169 138 59 173 138 52 173 138 52 169 141 58 169 138 59 173 142 59 164 144 50 169 144 61
-164 144 50 173 142 59 169 138 59 169 141 58 173 142 59 169 144 61 250 247 249 249 254 254
-241 240 247 165 143 59 173 138 52 173 145 52 166 144 56 169 141 58 173 142 59 158 134 59
-109 102 83 68 69 75 4 1 5 0 3 1 0 0 0 4 1 5 97 100 105 253 255 254
-255 255 255 254 254 254 255 255 255 253 253 253 255 255 255 255 255 255 254 254 254 253 253 253
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 253 152 161 158 60 64 65 57 63 61 101 91 62
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-158 127 55 94 90 61 58 62 65 57 61 64 156 160 157 253 253 253 255 253 254 254 255 255
-253 253 253 255 255 255 253 253 253 255 254 255 255 255 253 254 252 251 255 255 253 254 255 251
-254 255 251 254 252 251 254 252 251 254 252 251 254 254 253 252 252 252 252 252 252 255 255 255
-251 251 251 255 255 255 254 254 254 255 255 255 254 254 254 255 255 255 253 253 253 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 253 253 253 255 255 255 252 252 252 255 255 255 255 255 255 255 255 255 255 255 255
-253 253 253 255 255 255 254 255 255 254 255 255 254 255 251 252 252 252 255 255 253 249 252 251
-255 255 255 254 254 254 252 252 252 255 255 255 250 250 247 253 253 253 255 255 255 254 254 254
-251 251 251 253 253 253 255 255 255 254 254 254 255 255 255 254 254 254 253 253 253 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 253 253 253 253 253 253 254 254 254 255 255 255 255 255 255 253 253 253 255 255 255
-253 253 253 254 254 254 252 252 252 255 254 255 254 252 250 255 255 253 254 255 251 254 255 251
-252 252 252 255 255 255 253 253 253 252 252 252 255 255 255 255 255 255 255 255 255 254 254 254
-254 254 254 254 254 254 255 255 255 255 255 255 255 255 255 254 254 254 254 254 254 255 255 255
-255 255 255 251 251 251 255 255 255 254 254 254 255 255 255 255 255 255 251 251 251 254 251 252
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 254 254 254 255 255 255 255 255 255
-255 255 255 254 254 254 254 254 254 254 254 254 251 251 251 255 255 255 255 255 255 251 251 251
-255 255 255 254 254 254 252 252 252 255 255 255 255 255 255 255 255 255 251 251 251 255 255 255
-253 253 253 255 255 253 255 255 253 253 255 254 250 252 254 255 255 255 254 254 255 255 255 255
-253 253 253 255 255 255 252 252 252 253 253 253 255 255 255 255 255 255 252 252 252 255 255 255
-255 255 255 253 253 253 254 254 254 254 254 254 255 255 255 253 253 253 255 255 255 251 251 251
-255 255 255 254 254 254 255 255 255 255 255 255 255 255 255 252 252 252 254 254 254 156 160 157
-58 62 63 58 64 64 101 91 62 155 126 57 158 125 54 156 126 54 156 124 53 156 126 54
-158 125 54 156 126 54 156 125 56 155 127 54 128 113 57 58 62 65 58 62 65 104 112 110
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-253 253 253 255 255 255 255 255 255 252 252 252 253 253 253 254 254 254 252 252 252 255 255 255
-255 255 255 254 254 254 255 255 255 252 252 252 255 255 255 255 255 255 254 254 254 252 252 252
-254 254 254 255 255 255 255 255 255 255 255 255 250 252 254 254 255 255 253 253 255 249 254 254
-255 255 255 254 254 254 255 255 255 255 255 255 254 254 254 254 254 254 253 253 253 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 254 255 255 253 255 254 255 253 254 255 255 255 57 63 63 58 64 64 60 60 63
-211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45
-208 103 45 213 105 50 85 80 60 58 62 63 58 65 69 202 204 206 253 253 253 253 253 253
-253 255 254 253 253 253 254 255 255 253 253 253 254 252 251 254 254 253 251 251 251 254 254 253
-255 255 253 255 255 253 255 255 253 254 252 250 255 255 253 254 254 254 255 255 255 253 253 255
-255 255 255 255 255 255 253 253 253 253 253 253 255 255 255 251 251 251 253 253 253 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 252 252 252 255 255 255 251 251 251 251 251 251 255 255 255 254 254 254 255 255 255
-248 254 253 249 254 254 254 255 255 254 255 255 249 254 254 253 255 254 255 255 253 251 251 251
-252 252 252 252 252 252 254 254 254 254 254 254 255 254 255 254 251 252 255 255 255 254 254 254
-255 255 255 253 253 253 253 253 253 253 253 253 255 255 255 253 253 253 253 253 253 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 254 254 254 254 254 254 254 254 255 255 255 254 254 254 255 255 255 253 253 253 255 255 255
-252 252 252 255 255 255 255 255 255 253 253 253 252 252 252 255 255 255 255 253 254 250 247 249
-255 255 255 255 255 255 255 255 255 252 252 252 254 254 254 254 254 254 254 254 254 255 255 255
-254 255 251 249 252 251 248 251 253 254 255 255 249 252 251 253 253 253 255 255 255 254 251 254
-255 255 255 251 251 251 255 255 255 255 255 255 254 251 252 254 254 254 253 253 253 255 255 255
-255 255 255 252 252 252 254 254 254 251 251 251 255 255 255 255 255 255 252 252 252 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 252 252 252 255 255 255 255 255 255 251 251 251 254 254 254 252 252 252 255 255 255
-254 255 255 252 252 252 249 252 251 254 255 255 253 255 254 253 255 254 254 255 255 254 255 255
-249 254 254 252 252 252 255 255 253 255 253 254 255 255 255 253 253 255 252 252 252 255 255 253
-252 252 252 255 255 255 255 255 255 254 254 254 253 253 253 254 254 254 255 255 255 251 251 251
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 255 251 255 255 255 250 252 254 242 238 229 21 19 24 4 1 5 0 3 1 109 102 83
-169 141 58 173 145 52 169 138 59 169 141 58 169 141 58 169 138 59 166 144 56 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-166 134 56 173 142 59 169 144 61 0 3 1 88 95 83 166 134 56 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 166 144 56 166 144 56 169 138 59 169 138 59 169 141 58
-169 144 61 165 143 59 169 144 61 166 144 56 164 134 50 173 145 52 178 172 162 255 253 254
-253 255 254 224 220 212 165 143 59 168 136 64 165 143 59 169 141 58 166 134 56 109 102 83
-140 141 138 255 255 255 172 178 183 0 0 0 6 9 5 4 1 5 4 2 1 219 227 224
-253 253 253 255 255 255 253 253 253 255 255 255 254 254 254 254 254 254 253 253 253 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 253 152 161 158 60 64 65 57 63 61 101 91 62
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-156 126 54 101 91 62 62 65 65 58 62 65 156 160 157 255 255 255 254 251 252 252 252 252
-253 253 253 255 255 255 251 251 251 254 254 254 253 253 253 254 254 254 255 255 255 255 255 255
-254 255 255 252 252 252 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 254 252 251
-255 255 255 253 253 253 254 254 254 255 255 255 252 252 252 254 254 254 255 255 255 254 254 254
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 254 254 251 251 251 255 255 255 255 255 255 255 255 255 253 253 253 252 252 252 254 254 254
-255 254 255 250 247 249 255 253 254 255 254 255 251 251 251 255 254 255 254 251 252 255 254 255
-253 253 255 254 254 255 255 255 255 254 254 253 255 255 253 254 254 253 251 251 251 255 254 255
-255 255 255 252 252 252 255 255 255 255 255 255 254 254 254 255 255 255 255 255 255 253 253 253
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-252 252 252 254 254 254 255 255 255 255 255 255 254 254 254 254 254 254 253 253 253 254 254 254
-255 255 255 255 255 255 255 255 255 255 255 255 254 254 254 251 251 251 255 255 253 255 255 253
-254 255 255 249 252 251 254 255 255 254 254 254 253 253 253 254 254 254 255 255 255 255 255 255
-255 255 255 254 254 254 252 252 252 252 252 252 254 254 254 254 254 254 254 254 254 255 255 255
-253 253 253 255 255 255 254 254 254 255 255 255 254 254 254 253 253 253 254 254 254 255 254 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 254 254 254 254 254 254
-255 255 255 255 255 255 251 251 251 255 255 255 255 255 255 253 253 253 254 254 254 255 255 255
-255 254 255 255 255 255 254 254 254 255 255 255 251 251 251 254 254 254 254 254 254 252 252 252
-255 255 253 251 251 251 253 252 247 254 255 251 255 255 253 255 255 253 250 250 247 254 255 251
-255 255 255 255 255 255 255 255 255 255 255 255 254 254 254 252 252 252 255 255 255 253 253 253
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-253 253 253 255 255 255 255 255 255 254 254 254 253 253 253 255 255 255 255 255 255 154 157 157
-58 62 63 58 64 64 101 91 62 155 126 57 158 125 54 156 126 54 156 124 53 156 126 54
-158 125 54 156 126 54 156 125 56 155 127 54 128 113 57 58 62 65 58 62 65 104 112 110
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 252 252 252 252 252 252 254 254 254 255 255 255 255 255 255 252 252 252 255 255 255
-255 255 255 252 252 252 255 255 255 254 254 254 255 255 255 253 253 253 253 253 253 255 255 255
-255 255 253 254 252 250 254 251 249 255 255 253 254 252 251 255 255 253 250 250 247 255 255 253
-255 255 255 254 254 254 255 255 255 255 255 255 255 255 255 255 255 255 254 254 254 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 254 255 255 253 255 254 255 253 254 255 255 255 57 63 63 58 64 64 60 60 63
-211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45
-208 103 45 210 102 46 85 80 60 58 64 64 58 62 65 202 204 206 254 254 254 255 255 255
-253 253 253 255 254 255 255 253 254 255 255 253 254 251 249 255 253 254 255 254 255 255 254 255
-253 253 253 254 255 255 254 252 251 255 255 253 254 252 251 255 254 255 253 253 253 255 255 255
-251 251 251 254 254 254 255 255 255 255 255 255 254 254 254 255 255 255 255 255 255 254 254 254
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-251 251 251 255 255 255 255 255 255 255 255 255 255 255 255 254 254 254 254 254 254 254 254 254
-255 255 255 255 254 255 254 251 252 255 254 255 255 255 255 253 253 253 251 251 251 255 255 253
-254 252 251 255 255 253 254 252 251 254 252 251 254 252 250 254 254 253 254 255 251 253 252 247
-255 255 255 253 253 253 255 255 255 254 254 254 251 251 251 252 252 252 255 255 255 253 253 253
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 252 252 252 255 255 255 252 252 252 255 255 255 255 255 255 255 255 255 253 253 253
-254 254 254 254 254 254 254 254 254 254 254 254 255 255 255 252 252 252 255 255 255 255 254 255
-251 251 251 255 255 255 253 253 253 255 255 255 255 255 255 255 255 255 253 253 253 255 255 255
-253 252 247 254 255 251 255 255 253 253 253 253 252 252 252 255 255 253 249 252 251 255 255 253
-251 251 251 255 255 255 253 253 253 253 253 253 254 254 254 255 255 255 254 254 254 254 254 254
-255 255 255 252 252 252 255 255 255 253 253 253 255 255 255 255 255 255 252 252 252 254 254 254
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 254 254 252 252 252 255 255 255 255 255 255 253 253 253 255 255 255 252 252 252 255 255 255
-255 255 255 252 252 252 255 255 255 254 254 254 254 254 254 254 254 254 254 255 255 253 253 253
-248 254 252 255 255 253 254 254 253 255 255 253 255 255 255 253 255 254 255 255 253 253 252 247
-255 255 255 251 251 251 255 255 255 253 253 253 255 255 255 254 254 254 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 253 250 252 254 253 255 254 125 131 132 4 1 5 0 3 1 0 1 1 148 133 63
-173 142 59 169 141 58 165 143 59 166 144 56 169 141 58 169 144 61 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 166 134 56 173 142 59 88 95 83 0 1 1 168 136 64 169 141 58 169 138 59
-173 145 52 168 136 64 142 120 69 88 95 83 21 19 24 0 0 0 6 9 5 21 19 24
-109 102 83 142 120 69 159 134 56 169 144 61 169 144 61 173 142 59 173 142 59 241 240 247
-255 253 254 254 255 255 224 220 212 169 144 61 169 141 58 169 141 58 169 144 61 21 19 24
-113 113 120 241 240 247 140 141 138 0 0 0 0 0 0 4 2 1 4 2 1 97 100 105
-255 255 255 255 255 255 255 255 255 255 255 255 253 253 253 253 253 253 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 253 152 161 158 60 64 65 57 63 61 101 91 62
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-158 127 55 101 91 62 58 62 63 58 62 65 154 157 157 255 255 255 255 254 255 253 255 254
-254 254 253 250 250 247 254 255 255 254 255 255 253 253 255 202 206 211 202 204 206 202 206 211
-202 206 211 202 206 211 241 240 247 254 255 255 253 253 255 255 255 255 252 252 252 255 255 253
-253 253 253 253 253 253 255 255 255 255 255 255 255 255 255 250 247 249 255 255 255 253 253 253
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 253 253 253 254 254 254 254 254 254 255 255 255 255 255 255 255 255 255
-255 255 253 255 255 255 255 255 255 250 252 254 230 230 230 202 206 211 202 204 206 202 204 206
-202 206 211 224 220 212 253 255 254 253 253 253 253 253 253 255 255 255 253 253 253 255 255 255
-254 254 254 254 254 254 255 255 255 255 255 255 254 254 254 253 253 253 254 254 254 254 254 254
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 251 251 251 255 255 255 255 255 255 252 252 252 255 255 255 253 253 253
-254 254 253 255 255 255 252 252 252 254 255 255 241 240 247 202 206 211 202 206 211 202 204 206
-202 204 206 230 230 230 253 253 255 254 255 255 250 252 254 255 255 255 252 252 252 253 253 253
-253 255 254 252 252 252 255 255 255 252 252 252 255 255 255 255 255 255 255 255 255 254 255 255
-255 255 255 255 255 255 254 255 255 253 253 253 253 255 254 255 255 255 255 255 255 251 251 251
-254 254 254 254 254 254 254 254 254 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 253 253 253 253 253 253 255 255 255 254 254 254 255 255 255 254 254 254 252 252 252
-255 254 255 255 255 255 254 254 254 254 255 255 253 255 254 253 255 254 254 255 255 254 254 254
-202 204 206 202 206 211 202 204 206 202 204 206 219 227 224 251 251 251 255 255 253 254 255 251
-254 255 255 253 253 253 253 253 253 254 254 254 254 254 254 255 255 255 255 255 255 253 255 254
-255 255 255 255 255 255 254 254 254 252 252 252 254 254 254 255 255 255 252 252 252 254 255 255
-255 255 255 253 253 253 254 254 254 254 254 254 253 253 253 255 255 255 255 255 255 156 160 157
-58 62 63 58 64 64 101 91 62 155 126 57 158 125 54 156 126 54 156 124 53 156 126 54
-158 125 54 156 126 54 156 125 56 155 127 54 128 113 57 58 62 65 58 62 65 104 112 110
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 253 253 253 255 255 255 255 255 255 252 252 252 255 255 255 255 255 255 253 253 253
-253 253 253 255 255 255 254 254 254 255 255 255 253 255 254 254 255 255 254 255 255 230 230 230
-202 204 206 202 204 206 202 206 211 202 206 211 224 220 212 254 254 253 255 255 253 250 250 247
-252 252 252 253 253 253 255 255 255 255 255 255 255 255 255 255 255 255 253 253 253 253 253 253
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 254 255 255 253 255 254 255 253 254 255 255 255 57 63 63 58 64 64 60 60 63
-211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45
-208 103 45 210 102 46 84 69 58 58 62 63 56 66 64 202 204 206 255 255 255 253 253 253
-255 255 253 254 252 251 254 252 251 255 255 253 255 255 255 241 240 247 202 204 206 202 204 206
-202 206 211 202 204 206 219 227 224 252 252 252 253 255 254 255 255 255 254 254 254 251 251 251
-255 255 255 255 255 255 255 255 255 251 251 251 254 254 254 255 255 255 252 252 252 254 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 254 254 254 255 255 255 255 255 255 254 254 254 252 252 252 252 252 252 255 255 255
-254 251 249 254 252 251 255 253 254 255 254 255 253 253 255 253 253 255 202 204 206 202 204 206
-202 204 206 202 204 206 202 204 206 241 240 247 254 255 255 252 252 252 253 252 247 254 255 251
-252 252 252 254 254 254 253 253 253 255 255 255 255 255 255 255 255 255 254 254 254 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-252 252 252 255 255 255 253 253 253 255 255 255 251 251 251 252 252 252 255 255 255 253 253 253
-255 255 255 255 255 255 253 253 253 253 253 253 253 253 253 255 255 255 251 251 251 254 254 254
-254 254 254 255 255 255 254 254 254 255 255 255 253 253 253 255 255 255 253 253 253 254 254 254
-255 255 253 255 254 255 213 212 223 202 206 211 202 204 206 202 206 211 202 204 206 219 227 224
-253 255 254 253 255 254 255 255 255 253 253 253 255 255 255 255 255 255 253 253 253 255 255 255
-253 253 253 251 251 251 255 255 255 254 254 254 253 253 253 255 255 255 255 255 255 253 253 253
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-253 253 253 255 255 255 255 255 255 253 253 253 254 254 254 255 255 255 251 251 251 253 253 253
-251 251 251 255 255 255 252 252 252 253 253 253 255 255 255 254 254 254 252 252 252 255 255 255
-241 240 247 202 204 206 202 204 206 202 204 206 202 206 211 202 204 206 255 254 255 255 254 255
-254 254 254 255 255 255 253 253 253 255 255 255 255 255 255 251 251 251 255 255 255 253 253 253
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 253 253 255 254 241 240 247 21 19 24 4 1 5 0 3 1 109 102 83 165 143 59
-169 138 59 165 143 59 169 144 61 169 141 58 169 141 58 169 138 59 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 144 61 169 138 59 109 102 83 4 1 5 142 120 69 164 134 50 169 144 61
-165 143 59 109 102 83 4 1 5 224 220 212 241 240 247 113 113 120 4 1 5 4 2 1
-0 3 1 6 9 5 142 120 69 168 136 64 166 144 56 173 138 52 173 138 52 214 206 175
-253 252 247 254 250 255 254 255 251 242 238 229 169 144 61 173 138 52 169 138 59 110 92 61
-0 0 0 0 0 0 4 1 5 4 1 5 0 0 0 4 1 5 4 1 5 6 9 5
-242 238 229 254 254 254 255 255 255 253 253 253 255 255 255 253 253 253 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 253 152 161 158 60 64 65 57 63 61 101 91 62
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-152 124 51 101 91 62 58 64 64 58 62 65 156 160 157 255 255 255 255 254 255 253 255 254
-230 230 230 187 189 188 113 113 120 81 77 81 60 64 65 58 64 64 57 63 63 57 63 63
-59 60 64 62 65 65 59 60 64 68 69 75 110 110 107 156 160 157 219 227 224 254 255 251
-254 255 255 254 255 255 255 255 255 254 254 254 255 255 255 255 255 255 251 251 251 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 254 254 251 251 251 255 255 255 255 255 255 255 255 255 253 253 253 254 255 255 241 240 247
-172 178 183 125 131 132 97 100 105 58 67 65 58 64 64 57 63 63 58 64 64 60 64 65
-59 60 62 59 64 62 62 65 65 88 95 83 113 113 120 160 163 161 230 230 230 253 253 253
-254 255 255 254 255 255 253 253 253 254 254 254 254 254 254 255 255 255 251 251 251 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 252 252 252 255 255 255 255 255 255 252 252 252 253 255 254 253 253 253 254 255 255
-224 220 212 160 163 161 110 110 107 68 69 75 62 65 65 57 63 63 57 63 61 59 64 62
-59 60 62 62 65 65 58 62 63 97 100 105 145 151 154 213 212 223 254 255 255 254 255 255
-253 253 253 255 255 255 252 252 252 255 255 255 253 253 253 253 255 254 253 253 255 172 178 183
-145 151 154 110 110 107 110 110 107 113 113 120 172 178 183 230 230 230 254 255 255 254 255 255
-255 255 255 255 255 255 255 255 255 254 254 254 254 254 254 255 255 255 255 255 255 255 255 255
-255 255 255 253 253 253 255 255 255 253 253 253 254 254 254 255 255 255 253 253 253 255 255 255
-252 252 252 254 254 254 253 255 254 230 230 230 172 178 183 113 113 120 88 95 83 60 60 63
-58 65 69 53 60 64 58 64 64 62 65 65 53 60 64 58 62 65 97 100 105 140 141 138
-202 206 211 254 255 255 254 255 255 255 255 255 251 251 251 255 255 255 252 252 252 254 255 255
-254 255 255 241 240 247 187 189 188 145 151 154 110 110 107 110 110 107 140 141 138 160 163 161
-230 230 230 254 255 255 254 255 255 255 255 255 254 254 254 251 251 251 252 252 252 156 160 157
-58 62 63 58 64 64 101 91 62 155 126 57 158 125 54 156 126 54 156 124 53 156 126 54
-158 125 54 156 126 54 156 125 56 155 127 54 128 113 57 58 62 65 58 62 65 104 112 110
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 254 254 255 255 255 254 254 254 253 253 253 255 255 255 253 253 253 254 254 254 255 255 255
-254 255 255 254 255 255 241 240 247 187 189 188 140 141 138 97 100 105 57 63 61 59 64 62
-57 63 63 56 66 64 58 62 65 57 61 64 58 62 65 58 62 63 68 69 75 125 131 132
-172 178 183 219 227 224 253 253 253 253 253 253 253 255 254 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 254 255 255 253 255 254 255 253 254 255 255 255 57 63 63 58 64 64 60 60 63
-211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45
-213 105 46 212 101 45 85 80 60 58 62 63 56 66 64 202 204 206 253 253 253 254 255 255
-253 255 254 213 212 223 156 160 157 104 112 110 57 63 61 57 63 61 60 64 65 60 64 65
-58 62 63 58 64 64 58 62 63 58 64 64 81 77 81 113 113 120 187 189 188 241 240 247
-254 255 255 252 252 252 255 255 255 253 253 253 254 254 254 255 255 255 255 255 255 253 253 253
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 254 254 254 254 254 254 255 255 255 254 254 254 252 252 252 254 255 255 250 250 247
-255 255 253 219 227 224 156 160 157 104 112 110 62 70 69 56 66 64 58 64 64 62 65 65
-56 66 64 57 63 63 56 66 64 57 63 63 56 66 64 104 112 110 145 151 154 187 189 188
-254 255 255 254 255 255 254 255 255 252 252 252 252 252 252 252 252 252 253 253 253 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 252 252 252 255 255 255 253 253 253 255 255 255 254 255 255 213 212 223
-156 160 157 110 110 107 110 110 107 104 112 110 156 160 157 224 220 212 254 255 255 254 255 255
-255 255 255 251 251 251 255 255 255 254 255 255 254 255 255 230 230 230 172 178 183 125 131 132
-71 81 83 58 62 65 60 61 69 57 61 64 58 64 64 57 63 63 56 66 64 53 60 64
-60 64 65 81 77 81 125 131 132 178 172 162 230 230 230 249 252 251 254 254 254 253 253 253
-255 255 255 253 253 253 252 252 252 254 254 254 253 253 253 254 254 254 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 254 254 254 253 253 253 254 254 254 252 252 252 253 253 253 255 255 255
-255 255 255 254 254 254 255 255 255 254 254 254 187 189 188 145 151 154 110 110 107 57 58 61
-58 62 65 62 61 67 58 62 63 57 63 61 62 70 69 58 65 69 53 60 64 68 69 75
-104 112 110 160 163 161 213 212 223 253 255 254 254 255 255 254 255 255 254 254 254 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 254 255 251 160 163 161 0 0 0 4 1 5 4 2 1 148 133 63 173 142 59
-173 142 59 169 144 61 169 144 61 166 134 56 173 142 59 169 144 61 165 143 59 173 142 59
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 144 61 148 133 63 4 2 1 109 102 83 169 144 61 169 141 58
-148 133 63 4 1 5 4 1 5 242 238 229 254 254 255 172 178 183 4 1 5 0 0 0
-4 2 1 4 1 5 4 1 5 151 135 59 169 141 58 169 144 61 169 138 59 169 144 61
-253 253 255 254 252 244 254 255 255 253 253 255 255 255 253 182 158 106 169 138 59 168 136 64
-85 80 60 4 2 1 4 1 5 0 3 1 0 3 1 0 3 1 6 9 5 0 1 1
-140 141 138 254 254 254 253 253 253 253 253 253 255 255 255 254 254 254 254 254 254 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 253 152 161 158 60 64 65 57 63 61 101 91 62
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-157 127 54 101 91 62 60 64 65 53 60 64 156 160 157 252 252 252 202 206 211 113 113 120
-57 63 61 59 64 62 58 62 63 62 65 65 57 58 61 59 64 62 57 63 61 62 66 56
-59 64 62 59 59 56 59 64 62 58 64 64 60 64 65 57 58 61 58 62 63 97 100 105
-172 178 183 254 255 255 254 255 255 253 253 253 253 253 253 253 253 253 255 255 255 253 253 253
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 252 252 252 253 253 253 254 255 255 253 255 254 187 189 188 113 113 120 58 64 64
-60 64 65 58 64 64 53 63 60 56 64 62 60 64 65 57 60 56 58 66 61 59 59 56
-62 66 56 57 60 56 57 58 61 53 63 60 60 64 65 58 64 64 62 65 65 97 100 105
-172 178 183 253 253 253 254 255 255 253 253 253 255 255 255 253 253 253 255 255 255 253 253 253
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 254 254 255 255 255 255 255 255 250 247 249 254 255 255 253 255 254 187 189 188 97 100 105
-60 64 65 58 62 63 58 64 64 58 62 63 57 63 61 59 64 62 57 63 61 59 59 56
-59 64 62 57 58 61 59 64 62 60 64 65 57 58 61 58 62 63 81 77 81 172 178 183
-254 255 255 251 251 251 252 252 252 255 255 255 254 254 254 187 189 188 71 81 83 57 63 63
-58 62 63 62 65 65 58 62 63 58 62 63 60 64 65 58 62 63 125 131 132 241 240 247
-252 252 252 255 255 255 255 255 255 255 255 255 254 254 254 255 255 255 255 255 255 255 255 255
-255 255 255 254 254 254 255 255 255 255 255 255 255 255 255 251 251 251 255 255 255 255 255 255
-255 255 255 202 204 206 125 131 132 58 62 63 57 63 61 62 65 65 57 58 61 60 64 65
-57 63 61 57 63 61 57 58 61 57 63 61 60 64 65 58 62 65 58 62 65 60 64 65
-57 63 61 81 77 81 172 178 183 254 254 254 255 255 255 252 252 252 255 255 255 254 255 255
-172 178 183 68 69 75 58 62 63 58 62 63 58 64 64 57 58 61 58 62 63 58 62 63
-58 62 63 145 151 154 253 253 255 254 255 255 255 255 255 255 255 255 255 255 255 154 157 157
-58 62 63 58 64 64 101 91 62 155 126 57 158 125 54 156 126 54 156 124 53 156 126 54
-158 125 54 156 126 54 156 125 56 155 127 54 128 113 57 58 62 65 58 62 65 104 112 110
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-253 253 253 255 255 255 251 251 251 255 255 255 255 255 255 253 253 253 255 255 255 251 251 251
-202 206 211 125 131 132 60 64 65 58 62 63 58 62 63 57 63 61 62 65 65 57 63 63
-57 63 61 57 60 56 57 63 61 62 65 65 57 63 61 57 63 63 58 62 65 57 61 64
-57 58 61 57 58 61 88 95 83 172 178 183 241 240 247 254 255 255 254 254 254 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 254 255 255 253 255 254 255 253 254 255 255 255 57 63 63 58 64 64 60 60 63
-211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45
-208 103 45 212 101 45 84 69 58 62 65 65 53 60 64 202 206 211 254 255 255 172 178 183
-88 95 83 58 64 64 53 63 60 62 70 69 57 63 63 59 64 62 59 59 56 59 59 56
-66 60 61 59 59 56 62 66 62 60 64 65 57 63 63 57 63 63 62 65 65 57 58 61
-113 113 120 202 204 206 252 252 252 255 255 255 253 253 253 255 255 255 254 254 254 254 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-252 252 252 255 255 255 252 252 252 255 255 255 255 255 255 254 255 255 241 240 247 156 160 157
-88 95 83 57 60 56 57 63 63 56 64 62 56 66 64 59 64 62 57 60 56 59 60 62
-59 59 56 62 66 62 57 63 61 58 64 64 53 60 64 58 62 65 60 64 65 57 61 64
-62 70 69 140 141 138 213 212 223 253 255 254 255 255 255 252 252 252 255 255 255 252 252 252
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-253 253 253 255 255 255 252 252 252 255 255 255 254 254 254 213 212 223 104 112 110 58 62 63
-57 58 61 62 65 65 58 62 63 58 62 63 58 64 64 60 64 65 104 112 110 230 230 230
-251 251 251 255 255 255 254 255 255 213 212 223 125 131 132 60 64 65 57 58 61 57 58 61
-54 67 66 58 65 69 57 63 61 59 64 62 62 66 62 57 60 56 57 60 56 62 65 65
-58 62 63 62 65 65 57 58 61 57 58 61 62 65 65 104 112 110 202 206 211 253 253 253
-251 251 251 255 255 255 253 253 253 255 255 255 255 255 255 253 253 253 253 253 253 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 253 253 253 253 253 253 255 255 255 255 255 255 253 253 253 255 255 255 251 251 251
-254 255 255 224 220 212 125 131 132 68 69 75 58 64 64 62 65 65 58 62 63 62 65 65
-57 63 63 57 63 61 59 59 56 62 66 56 57 60 56 56 64 62 53 60 64 58 65 69
-62 65 65 57 58 61 62 65 65 88 95 83 156 160 157 241 240 247 254 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-253 253 255 254 252 244 21 19 24 4 1 5 0 3 1 109 102 83 169 141 58 169 138 59
-173 145 52 166 144 56 169 138 59 173 142 59 173 142 59 166 144 56 169 144 61 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 164 144 50 169 144 61 169 141 58 21 19 24 62 65 65 169 138 59 169 141 58
-109 102 83 4 2 1 0 3 1 71 72 69 125 131 132 0 0 0 0 0 0 0 0 0
-0 1 1 4 1 5 0 0 0 109 102 83 169 144 61 173 138 52 165 143 59 173 142 59
-224 220 212 254 252 250 249 252 254 254 254 254 254 254 255 249 254 246 242 238 229 182 158 106
-169 144 61 109 102 83 88 95 83 81 77 81 109 102 83 128 100 96 109 102 83 4 2 1
-21 19 24 255 255 255 255 255 255 255 255 255 254 254 254 255 255 255 253 253 253 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 253 152 161 158 60 64 65 57 63 61 101 91 62
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-158 126 53 101 91 62 60 64 65 58 62 65 125 131 132 110 110 107 59 60 62 58 64 64
-60 64 65 57 63 63 58 64 64 57 63 61 59 64 62 71 68 65 72 76 65 72 76 65
-72 76 65 71 72 69 57 60 56 57 63 61 57 63 63 58 62 63 62 65 65 57 58 61
-59 64 62 81 77 81 187 189 188 255 255 255 255 255 255 254 254 254 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-252 252 252 255 255 255 254 254 254 187 189 188 88 95 83 58 62 63 62 65 65 58 62 63
-60 60 63 62 65 65 57 58 61 59 64 62 62 66 62 72 76 65 72 76 65 72 76 65
-71 72 69 62 70 65 57 63 61 58 65 69 53 60 64 60 64 65 57 63 63 59 64 62
-59 64 62 81 77 81 172 178 183 255 255 255 251 251 251 255 255 255 252 252 252 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 254 254 254 254 255 255 172 178 183 81 77 81 59 64 62 57 63 61
-58 62 65 58 62 65 57 63 63 59 64 62 57 63 61 71 72 69 72 76 65 72 76 65
-71 72 69 62 65 65 57 63 61 58 64 64 60 64 65 58 62 63 60 64 65 59 64 62
-97 100 105 219 227 224 255 255 255 254 254 254 125 131 132 58 64 64 57 63 61 58 64 64
-58 64 64 60 64 65 57 63 63 58 64 64 57 63 63 58 64 64 58 64 64 97 100 105
-241 240 247 251 251 251 255 255 255 255 255 255 254 254 254 255 255 255 255 255 255 254 254 254
-252 252 252 255 255 255 253 253 253 255 255 255 255 255 255 255 255 255 255 255 255 202 204 206
-110 110 107 62 65 65 58 64 64 57 63 63 57 63 63 58 64 64 57 63 63 58 62 65
-71 68 65 72 76 65 72 76 65 71 72 69 71 72 69 59 60 62 59 64 62 59 64 62
-60 64 65 57 63 63 58 64 64 97 100 105 213 212 223 255 255 255 255 255 255 125 131 132
-58 62 63 58 64 64 58 64 64 57 63 63 57 63 63 58 64 64 57 63 63 58 64 64
-60 64 65 58 62 63 97 100 105 241 240 247 254 254 254 254 254 254 254 254 253 154 157 157
-58 62 63 58 64 64 101 91 62 155 126 57 158 125 54 156 126 54 156 124 53 156 126 54
-158 125 54 156 126 54 156 125 56 155 127 54 128 113 57 58 62 65 58 62 65 104 112 110
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 254 254 254 254 254 254 255 255 255 253 253 253 255 255 255 202 206 211 110 110 107
-58 62 63 58 64 64 58 62 63 60 64 65 57 63 63 60 64 65 53 63 60 56 66 64
-72 76 65 85 80 60 72 76 65 71 72 69 71 68 65 57 63 61 59 64 62 58 64 64
-58 64 64 60 64 65 58 62 63 57 58 61 71 72 69 154 157 157 241 240 247 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 254 255 255 253 255 254 255 253 254 255 255 255 57 63 63 58 64 64 60 60 63
-211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45
-211 102 45 212 101 45 85 80 60 57 58 61 58 65 69 140 141 138 81 77 81 59 64 62
-58 62 65 58 62 65 57 61 64 58 62 65 60 60 63 59 59 56 71 72 69 85 80 60
-85 80 60 85 80 60 71 68 65 57 63 61 58 64 64 56 66 64 57 63 61 58 64 64
-57 63 61 59 64 62 110 110 107 230 230 230 254 254 254 255 255 255 254 254 254 254 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 254 254 254 255 255 255 251 251 251 241 240 247 156 160 157 71 72 69 59 64 62
-57 61 64 62 70 69 57 61 64 57 63 63 60 64 65 57 60 56 71 72 69 81 77 81
-97 78 60 84 69 58 81 77 81 62 66 56 57 60 56 60 64 65 57 63 63 60 64 65
-60 64 65 57 58 61 58 62 63 110 110 107 213 212 223 255 255 255 254 254 254 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 253 253 253 255 255 255 255 255 255 213 212 223 68 69 75 58 64 64 58 64 64
-58 64 64 57 63 63 57 63 63 58 64 64 58 64 64 57 63 63 57 58 61 71 81 83
-219 227 224 252 252 252 145 151 154 59 64 62 57 63 61 58 64 64 60 64 65 60 64 65
-59 64 62 59 59 56 71 68 65 84 69 58 85 80 60 85 80 60 84 69 58 71 65 56
-58 62 65 57 63 63 58 64 64 60 64 65 57 63 63 58 62 63 59 60 62 110 110 107
-219 227 224 253 253 253 254 254 254 254 254 254 253 253 253 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 253 253 253 254 254 254 254 254 254 253 253 253 219 227 224
-104 112 110 59 64 62 57 63 63 57 63 61 58 64 64 57 63 63 56 66 64 53 60 64
-59 59 56 81 77 81 84 69 58 85 80 60 85 80 60 71 68 65 62 66 56 57 60 56
-57 63 63 58 64 64 53 63 60 57 63 63 58 64 64 71 72 69 156 160 157 241 240 247
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 254 254 254 255 255 255 254 254 254 253 253 253 253 253 253 255 255 255 253 253 253
-255 253 254 187 189 188 4 2 1 0 0 0 48 49 51 168 136 64 173 142 59 169 144 61
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-165 143 59 173 142 59 173 138 52 173 138 52 88 95 83 0 0 0 148 133 63 173 142 59
-137 137 94 4 2 1 0 1 1 0 1 1 4 1 5 4 1 5 6 9 5 0 3 1
-4 1 5 0 3 1 4 2 1 142 120 69 165 143 59 168 136 64 166 144 56 166 144 56
-214 206 175 255 254 255 249 254 254 253 252 247 255 255 253 254 255 251 255 255 253 255 254 255
-242 238 229 178 172 162 165 143 59 166 144 56 173 142 59 169 138 59 148 133 63 4 1 5
-0 0 0 110 110 107 219 227 224 255 255 255 254 254 254 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 253 253 253 255 255 255 255 255 255 255 255 255 252 252 252 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 253 152 161 158 60 64 65 57 63 61 101 91 62
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-155 126 57 101 91 62 59 64 62 59 64 62 57 58 61 58 62 65 56 66 64 56 64 62
-58 62 65 72 76 65 94 90 61 128 113 57 148 133 63 156 125 56 158 125 54 159 126 56
-158 125 54 156 128 53 152 127 56 128 113 57 110 92 61 85 80 60 62 66 62 53 60 64
-53 64 53 58 64 64 62 61 67 113 113 120 241 240 247 255 253 254 254 252 250 249 254 254
-255 255 255 253 253 253 253 255 254 254 255 255 253 253 253 255 255 255 255 255 255 255 253 254
-253 252 247 255 254 255 255 254 255 254 255 251 253 255 254 253 255 254 249 254 246 255 255 253
-253 255 254 230 230 230 110 110 107 59 64 62 56 64 62 56 64 62 57 63 63 58 65 69
-72 76 65 94 90 61 128 113 57 149 124 53 156 128 53 157 126 52 157 127 54 152 127 56
-156 126 54 155 128 52 149 124 55 128 113 57 101 91 62 72 73 56 62 65 65 59 60 70
-50 65 64 58 65 69 57 63 63 97 100 105 202 206 211 254 255 251 253 253 255 254 255 251
-253 253 253 254 254 254 255 255 255 254 254 254 255 255 255 253 253 253 255 255 255 254 254 254
-255 255 255 254 254 254 255 255 255 253 253 253 255 255 255 255 255 255 255 255 255 254 254 254
-255 254 255 253 253 255 241 240 247 104 112 110 57 63 63 62 61 67 60 60 63 54 67 66
-59 60 62 85 80 60 110 92 61 128 113 57 152 127 56 158 126 53 161 124 50 161 124 50
-161 124 50 156 124 53 147 124 59 113 104 59 85 80 60 62 65 65 53 60 64 58 65 69
-59 64 62 68 69 75 187 189 188 178 172 162 59 59 56 57 63 61 59 60 62 62 70 69
-101 91 62 113 104 59 128 113 57 101 91 62 85 80 60 57 63 61 54 67 66 62 61 67
-140 141 138 253 253 255 254 254 254 255 254 255 255 255 255 254 254 254 254 254 254 254 254 254
-254 255 251 249 254 254 248 254 253 250 252 254 255 254 255 254 255 251 140 141 138 58 66 61
-53 60 64 62 65 65 59 59 56 60 60 63 71 72 69 101 91 62 128 113 57 158 125 54
-157 124 59 155 126 57 155 128 52 155 128 52 156 128 53 147 124 59 128 99 63 97 78 60
-60 64 65 54 67 66 54 64 59 59 60 64 60 64 65 172 178 183 172 178 183 58 62 65
-54 64 59 58 62 65 71 68 65 94 90 61 128 99 63 128 113 57 101 91 62 62 70 65
-60 60 63 58 65 69 53 60 64 113 113 120 254 255 251 253 253 255 254 254 254 154 157 157
-58 62 63 58 64 64 101 91 62 155 126 57 158 125 54 156 126 54 156 124 53 156 126 54
-158 125 54 156 126 54 156 125 56 155 127 54 128 113 57 58 62 65 58 62 65 104 112 110
-255 255 255 255 255 255 254 254 254 254 254 254 255 255 255 255 255 255 252 252 252 255 255 255
-255 255 253 249 252 254 254 255 251 254 255 251 241 240 247 125 131 132 54 64 59 62 65 65
-53 60 64 58 62 65 57 60 56 71 65 56 94 90 61 113 104 59 147 124 59 158 127 55
-158 125 54 158 124 56 158 124 56 158 125 54 158 127 55 147 124 59 128 113 57 110 92 61
-85 80 60 62 61 67 57 61 64 59 64 62 57 63 61 58 62 65 68 69 75 187 189 188
-254 255 251 254 254 255 253 253 255 255 255 255 255 255 253 254 255 255 254 254 254 255 255 253
-255 255 255 254 255 255 253 255 254 255 253 254 255 255 255 57 63 63 58 64 64 60 60 63
-211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45
-208 103 45 217 104 40 84 69 58 57 60 56 62 61 67 56 64 62 50 65 64 62 61 67
-57 63 61 62 66 62 84 69 58 128 93 57 174 105 47 207 105 48 211 99 45 209 105 45
-211 102 45 212 101 45 213 100 46 210 105 51 155 104 59 112 79 60 71 68 65 58 59 68
-57 61 64 56 66 64 57 63 63 68 69 75 178 172 162 255 255 255 250 252 254 254 255 251
-253 253 253 255 255 255 254 254 254 253 253 253 255 255 255 255 255 255 253 253 253 255 253 254
-254 254 254 255 255 255 255 255 255 255 255 255 254 254 254 254 254 254 255 255 255 253 253 253
-252 252 252 254 255 255 255 255 253 187 189 188 71 81 83 58 62 65 57 60 70 60 64 65
-56 64 62 66 60 61 97 78 60 128 93 57 174 105 47 210 99 44 213 103 41 207 105 38
-210 105 51 210 102 46 212 101 45 210 102 46 185 105 60 142 101 66 112 79 60 71 68 65
-58 65 69 53 60 64 60 64 65 66 60 61 62 66 56 145 151 154 241 240 247 254 251 249
-253 255 254 254 255 251 253 255 254 254 255 255 254 254 253 254 254 253 253 253 255 248 254 252
-248 254 252 255 255 253 249 254 246 230 230 230 81 77 81 53 60 64 62 66 56 57 60 56
-112 79 60 142 101 66 155 104 59 128 93 57 97 78 60 53 63 60 54 67 66 58 65 69
-71 81 83 97 100 105 57 60 56 60 60 63 58 65 69 54 67 66 84 69 58 128 93 57
-174 105 47 198 102 49 219 98 50 211 99 45 208 103 45 210 99 51 213 100 46 210 105 40
-210 102 46 174 105 47 112 79 60 71 72 69 59 60 62 57 60 56 58 66 61 57 63 61
-62 61 67 156 160 157 253 252 247 253 255 254 253 253 255 253 255 254 254 255 251 255 255 255
-255 255 255 253 253 253 255 255 255 253 253 253 255 255 255 255 255 255 255 255 255 254 254 254
-253 252 247 255 255 255 249 252 254 253 252 247 254 255 251 241 240 247 145 151 154 53 64 53
-53 63 60 57 63 61 57 63 61 53 60 64 62 61 67 97 78 60 155 104 59 174 105 47
-213 100 46 211 102 45 212 104 43 209 99 39 207 105 38 210 105 51 198 102 49 174 105 47
-128 93 57 97 78 60 59 64 62 57 61 64 58 62 65 58 62 65 57 63 63 68 69 75
-172 178 183 249 254 254 255 255 255 254 251 249 253 252 247 253 255 254 254 255 255 254 255 251
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-253 253 253 255 255 255 255 255 255 255 255 255 255 255 255 254 254 254 252 252 252 255 255 255
-255 255 255 81 77 81 0 0 0 0 0 0 109 102 83 165 143 59 166 134 56 173 142 59
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-166 144 56 169 138 59 169 141 58 173 142 59 109 102 83 0 3 1 128 99 63 173 142 59
-166 144 56 81 77 81 4 1 5 0 3 1 0 1 1 0 0 0 4 1 5 4 2 1
-0 1 1 4 1 5 71 68 65 158 134 59 173 142 59 173 142 59 173 145 52 169 141 58
-178 172 162 254 251 252 253 255 254 254 255 251 254 251 252 254 254 253 255 255 253 253 253 255
-248 254 253 255 254 255 254 251 254 242 238 229 178 172 162 182 158 106 137 137 94 71 68 65
-0 1 1 0 0 0 0 0 0 60 60 63 172 178 183 253 253 253 252 252 252 255 255 255
-252 252 252 255 255 255 254 254 254 254 254 254 255 255 255 254 254 254 255 255 255 252 252 252
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 253 152 161 158 60 64 65 57 63 61 101 91 62
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-156 128 53 101 91 62 62 61 67 58 65 69 56 64 62 58 67 65 59 60 62 97 78 60
-128 113 57 157 124 59 158 134 59 157 126 52 161 124 50 157 126 52 158 127 55 152 124 51
-158 125 54 159 126 56 159 126 56 158 124 56 155 128 52 151 135 59 142 120 69 101 91 62
-71 68 65 58 62 65 53 60 64 57 63 61 97 100 105 224 220 212 249 254 246 254 255 255
-255 255 255 253 253 253 255 255 255 253 253 253 255 255 255 253 253 253 255 255 255 255 255 255
-254 255 251 253 253 255 254 255 251 254 255 251 251 251 251 253 253 255 255 255 253 253 253 255
-172 178 183 71 72 69 58 65 69 58 62 63 60 64 65 58 62 65 94 90 61 128 113 57
-150 126 55 155 127 54 156 126 54 159 126 56 158 124 54 157 124 59 156 125 56 158 124 54
-158 126 53 156 124 53 157 124 59 156 124 53 154 129 46 151 135 55 128 113 57 85 80 60
-71 68 65 57 60 56 62 61 67 58 65 54 56 64 62 154 157 157 255 254 255 253 255 254
-255 255 255 255 255 255 254 254 254 254 254 254 255 255 255 255 255 255 254 254 254 255 255 255
-255 255 255 254 254 254 253 253 253 253 253 253 251 251 251 255 255 255 254 254 254 255 255 255
-255 255 253 202 204 206 71 72 69 53 60 64 62 65 65 59 64 62 62 66 56 101 91 62
-147 124 59 155 126 57 156 125 56 161 124 50 158 126 53 158 126 53 156 125 56 157 124 59
-155 126 57 155 126 57 157 124 59 159 126 56 156 126 54 128 113 57 94 90 61 58 62 63
-54 64 59 57 60 70 57 63 61 71 72 69 62 61 67 57 60 70 84 69 58 149 124 53
-155 128 52 161 124 50 157 124 59 155 128 52 152 127 56 101 91 62 59 60 64 58 66 61
-60 64 65 230 230 230 254 254 254 251 251 251 255 255 255 253 253 253 255 255 255 255 255 255
-253 253 253 255 255 253 253 253 255 254 255 251 241 240 247 97 100 105 62 65 65 51 61 71
-50 65 64 57 61 64 94 90 61 142 120 69 152 127 56 155 127 54 157 124 59 155 126 57
-161 124 50 158 127 55 156 125 56 156 124 53 158 124 53 158 127 55 152 127 56 150 126 55
-149 124 53 101 91 62 58 65 69 53 63 60 62 61 67 57 63 61 71 72 69 58 62 65
-62 65 65 85 80 60 142 120 69 157 124 59 156 125 56 158 132 49 156 125 56 152 127 56
-97 78 60 60 61 69 58 67 65 59 64 62 202 204 206 251 251 251 255 255 255 154 157 157
-58 62 63 58 64 64 101 91 62 155 126 57 158 125 54 156 126 54 156 124 53 156 126 54
-158 125 54 156 126 54 156 125 56 155 127 54 128 113 57 58 62 65 58 62 65 104 112 110
-253 253 253 255 255 255 255 255 255 253 253 253 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 253 254 254 254 255 255 255 224 220 212 81 77 81 57 63 61 62 70 69 53 60 64
-58 62 65 85 80 60 128 99 63 155 126 57 157 126 52 156 128 53 158 134 59 149 124 53
-155 128 52 155 128 52 155 128 52 157 126 52 158 125 54 158 125 54 156 126 54 155 127 54
-157 124 59 128 113 57 101 91 62 62 66 62 58 59 68 58 62 65 54 64 59 59 64 62
-125 131 132 241 240 247 254 255 251 254 255 251 253 253 255 255 255 255 254 255 251 254 254 255
-255 255 255 254 255 255 253 255 254 255 253 254 255 255 255 57 63 63 58 64 64 60 60 63
-211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45
-208 103 45 210 99 51 85 80 60 66 60 61 53 60 64 58 62 65 62 70 69 71 65 56
-128 93 57 185 105 60 217 105 50 212 104 43 207 99 38 213 100 46 217 105 50 213 100 46
-207 99 48 208 103 45 207 105 38 207 99 38 213 103 41 217 105 50 198 102 49 174 105 47
-85 80 60 59 59 56 57 63 63 62 66 62 57 58 61 125 131 132 253 255 254 253 253 253
-255 255 255 251 251 251 255 255 255 254 254 254 255 255 255 253 253 253 255 255 255 253 253 253
-255 255 255 253 253 253 255 255 255 254 254 254 255 255 255 255 255 255 251 251 251 255 255 255
-255 255 255 242 238 229 113 113 120 62 66 56 57 58 61 59 59 56 62 66 56 71 68 65
-128 93 57 185 105 60 217 105 50 213 103 41 207 105 38 213 100 52 213 100 46 209 105 45
-213 103 41 208 103 45 208 103 45 210 99 44 212 104 43 212 101 45 213 100 46 212 101 45
-155 104 59 97 78 60 57 58 63 53 67 71 58 59 64 60 60 63 88 95 83 219 227 224
-255 254 255 254 251 249 255 255 253 254 255 251 253 252 247 253 255 254 249 254 254 254 255 251
-254 255 251 248 251 253 254 255 251 125 131 132 59 59 56 53 64 53 62 66 62 155 104 59
-213 105 50 209 99 39 208 103 45 213 105 46 213 103 41 155 104 59 71 65 56 58 59 68
-62 65 65 53 60 64 62 61 67 59 64 62 84 69 58 155 104 59 211 102 45 207 99 48
-200 101 40 213 105 46 217 104 40 211 104 39 212 104 43 212 101 45 213 100 46 213 100 46
-212 98 39 213 105 46 213 103 41 211 104 39 174 105 47 112 79 60 62 61 67 60 61 69
-54 67 66 57 63 61 125 131 132 241 240 247 254 251 249 254 252 251 253 255 254 249 254 254
-252 252 252 255 255 255 253 253 253 255 255 255 255 255 255 252 252 252 253 253 253 255 255 255
-255 254 255 249 254 246 255 255 253 254 250 255 219 227 224 71 81 83 62 66 62 62 61 67
-58 59 68 58 65 69 85 80 60 155 104 59 210 102 46 217 105 50 213 100 46 213 100 46
-213 103 41 211 102 45 211 102 45 210 102 46 210 102 46 216 99 44 213 100 46 207 99 38
-207 99 48 213 103 41 198 102 49 128 93 57 71 68 65 59 60 64 62 61 67 54 64 59
-62 66 56 113 113 120 241 240 247 253 253 253 255 254 255 255 255 255 248 254 252 254 255 251
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 254 254 254 254 254 254 255 255 255 251 251 251 255 255 255 255 255 255 255 255 255
-219 227 224 0 0 0 4 2 1 0 1 1 168 136 64 165 143 59 169 144 61 173 142 59
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 138 59 173 142 59 148 133 63 0 3 1 85 80 60 166 144 56
-173 138 52 151 135 59 81 77 81 4 1 5 0 0 0 4 1 5 4 2 1 4 1 5
-4 2 1 102 79 82 165 143 59 166 144 56 169 141 58 169 138 59 173 142 59 173 138 52
-178 172 162 254 255 251 252 252 252 255 255 255 255 254 255 254 255 255 248 254 252 254 255 251
-255 254 255 254 250 255 254 254 254 248 254 252 248 251 253 255 253 254 254 252 244 248 254 253
-202 204 206 125 131 132 4 2 1 0 0 0 0 0 0 21 19 24 154 157 157 255 255 255
-255 255 255 254 254 254 255 255 255 254 254 254 255 255 255 254 254 254 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 253 152 161 158 60 64 65 57 63 61 101 91 62
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-155 126 57 110 92 61 58 59 64 50 65 62 54 64 59 71 65 56 128 99 63 152 127 56
-156 124 53 158 127 55 156 124 53 158 124 53 159 126 56 158 127 55 156 126 54 156 128 53
-156 128 53 155 128 52 157 126 52 158 124 53 158 124 53 161 124 50 157 126 52 157 126 52
-128 113 57 71 72 69 62 65 65 54 64 59 57 63 63 71 72 69 219 227 224 254 255 251
-254 254 254 255 255 255 254 254 254 253 253 253 255 255 255 254 254 254 253 253 253 255 255 255
-254 255 255 253 255 254 254 255 251 253 252 247 250 247 249 255 254 255 254 252 251 145 151 154
-62 65 65 53 63 60 62 66 56 58 62 65 81 77 81 142 120 69 152 124 51 157 124 59
-159 126 56 157 127 54 152 124 51 158 127 55 155 127 54 158 127 55 156 124 53 158 127 55
-161 124 50 161 124 50 159 126 56 157 124 59 157 124 59 158 125 54 156 128 53 155 128 52
-147 124 59 97 78 60 60 61 69 58 64 64 59 59 56 59 64 62 104 112 110 241 240 247
-255 255 255 252 252 252 253 253 253 255 255 255 254 254 254 254 254 254 255 255 255 254 254 254
-255 255 255 255 255 255 253 253 253 255 255 255 255 255 255 251 251 251 255 255 255 253 253 253
-187 189 188 57 60 56 62 70 69 59 60 64 60 64 65 72 73 56 142 120 69 152 127 56
-156 124 53 159 126 56 158 124 53 158 124 53 159 126 56 158 124 56 158 127 55 155 126 57
-161 125 43 157 126 52 156 125 56 156 124 53 158 126 53 159 134 56 147 124 59 128 113 57
-71 65 56 54 64 59 58 66 61 66 60 61 56 66 64 62 66 62 149 124 53 162 124 55
-158 124 53 162 124 55 162 125 53 158 124 54 161 125 43 147 124 59 71 68 65 53 63 60
-53 63 60 160 163 161 255 255 255 255 255 255 250 247 249 255 255 255 255 255 255 253 253 253
-253 255 254 255 255 253 254 251 249 213 212 223 71 72 69 59 64 62 58 59 64 59 60 70
-84 69 58 113 104 59 150 128 52 157 126 52 156 126 54 154 129 46 152 124 44 162 124 55
-157 126 52 156 124 53 157 124 59 159 126 56 162 125 53 161 124 50 157 126 52 158 132 49
-162 124 52 157 124 59 128 113 57 71 68 65 57 60 56 58 65 69 60 64 65 59 64 62
-62 66 62 142 120 69 156 128 53 158 124 56 156 128 53 152 124 51 159 126 56 161 124 50
-152 127 56 84 69 58 57 63 61 57 60 56 125 131 132 254 255 251 255 254 255 152 161 158
-58 62 63 58 64 64 101 91 62 155 126 57 158 125 54 156 126 54 156 124 53 156 126 54
-158 125 54 156 126 54 156 125 56 155 127 54 128 113 57 58 62 65 58 62 65 104 112 110
-254 254 254 255 255 255 254 254 254 254 254 254 251 251 251 255 255 255 252 252 252 254 254 254
-254 251 249 254 255 251 172 178 183 62 66 62 57 60 56 59 60 70 59 59 56 85 80 60
-128 113 57 147 124 59 159 126 56 156 124 53 161 124 50 156 124 53 156 124 53 162 125 53
-157 124 59 156 126 54 156 124 53 158 126 53 159 126 56 158 124 56 158 126 53 155 128 52
-161 124 50 162 125 53 158 126 53 149 124 53 101 91 62 62 65 65 62 61 67 58 62 65
-58 62 63 97 100 105 230 230 230 255 255 253 254 255 251 253 252 247 253 253 253 254 255 255
-255 255 255 254 255 255 253 255 254 255 253 254 255 255 255 57 63 63 58 64 64 60 60 63
-211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45
-216 99 44 207 99 48 85 80 60 50 65 64 62 66 62 60 60 63 97 78 60 198 102 49
-216 99 44 212 104 43 213 100 46 216 99 44 212 101 45 210 102 46 210 102 46 208 103 45
-209 105 45 208 103 45 211 102 45 210 99 44 212 101 45 210 99 44 211 102 45 211 99 45
-210 99 44 155 104 59 71 68 65 62 61 67 57 58 61 57 60 70 97 100 105 241 240 247
-251 251 251 255 255 255 254 254 254 254 254 254 254 254 254 255 255 255 253 253 253 255 255 255
-255 255 255 254 254 254 254 254 254 255 255 255 253 253 253 254 254 254 255 255 255 251 251 251
-230 230 230 97 100 105 58 65 69 57 61 64 62 66 56 56 66 64 128 93 57 209 105 45
-213 103 41 213 103 41 216 99 44 211 102 45 211 102 45 213 100 46 213 100 46 207 99 48
-213 100 46 213 100 46 213 105 50 213 100 46 211 99 45 209 99 39 207 105 38 207 105 38
-211 99 45 210 105 51 155 104 59 84 69 58 54 67 66 57 63 61 53 60 64 68 69 75
-172 178 183 255 255 253 254 255 255 254 252 250 254 252 244 255 255 253 249 254 254 254 251 249
-254 252 250 254 254 255 219 227 224 57 63 61 58 68 63 54 64 59 155 104 59 213 100 52
-212 104 43 213 103 41 213 100 46 209 105 45 210 99 44 210 105 51 112 79 60 59 60 64
-58 62 65 62 66 56 58 66 61 97 78 60 198 102 49 217 104 40 209 99 39 212 104 43
-213 100 46 210 102 46 207 99 48 210 102 46 210 99 44 211 104 39 212 101 45 213 100 46
-210 105 51 211 99 45 212 101 45 207 99 48 216 99 44 213 103 41 155 104 59 84 69 58
-58 65 69 53 60 64 60 60 63 110 110 107 255 254 255 253 252 247 251 251 251 249 254 254
-255 255 255 254 254 254 253 253 253 254 254 254 251 251 251 254 254 254 255 255 255 254 254 254
-250 252 254 251 251 251 253 253 255 172 178 183 81 77 81 57 60 70 54 64 59 53 60 64
-85 80 60 155 104 59 207 99 48 210 99 44 208 103 45 212 104 43 213 100 46 210 99 51
-207 105 48 210 102 46 212 101 45 210 102 46 211 99 45 211 99 45 210 102 46 210 102 46
-213 105 50 209 99 39 209 99 39 213 103 41 207 105 48 112 79 60 62 70 65 66 60 61
-59 64 62 57 63 61 71 81 83 213 212 223 253 252 247 249 254 254 254 250 255 254 251 249
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 254 254 253 253 253 255 255 255 255 255 255 251 251 251 255 255 255 253 253 253 253 253 253
-125 131 132 4 2 1 4 1 5 109 102 83 173 145 52 166 144 56 169 144 61 173 138 52
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-173 142 59 169 141 58 169 138 59 173 142 59 166 134 56 62 66 62 4 1 5 168 136 64
-173 142 59 169 141 58 164 144 50 142 120 69 109 102 83 85 80 60 85 80 60 88 95 83
-128 100 96 166 144 56 168 136 64 173 142 59 169 141 58 169 141 58 169 144 61 169 138 59
-178 172 162 254 255 251 254 254 253 254 251 252 253 253 255 255 255 253 253 255 254 252 252 252
-254 255 255 255 254 255 250 250 247 249 254 246 253 255 254 252 252 252 251 251 251 249 254 254
-253 253 253 255 255 255 230 230 230 140 141 138 48 49 51 0 0 0 0 0 0 21 19 24
-160 163 161 255 255 255 253 253 253 255 255 255 252 252 252 255 255 255 251 251 251 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 253 152 161 158 60 64 65 57 63 61 101 91 62
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-155 128 52 101 91 62 57 63 61 53 63 60 85 80 60 148 133 63 158 126 53 154 129 46
-156 128 53 156 128 53 152 124 51 157 127 54 157 124 59 157 124 59 156 124 53 156 124 53
-157 124 59 156 128 53 155 128 52 156 125 56 157 124 59 158 127 55 156 124 53 158 127 55
-158 132 49 152 127 56 110 92 61 66 60 61 57 63 61 57 61 64 81 77 81 224 220 212
-252 252 252 252 252 252 255 255 255 254 254 254 251 251 251 255 255 255 255 255 255 253 253 253
-255 255 255 252 252 252 254 255 255 253 253 255 255 254 255 251 251 251 125 131 132 56 64 62
-50 65 62 58 64 64 66 60 61 128 99 63 157 126 52 158 125 54 162 124 55 155 128 52
-156 124 53 157 126 52 158 126 53 158 125 54 158 124 56 158 125 54 158 126 53 155 128 52
-157 124 59 157 126 52 156 129 45 155 128 52 155 126 57 156 126 54 156 124 53 162 124 52
-156 129 45 157 124 59 113 104 59 71 72 69 58 65 69 58 62 65 58 64 64 88 95 83
-241 240 247 255 255 255 252 252 252 253 253 253 255 255 255 253 253 253 254 254 254 255 255 255
-254 254 254 252 252 252 254 254 254 253 253 253 253 253 253 254 254 254 255 255 255 187 189 188
-58 66 61 57 60 70 58 62 65 62 66 62 113 104 59 156 124 53 158 127 55 155 128 52
-155 128 52 156 128 53 155 127 54 155 127 54 158 127 55 156 126 54 156 126 54 155 128 52
-155 126 57 158 127 55 158 127 55 155 128 52 155 128 52 155 127 54 156 124 53 162 124 52
-147 124 59 71 72 69 53 63 60 62 65 65 53 63 60 110 92 61 162 124 55 157 126 52
-158 134 59 155 128 52 155 126 57 157 124 59 161 124 50 156 125 56 101 91 62 58 65 69
-60 64 65 125 131 132 255 255 255 251 251 251 255 255 255 255 255 255 253 253 253 255 255 255
-255 255 255 253 255 254 224 220 212 68 69 75 57 63 61 58 65 69 66 60 61 101 91 62
-156 129 45 159 126 56 157 124 59 155 128 52 158 127 55 157 124 59 156 125 56 156 128 53
-158 127 55 156 125 56 152 127 56 155 127 54 157 127 54 158 125 54 157 124 59 157 124 59
-152 124 51 158 124 53 166 129 59 148 128 46 71 68 65 58 65 69 59 60 62 57 63 61
-110 92 61 150 128 52 157 124 59 157 124 59 156 129 45 156 125 56 166 129 59 157 124 59
-161 124 50 128 113 57 60 60 63 58 65 69 59 64 62 255 255 255 255 253 254 152 161 158
-58 62 63 58 64 64 101 91 62 155 126 57 158 125 54 156 126 54 156 124 53 156 126 54
-158 125 54 156 126 54 156 125 56 155 127 54 128 113 57 58 62 65 58 62 65 104 112 110
-255 255 255 254 254 254 253 253 253 255 255 255 254 254 254 253 253 253 255 255 255 252 252 252
-254 255 251 172 178 183 56 66 64 57 63 61 58 65 54 58 62 65 110 92 61 157 124 59
-156 124 53 159 126 56 158 127 55 156 124 53 156 125 56 157 124 59 158 124 56 158 125 54
-158 125 54 158 125 54 156 126 54 155 127 54 156 126 54 158 127 55 159 126 56 155 126 57
-155 128 52 157 124 59 152 124 51 156 125 56 162 124 55 149 124 53 84 69 58 62 61 67
-57 60 70 57 63 61 68 69 75 219 227 224 253 252 247 254 255 251 255 255 255 249 252 251
-255 255 255 254 255 255 253 255 254 255 253 254 255 255 255 57 63 63 58 64 64 60 60 63
-211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45
-212 104 43 213 105 46 84 69 58 66 60 61 59 64 62 128 93 57 210 105 51 211 104 39
-211 104 39 208 103 45 213 100 52 213 100 46 210 105 40 209 105 45 213 105 46 212 104 43
-213 103 41 209 99 39 212 101 45 213 105 50 210 105 51 207 105 48 210 105 51 213 100 52
-213 105 46 208 103 45 198 102 49 97 78 60 58 65 69 56 64 62 58 66 61 113 113 120
-255 255 255 252 252 252 255 255 255 254 254 254 255 255 255 254 254 254 252 252 252 254 255 255
-252 252 252 252 252 252 255 255 255 251 251 251 255 255 255 252 252 252 254 254 254 219 227 224
-71 72 69 62 66 62 58 62 65 58 65 69 97 78 60 198 102 49 208 103 45 212 101 45
-212 104 43 210 99 44 213 100 46 210 102 46 207 105 38 207 105 38 209 105 45 210 102 46
-207 99 48 210 105 51 213 105 50 213 105 50 217 105 50 217 105 50 213 100 46 210 99 51
-212 98 39 210 105 40 210 99 44 210 102 46 128 93 57 57 63 63 66 60 61 58 66 61
-62 66 56 172 178 183 249 254 254 253 255 254 254 251 249 254 251 249 253 255 254 253 255 254
-254 254 253 253 253 255 172 178 183 62 66 56 58 65 69 84 69 58 207 99 38 212 101 45
-213 103 41 207 105 38 200 101 40 213 100 46 210 105 51 207 99 38 174 105 47 59 60 64
-58 66 61 57 63 63 112 79 60 213 105 50 213 105 46 207 105 38 210 105 40 213 100 52
-216 99 44 213 100 46 212 101 45 217 105 50 212 101 45 208 103 45 209 105 45 209 105 45
-207 105 48 210 102 46 210 99 51 210 105 51 208 103 45 212 104 43 209 105 45 200 101 40
-112 79 60 66 60 61 58 66 61 58 62 65 125 131 132 253 255 254 249 254 246 255 254 255
-253 253 253 254 254 254 254 254 254 255 255 255 255 255 255 252 252 252 250 247 249 254 254 254
-255 255 253 253 255 254 172 178 183 57 63 61 59 59 56 58 68 63 53 63 60 128 93 57
-212 98 39 219 98 50 217 105 50 212 104 43 209 105 45 208 103 45 211 99 45 217 104 40
-208 103 45 216 99 44 213 103 41 211 104 39 217 104 40 212 104 43 208 103 45 212 101 45
-216 99 44 210 99 51 217 105 50 207 99 38 211 104 39 217 105 50 185 105 60 84 69 58
-54 67 66 62 65 65 59 60 62 71 72 69 224 220 212 249 254 246 255 255 253 254 250 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 253 253 253 252 252 252 255 255 255 254 254 254 255 255 255 255 255 255
-21 19 24 0 0 0 4 1 5 148 133 63 166 144 56 169 141 58 169 144 61 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 138 59 173 142 59 109 102 83 4 1 5 142 120 69
-166 144 56 166 144 56 173 142 59 169 141 58 169 141 58 168 136 64 168 136 64 169 144 61
-166 144 56 173 142 59 173 138 52 169 138 59 169 141 58 166 144 56 166 144 56 168 136 64
-224 220 212 253 253 253 255 255 253 255 253 254 255 253 254 254 255 251 253 253 255 255 254 255
-248 254 253 254 255 255 254 255 251 253 252 247 255 254 255 255 253 254 255 253 254 253 252 247
-253 253 253 255 255 255 252 252 252 255 255 255 241 240 247 145 151 154 48 49 51 0 1 1
-0 0 0 21 19 24 172 178 183 255 255 255 255 255 255 255 255 255 253 253 253 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 253 152 161 158 60 64 65 57 63 61 101 91 62
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-157 124 59 101 91 62 58 62 65 101 91 62 159 126 56 156 124 53 156 124 53 157 124 59
-156 124 53 159 126 56 158 126 53 158 126 53 152 124 51 158 124 56 158 124 54 159 126 56
-157 124 59 158 124 56 159 126 56 159 126 56 152 124 44 156 129 45 159 126 56 157 124 59
-158 124 54 162 125 53 156 128 53 113 104 59 66 60 61 62 61 67 57 60 56 97 100 105
-241 240 247 255 255 255 251 251 251 255 255 255 254 254 254 255 255 255 255 255 255 255 255 255
-251 251 251 255 255 253 254 255 255 253 253 255 254 254 254 125 131 132 53 60 64 58 65 69
-58 65 69 72 73 56 147 124 59 161 124 50 161 124 50 152 124 51 158 134 59 158 125 54
-157 124 59 159 126 56 159 126 56 158 126 53 158 125 54 156 126 54 156 128 53 155 128 52
-156 128 53 155 128 52 159 126 56 159 126 56 156 124 53 155 128 52 159 134 56 156 126 54
-157 124 59 162 125 53 161 124 50 149 124 53 81 77 81 58 62 65 59 59 56 58 65 54
-97 100 105 241 240 247 255 255 255 254 254 254 255 255 255 253 253 253 255 255 255 254 254 254
-255 255 255 252 252 252 253 253 253 253 253 253 255 255 255 254 254 254 187 189 188 57 58 61
-58 62 65 57 58 61 62 66 56 128 113 57 156 124 53 166 129 59 158 124 53 155 128 52
-158 124 53 158 126 53 157 126 52 156 124 53 156 126 54 156 126 54 157 127 54 158 126 53
-152 127 56 155 128 52 158 124 53 158 126 53 158 126 53 155 127 54 156 128 53 156 128 53
-156 124 53 147 124 59 62 66 56 50 65 64 58 64 64 128 113 57 152 124 51 157 124 59
-152 124 44 155 128 52 156 126 54 157 126 52 161 125 43 159 126 56 128 113 57 60 64 65
-60 64 65 104 112 110 255 255 255 254 254 254 255 255 255 254 254 254 251 251 251 254 254 254
-255 255 255 241 240 247 97 100 105 57 63 61 57 60 70 62 61 67 110 92 61 152 127 56
-158 127 55 152 124 51 158 124 56 157 124 59 158 124 56 158 127 55 162 125 53 152 124 44
-156 126 54 155 127 54 155 127 54 155 127 54 155 127 54 156 126 54 158 127 55 158 127 55
-159 126 56 148 128 46 155 126 57 162 124 55 147 124 59 62 61 67 56 64 62 56 64 62
-147 124 59 156 124 53 162 125 53 159 126 56 156 124 53 159 126 56 161 124 50 154 129 46
-162 124 52 150 128 52 62 65 65 58 65 69 59 59 56 219 227 224 254 252 250 160 163 161
-58 62 63 58 64 64 101 91 62 155 126 57 158 125 54 156 126 54 156 124 53 156 126 54
-158 125 54 156 126 54 156 125 56 155 127 54 128 113 57 58 62 65 58 62 65 104 112 110
-254 254 254 255 255 255 255 255 255 253 253 253 255 255 255 253 253 253 253 253 253 255 255 255
-172 178 183 58 64 64 54 64 59 60 64 65 69 60 69 128 113 57 152 127 56 159 126 56
-155 126 57 156 125 56 159 126 56 159 126 56 156 124 53 157 127 54 158 127 55 152 124 51
-158 127 55 158 127 55 155 126 57 156 125 56 156 125 56 158 125 54 158 125 54 157 126 52
-158 124 56 155 128 52 157 124 59 162 124 55 158 124 54 159 126 56 150 126 55 101 91 62
-62 65 65 59 64 62 57 60 56 68 69 75 213 212 223 254 255 251 254 255 251 255 255 255
-255 255 255 254 255 255 253 255 254 255 253 254 255 255 255 57 63 63 58 64 64 60 60 63
-211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45
-209 105 45 213 100 46 84 69 58 71 72 69 174 105 47 212 101 45 207 99 38 210 105 51
-210 99 51 216 99 44 211 104 39 209 99 39 217 105 50 216 99 44 212 104 43 208 103 45
-213 100 46 213 100 46 211 99 45 208 103 45 209 99 39 216 99 44 217 104 40 207 99 38
-210 99 51 209 105 45 209 99 39 213 103 41 97 78 60 58 62 63 60 61 69 59 59 56
-125 131 132 255 255 255 251 251 251 253 253 253 252 252 252 253 253 253 255 255 255 252 252 252
-255 255 255 255 255 255 253 253 253 253 253 253 253 253 253 254 254 254 219 227 224 71 72 69
-50 65 62 62 65 65 58 65 54 112 79 60 212 101 45 219 98 50 216 99 44 208 103 45
-207 99 48 217 105 50 213 103 41 207 99 38 213 103 41 216 99 44 212 101 45 200 101 40
-213 103 41 211 102 45 208 103 45 208 103 45 208 103 45 213 103 41 213 103 41 212 98 39
-211 102 45 210 105 51 208 103 45 209 105 45 216 99 44 174 105 47 62 66 62 58 64 64
-57 61 64 60 60 63 172 178 183 249 254 254 249 254 254 255 255 253 248 254 252 249 254 254
-255 254 255 249 254 254 140 141 138 58 62 65 62 61 67 128 93 57 217 104 40 211 102 45
-213 105 50 217 104 40 213 100 52 207 99 48 213 105 46 208 103 45 207 99 48 57 63 61
-57 60 56 102 79 82 213 100 52 213 100 46 210 99 51 209 99 39 213 103 41 219 98 50
-208 103 45 210 99 44 209 99 39 208 103 45 208 103 45 210 102 46 209 105 45 208 103 45
-207 99 38 217 104 40 216 99 44 212 98 39 213 103 41 210 102 46 210 99 44 213 103 41
-210 105 51 97 78 60 57 58 61 58 65 69 56 66 64 187 189 188 255 253 254 254 254 253
-255 255 255 255 255 255 252 252 252 255 255 255 255 255 255 254 254 254 255 255 255 255 255 255
-254 255 251 172 178 183 57 60 70 58 62 65 58 66 61 62 65 65 185 105 60 210 99 51
-212 104 43 207 105 38 207 105 38 211 102 45 216 99 44 217 104 40 210 105 40 207 105 38
-208 103 45 213 100 46 208 103 45 200 101 40 208 103 45 208 103 45 210 102 46 216 99 44
-217 105 50 207 105 48 207 99 48 211 99 45 213 103 41 211 102 45 211 102 45 212 101 45
-112 79 60 62 66 62 60 61 69 57 60 56 71 81 83 213 212 223 254 255 251 254 254 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 254 254 255 255 255 255 255 255 253 253 253 255 255 255 251 251 251 251 251 251 172 178 183
-0 3 1 0 0 0 109 102 83 169 141 58 169 144 61 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-166 134 56 169 144 61 169 141 58 169 138 59 173 142 59 142 120 69 4 1 5 109 102 83
-173 142 59 168 136 64 169 138 59 173 142 59 169 138 59 173 142 59 169 141 58 166 144 56
-169 138 59 169 141 58 169 141 58 169 141 58 165 143 59 166 134 56 173 142 59 169 144 61
-254 252 250 254 255 255 251 251 251 254 251 252 255 255 253 254 255 251 253 253 255 255 254 255
-254 255 251 254 251 252 255 253 254 255 254 255 250 252 254 249 254 246 253 252 247 254 255 251
-255 255 255 254 254 254 254 254 254 255 255 255 254 254 254 255 255 255 242 238 229 140 141 138
-48 49 51 0 0 0 0 0 0 62 65 65 219 227 224 251 251 251 255 255 255 251 251 251
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 253 152 161 158 60 64 65 57 63 61 101 91 62
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-155 126 57 101 91 62 113 104 59 155 128 52 162 124 52 166 129 59 157 124 59 155 128 52
-168 131 61 157 124 59 158 124 54 159 126 56 159 126 56 159 126 56 157 126 52 158 127 55
-158 127 55 155 128 52 156 126 54 157 124 59 159 126 56 158 126 53 157 126 52 156 124 53
-159 126 56 157 126 52 157 124 59 155 128 52 113 104 59 62 61 67 54 67 66 58 68 63
-113 113 120 253 255 254 255 255 255 254 254 254 254 254 254 255 255 255 254 254 254 253 253 253
-254 255 251 254 255 251 251 251 251 254 255 251 154 157 157 58 65 69 59 60 70 62 61 67
-97 78 60 147 124 59 159 134 56 152 124 51 155 126 57 152 127 56 159 126 56 156 124 53
-156 124 53 156 126 54 154 129 46 155 128 52 155 128 52 155 126 57 156 125 56 157 124 59
-157 124 59 156 124 53 155 128 52 159 126 56 159 126 56 158 125 54 156 124 53 155 126 57
-158 125 54 155 126 57 156 124 53 162 124 55 154 129 46 85 80 60 59 60 70 58 65 69
-60 64 65 97 100 105 254 255 255 255 255 255 251 251 251 255 255 255 255 255 255 253 253 253
-251 251 251 255 255 255 255 255 255 255 255 255 255 255 255 213 212 223 68 69 75 62 65 65
-57 63 63 62 66 62 142 101 66 158 124 56 158 127 55 157 126 52 156 124 53 159 126 56
-157 124 59 157 124 59 157 124 59 159 126 56 158 127 55 158 125 54 159 126 56 158 124 54
-158 124 53 158 126 53 157 127 54 158 127 55 158 125 54 158 124 54 156 125 56 156 125 56
-157 124 59 161 124 50 113 104 59 60 64 65 62 66 62 147 124 59 156 124 53 157 124 59
-157 124 59 157 124 59 161 124 50 158 127 55 155 126 57 158 132 49 128 113 57 59 60 64
-57 63 61 110 110 107 253 253 253 254 254 254 253 253 253 253 255 254 255 255 255 251 251 251
-253 255 254 110 110 107 57 58 61 58 65 69 62 61 67 113 104 59 155 128 52 158 126 53
-150 126 55 155 126 57 158 125 54 157 126 52 158 127 55 155 128 52 152 124 51 159 126 56
-158 124 53 158 125 54 159 126 56 158 125 54 158 125 54 158 126 53 158 126 53 157 126 52
-157 124 59 156 128 53 152 124 51 159 126 56 158 125 54 110 92 61 57 63 63 62 70 69
-150 128 52 158 134 59 156 124 53 155 127 54 158 134 59 157 124 59 157 124 59 156 124 53
-166 129 59 157 127 54 72 76 65 56 66 64 59 64 62 202 204 206 255 255 253 154 157 157
-58 62 63 58 64 64 101 91 62 155 126 57 158 125 54 156 126 54 156 124 53 156 126 54
-158 125 54 156 126 54 156 125 56 155 127 54 128 113 57 58 62 65 58 62 65 104 112 110
-253 253 253 255 255 255 254 254 254 255 255 255 253 253 253 255 255 255 254 255 255 172 178 183
-58 62 65 53 63 60 58 65 69 84 69 58 149 124 53 157 124 59 157 126 52 156 129 45
-156 124 53 158 127 55 155 128 52 154 129 46 156 128 53 155 127 54 156 124 53 157 124 59
-162 124 55 158 124 53 157 126 52 158 126 53 159 126 56 159 126 56 158 124 54 158 125 54
-152 127 56 156 124 53 158 125 54 156 124 53 157 126 52 152 124 51 155 126 57 159 126 56
-113 104 59 66 60 61 60 61 69 57 63 61 71 72 69 241 240 247 254 255 251 253 253 255
-255 255 255 254 255 255 253 255 254 255 253 254 255 255 255 57 63 63 58 64 64 60 60 63
-211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45
-211 104 39 208 103 45 112 79 60 174 105 47 217 104 40 210 102 46 213 100 46 216 99 44
-216 99 44 208 103 45 209 105 45 210 105 51 213 100 52 207 99 48 210 102 46 217 105 50
-210 102 46 210 102 46 208 103 45 213 105 46 210 99 44 212 101 45 210 102 46 210 105 51
-209 99 39 219 98 50 219 98 50 213 100 52 213 100 46 101 91 62 59 59 56 62 65 65
-60 64 65 187 189 188 255 255 255 255 255 255 255 255 255 255 255 255 254 254 254 254 255 255
-255 255 255 254 254 254 253 253 253 255 255 255 255 255 255 241 240 247 97 100 105 58 62 63
-62 65 65 57 58 61 142 101 66 207 105 38 213 100 46 213 105 50 209 105 45 212 101 45
-208 103 45 211 102 45 210 105 51 207 105 48 207 105 48 210 102 46 213 100 46 217 105 50
-209 99 39 212 104 43 212 101 45 213 100 46 213 100 46 213 100 46 210 102 46 210 102 46
-208 103 45 213 103 41 213 100 46 212 101 45 209 99 39 212 98 39 185 105 60 71 72 69
-51 61 71 58 65 69 59 64 62 202 204 206 254 255 255 250 250 247 254 255 251 255 255 253
-254 255 251 253 255 254 104 112 110 57 63 63 62 66 62 140 101 45 210 102 46 211 102 45
-213 100 52 207 105 38 209 99 39 216 99 44 217 105 50 207 105 48 216 99 44 72 76 65
-71 68 65 200 101 40 207 105 38 208 103 45 217 104 40 213 105 46 213 100 52 211 102 45
-210 99 51 213 100 46 211 102 45 208 103 45 208 103 45 210 102 46 216 99 44 216 99 44
-213 105 50 207 99 48 208 103 45 213 103 41 210 99 44 210 99 51 210 105 51 211 99 45
-208 103 45 216 99 44 85 80 60 56 66 64 53 63 60 71 72 69 242 238 229 254 255 255
-254 254 254 251 251 251 255 255 255 255 255 255 251 251 251 253 253 253 253 253 253 253 253 253
-202 204 206 57 60 56 58 65 69 62 66 62 72 76 65 174 105 47 211 99 45 213 103 41
-217 105 50 208 103 45 208 103 45 213 105 46 213 100 46 208 103 45 210 102 46 213 100 46
-213 100 46 212 101 45 212 101 45 213 100 46 213 100 46 210 102 46 209 105 45 212 101 45
-209 105 45 212 104 43 210 105 40 213 105 46 213 100 46 210 99 51 208 103 45 210 105 40
-207 105 48 128 93 57 62 65 65 53 67 71 57 61 64 68 69 75 230 230 230 249 254 246
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 254 254 254 254 254 254 255 255 255 255 255 255 255 255 255 254 254 254 81 77 81
-0 1 1 4 2 1 148 133 63 169 138 59 166 144 56 169 144 61 169 141 58 173 142 59
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 144 61 166 134 56 173 138 52 169 141 58 169 141 58 168 136 64 4 2 1 48 49 51
-166 144 56 173 142 59 169 141 58 165 143 59 165 143 59 169 141 58 169 141 58 173 145 52
-169 144 61 166 134 56 166 144 56 165 143 59 168 136 64 173 145 52 166 144 56 178 172 162
-254 254 254 253 255 254 255 255 253 254 251 254 254 251 252 254 255 251 254 255 255 254 252 251
-253 252 247 251 251 251 254 255 251 254 255 251 253 252 247 254 255 251 254 255 255 255 255 255
-255 255 255 252 252 252 255 255 255 255 255 255 255 255 255 252 252 252 255 255 255 255 255 255
-241 240 247 145 151 154 4 2 1 0 0 0 0 1 1 125 131 132 252 252 252 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 253 152 161 158 60 64 65 57 63 61 101 91 62
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-152 127 56 154 129 46 156 126 54 159 126 56 157 126 52 152 124 51 158 134 59 156 124 53
-152 124 51 155 128 52 158 132 49 155 128 52 152 124 51 156 126 54 158 126 53 158 126 53
-152 124 51 156 128 53 157 127 54 156 125 56 156 124 53 155 128 52 156 126 54 157 124 59
-157 126 52 155 128 52 157 124 59 157 124 59 150 126 55 110 92 61 58 59 64 56 66 64
-57 63 61 187 189 188 254 255 255 253 253 253 254 254 254 255 255 255 252 252 252 255 255 255
-254 255 251 254 252 250 255 254 255 187 189 188 54 64 59 58 65 69 66 60 61 85 80 60
-159 126 56 148 133 63 152 127 56 155 127 54 156 125 56 158 127 55 152 124 51 159 126 56
-159 126 56 156 124 53 158 125 54 159 126 56 159 126 56 158 124 53 161 124 50 161 124 50
-156 124 53 158 127 55 155 128 52 152 124 51 158 127 55 162 125 53 158 124 53 158 124 56
-158 127 55 152 124 44 155 126 57 157 127 54 162 124 52 158 127 55 85 80 60 57 63 63
-57 63 63 57 63 63 125 131 132 249 252 251 255 255 255 251 251 251 253 253 253 255 255 255
-255 255 255 253 253 253 255 255 255 253 253 253 254 255 255 97 100 105 60 64 65 57 63 63
-62 65 65 142 101 66 157 126 52 152 124 44 158 127 55 155 126 57 158 127 55 158 125 54
-155 128 52 155 128 52 152 124 51 155 128 52 156 124 53 156 124 53 159 126 56 157 124 59
-158 127 55 156 126 54 156 125 56 157 124 59 157 124 59 157 124 59 159 126 56 155 128 52
-157 126 52 155 127 54 150 126 55 101 91 62 62 65 65 156 125 56 161 125 43 156 124 53
-156 125 56 158 127 55 156 124 53 154 129 46 158 134 59 149 124 53 128 113 57 57 61 64
-62 65 65 104 112 110 254 254 254 255 255 255 252 252 252 253 253 253 253 253 253 255 255 255
-178 172 162 57 61 64 58 64 64 59 60 62 110 92 61 155 128 52 161 125 43 157 124 59
-162 125 53 158 126 53 154 129 46 154 129 46 156 126 54 159 126 56 157 124 59 152 127 56
-158 124 56 158 125 54 158 124 53 158 124 53 156 124 53 159 126 56 157 124 59 157 124 59
-152 124 51 157 124 59 157 124 59 152 124 51 155 128 52 150 128 52 84 69 58 85 80 60
-155 127 54 157 126 52 157 124 59 157 124 59 154 129 46 156 124 53 158 124 56 159 126 56
-152 124 51 158 127 55 72 76 65 58 68 63 57 63 61 202 206 211 254 252 251 154 157 157
-58 62 63 58 64 64 101 91 62 155 126 57 158 125 54 156 126 54 156 124 53 156 126 54
-158 125 54 156 126 54 156 125 56 155 127 54 128 113 57 58 62 65 58 62 65 104 112 110
-253 253 253 254 254 254 253 253 253 255 255 255 254 254 254 254 255 255 224 220 212 71 72 69
-57 63 61 58 66 61 71 68 65 147 124 59 162 125 53 161 124 50 155 128 52 156 126 54
-156 128 53 156 126 54 158 124 54 157 124 59 159 126 56 156 126 54 156 126 54 158 126 53
-157 124 59 156 125 56 155 127 54 155 128 52 152 124 51 152 124 51 156 124 53 159 126 56
-157 126 52 158 127 55 155 128 52 158 126 53 159 126 56 159 126 56 156 124 53 154 129 46
-150 128 52 113 104 59 59 59 56 59 64 62 62 66 62 97 100 105 255 255 253 255 255 255
-255 255 255 254 255 255 253 255 254 255 253 254 255 255 255 57 63 63 58 64 64 60 60 63
-211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45
-211 104 39 213 100 46 213 103 41 211 99 45 213 100 46 207 99 48 212 104 43 207 99 38
-212 101 45 208 103 45 208 103 45 212 98 39 211 102 45 210 105 51 213 100 46 212 98 39
-213 100 46 208 103 45 208 103 45 211 102 45 211 99 45 213 105 46 210 102 46 210 99 44
-207 105 38 213 105 46 210 99 44 207 105 48 210 102 46 210 102 46 85 80 60 59 60 62
-62 65 65 62 70 69 241 240 247 255 255 255 253 253 253 255 255 255 254 254 254 254 254 254
-255 255 255 255 255 255 255 255 255 253 253 253 253 255 254 104 112 110 58 64 64 58 64 64
-60 60 63 142 101 66 212 104 43 216 99 44 210 105 51 207 105 38 212 104 43 213 100 46
-213 100 46 210 99 44 212 104 43 216 99 44 210 99 44 209 105 45 213 105 46 212 98 39
-210 102 46 210 102 46 208 103 45 208 103 45 208 103 45 211 104 39 211 102 45 209 105 45
-211 102 45 216 99 44 210 102 46 209 105 45 210 105 40 209 105 45 207 99 48 207 99 48
-71 65 56 58 67 65 53 60 64 71 72 69 230 230 230 255 255 255 255 253 254 255 255 253
-253 252 247 255 254 255 104 112 110 57 60 56 56 66 64 155 104 59 217 105 50 208 103 45
-208 103 45 209 105 45 213 100 46 210 105 40 209 99 39 217 104 40 213 100 52 97 78 60
-155 104 59 208 103 45 217 104 40 212 104 43 207 105 38 213 100 46 212 98 39 213 100 46
-216 99 44 213 105 50 208 103 45 210 102 46 217 105 50 212 101 45 212 101 45 213 100 46
-212 98 39 213 103 41 213 100 46 210 102 46 208 103 45 211 102 45 213 105 46 217 105 50
-209 105 45 217 98 38 198 102 49 62 66 62 58 62 65 58 65 69 156 160 157 253 255 254
-255 255 255 253 253 253 254 254 254 255 255 255 255 255 255 255 255 255 255 255 255 230 230 230
-68 69 75 56 64 62 57 60 56 71 65 56 198 102 49 216 99 44 207 105 38 207 105 48
-210 99 44 212 101 45 213 100 46 211 102 45 213 105 50 213 105 50 211 102 45 211 104 39
-216 99 44 208 103 45 208 103 45 213 105 50 210 102 46 208 103 45 212 104 43 211 104 39
-213 100 52 216 99 44 211 99 45 210 105 51 209 99 39 213 103 41 213 100 46 209 105 45
-216 99 44 216 99 44 128 93 57 60 64 65 60 61 69 59 64 62 97 100 105 241 240 247
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 253 253 253 255 255 255 254 254 254 252 252 252 241 240 247 0 0 0
-4 1 5 88 95 83 164 144 50 169 144 61 173 142 59 169 141 58 169 144 61 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-166 144 56 173 142 59 173 142 59 169 141 58 164 144 50 169 141 58 88 95 83 4 1 5
-148 133 63 164 144 50 169 138 59 173 142 59 166 144 56 169 138 59 169 141 58 169 138 59
-169 141 58 173 138 52 165 143 59 169 144 61 168 136 64 173 138 52 169 144 61 241 240 247
-255 255 253 252 252 252 254 255 251 255 254 255 254 254 255 254 255 251 253 255 254 254 255 251
-253 253 253 254 254 255 255 253 254 255 255 253 254 255 251 250 252 246 254 255 255 254 255 251
-254 254 254 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 254 254 254
-255 255 255 253 253 253 230 230 230 97 100 105 0 0 0 0 0 0 62 65 65 219 227 224
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 253 152 161 158 60 64 65 57 63 61 101 91 62
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-158 124 53 157 124 59 158 125 54 158 124 53 157 124 59 155 128 52 152 124 44 159 126 56
-158 127 55 156 124 53 158 127 55 156 124 53 158 124 56 157 124 59 156 125 56 156 124 53
-157 124 59 156 124 53 161 124 50 159 126 56 158 126 53 157 126 52 155 128 52 155 128 52
-158 127 55 158 124 56 156 124 53 156 124 53 161 124 50 155 126 57 85 80 60 58 65 69
-57 63 61 71 72 69 241 240 247 254 255 255 255 255 255 254 254 254 255 255 255 253 253 253
-254 255 255 255 254 255 241 240 247 68 69 75 58 62 65 57 60 70 84 69 58 147 124 59
-154 129 46 157 126 52 156 124 53 159 126 56 161 124 50 158 125 54 159 126 56 155 126 57
-155 126 57 152 124 51 159 126 56 158 124 54 157 124 59 128 113 57 128 113 57 113 104 59
-128 113 57 147 124 59 156 125 56 159 126 56 158 124 56 156 124 53 155 128 52 158 126 53
-158 124 56 155 128 52 154 129 46 158 124 56 157 124 59 152 124 44 151 135 55 97 78 60
-56 64 62 56 64 62 60 64 65 187 189 188 255 255 255 255 255 255 255 255 255 253 253 253
-255 255 255 253 253 253 255 255 255 255 255 255 156 160 157 57 58 61 56 66 64 53 63 60
-128 99 63 150 126 55 156 129 45 159 126 56 157 124 59 158 127 55 154 129 46 158 127 55
-158 126 53 156 124 53 156 124 53 159 126 56 159 126 56 156 126 54 158 127 55 155 128 52
-155 127 54 156 126 54 158 127 55 156 128 53 154 129 46 154 129 46 157 126 52 162 125 53
-161 124 50 157 124 59 159 126 56 148 128 46 81 77 81 158 125 54 152 127 56 156 126 54
-156 128 53 152 124 51 156 129 45 157 124 59 157 124 59 161 124 50 128 99 63 59 64 62
-58 64 64 104 112 110 254 254 254 255 255 255 254 254 254 254 255 255 255 255 255 230 230 230
-71 72 69 58 65 69 57 60 70 94 90 61 152 127 56 158 124 54 157 124 59 155 128 52
-156 124 53 158 124 56 157 124 59 157 124 59 158 125 54 157 126 52 157 126 52 155 128 52
-155 127 54 156 126 54 159 126 56 159 126 56 156 126 54 156 124 53 156 126 54 156 128 53
-155 128 52 151 135 55 152 124 51 162 124 55 162 125 53 155 126 57 128 113 57 110 92 61
-156 124 53 157 124 59 158 132 49 155 128 52 156 128 53 157 126 52 157 124 59 155 128 52
-155 128 52 155 128 52 81 77 81 58 66 61 57 60 56 202 206 211 255 253 254 156 160 157
-58 62 63 58 64 64 101 91 62 155 126 57 158 125 54 156 126 54 156 124 53 156 126 54
-158 125 54 156 126 54 156 125 56 155 127 54 128 113 57 58 62 65 58 62 65 104 112 110
-255 255 255 254 254 254 254 254 254 255 255 255 255 255 255 254 255 255 97 100 105 59 64 62
-57 60 70 71 65 56 142 120 69 155 127 54 156 126 54 158 127 55 156 125 56 158 124 56
-155 128 52 156 126 54 158 125 54 158 125 54 158 127 55 155 127 54 156 126 54 156 126 54
-128 113 57 128 113 57 128 99 63 128 113 57 147 124 59 156 125 56 158 127 55 156 124 53
-162 124 55 158 124 56 155 126 57 155 128 52 152 124 44 159 126 56 158 124 56 158 127 55
-162 124 55 150 128 52 113 104 59 59 60 64 57 60 70 58 64 64 145 151 154 253 252 247
-255 255 255 254 255 255 253 255 254 255 253 254 255 255 255 57 63 63 58 64 64 60 60 63
-211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45
-213 100 52 208 103 45 207 105 38 213 100 52 208 103 45 209 99 39 210 105 51 210 102 46
-210 102 46 211 102 45 212 101 45 213 100 46 213 100 46 208 103 45 208 103 45 213 100 52
-212 101 45 212 101 45 213 100 46 210 102 46 208 103 45 210 99 44 212 104 43 212 104 43
-219 98 50 210 99 44 213 103 41 211 99 45 216 99 44 211 104 39 198 102 49 71 68 65
-57 63 63 62 65 65 125 131 132 253 253 253 255 255 255 254 254 254 255 255 255 255 255 255
-255 255 255 254 254 254 254 254 254 255 255 255 172 178 183 58 62 63 56 66 64 56 66 64
-128 93 57 207 105 48 213 103 41 208 103 45 212 101 45 213 100 46 208 103 45 212 101 45
-208 103 45 212 101 45 213 100 46 212 101 45 209 105 45 208 103 45 210 99 44 213 100 52
-211 104 39 211 102 45 210 102 46 213 100 46 213 100 46 213 100 46 211 102 45 208 103 45
-209 105 45 213 103 41 213 103 41 210 102 46 210 99 51 213 100 46 213 103 41 210 99 44
-174 105 47 71 65 56 51 61 71 62 65 65 110 110 107 249 254 254 253 253 255 253 253 255
-255 255 255 253 253 253 104 112 110 62 66 62 58 62 65 155 104 59 210 99 44 211 104 39
-213 105 46 210 99 44 213 100 52 207 105 48 213 100 46 213 103 41 207 99 48 200 101 40
-217 104 40 210 99 51 216 99 44 209 105 45 210 105 51 216 99 44 213 100 52 174 105 47
-174 105 47 155 104 59 155 104 59 198 102 49 210 102 46 212 104 43 209 105 45 210 102 46
-211 102 45 208 103 45 208 103 45 213 100 46 216 99 44 213 103 41 208 103 45 208 103 45
-216 99 44 212 104 43 208 103 45 128 93 57 53 67 71 57 63 61 71 72 69 241 240 247
-255 255 255 255 255 255 255 255 255 255 255 255 253 253 253 254 254 254 254 254 254 110 110 107
-59 64 62 50 65 64 71 68 65 174 105 47 210 102 46 213 100 46 217 104 40 213 100 46
-211 102 45 213 105 46 211 99 45 210 99 44 212 104 43 213 103 41 209 99 39 213 105 50
-207 105 48 174 105 47 155 104 59 155 104 59 155 104 59 174 105 47 207 99 48 212 104 43
-213 103 41 210 105 51 208 103 45 209 99 39 213 105 50 210 102 46 209 99 39 211 102 45
-210 102 46 209 105 45 210 102 46 128 93 57 62 66 62 53 60 64 58 66 61 145 151 154
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 253 254 255 255 253 253 255 252 252 252 253 253 253 254 250 255 140 141 138 0 0 0
-4 1 5 148 133 63 169 141 58 169 141 58 169 144 61 169 138 59 173 145 52 165 143 59
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 144 61 169 141 58 166 144 56 169 144 61 169 138 59 142 120 69 0 3 1
-109 102 83 173 142 59 165 143 59 169 141 58 166 144 56 169 141 58 169 138 59 169 141 58
-173 142 59 169 141 58 164 134 50 165 143 59 173 142 59 166 144 56 214 206 175 253 253 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 253 253 253 251 251 251 255 255 255 254 254 254 253 253 253 255 255 255
-255 255 255 255 255 255 254 254 254 255 255 255 187 189 188 21 19 24 4 2 1 6 9 5
-172 178 183 255 255 255 255 255 255 255 255 255 255 255 255 252 252 252 255 255 255 253 253 253
-252 252 252 255 255 255 255 255 255 254 254 254 255 255 255 255 255 255 253 253 253 255 255 255
-252 252 252 255 255 255 252 252 252 255 255 255 255 255 255 255 255 255 254 254 254 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 253 152 161 158 60 64 65 57 63 61 101 91 62
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-155 126 57 152 124 44 159 126 56 156 125 56 156 129 45 155 128 52 156 128 53 162 124 55
-161 124 50 159 126 56 155 127 54 150 126 55 128 113 57 128 99 63 128 113 57 154 129 46
-155 127 54 157 124 59 156 126 54 157 127 54 156 124 53 159 126 56 158 124 54 158 127 55
-156 126 54 159 126 56 156 128 53 155 128 52 156 125 56 161 124 50 147 124 59 66 60 61
-54 67 66 60 64 65 152 161 158 249 254 246 255 254 255 250 252 246 255 255 255 254 255 251
-253 252 247 253 253 255 113 113 120 58 65 69 58 66 61 62 66 56 149 124 53 158 125 54
-157 124 59 157 127 54 156 124 53 155 127 54 155 126 57 158 124 56 166 129 59 161 125 43
-159 126 56 147 124 59 110 92 61 72 76 65 59 60 64 59 64 62 56 64 62 54 67 66
-59 59 56 60 64 65 62 70 69 94 90 61 149 124 53 161 124 50 158 124 53 155 126 57
-158 124 56 155 127 54 159 126 56 158 124 54 156 128 53 154 129 46 159 126 56 158 124 56
-84 69 58 56 64 62 53 60 64 81 77 81 241 240 247 248 254 252 254 250 255 253 253 253
-253 253 255 254 255 255 253 253 255 230 230 230 56 66 64 62 61 67 56 66 64 110 92 61
-156 126 54 155 126 57 154 129 46 161 124 50 166 129 59 158 124 53 159 126 56 154 129 46
-154 129 46 158 127 55 156 124 53 155 127 54 155 128 52 155 126 57 157 124 59 149 124 53
-128 99 63 128 113 57 147 124 59 152 124 51 156 128 53 157 127 54 156 124 53 158 126 53
-152 127 56 161 124 50 156 124 53 158 127 55 156 125 56 158 127 55 157 124 59 155 128 52
-155 127 54 158 124 56 155 127 54 158 125 54 156 125 56 155 128 52 128 113 57 58 62 65
-59 64 62 104 112 110 253 255 254 250 252 254 255 255 255 255 255 253 252 252 252 104 112 110
-66 60 61 53 64 53 71 72 69 157 124 59 158 124 53 150 128 52 162 125 53 155 126 57
-155 128 52 162 124 52 158 125 54 155 128 52 156 126 54 157 124 59 162 125 53 156 129 45
-161 125 43 157 127 54 148 133 63 128 113 57 128 99 63 128 113 57 155 126 57 155 127 54
-162 124 55 156 129 45 157 124 59 157 124 59 155 128 52 152 124 51 155 128 52 158 124 53
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-156 126 54 158 126 53 72 76 65 58 62 63 57 63 63 202 206 211 255 253 254 156 160 157
-58 62 63 58 64 64 101 91 62 155 126 57 158 125 54 156 126 54 156 124 53 156 126 54
-158 125 54 156 126 54 156 125 56 155 127 54 128 113 57 58 62 65 58 62 65 104 112 110
-255 255 255 251 251 251 255 255 253 253 252 247 255 254 255 156 160 157 62 61 67 54 64 59
-57 61 64 128 113 57 158 124 56 155 127 54 156 125 56 157 124 59 152 124 44 157 124 59
-156 124 53 159 126 56 157 124 59 157 126 52 158 124 56 110 92 61 72 76 65 62 66 56
-60 61 69 58 62 63 60 64 65 57 61 64 59 60 64 62 66 62 94 90 61 113 104 59
-155 128 52 159 126 56 162 124 55 156 124 53 158 127 55 158 125 54 156 124 53 157 124 59
-158 127 55 150 128 52 161 124 50 97 78 60 57 61 64 54 64 59 58 62 63 202 206 211
-252 252 252 255 255 255 253 253 253 254 254 254 254 255 255 57 63 61 58 64 64 57 63 63
-211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45
-213 100 46 213 105 50 209 105 45 207 99 38 216 99 44 213 103 41 210 102 46 210 105 51
-213 100 46 210 102 46 211 102 45 212 98 39 198 102 49 155 104 59 155 104 59 198 102 49
-208 103 45 209 105 45 212 98 39 213 105 46 198 102 49 207 105 48 217 98 38 210 102 46
-209 105 45 211 102 45 210 102 46 210 99 44 213 100 46 217 105 50 198 102 49 174 105 47
-56 66 64 60 60 63 58 65 69 202 204 206 253 255 254 254 251 249 249 254 254 254 255 255
-254 255 251 254 250 255 255 254 255 230 230 230 72 76 65 62 61 67 50 65 64 112 79 60
-208 103 45 213 100 52 210 99 44 213 105 50 209 99 39 209 105 45 213 100 52 211 104 39
-216 99 44 208 103 45 208 103 45 213 100 46 212 104 43 217 104 40 207 99 48 174 105 47
-155 104 59 174 105 47 210 105 51 216 99 44 208 103 45 213 100 46 216 99 44 209 105 45
-213 100 46 210 105 51 211 104 39 210 99 44 213 105 50 207 105 48 213 100 46 207 105 38
-212 104 43 140 101 45 62 61 67 57 63 61 50 65 62 172 178 183 254 251 252 255 255 253
-254 255 255 254 251 252 104 112 110 60 64 65 58 62 63 155 104 59 213 105 50 211 102 45
-213 100 46 210 102 46 209 105 45 213 105 46 213 100 46 212 101 45 212 101 45 211 102 45
-209 105 45 211 99 45 216 99 44 213 105 46 155 104 59 112 79 60 69 60 69 58 62 65
-58 62 65 57 63 61 59 64 62 58 65 69 62 65 65 112 79 60 185 105 60 216 99 44
-217 98 38 213 105 50 200 101 40 213 100 46 213 100 46 211 104 39 211 104 39 213 100 52
-210 102 46 207 99 38 213 100 46 210 102 46 71 68 65 58 66 61 57 60 70 187 189 188
-255 255 253 255 255 253 249 254 254 253 255 254 255 254 255 253 255 254 178 172 162 62 61 67
-60 64 65 57 63 61 155 104 59 211 99 45 210 102 46 208 103 45 217 105 50 209 99 39
-213 100 52 209 99 39 208 103 45 210 102 46 217 104 40 210 105 51 128 93 57 97 78 60
-60 64 65 57 61 64 62 61 67 57 61 64 58 64 64 57 63 61 71 65 56 102 79 82
-155 104 59 213 105 50 217 104 40 207 105 38 210 105 40 219 98 50 212 101 45 209 105 45
-216 99 44 208 103 45 207 105 48 217 98 38 112 79 60 54 64 59 53 60 64 66 60 61
-202 204 206 254 255 251 254 255 255 254 255 255 253 253 253
-253 253 253 249 252 251 254 255 255 254 255 251 254 254 254 255 254 255 21 19 24 0 1 1
-68 58 52 165 143 59 173 142 59 169 138 59 166 144 56 166 134 56 173 142 59 169 144 61
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 138 59 169 141 58 169 144 61 169 141 58 173 142 59 148 133 63 4 1 5
-72 76 65 166 144 56 169 144 61 169 141 58 168 136 64 166 134 56 169 141 58 169 141 58
-169 141 58 166 144 56 169 144 61 173 138 52 166 144 56 178 172 162 254 252 250 253 252 247
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 253 253 253 255 255 255 255 255 255 252 252 252 255 255 255 255 255 255 255 255 255
-252 252 252 253 253 253 254 254 254 254 254 254 255 255 255 241 240 247 97 100 105 4 2 1
-0 0 0 125 131 132 253 253 253 255 255 255 253 253 253 255 255 255 255 255 255 255 255 255
-255 255 255 251 251 251 254 254 254 255 255 255 255 255 255 254 254 254 255 255 255 251 251 251
-255 255 255 252 252 252 254 254 254 252 252 252 253 253 253 255 255 255 254 254 254 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 253 152 161 158 60 64 65 57 63 61 101 91 62
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-158 127 55 158 134 59 158 124 53 159 126 56 157 124 59 159 126 56 156 124 53 150 128 52
-142 120 69 101 91 62 69 60 69 62 61 67 58 62 63 58 62 65 58 65 69 53 60 64
-72 73 56 110 92 61 155 127 54 158 127 55 157 124 59 159 134 56 152 124 51 156 125 56
-157 127 54 158 124 54 158 127 55 154 129 46 157 124 59 162 124 55 150 126 55 110 92 61
-57 58 61 59 64 62 68 69 75 250 247 249 254 251 252 255 255 255 253 253 253 254 254 253
-254 255 251 202 206 211 62 65 65 58 62 63 57 63 63 113 104 59 152 127 56 159 126 56
-155 128 52 157 124 59 159 126 56 156 129 45 155 127 54 158 127 55 158 124 54 148 133 63
-113 104 59 71 65 56 62 65 65 57 63 61 59 64 62 60 61 69 60 61 69 58 65 54
-57 63 61 58 62 65 58 65 54 58 65 54 59 60 64 101 91 62 147 124 59 158 125 54
-158 124 53 156 129 45 157 124 59 157 124 59 158 132 49 159 126 56 156 126 54 158 124 54
-142 120 69 62 65 65 53 63 60 58 65 69 125 131 132 254 255 251 249 254 246 255 254 255
-254 255 251 254 255 255 254 255 251 125 131 132 59 60 64 57 63 61 71 65 56 148 133 63
-155 128 52 157 124 59 156 128 53 158 126 53 156 124 53 156 126 54 157 124 59 156 124 53
-157 124 59 152 124 51 159 126 56 155 128 52 128 99 63 85 80 60 62 66 56 62 61 67
-58 62 63 57 63 61 57 63 61 62 65 65 97 78 60 128 113 57 155 126 57 158 127 55
-161 124 50 156 124 53 159 126 56 156 124 53 156 126 54 158 124 53 155 127 54 157 127 54
-155 127 54 158 124 56 155 127 54 158 125 54 156 125 56 155 128 52 128 113 57 58 62 65
-57 63 61 104 112 110 253 253 255 255 255 255 253 253 253 252 252 252 202 204 206 59 64 62
-66 60 61 58 65 69 113 104 59 157 124 59 156 124 53 157 126 52 155 128 52 158 124 56
-156 125 56 166 129 59 161 124 50 152 124 51 157 124 59 161 125 43 149 124 53 142 120 69
-109 102 83 72 76 65 59 59 56 57 63 61 62 65 65 59 60 64 59 59 56 72 76 65
-113 104 59 155 126 57 158 125 54 159 126 56 155 127 54 158 134 59 157 124 59 158 127 55
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-156 126 54 158 126 53 72 76 65 58 62 63 57 63 63 202 206 211 255 253 254 156 160 157
-58 62 63 58 64 64 101 91 62 155 126 57 158 125 54 156 126 54 156 124 53 156 126 54
-158 125 54 156 126 54 156 125 56 155 127 54 128 113 57 58 62 65 58 62 65 104 112 110
-255 255 255 254 255 251 254 255 255 253 252 247 230 230 230 71 72 69 59 64 62 60 64 65
-101 91 62 149 124 55 158 126 53 157 127 54 158 124 56 158 124 54 154 129 46 157 127 54
-158 127 55 152 127 56 152 124 44 128 113 57 72 73 56 53 64 53 66 60 61 57 63 63
-53 63 60 57 63 61 58 65 54 56 66 64 58 65 69 57 58 63 60 60 63 59 59 56
-84 69 58 147 124 59 162 125 53 155 126 57 155 128 52 157 126 52 157 127 54 152 124 51
-158 125 54 157 126 52 152 127 56 142 120 69 72 76 65 59 64 62 54 64 59 97 100 105
-255 255 255 252 252 252 251 251 251 255 255 255 254 255 255 57 63 61 60 64 65 57 63 63
-211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45
-212 104 43 207 105 38 212 101 45 209 105 45 213 105 46 210 99 44 213 105 50 212 98 39
-207 99 38 155 104 59 97 78 60 62 66 62 57 60 56 56 64 62 56 66 64 59 59 56
-71 68 65 97 78 60 174 105 47 216 99 44 213 103 41 210 99 44 213 100 52 207 99 38
-212 104 43 212 101 45 210 102 46 213 105 50 208 103 45 211 102 45 210 105 51 198 102 49
-97 78 60 60 61 69 56 66 64 104 112 110 251 251 251 254 252 251 254 255 255 254 255 255
-248 254 252 255 255 255 253 252 247 113 113 120 58 62 65 53 63 60 72 76 65 185 105 60
-209 105 45 211 102 45 213 100 46 209 99 39 213 103 41 213 100 52 207 99 48 213 105 46
-212 104 43 213 103 41 213 105 46 198 102 49 128 93 57 84 69 58 60 64 65 57 60 70
-53 63 60 58 66 61 53 64 53 62 70 65 112 79 60 185 105 60 212 98 39 213 105 50
-213 103 41 207 105 38 210 102 46 213 100 52 212 104 43 219 98 50 209 105 45 213 105 46
-213 105 50 198 102 49 112 79 60 57 60 56 62 65 65 68 69 75 241 240 247 252 252 252
-253 253 255 254 251 252 104 112 110 57 58 61 62 65 65 155 104 59 210 102 46 211 102 45
-212 101 45 211 102 45 211 102 45 210 99 44 210 102 46 210 102 46 210 102 46 211 102 45
-212 104 43 207 99 48 217 105 50 112 79 60 62 66 56 54 64 59 58 62 65 53 64 53
-53 63 60 62 61 67 58 64 64 50 65 64 54 67 66 58 62 65 68 58 52 110 92 61
-213 100 52 208 103 45 217 104 40 213 103 41 210 99 51 212 104 43 208 103 45 213 103 41
-212 104 43 210 102 46 212 101 45 211 99 45 112 79 60 54 67 66 57 58 63 113 113 120
-255 255 255 251 251 251 248 254 252 254 255 255 255 253 254 241 240 247 71 72 69 58 62 65
-50 65 64 112 79 60 210 105 51 211 99 45 210 105 51 217 105 50 200 101 40 212 104 43
-208 103 45 212 101 45 219 98 50 211 102 45 174 105 47 84 69 58 60 60 63 62 66 62
-56 64 62 60 64 65 58 64 64 53 63 60 56 64 62 56 64 62 59 59 56 66 60 61
-62 65 65 81 77 81 185 105 60 210 105 40 211 99 45 211 104 39 217 104 40 209 99 39
-209 105 45 210 105 51 209 99 39 210 105 51 210 99 51 71 72 69 58 64 64 54 64 59
-81 77 81 253 255 254 254 254 254 253 253 253 255 255 255
-255 255 255 253 253 253 254 252 251 255 255 255 252 252 252 187 189 188 0 1 1 0 1 1
-142 120 69 169 144 61 173 138 52 169 138 59 169 141 58 169 138 59 169 141 58 169 138 59
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 138 59 173 142 59 168 136 64 173 138 52 169 144 61 68 58 52
-0 3 1 151 135 59 169 138 59 173 142 59 168 136 64 169 144 61 173 138 52 169 141 58
-166 144 56 169 144 61 169 138 59 169 138 59 182 158 106 250 252 254 254 255 251 253 255 254
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-253 253 253 254 254 254 253 253 253 254 254 254 251 251 251 255 255 255 255 255 255 251 251 251
-255 255 255 255 255 255 255 255 255 254 254 254 202 204 206 113 113 120 0 0 0 4 2 1
-4 2 1 4 2 1 21 19 24 97 100 105 187 189 188 255 255 255 254 254 254 255 255 255
-254 254 254 255 255 255 255 255 255 255 255 255 253 253 253 254 254 254 255 255 255 254 254 254
-255 255 255 254 254 254 254 254 254 255 255 255 255 255 255 253 253 253 255 255 255 251 251 251
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 253 152 161 158 60 64 65 57 63 61 101 91 62
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-158 126 53 157 124 59 159 126 56 158 126 53 157 124 59 158 125 54 147 124 59 94 90 61
-58 65 54 58 64 64 58 65 69 56 64 62 54 64 59 57 63 63 57 61 64 59 64 62
-54 64 59 62 65 65 71 68 65 128 113 57 154 129 46 158 124 56 159 126 56 150 128 52
-155 127 54 156 125 56 159 126 56 155 128 52 159 126 56 162 124 55 158 126 53 147 124 59
-71 65 56 56 66 64 57 63 61 154 157 157 255 255 255 254 254 254 255 255 253 255 255 253
-253 253 255 97 100 105 59 64 62 58 62 65 85 80 60 158 127 55 155 126 57 157 126 52
-156 128 53 158 126 53 158 125 54 158 127 55 154 129 46 155 126 57 152 127 56 94 90 61
-62 65 65 57 63 61 53 63 60 58 65 69 58 65 69 81 77 81 110 110 107 104 112 110
-97 100 105 62 65 65 59 60 70 58 65 69 56 66 64 57 60 70 84 69 58 147 124 59
-162 125 53 152 124 51 159 126 56 158 127 55 158 124 53 156 124 53 155 128 52 159 126 56
-156 124 53 110 92 61 58 62 65 57 63 61 62 66 62 202 204 206 248 254 252 255 255 255
-254 255 251 255 255 255 230 230 230 62 65 65 57 58 61 56 66 64 128 113 57 152 124 51
-155 128 52 158 124 56 159 126 56 156 126 54 152 124 51 157 127 54 157 124 59 156 124 53
-152 124 51 158 127 55 142 120 69 81 77 81 62 61 67 62 65 65 53 60 64 50 65 64
-59 64 62 58 64 64 59 64 62 58 66 61 56 66 64 60 64 65 85 80 60 142 120 69
-162 124 55 158 127 55 156 124 53 156 124 53 156 128 53 158 124 53 155 127 54 159 126 56
-155 127 54 158 124 56 155 127 54 158 125 54 156 125 56 155 128 52 128 113 57 58 62 65
-57 63 63 104 112 110 252 252 252 255 255 255 253 253 253 254 255 255 104 112 110 58 64 64
-57 61 64 72 76 65 152 124 51 158 127 55 155 127 54 158 124 53 155 128 52 158 124 56
-157 126 52 152 124 51 157 124 59 155 126 57 155 128 52 155 128 52 101 91 62 62 66 62
-59 60 62 62 65 65 59 64 62 58 64 64 57 63 61 58 64 64 62 65 65 58 62 65
-58 65 54 71 68 65 128 113 57 156 124 53 156 124 53 158 124 56 152 127 56 157 126 52
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-156 126 54 158 126 53 72 76 65 58 62 63 57 63 63 202 206 211 255 253 254 156 160 157
-58 62 63 58 64 64 101 91 62 155 126 57 158 125 54 156 126 54 156 124 53 156 126 54
-158 125 54 156 126 54 156 125 56 155 127 54 128 113 57 58 62 65 58 62 65 104 112 110
-254 254 255 253 255 254 252 252 252 254 255 251 125 131 132 56 66 64 58 65 69 71 68 65
-147 124 59 159 134 56 152 124 51 158 127 55 157 126 52 156 124 53 158 127 55 155 128 52
-157 126 52 156 125 56 113 104 59 54 64 59 57 60 70 57 60 70 58 65 69 58 62 65
-81 77 81 104 112 110 110 110 107 104 112 110 56 64 62 58 62 65 57 60 70 57 60 70
-58 67 65 69 60 69 128 113 57 159 126 56 148 128 46 158 132 49 162 124 55 155 128 52
-156 124 53 159 126 56 150 126 55 158 127 55 128 99 63 58 62 63 53 64 53 62 61 67
-187 189 188 254 254 254 255 255 255 255 255 255 249 252 251 59 64 62 57 63 63 57 63 63
-211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45
-210 105 40 209 99 39 213 103 41 210 105 51 207 99 48 212 104 43 216 99 44 174 105 47
-102 79 82 66 60 61 57 60 70 60 64 65 59 64 62 58 62 65 58 62 65 59 59 56
-59 64 62 58 65 69 58 65 69 97 78 60 198 102 49 217 105 50 210 105 51 213 103 41
-212 101 45 211 99 45 210 99 44 217 105 50 209 99 39 207 99 38 211 102 45 213 100 46
-155 104 59 58 65 69 57 61 64 60 64 65 230 230 230 249 254 254 255 254 255 249 252 251
-254 255 255 254 251 252 202 204 206 58 67 65 58 65 69 59 60 62 155 104 59 216 99 44
-208 103 45 210 99 44 216 99 44 209 99 39 210 105 51 213 100 46 213 103 41 207 99 48
-211 99 45 212 101 45 140 101 45 71 68 65 62 61 67 59 64 62 53 67 71 59 60 62
-58 64 64 60 61 69 62 61 67 62 66 56 57 60 56 58 66 61 112 79 60 198 102 49
-212 98 39 216 99 44 217 105 50 208 103 45 213 100 46 213 103 41 207 99 38 210 102 46
-210 99 44 217 105 50 198 102 49 71 65 56 62 61 67 62 66 56 125 131 132 254 255 255
-254 255 255 255 254 255 104 112 110 57 58 61 60 64 65 155 104 59 211 99 45 213 105 46
-211 102 45 212 101 45 212 104 43 210 99 44 210 102 46 210 105 51 210 102 46 211 102 45
-212 104 43 212 101 45 84 69 58 58 65 69 57 60 56 54 67 66 66 60 61 68 69 75
-104 112 110 97 100 105 110 110 107 60 60 63 57 60 70 54 67 66 58 67 65 56 66 64
-112 79 60 208 103 45 212 98 39 213 100 46 213 105 46 209 99 39 213 105 50 211 102 45
-209 99 39 213 100 52 208 103 45 210 102 46 174 105 47 54 67 66 58 59 64 62 65 65
-255 255 255 254 255 251 254 254 253 255 255 255 255 255 253 140 141 138 62 65 65 53 60 64
-62 66 56 198 102 49 217 105 50 209 99 39 213 103 41 207 99 48 217 98 38 209 105 45
-211 102 45 216 99 44 212 101 45 128 93 57 53 67 71 58 68 63 58 65 69 50 65 64
-57 60 56 71 72 69 104 112 110 104 112 110 104 112 110 53 63 60 53 63 60 58 64 64
-58 62 65 53 60 64 62 65 65 174 105 47 216 99 44 207 105 48 213 105 50 210 105 51
-210 99 44 211 102 45 211 102 45 208 103 45 213 103 41 155 104 59 54 67 66 59 59 56
-57 63 63 160 163 161 255 253 254 255 254 255 255 255 253
-249 252 251 255 255 255 254 255 251 252 252 252 255 255 253 97 100 105 0 1 1 48 49 51
-168 136 64 173 138 52 173 142 59 169 141 58 169 141 58 169 138 59 173 142 59 169 138 59
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 138 59 166 144 56 169 144 61 173 138 52 164 144 50 109 102 83
-0 3 1 142 120 69 169 138 59 166 144 56 169 141 58 166 144 56 169 141 58 169 141 58
-165 143 59 169 141 58 169 138 59 182 158 106 255 255 253 253 252 247 253 253 255 253 255 254
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 254 254 254 255 255 255 255 255 255 251 251 251 255 255 255 255 255 255
-251 251 251 255 255 255 202 206 211 97 100 105 0 0 0 4 2 1 4 2 1 0 0 0
-0 0 0 4 2 1 0 0 0 0 1 1 4 2 1 62 65 65 219 227 224 255 255 255
-255 255 255 255 255 255 219 227 224 125 131 132 62 65 65 21 19 24 0 0 0 21 19 24
-57 58 61 140 141 138 219 227 224 254 254 254 252 252 252 255 255 255 251 251 251 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 253 152 161 158 60 64 65 57 63 61 101 91 62
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-156 126 54 166 129 59 156 126 54 158 127 55 162 125 53 147 124 59 72 76 65 60 60 63
-53 63 60 58 62 65 58 64 64 57 60 56 97 100 105 104 112 110 68 69 75 57 63 61
-57 63 63 56 64 62 54 67 66 62 66 56 113 104 59 168 131 61 161 124 50 155 126 57
-155 127 54 156 124 53 159 126 56 152 124 51 158 127 55 162 124 55 158 124 53 158 132 49
-110 92 61 58 62 65 59 64 62 88 95 83 253 253 255 251 251 251 249 252 251 255 254 255
-187 189 188 57 61 64 57 63 61 59 60 64 142 120 69 157 126 52 156 124 53 156 128 53
-149 124 53 159 126 56 162 124 52 157 124 59 158 127 55 150 126 55 94 90 61 60 60 63
-57 58 61 62 65 65 71 72 69 154 157 157 230 230 230 254 255 251 250 250 247 253 255 254
-248 254 252 241 240 247 187 189 188 97 100 105 62 61 67 57 60 56 62 66 56 71 68 65
-142 120 69 158 124 54 157 126 52 155 128 52 157 124 59 158 124 54 159 134 56 156 124 53
-157 124 59 155 128 52 72 76 65 58 65 54 57 60 56 110 110 107 254 255 255 254 255 251
-254 254 254 255 253 254 125 131 132 59 59 56 62 66 62 72 76 65 158 132 49 159 126 56
-156 126 54 158 125 54 159 126 56 156 126 54 155 128 52 158 127 55 156 125 56 157 126 52
-157 124 59 128 113 57 71 65 56 53 60 64 56 66 64 57 60 56 62 65 65 57 63 61
-110 110 107 110 110 107 57 63 61 53 60 64 60 61 69 62 65 65 59 60 62 68 69 75
-128 99 63 152 124 44 159 126 56 159 126 56 152 124 44 158 127 55 159 126 56 155 127 54
-155 127 54 158 124 56 155 127 54 158 125 54 156 125 56 155 128 52 128 113 57 58 62 65
-57 63 63 104 112 110 254 252 251 254 252 250 255 255 255 230 230 230 58 62 65 60 64 65
-58 65 69 128 99 63 161 124 50 157 126 52 156 124 53 158 125 54 159 126 56 158 126 53
-158 125 54 158 124 56 156 128 53 158 124 56 147 124 59 85 80 60 66 60 61 57 60 70
-57 60 70 56 64 62 57 63 61 97 100 105 104 112 110 62 70 69 56 64 62 58 65 69
-58 62 65 51 61 71 59 64 62 128 99 63 161 124 50 159 134 56 155 127 54 152 124 51
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-156 126 54 158 126 53 72 76 65 58 62 63 57 63 63 202 206 211 255 253 254 156 160 157
-58 62 63 58 64 64 101 91 62 155 126 57 158 125 54 156 126 54 156 124 53 156 126 54
-158 125 54 156 126 54 156 125 56 155 127 54 128 113 57 58 62 65 58 62 65 104 112 110
-255 255 255 253 255 254 254 255 251 230 230 230 58 65 54 56 64 62 51 61 71 113 104 59
-158 124 53 159 126 56 152 124 51 156 128 53 157 126 52 156 125 56 157 124 59 156 124 53
-162 125 53 110 92 61 58 65 69 50 65 64 57 60 56 62 61 67 140 141 138 224 220 212
-255 255 255 250 247 249 254 251 254 255 255 255 255 255 253 187 189 188 104 112 110 58 62 63
-58 62 65 53 64 53 69 60 69 128 113 57 155 126 57 152 124 51 162 125 53 152 127 56
-158 125 54 157 126 52 156 128 53 156 124 53 161 124 50 94 90 61 58 62 63 62 65 65
-81 77 81 254 255 255 251 251 251 254 254 254 254 255 255 60 60 63 58 62 63 60 64 65
-211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45
-213 100 52 209 99 39 212 101 45 211 99 45 217 105 50 210 99 51 174 105 47 71 65 56
-54 64 59 59 64 62 59 64 62 59 59 56 59 64 62 104 112 110 104 112 110 58 65 54
-66 60 61 54 67 66 56 64 62 58 65 69 66 60 61 174 105 47 211 102 45 211 102 45
-212 104 43 208 103 45 210 99 44 217 105 50 216 99 44 212 104 43 212 104 43 211 99 45
-210 102 46 85 80 60 62 65 65 57 58 61 125 131 132 253 255 254 254 251 252 254 255 251
-249 254 254 254 252 251 104 112 110 57 60 56 56 66 64 97 78 60 211 104 39 212 101 45
-210 99 44 210 102 46 211 104 39 211 102 45 210 102 46 217 104 40 212 104 43 212 101 45
-208 103 45 112 79 60 56 66 64 57 63 61 57 60 56 58 62 65 57 60 56 71 72 69
-110 110 107 97 100 105 56 64 62 56 66 64 62 61 67 57 58 63 59 64 62 84 69 58
-185 105 60 208 103 45 209 99 39 212 101 45 210 102 46 207 105 38 207 105 48 213 100 46
-213 105 46 213 103 41 207 99 38 142 101 66 57 61 64 53 63 60 66 60 61 241 240 247
-248 251 253 254 251 252 104 112 110 60 64 65 58 62 63 155 104 59 211 99 45 211 102 45
-208 103 45 212 101 45 213 100 46 211 102 45 209 105 45 210 102 46 211 99 45 212 101 45
-213 105 46 110 92 61 58 62 65 62 61 67 58 68 63 110 110 107 187 189 188 255 253 254
-254 254 253 253 255 254 255 255 255 255 255 253 172 178 183 97 100 105 57 58 61 56 66 64
-53 63 60 112 79 60 213 105 46 216 99 44 207 105 38 212 104 43 210 105 51 212 98 39
-213 105 46 213 100 46 208 103 45 210 105 51 208 103 45 62 66 62 62 65 65 59 60 62
-202 204 206 248 254 252 254 255 251 255 254 255 241 240 247 57 63 61 60 64 65 58 62 63
-140 101 45 213 100 46 212 104 43 209 105 45 212 98 39 212 104 43 213 100 46 212 101 45
-210 102 46 210 102 46 128 93 57 62 65 65 58 59 64 58 62 65 57 60 56 140 141 138
-224 220 212 251 251 251 255 255 253 254 252 250 254 255 255 253 255 254 202 204 206 113 113 120
-62 66 56 59 59 56 62 61 67 69 60 69 174 105 47 209 105 45 212 104 43 216 99 44
-212 101 45 219 98 50 208 103 45 213 103 41 208 103 45 210 105 40 112 79 60 62 61 67
-56 66 64 68 69 75 241 240 247 254 251 252 254 255 251
-253 255 254 255 254 255 254 255 251 254 254 255 242 238 229 0 3 1 0 0 0 109 102 83
-169 141 58 169 141 58 169 138 59 169 141 58 169 141 58 169 144 61 173 142 59 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 173 138 52 169 144 61 173 142 59 166 144 56 148 133 63
-0 1 1 88 95 83 173 142 59 164 134 50 173 145 52 169 144 61 169 144 61 169 141 58
-169 144 61 173 142 59 182 158 106 254 254 254 248 254 252 254 255 251 254 254 254 254 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-251 251 251 252 252 252 255 255 255 255 255 255 254 254 254 255 255 255 255 255 255 254 254 254
-255 255 255 213 212 223 48 49 51 6 9 5 0 0 0 0 1 1 0 0 0 4 2 1
-0 0 0 0 0 0 4 1 5 0 1 1 4 2 1 0 0 0 6 9 5 202 206 211
-255 255 255 140 141 138 0 1 1 0 0 0 97 100 105 125 131 132 140 141 138 97 100 105
-71 72 69 0 0 0 0 0 0 156 160 157 255 255 255 254 254 254 255 255 255 252 252 252
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 253 152 161 158 60 64 65 57 63 61 101 91 62
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-158 132 49 152 124 51 157 127 54 156 124 53 148 128 46 71 72 69 53 60 64 60 64 65
-62 65 65 81 77 81 187 189 188 241 240 247 250 252 254 253 255 254 248 254 252 230 230 230
-156 160 157 59 60 64 60 64 65 53 63 60 59 64 62 113 104 59 155 128 52 162 124 55
-156 126 54 158 125 54 159 126 56 156 125 56 156 128 53 158 126 53 158 125 54 157 126 52
-147 124 59 68 69 75 57 63 61 57 60 56 187 189 188 254 255 251 248 254 252 253 253 255
-110 110 107 53 63 60 58 65 69 94 90 61 161 125 43 159 126 56 156 125 56 157 127 54
-159 134 56 157 124 59 157 124 59 152 124 51 156 126 54 128 99 63 58 62 65 58 62 63
-62 65 65 97 100 105 241 240 247 255 255 253 253 252 247 254 254 254 250 252 254 254 255 251
-254 255 251 255 254 255 254 254 255 254 255 251 156 160 157 62 65 65 57 58 61 60 64 65
-85 80 60 155 126 57 162 125 53 155 127 54 155 128 52 156 125 56 157 127 54 158 125 54
-157 124 59 161 125 43 113 104 59 56 64 62 58 62 65 56 64 62 230 230 230 254 252 251
-254 254 255 241 240 247 71 72 69 58 62 65 54 64 59 113 104 59 156 124 53 156 124 53
-155 127 54 158 125 54 158 125 54 155 127 54 157 127 54 158 125 54 161 124 50 158 132 49
-128 113 57 71 68 65 57 63 63 58 65 69 59 64 62 140 141 138 213 212 223 253 255 254
-249 254 254 253 255 254 253 255 254 202 204 206 113 113 120 58 64 64 58 62 65 53 63 60
-71 65 56 142 120 69 154 129 46 158 124 54 158 127 55 149 124 55 159 126 56 155 128 52
-155 127 54 158 124 56 155 127 54 158 125 54 156 125 56 155 128 52 128 113 57 58 62 65
-57 61 64 110 110 107 255 255 253 255 255 253 253 253 253 145 151 154 58 64 64 57 63 63
-72 76 65 159 126 56 162 124 55 158 126 53 156 124 53 156 128 53 162 124 55 152 124 51
-158 127 55 158 124 54 157 124 59 155 127 54 97 78 60 53 60 64 58 65 69 59 64 62
-88 95 83 187 189 188 241 240 247 254 251 249 254 255 251 255 254 255 230 230 230 160 163 161
-71 72 69 60 64 65 53 67 71 57 58 61 113 104 59 154 129 46 157 124 59 155 126 57
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-156 126 54 158 126 53 72 76 65 58 62 63 57 63 63 202 206 211 255 253 254 156 160 157
-58 62 63 58 64 64 101 91 62 155 126 57 158 125 54 156 126 54 156 124 53 156 126 54
-158 125 54 156 126 54 156 125 56 155 127 54 128 113 57 58 62 65 58 62 65 104 112 110
-255 255 253 249 252 251 254 255 251 145 151 154 57 63 61 58 62 65 72 76 65 155 126 57
-158 124 56 157 124 59 156 126 54 158 127 55 156 126 54 156 125 56 158 124 56 162 124 55
-128 113 57 59 60 62 58 59 68 62 66 56 88 95 83 224 220 212 254 251 252 253 252 247
-253 252 247 254 255 251 255 253 254 255 253 254 254 251 249 254 255 251 251 251 251 202 204 206
-68 69 75 58 66 61 53 64 53 71 68 65 147 124 59 159 126 56 155 128 52 159 126 56
-155 126 57 161 124 50 158 124 56 159 126 56 152 124 44 142 120 69 62 61 67 57 63 61
-59 64 62 187 189 188 255 255 255 254 254 254 252 252 252 62 65 65 58 62 63 58 64 64
-211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45
-216 99 44 210 105 51 211 102 45 213 105 46 212 101 45 174 105 47 62 70 69 53 60 64
-56 64 62 60 64 65 125 131 132 224 220 212 255 254 255 255 254 255 253 253 255 249 254 254
-202 204 206 110 110 107 57 63 61 57 60 56 56 66 64 71 68 65 174 105 47 210 102 46
-216 99 44 209 105 45 208 103 45 210 99 44 216 99 44 212 101 45 213 105 50 211 102 45
-216 99 44 155 104 59 59 64 62 59 60 64 68 69 75 254 255 255 254 254 253 251 251 251
-255 255 255 230 230 230 60 64 65 58 62 65 60 64 65 155 104 59 208 103 45 210 102 46
-216 99 44 208 103 45 210 105 51 210 102 46 212 98 39 216 99 44 207 99 48 210 102 46
-112 79 60 59 64 62 50 65 64 54 64 59 71 81 83 154 157 157 230 230 230 253 253 255
-253 255 254 254 252 250 255 255 253 172 178 183 88 95 83 58 66 61 54 64 59 60 61 69
-72 73 56 210 99 51 210 105 51 207 105 48 213 103 41 216 99 44 216 99 44 211 99 45
-209 99 39 211 102 45 210 105 51 210 102 46 71 72 69 58 64 64 66 60 61 156 160 157
-254 255 255 254 251 252 104 112 110 60 64 65 58 62 63 155 104 59 210 102 46 211 102 45
-208 103 45 212 101 45 213 100 46 211 102 45 208 103 45 213 103 41 213 103 41 212 104 43
-155 104 59 58 66 61 53 60 64 53 63 60 140 141 138 254 255 255 249 254 246 254 254 253
-254 255 251 254 251 252 253 255 254 248 254 252 255 255 253 254 255 255 125 131 132 58 62 63
-62 61 67 50 65 64 185 105 60 208 103 45 210 105 51 213 100 46 209 105 45 213 103 41
-208 103 45 212 98 39 210 99 44 209 105 45 213 103 41 84 69 58 53 63 60 58 62 65
-187 189 188 253 255 254 254 252 250 250 252 254 160 163 161 53 63 60 53 60 64 84 69 58
-210 105 51 210 105 40 210 102 46 207 105 48 211 104 39 219 98 50 210 105 40 211 99 45
-210 105 40 185 105 60 62 65 65 58 65 54 58 65 54 68 69 75 213 212 223 255 255 253
-255 255 255 255 255 255 255 253 254 254 252 251 255 255 253 254 251 252 253 253 253 255 255 255
-187 189 188 71 72 69 62 61 67 53 67 71 62 66 56 198 102 49 198 102 49 217 98 38
-209 105 45 213 100 46 211 99 45 216 99 44 216 99 44 207 105 38 198 102 49 71 68 65
-54 67 66 57 63 63 187 189 188 255 255 255 253 255 254
-255 255 253 253 253 255 253 252 247 255 255 255 125 131 132 0 3 1 4 2 1 142 120 69
-169 141 58 169 141 58 169 138 59 169 144 61 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 138 59 169 144 61 169 141 58 169 141 58 169 141 58 169 138 59 173 142 59 169 144 61
-71 68 65 4 2 1 165 143 59 173 142 59 169 141 58 166 134 56 165 143 59 169 141 58
-168 136 64 169 144 61 250 247 249 248 254 252 255 255 253 254 254 254 254 251 252 254 255 251
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 254 254 254 252 252 252 255 255 255 251 251 251 255 255 255
-213 212 223 21 19 24 0 1 1 0 0 0 0 1 1 0 0 0 4 2 1 71 72 69
-140 141 138 172 178 183 202 204 206 202 204 206 140 141 138 48 49 51 0 1 1 21 19 24
-160 163 161 0 1 1 145 151 154 241 240 247 255 255 255 253 253 253 255 255 255 254 254 254
-255 255 255 202 204 206 88 95 83 0 0 0 172 178 183 254 254 254 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 253 152 161 158 60 64 65 57 63 61 101 91 62
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-152 124 44 157 124 59 158 127 55 158 132 49 97 78 60 54 67 66 58 65 69 53 64 53
-154 157 157 253 255 254 253 252 247 254 255 251 254 252 251 254 250 255 254 250 255 255 253 254
-254 255 251 224 220 212 97 100 105 60 64 65 54 67 66 58 65 54 128 113 57 162 124 55
-158 127 55 157 126 52 157 126 52 158 127 55 155 127 54 152 124 44 157 124 59 157 124 59
-154 129 46 85 80 60 59 60 64 59 64 62 125 131 132 254 255 251 255 255 253 230 230 230
-57 60 56 59 64 62 53 67 71 147 124 59 162 125 53 155 127 54 155 126 57 158 125 54
-152 124 44 157 124 59 155 128 52 158 127 55 149 124 53 66 60 61 58 66 61 58 62 65
-97 100 105 241 240 247 255 255 253 254 254 255 254 254 255 254 255 251 254 255 251 254 255 255
-254 254 254 254 254 253 254 254 253 254 255 255 253 255 254 187 189 188 58 67 65 53 63 60
-59 64 62 113 104 59 158 125 54 152 124 51 158 127 55 158 127 55 156 124 53 158 124 53
-152 127 56 157 126 52 159 126 56 71 72 69 58 62 65 53 63 60 140 141 138 255 254 255
-255 255 253 172 178 183 58 65 69 58 65 69 68 69 75 155 127 54 159 126 56 158 127 55
-156 125 56 158 126 53 158 126 53 155 128 52 159 126 56 162 125 53 157 126 52 147 124 59
-62 65 65 62 66 62 58 59 64 71 72 69 202 206 211 253 253 255 254 255 251 249 254 254
-254 255 251 255 253 254 254 250 255 255 254 255 249 254 254 172 178 183 58 65 69 58 59 68
-50 65 64 84 69 58 155 128 52 157 124 59 156 124 53 157 124 59 155 128 52 158 127 55
-155 127 54 158 124 56 155 127 54 158 125 54 156 125 56 155 128 52 128 113 57 58 62 65
-58 62 65 110 110 107 255 255 253 255 255 253 253 253 255 81 77 81 57 60 56 62 66 62
-113 104 59 159 126 56 161 124 50 157 124 59 158 124 56 158 126 53 158 127 55 158 125 54
-154 129 46 162 125 53 159 126 56 101 91 62 56 66 64 58 67 65 54 64 59 125 131 132
-241 240 247 255 255 255 253 253 253 255 253 254 254 251 252 255 255 255 251 251 251 254 255 251
-230 230 230 97 100 105 59 59 56 53 67 71 62 65 65 128 113 57 152 124 51 159 126 56
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-156 126 54 158 126 53 72 76 65 58 62 63 57 63 63 202 206 211 255 253 254 156 160 157
-58 62 63 58 64 64 101 91 62 155 126 57 158 125 54 156 126 54 156 124 53 156 126 54
-158 125 54 156 126 54 156 125 56 155 127 54 128 113 57 58 62 65 58 62 65 104 112 110
-254 252 250 255 255 255 253 255 254 71 72 69 57 61 64 59 60 64 113 104 59 161 125 43
-157 127 54 155 128 52 158 125 54 158 125 54 158 127 55 158 126 53 161 124 50 155 126 57
-62 70 65 62 66 56 62 65 65 81 77 81 242 238 229 255 255 253 255 254 255 253 252 247
-253 255 254 254 255 251 254 254 254 251 251 251 255 255 253 252 252 252 252 252 252 253 253 255
-219 227 224 60 60 63 58 62 65 54 64 59 101 91 62 155 127 54 155 128 52 158 126 53
-155 127 54 158 127 55 158 124 54 156 128 53 158 127 55 154 129 46 85 80 60 59 64 62
-59 64 62 104 112 110 254 255 255 253 253 253 255 255 255 62 65 65 57 58 61 58 64 64
-211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45
-207 105 38 210 105 51 211 104 39 207 105 48 200 101 40 62 65 65 57 60 56 53 67 71
-68 69 75 202 204 206 254 252 250 255 255 253 248 254 252 253 255 254 254 254 253 254 255 251
-254 255 251 255 255 255 172 178 183 54 64 59 62 65 65 53 60 64 71 68 65 212 104 43
-216 99 44 211 102 45 208 103 45 208 103 45 210 102 46 210 99 44 210 102 46 210 102 46
-209 99 39 210 105 51 71 65 56 58 62 65 57 61 64 187 189 188 255 255 253 255 255 255
-255 255 253 140 141 138 53 60 64 57 63 61 81 77 81 213 105 50 217 105 50 208 103 45
-213 100 46 210 102 46 210 102 46 217 105 50 207 99 48 212 98 39 217 105 50 142 101 66
-58 62 63 58 65 54 59 64 62 97 100 105 241 240 247 254 255 255 253 255 254 249 254 246
-254 255 251 253 252 247 252 252 252 249 254 254 248 254 253 156 160 157 59 60 62 53 60 64
-58 66 61 97 78 60 211 99 45 210 105 51 210 99 44 211 99 45 213 105 46 208 103 45
-217 105 50 213 100 52 210 102 46 216 99 44 128 93 57 57 58 61 53 67 71 88 95 83
-248 251 253 255 254 255 104 112 110 58 62 63 58 62 63 155 104 59 213 105 50 211 102 45
-208 103 45 211 99 45 213 100 46 209 105 45 213 103 41 216 99 44 213 100 46 208 103 45
-97 78 60 62 65 65 53 67 71 110 110 107 253 255 254 249 252 246 255 254 255 249 254 246
-253 253 255 254 252 251 254 255 251 254 255 255 254 252 250 254 255 251 254 255 251 97 100 105
-59 60 64 58 65 54 112 79 60 212 104 43 213 105 50 211 99 45 211 104 39 210 105 51
-208 103 45 213 103 41 210 105 51 213 105 46 212 104 43 128 93 57 53 63 60 58 64 64
-154 157 157 253 255 254 254 251 249 254 255 255 71 81 83 56 66 64 66 60 61 142 101 66
-217 98 38 209 105 45 207 105 38 213 100 46 210 99 51 207 99 38 217 105 50 209 105 45
-210 102 46 97 78 60 59 60 62 58 65 69 68 69 75 213 212 223 255 255 253 253 252 247
-253 255 254 249 254 254 254 255 255 255 255 255 255 255 253 255 255 253 254 254 253 255 255 253
-254 251 252 219 227 224 71 81 83 57 60 56 62 65 65 112 79 60 207 105 48 210 99 44
-209 99 39 210 99 44 213 100 52 217 98 38 207 99 38 213 105 46 212 101 45 112 79 60
-59 64 62 59 64 62 81 77 81 249 254 254 253 255 254
-249 254 246 255 254 255 253 252 247 254 255 255 21 19 24 0 1 1 71 65 56 168 136 64
-169 141 58 169 141 58 169 141 58 169 144 61 169 141 58 166 144 56 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 144 61 166 134 56 173 142 59 169 141 58 169 138 59 169 138 59 166 144 56
-109 102 83 4 2 1 142 120 69 169 138 59 169 144 61 169 144 61 169 144 61 173 138 52
-169 141 58 178 172 162 249 254 254 254 255 251 250 247 249 255 255 255 255 254 255 254 255 251
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 252 252 252 252 252 252 255 255 255 255 255 255 254 254 254 254 254 254 213 212 223
-48 49 51 4 2 1 0 0 0 0 1 1 4 1 5 113 113 120 202 206 211 255 255 255
-253 253 253 254 254 254 255 255 255 255 255 255 219 227 224 48 49 51 4 2 1 0 0 0
-21 19 24 97 100 105 255 255 255 254 254 254 253 253 253 255 255 255 254 254 254 255 255 255
-254 254 254 255 255 255 219 227 224 0 0 0 21 19 24 255 255 255 251 251 251 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 253 152 161 158 60 64 65 57 63 61 101 91 62
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-157 124 59 158 132 49 157 124 59 128 113 57 62 66 56 50 65 64 57 63 61 172 178 183
-255 255 253 254 255 251 254 255 255 254 255 255 253 255 254 249 252 251 255 255 253 249 252 251
-254 252 250 255 255 255 241 240 247 68 69 75 57 63 63 58 65 69 84 69 58 150 128 52
-159 126 56 156 125 56 154 129 46 158 127 55 158 124 56 157 126 52 158 127 55 155 126 57
-156 129 45 128 99 63 59 60 64 56 64 62 71 72 69 255 255 255 254 255 251 172 178 183
-60 60 63 58 64 64 72 73 56 158 127 55 157 124 59 155 128 52 152 127 56 158 125 54
-156 128 53 157 124 59 158 132 49 158 127 55 97 78 60 62 65 65 59 64 62 68 69 75
-241 240 247 254 255 251 254 255 251 254 255 251 251 251 251 254 255 255 255 255 255 255 253 254
-253 255 254 251 251 251 255 255 255 255 254 255 254 255 251 249 254 254 113 113 120 56 64 62
-56 66 64 71 68 65 147 124 59 161 124 50 157 124 59 154 129 46 152 124 51 159 126 56
-155 127 54 155 128 52 156 124 53 110 92 61 62 66 56 53 60 64 71 72 69 254 254 255
-255 254 255 113 113 120 58 65 69 59 64 62 101 91 62 158 127 55 152 124 44 156 125 56
-156 126 54 158 126 53 158 127 55 155 128 52 157 124 59 162 125 53 149 124 55 101 91 62
-59 64 62 53 64 53 58 66 61 219 227 224 253 253 255 253 255 254 253 253 255 254 251 249
-255 255 253 251 251 251 249 252 251 253 253 255 255 255 253 254 251 249 172 178 183 62 61 67
-58 65 69 53 60 64 113 104 59 155 126 57 158 125 54 159 126 56 152 124 51 159 126 56
-155 127 54 158 124 56 155 127 54 158 125 54 156 125 56 155 128 52 128 113 57 58 62 65
-58 62 65 110 110 107 255 255 253 253 253 253 219 227 224 57 63 63 62 70 65 62 66 56
-155 126 57 157 124 59 157 126 52 157 124 59 159 126 56 161 124 50 155 128 52 159 126 56
-159 126 56 152 124 44 147 124 59 59 59 56 53 67 71 57 58 61 125 131 132 253 255 254
-255 255 255 254 255 251 254 255 251 255 255 255 248 251 253 254 255 251 254 255 251 255 255 255
-253 253 255 250 247 249 71 81 83 58 66 61 53 60 64 72 76 65 158 134 59 161 124 50
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-156 126 54 158 126 53 72 76 65 58 62 63 57 63 63 202 206 211 255 253 254 156 160 157
-58 62 63 58 64 64 101 91 62 155 126 57 158 125 54 156 126 54 156 124 53 156 126 54
-158 125 54 156 126 54 156 125 56 155 127 54 128 113 57 58 62 65 58 62 65 104 112 110
-255 255 253 250 252 254 187 189 188 57 63 61 60 61 69 66 60 61 150 126 55 161 124 50
-156 126 54 154 129 46 156 126 54 156 125 56 158 127 55 161 124 50 157 127 54 113 104 59
-58 65 69 58 66 61 58 64 64 213 212 223 254 255 255 251 251 251 254 255 251 250 252 254
-253 255 254 253 253 255 255 255 255 249 252 251 251 251 251 249 254 254 254 255 255 254 255 255
-254 255 255 160 163 161 59 60 64 58 62 65 62 66 56 142 120 69 162 125 53 155 126 57
-158 127 55 152 124 51 159 126 56 150 126 55 166 129 59 156 129 45 142 120 69 57 60 56
-57 63 61 59 64 62 230 230 230 255 255 255 254 254 254 62 65 65 58 62 63 60 64 65
-211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45
-209 105 45 207 99 38 213 103 41 208 103 45 110 92 61 58 62 65 54 64 59 68 69 75
-219 227 224 250 252 254 253 255 254 254 254 253 254 255 251 254 255 251 249 254 254 249 254 254
-254 255 251 249 254 254 255 255 253 172 178 183 53 63 60 60 64 65 66 60 61 112 79 60
-210 102 46 210 102 46 211 102 45 209 105 45 213 105 50 210 102 46 212 101 45 210 102 46
-209 105 45 216 99 44 112 79 60 53 60 64 62 65 65 125 131 132 253 255 254 253 253 253
-248 254 252 88 95 83 62 61 67 58 65 54 142 101 66 210 99 44 217 98 38 208 103 45
-208 103 45 213 100 46 212 98 39 217 105 50 198 102 49 211 104 39 198 102 49 71 68 65
-60 61 69 58 62 65 97 100 105 241 240 247 254 250 255 255 253 254 250 250 247 255 255 253
-255 253 254 254 255 255 254 252 251 254 255 251 254 255 251 251 251 251 178 172 162 59 60 62
-57 63 61 51 61 71 174 105 47 208 103 45 217 105 50 208 103 45 208 103 45 207 105 48
-210 102 46 212 98 39 211 102 45 213 105 50 198 102 49 62 65 65 59 64 62 59 64 62
-187 189 188 254 251 252 104 112 110 58 62 63 60 64 65 155 104 59 213 105 50 211 102 45
-213 105 46 212 101 45 212 101 45 209 105 45 210 99 44 217 105 50 210 105 51 198 102 49
-53 60 64 57 61 64 57 63 61 202 204 206 253 252 247 254 250 255 255 253 254 252 252 252
-255 255 255 253 255 254 253 253 253 254 255 251 249 254 246 249 252 251 254 255 251 187 189 188
-62 66 56 51 61 71 71 68 65 213 103 41 207 99 38 213 105 46 210 102 46 211 99 45
-211 102 45 212 101 45 208 103 45 212 98 39 210 99 44 128 93 57 58 62 65 59 64 62
-156 160 157 253 255 254 254 251 249 219 227 224 57 63 61 53 63 60 71 65 56 185 105 60
-212 101 45 209 105 45 217 104 40 216 99 44 207 99 48 213 105 50 209 99 39 209 105 45
-142 101 66 58 65 54 53 67 71 58 64 64 202 204 206 254 255 251 254 255 255 254 255 251
-254 255 255 253 253 253 254 255 255 254 255 255 253 253 253 254 254 254 252 252 252 254 255 251
-253 255 254 250 250 247 178 172 162 57 61 64 62 61 67 58 65 54 185 105 60 213 105 46
-213 103 41 210 99 51 207 105 38 217 105 50 213 105 46 207 99 38 212 101 45 185 105 60
-59 59 56 59 64 62 62 66 62 213 212 223 254 255 255
-254 255 251 255 254 255 248 254 252 156 160 157 4 2 1 0 1 1 109 102 83 173 145 52
-169 141 58 169 144 61 166 144 56 166 144 56 173 142 59 169 141 58 166 144 56 169 138 59
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-173 138 52 169 144 61 168 136 64 173 142 59 164 144 50 169 141 58 173 138 52 169 141 58
-137 137 94 0 0 0 109 102 83 173 142 59 169 141 58 169 141 58 166 144 56 173 142 59
-169 144 61 255 254 255 249 254 246 249 254 246 255 255 255 254 251 252 254 255 251 249 254 254
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 253 253 253 255 255 255 252 252 252 253 253 253 255 255 255 241 240 247 71 72 69
-0 1 1 0 0 0 0 0 0 88 95 83 213 212 223 255 255 255 255 255 255 254 254 254
-255 255 255 255 255 255 253 253 253 219 227 224 88 95 83 0 0 0 0 0 0 4 2 1
-0 1 1 145 151 154 255 255 255 253 253 253 255 255 255 254 254 254 255 255 255 255 255 255
-253 253 253 254 254 254 253 253 253 97 100 105 0 0 0 219 227 224 255 255 255 254 254 254
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 253 152 161 158 60 64 65 57 63 61 101 91 62
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-152 127 56 161 125 43 152 127 56 85 80 60 56 64 62 60 64 65 104 112 110 255 254 255
-254 255 251 255 255 253 254 254 255 253 253 255 255 255 255 255 255 253 249 252 251 255 255 253
-254 250 255 248 254 252 253 255 254 202 206 211 57 60 56 53 60 64 60 60 63 128 113 57
-158 125 54 155 126 57 154 129 46 156 126 54 157 124 59 162 125 53 156 124 53 155 128 52
-158 124 53 152 127 56 62 70 69 56 66 64 59 59 56 213 212 223 254 255 251 97 100 105
-62 61 67 53 60 64 113 104 59 157 124 59 159 126 56 154 129 46 157 127 54 158 124 53
-158 125 54 152 127 56 162 124 52 149 124 55 71 68 65 53 60 64 58 62 65 187 189 188
-253 253 255 255 254 255 254 251 252 254 252 251 255 255 253 253 253 255 253 253 255 255 254 255
-254 251 249 255 254 255 254 255 255 254 252 244 253 252 247 255 254 255 230 230 230 57 60 56
-56 66 64 57 63 61 128 113 57 162 125 53 162 124 55 156 128 53 155 127 54 158 124 54
-159 126 56 156 124 53 155 128 52 157 124 59 71 65 56 56 66 64 57 63 61 202 206 211
-254 250 255 72 76 65 53 64 53 59 60 64 128 113 57 159 126 56 157 126 52 158 124 56
-157 127 54 156 124 53 158 127 55 150 128 52 157 124 59 162 125 53 147 124 59 59 60 64
-58 64 64 62 61 67 172 178 183 255 255 255 254 252 244 254 252 244 254 252 251 249 254 254
-248 254 253 253 255 254 255 255 253 255 255 253 253 253 253 253 255 254 249 254 254 140 141 138
-57 58 61 58 65 69 62 65 65 150 128 52 162 124 52 155 128 52 155 127 54 158 124 56
-155 127 54 158 124 56 155 127 54 158 125 54 156 125 56 155 128 52 128 113 57 58 62 65
-58 62 65 110 110 107 254 252 251 254 255 255 154 157 157 57 63 63 59 59 56 81 77 81
-161 124 50 156 126 54 150 128 52 152 124 51 161 124 50 158 126 53 155 127 54 158 125 54
-157 124 59 155 126 57 94 90 61 58 62 65 58 62 63 88 95 83 241 240 247 248 254 252
-255 255 253 255 255 255 254 255 255 253 255 254 248 254 252 253 255 254 254 255 255 254 254 253
-254 254 253 253 255 254 224 220 212 59 59 56 58 62 65 59 64 62 113 104 59 162 125 53
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-156 126 54 158 126 53 72 76 65 58 62 63 57 63 63 202 206 211 255 253 254 156 160 157
-58 62 63 58 64 64 101 91 62 155 126 57 158 125 54 156 126 54 156 124 53 156 126 54
-158 125 54 156 126 54 156 125 56 155 127 54 128 113 57 58 62 65 58 62 65 104 112 110
-254 254 255 254 255 255 125 131 132 57 61 64 58 62 65 94 90 61 158 127 55 158 124 56
-157 124 59 158 132 49 158 127 55 152 124 51 156 126 54 162 125 53 147 124 59 72 76 65
-59 60 62 58 62 65 125 131 132 255 254 255 253 255 254 254 255 251 255 255 253 254 251 249
-253 252 247 254 255 251 254 255 251 255 255 253 255 255 255 254 255 255 255 255 255 254 255 251
-253 252 247 254 255 255 81 77 81 56 64 62 62 61 67 110 92 61 155 127 54 156 126 54
-156 124 53 158 126 53 150 128 52 157 124 59 158 127 55 162 124 52 152 127 56 72 76 65
-57 63 61 57 63 61 178 172 162 254 254 254 255 255 255 57 58 61 60 64 65 57 63 63
-211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45
-212 101 45 213 100 52 213 105 46 198 102 49 56 66 64 62 65 65 60 60 63 172 178 183
-254 251 249 254 255 251 248 254 252 254 255 255 252 252 252 254 255 251 253 252 247 254 255 251
-253 253 255 255 254 255 249 254 254 253 252 247 145 151 154 58 65 69 58 65 54 62 65 65
-200 101 40 210 102 46 216 99 44 216 99 44 210 99 44 212 101 45 212 101 45 213 105 46
-213 100 46 207 105 48 155 104 59 56 66 64 53 63 60 81 77 81 254 255 255 254 255 255
-224 220 212 60 61 69 53 63 60 62 70 65 212 98 39 209 105 45 213 103 41 207 105 48
-211 102 45 210 105 51 216 99 44 207 105 38 213 103 41 213 100 46 128 93 57 54 67 66
-59 64 62 71 72 69 230 230 230 254 255 251 254 255 251 253 252 247 249 254 246 254 250 255
-254 255 251 255 255 255 254 252 250 254 255 251 251 251 251 255 254 255 253 253 255 104 112 110
-57 60 70 62 66 62 71 65 56 209 105 45 211 104 39 207 105 48 212 101 45 216 99 44
-208 103 45 213 105 46 209 99 39 211 102 45 211 99 45 112 79 60 62 61 67 59 64 62
-145 151 154 254 251 252 104 112 110 62 65 65 58 62 63 155 104 59 210 102 46 211 102 45
-212 104 43 211 99 45 211 102 45 208 103 45 208 103 45 217 105 50 210 105 51 174 105 47
-56 66 64 58 65 54 88 95 83 249 254 254 249 252 251 254 255 251 253 253 255 255 254 255
-255 255 253 254 255 251 255 255 253 253 253 255 255 254 255 255 254 255 252 252 252 255 254 255
-68 69 75 62 61 67 53 67 71 155 104 59 217 105 50 211 102 45 208 103 45 213 103 41
-212 101 45 213 100 46 207 105 48 216 99 44 210 102 46 112 79 60 62 61 67 57 60 56
-154 157 157 253 255 254 254 255 251 140 141 138 57 63 61 60 64 65 97 78 60 216 99 44
-212 101 45 210 105 51 209 99 39 216 99 44 212 104 43 208 103 45 210 105 51 216 99 44
-85 80 60 58 65 54 56 66 64 125 131 132 255 255 253 254 254 255 249 254 246 253 255 254
-255 255 253 254 252 251 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 254 254 253
-254 251 252 254 255 251 254 255 251 88 95 83 50 65 64 69 60 69 112 79 60 210 99 44
-213 100 46 208 103 45 210 105 40 207 105 38 207 99 48 217 105 50 208 103 45 209 105 45
-81 77 81 66 60 61 57 60 56 156 160 157 254 254 255
-253 252 247 255 255 255 254 252 250 57 58 61 4 1 5 0 0 0 148 133 63 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-166 144 56 21 19 24 71 68 65 166 144 56 169 141 58 169 141 58 166 144 56 169 141 58
-178 172 162 254 252 244 255 255 255 255 255 255 254 254 253 253 252 247 255 255 253 253 253 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 254 254 254 254 254 254 255 255 255 254 254 254 254 254 254 145 151 154 0 1 1
-0 1 1 0 1 1 125 131 132 254 254 255 255 255 255 252 252 252 255 255 255 255 255 255
-253 253 253 255 255 255 187 189 188 48 49 51 0 1 1 0 0 0 4 2 1 0 0 0
-0 1 1 202 204 206 253 253 255 255 255 255 255 255 255 251 251 251 255 255 255 253 253 253
-254 254 254 241 240 247 255 255 255 160 163 161 0 0 0 145 151 154 254 254 254 254 254 254
-255 255 255 253 253 253 255 255 255 255 255 255 254 254 254 253 253 253 255 255 255 254 254 254
-255 255 255 255 255 255 255 255 255 255 255 253 152 161 158 60 64 65 57 63 61 101 91 62
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-157 127 54 159 126 56 128 113 57 57 63 63 60 60 63 57 63 63 230 230 230 253 252 247
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 251 252 255 255 255 254 254 254 254 255 255 140 141 138 57 63 61 59 64 62 71 72 69
-157 127 54 158 124 53 159 126 56 156 129 45 157 124 59 156 126 54 162 125 53 157 127 54
-158 127 55 156 125 56 85 80 60 62 61 67 53 63 60 178 172 162 241 240 247 57 61 64
-53 60 64 66 60 61 149 124 55 152 124 51 157 124 59 155 127 54 158 127 55 158 124 54
-157 124 59 162 124 52 157 127 54 113 104 59 58 62 65 62 66 56 68 69 75 255 253 254
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 255 255 253 253 253 254 255 255 252 252 252 253 255 254 254 255 255 254 255 255 125 131 132
-57 60 70 62 65 65 85 80 60 161 124 50 156 124 53 155 128 52 150 128 52 158 124 56
-159 126 56 154 129 46 155 126 57 156 129 45 97 78 60 57 63 63 59 64 62 156 160 157
-202 206 211 56 64 62 60 60 63 66 60 61 158 124 54 158 127 55 156 124 53 158 127 55
-157 127 54 158 125 54 158 124 54 159 126 56 157 126 52 155 128 52 94 90 61 62 65 65
-58 62 63 81 77 81 254 255 255 254 254 254 251 251 251 255 255 255 255 255 255 253 253 253
-254 254 254 255 255 255 255 255 255 254 254 254 255 255 255 255 255 255 251 251 251 241 240 247
-71 72 69 59 64 62 58 62 65 113 104 59 157 124 59 156 129 45 158 127 55 157 124 59
-155 127 54 158 124 56 155 127 54 158 125 54 156 125 56 155 128 52 128 113 57 58 62 65
-58 64 64 104 112 110 255 255 253 253 253 255 104 112 110 58 62 65 60 61 69 113 104 59
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-159 126 56 142 120 69 62 61 67 54 64 59 59 64 62 202 204 206 254 254 254 253 252 247
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 255 251 255 254 255 253 252 247 125 131 132 60 60 63 58 65 69 72 76 65 152 124 51
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-156 126 54 158 126 53 72 76 65 58 62 63 57 63 63 202 206 211 255 253 254 156 160 157
-58 62 63 58 64 64 101 91 62 155 126 57 158 125 54 156 126 54 156 124 53 156 126 54
-158 125 54 156 126 54 156 125 56 155 127 54 128 113 57 58 62 65 58 62 65 104 112 110
-254 255 251 255 255 253 88 95 83 54 64 59 53 67 71 140 101 45 157 124 59 156 125 56
-156 128 53 156 124 53 155 126 57 157 124 59 152 124 51 158 132 49 142 120 69 56 64 62
-57 63 61 59 64 62 230 230 230 254 255 251 255 255 253 249 252 251 255 255 253 254 255 251
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 255 251 255 253 254 160 163 161 59 64 62 58 66 61 72 76 65 157 126 52 158 127 55
-158 124 56 158 127 55 152 124 44 158 124 56 157 124 59 157 126 52 152 127 56 110 92 61
-57 63 61 62 65 65 113 113 120 255 255 253 255 255 255 57 63 61 57 60 56 62 61 67
-211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45
-211 102 45 217 104 40 209 99 39 112 79 60 56 66 64 62 61 67 110 110 107 254 255 251
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 253 254 255 255 255 254 254 254 252 252 252 241 240 247 71 72 69 58 64 64 56 64 62
-128 93 57 213 105 50 210 102 46 211 104 39 212 101 45 212 98 39 209 105 45 209 105 45
-210 102 46 213 100 52 211 104 39 59 60 62 56 66 64 58 62 65 230 230 230 254 255 255
-152 161 158 57 63 61 60 60 63 97 78 60 207 105 48 212 104 43 212 101 45 212 104 43
-213 103 41 213 100 46 216 99 44 210 105 40 217 105 50 210 105 51 71 68 65 60 60 63
-57 63 61 156 160 157 254 254 254 255 255 255 255 253 254 255 255 255 255 255 255 253 253 253
-255 255 255 255 255 255 255 255 255 255 255 255 253 253 253 255 255 255 252 252 252 230 230 230
-50 65 64 58 59 64 58 67 65 155 104 59 209 105 45 213 100 46 210 99 44 212 104 43
-207 99 48 211 104 39 211 102 45 208 103 45 219 98 50 140 101 45 54 67 66 60 64 65
-97 100 105 255 255 255 104 112 110 62 65 65 60 60 63 155 104 59 213 105 50 211 102 45
-208 103 45 212 101 45 211 102 45 212 101 45 211 102 45 211 102 45 212 101 45 112 79 60
-56 66 64 57 63 61 125 131 132 254 255 255 253 253 253 255 255 255 255 255 255 254 254 254
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-104 112 110 60 60 63 59 60 62 128 99 63 216 99 44 210 99 44 212 101 45 208 103 45
-212 101 45 208 103 45 212 101 45 211 102 45 211 102 45 112 79 60 58 62 65 57 63 61
-154 157 157 254 255 251 255 255 253 97 100 105 62 61 67 53 67 71 140 101 45 213 100 46
-213 103 41 210 99 51 210 102 46 212 101 45 219 98 50 207 105 38 211 104 39 198 102 49
-56 64 62 57 63 61 57 58 61 224 220 212 253 253 253 254 255 251 255 255 253 254 255 251
-255 255 253 255 255 253 255 255 253 255 255 253 255 255 253 255 255 253 255 255 253 255 255 253
-255 255 255 250 252 246 255 255 255 187 189 188 57 63 63 57 63 61 71 68 65 210 99 44
-211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45
-142 101 66 57 63 61 57 63 61 104 112 110 249 254 254
-255 255 253 251 251 251 187 189 188 6 9 5 0 0 0 62 66 56 169 144 61 169 138 59
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 144 61 109 102 83 0 1 1 148 133 63 169 141 58 169 138 59 169 141 58 169 141 58
-224 220 212 254 255 251 251 251 251 253 253 255 254 254 253 254 255 251 255 255 253 254 254 254
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 253 253 253 255 255 255 252 252 252 253 253 253 255 255 255 71 68 65 0 0 0
-0 1 1 71 72 69 241 240 247 254 254 254 255 255 255 251 251 251 253 253 253 241 240 247
-172 178 183 97 100 105 4 1 5 0 0 0 0 1 1 0 1 1 0 1 1 0 0 0
-4 1 5 202 204 206 255 255 255 251 251 251 255 255 255 255 255 255 253 253 253 255 255 255
-251 251 251 241 240 247 251 251 251 230 230 230 0 1 1 21 19 24 255 255 255 255 255 255
-252 252 252 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 253 152 161 158 60 64 65 57 63 61 101 91 62
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-152 124 51 159 126 56 97 78 60 59 64 62 62 61 67 125 131 132 249 254 254 254 254 253
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 254 255 253 253 253 253 253 253 254 255 255 230 230 230 59 64 62 59 64 62 57 60 56
-142 120 69 156 124 53 158 127 55 157 126 52 157 124 59 156 126 54 162 125 53 156 126 54
-156 124 53 158 124 56 101 91 62 58 62 65 53 63 60 140 141 138 187 189 188 60 64 65
-56 66 64 72 76 65 157 124 59 155 128 52 159 126 56 156 126 54 156 126 54 158 125 54
-155 127 54 157 126 52 154 129 46 101 91 62 53 60 64 58 65 54 113 113 120 202 204 206
-202 204 206 202 204 206 202 204 206 202 204 206 202 204 206 202 204 206 202 204 206 202 204 206
-202 204 206 202 204 206 202 204 206 202 206 211 202 204 206 202 204 206 202 204 206 156 160 157
-53 63 60 59 64 62 72 76 65 155 128 52 158 127 55 157 126 52 155 127 54 162 124 55
-159 126 56 155 127 54 157 127 54 158 127 55 113 104 59 58 65 69 57 63 61 104 112 110
-160 163 161 53 63 60 62 65 65 85 80 60 159 126 56 155 127 54 158 127 55 156 124 53
-156 126 54 158 124 54 158 125 54 159 126 56 152 124 51 155 126 57 72 76 65 57 63 61
-60 64 65 187 189 188 253 253 255 255 255 255 255 255 255 254 254 254 255 255 255 254 254 254
-255 255 255 255 255 255 255 255 255 254 254 254 255 255 255 255 255 255 255 255 255 252 252 252
-140 141 138 62 65 65 54 64 59 85 80 60 162 124 55 154 129 46 156 124 53 157 124 59
-155 127 54 158 124 56 155 127 54 158 125 54 156 125 56 155 128 52 128 113 57 58 62 65
-57 63 61 104 112 110 255 255 253 253 253 255 59 64 62 53 60 64 62 65 65 142 120 69
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-159 126 56 110 92 61 57 61 64 60 64 65 97 100 105 254 252 251 254 255 255 255 255 253
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-249 252 246 254 250 255 254 255 251 230 230 230 60 60 63 58 65 69 59 59 56 147 124 59
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-156 126 54 158 126 53 72 76 65 58 62 63 57 63 63 202 206 211 255 253 254 156 160 157
-58 62 63 58 64 64 101 91 62 155 126 57 158 125 54 156 126 54 156 124 53 156 126 54
-158 125 54 156 126 54 156 125 56 155 127 54 128 113 57 58 62 65 58 62 65 104 112 110
-255 255 253 230 230 230 59 60 64 57 63 61 58 62 65 147 124 59 158 125 54 156 126 54
-156 126 54 157 126 52 158 134 59 156 125 56 156 124 53 156 124 53 128 99 63 60 61 69
-59 60 62 88 95 83 202 204 206 202 206 211 202 204 206 202 206 211 202 204 206 202 206 211
-202 204 206 202 204 206 202 204 206 202 204 206 202 204 206 202 204 206 202 204 206 202 204 206
-202 206 211 202 204 206 187 189 188 57 58 63 58 65 69 60 60 63 155 126 57 155 128 52
-158 124 56 158 127 55 155 128 52 158 127 55 158 124 54 157 126 52 156 128 53 128 113 57
-57 63 61 58 62 65 71 72 69 251 251 251 255 255 255 53 63 60 58 66 61 59 60 64
-211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45
-211 102 45 209 99 39 210 105 51 84 69 58 58 64 64 57 58 63 187 189 188 255 255 253
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 253 254 254 254 254 253 253 253 255 255 255 255 255 255 156 160 157 58 64 64 60 64 65
-97 78 60 207 99 48 212 104 43 209 105 45 213 105 50 211 102 45 213 105 50 211 99 45
-213 105 46 211 99 45 212 104 43 85 80 60 53 63 60 60 64 65 187 189 188 254 255 255
-104 112 110 59 64 62 60 64 65 128 93 57 207 105 48 212 104 43 213 105 46 212 104 43
-208 103 45 213 105 50 217 105 50 208 103 45 207 99 38 155 104 59 57 63 61 60 64 65
-71 72 69 241 240 247 255 255 255 255 255 255 254 251 252 252 252 252 255 255 255 255 255 255
-253 253 253 253 253 253 255 255 255 255 255 255 253 253 253 253 253 253 255 255 255 252 252 252
-125 131 132 58 62 65 59 60 64 97 78 60 212 98 39 213 105 50 217 105 50 208 103 45
-213 105 50 209 99 39 209 105 45 211 102 45 213 100 46 185 105 60 59 64 62 58 62 63
-60 64 65 241 240 247 104 112 110 58 62 63 60 64 65 155 104 59 213 105 50 211 102 45
-208 103 45 212 101 45 211 102 45 212 101 45 211 102 45 211 102 45 212 101 45 112 79 60
-56 66 64 60 64 65 154 157 157 254 255 255 255 255 255 253 253 253 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-154 157 157 62 65 65 57 63 61 128 93 57 217 105 50 209 105 45 212 101 45 210 102 46
-212 101 45 208 103 45 212 101 45 211 102 45 211 102 45 112 79 60 58 62 65 57 63 61
-160 163 161 249 254 254 241 240 247 60 60 63 60 60 63 56 66 64 198 102 49 210 99 44
-210 99 44 208 103 45 211 102 45 213 100 46 213 100 46 210 105 40 211 102 45 155 104 59
-58 65 69 58 62 63 88 95 83 202 204 206 202 206 211 202 206 211 202 204 206 202 204 206
-202 206 211 202 206 211 202 206 211 202 206 211 202 206 211 202 206 211 202 206 211 202 206 211
-202 206 211 202 204 206 202 206 211 202 204 206 58 65 69 58 64 64 60 60 63 198 102 49
-211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45
-185 105 60 60 64 65 57 60 56 62 66 62 253 255 254
-255 255 253 254 252 251 97 100 105 0 1 1 0 1 1 109 102 83 169 144 61 169 138 59
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 142 120 69 4 1 5 128 100 96 173 142 59 173 142 59 169 138 59 169 144 61
-254 252 250 255 255 253 250 252 254 253 253 255 254 254 254 255 255 253 255 255 253 255 255 253
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-252 252 252 255 255 255 254 254 254 255 255 255 252 252 252 255 255 255 0 1 1 4 2 1
-0 0 0 97 100 105 202 204 206 202 204 206 156 160 157 140 141 138 97 100 105 0 1 1
-0 0 0 4 2 1 0 0 0 4 2 1 4 2 1 4 2 1 0 0 0 6 9 5
-0 1 1 202 204 206 255 255 255 252 252 252 251 251 251 254 254 254 255 255 255 255 255 255
-241 240 247 224 220 212 255 255 255 255 255 255 125 131 132 0 1 1 154 157 157 255 255 255
-255 255 255 251 251 251 254 254 254 255 255 255 251 251 251 255 255 255 253 253 253 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 253 152 161 158 60 64 65 57 63 61 101 91 62
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-156 126 54 156 125 56 71 68 65 56 66 64 58 59 68 187 189 188 255 255 253 254 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 252 252 252 254 254 254 253 253 253 97 100 105 57 63 61 59 64 62
-110 92 61 155 127 54 158 127 55 158 125 54 157 124 59 156 126 54 159 126 56 155 127 54
-158 127 55 156 124 53 128 113 57 57 61 64 62 65 65 104 112 110 156 160 157 57 63 63
-56 66 64 94 90 61 158 127 55 155 128 52 158 125 54 156 126 54 156 124 53 159 126 56
-155 126 57 156 126 54 154 129 46 81 77 81 51 61 71 56 66 64 60 64 65 57 58 61
-59 64 62 59 64 62 59 64 62 59 64 62 59 64 62 59 64 62 59 64 62 59 64 62
-57 63 61 62 65 65 53 63 60 59 64 62 56 66 64 56 64 62 56 64 62 56 64 62
-59 64 62 62 61 67 59 64 62 156 124 53 159 126 56 158 124 53 156 125 56 158 124 53
-158 126 53 156 124 53 156 124 53 158 124 54 128 113 57 60 60 63 59 60 62 62 65 65
-140 141 138 53 63 60 60 60 63 101 91 62 157 126 52 152 124 51 158 127 55 158 127 55
-156 126 54 158 124 54 159 126 56 157 126 52 155 127 54 128 113 57 59 59 56 57 63 61
-62 70 69 253 253 255 254 255 255 254 254 254 255 255 255 254 254 254 252 252 252 255 255 255
-255 255 255 255 255 255 255 255 255 254 254 254 254 254 254 255 255 255 255 255 255 255 255 255
-230 230 230 59 64 62 56 66 64 60 60 63 155 126 57 156 125 56 159 126 56 158 125 54
-155 127 54 158 124 56 155 127 54 158 125 54 156 125 56 155 128 52 128 113 57 58 62 65
-59 64 62 104 112 110 251 251 251 219 227 224 57 63 61 58 64 64 62 66 56 147 124 59
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-158 125 54 72 76 65 62 65 65 58 62 63 172 178 183 254 252 250 253 255 254 252 252 252
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 253 254 250 255 254 254 254 254 255 255 88 95 83 58 62 65 62 65 65 113 104 59
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-156 126 54 158 126 53 72 76 65 58 62 63 57 63 63 202 206 211 255 253 254 156 160 157
-58 62 63 58 64 64 101 91 62 155 126 57 158 125 54 156 126 54 156 124 53 156 126 54
-158 125 54 156 126 54 156 125 56 155 127 54 128 113 57 58 62 65 58 62 65 104 112 110
-249 252 251 187 189 188 62 61 67 59 64 62 72 76 65 155 126 57 158 126 53 156 124 53
-157 127 54 161 124 50 158 125 54 155 127 54 159 126 56 162 125 53 101 91 62 57 60 56
-58 62 65 53 60 64 60 64 65 59 60 64 62 61 67 59 60 64 60 64 65 62 70 69
-59 64 62 59 64 62 59 64 62 59 64 62 59 64 62 59 64 62 59 64 62 59 64 62
-58 62 65 62 65 65 56 64 62 59 64 62 53 63 60 60 61 69 128 113 57 158 124 56
-158 124 56 156 126 54 155 128 52 157 127 54 156 124 53 157 126 52 156 128 53 147 124 59
-59 64 62 57 61 64 57 63 61 230 230 230 253 253 255 57 60 56 58 68 63 58 62 63
-211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45
-208 103 45 208 103 45 174 105 47 58 65 54 58 64 64 58 62 65 251 251 251 249 252 251
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 253 254 255 255 255 254 254 254 255 255 255 255 255 255 230 230 230 60 64 65 57 63 63
-57 63 61 198 102 49 213 103 41 209 105 45 210 99 51 208 103 45 213 100 46 216 99 44
-207 99 38 217 105 50 213 103 41 97 78 60 60 64 65 57 60 56 160 163 161 254 255 251
-71 72 69 57 63 61 57 58 61 185 105 60 211 102 45 212 101 45 211 104 39 212 101 45
-209 105 45 211 99 45 213 100 46 208 103 45 210 105 51 112 79 60 56 64 62 53 60 64
-125 131 132 254 255 255 253 253 253 255 255 255 252 252 252 255 255 255 253 253 253 255 255 255
-255 255 255 255 255 255 254 254 254 255 255 255 254 254 254 252 252 252 255 255 255 255 255 255
-187 189 188 53 63 60 62 61 67 71 72 69 213 105 46 210 99 44 211 99 45 210 105 51
-216 99 44 208 103 45 209 105 45 212 101 45 210 99 44 217 105 50 71 68 65 58 64 64
-60 64 65 202 204 206 104 112 110 58 62 63 57 58 61 155 104 59 210 102 46 211 102 45
-208 103 45 212 101 45 211 102 45 212 101 45 211 102 45 211 102 45 212 101 45 112 79 60
-53 63 60 57 63 63 160 163 161 253 255 254 254 254 254 253 253 253 255 255 255 254 254 254
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-160 163 161 53 63 60 62 66 62 112 79 60 210 102 46 208 103 45 211 102 45 208 103 45
-212 101 45 208 103 45 212 101 45 211 102 45 211 102 45 112 79 60 58 62 65 57 63 61
-160 163 161 250 252 254 202 206 211 66 60 61 58 62 63 72 76 65 211 102 45 213 105 50
-212 104 43 208 103 45 208 103 45 209 105 45 207 105 48 207 99 38 217 105 50 128 99 63
-53 60 64 58 65 69 58 62 63 58 62 63 60 60 63 60 64 65 57 58 61 62 65 65
-60 64 65 60 64 65 60 64 65 60 64 65 60 64 65 60 64 65 60 64 65 60 64 65
-58 62 65 62 66 62 57 63 61 57 60 56 56 66 64 53 63 60 59 64 62 155 104 59
-211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45
-208 103 45 68 69 75 53 60 64 60 60 63 202 204 206
-254 251 252 242 238 229 6 9 5 4 2 1 4 1 5 142 120 69 164 144 50 173 142 59
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 168 136 64 48 49 51 85 80 60 166 134 56 173 138 52 169 141 58 182 158 106
-255 254 255 253 253 253 255 255 253 254 255 255 254 254 254 254 254 255 255 255 255 254 254 253
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 254 254 254 254 254 254 251 251 251 255 255 255 253 253 253 48 49 51 0 0 0
-4 2 1 0 0 0 4 1 5 0 0 0 0 1 1 0 1 1 4 1 5 0 1 1
-4 2 1 0 1 1 0 1 1 4 2 1 0 0 0 0 0 0 4 2 1 0 0 0
-4 2 1 202 204 206 254 254 254 255 255 255 255 255 255 253 253 253 255 255 255 253 253 253
-250 247 249 224 220 212 250 247 249 251 251 251 230 230 230 21 19 24 21 19 24 242 238 229
-250 247 249 255 255 255 253 253 253 254 254 254 255 255 255 254 254 254 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 253 152 161 158 60 64 65 57 63 61 101 91 62
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-158 127 55 149 124 55 57 63 63 53 63 60 58 59 68 241 240 247 254 255 251 253 255 254
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-253 253 253 254 254 254 255 255 255 255 255 255 254 255 255 160 163 161 58 64 64 57 58 61
-85 80 60 150 128 52 155 128 52 158 127 55 158 124 56 156 126 54 159 126 56 155 127 54
-156 124 53 158 127 55 147 124 59 57 61 64 59 60 64 57 63 63 110 110 107 57 63 63
-59 64 62 110 92 61 158 127 55 155 128 52 158 125 54 158 126 53 152 124 51 159 126 56
-156 124 53 156 126 54 155 128 52 71 68 65 58 65 69 57 60 56 57 58 61 56 66 64
-58 62 65 58 62 65 58 62 65 58 62 65 58 62 65 58 62 65 58 62 65 58 62 65
-58 62 65 58 62 65 58 62 65 57 61 64 58 62 65 60 64 65 57 61 64 58 62 65
-56 64 62 54 67 66 54 64 59 128 113 57 157 124 59 158 127 55 158 126 53 158 125 54
-158 127 55 156 124 53 158 125 54 157 124 59 150 128 52 59 64 62 60 64 65 57 63 61
-104 112 110 57 63 61 60 64 65 113 104 59 158 126 53 159 134 56 158 125 54 156 125 56
-156 126 54 159 126 56 156 126 54 152 124 44 158 127 55 110 92 61 58 62 65 56 64 62
-125 131 132 254 255 255 253 253 253 255 255 255 253 253 253 254 254 254 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 254 254 254 254 254 254 254 254 254
-254 255 255 81 77 81 58 65 69 62 61 67 128 113 57 158 127 55 156 124 53 157 126 52
-155 127 54 158 124 56 155 127 54 158 125 54 156 125 56 155 128 52 128 113 57 58 62 65
-59 64 62 104 112 110 255 255 255 202 204 206 57 60 56 59 64 62 85 80 60 157 124 59
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-157 124 59 60 64 65 58 62 63 60 64 65 230 230 230 255 255 253 248 254 252 255 254 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-253 252 247 253 253 255 254 254 255 255 255 255 156 160 157 56 64 62 58 62 65 85 80 60
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-156 126 54 158 126 53 72 76 65 58 62 63 57 63 63 202 206 211 255 253 254 156 160 157
-58 62 63 58 64 64 101 91 62 155 126 57 158 125 54 156 126 54 156 124 53 156 126 54
-158 125 54 156 126 54 156 125 56 155 127 54 128 113 57 58 62 65 58 62 65 104 112 110
-254 255 255 160 163 161 59 60 64 57 63 61 94 90 61 156 128 53 161 124 50 156 124 53
-157 124 59 159 126 56 161 124 50 155 128 52 156 125 56 155 126 57 85 80 60 58 65 69
-56 64 62 56 66 64 53 63 60 56 66 64 57 63 63 57 63 63 53 63 60 56 64 62
-58 62 65 58 62 65 58 62 65 58 62 65 58 62 65 58 62 65 58 62 65 58 62 65
-54 64 59 59 64 62 53 63 60 62 61 67 60 64 65 53 63 60 113 104 59 158 132 49
-158 125 54 156 124 53 156 126 54 156 126 54 156 125 56 158 125 54 156 126 54 156 128 53
-72 76 65 57 63 63 58 64 64 202 204 206 253 253 255 62 70 69 56 64 62 58 62 63
-211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45
-213 105 46 210 99 44 142 101 66 56 66 64 57 61 64 110 110 107 255 255 253 254 254 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 254 254 255 255 255 255 255 255 254 254 254 252 252 252 255 255 255 97 100 105 60 64 65
-50 65 64 155 104 59 210 105 40 208 103 45 213 100 46 208 103 45 210 102 46 216 99 44
-213 105 46 211 99 45 209 99 39 128 93 57 58 62 63 59 64 62 125 131 132 241 240 247
-59 64 62 57 63 61 62 65 65 198 102 49 211 99 45 213 105 46 207 99 38 213 100 46
-213 100 46 211 99 45 213 100 46 213 103 41 213 100 52 84 69 58 58 62 65 58 62 65
-187 189 188 252 252 252 255 255 255 253 253 253 255 255 255 255 255 255 254 254 254 254 254 254
-253 253 253 255 255 255 253 253 253 254 254 254 255 255 255 255 255 255 254 254 254 253 253 253
-254 255 251 59 64 62 58 62 65 51 61 71 174 105 47 216 99 44 208 103 45 210 102 46
-212 98 39 210 102 46 211 102 45 210 99 51 211 102 45 216 99 44 97 78 60 60 64 65
-58 62 63 154 157 157 104 112 110 58 62 63 62 70 69 155 104 59 211 99 45 211 102 45
-208 103 45 212 101 45 211 102 45 212 101 45 211 102 45 211 102 45 212 101 45 112 79 60
-56 66 64 57 63 63 156 160 157 254 255 255 254 254 254 255 255 255 254 254 254 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-154 157 157 58 62 63 59 64 62 112 79 60 210 102 46 209 105 45 213 105 50 210 99 44
-212 101 45 208 103 45 212 101 45 211 102 45 211 102 45 112 79 60 58 62 65 57 63 61
-156 160 157 253 253 255 172 178 183 59 59 56 53 60 64 101 91 62 217 98 38 210 99 44
-212 101 45 212 104 43 213 100 46 212 98 39 210 99 51 213 105 50 207 105 48 97 78 60
-56 66 64 53 63 60 58 64 64 60 64 65 57 63 63 60 64 65 56 64 62 56 64 62
-58 64 64 58 64 64 58 64 64 58 64 64 58 64 64 58 64 64 58 64 64 58 64 64
-58 62 65 57 63 61 58 62 65 62 65 65 58 65 69 58 65 69 58 65 69 128 93 57
-211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45
-217 98 38 84 69 58 60 64 65 58 64 64 202 204 206
-255 253 254 160 163 161 4 1 5 0 0 0 4 1 5 148 133 63 169 138 59 173 142 59
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 173 142 59 85 80 60 4 1 5 158 134 59 169 141 58 165 143 59 178 172 162
-254 254 255 254 255 251 254 255 251 254 255 251 255 255 255 255 255 255 255 255 255 252 252 252
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 252 252 252 255 255 255 255 255 255 252 252 252 254 254 254 125 131 132 0 0 0
-0 1 1 0 0 0 0 1 1 4 2 1 0 0 0 0 0 0 0 1 1 6 9 5
-0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 4 1 5 0 0 0
-21 19 24 255 255 255 255 255 255 253 253 253 252 252 252 255 255 255 252 252 252 255 255 255
-253 253 253 224 220 212 219 227 224 255 255 255 255 255 255 145 151 154 0 0 0 125 131 132
-255 255 255 254 254 254 253 253 253 255 255 255 255 255 255 255 255 255 254 254 254 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 253 152 161 158 60 64 65 57 63 61 101 91 62
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-159 126 56 128 93 57 53 63 60 60 64 65 97 100 105 255 255 253 254 251 249 254 255 251
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-251 251 251 255 255 255 252 252 252 251 251 251 254 255 255 202 206 211 58 62 63 58 62 63
-71 68 65 155 128 52 157 126 52 157 124 59 158 124 53 158 126 53 159 126 56 155 127 54
-159 126 56 158 127 55 156 128 53 62 65 65 62 61 67 58 62 65 104 112 110 60 64 65
-58 62 63 128 113 57 156 126 54 156 124 53 156 126 54 159 126 56 156 124 53 158 127 55
-157 127 54 152 127 56 155 126 57 84 69 58 72 73 56 85 80 60 71 72 69 72 76 65
-72 76 65 72 76 65 72 76 65 72 76 65 72 76 65 72 76 65 72 76 65 72 76 65
-72 76 65 72 76 65 72 76 65 72 76 65 72 76 65 72 76 65 72 76 65 72 76 65
-85 80 60 85 80 60 85 80 60 128 113 57 157 124 59 152 124 44 154 129 46 157 127 54
-157 127 54 156 124 53 159 126 56 159 126 56 158 132 49 71 68 65 62 61 67 59 64 62
-81 77 81 59 64 62 58 62 63 128 113 57 152 124 44 155 128 52 156 124 53 156 125 56
-156 124 53 159 126 56 152 124 51 158 126 53 155 128 52 97 78 60 58 65 69 56 66 64
-154 157 157 253 255 254 255 255 255 251 251 251 255 255 255 255 255 255 255 255 255 253 253 253
-254 254 254 254 254 254 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 255 255 125 131 132 53 60 64 58 62 65 101 91 62 156 124 53 159 126 56 156 128 53
-155 127 54 158 124 56 155 127 54 158 125 54 156 125 56 155 128 52 128 113 57 58 62 65
-57 63 61 104 112 110 254 254 255 156 160 157 62 65 65 57 58 61 94 90 61 156 124 53
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-128 113 57 54 67 66 58 62 65 88 95 83 254 255 251 255 254 255 248 254 252 255 254 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 255 251 255 254 255 253 253 253 255 255 255 202 204 206 57 63 61 58 62 65 72 76 65
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-156 126 54 158 126 53 72 76 65 58 62 63 57 63 63 202 206 211 255 253 254 156 160 157
-58 62 63 58 64 64 101 91 62 155 126 57 158 125 54 156 126 54 156 124 53 156 126 54
-158 125 54 156 126 54 156 125 56 155 127 54 128 113 57 58 62 65 58 62 65 104 112 110
-254 255 251 125 131 132 62 61 67 59 64 62 101 91 62 152 124 44 157 126 52 159 126 56
-158 127 55 158 125 54 156 124 53 155 128 52 159 126 56 155 127 54 94 90 61 72 73 56
-72 76 65 72 76 65 72 76 65 72 76 65 72 73 56 72 76 65 85 80 60 72 76 65
-72 76 65 72 76 65 72 76 65 72 76 65 72 76 65 72 76 65 72 76 65 72 76 65
-72 73 56 72 76 65 72 76 65 72 76 65 85 80 60 72 76 65 113 104 59 155 126 57
-159 126 56 158 126 53 158 127 55 156 126 54 158 127 55 157 124 59 158 124 54 157 126 52
-85 80 60 62 66 62 62 65 65 187 189 188 253 253 253 58 62 63 57 63 61 58 65 69
-211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45
-208 103 45 213 100 46 112 79 60 58 65 69 53 60 64 156 160 157 249 252 251 255 254 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 254 254 254 255 255 255 255 255 255 255 255 255 255 255 255 140 141 138 58 64 64
-58 62 65 112 79 60 208 103 45 213 103 41 213 105 46 210 102 46 208 103 45 211 102 45
-211 102 45 210 99 44 212 104 43 155 104 59 59 60 64 60 64 65 110 110 107 202 204 206
-57 63 63 60 64 65 71 72 69 217 104 40 210 99 44 210 102 46 208 103 45 210 102 46
-216 99 44 211 102 45 211 102 45 213 103 41 210 99 51 58 64 64 57 58 61 60 64 65
-241 240 247 255 255 255 255 255 255 255 255 255 254 254 254 255 255 255 255 255 255 255 255 255
-253 253 253 255 255 255 255 255 255 252 252 252 254 254 254 255 255 255 255 255 255 255 255 255
-255 255 253 110 110 107 58 67 65 54 67 66 142 101 66 212 98 39 208 103 45 212 101 45
-207 105 38 213 100 52 216 99 44 210 99 51 213 105 46 212 98 39 128 93 57 53 63 60
-58 62 63 156 160 157 104 112 110 58 64 64 57 58 61 155 104 59 213 105 50 211 102 45
-208 103 45 212 101 45 211 102 45 212 101 45 211 102 45 211 102 45 212 101 45 112 79 60
-56 66 64 60 64 65 154 157 157 254 255 255 253 253 253 254 254 254 253 253 253 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-160 163 161 62 65 65 53 63 60 128 93 57 210 102 46 208 103 45 213 100 46 212 101 45
-212 101 45 208 103 45 212 101 45 211 102 45 211 102 45 112 79 60 58 62 65 57 63 61
-154 157 157 255 254 255 154 157 157 58 66 61 58 65 69 112 79 60 213 103 41 213 105 50
-211 102 45 213 100 46 217 105 50 212 98 39 213 100 46 213 105 50 200 101 40 128 93 57
-84 69 58 85 80 60 84 69 58 85 80 60 84 69 58 85 80 60 85 80 60 85 80 60
-85 80 60 85 80 60 85 80 60 85 80 60 85 80 60 85 80 60 85 80 60 85 80 60
-97 78 60 84 69 58 97 78 60 97 78 60 84 69 58 85 80 60 85 80 60 142 101 66
-211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45
-213 105 46 112 79 60 53 63 60 54 67 66 154 157 157
-255 254 255 81 77 81 0 1 1 0 0 0 71 68 65 169 144 61 169 138 59 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-168 136 64 173 142 59 109 102 83 4 1 5 142 120 69 169 138 59 169 138 59 224 220 212
-254 254 253 254 255 251 253 252 247 253 252 247 255 255 253 255 255 255 255 255 255 254 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 254 254 254 254 254 254 254 254 254 253 253 253 253 253 253 241 240 247 48 49 51
-0 0 0 0 1 1 0 0 0 4 2 1 0 0 0 0 1 1 6 9 5 0 0 0
-4 1 5 0 0 0 0 0 0 4 2 1 4 2 1 4 1 5 0 1 1 0 0 0
-213 212 223 253 253 253 252 252 252 255 255 255 253 253 253 254 254 254 255 255 255 253 253 253
-255 255 255 219 227 224 224 220 212 242 238 229 252 252 252 241 240 247 71 72 69 4 2 1
-219 227 224 255 255 255 254 254 254 255 255 255 253 253 253 255 255 255 252 252 252 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 253 152 161 158 60 64 65 57 63 61 101 91 62
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-158 124 56 128 99 63 53 64 53 57 61 64 110 110 107 255 255 255 255 253 254 254 255 251
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 251 251 251 255 255 255 254 254 254 255 255 255 254 255 255 57 60 56 58 64 64
-62 61 67 155 128 52 161 124 50 156 125 56 161 124 50 157 126 52 158 127 55 155 127 54
-158 124 53 156 126 54 152 124 51 71 68 65 62 61 67 53 60 64 62 70 65 60 64 65
-58 62 65 147 124 59 158 127 55 156 125 56 156 126 54 158 125 54 156 125 56 156 126 54
-162 125 53 159 126 56 161 125 43 158 134 59 155 126 57 155 128 52 157 127 54 156 129 45
-155 127 54 155 127 54 155 127 54 155 127 54 155 127 54 155 127 54 155 127 54 155 127 54
-158 124 53 158 125 54 158 124 53 159 126 56 156 124 53 158 124 53 158 125 54 159 126 56
-158 124 54 156 124 53 150 126 55 162 125 53 166 129 59 156 129 45 155 127 54 155 126 57
-156 124 53 156 126 54 158 124 56 152 124 51 155 128 52 72 76 65 62 61 67 57 63 61
-58 62 63 62 66 62 58 62 65 157 124 59 158 127 55 155 128 52 159 126 56 156 124 53
-156 126 54 156 124 53 158 127 55 158 126 53 155 128 52 85 80 60 58 62 65 56 66 64
-202 206 211 255 255 255 251 251 251 255 255 255 254 254 254 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 254 254 254 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 255 251 156 160 157 59 64 62 58 62 65 101 91 62 159 126 56 158 126 53 152 124 51
-155 127 54 158 124 56 155 127 54 158 125 54 156 125 56 155 128 52 128 113 57 58 62 65
-60 64 65 104 112 110 255 254 255 154 157 157 58 62 63 62 61 67 101 91 62 159 126 56
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-128 99 63 53 63 60 58 62 65 110 110 107 253 252 247 255 254 255 248 254 252 255 255 253
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 255 251 255 255 255 255 255 255 254 254 254 241 240 247 62 66 62 60 64 65 57 58 61
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-156 126 54 158 126 53 72 76 65 58 62 63 57 63 63 202 206 211 255 253 254 156 160 157
-58 62 63 58 64 64 101 91 62 155 126 57 158 125 54 156 126 54 156 124 53 156 126 54
-158 125 54 156 126 54 156 125 56 155 127 54 128 113 57 58 62 65 58 62 65 104 112 110
-254 255 251 104 112 110 59 64 62 57 63 61 128 99 63 158 126 53 159 126 56 152 124 51
-156 129 45 158 127 55 166 129 59 156 124 53 158 124 53 161 125 43 155 126 57 152 127 56
-156 125 56 156 125 56 156 124 53 158 127 55 159 126 56 156 124 53 158 127 55 156 125 56
-155 127 54 155 127 54 155 127 54 155 127 54 155 127 54 155 127 54 155 127 54 155 127 54
-158 127 55 157 124 59 152 124 51 155 128 52 152 124 51 152 127 56 158 134 59 161 124 50
-158 125 54 158 126 53 158 127 55 156 125 56 156 124 53 157 124 59 157 124 59 158 127 55
-101 91 62 62 66 56 57 58 61 156 160 157 255 255 253 62 65 65 58 64 64 58 62 63
-211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45
-210 99 44 217 105 50 84 69 58 57 61 64 58 65 69 187 189 188 255 255 253 253 253 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 253 253 253 254 255 255 255 255 255 254 254 254 254 254 254 187 189 188 57 63 61
-59 59 56 85 80 60 209 105 45 210 99 44 212 101 45 212 101 45 207 105 38 210 102 46
-210 99 44 213 105 50 210 99 44 174 105 47 62 61 67 58 62 63 104 112 110 202 206 211
-60 64 65 58 62 65 84 69 58 217 104 40 212 101 45 210 99 44 213 105 50 210 102 46
-213 100 46 208 103 45 208 103 45 212 104 43 185 105 60 54 67 66 57 58 61 71 81 83
-255 255 255 251 251 251 251 251 251 255 255 255 253 253 253 255 255 255 254 254 254 255 255 255
-255 255 255 255 255 255 255 255 255 254 254 254 254 254 254 254 254 254 253 253 253 255 255 255
-254 255 255 140 141 138 62 66 62 53 63 60 128 93 57 212 104 43 213 105 46 217 105 50
-209 105 45 210 102 46 213 103 41 210 105 51 212 101 45 207 105 38 142 101 66 56 66 64
-60 64 65 110 110 107 104 112 110 62 65 65 58 62 63 155 104 59 210 102 46 210 99 44
-208 103 45 212 101 45 211 102 45 212 101 45 211 102 45 211 102 45 212 101 45 112 79 60
-53 63 60 58 64 64 154 157 157 254 255 255 254 254 254 252 252 252 255 255 255 253 253 253
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-154 157 157 58 62 63 59 64 62 112 79 60 213 100 46 208 103 45 211 99 45 213 105 46
-212 101 45 208 103 45 212 101 45 211 102 45 211 102 45 112 79 60 58 62 65 57 63 61
-156 160 157 251 251 251 113 113 120 58 68 63 58 65 69 142 101 66 207 105 38 211 99 45
-213 105 50 210 99 44 207 105 48 209 105 45 210 102 46 207 99 48 213 103 41 210 105 51
-210 99 44 211 102 45 213 105 46 212 104 43 213 105 46 210 99 44 210 99 44 213 105 46
-211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45
-208 103 45 211 102 45 208 103 45 208 103 45 209 105 45 209 105 45 212 101 45 217 98 38
-211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45
-210 99 51 128 93 57 57 63 63 53 67 71 160 163 161
-255 255 255 0 0 0 0 1 1 4 2 1 94 90 61 164 134 50 173 142 59 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 144 61 169 138 59 142 120 69 4 1 5 88 95 83 169 141 58 169 144 61 202 204 206
-254 252 251 255 255 253 252 252 252 255 255 253 255 255 253 254 254 253 254 254 253 254 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 254 254 255 255 255 255 255 255 253 253 253 255 255 255 255 255 255 253 253 253 187 189 188
-4 2 1 0 0 0 4 2 1 0 0 0 0 0 0 0 1 1 0 0 0 4 2 1
-0 1 1 0 0 0 4 2 1 0 0 0 0 0 0 0 0 0 0 0 0 4 1 5
-255 255 255 253 253 253 255 255 255 252 252 252 254 254 254 255 255 255 254 254 254 252 252 252
-253 253 253 230 230 230 224 220 212 213 212 223 254 254 254 255 255 255 172 178 183 0 0 0
-88 95 83 255 255 255 255 255 255 253 253 253 255 255 255 252 252 252 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 253 152 161 158 60 64 65 57 63 61 101 91 62
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-156 125 56 110 92 61 57 63 61 58 65 69 145 151 154 254 255 255 255 253 254 251 251 251
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-251 251 251 254 254 254 255 255 255 255 255 255 251 251 251 253 255 254 62 65 65 57 63 63
-58 62 65 156 128 53 162 124 52 156 125 56 158 126 53 156 124 53 156 126 54 156 126 54
-156 124 53 156 126 54 159 126 56 72 76 65 59 60 64 60 61 69 54 64 59 58 59 64
-58 62 65 156 124 53 157 127 54 156 125 56 156 128 53 158 124 53 158 127 55 156 126 54
-155 128 52 150 128 52 155 128 52 156 124 53 155 127 54 158 124 56 152 124 51 159 126 56
-155 128 52 155 128 52 155 128 52 155 128 52 155 128 52 155 128 52 155 128 52 155 128 52
-157 126 52 158 126 53 157 126 52 157 126 52 157 126 52 157 126 52 157 126 52 157 126 52
-159 126 56 157 127 54 155 126 57 158 125 54 158 124 54 152 124 51 156 124 53 155 127 54
-156 125 56 157 127 54 158 125 54 149 124 55 158 126 53 71 72 69 60 64 65 59 64 62
-58 64 64 59 64 62 53 60 64 158 127 55 158 127 55 152 124 51 158 124 56 158 127 55
-156 126 54 156 124 53 158 127 55 156 124 53 156 128 53 72 76 65 59 64 62 57 63 63
-202 204 206 254 254 254 254 254 254 255 255 255 252 252 252 255 255 255 251 251 251 255 255 255
-255 255 255 255 255 255 255 255 255 254 254 254 254 254 254 255 255 255 255 255 255 254 254 254
-253 255 254 172 178 183 59 64 62 58 65 69 72 73 56 158 124 56 152 124 51 158 127 55
-155 127 54 158 124 56 155 127 54 158 125 54 156 125 56 155 128 52 128 113 57 58 62 65
-62 65 65 97 100 105 254 254 255 160 163 161 57 58 61 62 61 67 94 90 61 158 127 55
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-101 91 62 62 61 67 53 63 60 145 151 154 255 255 255 254 251 252 254 255 251 254 254 254
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 253 255 255 253 253 253 253 255 255 255 253 255 254 59 64 62 57 63 61 58 65 69
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-156 126 54 158 126 53 72 76 65 58 62 63 57 63 63 202 206 211 255 253 254 156 160 157
-58 62 63 58 64 64 101 91 62 155 126 57 158 125 54 156 126 54 156 124 53 156 126 54
-158 125 54 156 126 54 156 125 56 155 127 54 128 113 57 58 62 65 58 62 65 104 112 110
-254 252 251 104 112 110 58 66 61 56 66 64 128 99 63 157 126 52 156 125 56 156 128 53
-157 126 52 157 124 59 155 126 57 157 126 52 159 126 56 158 124 53 162 124 55 158 124 54
-158 127 55 156 124 53 166 129 59 152 124 51 156 124 53 159 126 56 156 124 53 158 127 55
-155 128 52 155 128 52 155 128 52 155 128 52 155 128 52 155 128 52 155 128 52 155 128 52
-158 127 55 158 124 56 158 127 55 158 134 59 158 124 56 157 126 52 150 126 55 155 128 52
-156 125 56 157 126 52 158 125 54 157 124 59 156 124 53 156 124 53 158 127 55 158 125 54
-94 90 61 59 64 62 58 65 69 156 160 157 253 253 253 58 62 65 60 64 65 58 64 64
-211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45
-213 105 50 209 99 39 85 80 60 59 60 62 58 62 65 202 204 206 255 255 253 254 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 254 254 253 253 253 254 255 255 255 255 255 253 253 253 255 255 255 202 204 206 62 65 65
-59 60 62 85 80 60 212 104 43 210 102 46 211 99 45 212 101 45 209 99 39 210 102 46
-212 104 43 209 105 45 211 99 45 198 102 49 62 61 67 57 60 56 60 64 65 187 189 188
-59 64 62 58 62 63 97 78 60 209 105 45 210 102 46 210 99 44 211 102 45 210 102 46
-212 101 45 209 105 45 210 102 46 208 103 45 174 105 47 57 61 64 56 66 64 110 110 107
-251 251 251 255 255 255 255 255 255 253 253 253 255 255 255 253 253 253 255 255 255 254 254 254
-254 254 254 252 252 252 254 254 254 254 254 254 255 255 255 255 255 255 254 254 254 255 255 255
-254 252 251 160 163 161 59 59 56 56 64 62 128 99 63 209 99 39 211 99 45 211 102 45
-213 105 50 211 102 45 209 99 39 210 102 46 210 99 44 209 105 45 155 104 59 56 66 64
-53 63 60 113 113 120 104 112 110 57 58 61 58 62 63 155 104 59 213 105 50 211 102 45
-208 103 45 212 101 45 211 102 45 212 101 45 211 102 45 211 102 45 212 101 45 112 79 60
-56 64 62 58 64 64 156 160 157 253 255 254 255 255 255 255 255 255 255 255 255 254 254 254
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-160 163 161 58 64 64 62 65 65 112 79 60 212 101 45 213 105 46 213 100 46 211 99 45
-212 101 45 208 103 45 212 101 45 211 102 45 211 102 45 112 79 60 58 62 65 57 63 61
-156 160 157 252 252 252 110 110 107 53 63 60 58 59 64 155 104 59 207 105 48 211 102 45
-213 100 46 208 103 45 213 100 46 208 103 45 212 101 45 213 105 50 209 105 45 210 102 46
-212 101 45 217 105 50 211 99 45 213 100 46 212 98 39 217 105 50 213 100 46 213 100 46
-213 100 46 213 100 46 213 100 46 213 100 46 213 100 46 213 100 46 213 100 46 213 100 46
-212 104 43 213 100 46 208 103 45 211 102 45 209 99 39 209 99 39 217 104 40 213 105 50
-211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45
-210 102 46 110 92 61 54 64 59 53 63 60 156 160 157
-187 189 188 0 0 0 4 1 5 4 1 5 109 102 83 173 142 59 169 141 58 165 143 59
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-166 144 56 166 144 56 142 120 69 0 0 0 71 72 69 169 141 58 169 138 59 202 204 206
-255 255 253 255 255 255 254 255 255 255 255 255 254 252 251 254 255 251 254 252 251 254 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 254 254 254 255 255 255 253 253 253 254 254 254 255 255 255 255 255 255
-172 178 183 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 4 2 1 0 0 0 4 2 1 0 1 1 71 72 69 0 0 0
-255 255 255 255 255 255 253 253 253 254 254 254 255 255 255 252 252 252 255 255 255 255 255 255
-255 255 255 251 251 251 219 227 224 224 220 212 230 230 230 255 255 255 254 254 254 71 72 69
-0 1 1 219 227 224 255 255 255 254 254 254 251 251 251 255 255 255 252 252 252 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 253 152 161 158 60 64 65 57 63 61 101 91 62
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-155 126 57 94 90 61 60 61 69 56 66 64 154 157 157 253 255 254 251 251 251 254 254 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 254 254 254 255 255 255 255 255 253 255 255 255 253 253 253 59 64 62 60 64 65
-58 64 64 156 126 54 162 124 55 156 125 56 158 127 55 158 124 56 156 126 54 156 125 56
-158 127 55 156 124 53 157 124 59 85 80 60 58 64 64 62 61 67 54 64 59 62 61 67
-58 62 65 157 126 52 156 128 53 156 125 56 156 128 53 156 124 53 158 127 55 155 128 52
-162 125 53 155 126 57 155 127 54 161 124 50 159 126 56 158 124 56 155 128 52 162 124 55
-156 125 56 156 125 56 156 125 56 156 125 56 156 125 56 156 125 56 156 125 56 156 125 56
-159 126 56 156 125 56 159 126 56 158 127 55 156 125 56 156 125 56 159 126 56 156 124 53
-158 126 53 158 124 53 156 126 54 158 125 54 159 126 56 155 127 54 157 124 59 161 124 50
-156 125 56 156 126 54 156 129 45 155 126 57 158 127 55 62 66 62 57 63 61 58 64 64
-58 62 63 57 63 61 58 65 69 161 124 50 156 125 56 158 127 55 156 124 53 158 127 55
-155 128 52 166 129 59 152 124 51 159 126 56 155 128 52 71 72 69 59 59 56 58 62 65
-202 204 206 255 255 255 253 253 253 254 254 254 255 255 255 254 254 254 255 255 255 254 254 254
-254 254 254 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-253 255 254 202 204 206 62 65 65 58 62 65 72 76 65 158 125 54 157 124 59 152 127 56
-155 127 54 158 124 56 155 127 54 158 125 54 156 125 56 155 128 52 128 113 57 58 62 65
-57 63 61 104 112 110 254 254 254 156 160 157 60 64 65 62 61 67 94 90 61 157 127 54
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-101 91 62 62 61 67 54 64 59 154 157 157 254 250 255 255 253 254 253 253 253 254 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 254 255 254 254 254 255 255 255 253 253 255 253 255 254 60 60 63 57 63 61 58 62 65
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-156 126 54 158 126 53 72 76 65 58 62 63 57 63 63 202 206 211 255 253 254 156 160 157
-58 62 63 58 64 64 101 91 62 155 126 57 158 125 54 156 126 54 156 124 53 156 126 54
-158 125 54 156 126 54 156 125 56 155 127 54 128 113 57 58 62 65 58 62 65 104 112 110
-255 254 255 104 112 110 58 65 54 53 63 60 128 113 57 158 126 53 158 127 55 154 129 46
-162 125 53 157 124 59 150 126 55 158 132 49 155 128 52 152 127 56 162 124 52 155 127 54
-156 126 54 156 126 54 156 124 53 158 127 55 156 126 54 156 126 54 158 127 55 152 124 51
-156 125 56 156 125 56 156 125 56 156 125 56 156 125 56 156 125 56 156 125 56 156 125 56
-152 124 51 159 126 56 155 128 52 155 127 54 157 124 59 162 124 52 156 125 56 156 128 53
-157 124 59 155 128 52 156 124 53 159 126 56 155 128 52 156 129 45 158 127 55 156 125 56
-85 80 60 59 60 64 57 60 70 172 178 183 254 255 255 58 62 65 56 64 62 57 63 61
-211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45
-210 102 46 209 99 39 85 80 60 62 65 65 57 61 64 202 206 211 255 253 254 253 255 254
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 254 254 255 255 255 253 255 254 255 255 255 254 254 254 254 254 254 202 204 206 58 62 63
-57 63 63 85 80 60 211 104 39 210 105 51 213 100 46 211 102 45 210 99 44 213 100 46
-212 104 43 207 99 38 212 104 43 207 105 48 59 60 62 58 66 61 58 64 64 156 160 157
-53 63 60 62 65 65 112 79 60 207 105 48 210 99 44 213 105 50 211 99 45 210 99 44
-212 101 45 211 102 45 216 99 44 217 105 50 155 104 59 62 65 65 53 63 60 110 110 107
-255 255 255 251 251 251 254 254 254 254 254 254 255 255 255 253 253 253 255 255 255 255 255 255
-255 255 255 253 253 253 255 255 255 254 254 254 252 252 252 255 255 255 254 254 254 255 255 255
-254 255 251 154 157 157 62 66 56 58 65 69 112 79 60 212 104 43 210 102 46 211 102 45
-213 100 46 209 105 45 213 103 41 213 105 50 211 102 45 208 103 45 174 105 47 57 63 63
-60 64 65 110 110 107 104 112 110 58 64 64 58 64 64 155 104 59 210 99 44 211 102 45
-208 103 45 212 101 45 211 102 45 212 101 45 211 102 45 211 102 45 212 101 45 112 79 60
-56 66 64 58 64 64 156 160 157 254 255 255 253 253 253 253 253 253 253 253 253 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-154 157 157 57 63 63 57 63 61 128 93 57 211 99 45 208 103 45 213 105 46 211 102 45
-212 101 45 208 103 45 212 101 45 211 102 45 211 102 45 112 79 60 58 62 65 57 63 61
-156 160 157 253 255 254 113 113 120 58 62 65 62 61 67 174 105 47 210 102 46 210 99 44
-213 100 46 208 103 45 216 99 44 213 105 50 209 99 39 211 104 39 208 103 45 212 101 45
-209 105 45 208 103 45 209 105 45 208 103 45 208 103 45 208 103 45 213 105 50 210 99 44
-208 103 45 208 103 45 208 103 45 208 103 45 208 103 45 208 103 45 208 103 45 208 103 45
-211 102 45 213 100 46 209 105 45 213 105 50 211 102 45 209 105 45 217 98 38 207 105 48
-211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45
-216 99 44 97 78 60 58 65 69 57 63 61 156 160 157
-187 189 188 0 0 0 4 1 5 0 3 1 109 102 83 169 141 58 169 138 59 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 173 142 59 169 141 58 166 144 56 169 141 58 169 144 61 169 141 58 169 138 59
-152 127 56 165 143 59 158 134 59 4 1 5 4 2 1 169 141 58 169 138 59 202 204 206
-255 255 255 252 252 252 255 255 255 255 255 255 252 252 252 255 255 255 255 255 255 255 255 255
-255 255 255 254 254 254 254 254 254 252 252 252 255 255 255 255 255 255 255 255 255 253 253 253
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 202 204 206 71 72 69 4 2 1 0 0 0 4 2 1 0 0 0 0 1 1
-0 1 1 4 1 5 0 0 0 0 1 1 125 131 132 230 230 230 160 163 161 0 1 1
-254 254 254 255 255 255 254 254 254 253 253 253 255 255 255 252 252 252 253 253 253 255 255 255
-254 254 254 255 255 255 241 240 247 213 212 223 224 220 212 252 252 252 253 253 253 160 163 161
-0 1 1 140 141 138 255 255 255 255 255 255 254 254 254 255 255 255 254 254 254 254 254 254
-255 255 255 255 255 255 255 255 255 255 255 253 152 161 158 60 64 65 57 63 61 101 91 62
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-156 124 53 101 91 62 62 66 62 57 63 61 125 131 132 254 254 255 253 255 254 253 253 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 255 251 254 254 253 254 255 255 253 253 255 254 254 254 254 254 255 62 65 65 58 62 65
-56 64 62 162 125 53 156 124 53 158 132 49 158 124 56 152 124 51 157 126 52 159 126 56
-158 127 55 159 126 56 150 126 55 72 76 65 62 65 65 59 64 62 57 58 61 58 66 61
-57 63 63 157 127 54 158 127 55 158 125 54 155 128 52 158 125 54 159 126 56 156 124 53
-155 128 52 152 124 51 158 124 53 155 128 52 158 124 53 152 127 56 159 126 56 158 124 56
-158 125 54 158 125 54 158 125 54 158 125 54 158 125 54 158 125 54 158 125 54 158 125 54
-158 125 54 158 125 54 158 125 54 158 125 54 158 125 54 158 125 54 158 125 54 158 125 54
-158 127 55 156 124 53 158 127 55 159 126 56 158 125 54 158 125 54 158 125 54 158 125 54
-156 129 45 159 126 56 159 126 56 158 126 53 142 120 69 71 65 56 57 60 70 54 64 59
-57 63 63 57 63 61 58 62 65 161 124 50 158 124 53 156 128 53 152 124 51 158 127 55
-158 124 53 156 128 53 156 125 56 158 124 53 159 126 56 72 76 65 58 65 69 62 66 56
-202 206 211 252 252 252 254 254 254 255 255 255 251 251 251 253 253 253 255 255 255 255 255 255
-254 254 254 255 255 255 253 253 253 255 255 255 255 255 255 255 255 255 255 255 255 254 254 254
-253 253 255 202 204 206 62 70 65 53 60 64 72 76 65 162 125 53 156 124 53 155 128 52
-155 127 54 158 124 56 155 127 54 158 125 54 156 125 56 155 128 52 128 113 57 58 62 65
-57 60 56 104 112 110 255 255 253 156 160 157 57 60 56 58 59 68 101 91 62 158 125 54
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-101 91 62 59 64 62 57 61 64 145 151 154 249 254 254 253 252 247 255 254 255 253 252 247
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-253 253 255 255 255 253 255 255 253 249 254 254 255 255 255 62 65 65 59 64 62 57 61 64
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-156 126 54 158 126 53 72 76 65 58 62 63 57 63 63 202 206 211 255 253 254 156 160 157
-58 62 63 58 64 64 101 91 62 155 126 57 158 125 54 156 126 54 156 124 53 156 126 54
-158 125 54 156 126 54 156 125 56 155 127 54 128 113 57 58 62 65 58 62 65 104 112 110
-254 255 251 104 112 110 57 61 64 57 63 61 128 113 57 157 126 52 158 127 55 156 126 54
-157 124 59 156 129 45 157 126 52 158 124 56 156 126 54 152 124 51 159 126 56 161 125 43
-156 126 54 156 126 54 158 127 55 156 126 54 156 126 54 156 124 53 156 124 53 156 124 53
-158 125 54 158 125 54 158 125 54 158 125 54 158 125 54 158 125 54 158 125 54 158 125 54
-158 125 54 159 126 56 158 125 54 156 124 53 158 125 54 159 126 56 158 125 54 158 125 54
-158 124 56 158 127 55 155 128 52 152 124 51 159 126 56 158 124 54 158 124 54 156 128 53
-62 65 65 58 62 63 60 64 65 202 206 211 253 253 253 59 64 62 60 64 65 57 63 61
-211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45
-208 103 45 216 99 44 81 77 81 50 65 64 60 61 69 202 204 206 254 255 251 254 254 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 253 253 253 255 255 255 253 253 253 253 253 253 255 255 255 202 204 206 62 65 65
-54 67 66 85 80 60 211 99 45 213 103 41 209 105 45 210 105 40 211 102 45 211 102 45
-211 102 45 213 105 50 212 101 45 210 99 44 60 64 65 57 63 61 57 63 61 178 172 162
-60 60 63 58 66 61 97 78 60 208 103 45 213 100 46 213 103 41 207 99 48 213 103 41
-208 103 45 216 99 44 211 99 45 207 105 38 155 104 59 53 63 60 60 60 63 104 112 110
-253 253 253 255 255 255 255 255 255 253 253 253 255 255 255 255 255 255 253 253 253 255 255 255
-253 253 253 255 255 255 255 255 255 253 253 253 255 255 255 255 255 255 255 255 255 252 252 252
-254 251 252 156 160 157 58 59 68 57 58 61 128 93 57 212 101 45 212 101 45 208 103 45
-209 105 45 216 99 44 207 105 48 212 101 45 209 99 39 211 99 45 155 104 59 59 64 62
-60 64 65 110 110 107 104 112 110 57 58 61 58 64 64 155 104 59 210 102 46 211 102 45
-208 103 45 212 101 45 211 102 45 212 101 45 211 102 45 211 102 45 212 101 45 112 79 60
-56 66 64 57 63 63 156 160 157 254 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-156 160 157 58 62 65 57 63 63 112 79 60 212 101 45 208 103 45 212 101 45 210 102 46
-212 101 45 208 103 45 212 101 45 211 102 45 211 102 45 112 79 60 58 62 65 57 63 61
-154 157 157 254 255 251 104 112 110 57 61 64 58 66 61 155 104 59 219 98 50 207 105 38
-212 101 45 209 105 45 210 102 46 211 99 45 212 104 43 209 105 45 207 105 38 217 104 40
-207 105 48 210 105 40 211 99 45 213 100 52 213 105 46 211 104 39 212 101 45 212 101 45
-211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45
-211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45
-210 102 46 213 105 46 209 105 45 207 99 38 212 104 43 212 104 43 208 103 45 208 103 45
-211 99 45 71 68 65 58 65 54 62 66 56 202 206 211
-187 189 188 0 1 1 0 1 1 0 0 0 142 120 69 169 141 58 173 142 59 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 168 136 64 155 126 57
-147 124 59 169 144 61 169 138 59 0 3 1 0 1 1 148 133 63 169 141 58 214 206 175
-254 254 254 255 255 255 254 254 254 252 252 252 255 255 255 255 255 255 251 251 251 254 254 254
-254 254 254 255 255 255 255 255 255 255 255 255 252 252 252 252 252 252 254 254 254 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 251 251 251 255 255 255 187 189 188 125 131 132 97 100 105 48 49 51 71 72 69
-97 100 105 140 141 138 178 172 162 241 240 247 255 255 255 255 255 255 160 163 161 0 1 1
-253 253 253 255 255 255 255 255 255 255 255 255 254 254 254 255 255 255 255 255 255 251 251 251
-253 253 253 255 255 255 255 255 255 241 240 247 213 212 223 242 238 229 253 253 253 213 212 223
-0 1 1 81 77 81 254 254 254 254 254 254 255 255 255 254 254 254 254 254 254 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 253 152 161 158 60 64 65 57 63 61 101 91 62
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-157 127 54 128 99 63 57 58 61 59 64 62 104 112 110 253 253 255 248 254 252 251 251 251
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 253 252 252 252 254 255 255 253 253 253 255 255 255 254 254 254 57 58 61 60 64 65
-58 64 64 159 126 56 156 125 56 155 128 52 158 124 56 155 127 54 158 126 53 156 125 56
-156 124 53 158 124 54 155 128 52 72 76 65 60 60 63 57 63 63 62 65 65 58 62 63
-58 64 64 149 124 55 159 126 56 158 126 53 156 128 53 159 126 56 159 126 56 157 127 54
-158 125 54 159 126 56 161 124 50 152 127 56 157 124 59 155 127 54 157 126 52 157 126 52
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-158 127 55 156 124 53 158 127 55 158 127 55 156 124 53 156 126 54 158 127 55 158 127 55
-150 126 55 152 127 56 150 128 52 142 120 69 85 80 60 58 59 64 53 60 64 97 100 105
-60 64 65 57 63 61 58 62 65 156 126 54 158 126 53 155 128 52 158 125 54 156 124 53
-158 126 53 156 126 54 155 126 57 159 126 56 161 124 50 72 76 65 58 62 65 58 64 64
-202 204 206 255 255 255 254 254 254 250 247 249 255 255 255 255 255 255 253 253 253 253 253 253
-255 255 255 253 253 253 253 253 253 255 255 255 253 253 253 254 254 254 252 252 252 255 255 255
-253 253 253 160 163 161 57 58 61 56 64 62 102 79 82 158 126 53 156 124 53 157 127 54
-155 127 54 158 124 56 155 127 54 158 125 54 156 125 56 155 128 52 128 113 57 58 62 65
-57 63 61 104 112 110 255 253 254 160 163 161 59 64 62 58 59 68 94 90 61 158 125 54
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-113 104 59 58 62 63 56 66 64 110 110 107 253 255 254 255 255 253 255 255 253 253 255 254
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 255 255 254 252 251 254 252 251 253 255 254 255 255 255 59 60 62 53 63 60 58 65 69
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-156 126 54 158 126 53 72 76 65 58 62 63 57 63 63 202 206 211 255 253 254 156 160 157
-58 62 63 58 64 64 101 91 62 155 126 57 158 125 54 156 126 54 156 124 53 156 126 54
-158 125 54 156 126 54 156 125 56 155 127 54 128 113 57 58 62 65 58 62 65 104 112 110
-253 253 253 104 112 110 62 61 67 59 64 62 128 99 63 158 126 53 152 124 51 158 127 55
-158 127 55 157 126 52 157 126 52 157 124 59 158 126 53 156 128 53 152 127 56 150 128 52
-158 125 54 159 126 56 156 124 53 158 125 54 158 125 54 159 126 56 156 124 53 159 126 56
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-156 126 54 152 124 51 152 124 51 158 127 55 158 127 55 158 127 55 156 126 54 156 124 53
-152 124 51 156 124 53 157 127 54 159 126 56 159 126 56 154 129 46 148 133 63 97 78 60
-57 63 63 60 64 65 68 69 75 249 252 251 254 255 255 62 65 65 58 62 63 58 64 64
-211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45
-213 105 46 212 101 45 97 78 60 57 60 56 62 65 65 178 172 162 252 252 252 252 252 252
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 254 254 255 255 255 254 254 254 255 255 255 253 253 253 254 254 254 202 206 211 57 63 61
-59 59 56 85 80 60 210 102 46 212 98 39 208 103 45 212 104 43 210 102 46 213 105 50
-212 104 43 210 102 46 210 99 44 207 105 48 58 62 65 57 63 61 57 60 56 202 206 211
-59 60 64 56 66 64 97 78 60 210 99 44 210 102 46 213 103 41 210 102 46 211 102 45
-211 102 45 211 102 45 210 102 46 213 103 41 174 105 47 58 64 64 59 60 62 81 77 81
-255 255 255 251 251 251 255 255 255 252 252 252 252 252 252 255 255 255 253 253 253 253 253 253
-255 255 255 251 251 251 254 254 254 255 255 255 252 252 252 254 254 254 254 254 254 255 255 255
-254 254 254 152 161 158 53 60 64 56 64 62 128 93 57 210 105 51 210 99 44 213 105 46
-210 102 46 212 98 39 210 102 46 213 103 41 213 105 46 213 100 46 155 104 59 60 60 63
-57 63 63 110 110 107 104 112 110 62 65 65 60 64 65 155 104 59 213 105 50 211 102 45
-208 103 45 212 101 45 211 102 45 212 101 45 211 102 45 211 102 45 212 101 45 112 79 60
-56 66 64 57 63 63 156 160 157 254 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-156 160 157 58 62 65 57 63 63 112 79 60 212 101 45 208 103 45 212 101 45 210 102 46
-212 101 45 208 103 45 212 101 45 211 102 45 211 102 45 112 79 60 58 62 65 57 63 61
-156 160 157 255 255 253 110 110 107 54 67 66 57 60 56 155 104 59 210 99 44 213 105 46
-212 101 45 211 102 45 209 105 45 212 101 45 213 100 46 211 99 45 213 100 46 210 105 51
-210 99 44 211 104 39 212 104 43 210 105 51 209 99 39 209 99 39 213 105 50 210 102 46
-211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45
-211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45
-209 105 45 207 99 38 212 104 43 212 104 43 216 99 44 216 99 44 213 100 46 213 105 50
-128 93 57 58 65 69 57 58 61 62 65 65 241 240 247
-187 189 188 4 1 5 4 1 5 0 0 0 142 120 69 173 142 59 169 138 59 166 144 56
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 138 59 169 141 58 169 141 58 169 141 58 158 134 59 147 124 59
-149 124 53 169 138 59 169 141 58 21 19 24 0 3 1 148 133 63 164 144 50 178 172 162
-253 253 253 255 255 255 255 255 255 255 255 255 253 253 253 254 254 254 255 255 255 255 255 255
-255 255 255 253 253 253 254 254 254 252 252 252 254 254 254 255 255 255 255 255 255 252 252 252
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-252 252 252 255 255 255 252 252 252 255 255 255 253 253 253 255 255 255 253 253 253 255 255 255
-254 254 254 255 255 255 255 255 255 255 255 255 254 254 254 253 253 253 160 163 161 0 1 1
-241 240 247 254 254 254 255 255 255 252 252 252 255 255 255 251 251 251 252 252 252 255 255 255
-254 254 254 255 255 255 252 252 252 254 254 254 255 255 255 241 240 247 255 255 255 254 254 254
-0 1 1 62 65 65 252 252 252 254 254 254 255 255 255 253 253 253 255 255 255 253 253 253
-255 255 255 255 255 255 255 255 255 255 255 253 152 161 158 60 64 65 57 63 61 101 91 62
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-157 126 52 128 113 57 58 62 65 57 63 63 88 95 83 255 254 255 254 255 251 255 254 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 254 254 254 255 255 253 254 252 251 255 255 253 230 230 230 57 58 61 56 64 62
-62 66 62 157 124 59 158 127 55 155 128 52 157 124 59 157 124 59 158 125 54 156 125 56
-159 126 56 158 127 55 158 126 53 71 72 69 62 65 65 56 66 64 71 81 83 58 62 65
-57 63 63 128 113 57 156 124 53 161 124 50 155 127 54 156 124 53 158 125 54 156 126 54
-158 124 53 158 125 54 159 126 56 110 92 61 101 91 62 101 91 62 101 91 62 101 91 62
-101 91 62 101 91 62 101 91 62 101 91 62 101 91 62 101 91 62 101 91 62 101 91 62
-101 91 62 101 91 62 101 91 62 101 91 62 101 91 62 101 91 62 101 91 62 101 91 62
-101 91 62 101 91 62 101 91 62 101 91 62 101 91 62 101 91 62 101 91 62 101 91 62
-101 91 62 101 91 62 85 80 60 66 60 61 62 65 65 53 64 53 56 64 62 202 204 206
-58 62 63 57 63 63 60 64 65 147 124 59 158 127 55 155 127 54 158 127 55 158 127 55
-156 128 53 158 124 56 152 127 56 158 125 54 156 129 45 85 80 60 60 60 63 58 65 69
-172 178 183 255 255 255 252 252 252 255 255 255 253 253 253 251 251 251 255 255 255 255 255 255
-251 251 251 255 255 255 253 253 253 253 253 253 255 255 255 255 255 255 253 253 253 254 254 254
-255 255 253 145 151 154 58 62 65 56 64 62 110 92 61 157 126 52 157 126 52 159 126 56
-155 127 54 158 124 56 155 127 54 158 125 54 156 125 56 155 128 52 128 113 57 58 62 65
-59 60 62 113 113 120 254 251 254 154 157 157 57 63 63 60 61 69 94 90 61 159 126 56
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-128 113 57 58 65 69 53 63 60 97 100 105 254 255 255 254 252 251 250 250 247 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-253 252 247 255 255 253 255 255 253 254 255 251 242 238 229 57 63 61 56 66 64 59 64 62
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-156 126 54 158 126 53 72 76 65 58 62 63 57 63 63 202 206 211 255 253 254 156 160 157
-58 62 63 58 64 64 101 91 62 155 126 57 158 125 54 156 126 54 156 124 53 156 126 54
-158 125 54 156 126 54 156 125 56 155 127 54 128 113 57 58 62 65 58 62 65 104 112 110
-255 255 255 104 112 110 59 60 64 57 63 61 128 99 63 156 124 53 158 125 54 159 126 56
-158 124 56 158 127 55 156 126 54 158 124 56 156 124 53 158 127 55 128 99 63 101 91 62
-101 91 62 101 91 62 101 91 62 94 90 61 101 91 62 94 90 61 101 91 62 94 90 61
-101 91 62 101 91 62 101 91 62 101 91 62 101 91 62 101 91 62 101 91 62 101 91 62
-101 91 62 101 91 62 101 91 62 101 91 62 101 91 62 101 91 62 101 91 62 101 91 62
-101 91 62 101 91 62 101 91 62 101 91 62 101 91 62 85 80 60 71 68 65 56 64 62
-62 65 65 58 64 64 156 160 157 255 255 255 253 255 254 57 58 61 58 64 64 58 64 64
-211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45
-208 103 45 213 105 50 110 92 61 59 59 56 57 63 61 140 141 138 253 253 255 255 255 253
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 254 254 254 254 254 255 255 255 252 252 252 254 254 254 254 255 255 156 160 157 58 62 63
-62 66 56 112 79 60 210 105 51 211 99 45 210 102 46 210 99 44 210 102 46 212 101 45
-207 99 38 213 105 50 209 99 39 174 105 47 62 65 65 57 63 61 81 77 81 202 206 211
-60 64 65 54 64 59 71 72 69 217 98 38 208 103 45 211 102 45 210 102 46 210 102 46
-213 105 50 210 102 46 217 105 50 207 105 38 210 105 51 53 63 60 59 64 62 62 66 62
-255 255 255 253 253 253 251 251 251 255 255 255 255 255 255 255 255 255 254 254 254 255 255 255
-254 254 254 254 254 254 255 255 255 253 253 253 254 254 254 255 255 255 254 254 254 252 252 252
-249 254 254 113 113 120 56 64 62 58 68 63 128 93 57 208 103 45 213 105 46 207 99 38
-213 100 52 211 102 45 213 105 50 211 104 39 213 100 46 207 99 48 128 93 57 57 58 61
-60 64 65 125 131 132 97 100 105 62 65 65 58 62 63 155 104 59 213 105 50 211 102 45
-208 103 45 212 101 45 211 102 45 212 101 45 211 102 45 211 102 45 212 101 45 112 79 60
-56 66 64 57 63 63 156 160 157 254 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-156 160 157 58 62 65 57 63 63 112 79 60 212 101 45 208 103 45 212 101 45 210 102 46
-212 101 45 208 103 45 212 101 45 211 102 45 211 102 45 112 79 60 58 62 65 57 63 61
-156 160 157 252 252 252 125 131 132 50 65 64 62 66 62 128 93 57 208 103 45 210 102 46
-211 102 45 211 99 45 208 103 45 217 105 50 213 100 46 213 100 46 210 99 51 174 105 47
-128 93 57 128 93 57 112 79 60 128 93 57 112 79 60 128 93 57 112 79 60 112 79 60
-112 79 60 112 79 60 112 79 60 112 79 60 112 79 60 112 79 60 112 79 60 112 79 60
-112 79 60 112 79 60 112 79 60 112 79 60 112 79 60 112 79 60 112 79 60 112 79 60
-128 93 57 112 79 60 128 93 57 112 79 60 112 79 60 110 92 61 97 78 60 84 69 58
-54 67 66 58 65 69 57 63 61 145 151 154 248 254 253
-187 189 188 0 1 1 4 1 5 0 0 0 142 120 69 173 138 52 169 138 59 169 144 61
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 159 134 56 149 124 55 147 124 59
-142 120 69 166 144 56 169 138 59 85 80 60 0 1 1 128 100 96 169 144 61 178 172 162
-254 254 254 253 253 253 255 255 255 255 255 255 255 255 255 254 254 254 255 255 255 252 252 252
-254 254 254 251 251 251 255 255 255 255 255 255 253 253 253 255 255 255 252 252 252 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 254 254 254 255 255 255 255 255 255 255 255 255 254 254 254 254 254 254 252 252 252
-255 255 255 250 247 249 255 255 255 253 253 253 254 254 254 255 255 255 160 163 161 0 1 1
-254 254 254 255 255 255 253 253 253 255 255 255 255 255 255 253 253 253 255 255 255 251 251 251
-255 255 255 251 251 251 255 255 255 255 255 255 253 253 253 254 254 254 255 255 255 202 206 211
-0 0 0 81 77 81 255 255 255 252 252 252 254 254 254 255 255 255 252 252 252 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 253 152 161 158 60 64 65 57 63 61 101 91 62
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-158 127 55 157 124 59 57 63 61 58 65 69 57 58 61 241 240 247 254 255 251 253 253 253
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 253 254 252 251 254 254 254 187 189 188 60 64 65 56 64 62
-72 76 65 156 125 56 158 127 55 155 128 52 162 124 55 157 124 59 156 124 53 156 126 54
-156 124 53 152 124 51 152 124 51 62 65 65 62 65 65 58 67 65 97 100 105 62 61 67
-58 64 64 113 104 59 156 125 56 157 126 52 155 127 54 158 124 56 158 125 54 156 126 54
-158 127 55 156 124 53 152 127 56 85 80 60 53 63 60 56 64 62 60 64 65 53 60 64
-58 62 65 58 62 65 58 62 65 58 62 65 58 62 65 58 62 65 58 62 65 58 62 65
-58 62 65 58 62 65 58 62 65 58 62 65 58 62 65 58 62 65 58 62 65 58 62 65
-59 60 64 62 61 67 59 60 64 57 61 64 58 62 65 58 62 65 58 62 65 58 62 65
-58 64 64 53 63 60 54 67 66 58 65 69 53 60 64 58 66 61 125 131 132 255 253 254
-104 112 110 58 64 64 58 62 63 128 113 57 157 126 52 155 127 54 157 126 52 152 124 51
-156 128 53 159 126 56 152 127 56 156 124 53 155 128 52 94 90 61 60 61 69 54 67 66
-145 151 154 252 252 252 255 255 255 254 254 254 254 254 254 255 255 255 255 255 255 253 253 253
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 251 251 251 254 254 254 255 255 255
-251 251 251 110 110 107 57 61 64 58 65 69 128 93 57 155 127 54 156 124 53 159 126 56
-155 127 54 158 124 56 155 127 54 158 125 54 156 125 56 155 128 52 128 113 57 58 62 65
-62 65 65 104 112 110 255 254 255 156 160 157 60 64 65 58 62 65 94 90 61 156 124 53
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-149 124 55 53 60 64 56 66 64 59 60 62 253 253 255 254 252 251 254 255 251 253 253 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 255 251 255 253 254 254 254 253 252 252 252 202 204 206 56 64 62 58 65 69 72 76 65
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-156 126 54 158 126 53 72 76 65 58 62 63 57 63 63 202 206 211 255 253 254 156 160 157
-58 62 63 58 64 64 101 91 62 155 126 57 158 125 54 156 126 54 156 124 53 156 126 54
-158 125 54 156 126 54 156 125 56 155 127 54 128 113 57 58 62 65 58 62 65 104 112 110
-253 253 255 145 151 154 62 61 67 57 63 61 101 91 62 156 125 56 159 126 56 156 124 53
-158 125 54 155 126 57 155 128 52 158 124 56 158 126 53 155 127 54 110 92 61 62 61 67
-58 62 65 58 62 65 58 65 69 53 60 64 58 62 65 58 62 65 60 64 65 60 64 65
-58 62 65 58 62 65 58 62 65 58 62 65 58 62 65 58 62 65 58 62 65 58 62 65
-58 62 65 58 62 65 58 62 65 58 62 65 58 62 65 58 62 65 58 62 65 60 64 65
-58 59 64 60 64 65 56 64 62 56 64 62 58 65 69 58 65 69 53 63 60 56 66 64
-58 62 63 97 100 105 253 253 253 255 255 255 253 253 253 60 64 65 58 62 63 57 63 63
-211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45
-210 99 44 210 102 46 155 104 59 60 64 65 59 64 62 104 112 110 255 255 255 250 250 247
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 253 253 253 255 255 255 255 255 255 252 252 252 113 113 120 60 64 65
-58 62 65 128 93 57 207 99 48 210 102 46 213 100 46 208 103 45 212 101 45 213 105 50
-213 105 46 210 99 44 213 105 46 155 104 59 53 63 60 59 64 62 104 112 110 219 227 224
-58 64 64 56 64 62 71 68 65 216 99 44 209 105 45 212 101 45 212 101 45 210 102 46
-208 103 45 213 105 50 211 99 45 208 103 45 217 105 50 71 68 65 56 66 64 59 64 62
-202 204 206 251 251 251 254 254 254 255 255 255 254 254 254 253 253 253 255 255 255 253 253 253
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 251 251 251 255 255 255 255 255 255
-255 255 255 81 77 81 58 65 69 53 60 64 174 105 47 210 102 46 216 99 44 212 101 45
-208 103 45 211 99 45 213 100 52 212 98 39 210 102 46 213 105 50 112 79 60 62 65 65
-57 63 63 160 163 161 104 112 110 58 64 64 57 58 61 155 104 59 210 102 46 210 99 44
-208 103 45 212 101 45 211 102 45 212 101 45 211 102 45 211 102 45 212 101 45 112 79 60
-56 66 64 57 63 63 156 160 157 254 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-156 160 157 58 62 65 57 63 63 112 79 60 212 101 45 208 103 45 212 101 45 210 102 46
-212 101 45 208 103 45 212 101 45 211 102 45 211 102 45 112 79 60 58 62 65 57 63 61
-156 160 157 253 255 254 160 163 161 54 67 66 57 60 56 128 99 63 209 99 39 213 105 46
-209 105 45 213 100 46 209 99 39 216 99 44 210 102 46 212 104 43 198 102 49 128 93 57
-54 67 66 59 64 62 59 64 62 53 63 60 53 63 60 58 65 69 57 61 64 56 66 64
-56 64 62 56 64 62 56 64 62 56 64 62 56 64 62 56 64 62 56 64 62 56 64 62
-56 64 62 56 64 62 56 64 62 56 64 62 56 64 62 56 64 62 56 64 62 56 64 62
-56 64 62 56 66 64 57 60 56 59 64 62 59 60 62 60 60 63 58 65 69 58 65 69
-58 62 65 62 66 62 97 100 105 241 240 247 255 254 255
-187 189 188 0 1 1 4 1 5 0 0 0 142 120 69 173 138 52 169 138 59 166 144 56
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 159 134 56 149 124 55 147 124 59 147 124 59
-152 127 56 166 144 56 173 142 59 94 90 61 4 1 5 142 120 69 165 143 59 182 158 106
-160 163 161 113 113 120 97 100 105 97 100 105 97 100 105 113 113 120 172 178 183 241 240 247
-255 255 255 255 255 255 255 255 255 251 251 251 255 255 255 254 254 254 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 253 253 253 255 255 255 254 254 254 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 252 252 252 255 255 253 255 255 255 252 252 252 113 113 120 0 1 1
-255 255 255 253 253 253 254 254 254 254 254 254 254 254 254 255 255 255 202 204 206 160 163 161
-213 212 223 255 255 255 255 255 255 255 255 255 255 255 255 252 252 252 255 255 255 97 100 105
-4 2 1 156 160 157 254 254 254 255 255 255 255 255 255 252 252 252 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 253 152 161 158 60 64 65 57 63 61 101 91 62
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-155 126 57 156 124 53 72 73 56 53 60 64 60 64 65 187 189 188 254 255 251 249 254 254
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 255 255 254 252 251 254 254 253 255 255 255 254 255 255 125 131 132 58 62 65 60 64 65
-101 91 62 156 125 56 158 127 55 155 128 52 158 124 56 158 124 56 156 124 53 156 128 53
-156 124 53 158 127 55 155 126 57 58 62 63 57 60 56 56 66 64 113 113 120 62 61 67
-58 64 64 101 91 62 157 124 59 157 126 52 156 125 56 159 126 56 159 126 56 156 126 54
-155 127 54 152 124 44 154 129 46 101 91 62 56 66 64 57 63 61 59 60 62 62 70 65
-59 64 62 59 64 62 59 64 62 59 64 62 59 64 62 59 64 62 59 64 62 59 64 62
-59 64 62 59 64 62 59 64 62 59 64 62 59 64 62 59 64 62 59 64 62 59 64 62
-57 63 61 57 63 61 57 63 61 59 64 62 59 64 62 57 63 61 59 64 62 57 58 61
-56 66 64 54 67 66 54 64 59 58 65 54 71 72 69 160 163 161 253 255 254 254 251 252
-113 113 120 56 64 62 58 64 64 110 92 61 156 126 54 158 127 55 158 126 53 158 127 55
-158 126 53 157 127 54 158 124 56 156 126 54 155 127 54 128 113 57 57 60 70 56 64 62
-88 95 83 253 255 254 253 255 254 255 255 255 251 251 251 255 255 255 253 253 253 255 255 255
-254 254 254 251 251 251 252 252 252 255 255 255 254 254 254 255 255 255 255 255 255 251 251 251
-241 240 247 62 65 65 53 60 64 62 65 65 149 124 53 155 126 57 155 127 54 158 124 53
-155 127 54 158 124 56 155 127 54 158 125 54 156 125 56 155 128 52 128 113 57 58 62 65
-59 64 62 97 100 105 255 253 254 202 206 211 57 63 63 62 70 69 72 73 56 158 127 55
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-159 126 56 62 65 65 53 60 64 60 60 63 187 189 188 251 251 251 254 255 251 253 253 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 255 251 255 254 255 252 252 252 255 255 255 140 141 138 56 64 62 58 62 65 94 90 61
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-156 126 54 158 126 53 72 76 65 58 62 63 57 63 63 202 206 211 255 253 254 156 160 157
-58 62 63 58 64 64 101 91 62 155 126 57 158 125 54 156 126 54 156 124 53 156 126 54
-158 125 54 156 126 54 156 125 56 155 127 54 128 113 57 58 62 65 58 62 65 104 112 110
-254 255 255 154 157 157 62 65 65 58 66 61 85 80 60 157 124 59 152 124 51 166 129 59
-162 125 53 152 124 51 155 128 52 159 126 56 159 126 56 152 124 44 113 104 59 53 63 60
-59 64 62 59 60 62 59 64 62 62 65 65 59 64 62 59 60 62 59 64 62 57 58 61
-59 64 62 59 64 62 59 64 62 59 64 62 59 64 62 59 64 62 59 64 62 59 64 62
-59 64 62 59 64 62 57 63 61 57 63 61 62 65 65 59 64 62 57 63 61 59 64 62
-60 60 63 62 66 62 57 60 56 53 60 64 57 61 64 58 65 54 59 59 56 62 61 67
-145 151 154 241 240 247 255 255 255 255 255 255 254 254 254 62 65 65 58 62 63 60 64 65
-211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45
-213 105 50 210 102 46 198 102 49 58 65 69 60 64 65 57 58 61 241 240 247 255 253 254
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-252 252 252 254 254 254 255 255 255 253 253 253 255 255 255 254 255 255 68 69 75 58 62 63
-51 61 71 174 105 47 208 103 45 210 102 46 216 99 44 208 103 45 212 101 45 210 102 46
-211 102 45 213 100 46 208 103 45 128 93 57 58 67 65 60 60 63 113 113 120 254 254 255
-59 64 62 57 63 61 62 61 67 198 102 49 210 105 40 213 100 46 212 98 39 210 102 46
-210 102 46 208 103 45 212 101 45 211 99 45 209 99 39 97 78 60 60 64 65 56 66 64
-156 160 157 254 255 255 252 252 252 251 251 251 254 254 254 255 255 255 255 255 255 252 252 252
-255 255 255 255 255 255 254 254 254 255 255 255 255 255 255 252 252 252 255 255 255 251 251 251
-230 230 230 59 59 56 53 60 64 59 60 64 207 105 48 210 102 46 213 100 46 217 105 50
-213 103 41 213 105 50 210 105 51 210 99 44 207 105 38 219 98 50 84 69 58 57 61 64
-58 62 63 187 189 188 104 112 110 57 58 61 62 70 69 155 104 59 211 99 45 213 105 46
-208 103 45 212 101 45 211 102 45 212 101 45 211 102 45 211 102 45 212 101 45 112 79 60
-56 66 64 57 63 63 156 160 157 254 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-156 160 157 58 62 65 57 63 63 112 79 60 212 101 45 208 103 45 212 101 45 210 102 46
-212 101 45 208 103 45 212 101 45 211 102 45 211 102 45 112 79 60 58 62 65 57 63 61
-154 157 157 249 254 254 172 178 183 59 60 62 57 60 56 97 78 60 213 103 41 209 99 39
-208 103 45 217 105 50 210 99 44 213 103 41 208 103 45 207 105 38 208 103 45 155 104 59
-56 66 64 58 62 63 62 65 65 62 65 65 57 58 61 62 65 65 59 60 62 57 63 61
-60 64 65 60 64 65 60 64 65 60 64 65 60 64 65 60 64 65 60 64 65 60 64 65
-60 64 65 60 64 65 60 64 65 60 64 65 60 64 65 60 64 65 60 64 65 60 64 65
-59 60 64 62 65 65 59 64 62 62 65 65 62 65 65 57 58 61 56 66 64 53 60 64
-59 59 56 145 151 154 241 240 247 254 255 251 255 255 253
-242 238 229 0 3 1 4 1 5 0 0 0 109 102 83 169 141 58 169 141 58 166 144 56
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 159 134 56 150 126 55 147 124 59 147 124 59 147 124 59
-155 126 57 168 136 64 169 141 58 88 95 83 0 1 1 109 102 83 102 79 82 4 2 1
-0 1 1 88 95 83 97 100 105 110 110 107 97 100 105 21 19 24 4 1 5 81 77 81
-253 253 253 253 253 253 254 254 254 255 255 255 255 255 255 255 255 255 254 254 254 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-253 253 253 255 255 255 251 251 251 254 254 254 254 254 254 255 255 255 254 254 254 255 255 255
-252 252 252 254 254 254 255 255 255 250 247 249 252 252 252 255 255 255 88 95 83 97 100 105
-254 254 254 255 255 255 255 255 255 255 255 255 178 172 162 71 72 69 0 0 0 0 1 1
-0 0 0 71 72 69 125 131 132 202 204 206 202 204 206 187 189 188 97 100 105 0 0 0
-60 60 63 253 253 253 255 255 255 251 251 251 255 255 255 255 255 255 254 254 254 252 252 252
-255 255 255 255 255 255 255 255 255 255 255 253 152 161 158 60 64 65 57 63 61 101 91 62
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-152 124 51 162 125 53 101 91 62 56 64 62 58 65 69 113 113 120 250 250 247 253 255 254
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 251 251 251 255 255 253 253 253 253 241 240 247 71 81 83 60 64 65 57 60 56
-128 113 57 158 127 55 157 126 52 155 128 52 158 127 55 158 124 56 156 124 53 156 128 53
-158 127 55 157 126 52 128 113 57 57 61 64 62 66 62 97 100 105 160 163 161 58 62 63
-59 64 62 85 80 60 157 124 59 155 128 52 156 125 56 158 124 56 158 125 54 155 127 54
-158 124 56 157 126 52 157 126 52 128 99 63 58 62 65 58 62 65 62 61 67 154 157 157
-156 160 157 156 160 157 156 160 157 156 160 157 156 160 157 156 160 157 156 160 157 156 160 157
-156 160 157 156 160 157 156 160 157 156 160 157 156 160 157 156 160 157 156 160 157 156 160 157
-152 161 158 152 161 158 154 157 157 156 160 157 156 160 157 154 157 157 154 157 157 156 160 157
-156 160 157 156 160 157 160 163 161 213 212 223 255 253 254 254 255 251 253 253 255 255 254 255
-154 157 157 56 66 64 57 63 61 101 91 62 156 126 54 152 124 51 158 127 55 152 124 51
-156 125 56 155 128 52 159 126 56 158 127 55 152 124 51 152 127 56 62 66 62 57 60 56
-57 58 61 219 227 224 253 255 254 255 255 255 254 254 254 255 255 255 255 255 255 253 253 253
-255 255 255 255 255 255 255 255 255 255 255 255 252 252 252 255 255 255 250 247 249 255 255 255
-172 178 183 57 60 56 58 65 69 71 65 56 154 129 46 155 126 57 155 127 54 158 126 53
-155 127 54 158 124 56 155 127 54 158 125 54 156 125 56 155 128 52 128 113 57 58 62 65
-58 62 63 104 112 110 255 255 253 202 204 206 57 63 61 56 66 64 71 68 65 149 124 55
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-156 124 53 85 80 60 58 65 69 58 64 64 140 141 138 253 255 254 249 252 251 254 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 252 251 255 254 255 255 255 253 255 255 255 88 95 83 58 62 65 57 58 61 113 104 59
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-156 126 54 158 126 53 72 76 65 58 62 63 57 63 63 202 206 211 255 253 254 156 160 157
-58 62 63 58 64 64 101 91 62 155 126 57 158 125 54 156 126 54 156 124 53 156 126 54
-158 125 54 156 126 54 156 125 56 155 127 54 128 113 57 58 62 65 58 62 65 104 112 110
-254 255 255 202 206 211 62 65 65 57 60 56 72 76 65 157 124 59 162 125 53 152 124 51
-158 125 54 155 127 54 156 128 53 157 126 52 158 127 55 157 126 52 142 120 69 58 64 64
-57 63 63 58 64 64 145 151 154 156 160 157 156 160 157 154 157 157 160 163 161 154 157 157
-156 160 157 156 160 157 156 160 157 156 160 157 156 160 157 156 160 157 156 160 157 156 160 157
-156 160 157 156 160 157 154 157 157 156 160 157 156 160 157 154 157 157 154 157 157 156 160 157
-160 163 161 154 157 157 160 163 161 160 163 161 154 157 157 154 157 157 202 204 206 241 240 247
-254 255 255 249 252 251 255 255 255 255 255 255 254 254 254 59 60 62 58 62 63 57 63 63
-211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45
-212 101 45 210 99 44 213 105 50 84 69 58 53 60 64 62 65 65 172 178 183 255 254 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 252 252 252 187 189 188 58 62 63 60 64 65
-71 68 65 200 101 40 213 105 46 209 105 45 217 98 38 208 103 45 209 99 39 210 99 44
-210 99 44 213 100 46 209 105 45 97 78 60 53 63 60 59 60 62 156 160 157 254 254 254
-81 77 81 57 63 61 62 61 67 155 104 59 208 103 45 213 100 46 216 99 44 211 102 45
-213 105 46 208 103 45 217 105 50 208 103 45 216 99 44 142 101 66 59 59 56 58 65 69
-81 77 81 253 255 254 252 252 252 255 255 255 254 254 254 252 252 252 253 253 253 255 255 255
-253 253 253 255 255 255 253 253 253 253 253 253 254 254 254 255 255 255 253 253 253 255 255 255
-156 160 157 59 64 62 58 65 69 97 78 60 212 98 39 209 105 45 207 99 48 208 103 45
-209 99 39 210 99 44 211 99 45 210 102 46 208 103 45 213 100 52 71 68 65 62 61 67
-58 64 64 202 204 206 104 112 110 62 65 65 57 58 61 155 104 59 210 102 46 211 102 45
-208 103 45 212 101 45 211 102 45 212 101 45 211 102 45 211 102 45 212 101 45 112 79 60
-56 66 64 57 63 63 156 160 157 254 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-156 160 157 58 62 65 57 63 63 112 79 60 212 101 45 208 103 45 212 101 45 210 102 46
-212 101 45 208 103 45 212 101 45 211 102 45 211 102 45 112 79 60 58 62 65 57 63 61
-160 163 161 254 255 255 202 204 206 60 60 63 59 64 62 71 68 65 210 105 51 213 103 41
-211 102 45 219 98 50 211 102 45 211 102 45 209 105 45 211 104 39 216 99 44 198 102 49
-57 63 61 58 65 69 58 59 68 140 141 138 160 163 161 154 157 157 156 160 157 156 160 157
-156 160 157 156 160 157 156 160 157 156 160 157 156 160 157 156 160 157 156 160 157 156 160 157
-156 160 157 156 160 157 156 160 157 156 160 157 156 160 157 156 160 157 156 160 157 156 160 157
-160 163 161 154 157 157 156 160 157 154 157 157 154 157 157 156 160 157 156 160 157 187 189 188
-249 252 246 249 254 254 254 251 252 254 255 251 253 255 254
-253 253 253 0 3 1 0 1 1 0 3 1 109 102 83 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 144 61 158 134 59 152 127 56 147 124 59 147 124 59 147 124 59 147 124 59
-158 134 59 169 144 61 166 144 56 81 77 81 4 1 5 0 3 1 88 95 83 172 178 183
-241 240 247 253 253 253 255 255 255 254 254 254 255 255 255 254 254 254 140 141 138 0 0 0
-125 131 132 255 255 255 251 251 251 255 255 255 254 254 254 255 255 255 255 255 255 252 252 252
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 254 254 254 255 255 255 254 254 254 255 255 255 251 251 251 254 254 254
-255 255 255 254 254 254 255 255 255 255 255 255 251 251 251 255 255 255 48 49 51 125 131 132
-254 254 254 241 240 247 154 157 157 71 72 69 0 0 0 0 0 0 97 100 105 187 189 188
-140 141 138 48 49 51 4 2 1 0 0 0 0 0 0 4 2 1 0 0 0 81 77 81
-241 240 247 253 253 253 253 253 253 255 255 255 253 253 253 255 255 255 252 252 252 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 253 152 161 158 60 64 65 57 63 61 101 91 62
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-158 127 55 152 124 44 147 124 59 57 60 56 58 65 69 59 64 62 230 230 230 248 254 252
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-251 251 251 255 255 253 250 252 246 254 255 255 156 160 157 58 62 63 59 59 56 71 68 65
-155 126 57 161 124 50 158 124 53 156 125 56 156 126 54 158 125 54 155 127 54 158 125 54
-152 124 51 159 126 56 101 91 62 60 61 69 57 60 56 125 131 132 202 204 206 56 66 64
-59 64 62 71 68 65 157 124 59 155 128 52 157 124 59 159 126 56 158 125 54 158 127 55
-157 124 59 159 126 56 156 124 53 147 124 59 57 60 56 53 63 60 59 64 62 202 204 206
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 253 253 255 254 254 255 255 255 255 251 251 251 255 255 255 252 252 252 202 206 211
-202 204 206 224 220 212 254 255 251 255 253 254 254 250 255 249 252 251 254 255 251 250 252 254
-187 189 188 56 64 62 59 64 62 72 76 65 157 127 54 158 124 54 158 127 55 156 126 54
-155 126 57 161 124 50 157 124 59 156 128 53 155 126 57 159 126 56 94 90 61 57 63 61
-60 64 65 125 131 132 254 255 255 254 254 254 255 255 255 253 253 253 252 252 252 255 255 255
-253 253 253 255 255 255 254 254 254 255 255 255 254 254 254 253 253 253 253 253 253 253 253 253
-88 95 83 58 66 61 54 67 66 101 91 62 155 128 52 158 127 55 156 126 54 156 124 53
-155 127 54 158 124 56 155 127 54 158 125 54 156 125 56 155 128 52 128 113 57 58 62 65
-53 60 64 104 112 110 255 255 253 255 255 253 60 64 65 53 63 60 62 65 65 147 124 59
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-156 128 53 128 99 63 57 63 61 59 64 62 68 69 75 241 240 247 253 253 255 254 255 251
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 255 251 253 253 255 254 255 251 187 189 188 62 65 65 53 60 64 71 65 56 149 124 55
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-156 126 54 158 126 53 72 76 65 58 62 63 57 63 63 202 206 211 255 253 254 156 160 157
-58 62 63 58 64 64 101 91 62 155 126 57 158 125 54 156 126 54 156 124 53 156 126 54
-158 125 54 156 126 54 156 125 56 155 127 54 128 113 57 58 62 65 58 62 65 104 112 110
-255 255 253 241 240 247 60 60 63 60 64 65 53 63 60 147 124 59 158 126 53 156 124 53
-157 124 59 155 127 54 158 126 53 157 126 52 157 124 59 162 124 55 157 124 59 71 68 65
-58 62 65 57 61 64 187 189 188 249 254 254 254 255 255 254 255 255 251 251 251 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 253 253 255 255 255 255 255 255 255 253 253 255 255 255 255 255 255 255 253 253 255
-254 255 251 255 255 255 202 204 206 202 204 206 213 212 223 254 255 251 254 252 244 254 255 251
-254 255 255 255 255 255 254 254 254 251 251 251 255 255 255 59 60 62 62 65 65 57 63 63
-211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45
-211 102 45 210 102 46 212 98 39 128 93 57 56 66 64 59 60 62 81 77 81 253 255 254
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 253 253 253 254 254 254 254 255 255 110 110 107 62 65 65 57 63 61
-128 93 57 213 103 41 211 102 45 208 103 45 216 99 44 209 105 45 213 105 46 212 101 45
-208 103 45 213 100 46 207 105 48 81 77 81 53 63 60 62 65 65 187 189 188 254 255 255
-125 131 132 59 64 62 58 62 65 112 79 60 211 102 45 213 100 46 213 100 46 210 99 44
-208 103 45 216 99 44 210 99 44 213 105 50 210 102 46 198 102 49 68 58 52 62 61 67
-59 64 62 202 204 206 255 255 255 254 254 254 251 251 251 255 255 255 254 254 254 252 252 252
-254 254 254 255 255 255 254 254 254 255 255 255 254 254 254 252 252 252 255 255 255 241 240 247
-71 72 69 56 66 64 56 64 62 140 101 45 216 99 44 209 105 45 207 99 48 213 105 50
-213 105 46 213 105 46 211 102 45 213 105 50 213 105 46 174 105 47 58 67 65 60 60 63
-58 62 63 255 255 255 104 112 110 60 64 65 60 64 65 155 104 59 213 105 50 210 99 44
-208 103 45 212 101 45 211 102 45 212 101 45 211 102 45 211 102 45 212 101 45 112 79 60
-56 66 64 57 63 63 156 160 157 254 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-156 160 157 58 62 65 57 63 63 112 79 60 212 101 45 208 103 45 212 101 45 210 102 46
-212 101 45 208 103 45 212 101 45 211 102 45 211 102 45 112 79 60 58 62 65 57 63 61
-154 157 157 251 251 251 254 255 255 59 64 62 57 63 63 62 65 65 185 105 60 209 99 39
-216 99 44 211 99 45 208 103 45 210 102 46 213 105 46 212 104 43 216 99 44 213 100 52
-84 69 58 66 60 61 54 67 66 154 157 157 255 254 255 254 254 254 254 255 251 254 254 254
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 254 255 255 249 254 254 219 227 224 202 204 206 202 204 206 254 251 252 255 255 253
-253 255 254 250 252 254 255 254 255 253 252 247 248 254 252
-255 253 254 59 59 56 4 1 5 0 3 1 81 77 81 169 144 61 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 159 134 56 149 124 55 147 124 59 147 124 59 147 124 59 147 124 59 147 124 59
-166 134 56 166 144 56 169 144 61 21 19 24 0 0 0 160 163 161 253 253 255 253 255 254
-255 255 255 255 255 255 254 254 254 255 255 255 253 253 253 255 255 255 253 253 253 97 100 105
-0 1 1 178 172 162 253 253 253 255 255 255 255 255 255 254 254 254 253 253 253 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 254 254 255 255 255 254 254 254 255 255 255 255 255 255 252 252 252 255 255 255 253 253 253
-255 255 255 254 254 254 254 254 254 255 255 255 255 255 255 241 240 247 4 1 5 145 151 154
-145 151 154 48 49 51 4 2 1 6 9 5 110 110 107 219 227 224 253 253 253 255 255 255
-255 255 255 254 254 254 219 227 224 156 160 157 125 131 132 125 131 132 202 206 211 255 255 255
-255 255 255 254 254 254 255 255 255 254 254 254 255 255 255 254 254 254 255 255 255 253 253 253
-255 255 255 255 255 255 255 255 255 255 255 253 152 161 158 60 64 65 57 63 61 101 91 62
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-156 126 54 157 127 54 161 124 50 72 76 65 57 63 63 57 63 61 110 110 107 254 255 251
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 254 254 254 251 249 255 255 253 241 240 247 68 69 75 57 63 61 62 66 56 88 95 83
-158 127 55 161 124 50 158 124 56 155 126 57 156 126 54 156 124 53 155 127 54 158 124 56
-155 126 57 162 124 55 72 73 56 60 61 69 56 66 64 172 178 183 250 247 249 53 60 64
-56 64 62 59 60 62 149 124 53 152 124 44 157 124 59 156 125 56 152 124 51 157 127 54
-156 126 54 155 128 52 158 126 53 152 124 51 81 77 81 60 64 65 60 60 63 110 110 107
-255 255 253 255 255 253 255 255 253 255 255 253 255 255 253 255 255 253 255 255 253 255 255 253
-255 255 253 255 255 253 255 255 253 255 255 253 255 255 253 255 255 253 255 255 253 255 255 253
-255 253 254 255 254 255 253 253 253 253 255 254 202 206 211 113 113 120 59 64 62 57 63 61
-60 61 69 56 64 62 71 81 83 187 189 188 253 255 254 253 255 254 253 253 253 254 255 251
-230 230 230 56 64 62 59 64 62 59 59 56 155 127 54 159 126 56 157 126 52 156 126 54
-155 126 57 162 125 53 156 125 56 152 124 44 166 129 59 156 124 53 113 104 59 58 62 65
-58 64 64 58 64 64 202 204 206 255 255 255 255 255 255 255 255 255 254 254 254 255 255 255
-255 255 255 254 254 254 255 255 255 253 253 253 254 254 254 255 255 255 254 254 254 187 189 188
-59 60 64 53 64 53 58 65 69 142 120 69 158 124 56 161 124 50 159 126 56 156 124 53
-155 127 54 158 124 56 155 127 54 158 125 54 156 125 56 155 128 52 128 113 57 58 62 65
-58 65 69 104 112 110 254 251 249 255 255 255 97 100 105 58 65 69 62 61 67 128 113 57
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-156 129 45 157 124 59 71 68 65 57 60 56 60 60 63 140 141 138 255 254 255 254 252 250
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-253 252 247 255 255 255 250 252 246 81 77 81 60 64 65 58 62 65 94 90 61 155 128 52
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-156 126 54 158 126 53 72 76 65 58 62 63 57 63 63 202 206 211 255 253 254 156 160 157
-58 62 63 58 64 64 101 91 62 155 126 57 158 125 54 156 126 54 156 124 53 156 126 54
-158 125 54 156 126 54 156 125 56 155 127 54 128 113 57 58 62 65 58 62 65 104 112 110
-252 252 252 255 255 255 81 77 81 57 63 63 58 65 69 128 93 57 158 126 53 155 126 57
-157 124 59 154 129 46 158 126 53 158 126 53 157 124 59 161 124 50 161 125 43 101 91 62
-58 62 63 57 63 61 71 72 69 241 240 247 254 254 254 255 255 253 255 255 253 254 252 251
-255 255 253 255 255 253 255 255 253 255 255 253 255 255 253 255 255 253 255 255 253 255 255 253
-255 255 253 251 251 251 255 255 253 255 255 253 251 251 251 255 255 253 251 251 251 230 230 230
-125 131 132 71 72 69 62 66 62 53 63 60 57 63 63 68 69 75 160 163 161 255 254 255
-253 255 254 255 255 255 255 255 255 255 255 255 254 254 254 60 64 65 58 62 63 58 64 64
-211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45
-210 99 44 210 102 46 213 100 46 185 105 60 57 63 61 62 66 56 58 64 64 160 163 161
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 254 254 254 255 255 255 255 255 255 187 189 188 60 64 65 53 63 60 60 64 65
-174 105 47 216 99 44 211 102 45 208 103 45 213 105 50 209 99 39 213 105 50 212 101 45
-209 105 45 211 99 45 200 101 40 58 59 64 54 67 66 57 60 56 241 240 247 253 255 254
-172 178 183 62 65 65 53 60 64 84 69 58 213 105 50 211 99 45 210 105 51 210 99 44
-211 99 45 209 105 45 216 99 44 212 98 39 210 105 51 211 104 39 97 78 60 62 61 67
-57 63 61 97 100 105 253 253 253 253 253 253 255 254 255 255 255 255 253 253 253 255 255 255
-255 255 255 251 251 251 255 255 255 255 255 255 253 253 253 255 255 255 255 255 255 154 157 157
-59 60 62 54 67 66 62 65 65 198 102 49 213 100 52 209 99 39 213 100 46 213 103 41
-210 99 51 217 98 38 208 103 45 213 100 46 216 99 44 128 93 57 53 63 60 58 64 64
-104 112 110 251 251 251 104 112 110 59 60 62 58 64 64 155 104 59 210 102 46 213 105 46
-208 103 45 212 101 45 211 102 45 212 101 45 211 102 45 211 102 45 212 101 45 112 79 60
-56 66 64 57 63 63 156 160 157 254 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-156 160 157 58 62 65 57 63 63 112 79 60 212 101 45 208 103 45 212 101 45 210 102 46
-212 101 45 208 103 45 212 101 45 211 102 45 211 102 45 112 79 60 58 62 65 57 63 61
-154 157 157 255 255 253 254 252 251 97 100 105 58 65 69 62 61 67 140 101 45 213 105 50
-213 103 41 208 103 45 210 105 51 213 105 50 211 99 45 210 102 46 207 105 48 208 103 45
-128 99 63 66 60 61 50 65 64 71 72 69 241 240 247 255 255 253 254 255 251 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-230 230 230 145 151 154 68 69 75 58 62 65 58 62 65 60 64 65 68 69 75 154 157 157
-241 240 247 255 255 253 249 254 246 249 254 254 253 253 255
-254 254 254 58 62 63 4 2 1 4 1 5 0 3 1 168 136 64 168 136 64 169 141 58
-169 141 58 169 141 58 168 136 64 169 141 58 173 142 59 169 144 61 169 138 59 166 144 56
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-158 134 59 147 124 59 147 124 59 149 124 55 147 124 59 147 124 59 155 126 57 149 124 55
-166 144 56 166 144 56 148 133 63 4 2 1 178 172 162 253 255 254 249 254 246 255 254 255
-253 253 253 255 255 255 255 255 255 255 255 255 255 255 255 252 252 252 255 255 255 241 240 247
-88 95 83 21 19 24 187 189 188 252 252 252 255 255 255 251 251 251 255 255 255 255 255 253
-255 255 255 254 254 254 255 255 255 254 252 251 255 255 253 254 252 251 255 255 255 255 255 255
-254 254 254 254 254 254 255 255 255 255 255 255 255 255 255 255 255 255 254 254 254 255 255 255
-254 254 254 253 253 253 255 255 255 255 255 255 255 255 255 254 254 254 255 255 255 255 255 255
-255 255 255 255 255 255 254 254 254 255 255 255 253 253 253 125 131 132 0 0 0 0 0 0
-0 0 0 21 19 24 125 131 132 241 240 247 251 251 251 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 253 152 161 158 60 64 65 57 63 61 101 91 62
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-158 125 54 161 124 50 155 126 57 128 113 57 60 60 63 62 66 56 59 60 70 178 172 162
-253 253 253 254 255 255 255 255 255 254 254 254 255 255 255 253 253 255 248 251 253 254 255 255
-253 255 254 254 250 255 254 255 251 110 110 107 58 62 65 50 65 62 62 66 56 147 124 59
-161 124 50 155 126 57 155 126 57 159 126 56 162 124 55 156 125 56 154 129 46 158 125 54
-158 125 54 147 124 59 57 63 61 58 67 65 62 61 67 219 227 224 255 254 255 97 100 105
-58 62 65 57 63 63 110 92 61 152 127 56 155 128 52 158 125 54 157 126 52 158 127 55
-156 128 53 152 124 51 157 126 52 156 124 53 128 99 63 62 66 56 57 60 56 60 64 65
-156 160 157 254 254 253 255 255 255 255 255 255 254 254 255 255 255 255 254 254 253 255 255 253
-253 253 255 254 255 255 253 253 255 254 255 255 249 252 251 254 255 255 255 255 255 253 253 255
-254 255 251 255 255 255 230 230 230 110 110 107 58 66 61 54 64 59 57 63 61 58 62 65
-54 64 59 59 60 70 66 60 61 56 66 64 125 131 132 250 252 246 254 250 255 249 254 246
-254 255 255 81 77 81 59 64 62 57 60 70 128 99 63 152 127 56 156 129 45 158 124 56
-158 125 54 157 124 59 156 124 53 159 126 56 157 124 59 158 132 49 150 126 55 84 69 58
-59 64 62 57 63 61 88 95 83 241 240 247 255 255 253 254 255 251 254 254 253 252 252 252
-254 251 252 255 255 255 254 255 255 254 254 255 255 254 255 254 252 251 219 227 224 71 72 69
-57 63 63 56 64 62 97 78 60 157 124 59 161 124 50 155 127 54 155 128 52 157 127 54
-155 127 54 158 124 56 155 127 54 158 125 54 156 125 56 155 128 52 128 113 57 58 62 65
-60 64 65 110 110 107 255 255 253 254 255 255 125 131 132 57 63 61 59 59 56 88 95 83
-161 124 50 155 126 57 156 126 54 161 124 50 155 127 54 154 129 46 156 125 56 158 127 55
-156 125 56 156 128 53 110 92 61 59 59 56 57 60 70 58 65 69 202 204 206 255 254 255
-253 253 253 254 255 255 254 254 254 255 253 254 255 254 255 254 254 254 255 255 255 254 255 255
-255 255 253 253 253 253 125 131 132 54 64 59 53 63 60 62 65 65 128 113 57 158 125 54
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-156 126 54 158 126 53 72 76 65 58 62 63 57 63 63 202 206 211 255 253 254 156 160 157
-58 62 63 58 64 64 101 91 62 155 126 57 158 125 54 156 126 54 156 124 53 156 126 54
-158 125 54 156 126 54 156 125 56 155 127 54 128 113 57 58 62 65 58 62 65 104 112 110
-254 255 251 253 253 255 145 151 154 59 64 62 57 60 70 94 90 61 154 129 46 157 124 59
-158 125 54 155 126 57 152 124 51 166 129 59 157 124 59 152 124 51 156 128 53 157 124 59
-62 65 65 62 66 56 62 61 67 113 113 120 253 255 254 253 255 254 254 254 253 254 255 251
-254 255 251 255 255 253 254 254 254 253 253 255 254 255 255 255 255 255 255 255 253 254 255 251
-255 255 255 255 255 253 255 255 253 255 255 255 253 253 255 241 240 247 140 141 138 57 60 56
-58 62 65 59 64 62 57 61 64 60 64 65 57 61 64 57 60 56 59 64 62 97 100 105
-241 240 247 254 255 255 253 253 253 253 253 253 255 255 255 59 60 62 58 64 64 57 63 63
-211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45
-210 105 40 210 99 44 213 100 46 211 104 39 97 78 60 59 60 70 59 59 56 71 81 83
-224 220 212 253 255 254 249 254 254 255 255 253 255 253 254 253 255 254 249 254 254 254 251 249
-253 255 254 254 255 251 250 252 254 219 227 224 81 77 81 58 62 65 57 58 61 97 78 60
-212 101 45 210 99 51 207 105 38 210 99 44 213 100 46 207 105 48 207 105 48 210 102 46
-208 103 45 210 105 51 128 93 57 58 65 69 57 60 56 97 100 105 253 255 254 254 251 249
-230 230 230 57 63 61 58 59 68 58 66 61 185 105 60 207 99 48 213 105 46 213 103 41
-209 105 45 210 99 51 209 105 45 216 99 44 208 103 45 212 104 43 185 105 60 53 64 53
-53 63 60 56 66 64 125 131 132 255 254 255 253 253 255 248 254 252 248 254 252 254 251 254
-254 255 251 254 255 251 249 254 254 253 255 254 253 252 247 254 255 255 202 206 211 62 61 67
-59 60 64 66 60 61 112 79 60 217 105 50 213 103 41 210 105 51 208 103 45 212 104 43
-208 103 45 212 101 45 211 99 45 207 105 38 213 103 41 97 78 60 59 60 64 59 64 62
-172 178 183 255 254 255 104 112 110 57 63 61 58 62 63 155 104 59 210 102 46 211 102 45
-208 103 45 212 101 45 211 102 45 212 101 45 211 102 45 211 102 45 212 101 45 112 79 60
-56 66 64 57 63 63 156 160 157 254 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-156 160 157 58 62 65 57 63 63 112 79 60 212 101 45 208 103 45 212 101 45 210 102 46
-212 101 45 208 103 45 212 101 45 211 102 45 211 102 45 112 79 60 58 62 65 57 63 61
-156 160 157 253 253 255 254 252 250 152 161 158 62 66 56 56 66 64 97 78 60 213 103 41
-210 99 44 210 105 51 209 99 39 211 104 39 210 105 51 209 99 39 209 105 45 213 105 50
-198 102 49 71 68 65 58 62 63 58 59 68 110 110 107 249 254 246 255 254 255 254 255 255
-253 255 254 249 254 254 253 255 254 251 251 251 254 255 251 254 255 251 255 255 253 255 255 255
-255 253 254 254 254 254 249 254 246 254 252 244 254 255 251 253 253 255 241 240 247 145 151 154
-58 62 63 58 66 61 60 64 65 58 59 68 56 66 64 59 64 62 66 60 61 50 65 64
-97 100 105 241 240 247 255 253 254 254 255 251 253 255 254
-253 253 253 125 131 132 0 3 1 4 1 5 0 1 1 142 120 69 173 145 52 169 144 61
-169 141 58 166 144 56 166 144 56 169 141 58 164 134 50 173 145 52 169 144 61 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 138 59
-169 141 58 169 141 58 169 141 58 166 144 56 169 141 58 169 144 61 169 138 59 156 128 53
-149 124 55 149 124 55 147 124 59 147 124 59 149 124 55 147 124 59 147 124 59 158 134 59
-173 142 59 169 141 58 109 102 83 81 77 81 254 255 251 255 254 255 254 255 251 252 252 252
-255 255 255 255 255 255 251 251 251 255 255 255 254 254 254 255 255 255 254 254 254 255 255 255
-213 212 223 48 49 51 0 1 1 140 141 138 252 252 252 255 255 255 253 253 253 255 255 255
-252 252 252 255 255 255 251 251 251 255 255 255 255 255 253 252 252 252 255 255 255 253 253 253
-255 255 255 255 255 255 254 254 254 254 254 254 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 254 254 254 253 253 253 253 253 253 255 255 255 255 255 255 251 251 251
-254 254 254 252 252 252 255 255 255 255 255 255 255 255 255 21 19 24 0 0 0 21 19 24
-160 163 161 254 254 254 255 255 255 252 252 252 255 255 255 253 253 253 255 255 255 254 254 254
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 253 152 161 158 60 64 65 57 63 61 101 91 62
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-155 127 54 159 126 56 155 128 52 152 124 51 85 80 60 53 60 64 57 63 61 56 66 64
-187 189 188 254 254 253 255 255 253 254 255 251 254 255 251 253 252 247 255 253 254 254 250 255
-252 252 252 249 254 254 140 141 138 59 64 62 53 63 60 69 60 69 128 93 57 158 124 54
-159 126 56 156 124 53 158 134 59 158 124 54 152 124 51 155 127 54 157 124 59 157 126 52
-157 126 52 110 92 61 59 64 62 58 62 65 97 100 105 253 255 254 251 251 251 172 178 183
-57 63 61 58 66 61 72 76 65 152 127 56 156 124 53 159 126 56 157 124 59 156 126 54
-159 126 56 156 125 56 156 125 56 158 126 53 152 127 56 94 90 61 68 69 75 56 66 64
-58 65 69 152 161 158 251 251 251 254 255 251 254 255 251 252 252 252 253 253 255 253 255 254
-254 255 251 254 252 251 255 255 255 254 254 255 255 255 255 255 255 253 250 250 247 255 255 253
-241 240 247 125 131 132 62 66 62 57 61 64 62 61 67 62 61 67 62 61 67 71 72 69
-71 68 65 62 65 65 54 64 59 54 64 59 58 68 63 125 131 132 254 255 255 254 255 251
-254 254 254 145 151 154 58 64 64 58 62 65 85 80 60 157 127 54 155 128 52 157 124 59
-157 126 52 156 125 56 156 128 53 158 126 53 158 124 56 156 129 45 156 128 53 128 99 63
-57 60 70 54 64 59 58 65 54 88 95 83 241 240 247 254 252 251 254 255 251 254 255 251
-254 255 255 254 254 255 253 252 247 254 255 251 255 255 255 213 212 223 97 100 105 57 63 61
-58 65 69 66 60 61 147 124 59 159 126 56 156 124 53 156 128 53 158 127 55 156 124 53
-155 127 54 158 124 56 155 127 54 158 125 54 156 125 56 155 128 52 128 113 57 58 62 65
-58 62 65 110 110 107 254 252 251 254 255 255 172 178 183 58 64 64 59 59 56 72 76 65
-157 126 52 158 134 59 152 124 51 159 126 56 157 127 54 156 125 56 155 128 52 156 126 54
-157 127 54 162 124 55 156 125 56 72 76 65 58 65 69 57 63 61 71 72 69 202 204 206
-255 254 255 254 252 250 254 255 251 253 252 247 249 254 246 253 252 247 254 252 251 255 254 255
-254 254 255 145 151 154 57 63 61 56 66 64 62 65 65 101 91 62 158 134 59 161 124 50
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-156 126 54 158 126 53 72 76 65 58 62 63 57 63 63 202 206 211 255 253 254 156 160 157
-58 62 63 58 64 64 101 91 62 155 126 57 158 125 54 156 126 54 156 124 53 156 126 54
-158 125 54 156 126 54 156 125 56 155 127 54 128 113 57 58 62 65 58 62 65 104 112 110
-255 253 254 254 255 251 187 189 188 57 60 56 58 65 69 62 66 56 147 124 59 161 124 50
-156 124 53 157 124 59 156 128 53 152 124 44 158 125 54 155 126 57 155 127 54 157 126 52
-109 102 83 66 60 61 58 59 64 58 65 69 125 131 132 241 240 247 253 253 255 254 254 254
-255 254 255 254 254 255 254 252 251 255 255 253 254 255 251 255 255 253 253 253 255 253 253 255
-249 254 254 249 254 254 255 254 255 241 240 247 156 160 157 68 69 75 58 62 65 62 65 65
-58 62 63 62 61 67 62 66 62 71 72 69 62 66 62 57 60 70 58 65 69 57 60 70
-97 100 105 254 255 255 252 252 252 255 255 255 253 253 253 62 65 65 58 62 63 58 64 64
-211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45
-208 103 45 209 105 45 210 105 51 213 105 50 198 102 49 62 66 56 62 65 65 53 64 53
-71 72 69 213 212 223 255 254 255 251 251 251 254 255 251 254 252 250 254 251 249 254 252 250
-255 253 254 248 254 252 219 227 224 97 100 105 57 60 56 58 65 69 72 73 56 198 102 49
-212 104 43 210 102 46 209 99 39 219 98 50 213 105 50 210 105 40 212 101 45 212 98 39
-211 104 39 213 105 46 97 78 60 53 60 64 56 64 62 178 172 162 253 252 247 255 254 255
-255 255 253 97 100 105 54 67 66 62 66 56 128 93 57 216 99 44 208 103 45 211 102 45
-213 103 41 210 99 44 210 105 40 213 103 41 210 102 46 212 98 39 210 99 51 128 93 57
-58 65 69 57 58 61 54 64 59 125 131 132 254 254 254 253 252 247 255 255 253 255 253 254
-254 251 249 254 250 255 255 255 253 253 252 247 254 255 255 224 220 212 72 76 65 56 66 64
-54 67 66 72 76 65 210 105 51 212 101 45 208 103 45 208 103 45 213 100 46 216 99 44
-212 101 45 212 98 39 213 105 50 208 103 45 174 105 47 59 60 64 59 64 62 58 64 64
-230 230 230 255 253 254 104 112 110 59 64 62 62 65 65 155 104 59 210 102 46 213 105 46
-208 103 45 212 101 45 211 102 45 212 101 45 211 102 45 211 102 45 212 101 45 112 79 60
-56 66 64 57 63 63 156 160 157 254 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-156 160 157 58 62 65 57 63 63 112 79 60 212 101 45 208 103 45 212 101 45 210 102 46
-212 101 45 208 103 45 212 101 45 211 102 45 211 102 45 112 79 60 58 62 65 57 63 61
-154 157 157 253 253 255 254 252 251 219 227 224 59 60 62 57 63 63 66 60 61 174 105 47
-212 104 43 200 101 40 217 98 38 207 99 48 210 102 46 213 105 46 213 100 46 207 105 38
-209 105 45 155 104 59 54 67 66 62 66 56 57 58 61 113 113 120 242 238 229 253 252 247
-254 252 251 255 253 254 253 253 255 255 255 255 253 253 253 254 254 254 253 255 254 253 255 254
-255 255 253 254 251 252 255 254 255 254 250 255 253 253 255 156 160 157 71 72 69 54 64 59
-57 63 63 58 62 65 50 65 64 71 68 65 71 68 65 54 64 59 62 66 62 66 60 61
-54 67 66 97 100 105 241 240 247 249 252 251 253 255 254
-253 253 255 178 172 162 0 3 1 0 1 1 4 1 5 62 66 62 169 144 61 166 144 56
-169 141 58 169 144 61 166 144 56 173 142 59 169 144 61 166 144 56 169 141 58 169 138 59
-169 141 58 169 141 58 169 138 59 169 138 59 169 141 58 169 141 58 169 138 59 169 138 59
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 158 134 59 152 127 56 149 124 55
-147 124 59 147 124 59 147 124 59 147 124 59 149 124 55 147 124 59 147 124 59 165 143 59
-169 141 58 173 138 52 59 59 56 97 100 105 255 255 255 254 252 251 254 255 255 255 255 253
-252 252 252 253 253 253 255 255 255 253 253 253 253 253 253 255 255 255 255 255 255 255 255 255
-251 251 251 241 240 247 88 95 83 0 0 0 71 72 69 213 212 223 255 255 255 255 255 255
-255 255 255 254 254 254 255 255 255 255 255 255 254 254 254 255 255 255 253 253 253 255 255 255
-254 254 254 255 255 255 255 255 255 255 255 255 254 254 254 255 255 255 255 255 255 255 255 255
-252 252 252 253 253 253 255 255 255 255 255 255 254 254 254 254 254 254 255 255 255 255 255 255
-255 255 255 253 253 253 255 255 255 255 255 255 140 141 138 4 1 5 71 72 69 254 254 254
-253 253 253 255 255 255 254 254 254 255 255 255 252 252 252 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 253 152 161 158 60 64 65 57 63 61 101 91 62
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-152 127 56 156 126 54 156 124 53 156 128 53 149 124 55 71 72 69 53 67 71 54 64 59
-57 61 64 140 141 138 230 230 230 255 255 253 251 251 251 249 254 246 254 255 251 249 254 246
-202 204 206 97 100 105 62 61 67 57 60 56 50 65 62 94 90 61 159 126 56 158 124 53
-158 124 56 156 128 53 152 124 44 158 125 54 158 127 55 152 124 51 155 127 54 157 124 59
-155 126 57 71 68 65 59 64 62 58 65 69 160 163 161 252 252 252 253 255 254 230 230 230
-58 66 61 58 59 68 56 64 62 128 113 57 159 126 56 157 126 52 157 124 59 157 126 52
-158 125 54 157 124 59 158 127 55 159 126 56 152 124 44 149 124 55 84 69 58 58 62 65
-57 61 64 58 62 65 104 112 110 202 204 206 253 252 247 254 255 251 253 255 254 249 252 251
-252 252 252 255 255 255 255 255 253 253 252 247 250 252 246 254 255 251 230 230 230 140 141 138
-71 72 69 58 62 65 59 59 56 57 60 56 50 65 64 72 76 65 128 113 57 161 124 50
-150 126 55 110 92 61 71 65 56 69 60 69 53 64 53 59 59 56 202 204 206 253 253 253
-254 250 255 202 204 206 57 63 63 57 63 63 62 66 62 147 124 59 158 127 55 155 126 57
-157 126 52 156 125 56 157 127 54 157 126 52 162 124 55 162 124 55 157 126 52 155 126 57
-113 104 59 66 60 61 58 59 68 56 64 62 68 69 75 187 189 188 253 252 247 254 254 255
-250 252 254 254 254 253 255 254 255 252 252 252 160 163 161 72 76 65 57 61 64 62 61 67
-60 60 63 128 99 63 152 124 44 156 128 53 156 128 53 156 125 56 156 124 53 158 127 55
-155 127 54 158 124 56 155 127 54 158 125 54 156 125 56 155 128 52 128 113 57 58 62 65
-58 62 65 110 110 107 254 254 254 253 253 253 230 230 230 57 61 64 57 63 61 57 63 61
-147 124 59 157 124 59 156 128 53 157 124 59 158 125 54 158 124 56 158 127 55 156 126 54
-158 124 54 152 124 44 166 129 59 147 124 59 57 63 61 58 65 69 59 59 56 58 64 64
-156 160 157 241 240 247 255 254 255 255 254 255 253 253 255 254 255 255 254 255 255 202 204 206
-104 112 110 57 60 56 58 65 54 58 62 65 71 72 69 152 127 56 161 124 50 162 125 53
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-156 126 54 158 126 53 72 76 65 58 62 63 57 63 63 202 206 211 255 253 254 156 160 157
-58 62 63 58 64 64 101 91 62 155 126 57 158 125 54 156 126 54 156 124 53 156 126 54
-158 125 54 156 126 54 156 125 56 155 127 54 128 113 57 58 62 65 58 62 65 104 112 110
-253 253 255 254 255 251 255 254 255 81 77 81 57 63 63 62 61 67 101 91 62 156 129 45
-159 126 56 155 128 52 155 128 52 155 128 52 158 127 55 156 124 53 158 127 55 157 126 52
-152 124 51 94 90 61 53 63 60 57 60 56 57 63 61 81 77 81 187 189 188 254 255 255
-253 255 254 253 255 254 253 253 253 253 253 253 249 252 251 255 255 253 253 255 254 253 255 254
-254 255 255 241 240 247 160 163 161 68 69 75 60 61 69 59 59 56 62 66 56 50 65 62
-71 72 69 110 92 61 158 132 49 156 126 54 113 104 59 72 76 65 53 60 64 58 65 54
-59 64 62 160 163 161 253 253 253 253 253 253 253 253 253 59 60 62 58 64 64 58 64 64
-211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45
-216 99 44 213 105 50 210 99 44 207 105 38 212 98 39 155 104 59 58 64 64 54 67 66
-58 64 64 68 69 75 160 163 161 254 255 251 254 252 251 253 253 255 253 255 254 253 255 254
-254 255 251 172 178 183 68 69 75 58 66 61 58 62 65 53 63 60 142 101 66 213 103 41
-210 99 44 208 103 45 212 98 39 213 100 52 210 99 44 212 98 39 212 101 45 211 102 45
-212 98 39 185 105 60 57 63 61 57 63 63 54 67 66 242 238 229 254 255 251 254 255 255
-255 253 254 172 178 183 54 64 59 57 63 61 72 73 56 210 105 51 208 103 45 209 105 45
-212 101 45 208 103 45 209 105 45 216 99 44 210 102 46 209 99 39 216 99 44 198 102 49
-84 69 58 62 66 56 58 65 69 57 58 61 110 110 107 202 204 206 253 253 255 253 255 254
-255 254 255 254 255 251 253 252 247 241 240 247 160 163 161 60 64 65 57 63 61 56 66 64
-71 68 65 174 105 47 213 103 41 216 99 44 211 104 39 212 101 45 210 102 46 216 99 44
-213 100 46 210 102 46 210 102 46 213 105 46 128 93 57 59 64 62 56 66 64 104 112 110
-255 255 255 251 251 251 104 112 110 57 63 61 58 64 64 155 104 59 210 102 46 211 102 45
-208 103 45 212 101 45 211 102 45 212 101 45 211 102 45 211 102 45 212 101 45 112 79 60
-56 66 64 57 63 63 156 160 157 254 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-156 160 157 58 62 65 57 63 63 112 79 60 212 101 45 208 103 45 212 101 45 210 102 46
-212 101 45 208 103 45 212 101 45 211 102 45 211 102 45 112 79 60 58 62 65 57 63 61
-154 157 157 253 255 254 254 255 251 253 253 253 81 77 81 58 62 65 60 64 65 128 93 57
-211 102 45 213 105 46 210 102 46 211 99 45 210 102 46 213 105 50 209 99 39 208 103 45
-212 98 39 216 99 44 97 78 60 50 65 62 59 59 56 51 61 71 71 81 83 172 178 183
-254 255 251 248 254 252 253 255 254 248 254 252 253 255 254 252 252 252 253 253 255 250 252 254
-253 255 254 250 252 246 242 238 229 172 178 183 88 95 83 58 62 63 59 64 62 58 65 69
-62 61 67 71 68 65 155 104 59 210 102 46 213 105 46 155 104 59 72 76 65 62 61 67
-56 66 64 62 65 65 154 157 157 253 255 254 249 254 254
-255 254 255 242 238 229 4 1 5 4 2 1 0 1 1 0 1 1 142 120 69 164 144 50
-169 138 59 173 142 59 169 141 58 169 138 59 169 144 61 164 144 50 169 141 58 169 138 59
-169 141 58 169 141 58 169 138 59 169 138 59 169 141 58 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 168 136 64 158 134 59 149 124 55 147 124 59 147 124 59
-149 124 55 147 124 59 147 124 59 147 124 59 147 124 59 149 124 55 159 134 56 169 144 61
-169 138 59 169 144 61 21 19 24 88 95 83 249 254 254 254 255 255 253 253 253 255 254 255
-255 255 255 253 253 253 255 255 255 254 254 254 255 255 255 252 252 252 253 253 253 255 255 255
-255 255 255 251 251 251 241 240 247 140 141 138 0 0 0 0 1 1 113 113 120 230 230 230
-251 251 251 255 255 255 254 254 254 252 252 252 255 255 255 252 252 252 254 254 254 255 255 255
-255 255 255 254 254 254 254 254 254 254 254 254 255 255 255 255 255 255 254 254 254 253 253 253
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 253 253 253 255 255 255 241 240 247 88 95 83 0 0 0 219 227 224 255 255 255
-255 255 255 255 255 255 252 252 252 255 255 255 255 255 255 253 253 253 255 255 255 253 253 253
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 253 152 161 158 60 64 65 57 63 61 101 91 62
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-158 126 53 155 127 54 157 124 59 150 128 52 158 124 56 128 113 57 71 68 65 58 62 63
-60 64 65 58 62 63 60 60 63 97 100 105 145 151 154 160 163 161 125 131 132 81 77 81
-62 61 67 57 61 64 56 66 64 53 67 71 85 80 60 152 127 56 156 124 53 150 128 52
-158 124 54 158 126 53 152 124 51 159 126 56 156 126 54 154 129 46 158 127 55 158 124 53
-113 104 59 58 65 69 59 64 62 57 61 64 230 230 230 254 251 252 248 254 252 253 253 255
-113 113 120 58 65 69 53 60 64 84 69 58 159 126 56 158 125 54 158 124 54 158 126 53
-156 125 56 157 126 52 159 126 56 152 124 51 159 126 56 159 126 56 147 124 59 72 73 56
-60 60 63 59 64 62 57 63 61 54 64 59 97 100 105 160 163 161 202 204 206 230 230 230
-254 255 251 255 255 253 254 252 251 202 206 211 172 178 183 113 113 120 58 65 69 53 60 64
-57 63 63 57 60 56 62 70 69 72 76 65 128 113 57 156 125 56 158 127 55 158 124 56
-161 125 43 158 127 55 150 126 55 66 60 61 58 62 63 58 65 69 113 113 120 253 255 254
-254 254 255 254 255 251 71 81 83 59 60 64 57 63 61 101 91 62 161 124 50 157 126 52
-158 124 54 156 125 56 158 127 55 156 124 53 159 126 56 159 126 56 156 124 53 157 126 52
-155 128 52 110 92 61 62 65 65 58 65 69 53 64 53 62 66 62 68 69 75 110 110 107
-152 161 158 156 160 157 113 113 120 68 69 75 57 60 70 54 67 66 58 66 61 58 62 65
-110 92 61 156 128 53 162 124 55 155 127 54 157 127 54 156 124 53 156 126 54 157 126 52
-155 127 54 158 124 56 155 127 54 158 125 54 156 125 56 155 128 52 128 113 57 58 62 65
-60 64 65 97 100 105 255 255 255 252 252 252 254 255 255 97 100 105 57 61 64 57 63 63
-110 92 61 155 128 52 159 126 56 152 124 51 158 127 55 156 124 53 157 124 59 157 126 52
-157 127 54 159 126 56 157 126 52 149 124 55 128 113 57 62 66 62 50 65 64 58 62 65
-57 63 61 57 63 61 104 112 110 145 151 154 152 161 158 140 141 138 81 77 81 57 58 61
-57 63 61 54 67 66 58 64 64 71 68 65 147 124 59 156 128 53 157 124 59 156 124 53
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-156 126 54 158 126 53 72 76 65 58 62 63 57 63 63 202 206 211 255 253 254 156 160 157
-58 62 63 58 64 64 101 91 62 155 126 57 158 125 54 156 126 54 156 124 53 156 126 54
-158 125 54 156 126 54 156 125 56 155 127 54 128 113 57 58 62 65 58 62 65 104 112 110
-254 254 254 253 255 254 255 253 254 156 160 157 60 64 65 58 64 64 71 68 65 148 133 63
-161 124 50 159 126 56 155 126 57 156 125 56 159 126 56 157 126 52 156 124 53 157 124 59
-159 126 56 152 124 51 97 78 60 54 67 66 58 68 63 59 64 62 58 65 54 81 77 81
-140 141 138 187 189 188 230 230 230 255 253 254 255 254 255 254 254 253 224 220 212 172 178 183
-113 113 120 57 63 61 58 66 61 57 63 61 57 60 56 60 64 65 71 65 56 110 92 61
-158 124 56 157 124 59 158 126 53 158 124 53 159 126 56 150 126 55 85 80 60 58 66 61
-60 64 65 81 77 81 253 255 254 255 255 255 254 254 254 59 64 62 62 70 69 57 63 61
-211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45
-212 104 43 212 104 43 213 105 50 217 104 40 210 105 51 212 104 43 142 101 66 57 63 63
-58 65 54 60 64 65 58 62 63 71 72 69 110 110 107 156 160 157 154 157 157 113 113 120
-68 69 75 59 59 56 58 65 54 57 63 61 58 64 64 142 101 66 200 101 40 216 99 44
-211 99 45 209 105 45 208 103 45 210 102 46 212 101 45 217 105 50 207 99 48 207 105 48
-217 105 50 112 79 60 54 64 59 62 66 62 104 112 110 253 253 255 254 254 253 254 255 251
-254 255 255 241 240 247 71 72 69 58 64 64 57 60 56 142 101 66 217 98 38 208 103 45
-211 102 45 209 105 45 213 105 50 213 100 46 210 102 46 208 103 45 208 103 45 217 104 40
-198 102 49 84 69 58 58 62 65 66 60 61 59 60 62 58 62 65 97 100 105 125 131 132
-152 161 158 140 141 138 113 113 120 53 63 60 54 67 66 58 62 65 62 61 67 62 70 69
-155 104 59 213 100 46 208 103 45 212 104 43 210 99 44 216 99 44 210 102 46 207 105 38
-208 103 45 213 103 41 208 103 45 210 99 51 59 64 62 62 65 65 62 66 56 187 189 188
-253 253 255 255 253 254 104 112 110 59 64 62 58 62 63 155 104 59 213 105 50 211 102 45
-208 103 45 212 101 45 211 102 45 212 101 45 211 102 45 211 102 45 212 101 45 112 79 60
-56 66 64 57 63 63 156 160 157 254 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-156 160 157 58 62 65 57 63 63 112 79 60 212 101 45 208 103 45 212 101 45 210 102 46
-212 101 45 208 103 45 212 101 45 211 102 45 211 102 45 112 79 60 58 62 65 57 63 61
-156 160 157 253 255 254 253 252 247 254 252 251 178 172 162 60 64 65 53 60 64 71 65 56
-198 102 49 208 103 45 213 105 46 210 102 46 211 104 39 208 103 45 216 99 44 210 102 46
-213 105 46 213 100 46 213 100 46 97 78 60 57 63 61 59 60 64 60 61 69 56 64 62
-81 77 81 145 151 154 187 189 188 219 227 224 250 250 247 254 255 251 254 255 251 224 220 212
-172 178 183 140 141 138 71 72 69 62 65 65 57 63 61 57 60 56 59 64 62 66 60 61
-142 101 66 211 104 39 208 103 45 210 105 51 209 105 45 213 105 50 212 101 45 97 78 60
-59 60 62 57 60 56 71 72 69 253 255 254 253 255 254
-253 253 255 249 254 254 97 100 105 0 0 0 4 1 5 0 0 0 21 19 24 168 136 64
-169 141 58 166 134 56 173 145 52 169 138 59 169 138 59 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 138 59 169 141 58 169 141 58 166 144 56 169 141 58 169 141 58
-169 141 58 169 138 59 158 134 59 155 126 57 147 124 59 147 124 59 147 124 59 147 124 59
-147 124 59 147 124 59 149 124 53 147 124 59 147 124 59 158 127 55 169 141 58 169 138 59
-173 142 59 142 120 69 0 3 1 71 72 69 249 254 254 253 255 254 250 247 249 230 230 230
-230 230 230 253 253 253 255 255 255 253 253 253 254 254 254 255 255 255 252 252 252 255 255 255
-252 252 252 255 255 255 254 254 254 255 255 255 230 230 230 97 100 105 0 1 1 0 1 1
-110 110 107 219 227 224 253 253 253 255 255 255 254 254 254 255 255 255 253 253 253 254 254 254
-252 252 252 253 253 253 255 255 255 255 255 255 255 255 255 253 253 253 254 254 254 255 255 255
-253 253 253 254 254 254 255 255 255 254 254 254 253 253 253 255 255 255 255 255 255 253 253 253
-253 253 253 255 255 255 255 255 255 125 131 132 0 0 0 125 131 132 254 254 254 255 255 255
-254 254 254 255 255 255 255 255 255 251 251 251 255 255 255 255 255 255 252 252 252 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 253 152 161 158 60 64 65 57 63 61 101 91 62
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-158 124 53 158 127 55 157 124 59 161 124 50 162 125 53 155 126 57 149 124 55 85 80 60
-57 63 61 57 63 61 54 64 59 56 64 62 60 64 65 57 61 64 62 61 67 60 64 65
-58 65 69 62 61 67 57 63 61 94 90 61 158 127 55 162 124 55 158 127 55 155 128 52
-156 126 54 158 124 56 158 124 56 158 124 56 156 129 45 157 126 52 157 124 59 155 127 54
-72 73 56 62 65 65 57 63 61 125 131 132 254 254 255 255 254 255 248 254 252 255 255 255
-202 206 211 57 58 61 62 70 69 57 60 56 128 99 63 161 124 50 157 126 52 157 126 52
-154 129 46 158 127 55 158 124 54 157 124 59 159 126 56 152 124 44 155 126 57 147 124 59
-94 90 61 62 66 56 62 61 67 57 60 70 60 64 65 57 60 56 59 64 62 58 59 64
-57 60 70 57 61 64 62 65 65 57 60 56 57 63 61 62 65 65 57 60 56 62 65 65
-60 64 65 71 68 65 110 92 61 156 125 56 158 126 53 159 126 56 156 124 53 155 126 57
-154 129 46 155 126 57 158 127 55 101 91 62 60 64 65 54 67 66 62 61 67 249 254 254
-254 255 251 255 255 255 178 172 162 60 60 63 59 60 64 71 72 69 157 124 59 161 125 43
-158 124 56 159 126 56 158 127 55 156 125 56 156 124 53 158 125 54 158 124 54 156 126 54
-157 124 59 152 127 56 110 92 61 66 60 61 56 66 64 53 64 53 58 66 61 58 62 65
-58 65 69 57 63 61 58 64 64 56 66 64 56 66 64 58 62 65 71 65 56 113 104 59
-152 127 56 159 126 56 166 129 59 152 124 51 159 126 56 158 124 53 159 126 56 157 126 52
-155 127 54 158 124 56 155 127 54 158 125 54 156 125 56 155 128 52 128 113 57 58 62 65
-60 64 65 104 112 110 255 255 253 255 255 253 255 255 255 172 178 183 53 63 60 56 66 64
-71 68 65 151 135 55 156 124 53 155 128 52 156 128 53 155 126 57 155 128 52 162 124 55
-149 124 53 158 124 53 155 126 57 166 129 59 155 126 57 128 113 57 72 76 65 62 66 62
-57 63 61 62 65 65 59 64 62 59 60 62 62 66 62 57 60 56 57 63 61 56 66 64
-60 61 69 62 65 65 85 80 60 147 124 59 155 128 52 155 128 52 155 128 52 155 126 57
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-156 126 54 158 126 53 72 76 65 58 62 63 57 63 63 202 206 211 255 253 254 156 160 157
-58 62 63 58 64 64 101 91 62 155 126 57 158 125 54 156 126 54 156 124 53 156 126 54
-158 125 54 156 126 54 156 125 56 155 127 54 128 113 57 58 62 65 58 62 65 104 112 110
-255 255 253 250 252 254 254 255 251 241 240 247 68 69 75 58 66 61 58 65 69 110 92 61
-158 132 49 157 124 59 157 124 59 157 126 52 157 124 59 157 124 59 156 124 53 158 127 55
-156 126 54 158 124 54 158 127 55 110 92 61 59 64 62 54 64 59 68 69 75 53 60 64
-58 62 65 60 64 65 57 63 61 57 63 61 57 60 56 59 64 62 58 62 63 58 62 65
-56 66 64 58 62 63 57 63 61 54 67 66 62 66 62 101 91 62 157 124 59 162 124 55
-162 124 55 159 126 56 162 124 52 162 125 53 156 124 53 155 128 52 128 99 63 58 59 64
-57 63 63 60 64 65 213 212 223 253 253 253 254 254 254 59 60 62 58 62 63 57 63 63
-211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45
-210 102 46 211 104 39 210 99 51 207 99 48 213 100 52 210 105 40 213 105 46 155 104 59
-66 60 61 58 62 65 53 67 71 58 65 69 57 63 61 53 63 60 56 66 64 62 65 65
-59 64 62 58 62 65 57 60 70 62 70 69 155 104 59 208 103 45 213 105 50 213 100 46
-213 100 46 213 100 46 208 103 45 208 103 45 213 105 46 213 105 50 207 99 38 213 103 41
-185 105 60 57 60 70 60 64 65 57 63 63 187 189 188 255 255 253 254 255 255 252 252 252
-254 255 251 248 254 252 160 163 161 59 59 56 58 65 69 62 65 65 209 99 39 213 105 46
-211 102 45 212 101 45 213 100 46 207 99 48 211 102 45 213 105 46 208 103 45 211 102 45
-213 105 50 198 102 49 97 78 60 54 67 66 59 60 62 56 66 64 59 64 62 59 64 62
-53 67 71 59 64 62 57 63 61 62 66 62 62 66 56 56 66 64 84 69 58 174 105 47
-217 104 40 210 99 51 217 105 50 207 99 48 209 105 45 211 102 45 210 102 46 210 105 40
-208 103 45 209 99 39 212 104 43 112 79 60 62 61 67 57 63 61 81 77 81 249 254 254
-253 253 255 255 254 255 104 112 110 62 65 65 58 62 63 155 104 59 213 105 50 211 102 45
-208 103 45 212 101 45 211 102 45 212 101 45 211 102 45 211 102 45 212 101 45 112 79 60
-56 66 64 57 63 63 156 160 157 254 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-156 160 157 58 62 65 57 63 63 112 79 60 212 101 45 208 103 45 212 101 45 210 102 46
-212 101 45 208 103 45 212 101 45 211 102 45 211 102 45 112 79 60 58 62 65 57 63 61
-156 160 157 253 255 254 253 252 247 255 255 253 241 240 247 71 72 69 62 70 69 53 60 64
-128 93 57 217 104 40 208 103 45 211 102 45 217 104 40 213 103 41 210 99 44 213 100 46
-210 102 46 207 99 38 217 104 40 209 105 45 128 93 57 62 70 69 53 60 64 62 65 65
-62 61 67 62 61 67 58 62 63 60 64 65 62 66 62 57 58 61 57 61 64 53 60 64
-57 63 61 57 63 63 58 62 65 57 58 61 54 67 66 62 65 65 128 93 57 198 102 49
-210 99 51 217 104 40 208 103 45 213 103 41 209 99 39 212 101 45 219 98 50 174 105 47
-59 64 62 62 65 65 59 64 62 202 204 206 255 255 255
-254 252 251 254 251 252 187 189 188 4 1 5 0 1 1 4 1 5 4 1 5 84 69 58
-158 134 59 166 144 56 166 144 56 173 145 52 169 141 58 168 136 64 166 144 56 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-159 134 56 159 134 56 149 124 55 147 124 59 147 124 59 147 124 59 147 124 59 147 124 59
-147 124 59 147 124 59 147 124 59 147 124 59 158 134 59 173 142 59 169 141 58 166 144 56
-168 136 64 88 95 83 21 19 24 4 1 5 213 212 223 250 252 246 250 250 247 213 212 223
-224 220 212 224 220 212 230 230 230 255 255 255 255 255 255 251 251 251 255 255 255 254 254 254
-255 255 255 254 254 254 251 251 251 251 251 251 255 255 255 253 253 253 202 204 206 97 100 105
-0 1 1 0 0 0 81 77 81 178 172 162 253 253 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 254 254 254 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 254 254 254
-255 255 255 241 240 247 113 113 120 4 2 1 48 49 51 255 255 255 253 253 253 251 251 251
-255 255 255 253 253 253 254 254 254 255 255 255 255 255 255 253 253 253 254 254 254 254 254 254
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 253 152 161 158 60 64 65 57 63 61 101 91 62
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-159 126 56 156 126 54 162 125 53 156 129 45 154 129 46 157 126 52 157 124 59 147 124 59
-109 102 83 85 80 60 62 65 65 53 60 64 54 67 66 54 64 59 57 63 61 60 64 65
-59 59 56 94 90 61 149 124 53 158 127 55 162 124 55 158 124 54 157 124 59 161 124 50
-156 125 56 158 127 55 157 124 59 156 124 53 166 129 59 158 124 53 155 128 52 128 99 63
-58 64 64 59 59 56 58 67 65 230 230 230 255 254 255 250 247 249 254 255 251 253 253 253
-255 255 253 104 112 110 57 60 56 60 64 65 72 73 56 157 124 59 155 128 52 158 125 54
-158 127 55 158 126 53 158 124 56 155 128 52 154 129 46 158 124 56 159 126 56 161 125 43
-157 127 54 128 99 63 85 80 60 60 61 69 50 65 64 50 65 62 56 64 62 60 64 65
-58 64 64 58 67 65 53 64 53 53 63 60 56 64 62 57 63 63 59 64 62 71 72 69
-113 104 59 152 127 56 156 128 53 156 124 53 156 124 53 158 134 59 155 126 57 158 125 54
-157 124 59 166 129 59 156 124 53 147 124 59 57 60 70 53 60 64 58 66 61 230 230 230
-254 255 251 248 254 252 250 247 249 68 69 75 62 61 67 56 64 62 101 91 62 158 127 55
-158 125 54 158 126 53 156 124 53 158 127 55 155 128 52 154 129 46 157 127 54 157 124 59
-152 124 51 162 124 55 161 124 50 147 124 59 101 91 62 62 65 65 59 64 62 62 66 56
-60 60 63 57 60 56 62 66 56 57 63 61 71 68 65 101 91 62 149 124 55 157 126 52
-161 125 43 157 124 59 152 124 51 156 125 56 162 125 53 158 124 54 157 124 59 158 127 55
-155 127 54 158 124 56 155 127 54 158 125 54 156 125 56 155 128 52 128 113 57 58 62 65
-59 64 62 104 112 110 254 255 251 254 254 253 255 255 253 241 240 247 71 81 83 57 63 63
-58 62 65 113 104 59 155 128 52 158 126 53 156 126 54 155 127 54 154 129 46 158 124 56
-162 124 55 156 128 53 162 124 55 152 124 51 155 127 54 156 126 54 157 124 59 113 104 59
-71 72 69 57 63 61 59 64 62 56 66 64 56 66 64 56 66 64 58 64 64 58 62 65
-85 80 60 128 113 57 155 128 52 159 126 56 158 124 53 158 124 53 159 126 56 155 128 52
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-156 126 54 158 126 53 72 76 65 58 62 63 57 63 63 202 206 211 255 253 254 156 160 157
-58 62 63 58 64 64 101 91 62 155 126 57 158 125 54 156 126 54 156 124 53 156 126 54
-158 125 54 156 126 54 156 125 56 155 127 54 128 113 57 58 62 65 58 62 65 104 112 110
-254 251 252 254 255 251 255 255 253 254 255 251 154 157 157 59 64 62 53 60 64 71 65 56
-142 120 69 156 128 53 161 125 43 159 126 56 159 126 56 157 124 59 159 126 56 152 124 44
-157 126 52 158 127 55 155 127 54 156 126 54 142 120 69 94 90 61 56 64 62 59 60 62
-58 62 65 58 62 65 57 61 64 58 65 69 57 61 64 60 61 69 58 62 65 58 65 69
-58 65 54 58 62 63 71 68 65 110 92 61 147 124 59 154 129 46 156 126 54 156 124 53
-155 126 57 150 128 52 156 128 53 162 125 53 158 124 56 162 124 55 150 128 52 71 65 56
-57 63 63 58 62 63 202 206 211 255 255 255 253 253 253 62 65 65 60 64 65 57 63 63
-211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45
-211 102 45 213 105 50 217 104 40 211 104 39 217 105 50 209 99 39 212 98 39 217 98 38
-198 102 49 128 93 57 71 68 65 60 61 69 62 61 67 57 63 61 59 64 62 59 60 62
-54 64 59 69 60 69 128 93 57 200 101 40 213 105 50 208 103 45 212 98 39 213 105 50
-212 104 43 216 99 44 210 102 46 209 99 39 208 103 45 208 103 45 212 98 39 213 105 46
-97 78 60 58 65 69 57 58 61 88 95 83 254 254 254 255 255 253 253 253 255 254 255 251
-254 255 251 252 252 252 241 240 247 68 69 75 50 65 64 58 64 64 128 93 57 211 99 45
-212 104 43 216 99 44 212 101 45 208 103 45 210 105 40 217 104 40 212 101 45 212 101 45
-216 99 44 216 99 44 207 105 38 155 104 59 97 78 60 66 60 61 53 60 64 57 63 63
-59 59 56 58 62 63 62 61 67 53 60 64 71 72 69 142 101 66 213 105 46 207 105 48
-207 99 38 217 104 40 207 99 48 211 102 45 212 104 43 207 99 48 213 105 50 216 99 44
-211 99 45 216 99 44 174 105 47 54 64 59 60 60 63 53 64 53 187 189 188 255 255 253
-255 255 255 251 251 251 104 112 110 59 64 62 58 62 63 155 104 59 210 102 46 211 102 45
-208 103 45 212 101 45 211 102 45 212 101 45 211 102 45 211 102 45 212 101 45 112 79 60
-56 66 64 57 63 63 156 160 157 254 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-156 160 157 58 62 65 57 63 63 112 79 60 212 101 45 208 103 45 212 101 45 210 102 46
-212 101 45 208 103 45 212 101 45 211 102 45 211 102 45 112 79 60 58 62 65 57 63 61
-156 160 157 249 254 254 255 255 253 254 254 253 253 255 254 154 157 157 57 58 61 58 65 69
-58 65 69 185 105 60 213 103 41 208 103 45 219 98 50 216 99 44 200 101 40 212 101 45
-210 102 46 210 105 51 207 105 48 216 99 44 212 101 45 198 102 49 112 79 60 66 60 61
-57 63 61 56 66 64 60 64 65 57 61 64 60 60 63 60 60 63 62 65 65 60 60 63
-60 64 65 57 60 56 60 64 65 71 68 65 128 93 57 198 102 49 217 104 40 213 100 52
-212 104 43 209 99 39 210 99 51 211 102 45 212 104 43 210 99 51 212 104 43 207 105 48
-71 68 65 59 64 62 58 64 64 178 172 162 252 252 252
-254 255 251 254 252 251 249 252 251 97 100 105 4 2 1 4 1 5 0 0 0 4 1 5
-97 78 60 151 135 55 165 143 59 168 136 64 169 141 58 166 144 56 173 145 52 168 136 64
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 168 136 64 158 134 59
-152 127 56 149 124 55 147 124 59 147 124 59 147 124 59 147 124 59 147 124 59 147 124 59
-149 124 55 147 124 59 148 133 63 158 134 59 173 138 52 173 142 59 169 144 61 165 143 59
-142 120 69 4 2 1 137 137 94 68 58 52 125 131 132 254 255 251 253 252 247 219 227 224
-219 227 224 213 212 223 213 212 223 219 227 224 251 251 251 255 255 255 254 254 254 255 255 255
-255 255 255 253 253 253 255 255 255 255 255 255 253 253 253 255 255 255 255 255 255 255 255 255
-230 230 230 113 113 120 48 49 51 4 1 5 6 9 5 97 100 105 187 189 188 255 255 255
-254 254 254 255 255 255 255 255 255 253 253 253 253 253 253 255 255 255 255 255 255 253 253 253
-254 254 254 255 255 255 255 255 255 253 253 253 252 252 252 255 255 255 255 255 255 254 254 254
-202 204 206 71 72 69 0 0 0 48 49 51 241 240 247 253 253 253 253 253 253 255 255 255
-254 254 254 255 255 255 255 255 255 253 253 253 254 254 254 255 255 255 255 255 255 254 254 254
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 253 152 161 158 60 64 65 57 63 61 101 91 62
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-157 124 59 155 128 52 157 124 59 152 127 56 155 128 52 162 124 55 154 129 46 162 125 53
-157 124 59 149 124 55 147 124 59 128 113 57 101 91 62 101 91 62 110 92 61 113 104 59
-147 124 59 152 127 56 156 125 56 162 125 53 157 124 59 156 124 53 155 127 54 156 128 53
-158 124 56 157 126 52 158 127 55 158 127 55 156 124 53 157 124 59 147 124 59 66 60 61
-60 61 69 62 66 62 125 131 132 254 252 251 253 253 255 253 255 254 254 255 251 254 254 255
-249 252 251 219 227 224 59 64 62 60 61 69 53 64 53 101 91 62 152 127 56 156 125 56
-156 124 53 157 124 59 156 129 45 158 127 55 157 124 59 155 128 52 159 126 56 161 124 50
-156 124 53 156 128 53 155 128 52 128 113 57 113 104 59 85 80 60 72 76 65 57 63 61
-58 64 64 57 63 63 59 64 62 71 68 65 85 80 60 110 92 61 142 120 69 155 128 52
-158 127 55 156 125 56 158 124 54 162 124 55 155 126 57 152 124 51 158 127 55 152 124 44
-162 124 55 156 124 53 162 125 53 155 128 52 62 66 62 56 66 64 59 60 64 230 230 230
-255 255 253 254 255 251 250 247 249 154 157 157 59 64 62 57 63 61 71 68 65 142 120 69
-157 127 54 158 126 53 157 126 52 158 127 55 156 126 54 156 128 53 155 128 52 158 124 54
-158 126 53 155 128 52 155 126 57 156 125 56 152 124 51 152 124 51 142 120 69 110 92 61
-94 90 61 101 91 62 110 92 61 128 113 57 152 127 56 155 126 57 152 124 51 156 129 45
-159 126 56 152 124 51 158 134 59 159 126 56 154 129 46 155 126 57 158 124 56 157 126 52
-155 127 54 158 124 56 155 127 54 158 125 54 156 125 56 155 128 52 128 113 57 58 62 65
-59 64 62 104 112 110 254 255 255 253 253 253 255 255 253 254 254 253 154 157 157 59 64 62
-60 64 65 71 68 65 147 124 59 156 124 53 158 124 56 155 128 52 156 128 53 156 124 53
-159 126 56 161 124 50 155 128 52 158 127 55 155 128 52 162 125 53 158 126 53 155 127 54
-156 125 56 142 120 69 113 104 59 101 91 62 94 90 61 101 91 62 128 113 57 149 124 55
-148 133 63 156 129 45 162 124 55 159 126 56 157 124 59 161 124 50 157 124 59 152 124 51
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-156 126 54 158 126 53 72 76 65 58 62 63 57 63 63 202 206 211 255 253 254 156 160 157
-58 62 63 58 64 64 101 91 62 155 126 57 158 125 54 156 126 54 156 124 53 156 126 54
-158 125 54 156 126 54 156 125 56 155 127 54 128 113 57 58 62 65 58 62 65 104 112 110
-254 251 252 254 255 255 248 254 252 255 254 255 241 240 247 68 69 75 59 64 62 58 65 69
-85 80 60 148 133 63 162 125 53 158 124 56 158 127 55 152 124 51 158 124 56 157 126 52
-166 129 59 157 124 59 156 124 53 161 125 43 156 124 53 155 126 57 147 124 59 113 104 59
-85 80 60 72 76 65 62 66 62 59 64 62 57 58 61 59 59 56 62 66 56 72 76 65
-94 90 61 128 113 57 157 124 59 158 125 54 157 124 59 157 124 59 158 127 55 150 128 52
-158 125 54 152 124 51 156 125 56 152 124 51 152 127 56 159 126 56 152 124 51 84 69 58
-56 66 64 57 63 63 202 206 211 253 253 253 253 253 253 59 64 62 58 62 63 58 64 64
-211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45
-210 102 46 207 99 38 216 99 44 212 98 39 207 99 38 213 100 52 213 100 46 208 103 45
-212 104 43 212 104 43 207 105 48 174 105 47 142 101 66 112 79 60 112 79 60 142 101 66
-174 105 47 210 102 46 217 105 50 207 105 38 208 103 45 210 105 51 216 99 44 210 105 51
-208 103 45 216 99 44 213 105 46 213 103 41 208 103 45 208 103 45 213 105 46 155 104 59
-62 61 67 57 60 56 62 65 65 187 189 188 254 254 255 255 255 255 255 254 255 254 255 251
-254 252 250 253 255 254 254 255 251 152 161 158 53 63 60 66 60 61 53 60 64 155 104 59
-208 103 45 216 99 44 212 104 43 207 105 38 209 105 45 216 99 44 216 99 44 210 102 46
-213 105 46 211 102 45 211 99 45 209 105 45 208 103 45 198 102 49 155 104 59 128 93 57
-128 93 57 112 79 60 142 101 66 174 105 47 209 99 39 217 104 40 210 99 44 216 99 44
-213 105 46 208 103 45 213 105 46 207 105 38 210 99 51 210 102 46 213 105 50 211 99 45
-210 105 51 198 102 49 71 68 65 59 59 56 54 67 66 97 100 105 249 254 246 254 251 252
-255 255 255 251 251 251 104 112 110 59 64 62 58 62 63 155 104 59 213 105 50 211 102 45
-208 103 45 212 101 45 211 102 45 212 101 45 211 102 45 211 102 45 212 101 45 112 79 60
-56 66 64 57 63 63 156 160 157 254 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-156 160 157 58 62 65 57 63 63 112 79 60 212 101 45 208 103 45 212 101 45 210 102 46
-212 101 45 208 103 45 212 101 45 211 102 45 211 102 45 112 79 60 58 62 65 57 63 61
-156 160 157 249 252 251 253 253 255 255 254 255 254 255 251 253 255 254 88 95 83 57 63 63
-59 64 62 71 72 69 207 105 48 210 99 51 210 99 44 212 104 43 213 105 46 208 103 45
-211 102 45 207 99 48 213 100 46 213 105 46 210 99 44 208 103 45 213 105 46 198 102 49
-142 101 66 112 79 60 85 80 60 57 63 61 54 67 66 50 65 64 57 60 56 62 66 56
-85 80 60 128 93 57 174 105 47 210 105 51 209 99 39 207 105 48 207 105 48 209 99 39
-210 105 40 208 103 45 211 104 39 210 102 46 208 103 45 207 105 38 209 105 45 208 103 45
-81 77 81 59 59 56 57 58 61 187 189 188 255 254 255
-255 255 253 254 251 252 255 253 254 242 238 229 48 49 51 0 1 1 0 3 1 0 1 1
-4 1 5 85 80 60 158 134 59 173 145 52 168 136 64 169 141 58 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 159 134 56 152 127 56 147 124 59
-147 124 59 147 124 59 147 124 59 147 124 59 147 124 59 147 124 59 147 124 59 147 124 59
-158 134 59 159 134 56 166 144 56 169 144 61 169 141 58 164 144 50 168 136 64 142 120 69
-4 1 5 109 102 83 173 138 52 109 102 83 48 49 51 241 240 247 254 252 251 254 250 255
-219 227 224 213 212 223 219 227 224 224 220 212 219 227 224 251 251 251 255 255 255 253 253 253
-254 254 254 255 255 255 254 254 254 254 254 254 255 255 255 254 254 254 255 255 255 254 254 254
-254 254 254 255 255 255 241 240 247 172 178 183 113 113 120 0 1 1 0 1 1 4 2 1
-71 72 69 125 131 132 202 204 206 241 240 247 254 254 254 255 255 255 255 255 255 255 255 255
-254 254 254 255 255 255 254 254 254 254 254 254 255 255 255 241 240 247 178 172 162 97 100 105
-0 1 1 0 0 0 125 131 132 255 255 255 255 255 255 255 255 255 254 254 254 253 253 253
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 253 253 253 253 253 253 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 253 152 161 158 60 64 65 57 63 61 101 91 62
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-157 124 59 154 129 46 110 92 61 156 125 56 158 127 55 157 124 59 155 126 57 157 126 52
-155 128 52 159 126 56 158 124 56 158 124 53 161 124 50 161 124 50 158 127 55 159 126 56
-158 127 55 156 124 53 158 127 55 156 124 53 156 128 53 155 127 54 155 128 52 158 124 54
-158 125 54 158 125 54 155 128 52 157 124 59 161 125 43 156 124 53 85 80 60 56 66 64
-62 61 67 71 81 83 230 230 230 255 253 254 253 253 253 254 255 251 250 252 246 255 254 255
-255 255 253 254 255 251 160 163 161 51 61 71 54 64 59 59 64 62 128 99 63 155 128 52
-159 126 56 155 128 52 156 125 56 159 126 56 158 124 54 155 127 54 155 128 52 157 124 59
-156 126 54 156 126 54 158 125 54 159 126 56 156 125 56 157 124 59 159 126 56 156 124 53
-158 124 56 156 126 54 155 128 52 155 128 52 155 126 57 156 125 56 158 125 54 162 125 53
-158 125 54 158 126 53 156 126 54 155 127 54 158 126 53 158 126 53 156 124 53 157 124 59
-155 128 52 156 128 53 158 124 56 110 92 61 59 64 62 57 63 61 68 69 75 254 255 251
-254 252 244 254 250 255 253 255 254 249 254 246 71 81 83 62 61 67 53 64 53 85 80 60
-155 127 54 158 127 55 158 125 54 158 127 55 157 124 59 157 124 59 156 124 53 159 126 56
-155 127 54 156 125 56 158 124 54 152 124 51 157 126 52 158 127 55 156 125 56 156 128 53
-161 124 50 157 126 52 156 124 53 156 126 54 159 126 56 161 124 50 159 126 56 157 124 59
-156 126 54 155 126 57 158 124 54 158 126 53 147 124 59 155 128 52 161 124 50 158 124 56
-155 127 54 158 124 56 155 127 54 158 125 54 156 125 56 155 128 52 128 113 57 58 62 65
-57 63 61 104 112 110 253 255 254 254 255 255 254 254 254 254 254 253 250 247 249 71 72 69
-57 63 61 57 63 61 110 92 61 157 126 52 162 124 55 156 124 53 157 126 52 157 127 54
-148 128 46 159 126 56 157 124 59 150 128 52 155 127 54 161 124 50 158 125 54 155 126 57
-161 124 50 157 126 52 158 126 53 158 127 55 158 127 55 158 127 55 156 125 56 156 125 56
-162 124 55 158 126 53 155 128 52 156 124 53 156 126 54 157 124 59 154 129 46 159 126 56
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-156 126 54 158 126 53 72 76 65 58 62 63 57 63 63 202 206 211 255 253 254 156 160 157
-58 62 63 58 64 64 101 91 62 155 126 57 158 125 54 156 126 54 156 124 53 156 126 54
-158 125 54 156 126 54 156 125 56 155 127 54 128 113 57 58 62 65 58 62 65 104 112 110
-255 254 255 253 253 255 249 254 246 254 250 255 255 255 255 187 189 188 66 60 61 50 65 64
-56 66 64 101 91 62 157 124 59 159 126 56 156 125 56 158 127 55 157 126 52 157 124 59
-156 124 53 161 125 43 161 125 43 157 124 59 157 124 59 154 129 46 159 126 56 162 124 55
-161 124 50 158 126 53 156 124 53 156 125 56 155 126 57 158 127 55 159 126 56 158 125 54
-158 125 54 158 126 53 155 128 52 155 128 52 157 126 52 158 127 55 156 124 53 162 125 53
-157 124 59 158 132 49 158 124 54 159 126 56 156 128 53 154 129 46 128 113 57 54 64 59
-53 63 60 60 64 65 230 230 230 254 254 254 255 255 255 59 64 62 58 62 63 58 64 64
-211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45
-213 100 46 207 105 48 210 105 40 142 101 66 213 100 46 208 103 45 210 102 46 208 103 45
-213 100 46 210 102 46 213 105 50 209 99 39 210 105 40 209 105 45 209 105 45 213 103 41
-211 102 45 213 100 52 200 101 40 210 102 46 213 100 46 209 99 39 212 101 45 207 105 38
-208 103 45 212 101 45 208 103 45 217 98 38 210 99 51 213 105 50 198 102 49 62 66 62
-56 64 62 56 66 64 110 110 107 255 255 255 254 255 251 251 251 251 255 254 255 248 254 252
-255 255 255 248 254 253 254 254 254 254 255 251 88 95 83 62 61 67 54 64 59 84 69 58
-198 102 49 213 100 52 211 102 45 208 103 45 213 105 50 211 99 45 212 104 43 207 105 48
-208 103 45 210 102 46 212 104 43 213 100 46 208 103 45 210 105 51 213 100 46 209 99 39
-211 99 45 213 103 41 208 103 45 211 102 45 216 99 44 213 100 46 213 105 50 208 103 45
-210 99 51 213 100 46 207 105 38 213 100 46 211 102 45 210 105 51 208 103 45 217 104 40
-212 98 39 112 79 60 59 64 62 59 60 64 53 60 64 202 204 206 255 254 255 253 255 254
-254 254 255 255 254 255 104 112 110 57 63 61 58 64 64 155 104 59 210 102 46 211 102 45
-208 103 45 212 101 45 211 102 45 212 101 45 211 102 45 211 102 45 212 101 45 112 79 60
-56 66 64 57 63 63 156 160 157 254 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-156 160 157 58 62 65 57 63 63 112 79 60 212 101 45 208 103 45 212 101 45 210 102 46
-212 101 45 208 103 45 212 101 45 211 102 45 211 102 45 112 79 60 58 62 65 57 63 61
-154 157 157 253 255 254 253 253 255 254 250 255 250 250 247 253 255 254 202 206 211 57 63 61
-57 60 56 60 60 63 112 79 60 213 103 41 211 102 45 208 103 45 210 102 46 210 102 46
-211 104 39 213 105 46 208 103 45 211 99 45 209 105 45 207 105 48 210 99 44 217 105 50
-216 99 44 217 105 50 210 99 44 213 100 46 212 101 45 211 99 45 213 105 50 210 99 44
-210 99 44 209 105 45 209 99 39 212 104 43 217 105 50 213 100 46 213 100 46 213 105 46
-208 103 45 212 104 43 219 98 50 211 99 45 207 105 48 219 98 50 213 100 46 198 102 49
-59 59 56 57 63 61 56 66 64 219 227 224 255 254 255
-255 255 255 255 255 255 253 253 253 254 254 254 241 240 247 48 49 51 0 0 0 0 0 0
-0 1 1 4 1 5 21 19 24 142 120 69 165 143 59 173 138 52 173 142 59 169 141 58
-166 144 56 169 144 61 169 141 58 169 141 58 157 127 54 147 124 59 147 124 59 149 124 55
-147 124 59 147 124 59 149 124 55 149 124 53 155 126 57 159 126 56 166 134 56 169 141 58
-166 144 56 169 144 61 169 141 58 173 142 59 169 141 58 168 136 64 110 92 61 4 1 5
-84 69 58 165 143 59 166 144 56 168 136 64 21 19 24 145 151 154 255 255 255 253 255 254
-241 240 247 213 212 223 219 227 224 224 220 212 224 220 212 219 227 224 255 255 255 255 255 255
-255 255 255 253 253 253 255 255 255 254 254 254 255 255 255 254 254 254 255 255 255 254 254 254
-254 252 251 255 254 255 251 251 251 254 255 251 253 253 255 241 240 247 187 189 188 160 163 161
-88 95 83 0 0 0 4 2 1 0 1 1 0 0 0 71 72 69 71 72 69 71 72 69
-110 110 107 145 151 154 145 151 154 113 113 120 81 77 81 0 0 0 0 1 1 0 0 0
-97 100 105 219 227 224 255 255 255 253 253 253 255 255 255 254 254 254 253 253 253 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 254 255 254 255 251 253 255 254 253 253 255 154 157 157 57 60 70 57 63 61 101 91 62
-162 124 55 161 124 50 157 126 52 156 124 53 156 124 53 155 128 52 155 128 52 157 124 59
-161 124 50 152 127 56 62 61 67 113 104 59 162 125 53 152 127 56 157 124 59 162 125 53
-158 125 54 156 126 54 156 128 53 155 128 52 156 128 53 156 124 53 158 127 55 162 125 53
-159 126 56 152 124 51 158 127 55 158 127 55 158 125 54 158 124 53 159 126 56 157 126 52
-157 124 59 156 124 53 158 127 55 155 128 52 155 126 57 110 92 61 57 63 61 56 66 64
-59 64 62 178 172 162 253 253 253 255 255 255 253 253 253 252 252 252 255 255 255 255 255 255
-254 255 251 255 254 255 255 254 255 97 100 105 54 67 66 57 60 70 71 65 56 128 113 57
-155 128 52 156 126 54 158 127 55 152 124 51 155 128 52 156 126 54 158 127 55 156 125 56
-156 126 54 156 124 53 155 127 54 155 127 54 155 126 57 155 127 54 155 128 52 155 128 52
-155 128 52 155 127 54 155 126 57 155 126 57 155 127 54 155 128 52 155 128 52 155 128 52
-158 126 53 158 125 54 157 127 54 157 126 52 161 124 50 161 124 50 157 126 52 157 124 59
-162 124 55 155 127 54 128 113 57 66 60 61 58 65 69 56 64 62 125 131 132 254 250 255
-254 254 254 255 255 255 254 254 254 253 253 253 202 204 206 58 64 64 53 63 60 56 66 64
-97 78 60 152 127 56 156 129 45 158 124 53 156 124 53 155 128 52 159 126 56 162 124 52
-156 124 53 156 125 56 157 124 59 155 126 57 155 127 54 155 127 54 155 127 54 155 127 54
-158 125 54 156 126 54 157 127 54 155 126 57 155 126 57 155 126 57 159 126 56 161 124 50
-152 127 56 158 125 54 156 128 53 128 113 57 85 80 60 161 124 50 159 126 56 155 126 57
-155 128 52 155 128 52 158 124 56 159 126 56 156 126 54 158 126 53 128 113 57 60 64 65
-62 65 65 110 110 107 253 253 253 255 254 255 254 254 254 253 253 253 253 255 254 156 160 157
-60 60 63 58 65 69 62 66 56 128 113 57 157 124 59 159 126 56 157 126 52 156 125 56
-156 126 54 158 127 55 156 124 53 157 127 54 158 127 55 152 124 51 156 125 56 157 124 59
-158 127 55 157 126 52 158 127 55 158 125 54 158 127 55 156 124 53 161 124 50 161 125 43
-162 124 55 158 127 55 156 125 56 156 126 54 155 126 57 155 128 52 158 125 54 156 124 53
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-158 124 56 158 127 55 72 76 65 60 64 65 57 63 63 202 204 206 254 255 255 154 157 157
-62 65 65 58 62 65 94 90 61 155 126 57 157 124 59 154 129 46 155 127 54 152 124 51
-157 124 59 152 124 51 162 125 53 161 124 50 128 99 63 59 59 56 58 62 65 104 112 110
-255 255 255 255 255 255 255 255 255 254 254 254 253 253 253 254 255 255 125 131 132 59 64 62
-54 67 66 62 66 56 113 104 59 155 126 57 158 124 54 159 126 56 158 125 54 156 124 53
-155 126 57 158 124 56 162 124 55 159 126 56 157 127 54 155 128 52 155 128 52 155 127 54
-156 126 54 156 126 54 158 127 55 158 126 53 158 127 55 156 126 54 156 126 54 158 127 55
-155 128 52 157 127 54 157 126 52 158 126 53 157 126 52 158 126 53 158 125 54 158 124 56
-158 127 55 156 124 53 159 126 56 157 126 52 156 125 56 147 124 59 72 73 56 51 61 71
-62 65 65 110 110 107 254 255 255 253 253 253 254 255 255 59 64 62 58 62 63 60 64 65
-211 102 45 208 103 45 219 98 50 216 99 44 209 105 45 209 105 45 208 103 45 210 105 40
-211 104 39 213 100 52 174 105 47 62 70 65 198 102 49 209 105 45 210 102 46 213 100 46
-208 103 45 212 101 45 217 98 38 217 98 38 213 105 46 207 99 48 210 102 46 213 103 41
-210 102 46 212 101 45 213 105 46 212 101 45 210 102 46 210 102 46 213 105 50 210 102 46
-208 103 45 217 104 40 210 99 44 210 105 51 217 98 38 207 99 48 84 69 58 56 66 64
-60 64 65 68 69 75 230 230 230 255 255 255 255 255 255 252 252 252 255 255 255 254 254 254
-254 254 254 255 255 255 253 253 253 255 255 255 213 212 223 58 62 63 56 66 64 53 63 60
-97 78 60 213 100 52 217 98 38 209 105 45 210 102 46 207 99 38 213 105 46 210 99 44
-213 100 52 211 99 45 210 102 46 208 103 45 210 102 46 208 103 45 208 103 45 208 103 45
-210 102 46 211 102 45 211 99 45 212 101 45 210 102 46 208 103 45 210 99 44 213 103 41
-210 102 46 210 102 46 210 105 51 208 103 45 211 102 45 219 98 50 210 99 44 213 103 41
-142 101 66 68 58 52 50 65 64 58 65 69 154 157 157 248 254 252 249 254 246 255 253 254
-253 252 247 249 254 254 110 110 107 56 66 64 66 60 61 155 104 59 212 104 43 208 103 45
-211 104 39 210 105 51 213 100 52 210 105 40 216 99 44 213 100 46 213 100 46 128 93 57
-58 62 65 58 62 63 156 160 157 255 255 255 253 253 253 255 255 255 254 255 255 254 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-156 160 157 59 60 64 53 67 71 128 93 57 209 105 45 208 103 45 212 104 43 216 99 44
-217 104 40 213 100 52 207 99 48 210 105 40 213 103 41 112 79 60 58 66 61 59 64 62
-156 160 157 253 253 253 253 255 254 254 254 254 255 255 255 255 255 255 255 255 255 140 141 138
-60 60 63 54 67 66 58 65 54 142 101 66 213 100 52 212 98 39 207 105 38 208 103 45
-208 103 45 211 102 45 212 101 45 213 105 50 207 99 38 212 104 43 212 104 43 211 102 45
-213 100 46 211 99 45 210 102 46 208 103 45 208 103 45 211 99 45 213 100 46 216 99 44
-210 102 46 213 100 46 211 99 45 208 103 45 211 102 45 213 100 46 213 105 50 208 103 45
-210 105 51 210 99 44 216 99 44 212 101 45 211 99 45 217 104 40 198 102 49 84 69 58
-57 63 63 58 64 64 81 77 81 254 255 255 255 255 255
-255 255 255 254 254 254 255 255 255 254 254 254 255 255 255 242 238 229 48 49 51 0 0 0
-4 1 5 0 0 0 0 1 1 4 1 5 102 79 82 142 120 69 165 143 59 169 141 58
-169 141 58 168 136 64 169 144 61 164 144 50 169 141 58 169 144 61 159 134 56 158 134 59
-155 126 57 168 136 64 168 136 64 169 144 61 169 141 58 169 141 58 166 144 56 166 144 56
-173 142 59 164 144 50 166 144 56 166 144 56 142 120 69 72 76 65 0 3 1 81 77 81
-165 143 59 165 143 59 173 142 59 166 144 56 109 102 83 48 49 51 219 227 224 255 254 255
-252 252 252 230 230 230 213 212 223 213 212 223 213 212 223 219 227 224 241 240 247 255 255 255
-253 253 253 255 255 255 254 254 254 255 255 255 253 253 253 254 254 254 252 252 252 254 254 254
-253 252 247 253 255 254 254 255 255 249 254 246 230 230 230 219 227 224 219 227 224 254 254 253
-254 254 255 230 230 230 160 163 161 4 2 1 4 2 1 6 9 5 0 0 0 4 1 5
-0 1 1 0 1 1 0 1 1 0 0 0 0 0 0 81 77 81 154 157 157 241 240 247
-253 253 253 255 255 255 251 251 251 255 255 255 254 254 254 255 255 255 255 255 255 251 251 251
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 254 255 251 248 251 253 255 255 255 156 160 157 53 60 64 59 64 62 101 91 62
-156 126 54 158 127 55 159 126 56 158 124 54 158 124 56 166 129 59 156 124 53 161 125 43
-152 127 56 147 124 59 59 59 56 68 69 75 147 124 59 158 126 53 156 128 53 152 124 51
-156 126 54 158 127 55 156 124 53 159 126 56 158 124 54 156 126 54 156 126 54 155 127 54
-161 124 50 159 126 56 155 126 57 155 126 57 150 126 55 155 126 57 155 126 57 155 126 57
-161 124 50 158 134 59 152 124 51 158 132 49 113 104 59 59 64 62 62 65 65 57 60 56
-125 131 132 253 255 254 254 255 255 254 254 254 252 252 252 255 255 255 255 255 255 253 253 253
-254 255 251 253 253 255 255 254 255 230 230 230 62 70 65 58 65 69 59 60 62 68 58 52
-140 101 45 152 127 56 152 124 51 158 127 55 156 124 53 155 126 57 155 126 57 158 127 55
-157 126 52 158 126 53 158 127 55 159 126 56 158 124 56 158 124 54 158 124 54 158 125 54
-159 126 56 159 126 56 158 124 54 158 124 56 156 124 53 159 126 56 158 124 56 157 124 59
-157 124 59 158 124 53 162 124 55 157 124 59 156 128 53 155 126 57 155 126 57 156 124 53
-155 128 52 128 113 57 62 66 62 58 65 69 59 60 64 68 69 75 242 238 229 253 255 254
-255 255 255 251 251 251 255 255 255 252 252 252 253 255 254 140 141 138 58 64 64 60 64 65
-54 64 59 110 92 61 152 124 51 162 125 53 157 124 59 155 126 57 154 129 46 158 127 55
-159 126 56 158 126 53 157 126 52 157 126 52 158 125 54 158 124 56 158 125 54 158 124 53
-157 127 54 155 128 52 155 128 52 158 126 53 158 126 53 157 126 52 157 126 52 158 126 53
-159 126 56 162 124 55 128 113 57 58 65 54 62 66 62 157 124 59 158 125 54 156 129 45
-162 124 55 155 128 52 156 128 53 152 127 56 157 124 59 159 126 56 128 113 57 50 65 62
-53 63 60 110 110 107 255 255 255 255 253 254 252 252 252 254 254 254 254 255 255 254 254 254
-97 100 105 58 59 64 57 60 56 71 72 69 147 124 59 161 125 43 159 126 56 158 127 55
-157 124 59 157 124 59 155 126 57 156 126 54 156 124 53 159 126 56 158 127 55 152 124 44
-152 124 44 155 128 52 157 127 54 155 128 52 155 128 52 155 127 54 159 126 56 157 124 59
-156 124 53 158 124 54 157 126 52 158 125 54 157 124 59 101 91 62 72 76 65 84 69 58
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-159 126 56 157 127 54 72 76 65 58 62 63 60 64 65 202 204 206 251 251 251 156 160 157
-58 64 64 54 64 59 101 91 62 158 124 56 161 124 50 158 124 56 157 124 59 159 126 56
-152 124 44 158 125 54 158 124 53 157 124 59 128 113 57 58 62 63 54 67 66 110 110 107
-255 255 255 255 255 255 255 255 255 255 255 255 252 252 252 249 252 251 241 240 247 97 100 105
-62 61 67 57 63 61 62 61 67 110 92 61 159 134 56 158 126 53 152 124 44 159 126 56
-157 126 52 155 128 52 154 129 46 155 128 52 158 124 56 157 124 59 162 124 55 161 124 50
-158 127 55 156 126 54 156 126 54 152 124 51 156 124 53 152 124 51 156 126 54 156 126 54
-155 126 57 157 124 59 157 124 59 157 124 59 159 126 56 156 124 53 155 128 52 152 124 51
-157 124 59 158 125 54 161 124 50 159 126 56 147 124 59 71 68 65 57 63 61 58 62 65
-59 64 62 202 206 211 253 253 253 253 253 253 254 255 255 57 58 61 62 65 65 57 63 63
-198 102 49 207 105 48 208 103 45 216 99 44 208 103 45 217 105 50 212 98 39 213 100 52
-210 99 51 212 98 39 128 93 57 62 61 67 97 78 60 217 104 40 209 105 45 208 103 45
-213 100 46 212 101 45 209 105 45 207 105 48 208 103 45 211 104 39 217 104 40 210 99 44
-213 105 46 208 103 45 209 99 39 211 104 39 212 104 43 209 99 39 213 103 41 217 105 50
-217 105 50 207 99 38 212 104 43 207 99 38 211 102 45 112 79 60 59 60 62 57 63 63
-60 64 65 187 189 188 253 253 255 255 255 255 253 253 253 255 255 255 255 255 255 254 254 254
-253 253 253 255 255 255 251 251 251 252 252 252 254 255 255 172 178 183 57 63 61 62 65 65
-53 64 53 97 78 60 217 104 40 212 98 39 209 105 45 213 100 46 211 99 45 213 105 50
-208 103 45 212 104 43 212 104 43 217 105 50 213 100 46 213 100 46 213 103 41 213 103 41
-208 103 45 211 102 45 210 102 46 211 99 45 212 101 45 212 104 43 212 101 45 211 99 45
-210 102 46 216 99 44 208 103 45 210 105 51 217 105 50 212 98 39 209 105 45 128 93 57
-68 58 52 58 66 61 53 60 64 110 110 107 255 254 255 254 255 251 253 255 254 255 253 254
-253 253 253 254 254 255 110 110 107 54 67 66 58 65 69 174 105 47 213 103 41 207 105 48
-211 99 45 212 104 43 207 99 38 213 105 50 213 100 52 211 104 39 198 102 49 112 79 60
-58 64 64 60 64 65 154 157 157 255 255 255 252 252 252 253 253 253 255 255 255 254 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-152 161 158 62 65 65 60 64 65 112 79 60 217 105 50 208 103 45 210 102 46 216 99 44
-209 105 45 210 99 51 217 104 40 213 105 50 211 102 45 128 99 63 58 65 69 53 60 64
-156 160 157 254 255 255 253 255 254 251 251 251 255 255 255 253 253 253 255 255 255 255 255 255
-97 100 105 57 61 64 59 64 62 57 63 61 128 93 57 213 105 46 219 98 50 212 98 39
-213 103 41 210 102 46 210 102 46 208 103 45 213 105 50 213 105 46 209 105 45 213 100 46
-208 103 45 208 103 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45 211 102 45
-208 103 45 208 103 45 208 103 45 213 100 46 213 100 46 211 99 45 213 103 41 211 104 39
-211 104 39 213 105 50 209 105 45 207 99 48 212 104 43 198 102 49 72 76 65 60 64 65
-57 63 63 58 62 63 202 204 206 255 255 255 253 253 253
-255 255 255 254 254 254 255 255 255 254 254 254 252 252 252 255 255 255 241 240 247 48 49 51
-0 0 0 4 1 5 4 1 5 0 3 1 0 3 1 0 0 0 94 90 61 142 120 69
-166 144 56 169 144 61 169 141 58 166 144 56 173 142 59 166 134 56 169 141 58 169 141 58
-169 141 58 169 141 58 169 141 58 166 144 56 166 144 56 169 141 58 169 141 58 169 144 61
-173 138 52 173 138 52 148 133 63 109 102 83 0 1 1 4 2 1 109 102 83 165 143 59
-169 138 59 166 144 56 173 142 59 169 141 58 168 136 64 21 19 24 125 131 132 253 253 255
-255 255 255 250 247 249 219 227 224 224 220 212 224 220 212 224 220 212 230 230 230 255 255 255
-255 255 255 254 254 254 254 254 254 251 251 251 255 255 255 254 254 254 255 255 255 255 255 255
-254 255 255 250 252 254 230 230 230 224 220 212 219 227 224 241 240 247 254 250 255 254 252 250
-241 240 247 145 151 154 21 19 24 0 0 0 4 2 1 0 0 0 6 9 5 0 0 0
-48 49 51 81 77 81 125 131 132 187 189 188 255 255 255 253 253 253 252 252 252 255 255 255
-255 255 255 253 253 253 254 254 254 255 255 255 252 252 252 255 255 255 252 252 252 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 253 252 247 253 255 254 252 252 252 156 160 157 58 65 69 57 63 63 94 90 61
-157 124 59 152 124 44 158 126 53 155 126 57 155 128 52 154 129 46 157 126 52 162 124 55
-155 126 57 110 92 61 57 63 61 54 64 59 101 91 62 155 128 52 158 125 54 157 127 54
-162 124 55 162 124 55 158 124 53 159 126 56 158 127 55 158 127 55 155 126 57 155 126 57
-156 124 53 156 128 53 155 128 52 156 128 53 158 126 53 158 126 53 157 126 52 159 134 56
-156 129 45 161 124 50 158 126 53 113 104 59 58 62 63 56 66 64 57 60 56 97 100 105
-241 240 247 254 255 255 253 253 253 255 255 255 253 253 253 254 254 254 253 253 253 255 255 255
-253 252 247 255 255 255 255 253 254 254 255 251 224 220 212 71 72 69 57 61 64 58 65 69
-62 65 65 113 104 59 158 127 55 152 124 44 166 129 59 158 124 54 152 124 51 158 127 55
-157 124 59 156 125 56 155 128 52 155 128 52 155 127 54 158 127 55 158 124 56 158 124 56
-152 124 51 155 128 52 155 128 52 156 128 53 152 124 51 156 124 53 155 128 52 156 128 53
-161 125 43 155 127 54 152 127 56 155 128 52 156 124 53 152 127 56 155 126 57 161 124 50
-113 104 59 62 66 56 58 62 65 54 67 66 60 64 65 187 189 188 248 254 252 249 254 246
-254 254 254 254 254 254 255 255 255 255 255 255 253 253 253 254 255 255 104 112 110 57 58 61
-58 65 69 56 64 62 113 104 59 152 124 44 157 124 59 157 124 59 159 126 56 152 124 51
-156 124 53 156 126 54 156 128 53 156 128 53 155 128 52 156 124 53 156 124 53 158 124 56
-157 124 59 158 124 56 156 126 54 156 126 54 156 124 53 159 126 56 158 127 55 155 128 52
-161 124 50 147 124 59 62 66 62 58 67 65 59 60 64 128 113 57 158 124 53 157 127 54
-159 126 56 157 127 54 154 129 46 155 126 57 157 124 59 161 124 50 128 113 57 62 61 67
-60 64 65 110 110 107 253 253 253 255 254 255 253 253 253 255 255 255 251 251 251 251 251 251
-219 227 224 62 65 65 57 63 63 53 63 60 71 72 69 149 124 55 161 124 50 155 127 54
-156 128 53 152 124 51 162 125 53 161 124 50 152 124 51 152 127 56 156 128 53 159 126 56
-157 124 59 156 125 56 156 125 56 155 126 57 155 126 57 155 127 54 155 128 52 156 128 53
-158 132 49 155 128 52 152 124 51 157 124 59 128 99 63 62 66 56 51 61 71 56 66 64
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-156 124 53 156 128 53 72 76 65 59 64 62 60 64 65 202 204 206 255 255 255 187 189 188
-59 64 62 58 66 61 71 72 69 148 128 46 161 124 50 166 129 59 159 126 56 152 124 51
-158 127 55 152 124 44 161 124 50 157 124 59 110 92 61 53 63 60 50 65 64 113 113 120
-255 255 255 254 254 254 255 255 255 252 252 252 254 254 254 255 255 255 253 255 254 241 240 247
-68 69 75 58 59 64 58 66 61 58 59 64 101 91 62 155 127 54 159 126 56 155 128 52
-156 128 53 162 125 53 162 125 53 158 125 54 152 127 56 155 126 57 156 126 54 162 124 52
-158 126 53 158 126 53 158 127 55 158 127 55 158 127 55 158 127 55 158 127 55 157 126 52
-162 124 55 158 124 54 156 125 56 152 124 51 152 124 51 152 124 51 155 126 57 155 126 57
-158 132 49 159 126 56 156 125 56 128 113 57 71 68 65 58 65 54 57 60 70 58 62 65
-156 160 157 254 255 255 255 255 255 253 253 253 253 255 254 97 100 105 57 58 61 57 63 63
-155 104 59 207 99 48 217 104 40 208 103 45 219 98 50 207 99 38 209 105 45 213 105 50
-217 98 38 212 104 43 85 80 60 50 65 64 60 61 69 155 104 59 213 105 50 210 99 51
-213 105 50 207 105 48 207 105 48 213 105 50 210 102 46 210 102 46 210 105 51 210 105 51
-211 99 45 217 105 50 213 105 50 207 99 48 208 103 45 208 103 45 208 103 45 207 99 38
-211 102 45 213 100 52 210 105 51 216 99 44 112 79 60 53 63 60 59 64 62 58 64 64
-125 131 132 253 253 255 255 255 255 251 251 251 254 254 254 254 254 254 255 255 255 254 254 254
-255 255 255 251 251 251 255 255 255 253 253 253 253 253 253 254 255 255 125 131 132 58 62 63
-62 66 56 54 67 66 84 69 58 198 102 49 210 99 51 210 99 44 213 103 41 210 99 44
-213 100 46 211 102 45 209 99 39 213 103 41 208 103 45 213 105 50 210 102 46 210 105 51
-213 100 46 210 102 46 209 105 45 209 105 45 212 104 43 210 99 44 210 99 44 208 103 45
-213 103 41 209 99 39 217 105 50 210 99 44 211 99 45 211 102 45 128 93 57 54 67 66
-54 67 66 56 64 62 97 100 105 241 240 247 254 251 249 249 252 251 254 255 255 248 251 253
-253 253 255 254 255 251 140 141 138 59 60 62 54 67 66 110 92 61 213 100 52 212 104 43
-213 100 52 207 105 38 211 99 45 209 99 39 219 98 50 208 103 45 212 98 39 97 78 60
-57 63 63 57 58 61 178 172 162 254 254 254 255 255 255 255 255 255 253 253 253 254 254 254
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-154 157 157 58 65 69 62 66 62 112 79 60 208 103 45 213 100 52 210 102 46 213 103 41
-213 105 50 210 102 46 210 102 46 213 103 41 208 103 45 112 79 60 57 58 61 58 67 65
-156 160 157 253 253 253 253 253 253 255 255 255 253 253 253 255 255 255 252 252 252 253 253 253
-241 240 247 97 100 105 58 65 69 57 60 56 50 65 64 112 79 60 213 100 46 211 102 45
-213 100 46 211 102 45 213 103 41 212 98 39 213 103 41 207 99 48 210 105 51 211 104 39
-208 103 45 211 102 45 212 101 45 211 99 45 210 99 44 211 102 45 209 105 45 208 103 45
-210 99 44 210 102 46 209 105 45 211 99 45 208 103 45 207 105 48 209 105 45 211 99 45
-210 105 51 212 98 39 210 99 44 209 105 45 174 105 47 72 73 56 58 62 65 58 62 65
-58 64 64 145 151 154 253 255 254 255 255 255 254 254 254
-255 255 255 251 251 251 255 255 255 255 255 255 252 252 252 255 255 255 255 255 255 253 253 253
-113 113 120 0 1 1 0 0 0 4 1 5 4 1 5 0 3 1 0 3 1 0 1 1
-48 49 51 109 102 83 142 120 69 165 143 59 173 142 59 173 142 59 169 141 58 169 144 61
-173 138 52 169 141 58 169 138 59 169 141 58 173 145 52 169 141 58 168 136 64 148 133 63
-109 102 83 81 77 81 0 0 0 0 1 1 88 95 83 148 133 63 169 141 58 166 144 56
-169 141 58 169 141 58 164 144 50 164 134 50 173 138 52 109 102 83 4 1 5 219 227 224
-253 253 253 255 255 255 230 230 230 213 212 223 224 220 212 213 212 223 230 230 230 254 254 254
-252 252 252 255 255 255 255 255 255 255 255 255 252 252 252 255 255 255 253 253 253 251 251 251
-241 240 247 224 220 212 219 227 224 230 230 230 255 255 255 254 250 255 254 255 251 187 189 188
-71 72 69 0 0 0 6 9 5 71 72 69 125 131 132 187 189 188 202 204 206 255 255 255
-254 254 254 255 255 255 255 255 255 252 252 252 251 251 251 255 255 255 255 255 255 254 254 254
-255 255 255 255 255 255 255 255 255 255 255 255 252 252 252 254 254 254 255 255 255 254 254 254
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-251 251 251 253 252 247 254 255 255 255 255 253 172 178 183 56 66 64 58 65 69 72 73 56
-156 124 53 155 126 57 155 128 52 155 128 52 157 124 59 158 124 53 154 129 46 150 126 55
-161 124 50 85 80 60 58 66 61 53 63 60 57 60 70 113 104 59 155 126 57 161 124 50
-148 128 46 154 129 46 155 128 52 156 124 53 158 125 54 158 124 54 159 126 56 159 126 56
-158 124 54 158 124 53 158 125 54 157 124 59 157 124 59 158 124 53 155 128 52 152 124 51
-150 126 55 158 127 55 110 92 61 58 62 65 56 64 62 58 62 65 68 69 75 224 220 212
-253 253 253 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 253 253 253
-255 255 253 254 254 254 253 253 255 253 253 255 255 255 253 224 220 212 71 72 69 54 67 66
-57 61 64 58 62 63 94 90 61 147 124 59 161 125 43 162 124 55 157 124 59 157 126 52
-155 128 52 156 128 53 158 126 53 162 125 53 158 124 53 158 124 53 157 127 54 156 128 53
-158 127 55 157 124 59 157 124 59 158 124 56 162 125 53 156 129 45 158 125 54 157 124 59
-147 124 59 152 124 51 161 124 50 162 124 55 162 124 55 159 126 56 128 113 57 85 80 60
-57 60 56 62 61 67 56 64 62 53 64 53 172 178 183 253 253 255 255 254 255 255 255 255
-253 253 253 255 255 255 253 253 253 253 253 253 255 255 255 251 251 251 241 240 247 97 100 105
-57 63 61 59 60 64 58 62 65 94 90 61 155 128 52 162 124 52 157 124 59 156 128 53
-156 128 53 156 126 54 158 124 53 162 124 55 162 124 55 157 124 59 156 126 54 155 128 52
-156 128 53 152 124 51 158 124 53 159 126 56 159 134 56 156 128 53 156 124 53 158 124 54
-149 124 53 72 73 56 62 70 69 53 60 64 62 65 65 97 78 60 155 127 54 158 126 53
-156 124 53 161 124 50 161 125 43 158 124 54 152 124 51 155 126 57 110 92 61 58 62 65
-57 58 61 125 131 132 255 255 255 254 251 252 252 252 252 253 253 253 255 255 255 255 255 255
-253 253 255 172 178 183 58 62 65 59 64 62 53 64 53 81 77 81 142 120 69 155 126 57
-157 127 54 152 124 51 155 127 54 155 126 57 155 126 57 158 127 55 157 126 52 156 124 53
-156 124 53 158 125 54 159 126 56 159 126 56 156 124 53 159 126 56 159 126 56 157 124 59
-157 124 59 155 126 57 152 127 56 128 113 57 71 68 65 58 59 68 62 65 65 54 64 59
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-158 125 54 155 127 54 72 76 65 59 64 62 60 64 65 202 204 206 250 247 249 213 212 223
-60 61 69 53 63 60 66 60 61 151 135 55 156 124 53 158 125 54 152 124 51 158 132 49
-152 124 51 157 124 59 159 126 56 155 126 57 97 78 60 60 64 65 56 64 62 154 157 157
-254 254 254 255 255 255 253 253 253 252 252 252 255 255 255 252 252 252 253 253 253 254 254 254
-224 220 212 71 72 69 56 66 64 57 63 61 62 61 67 84 69 58 128 113 57 157 124 59
-155 126 57 156 125 56 156 124 53 157 126 52 157 126 52 157 126 52 155 127 54 155 128 52
-162 125 53 158 124 53 158 125 54 158 124 56 158 124 54 158 125 54 159 126 56 158 125 54
-158 126 53 158 127 55 156 124 53 158 127 55 157 126 52 158 126 53 157 126 52 152 124 51
-155 127 54 147 124 59 101 91 62 57 60 56 56 66 64 58 64 64 59 64 62 125 131 132
-255 255 255 255 255 255 254 254 254 255 255 255 254 255 255 113 113 120 58 62 63 60 64 65
-128 93 57 213 105 50 211 104 39 198 102 49 208 103 45 207 105 38 213 105 50 209 99 39
-210 102 46 198 102 49 54 64 59 57 63 61 54 64 59 68 69 75 174 105 47 217 104 40
-209 99 39 213 105 46 212 101 45 216 99 44 211 99 45 210 102 46 211 102 45 213 103 41
-208 103 45 211 102 45 212 101 45 212 104 43 212 104 43 216 99 44 213 100 46 210 105 51
-210 99 44 208 103 45 200 101 40 84 69 58 59 60 64 58 65 69 53 60 64 113 113 120
-255 255 255 252 252 252 254 254 254 253 253 253 255 255 255 255 255 255 251 251 251 255 255 255
-255 255 255 254 254 254 253 253 253 255 255 255 255 255 255 255 255 255 253 255 254 125 131 132
-62 61 67 59 60 64 57 60 56 71 68 65 174 105 47 213 105 46 211 99 45 209 105 45
-208 103 45 209 105 45 213 105 50 208 103 45 210 102 46 210 99 44 212 101 45 212 98 39
-210 105 40 210 105 40 211 99 45 211 99 45 213 100 46 213 105 50 210 102 46 210 102 46
-211 99 45 210 105 51 200 101 40 217 104 40 200 101 40 97 78 60 58 62 63 62 61 67
-58 65 69 97 100 105 241 240 247 254 254 253 253 255 254 253 255 254 253 253 255 255 254 255
-249 254 246 249 254 254 156 160 157 60 60 63 60 64 65 97 78 60 210 102 46 207 99 48
-213 103 41 207 105 38 213 100 52 207 105 48 210 102 46 213 103 41 217 105 50 62 66 62
-60 64 65 58 62 63 202 204 206 252 252 252 252 252 252 254 254 254 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-187 189 188 57 60 56 59 60 62 71 68 65 207 105 38 213 100 46 210 105 51 210 102 46
-210 99 44 217 104 40 209 99 39 207 105 38 213 103 41 71 72 69 62 61 67 54 64 59
-187 189 188 255 255 255 254 254 254 253 253 253 254 254 254 254 254 254 255 255 255 255 255 255
-255 253 254 241 240 247 97 100 105 59 60 70 60 60 63 62 66 56 84 69 58 185 105 60
-208 103 45 213 105 50 217 98 38 217 104 40 208 103 45 210 105 51 212 104 43 213 100 46
-212 104 43 211 102 45 211 102 45 210 102 46 210 102 46 208 103 45 208 103 45 208 103 45
-212 104 43 211 102 45 210 102 46 213 105 50 210 102 46 208 103 45 208 103 45 213 100 52
-212 98 39 217 105 50 198 102 49 128 93 57 57 58 61 58 62 65 62 65 65 53 63 60
-125 131 132 252 252 252 255 255 255 254 254 254 255 255 255
-254 254 254 255 255 255 255 255 255 252 252 252 253 253 253 253 253 253 251 251 251 255 255 255
-255 255 253 172 178 183 48 49 51 0 1 1 0 1 1 4 2 1 0 3 1 0 3 1
-4 2 1 4 1 5 4 1 5 4 2 1 81 77 81 109 102 83 109 102 83 109 102 83
-109 102 83 109 102 83 109 102 83 94 90 61 81 77 81 71 68 65 0 0 0 0 0 0
-0 3 1 21 19 24 109 102 83 148 133 63 169 141 58 169 141 58 166 144 56 169 144 61
-164 144 50 168 136 64 169 144 61 169 141 58 166 144 56 168 136 64 21 19 24 125 131 132
-253 253 253 255 255 255 241 240 247 224 220 212 224 220 212 213 212 223 219 227 224 254 254 254
-255 255 255 254 254 254 251 251 251 255 255 255 255 255 255 253 253 253 230 230 230 219 227 224
-224 220 212 224 220 212 250 247 249 249 254 254 253 255 254 230 230 230 88 95 83 0 1 1
-4 2 1 113 113 120 230 230 230 254 254 254 254 254 254 255 255 255 254 254 254 255 255 255
-254 254 254 253 253 253 251 251 251 255 255 255 254 254 254 255 255 255 255 255 255 255 255 255
-255 255 255 253 253 253 254 254 254 255 255 255 254 254 254 251 251 251 255 255 255 252 252 252
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 249 252 251 253 255 254 254 254 254 230 230 230 53 60 64 57 58 63 57 63 61
-128 99 63 155 126 57 157 126 52 159 126 56 159 126 56 152 124 44 158 127 55 158 124 56
-147 124 59 53 60 64 58 65 69 62 65 65 54 64 59 62 61 67 110 92 61 152 127 56
-159 126 56 158 127 55 155 126 57 152 127 56 155 126 57 155 127 54 158 127 55 156 124 53
-155 128 52 152 124 51 156 128 53 154 129 46 155 128 52 157 124 59 158 134 59 155 128 52
-142 120 69 85 80 60 59 64 62 59 60 64 58 62 65 62 70 69 213 212 223 254 255 251
-255 255 255 252 252 252 252 252 252 252 252 252 253 253 253 255 255 255 252 252 252 255 255 255
-255 253 254 254 254 253 254 255 255 254 255 255 254 254 255 254 252 251 224 220 212 71 72 69
-57 63 61 57 60 56 62 61 67 71 72 69 110 92 61 151 135 55 152 124 44 159 126 56
-158 124 56 158 124 56 156 126 54 156 126 54 156 126 54 158 127 55 156 126 54 156 124 53
-152 124 51 152 124 51 156 125 56 158 124 56 159 126 56 158 124 54 158 126 53 158 126 53
-158 124 53 159 126 56 158 124 53 161 124 50 142 120 69 94 90 61 59 60 70 62 65 65
-58 65 69 62 66 62 68 69 75 202 204 206 254 255 255 253 255 254 255 255 253 254 252 251
-255 255 255 252 252 252 255 255 255 251 251 251 254 254 254 255 255 255 255 255 255 241 240 247
-97 100 105 59 64 62 59 60 70 62 61 67 72 73 56 128 113 57 158 127 55 156 124 53
-158 126 53 157 124 59 157 124 59 156 125 56 156 124 53 155 128 52 156 126 54 156 125 56
-152 124 51 155 126 57 157 124 59 158 124 56 158 124 53 159 126 56 147 124 59 128 113 57
-62 65 65 60 60 63 59 64 62 57 60 56 59 64 62 62 65 65 158 125 54 155 126 57
-157 124 59 152 124 51 158 134 59 155 126 57 161 125 43 157 124 59 84 69 58 54 67 66
-59 64 62 160 163 161 251 251 251 254 254 254 255 255 255 254 254 254 253 253 253 253 253 253
-254 255 251 254 254 255 145 151 154 57 63 61 62 61 67 56 64 62 66 60 61 113 104 59
-155 128 52 158 134 59 157 124 59 161 124 50 158 126 53 158 124 56 157 124 59 158 127 55
-155 128 52 154 129 46 152 124 44 156 128 53 156 125 56 159 126 56 155 128 52 152 124 44
-162 124 55 158 127 55 113 104 59 62 66 62 59 59 56 57 63 63 56 66 64 58 62 65
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-159 126 56 155 127 54 72 76 65 58 62 63 57 63 63 202 204 206 255 254 255 254 255 255
-68 69 75 58 66 61 59 60 64 109 102 83 155 128 52 159 126 56 156 125 56 152 124 51
-157 124 59 158 127 55 155 127 54 149 124 53 69 60 69 56 66 64 53 60 64 219 227 224
-255 255 255 255 255 255 252 252 252 255 255 255 251 251 251 255 255 255 255 255 255 254 254 254
-254 255 251 241 240 247 88 95 83 58 66 61 53 63 60 58 62 65 71 68 65 101 91 62
-155 128 52 156 128 53 155 126 57 155 126 57 156 125 56 156 125 56 159 126 56 158 127 55
-157 127 54 155 127 54 155 127 54 155 127 54 155 127 54 155 127 54 155 127 54 155 127 54
-156 124 53 157 127 54 158 126 53 158 127 55 152 124 51 156 125 56 149 124 55 157 124 59
-110 92 61 71 68 65 56 64 62 58 65 69 59 64 62 58 62 65 178 172 162 254 255 251
-251 251 251 254 254 254 255 255 255 255 255 255 252 252 252 172 178 183 58 62 63 57 63 63
-71 65 56 198 102 49 213 103 41 210 102 46 217 105 50 207 99 48 212 104 43 212 98 39
-211 102 45 112 79 60 59 64 62 53 63 60 58 66 61 60 60 63 62 66 62 174 105 47
-213 100 46 213 105 50 208 103 45 208 103 45 211 104 39 212 104 43 209 99 39 211 102 45
-217 104 40 207 105 38 208 103 45 212 101 45 212 98 39 208 103 45 209 105 45 210 99 44
-213 103 41 155 104 59 62 66 62 57 63 61 56 66 64 62 65 65 113 113 120 241 240 247
-254 254 254 255 255 255 255 255 255 253 253 253 255 255 255 254 254 254 253 253 253 254 254 254
-255 255 255 254 254 254 255 255 255 255 255 255 253 253 253 255 255 255 252 252 252 255 255 255
-125 131 132 53 64 53 58 65 69 53 63 60 58 67 65 128 93 57 210 99 51 198 102 49
-211 99 45 213 100 46 213 100 46 211 99 45 210 102 46 208 103 45 210 105 51 208 103 45
-213 100 52 211 99 45 213 103 41 212 104 43 212 101 45 210 99 44 209 99 39 211 104 39
-213 105 46 213 103 41 200 101 40 155 104 59 68 69 75 62 65 65 58 62 63 58 65 54
-97 100 105 250 247 249 255 255 253 248 254 252 248 251 253 250 252 254 255 255 255 251 251 251
-255 254 255 248 254 252 219 227 224 62 61 67 53 64 53 59 64 62 198 102 49 213 100 46
-211 102 45 211 102 45 207 105 38 208 103 45 211 99 45 213 105 46 128 93 57 58 62 65
-58 62 63 68 69 75 254 255 255 251 251 251 255 255 255 254 254 254 251 251 251 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-241 240 247 53 63 60 59 60 70 60 64 65 174 105 47 213 105 46 210 99 44 213 100 46
-212 104 43 208 103 45 207 105 48 217 105 50 155 104 59 58 59 68 66 60 61 57 63 61
-230 230 230 254 254 254 255 255 255 251 251 251 255 255 255 255 255 255 251 251 251 254 254 254
-254 255 255 254 251 249 250 247 249 97 100 105 58 62 63 58 62 63 62 66 56 62 66 56
-128 93 57 185 105 60 212 101 45 210 99 44 211 99 45 217 104 40 209 99 39 217 105 50
-213 100 46 213 100 46 213 100 46 213 105 46 212 101 45 212 101 45 213 100 46 213 100 46
-213 100 46 213 100 46 212 104 43 209 105 45 213 100 46 213 100 46 213 103 41 210 105 40
-198 102 49 112 79 60 62 70 69 58 59 68 62 61 67 60 60 63 50 65 64 152 161 158
-255 255 255 255 255 255 254 254 254 253 253 253 254 254 254
-255 255 255 255 255 255 252 252 252 252 252 252 255 255 255 253 253 253 255 255 255 253 253 253
-250 247 249 254 255 251 230 230 230 125 131 132 21 19 24 4 1 5 4 1 5 4 1 5
-0 3 1 0 3 1 0 3 1 0 1 1 4 1 5 0 3 1 0 3 1 0 3 1
-4 1 5 0 1 1 4 2 1 4 1 5 4 1 5 48 49 51 88 95 83 109 102 83
-142 120 69 166 144 56 166 144 56 166 134 56 173 138 52 173 142 59 169 141 58 173 138 52
-169 141 58 169 138 59 166 134 56 168 136 64 173 145 52 169 138 59 128 100 96 4 1 5
-230 230 230 255 255 255 254 254 254 219 227 224 224 220 212 224 220 212 219 227 224 255 255 255
-254 254 254 252 252 252 255 255 255 254 254 254 241 240 247 219 227 224 224 220 212 213 212 223
-230 230 230 254 250 255 249 254 246 249 254 254 145 151 154 21 19 24 6 9 5 6 9 5
-0 0 0 172 178 183 255 255 255 255 255 255 255 255 255 254 254 254 254 254 254 252 252 252
-255 255 255 254 254 254 255 255 255 254 254 254 255 255 255 252 252 252 255 255 255 255 255 255
-252 252 252 255 255 255 255 255 255 251 251 251 254 254 254 255 255 255 253 253 253 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-252 252 252 253 255 254 253 253 255 255 254 255 254 255 255 125 131 132 59 60 64 58 64 64
-71 65 56 142 120 69 158 132 49 152 124 51 159 126 56 156 126 54 156 125 56 149 124 53
-72 76 65 56 64 62 58 59 64 59 64 62 60 64 65 58 62 65 62 66 62 85 80 60
-149 124 55 149 124 55 156 124 53 158 126 53 161 124 50 161 124 50 158 125 54 158 125 54
-157 124 59 155 126 57 158 127 55 162 124 55 152 124 51 159 134 56 142 120 69 110 92 61
-66 60 61 57 63 61 58 65 69 57 63 61 97 100 105 230 230 230 254 255 251 253 252 247
-255 255 255 255 255 255 255 255 255 253 253 253 255 255 255 252 252 252 251 251 251 255 255 255
-255 253 254 254 255 251 253 252 247 254 255 251 253 255 254 255 255 255 254 251 252 241 240 247
-104 112 110 62 61 67 60 64 65 60 60 63 57 58 61 71 68 65 110 92 61 147 124 59
-155 128 52 156 128 53 156 128 53 155 127 54 155 126 57 156 125 56 158 125 54 158 124 53
-158 127 55 158 127 55 156 129 45 157 126 52 156 124 53 157 124 59 158 127 55 155 126 57
-155 128 52 149 124 53 113 104 59 72 76 65 56 66 64 54 64 59 57 63 61 58 62 65
-62 66 62 113 113 120 250 247 249 253 253 255 250 250 247 254 251 249 254 255 255 254 255 251
-255 255 255 254 254 254 252 252 252 255 255 255 254 254 254 255 255 255 255 255 255 252 252 252
-241 240 247 110 110 107 58 64 64 58 62 65 62 66 56 58 65 69 85 80 60 142 120 69
-156 129 45 155 128 52 155 127 54 155 127 54 155 127 54 156 128 53 161 124 50 161 124 50
-161 124 50 162 124 55 158 124 53 161 125 43 156 129 45 147 124 59 101 91 62 58 59 64
-57 60 70 56 66 64 62 61 67 72 76 65 58 65 69 57 63 61 101 91 62 158 127 55
-156 128 53 156 129 45 152 124 51 156 125 56 158 127 55 128 99 63 66 60 61 53 63 60
-59 64 62 219 227 224 253 253 253 255 255 255 254 254 254 253 253 253 255 255 255 255 253 254
-254 252 251 255 255 253 254 255 251 160 163 161 59 60 70 57 63 61 57 60 56 62 61 67
-85 80 60 128 113 57 157 127 54 161 124 50 161 124 50 157 126 52 155 128 52 156 124 53
-157 124 59 159 126 56 156 126 54 158 125 54 158 124 54 159 126 56 157 124 59 155 126 57
-149 124 53 97 78 60 58 62 65 62 65 65 59 59 56 58 65 69 62 70 69 59 59 56
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-159 126 56 155 128 52 72 76 65 57 63 63 58 65 69 202 204 206 251 251 251 253 255 254
-154 157 157 60 64 65 58 62 65 62 66 56 128 113 57 155 127 54 156 124 53 166 129 59
-162 125 53 152 124 51 147 124 59 84 69 58 57 61 64 50 65 64 88 95 83 254 251 252
-255 255 255 254 254 254 255 255 255 252 252 252 254 254 254 254 254 254 253 253 253 255 255 255
-249 254 254 254 255 251 250 247 249 125 131 132 56 66 64 57 63 61 62 61 67 57 60 56
-71 68 65 110 92 61 147 124 59 161 124 50 161 125 43 157 126 52 158 124 56 158 124 56
-156 124 53 156 126 54 157 126 52 158 127 55 158 127 55 158 127 55 156 124 53 158 127 55
-155 126 57 156 126 54 158 126 53 159 126 56 157 124 59 128 99 63 85 80 60 57 60 56
-57 60 70 54 64 59 56 64 62 60 64 65 97 100 105 224 220 212 254 255 255 254 252 251
-255 255 255 251 251 251 252 252 252 255 255 255 254 254 254 241 240 247 71 81 83 60 64 65
-57 60 70 97 78 60 213 105 46 212 98 39 211 99 45 217 104 40 207 99 48 213 105 46
-174 105 47 62 70 65 62 61 67 60 60 63 60 64 65 58 65 69 59 64 62 56 66 64
-128 93 57 185 105 60 217 104 40 212 98 39 211 102 45 213 105 46 213 100 46 207 99 48
-198 102 49 211 99 45 216 99 44 216 99 44 216 99 44 217 105 50 198 102 49 174 105 47
-97 78 60 53 64 53 62 61 67 57 63 61 60 60 63 140 141 138 254 255 251 254 251 249
-255 255 255 252 252 252 255 255 255 255 255 255 252 252 252 254 254 254 255 255 255 255 255 255
-251 251 251 255 255 255 255 255 255 253 253 253 255 255 255 255 255 255 254 254 254 252 252 252
-255 255 255 187 189 188 62 61 67 59 64 62 53 64 53 53 63 60 62 66 56 128 93 57
-207 99 48 210 105 51 211 99 45 212 104 43 213 103 41 211 102 45 212 101 45 213 100 46
-213 105 50 210 102 46 210 99 44 208 103 45 210 105 51 210 105 51 213 100 46 216 99 44
-210 99 44 155 104 59 97 78 60 51 61 71 58 64 64 54 67 66 57 63 61 125 131 132
-241 240 247 253 252 247 252 252 252 254 255 255 255 254 255 255 254 255 254 251 252 254 252 251
-253 253 255 253 253 255 252 252 252 97 100 105 54 67 66 54 64 59 84 69 58 198 102 49
-213 100 52 212 98 39 210 105 40 210 99 44 217 104 40 174 105 47 71 65 56 58 65 69
-60 64 65 125 131 132 253 253 253 254 254 254 255 255 255 254 254 254 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-248 251 253 140 141 138 57 58 61 62 61 67 62 70 69 174 105 47 210 99 44 213 100 46
-213 100 52 212 101 45 207 105 48 200 101 40 84 69 58 56 66 64 58 62 65 110 110 107
-255 255 255 251 251 251 255 255 255 255 255 255 251 251 251 255 255 255 255 255 255 255 255 255
-249 254 254 253 253 253 249 254 246 253 252 247 145 151 154 53 60 64 58 66 61 58 62 65
-59 59 56 62 66 62 112 79 60 185 105 60 213 105 50 207 99 48 213 100 46 207 105 38
-213 105 50 210 102 46 208 103 45 208 103 45 209 99 39 208 103 45 211 102 45 210 102 46
-208 103 45 209 105 45 208 103 45 212 98 39 217 98 38 207 99 48 155 104 59 112 79 60
-57 60 56 58 68 63 59 59 56 56 64 62 56 64 62 97 100 105 224 220 212 255 255 253
-253 253 253 255 255 255 251 251 251 255 255 255 255 255 255
-255 255 255 252 252 252 255 255 255 255 255 255 255 255 255 254 254 254 254 254 254 254 254 254
-254 255 251 253 253 255 254 252 251 254 255 251 230 230 230 145 151 154 48 49 51 0 1 1
-4 1 5 4 2 1 4 2 1 0 0 0 4 1 5 88 95 83 109 102 83 109 102 83
-109 102 83 142 120 69 142 120 69 148 133 63 165 143 59 164 144 50 166 144 56 166 134 56
-166 144 56 168 136 64 173 138 52 169 144 61 165 143 59 166 144 56 169 144 61 165 143 59
-169 141 58 169 138 59 173 145 52 168 136 64 166 134 56 169 144 61 165 143 59 21 19 24
-145 151 154 254 254 254 255 255 255 230 230 230 224 220 212 213 212 223 224 220 212 255 255 255
-255 255 255 255 255 255 252 252 252 251 251 251 219 227 224 213 212 223 219 227 224 230 230 230
-249 254 254 253 253 253 213 212 223 88 95 83 0 1 1 21 19 24 142 120 69 109 102 83
-0 0 0 110 110 107 255 255 255 254 254 254 253 253 253 255 255 255 255 255 255 255 255 253
-255 255 255 254 254 254 252 252 252 252 252 252 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 252 252 252 255 255 255 255 255 255 252 252 252 255 255 255 252 252 252 253 253 253
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 254 254 253 255 254 253 253 255 254 251 254 253 255 254 213 212 223 59 59 56 58 65 69
-57 63 61 71 68 65 101 91 62 147 124 59 156 125 56 147 124 59 113 104 59 71 68 65
-54 64 59 57 63 63 62 65 65 154 157 157 97 100 105 58 62 65 53 64 53 58 65 69
-57 63 61 94 90 61 128 113 57 149 124 53 161 125 43 161 125 43 156 125 56 148 133 63
-155 126 57 155 127 54 155 128 52 152 127 56 128 99 63 97 78 60 62 61 67 53 63 60
-54 67 66 58 59 68 59 64 62 125 131 132 241 240 247 253 253 255 249 254 254 254 255 251
-255 255 255 254 254 254 253 253 253 255 255 255 252 252 252 255 255 255 255 255 255 255 255 255
-254 255 255 255 255 253 253 252 247 254 255 251 251 251 251 254 254 255 253 253 255 255 255 255
-253 252 247 156 160 157 68 69 75 60 61 69 60 64 65 60 60 63 62 61 67 60 61 69
-97 78 60 110 92 61 142 120 69 157 124 59 159 126 56 156 126 54 155 126 57 152 127 56
-152 124 51 157 124 59 155 126 57 158 127 55 158 132 49 149 124 53 128 113 57 110 92 61
-85 80 60 66 60 61 53 63 60 59 64 62 57 58 61 57 63 61 58 66 61 81 77 81
-202 206 211 254 255 251 248 254 252 253 252 247 254 255 251 250 252 254 254 252 251 255 255 253
-255 255 255 255 255 255 252 252 252 254 254 254 254 254 254 255 255 255 252 252 252 255 255 255
-254 255 251 248 254 252 160 163 161 58 66 61 53 60 64 62 65 65 62 61 67 59 64 62
-85 80 60 113 104 59 147 124 59 158 127 55 159 126 56 158 124 56 155 126 57 150 128 52
-148 128 46 155 128 52 158 127 55 142 120 69 101 91 62 62 66 56 53 63 60 58 65 69
-57 58 61 58 66 61 172 178 183 154 157 157 62 66 56 54 67 66 66 60 61 97 78 60
-128 113 57 158 134 59 157 124 59 128 113 57 101 91 62 62 65 65 51 61 71 60 64 65
-104 112 110 254 255 255 255 255 255 252 252 252 255 255 255 253 253 253 254 254 254 255 253 254
-255 254 255 253 255 254 254 255 251 255 255 255 172 178 183 68 69 75 62 61 67 54 67 66
-57 60 70 62 70 69 85 80 60 113 104 59 149 124 53 156 128 53 155 126 57 155 126 57
-161 124 50 157 124 59 155 126 57 152 124 51 156 129 45 155 126 57 128 99 63 97 78 60
-66 60 61 54 67 66 53 67 71 59 64 62 68 69 75 57 63 63 58 59 64 60 64 65
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-158 124 56 155 127 54 72 76 65 58 62 65 53 60 64 202 206 211 254 251 252 255 255 253
-241 240 247 71 72 69 53 63 60 58 67 65 71 68 65 101 91 62 128 113 57 150 126 55
-128 113 57 110 92 61 71 65 56 58 59 68 54 64 59 54 64 59 187 189 188 254 255 251
-255 255 255 255 255 255 254 254 254 254 254 254 255 255 255 252 252 252 255 255 255 253 253 253
-255 255 253 254 255 251 248 251 253 253 253 255 202 204 206 68 69 75 58 66 61 58 62 65
-58 62 65 57 60 70 58 65 69 85 80 60 113 104 59 147 124 59 156 125 56 158 125 54
-152 124 51 158 127 55 157 126 52 156 124 53 161 124 50 158 127 55 156 124 53 155 126 57
-156 125 56 128 113 57 110 92 61 85 80 60 62 66 62 57 63 61 58 64 64 58 62 65
-50 65 62 62 66 62 81 77 81 172 178 183 254 255 255 255 254 255 253 252 247 254 255 255
-253 253 253 255 255 255 255 255 255 253 253 253 255 255 255 253 253 253 156 160 157 58 62 63
-60 64 65 57 60 56 71 68 65 155 104 59 198 102 49 210 105 51 174 105 47 112 79 60
-62 66 62 54 67 66 57 63 61 68 69 75 178 172 162 58 62 65 59 64 62 57 58 61
-59 64 62 71 72 69 112 79 60 174 105 47 209 105 45 210 102 46 210 102 46 216 99 44
-216 99 44 209 105 45 210 102 46 213 100 52 185 105 60 128 93 57 84 69 58 57 63 63
-62 61 67 58 65 69 54 64 59 71 72 69 172 178 183 253 255 254 252 252 252 253 253 255
-252 252 252 255 255 255 255 255 255 255 255 255 255 255 255 251 251 251 255 255 255 253 253 253
-255 255 255 255 255 255 253 253 253 253 253 253 255 255 255 255 255 255 254 254 254 255 255 255
-249 254 246 253 253 255 219 227 224 97 100 105 53 63 60 58 67 65 58 62 65 57 63 63
-57 63 61 97 78 60 155 104 59 198 102 49 209 99 39 212 98 39 213 100 46 211 99 45
-207 99 38 209 105 45 209 105 45 212 98 39 217 98 38 207 105 48 155 104 59 112 79 60
-71 72 69 69 60 69 57 61 64 59 64 62 62 66 62 71 72 69 172 178 183 254 255 251
-254 255 251 253 255 254 254 255 255 254 254 254 254 251 252 254 251 252 255 255 255 255 255 255
-248 254 252 254 255 251 253 255 254 202 204 206 57 60 70 53 64 53 58 65 69 72 73 56
-142 101 66 198 102 49 210 99 51 185 105 60 112 79 60 62 66 56 62 61 67 57 58 61
-71 72 69 241 240 247 255 255 255 255 255 255 251 251 251 255 255 255 254 254 254 253 253 253
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 252 251 230 230 230 71 81 83 66 60 61 51 61 71 62 66 62 112 79 60 198 102 49
-211 99 45 185 105 60 142 101 66 62 66 62 59 59 56 56 64 62 58 65 69 213 212 223
-255 255 255 253 253 253 251 251 251 255 255 255 255 255 255 255 255 255 253 253 253 255 255 255
-254 254 254 249 254 254 253 255 254 253 255 254 248 254 252 187 189 188 88 95 83 60 60 63
-58 64 64 66 60 61 57 63 63 53 60 64 97 78 60 128 93 57 174 105 47 210 105 51
-207 105 48 210 105 51 210 102 46 216 99 44 212 101 45 216 99 44 210 102 46 210 102 46
-217 105 50 207 99 48 174 105 47 128 93 57 97 78 60 71 65 56 57 63 61 56 66 64
-59 64 62 57 58 61 56 66 64 72 76 65 178 172 162 253 253 255 254 255 251 255 253 254
-255 255 255 253 253 253 254 254 254 254 254 254 250 247 249
-253 253 253 255 255 255 255 255 255 252 252 252 254 254 254 255 255 255 254 254 254 255 255 255
-254 255 251 254 255 251 255 253 254 255 255 255 249 254 246 249 254 246 254 255 251 242 238 229
-187 189 188 125 131 132 4 1 5 4 1 5 4 2 1 142 120 69 169 144 61 173 138 52
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-169 138 59 169 141 58 166 144 56 173 145 52 169 141 58 169 144 61 166 144 56 173 142 59
-169 141 58 165 143 59 169 141 58 164 144 50 169 144 61 169 144 61 178 172 162 113 113 120
-71 72 69 255 255 255 254 254 254 241 240 247 219 227 224 213 212 223 219 227 224 255 255 255
-253 253 253 255 255 255 255 255 255 241 240 247 224 220 212 224 220 212 241 240 247 255 255 255
-254 255 251 172 178 183 0 0 0 0 1 1 88 95 83 165 143 59 165 143 59 142 120 69
-0 0 0 48 49 51 254 254 254 255 255 255 254 254 254 255 255 255 253 253 253 255 255 253
-254 254 254 255 255 255 255 255 255 255 255 255 255 255 255 253 253 253 255 255 255 255 255 255
-255 255 255 255 255 255 254 254 254 255 255 255 254 254 254 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 253 253 255 254 255 255 255 255 254 255 253 255 254 254 255 251 187 189 188 53 63 60
-54 67 66 58 62 65 62 61 67 59 60 64 57 60 56 60 64 65 58 62 65 59 64 62
-60 60 63 57 60 70 140 141 138 254 255 251 241 240 247 113 113 120 62 66 62 57 61 64
-56 64 62 53 60 64 58 62 65 62 65 65 81 77 81 94 90 61 101 91 62 101 91 62
-101 91 62 94 90 61 72 76 65 57 61 64 58 62 65 56 64 62 57 63 61 58 64 64
-57 60 56 88 95 83 187 189 188 253 253 255 254 255 251 254 254 255 255 254 255 249 254 246
-254 254 254 255 255 255 255 255 255 255 255 255 255 255 255 253 253 253 254 254 254 254 254 254
-248 254 252 254 255 255 253 253 255 255 253 254 255 255 253 253 255 254 253 255 254 249 254 246
-255 255 255 253 255 254 230 230 230 125 131 132 59 64 62 58 66 61 57 60 56 59 64 62
-57 63 63 56 64 62 59 64 62 62 66 56 72 76 65 94 90 61 101 91 62 101 91 62
-101 91 62 101 91 62 101 91 62 85 80 60 71 68 65 62 65 65 60 64 65 53 60 64
-54 67 66 53 63 60 62 65 65 59 60 62 57 63 61 110 110 107 172 178 183 253 255 254
-253 255 254 253 255 254 254 255 251 254 255 255 253 253 255 253 252 247 254 255 251 255 255 255
-253 253 253 255 255 255 254 254 254 254 254 254 255 255 255 254 254 254 255 255 255 253 253 253
-255 253 254 253 253 255 253 255 254 224 220 212 110 110 107 58 62 65 56 64 62 57 63 63
-54 64 59 58 65 69 58 62 65 62 66 62 85 80 60 94 90 61 110 92 61 101 91 62
-101 91 62 85 80 60 62 66 62 58 62 65 58 62 65 58 62 65 58 64 64 57 63 61
-88 95 83 213 212 223 255 255 253 254 255 255 97 100 105 59 59 56 58 65 69 50 65 62
-57 63 63 62 66 62 57 58 61 57 63 61 60 60 63 58 65 69 54 64 59 68 69 75
-219 227 224 254 255 255 254 254 254 255 255 255 255 255 255 255 255 255 254 254 254 255 254 255
-249 254 254 255 255 253 255 255 255 255 255 253 253 253 253 230 230 230 104 112 110 59 60 62
-57 63 63 57 60 56 62 66 56 57 61 64 58 62 65 71 72 69 85 80 60 101 91 62
-101 91 62 101 91 62 94 90 61 85 80 60 72 76 65 62 61 67 56 64 62 54 67 66
-57 63 61 59 64 62 57 63 61 97 100 105 224 220 212 59 64 62 53 63 60 60 64 65
-156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54 156 126 54
-158 124 56 152 124 51 62 66 56 56 66 64 58 65 69 230 230 230 255 255 255 251 251 251
-249 254 254 224 220 212 68 69 75 58 62 65 60 61 69 57 61 64 58 66 61 57 63 61
-57 63 61 59 60 70 53 63 60 53 63 60 62 65 65 145 151 154 255 254 255 254 255 251
-255 255 255 255 255 255 255 255 255 254 254 254 255 255 255 253 253 253 254 254 254 255 255 255
-248 254 252 253 253 253 255 255 253 254 255 251 254 255 251 241 240 247 154 157 157 68 69 75
-58 64 64 57 60 56 59 59 56 58 64 64 58 62 65 58 62 65 71 68 65 72 76 65
-85 80 60 101 91 62 101 91 62 101 91 62 101 91 62 101 91 62 85 80 60 84 69 58
-58 64 64 58 62 65 57 61 64 58 64 64 57 63 63 59 64 62 56 64 62 57 63 63
-88 95 83 187 189 188 254 255 255 255 254 255 254 252 251 254 255 251 251 251 251 254 255 251
-254 255 255 254 254 254 253 253 253 255 255 255 253 253 253 255 255 255 254 255 255 125 131 132
-57 63 61 58 62 65 59 60 64 53 60 64 59 64 62 57 60 56 58 62 65 58 66 61
-60 60 63 58 68 63 62 61 67 224 220 212 254 252 251 224 220 212 71 81 83 62 61 67
-54 67 66 57 60 56 57 63 61 58 65 69 71 68 65 97 78 60 128 93 57 112 79 60
-128 93 57 112 79 60 97 78 60 62 66 56 58 66 61 62 66 62 57 61 64 53 67 71
-54 64 59 57 61 64 110 110 107 230 230 230 255 255 253 248 254 252 255 255 255 253 252 247
-255 255 255 254 254 254 254 254 254 254 254 254 255 255 255 255 255 255 252 252 252 255 255 255
-252 252 252 255 255 255 255 255 255 255 255 255 253 253 253 255 255 255 254 254 254 254 254 254
-253 253 255 254 255 251 254 252 251 254 255 251 172 178 183 68 69 75 57 60 56 62 65 65
-59 64 62 60 64 65 57 61 64 58 62 65 71 72 69 85 80 60 112 79 60 128 93 57
-128 93 57 128 93 57 112 79 60 97 78 60 71 68 65 62 61 67 58 62 65 62 65 65
-59 59 56 53 60 64 58 62 65 58 66 61 125 131 132 241 240 247 255 255 253 254 254 255
-255 253 254 253 253 255 255 255 255 254 254 254 255 255 253 248 254 252 253 255 254 253 253 255
-255 254 255 254 251 249 248 254 252 254 251 249 156 160 157 60 64 65 58 62 65 57 60 70
-62 66 56 54 64 59 59 64 62 62 61 67 54 67 66 56 66 64 57 63 61 54 67 66
-187 189 188 255 255 255 255 255 255 251 251 251 255 255 255 254 254 254 252 252 252 254 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 254 255 248 254 253 172 178 183 62 65 65 59 59 56 56 64 62 51 61 71 54 64 59
-54 64 59 56 64 62 56 66 64 58 62 65 60 64 65 60 61 69 172 178 183 253 255 254
-254 254 254 255 255 255 255 255 255 255 255 255 252 252 252 255 255 255 255 255 255 255 255 255
-255 255 255 254 255 251 255 253 254 255 253 254 254 255 251 253 253 255 250 247 249 156 160 157
-68 69 75 57 63 63 58 62 65 62 65 65 57 63 61 57 60 56 59 64 62 58 62 65
-84 69 58 97 78 60 112 79 60 112 79 60 112 79 60 112 79 60 112 79 60 97 78 60
-84 69 58 62 66 62 53 60 64 57 60 70 62 61 67 59 64 62 57 63 63 58 62 65
-58 64 64 81 77 81 172 178 183 241 240 247 255 255 253 253 255 254 249 254 254 254 255 251
-253 255 254 254 255 255 252 252 252 254 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-249 254 254 110 110 107 4 2 1 0 1 1 4 1 5 158 134 59 169 138 59 169 141 58
-169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58 169 141 58
-166 144 56 169 144 61 178 172 162 178 172 162 178 172 162 178 172 162 178 172 162 178 172 162
-178 172 162 178 172 162 178 172 162 214 206 175 230 230 230 254 255 251 254 254 255 187 189 188
-0 0 0 241 240 247 253 253 253 252 252 252 224 220 212 213 212 223 230 230 230 254 254 254
-255 255 255 255 255 255 255 255 255 252 252 252 219 227 224 242 238 229 255 255 255 255 255 255
-219 227 224 4 1 5 21 19 24 142 120 69 165 143 59 173 145 52 169 144 61 158 134 59
-0 0 0 4 2 1 241 240 247 253 253 253 255 255 255 255 255 255 251 251 251 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 251 251 251 255 255 255 255 255 255 187 189 188
-68 69 75 60 64 65 62 65 65 57 63 61 60 64 65 58 64 64 58 62 63 58 62 63
-59 60 62 154 157 157 253 253 253 255 255 255 253 253 253 253 253 253 202 204 206 81 77 81
-57 63 63 58 64 64 58 64 64 57 63 63 58 64 64 58 64 64 57 63 63 57 63 63
-57 63 63 60 64 65 57 63 63 58 62 63 57 58 61 58 64 64 60 64 65 81 77 81
-187 189 188 254 254 254 255 255 255 254 254 254 253 253 253 255 255 255 254 254 254 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 252 252 252 255 255 255 252 252 252 230 230 230 140 141 138 71 72 69 57 63 61
-58 64 64 57 63 63 57 63 63 57 63 63 60 64 65 60 64 65 57 63 63 57 63 63
-58 64 64 57 63 63 60 64 65 60 64 65 57 63 63 57 63 63 60 64 65 57 63 63
-57 63 61 57 63 61 81 77 81 140 141 138 230 230 230 255 255 255 253 253 253 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 254 254 255 255 255 255 255 255 251 251 251 255 255 255 202 204 206 110 110 107 59 64 62
-57 63 63 60 64 65 60 64 65 57 63 63 57 63 63 57 63 63 57 63 63 58 64 64
-57 63 63 57 63 63 57 63 63 58 62 63 58 64 64 59 64 62 71 72 69 156 160 157
-253 253 253 255 255 255 253 253 253 255 255 255 241 240 247 110 110 107 62 65 65 62 65 65
-57 63 63 60 64 65 58 64 64 57 63 63 58 62 63 59 64 62 88 95 83 219 227 224
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 255 251 254 255 251 250 252 246 255 255 253 254 255 255 254 254 255 255 255 253 202 204 206
-110 110 107 57 60 56 54 64 59 54 64 59 57 63 61 60 64 65 58 65 69 58 62 65
-58 62 63 62 65 65 58 62 63 58 62 63 57 58 61 58 64 64 60 64 65 58 62 63
-59 60 62 88 95 83 172 178 183 254 252 250 202 204 206 58 62 65 60 64 65 62 66 56
-156 124 53 158 126 53 157 126 52 157 126 52 159 126 56 158 125 54 158 124 54 158 127 55
-155 126 57 149 124 55 58 62 65 56 64 62 62 65 65 249 254 246 255 253 254 253 255 254
-255 255 255 254 254 254 224 220 212 88 95 83 59 64 62 58 64 64 58 64 64 60 64 65
-58 62 63 58 64 64 58 62 63 62 65 65 178 172 162 251 251 251 255 255 255 254 254 254
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 254 254 255 255 255 255 255 255 254 254 254 255 255 255 255 255 255 251 251 251 241 240 247
-178 172 162 81 77 81 57 63 61 60 64 65 62 65 65 58 62 63 57 63 63 60 64 65
-58 62 63 58 62 63 58 62 63 58 62 63 58 62 63 58 62 63 58 64 64 60 64 65
-56 66 64 57 63 63 57 63 61 59 64 62 57 63 61 71 72 69 140 141 138 202 204 206
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-145 151 154 58 62 63 58 62 63 58 64 64 57 63 63 60 64 65 60 64 65 57 58 61
-59 64 62 81 77 81 219 227 224 253 253 253 255 255 255 255 255 255 241 240 247 156 160 157
-68 69 75 58 64 64 58 64 64 58 62 63 58 62 63 60 64 65 57 63 63 57 63 63
-58 64 64 57 63 63 60 64 65 57 58 61 60 64 65 58 62 63 60 64 65 58 62 63
-110 110 107 202 206 211 255 255 255 253 253 253 255 255 255 254 254 254 254 254 254 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 254 254 255 255 255 255 255 255 252 252 252 255 255 255 241 240 247 178 172 162 81 77 81
-60 64 65 57 58 61 58 62 63 62 65 65 58 62 63 57 63 63 60 64 65 57 63 63
-60 64 65 57 63 63 60 64 65 60 64 65 57 63 63 57 63 63 60 64 65 57 63 63
-59 64 62 71 72 69 140 141 138 230 230 230 255 255 255 254 254 254 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 254 254 253 253 253 255 255 255 252 252 252 255 255 255 187 189 188 71 72 69 59 64 62
-57 63 63 57 63 63 57 63 63 62 65 65 58 62 63 57 63 61 88 95 83 202 206 211
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 252 252 252 255 255 255 187 189 188 71 72 69 58 62 63 57 58 61 58 62 63
-57 63 63 58 64 64 58 64 64 57 63 61 71 72 69 172 178 183 255 255 255 253 253 253
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-241 240 247 178 172 162 81 77 81 59 64 62 57 63 61 57 63 63 57 63 63 57 63 63
-58 62 63 60 64 65 58 64 64 58 62 63 58 62 63 58 62 63 58 64 64 58 62 63
-57 63 63 58 64 64 60 64 65 57 63 61 58 64 64 58 62 63 68 69 75 125 131 132
-202 204 206 255 255 255 255 255 255 255 255 255 255 255 255 253 253 253 255 255 255 252 252 252
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-253 253 255 48 49 51 4 2 1 0 0 0 85 80 60 165 143 59 169 141 58 166 134 56
-169 141 58 169 141 58 166 144 56 169 141 58 169 144 61 169 141 58 169 141 58 169 144 61
-178 172 162 254 252 244 254 252 251 253 253 255 255 254 255 254 252 250 253 252 247 253 253 255
-254 251 249 254 255 251 254 255 251 255 255 253 252 252 252 252 252 252 254 255 255 219 227 224
-0 0 0 187 189 188 255 255 255 255 255 255 219 227 224 224 220 212 230 230 230 255 255 255
-255 255 255 255 255 255 252 252 252 255 255 255 254 254 254 254 254 254 253 253 253 255 255 255
-145 151 154 4 2 1 142 120 69 165 143 59 164 144 50 169 141 58 169 141 58 166 144 56
-62 65 65 0 0 0 178 172 162 255 255 255 254 254 254 252 252 252 255 255 255 253 253 253
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 254 254 254 254 254 254 254 254 254 255 255 255 252 252 252 255 255 255 253 253 253
-250 247 249 160 163 161 104 112 110 62 65 65 58 62 63 57 58 61 97 100 105 145 151 154
-230 230 230 253 253 253 255 255 255 253 253 253 255 255 255 254 254 254 251 251 251 255 255 255
-202 206 211 140 141 138 68 69 75 58 62 63 58 62 63 60 64 65 58 62 63 62 65 65
-58 62 63 58 62 63 58 62 63 58 64 64 81 77 81 125 131 132 187 189 188 253 253 255
-253 253 253 253 253 253 253 253 253 254 254 254 255 255 255 254 254 254 255 255 255 253 253 253
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 251 251 251 255 255 255 254 255 255 253 255 254 254 255 255 187 189 188
-145 151 154 97 100 105 62 65 65 58 62 63 58 62 63 58 62 63 62 70 69 60 64 65
-58 64 64 60 64 65 57 58 61 57 58 61 60 64 65 60 64 65 81 77 81 113 113 120
-178 172 162 219 227 224 254 255 255 254 255 255 255 255 255 253 253 253 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 254 254 255 255 255 252 252 252 255 255 255 253 253 253 253 255 254 254 255 255 230 230 230
-145 151 154 97 100 105 57 58 61 60 64 65 60 64 65 60 64 65 58 62 63 62 65 65
-58 64 64 58 64 64 62 65 65 58 62 63 88 95 83 187 189 188 241 240 247 254 255 255
-255 255 255 252 252 252 255 255 255 254 254 254 254 255 255 253 255 254 187 189 188 113 113 120
-71 81 83 58 62 63 57 58 61 68 69 75 104 112 110 187 189 188 241 240 247 255 255 255
-254 254 254 254 254 254 255 255 255 252 252 252 254 254 254 254 254 254 252 252 252 255 255 255
-253 253 255 254 255 251 254 255 251 255 255 253 252 252 252 251 251 251 255 255 253 253 253 255
-254 254 255 213 212 223 145 151 154 97 100 105 58 65 69 60 60 63 57 58 61 59 64 62
-58 64 64 58 62 63 58 64 64 58 62 63 62 65 65 58 62 63 68 69 75 125 131 132
-187 189 188 254 254 255 253 255 254 255 254 255 140 141 138 53 63 60 62 66 62 81 77 81
-156 124 53 156 126 54 156 126 54 156 124 53 159 126 56 159 126 56 156 125 56 152 124 51
-158 126 53 128 113 57 57 58 61 53 63 60 88 95 83 248 254 252 254 251 252 254 255 255
-254 254 254 255 255 255 255 255 255 252 252 252 172 178 183 104 112 110 68 69 75 58 62 63
-58 62 63 104 112 110 145 151 154 230 230 230 253 253 253 255 255 255 255 255 255 253 253 253
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 254 254 254 255 255 255 255 255 255 255 255 255 252 252 252
-254 255 255 254 255 255 224 220 212 156 160 157 104 112 110 58 62 63 58 64 64 58 62 63
-58 62 63 58 62 63 58 64 64 58 64 64 58 64 64 58 64 64 58 62 63 57 58 61
-58 62 63 68 69 75 104 112 110 156 160 157 219 227 224 253 255 254 253 255 254 254 254 254
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 255 255 230 230 230 145 151 154 97 100 105 62 65 65 57 58 61 68 69 75 110 110 107
-178 172 162 241 240 247 253 255 254 253 253 253 253 253 253 255 255 255 255 255 255 255 255 255
-241 240 247 172 178 183 113 113 120 60 64 65 60 64 65 57 58 61 58 62 63 60 64 65
-58 64 64 60 64 65 58 62 63 58 62 63 58 64 64 97 100 105 160 163 161 230 230 230
-251 251 251 255 255 255 253 253 253 255 255 255 255 255 255 251 251 251 255 255 255 253 253 253
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 252 252 252 254 254 254 255 255 255 254 254 254 255 255 255 255 255 255 253 253 253
-213 212 223 145 151 154 97 100 105 58 62 63 60 64 65 60 64 65 60 64 65 60 64 65
-57 58 61 60 64 65 58 64 64 58 62 63 58 62 63 58 62 63 88 95 83 125 131 132
-187 189 188 254 255 255 254 255 255 253 255 254 255 255 255 251 251 251 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 252 252 252 255 255 255 254 254 254 254 255 255 230 230 230 160 163 161
-104 112 110 60 64 65 58 62 63 68 69 75 104 112 110 187 189 188 241 240 247 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 254 254 255 255 255 251 251 251 254 255 255 241 240 247 178 172 162 104 112 110 58 62 63
-58 62 63 62 65 65 104 112 110 178 172 162 241 240 247 253 255 254 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 254 254 254 255 255 254 255 255 224 220 212 178 172 162 104 112 110 57 58 61 60 64 65
-58 62 63 57 58 61 58 62 63 60 64 65 60 64 65 58 64 64 58 62 63 60 64 65
-58 64 64 62 65 65 62 70 69 113 113 120 160 163 161 202 204 206 254 255 255 253 253 255
-255 255 255 255 255 255 251 251 251 255 255 255 255 255 255 255 255 255 254 254 254 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 253 125 131 132 125 131 132 125 131 132 156 160 157 182 158 106 182 158 106 182 158 106
-182 158 106 182 158 106 182 158 106 182 158 106 182 158 106 182 158 106 156 160 157 178 172 162
-202 204 206 202 204 206 202 204 206 202 204 206 202 204 206 202 204 206 202 204 206 202 204 206
-202 204 206 202 204 206 202 204 206 202 204 206 202 204 206 202 204 206 202 204 206 202 204 206
-48 49 51 125 131 132 253 253 253 255 255 255 230 230 230 213 212 223 241 240 247 255 255 255
-253 253 253 253 253 253 254 254 254 255 255 255 255 255 255 252 252 252 255 255 255 252 252 252
-113 113 120 4 1 5 125 131 132 182 158 106 182 158 106 182 158 106 182 158 106 182 158 106
-154 157 157 125 131 132 187 189 188 254 254 254 255 255 255 253 253 253 254 254 254 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 254 254 254 254 254 255 255 255 251 251 251 255 255 255 255 255 255 252 252 252 255 255 255
-252 252 252 253 253 253 254 255 255 253 253 253 253 255 254 254 255 255 254 255 255 254 255 255
-255 255 255 255 255 255 251 251 251 255 255 255 251 251 251 255 255 255 254 254 254 254 254 254
-255 255 255 254 254 254 255 255 255 224 220 212 187 189 188 156 160 157 156 160 157 156 160 157
-154 157 157 172 178 183 202 204 206 230 230 230 253 255 254 254 255 255 253 255 254 254 255 255
-255 255 255 250 247 249 255 255 255 252 252 252 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 254 254 254 255 255 255 252 252 252 253 253 253 255 255 255
-252 252 252 254 255 255 253 253 253 202 206 211 202 204 206 160 163 161 154 157 157 156 160 157
-154 157 157 156 160 157 160 163 161 202 204 206 202 204 206 241 240 247 249 252 251 254 255 255
-253 255 254 253 255 254 254 255 255 253 253 253 255 255 255 254 254 254 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-251 251 251 255 255 255 252 252 252 255 255 255 255 255 255 254 254 254 254 255 255 249 252 251
-253 253 253 254 255 255 253 255 254 202 204 206 172 178 183 154 157 157 160 163 161 154 157 157
-154 157 157 178 172 162 202 204 206 250 247 249 254 255 255 253 253 253 251 251 251 255 255 255
-251 251 251 255 255 255 254 254 254 251 251 251 252 252 252 254 254 254 255 255 255 254 255 255
-253 253 255 250 252 254 254 255 255 254 255 255 254 255 255 253 253 253 255 255 255 254 254 254
-254 254 254 255 255 255 253 253 253 253 253 253 255 255 255 255 255 255 255 255 255 252 252 252
-253 255 254 253 253 253 202 206 211 202 204 206 219 227 224 254 255 251 254 254 253 253 253 255
-255 253 254 255 255 255 248 251 253 253 253 255 241 240 247 202 206 211 160 163 161 156 160 157
-156 160 157 154 157 157 160 163 161 156 160 157 202 204 206 219 227 224 254 255 255 253 255 254
-253 255 254 254 255 255 253 253 253 241 240 247 71 72 69 54 67 66 58 65 54 128 99 63
-156 124 53 155 126 57 155 126 57 155 126 57 156 125 56 156 126 54 158 127 55 158 127 55
-161 124 50 110 92 61 59 64 62 58 64 64 113 113 120 255 255 255 254 252 250 254 255 255
-253 253 253 252 252 252 254 254 254 255 255 255 255 255 255 254 255 255 253 253 255 254 255 255
-254 255 255 253 253 255 254 255 255 255 255 255 254 254 254 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 254 254 254 254 254 254 255 255 255 255 255 255 255 255 255
-254 254 254 253 253 253 255 255 255 253 255 254 253 255 254 254 255 255 213 212 223 202 206 211
-178 172 162 156 160 157 154 157 157 160 163 161 156 160 157 156 160 157 172 178 183 213 212 223
-230 230 230 252 252 252 255 255 255 255 255 255 254 254 254 251 251 251 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-252 252 252 255 255 255 254 255 255 249 252 251 253 255 254 254 255 255 253 253 253 254 254 254
-254 255 255 253 255 254 253 253 253 255 255 255 254 254 254 253 253 253 254 254 254 255 255 255
-253 255 254 254 255 255 254 255 255 253 253 253 202 204 206 187 189 188 156 160 157 154 157 157
-156 160 157 154 157 157 187 189 188 202 206 211 252 252 252 252 252 252 254 255 255 252 252 252
-255 255 255 254 254 254 253 253 253 255 255 255 253 253 253 254 254 254 255 255 255 254 254 254
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 254 254 254 255 255 255 255 255 255 253 253 253 252 252 252 254 254 254 253 253 253
-254 255 255 254 255 255 253 253 253 252 252 252 202 206 211 187 189 188 154 157 157 156 160 157
-156 160 157 154 157 157 160 163 161 172 178 183 202 206 211 241 240 247 254 255 255 252 252 252
-254 255 255 252 252 252 255 255 255 255 255 255 252 252 252 255 255 255 254 254 254 254 254 254
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-253 253 253 252 252 252 254 254 254 255 255 255 255 255 255 255 255 255 253 255 254 254 255 255
-253 253 255 250 252 254 254 255 255 252 252 252 253 255 254 253 255 254 255 255 255 251 251 251
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 253 253 253 253 253 253 255 255 255 253 253 253 252 252 252 254 255 255 254 255 255
-254 255 255 254 255 255 254 255 255 253 255 254 254 255 255 253 253 253 252 252 252 253 253 253
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-253 253 253 254 254 254 255 255 255 254 255 255 253 253 253 253 255 254 254 255 255 213 212 223
-202 204 206 172 178 183 156 160 157 156 160 157 160 163 161 154 157 157 160 163 161 187 189 188
-202 204 206 230 230 230 252 252 252 255 255 255 254 254 254 254 254 254 255 255 255 254 254 254
-255 255 255 253 253 253 255 255 255 254 254 254 253 253 253 255 255 255 253 253 253 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-250 252 246 255 255 255 255 255 253 248 251 253 249 254 254 254 252 244 253 252 247 249 254 254
-255 255 255 255 255 255 253 253 253 254 254 254 255 255 255 254 255 255 250 252 254 253 253 255
-253 253 255 254 255 251 254 255 251 249 252 251 254 255 251 255 255 253 251 251 251 254 255 251
-254 255 251 254 255 251 252 252 252 254 254 253 255 255 255 255 254 255 254 251 252 255 254 255
-154 157 157 0 0 0 202 204 206 255 255 255 250 247 249 230 230 230 255 255 255 253 253 253
-255 255 255 254 254 254 253 253 253 254 254 254 255 255 255 255 255 255 255 255 255 255 255 255
-97 100 105 0 1 1 250 252 254 255 255 255 254 251 249 253 253 255 253 253 255 250 252 254
-255 255 255 255 255 255 253 253 253 255 255 255 255 255 255 253 253 253 254 254 254 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 251 251 251 254 254 254 254 254 254 251 251 251
-255 254 255 254 254 254 254 254 254 254 255 255 252 252 252 254 254 254 251 251 251 255 255 255
-255 255 255 254 254 254 254 254 254 255 255 255 255 255 255 255 255 255 255 255 255 254 254 254
-255 255 255 255 255 255 253 253 253 254 254 254 255 255 255 255 255 255 253 253 253 255 255 255
-255 255 255 251 251 251 255 255 255 253 253 253 255 255 255 253 253 253 254 254 254 255 255 255
-251 251 251 255 255 255 255 255 255 254 254 254 255 255 255 252 252 252 251 251 251 254 254 254
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 252 252 252 255 255 255 253 253 253 254 254 254 255 255 255 253 253 253 254 254 254
-255 255 255 254 254 254 251 251 251 254 254 254 255 255 255 253 253 253 251 251 251 255 255 255
-254 254 254 254 254 254 255 255 255 253 253 253 255 255 255 255 255 255 255 255 255 252 252 252
-255 255 255 255 255 255 255 255 255 254 254 254 254 254 254 255 255 255 255 255 255 253 253 253
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 253 253 253 254 254 254 255 255 255 255 255 255 253 253 253 251 251 251 255 255 255
-252 252 252 255 255 255 255 255 255 254 254 254 255 255 255 255 255 255 254 254 254 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 253 253 253 255 255 255 255 255 255 254 254 254
-253 253 253 255 255 255 254 254 254 255 255 255 255 255 255 254 254 254 255 255 255 254 254 254
-255 255 255 252 252 252 255 255 255 253 253 253 251 251 251 255 255 255 252 252 252 255 255 255
-253 253 253 255 255 255 251 251 251 254 254 254 253 253 253 253 253 253 254 254 254 250 247 249
-125 131 132 62 61 67 60 61 69 53 63 60 57 63 61 71 72 69 113 113 120 187 189 188
-254 255 251 253 252 247 255 255 253 255 255 253 255 255 253 254 251 249 255 255 255 253 253 255
-253 253 253 253 255 254 251 251 251 254 254 254 255 255 255 254 254 254 251 251 251 254 254 254
-253 252 247 248 254 253 253 253 255 125 131 132 62 65 65 58 68 63 62 66 56 157 124 59
-158 125 54 156 126 54 155 126 57 155 126 57 156 125 56 158 125 54 158 127 55 158 127 55
-159 126 56 85 80 60 59 64 62 58 62 63 156 160 157 255 254 255 254 255 251 255 255 255
-255 255 255 255 255 255 255 255 255 251 251 251 253 253 253 255 255 255 253 253 253 255 255 255
-254 254 254 255 255 255 252 252 252 252 252 252 255 255 255 251 251 251 253 253 253 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 254 254 254 254 254 254 254 254 254
-255 255 255 253 253 253 251 251 251 255 255 255 255 255 255 255 255 255 254 254 254 253 253 253
-255 255 255 255 255 255 255 255 255 254 254 254 255 255 255 255 255 255 254 254 254 251 251 251
-255 254 255 255 253 254 255 253 254 252 252 252 255 255 255 255 255 255 251 251 251 253 253 253
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 253 254 251 251 251 255 255 255 254 254 254 255 255 255 254 254 254 253 253 253 254 254 254
-255 255 255 255 255 255 253 253 253 251 251 251 254 254 254 255 255 255 255 255 255 255 255 255
-255 255 255 253 253 253 253 253 253 255 255 255 255 255 255 254 254 254 252 252 252 255 255 255
-255 255 255 255 255 255 252 252 252 254 254 254 253 253 253 255 255 255 254 254 254 253 253 253
-253 253 253 255 255 255 255 255 255 252 252 252 255 255 255 255 255 255 253 253 253 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 254 254 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-253 253 253 255 255 255 255 255 255 255 255 255 251 251 251 255 255 255 255 255 255 255 255 255
-255 255 255 254 254 254 255 255 255 255 255 255 254 254 254 253 253 253 255 255 255 255 255 255
-255 255 255 254 254 254 255 255 255 254 254 254 254 254 254 255 255 255 253 253 253 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 253 253 253 254 254 254 255 255 255 253 253 253 255 255 255
-255 255 255 255 255 255 251 251 251 255 255 255 255 255 255 254 254 254 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-252 252 252 255 255 255 255 255 255 253 253 253 255 255 255 255 255 255 253 253 253 253 253 253
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 254 254 254 254 254 254 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 251 251 251 255 255 255 254 254 254 255 255 255 252 252 252 253 253 253 254 254 254
-254 254 254 253 253 253 255 255 255 253 253 253 253 253 253 255 255 255 253 253 253 254 254 254
-254 254 254 254 254 254 255 255 255 252 252 252 255 255 255 255 254 255 254 251 252 255 254 255
-252 252 252 254 254 254 255 255 255 254 254 254 255 255 255 253 253 253 253 253 253 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-253 255 254 250 252 254 252 252 252 253 255 254 254 255 251 254 251 249 255 254 255 251 251 251
-254 255 251 254 255 251 254 255 251 254 255 251 253 252 247 254 255 251 255 255 253 255 255 253
-254 255 251 253 253 253 253 252 247 254 255 251 253 253 255 253 253 255 255 255 253 253 255 254
-255 255 255 255 255 255 254 254 255 255 255 255 254 251 252 254 251 252 254 251 252 255 253 254
-255 255 255 59 60 62 48 49 51 213 212 223 255 255 255 254 254 254 250 247 249 255 255 255
-254 254 254 255 255 255 253 253 253 255 255 255 255 255 255 255 255 255 252 252 252 253 253 253
-0 0 0 21 19 24 254 255 251 250 252 246 254 255 251 255 255 253 255 255 253 254 255 251
-252 252 252 253 253 253 251 251 251 252 252 252 255 255 255 255 255 255 255 255 255 251 251 251
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 254 254 255 255 255 252 252 252 255 255 255 254 254 254 254 254 254 255 255 255 255 255 255
-255 253 254 252 252 252 253 253 253 251 251 251 255 255 255 255 255 255 255 255 255 254 254 254
-251 251 251 255 255 255 255 255 255 252 252 252 254 254 254 253 253 253 254 254 254 255 255 255
-255 255 255 251 251 251 255 255 255 254 254 254 254 254 254 251 251 251 255 255 255 251 251 251
-255 255 255 253 253 253 254 254 254 254 254 254 255 255 255 255 255 255 255 255 255 254 254 254
-255 255 255 254 254 254 251 251 251 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 254 254 255 255 255 253 253 253 255 255 255 253 253 253 251 251 251 255 254 255 254 251 252
-254 254 254 255 255 255 255 255 255 254 254 254 254 254 254 255 255 255 255 255 255 253 253 253
-252 252 252 255 255 255 253 253 253 254 254 254 255 255 255 255 255 255 251 251 251 255 255 255
-255 255 255 254 254 254 253 253 253 255 255 255 255 255 255 255 255 255 254 254 254 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 254 254 254 255 255 255 254 254 254 253 253 253 255 255 255 254 254 254
-255 255 255 250 247 249 254 254 254 254 254 254 255 255 255 253 253 253 255 255 255 251 251 251
-255 254 255 252 252 252 254 254 254 255 255 255 255 255 255 254 254 254 254 254 254 253 253 253
-255 255 255 252 252 252 254 254 254 255 255 255 251 251 251 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 252 252 252 255 255 255 253 253 253 255 255 255 252 252 252 253 253 253
-255 255 255 252 252 252 255 255 255 255 255 255 253 253 253 255 255 255 219 227 224 71 72 69
-58 65 54 53 60 64 57 58 63 62 70 65 54 64 59 56 66 64 58 65 69 54 64 59
-71 72 69 125 131 132 219 227 224 253 252 247 250 252 246 254 255 251 252 252 252 253 253 255
-254 254 254 255 255 255 255 255 255 253 253 253 255 253 254 254 251 252 255 254 255 255 254 255
-253 253 255 255 255 253 125 131 132 60 60 63 56 64 62 54 67 66 113 104 59 158 126 53
-158 127 55 156 124 53 156 124 53 158 127 55 159 126 56 158 126 53 158 126 53 157 126 52
-147 124 59 59 64 62 57 63 61 62 65 65 213 212 223 255 253 254 254 255 251 255 255 255
-254 254 254 254 254 254 251 251 251 255 255 255 253 253 253 254 254 254 255 255 255 254 254 254
-253 253 253 255 255 255 255 255 255 255 255 255 253 253 253 255 255 255 255 255 255 254 254 254
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 254 254 254 254 254 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 251 252 255 254 255 255 255 255 253 253 253 255 255 255 254 254 254 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 253 253 253 254 254 254 255 255 255
-255 255 255 255 255 255 255 255 255 253 253 253 255 255 255 255 255 255 254 254 254 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 254 255 255 254 255 251 251 251 254 254 254 253 253 253 253 253 253 255 255 255 254 254 254
-252 252 252 255 255 255 251 251 251 254 254 254 255 255 255 253 253 253 253 253 253 255 255 255
-254 254 254 255 255 255 255 255 255 255 255 255 255 255 255 254 254 254 252 252 252 254 254 254
-255 255 255 254 254 254 255 255 255 255 255 255 255 255 255 252 252 252 254 254 254 255 255 255
-255 255 255 252 252 252 255 255 255 255 255 255 254 254 254 252 252 252 252 252 252 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 253 253 253 253 253 253 255 255 255 255 255 255 253 253 253 253 253 253
-254 254 254 255 255 255 253 253 253 253 253 253 251 251 251 251 251 251 255 255 255 255 255 255
-250 247 249 255 255 255 254 254 254 251 251 251 255 255 255 255 255 255 252 252 252 253 253 253
-253 253 253 255 255 255 252 252 252 254 254 254 255 255 255 251 251 251 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-251 251 251 255 255 255 252 252 252 254 254 254 255 255 255 254 254 254 255 255 255 255 255 255
-251 251 251 255 255 255 255 255 255 254 254 254 255 255 255 252 252 252 255 255 255 254 254 254
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 252 252 252 253 253 253 255 255 255 254 254 254 250 247 249 255 255 255 255 255 255
-254 254 254 255 255 255 255 255 255 251 251 251 255 255 255 253 253 253 255 255 255 254 254 254
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 254 254 255 255 255 255 255 255 254 254 254 254 254 254 254 254 254 253 253 253 255 255 255
-253 253 253 255 255 255 255 255 255 255 255 255 254 254 254 254 254 254 255 255 255 255 255 255
-255 255 255 254 254 254 255 255 255 254 254 254 254 254 254 253 253 253 255 255 255 254 254 254
-255 255 255 254 254 254 253 253 253 255 255 255 255 255 255 251 251 251 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 253 254 254 254 254 254 254 254 255 255 255 254 255 251 255 254 255 254 250 255 255 254 255
-255 255 255 253 253 253 255 255 255 255 255 255 252 252 252 254 254 254 255 255 255 252 252 252
-254 254 253 254 255 251 254 255 251 254 252 251 253 253 255 254 255 255 253 252 247 254 255 251
-254 254 255 252 252 252 250 247 249 254 255 255 253 255 254 254 255 255 253 255 254 248 254 252
-252 252 252 241 240 247 48 49 51 48 49 51 187 189 188 252 252 252 255 255 255 255 255 255
-254 254 254 255 255 255 251 251 251 254 254 254 255 255 255 252 252 252 255 255 255 172 178 183
-4 1 5 97 100 105 253 253 255 252 252 252 254 255 251 251 251 251 253 253 255 253 253 253
-255 255 255 255 255 255 255 255 255 253 253 253 254 254 254 255 255 255 253 253 253 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-253 253 253 255 255 255 253 253 253 253 253 253 255 255 255 255 255 255 252 252 252 252 252 252
-254 254 254 255 255 255 255 255 255 255 255 255 254 254 254 253 253 253 254 254 254 255 255 255
-255 255 255 251 251 251 251 251 251 255 255 255 255 255 255 254 254 254 254 254 254 255 255 255
-255 255 255 251 251 251 253 253 253 255 255 255 254 255 255 249 252 251 253 255 254 254 255 255
-251 251 251 253 253 253 255 255 255 255 255 255 253 253 253 255 255 255 255 255 255 255 255 255
-254 254 254 253 253 253 255 255 255 255 255 255 253 253 253 253 253 253 255 255 255 251 251 251
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-253 253 253 252 252 252 255 255 255 255 255 255 254 254 254 254 254 254 255 255 255 255 254 255
-253 253 253 253 253 253 253 253 253 255 255 255 253 253 253 255 255 255 255 255 255 255 255 255
-255 255 255 253 253 253 254 254 254 255 255 255 251 251 251 255 255 255 255 255 255 254 254 254
-252 252 252 255 255 255 255 255 255 253 253 253 253 253 253 254 254 254 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-253 253 253 255 255 255 253 253 253 253 253 253 255 255 255 255 255 255 255 255 255 255 255 255
-254 254 254 253 253 253 255 255 255 255 255 255 254 254 254 254 254 254 255 255 255 254 254 254
-252 252 252 255 255 255 255 255 255 253 253 253 255 255 255 255 255 255 251 251 251 255 255 255
-253 253 253 255 255 255 254 254 254 252 252 252 255 255 255 252 252 252 255 255 255 254 254 254
-254 254 254 253 253 253 254 254 254 255 255 255 253 253 253 253 253 253 255 255 255 255 255 255
-254 254 254 254 254 254 251 251 251 253 253 253 255 255 255 230 230 230 68 69 75 58 64 64
-53 60 64 62 61 67 69 60 69 72 76 65 62 66 56 57 61 64 58 62 65 60 64 65
-58 62 65 58 62 65 58 62 65 97 100 105 178 172 162 230 230 230 255 255 255 250 252 254
-252 252 252 253 253 253 254 254 254 255 255 255 255 255 255 255 255 255 254 254 254 254 254 254
-202 206 211 88 95 83 60 64 65 57 60 70 58 62 65 85 80 60 152 124 51 152 124 51
-158 127 55 157 126 52 156 126 54 158 127 55 157 126 52 157 126 52 159 126 56 158 127 55
-113 104 59 58 62 65 57 63 61 81 77 81 254 255 255 255 254 255 249 254 246 255 253 254
-254 254 254 253 253 253 255 255 255 252 252 252 255 255 255 252 252 252 251 251 251 255 255 255
-255 255 255 252 252 252 255 255 255 255 255 255 255 255 255 251 251 251 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 254 254 254 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 252 252 252 255 255 255 255 255 255 255 255 255 251 251 251 255 255 255
-255 255 255 255 255 255 254 254 254 254 254 254 254 254 254 255 255 255 255 255 255 254 254 254
-251 251 251 255 255 255 254 254 254 255 255 255 254 255 255 249 252 251 253 255 254 249 252 251
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-251 251 251 252 252 252 255 255 255 252 252 252 255 255 255 254 254 254 253 253 253 255 255 255
-255 255 255 252 252 252 255 255 255 252 252 252 251 251 251 253 253 253 254 254 254 253 253 253
-255 255 255 251 251 251 255 255 255 255 255 255 253 253 253 254 254 254 255 255 255 253 253 253
-255 255 255 254 254 254 251 251 251 253 253 253 252 252 252 255 255 255 254 254 254 255 255 255
-255 255 255 252 252 252 254 254 254 253 253 253 252 252 252 255 255 255 255 255 255 253 253 253
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-251 251 251 255 255 255 255 255 255 254 254 254 254 254 254 255 255 255 255 255 255 255 255 255
-254 254 254 253 253 253 255 255 255 253 253 253 255 255 255 255 255 255 255 255 255 253 253 253
-255 255 255 252 252 252 255 255 255 255 255 255 253 253 253 253 253 253 255 255 255 255 255 255
-255 255 255 253 253 253 255 255 255 254 254 254 255 255 255 255 255 255 251 251 251 253 253 253
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 252 252 252 255 255 255 255 255 255 253 253 253 255 255 255 254 254 254 255 255 255
-255 255 255 252 252 252 254 254 254 254 254 254 255 255 255 254 254 254 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 253 253 253 255 255 255 255 255 255 253 253 253 255 255 255 254 254 254 251 251 251
-255 255 255 254 254 254 254 254 254 255 255 255 251 251 251 255 255 255 255 255 255 252 252 252
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 254 254 255 255 255 253 253 253 255 255 255 255 255 255 255 255 255 252 252 252 252 252 252
-255 255 255 255 255 255 253 253 253 254 254 254 255 255 255 255 255 255 255 255 255 251 251 251
-255 255 255 253 253 253 255 255 255 251 251 251 254 254 254 255 255 255 252 252 252 254 255 255
-251 251 251 255 255 255 255 255 255 251 251 251 254 254 254 254 254 254 254 254 254 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 254 255 254 255 251 253 253 255 253 255 254 254 255 251 250 252 246 248 254 252 249 254 246
-255 255 253 255 255 253 255 255 253 255 255 253 254 254 253 255 255 253 255 255 253 255 255 253
-255 254 255 254 255 251 250 247 249 255 254 255 254 255 251 255 255 253 252 252 252 253 252 247
-254 255 251 254 255 251 254 255 251 255 255 253 254 255 251 254 255 255 254 255 255 253 255 254
-255 255 255 251 251 251 241 240 247 48 49 51 0 1 1 125 131 132 230 230 230 252 252 252
-253 253 253 253 253 253 255 255 255 255 255 255 251 251 251 255 255 255 213 212 223 21 19 24
-0 0 0 187 189 188 255 255 255 253 253 255 255 255 253 254 255 251 255 255 253 255 255 255
-254 254 254 251 251 251 254 254 254 255 255 255 254 254 254 255 255 255 254 254 254 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 252 252 252 254 254 254 255 255 255 254 254 254 253 253 253 253 253 253 255 255 255
-255 255 255 254 254 254 252 252 252 255 255 255 254 254 254 255 255 255 254 254 254 255 255 255
-251 251 251 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 253 253 253 255 255 255
-253 253 253 255 255 255 254 254 254 254 254 254 255 255 255 255 255 255 252 252 252 254 254 254
-255 255 255 255 255 255 254 254 254 255 255 255 254 254 254 255 255 255 255 255 255 255 255 255
-255 255 255 252 252 252 254 254 254 253 253 253 255 255 255 253 253 253 253 253 253 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 254 254 255 255 255 251 251 251 252 252 252 255 255 255 254 254 254 254 254 254 255 255 255
-254 254 254 255 255 255 254 254 254 255 255 255 253 253 253 255 255 255 253 253 253 254 254 254
-255 255 255 254 254 254 254 254 254 255 255 255 255 255 255 253 253 253 253 253 253 255 255 255
-255 255 255 253 253 253 254 254 254 255 255 255 255 255 255 255 255 255 253 253 253 252 252 252
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 251 251 251 255 255 255 255 255 255 251 251 251 252 252 252 252 252 252 255 255 255
-255 255 255 255 255 255 252 252 252 253 253 253 255 255 255 255 255 255 253 253 253 255 255 255
-255 255 255 254 254 254 254 254 254 255 255 255 253 253 253 253 253 253 254 254 254 255 255 255
-255 255 255 252 252 252 254 254 254 255 255 255 252 252 252 255 255 255 255 255 255 255 255 255
-254 255 255 255 255 255 255 255 255 252 252 252 254 254 254 255 255 255 254 254 254 255 255 255
-253 253 253 255 255 255 251 251 251 254 254 254 254 255 255 104 112 110 57 63 63 57 63 63
-58 65 69 85 80 60 142 120 69 155 128 52 158 127 55 128 113 57 94 90 61 62 66 56
-58 65 54 59 64 62 58 62 65 58 62 65 58 62 65 57 63 61 97 100 105 145 151 154
-172 178 183 202 206 211 202 206 211 202 204 206 202 206 211 187 189 188 145 151 154 88 95 83
-57 63 61 62 65 65 59 60 62 59 64 62 84 69 58 149 124 55 158 134 59 154 129 46
-158 125 54 156 124 53 157 127 54 158 127 55 156 124 53 156 124 53 155 126 57 152 127 56
-72 76 65 62 61 67 57 58 61 145 151 154 255 255 255 252 252 252 253 255 254 255 255 253
-255 255 255 254 254 254 252 252 252 255 255 255 252 252 252 254 254 254 255 255 255 252 252 252
-253 253 253 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 251 251 251 253 253 253
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 254 254 254 254 254 254 255 255 255 255 255 255 254 254 254
-255 255 255 251 251 251 255 255 255 253 253 253 255 255 255 254 254 254 255 255 255 253 253 253
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 252 252 252 255 255 255 252 252 252 254 254 254 255 255 255 253 253 253 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 251 251 251 254 254 254 253 253 253 254 254 254 255 255 255 255 255 255
-254 254 254 255 255 255 253 253 253 255 255 255 253 253 253 255 255 255 255 255 255 255 255 255
-252 252 252 255 255 255 254 254 254 254 254 254 255 255 255 254 254 254 251 251 251 253 253 253
-254 254 254 255 255 255 255 255 255 255 255 255 253 253 253 255 255 255 254 254 254 253 253 253
-254 254 254 255 255 255 255 255 255 255 255 255 254 254 254 252 252 252 252 252 252 254 254 254
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 253 253 253 252 252 252 254 254 254 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 253 253 253 252 252 252 255 255 255 253 253 253 255 255 255
-254 254 254 255 255 255 254 254 254 254 254 254 254 254 254 255 255 255 255 255 255 255 255 255
-255 255 255 253 253 253 254 254 254 255 255 255 252 252 252 254 254 254 255 255 255 252 252 252
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 254 254 255 255 255 253 253 253 255 255 255 255 255 255 254 254 254 255 255 255 253 253 253
-249 252 251 253 253 253 255 255 255 255 255 255 254 254 254 255 255 255 253 253 253 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-253 253 253 253 253 253 255 255 255 254 254 254 255 255 255 251 251 251 255 255 255 255 255 255
-254 254 254 255 255 255 254 254 254 252 252 252 255 255 255 254 254 254 254 254 254 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 254 254 255 255 255 252 252 252 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 254 254 254 254 254 255 255 255 255 255 255 254 254 254 254 254 254 254 254 254 255 255 255
-255 255 255 254 254 254 253 253 253 255 255 255 254 254 254 252 252 252 255 255 255 253 253 253
-255 255 255 255 255 255 253 253 253 251 251 251 255 255 255 255 255 255 251 251 251 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-253 253 255 253 252 247 249 254 254 253 253 255 254 254 254 254 255 251 254 254 255 254 252 251
-254 255 251 254 255 255 254 255 255 253 255 254 253 255 254 253 255 254 253 253 253 254 255 255
-255 255 253 254 254 255 255 255 253 250 252 246 254 255 255 252 252 252 255 255 253 255 254 255
-255 254 255 255 254 255 255 254 255 254 251 252 254 251 252 255 254 255 255 253 254 255 253 254
-251 251 251 255 255 255 252 252 252 254 254 254 125 131 132 4 2 1 0 0 0 125 131 132
-187 189 188 241 240 247 254 254 254 255 255 255 219 227 224 145 151 154 48 49 51 0 0 0
-125 131 132 255 255 253 254 255 251 254 255 255 253 255 254 255 255 253 251 251 251 253 255 254
-254 254 254 255 255 255 253 253 253 254 254 254 254 254 254 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 254 254 255 255 255 253 253 253 254 254 254 255 255 255 255 255 255 255 255 255 252 252 252
-253 255 254 254 255 255 254 255 255 252 252 252 255 255 255 253 253 253 255 255 255 253 253 253
-255 255 255 254 254 254 255 255 255 255 255 255 254 254 254 254 254 254 255 255 255 255 255 255
-255 254 255 251 251 251 255 254 255 254 254 254 255 255 255 253 253 253 255 255 255 253 253 253
-253 253 253 255 255 255 255 255 255 255 255 255 255 255 255 253 253 253 254 255 255 254 255 255
-254 254 254 255 255 255 255 255 255 255 255 255 255 255 255 253 253 253 255 255 255 254 254 254
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 251 251 251 255 255 255 254 254 254 255 255 255 255 255 255 253 253 253 255 255 255
-254 254 254 255 255 255 254 254 254 255 255 255 254 254 254 255 255 255 255 255 255 255 255 255
-255 255 255 254 254 254 255 255 255 253 253 253 255 255 255 255 255 255 255 255 255 254 254 254
-254 255 255 253 253 253 255 255 255 254 254 254 252 252 252 253 253 253 255 255 255 254 254 254
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 254 254 254 254 254 254 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 251 251 251 255 255 255 255 255 255 255 255 255 253 253 253 255 255 255 253 253 253
-253 253 253 254 255 255 254 254 254 255 255 255 253 253 253 255 255 255 255 255 255 254 254 254
-252 252 252 254 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-253 253 253 254 255 255 253 253 253 255 255 255 255 255 255 255 255 255 255 255 255 254 255 255
-255 255 255 252 252 252 255 255 255 253 253 253 219 227 224 57 58 61 56 66 64 53 63 60
-110 92 61 148 133 63 158 126 53 162 124 52 162 124 55 159 126 56 156 124 53 157 124 59
-109 102 83 85 80 60 59 59 56 60 64 65 58 62 65 57 63 63 59 64 62 57 63 61
-58 64 64 57 63 61 58 64 64 60 64 65 57 63 63 58 64 64 62 65 65 57 63 63
-58 65 69 58 62 63 54 64 59 94 90 61 150 128 52 158 126 53 156 124 53 158 127 55
-156 125 56 156 124 53 156 126 54 158 126 53 158 125 54 159 126 56 149 124 55 140 101 45
-56 66 64 60 60 63 62 65 65 230 230 230 254 254 253 253 253 253 253 255 254 254 252 250
-254 254 254 255 255 255 255 255 255 255 255 255 254 254 254 255 255 255 254 254 254 255 255 255
-255 255 255 255 255 255 255 255 255 254 254 254 254 254 254 255 255 255 254 254 254 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 254 254 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 254 254 255 255 255 251 251 251 255 255 255 253 253 253 253 253 253 254 254 254 254 254 254
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 254 254 255 255 255 253 253 253 255 255 255 255 255 255 254 254 254 255 255 255 252 252 252
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-253 253 253 253 253 253 255 255 255 255 255 255 254 254 254 255 255 255 254 254 254 254 255 255
-255 255 255 254 254 254 255 255 255 251 251 251 253 253 253 255 255 255 254 254 254 254 254 254
-254 255 255 253 253 253 254 254 254 255 255 255 254 254 254 252 252 252 255 255 255 255 255 255
-254 254 254 253 253 253 255 255 255 254 254 254 255 255 255 252 252 252 254 255 255 254 255 255
-255 255 255 254 254 254 252 252 252 255 255 255 255 255 255 253 253 253 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 254 254 255 255 255 255 255 255 255 255 255 254 254 254 255 255 255 255 255 255 254 254 254
-253 255 254 254 255 255 252 252 252 255 255 255 255 255 255 255 255 255 253 253 253 255 255 255
-255 255 255 255 255 255 255 255 255 254 254 254 255 255 255 255 255 255 255 255 255 255 255 255
-254 254 254 255 255 255 253 253 253 255 255 255 254 254 254 254 254 254 254 255 255 254 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 254 254 254 255 255 255 255 255 255 254 254 254 255 255 255 255 255 255 255 255 255
-254 255 255 253 255 254 255 255 255 253 253 253 255 255 255 255 255 255 255 255 255 253 255 254
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 254 254 254 255 255 255 254 254 254 255 255 255 255 255 255 253 253 253 255 255 255
-255 255 255 255 255 255 254 254 254 255 255 255 254 254 254 255 255 255 254 254 254 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 254 254 254 255 255 255 255 255 255 254 255 255 253 255 254 252 252 252 254 255 255
-255 255 255 252 252 252 255 255 255 254 254 254 254 254 254 255 255 255 252 252 252 255 255 255
-255 253 254 255 253 254 252 252 252 254 254 254 254 254 254 255 255 255 254 254 254 255 255 255
-254 254 254 254 254 254 254 254 254 255 255 255 253 253 253 252 252 252 255 255 255 253 253 253
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 251 251 251 255 255 255 254 254 254 255 255 255 219 227 224 97 100 105 0 0 0
-0 0 0 0 1 1 0 0 0 4 2 1 4 2 1 0 0 0 21 19 24 156 160 157
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 254 253 253 253 255 254 251 252 254 255 251 140 141 138 54 67 66 58 62 65 66 60 61
-149 124 55 155 126 57 155 127 54 155 127 54 155 127 54 155 128 52 158 127 55 158 124 56
-161 124 50 155 126 57 142 120 69 101 91 62 72 76 65 60 64 65 58 62 63 58 66 61
-58 62 65 56 66 64 56 66 64 53 60 64 56 64 62 59 64 62 59 64 62 59 59 56
-62 61 67 94 90 61 128 113 57 155 126 57 157 126 52 159 126 56 158 124 54 158 125 54
-157 127 54 157 126 52 156 124 53 158 127 55 152 124 51 161 124 50 152 127 56 72 76 65
-58 64 64 58 64 64 110 110 107 255 255 255 253 253 253 255 255 255 255 255 255 254 254 254
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-252 252 252 254 254 254 255 255 255 254 254 254 254 254 254 255 255 255 250 247 249 241 240 247
-172 178 183 125 131 132 71 72 69 60 60 63 110 110 107 156 160 157 241 240 247 254 254 254
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 254 255 251 251 251 255 255 253 254 255 251 104 112 110 53 60 64 62 66 56 94 90 61
-152 124 51 159 126 56 159 126 56 152 124 51 157 126 52 162 125 53 158 124 53 155 128 52
-148 128 46 155 126 57 157 124 59 162 124 55 158 126 53 147 124 59 113 104 59 101 91 62
-94 90 61 85 80 60 72 76 65 72 76 65 72 76 65 84 69 58 94 90 61 109 102 83
-149 124 55 150 126 55 156 128 53 158 126 53 155 128 52 156 128 53 152 124 51 155 128 52
-154 129 46 162 124 55 158 127 55 150 126 55 159 126 56 162 125 53 110 92 61 58 65 54
-57 63 61 58 62 63 213 212 223 254 254 254 255 255 255 254 254 254 251 251 251 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 252 252 252 255 255 255 255 255 255 252 252 252 255 255 255 253 253 253
-253 253 253 254 254 254 255 255 255 255 255 255 254 254 254 255 255 255 252 252 252 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 250 255 254 255 251 253 255 254 254 255 255 104 112 110 58 65 69 66 60 61 128 113 57
-158 127 55 155 128 52 157 126 52 162 125 53 166 129 59 152 124 51 158 127 55 156 124 53
-158 124 56 158 125 54 158 126 53 156 124 53 158 125 54 159 126 56 159 126 56 158 125 54
-156 125 56 156 125 56 158 127 55 156 126 54 156 126 54 156 126 54 159 126 56 159 126 56
-161 124 50 162 125 53 162 125 53 158 124 53 157 126 52 158 127 55 158 124 54 159 126 56
-159 126 56 152 124 51 155 126 57 159 126 56 158 124 53 128 113 57 62 65 65 58 62 65
-58 62 63 145 151 154 253 255 254 255 255 255 252 252 252 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-251 251 251 252 252 252 255 255 255 255 255 255 255 255 255 254 254 254 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 252 252 252 255 255 255 251 251 251 255 255 255 251 251 251
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 252 251 251 251 251 253 253 255 255 255 255 145 151 154 57 61 64 59 60 64 85 80 60
-155 128 52 155 126 57 155 126 57 159 126 56 152 124 51 158 134 59 155 126 57 157 124 59
-157 124 59 159 126 56 158 132 49 158 132 49 155 128 52 155 127 54 157 126 52 161 124 50
-159 126 56 159 126 56 156 126 54 156 124 53 156 126 54 158 127 55 159 126 56 158 124 54
-150 128 52 155 126 57 157 124 59 157 124 59 158 124 56 158 125 54 158 124 53 161 124 50
-158 124 56 156 128 53 162 124 55 162 124 52 147 124 59 71 72 69 56 66 64 59 64 62
-88 95 83 241 240 247 255 255 255 251 251 251 254 254 254 255 255 255 252 252 252 254 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 252 252 252 255 255 255 253 253 253 255 255 255 255 255 255 253 253 253 255 255 255
-254 254 254 254 254 254 252 252 252 253 253 253 255 255 255 255 255 255 250 247 249 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 255 251 255 255 253 255 255 255 253 253 255 202 204 206 54 64 59 60 64 65 60 61 69
-113 104 59 147 124 59 161 124 50 156 124 53 157 124 59 152 124 51 158 126 53 158 126 53
-158 132 49 157 126 52 156 124 53 158 124 54 158 125 54 158 126 53 155 127 54 155 127 54
-156 129 45 152 124 51 156 124 53 158 127 55 158 127 55 156 126 54 155 128 52 155 128 52
-155 127 54 156 128 53 155 128 52 156 126 54 158 127 55 157 124 59 155 126 57 155 126 57
-158 125 54 158 126 53 159 126 56 128 113 57 71 72 69 53 63 60 53 63 60 57 63 61
-213 212 223 255 255 255 255 255 255 255 255 255 255 255 255 253 253 253 255 255 255 254 254 254
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-253 253 253 253 253 253 254 254 254 255 255 255 255 255 255 254 254 254 255 255 255 254 254 254
-253 253 253 254 254 254 255 255 255 254 254 254 252 252 252 255 255 255 255 255 255 253 253 253
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 253 254 255 251 254 255 251 255 253 254 253 253 255 104 112 110 54 64 59 53 60 64
-66 60 61 110 92 61 157 124 59 161 124 50 164 134 50 155 128 52 152 124 51 159 126 56
-156 126 54 156 126 54 158 127 55 159 126 56 159 126 56 157 124 59 157 124 59 159 126 56
-157 124 59 158 127 55 158 127 55 156 124 53 152 124 51 156 124 53 156 125 56 157 124 59
-162 124 55 158 124 54 156 126 54 156 128 53 156 128 53 152 124 51 156 125 56 156 125 56
-162 125 53 157 127 54 113 104 59 62 65 65 60 64 65 58 65 54 58 65 69 172 178 183
-254 254 254 255 255 255 253 253 253 253 253 253 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 254 254 255 255 255 255 255 255 255 255 255 253 253 253 254 254 254 255 255 255 254 254 254
-255 255 255 253 253 253 255 255 255 255 255 255 251 251 251 254 254 254 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 254 255 254 255 251 251 251 251 253 253 255 255 255 253 230 230 230 71 72 69 62 66 62
-62 65 65 62 61 67 84 69 58 142 120 69 155 128 52 152 127 56 155 126 57 158 124 54
-154 129 46 155 128 52 155 126 57 158 124 56 158 126 53 155 128 52 155 128 52 155 128 52
-159 126 56 156 124 53 158 124 53 159 126 56 159 126 56 159 126 56 158 126 53 158 126 53
-158 125 54 156 124 53 157 124 59 156 125 56 157 126 52 157 126 52 159 134 56 152 124 51
-147 124 59 94 90 61 62 70 69 53 63 60 59 64 62 58 62 65 172 178 183 255 253 254
-253 253 253 255 255 255 255 255 255 255 255 255 255 255 255 253 253 253 252 252 252 255 254 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 253 253 253 253 253 253 255 255 255 254 254 254 255 255 255 252 252 252 254 254 254
-253 253 253 255 255 255 253 253 253 254 254 254 255 255 255 255 255 255 253 253 253 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 253 254 254 252 251 253 253 255 255 254 255 253 252 247 253 255 254 213 212 223 71 72 69
-58 62 65 53 63 60 56 66 64 62 65 65 97 78 60 128 113 57 155 126 57 155 128 52
-158 124 56 158 125 54 158 126 53 156 126 54 156 125 56 158 127 55 159 126 56 158 126 53
-155 127 54 157 127 54 158 127 55 156 124 53 156 124 53 158 127 55 157 127 54 155 128 52
-155 128 52 156 126 54 159 126 56 158 124 53 161 124 50 158 127 55 147 124 59 113 104 59
-71 65 56 58 64 64 53 60 64 62 65 65 68 69 75 187 189 188 252 252 252 253 255 254
-255 255 255 253 253 253 255 255 255 255 255 255 253 253 253 255 253 254 255 254 255 251 251 251
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 254 254 255 255 255 255 255 255 253 253 253 255 255 255 255 255 255 251 251 251 241 240 247
-113 113 120 57 63 61 56 64 62 56 64 62 58 64 64 59 64 62 72 73 56 88 95 83
-140 101 45 157 124 59 157 124 59 152 124 51 158 127 55 156 125 56 159 126 56 156 124 53
-155 128 52 156 128 53 155 127 54 156 126 54 156 126 54 156 126 54 157 127 54 155 127 54
-154 129 46 155 128 52 157 126 52 157 124 59 128 113 57 94 90 61 71 68 65 53 67 71
-59 64 62 59 64 62 57 58 61 97 100 105 230 230 230 253 253 253 255 255 255 254 254 254
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 254 254 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 254 254 254
-254 254 255 202 204 206 104 112 110 57 60 56 57 61 64 62 65 65 59 59 56 62 66 56
-60 64 65 62 66 56 85 80 60 101 91 62 113 104 59 128 113 57 156 128 53 158 132 49
-157 126 52 158 125 54 159 126 56 159 126 56 159 126 56 158 124 53 158 125 54 159 126 56
-128 99 63 110 92 61 94 90 61 71 68 65 53 63 60 58 64 64 59 64 62 59 64 62
-57 63 61 71 72 69 172 178 183 253 255 254 253 255 254 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 253 253 253 254 254 254 255 255 255
-255 254 255 255 255 253 255 255 253 202 206 211 140 141 138 58 62 65 58 62 65 59 64 62
-58 62 65 57 61 64 60 64 65 59 60 62 60 60 63 60 60 63 62 65 65 71 68 65
-72 76 65 72 76 65 72 76 65 72 76 65 72 76 65 72 76 65 71 65 56 59 59 56
-62 65 65 60 60 63 57 63 61 57 63 61 60 64 65 60 64 65 57 58 61 81 77 81
-156 160 157 241 240 247 253 253 253 255 255 255 255 255 255 254 254 254 254 254 254 251 251 251
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 254 254 254 254 254 254 255 255 255 255 255 255 254 254 254 253 253 253 254 254 254
-251 251 251 254 252 251 255 255 253 254 254 254 253 253 255 241 240 247 187 189 188 113 113 120
-71 72 69 56 66 64 56 66 64 53 60 64 60 64 65 57 63 63 59 64 62 59 64 62
-57 61 64 60 64 65 60 64 65 57 63 61 57 63 61 60 64 65 56 66 64 58 65 69
-58 62 65 62 70 69 58 65 69 62 61 67 62 61 67 113 113 120 187 189 188 254 252 251
-255 255 255 255 255 255 255 255 255 252 252 252 255 255 255 251 251 251 253 253 253 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 254 254 254 254 254 254 254 254 255 255 255 255 255 255 255 255 255 255 255 255 254 254 254
-254 255 255 255 255 255 255 255 253 254 251 249 255 255 253 251 251 251 254 255 255 254 255 255
-255 255 253 224 220 212 172 178 183 140 141 138 104 112 110 58 65 69 53 63 60 59 64 62
-58 62 65 58 62 65 58 62 63 57 63 61 59 64 62 57 63 63 53 60 64 58 62 65
-68 69 75 104 112 110 156 160 157 187 189 188 241 240 247 253 255 254 253 253 255 253 253 255
-255 255 255 252 252 252 255 255 255 252 252 252 255 255 255 255 255 255 253 253 253 254 254 254
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-254 254 254 255 255 255 255 255 255 254 254 254 254 254 254 255 255 255 255 255 255 255 255 255
-249 252 251 254 255 255 251 251 251 251 251 251 254 255 251 254 255 251 254 254 253 254 252 251
-255 255 255 254 254 255 255 255 255 254 254 255 254 254 254 254 254 253 254 255 251 202 204 206
-202 204 206 202 204 206 202 206 211 202 206 211 202 204 206 202 204 206 219 227 224 253 255 254
-254 255 251 254 255 251 253 252 247 254 255 251 254 255 251 254 255 251 253 255 254 253 255 254
-253 253 253 255 255 255 255 255 255 255 255 255 252 252 252 255 255 255 252 252 252 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/configs/empty b/recipes-kernel/linux/linux-ti33x-psp-3.2/configs/empty
deleted file mode 100644
index e69de29..0000000
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/led/0001-leds-heartbeat-stop-on-shutdown-reboot-or-panic.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/led/0001-leds-heartbeat-stop-on-shutdown-reboot-or-panic.patch
deleted file mode 100644
index bd24051..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/led/0001-leds-heartbeat-stop-on-shutdown-reboot-or-panic.patch
+++ /dev/null
@@ -1,67 +0,0 @@
-From a48682f0690f07aa31d3e9d5d24388f0aee0bf3d Mon Sep 17 00:00:00 2001
-From: Alexander Holler <hol... at ahsoftware.de>
-Date: Wed, 25 Apr 2012 00:50:03 +0200
-Subject: [PATCH 1/4] leds: heartbeat: stop on shutdown, reboot or panic
-
-A halted kernel should not show a heartbeat.
-
-Signed-off-by: Alexander Holler <hol... at ahsoftware.de>
-Signed-off-by: Koen Kooi <koen at dominion.thruhere.net>
----
- drivers/leds/ledtrig-heartbeat.c | 27 ++++++++++++++++++++++++++-
- 1 files changed, 26 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/leds/ledtrig-heartbeat.c b/drivers/leds/ledtrig-heartbeat.c
-index 759c0bb..31c234c 100644
---- a/drivers/leds/ledtrig-heartbeat.c
-+++ b/drivers/leds/ledtrig-heartbeat.c
-@@ -18,6 +18,7 @@
- #include <linux/timer.h>
- #include <linux/sched.h>
- #include <linux/leds.h>
-+#include <linux/reboot.h>
- #include "leds.h"
-
- struct heartbeat_trig_data {
-@@ -101,13 +102,37 @@ static struct led_trigger heartbeat_led_trigger = {
- .deactivate = heartbeat_trig_deactivate,
- };
-
-+static int heartbeat_reboot_notifier(struct notifier_block *nb,
-+ unsigned long code, void *unused)
-+{
-+ led_trigger_unregister(&heartbeat_led_trigger);
-+ return NOTIFY_DONE;
-+}
-+
-+static struct notifier_block heartbeat_reboot_nb = {
-+ .notifier_call = heartbeat_reboot_notifier,
-+};
-+
-+static struct notifier_block heartbeat_panic_nb = {
-+ .notifier_call = heartbeat_reboot_notifier,
-+};
-+
- static int __init heartbeat_trig_init(void)
- {
-- return led_trigger_register(&heartbeat_led_trigger);
-+ int rc = led_trigger_register(&heartbeat_led_trigger);
-+ if (!rc) {
-+ atomic_notifier_chain_register(&panic_notifier_list,
-+ &heartbeat_panic_nb);
-+ register_reboot_notifier(&heartbeat_reboot_nb);
-+ }
-+ return rc;
- }
-
- static void __exit heartbeat_trig_exit(void)
- {
-+ unregister_reboot_notifier(&heartbeat_reboot_nb);
-+ atomic_notifier_chain_unregister(&panic_notifier_list,
-+ &heartbeat_panic_nb);
- led_trigger_unregister(&heartbeat_led_trigger);
- }
-
---
-1.7.7.6
-
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
deleted file mode 100644
index 2ea9652..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0001-USB-convert-drivers-net-to-use-module_usb_driver.patch
+++ /dev/null
@@ -1,80 +0,0 @@
-From d8e323a5bb24b2deefa6b80bb129b2d2d9db3184 Mon Sep 17 00:00:00 2001
-From: Greg Kroah-Hartman <gregkh at suse.de>
-Date: Fri, 18 Nov 2011 09:44:20 -0800
-Subject: [PATCH 01/16] USB: convert drivers/net/* to use module_usb_driver()
-
-This converts the drivers in drivers/net/* to use the
-module_usb_driver() macro which makes the code smaller and a bit
-simpler.
-
-Added bonus is that it removes some unneeded kernel log messages about
-drivers loading and/or unloading.
-
-Cc: Wolfgang Grandegger <wg at grandegger.com>
-Cc: Samuel Ortiz <samuel at sortiz.org>
-Cc: Oliver Neukum <oliver at neukum.name>
-Cc: Peter Korsgaard <jacmet at sunsite.dk>
-Cc: Petko Manolov <petkan at users.sourceforge.net>
-Cc: Steve Glendinning <steve.glendinning at smsc.com>
-Cc: Christian Lamparter <chunkeey at googlemail.com>
-Cc: "John W. Linville" <linville at tuxdriver.com>
-Cc: Dan Williams <dcbw at redhat.com>
-Cc: Jussi Kivilinna <jussi.kivilinna at mbnet.fi>
-Cc: Ivo van Doorn <IvDoorn at gmail.com>
-Cc: Gertjan van Wingerde <gwingerde at gmail.com>
-Cc: Helmut Schaa <helmut.schaa at googlemail.com>
-Cc: Herton Ronaldo Krzesinski <herton at canonical.com>
-Cc: Hin-Tak Leung <htl10 at users.sourceforge.net>
-Cc: Larry Finger <Larry.Finger at lwfinger.net>
-Cc: Chaoming Li <chaoming_li at realsil.com.cn>
-Cc: Lucas De Marchi <lucas.demarchi at profusion.mobi>
-Cc: "David S. Miller" <davem at davemloft.net>
-Cc: Roel Kluin <roel.kluin at gmail.com>
-Cc: Paul Gortmaker <paul.gortmaker at windriver.com>
-Cc: Jiri Pirko <jpirko at redhat.com>
-Cc: Pavel Roskin <proski at gnu.org>
-Cc: Yoann DI-RUZZA <y.diruzza at lim.eu>
-Cc: George <george0505 at realtek.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- drivers/net/wireless/libertas/if_usb.c | 24 +-----------------------
- 1 file changed, 1 insertion(+), 23 deletions(-)
-
-diff --git a/drivers/net/wireless/libertas/if_usb.c b/drivers/net/wireless/libertas/if_usb.c
-index db879c3..b5fbbc7 100644
---- a/drivers/net/wireless/libertas/if_usb.c
-+++ b/drivers/net/wireless/libertas/if_usb.c
-@@ -1184,29 +1184,7 @@ static struct usb_driver if_usb_driver = {
- .reset_resume = if_usb_resume,
- };
-
--static int __init if_usb_init_module(void)
--{
-- int ret = 0;
--
-- lbs_deb_enter(LBS_DEB_MAIN);
--
-- ret = usb_register(&if_usb_driver);
--
-- lbs_deb_leave_args(LBS_DEB_MAIN, "ret %d", ret);
-- return ret;
--}
--
--static void __exit if_usb_exit_module(void)
--{
-- lbs_deb_enter(LBS_DEB_MAIN);
--
-- usb_deregister(&if_usb_driver);
--
-- lbs_deb_leave(LBS_DEB_MAIN);
--}
--
--module_init(if_usb_init_module);
--module_exit(if_usb_exit_module);
-+module_usb_driver(if_usb_driver);
-
- MODULE_DESCRIPTION("8388 USB WLAN Driver");
- MODULE_AUTHOR("Marvell International Ltd. and Red Hat, Inc.");
---
-1.7.9.5
-
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
deleted file mode 100644
index 80d84ed..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0002-net-fix-assignment-of-0-1-to-bool-variables.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From f5bec38aff7e124933b0ad9b9c6bf0481d01bdfa Mon Sep 17 00:00:00 2001
-From: Rusty Russell <rusty at rustcorp.com.au>
-Date: Mon, 19 Dec 2011 13:56:45 +0000
-Subject: [PATCH 02/16] net: fix assignment of 0/1 to bool variables.
-
-DaveM said:
- Please, this kind of stuff rots forever and not using bool properly
- drives me crazy.
-
-Joe Perches <joe at perches.com> gave me the spatch script:
-
- @@
- bool b;
- @@
- -b = 0
- +b = false
- @@
- bool b;
- @@
- -b = 1
- +b = true
-
-I merely installed coccinelle, read the documentation and took credit.
-
-Signed-off-by: Rusty Russell <rusty at rustcorp.com.au>
-Signed-off-by: David S. Miller <davem at davemloft.net>
----
- drivers/net/wireless/libertas/if_cs.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/net/wireless/libertas/if_cs.c b/drivers/net/wireless/libertas/if_cs.c
-index e269351..3f7bf4d 100644
---- a/drivers/net/wireless/libertas/if_cs.c
-+++ b/drivers/net/wireless/libertas/if_cs.c
-@@ -859,7 +859,7 @@ static int if_cs_probe(struct pcmcia_device *p_dev)
- * Most of the libertas cards can do unaligned register access, but some
- * weird ones cannot. That's especially true for the CF8305 card.
- */
-- card->align_regs = 0;
-+ card->align_regs = false;
-
- card->model = get_model(p_dev->manf_id, p_dev->card_id);
- if (card->model == MODEL_UNKNOWN) {
-@@ -871,7 +871,7 @@ static int if_cs_probe(struct pcmcia_device *p_dev)
- /* Check if we have a current silicon */
- prod_id = if_cs_read8(card, IF_CS_PRODUCT_ID);
- if (card->model == MODEL_8305) {
-- card->align_regs = 1;
-+ card->align_regs = true;
- if (prod_id < IF_CS_CF8305_B1_REV) {
- pr_err("8305 rev B0 and older are not supported\n");
- ret = -ENODEV;
---
-1.7.9.5
-
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
deleted file mode 100644
index b60661c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0003-switch-debugfs-to-umode_t.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 5595b911189c8c9cac230dbe6f76c73352a57fcd Mon Sep 17 00:00:00 2001
-From: Al Viro <viro at zeniv.linux.org.uk>
-Date: Sun, 24 Jul 2011 04:33:43 -0400
-Subject: [PATCH 03/16] switch debugfs to umode_t
-
-Signed-off-by: Al Viro <viro at zeniv.linux.org.uk>
----
- drivers/net/wireless/libertas/debugfs.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/net/wireless/libertas/debugfs.c b/drivers/net/wireless/libertas/debugfs.c
-index d8d8f0d..c192671 100644
---- a/drivers/net/wireless/libertas/debugfs.c
-+++ b/drivers/net/wireless/libertas/debugfs.c
-@@ -704,7 +704,7 @@ out_unlock:
-
- struct lbs_debugfs_files {
- const char *name;
-- int perm;
-+ umode_t perm;
- struct file_operations fops;
- };
-
---
-1.7.9.5
-
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
deleted file mode 100644
index 2f034d1..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0004-drivers-net-Remove-unnecessary-k.alloc-v.alloc-OOM-m.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From 018746aab6a8f31b27788607c0045489f2996424 Mon Sep 17 00:00:00 2001
-From: Joe Perches <joe at perches.com>
-Date: Sun, 29 Jan 2012 12:56:23 +0000
-Subject: [PATCH 04/16] drivers/net: Remove unnecessary k.alloc/v.alloc OOM
- messages
-
-alloc failures use dump_stack so emitting an additional
-out-of-memory message is an unnecessary duplication.
-
-Remove the allocation failure messages.
-
-Signed-off-by: Joe Perches <joe at perches.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
----
- drivers/net/wireless/libertas/if_cs.c | 5 ++---
- drivers/net/wireless/libertas/if_usb.c | 4 +---
- 2 files changed, 3 insertions(+), 6 deletions(-)
-
-diff --git a/drivers/net/wireless/libertas/if_cs.c b/drivers/net/wireless/libertas/if_cs.c
-index 3f7bf4d..234ee88 100644
---- a/drivers/net/wireless/libertas/if_cs.c
-+++ b/drivers/net/wireless/libertas/if_cs.c
-@@ -815,10 +815,9 @@ static int if_cs_probe(struct pcmcia_device *p_dev)
- lbs_deb_enter(LBS_DEB_CS);
-
- card = kzalloc(sizeof(struct if_cs_card), GFP_KERNEL);
-- if (!card) {
-- pr_err("error in kzalloc\n");
-+ if (!card)
- goto out;
-- }
-+
- card->p_dev = p_dev;
- p_dev->priv = card;
-
-diff --git a/drivers/net/wireless/libertas/if_usb.c b/drivers/net/wireless/libertas/if_usb.c
-index b5fbbc7..74da5f1 100644
---- a/drivers/net/wireless/libertas/if_usb.c
-+++ b/drivers/net/wireless/libertas/if_usb.c
-@@ -261,10 +261,8 @@ static int if_usb_probe(struct usb_interface *intf,
- udev = interface_to_usbdev(intf);
-
- cardp = kzalloc(sizeof(struct if_usb_card), GFP_KERNEL);
-- if (!cardp) {
-- pr_err("Out of memory allocating private data\n");
-+ if (!cardp)
- goto error;
-- }
-
- setup_timer(&cardp->fw_timeout, if_usb_fw_timeo, (unsigned long)cardp);
- init_waitqueue_head(&cardp->fw_wq);
---
-1.7.9.5
-
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
deleted file mode 100644
index d574fde..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0005-libertas-remove-dump_survey-implementation.patch
+++ /dev/null
@@ -1,80 +0,0 @@
-From 5613011f4fa76a08aab30731557cc91699407d11 Mon Sep 17 00:00:00 2001
-From: Daniel Drake <dsd at laptop.org>
-Date: Wed, 14 Mar 2012 22:34:33 +0000
-Subject: [PATCH 05/16] libertas: remove dump_survey implementation
-
-libertas provides a dump_survey implementation based on reading of
-a RSSI value. However, this RSSI value is calculated based on the
-last received beacon from the associated AP - it is not a good
-way of surveying a channel in general, and even causes an error
-if the card is not associated to a network.
-
-As this is not appropriate as a survey, remove it. This fixes an
-issue where something in userspace is repeatedly calling site-survey
-during boot, resulting in many repeated errors as the RSSI value cannot
-be read before associating.
-
-Signed-off-by: Daniel Drake <dsd at laptop.org>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
----
- drivers/net/wireless/libertas/cfg.c | 37 -----------------------------------
- 1 file changed, 37 deletions(-)
-
-diff --git a/drivers/net/wireless/libertas/cfg.c b/drivers/net/wireless/libertas/cfg.c
-index db64ef1..72e2c8e 100644
---- a/drivers/net/wireless/libertas/cfg.c
-+++ b/drivers/net/wireless/libertas/cfg.c
-@@ -1628,42 +1628,6 @@ static int lbs_cfg_get_station(struct wiphy *wiphy, struct net_device *dev,
-
-
- /*
-- * "Site survey", here just current channel and noise level
-- */
--
--static int lbs_get_survey(struct wiphy *wiphy, struct net_device *dev,
-- int idx, struct survey_info *survey)
--{
-- struct lbs_private *priv = wiphy_priv(wiphy);
-- s8 signal, noise;
-- int ret;
--
-- if (dev == priv->mesh_dev)
-- return -EOPNOTSUPP;
--
-- if (idx != 0)
-- ret = -ENOENT;
--
-- lbs_deb_enter(LBS_DEB_CFG80211);
--
-- survey->channel = ieee80211_get_channel(wiphy,
-- ieee80211_channel_to_frequency(priv->channel,
-- IEEE80211_BAND_2GHZ));
--
-- ret = lbs_get_rssi(priv, &signal, &noise);
-- if (ret == 0) {
-- survey->filled = SURVEY_INFO_NOISE_DBM;
-- survey->noise = noise;
-- }
--
-- lbs_deb_leave_args(LBS_DEB_CFG80211, "ret %d", ret);
-- return ret;
--}
--
--
--
--
--/*
- * Change interface
- */
-
-@@ -2063,7 +2027,6 @@ static struct cfg80211_ops lbs_cfg80211_ops = {
- .del_key = lbs_cfg_del_key,
- .set_default_key = lbs_cfg_set_default_key,
- .get_station = lbs_cfg_get_station,
-- .dump_survey = lbs_get_survey,
- .change_virtual_intf = lbs_change_intf,
- .join_ibss = lbs_join_ibss,
- .leave_ibss = lbs_leave_ibss,
---
-1.7.9.5
-
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
deleted file mode 100644
index 3927d6e..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0006-wireless-libertas-remove-redundant-NULL-tests-before.patch
+++ /dev/null
@@ -1,95 +0,0 @@
-From ae3df364b3ec34ab314bcd058e1d3ae86bb8c16f Mon Sep 17 00:00:00 2001
-From: Jesper Juhl <jj at chaosbits.net>
-Date: Mon, 9 Apr 2012 22:51:07 +0200
-Subject: [PATCH 06/16] wireless, libertas: remove redundant NULL tests before
- calling release_firmware()
-
-release_firmware() tests for, and deals gracefully with, NULL
-pointers. Remove redundant explicit tests before calling the function.
-
-Signed-off-by: Jesper Juhl <jj at chaosbits.net>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
----
- drivers/net/wireless/libertas/if_cs.c | 6 ++----
- drivers/net/wireless/libertas/if_sdio.c | 6 ++----
- drivers/net/wireless/libertas/if_spi.c | 6 ++----
- drivers/net/wireless/libertas/main.c | 12 ++++--------
- 4 files changed, 10 insertions(+), 20 deletions(-)
-
-diff --git a/drivers/net/wireless/libertas/if_cs.c b/drivers/net/wireless/libertas/if_cs.c
-index 234ee88..171a06b 100644
---- a/drivers/net/wireless/libertas/if_cs.c
-+++ b/drivers/net/wireless/libertas/if_cs.c
-@@ -951,10 +951,8 @@ out2:
- out1:
- pcmcia_disable_device(p_dev);
- out:
-- if (helper)
-- release_firmware(helper);
-- if (mainfw)
-- release_firmware(mainfw);
-+ release_firmware(helper);
-+ release_firmware(mainfw);
-
- lbs_deb_leave_args(LBS_DEB_CS, "ret %d", ret);
- return ret;
-diff --git a/drivers/net/wireless/libertas/if_sdio.c b/drivers/net/wireless/libertas/if_sdio.c
-index 9804ebc..15bfe2f 100644
---- a/drivers/net/wireless/libertas/if_sdio.c
-+++ b/drivers/net/wireless/libertas/if_sdio.c
-@@ -751,10 +751,8 @@ success:
- ret = 0;
-
- out:
-- if (helper)
-- release_firmware(helper);
-- if (mainfw)
-- release_firmware(mainfw);
-+ release_firmware(helper);
-+ release_firmware(mainfw);
-
- lbs_deb_leave_args(LBS_DEB_SDIO, "ret %d", ret);
- return ret;
-diff --git a/drivers/net/wireless/libertas/if_spi.c b/drivers/net/wireless/libertas/if_spi.c
-index 728baa4..46a668e 100644
---- a/drivers/net/wireless/libertas/if_spi.c
-+++ b/drivers/net/wireless/libertas/if_spi.c
-@@ -1095,10 +1095,8 @@ static int if_spi_init_card(struct if_spi_card *card)
- goto out;
-
- out:
-- if (helper)
-- release_firmware(helper);
-- if (mainfw)
-- release_firmware(mainfw);
-+ release_firmware(helper);
-+ release_firmware(mainfw);
-
- lbs_deb_leave_args(LBS_DEB_SPI, "err %d\n", err);
-
-diff --git a/drivers/net/wireless/libertas/main.c b/drivers/net/wireless/libertas/main.c
-index 957681d..3b81b70 100644
---- a/drivers/net/wireless/libertas/main.c
-+++ b/drivers/net/wireless/libertas/main.c
-@@ -1269,14 +1269,10 @@ int lbs_get_firmware(struct device *dev, const char *user_helper,
-
- fail:
- /* Failed */
-- if (*helper) {
-- release_firmware(*helper);
-- *helper = NULL;
-- }
-- if (*mainfw) {
-- release_firmware(*mainfw);
-- *mainfw = NULL;
-- }
-+ release_firmware(*helper);
-+ *helper = NULL;
-+ release_firmware(*mainfw);
-+ *mainfw = NULL;
-
- return -ENOENT;
- }
---
-1.7.9.5
-
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
deleted file mode 100644
index 3a31eb7..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0007-libertas-fix-signedness-bug-in-lbs_auth_to_authtype.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From 01e8e6be47e98db59320a593d2854b8bcaad7aca Mon Sep 17 00:00:00 2001
-From: Amitkumar Karwar <akarwar at marvell.com>
-Date: Wed, 28 Mar 2012 11:38:01 -0700
-Subject: [PATCH 07/16] libertas: fix signedness bug in lbs_auth_to_authtype()
-
-Return type for lbs_auth_to_authtype() is changed from "u8" to
-"int" to return negative error code correctly.
-Also an error check is added in connect handler for invalid auth
-type.
-
-Reported-by: Dan Carpenter <dan.carpenter at oracle.com>
-Signed-off-by: Amitkumar Karwar <akarwar at marvell.com>
-Signed-off-by: Kiran Divekar <dkiran at marvell.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
----
- drivers/net/wireless/libertas/cfg.c | 9 +++++++--
- 1 file changed, 7 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/net/wireless/libertas/cfg.c b/drivers/net/wireless/libertas/cfg.c
-index 72e2c8e..d5b2177 100644
---- a/drivers/net/wireless/libertas/cfg.c
-+++ b/drivers/net/wireless/libertas/cfg.c
-@@ -103,7 +103,7 @@ static const u32 cipher_suites[] = {
- * Convert NL80211's auth_type to the one from Libertas, see chapter 5.9.1
- * in the firmware spec
- */
--static u8 lbs_auth_to_authtype(enum nl80211_auth_type auth_type)
-+static int lbs_auth_to_authtype(enum nl80211_auth_type auth_type)
- {
- int ret = -ENOTSUPP;
-
-@@ -1408,7 +1408,12 @@ static int lbs_cfg_connect(struct wiphy *wiphy, struct net_device *dev,
- goto done;
- }
-
-- lbs_set_authtype(priv, sme);
-+ ret = lbs_set_authtype(priv, sme);
-+ if (ret == -ENOTSUPP) {
-+ wiphy_err(wiphy, "unsupported authtype 0x%x\n", sme->auth_type);
-+ goto done;
-+ }
-+
- lbs_set_radio(priv, preamble, 1);
-
- /* Do the actual association */
---
-1.7.9.5
-
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
deleted file mode 100644
index 302d091..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0008-drivers-net-wireless-libertas-if_usb.c-add-missing-d.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From c180cacfac2411fa690d5afbb983b53030102a3e Mon Sep 17 00:00:00 2001
-From: Julia Lawall <Julia.Lawall at lip6.fr>
-Date: Mon, 16 Apr 2012 17:44:00 +0200
-Subject: [PATCH 08/16] drivers/net/wireless/libertas/if_usb.c: add missing
- debugging code
-
-Add a corresponding leave call on error failure.
-
-Signed-off-by: Julia Lawall <Julia.Lawall at lip6.fr>
-Acked-by: Dan Williams <dcbw at redhat.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
----
- drivers/net/wireless/libertas/if_usb.c | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/net/wireless/libertas/if_usb.c b/drivers/net/wireless/libertas/if_usb.c
-index 74da5f1..ce4938d 100644
---- a/drivers/net/wireless/libertas/if_usb.c
-+++ b/drivers/net/wireless/libertas/if_usb.c
-@@ -1128,8 +1128,10 @@ static int if_usb_suspend(struct usb_interface *intf, pm_message_t message)
-
- lbs_deb_enter(LBS_DEB_USB);
-
-- if (priv->psstate != PS_STATE_FULL_POWER)
-- return -1;
-+ if (priv->psstate != PS_STATE_FULL_POWER) {
-+ ret = -1;
-+ goto out;
-+ }
-
- #ifdef CONFIG_OLPC
- if (machine_is_olpc()) {
---
-1.7.9.5
-
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
deleted file mode 100644
index 0a97c96..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0009-libertas-Firmware-loading-simplifications.patch
+++ /dev/null
@@ -1,618 +0,0 @@
-From d9087fc723bf7947eb149fb657072a8b3f96a532 Mon Sep 17 00:00:00 2001
-From: Daniel Drake <dsd at laptop.org>
-Date: Mon, 16 Apr 2012 23:52:42 +0100
-Subject: [PATCH 09/16] libertas: Firmware loading simplifications
-
-Remove the ability to pass module parameters with firmware filenames
-for USB and SDIO interfaces.
-
-Remove the ability to pass custom "user" filenames to lbs_get_firmware().
-
-Remove the ability to reprogram internal device memory with a different
-firmware from the USB driver (we don't know of any users), and simplify
-the OLPC firmware loading quirk to simply placing the OLPC firmware
-at the top of the list (we don't know of any users other than OLPC).
-
-Move lbs_get_firmware() into its own file.
-
-These simplifications should have no real-life effect but make the
-upcoming transition to asynchronous firmware loading considerably less
-painful.
-
-Signed-off-by: Daniel Drake <dsd at laptop.org>
-Acked-by: Dan Williams <dcbw at redhat.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
----
- drivers/net/wireless/libertas/Makefile | 1 +
- drivers/net/wireless/libertas/decl.h | 3 +-
- drivers/net/wireless/libertas/firmware.c | 79 ++++++++++++++
- drivers/net/wireless/libertas/if_cs.c | 4 +-
- drivers/net/wireless/libertas/if_sdio.c | 25 +----
- drivers/net/wireless/libertas/if_spi.c | 5 +-
- drivers/net/wireless/libertas/if_usb.c | 169 ++----------------------------
- drivers/net/wireless/libertas/main.c | 101 ------------------
- 8 files changed, 94 insertions(+), 293 deletions(-)
- create mode 100644 drivers/net/wireless/libertas/firmware.c
-
-diff --git a/drivers/net/wireless/libertas/Makefile b/drivers/net/wireless/libertas/Makefile
-index f7d01bf..eac72f7 100644
---- a/drivers/net/wireless/libertas/Makefile
-+++ b/drivers/net/wireless/libertas/Makefile
-@@ -6,6 +6,7 @@ libertas-y += ethtool.o
- libertas-y += main.o
- libertas-y += rx.o
- libertas-y += tx.o
-+libertas-y += firmware.o
- libertas-$(CONFIG_LIBERTAS_MESH) += mesh.o
-
- usb8xxx-objs += if_usb.o
-diff --git a/drivers/net/wireless/libertas/decl.h b/drivers/net/wireless/libertas/decl.h
-index bc951ab..2fb2e31 100644
---- a/drivers/net/wireless/libertas/decl.h
-+++ b/drivers/net/wireless/libertas/decl.h
-@@ -66,8 +66,7 @@ int lbs_exit_auto_deep_sleep(struct lbs_private *priv);
- u32 lbs_fw_index_to_data_rate(u8 index);
- u8 lbs_data_rate_to_fw_index(u32 rate);
-
--int lbs_get_firmware(struct device *dev, const char *user_helper,
-- const char *user_mainfw, u32 card_model,
-+int lbs_get_firmware(struct device *dev, u32 card_model,
- const struct lbs_fw_table *fw_table,
- const struct firmware **helper,
- const struct firmware **mainfw);
-diff --git a/drivers/net/wireless/libertas/firmware.c b/drivers/net/wireless/libertas/firmware.c
-new file mode 100644
-index 0000000..0c8c845
---- /dev/null
-+++ b/drivers/net/wireless/libertas/firmware.c
-@@ -0,0 +1,79 @@
-+/*
-+ * Firmware loading and handling functions.
-+ */
-+
-+#include <linux/firmware.h>
-+#include <linux/module.h>
-+
-+#include "decl.h"
-+
-+/**
-+ * lbs_get_firmware - Retrieves two-stage firmware
-+ *
-+ * @dev: A pointer to &device structure
-+ * @card_model: Bus-specific card model ID used to filter firmware table
-+ * elements
-+ * @fw_table: Table of firmware file names and device model numbers
-+ * terminated by an entry with a NULL helper name
-+ * @helper: On success, the helper firmware; caller must free
-+ * @mainfw: On success, the main firmware; caller must free
-+ *
-+ * returns: 0 on success, non-zero on failure
-+ */
-+int lbs_get_firmware(struct device *dev, u32 card_model,
-+ const struct lbs_fw_table *fw_table,
-+ const struct firmware **helper,
-+ const struct firmware **mainfw)
-+{
-+ const struct lbs_fw_table *iter;
-+ int ret;
-+
-+ BUG_ON(helper == NULL);
-+ BUG_ON(mainfw == NULL);
-+
-+ /* Search for firmware to use from the table. */
-+ iter = fw_table;
-+ while (iter && iter->helper) {
-+ if (iter->model != card_model)
-+ goto next;
-+
-+ if (*helper == NULL) {
-+ ret = request_firmware(helper, iter->helper, dev);
-+ if (ret)
-+ goto next;
-+
-+ /* If the device has one-stage firmware (ie cf8305) and
-+ * we've got it then we don't need to bother with the
-+ * main firmware.
-+ */
-+ if (iter->fwname == NULL)
-+ return 0;
-+ }
-+
-+ if (*mainfw == NULL) {
-+ ret = request_firmware(mainfw, iter->fwname, dev);
-+ if (ret) {
-+ /* Clear the helper to ensure we don't have
-+ * mismatched firmware pairs.
-+ */
-+ release_firmware(*helper);
-+ *helper = NULL;
-+ }
-+ }
-+
-+ if (*helper && *mainfw)
-+ return 0;
-+
-+ next:
-+ iter++;
-+ }
-+
-+ /* Failed */
-+ release_firmware(*helper);
-+ *helper = NULL;
-+ release_firmware(*mainfw);
-+ *mainfw = NULL;
-+
-+ return -ENOENT;
-+}
-+EXPORT_SYMBOL_GPL(lbs_get_firmware);
-diff --git a/drivers/net/wireless/libertas/if_cs.c b/drivers/net/wireless/libertas/if_cs.c
-index 171a06b..cee5052 100644
---- a/drivers/net/wireless/libertas/if_cs.c
-+++ b/drivers/net/wireless/libertas/if_cs.c
-@@ -890,8 +890,8 @@ static int if_cs_probe(struct pcmcia_device *p_dev)
- goto out2;
- }
-
-- ret = lbs_get_firmware(&p_dev->dev, NULL, NULL, card->model,
-- &fw_table[0], &helper, &mainfw);
-+ ret = lbs_get_firmware(&p_dev->dev, card->model, &fw_table[0],
-+ &helper, &mainfw);
- if (ret) {
- pr_err("failed to find firmware (%d)\n", ret);
- goto out2;
-diff --git a/drivers/net/wireless/libertas/if_sdio.c b/drivers/net/wireless/libertas/if_sdio.c
-index 15bfe2f..6590feb 100644
---- a/drivers/net/wireless/libertas/if_sdio.c
-+++ b/drivers/net/wireless/libertas/if_sdio.c
-@@ -65,12 +65,6 @@ static void if_sdio_interrupt(struct sdio_func *func);
- */
- static u8 user_rmmod;
-
--static char *lbs_helper_name = NULL;
--module_param_named(helper_name, lbs_helper_name, charp, 0644);
--
--static char *lbs_fw_name = NULL;
--module_param_named(fw_name, lbs_fw_name, charp, 0644);
--
- static const struct sdio_device_id if_sdio_ids[] = {
- { SDIO_DEVICE(SDIO_VENDOR_ID_MARVELL,
- SDIO_DEVICE_ID_MARVELL_LIBERTAS) },
-@@ -124,11 +118,6 @@ struct if_sdio_card {
- unsigned long ioport;
- unsigned int scratch_reg;
-
-- const char *helper;
-- const char *firmware;
-- bool helper_allocated;
-- bool firmware_allocated;
--
- u8 buffer[65536] __attribute__((aligned(4)));
-
- spinlock_t lock;
-@@ -725,8 +714,8 @@ static int if_sdio_prog_firmware(struct if_sdio_card *card)
- goto success;
- }
-
-- ret = lbs_get_firmware(&card->func->dev, lbs_helper_name, lbs_fw_name,
-- card->model, &fw_table[0], &helper, &mainfw);
-+ ret = lbs_get_firmware(&card->func->dev, card->model, &fw_table[0],
-+ &helper, &mainfw);
- if (ret) {
- pr_err("failed to find firmware (%d)\n", ret);
- goto out;
-@@ -1242,10 +1231,6 @@ free:
- kfree(packet);
- }
-
-- if (card->helper_allocated)
-- kfree(card->helper);
-- if (card->firmware_allocated)
-- kfree(card->firmware);
- kfree(card);
-
- goto out;
-@@ -1293,12 +1278,6 @@ static void if_sdio_remove(struct sdio_func *func)
- kfree(packet);
- }
-
-- if (card->helper_allocated)
-- kfree(card->helper);
-- if (card->firmware_allocated)
-- kfree(card->firmware);
-- kfree(card);
--
- lbs_deb_leave(LBS_DEB_SDIO);
- }
-
-diff --git a/drivers/net/wireless/libertas/if_spi.c b/drivers/net/wireless/libertas/if_spi.c
-index 46a668e..56b0081 100644
---- a/drivers/net/wireless/libertas/if_spi.c
-+++ b/drivers/net/wireless/libertas/if_spi.c
-@@ -1064,9 +1064,8 @@ static int if_spi_init_card(struct if_spi_card *card)
- goto out;
- }
-
-- err = lbs_get_firmware(&card->spi->dev, NULL, NULL,
-- card->card_id, &fw_table[0], &helper,
-- &mainfw);
-+ err = lbs_get_firmware(&card->spi->dev, card->card_id,
-+ &fw_table[0], &helper, &mainfw);
- if (err) {
- netdev_err(priv->dev, "failed to find firmware (%d)\n",
- err);
-diff --git a/drivers/net/wireless/libertas/if_usb.c b/drivers/net/wireless/libertas/if_usb.c
-index ce4938d..f29471b 100644
---- a/drivers/net/wireless/libertas/if_usb.c
-+++ b/drivers/net/wireless/libertas/if_usb.c
-@@ -29,9 +29,6 @@
-
- #define MESSAGE_HEADER_LEN 4
-
--static char *lbs_fw_name = NULL;
--module_param_named(fw_name, lbs_fw_name, charp, 0644);
--
- MODULE_FIRMWARE("libertas/usb8388_v9.bin");
- MODULE_FIRMWARE("libertas/usb8388_v5.bin");
- MODULE_FIRMWARE("libertas/usb8388.bin");
-@@ -55,10 +52,7 @@ MODULE_DEVICE_TABLE(usb, if_usb_table);
-
- static void if_usb_receive(struct urb *urb);
- static void if_usb_receive_fwload(struct urb *urb);
--static int __if_usb_prog_firmware(struct if_usb_card *cardp,
-- const char *fwname, int cmd);
--static int if_usb_prog_firmware(struct if_usb_card *cardp,
-- const char *fwname, int cmd);
-+static int if_usb_prog_firmware(struct if_usb_card *cardp);
- static int if_usb_host_to_card(struct lbs_private *priv, uint8_t type,
- uint8_t *payload, uint16_t nb);
- static int usb_tx_block(struct if_usb_card *cardp, uint8_t *payload,
-@@ -67,69 +61,6 @@ static void if_usb_free(struct if_usb_card *cardp);
- static int if_usb_submit_rx_urb(struct if_usb_card *cardp);
- static int if_usb_reset_device(struct if_usb_card *cardp);
-
--/* sysfs hooks */
--
--/*
-- * Set function to write firmware to device's persistent memory
-- */
--static ssize_t if_usb_firmware_set(struct device *dev,
-- struct device_attribute *attr, const char *buf, size_t count)
--{
-- struct lbs_private *priv = to_net_dev(dev)->ml_priv;
-- struct if_usb_card *cardp = priv->card;
-- int ret;
--
-- BUG_ON(buf == NULL);
--
-- ret = if_usb_prog_firmware(cardp, buf, BOOT_CMD_UPDATE_FW);
-- if (ret == 0)
-- return count;
--
-- return ret;
--}
--
--/*
-- * lbs_flash_fw attribute to be exported per ethX interface through sysfs
-- * (/sys/class/net/ethX/lbs_flash_fw). Use this like so to write firmware to
-- * the device's persistent memory:
-- * echo usb8388-5.126.0.p5.bin > /sys/class/net/ethX/lbs_flash_fw
-- */
--static DEVICE_ATTR(lbs_flash_fw, 0200, NULL, if_usb_firmware_set);
--
--/**
-- * if_usb_boot2_set - write firmware to device's persistent memory
-- *
-- * @dev: target device
-- * @attr: device attributes
-- * @buf: firmware buffer to write
-- * @count: number of bytes to write
-- *
-- * returns: number of bytes written or negative error code
-- */
--static ssize_t if_usb_boot2_set(struct device *dev,
-- struct device_attribute *attr, const char *buf, size_t count)
--{
-- struct lbs_private *priv = to_net_dev(dev)->ml_priv;
-- struct if_usb_card *cardp = priv->card;
-- int ret;
--
-- BUG_ON(buf == NULL);
--
-- ret = if_usb_prog_firmware(cardp, buf, BOOT_CMD_UPDATE_BOOT2);
-- if (ret == 0)
-- return count;
--
-- return ret;
--}
--
--/*
-- * lbs_flash_boot2 attribute to be exported per ethX interface through sysfs
-- * (/sys/class/net/ethX/lbs_flash_boot2). Use this like so to write firmware
-- * to the device's persistent memory:
-- * echo usb8388-5.126.0.p5.bin > /sys/class/net/ethX/lbs_flash_boot2
-- */
--static DEVICE_ATTR(lbs_flash_boot2, 0200, NULL, if_usb_boot2_set);
--
- /**
- * if_usb_write_bulk_callback - callback function to handle the status
- * of the URB
-@@ -314,13 +245,10 @@ static int if_usb_probe(struct usb_interface *intf,
- }
-
- /* Upload firmware */
-- kparam_block_sysfs_write(fw_name);
-- if (__if_usb_prog_firmware(cardp, lbs_fw_name, BOOT_CMD_FW_BY_USB)) {
-- kparam_unblock_sysfs_write(fw_name);
-+ if (if_usb_prog_firmware(cardp)) {
- lbs_deb_usbd(&udev->dev, "FW upload failed\n");
- goto err_prog_firmware;
- }
-- kparam_unblock_sysfs_write(fw_name);
-
- if (!(priv = lbs_add_card(cardp, &intf->dev)))
- goto err_prog_firmware;
-@@ -349,14 +277,6 @@ static int if_usb_probe(struct usb_interface *intf,
- usb_get_dev(udev);
- usb_set_intfdata(intf, cardp);
-
-- if (device_create_file(&priv->dev->dev, &dev_attr_lbs_flash_fw))
-- netdev_err(priv->dev,
-- "cannot register lbs_flash_fw attribute\n");
--
-- if (device_create_file(&priv->dev->dev, &dev_attr_lbs_flash_boot2))
-- netdev_err(priv->dev,
-- "cannot register lbs_flash_boot2 attribute\n");
--
- /*
- * EHS_REMOVE_WAKEUP is not supported on all versions of the firmware.
- */
-@@ -389,9 +309,6 @@ static void if_usb_disconnect(struct usb_interface *intf)
-
- lbs_deb_enter(LBS_DEB_MAIN);
-
-- device_remove_file(&priv->dev->dev, &dev_attr_lbs_flash_boot2);
-- device_remove_file(&priv->dev->dev, &dev_attr_lbs_flash_fw);
--
- cardp->surprise_removed = 1;
-
- if (priv) {
-@@ -912,58 +829,12 @@ static int check_fwfile_format(const uint8_t *data, uint32_t totlen)
- return ret;
- }
-
--
--/**
--* if_usb_prog_firmware - programs the firmware subject to cmd
--*
--* @cardp: the if_usb_card descriptor
--* @fwname: firmware or boot2 image file name
--* @cmd: either BOOT_CMD_FW_BY_USB, BOOT_CMD_UPDATE_FW,
--* or BOOT_CMD_UPDATE_BOOT2.
--* returns: 0 or error code
--*/
--static int if_usb_prog_firmware(struct if_usb_card *cardp,
-- const char *fwname, int cmd)
--{
-- struct lbs_private *priv = cardp->priv;
-- unsigned long flags, caps;
-- int ret;
--
-- caps = priv->fwcapinfo;
-- if (((cmd == BOOT_CMD_UPDATE_FW) && !(caps & FW_CAPINFO_FIRMWARE_UPGRADE)) ||
-- ((cmd == BOOT_CMD_UPDATE_BOOT2) && !(caps & FW_CAPINFO_BOOT2_UPGRADE)))
-- return -EOPNOTSUPP;
--
-- /* Ensure main thread is idle. */
-- spin_lock_irqsave(&priv->driver_lock, flags);
-- while (priv->cur_cmd != NULL || priv->dnld_sent != DNLD_RES_RECEIVED) {
-- spin_unlock_irqrestore(&priv->driver_lock, flags);
-- if (wait_event_interruptible(priv->waitq,
-- (priv->cur_cmd == NULL &&
-- priv->dnld_sent == DNLD_RES_RECEIVED))) {
-- return -ERESTARTSYS;
-- }
-- spin_lock_irqsave(&priv->driver_lock, flags);
-- }
-- priv->dnld_sent = DNLD_BOOTCMD_SENT;
-- spin_unlock_irqrestore(&priv->driver_lock, flags);
--
-- ret = __if_usb_prog_firmware(cardp, fwname, cmd);
--
-- spin_lock_irqsave(&priv->driver_lock, flags);
-- priv->dnld_sent = DNLD_RES_RECEIVED;
-- spin_unlock_irqrestore(&priv->driver_lock, flags);
--
-- wake_up(&priv->waitq);
--
-- return ret;
--}
--
- /* table of firmware file names */
- static const struct {
- u32 model;
- const char *fwname;
- } fw_table[] = {
-+ { MODEL_8388, "libertas/usb8388_olpc.bin" },
- { MODEL_8388, "libertas/usb8388_v9.bin" },
- { MODEL_8388, "libertas/usb8388_v5.bin" },
- { MODEL_8388, "libertas/usb8388.bin" },
-@@ -971,35 +842,10 @@ static const struct {
- { MODEL_8682, "libertas/usb8682.bin" }
- };
-
--#ifdef CONFIG_OLPC
--
--static int try_olpc_fw(struct if_usb_card *cardp)
--{
-- int retval = -ENOENT;
--
-- /* try the OLPC firmware first; fall back to fw_table list */
-- if (machine_is_olpc() && cardp->model == MODEL_8388)
-- retval = request_firmware(&cardp->fw,
-- "libertas/usb8388_olpc.bin", &cardp->udev->dev);
-- return retval;
--}
--
--#else
--static int try_olpc_fw(struct if_usb_card *cardp) { return -ENOENT; }
--#endif /* !CONFIG_OLPC */
--
--static int get_fw(struct if_usb_card *cardp, const char *fwname)
-+static int get_fw(struct if_usb_card *cardp)
- {
- int i;
-
-- /* Try user-specified firmware first */
-- if (fwname)
-- return request_firmware(&cardp->fw, fwname, &cardp->udev->dev);
--
-- /* Handle OLPC firmware */
-- if (try_olpc_fw(cardp) == 0)
-- return 0;
--
- /* Otherwise search for firmware to use */
- for (i = 0; i < ARRAY_SIZE(fw_table); i++) {
- if (fw_table[i].model != cardp->model)
-@@ -1012,8 +858,7 @@ static int get_fw(struct if_usb_card *cardp, const char *fwname)
- return -ENOENT;
- }
-
--static int __if_usb_prog_firmware(struct if_usb_card *cardp,
-- const char *fwname, int cmd)
-+static int if_usb_prog_firmware(struct if_usb_card *cardp)
- {
- int i = 0;
- static int reset_count = 10;
-@@ -1021,7 +866,7 @@ static int __if_usb_prog_firmware(struct if_usb_card *cardp,
-
- lbs_deb_enter(LBS_DEB_USB);
-
-- ret = get_fw(cardp, fwname);
-+ ret = get_fw(cardp);
- if (ret) {
- pr_err("failed to find firmware (%d)\n", ret);
- goto done;
-@@ -1053,7 +898,7 @@ restart:
- do {
- int j = 0;
- i++;
-- if_usb_issue_boot_command(cardp, cmd);
-+ if_usb_issue_boot_command(cardp, BOOT_CMD_FW_BY_USB);
- /* wait for command response */
- do {
- j++;
-diff --git a/drivers/net/wireless/libertas/main.c b/drivers/net/wireless/libertas/main.c
-index 3b81b70..fa09585 100644
---- a/drivers/net/wireless/libertas/main.c
-+++ b/drivers/net/wireless/libertas/main.c
-@@ -1177,107 +1177,6 @@ void lbs_notify_command_response(struct lbs_private *priv, u8 resp_idx)
- }
- EXPORT_SYMBOL_GPL(lbs_notify_command_response);
-
--/**
-- * lbs_get_firmware - Retrieves two-stage firmware
-- *
-- * @dev: A pointer to &device structure
-- * @user_helper: User-defined helper firmware file
-- * @user_mainfw: User-defined main firmware file
-- * @card_model: Bus-specific card model ID used to filter firmware table
-- * elements
-- * @fw_table: Table of firmware file names and device model numbers
-- * terminated by an entry with a NULL helper name
-- * @helper: On success, the helper firmware; caller must free
-- * @mainfw: On success, the main firmware; caller must free
-- *
-- * returns: 0 on success, non-zero on failure
-- */
--int lbs_get_firmware(struct device *dev, const char *user_helper,
-- const char *user_mainfw, u32 card_model,
-- const struct lbs_fw_table *fw_table,
-- const struct firmware **helper,
-- const struct firmware **mainfw)
--{
-- const struct lbs_fw_table *iter;
-- int ret;
--
-- BUG_ON(helper == NULL);
-- BUG_ON(mainfw == NULL);
--
-- /* Try user-specified firmware first */
-- if (user_helper) {
-- ret = request_firmware(helper, user_helper, dev);
-- if (ret) {
-- dev_err(dev, "couldn't find helper firmware %s\n",
-- user_helper);
-- goto fail;
-- }
-- }
-- if (user_mainfw) {
-- ret = request_firmware(mainfw, user_mainfw, dev);
-- if (ret) {
-- dev_err(dev, "couldn't find main firmware %s\n",
-- user_mainfw);
-- goto fail;
-- }
-- }
--
-- if (*helper && *mainfw)
-- return 0;
--
-- /* Otherwise search for firmware to use. If neither the helper or
-- * the main firmware were specified by the user, then we need to
-- * make sure that found helper & main are from the same entry in
-- * fw_table.
-- */
-- iter = fw_table;
-- while (iter && iter->helper) {
-- if (iter->model != card_model)
-- goto next;
--
-- if (*helper == NULL) {
-- ret = request_firmware(helper, iter->helper, dev);
-- if (ret)
-- goto next;
--
-- /* If the device has one-stage firmware (ie cf8305) and
-- * we've got it then we don't need to bother with the
-- * main firmware.
-- */
-- if (iter->fwname == NULL)
-- return 0;
-- }
--
-- if (*mainfw == NULL) {
-- ret = request_firmware(mainfw, iter->fwname, dev);
-- if (ret && !user_helper) {
-- /* Clear the helper if it wasn't user-specified
-- * and the main firmware load failed, to ensure
-- * we don't have mismatched firmware pairs.
-- */
-- release_firmware(*helper);
-- *helper = NULL;
-- }
-- }
--
-- if (*helper && *mainfw)
-- return 0;
--
-- next:
-- iter++;
-- }
--
-- fail:
-- /* Failed */
-- release_firmware(*helper);
-- *helper = NULL;
-- release_firmware(*mainfw);
-- *mainfw = NULL;
--
-- return -ENOENT;
--}
--EXPORT_SYMBOL_GPL(lbs_get_firmware);
--
- static int __init lbs_init_module(void)
- {
- lbs_deb_enter(LBS_DEB_MAIN);
---
-1.7.9.5
-
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
deleted file mode 100644
index 6560442..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0010-libertas-harden-up-exit-paths.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 0afc10c9a90bdda020d6a8c03e3bfbb1103cdc5e Mon Sep 17 00:00:00 2001
-From: Daniel Drake <dsd at laptop.org>
-Date: Mon, 16 Apr 2012 23:53:02 +0100
-Subject: [PATCH 10/16] libertas: harden-up exit paths
-
-These simple sanity check avoids extra complexity in error paths when
-moving to asynchronous firmware loading (which means the device may fail to
-init some time after its creation).
-
-Signed-off-by: Daniel Drake <dsd at laptop.org>
-Acked-by: Dan Williams <dcbw at redhat.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
----
- drivers/net/wireless/libertas/main.c | 9 ++++++++-
- 1 file changed, 8 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/net/wireless/libertas/main.c b/drivers/net/wireless/libertas/main.c
-index fa09585..7eaf992 100644
---- a/drivers/net/wireless/libertas/main.c
-+++ b/drivers/net/wireless/libertas/main.c
-@@ -1033,7 +1033,9 @@ void lbs_remove_card(struct lbs_private *priv)
- lbs_deb_enter(LBS_DEB_MAIN);
-
- lbs_remove_mesh(priv);
-- lbs_scan_deinit(priv);
-+
-+ if (priv->wiphy_registered)
-+ lbs_scan_deinit(priv);
-
- /* worker thread destruction blocks on the in-flight command which
- * should have been cleared already in lbs_stop_card().
-@@ -1128,6 +1130,11 @@ void lbs_stop_card(struct lbs_private *priv)
- goto out;
- dev = priv->dev;
-
-+ /* If the netdev isn't registered, it means that lbs_start_card() was
-+ * never called so we have nothing to do here. */
-+ if (dev->reg_state != NETREG_REGISTERED)
-+ goto out;
-+
- netif_stop_queue(dev);
- netif_carrier_off(dev);
-
---
-1.7.9.5
-
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
deleted file mode 100644
index 4a31410..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0011-libertas-add-asynchronous-firmware-loading-capabilit.patch
+++ /dev/null
@@ -1,269 +0,0 @@
-From fb2e4573ebd25fff393594d8795bfd27bffee345 Mon Sep 17 00:00:00 2001
-From: Daniel Drake <dsd at laptop.org>
-Date: Mon, 16 Apr 2012 23:53:26 +0100
-Subject: [PATCH 11/16] libertas: add asynchronous firmware loading capability
-
-As described at
-http://article.gmane.org/gmane.linux.kernel.wireless.general/86084
-libertas is taking a long time to load because it loads firmware
-during module loading.
-
-Add a new API for interface drivers to load their firmware
-asynchronously. The same semantics of the firmware table are followed
-like before.
-
-Interface drivers will be converted in follow-up patches, then we can
-remove the old, synchronous firmware loading function.
-
-Signed-off-by: Daniel Drake <dsd at laptop.org>
-Acked-by: Dan Williams <dcbw at redhat.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
----
- drivers/net/wireless/libertas/decl.h | 8 ++
- drivers/net/wireless/libertas/dev.h | 10 +++
- drivers/net/wireless/libertas/firmware.c | 143 ++++++++++++++++++++++++++++++
- drivers/net/wireless/libertas/main.c | 3 +
- 4 files changed, 164 insertions(+)
-
-diff --git a/drivers/net/wireless/libertas/decl.h b/drivers/net/wireless/libertas/decl.h
-index 2fb2e31..84a3aa7 100644
---- a/drivers/net/wireless/libertas/decl.h
-+++ b/drivers/net/wireless/libertas/decl.h
-@@ -19,6 +19,10 @@ struct lbs_fw_table {
- };
-
- struct lbs_private;
-+typedef void (*lbs_fw_cb)(struct lbs_private *priv, int ret,
-+ const struct firmware *helper, const struct firmware *mainfw);
-+
-+struct lbs_private;
- struct sk_buff;
- struct net_device;
- struct cmd_ds_command;
-@@ -70,5 +74,9 @@ int lbs_get_firmware(struct device *dev, u32 card_model,
- const struct lbs_fw_table *fw_table,
- const struct firmware **helper,
- const struct firmware **mainfw);
-+int lbs_get_firmware_async(struct lbs_private *priv, struct device *device,
-+ u32 card_model, const struct lbs_fw_table *fw_table,
-+ lbs_fw_cb callback);
-+void lbs_wait_for_firmware_load(struct lbs_private *priv);
-
- #endif
-diff --git a/drivers/net/wireless/libertas/dev.h b/drivers/net/wireless/libertas/dev.h
-index f3fd447..6720054 100644
---- a/drivers/net/wireless/libertas/dev.h
-+++ b/drivers/net/wireless/libertas/dev.h
-@@ -7,6 +7,7 @@
- #define _LBS_DEV_H_
-
- #include "defs.h"
-+#include "decl.h"
- #include "host.h"
-
- #include <linux/kfifo.h>
-@@ -180,6 +181,15 @@ struct lbs_private {
- wait_queue_head_t scan_q;
- /* Whether the scan was initiated internally and not by cfg80211 */
- bool internal_scan;
-+
-+ /* Firmware load */
-+ u32 fw_model;
-+ wait_queue_head_t fw_waitq;
-+ struct device *fw_device;
-+ const struct firmware *helper_fw;
-+ const struct lbs_fw_table *fw_table;
-+ const struct lbs_fw_table *fw_iter;
-+ lbs_fw_cb fw_callback;
- };
-
- extern struct cmd_confirm_sleep confirm_sleep;
-diff --git a/drivers/net/wireless/libertas/firmware.c b/drivers/net/wireless/libertas/firmware.c
-index 0c8c845..cd23f1a 100644
---- a/drivers/net/wireless/libertas/firmware.c
-+++ b/drivers/net/wireless/libertas/firmware.c
-@@ -3,10 +3,151 @@
- */
-
- #include <linux/firmware.h>
-+#include <linux/firmware.h>
- #include <linux/module.h>
-
-+#include "dev.h"
- #include "decl.h"
-
-+static void load_next_firmware_from_table(struct lbs_private *private);
-+
-+static void lbs_fw_loaded(struct lbs_private *priv, int ret,
-+ const struct firmware *helper, const struct firmware *mainfw)
-+{
-+ unsigned long flags;
-+
-+ lbs_deb_fw("firmware load complete, code %d\n", ret);
-+
-+ /* User must free helper/mainfw */
-+ priv->fw_callback(priv, ret, helper, mainfw);
-+
-+ spin_lock_irqsave(&priv->driver_lock, flags);
-+ priv->fw_callback = NULL;
-+ wake_up(&priv->fw_waitq);
-+ spin_unlock_irqrestore(&priv->driver_lock, flags);
-+}
-+
-+static void do_load_firmware(struct lbs_private *priv, const char *name,
-+ void (*cb)(const struct firmware *fw, void *context))
-+{
-+ int ret;
-+
-+ lbs_deb_fw("Requesting %s\n", name);
-+ ret = request_firmware_nowait(THIS_MODULE, true, name,
-+ priv->fw_device, GFP_KERNEL, priv, cb);
-+ if (ret) {
-+ lbs_deb_fw("request_firmware_nowait error %d\n", ret);
-+ lbs_fw_loaded(priv, ret, NULL, NULL);
-+ }
-+}
-+
-+static void main_firmware_cb(const struct firmware *firmware, void *context)
-+{
-+ struct lbs_private *priv = context;
-+
-+ if (!firmware) {
-+ /* Failed to find firmware: try next table entry */
-+ load_next_firmware_from_table(priv);
-+ return;
-+ }
-+
-+ /* Firmware found! */
-+ lbs_fw_loaded(priv, 0, priv->helper_fw, firmware);
-+}
-+
-+static void helper_firmware_cb(const struct firmware *firmware, void *context)
-+{
-+ struct lbs_private *priv = context;
-+
-+ if (!firmware) {
-+ /* Failed to find firmware: try next table entry */
-+ load_next_firmware_from_table(priv);
-+ return;
-+ }
-+
-+ /* Firmware found! */
-+ if (priv->fw_iter->fwname) {
-+ priv->helper_fw = firmware;
-+ do_load_firmware(priv, priv->fw_iter->fwname, main_firmware_cb);
-+ } else {
-+ /* No main firmware needed for this helper --> success! */
-+ lbs_fw_loaded(priv, 0, firmware, NULL);
-+ }
-+}
-+
-+static void load_next_firmware_from_table(struct lbs_private *priv)
-+{
-+ const struct lbs_fw_table *iter;
-+
-+ if (!priv->fw_iter)
-+ iter = priv->fw_table;
-+ else
-+ iter = ++priv->fw_iter;
-+
-+ if (priv->helper_fw) {
-+ release_firmware(priv->helper_fw);
-+ priv->helper_fw = NULL;
-+ }
-+
-+next:
-+ if (!iter->helper) {
-+ /* End of table hit. */
-+ lbs_fw_loaded(priv, -ENOENT, NULL, NULL);
-+ return;
-+ }
-+
-+ if (iter->model != priv->fw_model) {
-+ iter++;
-+ goto next;
-+ }
-+
-+ priv->fw_iter = iter;
-+ do_load_firmware(priv, iter->helper, helper_firmware_cb);
-+}
-+
-+void lbs_wait_for_firmware_load(struct lbs_private *priv)
-+{
-+ wait_event(priv->fw_waitq, priv->fw_callback == NULL);
-+}
-+
-+/**
-+ * lbs_get_firmware_async - Retrieves firmware asynchronously. Can load
-+ * either a helper firmware and a main firmware (2-stage), or just the helper.
-+ *
-+ * @priv: Pointer to lbs_private instance
-+ * @dev: A pointer to &device structure
-+ * @card_model: Bus-specific card model ID used to filter firmware table
-+ * elements
-+ * @fw_table: Table of firmware file names and device model numbers
-+ * terminated by an entry with a NULL helper name
-+ * @callback: User callback to invoke when firmware load succeeds or fails.
-+ */
-+int lbs_get_firmware_async(struct lbs_private *priv, struct device *device,
-+ u32 card_model, const struct lbs_fw_table *fw_table,
-+ lbs_fw_cb callback)
-+{
-+ unsigned long flags;
-+
-+ spin_lock_irqsave(&priv->driver_lock, flags);
-+ if (priv->fw_callback) {
-+ lbs_deb_fw("firmware load already in progress\n");
-+ spin_unlock_irqrestore(&priv->driver_lock, flags);
-+ return -EBUSY;
-+ }
-+
-+ priv->fw_device = device;
-+ priv->fw_callback = callback;
-+ priv->fw_table = fw_table;
-+ priv->fw_iter = NULL;
-+ priv->fw_model = card_model;
-+ spin_unlock_irqrestore(&priv->driver_lock, flags);
-+
-+ lbs_deb_fw("Starting async firmware load\n");
-+ load_next_firmware_from_table(priv);
-+ return 0;
-+}
-+EXPORT_SYMBOL_GPL(lbs_get_firmware_async);
-+
- /**
- * lbs_get_firmware - Retrieves two-stage firmware
- *
-@@ -18,6 +159,8 @@
- * @helper: On success, the helper firmware; caller must free
- * @mainfw: On success, the main firmware; caller must free
- *
-+ * Deprecated: use lbs_get_firmware_async() instead.
-+ *
- * returns: 0 on success, non-zero on failure
- */
- int lbs_get_firmware(struct device *dev, u32 card_model,
-diff --git a/drivers/net/wireless/libertas/main.c b/drivers/net/wireless/libertas/main.c
-index 7eaf992..e96ee0a 100644
---- a/drivers/net/wireless/libertas/main.c
-+++ b/drivers/net/wireless/libertas/main.c
-@@ -878,6 +878,7 @@ static int lbs_init_adapter(struct lbs_private *priv)
- priv->is_host_sleep_configured = 0;
- priv->is_host_sleep_activated = 0;
- init_waitqueue_head(&priv->host_sleep_q);
-+ init_waitqueue_head(&priv->fw_waitq);
- mutex_init(&priv->lock);
-
- setup_timer(&priv->command_timer, lbs_cmd_timeout_handler,
-@@ -1037,6 +1038,8 @@ void lbs_remove_card(struct lbs_private *priv)
- if (priv->wiphy_registered)
- lbs_scan_deinit(priv);
-
-+ lbs_wait_for_firmware_load(priv);
-+
- /* worker thread destruction blocks on the in-flight command which
- * should have been cleared already in lbs_stop_card().
- */
---
-1.7.9.5
-
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
deleted file mode 100644
index f02684e..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0012-libertas-SDIO-convert-to-asynchronous-firmware-loadi.patch
+++ /dev/null
@@ -1,320 +0,0 @@
-From f7b34bebb4f8b39535cf5decdab7134ffdf69186 Mon Sep 17 00:00:00 2001
-From: Daniel Drake <dsd at laptop.org>
-Date: Mon, 16 Apr 2012 23:53:43 +0100
-Subject: [PATCH 12/16] libertas SDIO: convert to asynchronous firmware
- loading
-
-Signed-off-by: Daniel Drake <dsd at laptop.org>
-Acked-by: Dan Williams <dcbw at redhat.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
----
- drivers/net/wireless/libertas/if_sdio.c | 206 ++++++++++++++++++-------------
- 1 file changed, 121 insertions(+), 85 deletions(-)
-
-diff --git a/drivers/net/wireless/libertas/if_sdio.c b/drivers/net/wireless/libertas/if_sdio.c
-index 6590feb..76caeba 100644
---- a/drivers/net/wireless/libertas/if_sdio.c
-+++ b/drivers/net/wireless/libertas/if_sdio.c
-@@ -117,6 +117,8 @@ struct if_sdio_card {
- int model;
- unsigned long ioport;
- unsigned int scratch_reg;
-+ bool started;
-+ wait_queue_head_t pwron_waitq;
-
- u8 buffer[65536] __attribute__((aligned(4)));
-
-@@ -129,6 +131,9 @@ struct if_sdio_card {
- u8 rx_unit;
- };
-
-+static void if_sdio_finish_power_on(struct if_sdio_card *card);
-+static int if_sdio_power_off(struct if_sdio_card *card);
-+
- /********************************************************************/
- /* I/O */
- /********************************************************************/
-@@ -669,12 +674,39 @@ out:
- return ret;
- }
-
-+static void if_sdio_do_prog_firmware(struct lbs_private *priv, int ret,
-+ const struct firmware *helper,
-+ const struct firmware *mainfw)
-+{
-+ struct if_sdio_card *card = priv->card;
-+
-+ if (ret) {
-+ pr_err("failed to find firmware (%d)\n", ret);
-+ return;
-+ }
-+
-+ ret = if_sdio_prog_helper(card, helper);
-+ if (ret)
-+ goto out;
-+
-+ lbs_deb_sdio("Helper firmware loaded\n");
-+
-+ ret = if_sdio_prog_real(card, mainfw);
-+ if (ret)
-+ goto out;
-+
-+ lbs_deb_sdio("Firmware loaded\n");
-+ if_sdio_finish_power_on(card);
-+
-+out:
-+ release_firmware(helper);
-+ release_firmware(mainfw);
-+}
-+
- static int if_sdio_prog_firmware(struct if_sdio_card *card)
- {
- int ret;
- u16 scratch;
-- const struct firmware *helper = NULL;
-- const struct firmware *mainfw = NULL;
-
- lbs_deb_enter(LBS_DEB_SDIO);
-
-@@ -708,41 +740,18 @@ static int if_sdio_prog_firmware(struct if_sdio_card *card)
- */
- if (scratch == IF_SDIO_FIRMWARE_OK) {
- lbs_deb_sdio("firmware already loaded\n");
-- goto success;
-+ if_sdio_finish_power_on(card);
-+ return 0;
- } else if ((card->model == MODEL_8686) && (scratch & 0x7fff)) {
- lbs_deb_sdio("firmware may be running\n");
-- goto success;
-- }
--
-- ret = lbs_get_firmware(&card->func->dev, card->model, &fw_table[0],
-- &helper, &mainfw);
-- if (ret) {
-- pr_err("failed to find firmware (%d)\n", ret);
-- goto out;
-+ if_sdio_finish_power_on(card);
-+ return 0;
- }
-
-- ret = if_sdio_prog_helper(card, helper);
-- if (ret)
-- goto out;
--
-- lbs_deb_sdio("Helper firmware loaded\n");
--
-- ret = if_sdio_prog_real(card, mainfw);
-- if (ret)
-- goto out;
--
-- lbs_deb_sdio("Firmware loaded\n");
--
--success:
-- sdio_claim_host(card->func);
-- sdio_set_block_size(card->func, IF_SDIO_BLOCK_SIZE);
-- sdio_release_host(card->func);
-- ret = 0;
-+ ret = lbs_get_firmware_async(card->priv, &card->func->dev, card->model,
-+ fw_table, if_sdio_do_prog_firmware);
-
- out:
-- release_firmware(helper);
-- release_firmware(mainfw);
--
- lbs_deb_leave_args(LBS_DEB_SDIO, "ret %d", ret);
- return ret;
- }
-@@ -751,55 +760,15 @@ out:
- /* Power management */
- /********************************************************************/
-
--static int if_sdio_power_on(struct if_sdio_card *card)
-+/* Finish power on sequence (after firmware is loaded) */
-+static void if_sdio_finish_power_on(struct if_sdio_card *card)
- {
- struct sdio_func *func = card->func;
- struct lbs_private *priv = card->priv;
-- struct mmc_host *host = func->card->host;
- int ret;
-
- sdio_claim_host(func);
--
-- ret = sdio_enable_func(func);
-- if (ret)
-- goto release;
--
-- /* For 1-bit transfers to the 8686 model, we need to enable the
-- * interrupt flag in the CCCR register. Set the MMC_QUIRK_LENIENT_FN0
-- * bit to allow access to non-vendor registers. */
-- if ((card->model == MODEL_8686) &&
-- (host->caps & MMC_CAP_SDIO_IRQ) &&
-- (host->ios.bus_width == MMC_BUS_WIDTH_1)) {
-- u8 reg;
--
-- func->card->quirks |= MMC_QUIRK_LENIENT_FN0;
-- reg = sdio_f0_readb(func, SDIO_CCCR_IF, &ret);
-- if (ret)
-- goto disable;
--
-- reg |= SDIO_BUS_ECSI;
-- sdio_f0_writeb(func, reg, SDIO_CCCR_IF, &ret);
-- if (ret)
-- goto disable;
-- }
--
-- card->ioport = sdio_readb(func, IF_SDIO_IOPORT, &ret);
-- if (ret)
-- goto disable;
--
-- card->ioport |= sdio_readb(func, IF_SDIO_IOPORT + 1, &ret) << 8;
-- if (ret)
-- goto disable;
--
-- card->ioport |= sdio_readb(func, IF_SDIO_IOPORT + 2, &ret) << 16;
-- if (ret)
-- goto disable;
--
-- sdio_release_host(func);
-- ret = if_sdio_prog_firmware(card);
-- sdio_claim_host(func);
-- if (ret)
-- goto disable;
-+ sdio_set_block_size(card->func, IF_SDIO_BLOCK_SIZE);
-
- /*
- * Get rx_unit if the chip is SD8688 or newer.
-@@ -824,7 +793,7 @@ static int if_sdio_power_on(struct if_sdio_card *card)
- */
- ret = sdio_claim_irq(func, if_sdio_interrupt);
- if (ret)
-- goto disable;
-+ goto release;
-
- /*
- * Enable interrupts now that everything is set up
-@@ -850,11 +819,79 @@ static int if_sdio_power_on(struct if_sdio_card *card)
- }
-
- priv->fw_ready = 1;
-+ wake_up(&card->pwron_waitq);
-
-- return 0;
-+ if (!card->started) {
-+ ret = lbs_start_card(priv);
-+ if_sdio_power_off(card);
-+ if (ret == 0) {
-+ card->started = true;
-+ /* Tell PM core that we don't need the card to be
-+ * powered now */
-+ pm_runtime_put_noidle(&func->dev);
-+ }
-+ }
-+
-+ return;
-
- release_irq:
- sdio_release_irq(func);
-+release:
-+ sdio_release_host(func);
-+}
-+
-+static int if_sdio_power_on(struct if_sdio_card *card)
-+{
-+ struct sdio_func *func = card->func;
-+ struct mmc_host *host = func->card->host;
-+ int ret;
-+
-+ sdio_claim_host(func);
-+
-+ ret = sdio_enable_func(func);
-+ if (ret)
-+ goto release;
-+
-+ /* For 1-bit transfers to the 8686 model, we need to enable the
-+ * interrupt flag in the CCCR register. Set the MMC_QUIRK_LENIENT_FN0
-+ * bit to allow access to non-vendor registers. */
-+ if ((card->model == MODEL_8686) &&
-+ (host->caps & MMC_CAP_SDIO_IRQ) &&
-+ (host->ios.bus_width == MMC_BUS_WIDTH_1)) {
-+ u8 reg;
-+
-+ func->card->quirks |= MMC_QUIRK_LENIENT_FN0;
-+ reg = sdio_f0_readb(func, SDIO_CCCR_IF, &ret);
-+ if (ret)
-+ goto disable;
-+
-+ reg |= SDIO_BUS_ECSI;
-+ sdio_f0_writeb(func, reg, SDIO_CCCR_IF, &ret);
-+ if (ret)
-+ goto disable;
-+ }
-+
-+ card->ioport = sdio_readb(func, IF_SDIO_IOPORT, &ret);
-+ if (ret)
-+ goto disable;
-+
-+ card->ioport |= sdio_readb(func, IF_SDIO_IOPORT + 1, &ret) << 8;
-+ if (ret)
-+ goto disable;
-+
-+ card->ioport |= sdio_readb(func, IF_SDIO_IOPORT + 2, &ret) << 16;
-+ if (ret)
-+ goto disable;
-+
-+ sdio_release_host(func);
-+ ret = if_sdio_prog_firmware(card);
-+ if (ret) {
-+ sdio_disable_func(func);
-+ return ret;
-+ }
-+
-+ return 0;
-+
- disable:
- sdio_disable_func(func);
- release:
-@@ -1061,11 +1098,17 @@ static int if_sdio_power_save(struct lbs_private *priv)
- static int if_sdio_power_restore(struct lbs_private *priv)
- {
- struct if_sdio_card *card = priv->card;
-+ int r;
-
- /* Make sure the card will not be powered off by runtime PM */
- pm_runtime_get_sync(&card->func->dev);
-
-- return if_sdio_power_on(card);
-+ r = if_sdio_power_on(card);
-+ if (r)
-+ return r;
-+
-+ wait_event(card->pwron_waitq, priv->fw_ready);
-+ return 0;
- }
-
-
-@@ -1166,6 +1209,7 @@ static int if_sdio_probe(struct sdio_func *func,
- spin_lock_init(&card->lock);
- card->workqueue = create_workqueue("libertas_sdio");
- INIT_WORK(&card->packet_worker, if_sdio_host_to_card_worker);
-+ init_waitqueue_head(&card->pwron_waitq);
-
- /* Check if we support this card */
- for (i = 0; i < ARRAY_SIZE(fw_table); i++) {
-@@ -1207,14 +1251,6 @@ static int if_sdio_probe(struct sdio_func *func,
- if (ret)
- goto err_activate_card;
-
-- ret = lbs_start_card(priv);
-- if_sdio_power_off(card);
-- if (ret)
-- goto err_activate_card;
--
-- /* Tell PM core that we don't need the card to be powered now */
-- pm_runtime_put_noidle(&func->dev);
--
- out:
- lbs_deb_leave_args(LBS_DEB_SDIO, "ret %d", ret);
-
---
-1.7.9.5
-
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
deleted file mode 100644
index b8cffc2..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0013-libertas-USB-convert-to-asynchronous-firmware-loadin.patch
+++ /dev/null
@@ -1,201 +0,0 @@
-From b42ea4e3a1fa84b7de451e96e09067b95354f6f5 Mon Sep 17 00:00:00 2001
-From: Daniel Drake <dsd at laptop.org>
-Date: Mon, 16 Apr 2012 23:53:55 +0100
-Subject: [PATCH 13/16] libertas USB: convert to asynchronous firmware loading
-
-Signed-off-by: Daniel Drake <dsd at laptop.org>
-Acked-by: Dan Williams <dcbw at redhat.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
----
- drivers/net/wireless/libertas/if_usb.c | 102 ++++++++++++++------------------
- 1 file changed, 43 insertions(+), 59 deletions(-)
-
-diff --git a/drivers/net/wireless/libertas/if_usb.c b/drivers/net/wireless/libertas/if_usb.c
-index f29471b..75403e6 100644
---- a/drivers/net/wireless/libertas/if_usb.c
-+++ b/drivers/net/wireless/libertas/if_usb.c
-@@ -41,6 +41,16 @@ enum {
- MODEL_8682 = 0x2
- };
-
-+/* table of firmware file names */
-+static const struct lbs_fw_table fw_table[] = {
-+ { MODEL_8388, "libertas/usb8388_olpc.bin", NULL },
-+ { MODEL_8388, "libertas/usb8388_v9.bin", NULL },
-+ { MODEL_8388, "libertas/usb8388_v5.bin", NULL },
-+ { MODEL_8388, "libertas/usb8388.bin", NULL },
-+ { MODEL_8388, "usb8388.bin", NULL },
-+ { MODEL_8682, "libertas/usb8682.bin", NULL }
-+};
-+
- static struct usb_device_id if_usb_table[] = {
- /* Enter the device signature inside */
- { USB_DEVICE(0x1286, 0x2001), .driver_info = MODEL_8388 },
-@@ -52,7 +62,9 @@ MODULE_DEVICE_TABLE(usb, if_usb_table);
-
- static void if_usb_receive(struct urb *urb);
- static void if_usb_receive_fwload(struct urb *urb);
--static int if_usb_prog_firmware(struct if_usb_card *cardp);
-+static void if_usb_prog_firmware(struct lbs_private *priv, int ret,
-+ const struct firmware *fw,
-+ const struct firmware *unused);
- static int if_usb_host_to_card(struct lbs_private *priv, uint8_t type,
- uint8_t *payload, uint16_t nb);
- static int usb_tx_block(struct if_usb_card *cardp, uint8_t *payload,
-@@ -187,6 +199,7 @@ static int if_usb_probe(struct usb_interface *intf,
- struct usb_endpoint_descriptor *endpoint;
- struct lbs_private *priv;
- struct if_usb_card *cardp;
-+ int r = -ENOMEM;
- int i;
-
- udev = interface_to_usbdev(intf);
-@@ -244,17 +257,10 @@ static int if_usb_probe(struct usb_interface *intf,
- goto dealloc;
- }
-
-- /* Upload firmware */
-- if (if_usb_prog_firmware(cardp)) {
-- lbs_deb_usbd(&udev->dev, "FW upload failed\n");
-- goto err_prog_firmware;
-- }
--
- if (!(priv = lbs_add_card(cardp, &intf->dev)))
-- goto err_prog_firmware;
-+ goto err_add_card;
-
- cardp->priv = priv;
-- cardp->priv->fw_ready = 1;
-
- priv->hw_host_to_card = if_usb_host_to_card;
- priv->enter_deep_sleep = NULL;
-@@ -267,34 +273,25 @@ static int if_usb_probe(struct usb_interface *intf,
-
- cardp->boot2_version = udev->descriptor.bcdDevice;
-
-- if_usb_submit_rx_urb(cardp);
--
-- if (lbs_start_card(priv))
-- goto err_start_card;
--
-- if_usb_setup_firmware(priv);
--
- usb_get_dev(udev);
- usb_set_intfdata(intf, cardp);
-
-- /*
-- * EHS_REMOVE_WAKEUP is not supported on all versions of the firmware.
-- */
-- priv->wol_criteria = EHS_REMOVE_WAKEUP;
-- if (lbs_host_sleep_cfg(priv, priv->wol_criteria, NULL))
-- priv->ehs_remove_supported = false;
-+ r = lbs_get_firmware_async(priv, &udev->dev, cardp->model,
-+ fw_table, if_usb_prog_firmware);
-+ if (r)
-+ goto err_get_fw;
-
- return 0;
-
--err_start_card:
-+err_get_fw:
- lbs_remove_card(priv);
--err_prog_firmware:
-+err_add_card:
- if_usb_reset_device(cardp);
- dealloc:
- if_usb_free(cardp);
-
- error:
-- return -ENOMEM;
-+ return r;
- }
-
- /**
-@@ -829,49 +826,22 @@ static int check_fwfile_format(const uint8_t *data, uint32_t totlen)
- return ret;
- }
-
--/* table of firmware file names */
--static const struct {
-- u32 model;
-- const char *fwname;
--} fw_table[] = {
-- { MODEL_8388, "libertas/usb8388_olpc.bin" },
-- { MODEL_8388, "libertas/usb8388_v9.bin" },
-- { MODEL_8388, "libertas/usb8388_v5.bin" },
-- { MODEL_8388, "libertas/usb8388.bin" },
-- { MODEL_8388, "usb8388.bin" },
-- { MODEL_8682, "libertas/usb8682.bin" }
--};
--
--static int get_fw(struct if_usb_card *cardp)
--{
-- int i;
--
-- /* Otherwise search for firmware to use */
-- for (i = 0; i < ARRAY_SIZE(fw_table); i++) {
-- if (fw_table[i].model != cardp->model)
-- continue;
-- if (request_firmware(&cardp->fw, fw_table[i].fwname,
-- &cardp->udev->dev) == 0)
-- return 0;
-- }
--
-- return -ENOENT;
--}
--
--static int if_usb_prog_firmware(struct if_usb_card *cardp)
-+static void if_usb_prog_firmware(struct lbs_private *priv, int ret,
-+ const struct firmware *fw,
-+ const struct firmware *unused)
- {
-+ struct if_usb_card *cardp = priv->card;
- int i = 0;
- static int reset_count = 10;
-- int ret = 0;
-
- lbs_deb_enter(LBS_DEB_USB);
-
-- ret = get_fw(cardp);
- if (ret) {
- pr_err("failed to find firmware (%d)\n", ret);
- goto done;
- }
-
-+ cardp->fw = fw;
- if (check_fwfile_format(cardp->fw->data, cardp->fw->size)) {
- ret = -EINVAL;
- goto release_fw;
-@@ -954,13 +924,27 @@ restart:
- goto release_fw;
- }
-
-+ cardp->priv->fw_ready = 1;
-+ if_usb_submit_rx_urb(cardp);
-+
-+ if (lbs_start_card(priv))
-+ goto release_fw;
-+
-+ if_usb_setup_firmware(priv);
-+
-+ /*
-+ * EHS_REMOVE_WAKEUP is not supported on all versions of the firmware.
-+ */
-+ priv->wol_criteria = EHS_REMOVE_WAKEUP;
-+ if (lbs_host_sleep_cfg(priv, priv->wol_criteria, NULL))
-+ priv->ehs_remove_supported = false;
-+
- release_fw:
- release_firmware(cardp->fw);
- cardp->fw = NULL;
-
- done:
-- lbs_deb_leave_args(LBS_DEB_USB, "ret %d", ret);
-- return ret;
-+ lbs_deb_leave(LBS_DEB_USB);
- }
-
-
---
-1.7.9.5
-
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
deleted file mode 100644
index fcc2620..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0014-libertas-CS-convert-to-asynchronous-firmware-loading.patch
+++ /dev/null
@@ -1,154 +0,0 @@
-From 6e1c2a1ef946804055ac05dd347c06fb8e836dcc Mon Sep 17 00:00:00 2001
-From: Daniel Drake <dsd at laptop.org>
-Date: Wed, 18 Apr 2012 20:09:44 +0100
-Subject: [PATCH 14/16] libertas CS: convert to asynchronous firmware loading
-
-Signed-off-by: Daniel Drake <dsd at laptop.org>
-Tested-by: Dan Williams <dcbw at redhat.com>
-Acked-by: Dan Williams <dcbw at redhat.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
----
- drivers/net/wireless/libertas/if_cs.c | 88 ++++++++++++++++++---------------
- 1 file changed, 49 insertions(+), 39 deletions(-)
-
-diff --git a/drivers/net/wireless/libertas/if_cs.c b/drivers/net/wireless/libertas/if_cs.c
-index cee5052..16beaf3 100644
---- a/drivers/net/wireless/libertas/if_cs.c
-+++ b/drivers/net/wireless/libertas/if_cs.c
-@@ -738,6 +738,50 @@ done:
- return ret;
- }
-
-+static void if_cs_prog_firmware(struct lbs_private *priv, int ret,
-+ const struct firmware *helper,
-+ const struct firmware *mainfw)
-+{
-+ struct if_cs_card *card = priv->card;
-+
-+ if (ret) {
-+ pr_err("failed to find firmware (%d)\n", ret);
-+ return;
-+ }
-+
-+ /* Load the firmware */
-+ ret = if_cs_prog_helper(card, helper);
-+ if (ret == 0 && (card->model != MODEL_8305))
-+ ret = if_cs_prog_real(card, mainfw);
-+ if (ret)
-+ goto out;
-+
-+ /* Now actually get the IRQ */
-+ ret = request_irq(card->p_dev->irq, if_cs_interrupt,
-+ IRQF_SHARED, DRV_NAME, card);
-+ if (ret) {
-+ pr_err("error in request_irq\n");
-+ goto out;
-+ }
-+
-+ /*
-+ * Clear any interrupt cause that happened while sending
-+ * firmware/initializing card
-+ */
-+ if_cs_write16(card, IF_CS_CARD_INT_CAUSE, IF_CS_BIT_MASK);
-+ if_cs_enable_ints(card);
-+
-+ /* And finally bring the card up */
-+ priv->fw_ready = 1;
-+ if (lbs_start_card(priv) != 0) {
-+ pr_err("could not activate card\n");
-+ free_irq(card->p_dev->irq, card);
-+ }
-+
-+out:
-+ release_firmware(helper);
-+ release_firmware(mainfw);
-+}
-
-
- /********************************************************************/
-@@ -809,8 +853,6 @@ static int if_cs_probe(struct pcmcia_device *p_dev)
- unsigned int prod_id;
- struct lbs_private *priv;
- struct if_cs_card *card;
-- const struct firmware *helper = NULL;
-- const struct firmware *mainfw = NULL;
-
- lbs_deb_enter(LBS_DEB_CS);
-
-@@ -890,20 +932,6 @@ static int if_cs_probe(struct pcmcia_device *p_dev)
- goto out2;
- }
-
-- ret = lbs_get_firmware(&p_dev->dev, card->model, &fw_table[0],
-- &helper, &mainfw);
-- if (ret) {
-- pr_err("failed to find firmware (%d)\n", ret);
-- goto out2;
-- }
--
-- /* Load the firmware early, before calling into libertas.ko */
-- ret = if_cs_prog_helper(card, helper);
-- if (ret == 0 && (card->model != MODEL_8305))
-- ret = if_cs_prog_real(card, mainfw);
-- if (ret)
-- goto out2;
--
- /* Make this card known to the libertas driver */
- priv = lbs_add_card(card, &p_dev->dev);
- if (!priv) {
-@@ -911,37 +939,22 @@ static int if_cs_probe(struct pcmcia_device *p_dev)
- goto out2;
- }
-
-- /* Finish setting up fields in lbs_private */
-+ /* Set up fields in lbs_private */
- card->priv = priv;
- priv->card = card;
- priv->hw_host_to_card = if_cs_host_to_card;
- priv->enter_deep_sleep = NULL;
- priv->exit_deep_sleep = NULL;
- priv->reset_deep_sleep_wakeup = NULL;
-- priv->fw_ready = 1;
-
-- /* Now actually get the IRQ */
-- ret = request_irq(p_dev->irq, if_cs_interrupt,
-- IRQF_SHARED, DRV_NAME, card);
-+ /* Get firmware */
-+ ret = lbs_get_firmware_async(priv, &p_dev->dev, card->model, fw_table,
-+ if_cs_prog_firmware);
- if (ret) {
-- pr_err("error in request_irq\n");
-- goto out3;
-- }
--
-- /*
-- * Clear any interrupt cause that happened while sending
-- * firmware/initializing card
-- */
-- if_cs_write16(card, IF_CS_CARD_INT_CAUSE, IF_CS_BIT_MASK);
-- if_cs_enable_ints(card);
--
-- /* And finally bring the card up */
-- if (lbs_start_card(priv) != 0) {
-- pr_err("could not activate card\n");
-+ pr_err("failed to find firmware (%d)\n", ret);
- goto out3;
- }
-
-- ret = 0;
- goto out;
-
- out3:
-@@ -951,9 +964,6 @@ out2:
- out1:
- pcmcia_disable_device(p_dev);
- out:
-- release_firmware(helper);
-- release_firmware(mainfw);
--
- lbs_deb_leave_args(LBS_DEB_CS, "ret %d", ret);
- return ret;
- }
---
-1.7.9.5
-
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
deleted file mode 100644
index 0506d5c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0015-libertas-add-missing-include.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From d149dba44b6840fec19f18b768220766f7c529a8 Mon Sep 17 00:00:00 2001
-From: Felix Fietkau <nbd at openwrt.org>
-Date: Thu, 19 Apr 2012 13:54:12 +0200
-Subject: [PATCH 15/16] libertas: add missing include
-
-Without it, I get compile errors due to missing TASK_NORMAL,
-TASK_UNINTERRUPTIBLE and schedule.
-
-Signed-off-by: Felix Fietkau <nbd at openwrt.org>
-Acked-by: Dan Williams <dcbw at redhat.com>
-Signed-off-by: John W. Linville <linville at tuxdriver.com>
----
- drivers/net/wireless/libertas/firmware.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/net/wireless/libertas/firmware.c b/drivers/net/wireless/libertas/firmware.c
-index cd23f1a..77f6504 100644
---- a/drivers/net/wireless/libertas/firmware.c
-+++ b/drivers/net/wireless/libertas/firmware.c
-@@ -5,6 +5,7 @@
- #include <linux/firmware.h>
- #include <linux/firmware.h>
- #include <linux/module.h>
-+#include <linux/sched.h>
-
- #include "dev.h"
- #include "decl.h"
---
-1.7.9.5
-
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
deleted file mode 100644
index dec119a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0016-remove-debug-msgs-due-to-missing-in_interrupt.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 21bcbe43eb2923da9f17a0ac826b40f6cc7161cd Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony at googlemail.com>
-Date: Mon, 21 May 2012 17:01:23 +0200
-Subject: [PATCH 16/16] remove debug msgs due to missing in_interrupt
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Signed-off-by: Andreas Müller <schnitzeltony at googlemail.com>
----
- drivers/net/wireless/libertas/defs.h | 7 -------
- 1 file changed, 7 deletions(-)
-
-diff --git a/drivers/net/wireless/libertas/defs.h b/drivers/net/wireless/libertas/defs.h
-index ab966f0..a80b40e 100644
---- a/drivers/net/wireless/libertas/defs.h
-+++ b/drivers/net/wireless/libertas/defs.h
-@@ -46,14 +46,7 @@
-
- extern unsigned int lbs_debug;
-
--#ifdef DEBUG
--#define LBS_DEB_LL(grp, grpnam, fmt, args...) \
--do { if ((lbs_debug & (grp)) == (grp)) \
-- printk(KERN_DEBUG DRV_NAME grpnam "%s: " fmt, \
-- in_interrupt() ? " (INT)" : "", ## args); } while (0)
--#else
- #define LBS_DEB_LL(grp, grpnam, fmt, args...) do {} while (0)
--#endif
-
- #define lbs_deb_enter(grp) \
- LBS_DEB_LL(grp | LBS_DEB_ENTER, " enter", "%s()\n", __func__);
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/patch.sh b/recipes-kernel/linux/linux-ti33x-psp-3.2/patch.sh
deleted file mode 100755
index 695eb41..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/patch.sh
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/bin/bash
-# (c) 2009 - 2012 Koen Kooi <koen at dominion.thruhere.net>
-# This script will take a set of directories with patches and make a git tree out of it
-# After all the patches are applied it will output a SRC_URI fragment you can copy/paste into a recipe
-set -e
-
-# don't use builtin 'echo' from /bin/sh
-export ECHO="$(which echo)"
-
-git tag -f beaglebone-v3.2 e8004dad869568692ca2a45c04e8464ce48cc4d7
-
-TAG="beaglebone-v3.2"
-EXTRATAG=""
-PATCHPATH=$(dirname $0)
-
-git am --abort || echo "Do you need to make sure the patches apply cleanly first?"
-git reset --hard ${TAG}
-
-rm -Rf export
-
-previous=${TAG}
-PATCHSET="3.2.1 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.2.7 3.2.8 3.2.9 3.2.10 3.2.11 3.2.12 3.2.13 3.2.14 beaglebone"
-
-# apply patches
-for patchset in ${PATCHSET} ; do
- for patch in $(ls -1 $PATCHPATH/$patchset/* | sort -n) ; do
- $ECHO -n "$patch: "
- git am -q $patch && echo applied || exit 1
- done
- git tag "${TAG}-${patchset}${EXTRATAG}" -f
-done
-
-# export patches and output SRC_URI for them
-for patchset in ${PATCHSET} ; do
- mkdir -p export/$patchset
- ( cd export/$patchset && git format-patch ${previous}..${TAG}-${patchset}${EXTRATAG} >& /dev/null && for i in *.patch ; do echo "\tfile://${patchset}/$i \\" ; done )
- previous=${TAG}-${patchset}${EXTRATAG}
-done > src-uri.txt
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0001-ARM-OMAP-AM33XX-Add-missing-EMIF-register-offsets.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0001-ARM-OMAP-AM33XX-Add-missing-EMIF-register-offsets.patch
deleted file mode 100644
index 3300bc9..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0001-ARM-OMAP-AM33XX-Add-missing-EMIF-register-offsets.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From 824f30e3a045347806deedb75f16e96b057f430b Mon Sep 17 00:00:00 2001
-From: Vaibhav Bedia <vaibhav.bedia at ti.com>
-Date: Tue, 22 May 2012 16:25:53 +0530
-Subject: [PATCH 01/18] ARM: OMAP: AM33XX: Add missing EMIF register offsets
-
-Add a couple of missing register offsets in the EMIF
-header file. While here also fix the indentation issue.
-
-Signed-off-by: Vaibhav Bedia <vaibhav.bedia at ti.com>
----
- arch/arm/plat-omap/include/plat/emif.h | 34 ++++++++++++++++----------------
- 1 files changed, 17 insertions(+), 17 deletions(-)
-
-diff --git a/arch/arm/plat-omap/include/plat/emif.h b/arch/arm/plat-omap/include/plat/emif.h
-index 314c126..445cbb1 100644
---- a/arch/arm/plat-omap/include/plat/emif.h
-+++ b/arch/arm/plat-omap/include/plat/emif.h
-@@ -17,23 +17,23 @@
- #define __EMIF_H
-
- #define EMIF_MOD_ID_REV (0x0)
--#define EMIF4_0_SDRAM_STATUS (0x04)
--#define EMIF4_0_SDRAM_CONFIG (0x08)
--#define EMIF4_0_SDRAM_CONFIG2 (0x0C)
--#define EMIF4_0_SDRAM_REF_CTRL (0x10)
--#define EMIF4_0_SDRAM_REF_CTRL_SHADOW (0x14)
--#define EMIF4_0_SDRAM_TIM_1 (0x18)
--#define EMIF4_0_SDRAM_TIM_1_SHADOW (0x1C)
--#define EMIF4_0_SDRAM_TIM_2 (0x20)
--#define EMIF4_0_SDRAM_TIM_2_SHADOW (0x24)
--#define EMIF4_0_SDRAM_TIM_3 (0x28)
--#define EMIF4_0_SDRAM_TIM_3_SHADOW (0x2C)
--#define EMIF4_0_SDRAM_MGMT_CTRL (0x38)
--#define EMIF4_0_SDRAM_MGMT_CTRL_SHD (0x3C)
--#define EMIF4_0_DDR_PHY_CTRL_1 (0xE4)
--#define EMIF4_0_DDR_PHY_CTRL_1_SHADOW (0xE8)
--#define EMIF4_0_DDR_PHY_CTRL_2 (0xEC)
--#define EMIF4_0_IODFT_TLGC (0x60)
-+#define EMIF4_0_SDRAM_STATUS (0x04)
-+#define EMIF4_0_SDRAM_CONFIG (0x08)
-+#define EMIF4_0_SDRAM_CONFIG2 (0x0C)
-+#define EMIF4_0_SDRAM_REF_CTRL (0x10)
-+#define EMIF4_0_SDRAM_REF_CTRL_SHADOW (0x14)
-+#define EMIF4_0_SDRAM_TIM_1 (0x18)
-+#define EMIF4_0_SDRAM_TIM_1_SHADOW (0x1C)
-+#define EMIF4_0_SDRAM_TIM_2 (0x20)
-+#define EMIF4_0_SDRAM_TIM_2_SHADOW (0x24)
-+#define EMIF4_0_SDRAM_TIM_3 (0x28)
-+#define EMIF4_0_SDRAM_TIM_3_SHADOW (0x2C)
-+#define EMIF4_0_SDRAM_MGMT_CTRL (0x38)
-+#define EMIF4_0_SDRAM_MGMT_CTRL_SHADOW (0x3C)
-+#define EMIF4_0_IODFT_TLGC (0x60)
-+#define EMIF4_0_ZQ_CONFIG (0xC8)
-+#define EMIF4_0_DDR_PHY_CTRL_1 (0xE4)
-+#define EMIF4_0_DDR_PHY_CTRL_1_SHADOW (0xE8)
-
- #define SELF_REFRESH_ENABLE(m) (0x2 << 8 | (m << 4))
- #define SELF_REFRESH_DISABLE (0x0 << 8)
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0002-ARM-OMAP-AM33XX-PM-Get-rid-of-hardcoded-resume-addre.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0002-ARM-OMAP-AM33XX-PM-Get-rid-of-hardcoded-resume-addre.patch
deleted file mode 100644
index 04f7120..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0002-ARM-OMAP-AM33XX-PM-Get-rid-of-hardcoded-resume-addre.patch
+++ /dev/null
@@ -1,99 +0,0 @@
-From 29ed395e3c56764a994ed4528e10c8835359a34b Mon Sep 17 00:00:00 2001
-From: Vaibhav Bedia <vaibhav.bedia at ti.com>
-Date: Tue, 22 May 2012 12:02:02 +0530
-Subject: [PATCH 02/18] ARM: OMAP: AM33XX: PM: Get rid of hardcoded resume
- address
-
-Instead of using a harcoded resume address in the IPC registers
-add a dynamically computed offset to the start of OCMC address.
-
-Note: This approach currently assumes that the suspend-resume code
-is the first block of code that is copied to internal RAM. Due to
-the initcall level used by the SRAM mapping code this holds true.
-Ideally the sram mapping code should provide an API for doing this.
-This will be done at a later point of time when the generic SRAM
-allocator gets merged in mainline kernel.
-
-Signed-off-by: Vaibhav Bedia <vaibhav.bedia at ti.com>
----
- arch/arm/mach-omap2/pm.h | 1 +
- arch/arm/mach-omap2/pm33xx.c | 8 +++++++-
- arch/arm/mach-omap2/pm33xx.h | 2 +-
- arch/arm/mach-omap2/sleep33xx.S | 16 +++-------------
- 4 files changed, 12 insertions(+), 15 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/pm.h b/arch/arm/mach-omap2/pm.h
-index 68aeafc..f7a7500 100644
---- a/arch/arm/mach-omap2/pm.h
-+++ b/arch/arm/mach-omap2/pm.h
-@@ -100,6 +100,7 @@ extern void omap3_save_scratchpad_contents(void);
- /* am33xx_do_wfi function pointer and size, for copy to SRAM */
- extern void am33xx_do_wfi(void);
- extern unsigned int am33xx_do_wfi_sz;
-+extern unsigned int am33xx_resume_offset;
- /* ... and its pointer from SRAM after copy */
- extern void (*am33xx_do_wfi_sram)(void);
- /* The resume location */
-diff --git a/arch/arm/mach-omap2/pm33xx.c b/arch/arm/mach-omap2/pm33xx.c
-index 70bcb42..c4c5187 100644
---- a/arch/arm/mach-omap2/pm33xx.c
-+++ b/arch/arm/mach-omap2/pm33xx.c
-@@ -217,7 +217,13 @@ static int am33xx_pm_begin(suspend_state_t state)
-
- disable_hlt();
-
-- am33xx_lp_ipc.resume_addr = DS_RESUME_ADDR;
-+ /*
-+ * Populate the resume address as part of IPC data
-+ * The offset to be added comes from sleep33xx.S
-+ * Add 4 bytes to ensure that resume happens from
-+ * the word *after* the word which holds the resume offset
-+ */
-+ am33xx_lp_ipc.resume_addr = (DS_RESUME_BASE + am33xx_resume_offset + 4);
- am33xx_lp_ipc.sleep_mode = DS_MODE;
- am33xx_lp_ipc.ipc_data1 = DS_IPC_DEFAULT;
- am33xx_lp_ipc.ipc_data2 = DS_IPC_DEFAULT;
-diff --git a/arch/arm/mach-omap2/pm33xx.h b/arch/arm/mach-omap2/pm33xx.h
-index f72c28e..7b3504b 100644
---- a/arch/arm/mach-omap2/pm33xx.h
-+++ b/arch/arm/mach-omap2/pm33xx.h
-@@ -47,7 +47,7 @@ struct am33xx_padconf {
-
- #define M3_TXEV_EOI (AM33XX_CTRL_BASE + 0x1324)
- #define A8_M3_IPC_REGS (AM33XX_CTRL_BASE + 0x1328)
--#define DS_RESUME_ADDR 0x40300340
-+#define DS_RESUME_BASE 0x40300000
- #define DS_IPC_DEFAULT 0xffffffff
- #define M3_UMEM 0x44D00000
-
-diff --git a/arch/arm/mach-omap2/sleep33xx.S b/arch/arm/mach-omap2/sleep33xx.S
-index 69b49ea..9c57335 100644
---- a/arch/arm/mach-omap2/sleep33xx.S
-+++ b/arch/arm/mach-omap2/sleep33xx.S
-@@ -234,20 +234,10 @@ wait_emif_enable:
- mov r0, #7
- ldmfd sp!, {r4 - r11, pc} @ restore regs and return
-
-- nop
-- nop
-- nop
-- nop
-- nop
-- nop
-- nop
-- nop
-- nop
-- nop
-- nop
-- nop
-- nop
-+ENTRY(am33xx_resume_offset)
-+ .word . - am33xx_do_wfi
-
-+ENTRY(am33xx_resume_from_deep_sleep)
- /* Take the PLLs out of LP_BYPASS */
- pll_lock mpu, phys_mpu_clk_mode, phys_mpu_idlest
- pll_lock per, phys_per_clk_mode, phys_per_idlest
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0003-ARM-OMAP-AM33XX-PM-Skip-DDR-PHY-reconfiguration-in-r.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0003-ARM-OMAP-AM33XX-PM-Skip-DDR-PHY-reconfiguration-in-r.patch
deleted file mode 100644
index ad402a0..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0003-ARM-OMAP-AM33XX-PM-Skip-DDR-PHY-reconfiguration-in-r.patch
+++ /dev/null
@@ -1,397 +0,0 @@
-From 49b0e8259aec1ffb11e0d2be13fc89fc84162fac Mon Sep 17 00:00:00 2001
-From: Vaibhav Bedia <vaibhav.bedia at ti.com>
-Date: Tue, 22 May 2012 12:19:21 +0530
-Subject: [PATCH 03/18] ARM: OMAP: AM33XX: PM: Skip DDR PHY reconfiguration in
- resume
-
-DDR PHY registers were earlier being reconfigured in the resume
-path. This is not necessary since these registers lie in the
-WKUP domain and retain their content across various low power
-state. Skipping the reconfiguration will also enabling in getting
-a single kernel image to work for boards with different memory
-types.
-
-Signed-off-by: Vaibhav Bedia <vaibhav.bedia at ti.com>
----
- arch/arm/mach-omap2/pm33xx.h | 75 +------------
- arch/arm/mach-omap2/sleep33xx.S | 245 +--------------------------------------
- 2 files changed, 7 insertions(+), 313 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/pm33xx.h b/arch/arm/mach-omap2/pm33xx.h
-index 7b3504b..f52e54c 100644
---- a/arch/arm/mach-omap2/pm33xx.h
-+++ b/arch/arm/mach-omap2/pm33xx.h
-@@ -60,59 +60,6 @@ struct am33xx_padconf {
- #define M3_STATE_MSG_FOR_LP 2
- #define M3_STATE_MSG_FOR_RESET 3
-
--/* DDR offsets */
--#define DDR_CMD0_IOCTRL (AM33XX_CTRL_BASE + 0x1404)
--#define DDR_CMD1_IOCTRL (AM33XX_CTRL_BASE + 0x1408)
--#define DDR_CMD2_IOCTRL (AM33XX_CTRL_BASE + 0x140C)
--#define DDR_DATA0_IOCTRL (AM33XX_CTRL_BASE + 0x1440)
--#define DDR_DATA1_IOCTRL (AM33XX_CTRL_BASE + 0x1444)
--
--#define DDR_IO_CTRL (AM33XX_CTRL_BASE + 0x0E04)
--#define VTP0_CTRL_REG (AM33XX_CTRL_BASE + 0x0E0C)
--#define DDR_CKE_CTRL (AM33XX_CTRL_BASE + 0x131C)
--#define DDR_PHY_BASE_ADDR (AM33XX_CTRL_BASE + 0x2000)
--
--#define CMD0_CTRL_SLAVE_RATIO_0 (DDR_PHY_BASE_ADDR + 0x01C)
--#define CMD0_CTRL_SLAVE_FORCE_0 (DDR_PHY_BASE_ADDR + 0x020)
--#define CMD0_CTRL_SLAVE_DELAY_0 (DDR_PHY_BASE_ADDR + 0x024)
--#define CMD0_DLL_LOCK_DIFF_0 (DDR_PHY_BASE_ADDR + 0x028)
--#define CMD0_INVERT_CLKOUT_0 (DDR_PHY_BASE_ADDR + 0x02C)
--
--#define CMD1_CTRL_SLAVE_RATIO_0 (DDR_PHY_BASE_ADDR + 0x050)
--#define CMD1_CTRL_SLAVE_FORCE_0 (DDR_PHY_BASE_ADDR + 0x054)
--#define CMD1_CTRL_SLAVE_DELAY_0 (DDR_PHY_BASE_ADDR + 0x058)
--#define CMD1_DLL_LOCK_DIFF_0 (DDR_PHY_BASE_ADDR + 0x05C)
--#define CMD1_INVERT_CLKOUT_0 (DDR_PHY_BASE_ADDR + 0x060)
--
--#define CMD2_CTRL_SLAVE_RATIO_0 (DDR_PHY_BASE_ADDR + 0x084)
--#define CMD2_CTRL_SLAVE_FORCE_0 (DDR_PHY_BASE_ADDR + 0x088)
--#define CMD2_CTRL_SLAVE_DELAY_0 (DDR_PHY_BASE_ADDR + 0x08C)
--#define CMD2_DLL_LOCK_DIFF_0 (DDR_PHY_BASE_ADDR + 0x090)
--#define CMD2_INVERT_CLKOUT_0 (DDR_PHY_BASE_ADDR + 0x094)
--
--#define DATA0_RD_DQS_SLAVE_RATIO_0 (DDR_PHY_BASE_ADDR + 0x0C8)
--#define DATA0_RD_DQS_SLAVE_RATIO_1 (DDR_PHY_BASE_ADDR + 0x0CC)
--
--#define DATA0_WR_DQS_SLAVE_RATIO_0 (DDR_PHY_BASE_ADDR + 0x0DC)
--#define DATA0_WR_DQS_SLAVE_RATIO_1 (DDR_PHY_BASE_ADDR + 0x0E0)
--
--#define DATA0_WRLVL_INIT_RATIO_0 (DDR_PHY_BASE_ADDR + 0x0F0)
--#define DATA0_WRLVL_INIT_RATIO_1 (DDR_PHY_BASE_ADDR + 0x0F4)
--
--#define DATA0_GATELVL_INIT_RATIO_0 (DDR_PHY_BASE_ADDR + 0x0FC)
--#define DATA0_GATELVL_INIT_RATIO_1 (DDR_PHY_BASE_ADDR + 0x100)
--
--#define DATA0_FIFO_WE_SLAVE_RATIO_0 (DDR_PHY_BASE_ADDR + 0x108)
--#define DATA0_FIFO_WE_SLAVE_RATIO_1 (DDR_PHY_BASE_ADDR + 0x10C)
--
--#define DATA0_WR_DATA_SLAVE_RATIO_0 (DDR_PHY_BASE_ADDR + 0x120)
--#define DATA0_WR_DATA_SLAVE_RATIO_1 (DDR_PHY_BASE_ADDR + 0x124)
--
--#define DATA0_DLL_LOCK_DIFF_0 (DDR_PHY_BASE_ADDR + 0x138)
--
--#define DATA0_RANK0_DELAYS_0 (DDR_PHY_BASE_ADDR + 0x134)
--#define DATA1_RANK0_DELAYS_0 (DDR_PHY_BASE_ADDR + 0x1D8)
--
- /* Temp placeholder for the values we want in the registers */
- #define EMIF_READ_LATENCY 0x100005 /* Enable Dynamic Power Down */
- #define EMIF_TIM1 0x0666B3C9
-@@ -124,28 +71,12 @@ struct am33xx_padconf {
- #define EMIF_SDRAM 0x00004650
- #define EMIF_PHYCFG 0x2
-
--#define DDR2_DLL_LOCK_DIFF 0x0
--#define DDR2_RD_DQS 0x12
--#define DDR2_PHY_FIFO_WE 0x80
--
--#define DDR_PHY_RESET (0x1 << 10)
--#define DDR_PHY_READY (0x1 << 2)
--#define DDR2_RATIO 0x80
--#define CMD_FORCE 0x00
--#define CMD_DELAY 0x00
--
--#define DDR2_INVERT_CLKOUT 0x00
--#define DDR2_WR_DQS 0x00
--#define DDR2_PHY_WRLVL 0x00
--#define DDR2_PHY_GATELVL 0x00
--#define DDR2_PHY_WR_DATA 0x40
--#define PHY_RANK0_DELAY 0x01
--#define PHY_DLL_LOCK_DIFF 0x0
--#define DDR_IOCTRL_VALUE 0x18B
--
- #define VTP_CTRL_READY (0x1 << 5)
- #define VTP_CTRL_ENABLE (0x1 << 6)
- #define VTP_CTRL_LOCK_EN (0x1 << 4)
- #define VTP_CTRL_START_EN (0x1)
-
-+#define DDR_IO_CTRL (AM33XX_CTRL_BASE + 0x0E04)
-+#define VTP0_CTRL_REG (AM33XX_CTRL_BASE + 0x0E0C)
-+
- #endif
-diff --git a/arch/arm/mach-omap2/sleep33xx.S b/arch/arm/mach-omap2/sleep33xx.S
-index 9c57335..4c601b11 100644
---- a/arch/arm/mach-omap2/sleep33xx.S
-+++ b/arch/arm/mach-omap2/sleep33xx.S
-@@ -273,21 +273,9 @@ ENTRY(am33xx_resume_from_deep_sleep)
- bic r1, r1, #28
- str r1, [r0]
-
--/*
-- * Instead of harcoding the EMIF and DDR PHY related settings
-- * in this file, the sane thing to do would have been to backup
-- * the register contents during suspend and restore it back in
-- * the resume path. However, due to the Si errata related to
-- * DDR PHY registers, these registers are read-only. So, we'll
-- * need to hardcode atleast the DDR PHY configuration over here.
-- * We _could_ back up the EMIF registers but in order to be
-- * consistent with the DDR setup procedure we skip this for now.
-- * The person updating the DDR PHY config values is expected
-- * to update the EMIF config values also.
-- */
-
- config_vtp:
-- ldr r0, vtp0_addr
-+ ldr r0, phys_ddr_vtp_ctrl
- ldr r1, [r0]
- mov r2, #0x0 @ clear the register
- str r2, [r0]
-@@ -312,179 +300,6 @@ poll_vtp_ready:
- tst r1, #(1 << 5)
- beq poll_vtp_ready
-
--cmd_macro_config:
-- ldr r0, ddr_phy_base
-- ldr r1, [r0]
-- ldr r2, ddr2_ratio_val
-- mov r3, r2
-- @ TODO: Need to use proper variable here
-- mov r4, #0
-- str r3, [r0, #28] @cmd0
-- str r4, [r0, #32]
-- str r4, [r0, #36]
-- str r4, [r0, #40]
-- str r4, [r0, #44]
-- str r3, [r0, #80] @cmd1
-- str r4, [r0, #84]
-- str r4, [r0, #88]
-- str r4, [r0, #92]
-- str r4, [r0, #96]
-- str r3, [r0, #132] @cmd2
-- str r4, [r0, #136]
-- str r4, [r0, #140]
-- str r4, [r0, #144]
-- str r4, [r0, #148]
--
-- mov r3, #0x0
-- bl data_macro_config
-- mov r3, #0xa4
-- bl data_macro_config
-- b setup_rank_delays
--
--data_macro_config:
-- ldr r0, ddr_phy_base
-- add r0, r0, r3
--rd_dqs:
-- ldr r1, data0_rd_dqs_slave_ratio0_val
-- mov r2, r1
-- /* shift by 30, 20, 10 and orr */
-- mov r5, r2, lsl #10
-- mov r6, r2, lsl #20
-- mov r7, r2, lsl #30
-- orr r2, r2, r5
-- orr r2, r2, r6
-- orr r2, r2, r7
-- /* Done with crazy bit ops. store it now */
-- str r2, [r0, #200]
-- ldr r1, data0_rd_dqs_slave_ratio1_val
-- mov r2, r1
-- mov r5, r2, lsr #2
-- mov r2, r5
-- str r2, [r0, #204]
--wr_dqs:
-- ldr r1, data0_wr_dqs_slave_ratio0_val
-- mov r2, r1
-- /* shift by 30, 20, 10 and orr */
-- mov r5, r2, lsl #10
-- mov r6, r2, lsl #20
-- mov r7, r2, lsl #30
-- orr r2, r2, r5
-- orr r2, r2, r6
-- orr r2, r2, r7
-- /* Done with crazy bit ops. store it now */
-- str r2, [r0, #220]
-- ldr r1, data0_wr_dqs_slave_ratio1_val
-- mov r2, r1
-- mov r5, r2, lsr #2
-- mov r2, r5
-- str r2, [r0, #224]
--wr_lvl:
-- ldr r1, data0_wr_lvl_init_ratio0_val
-- mov r2, r1
-- /* shift by 30, 20, 10 and orr */
-- mov r5, r2, lsl #10
-- mov r6, r2, lsl #20
-- mov r7, r2, lsl #30
-- orr r2, r2, r5
-- orr r2, r2, r6
-- orr r2, r2, r7
-- /* Done with crazy bit ops. store it now */
-- str r2, [r0, #240]
-- ldr r1, data0_wr_lvl_init_ratio1_val
-- mov r2, r1
-- mov r5, r2, lsr #2
-- mov r2, r5
-- str r2, [r0, #244]
--gate_lvl:
-- ldr r1, data0_gate_lvl_init_ratio0_val
-- mov r2, r1
-- /* shift by 30, 20, 10 and orr */
-- mov r5, r2, lsl #10
-- mov r6, r2, lsl #20
-- mov r7, r2, lsl #30
-- orr r2, r2, r5
-- orr r2, r2, r6
-- orr r2, r2, r7
-- /* Done with crazy bit ops. store it now */
-- str r2, [r0, #248]
-- ldr r1, data0_gate_lvl_init_ratio1_val
-- mov r2, r1
-- mov r5, r2, lsr #2
-- mov r2, r5
-- str r2, [r0, #256]
--we_slv:
-- ldr r1, data0_wr_lvl_slave_ratio0_val
-- mov r2, r1
-- /* shift by 30, 20, 10 and orr */
-- mov r5, r2, lsl #10
-- mov r6, r2, lsl #20
-- mov r7, r2, lsl #30
-- orr r2, r2, r5
-- orr r2, r2, r6
-- orr r2, r2, r7
-- /* Done with crazy bit ops. store it now */
-- str r2, [r0, #264]
-- ldr r1, data0_wr_lvl_slave_ratio1_val
-- mov r2, r1
-- mov r5, r2, lsr #2
-- mov r2, r5
-- str r2, [r0, #268]
--wr_data:
-- ldr r1, data0_wr_data_slave_ratio0_val
-- mov r2, r1
-- /* shift by 30, 20, 10 and orr */
-- mov r5, r2, lsl #10
-- mov r6, r2, lsl #20
-- mov r7, r2, lsl #30
-- orr r2, r2, r5
-- orr r2, r2, r6
-- orr r2, r2, r7
-- /* Done with crazy bit ops. store it now */
-- str r2, [r0, #288]
-- ldr r1, data0_wr_data_slave_ratio1_val
-- mov r2, r1
-- mov r5, r2, lsr #2
-- mov r2, r5
-- str r2, [r0, #292]
--dll_lock:
-- ldr r1, data0_dll_lock_diff_val
-- mov r2, r1
-- str r2, [r0, #312]
--
--setup_rank_delays:
-- ldr r1, data0_rank0_delay0_val
-- mov r2, r1
-- str r2, [r0, #308]
-- ldr r1, data1_rank0_delay1_val
-- mov r2, r1
-- str r2, [r0, #472]
--
--setup_io_ctrl:
-- ldr r0, control_base
-- ldr r1, ddr_ioctrl_val
-- mov r2, r1
-- ldr r4, ddr_cmd_offset
-- mov r3, r4
-- str r2, [r0, r3] @cmd0 0x1404
-- add r3, r3, #4
-- str r2, [r0, r3] @cmd1 0x1408
-- add r3, r3, #4
-- str r2, [r0, r3] @cmd2 0x140c
-- ldr r4, ddr_data_offset
-- mov r3, r4
-- str r2, [r0, r3] @data0 0x1440
-- add r3, r3, #4
-- str r2, [r0, r3] @data1 0x1444
--
--misc_config:
-- ldr r1, ddr_io_ctrl_addr
-- ldr r2, [r1]
-- and r2, #0xefffffff
-- str r2, [r1]
-- ldr r1, ddr_cke_addr
-- ldr r2, [r1]
-- orr r2, #0x00000001
-- str r2, [r1]
-
- config_emif_timings:
- mov r3, #1275068416 @ 0x4c000000
-@@ -628,61 +443,6 @@ module_disabled_val:
- .word 0x30000
-
- /* DDR related stuff */
--vtp0_addr:
-- .word VTP0_CTRL_REG
--vtp_enable:
-- .word VTP_CTRL_ENABLE
--vtp_start_en:
-- .word VTP_CTRL_START_EN
--vtp_ready:
-- .word VTP_CTRL_READY
--
--ddr_phy_base:
-- .word DDR_PHY_BASE_ADDR
--ddr2_ratio_val:
-- .word DDR2_RATIO
--data0_rd_dqs_slave_ratio0_val:
-- .word DDR2_RD_DQS
--data0_rd_dqs_slave_ratio1_val:
-- .word DDR2_RD_DQS
--data0_wr_dqs_slave_ratio0_val:
-- .word DDR2_WR_DQS
--data0_wr_dqs_slave_ratio1_val:
-- .word DDR2_WR_DQS
--data0_wr_lvl_init_ratio0_val:
-- .word DDR2_PHY_WRLVL
--data0_wr_lvl_init_ratio1_val:
-- .word DDR2_PHY_WRLVL
--data0_gate_lvl_init_ratio0_val:
-- .word DDR2_PHY_GATELVL
--data0_gate_lvl_init_ratio1_val:
-- .word DDR2_PHY_GATELVL
--data0_wr_lvl_slave_ratio0_val:
-- .word DDR2_PHY_FIFO_WE
--data0_wr_lvl_slave_ratio1_val:
-- .word DDR2_PHY_FIFO_WE
--data0_wr_data_slave_ratio0_val:
-- .word DDR2_PHY_WR_DATA
--data0_wr_data_slave_ratio1_val:
-- .word DDR2_PHY_WR_DATA
--data0_dll_lock_diff_val:
-- .word PHY_DLL_LOCK_DIFF
--
--data0_rank0_delay0_val:
-- .word PHY_RANK0_DELAY
--data1_rank0_delay1_val:
-- .word PHY_RANK0_DELAY
--
--control_base:
-- .word AM33XX_CTRL_BASE
--ddr_io_ctrl_addr:
-- .word DDR_IO_CTRL
--ddr_ioctrl_val:
-- .word 0x18B
--ddr_cmd_offset:
-- .word 0x1404
--ddr_data_offset:
-- .word 0x1440
- virt_ddr_io_ctrl:
- .word AM33XX_CTRL_REGADDR(0x0E04)
- phys_ddr_io_ctrl:
-@@ -691,6 +451,9 @@ virt_ddr_vtp_ctrl:
- .word AM33XX_CTRL_REGADDR(0x0E0C)
- phys_ddr_vtp_ctrl:
- .word VTP0_CTRL_REG
-+vtp_enable:
-+ .word VTP_CTRL_ENABLE
-+
- virt_ddr_io_pull1:
- .word AM33XX_CTRL_REGADDR(0x1440)
- phys_ddr_io_pull1:
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0004-ARM-OMAP-AM33XX-PM-Save-and-restore-EMIF-registers.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0004-ARM-OMAP-AM33XX-PM-Save-and-restore-EMIF-registers.patch
deleted file mode 100644
index a1c66ad..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0004-ARM-OMAP-AM33XX-PM-Save-and-restore-EMIF-registers.patch
+++ /dev/null
@@ -1,241 +0,0 @@
-From 334c051e4d0b3214136dbee1b0a52e2d29747c0a Mon Sep 17 00:00:00 2001
-From: Vaibhav Bedia <vaibhav.bedia at ti.com>
-Date: Tue, 22 May 2012 12:24:55 +0530
-Subject: [PATCH 04/18] ARM: OMAP: AM33XX: PM: Save and restore EMIF registers
-
-The EMIF configuration parameters were earlier harcoded
-under the assumption that the person updating the DDR PHY
-configuration values will update the EMIF parameters also.
-
-Now that the DDR PHY reconfiguration has been dropped, this
-restriction can also go away by adopting a save and restore
-mechanism of these registers.
-
-At the same time switch to macros for EMIF register offsets
-to improve readability.
-
-Signed-off-by: Vaibhav Bedia <vaibhav.bedia at ti.com>
----
- arch/arm/mach-omap2/pm33xx.h | 11 ---
- arch/arm/mach-omap2/sleep33xx.S | 141 +++++++++++++++++++++------------------
- 2 files changed, 75 insertions(+), 77 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/pm33xx.h b/arch/arm/mach-omap2/pm33xx.h
-index f52e54c..a40f4d4 100644
---- a/arch/arm/mach-omap2/pm33xx.h
-+++ b/arch/arm/mach-omap2/pm33xx.h
-@@ -60,17 +60,6 @@ struct am33xx_padconf {
- #define M3_STATE_MSG_FOR_LP 2
- #define M3_STATE_MSG_FOR_RESET 3
-
--/* Temp placeholder for the values we want in the registers */
--#define EMIF_READ_LATENCY 0x100005 /* Enable Dynamic Power Down */
--#define EMIF_TIM1 0x0666B3C9
--#define EMIF_TIM2 0x243631CA
--#define EMIF_TIM3 0x0000033F
--#define EMIF_SDCFG 0x41805332
--#define EMIF_SDREF 0x0000081a
--#define EMIF_SDMGT 0x80000000
--#define EMIF_SDRAM 0x00004650
--#define EMIF_PHYCFG 0x2
--
- #define VTP_CTRL_READY (0x1 << 5)
- #define VTP_CTRL_ENABLE (0x1 << 6)
- #define VTP_CTRL_LOCK_EN (0x1 << 4)
-diff --git a/arch/arm/mach-omap2/sleep33xx.S b/arch/arm/mach-omap2/sleep33xx.S
-index 4c601b11..b7a1612 100644
---- a/arch/arm/mach-omap2/sleep33xx.S
-+++ b/arch/arm/mach-omap2/sleep33xx.S
-@@ -71,6 +71,26 @@ wait_pll_lock_\name:
-
- str r0, emif_addr_virt
-
-+ /* Save EMIF configuration */
-+ ldr r1, [r0, #EMIF4_0_SDRAM_CONFIG]
-+ str r1, emif_sdcfg_val
-+ ldr r1, [r0, #EMIF4_0_SDRAM_REF_CTRL]
-+ str r1, emif_ref_ctrl_val
-+ ldr r1, [r0, #EMIF4_0_SDRAM_TIM_1]
-+ str r1, emif_timing1_val
-+ ldr r1, [r0, #EMIF4_0_SDRAM_TIM_2]
-+ str r1, emif_timing2_val
-+ ldr r1, [r0, #EMIF4_0_SDRAM_TIM_3]
-+ str r1, emif_timing3_val
-+ ldr r1, [r0, #EMIF4_0_SDRAM_MGMT_CTRL]
-+ str r1, emif_pmcr_val
-+ ldr r1, [r0, #EMIF4_0_SDRAM_MGMT_CTRL_SHADOW]
-+ str r1, emif_pmcr_shdw_val
-+ ldr r1, [r0, #EMIF4_0_ZQ_CONFIG]
-+ str r1, emif_zqcfg_val
-+ ldr r1, [r0, #EMIF4_0_DDR_PHY_CTRL_1]
-+ str r1, emif_rd_lat_val
-+
- /* Ensure that all the writes to DDR leave the A8 */
- dsb
- dmb
-@@ -302,58 +322,52 @@ poll_vtp_ready:
-
-
- config_emif_timings:
-- mov r3, #1275068416 @ 0x4c000000
--disable_sr:
-- mov r4, #0
-- str r4, [r3, #56] @ 0x38
-+ ldr r3, emif_phys_addr
- ldr r4, emif_rd_lat_val
-- mov r2, r4
- rd_lat:
-- str r2, [r3, #228] @ 0xe4
-- str r2, [r3, #232] @ 0xe8
-- str r2, [r3, #236] @ 0xec
-+ str r4, [r3, #EMIF4_0_DDR_PHY_CTRL_1]
-+ str r4, [r3, #EMIF4_0_DDR_PHY_CTRL_1_SHADOW]
- timing1:
- ldr r4, emif_timing1_val
-- mov r2, r4
-- str r2, [r3, #24]
-- str r2, [r3, #28]
-+ str r4, [r3, #EMIF4_0_SDRAM_TIM_1]
-+ str r4, [r3, #EMIF4_0_SDRAM_TIM_1_SHADOW]
- timing2:
- ldr r4, emif_timing2_val
-- mov r2, r4
-- str r2, [r3, #32]
-- str r2, [r3, #36] @ 0x24
-+ str r4, [r3, #EMIF4_0_SDRAM_TIM_2]
-+ str r4, [r3, #EMIF4_0_SDRAM_TIM_2_SHADOW]
- timing3:
- ldr r4, emif_timing3_val
-- mov r2, r4
-- str r2, [r3, #40] @ 0x28
-- str r2, [r3, #44] @ 0x2c
--sdcfg1:
-- ldr r4, emif_sdcfg_val
-- mov r2, r4
-- str r2, [r3, #8]
-- str r2, [r3, #12]
--ref_ctrl_const:
-- ldr r4, emif_ref_ctrl_const_val
-- mov r2, r4
-- str r2, [r3, #16]
-- str r2, [r3, #20]
--
-- /* GEL had a loop with init value of 5000 */
-- mov r0, #0x1000
--wait_loop1:
-- subs r0, r0, #1
-- bne wait_loop1
--
--ref_ctrl_actual:
-+ str r4, [r3, #EMIF4_0_SDRAM_TIM_3]
-+ str r4, [r3, #EMIF4_0_SDRAM_TIM_3_SHADOW]
-+sdram_ref_ctrl:
- ldr r4, emif_ref_ctrl_val
-- mov r2, r4
-- str r2, [r3, #16]
-- str r2, [r3, #20]
--sdcfg2:
-+ str r4, [r3, #EMIF4_0_SDRAM_REF_CTRL]
-+ str r4, [r3, #EMIF4_0_SDRAM_REF_CTRL_SHADOW]
-+pmcr:
-+ ldr r4, emif_pmcr_val
-+ str r4, [r3, #EMIF4_0_SDRAM_MGMT_CTRL]
-+pmcr_shdw:
-+ ldr r4, emif_pmcr_shdw_val
-+ str r4, [r3, #EMIF4_0_SDRAM_MGMT_CTRL_SHADOW]
-+
-+ /*
-+ * Output impedence calib needed only for DDR3
-+ * but since the initial state of this will be
-+ * disabled for DDR2 no harm in restoring the
-+ * old configuration
-+ */
-+zqcfg:
-+ ldr r4, emif_zqcfg_val
-+ str r4, [r3, #EMIF4_0_ZQ_CONFIG]
-+
-+ /*
-+ * A write to SDRAM CONFIG register triggers
-+ * an init sequence and hence it must be done
-+ * at the end
-+ */
-+sdcfg:
- ldr r4, emif_sdcfg_val
-- mov r2, r4
-- str r2, [r3, #8]
-- str r2, [r3, #12]
-+ str r4, [r3, #EMIF4_0_SDRAM_CONFIG]
-
- /* Back from la-la-land. Kill some time for sanity to settle in */
- mov r0, #0x1000
-@@ -377,10 +391,8 @@ emif_addr_func:
- emif_phys_addr:
- .word AM33XX_EMIF0_BASE
-
--emif_pm_ctrl:
-- .word EMIF4_0_SDRAM_MGMT_CTRL
- ddr_start:
-- .word PAGE_OFFSET
-+ .word PAGE_OFFSET
-
- virt_mpu_idlest:
- .word AM33XX_CM_IDLEST_DPLL_MPU
-@@ -467,37 +479,34 @@ virt_ddr_io_pull3:
- phys_ddr_io_pull3:
- .word AM33XX_CTRL_BASE + (0x1448)
-
--ddr_cke_addr:
-- .word DDR_CKE_CTRL
--emif_rd_lat_val:
-- .word EMIF_READ_LATENCY
--emif_timing1_val:
-- .word EMIF_TIM1
--emif_timing2_val:
-- .word EMIF_TIM2
--emif_timing3_val:
-- .word EMIF_TIM3
--emif_sdcfg_val:
-- .word EMIF_SDCFG
--emif_ref_ctrl_const_val:
-- .word 0x4650
--emif_ref_ctrl_val:
-- .word EMIF_SDREF
--
- susp_io_pull:
- .word 0x3FF00003
- resume_io_pull1:
- .word 0x18B
- resume_io_pull2:
- .word 0x18B
--dyn_pd_val:
-- .word 0x100000
--susp_sdram_config:
-- .word 0x40805332
- susp_vtp_ctrl_val:
- .word 0x10117
- emif_addr_virt:
- .word 0xDEADBEEF
-+emif_rd_lat_val:
-+ .word 0xDEADBEEF
-+emif_timing1_val:
-+ .word 0xDEADBEEF
-+emif_timing2_val:
-+ .word 0xDEADBEEF
-+emif_timing3_val:
-+ .word 0xDEADBEEF
-+emif_sdcfg_val:
-+ .word 0xDEADBEEF
-+emif_ref_ctrl_val:
-+ .word 0xDEADBEEF
-+emif_zqcfg_val:
-+ .word 0xDEADBEEF
-+emif_pmcr_val:
-+ .word 0xDEADBEEF
-+emif_pmcr_shdw_val:
-+ .word 0xDEADBEEF
-
-
- ENTRY(am33xx_do_wfi_sz)
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0005-ARM-OMAP-AM33XX-PM-Wait-correctly-for-the-PLLs-to-re.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0005-ARM-OMAP-AM33XX-PM-Wait-correctly-for-the-PLLs-to-re.patch
deleted file mode 100644
index a8db01e..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0005-ARM-OMAP-AM33XX-PM-Wait-correctly-for-the-PLLs-to-re.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From a7cfe5e7b86ebba4aa184b2612c4ecb70a01aa02 Mon Sep 17 00:00:00 2001
-From: "Satyanarayana, Sandhya" <sandhya.satyanarayana at ti.com>
-Date: Tue, 22 May 2012 12:33:20 +0530
-Subject: [PATCH 05/18] ARM: OMAP: AM33XX: PM: Wait correctly for the PLLs to
- relock in the sleep code
-
-The PLL relock code was incorrectly exiting the loop
-before the PLLs relock. Since the PLLs relock within
-a couple of A8 assembly instruction execution this went
-unnoticed till now. The issue was noticed when validating
-the abort path of the suspend process wherein the
-incorrect check for PLL relock resulted in a lockup.
-
-Signed-off-by: Satyanarayana, Sandhya <sandhya.satyanarayana at ti.com>
-Signed-off-by: Vaibhav Bedia <vaibhav.bedia at ti.com>
----
- arch/arm/mach-omap2/sleep33xx.S | 4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/sleep33xx.S b/arch/arm/mach-omap2/sleep33xx.S
-index b7a1612..79a9e39 100644
---- a/arch/arm/mach-omap2/sleep33xx.S
-+++ b/arch/arm/mach-omap2/sleep33xx.S
-@@ -61,8 +61,8 @@ pll_lock_\name:
- ldr r0, \idlest_addr
- wait_pll_lock_\name:
- ldr r1, [r0]
-- tst r1, #0x1
-- bne wait_pll_lock_\name
-+ ands r1, #0x1
-+ beq wait_pll_lock_\name
- .endm
-
- /* EMIF config for low power mode */
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0006-ARM-OMAP-AM33XX-PM-Restore-the-PLLs-to-pre-suspend-s.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0006-ARM-OMAP-AM33XX-PM-Restore-the-PLLs-to-pre-suspend-s.patch
deleted file mode 100644
index c0d0ef1..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0006-ARM-OMAP-AM33XX-PM-Restore-the-PLLs-to-pre-suspend-s.patch
+++ /dev/null
@@ -1,139 +0,0 @@
-From d3ec36ec2c36ecb234c5a575b713205473e6cab8 Mon Sep 17 00:00:00 2001
-From: Vaibhav Bedia <vaibhav.bedia at ti.com>
-Date: Tue, 22 May 2012 12:43:01 +0530
-Subject: [PATCH 06/18] ARM: OMAP: AM33XX: PM: Restore the PLLs to pre-suspend
- state
-
-In some scenarios all the PLLs (especially Display) might not be
-in a locked state when the suspend process starts. Trying to relock
-a PLL in MN-bypass mode without a proper set of M and N values results
-into the PLLs never locking and the resume process hanging. Fix this
-by restoring the PLLs to the mode that they were in before the suspend
-process started.
-
-Signed-off-by: Vaibhav Bedia <vaibhav.bedia at ti.com>
----
- arch/arm/mach-omap2/sleep33xx.S | 57 +++++++++++++++++++++++++-------------
- 1 files changed, 37 insertions(+), 20 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/sleep33xx.S b/arch/arm/mach-omap2/sleep33xx.S
-index 79a9e39..4db3a94 100644
---- a/arch/arm/mach-omap2/sleep33xx.S
-+++ b/arch/arm/mach-omap2/sleep33xx.S
-@@ -37,10 +37,11 @@
- ENTRY(am33xx_do_wfi)
- stmfd sp!, {r4 - r11, lr} @ save registers on stack
-
-- .macro pll_bypass, name, clk_mode_addr, idlest_addr
-+ .macro pll_bypass, name, clk_mode_addr, idlest_addr, pll_mode
- pll_bypass_\name:
- ldr r0, \clk_mode_addr
- ldr r1, [r0]
-+ str r1, clk_mode_\pll_mode
- bic r1, r1, #(7 << 0)
- orr r1, r1, #0x5
- str r1, [r0]
-@@ -51,18 +52,21 @@ wait_pll_bypass_\name:
- bne wait_pll_bypass_\name
- .endm
-
-- .macro pll_lock, name, clk_mode_addr, idlest_addr
-+ .macro pll_lock, name, clk_mode_addr, idlest_addr, pll_mode
- pll_lock_\name:
- ldr r0, \clk_mode_addr
-- ldr r1, [r0]
-- bic r1, r1, #(7 << 0)
-- orr r1, r1, #0x7
-+ ldr r1, clk_mode_\pll_mode
- str r1, [r0]
-+ and r1, r1, #0x7
-+ cmp r1, #0x7
-+ bne pll_mode_restored_\name
- ldr r0, \idlest_addr
- wait_pll_lock_\name:
- ldr r1, [r0]
- ands r1, #0x1
- beq wait_pll_lock_\name
-+pll_mode_restored_\name:
-+ nop
- .endm
-
- /* EMIF config for low power mode */
-@@ -154,11 +158,11 @@ wait_emif_disable:
- str r1, [r0]
-
- /* Put the PLLs in bypass mode */
-- pll_bypass core, virt_core_clk_mode, virt_core_idlest
-- pll_bypass ddr, virt_ddr_clk_mode, virt_ddr_idlest
-- pll_bypass disp, virt_disp_clk_mode, virt_disp_idlest
-- pll_bypass per, virt_per_clk_mode, virt_per_idlest
-- pll_bypass mpu, virt_mpu_clk_mode, virt_mpu_idlest
-+ pll_bypass core, virt_core_clk_mode, virt_core_idlest, core_val
-+ pll_bypass ddr, virt_ddr_clk_mode, virt_ddr_idlest, ddr_val
-+ pll_bypass disp, virt_disp_clk_mode, virt_disp_idlest, disp_val
-+ pll_bypass per, virt_per_clk_mode, virt_per_idlest, per_val
-+ pll_bypass mpu, virt_mpu_clk_mode, virt_mpu_idlest, mpu_val
-
- dsb
- dmb
-@@ -176,15 +180,17 @@ wait_emif_disable:
- nop
- nop
- nop
-+ nop
-+ nop
-
- /* We come here in case of an abort */
-
- /* Relock the PLLs */
-- pll_lock mpu_abt, virt_mpu_clk_mode, virt_mpu_idlest
-- pll_lock per_abt, virt_per_clk_mode, virt_per_idlest
-- pll_lock disp_abt, virt_disp_clk_mode, virt_disp_idlest
-- pll_lock ddr_abt, virt_ddr_clk_mode, virt_ddr_idlest
-- pll_lock core_abt, virt_core_clk_mode, virt_core_idlest
-+ pll_lock mpu_abt, virt_mpu_clk_mode, virt_mpu_idlest, mpu_val
-+ pll_lock per_abt, virt_per_clk_mode, virt_per_idlest, per_val
-+ pll_lock disp_abt, virt_disp_clk_mode, virt_disp_idlest, disp_val
-+ pll_lock ddr_abt, virt_ddr_clk_mode, virt_ddr_idlest, ddr_val
-+ pll_lock core_abt, virt_core_clk_mode, virt_core_idlest, core_val
-
- /* Disable SRAM LDO ret mode */
- ldr r0, virt_sram_ldo_addr
-@@ -259,11 +265,11 @@ ENTRY(am33xx_resume_offset)
-
- ENTRY(am33xx_resume_from_deep_sleep)
- /* Take the PLLs out of LP_BYPASS */
-- pll_lock mpu, phys_mpu_clk_mode, phys_mpu_idlest
-- pll_lock per, phys_per_clk_mode, phys_per_idlest
-- pll_lock disp, phys_disp_clk_mode, phys_disp_idlest
-- pll_lock ddr, phys_ddr_clk_mode, phys_ddr_idlest
-- pll_lock core, phys_core_clk_mode, phys_core_idlest
-+ pll_lock mpu, phys_mpu_clk_mode, phys_mpu_idlest, mpu_val
-+ pll_lock per, phys_per_clk_mode, phys_per_idlest, per_val
-+ pll_lock disp, phys_disp_clk_mode, phys_disp_idlest, disp_val
-+ pll_lock ddr, phys_ddr_clk_mode, phys_ddr_idlest, ddr_val
-+ pll_lock core, phys_core_clk_mode, phys_core_idlest, core_val
-
- /* Disable SRAM LDO ret mode */
- ldr r0, phys_sram_ldo_addr
-@@ -508,6 +514,17 @@ emif_pmcr_val:
- emif_pmcr_shdw_val:
- .word 0xDEADBEEF
-
-+/* PLL CLKMODE before suspend */
-+clk_mode_mpu_val:
-+ .word 0xDEADBEEF
-+clk_mode_per_val:
-+ .word 0xDEADBEEF
-+clk_mode_disp_val:
-+ .word 0xDEADBEEF
-+clk_mode_ddr_val:
-+ .word 0xDEADBEEF
-+clk_mode_core_val:
-+ .word 0xDEADBEEF
-
- ENTRY(am33xx_do_wfi_sz)
- .word . - am33xx_do_wfi
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0007-ARM-OMAP-PM-AM33XX-Update-the-sleep-code-to-handle-D.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0007-ARM-OMAP-PM-AM33XX-Update-the-sleep-code-to-handle-D.patch
deleted file mode 100644
index 37f1874..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0007-ARM-OMAP-PM-AM33XX-Update-the-sleep-code-to-handle-D.patch
+++ /dev/null
@@ -1,150 +0,0 @@
-From db18037175f6b61dfe2be5e657f1b90fe29fd946 Mon Sep 17 00:00:00 2001
-From: "Satyanarayana, Sandhya" <sandhya.satyanarayana at ti.com>
-Date: Tue, 22 May 2012 13:40:34 +0530
-Subject: [PATCH 07/18] ARM: OMAP: PM: AM33XX: Update the sleep code to handle
- DDR3
-
-DDR3 devices have a reset signal which is active low. When the
-system enters low power state this signal needs to be kept high
-to avoid a reset and hence a loss of memory content. DDR_IO_CTRL
-register in the control module gives s/w control over the reset
-line. Since the reset line is left open for DDR2 devices
-(some implementation might connect this but finally it becomes
-a NOP), there is no harm in setting the reset pin to high even
-for DDR2. This also enables us to have the same sequence for
-DDR2 and DDR3 devices.
-
-Signed-off-by: Satyanarayana, Sandhya <sandhya.satyanarayana at ti.com>
-Signed-off-by: Vaibhav Bedia <vaibhav.bedia at ti.com>
----
- arch/arm/mach-omap2/sleep33xx.S | 59 +++++++++++++++-----------------------
- 1 files changed, 23 insertions(+), 36 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/sleep33xx.S b/arch/arm/mach-omap2/sleep33xx.S
-index 4db3a94..6e802da 100644
---- a/arch/arm/mach-omap2/sleep33xx.S
-+++ b/arch/arm/mach-omap2/sleep33xx.S
-@@ -104,13 +104,13 @@ pll_mode_restored_\name:
- ldr r2, [r1]
- orr r2, r2, #0xa0 @ a reasonable delay for entering SR
- str r2, [r1, #0]
-+ str r2, [r1, #4] @ write to shadow register also
-
- ldr r2, ddr_start @ do a dummy access to DDR
- ldr r3, [r2, #0]
- ldr r3, [r1, #0]
- orr r3, r3, #0x200 @ now set the LP MODE to Self-Refresh
- str r3, [r1, #0]
-- str r2, [r1, #4] @ write to shadow register also
-
- mov r1, #0x1000 @ Give some time for the system to enter SR
- wait_sr:
-@@ -130,6 +130,11 @@ wait_emif_disable:
- cmp r2, r3
- bne wait_emif_disable
-
-+ /* DDR3 reset override and mDDR mode selection */
-+ ldr r0, virt_ddr_io_ctrl
-+ mov r1, #(0x9 << 28)
-+ str r1, [r0]
-+
- /* Weak pull down for DQ, DM */
- ldr r1, virt_ddr_io_pull1
- ldr r2, susp_io_pull
-@@ -144,13 +149,6 @@ wait_emif_disable:
- ldr r2, susp_vtp_ctrl_val
- str r2, [r1]
-
-- /* IO to work in mDDR mode */
-- ldr r0, virt_ddr_io_ctrl
-- ldr r1, [r0]
-- mov r2, #1
-- mov r3, r2, lsl #28
-- str r3, [r0]
--
- /* Enable SRAM LDO ret mode */
- ldr r0, virt_sram_ldo_addr
- ldr r1, [r0]
-@@ -198,13 +196,6 @@ wait_emif_disable:
- bic r1, #1
- str r1, [r0]
-
-- /* IO to work in DDR mode */
-- ldr r0, virt_ddr_io_ctrl
-- ldr r1, [r0]
-- mov r2, #0x0
-- mov r3, r2, lsl #28
-- str r3, [r0]
--
- /* Restore the pull for DQ, DM */
- ldr r1, virt_ddr_io_pull1
- ldr r2, resume_io_pull1
-@@ -214,6 +205,15 @@ wait_emif_disable:
- ldr r2, resume_io_pull2
- str r2, [r1]
-
-+ /* Enable EMIF */
-+ ldr r1, virt_emif_clkctrl
-+ mov r2, #0x2
-+ str r2, [r1]
-+wait_emif_enable:
-+ ldr r3, [r1]
-+ cmp r2, r3
-+ bne wait_emif_enable
-+
- /* Enable VTP */
- config_vtp_abt:
- ldr r0, virt_ddr_vtp_ctrl
-@@ -241,14 +241,10 @@ poll_vtp_ready_abt:
- tst r1, #(1 << 5)
- beq poll_vtp_ready_abt
-
-- /* Enable EMIF */
-- ldr r1, virt_emif_clkctrl
-- mov r2, #0x2
-- str r2, [r1]
--wait_emif_enable:
-- ldr r3, [r1]
-- cmp r2, r3
-- bne wait_emif_enable
-+ /* DDR3 reset override and mDDR mode clear */
-+ ldr r0, virt_ddr_io_ctrl
-+ mov r1, #0
-+ str r1, [r0]
-
- /* Disable EMIF self-refresh */
- ldr r0, emif_addr_virt
-@@ -286,19 +282,6 @@ ENTRY(am33xx_resume_from_deep_sleep)
- ldr r2, resume_io_pull2
- str r2, [r1]
-
-- /* Disable EMIF self-refresh */
-- ldr r0, emif_phys_addr
-- add r0, r0, #EMIF4_0_SDRAM_MGMT_CTRL
-- ldr r1, [r0]
-- bic r1, r1, #(0x7 << 7)
-- str r1, [r0]
--
-- /* Take out IO of mDDR mode */
-- ldr r0, phys_ddr_io_ctrl
-- ldr r1, [r0]
-- bic r1, r1, #28
-- str r1, [r0]
--
-
- config_vtp:
- ldr r0, phys_ddr_vtp_ctrl
-@@ -326,6 +309,10 @@ poll_vtp_ready:
- tst r1, #(1 << 5)
- beq poll_vtp_ready
-
-+ /* DDR3 reset override and mDDR mode clear */
-+ ldr r0, phys_ddr_io_ctrl
-+ mov r1, #0
-+ str r1, [r0]
-
- config_emif_timings:
- ldr r3, emif_phys_addr
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0008-usb-musb-update-babble-workaround-fix.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0008-usb-musb-update-babble-workaround-fix.patch
deleted file mode 100644
index 9b1ee97..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0008-usb-musb-update-babble-workaround-fix.patch
+++ /dev/null
@@ -1,168 +0,0 @@
-From 6573dac17629de93ca32dca7fb656c550a4af00d Mon Sep 17 00:00:00 2001
-From: Ajay Kumar Gupta <ajay.gupta at ti.com>
-Date: Thu, 24 May 2012 10:37:27 +0530
-Subject: [PATCH 08/18] usb: musb: update babble workaround fix
-
-Resetting of usb controller also resets the tx and rx fifo addresses of
-each endpoints and hence tx and rx fifo addresses need to be reconfigured.
-
-Signed-off-by: Ravi B <ravibabu at ti.com>
----
- drivers/usb/musb/musb_core.c | 19 ++++++++++---------
- drivers/usb/musb/musb_core.h | 1 +
- drivers/usb/musb/musb_procfs.c | 1 +
- drivers/usb/musb/ti81xx.c | 11 +++++------
- 4 files changed, 17 insertions(+), 15 deletions(-)
-
-diff --git a/drivers/usb/musb/musb_core.c b/drivers/usb/musb/musb_core.c
-index db5afeb..5850889 100644
---- a/drivers/usb/musb/musb_core.c
-+++ b/drivers/usb/musb/musb_core.c
-@@ -1067,7 +1067,7 @@ static void musb_shutdown(struct platform_device *pdev)
- */
-
- /* mode 0 - fits in 2KB */
--static struct musb_fifo_cfg __devinitdata mode_0_cfg[] = {
-+static struct musb_fifo_cfg mode_0_cfg[] = {
- { .hw_ep_num = 1, .style = FIFO_TX, .maxpacket = 512, },
- { .hw_ep_num = 1, .style = FIFO_RX, .maxpacket = 512, },
- { .hw_ep_num = 2, .style = FIFO_RXTX, .maxpacket = 512, },
-@@ -1076,7 +1076,7 @@ static struct musb_fifo_cfg __devinitdata mode_0_cfg[] = {
- };
-
- /* mode 1 - fits in 4KB */
--static struct musb_fifo_cfg __devinitdata mode_1_cfg[] = {
-+static struct musb_fifo_cfg mode_1_cfg[] = {
- { .hw_ep_num = 1, .style = FIFO_TX, .maxpacket = 512, .mode = BUF_DOUBLE, },
- { .hw_ep_num = 1, .style = FIFO_RX, .maxpacket = 512, .mode = BUF_DOUBLE, },
- { .hw_ep_num = 2, .style = FIFO_RXTX, .maxpacket = 512, .mode = BUF_DOUBLE, },
-@@ -1085,7 +1085,7 @@ static struct musb_fifo_cfg __devinitdata mode_1_cfg[] = {
- };
-
- /* mode 2 - fits in 4KB */
--static struct musb_fifo_cfg __devinitdata mode_2_cfg[] = {
-+static struct musb_fifo_cfg mode_2_cfg[] = {
- { .hw_ep_num = 1, .style = FIFO_TX, .maxpacket = 512, },
- { .hw_ep_num = 1, .style = FIFO_RX, .maxpacket = 512, },
- { .hw_ep_num = 2, .style = FIFO_TX, .maxpacket = 512, },
-@@ -1095,7 +1095,7 @@ static struct musb_fifo_cfg __devinitdata mode_2_cfg[] = {
- };
-
- /* mode 3 - fits in 4KB */
--static struct musb_fifo_cfg __devinitdata mode_3_cfg[] = {
-+static struct musb_fifo_cfg mode_3_cfg[] = {
- { .hw_ep_num = 1, .style = FIFO_TX, .maxpacket = 512, .mode = BUF_DOUBLE, },
- { .hw_ep_num = 1, .style = FIFO_RX, .maxpacket = 512, .mode = BUF_DOUBLE, },
- { .hw_ep_num = 2, .style = FIFO_TX, .maxpacket = 512, },
-@@ -1105,7 +1105,7 @@ static struct musb_fifo_cfg __devinitdata mode_3_cfg[] = {
- };
-
- /* mode 4 - fits in 16KB */
--static struct musb_fifo_cfg __devinitdata mode_4_cfg[] = {
-+static struct musb_fifo_cfg mode_4_cfg[] = {
- { .hw_ep_num = 1, .style = FIFO_TX, .maxpacket = 512,},
- { .hw_ep_num = 1, .style = FIFO_RX, .maxpacket = 512,},
- { .hw_ep_num = 2, .style = FIFO_TX, .maxpacket = 512,},
-@@ -1137,7 +1137,7 @@ static struct musb_fifo_cfg __devinitdata mode_4_cfg[] = {
-
-
- /* mode 5 - fits in 8KB */
--static struct musb_fifo_cfg __devinitdata mode_5_cfg[] = {
-+static struct musb_fifo_cfg mode_5_cfg[] = {
- { .hw_ep_num = 1, .style = FIFO_TX, .maxpacket = 512, },
- { .hw_ep_num = 1, .style = FIFO_RX, .maxpacket = 512, },
- { .hw_ep_num = 2, .style = FIFO_TX, .maxpacket = 512, },
-@@ -1168,7 +1168,7 @@ static struct musb_fifo_cfg __devinitdata mode_5_cfg[] = {
- };
-
- /* mode 6 - fits in 32KB */
--static struct musb_fifo_cfg __devinitdata mode_6_cfg[] = {
-+static struct musb_fifo_cfg mode_6_cfg[] = {
- { .hw_ep_num = 1, .style = FIFO_TX, .maxpacket = 512, .mode = BUF_DOUBLE,},
- { .hw_ep_num = 1, .style = FIFO_RX, .maxpacket = 512, .mode = BUF_DOUBLE,},
- { .hw_ep_num = 2, .style = FIFO_TX, .maxpacket = 512, .mode = BUF_DOUBLE,},
-@@ -1275,11 +1275,11 @@ fifo_setup(struct musb *musb, struct musb_hw_ep *hw_ep,
- return offset + (maxpacket << ((c_size & MUSB_FIFOSZ_DPB) ? 1 : 0));
- }
-
--static struct musb_fifo_cfg __devinitdata ep0_cfg = {
-+static struct musb_fifo_cfg ep0_cfg = {
- .style = FIFO_RXTX, .maxpacket = 64,
- };
-
--static int __devinit ep_config_from_table(struct musb *musb)
-+int ep_config_from_table(struct musb *musb)
- {
- const struct musb_fifo_cfg *cfg;
- unsigned i, n;
-@@ -1370,6 +1370,7 @@ done:
-
- return 0;
- }
-+EXPORT_SYMBOL(ep_config_from_table);
-
- /*
- * ep_config_from_hw - when MUSB_C_DYNFIFO_DEF is false
-diff --git a/drivers/usb/musb/musb_core.h b/drivers/usb/musb/musb_core.h
-index 87b6ff0..184c043 100644
---- a/drivers/usb/musb/musb_core.h
-+++ b/drivers/usb/musb/musb_core.h
-@@ -652,6 +652,7 @@ static inline const char *get_dma_name(struct musb *musb)
- return "?dma?";
- #endif
- }
-+extern int ep_config_from_table(struct musb *musb);
-
- extern void musb_gb_work(struct work_struct *data);
- /*-------------------------- ProcFS definitions ---------------------*/
-diff --git a/drivers/usb/musb/musb_procfs.c b/drivers/usb/musb/musb_procfs.c
-index e3aa42f..2db7eac 100644
---- a/drivers/usb/musb/musb_procfs.c
-+++ b/drivers/usb/musb/musb_procfs.c
-@@ -719,6 +719,7 @@ static int musb_proc_write(struct file *file, const char __user *buffer,
- INFO("T: start sending TEST_PACKET\n");
- INFO("D: set/read dbug level\n");
- INFO("K/k: enable/disable babble workaround\n");
-+ INFO("b: generate software babble interrupt\n");
- break;
-
- default:
-diff --git a/drivers/usb/musb/ti81xx.c b/drivers/usb/musb/ti81xx.c
-index d76a693..e3cf38b 100644
---- a/drivers/usb/musb/ti81xx.c
-+++ b/drivers/usb/musb/ti81xx.c
-@@ -813,8 +813,7 @@ int musb_simulate_babble(struct musb *musb)
- mdelay(100);
-
- /* generate s/w babble interrupt */
-- musb_writel(reg_base, USB_IRQ_STATUS_RAW_1,
-- MUSB_INTR_BABBLE);
-+ musb_writel(reg_base, USB_IRQ_STATUS_RAW_1, MUSB_INTR_BABBLE);
- return 0;
- }
- EXPORT_SYMBOL(musb_simulate_babble);
-@@ -828,7 +827,8 @@ void musb_babble_workaround(struct musb *musb)
-
- /* Reset the controller */
- musb_writel(reg_base, USB_CTRL_REG, USB_SOFT_RESET_MASK);
-- udelay(100);
-+ while ((musb_readl(reg_base, USB_CTRL_REG) & 0x1))
-+ cpu_relax();
-
- /* Shutdown the on-chip PHY and its PLL. */
- if (data->set_phy_power)
-@@ -843,9 +843,8 @@ void musb_babble_workaround(struct musb *musb)
- data->set_phy_power(musb->id, 1);
- mdelay(100);
-
-- /* save the usbotgss register contents */
-- musb_platform_enable(musb);
--
-+ /* re-setup the endpoint fifo addresses */
-+ ep_config_from_table(musb);
- musb_start(musb);
- }
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0009-usb-musb-ti81xx-print-the-usbss-revision-id-during-i.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0009-usb-musb-ti81xx-print-the-usbss-revision-id-during-i.patch
deleted file mode 100644
index fce35bc..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0009-usb-musb-ti81xx-print-the-usbss-revision-id-during-i.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 9a362c5b759686f056070b6cddfc7405782464a9 Mon Sep 17 00:00:00 2001
-From: Ajay Kumar Gupta <ajay.gupta at ti.com>
-Date: Wed, 23 May 2012 15:32:37 +0530
-Subject: [PATCH 09/18] usb: musb: ti81xx: print the usbss revision id during
- init
-
-This is to identify the id which can help in debugging.
-
-Signed-off-by: Ravi B <ravibabu at ti.com>
----
- drivers/usb/musb/ti81xx.c | 2 ++
- 1 files changed, 2 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/usb/musb/ti81xx.c b/drivers/usb/musb/ti81xx.c
-index e3cf38b..f7b2f62 100644
---- a/drivers/usb/musb/ti81xx.c
-+++ b/drivers/usb/musb/ti81xx.c
-@@ -1069,6 +1069,8 @@ int ti81xx_musb_init(struct musb *musb)
- if (!rev)
- return -ENODEV;
-
-+ pr_info("MUSB%d controller's USBSS revision = %08x\n", musb->id, rev);
-+
- if (is_host_enabled(musb))
- setup_timer(&musb->otg_workaround, otg_timer,
- (unsigned long) musb);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0010-usb-musb-cppi41-enable-txfifo-empty-interrupt-logic.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0010-usb-musb-cppi41-enable-txfifo-empty-interrupt-logic.patch
deleted file mode 100644
index 761f4d6..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0010-usb-musb-cppi41-enable-txfifo-empty-interrupt-logic.patch
+++ /dev/null
@@ -1,425 +0,0 @@
-From a4d99c3c1e01b91b69c6939ba3ee708611869402 Mon Sep 17 00:00:00 2001
-From: Ajay Kumar Gupta <ajay.gupta at ti.com>
-Date: Wed, 23 May 2012 15:25:32 +0530
-Subject: [PATCH 10/18] usb: musb: cppi41: enable txfifo empty interrupt logic
-
-Fixes the txdma early completion issue as the TxFIFO empty interrupt
-logic generates an interrupt when last byte from TxFIFO is
-transmitted out.
-
-The application issues fixed are -
-1) The isochronous gap issue seen due to txdma early completion and
- thus a delay caused in scheduling of txdma workthread which polls
- for txfifo empty status.
-
-2) The workthread is rescheduled once again when txfifo is empty to
- make sure any miss of transfer of the data in internal cppififo.
-
-3) For non-isochronous tx request uses workthread to poll for txfifo
- empty status if there is possiblity of data in internal cppififo
- other wise the request is completed directly in the tx-dma isr
- function.
-
-Signed-off-by: Ravi B <ravibabu at ti.com>
----
- drivers/usb/musb/cppi41_dma.c | 101 ++++++++++++++++++++++++++++++++++++++--
- drivers/usb/musb/cppi41_dma.h | 7 +++
- drivers/usb/musb/musb_core.h | 16 ++++++
- drivers/usb/musb/musb_gadget.c | 1 +
- drivers/usb/musb/musb_host.c | 1 +
- drivers/usb/musb/ti81xx.c | 51 ++++++++++++++++++++-
- drivers/usb/musb/ti81xx.h | 3 +
- 7 files changed, 174 insertions(+), 6 deletions(-)
-
-diff --git a/drivers/usb/musb/cppi41_dma.c b/drivers/usb/musb/cppi41_dma.c
-index 4761acd..3665d0f 100644
---- a/drivers/usb/musb/cppi41_dma.c
-+++ b/drivers/usb/musb/cppi41_dma.c
-@@ -101,6 +101,9 @@ struct cppi41_channel {
- u8 inf_mode;
- u8 tx_complete;
- u8 hb_mult;
-+ u8 txf_complete;
-+ u8 txfifo_intr_enable;
-+ u8 count;
- };
-
- /**
-@@ -132,6 +135,7 @@ struct cppi41 {
- u32 teardown_reg_offs; /* USB_TEARDOWN_REG offset */
- u32 bd_size;
- u8 inf_mode;
-+ u8 txfifo_intr_enable; /* txfifo empty interrupt logic */
- };
-
- struct usb_cppi41_info usb_cppi41_info[2];
-@@ -573,6 +577,9 @@ static unsigned cppi41_next_tx_segment(struct cppi41_channel *tx_ch)
- u16 q_mgr = cppi_info->q_mgr;
- u16 tx_comp_q = cppi_info->tx_comp_q[tx_ch->ch_num];
- u8 en_bd_intr = cppi->en_bd_intr;
-+ u8 is_isoc = 0;
-+ struct musb_hw_ep *hw_ep = cppi->musb->endpoints + tx_ch->end_pt->epnum;
-+ int xfer_type = hw_ep->xfer_type;
-
- /*
- * Tx can use the generic RNDIS mode where we can probably fit this
-@@ -599,6 +606,12 @@ static unsigned cppi41_next_tx_segment(struct cppi41_channel *tx_ch)
- tx_ch->ch_num, tx_ch->dma_mode ? "accelerated" : "transparent",
- pkt_size, num_pds, tx_ch->start_addr + tx_ch->curr_offset, length);
-
-+ if (xfer_type == USB_ENDPOINT_XFER_ISOC)
-+ is_isoc = 1;
-+
-+ if (is_isoc && cppi->txfifo_intr_enable && (length <= tx_ch->pkt_size))
-+ tx_ch->txfifo_intr_enable = 1;
-+
- for (n = 0; n < num_pds; n++) {
- struct cppi41_host_pkt_desc *hw_desc;
-
-@@ -640,6 +653,14 @@ static unsigned cppi41_next_tx_segment(struct cppi41_channel *tx_ch)
- dev_dbg(musb->controller, "TX PD %p: buf %08x, len %08x, pkt info %08x\n", curr_pd,
- hw_desc->buf_ptr, hw_desc->buf_len, hw_desc->pkt_info);
-
-+ /* enable tx fifo empty interrupt */
-+ if (tx_ch->txfifo_intr_enable) {
-+ dev_dbg(musb->controller, "txs(%p %d) enable txFintr\n",
-+ curr_pd, hw_desc->orig_buf_len &
-+ ~CPPI41_PKT_INTR_FLAG);
-+ txfifoempty_int_enable(cppi->musb, curr_pd->ep_num);
-+ }
-+
- cppi41_queue_push(&tx_ch->queue_obj, curr_pd->dma_addr,
- USB_CPPI41_DESC_ALIGN, pkt_size);
- }
-@@ -1211,6 +1232,8 @@ static int cppi41_channel_abort(struct dma_channel *channel)
- csr &= ~MUSB_TXCSR_DMAENAB;
- musb_writew(epio, MUSB_TXCSR, csr);
-
-+ cppi_ch->tx_complete = 0;
-+ cppi_ch->txf_complete = 0;
- /* Tear down Tx DMA channel */
- usb_tx_ch_teardown(cppi_ch);
-
-@@ -1224,7 +1247,6 @@ static int cppi41_channel_abort(struct dma_channel *channel)
- csr |= MUSB_TXCSR_FLUSHFIFO | MUSB_TXCSR_H_WZC_BITS;
- musb_writew(epio, MUSB_TXCSR, csr);
- musb_writew(epio, MUSB_TXCSR, csr);
-- cppi_ch->tx_complete = 0;
- } else { /* Rx */
- dprintk("Rx channel teardown, cppi_ch = %p\n", cppi_ch);
-
-@@ -1331,16 +1353,23 @@ void txdma_completion_work(struct work_struct *data)
- */
- if (!tx_ch->end_pt) {
- tx_ch->tx_complete = 0;
-+ tx_ch->count = 0;
- continue;
- }
-
- epio = tx_ch->end_pt->regs;
- csr = musb_readw(epio, MUSB_TXCSR);
-
-- if (csr & (MUSB_TXCSR_TXPKTRDY |
-- MUSB_TXCSR_FIFONOTEMPTY)) {
-+ if (!tx_ch->txfifo_intr_enable &&
-+ (csr & (MUSB_TXCSR_TXPKTRDY |
-+ MUSB_TXCSR_FIFONOTEMPTY))) {
- resched = 1;
- } else {
-+ if (tx_ch->count > 0) {
-+ tx_ch->count--;
-+ resched = 1;
-+ continue;
-+ }
- tx_ch->channel.status =
- MUSB_DMA_STATUS_FREE;
- tx_ch->tx_complete = 0;
-@@ -1363,6 +1392,38 @@ void txdma_completion_work(struct work_struct *data)
-
- }
-
-+void cppi41_handle_txfifo_intr(struct musb *musb, u16 usbintr)
-+{
-+ struct cppi41 *cppi;
-+ struct cppi41_channel *tx_ch;
-+ int index;
-+
-+ cppi = container_of(musb->dma_controller, struct cppi41, controller);
-+ for (index = 0; (index < USB_CPPI41_NUM_CH) && usbintr; index++) {
-+ if (usbintr & 1) {
-+ tx_ch = &cppi->tx_cppi_ch[index];
-+ if (tx_ch->txf_complete) {
-+ /* disable txfifo empty interupt */
-+ txfifoempty_int_disable(musb, index+1);
-+ tx_ch->txf_complete = 0;
-+ if (!tx_ch->txfifo_intr_enable)
-+ dev_dbg(musb->controller,
-+ "Bug, wrong TxFintr ep%d\n", index+1);
-+ tx_ch->txfifo_intr_enable = 0;
-+
-+ tx_ch->channel.status =
-+ MUSB_DMA_STATUS_FREE;
-+
-+ dev_dbg(musb->controller,
-+ "txc: givback ep%d\n", index+1);
-+ musb_dma_completion(musb, index+1, 1);
-+ }
-+ }
-+ usbintr = usbintr >> 1;
-+ }
-+}
-+EXPORT_SYMBOL(cppi41_handle_txfifo_intr);
-+
- /**
- * cppi41_dma_controller_create -
- * instantiate an object representing DMA controller.
-@@ -1386,6 +1447,7 @@ cppi41_dma_controller_create(struct musb *musb, void __iomem *mregs)
- cppi->controller.channel_abort = cppi41_channel_abort;
- cppi->cppi_info = (struct usb_cppi41_info *)&usb_cppi41_info[musb->id];;
- cppi->en_bd_intr = cppi->cppi_info->bd_intr_ctrl;
-+ cppi->txfifo_intr_enable = musb->txfifo_intr_enable;
- INIT_WORK(&cppi->txdma_work, txdma_completion_work);
-
- /*
-@@ -1472,6 +1534,9 @@ static void usb_process_tx_queue(struct cppi41 *cppi, unsigned index)
- (tx_ch->transfer_mode && !tx_ch->zlp_queued))
- cppi41_next_tx_segment(tx_ch);
- else if (tx_ch->channel.actual_len >= tx_ch->length) {
-+ void __iomem *epio;
-+ u16 csr;
-+
- /*
- * We get Tx DMA completion interrupt even when
- * data is still in FIFO and not moved out to
-@@ -1480,8 +1545,34 @@ static void usb_process_tx_queue(struct cppi41 *cppi, unsigned index)
- * USB functionality. So far, we have obsered
- * failure with iperf.
- */
-- tx_ch->tx_complete = 1;
-- schedule_work(&cppi->txdma_work);
-+ /* wait for tx fifo empty completion interrupt
-+ * if enabled other wise use the workthread
-+ * to poll fifo empty status
-+ */
-+ epio = tx_ch->end_pt->regs;
-+ csr = musb_readw(epio, MUSB_TXCSR);
-+
-+ if (tx_ch->txfifo_intr_enable) {
-+ tx_ch->txf_complete = 1;
-+ dev_dbg(musb->controller,
-+ "wait for TxF-EmptyIntr ep%d\n", ep_num);
-+ } else {
-+ int residue;
-+
-+ residue = tx_ch->channel.actual_len %
-+ tx_ch->pkt_size;
-+
-+ if (tx_ch->pkt_size > 128 && !residue) {
-+ tx_ch->channel.status =
-+ MUSB_DMA_STATUS_FREE;
-+ musb_dma_completion(cppi->musb,
-+ ep_num, 1);
-+ } else {
-+ tx_ch->tx_complete = 1;
-+ tx_ch->count = 1;
-+ schedule_work(&cppi->txdma_work);
-+ }
-+ }
- }
- }
- }
-diff --git a/drivers/usb/musb/cppi41_dma.h b/drivers/usb/musb/cppi41_dma.h
-index bedf3bb..053a135 100644
---- a/drivers/usb/musb/cppi41_dma.h
-+++ b/drivers/usb/musb/cppi41_dma.h
-@@ -58,4 +58,11 @@ extern struct usb_cppi41_info usb_cppi41_info[];
- */
- void cppi41_completion(struct musb *musb, u32 rx, u32 tx);
-
-+/**
-+ * cppi41_handle_txfifo_intr - Handles tx fifo empty interupts
-+ * @musb: the controller
-+ */
-+void cppi41_handle_txfifo_intr(struct musb *musb, u16 usbintr);
-+void txfifoempty_int_enable(struct musb *musb, u8 ep_num);
-+void txfifoempty_int_disable(struct musb *musb, u8 ep_num);
- #endif /* _CPPI41_DMA_H_ */
-diff --git a/drivers/usb/musb/musb_core.h b/drivers/usb/musb/musb_core.h
-index 184c043..40f02ae 100644
---- a/drivers/usb/musb/musb_core.h
-+++ b/drivers/usb/musb/musb_core.h
-@@ -228,6 +228,8 @@ struct musb_platform_ops {
- void __iomem *);
- void (*dma_controller_destroy)(struct dma_controller *);
- int (*simulate_babble_intr)(struct musb *musb);
-+ void (*txfifoempty_intr_enable)(struct musb *musb, u8 ep_num);
-+ void (*txfifoempty_intr_disable)(struct musb *musb, u8 ep_num);
- };
-
- /*
-@@ -278,6 +280,7 @@ struct musb_hw_ep {
- struct musb_ep ep_out; /* RX */
-
- u8 prev_toggle; /* Rx */
-+ u8 xfer_type;
- };
-
- static inline struct musb_request *next_in_request(struct musb_hw_ep *hw_ep)
-@@ -472,6 +475,7 @@ struct musb {
- u64 *orig_dma_mask;
- #endif
- short fifo_mode;
-+ u8 txfifo_intr_enable;
- };
-
- static inline struct musb *gadget_to_musb(struct usb_gadget *g)
-@@ -562,6 +566,18 @@ extern irqreturn_t musb_interrupt(struct musb *);
-
- extern void musb_hnp_stop(struct musb *musb);
-
-+static inline void txfifoempty_int_enable(struct musb *musb, u8 ep_num)
-+{
-+ if (musb->ops->txfifoempty_intr_enable)
-+ musb->ops->txfifoempty_intr_enable(musb, ep_num);
-+}
-+
-+static inline void txfifoempty_int_disable(struct musb *musb, u8 ep_num)
-+{
-+ if (musb->ops->txfifoempty_intr_disable)
-+ musb->ops->txfifoempty_intr_disable(musb, ep_num);
-+}
-+
- static inline void musb_platform_set_vbus(struct musb *musb, int is_on)
- {
- if (musb->ops->set_vbus)
-diff --git a/drivers/usb/musb/musb_gadget.c b/drivers/usb/musb/musb_gadget.c
-index 305d843..47349ca 100644
---- a/drivers/usb/musb/musb_gadget.c
-+++ b/drivers/usb/musb/musb_gadget.c
-@@ -1020,6 +1020,7 @@ static int musb_gadget_enable(struct usb_ep *ep,
- goto fail;
- }
- musb_ep->type = usb_endpoint_type(desc);
-+ hw_ep->xfer_type = musb_ep->type;
-
- /* check direction and (later) maxpacket size against endpoint */
- if (usb_endpoint_num(desc) != epnum)
-diff --git a/drivers/usb/musb/musb_host.c b/drivers/usb/musb/musb_host.c
-index 80d83bd..c3629bd 100644
---- a/drivers/usb/musb/musb_host.c
-+++ b/drivers/usb/musb/musb_host.c
-@@ -246,6 +246,7 @@ musb_start_urb(struct musb *musb, int is_in, struct musb_qh *qh)
- /* initialize software qh state */
- qh->offset = 0;
- qh->segsize = 0;
-+ hw_ep->xfer_type = qh->type;
-
- /* gather right source of data */
- switch (qh->type) {
-diff --git a/drivers/usb/musb/ti81xx.c b/drivers/usb/musb/ti81xx.c
-index f7b2f62..7e21c25 100644
---- a/drivers/usb/musb/ti81xx.c
-+++ b/drivers/usb/musb/ti81xx.c
-@@ -568,7 +568,6 @@ int cppi41_enable_sched_rx(void)
- cppi41_dma_sched_tbl_init(0, 0, dma_sched_table, 30);
- return 0;
- }
--#endif /* CONFIG_USB_TI_CPPI41_DMA */
-
- /*
- * Because we don't set CTRL.UINT, it's "important" to:
-@@ -577,6 +576,33 @@ int cppi41_enable_sched_rx(void)
- * - use INTSET/INTCLR instead.
- */
-
-+void txfifoempty_intr_enable(struct musb *musb, u8 ep_num)
-+{
-+ void __iomem *reg_base = musb->ctrl_base;
-+ u32 coremask;
-+
-+ if (musb->txfifo_intr_enable) {
-+ coremask = musb_readl(reg_base, USB_CORE_INTR_SET_REG);
-+ coremask |= (1 << (ep_num + 16));
-+ musb_writel(reg_base, USB_CORE_INTR_SET_REG, coremask);
-+ dev_dbg(musb->controller, "enable txF intr ep%d coremask %x\n",
-+ ep_num, coremask);
-+ }
-+}
-+
-+void txfifoempty_intr_disable(struct musb *musb, u8 ep_num)
-+{
-+ void __iomem *reg_base = musb->ctrl_base;
-+ u32 coremask;
-+
-+ if (musb->txfifo_intr_enable) {
-+ coremask = (1 << (ep_num + 16));
-+ musb_writel(reg_base, USB_CORE_INTR_CLEAR_REG, coremask);
-+ }
-+}
-+
-+#endif /* CONFIG_USB_TI_CPPI41_DMA */
-+
- /**
- * ti81xx_musb_enable - enable interrupts
- */
-@@ -889,6 +915,18 @@ static irqreturn_t ti81xx_interrupt(int irq, void *hci)
- musb->int_usb = (usbintr & USB_INTR_USB_MASK) >> USB_INTR_USB_SHIFT;
-
- dev_dbg(musb->controller, "usbintr (%x) epintr(%x)\n", usbintr, epintr);
-+
-+ if (musb->txfifo_intr_enable && (usbintr & USB_INTR_TXFIFO_MASK)) {
-+#ifdef CONFIG_USB_TI_CPPI41_DMA
-+ dev_dbg(musb->controller,
-+ "TxFIFOIntr %x\n", usbintr >> USB_INTR_TXFIFO_EMPTY);
-+ cppi41_handle_txfifo_intr(musb,
-+ usbintr >> USB_INTR_TXFIFO_EMPTY);
-+ ret = IRQ_HANDLED;
-+#endif
-+ }
-+ usbintr &= ~USB_INTR_TXFIFO_MASK;
-+
- /*
- * DRVVBUS IRQs are the only proxy we have (a very poor one!) for
- * AM3517's missing ID change IRQ. We need an ID change IRQ to
-@@ -1108,6 +1146,13 @@ int ti81xx_musb_init(struct musb *musb)
- /* set musb controller to host mode */
- musb_platform_set_mode(musb, mode);
-
-+#ifdef CONFIG_USB_TI_CPPI41_DMA
-+ musb->txfifo_intr_enable = 1;
-+ if (musb->txfifo_intr_enable)
-+ printk(KERN_DEBUG "TxFifo Empty intr enabled\n");
-+ else
-+ printk(KERN_DEBUG "TxFifo Empty intr disabled\n");
-+#endif
- /* enable babble workaround */
- INIT_WORK(&musb->work, evm_deferred_musb_restart);
- musb->enable_babble_work = 0;
-@@ -1184,6 +1229,10 @@ static struct musb_platform_ops ti81xx_ops = {
- .dma_controller_create = cppi41_dma_controller_create,
- .dma_controller_destroy = cppi41_dma_controller_destroy,
- .simulate_babble_intr = musb_simulate_babble,
-+#ifdef CONFIG_USB_TI_CPPI41_DMA
-+ .txfifoempty_intr_enable = txfifoempty_intr_enable,
-+ .txfifoempty_intr_disable = txfifoempty_intr_disable,
-+#endif
- };
-
- static void __devexit ti81xx_delete_musb_pdev(struct ti81xx_glue *glue, u8 id)
-diff --git a/drivers/usb/musb/ti81xx.h b/drivers/usb/musb/ti81xx.h
-index e0dbd3e..d173b55 100644
---- a/drivers/usb/musb/ti81xx.h
-+++ b/drivers/usb/musb/ti81xx.h
-@@ -125,6 +125,9 @@
- /* USB interrupt register bits */
- #define USB_INTR_USB_SHIFT 0
- #define USB_INTR_USB_MASK (0x1ff << USB_INTR_USB_SHIFT) /* 8 Mentor */
-+#define USB_INTR_TXFIFO_MASK (0xffff << 16)
-+#define USB_INTR_TXFIFO_EMPTY 17
-+
- /* interrupts and DRVVBUS interrupt */
- #define USB_INTR_DRVVBUS 0x100
- #define USB_INTR_RX_SHIFT 16
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0011-usb-musb-host-Flush-txfifo-only-if-TxPktRdy-bit-set.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0011-usb-musb-host-Flush-txfifo-only-if-TxPktRdy-bit-set.patch
deleted file mode 100644
index cd7a96b..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0011-usb-musb-host-Flush-txfifo-only-if-TxPktRdy-bit-set.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From e5fad55642b91e45ed640c546dd10bd454b6e4df Mon Sep 17 00:00:00 2001
-From: Ajay Kumar Gupta <ajay.gupta at ti.com>
-Date: Thu, 24 May 2012 15:42:53 +0530
-Subject: [PATCH 11/18] usb: musb: host: Flush txfifo only if TxPktRdy bit set
-
-This is needed as per mentor core documents.
-
-Signed-off-by: Ravi B <ravibabu at ti.com>
----
- drivers/usb/musb/musb_host.c | 23 ++++++++++++-----------
- 1 files changed, 12 insertions(+), 11 deletions(-)
-
-diff --git a/drivers/usb/musb/musb_host.c b/drivers/usb/musb/musb_host.c
-index c3629bd..7545a65 100644
---- a/drivers/usb/musb/musb_host.c
-+++ b/drivers/usb/musb/musb_host.c
-@@ -133,25 +133,26 @@ static void musb_h_tx_flush_fifo(struct musb_hw_ep *ep)
- struct musb *musb = ep->musb;
- void __iomem *epio = ep->regs;
- u16 csr;
-- u16 lastcsr = 0;
- int retries = 1000;
-
- csr = musb_readw(epio, MUSB_TXCSR);
-- while (csr & MUSB_TXCSR_FIFONOTEMPTY) {
-- if (csr != lastcsr)
-- dev_dbg(musb->controller, "Host TX FIFONOTEMPTY csr: %02x\n", csr);
-- lastcsr = csr;
-- csr = MUSB_TXCSR_FLUSHFIFO;
-+ while (csr & MUSB_TXCSR_TXPKTRDY) {
-+ if (!(csr & MUSB_TXCSR_FIFONOTEMPTY))
-+ return;
-+ else
-+ dev_dbg(musb->controller,
-+ "Host TX FIFONOTEMPTY csr: %02x\n", csr);
-+
-+ csr |= MUSB_TXCSR_FLUSHFIFO;
- musb_writew(epio, MUSB_TXCSR, csr);
- csr = musb_readw(epio, MUSB_TXCSR);
-- if (!(csr & MUSB_TXCSR_FIFONOTEMPTY))
-- break;
-+
- if (retries-- < 1) {
-- dev_dbg(musb->controller, "Could not flush host TX%d fifo: csr: %04x\n",
-- ep->epnum, csr);
-+ dev_dbg(musb->controller,
-+ "Could not flush host TX%d fifo: csr: %04x\n",
-+ ep->epnum, csr);
- return;
- }
-- mdelay(1);
- }
- }
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0012-usb-musb-cppi41-use-dsb-to-make-sure-PDs-are-updated.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0012-usb-musb-cppi41-use-dsb-to-make-sure-PDs-are-updated.patch
deleted file mode 100644
index 0edb255..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0012-usb-musb-cppi41-use-dsb-to-make-sure-PDs-are-updated.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 946a82d6042097a0b3c5e072df75da9ffcbbc44c Mon Sep 17 00:00:00 2001
-From: Ajay Kumar Gupta <ajay.gupta at ti.com>
-Date: Thu, 24 May 2012 15:45:45 +0530
-Subject: [PATCH 12/18] usb: musb: cppi41: use dsb() to make sure PDs are
- updated to memory
-
-Before pushing the tx/rx cppi packet descriptors to respective input queues
-of TX/RX DMA channels, use memory barrier dsb() to make sure the descriptors
-contents are written to memory
-
-Signed-off-by: Ravi B <ravibabu at ti.com>
----
- drivers/usb/musb/cppi41_dma.c | 7 +++++++
- 1 files changed, 7 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/usb/musb/cppi41_dma.c b/drivers/usb/musb/cppi41_dma.c
-index 3665d0f..bf74cf3 100644
---- a/drivers/usb/musb/cppi41_dma.c
-+++ b/drivers/usb/musb/cppi41_dma.c
-@@ -653,6 +653,9 @@ static unsigned cppi41_next_tx_segment(struct cppi41_channel *tx_ch)
- dev_dbg(musb->controller, "TX PD %p: buf %08x, len %08x, pkt info %08x\n", curr_pd,
- hw_desc->buf_ptr, hw_desc->buf_len, hw_desc->pkt_info);
-
-+ /* make sure descriptor details are updated to memory*/
-+ dsb();
-+
- /* enable tx fifo empty interrupt */
- if (tx_ch->txfifo_intr_enable) {
- dev_dbg(musb->controller, "txs(%p %d) enable txFintr\n",
-@@ -869,6 +872,10 @@ static unsigned cppi41_next_rx_segment(struct cppi41_channel *rx_ch)
-
- if (en_bd_intr)
- hw_desc->orig_buf_len |= CPPI41_PKT_INTR_FLAG;
-+
-+ /* make sure descriptor details are updated to memory*/
-+ dsb();
-+
- /*
- * Push the free Rx packet descriptor
- * to the free descriptor/buffer queue.
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0013-usb-musb-cppi41-fix-zero-byte-OUT-issue.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0013-usb-musb-cppi41-fix-zero-byte-OUT-issue.patch
deleted file mode 100644
index 11f05c1..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0013-usb-musb-cppi41-fix-zero-byte-OUT-issue.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 4fbf77cebc6d141b9a74a92fd2b3f756908ef657 Mon Sep 17 00:00:00 2001
-From: Ajay Kumar Gupta <ajay.gupta at ti.com>
-Date: Wed, 18 Apr 2012 00:16:03 +0530
-Subject: [PATCH 13/18] usb: musb: cppi41: fix zero byte OUT issue
-
-Fixes ZERO byte transfer in tx direction which was not being done in DMA mode.
-Used PIO mode for all zero byte tx transfer.
----
- drivers/usb/musb/musb_host.c | 12 +++++++++++-
- 1 files changed, 11 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/usb/musb/musb_host.c b/drivers/usb/musb/musb_host.c
-index 7545a65..8981586 100644
---- a/drivers/usb/musb/musb_host.c
-+++ b/drivers/usb/musb/musb_host.c
-@@ -761,6 +761,8 @@ static void musb_ep_program(struct musb *musb, u8 epnum,
- void __iomem *epio = hw_ep->regs;
- struct musb_qh *qh = musb_ep_get_qh(hw_ep, !is_out);
- u16 packet_sz = qh->maxpacket;
-+ u8 use_dma = 1;
-+ u16 csr;
-
- dev_dbg(musb->controller, "%s hw%d urb %p spd%d dev%d ep%d%s "
- "h_addr%02x h_port%02x bytes %d\n",
-@@ -772,9 +774,17 @@ static void musb_ep_program(struct musb *musb, u8 epnum,
-
- musb_ep_select(musb, mbase, epnum);
-
-+ if (is_out && !len) {
-+ use_dma = 0;
-+ csr = musb_readw(epio, MUSB_TXCSR);
-+ csr &= ~MUSB_TXCSR_DMAENAB;
-+ musb_writew(epio, MUSB_TXCSR, csr);
-+ hw_ep->tx_channel = NULL;
-+ }
-+
- /* candidate for DMA? */
- dma_controller = musb->dma_controller;
-- if (is_dma_capable() && epnum && dma_controller) {
-+ if (use_dma && is_dma_capable() && epnum && dma_controller) {
- dma_channel = is_out ? hw_ep->tx_channel : hw_ep->rx_channel;
- if (!dma_channel) {
- dma_channel = dma_controller->channel_alloc(
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0014-usb-musb-host-fix-for-urb-error-handling.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0014-usb-musb-host-fix-for-urb-error-handling.patch
deleted file mode 100644
index 8831c2c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0014-usb-musb-host-fix-for-urb-error-handling.patch
+++ /dev/null
@@ -1,66 +0,0 @@
-From 984969ee49797eadbfd4ca72f1d55c6ac52b4db6 Mon Sep 17 00:00:00 2001
-From: Ajay Kumar Gupta <ajay.gupta at ti.com>
-Date: Thu, 24 May 2012 15:56:37 +0530
-Subject: [PATCH 14/18] usb: musb: host: fix for urb error handling
-
-Fixes below two issues related urb error handling
-
-1) Handling incomplete transfer when short packet not expected
-
-2) Do not start next urb when current urb has failed, this is
- because stack will unlink/dequeue remaining urbs. Programming
- the next urb will endup in urb completion because of expected
- error (cause of current urb failure) interrupts and interfere
- with urb dequeue initiated by stack and cause a crash.
-
-Signed-off-by: Ravi B <ravibabu at ti.com>
-Signed-off-by: Visuvanadan Pasupathy <vichu at ti.com>
----
- drivers/usb/musb/musb_host.c | 24 +++++++++++++++++++++---
- 1 files changed, 21 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/usb/musb/musb_host.c b/drivers/usb/musb/musb_host.c
-index 8981586..13520ee 100644
---- a/drivers/usb/musb/musb_host.c
-+++ b/drivers/usb/musb/musb_host.c
-@@ -481,7 +481,14 @@ static void musb_advance_schedule(struct musb *musb, struct urb *urb,
- }
- }
-
-- if (qh != NULL && qh->is_ready) {
-+ /* we should not start next urb when current urb
-+ * has failed, this is because stack will unlink/dequeue
-+ * remaining urbs. Programming the next urb will endup in
-+ * urb completion because of expected error (cause of current
-+ * urb failure) interrupts and interfere with urb dequeue
-+ * initiated by stack and cause a crash.
-+ */
-+ if (status == 0 && qh != NULL && qh->is_ready) {
- dev_dbg(musb->controller, "... next ep%d %cX urb %p\n",
- hw_ep->epnum, is_in ? 'R' : 'T', next_urb(qh));
- musb_start_urb(musb, is_in, qh);
-@@ -1891,8 +1898,19 @@ finish:
- urb->actual_length += xfer_len;
- qh->offset += xfer_len;
- if (done) {
-- if (urb->status == -EINPROGRESS)
-- urb->status = status;
-+ if (urb->status == -EINPROGRESS) {
-+ /* If short packet is not expected any transfer length
-+ * less than actual length is an error, hence
-+ * set urb status to -EREMOTEIO
-+ */
-+ if ((urb->status == -EINPROGRESS)
-+ && (urb->transfer_flags & URB_SHORT_NOT_OK)
-+ && (urb->actual_length
-+ < urb->transfer_buffer_length))
-+ urb->status = -EREMOTEIO;
-+ else
-+ urb->status = status;
-+ }
- musb_advance_schedule(musb, urb, hw_ep, USB_DIR_IN);
- }
- }
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0015-usb-musb-cppi41-txdma-flushfifo-fixes-during-channel.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0015-usb-musb-cppi41-txdma-flushfifo-fixes-during-channel.patch
deleted file mode 100644
index 4bf3144..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0015-usb-musb-cppi41-txdma-flushfifo-fixes-during-channel.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From a67c22912417f2b4c22f063767405992e702efbe Mon Sep 17 00:00:00 2001
-From: Ravi B <ravibabu at ti.com>
-Date: Thu, 10 May 2012 17:05:41 +0530
-Subject: [PATCH 15/18] usb: musb: cppi41: txdma flushfifo fixes during
- channel abort
-
-This patch fixes the flushfifo sequence during tx dma channel
-abort, the txfifo should be flushed only when the TXPKTRDY bit
-is set in TXCSR register.
-
-Signed-off-by: Ravi B <ravibabu at ti.com>
----
- drivers/usb/musb/cppi41_dma.c | 14 +++++++++-----
- 1 files changed, 9 insertions(+), 5 deletions(-)
-
-diff --git a/drivers/usb/musb/cppi41_dma.c b/drivers/usb/musb/cppi41_dma.c
-index bf74cf3..4367e4f 100644
---- a/drivers/usb/musb/cppi41_dma.c
-+++ b/drivers/usb/musb/cppi41_dma.c
-@@ -1198,7 +1198,7 @@ static int cppi41_channel_abort(struct dma_channel *channel)
- void __iomem *reg_base, *epio;
- unsigned long pd_addr;
- u32 csr, td_reg;
-- u8 ch_num, ep_num;
-+ u8 ch_num, ep_num, i;
-
- cppi_ch = container_of(channel, struct cppi41_channel, channel);
- ch_num = cppi_ch->ch_num;
-@@ -1250,10 +1250,14 @@ static int cppi41_channel_abort(struct dma_channel *channel)
- musb_writel(reg_base, cppi->teardown_reg_offs, td_reg);
-
- /* Flush FIFO of the endpoint */
-- csr = musb_readw(epio, MUSB_TXCSR);
-- csr |= MUSB_TXCSR_FLUSHFIFO | MUSB_TXCSR_H_WZC_BITS;
-- musb_writew(epio, MUSB_TXCSR, csr);
-- musb_writew(epio, MUSB_TXCSR, csr);
-+ for (i = 0; i < 2; ++i) {
-+ csr = musb_readw(epio, MUSB_TXCSR);
-+ if (csr & MUSB_TXCSR_TXPKTRDY) {
-+ csr |= MUSB_TXCSR_FLUSHFIFO |
-+ MUSB_TXCSR_H_WZC_BITS;
-+ musb_writew(epio, MUSB_TXCSR, csr);
-+ }
-+ }
- } else { /* Rx */
- dprintk("Rx channel teardown, cppi_ch = %p\n", cppi_ch);
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0016-usb-musb-cppi41-tx-dma-completion-fixes.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0016-usb-musb-cppi41-tx-dma-completion-fixes.patch
deleted file mode 100644
index 9798397..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0016-usb-musb-cppi41-tx-dma-completion-fixes.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 2e3ec89c3e6cf54d83479d7437696343463c90e5 Mon Sep 17 00:00:00 2001
-From: Ajay Kumar Gupta <ajay.gupta at ti.com>
-Date: Thu, 24 May 2012 16:03:02 +0530
-Subject: [PATCH 16/18] usb: musb: cppi41: tx dma completion fixes
-
-Use spinlock_irqsave/restore only during txdma completion giveback.
-
-Signed-off-by: Ravi B <ravibabu at ti.com>
----
- drivers/usb/musb/cppi41_dma.c | 5 +++--
- 1 files changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/usb/musb/cppi41_dma.c b/drivers/usb/musb/cppi41_dma.c
-index 4367e4f..ea83f9a 100644
---- a/drivers/usb/musb/cppi41_dma.c
-+++ b/drivers/usb/musb/cppi41_dma.c
-@@ -1354,7 +1354,6 @@ void txdma_completion_work(struct work_struct *data)
- u16 csr;
-
- tx_ch = &cppi->tx_cppi_ch[index];
-- spin_lock_irqsave(&musb->lock, flags);
- if (tx_ch->tx_complete) {
- /* Sometimes a EP can unregister from a DMA
- * channel while the data is still in the FIFO.
-@@ -1384,10 +1383,12 @@ void txdma_completion_work(struct work_struct *data)
- tx_ch->channel.status =
- MUSB_DMA_STATUS_FREE;
- tx_ch->tx_complete = 0;
-+ spin_lock_irqsave(&musb->lock, flags);
- musb_dma_completion(musb, index+1, 1);
-+ spin_unlock_irqrestore(&musb->lock,
-+ flags);
- }
- }
-- spin_unlock_irqrestore(&musb->lock, flags);
-
- if (!resched)
- cond_resched();
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0017-usb-musb-host-Flush-RxFIFO-only-when-RxPktRdy-is-set.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0017-usb-musb-host-Flush-RxFIFO-only-when-RxPktRdy-is-set.patch
deleted file mode 100644
index c291207..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0017-usb-musb-host-Flush-RxFIFO-only-when-RxPktRdy-is-set.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From c336629a155593e443ba21a0734b3c519a61e560 Mon Sep 17 00:00:00 2001
-From: Ajay Kumar Gupta <ajay.gupta at ti.com>
-Date: Thu, 24 May 2012 16:31:27 +0530
-Subject: [PATCH 17/18] usb: musb: host: Flush RxFIFO only when RxPktRdy is
- set
-
-This need to be done as per mentor core documentations.
-
-Signed-off-by: Ajay Kumar Gupta <ajay.gupta at ti.com>
----
- drivers/usb/musb/musb_host.c | 3 ++-
- 1 files changed, 2 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/usb/musb/musb_host.c b/drivers/usb/musb/musb_host.c
-index 13520ee..f56fde2 100644
---- a/drivers/usb/musb/musb_host.c
-+++ b/drivers/usb/musb/musb_host.c
-@@ -507,7 +507,8 @@ static u16 musb_h_flush_rxfifo(struct musb_hw_ep *hw_ep, u16 csr)
- * ignore dma (various models),
- * leave toggle alone (may not have been saved yet)
- */
-- csr |= MUSB_RXCSR_FLUSHFIFO | MUSB_RXCSR_RXPKTRDY;
-+ if (csr & MUSB_RXCSR_RXPKTRDY)
-+ csr |= MUSB_RXCSR_FLUSHFIFO | MUSB_RXCSR_RXPKTRDY;
- csr &= ~(MUSB_RXCSR_H_REQPKT
- | MUSB_RXCSR_H_AUTOREQ
- | MUSB_RXCSR_AUTOCLEAR);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0018-usb-musb-ti81xx-fix-role-switching-issue.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0018-usb-musb-ti81xx-fix-role-switching-issue.patch
deleted file mode 100644
index d923f08..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0018-usb-musb-ti81xx-fix-role-switching-issue.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-From f2ddff7377332c9e18878aaa84456d01fcf1d39e Mon Sep 17 00:00:00 2001
-From: Ajay Kumar Gupta <ajay.gupta at ti.com>
-Date: Fri, 25 May 2012 11:59:20 +0530
-Subject: [PATCH 18/18] usb: musb: ti81xx: fix role switching issue
-
-Fixing the role switching issue seen when followed steps below:
-
-a) Configure port in OTG mode
-b) Connect MSC device through micro-A-plug to std-A-receptacle
-c) MSC enumerated and works fine.
-d) Disconnect MSC device and let cable be connected to port
-e) Now disconnect cable also
-f) Connect port to host PC using micro-B plug to std-A plug.
-e) PC doesn't recognise the gadget driver.
----
- drivers/usb/musb/ti81xx.c | 26 +++++++++++++++++++++-----
- 1 files changed, 21 insertions(+), 5 deletions(-)
-
-diff --git a/drivers/usb/musb/ti81xx.c b/drivers/usb/musb/ti81xx.c
-index 7e21c25..6b0eb9e 100644
---- a/drivers/usb/musb/ti81xx.c
-+++ b/drivers/usb/musb/ti81xx.c
-@@ -708,6 +708,12 @@ static void otg_timer(unsigned long _musb)
- devctl = musb_readb(mregs, MUSB_DEVCTL);
- if (devctl & MUSB_DEVCTL_HM) {
- musb->xceiv->state = OTG_STATE_A_IDLE;
-+ } else if ((devctl & MUSB_DEVCTL_SESSION) &&
-+ !(devctl & MUSB_DEVCTL_BDEVICE)) {
-+ mod_timer(&musb->otg_workaround,
-+ jiffies + POLL_SECONDS * HZ);
-+ musb_writeb(musb->mregs, MUSB_DEVCTL, devctl &
-+ ~MUSB_DEVCTL_SESSION);
- } else {
- mod_timer(&musb->otg_workaround,
- jiffies + POLL_SECONDS * HZ);
-@@ -976,11 +982,21 @@ static irqreturn_t ti81xx_interrupt(int irq, void *hci)
- jiffies + POLL_SECONDS * HZ);
- WARNING("VBUS error workaround (delay coming)\n");
- } else if (is_host_enabled(musb) && drvvbus) {
-- musb->is_active = 1;
-- MUSB_HST_MODE(musb);
-- musb->xceiv->default_a = 1;
-- musb->xceiv->state = OTG_STATE_A_WAIT_VRISE;
-- del_timer(&musb->otg_workaround);
-+ if ((devctl & MUSB_DEVCTL_SESSION) &&
-+ !(devctl & MUSB_DEVCTL_BDEVICE) &&
-+ !(devctl & MUSB_DEVCTL_HM)) {
-+ dev_dbg(musb->controller,
-+ "Only micro-A plug is connected\n");
-+ } else {
-+ if (musb->is_active)
-+ del_timer(&musb->otg_workaround);
-+ else
-+ musb->is_active = 1;
-+
-+ MUSB_HST_MODE(musb);
-+ musb->xceiv->default_a = 1;
-+ musb->xceiv->state = OTG_STATE_A_WAIT_VRISE;
-+ }
- } else {
- musb->is_active = 0;
- MUSB_DEV_MODE(musb);
---
-1.7.7.6
-
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
deleted file mode 100644
index 43e5feb..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0019-MMC-OMAP-HS-Enable-HSPE-bit-for-high-speed-cards.patch
+++ /dev/null
@@ -1,66 +0,0 @@
-From 97ffca5e70b312b81bdf095d1d2a104fdaa98aba Mon Sep 17 00:00:00 2001
-From: "Philip, Avinash" <avinashphilip at ti.com>
-Date: Mon, 4 Jun 2012 18:45:45 +0530
-Subject: [PATCH 19/19] MMC: OMAP-HS: Enable HSPE bit for high speed cards.
-
-By outputting CMD line and DAT lines at the rising edge of the SD clock,
-setup timings is increased and allows reaching higher bus frequency.
-This feature is activated by setting SD_HCTL[2] HSPE bit to 1. This is
-required for High Speed Cards.
-
-When card is operating at high speed, MMC/SD serial output clock is set
-to >25 MHz. This patch makes use of this clock value to set HSPE.
-
-Also, this bit will be cleared on card removal & for non-high speed
-cards.
-
-Tested on High speed cards (SDHC class 10, micro SDHC class 4) and
-normal speed cards like SDHC class 4.
-
-Signed-off-by: Philip, Avinash <avinashphilip at ti.com>
----
- drivers/mmc/host/omap_hsmmc.c | 14 +++++++++++++-
- 1 file changed, 13 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c
-index 1f938d9..22da8f2 100644
---- a/drivers/mmc/host/omap_hsmmc.c
-+++ b/drivers/mmc/host/omap_hsmmc.c
-@@ -90,6 +90,7 @@
- #define MSBS (1 << 5)
- #define BCE (1 << 1)
- #define FOUR_BIT (1 << 1)
-+#define HSPE (1 << 2)
- #define DVAL_MASK (3 << 9)
- #define DVAL_MAX (3 << 9) /* 8.4 ms debounce period */
- #define WPP_MASK (1 << 8)
-@@ -634,14 +635,25 @@ static void omap_hsmmc_set_clock(struct omap_hsmmc_host *host)
- struct mmc_ios *ios = &host->mmc->ios;
- unsigned long regval;
- unsigned long timeout;
-+ unsigned long clkdiv;
-
- dev_dbg(mmc_dev(host->mmc), "Set clock to %uHz\n", ios->clock);
-
-+ clkdiv = calc_divisor(host, ios);
-+ regval = OMAP_HSMMC_READ(host->base, HCTL);
-+ /* Enable HSPE bit for high speed card */
-+ if (ios->clock && (clk_get_rate(host->fclk)/clkdiv) > 25000000)
-+ regval |= HSPE;
-+ else
-+ regval &= ~HSPE;
-+
-+ OMAP_HSMMC_WRITE(host->base, HCTL, regval);
-+
- omap_hsmmc_stop_clock(host);
-
- regval = OMAP_HSMMC_READ(host->base, SYSCTL);
- regval = regval & ~(CLKD_MASK | DTO_MASK);
-- regval = regval | (calc_divisor(host, ios) << 6) | (DTO << 16);
-+ regval = regval | (clkdiv << 6) | (DTO << 16);
- OMAP_HSMMC_WRITE(host->base, SYSCTL, regval);
- OMAP_HSMMC_WRITE(host->base, SYSCTL,
- OMAP_HSMMC_READ(host->base, SYSCTL) | ICE);
---
-1.7.9.5
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/pwm/0001-PWM-ecap-Correct-configuration-of-polarity.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/pwm/0001-PWM-ecap-Correct-configuration-of-polarity.patch
deleted file mode 100644
index 1d17a8c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/pwm/0001-PWM-ecap-Correct-configuration-of-polarity.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 0a2068b30dcf949b2852511c4c909e5283cbd540 Mon Sep 17 00:00:00 2001
-From: "Philip, Avinash" <avinashphilip at ti.com>
-Date: Fri, 18 May 2012 12:10:36 +0530
-Subject: [PATCH 1/6] PWM: ecap: Correct configuration of polarity
-
-1. ECAP driver configures PWM polarity wrongly. For example if polarity
-configured low and duty percentage to 20%, PWM output should be 20% low
-and 80% high. However behavior is inverted here.
-
-2. Also reading back from SYSFS interface for polarity always gives 0.
-
-This patch fixes both.
-
-Signed-off-by: Philip, Avinash <avinashphilip at ti.com>
----
- drivers/pwm/ecap.c | 3 ++-
- 1 files changed, 2 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/pwm/ecap.c b/drivers/pwm/ecap.c
-index 63c2405..614be36 100644
---- a/drivers/pwm/ecap.c
-+++ b/drivers/pwm/ecap.c
-@@ -121,7 +121,7 @@ static int ecap_pwm_set_polarity(struct pwm_device *p, char pol)
- spin_lock_irqsave(&ep->lock, flags);
- v = readw(ep->mmio_base + CAPTURE_CTRL2_REG);
- v &= ~ECTRL2_PLSL_LOW;
-- v |= (!pol << 10);
-+ v |= pol << 10;
- writew(v, ep->mmio_base + CAPTURE_CTRL2_REG);
- spin_unlock_irqrestore(&ep->lock, flags);
-
-@@ -188,6 +188,7 @@ static int ecap_pwm_config(struct pwm_device *p,
- break;
-
- case BIT(PWM_CONFIG_POLARITY):
-+ p->active_high = c->polarity;
- ret = ecap_pwm_set_polarity(p, c->polarity);
- break;
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/pwm/0002-ARM-OMAP2-am335x-mux-add-ecap2_in_pwm2_out-string-en.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/pwm/0002-ARM-OMAP2-am335x-mux-add-ecap2_in_pwm2_out-string-en.patch
deleted file mode 100644
index 009c785..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/pwm/0002-ARM-OMAP2-am335x-mux-add-ecap2_in_pwm2_out-string-en.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From c2496a91c7a198e0713a00d5d8a3e6d6dd8eea30 Mon Sep 17 00:00:00 2001
-From: "Philip, Avinash" <avinashphilip at ti.com>
-Date: Wed, 16 May 2012 09:43:56 +0530
-Subject: [PATCH 2/6] ARM: OMAP2+: am335x-mux: add ecap2_in_pwm2_out string
- entry
-
-On am335x-sk board, backlight is control through ecap 2.
-
-Signed-off-by: Philip, Avinash <avinashphilip at ti.com>
----
- arch/arm/mach-omap2/mux33xx.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/mux33xx.c b/arch/arm/mach-omap2/mux33xx.c
-index 59e51e0..5749d20 100644
---- a/arch/arm/mach-omap2/mux33xx.c
-+++ b/arch/arm/mach-omap2/mux33xx.c
-@@ -340,7 +340,7 @@ static struct omap_mux __initdata am33xx_muxmodes[] = {
- "mmc2_sdcd", NULL, NULL, "gpio3_16"),
- _AM33XX_MUXENTRY(MCASP0_AHCLKR, 0,
- "mcasp0_ahclkr", NULL, "mcasp0_axr2", "spi1_cs0",
-- NULL, NULL, NULL, "gpio3_17"),
-+ "ecap2_in_pwm2_out", NULL, NULL, "gpio3_17"),
- _AM33XX_MUXENTRY(MCASP0_ACLKR, 0,
- "mcasp0_aclkr", NULL, "mcasp0_axr2", "mcasp1_aclkx",
- "mmc0_sdwp", NULL, NULL, "gpio3_18"),
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/pwm/0003-ARM-OMAP2-AM335x-hwmod-Remove-PRCM-entries-for-PWMSS.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/pwm/0003-ARM-OMAP2-AM335x-hwmod-Remove-PRCM-entries-for-PWMSS.patch
deleted file mode 100644
index fcdc5b2..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/pwm/0003-ARM-OMAP2-AM335x-hwmod-Remove-PRCM-entries-for-PWMSS.patch
+++ /dev/null
@@ -1,107 +0,0 @@
-From 3c42d32f6dac363c3a7e3fa491278592409498cf Mon Sep 17 00:00:00 2001
-From: "Philip, Avinash" <avinashphilip at ti.com>
-Date: Tue, 7 Aug 2012 18:25:50 +0530
-Subject: [PATCH 3/6] ARM: OMAP2+: AM335x: hwmod: Remove PRCM entries for
- PWMSS
-
-PWMSS clock resources being used as a shared resource for eCAP & eHRPWM
-OMAP devices. However OMAP hwmod didn't protect the race condition for
-accessing shared resources from independent OMAP devices. So removes
-PRCM entries, so that clock framework takes care of clock synchronization
-between eCAP & eHRPWM devices.
-
-NOTE:
-With removal .prcm hwmod data, clock enabling is happening from clock
-frame work. With clock framework, usecount entry in struct clk takes
-care the race condition.
-
-Signed-off-by: Philip, Avinash <avinashphilip at ti.com>
----
- arch/arm/mach-omap2/omap_hwmod_33xx_data.c | 36 ----------------------------
- 1 files changed, 0 insertions(+), 36 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/omap_hwmod_33xx_data.c b/arch/arm/mach-omap2/omap_hwmod_33xx_data.c
-index 9d3c9a5..832bba3 100644
---- a/arch/arm/mach-omap2/omap_hwmod_33xx_data.c
-+++ b/arch/arm/mach-omap2/omap_hwmod_33xx_data.c
-@@ -729,12 +729,6 @@ static struct omap_hwmod am33xx_ehrpwm0_hwmod = {
- .class = &am33xx_epwmss_hwmod_class,
- .main_clk = "epwmss0_fck",
- .clkdm_name = "l4ls_clkdm",
-- .prcm = {
-- .omap4 = {
-- .clkctrl_offs = AM33XX_CM_PER_EPWMSS0_CLKCTRL_OFFSET,
-- .modulemode = MODULEMODE_SWCTRL,
-- },
-- },
- .slaves = am33xx_ehrpwm0_slaves,
- .slaves_cnt = ARRAY_SIZE(am33xx_ehrpwm0_slaves),
- .opt_clks = ehrpwm0_opt_clks,
-@@ -787,12 +781,6 @@ static struct omap_hwmod am33xx_ehrpwm1_hwmod = {
- .class = &am33xx_epwmss_hwmod_class,
- .main_clk = "epwmss1_fck",
- .clkdm_name = "l4ls_clkdm",
-- .prcm = {
-- .omap4 = {
-- .clkctrl_offs = AM33XX_CM_PER_EPWMSS1_CLKCTRL_OFFSET,
-- .modulemode = MODULEMODE_SWCTRL,
-- },
-- },
- .slaves = am33xx_ehrpwm1_slaves,
- .slaves_cnt = ARRAY_SIZE(am33xx_ehrpwm1_slaves),
- .opt_clks = ehrpwm1_opt_clks,
-@@ -845,12 +833,6 @@ static struct omap_hwmod am33xx_ehrpwm2_hwmod = {
- .class = &am33xx_epwmss_hwmod_class,
- .main_clk = "epwmss2_fck",
- .clkdm_name = "l4ls_clkdm",
-- .prcm = {
-- .omap4 = {
-- .clkctrl_offs = AM33XX_CM_PER_EPWMSS2_CLKCTRL_OFFSET,
-- .modulemode = MODULEMODE_SWCTRL,
-- },
-- },
- .slaves = am33xx_ehrpwm2_slaves,
- .slaves_cnt = ARRAY_SIZE(am33xx_ehrpwm2_slaves),
- .opt_clks = ehrpwm2_opt_clks,
-@@ -898,12 +880,6 @@ static struct omap_hwmod am33xx_ecap0_hwmod = {
- .class = &am33xx_epwmss_hwmod_class,
- .main_clk = "epwmss0_fck",
- .clkdm_name = "l4ls_clkdm",
-- .prcm = {
-- .omap4 = {
-- .clkctrl_offs = AM33XX_CM_PER_EPWMSS0_CLKCTRL_OFFSET,
-- .modulemode = MODULEMODE_SWCTRL,
-- },
-- },
- .slaves = am33xx_ecap0_slaves,
- .slaves_cnt = ARRAY_SIZE(am33xx_ecap0_slaves),
- };
-@@ -949,12 +925,6 @@ static struct omap_hwmod am33xx_ecap1_hwmod = {
- .class = &am33xx_epwmss_hwmod_class,
- .main_clk = "epwmss1_fck",
- .clkdm_name = "l4ls_clkdm",
-- .prcm = {
-- .omap4 = {
-- .clkctrl_offs = AM33XX_CM_PER_EPWMSS1_CLKCTRL_OFFSET,
-- .modulemode = MODULEMODE_SWCTRL,
-- },
-- },
- .slaves = am33xx_ecap1_slaves,
- .slaves_cnt = ARRAY_SIZE(am33xx_ecap1_slaves),
- };
-@@ -1000,12 +970,6 @@ static struct omap_hwmod am33xx_ecap2_hwmod = {
- .class = &am33xx_epwmss_hwmod_class,
- .clkdm_name = "l4ls_clkdm",
- .main_clk = "epwmss2_fck",
-- .prcm = {
-- .omap4 = {
-- .clkctrl_offs = AM33XX_CM_PER_EPWMSS2_CLKCTRL_OFFSET,
-- .modulemode = MODULEMODE_SWCTRL,
-- },
-- },
- .slaves = am33xx_ecap2_slaves,
- .slaves_cnt = ARRAY_SIZE(am33xx_ecap2_slaves),
- };
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/pwm/0004-PWM-ecap-Resets-the-PWM-output-to-low-on-stop.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/pwm/0004-PWM-ecap-Resets-the-PWM-output-to-low-on-stop.patch
deleted file mode 100644
index 781e690..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/pwm/0004-PWM-ecap-Resets-the-PWM-output-to-low-on-stop.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From cd86d4c2a2a380a0824a08aed2d878c1d12a94e4 Mon Sep 17 00:00:00 2001
-From: "Philip, Avinash" <avinashphilip at ti.com>
-Date: Wed, 8 Aug 2012 18:17:11 +0530
-Subject: [PATCH 4/6] PWM: ecap: Resets the PWM output to low on stop
-
-When PWM is stopped, the output on the PWM pin is not reset to low. This
-can result in un-predictable output (example pwm brightness goes to 100%
-if the line is high upon stop).
-This patch fixes by disabling APWM mode on stop & enable it on start.
-
-Signed-off-by: Philip, Avinash <avinashphilip at ti.com>
----
- drivers/pwm/ecap.c | 4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/pwm/ecap.c b/drivers/pwm/ecap.c
-index 614be36..670b32e 100644
---- a/drivers/pwm/ecap.c
-+++ b/drivers/pwm/ecap.c
-@@ -77,7 +77,7 @@ static int ecap_pwm_stop(struct pwm_device *p)
-
- spin_lock_irqsave(&ep->lock, flags);
- v = readw(ep->mmio_base + CAPTURE_CTRL2_REG);
-- v &= ~ECTRL2_CTRSTP_FREERUN;
-+ v &= ~(ECTRL2_CTRSTP_FREERUN | ECTRL2_MDSL_ECAP);
- writew(v, ep->mmio_base + CAPTURE_CTRL2_REG);
- spin_unlock_irqrestore(&ep->lock, flags);
-
-@@ -103,7 +103,7 @@ static int ecap_pwm_start(struct pwm_device *p)
-
- spin_lock_irqsave(&ep->lock, flags);
- v = readw(ep->mmio_base + CAPTURE_CTRL2_REG);
-- v |= ECTRL2_CTRSTP_FREERUN;
-+ v |= (ECTRL2_CTRSTP_FREERUN | ECTRL2_MDSL_ECAP);
- writew(v, ep->mmio_base + CAPTURE_CTRL2_REG);
- spin_unlock_irqrestore(&ep->lock, flags);
- set_bit(FLAG_RUNNING, &p->flags);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/pwm/0005-PWM-ecap-Fix-for-throwing-PWM-output-before-running.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/pwm/0005-PWM-ecap-Fix-for-throwing-PWM-output-before-running.patch
deleted file mode 100644
index fb333d8..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/pwm/0005-PWM-ecap-Fix-for-throwing-PWM-output-before-running.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From 16bfdd6480abb907b946d1c902205e6f03d7ed68 Mon Sep 17 00:00:00 2001
-From: "Philip, Avinash" <avinashphilip at ti.com>
-Date: Tue, 14 Aug 2012 13:48:55 +0530
-Subject: [PATCH 5/6] PWM: ecap: Fix for throwing PWM output before running
-
-On configuring duty cycle, APWM mode is enabled and left enabled even if
-PWM not running. Fixes the same by disabling APWM mode if PWM device not
-running. This ensures PWM output is low if PWM device not running.
-
-Signed-off-by: Philip, Avinash <avinashphilip at ti.com>
----
- drivers/pwm/ecap.c | 11 +++++++----
- 1 files changed, 7 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/pwm/ecap.c b/drivers/pwm/ecap.c
-index 670b32e..864f3ee 100644
---- a/drivers/pwm/ecap.c
-+++ b/drivers/pwm/ecap.c
-@@ -131,16 +131,13 @@ static int ecap_pwm_set_polarity(struct pwm_device *p, char pol)
-
- static int ecap_pwm_config_period(struct pwm_device *p)
- {
-- unsigned long flags, v;
-+ unsigned long flags;
- struct ecap_pwm *ep = to_ecap_pwm(p);
-
- pm_runtime_get_sync(ep->dev);
-
- spin_lock_irqsave(&ep->lock, flags);
- writel((p->period_ticks) - 1, ep->mmio_base + CAPTURE_3_REG);
-- v = readw(ep->mmio_base + CAPTURE_CTRL2_REG);
-- v |= (ECTRL2_MDSL_ECAP | ECTRL2_SYNCOSEL_MASK);
-- writew(v, ep->mmio_base + CAPTURE_CTRL2_REG);
- spin_unlock_irqrestore(&ep->lock, flags);
-
- pm_runtime_put_sync(ep->dev);
-@@ -167,6 +164,12 @@ static int ecap_pwm_config_duty(struct pwm_device *p)
- }
- spin_unlock_irqrestore(&ep->lock, flags);
-
-+ if (!pwm_is_running(p)) {
-+ v = readw(ep->mmio_base + CAPTURE_CTRL2_REG);
-+ v &= ~ECTRL2_MDSL_ECAP;
-+ writew(v, ep->mmio_base + CAPTURE_CTRL2_REG);
-+ }
-+
- pm_runtime_put_sync(ep->dev);
- return 0;
- }
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/pwm/0006-pwm-ehrpwm-Configure-polarity-on-pwm_start.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/pwm/0006-pwm-ehrpwm-Configure-polarity-on-pwm_start.patch
deleted file mode 100644
index 3ebb6f7..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/pwm/0006-pwm-ehrpwm-Configure-polarity-on-pwm_start.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 76361b6715c04d513b9f6bb4ec79ef2297eafe78 Mon Sep 17 00:00:00 2001
-From: "Philip, Avinash" <avinashphilip at ti.com>
-Date: Tue, 14 Aug 2012 13:50:37 +0530
-Subject: [PATCH 6/6] pwm: ehrpwm: Configure polarity on pwm_start
-
-Polarity of PWM device should done only from start. This helps in
-disabling polarity change even PWM device is running.
-
-Signed-off-by: Philip, Avinash <avinashphilip at ti.com>
----
- drivers/pwm/ehrpwm.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/pwm/ehrpwm.c b/drivers/pwm/ehrpwm.c
-index 8bbed87..636b0d9 100644
---- a/drivers/pwm/ehrpwm.c
-+++ b/drivers/pwm/ehrpwm.c
-@@ -1284,8 +1284,8 @@ static int ehrpwm_pwm_config(struct pwm_device *p,
- break;
-
- case BIT(PWM_CONFIG_POLARITY):
-+ /* Polarity configuration done from pwm_start */
- p->active_high = c->polarity;
-- ret = ehrpwm_pwm_set_pol(p);
- break;
-
- case BIT(PWM_CONFIG_START):
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/usb/0001-usb-musb-cppi41-revisit-the-teardown-path-to-fix-iso.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/usb/0001-usb-musb-cppi41-revisit-the-teardown-path-to-fix-iso.patch
deleted file mode 100644
index dd2e19a..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/usb/0001-usb-musb-cppi41-revisit-the-teardown-path-to-fix-iso.patch
+++ /dev/null
@@ -1,103 +0,0 @@
-From c2746810dc7bcaaae2dec493c501eb7213d14858 Mon Sep 17 00:00:00 2001
-From: Ajay Kumar Gupta <ajay.gupta at ti.com>
-Date: Tue, 8 May 2012 12:05:47 +0530
-Subject: [PATCH 1/6] usb: musb: cppi41: revisit the teardown path to fix isoc
- issue
-
-Fixes the camera streaming issue when application is stopped and restarted multiple times.
-Changes:
- - Disable DMAReq of TX/RX endpoints before teardown
- - FIFO flush only when RxPktRdy is set
- - Clear ReqPkt if in host mode.
----
- drivers/usb/musb/cppi41_dma.c | 42 ++++++++++++++++++++++++----------------
- drivers/usb/musb/musb_host.c | 2 +-
- 2 files changed, 26 insertions(+), 18 deletions(-)
-
-diff --git a/drivers/usb/musb/cppi41_dma.c b/drivers/usb/musb/cppi41_dma.c
-index e4d3173..4761acd 100644
---- a/drivers/usb/musb/cppi41_dma.c
-+++ b/drivers/usb/musb/cppi41_dma.c
-@@ -1206,6 +1206,11 @@ static int cppi41_channel_abort(struct dma_channel *channel)
- if (cppi_ch->transmit) {
- dprintk("Tx channel teardown, cppi_ch = %p\n", cppi_ch);
-
-+ /* disable the DMAreq before teardown */
-+ csr = musb_readw(epio, MUSB_TXCSR);
-+ csr &= ~MUSB_TXCSR_DMAENAB;
-+ musb_writew(epio, MUSB_TXCSR, csr);
-+
- /* Tear down Tx DMA channel */
- usb_tx_ch_teardown(cppi_ch);
-
-@@ -1223,11 +1228,30 @@ static int cppi41_channel_abort(struct dma_channel *channel)
- } else { /* Rx */
- dprintk("Rx channel teardown, cppi_ch = %p\n", cppi_ch);
-
-+ /* disable the DMAreq and remove reqpkt */
-+ csr = musb_readw(epio, MUSB_RXCSR);
-+ dev_dbg(musb->controller,
-+ "before rx-teardown: rxcsr %x rxcount %x\n", csr,
-+ musb_readw(epio, MUSB_RXCOUNT));
-+
-+ /* For host, clear (just) ReqPkt at end of current packet(s) */
-+ if (is_host_active(cppi->musb))
-+ csr &= ~MUSB_RXCSR_H_REQPKT;
-+
-+ csr &= ~MUSB_RXCSR_DMAENAB;
-+ musb_writew(epio, MUSB_RXCSR, csr);
-+
-+
- /* Flush FIFO of the endpoint */
- csr = musb_readw(epio, MUSB_RXCSR);
-- csr |= MUSB_RXCSR_FLUSHFIFO | MUSB_RXCSR_H_WZC_BITS;
-+
-+ if (csr & MUSB_RXCSR_RXPKTRDY)
-+ csr |= MUSB_RXCSR_FLUSHFIFO;
-+
-+ csr |= MUSB_RXCSR_H_WZC_BITS;
- musb_writew(epio, MUSB_RXCSR, csr);
- musb_writew(epio, MUSB_RXCSR, csr);
-+ csr = musb_readw(epio, MUSB_RXCSR);
-
- /* Issue CPPI FIFO teardown for Rx channel */
- td_reg = musb_readl(reg_base, cppi->teardown_reg_offs);
-@@ -1246,22 +1270,6 @@ static int cppi41_channel_abort(struct dma_channel *channel)
-
- /* For host, ensure ReqPkt is never set again */
- cppi41_autoreq_update(cppi_ch, USB_NO_AUTOREQ);
--
-- /* For host, clear (just) ReqPkt at end of current packet(s) */
-- if (is_host_active(cppi->musb))
-- csr &= ~MUSB_RXCSR_H_REQPKT;
-- csr |= MUSB_RXCSR_H_WZC_BITS;
--
-- /* Clear DMA enable */
-- csr &= ~MUSB_RXCSR_DMAENAB;
-- musb_writew(epio, MUSB_RXCSR, csr);
--
-- /* Flush the FIFO of endpoint once again */
-- csr = musb_readw(epio, MUSB_RXCSR);
-- csr |= MUSB_RXCSR_FLUSHFIFO | MUSB_RXCSR_H_WZC_BITS;
-- musb_writew(epio, MUSB_RXCSR, csr);
--
-- udelay(50);
- }
-
- /*
-diff --git a/drivers/usb/musb/musb_host.c b/drivers/usb/musb/musb_host.c
-index d805d1b..2195633 100644
---- a/drivers/usb/musb/musb_host.c
-+++ b/drivers/usb/musb/musb_host.c
-@@ -2224,7 +2224,7 @@ static int musb_cleanup_urb(struct urb *urb, struct musb_qh *qh)
- }
-
- /* turn off DMA requests, discard state, stop polling ... */
-- if (is_in) {
-+ if (is_in && ep->epnum) {
- /* giveback saves bulk toggle */
- csr = musb_h_flush_rxfifo(ep, 0);
-
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/usb/0002-usb-musb-fix-bug-in-data-toggle-sw-workaround.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/usb/0002-usb-musb-fix-bug-in-data-toggle-sw-workaround.patch
deleted file mode 100644
index dab230c..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/usb/0002-usb-musb-fix-bug-in-data-toggle-sw-workaround.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From a9e9e758646ee41289c0030645bbdd43c711e9c1 Mon Sep 17 00:00:00 2001
-From: Ajay Kumar Gupta <ajay.gupta at ti.com>
-Date: Fri, 18 May 2012 14:51:15 +0530
-Subject: [PATCH 2/6] usb: musb: fix bug in data toggle sw workaround
-
-Data toggle software workaround for extra IN issue introduced a bug for PIO mode
-as data toggle is getting updated even for PIO mode which should not be done.
-
-Merge to:
-usb: musb: cppi41: correct data toggle mismatch to fix extra IN token issue
----
- drivers/usb/musb/musb_host.c | 3 ++-
- 1 files changed, 2 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/usb/musb/musb_host.c b/drivers/usb/musb/musb_host.c
-index 2195633..80d83bd 100644
---- a/drivers/usb/musb/musb_host.c
-+++ b/drivers/usb/musb/musb_host.c
-@@ -359,7 +359,8 @@ static inline void musb_save_toggle(struct musb_qh *qh, int is_in,
- curr_toggle = csr ? 1 : 0;
-
- /* check if data toggle has gone out of sync */
-- if (curr_toggle == qh->hw_ep->prev_toggle) {
-+ if (is_dma_capable() && qh->hw_ep->rx_channel &&
-+ curr_toggle == qh->hw_ep->prev_toggle) {
- dev_dbg(musb->controller,
- "Data toggle same as previous (=%d) on ep%d\n",
- curr_toggle, qh->hw_ep->epnum);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/usb/0003-usb-gadget-udc-core-stop-UDC-on-device-initiated-dis.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/usb/0003-usb-gadget-udc-core-stop-UDC-on-device-initiated-dis.patch
deleted file mode 100644
index 88a1fb9..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/usb/0003-usb-gadget-udc-core-stop-UDC-on-device-initiated-dis.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 2eac6057134bcb77edcdc462b810465850caec23 Mon Sep 17 00:00:00 2001
-From: Felipe Balbi <balbi at ti.com>
-Date: Thu, 15 Mar 2012 16:37:18 +0200
-Subject: [PATCH 3/6] usb: gadget: udc-core: stop UDC on device-initiated
- disconnect
-
-When we want to do device-initiated disconnect,
-let's make sure we stop the UDC in order to
-e.g. allow lower power states to be achieved by
-turning off unnecessary clocks and/or stoping
-PHYs.
-
-When reconnecting, call ->udc_start() again to
-make sure UDC is reinitialized.
-
-Cc: stable at vger.kernel.org
-Signed-off-by: Felipe Balbi <balbi at ti.com>
----
- drivers/usb/gadget/udc-core.c | 4 ++++
- 1 files changed, 4 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/usb/gadget/udc-core.c b/drivers/usb/gadget/udc-core.c
-index 0b0d12c..475c997 100644
---- a/drivers/usb/gadget/udc-core.c
-+++ b/drivers/usb/gadget/udc-core.c
-@@ -359,8 +359,12 @@ static ssize_t usb_udc_softconn_store(struct device *dev,
- struct usb_udc *udc = container_of(dev, struct usb_udc, dev);
-
- if (sysfs_streq(buf, "connect")) {
-+ if (udc_is_newstyle(udc))
-+ usb_gadget_udc_start(udc->gadget, udc->driver);
- usb_gadget_connect(udc->gadget);
- } else if (sysfs_streq(buf, "disconnect")) {
-+ if (udc_is_newstyle(udc))
-+ usb_gadget_udc_stop(udc->gadget, udc->driver);
- usb_gadget_disconnect(udc->gadget);
- } else {
- dev_err(dev, "unsupported command '%s'\n", buf);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/usb/0004-usb-gadget-udc-core-fix-asymmetric-calls-in-remove_d.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/usb/0004-usb-gadget-udc-core-fix-asymmetric-calls-in-remove_d.patch
deleted file mode 100644
index eae1c70..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/usb/0004-usb-gadget-udc-core-fix-asymmetric-calls-in-remove_d.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From fefa8fade565b137ae3d01801196840b6ccfc98f Mon Sep 17 00:00:00 2001
-From: Kishon Vijay Abraham I <kishon at ti.com>
-Date: Wed, 21 Mar 2012 21:34:30 +0530
-Subject: [PATCH 4/6] usb: gadget: udc-core: fix asymmetric calls in
- remove_driver
-
-During modprobe of gadget driver, pullup is called after
-udc_start. In order to make the exit path symmetric when
-removing a gadget driver, call pullup before ->udc_stop.
-
-This is needed to avoid issues with PM where udc_stop
-disables the module completely (put IP in reset state,
-cut functional and interface clocks, and so on), which
-prevents us from accessing the IP's address space,
-thus creating the possibility of an abort exception
-when we try to access IP's address space after clocks
-are off.
-
-Cc: stable at vger.kernel.org
-Signed-off-by: Partha Basak <p-basak2 at ti.com>
-Signed-off-by: Kishon Vijay Abraham I <kishon at ti.com>
-Signed-off-by: Felipe Balbi <balbi at ti.com>
----
- drivers/usb/gadget/udc-core.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/usb/gadget/udc-core.c b/drivers/usb/gadget/udc-core.c
-index 475c997..ec02ed0 100644
---- a/drivers/usb/gadget/udc-core.c
-+++ b/drivers/usb/gadget/udc-core.c
-@@ -212,8 +212,8 @@ static void usb_gadget_remove_driver(struct usb_udc *udc)
- if (udc_is_newstyle(udc)) {
- udc->driver->disconnect(udc->gadget);
- udc->driver->unbind(udc->gadget);
-- usb_gadget_udc_stop(udc->gadget, udc->driver);
- usb_gadget_disconnect(udc->gadget);
-+ usb_gadget_udc_stop(udc->gadget, udc->driver);
- } else {
- usb_gadget_stop(udc->gadget, udc->driver);
- }
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/usb/0005-usb-gadget-udc-core-fix-wrong-call-order.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/usb/0005-usb-gadget-udc-core-fix-wrong-call-order.patch
deleted file mode 100644
index ae705cf..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/usb/0005-usb-gadget-udc-core-fix-wrong-call-order.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 7a0dcaac06bfffd4df4bf7a006c601b31acc7cb7 Mon Sep 17 00:00:00 2001
-From: Felipe Balbi <balbi at ti.com>
-Date: Fri, 27 Apr 2012 11:02:15 +0300
-Subject: [PATCH 5/6] usb: gadget: udc-core: fix wrong call order
-
-commit 6d258a4 (usb: gadget: udc-core: stop UDC on device-initiated
-disconnect) introduced another case of asymmetric calls when issuing
-a device-initiated disconnect. Fix it.
-
-Reported-by: Ben Hutchings <ben at decadent.org.uk>
-Signed-off-by: Felipe Balbi <balbi at ti.com>
----
- drivers/usb/gadget/udc-core.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/usb/gadget/udc-core.c b/drivers/usb/gadget/udc-core.c
-index ec02ed0..3ea783d 100644
---- a/drivers/usb/gadget/udc-core.c
-+++ b/drivers/usb/gadget/udc-core.c
-@@ -363,9 +363,9 @@ static ssize_t usb_udc_softconn_store(struct device *dev,
- usb_gadget_udc_start(udc->gadget, udc->driver);
- usb_gadget_connect(udc->gadget);
- } else if (sysfs_streq(buf, "disconnect")) {
-+ usb_gadget_disconnect(udc->gadget);
- if (udc_is_newstyle(udc))
- usb_gadget_udc_stop(udc->gadget, udc->driver);
-- usb_gadget_disconnect(udc->gadget);
- } else {
- dev_err(dev, "unsupported command '%s'\n", buf);
- return -EINVAL;
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/usb/0006-usb-gadget-udc-core-fix-incompatibility-with-dummy-h.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/usb/0006-usb-gadget-udc-core-fix-incompatibility-with-dummy-h.patch
deleted file mode 100644
index 70f9398..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/usb/0006-usb-gadget-udc-core-fix-incompatibility-with-dummy-h.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 91cdc6fbc271e01e231dcf0e9403448aa19433fb Mon Sep 17 00:00:00 2001
-From: Alan Stern <stern at rowland.harvard.edu>
-Date: Thu, 26 Apr 2012 11:31:57 -0400
-Subject: [PATCH 6/6] usb: gadget: udc-core: fix incompatibility with
- dummy-hcd
-
-This patch (as1548) fixes a recently-introduced incompatibility
-between the UDC core and the dummy-hcd driver. Commit
-8ae8090c82eb407267001f75b3d256b3bd4ae691 (usb: gadget: udc-core: fix
-asymmetric calls in remove_driver) moved the usb_gadget_udc_stop()
-call in usb_gadget_remove_driver() below the usb_gadget_disconnect()
-call.
-
-As a result, usb_gadget_disconnect() gets called at a time when the
-gadget driver believes it has been unbound but dummy-hcd believes
-it has not. A nasty error ensues when dummy-hcd calls the gadget
-driver's disconnect method a second time.
-
-To fix the problem, this patch moves the gadget driver's unbind
-notification after the usb_gadget_disconnect() call. Now nothing
-happens between the two unbind notifications, so nothing goes wrong.
-
-Signed-off-by: Alan Stern <stern at rowland.harvard.edu>
-Tested-by: Alexander Shishkin <alexander.shishkin at linux.intel.com>
-Signed-off-by: Felipe Balbi <balbi at ti.com>
----
- drivers/usb/gadget/udc-core.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/usb/gadget/udc-core.c b/drivers/usb/gadget/udc-core.c
-index 3ea783d..4e2e13e 100644
---- a/drivers/usb/gadget/udc-core.c
-+++ b/drivers/usb/gadget/udc-core.c
-@@ -211,8 +211,8 @@ static void usb_gadget_remove_driver(struct usb_udc *udc)
-
- if (udc_is_newstyle(udc)) {
- udc->driver->disconnect(udc->gadget);
-- udc->driver->unbind(udc->gadget);
- usb_gadget_disconnect(udc->gadget);
-+ udc->driver->unbind(udc->gadget);
- usb_gadget_udc_stop(udc->gadget, udc->driver);
- } else {
- usb_gadget_stop(udc->gadget, udc->driver);
---
-1.7.7.6
-
diff --git a/recipes-kernel/linux/linux-ti33x-psp_3.2.bb b/recipes-kernel/linux/linux-ti33x-psp_3.2.bb
deleted file mode 100644
index 1602e3f..0000000
--- a/recipes-kernel/linux/linux-ti33x-psp_3.2.bb
+++ /dev/null
@@ -1,1949 +0,0 @@
-SECTION = "kernel"
-DESCRIPTION = "Linux kernel for TI33x EVM from PSP, based on am335x-kernel"
-LICENSE = "GPLv2"
-KERNEL_IMAGETYPE = "uImage"
-
-require multi-kernel.inc
-require tipspkernel.inc
-
-S = "${WORKDIR}/git"
-
-MULTI_CONFIG_BASE_SUFFIX = ""
-
-# the PATCHES_OVER_PSP updates it to 3.2.x, so adjust PV to match
-PV = "${@base_contains('DISTRO_FEATURES', 'tipspkernel', "3.2", "3.2.28", d)}"
-
-BRANCH = "v3.2-staging"
-SRCREV = "720e07b4c1f687b61b147b31c698cb6816d72f01"
-
-MACHINE_KERNEL_PR_append = "b+gitr${SRCREV}"
-PR = "${MACHINE_KERNEL_PR}"
-
-COMPATIBLE_MACHINE = "(ti33x)"
-
-SRC_URI += "git://arago-project.org/git/projects/linux-am33x.git;protocol=http;branch=${BRANCH} \
- file://am335x-pm-firmware.bin \
- file://defconfig"
-
-SRC_URI_append_beaglebone = " file://logo_linux_clut224.ppm"
-
-KERNEL_LDSUFFIX_beaglebone = "${@base_contains('DISTRO_FEATURES', 'ld-is-gold', '.bfd', '', d)}"
-
-do_compile_prepend() {
- cp ${WORKDIR}/am335x-pm-firmware.bin ${S}/firmware/
-}
-
-PATCHES_OVER_PSP = " \
- file://usb/0001-usb-musb-cppi41-revisit-the-teardown-path-to-fix-iso.patch \
- file://usb/0002-usb-musb-fix-bug-in-data-toggle-sw-workaround.patch \
- file://usb/0003-usb-gadget-udc-core-stop-UDC-on-device-initiated-dis.patch \
- file://usb/0004-usb-gadget-udc-core-fix-asymmetric-calls-in-remove_d.patch \
- file://usb/0005-usb-gadget-udc-core-fix-wrong-call-order.patch \
- file://usb/0006-usb-gadget-udc-core-fix-incompatibility-with-dummy-h.patch \
- file://psp/0001-ARM-OMAP-AM33XX-Add-missing-EMIF-register-offsets.patch \
- file://psp/0002-ARM-OMAP-AM33XX-PM-Get-rid-of-hardcoded-resume-addre.patch \
- file://psp/0003-ARM-OMAP-AM33XX-PM-Skip-DDR-PHY-reconfiguration-in-r.patch \
- file://psp/0004-ARM-OMAP-AM33XX-PM-Save-and-restore-EMIF-registers.patch \
- file://psp/0005-ARM-OMAP-AM33XX-PM-Wait-correctly-for-the-PLLs-to-re.patch \
- file://psp/0006-ARM-OMAP-AM33XX-PM-Restore-the-PLLs-to-pre-suspend-s.patch \
- file://psp/0007-ARM-OMAP-PM-AM33XX-Update-the-sleep-code-to-handle-D.patch \
- file://psp/0008-usb-musb-update-babble-workaround-fix.patch \
- file://psp/0009-usb-musb-ti81xx-print-the-usbss-revision-id-during-i.patch \
- file://psp/0010-usb-musb-cppi41-enable-txfifo-empty-interrupt-logic.patch \
- file://psp/0011-usb-musb-host-Flush-txfifo-only-if-TxPktRdy-bit-set.patch \
- file://psp/0012-usb-musb-cppi41-use-dsb-to-make-sure-PDs-are-updated.patch \
- file://psp/0013-usb-musb-cppi41-fix-zero-byte-OUT-issue.patch \
- file://psp/0014-usb-musb-host-fix-for-urb-error-handling.patch \
- file://psp/0015-usb-musb-cppi41-txdma-flushfifo-fixes-during-channel.patch \
- file://psp/0016-usb-musb-cppi41-tx-dma-completion-fixes.patch \
- file://psp/0017-usb-musb-host-Flush-RxFIFO-only-when-RxPktRdy-is-set.patch \
- file://psp/0018-usb-musb-ti81xx-fix-role-switching-issue.patch \
- file://psp/0019-MMC-OMAP-HS-Enable-HSPE-bit-for-high-speed-cards.patch \
- file://3.2.1/0001-MAINTAINERS-stable-Update-address.patch \
- file://3.2.1/0002-Documentation-Update-stable-address.patch \
- file://3.2.1/0003-firmware-Fix-an-oops-on-reading-fw_priv-fw-in-sysfs-.patch \
- file://3.2.1/0004-rt2800usb-Move-ID-out-of-unknown.patch \
- file://3.2.1/0005-offb-Fix-setting-of-the-pseudo-palette-for-8bpp.patch \
- file://3.2.1/0006-offb-Fix-bug-in-calculating-requested-vram-size.patch \
- file://3.2.1/0007-libertas-clean-up-scan-thread-handling.patch \
- file://3.2.1/0008-bcma-support-for-suspend-and-resume.patch \
- file://3.2.1/0009-wl12xx-Validate-FEM-index-from-ini-file-and-FW.patch \
- file://3.2.1/0010-wl12xx-Check-buffer-bound-when-processing-nvs-data.patch \
- file://3.2.1/0011-wl12xx-Restore-testmode-ABI.patch \
- file://3.2.1/0012-powerpc-time-Handle-wrapping-of-decrementer.patch \
- file://3.2.1/0013-powerpc-Fix-unpaired-probe_hcall_entry-and-probe_hca.patch \
- file://3.2.1/0014-IB-qib-Fix-a-possible-data-corruption-when-receiving.patch \
- file://3.2.1/0015-IB-uverbs-Protect-QP-multicast-list.patch \
- file://3.2.1/0016-iwlagn-fix-TID-use-bug.patch \
- file://3.2.1/0017-iwlagn-fix-remove-use-of-PAGE_SIZE.patch \
- file://3.2.1/0018-perf-Fix-parsing-of-__print_flags-in-TP_printk.patch \
- file://3.2.1/0019-ore-Fix-crash-in-case-of-an-IO-error.patch \
- file://3.2.1/0020-ore-fix-BUG_ON-too-few-sgs-when-reading.patch \
- file://3.2.1/0021-ore-Must-support-none-PAGE-aligned-IO.patch \
- file://3.2.1/0022-ore-FIX-breakage-when-MISC_FILESYSTEMS-is-not-set.patch \
- file://3.2.1/0023-reiserfs-Fix-quota-mount-option-parsing.patch \
- file://3.2.1/0024-reiserfs-Force-inode-evictions-before-umount-to-avoi.patch \
- file://3.2.1/0025-ext3-Don-t-warn-from-writepage-when-readonly-inode-i.patch \
- file://3.2.1/0026-drivers-hv-Don-t-OOPS-when-you-cannot-init-vmbus.patch \
- file://3.2.1/0027-Drivers-hv-Fix-a-bug-in-vmbus_driver_unregister.patch \
- file://3.2.1/0028-USB-update-documentation-for-usbmon.patch \
- file://3.2.1/0029-usbfs-Fix-oops-related-to-user-namespace-conversion.patch \
- file://3.2.1/0030-atmel_serial-fix-spinlock-lockup-in-RS485-code.patch \
- file://3.2.1/0031-cgroup-fix-to-allow-mounting-a-hierarchy-by-name.patch \
- file://3.2.1/0032-udf-Fix-deadlock-when-converting-file-from-in-ICB-on.patch \
- file://3.2.1/0033-drivers-usb-class-cdc-acm.c-clear-dangling-pointer.patch \
- file://3.2.1/0034-USB-isight-fix-kernel-bug-when-loading-firmware.patch \
- file://3.2.1/0035-usb-usb-storage-doesn-t-support-dynamic-id-currently.patch \
- file://3.2.1/0036-USB-pxa168-Fix-compilation-error.patch \
- file://3.2.1/0037-USB-add-quirk-for-another-camera.patch \
- file://3.2.1/0038-USB-omninet-fix-write_room.patch \
- file://3.2.1/0039-usb-option-add-ZD-Incorporated-HSPA-modem.patch \
- file://3.2.1/0040-USB-Add-USB-ID-for-Multiplex-RC-serial-adapter-to-cp.patch \
- file://3.2.1/0041-usb-fix-number-of-mapped-SG-DMA-entries.patch \
- file://3.2.1/0042-xhci-Properly-handle-COMP_2ND_BW_ERR.patch \
- file://3.2.1/0043-usb-ch9-fix-up-MaxStreams-helper.patch \
- file://3.2.1/0044-igmp-Avoid-zero-delay-when-receiving-odd-mixture-of-.patch \
- file://3.2.1/0045-asix-fix-infinite-loop-in-rx_fixup.patch \
- file://3.2.1/0046-bonding-fix-error-handling-if-slave-is-busy-v2.patch \
- file://3.2.1/0047-usb-cdc-acm-Fix-acm_tty_hangup-vs.-acm_tty_close-rac.patch \
- file://3.2.1/0048-xfs-fix-acl-count-validation-in-xfs_acl_from_disk.patch \
- file://3.2.1/0049-Linux-3.2.1.patch \
- file://3.2.2/0001-mtdoops-fix-the-oops_page_used-array-size.patch \
- file://3.2.2/0002-mtd-mtdoops-skip-reading-initially-bad-blocks.patch \
- file://3.2.2/0003-mtd-mtd_blkdevs-don-t-increase-open-count-on-error-p.patch \
- file://3.2.2/0004-mtd-tests-stresstest-bail-out-if-device-has-not-enou.patch \
- file://3.2.2/0005-drivers-rtc-interface.c-fix-alarm-rollover-when-day-.patch \
- file://3.2.2/0006-ext4-add-missing-ext4_resize_end-on-error-paths.patch \
- file://3.2.2/0007-ext4-fix-undefined-behavior-in-ext4_fill_flex_info.patch \
- file://3.2.2/0008-ALSA-snd-usb-us122l-Delete-calls-to-preempt_disable.patch \
- file://3.2.2/0009-ALSA-HDA-Fix-master-control-for-Cirrus-Logic-421X.patch \
- file://3.2.2/0010-ALSA-HDA-Fix-automute-for-Cirrus-Logic-421x.patch \
- file://3.2.2/0011-ALSA-ice1724-Check-for-ac97-to-avoid-kernel-oops.patch \
- file://3.2.2/0012-ALSA-usb-audio-Avoid-flood-of-frame-active-debug-mes.patch \
- file://3.2.2/0013-ALSA-hda-Use-auto-parser-for-HP-laptops-with-cx20459.patch \
- file://3.2.2/0014-ALSA-hda-Return-the-error-from-get_wcaps_type-for-in.patch \
- file://3.2.2/0015-ALSA-hda-Fix-the-detection-of-Loopback-Mixing-contro.patch \
- file://3.2.2/0016-ALSA-hda-Fix-the-lost-power-setup-of-seconary-pins-a.patch \
- file://3.2.2/0017-drm-radeon-kms-workaround-invalid-AVI-infoframe-chec.patch \
- file://3.2.2/0018-drm-radeon-kms-disable-writeback-on-pre-R300-asics.patch \
- file://3.2.2/0019-radeon-Fix-disabling-PCI-bus-mastering-on-big-endian.patch \
- file://3.2.2/0020-pnfs-obj-pNFS-errors-are-communicated-on-iodata-pnfs.patch \
- file://3.2.2/0021-pnfs-obj-Must-return-layout-on-IO-error.patch \
- file://3.2.2/0022-NFS-Retry-mounting-NFSROOT.patch \
- file://3.2.2/0023-NFSv4.1-fix-backchannel-slotid-off-by-one-bug.patch \
- file://3.2.2/0024-NFS-fix-recent-breakage-to-NFS-error-handling.patch \
- file://3.2.2/0025-NFSv4-include-bitmap-in-nfsv4-get-acl-data.patch \
- file://3.2.2/0026-nfs-fix-regression-in-handling-of-context-option-in-.patch \
- file://3.2.2/0027-HID-bump-maximum-global-item-tag-report-size-to-96-b.patch \
- file://3.2.2/0028-HID-wiimote-Select-INPUT_FF_MEMLESS.patch \
- file://3.2.2/0029-UBI-fix-missing-scrub-when-there-is-a-bit-flip.patch \
- file://3.2.2/0030-UBI-fix-use-after-free-on-error-path.patch \
- file://3.2.2/0031-PCI-Fix-PCI_EXP_TYPE_RC_EC-value.patch \
- file://3.2.2/0032-PCI-msi-Disable-msi-interrupts-when-we-initialize-a-.patch \
- file://3.2.2/0033-x86-PCI-Ignore-CPU-non-addressable-_CRS-reserved-mem.patch \
- file://3.2.2/0034-x86-PCI-amd-factor-out-MMCONFIG-discovery.patch \
- file://3.2.2/0035-x86-PCI-build-amd_bus.o-only-when-CONFIG_AMD_NB-y.patch \
- file://3.2.2/0036-SCSI-mpt2sas-Release-spinlock-for-the-raid-device-li.patch \
- file://3.2.2/0037-SCSI-mpt2sas-Fix-for-memory-allocation-error-for-lar.patch \
- file://3.2.2/0038-xen-xenbus-Reject-replies-with-payload-XENSTORE_PAYL.patch \
- file://3.2.2/0039-md-raid1-perform-bad-block-tests-for-WriteMostly-dev.patch \
- file://3.2.2/0040-ima-free-duplicate-measurement-memory.patch \
- file://3.2.2/0041-ima-fix-invalid-memory-reference.patch \
- file://3.2.2/0042-slub-fix-a-possible-memleak-in-__slab_alloc.patch \
- file://3.2.2/0043-PNP-work-around-Dell-1536-1546-BIOS-MMCONFIG-bug-tha.patch \
- file://3.2.2/0044-asix-fix-setting-custom-MAC-address-on-Asix-88178-de.patch \
- file://3.2.2/0045-asix-fix-setting-custom-MAC-address-on-Asix-88772-de.patch \
- file://3.2.2/0046-include-linux-crash_dump.h-needs-elf.h.patch \
- file://3.2.2/0047-rtl8192se-Fix-BUG-caused-by-failure-to-check-skb-all.patch \
- file://3.2.2/0048-mac80211-fix-rx-key-NULL-pointer-dereference-in-prom.patch \
- file://3.2.2/0049-ath9k-Fix-regression-in-channelwidth-switch-at-the-s.patch \
- file://3.2.2/0050-memcg-add-mem_cgroup_replace_page_cache-to-fix-LRU-i.patch \
- file://3.2.2/0051-x86-Fix-mmap-random-address-range.patch \
- file://3.2.2/0052-UBI-fix-nameless-volumes-handling.patch \
- file://3.2.2/0053-UBI-fix-debugging-messages.patch \
- file://3.2.2/0054-UBI-make-vid_hdr-non-static.patch \
- file://3.2.2/0055-UBIFS-fix-debugging-messages.patch \
- file://3.2.2/0056-UBIFS-make-debugging-messages-light-again.patch \
- file://3.2.2/0057-i2c-Fix-error-value-returned-by-several-bus-drivers.patch \
- file://3.2.2/0058-mmc-core-Fix-voltage-select-in-DDR-mode.patch \
- file://3.2.2/0059-mmc-sdhci-Fix-tuning-timer-incorrect-setting-when-su.patch \
- file://3.2.2/0060-mmc-sd-Fix-SDR12-timing-regression.patch \
- file://3.2.2/0061-V4L-DVB-v4l2-ioctl-integer-overflow-in-video_usercop.patch \
- file://3.2.2/0062-Unused-iocbs-in-a-batch-should-not-be-accounted-as-a.patch \
- file://3.2.2/0063-ftrace-Fix-unregister-ftrace_ops-accounting.patch \
- file://3.2.2/0064-kconfig-streamline-config.pl-Simplify-backslash-line.patch \
- file://3.2.2/0065-kconfig-streamline-config.pl-Fix-parsing-Makefile-wi.patch \
- file://3.2.2/0066-svcrpc-fix-double-free-on-shutdown-of-nfsd-after-cha.patch \
- file://3.2.2/0067-svcrpc-destroy-server-sockets-all-at-once.patch \
- file://3.2.2/0068-svcrpc-avoid-memory-corruption-on-pool-shutdown.patch \
- file://3.2.2/0069-nfsd4-fix-lockowner-matching.patch \
- file://3.2.2/0070-nfsd-Fix-oops-when-parsing-a-0-length-export.patch \
- file://3.2.2/0071-fsnotify-don-t-BUG-in-fsnotify_destroy_mark.patch \
- file://3.2.2/0072-x86-UV-Update-Boot-messages-for-SGI-UV2-platform.patch \
- file://3.2.2/0073-recordmcount-Fix-handling-of-elf64-big-endian-object.patch \
- file://3.2.2/0074-uvcvideo-Fix-integer-overflow-in-uvc_ioctl_ctrl_map.patch \
- file://3.2.2/0075-dcache-use-a-dispose-list-in-select_parent.patch \
- file://3.2.2/0076-fix-shrink_dcache_parent-livelock.patch \
- file://3.2.2/0077-pnfsblock-acquire-im_lock-in-_preload_range.patch \
- file://3.2.2/0078-pnfsblock-don-t-spinlock-when-freeing-block_dev.patch \
- file://3.2.2/0079-pnfsblock-limit-bio-page-count.patch \
- file://3.2.2/0080-mac80211-revert-on-channel-work-optimisations.patch \
- file://3.2.2/0081-HID-hid-multitouch-add-another-eGalax-id.patch \
- file://3.2.2/0082-HID-multitouch-cleanup-with-eGalax-PID-definitions.patch \
- file://3.2.2/0083-HID-multitouch-Add-egalax-ID-for-Acer-Iconia-W500.patch \
- file://3.2.2/0084-HID-multitouch-add-support-for-the-MSI-Windpad-110W.patch \
- file://3.2.2/0085-HID-hid-multitouch-add-support-for-new-Hanvon-panels.patch \
- file://3.2.2/0086-HID-multitouch-add-support-of-Atmel-multitouch-panel.patch \
- file://3.2.2/0087-HID-multitouch-add-support-for-3M-32.patch \
- file://3.2.2/0088-HID-hid-multitouch-add-support-9-new-Xiroku-devices.patch \
- file://3.2.2/0089-fix-cputime-overflow-in-uptime_proc_show.patch \
- file://3.2.2/0090-block-add-and-use-scsi_blk_cmd_ioctl.patch \
- file://3.2.2/0091-block-fail-SCSI-passthrough-ioctls-on-partition-devi.patch \
- file://3.2.2/0092-dm-do-not-forward-ioctls-from-logical-volumes-to-the.patch \
- file://3.2.2/0093-proc-clean-up-and-fix-proc-pid-mem-handling.patch \
- file://3.2.2/0094-ALSA-HDA-Use-LPIB-position-fix-for-Macbook-Pro-7-1.patch \
- file://3.2.2/0095-ALSA-virtuoso-Xonar-DS-fix-polarity-of-front-output.patch \
- file://3.2.2/0096-ALSA-HDA-Fix-internal-microphone-on-Dell-Studio-16-X.patch \
- file://3.2.2/0097-TOMOYO-Accept-000-as-a-valid-character.patch \
- file://3.2.2/0098-intel-idle-Make-idle-driver-more-robust.patch \
- file://3.2.2/0099-intel_idle-fix-API-misuse.patch \
- file://3.2.2/0100-ACPI-Store-SRAT-table-revision.patch \
- file://3.2.2/0101-ACPI-x86-Use-SRAT-table-rev-to-use-8bit-or-32bit-PXM.patch \
- file://3.2.2/0102-ACPI-ia64-Use-SRAT-table-rev-to-use-8bit-or-16-32bit.patch \
- file://3.2.2/0103-ACPICA-Put-back-the-call-to-acpi_os_validate_address.patch \
- file://3.2.2/0104-ACPI-processor-fix-acpi_get_cpuid-for-UP-processor.patch \
- file://3.2.2/0105-sym53c8xx-Fix-NULL-pointer-dereference-in-slave_dest.patch \
- file://3.2.2/0106-target-Set-response-format-in-INQUIRY-response.patch \
- file://3.2.2/0107-target-Set-additional-sense-length-field-in-sense-da.patch \
- file://3.2.2/0108-bcma-invalidate-the-mapped-core-over-suspend-resume.patch \
- file://3.2.2/0109-cx23885-dvb-check-if-dvb_attach-succeded.patch \
- file://3.2.2/0110-cx88-fix-don-t-duplicate-xc4000-entry-for-radio.patch \
- file://3.2.2/0111-tuner-Fix-numberspace-conflict-between-xc4000-and-pt.patch \
- file://3.2.2/0112-tracepoints-module-Fix-disabling-tracepoints-with-ta.patch \
- file://3.2.2/0113-x86-UV2-Fix-new-UV2-hardware-by-using-native-UV2-bro.patch \
- file://3.2.2/0114-x86-UV2-Fix-BAU-destination-timeout-initialization.patch \
- file://3.2.2/0115-x86-UV2-Work-around-BAU-bug.patch \
- file://3.2.2/0116-ath9k_hw-fix-interpretation-of-the-rx-KeyMiss-flag.patch \
- file://3.2.2/0117-rt2800pci-fix-spurious-interrupts-generation.patch \
- file://3.2.2/0118-xfs-fix-endian-conversion-issue-in-discard-code.patch \
- file://3.2.2/0119-i2c-eg20t-modified-the-setting-of-transfer-rate.patch \
- file://3.2.2/0120-score-fix-off-by-one-index-into-syscall-table.patch \
- file://3.2.2/0121-cifs-lower-default-wsize-when-unix-extensions-are-no.patch \
- file://3.2.2/0122-kprobes-initialize-before-using-a-hlist.patch \
- file://3.2.2/0123-proc-clear_refs-do-not-clear-reserved-pages.patch \
- file://3.2.2/0124-mm-fix-NULL-ptr-dereference-in-__count_immobile_page.patch \
- file://3.2.2/0125-iwlagn-check-for-SMPS-mode.patch \
- file://3.2.2/0126-iwlegacy-3945-fix-hw-passive-scan-on-radar-channels.patch \
- file://3.2.2/0127-SHM_UNLOCK-fix-long-unpreemptible-section.patch \
- file://3.2.2/0128-SHM_UNLOCK-fix-Unevictable-pages-stranded-after-swap.patch \
- file://3.2.2/0129-Linux-3.2.2.patch \
- file://3.2.3/0001-ALSA-hda-Fix-buffer-alignment-regression-with-Nvidia.patch \
- file://3.2.3/0002-ALSA-hda-Fix-silent-outputs-from-docking-station-jac.patch \
- file://3.2.3/0003-eCryptfs-Sanitize-write-counts-of-dev-ecryptfs.patch \
- file://3.2.3/0004-ecryptfs-Improve-metadata-read-failure-logging.patch \
- file://3.2.3/0005-eCryptfs-Make-truncate-path-killable.patch \
- file://3.2.3/0006-eCryptfs-Check-inode-changes-in-setattr.patch \
- file://3.2.3/0007-eCryptfs-Fix-oops-when-printing-debug-info-in-extent.patch \
- file://3.2.3/0008-drm-radeon-kms-Add-an-MSI-quirk-for-Dell-RS690.patch \
- file://3.2.3/0009-drm-radeon-kms-move-panel-mode-setup-into-encoder-mo.patch \
- file://3.2.3/0010-drm-radeon-kms-rework-modeset-sequence-for-DCE41-and.patch \
- file://3.2.3/0011-drm-Fix-authentication-kernel-crash.patch \
- file://3.2.3/0012-xfs-Fix-missing-xfs_iunlock-on-error-recovery-path-i.patch \
- file://3.2.3/0013-ASoC-Mark-WM5100-register-map-cache-only-when-going-.patch \
- file://3.2.3/0014-ASoC-Disable-register-synchronisation-for-low-freque.patch \
- file://3.2.3/0015-ASoC-Don-t-go-through-cache-when-applying-WM5100-rev.patch \
- file://3.2.3/0016-ASoC-wm8996-Call-_POST_PMU-callback-for-CPVDD.patch \
- file://3.2.3/0017-brcmsmac-fix-tx-queue-flush-infinite-loop.patch \
- file://3.2.3/0018-mac80211-fix-work-removal-on-deauth-request.patch \
- file://3.2.3/0019-jbd-Issue-cache-flush-after-checkpointing.patch \
- file://3.2.3/0020-crypto-sha512-make-it-work-undo-percpu-message-sched.patch \
- file://3.2.3/0021-crypto-sha512-reduce-stack-usage-to-safe-number.patch \
- file://3.2.3/0022-tpm_tis-add-delay-after-aborting-command.patch \
- file://3.2.3/0023-x86-uv-Fix-uninitialized-spinlocks.patch \
- file://3.2.3/0024-x86-uv-Fix-uv_gpa_to_soc_phys_ram-shift.patch \
- file://3.2.3/0025-x86-microcode_amd-Add-support-for-CPU-family-specifi.patch \
- file://3.2.3/0026-m68k-Fix-assembler-constraint-to-prevent-overeager-g.patch \
- file://3.2.3/0027-ALSA-hda-set-mute-led-polarity-for-laptops-with-bugg.patch \
- file://3.2.3/0028-ALSA-hda-Fix-silent-output-on-ASUS-A6Rp.patch \
- file://3.2.3/0029-ALSA-hda-Fix-silent-output-on-Haier-W18-laptop.patch \
- file://3.2.3/0030-drm-i915-paper-over-missed-irq-issues-with-force-wak.patch \
- file://3.2.3/0031-drm-i915-sdvo-always-set-positive-sync-polarity.patch \
- file://3.2.3/0032-drm-i915-Re-enable-gen7-RC6-and-GPU-turbo-after-resu.patch \
- file://3.2.3/0033-ARM-at91-fix-at91rm9200-soc-subtype-handling.patch \
- file://3.2.3/0034-mach-ux500-enable-ARM-errata-764369.patch \
- file://3.2.3/0035-ARM-7296-1-proc-v7.S-remove-HARVARD_CACHE-preprocess.patch \
- file://3.2.3/0036-sysfs-Complain-bitterly-about-attempts-to-remove-fil.patch \
- file://3.2.3/0037-x86-xen-size-struct-xen_spinlock-to-always-fit-in-ar.patch \
- file://3.2.3/0038-mpt2sas-Removed-redundant-calling-of-_scsih_probe_de.patch \
- file://3.2.3/0039-USB-option-Add-LG-docomo-L-02C.patch \
- file://3.2.3/0040-USB-ftdi_sio-fix-TIOCSSERIAL-baud_base-handling.patch \
- file://3.2.3/0041-USB-ftdi_sio-fix-initial-baud-rate.patch \
- file://3.2.3/0042-USB-ftdi_sio-add-PID-for-TI-XDS100v2-BeagleBone-A3.patch \
- file://3.2.3/0043-USB-serial-ftdi-additional-IDs.patch \
- file://3.2.3/0044-USB-ftdi_sio-Add-more-identifiers.patch \
- file://3.2.3/0045-USB-cdc-wdm-updating-desc-length-must-be-protected-b.patch \
- file://3.2.3/0046-USB-cdc-wdm-use-two-mutexes-to-allow-simultaneous-re.patch \
- file://3.2.3/0047-qcaux-add-more-Pantech-UML190-and-UML290-ports.patch \
- file://3.2.3/0048-usb-dwc3-ep0-tidy-up-Pending-Request-handling.patch \
- file://3.2.3/0049-usb-io_ti-Make-edge_remove_sysfs_attrs-the-port_remo.patch \
- file://3.2.3/0050-TTY-fix-UV-serial-console-regression.patch \
- file://3.2.3/0051-serial-amba-pl011-lock-console-writes-against-interr.patch \
- file://3.2.3/0052-jsm-Fixed-EEH-recovery-error.patch \
- file://3.2.3/0053-iwlwifi-fix-PCI-E-transport-inta-race.patch \
- file://3.2.3/0054-vmwgfx-Fix-assignment-in-vmw_framebuffer_create_hand.patch \
- file://3.2.3/0055-USB-Realtek-cr-fix-autopm-scheduling-while-atomic.patch \
- file://3.2.3/0056-USB-usbsevseg-fix-max-length.patch \
- file://3.2.3/0057-usb-gadget-langwell-don-t-call-gadget-s-disconnect.patch \
- file://3.2.3/0058-usb-gadget-storage-endian-fix.patch \
- file://3.2.3/0059-drivers-usb-host-ehci-fsl.c-add-missing-iounmap.patch \
- file://3.2.3/0060-xhci-Fix-USB-3.0-device-restart-on-resume.patch \
- file://3.2.3/0061-xHCI-Cleanup-isoc-transfer-ring-when-TD-length-misma.patch \
- file://3.2.3/0062-usb-musb-davinci-fix-build-breakage.patch \
- file://3.2.3/0063-hwmon-f71805f-Fix-clamping-of-temperature-limits.patch \
- file://3.2.3/0064-hwmon-w83627ehf-Disable-setting-DC-mode-for-pwm2-pwm.patch \
- file://3.2.3/0065-hwmon-sht15-fix-bad-error-code.patch \
- file://3.2.3/0066-USB-cdc-wdm-call-wake_up_all-to-allow-driver-to-shut.patch \
- file://3.2.3/0067-USB-cdc-wdm-better-allocate-a-buffer-that-is-at-leas.patch \
- file://3.2.3/0068-USB-cdc-wdm-Avoid-hanging-on-interface-with-no-USB_C.patch \
- file://3.2.3/0069-netns-fix-net_alloc_generic.patch \
- file://3.2.3/0070-netns-Fail-conspicously-if-someone-uses-net_generic-.patch \
- file://3.2.3/0071-net-caif-Register-properly-as-a-pernet-subsystem.patch \
- file://3.2.3/0072-af_unix-fix-EPOLLET-regression-for-stream-sockets.patch \
- file://3.2.3/0073-bonding-fix-enslaving-in-alb-mode-when-link-down.patch \
- file://3.2.3/0074-l2tp-l2tp_ip-fix-possible-oops-on-packet-receive.patch \
- file://3.2.3/0075-macvlan-fix-a-possible-use-after-free.patch \
- file://3.2.3/0076-net-bpf_jit-fix-divide-by-0-generation.patch \
- file://3.2.3/0077-net-reintroduce-missing-rcu_assign_pointer-calls.patch \
- file://3.2.3/0078-rds-Make-rds_sock_lock-BH-rather-than-IRQ-safe.patch \
- file://3.2.3/0079-tcp-fix-tcp_trim_head-to-adjust-segment-count-with-s.patch \
- file://3.2.3/0080-tcp-md5-using-remote-adress-for-md5-lookup-in-rst-pa.patch \
- file://3.2.3/0081-USB-serial-CP210x-Added-USB-ID-for-the-Link-Instrume.patch \
- file://3.2.3/0082-USB-cp210x-call-generic-open-last-in-open.patch \
- file://3.2.3/0083-USB-cp210x-fix-CP2104-baudrate-usage.patch \
- file://3.2.3/0084-USB-cp210x-do-not-map-baud-rates-to-B0.patch \
- file://3.2.3/0085-USB-cp210x-fix-up-set_termios-variables.patch \
- file://3.2.3/0086-USB-cp210x-clean-up-refactor-and-document-speed-hand.patch \
- file://3.2.3/0087-USB-cp210x-initialise-baud-rate-at-open.patch \
- file://3.2.3/0088-USB-cp210x-allow-more-baud-rates-above-1Mbaud.patch \
- file://3.2.3/0089-mach-ux500-no-MMC_CAP_SD_HIGHSPEED-on-Snowball.patch \
- file://3.2.3/0090-Linux-3.2.3.patch \
- file://3.2.4/0001-Revert-ASoC-Mark-WM5100-register-map-cache-only-when.patch \
- file://3.2.4/0002-Revert-ASoC-Don-t-go-through-cache-when-applying-WM5.patch \
- file://3.2.4/0003-Linux-3.2.4.patch \
- file://3.2.5/0001-PCI-Rework-ASPM-disable-code.patch \
- file://3.2.5/0002-Linux-3.2.5.patch \
- file://3.2.6/0001-readahead-fix-pipeline-break-caused-by-block-plug.patch \
- file://3.2.6/0002-ALSA-hda-Fix-the-logic-to-detect-VIA-analog-low-curr.patch \
- file://3.2.6/0003-ALSA-HDA-Remove-quirk-for-Asus-N53Jq.patch \
- file://3.2.6/0004-ALSA-hda-Apply-0x0f-VREF-fix-to-all-ASUS-laptops-wit.patch \
- file://3.2.6/0005-ALSA-hda-Fix-calling-cs_automic-twice-for-Cirrus-cod.patch \
- file://3.2.6/0006-ALSA-hda-Allow-analog-low-current-mode-when-dynamic-.patch \
- file://3.2.6/0007-ALSA-HDA-Fix-duplicated-output-to-more-than-one-code.patch \
- file://3.2.6/0008-ALSA-hda-Disable-dynamic-power-control-for-VIA-as-de.patch \
- file://3.2.6/0009-ASoC-wm_hubs-Enable-line-out-VMID-buffer-for-single-.patch \
- file://3.2.6/0010-ASoC-wm_hubs-fix-wrong-bits-for-LINEOUT2-N-P-mixer.patch \
- file://3.2.6/0011-ARM-7306-1-vfp-flush-thread-hwstate-before-restoring.patch \
- file://3.2.6/0012-ARM-7307-1-vfp-fix-ptrace-regset-modification-race.patch \
- file://3.2.6/0013-ARM-7308-1-vfp-flush-thread-hwstate-before-copying-p.patch \
- file://3.2.6/0014-ARM-OMAP2-GPMC-fix-device-size-setup.patch \
- file://3.2.6/0015-drivers-tty-vt-vt_ioctl.c-fix-KDFONTOP-32bit-compati.patch \
- file://3.2.6/0016-proc-mem_release-should-check-mm-NULL.patch \
- file://3.2.6/0017-proc-unify-mem_read-and-mem_write.patch \
- file://3.2.6/0018-proc-make-sure-mem_open-doesn-t-pin-the-target-s-mem.patch \
- file://3.2.6/0019-firewire-ohci-add-reset-packet-quirk-for-SB-Audigy.patch \
- file://3.2.6/0020-firewire-ohci-disable-MSI-on-Ricoh-controllers.patch \
- file://3.2.6/0021-IB-mlx4-pass-SMP-vendor-specific-attribute-MADs-to-f.patch \
- file://3.2.6/0022-RDMA-core-Fix-kernel-panic-by-always-initializing-qp.patch \
- file://3.2.6/0023-kprobes-fix-a-memory-leak-in-function-pre_handler_kr.patch \
- file://3.2.6/0024-mtd-gpmi-nand-bugfix-reset-the-BCH-module-when-it-is.patch \
- file://3.2.6/0025-Revert-mtd-atmel_nand-optimize-read-write-buffer-fun.patch \
- file://3.2.6/0026-at_hdmac-bugfix-for-enabling-channel-irq.patch \
- file://3.2.6/0027-mm-filemap_xip.c-fix-race-condition-in-xip_file_faul.patch \
- file://3.2.6/0028-mm-compaction-check-pfn_valid-when-entering-a-new-MA.patch \
- file://3.2.6/0029-PM-Hibernate-Fix-s2disk-regression-related-to-freezi.patch \
- file://3.2.6/0030-PM-QoS-CPU-C-state-breakage-with-PM-Qos-change.patch \
- file://3.2.6/0031-drm-radeon-Set-DESKTOP_HEIGHT-register-to-the-frameb.patch \
- file://3.2.6/0032-drm-nouveau-gem-fix-fence_sync-race-oops.patch \
- file://3.2.6/0033-drm-radeon-kms-disable-output-polling-when-suspended.patch \
- file://3.2.6/0034-drm-radeon-kms-fix-TRAVIS-panel-setup.patch \
- file://3.2.6/0035-sched-rt-Fix-task-stack-corruption-under-__ARCH_WANT.patch \
- file://3.2.6/0036-PM-Hibernate-Thaw-processes-in-SNAPSHOT_CREATE_IMAGE.patch \
- file://3.2.6/0037-PM-Hibernate-Thaw-kernel-threads-in-SNAPSHOT_CREATE_.patch \
- file://3.2.6/0038-8139cp-fix-missing-napi_gro_flush.patch \
- file://3.2.6/0039-udf-Mark-LVID-buffer-as-uptodate-before-marking-it-d.patch \
- file://3.2.6/0040-drm-i915-HDMI-hot-remove-notification-to-audio-drive.patch \
- file://3.2.6/0041-drm-i915-DisplayPort-hot-remove-notification-to-audi.patch \
- file://3.2.6/0042-drm-i915-check-ACTHD-of-all-rings.patch \
- file://3.2.6/0043-drm-i915-Fix-TV-Out-refresh-rate.patch \
- file://3.2.6/0044-drm-i915-handle-3rd-pipe.patch \
- file://3.2.6/0045-drm-i915-convert-force_wake_get-to-func-pointer-in-t.patch \
- file://3.2.6/0046-drm-i915-protect-force_wake_-get-put-with-the-gt_loc.patch \
- file://3.2.6/0047-eCryptfs-Infinite-loop-due-to-overflow-in-ecryptfs_w.patch \
- file://3.2.6/0048-hwmon-w83627ehf-Fix-number-of-fans-for-NCT6776F.patch \
- file://3.2.6/0049-cifs-Fix-oops-in-session-setup-code-for-null-user-mo.patch \
- file://3.2.6/0050-atmel_lcdfb-fix-usage-of-CONTRAST_CTR-in-suspend-res.patch \
- file://3.2.6/0051-lockdep-bug-Exclude-TAINT_FIRMWARE_WORKAROUND-from-d.patch \
- file://3.2.6/0052-lockdep-bug-Exclude-TAINT_OOT_MODULE-from-disabling-.patch \
- file://3.2.6/0053-iscsi-target-Fix-reject-release-handling-in-iscsit_f.patch \
- file://3.2.6/0054-iscsi-target-Fix-double-list_add-with-iscsit_alloc_b.patch \
- file://3.2.6/0055-iscsi-target-Fix-discovery-with-INADDR_ANY-and-IN6AD.patch \
- file://3.2.6/0056-ASoC-wm_hubs-Fix-routing-of-input-PGAs-to-line-outpu.patch \
- file://3.2.6/0057-ASoC-wm_hubs-Correct-line-input-to-line-output-2-pat.patch \
- file://3.2.6/0058-ASoC-wm8962-Fix-word-length-configuration.patch \
- file://3.2.6/0059-ASoC-wm8994-Enabling-VMID-should-take-a-runtime-PM-r.patch \
- file://3.2.6/0060-ASoC-wm8994-Fix-typo-in-VMID-ramp-setting.patch \
- file://3.2.6/0061-pcmcia-fix-socket-refcount-decrementing-on-each-resu.patch \
- file://3.2.6/0062-ALSA-oxygen-virtuoso-fix-exchanged-L-R-volumes-of-au.patch \
- file://3.2.6/0063-iommu-amd-Work-around-broken-IVRS-tables.patch \
- file://3.2.6/0064-iommu-msm-Fix-error-handling-in-msm_iommu_unmap.patch \
- file://3.2.6/0065-mm-compaction-check-for-overlapping-nodes-during-iso.patch \
- file://3.2.6/0066-mm-fix-UP-THP-spin_is_locked-BUGs.patch \
- file://3.2.6/0067-target-Use-correct-preempted-registration-sense-code.patch \
- file://3.2.6/0068-target-Allow-PERSISTENT-RESERVE-IN-for-non-reservati.patch \
- file://3.2.6/0069-target-Correct-sense-key-for-INVALID-FIELD-IN-PARAME.patch \
- file://3.2.6/0070-target-Add-workaround-for-zero-length-control-CDB-ha.patch \
- file://3.2.6/0071-target-Return-correct-ASC-for-unimplemented-VPD-page.patch \
- file://3.2.6/0072-target-Fail-INQUIRY-commands-with-EVPD-0-but-PAGE-CO.patch \
- file://3.2.6/0073-Staging-asus_oled-fix-image-processing.patch \
- file://3.2.6/0074-Staging-asus_oled-fix-NULL-ptr-crash-on-unloading.patch \
- file://3.2.6/0075-staging-r8712u-Add-new-Sitecom-UsB-ID.patch \
- file://3.2.6/0076-staging-r8712u-Use-asynchronous-firmware-loading.patch \
- file://3.2.6/0077-usb-ch9.h-usb_endpoint_maxp-uses-__le16_to_cpu.patch \
- file://3.2.6/0078-usb-gadget-zero-fix-bug-in-loopback-autoresume-handl.patch \
- file://3.2.6/0079-usb-Skip-PCI-USB-quirk-handling-for-Netlogic-XLP.patch \
- file://3.2.6/0080-USB-usbserial-add-new-PID-number-0xa951-to-the-ftdi-.patch \
- file://3.2.6/0081-USB-add-new-zte-3g-dongle-s-pid-to-option.c.patch \
- file://3.2.6/0082-zcache-Set-SWIZ_BITS-to-8-to-reduce-tmem-bucket-lock.patch \
- file://3.2.6/0083-zcache-fix-deadlock-condition.patch \
- file://3.2.6/0084-mmc-cb710-core-Add-missing-spin_lock_init-for-irq_lo.patch \
- file://3.2.6/0085-powernow-k8-Avoid-Pstate-MSR-accesses-on-systems-sup.patch \
- file://3.2.6/0086-powernow-k8-Fix-indexing-issue.patch \
- file://3.2.6/0087-Linux-3.2.6.patch \
- file://3.2.7/0001-ixgbe-fix-vf-lookup.patch \
- file://3.2.7/0002-igb-fix-vf-lookup.patch \
- file://3.2.7/0003-perf-evsel-Fix-an-issue-where-perf-report-fails-to-s.patch \
- file://3.2.7/0004-perf-tools-Fix-perf-stack-to-non-executable-on-x86_6.patch \
- file://3.2.7/0005-drm-i915-Force-explicit-bpp-selection-for-intel_dp_l.patch \
- file://3.2.7/0006-drm-i915-no-lvds-quirk-for-AOpen-MP45.patch \
- file://3.2.7/0007-ath9k-Fix-kernel-panic-during-driver-initilization.patch \
- file://3.2.7/0008-ath9k-fix-a-WEP-crypto-related-regression.patch \
- file://3.2.7/0009-ath9k_hw-fix-a-RTS-CTS-timeout-regression.patch \
- file://3.2.7/0010-hwmon-f75375s-Fix-bit-shifting-in-f75375_write16.patch \
- file://3.2.7/0011-net-enable-TC35815-for-MIPS-again.patch \
- file://3.2.7/0012-lib-proportion-lower-PROP_MAX_SHIFT-to-32-on-64-bit-.patch \
- file://3.2.7/0013-relay-prevent-integer-overflow-in-relay_open.patch \
- file://3.2.7/0014-mac80211-timeout-a-single-frame-in-the-rx-reorder-bu.patch \
- file://3.2.7/0015-writeback-fix-NULL-bdi-dev-in-trace-writeback_single.patch \
- file://3.2.7/0016-writeback-fix-dereferencing-NULL-bdi-dev-on-trace_wr.patch \
- file://3.2.7/0017-hwmon-f75375s-Fix-automatic-pwm-mode-setting-for-F75.patch \
- file://3.2.7/0018-cifs-request-oplock-when-doing-open-on-lookup.patch \
- file://3.2.7/0019-cifs-don-t-return-error-from-standard_receive3-after.patch \
- file://3.2.7/0020-crypto-sha512-Use-binary-and-instead-of-modulus.patch \
- file://3.2.7/0021-crypto-sha512-Avoid-stack-bloat-on-i386.patch \
- file://3.2.7/0022-backing-dev-fix-wakeup-timer-races-with-bdi_unregist.patch \
- file://3.2.7/0023-ALSA-intel8x0-Fix-default-inaudible-sound-on-Gateway.patch \
- file://3.2.7/0024-ALSA-hda-Fix-initialization-of-secondary-capture-sou.patch \
- file://3.2.7/0025-ALSA-hda-Fix-silent-speaker-output-on-Acer-Aspire-69.patch \
- file://3.2.7/0026-mmc-atmel-mci-save-and-restore-sdioirq-when-soft-res.patch \
- file://3.2.7/0027-mmc-dw_mmc-Fix-PIO-mode-with-support-of-highmem.patch \
- file://3.2.7/0028-xen-pvhvm-do-not-remap-pirqs-onto-evtchns-if-xen_hav.patch \
- file://3.2.7/0029-crypto-sha512-use-standard-ror64.patch \
- file://3.2.7/0030-Linux-3.2.7.patch \
- file://3.2.8/0001-i387-math_state_restore-isn-t-called-from-asm.patch \
- file://3.2.8/0002-i387-make-irq_fpu_usable-tests-more-robust.patch \
- file://3.2.8/0003-i387-fix-sense-of-sanity-check.patch \
- file://3.2.8/0004-i387-fix-x86-64-preemption-unsafe-user-stack-save-re.patch \
- file://3.2.8/0005-i387-move-TS_USEDFPU-clearing-out-of-__save_init_fpu.patch \
- file://3.2.8/0006-i387-don-t-ever-touch-TS_USEDFPU-directly-use-helper.patch \
- file://3.2.8/0007-i387-do-not-preload-FPU-state-at-task-switch-time.patch \
- file://3.2.8/0008-i387-move-AMD-K7-K8-fpu-fxsave-fxrstor-workaround-fr.patch \
- file://3.2.8/0009-i387-move-TS_USEDFPU-flag-from-thread_info-to-task_s.patch \
- file://3.2.8/0010-i387-re-introduce-FPU-state-preloading-at-context-sw.patch \
- file://3.2.8/0011-Linux-3.2.8.patch \
- file://3.2.9/0001-Security-tomoyo-add-.gitignore-file.patch \
- file://3.2.9/0002-powerpc-perf-power_pmu_start-restores-incorrect-valu.patch \
- file://3.2.9/0003-ARM-at91-USB-AT91-gadget-registration-for-module.patch \
- file://3.2.9/0004-drm-radeon-kms-fix-MSI-re-arm-on-rv370.patch \
- file://3.2.9/0005-PCI-workaround-hard-wired-bus-number-V2.patch \
- file://3.2.9/0006-mac80211-Fix-a-rwlock-bad-magic-bug.patch \
- file://3.2.9/0007-ipheth-Add-iPhone-4S.patch \
- file://3.2.9/0008-regmap-Fix-cache-defaults-initialization-from-raw-ca.patch \
- file://3.2.9/0009-eCryptfs-Copy-up-lower-inode-attrs-after-setting-low.patch \
- file://3.2.9/0010-S390-correct-ktime-to-tod-clock-comparator-conversio.patch \
- file://3.2.9/0011-vfs-fix-d_inode_lookup-dentry-ref-leak.patch \
- file://3.2.9/0012-ARM-7326-2-PL330-fix-null-pointer-dereference-in-pl3.patch \
- file://3.2.9/0013-ALSA-hda-Fix-redundant-jack-creations-for-cx5051.patch \
- file://3.2.9/0014-mmc-core-check-for-zero-length-ioctl-data.patch \
- file://3.2.9/0015-NFSv4-Fix-an-Oops-in-the-NFSv4-getacl-code.patch \
- file://3.2.9/0016-NFSv4-Ensure-we-throw-out-bad-delegation-stateids-on.patch \
- file://3.2.9/0017-NFSv4-fix-server_scope-memory-leak.patch \
- file://3.2.9/0018-ARM-7321-1-cache-v7-Disable-preemption-when-reading-.patch \
- file://3.2.9/0019-ARM-7325-1-fix-v7-boot-with-lockdep-enabled.patch \
- file://3.2.9/0020-3c59x-shorten-timer-period-for-slave-devices.patch \
- file://3.2.9/0021-net-Don-t-proxy-arp-respond-if-iif-rt-dst.dev-if-pri.patch \
- file://3.2.9/0022-netpoll-netpoll_poll_dev-should-access-dev-flags.patch \
- file://3.2.9/0023-net_sched-Bug-in-netem-reordering.patch \
- file://3.2.9/0024-veth-Enforce-minimum-size-of-VETH_INFO_PEER.patch \
- file://3.2.9/0025-via-velocity-S3-resume-fix.patch \
- file://3.2.9/0026-ipv4-reset-flowi-parameters-on-route-connect.patch \
- file://3.2.9/0027-tcp_v4_send_reset-binding-oif-to-iif-in-no-sock-case.patch \
- file://3.2.9/0028-ipv4-Fix-wrong-order-of-ip_rt_get_source-and-update-.patch \
- file://3.2.9/0029-net-Make-qdisc_skb_cb-upper-size-bound-explicit.patch \
- file://3.2.9/0030-IPoIB-Stop-lying-about-hard_header_len-and-use-skb-c.patch \
- file://3.2.9/0031-gro-more-generic-L2-header-check.patch \
- file://3.2.9/0032-tcp-allow-tcp_sacktag_one-to-tag-ranges-not-aligned-.patch \
- file://3.2.9/0033-tcp-fix-range-tcp_shifted_skb-passes-to-tcp_sacktag_.patch \
- file://3.2.9/0034-tcp-fix-tcp_shifted_skb-adjustment-of-lost_cnt_hint-.patch \
- file://3.2.9/0035-USB-Added-Kamstrup-VID-PIDs-to-cp210x-serial-driver.patch \
- file://3.2.9/0036-USB-option-cleanup-zte-3g-dongle-s-pid-in-option.c.patch \
- file://3.2.9/0037-USB-Serial-ti_usb_3410_5052-Add-Abbot-Diabetes-Care-.patch \
- file://3.2.9/0038-USB-Remove-duplicate-USB-3.0-hub-feature-defines.patch \
- file://3.2.9/0039-USB-Fix-handoff-when-BIOS-disables-host-PCI-device.patch \
- file://3.2.9/0040-xhci-Fix-oops-caused-by-more-USB2-ports-than-USB3-po.patch \
- file://3.2.9/0041-xhci-Fix-encoding-for-HS-bulk-control-NAK-rate.patch \
- file://3.2.9/0042-USB-Don-t-fail-USB3-probe-on-missing-legacy-PCI-IRQ.patch \
- file://3.2.9/0043-USB-Set-hub-depth-after-USB3-hub-reset.patch \
- file://3.2.9/0044-usb-storage-fix-freezing-of-the-scanning-thread.patch \
- file://3.2.9/0045-target-Allow-control-CDBs-with-data-1-page.patch \
- file://3.2.9/0046-ASoC-wm8962-Fix-sidetone-enumeration-texts.patch \
- file://3.2.9/0047-ALSA-hda-realtek-Fix-overflow-of-vol-sw-check-bitmap.patch \
- file://3.2.9/0048-ALSA-hda-realtek-Fix-surround-output-regression-on-A.patch \
- file://3.2.9/0049-NOMMU-Lock-i_mmap_mutex-for-access-to-the-VMA-prio-l.patch \
- file://3.2.9/0050-hwmon-max6639-Fix-FAN_FROM_REG-calculation.patch \
- file://3.2.9/0051-hwmon-max6639-Fix-PPR-register-initialization-to-set.patch \
- file://3.2.9/0052-hwmon-ads1015-Fix-file-leak-in-probe-function.patch \
- file://3.2.9/0053-ARM-omap-fix-oops-in-drivers-video-omap2-dss-dpi.c.patch \
- file://3.2.9/0054-x86-amd-Fix-L1i-and-L2-cache-sharing-information-for.patch \
- file://3.2.9/0055-ath9k-stop-on-rates-with-idx-1-in-ath9k-rate-control.patch \
- file://3.2.9/0056-genirq-Unmask-oneshot-irqs-when-thread-was-not-woken.patch \
- file://3.2.9/0057-genirq-Handle-pending-irqs-in-irq_startup.patch \
- file://3.2.9/0058-scsi_scan-Fix-Poison-overwritten-warning-caused-by-u.patch \
- file://3.2.9/0059-scsi_pm-Fix-bug-in-the-SCSI-power-management-handler.patch \
- file://3.2.9/0060-ipvs-fix-matching-of-fwmark-templates-during-schedul.patch \
- file://3.2.9/0061-jme-Fix-FIFO-flush-issue.patch \
- file://3.2.9/0062-davinci_emac-Do-not-free-all-rx-dma-descriptors-duri.patch \
- file://3.2.9/0063-builddeb-Don-t-create-files-in-tmp-with-predictable-.patch \
- file://3.2.9/0064-can-sja1000-fix-isr-hang-when-hw-is-unplugged-under-.patch \
- file://3.2.9/0065-hdpvr-fix-race-conditon-during-start-of-streaming.patch \
- file://3.2.9/0066-imon-don-t-wedge-hardware-after-early-callbacks.patch \
- file://3.2.9/0067-hwmon-f75375s-Fix-register-write-order-when-setting-.patch \
- file://3.2.9/0068-epoll-introduce-POLLFREE-to-flush-signalfd_wqh-befor.patch \
- file://3.2.9/0069-epoll-ep_unregister_pollwait-can-use-the-freed-pwq-w.patch \
- file://3.2.9/0070-epoll-limit-paths.patch \
- file://3.2.9/0071-cdrom-use-copy_to_user-without-the-underscores.patch \
- file://3.2.9/0072-Linux-3.2.9.patch \
- file://3.2.10/0001-autofs-work-around-unhappy-compat-problem-on-x86-64.patch \
- file://3.2.10/0002-Fix-autofs-compile-without-CONFIG_COMPAT.patch \
- file://3.2.10/0003-compat-fix-compile-breakage-on-s390.patch \
- file://3.2.10/0004-drm-i915-Prevent-a-machine-hang-by-checking-crtc-act.patch \
- file://3.2.10/0005-ARM-LPC32xx-serial.c-HW-bug-workaround.patch \
- file://3.2.10/0006-ARM-LPC32xx-serial.c-Fixed-loop-limit.patch \
- file://3.2.10/0007-ARM-LPC32xx-irq.c-Clear-latched-event.patch \
- file://3.2.10/0008-ARM-LPC32xx-Fix-interrupt-controller-init.patch \
- file://3.2.10/0009-ARM-LPC32xx-Fix-irq-on-GPI_28.patch \
- file://3.2.10/0010-watchdog-hpwdt-clean-up-set_memory_x-call-for-32-bit.patch \
- file://3.2.10/0011-i2c-mxs-only-flag-completion-when-queue-is-completel.patch \
- file://3.2.10/0012-regulator-fix-the-ldo-configure-according-to-88pm860.patch \
- file://3.2.10/0013-S390-KEYS-Enable-the-compat-keyctl-wrapper-on-s390x.patch \
- file://3.2.10/0014-perf-x86-kvm-Fix-Host-Only-Guest-Only-counting-with-.patch \
- file://3.2.10/0015-ALSA-hda-realtek-Fix-resume-of-multiple-input-source.patch \
- file://3.2.10/0016-ALSA-hda-Add-a-fake-mute-feature.patch \
- file://3.2.10/0017-ALSA-hda-Always-set-HP-pin-in-unsol-handler-for-STAC.patch \
- file://3.2.10/0018-regset-Prevent-null-pointer-reference-on-readonly-re.patch \
- file://3.2.10/0019-regset-Return-EFAULT-not-EIO-on-host-side-memory-fau.patch \
- file://3.2.10/0020-mfd-Fix-ACPI-conflict-check.patch \
- file://3.2.10/0021-mfd-Test-for-jack-detection-when-deciding-if-wm8994-.patch \
- file://3.2.10/0022-genirq-Clear-action-thread_mask-if-IRQ_ONESHOT-is-no.patch \
- file://3.2.10/0023-ARM-S3C24XX-DMA-resume-regression-fix.patch \
- file://3.2.10/0024-Move-Logitech-Harmony-900-from-cdc_ether-to-zaurus.patch \
- file://3.2.10/0025-alpha-fix-32-64-bit-bug-in-futex-support.patch \
- file://3.2.10/0026-mmc-atmel-mci-don-t-use-dma-features-when-using-DMA-.patch \
- file://3.2.10/0027-mmc-sdhci-esdhc-imx-fix-for-mmc-cards-on-i.MX5.patch \
- file://3.2.10/0028-aio-wake-up-waiters-when-freeing-unused-kiocbs.patch \
- file://3.2.10/0029-mm-memcg-Correct-unregistring-of-events-attached-to-.patch \
- file://3.2.10/0030-NOMMU-Don-t-need-to-clear-vm_mm-when-deleting-a-VMA.patch \
- file://3.2.10/0031-cifs-fix-dentry-refcount-leak-when-opening-a-FIFO-on.patch \
- file://3.2.10/0032-mac80211-zero-initialize-count-field-in-ieee80211_tx.patch \
- file://3.2.10/0033-ath9k_hw-prevent-writes-to-const-data-on-AR9160.patch \
- file://3.2.10/0034-kprobes-return-proper-error-code-from-register_kprob.patch \
- file://3.2.10/0035-mm-thp-fix-BUG-on-mm-nr_ptes.patch \
- file://3.2.10/0036-iwlwifi-fix-key-removal.patch \
- file://3.2.10/0037-tty-powerpc-early-udbg-consoles-can-t-be-modules.patch \
- file://3.2.10/0038-S390-qdio-fix-handler-function-arguments-for-zfcp-da.patch \
- file://3.2.10/0039-rapidio-tsi721-fix-queue-wrapping-bug-in-inbound-doo.patch \
- file://3.2.10/0040-HID-usbhid-Add-NOGET-quirk-for-the-AIREN-Slim-keyboa.patch \
- file://3.2.10/0041-crypto-mv_cesa-fix-final-callback-not-ignoring-input.patch \
- file://3.2.10/0042-osd_uld-Bump-MAX_OSD_DEVICES-from-64-to-1-048-576.patch \
- file://3.2.10/0043-viafb-select-HW-scaling-on-VX900-for-IGA2.patch \
- file://3.2.10/0044-viafb-fix-IGA1-modesetting-on-VX900.patch \
- file://3.2.10/0045-ASoC-dapm-Check-for-bias-level-when-powering-down.patch \
- file://3.2.10/0046-ASoC-i.MX-SSI-Fix-DSP_A-format.patch \
- file://3.2.10/0047-bsg-fix-sysfs-link-remove-warning.patch \
- file://3.2.10/0048-avr32-select-generic-atomic64_t-support.patch \
- file://3.2.10/0049-ACPI-PM-Do-not-save-restore-NVS-on-Asus-K54C-K54HR.patch \
- file://3.2.10/0050-rtl8192cu-Add-new-device-IDs.patch \
- file://3.2.10/0051-drm-i915-gen7-implement-rczunit-workaround.patch \
- file://3.2.10/0052-drm-i915-gen7-Implement-an-L3-caching-workaround.patch \
- file://3.2.10/0053-drm-i915-gen7-work-around-a-system-hang-on-IVB.patch \
- file://3.2.10/0054-drm-i915-gen7-Disable-the-RHWO-optimization-as-it-ca.patch \
- file://3.2.10/0055-drm-i915-fix-ELD-writing-for-SandyBridge.patch \
- file://3.2.10/0056-ARM-orion-Fix-USB-phy-for-orion5x.patch \
- file://3.2.10/0057-ARM-orion-Fix-Orion5x-GPIO-regression-from-MPP-clean.patch \
- file://3.2.10/0058-OMAP-4430SDP-Panda-use-gpio_free_array-to-free-HDMI-.patch \
- file://3.2.10/0059-OMAP-4430SDP-Panda-rename-HPD-GPIO-to-CT_CP_HPD.patch \
- file://3.2.10/0060-OMAPDSS-remove-wrong-HDMI-HPD-muxing.patch \
- file://3.2.10/0061-OMAP-4430SDP-Panda-setup-HDMI-GPIO-muxes.patch \
- file://3.2.10/0062-OMAP-4430SDP-Panda-add-HDMI-HPD-gpio.patch \
- file://3.2.10/0063-OMAPDSS-HDMI-PHY-burnout-fix.patch \
- file://3.2.10/0064-OMAPDSS-HDMI-hot-plug-detect-fix.patch \
- file://3.2.10/0065-ARM-7345-1-errata-update-workaround-for-A9-erratum-7.patch \
- file://3.2.10/0066-ARM-7354-1-perf-limit-sample_period-to-half-max_peri.patch \
- file://3.2.10/0067-ARM-7355-1-perf-clear-overflow-flag-when-disabling-c.patch \
- file://3.2.10/0068-ARM-7356-1-perf-check-that-we-have-an-event-in-the-P.patch \
- file://3.2.10/0069-ARM-7357-1-perf-fix-overflow-handling-for-xscale2-PM.patch \
- file://3.2.10/0070-media-staging-lirc_serial-Fix-init-exit-order.patch \
- file://3.2.10/0071-media-staging-lirc_serial-Free-resources-on-failure-.patch \
- file://3.2.10/0072-media-staging-lirc_serial-Fix-deadlock-on-resume-fai.patch \
- file://3.2.10/0073-media-staging-lirc_serial-Do-not-assume-error-codes-.patch \
- file://3.2.10/0074-Input-ALPS-fix-touchpad-detection-when-buttons-are-p.patch \
- file://3.2.10/0075-hwmon-pmbus_core-Fix-maximum-number-of-POUT-alarm-at.patch \
- file://3.2.10/0076-hwmon-jc42-Add-support-for-ST-Microelectronics-STTS2.patch \
- file://3.2.10/0077-hwmon-jc42-Add-support-for-AT30TS00-TS3000GB2-TSE200.patch \
- file://3.2.10/0078-hwmon-zl6100-Maintain-delay-parameter-in-driver-inst.patch \
- file://3.2.10/0079-carl9170-Fix-memory-accounting-when-sta-is-in-power-.patch \
- file://3.2.10/0080-carl9170-fix-frame-delivery-if-sta-is-in-powersave-m.patch \
- file://3.2.10/0081-drm-radeon-kms-set-SX_MISC-in-the-r6xx-blit-code-v2.patch \
- file://3.2.10/0082-net-usbnet-avoid-recursive-locking-in-usbnet_stop.patch \
- file://3.2.10/0083-x86-amd-iommu_set_device_table-must-not-be-__init.patch \
- file://3.2.10/0084-dm-ioctl-do-not-leak-argv-if-target-message-only-con.patch \
- file://3.2.10/0085-dm-io-fix-discard-support.patch \
- file://3.2.10/0086-dm-flakey-fix-crash-on-read-when-corrupt_bio_byte-no.patch \
- file://3.2.10/0087-dm-thin-metadata-remove-incorrect-close_device-on-cr.patch \
- file://3.2.10/0088-dm-thin-metadata-unlock-superblock-in-init_pmd-error.patch \
- file://3.2.10/0089-dm-thin-metadata-decrement-counter-after-removing-ma.patch \
- file://3.2.10/0090-dm-raid-set-MD_CHANGE_DEVS-when-rebuilding.patch \
- file://3.2.10/0091-dm-raid-fix-flush-support.patch \
- file://3.2.10/0092-cs5535-mfgpt-don-t-call-__init-function-from-__devin.patch \
- file://3.2.10/0093-mfd-Fix-cs5535-section-mismatch.patch \
- file://3.2.10/0094-spi-topcliff-pch-rename-pch_spi_pcidev-to-pch_spi_pc.patch \
- file://3.2.10/0095-Linux-3.2.10.patch \
- file://3.2.11/0001-Revert-mfd-Test-for-jack-detection-when-deciding-if-.patch \
- file://3.2.11/0002-Linux-3.2.11.patch \
- file://3.2.12/0001-ASoC-neo1973-fix-neo1973-wm8753-initialization.patch \
- file://3.2.12/0002-ALSA-hda-realtek-Apply-the-coef-setup-only-to-ALC269.patch \
- file://3.2.12/0003-aio-fix-io_setup-io_destroy-race.patch \
- file://3.2.12/0004-aio-fix-the-too-late-munmap-race.patch \
- file://3.2.12/0005-x86-Derandom-delay_tsc-for-64-bit.patch \
- file://3.2.12/0006-PCI-ignore-pre-1.1-ASPM-quirking-when-ASPM-is-disabl.patch \
- file://3.2.12/0007-omap3isp-ccdc-Fix-crash-in-HS-VS-interrupt-handler.patch \
- file://3.2.12/0008-rt2x00-fix-random-stalls.patch \
- file://3.2.12/0009-perf-x86-Fix-local-vs-remote-memory-events-for-NHM-W.patch \
- file://3.2.12/0010-CIFS-Do-not-kmalloc-under-the-flocks-spinlock.patch \
- file://3.2.12/0011-vfs-fix-return-value-from-do_last.patch \
- file://3.2.12/0012-vfs-fix-double-put-after-complete_walk.patch \
- file://3.2.12/0013-acer-wmi-No-wifi-rfkill-on-Lenovo-machines.patch \
- file://3.2.12/0014-atl1c-dont-use-highprio-tx-queue.patch \
- file://3.2.12/0015-neighbour-Fixed-race-condition-at-tbl-nht.patch \
- file://3.2.12/0016-ipsec-be-careful-of-non-existing-mac-headers.patch \
- file://3.2.12/0017-ppp-fix-ppp_mp_reconstruct-bad-seq-errors.patch \
- file://3.2.12/0018-sfc-Fix-assignment-of-ip_summed-for-pre-allocated-sk.patch \
- file://3.2.12/0019-tcp-fix-false-reordering-signal-in-tcp_shifted_skb.patch \
- file://3.2.12/0020-vmxnet3-Fix-transport-header-size.patch \
- file://3.2.12/0021-packetengines-fix-config-default.patch \
- file://3.2.12/0022-r8169-corrupted-IP-fragments-fix-for-large-mtu.patch \
- file://3.2.12/0023-tcp-don-t-fragment-SACKed-skbs-in-tcp_mark_head_lost.patch \
- file://3.2.12/0024-bridge-check-return-value-of-ipv6_dev_get_saddr.patch \
- file://3.2.12/0025-tcp-fix-tcp_shift_skb_data-to-not-shift-SACKed-data-.patch \
- file://3.2.12/0026-IPv6-Fix-not-join-all-router-mcast-group-when-forwar.patch \
- file://3.2.12/0027-usb-asix-Patch-for-Sitecom-LN-031.patch \
- file://3.2.12/0028-regulator-Fix-setting-selector-in-tps6524x-set_volta.patch \
- file://3.2.12/0029-block-Fix-NULL-pointer-dereference-in-sd_revalidate_.patch \
- file://3.2.12/0030-block-sx8-fix-pointer-math-issue-getting-fw-version.patch \
- file://3.2.12/0031-block-fix-__blkdev_get-and-add_disk-race-condition.patch \
- file://3.2.12/0032-Block-use-a-freezable-workqueue-for-disk-event-polli.patch \
- file://3.2.12/0033-sparc32-Add-Av8-to-assembler-command-line.patch \
- file://3.2.12/0034-hwmon-w83627ehf-Fix-writing-into-fan_stop_time-for-N.patch \
- file://3.2.12/0035-hwmon-w83627ehf-Fix-memory-leak-in-probe-function.patch \
- file://3.2.12/0036-hwmon-w83627ehf-Fix-temp2-source-for-W83627UHG.patch \
- file://3.2.12/0037-rapidio-tsi721-fix-bug-in-register-offset-definition.patch \
- file://3.2.12/0038-i2c-algo-bit-Fix-spurious-SCL-timeouts-under-heavy-l.patch \
- file://3.2.12/0039-iscsi-target-Fix-reservation-conflict-EBUSY-response.patch \
- file://3.2.12/0040-target-Fix-compatible-reservation-handling-CRH-1-wit.patch \
- file://3.2.12/0041-hwmon-zl6100-Enable-interval-between-chip-accesses-f.patch \
- file://3.2.12/0042-Linux-3.2.12.patch \
- file://3.2.13/0001-nilfs2-fix-NULL-pointer-dereference-in-nilfs_load_su.patch \
- file://3.2.13/0002-afs-Read-of-file-returns-EBADMSG.patch \
- file://3.2.13/0003-afs-Remote-abort-can-cause-BUG-in-rxrpc-code.patch \
- file://3.2.13/0004-perf-tools-Incorrect-use-of-snprintf-results-in-SEGV.patch \
- file://3.2.13/0005-perf-tools-Use-scnprintf-where-applicable.patch \
- file://3.2.13/0006-tcp-fix-syncookie-regression.patch \
- file://3.2.13/0007-ipv6-Don-t-dev_hold-dev-in-ip6_mc_find_dev_rcu.patch \
- file://3.2.13/0008-iwl3945-fix-possible-il-txq-NULL-pointer-dereference.patch \
- file://3.2.13/0009-powerpc-pmac-Fix-SMP-kernels-on-pre-core99-UP-machin.patch \
- file://3.2.13/0010-Linux-3.2.13.patch \
- file://3.2.14/0001-USB-option-Add-MediaTek-MT6276M-modem-app-interfaces.patch \
- file://3.2.14/0002-USB-option-driver-adding-support-for-Telit-CC864-SIN.patch \
- file://3.2.14/0003-USB-option-make-interface-blacklist-work-again.patch \
- file://3.2.14/0004-USB-option-add-ZTE-MF820D.patch \
- file://3.2.14/0005-staging-zcache-avoid-AB-BA-deadlock-condition.patch \
- file://3.2.14/0006-USB-ftdi_sio-fix-problem-when-the-manufacture-is-a-N.patch \
- file://3.2.14/0007-USB-ftdi_sio-add-support-for-BeagleBone-rev-A5.patch \
- file://3.2.14/0008-USB-Microchip-VID-mislabeled-as-Hornby-VID-in-ftdi_s.patch \
- file://3.2.14/0009-USB-ftdi_sio-new-PID-Distortec-JTAG-lock-pick.patch \
- file://3.2.14/0010-USB-ftdi_sio-add-support-for-FT-X-series-devices.patch \
- file://3.2.14/0011-USB-ftdi_sio-new-PID-LUMEL-PD12.patch \
- file://3.2.14/0012-powerpc-usb-fix-bug-of-kernel-hang-when-initializing.patch \
- file://3.2.14/0013-staging-r8712u-Add-missing-initialization-and-remove.patch \
- file://3.2.14/0014-staging-r8712u-Fix-regression-introduced-by-commit-a.patch \
- file://3.2.14/0015-staging-r8712u-Fix-regression-in-signal-level-after-.patch \
- file://3.2.14/0016-usb-dwc3-fix-bogus-test-in-dwc3_gadget_start_isoc.patch \
- file://3.2.14/0017-usb-dwc3-use-proper-function-for-setting-endpoint-na.patch \
- file://3.2.14/0018-usb-gadgetfs-return-number-of-bytes-on-ep0-read-requ.patch \
- file://3.2.14/0019-USB-gadget-Make-g_hid-device-class-conform-to-spec.patch \
- file://3.2.14/0020-futex-Cover-all-PI-opcodes-with-cmpxchg-enabled-chec.patch \
- file://3.2.14/0021-sysfs-Fix-memory-leak-in-sysfs_sd_setsecdata.patch \
- file://3.2.14/0022-tty-moxa-fix-bit-test-in-moxa_start.patch \
- file://3.2.14/0023-TTY-Wrong-unicode-value-copied-in-con_set_unimap.patch \
- file://3.2.14/0024-USB-serial-fix-console-error-reporting.patch \
- file://3.2.14/0025-cdc-wdm-Fix-more-races-on-the-read-path.patch \
- file://3.2.14/0026-cdc-wdm-Don-t-clear-WDM_READ-unless-entire-read-buff.patch \
- file://3.2.14/0027-usb-fsl_udc_core-Fix-scheduling-while-atomic-dump-me.patch \
- file://3.2.14/0028-usb-Fix-build-error-due-to-dma_mask-is-not-at-pdev_a.patch \
- file://3.2.14/0029-USB-ums_realtek-do-not-use-stack-memory-for-DMA-in-_.patch \
- file://3.2.14/0030-USB-qcserial-add-several-new-serial-devices.patch \
- file://3.2.14/0031-USB-qcserial-don-t-grab-QMI-port-on-Gobi-1000-device.patch \
- file://3.2.14/0032-usb-serial-Add-support-for-the-Sealevel-SeaLINK-8-20.patch \
- file://3.2.14/0033-usb-cp210x-Update-to-support-CP2105-and-multiple-int.patch \
- file://3.2.14/0034-USB-serial-mos7840-Fixed-MCS7820-device-attach-probl.patch \
- file://3.2.14/0035-rt2x00-Add-support-for-D-Link-DWA-127-to-rt2800usb.patch \
- file://3.2.14/0036-rtlwifi-rtl8192c_common-rtl8192de-Check-for-allocati.patch \
- file://3.2.14/0037-rtlwifi-Handle-previous-allocation-failures-when-fre.patch \
- file://3.2.14/0038-rtlwifi-rtl8192c-Prevent-sleeping-from-invalid-conte.patch \
- file://3.2.14/0039-rtlwifi-rtl8192ce-Fix-loss-of-receive-performance.patch \
- file://3.2.14/0040-iwlwifi-always-monitor-for-stuck-queues.patch \
- file://3.2.14/0041-math-Introduce-div64_long.patch \
- file://3.2.14/0042-ntp-Fix-integer-overflow-when-setting-time.patch \
- file://3.2.14/0043-uevent-send-events-in-correct-order-according-to-seq.patch \
- file://3.2.14/0044-genirq-Fix-long-term-regression-in-genirq-irq_set_ir.patch \
- file://3.2.14/0045-genirq-Fix-incorrect-check-for-forced-IRQ-thread-han.patch \
- file://3.2.14/0046-rtc-Disable-the-alarm-in-the-hardware-v2.patch \
- file://3.2.14/0047-p54spi-Release-GPIO-lines-and-IRQ-on-error-in-p54spi.patch \
- file://3.2.14/0048-rtnetlink-Fix-VF-IFLA-policy.patch \
- file://3.2.14/0049-IB-iser-Post-initial-receive-buffers-before-sending-.patch \
- file://3.2.14/0050-ima-fix-Kconfig-dependencies.patch \
- file://3.2.14/0051-x86-ioapic-Add-register-level-checks-to-detect-bogus.patch \
- file://3.2.14/0052-mm-thp-fix-pmd_bad-triggering-in-code-paths-holding-.patch \
- file://3.2.14/0053-TPM-Zero-buffer-whole-after-copying-to-userspace.patch \
- file://3.2.14/0054-PM-Domains-Fix-handling-of-wakeup-devices-during-sys.patch \
- file://3.2.14/0055-bootmem-sparsemem-remove-limit-constraint-in-alloc_b.patch \
- file://3.2.14/0056-hugetlbfs-avoid-taking-i_mutex-from-hugetlbfs_read.patch \
- file://3.2.14/0057-ASoC-fsl-p1022ds-tell-the-WM8776-codec-driver-that-i.patch \
- file://3.2.14/0058-ASoC-pxa-ssp-atomically-set-stream-active-masks.patch \
- file://3.2.14/0059-tcm_loop-Set-residual-field-for-SCSI-commands.patch \
- file://3.2.14/0060-iscsi-target-Fix-iscsit_alloc_buffs-failure-cases.patch \
- file://3.2.14/0061-iscsi-target-Fix-dynamic-explict-NodeACL-pointer-ref.patch \
- file://3.2.14/0062-ALSA-hda-fix-printing-of-high-HDMI-sample-rates.patch \
- file://3.2.14/0063-usb-gadget-fix-a-section-mismatch-when-compiling-g_f.patch \
- file://3.2.14/0064-udlfb-remove-sysfs-framebuffer-device-with-USB-.disc.patch \
- file://3.2.14/0065-tcm_fc-Fix-fc_exch-memory-leak-in-ft_send_resp_statu.patch \
- file://3.2.14/0066-md-bitmap-ensure-to-load-bitmap-when-creating-via-sy.patch \
- file://3.2.14/0067-md-don-t-set-md-arrays-to-readonly-on-shutdown.patch \
- file://3.2.14/0068-md-raid1-raid10-avoid-deadlock-during-resync-recover.patch \
- file://3.2.14/0069-md-fix-clearing-of-the-changed-flags-for-the-bad-blo.patch \
- file://3.2.14/0070-drm-i915-Only-clear-the-GPU-domains-upon-a-successfu.patch \
- file://3.2.14/0071-drm-radeon-Restrict-offset-for-legacy-hardware-curso.patch \
- file://3.2.14/0072-drm-radeon-kms-fix-analog-load-detection-on-DVI-I-co.patch \
- file://3.2.14/0073-drm-radeon-kms-add-connector-quirk-for-Fujitsu-D3003.patch \
- file://3.2.14/0074-target-Don-t-set-WBUS16-or-SYNC-bits-in-INQUIRY-resp.patch \
- file://3.2.14/0075-target-fix-use-after-free-in-target_report_luns.patch \
- file://3.2.14/0076-target-prevent-NULL-pointer-dereference-in-target_re.patch \
- file://3.2.14/0077-target-Fix-16-bit-target-ports-for-SET-TARGET-PORT-G.patch \
- file://3.2.14/0078-Bluetooth-Add-AR30XX-device-ID-on-Asus-laptops.patch \
- file://3.2.14/0079-HID-add-extra-hotkeys-in-Asus-AIO-keyboards.patch \
- file://3.2.14/0080-HID-add-more-hotkeys-in-Asus-AIO-keyboards.patch \
- file://3.2.14/0081-pata_legacy-correctly-mask-recovery-field-for-HT6560.patch \
- file://3.2.14/0082-firewire-ohci-fix-too-early-completion-of-IR-multich.patch \
- file://3.2.14/0083-KVM-x86-extend-struct-x86_emulate_ops-with-get_cpuid.patch \
- file://3.2.14/0084-KVM-x86-fix-missing-checks-in-syscall-emulation.patch \
- file://3.2.14/0085-NFS-Properly-handle-the-case-where-the-delegation-is.patch \
- file://3.2.14/0086-NFSv4-Return-the-delegation-if-the-server-returns-NF.patch \
- file://3.2.14/0087-xfs-fix-inode-lookup-race.patch \
- file://3.2.14/0088-CIFS-Respect-negotiated-MaxMpxCount.patch \
- file://3.2.14/0089-cifs-fix-issue-mounting-of-DFS-ROOT-when-redirecting.patch \
- file://3.2.14/0090-CIFS-Fix-a-spurious-error-in-cifs_push_posix_locks.patch \
- file://3.2.14/0091-UBI-fix-error-handling-in-ubi_scan.patch \
- file://3.2.14/0092-UBI-fix-eraseblock-picking-criteria.patch \
- file://3.2.14/0093-SUNRPC-We-must-not-use-list_for_each_entry_safe-in-r.patch \
- file://3.2.14/0094-usbnet-increase-URB-reference-count-before-usb_unlin.patch \
- file://3.2.14/0095-usbnet-don-t-clear-urb-dev-in-tx_complete.patch \
- file://3.2.14/0096-e1000e-Avoid-wrong-check-on-TX-hang.patch \
- file://3.2.14/0097-x86-32-Fix-endless-loop-when-processing-signals-for-.patch \
- file://3.2.14/0098-proc-ns-use-d_set_d_op-API-to-set-dentry-ops-in-proc.patch \
- file://3.2.14/0099-iommu-amd-Fix-section-warning-for-prealloc_protectio.patch \
- file://3.2.14/0100-sysctl-protect-poll-in-entries-that-may-go-away.patch \
- file://3.2.14/0101-hwmon-fam15h_power-Correct-sign-extension-of-running.patch \
- file://3.2.14/0102-lgdt330x-fix-signedness-error-in-i2c_read_demod_byte.patch \
- file://3.2.14/0103-pvrusb2-fix-7MHz-8MHz-DVB-T-tuner-support-for-HVR190.patch \
- file://3.2.14/0104-mxl111sf-fix-error-on-stream-stop-in-mxl111sf_ep6_st.patch \
- file://3.2.14/0105-NFSv4-Rate-limit-the-state-manager-warning-messages.patch \
- file://3.2.14/0106-PM-Hibernate-Enable-usermodehelpers-in-hibernate-err.patch \
- file://3.2.14/0107-jbd2-clear-BH_Delay-BH_Unwritten-in-journal_unmap_bu.patch \
- file://3.2.14/0108-ext4-ignore-EXT4_INODE_JOURNAL_DATA-flag-with-delall.patch \
- file://3.2.14/0109-ext4-fix-race-between-unwritten-extent-conversion-an.patch \
- file://3.2.14/0110-ext4-fix-race-between-sync-and-completed-io-work.patch \
- file://3.2.14/0111-ext4-check-for-zero-length-extent.patch \
- file://3.2.14/0112-vfs-fix-d_ancestor-case-in-d_materialize_unique.patch \
- file://3.2.14/0113-ARM-tegra-select-required-CPU-and-L2-errata-options.patch \
- file://3.2.14/0114-udf-Fix-deadlock-in-udf_release_file.patch \
- file://3.2.14/0115-gpio-omap-fix-_set_gpio_irqenable-implementation.patch \
- file://3.2.14/0116-gpio-davinci-fix-oops-on-unbanked-gpio-irq-request.patch \
- file://3.2.14/0117-gpio-davinci-fix-enabling-unbanked-GPIO-IRQs.patch \
- file://3.2.14/0118-dm-crypt-fix-mempool-deadlock.patch \
- file://3.2.14/0119-dm-crypt-add-missing-error-handling.patch \
- file://3.2.14/0120-dm-exception-store-fix-init-error-path.patch \
- file://3.2.14/0121-dm-persistent-data-fix-btree-rebalancing-after-remov.patch \
- file://3.2.14/0122-dm-thin-fix-stacked-bi_next-usage.patch \
- file://3.2.14/0123-backlight-fix-typo-in-tosa_lcd.c.patch \
- file://3.2.14/0124-xfs-Fix-oops-on-IO-error-during-xlog_recover_process.patch \
- file://3.2.14/0125-slub-Do-not-hold-slub_lock-when-calling-sysfs_slab_a.patch \
- file://3.2.14/0126-NFSv4-Fix-two-infinite-loops-in-the-mount-code.patch \
- file://3.2.14/0127-NFSv4.1-Fix-layoutcommit-error-handling.patch \
- file://3.2.14/0128-module-Remove-module-size-limit.patch \
- file://3.2.14/0129-Bluetooth-btusb-fix-bInterval-for-high-super-speed-i.patch \
- file://3.2.14/0130-drm-i915-suspend-fbdev-device-around-suspend-hiberna.patch \
- file://3.2.14/0131-Fix-pppol2tp-getsockname.patch \
- file://3.2.14/0132-ipv6-fix-incorrent-ipv6-ipsec-packet-fragment.patch \
- file://3.2.14/0133-net-bpf_jit-fix-BPF_S_LDX_B_MSH-compilation.patch \
- file://3.2.14/0134-net-fix-a-potential-rcu_read_lock-imbalance-in-rt6_f.patch \
- file://3.2.14/0135-net-fix-napi_reuse_skb-skb-reserve.patch \
- file://3.2.14/0136-Remove-printk-from-rds_sendmsg.patch \
- file://3.2.14/0137-sky2-override-for-PCI-legacy-power-management.patch \
- file://3.2.14/0138-xfrm-Access-the-replay-notify-functions-via-the-regi.patch \
- file://3.2.14/0139-lockd-fix-arg-parsing-for-grace_period-and-timeout.patch \
- file://3.2.14/0140-x86-tsc-Skip-refined-tsc-calibration-on-systems-with.patch \
- file://3.2.14/0141-x86-tls-Off-by-one-limit-check.patch \
- file://3.2.14/0142-compat-use-sys_sendfile64-implementation-for-sendfil.patch \
- file://3.2.14/0143-rtc-Provide-flag-for-rtc-devices-that-don-t-support-.patch \
- file://3.2.14/0144-nfsd-don-t-allow-zero-length-strings-in-cache_parse.patch \
- file://3.2.14/0145-serial-sh-sci-fix-a-race-of-DMA-submit_tx-on-transfe.patch \
- file://3.2.14/0146-ASPM-Fix-pcie-devices-with-non-pcie-children.patch \
- file://3.2.14/0147-Linux-3.2.14.patch \
- file://3.2.15/0001-x86-bpf_jit-fix-a-bug-in-emitting-the-16-bit-immedia.patch \
- file://3.2.15/0002-tg3-Fix-5717-serdes-powerdown-problem.patch \
- file://3.2.15/0003-sky2-dont-overwrite-settings-for-PHY-Quick-link.patch \
- file://3.2.15/0004-rose_dev-fix-memcpy-bug-in-rose_set_mac_address.patch \
- file://3.2.15/0005-net-usb-cdc_eem-fix-mtu.patch \
- file://3.2.15/0006-Fix-non-TBI-PHY-access-a-bad-merge-undid-bug-fix-in-.patch \
- file://3.2.15/0007-ASoC-wm8994-Update-WM8994-DCS-calibration.patch \
- file://3.2.15/0008-mtd-ixp4xx-oops-in-ixp4xx_flash_probe.patch \
- file://3.2.15/0009-mtd-mips-lantiq-reintroduce-support-for-cmdline-part.patch \
- file://3.2.15/0010-mtd-nand-gpmi-use-correct-member-for-checking-NAND_B.patch \
- file://3.2.15/0011-mtd-sst25l-initialize-writebufsize.patch \
- file://3.2.15/0012-mtd-block2mtd-initialize-writebufsize.patch \
- file://3.2.15/0013-mtd-lart-initialize-writebufsize.patch \
- file://3.2.15/0014-mtd-m25p80-set-writebufsize.patch \
- file://3.2.15/0015-ACPI-Do-cpufreq-clamping-for-throttling-per-package-.patch \
- file://3.2.15/0016-PNPACPI-Fix-device-ref-leaking-in-acpi_pnp_match.patch \
- file://3.2.15/0017-ACPICA-Fix-regression-in-FADT-revision-checks.patch \
- file://3.2.15/0018-modpost-fix-ALL_INIT_DATA_SECTIONS.patch \
- file://3.2.15/0019-genirq-Adjust-irq-thread-affinity-on-IRQ_SET_MASK_OK.patch \
- file://3.2.15/0020-tracing-Fix-ftrace-stack-trace-entries.patch \
- file://3.2.15/0021-tracing-Fix-ent_size-in-trace-output.patch \
- file://3.2.15/0022-m68k-mac-Add-missing-platform-check-before-registeri.patch \
- file://3.2.15/0023-mac80211-fix-possible-tid_rx-reorder_timer-use-after.patch \
- file://3.2.15/0024-rtlwifi-rtl8192ce-rtl8192cu-rtl8192de-Fix-low-gain-s.patch \
- file://3.2.15/0025-drm-Validate-requested-virtual-size-against-allocate.patch \
- file://3.2.15/0026-drm-radeon-kms-fix-fans-after-resume.patch \
- file://3.2.15/0027-drm-i915-no-lvds-quirk-on-MSI-DC500.patch \
- file://3.2.15/0028-drm-i915-Sanitize-BIOS-debugging-bits-from-PIPECONF.patch \
- file://3.2.15/0029-drm-i915-Add-lock-on-drm_helper_resume_force_mode.patch \
- file://3.2.15/0030-drm-i915-quirk-away-broken-OpRegion-VBT.patch \
- file://3.2.15/0031-r8169-runtime-resume-before-shutdown.patch \
- file://3.2.15/0032-target-Fix-unsupported-WRITE_SAME-sense-payload.patch \
- file://3.2.15/0033-kgdb-debug_core-pass-the-breakpoint-struct-instead-o.patch \
- file://3.2.15/0034-kgdbts-Fix-kernel-oops-with-CONFIG_DEBUG_RODATA.patch \
- file://3.2.15/0035-kgdbts-1-of-2-fix-single-step-awareness-to-work-corr.patch \
- file://3.2.15/0036-kgdbts-2-of-2-fix-single-step-awareness-to-work-corr.patch \
- file://3.2.15/0037-x86-kgdb-Fix-DEBUG_RODATA-limitation-using-text_poke.patch \
- file://3.2.15/0038-CIFS-Fix-VFS-lock-usage-for-oplocked-files.patch \
- file://3.2.15/0039-ARM-tegra-remove-Tegra30-errata-from-MACH_TEGRA_DT.patch \
- file://3.2.15/0040-mmc-sdhci-dove-Fix-compile-error-by-including-module.patch \
- file://3.2.15/0041-mmc-atmel-mci-correct-data-timeout-computation.patch \
- file://3.2.15/0042-tcm_fc-Add-abort-flag-for-gracefully-handling-exchan.patch \
- file://3.2.15/0043-tcm_fc-Do-not-free-tpg-structure-during-wq-allocatio.patch \
- file://3.2.15/0044-sysctl-fix-write-access-to-dmesg_restrict-kptr_restr.patch \
- file://3.2.15/0045-modpost-Fix-modpost-license-checking-of-vmlinux.o.patch \
- file://3.2.15/0046-x86-PCI-use-host-bridge-_CRS-info-on-MSI-MS-7253.patch \
- file://3.2.15/0047-x86-PCI-do-not-tie-MSI-MS-7253-use_crs-quirk-to-BIOS.patch \
- file://3.2.15/0048-TOMOYO-Fix-mount-flags-checking-order.patch \
- file://3.2.15/0049-Revert-x86-ioapic-Add-register-level-checks-to-detec.patch \
- file://3.2.15/0050-acer-wmi-No-wifi-rfkill-on-Sony-machines.patch \
- file://3.2.15/0051-Fix-length-of-buffer-copied-in-__nfs4_get_acl_uncach.patch \
- file://3.2.15/0052-sched-x86-Fix-overflow-in-cyc2ns_offset.patch \
- file://3.2.15/0053-mfd-Clear-twl6030-IRQ-status-register-only-once.patch \
- file://3.2.15/0054-USB-Add-Motorola-Rokr-E6-Id-to-the-USBNet-driver-zau.patch \
- file://3.2.15/0055-ioat-fix-size-of-completion-for-Xen.patch \
- file://3.2.15/0056-ASoC-ak4642-fixup-mute-needs-1-step.patch \
- file://3.2.15/0057-cred-copy_process-should-clear-child-replacement_ses.patch \
- file://3.2.15/0058-iommu-amd-Make-sure-IOMMU-interrupts-are-re-enabled-.patch \
- file://3.2.15/0059-Bluetooth-Fix-l2cap-conn-failures-for-ssp-devices.patch \
- file://3.2.15/0060-Linux-3.2.15.patch \
- file://3.2.16/0001-drm-i915-mask-transcoder-select-bits-before-setting-.patch \
- file://3.2.16/0002-drm-radeon-kms-fix-DVO-setup-on-some-r4xx-chips.patch \
- file://3.2.16/0003-drm-i915-ringbuffer-Exclude-last-2-cachlines-of-ring.patch \
- file://3.2.16/0004-drm-radeon-only-add-the-mm-i2c-bus-if-the-hw_i2c-mod.patch \
- file://3.2.16/0005-drm-i915-properly-compute-dp-dithering-for-user-crea.patch \
- file://3.2.16/0006-drm-i915-make-rc6-module-parameter-read-only.patch \
- file://3.2.16/0007-rtlwifi-Add-missing-DMA-buffer-unmapping-for-PCI-dri.patch \
- file://3.2.16/0008-ARM-7379-1-DT-fix-atags_to_fdt-second-call-site.patch \
- file://3.2.16/0009-ARM-7384-1-ThumbEE-Disable-userspace-TEEHBR-access-f.patch \
- file://3.2.16/0010-md-bitmap-prevent-bitmap_daemon_work-running-while-i.patch \
- file://3.2.16/0011-Bluetooth-uart-ldisc-Fix-memory-leak.patch \
- file://3.2.16/0012-Bluetooth-hci_ldisc-fix-NULL-pointer-dereference-on-.patch \
- file://3.2.16/0013-ext4-address-scalability-issue-by-removing-extent-ca.patch \
- file://3.2.16/0014-ia64-fix-futex_atomic_cmpxchg_inatomic.patch \
- file://3.2.16/0015-drivers-rtc-rtc-pl031.c-enable-clock-on-all-ST-varia.patch \
- file://3.2.16/0016-hugetlb-fix-race-condition-in-hugetlb_fault.patch \
- file://3.2.16/0017-staging-iio-hmc5843-Fix-crash-in-probe-function.patch \
- file://3.2.16/0018-tty-serial-altera_uart-Check-for-NULL-platform_data-.patch \
- file://3.2.16/0019-sparc64-Eliminate-obsolete-__handle_softirq-function.patch \
- file://3.2.16/0020-sparc64-Fix-bootup-crash-on-sun4v.patch \
- file://3.2.16/0021-cciss-Initialize-scsi-host-max_sectors-for-tape-driv.patch \
- file://3.2.16/0022-cciss-Fix-scsi-tape-io-with-more-than-255-scatter-ga.patch \
- file://3.2.16/0023-video-uvesafb-Fix-oops-that-uvesafb-try-to-execute-N.patch \
- file://3.2.16/0024-nohz-Fix-stale-jiffies-update-in-tick_nohz_restart.patch \
- file://3.2.16/0025-pch_uart-Fix-MSI-setting-issue.patch \
- file://3.2.16/0026-USB-serial-fix-race-between-probe-and-open.patch \
- file://3.2.16/0027-USB-pl2303-fix-DTR-RTS-being-raised-on-baud-rate-cha.patch \
- file://3.2.16/0028-USB-option-re-add-NOVATELWIRELESS_PRODUCT_HSPA_HIGHS.patch \
- file://3.2.16/0029-USB-ftdi_sio-fix-status-line-change-handling-for-TIO.patch \
- file://3.2.16/0030-USB-ftdi_sio-fix-race-condition-in-TIOCMIWAIT-and-ab.patch \
- file://3.2.16/0031-USB-sierra-add-support-for-Sierra-Wireless-MC7710.patch \
- file://3.2.16/0032-USB-don-t-clear-urb-dev-in-scatter-gather-library.patch \
- file://3.2.16/0033-USB-don-t-ignore-suspend-errors-for-root-hubs.patch \
- file://3.2.16/0034-xhci-don-t-re-enable-IE-constantly.patch \
- file://3.2.16/0035-xhci-Don-t-write-zeroed-pointers-to-xHC-registers.patch \
- file://3.2.16/0036-xhci-Restore-event-ring-dequeue-pointer-on-resume.patch \
- file://3.2.16/0037-USB-fix-bug-of-device-descriptor-got-from-superspeed.patch \
- file://3.2.16/0038-xHCI-add-XHCI_RESET_ON_RESUME-quirk-for-VIA-xHCI-hos.patch \
- file://3.2.16/0039-xHCI-Correct-the-define-XHCI_LEGACY_DISABLE_SMI.patch \
- file://3.2.16/0040-fix-tlb-flushing-for-page-table-pages.patch \
- file://3.2.16/0041-serial-PL011-clear-pending-interrupts.patch \
- file://3.2.16/0042-serial-PL011-move-interrupt-clearing.patch \
- file://3.2.16/0043-fcaps-clear-the-same-personality-flags-as-suid-when-.patch \
- file://3.2.16/0044-ath9k-fix-max-noise-floor-threshold.patch \
- file://3.2.16/0045-xhci-Fix-register-save-restore-order.patch \
- file://3.2.16/0046-Bluetooth-hci_core-fix-NULL-pointer-dereference-at-u.patch \
- file://3.2.16/0047-pch_gpio-Support-new-device-LAPIS-Semiconductor-ML78.patch \
- file://3.2.16/0048-gpio-Add-missing-spin_lock_init-in-gpio-pch-driver.patch \
- file://3.2.16/0049-usb-gadget-pch_udc-Fix-disconnect-issue.patch \
- file://3.2.16/0050-usb-gadget-pch_udc-Fix-wrong-return-value.patch \
- file://3.2.16/0051-usb-gadget-pch_udc-Fix-USB-suspend-issue.patch \
- file://3.2.16/0052-usb-gadget-pch_udc-Fix-usb-gadget-pch_udc-Fix-ether-.patch \
- file://3.2.16/0053-usb-gadget-pch_udc-Reduce-redundant-interrupt.patch \
- file://3.2.16/0054-ACPICA-Fix-to-allow-region-arguments-to-reference-ot.patch \
- file://3.2.16/0055-security-fix-compile-error-in-commoncap.c.patch \
- file://3.2.16/0056-pch_gbe-Do-not-abort-probe-on-bad-MAC.patch \
- file://3.2.16/0057-pch_gbe-memory-corruption-calling-pch_gbe_validate_o.patch \
- file://3.2.16/0058-pch_dma-Support-new-device-LAPIS-Semiconductor-ML783.patch \
- file://3.2.16/0059-spi-topcliff-pch-fix-Wuninitialized-warning.patch \
- file://3.2.16/0060-spi-topcliff-pch-Support-new-device-LAPIS-Semiconduc.patch \
- file://3.2.16/0061-Bluetooth-Adding-USB-device-13d3-3375-as-an-Atheros-.patch \
- file://3.2.16/0062-Bluetooth-Add-Atheros-maryann-PIDVID-support.patch \
- file://3.2.16/0063-Bluetooth-Add-support-for-BCM20702A0-0a5c-21e3.patch \
- file://3.2.16/0064-futex-Do-not-leak-robust-list-to-unprivileged-proces.patch \
- file://3.2.16/0065-drm-radeon-kms-fix-the-regression-of-DVI-connector-c.patch \
- file://3.2.16/0066-drm-radeon-disable-MSI-on-RV515.patch \
- file://3.2.16/0067-drm-radeon-fix-load-detect-on-rn50-with-hardcoded-ED.patch \
- file://3.2.16/0068-Linux-3.2.16.patch \
- file://3.2.17/0001-crypto-sha512-Fix-byte-counter-overflow-in-SHA-512.patch \
- file://3.2.17/0002-ALSA-hda-conexant-Don-t-set-HP-pin-control-bit-uncon.patch \
- file://3.2.17/0003-ALSA-hda-conexant-Set-up-the-missing-docking-station.patch \
- file://3.2.17/0004-ARM-clps711x-serial-driver-hungs-are-a-result-of-cal.patch \
- file://3.2.17/0005-ARM-OMAP1-DMTIMER-fix-broken-timer-clock-source-sele.patch \
- file://3.2.17/0006-mmc-fixes-for-eMMC-v4.5-discard-operation.patch \
- file://3.2.17/0007-mmc-fixes-for-eMMC-v4.5-sanitize-operation.patch \
- file://3.2.17/0008-mmc-unbreak-sdhci-esdhc-imx-on-i.MX25.patch \
- file://3.2.17/0009-xen-gntdev-do-not-set-VM_PFNMAP.patch \
- file://3.2.17/0010-xen-xenbus-Add-quirk-to-deal-with-misconfigured-back.patch \
- file://3.2.17/0011-USB-yurex-Remove-allocation-of-coherent-buffer-for-s.patch \
- file://3.2.17/0012-USB-yurex-Fix-missing-URB_NO_TRANSFER_DMA_MAP-flag-i.patch \
- file://3.2.17/0013-uwb-fix-use-of-del_timer_sync-in-interrupt.patch \
- file://3.2.17/0014-uwb-fix-error-handling.patch \
- file://3.2.17/0015-davinci_mdio-Fix-MDIO-timeout-check.patch \
- file://3.2.17/0016-mwifiex-update-pcie8766-scratch-register-addresses.patch \
- file://3.2.17/0017-brcm80211-smac-resume-transmit-fifo-upon-receiving-f.patch \
- file://3.2.17/0018-rc-core-set-mode-for-winbond-cir.patch \
- file://3.2.17/0019-drxk-Does-not-unlock-mutex-if-sanity-check-failed-in.patch \
- file://3.2.17/0020-cfg80211-fix-interface-combinations-check.patch \
- file://3.2.17/0021-Fix-modpost-failures-in-fedora-17.patch \
- file://3.2.17/0022-mm-fix-s390-BUG-by-__set_page_dirty_no_writeback-on-.patch \
- file://3.2.17/0023-md-fix-possible-corruption-of-array-metadata-on-shut.patch \
- file://3.2.17/0024-jbd2-use-GFP_NOFS-for-blkdev_issue_flush.patch \
- file://3.2.17/0025-USB-serial-cp210x-Fixed-usb_control_msg-timeout-valu.patch \
- file://3.2.17/0026-pch_uart-Fix-dma-channel-unallocated-issue.patch \
- file://3.2.17/0027-drivers-tty-amiserial.c-add-missing-tty_unlock.patch \
- file://3.2.17/0028-USB-sierra-avoid-QMI-wwan-interface-on-MC77xx.patch \
- file://3.2.17/0029-EHCI-fix-criterion-for-resuming-the-root-hub.patch \
- file://3.2.17/0030-EHCI-always-clear-the-STS_FLR-status-bit.patch \
- file://3.2.17/0031-USB-fix-deadlock-in-bConfigurationValue-attribute-me.patch \
- file://3.2.17/0032-usb-gadget-eliminate-NULL-pointer-dereference-bugfix.patch \
- file://3.2.17/0033-usb-musb-omap-fix-crash-when-musb-glue-omap-gets-ini.patch \
- file://3.2.17/0034-usb-musb-omap-fix-the-error-check-for-pm_runtime_get.patch \
- file://3.2.17/0035-PCI-Add-quirk-for-still-enabled-interrupts-on-Intel-.patch \
- file://3.2.17/0036-ext4-fix-endianness-breakage-in-ext4_split_extent_at.patch \
- file://3.2.17/0037-KVM-unmap-pages-from-the-iommu-when-slots-are-remove.patch \
- file://3.2.17/0038-dell-laptop-add-3-machines-that-has-touchpad-LED.patch \
- file://3.2.17/0039-dell-laptop-touchpad-LED-should-persist-its-status-a.patch \
- file://3.2.17/0040-Bluetooth-Add-support-for-Atheros-04ca-3005.patch \
- file://3.2.17/0041-Don-t-limit-non-nested-epoll-paths.patch \
- file://3.2.17/0042-spi-Fix-device-unregistration-when-unregistering-the.patch \
- file://3.2.17/0043-spi-mpc83xx-fix-NULL-pdata-dereference-bug.patch \
- file://3.2.17/0044-rt2800-Add-support-for-the-Fujitsu-Stylistic-Q550.patch \
- file://3.2.17/0045-rt2x00-Identify-rt2800usb-chipsets.patch \
- file://3.2.17/0046-nfsd-fix-b0rken-error-value-for-setattr-on-read-only.patch \
- file://3.2.17/0047-nfsd-fix-error-values-returned-by-nfsd4_lockt-when-n.patch \
- file://3.2.17/0048-nfsd-fix-endianness-breakage-in-TEST_STATEID-handlin.patch \
- file://3.2.17/0049-nfsd-fix-compose_entry_fh-failure-exits.patch \
- file://3.2.17/0050-btrfs-btrfs_root_readonly-broken-on-big-endian.patch \
- file://3.2.17/0051-ocfs2-l_next_free_req-breakage-on-big-endian.patch \
- file://3.2.17/0052-ocfs-rl_used-breakage-on-big-endian.patch \
- file://3.2.17/0053-ocfs2-rl_count-endianness-breakage.patch \
- file://3.2.17/0054-ocfs2-e_leaf_clusters-endianness-breakage.patch \
- file://3.2.17/0055-lockd-fix-the-endianness-bug.patch \
- file://3.2.17/0056-usb-dwc3-ep0-increment-actual-on-bounced-ep0-case.patch \
- file://3.2.17/0057-net-fix-proc-net-dev-regression.patch \
- file://3.2.17/0058-nfsd-don-t-fail-unchecked-creates-of-non-special-fil.patch \
- file://3.2.17/0059-ppp-Don-t-stop-and-restart-queue-on-every-TX-packet.patch \
- file://3.2.17/0060-tcp-allow-splice-to-build-full-TSO-packets.patch \
- file://3.2.17/0061-sctp-Allow-struct-sctp_event_subscribe-to-grow-witho.patch \
- file://3.2.17/0062-bridge-Do-not-send-queries-on-multicast-group-leaves.patch \
- file://3.2.17/0063-ipv6-fix-array-index-in-ip6_mc_add_src.patch \
- file://3.2.17/0064-phonet-Check-input-from-user-before-allocating.patch \
- file://3.2.17/0065-bonding-properly-unset-current_arp_slave-on-slave-li.patch \
- file://3.2.17/0066-wimax-i2400m-prevent-a-possible-kernel-bug-due-to-mi.patch \
- file://3.2.17/0067-netlink-fix-races-after-skb-queueing.patch \
- file://3.2.17/0068-net-fix-a-race-in-sock_queue_err_skb.patch \
- file://3.2.17/0069-tcp-fix-tcp_rcv_rtt_update-use-of-an-unscaled-RTT-sa.patch \
- file://3.2.17/0070-net-allow-pskb_expand_head-to-get-maximum-tailroom.patch \
- file://3.2.17/0071-tcp-fix-tcp_trim_head.patch \
- file://3.2.17/0072-tcp-avoid-order-1-allocations-on-wifi-and-tx-path.patch \
- file://3.2.17/0073-atl1-fix-kernel-panic-in-case-of-DMA-errors.patch \
- file://3.2.17/0074-8139cp-set-intr-mask-after-its-handler-is-registered.patch \
- file://3.2.17/0075-net-smsc911x-fix-skb-handling-in-receive-path.patch \
- file://3.2.17/0076-net-ethernet-ks8851_mll-fix-rx-frame-buffer-overflow.patch \
- file://3.2.17/0077-net_sched-gred-Fix-oops-in-gred_dump-in-WRED-mode.patch \
- file://3.2.17/0078-net-usb-smsc75xx-fix-mtu.patch \
- file://3.2.17/0079-dummy-Add-ndo_uninit.patch \
- file://3.2.17/0080-tcp-fix-tcp_grow_window-for-large-incoming-frames.patch \
- file://3.2.17/0081-netns-do-not-leak-net_generic-data-on-failed-init.patch \
- file://3.2.17/0082-ksz884x-don-t-copy-too-much-in-netdev_set_mac_addres.patch \
- file://3.2.17/0083-net-ax25-Reorder-ax25_exit-to-remove-races.patch \
- file://3.2.17/0084-tcp-fix-TCP_MAXSEG-for-established-IPv6-passive-sock.patch \
- file://3.2.17/0085-nfs-Enclose-hostname-in-brackets-when-needed-in-nfs_.patch \
- file://3.2.17/0086-NFSv4-Ensure-that-the-LOCK-code-sets-exception-inode.patch \
- file://3.2.17/0087-NFSv4-Ensure-that-we-check-lock-exclusive-shared-typ.patch \
- file://3.2.17/0088-NFS-put-open-context-on-error-in-nfs_pagein_multi.patch \
- file://3.2.17/0089-NFS-put-open-context-on-error-in-nfs_flush_multi.patch \
- file://3.2.17/0090-x86-microcode-Fix-sysfs-warning-during-module-unload.patch \
- file://3.2.17/0091-x86-apic-APIC-code-touches-invalid-MSR-on-P5-class-m.patch \
- file://3.2.17/0092-Revert-autofs-work-around-unhappy-compat-problem-on-.patch \
- file://3.2.17/0093-xen-correctly-check-for-pending-events-when-restorin.patch \
- file://3.2.17/0094-xen-smp-Fix-crash-when-booting-with-ACPI-hotplug-CPU.patch \
- file://3.2.17/0095-ASoC-dapm-Ensure-power-gets-managed-for-line-widgets.patch \
- file://3.2.17/0096-ASoC-wm8994-Improve-sequencing-of-AIF-channel-enable.patch \
- file://3.2.17/0097-dmaengine-at_hdmac-remove-clear-on-read-in-atc_dosta.patch \
- file://3.2.17/0098-sched-Fix-OOPS-when-build_sched_domains-percpu-alloc.patch \
- file://3.2.17/0099-tracing-Fix-stacktrace-of-latency-tracers-irqsoff-an.patch \
- file://3.2.17/0100-hwmon-fam15h_power-fix-bogus-values-with-current-BIO.patch \
- file://3.2.17/0101-hwmon-fam15h_power-Fix-pci_device_id-array.patch \
- file://3.2.17/0102-dell-laptop-Terminate-quirks-list-properly.patch \
- file://3.2.17/0103-drm-radeon-kms-need-to-set-up-ss-on-DP-bridges-as-we.patch \
- file://3.2.17/0104-drm-i915-handle-input-output-sdvo-timings-separately.patch \
- file://3.2.17/0105-drm-i915-relative_constants_mode-race-fix.patch \
- file://3.2.17/0106-drm-i915-Force-sync-command-ordering-Gen6.patch \
- file://3.2.17/0107-drm-i915-Set-the-Stencil-Cache-eviction-policy-to-no.patch \
- file://3.2.17/0108-drm-i915-fix-integer-overflow-in-i915_gem_execbuffer.patch \
- file://3.2.17/0109-drm-i915-fix-integer-overflow-in-i915_gem_do_execbuf.patch \
- file://3.2.17/0110-nl80211-ensure-interface-is-up-in-various-APIs.patch \
- file://3.2.17/0111-ALSA-HDA-Add-external-mic-quirk-for-Asus-Zenbook-UX3.patch \
- file://3.2.17/0112-USB-cdc-wdm-fix-race-leading-leading-to-memory-corru.patch \
- file://3.2.17/0113-USB-EHCI-fix-crash-during-suspend-on-ASUS-computers.patch \
- file://3.2.17/0114-USB-gadget-storage-gadgets-send-wrong-error-code-for.patch \
- file://3.2.17/0115-usb-gadget-dummy-do-not-call-pullup-on-udc_stop.patch \
- file://3.2.17/0116-usb-gadget-uvc-uvc_request_data-length-field-must-be.patch \
- file://3.2.17/0117-pipes-add-a-packetized-pipe-mode-for-writing.patch \
- file://3.2.17/0118-autofs-make-the-autofsv5-packet-file-descriptor-use-.patch \
- file://3.2.17/0119-ARM-7396-1-errata-only-handle-ARM-erratum-326103-on-.patch \
- file://3.2.17/0120-ARM-7397-1-l2x0-only-apply-workaround-for-erratum-75.patch \
- file://3.2.17/0121-ARM-7398-1-l2x0-only-write-to-debug-registers-on-PL3.patch \
- file://3.2.17/0122-ARM-7403-1-tls-remove-covert-channel-via-TPIDRURW.patch \
- file://3.2.17/0123-ARM-7406-1-hotplug-copy-the-affinity-mask-when-force.patch \
- file://3.2.17/0124-libsas-fix-sas_find_bcast_phy-in-the-presence-of-vac.patch \
- file://3.2.17/0125-libsas-fix-false-positive-device-attached-conditions.patch \
- file://3.2.17/0126-efi-Add-new-variable-attributes.patch \
- file://3.2.17/0127-efi-Validate-UEFI-boot-variables.patch \
- file://3.2.17/0128-PM-Hibernate-fix-the-number-of-pages-used-for-hibern.patch \
- file://3.2.17/0129-drm-i915-enable-dip-before-writing-data-on-gen4.patch \
- file://3.2.17/0130-sched-Fix-nohz-load-accounting-again.patch \
- file://3.2.17/0131-efivars-Improve-variable-validation.patch \
- file://3.2.17/0132-fs-cifs-fix-parsing-of-dfs-referrals.patch \
- file://3.2.17/0133-Fix-__read_seqcount_begin-to-use-ACCESS_ONCE-for-seq.patch \
- file://3.2.17/0134-hwmon-coretemp-Increase-CPU-core-limit.patch \
- file://3.2.17/0135-nouveau-initialise-has_optimus-variable.patch \
- file://3.2.17/0136-hwmon-coretemp-fix-oops-on-cpu-unplug.patch \
- file://3.2.17/0137-libata-skip-old-error-history-when-counting-probe-tr.patch \
- file://3.2.17/0138-b43-only-reload-config-after-successful-initializati.patch \
- file://3.2.17/0139-i2c-pnx-Disable-clk-in-suspend.patch \
- file://3.2.17/0140-ipw2200-Fix-race-condition-in-the-command-completion.patch \
- file://3.2.17/0141-mac80211-fix-AP-mode-EAP-tx-for-VLAN-stations.patch \
- file://3.2.17/0142-rtlwifi-Fix-oops-on-unload.patch \
- file://3.2.17/0143-wl1251-fix-crash-on-remove-due-to-premature-kfree.patch \
- file://3.2.17/0144-wl1251-fix-crash-on-remove-due-to-leftover-work-item.patch \
- file://3.2.17/0145-iwlwifi-do-not-nulify-ctx-vif-on-reset.patch \
- file://3.2.17/0146-iwlwifi-fix-hardware-queue-programming.patch \
- file://3.2.17/0147-hfsplus-Fix-potential-buffer-overflows.patch \
- file://3.2.17/0148-ASoC-tlv312aic23-unbreak-resume.patch \
- file://3.2.17/0149-asm-generic-Use-__BITS_PER_LONG-in-statfs.h.patch \
- file://3.2.17/0150-x86-relocs-Remove-an-unused-variable.patch \
- file://3.2.17/0151-ARM-7410-1-Add-extra-clobber-registers-for-assembly-.patch \
- file://3.2.17/0152-ARM-7414-1-SMP-prevent-use-of-the-console-when-using.patch \
- file://3.2.17/0153-drm-i915-disable-sdvo-hotplug-on-i945g-gm.patch \
- file://3.2.17/0154-drm-i915-Do-no-set-Stencil-Cache-eviction-LRA-w-a-on.patch \
- file://3.2.17/0155-xen-pte-Fix-crashes-when-trying-to-see-non-existent-.patch \
- file://3.2.17/0156-xen-pci-don-t-use-PCI-BIOS-service-for-configuration.patch \
- file://3.2.17/0157-percpu-x86-don-t-use-PMD_SIZE-as-embedded-atom_size-.patch \
- file://3.2.17/0158-iwlagn-allow-up-to-uCode-API-6-for-6000-devices.patch \
- file://3.2.17/0159-iwlwifi-use-correct-released-ucode-version.patch \
- file://3.2.17/0160-iwlwifi-use-6000G2B-for-6030-device-series.patch \
- file://3.2.17/0161-exit_signal-simplify-the-we-have-changed-execution-d.patch \
- file://3.2.17/0162-exit_signal-fix-the-parent-has-changed-security-doma.patch \
- file://3.2.17/0163-staging-r8712u-Fix-regression-caused-by-commit-8c213.patch \
- file://3.2.17/0164-smsc95xx-mark-link-down-on-startup-and-let-PHY-inter.patch \
- file://3.2.17/0165-Linux-3.2.17.patch \
- file://3.2.18/0001-regulator-Fix-the-logic-to-ensure-new-voltage-settin.patch \
- file://3.2.18/0002-ARM-OMAP-Revert-ARM-OMAP-ctrl-Fix-CONTROL_DSIPHY-reg.patch \
- file://3.2.18/0003-ALSA-echoaudio-Remove-incorrect-part-of-assertion.patch \
- file://3.2.18/0004-ARM-orion5x-Fix-GPIO-enable-bits-for-MPP9.patch \
- file://3.2.18/0005-ALSA-HDA-Lessen-CPU-usage-when-waiting-for-chip-to-r.patch \
- file://3.2.18/0006-percpu-pcpu_embed_first_chunk-should-free-unused-par.patch \
- file://3.2.18/0007-hugetlb-prevent-BUG_ON-in-hugetlb_fault-hugetlb_cow.patch \
- file://3.2.18/0008-namespaces-pid_ns-fix-leakage-on-fork-failure.patch \
- file://3.2.18/0009-mm-nobootmem-fix-sign-extend-problem-in-__free_pages.patch \
- file://3.2.18/0010-asix-Fix-tx-transfer-padding-for-full-speed-USB.patch \
- file://3.2.18/0011-netem-fix-possible-skb-leak.patch \
- file://3.2.18/0012-net-In-unregister_netdevice_notifier-unregister-the-.patch \
- file://3.2.18/0013-net-l2tp-unlock-socket-lock-before-returning-from-l2.patch \
- file://3.2.18/0014-sky2-propogate-rx-hash-when-packet-is-copied.patch \
- file://3.2.18/0015-sky2-fix-receive-length-error-in-mixed-non-VLAN-VLAN.patch \
- file://3.2.18/0016-sungem-Fix-WakeOnLan.patch \
- file://3.2.18/0017-tg3-Avoid-panic-from-reserved-statblk-field-access.patch \
- file://3.2.18/0018-tcp-fix-infinite-cwnd-in-tcp_complete_cwr.patch \
- file://3.2.18/0019-tcp-change-tcp_adv_win_scale-and-tcp_rmem-2.patch \
- file://3.2.18/0020-brcm80211-smac-pass-missing-argument-to-brcms_b_mute.patch \
- file://3.2.18/0021-phy-icplus-fix-Auto-Power-Saving-in-ip101a_config_in.patch \
- file://3.2.18/0022-NFSv4-Revalidate-uid-gid-after-open.patch \
- file://3.2.18/0023-target-Drop-incorrect-se_lun_acl-release-for-dynamic.patch \
- file://3.2.18/0024-marvell-cam-fix-an-ARM-build-error.patch \
- file://3.2.18/0025-rc-Postpone-ISR-registration.patch \
- file://3.2.18/0026-cdc_ether-Ignore-bogus-union-descriptor-for-RNDIS-de.patch \
- file://3.2.18/0027-jffs2-Fix-lock-acquisition-order-bug-in-gc-path.patch \
- file://3.2.18/0028-s5p-fimc-Fix-locking-in-subdev-set_crop-op.patch \
- file://3.2.18/0029-dm-mpath-check-if-scsi_dh-module-already-loaded-befo.patch \
- file://3.2.18/0030-sparc64-Do-not-clobber-g2-in-xcall_fetch_glob_regs.patch \
- file://3.2.18/0031-gpio-Add-missing-spin_lock_init-in-gpio-ml-ioh-drive.patch \
- file://3.2.18/0032-spi-topcliff-pch-Modify-pci-bus-number-dynamically-t.patch \
- file://3.2.18/0033-spi-topcliff-pch-Fix-issue-for-transmitting-over-4KB.patch \
- file://3.2.18/0034-spi-topcliff-pch-supports-a-spi-mode-setup-and-bit-o.patch \
- file://3.2.18/0035-spi-topcliff-pch-add-recovery-processing-in-case-wai.patch \
- file://3.2.18/0036-ext4-avoid-deadlock-on-sync-mounted-FS-w-o-journal.patch \
- file://3.2.18/0037-ia64-Add-accept4-syscall.patch \
- file://3.2.18/0038-brcm80211-smac-fix-endless-retry-of-A-MPDU-transmiss.patch \
- file://3.2.18/0039-ARM-7417-1-vfp-ensure-preemption-is-disabled-when-en.patch \
- file://3.2.18/0040-target-Fix-SPC-2-RELEASE-bug-for-multi-session-iSCSI.patch \
- file://3.2.18/0041-crypto-mv_cesa-requires-on-CRYPTO_HASH-to-build.patch \
- file://3.2.18/0042-ALSA-hda-idt-Fix-power-map-for-speaker-pins-with-som.patch \
- file://3.2.18/0043-ASoC-wm8994-Fix-AIF2ADC-power-down.patch \
- file://3.2.18/0044-usbnet-fix-skb-traversing-races-during-unlink-v2.patch \
- file://3.2.18/0045-cdc_ether-add-Novatel-USB551L-device-IDs-for-FLAG_WW.patch \
- file://3.2.18/0046-ARM-prevent-VM_GROWSDOWN-mmaps-extending-below-FIRST.patch \
- file://3.2.18/0047-arch-tile-apply-commit-74fca9da0-to-the-compat-signa.patch \
- file://3.2.18/0048-MD-Add-del_timer_sync-to-mddev_suspend-fix-nasty-pan.patch \
- file://3.2.18/0049-target-Fix-bug-in-handling-of-FILEIO-block_device-re.patch \
- file://3.2.18/0050-tcp-do_tcp_sendpages-must-try-to-push-data-out-on-oo.patch \
- file://3.2.18/0051-e1000-Prevent-reset-task-killing-itself.patch \
- file://3.2.18/0052-mtd-map.h-fix-arm-cross-build-failure.patch \
- file://3.2.18/0053-stmmac-Fix-compilation-error-in-mmc_core.c.patch \
- file://3.2.18/0054-pktgen-fix-crash-at-module-unload.patch \
- file://3.2.18/0055-pktgen-fix-module-unload-for-good.patch \
- file://3.2.18/0056-Linux-3.2.18.patch \
- file://3.2.19/0001-KVM-mmu_notifier-Flush-TLBs-before-releasing-mmu_loc.patch \
- file://3.2.19/0002-KVM-Ensure-all-vcpus-are-consistent-with-in-kernel-i.patch \
- file://3.2.19/0003-KVM-lock-slots_lock-around-device-assignment.patch \
- file://3.2.19/0004-KVM-nVMX-Fix-erroneous-exception-bitmap-check.patch \
- file://3.2.19/0005-KVM-VMX-vmx_set_cr0-expects-kvm-srcu-locked.patch \
- file://3.2.19/0006-KVM-s390-do-store-status-after-handling-STOP_ON_STOP.patch \
- file://3.2.19/0007-KVM-s390-Sanitize-fpc-registers-for-KVM_SET_FPU.patch \
- file://3.2.19/0008-bio-don-t-overflow-in-bio_get_nr_vecs.patch \
- file://3.2.19/0009-bio-allocation-failure-due-to-bio_get_nr_vecs.patch \
- file://3.2.19/0010-block-fix-buffer-overflow-when-printing-partition-UU.patch \
- file://3.2.19/0011-fix-PA1.1-oops-on-boot.patch \
- file://3.2.19/0012-fix-crash-in-flush_icache_page_asm-on-PA1.1.patch \
- file://3.2.19/0013-fix-panic-on-prefetch-NULL-on-PA7300LC.patch \
- file://3.2.19/0014-arch-tile-Kconfig-remove-pointless-M386-test.patch \
- file://3.2.19/0015-tilegx-enable-SYSCALL_WRAPPERS-support.patch \
- file://3.2.19/0016-mtd-sm_ftl-fix-typo-in-major-number.patch \
- file://3.2.19/0017-hpsa-Fix-problem-with-MSA2xxx-devices.patch \
- file://3.2.19/0018-SELinux-if-sel_make_bools-errors-don-t-leave-inconsi.patch \
- file://3.2.19/0019-cfg80211-warn-if-db.txt-is-empty-with-CONFIG_CFG8021.patch \
- file://3.2.19/0020-mpt2sas-Fix-for-panic-happening-because-of-improper-.patch \
- file://3.2.19/0021-isdn-gigaset-ratelimit-CAPI-message-dumps.patch \
- file://3.2.19/0022-isdn-gigaset-fix-CAPI-disconnect-B3-handling.patch \
- file://3.2.19/0023-isdn-gigaset-improve-error-handling-querying-firmwar.patch \
- file://3.2.19/0024-KEYS-Use-the-compat-keyctl-syscall-wrapper-on-Sparc6.patch \
- file://3.2.19/0025-IB-core-Fix-mismatch-between-locked-and-pinned-pages.patch \
- file://3.2.19/0026-regulator-core-Release-regulator-regulator-supplies-.patch \
- file://3.2.19/0027-iommu-Fix-off-by-one-in-dmar_get_fault_reason.patch \
- file://3.2.19/0028-RDMA-cxgb4-Always-wake-up-waiters-in-c4iw_peer_abort.patch \
- file://3.2.19/0029-RDMA-cxgb4-Drop-peer_abort-when-no-endpoint-found.patch \
- file://3.2.19/0030-s390-pfault-fix-task-state-race.patch \
- file://3.2.19/0031-isci-fix-oem-parameter-validation-on-single-controll.patch \
- file://3.2.19/0032-Fix-blocking-allocations-called-very-early-during-bo.patch \
- file://3.2.19/0033-vfs-make-AIO-use-the-proper-rw_verify_area-area-help.patch \
- file://3.2.19/0034-docs-update-HOWTO-for-2.6.x-3.x-versioning.patch \
- file://3.2.19/0035-drivers-staging-comedi-comedi_fops.c-add-missing-vfr.patch \
- file://3.2.19/0036-USB-move-usb_translate_errors-to-linux-usb.h.patch \
- file://3.2.19/0037-USB-cdc-wdm-sanitize-error-returns.patch \
- file://3.2.19/0038-USB-cdc-wdm-fix-memory-leak.patch \
- file://3.2.19/0039-8250_pci-fix-pch-uart-matching.patch \
- file://3.2.19/0040-usb-add-USB_QUIRK_RESET_RESUME-for-M-Audio-88es.patch \
- file://3.2.19/0041-usb-usbtest-two-super-speed-fixes-for-usbtest.patch \
- file://3.2.19/0042-8250.c-less-than-2400-baud-fix.patch \
- file://3.2.19/0043-usb-xhci-Handle-COMP_TX_ERR-for-isoc-tds.patch \
- file://3.2.19/0044-xhci-Avoid-dead-ports-when-CONFIG_USB_XHCI_HCD-n.patch \
- file://3.2.19/0045-xhci-Add-Lynx-Point-to-list-of-Intel-switchable-host.patch \
- file://3.2.19/0046-usb-gadget-fsl_udc_core-dTD-s-next-dtd-pointer-need-.patch \
- file://3.2.19/0047-Add-missing-call-to-uart_update_timeout.patch \
- file://3.2.19/0048-USB-ftdi-sio-add-support-for-Physik-Instrumente-E-86.patch \
- file://3.2.19/0049-USB-ffs-test-fix-length-argument-of-out-function-cal.patch \
- file://3.2.19/0050-HID-wiimote-Fix-IR-data-parser.patch \
- file://3.2.19/0051-usb-storage-unusual_devs-entry-for-Yarvik-PMP400-MP4.patch \
- file://3.2.19/0052-USB-ohci-at91-add-a-reset-function-to-fix-race-condi.patch \
- file://3.2.19/0053-HID-logitech-read-all-32-bits-of-report-type-bitfiel.patch \
- file://3.2.19/0054-USB-serial-ti_usb_3410_5052-Add-support-for-the-FRI2.patch \
- file://3.2.19/0055-USB-cdc-wdm-poll-must-return-POLLHUP-if-device-is-go.patch \
- file://3.2.19/0056-USB-cdc-wdm-add-debug-messages-on-cleanup.patch \
- file://3.2.19/0057-USB-cdc-wdm-cannot-use-dev_printk-when-device-is-gon.patch \
- file://3.2.19/0058-tty-Allow-uart_register-unregister-register.patch \
- file://3.2.19/0059-workqueue-skip-nr_running-sanity-check-in-worker_ent.patch \
- file://3.2.19/0060-xhci-Add-new-short-TX-quirk-for-Fresco-Logic-host.patch \
- file://3.2.19/0061-usbcore-enable-USB2-LPM-if-port-suspend-fails.patch \
- file://3.2.19/0062-perf-x86-Update-event-scheduling-constraints-for-AMD.patch \
- file://3.2.19/0063-USB-fix-resource-leak-in-xhci-power-loss-path.patch \
- file://3.2.19/0064-xhci-Reset-reserved-command-ring-TRBs-on-cleanup.patch \
- file://3.2.19/0065-USB-Remove-races-in-devio.c.patch \
- file://3.2.19/0066-md-using-GFP_NOIO-to-allocate-bio-for-flush-request.patch \
- file://3.2.19/0067-um-Implement-a-custom-pte_same-function.patch \
- file://3.2.19/0068-um-Fix-__swp_type.patch \
- file://3.2.19/0069-swap-don-t-do-discard-if-no-discard-option-added.patch \
- file://3.2.19/0070-Input-wacom-relax-Bamboo-stylus-ID-check.patch \
- file://3.2.19/0071-ahci-Detect-Marvell-88SE9172-SATA-controller.patch \
- file://3.2.19/0072-ARM-7365-1-drop-unused-parameter-from-flush_cache_us.patch \
- file://3.2.19/0073-ARM-7409-1-Do-not-call-flush_cache_user_range-with-m.patch \
- file://3.2.19/0074-sony-laptop-Enable-keyboard-backlight-by-default.patch \
- file://3.2.19/0075-init-don-t-try-mounting-device-as-nfs-root-unless-ty.patch \
- file://3.2.19/0076-memcg-free-spare-array-to-avoid-memory-leak.patch \
- file://3.2.19/0077-compat-Fix-RT-signal-mask-corruption-via-sigprocmask.patch \
- file://3.2.19/0078-ext3-Fix-error-handling-on-inode-bitmap-corruption.patch \
- file://3.2.19/0079-ext4-fix-error-handling-on-inode-bitmap-corruption.patch \
- file://3.2.19/0080-ACPI-PM-Add-Sony-Vaio-VPCCW29FX-to-nonvs-blacklist.patch \
- file://3.2.19/0081-hpsa-Add-IRQF_SHARED-back-in-for-the-non-MSI-X-inter.patch \
- file://3.2.19/0082-wake-up-s_wait_unfrozen-when-freeze_fs-fails.patch \
- file://3.2.19/0083-cifs-fix-revalidation-test-in-cifs_llseek.patch \
- file://3.2.19/0084-dl2k-Clean-up-rio_ioctl.patch \
- file://3.2.19/0085-OMAPDSS-VENC-fix-NULL-pointer-dereference-in-DSS2-VE.patch \
- file://3.2.19/0086-i2c-eg20t-change-timeout-value-50msec-to-1000msec.patch \
- file://3.2.19/0087-drm-i915-GEN7-Use-HW-scheduler-for-fixed-function-sh.patch \
- file://3.2.19/0088-mmc-sdio-avoid-spurious-calls-to-interrupt-handlers.patch \
- file://3.2.19/0089-smsusb-add-autodetection-support-for-USB-ID-2040-c0a.patch \
- file://3.2.19/0090-uvcvideo-Fix-ENUMINPUT-handling.patch \
- file://3.2.19/0091-drm-i915-Avoid-a-double-read-of-PCH_IIR-during-inter.patch \
- file://3.2.19/0092-b43legacy-Fix-error-due-to-MMIO-access-with-SSB-unpo.patch \
- file://3.2.19/0093-gpio-mpc8xxx-Prevent-NULL-pointer-deref-in-demux-han.patch \
- file://3.2.19/0094-drm-i915-don-t-clobber-the-pipe-param-in-sanitize_mo.patch \
- file://3.2.19/0095-spi-spi-fsl-spi-reference-correct-pdata-in-fsl_spi_c.patch \
- file://3.2.19/0096-xen-do-not-map-the-same-GSI-twice-in-PVHVM-guests.patch \
- file://3.2.19/0097-nouveau-nouveau_set_bo_placement-takes-TTM-flags.patch \
- file://3.2.19/0098-MCE-Fix-vm86-handling-for-32bit-mce-handler.patch \
- file://3.2.19/0099-x86-mce-Fix-check-for-processor-context-when-machine.patch \
- file://3.2.19/0100-tile-fix-bug-where-fls-0-was-not-returning-0.patch \
- file://3.2.19/0101-intel-iommu-Add-device-info-into-list-before-doing-c.patch \
- file://3.2.19/0102-ethtool-Null-terminate-filename-passed-to-ethtool_op.patch \
- file://3.2.19/0103-block-don-t-mark-buffers-beyond-end-of-disk-as-mappe.patch \
- file://3.2.19/0104-drivers-rtc-rtc-pl031.c-configure-correct-wday-for-2.patch \
- file://3.2.19/0105-rtlwifi-Preallocate-USB-read-buffers-and-eliminate-k.patch \
- file://3.2.19/0106-NFS4-fix-compile-warnings-in-nfs4proc.c.patch \
- file://3.2.19/0107-Avoid-reading-past-buffer-when-calling-GETACL.patch \
- file://3.2.19/0108-Avoid-beyond-bounds-copy-while-caching-ACL.patch \
- file://3.2.19/0109-i2c-tegra-notify-transfer-complete-after-clearing-st.patch \
- file://3.2.19/0110-i2c-davinci-Free-requested-IRQ-in-remove.patch \
- file://3.2.19/0111-x86-realmode-16-bit-real-mode-code-support-for-reloc.patch \
- file://3.2.19/0112-x86-relocs-Workaround-for-binutils-2.22.52.0.1-secti.patch \
- file://3.2.19/0113-x86-relocs-When-printing-an-error-say-relative-or-ab.patch \
- file://3.2.19/0114-x86-relocs-Build-clean-fix.patch \
- file://3.2.19/0115-x86-32-relocs-Whitelist-more-symbols-for-ld-bug-work.patch \
- file://3.2.19/0116-x86-relocs-Add-jiffies-and-jiffies_64-to-the-relativ.patch \
- file://3.2.19/0117-Linux-3.2.19.patch \
- file://3.2.20/0001-iommu-amd-Add-workaround-for-event-log-erratum.patch \
- file://3.2.20/0002-MIPS-BCM63XX-Add-missing-include-for-bcm63xx_gpio.h.patch \
- file://3.2.20/0003-cifs-Include-backup-intent-search-flags-during-searc.patch \
- file://3.2.20/0004-sunrpc-fix-loss-of-task-tk_status-after-rpc_delay-ca.patch \
- file://3.2.20/0005-exofs-Fix-CRASH-on-very-early-IO-errors.patch \
- file://3.2.20/0006-cifs-fix-oops-while-traversing-open-file-list-try-4.patch \
- file://3.2.20/0007-Fix-dm-multipath-starvation-when-scsi-host-is-busy.patch \
- file://3.2.20/0008-ixp4xx-fix-compilation-by-adding-gpiolib-support.patch \
- file://3.2.20/0009-drm-i915-properly-handle-interlaced-bit-for-sdvo-dtd.patch \
- file://3.2.20/0010-drm-i915-enable-vdd-when-switching-off-the-eDP-panel.patch \
- file://3.2.20/0011-drm-i915-Add-Clientron-E830-to-the-ignore-LVDS-list.patch \
- file://3.2.20/0012-drm-i915-Ignore-LVDS-on-hp-t5745-and-hp-st5747-thin-.patch \
- file://3.2.20/0013-drm-i915-no-lvds-quirk-for-HP-t5740e-Thin-Client.patch \
- file://3.2.20/0014-drm-i915-wait-for-a-vblank-to-pass-after-tv-detect.patch \
- file://3.2.20/0015-drm-i915-Update-GEN6_RP_CONTROL-definitions.patch \
- file://3.2.20/0016-drm-i915-always-use-RPNSWREQ-for-turbo-change-reques.patch \
- file://3.2.20/0017-solos-pci-Fix-DMA-support.patch \
- file://3.2.20/0018-microblaze-Do-not-select-GENERIC_GPIO-by-default.patch \
- file://3.2.20/0019-fix-boot-failure-on-32-bit-systems-caused-by-branch-.patch \
- file://3.2.20/0020-fix-TLB-fault-path-on-PA2.0-narrow-systems.patch \
- file://3.2.20/0021-iwlwifi-update-BT-traffic-load-states-correctly.patch \
- file://3.2.20/0022-iwlwifi-do-not-use-shadow-registers-by-default.patch \
- file://3.2.20/0023-wl1251-fix-oops-on-early-interrupt.patch \
- file://3.2.20/0024-NFSv4-Map-NFS4ERR_SHARE_DENIED-into-an-EACCES-error-.patch \
- file://3.2.20/0025-drm-radeon-fix-XFX-quirk.patch \
- file://3.2.20/0026-ath9k-fix-a-use-after-free-bug-when-ath_tx_setup_buf.patch \
- file://3.2.20/0027-mac80211-fix-ADDBA-declined-after-suspend-with-wowla.patch \
- file://3.2.20/0028-mm-fork-fix-overflow-in-vma-length-when-copying-mmap.patch \
- file://3.2.20/0029-mm-consider-all-swapped-back-pages-in-used-once-logi.patch \
- file://3.2.20/0030-hugetlb-fix-resv_map-leak-in-error-path.patch \
- file://3.2.20/0031-mm-vmalloc.c-change-void-into-explict-vm_struct.patch \
- file://3.2.20/0032-mm-fix-faulty-initialization-in-vmalloc_init.patch \
- file://3.2.20/0033-fix-scsi_wait_scan.patch \
- file://3.2.20/0034-mm-fix-vma_resv_map-NULL-pointer.patch \
- file://3.2.20/0035-x86-amd-xen-Avoid-NULL-pointer-paravirt-references.patch \
- file://3.2.20/0036-slub-fix-a-memory-leak-in-get_partial_node.patch \
- file://3.2.20/0037-ext4-force-ro-mount-if-ext4_setup_super-fails.patch \
- file://3.2.20/0038-ext4-disallow-hard-linked-directory-in-ext4_lookup.patch \
- file://3.2.20/0039-mtd-nand-fix-scan_read_raw_oob.patch \
- file://3.2.20/0040-vfs-increment-iversion-when-a-file-is-truncated.patch \
- file://3.2.20/0041-vfs-umount_tree-might-be-called-on-subtree-that-had-.patch \
- file://3.2.20/0042-ext4-add-missing-save_error_info-to-ext4_error.patch \
- file://3.2.20/0043-ALSA-usb-audio-fix-rate_list-memory-leak.patch \
- file://3.2.20/0044-ext4-add-ext4_mb_unload_buddy-in-the-error-path.patch \
- file://3.2.20/0045-ext4-remove-mb_groups-before-tearing-down-the-buddy_.patch \
- file://3.2.20/0046-drm-radeon-fix-bank-information-in-tiling-config.patch \
- file://3.2.20/0047-drm-radeon-properly-program-gart-on-rv740-juniper-cy.patch \
- file://3.2.20/0048-drm-radeon-fix-HD6790-HD6570-backend-programming.patch \
- file://3.2.20/0049-drm-ttm-Fix-spinlock-imbalance.patch \
- file://3.2.20/0050-drm-vmwgfx-Fix-nasty-write-past-alloced-memory-area.patch \
- file://3.2.20/0051-mtd-of_parts-fix-breakage-in-Kconfig.patch \
- file://3.2.20/0052-fec_mpc52xx-fix-timestamp-filtering.patch \
- file://3.2.20/0053-Bluetooth-btusb-Add-vendor-specific-ID-0a5c-21f3-for.patch \
- file://3.2.20/0054-Bluetooth-btusb-add-support-for-BCM20702A0-0a5c-21e6.patch \
- file://3.2.20/0055-Bluetooth-btusb-Add-USB-device-ID-0a5c-21e8.patch \
- file://3.2.20/0056-Bluetooth-btusb-typo-in-Broadcom-SoftSailing-id.patch \
- file://3.2.20/0057-Bluetooth-btusb-Add-vendor-specific-ID-0489-e042-for.patch \
- file://3.2.20/0058-Bluetooth-Add-support-for-Atheros-13d3-3362.patch \
- file://3.2.20/0059-Bluetooth-Add-support-for-AR3012-0cf3-e004.patch \
- file://3.2.20/0060-Add-Foxconn-Hon-Hai-IDs-for-btusb-module.patch \
- file://3.2.20/0061-Bluetooth-Add-support-for-Foxconn-Hon-Hai-AR5BBU22-0.patch \
- file://3.2.20/0062-drm-i915-Disable-FBC-on-SandyBridge.patch \
- file://3.2.20/0063-ipv4-Do-not-use-dead-fib_info-entries.patch \
- file://3.2.20/0064-ipv4-fix-the-rcu-race-between-free_fib_info-and-ip_r.patch \
- file://3.2.20/0065-set-fake_rtable-s-dst-to-NULL-to-avoid-kernel-Oops.patch \
- file://3.2.20/0066-ipv6-fix-incorrect-ipsec-fragment.patch \
- file://3.2.20/0067-l2tp-fix-oops-in-L2TP-IP-sockets-for-connect-AF_UNSP.patch \
- file://3.2.20/0068-r8169-missing-barriers.patch \
- file://3.2.20/0069-r8169-fix-early-queue-wake-up.patch \
- file://3.2.20/0070-r8169-fix-unsigned-int-wraparound-with-TSO.patch \
- file://3.2.20/0071-Revert-net-maintain-namespace-isolation-between-vlan.patch \
- file://3.2.20/0072-sctp-check-cached-dst-before-using-it.patch \
- file://3.2.20/0073-skb-avoid-unnecessary-reallocations-in-__skb_cow.patch \
- file://3.2.20/0074-xfrm-take-net-hdr-len-into-account-for-esp-payload-s.patch \
- file://3.2.20/0075-ACPI-battery-only-refresh-the-sysfs-files-when-perti.patch \
- file://3.2.20/0076-target-file-Use-O_DSYNC-by-default-for-FILEIO-backen.patch \
- file://3.2.20/0077-iommu-amd-Cache-pdev-pointer-to-root-bridge.patch \
- file://3.2.20/0078-drm-radeon-kms-add-new-Palm-Sumo-PCI-ids.patch \
- file://3.2.20/0079-drm-radeon-kms-add-new-BTC-PCI-ids.patch \
- file://3.2.20/0080-btree-fix-tree-corruption-in-btree_get_prev.patch \
- file://3.2.20/0081-kbuild-install-kernel-page-flags.h.patch \
- file://3.2.20/0082-asix-allow-full-size-8021Q-frames-to-be-received.patch \
- file://3.2.20/0083-ext4-don-t-trash-state-flags-in-EXT4_IOC_SETFLAGS.patch \
- file://3.2.20/0084-ext4-don-t-set-i_flags-in-EXT4_IOC_SETFLAGS.patch \
- file://3.2.20/0085-ext4-fix-the-free-blocks-calculation-for-ext3-file-s.patch \
- file://3.2.20/0086-Linux-3.2.20.patch \
- file://3.2.21/0001-drm-i915-Mark-the-ringbuffers-as-being-in-the-GTT-do.patch \
- file://3.2.21/0002-drm-i915-hold-forcewake-around-ring-hw-init.patch \
- file://3.2.21/0003-drm-i915-Unpin-the-flip-target-if-we-fail-to-queue-t.patch \
- file://3.2.21/0004-drm-i915-fix-up-ivb-plane-3-pageflips.patch \
- file://3.2.21/0005-char-agp-add-another-Ironlake-host-bridge.patch \
- file://3.2.21/0006-x86-uv-Fix-UV2-BAU-legacy-mode.patch \
- file://3.2.21/0007-powerpc-Fix-kernel-panic-during-kernel-module-load.patch \
- file://3.2.21/0008-drm-nouveau-determine-a-value-for-display_info.bpc-i.patch \
- file://3.2.21/0009-drm-nouveau-default-to-8bpc-for-non-LVDS-panels-if-E.patch \
- file://3.2.21/0010-drm-nouveau-disp-fix-dithering-not-being-enabled-on-.patch \
- file://3.2.21/0011-fuse-fix-stat-call-on-32-bit-platforms.patch \
- file://3.2.21/0012-x86-MCE-AMD-Make-APIC-LVT-thresholding-interrupt-opt.patch \
- file://3.2.21/0013-x86-amd-Re-enable-CPU-topology-extensions-in-case-BI.patch \
- file://3.2.21/0014-hwmon-fam15h_power-Increase-output-resolution.patch \
- file://3.2.21/0015-sched-Fix-the-relax_domain_level-boot-parameter.patch \
- file://3.2.21/0016-iwlwifi-don-t-mess-up-the-SCD-when-removing-a-key.patch \
- file://3.2.21/0017-hwrng-atmel-rng-fix-race-condition-leading-to-repeat.patch \
- file://3.2.21/0018-crypto-aesni-intel-fix-unaligned-cbc-decrypt-for-x86.patch \
- file://3.2.21/0019-xen-setup-filter-APERFMPERF-cpuid-feature-out.patch \
- file://3.2.21/0020-NFSv4.1-Fix-a-request-leak-on-the-back-channel.patch \
- file://3.2.21/0021-can-c_can-fix-BUG-echo_skb-is-occupied-during-transm.patch \
- file://3.2.21/0022-can-c_can-fix-an-interrupt-thrash-issue-with-c_can-d.patch \
- file://3.2.21/0023-can-c_can-fix-race-condition-in-c_can_open.patch \
- file://3.2.21/0024-ARM-i.MX53-Fix-PLL4-base-address.patch \
- file://3.2.21/0025-usb-musb_gadget-fix-crash-caused-by-dangling-pointer.patch \
- file://3.2.21/0026-mac80211-clean-up-remain-on-channel-on-interface-sto.patch \
- file://3.2.21/0027-rt2x00-use-atomic-variable-for-seqno.patch \
- file://3.2.21/0028-iwlwifi-disable-WoWLAN-if-CONFIG_PM_SLEEP.patch \
- file://3.2.21/0029-ASoC-wm8994-Ensure-all-AIFnCLK-events-are-run-from-t.patch \
- file://3.2.21/0030-ASoC-wm8994-Apply-volume-updates-with-clocks-enabled.patch \
- file://3.2.21/0031-iwlwifi-unregister-LEDs-if-mac80211-registration-fai.patch \
- file://3.2.21/0032-cfg80211-fix-interface-combinations-check.patch \
- file://3.2.21/0033-mpt2sas-Fix-unsafe-using-smp_processor_id-in-preempt.patch \
- file://3.2.21/0034-net-sierra_net-device-IDs-for-Aircard-320U.patch \
- file://3.2.21/0035-ARM-imx6-exit-coherency-when-shutting-down-a-cpu.patch \
- file://3.2.21/0036-ARM-i.MX-imx21ads-Fix-overlapping-static-i-o-mapping.patch \
- file://3.2.21/0037-NFSv4-Fix-unnecessary-delegation-returns-in-nfs4_do_.patch \
- file://3.2.21/0038-iwlwifi-use-correct-supported-firmware-for-6035-and-.patch \
- file://3.2.21/0039-iwlwifi-disable-the-buggy-chain-extension-feature-in.patch \
- file://3.2.21/0040-ALSA-hda-Add-codec-no_jack_detect-flag.patch \
- file://3.2.21/0041-ALSA-hda-add-support-for-Uniwill-ECS-M31EI-notebook.patch \
- file://3.2.21/0042-ALSA-hda-Suppress-auto-mute-feature-on-some-machines.patch \
- file://3.2.21/0043-ALSA-hda-Add-another-jack-detection-suppression-for-.patch \
- file://3.2.21/0044-ALSA-HDA-Pin-fixup-for-Zotac-Z68-motherboard.patch \
- file://3.2.21/0045-usb-cdc-wdm-Add-device-id-for-Huawei-3G-LTE-modems.patch \
- file://3.2.21/0046-USB-qcserial-Add-Sierra-Wireless-device-IDs.patch \
- file://3.2.21/0047-USB-ftdi-sio-Add-support-for-RT-Systems-USB-RTS01-se.patch \
- file://3.2.21/0048-USB-serial-cp210x-add-Optris-MS-Pro-usb-id.patch \
- file://3.2.21/0049-USB-serial-sierra-Add-support-for-Sierra-Wireless-Ai.patch \
- file://3.2.21/0050-USB-option-Updated-Huawei-K4605-has-better-id.patch \
- file://3.2.21/0051-USB-mct_u232-Fix-incorrect-TIOCMSET-return.patch \
- file://3.2.21/0052-USB-option-fix-port-data-abuse.patch \
- file://3.2.21/0053-USB-option-fix-memory-leak.patch \
- file://3.2.21/0054-USB-option-add-more-YUGA-device-ids.patch \
- file://3.2.21/0055-target-Return-error-to-initiator-if-SET-TARGET-PORT-.patch \
- file://3.2.21/0056-USB-add-NO_D3_DURING_SLEEP-flag-and-revert-151b61284.patch \
- file://3.2.21/0057-USB-serial-Enforce-USB-driver-and-USB-serial-driver-.patch \
- file://3.2.21/0058-xhci-Fix-invalid-loop-check-in-xhci_free_tt_info.patch \
- file://3.2.21/0059-xhci-Don-t-free-endpoints-in-xhci_mem_cleanup.patch \
- file://3.2.21/0060-xHCI-Increase-the-timeout-for-controller-save-restor.patch \
- file://3.2.21/0061-usb-PS3-EHCI-QH-read-work-around.patch \
- file://3.2.21/0062-USB-fix-PS3-EHCI-systems.patch \
- file://3.2.21/0063-usb-cdc-acm-fix-devices-not-unthrottled-on-open.patch \
- file://3.2.21/0064-USB-fix-gathering-of-interface-associations.patch \
- file://3.2.21/0065-swap-fix-shmem-swapping-when-more-than-8-areas.patch \
- file://3.2.21/0066-drm-radeon-add-some-additional-6xx-7xx-EG-register-i.patch \
- file://3.2.21/0067-Linux-3.2.21.patch \
- file://3.2.22/0001-staging-iio-ad7606-Re-add-missing-scale-attribute.patch \
- file://3.2.22/0002-Tools-hv-verify-origin-of-netlink-connector-message.patch \
- file://3.2.22/0003-edac-avoid-mce-decoding-crash-after-edac-driver-unlo.patch \
- file://3.2.22/0004-hwrng-atmel-rng-fix-data-valid-check.patch \
- file://3.2.22/0005-staging-r8712u-Add-new-USB-IDs.patch \
- file://3.2.22/0006-hwmon-applesmc-Limit-key-length-in-warning-messages.patch \
- file://3.2.22/0007-mm-pmd_read_atomic-fix-32bit-PAE-pmd-walk-vs-pmd_pop.patch \
- file://3.2.22/0008-thp-avoid-atomic64_read-in-pmd_read_atomic-for-32bit.patch \
- file://3.2.22/0009-nilfs2-ensure-proper-cache-clearing-for-gc-inodes.patch \
- file://3.2.22/0010-drm-i915-Finish-any-pending-operations-on-the-frameb.patch \
- file://3.2.22/0011-drm-i915-Remove-use-of-the-autoreported-ringbuffer-H.patch \
- file://3.2.22/0012-e1000e-Disable-ASPM-L1-on-82574.patch \
- file://3.2.22/0013-e1000e-Remove-special-case-for-82573-82574-ASPM-L1-d.patch \
- file://3.2.22/0014-drm-i915-Do-the-fallback-non-IRQ-wait-in-ring-thrott.patch \
- file://3.2.22/0015-staging-rts_pstor-Fix-possible-panic-by-NULL-pointer.patch \
- file://3.2.22/0016-gspca-core-Fix-buffers-staying-in-queued-state-after.patch \
- file://3.2.22/0017-smsusb-add-autodetection-support-for-USB-ID-2040-f5a.patch \
- file://3.2.22/0018-drm-edid-don-t-return-stack-garbage-from-supports_rb.patch \
- file://3.2.22/0019-drm-nouveau-fbcon-using-nv_two_heads-is-not-a-good-i.patch \
- file://3.2.22/0020-dm-thin-reinstate-missing-mempool_free-in-cell_relea.patch \
- file://3.2.22/0021-ath9k-Fix-a-WARNING-on-suspend-resume-with-IBSS.patch \
- file://3.2.22/0022-cfg80211-fix-potential-deadlock-in-regulatory.patch \
- file://3.2.22/0023-ath9k-Fix-softlockup-in-AR9485.patch \
- file://3.2.22/0024-can-c_can-precedence-error-in-c_can_chip_config.patch \
- file://3.2.22/0025-ath9k-fix-a-tx-rate-duration-calculation-bug.patch \
- file://3.2.22/0026-batman-adv-fix-skb-data-assignment.patch \
- file://3.2.22/0027-ARM-SAMSUNG-Should-check-for-IS_ERR-clk-instead-of-N.patch \
- file://3.2.22/0028-ath9k_hw-avoid-possible-infinite-loop-in-ar9003_get_.patch \
- file://3.2.22/0029-iwlwifi-remove-log_event-debugfs-file-debugging-is-d.patch \
- file://3.2.22/0030-ARM-SAMSUNG-Fix-for-S3C2412-EBI-memory-mapping.patch \
- file://3.2.22/0031-USB-option-add-id-for-Cellient-MEN-200.patch \
- file://3.2.22/0032-oprofile-perf-use-NR_CPUS-instead-or-nr_cpumask_bits.patch \
- file://3.2.22/0033-drm-i915-Refactor-the-deferred-PM_IIR-handling-into-.patch \
- file://3.2.22/0034-drm-i915-rip-out-the-PM_IIR-WARN.patch \
- file://3.2.22/0035-drm-i915-Fix-eDP-blank-screen-after-S3-resume-on-HP-.patch \
- file://3.2.22/0036-PM-Sleep-Prevent-waiting-forever-on-asynchronous-sus.patch \
- file://3.2.22/0037-x86-cpufeature-Rename-X86_FEATURE_DTS-to-X86_FEATURE.patch \
- file://3.2.22/0038-stable-Allow-merging-of-backports-for-serious-user-v.patch \
- file://3.2.22/0039-ALSA-hda-Add-Realtek-ALC280-codec-support.patch \
- file://3.2.22/0040-USB-option-Add-USB-ID-for-Novatel-Ovation-MC551.patch \
- file://3.2.22/0041-USB-CP210x-Add-10-Device-IDs.patch \
- file://3.2.22/0042-xen-netfront-teardown-the-device-before-unregisterin.patch \
- file://3.2.22/0043-can-flexcan-use-be32_to_cpup-to-handle-the-value-of-.patch \
- file://3.2.22/0044-acpi_pad-fix-power_saving-thread-deadlock.patch \
- file://3.2.22/0045-batman-adv-only-drop-packets-of-known-wifi-clients.patch \
- file://3.2.22/0046-Linux-3.2.22.patch \
- file://3.2.23/0001-splice-fix-racy-pipe-buffers-uses.patch \
- file://3.2.23/0002-umem-fix-up-unplugging.patch \
- file://3.2.23/0003-mwifiex-fix-11n-rx-packet-drop-issue.patch \
- file://3.2.23/0004-mwifiex-fix-WPS-eapol-handshake-failure.patch \
- file://3.2.23/0005-NFC-Prevent-multiple-buffer-overflows-in-NCI.patch \
- file://3.2.23/0006-ath9k-fix-dynamic-WEP-related-regression.patch \
- file://3.2.23/0007-NFC-Return-from-rawsock_release-when-sk-is-NULL.patch \
- file://3.2.23/0008-rtlwifi-rtl8192cu-New-USB-IDs.patch \
- file://3.2.23/0009-ath9k-enable-serialize_regmode-for-non-PCIE-AR9287.patch \
- file://3.2.23/0010-mac80211-correct-behaviour-on-unrecognised-action-fr.patch \
- file://3.2.23/0011-ASoC-tlv320aic3x-Fix-codec-pll-configure-bug.patch \
- file://3.2.23/0012-powerpc-xmon-Use-cpumask-iterator-to-avoid-warning.patch \
- file://3.2.23/0013-powerpc-kvm-sldi-should-be-sld.patch \
- file://3.2.23/0014-md-raid10-Don-t-try-to-recovery-unmatched-and-unused.patch \
- file://3.2.23/0015-md-raid5-Do-not-add-data_offset-before-call-to-is_ba.patch \
- file://3.2.23/0016-md-raid5-In-ops_run_io-inc-nr_pending-before-calling.patch \
- file://3.2.23/0017-md-raid10-fix-failure-when-trying-to-repair-a-read-e.patch \
- file://3.2.23/0018-drm-i915-kick-any-firmware-framebuffers-before-claim.patch \
- file://3.2.23/0019-dm-persistent-data-fix-shadow_info_leak-on-dm_tm_des.patch \
- file://3.2.23/0020-dm-persistent-data-handle-space-map-checker-creation.patch \
- file://3.2.23/0021-dm-persistent-data-fix-allocation-failure-in-space-m.patch \
- file://3.2.23/0022-ALSA-hda-Fix-power-map-regression-for-HP-dv6-co.patch \
- file://3.2.23/0023-tracing-change-CPU-ring-buffer-state-from-tracing_cp.patch \
- file://3.2.23/0024-mwifiex-fix-wrong-return-values-in-add_virtual_intf-.patch \
- file://3.2.23/0025-udf-Use-ret-instead-of-abusing-i-in-udf_load_logical.patch \
- file://3.2.23/0026-udf-Avoid-run-away-loop-when-partition-table-length-.patch \
- file://3.2.23/0027-udf-Fortify-loading-of-sparing-table.patch \
- file://3.2.23/0028-ARM-fix-rcu-stalls-on-SMP-platforms.patch \
- file://3.2.23/0029-net-sock-validate-data_len-before-allocating-skb-in-.patch \
- file://3.2.23/0030-cipso-handle-CIPSO-options-correctly-when-NetLabel-i.patch \
- file://3.2.23/0031-net-l2tp_eth-fix-kernel-panic-on-rmmod-l2tp_eth.patch \
- file://3.2.23/0032-l2tp-fix-a-race-in-l2tp_ip_sendmsg.patch \
- file://3.2.23/0033-sky2-fix-checksum-bit-management-on-some-chips.patch \
- file://3.2.23/0034-be2net-fix-a-race-in-be_xmit.patch \
- file://3.2.23/0035-dummy-fix-rcu_sched-self-detected-stalls.patch \
- file://3.2.23/0036-bonding-Fix-corrupted-queue_mapping.patch \
- file://3.2.23/0037-ethtool-allow-ETHTOOL_GSSET_INFO-for-users.patch \
- file://3.2.23/0038-netpoll-fix-netpoll_send_udp-bugs.patch \
- file://3.2.23/0039-ipv6-Move-ipv6-proc-file-registration-to-end-of-init.patch \
- file://3.2.23/0040-bridge-Assign-rtnl_link_ops-to-bridge-devices-create.patch \
- file://3.2.23/0041-Btrfs-run-delayed-directory-updates-during-log-repla.patch \
- file://3.2.23/0042-cifs-when-server-doesn-t-set-CAP_LARGE_READ_X-cap-de.patch \
- file://3.2.23/0043-ocfs2-clear-unaligned-io-flag-when-dio-fails.patch \
- file://3.2.23/0044-aio-make-kiocb-private-NUll-in-init_sync_kiocb.patch \
- file://3.2.23/0045-mtd-cafe_nand-fix-an-vs-mistake.patch \
- file://3.2.23/0046-mm-Hold-a-file-reference-in-madvise_remove.patch \
- file://3.2.23/0047-tcm_fc-Resolve-suspicious-RCU-usage-warnings.patch \
- file://3.2.23/0048-vfs-make-O_PATH-file-descriptors-usable-for-fchdir.patch \
- file://3.2.23/0049-Linux-3.2.23.patch \
- file://3.2.24/0001-samsung-laptop-make-the-dmi-check-less-strict.patch \
- file://3.2.24/0002-raid5-delayed-stripe-fix.patch \
- file://3.2.24/0003-tcp-drop-SYN-FIN-messages.patch \
- file://3.2.24/0004-tg3-Apply-short-DMA-frag-workaround-to-5906.patch \
- file://3.2.24/0005-rtl8187-brightness_set-can-not-sleep.patch \
- file://3.2.24/0006-net-wireless-ipw2x00-add-supported-cipher-suites-to-.patch \
- file://3.2.24/0007-drm-i915-do-not-enable-RC6p-on-Sandy-Bridge.patch \
- file://3.2.24/0008-drm-i915-fix-operator-precedence-when-enabling-RC6p.patch \
- file://3.2.24/0009-kbuild-do-not-check-for-ancient-modutils-tools.patch \
- file://3.2.24/0010-brcmsmac-INTERMEDIATE-but-not-AMPDU-only-when-tracin.patch \
- file://3.2.24/0011-NFSv4-Rate-limit-the-state-manager-for-lock-reclaim-.patch \
- file://3.2.24/0012-ext4-Report-max_batch_time-option-correctly.patch \
- file://3.2.24/0013-hugepages-fix-use-after-free-bug-in-quota-handling.patch \
- file://3.2.24/0014-NFSv4-Reduce-the-footprint-of-the-idmapper.patch \
- file://3.2.24/0015-NFSv4-Further-reduce-the-footprint-of-the-idmapper.patch \
- file://3.2.24/0016-macvtap-zerocopy-fix-offset-calculation-when-buildin.patch \
- file://3.2.24/0017-macvtap-zerocopy-fix-truesize-underestimation.patch \
- file://3.2.24/0018-macvtap-zerocopy-put-page-when-fail-to-get-all-reque.patch \
- file://3.2.24/0019-macvtap-zerocopy-set-SKBTX_DEV_ZEROCOPY-only-when-sk.patch \
- file://3.2.24/0020-macvtap-zerocopy-validate-vectors-before-building-sk.patch \
- file://3.2.24/0021-KVM-Fix-buffer-overflow-in-kvm_set_irq.patch \
- file://3.2.24/0022-scsi-Silence-unnecessary-warnings-about-ioctl-to-par.patch \
- file://3.2.24/0023-epoll-clear-the-tfile_check_list-on-ELOOP.patch \
- file://3.2.24/0024-iommu-amd-Fix-missing-iommu_shutdown-initialization-.patch \
- file://3.2.24/0025-iommu-amd-Initialize-dma_ops-for-hotplug-and-sriov-d.patch \
- file://3.2.24/0026-usb-Add-support-for-root-hub-port-status-CAS.patch \
- file://3.2.24/0027-gpiolib-wm8994-Pay-attention-to-the-value-set-when-e.patch \
- file://3.2.24/0028-sched-nohz-Rewrite-and-fix-load-avg-computation-agai.patch \
- file://3.2.24/0029-USB-option-add-ZTE-MF60.patch \
- file://3.2.24/0030-USB-option-Add-MEDIATEK-product-ids.patch \
- file://3.2.24/0031-USB-cdc-wdm-fix-lockup-on-error-in-wdm_read.patch \
- file://3.2.24/0032-mtd-nandsim-don-t-open-code-a-do_div-helper.patch \
- file://3.2.24/0033-dvb-core-Release-semaphore-on-error-path-dvb_registe.patch \
- file://3.2.24/0034-hwspinlock-core-use-global-ID-to-register-hwspinlock.patch \
- file://3.2.24/0035-libsas-fix-taskfile-corruption-in-sas_ata_qc_fill_rt.patch \
- file://3.2.24/0036-md-raid1-fix-use-after-free-bug-in-RAID1-data-check-.patch \
- file://3.2.24/0037-PCI-EHCI-fix-crash-during-suspend-on-ASUS-computers.patch \
- file://3.2.24/0038-memory-hotplug-fix-invalid-memory-access-caused-by-s.patch \
- file://3.2.24/0039-ocfs2-fix-NULL-pointer-dereference-in-__ocfs2_change.patch \
- file://3.2.24/0040-mm-thp-abort-compaction-if-migration-page-cannot-be-.patch \
- file://3.2.24/0041-drivers-rtc-rtc-mxc.c-fix-irq-enabled-interrupts-war.patch \
- file://3.2.24/0042-fs-ramfs-file-nommu-add-SetPageUptodate.patch \
- file://3.2.24/0043-cpufreq-ACPI-Fix-not-loading-acpi-cpufreq-driver-reg.patch \
- file://3.2.24/0044-hwmon-it87-Preserve-configuration-register-bits-on-i.patch \
- file://3.2.24/0045-ARM-SAMSUNG-fix-race-in-s3c_adc_start-for-ADC.patch \
- file://3.2.24/0046-block-fix-infinite-loop-in-__getblk_slow.patch \
- file://3.2.24/0047-Remove-easily-user-triggerable-BUG-from-generic_setl.patch \
- file://3.2.24/0048-NFC-Export-nfc.h-to-userland.patch \
- file://3.2.24/0049-PM-Hibernate-Hibernate-thaw-fixes-improvements.patch \
- file://3.2.24/0050-cfg80211-check-iface-combinations-only-when-iface-is.patch \
- file://3.2.24/0051-intel_ips-blacklist-HP-ProBook-laptops.patch \
- file://3.2.24/0052-atl1c-fix-issue-of-transmit-queue-0-timed-out.patch \
- file://3.2.24/0053-rt2x00usb-fix-indexes-ordering-on-RX-queue-kick.patch \
- file://3.2.24/0054-iwlegacy-always-monitor-for-stuck-queues.patch \
- file://3.2.24/0055-iwlegacy-don-t-mess-up-the-SCD-when-removing-a-key.patch \
- file://3.2.24/0056-e1000e-Correct-link-check-logic-for-82571-serdes.patch \
- file://3.2.24/0057-tcm_fc-Fix-crash-seen-with-aborts-and-large-reads.patch \
- file://3.2.24/0058-fifo-Do-not-restart-open-if-it-already-found-a-partn.patch \
- file://3.2.24/0059-target-Clean-up-returning-errors-in-PR-handling-code.patch \
- file://3.2.24/0060-target-Fix-range-calculation-in-WRITE-SAME-emulation.patch \
- file://3.2.24/0061-cifs-on-CONFIG_HIGHMEM-machines-limit-the-rsize-wsiz.patch \
- file://3.2.24/0062-cifs-always-update-the-inode-cache-with-the-results-.patch \
- file://3.2.24/0063-mm-fix-lost-kswapd-wakeup-in-kswapd_stop.patch \
- file://3.2.24/0064-md-avoid-crash-when-stopping-md-array-races-with-clo.patch \
- file://3.2.24/0065-md-raid1-close-some-possible-races-on-write-errors-d.patch \
- file://3.2.24/0066-MIPS-Properly-align-the-.data.init_task-section.patch \
- file://3.2.24/0067-UBIFS-fix-a-bug-in-empty-space-fix-up.patch \
- file://3.2.24/0068-ore-Fix-NFS-crash-by-supporting-any-unaligned-RAID-I.patch \
- file://3.2.24/0069-ore-Remove-support-of-partial-IO-request-NFS-crash.patch \
- file://3.2.24/0070-pnfs-obj-don-t-leak-objio_state-if-ore_write-read-fa.patch \
- file://3.2.24/0071-pnfs-obj-Fix-__r4w_get_page-when-offset-is-beyond-i_.patch \
- file://3.2.24/0072-dm-raid1-fix-crash-with-mirror-recovery-and-discard.patch \
- file://3.2.24/0073-dm-raid1-set-discard_zeroes_data_unsupported.patch \
- file://3.2.24/0074-ntp-Fix-leap-second-hrtimer-livelock.patch \
- file://3.2.24/0075-ntp-Correct-TAI-offset-during-leap-second.patch \
- file://3.2.24/0076-timekeeping-Fix-CLOCK_MONOTONIC-inconsistency-during.patch \
- file://3.2.24/0077-time-Move-common-updates-to-a-function.patch \
- file://3.2.24/0078-hrtimer-Provide-clock_was_set_delayed.patch \
- file://3.2.24/0079-timekeeping-Fix-leapsecond-triggered-load-spike-issu.patch \
- file://3.2.24/0080-timekeeping-Maintain-ktime_t-based-offsets-for-hrtim.patch \
- file://3.2.24/0081-hrtimers-Move-lock-held-region-in-hrtimer_interrupt.patch \
- file://3.2.24/0082-timekeeping-Provide-hrtimer-update-function.patch \
- file://3.2.24/0083-hrtimer-Update-hrtimer-base-offsets-each-hrtimer_int.patch \
- file://3.2.24/0084-timekeeping-Add-missing-update-call-in-timekeeping_r.patch \
- file://3.2.24/0085-powerpc-Fix-wrong-divisor-in-usecs_to_cputime.patch \
- file://3.2.24/0086-vhost-don-t-forget-to-schedule.patch \
- file://3.2.24/0087-r8169-call-netif_napi_del-at-errpaths-and-at-driver-.patch \
- file://3.2.24/0088-bnx2x-fix-checksum-validation.patch \
- file://3.2.24/0089-bnx2x-fix-panic-when-TX-ring-is-full.patch \
- file://3.2.24/0090-net-remove-skb_orphan_try.patch \
- file://3.2.24/0091-ACPI-Make-acpi_skip_timer_override-cover-all-source_.patch \
- file://3.2.24/0092-ACPI-Remove-one-board-specific-WARN-when-ignoring-ti.patch \
- file://3.2.24/0093-ACPI-Add-a-quirk-for-AMILO-PRO-V2030-to-ignore-the-t.patch \
- file://3.2.24/0094-ACPI-x86-fix-Dell-M6600-ACPI-reboot-regression-via-D.patch \
- file://3.2.24/0095-ACPI-sysfs.c-strlen-fix.patch \
- file://3.2.24/0096-eCryptfs-Gracefully-refuse-miscdev-file-ops-on-inher.patch \
- file://3.2.24/0097-eCryptfs-Fix-lockdep-warning-in-miscdev-operations.patch \
- file://3.2.24/0098-eCryptfs-Properly-check-for-O_RDONLY-flag-before-doi.patch \
- file://3.2.24/0099-ACPI-PM-Make-acpi_pm_device_sleep_state-follow-the-s.patch \
- file://3.2.24/0100-ipheth-add-support-for-iPad.patch \
- file://3.2.24/0101-stmmac-Fix-for-nfs-hang-on-multiple-reboot.patch \
- file://3.2.24/0102-bonding-debugfs-and-network-namespaces-are-incompati.patch \
- file://3.2.24/0103-bonding-Manage-proc-net-bonding-entries-from-the-net.patch \
- file://3.2.24/0104-Input-bcm5974-Add-support-for-2012-MacBook-Pro-Retin.patch \
- file://3.2.24/0105-Input-xpad-handle-all-variations-of-Mad-Catz-Beat-Pa.patch \
- file://3.2.24/0106-Input-xpad-add-signature-for-Razer-Onza-Tournament-E.patch \
- file://3.2.24/0107-Input-xpad-add-Andamiro-Pump-It-Up-pad.patch \
- file://3.2.24/0108-HID-add-support-for-2012-MacBook-Pro-Retina.patch \
- file://3.2.24/0109-Linux-3.2.24.patch \
- file://3.2.25/0001-mm-reduce-the-amount-of-work-done-when-updating-min_.patch \
- file://3.2.25/0002-mm-compaction-allow-compaction-to-isolate-dirty-page.patch \
- file://3.2.25/0003-mm-compaction-determine-if-dirty-pages-can-be-migrat.patch \
- file://3.2.25/0004-mm-page-allocator-do-not-call-direct-reclaim-for-THP.patch \
- file://3.2.25/0005-mm-compaction-make-isolate_lru_page-filter-aware-aga.patch \
- file://3.2.25/0006-mm-compaction-introduce-sync-light-migration-for-use.patch \
- file://3.2.25/0007-mm-vmscan-when-reclaiming-for-compaction-ensure-ther.patch \
- file://3.2.25/0008-mm-vmscan-do-not-OOM-if-aborting-reclaim-to-start-co.patch \
- file://3.2.25/0009-mm-vmscan-check-if-reclaim-should-really-abort-even-.patch \
- file://3.2.25/0010-vmscan-promote-shared-file-mapped-pages.patch \
- file://3.2.25/0011-vmscan-activate-executable-pages-after-first-usage.patch \
- file://3.2.25/0012-mm-vmscan.c-consider-swap-space-when-deciding-whethe.patch \
- file://3.2.25/0013-mm-test-PageSwapBacked-in-lumpy-reclaim.patch \
- file://3.2.25/0014-mm-vmscan-convert-global-reclaim-to-per-memcg-LRU-li.patch \
- file://3.2.25/0015-cpuset-mm-reduce-large-amounts-of-memory-barrier-rel.patch \
- file://3.2.25/0016-mm-hugetlb-fix-warning-in-alloc_huge_page-dequeue_hu.patch \
- file://3.2.25/0017-Fix-NULL-dereferences-in-scsi_cmd_to_driver.patch \
- file://3.2.25/0018-sched-nohz-Fix-rq-cpu_load-calculations.patch \
- file://3.2.25/0019-sched-nohz-Fix-rq-cpu_load-calculations-some-more.patch \
- file://3.2.25/0020-powerpc-ftrace-Fix-assembly-trampoline-register-usag.patch \
- file://3.2.25/0021-cx25821-Remove-bad-strcpy-to-read-only-char.patch \
- file://3.2.25/0022-x86-Fix-boot-on-Twinhead-H12Y.patch \
- file://3.2.25/0023-r8169-RxConfig-hack-for-the-8168evl.patch \
- file://3.2.25/0024-cifs-when-CONFIG_HIGHMEM-is-set-serialize-the-read-w.patch \
- file://3.2.25/0025-wireless-rt2x00-rt2800usb-add-more-devices-ids.patch \
- file://3.2.25/0026-wireless-rt2x00-rt2800usb-more-devices-were-identifi.patch \
- file://3.2.25/0027-rt2800usb-2001-3c17-is-an-RT3370-device.patch \
- file://3.2.25/0028-usb-gadget-Fix-g_ether-interface-link-status.patch \
- file://3.2.25/0029-ext4-pass-a-char-to-ext4_count_free-instead-of-a-buf.patch \
- file://3.2.25/0030-ftrace-Disable-function-tracing-during-suspend-resum.patch \
- file://3.2.25/0031-x86-microcode-microcode_core.c-simple_strtoul-cleanu.patch \
- file://3.2.25/0032-x86-microcode-Sanitize-per-cpu-microcode-reloading-i.patch \
- file://3.2.25/0033-usbdevfs-Correct-amount-of-data-copied-to-user-in-pr.patch \
- file://3.2.25/0034-ext4-fix-overhead-calculation-used-by-ext4_statfs.patch \
- file://3.2.25/0035-udf-Improve-table-length-check-to-avoid-possible-ove.patch \
- file://3.2.25/0036-powerpc-Add-memory-attribute-for-mfmsr.patch \
- file://3.2.25/0037-mwifiex-correction-in-mcs-index-check.patch \
- file://3.2.25/0038-USB-option-Ignore-ZTE-Vodafone-K3570-71-net-interfac.patch \
- file://3.2.25/0039-USB-option-add-ZTE-MF821D.patch \
- file://3.2.25/0040-target-Add-generation-of-LOGICAL-BLOCK-ADDRESS-OUT-O.patch \
- file://3.2.25/0041-target-Add-range-checking-to-UNMAP-emulation.patch \
- file://3.2.25/0042-target-Fix-reading-of-data-length-fields-for-UNMAP-c.patch \
- file://3.2.25/0043-target-Fix-possible-integer-underflow-in-UNMAP-emula.patch \
- file://3.2.25/0044-target-Check-number-of-unmap-descriptors-against-our.patch \
- file://3.2.25/0045-s390-idle-fix-sequence-handling-vs-cpu-hotplug.patch \
- file://3.2.25/0046-rtlwifi-rtl8192de-Fix-phy-based-version-calculation.patch \
- file://3.2.25/0047-workqueue-perform-cpu-down-operations-from-low-prior.patch \
- file://3.2.25/0048-ALSA-hda-Add-support-for-Realtek-ALC282.patch \
- file://3.2.25/0049-iommu-amd-Fix-hotplug-with-iommu-pt.patch \
- file://3.2.25/0050-drm-radeon-Try-harder-to-avoid-HW-cursor-ending-on-a.patch \
- file://3.2.25/0051-ALSA-hda-Turn-on-PIN_OUT-from-hdmi-playback-prepare.patch \
- file://3.2.25/0052-block-add-blk_queue_dead.patch \
- file://3.2.25/0053-Fix-device-removal-NULL-pointer-dereference.patch \
- file://3.2.25/0054-Avoid-dangling-pointer-in-scsi_requeue_command.patch \
- file://3.2.25/0055-fix-hot-unplug-vs-async-scan-race.patch \
- file://3.2.25/0056-fix-eh-wakeup-scsi_schedule_eh-vs-scsi_restart_opera.patch \
- file://3.2.25/0057-libsas-continue-revalidation.patch \
- file://3.2.25/0058-libsas-fix-sas_discover_devices-return-code-handling.patch \
- file://3.2.25/0059-iscsi-target-Drop-bogus-struct-file-usage-for-iSCSI-.patch \
- file://3.2.25/0060-mmc-sdhci-pci-CaFe-has-broken-card-detection.patch \
- file://3.2.25/0061-ext4-don-t-let-i_reserved_meta_blocks-go-negative.patch \
- file://3.2.25/0062-ext4-undo-ext4_calc_metadata_amount-if-we-fail-to-cl.patch \
- file://3.2.25/0063-ASoC-dapm-Fix-_PRE-and-_POST-events-for-DAPM-perform.patch \
- file://3.2.25/0064-locks-fix-checking-of-fcntl_setlease-argument.patch \
- file://3.2.25/0065-ACPI-AC-prevent-OOPS-on-some-boxes-due-to-missing-ch.patch \
- file://3.2.25/0066-drm-radeon-fix-bo-creation-retry-path.patch \
- file://3.2.25/0067-drm-radeon-fix-non-revealent-error-message.patch \
- file://3.2.25/0068-drm-radeon-fix-hotplug-of-DP-to-DVI-HDMI-passive-ada.patch \
- file://3.2.25/0069-drm-radeon-on-hotplug-force-link-training-to-happen-.patch \
- file://3.2.25/0070-Btrfs-call-the-ordered-free-operation-without-any-lo.patch \
- file://3.2.25/0071-nouveau-Fix-alignment-requirements-on-src-and-dst-ad.patch \
- file://3.2.25/0072-mm-fix-wrong-argument-of-migrate_huge_pages-in-soft_.patch \
- file://3.2.25/0073-Linux-3.2.25.patch \
- file://3.2.26/0001-x86-Simplify-code-by-removing-a-SMP-ifdefs-from-stru.patch \
- file://3.2.26/0002-Linux-3.2.26.patch \
- file://3.2.27/0001-sched-Fix-race-in-task_group.patch \
- file://3.2.27/0002-floppy-Cleanup-disk-queue-before-caling-put_disk-if-.patch \
- file://3.2.27/0003-xen-mark-local-pages-as-FOREIGN-in-the-m2p_override.patch \
- file://3.2.27/0004-lirc_sir-make-device-registration-work.patch \
- file://3.2.27/0005-stable-update-references-to-older-2.6-versions-for-3.patch \
- file://3.2.27/0006-ALSA-hda-add-dock-support-for-Thinkpad-X230-Tablet.patch \
- file://3.2.27/0007-cfg80211-fix-interface-combinations-check-for-ADHOC-.patch \
- file://3.2.27/0008-m68k-Correct-the-Atari-ALLOWINT-definition.patch \
- file://3.2.27/0009-ene_ir-Fix-driver-initialisation.patch \
- file://3.2.27/0010-nfsd4-our-filesystems-are-normally-case-sensitive.patch \
- file://3.2.27/0011-random-Use-arch_get_random_int-instead-of-cycle-coun.patch \
- file://3.2.27/0012-random-Use-arch-specific-RNG-to-initialize-the-entro.patch \
- file://3.2.27/0013-random-Adjust-the-number-of-loops-when-initializing.patch \
- file://3.2.27/0014-random-make-add_interrupt_randomness-do-something-sa.patch \
- file://3.2.27/0015-random-use-lockless-techniques-in-the-interrupt-path.patch \
- file://3.2.27/0016-random-create-add_device_randomness-interface.patch \
- file://3.2.27/0017-usb-feed-USB-device-information-to-the-dev-random-dr.patch \
- file://3.2.27/0018-net-feed-dev-random-with-the-MAC-address-when-regist.patch \
- file://3.2.27/0019-random-use-the-arch-specific-rng-in-xfer_secondary_p.patch \
- file://3.2.27/0020-random-add-new-get_random_bytes_arch-function.patch \
- file://3.2.27/0021-rtc-wm831x-Feed-the-write-counter-into-device_add_ra.patch \
- file://3.2.27/0022-mfd-wm831x-Feed-the-device-UUID-into-device_add_rand.patch \
- file://3.2.27/0023-ASoC-wm8994-Ensure-there-are-enough-BCLKs-for-four-c.patch \
- file://3.2.27/0024-futex-Test-for-pi_mutex-on-fault-in-futex_wait_reque.patch \
- file://3.2.27/0025-futex-Fix-bug-in-WARN_ON-for-NULL-q.pi_state.patch \
- file://3.2.27/0026-futex-Forbid-uaddr-uaddr2-in-futex_wait_requeue_pi.patch \
- file://3.2.27/0027-video-smscufx-fix-line-counting-in-fb_write.patch \
- file://3.2.27/0028-Input-synaptics-handle-out-of-bounds-values-from-the.patch \
- file://3.2.27/0029-ALSA-hda-Fix-invalid-D3-of-headphone-DAC-on-VT202x-c.patch \
- file://3.2.27/0030-ALSA-mpu401-Fix-missing-initialization-of-irq-field.patch \
- file://3.2.27/0031-x86-nops-Missing-break-resulting-in-incorrect-select.patch \
- file://3.2.27/0032-s390-mm-downgrade-page-table-after-fork-of-a-31-bit-.patch \
- file://3.2.27/0033-Redefine-ATOMIC_INIT-and-ATOMIC64_INIT-to-drop-the-c.patch \
- file://3.2.27/0034-dm-thin-reduce-endio_hook-pool-size.patch \
- file://3.2.27/0035-dm-thin-fix-memory-leak-in-process_prepared_mapping-.patch \
- file://3.2.27/0036-random-mix-in-architectural-randomness-in-extract_bu.patch \
- file://3.2.27/0037-asus-wmi-use-ASUS_WMI_METHODID_DSTS2-as-default-DSTS.patch \
- file://3.2.27/0038-virtio-blk-Use-block-layer-provided-spinlock.patch \
- file://3.2.27/0039-s390-mm-fix-fault-handling-for-page-table-walk-case.patch \
- file://3.2.27/0040-nfs-skip-commit-in-releasepage-if-we-re-freeing-memo.patch \
- file://3.2.27/0041-md-raid1-don-t-abort-a-resync-on-the-first-badblock.patch \
- file://3.2.27/0042-pcdp-use-early_ioremap-early_iounmap-to-access-pcdp-.patch \
- file://3.2.27/0043-lib-vsprintf.c-kptr_restrict-fix-pK-error-in-SysRq-s.patch \
- file://3.2.27/0044-nilfs2-fix-deadlock-issue-between-chcp-and-thaw-ioct.patch \
- file://3.2.27/0045-SUNRPC-return-negative-value-in-case-rpcbind-client-.patch \
- file://3.2.27/0046-ARM-7467-1-mutex-use-generic-xchg-based-implementati.patch \
- file://3.2.27/0047-ARM-7476-1-vfp-only-clear-vfp-state-for-current-cpu-.patch \
- file://3.2.27/0048-ARM-7477-1-vfp-Always-save-VFP-state-in-vfp_pm_suspe.patch \
- file://3.2.27/0049-ARM-7478-1-errata-extend-workaround-for-erratum-7207.patch \
- file://3.2.27/0050-ARM-Fix-undefined-instruction-exception-handling.patch \
- file://3.2.27/0051-USB-echi-dbgp-increase-the-controller-wait-time-to-c.patch \
- file://3.2.27/0052-ASoC-wm8962-Allow-VMID-time-to-fully-ramp.patch \
- file://3.2.27/0053-mm-page_alloc.c-remove-pageblock_default_order.patch \
- file://3.2.27/0054-mm-setup-pageblock_order-before-it-s-used-by-sparsem.patch \
- file://3.2.27/0055-mm-mmu_notifier-fix-freed-page-still-mapped-in-secon.patch \
- file://3.2.27/0056-mm-hugetlbfs-close-race-during-teardown-of-hugetlbfs.patch \
- file://3.2.27/0057-ALSA-snd-usb-fix-clock-source-validity-index.patch \
- file://3.2.27/0058-ALSA-hda-Support-dock-on-Lenovo-Thinkpad-T530-with-A.patch \
- file://3.2.27/0059-ore-Fix-out-of-bounds-access-in-_ios_obj.patch \
- file://3.2.27/0060-m68k-Make-sys_atomic_cmpxchg_32-work-on-classic-m68k.patch \
- file://3.2.27/0061-drm-i915-prefer-wide-slow-to-fast-narrow-in-DP-confi.patch \
- file://3.2.27/0062-rt2x00-Add-support-for-BUFFALO-WLI-UC-GNM2-to-rt2800.patch \
- file://3.2.27/0063-drop_monitor-fix-sleeping-in-invalid-context-warning.patch \
- file://3.2.27/0064-drop_monitor-Make-updating-data-skb-smp-safe.patch \
- file://3.2.27/0065-drop_monitor-prevent-init-path-from-scheduling-on-th.patch \
- file://3.2.27/0066-drop_monitor-dont-sleep-in-atomic-context.patch \
- file://3.2.27/0067-pch_uart-Fix-missing-break-for-16-byte-fifo.patch \
- file://3.2.27/0068-pch_uart-Fix-rx-error-interrupt-setting-issue.patch \
- file://3.2.27/0069-pch_uart-Fix-parity-setting-issue.patch \
- file://3.2.27/0070-Linux-3.2.27.patch \
- file://3.2.28/0001-bnx2-Fix-bug-in-bnx2_free_tx_skbs.patch \
- file://3.2.28/0002-sch_sfb-Fix-missing-NULL-check.patch \
- file://3.2.28/0003-sctp-Fix-list-corruption-resulting-from-freeing-an-a.patch \
- file://3.2.28/0004-caif-Fix-access-to-freed-pernet-memory.patch \
- file://3.2.28/0005-cipso-don-t-follow-a-NULL-pointer-when-setsockopt-is.patch \
- file://3.2.28/0006-caif-fix-NULL-pointer-check.patch \
- file://3.2.28/0007-wanmain-comparing-array-with-NULL.patch \
- file://3.2.28/0008-tcp-Add-TCP_USER_TIMEOUT-negative-value-check.patch \
- file://3.2.28/0009-USB-kaweth.c-use-GFP_ATOMIC-under-spin_lock.patch \
- file://3.2.28/0010-net-fix-rtnetlink-IFF_PROMISC-and-IFF_ALLMULTI-handl.patch \
- file://3.2.28/0011-tcp-perform-DMA-to-userspace-only-if-there-is-a-task.patch \
- file://3.2.28/0012-net-tun-fix-ioctl-based-info-leaks.patch \
- file://3.2.28/0013-e1000-add-dropped-DMA-receive-enable-back-in-for-WoL.patch \
- file://3.2.28/0014-rtlwifi-rtl8192cu-Change-buffer-allocation-for-synch.patch \
- file://3.2.28/0015-hfsplus-fix-overflow-in-sector-calculations-in-hfspl.patch \
- file://3.2.28/0016-drm-i915-fixup-seqno-allocation-logic-for-lazy_reque.patch \
- file://3.2.28/0017-KVM-VMX-Advertise-CPU_BASED_RDPMC_EXITING-for-nested.patch \
- file://3.2.28/0018-mac80211-cancel-mesh-path-timer.patch \
- file://3.2.28/0019-ath9k-Add-PID-VID-support-for-AR1111.patch \
- file://3.2.28/0020-ARM-mxs-Remove-MMAP_MIN_ADDR-setting-from-mxs_defcon.patch \
- file://3.2.28/0021-ALSA-hda-add-dock-support-for-Thinkpad-T430s.patch \
- file://3.2.28/0022-cfg80211-process-pending-events-when-unregistering-n.patch \
- file://3.2.28/0023-rt61pci-fix-NULL-pointer-dereference-in-config_lna_g.patch \
- file://3.2.28/0024-iwlwifi-disable-greenfield-transmissions-as-a-workar.patch \
- file://3.2.28/0025-ALSA-hda-add-dock-support-for-Thinkpad-X230.patch \
- file://3.2.28/0026-e1000e-NIC-goes-up-and-immediately-goes-down.patch \
- file://3.2.28/0027-ALSA-hda-remove-quirk-for-Dell-Vostro-1015.patch \
- file://3.2.28/0028-ALSA-hda-Fix-double-quirk-for-Quanta-FL1-Lenovo-Idea.patch \
- file://3.2.28/0029-ARM-pxa-remove-irq_to_gpio-from-ezx-pcap-driver.patch \
- file://3.2.28/0030-Input-eeti_ts-pass-gpio-value-instead-of-IRQ.patch \
- file://3.2.28/0031-drm-i915-Add-wait_for-in-init_ring_common.patch \
- file://3.2.28/0032-drm-i915-correctly-order-the-ring-init-sequence.patch \
- file://3.2.28/0033-s390-compat-fix-compat-wrappers-for-process_vm-syste.patch \
- file://3.2.28/0034-s390-compat-fix-mmap-compat-system-calls.patch \
- file://3.2.28/0035-drm-radeon-fix-bank-tiling-parameters-on-evergreen.patch \
- file://3.2.28/0036-drm-radeon-fix-bank-tiling-parameters-on-cayman.patch \
- file://3.2.28/0037-drm-radeon-do-not-reenable-crtc-after-moving-vram-st.patch \
- file://3.2.28/0038-Linux-3.2.28.patch \
- file://libertas/0001-USB-convert-drivers-net-to-use-module_usb_driver.patch \
- file://libertas/0002-net-fix-assignment-of-0-1-to-bool-variables.patch \
- file://libertas/0003-switch-debugfs-to-umode_t.patch \
- file://libertas/0004-drivers-net-Remove-unnecessary-k.alloc-v.alloc-OOM-m.patch \
- file://libertas/0005-libertas-remove-dump_survey-implementation.patch \
- file://libertas/0006-wireless-libertas-remove-redundant-NULL-tests-before.patch \
- file://libertas/0007-libertas-fix-signedness-bug-in-lbs_auth_to_authtype.patch \
- file://libertas/0008-drivers-net-wireless-libertas-if_usb.c-add-missing-d.patch \
- file://libertas/0009-libertas-Firmware-loading-simplifications.patch \
- file://libertas/0010-libertas-harden-up-exit-paths.patch \
- file://libertas/0011-libertas-add-asynchronous-firmware-loading-capabilit.patch \
- file://libertas/0012-libertas-SDIO-convert-to-asynchronous-firmware-loadi.patch \
- file://libertas/0013-libertas-USB-convert-to-asynchronous-firmware-loadin.patch \
- file://libertas/0014-libertas-CS-convert-to-asynchronous-firmware-loading.patch \
- file://libertas/0015-libertas-add-missing-include.patch \
- file://libertas/0016-remove-debug-msgs-due-to-missing-in_interrupt.patch \
- file://pwm/0001-PWM-ecap-Correct-configuration-of-polarity.patch \
- file://pwm/0002-ARM-OMAP2-am335x-mux-add-ecap2_in_pwm2_out-string-en.patch \
- file://pwm/0003-ARM-OMAP2-AM335x-hwmod-Remove-PRCM-entries-for-PWMSS.patch \
- file://pwm/0004-PWM-ecap-Resets-the-PWM-output-to-low-on-stop.patch \
- file://pwm/0005-PWM-ecap-Fix-for-throwing-PWM-output-before-running.patch \
- file://pwm/0006-pwm-ehrpwm-Configure-polarity-on-pwm_start.patch \
- file://beaglebone/0001-f_rndis-HACK-around-undefined-variables.patch \
- file://beaglebone/0002-da8xx-fb-add-DVI-support-for-beaglebone.patch \
- file://beaglebone/0003-beaglebone-rebase-everything-onto-3.2-WARNING-MEGAPA.patch \
- file://beaglebone/0004-more-beaglebone-merges.patch \
- file://beaglebone/0005-beaglebone-disable-tsadc.patch \
- file://beaglebone/0006-tscadc-Add-general-purpose-mode-untested-with-touchs.patch \
- file://beaglebone/0007-tscadc-Add-board-file-mfd-support-fix-warning.patch \
- file://beaglebone/0008-AM335X-init-tsc-bone-style-for-new-boards.patch \
- file://beaglebone/0009-tscadc-make-stepconfig-channel-configurable.patch \
- file://beaglebone/0010-tscadc-Trigger-through-sysfs.patch \
- file://beaglebone/0011-meta-ti-Remove-debug-messages-for-meta-ti.patch \
- file://beaglebone/0012-tscadc-switch-to-polling-instead-of-interrupts.patch \
- file://beaglebone/0013-beaglebone-fix-ADC-init.patch \
- file://beaglebone/0014-AM335x-MUX-add-ehrpwm1A.patch \
- file://beaglebone/0015-beaglebone-enable-PWM-for-lcd-backlight-backlight-is.patch \
- file://beaglebone/0016-omap_hsmmc-Set-dto-to-max-value-of-14-to-avoid-SD-Ca.patch \
- file://beaglebone/0017-beaglebone-set-default-brightness-to-50-for-pwm-back.patch \
- file://beaglebone/0018-st7735fb-WIP-framebuffer-driver-supporting-Adafruit-.patch \
- file://beaglebone/0019-beaglebone-use-P8_6-gpio1_3-as-w1-bus.patch \
- file://beaglebone/0020-beaglebone-add-support-for-Towertech-TT3201-CAN-cape.patch \
- file://beaglebone/0021-beaglebone-add-more-beagleboardtoys-cape-partnumbers.patch \
- file://beaglebone/0022-beaglebone-add-gpio-keys-for-lcd7-add-notes-for-miss.patch \
- file://beaglebone/0023-beaglebone-add-enter-key-for-lcd7-cape.patch \
- file://beaglebone/0024-beaglebone-add-gpio-keys-for-lcd.patch \
- file://beaglebone/0025-beaglebone-fix-direction-of-gpio-keys.patch \
- file://beaglebone/0026-beaglebone-fix-3.5-lcd-cape-support.patch \
- file://beaglebone/0027-beaglebone-decrease-PWM-frequency-to-old-value-LCD7-.patch \
- file://beaglebone/0028-beaglebone-fix-ehrpwm-backlight.patch \
- file://beaglebone/0029-beaglebone-also-report-cape-revision.patch \
- file://beaglebone/0030-beaglebone-don-t-compare-undefined-characters-it-mak.patch \
- file://beaglebone/0031-beaglebone-fix-3.5-cape-support.patch \
- file://beaglebone/0032-beaglebone-connect-batterycape-GPIO-to-gpio-charger.patch \
- file://beaglebone/0033-beaglebone-add-support-for-CAN-and-RS232-cape.patch \
- file://beaglebone/0034-beaglebone-add-support-for-DVI-rev.-A2-capes.patch \
- file://beaglebone/0035-beaglebone-enable-LEDs-for-DVI-LCD3-and-LCD7-capes.patch \
- file://beaglebone/0036-Beaglebone-Fixed-compiletime-warnings.patch \
- file://beaglebone/0037-Beaglebone-Added-missing-termination-record-to-bone_.patch \
- file://beaglebone/0038-board-am335xevm.c-Beaglebone-expose-all-pwms-through.patch \
- file://beaglebone/0039-ARM-OMAP-Mux-Fixed-debugfs-mux-output-always-reporti.patch \
- file://beaglebone/0040-beaglebone-export-SPI2-as-spidev-when-no-capes-are-u.patch \
- file://beaglebone/0041-st7735fb-Working-WIP-changes-to-make-DMA-safe-and-ad.patch \
- file://beaglebone/0042-omap-hwmod-silence-st_shift-error.patch \
- file://beaglebone/0043-cpsw-phy_device-demote-PHY-message-to-INFO.patch \
- file://beaglebone/0044-beaglebone-add-support-for-7-LCD-cape-revision-A2.patch \
- file://beaglebone/0045-beaglebone-allow-capes-to-disable-w1-gpio.patch \
- file://beaglebone/0046-beaglebone-add-stub-for-the-camera-cape-to-disable-w.patch \
- file://beaglebone/0047-Adding-many-of-the-missing-signals-to-the-mux-table.patch \
- file://beaglebone/0048-Fixed-reversed-part-of-LCD-bus.-Added-even-more-miss.patch \
- file://beaglebone/0049-ts_tscadc-add-defines-for-4x-and-16x-oversampling.patch \
- file://beaglebone/0050-ts_tscadc-switch-to-4x-oversampling.patch \
- file://beaglebone/0051-Fixed-size-of-pinmux-data-array-in-EEPROM-data-struc.patch \
- file://beaglebone/0052-Implemented-Bone-Cape-configuration-from-EEPROM.-Onl.patch \
- file://beaglebone/0053-Replaced-conditional-debug-code-by-pr_debug-statemen.patch \
- file://beaglebone/0054-Workaround-for-boards-with-mistaken-ASCII-interpreta.patch \
- file://beaglebone/0055-Workaround-for-EEPROM-contents-blocking-further-I2C-.patch \
- file://beaglebone/0056-Added-check-on-EEPROM-revision-to-prevent-interpreti.patch \
- file://beaglebone/0057-i2c-prescalar-fix-i2c-fixed-prescalar-setting-issue.patch \
- file://beaglebone/0058-beaglebone-annotate-default-beaglebone-pinmux.patch \
- file://beaglebone/0059-beaglebone-fix-pin-free-thinko-this-method-doesn-t-g.patch \
- file://beaglebone/0060-beaglebone-switch-RS232-cape-to-ttyO2.patch \
- file://beaglebone/0061-beaglebone-make-uart2-pinmux-match-the-uart0-pinmux.patch \
- file://beaglebone/0062-da8xx-fb-Rounding-FB-size-to-satisfy-SGX-buffer-requ.patch \
- file://beaglebone/0063-beaglebone-dvi-cape-audio-hacks.patch \
- file://beaglebone/0064-beaglebone-always-execute-the-pin-free-checks.patch \
- file://beaglebone/0065-ti_tscadc-switch-to-16x-averaging.patch \
- file://beaglebone/0066-video-da8xx-fb-Add-Newhaven-LCD-Panel-details.patch \
- file://beaglebone/0067-beaglebone-add-support-for-the-4.3-lcd-cape-with-res.patch \
- file://beaglebone/0068-beaglebone-add-support-for-LCD3-rev-A1.patch \
- file://beaglebone/0069-beaglebone-fix-buttons-spidev-clash-when-using-mcasp.patch \
- file://beaglebone/0070-beaglebone-fix-LCD3-led-key-overlap.patch \
- file://beaglebone/0071-beaglebone-fix-audio-spi-clash.patch \
- file://beaglebone/0072-beaglebone-add-support-for-QuickLogic-Camera-interfa.patch \
- file://beaglebone/0073-beaglebone-add-support-for-DVI-audio-and-audio-only-.patch \
- file://beaglebone/0074-beaglebone-disable-LBO-GPIO-for-battery-cape.patch \
- file://beaglebone/0075-video-da8xx-fb-calculate-pixel-clock-period-for-the-.patch \
- file://beaglebone/0076-beaglebone-improve-GPMC-bus-timings-for-camera-cape.patch \
- file://beaglebone/0077-beaglebone-disable-UYVY-VYUY-and-YVYU-modes-in-camer.patch \
- file://beaglebone/0078-beaglebone-error-handling-for-DMA-completion-in-cssp.patch \
- file://beaglebone/0079-AM335X-errata-OPP50-on-MPU-domain-is-not-supported.patch \
- file://beaglebone/0080-vfs-Add-a-trace-point-in-the-mark_inode_dirty-functi.patch \
- file://beaglebone/0081-beaglebone-add-support-for-LCD7-A3.patch \
- file://beaglebone/0082-beaglebone-add-rudimentary-support-for-eMMC-cape.patch \
- file://beaglebone/0083-beaglebone-add-extra-partnumber-for-camera-cape.patch \
- file://beaglebone/0084-beaglebone-cssp_camera-driver-cleanup.patch \
- file://beaglebone/0085-beaglebone-mux-camera-cape-orientation-pin-to-gpio.patch \
- file://beaglebone/0086-board-am335xevm-Add-Beaglebone-Motor-Cape-Support.patch \
- file://beaglebone/0087-mux33xx-Fix-MUXENTRYs-for-MCASP0_ACLKX-FSX-to-add-eh.patch \
- file://led/0001-leds-heartbeat-stop-on-shutdown-reboot-or-panic.patch \
- \
- file://beaglebone/0001-arm-boot-compressed-default-asm-arch-to-armv7-a.patch \
- "
diff --git a/recipes-kernel/linux/linux/beagleboard/logo_linux_clut224.ppm b/recipes-kernel/linux/linux/beagleboard/logo_linux_clut224.ppm
deleted file mode 100644
index d29fc1c..0000000
--- a/recipes-kernel/linux/linux/beagleboard/logo_linux_clut224.ppm
+++ /dev/null
@@ -1,73147 +0,0 @@
-P3
-# CREATOR: GIMP PNM Filter Version 1.1
-387 63
-255
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-116
-28
-246
-116
-28
-246
-116
-28
-246
-116
-28
-246
-116
-28
-246
-116
-28
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-111
-26
-246
-116
-28
-246
-116
-28
-247
-118
-39
-247
-118
-39
-247
-118
-39
-246
-116
-28
-247
-111
-26
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-247
-111
-26
-247
-111
-26
-246
-116
-28
-247
-118
-39
-247
-118
-39
-247
-118
-39
-246
-116
-28
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-247
-111
-26
-247
-111
-26
-246
-116
-28
-247
-118
-39
-247
-118
-39
-247
-118
-39
-246
-116
-28
-247
-111
-26
-247
-111
-26
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-247
-111
-26
-247
-111
-26
-246
-116
-28
-247
-118
-39
-247
-118
-39
-247
-118
-39
-246
-116
-28
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-118
-39
-247
-123
-41
-247
-123
-41
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-123
-41
-247
-123
-41
-247
-118
-39
-246
-116
-28
-247
-111
-26
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-246
-109
-10
-247
-111
-26
-246
-116
-28
-247
-118
-39
-247
-123
-41
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-123
-41
-247
-118
-39
-246
-116
-28
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-111
-26
-246
-116
-28
-247
-123
-41
-247
-123
-41
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-123
-41
-247
-118
-39
-247
-111
-26
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-118
-39
-247
-123
-41
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-123
-41
-247
-123
-41
-247
-118
-39
-247
-111
-26
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-111
-26
-246
-116
-28
-247
-123
-41
-247
-123
-41
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-123
-41
-247
-118
-39
-247
-111
-26
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-247
-111
-26
-246
-116
-28
-247
-118
-39
-247
-123
-41
-247
-130
-53
-248
-138
-64
-250
-139
-73
-247
-143
-74
-247
-143
-74
-249
-146
-83
-249
-146
-83
-249
-146
-83
-247
-143
-74
-250
-139
-73
-248
-138
-64
-247
-130
-53
-247
-123
-41
-247
-118
-39
-246
-116
-28
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-246
-109
-10
-247
-111
-26
-246
-116
-28
-247
-123
-41
-247
-130
-53
-248
-138
-64
-250
-139
-73
-247
-143
-74
-247
-143
-74
-250
-139
-73
-248
-138
-64
-247
-130
-53
-247
-123
-41
-246
-116
-28
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-118
-39
-247
-123
-41
-247
-130
-60
-248
-138
-64
-247
-143
-74
-247
-143
-74
-247
-143
-74
-250
-139
-73
-247
-130
-60
-247
-130
-53
-247
-123
-41
-246
-116
-28
-247
-111
-26
-246
-109
-10
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-118
-39
-247
-130
-53
-247
-130
-60
-250
-139
-73
-247
-143
-74
-247
-143
-74
-247
-143
-74
-248
-138
-64
-247
-130
-60
-247
-130
-53
-247
-118
-39
-247
-111
-26
-247
-111
-26
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-118
-39
-247
-123
-41
-247
-130
-60
-248
-138
-64
-247
-143
-74
-247
-143
-74
-247
-143
-74
-250
-139
-73
-247
-130
-60
-247
-130
-53
-247
-123
-41
-246
-116
-28
-247
-111
-26
-246
-109
-10
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-247
-111
-26
-246
-116
-28
-247
-118
-39
-247
-130
-53
-247
-130
-60
-250
-139
-73
-249
-146
-83
-249
-152
-92
-249
-159
-103
-249
-159
-103
-247
-165
-111
-251
-168
-115
-251
-168
-115
-247
-165
-111
-247
-165
-111
-249
-159
-103
-249
-152
-92
-249
-146
-83
-250
-139
-73
-247
-130
-60
-247
-123
-41
-247
-118
-39
-247
-111
-26
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-246
-116
-28
-247
-123
-41
-247
-130
-60
-247
-143
-74
-247
-150
-84
-246
-156
-93
-249
-159
-103
-249
-159
-103
-246
-156
-93
-247
-150
-84
-250
-139
-73
-247
-130
-60
-247
-123
-41
-246
-116
-28
-247
-111
-26
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-118
-39
-247
-123
-41
-248
-138
-64
-247
-143
-74
-249
-152
-92
-249
-159
-103
-249
-159
-103
-249
-159
-103
-246
-156
-93
-247
-150
-84
-250
-139
-73
-247
-130
-53
-247
-123
-41
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-118
-39
-247
-130
-53
-248
-138
-64
-249
-146
-83
-249
-152
-92
-249
-159
-103
-249
-159
-103
-249
-159
-103
-249
-152
-92
-249
-146
-83
-248
-138
-64
-247
-130
-53
-247
-118
-39
-247
-111
-26
-246
-109
-10
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-118
-39
-247
-130
-53
-248
-138
-64
-247
-143
-74
-249
-152
-92
-249
-159
-103
-249
-159
-103
-249
-159
-103
-246
-156
-93
-247
-150
-84
-250
-139
-73
-247
-130
-53
-247
-123
-41
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-118
-39
-247
-123
-41
-247
-130
-60
-250
-139
-73
-247
-150
-84
-249
-159
-103
-247
-165
-111
-249
-174
-124
-248
-180
-134
-252
-185
-144
-240
-181
-138
-219
-170
-138
-219
-170
-138
-230
-173
-136
-240
-181
-138
-248
-180
-134
-249
-174
-124
-247
-165
-111
-249
-159
-103
-249
-146
-83
-248
-138
-64
-247
-130
-53
-247
-123
-41
-247
-111
-26
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-123
-41
-247
-130
-60
-247
-143
-74
-249
-159
-103
-214
-151
-109
-121
-100
-85
-65
-67
-64
-74
-68
-68
-129
-102
-78
-214
-151
-109
-246
-156
-93
-247
-143
-74
-247
-130
-53
-247
-118
-39
-247
-111
-26
-246
-109
-10
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-111
-26
-246
-116
-28
-247
-123
-41
-248
-138
-64
-249
-146
-83
-249
-159
-103
-204
-141
-99
-102
-91
-75
-65
-67
-64
-81
-77
-76
-146
-111
-88
-238
-159
-107
-249
-152
-92
-250
-139
-73
-247
-130
-53
-247
-118
-39
-247
-111
-26
-246
-109
-10
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-118
-39
-247
-130
-53
-248
-138
-64
-247
-150
-84
-245
-162
-103
-162
-125
-96
-81
-77
-76
-55
-66
-67
-99
-90
-79
-187
-140
-108
-249
-159
-103
-247
-150
-84
-248
-138
-64
-247
-123
-41
-246
-116
-28
-247
-111
-26
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-111
-26
-246
-116
-28
-247
-123
-41
-248
-138
-64
-249
-146
-83
-249
-159
-103
-187
-140
-108
-102
-91
-75
-58
-69
-70
-76
-78
-76
-146
-111
-88
-238
-159
-107
-249
-152
-92
-250
-139
-73
-247
-130
-53
-247
-118
-39
-247
-111
-26
-246
-109
-10
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-246
-109
-10
-247
-111
-26
-246
-116
-28
-247
-123
-41
-247
-130
-53
-248
-138
-64
-249
-146
-83
-249
-159
-103
-251
-168
-115
-248
-180
-134
-239
-182
-144
-186
-157
-134
-124
-111
-99
-82
-69
-65
-65
-58
-56
-55
-48
-48
-65
-58
-56
-65
-58
-56
-65
-58
-56
-99
-90
-79
-158
-130
-108
-230
-173
-136
-250
-176
-132
-247
-165
-111
-249
-152
-92
-247
-143
-74
-247
-130
-53
-247
-123
-41
-246
-116
-28
-247
-111
-26
-246
-109
-10
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-111
-26
-247
-118
-39
-247
-130
-53
-250
-139
-73
-246
-156
-93
-214
-151
-109
-74
-68
-68
-56
-64
-60
-95
-87
-59
-88
-82
-59
-56
-64
-60
-81
-77
-76
-238
-159
-107
-249
-152
-92
-248
-138
-64
-247
-130
-53
-246
-116
-28
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-118
-39
-247
-130
-53
-247
-143
-74
-249
-159
-103
-187
-140
-108
-51
-62
-63
-69
-69
-61
-95
-87
-59
-83
-78
-61
-48
-58
-59
-121
-100
-85
-247
-165
-111
-247
-150
-84
-248
-138
-64
-247
-123
-41
-246
-116
-28
-246
-109
-10
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-123
-41
-247
-130
-60
-247
-150
-84
-247
-165
-111
-139
-115
-96
-48
-58
-59
-95
-78
-64
-118
-86
-65
-81
-73
-62
-48
-58
-59
-162
-125
-96
-249
-159
-103
-249
-146
-83
-247
-130
-60
-247
-123
-41
-247
-111
-26
-246
-109
-10
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-118
-39
-247
-130
-53
-247
-143
-74
-249
-159
-103
-187
-140
-108
-48
-58
-59
-76
-70
-64
-118
-86
-65
-95
-78
-64
-51
-62
-63
-121
-100
-85
-247
-165
-111
-247
-150
-84
-248
-138
-64
-247
-123
-41
-247
-111
-26
-246
-109
-10
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-246
-109
-10
-247
-111
-26
-246
-116
-28
-247
-123
-41
-247
-130
-60
-247
-143
-74
-249
-152
-92
-247
-165
-111
-250
-176
-132
-251
-192
-154
-167
-142
-123
-65
-58
-56
-35
-31
-30
-71
-60
-43
-108
-87
-46
-129
-106
-52
-137
-110
-49
-156
-125
-62
-187
-166
-150
-129
-106
-52
-101
-83
-47
-59
-50
-39
-55
-48
-48
-139
-115
-96
-240
-181
-138
-249
-174
-124
-249
-159
-103
-247
-143
-74
-247
-130
-53
-247
-123
-41
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-123
-41
-247
-130
-60
-247
-150
-84
-247
-165
-111
-124
-111
-99
-56
-64
-60
-137
-110
-49
-171
-129
-45
-171
-129
-45
-129
-106
-52
-51
-62
-63
-162
-125
-96
-247
-165
-111
-249
-146
-83
-247
-130
-60
-247
-118
-39
-247
-111
-26
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-123
-41
-248
-138
-64
-249
-152
-92
-245
-169
-119
-81
-77
-76
-69
-69
-61
-152
-119
-47
-171
-129
-45
-171
-129
-45
-105
-93
-60
-48
-58
-59
-187
-140
-108
-249
-159
-103
-247
-143
-74
-247
-130
-53
-247
-118
-39
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-111
-26
-246
-116
-28
-247
-130
-53
-250
-139
-73
-249
-159
-103
-210
-156
-119
-51
-62
-63
-112
-85
-63
-234
-126
-45
-234
-126
-45
-225
-124
-48
-95
-78
-64
-63
-74
-74
-234
-168
-124
-246
-156
-93
-250
-139
-73
-247
-123
-41
-246
-116
-28
-246
-109
-10
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-123
-41
-248
-138
-64
-249
-152
-92
-245
-169
-119
-81
-77
-76
-81
-73
-62
-212
-120
-56
-234
-126
-45
-234
-126
-45
-135
-94
-64
-41
-58
-57
-187
-140
-108
-249
-159
-103
-247
-143
-74
-247
-130
-53
-247
-118
-39
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-246
-116
-28
-247
-123
-41
-247
-130
-60
-249
-146
-83
-249
-159
-103
-249
-174
-124
-249
-189
-146
-236
-186
-153
-99
-90
-79
-47
-40
-38
-85
-71
-43
-145
-114
-49
-171
-129
-45
-171
-129
-45
-171
-129
-45
-168
-127
-42
-160
-120
-43
-195
-167
-113
-216
-194
-154
-168
-127
-42
-168
-127
-42
-123
-102
-54
-59
-50
-39
-82
-69
-65
-230
-173
-136
-249
-174
-124
-249
-159
-103
-247
-143
-74
-247
-130
-53
-247
-118
-39
-247
-111
-26
-246
-109
-10
-247
-103
-7
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-123
-41
-248
-138
-64
-246
-156
-93
-245
-169
-119
-84
-85
-82
-83
-78
-61
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-75
-74
-61
-101
-100
-92
-249
-174
-124
-246
-156
-93
-248
-138
-64
-247
-123
-41
-246
-116
-28
-247
-111
-26
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-111
-26
-247
-118
-39
-247
-130
-53
-247
-143
-74
-249
-159
-103
-210
-156
-119
-48
-58
-59
-105
-93
-60
-171
-129
-45
-158
-125
-46
-161
-127
-40
-152
-119
-47
-62
-63
-61
-139
-115
-96
-251
-168
-115
-247
-150
-84
-247
-130
-60
-247
-123
-41
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-111
-26
-247
-118
-39
-247
-130
-53
-249
-146
-83
-247
-165
-111
-158
-130
-108
-51
-62
-63
-188
-112
-56
-234
-125
-52
-224
-123
-55
-234
-126
-45
-163
-104
-61
-48
-58
-59
-210
-156
-119
-247
-165
-111
-249
-146
-83
-247
-130
-60
-247
-118
-39
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-118
-39
-247
-130
-53
-247
-143
-74
-247
-165
-111
-210
-156
-119
-55
-66
-67
-146
-97
-64
-234
-126
-45
-224
-123
-55
-234
-125
-52
-199
-115
-54
-62
-63
-61
-139
-115
-96
-251
-168
-115
-247
-150
-84
-247
-130
-60
-247
-118
-39
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-111
-26
-246
-116
-28
-247
-123
-41
-247
-130
-60
-249
-146
-83
-249
-159
-103
-250
-176
-132
-219
-170
-138
-150
-125
-114
-65
-58
-56
-24
-22
-23
-59
-50
-39
-152
-119
-47
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-160
-120
-43
-158
-125
-46
-227
-196
-175
-192
-155
-91
-160
-120
-43
-171
-129
-45
-158
-125
-46
-85
-71
-43
-65
-58
-56
-219
-170
-138
-249
-174
-124
-246
-156
-93
-250
-139
-73
-247
-130
-53
-247
-118
-39
-247
-111
-26
-246
-109
-10
-247
-103
-7
-246
-97
-3
-247
-103
-7
-246
-109
-10
-246
-116
-28
-247
-130
-53
-247
-143
-74
-249
-159
-103
-230
-173
-136
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-91
-92
-89
-252
-185
-144
-247
-165
-111
-249
-146
-83
-247
-130
-60
-247
-123
-41
-246
-116
-28
-247
-111
-26
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-111
-26
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-111
-26
-246
-116
-28
-247
-123
-41
-248
-138
-64
-249
-152
-92
-249
-174
-124
-203
-161
-131
-43
-57
-62
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-63
-69
-60
-133
-120
-107
-250
-176
-132
-246
-156
-93
-248
-138
-64
-247
-123
-41
-246
-116
-28
-247
-111
-26
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-111
-26
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-123
-41
-248
-138
-64
-249
-152
-92
-249
-174
-124
-154
-133
-118
-56
-64
-60
-199
-115
-54
-227
-126
-50
-224
-123
-55
-234
-125
-52
-183
-110
-59
-51
-62
-63
-186
-157
-134
-250
-176
-132
-246
-156
-93
-250
-139
-73
-247
-130
-53
-247
-118
-39
-247
-111
-26
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-111
-26
-247
-111
-26
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-111
-26
-247
-118
-39
-247
-130
-53
-250
-139
-73
-246
-156
-93
-249
-174
-124
-209
-171
-139
-51
-62
-63
-155
-100
-63
-234
-125
-52
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-133
-120
-107
-249
-174
-124
-246
-156
-93
-248
-138
-64
-247
-123
-41
-247
-111
-26
-246
-109
-10
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-111
-26
-247
-111
-26
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-118
-39
-247
-130
-53
-247
-143
-74
-249
-159
-103
-250
-176
-132
-158
-130
-108
-47
-40
-38
-59
-50
-39
-85
-71
-43
-85
-71
-43
-59
-50
-39
-35
-31
-30
-123
-102
-54
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-152
-119
-47
-192
-155
-91
-224
-207
-180
-158
-125
-46
-160
-120
-43
-168
-127
-42
-171
-129
-45
-71
-60
-43
-82
-69
-65
-239
-182
-144
-249
-174
-124
-249
-152
-92
-248
-138
-64
-247
-123
-41
-246
-116
-28
-247
-111
-26
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-111
-26
-247
-118
-39
-247
-130
-53
-249
-146
-83
-247
-165
-111
-239
-182
-144
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-91
-92
-89
-250
-197
-158
-250
-176
-132
-249
-159
-103
-247
-143
-74
-247
-130
-60
-247
-123
-41
-247
-118
-39
-246
-116
-28
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-116
-28
-247
-118
-39
-247
-118
-39
-247
-118
-39
-246
-116
-28
-246
-116
-28
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-247
-111
-26
-247
-111
-26
-246
-116
-28
-246
-116
-28
-246
-116
-28
-247
-118
-39
-247
-118
-39
-246
-116
-28
-246
-116
-28
-246
-116
-28
-246
-116
-28
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-116
-28
-246
-116
-28
-247
-118
-39
-247
-118
-39
-246
-116
-28
-246
-116
-28
-246
-116
-28
-246
-116
-28
-246
-116
-28
-247
-118
-39
-247
-123
-41
-247
-130
-60
-249
-146
-83
-249
-159
-103
-248
-180
-134
-212
-173
-150
-48
-58
-59
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-65
-67
-64
-137
-127
-115
-248
-180
-134
-249
-159
-103
-247
-143
-74
-247
-130
-53
-247
-118
-39
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-116
-28
-247
-118
-39
-247
-118
-39
-247
-118
-39
-246
-116
-28
-246
-116
-28
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-118
-39
-247
-130
-53
-250
-139
-73
-249
-159
-103
-250
-176
-132
-167
-142
-123
-56
-64
-60
-199
-115
-54
-227
-126
-50
-224
-123
-55
-234
-125
-52
-173
-106
-60
-48
-58
-59
-187
-166
-150
-249
-189
-146
-251
-168
-115
-249
-152
-92
-250
-139
-73
-247
-130
-53
-247
-123
-41
-246
-116
-28
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-116
-28
-246
-116
-28
-247
-118
-39
-247
-118
-39
-246
-116
-28
-246
-116
-28
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-116
-28
-246
-116
-28
-247
-118
-39
-247
-118
-39
-246
-116
-28
-246
-116
-28
-246
-116
-28
-246
-116
-28
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-116
-28
-247
-123
-41
-247
-130
-53
-248
-138
-64
-247
-150
-84
-247
-165
-111
-252
-185
-144
-212
-173
-150
-51
-62
-63
-155
-100
-63
-234
-125
-52
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-133
-120
-107
-248
-180
-134
-249
-159
-103
-250
-139
-73
-247
-123
-41
-247
-111
-26
-246
-109
-10
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-116
-28
-246
-116
-28
-247
-118
-39
-247
-118
-39
-247
-118
-39
-246
-116
-28
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-103
-7
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-116
-28
-246
-116
-28
-247
-118
-39
-247
-118
-39
-246
-116
-28
-246
-116
-28
-246
-116
-28
-246
-116
-28
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-111
-26
-247
-118
-39
-247
-130
-53
-250
-139
-73
-249
-159
-103
-250
-176
-132
-167
-142
-123
-24
-22
-23
-85
-71
-43
-158
-125
-46
-171
-129
-45
-171
-129
-45
-171
-129
-45
-85
-71
-43
-35
-31
-30
-145
-114
-49
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-152
-119
-47
-216
-194
-154
-195
-167
-113
-152
-119
-47
-158
-125
-46
-168
-127
-42
-158
-125
-46
-59
-50
-39
-139
-115
-96
-252
-185
-144
-247
-165
-111
-247
-150
-84
-247
-130
-60
-247
-123
-41
-247
-111
-26
-246
-109
-10
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-118
-39
-247
-130
-60
-247
-150
-84
-251
-168
-115
-236
-186
-153
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-91
-92
-89
-251
-209
-178
-249
-189
-146
-249
-174
-124
-249
-159
-103
-249
-146
-83
-248
-138
-64
-247
-130
-53
-247
-130
-53
-247
-123
-41
-247
-118
-39
-246
-116
-28
-247
-111
-26
-247
-111
-26
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-247
-111
-26
-246
-116
-28
-247
-118
-39
-247
-123
-41
-247
-123
-41
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-123
-41
-247
-123
-41
-246
-116
-28
-247
-111
-26
-247
-111
-26
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-111
-26
-246
-116
-28
-247
-118
-39
-247
-123
-41
-247
-123
-41
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-118
-39
-246
-116
-28
-246
-116
-28
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-116
-28
-247
-118
-39
-247
-123
-41
-247
-123
-41
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-248
-138
-64
-247
-143
-74
-246
-156
-93
-249
-174
-124
-251
-192
-154
-207
-178
-158
-48
-58
-59
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-63
-69
-60
-137
-127
-115
-249
-189
-146
-247
-165
-111
-247
-150
-84
-248
-138
-64
-247
-130
-53
-247
-123
-41
-247
-118
-39
-247
-123
-41
-247
-123
-41
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-123
-41
-247
-118
-39
-247
-118
-39
-247
-118
-39
-247
-123
-41
-247
-130
-60
-247
-143
-74
-249
-159
-103
-252
-185
-144
-167
-142
-123
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-234
-125
-52
-173
-106
-60
-51
-62
-63
-187
-166
-150
-250
-200
-166
-248
-180
-134
-247
-165
-111
-249
-152
-92
-247
-143
-74
-247
-130
-60
-247
-130
-53
-247
-123
-41
-247
-123
-41
-247
-118
-39
-247
-111
-26
-247
-111
-26
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-118
-39
-247
-123
-41
-247
-123
-41
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-123
-41
-247
-123
-41
-247
-118
-39
-247
-111
-26
-247
-111
-26
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-118
-39
-247
-123
-41
-247
-123
-41
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-130
-53
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-118
-39
-247
-118
-39
-247
-118
-39
-247
-118
-39
-247
-118
-39
-247
-118
-39
-247
-118
-39
-247
-123
-41
-247
-123
-41
-247
-130
-53
-247
-130
-60
-250
-139
-73
-249
-152
-92
-247
-165
-111
-248
-180
-134
-250
-197
-158
-207
-178
-158
-51
-62
-63
-155
-100
-63
-234
-125
-52
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-252
-185
-144
-249
-159
-103
-247
-143
-74
-247
-130
-53
-246
-116
-28
-246
-109
-10
-247
-103
-7
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-118
-39
-247
-123
-41
-247
-123
-41
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-123
-41
-247
-123
-41
-247
-118
-39
-246
-116
-28
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-116
-28
-247
-118
-39
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-130
-53
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-118
-39
-247
-118
-39
-246
-116
-28
-246
-116
-28
-246
-116
-28
-247
-118
-39
-247
-118
-39
-247
-123
-41
-247
-123
-41
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-118
-39
-246
-116
-28
-247
-111
-26
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-123
-41
-248
-138
-64
-247
-150
-84
-251
-168
-115
-230
-173
-136
-47
-40
-38
-59
-50
-39
-168
-127
-42
-168
-127
-42
-158
-125
-46
-158
-125
-46
-161
-127
-40
-171
-129
-45
-59
-50
-39
-71
-60
-43
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-152
-119
-47
-170
-137
-67
-239
-227
-208
-170
-137
-67
-160
-120
-43
-158
-125
-46
-171
-129
-45
-123
-102
-54
-47
-40
-38
-209
-171
-139
-248
-180
-134
-247
-165
-111
-249
-146
-83
-247
-130
-60
-247
-123
-41
-247
-111
-26
-247
-111
-26
-246
-109
-10
-247
-111
-26
-247
-123
-41
-247
-130
-60
-247
-150
-84
-249
-174
-124
-236
-186
-153
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-91
-92
-89
-255
-215
-190
-253
-204
-176
-249
-189
-146
-249
-174
-124
-247
-165
-111
-246
-156
-93
-249
-146
-83
-247
-143
-74
-248
-138
-64
-247
-130
-60
-247
-130
-53
-247
-123
-41
-246
-116
-28
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-116
-28
-247
-118
-39
-247
-123
-41
-247
-130
-53
-248
-138
-64
-250
-139
-73
-247
-143
-74
-249
-146
-83
-247
-150
-84
-249
-146
-83
-249
-146
-83
-247
-143
-74
-248
-138
-64
-247
-130
-60
-247
-130
-53
-247
-123
-41
-247
-118
-39
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-109
-10
-247
-111
-26
-247
-111
-26
-246
-116
-28
-247
-118
-39
-247
-123
-41
-247
-130
-53
-248
-138
-64
-250
-139
-73
-247
-143
-74
-249
-146
-83
-249
-146
-83
-249
-146
-83
-249
-146
-83
-249
-146
-83
-247
-143
-74
-247
-143
-74
-250
-139
-73
-250
-139
-73
-248
-138
-64
-247
-130
-60
-247
-130
-53
-247
-130
-53
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-130
-53
-247
-130
-60
-250
-139
-73
-247
-143
-74
-249
-146
-83
-249
-146
-83
-249
-146
-83
-249
-146
-83
-249
-146
-83
-247
-143
-74
-247
-143
-74
-247
-143
-74
-247
-143
-74
-247
-150
-84
-249
-159
-103
-249
-174
-124
-252
-185
-144
-250
-200
-166
-217
-187
-166
-48
-58
-59
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-63
-69
-60
-137
-127
-115
-251
-192
-154
-249
-174
-124
-246
-156
-93
-247
-143
-74
-248
-138
-64
-247
-130
-60
-247
-130
-60
-248
-138
-64
-250
-139
-73
-247
-143
-74
-249
-146
-83
-247
-150
-84
-249
-146
-83
-249
-146
-83
-247
-143
-74
-248
-138
-64
-247
-130
-60
-247
-130
-53
-247
-130
-53
-247
-130
-60
-250
-139
-73
-247
-150
-84
-251
-168
-115
-249
-189
-146
-161
-144
-134
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-234
-125
-52
-173
-106
-60
-48
-58
-59
-187
-166
-150
-253
-212
-188
-250
-197
-158
-248
-180
-134
-251
-168
-115
-249
-159
-103
-247
-150
-84
-247
-143
-74
-250
-139
-73
-248
-138
-64
-247
-130
-53
-247
-123
-41
-247
-118
-39
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-118
-39
-247
-123
-41
-247
-130
-53
-248
-138
-64
-250
-139
-73
-247
-143
-74
-249
-146
-83
-247
-150
-84
-247
-150
-84
-249
-146
-83
-247
-143
-74
-250
-139
-73
-247
-130
-60
-247
-130
-53
-247
-123
-41
-247
-118
-39
-247
-111
-26
-247
-111
-26
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-118
-39
-247
-123
-41
-247
-130
-53
-247
-130
-60
-248
-138
-64
-247
-143
-74
-249
-146
-83
-249
-146
-83
-249
-146
-83
-249
-146
-83
-249
-146
-83
-247
-143
-74
-247
-143
-74
-247
-143
-74
-250
-139
-73
-250
-139
-73
-250
-139
-73
-248
-138
-64
-248
-138
-64
-248
-138
-64
-248
-138
-64
-248
-138
-64
-248
-138
-64
-250
-139
-73
-250
-139
-73
-250
-139
-73
-250
-139
-73
-247
-143
-74
-247
-143
-74
-250
-139
-73
-250
-139
-73
-248
-138
-64
-248
-138
-64
-247
-130
-60
-247
-130
-60
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-60
-247
-130
-60
-248
-138
-64
-250
-139
-73
-247
-143
-74
-247
-150
-84
-249
-159
-103
-251
-168
-115
-248
-180
-134
-250
-197
-158
-253
-212
-188
-207
-178
-158
-51
-62
-63
-155
-100
-63
-234
-125
-52
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-249
-189
-146
-247
-165
-111
-247
-143
-74
-247
-130
-53
-246
-116
-28
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-118
-39
-247
-123
-41
-247
-130
-53
-247
-130
-60
-250
-139
-73
-247
-143
-74
-249
-146
-83
-247
-150
-84
-247
-150
-84
-249
-146
-83
-247
-143
-74
-250
-139
-73
-248
-138
-64
-247
-130
-53
-247
-123
-41
-247
-123
-41
-247
-118
-39
-247
-118
-39
-247
-118
-39
-247
-123
-41
-247
-123
-41
-247
-130
-53
-247
-130
-53
-248
-138
-64
-248
-138
-64
-250
-139
-73
-250
-139
-73
-247
-143
-74
-247
-143
-74
-250
-139
-73
-250
-139
-73
-248
-138
-64
-247
-130
-60
-247
-130
-60
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-60
-248
-138
-64
-250
-139
-73
-247
-143
-74
-249
-146
-83
-249
-146
-83
-249
-146
-83
-249
-146
-83
-249
-146
-83
-247
-143
-74
-247
-143
-74
-250
-139
-73
-250
-139
-73
-248
-138
-64
-247
-130
-60
-247
-130
-53
-247
-123
-41
-247
-123
-41
-246
-116
-28
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-111
-26
-247
-118
-39
-247
-130
-53
-247
-143
-74
-249
-159
-103
-252
-185
-144
-139
-115
-96
-35
-31
-30
-129
-106
-52
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-117
-98
-55
-35
-31
-30
-152
-119
-47
-168
-127
-42
-168
-127
-42
-160
-120
-43
-168
-127
-42
-171
-129
-45
-152
-119
-47
-216
-194
-154
-224
-207
-180
-160
-120
-43
-160
-120
-43
-137
-110
-49
-102
-91
-75
-35
-31
-30
-115
-102
-92
-250
-200
-166
-250
-176
-132
-249
-159
-103
-249
-146
-83
-247
-130
-60
-247
-123
-41
-246
-116
-28
-247
-111
-26
-246
-116
-28
-247
-123
-41
-248
-138
-64
-249
-152
-92
-249
-174
-124
-236
-186
-153
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-91
-92
-89
-255
-215
-190
-255
-215
-190
-253
-204
-176
-250
-197
-158
-252
-185
-144
-249
-174
-124
-251
-168
-115
-249
-159
-103
-246
-156
-93
-247
-150
-84
-250
-139
-73
-247
-130
-60
-247
-130
-53
-247
-123
-41
-247
-118
-39
-246
-116
-28
-246
-116
-28
-247
-118
-39
-247
-123
-41
-247
-130
-53
-248
-138
-64
-249
-146
-83
-249
-152
-92
-249
-159
-103
-247
-165
-111
-251
-168
-115
-251
-168
-115
-251
-168
-115
-251
-168
-115
-247
-165
-111
-249
-159
-103
-247
-150
-84
-247
-143
-74
-248
-138
-64
-247
-130
-53
-247
-123
-41
-247
-118
-39
-246
-116
-28
-246
-116
-28
-246
-116
-28
-247
-118
-39
-247
-123
-41
-247
-130
-60
-250
-139
-73
-249
-146
-83
-249
-152
-92
-249
-159
-103
-247
-165
-111
-251
-168
-115
-251
-168
-115
-251
-168
-115
-251
-168
-115
-247
-165
-111
-247
-165
-111
-247
-165
-111
-249
-159
-103
-249
-159
-103
-246
-156
-93
-247
-150
-84
-249
-146
-83
-247
-143
-74
-248
-138
-64
-247
-130
-60
-247
-130
-60
-247
-130
-60
-248
-138
-64
-250
-139
-73
-249
-146
-83
-249
-152
-92
-249
-159
-103
-249
-159
-103
-247
-165
-111
-251
-168
-115
-251
-168
-115
-251
-168
-115
-251
-168
-115
-247
-165
-111
-247
-165
-111
-249
-159
-103
-247
-165
-111
-251
-168
-115
-250
-176
-132
-252
-185
-144
-250
-200
-166
-255
-215
-190
-217
-187
-166
-48
-58
-59
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-65
-67
-64
-137
-127
-115
-250
-200
-166
-250
-176
-132
-247
-165
-111
-249
-152
-92
-247
-150
-84
-249
-146
-83
-247
-150
-84
-249
-152
-92
-249
-159
-103
-247
-165
-111
-251
-168
-115
-251
-168
-115
-251
-168
-115
-247
-165
-111
-249
-159
-103
-246
-156
-93
-247
-150
-84
-247
-143
-74
-250
-139
-73
-247
-143
-74
-249
-146
-83
-249
-159
-103
-249
-174
-124
-251
-192
-154
-161
-144
-134
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-227
-126
-50
-173
-106
-60
-51
-62
-63
-187
-166
-150
-255
-215
-190
-253
-212
-188
-250
-200
-166
-249
-189
-146
-248
-180
-134
-249
-174
-124
-247
-165
-111
-249
-159
-103
-249
-152
-92
-247
-143
-74
-248
-138
-64
-247
-130
-53
-247
-123
-41
-247
-118
-39
-246
-116
-28
-247
-111
-26
-246
-116
-28
-247
-118
-39
-247
-123
-41
-247
-130
-53
-248
-138
-64
-247
-143
-74
-249
-152
-92
-249
-159
-103
-247
-165
-111
-251
-168
-115
-251
-168
-115
-251
-168
-115
-251
-168
-115
-247
-165
-111
-249
-159
-103
-249
-152
-92
-247
-143
-74
-248
-138
-64
-247
-130
-53
-247
-123
-41
-247
-118
-39
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-116
-28
-247
-123
-41
-247
-130
-53
-248
-138
-64
-247
-143
-74
-247
-150
-84
-249
-159
-103
-249
-159
-103
-247
-165
-111
-251
-168
-115
-251
-168
-115
-251
-168
-115
-251
-168
-115
-247
-165
-111
-247
-165
-111
-249
-159
-103
-249
-159
-103
-249
-159
-103
-249
-159
-103
-249
-159
-103
-249
-159
-103
-246
-156
-93
-246
-156
-93
-246
-156
-93
-249
-159
-103
-249
-159
-103
-249
-159
-103
-249
-159
-103
-249
-159
-103
-249
-159
-103
-249
-159
-103
-249
-159
-103
-249
-159
-103
-249
-159
-103
-249
-152
-92
-249
-152
-92
-247
-150
-84
-249
-146
-83
-249
-146
-83
-249
-146
-83
-247
-150
-84
-249
-152
-92
-246
-156
-93
-249
-159
-103
-247
-165
-111
-249
-174
-124
-250
-176
-132
-249
-189
-146
-250
-200
-166
-253
-212
-188
-255
-215
-190
-207
-178
-158
-51
-62
-63
-155
-100
-63
-234
-125
-52
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-249
-189
-146
-247
-165
-111
-247
-143
-74
-247
-130
-53
-246
-116
-28
-246
-109
-10
-247
-103
-7
-247
-103
-7
-246
-109
-10
-247
-111
-26
-246
-116
-28
-247
-123
-41
-247
-130
-53
-248
-138
-64
-247
-143
-74
-247
-150
-84
-249
-159
-103
-247
-165
-111
-251
-168
-115
-251
-168
-115
-251
-168
-115
-251
-168
-115
-247
-165
-111
-249
-159
-103
-249
-152
-92
-249
-146
-83
-250
-139
-73
-247
-130
-60
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-60
-248
-138
-64
-247
-143
-74
-249
-146
-83
-249
-152
-92
-246
-156
-93
-249
-159
-103
-249
-159
-103
-249
-159
-103
-249
-159
-103
-249
-159
-103
-249
-159
-103
-246
-156
-93
-249
-152
-92
-247
-150
-84
-249
-146
-83
-247
-143
-74
-247
-143
-74
-247
-143
-74
-249
-146
-83
-247
-150
-84
-246
-156
-93
-249
-159
-103
-247
-165
-111
-247
-165
-111
-251
-168
-115
-251
-168
-115
-251
-168
-115
-247
-165
-111
-247
-165
-111
-247
-165
-111
-249
-159
-103
-249
-159
-103
-246
-156
-93
-247
-150
-84
-247
-143
-74
-248
-138
-64
-247
-130
-53
-247
-123
-41
-247
-118
-39
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-123
-41
-248
-138
-64
-249
-152
-92
-249
-174
-124
-236
-186
-153
-47
-40
-38
-59
-50
-39
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-47
-40
-38
-108
-87
-46
-168
-127
-42
-111
-94
-57
-76
-70
-64
-59
-50
-39
-101
-83
-47
-160
-120
-43
-170
-137
-67
-253
-255
-252
-195
-167
-113
-145
-114
-49
-69
-69
-61
-120
-114
-108
-35
-31
-30
-47
-40
-38
-217
-187
-166
-250
-197
-158
-250
-176
-132
-249
-159
-103
-249
-146
-83
-248
-138
-64
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-130
-53
-250
-139
-73
-246
-156
-93
-250
-176
-132
-232
-190
-161
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-91
-92
-89
-255
-215
-190
-255
-215
-190
-245
-212
-186
-227
-196
-175
-212
-173
-150
-209
-171
-139
-219
-170
-138
-240
-181
-138
-250
-176
-132
-251
-168
-115
-249
-159
-103
-247
-150
-84
-250
-139
-73
-247
-130
-60
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-248
-138
-64
-249
-146
-83
-246
-156
-93
-247
-165
-111
-249
-174
-124
-248
-180
-134
-240
-181
-138
-219
-170
-138
-203
-161
-131
-203
-161
-131
-219
-170
-138
-240
-181
-138
-250
-176
-132
-249
-174
-124
-249
-159
-103
-249
-152
-92
-247
-143
-74
-247
-130
-60
-247
-130
-53
-247
-123
-41
-247
-123
-41
-247
-130
-53
-247
-130
-53
-248
-138
-64
-249
-146
-83
-246
-156
-93
-247
-165
-111
-249
-174
-124
-245
-179
-138
-230
-173
-136
-203
-161
-131
-203
-161
-131
-219
-170
-138
-239
-182
-144
-251
-192
-154
-249
-189
-146
-252
-185
-144
-252
-185
-144
-248
-180
-134
-245
-169
-119
-234
-168
-124
-247
-165
-111
-249
-159
-103
-249
-152
-92
-247
-150
-84
-247
-150
-84
-247
-150
-84
-249
-152
-92
-249
-159
-103
-247
-165
-111
-249
-174
-124
-248
-180
-134
-230
-173
-136
-219
-170
-138
-203
-161
-131
-209
-171
-139
-239
-182
-144
-251
-192
-154
-249
-189
-146
-249
-189
-146
-252
-185
-144
-252
-185
-144
-249
-189
-146
-236
-186
-153
-250
-200
-166
-255
-215
-190
-255
-215
-190
-217
-187
-166
-48
-58
-59
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-65
-67
-64
-137
-127
-115
-253
-204
-176
-252
-185
-144
-249
-174
-124
-247
-165
-111
-247
-165
-111
-247
-165
-111
-251
-168
-115
-249
-174
-124
-248
-180
-134
-230
-173
-136
-219
-170
-138
-203
-161
-131
-209
-171
-139
-230
-173
-136
-245
-179
-138
-250
-176
-132
-251
-168
-115
-249
-159
-103
-249
-159
-103
-246
-156
-93
-249
-159
-103
-251
-168
-115
-248
-180
-134
-250
-197
-158
-161
-144
-134
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-227
-126
-50
-173
-106
-60
-51
-62
-63
-187
-166
-150
-255
-215
-190
-255
-215
-190
-234
-204
-183
-207
-178
-158
-209
-171
-139
-209
-171
-139
-230
-173
-136
-248
-180
-134
-249
-174
-124
-247
-165
-111
-249
-152
-92
-247
-143
-74
-248
-138
-64
-247
-130
-53
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-130
-53
-248
-138
-64
-247
-143
-74
-249
-152
-92
-247
-165
-111
-249
-174
-124
-248
-180
-134
-240
-181
-138
-219
-170
-138
-203
-161
-131
-203
-161
-131
-219
-170
-138
-240
-181
-138
-248
-180
-134
-249
-174
-124
-247
-165
-111
-249
-152
-92
-247
-143
-74
-248
-138
-64
-247
-130
-53
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-130
-53
-247
-130
-60
-247
-143
-74
-249
-152
-92
-249
-159
-103
-249
-174
-124
-250
-176
-132
-240
-181
-138
-219
-170
-138
-203
-161
-131
-203
-161
-131
-230
-173
-136
-251
-192
-154
-249
-189
-146
-249
-189
-146
-252
-185
-144
-252
-185
-144
-248
-180
-134
-234
-168
-124
-250
-176
-132
-248
-180
-134
-250
-176
-132
-250
-176
-132
-250
-176
-132
-248
-180
-134
-248
-180
-134
-230
-173
-136
-240
-181
-138
-252
-185
-144
-252
-185
-144
-252
-185
-144
-252
-185
-144
-248
-180
-134
-234
-168
-124
-234
-168
-124
-249
-174
-124
-251
-168
-115
-247
-165
-111
-247
-165
-111
-247
-165
-111
-251
-168
-115
-249
-174
-124
-250
-176
-132
-248
-180
-134
-230
-173
-136
-219
-170
-138
-209
-171
-139
-207
-178
-158
-227
-196
-175
-253
-212
-188
-255
-215
-190
-217
-187
-166
-51
-62
-63
-155
-100
-63
-234
-125
-52
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-249
-189
-146
-247
-165
-111
-247
-143
-74
-247
-130
-53
-246
-116
-28
-247
-111
-26
-246
-109
-10
-246
-109
-10
-247
-111
-26
-246
-116
-28
-247
-123
-41
-247
-130
-60
-247
-143
-74
-249
-152
-92
-249
-159
-103
-249
-174
-124
-248
-180
-134
-240
-181
-138
-219
-170
-138
-203
-161
-131
-203
-161
-131
-219
-170
-138
-240
-181
-138
-248
-180
-134
-249
-174
-124
-247
-165
-111
-249
-159
-103
-247
-150
-84
-249
-146
-83
-247
-143
-74
-247
-143
-74
-249
-146
-83
-249
-152
-92
-249
-159
-103
-247
-165
-111
-234
-168
-124
-234
-168
-124
-248
-180
-134
-252
-185
-144
-252
-185
-144
-252
-185
-144
-248
-180
-134
-250
-176
-132
-234
-168
-124
-249
-174
-124
-251
-168
-115
-247
-165
-111
-247
-165
-111
-249
-159
-103
-247
-165
-111
-251
-168
-115
-249
-174
-124
-250
-176
-132
-248
-180
-134
-230
-173
-136
-203
-161
-131
-203
-161
-131
-219
-170
-138
-239
-182
-144
-251
-192
-154
-249
-189
-146
-252
-185
-144
-252
-185
-144
-248
-180
-134
-234
-168
-124
-238
-159
-107
-247
-165
-111
-249
-152
-92
-247
-143
-74
-247
-130
-60
-247
-123
-41
-246
-116
-28
-247
-111
-26
-246
-109
-10
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-111
-26
-246
-116
-28
-247
-130
-53
-247
-143
-74
-247
-165
-111
-252
-185
-144
-154
-133
-118
-24
-22
-23
-108
-87
-46
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-71
-60
-43
-85
-71
-43
-101
-83
-47
-89
-84
-82
-152
-147
-147
-24
-22
-23
-24
-22
-23
-108
-87
-46
-168
-127
-42
-224
-207
-180
-253
-255
-252
-209
-171
-139
-101
-83
-47
-24
-22
-23
-35
-31
-30
-35
-31
-30
-167
-142
-123
-253
-212
-188
-250
-197
-158
-248
-180
-134
-247
-165
-111
-247
-150
-84
-250
-139
-73
-247
-130
-60
-247
-130
-60
-248
-138
-64
-249
-146
-83
-249
-159
-103
-250
-176
-132
-232
-190
-161
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-97
-98
-96
-217
-187
-166
-137
-127
-115
-91
-92
-89
-55
-66
-67
-48
-58
-59
-48
-58
-59
-55
-66
-67
-84
-85
-82
-133
-120
-107
-209
-171
-139
-248
-180
-134
-251
-168
-115
-249
-159
-103
-247
-150
-84
-247
-143
-74
-250
-139
-73
-250
-139
-73
-249
-146
-83
-249
-152
-92
-247
-165
-111
-249
-174
-124
-245
-179
-138
-178
-146
-122
-124
-111
-99
-76
-78
-76
-51
-62
-63
-48
-58
-59
-48
-58
-59
-58
-69
-70
-91
-92
-89
-144
-125
-110
-203
-161
-131
-248
-180
-134
-249
-174
-124
-249
-159
-103
-247
-150
-84
-247
-143
-74
-248
-138
-64
-248
-138
-64
-250
-139
-73
-249
-146
-83
-246
-156
-93
-247
-165
-111
-250
-176
-132
-230
-173
-136
-154
-133
-118
-101
-100
-92
-58
-69
-70
-48
-58
-59
-48
-58
-59
-51
-62
-63
-84
-85
-82
-137
-127
-115
-217
-187
-166
-253
-212
-188
-227
-196
-175
-144
-125
-110
-89
-84
-82
-81
-77
-76
-115
-102
-92
-210
-156
-119
-249
-174
-124
-251
-168
-115
-251
-168
-115
-251
-168
-115
-249
-174
-124
-250
-176
-132
-252
-185
-144
-195
-157
-134
-124
-111
-99
-76
-78
-76
-51
-62
-63
-48
-58
-59
-48
-58
-59
-70
-79
-77
-120
-114
-108
-187
-166
-150
-253
-212
-188
-253
-212
-188
-172
-150
-134
-101
-100
-92
-77
-85
-81
-101
-100
-92
-176
-156
-141
-255
-215
-190
-217
-187
-166
-48
-58
-59
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-63
-69
-60
-137
-127
-115
-253
-212
-188
-250
-197
-158
-252
-185
-144
-248
-180
-134
-248
-180
-134
-252
-185
-144
-239
-182
-144
-167
-142
-123
-109
-106
-99
-70
-79
-77
-48
-58
-59
-48
-58
-59
-48
-58
-59
-58
-69
-70
-91
-92
-89
-150
-125
-114
-219
-170
-138
-248
-180
-134
-249
-174
-124
-249
-174
-124
-249
-174
-124
-250
-176
-132
-249
-189
-146
-253
-204
-176
-161
-144
-134
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-234
-125
-52
-183
-110
-59
-51
-62
-63
-176
-156
-141
-187
-166
-150
-109
-106
-99
-63
-74
-74
-43
-57
-62
-43
-57
-62
-43
-57
-62
-63
-74
-74
-109
-106
-99
-178
-146
-122
-245
-179
-138
-249
-174
-124
-249
-159
-103
-247
-150
-84
-247
-143
-74
-248
-138
-64
-248
-138
-64
-248
-138
-64
-247
-143
-74
-247
-150
-84
-249
-159
-103
-249
-174
-124
-252
-185
-144
-195
-157
-134
-124
-111
-99
-77
-85
-81
-51
-62
-63
-41
-58
-57
-43
-57
-62
-51
-62
-63
-77
-85
-81
-124
-111
-99
-195
-157
-134
-252
-185
-144
-249
-174
-124
-249
-159
-103
-247
-150
-84
-247
-143
-74
-248
-138
-64
-247
-130
-60
-248
-138
-64
-250
-139
-73
-247
-150
-84
-249
-159
-103
-251
-168
-115
-248
-180
-134
-203
-161
-131
-124
-111
-99
-77
-85
-81
-48
-58
-59
-43
-57
-62
-43
-57
-62
-63
-74
-74
-109
-106
-99
-187
-166
-150
-253
-212
-188
-253
-212
-188
-187
-166
-150
-109
-106
-99
-77
-85
-81
-84
-85
-82
-150
-125
-114
-232
-190
-161
-253
-204
-176
-253
-204
-176
-172
-150
-134
-101
-100
-92
-77
-85
-81
-91
-92
-89
-137
-127
-115
-227
-196
-175
-253
-212
-188
-186
-157
-134
-109
-106
-99
-77
-85
-81
-84
-85
-82
-124
-111
-99
-219
-170
-138
-249
-189
-146
-249
-189
-146
-249
-189
-146
-251
-192
-154
-250
-197
-158
-186
-157
-134
-109
-106
-99
-70
-79
-77
-43
-57
-62
-43
-57
-62
-41
-58
-57
-63
-74
-74
-101
-100
-92
-176
-156
-141
-194
-173
-157
-55
-66
-67
-155
-100
-63
-234
-125
-52
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-249
-189
-146
-247
-165
-111
-247
-143
-74
-247
-130
-53
-247
-118
-39
-247
-111
-26
-246
-109
-10
-247
-111
-26
-246
-116
-28
-247
-123
-41
-247
-130
-60
-249
-146
-83
-249
-159
-103
-249
-174
-124
-252
-185
-144
-203
-161
-131
-133
-120
-107
-84
-85
-82
-55
-66
-67
-43
-57
-62
-41
-58
-57
-51
-62
-63
-77
-85
-81
-124
-111
-99
-178
-146
-122
-239
-182
-144
-250
-176
-132
-249
-174
-124
-247
-165
-111
-249
-159
-103
-249
-159
-103
-247
-165
-111
-249
-174
-124
-210
-156
-119
-124
-111
-99
-77
-85
-81
-77
-85
-81
-109
-106
-99
-194
-173
-157
-253
-212
-188
-217
-187
-166
-133
-120
-107
-89
-84
-82
-76
-78
-76
-101
-100
-92
-178
-146
-122
-249
-189
-146
-252
-185
-144
-252
-185
-144
-252
-185
-144
-251
-192
-154
-236
-186
-153
-167
-142
-123
-101
-100
-92
-63
-74
-74
-41
-58
-57
-43
-57
-62
-51
-62
-63
-77
-85
-81
-137
-127
-115
-217
-187
-166
-253
-212
-188
-227
-196
-175
-144
-125
-110
-84
-85
-82
-76
-78
-76
-115
-102
-92
-204
-141
-99
-249
-159
-103
-247
-143
-74
-247
-130
-60
-247
-123
-41
-247
-111
-26
-246
-109
-10
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-123
-41
-248
-138
-64
-249
-152
-92
-249
-174
-124
-250
-197
-158
-82
-69
-65
-47
-40
-38
-152
-119
-47
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-101
-83
-47
-59
-50
-39
-101
-83
-47
-24
-22
-23
-35
-31
-30
-24
-22
-23
-24
-22
-23
-108
-87
-46
-168
-127
-42
-195
-167
-113
-253
-255
-252
-253
-255
-252
-239
-227
-208
-186
-157
-134
-162
-125
-96
-105
-93
-60
-47
-40
-38
-150
-125
-114
-217
-187
-166
-250
-200
-166
-252
-185
-144
-251
-168
-115
-246
-156
-93
-249
-146
-83
-247
-143
-74
-249
-146
-83
-249
-152
-92
-247
-165
-111
-252
-185
-144
-232
-190
-161
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-55
-66
-67
-58
-69
-70
-56
-64
-60
-83
-78
-61
-105
-93
-60
-117
-98
-55
-117
-98
-55
-105
-93
-60
-83
-78
-61
-56
-64
-60
-55
-66
-67
-144
-125
-110
-239
-182
-144
-250
-176
-132
-247
-165
-111
-249
-159
-103
-246
-156
-93
-249
-159
-103
-247
-165
-111
-249
-174
-124
-252
-185
-144
-195
-157
-134
-89
-84
-82
-48
-58
-59
-63
-69
-60
-95
-87
-59
-111
-94
-57
-123
-102
-54
-117
-98
-55
-105
-93
-60
-83
-78
-61
-56
-64
-60
-51
-62
-63
-124
-111
-99
-219
-170
-138
-248
-180
-134
-251
-168
-115
-249
-159
-103
-249
-152
-92
-249
-152
-92
-246
-156
-93
-247
-165
-111
-249
-174
-124
-252
-185
-144
-167
-142
-123
-70
-79
-77
-51
-62
-63
-75
-74
-61
-100
-89
-56
-117
-98
-55
-123
-102
-54
-105
-93
-60
-83
-78
-61
-51
-62
-63
-63
-74
-74
-172
-150
-134
-109
-106
-99
-51
-62
-63
-83
-78
-61
-95
-87
-59
-65
-67
-64
-65
-67
-64
-209
-171
-139
-249
-189
-146
-249
-189
-146
-249
-189
-146
-250
-197
-158
-212
-173
-150
-109
-106
-99
-48
-58
-59
-63
-69
-60
-95
-87
-59
-111
-94
-57
-123
-102
-54
-117
-98
-55
-95
-87
-59
-62
-63
-61
-48
-58
-59
-137
-127
-115
-146
-135
-124
-48
-58
-59
-75
-74
-61
-95
-87
-59
-75
-74
-61
-48
-58
-59
-161
-144
-134
-217
-187
-166
-48
-58
-59
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-63
-69
-60
-137
-127
-115
-255
-215
-190
-251
-209
-178
-250
-200
-166
-250
-200
-166
-250
-200
-166
-172
-150
-134
-77
-85
-81
-48
-58
-59
-69
-69
-61
-95
-87
-59
-111
-94
-57
-123
-102
-54
-117
-98
-55
-100
-89
-56
-75
-74
-61
-56
-64
-60
-55
-66
-67
-133
-120
-107
-236
-186
-153
-251
-192
-154
-249
-189
-146
-251
-192
-154
-250
-200
-166
-253
-212
-188
-161
-144
-134
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-227
-126
-50
-173
-106
-60
-51
-62
-63
-63
-74
-74
-48
-58
-59
-76
-70
-64
-118
-86
-65
-146
-97
-64
-155
-100
-63
-146
-97
-64
-118
-86
-65
-76
-70
-64
-43
-57
-62
-91
-92
-89
-203
-161
-131
-248
-180
-134
-251
-168
-115
-249
-159
-103
-249
-152
-92
-247
-150
-84
-249
-152
-92
-249
-159
-103
-251
-168
-115
-248
-180
-134
-209
-171
-139
-101
-100
-92
-43
-57
-62
-69
-69
-61
-106
-82
-65
-135
-94
-64
-155
-100
-63
-155
-100
-63
-135
-94
-64
-106
-82
-65
-65
-67
-64
-43
-57
-62
-101
-100
-92
-209
-171
-139
-248
-180
-134
-251
-168
-115
-249
-159
-103
-249
-152
-92
-247
-150
-84
-247
-150
-84
-246
-156
-93
-247
-165
-111
-250
-176
-132
-219
-170
-138
-124
-111
-99
-48
-58
-59
-62
-63
-61
-106
-82
-65
-139
-96
-61
-155
-100
-63
-146
-97
-64
-125
-90
-64
-76
-70
-64
-41
-58
-57
-120
-114
-108
-172
-150
-134
-51
-62
-63
-69
-69
-61
-112
-85
-63
-95
-78
-64
-51
-62
-63
-120
-114
-108
-245
-212
-186
-146
-135
-124
-43
-57
-62
-81
-73
-62
-118
-86
-65
-95
-78
-64
-56
-64
-60
-101
-100
-92
-133
-120
-107
-43
-57
-62
-76
-70
-64
-112
-85
-63
-106
-82
-65
-62
-63
-61
-77
-85
-81
-227
-196
-175
-253
-212
-188
-253
-212
-188
-217
-187
-166
-109
-106
-99
-41
-58
-57
-69
-69
-61
-112
-85
-63
-139
-96
-61
-155
-100
-63
-146
-97
-64
-118
-86
-65
-81
-73
-62
-48
-58
-59
-58
-69
-70
-51
-62
-63
-155
-100
-63
-234
-125
-52
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-251
-192
-154
-247
-165
-111
-249
-146
-83
-247
-130
-53
-247
-118
-39
-247
-111
-26
-247
-111
-26
-246
-116
-28
-247
-123
-41
-248
-138
-64
-249
-146
-83
-249
-159
-103
-250
-176
-132
-219
-170
-138
-124
-111
-99
-43
-57
-62
-62
-63
-61
-106
-82
-65
-135
-94
-64
-155
-100
-63
-155
-100
-63
-139
-96
-61
-106
-82
-65
-69
-69
-61
-43
-57
-62
-91
-92
-89
-195
-157
-134
-251
-192
-154
-252
-185
-144
-248
-180
-134
-248
-180
-134
-252
-185
-144
-203
-161
-131
-63
-74
-74
-62
-63
-61
-106
-82
-65
-112
-85
-63
-69
-69
-61
-55
-66
-67
-146
-135
-124
-63
-74
-74
-56
-64
-60
-95
-78
-64
-112
-85
-63
-76
-70
-64
-48
-58
-59
-172
-150
-134
-253
-204
-176
-251
-209
-178
-251
-209
-178
-187
-166
-150
-77
-85
-81
-48
-58
-59
-81
-73
-62
-125
-90
-64
-146
-97
-64
-155
-100
-63
-139
-96
-61
-95
-78
-64
-56
-64
-60
-58
-69
-70
-161
-144
-134
-109
-106
-99
-51
-62
-63
-95
-78
-64
-112
-85
-63
-65
-67
-64
-65
-67
-64
-204
-141
-99
-246
-156
-93
-250
-139
-73
-247
-130
-53
-247
-118
-39
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-246
-116
-28
-247
-130
-53
-247
-143
-74
-249
-159
-103
-252
-185
-144
-209
-171
-139
-24
-22
-23
-85
-71
-43
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-137
-110
-49
-47
-40
-38
-137
-110
-49
-101
-83
-47
-59
-50
-39
-59
-50
-39
-101
-83
-47
-158
-125
-46
-160
-120
-43
-192
-155
-91
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-237
-233
-225
-152
-147
-147
-81
-77
-76
-55
-48
-48
-115
-102
-92
-212
-173
-150
-251
-192
-154
-249
-174
-124
-247
-165
-111
-249
-159
-103
-249
-159
-103
-247
-165
-111
-249
-174
-124
-249
-189
-146
-238
-205
-179
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-43
-57
-62
-95
-87
-59
-145
-114
-49
-168
-127
-42
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-168
-127
-42
-145
-114
-49
-95
-87
-59
-48
-58
-59
-109
-106
-99
-236
-186
-153
-252
-185
-144
-248
-180
-134
-250
-176
-132
-250
-176
-132
-252
-185
-144
-251
-192
-154
-150
-125
-114
-48
-58
-59
-69
-69
-61
-117
-98
-55
-158
-125
-46
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-168
-127
-42
-152
-119
-47
-100
-89
-56
-56
-64
-60
-63
-74
-74
-186
-157
-134
-249
-189
-146
-248
-180
-134
-249
-174
-124
-249
-174
-124
-250
-176
-132
-252
-185
-144
-251
-192
-154
-133
-120
-107
-48
-58
-59
-75
-74
-61
-137
-110
-49
-168
-127
-42
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-145
-114
-49
-75
-74
-61
-43
-57
-62
-51
-62
-63
-123
-102
-54
-171
-129
-45
-171
-129
-45
-145
-114
-49
-56
-64
-60
-133
-120
-107
-253
-212
-188
-251
-209
-178
-253
-212
-188
-194
-173
-157
-63
-74
-74
-56
-64
-60
-111
-94
-57
-158
-125
-46
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-158
-125
-46
-105
-93
-60
-51
-62
-63
-43
-57
-62
-88
-82
-59
-168
-127
-42
-171
-129
-45
-168
-127
-42
-88
-82
-59
-63
-74
-74
-187
-166
-150
-55
-66
-67
-111
-94
-57
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-63
-69
-60
-137
-127
-115
-255
-215
-190
-255
-215
-190
-255
-215
-190
-245
-212
-186
-133
-120
-107
-48
-58
-59
-75
-74
-61
-129
-106
-52
-158
-125
-46
-171
-129
-45
-171
-129
-45
-171
-129
-45
-168
-127
-42
-171
-129
-45
-168
-127
-42
-145
-114
-49
-95
-87
-59
-51
-62
-63
-77
-85
-81
-212
-173
-150
-253
-204
-176
-253
-204
-176
-251
-209
-178
-255
-215
-190
-161
-144
-134
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-227
-126
-50
-183
-110
-59
-41
-58
-57
-69
-69
-61
-155
-100
-63
-214
-121
-50
-234
-126
-45
-234
-126
-45
-234
-126
-45
-234
-126
-45
-234
-126
-45
-224
-123
-55
-155
-100
-63
-69
-69
-61
-51
-62
-63
-178
-146
-122
-249
-189
-146
-250
-176
-132
-251
-168
-115
-251
-168
-115
-249
-174
-124
-250
-176
-132
-249
-189
-146
-167
-142
-123
-55
-66
-67
-65
-67
-64
-146
-97
-64
-212
-120
-56
-234
-126
-45
-234
-125
-52
-234
-126
-45
-234
-125
-52
-234
-126
-45
-234
-125
-52
-209
-117
-53
-146
-97
-64
-65
-67
-64
-55
-66
-67
-178
-146
-122
-249
-189
-146
-250
-176
-132
-251
-168
-115
-247
-165
-111
-251
-168
-115
-249
-174
-124
-252
-185
-144
-203
-161
-131
-63
-74
-74
-56
-64
-60
-125
-90
-64
-209
-117
-53
-234
-126
-45
-234
-126
-45
-234
-125
-52
-234
-126
-45
-234
-126
-45
-214
-121
-50
-146
-97
-64
-56
-64
-60
-41
-58
-57
-81
-73
-62
-209
-117
-53
-234
-126
-45
-234
-126
-45
-125
-90
-64
-51
-62
-63
-176
-156
-141
-55
-66
-67
-106
-82
-65
-225
-124
-48
-234
-126
-45
-234
-126
-45
-146
-97
-64
-41
-58
-57
-43
-57
-62
-125
-90
-64
-214
-121
-50
-234
-126
-45
-234
-126
-45
-183
-110
-59
-56
-64
-60
-137
-127
-115
-255
-215
-190
-194
-173
-157
-63
-74
-74
-62
-63
-61
-146
-97
-64
-214
-121
-50
-234
-125
-52
-234
-126
-45
-234
-125
-52
-234
-125
-52
-234
-126
-45
-225
-124
-48
-173
-106
-60
-81
-73
-62
-35
-56
-60
-155
-100
-63
-234
-125
-52
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-251
-192
-154
-247
-165
-111
-249
-146
-83
-247
-130
-53
-247
-118
-39
-246
-116
-28
-246
-116
-28
-247
-123
-41
-247
-130
-60
-249
-146
-83
-247
-165
-111
-248
-180
-134
-186
-157
-134
-58
-69
-70
-56
-64
-60
-135
-94
-64
-199
-115
-54
-234
-125
-52
-234
-126
-45
-234
-125
-52
-234
-125
-52
-234
-126
-45
-234
-125
-52
-212
-120
-56
-155
-100
-63
-76
-70
-64
-51
-62
-63
-146
-135
-124
-251
-209
-178
-253
-204
-176
-250
-200
-166
-253
-204
-176
-101
-100
-92
-69
-69
-61
-194
-112
-58
-234
-126
-45
-234
-126
-45
-199
-115
-54
-65
-67
-64
-35
-56
-60
-81
-73
-62
-194
-112
-58
-234
-125
-52
-234
-126
-45
-214
-121
-50
-95
-78
-64
-63
-74
-74
-238
-205
-179
-255
-215
-190
-161
-144
-134
-43
-57
-62
-81
-73
-62
-173
-106
-60
-225
-124
-48
-234
-126
-45
-234
-126
-45
-234
-125
-52
-234
-126
-45
-234
-126
-45
-194
-112
-58
-95
-78
-64
-41
-58
-57
-48
-58
-59
-155
-100
-63
-234
-126
-45
-234
-126
-45
-199
-115
-54
-69
-69
-61
-99
-90
-79
-251
-168
-115
-247
-150
-84
-247
-130
-60
-247
-123
-41
-247
-111
-26
-246
-109
-10
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-111
-26
-247
-118
-39
-247
-130
-60
-247
-150
-84
-249
-174
-124
-251
-192
-154
-124
-111
-99
-35
-31
-30
-137
-110
-49
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-47
-40
-38
-108
-87
-46
-175
-132
-40
-161
-127
-40
-168
-127
-42
-171
-129
-45
-158
-125
-46
-152
-119
-47
-203
-161
-131
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-186
-181
-179
-89
-84
-82
-47
-40
-38
-139
-115
-96
-236
-186
-153
-252
-185
-144
-250
-176
-132
-249
-174
-124
-250
-176
-132
-252
-185
-144
-250
-197
-158
-238
-205
-179
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-111
-94
-57
-171
-129
-45
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-171
-129
-45
-111
-94
-57
-48
-58
-59
-109
-106
-99
-253
-204
-176
-250
-200
-166
-250
-200
-166
-250
-200
-166
-253
-204
-176
-137
-127
-115
-43
-57
-62
-88
-82
-59
-158
-125
-46
-171
-129
-45
-161
-127
-40
-158
-125
-46
-158
-125
-46
-168
-127
-42
-161
-127
-40
-158
-125
-46
-158
-125
-46
-168
-127
-42
-171
-129
-45
-145
-114
-49
-69
-69
-61
-51
-62
-63
-187
-166
-150
-250
-200
-166
-250
-197
-158
-251
-192
-154
-250
-197
-158
-253
-204
-176
-133
-120
-107
-48
-58
-59
-95
-87
-59
-168
-127
-42
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-158
-125
-46
-75
-74
-61
-62
-63
-61
-168
-127
-42
-161
-127
-40
-158
-125
-46
-171
-129
-45
-83
-78
-61
-91
-92
-89
-255
-215
-190
-255
-215
-190
-207
-178
-158
-58
-69
-70
-63
-69
-60
-145
-114
-49
-171
-129
-45
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-171
-129
-45
-105
-93
-60
-43
-57
-62
-137
-110
-49
-171
-129
-45
-158
-125
-46
-171
-129
-45
-137
-110
-49
-51
-62
-63
-146
-135
-124
-58
-69
-70
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-152
-119
-47
-65
-67
-64
-137
-127
-115
-255
-215
-190
-255
-215
-190
-245
-212
-186
-120
-114
-108
-48
-58
-59
-100
-89
-56
-168
-127
-42
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-171
-129
-45
-129
-106
-52
-61
-67
-58
-63
-74
-74
-207
-178
-158
-255
-215
-190
-255
-215
-190
-255
-215
-190
-161
-144
-134
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-234
-125
-52
-173
-106
-60
-95
-78
-64
-209
-117
-53
-234
-126
-45
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-126
-45
-209
-117
-53
-89
-75
-66
-51
-62
-63
-187
-166
-150
-250
-197
-158
-251
-192
-154
-249
-189
-146
-251
-192
-154
-250
-200
-166
-161
-144
-134
-41
-58
-57
-95
-78
-64
-199
-115
-54
-234
-126
-45
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-126
-45
-199
-115
-54
-89
-75
-66
-41
-58
-57
-167
-142
-123
-250
-200
-166
-251
-192
-154
-252
-185
-144
-249
-189
-146
-250
-197
-158
-212
-173
-150
-63
-74
-74
-69
-69
-61
-183
-110
-59
-234
-126
-45
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-126
-45
-163
-104
-61
-41
-58
-57
-135
-94
-64
-234
-126
-45
-224
-123
-55
-234
-125
-52
-188
-112
-56
-51
-62
-63
-109
-106
-99
-51
-62
-63
-188
-112
-56
-234
-126
-45
-224
-123
-55
-234
-125
-52
-188
-112
-56
-43
-57
-62
-112
-85
-63
-234
-126
-45
-227
-126
-50
-224
-123
-55
-227
-126
-50
-234
-126
-45
-95
-78
-64
-109
-106
-99
-217
-187
-166
-58
-69
-70
-69
-69
-61
-188
-112
-56
-234
-126
-45
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-125
-52
-214
-121
-50
-95
-78
-64
-146
-97
-64
-234
-125
-52
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-251
-192
-154
-247
-165
-111
-249
-146
-83
-247
-130
-53
-247
-123
-41
-247
-118
-39
-247
-123
-41
-247
-130
-53
-247
-143
-74
-249
-159
-103
-250
-176
-132
-186
-157
-134
-51
-62
-63
-81
-73
-62
-188
-112
-56
-234
-126
-45
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-126
-45
-212
-120
-56
-106
-82
-65
-41
-58
-57
-146
-135
-124
-255
-215
-190
-255
-215
-190
-234
-204
-183
-63
-74
-74
-125
-90
-64
-234
-126
-45
-224
-123
-55
-227
-126
-50
-234
-125
-52
-89
-75
-66
-62
-63
-61
-199
-115
-54
-234
-126
-45
-224
-123
-55
-224
-123
-55
-234
-126
-45
-163
-104
-61
-48
-58
-59
-217
-187
-166
-172
-150
-134
-41
-58
-57
-106
-82
-65
-214
-121
-50
-234
-126
-45
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-225
-124
-48
-81
-73
-62
-69
-69
-61
-227
-126
-50
-227
-126
-50
-224
-123
-55
-238
-123
-45
-125
-90
-64
-55
-66
-67
-250
-176
-132
-246
-156
-93
-250
-139
-73
-247
-123
-41
-247
-111
-26
-246
-109
-10
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-123
-41
-250
-139
-73
-249
-159
-103
-248
-180
-134
-232
-190
-161
-47
-40
-38
-71
-60
-43
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-71
-60
-43
-71
-60
-43
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-160
-120
-43
-170
-137
-67
-237
-233
-225
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-186
-181
-179
-74
-68
-68
-89
-75
-66
-212
-173
-150
-250
-197
-158
-251
-192
-154
-249
-189
-146
-251
-192
-154
-253
-204
-176
-234
-204
-183
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-152
-119
-47
-168
-127
-42
-158
-125
-46
-158
-125
-46
-168
-127
-42
-171
-129
-45
-171
-129
-45
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-111
-94
-57
-48
-58
-59
-161
-144
-134
-255
-215
-190
-255
-215
-190
-255
-215
-190
-172
-150
-134
-48
-58
-59
-95
-87
-59
-168
-127
-42
-168
-127
-42
-158
-125
-46
-161
-127
-40
-171
-129
-45
-158
-125
-46
-152
-119
-47
-152
-119
-47
-168
-127
-42
-168
-127
-42
-158
-125
-46
-158
-125
-46
-168
-127
-42
-152
-119
-47
-69
-69
-61
-58
-69
-70
-217
-187
-166
-255
-215
-190
-255
-215
-190
-255
-215
-190
-172
-150
-134
-43
-57
-62
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-171
-129
-45
-171
-129
-45
-171
-129
-45
-158
-125
-46
-168
-127
-42
-137
-110
-49
-83
-78
-61
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-88
-82
-59
-84
-85
-82
-255
-215
-190
-238
-205
-179
-84
-85
-82
-62
-63
-61
-145
-114
-49
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-171
-129
-45
-171
-129
-45
-171
-129
-45
-168
-127
-42
-161
-127
-40
-158
-125
-46
-88
-82
-59
-152
-119
-47
-161
-127
-40
-158
-125
-46
-168
-127
-42
-145
-114
-49
-51
-62
-63
-137
-127
-115
-58
-69
-70
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-152
-119
-47
-63
-69
-60
-137
-127
-115
-255
-215
-190
-255
-215
-190
-137
-127
-115
-48
-58
-59
-105
-93
-60
-171
-129
-45
-161
-127
-40
-158
-125
-46
-168
-127
-42
-168
-127
-42
-158
-125
-46
-152
-119
-47
-152
-119
-47
-168
-127
-42
-171
-129
-45
-158
-125
-46
-158
-125
-46
-171
-129
-45
-145
-114
-49
-62
-63
-61
-70
-79
-77
-227
-196
-175
-255
-215
-190
-255
-215
-190
-161
-144
-134
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-227
-126
-50
-212
-120
-56
-214
-121
-50
-227
-126
-50
-224
-123
-55
-227
-126
-50
-234
-126
-45
-234
-126
-45
-234
-125
-52
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-209
-117
-53
-76
-70
-64
-70
-79
-77
-234
-204
-183
-253
-212
-188
-251
-209
-178
-253
-212
-188
-187
-166
-150
-43
-57
-62
-95
-78
-64
-225
-124
-48
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-125
-52
-234
-126
-45
-234
-126
-45
-227
-126
-50
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-125
-52
-214
-121
-50
-95
-78
-64
-48
-58
-59
-194
-173
-157
-253
-212
-188
-251
-209
-178
-251
-209
-178
-245
-212
-186
-91
-92
-89
-62
-63
-61
-188
-112
-56
-234
-126
-45
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-125
-52
-234
-125
-52
-234
-126
-45
-227
-126
-50
-224
-123
-55
-234
-126
-45
-125
-90
-64
-146
-97
-64
-234
-125
-52
-224
-123
-55
-227
-126
-50
-194
-112
-58
-56
-64
-60
-97
-98
-96
-56
-64
-60
-188
-112
-56
-227
-126
-50
-224
-123
-55
-224
-123
-55
-212
-120
-56
-183
-110
-59
-214
-121
-50
-227
-126
-50
-224
-123
-55
-227
-126
-50
-227
-126
-50
-234
-126
-45
-95
-78
-64
-84
-85
-82
-91
-92
-89
-62
-63
-61
-188
-112
-56
-234
-126
-45
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-125
-52
-234
-126
-45
-234
-126
-45
-227
-126
-50
-224
-123
-55
-227
-126
-50
-224
-123
-55
-209
-117
-53
-227
-126
-50
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-251
-192
-154
-247
-165
-111
-249
-146
-83
-247
-130
-60
-247
-123
-41
-247
-123
-41
-247
-130
-53
-248
-138
-64
-249
-152
-92
-249
-174
-124
-209
-171
-139
-58
-69
-70
-81
-73
-62
-209
-117
-53
-234
-125
-52
-224
-123
-55
-224
-123
-55
-227
-126
-50
-227
-126
-50
-234
-125
-52
-234
-125
-52
-234
-125
-52
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-227
-126
-50
-112
-85
-63
-41
-58
-57
-172
-150
-134
-255
-215
-190
-227
-196
-175
-63
-74
-74
-135
-94
-64
-234
-125
-52
-224
-123
-55
-224
-123
-55
-224
-123
-55
-194
-112
-58
-199
-115
-54
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-238
-128
-40
-163
-104
-61
-55
-66
-67
-161
-144
-134
-58
-69
-70
-95
-78
-64
-225
-124
-48
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-227
-126
-50
-234
-126
-45
-234
-126
-45
-234
-125
-52
-227
-126
-50
-234
-125
-52
-173
-106
-60
-118
-86
-65
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-125
-52
-146
-97
-64
-51
-62
-63
-252
-185
-144
-249
-159
-103
-247
-143
-74
-247
-130
-53
-246
-116
-28
-246
-109
-10
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-111
-26
-247
-118
-39
-247
-130
-53
-249
-146
-83
-251
-168
-115
-251
-192
-154
-154
-133
-118
-24
-22
-23
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-108
-87
-46
-47
-40
-38
-158
-125
-46
-158
-125
-46
-158
-125
-46
-160
-120
-43
-156
-125
-62
-224
-207
-180
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-152
-147
-147
-35
-31
-30
-55
-48
-48
-154
-133
-118
-217
-187
-166
-253
-204
-176
-253
-204
-176
-253
-212
-188
-234
-204
-183
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-158
-125
-46
-168
-127
-42
-158
-125
-46
-123
-102
-54
-105
-93
-60
-111
-94
-57
-129
-106
-52
-168
-127
-42
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-83
-78
-61
-58
-69
-70
-227
-196
-175
-255
-215
-190
-217
-187
-166
-58
-69
-70
-75
-74
-61
-168
-127
-42
-161
-127
-40
-158
-125
-46
-168
-127
-42
-152
-119
-47
-105
-93
-60
-69
-69
-61
-62
-63
-61
-62
-63
-61
-75
-74
-61
-117
-98
-55
-161
-127
-40
-161
-127
-40
-158
-125
-46
-171
-129
-45
-145
-114
-49
-56
-64
-60
-97
-98
-96
-245
-212
-186
-255
-215
-190
-227
-196
-175
-63
-74
-74
-75
-74
-61
-158
-125
-46
-168
-127
-42
-158
-125
-46
-158
-125
-46
-168
-127
-42
-158
-125
-46
-129
-106
-52
-111
-94
-57
-105
-93
-60
-129
-106
-52
-158
-125
-46
-168
-127
-42
-161
-127
-40
-152
-119
-47
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-84
-85
-82
-255
-215
-190
-161
-144
-134
-48
-58
-59
-123
-102
-54
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-145
-114
-49
-117
-98
-55
-105
-93
-60
-117
-98
-55
-145
-114
-49
-171
-129
-45
-168
-127
-42
-152
-119
-47
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-145
-114
-49
-51
-62
-63
-137
-127
-115
-58
-69
-70
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-63
-69
-60
-137
-127
-115
-255
-215
-190
-194
-173
-157
-48
-58
-59
-88
-82
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-152
-119
-47
-95
-87
-59
-69
-69
-61
-62
-63
-61
-62
-63
-61
-83
-78
-61
-123
-102
-54
-168
-127
-42
-161
-127
-40
-158
-125
-46
-171
-129
-45
-129
-106
-52
-51
-62
-63
-120
-114
-108
-255
-215
-190
-255
-215
-190
-161
-144
-134
-56
-64
-60
-199
-115
-54
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-227
-126
-50
-227
-126
-50
-227
-126
-50
-188
-112
-56
-146
-97
-64
-135
-94
-64
-146
-97
-64
-199
-115
-54
-234
-125
-52
-224
-123
-55
-224
-123
-55
-224
-123
-55
-234
-126
-45
-173
-106
-60
-48
-58
-59
-146
-135
-124
-255
-215
-190
-255
-215
-190
-234
-204
-183
-77
-85
-81
-76
-70
-64
-214
-121
-50
-234
-125
-52
-224
-123
-55
-224
-123
-55
-234
-125
-52
-214
-121
-50
-163
-104
-61
-135
-94
-64
-135
-94
-64
-163
-104
-61
-224
-123
-55
-234
-125
-52
-224
-123
-55
-224
-123
-55
-227
-126
-50
-212
-120
-56
-76
-70
-64
-77
-85
-81
-238
-205
-179
-255
-215
-190
-255
-215
-190
-161
-144
-134
-48
-58
-59
-155
-100
-63
-234
-126
-45
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-125
-52
-199
-115
-54
-155
-100
-63
-135
-94
-64
-146
-97
-64
-188
-112
-56
-227
-126
-50
-227
-126
-50
-214
-121
-50
-209
-117
-53
-227
-126
-50
-224
-123
-55
-227
-126
-50
-194
-112
-58
-56
-64
-60
-101
-100
-92
-56
-64
-60
-188
-112
-56
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-234
-125
-52
-227
-126
-50
-224
-123
-55
-227
-126
-50
-227
-126
-50
-199
-115
-54
-125
-90
-64
-51
-62
-63
-55
-66
-67
-41
-58
-57
-146
-97
-64
-234
-126
-45
-224
-123
-55
-224
-123
-55
-224
-123
-55
-234
-126
-45
-209
-117
-53
-155
-100
-63
-135
-94
-64
-139
-96
-61
-183
-110
-59
-227
-126
-50
-227
-126
-50
-227
-126
-50
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-251
-192
-154
-247
-165
-111
-249
-146
-83
-247
-130
-60
-247
-130
-53
-247
-130
-53
-247
-130
-60
-249
-146
-83
-247
-165
-111
-252
-185
-144
-101
-100
-92
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-227
-126
-50
-173
-106
-60
-135
-94
-64
-135
-94
-64
-163
-104
-61
-214
-121
-50
-234
-125
-52
-224
-123
-55
-224
-123
-55
-227
-126
-50
-224
-123
-55
-81
-73
-62
-58
-69
-70
-227
-196
-175
-234
-204
-183
-63
-74
-74
-135
-94
-64
-234
-126
-45
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-227
-126
-50
-224
-123
-55
-227
-126
-50
-234
-125
-52
-212
-120
-56
-155
-100
-63
-69
-69
-61
-76
-78
-76
-84
-85
-82
-65
-67
-64
-209
-117
-53
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-227
-126
-50
-183
-110
-59
-139
-96
-61
-135
-94
-64
-155
-100
-63
-209
-117
-53
-234
-125
-52
-224
-123
-55
-212
-120
-56
-224
-123
-55
-224
-123
-55
-224
-123
-55
-234
-126
-45
-139
-96
-61
-55
-66
-67
-251
-192
-154
-251
-168
-115
-249
-146
-83
-247
-130
-53
-247
-118
-39
-246
-109
-10
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-123
-41
-248
-138
-64
-249
-152
-92
-250
-176
-132
-232
-190
-161
-65
-58
-56
-59
-50
-39
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-145
-114
-49
-47
-40
-38
-129
-106
-52
-168
-127
-42
-160
-120
-43
-158
-125
-46
-224
-207
-180
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-219
-212
-208
-62
-63
-61
-35
-31
-30
-91
-92
-89
-164
-158
-157
-186
-181
-179
-82
-69
-65
-176
-156
-141
-255
-215
-190
-255
-215
-190
-238
-205
-179
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-129
-106
-52
-65
-67
-64
-48
-58
-59
-55
-66
-67
-55
-66
-67
-48
-58
-59
-83
-78
-61
-145
-114
-49
-168
-127
-42
-158
-125
-46
-158
-125
-46
-168
-127
-42
-137
-110
-49
-51
-62
-63
-146
-135
-124
-255
-215
-190
-120
-114
-108
-56
-64
-60
-145
-114
-49
-171
-129
-45
-158
-125
-46
-168
-127
-42
-152
-119
-47
-69
-69
-61
-43
-57
-62
-109
-106
-99
-146
-135
-124
-137
-127
-115
-91
-92
-89
-43
-57
-62
-88
-82
-59
-158
-125
-46
-161
-127
-40
-158
-125
-46
-171
-129
-45
-117
-98
-55
-48
-58
-59
-172
-150
-134
-255
-215
-190
-146
-135
-124
-51
-62
-63
-137
-110
-49
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-145
-114
-49
-75
-74
-61
-48
-58
-59
-55
-66
-67
-55
-66
-67
-48
-58
-59
-69
-69
-61
-137
-110
-49
-168
-127
-42
-161
-127
-40
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-91
-92
-89
-234
-204
-183
-70
-79
-77
-83
-78
-61
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-111
-94
-57
-56
-64
-60
-43
-57
-62
-58
-69
-70
-48
-58
-59
-56
-64
-60
-100
-89
-56
-158
-125
-46
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-145
-114
-49
-51
-62
-63
-137
-127
-115
-58
-69
-70
-111
-94
-57
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-65
-67
-64
-137
-127
-115
-255
-215
-190
-97
-98
-96
-62
-63
-61
-152
-119
-47
-168
-127
-42
-158
-125
-46
-168
-127
-42
-137
-110
-49
-62
-63
-61
-51
-62
-63
-120
-114
-108
-146
-135
-124
-137
-127
-115
-84
-85
-82
-43
-57
-62
-95
-87
-59
-168
-127
-42
-158
-125
-46
-158
-125
-46
-171
-129
-45
-100
-89
-56
-43
-57
-62
-194
-173
-157
-255
-215
-190
-161
-144
-134
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-224
-123
-55
-118
-86
-65
-51
-62
-63
-43
-57
-62
-58
-69
-70
-41
-58
-57
-56
-64
-60
-146
-97
-64
-234
-126
-45
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-125
-52
-106
-82
-65
-63
-74
-74
-234
-204
-183
-255
-215
-190
-161
-144
-134
-48
-58
-59
-173
-106
-60
-234
-125
-52
-224
-123
-55
-224
-123
-55
-234
-125
-52
-183
-110
-59
-76
-70
-64
-43
-57
-62
-55
-66
-67
-55
-66
-67
-48
-58
-59
-81
-73
-62
-183
-110
-59
-234
-125
-52
-224
-123
-55
-224
-123
-55
-234
-126
-45
-163
-104
-61
-48
-58
-59
-161
-144
-134
-255
-215
-190
-234
-204
-183
-63
-74
-74
-95
-78
-64
-234
-126
-45
-224
-123
-55
-224
-123
-55
-227
-126
-50
-227
-126
-50
-135
-94
-64
-62
-63
-61
-43
-57
-62
-58
-69
-70
-43
-57
-62
-51
-62
-63
-125
-90
-64
-225
-124
-48
-227
-126
-50
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-194
-112
-58
-56
-64
-60
-97
-98
-96
-56
-64
-60
-188
-112
-56
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-234
-125
-52
-227
-126
-50
-173
-106
-60
-95
-78
-64
-56
-64
-60
-51
-62
-63
-120
-114
-108
-70
-79
-77
-89
-75
-66
-225
-124
-48
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-126
-45
-163
-104
-61
-65
-67
-64
-41
-58
-57
-55
-66
-67
-51
-62
-63
-48
-58
-59
-106
-82
-65
-209
-117
-53
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-251
-192
-154
-247
-165
-111
-249
-146
-83
-248
-138
-64
-247
-130
-53
-247
-130
-60
-250
-139
-73
-246
-156
-93
-250
-176
-132
-186
-157
-134
-41
-58
-57
-146
-97
-64
-234
-126
-45
-224
-123
-55
-224
-123
-55
-234
-125
-52
-199
-115
-54
-89
-75
-66
-48
-58
-59
-51
-62
-63
-55
-66
-67
-43
-57
-62
-76
-70
-64
-173
-106
-60
-234
-125
-52
-224
-123
-55
-224
-123
-55
-227
-126
-50
-183
-110
-59
-51
-62
-63
-137
-127
-115
-234
-204
-183
-63
-74
-74
-135
-94
-64
-234
-125
-52
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-126
-45
-199
-115
-54
-125
-90
-64
-69
-69
-61
-41
-58
-57
-97
-98
-96
-146
-135
-124
-51
-62
-63
-146
-97
-64
-234
-126
-45
-224
-123
-55
-224
-123
-55
-227
-126
-50
-214
-121
-50
-106
-82
-65
-48
-58
-59
-51
-62
-63
-55
-66
-67
-41
-58
-57
-65
-67
-64
-163
-104
-61
-234
-126
-45
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-234
-125
-52
-139
-96
-61
-55
-66
-67
-250
-197
-158
-251
-168
-115
-247
-150
-84
-247
-130
-60
-247
-118
-39
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-246
-116
-28
-247
-130
-53
-247
-143
-74
-249
-159
-103
-252
-185
-144
-154
-133
-118
-24
-22
-23
-108
-87
-46
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-71
-60
-43
-85
-71
-43
-171
-129
-45
-160
-120
-43
-216
-194
-154
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-237
-233
-225
-65
-58
-56
-62
-63
-61
-219
-212
-208
-253
-255
-252
-237
-233
-225
-120
-114
-108
-35
-31
-30
-55
-48
-48
-227
-196
-175
-255
-215
-190
-238
-205
-179
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-129
-106
-52
-51
-62
-63
-84
-85
-82
-187
-166
-150
-227
-196
-175
-227
-196
-175
-161
-144
-134
-51
-62
-63
-69
-69
-61
-152
-119
-47
-168
-127
-42
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-91
-92
-89
-217
-187
-166
-55
-66
-67
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-75
-74
-61
-58
-69
-70
-187
-166
-150
-255
-215
-190
-255
-215
-190
-255
-215
-190
-245
-212
-186
-161
-144
-134
-43
-57
-62
-100
-89
-56
-171
-129
-45
-158
-125
-46
-158
-125
-46
-161
-127
-40
-75
-74
-61
-84
-85
-82
-234
-204
-183
-76
-78
-76
-88
-82
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-145
-114
-49
-62
-63
-61
-63
-74
-74
-176
-156
-141
-227
-196
-175
-227
-196
-175
-176
-156
-141
-70
-79
-77
-62
-63
-61
-145
-114
-49
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-97
-98
-96
-172
-150
-134
-48
-58
-59
-129
-106
-52
-168
-127
-42
-158
-125
-46
-158
-125
-46
-171
-129
-45
-105
-93
-60
-43
-57
-62
-120
-114
-108
-207
-178
-158
-227
-196
-175
-217
-187
-166
-120
-114
-108
-41
-58
-57
-95
-87
-59
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-145
-114
-49
-56
-64
-60
-137
-127
-115
-58
-69
-70
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-65
-67
-64
-146
-135
-124
-207
-178
-158
-48
-58
-59
-111
-94
-57
-171
-129
-45
-158
-125
-46
-168
-127
-42
-152
-119
-47
-62
-63
-61
-70
-79
-77
-207
-178
-158
-255
-215
-190
-255
-215
-190
-255
-215
-190
-238
-205
-179
-137
-127
-115
-43
-57
-62
-117
-98
-55
-168
-127
-42
-158
-125
-46
-168
-127
-42
-152
-119
-47
-62
-63
-61
-109
-106
-99
-255
-215
-190
-161
-144
-134
-56
-64
-60
-199
-115
-54
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-227
-126
-50
-106
-82
-65
-41
-58
-57
-137
-127
-115
-217
-187
-166
-227
-196
-175
-207
-178
-158
-109
-106
-99
-41
-58
-57
-146
-97
-64
-234
-125
-52
-224
-123
-55
-224
-123
-55
-234
-125
-52
-173
-106
-60
-48
-58
-59
-176
-156
-141
-245
-212
-186
-70
-79
-77
-95
-78
-64
-234
-125
-52
-224
-123
-55
-224
-123
-55
-234
-125
-52
-188
-112
-56
-56
-64
-60
-70
-79
-77
-176
-156
-141
-227
-196
-175
-227
-196
-175
-176
-156
-141
-63
-74
-74
-62
-63
-61
-194
-112
-58
-227
-126
-50
-224
-123
-55
-227
-126
-50
-227
-126
-50
-95
-78
-64
-77
-85
-81
-245
-212
-186
-172
-150
-134
-48
-58
-59
-173
-106
-60
-234
-126
-45
-224
-123
-55
-224
-123
-55
-234
-125
-52
-135
-94
-64
-35
-56
-60
-120
-114
-108
-207
-178
-158
-227
-196
-175
-217
-187
-166
-133
-120
-107
-35
-56
-60
-118
-86
-65
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-194
-112
-58
-56
-64
-60
-101
-100
-92
-56
-64
-60
-188
-112
-56
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-194
-112
-58
-95
-78
-64
-48
-58
-59
-70
-79
-77
-146
-135
-124
-217
-187
-166
-207
-178
-158
-51
-62
-63
-155
-100
-63
-234
-126
-45
-224
-123
-55
-224
-123
-55
-234
-125
-52
-163
-104
-61
-48
-58
-59
-91
-92
-89
-194
-173
-157
-227
-196
-175
-217
-187
-166
-146
-135
-124
-43
-57
-62
-89
-75
-66
-214
-121
-50
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-251
-192
-154
-247
-165
-111
-247
-150
-84
-248
-138
-64
-247
-130
-60
-248
-138
-64
-249
-146
-83
-247
-165
-111
-239
-182
-144
-91
-92
-89
-76
-70
-64
-224
-123
-55
-227
-126
-50
-224
-123
-55
-227
-126
-50
-209
-117
-53
-76
-70
-64
-55
-66
-67
-172
-150
-134
-227
-196
-175
-227
-196
-175
-187
-166
-150
-77
-85
-81
-51
-62
-63
-173
-106
-60
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-126
-45
-118
-86
-65
-58
-69
-70
-217
-187
-166
-70
-79
-77
-135
-94
-64
-234
-125
-52
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-225
-124
-48
-125
-90
-64
-56
-64
-60
-55
-66
-67
-120
-114
-108
-187
-166
-150
-245
-212
-186
-120
-114
-108
-76
-70
-64
-214
-121
-50
-227
-126
-50
-224
-123
-55
-227
-126
-50
-225
-124
-48
-95
-78
-64
-43
-57
-62
-146
-135
-124
-217
-187
-166
-227
-196
-175
-194
-173
-157
-91
-92
-89
-48
-58
-59
-163
-104
-61
-234
-125
-52
-224
-123
-55
-224
-123
-55
-224
-123
-55
-234
-126
-45
-139
-96
-61
-55
-66
-67
-250
-197
-158
-249
-174
-124
-247
-150
-84
-247
-130
-60
-247
-118
-39
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-111
-26
-247
-118
-39
-247
-130
-53
-249
-146
-83
-251
-168
-115
-239
-182
-144
-65
-58
-56
-59
-50
-39
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-108
-87
-46
-47
-40
-38
-152
-119
-47
-170
-137
-67
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-174
-168
-167
-24
-22
-23
-109
-106
-99
-152
-147
-147
-97
-98
-96
-47
-40
-38
-24
-22
-23
-35
-31
-30
-35
-31
-30
-176
-156
-141
-255
-215
-190
-238
-205
-179
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-69
-69
-61
-76
-78
-76
-227
-196
-175
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-187
-166
-150
-51
-62
-63
-95
-87
-59
-168
-127
-42
-158
-125
-46
-158
-125
-46
-171
-129
-45
-117
-98
-55
-55
-66
-67
-109
-106
-99
-48
-58
-59
-137
-110
-49
-168
-127
-42
-158
-125
-46
-168
-127
-42
-117
-98
-55
-48
-58
-59
-187
-166
-150
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-137
-127
-115
-51
-62
-63
-145
-114
-49
-168
-127
-42
-158
-125
-46
-171
-129
-45
-117
-98
-55
-55
-66
-67
-137
-127
-115
-55
-66
-67
-123
-102
-54
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-55
-66
-67
-207
-178
-158
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-217
-187
-166
-58
-69
-70
-83
-78
-61
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-88
-82
-59
-91
-92
-89
-109
-106
-99
-69
-69
-61
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-145
-114
-49
-51
-62
-63
-120
-114
-108
-245
-212
-186
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-137
-127
-115
-48
-58
-59
-129
-106
-52
-168
-127
-42
-158
-125
-46
-158
-125
-46
-168
-127
-42
-145
-114
-49
-51
-62
-63
-137
-127
-115
-58
-69
-70
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-65
-67
-64
-146
-135
-124
-146
-135
-124
-62
-63
-61
-152
-119
-47
-168
-127
-42
-158
-125
-46
-168
-127
-42
-100
-89
-56
-51
-62
-63
-207
-178
-158
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-109
-106
-99
-63
-69
-60
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-100
-89
-56
-51
-62
-63
-227
-196
-175
-172
-150
-134
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-126
-45
-155
-100
-63
-41
-58
-57
-146
-135
-124
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-245
-212
-186
-109
-106
-99
-56
-64
-60
-199
-115
-54
-227
-126
-50
-224
-123
-55
-227
-126
-50
-224
-123
-55
-76
-70
-64
-109
-106
-99
-194
-173
-157
-43
-57
-62
-163
-104
-61
-234
-125
-52
-224
-123
-55
-224
-123
-55
-225
-124
-48
-89
-75
-66
-63
-74
-74
-217
-187
-166
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-217
-187
-166
-58
-69
-70
-95
-78
-64
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-126
-45
-155
-100
-63
-43
-57
-62
-207
-178
-158
-109
-106
-99
-76
-70
-64
-224
-123
-55
-227
-126
-50
-224
-123
-55
-227
-126
-50
-194
-112
-58
-51
-62
-63
-120
-114
-108
-253
-212
-188
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-137
-127
-115
-48
-58
-59
-173
-106
-60
-234
-125
-52
-224
-123
-55
-224
-123
-55
-227
-126
-50
-194
-112
-58
-56
-64
-60
-101
-100
-92
-56
-64
-60
-188
-112
-56
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-188
-112
-56
-62
-63
-61
-58
-69
-70
-161
-144
-134
-234
-204
-183
-255
-215
-190
-255
-215
-190
-137
-127
-115
-62
-63
-61
-209
-117
-53
-227
-126
-50
-224
-123
-55
-227
-126
-50
-212
-120
-56
-69
-69
-61
-77
-85
-81
-234
-204
-183
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-176
-156
-141
-35
-56
-60
-135
-94
-64
-234
-126
-45
-224
-123
-55
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-251
-192
-154
-251
-168
-115
-247
-150
-84
-250
-139
-73
-248
-138
-64
-250
-139
-73
-249
-152
-92
-249
-174
-124
-209
-171
-139
-43
-57
-62
-135
-94
-64
-234
-126
-45
-224
-123
-55
-224
-123
-55
-234
-126
-45
-112
-85
-63
-51
-62
-63
-194
-173
-157
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-227
-196
-175
-70
-79
-77
-76
-70
-64
-214
-121
-50
-227
-126
-50
-224
-123
-55
-227
-126
-50
-183
-110
-59
-48
-58
-59
-146
-135
-124
-77
-85
-81
-135
-94
-64
-234
-125
-52
-224
-123
-55
-224
-123
-55
-227
-126
-50
-214
-121
-50
-95
-78
-64
-35
-56
-60
-120
-114
-108
-217
-187
-166
-255
-215
-190
-255
-215
-190
-227
-196
-175
-58
-69
-70
-125
-90
-64
-234
-125
-52
-224
-123
-55
-224
-123
-55
-234
-125
-52
-139
-96
-61
-41
-58
-57
-172
-150
-134
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-234
-204
-183
-77
-85
-81
-76
-70
-64
-214
-121
-50
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-125
-52
-139
-96
-61
-51
-62
-63
-250
-200
-166
-249
-174
-124
-249
-152
-92
-247
-130
-60
-247
-118
-39
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-111
-26
-247
-123
-41
-248
-138
-64
-249
-152
-92
-249
-174
-124
-178
-146
-122
-24
-22
-23
-101
-83
-47
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-152
-119
-47
-47
-40
-38
-123
-102
-54
-209
-171
-139
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-164
-158
-157
-24
-22
-23
-24
-22
-23
-24
-22
-23
-24
-22
-23
-24
-22
-23
-35
-31
-30
-35
-31
-30
-47
-40
-38
-194
-173
-157
-255
-215
-190
-238
-205
-179
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-129
-106
-52
-48
-58
-59
-176
-156
-141
-255
-215
-190
-255
-215
-190
-253
-212
-188
-255
-215
-190
-255
-215
-190
-255
-215
-190
-120
-114
-108
-56
-64
-60
-152
-119
-47
-161
-127
-40
-158
-125
-46
-168
-127
-42
-137
-110
-49
-51
-62
-63
-48
-58
-59
-75
-74
-61
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-63
-74
-74
-194
-173
-157
-207
-178
-158
-207
-178
-158
-207
-178
-158
-207
-178
-158
-207
-178
-158
-207
-178
-158
-172
-150
-134
-48
-58
-59
-111
-94
-57
-171
-129
-45
-158
-125
-46
-168
-127
-42
-152
-119
-47
-56
-64
-60
-51
-62
-63
-56
-64
-60
-152
-119
-47
-168
-127
-42
-158
-125
-46
-168
-127
-42
-145
-114
-49
-51
-62
-63
-146
-135
-124
-255
-215
-190
-255
-215
-190
-253
-212
-188
-253
-212
-188
-255
-215
-190
-255
-215
-190
-146
-135
-124
-51
-62
-63
-145
-114
-49
-168
-127
-42
-158
-125
-46
-158
-125
-46
-168
-127
-42
-88
-82
-59
-70
-79
-77
-63
-74
-74
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-171
-129
-45
-95
-87
-59
-55
-66
-67
-227
-196
-175
-255
-215
-190
-255
-215
-190
-253
-212
-188
-255
-215
-190
-255
-215
-190
-234
-204
-183
-70
-79
-77
-88
-82
-59
-168
-127
-42
-158
-125
-46
-158
-125
-46
-168
-127
-42
-145
-114
-49
-56
-64
-60
-137
-127
-115
-58
-69
-70
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-63
-69
-60
-137
-127
-115
-97
-98
-96
-83
-78
-61
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-69
-69
-61
-84
-85
-82
-207
-178
-158
-207
-178
-158
-207
-178
-158
-207
-178
-158
-207
-178
-158
-207
-178
-158
-217
-187
-166
-146
-135
-124
-48
-58
-59
-129
-106
-52
-168
-127
-42
-158
-125
-46
-168
-127
-42
-129
-106
-52
-51
-62
-63
-187
-166
-150
-176
-156
-141
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-89
-75
-66
-70
-79
-77
-245
-212
-186
-255
-215
-190
-255
-215
-190
-253
-212
-188
-255
-215
-190
-255
-215
-190
-217
-187
-166
-43
-57
-62
-125
-90
-64
-234
-126
-45
-224
-123
-55
-224
-123
-55
-234
-126
-45
-106
-82
-65
-77
-85
-81
-133
-120
-107
-62
-63
-61
-209
-117
-53
-227
-126
-50
-224
-123
-55
-227
-126
-50
-183
-110
-59
-48
-58
-59
-161
-144
-134
-255
-215
-190
-255
-215
-190
-253
-212
-188
-253
-212
-188
-255
-215
-190
-255
-215
-190
-146
-135
-124
-48
-58
-59
-188
-112
-56
-227
-126
-50
-224
-123
-55
-227
-126
-50
-199
-115
-54
-62
-63
-61
-133
-120
-107
-77
-85
-81
-118
-86
-65
-234
-126
-45
-224
-123
-55
-224
-123
-55
-234
-126
-45
-125
-90
-64
-55
-66
-67
-227
-196
-175
-255
-215
-190
-255
-215
-190
-253
-212
-188
-255
-215
-190
-255
-215
-190
-234
-204
-183
-63
-74
-74
-106
-82
-65
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-194
-112
-58
-56
-64
-60
-97
-98
-96
-56
-64
-60
-188
-112
-56
-227
-126
-50
-224
-123
-55
-227
-126
-50
-224
-123
-55
-89
-75
-66
-63
-74
-74
-217
-187
-166
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-91
-92
-89
-95
-78
-64
-227
-126
-50
-227
-126
-50
-224
-123
-55
-234
-126
-45
-146
-97
-64
-43
-57
-62
-187
-166
-150
-255
-215
-190
-255
-215
-190
-253
-212
-188
-255
-215
-190
-255
-215
-190
-255
-215
-190
-101
-100
-92
-76
-70
-64
-224
-123
-55
-227
-126
-50
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-251
-192
-154
-251
-168
-115
-247
-150
-84
-250
-139
-73
-250
-139
-73
-247
-143
-74
-249
-159
-103
-250
-176
-132
-154
-133
-118
-51
-62
-63
-183
-110
-59
-227
-126
-50
-224
-123
-55
-227
-126
-50
-199
-115
-54
-62
-63
-61
-133
-120
-107
-255
-215
-190
-255
-215
-190
-253
-212
-188
-253
-212
-188
-255
-215
-190
-255
-215
-190
-176
-156
-141
-43
-57
-62
-163
-104
-61
-234
-125
-52
-224
-123
-55
-227
-126
-50
-214
-121
-50
-76
-70
-64
-91
-92
-89
-70
-79
-77
-135
-94
-64
-234
-126
-45
-224
-123
-55
-224
-123
-55
-234
-125
-52
-146
-97
-64
-35
-56
-60
-161
-144
-134
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-194
-173
-157
-48
-58
-59
-163
-104
-61
-234
-126
-45
-224
-123
-55
-227
-126
-50
-214
-121
-50
-76
-70
-64
-97
-98
-96
-255
-215
-190
-255
-215
-190
-255
-215
-190
-253
-212
-188
-255
-215
-190
-255
-215
-190
-187
-166
-150
-43
-57
-62
-163
-104
-61
-234
-125
-52
-224
-123
-55
-224
-123
-55
-234
-125
-52
-139
-96
-61
-55
-66
-67
-250
-200
-166
-249
-174
-124
-249
-152
-92
-247
-130
-60
-247
-118
-39
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-109
-10
-247
-111
-26
-247
-123
-41
-248
-138
-64
-249
-159
-103
-248
-180
-134
-124
-111
-99
-35
-31
-30
-137
-110
-49
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-59
-50
-39
-85
-71
-43
-216
-194
-154
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-207
-202
-200
-47
-40
-38
-24
-22
-23
-35
-31
-30
-35
-31
-30
-35
-31
-30
-35
-31
-30
-24
-22
-23
-65
-58
-56
-238
-205
-179
-255
-215
-190
-238
-205
-179
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-100
-89
-56
-63
-74
-74
-227
-196
-175
-255
-215
-190
-253
-204
-176
-250
-200
-166
-250
-200
-166
-251
-209
-178
-255
-215
-190
-194
-173
-157
-48
-58
-59
-123
-102
-54
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-63
-69
-60
-43
-57
-62
-95
-87
-59
-168
-127
-42
-158
-125
-46
-161
-127
-40
-158
-125
-46
-63
-69
-60
-43
-57
-62
-51
-62
-63
-51
-62
-63
-51
-62
-63
-51
-62
-63
-51
-62
-63
-51
-62
-63
-51
-62
-63
-51
-62
-63
-43
-57
-62
-88
-82
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-75
-74
-61
-43
-57
-62
-75
-74
-61
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-117
-98
-55
-51
-62
-63
-217
-187
-166
-255
-215
-190
-253
-204
-176
-250
-200
-166
-250
-200
-166
-253
-204
-176
-255
-215
-190
-217
-187
-166
-48
-58
-59
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-88
-82
-59
-48
-58
-59
-48
-58
-59
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-69
-69
-61
-109
-106
-99
-255
-215
-190
-253
-212
-188
-253
-204
-176
-250
-200
-166
-250
-200
-166
-253
-212
-188
-255
-215
-190
-120
-114
-108
-63
-69
-60
-158
-125
-46
-161
-127
-40
-158
-125
-46
-168
-127
-42
-145
-114
-49
-51
-62
-63
-137
-127
-115
-58
-69
-70
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-63
-69
-60
-120
-114
-108
-70
-79
-77
-105
-93
-60
-171
-129
-45
-158
-125
-46
-168
-127
-42
-152
-119
-47
-56
-64
-60
-51
-62
-63
-51
-62
-63
-51
-62
-63
-51
-62
-63
-51
-62
-63
-51
-62
-63
-51
-62
-63
-51
-62
-63
-51
-62
-63
-43
-57
-62
-111
-94
-57
-171
-129
-45
-158
-125
-46
-161
-127
-40
-152
-119
-47
-62
-63
-61
-146
-135
-124
-172
-150
-134
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-227
-126
-50
-199
-115
-54
-62
-63
-61
-146
-135
-124
-255
-215
-190
-253
-212
-188
-250
-200
-166
-250
-200
-166
-253
-204
-176
-253
-212
-188
-253
-212
-188
-97
-98
-96
-89
-75
-66
-227
-126
-50
-227
-126
-50
-224
-123
-55
-234
-126
-45
-139
-96
-61
-51
-62
-63
-63
-74
-74
-89
-75
-66
-227
-126
-50
-227
-126
-50
-224
-123
-55
-234
-125
-52
-135
-94
-64
-55
-66
-67
-217
-187
-166
-255
-215
-190
-253
-204
-176
-250
-200
-166
-250
-200
-166
-253
-204
-176
-255
-215
-190
-217
-187
-166
-51
-62
-63
-139
-96
-61
-234
-126
-45
-224
-123
-55
-227
-126
-50
-225
-124
-48
-81
-73
-62
-58
-69
-70
-51
-62
-63
-146
-97
-64
-234
-126
-45
-224
-123
-55
-227
-126
-50
-224
-123
-55
-81
-73
-62
-109
-106
-99
-255
-215
-190
-253
-212
-188
-253
-204
-176
-250
-200
-166
-250
-200
-166
-253
-212
-188
-255
-215
-190
-120
-114
-108
-69
-69
-61
-212
-120
-56
-227
-126
-50
-224
-123
-55
-227
-126
-50
-194
-112
-58
-56
-64
-60
-101
-100
-92
-56
-64
-60
-188
-112
-56
-234
-125
-52
-224
-123
-55
-227
-126
-50
-194
-112
-58
-51
-62
-63
-146
-135
-124
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-234
-204
-183
-70
-79
-77
-118
-86
-65
-234
-125
-52
-224
-123
-55
-227
-126
-50
-227
-126
-50
-106
-82
-65
-77
-85
-81
-245
-212
-186
-255
-215
-190
-253
-204
-176
-250
-200
-166
-250
-200
-166
-251
-209
-178
-255
-215
-190
-176
-156
-141
-56
-64
-60
-188
-112
-56
-234
-125
-52
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-251
-192
-154
-251
-168
-115
-249
-152
-92
-247
-143
-74
-247
-143
-74
-247
-150
-84
-249
-159
-103
-248
-180
-134
-120
-114
-108
-69
-69
-61
-212
-120
-56
-227
-126
-50
-224
-123
-55
-234
-125
-52
-155
-100
-63
-43
-57
-62
-194
-173
-157
-255
-215
-190
-253
-204
-176
-250
-200
-166
-250
-200
-166
-253
-204
-176
-255
-215
-190
-234
-204
-183
-63
-74
-74
-112
-85
-63
-234
-125
-52
-227
-126
-50
-224
-123
-55
-234
-125
-52
-106
-82
-65
-58
-69
-70
-55
-66
-67
-135
-94
-64
-234
-125
-52
-224
-123
-55
-227
-126
-50
-227
-126
-50
-95
-78
-64
-77
-85
-81
-245
-212
-186
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-161
-144
-134
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-227
-126
-50
-183
-110
-59
-48
-58
-59
-172
-150
-134
-255
-215
-190
-251
-209
-178
-250
-200
-166
-250
-200
-166
-253
-204
-176
-255
-215
-190
-245
-212
-186
-63
-74
-74
-112
-85
-63
-234
-125
-52
-224
-123
-55
-224
-123
-55
-234
-126
-45
-139
-96
-61
-55
-66
-67
-250
-200
-166
-249
-174
-124
-249
-152
-92
-247
-130
-60
-247
-118
-39
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-123
-41
-250
-139
-73
-249
-159
-103
-252
-185
-144
-82
-69
-65
-47
-40
-38
-158
-125
-46
-161
-127
-40
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-85
-71
-43
-59
-50
-39
-216
-194
-154
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-164
-158
-157
-47
-40
-38
-24
-22
-23
-24
-22
-23
-24
-22
-23
-35
-31
-30
-65
-67
-64
-65
-58
-56
-227
-196
-175
-255
-215
-190
-238
-205
-179
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-88
-82
-59
-84
-85
-82
-255
-215
-190
-251
-209
-178
-250
-197
-158
-251
-192
-154
-251
-192
-154
-250
-200
-166
-253
-212
-188
-227
-196
-175
-58
-69
-70
-105
-93
-60
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-75
-74
-61
-41
-58
-57
-111
-94
-57
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-123
-102
-54
-123
-102
-54
-123
-102
-54
-123
-102
-54
-123
-102
-54
-123
-102
-54
-123
-102
-54
-123
-102
-54
-123
-102
-54
-123
-102
-54
-123
-102
-54
-137
-110
-49
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-41
-58
-57
-83
-78
-61
-168
-127
-42
-158
-125
-46
-158
-125
-46
-171
-129
-45
-95
-87
-59
-70
-79
-77
-245
-212
-186
-253
-212
-188
-250
-200
-166
-251
-192
-154
-251
-192
-154
-250
-200
-166
-253
-212
-188
-238
-205
-179
-70
-79
-77
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-88
-82
-59
-48
-58
-59
-48
-58
-59
-129
-106
-52
-168
-127
-42
-158
-125
-46
-168
-127
-42
-152
-119
-47
-56
-64
-60
-146
-135
-124
-255
-215
-190
-253
-204
-176
-250
-197
-158
-251
-192
-154
-251
-192
-154
-253
-204
-176
-255
-215
-190
-172
-150
-134
-51
-62
-63
-145
-114
-49
-168
-127
-42
-158
-125
-46
-168
-127
-42
-145
-114
-49
-51
-62
-63
-137
-127
-115
-58
-69
-70
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-63
-69
-60
-97
-98
-96
-55
-66
-67
-123
-102
-54
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-123
-102
-54
-123
-102
-54
-123
-102
-54
-123
-102
-54
-123
-102
-54
-123
-102
-54
-123
-102
-54
-123
-102
-54
-123
-102
-54
-123
-102
-54
-117
-98
-55
-145
-114
-49
-161
-127
-40
-158
-125
-46
-158
-125
-46
-158
-125
-46
-69
-69
-61
-137
-127
-115
-172
-150
-134
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-234
-125
-52
-183
-110
-59
-51
-62
-63
-187
-166
-150
-255
-215
-190
-253
-204
-176
-251
-192
-154
-251
-192
-154
-250
-197
-158
-253
-204
-176
-255
-215
-190
-137
-127
-115
-65
-67
-64
-209
-117
-53
-227
-126
-50
-224
-123
-55
-234
-125
-52
-163
-104
-61
-43
-57
-62
-41
-58
-57
-106
-82
-65
-234
-125
-52
-224
-123
-55
-224
-123
-55
-234
-125
-52
-106
-82
-65
-77
-85
-81
-245
-212
-186
-251
-209
-178
-250
-197
-158
-249
-189
-146
-251
-192
-154
-250
-197
-158
-251
-209
-178
-238
-205
-179
-77
-85
-81
-112
-85
-63
-234
-126
-45
-224
-123
-55
-224
-123
-55
-227
-126
-50
-106
-82
-65
-41
-58
-57
-48
-58
-59
-163
-104
-61
-234
-125
-52
-224
-123
-55
-227
-126
-50
-209
-117
-53
-62
-63
-61
-146
-135
-124
-255
-215
-190
-253
-204
-176
-250
-197
-158
-251
-192
-154
-251
-192
-154
-253
-204
-176
-255
-215
-190
-176
-156
-141
-56
-64
-60
-188
-112
-56
-227
-126
-50
-224
-123
-55
-227
-126
-50
-194
-112
-58
-56
-64
-60
-101
-100
-92
-56
-64
-60
-188
-112
-56
-234
-125
-52
-224
-123
-55
-227
-126
-50
-183
-110
-59
-48
-58
-59
-176
-156
-141
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-227
-196
-175
-58
-69
-70
-139
-96
-61
-234
-125
-52
-224
-123
-55
-227
-126
-50
-214
-121
-50
-76
-70
-64
-120
-114
-108
-255
-215
-190
-253
-204
-176
-250
-197
-158
-251
-192
-154
-251
-192
-154
-250
-200
-166
-255
-215
-190
-207
-178
-158
-48
-58
-59
-163
-104
-61
-234
-125
-52
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-251
-192
-154
-249
-174
-124
-246
-156
-93
-247
-150
-84
-249
-146
-83
-249
-152
-92
-251
-168
-115
-249
-189
-146
-97
-98
-96
-89
-75
-66
-225
-124
-48
-227
-126
-50
-224
-123
-55
-234
-126
-45
-125
-90
-64
-58
-69
-70
-227
-196
-175
-253
-212
-188
-250
-200
-166
-251
-192
-154
-249
-189
-146
-250
-197
-158
-251
-209
-178
-255
-215
-190
-97
-98
-96
-89
-75
-66
-227
-126
-50
-227
-126
-50
-224
-123
-55
-234
-126
-45
-125
-90
-64
-43
-57
-62
-43
-57
-62
-135
-94
-64
-234
-125
-52
-224
-123
-55
-227
-126
-50
-227
-126
-50
-89
-75
-66
-101
-100
-92
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-137
-127
-115
-69
-69
-61
-212
-120
-56
-227
-126
-50
-224
-123
-55
-234
-126
-45
-155
-100
-63
-43
-57
-62
-207
-178
-158
-255
-215
-190
-250
-200
-166
-251
-192
-154
-251
-192
-154
-250
-197
-158
-251
-209
-178
-255
-215
-190
-109
-106
-99
-89
-75
-66
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-126
-45
-139
-96
-61
-55
-66
-67
-250
-200
-166
-249
-174
-124
-249
-152
-92
-247
-130
-60
-247
-118
-39
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-123
-41
-247
-143
-74
-249
-159
-103
-252
-185
-144
-55
-48
-48
-59
-50
-39
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-156
-125
-62
-101
-83
-47
-59
-50
-39
-209
-171
-139
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-219
-212
-208
-137
-127
-115
-101
-100
-92
-120
-114
-108
-186
-181
-179
-152
-147
-147
-55
-48
-48
-227
-196
-175
-255
-215
-190
-238
-205
-179
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-97
-98
-96
-255
-215
-190
-253
-204
-176
-251
-192
-154
-249
-189
-146
-249
-189
-146
-250
-197
-158
-251
-209
-178
-234
-204
-183
-70
-79
-77
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-161
-127
-40
-75
-74
-61
-41
-58
-57
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-168
-127
-42
-168
-127
-42
-168
-127
-42
-171
-129
-45
-75
-74
-61
-41
-58
-57
-88
-82
-59
-168
-127
-42
-158
-125
-46
-158
-125
-46
-171
-129
-45
-88
-82
-59
-77
-85
-81
-245
-212
-186
-251
-209
-178
-250
-197
-158
-249
-189
-146
-249
-189
-146
-250
-197
-158
-251
-209
-178
-245
-212
-186
-84
-85
-82
-88
-82
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-88
-82
-59
-43
-57
-62
-48
-58
-59
-129
-106
-52
-168
-127
-42
-158
-125
-46
-168
-127
-42
-145
-114
-49
-56
-64
-60
-161
-144
-134
-255
-215
-190
-250
-200
-166
-251
-192
-154
-249
-189
-146
-251
-192
-154
-250
-200
-166
-255
-215
-190
-187
-166
-150
-51
-62
-63
-137
-110
-49
-168
-127
-42
-158
-125
-46
-168
-127
-42
-145
-114
-49
-51
-62
-63
-137
-127
-115
-58
-69
-70
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-65
-67
-64
-91
-92
-89
-55
-66
-67
-129
-106
-52
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-168
-127
-42
-168
-127
-42
-168
-127
-42
-158
-125
-46
-63
-69
-60
-137
-127
-115
-172
-150
-134
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-227
-126
-50
-173
-106
-60
-48
-58
-59
-187
-166
-150
-255
-215
-190
-250
-200
-166
-251
-192
-154
-249
-189
-146
-251
-192
-154
-250
-200
-166
-255
-215
-190
-161
-144
-134
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-234
-125
-52
-173
-106
-60
-48
-58
-59
-41
-58
-57
-118
-86
-65
-234
-126
-45
-224
-123
-55
-224
-123
-55
-234
-125
-52
-95
-78
-64
-91
-92
-89
-255
-215
-190
-253
-204
-176
-251
-192
-154
-252
-185
-144
-252
-185
-144
-251
-192
-154
-253
-204
-176
-245
-212
-186
-91
-92
-89
-106
-82
-65
-234
-125
-52
-224
-123
-55
-224
-123
-55
-234
-125
-52
-112
-85
-63
-41
-58
-57
-48
-58
-59
-173
-106
-60
-234
-125
-52
-224
-123
-55
-227
-126
-50
-199
-115
-54
-56
-64
-60
-161
-144
-134
-255
-215
-190
-250
-200
-166
-251
-192
-154
-249
-189
-146
-251
-192
-154
-250
-200
-166
-255
-215
-190
-187
-166
-150
-48
-58
-59
-183
-110
-59
-234
-125
-52
-224
-123
-55
-227
-126
-50
-194
-112
-58
-56
-64
-60
-101
-100
-92
-56
-64
-60
-188
-112
-56
-227
-126
-50
-224
-123
-55
-227
-126
-50
-183
-110
-59
-51
-62
-63
-176
-156
-141
-255
-215
-190
-253
-212
-188
-251
-209
-178
-253
-212
-188
-217
-187
-166
-55
-66
-67
-146
-97
-64
-234
-126
-45
-224
-123
-55
-227
-126
-50
-214
-121
-50
-69
-69
-61
-137
-127
-115
-255
-215
-190
-253
-204
-176
-251
-192
-154
-249
-189
-146
-249
-189
-146
-250
-200
-166
-253
-212
-188
-217
-187
-166
-51
-62
-63
-155
-100
-63
-234
-125
-52
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-250
-197
-158
-249
-174
-124
-249
-159
-103
-249
-152
-92
-249
-152
-92
-249
-159
-103
-249
-174
-124
-250
-197
-158
-91
-92
-89
-95
-78
-64
-227
-126
-50
-227
-126
-50
-224
-123
-55
-234
-125
-52
-125
-90
-64
-70
-79
-77
-234
-204
-183
-251
-209
-178
-250
-197
-158
-249
-189
-146
-252
-185
-144
-251
-192
-154
-253
-204
-176
-255
-215
-190
-120
-114
-108
-81
-73
-62
-224
-123
-55
-227
-126
-50
-224
-123
-55
-234
-126
-45
-135
-94
-64
-41
-58
-57
-41
-58
-57
-135
-94
-64
-234
-125
-52
-224
-123
-55
-227
-126
-50
-227
-126
-50
-89
-75
-66
-101
-100
-92
-253
-212
-188
-253
-212
-188
-251
-209
-178
-251
-209
-178
-255
-215
-190
-137
-127
-115
-76
-70
-64
-214
-121
-50
-227
-126
-50
-224
-123
-55
-234
-125
-52
-146
-97
-64
-51
-62
-63
-227
-196
-175
-253
-212
-188
-250
-197
-158
-249
-189
-146
-249
-189
-146
-251
-192
-154
-253
-204
-176
-255
-215
-190
-120
-114
-108
-81
-73
-62
-227
-126
-50
-227
-126
-50
-224
-123
-55
-234
-126
-45
-139
-96
-61
-51
-62
-63
-250
-200
-166
-249
-174
-124
-249
-152
-92
-247
-130
-60
-247
-118
-39
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-123
-41
-250
-139
-73
-249
-159
-103
-252
-185
-144
-55
-48
-48
-59
-50
-39
-161
-127
-40
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-154
-125
-71
-170
-137
-67
-108
-87
-46
-59
-50
-39
-192
-155
-91
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-186
-181
-179
-47
-40
-38
-65
-58
-56
-245
-212
-186
-255
-215
-190
-238
-205
-179
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-88
-82
-59
-84
-85
-82
-253
-212
-188
-251
-209
-178
-250
-197
-158
-251
-192
-154
-251
-192
-154
-250
-200
-166
-253
-212
-188
-234
-204
-183
-63
-74
-74
-100
-89
-56
-171
-129
-45
-158
-125
-46
-158
-125
-46
-161
-127
-40
-75
-74
-61
-41
-58
-57
-111
-94
-57
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-111
-94
-57
-56
-64
-60
-43
-57
-62
-83
-78
-61
-168
-127
-42
-158
-125
-46
-158
-125
-46
-171
-129
-45
-95
-87
-59
-70
-79
-77
-245
-212
-186
-251
-209
-178
-250
-197
-158
-251
-192
-154
-251
-192
-154
-250
-197
-158
-251
-209
-178
-245
-212
-186
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-88
-82
-59
-43
-57
-62
-48
-58
-59
-129
-106
-52
-168
-127
-42
-158
-125
-46
-158
-125
-46
-152
-119
-47
-56
-64
-60
-161
-144
-134
-255
-215
-190
-253
-204
-176
-251
-192
-154
-249
-189
-146
-251
-192
-154
-250
-200
-166
-255
-215
-190
-176
-156
-141
-51
-62
-63
-137
-110
-49
-168
-127
-42
-158
-125
-46
-168
-127
-42
-145
-114
-49
-51
-62
-63
-137
-127
-115
-58
-69
-70
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-63
-69
-60
-91
-92
-89
-55
-66
-67
-123
-102
-54
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-100
-89
-56
-48
-58
-59
-187
-166
-150
-176
-156
-141
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-227
-126
-50
-183
-110
-59
-51
-62
-63
-176
-156
-141
-255
-215
-190
-250
-200
-166
-251
-192
-154
-251
-192
-154
-250
-197
-158
-253
-204
-176
-255
-215
-190
-146
-135
-124
-62
-63
-61
-209
-117
-53
-227
-126
-50
-224
-123
-55
-234
-125
-52
-163
-104
-61
-48
-58
-59
-41
-58
-57
-112
-85
-63
-234
-125
-52
-224
-123
-55
-224
-123
-55
-234
-125
-52
-106
-82
-65
-84
-85
-82
-255
-215
-190
-251
-209
-178
-250
-197
-158
-249
-189
-146
-249
-189
-146
-250
-197
-158
-251
-209
-178
-238
-205
-179
-84
-85
-82
-106
-82
-65
-234
-125
-52
-224
-123
-55
-227
-126
-50
-227
-126
-50
-106
-82
-65
-41
-58
-57
-48
-58
-59
-173
-106
-60
-227
-126
-50
-224
-123
-55
-227
-126
-50
-199
-115
-54
-62
-63
-61
-146
-135
-124
-255
-215
-190
-253
-204
-176
-251
-192
-154
-249
-189
-146
-251
-192
-154
-250
-200
-166
-255
-215
-190
-176
-156
-141
-51
-62
-63
-183
-110
-59
-227
-126
-50
-224
-123
-55
-227
-126
-50
-194
-112
-58
-56
-64
-60
-101
-100
-92
-56
-64
-60
-188
-112
-56
-227
-126
-50
-224
-123
-55
-227
-126
-50
-183
-110
-59
-51
-62
-63
-176
-156
-141
-253
-212
-188
-253
-204
-176
-250
-200
-166
-253
-204
-176
-217
-187
-166
-55
-66
-67
-146
-97
-64
-234
-125
-52
-224
-123
-55
-227
-126
-50
-214
-121
-50
-76
-70
-64
-120
-114
-108
-255
-215
-190
-253
-204
-176
-250
-197
-158
-251
-192
-154
-251
-192
-154
-250
-200
-166
-253
-212
-188
-207
-178
-158
-48
-58
-59
-163
-104
-61
-227
-126
-50
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-250
-200
-166
-248
-180
-134
-251
-168
-115
-247
-165
-111
-247
-165
-111
-251
-168
-115
-248
-180
-134
-250
-200
-166
-91
-92
-89
-89
-75
-66
-225
-124
-48
-227
-126
-50
-224
-123
-55
-234
-126
-45
-125
-90
-64
-63
-74
-74
-227
-196
-175
-251
-209
-178
-250
-197
-158
-249
-189
-146
-249
-189
-146
-250
-197
-158
-253
-204
-176
-255
-215
-190
-109
-106
-99
-89
-75
-66
-225
-124
-48
-227
-126
-50
-224
-123
-55
-234
-125
-52
-125
-90
-64
-43
-57
-62
-41
-58
-57
-135
-94
-64
-234
-126
-45
-224
-123
-55
-227
-126
-50
-227
-126
-50
-89
-75
-66
-101
-100
-92
-253
-212
-188
-253
-204
-176
-250
-200
-166
-250
-200
-166
-251
-209
-178
-137
-127
-115
-76
-70
-64
-214
-121
-50
-227
-126
-50
-224
-123
-55
-234
-125
-52
-155
-100
-63
-43
-57
-62
-217
-187
-166
-253
-212
-188
-250
-200
-166
-251
-192
-154
-249
-189
-146
-250
-197
-158
-253
-204
-176
-255
-215
-190
-120
-114
-108
-81
-73
-62
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-125
-52
-139
-96
-61
-55
-66
-67
-250
-200
-166
-249
-174
-124
-249
-152
-92
-247
-130
-60
-247
-118
-39
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-123
-41
-250
-139
-73
-249
-159
-103
-248
-180
-134
-76
-70
-64
-47
-40
-38
-152
-119
-47
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-156
-125
-62
-154
-125
-71
-170
-137
-67
-101
-83
-47
-59
-50
-39
-170
-137
-67
-255
-238
-227
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-152
-147
-147
-35
-31
-30
-24
-22
-23
-115
-102
-92
-255
-215
-190
-255
-215
-190
-238
-205
-179
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-171
-129
-45
-105
-93
-60
-58
-69
-70
-227
-196
-175
-255
-215
-190
-253
-204
-176
-250
-200
-166
-250
-200
-166
-253
-204
-176
-255
-215
-190
-207
-178
-158
-48
-58
-59
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-69
-69
-61
-43
-57
-62
-100
-89
-56
-171
-129
-45
-158
-125
-46
-161
-127
-40
-158
-125
-46
-75
-74
-61
-48
-58
-59
-56
-64
-60
-56
-64
-60
-56
-64
-60
-56
-64
-60
-56
-64
-60
-56
-64
-60
-56
-64
-60
-56
-64
-60
-56
-64
-60
-56
-64
-60
-56
-64
-60
-56
-64
-60
-56
-64
-60
-48
-58
-59
-101
-100
-92
-91
-92
-89
-75
-74
-61
-168
-127
-42
-158
-125
-46
-158
-125
-46
-171
-129
-45
-111
-94
-57
-55
-66
-67
-227
-196
-175
-255
-215
-190
-253
-204
-176
-250
-200
-166
-250
-200
-166
-253
-204
-176
-255
-215
-190
-227
-196
-175
-51
-62
-63
-105
-93
-60
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-48
-58
-59
-48
-58
-59
-123
-102
-54
-168
-127
-42
-158
-125
-46
-161
-127
-40
-158
-125
-46
-69
-69
-61
-120
-114
-108
-255
-215
-190
-251
-209
-178
-250
-200
-166
-250
-197
-158
-250
-200
-166
-251
-209
-178
-255
-215
-190
-146
-135
-124
-56
-64
-60
-152
-119
-47
-168
-127
-42
-158
-125
-46
-168
-127
-42
-145
-114
-49
-51
-62
-63
-137
-127
-115
-58
-69
-70
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-63
-69
-60
-109
-106
-99
-63
-74
-74
-111
-94
-57
-171
-129
-45
-158
-125
-46
-161
-127
-40
-152
-119
-47
-69
-69
-61
-51
-62
-63
-56
-64
-60
-56
-64
-60
-56
-64
-60
-56
-64
-60
-56
-64
-60
-56
-64
-60
-56
-64
-60
-56
-64
-60
-56
-64
-60
-56
-64
-60
-56
-64
-60
-56
-64
-60
-51
-62
-63
-48
-58
-59
-120
-114
-108
-245
-212
-186
-172
-150
-134
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-227
-126
-50
-209
-117
-53
-62
-63
-61
-137
-127
-115
-255
-215
-190
-251
-209
-178
-250
-200
-166
-250
-200
-166
-250
-200
-166
-253
-212
-188
-255
-215
-190
-109
-106
-99
-81
-73
-62
-224
-123
-55
-227
-126
-50
-224
-123
-55
-234
-125
-52
-155
-100
-63
-48
-58
-59
-43
-57
-62
-95
-78
-64
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-125
-52
-125
-90
-64
-63
-74
-74
-227
-196
-175
-253
-212
-188
-250
-200
-166
-250
-197
-158
-250
-197
-158
-253
-204
-176
-255
-215
-190
-227
-196
-175
-55
-66
-67
-125
-90
-64
-234
-125
-52
-224
-123
-55
-224
-123
-55
-227
-126
-50
-89
-75
-66
-48
-58
-59
-48
-58
-59
-155
-100
-63
-234
-126
-45
-224
-123
-55
-227
-126
-50
-214
-121
-50
-76
-70
-64
-120
-114
-108
-255
-215
-190
-251
-209
-178
-250
-200
-166
-250
-197
-158
-250
-200
-166
-251
-209
-178
-255
-215
-190
-137
-127
-115
-62
-63
-61
-209
-117
-53
-227
-126
-50
-224
-123
-55
-227
-126
-50
-194
-112
-58
-56
-64
-60
-97
-98
-96
-56
-64
-60
-188
-112
-56
-227
-126
-50
-224
-123
-55
-227
-126
-50
-183
-110
-59
-48
-58
-59
-176
-156
-141
-251
-209
-178
-250
-200
-166
-250
-197
-158
-250
-200
-166
-227
-196
-175
-63
-74
-74
-135
-94
-64
-234
-126
-45
-224
-123
-55
-227
-126
-50
-227
-126
-50
-95
-78
-64
-91
-92
-89
-253
-212
-188
-253
-212
-188
-250
-200
-166
-250
-200
-166
-250
-200
-166
-251
-209
-178
-255
-215
-190
-172
-150
-134
-56
-64
-60
-188
-112
-56
-227
-126
-50
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-251
-209
-178
-251
-192
-154
-250
-176
-132
-249
-174
-124
-249
-174
-124
-248
-180
-134
-251
-192
-154
-251
-209
-178
-109
-106
-99
-76
-70
-64
-214
-121
-50
-227
-126
-50
-224
-123
-55
-234
-126
-45
-146
-97
-64
-43
-57
-62
-217
-187
-166
-255
-215
-190
-253
-204
-176
-250
-197
-158
-250
-197
-158
-250
-200
-166
-253
-212
-188
-245
-212
-186
-70
-79
-77
-106
-82
-65
-234
-125
-52
-224
-123
-55
-224
-123
-55
-234
-125
-52
-112
-85
-63
-51
-62
-63
-51
-62
-63
-135
-94
-64
-234
-126
-45
-224
-123
-55
-227
-126
-50
-227
-126
-50
-89
-75
-66
-101
-100
-92
-245
-212
-186
-250
-200
-166
-251
-192
-154
-250
-197
-158
-253
-204
-176
-146
-135
-124
-65
-67
-64
-209
-117
-53
-227
-126
-50
-224
-123
-55
-234
-125
-52
-173
-106
-60
-48
-58
-59
-187
-166
-150
-255
-215
-190
-253
-204
-176
-250
-200
-166
-250
-197
-158
-250
-200
-166
-253
-212
-188
-255
-215
-190
-84
-85
-82
-95
-78
-64
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-125
-52
-139
-96
-61
-55
-66
-67
-250
-200
-166
-249
-174
-124
-249
-152
-92
-247
-130
-60
-247
-118
-39
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-109
-10
-247
-111
-26
-247
-123
-41
-248
-138
-64
-249
-152
-92
-249
-174
-124
-121
-100
-85
-35
-31
-30
-108
-87
-46
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-156
-125
-62
-154
-125
-71
-154
-125
-71
-171
-129
-45
-85
-71
-43
-71
-60
-43
-171
-129
-45
-224
-207
-180
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-237
-233
-225
-174
-168
-167
-81
-77
-76
-24
-22
-23
-35
-31
-30
-35
-31
-30
-187
-166
-150
-255
-215
-190
-255
-215
-190
-234
-204
-183
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-129
-106
-52
-51
-62
-63
-176
-156
-141
-255
-215
-190
-255
-215
-190
-253
-212
-188
-253
-212
-188
-255
-215
-190
-255
-215
-190
-146
-135
-124
-51
-62
-63
-145
-114
-49
-168
-127
-42
-158
-125
-46
-158
-125
-46
-152
-119
-47
-56
-64
-60
-43
-57
-62
-83
-78
-61
-168
-127
-42
-158
-125
-46
-158
-125
-46
-168
-127
-42
-88
-82
-59
-48
-58
-59
-146
-135
-124
-161
-144
-134
-161
-144
-134
-161
-144
-134
-161
-144
-134
-161
-144
-134
-161
-144
-134
-161
-144
-134
-161
-144
-134
-172
-150
-134
-172
-150
-134
-146
-135
-124
-146
-135
-124
-194
-173
-157
-245
-212
-186
-137
-127
-115
-63
-69
-60
-158
-125
-46
-161
-127
-40
-158
-125
-46
-168
-127
-42
-137
-110
-49
-51
-62
-63
-161
-144
-134
-255
-215
-190
-255
-215
-190
-253
-212
-188
-253
-212
-188
-255
-215
-190
-255
-215
-190
-161
-144
-134
-48
-58
-59
-137
-110
-49
-168
-127
-42
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-55
-66
-67
-51
-62
-63
-105
-93
-60
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-88
-82
-59
-70
-79
-77
-245
-212
-186
-255
-215
-190
-253
-212
-188
-251
-209
-178
-253
-212
-188
-255
-215
-190
-255
-215
-190
-91
-92
-89
-75
-74
-61
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-145
-114
-49
-51
-62
-63
-137
-127
-115
-58
-69
-70
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-63
-69
-60
-133
-120
-107
-84
-85
-82
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-75
-74
-61
-55
-66
-67
-161
-144
-134
-161
-144
-134
-161
-144
-134
-161
-144
-134
-161
-144
-134
-161
-144
-134
-161
-144
-134
-161
-144
-134
-161
-144
-134
-172
-150
-134
-172
-150
-134
-137
-127
-115
-146
-135
-124
-207
-178
-158
-245
-212
-186
-255
-215
-190
-161
-144
-134
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-227
-126
-50
-227
-126
-50
-89
-75
-66
-76
-78
-76
-245
-212
-186
-255
-215
-190
-253
-212
-188
-253
-212
-188
-253
-212
-188
-255
-215
-190
-227
-196
-175
-58
-69
-70
-118
-86
-65
-234
-125
-52
-224
-123
-55
-224
-123
-55
-234
-125
-52
-125
-90
-64
-63
-74
-74
-97
-98
-96
-76
-70
-64
-214
-121
-50
-227
-126
-50
-224
-123
-55
-234
-125
-52
-163
-104
-61
-48
-58
-59
-187
-166
-150
-255
-215
-190
-255
-215
-190
-251
-209
-178
-251
-209
-178
-255
-215
-190
-255
-215
-190
-176
-156
-141
-48
-58
-59
-173
-106
-60
-227
-126
-50
-224
-123
-55
-227
-126
-50
-212
-120
-56
-69
-69
-61
-101
-100
-92
-63
-74
-74
-125
-90
-64
-234
-125
-52
-224
-123
-55
-224
-123
-55
-234
-125
-52
-106
-82
-65
-63
-74
-74
-234
-204
-183
-255
-215
-190
-253
-212
-188
-253
-212
-188
-253
-212
-188
-255
-215
-190
-245
-212
-186
-70
-79
-77
-89
-75
-66
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-194
-112
-58
-56
-64
-60
-101
-100
-92
-56
-64
-60
-188
-112
-56
-227
-126
-50
-224
-123
-55
-234
-125
-52
-183
-110
-59
-51
-62
-63
-176
-156
-141
-253
-204
-176
-251
-192
-154
-251
-192
-154
-251
-192
-154
-250
-200
-166
-77
-85
-81
-106
-82
-65
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-126
-45
-135
-94
-64
-51
-62
-63
-217
-187
-166
-255
-215
-190
-255
-215
-190
-253
-212
-188
-253
-212
-188
-255
-215
-190
-255
-215
-190
-109
-106
-99
-76
-70
-64
-224
-123
-55
-227
-126
-50
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-255
-215
-190
-250
-200
-166
-251
-192
-154
-252
-185
-144
-252
-185
-144
-251
-192
-154
-250
-200
-166
-255
-215
-190
-146
-135
-124
-56
-64
-60
-199
-115
-54
-227
-126
-50
-224
-123
-55
-227
-126
-50
-194
-112
-58
-51
-62
-63
-146
-135
-124
-255
-215
-190
-255
-215
-190
-251
-209
-178
-251
-209
-178
-253
-212
-188
-255
-215
-190
-194
-173
-157
-43
-57
-62
-146
-97
-64
-234
-126
-45
-224
-123
-55
-227
-126
-50
-227
-126
-50
-89
-75
-66
-77
-85
-81
-63
-74
-74
-135
-94
-64
-234
-125
-52
-224
-123
-55
-227
-126
-50
-227
-126
-50
-89
-75
-66
-101
-100
-92
-251
-209
-178
-250
-197
-158
-249
-189
-146
-249
-189
-146
-250
-200
-166
-172
-150
-134
-56
-64
-60
-188
-112
-56
-227
-126
-50
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-120
-114
-108
-255
-215
-190
-255
-215
-190
-253
-212
-188
-251
-209
-178
-253
-212
-188
-255
-215
-190
-217
-187
-166
-51
-62
-63
-135
-94
-64
-234
-126
-45
-224
-123
-55
-224
-123
-55
-234
-126
-45
-139
-96
-61
-55
-66
-67
-250
-200
-166
-249
-174
-124
-249
-152
-92
-247
-130
-60
-247
-118
-39
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-111
-26
-247
-118
-39
-247
-130
-60
-247
-150
-84
-251
-168
-115
-187
-140
-108
-24
-22
-23
-59
-50
-39
-168
-127
-42
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-156
-125
-62
-154
-125
-71
-154
-125
-71
-154
-125
-71
-156
-125
-62
-158
-125
-46
-47
-40
-38
-108
-87
-46
-158
-125
-46
-195
-167
-113
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-219
-212
-208
-164
-158
-157
-109
-106
-99
-65
-58
-56
-24
-22
-23
-24
-22
-23
-94
-60
-47
-178
-86
-46
-59
-50
-39
-150
-125
-114
-255
-215
-190
-255
-215
-190
-234
-204
-183
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-69
-69
-61
-84
-85
-82
-234
-204
-183
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-217
-187
-166
-55
-66
-67
-83
-78
-61
-168
-127
-42
-158
-125
-46
-158
-125
-46
-171
-129
-45
-123
-102
-54
-51
-62
-63
-76
-78
-76
-56
-64
-60
-152
-119
-47
-168
-127
-42
-158
-125
-46
-168
-127
-42
-129
-106
-52
-48
-58
-59
-161
-144
-134
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-217
-187
-166
-133
-120
-107
-77
-85
-81
-77
-85
-81
-146
-135
-124
-245
-212
-186
-176
-156
-141
-51
-62
-63
-137
-110
-49
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-75
-74
-61
-63
-74
-74
-227
-196
-175
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-234
-204
-183
-76
-78
-76
-75
-74
-61
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-88
-82
-59
-77
-85
-81
-77
-85
-81
-88
-82
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-129
-106
-52
-48
-58
-59
-146
-135
-124
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-172
-150
-134
-48
-58
-59
-117
-98
-55
-168
-127
-42
-158
-125
-46
-158
-125
-46
-168
-127
-42
-145
-114
-49
-51
-62
-63
-137
-127
-115
-58
-69
-70
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-63
-69
-60
-146
-135
-124
-120
-114
-108
-69
-69
-61
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-111
-94
-57
-51
-62
-63
-176
-156
-141
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-194
-173
-157
-120
-114
-108
-70
-79
-77
-84
-85
-82
-161
-144
-134
-255
-215
-190
-255
-215
-190
-161
-144
-134
-56
-64
-60
-199
-115
-54
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-126
-45
-155
-100
-63
-41
-58
-57
-161
-144
-134
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-137
-127
-115
-48
-58
-59
-183
-110
-59
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-89
-75
-66
-97
-98
-96
-172
-150
-134
-48
-58
-59
-183
-110
-59
-227
-126
-50
-224
-123
-55
-227
-126
-50
-214
-121
-50
-76
-70
-64
-84
-85
-82
-234
-204
-183
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-234
-204
-183
-77
-85
-81
-81
-73
-62
-224
-123
-55
-227
-126
-50
-224
-123
-55
-234
-125
-52
-173
-106
-60
-48
-58
-59
-176
-156
-141
-97
-98
-96
-95
-78
-64
-227
-126
-50
-227
-126
-50
-224
-123
-55
-234
-125
-52
-173
-106
-60
-48
-58
-59
-146
-135
-124
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-161
-144
-134
-41
-58
-57
-155
-100
-63
-234
-126
-45
-224
-123
-55
-224
-123
-55
-227
-126
-50
-194
-112
-58
-56
-64
-60
-101
-100
-92
-56
-64
-60
-188
-112
-56
-227
-126
-50
-224
-123
-55
-227
-126
-50
-183
-110
-59
-51
-62
-63
-176
-156
-141
-250
-200
-166
-249
-189
-146
-252
-185
-144
-249
-189
-146
-250
-200
-166
-120
-114
-108
-69
-69
-61
-214
-121
-50
-227
-126
-50
-224
-123
-55
-227
-126
-50
-199
-115
-54
-62
-63
-61
-101
-100
-92
-245
-212
-186
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-187
-166
-150
-43
-57
-62
-135
-94
-64
-234
-126
-45
-224
-123
-55
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-255
-215
-190
-253
-212
-188
-253
-204
-176
-250
-200
-166
-250
-200
-166
-253
-204
-176
-253
-212
-188
-255
-215
-190
-187
-166
-150
-41
-58
-57
-155
-100
-63
-234
-125
-52
-224
-123
-55
-227
-126
-50
-227
-126
-50
-95
-78
-64
-58
-69
-70
-227
-196
-175
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-245
-212
-186
-91
-92
-89
-62
-63
-61
-209
-117
-53
-227
-126
-50
-224
-123
-55
-227
-126
-50
-199
-115
-54
-62
-63
-61
-133
-120
-107
-77
-85
-81
-135
-94
-64
-234
-126
-45
-224
-123
-55
-227
-126
-50
-227
-126
-50
-89
-75
-66
-101
-100
-92
-253
-204
-176
-251
-192
-154
-252
-185
-144
-252
-185
-144
-251
-192
-154
-212
-173
-150
-48
-58
-59
-155
-100
-63
-234
-126
-45
-224
-123
-55
-224
-123
-55
-234
-125
-52
-118
-86
-65
-51
-62
-63
-207
-178
-158
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-109
-106
-99
-56
-64
-60
-199
-115
-54
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-125
-52
-139
-96
-61
-55
-66
-67
-250
-200
-166
-249
-174
-124
-249
-152
-92
-247
-130
-60
-247
-118
-39
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-111
-26
-246
-116
-28
-247
-130
-53
-247
-143
-74
-249
-159
-103
-248
-180
-134
-89
-75
-66
-24
-22
-23
-85
-71
-43
-171
-129
-45
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-156
-125
-62
-154
-125
-71
-154
-125
-71
-154
-125
-71
-156
-125
-62
-175
-132
-40
-85
-71
-43
-47
-40
-38
-158
-125
-46
-158
-125
-46
-170
-137
-67
-237
-233
-225
-253
-255
-252
-253
-255
-252
-253
-255
-252
-207
-202
-200
-164
-158
-157
-146
-135
-124
-120
-114
-108
-89
-84
-82
-65
-58
-56
-47
-40
-38
-24
-22
-23
-24
-22
-23
-35
-31
-30
-94
-60
-47
-178
-86
-46
-226
-110
-35
-241
-100
-24
-144
-77
-47
-65
-58
-56
-253
-212
-188
-255
-215
-190
-238
-205
-179
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-129
-106
-52
-48
-58
-59
-101
-100
-92
-217
-187
-166
-245
-212
-186
-245
-212
-186
-194
-173
-157
-76
-78
-76
-56
-64
-60
-145
-114
-49
-168
-127
-42
-158
-125
-46
-158
-125
-46
-171
-129
-45
-88
-82
-59
-77
-85
-81
-176
-156
-141
-48
-58
-59
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-95
-87
-59
-41
-58
-57
-137
-127
-115
-227
-196
-175
-255
-215
-190
-255
-215
-190
-255
-215
-190
-245
-212
-186
-207
-178
-158
-120
-114
-108
-48
-58
-59
-62
-63
-61
-100
-89
-56
-95
-87
-59
-51
-62
-63
-120
-114
-108
-227
-196
-175
-55
-66
-67
-100
-89
-56
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-137
-110
-49
-51
-62
-63
-84
-85
-82
-207
-178
-158
-245
-212
-186
-245
-212
-186
-207
-178
-158
-97
-98
-96
-51
-62
-63
-137
-110
-49
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-88
-82
-59
-91
-92
-89
-120
-114
-108
-63
-69
-60
-158
-125
-46
-161
-127
-40
-158
-125
-46
-158
-125
-46
-168
-127
-42
-88
-82
-59
-43
-57
-62
-161
-144
-134
-227
-196
-175
-253
-212
-188
-234
-204
-183
-161
-144
-134
-51
-62
-63
-75
-74
-61
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-145
-114
-49
-51
-62
-63
-137
-127
-115
-58
-69
-70
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-63
-69
-60
-146
-135
-124
-176
-156
-141
-48
-58
-59
-137
-110
-49
-171
-129
-45
-158
-125
-46
-161
-127
-40
-158
-125
-46
-75
-74
-61
-43
-57
-62
-161
-144
-134
-234
-204
-183
-255
-215
-190
-255
-215
-190
-255
-215
-190
-245
-212
-186
-194
-173
-157
-109
-106
-99
-43
-57
-62
-69
-69
-61
-105
-93
-60
-88
-82
-59
-48
-58
-59
-146
-135
-124
-255
-215
-190
-161
-144
-134
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-225
-124
-48
-95
-78
-64
-43
-57
-62
-161
-144
-134
-234
-204
-183
-245
-212
-186
-227
-196
-175
-146
-135
-124
-35
-56
-60
-125
-90
-64
-234
-125
-52
-224
-123
-55
-224
-123
-55
-234
-125
-52
-188
-112
-56
-51
-62
-63
-161
-144
-134
-234
-204
-183
-51
-62
-63
-125
-90
-64
-234
-126
-45
-224
-123
-55
-224
-123
-55
-234
-125
-52
-163
-104
-61
-43
-57
-62
-97
-98
-96
-207
-178
-158
-245
-212
-186
-245
-212
-186
-207
-178
-158
-91
-92
-89
-48
-58
-59
-173
-106
-60
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-126
-45
-118
-86
-65
-55
-66
-67
-234
-204
-183
-146
-135
-124
-56
-64
-60
-194
-112
-58
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-125
-52
-112
-85
-63
-35
-56
-60
-146
-135
-124
-227
-196
-175
-253
-212
-188
-234
-204
-183
-161
-144
-134
-43
-57
-62
-95
-78
-64
-225
-124
-48
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-194
-112
-58
-56
-64
-60
-101
-100
-92
-56
-64
-60
-188
-112
-56
-227
-126
-50
-224
-123
-55
-227
-126
-50
-183
-110
-59
-51
-62
-63
-176
-156
-141
-250
-197
-158
-252
-185
-144
-248
-180
-134
-248
-180
-134
-251
-192
-154
-172
-150
-134
-48
-58
-59
-173
-106
-60
-234
-125
-52
-224
-123
-55
-224
-123
-55
-234
-126
-45
-139
-96
-61
-41
-58
-57
-120
-114
-108
-217
-187
-166
-245
-212
-186
-234
-204
-183
-176
-156
-141
-58
-69
-70
-81
-73
-62
-214
-121
-50
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-255
-215
-190
-255
-215
-190
-217
-187
-166
-133
-120
-107
-84
-85
-82
-91
-92
-89
-146
-135
-124
-234
-204
-183
-238
-205
-179
-63
-74
-74
-95
-78
-64
-234
-126
-45
-224
-123
-55
-224
-123
-55
-227
-126
-50
-194
-112
-58
-56
-64
-60
-84
-85
-82
-194
-173
-157
-245
-212
-186
-245
-212
-186
-217
-187
-166
-109
-106
-99
-41
-58
-57
-146
-97
-64
-234
-126
-45
-224
-123
-55
-224
-123
-55
-234
-126
-45
-146
-97
-64
-51
-62
-63
-187
-166
-150
-76
-78
-76
-135
-94
-64
-234
-126
-45
-224
-123
-55
-227
-126
-50
-227
-126
-50
-89
-75
-66
-97
-98
-96
-250
-200
-166
-249
-189
-146
-248
-180
-134
-248
-180
-134
-252
-185
-144
-232
-190
-161
-70
-79
-77
-112
-85
-63
-234
-126
-45
-224
-123
-55
-224
-123
-55
-227
-126
-50
-199
-115
-54
-65
-67
-64
-70
-79
-77
-187
-166
-150
-238
-205
-179
-245
-212
-186
-217
-187
-166
-133
-120
-107
-35
-56
-60
-135
-94
-64
-234
-126
-45
-224
-123
-55
-224
-123
-55
-224
-123
-55
-234
-126
-45
-139
-96
-61
-55
-66
-67
-250
-200
-166
-249
-174
-124
-249
-152
-92
-247
-130
-60
-247
-118
-39
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-123
-41
-247
-130
-60
-247
-150
-84
-251
-168
-115
-203
-161
-131
-55
-48
-48
-24
-22
-23
-71
-60
-43
-145
-114
-49
-171
-129
-45
-171
-129
-45
-158
-125
-46
-156
-125
-62
-154
-125
-71
-154
-125
-71
-156
-125
-62
-156
-125
-62
-171
-129
-45
-171
-129
-45
-101
-83
-47
-35
-31
-30
-123
-102
-54
-171
-129
-45
-158
-125
-46
-160
-120
-43
-224
-207
-180
-253
-255
-252
-253
-255
-252
-219
-212
-208
-47
-40
-38
-24
-22
-23
-24
-22
-23
-24
-22
-23
-24
-22
-23
-24
-22
-23
-35
-31
-30
-35
-31
-30
-24
-22
-23
-47
-40
-38
-226
-110
-35
-241
-100
-24
-226
-110
-35
-226
-110
-35
-144
-77
-47
-55
-48
-48
-238
-205
-179
-255
-215
-190
-238
-205
-179
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-123
-102
-54
-56
-64
-60
-51
-62
-63
-84
-85
-82
-84
-85
-82
-48
-58
-59
-63
-69
-60
-129
-106
-52
-168
-127
-42
-158
-125
-46
-158
-125
-46
-168
-127
-42
-145
-114
-49
-56
-64
-60
-137
-127
-115
-245
-212
-186
-84
-85
-82
-69
-69
-61
-158
-125
-46
-158
-125
-46
-158
-125
-46
-161
-127
-40
-158
-125
-46
-95
-87
-59
-48
-58
-59
-63
-74
-74
-109
-106
-99
-133
-120
-107
-133
-120
-107
-91
-92
-89
-51
-62
-63
-56
-64
-60
-100
-89
-56
-152
-119
-47
-171
-129
-45
-175
-132
-40
-100
-89
-56
-48
-58
-59
-217
-187
-166
-120
-114
-108
-63
-69
-60
-152
-119
-47
-161
-127
-40
-158
-125
-46
-158
-125
-46
-168
-127
-42
-129
-106
-52
-61
-67
-58
-51
-62
-63
-84
-85
-82
-84
-85
-82
-51
-62
-63
-56
-64
-60
-123
-102
-54
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-97
-98
-96
-187
-166
-150
-48
-58
-59
-123
-102
-54
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-158
-125
-46
-83
-78
-61
-48
-58
-59
-63
-74
-74
-91
-92
-89
-70
-79
-77
-48
-58
-59
-75
-74
-61
-152
-119
-47
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-145
-114
-49
-51
-62
-63
-137
-127
-115
-58
-69
-70
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-63
-69
-60
-146
-135
-124
-234
-204
-183
-63
-74
-74
-83
-78
-61
-168
-127
-42
-158
-125
-46
-158
-125
-46
-168
-127
-42
-152
-119
-47
-83
-78
-61
-48
-58
-59
-70
-79
-77
-109
-106
-99
-133
-120
-107
-120
-114
-108
-84
-85
-82
-48
-58
-59
-61
-67
-58
-111
-94
-57
-158
-125
-46
-171
-129
-45
-171
-129
-45
-88
-82
-59
-58
-69
-70
-238
-205
-179
-172
-150
-134
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-212
-120
-56
-95
-78
-64
-43
-57
-62
-70
-79
-77
-84
-85
-82
-63
-74
-74
-48
-58
-59
-118
-86
-65
-225
-124
-48
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-126
-45
-112
-85
-63
-55
-66
-67
-227
-196
-175
-255
-215
-190
-120
-114
-108
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-155
-100
-63
-62
-63
-61
-51
-62
-63
-77
-85
-81
-77
-85
-81
-51
-62
-63
-62
-63
-61
-155
-100
-63
-234
-125
-52
-224
-123
-55
-224
-123
-55
-234
-125
-52
-199
-115
-54
-56
-64
-60
-120
-114
-108
-255
-215
-190
-217
-187
-166
-43
-57
-62
-125
-90
-64
-234
-126
-45
-224
-123
-55
-224
-123
-55
-227
-126
-50
-224
-123
-55
-106
-82
-65
-48
-58
-59
-63
-74
-74
-84
-85
-82
-70
-79
-77
-43
-57
-62
-95
-78
-64
-212
-120
-56
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-194
-112
-58
-56
-64
-60
-101
-100
-92
-56
-64
-60
-188
-112
-56
-227
-126
-50
-224
-123
-55
-234
-125
-52
-183
-110
-59
-51
-62
-63
-172
-150
-134
-251
-192
-154
-248
-180
-134
-249
-174
-124
-249
-174
-124
-248
-180
-134
-236
-186
-153
-63
-74
-74
-95
-78
-64
-234
-126
-45
-224
-123
-55
-224
-123
-55
-227
-126
-50
-227
-126
-50
-135
-94
-64
-51
-62
-63
-55
-66
-67
-84
-85
-82
-70
-79
-77
-41
-58
-57
-81
-73
-62
-199
-115
-54
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-255
-215
-190
-194
-173
-157
-58
-69
-70
-62
-63
-61
-106
-82
-65
-95
-78
-64
-51
-62
-63
-91
-92
-89
-238
-205
-179
-161
-144
-134
-48
-58
-59
-183
-110
-59
-234
-125
-52
-224
-123
-55
-224
-123
-55
-234
-125
-52
-173
-106
-60
-65
-67
-64
-48
-58
-59
-77
-85
-81
-84
-85
-82
-55
-66
-67
-56
-64
-60
-146
-97
-64
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-209
-117
-53
-69
-69
-61
-101
-100
-92
-227
-196
-175
-63
-74
-74
-135
-94
-64
-234
-125
-52
-224
-123
-55
-227
-126
-50
-227
-126
-50
-89
-75
-66
-101
-100
-92
-250
-197
-158
-252
-185
-144
-249
-174
-124
-249
-174
-124
-250
-176
-132
-251
-192
-154
-120
-114
-108
-62
-63
-61
-209
-117
-53
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-188
-112
-56
-76
-70
-64
-41
-58
-57
-77
-85
-81
-84
-85
-82
-58
-69
-70
-48
-58
-59
-125
-90
-64
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-234
-126
-45
-139
-96
-61
-55
-66
-67
-250
-200
-166
-249
-174
-124
-249
-152
-92
-247
-130
-60
-247
-118
-39
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-243
-101
-2
-247
-103
-7
-247
-103
-7
-247
-111
-26
-247
-118
-39
-247
-130
-53
-250
-139
-73
-246
-156
-93
-249
-174
-124
-203
-161
-131
-55
-48
-48
-24
-22
-23
-35
-31
-30
-85
-71
-43
-137
-110
-49
-152
-119
-47
-168
-127
-42
-171
-129
-45
-171
-129
-45
-168
-127
-42
-152
-119
-47
-117
-98
-55
-59
-50
-39
-35
-31
-30
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-152
-119
-47
-224
-207
-180
-253
-255
-252
-253
-255
-252
-253
-255
-252
-146
-135
-124
-65
-58
-56
-35
-31
-30
-24
-22
-23
-24
-22
-23
-35
-31
-30
-35
-31
-30
-35
-31
-30
-35
-31
-30
-24
-22
-23
-83
-53
-42
-236
-108
-29
-236
-108
-29
-226
-110
-35
-94
-60
-47
-65
-58
-56
-253
-212
-188
-255
-215
-190
-238
-205
-179
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-161
-127
-40
-168
-127
-42
-145
-114
-49
-105
-93
-60
-83
-78
-61
-83
-78
-61
-111
-94
-57
-158
-125
-46
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-88
-82
-59
-51
-62
-63
-217
-187
-166
-255
-215
-190
-176
-156
-141
-43
-57
-62
-105
-93
-60
-171
-129
-45
-158
-125
-46
-158
-125
-46
-161
-127
-40
-168
-127
-42
-137
-110
-49
-88
-82
-59
-69
-69
-61
-62
-63
-61
-63
-69
-60
-75
-74
-61
-105
-93
-60
-152
-119
-47
-171
-129
-45
-168
-127
-42
-158
-125
-46
-171
-129
-45
-129
-106
-52
-48
-58
-59
-194
-173
-157
-207
-178
-158
-43
-57
-62
-100
-89
-56
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-152
-119
-47
-111
-94
-57
-83
-78
-61
-83
-78
-61
-105
-93
-60
-145
-114
-49
-168
-127
-42
-161
-127
-40
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-88
-82
-59
-84
-85
-82
-245
-212
-186
-77
-85
-81
-75
-74
-61
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-168
-127
-42
-129
-106
-52
-95
-87
-59
-81
-73
-62
-95
-87
-59
-123
-102
-54
-168
-127
-42
-168
-127
-42
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-145
-114
-49
-56
-64
-60
-137
-127
-115
-58
-69
-70
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-63
-69
-60
-137
-127
-115
-255
-215
-190
-161
-144
-134
-48
-58
-59
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-168
-127
-42
-129
-106
-52
-88
-82
-59
-69
-69
-61
-62
-63
-61
-63
-69
-60
-75
-74
-61
-117
-98
-55
-152
-119
-47
-171
-129
-45
-161
-127
-40
-158
-125
-46
-171
-129
-45
-111
-94
-57
-48
-58
-59
-227
-196
-175
-176
-156
-141
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-227
-126
-50
-227
-126
-50
-163
-104
-61
-112
-85
-63
-95
-78
-64
-118
-86
-65
-173
-106
-60
-227
-126
-50
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-125
-52
-183
-110
-59
-51
-62
-63
-133
-120
-107
-255
-215
-190
-255
-215
-190
-217
-187
-166
-51
-62
-63
-106
-82
-65
-234
-126
-45
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-126
-45
-199
-115
-54
-135
-94
-64
-95
-78
-64
-95
-78
-64
-135
-94
-64
-199
-115
-54
-234
-125
-52
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-126
-45
-106
-82
-65
-51
-62
-63
-217
-187
-166
-255
-215
-190
-255
-215
-190
-120
-114
-108
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-227
-126
-50
-173
-106
-60
-118
-86
-65
-95
-78
-64
-112
-85
-63
-163
-104
-61
-227
-126
-50
-227
-126
-50
-227
-126
-50
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-194
-112
-58
-56
-64
-60
-101
-100
-92
-56
-64
-60
-188
-112
-56
-227
-126
-50
-224
-123
-55
-227
-126
-50
-183
-110
-59
-51
-62
-63
-172
-150
-134
-252
-185
-144
-249
-174
-124
-247
-165
-111
-247
-165
-111
-249
-174
-124
-252
-185
-144
-154
-133
-118
-48
-58
-59
-163
-104
-61
-234
-126
-45
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-125
-52
-188
-112
-56
-125
-90
-64
-95
-78
-64
-106
-82
-65
-155
-100
-63
-224
-123
-55
-234
-125
-52
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-253
-212
-188
-91
-92
-89
-69
-69
-61
-194
-112
-58
-234
-126
-45
-234
-126
-45
-163
-104
-61
-51
-62
-63
-137
-127
-115
-238
-205
-179
-63
-74
-74
-89
-75
-66
-227
-126
-50
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-209
-117
-53
-146
-97
-64
-106
-82
-65
-95
-78
-64
-125
-90
-64
-194
-112
-58
-234
-126
-45
-227
-126
-50
-224
-123
-55
-227
-126
-50
-234
-126
-45
-125
-90
-64
-41
-58
-57
-194
-173
-157
-238
-205
-179
-63
-74
-74
-135
-94
-64
-234
-125
-52
-224
-123
-55
-227
-126
-50
-227
-126
-50
-89
-75
-66
-101
-100
-92
-251
-192
-154
-250
-176
-132
-251
-168
-115
-247
-165
-111
-249
-174
-124
-245
-179
-138
-195
-157
-134
-41
-58
-57
-135
-94
-64
-234
-126
-45
-224
-123
-55
-224
-123
-55
-224
-123
-55
-234
-125
-52
-214
-121
-50
-146
-97
-64
-106
-82
-65
-95
-78
-64
-125
-90
-64
-183
-110
-59
-227
-126
-50
-227
-126
-50
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-234
-125
-52
-139
-96
-61
-55
-66
-67
-250
-200
-166
-249
-174
-124
-249
-152
-92
-247
-130
-60
-247
-118
-39
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-118
-39
-247
-130
-53
-247
-143
-74
-249
-159
-103
-250
-176
-132
-219
-170
-138
-115
-102
-92
-47
-40
-38
-24
-22
-23
-35
-31
-30
-47
-40
-38
-59
-50
-39
-59
-50
-39
-59
-50
-39
-59
-50
-39
-47
-40
-38
-47
-40
-38
-71
-60
-43
-137
-110
-49
-171
-129
-45
-158
-125
-46
-158
-125
-46
-152
-119
-47
-170
-137
-67
-219
-212
-208
-237
-233
-225
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-219
-212
-208
-152
-147
-147
-109
-106
-99
-65
-67
-64
-35
-31
-30
-35
-31
-30
-35
-31
-30
-35
-31
-30
-24
-22
-23
-94
-60
-47
-178
-86
-46
-109
-63
-45
-35
-31
-30
-124
-111
-99
-251
-209
-178
-251
-209
-178
-234
-204
-183
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-117
-98
-55
-129
-106
-52
-168
-127
-42
-168
-127
-42
-171
-129
-45
-168
-127
-42
-168
-127
-42
-171
-129
-45
-161
-127
-40
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-117
-98
-55
-48
-58
-59
-146
-135
-124
-255
-215
-190
-255
-215
-190
-255
-215
-190
-120
-114
-108
-51
-62
-63
-123
-102
-54
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-168
-127
-42
-158
-125
-46
-152
-119
-47
-152
-119
-47
-158
-125
-46
-168
-127
-42
-168
-127
-42
-158
-125
-46
-158
-125
-46
-168
-127
-42
-158
-125
-46
-81
-73
-62
-58
-69
-70
-227
-196
-175
-255
-215
-190
-120
-114
-108
-48
-58
-59
-129
-106
-52
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-161
-127
-40
-168
-127
-42
-168
-127
-42
-168
-127
-42
-171
-129
-45
-168
-127
-42
-168
-127
-42
-152
-119
-47
-117
-98
-55
-168
-127
-42
-158
-125
-46
-158
-125
-46
-168
-127
-42
-88
-82
-59
-84
-85
-82
-255
-215
-190
-176
-156
-141
-48
-58
-59
-111
-94
-57
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-168
-127
-42
-168
-127
-42
-168
-127
-42
-168
-127
-42
-158
-125
-46
-158
-125
-46
-145
-114
-49
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-145
-114
-49
-51
-62
-63
-137
-127
-115
-58
-69
-70
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-63
-69
-60
-137
-127
-115
-255
-215
-190
-238
-205
-179
-91
-92
-89
-56
-64
-60
-137
-110
-49
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-168
-127
-42
-158
-125
-46
-152
-119
-47
-158
-125
-46
-168
-127
-42
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-152
-119
-47
-69
-69
-61
-84
-85
-82
-245
-212
-186
-172
-150
-134
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-227
-126
-50
-199
-115
-54
-125
-90
-64
-227
-126
-50
-227
-126
-50
-227
-126
-50
-234
-125
-52
-227
-126
-50
-234
-125
-52
-234
-125
-52
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-214
-121
-50
-81
-73
-62
-63
-74
-74
-227
-196
-175
-255
-215
-190
-253
-212
-188
-255
-215
-190
-146
-135
-124
-48
-58
-59
-146
-97
-64
-234
-126
-45
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-126
-45
-227
-126
-50
-227
-126
-50
-234
-126
-45
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-126
-45
-139
-96
-61
-48
-58
-59
-146
-135
-124
-255
-215
-190
-253
-212
-188
-255
-215
-190
-217
-187
-166
-55
-66
-67
-95
-78
-64
-225
-124
-48
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-125
-52
-227
-126
-50
-227
-126
-50
-227
-126
-50
-224
-123
-55
-234
-126
-45
-163
-104
-61
-183
-110
-59
-227
-126
-50
-224
-123
-55
-227
-126
-50
-194
-112
-58
-56
-64
-60
-97
-98
-96
-56
-64
-60
-188
-112
-56
-227
-126
-50
-224
-123
-55
-227
-126
-50
-183
-110
-59
-51
-62
-63
-167
-142
-123
-248
-180
-134
-247
-165
-111
-249
-159
-103
-246
-156
-93
-249
-159
-103
-249
-174
-124
-239
-182
-144
-77
-85
-81
-65
-67
-64
-199
-115
-54
-234
-125
-52
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-125
-52
-227
-126
-50
-227
-126
-50
-234
-125
-52
-227
-126
-50
-227
-126
-50
-135
-94
-64
-188
-112
-56
-227
-126
-50
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-146
-135
-124
-227
-196
-175
-43
-57
-62
-146
-97
-64
-234
-126
-45
-224
-123
-55
-224
-123
-55
-234
-126
-45
-106
-82
-65
-70
-79
-77
-253
-212
-188
-176
-156
-141
-41
-58
-57
-125
-90
-64
-234
-126
-45
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-125
-52
-234
-125
-52
-227
-126
-50
-234
-125
-52
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-126
-45
-155
-100
-63
-48
-58
-59
-120
-114
-108
-253
-212
-188
-234
-204
-183
-63
-74
-74
-135
-94
-64
-234
-126
-45
-224
-123
-55
-227
-126
-50
-227
-126
-50
-89
-75
-66
-101
-100
-92
-252
-185
-144
-245
-169
-119
-249
-159
-103
-249
-159
-103
-247
-165
-111
-249
-174
-124
-251
-192
-154
-109
-106
-99
-62
-63
-61
-188
-112
-56
-234
-125
-52
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-125
-52
-234
-125
-52
-227
-126
-50
-234
-125
-52
-227
-126
-50
-227
-126
-50
-212
-120
-56
-199
-115
-54
-224
-123
-55
-224
-123
-55
-224
-123
-55
-234
-126
-45
-139
-96
-61
-55
-66
-67
-250
-200
-166
-249
-174
-124
-247
-150
-84
-247
-130
-60
-247
-118
-39
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-243
-101
-2
-243
-101
-2
-247
-103
-7
-247
-111
-26
-247
-111
-26
-247
-123
-41
-247
-130
-60
-243
-141
-78
-249
-159
-103
-250
-176
-132
-251
-192
-154
-207
-178
-158
-154
-133
-118
-82
-69
-65
-24
-22
-23
-71
-60
-43
-101
-83
-47
-101
-83
-47
-101
-83
-47
-117
-98
-55
-145
-114
-49
-171
-129
-45
-168
-127
-42
-160
-120
-43
-160
-120
-43
-158
-125
-46
-192
-155
-91
-237
-233
-225
-81
-77
-76
-55
-48
-48
-74
-68
-68
-81
-77
-76
-89
-84
-82
-91
-92
-89
-89
-84
-82
-81
-77
-76
-65
-58
-56
-47
-40
-38
-35
-31
-30
-55
-48
-48
-115
-102
-92
-172
-150
-134
-55
-48
-48
-24
-22
-23
-24
-22
-23
-24
-22
-23
-65
-58
-56
-230
-173
-136
-251
-192
-154
-250
-197
-158
-250
-200
-166
-84
-85
-82
-88
-82
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-171
-129
-45
-83
-78
-61
-69
-69
-61
-168
-127
-42
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-171
-129
-45
-117
-98
-55
-48
-58
-59
-101
-100
-92
-238
-205
-179
-253
-204
-176
-250
-200
-166
-253
-204
-176
-238
-205
-179
-91
-92
-89
-51
-62
-63
-117
-98
-55
-171
-129
-45
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-161
-127
-40
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-171
-129
-45
-145
-114
-49
-75
-74
-61
-48
-58
-59
-172
-150
-134
-253
-212
-188
-255
-215
-190
-234
-204
-183
-84
-85
-82
-56
-64
-60
-129
-106
-52
-171
-129
-45
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-168
-127
-42
-81
-73
-62
-63
-69
-60
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-84
-85
-82
-255
-215
-190
-245
-212
-186
-109
-106
-99
-51
-62
-63
-123
-102
-54
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-161
-127
-40
-171
-129
-45
-105
-93
-60
-51
-62
-63
-137
-110
-49
-168
-127
-42
-158
-125
-46
-168
-127
-42
-145
-114
-49
-51
-62
-63
-137
-127
-115
-58
-69
-70
-111
-94
-57
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-62
-63
-61
-137
-127
-115
-255
-215
-190
-255
-215
-190
-227
-196
-175
-77
-85
-81
-56
-64
-60
-129
-106
-52
-171
-129
-45
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-161
-127
-40
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-168
-127
-42
-137
-110
-49
-69
-69
-61
-51
-62
-63
-187
-166
-150
-255
-215
-190
-172
-150
-134
-51
-62
-63
-194
-112
-58
-227
-126
-50
-224
-123
-55
-234
-125
-52
-183
-110
-59
-48
-58
-59
-155
-100
-63
-234
-126
-45
-224
-123
-55
-224
-123
-55
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-125
-52
-209
-117
-53
-89
-75
-66
-48
-58
-59
-187
-166
-150
-250
-200
-166
-250
-197
-158
-251
-192
-154
-250
-197
-158
-250
-200
-166
-109
-106
-99
-48
-58
-59
-135
-94
-64
-234
-125
-52
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-227
-126
-50
-135
-94
-64
-43
-57
-62
-120
-114
-108
-250
-200
-166
-250
-197
-158
-251
-192
-154
-250
-197
-158
-250
-200
-166
-172
-150
-134
-41
-58
-57
-106
-82
-65
-214
-121
-50
-234
-125
-52
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-224
-123
-55
-227
-126
-50
-234
-126
-45
-183
-110
-59
-48
-58
-59
-135
-94
-64
-234
-126
-45
-224
-123
-55
-227
-126
-50
-188
-112
-56
-51
-62
-63
-109
-106
-99
-51
-62
-63
-183
-110
-59
-227
-126
-50
-224
-123
-55
-234
-125
-52
-173
-106
-60
-48
-58
-59
-178
-146
-122
-245
-169
-119
-246
-156
-93
-247
-150
-84
-249
-146
-83
-247
-150
-84
-249
-159
-103
-249
-174
-124
-203
-161
-131
-58
-69
-70
-76
-70
-64
-194
-112
-58
-234
-126
-45
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-126
-45
-183
-110
-59
-48
-58
-59
-163
-104
-61
-234
-126
-45
-224
-123
-55
-227
-126
-50
-209
-117
-53
-62
-63
-61
-146
-135
-124
-217
-187
-166
-43
-57
-62
-163
-104
-61
-234
-125
-52
-224
-123
-55
-224
-123
-55
-234
-126
-45
-125
-90
-64
-58
-69
-70
-234
-204
-183
-255
-215
-190
-137
-127
-115
-41
-58
-57
-118
-86
-65
-225
-124
-48
-234
-126
-45
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-126
-45
-146
-97
-64
-51
-62
-63
-97
-98
-96
-238
-205
-179
-255
-215
-190
-234
-204
-183
-63
-74
-74
-118
-86
-65
-234
-126
-45
-224
-123
-55
-227
-126
-50
-227
-126
-50
-81
-73
-62
-101
-100
-92
-250
-176
-132
-247
-165
-111
-246
-156
-93
-249
-152
-92
-249
-159
-103
-251
-168
-115
-252
-185
-144
-217
-187
-166
-58
-69
-70
-69
-69
-61
-199
-115
-54
-234
-126
-45
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-224
-123
-55
-227
-126
-50
-225
-124
-48
-81
-73
-62
-81
-73
-62
-227
-126
-50
-227
-126
-50
-224
-123
-55
-234
-126
-45
-139
-96
-61
-55
-66
-67
-250
-197
-158
-249
-174
-124
-247
-150
-84
-247
-130
-60
-247
-118
-39
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-237
-95
-0
-237
-95
-0
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-237
-95
-0
-243
-101
-2
-247
-103
-7
-236
-102
-14
-247
-111
-26
-246
-116
-28
-247
-123
-41
-247
-130
-60
-243
-141
-78
-249
-159
-103
-249
-174
-124
-249
-189
-146
-253
-204
-176
-124
-111
-99
-35
-31
-30
-145
-114
-49
-175
-132
-40
-171
-129
-45
-168
-127
-42
-192
-155
-91
-216
-194
-154
-224
-207
-180
-224
-207
-180
-216
-194
-154
-216
-194
-154
-239
-227
-208
-253
-255
-252
-253
-255
-252
-186
-181
-179
-146
-135
-124
-120
-114
-108
-109
-106
-99
-95
-78
-64
-71
-60
-43
-85
-71
-43
-101
-83
-47
-108
-87
-46
-35
-31
-30
-150
-125
-114
-227
-196
-175
-255
-215
-190
-253
-212
-188
-212
-173
-150
-121
-100
-85
-95
-78
-64
-129
-102
-78
-234
-168
-124
-250
-176
-132
-250
-176
-132
-248
-180
-134
-249
-189
-146
-124
-111
-99
-62
-63
-61
-152
-119
-47
-171
-129
-45
-171
-129
-45
-145
-114
-49
-56
-64
-60
-43
-57
-62
-83
-78
-61
-152
-119
-47
-171
-129
-45
-171
-129
-45
-168
-127
-42
-168
-127
-42
-171
-129
-45
-171
-129
-45
-152
-119
-47
-95
-87
-59
-48
-58
-59
-101
-100
-92
-236
-186
-153
-251
-192
-154
-252
-185
-144
-248
-180
-134
-245
-179
-138
-249
-189
-146
-236
-186
-153
-101
-100
-92
-48
-58
-59
-88
-82
-59
-137
-110
-49
-168
-127
-42
-171
-129
-45
-168
-127
-42
-168
-127
-42
-168
-127
-42
-168
-127
-42
-171
-129
-45
-171
-129
-45
-168
-127
-42
-145
-114
-49
-100
-89
-56
-56
-64
-60
-58
-69
-70
-172
-150
-134
-250
-200
-166
-251
-192
-154
-250
-197
-158
-250
-200
-166
-217
-187
-166
-84
-85
-82
-51
-62
-63
-105
-93
-60
-158
-125
-46
-171
-129
-45
-171
-129
-45
-168
-127
-42
-168
-127
-42
-168
-127
-42
-171
-129
-45
-152
-119
-47
-83
-78
-61
-43
-57
-62
-48
-58
-59
-129
-106
-52
-175
-132
-40
-171
-129
-45
-158
-125
-46
-63
-69
-60
-120
-114
-108
-255
-215
-190
-255
-215
-190
-227
-196
-175
-84
-85
-82
-51
-62
-63
-105
-93
-60
-158
-125
-46
-171
-129
-45
-171
-129
-45
-168
-127
-42
-168
-127
-42
-168
-127
-42
-171
-129
-45
-158
-125
-46
-105
-93
-60
-48
-58
-59
-48
-58
-59
-129
-106
-52
-168
-127
-42
-158
-125
-46
-168
-127
-42
-145
-114
-49
-51
-62
-63
-172
-150
-134
-91
-92
-89
-75
-74
-61
-168
-127
-42
-171
-129
-45
-175
-132
-40
-117
-98
-55
-48
-58
-59
-176
-156
-141
-253
-204
-176
-253
-204
-176
-253
-204
-176
-217
-187
-166
-84
-85
-82
-48
-58
-59
-95
-87
-59
-145
-114
-49
-168
-127
-42
-171
-129
-45
-168
-127
-42
-168
-127
-42
-168
-127
-42
-168
-127
-42
-171
-129
-45
-171
-129
-45
-158
-125
-46
-137
-110
-49
-95
-87
-59
-51
-62
-63
-70
-79
-77
-187
-166
-150
-251
-209
-178
-251
-209
-178
-207
-178
-158
-43
-57
-62
-135
-94
-64
-238
-123
-45
-234
-126
-45
-234
-126
-45
-118
-86
-65
-35
-56
-60
-56
-64
-60
-155
-100
-63
-234
-125
-52
-234
-126
-45
-234
-125
-52
-227
-126
-50
-227
-126
-50
-234
-126
-45
-227
-126
-50
-163
-104
-61
-76
-70
-64
-51
-62
-63
-167
-142
-123
-251
-192
-154
-248
-180
-134
-249
-174
-124
-249
-174
-124
-250
-176
-132
-245
-179
-138
-236
-186
-153
-109
-106
-99
-41
-58
-57
-95
-78
-64
-183
-110
-59
-234
-125
-52
-234
-126
-45
-234
-125
-52
-227
-126
-50
-227
-126
-50
-234
-125
-52
-234
-126
-45
-227
-126
-50
-183
-110
-59
-95
-78
-64
-43
-57
-62
-124
-111
-99
-236
-186
-153
-252
-185
-144
-250
-176
-132
-249
-174
-124
-249
-174
-124
-248
-180
-134
-251
-192
-154
-154
-133
-118
-43
-57
-62
-81
-73
-62
-173
-106
-60
-227
-126
-50
-234
-126
-45
-227
-126
-50
-227
-126
-50
-227
-126
-50
-234
-126
-45
-234
-125
-52
-155
-100
-63
-56
-64
-60
-35
-56
-60
-89
-75
-66
-227
-126
-50
-234
-126
-45
-238
-128
-40
-146
-97
-64
-43
-57
-62
-176
-156
-141
-58
-69
-70
-118
-86
-65
-234
-126
-45
-234
-126
-45
-234
-126
-45
-112
-85
-63
-43
-57
-62
-210
-156
-119
-245
-162
-103
-247
-150
-84
-247
-143
-74
-248
-138
-64
-241
-138
-68
-249
-146
-83
-249
-159
-103
-250
-176
-132
-195
-157
-134
-58
-69
-70
-65
-67
-64
-155
-100
-63
-227
-126
-50
-234
-126
-45
-227
-126
-50
-227
-126
-50
-234
-125
-52
-234
-126
-45
-234
-126
-45
-173
-106
-60
-65
-67
-64
-35
-56
-60
-106
-82
-65
-234
-126
-45
-234
-126
-45
-238
-128
-40
-146
-97
-64
-43
-57
-62
-187
-166
-150
-234
-204
-183
-55
-66
-67
-106
-82
-65
-234
-126
-45
-234
-125
-52
-234
-125
-52
-224
-123
-55
-81
-73
-62
-91
-92
-89
-245
-212
-186
-253
-212
-188
-253
-212
-188
-137
-127
-115
-41
-58
-57
-89
-75
-66
-173
-106
-60
-227
-126
-50
-234
-126
-45
-227
-126
-50
-227
-126
-50
-227
-126
-50
-234
-125
-52
-234
-126
-45
-234
-125
-52
-194
-112
-58
-106
-82
-65
-43
-57
-62
-101
-100
-92
-227
-196
-175
-251
-209
-178
-251
-209
-178
-253
-212
-188
-97
-98
-96
-69
-69
-61
-209
-117
-53
-234
-126
-45
-238
-128
-40
-173
-106
-60
-51
-62
-63
-139
-115
-96
-251
-168
-115
-246
-156
-93
-247
-150
-84
-249
-146
-83
-249
-152
-92
-247
-165
-111
-248
-180
-134
-250
-200
-166
-187
-166
-150
-55
-66
-67
-69
-69
-61
-163
-104
-61
-234
-125
-52
-234
-126
-45
-234
-125
-52
-227
-126
-50
-227
-126
-50
-234
-126
-45
-234
-126
-45
-199
-115
-54
-95
-78
-64
-35
-56
-60
-81
-73
-62
-227
-126
-50
-227
-126
-50
-224
-123
-55
-234
-126
-45
-139
-96
-61
-51
-62
-63
-250
-197
-158
-245
-169
-119
-247
-150
-84
-247
-130
-60
-247
-118
-39
-235
-107
-16
-243
-101
-2
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-246
-97
-3
-237
-95
-0
-243
-101
-2
-247
-103
-7
-236
-102
-14
-247
-111
-26
-246
-116
-28
-238
-123
-45
-241
-132
-59
-247
-143
-74
-246
-156
-93
-245
-169
-119
-230
-173
-136
-47
-40
-38
-59
-50
-39
-168
-127
-42
-161
-127
-40
-160
-120
-43
-192
-155
-91
-255
-238
-227
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-239
-227
-208
-170
-137
-67
-171
-129
-45
-171
-129
-45
-171
-129
-45
-59
-50
-39
-154
-133
-118
-250
-200
-166
-250
-197
-158
-249
-189
-146
-248
-180
-134
-249
-174
-124
-247
-165
-111
-247
-165
-111
-245
-162
-103
-249
-159
-103
-245
-162
-103
-247
-165
-111
-249
-174
-124
-203
-161
-131
-55
-66
-67
-69
-69
-61
-111
-94
-57
-105
-93
-60
-69
-69
-61
-63
-74
-74
-137
-127
-115
-51
-62
-63
-62
-63
-61
-95
-87
-59
-129
-106
-52
-137
-110
-49
-137
-110
-49
-123
-102
-54
-95
-87
-59
-62
-63
-61
-51
-62
-63
-133
-120
-107
-239
-182
-144
-248
-180
-134
-245
-169
-119
-247
-165
-111
-249
-159
-103
-245
-162
-103
-251
-168
-115
-250
-176
-132
-239
-182
-144
-154
-133
-118
-63
-74
-74
-51
-62
-63
-75
-74
-61
-105
-93
-60
-123
-102
-54
-137
-110
-49
-137
-110
-49
-137
-110
-49
-123
-102
-54
-100
-89
-56
-75
-74
-61
-56
-64
-60
-55
-66
-67
-124
-111
-99
-219
-170
-138
-252
-185
-144
-250
-176
-132
-249
-174
-124
-249
-174
-124
-250
-176
-132
-252
-185
-144
-236
-186
-153
-124
-111
-99
-48
-58
-59
-63
-69
-60
-95
-87
-59
-123
-102
-54
-137
-110
-49
-137
-110
-49
-129
-106
-52
-95
-87
-59
-62
-63
-61
-55
-66
-67
-146
-135
-124
-77
-85
-81
-61
-67
-58
-105
-93
-60
-111
-94
-57
-75
-74
-61
-48
-58
-59
-194
-173
-157
-255
-215
-190
-255
-215
-190
-255
-215
-190
-234
-204
-183
-120
-114
-108
-43
-57
-62
-69
-69
-61
-100
-89
-56
-129
-106
-52
-137
-110
-49
-137
-110
-49
-129
-106
-52
-105
-93
-60
-69
-69
-61
-48
-58
-59
-77
-85
-81
-51
-62
-63
-137
-110
-49
-168
-127
-42
-158
-125
-46
-168
-127
-42
-137
-110
-49
-51
-62
-63
-187
-166
-150
-187
-166
-150
-48
-58
-59
-75
-74
-61
-111
-94
-57
-95
-87
-59
-56
-64
-60
-99
-90
-79
-239
-182
-144
-252
-185
-144
-245
-179
-138
-252
-185
-144
-249
-189
-146
-236
-186
-153
-137
-127
-115
-55
-66
-67
-56
-64
-60
-83
-78
-61
-111
-94
-57
-129
-106
-52
-137
-110
-49
-137
-110
-49
-129
-106
-52
-117
-98
-55
-95
-87
-59
-69
-69
-61
-51
-62
-63
-63
-74
-74
-133
-120
-107
-236
-186
-153
-250
-197
-158
-251
-192
-154
-251
-192
-154
-250
-197
-158
-124
-111
-99
-51
-62
-63
-112
-85
-63
-146
-97
-64
-106
-82
-65
-48
-58
-59
-120
-114
-108
-101
-100
-92
-48
-58
-59
-95
-78
-64
-146
-97
-64
-183
-110
-59
-188
-112
-56
-173
-106
-60
-139
-96
-61
-89
-75
-66
-48
-58
-59
-77
-85
-81
-186
-157
-134
-245
-179
-138
-245
-169
-119
-245
-162
-103
-246
-156
-93
-246
-156
-93
-246
-156
-93
-247
-165
-111
-249
-174
-124
-249
-189
-146
-154
-133
-118
-58
-69
-70
-51
-62
-63
-95
-78
-64
-139
-96
-61
-173
-106
-60
-183
-110
-59
-183
-110
-59
-173
-106
-60
-139
-96
-61
-95
-78
-64
-51
-62
-63
-63
-74
-74
-167
-142
-123
-249
-189
-146
-249
-174
-124
-247
-165
-111
-246
-156
-93
-246
-156
-93
-246
-156
-93
-245
-162
-103
-245
-169
-119
-245
-179
-138
-178
-146
-122
-70
-79
-77
-48
-58
-59
-89
-75
-66
-139
-96
-61
-173
-106
-60
-188
-112
-56
-183
-110
-59
-155
-100
-63
-95
-78
-64
-48
-58
-59
-101
-100
-92
-146
-135
-124
-48
-58
-59
-95
-78
-64
-146
-97
-64
-125
-90
-64
-62
-63
-61
-101
-100
-92
-245
-212
-186
-137
-127
-115
-48
-58
-59
-106
-82
-65
-146
-97
-64
-106
-82
-65
-48
-58
-59
-124
-111
-99
-247
-165
-111
-247
-150
-84
-241
-138
-68
-241
-132
-59
-247
-130
-53
-247
-130
-53
-242
-133
-67
-241
-145
-79
-245
-162
-103
-250
-176
-132
-203
-161
-131
-91
-92
-89
-43
-57
-62
-81
-73
-62
-135
-94
-64
-173
-106
-60
-188
-112
-56
-183
-110
-59
-155
-100
-63
-106
-82
-65
-51
-62
-63
-91
-92
-89
-133
-120
-107
-48
-58
-59
-95
-78
-64
-146
-97
-64
-118
-86
-65
-56
-64
-60
-101
-100
-92
-245
-212
-186
-253
-212
-188
-146
-135
-124
-48
-58
-59
-118
-86
-65
-183
-110
-59
-173
-106
-60
-95
-78
-64
-43
-57
-62
-186
-157
-134
-250
-197
-158
-251
-192
-154
-250
-197
-158
-250
-200
-166
-172
-150
-134
-70
-79
-77
-48
-58
-59
-89
-75
-66
-135
-94
-64
-163
-104
-61
-183
-110
-59
-183
-110
-59
-173
-106
-60
-146
-97
-64
-95
-78
-64
-56
-64
-60
-55
-66
-67
-150
-125
-114
-236
-186
-153
-251
-192
-154
-249
-189
-146
-249
-189
-146
-251
-192
-154
-195
-157
-134
-51
-62
-63
-76
-70
-64
-139
-96
-61
-125
-90
-64
-65
-67
-64
-76
-78
-76
-234
-168
-124
-249
-159
-103
-247
-150
-84
-243
-141
-78
-247
-143
-74
-247
-150
-84
-249
-159
-103
-250
-176
-132
-250
-197
-158
-255
-215
-190
-207
-178
-158
-84
-85
-82
-48
-58
-59
-89
-75
-66
-146
-97
-64
-173
-106
-60
-183
-110
-59
-183
-110
-59
-163
-104
-61
-118
-86
-65
-62
-63
-61
-58
-69
-70
-63
-74
-74
-81
-73
-62
-227
-126
-50
-227
-126
-50
-224
-123
-55
-234
-126
-45
-135
-94
-64
-58
-69
-70
-251
-192
-154
-245
-169
-119
-249
-146
-83
-247
-130
-53
-238
-116
-34
-235
-107
-16
-243
-101
-2
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-246
-97
-3
-246
-97
-3
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-243
-101
-2
-236
-102
-14
-236
-102
-14
-235
-107
-16
-246
-116
-28
-239
-117
-44
-241
-132
-59
-247
-143
-74
-249
-152
-92
-214
-151
-109
-118
-86
-65
-146
-111
-88
-192
-155
-91
-192
-155
-91
-195
-167
-113
-239
-227
-208
-255
-238
-227
-255
-238
-227
-255
-238
-227
-255
-238
-227
-255
-238
-227
-255
-238
-227
-255
-238
-227
-255
-238
-227
-255
-238
-227
-255
-238
-227
-255
-238
-227
-255
-238
-227
-255
-238
-227
-255
-238
-227
-216
-194
-154
-192
-155
-91
-192
-155
-91
-192
-155
-91
-146
-111
-88
-162
-125
-96
-250
-176
-132
-245
-169
-119
-247
-165
-111
-249
-159
-103
-246
-156
-93
-247
-150
-84
-243
-141
-78
-243
-141
-78
-243
-141
-78
-241
-145
-79
-247
-150
-84
-249
-159
-103
-245
-169
-119
-187
-140
-108
-89
-84
-82
-48
-58
-59
-48
-58
-59
-91
-92
-89
-194
-173
-157
-255
-215
-190
-207
-178
-158
-109
-106
-99
-51
-62
-63
-48
-58
-59
-51
-62
-63
-48
-58
-59
-48
-58
-59
-55
-66
-67
-124
-111
-99
-203
-161
-131
-248
-180
-134
-245
-169
-119
-249
-159
-103
-247
-150
-84
-243
-141
-78
-243
-141
-78
-243
-141
-78
-247
-150
-84
-249
-159
-103
-245
-169
-119
-248
-180
-134
-219
-170
-138
-154
-133
-118
-84
-85
-82
-51
-62
-63
-48
-58
-59
-51
-62
-63
-51
-62
-63
-48
-58
-59
-48
-58
-59
-55
-66
-67
-91
-92
-89
-154
-133
-118
-209
-171
-139
-245
-179
-138
-249
-174
-124
-247
-165
-111
-249
-159
-103
-246
-156
-93
-246
-156
-93
-249
-159
-103
-247
-165
-111
-249
-174
-124
-252
-185
-144
-195
-157
-134
-109
-106
-99
-55
-66
-67
-48
-58
-59
-51
-62
-63
-51
-62
-63
-48
-58
-59
-51
-62
-63
-109
-106
-99
-207
-178
-158
-255
-215
-190
-217
-187
-166
-91
-92
-89
-51
-62
-63
-48
-58
-59
-76
-78
-76
-172
-150
-134
-253
-212
-188
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-194
-173
-157
-101
-100
-92
-51
-62
-63
-48
-58
-59
-48
-58
-59
-51
-62
-63
-48
-58
-59
-48
-58
-59
-97
-98
-96
-194
-173
-157
-146
-135
-124
-56
-64
-60
-145
-114
-49
-168
-127
-42
-158
-125
-46
-168
-127
-42
-129
-106
-52
-48
-58
-59
-194
-173
-157
-255
-215
-190
-176
-156
-141
-76
-78
-76
-48
-58
-59
-55
-66
-67
-115
-102
-92
-234
-168
-124
-245
-169
-119
-247
-165
-111
-247
-165
-111
-247
-165
-111
-245
-169
-119
-249
-174
-124
-245
-179
-138
-209
-171
-139
-144
-125
-110
-76
-78
-76
-48
-58
-59
-48
-58
-59
-51
-62
-63
-51
-62
-63
-48
-58
-59
-48
-58
-59
-58
-69
-70
-101
-100
-92
-154
-133
-118
-219
-170
-138
-252
-185
-144
-248
-180
-134
-249
-174
-124
-245
-169
-119
-249
-174
-124
-250
-176
-132
-230
-173
-136
-124
-111
-99
-55
-66
-67
-43
-57
-62
-58
-69
-70
-137
-127
-115
-245
-212
-186
-245
-212
-186
-161
-144
-134
-70
-79
-77
-43
-57
-62
-51
-62
-63
-51
-62
-63
-48
-58
-59
-43
-57
-62
-84
-85
-82
-154
-133
-118
-240
-181
-138
-249
-174
-124
-247
-165
-111
-249
-152
-92
-243
-141
-78
-241
-138
-68
-242
-133
-67
-241
-138
-68
-241
-145
-79
-246
-156
-93
-247
-165
-111
-250
-176
-132
-219
-170
-138
-144
-125
-110
-77
-85
-81
-43
-57
-62
-48
-58
-59
-48
-58
-59
-51
-62
-63
-48
-58
-59
-43
-57
-62
-77
-85
-81
-150
-125
-114
-219
-170
-138
-250
-176
-132
-247
-165
-111
-246
-156
-93
-241
-145
-79
-241
-138
-68
-241
-138
-68
-241
-138
-68
-243
-141
-78
-249
-152
-92
-247
-165
-111
-250
-176
-132
-230
-173
-136
-154
-133
-118
-77
-85
-81
-43
-57
-62
-48
-58
-59
-51
-62
-63
-48
-58
-59
-43
-57
-62
-70
-79
-77
-161
-144
-134
-245
-212
-186
-255
-215
-190
-161
-144
-134
-63
-74
-74
-43
-57
-62
-51
-62
-63
-109
-106
-99
-217
-187
-166
-251
-209
-178
-238
-205
-179
-137
-127
-115
-58
-69
-70
-43
-57
-62
-58
-69
-70
-139
-115
-96
-238
-159
-107
-249
-152
-92
-241
-138
-68
-247
-130
-53
-238
-123
-45
-239
-117
-44
-247
-118
-39
-238
-123
-45
-241
-132
-59
-241
-145
-79
-249
-159
-103
-249
-174
-124
-240
-181
-138
-167
-142
-123
-91
-92
-89
-43
-57
-62
-48
-58
-59
-51
-62
-63
-48
-58
-59
-43
-57
-62
-63
-74
-74
-137
-127
-115
-234
-204
-183
-255
-215
-190
-146
-135
-124
-63
-74
-74
-43
-57
-62
-51
-62
-63
-115
-102
-92
-236
-186
-153
-251
-192
-154
-251
-192
-154
-236
-186
-153
-133
-120
-107
-43
-57
-62
-48
-58
-59
-48
-58
-59
-55
-66
-67
-158
-130
-108
-248
-180
-134
-250
-176
-132
-249
-174
-124
-249
-174
-124
-250
-176
-132
-252
-185
-144
-239
-182
-144
-154
-133
-118
-84
-85
-82
-43
-57
-62
-48
-58
-59
-48
-58
-59
-51
-62
-63
-48
-58
-59
-43
-57
-62
-70
-79
-77
-133
-120
-107
-219
-170
-138
-245
-179
-138
-250
-176
-132
-245
-169
-119
-247
-165
-111
-247
-165
-111
-245
-169
-119
-249
-174
-124
-187
-140
-108
-81
-77
-76
-43
-57
-62
-43
-57
-62
-99
-90
-79
-214
-151
-109
-249
-159
-103
-247
-150
-84
-247
-143
-74
-241
-138
-68
-241
-138
-68
-249
-146
-83
-249
-159
-103
-250
-176
-132
-250
-197
-158
-255
-215
-190
-255
-215
-190
-245
-212
-186
-161
-144
-134
-77
-85
-81
-43
-57
-62
-48
-58
-59
-51
-62
-63
-48
-58
-59
-41
-58
-57
-55
-66
-67
-120
-114
-108
-217
-187
-166
-97
-98
-96
-95
-78
-64
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-125
-52
-112
-85
-63
-70
-79
-77
-249
-189
-146
-247
-165
-111
-243
-141
-78
-247
-130
-53
-238
-116
-34
-236
-102
-14
-243
-101
-2
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-235
-94
-9
-235
-94
-9
-236
-102
-14
-235
-107
-16
-236
-108
-29
-239
-117
-44
-238
-123
-53
-242
-133
-67
-241
-145
-79
-241
-153
-96
-247
-165
-111
-249
-174
-124
-250
-176
-132
-245
-179
-138
-252
-185
-144
-249
-189
-146
-249
-189
-146
-249
-189
-146
-249
-189
-146
-249
-189
-146
-249
-189
-146
-249
-189
-146
-249
-189
-146
-249
-189
-146
-249
-189
-146
-249
-189
-146
-249
-189
-146
-249
-189
-146
-249
-189
-146
-252
-185
-144
-245
-179
-138
-250
-176
-132
-249
-174
-124
-245
-169
-119
-245
-162
-103
-241
-153
-96
-241
-145
-86
-243
-141
-78
-241
-138
-68
-242
-133
-67
-241
-132
-59
-238
-123
-53
-238
-123
-53
-238
-123
-53
-241
-132
-59
-242
-133
-67
-243
-141
-78
-241
-145
-86
-249
-159
-103
-238
-159
-107
-210
-156
-119
-210
-156
-119
-240
-181
-138
-249
-189
-146
-251
-192
-154
-251
-192
-154
-250
-197
-158
-212
-173
-150
-186
-157
-134
-167
-142
-123
-167
-142
-123
-195
-157
-134
-219
-170
-138
-248
-180
-134
-245
-169
-119
-245
-162
-103
-247
-150
-84
-243
-141
-78
-241
-132
-59
-238
-123
-53
-238
-123
-53
-238
-123
-53
-241
-132
-59
-241
-138
-68
-247
-150
-84
-245
-162
-103
-245
-169
-119
-250
-176
-132
-239
-182
-144
-219
-170
-138
-186
-157
-134
-167
-142
-123
-167
-142
-123
-172
-150
-134
-195
-157
-134
-219
-170
-138
-239
-182
-144
-248
-180
-134
-245
-169
-119
-245
-162
-103
-241
-153
-96
-241
-145
-79
-241
-138
-68
-241
-138
-68
-241
-138
-68
-241
-138
-68
-241
-145
-79
-241
-153
-96
-247
-165
-111
-249
-174
-124
-245
-179
-138
-219
-170
-138
-186
-157
-134
-167
-142
-123
-167
-142
-123
-186
-157
-134
-212
-173
-150
-250
-197
-158
-251
-192
-154
-251
-192
-154
-249
-189
-146
-239
-182
-144
-219
-170
-138
-219
-170
-138
-239
-182
-144
-250
-197
-158
-250
-200
-166
-251
-209
-178
-238
-205
-179
-172
-150
-134
-137
-127
-115
-161
-144
-134
-217
-187
-166
-253
-212
-188
-227
-196
-175
-194
-173
-157
-176
-156
-141
-172
-150
-134
-187
-166
-150
-217
-187
-166
-255
-215
-190
-245
-212
-186
-76
-78
-76
-75
-74
-61
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-105
-93
-60
-58
-69
-70
-217
-187
-166
-255
-215
-190
-253
-204
-176
-236
-186
-153
-210
-156
-119
-210
-156
-119
-247
-165
-111
-249
-159
-103
-249
-152
-92
-241
-145
-86
-243
-141
-78
-241
-145
-79
-247
-150
-84
-241
-153
-96
-245
-162
-103
-245
-169
-119
-248
-180
-134
-239
-182
-144
-209
-171
-139
-186
-157
-134
-167
-142
-123
-167
-142
-123
-178
-146
-122
-195
-157
-134
-230
-173
-136
-239
-182
-144
-250
-176
-132
-245
-169
-119
-247
-165
-111
-249
-159
-103
-241
-153
-96
-249
-152
-92
-249
-152
-92
-241
-153
-96
-245
-162
-103
-247
-165
-111
-210
-156
-119
-210
-156
-119
-230
-173
-136
-249
-189
-146
-249
-189
-146
-251
-192
-154
-250
-197
-158
-236
-186
-153
-203
-161
-131
-167
-142
-123
-167
-142
-123
-178
-146
-122
-203
-161
-131
-240
-181
-138
-249
-174
-124
-247
-165
-111
-241
-153
-96
-243
-141
-78
-242
-133
-67
-238
-123
-53
-238
-123
-45
-238
-123
-45
-238
-123
-45
-241
-132
-59
-241
-138
-68
-241
-145
-86
-249
-159
-103
-245
-169
-119
-250
-176
-132
-240
-181
-138
-209
-171
-139
-178
-146
-122
-167
-142
-123
-167
-142
-123
-186
-157
-134
-209
-171
-139
-240
-181
-138
-250
-176
-132
-245
-169
-119
-249
-159
-103
-241
-145
-86
-241
-138
-68
-241
-132
-59
-238
-123
-45
-238
-123
-45
-238
-123
-45
-247
-130
-53
-242
-133
-67
-241
-145
-79
-241
-153
-96
-247
-165
-111
-250
-176
-132
-240
-181
-138
-203
-161
-131
-178
-146
-122
-167
-142
-123
-167
-142
-123
-195
-157
-134
-236
-186
-153
-251
-192
-154
-251
-192
-154
-249
-189
-146
-249
-189
-146
-230
-173
-136
-203
-161
-131
-219
-170
-138
-245
-179
-138
-245
-179
-138
-245
-179
-138
-245
-179
-138
-248
-180
-134
-234
-168
-124
-214
-151
-109
-214
-151
-109
-245
-162
-103
-241
-145
-86
-241
-138
-68
-238
-123
-53
-239
-117
-44
-238
-116
-34
-236
-108
-29
-236
-108
-29
-238
-116
-34
-238
-123
-45
-241
-132
-59
-243
-141
-78
-241
-153
-96
-247
-165
-111
-249
-174
-124
-240
-181
-138
-209
-171
-139
-178
-146
-122
-167
-142
-123
-167
-142
-123
-195
-157
-134
-236
-186
-153
-250
-197
-158
-251
-192
-154
-249
-189
-146
-249
-189
-146
-230
-173
-136
-210
-156
-119
-210
-156
-119
-250
-176
-132
-249
-174
-124
-249
-174
-124
-249
-174
-124
-249
-174
-124
-250
-176
-132
-210
-156
-119
-162
-125
-96
-162
-125
-96
-214
-151
-109
-247
-165
-111
-245
-162
-103
-241
-153
-96
-241
-153
-96
-241
-153
-96
-249
-159
-103
-247
-165
-111
-245
-169
-119
-250
-176
-132
-240
-181
-138
-209
-171
-139
-186
-157
-134
-167
-142
-123
-167
-142
-123
-178
-146
-122
-203
-161
-131
-239
-182
-144
-248
-180
-134
-245
-169
-119
-245
-162
-103
-241
-153
-96
-241
-145
-86
-241
-145
-86
-241
-145
-86
-247
-150
-84
-241
-153
-96
-245
-162
-103
-238
-159
-107
-204
-141
-99
-214
-151
-109
-241
-153
-96
-249
-152
-92
-243
-141
-78
-242
-133
-67
-241
-132
-59
-241
-132
-59
-241
-138
-68
-241
-145
-79
-245
-162
-103
-248
-180
-134
-212
-173
-150
-146
-135
-124
-137
-127
-115
-176
-156
-141
-234
-204
-183
-253
-212
-188
-217
-187
-166
-187
-166
-150
-172
-150
-134
-176
-156
-141
-194
-173
-157
-234
-204
-183
-255
-215
-190
-194
-173
-157
-43
-57
-62
-139
-96
-61
-234
-126
-45
-224
-123
-55
-227
-126
-50
-227
-126
-50
-89
-75
-66
-101
-100
-92
-245
-179
-138
-245
-162
-103
-241
-138
-68
-238
-123
-45
-236
-108
-29
-236
-102
-14
-235
-94
-9
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-235
-94
-9
-235
-94
-9
-236
-102
-14
-235
-107
-16
-236
-108
-29
-238
-116
-34
-238
-123
-45
-241
-132
-59
-241
-138
-68
-241
-145
-79
-249
-152
-92
-241
-153
-96
-245
-162
-103
-245
-162
-103
-247
-165
-111
-247
-165
-111
-247
-165
-111
-247
-165
-111
-247
-165
-111
-247
-165
-111
-247
-165
-111
-247
-165
-111
-247
-165
-111
-247
-165
-111
-247
-165
-111
-247
-165
-111
-247
-165
-111
-247
-165
-111
-245
-162
-103
-245
-162
-103
-241
-153
-96
-241
-153
-96
-241
-145
-86
-243
-141
-78
-241
-138
-68
-241
-132
-59
-238
-123
-53
-238
-123
-45
-239
-117
-44
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-239
-117
-44
-238
-123
-45
-238
-123
-53
-241
-132
-59
-243
-141
-78
-241
-145
-86
-241
-153
-96
-245
-162
-103
-245
-162
-103
-247
-165
-111
-247
-165
-111
-245
-169
-119
-245
-169
-119
-245
-169
-119
-249
-174
-124
-245
-169
-119
-245
-169
-119
-245
-169
-119
-247
-165
-111
-241
-153
-96
-241
-145
-86
-243
-141
-78
-241
-132
-59
-238
-123
-53
-239
-117
-44
-238
-116
-34
-238
-116
-34
-238
-116
-34
-239
-117
-44
-238
-123
-45
-241
-132
-59
-241
-138
-68
-241
-145
-86
-241
-153
-96
-245
-162
-103
-245
-169
-119
-249
-174
-124
-250
-176
-132
-250
-176
-132
-250
-176
-132
-249
-174
-124
-245
-169
-119
-247
-165
-111
-241
-153
-96
-241
-145
-86
-243
-141
-78
-242
-133
-67
-241
-132
-59
-238
-123
-45
-238
-123
-45
-238
-123
-45
-238
-123
-45
-241
-132
-59
-242
-133
-67
-243
-141
-78
-249
-152
-92
-245
-162
-103
-247
-165
-111
-245
-169
-119
-245
-169
-119
-245
-169
-119
-245
-169
-119
-245
-169
-119
-245
-169
-119
-245
-169
-119
-247
-165
-111
-247
-165
-111
-247
-165
-111
-247
-165
-111
-245
-169
-119
-249
-174
-124
-245
-179
-138
-251
-192
-154
-232
-190
-161
-101
-100
-92
-51
-62
-63
-63
-69
-60
-51
-62
-63
-55
-66
-67
-109
-106
-99
-176
-156
-141
-234
-204
-183
-255
-215
-190
-255
-215
-190
-255
-215
-190
-245
-212
-186
-207
-178
-158
-91
-92
-89
-51
-62
-63
-129
-106
-52
-168
-127
-42
-158
-125
-46
-158
-125
-46
-168
-127
-42
-75
-74
-61
-91
-92
-89
-245
-212
-186
-250
-200
-166
-252
-185
-144
-249
-174
-124
-247
-165
-111
-241
-153
-96
-241
-145
-79
-241
-138
-68
-242
-133
-67
-241
-132
-59
-238
-123
-53
-241
-132
-59
-241
-132
-59
-241
-138
-68
-243
-141
-78
-241
-145
-86
-241
-153
-96
-247
-165
-111
-245
-169
-119
-249
-174
-124
-250
-176
-132
-250
-176
-132
-249
-174
-124
-249
-174
-124
-245
-169
-119
-245
-162
-103
-241
-153
-96
-241
-145
-86
-241
-145
-79
-241
-138
-68
-242
-133
-67
-242
-133
-67
-242
-133
-67
-241
-138
-68
-243
-141
-78
-241
-145
-86
-241
-153
-96
-241
-153
-96
-245
-162
-103
-245
-162
-103
-247
-165
-111
-245
-169
-119
-245
-169
-119
-245
-169
-119
-245
-169
-119
-245
-169
-119
-245
-169
-119
-245
-169
-119
-247
-165
-111
-245
-162
-103
-241
-153
-96
-241
-145
-79
-241
-138
-68
-238
-123
-53
-238
-123
-45
-238
-116
-34
-235
-113
-30
-235
-113
-30
-238
-116
-34
-239
-117
-44
-238
-123
-45
-241
-132
-59
-241
-138
-68
-241
-145
-86
-241
-153
-96
-245
-162
-103
-245
-169
-119
-245
-169
-119
-249
-174
-124
-249
-174
-124
-245
-169
-119
-245
-169
-119
-245
-162
-103
-241
-153
-96
-241
-145
-86
-241
-138
-68
-241
-132
-59
-238
-123
-45
-239
-117
-44
-238
-116
-34
-235
-113
-30
-235
-113
-30
-238
-116
-34
-238
-123
-45
-241
-132
-59
-241
-138
-68
-241
-145
-86
-241
-153
-96
-245
-162
-103
-247
-165
-111
-245
-169
-119
-245
-169
-119
-245
-169
-119
-245
-169
-119
-245
-169
-119
-245
-169
-119
-247
-165
-111
-247
-165
-111
-247
-165
-111
-245
-162
-103
-245
-162
-103
-245
-162
-103
-245
-162
-103
-245
-162
-103
-245
-162
-103
-245
-162
-103
-245
-162
-103
-241
-153
-96
-241
-153
-96
-241
-145
-86
-243
-141
-78
-241
-132
-59
-238
-123
-53
-239
-117
-44
-235
-113
-30
-236
-108
-29
-235
-107
-16
-235
-107
-16
-236
-108
-29
-235
-113
-30
-239
-117
-44
-238
-123
-53
-242
-133
-67
-241
-145
-79
-241
-153
-96
-245
-162
-103
-247
-165
-111
-245
-169
-119
-245
-169
-119
-249
-174
-124
-245
-169
-119
-245
-169
-119
-245
-169
-119
-245
-169
-119
-247
-165
-111
-247
-165
-111
-245
-162
-103
-245
-162
-103
-241
-153
-96
-241
-153
-96
-241
-153
-96
-241
-153
-96
-241
-153
-96
-241
-153
-96
-241
-153
-96
-241
-153
-96
-241
-153
-96
-241
-153
-96
-249
-152
-92
-241
-145
-86
-243
-141
-78
-241
-138
-68
-241
-138
-68
-241
-138
-68
-241
-138
-68
-243
-141
-78
-241
-145
-86
-241
-153
-96
-245
-162
-103
-245
-169
-119
-245
-169
-119
-249
-174
-124
-249
-174
-124
-249
-174
-124
-245
-169
-119
-247
-165
-111
-241
-153
-96
-241
-145
-86
-243
-141
-78
-241
-138
-68
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-138
-68
-243
-141
-78
-241
-145
-79
-241
-145
-79
-241
-145
-79
-243
-141
-78
-241
-138
-68
-241
-132
-59
-238
-123
-53
-238
-123
-53
-238
-123
-53
-242
-133
-67
-241
-145
-86
-247
-165
-111
-210
-156
-119
-63
-74
-74
-62
-63
-61
-69
-69
-61
-48
-58
-59
-63
-74
-74
-133
-120
-107
-194
-173
-157
-245
-212
-186
-255
-215
-190
-255
-215
-190
-255
-215
-190
-245
-212
-186
-176
-156
-141
-55
-66
-67
-76
-70
-64
-212
-120
-56
-227
-126
-50
-224
-123
-55
-234
-125
-52
-194
-112
-58
-56
-64
-60
-154
-133
-118
-250
-176
-132
-241
-153
-96
-242
-133
-67
-239
-117
-44
-236
-108
-29
-236
-102
-14
-235
-94
-9
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-235
-94
-9
-235
-94
-9
-236
-102
-14
-236
-102
-14
-236
-108
-29
-235
-113
-30
-239
-117
-44
-238
-123
-45
-238
-123
-53
-241
-132
-59
-241
-138
-68
-241
-138
-68
-243
-141
-78
-243
-141
-78
-241
-145
-79
-241
-145
-79
-241
-145
-79
-241
-145
-79
-241
-145
-79
-241
-145
-79
-241
-145
-79
-241
-145
-79
-241
-145
-79
-241
-145
-79
-241
-145
-79
-243
-141
-78
-243
-141
-78
-243
-141
-78
-241
-138
-68
-241
-138
-68
-241
-132
-59
-241
-132
-59
-238
-123
-53
-238
-123
-45
-238
-116
-34
-238
-116
-34
-236
-108
-29
-236
-108
-29
-235
-107
-16
-235
-107
-16
-235
-107
-16
-236
-108
-29
-236
-108
-29
-235
-113
-30
-238
-116
-34
-238
-123
-45
-238
-123
-53
-241
-132
-59
-242
-133
-67
-241
-138
-68
-243
-141
-78
-243
-141
-78
-241
-145
-79
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-86
-243
-141
-78
-241
-138
-68
-241
-132
-59
-238
-123
-53
-239
-117
-44
-238
-116
-34
-236
-108
-29
-236
-108
-29
-235
-107
-16
-235
-107
-16
-236
-108
-29
-238
-116
-34
-239
-117
-44
-238
-123
-45
-241
-132
-59
-241
-138
-68
-243
-141
-78
-241
-145
-86
-249
-152
-92
-241
-153
-96
-241
-153
-96
-241
-153
-96
-249
-152
-92
-241
-145
-86
-243
-141
-78
-241
-138
-68
-241
-132
-59
-238
-123
-53
-238
-123
-45
-238
-116
-34
-235
-113
-30
-236
-108
-29
-236
-108
-29
-235
-113
-30
-238
-116
-34
-238
-123
-45
-238
-123
-53
-241
-132
-59
-241
-138
-68
-241
-145
-79
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-79
-241
-145
-79
-241
-145
-79
-241
-145
-86
-241
-153
-96
-245
-162
-103
-245
-169
-119
-245
-179
-138
-144
-125
-110
-51
-62
-63
-117
-98
-55
-158
-125
-46
-145
-114
-49
-105
-93
-60
-69
-69
-61
-48
-58
-59
-58
-69
-70
-91
-92
-89
-120
-114
-108
-120
-114
-108
-91
-92
-89
-48
-58
-59
-56
-64
-60
-123
-102
-54
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-137
-110
-49
-48
-58
-59
-161
-144
-134
-250
-197
-158
-248
-180
-134
-247
-165
-111
-241
-153
-96
-241
-145
-79
-241
-138
-68
-241
-132
-59
-238
-123
-53
-238
-123
-45
-239
-117
-44
-238
-116
-34
-238
-116
-34
-239
-117
-44
-238
-123
-45
-238
-123
-53
-241
-132
-59
-241
-138
-68
-243
-141
-78
-241
-145
-86
-249
-152
-92
-241
-153
-96
-241
-153
-96
-241
-153
-96
-241
-145
-86
-241
-145
-86
-243
-141
-78
-241
-138
-68
-241
-132
-59
-238
-123
-53
-238
-123
-45
-238
-123
-45
-239
-117
-44
-238
-123
-45
-238
-123
-45
-238
-123
-53
-241
-132
-59
-241
-132
-59
-241
-138
-68
-241
-138
-68
-243
-141
-78
-241
-145
-79
-241
-145
-79
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-79
-243
-141
-78
-242
-133
-67
-241
-132
-59
-238
-123
-45
-238
-116
-34
-235
-113
-30
-236
-108
-29
-235
-107
-16
-235
-107
-16
-235
-107
-16
-236
-108
-29
-235
-113
-30
-239
-117
-44
-238
-123
-45
-241
-132
-59
-241
-138
-68
-243
-141
-78
-241
-145
-86
-241
-145
-86
-241
-153
-96
-241
-153
-96
-241
-145
-86
-241
-145
-86
-243
-141
-78
-241
-138
-68
-241
-132
-59
-238
-123
-45
-239
-117
-44
-235
-113
-30
-236
-108
-29
-235
-107
-16
-235
-107
-16
-235
-107
-16
-236
-108
-29
-235
-113
-30
-239
-117
-44
-238
-123
-45
-241
-132
-59
-242
-133
-67
-243
-141
-78
-241
-145
-79
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-79
-241
-145
-79
-243
-141
-78
-243
-141
-78
-243
-141
-78
-243
-141
-78
-241
-138
-68
-241
-138
-68
-241
-138
-68
-241
-138
-68
-241
-138
-68
-241
-138
-68
-242
-133
-67
-241
-132
-59
-238
-123
-53
-238
-123
-45
-238
-116
-34
-236
-108
-29
-235
-107
-16
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-235
-107
-16
-236
-108
-29
-238
-116
-34
-238
-123
-45
-238
-123
-53
-242
-133
-67
-241
-138
-68
-241
-145
-79
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-79
-243
-141
-78
-243
-141
-78
-241
-138
-68
-241
-138
-68
-241
-138
-68
-242
-133
-67
-242
-133
-67
-242
-133
-67
-241
-138
-68
-241
-138
-68
-241
-138
-68
-241
-138
-68
-242
-133
-67
-241
-132
-59
-241
-132
-59
-238
-123
-53
-238
-123
-45
-238
-123
-45
-238
-123
-45
-238
-123
-45
-238
-123
-53
-241
-132
-59
-241
-138
-68
-243
-141
-78
-241
-145
-86
-241
-145
-86
-241
-153
-96
-241
-153
-96
-241
-145
-86
-241
-145
-86
-243
-141
-78
-241
-138
-68
-241
-132
-59
-238
-123
-53
-238
-123
-45
-239
-117
-44
-239
-117
-44
-239
-117
-44
-239
-117
-44
-238
-123
-45
-238
-123
-53
-238
-123
-53
-241
-132
-59
-241
-132
-59
-238
-123
-53
-238
-123
-45
-239
-117
-44
-239
-117
-44
-239
-117
-44
-238
-123
-53
-242
-133
-67
-241
-145
-86
-238
-159
-107
-84
-85
-82
-69
-69
-61
-188
-112
-56
-214
-121
-50
-173
-106
-60
-112
-85
-63
-62
-63
-61
-41
-58
-57
-63
-74
-74
-97
-98
-96
-120
-114
-108
-109
-106
-99
-77
-85
-81
-41
-58
-57
-81
-73
-62
-194
-112
-58
-234
-125
-52
-224
-123
-55
-224
-123
-55
-234
-126
-45
-125
-90
-64
-51
-62
-63
-209
-171
-139
-245
-169
-119
-241
-145
-86
-241
-132
-59
-238
-116
-34
-235
-107
-16
-236
-102
-14
-235
-94
-9
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-230
-97
-5
-235
-94
-9
-235
-94
-9
-236
-102
-14
-235
-107
-16
-236
-108
-29
-235
-113
-30
-238
-116
-34
-239
-117
-44
-238
-123
-45
-238
-123
-45
-238
-123
-45
-238
-123
-53
-238
-123
-53
-238
-123
-53
-238
-123
-53
-238
-123
-53
-238
-123
-53
-238
-123
-53
-238
-123
-53
-238
-123
-53
-238
-123
-53
-238
-123
-53
-238
-123
-53
-238
-123
-53
-238
-123
-53
-238
-123
-45
-238
-123
-45
-239
-117
-44
-239
-117
-44
-238
-116
-34
-235
-113
-30
-236
-108
-29
-235
-107
-16
-235
-107
-16
-236
-102
-14
-236
-102
-14
-235
-94
-9
-235
-94
-9
-235
-94
-9
-236
-102
-14
-236
-102
-14
-235
-107
-16
-236
-108
-29
-236
-108
-29
-238
-116
-34
-239
-117
-44
-239
-117
-44
-238
-123
-45
-238
-123
-45
-238
-123
-53
-238
-123
-53
-238
-123
-53
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-238
-123
-53
-238
-123
-53
-238
-123
-45
-239
-117
-44
-238
-116
-34
-236
-108
-29
-235
-107
-16
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-235
-107
-16
-236
-108
-29
-235
-113
-30
-238
-116
-34
-238
-123
-45
-238
-123
-53
-238
-123
-53
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-238
-123
-53
-238
-123
-45
-239
-117
-44
-238
-116
-34
-236
-108
-29
-235
-107
-16
-235
-107
-16
-236
-102
-14
-236
-102
-14
-235
-107
-16
-236
-108
-29
-236
-108
-29
-238
-116
-34
-239
-117
-44
-238
-123
-45
-238
-123
-53
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-238
-123
-53
-238
-123
-53
-238
-123
-53
-238
-123
-53
-241
-132
-59
-241
-138
-68
-241
-145
-86
-238
-159
-107
-234
-168
-124
-84
-85
-82
-83
-78
-61
-171
-129
-45
-158
-125
-46
-168
-127
-42
-168
-127
-42
-158
-125
-46
-129
-106
-52
-100
-89
-56
-83
-78
-61
-75
-74
-61
-69
-69
-61
-83
-78
-61
-105
-93
-60
-152
-119
-47
-168
-127
-42
-158
-125
-46
-158
-125
-46
-161
-127
-40
-168
-127
-42
-75
-74
-61
-63
-74
-74
-236
-186
-153
-245
-179
-138
-238
-159
-107
-241
-145
-86
-241
-138
-68
-241
-132
-59
-238
-123
-45
-238
-116
-34
-235
-113
-30
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-238
-116
-34
-239
-117
-44
-238
-123
-45
-238
-123
-53
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-238
-123
-53
-238
-123
-53
-238
-123
-45
-239
-117
-44
-238
-116
-34
-235
-113
-30
-236
-108
-29
-236
-108
-29
-236
-108
-29
-235
-113
-30
-238
-116
-34
-238
-116
-34
-239
-117
-44
-238
-123
-45
-238
-123
-45
-238
-123
-53
-238
-123
-53
-238
-123
-53
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-238
-123
-53
-238
-123
-45
-239
-117
-44
-238
-116
-34
-235
-113
-30
-236
-108
-29
-236
-102
-14
-236
-102
-14
-236
-102
-14
-235
-94
-9
-236
-102
-14
-236
-102
-14
-235
-107
-16
-236
-108
-29
-235
-113
-30
-238
-116
-34
-238
-123
-45
-238
-123
-53
-238
-123
-53
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-238
-123
-53
-238
-123
-53
-238
-123
-45
-238
-116
-34
-235
-113
-30
-236
-108
-29
-235
-107
-16
-236
-102
-14
-236
-102
-14
-235
-94
-9
-236
-102
-14
-236
-102
-14
-235
-107
-16
-236
-108
-29
-235
-113
-30
-238
-116
-34
-238
-123
-45
-238
-123
-53
-238
-123
-53
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-238
-123
-53
-238
-123
-53
-238
-123
-53
-238
-123
-53
-238
-123
-53
-238
-123
-45
-238
-123
-45
-238
-123
-45
-238
-123
-45
-238
-123
-45
-238
-123
-45
-238
-123
-45
-238
-123
-45
-239
-117
-44
-239
-117
-44
-238
-116
-34
-236
-108
-29
-236
-108
-29
-235
-107
-16
-236
-102
-14
-235
-94
-9
-235
-94
-9
-235
-94
-9
-235
-94
-9
-236
-102
-14
-236
-102
-14
-235
-107
-16
-236
-108
-29
-238
-116
-34
-239
-117
-44
-238
-123
-45
-238
-123
-53
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-238
-123
-53
-238
-123
-53
-238
-123
-53
-238
-123
-45
-238
-123
-45
-238
-123
-45
-238
-123
-45
-239
-117
-44
-239
-117
-44
-239
-117
-44
-238
-123
-45
-238
-123
-45
-238
-123
-45
-238
-123
-45
-238
-123
-45
-239
-117
-44
-239
-117
-44
-238
-116
-34
-235
-113
-30
-236
-108
-29
-236
-108
-29
-235
-113
-30
-238
-116
-34
-239
-117
-44
-238
-123
-45
-238
-123
-53
-238
-123
-53
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-238
-123
-53
-238
-123
-45
-239
-117
-44
-238
-116
-34
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-235
-113
-30
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-235
-113
-30
-236
-108
-29
-235
-113
-30
-238
-116
-34
-238
-123
-45
-241
-132
-59
-241
-145
-86
-204
-141
-99
-41
-58
-57
-155
-100
-63
-234
-126
-45
-227
-126
-50
-227
-126
-50
-234
-125
-52
-209
-117
-53
-155
-100
-63
-118
-86
-65
-89
-75
-66
-81
-73
-62
-81
-73
-62
-106
-82
-65
-155
-100
-63
-214
-121
-50
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-194
-112
-58
-56
-64
-60
-109
-106
-99
-245
-179
-138
-245
-162
-103
-241
-138
-68
-238
-123
-45
-235
-113
-30
-236
-102
-14
-235
-94
-9
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-235
-94
-9
-235
-94
-9
-235
-94
-9
-236
-102
-14
-236
-102
-14
-235
-107
-16
-235
-107
-16
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-235
-113
-30
-235
-113
-30
-235
-113
-30
-235
-113
-30
-235
-113
-30
-235
-113
-30
-235
-113
-30
-235
-113
-30
-235
-113
-30
-235
-113
-30
-235
-113
-30
-235
-113
-30
-235
-113
-30
-235
-113
-30
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-235
-107
-16
-236
-102
-14
-236
-102
-14
-236
-102
-14
-235
-94
-9
-235
-94
-9
-235
-94
-9
-230
-97
-5
-230
-97
-5
-235
-94
-9
-235
-94
-9
-235
-94
-9
-235
-94
-9
-236
-102
-14
-236
-102
-14
-235
-107
-16
-236
-108
-29
-236
-108
-29
-236
-108
-29
-235
-113
-30
-235
-113
-30
-235
-113
-30
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-235
-113
-30
-236
-108
-29
-236
-108
-29
-235
-107
-16
-236
-102
-14
-236
-102
-14
-235
-94
-9
-235
-94
-9
-235
-94
-9
-235
-94
-9
-235
-94
-9
-235
-94
-9
-236
-102
-14
-235
-107
-16
-236
-108
-29
-236
-108
-29
-235
-113
-30
-238
-116
-34
-238
-116
-34
-239
-117
-44
-239
-117
-44
-239
-117
-44
-238
-116
-34
-238
-116
-34
-235
-113
-30
-236
-108
-29
-236
-108
-29
-235
-107
-16
-236
-102
-14
-236
-102
-14
-235
-94
-9
-235
-94
-9
-235
-94
-9
-235
-94
-9
-236
-102
-14
-236
-102
-14
-235
-107
-16
-236
-108
-29
-236
-108
-29
-235
-113
-30
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-235
-113
-30
-235
-113
-30
-238
-116
-34
-238
-123
-45
-238
-123
-53
-241
-138
-68
-241
-145
-86
-238
-159
-107
-89
-84
-82
-75
-74
-61
-168
-127
-42
-168
-127
-42
-158
-125
-46
-158
-125
-46
-161
-127
-40
-168
-127
-42
-171
-129
-45
-168
-127
-42
-158
-125
-46
-158
-125
-46
-168
-127
-42
-171
-129
-45
-168
-127
-42
-158
-125
-46
-158
-125
-46
-168
-127
-42
-171
-129
-45
-95
-87
-59
-48
-58
-59
-167
-142
-123
-245
-179
-138
-238
-159
-107
-241
-145
-86
-242
-133
-67
-238
-123
-45
-238
-116
-34
-236
-108
-29
-236
-108
-29
-235
-107
-16
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-235
-107
-16
-236
-108
-29
-236
-108
-29
-235
-113
-30
-238
-116
-34
-238
-116
-34
-239
-117
-44
-239
-117
-44
-239
-117
-44
-238
-116
-34
-238
-116
-34
-235
-113
-30
-236
-108
-29
-236
-108
-29
-235
-107
-16
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-235
-107
-16
-235
-107
-16
-236
-108
-29
-236
-108
-29
-236
-108
-29
-235
-113
-30
-235
-113
-30
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-235
-113
-30
-236
-108
-29
-235
-107
-16
-236
-102
-14
-236
-102
-14
-235
-94
-9
-235
-94
-9
-235
-94
-9
-235
-94
-9
-235
-94
-9
-235
-94
-9
-235
-94
-9
-236
-102
-14
-235
-107
-16
-236
-108
-29
-236
-108
-29
-235
-113
-30
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-235
-113
-30
-236
-108
-29
-236
-108
-29
-235
-107
-16
-236
-102
-14
-235
-94
-9
-235
-94
-9
-235
-94
-9
-235
-94
-9
-235
-94
-9
-235
-94
-9
-235
-94
-9
-236
-102
-14
-236
-102
-14
-235
-107
-16
-236
-108
-29
-235
-113
-30
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-235
-113
-30
-235
-113
-30
-235
-113
-30
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-235
-107
-16
-235
-107
-16
-236
-102
-14
-236
-102
-14
-235
-94
-9
-235
-94
-9
-235
-94
-9
-230
-97
-5
-235
-94
-9
-235
-94
-9
-235
-94
-9
-236
-102
-14
-236
-102
-14
-235
-107
-16
-236
-108
-29
-235
-113
-30
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-235
-113
-30
-235
-113
-30
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-235
-107
-16
-235
-107
-16
-236
-102
-14
-236
-102
-14
-236
-102
-14
-235
-107
-16
-236
-108
-29
-236
-108
-29
-235
-113
-30
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-235
-113
-30
-236
-108
-29
-236
-108
-29
-235
-107
-16
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-235
-107
-16
-235
-107
-16
-236
-108
-29
-236
-108
-29
-235
-107
-16
-235
-107
-16
-235
-107
-16
-236
-108
-29
-235
-113
-30
-239
-117
-44
-241
-132
-59
-241
-145
-79
-204
-141
-99
-48
-58
-59
-139
-96
-61
-234
-126
-45
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-126
-45
-234
-126
-45
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-126
-45
-234
-126
-45
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-125
-52
-214
-121
-50
-81
-73
-62
-58
-69
-70
-219
-170
-138
-245
-169
-119
-241
-145
-86
-241
-132
-59
-239
-117
-44
-236
-108
-29
-236
-102
-14
-235
-94
-9
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-230
-97
-5
-230
-97
-5
-235
-94
-9
-230
-97
-5
-229
-102
-7
-229
-102
-7
-236
-102
-14
-236
-102
-14
-224
-98
-18
-224
-98
-18
-224
-98
-18
-236
-102
-14
-224
-98
-18
-236
-102
-14
-236
-102
-14
-224
-98
-18
-224
-98
-18
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-224
-98
-18
-236
-102
-14
-236
-102
-14
-229
-102
-7
-229
-102
-7
-230
-97
-5
-235
-94
-9
-235
-94
-9
-230
-97
-5
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-230
-97
-5
-235
-94
-9
-230
-97
-5
-235
-94
-9
-235
-94
-9
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-236
-102
-14
-224
-98
-18
-236
-102
-14
-235
-94
-9
-235
-94
-9
-235
-94
-9
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-230
-97
-5
-235
-94
-9
-230
-97
-5
-229
-102
-7
-236
-102
-14
-236
-102
-14
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-236
-102
-14
-224
-98
-18
-236
-102
-14
-229
-102
-7
-230
-97
-5
-235
-94
-9
-235
-94
-9
-230
-97
-5
-231
-91
-2
-230
-97
-5
-235
-94
-9
-235
-94
-9
-235
-94
-9
-230
-97
-5
-229
-102
-7
-236
-102
-14
-236
-102
-14
-236
-102
-14
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-236
-102
-14
-224
-98
-18
-236
-102
-14
-235
-107
-16
-236
-108
-29
-239
-117
-44
-234
-125
-52
-231
-136
-72
-241
-153
-96
-162
-125
-96
-48
-58
-59
-95
-87
-59
-158
-125
-46
-171
-129
-45
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-171
-129
-45
-158
-125
-46
-95
-87
-59
-48
-58
-59
-124
-111
-99
-245
-179
-138
-247
-165
-111
-241
-145
-86
-241
-132
-59
-238
-123
-45
-238
-116
-34
-236
-108
-29
-224
-98
-18
-229
-102
-7
-230
-97
-5
-235
-94
-9
-235
-94
-9
-230
-97
-5
-230
-97
-5
-230
-97
-5
-235
-94
-9
-230
-97
-5
-229
-102
-7
-236
-102
-14
-236
-102
-14
-236
-102
-14
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-236
-102
-14
-236
-102
-14
-236
-102
-14
-235
-94
-9
-230
-97
-5
-235
-94
-9
-235
-94
-9
-235
-94
-9
-235
-94
-9
-235
-94
-9
-236
-102
-14
-236
-102
-14
-236
-102
-14
-224
-98
-18
-224
-98
-18
-236
-102
-14
-236
-102
-14
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-224
-98
-18
-236
-102
-14
-229
-102
-7
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-231
-91
-2
-231
-91
-2
-231
-91
-2
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-229
-102
-7
-236
-102
-14
-224
-98
-18
-236
-102
-14
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-236
-102
-14
-224
-98
-18
-236
-102
-14
-229
-102
-7
-230
-97
-5
-235
-94
-9
-230
-97
-5
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-230
-97
-5
-230
-97
-5
-235
-94
-9
-235
-94
-9
-229
-102
-7
-236
-102
-14
-236
-102
-14
-236
-102
-14
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-236
-102
-14
-235
-107
-16
-236
-102
-14
-224
-98
-18
-224
-98
-18
-236
-102
-14
-224
-98
-18
-224
-98
-18
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-229
-102
-7
-236
-102
-14
-235
-94
-9
-230
-97
-5
-235
-94
-9
-235
-94
-9
-230
-97
-5
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-235
-94
-9
-230
-97
-5
-230
-97
-5
-229
-102
-7
-236
-102
-14
-224
-98
-18
-236
-102
-14
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-236
-102
-14
-236
-102
-14
-236
-102
-14
-224
-98
-18
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-224
-98
-18
-236
-102
-14
-236
-102
-14
-236
-102
-14
-235
-94
-9
-235
-94
-9
-235
-94
-9
-235
-94
-9
-235
-94
-9
-236
-102
-14
-236
-102
-14
-224
-98
-18
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-236
-102
-14
-236
-102
-14
-236
-102
-14
-229
-102
-7
-230
-97
-5
-235
-94
-9
-235
-94
-9
-235
-94
-9
-235
-94
-9
-235
-94
-9
-230
-97
-5
-235
-94
-9
-236
-102
-14
-236
-102
-14
-236
-102
-14
-229
-102
-7
-230
-97
-5
-229
-102
-7
-224
-98
-18
-236
-108
-29
-238
-116
-34
-238
-123
-53
-243
-141
-78
-241
-153
-96
-99
-90
-79
-56
-64
-60
-155
-100
-63
-234
-126
-45
-234
-126
-45
-227
-126
-50
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-227
-126
-50
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-227
-126
-50
-234
-126
-45
-194
-112
-58
-81
-73
-62
-48
-58
-59
-178
-146
-122
-249
-174
-124
-241
-153
-96
-231
-136
-72
-234
-125
-52
-238
-116
-34
-235
-107
-16
-229
-102
-7
-235
-94
-9
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-229
-102
-7
-236
-102
-14
-235
-113
-30
-239
-117
-44
-230
-128
-60
-236
-147
-85
-238
-159
-107
-139
-115
-96
-48
-58
-59
-69
-69
-61
-111
-94
-57
-145
-114
-49
-158
-125
-46
-168
-127
-42
-171
-129
-45
-168
-127
-42
-168
-127
-42
-168
-127
-42
-168
-127
-42
-171
-129
-45
-168
-127
-42
-152
-119
-47
-117
-98
-55
-69
-69
-61
-48
-58
-59
-144
-125
-110
-240
-181
-138
-247
-165
-111
-236
-147
-85
-242
-133
-67
-238
-123
-45
-235
-113
-30
-235
-107
-16
-236
-102
-14
-230
-97
-5
-230
-97
-5
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-229
-102
-7
-235
-107
-16
-235
-113
-30
-238
-123
-45
-242
-133
-67
-241
-153
-96
-214
-151
-109
-99
-90
-79
-48
-58
-59
-95
-78
-64
-155
-100
-63
-209
-117
-53
-227
-126
-50
-234
-125
-52
-234
-125
-52
-234
-125
-52
-234
-125
-52
-234
-125
-52
-234
-126
-45
-234
-126
-45
-227
-126
-50
-194
-112
-58
-125
-90
-64
-56
-64
-60
-58
-69
-70
-178
-146
-122
-250
-176
-132
-238
-159
-107
-241
-145
-79
-234
-125
-52
-239
-117
-44
-236
-108
-29
-224
-98
-18
-230
-97
-5
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-226
-93
-0
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-226
-93
-0
-226
-93
-0
-226
-93
-0
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-226
-93
-0
-226
-93
-0
-231
-91
-2
-226
-93
-0
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-231
-91
-2
-230
-97
-5
-229
-102
-7
-223
-103
-18
-226
-110
-35
-234
-125
-52
-231
-136
-72
-241
-153
-96
-245
-169
-119
-178
-146
-122
-101
-100
-92
-48
-58
-59
-56
-64
-60
-69
-69
-61
-95
-87
-59
-111
-94
-57
-123
-102
-54
-129
-106
-52
-129
-106
-52
-123
-102
-54
-105
-93
-60
-88
-82
-59
-62
-63
-61
-48
-58
-59
-91
-92
-89
-186
-157
-134
-245
-179
-138
-238
-159
-107
-236
-147
-85
-230
-128
-60
-234
-125
-52
-226
-110
-35
-223
-103
-18
-224
-98
-18
-230
-97
-5
-226
-93
-0
-226
-93
-0
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-226
-93
-0
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-226
-93
-0
-226
-93
-0
-226
-93
-0
-226
-93
-0
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-226
-93
-0
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-226
-93
-0
-226
-93
-0
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-226
-93
-0
-226
-93
-0
-226
-93
-0
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-230
-97
-5
-224
-98
-18
-236
-108
-29
-239
-117
-44
-230
-123
-57
-243
-141
-78
-238
-159
-107
-234
-168
-124
-158
-130
-108
-76
-78
-76
-41
-58
-57
-62
-63
-61
-95
-78
-64
-125
-90
-64
-146
-97
-64
-163
-104
-61
-173
-106
-60
-163
-104
-61
-155
-100
-63
-125
-90
-64
-95
-78
-64
-56
-64
-60
-43
-57
-62
-124
-111
-99
-209
-171
-139
-234
-168
-124
-238
-159
-107
-241
-145
-79
-230
-128
-60
-239
-117
-44
-236
-108
-29
-236
-102
-14
-229
-102
-7
-230
-97
-5
-226
-93
-0
-226
-93
-0
-226
-93
-0
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-226
-93
-0
-226
-93
-0
-226
-93
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-230
-97
-5
-230
-97
-5
-224
-98
-18
-236
-108
-29
-226
-110
-35
-230
-123
-57
-231
-136
-72
-241
-153
-96
-238
-159
-107
-240
-181
-138
-203
-161
-131
-150
-125
-114
-101
-100
-92
-76
-78
-76
-55
-66
-67
-48
-58
-59
-48
-58
-59
-48
-58
-59
-48
-58
-59
-58
-69
-70
-84
-85
-82
-124
-111
-99
-178
-146
-122
-240
-181
-138
-234
-168
-124
-238
-159
-107
-236
-147
-85
-230
-128
-60
-234
-125
-52
-226
-110
-35
-223
-103
-18
-224
-98
-18
-230
-97
-5
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-230
-97
-5
-224
-98
-18
-223
-103
-18
-226
-110
-35
-225
-124
-48
-230
-128
-60
-236
-147
-85
-241
-153
-96
-234
-168
-124
-230
-173
-136
-186
-157
-134
-133
-120
-107
-91
-92
-89
-63
-74
-74
-51
-62
-63
-48
-58
-59
-48
-58
-59
-48
-58
-59
-51
-62
-63
-63
-74
-74
-91
-92
-89
-144
-125
-110
-203
-161
-131
-240
-181
-138
-245
-169
-119
-241
-153
-96
-241
-145
-79
-230
-128
-60
-225
-124
-48
-226
-110
-35
-223
-103
-18
-224
-98
-18
-230
-97
-5
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-230
-97
-5
-224
-98
-18
-223
-103
-18
-226
-110
-35
-239
-117
-44
-230
-123
-57
-231
-136
-72
-236
-147
-85
-238
-159
-107
-245
-169
-119
-234
-168
-124
-240
-181
-138
-239
-182
-144
-236
-186
-153
-250
-197
-158
-250
-197
-158
-250
-197
-158
-251
-192
-154
-236
-186
-153
-239
-182
-144
-245
-179
-138
-234
-168
-124
-238
-159
-107
-241
-153
-96
-231
-136
-72
-230
-128
-60
-225
-124
-48
-226
-110
-35
-223
-103
-18
-224
-98
-18
-230
-97
-5
-230
-97
-5
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-230
-97
-5
-224
-98
-18
-223
-103
-18
-226
-110
-35
-225
-124
-48
-230
-128
-60
-231
-136
-72
-241
-153
-96
-238
-159
-107
-234
-168
-124
-240
-181
-138
-239
-182
-144
-236
-186
-153
-251
-192
-154
-250
-197
-158
-250
-197
-158
-250
-197
-158
-236
-186
-153
-239
-182
-144
-240
-181
-138
-234
-168
-124
-245
-169
-119
-238
-159
-107
-236
-147
-85
-231
-136
-72
-230
-123
-57
-239
-117
-44
-226
-110
-35
-223
-103
-18
-224
-98
-18
-230
-97
-5
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-220
-93
-11
-220
-93
-11
-224
-98
-18
-223
-103
-18
-226
-110
-35
-226
-110
-35
-225
-124
-48
-230
-128
-60
-231
-136
-72
-236
-147
-85
-241
-153
-96
-238
-159
-107
-238
-159
-107
-234
-168
-124
-234
-168
-124
-234
-168
-124
-234
-168
-124
-234
-168
-124
-238
-159
-107
-238
-159
-107
-241
-153
-96
-236
-147
-85
-231
-136
-72
-230
-128
-60
-230
-123
-57
-226
-110
-35
-226
-110
-35
-223
-103
-18
-224
-98
-18
-220
-93
-11
-220
-93
-11
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-220
-93
-11
-220
-93
-11
-224
-98
-18
-223
-103
-18
-226
-110
-35
-225
-124
-48
-230
-123
-57
-230
-128
-60
-231
-136
-72
-236
-147
-85
-241
-153
-96
-238
-159
-107
-238
-159
-107
-234
-168
-124
-234
-168
-124
-234
-168
-124
-234
-168
-124
-234
-168
-124
-238
-159
-107
-238
-159
-107
-241
-153
-96
-236
-147
-85
-231
-136
-72
-230
-128
-60
-225
-124
-48
-226
-110
-35
-226
-110
-35
-223
-103
-18
-224
-98
-18
-220
-93
-11
-220
-93
-11
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-220
-93
-11
-220
-93
-11
-220
-93
-11
-224
-98
-18
-223
-103
-18
-226
-110
-35
-226
-110
-35
-225
-124
-48
-230
-128
-60
-230
-128
-60
-231
-136
-72
-231
-136
-72
-236
-147
-85
-236
-147
-85
-236
-147
-85
-236
-147
-85
-236
-147
-85
-231
-136
-72
-231
-136
-72
-231
-136
-72
-230
-128
-60
-227
-126
-50
-225
-124
-48
-226
-110
-35
-223
-103
-18
-223
-103
-18
-224
-98
-18
-220
-93
-11
-220
-93
-11
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-218
-87
-5
-220
-93
-11
-220
-93
-11
-224
-98
-18
-223
-103
-18
-226
-110
-35
-226
-110
-35
-225
-124
-48
-230
-123
-57
-230
-128
-60
-231
-136
-72
-231
-136
-72
-231
-136
-72
-236
-147
-85
-236
-147
-85
-236
-147
-85
-236
-147
-85
-236
-147
-85
-231
-136
-72
-231
-136
-72
-230
-128
-60
-230
-123
-57
-225
-124
-48
-226
-110
-35
-226
-110
-35
-223
-103
-18
-224
-98
-18
-220
-93
-11
-220
-93
-11
-220
-93
-11
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-221
-89
-0
-217
-86
-3
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-221
-89
-0
-217
-86
-3
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-221
-89
-0
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-218
-87
-5
-218
-87
-5
-220
-93
-11
-220
-93
-11
-224
-98
-18
-223
-103
-18
-223
-103
-18
-226
-110
-35
-226
-110
-35
-225
-124
-48
-225
-124
-48
-225
-124
-48
-224
-123
-55
-224
-123
-55
-224
-123
-55
-230
-123
-57
-224
-123
-55
-224
-123
-55
-225
-124
-48
-225
-124
-48
-226
-110
-35
-226
-110
-35
-223
-103
-18
-223
-103
-18
-224
-98
-18
-220
-93
-11
-220
-93
-11
-218
-87
-5
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-221
-89
-0
-221
-89
-0
-217
-86
-3
-221
-89
-0
-221
-89
-0
-217
-86
-3
-221
-89
-0
-221
-89
-0
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-221
-89
-0
-221
-89
-0
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-217
-86
-3
-218
-87
-5
-218
-87
-5
-220
-93
-11
-220
-93
-11
-220
-93
-11
-224
-98
-18
-223
-103
-18
-226
-110
-35
-226
-110
-35
-226
-110
-35
-225
-124
-48
-225
-124
-48
-224
-123
-55
-230
-123
-57
-230
-123
-57
-230
-123
-57
-230
-123
-57
-230
-123
-57
-225
-124
-48
-225
-124
-48
-226
-110
-35
-226
-110
-35
-226
-110
-35
-223
-103
-18
-224
-98
-18
-224
-98
-18
-220
-93
-11
-220
-93
-11
-218
-87
-5
-218
-87
-5
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-218
-87
-5
-218
-87
-5
-218
-87
-5
-220
-93
-11
-220
-93
-11
-224
-98
-18
-224
-98
-18
-224
-98
-18
-223
-103
-18
-226
-110
-35
-226
-110
-35
-226
-110
-35
-226
-110
-35
-226
-110
-35
-226
-110
-35
-226
-110
-35
-226
-110
-35
-226
-110
-35
-223
-103
-18
-223
-103
-18
-224
-98
-18
-224
-98
-18
-220
-93
-11
-220
-93
-11
-218
-87
-5
-218
-87
-5
-218
-87
-5
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-218
-87
-5
-218
-87
-5
-218
-87
-5
-218
-87
-5
-220
-93
-11
-220
-93
-11
-224
-98
-18
-224
-98
-18
-223
-103
-18
-223
-103
-18
-226
-110
-35
-226
-110
-35
-226
-110
-35
-226
-110
-35
-226
-110
-35
-226
-110
-35
-226
-110
-35
-226
-110
-35
-226
-110
-35
-223
-103
-18
-224
-98
-18
-224
-98
-18
-220
-93
-11
-220
-93
-11
-220
-93
-11
-218
-87
-5
-218
-87
-5
-218
-87
-5
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-218
-87
-5
-218
-87
-5
-218
-87
-5
-218
-87
-5
-218
-87
-5
-220
-93
-11
-220
-93
-11
-220
-93
-11
-220
-93
-11
-224
-98
-18
-224
-98
-18
-224
-98
-18
-224
-98
-18
-224
-98
-18
-224
-98
-18
-220
-93
-11
-224
-98
-18
-220
-93
-11
-220
-93
-11
-220
-93
-11
-218
-87
-5
-218
-87
-5
-218
-87
-5
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-218
-87
-5
-217
-86
-3
-218
-87
-5
-218
-87
-5
-218
-87
-5
-220
-93
-11
-220
-93
-11
-220
-93
-11
-220
-93
-11
-220
-93
-11
-224
-98
-18
-224
-98
-18
-224
-98
-18
-224
-98
-18
-224
-98
-18
-220
-93
-11
-220
-93
-11
-220
-93
-11
-220
-93
-11
-220
-93
-11
-218
-87
-5
-218
-87
-5
-218
-87
-5
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-218
-87
-5
-218
-87
-5
-218
-87
-5
-218
-87
-5
-218
-87
-5
-218
-87
-5
-218
-87
-5
-218
-87
-5
-218
-87
-5
-218
-87
-5
-218
-87
-5
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-218
-87
-5
-218
-87
-5
-218
-87
-5
-218
-87
-5
-218
-87
-5
-218
-87
-5
-218
-87
-5
-218
-87
-5
-218
-87
-5
-218
-87
-5
-218
-87
-5
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-217
-86
-3
-217
-86
-3
-217
-86
-3
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-217
-86
-3
-217
-86
-3
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-217
-86
-3
-217
-86
-3
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-217
-86
-3
-217
-86
-3
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-217
-86
-3
-217
-86
-3
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-217
-86
-3
-217
-86
-3
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-217
-86
-3
-217
-86
-3
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-217
-86
-3
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-217
-86
-3
-217
-86
-3
-214
-84
-0
-214
-84
-0
-214
-84
-0
-217
-86
-3
-217
-86
-3
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-217
-86
-3
-217
-86
-3
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
diff --git a/recipes-kernel/linux/linux_3.3.7.bb b/recipes-kernel/linux/linux_3.3.7.bb
deleted file mode 100644
index f6d2172..0000000
--- a/recipes-kernel/linux/linux_3.3.7.bb
+++ /dev/null
@@ -1,41 +0,0 @@
-DESCRIPTION = "Linux 3.3 stable kernel release"
-SECTION = "kernel"
-
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7"
-
-DEFAULT_PREFERENCE = "-1"
-
-COMPATIBLE_MACHINE = "beagleboard"
-
-inherit kernel
-require setup-defconfig.inc
-
-# The main PR is now using MACHINE_KERNEL_PR, for beagleboard see
-# conf/machine/include/omap3.inc
-MACHINE_KERNEL_PR_append = "b+gitr${SRCREV}"
-PR = "${MACHINE_KERNEL_PR}"
-
-BRANCH = "linux-3.3.y"
-SRCREV = "v3.3.7"
-
-SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git;protocol=git;branch=${BRANCH} \
- file://defconfig"
-
-# These are patches that are making their way upstream or are pulled back
-# from upstream trees to make the stable kernel work without regressions.
-# These patches should clear out when moving to the next stable kernel
-# minor version. i.e. 3.y.
-SRC_URI_append_beagleboard = " file://0001-ARM-OMAP-Cleanup-Beagleboard-DVI-reset-gpio.patch \
- file://0001-ARM-OMAP2-UART-Fix-incorrect-population-of-default-u.patch \
-"
-
-S = "${WORKDIR}/git"
-
-EXTRA_OEMAKE = "${PARALLEL_MAKE}"
-
-# Create the uImage symlink in /boot since by default beagleboard looks into
-# the /boot directory for the uImage file instead of the first partition.
-do_install_append_beagleboard() {
- cd ${D}/${KERNEL_IMAGEDEST} && ln -sf uImage-${KERNEL_VERSION} uImage
-}
--
2.2.0
More information about the meta-ti
mailing list